Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 76 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 18552245 | 419 days ago | IN | 0 ETH | 0.00140397 | ||||
Approve | 18531127 | 422 days ago | IN | 0 ETH | 0.00135817 | ||||
Approve | 18531119 | 422 days ago | IN | 0 ETH | 0.00156355 | ||||
Approve | 18527449 | 422 days ago | IN | 0 ETH | 0.00169759 | ||||
Approve | 18527422 | 422 days ago | IN | 0 ETH | 0.0016867 | ||||
Approve | 18527420 | 422 days ago | IN | 0 ETH | 0.00169227 | ||||
Approve | 18527404 | 422 days ago | IN | 0 ETH | 0.00167221 | ||||
Approve | 18527341 | 422 days ago | IN | 0 ETH | 0.00117952 | ||||
Approve | 18527329 | 422 days ago | IN | 0 ETH | 0.00121464 | ||||
Approve | 18527318 | 422 days ago | IN | 0 ETH | 0.00070379 | ||||
Approve | 18527316 | 422 days ago | IN | 0 ETH | 0.00126596 | ||||
Approve | 18527255 | 422 days ago | IN | 0 ETH | 0.00142813 | ||||
Approve | 18527239 | 422 days ago | IN | 0 ETH | 0.0012806 | ||||
Approve | 18527205 | 422 days ago | IN | 0 ETH | 0.00138621 | ||||
Approve | 18526808 | 422 days ago | IN | 0 ETH | 0.00118818 | ||||
Approve | 18526808 | 422 days ago | IN | 0 ETH | 0.00119463 | ||||
Approve | 18526610 | 422 days ago | IN | 0 ETH | 0.00113867 | ||||
Approve | 18526409 | 422 days ago | IN | 0 ETH | 0.00108916 | ||||
Approve | 18526013 | 422 days ago | IN | 0 ETH | 0.00123068 | ||||
Approve | 18526009 | 422 days ago | IN | 0 ETH | 0.00123768 | ||||
Approve | 18526003 | 422 days ago | IN | 0 ETH | 0.00128719 | ||||
Approve | 18526001 | 422 days ago | IN | 0 ETH | 0.00125106 | ||||
Approve | 18525975 | 422 days ago | IN | 0 ETH | 0.00125222 | ||||
Approve | 18525955 | 422 days ago | IN | 0 ETH | 0.00129827 | ||||
Approve | 18525952 | 422 days ago | IN | 0 ETH | 0.00124609 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
PUNKXToken
Compiler Version
v0.8.16+commit.07a7930e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-11-05 */ // SPDX-License-Identifier: Unlicensed pragma solidity ^0.8.16; abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return payable(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; } } interface IERC20 { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); } library MerkleProof { /** *@dev The multiproof provided is not valid. */ error MerkleProofInvalidMultiproof(); /** * @dev Returns true if a `leaf` can be proved to be a part of a Merkle tree * defined by `root`. For this, a `proof` must be provided, containing * sibling hashes on the branch from the leaf to the root of the tree. Each * pair of leaves and each pair of pre-images are assumed to be sorted. */ function verify(bytes32[] memory proof, bytes32 root, bytes32 leaf) internal pure returns (bool) { return processProof(proof, leaf) == root; } /** * @dev Calldata version of {verify} */ function verifyCalldata(bytes32[] calldata proof, bytes32 root, bytes32 leaf) internal pure returns (bool) { return processProofCalldata(proof, leaf) == root; } /** * @dev Returns the rebuilt hash obtained by traversing a Merkle tree up * from `leaf` using `proof`. A `proof` is valid if and only if the rebuilt * hash matches the root of the tree. When processing the proof, the pairs * of leafs & pre-images are assumed to be sorted. */ function processProof(bytes32[] memory proof, bytes32 leaf) internal pure returns (bytes32) { bytes32 computedHash = leaf; for (uint256 i = 0; i < proof.length; i++) { computedHash = _hashPair(computedHash, proof[i]); } return computedHash; } /** * @dev Calldata version of {processProof} */ function processProofCalldata(bytes32[] calldata proof, bytes32 leaf) internal pure returns (bytes32) { bytes32 computedHash = leaf; for (uint256 i = 0; i < proof.length; i++) { computedHash = _hashPair(computedHash, proof[i]); } return computedHash; } /** * @dev Returns true if the `leaves` can be simultaneously proven to be a part of a Merkle tree defined by * `root`, according to `proof` and `proofFlags` as described in {processMultiProof}. * * CAUTION: Not all Merkle trees admit multiproofs. See {processMultiProof} for details. */ function multiProofVerify( bytes32[] memory proof, bool[] memory proofFlags, bytes32 root, bytes32[] memory leaves ) internal pure returns (bool) { return processMultiProof(proof, proofFlags, leaves) == root; } /** * @dev Calldata version of {multiProofVerify} * * CAUTION: Not all Merkle trees admit multiproofs. See {processMultiProof} for details. */ function multiProofVerifyCalldata( bytes32[] calldata proof, bool[] calldata proofFlags, bytes32 root, bytes32[] memory leaves ) internal pure returns (bool) { return processMultiProofCalldata(proof, proofFlags, leaves) == root; } /** * @dev Returns the root of a tree reconstructed from `leaves` and sibling nodes in `proof`. The reconstruction * proceeds by incrementally reconstructing all inner nodes by combining a leaf/inner node with either another * leaf/inner node or a proof sibling node, depending on whether each `proofFlags` item is true or false * respectively. * * CAUTION: Not all Merkle trees admit multiproofs. To use multiproofs, it is sufficient to ensure that: 1) the tree * is complete (but not necessarily perfect), 2) the leaves to be proven are in the opposite order they are in the * tree (i.e., as seen from right to left starting at the deepest layer and continuing at the next layer). */ function processMultiProof( bytes32[] memory proof, bool[] memory proofFlags, bytes32[] memory leaves ) internal pure returns (bytes32 merkleRoot) { // This function rebuilds the root hash by traversing the tree up from the leaves. The root is rebuilt by // consuming and producing values on a queue. The queue starts with the `leaves` array, then goes onto the // `hashes` array. At the end of the process, the last hash in the `hashes` array should contain the root of // the Merkle tree. uint256 leavesLen = leaves.length; uint256 proofLen = proof.length; uint256 totalHashes = proofFlags.length; // Check proof validity. if (leavesLen + proofLen != totalHashes + 1) { revert MerkleProofInvalidMultiproof(); } // The xxxPos values are "pointers" to the next value to consume in each array. All accesses are done using // `xxx[xxxPos++]`, which return the current value and increment the pointer, thus mimicking a queue's "pop". bytes32[] memory hashes = new bytes32[](totalHashes); uint256 leafPos = 0; uint256 hashPos = 0; uint256 proofPos = 0; // At each step, we compute the next hash using two values: // - a value from the "main queue". If not all leaves have been consumed, we get the next leaf, otherwise we // get the next hash. // - depending on the flag, either another value from the "main queue" (merging branches) or an element from the // `proof` array. for (uint256 i = 0; i < totalHashes; i++) { bytes32 a = leafPos < leavesLen ? leaves[leafPos++] : hashes[hashPos++]; bytes32 b = proofFlags[i] ? (leafPos < leavesLen ? leaves[leafPos++] : hashes[hashPos++]) : proof[proofPos++]; hashes[i] = _hashPair(a, b); } if (totalHashes > 0) { if (proofPos != proofLen) { revert MerkleProofInvalidMultiproof(); } unchecked { return hashes[totalHashes - 1]; } } else if (leavesLen > 0) { return leaves[0]; } else { return proof[0]; } } /** * @dev Calldata version of {processMultiProof}. * CAUTION: Not all Merkle trees admit multiproofs. See {processMultiProof} for details. */ function processMultiProofCalldata( bytes32[] calldata proof, bool[] calldata proofFlags, bytes32[] memory leaves ) internal pure returns (bytes32 merkleRoot) { // This function rebuilds the root hash by traversing the tree up from the leaves. The root is rebuilt by // consuming and producing values on a queue. The queue starts with the `leaves` array, then goes onto the // `hashes` array. At the end of the process, the last hash in the `hashes` array should contain the root of // the Merkle tree. uint256 leavesLen = leaves.length; uint256 proofLen = proof.length; uint256 totalHashes = proofFlags.length; // Check proof validity. if (leavesLen + proofLen != totalHashes + 1) { revert MerkleProofInvalidMultiproof(); } // The xxxPos values are "pointers" to the next value to consume in each array. All accesses are done using // `xxx[xxxPos++]`, which return the current value and increment the pointer, thus mimicking a queue's "pop". bytes32[] memory hashes = new bytes32[](totalHashes); uint256 leafPos = 0; uint256 hashPos = 0; uint256 proofPos = 0; // At each step, we compute the next hash using two values: // - a value from the "main queue". If not all leaves have been consumed, we get the next leaf, otherwise we // get the next hash. // - depending on the flag, either another value from the "main queue" (merging branches) or an element from the // `proof` array. for (uint256 i = 0; i < totalHashes; i++) { bytes32 a = leafPos < leavesLen ? leaves[leafPos++] : hashes[hashPos++]; bytes32 b = proofFlags[i] ? (leafPos < leavesLen ? leaves[leafPos++] : hashes[hashPos++]) : proof[proofPos++]; hashes[i] = _hashPair(a, b); } if (totalHashes > 0) { if (proofPos != proofLen) { revert MerkleProofInvalidMultiproof(); } unchecked { return hashes[totalHashes - 1]; } } else if (leavesLen > 0) { return leaves[0]; } else { return proof[0]; } } /** * @dev Sorts the pair (a, b) and hashes the result. */ function _hashPair(bytes32 a, bytes32 b) private pure returns (bytes32) { return a < b ? _efficientHash(a, b) : _efficientHash(b, a); } /** * @dev Implementation of keccak256(abi.encode(a, b)) that doesn't allocate or expand memory. */ function _efficientHash(bytes32 a, bytes32 b) private pure returns (bytes32 value) { /// @solidity memory-safe-assembly assembly { mstore(0x00, a) mstore(0x20, b) value := keccak256(0x00, 0x40) } } } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by 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; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } library Address { 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); } 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"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } 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"); } 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"); (bool success, bytes memory returndata) = target.call{ value : weiValue}(data); if (success) { return returndata; } else { if (returndata.length > 0) { assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } contract Ownable is Context { address public _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function waiveOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } interface IUniswapV2Factory { function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } interface ISwapPair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } contract PUNKXToken is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; bytes16 private constant HEX_DIGITS = "0123456789abcdef"; uint8 private constant ADDRESS_LENGTH = 20; string internal constant _TABLE = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; string private _name; string private _symbol; uint8 private _decimals; address payable private marketingWalletAddress; address payable private teamWalletAddress; address private deadAddress = 0x000000000000000000000000000000000000dEaD; uint256 private preLPUnlockTime = 1695661511; mapping (address => uint256) _balances; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private isMarketPair; mapping(address => UserInfo) private _userInfo; struct UserInfo { uint256 lpAmount; bool preLP; uint256 unlockTime; } uint256 private _totalTaxIfBuying = 0; uint256 private _totalTaxIfSelling = 0; uint256 private _totalSupply; uint256 private _minimumTokensBeforeSwap = 0; IUniswapV2Router02 private uniswap; address private uniswapPair; bool inSwapAndLiquify; bool private swapAndLiquifyEnabled = false; bool private swapAndLiquifyByLimitOnly = false; event SwapAndLiquifyEnabledUpdated(bool enabled); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); event SwapETHForTokens( uint256 amountIn, address[] path ); event SwapTokensForETH( uint256 amountIn, address[] path ); modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor ( string memory coinName, string memory coinSymbol, uint8 coinDecimals, uint256 supply ) payable { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); _name = coinName; _symbol = coinSymbol; _decimals = coinDecimals; _owner = 0xfa75deb2e93F0240DE0Dbd36Db2A2461a7DA80A6; _totalSupply = supply * 10 ** _decimals; marketingWalletAddress = payable(0xfa75deb2e93F0240DE0Dbd36Db2A2461a7DA80A6); teamWalletAddress = payable(0xfa75deb2e93F0240DE0Dbd36Db2A2461a7DA80A6); uniswap = _uniswapV2Router; _allowances[address(this)][address(uniswap)] = _totalSupply; _balances[_owner] = _totalSupply; emit Transfer(address(0), _owner, _totalSupply); } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } 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; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function changeRouter(address newRouterAddress) external onlyOwner returns(address newPairAddress) { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(uniswap); newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory()).getPair(address(this), _uniswapV2Router.WETH()); _uniswapV2Router = IUniswapV2Router02(newRouterAddress); uniswap = _uniswapV2Router; swapAndLiquifyEnabled = true; isMarketPair[address(uniswapPair)] = true; } function transferToAddressETH(address payable recipient, uint256 amount) private { recipient.transfer(amount); } //to recieve ETH from uniswapV2Router when swaping receive() external payable {} function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function _transfer(address sender, address recipient, uint256 amount) private returns (bool) { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); if(inSwapAndLiquify) { return _basicTransfer(sender, recipient, amount); } else { uint256 contractTokenBalance = balanceOf(address(this)); bool overMinimumTokenBalance = contractTokenBalance >= _minimumTokensBeforeSwap; if (overMinimumTokenBalance && !inSwapAndLiquify && !isMarketPair[sender] && swapAndLiquifyEnabled) { if(swapAndLiquifyByLimitOnly) contractTokenBalance = _minimumTokensBeforeSwap; addLiquidity(sender,contractTokenBalance); } _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); uint256 finalAmount = takeFee(sender, recipient, amount); _balances[recipient] = _balances[recipient].add(finalAmount); emit Transfer(sender, recipient, finalAmount); return true; } } function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) { _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); return true; } function swapAndLiquify(uint256 tAmount) private lockTheSwap { // swap token -> eth swapTokensForEth(tAmount); uint256 amountReceived = address(this).balance; // team eth uint256 amountUSDTTeam = amountReceived.mul(50).div(100); // marketing eth uint256 amountUSDTMarketing = amountReceived.sub(amountUSDTTeam); if(amountUSDTMarketing > 0) transferToAddressETH(marketingWalletAddress, amountUSDTMarketing); if(amountUSDTTeam > 0) transferToAddressETH(teamWalletAddress, amountUSDTTeam); } function addLiquidity(address sender,uint256 tokenAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswap), tokenAmount); uint256 ethAmount = address(this).balance; // add the liquidity uniswap.addLiquidityETH{value: ethAmount}( sender, tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable address(this), block.timestamp ); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswap.WETH(); _approve(address(this), address(uniswap), tokenAmount); // make the swap uniswap.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), // The contract block.timestamp ); emit SwapTokensForETH(tokenAmount, path); } function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) { uint256 feeAmount = 0; if(isMarketPair[sender]) { feeAmount = amount.mul(_totalTaxIfBuying).div(100); } else if(isMarketPair[recipient]) { feeAmount = amount.mul(_totalTaxIfSelling).div(100); } if(feeAmount > 0) { _balances[address(this)] = _balances[address(this)].add(feeAmount); emit Transfer(sender, address(this), feeAmount); } return amount.sub(feeAmount); } /** * @dev Converts a `bytes` to its Bytes64 `string` representation. */ function encode(bytes memory data) internal pure returns (string memory) { /** * Inspired by Brecht Devos (Brechtpd) implementation - MIT licence * https://github.com/Brechtpd/base64/blob/e78d9fd951e7b0977ddca77d92dc85183770daf4/base64.sol */ if (data.length == 0) return ""; // Loads the table into memory string memory table = _TABLE; // Encoding takes 3 bytes chunks of binary data from `bytes` data parameter // and split into 4 numbers of 6 bits. // The final Base64 length should be `bytes` data length multiplied by 4/3 rounded up // - `data.length + 2` -> Round up // - `/ 3` -> Number of 3-bytes chunks // - `4 *` -> 4 characters for each chunk string memory result = new string(4 * ((data.length + 2) / 3)); /// @solidity memory-safe-assembly assembly { // Prepare the lookup table (skip the first "length" byte) let tablePtr := add(table, 1) // Prepare result pointer, jump over length let resultPtr := add(result, 32) // Run over the input, 3 bytes at a time for { let dataPtr := data let endPtr := add(data, mload(data)) } lt(dataPtr, endPtr) { } { // Advance 3 bytes dataPtr := add(dataPtr, 3) let input := mload(dataPtr) // To write each character, shift the 3 bytes (18 bits) chunk // 4 times in blocks of 6 bits for each character (18, 12, 6, 0) // and apply logical AND with 0x3F which is the number of // the previous character in the ASCII table prior to the Base64 Table // The result is then added to the table to get the character to write, // and finally write it in the result pointer but with a left shift // of 256 (1 byte) - 8 (1 ASCII char) = 248 bits mstore8(resultPtr, mload(add(tablePtr, and(shr(18, input), 0x3F)))) resultPtr := add(resultPtr, 1) // Advance mstore8(resultPtr, mload(add(tablePtr, and(shr(12, input), 0x3F)))) resultPtr := add(resultPtr, 1) // Advance mstore8(resultPtr, mload(add(tablePtr, and(shr(6, input), 0x3F)))) resultPtr := add(resultPtr, 1) // Advance mstore8(resultPtr, mload(add(tablePtr, and(input, 0x3F)))) resultPtr := add(resultPtr, 1) // Advance } // When data `bytes` is not exactly 3 bytes long // it is padded with `=` characters at the end switch mod(mload(data), 3) case 1 { mstore8(sub(resultPtr, 1), 0x3d) mstore8(sub(resultPtr, 2), 0x3d) } case 2 { mstore8(sub(resultPtr, 1), 0x3d) } } return result; } } library ECDSA { enum RecoverError { NoError, InvalidSignature, InvalidSignatureLength, InvalidSignatureS } /** * @dev The signature derives the `address(0)`. */ error ECDSAInvalidSignature(); /** * @dev The signature has an invalid length. */ error ECDSAInvalidSignatureLength(uint256 length); /** * @dev The signature has an S value that is in the upper half order. */ error ECDSAInvalidSignatureS(bytes32 s); /** * @dev Returns the address that signed a hashed message (`hash`) with `signature` or an error. This will not * return address(0) without also returning an error description. Errors are documented using an enum (error type) * and a bytes32 providing additional information about the error. * * If no error is returned, then the address can be used for verification purposes. * * * IMPORTANT: `hash` _must_ be the result of a hash operation for the * verification to be secure: it is possible to craft signatures that * recover to arbitrary addresses for non-hashed data. A safe way to ensure * this is by receiving a hash of the original message (which may otherwise * be too long), and then calling {MessageHashUtils-toEthSignedMessageHash} on it. * * Documentation for signature generation: * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js] * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers] */ function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError, bytes32) { if (signature.length == 65) { bytes32 r; bytes32 s; uint8 v; // ecrecover takes the signature parameters, and the only way to get them // currently is to use assembly. /// @solidity memory-safe-assembly assembly { r := mload(add(signature, 0x20)) s := mload(add(signature, 0x40)) v := byte(0, mload(add(signature, 0x60))) } return tryRecover(hash, v, r, s); } else { return (address(0), RecoverError.InvalidSignatureLength, bytes32(signature.length)); } } /** * @dev Returns the address that signed a hashed message (`hash`) with * `signature`. This address can then be used for verification purposes. * * The `ecrecover` EVM precompile allows for malleable (non-unique) signatures: * this function rejects them by requiring the `s` value to be in the lower * half order, and the `v` value to be either 27 or 28. * * IMPORTANT: `hash` _must_ be the result of a hash operation for the * verification to be secure: it is possible to craft signatures that * recover to arbitrary addresses for non-hashed data. A safe way to ensure * this is by receiving a hash of the original message (which may otherwise * be too long), and then calling {MessageHashUtils-toEthSignedMessageHash} on it. */ function recover(bytes32 hash, bytes memory signature) internal pure returns (address) { (address recovered, RecoverError error, bytes32 errorArg) = tryRecover(hash, signature); _throwError(error, errorArg); return recovered; } /** * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately. * * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures] */ function tryRecover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address, RecoverError, bytes32) { unchecked { bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff); // We do not check for an overflow here since the shift operation results in 0 or 1. uint8 v = uint8((uint256(vs) >> 255) + 27); return tryRecover(hash, v, r, s); } } /** * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately. */ function recover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address) { (address recovered, RecoverError error, bytes32 errorArg) = tryRecover(hash, r, vs); _throwError(error, errorArg); return recovered; } /** * @dev Overload of {ECDSA-tryRecover} that receives the `v`, * `r` and `s` signature fields separately. */ function tryRecover( bytes32 hash, uint8 v, bytes32 r, bytes32 s ) internal pure returns (address, RecoverError, bytes32) { // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines // the valid range for s in (301): 0 < s < secp256k1n ÷ 2 + 1, and for v in (302): v ∈ {27, 28}. Most // signatures from current libraries generate a unique signature with an s-value in the lower half order. // // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept // these malleable signatures as well. if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) { return (address(0), RecoverError.InvalidSignatureS, s); } // If the signature is valid (and not malleable), return the signer address address signer = ecrecover(hash, v, r, s); if (signer == address(0)) { return (address(0), RecoverError.InvalidSignature, bytes32(0)); } return (signer, RecoverError.NoError, bytes32(0)); } /** * @dev Overload of {ECDSA-recover} that receives the `v`, * `r` and `s` signature fields separately. */ function recover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address) { (address recovered, RecoverError error, bytes32 errorArg) = tryRecover(hash, v, r, s); _throwError(error, errorArg); return recovered; } /** * @dev Optionally reverts with the corresponding custom error according to the `error` argument provided. */ function _throwError(RecoverError error, bytes32 errorArg) private pure { if (error == RecoverError.NoError) { return; // no error: do nothing } else if (error == RecoverError.InvalidSignature) { revert ECDSAInvalidSignature(); } else if (error == RecoverError.InvalidSignatureLength) { revert ECDSAInvalidSignatureLength(uint256(errorArg)); } else if (error == RecoverError.InvalidSignatureS) { revert ECDSAInvalidSignatureS(errorArg); } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"coinName","type":"string"},{"internalType":"string","name":"coinSymbol","type":"string"},{"internalType":"uint8","name":"coinDecimals","type":"uint8"},{"internalType":"uint256","name":"supply","type":"uint256"}],"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":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newRouterAddress","type":"address"}],"name":"changeRouter","outputs":[{"internalType":"address","name":"newPairAddress","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"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","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"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":[],"name":"waiveOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405261dead600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550636511bdc76006556000600b556000600c556000600e556000601060156101000a81548160ff0219169083151502179055506000601060166101000a81548160ff02191690831515021790555060405162003412380380620034128339818101604052810190620000b991906200062e565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90508460019081620000e391906200091f565b508360029081620000f591906200091f565b5082600360006101000a81548160ff021916908360ff16021790555073fa75deb2e93f0240de0dbd36db2a2461a7da80a66000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900460ff16600a62000183919062000b89565b8262000190919062000bda565b600d8190555073fa75deb2e93f0240de0dbd36db2a2461a7da80a6600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073fa75deb2e93f0240de0dbd36db2a2461a7da80a6600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600d54600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600d54600760008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600d546040516200040f919062000c4c565b60405180910390a3505050505062000c69565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200048b8262000440565b810181811067ffffffffffffffff82111715620004ad57620004ac62000451565b5b80604052505050565b6000620004c262000422565b9050620004d0828262000480565b919050565b600067ffffffffffffffff821115620004f357620004f262000451565b5b620004fe8262000440565b9050602081019050919050565b60005b838110156200052b5780820151818401526020810190506200050e565b60008484015250505050565b60006200054e6200054884620004d5565b620004b6565b9050828152602081018484840111156200056d576200056c6200043b565b5b6200057a8482856200050b565b509392505050565b600082601f8301126200059a576200059962000436565b5b8151620005ac84826020860162000537565b91505092915050565b600060ff82169050919050565b620005cd81620005b5565b8114620005d957600080fd5b50565b600081519050620005ed81620005c2565b92915050565b6000819050919050565b6200060881620005f3565b81146200061457600080fd5b50565b6000815190506200062881620005fd565b92915050565b600080600080608085870312156200064b576200064a6200042c565b5b600085015167ffffffffffffffff8111156200066c576200066b62000431565b5b6200067a8782880162000582565b945050602085015167ffffffffffffffff8111156200069e576200069d62000431565b5b620006ac8782880162000582565b9350506040620006bf87828801620005dc565b9250506060620006d28782880162000617565b91505092959194509250565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200073157607f821691505b602082108103620007475762000746620006e9565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620007b17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000772565b620007bd868362000772565b95508019841693508086168417925050509392505050565b6000819050919050565b600062000800620007fa620007f484620005f3565b620007d5565b620005f3565b9050919050565b6000819050919050565b6200081c83620007df565b620008346200082b8262000807565b8484546200077f565b825550505050565b600090565b6200084b6200083c565b6200085881848462000811565b505050565b5b8181101562000880576200087460008262000841565b6001810190506200085e565b5050565b601f821115620008cf5762000899816200074d565b620008a48462000762565b81016020851015620008b4578190505b620008cc620008c38562000762565b8301826200085d565b50505b505050565b600082821c905092915050565b6000620008f460001984600802620008d4565b1980831691505092915050565b60006200090f8383620008e1565b9150826002028217905092915050565b6200092a82620006de565b67ffffffffffffffff81111562000946576200094562000451565b5b62000952825462000718565b6200095f82828562000884565b600060209050601f83116001811462000997576000841562000982578287015190505b6200098e858262000901565b865550620009fe565b601f198416620009a7866200074d565b60005b82811015620009d157848901518255600182019150602085019450602081019050620009aa565b86831015620009f15784890151620009ed601f891682620008e1565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000a945780860481111562000a6c5762000a6b62000a06565b5b600185161562000a7c5780820291505b808102905062000a8c8562000a35565b945062000a4c565b94509492505050565b60008262000aaf576001905062000b82565b8162000abf576000905062000b82565b816001811462000ad8576002811462000ae35762000b19565b600191505062000b82565b60ff84111562000af85762000af762000a06565b5b8360020a91508482111562000b125762000b1162000a06565b5b5062000b82565b5060208310610133831016604e8410600b841016171562000b535782820a90508381111562000b4d5762000b4c62000a06565b5b62000b82565b62000b62848484600162000a42565b9250905081840481111562000b7c5762000b7b62000a06565b5b81810290505b9392505050565b600062000b9682620005f3565b915062000ba383620005b5565b925062000bd27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000a9d565b905092915050565b600062000be782620005f3565b915062000bf483620005f3565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000c305762000c2f62000a06565b5b828202905092915050565b62000c4681620005f3565b82525050565b600060208201905062000c63600083018462000c3b565b92915050565b6127998062000c796000396000f3fe6080604052600436106100f75760003560e01c80638da5cb5b1161008a578063a9059cbb11610059578063a9059cbb1461035f578063b2bdfa7b1461039c578063dd62ed3e146103c7578063f2fde38b14610404576100fe565b80638da5cb5b146102b5578063914eb66a146102e057806395d89b41146102f7578063a457c2d714610322576100fe565b8063313ce567116100c6578063313ce567146101d3578063340ac20f146101fe578063395093511461023b57806370a0823114610278576100fe565b806306fdde0314610103578063095ea7b31461012e57806318160ddd1461016b57806323b872dd14610196576100fe565b366100fe57005b600080fd5b34801561010f57600080fd5b5061011861042d565b6040516101259190611c9a565b60405180910390f35b34801561013a57600080fd5b5061015560048036038101906101509190611d55565b6104bf565b6040516101629190611db0565b60405180910390f35b34801561017757600080fd5b506101806104dd565b60405161018d9190611dda565b60405180910390f35b3480156101a257600080fd5b506101bd60048036038101906101b89190611df5565b6104e7565b6040516101ca9190611db0565b60405180910390f35b3480156101df57600080fd5b506101e86105c1565b6040516101f59190611e64565b60405180910390f35b34801561020a57600080fd5b5061022560048036038101906102209190611e7f565b6105d8565b6040516102329190611ebb565b60405180910390f35b34801561024757600080fd5b50610262600480360381019061025d9190611d55565b6108cf565b60405161026f9190611db0565b60405180910390f35b34801561028457600080fd5b5061029f600480360381019061029a9190611e7f565b610982565b6040516102ac9190611dda565b60405180910390f35b3480156102c157600080fd5b506102ca6109cb565b6040516102d79190611ebb565b60405180910390f35b3480156102ec57600080fd5b506102f56109f4565b005b34801561030357600080fd5b5061030c610b47565b6040516103199190611c9a565b60405180910390f35b34801561032e57600080fd5b5061034960048036038101906103449190611d55565b610bd9565b6040516103569190611db0565b60405180910390f35b34801561036b57600080fd5b5061038660048036038101906103819190611d55565b610ca6565b6040516103939190611db0565b60405180910390f35b3480156103a857600080fd5b506103b1610cc5565b6040516103be9190611ebb565b60405180910390f35b3480156103d357600080fd5b506103ee60048036038101906103e99190611ed6565b610ce9565b6040516103fb9190611dda565b60405180910390f35b34801561041057600080fd5b5061042b60048036038101906104269190611e7f565b610d70565b005b60606001805461043c90611f45565b80601f016020809104026020016040519081016040528092919081815260200182805461046890611f45565b80156104b55780601f1061048a576101008083540402835291602001916104b5565b820191906000526020600020905b81548152906001019060200180831161049857829003601f168201915b5050505050905090565b60006104d36104cc610f31565b8484610f39565b6001905092915050565b6000600d54905090565b60006104f4848484611102565b506105b684610501610f31565b6105b18560405180606001604052806028815260200161271760289139600860008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610567610f31565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114f99092919063ffffffff16565b610f39565b600190509392505050565b6000600360009054906101000a900460ff16905090565b60006105e2610f31565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461066f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066690611fc2565b60405180910390fd5b6000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107059190611ff7565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561076c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107909190611ff7565b6040518363ffffffff1660e01b81526004016107ad929190612024565b602060405180830381865afa1580156107ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ee9190611ff7565b915082905080600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601060156101000a81548160ff021916908315150217905550600160096000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b60006109786108dc610f31565b8461097385600860006108ed610f31565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461155d90919063ffffffff16565b610f39565b6001905092915050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6109fc610f31565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8090611fc2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b606060028054610b5690611f45565b80601f0160208091040260200160405190810160405280929190818152602001828054610b8290611f45565b8015610bcf5780601f10610ba457610100808354040283529160200191610bcf565b820191906000526020600020905b815481529060010190602001808311610bb257829003601f168201915b5050505050905090565b6000610c9c610be6610f31565b84610c978560405180606001604052806025815260200161273f6025913960086000610c10610f31565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114f99092919063ffffffff16565b610f39565b6001905092915050565b6000610cba610cb3610f31565b8484611102565b506001905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610d78610f31565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfc90611fc2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610e74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6b906120bf565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610fa8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9f90612151565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611017576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100e906121e3565b60405180910390fd5b80600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516110f59190611dda565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611172576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116990612275565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d890612307565b60405180910390fd5b60008211611224576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121b90612399565b60405180910390fd5b601060149054906101000a900460ff161561124b576112448484846115bb565b90506114f2565b600061125630610982565b90506000600e54821015905080801561127c5750601060149054906101000a900460ff16155b80156112d25750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156112ea5750601060159054906101000a900460ff165b1561131557601060169054906101000a900460ff161561130a57600e5491505b611314868361178e565b5b61139e846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114f99092919063ffffffff16565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006113ee878787611872565b905061144281600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461155d90919063ffffffff16565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516114e29190611dda565b60405180910390a3600193505050505b9392505050565b6000838311158290611541576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115389190611c9a565b60405180910390fd5b506000838561155091906123e8565b9050809150509392505050565b600080828461156c919061241c565b9050838110156115b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a89061249c565b60405180910390fd5b8091505092915050565b6000611646826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114f99092919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506116db82600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461155d90919063ffffffff16565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161177b9190611dda565b60405180910390a3600190509392505050565b6117bb30600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683610f39565b6000479050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982858560008030426040518863ffffffff1660e01b815260040161182796959493929190612501565b60606040518083038185885af1158015611845573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061186a9190612577565b505050505050565b60008060009050600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156118fa576118f360646118e5600b5486611a9990919063ffffffff16565b611b1390919063ffffffff16565b9050611978565b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611977576119746064611966600c5486611a9990919063ffffffff16565b611b1390919063ffffffff16565b90505b5b6000811115611a7c576119d381600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461155d90919063ffffffff16565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611a739190611dda565b60405180910390a35b611a8f8184611b5d90919063ffffffff16565b9150509392505050565b6000808303611aab5760009050611b0d565b60008284611ab991906125ca565b9050828482611ac89190612653565b14611b08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aff906126f6565b60405180910390fd5b809150505b92915050565b6000611b5583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611ba7565b905092915050565b6000611b9f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506114f9565b905092915050565b60008083118290611bee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be59190611c9a565b60405180910390fd5b5060008385611bfd9190612653565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611c44578082015181840152602081019050611c29565b60008484015250505050565b6000601f19601f8301169050919050565b6000611c6c82611c0a565b611c768185611c15565b9350611c86818560208601611c26565b611c8f81611c50565b840191505092915050565b60006020820190508181036000830152611cb48184611c61565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611cec82611cc1565b9050919050565b611cfc81611ce1565b8114611d0757600080fd5b50565b600081359050611d1981611cf3565b92915050565b6000819050919050565b611d3281611d1f565b8114611d3d57600080fd5b50565b600081359050611d4f81611d29565b92915050565b60008060408385031215611d6c57611d6b611cbc565b5b6000611d7a85828601611d0a565b9250506020611d8b85828601611d40565b9150509250929050565b60008115159050919050565b611daa81611d95565b82525050565b6000602082019050611dc56000830184611da1565b92915050565b611dd481611d1f565b82525050565b6000602082019050611def6000830184611dcb565b92915050565b600080600060608486031215611e0e57611e0d611cbc565b5b6000611e1c86828701611d0a565b9350506020611e2d86828701611d0a565b9250506040611e3e86828701611d40565b9150509250925092565b600060ff82169050919050565b611e5e81611e48565b82525050565b6000602082019050611e796000830184611e55565b92915050565b600060208284031215611e9557611e94611cbc565b5b6000611ea384828501611d0a565b91505092915050565b611eb581611ce1565b82525050565b6000602082019050611ed06000830184611eac565b92915050565b60008060408385031215611eed57611eec611cbc565b5b6000611efb85828601611d0a565b9250506020611f0c85828601611d0a565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611f5d57607f821691505b602082108103611f7057611f6f611f16565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611fac602083611c15565b9150611fb782611f76565b602082019050919050565b60006020820190508181036000830152611fdb81611f9f565b9050919050565b600081519050611ff181611cf3565b92915050565b60006020828403121561200d5761200c611cbc565b5b600061201b84828501611fe2565b91505092915050565b60006040820190506120396000830185611eac565b6120466020830184611eac565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006120a9602683611c15565b91506120b48261204d565b604082019050919050565b600060208201905081810360008301526120d88161209c565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061213b602483611c15565b9150612146826120df565b604082019050919050565b6000602082019050818103600083015261216a8161212e565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006121cd602283611c15565b91506121d882612171565b604082019050919050565b600060208201905081810360008301526121fc816121c0565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061225f602583611c15565b915061226a82612203565b604082019050919050565b6000602082019050818103600083015261228e81612252565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006122f1602383611c15565b91506122fc82612295565b604082019050919050565b60006020820190508181036000830152612320816122e4565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612383602983611c15565b915061238e82612327565b604082019050919050565b600060208201905081810360008301526123b281612376565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006123f382611d1f565b91506123fe83611d1f565b9250828203905081811115612416576124156123b9565b5b92915050565b600061242782611d1f565b915061243283611d1f565b925082820190508082111561244a576124496123b9565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000612486601b83611c15565b915061249182612450565b602082019050919050565b600060208201905081810360008301526124b581612479565b9050919050565b6000819050919050565b6000819050919050565b60006124eb6124e66124e1846124bc565b6124c6565b611d1f565b9050919050565b6124fb816124d0565b82525050565b600060c0820190506125166000830189611eac565b6125236020830188611dcb565b61253060408301876124f2565b61253d60608301866124f2565b61254a6080830185611eac565b61255760a0830184611dcb565b979650505050505050565b60008151905061257181611d29565b92915050565b6000806000606084860312156125905761258f611cbc565b5b600061259e86828701612562565b93505060206125af86828701612562565b92505060406125c086828701612562565b9150509250925092565b60006125d582611d1f565b91506125e083611d1f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612619576126186123b9565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061265e82611d1f565b915061266983611d1f565b92508261267957612678612624565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006126e0602183611c15565b91506126eb82612684565b604082019050919050565b6000602082019050818103600083015261270f816126d3565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212205cce4a9ecdd3fd300c0ff62c1958f7d310f29c9ea4974c6f43a500465510678764736f6c63430008100033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000005f5e100000000000000000000000000000000000000000000000000000000000000000550554e4b58000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000550554e4b58000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x6080604052600436106100f75760003560e01c80638da5cb5b1161008a578063a9059cbb11610059578063a9059cbb1461035f578063b2bdfa7b1461039c578063dd62ed3e146103c7578063f2fde38b14610404576100fe565b80638da5cb5b146102b5578063914eb66a146102e057806395d89b41146102f7578063a457c2d714610322576100fe565b8063313ce567116100c6578063313ce567146101d3578063340ac20f146101fe578063395093511461023b57806370a0823114610278576100fe565b806306fdde0314610103578063095ea7b31461012e57806318160ddd1461016b57806323b872dd14610196576100fe565b366100fe57005b600080fd5b34801561010f57600080fd5b5061011861042d565b6040516101259190611c9a565b60405180910390f35b34801561013a57600080fd5b5061015560048036038101906101509190611d55565b6104bf565b6040516101629190611db0565b60405180910390f35b34801561017757600080fd5b506101806104dd565b60405161018d9190611dda565b60405180910390f35b3480156101a257600080fd5b506101bd60048036038101906101b89190611df5565b6104e7565b6040516101ca9190611db0565b60405180910390f35b3480156101df57600080fd5b506101e86105c1565b6040516101f59190611e64565b60405180910390f35b34801561020a57600080fd5b5061022560048036038101906102209190611e7f565b6105d8565b6040516102329190611ebb565b60405180910390f35b34801561024757600080fd5b50610262600480360381019061025d9190611d55565b6108cf565b60405161026f9190611db0565b60405180910390f35b34801561028457600080fd5b5061029f600480360381019061029a9190611e7f565b610982565b6040516102ac9190611dda565b60405180910390f35b3480156102c157600080fd5b506102ca6109cb565b6040516102d79190611ebb565b60405180910390f35b3480156102ec57600080fd5b506102f56109f4565b005b34801561030357600080fd5b5061030c610b47565b6040516103199190611c9a565b60405180910390f35b34801561032e57600080fd5b5061034960048036038101906103449190611d55565b610bd9565b6040516103569190611db0565b60405180910390f35b34801561036b57600080fd5b5061038660048036038101906103819190611d55565b610ca6565b6040516103939190611db0565b60405180910390f35b3480156103a857600080fd5b506103b1610cc5565b6040516103be9190611ebb565b60405180910390f35b3480156103d357600080fd5b506103ee60048036038101906103e99190611ed6565b610ce9565b6040516103fb9190611dda565b60405180910390f35b34801561041057600080fd5b5061042b60048036038101906104269190611e7f565b610d70565b005b60606001805461043c90611f45565b80601f016020809104026020016040519081016040528092919081815260200182805461046890611f45565b80156104b55780601f1061048a576101008083540402835291602001916104b5565b820191906000526020600020905b81548152906001019060200180831161049857829003601f168201915b5050505050905090565b60006104d36104cc610f31565b8484610f39565b6001905092915050565b6000600d54905090565b60006104f4848484611102565b506105b684610501610f31565b6105b18560405180606001604052806028815260200161271760289139600860008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610567610f31565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114f99092919063ffffffff16565b610f39565b600190509392505050565b6000600360009054906101000a900460ff16905090565b60006105e2610f31565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461066f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066690611fc2565b60405180910390fd5b6000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107059190611ff7565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561076c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107909190611ff7565b6040518363ffffffff1660e01b81526004016107ad929190612024565b602060405180830381865afa1580156107ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ee9190611ff7565b915082905080600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601060156101000a81548160ff021916908315150217905550600160096000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b60006109786108dc610f31565b8461097385600860006108ed610f31565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461155d90919063ffffffff16565b610f39565b6001905092915050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6109fc610f31565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8090611fc2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b606060028054610b5690611f45565b80601f0160208091040260200160405190810160405280929190818152602001828054610b8290611f45565b8015610bcf5780601f10610ba457610100808354040283529160200191610bcf565b820191906000526020600020905b815481529060010190602001808311610bb257829003601f168201915b5050505050905090565b6000610c9c610be6610f31565b84610c978560405180606001604052806025815260200161273f6025913960086000610c10610f31565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114f99092919063ffffffff16565b610f39565b6001905092915050565b6000610cba610cb3610f31565b8484611102565b506001905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610d78610f31565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfc90611fc2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610e74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6b906120bf565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610fa8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9f90612151565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611017576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100e906121e3565b60405180910390fd5b80600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516110f59190611dda565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611172576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116990612275565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d890612307565b60405180910390fd5b60008211611224576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121b90612399565b60405180910390fd5b601060149054906101000a900460ff161561124b576112448484846115bb565b90506114f2565b600061125630610982565b90506000600e54821015905080801561127c5750601060149054906101000a900460ff16155b80156112d25750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156112ea5750601060159054906101000a900460ff165b1561131557601060169054906101000a900460ff161561130a57600e5491505b611314868361178e565b5b61139e846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114f99092919063ffffffff16565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006113ee878787611872565b905061144281600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461155d90919063ffffffff16565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516114e29190611dda565b60405180910390a3600193505050505b9392505050565b6000838311158290611541576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115389190611c9a565b60405180910390fd5b506000838561155091906123e8565b9050809150509392505050565b600080828461156c919061241c565b9050838110156115b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a89061249c565b60405180910390fd5b8091505092915050565b6000611646826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114f99092919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506116db82600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461155d90919063ffffffff16565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161177b9190611dda565b60405180910390a3600190509392505050565b6117bb30600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683610f39565b6000479050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982858560008030426040518863ffffffff1660e01b815260040161182796959493929190612501565b60606040518083038185885af1158015611845573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061186a9190612577565b505050505050565b60008060009050600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156118fa576118f360646118e5600b5486611a9990919063ffffffff16565b611b1390919063ffffffff16565b9050611978565b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611977576119746064611966600c5486611a9990919063ffffffff16565b611b1390919063ffffffff16565b90505b5b6000811115611a7c576119d381600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461155d90919063ffffffff16565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611a739190611dda565b60405180910390a35b611a8f8184611b5d90919063ffffffff16565b9150509392505050565b6000808303611aab5760009050611b0d565b60008284611ab991906125ca565b9050828482611ac89190612653565b14611b08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aff906126f6565b60405180910390fd5b809150505b92915050565b6000611b5583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611ba7565b905092915050565b6000611b9f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506114f9565b905092915050565b60008083118290611bee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be59190611c9a565b60405180910390fd5b5060008385611bfd9190612653565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611c44578082015181840152602081019050611c29565b60008484015250505050565b6000601f19601f8301169050919050565b6000611c6c82611c0a565b611c768185611c15565b9350611c86818560208601611c26565b611c8f81611c50565b840191505092915050565b60006020820190508181036000830152611cb48184611c61565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611cec82611cc1565b9050919050565b611cfc81611ce1565b8114611d0757600080fd5b50565b600081359050611d1981611cf3565b92915050565b6000819050919050565b611d3281611d1f565b8114611d3d57600080fd5b50565b600081359050611d4f81611d29565b92915050565b60008060408385031215611d6c57611d6b611cbc565b5b6000611d7a85828601611d0a565b9250506020611d8b85828601611d40565b9150509250929050565b60008115159050919050565b611daa81611d95565b82525050565b6000602082019050611dc56000830184611da1565b92915050565b611dd481611d1f565b82525050565b6000602082019050611def6000830184611dcb565b92915050565b600080600060608486031215611e0e57611e0d611cbc565b5b6000611e1c86828701611d0a565b9350506020611e2d86828701611d0a565b9250506040611e3e86828701611d40565b9150509250925092565b600060ff82169050919050565b611e5e81611e48565b82525050565b6000602082019050611e796000830184611e55565b92915050565b600060208284031215611e9557611e94611cbc565b5b6000611ea384828501611d0a565b91505092915050565b611eb581611ce1565b82525050565b6000602082019050611ed06000830184611eac565b92915050565b60008060408385031215611eed57611eec611cbc565b5b6000611efb85828601611d0a565b9250506020611f0c85828601611d0a565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611f5d57607f821691505b602082108103611f7057611f6f611f16565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611fac602083611c15565b9150611fb782611f76565b602082019050919050565b60006020820190508181036000830152611fdb81611f9f565b9050919050565b600081519050611ff181611cf3565b92915050565b60006020828403121561200d5761200c611cbc565b5b600061201b84828501611fe2565b91505092915050565b60006040820190506120396000830185611eac565b6120466020830184611eac565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006120a9602683611c15565b91506120b48261204d565b604082019050919050565b600060208201905081810360008301526120d88161209c565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061213b602483611c15565b9150612146826120df565b604082019050919050565b6000602082019050818103600083015261216a8161212e565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006121cd602283611c15565b91506121d882612171565b604082019050919050565b600060208201905081810360008301526121fc816121c0565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061225f602583611c15565b915061226a82612203565b604082019050919050565b6000602082019050818103600083015261228e81612252565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006122f1602383611c15565b91506122fc82612295565b604082019050919050565b60006020820190508181036000830152612320816122e4565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612383602983611c15565b915061238e82612327565b604082019050919050565b600060208201905081810360008301526123b281612376565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006123f382611d1f565b91506123fe83611d1f565b9250828203905081811115612416576124156123b9565b5b92915050565b600061242782611d1f565b915061243283611d1f565b925082820190508082111561244a576124496123b9565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000612486601b83611c15565b915061249182612450565b602082019050919050565b600060208201905081810360008301526124b581612479565b9050919050565b6000819050919050565b6000819050919050565b60006124eb6124e66124e1846124bc565b6124c6565b611d1f565b9050919050565b6124fb816124d0565b82525050565b600060c0820190506125166000830189611eac565b6125236020830188611dcb565b61253060408301876124f2565b61253d60608301866124f2565b61254a6080830185611eac565b61255760a0830184611dcb565b979650505050505050565b60008151905061257181611d29565b92915050565b6000806000606084860312156125905761258f611cbc565b5b600061259e86828701612562565b93505060206125af86828701612562565b92505060406125c086828701612562565b9150509250925092565b60006125d582611d1f565b91506125e083611d1f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612619576126186123b9565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061265e82611d1f565b915061266983611d1f565b92508261267957612678612624565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006126e0602183611c15565b91506126eb82612684565b604082019050919050565b6000602082019050818103600083015261270f816126d3565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212205cce4a9ecdd3fd300c0ff62c1958f7d310f29c9ea4974c6f43a500465510678764736f6c63430008100033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000005f5e100000000000000000000000000000000000000000000000000000000000000000550554e4b58000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000550554e4b58000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : coinName (string): PUNKX
Arg [1] : coinSymbol (string): PUNKX
Arg [2] : coinDecimals (uint8): 18
Arg [3] : supply (uint256): 100000000
-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000012
Arg [3] : 0000000000000000000000000000000000000000000000000000000005f5e100
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [5] : 50554e4b58000000000000000000000000000000000000000000000000000000
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [7] : 50554e4b58000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
23905:12955:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26650:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27816:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26927:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29255:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26836:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28334:504;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27313:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27035:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14852:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15066:145;;;;;;;;;;;;;:::i;:::-;;26741:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27539:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29080:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14728:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27162:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15219:236;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26650:83;26687:13;26720:5;26713:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26650:83;:::o;27816:161::-;27891:4;27908:39;27917:12;:10;:12::i;:::-;27931:7;27940:6;27908:8;:39::i;:::-;27965:4;27958:11;;27816:161;;;;:::o;26927:100::-;26980:7;27007:12;;27000:19;;26927:100;:::o;29255:313::-;29353:4;29370:36;29380:6;29388:9;29399:6;29370:9;:36::i;:::-;;29417:121;29426:6;29434:12;:10;:12::i;:::-;29448:89;29486:6;29448:89;;;;;;;;;;;;;;;;;:11;:19;29460:6;29448:19;;;;;;;;;;;;;;;:33;29468:12;:10;:12::i;:::-;29448:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;29417:8;:121::i;:::-;29556:4;29549:11;;29255:313;;;;;:::o;26836:83::-;26877:5;26902:9;;;;;;;;;;;26895:16;;26836:83;:::o;28334:504::-;28409:22;14989:12;:10;:12::i;:::-;14979:22;;:6;;;;;;;;;;:22;;;14971:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28446:35:::1;28503:7;;;;;;;;;;;28446:65;;28559:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28541:53;;;28603:4;28610:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28541:93;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28524:110;;28685:16;28647:55;;28723:16;28713:7;;:26;;;;;;;;;;;;;;;;;;28774:4;28750:21;;:28;;;;;;;;;;;;;;;;;;28826:4;28789:12;:34;28810:11;;;;;;;;;;;28789:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;28433:405;28334:504:::0;;;:::o;27313:218::-;27401:4;27418:83;27427:12;:10;:12::i;:::-;27441:7;27450:50;27489:10;27450:11;:25;27462:12;:10;:12::i;:::-;27450:25;;;;;;;;;;;;;;;:34;27476:7;27450:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;27418:8;:83::i;:::-;27519:4;27512:11;;27313:218;;;;:::o;27035:119::-;27101:7;27128:9;:18;27138:7;27128:18;;;;;;;;;;;;;;;;27121:25;;27035:119;;;:::o;14852:79::-;14890:7;14917:6;;;;;;;;;;;14910:13;;14852:79;:::o;15066:145::-;14989:12;:10;:12::i;:::-;14979:22;;:6;;;;;;;;;;:22;;;14971:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15170:1:::1;15133:40;;15154:6;::::0;::::1;;;;;;;;15133:40;;;;;;;;;;;;15201:1;15184:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;15066:145::o:0;26741:87::-;26780:13;26813:7;26806:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26741:87;:::o;27539:269::-;27632:4;27649:129;27658:12;:10;:12::i;:::-;27672:7;27681:96;27720:15;27681:96;;;;;;;;;;;;;;;;;:11;:25;27693:12;:10;:12::i;:::-;27681:25;;;;;;;;;;;;;;;:34;27707:7;27681:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;27649:8;:129::i;:::-;27796:4;27789:11;;27539:269;;;;:::o;29080:167::-;29158:4;29175:42;29185:12;:10;:12::i;:::-;29199:9;29210:6;29175:9;:42::i;:::-;;29235:4;29228:11;;29080:167;;;;:::o;14728:21::-;;;;;;;;;;;;:::o;27162:143::-;27243:7;27270:11;:18;27282:5;27270:18;;;;;;;;;;;;;;;:27;27289:7;27270:27;;;;;;;;;;;;;;;;27263:34;;27162:143;;;;:::o;15219:236::-;14989:12;:10;:12::i;:::-;14979:22;;:6;;;;;;;;;;:22;;;14971:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15328:1:::1;15308:22;;:8;:22;;::::0;15300:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;15418:8;15389:38;;15410:6;::::0;::::1;;;;;;;;15389:38;;;;;;;;;;;;15439:8;15430:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;15219:236:::0;:::o;103:115::-;156:15;199:10;184:26;;103:115;:::o;27985:337::-;28095:1;28078:19;;:5;:19;;;28070:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28176:1;28157:21;;:7;:21;;;28149:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28260:6;28230:11;:18;28242:5;28230:18;;;;;;;;;;;;;;;:27;28249:7;28230:27;;;;;;;;;;;;;;;:36;;;;28298:7;28282:32;;28291:5;28282:32;;;28307:6;28282:32;;;;;;:::i;:::-;;;;;;;;27985:337;;;:::o;29576:1312::-;29663:4;29708:1;29690:20;;:6;:20;;;29682:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;29792:1;29771:23;;:9;:23;;;29763:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;29862:1;29853:6;:10;29845:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;29925:16;;;;;;;;;;;29922:959;;;29974:41;29989:6;29997:9;30008:6;29974:14;:41::i;:::-;29967:48;;;;29922:959;30068:28;30099:24;30117:4;30099:9;:24::i;:::-;30068:55;;30138:28;30193:24;;30169:20;:48;;30138:79;;30238:23;:44;;;;;30266:16;;;;;;;;;;;30265:17;30238:44;:69;;;;;30287:12;:20;30300:6;30287:20;;;;;;;;;;;;;;;;;;;;;;;;;30286:21;30238:69;:94;;;;;30311:21;;;;;;;;;;;30238:94;30234:306;;;30369:25;;;;;;;;;;;30366:98;;;30440:24;;30417:47;;30366:98;30483:41;30496:6;30503:20;30483:12;:41::i;:::-;30234:306;30576:53;30598:6;30576:53;;;;;;;;;;;;;;;;;:9;:17;30586:6;30576:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;30556:9;:17;30566:6;30556:17;;;;;;;;;;;;;;;:73;;;;30646:19;30668:34;30676:6;30684:9;30695:6;30668:7;:34::i;:::-;30646:56;;30744:37;30769:11;30744:9;:20;30754:9;30744:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;30721:9;:20;30731:9;30721:20;;;;;;;;;;;;;;;:60;;;;30820:9;30803:40;;30812:6;30803:40;;;30831:11;30803:40;;;;;;:::i;:::-;;;;;;;;30865:4;30858:11;;;;;29576:1312;;;;;;:::o;10798:192::-;10884:7;10917:1;10912;:6;;10920:12;10904:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;10944:9;10960:1;10956;:5;;;;:::i;:::-;10944:17;;10981:1;10974:8;;;10798:192;;;;;:::o;10465:181::-;10523:7;10543:9;10559:1;10555;:5;;;;:::i;:::-;10543:17;;10584:1;10579;:6;;10571:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;10637:1;10630:8;;;10465:181;;;;:::o;30896:330::-;30989:4;31026:53;31048:6;31026:53;;;;;;;;;;;;;;;;;:9;:17;31036:6;31026:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;31006:9;:17;31016:6;31006:17;;;;;;;;;;;;;;;:73;;;;31113:32;31138:6;31113:9;:20;31123:9;31113:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;31090:9;:20;31100:9;31090:20;;;;;;;;;;;;;;;:55;;;;31178:9;31161:35;;31170:6;31161:35;;;31189:6;31161:35;;;;;;:::i;:::-;;;;;;;;31214:4;31207:11;;30896:330;;;;;:::o;31875:531::-;32019:54;32036:4;32051:7;;;;;;;;;;;32061:11;32019:8;:54::i;:::-;32084:17;32105:21;32084:42;;32167:7;;;;;;;;;;;:23;;;32198:9;32223:6;32232:11;32258:1;32301;32352:4;32372:15;32167:231;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;31941:465;31875:531;;:::o;33060:596::-;33146:7;33168:17;33188:1;33168:21;;33203:12;:20;33216:6;33203:20;;;;;;;;;;;;;;;;;;;;;;;;;33200:223;;;33252:38;33286:3;33252:29;33263:17;;33252:6;:10;;:29;;;;:::i;:::-;:33;;:38;;;;:::i;:::-;33240:50;;33200:223;;;33320:12;:23;33333:9;33320:23;;;;;;;;;;;;;;;;;;;;;;;;;33317:106;;;33372:39;33407:3;33372:30;33383:18;;33372:6;:10;;:30;;;;:::i;:::-;:34;;:39;;;;:::i;:::-;33360:51;;33317:106;33200:223;33450:1;33438:9;:13;33435:173;;;33495:39;33524:9;33495;:24;33513:4;33495:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;33468:9;:24;33486:4;33468:24;;;;;;;;;;;;;;;:66;;;;33579:4;33554:42;;33563:6;33554:42;;;33586:9;33554:42;;;;;;:::i;:::-;;;;;;;;33435:173;33627:21;33638:9;33627:6;:10;;:21;;;;:::i;:::-;33620:28;;;33060:596;;;;;:::o;10998:250::-;11056:7;11085:1;11080;:6;11076:47;;11110:1;11103:8;;;;11076:47;11135:9;11151:1;11147;:5;;;;:::i;:::-;11135:17;;11180:1;11175;11171;:5;;;;:::i;:::-;:10;11163:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;11239:1;11232:8;;;10998:250;;;;;:::o;11256:132::-;11314:7;11341:39;11345:1;11348;11341:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;11334:46;;11256:132;;;;:::o;10654:136::-;10712:7;10739:43;10743:1;10746;10739:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;10732:50;;10654:136;;;;:::o;11396:271::-;11482:7;11514:1;11510;:5;11517:12;11502:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;11534:9;11550:1;11546;:5;;;;:::i;:::-;11534:17;;11658:1;11651:8;;;11396:271;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:329::-;4912:6;4961:2;4949:9;4940:7;4936:23;4932:32;4929:119;;;4967:79;;:::i;:::-;4929:119;5087:1;5112:53;5157:7;5148:6;5137:9;5133:22;5112:53;:::i;:::-;5102:63;;5058:117;4853:329;;;;:::o;5188:118::-;5275:24;5293:5;5275:24;:::i;:::-;5270:3;5263:37;5188:118;;:::o;5312:222::-;5405:4;5443:2;5432:9;5428:18;5420:26;;5456:71;5524:1;5513:9;5509:17;5500:6;5456:71;:::i;:::-;5312:222;;;;:::o;5540:474::-;5608:6;5616;5665:2;5653:9;5644:7;5640:23;5636:32;5633:119;;;5671:79;;:::i;:::-;5633:119;5791:1;5816:53;5861:7;5852:6;5841:9;5837:22;5816:53;:::i;:::-;5806:63;;5762:117;5918:2;5944:53;5989:7;5980:6;5969:9;5965:22;5944:53;:::i;:::-;5934:63;;5889:118;5540:474;;;;;:::o;6020:180::-;6068:77;6065:1;6058:88;6165:4;6162:1;6155:15;6189:4;6186:1;6179:15;6206:320;6250:6;6287:1;6281:4;6277:12;6267:22;;6334:1;6328:4;6324:12;6355:18;6345:81;;6411:4;6403:6;6399:17;6389:27;;6345:81;6473:2;6465:6;6462:14;6442:18;6439:38;6436:84;;6492:18;;:::i;:::-;6436:84;6257:269;6206:320;;;:::o;6532:182::-;6672:34;6668:1;6660:6;6656:14;6649:58;6532:182;:::o;6720:366::-;6862:3;6883:67;6947:2;6942:3;6883:67;:::i;:::-;6876:74;;6959:93;7048:3;6959:93;:::i;:::-;7077:2;7072:3;7068:12;7061:19;;6720:366;;;:::o;7092:419::-;7258:4;7296:2;7285:9;7281:18;7273:26;;7345:9;7339:4;7335:20;7331:1;7320:9;7316:17;7309:47;7373:131;7499:4;7373:131;:::i;:::-;7365:139;;7092:419;;;:::o;7517:143::-;7574:5;7605:6;7599:13;7590:22;;7621:33;7648:5;7621:33;:::i;:::-;7517:143;;;;:::o;7666:351::-;7736:6;7785:2;7773:9;7764:7;7760:23;7756:32;7753:119;;;7791:79;;:::i;:::-;7753:119;7911:1;7936:64;7992:7;7983:6;7972:9;7968:22;7936:64;:::i;:::-;7926:74;;7882:128;7666:351;;;;:::o;8023:332::-;8144:4;8182:2;8171:9;8167:18;8159:26;;8195:71;8263:1;8252:9;8248:17;8239:6;8195:71;:::i;:::-;8276:72;8344:2;8333:9;8329:18;8320:6;8276:72;:::i;:::-;8023:332;;;;;:::o;8361:225::-;8501:34;8497:1;8489:6;8485:14;8478:58;8570:8;8565:2;8557:6;8553:15;8546:33;8361:225;:::o;8592:366::-;8734:3;8755:67;8819:2;8814:3;8755:67;:::i;:::-;8748:74;;8831:93;8920:3;8831:93;:::i;:::-;8949:2;8944:3;8940:12;8933:19;;8592:366;;;:::o;8964:419::-;9130:4;9168:2;9157:9;9153:18;9145:26;;9217:9;9211:4;9207:20;9203:1;9192:9;9188:17;9181:47;9245:131;9371:4;9245:131;:::i;:::-;9237:139;;8964:419;;;:::o;9389:223::-;9529:34;9525:1;9517:6;9513:14;9506:58;9598:6;9593:2;9585:6;9581:15;9574:31;9389:223;:::o;9618:366::-;9760:3;9781:67;9845:2;9840:3;9781:67;:::i;:::-;9774:74;;9857:93;9946:3;9857:93;:::i;:::-;9975:2;9970:3;9966:12;9959:19;;9618:366;;;:::o;9990:419::-;10156:4;10194:2;10183:9;10179:18;10171:26;;10243:9;10237:4;10233:20;10229:1;10218:9;10214:17;10207:47;10271:131;10397:4;10271:131;:::i;:::-;10263:139;;9990:419;;;:::o;10415:221::-;10555:34;10551:1;10543:6;10539:14;10532:58;10624:4;10619:2;10611:6;10607:15;10600:29;10415:221;:::o;10642:366::-;10784:3;10805:67;10869:2;10864:3;10805:67;:::i;:::-;10798:74;;10881:93;10970:3;10881:93;:::i;:::-;10999:2;10994:3;10990:12;10983:19;;10642:366;;;:::o;11014:419::-;11180:4;11218:2;11207:9;11203:18;11195:26;;11267:9;11261:4;11257:20;11253:1;11242:9;11238:17;11231:47;11295:131;11421:4;11295:131;:::i;:::-;11287:139;;11014:419;;;:::o;11439:224::-;11579:34;11575:1;11567:6;11563:14;11556:58;11648:7;11643:2;11635:6;11631:15;11624:32;11439:224;:::o;11669:366::-;11811:3;11832:67;11896:2;11891:3;11832:67;:::i;:::-;11825:74;;11908:93;11997:3;11908:93;:::i;:::-;12026:2;12021:3;12017:12;12010:19;;11669:366;;;:::o;12041:419::-;12207:4;12245:2;12234:9;12230:18;12222:26;;12294:9;12288:4;12284:20;12280:1;12269:9;12265:17;12258:47;12322:131;12448:4;12322:131;:::i;:::-;12314:139;;12041:419;;;:::o;12466:222::-;12606:34;12602:1;12594:6;12590:14;12583:58;12675:5;12670:2;12662:6;12658:15;12651:30;12466:222;:::o;12694:366::-;12836:3;12857:67;12921:2;12916:3;12857:67;:::i;:::-;12850:74;;12933:93;13022:3;12933:93;:::i;:::-;13051:2;13046:3;13042:12;13035:19;;12694:366;;;:::o;13066:419::-;13232:4;13270:2;13259:9;13255:18;13247:26;;13319:9;13313:4;13309:20;13305:1;13294:9;13290:17;13283:47;13347:131;13473:4;13347:131;:::i;:::-;13339:139;;13066:419;;;:::o;13491:228::-;13631:34;13627:1;13619:6;13615:14;13608:58;13700:11;13695:2;13687:6;13683:15;13676:36;13491:228;:::o;13725:366::-;13867:3;13888:67;13952:2;13947:3;13888:67;:::i;:::-;13881:74;;13964:93;14053:3;13964:93;:::i;:::-;14082:2;14077:3;14073:12;14066:19;;13725:366;;;:::o;14097:419::-;14263:4;14301:2;14290:9;14286:18;14278:26;;14350:9;14344:4;14340:20;14336:1;14325:9;14321:17;14314:47;14378:131;14504:4;14378:131;:::i;:::-;14370:139;;14097:419;;;:::o;14522:180::-;14570:77;14567:1;14560:88;14667:4;14664:1;14657:15;14691:4;14688:1;14681:15;14708:194;14748:4;14768:20;14786:1;14768:20;:::i;:::-;14763:25;;14802:20;14820:1;14802:20;:::i;:::-;14797:25;;14846:1;14843;14839:9;14831:17;;14870:1;14864:4;14861:11;14858:37;;;14875:18;;:::i;:::-;14858:37;14708:194;;;;:::o;14908:191::-;14948:3;14967:20;14985:1;14967:20;:::i;:::-;14962:25;;15001:20;15019:1;15001:20;:::i;:::-;14996:25;;15044:1;15041;15037:9;15030:16;;15065:3;15062:1;15059:10;15056:36;;;15072:18;;:::i;:::-;15056:36;14908:191;;;;:::o;15105:177::-;15245:29;15241:1;15233:6;15229:14;15222:53;15105:177;:::o;15288:366::-;15430:3;15451:67;15515:2;15510:3;15451:67;:::i;:::-;15444:74;;15527:93;15616:3;15527:93;:::i;:::-;15645:2;15640:3;15636:12;15629:19;;15288:366;;;:::o;15660:419::-;15826:4;15864:2;15853:9;15849:18;15841:26;;15913:9;15907:4;15903:20;15899:1;15888:9;15884:17;15877:47;15941:131;16067:4;15941:131;:::i;:::-;15933:139;;15660:419;;;:::o;16085:85::-;16130:7;16159:5;16148:16;;16085:85;;;:::o;16176:60::-;16204:3;16225:5;16218:12;;16176:60;;;:::o;16242:158::-;16300:9;16333:61;16351:42;16360:32;16386:5;16360:32;:::i;:::-;16351:42;:::i;:::-;16333:61;:::i;:::-;16320:74;;16242:158;;;:::o;16406:147::-;16501:45;16540:5;16501:45;:::i;:::-;16496:3;16489:58;16406:147;;:::o;16559:807::-;16808:4;16846:3;16835:9;16831:19;16823:27;;16860:71;16928:1;16917:9;16913:17;16904:6;16860:71;:::i;:::-;16941:72;17009:2;16998:9;16994:18;16985:6;16941:72;:::i;:::-;17023:80;17099:2;17088:9;17084:18;17075:6;17023:80;:::i;:::-;17113;17189:2;17178:9;17174:18;17165:6;17113:80;:::i;:::-;17203:73;17271:3;17260:9;17256:19;17247:6;17203:73;:::i;:::-;17286;17354:3;17343:9;17339:19;17330:6;17286:73;:::i;:::-;16559:807;;;;;;;;;:::o;17372:143::-;17429:5;17460:6;17454:13;17445:22;;17476:33;17503:5;17476:33;:::i;:::-;17372:143;;;;:::o;17521:663::-;17609:6;17617;17625;17674:2;17662:9;17653:7;17649:23;17645:32;17642:119;;;17680:79;;:::i;:::-;17642:119;17800:1;17825:64;17881:7;17872:6;17861:9;17857:22;17825:64;:::i;:::-;17815:74;;17771:128;17938:2;17964:64;18020:7;18011:6;18000:9;17996:22;17964:64;:::i;:::-;17954:74;;17909:129;18077:2;18103:64;18159:7;18150:6;18139:9;18135:22;18103:64;:::i;:::-;18093:74;;18048:129;17521:663;;;;;:::o;18190:348::-;18230:7;18253:20;18271:1;18253:20;:::i;:::-;18248:25;;18287:20;18305:1;18287:20;:::i;:::-;18282:25;;18475:1;18407:66;18403:74;18400:1;18397:81;18392:1;18385:9;18378:17;18374:105;18371:131;;;18482:18;;:::i;:::-;18371:131;18530:1;18527;18523:9;18512:20;;18190:348;;;;:::o;18544:180::-;18592:77;18589:1;18582:88;18689:4;18686:1;18679:15;18713:4;18710:1;18703:15;18730:185;18770:1;18787:20;18805:1;18787:20;:::i;:::-;18782:25;;18821:20;18839:1;18821:20;:::i;:::-;18816:25;;18860:1;18850:35;;18865:18;;:::i;:::-;18850:35;18907:1;18904;18900:9;18895:14;;18730:185;;;;:::o;18921:220::-;19061:34;19057:1;19049:6;19045:14;19038:58;19130:3;19125:2;19117:6;19113:15;19106:28;18921:220;:::o;19147:366::-;19289:3;19310:67;19374:2;19369:3;19310:67;:::i;:::-;19303:74;;19386:93;19475:3;19386:93;:::i;:::-;19504:2;19499:3;19495:12;19488:19;;19147:366;;;:::o;19519:419::-;19685:4;19723:2;19712:9;19708:18;19700:26;;19772:9;19766:4;19762:20;19758:1;19747:9;19743:17;19736:47;19800:131;19926:4;19800:131;:::i;:::-;19792:139;;19519:419;;;:::o
Swarm Source
ipfs://5cce4a9ecdd3fd300c0ff62c1958f7d310f29c9ea4974c6f43a5004655106787
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.