ERC-20
Overview
Max Total Supply
100,000,000 SSR
Holders
4
Market
Price
$0.00 @ 0.000000 S
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
24,483,831.855330314408003132 SSRValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
SonicSuperRain
Compiler Version
v0.8.28+commit.7893614a
Optimization Enabled:
Yes with 1000 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.20; // Interface definitions interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); } interface IUniswapRouter { function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } /** * @title SuperRain * @dev ERC20 token with reflection rewards in native currency */ contract SonicSuperRain { // Token setup string private _name = "SonicSuperRain"; string private _symbol = "SSR"; uint8 private constant _decimals = 18; uint256 private _totalSupply; // Reward token and router addresses address public REWARD_TOKEN; address constant private ROUTER = 0x95a7e403d7cF20F675fF9273D66e94d35ba49fA3; // ROUTER address public LP_PAIR; // Ownership address private _owner; // Balances and allowances mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; // Fee configuration uint256 public taxPercentage = 5; // 5% default tax uint256 public swapThreshold; // Reward distribution uint256 public distributionInterval = 300; // 5 minutes (in seconds) uint256 public batchSize = 50; uint256 public lastProcessedTime; uint256 public currentIndex; // Holder management address[] private holders; mapping(address => uint256) public holderIndexes; struct HolderInfo { uint256 amount; uint256 pendingRewards; uint256 totalExcluded; } mapping(address => HolderInfo) public holderInfo; // Rewards accounting - using higher precision for calculations uint256 public totalShares; uint256 public totalDividends; uint256 public dividendsPerShare; uint256 private constant PRECISION_FACTOR = 1e18; // Special addresses mapping(address => bool) public excluded; mapping(address => bool) public exempt; // Control flags bool private inSwap; bool public tradingEnabled; // Events event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); event SwapAndDistribute(uint256 tokenAmount, uint256 rewardAmount); event Excluded(address indexed account, bool status); event TaxUpdated(uint256 newTaxPercentage); event IntervalUpdated(uint256 newDistributionInterval); event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); event RewardsProcessed(uint256 holderCount); event RewardSent(address indexed holder, uint256 amount); event SharesUpdated(address indexed holder, uint256 amount); event TotalSharesUpdated(uint256 newValue); // Modifiers modifier lockTheSwap { inSwap = true; _; inSwap = false; } modifier onlyOwner() { require(msg.sender == _owner, "Caller is not the owner"); _; } // Constructor constructor() { _owner = msg.sender; // Initial supply _totalSupply = 100000000 * 10**_decimals; _balances[msg.sender] = _totalSupply; // Set default parameters swapThreshold = _totalSupply * 5 / 10000; // 0.05% // Set initial reward token address REWARD_TOKEN = 0x039e2fB66102314Ce7b64Ce5Ce3E5183bc94aD38; // WRAPPED_SONIC // Add owner to holders array _addHolder(_owner, _balances[_owner]); // Approve router for future swaps _approve(address(this), ROUTER, _totalSupply); emit Transfer(address(0), msg.sender, _totalSupply); } // External functions function setRewardToken(address newRewardToken) external onlyOwner { require(newRewardToken != address(0), "Reward token cannot be zero address"); REWARD_TOKEN = newRewardToken; } function setLPPair(address newPair) external onlyOwner { require(newPair != address(0), "LP pair cannot be zero address"); LP_PAIR = newPair; } function setTaxPercentage(uint256 newTaxPercentage) external onlyOwner { taxPercentage = newTaxPercentage; emit TaxUpdated(newTaxPercentage); } function setDistributionInterval(uint256 newInterval) external onlyOwner { require(newInterval >= 60, "Interval must be at least 60 seconds"); distributionInterval = newInterval; emit IntervalUpdated(newInterval); } function setBatchSize(uint256 newBatchSize) external onlyOwner { require(newBatchSize >= 5 && newBatchSize <= 100, "Batch size must be between 5 and 100"); batchSize = newBatchSize; } function setSwapThreshold(uint256 newThreshold) external onlyOwner { require(newThreshold > 0, "Threshold must be greater than 0"); swapThreshold = newThreshold; } function setExcluded(address account, bool status) external onlyOwner { if (excluded[account] != status) { excluded[account] = status; if (status) { // If excluding an address, remove it from holders if (holderInfo[account].amount > 0) { _removeHolder(account); } } else { // If including an address, add it to holders _setShare(account, balanceOf(account)); } } emit Excluded(account, status); } function setExempt(address account, bool status) external onlyOwner { exempt[account] = status; } function enableTrading() external onlyOwner { require(!tradingEnabled, "Trading already enabled"); tradingEnabled = true; } function transferOwnership(address newOwner) external onlyOwner { require(newOwner != address(0), "New owner cannot be zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } /** * @dev Manually swap a specified amount of tokens for rewards * @param amount Amount of tokens to swap (0 for custom calculation based on contract balance) * @return swapped Amount of tokens that were actually swapped * @return received Amount of reward tokens received from the swap */ function manualSwap(uint256 amount) external onlyOwner returns (uint256 swapped, uint256 received) { uint256 contractBalance = balanceOf(address(this)); require(contractBalance > 0, "No tokens to swap"); // Determine swap amount based on parameters and contract balance uint256 swapAmount; if (amount > 0 && amount <= contractBalance) { // Use specified amount swapAmount = amount; } else if (swapThreshold > 0 && contractBalance >= swapThreshold) { // Use threshold amount swapAmount = swapThreshold; } else { // Use entire balance swapAmount = contractBalance; } // Execute the swap and track results uint256 receivedAmount = _swapTokensForRewards(swapAmount); return (swapAmount, receivedAmount); } /** * @dev Manually distribute rewards to holders - optimized for cron job * @param batchSize Number of holders to process (0 for default batchSize) * @return processed Number of holders processed * @return currentIdx Current index position after processing */ function processRewards(uint256 batchSize) external returns (uint256 processed, uint256 currentIdx) { require(msg.sender == _owner, "Only owner can process rewards"); // No holders to process if (holders.length == 0) return (0, 0); // Use specified batch size or default uint256 batchToProcess = batchSize > 0 ? batchSize : this.batchSize(); // Cap at the number of holders if (currentIndex + batchToProcess > holders.length) { batchToProcess = holders.length - currentIndex; } if (batchToProcess == 0) { // Reset index and update timestamp if we've processed everyone currentIndex = 0; lastProcessedTime = block.timestamp; return (0, 0); } uint256 startIndex = currentIndex; uint256 endIndex = currentIndex + batchToProcess; // Process this batch of holders for (uint256 i = startIndex; i < endIndex; i++) { if (i < holders.length) { _distributeRewards(holders[i]); } } // Update current index currentIndex = endIndex; // If we've processed everyone, reset index and update timestamp if (currentIndex >= holders.length) { currentIndex = 0; lastProcessedTime = block.timestamp; emit RewardsProcessed(holders.length); } return (endIndex - startIndex, currentIndex); } /** * @dev Process rewards for ALL holders in one transaction * @return processed Number of holders processed */ function processAllRewards() external onlyOwner returns (uint256 processed) { // No holders to process if (holders.length == 0) return 0; // Process all holders for (uint256 i = 0; i < holders.length; i++) { _distributeRewards(holders[i]); } // Reset index and update timestamp currentIndex = 0; lastProcessedTime = block.timestamp; emit RewardsProcessed(holders.length); return holders.length; } /** * @dev Fix totalShares calculation and recalculate dividends */ function recalculateShares() external onlyOwner { // Reset totalShares totalShares = 0; // Recalculate from actual holder balances for (uint256 i = 0; i < holders.length; i++) { address holder = holders[i]; uint256 balance = _balances[holder]; holderInfo[holder].amount = balance; totalShares += balance; } // Recalculate dividendsPerShare if we have dividends if (totalDividends > 0 && totalShares > 0) { dividendsPerShare = totalDividends * PRECISION_FACTOR / totalShares; } emit TotalSharesUpdated(totalShares); } /** * @dev Returns the contract's current balance of RAIN tokens available for swapping */ function getSwappableBalance() external view returns (uint256) { return balanceOf(address(this)); } /** * @dev Returns the contract's current balance of native SONIC available for distribution */ function getRewardBalance() external view returns (uint256) { return address(this).balance; } /** * @dev Get detailed holder info for debugging */ function getHolderInfo(address holder) external view returns ( bool isHolder, uint256 balance, uint256 shares, uint256 pendingRewards, uint256 alreadyPaid ) { bool isInList = false; if (holderIndexes[holder] > 0 || (holders.length > 0 && holders[0] == holder)) { isInList = true; } return ( isInList, _balances[holder], holderInfo[holder].amount, getUnpaidEarnings(holder), holderInfo[holder].totalExcluded ); } /** * @dev Get detailed contract status for debugging */ function getContractStatus() external view returns ( uint256 totalHolders, uint256 tokenTotalSupply, uint256 contractTokenBalance, uint256 contractSonicBalance, uint256 trackedTotalShares, uint256 totalRewards, uint256 rewardPerShare ) { return ( holders.length, _totalSupply, balanceOf(address(this)), address(this).balance, totalShares, totalDividends, dividendsPerShare ); } // ERC20 Standard Functions function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return _decimals; } function totalSupply() public view returns (uint256) { return _totalSupply; } function balanceOf(address account) public view returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public returns (bool) { _transfer(msg.sender, recipient, amount); return true; } function allowance(address owner_, address spender) public view returns (uint256) { return _allowances[owner_][spender]; } function approve(address spender, uint256 amount) public returns (bool) { _approve(msg.sender, spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public returns (bool) { uint256 currentAllowance = _allowances[sender][msg.sender]; if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); _approve(sender, msg.sender, currentAllowance - amount); } _transfer(sender, recipient, amount); return true; } // Information functions function owner() public view returns (address) { return _owner; } function getHolderCount() public view returns (uint256) { return holders.length; } function isRewardsReady() public view returns (bool) { return block.timestamp >= lastProcessedTime + distributionInterval; } function getTimeUntilRewards() public view returns (uint256) { if (isRewardsReady()) return 0; return lastProcessedTime + distributionInterval - block.timestamp; } function getUnpaidEarnings(address account) public view returns (uint256) { if (holderInfo[account].amount == 0) return 0; uint256 earnedRewards = (dividendsPerShare * holderInfo[account].amount) / PRECISION_FACTOR; uint256 alreadyPaid = holderInfo[account].totalExcluded; if (earnedRewards <= alreadyPaid) return 0; return earnedRewards - alreadyPaid; } function getDistributionStatus() public view returns (uint256, uint256, uint256) { if (holders.length == 0) return (0, 0, 100); uint256 percentage = currentIndex * 100 / holders.length; return (holders.length, currentIndex, percentage); } // Internal functions function _transfer(address from, address to, uint256 amount) internal { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); // Check if trading is enabled when interacting with LP if (!tradingEnabled && (from == LP_PAIR || to == LP_PAIR)) { require(from == _owner || to == _owner, "Trading not enabled yet"); } // Auto-liquidity and swap bool canSwap = balanceOf(address(this)) >= swapThreshold; if (canSwap && !inSwap && from != LP_PAIR && from != _owner && to != _owner) { uint256 swapAmount = amount > swapThreshold ? swapThreshold : amount; _swapTokensForRewards(swapAmount); } // Fee system bool takeFee = !exempt[from] && !exempt[to]; uint256 fees = 0; if (takeFee) { if (from == LP_PAIR || to == LP_PAIR) { fees = amount * taxPercentage / 100; } if (fees > 0) { _takeFee(from, address(this), fees); amount -= fees; } } // Standard transfer _balances[from] -= amount; _balances[to] += amount; emit Transfer(from, to, amount); // Update holder tracking if (!excluded[from] && from != LP_PAIR) { _setShare(from, _balances[from]); } if (!excluded[to] && to != LP_PAIR) { _setShare(to, _balances[to]); } } function _approve(address owner_, address spender, uint256 amount) internal { 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 _takeFee(address from, address to, uint256 amount) internal { _balances[to] += amount; emit Transfer(from, to, amount); } // Optimized swap function function _swapTokensForRewards(uint256 amount) internal lockTheSwap returns (uint256) { // Setup swap path address[] memory path = new address[](2); path[0] = address(this); // SUPERRAIN token address path[1] = REWARD_TOKEN; // WRAPPED_SONIC address // Approve router _approve(address(this), ROUTER, amount); // Get initial balance of native SONIC uint256 initialBalance = address(this).balance; try IUniswapRouter(ROUTER).swapExactTokensForETHSupportingFeeOnTransferTokens( amount, 0, path, address(this), block.timestamp + 1200 // 20 minute deadline ) { // Calculate received native SONIC uint256 newBalance = address(this).balance; uint256 receivedSonic = newBalance - initialBalance; if (receivedSonic > 0 && totalShares > 0) { // Update dividends per share with higher precision totalDividends += receivedSonic; dividendsPerShare = totalDividends * PRECISION_FACTOR / totalShares; emit SwapAndDistribute(amount, receivedSonic); } return receivedSonic; } catch { // If swap fails, return 0 return 0; } } // Optimized reward distribution function function _distributeRewards(address holder) internal { // Skip if holder has zero balance or is excluded if (holderInfo[holder].amount == 0 || excluded[holder]) return; uint256 amount = getUnpaidEarnings(holder); if (amount > 0) { uint256 contractBalance = address(this).balance; if (amount <= contractBalance) { // Update holder's accounting first to prevent reentrancy holderInfo[holder].totalExcluded = (dividendsPerShare * holderInfo[holder].amount) / PRECISION_FACTOR; holderInfo[holder].pendingRewards = 0; // Send native SONIC (bool success, ) = holder.call{value: amount}(""); // Only emit event if transfer succeeded if (success) { emit RewardSent(holder, amount); } } } } // Optimized share tracking function function _setShare(address holder, uint256 amount) internal { // Only consider meaningful balances if (amount < 1 * 10**_decimals) { // Minimum 1 token if (amount == 0 && holderInfo[holder].amount > 0) { _removeHolder(holder); } return; } if (holderInfo[holder].amount > 0) { // Existing holder - update totalShares correctly if (amount == 0) { _removeHolder(holder); } else { uint256 oldAmount = holderInfo[holder].amount; // Update totalShares safely totalShares = totalShares - oldAmount + amount; // Update holder info holderInfo[holder].amount = amount; emit SharesUpdated(holder, amount); } } else { // New holder _addHolder(holder, amount); } } function _addHolder(address holder, uint256 amount) internal { // Check if holder already exists (safety check) if (holderIndexes[holder] > 0 || (holders.length > 0 && holders[0] == holder)) { return; } // Add to holders array holders.push(holder); holderIndexes[holder] = holders.length - 1; // Set holder info holderInfo[holder].amount = amount; totalShares += amount; emit SharesUpdated(holder, amount); } function _removeHolder(address holder) internal { // Make sure holder exists if (holders.length == 0 || (holderIndexes[holder] == 0 && holders[0] != holder) || holderIndexes[holder] >= holders.length) { return; } // Get holder amount before removal uint256 holderAmount = holderInfo[holder].amount; // Handle array removal address lastHolder = holders[holders.length - 1]; uint256 holderIndex = holderIndexes[holder]; // Replace with last element holders[holderIndex] = lastHolder; holderIndexes[lastHolder] = holderIndex; // Remove last element holders.pop(); delete holderIndexes[holder]; // Update totalShares totalShares -= holderAmount; // Clear holder info delete holderInfo[holder]; emit SharesUpdated(holder, 0); } // Rescue functions function rescueToken(address token, uint256 amount) external onlyOwner { IERC20(token).transfer(_owner, amount); } function withdrawETH() external onlyOwner { (bool success,) = _owner.call{value: address(this).balance}(""); require(success, "ETH withdrawal failed"); } // Receive function to accept ETH (native SONIC) receive() external payable {} }
{ "optimizer": { "enabled": true, "runs": 1000 }, "viaIR": true, "evmVersion": "paris", "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","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":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"Excluded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newDistributionInterval","type":"uint256"}],"name":"IntervalUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"holder","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RewardSent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"holderCount","type":"uint256"}],"name":"RewardsProcessed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"holder","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"SharesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"rewardAmount","type":"uint256"}],"name":"SwapAndDistribute","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newTaxPercentage","type":"uint256"}],"name":"TaxUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"TotalSharesUpdated","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":"LP_PAIR","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"REWARD_TOKEN","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":[],"name":"batchSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"distributionInterval","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dividendsPerShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"exempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getContractStatus","outputs":[{"internalType":"uint256","name":"totalHolders","type":"uint256"},{"internalType":"uint256","name":"tokenTotalSupply","type":"uint256"},{"internalType":"uint256","name":"contractTokenBalance","type":"uint256"},{"internalType":"uint256","name":"contractSonicBalance","type":"uint256"},{"internalType":"uint256","name":"trackedTotalShares","type":"uint256"},{"internalType":"uint256","name":"totalRewards","type":"uint256"},{"internalType":"uint256","name":"rewardPerShare","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDistributionStatus","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getHolderCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"getHolderInfo","outputs":[{"internalType":"bool","name":"isHolder","type":"bool"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"uint256","name":"pendingRewards","type":"uint256"},{"internalType":"uint256","name":"alreadyPaid","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRewardBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSwappableBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTimeUntilRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getUnpaidEarnings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"holderIndexes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"holderInfo","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"pendingRewards","type":"uint256"},{"internalType":"uint256","name":"totalExcluded","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isRewardsReady","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastProcessedTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"manualSwap","outputs":[{"internalType":"uint256","name":"swapped","type":"uint256"},{"internalType":"uint256","name":"received","type":"uint256"}],"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":"processAllRewards","outputs":[{"internalType":"uint256","name":"processed","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"batchSize","type":"uint256"}],"name":"processRewards","outputs":[{"internalType":"uint256","name":"processed","type":"uint256"},{"internalType":"uint256","name":"currentIdx","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"recalculateShares","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBatchSize","type":"uint256"}],"name":"setBatchSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newInterval","type":"uint256"}],"name":"setDistributionInterval","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setExcluded","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newPair","type":"address"}],"name":"setLPPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRewardToken","type":"address"}],"name":"setRewardToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newThreshold","type":"uint256"}],"name":"setSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTaxPercentage","type":"uint256"}],"name":"setTaxPercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxPercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalDividends","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"withdrawETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040523461029257610014600054610297565b601f8111610249575b507f536f6e696353757065725261696e00000000000000000000000000000000001c60005560015461004e90610297565b601f81116101ff575b5060066229a9a960e91b016001556005600881905561012c600a556032600b5580546001600160a01b03199081163390811783556a52b7d2dcc80cd2e4000000600281905560009182526006602052604080832091909155690a968163f0a57b4000006009556003805490931673039e2fb66102314ce7b64ce5ce3e5183bc94ad381790925591546001600160a01b03168083529120546100f7916102d1565b60025430156101ae5730600052600760205260406000207395a7e403d7cf20f675ff9273d66e94d35ba49fa3600052602052806040600020557395a7e403d7cf20f675ff9273d66e94d35ba49fa36040518281527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203092a360405190815260007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60203393a360405161273b90816104468239f35b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b6001600052601f0160051c7fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6908101905b81811061023d5750610057565b60008155600101610230565b60008052601f0160051c7f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563908101905b818110610286575061001d565b60008155600101610279565b600080fd5b90600182811c921680156102c7575b60208310146102b157565b634e487b7160e01b600052602260045260246000fd5b91607f16916102a6565b6001600160a01b03166000818152600f60205260409020549091901580159061040a575b61040657600e54680100000000000000008110156103f05760018101600e556000600e548210156103dc57600e90819052600080516020612b818339815191529190910180546001600160a01b031916841790555460009060001981019081116103c857838252600f60205260408220558281526010602052816040822055601154908282018092116103b457507fe6382c9ed5c0c33bb05042f73cf6cbe9cb25639f9a711e094ee563bc9cb80e2c91602091601155604051908152a2565b634e487b7160e01b81526011600452602490fd5b634e487b7160e01b82526011600452602482fd5b634e487b7160e01b81526032600452602490fd5b634e487b7160e01b600052604160045260246000fd5b5050565b50600e54151580156102f557506000600e54156103dc57600e9052600080516020612b81833981519152546001600160a01b031682146102f556fe608080604052600436101561001d575b50361561001b57600080fd5b005b60003560e01c9081630445b667146114bf5750806306fdde0314611404578063095ea7b3146113de57806318160ddd146113c057806323b872dd146112cc57806326987b60146112ae5780632836be24146111c057806328fd31981461119d578063313ce5671461118157806333f3d628146110c35780633a98ef39146110a5578063429cead1146110665780634ada218b1461104057806354e4067a14610f6d578063576f35e314610eba5780635e42b45514610e9e57806363c98ffa14610e80578063699abb3c14610e265780636d1d59a814610dcb57806370a0823114610d9357806371201a0e14610d755780637136982b14610d575780637a16a49e14610c8b578063880603d414610b6d5780638a8c523c14610ae65780638aee812714610a3c5780638da5cb5b14610a155780638f1b0efc146109e457806393a013e0146109bd57806395d89b41146108b957806399248ea714610892578063997664d7146108745780639d0014b1146107fb5780639fde54f5146107b2578063a1b140b614610775578063a9059cbb14610744578063ae7b6d1614610726578063b70143c914610652578063c032846b146105f7578063c07fbb8c146105bd578063cbdd9b30146105a2578063dd62ed3e1461054a578063de1c24d0146104ac578063e086e5ec14610427578063e2d2e21914610409578063e6ef675b146103df578063f1320af2146103a0578063f2fde38b146102dc578063f4daaba1146102be578063f74fe6be146102995763f96b88841461025b573861000f565b34610294576000366003190112610294576102826001600160a01b036005541633146115c3565b602061028c6119d0565b604051908152f35b600080fd5b346102945760003660031901126102945760206102b46119bb565b6040519015158152f35b34610294576000366003190112610294576020600b54604051908152f35b34610294576020366003190112610294576102f5611523565b600554906001600160a01b03808316916103108333146115c3565b1691821561035c578273ffffffffffffffffffffffffffffffffffffffff19927f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a31617600555005b606460405162461bcd60e51b815260206004820152602060248201527f4e6577206f776e65722063616e6e6f74206265207a65726f20616464726573736044820152fd5b34610294576020366003190112610294576001600160a01b036103c1611523565b166000526015602052602060ff604060002054166040519015158152f35b346102945760203660031901126102945760406103fd6004356117cc565b82519182526020820152f35b34610294576000366003190112610294576020601354604051908152f35b346102945760003660031901126102945760008080806001600160a01b03600554166104548133146115c3565b47905af161046061178c565b501561046857005b606460405162461bcd60e51b815260206004820152601560248201527f455448207769746864726177616c206661696c656400000000000000000000006044820152fd5b34610294576020366003190112610294576001600160a01b036104cd611523565b6104dc826005541633146115c3565b1680156105065773ffffffffffffffffffffffffffffffffffffffff196004541617600455600080f35b606460405162461bcd60e51b815260206004820152601e60248201527f4c5020706169722063616e6e6f74206265207a65726f206164647265737300006044820152fd5b3461029457604036600319011261029457610563611523565b6001600160a01b03610573611539565b911660005260076020526001600160a01b03604060002091166000526020526020604060002054604051908152f35b3461029457600036600319011261029457602061028c611762565b34610294576020366003190112610294576001600160a01b036105de611523565b16600052600f6020526020604060002054604051908152f35b346102945760003660031901126102945760e0600e5460025430600052600660205260406000205447601154906012549260135494604051968752602087015260408601526060850152608084015260a083015260c0820152f35b346102945760203660031901126102945760043561067c6001600160a01b036005541633146115c3565b3060005260066020526040600020549081156106e257604091811515806106d8575b156106ae57505b6103fd81612275565b6009549150811515806106ce575b156106c757506106a5565b90506106a5565b50818110156106bc565b508082111561069e565b606460405162461bcd60e51b815260206004820152601160248201527f4e6f20746f6b656e7320746f20737761700000000000000000000000000000006044820152fd5b34610294576000366003190112610294576020600854604051908152f35b346102945760403660031901126102945761076a610760611523565b6024359033611b76565b602060405160018152f35b34610294576000366003190112610294576107ae610791611727565b604080519384526020840192909252908201529081906060820190565b0390f35b346102945761001b6001600160a01b036107cb3661154f565b91906107dc826005541633146115c3565b16600052601560205260406000209060ff801983541691151516179055565b34610294576020366003190112610294576004356108256001600160a01b036005541633146115c3565b801561083057600955005b606460405162461bcd60e51b815260206004820152602060248201527f5468726573686f6c64206d7573742062652067726561746572207468616e20306044820152fd5b34610294576000366003190112610294576020601254604051908152f35b346102945760003660031901126102945760206001600160a01b0360035416604051908152f35b346102945760003660031901126102945760405160006001548060011c906001811680156109b3575b60208310811461099f5782855290811561097b575060011461091b575b6107ae8361090f8185038261157e565b604051918291826114da565b91905060016000527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6916000905b8082106109615750909150810160200161090f6108ff565b919260018160209254838588010152019101909291610949565b60ff191660208086019190915291151560051b8401909101915061090f90506108ff565b602484634e487b7160e01b81526022600452fd5b91607f16916108e2565b346102945760003660031901126102945760206001600160a01b0360045416604051908152f35b3461029457600036600319011261029457602061028c306001600160a01b0316600052600660205260406000205490565b346102945760003660031901126102945760206001600160a01b0360055416604051908152f35b34610294576020366003190112610294576001600160a01b03610a5d611523565b610a6c826005541633146115c3565b168015610a965773ffffffffffffffffffffffffffffffffffffffff196003541617600355600080f35b608460405162461bcd60e51b815260206004820152602360248201527f52657761726420746f6b656e2063616e6e6f74206265207a65726f206164647260448201526265737360e81b6064820152fd5b3461029457600036600319011261029457610b0d6001600160a01b036005541633146115c3565b60165460ff8160081c16610b295761ff00191661010017601655005b606460405162461bcd60e51b815260206004820152601760248201527f54726164696e6720616c726561647920656e61626c65640000000000000000006044820152fd5b3461029457600036600319011261029457610b946001600160a01b036005541633146115c3565b600060115560005b600e54811015610bf55780610bec6001600160a01b03610bbd6001946116ff565b90549060031b1c168060005260066020526040600020549060005260106020528060406000205560115461171a565b60115501610b9c565b6012548015801580610c80575b610c36575b7f3677ba94506ffc0a2e6968fe926b51985b6403fcc6b900d17c926b41079f93346020601154604051908152a1005b670de0b6b3a76400008202918204670de0b6b3a7640000141715610c6a57601154610c6091611621565b6013558080610c07565b634e487b7160e01b600052601160045260246000fd5b506011541515610c02565b3461029457602036600319011261029457600435610cb56001600160a01b036005541633146115c3565b603c8110610cee576020817fc6f44473d25b86976ee7357c1339328224e349abc5486edc3007ef658a57608a92600a55604051908152a1005b608460405162461bcd60e51b8152602060048201526024808201527f496e74657276616c206d757374206265206174206c656173742036302073656360448201527f6f6e6473000000000000000000000000000000000000000000000000000000006064820152fd5b34610294576000366003190112610294576020600e54604051908152f35b34610294576000366003190112610294576020600a54604051908152f35b3461029457602036600319011261029457602061028c610db1611523565b6001600160a01b0316600052600660205260406000205490565b34610294576020366003190112610294576001600160a01b03610dec611523565b166000526010602052604060002080546107ae60026001840154930154604051938493846040919493926060820195825260208201520152565b34610294576020366003190112610294577f35ad15e7f5e4a16b548e8916bd02c51847dde8d106f334b4edaaacf140e43c916020600435610e736001600160a01b036005541633146115c3565b80600855604051908152a1005b34610294576000366003190112610294576020600c54604051908152f35b3461029457600036600319011261029457602047604051908152f35b3461029457602036600319011261029457600435610ee46001600160a01b036005541633146115c3565b600581101580610f62575b15610ef957600b55005b608460405162461bcd60e51b8152602060048201526024808201527f42617463682073697a65206d757374206265206265747765656e203520616e6460448201527f20313030000000000000000000000000000000000000000000000000000000006064820152fd5b506064811115610eef565b346102945760203660031901126102945760a0610f88611523565b6000906001600160a01b03811680600052600f60205260406000205415801590611014575b61100b575b80600052600660205260406000205491816000526010602052610fda60406000205491611641565b9160005260106020526002604060002001549260405194151585526020850152604084015260608301526080820152f35b60019250610fb2565b50600e5415158015610fad5750806001600160a01b036110326116b6565b90549060031b1c1614610fad565b3461029457600036600319011261029457602060ff60165460081c166040519015158152f35b34610294576020366003190112610294576001600160a01b03611087611523565b166000526014602052602060ff604060002054166040519015158152f35b34610294576000366003190112610294576020601154604051908152f35b34610294576040366003190112610294576001600160a01b0360206110e6611523565b604483600554166110f88133146115c3565b600060405195869485937fa9059cbb00000000000000000000000000000000000000000000000000000000855260048501526024356024850152165af180156111755761114157005b6020813d60201161116d575b8161115a6020938361157e565b8101031261029457518015150361029457005b3d915061114d565b6040513d6000823e3d90fd5b3461029457600036600319011261029457602060405160128152f35b3461029457602036600319011261029457602061028c6111bb611523565b611641565b346102945760207ff3a7c8242f0708821ed31a47f066fc7fa42f2ae65ed3e4d1d7cb5b3765d2939c6111f13661154f565b61120a6001600160a01b036005959395541633146115c3565b6001600160a01b03841693846000526014835260ff6040600020541691801515809315150361123f575b5050604051908152a2005b85600052601484526112618160406000209060ff801983541691151516179055565b15611291578460005260108352604060002054611282575b505b8480611234565b61128b906120ba565b84611279565b6112a990856000526006845260406000205490611fd2565b61127b565b34610294576000366003190112610294576020600d54604051908152f35b34610294576060366003190112610294576112e5611523565b6112ed611539565b604435906001600160a01b038316600052600760205260406000206001600160a01b033316600052602052604060002054926000198403611333575b61076a9350611b76565b8284106113565761135161134a8461076a966115b6565b3383611a3c565b611329565b608460405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e63650000000000000000000000000000000000000000000000006064820152fd5b34610294576000366003190112610294576020600254604051908152f35b346102945760403660031901126102945761076a6113fa611523565b6024359033611a3c565b3461029457600036600319011261029457604051600080548060011c906001811680156114b5575b60208310811461099f5782855290811561097b5750600114611458576107ae8361090f8185038261157e565b60008080527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563939250905b80821061149b5750909150810160200161090f6108ff565b919260018160209254838588010152019101909291611483565b91607f169161142c565b34610294576000366003190112610294576020906009548152f35b91909160208152825180602083015260005b81811061150d575060409293506000838284010152601f8019910116010190565b80602080928701015160408286010152016114ec565b600435906001600160a01b038216820361029457565b602435906001600160a01b038216820361029457565b6040906003190112610294576004356001600160a01b0381168103610294579060243580151581036102945790565b90601f8019910116810190811067ffffffffffffffff8211176115a057604052565b634e487b7160e01b600052604160045260246000fd5b91908203918211610c6a57565b156115ca57565b606460405162461bcd60e51b815260206004820152601760248201527f43616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152fd5b81810292918115918404141715610c6a57565b811561162b570490565b634e487b7160e01b600052601260045260246000fd5b6001600160a01b0316806000526010602052604060002054156116b057670de0b6b3a76400006116826013548360005260106020526040600020549061160e565b04906000526010602052600260406000200154808211156116a9576116a6916115b6565b90565b5050600090565b50600090565b600e54156116e957600e60009081527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd91565b634e487b7160e01b600052603260045260246000fd5b600e548110156116e957600e60005260206000200190600090565b91908201809211610c6a57565b600e54801561175657600d54916064830283810460641484151715610c6a578261175091611621565b91929190565b50600090600090606490565b61176a6119bb565b611787576116a6611780600c54600a549061171a565b42906115b6565b600090565b3d156117c7573d9067ffffffffffffffff82116115a057604051916117bb601f8201601f19166020018461157e565b82523d6000602084013e565b606090565b906001600160a01b0360055416330361197757600e5491821561196e57600081156118e457505b809280611803600d54938461171a565b116118d1575b505081156118be5761181e600d54928361171a565b91805b8381106118855750826118449293600d55600e548082101561184b575b506115b6565b90600d5490565b60207fcbb46d9b69e77a6b5011c11cd2bf9be0461c9a1920e9f42678661cec154cd2a8916000600d5542600c55604051908152a13861183e565b600190600e548110611898575b01611821565b6118b96001600160a01b036118ac836116ff565b90549060031b1c16612535565b611892565b90506000600d5542600c55600090600090565b6118dc9293506115b6565b903880611809565b90506040517ff4daaba1000000000000000000000000000000000000000000000000000000008152602081600481305afa91821561196257809261192a575b50506117f3565b9091506020823d60201161195a575b816119466020938361157e565b810103126119575750513880611923565b80fd5b3d9150611939565b604051903d90823e3d90fd5b50600091508190565b606460405162461bcd60e51b815260206004820152601e60248201527f4f6e6c79206f776e65722063616e2070726f63657373207265776172647300006044820152fd5b6119ca600c54600a549061171a565b42101590565b600e54156117875760005b600e54811015611a0257806119fc6001600160a01b036118ac6001946116ff565b016119db565b506000600d5542600c55600e547fcbb46d9b69e77a6b5011c11cd2bf9be0461c9a1920e9f42678661cec154cd2a86020604051838152a190565b6001600160a01b0316908115611b0d576001600160a01b0316918215611aa35760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925918360005260078252604060002085600052825280604060002055604051908152a3565b608460405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152fd5b608460405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152fd5b6001600160a01b038116908115611f68576001600160a01b038316938415611f18578015611eae5782859160165460ff8160081c161580611e86575b611e0e575b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91602091306000526006835260406000205490600954809210159081611e02575b5080611ded575b80611dd8575b80611dc3575b611da1575b50836000526015825260ff604060002054161580611d89575b600090611d12575b5083600052600682526040600020611c4b8282546115b6565b905584600052600682526040600020611c6582825461171a565b9055604051908152a381600052601460205260ff604060002054161580611cfd575b611cde575b505081600052601460205260ff604060002054161580611cc9575b611caf575050565b611cc791600052600660205260406000205490611fd2565b565b506001600160a01b0360045416821415611ca7565b611cf691600052600660205260406000205490611fd2565b3880611c8c565b506001600160a01b0360045416821415611c87565b6001600160a01b0360045416808614908115611d7f575b50611d6a575b8015611c3257611d649130600052600684526040600020611d5183825461171a565b90556040518281528686863093a36115b6565b38611c32565b506064611d796008548361160e565b04611d2f565b9050861438611d29565b50846000526015825260ff6040600020541615611c2a565b80821115611db957611db290612275565b5038611c11565b50611db281612275565b506001600160a01b0360055416861415611c0c565b506001600160a01b0360055416851415611c06565b506001600160a01b0360045416851415611c00565b60ff9150161538611bf9565b915091506001600160a01b0360055416808514908115611e7c575b5015611e385785918491611bb7565b606460405162461bcd60e51b815260206004820152601760248201527f54726164696e67206e6f7420656e61626c6564207965740000000000000000006044820152fd5b9050861438611e29565b506001600160a01b0360045416808414908115611ea4575b50611bb2565b9050841438611e9e565b608460405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152fd5b608460405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152fd5b608460405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152fd5b670de0b6b3a76400008210612082576001600160a01b03811691826000526010602052604060002054151560001461207757806120145750611cc791506120ba565b7fe6382c9ed5c0c33bb05042f73cf6cbe9cb25639f9a711e094ee563bc9cb80e2c9150602090836000526010825261205c816120576040600020546011546115b6565b61171a565b601155836000526010825280604060002055604051908152a2565b90611cc79250612620565b90158061209a575b6120915750565b611cc7906120ba565b506001600160a01b0381166000526010602052604060002054151561208a565b600e54908115801561222b575b801561220a575b612206576001600160a01b031690816000526010602052604060002054906000198101908111610c6a576121096001600160a01b03916116ff565b90549060031b1c1682600052600f6020526040600020549061214d8161212e846116ff565b9091906001600160a01b038084549260031b9316831b921b1916179055565b600052600f602052604060002055600e549081156121f0576121a49160001901612176816116ff565b6001600160a01b0382549160031b1b19169055600e5582600052600f602052600060408120556011546115b6565b601155806000526010602052600060026040822082815582600182015501557fe6382c9ed5c0c33bb05042f73cf6cbe9cb25639f9a711e094ee563bc9cb80e2c602060405160008152a2565b634e487b7160e01b600052603160045260246000fd5b5050565b506001600160a01b038116600052600f6020528160406000205410156120ce565b506001600160a01b03811680600052600f602052604060002054159081612253575b506120c7565b90506001600160a01b036122656116b6565b90549060031b1c1614153861224d565b61228b90600160ff196016541617601655612298565b9060ff1960165416601655565b6000906040516122a960608261157e565b6002815260208101906040368337805115612521573082526001600160a01b036003541681516001101561250d5760408201523015611b0d573084526007602052604084207395a7e403d7cf20f675ff9273d66e94d35ba49fa385526020528260408520557395a7e403d7cf20f675ff9273d66e94d35ba49fa36040518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203092a347916104b042018042116124f9577395a7e403d7cf20f675ff9273d66e94d35ba49fa33b156124f5579185916040519384927f791ac94700000000000000000000000000000000000000000000000000000000845260a484019088600486015285602486015260a060448601525180915260c484019290855b8181106124d057505030606485015250608483015281900381837395a7e403d7cf20f675ff9273d66e94d35ba49fa35af190816124bc575b5061240a57505090565b61241490476115b6565b91821515806124b1575b61242757505090565b6124338360125461171a565b9081601255670de0b6b3a7640000820291808304670de0b6b3a7640000149015171561249d57507f10da9408d1358808fea34ded33d675db0ba8e618a2fb814298059b2a6b0a473f9161248b60409260115490611621565b6013558151908152836020820152a190565b80634e487b7160e01b602492526011600452fd5b50601154151561241e565b846124c99195929561157e565b9238612400565b82516001600160a01b031685528a9650879550602094850194909201916001016123c8565b8580fd5b602486634e487b7160e01b81526011600452fd5b602485634e487b7160e01b81526032600452fd5b602484634e487b7160e01b81526032600452fd5b6001600160a01b03811690816000526010602052604060002054158015612608575b6122065761256481611641565b9081612570575b505050565b4782111561257d57505050565b60008080848194670de0b6b3a76400006125a66013548a8652601060205260408620549061160e565b048884526010602052600260408520015587835260106020528260016040822001555af16125d261178c565b506125db575050565b60207f6177f4110771217c72937d51f3a73915f2c714a6b98507e17eea7a186136a24a91604051908152a2565b5081600052601460205260ff60406000205416612557565b906001600160a01b0382169182600052600f602052604060002054158015906126d9575b61256b57600e5490680100000000000000008210156115a05761212e8260016126709401600e556116ff565b600e546000198101908111610c6a577fe6382c9ed5c0c33bb05042f73cf6cbe9cb25639f9a711e094ee563bc9cb80e2c9160209184600052600f83526040600020558360005260108252806040600020556126cd8160115461171a565b601155604051908152a2565b50600e54151580156126445750826001600160a01b036126f76116b6565b90549060031b1c161461264456fea26469706673582212203608c89ffa25b8fd9ca72abf410b8086f24bb3154b8c37f17ac8af4a75d7217564736f6c634300081c0033bb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd
Deployed Bytecode
0x608080604052600436101561001d575b50361561001b57600080fd5b005b60003560e01c9081630445b667146114bf5750806306fdde0314611404578063095ea7b3146113de57806318160ddd146113c057806323b872dd146112cc57806326987b60146112ae5780632836be24146111c057806328fd31981461119d578063313ce5671461118157806333f3d628146110c35780633a98ef39146110a5578063429cead1146110665780634ada218b1461104057806354e4067a14610f6d578063576f35e314610eba5780635e42b45514610e9e57806363c98ffa14610e80578063699abb3c14610e265780636d1d59a814610dcb57806370a0823114610d9357806371201a0e14610d755780637136982b14610d575780637a16a49e14610c8b578063880603d414610b6d5780638a8c523c14610ae65780638aee812714610a3c5780638da5cb5b14610a155780638f1b0efc146109e457806393a013e0146109bd57806395d89b41146108b957806399248ea714610892578063997664d7146108745780639d0014b1146107fb5780639fde54f5146107b2578063a1b140b614610775578063a9059cbb14610744578063ae7b6d1614610726578063b70143c914610652578063c032846b146105f7578063c07fbb8c146105bd578063cbdd9b30146105a2578063dd62ed3e1461054a578063de1c24d0146104ac578063e086e5ec14610427578063e2d2e21914610409578063e6ef675b146103df578063f1320af2146103a0578063f2fde38b146102dc578063f4daaba1146102be578063f74fe6be146102995763f96b88841461025b573861000f565b34610294576000366003190112610294576102826001600160a01b036005541633146115c3565b602061028c6119d0565b604051908152f35b600080fd5b346102945760003660031901126102945760206102b46119bb565b6040519015158152f35b34610294576000366003190112610294576020600b54604051908152f35b34610294576020366003190112610294576102f5611523565b600554906001600160a01b03808316916103108333146115c3565b1691821561035c578273ffffffffffffffffffffffffffffffffffffffff19927f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a31617600555005b606460405162461bcd60e51b815260206004820152602060248201527f4e6577206f776e65722063616e6e6f74206265207a65726f20616464726573736044820152fd5b34610294576020366003190112610294576001600160a01b036103c1611523565b166000526015602052602060ff604060002054166040519015158152f35b346102945760203660031901126102945760406103fd6004356117cc565b82519182526020820152f35b34610294576000366003190112610294576020601354604051908152f35b346102945760003660031901126102945760008080806001600160a01b03600554166104548133146115c3565b47905af161046061178c565b501561046857005b606460405162461bcd60e51b815260206004820152601560248201527f455448207769746864726177616c206661696c656400000000000000000000006044820152fd5b34610294576020366003190112610294576001600160a01b036104cd611523565b6104dc826005541633146115c3565b1680156105065773ffffffffffffffffffffffffffffffffffffffff196004541617600455600080f35b606460405162461bcd60e51b815260206004820152601e60248201527f4c5020706169722063616e6e6f74206265207a65726f206164647265737300006044820152fd5b3461029457604036600319011261029457610563611523565b6001600160a01b03610573611539565b911660005260076020526001600160a01b03604060002091166000526020526020604060002054604051908152f35b3461029457600036600319011261029457602061028c611762565b34610294576020366003190112610294576001600160a01b036105de611523565b16600052600f6020526020604060002054604051908152f35b346102945760003660031901126102945760e0600e5460025430600052600660205260406000205447601154906012549260135494604051968752602087015260408601526060850152608084015260a083015260c0820152f35b346102945760203660031901126102945760043561067c6001600160a01b036005541633146115c3565b3060005260066020526040600020549081156106e257604091811515806106d8575b156106ae57505b6103fd81612275565b6009549150811515806106ce575b156106c757506106a5565b90506106a5565b50818110156106bc565b508082111561069e565b606460405162461bcd60e51b815260206004820152601160248201527f4e6f20746f6b656e7320746f20737761700000000000000000000000000000006044820152fd5b34610294576000366003190112610294576020600854604051908152f35b346102945760403660031901126102945761076a610760611523565b6024359033611b76565b602060405160018152f35b34610294576000366003190112610294576107ae610791611727565b604080519384526020840192909252908201529081906060820190565b0390f35b346102945761001b6001600160a01b036107cb3661154f565b91906107dc826005541633146115c3565b16600052601560205260406000209060ff801983541691151516179055565b34610294576020366003190112610294576004356108256001600160a01b036005541633146115c3565b801561083057600955005b606460405162461bcd60e51b815260206004820152602060248201527f5468726573686f6c64206d7573742062652067726561746572207468616e20306044820152fd5b34610294576000366003190112610294576020601254604051908152f35b346102945760003660031901126102945760206001600160a01b0360035416604051908152f35b346102945760003660031901126102945760405160006001548060011c906001811680156109b3575b60208310811461099f5782855290811561097b575060011461091b575b6107ae8361090f8185038261157e565b604051918291826114da565b91905060016000527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6916000905b8082106109615750909150810160200161090f6108ff565b919260018160209254838588010152019101909291610949565b60ff191660208086019190915291151560051b8401909101915061090f90506108ff565b602484634e487b7160e01b81526022600452fd5b91607f16916108e2565b346102945760003660031901126102945760206001600160a01b0360045416604051908152f35b3461029457600036600319011261029457602061028c306001600160a01b0316600052600660205260406000205490565b346102945760003660031901126102945760206001600160a01b0360055416604051908152f35b34610294576020366003190112610294576001600160a01b03610a5d611523565b610a6c826005541633146115c3565b168015610a965773ffffffffffffffffffffffffffffffffffffffff196003541617600355600080f35b608460405162461bcd60e51b815260206004820152602360248201527f52657761726420746f6b656e2063616e6e6f74206265207a65726f206164647260448201526265737360e81b6064820152fd5b3461029457600036600319011261029457610b0d6001600160a01b036005541633146115c3565b60165460ff8160081c16610b295761ff00191661010017601655005b606460405162461bcd60e51b815260206004820152601760248201527f54726164696e6720616c726561647920656e61626c65640000000000000000006044820152fd5b3461029457600036600319011261029457610b946001600160a01b036005541633146115c3565b600060115560005b600e54811015610bf55780610bec6001600160a01b03610bbd6001946116ff565b90549060031b1c168060005260066020526040600020549060005260106020528060406000205560115461171a565b60115501610b9c565b6012548015801580610c80575b610c36575b7f3677ba94506ffc0a2e6968fe926b51985b6403fcc6b900d17c926b41079f93346020601154604051908152a1005b670de0b6b3a76400008202918204670de0b6b3a7640000141715610c6a57601154610c6091611621565b6013558080610c07565b634e487b7160e01b600052601160045260246000fd5b506011541515610c02565b3461029457602036600319011261029457600435610cb56001600160a01b036005541633146115c3565b603c8110610cee576020817fc6f44473d25b86976ee7357c1339328224e349abc5486edc3007ef658a57608a92600a55604051908152a1005b608460405162461bcd60e51b8152602060048201526024808201527f496e74657276616c206d757374206265206174206c656173742036302073656360448201527f6f6e6473000000000000000000000000000000000000000000000000000000006064820152fd5b34610294576000366003190112610294576020600e54604051908152f35b34610294576000366003190112610294576020600a54604051908152f35b3461029457602036600319011261029457602061028c610db1611523565b6001600160a01b0316600052600660205260406000205490565b34610294576020366003190112610294576001600160a01b03610dec611523565b166000526010602052604060002080546107ae60026001840154930154604051938493846040919493926060820195825260208201520152565b34610294576020366003190112610294577f35ad15e7f5e4a16b548e8916bd02c51847dde8d106f334b4edaaacf140e43c916020600435610e736001600160a01b036005541633146115c3565b80600855604051908152a1005b34610294576000366003190112610294576020600c54604051908152f35b3461029457600036600319011261029457602047604051908152f35b3461029457602036600319011261029457600435610ee46001600160a01b036005541633146115c3565b600581101580610f62575b15610ef957600b55005b608460405162461bcd60e51b8152602060048201526024808201527f42617463682073697a65206d757374206265206265747765656e203520616e6460448201527f20313030000000000000000000000000000000000000000000000000000000006064820152fd5b506064811115610eef565b346102945760203660031901126102945760a0610f88611523565b6000906001600160a01b03811680600052600f60205260406000205415801590611014575b61100b575b80600052600660205260406000205491816000526010602052610fda60406000205491611641565b9160005260106020526002604060002001549260405194151585526020850152604084015260608301526080820152f35b60019250610fb2565b50600e5415158015610fad5750806001600160a01b036110326116b6565b90549060031b1c1614610fad565b3461029457600036600319011261029457602060ff60165460081c166040519015158152f35b34610294576020366003190112610294576001600160a01b03611087611523565b166000526014602052602060ff604060002054166040519015158152f35b34610294576000366003190112610294576020601154604051908152f35b34610294576040366003190112610294576001600160a01b0360206110e6611523565b604483600554166110f88133146115c3565b600060405195869485937fa9059cbb00000000000000000000000000000000000000000000000000000000855260048501526024356024850152165af180156111755761114157005b6020813d60201161116d575b8161115a6020938361157e565b8101031261029457518015150361029457005b3d915061114d565b6040513d6000823e3d90fd5b3461029457600036600319011261029457602060405160128152f35b3461029457602036600319011261029457602061028c6111bb611523565b611641565b346102945760207ff3a7c8242f0708821ed31a47f066fc7fa42f2ae65ed3e4d1d7cb5b3765d2939c6111f13661154f565b61120a6001600160a01b036005959395541633146115c3565b6001600160a01b03841693846000526014835260ff6040600020541691801515809315150361123f575b5050604051908152a2005b85600052601484526112618160406000209060ff801983541691151516179055565b15611291578460005260108352604060002054611282575b505b8480611234565b61128b906120ba565b84611279565b6112a990856000526006845260406000205490611fd2565b61127b565b34610294576000366003190112610294576020600d54604051908152f35b34610294576060366003190112610294576112e5611523565b6112ed611539565b604435906001600160a01b038316600052600760205260406000206001600160a01b033316600052602052604060002054926000198403611333575b61076a9350611b76565b8284106113565761135161134a8461076a966115b6565b3383611a3c565b611329565b608460405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e63650000000000000000000000000000000000000000000000006064820152fd5b34610294576000366003190112610294576020600254604051908152f35b346102945760403660031901126102945761076a6113fa611523565b6024359033611a3c565b3461029457600036600319011261029457604051600080548060011c906001811680156114b5575b60208310811461099f5782855290811561097b5750600114611458576107ae8361090f8185038261157e565b60008080527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563939250905b80821061149b5750909150810160200161090f6108ff565b919260018160209254838588010152019101909291611483565b91607f169161142c565b34610294576000366003190112610294576020906009548152f35b91909160208152825180602083015260005b81811061150d575060409293506000838284010152601f8019910116010190565b80602080928701015160408286010152016114ec565b600435906001600160a01b038216820361029457565b602435906001600160a01b038216820361029457565b6040906003190112610294576004356001600160a01b0381168103610294579060243580151581036102945790565b90601f8019910116810190811067ffffffffffffffff8211176115a057604052565b634e487b7160e01b600052604160045260246000fd5b91908203918211610c6a57565b156115ca57565b606460405162461bcd60e51b815260206004820152601760248201527f43616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152fd5b81810292918115918404141715610c6a57565b811561162b570490565b634e487b7160e01b600052601260045260246000fd5b6001600160a01b0316806000526010602052604060002054156116b057670de0b6b3a76400006116826013548360005260106020526040600020549061160e565b04906000526010602052600260406000200154808211156116a9576116a6916115b6565b90565b5050600090565b50600090565b600e54156116e957600e60009081527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd91565b634e487b7160e01b600052603260045260246000fd5b600e548110156116e957600e60005260206000200190600090565b91908201809211610c6a57565b600e54801561175657600d54916064830283810460641484151715610c6a578261175091611621565b91929190565b50600090600090606490565b61176a6119bb565b611787576116a6611780600c54600a549061171a565b42906115b6565b600090565b3d156117c7573d9067ffffffffffffffff82116115a057604051916117bb601f8201601f19166020018461157e565b82523d6000602084013e565b606090565b906001600160a01b0360055416330361197757600e5491821561196e57600081156118e457505b809280611803600d54938461171a565b116118d1575b505081156118be5761181e600d54928361171a565b91805b8381106118855750826118449293600d55600e548082101561184b575b506115b6565b90600d5490565b60207fcbb46d9b69e77a6b5011c11cd2bf9be0461c9a1920e9f42678661cec154cd2a8916000600d5542600c55604051908152a13861183e565b600190600e548110611898575b01611821565b6118b96001600160a01b036118ac836116ff565b90549060031b1c16612535565b611892565b90506000600d5542600c55600090600090565b6118dc9293506115b6565b903880611809565b90506040517ff4daaba1000000000000000000000000000000000000000000000000000000008152602081600481305afa91821561196257809261192a575b50506117f3565b9091506020823d60201161195a575b816119466020938361157e565b810103126119575750513880611923565b80fd5b3d9150611939565b604051903d90823e3d90fd5b50600091508190565b606460405162461bcd60e51b815260206004820152601e60248201527f4f6e6c79206f776e65722063616e2070726f63657373207265776172647300006044820152fd5b6119ca600c54600a549061171a565b42101590565b600e54156117875760005b600e54811015611a0257806119fc6001600160a01b036118ac6001946116ff565b016119db565b506000600d5542600c55600e547fcbb46d9b69e77a6b5011c11cd2bf9be0461c9a1920e9f42678661cec154cd2a86020604051838152a190565b6001600160a01b0316908115611b0d576001600160a01b0316918215611aa35760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925918360005260078252604060002085600052825280604060002055604051908152a3565b608460405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152fd5b608460405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152fd5b6001600160a01b038116908115611f68576001600160a01b038316938415611f18578015611eae5782859160165460ff8160081c161580611e86575b611e0e575b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91602091306000526006835260406000205490600954809210159081611e02575b5080611ded575b80611dd8575b80611dc3575b611da1575b50836000526015825260ff604060002054161580611d89575b600090611d12575b5083600052600682526040600020611c4b8282546115b6565b905584600052600682526040600020611c6582825461171a565b9055604051908152a381600052601460205260ff604060002054161580611cfd575b611cde575b505081600052601460205260ff604060002054161580611cc9575b611caf575050565b611cc791600052600660205260406000205490611fd2565b565b506001600160a01b0360045416821415611ca7565b611cf691600052600660205260406000205490611fd2565b3880611c8c565b506001600160a01b0360045416821415611c87565b6001600160a01b0360045416808614908115611d7f575b50611d6a575b8015611c3257611d649130600052600684526040600020611d5183825461171a565b90556040518281528686863093a36115b6565b38611c32565b506064611d796008548361160e565b04611d2f565b9050861438611d29565b50846000526015825260ff6040600020541615611c2a565b80821115611db957611db290612275565b5038611c11565b50611db281612275565b506001600160a01b0360055416861415611c0c565b506001600160a01b0360055416851415611c06565b506001600160a01b0360045416851415611c00565b60ff9150161538611bf9565b915091506001600160a01b0360055416808514908115611e7c575b5015611e385785918491611bb7565b606460405162461bcd60e51b815260206004820152601760248201527f54726164696e67206e6f7420656e61626c6564207965740000000000000000006044820152fd5b9050861438611e29565b506001600160a01b0360045416808414908115611ea4575b50611bb2565b9050841438611e9e565b608460405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152fd5b608460405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152fd5b608460405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152fd5b670de0b6b3a76400008210612082576001600160a01b03811691826000526010602052604060002054151560001461207757806120145750611cc791506120ba565b7fe6382c9ed5c0c33bb05042f73cf6cbe9cb25639f9a711e094ee563bc9cb80e2c9150602090836000526010825261205c816120576040600020546011546115b6565b61171a565b601155836000526010825280604060002055604051908152a2565b90611cc79250612620565b90158061209a575b6120915750565b611cc7906120ba565b506001600160a01b0381166000526010602052604060002054151561208a565b600e54908115801561222b575b801561220a575b612206576001600160a01b031690816000526010602052604060002054906000198101908111610c6a576121096001600160a01b03916116ff565b90549060031b1c1682600052600f6020526040600020549061214d8161212e846116ff565b9091906001600160a01b038084549260031b9316831b921b1916179055565b600052600f602052604060002055600e549081156121f0576121a49160001901612176816116ff565b6001600160a01b0382549160031b1b19169055600e5582600052600f602052600060408120556011546115b6565b601155806000526010602052600060026040822082815582600182015501557fe6382c9ed5c0c33bb05042f73cf6cbe9cb25639f9a711e094ee563bc9cb80e2c602060405160008152a2565b634e487b7160e01b600052603160045260246000fd5b5050565b506001600160a01b038116600052600f6020528160406000205410156120ce565b506001600160a01b03811680600052600f602052604060002054159081612253575b506120c7565b90506001600160a01b036122656116b6565b90549060031b1c1614153861224d565b61228b90600160ff196016541617601655612298565b9060ff1960165416601655565b6000906040516122a960608261157e565b6002815260208101906040368337805115612521573082526001600160a01b036003541681516001101561250d5760408201523015611b0d573084526007602052604084207395a7e403d7cf20f675ff9273d66e94d35ba49fa385526020528260408520557395a7e403d7cf20f675ff9273d66e94d35ba49fa36040518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203092a347916104b042018042116124f9577395a7e403d7cf20f675ff9273d66e94d35ba49fa33b156124f5579185916040519384927f791ac94700000000000000000000000000000000000000000000000000000000845260a484019088600486015285602486015260a060448601525180915260c484019290855b8181106124d057505030606485015250608483015281900381837395a7e403d7cf20f675ff9273d66e94d35ba49fa35af190816124bc575b5061240a57505090565b61241490476115b6565b91821515806124b1575b61242757505090565b6124338360125461171a565b9081601255670de0b6b3a7640000820291808304670de0b6b3a7640000149015171561249d57507f10da9408d1358808fea34ded33d675db0ba8e618a2fb814298059b2a6b0a473f9161248b60409260115490611621565b6013558151908152836020820152a190565b80634e487b7160e01b602492526011600452fd5b50601154151561241e565b846124c99195929561157e565b9238612400565b82516001600160a01b031685528a9650879550602094850194909201916001016123c8565b8580fd5b602486634e487b7160e01b81526011600452fd5b602485634e487b7160e01b81526032600452fd5b602484634e487b7160e01b81526032600452fd5b6001600160a01b03811690816000526010602052604060002054158015612608575b6122065761256481611641565b9081612570575b505050565b4782111561257d57505050565b60008080848194670de0b6b3a76400006125a66013548a8652601060205260408620549061160e565b048884526010602052600260408520015587835260106020528260016040822001555af16125d261178c565b506125db575050565b60207f6177f4110771217c72937d51f3a73915f2c714a6b98507e17eea7a186136a24a91604051908152a2565b5081600052601460205260ff60406000205416612557565b906001600160a01b0382169182600052600f602052604060002054158015906126d9575b61256b57600e5490680100000000000000008210156115a05761212e8260016126709401600e556116ff565b600e546000198101908111610c6a577fe6382c9ed5c0c33bb05042f73cf6cbe9cb25639f9a711e094ee563bc9cb80e2c9160209184600052600f83526040600020558360005260108252806040600020556126cd8160115461171a565b601155604051908152a2565b50600e54151580156126445750826001600160a01b036126f76116b6565b90549060031b1c161461264456fea26469706673582212203608c89ffa25b8fd9ca72abf410b8086f24bb3154b8c37f17ac8af4a75d7217564736f6c634300081c0033
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.