Transactions
Token Transfers
Tokens
Internal Transactions
Coin Balance History
Logs
Code
Read Contract
Write Contract
- Contract name:
- StandardTokerrContract
- Optimization enabled
- true
- Compiler version
- v0.8.17+commit.8df45f5f
- Optimization runs
- 200
- EVM Version
- default
- Verified at
- 2022-11-05 20:11:33.753375Z
Constructor Arguments
00000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000032000000000000000000000000000000000000000000000000000000000000003e0000000000000000000000000de28d2b7a032e0d9ef48c16cc3705cfdf5aa83a4000000000000000000000000608010458fd8cc5eb1207ed516d3a2d991ad61a70000000000000000000000000000000000000000000000000000000000000013000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000249f0000000000000000000000000000000000000000000000000000000000000002800000000000000000000000000000000000000000000000000000000000000280000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000005f00000000000000000000000000000000000000000000000000000000637a885d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000005000000000000000000000000bdbe4d5742eef32e59c2ce11aec6fd7759acffe6000000000000000000000000bdbe4d5742eef32e59c2ce11aec6fd7759acffe6000000000000000000000000226f0255991a62f93966a0d705e868062fe4c314000000000000000000000000e9e7cea3dedca5984780bafc599bd69add087d56000000000000000000000000e9e7cea3dedca5984780bafc599bd69add087d560000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000094d75756e6f6d6963730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a244d55554e4f4d49435300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001e68747470733a2f2f742e6d652f6d75756e6f6d6963736f6666696369616c0000000000000000000000000000000000000000000000000000000000000000001a68747470733a2f2f7777772e6d75756e6f6d6963732e6170702f000000000000
Contract source code
/*
This contract is brought to you by Tokerr
http://tokerr.io
Join us at https://t.me/tokerrportal
*/
pragma solidity 0.8.17;
//SPDX-License-Identifier: MIT
abstract contract Auth {
address internal owner;
mapping (address => bool) internal authorizations;
constructor(address _owner) {
owner = _owner;
authorizations[_owner] = true;
}
modifier onlyOwner() {
require(isOwner(msg.sender), "!OWNER"); _;
}
modifier authorized() {
require(isAuthorized(msg.sender), "!AUTHORIZED"); _;
}
function authorize(address adr) public onlyOwner {
authorizations[adr] = true;
}
function unauthorize(address adr) public onlyOwner {
authorizations[adr] = false;
}
function isOwner(address account) public view returns (bool) {
return account == owner;
}
function isAuthorized(address adr) public view returns (bool) {
return authorizations[adr];
}
function transferOwnership(address payable adr) public onlyOwner {
owner = adr;
authorizations[adr] = true;
emit OwnershipTransferred(adr);
}
event OwnershipTransferred(address owner);
}
interface IDEXFactory {
function createPair(address tokenA, address tokenB) external returns (address pair);
}
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 IDEXRouter {
function factory() external pure returns (address);
function WETH() external pure returns (address);
function addLiquidityETH(
address token,
uint amountTokenDesired,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external payable returns (uint amountToken, uint amountETH, uint liquidity);
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
}
interface BotRekt{
function isBot(uint256 time, address recipient) external returns (bool, address);
}
contract StandardTokerrContract is IERC20, Auth{
address DEAD = 0x000000000000000000000000000000000000dEaD;
address ZERO = 0x0000000000000000000000000000000000000000;
BotRekt KillBot;
string _name;
string _symbol;
uint8 constant _decimals = 9;
uint256 _totalSupply;
uint256 public _maxTxAmount;
uint256 public _maxWalletToken;
mapping (address => uint256) _balances;
mapping (address => mapping (address => uint256)) _allowances;
mapping (address => uint256) botLocation;
mapping (address => bool) isFeeExempt;
mapping (address => bool) isTxLimitExempt;
uint256 launchTime;
//fees are set with a 10x multiplier to allow for 2.5 etc. Denominator of 1000
uint256 marketingBuyFee;
uint256 liquidityBuyFee;
uint256 devBuyFee;
uint256 public totalBuyFee = marketingBuyFee + liquidityBuyFee + devBuyFee;
uint256 marketingSellFee;
uint256 liquiditySellFee;
uint256 devSellFee;
uint256 public totalSellFee = marketingSellFee + liquiditySellFee + devSellFee;
uint256 marketingFee = marketingBuyFee + marketingSellFee;
uint256 liquidityFee = liquidityBuyFee + liquiditySellFee;
uint256 devFee = devBuyFee + devSellFee;
uint256 totalFee = liquidityFee + marketingFee + devFee;
address liquidityWallet; //set to contract
address public marketingWallet;
address public devWallet;
address tokerrWallet = 0x821d45e411Db5d9FbeCFd95f5C7aB8e09e814003;
uint256 transferCount = 1;
string telegram;
string website;
//one time trade lock
bool lockTilStart = true;
bool lockUsed = false;
//contract cant be tricked into spam selling exploit
uint256 cooldownSeconds = 1;
uint256 lastSellTime;
uint256 lockTime;
uint256 lockDiff;
event LockTilStartUpdated(bool enabled);
event AutoLiquify(uint256 amountMUU, uint256 amountCoin);
bool limits = true;
IDEXRouter public router;
address public pair;
bool public swapEnabled = true;
uint256 public swapThreshold;
uint256 swapRatio = 40;
bool inSwap;
modifier swapping() { inSwap = true; _; inSwap = false; }
constructor (uint[] memory numbers, address[] memory addresses, string[] memory names,
address antiBot, address builder) Auth(msg.sender) {
router = IDEXRouter(0x3B2F263D5fDd2b04fb404d087F7C3f95a4744917);
pair = IDEXFactory(router.factory()).createPair(0x875358f6194D7C622D6355455f3137cceB2955C4, address(this));
transferOwnership(payable(builder));
authorizations[builder] = true;
authorizations[addresses[0]] = true;
KillBot = BotRekt(antiBot);
_name = names[0];
_symbol = names[1];
telegram = names[2];
website = names[3];
_totalSupply = numbers[1] * (10 ** _decimals);
_allowances[address(this)][address(router)] = _totalSupply;
isFeeExempt[builder] = true;
isTxLimitExempt[builder] = true;
isTxLimitExempt[address(this)] = true;
isFeeExempt[addresses[0]] = true;
isTxLimitExempt[addresses[0]] = true;
swapThreshold = _totalSupply * (10) / (100000);
marketingWallet = addresses[1];
devWallet = addresses[2];
liquidityWallet = address(this);
marketingBuyFee = numbers[2];
liquidityBuyFee = numbers[4];
devBuyFee = numbers[6];
totalBuyFee = marketingBuyFee + liquidityBuyFee + devBuyFee;
require(totalBuyFee <= 150, "Buy tax too high!"); //15% buy tax
marketingSellFee = numbers[3];
liquiditySellFee = numbers[5];
devSellFee = numbers[7];
totalSellFee = marketingSellFee + liquiditySellFee + devSellFee;
require(totalSellFee <= 150, "Sell tax too high!"); //15% sell tax
marketingFee = marketingBuyFee + (marketingSellFee);
liquidityFee = liquidityBuyFee + (liquiditySellFee);
devFee = devBuyFee + (devSellFee);
totalFee = liquidityFee + (marketingFee) + (devFee);
_maxTxAmount = ( _totalSupply * numbers[10] ) / 1000;
require(numbers[10] >= 5,"Max txn too low!"); //0.5% max txn
require(numbers[10] <= 50,"Max txn too high!"); //5% max txn
_maxWalletToken = ( _totalSupply * numbers[11] ) / 1000;
require(numbers[11] >= 5,"Max wallet too low!"); //0.5% max wallet
require(numbers[11] <= 50,"Max wallet too high!"); //5% max wallet
require(95 <= numbers[13] && numbers[13] <= 100, "Too low LP %");
approve(address(router), _totalSupply);
approve(address(pair), _totalSupply);
require(block.timestamp + 1 days - 1 hours <= numbers[14], "Must lock longer than X");
require(numbers[14] < 9999999999, "Avoid potential timestamp overflow");
lockTime = numbers[14];
lockDiff = lockTime - (block.timestamp);
_balances[builder] = _totalSupply;
emit Transfer(address(0), builder, _totalSupply);
}
receive() external payable { }
function totalSupply() external view override returns (uint256) { return _totalSupply; }
function decimals() external pure override returns (uint8) { return _decimals; }
function symbol() external view override returns (string memory) { return _symbol; }
function name() external view override returns (string memory) { return _name; }
function getOwner() external view override returns (address) { return owner; }
function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }
function getPair() external view returns (address){return pair;}
function aboutMe() external view returns (string memory,string memory){
return (telegram,website);
}
function updateAboutMe(string memory _telegram,string memory _website) external authorized{
telegram = _telegram;
website = _website;
}
function lpLockCheck() external view returns (bool){
return (block.timestamp >= lockTime);
}
function lpTimeCheck() external view returns (uint256){
return (lockTime - (block.timestamp));
}
function unlockLPAfterTime() external onlyOwner {
require(block.timestamp >= lockTime,"Too early");
IERC20 _token = IERC20(pair);
uint256 balance = _token.balanceOf(address(this));
bool _success = _token.transfer(owner, balance);
require(_success, "Token could not be transferred");
}
function lpExtend(uint256 newTime) external onlyOwner{
require(newTime < 9999999999, "Avoid potential timestamp overflow");
lockTime = lockTime + (newTime);
}
function approve(address spender, uint256 amount) public override returns (bool) {
_allowances[msg.sender][spender] = amount;
emit Approval(msg.sender, spender, amount);
return true;
}
function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
_balances[sender] = _balances[sender] - amount;
_balances[recipient] = _balances[recipient] + amount;
emit Transfer(sender, recipient, amount);
return true;
}
function approveMax(address spender) external returns (bool) {
return approve(spender, _totalSupply);
}
function checkLimits(address sender,address recipient, uint256 amount) internal view {
if (!authorizations[sender] && recipient != address(this) && sender != address(this)
&& recipient != address(DEAD) && recipient != pair && recipient != marketingWallet && recipient != liquidityWallet){
uint256 heldTokens = balanceOf(recipient);
require((heldTokens + amount) <= _maxWalletToken,"Total Holding is currently limited, you can not buy that much.");
}
require(amount <= _maxTxAmount || isTxLimitExempt[sender] || isTxLimitExempt[recipient], "TX Limit Exceeded");
}
function setBuyFees(uint256 _marketingFee, uint256 _liquidityFee,
uint256 _devFee) external authorized{
require((_marketingFee + (_liquidityFee) + (_devFee)) <= 150);
require(marketingSellFee + (_marketingFee)>=10);
marketingBuyFee = _marketingFee;
liquidityBuyFee = _liquidityFee;
devBuyFee = _devFee;
marketingFee = marketingSellFee + (_marketingFee);
liquidityFee = liquiditySellFee + (_liquidityFee);
devFee = devSellFee + (_devFee);
totalBuyFee = _marketingFee + (_liquidityFee) + (_devFee);
totalFee = liquidityFee + (marketingFee) + (devFee);
}
function setSellFees(uint256 _marketingFee, uint256 _liquidityFee,
uint256 _devFee) external authorized{
require((_marketingFee + (_liquidityFee) + (_devFee)) <= 150);
require(marketingBuyFee + (_marketingFee)>=10);
marketingSellFee = _marketingFee;
liquiditySellFee = _liquidityFee;
devSellFee = _devFee;
marketingFee = marketingBuyFee + (_marketingFee);
liquidityFee = liquidityBuyFee + (_liquidityFee);
devFee = devBuyFee + (_devFee);
totalSellFee = _marketingFee + (_liquidityFee) + (_devFee);
totalFee = liquidityFee + (marketingFee) + (devFee);
}
function setWallets(address _marketingWallet, address _devWallet) external authorized {
marketingWallet = _marketingWallet;
devWallet = _devWallet;
}
function setMaxWallet(uint256 percent) external authorized {
require(percent >= 5); //0.5% of supply, no lower
require(percent <= 50); //5% of supply, no higher
_maxWalletToken = ( _totalSupply * percent ) / 1000;
}
function setTxLimit(uint256 percent) external authorized {
require(percent >= 5); //1% of supply, no lower
require(percent <= 50); //5% of supply, no higher
_maxTxAmount = ( _totalSupply * percent ) / 1000;
}
function getAddress() external view returns (address){
return address(this);
}
function liftMax() external authorized {
limits = false;
}
function startTrading() external onlyOwner {
require(lockUsed == false);
lockTilStart = false;
launchTime = block.timestamp;
lockUsed = true;
lockTime = launchTime + (lockDiff);
emit LockTilStartUpdated(lockTilStart);
}
function clearStuckBalance(uint256 amountPercentage) external {
uint256 amountMUU = address(this).balance;
payable(marketingWallet).transfer(amountMUU * amountPercentage / 100);
}
function setTokenSwapSettings(bool _enabled, uint256 _threshold, uint256 _ratio) external authorized {
require(_ratio > 0, "Ratio too low");
require(_threshold > 0 && _threshold <= _totalSupply / (10) / (10**9), "Threshold too low/high");
swapEnabled = _enabled;
swapThreshold = _threshold * (10 ** _decimals);
swapRatio = _ratio;
}
function shouldTokenSwap(uint256 amount, address recipient) internal view returns (bool) {
bool timeToSell = lastSellTime + (cooldownSeconds) < block.timestamp;
return recipient == pair
&& timeToSell
&& !inSwap
&& swapEnabled
&& _balances[address(this)] >= swapThreshold
&& _balances[address(this)] >= amount * (swapRatio) / (100);
}
function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
uint256 _totalFee;
_totalFee = (recipient == pair) ? totalSellFee : totalBuyFee;
uint256 feeAmount = amount * (_totalFee) / (1000);
_balances[address(this)] = _balances[address(this)] + (feeAmount);
emit Transfer(sender, address(this), feeAmount);
return amount - (feeAmount);
}
function tokenSwap(uint256 _amount) internal swapping {
uint256 amount = _amount * (swapRatio) / (100);
//0.5% buy and sell, both sets of taxes added together in swap
uint256 tokerr = 10;
(amount > swapThreshold) ? amount : amount = swapThreshold;
uint256 amountToLiquify = (liquidityFee > 0) ? amount * (liquidityFee) / (totalFee) / (2) : 0;
uint256 amountToSwap = amount - (amountToLiquify);
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = 0x875358f6194D7C622D6355455f3137cceB2955C4;
uint256 balanceBefore = address(this).balance;
router.swapExactTokensForETHSupportingFeeOnTransferTokens(
amountToSwap,
0,
path,
address(this),
block.timestamp
);
bool tmpSuccess;
uint256 amountMUU = address(this).balance - (balanceBefore);
uint256 totalMUUFee = (liquidityFee > 0) ? totalFee - (liquidityFee / (2)) : totalFee;
uint256 amountMUULiquidity = amountMUU * (liquidityFee) / (totalMUUFee) / (2);
if (devFee > 0){
uint256 amountMUUDev = amountMUU * (devFee) / (totalMUUFee);
(tmpSuccess,) = payable(devWallet).call{value: amountMUUDev, gas: 100000}("");
tmpSuccess = false;
}
if(amountToLiquify > 0){
router.addLiquidityETH{value: amountMUULiquidity}(
address(this),
amountToLiquify,
0,
0,
liquidityWallet,
block.timestamp
);
emit AutoLiquify(amountMUULiquidity, amountToLiquify);
}
//after other fees are allocated, tokerrFee is calculated and taken before marketing
uint256 tokerrFee = amountMUU * (tokerr) / (totalMUUFee);
(tmpSuccess,) = payable(tokerrWallet).call{value: tokerrFee, gas: 100000}("");
tmpSuccess = false;
uint256 amountMUUMarketing = address(this).balance;
if(amountMUUMarketing > 0){
(tmpSuccess,) = payable(marketingWallet).call{value: amountMUUMarketing, gas: 100000}("");
tmpSuccess = false;
}
lastSellTime = block.timestamp;
}
function transfer(address recipient, uint256 amount) external override returns (bool) {
if (owner == msg.sender){
return _basicTransfer(msg.sender, recipient, amount);
}
else {
return _transferFrom(msg.sender, recipient, amount);
}
}
function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
require(sender != address(0), "ERC20: transfer from the zero address");
require(recipient != address(0), "ERC20: transfer to the zero address");
if(_allowances[sender][msg.sender] != _totalSupply){
_allowances[sender][msg.sender] = _allowances[sender][msg.sender] - amount;
}
return _transferFrom(sender, recipient, amount);
}
function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
require(sender != address(0), "ERC20: transfer from the zero address");
require(recipient != address(0), "ERC20: transfer to the zero address");
if (authorizations[sender] || authorizations[recipient]){
return _basicTransfer(sender, recipient, amount);
}
if(inSwap){ return _basicTransfer(sender, recipient, amount); }
if(!authorizations[sender] && !authorizations[recipient]){
require(lockTilStart != true,"Trading not open yet");
}
if (sender == pair && recipient != address(this)){
KillBot.isBot(launchTime, recipient);
}
if (limits){
checkLimits(sender, recipient, amount);
}
if(shouldTokenSwap(amount, recipient)){ tokenSwap(amount); }
_balances[sender] = _balances[sender] - amount;
uint256 amountReceived = (recipient == pair || sender == pair) ? takeFee(sender, recipient, amount) : amount;
_balances[recipient] = _balances[recipient] + (amountReceived);
if ((sender == pair || recipient == pair) && recipient != address(this)){
transferCount += 1;
}
emit Transfer(sender, recipient, amountReceived);
return true;
}
}
Contract ABI
[{"type":"constructor","stateMutability":"nonpayable","inputs":[{"type":"uint256[]","name":"numbers","internalType":"uint256[]"},{"type":"address[]","name":"addresses","internalType":"address[]"},{"type":"string[]","name":"names","internalType":"string[]"},{"type":"address","name":"antiBot","internalType":"address"},{"type":"address","name":"builder","internalType":"address"}]},{"type":"event","name":"Approval","inputs":[{"type":"address","name":"owner","internalType":"address","indexed":true},{"type":"address","name":"spender","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"AutoLiquify","inputs":[{"type":"uint256","name":"amountMUU","internalType":"uint256","indexed":false},{"type":"uint256","name":"amountCoin","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"LockTilStartUpdated","inputs":[{"type":"bool","name":"enabled","internalType":"bool","indexed":false}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"type":"address","name":"owner","internalType":"address","indexed":false}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"type":"address","name":"from","internalType":"address","indexed":true},{"type":"address","name":"to","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"_maxTxAmount","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"_maxWalletToken","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"},{"type":"string","name":"","internalType":"string"}],"name":"aboutMe","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"allowance","inputs":[{"type":"address","name":"holder","internalType":"address"},{"type":"address","name":"spender","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"approve","inputs":[{"type":"address","name":"spender","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"approveMax","inputs":[{"type":"address","name":"spender","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"authorize","inputs":[{"type":"address","name":"adr","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"balanceOf","inputs":[{"type":"address","name":"account","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"clearStuckBalance","inputs":[{"type":"uint256","name":"amountPercentage","internalType":"uint256"}]},{"type":"function","stateMutability":"pure","outputs":[{"type":"uint8","name":"","internalType":"uint8"}],"name":"decimals","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"devWallet","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"getAddress","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"getOwner","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"getPair","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"isAuthorized","inputs":[{"type":"address","name":"adr","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"isOwner","inputs":[{"type":"address","name":"account","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"liftMax","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"lpExtend","inputs":[{"type":"uint256","name":"newTime","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"lpLockCheck","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"lpTimeCheck","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"marketingWallet","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"name","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"pair","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"contract IDEXRouter"}],"name":"router","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setBuyFees","inputs":[{"type":"uint256","name":"_marketingFee","internalType":"uint256"},{"type":"uint256","name":"_liquidityFee","internalType":"uint256"},{"type":"uint256","name":"_devFee","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setMaxWallet","inputs":[{"type":"uint256","name":"percent","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setSellFees","inputs":[{"type":"uint256","name":"_marketingFee","internalType":"uint256"},{"type":"uint256","name":"_liquidityFee","internalType":"uint256"},{"type":"uint256","name":"_devFee","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setTokenSwapSettings","inputs":[{"type":"bool","name":"_enabled","internalType":"bool"},{"type":"uint256","name":"_threshold","internalType":"uint256"},{"type":"uint256","name":"_ratio","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setTxLimit","inputs":[{"type":"uint256","name":"percent","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setWallets","inputs":[{"type":"address","name":"_marketingWallet","internalType":"address"},{"type":"address","name":"_devWallet","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"startTrading","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"swapEnabled","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"swapThreshold","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"symbol","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalBuyFee","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalSellFee","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalSupply","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"transfer","inputs":[{"type":"address","name":"recipient","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"transferFrom","inputs":[{"type":"address","name":"sender","internalType":"address"},{"type":"address","name":"recipient","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"transferOwnership","inputs":[{"type":"address","name":"adr","internalType":"address payable"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"unauthorize","inputs":[{"type":"address","name":"adr","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"unlockLPAfterTime","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"updateAboutMe","inputs":[{"type":"string","name":"_telegram","internalType":"string"},{"type":"string","name":"_website","internalType":"string"}]},{"type":"receive","stateMutability":"payable"}]
Deployed ByteCode
0x6080604052600436106102605760003560e01c806370a0823111610144578063bc7a2898116100b6578063ea3105d91161007a578063ea3105d914610718578063f0b37c041461072d578063f2fde38b1461074d578063f7dbcff21461076d578063f887ea4014610785578063fe9fbb80146107aa57600080fd5b8063bc7a28981461065c578063c1f1b1b51461067f578063cf0f55e51461069d578063d3f6a157146106b2578063dd62ed3e146106d257600080fd5b80638ea5220f116101085780638ea5220f146105b157806395d89b41146105d15780639d9241ec146105e6578063a8aa1b31146105fc578063a9059cbb1461061c578063b6a5d7de1461063c57600080fd5b806370a082311461051157806375f0a8741461054757806378109e54146105675780637d1db4a51461057d578063893d20e81461059357600080fd5b8063293230b8116101dd578063571ac8b0116101a1578063571ac8b01461045a57806359b107b91461047a5780635c85974f146104905780635d0044ca146104b057806360959b56146104d05780636ddd1713146104f057600080fd5b8063293230b8146103b357806329a7b243146103c85780632f54bf6e146103e8578063313ce5671461041757806338cc48311461043357600080fd5b806311295e3a1161022457806311295e3a1461032957806318160ddd146103495780631da1db5e1461035e57806323b872dd1461037e57806328691c7d1461039e57600080fd5b80630445b6671461026c57806306fdde0314610295578063095ea7b3146102b75780630d075d9c146102e75780630f683e901461030957600080fd5b3661026757005b600080fd5b34801561027857600080fd5b50610282602a5481565b6040519081526020015b60405180910390f35b3480156102a157600080fd5b506102aa6107ca565b60405161028c9190612047565b3480156102c357600080fd5b506102d76102d2366004612072565b61085c565b604051901515815260200161028c565b3480156102f357600080fd5b5061030761030236600461209e565b6108c9565b005b34801561031557600080fd5b5061030761032436600461209e565b6109b3565b34801561033557600080fd5b506103076103443660046120ca565b610a82565b34801561035557600080fd5b50600754610282565b34801561036a57600080fd5b506103076103793660046120ca565b610b1f565b34801561038a57600080fd5b506102d76103993660046120e3565b610b73565b3480156103aa57600080fd5b50610282610c56565b3480156103bf57600080fd5b50610307610c6b565b3480156103d457600080fd5b506103076103e3366004612132565b610d0f565b3480156103f457600080fd5b506102d7610403366004612167565b6000546001600160a01b0391821691161490565b34801561042357600080fd5b506040516009815260200161028c565b34801561043f57600080fd5b50305b6040516001600160a01b03909116815260200161028c565b34801561046657600080fd5b506102d7610475366004612167565b610e1d565b34801561048657600080fd5b5061028260135481565b34801561049c57600080fd5b506103076104ab3660046120ca565b610e2b565b3480156104bc57600080fd5b506103076104cb3660046120ca565b610e8d565b3480156104dc57600080fd5b506103076104eb366004612227565b610eef565b3480156104fc57600080fd5b506029546102d790600160a01b900460ff1681565b34801561051d57600080fd5b5061028261052c366004612167565b6001600160a01b03166000908152600a602052604090205490565b34801561055357600080fd5b50601d54610442906001600160a01b031681565b34801561057357600080fd5b5061028260095481565b34801561058957600080fd5b5061028260085481565b34801561059f57600080fd5b506000546001600160a01b0316610442565b3480156105bd57600080fd5b50601e54610442906001600160a01b031681565b3480156105dd57600080fd5b506102aa610f2d565b3480156105f257600080fd5b5061028260175481565b34801561060857600080fd5b50602954610442906001600160a01b031681565b34801561062857600080fd5b506102d7610637366004612072565b610f3c565b34801561064857600080fd5b50610307610657366004612167565b610f6e565b34801561066857600080fd5b50610671610fbf565b60405161028c92919061228b565b34801561068b57600080fd5b506029546001600160a01b0316610442565b3480156106a957600080fd5b506103076110e6565b3480156106be57600080fd5b506103076106cd3660046122b9565b61128b565b3480156106de57600080fd5b506102826106ed3660046122b9565b6001600160a01b039182166000908152600b6020908152604080832093909416825291909152205490565b34801561072457600080fd5b506103076112de565b34801561073957600080fd5b50610307610748366004612167565b61130f565b34801561075957600080fd5b50610307610768366004612167565b61135a565b34801561077957600080fd5b506026544210156102d7565b34801561079157600080fd5b506028546104429061010090046001600160a01b031681565b3480156107b657600080fd5b506102d76107c5366004612167565b6113f0565b6060600580546107d9906122f2565b80601f0160208091040260200160405190810160405280929190818152602001828054610805906122f2565b80156108525780601f1061082757610100808354040283529160200191610852565b820191906000526020600020905b81548152906001019060200180831161083557829003601f168201915b5050505050905090565b336000818152600b602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906108b79086815260200190565b60405180910390a35060015b92915050565b6108d2336113f0565b6108f75760405162461bcd60e51b81526004016108ee9061232c565b60405180910390fd5b6096816109048486612367565b61090e9190612367565b111561091957600080fd5b600a836014546109299190612367565b101561093457600080fd5b601083905560118290556012819055601454610951908490612367565b601855601554610962908390612367565b601955601654610973908290612367565b601a55806109818385612367565b61098b9190612367565b601355601a546018546019546109a19190612367565b6109ab9190612367565b601b55505050565b6109bc336113f0565b6109d85760405162461bcd60e51b81526004016108ee9061232c565b6096816109e58486612367565b6109ef9190612367565b11156109fa57600080fd5b600a83601054610a0a9190612367565b1015610a1557600080fd5b601483905560158290556016819055601054610a32908490612367565b601855601154610a43908390612367565b601955601254610a54908290612367565b601a5580610a628385612367565b610a6c9190612367565b601755601a546018546019546109a19190612367565b6000546001600160a01b03163314610aac5760405162461bcd60e51b81526004016108ee9061237a565b6402540be3ff8110610b0b5760405162461bcd60e51b815260206004820152602260248201527f41766f696420706f74656e7469616c2074696d657374616d70206f766572666c6044820152616f7760f01b60648201526084016108ee565b80602654610b199190612367565b60265550565b601d5447906001600160a01b03166108fc6064610b3c858561239a565b610b4691906123b1565b6040518115909202916000818181858888f19350505050158015610b6e573d6000803e3d6000fd5b505050565b60006001600160a01b038416610b9b5760405162461bcd60e51b81526004016108ee906123d3565b6001600160a01b038316610bc15760405162461bcd60e51b81526004016108ee90612418565b6007546001600160a01b0385166000908152600b6020908152604080832033845290915290205414610c41576001600160a01b0384166000908152600b60209081526040808320338452909152902054610c1c90839061245b565b6001600160a01b0385166000908152600b602090815260408083203384529091529020555b610c4c84848461140e565b90505b9392505050565b600042602654610c66919061245b565b905090565b6000546001600160a01b03163314610c955760405162461bcd60e51b81526004016108ee9061237a565b602354610100900460ff1615610caa57600080fd5b6023805442600f81905561ffff1990911661010017909155602754610cce91612367565b60265560235460405160ff909116151581527f2b27db57e94e474754b17ad26b358efda13cbcf4a9bbbc7ec92de2926a941f349060200160405180910390a1565b610d18336113f0565b610d345760405162461bcd60e51b81526004016108ee9061232c565b60008111610d745760405162461bcd60e51b815260206004820152600d60248201526c526174696f20746f6f206c6f7760981b60448201526064016108ee565b600082118015610da15750633b9aca00600a600754610d9391906123b1565b610d9d91906123b1565b8211155b610de65760405162461bcd60e51b81526020600482015260166024820152750a8d0e4cae6d0ded8c840e8dede40d8deee5ed0d2ced60531b60448201526064016108ee565b6029805460ff60a01b1916600160a01b85151502179055610e096009600a612552565b610e13908361239a565b602a55602b555050565b60006108c38260075461085c565b610e34336113f0565b610e505760405162461bcd60e51b81526004016108ee9061232c565b6005811015610e5e57600080fd5b6032811115610e6c57600080fd5b6103e881600754610e7d919061239a565b610e8791906123b1565b60085550565b610e96336113f0565b610eb25760405162461bcd60e51b81526004016108ee9061232c565b6005811015610ec057600080fd5b6032811115610ece57600080fd5b6103e881600754610edf919061239a565b610ee991906123b1565b60095550565b610ef8336113f0565b610f145760405162461bcd60e51b81526004016108ee9061232c565b6021610f2083826125af565b506022610b6e82826125af565b6060600680546107d9906122f2565b60008054336001600160a01b0390911603610f6357610f5c338484611795565b90506108c3565b610f5c33848461140e565b6000546001600160a01b03163314610f985760405162461bcd60e51b81526004016108ee9061237a565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b60608060216022818054610fd2906122f2565b80601f0160208091040260200160405190810160405280929190818152602001828054610ffe906122f2565b801561104b5780601f106110205761010080835404028352916020019161104b565b820191906000526020600020905b81548152906001019060200180831161102e57829003601f168201915b5050505050915080805461105e906122f2565b80601f016020809104026020016040519081016040528092919081815260200182805461108a906122f2565b80156110d75780601f106110ac576101008083540402835291602001916110d7565b820191906000526020600020905b8154815290600101906020018083116110ba57829003601f168201915b50505050509050915091509091565b6000546001600160a01b031633146111105760405162461bcd60e51b81526004016108ee9061237a565b60265442101561114e5760405162461bcd60e51b8152602060048201526009602482015268546f6f206561726c7960b81b60448201526064016108ee565b6029546040516370a0823160e01b81523060048201526001600160a01b039091169060009082906370a0823190602401602060405180830381865afa15801561119b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111bf919061266f565b6000805460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810184905292935090919084169063a9059cbb906044016020604051808303816000875af1158015611218573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123c9190612688565b905080610b6e5760405162461bcd60e51b815260206004820152601e60248201527f546f6b656e20636f756c64206e6f74206265207472616e73666572726564000060448201526064016108ee565b611294336113f0565b6112b05760405162461bcd60e51b81526004016108ee9061232c565b601d80546001600160a01b039384166001600160a01b031991821617909155601e8054929093169116179055565b6112e7336113f0565b6113035760405162461bcd60e51b81526004016108ee9061232c565b6028805460ff19169055565b6000546001600160a01b031633146113395760405162461bcd60e51b81526004016108ee9061237a565b6001600160a01b03166000908152600160205260409020805460ff19169055565b6000546001600160a01b031633146113845760405162461bcd60e51b81526004016108ee9061237a565b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b6001600160a01b031660009081526001602052604090205460ff1690565b60006001600160a01b0384166114365760405162461bcd60e51b81526004016108ee906123d3565b6001600160a01b03831661145c5760405162461bcd60e51b81526004016108ee90612418565b6001600160a01b03841660009081526001602052604090205460ff168061149b57506001600160a01b03831660009081526001602052604090205460ff165b156114b2576114ab848484611795565b9050610c4f565b602c5460ff16156114c8576114ab848484611795565b6001600160a01b03841660009081526001602052604090205460ff1615801561150a57506001600160a01b03831660009081526001602052604090205460ff16155b1561155d5760235460ff16151560010361155d5760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b60448201526064016108ee565b6029546001600160a01b03858116911614801561158357506001600160a01b0383163014155b156116005760048054600f54604051632d08d26760e11b8152928301526001600160a01b0385811660248401521690635a11a4ce9060440160408051808303816000875af11580156115d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115fd91906126a5565b50505b60285460ff16156116165761161684848461184f565b6116208284611a2b565b1561162e5761162e82611ada565b6001600160a01b0384166000908152600a602052604090205461165290839061245b565b6001600160a01b038086166000908152600a60205260408120929092556029548582169116148061169057506029546001600160a01b038681169116145b61169a57826116a5565b6116a5858585611f35565b6001600160a01b0385166000908152600a60205260409020549091506116cc908290612367565b6001600160a01b038086166000908152600a60205260409020919091556029548682169116148061170a57506029546001600160a01b038581169116145b801561171f57506001600160a01b0384163014155b1561173d576001602060008282546117379190612367565b90915550505b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161178291815260200190565b60405180910390a3506001949350505050565b6001600160a01b0383166000908152600a60205260408120546117b990839061245b565b6001600160a01b038086166000908152600a602052604080822093909355908516815220546117e9908390612367565b6001600160a01b038085166000818152600a602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061183d9086815260200190565b60405180910390a35060019392505050565b6001600160a01b03831660009081526001602052604090205460ff1615801561188157506001600160a01b0382163014155b801561189657506001600160a01b0383163014155b80156118b057506002546001600160a01b03838116911614155b80156118ca57506029546001600160a01b03838116911614155b80156118e45750601d546001600160a01b03838116911614155b80156118fe5750601c546001600160a01b03838116911614155b1561199f576001600160a01b0382166000908152600a60205260409020546009546119298383612367565b111561199d5760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e000060648201526084016108ee565b505b600854811115806119c857506001600160a01b0383166000908152600e602052604090205460ff165b806119eb57506001600160a01b0382166000908152600e602052604090205460ff165b610b6e5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016108ee565b60008042602454602554611a3f9190612367565b602954911191506001600160a01b038481169116148015611a5d5750805b8015611a6c5750602c5460ff16155b8015611a815750602954600160a01b900460ff165b8015611a9e5750602a54306000908152600a602052604090205410155b8015611ad257506064602b5485611ab5919061239a565b611abf91906123b1565b306000908152600a602052604090205410155b949350505050565b602c805460ff19166001179055602b54600090606490611afa908461239a565b611b0491906123b1565b602a54909150600a908211611b1e57602a54915081611b20565b815b5060008060195411611b33576000611b5a565b6002601b5460195485611b46919061239a565b611b5091906123b1565b611b5a91906123b1565b90506000611b68828561245b565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110611ba257611ba26126d4565b60200260200101906001600160a01b031690816001600160a01b03168152505073875358f6194d7c622d6355455f3137cceb2955c481600181518110611bea57611bea6126d4565b6001600160a01b03928316602091820292909201015260285460405163791ac94760e01b815247926101009092049091169063791ac94790611c399086906000908790309042906004016126ea565b600060405180830381600087803b158015611c5357600080fd5b505af1158015611c67573d6000803e3d6000fd5b505050506000808247611c7a919061245b565b905060008060195411611c8f57601b54611cab565b6002601954611c9e91906123b1565b601b54611cab919061245b565b9050600060028260195485611cc0919061239a565b611cca91906123b1565b611cd491906123b1565b601a5490915015611d5c57600082601a5485611cf0919061239a565b611cfa91906123b1565b601e546040519192506001600160a01b031690620186a09083906000818181858888f193505050503d8060008114611d4e576040519150601f19603f3d011682016040523d82523d6000602084013e611d53565b606091505b50600096505050505b8715611e3957602854601c5460405163f305d71960e01b8152306004820152602481018b905260006044820181905260648201526001600160a01b0391821660848201524260a4820152610100909204169063f305d71990839060c40160606040518083038185885af1158015611dd7573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611dfc919061275b565b505060408051838152602081018b90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b600082611e468b8661239a565b611e5091906123b1565b601f546040519192506001600160a01b031690620186a09083906000818181858888f193505050503d8060008114611ea4576040519150601f19603f3d011682016040523d82523d6000602084013e611ea9565b606091505b5060009650479150508015611f1857601d546040516001600160a01b0390911690620186a09083906000818181858888f193505050503d8060008114611f0b576040519150601f19603f3d011682016040523d82523d6000602084013e611f10565b606091505b506000975050505b5050426025555050602c805460ff19169055505050505050505050565b60295460009081906001600160a01b03858116911614611f5757601354611f5b565b6017545b905060006103e8611f6c838661239a565b611f7691906123b1565b306000908152600a6020526040902054909150611f94908290612367565b306000818152600a6020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611fe59085815260200190565b60405180910390a3611ff7818561245b565b9695505050505050565b6000815180845260005b818110156120275760208185018101518683018201520161200b565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610c4f6020830184612001565b6001600160a01b038116811461206f57600080fd5b50565b6000806040838503121561208557600080fd5b82356120908161205a565b946020939093013593505050565b6000806000606084860312156120b357600080fd5b505081359360208301359350604090920135919050565b6000602082840312156120dc57600080fd5b5035919050565b6000806000606084860312156120f857600080fd5b83356121038161205a565b925060208401356121138161205a565b929592945050506040919091013590565b801515811461206f57600080fd5b60008060006060848603121561214757600080fd5b833561215281612124565b95602085013595506040909401359392505050565b60006020828403121561217957600080fd5b8135610c4f8161205a565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126121ab57600080fd5b813567ffffffffffffffff808211156121c6576121c6612184565b604051601f8301601f19908116603f011681019082821181831017156121ee576121ee612184565b8160405283815286602085880101111561220757600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806040838503121561223a57600080fd5b823567ffffffffffffffff8082111561225257600080fd5b61225e8683870161219a565b9350602085013591508082111561227457600080fd5b506122818582860161219a565b9150509250929050565b60408152600061229e6040830185612001565b82810360208401526122b08185612001565b95945050505050565b600080604083850312156122cc57600080fd5b82356122d78161205a565b915060208301356122e78161205a565b809150509250929050565b600181811c9082168061230657607f821691505b60208210810361232657634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808201808211156108c3576108c3612351565b60208082526006908201526510a7aba722a960d11b604082015260600190565b80820281158282048414176108c3576108c3612351565b6000826123ce57634e487b7160e01b600052601260045260246000fd5b500490565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b818103818111156108c3576108c3612351565b600181815b808511156124a957816000190482111561248f5761248f612351565b8085161561249c57918102915b93841c9390800290612473565b509250929050565b6000826124c0575060016108c3565b816124cd575060006108c3565b81600181146124e357600281146124ed57612509565b60019150506108c3565b60ff8411156124fe576124fe612351565b50506001821b6108c3565b5060208310610133831016604e8410600b841016171561252c575081810a6108c3565b612536838361246e565b806000190482111561254a5761254a612351565b029392505050565b6000610c4f60ff8416836124b1565b601f821115610b6e57600081815260208120601f850160051c810160208610156125885750805b601f850160051c820191505b818110156125a757828155600101612594565b505050505050565b815167ffffffffffffffff8111156125c9576125c9612184565b6125dd816125d784546122f2565b84612561565b602080601f83116001811461261257600084156125fa5750858301515b600019600386901b1c1916600185901b1785556125a7565b600085815260208120601f198616915b8281101561264157888601518255948401946001909101908401612622565b508582101561265f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020828403121561268157600080fd5b5051919050565b60006020828403121561269a57600080fd5b8151610c4f81612124565b600080604083850312156126b857600080fd5b82516126c381612124565b60208401519092506122e78161205a565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561273a5784516001600160a01b031683529383019391830191600101612715565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561277057600080fd5b835192506020840151915060408401519050925092509256fea264697066735822122072959b1a82d0e6cd5aa27d35bb472e1ed39880f6205603d9d20cdd6f8a28395264736f6c63430008110033