Transactions
Token Transfers
Tokens
Internal Transactions
Coin Balance History
Logs
Code
Read Contract
Write Contract
Contract is not verified. However, we found a verified contract with the same bytecode in Blockscout DB 0xc0f4142b6703a51a1033f68e62790e1e1c0df7f3.
All metadata displayed below is from that contract. In order to verify current contract, click Verify & Publish button
Verify & Publish
All metadata displayed below is from that contract. In order to verify current contract, click Verify & Publish button
- Contract name:
- ZeroTax
- Optimization enabled
- true
- Compiler version
- v0.8.19+commit.7dd6d404
- Optimization runs
- 200
- Verified at
- 2023-05-13T14:05:43.708520Z
Contract source code
/*
* ZeroTaxToken for PulseChain
*
* Written by: MrGreenCrypto
* Co-Founder of CodeCraftrs.com
*
* SPDX-License-Identifier: None
*/
pragma solidity 0.8.19;
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 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 WPLS() external pure returns (address);
}
interface IDEXFactory {
function createPair(address tokenA, address tokenB) external returns (address pair);
function getPair(address tokenA, address tokenB) external view returns (address pair);
}
contract ZeroTax is IERC20 {
string private _name;
string private _symbol;
uint8 constant _decimals = 18;
uint256 _totalSupply;
mapping(address => bool) public isExludedFromMaxWallet;
mapping(address => uint256) private _balances;
mapping(address => mapping(address => uint256)) private _allowances;
uint256 public maxWalletInPermille = 30;
uint256 private maxTx = 100;
address public ceo;
address public pair;
address public router = 0x98bf93ebf5c380C0e6Ae8e192A7e2AE08edAcc02;
address private constant DEAD = 0x000000000000000000000000000000000000dEaD;
address private royalty1 = 0xe6497e1F2C5418978D5fC2cD32AA23315E7a41Fb;
address private royalty2 = 0x2E51a8222bFf11C2D1BB78E1B4a07bCEa4baCc25;
modifier onlyCEO(){
require (msg.sender == ceo, "Only the ceo can do that");
_;
}
constructor(string memory name_, string memory symbol_, uint256 totalSupply_) {
ceo = msg.sender;
_name = name_;
_symbol = symbol_;
_totalSupply = totalSupply_ * (10**_decimals);
pair = IDEXFactory(IDEXRouter(router).factory()).createPair(IDEXRouter(router).WPLS(), address(this));
isExludedFromMaxWallet[pair] = true;
isExludedFromMaxWallet[address(this)] = true;
_balances[ceo] = _totalSupply * 98 / 100;
emit Transfer(address(0), ceo, _totalSupply * 98 / 100);
_balances[royalty1] = _totalSupply/100;
emit Transfer(address(0), royalty1, _totalSupply/100);
_balances[royalty2] = _totalSupply/100;
emit Transfer(address(0), royalty2, _totalSupply/100);
}
receive() external payable {}
function name() public view override returns (string memory) {return _name;}
function totalSupply() public view override returns (uint256) {return _totalSupply - _balances[DEAD];}
function decimals() public pure override returns (uint8) {return _decimals;}
function symbol() public view override returns (string memory) {return _symbol;}
function balanceOf(address account) public view override returns (uint256) {return _balances[account];}
function rescueBnb(uint256 amount) external onlyCEO {(bool success,) = address(ceo).call{value: amount}("");success = true;}
function rescueToken(address token, uint256 amount) external onlyCEO {IERC20(token).transfer(ceo, amount);}
function allowance(address holder, address spender) public view override returns (uint256) {return _allowances[holder][spender];}
function transfer(address recipient, uint256 amount) external override returns (bool) {return _transferFrom(msg.sender, recipient, amount);}
function approveMax(address spender) external returns (bool) {return approve(spender, type(uint256).max);}
function approve(address spender, uint256 amount) public override returns (bool) {
require(spender != address(0), "Can't use zero address here");
_allowances[msg.sender][spender] = amount;
emit Approval(msg.sender, spender, amount);
return true;
}
function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {
require(spender != address(0), "Can't use zero address here");
_allowances[msg.sender][spender] = allowance(msg.sender, spender) + addedValue;
emit Approval(msg.sender, spender, _allowances[msg.sender][spender]);
return true;
}
function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) {
require(spender != address(0), "Can't use zero address here");
require(allowance(msg.sender, spender) >= subtractedValue, "Can't subtract more than current allowance");
_allowances[msg.sender][spender] = allowance(msg.sender, spender) - subtractedValue;
emit Approval(msg.sender, spender, _allowances[msg.sender][spender]);
return true;
}
function transferFrom(address sender, address recipient, uint256 amount ) external override returns (bool) {
if (_allowances[sender][msg.sender] != type(uint256).max) {
require(_allowances[sender][msg.sender] >= amount, "Insufficient Allowance");
_allowances[sender][msg.sender] -= amount;
emit Approval(sender, msg.sender, _allowances[sender][msg.sender]);
}
return _transferFrom(sender, recipient, amount);
}
function setMaxWalletInPermille(uint256 permille) external onlyCEO {
maxWalletInPermille = permille;
require(maxWalletInPermille >= 10, "MaxWallet safety limit");
}
function setMaxTxInPercentOfMaxWallet(uint256 percent) external onlyCEO {
maxTx = percent;
require(maxTx >= 75, "MaxTx safety limit");
}
function setNameAndSymbol(string memory newName, string memory newSymbol) external onlyCEO {
_name = newName;
_symbol = newSymbol;
}
function excludeFromMax(address excludedWallet, bool status) external onlyCEO {
isExludedFromMaxWallet[excludedWallet] = status;
}
function renounceOerwrship() external onlyCEO {
ceo = address(0);
}
function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
checkLimits(sender, recipient, amount);
_lowGasTransfer(sender, recipient, amount);
return true;
}
function checkLimits(address sender, address recipient, uint256 amount) internal view {
if(maxWalletInPermille < 1000) {
if(!isExludedFromMaxWallet[recipient]) require(_balances[recipient] + amount <= _totalSupply * maxWalletInPermille / 1000, "MaxWallet");
if(!isExludedFromMaxWallet[sender]) require(amount <= _totalSupply * maxWalletInPermille * maxTx / 1000 / 100, "MaxTx");
}
}
function _lowGasTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
require(sender != address(0), "Can't use zero addresses here");
require(amount <= _balances[sender], "Can't transfer more than you own");
if(amount == 0) return true;
_balances[sender] -= amount;
_balances[recipient] += amount;
emit Transfer(sender, recipient, amount);
return true;
}
}
Contract ABI
[{"type":"constructor","inputs":[{"type":"string","name":"name_","internalType":"string"},{"type":"string","name":"symbol_","internalType":"string"},{"type":"uint256","name":"totalSupply_","internalType":"uint256"}]},{"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":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"balanceOf","inputs":[{"type":"address","name":"account","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"ceo","inputs":[]},{"type":"function","stateMutability":"pure","outputs":[{"type":"uint8","name":"","internalType":"uint8"}],"name":"decimals","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"decreaseAllowance","inputs":[{"type":"address","name":"spender","internalType":"address"},{"type":"uint256","name":"subtractedValue","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"excludeFromMax","inputs":[{"type":"address","name":"excludedWallet","internalType":"address"},{"type":"bool","name":"status","internalType":"bool"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"increaseAllowance","inputs":[{"type":"address","name":"spender","internalType":"address"},{"type":"uint256","name":"addedValue","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"isExludedFromMaxWallet","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"maxWalletInPermille","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":"nonpayable","outputs":[],"name":"renounceOerwrship","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"rescueBnb","inputs":[{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"rescueToken","inputs":[{"type":"address","name":"token","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"router","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setMaxTxInPercentOfMaxWallet","inputs":[{"type":"uint256","name":"percent","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setMaxWalletInPermille","inputs":[{"type":"uint256","name":"permille","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setNameAndSymbol","inputs":[{"type":"string","name":"newName","internalType":"string"},{"type":"string","name":"newSymbol","internalType":"string"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"symbol","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":"event","name":"Approval","inputs":[{"type":"address","name":"owner","indexed":true},{"type":"address","name":"spender","indexed":true},{"type":"uint256","name":"value","indexed":false}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"type":"address","name":"from","indexed":true},{"type":"address","name":"to","indexed":true},{"type":"uint256","name":"value","indexed":false}],"anonymous":false},{"type":"receive"}]
Contract Creation Code
0x6080604052601e6006556064600755600a80546001600160a01b03199081167398bf93ebf5c380c0e6ae8e192a7e2ae08edacc0217909155600b8054821673e6497e1f2c5418978d5fc2cd32aa23315e7a41fb179055600c8054909116732e51a8222bff11c2d1bb78e1b4a07bcea4bacc251790553480156200008157600080fd5b5060405162001c0438038062001c04833981016040819052620000a491620004d7565b600880546001600160a01b031916331790556000620000c48482620005d9565b506001620000d38382620005d9565b50620000e26012600a620007ba565b620000ee9082620007d2565b600255600a546040805163c45a015560e01b815290516001600160a01b039092169163c45a0155916004808201926020929091908290030181865afa1580156200013c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001629190620007ec565b6001600160a01b031663c9c65396600a60009054906101000a90046001600160a01b03166001600160a01b031663ef8ef56f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001c4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ea9190620007ec565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af115801562000237573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025d9190620007ec565b600980546001600160a01b0319166001600160a01b03929092169182179055600090815260036020526040808220805460ff1990811660019081179092553084529190922080549091169091179055600254606490620002bf906062620007d2565b620002cb919062000817565b600880546001600160a01b0390811660009081526004602052604081209390935590546002549116919060008051602062001be48339815191529060649062000316906062620007d2565b62000322919062000817565b60405190815260200160405180910390a3606460025462000344919062000817565b600b80546001600160a01b0390811660009081526004602052604081209390935590546002549116919060008051602062001be4833981519152906200038d9060649062000817565b60405190815260200160405180910390a36064600254620003af919062000817565b600c80546001600160a01b0390811660009081526004602052604081209390935590546002549116919060008051602062001be483398151915290620003f89060649062000817565b60405190815260200160405180910390a35050506200083a565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200043a57600080fd5b81516001600160401b038082111562000457576200045762000412565b604051601f8301601f19908116603f0116810190828211818310171562000482576200048262000412565b816040528381526020925086838588010111156200049f57600080fd5b600091505b83821015620004c35785820183015181830184015290820190620004a4565b600093810190920192909252949350505050565b600080600060608486031215620004ed57600080fd5b83516001600160401b03808211156200050557600080fd5b620005138783880162000428565b945060208601519150808211156200052a57600080fd5b50620005398682870162000428565b925050604084015190509250925092565b600181811c908216806200055f57607f821691505b6020821081036200058057634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620005d457600081815260208120601f850160051c81016020861015620005af5750805b601f850160051c820191505b81811015620005d057828155600101620005bb565b5050505b505050565b81516001600160401b03811115620005f557620005f562000412565b6200060d816200060684546200054a565b8462000586565b602080601f8311600181146200064557600084156200062c5750858301515b600019600386901b1c1916600185901b178555620005d0565b600085815260208120601f198616915b82811015620006765788860151825594840194600190910190840162000655565b5085821015620006955787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620006fc578160001904821115620006e057620006e0620006a5565b80851615620006ee57918102915b93841c9390800290620006c0565b509250929050565b6000826200071557506001620007b4565b816200072457506000620007b4565b81600181146200073d5760028114620007485762000768565b6001915050620007b4565b60ff8411156200075c576200075c620006a5565b50506001821b620007b4565b5060208310610133831016604e8410600b84101617156200078d575081810a620007b4565b620007998383620006bb565b8060001904821115620007b057620007b0620006a5565b0290505b92915050565b6000620007cb60ff84168362000704565b9392505050565b8082028115828204841417620007b457620007b4620006a5565b600060208284031215620007ff57600080fd5b81516001600160a01b0381168114620007cb57600080fd5b6000826200083557634e487b7160e01b600052601260045260246000fd5b500490565b61139a806200084a6000396000f3fe60806040526004361061014f5760003560e01c80637e6b9b46116100b6578063a9059cbb1161006f578063a9059cbb146103df578063bb2aec77146103ff578063c17376341461041f578063dd62ed3e1461043f578063e70d9a6f1461045f578063f887ea401461047557600080fd5b80637e6b9b461461030d5780638673208714610322578063908921fc1461035257806395d89b411461038a578063a457c2d71461039f578063a8aa1b31146103bf57600080fd5b806333f3d6281161010857806333f3d628146102375780633950935114610257578063571ac8b0146102775780635a4462151461029757806370a08231146102b7578063769eaa68146102ed57600080fd5b806306fdde031461015b578063095ea7b31461018657806318160ddd146101b657806323b872dd146101d9578063249ec2bb146101f9578063313ce5671461021b57600080fd5b3661015657005b600080fd5b34801561016757600080fd5b50610170610495565b60405161017d9190610e99565b60405180910390f35b34801561019257600080fd5b506101a66101a1366004610f03565b610527565b604051901515815260200161017d565b3480156101c257600080fd5b506101cb6105be565b60405190815260200161017d565b3480156101e557600080fd5b506101a66101f4366004610f2d565b6105ff565b34801561020557600080fd5b50610219610214366004610f77565b61073f565b005b34801561022757600080fd5b506040516012815260200161017d565b34801561024357600080fd5b50610219610252366004610f03565b610794565b34801561026357600080fd5b506101a6610272366004610f03565b61083a565b34801561028357600080fd5b506101a6610292366004610fae565b6108ce565b3480156102a357600080fd5b506102196102b236600461106c565b6108dc565b3480156102c357600080fd5b506101cb6102d2366004610fae565b6001600160a01b031660009081526004602052604090205490565b3480156102f957600080fd5b506102196103083660046110d0565b61091f565b34801561031957600080fd5b5061021961099b565b34801561032e57600080fd5b506101a661033d366004610fae565b60036020526000908152604090205460ff1681565b34801561035e57600080fd5b50600854610372906001600160a01b031681565b6040516001600160a01b03909116815260200161017d565b34801561039657600080fd5b506101706109d7565b3480156103ab57600080fd5b506101a66103ba366004610f03565b6109e6565b3480156103cb57600080fd5b50600954610372906001600160a01b031681565b3480156103eb57600080fd5b506101a66103fa366004610f03565b610a8f565b34801561040b57600080fd5b5061021961041a3660046110d0565b610a9c565b34801561042b57600080fd5b5061021961043a3660046110d0565b610b11565b34801561044b57600080fd5b506101cb61045a3660046110e9565b610b94565b34801561046b57600080fd5b506101cb60065481565b34801561048157600080fd5b50600a54610372906001600160a01b031681565b6060600080546104a49061111c565b80601f01602080910402602001604051908101604052809291908181526020018280546104d09061111c565b801561051d5780601f106104f25761010080835404028352916020019161051d565b820191906000526020600020905b81548152906001019060200180831161050057829003601f168201915b5050505050905090565b60006001600160a01b0383166105585760405162461bcd60e51b815260040161054f90611156565b60405180910390fd5b3360008181526005602090815260408083206001600160a01b03881680855290835292819020869055518581529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a35060015b92915050565b61dead600090815260046020527f42c63635470f1fb1d6d4b6441c413cb435b1ebb6fedd1896dd5e25d1399147dd546002546105fa91906111a3565b905090565b6001600160a01b03831660009081526005602090815260408083203384529091528120546000191461072a576001600160a01b03841660009081526005602090815260408083203384529091529020548211156106975760405162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e7420416c6c6f77616e636560501b604482015260640161054f565b6001600160a01b0384166000908152600560209081526040808320338452909152812080548492906106ca9084906111a3565b90915550506001600160a01b038416600081815260056020908152604080832033808552908352928190205490519081529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35b610735848484610bbf565b90505b9392505050565b6008546001600160a01b031633146107695760405162461bcd60e51b815260040161054f906111b6565b6001600160a01b03919091166000908152600360205260409020805460ff1916911515919091179055565b6008546001600160a01b031633146107be5760405162461bcd60e51b815260040161054f906111b6565b60085460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303816000875af1158015610811573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083591906111ed565b505050565b60006001600160a01b0383166108625760405162461bcd60e51b815260040161054f90611156565b8161086d3385610b94565b610877919061120a565b3360008181526005602090815260408083206001600160a01b038916808552908352928190208590555193845290927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591016105ac565b60006105b882600019610527565b6008546001600160a01b031633146109065760405162461bcd60e51b815260040161054f906111b6565b6000610912838261126b565b506001610835828261126b565b6008546001600160a01b031633146109495760405162461bcd60e51b815260040161054f906111b6565b6006819055600a8110156109985760405162461bcd60e51b815260206004820152601660248201527513585e15d85b1b195d081cd859995d1e481b1a5b5a5d60521b604482015260640161054f565b50565b6008546001600160a01b031633146109c55760405162461bcd60e51b815260040161054f906111b6565b600880546001600160a01b0319169055565b6060600180546104a49061111c565b60006001600160a01b038316610a0e5760405162461bcd60e51b815260040161054f90611156565b81610a193385610b94565b1015610a7a5760405162461bcd60e51b815260206004820152602a60248201527f43616e2774207375627472616374206d6f7265207468616e2063757272656e7460448201526920616c6c6f77616e636560b01b606482015260840161054f565b81610a853385610b94565b61087791906111a3565b6000610738338484610bbf565b6008546001600160a01b03163314610ac65760405162461bcd60e51b815260040161054f906111b6565b6007819055604b8110156109985760405162461bcd60e51b815260206004820152601260248201527113585e151e081cd859995d1e481b1a5b5a5d60721b604482015260640161054f565b6008546001600160a01b03163314610b3b5760405162461bcd60e51b815260040161054f906111b6565b6008546040516000916001600160a01b03169083908381818185875af1925050503d8060008114610b88576040519150601f19603f3d011682016040523d82523d6000602084013e610b8d565b606091505b5050505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b6000610bcc848484610be2565b610bd7848484610d16565b506001949350505050565b6103e86006541015610835576001600160a01b03821660009081526003602052604090205460ff16610c89576103e8600654600254610c21919061132b565b610c2b9190611342565b6001600160a01b038316600090815260046020526040902054610c4f90839061120a565b1115610c895760405162461bcd60e51b815260206004820152600960248201526813585e15d85b1b195d60ba1b604482015260640161054f565b6001600160a01b03831660009081526003602052604090205460ff166108355760646103e8600754600654600254610cc1919061132b565b610ccb919061132b565b610cd59190611342565b610cdf9190611342565b8111156108355760405162461bcd60e51b815260206004820152600560248201526409ac2f0a8f60db1b604482015260640161054f565b60006001600160a01b038416610d6e5760405162461bcd60e51b815260206004820152601d60248201527f43616e277420757365207a65726f206164647265737365732068657265000000604482015260640161054f565b6001600160a01b038416600090815260046020526040902054821115610dd65760405162461bcd60e51b815260206004820181905260248201527f43616e2774207472616e73666572206d6f7265207468616e20796f75206f776e604482015260640161054f565b81600003610de657506001610738565b6001600160a01b03841660009081526004602052604081208054849290610e0e9084906111a3565b90915550506001600160a01b03831660009081526004602052604081208054849290610e3b90849061120a565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610e8791815260200190565b60405180910390a35060019392505050565b600060208083528351808285015260005b81811015610ec657858101830151858201604001528201610eaa565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610efe57600080fd5b919050565b60008060408385031215610f1657600080fd5b610f1f83610ee7565b946020939093013593505050565b600080600060608486031215610f4257600080fd5b610f4b84610ee7565b9250610f5960208501610ee7565b9150604084013590509250925092565b801515811461099857600080fd5b60008060408385031215610f8a57600080fd5b610f9383610ee7565b91506020830135610fa381610f69565b809150509250929050565b600060208284031215610fc057600080fd5b61073882610ee7565b634e487b7160e01b600052604160045260246000fd5b600082601f830112610ff057600080fd5b813567ffffffffffffffff8082111561100b5761100b610fc9565b604051601f8301601f19908116603f0116810190828211818310171561103357611033610fc9565b8160405283815286602085880101111561104c57600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806040838503121561107f57600080fd5b823567ffffffffffffffff8082111561109757600080fd5b6110a386838701610fdf565b935060208501359150808211156110b957600080fd5b506110c685828601610fdf565b9150509250929050565b6000602082840312156110e257600080fd5b5035919050565b600080604083850312156110fc57600080fd5b61110583610ee7565b915061111360208401610ee7565b90509250929050565b600181811c9082168061113057607f821691505b60208210810361115057634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252601b908201527f43616e277420757365207a65726f206164647265737320686572650000000000604082015260600190565b634e487b7160e01b600052601160045260246000fd5b818103818111156105b8576105b861118d565b60208082526018908201527f4f6e6c79207468652063656f2063616e20646f20746861740000000000000000604082015260600190565b6000602082840312156111ff57600080fd5b815161073881610f69565b808201808211156105b8576105b861118d565b601f82111561083557600081815260208120601f850160051c810160208610156112445750805b601f850160051c820191505b8181101561126357828155600101611250565b505050505050565b815167ffffffffffffffff81111561128557611285610fc9565b61129981611293845461111c565b8461121d565b602080601f8311600181146112ce57600084156112b65750858301515b600019600386901b1c1916600185901b178555611263565b600085815260208120601f198616915b828110156112fd578886015182559484019460019091019084016112de565b508582101561131b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b80820281158282048414176105b8576105b861118d565b60008261135f57634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220818e9ee827d6a92c889199e51bc1694ea8b2303f101126a27670a64b105a628e64736f6c63430008130033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000001a400000000000000000000000000000000000000000000000000000000000000105452554d5020484f525345204330434b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035448430000000000000000000000000000000000000000000000000000000000
Deployed ByteCode
0x60806040526004361061014f5760003560e01c80637e6b9b46116100b6578063a9059cbb1161006f578063a9059cbb146103df578063bb2aec77146103ff578063c17376341461041f578063dd62ed3e1461043f578063e70d9a6f1461045f578063f887ea401461047557600080fd5b80637e6b9b461461030d5780638673208714610322578063908921fc1461035257806395d89b411461038a578063a457c2d71461039f578063a8aa1b31146103bf57600080fd5b806333f3d6281161010857806333f3d628146102375780633950935114610257578063571ac8b0146102775780635a4462151461029757806370a08231146102b7578063769eaa68146102ed57600080fd5b806306fdde031461015b578063095ea7b31461018657806318160ddd146101b657806323b872dd146101d9578063249ec2bb146101f9578063313ce5671461021b57600080fd5b3661015657005b600080fd5b34801561016757600080fd5b50610170610495565b60405161017d9190610e99565b60405180910390f35b34801561019257600080fd5b506101a66101a1366004610f03565b610527565b604051901515815260200161017d565b3480156101c257600080fd5b506101cb6105be565b60405190815260200161017d565b3480156101e557600080fd5b506101a66101f4366004610f2d565b6105ff565b34801561020557600080fd5b50610219610214366004610f77565b61073f565b005b34801561022757600080fd5b506040516012815260200161017d565b34801561024357600080fd5b50610219610252366004610f03565b610794565b34801561026357600080fd5b506101a6610272366004610f03565b61083a565b34801561028357600080fd5b506101a6610292366004610fae565b6108ce565b3480156102a357600080fd5b506102196102b236600461106c565b6108dc565b3480156102c357600080fd5b506101cb6102d2366004610fae565b6001600160a01b031660009081526004602052604090205490565b3480156102f957600080fd5b506102196103083660046110d0565b61091f565b34801561031957600080fd5b5061021961099b565b34801561032e57600080fd5b506101a661033d366004610fae565b60036020526000908152604090205460ff1681565b34801561035e57600080fd5b50600854610372906001600160a01b031681565b6040516001600160a01b03909116815260200161017d565b34801561039657600080fd5b506101706109d7565b3480156103ab57600080fd5b506101a66103ba366004610f03565b6109e6565b3480156103cb57600080fd5b50600954610372906001600160a01b031681565b3480156103eb57600080fd5b506101a66103fa366004610f03565b610a8f565b34801561040b57600080fd5b5061021961041a3660046110d0565b610a9c565b34801561042b57600080fd5b5061021961043a3660046110d0565b610b11565b34801561044b57600080fd5b506101cb61045a3660046110e9565b610b94565b34801561046b57600080fd5b506101cb60065481565b34801561048157600080fd5b50600a54610372906001600160a01b031681565b6060600080546104a49061111c565b80601f01602080910402602001604051908101604052809291908181526020018280546104d09061111c565b801561051d5780601f106104f25761010080835404028352916020019161051d565b820191906000526020600020905b81548152906001019060200180831161050057829003601f168201915b5050505050905090565b60006001600160a01b0383166105585760405162461bcd60e51b815260040161054f90611156565b60405180910390fd5b3360008181526005602090815260408083206001600160a01b03881680855290835292819020869055518581529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a35060015b92915050565b61dead600090815260046020527f42c63635470f1fb1d6d4b6441c413cb435b1ebb6fedd1896dd5e25d1399147dd546002546105fa91906111a3565b905090565b6001600160a01b03831660009081526005602090815260408083203384529091528120546000191461072a576001600160a01b03841660009081526005602090815260408083203384529091529020548211156106975760405162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e7420416c6c6f77616e636560501b604482015260640161054f565b6001600160a01b0384166000908152600560209081526040808320338452909152812080548492906106ca9084906111a3565b90915550506001600160a01b038416600081815260056020908152604080832033808552908352928190205490519081529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35b610735848484610bbf565b90505b9392505050565b6008546001600160a01b031633146107695760405162461bcd60e51b815260040161054f906111b6565b6001600160a01b03919091166000908152600360205260409020805460ff1916911515919091179055565b6008546001600160a01b031633146107be5760405162461bcd60e51b815260040161054f906111b6565b60085460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303816000875af1158015610811573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083591906111ed565b505050565b60006001600160a01b0383166108625760405162461bcd60e51b815260040161054f90611156565b8161086d3385610b94565b610877919061120a565b3360008181526005602090815260408083206001600160a01b038916808552908352928190208590555193845290927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591016105ac565b60006105b882600019610527565b6008546001600160a01b031633146109065760405162461bcd60e51b815260040161054f906111b6565b6000610912838261126b565b506001610835828261126b565b6008546001600160a01b031633146109495760405162461bcd60e51b815260040161054f906111b6565b6006819055600a8110156109985760405162461bcd60e51b815260206004820152601660248201527513585e15d85b1b195d081cd859995d1e481b1a5b5a5d60521b604482015260640161054f565b50565b6008546001600160a01b031633146109c55760405162461bcd60e51b815260040161054f906111b6565b600880546001600160a01b0319169055565b6060600180546104a49061111c565b60006001600160a01b038316610a0e5760405162461bcd60e51b815260040161054f90611156565b81610a193385610b94565b1015610a7a5760405162461bcd60e51b815260206004820152602a60248201527f43616e2774207375627472616374206d6f7265207468616e2063757272656e7460448201526920616c6c6f77616e636560b01b606482015260840161054f565b81610a853385610b94565b61087791906111a3565b6000610738338484610bbf565b6008546001600160a01b03163314610ac65760405162461bcd60e51b815260040161054f906111b6565b6007819055604b8110156109985760405162461bcd60e51b815260206004820152601260248201527113585e151e081cd859995d1e481b1a5b5a5d60721b604482015260640161054f565b6008546001600160a01b03163314610b3b5760405162461bcd60e51b815260040161054f906111b6565b6008546040516000916001600160a01b03169083908381818185875af1925050503d8060008114610b88576040519150601f19603f3d011682016040523d82523d6000602084013e610b8d565b606091505b5050505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b6000610bcc848484610be2565b610bd7848484610d16565b506001949350505050565b6103e86006541015610835576001600160a01b03821660009081526003602052604090205460ff16610c89576103e8600654600254610c21919061132b565b610c2b9190611342565b6001600160a01b038316600090815260046020526040902054610c4f90839061120a565b1115610c895760405162461bcd60e51b815260206004820152600960248201526813585e15d85b1b195d60ba1b604482015260640161054f565b6001600160a01b03831660009081526003602052604090205460ff166108355760646103e8600754600654600254610cc1919061132b565b610ccb919061132b565b610cd59190611342565b610cdf9190611342565b8111156108355760405162461bcd60e51b815260206004820152600560248201526409ac2f0a8f60db1b604482015260640161054f565b60006001600160a01b038416610d6e5760405162461bcd60e51b815260206004820152601d60248201527f43616e277420757365207a65726f206164647265737365732068657265000000604482015260640161054f565b6001600160a01b038416600090815260046020526040902054821115610dd65760405162461bcd60e51b815260206004820181905260248201527f43616e2774207472616e73666572206d6f7265207468616e20796f75206f776e604482015260640161054f565b81600003610de657506001610738565b6001600160a01b03841660009081526004602052604081208054849290610e0e9084906111a3565b90915550506001600160a01b03831660009081526004602052604081208054849290610e3b90849061120a565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610e8791815260200190565b60405180910390a35060019392505050565b600060208083528351808285015260005b81811015610ec657858101830151858201604001528201610eaa565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610efe57600080fd5b919050565b60008060408385031215610f1657600080fd5b610f1f83610ee7565b946020939093013593505050565b600080600060608486031215610f4257600080fd5b610f4b84610ee7565b9250610f5960208501610ee7565b9150604084013590509250925092565b801515811461099857600080fd5b60008060408385031215610f8a57600080fd5b610f9383610ee7565b91506020830135610fa381610f69565b809150509250929050565b600060208284031215610fc057600080fd5b61073882610ee7565b634e487b7160e01b600052604160045260246000fd5b600082601f830112610ff057600080fd5b813567ffffffffffffffff8082111561100b5761100b610fc9565b604051601f8301601f19908116603f0116810190828211818310171561103357611033610fc9565b8160405283815286602085880101111561104c57600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806040838503121561107f57600080fd5b823567ffffffffffffffff8082111561109757600080fd5b6110a386838701610fdf565b935060208501359150808211156110b957600080fd5b506110c685828601610fdf565b9150509250929050565b6000602082840312156110e257600080fd5b5035919050565b600080604083850312156110fc57600080fd5b61110583610ee7565b915061111360208401610ee7565b90509250929050565b600181811c9082168061113057607f821691505b60208210810361115057634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252601b908201527f43616e277420757365207a65726f206164647265737320686572650000000000604082015260600190565b634e487b7160e01b600052601160045260246000fd5b818103818111156105b8576105b861118d565b60208082526018908201527f4f6e6c79207468652063656f2063616e20646f20746861740000000000000000604082015260600190565b6000602082840312156111ff57600080fd5b815161073881610f69565b808201808211156105b8576105b861118d565b601f82111561083557600081815260208120601f850160051c810160208610156112445750805b601f850160051c820191505b8181101561126357828155600101611250565b505050505050565b815167ffffffffffffffff81111561128557611285610fc9565b61129981611293845461111c565b8461121d565b602080601f8311600181146112ce57600084156112b65750858301515b600019600386901b1c1916600185901b178555611263565b600085815260208120601f198616915b828110156112fd578886015182559484019460019091019084016112de565b508582101561131b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b80820281158282048414176105b8576105b861118d565b60008261135f57634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220818e9ee827d6a92c889199e51bc1694ea8b2303f101126a27670a64b105a628e64736f6c63430008130033