ERC-20
Overview
Max Total Supply
100,000,000 FLOCK
Holders
34
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
1,551,748.317910964184370042 FLOCKValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Name:
AHuntersBless
Compiler Version
v0.8.13+commit.abaa5c0e
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.13; interface IERC20 { function totalSupply() external view returns (uint256); function decimals() external view returns (uint8); function symbol() external view returns (string memory); function name() external view returns (string memory); function getOwner() external view returns (address); 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); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } interface IUniswapERC20 { 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; } interface IUniswapFactory { 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 IUniswapRouter01 { 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 factory() external pure returns (address); function WETH() external pure returns (address); 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 IUniswapRouter02 is IUniswapRouter01 { 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; } abstract contract Ownable { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = msg.sender; _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(owner() == msg.sender, "Ownable: caller is not the owner"); _; } function renounceOwnership() public onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } library Address { function isContract(address account) internal view returns (bool) { uint256 size; assembly { size := extcodesize(account) } return size > 0; } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } 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"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{ value: value }(data); return _verifyCallResult(success, returndata, errorMessage); } function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) { if (success) { return returndata; } else { if (returndata.length > 0) { assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } library EnumerableSet { struct Set { bytes32[] _values; mapping (bytes32 => uint256) _indexes; } function _add(Set storage set, bytes32 value) private returns (bool) { if (!_contains(set, value)) { set._values.push(value); set._indexes[value] = set._values.length; return true; } else { return false; } } function _remove(Set storage set, bytes32 value) private returns (bool) { uint256 valueIndex = set._indexes[value]; if (valueIndex != 0) { uint256 toDeleteIndex = valueIndex - 1; uint256 lastIndex = set._values.length - 1; bytes32 lastvalue = set._values[lastIndex]; set._values[toDeleteIndex] = lastvalue; set._indexes[lastvalue] = valueIndex; set._values.pop(); delete set._indexes[value]; return true; } else { return false; } } function _contains(Set storage set, bytes32 value) private view returns (bool) { return set._indexes[value] != 0; } function _length(Set storage set) private view returns (uint256) { return set._values.length; } function _at(Set storage set, uint256 index) private view returns (bytes32) { require(set._values.length > index, "EnumerableSet: index out of bounds"); return set._values[index]; } struct Bytes32Set { Set _inner; } function add(Bytes32Set storage set, bytes32 value) internal returns (bool) { return _add(set._inner, value); } function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) { return _remove(set._inner, value); } function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) { return _contains(set._inner, value); } function length(Bytes32Set storage set) internal view returns (uint256) { return _length(set._inner); } function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) { return _at(set._inner, index); } struct AddressSet { Set _inner; } function add(AddressSet storage set, address value) internal returns (bool) { return _add(set._inner, bytes32(uint256(uint160(value)))); } function remove(AddressSet storage set, address value) internal returns (bool) { return _remove(set._inner, bytes32(uint256(uint160(value)))); } function contains(AddressSet storage set, address value) internal view returns (bool) { return _contains(set._inner, bytes32(uint256(uint160(value)))); } function length(AddressSet storage set) internal view returns (uint256) { return _length(set._inner); } function at(AddressSet storage set, uint256 index) internal view returns (address) { return address(uint160(uint256(_at(set._inner, index)))); } struct UintSet { Set _inner; } function add(UintSet storage set, uint256 value) internal returns (bool) { return _add(set._inner, bytes32(value)); } function remove(UintSet storage set, uint256 value) internal returns (bool) { return _remove(set._inner, bytes32(value)); } function contains(UintSet storage set, uint256 value) internal view returns (bool) { return _contains(set._inner, bytes32(value)); } function length(UintSet storage set) internal view returns (uint256) { return _length(set._inner); } function at(UintSet storage set, uint256 index) internal view returns (uint256) { return uint256(_at(set._inner, index)); } } contract AHuntersBless is IERC20, Ownable { using Address for address; using EnumerableSet for EnumerableSet.AddressSet; mapping (address => uint256) public _balances; mapping (address => mapping (address => uint256)) public _allowances; mapping (address => uint256) public _sellLock; EnumerableSet.AddressSet private _excluded; EnumerableSet.AddressSet private _excludedFromSellLock; mapping (address => bool) public _blacklist; bool isBlacklist = true; string public constant _name = "A Hunters Bless"; string public constant _symbol = "FLOCK"; uint8 public constant _decimals = 18; uint256 public constant InitialSupply= 1e8 * 10**_decimals; uint256 swapLimit = 1e4 * 10**_decimals; bool isSwapPegged = true; uint16 public BuyLimitDivider = 50; // 2% uint8 public BalanceLimitDivider = 50; // 2% uint16 public SellLimitDivider = 125; // 0.75% uint16 public MaxSellLockTime = 10 seconds; mapping (address => bool) isAuth; address public constant UniswapRouter = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; address public constant Dead = 0x000000000000000000000000000000000000dEaD; uint256 public _circulatingSupply =InitialSupply; uint256 public balanceLimit = _circulatingSupply; uint256 public sellLimit = _circulatingSupply; uint256 public buyLimit = _circulatingSupply; uint8 public _buyTax; uint8 public _sellTax; uint8 public _transferTax; uint8 public _liquidityTax; uint8 public _buyburnTax; bool isTokenSwapManual = false; bool public bot_killer = true; bool public gasSaver = true; address public claimAddress; address public target_token = 0xf3b9569F82B18aEf890De263B84189bd33EBe452; address public community_token; address payable private unclog; bool public community_enabled; address public _UniswapPairAddress; IUniswapRouter02 public _UniswapRouter; modifier onlyAuth() { require(_isAuth(msg.sender), "Caller not in Auth"); _; } function _isAuth(address addr) private view returns (bool){ return addr==owner()||isAuth[addr]; } constructor (address unclg) { uint256 deployerBalance=_circulatingSupply*95/100; _balances[msg.sender] = deployerBalance; emit Transfer(address(0), msg.sender, deployerBalance); uint256 injectBalance=_circulatingSupply-deployerBalance; _balances[address(this)]=injectBalance; emit Transfer(address(0), address(this),injectBalance); _UniswapRouter = IUniswapRouter02(UniswapRouter); _UniswapPairAddress = IUniswapFactory(_UniswapRouter.factory()).createPair(address(this), _UniswapRouter.WETH()); balanceLimit=InitialSupply/BalanceLimitDivider; sellLimit=InitialSupply/SellLimitDivider; buyLimit=InitialSupply/BuyLimitDivider; sellLockTime=2 seconds; _buyTax=5; _sellTax=5; _transferTax=5; _liquidityTax=70; _buyburnTax=30; unclog = payable(unclg); _excluded.add(msg.sender); _excluded.add(unclog); _excludedFromSellLock.add(UniswapRouter); _excludedFromSellLock.add(_UniswapPairAddress); _excludedFromSellLock.add(address(this)); _excludedFromSellLock.add(unclog); } function _transfer(address sender, address recipient, uint256 amount) private{ require(sender != address(0), "Transfer from zero"); require(recipient != address(0), "Transfer to zero"); if(isBlacklist) { require(!_blacklist[sender] && !_blacklist[recipient], "Blacklisted!"); } bool isClaim = sender==claimAddress; bool isExcluded = (_excluded.contains(sender) || _excluded.contains(recipient) || isAuth[sender] || isAuth[recipient]); bool isContractTransfer=(sender==address(this) || recipient==address(this)); bool isLiquidityTransfer = ((sender == _UniswapPairAddress && recipient == UniswapRouter) || (recipient == _UniswapPairAddress && sender == UniswapRouter)); if(isContractTransfer || isLiquidityTransfer || isExcluded || isClaim){ _feelessTransfer(sender, recipient, amount); } else{ if (!tradingEnabled) { if (sender != owner() && recipient != owner()) { if (bot_killer) { emit Transfer(sender,recipient,0); return; } else { require(tradingEnabled,"trading not yet enabled"); } } } bool isBuy=sender==_UniswapPairAddress|| sender == UniswapRouter; bool isSell=recipient==_UniswapPairAddress|| recipient == UniswapRouter; _taxedTransfer(sender,recipient,amount,isBuy,isSell); if(gasSaver) { delete isBuy; delete isSell; delete isClaim; delete isContractTransfer; delete isExcluded; delete isLiquidityTransfer; } } } function _taxedTransfer(address sender, address recipient, uint256 amount,bool isBuy,bool isSell) private{ uint256 recipientBalance = _balances[recipient]; uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "Transfer exceeds balance"); swapLimit = sellLimit/2; uint8 tax; if(isSell){ if(!_excludedFromSellLock.contains(sender)){ require(_sellLock[sender]<=block.timestamp||sellLockDisabled,"Seller in sellLock"); _sellLock[sender]=block.timestamp+sellLockTime; } require(amount<=sellLimit,"Dump protection"); tax=_sellTax; } else if(isBuy){ require(recipientBalance+amount<=balanceLimit,"whale protection"); require(amount<=buyLimit, "whale protection"); tax=_buyTax; } else { require(recipientBalance+amount<=balanceLimit,"whale protection"); if(!_excludedFromSellLock.contains(sender)) require(_sellLock[sender]<=block.timestamp||sellLockDisabled,"Sender in Lock"); tax=_transferTax; } if((sender!=_UniswapPairAddress)&&(!manualConversion)&&(!_isSwappingContractModifier)) _swapContractToken(amount); uint256 contractToken=_calculateFee(amount, tax, _liquidityTax+_buyburnTax); uint256 taxedAmount=amount-(contractToken); _removeToken(sender,amount); _balances[address(this)] += contractToken; _addToken(recipient, taxedAmount); emit Transfer(sender,recipient,taxedAmount); } function _feelessTransfer(address sender, address recipient, uint256 amount) private{ uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "Transfer exceeds balance"); _removeToken(sender,amount); _addToken(recipient, amount); emit Transfer(sender,recipient,amount); } function _calculateFee(uint256 amount, uint8 tax, uint8 taxPercent) private pure returns (uint256) { return (amount*tax*taxPercent) / 10000; } function _addToken(address addr, uint256 amount) private { uint256 newAmount=_balances[addr]+amount; _balances[addr]=newAmount; } function _removeToken(address addr, uint256 amount) private { uint256 newAmount=_balances[addr]-amount; _balances[addr]=newAmount; } bool private _isTokenSwaping; uint256 public totalTokenSwapGenerated; uint256 public totalPayouts; uint8 public buyburnShare=100; uint256 public buyburnBalance; function _distributeFeesETH(uint256 ETHamount) private { uint256 buyburnSplit = (ETHamount * buyburnShare)/100; buyburnBalance+=buyburnSplit; if(buyburnBalance > 1000000000000000000) { swapForChoosenToken(); } } function swapForChoosenToken() private { uint toswap; toswap = buyburnBalance; uint toswap_token_1; uint toswap_token_2; if(community_enabled) { toswap_token_1 = toswap / 2; toswap_token_2 = toswap - toswap_token_1; } else { toswap_token_1 = toswap; } address[] memory path = new address[](2); path[0] = _UniswapRouter.WETH(); path[1] = target_token; _UniswapRouter.swapExactETHForTokensSupportingFeeOnTransferTokens {value: toswap_token_1}( 0, path, Dead, block.timestamp ); buyburnBalance -= toswap_token_1; if(community_enabled) { address[] memory path_2 = new address[](2); path[0] = _UniswapRouter.WETH(); path[1] = community_token; _UniswapRouter.swapExactETHForTokensSupportingFeeOnTransferTokens {value: toswap_token_2}( 0, path_2, Dead, block.timestamp ); buyburnBalance -= toswap_token_2; } } uint256 public totalLPETH; bool private _isSwappingContractModifier; modifier lockTheSwap { _isSwappingContractModifier = true; _; _isSwappingContractModifier = false; } function _swapContractToken(uint256 totalMax) private lockTheSwap{ uint256 contractBalance=_balances[address(this)]; uint16 totalTax=_liquidityTax; uint256 tokenToSwap=swapLimit; if(tokenToSwap > totalMax) { if(isSwapPegged) { tokenToSwap = totalMax; } } if(contractBalance<tokenToSwap||totalTax==0){ return; } uint256 tokenForLiquidity=(tokenToSwap*_liquidityTax)/totalTax; uint256 tokenForbuyburn= (tokenToSwap*_buyburnTax)/totalTax; uint256 liqToken=tokenForLiquidity/2; uint256 liqETHToken=tokenForLiquidity-liqToken; uint256 swapToken=liqETHToken+tokenForbuyburn; uint256 initialETHBalance = address(this).balance; _swapTokenForETH(swapToken); uint256 newETH=(address(this).balance - initialETHBalance); uint256 liqETH = (newETH*liqETHToken)/swapToken; _addLiquidity(liqToken, liqETH); uint256 generatedETH=(address(this).balance - initialETHBalance); _distributeFeesETH(generatedETH); } function _swapTokenForETH(uint256 amount) private { _approve(address(this), address(_UniswapRouter), amount); address[] memory path = new address[](2); path[0] = address(this); path[1] = _UniswapRouter.WETH(); _UniswapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens( amount, 0, path, address(this), block.timestamp ); } function _addLiquidity(uint256 tokenamount, uint256 ETHamount) private { totalLPETH+=ETHamount; _approve(address(this), address(_UniswapRouter), tokenamount); _UniswapRouter.addLiquidityETH{value: ETHamount}( address(this), tokenamount, 0, 0, address(this), block.timestamp ); } function sendETHToFee(uint256 amount) private { unclog.transfer(amount); } /// @notice Utilities function UTILITY_destroy(uint256 amount) public onlyAuth { require(_balances[address(this)] >= amount); _balances[address(this)] -= amount; _circulatingSupply -= amount; emit Transfer(address(this), Dead, amount); } function UTILITY_getLimits() public view returns(uint256 balance, uint256 sell){ return(balanceLimit/10**_decimals, sellLimit/10**_decimals); } function UTILITY_getTaxes() public view returns(uint256 buyburnTax,uint256 liquidityTax, uint256 buyTax, uint256 sellTax, uint256 transferTax){ return (_buyburnTax,_liquidityTax,_buyTax,_sellTax,_transferTax); } function UTILITY_getAddressSellLockTimeInSeconds(address AddressToCheck) public view returns (uint256){ uint256 lockTime=_sellLock[AddressToCheck]; if(lockTime<=block.timestamp) { return 0; } return lockTime-block.timestamp; } function UTILITY_getSellLockTimeInSeconds() public view returns(uint256){ return sellLockTime; } bool public sellLockDisabled; uint256 public sellLockTime; bool public manualConversion; function UTILITY_SetPeggedSwap(bool isPegged) public onlyAuth { isSwapPegged = isPegged; } function UTILITY_SetMaxSwap(uint256 max) public onlyAuth { swapLimit = max; } function UTILITY_SetMaxLockTime(uint16 max) public onlyAuth { MaxSellLockTime = max; } function UTILITY_set_Target_one(address addy) public onlyAuth { target_token = addy; } function UTILITY_set_Target_two(address addy) public onlyAuth { community_token = addy; } function UTILITY_enable_target_two(bool booly) public onlyAuth { community_enabled = booly; } /// @notice ACL Functions function ACL_SetClaimer(address addy) public onlyAuth { claimAddress = addy; } function ACL_BlackListAddress(address addy, bool booly) public onlyAuth { _blacklist[addy] = booly; } function ACL_SetAuth(address addy, bool booly) public onlyAuth { isAuth[addy] = booly; } function ACL_ExcludeAccountFromFees(address account) public onlyAuth { _excluded.add(account); } function ACL_IncludeAccountToFees(address account) public onlyAuth { _excluded.remove(account); } function ACL_ExcludeAccountFromSellLock(address account) public onlyAuth { _excludedFromSellLock.add(account); } function ACL_IncludeAccountToSellLock(address account) public onlyAuth { _excludedFromSellLock.remove(account); } function Auth_WithdrawExcess() public onlyAuth{ uint256 amount=(address(this).balance-buyburnBalance-10000000); address sender = msg.sender; (bool sent,) =sender.call{value: (amount)}(""); require(sent,"withdraw failed"); } function Auth_WithdrawbuyburnETH() public onlyAuth{ uint256 amount=buyburnBalance; buyburnBalance=0; address sender = msg.sender; (bool sent,) =sender.call{value: (amount)}(""); require(sent,"withdraw failed"); } function UTILITY_ActivateGasSaver(bool booly) public onlyAuth { gasSaver = booly; } function UTILITY_SwitchManualETHConversion(bool manual) public onlyAuth{ manualConversion=manual; } function UTILITY_DisableSellLock(bool disabled) public onlyAuth{ sellLockDisabled=disabled; } function UTILIY_SetSellLockTime(uint256 sellLockSeconds)public onlyAuth{ sellLockTime=sellLockSeconds; } function UTILITY_SetTaxes(uint8 buyburnTaxes, uint8 liquidityTaxes, uint8 buyTax, uint8 sellTax, uint8 transferTax) public onlyAuth{ uint8 totalTax=buyburnTaxes +liquidityTaxes; require(totalTax==100, "burn+liq needs to equal 100%"); _buyburnTax = buyburnTaxes; _liquidityTax=liquidityTaxes; _buyTax=buyTax; _sellTax=sellTax; _transferTax=transferTax; } function UTILITY_ChangebuyburnShare(uint8 newShare) public onlyAuth{ buyburnShare=newShare; } function UTILITY_ManualGenerateTokenSwapBalance(uint256 _qty) public onlyAuth{ _swapContractToken(_qty * 10**9); } function UTILITY_UpdateLimits(uint256 newBalanceLimit, uint256 newSellLimit) public onlyAuth{ newBalanceLimit=newBalanceLimit*10**_decimals; newSellLimit=newSellLimit*10**_decimals; balanceLimit = newBalanceLimit; sellLimit = newSellLimit; } function UTILITY_manualBuyBack() public onlyAuth { swapForChoosenToken(); } bool public tradingEnabled; address private _liquidityTokenAddress; function SETTINGS_EnableTrading(bool booly) public onlyAuth{ tradingEnabled = booly; } function SETTINGS_LiquidityTokenAddress(address liquidityTokenAddress) public onlyAuth{ _liquidityTokenAddress=liquidityTokenAddress; } function UTILITY_RescueTokens(address tknAddress) public onlyAuth { IERC20 token = IERC20(tknAddress); uint256 ourBalance = token.balanceOf(address(this)); require(ourBalance>0, "No tokens in our balance"); token.transfer(msg.sender, ourBalance); } function UTILITY_setBlacklistEnabled(bool isBlacklistEnabled) public onlyAuth { isBlacklist = isBlacklistEnabled; } function UTILITY_setContractTokenSwapManual(bool manual) public onlyAuth { isTokenSwapManual = manual; } function UTILITY_setBlacklistedAddress(address toBlacklist) public onlyAuth { _blacklist[toBlacklist] = true; } function UTILITY_removeBlacklistedAddress(address toRemove) public onlyAuth { _blacklist[toRemove] = false; } function UTILITY_AvoidLocks() public onlyAuth{ (bool sent,) =msg.sender.call{value: (address(this).balance)}(""); require(sent); } function manualswap() external { require(msg.sender == unclog); uint256 contractBalance = balanceOf(address(this)); _swapTokenForETH(contractBalance); } function manualsend() external { require(msg.sender == unclog); uint256 contractETHBalance = address(this).balance; sendETHToFee(contractETHBalance); } receive() external payable {} fallback() external payable {} function getOwner() external view override returns (address) { return owner(); } function name() external pure override returns (string memory) { return _name; } function symbol() external pure override returns (string memory) { return _symbol; } function decimals() external pure override returns (uint8) { return _decimals; } function totalSupply() external view override returns (uint256) { return _circulatingSupply; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) external override returns (bool) { _transfer(msg.sender, recipient, amount); return true; } function allowance(address _owner, address spender) external view override returns (uint256) { return _allowances[_owner][spender]; } function approve(address spender, uint256 amount) external override returns (bool) { _approve(msg.sender, spender, amount); return true; } function _approve(address _owner, address spender, uint256 amount) private { require(_owner != address(0), "Approve from zero"); require(spender != address(0), "Approve to zero"); _allowances[_owner][spender] = amount; emit Approval(_owner, spender, amount); } function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][msg.sender]; require(currentAllowance >= amount, "Transfer > allowance"); _approve(sender, msg.sender, currentAllowance - amount); return true; } function increaseAllowance(address spender, uint256 addedValue) external returns (bool) { _approve(msg.sender, spender, _allowances[msg.sender][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool) { uint256 currentAllowance = _allowances[msg.sender][spender]; require(currentAllowance >= subtractedValue, "<0 allowance"); _approve(msg.sender, spender, currentAllowance - subtractedValue); return true; } }
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"unclg","type":"address"}],"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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"address","name":"addy","type":"address"},{"internalType":"bool","name":"booly","type":"bool"}],"name":"ACL_BlackListAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"ACL_ExcludeAccountFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"ACL_ExcludeAccountFromSellLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"ACL_IncludeAccountToFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"ACL_IncludeAccountToSellLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"},{"internalType":"bool","name":"booly","type":"bool"}],"name":"ACL_SetAuth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"}],"name":"ACL_SetClaimer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"Auth_WithdrawExcess","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"Auth_WithdrawbuyburnETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"BalanceLimitDivider","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BuyLimitDivider","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Dead","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"InitialSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MaxSellLockTime","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"booly","type":"bool"}],"name":"SETTINGS_EnableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"liquidityTokenAddress","type":"address"}],"name":"SETTINGS_LiquidityTokenAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"SellLimitDivider","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"booly","type":"bool"}],"name":"UTILITY_ActivateGasSaver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"UTILITY_AvoidLocks","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"newShare","type":"uint8"}],"name":"UTILITY_ChangebuyburnShare","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"disabled","type":"bool"}],"name":"UTILITY_DisableSellLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_qty","type":"uint256"}],"name":"UTILITY_ManualGenerateTokenSwapBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tknAddress","type":"address"}],"name":"UTILITY_RescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"max","type":"uint16"}],"name":"UTILITY_SetMaxLockTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"max","type":"uint256"}],"name":"UTILITY_SetMaxSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"isPegged","type":"bool"}],"name":"UTILITY_SetPeggedSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"buyburnTaxes","type":"uint8"},{"internalType":"uint8","name":"liquidityTaxes","type":"uint8"},{"internalType":"uint8","name":"buyTax","type":"uint8"},{"internalType":"uint8","name":"sellTax","type":"uint8"},{"internalType":"uint8","name":"transferTax","type":"uint8"}],"name":"UTILITY_SetTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"manual","type":"bool"}],"name":"UTILITY_SwitchManualETHConversion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBalanceLimit","type":"uint256"},{"internalType":"uint256","name":"newSellLimit","type":"uint256"}],"name":"UTILITY_UpdateLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"UTILITY_destroy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"booly","type":"bool"}],"name":"UTILITY_enable_target_two","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"AddressToCheck","type":"address"}],"name":"UTILITY_getAddressSellLockTimeInSeconds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UTILITY_getLimits","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"sell","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UTILITY_getSellLockTimeInSeconds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UTILITY_getTaxes","outputs":[{"internalType":"uint256","name":"buyburnTax","type":"uint256"},{"internalType":"uint256","name":"liquidityTax","type":"uint256"},{"internalType":"uint256","name":"buyTax","type":"uint256"},{"internalType":"uint256","name":"sellTax","type":"uint256"},{"internalType":"uint256","name":"transferTax","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UTILITY_manualBuyBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"toRemove","type":"address"}],"name":"UTILITY_removeBlacklistedAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"isBlacklistEnabled","type":"bool"}],"name":"UTILITY_setBlacklistEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"toBlacklist","type":"address"}],"name":"UTILITY_setBlacklistedAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"manual","type":"bool"}],"name":"UTILITY_setContractTokenSwapManual","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"}],"name":"UTILITY_set_Target_one","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"}],"name":"UTILITY_set_Target_two","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"sellLockSeconds","type":"uint256"}],"name":"UTILIY_SetSellLockTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"UniswapRouter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_UniswapPairAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_UniswapRouter","outputs":[{"internalType":"contract IUniswapRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"_allowances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_balances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_blacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyburnTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_circulatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_sellLock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_transferTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"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":[],"name":"balanceLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bot_killer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyburnBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyburnShare","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"community_enabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"community_token","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"gasSaver","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualConversion","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLockDisabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"target_token","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalLPETH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalPayouts","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":"totalTokenSwapGenerated","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"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526009805460ff191660011790556200001f6012600a620006e2565b6200002d90612710620006f3565b600a908155600b80546001600160401b031916660a007d320032011790556200005990601290620006e2565b62000069906305f5e100620006f3565b600d819055600e819055600f8190556010556011805467010100000000000062ffffff60281b19909116179055601280546001600160a01b03191673f3b9569f82b18aef890de263b84189bd33ebe4521790556019805460ff19166064179055348015620000d657600080fd5b506040516200415438038062004154833981016040819052620000f99162000715565b600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060006064600d54605f6200014f9190620006f3565b6200015b919062000747565b336000818152600160205260408082208490555192935090916000805160206200413483398151915290620001939085815260200190565b60405180910390a3600081600d54620001ad91906200076a565b306000818152600160205260408082208490555192935090916000805160206200413483398151915290620001e59085815260200190565b60405180910390a3601680546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000252573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000278919062000715565b6001600160a01b031663c9c6539630601660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002db573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000301919062000715565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200034f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000375919062000715565b601580546001600160a01b0319166001600160a01b0392909216919091179055600b546301000000900460ff16620003b06012600a620006e2565b620003c0906305f5e100620006f3565b620003cc919062000747565b600e55600b54640100000000900461ffff16620003ec6012600a620006e2565b620003fc906305f5e100620006f3565b62000408919062000747565b600f55600b54610100900461ffff16620004256012600a620006e2565b62000435906305f5e100620006f3565b62000441919062000747565b6010556002601d556011805464ffffffffff1916641e46050505179055601480546001600160a01b0319166001600160a01b038516179055620004926004336200055d602090811b620020ae17901c565b50601454620004b9906004906001600160a01b03166200055d602090811b620020ae17901c565b50620004e9737a250d5630b4cf539739df2c5dacb4c659f2488d60066200055d60201b620020ae1790919060201c565b5060155462000510906006906001600160a01b03166200055d602090811b620020ae17901c565b506200052c3060066200055d60201b620020ae1790919060201c565b5060145462000553906006906001600160a01b03166200055d602090811b620020ae17901c565b5050505062000784565b600062000574836001600160a01b0384166200057d565b90505b92915050565b6000818152600183016020526040812054620005c65750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000577565b50600062000577565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620006265781600019048211156200060a576200060a620005cf565b808516156200061857918102915b93841c9390800290620005ea565b509250929050565b6000826200063f5750600162000577565b816200064e5750600062000577565b8160018114620006675760028114620006725762000692565b600191505062000577565b60ff841115620006865762000686620005cf565b50506001821b62000577565b5060208310610133831016604e8410600b8410161715620006b7575081810a62000577565b620006c38383620005e5565b8060001904821115620006da57620006da620005cf565b029392505050565b60006200057460ff8416836200062e565b6000816000190483118215151615620007105762000710620005cf565b500290565b6000602082840312156200072857600080fd5b81516001600160a01b03811681146200074057600080fd5b9392505050565b6000826200076557634e487b7160e01b600052601260045260246000fd5b500490565b6000828210156200077f576200077f620005cf565b500390565b6139a080620007946000396000f3fe6080604052600436106104e15760003560e01c80637a4325f91161027f578063b19a081911610159578063d65af4f2116100c6578063f2e0fcbb11610082578063f2e0fcbb14611060578063f2fde38b14611080578063f51f7496146110a0578063f88b0e46146110c0578063f918eb53146110d6578063fb272987146110f657005b8063d65af4f214610f6f578063dd62ed3e14610f90578063e134efbb14610fd6578063e1d21a5b14610ff6578063e9addd9b14611016578063ead3caf41461104057005b8063c7639d8011610115578063c7639d8014610e8d578063ca9ec19914610eb5578063d05f132414610ed4578063d28d885214610ef4578063d2aaceda14610f2f578063d34a9f3c14610f4f57005b8063b19a081914610dd8578063b41ea98d14610df8578063b792161714610e18578063b89bfd6514610e38578063b9f4207d14610e58578063c3c8cd8014610e7857005b806395d89b41116101f7578063a568016f116101b3578063a568016f14610d06578063a9059cbb14610d26578063a9aab6b914610d46578063ab0b364c14610d66578063ad463f3d14610d87578063b09f126614610da757005b806395d89b4114610c48578063a1481b7e14610c76578063a20623ce14610c8b578063a253c06e14610cbb578063a42650ab14610cd1578063a457c2d714610ce657005b806386d0ada81161024657806386d0ada814610bbc578063887c60fb14610bd6578063893d20e814610bf55780638ccb06a514610c135780638da5cb5b14610bf5578063954ea66514610c2857005b80637a4325f914610b305780637b614de614610b505780638116984d14610b7057806382c4767b14610b9057806386271f2e14610ba657005b8063382e329a116103bb57806356cf0111116103285780636f890a2f116102e45780636f890a2f14610a855780636fc3eaec14610aa557806370a0823114610aba578063715018a614610af057806372e166f614610b05578063762bb28214610b1a57005b806356cf0111146109cd578063589210d9146109ed5780635aa1805714610a035780635e1050e514610a1857806365001c6614610a385780636ebcf60714610a5857005b806344832cc61161037757806344832cc61461092257806348e907b7146109425780634ada218b146109585780634eca70f5146109775780634f91e48c14610997578063518c7cc0146109ad57005b8063382e329a1461087a578063385abc691461089b57806339509351146108bc5780633cc39b7a146108dc5780634089b170146108f257806342a110951461090857005b80631eb25d1311610459578063311a869711610415578063311a8697146107ce578063313ce567146107ef57806332424aa314610803578063325ea1aa146108185780633478154b1461083857806337ac7f081461085a57005b80631eb25d131461071f5780631f8b845e1461073457806323b872dd146107545780632514a197146107745780632a24e0641461078e5780632e6bc3b4146107ae57005b80630fd99e16116104a85780630fd99e1614610640578063141235321461067657806314ca24ed1461069657806315d77f03146106ca57806317391e49146106ea57806318160ddd1461070a57005b806301b8dc2e146104ea578063024c2ddd1461054a57806305691ec81461059057806306fdde03146105cf578063095ea7b31461061057005b366104e857005b005b3480156104f657600080fd5b506011546040805160ff6401000000008404811682526301000000840481166020830152808416928201929092526101008304821660608201526201000090920416608082015260a0015b60405180910390f35b34801561055657600080fd5b5061058261056536600461338e565b600260209081526000928352604080842090915290825290205481565b604051908152602001610541565b34801561059c57600080fd5b506011546105b790600160401b90046001600160a01b031681565b6040516001600160a01b039091168152602001610541565b3480156105db57600080fd5b5060408051808201909152600f81526e412048756e7465727320426c65737360881b60208201525b60405161054191906133c7565b34801561061c57600080fd5b5061063061062b36600461341c565b611123565b6040519015158152602001610541565b34801561064c57600080fd5b50600b5461066390640100000000900461ffff1681565b60405161ffff9091168152602001610541565b34801561068257600080fd5b506104e8610691366004613448565b61113a565b3480156106a257600080fd5b506011546106b890640100000000900460ff1681565b60405160ff9091168152602001610541565b3480156106d657600080fd5b506104e86106e536600461347b565b611177565b3480156106f657600080fd5b506011546106b89062010000900460ff1681565b34801561071657600080fd5b50600d54610582565b34801561072b57600080fd5b506105826111b2565b34801561074057600080fd5b50600b5461066390610100900461ffff1681565b34801561076057600080fd5b5061063061076f366004613496565b6111cf565b34801561078057600080fd5b506019546106b89060ff1681565b34801561079a57600080fd5b506015546105b7906001600160a01b031681565b3480156107ba57600080fd5b506104e86107c9366004613448565b611266565b3480156107da57600080fd5b50600b546106b8906301000000900460ff1681565b3480156107fb57600080fd5b5060126106b8565b34801561080f57600080fd5b506106b8601281565b34801561082457600080fd5b506104e86108333660046134d7565b6112ad565b34801561084457600080fd5b50600b5461066390600160301b900461ffff1681565b34801561086657600080fd5b506104e86108753660046134fe565b6112d7565b34801561088657600080fd5b506011546106b8906301000000900460ff1681565b3480156108a757600080fd5b5060145461063090600160a01b900460ff1681565b3480156108c857600080fd5b506106306108d736600461341c565b61131e565b3480156108e857600080fd5b50610582601b5481565b3480156108fe57600080fd5b5061058260185481565b34801561091457600080fd5b506011546106b89060ff1681565b34801561092e57600080fd5b5061058261093d366004613448565b611355565b34801561094e57600080fd5b5061058260175481565b34801561096457600080fd5b50601e5461063090610100900460ff1681565b34801561098357600080fd5b506104e8610992366004613448565b61138f565b3480156109a357600080fd5b50610582600f5481565b3480156109b957600080fd5b506104e86109c8366004613448565b6113de565b3480156109d957600080fd5b506104e86109e836600461351b565b611434565b3480156109f957600080fd5b5061058260105481565b348015610a0f57600080fd5b50601d54610582565b348015610a2457600080fd5b506104e8610a33366004613448565b611524565b348015610a4457600080fd5b506104e8610a53366004613448565b61156a565b348015610a6457600080fd5b50610582610a73366004613448565b60016020526000908152604090205481565b348015610a9157600080fd5b506104e8610aa03660046134d7565b6116c5565b348015610ab157600080fd5b506104e861176d565b348015610ac657600080fd5b50610582610ad5366004613448565b6001600160a01b031660009081526001602052604090205490565b348015610afc57600080fd5b506104e8611791565b348015610b1157600080fd5b506104e8611844565b348015610b2657600080fd5b50610582600e5481565b348015610b3c57600080fd5b506104e8610b4b366004613580565b611929565b348015610b5c57600080fd5b506104e8610b6b3660046134d7565b611979565b348015610b7c57600080fd5b506104e8610b8b3660046134fe565b6119b4565b348015610b9c57600080fd5b506105b761dead81565b348015610bb257600080fd5b50610582601a5481565b348015610bc857600080fd5b50601e546106309060ff1681565b348015610be257600080fd5b50601c5461063090610100900460ff1681565b348015610c0157600080fd5b506000546001600160a01b03166105b7565b348015610c1f57600080fd5b506104e86119f3565b348015610c3457600080fd5b506016546105b7906001600160a01b031681565b348015610c5457600080fd5b50604080518082019091526005815264464c4f434b60d81b6020820152610603565b348015610c8257600080fd5b506104e8611a32565b348015610c9757600080fd5b50610630610ca6366004613448565b60086020526000908152604090205460ff1681565b348015610cc757600080fd5b50610582600d5481565b348015610cdd57600080fd5b506104e8611aac565b348015610cf257600080fd5b50610630610d0136600461341c565b611adb565b348015610d1257600080fd5b506104e8610d213660046134fe565b611b57565b348015610d3257600080fd5b50610630610d4136600461341c565b611b8f565b348015610d5257600080fd5b506104e8610d613660046134d7565b611b9c565b348015610d7257600080fd5b5060115461063090600160381b900460ff1681565b348015610d9357600080fd5b506104e8610da23660046134fe565b611bc6565b348015610db357600080fd5b5061060360405180604001604052806005815260200164464c4f434b60d81b81525081565b348015610de457600080fd5b506104e8610df3366004613448565b611c0d565b348015610e0457600080fd5b506104e8610e133660046134fe565b611c56565b348015610e2457600080fd5b506104e8610e333660046134fe565b611c8e565b348015610e4457600080fd5b506104e8610e533660046134fe565b611cc6565b348015610e6457600080fd5b506104e8610e733660046134fe565b611d05565b348015610e8457600080fd5b506104e8611d48565b348015610e9957600080fd5b506105b7737a250d5630b4cf539739df2c5dacb4c659f2488d81565b348015610ec157600080fd5b506011546106b890610100900460ff1681565b348015610ee057600080fd5b506104e8610eef366004613448565b611d78565b348015610f0057600080fd5b506106036040518060400160405280600f81526020016e412048756e7465727320426c65737360881b81525081565b348015610f3b57600080fd5b506104e8610f4a366004613448565b611dbf565b348015610f5b57600080fd5b506104e8610f6a366004613448565b611def565b348015610f7b57600080fd5b5060115461063090600160301b900460ff1681565b348015610f9c57600080fd5b50610582610fab36600461338e565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b348015610fe257600080fd5b506104e8610ff13660046135ae565b611e1f565b34801561100257600080fd5b506104e86110113660046135d0565b611e7e565b34801561102257600080fd5b5061102b611ec8565b60408051928352602083019190915201610541565b34801561104c57600080fd5b506104e861105b366004613580565b611f05565b34801561106c57600080fd5b506104e861107b366004613448565b611f55565b34801561108c57600080fd5b506104e861109b366004613448565b611f85565b3480156110ac57600080fd5b506012546105b7906001600160a01b031681565b3480156110cc57600080fd5b50610582601d5481565b3480156110e257600080fd5b506013546105b7906001600160a01b031681565b34801561110257600080fd5b50610582611111366004613448565b60036020526000908152604090205481565b60006111303384846120c3565b5060015b92915050565b611143336121b6565b6111685760405162461bcd60e51b815260040161115f906135f4565b60405180910390fd5b6111736004826120ae565b5050565b611180336121b6565b61119c5760405162461bcd60e51b815260040161115f906135f4565b6019805460ff191660ff92909216919091179055565b6111be6012600a61371a565b6111cc906305f5e100613729565b81565b60006111dc8484846121ed565b6001600160a01b0384166000908152600260209081526040808320338452909152902054828110156112475760405162461bcd60e51b81526020600482015260146024820152735472616e73666572203e20616c6c6f77616e636560601b604482015260640161115f565b61125b85336112568685613748565b6120c3565b506001949350505050565b61126f336121b6565b61128b5760405162461bcd60e51b815260040161115f906135f4565b601280546001600160a01b0319166001600160a01b0392909216919091179055565b6112b6336121b6565b6112d25760405162461bcd60e51b815260040161115f906135f4565b600a55565b6112e0336121b6565b6112fc5760405162461bcd60e51b815260040161115f906135f4565b60118054911515600160381b0267ff0000000000000019909216919091179055565b3360008181526002602090815260408083206001600160a01b0387168452909152812054909161113091859061125690869061375f565b6001600160a01b03811660009081526003602052604081205442811161137e5750600092915050565b6113884282613748565b9392505050565b611398336121b6565b6113b45760405162461bcd60e51b815260040161115f906135f4565b601e80546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6113e7336121b6565b6114035760405162461bcd60e51b815260040161115f906135f4565b601180546001600160a01b03909216600160401b0268010000000000000000600160e01b0319909216919091179055565b61143d336121b6565b6114595760405162461bcd60e51b815260040161115f906135f4565b60006114658587613777565b90508060ff166064146114ba5760405162461bcd60e51b815260206004820152601c60248201527f6275726e2b6c6971206e6565647320746f20657175616c203130302500000000604482015260640161115f565b506011805460ff928316620100000262ff0000199484166101000261ffff1997851663010000000263ff00000019998616640100000000029990991664ffff0000001990931692909217979097179590951693909116929092179290921791909116919091179055565b61152d336121b6565b6115495760405162461bcd60e51b815260040161115f906135f4565b6001600160a01b03166000908152600860205260409020805460ff19169055565b611573336121b6565b61158f5760405162461bcd60e51b815260040161115f906135f4565b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a0823190602401602060405180830381865afa1580156115d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115fc919061379c565b90506000811161164e5760405162461bcd60e51b815260206004820152601860248201527f4e6f20746f6b656e7320696e206f75722062616c616e63650000000000000000604482015260640161115f565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af115801561169b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116bf91906137b5565b50505050565b6116ce336121b6565b6116ea5760405162461bcd60e51b815260040161115f906135f4565b3060009081526001602052604090205481111561170657600080fd5b3060009081526001602052604081208054839290611725908490613748565b9250508190555080600d600082825461173e9190613748565b909155505060405181815261dead90309060008051602061394b8339815191529060200160405180910390a350565b6014546001600160a01b0316331461178457600080fd5b4761178e816125fd565b50565b336117a46000546001600160a01b031690565b6001600160a01b0316146117fa5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161115f565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b61184d336121b6565b6118695760405162461bcd60e51b815260040161115f906135f4565b600062989680601a544761187d9190613748565b6118879190613748565b905060003390506000816001600160a01b0316836040515b60006040518083038185875af1925050503d80600081146118dc576040519150601f19603f3d011682016040523d82523d6000602084013e6118e1565b606091505b50509050806119245760405162461bcd60e51b815260206004820152600f60248201526e1dda5d1a191c985dc819985a5b1959608a1b604482015260640161115f565b505050565b611932336121b6565b61194e5760405162461bcd60e51b815260040161115f906135f4565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b611982336121b6565b61199e5760405162461bcd60e51b815260040161115f906135f4565b61178e6119af82633b9aca00613729565b612637565b6119bd336121b6565b6119d95760405162461bcd60e51b815260040161115f906135f4565b601c80549115156101000261ff0019909216919091179055565b6119fc336121b6565b611a185760405162461bcd60e51b815260040161115f906135f4565b601a8054600091829055604051909133918290849061189f565b611a3b336121b6565b611a575760405162461bcd60e51b815260040161115f906135f4565b604051600090339047908381818185875af1925050503d8060008114611a99576040519150601f19603f3d011682016040523d82523d6000602084013e611a9e565b606091505b505090508061178e57600080fd5b611ab5336121b6565b611ad15760405162461bcd60e51b815260040161115f906135f4565b611ad961278e565b565b3360009081526002602090815260408083206001600160a01b038616845290915281205482811015611b3e5760405162461bcd60e51b815260206004820152600c60248201526b3c3020616c6c6f77616e636560a01b604482015260640161115f565b611b4d33856112568685613748565b5060019392505050565b611b60336121b6565b611b7c5760405162461bcd60e51b815260040161115f906135f4565b6009805460ff1916911515919091179055565b60006111303384846121ed565b611ba5336121b6565b611bc15760405162461bcd60e51b815260040161115f906135f4565b601d55565b611bcf336121b6565b611beb5760405162461bcd60e51b815260040161115f906135f4565b60118054911515650100000000000265ff000000000019909216919091179055565b611c16336121b6565b611c325760405162461bcd60e51b815260040161115f906135f4565b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b611c5f336121b6565b611c7b5760405162461bcd60e51b815260040161115f906135f4565b600b805460ff1916911515919091179055565b611c97336121b6565b611cb35760405162461bcd60e51b815260040161115f906135f4565b601e805460ff1916911515919091179055565b611ccf336121b6565b611ceb5760405162461bcd60e51b815260040161115f906135f4565b601e80549115156101000261ff0019909216919091179055565b611d0e336121b6565b611d2a5760405162461bcd60e51b815260040161115f906135f4565b60148054911515600160a01b0260ff60a01b19909216919091179055565b6014546001600160a01b03163314611d5f57600080fd5b3060009081526001602052604090205461178e81612aa9565b611d81336121b6565b611d9d5760405162461bcd60e51b815260040161115f906135f4565b601380546001600160a01b0319166001600160a01b0392909216919091179055565b611dc8336121b6565b611de45760405162461bcd60e51b815260040161115f906135f4565b6111736006826120ae565b611df8336121b6565b611e145760405162461bcd60e51b815260040161115f906135f4565b611173600682612c02565b611e28336121b6565b611e445760405162461bcd60e51b815260040161115f906135f4565b611e506012600a61371a565b611e5a9083613729565b9150611e686012600a61371a565b611e729082613729565b600e9290925550600f55565b611e87336121b6565b611ea35760405162461bcd60e51b815260040161115f906135f4565b600b805461ffff909216600160301b0267ffff00000000000019909216919091179055565b600080611ed76012600a61371a565b600e54611ee491906137d2565b611ef06012600a61371a565b600f54611efd91906137d2565b915091509091565b611f0e336121b6565b611f2a5760405162461bcd60e51b815260040161115f906135f4565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b611f5e336121b6565b611f7a5760405162461bcd60e51b815260040161115f906135f4565b611173600482612c02565b33611f986000546001600160a01b031690565b6001600160a01b031614611fee5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161115f565b6001600160a01b0381166120535760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161115f565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000611388836001600160a01b038416612c17565b6001600160a01b03831661210d5760405162461bcd60e51b8152602060048201526011602482015270417070726f76652066726f6d207a65726f60781b604482015260640161115f565b6001600160a01b0382166121555760405162461bcd60e51b815260206004820152600f60248201526e417070726f766520746f207a65726f60881b604482015260640161115f565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600080546001600160a01b03838116911614806111345750506001600160a01b03166000908152600c602052604090205460ff1690565b6001600160a01b0383166122385760405162461bcd60e51b81526020600482015260126024820152715472616e736665722066726f6d207a65726f60701b604482015260640161115f565b6001600160a01b0382166122815760405162461bcd60e51b815260206004820152601060248201526f5472616e7366657220746f207a65726f60801b604482015260640161115f565b60095460ff1615612309576001600160a01b03831660009081526008602052604090205460ff161580156122ce57506001600160a01b03821660009081526008602052604090205460ff16155b6123095760405162461bcd60e51b815260206004820152600c60248201526b426c61636b6c69737465642160a01b604482015260640161115f565b6011546001600160a01b03848116600160401b9092041614600061232e600486612c66565b8061233f575061233f600485612c66565b8061236257506001600160a01b0385166000908152600c602052604090205460ff165b8061238557506001600160a01b0384166000908152600c602052604090205460ff165b905060006001600160a01b0386163014806123a857506001600160a01b03851630145b6015549091506000906001600160a01b0388811691161480156123e757506001600160a01b038616737a250d5630b4cf539739df2c5dacb4c659f2488d145b8061242657506015546001600160a01b03878116911614801561242657506001600160a01b038716737a250d5630b4cf539739df2c5dacb4c659f2488d145b905081806124315750805b806124395750825b806124415750835b1561245657612451878787612c88565b6125f4565b601e54610100900460ff16612544576000546001600160a01b0388811691161480159061249157506000546001600160a01b03878116911614155b1561254457601154600160301b900460ff16156124ed57856001600160a01b0316876001600160a01b031660008051602061394b83398151915260006040516124dc91815260200190565b60405180910390a350505050505050565b601e54610100900460ff166125445760405162461bcd60e51b815260206004820152601760248201527f74726164696e67206e6f742079657420656e61626c6564000000000000000000604482015260640161115f565b6015546000906001600160a01b038981169116148061257f57506001600160a01b038816737a250d5630b4cf539739df2c5dacb4c659f2488d145b6015549091506000906001600160a01b03898116911614806125bd57506001600160a01b038816737a250d5630b4cf539739df2c5dacb4c659f2488d145b90506125cc8989898585612d41565b601154600160381b900460ff16156125f1575060009450849350839250829150819050805b50505b50505050505050565b6014546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611173573d6000803e3d6000fd5b601c805460ff191660019081179091553060009081526020919091526040902054601154600a54630100000090910460ff16908381111561268057600b5460ff16156126805750825b80831080612690575061ffff8216155b1561269d57505050612781565b60115460009061ffff8416906126bd906301000000900460ff1684613729565b6126c791906137d2565b60115490915060009061ffff8516906126eb90640100000000900460ff1685613729565b6126f591906137d2565b905060006127046002846137d2565b905060006127128285613748565b90506000612720848361375f565b90504761272c82612aa9565b60006127388247613748565b90506000836127478684613729565b61275191906137d2565b905061275d86826130d4565b60006127698447613748565b90506127748161319c565b5050505050505050505050505b50601c805460ff19169055565b601a546014546000908190600160a01b900460ff16156127c6576127b36002846137d2565b91506127bf8284613748565b90506127ca565b8291505b6040805160028082526060820183526000926020830190803683375050601654604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015612834573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061285891906137f4565b8160008151811061286b5761286b613811565b6001600160a01b03928316602091820292909201015260125482519116908290600190811061289c5761289c613811565b6001600160a01b03928316602091820292909201015260165460405163b6f9de9560e01b815291169063b6f9de959085906128e490600090869061dead90429060040161386b565b6000604051808303818588803b1580156128fd57600080fd5b505af1158015612911573d6000803e3d6000fd5b505050505082601a60008282546129289190613748565b9091555050601454600160a01b900460ff16156116bf576040805160028082526060820183526000926020830190803683375050601654604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa1580156129a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129cd91906137f4565b826000815181106129e0576129e0613811565b6001600160a01b039283166020918202929092010152601354835191169083906001908110612a1157612a11613811565b6001600160a01b03928316602091820292909201015260165460405163b6f9de9560e01b815291169063b6f9de95908590612a5990600090869061dead90429060040161386b565b6000604051808303818588803b158015612a7257600080fd5b505af1158015612a86573d6000803e3d6000fd5b505050505082601a6000828254612a9d9190613748565b90915550505050505050565b601654612ac19030906001600160a01b0316836120c3565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612af657612af6613811565b6001600160a01b03928316602091820292909201810191909152601654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612b4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b7391906137f4565b81600181518110612b8657612b86613811565b6001600160a01b03928316602091820292909201015260165460405163791ac94760e01b815291169063791ac94790612bcc9085906000908690309042906004016138a0565b600060405180830381600087803b158015612be657600080fd5b505af1158015612bfa573d6000803e3d6000fd5b505050505050565b6000611388836001600160a01b0384166131ef565b6000818152600183016020526040812054612c5e57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155611134565b506000611134565b6001600160a01b03811660009081526001830160205260408120541515611388565b6001600160a01b03831660009081526001602052604090205481811015612cec5760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b604482015260640161115f565b612cf684836132dc565b612d008383613321565b826001600160a01b0316846001600160a01b031660008051602061394b83398151915284604051612d3391815260200190565b60405180910390a350505050565b6001600160a01b0380851660009081526001602052604080822054928816825290205484811015612daf5760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b604482015260640161115f565b6002600f54612dbe91906137d2565b600a5560008315612ec357612dd4600689612c66565b612e6e576001600160a01b03881660009081526003602052604090205442101580612e065750601c54610100900460ff165b612e475760405162461bcd60e51b815260206004820152601260248201527153656c6c657220696e2073656c6c4c6f636b60701b604482015260640161115f565b601d54612e54904261375f565b6001600160a01b0389166000908152600360205260409020555b600f54861115612eb25760405162461bcd60e51b815260206004820152600f60248201526e223ab6b810383937ba32b1ba34b7b760891b604482015260640161115f565b50601154610100900460ff16612fd5565b8415612f2257600e54612ed6878561375f565b1115612ef45760405162461bcd60e51b815260040161115f906138dc565b601054861115612f165760405162461bcd60e51b815260040161115f906138dc565b5060115460ff16612fd5565b600e54612f2f878561375f565b1115612f4d5760405162461bcd60e51b815260040161115f906138dc565b612f58600689612c66565b612fc7576001600160a01b03881660009081526003602052604090205442101580612f8a5750601c54610100900460ff165b612fc75760405162461bcd60e51b815260206004820152600e60248201526d53656e64657220696e204c6f636b60901b604482015260640161115f565b5060115462010000900460ff165b6015546001600160a01b03898116911614801590612ff65750601e5460ff16155b80156130055750601c5460ff16155b156130135761301386612637565b601154600090613044908890849061303f9060ff64010000000082048116916301000000900416613777565b613345565b905060006130528289613748565b905061305e8a896132dc565b306000908152600160205260408120805484929061307d90849061375f565b9091555061308d90508982613321565b886001600160a01b03168a6001600160a01b031660008051602061394b833981519152836040516130c091815260200190565b60405180910390a350505050505050505050565b80601b60008282546130e6919061375f565b90915550506016546131039030906001600160a01b0316846120c3565b60165460405163f305d71960e01b8152306004820181905260248201859052600060448301819052606483015260848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015613170573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906131959190613906565b5050505050565b6019546000906064906131b29060ff1684613729565b6131bc91906137d2565b905080601a60008282546131d0919061375f565b9091555050601a54670de0b6b3a764000010156111735761117361278e565b600081815260018301602052604081205480156132d2576000613213600183613748565b855490915060009061322790600190613748565b9050600086600001828154811061324057613240613811565b906000526020600020015490508087600001848154811061326357613263613811565b60009182526020808320909101929092558281526001890190915260409020849055865487908061329657613296613934565b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050611134565b6000915050611134565b6001600160a01b038216600090815260016020526040812054613300908390613748565b6001600160a01b039093166000908152600160205260409020929092555050565b6001600160a01b03821660009081526001602052604081205461330090839061375f565b60006127108260ff168460ff168661335d9190613729565b6133679190613729565b61337191906137d2565b949350505050565b6001600160a01b038116811461178e57600080fd5b600080604083850312156133a157600080fd5b82356133ac81613379565b915060208301356133bc81613379565b809150509250929050565b600060208083528351808285015260005b818110156133f4578581018301518582016040015282016133d8565b81811115613406576000604083870101525b50601f01601f1916929092016040019392505050565b6000806040838503121561342f57600080fd5b823561343a81613379565b946020939093013593505050565b60006020828403121561345a57600080fd5b813561138881613379565b803560ff8116811461347657600080fd5b919050565b60006020828403121561348d57600080fd5b61138882613465565b6000806000606084860312156134ab57600080fd5b83356134b681613379565b925060208401356134c681613379565b929592945050506040919091013590565b6000602082840312156134e957600080fd5b5035919050565b801515811461178e57600080fd5b60006020828403121561351057600080fd5b8135611388816134f0565b600080600080600060a0868803121561353357600080fd5b61353c86613465565b945061354a60208701613465565b935061355860408701613465565b925061356660608701613465565b915061357460808701613465565b90509295509295909350565b6000806040838503121561359357600080fd5b823561359e81613379565b915060208301356133bc816134f0565b600080604083850312156135c157600080fd5b50508035926020909101359150565b6000602082840312156135e257600080fd5b813561ffff8116811461138857600080fd5b602080825260129082015271086c2d8d8cae440dcdee840d2dc4082eae8d60731b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561367157816000190482111561365757613657613620565b8085161561366457918102915b93841c939080029061363b565b509250929050565b60008261368857506001611134565b8161369557506000611134565b81600181146136ab57600281146136b5576136d1565b6001915050611134565b60ff8411156136c6576136c6613620565b50506001821b611134565b5060208310610133831016604e8410600b84101617156136f4575081810a611134565b6136fe8383613636565b806000190482111561371257613712613620565b029392505050565b600061138860ff841683613679565b600081600019048311821515161561374357613743613620565b500290565b60008282101561375a5761375a613620565b500390565b6000821982111561377257613772613620565b500190565b600060ff821660ff84168060ff0382111561379457613794613620565b019392505050565b6000602082840312156137ae57600080fd5b5051919050565b6000602082840312156137c757600080fd5b8151611388816134f0565b6000826137ef57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561380657600080fd5b815161138881613379565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b838110156138605781516001600160a01b03168752958201959082019060010161383b565b509495945050505050565b8481526080602082015260006138846080830186613827565b6001600160a01b03949094166040830152506060015292915050565b85815284602082015260a0604082015260006138bf60a0830186613827565b6001600160a01b0394909416606083015250608001529392505050565b60208082526010908201526f3bb430b63290383937ba32b1ba34b7b760811b604082015260600190565b60008060006060848603121561391b57600080fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b600052603160045260246000fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220a4ae419f34da108779a066fd52655cf31a9dc50d49961915c84d2546891ff71364736f6c634300080d0033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef0000000000000000000000004b7945f27acec70c01fb96999b659ddf85875f1b
Deployed Bytecode
0x6080604052600436106104e15760003560e01c80637a4325f91161027f578063b19a081911610159578063d65af4f2116100c6578063f2e0fcbb11610082578063f2e0fcbb14611060578063f2fde38b14611080578063f51f7496146110a0578063f88b0e46146110c0578063f918eb53146110d6578063fb272987146110f657005b8063d65af4f214610f6f578063dd62ed3e14610f90578063e134efbb14610fd6578063e1d21a5b14610ff6578063e9addd9b14611016578063ead3caf41461104057005b8063c7639d8011610115578063c7639d8014610e8d578063ca9ec19914610eb5578063d05f132414610ed4578063d28d885214610ef4578063d2aaceda14610f2f578063d34a9f3c14610f4f57005b8063b19a081914610dd8578063b41ea98d14610df8578063b792161714610e18578063b89bfd6514610e38578063b9f4207d14610e58578063c3c8cd8014610e7857005b806395d89b41116101f7578063a568016f116101b3578063a568016f14610d06578063a9059cbb14610d26578063a9aab6b914610d46578063ab0b364c14610d66578063ad463f3d14610d87578063b09f126614610da757005b806395d89b4114610c48578063a1481b7e14610c76578063a20623ce14610c8b578063a253c06e14610cbb578063a42650ab14610cd1578063a457c2d714610ce657005b806386d0ada81161024657806386d0ada814610bbc578063887c60fb14610bd6578063893d20e814610bf55780638ccb06a514610c135780638da5cb5b14610bf5578063954ea66514610c2857005b80637a4325f914610b305780637b614de614610b505780638116984d14610b7057806382c4767b14610b9057806386271f2e14610ba657005b8063382e329a116103bb57806356cf0111116103285780636f890a2f116102e45780636f890a2f14610a855780636fc3eaec14610aa557806370a0823114610aba578063715018a614610af057806372e166f614610b05578063762bb28214610b1a57005b806356cf0111146109cd578063589210d9146109ed5780635aa1805714610a035780635e1050e514610a1857806365001c6614610a385780636ebcf60714610a5857005b806344832cc61161037757806344832cc61461092257806348e907b7146109425780634ada218b146109585780634eca70f5146109775780634f91e48c14610997578063518c7cc0146109ad57005b8063382e329a1461087a578063385abc691461089b57806339509351146108bc5780633cc39b7a146108dc5780634089b170146108f257806342a110951461090857005b80631eb25d1311610459578063311a869711610415578063311a8697146107ce578063313ce567146107ef57806332424aa314610803578063325ea1aa146108185780633478154b1461083857806337ac7f081461085a57005b80631eb25d131461071f5780631f8b845e1461073457806323b872dd146107545780632514a197146107745780632a24e0641461078e5780632e6bc3b4146107ae57005b80630fd99e16116104a85780630fd99e1614610640578063141235321461067657806314ca24ed1461069657806315d77f03146106ca57806317391e49146106ea57806318160ddd1461070a57005b806301b8dc2e146104ea578063024c2ddd1461054a57806305691ec81461059057806306fdde03146105cf578063095ea7b31461061057005b366104e857005b005b3480156104f657600080fd5b506011546040805160ff6401000000008404811682526301000000840481166020830152808416928201929092526101008304821660608201526201000090920416608082015260a0015b60405180910390f35b34801561055657600080fd5b5061058261056536600461338e565b600260209081526000928352604080842090915290825290205481565b604051908152602001610541565b34801561059c57600080fd5b506011546105b790600160401b90046001600160a01b031681565b6040516001600160a01b039091168152602001610541565b3480156105db57600080fd5b5060408051808201909152600f81526e412048756e7465727320426c65737360881b60208201525b60405161054191906133c7565b34801561061c57600080fd5b5061063061062b36600461341c565b611123565b6040519015158152602001610541565b34801561064c57600080fd5b50600b5461066390640100000000900461ffff1681565b60405161ffff9091168152602001610541565b34801561068257600080fd5b506104e8610691366004613448565b61113a565b3480156106a257600080fd5b506011546106b890640100000000900460ff1681565b60405160ff9091168152602001610541565b3480156106d657600080fd5b506104e86106e536600461347b565b611177565b3480156106f657600080fd5b506011546106b89062010000900460ff1681565b34801561071657600080fd5b50600d54610582565b34801561072b57600080fd5b506105826111b2565b34801561074057600080fd5b50600b5461066390610100900461ffff1681565b34801561076057600080fd5b5061063061076f366004613496565b6111cf565b34801561078057600080fd5b506019546106b89060ff1681565b34801561079a57600080fd5b506015546105b7906001600160a01b031681565b3480156107ba57600080fd5b506104e86107c9366004613448565b611266565b3480156107da57600080fd5b50600b546106b8906301000000900460ff1681565b3480156107fb57600080fd5b5060126106b8565b34801561080f57600080fd5b506106b8601281565b34801561082457600080fd5b506104e86108333660046134d7565b6112ad565b34801561084457600080fd5b50600b5461066390600160301b900461ffff1681565b34801561086657600080fd5b506104e86108753660046134fe565b6112d7565b34801561088657600080fd5b506011546106b8906301000000900460ff1681565b3480156108a757600080fd5b5060145461063090600160a01b900460ff1681565b3480156108c857600080fd5b506106306108d736600461341c565b61131e565b3480156108e857600080fd5b50610582601b5481565b3480156108fe57600080fd5b5061058260185481565b34801561091457600080fd5b506011546106b89060ff1681565b34801561092e57600080fd5b5061058261093d366004613448565b611355565b34801561094e57600080fd5b5061058260175481565b34801561096457600080fd5b50601e5461063090610100900460ff1681565b34801561098357600080fd5b506104e8610992366004613448565b61138f565b3480156109a357600080fd5b50610582600f5481565b3480156109b957600080fd5b506104e86109c8366004613448565b6113de565b3480156109d957600080fd5b506104e86109e836600461351b565b611434565b3480156109f957600080fd5b5061058260105481565b348015610a0f57600080fd5b50601d54610582565b348015610a2457600080fd5b506104e8610a33366004613448565b611524565b348015610a4457600080fd5b506104e8610a53366004613448565b61156a565b348015610a6457600080fd5b50610582610a73366004613448565b60016020526000908152604090205481565b348015610a9157600080fd5b506104e8610aa03660046134d7565b6116c5565b348015610ab157600080fd5b506104e861176d565b348015610ac657600080fd5b50610582610ad5366004613448565b6001600160a01b031660009081526001602052604090205490565b348015610afc57600080fd5b506104e8611791565b348015610b1157600080fd5b506104e8611844565b348015610b2657600080fd5b50610582600e5481565b348015610b3c57600080fd5b506104e8610b4b366004613580565b611929565b348015610b5c57600080fd5b506104e8610b6b3660046134d7565b611979565b348015610b7c57600080fd5b506104e8610b8b3660046134fe565b6119b4565b348015610b9c57600080fd5b506105b761dead81565b348015610bb257600080fd5b50610582601a5481565b348015610bc857600080fd5b50601e546106309060ff1681565b348015610be257600080fd5b50601c5461063090610100900460ff1681565b348015610c0157600080fd5b506000546001600160a01b03166105b7565b348015610c1f57600080fd5b506104e86119f3565b348015610c3457600080fd5b506016546105b7906001600160a01b031681565b348015610c5457600080fd5b50604080518082019091526005815264464c4f434b60d81b6020820152610603565b348015610c8257600080fd5b506104e8611a32565b348015610c9757600080fd5b50610630610ca6366004613448565b60086020526000908152604090205460ff1681565b348015610cc757600080fd5b50610582600d5481565b348015610cdd57600080fd5b506104e8611aac565b348015610cf257600080fd5b50610630610d0136600461341c565b611adb565b348015610d1257600080fd5b506104e8610d213660046134fe565b611b57565b348015610d3257600080fd5b50610630610d4136600461341c565b611b8f565b348015610d5257600080fd5b506104e8610d613660046134d7565b611b9c565b348015610d7257600080fd5b5060115461063090600160381b900460ff1681565b348015610d9357600080fd5b506104e8610da23660046134fe565b611bc6565b348015610db357600080fd5b5061060360405180604001604052806005815260200164464c4f434b60d81b81525081565b348015610de457600080fd5b506104e8610df3366004613448565b611c0d565b348015610e0457600080fd5b506104e8610e133660046134fe565b611c56565b348015610e2457600080fd5b506104e8610e333660046134fe565b611c8e565b348015610e4457600080fd5b506104e8610e533660046134fe565b611cc6565b348015610e6457600080fd5b506104e8610e733660046134fe565b611d05565b348015610e8457600080fd5b506104e8611d48565b348015610e9957600080fd5b506105b7737a250d5630b4cf539739df2c5dacb4c659f2488d81565b348015610ec157600080fd5b506011546106b890610100900460ff1681565b348015610ee057600080fd5b506104e8610eef366004613448565b611d78565b348015610f0057600080fd5b506106036040518060400160405280600f81526020016e412048756e7465727320426c65737360881b81525081565b348015610f3b57600080fd5b506104e8610f4a366004613448565b611dbf565b348015610f5b57600080fd5b506104e8610f6a366004613448565b611def565b348015610f7b57600080fd5b5060115461063090600160301b900460ff1681565b348015610f9c57600080fd5b50610582610fab36600461338e565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b348015610fe257600080fd5b506104e8610ff13660046135ae565b611e1f565b34801561100257600080fd5b506104e86110113660046135d0565b611e7e565b34801561102257600080fd5b5061102b611ec8565b60408051928352602083019190915201610541565b34801561104c57600080fd5b506104e861105b366004613580565b611f05565b34801561106c57600080fd5b506104e861107b366004613448565b611f55565b34801561108c57600080fd5b506104e861109b366004613448565b611f85565b3480156110ac57600080fd5b506012546105b7906001600160a01b031681565b3480156110cc57600080fd5b50610582601d5481565b3480156110e257600080fd5b506013546105b7906001600160a01b031681565b34801561110257600080fd5b50610582611111366004613448565b60036020526000908152604090205481565b60006111303384846120c3565b5060015b92915050565b611143336121b6565b6111685760405162461bcd60e51b815260040161115f906135f4565b60405180910390fd5b6111736004826120ae565b5050565b611180336121b6565b61119c5760405162461bcd60e51b815260040161115f906135f4565b6019805460ff191660ff92909216919091179055565b6111be6012600a61371a565b6111cc906305f5e100613729565b81565b60006111dc8484846121ed565b6001600160a01b0384166000908152600260209081526040808320338452909152902054828110156112475760405162461bcd60e51b81526020600482015260146024820152735472616e73666572203e20616c6c6f77616e636560601b604482015260640161115f565b61125b85336112568685613748565b6120c3565b506001949350505050565b61126f336121b6565b61128b5760405162461bcd60e51b815260040161115f906135f4565b601280546001600160a01b0319166001600160a01b0392909216919091179055565b6112b6336121b6565b6112d25760405162461bcd60e51b815260040161115f906135f4565b600a55565b6112e0336121b6565b6112fc5760405162461bcd60e51b815260040161115f906135f4565b60118054911515600160381b0267ff0000000000000019909216919091179055565b3360008181526002602090815260408083206001600160a01b0387168452909152812054909161113091859061125690869061375f565b6001600160a01b03811660009081526003602052604081205442811161137e5750600092915050565b6113884282613748565b9392505050565b611398336121b6565b6113b45760405162461bcd60e51b815260040161115f906135f4565b601e80546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6113e7336121b6565b6114035760405162461bcd60e51b815260040161115f906135f4565b601180546001600160a01b03909216600160401b0268010000000000000000600160e01b0319909216919091179055565b61143d336121b6565b6114595760405162461bcd60e51b815260040161115f906135f4565b60006114658587613777565b90508060ff166064146114ba5760405162461bcd60e51b815260206004820152601c60248201527f6275726e2b6c6971206e6565647320746f20657175616c203130302500000000604482015260640161115f565b506011805460ff928316620100000262ff0000199484166101000261ffff1997851663010000000263ff00000019998616640100000000029990991664ffff0000001990931692909217979097179590951693909116929092179290921791909116919091179055565b61152d336121b6565b6115495760405162461bcd60e51b815260040161115f906135f4565b6001600160a01b03166000908152600860205260409020805460ff19169055565b611573336121b6565b61158f5760405162461bcd60e51b815260040161115f906135f4565b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a0823190602401602060405180830381865afa1580156115d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115fc919061379c565b90506000811161164e5760405162461bcd60e51b815260206004820152601860248201527f4e6f20746f6b656e7320696e206f75722062616c616e63650000000000000000604482015260640161115f565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af115801561169b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116bf91906137b5565b50505050565b6116ce336121b6565b6116ea5760405162461bcd60e51b815260040161115f906135f4565b3060009081526001602052604090205481111561170657600080fd5b3060009081526001602052604081208054839290611725908490613748565b9250508190555080600d600082825461173e9190613748565b909155505060405181815261dead90309060008051602061394b8339815191529060200160405180910390a350565b6014546001600160a01b0316331461178457600080fd5b4761178e816125fd565b50565b336117a46000546001600160a01b031690565b6001600160a01b0316146117fa5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161115f565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b61184d336121b6565b6118695760405162461bcd60e51b815260040161115f906135f4565b600062989680601a544761187d9190613748565b6118879190613748565b905060003390506000816001600160a01b0316836040515b60006040518083038185875af1925050503d80600081146118dc576040519150601f19603f3d011682016040523d82523d6000602084013e6118e1565b606091505b50509050806119245760405162461bcd60e51b815260206004820152600f60248201526e1dda5d1a191c985dc819985a5b1959608a1b604482015260640161115f565b505050565b611932336121b6565b61194e5760405162461bcd60e51b815260040161115f906135f4565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b611982336121b6565b61199e5760405162461bcd60e51b815260040161115f906135f4565b61178e6119af82633b9aca00613729565b612637565b6119bd336121b6565b6119d95760405162461bcd60e51b815260040161115f906135f4565b601c80549115156101000261ff0019909216919091179055565b6119fc336121b6565b611a185760405162461bcd60e51b815260040161115f906135f4565b601a8054600091829055604051909133918290849061189f565b611a3b336121b6565b611a575760405162461bcd60e51b815260040161115f906135f4565b604051600090339047908381818185875af1925050503d8060008114611a99576040519150601f19603f3d011682016040523d82523d6000602084013e611a9e565b606091505b505090508061178e57600080fd5b611ab5336121b6565b611ad15760405162461bcd60e51b815260040161115f906135f4565b611ad961278e565b565b3360009081526002602090815260408083206001600160a01b038616845290915281205482811015611b3e5760405162461bcd60e51b815260206004820152600c60248201526b3c3020616c6c6f77616e636560a01b604482015260640161115f565b611b4d33856112568685613748565b5060019392505050565b611b60336121b6565b611b7c5760405162461bcd60e51b815260040161115f906135f4565b6009805460ff1916911515919091179055565b60006111303384846121ed565b611ba5336121b6565b611bc15760405162461bcd60e51b815260040161115f906135f4565b601d55565b611bcf336121b6565b611beb5760405162461bcd60e51b815260040161115f906135f4565b60118054911515650100000000000265ff000000000019909216919091179055565b611c16336121b6565b611c325760405162461bcd60e51b815260040161115f906135f4565b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b611c5f336121b6565b611c7b5760405162461bcd60e51b815260040161115f906135f4565b600b805460ff1916911515919091179055565b611c97336121b6565b611cb35760405162461bcd60e51b815260040161115f906135f4565b601e805460ff1916911515919091179055565b611ccf336121b6565b611ceb5760405162461bcd60e51b815260040161115f906135f4565b601e80549115156101000261ff0019909216919091179055565b611d0e336121b6565b611d2a5760405162461bcd60e51b815260040161115f906135f4565b60148054911515600160a01b0260ff60a01b19909216919091179055565b6014546001600160a01b03163314611d5f57600080fd5b3060009081526001602052604090205461178e81612aa9565b611d81336121b6565b611d9d5760405162461bcd60e51b815260040161115f906135f4565b601380546001600160a01b0319166001600160a01b0392909216919091179055565b611dc8336121b6565b611de45760405162461bcd60e51b815260040161115f906135f4565b6111736006826120ae565b611df8336121b6565b611e145760405162461bcd60e51b815260040161115f906135f4565b611173600682612c02565b611e28336121b6565b611e445760405162461bcd60e51b815260040161115f906135f4565b611e506012600a61371a565b611e5a9083613729565b9150611e686012600a61371a565b611e729082613729565b600e9290925550600f55565b611e87336121b6565b611ea35760405162461bcd60e51b815260040161115f906135f4565b600b805461ffff909216600160301b0267ffff00000000000019909216919091179055565b600080611ed76012600a61371a565b600e54611ee491906137d2565b611ef06012600a61371a565b600f54611efd91906137d2565b915091509091565b611f0e336121b6565b611f2a5760405162461bcd60e51b815260040161115f906135f4565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b611f5e336121b6565b611f7a5760405162461bcd60e51b815260040161115f906135f4565b611173600482612c02565b33611f986000546001600160a01b031690565b6001600160a01b031614611fee5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161115f565b6001600160a01b0381166120535760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161115f565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000611388836001600160a01b038416612c17565b6001600160a01b03831661210d5760405162461bcd60e51b8152602060048201526011602482015270417070726f76652066726f6d207a65726f60781b604482015260640161115f565b6001600160a01b0382166121555760405162461bcd60e51b815260206004820152600f60248201526e417070726f766520746f207a65726f60881b604482015260640161115f565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600080546001600160a01b03838116911614806111345750506001600160a01b03166000908152600c602052604090205460ff1690565b6001600160a01b0383166122385760405162461bcd60e51b81526020600482015260126024820152715472616e736665722066726f6d207a65726f60701b604482015260640161115f565b6001600160a01b0382166122815760405162461bcd60e51b815260206004820152601060248201526f5472616e7366657220746f207a65726f60801b604482015260640161115f565b60095460ff1615612309576001600160a01b03831660009081526008602052604090205460ff161580156122ce57506001600160a01b03821660009081526008602052604090205460ff16155b6123095760405162461bcd60e51b815260206004820152600c60248201526b426c61636b6c69737465642160a01b604482015260640161115f565b6011546001600160a01b03848116600160401b9092041614600061232e600486612c66565b8061233f575061233f600485612c66565b8061236257506001600160a01b0385166000908152600c602052604090205460ff165b8061238557506001600160a01b0384166000908152600c602052604090205460ff165b905060006001600160a01b0386163014806123a857506001600160a01b03851630145b6015549091506000906001600160a01b0388811691161480156123e757506001600160a01b038616737a250d5630b4cf539739df2c5dacb4c659f2488d145b8061242657506015546001600160a01b03878116911614801561242657506001600160a01b038716737a250d5630b4cf539739df2c5dacb4c659f2488d145b905081806124315750805b806124395750825b806124415750835b1561245657612451878787612c88565b6125f4565b601e54610100900460ff16612544576000546001600160a01b0388811691161480159061249157506000546001600160a01b03878116911614155b1561254457601154600160301b900460ff16156124ed57856001600160a01b0316876001600160a01b031660008051602061394b83398151915260006040516124dc91815260200190565b60405180910390a350505050505050565b601e54610100900460ff166125445760405162461bcd60e51b815260206004820152601760248201527f74726164696e67206e6f742079657420656e61626c6564000000000000000000604482015260640161115f565b6015546000906001600160a01b038981169116148061257f57506001600160a01b038816737a250d5630b4cf539739df2c5dacb4c659f2488d145b6015549091506000906001600160a01b03898116911614806125bd57506001600160a01b038816737a250d5630b4cf539739df2c5dacb4c659f2488d145b90506125cc8989898585612d41565b601154600160381b900460ff16156125f1575060009450849350839250829150819050805b50505b50505050505050565b6014546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611173573d6000803e3d6000fd5b601c805460ff191660019081179091553060009081526020919091526040902054601154600a54630100000090910460ff16908381111561268057600b5460ff16156126805750825b80831080612690575061ffff8216155b1561269d57505050612781565b60115460009061ffff8416906126bd906301000000900460ff1684613729565b6126c791906137d2565b60115490915060009061ffff8516906126eb90640100000000900460ff1685613729565b6126f591906137d2565b905060006127046002846137d2565b905060006127128285613748565b90506000612720848361375f565b90504761272c82612aa9565b60006127388247613748565b90506000836127478684613729565b61275191906137d2565b905061275d86826130d4565b60006127698447613748565b90506127748161319c565b5050505050505050505050505b50601c805460ff19169055565b601a546014546000908190600160a01b900460ff16156127c6576127b36002846137d2565b91506127bf8284613748565b90506127ca565b8291505b6040805160028082526060820183526000926020830190803683375050601654604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015612834573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061285891906137f4565b8160008151811061286b5761286b613811565b6001600160a01b03928316602091820292909201015260125482519116908290600190811061289c5761289c613811565b6001600160a01b03928316602091820292909201015260165460405163b6f9de9560e01b815291169063b6f9de959085906128e490600090869061dead90429060040161386b565b6000604051808303818588803b1580156128fd57600080fd5b505af1158015612911573d6000803e3d6000fd5b505050505082601a60008282546129289190613748565b9091555050601454600160a01b900460ff16156116bf576040805160028082526060820183526000926020830190803683375050601654604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa1580156129a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129cd91906137f4565b826000815181106129e0576129e0613811565b6001600160a01b039283166020918202929092010152601354835191169083906001908110612a1157612a11613811565b6001600160a01b03928316602091820292909201015260165460405163b6f9de9560e01b815291169063b6f9de95908590612a5990600090869061dead90429060040161386b565b6000604051808303818588803b158015612a7257600080fd5b505af1158015612a86573d6000803e3d6000fd5b505050505082601a6000828254612a9d9190613748565b90915550505050505050565b601654612ac19030906001600160a01b0316836120c3565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612af657612af6613811565b6001600160a01b03928316602091820292909201810191909152601654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612b4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b7391906137f4565b81600181518110612b8657612b86613811565b6001600160a01b03928316602091820292909201015260165460405163791ac94760e01b815291169063791ac94790612bcc9085906000908690309042906004016138a0565b600060405180830381600087803b158015612be657600080fd5b505af1158015612bfa573d6000803e3d6000fd5b505050505050565b6000611388836001600160a01b0384166131ef565b6000818152600183016020526040812054612c5e57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155611134565b506000611134565b6001600160a01b03811660009081526001830160205260408120541515611388565b6001600160a01b03831660009081526001602052604090205481811015612cec5760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b604482015260640161115f565b612cf684836132dc565b612d008383613321565b826001600160a01b0316846001600160a01b031660008051602061394b83398151915284604051612d3391815260200190565b60405180910390a350505050565b6001600160a01b0380851660009081526001602052604080822054928816825290205484811015612daf5760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b604482015260640161115f565b6002600f54612dbe91906137d2565b600a5560008315612ec357612dd4600689612c66565b612e6e576001600160a01b03881660009081526003602052604090205442101580612e065750601c54610100900460ff165b612e475760405162461bcd60e51b815260206004820152601260248201527153656c6c657220696e2073656c6c4c6f636b60701b604482015260640161115f565b601d54612e54904261375f565b6001600160a01b0389166000908152600360205260409020555b600f54861115612eb25760405162461bcd60e51b815260206004820152600f60248201526e223ab6b810383937ba32b1ba34b7b760891b604482015260640161115f565b50601154610100900460ff16612fd5565b8415612f2257600e54612ed6878561375f565b1115612ef45760405162461bcd60e51b815260040161115f906138dc565b601054861115612f165760405162461bcd60e51b815260040161115f906138dc565b5060115460ff16612fd5565b600e54612f2f878561375f565b1115612f4d5760405162461bcd60e51b815260040161115f906138dc565b612f58600689612c66565b612fc7576001600160a01b03881660009081526003602052604090205442101580612f8a5750601c54610100900460ff165b612fc75760405162461bcd60e51b815260206004820152600e60248201526d53656e64657220696e204c6f636b60901b604482015260640161115f565b5060115462010000900460ff165b6015546001600160a01b03898116911614801590612ff65750601e5460ff16155b80156130055750601c5460ff16155b156130135761301386612637565b601154600090613044908890849061303f9060ff64010000000082048116916301000000900416613777565b613345565b905060006130528289613748565b905061305e8a896132dc565b306000908152600160205260408120805484929061307d90849061375f565b9091555061308d90508982613321565b886001600160a01b03168a6001600160a01b031660008051602061394b833981519152836040516130c091815260200190565b60405180910390a350505050505050505050565b80601b60008282546130e6919061375f565b90915550506016546131039030906001600160a01b0316846120c3565b60165460405163f305d71960e01b8152306004820181905260248201859052600060448301819052606483015260848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015613170573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906131959190613906565b5050505050565b6019546000906064906131b29060ff1684613729565b6131bc91906137d2565b905080601a60008282546131d0919061375f565b9091555050601a54670de0b6b3a764000010156111735761117361278e565b600081815260018301602052604081205480156132d2576000613213600183613748565b855490915060009061322790600190613748565b9050600086600001828154811061324057613240613811565b906000526020600020015490508087600001848154811061326357613263613811565b60009182526020808320909101929092558281526001890190915260409020849055865487908061329657613296613934565b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050611134565b6000915050611134565b6001600160a01b038216600090815260016020526040812054613300908390613748565b6001600160a01b039093166000908152600160205260409020929092555050565b6001600160a01b03821660009081526001602052604081205461330090839061375f565b60006127108260ff168460ff168661335d9190613729565b6133679190613729565b61337191906137d2565b949350505050565b6001600160a01b038116811461178e57600080fd5b600080604083850312156133a157600080fd5b82356133ac81613379565b915060208301356133bc81613379565b809150509250929050565b600060208083528351808285015260005b818110156133f4578581018301518582016040015282016133d8565b81811115613406576000604083870101525b50601f01601f1916929092016040019392505050565b6000806040838503121561342f57600080fd5b823561343a81613379565b946020939093013593505050565b60006020828403121561345a57600080fd5b813561138881613379565b803560ff8116811461347657600080fd5b919050565b60006020828403121561348d57600080fd5b61138882613465565b6000806000606084860312156134ab57600080fd5b83356134b681613379565b925060208401356134c681613379565b929592945050506040919091013590565b6000602082840312156134e957600080fd5b5035919050565b801515811461178e57600080fd5b60006020828403121561351057600080fd5b8135611388816134f0565b600080600080600060a0868803121561353357600080fd5b61353c86613465565b945061354a60208701613465565b935061355860408701613465565b925061356660608701613465565b915061357460808701613465565b90509295509295909350565b6000806040838503121561359357600080fd5b823561359e81613379565b915060208301356133bc816134f0565b600080604083850312156135c157600080fd5b50508035926020909101359150565b6000602082840312156135e257600080fd5b813561ffff8116811461138857600080fd5b602080825260129082015271086c2d8d8cae440dcdee840d2dc4082eae8d60731b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561367157816000190482111561365757613657613620565b8085161561366457918102915b93841c939080029061363b565b509250929050565b60008261368857506001611134565b8161369557506000611134565b81600181146136ab57600281146136b5576136d1565b6001915050611134565b60ff8411156136c6576136c6613620565b50506001821b611134565b5060208310610133831016604e8410600b84101617156136f4575081810a611134565b6136fe8383613636565b806000190482111561371257613712613620565b029392505050565b600061138860ff841683613679565b600081600019048311821515161561374357613743613620565b500290565b60008282101561375a5761375a613620565b500390565b6000821982111561377257613772613620565b500190565b600060ff821660ff84168060ff0382111561379457613794613620565b019392505050565b6000602082840312156137ae57600080fd5b5051919050565b6000602082840312156137c757600080fd5b8151611388816134f0565b6000826137ef57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561380657600080fd5b815161138881613379565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b838110156138605781516001600160a01b03168752958201959082019060010161383b565b509495945050505050565b8481526080602082015260006138846080830186613827565b6001600160a01b03949094166040830152506060015292915050565b85815284602082015260a0604082015260006138bf60a0830186613827565b6001600160a01b0394909416606083015250608001529392505050565b60208082526010908201526f3bb430b63290383937ba32b1ba34b7b760811b604082015260600190565b60008060006060848603121561391b57600080fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b600052603160045260246000fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220a4ae419f34da108779a066fd52655cf31a9dc50d49961915c84d2546891ff71364736f6c634300080d0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000004b7945f27acec70c01fb96999b659ddf85875f1b
-----Decoded View---------------
Arg [0] : unclg (address): 0x4B7945f27acEC70C01FB96999b659Ddf85875F1B
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000004b7945f27acec70c01fb96999b659ddf85875f1b
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.