ERC-20
Overview
Max Total Supply
1,000,000,000 HODL
Holders
37
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
8,701,885.270583981204236798 HODLValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
Hodl
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-11-19 */ // File: @openzeppelin/contracts/utils/Address.sol // OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol) pragma solidity ^0.8.1; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * * Furthermore, `isContract` will also return true if the target contract within * the same transaction is already scheduled for destruction by `SELFDESTRUCT`, * which only has an effect at the end of a transaction. * ==== * * [IMPORTANT] * ==== * You shouldn't rely on `isContract` to protect against flash loan attacks! * * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract * constructor. * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize/address.code.length, which returns 0 // for contracts in construction, since the code is only stored at the end // of the constructor execution. return account.code.length > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ 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"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ 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"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ 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"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } /** * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract. * * _Available since v4.8._ */ function verifyCallResultFromTarget( address target, bool success, bytes memory returndata, string memory errorMessage ) internal view returns (bytes memory) { if (success) { if (returndata.length == 0) { // only check isContract if the call was successful and the return data is empty // otherwise we already know that it was a contract require(isContract(target), "Address: call to non-contract"); } return returndata; } else { _revert(returndata, errorMessage); } } /** * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason or using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { _revert(returndata, errorMessage); } } function _revert(bytes memory returndata, string memory errorMessage) private pure { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly /// @solidity memory-safe-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } // File: @openzeppelin/contracts/token/ERC20/IERC20.sol // OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address from, address to, uint256 amount) external returns (bool); } // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: topia.sol pragma solidity 0.8.19; interface IFactory{ function createPair(address tokenA, address tokenB) external returns (address pair); } interface IRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external; } contract Hodl is IERC20, Ownable { using Address for address payable; mapping (address => uint256) private _rOwned; mapping (address => uint256) private _tOwned; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _isExcludedFromFee; mapping (address => bool) private _isExcluded; address[] private _excluded; bool public swapEnabled; bool private swapping; bool public tradingEnabled; IRouter public router; address public pair; address public devWallet; address public buybackWallet; uint8 private constant _decimals = 18; uint256 private constant MAX = ~uint256(0); uint256 private _tTotal = 1_000_000_000 * 10**_decimals; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 public totalRfi; uint256 public swapThreshold = 2_000_000 * 10**_decimals; uint256 public maxTxAmount = 20_000_000 * 10**_decimals; uint256 public maxWalletAmount = 20_000_000 * 10**_decimals; uint256 public buyThreshold = 1_000_000 * 10**_decimals; uint256 public startBlock; uint256 public offlineBlocks = 5; uint256 public buyTax = 150; // 15% - For First 5 Blocks uint256 public sellTax = 200; // 20% uint256 public dynamicTax = 20; // 2% uint256 public maxSellTax = 200; // 20% string private constant _name = "HODL"; string private constant _symbol = "HODL"; struct TaxesPercentage { uint256 rfi; uint256 dev; uint256 buyBack; } TaxesPercentage public taxesPercentage = TaxesPercentage(35,30,35); struct valuesFromGetValues{ uint256 rAmount; uint256 rTransferAmount; uint256 rRfi; uint256 rSwap; uint256 tTransferAmount; uint256 tRfi; uint256 tSwap; } modifier lockTheSwap { swapping = true; _; swapping = false; } constructor (address _routerAddress, address _devWallet, address _buybackWallet) { IRouter _router = IRouter(_routerAddress); address _pair = IFactory(_router.factory()) .createPair(address(this), _router.WETH()); router = _router; pair = _pair; excludeFromReward(pair); excludeFromReward(address(0xdead)); _rOwned[msg.sender] = _rTotal; _isExcludedFromFee[msg.sender] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[_devWallet]=true; _isExcludedFromFee[_buybackWallet] = true; devWallet = _devWallet; buybackWallet = _buybackWallet; emit Transfer(address(0), msg.sender, _tTotal); } function name() public pure returns (string memory) { return _name; } function symbol() public pure returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { if (_isExcluded[account]) return _tOwned[account]; return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); _approve(sender, _msgSender(), currentAllowance - amount); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); _approve(_msgSender(), spender, currentAllowance - subtractedValue); return true; } function isExcludedFromReward(address account) public view returns (bool) { return _isExcluded[account]; } function tokenFromReflection(uint256 rAmount) public view returns(uint256) { require(rAmount <= _rTotal, "Amount must be less than total reflections"); uint256 currentRate = _getRate(); return rAmount/currentRate; } function excludeFromReward(address account) public onlyOwner { require(!_isExcluded[account], "Account is already excluded"); if(_rOwned[account] > 0) { _tOwned[account] = tokenFromReflection(_rOwned[account]); } _isExcluded[account] = true; _excluded.push(account); } function includeInReward(address account) external onlyOwner { require(_isExcluded[account], "Account is not excluded"); for (uint256 i = 0; i < _excluded.length; i++) { if (_excluded[i] == account) { _excluded[i] = _excluded[_excluded.length - 1]; _tOwned[account] = 0; _isExcluded[account] = false; _excluded.pop(); break; } } } function excludeFromFee(address account, bool status) public onlyOwner { _isExcludedFromFee[account] = status; } function isExcludedFromFee(address account) public view returns(bool) { return _isExcludedFromFee[account]; } function setTaxesPercentage(uint256 _rfi, uint256 _dev, uint256 _buyback) public onlyOwner { require(_rfi + _dev + _buyback == 100, "Total must be 100"); taxesPercentage = TaxesPercentage(_rfi, _dev, _buyback); } function _reflectRfi(uint256 rRfi, uint256 tRfi) private { _rTotal -=rRfi; totalRfi +=tRfi; } function _takeSwapFees(uint256 rValue, uint256 tValue) private { if(_isExcluded[address(this)]) { _tOwned[address(this)]+=tValue; } _rOwned[address(this)] +=rValue; } function _getValues(uint256 tAmount, bool takeFee, bool isSell) private view returns (valuesFromGetValues memory to_return) { to_return = _getTValues(tAmount, takeFee, isSell); (to_return.rAmount, to_return.rTransferAmount, to_return.rRfi, to_return.rSwap) = _getRValues(to_return, tAmount, takeFee, _getRate()); return to_return; } function _getTValues(uint256 tAmount, bool takeFee, bool isSell) private view returns (valuesFromGetValues memory s) { if(!takeFee) { s.tTransferAmount = tAmount; return s; } uint256 tempTax = isSell ? sellTax : buyTax; uint256 rfiTax = tempTax * taxesPercentage.rfi / 100; uint256 swapTax = tempTax * (100 - taxesPercentage.rfi) / 100; s.tRfi = tAmount * rfiTax / 1000; s.tSwap = tAmount * swapTax / 1000; s.tTransferAmount = tAmount - s.tRfi - s.tSwap; return s; } function _getRValues(valuesFromGetValues memory s, uint256 tAmount, bool takeFee, uint256 currentRate) private pure returns (uint256 rAmount, uint256 rTransferAmount, uint256 rRfi, uint256 rSwap) { rAmount = tAmount*currentRate; if(!takeFee) { return(rAmount, rAmount, 0,0); } rRfi = s.tRfi*currentRate; rSwap = s.tSwap*currentRate; rTransferAmount = rAmount-rRfi-rSwap; return (rAmount, rTransferAmount, rRfi,rSwap); } function _getRate() private view returns(uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply/tSupply; } function _getCurrentSupply() private view returns(uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; for (uint256 i = 0; i < _excluded.length; i++) { if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal); rSupply = rSupply-_rOwned[_excluded[i]]; tSupply = tSupply-_tOwned[_excluded[i]]; } if (rSupply < _rTotal/_tTotal) return (_rTotal, _tTotal); return (rSupply, tSupply); } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer(address from, address to, uint256 amount) private { require(from != address(0), "ERC20: transfer from the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); require(amount <= balanceOf(from),"You are trying to transfer more than your balance"); if(buyTax != 0 && tradingEnabled){ if(startBlock + offlineBlocks < block.number) buyTax = 0; } bool takeFee = false; if(!_isExcludedFromFee[from] && !_isExcludedFromFee[to]){ require(tradingEnabled ,"Liquidity has not been added yet"); require(amount <= maxTxAmount, "You are exceeding maxTxAmount"); if(to != pair) require(balanceOf(to) + amount <= maxWalletAmount, "You are exceeding maxWalletAmount"); takeFee = true; if(from == pair && startBlock + offlineBlocks < block.number){ takeFee = false; if(amount >= buyThreshold){ if(sellTax >= dynamicTax) sellTax -= dynamicTax; else sellTax = 0; } } } bool canSwap = balanceOf(address(this)) >= swapThreshold; if(!swapping && swapEnabled && canSwap && from != pair && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]){ swapTokensForFees(swapThreshold); } _tokenTransfer(from, to, amount, takeFee); } //this method is responsible for taking all fee, if takeFee is true function _tokenTransfer(address sender, address recipient, uint256 tAmount, bool takeFee) private { bool isSell = recipient == pair ? true : false; valuesFromGetValues memory s = _getValues(tAmount, takeFee, isSell); if(isSell && takeFee && startBlock + offlineBlocks < block.number){ if(sellTax + dynamicTax > maxSellTax) sellTax = maxSellTax; else sellTax += dynamicTax; } if (_isExcluded[sender] ) { //from excluded _tOwned[sender] = _tOwned[sender]-tAmount; } if (_isExcluded[recipient]) { //to excluded _tOwned[recipient] = _tOwned[recipient]+s.tTransferAmount; } _rOwned[sender] = _rOwned[sender]-s.rAmount; _rOwned[recipient] = _rOwned[recipient]+s.rTransferAmount; if(s.rRfi > 0 || s.tRfi > 0) _reflectRfi(s.rRfi, s.tRfi); if(s.rSwap > 0 || s.tSwap > 0) _takeSwapFees(s.rSwap, s.tSwap); emit Transfer(sender, recipient, s.tTransferAmount); emit Transfer(sender, address(this), s.tSwap); } function swapTokensForFees(uint256 tokens) private lockTheSwap{ uint256 initialBalance = address(this).balance; swapTokensForETH(tokens); uint256 deltaBalance = address(this).balance - initialBalance; uint256 totalPercent = 100 - taxesPercentage.rfi; if(totalPercent == 0) return; uint256 devAmt = deltaBalance * taxesPercentage.dev / totalPercent; if(devAmt > 0) payable(devWallet).sendValue(devAmt); uint256 buybackAmt = deltaBalance - devAmt; if(buybackAmt > 0) payable(buybackWallet).sendValue(buybackAmt); } function swapTokensForETH(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = router.WETH(); _approve(address(this), address(router), tokenAmount); // make the swap router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function enableTrading() external onlyOwner{ tradingEnabled = true; swapEnabled = true; startBlock = block.number; } function updateDevWallet(address newWallet) external onlyOwner{ devWallet = newWallet; _isExcludedFromFee[devWallet] = true; } function updateBuybackWallet(address newWallet) external onlyOwner{ buybackWallet = newWallet; _isExcludedFromFee[buybackWallet] = true; } function updateBuyThreshold(uint256 amount) external onlyOwner{ buyThreshold = amount * 10**_decimals; } function updateMaxTx(uint256 amount) external onlyOwner{ maxTxAmount = amount * 10**_decimals; } function updateMaxWallet(uint256 amount) external onlyOwner{ maxWalletAmount = amount * 10**_decimals; } function updateSwapThreshold(uint256 amount) external onlyOwner{ swapThreshold = amount * 10**_decimals; } function updateSwapEnabled(bool _enabled) external onlyOwner{ swapEnabled = _enabled; } function updateRouterAndPair(address newRouter, address newPair) external onlyOwner{ //Thanks router = IRouter(newRouter); pair = newPair; } function updateDynamicTax(uint256 amount) external onlyOwner{ dynamicTax = amount; } function updateMaxSellTax(uint256 amount) external onlyOwner{ maxSellTax = amount; } function rescueETH(uint256 weiAmount) external onlyOwner{ payable(msg.sender).transfer(weiAmount); } function rescueTokens(address _tokenAddr, address _to, uint _amount) external onlyOwner { IERC20(_tokenAddr).transfer(_to, _amount); } receive() external payable{ } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_routerAddress","type":"address"},{"internalType":"address","name":"_devWallet","type":"address"},{"internalType":"address","name":"_buybackWallet","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"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buybackWallet","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":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dynamicTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"offlineBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rfi","type":"uint256"},{"internalType":"uint256","name":"_dev","type":"uint256"},{"internalType":"uint256","name":"_buyback","type":"uint256"}],"name":"setTaxesPercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"taxesPercentage","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"},{"internalType":"uint256","name":"buyBack","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalRfi","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateBuyThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateBuybackWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateDynamicTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMaxSellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"},{"internalType":"address","name":"newPair","type":"address"}],"name":"updateRouterAndPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052620000126012600a62000911565b6200002290633b9aca0062000922565b600b819055620000359060001962000952565b620000439060001962000969565b600c55620000546012600a62000911565b6200006390621e848062000922565b600e55620000746012600a62000911565b62000084906301312d0062000922565b600f55620000956012600a62000911565b620000a5906301312d0062000922565b601055620000b66012600a62000911565b620000c590620f424062000922565b60115560056013556096601490815560c86015819055601691909155601755604080516060810182526023808252601e60208301819052919092018290526018829055601955601a553480156200011b57600080fd5b506040516200318c3803806200318c8339810160408190526200013e916200099c565b6200014933620003c6565b60008390506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200018f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001b59190620009e6565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000203573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002299190620009e6565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000277573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200029d9190620009e6565b600780546001600160a01b038086166301000000026301000000600160b81b031990921691909117909155600880549183166001600160a01b031990921682179055909150620002ed9062000416565b620002fa61dead62000416565b600c543360008181526001602081815260408084209590955560048152848320805460ff19908116841790915530845285842080548216841790556001600160a01b038a81168086528786208054841686179055908a168086528786208054909316909417909155600980546001600160a01b03199081169092179055600a8054909116909217909155600b549351938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050505062000a4d565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6200042062000552565b6001600160a01b03811660009081526005602052604090205460ff16156200048f5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064015b60405180910390fd5b6001600160a01b03811660009081526001602052604090205415620004ec576001600160a01b038116600090815260016020526040902054620004d290620005b0565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556006805491820181559091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319169091179055565b6000546001600160a01b03163314620005ae5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000486565b565b6000600c54821115620006195760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b606482015260840162000486565b6000620006256200063a565b905062000633818462000a04565b9392505050565b600080806200064862000660565b909250905062000659818362000a04565b9250505090565b600c54600b546000918291825b600654811015620007c85782600160006006848154811062000693576200069362000a1b565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180620007025750816002600060068481548110620006db57620006db62000a1b565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156200071957600c54600b54945094505050509091565b600160006006838154811062000733576200073362000a1b565b60009182526020808320909101546001600160a01b0316835282019290925260400190205462000764908462000969565b9250600260006006838154811062000780576200078062000a1b565b60009182526020808320909101546001600160a01b03168352820192909252604001902054620007b1908362000969565b915080620007bf8162000a31565b9150506200066d565b50600b54600c54620007db919062000a04565b821015620007f357600c54600b549350935050509091565b90939092509050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000853578160001904821115620008375762000837620007fc565b808516156200084557918102915b93841c939080029062000817565b509250929050565b6000826200086c575060016200090b565b816200087b575060006200090b565b81600181146200089457600281146200089f57620008bf565b60019150506200090b565b60ff841115620008b357620008b3620007fc565b50506001821b6200090b565b5060208310610133831016604e8410600b8410161715620008e4575081810a6200090b565b620008f0838362000812565b8060001904821115620009075762000907620007fc565b0290505b92915050565b60006200063360ff8416836200085b565b80820281158282048414176200090b576200090b620007fc565b634e487b7160e01b600052601260045260246000fd5b6000826200096457620009646200093c565b500690565b818103818111156200090b576200090b620007fc565b80516001600160a01b03811681146200099757600080fd5b919050565b600080600060608486031215620009b257600080fd5b620009bd846200097f565b9250620009cd602085016200097f565b9150620009dd604085016200097f565b90509250925092565b600060208284031215620009f957600080fd5b62000633826200097f565b60008262000a165762000a166200093c565b500490565b634e487b7160e01b600052603260045260246000fd5b60006001820162000a465762000a46620007fc565b5060010190565b61272f8062000a5d6000396000f3fe6080604052600436106103035760003560e01c8063715018a611610190578063a8aa1b31116100dc578063cea9d26f11610095578063df8408fe1161006f578063df8408fe1461091c578063f13cff411461093c578063f2fde38b14610952578063f887ea401461097257600080fd5b8063cea9d26f14610896578063dd62ed3e146108b6578063deab8aea146108fc57600080fd5b8063a8aa1b31146107ea578063a9059cbb1461080a578063aa4bde281461082a578063c2d0ffca14610840578063cc1776d314610860578063cc274b291461087657600080fd5b80638ea5220f11610149578063963fbc5011610123578063963fbc50146107745780639e252f0014610794578063a411209a146107b4578063a457c2d7146107ca57600080fd5b80638ea5220f14610734578063924de9b71461075457806395d89b411461039457600080fd5b8063715018a614610669578063799754d71461067e57806388f820201461069e5780638a8c523c146106d75780638c0b5e22146106ec5780638da5cb5b1461070257600080fd5b8063313ce5671161024f5780634da86156116102085780635342acb4116101e25780635342acb4146105e0578063649011c8146106195780636ddd17131461062f57806370a082311461064957600080fd5b80634da86156146105945780634f7041a5146105aa57806352390c02146105c057600080fd5b8063313ce567146104e25780633685d419146104fe578063395093511461051e57806340b28c2f1461053e57806348cd4cb11461055e5780634ada218b1461057457600080fd5b8063095ea7b3116102bc5780631a661181116102965780631a6611811461046c5780631c499ab01461048257806323b872dd146104a25780632d838119146104c257600080fd5b8063095ea7b31461040757806318160ddd146104375780631816467f1461044c57600080fd5b8063029514f71461030f5780630445b6671461034e57806304dacd501461037257806306fdde0314610394578063079bf867146103c75780630858fa35146103e757600080fd5b3661030a57005b600080fd5b34801561031b57600080fd5b50601854601954601a5461032e92919083565b604080519384526020840192909252908201526060015b60405180910390f35b34801561035a57600080fd5b50610364600e5481565b604051908152602001610345565b34801561037e57600080fd5b5061039261038d3660046122f2565b610999565b005b3480156103a057600080fd5b5060408051808201825260048152631213d11360e21b60208201529051610345919061230f565b3480156103d357600080fd5b506103926103e236600461235d565b6109db565b3480156103f357600080fd5b50610392610402366004612376565b6109e8565b34801561041357600080fd5b506104276104223660046123a2565b610a73565b6040519015158152602001610345565b34801561044357600080fd5b50600b54610364565b34801561045857600080fd5b506103926104673660046122f2565b610a8a565b34801561047857600080fd5b50610364600d5481565b34801561048e57600080fd5b5061039261049d36600461235d565b610acc565b3480156104ae57600080fd5b506104276104bd3660046123ce565b610af0565b3480156104ce57600080fd5b506103646104dd36600461235d565b610ba3565b3480156104ee57600080fd5b5060405160128152602001610345565b34801561050a57600080fd5b506103926105193660046122f2565b610c20565b34801561052a57600080fd5b506104276105393660046123a2565b610db4565b34801561054a57600080fd5b5061039261055936600461240f565b610deb565b34801561056a57600080fd5b5061036460125481565b34801561058057600080fd5b506007546104279062010000900460ff1681565b3480156105a057600080fd5b5061036460165481565b3480156105b657600080fd5b5061036460145481565b3480156105cc57600080fd5b506103926105db3660046122f2565b610e2f565b3480156105ec57600080fd5b506104276105fb3660046122f2565b6001600160a01b031660009081526004602052604090205460ff1690565b34801561062557600080fd5b5061036460135481565b34801561063b57600080fd5b506007546104279060ff1681565b34801561065557600080fd5b506103646106643660046122f2565b610f60565b34801561067557600080fd5b50610392610fbf565b34801561068a57600080fd5b5061039261069936600461235d565b610fd3565b3480156106aa57600080fd5b506104276106b93660046122f2565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156106e357600080fd5b50610392610ff7565b3480156106f857600080fd5b50610364600f5481565b34801561070e57600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610345565b34801561074057600080fd5b5060095461071c906001600160a01b031681565b34801561076057600080fd5b5061039261076f366004612456565b611016565b34801561078057600080fd5b5061039261078f36600461235d565b611031565b3480156107a057600080fd5b506103926107af36600461235d565b61103e565b3480156107c057600080fd5b5061036460175481565b3480156107d657600080fd5b506104276107e53660046123a2565b611073565b3480156107f657600080fd5b5060085461071c906001600160a01b031681565b34801561081657600080fd5b506104276108253660046123a2565b61110e565b34801561083657600080fd5b5061036460105481565b34801561084c57600080fd5b5061039261085b36600461235d565b61111b565b34801561086c57600080fd5b5061036460155481565b34801561088257600080fd5b5061039261089136600461235d565b61113f565b3480156108a257600080fd5b506103926108b13660046123ce565b611163565b3480156108c257600080fd5b506103646108d136600461240f565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561090857600080fd5b50600a5461071c906001600160a01b031681565b34801561092857600080fd5b50610392610937366004612473565b6111e4565b34801561094857600080fd5b5061036460115481565b34801561095e57600080fd5b5061039261096d3660046122f2565b611217565b34801561097e57600080fd5b5060075461071c90630100000090046001600160a01b031681565b6109a1611290565b600a80546001600160a01b039092166001600160a01b0319909216821790556000908152600460205260409020805460ff19166001179055565b6109e3611290565b601755565b6109f0611290565b806109fb83856124b7565b610a0591906124b7565b606414610a4d5760405162461bcd60e51b81526020600482015260116024820152700546f74616c206d7573742062652031303607c1b60448201526064015b60405180910390fd5b604080516060810182528481526020810184905201819052601892909255601955601a55565b6000610a803384846112ea565b5060015b92915050565b610a92611290565b600980546001600160a01b039092166001600160a01b0319909216821790556000908152600460205260409020805460ff19166001179055565b610ad4611290565b610ae06012600a6125ae565b610aea90826125bd565b60105550565b6000610afd84848461140e565b6001600160a01b038416600090815260036020908152604080832033845290915290205482811015610b825760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610a44565b610b968533610b9186856125d4565b6112ea565b60019150505b9392505050565b6000600c54821115610c0a5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610a44565b6000610c14611824565b9050610b9c81846125e7565b610c28611290565b6001600160a01b03811660009081526005602052604090205460ff16610c905760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c756465640000000000000000006044820152606401610a44565b60005b600654811015610db057816001600160a01b031660068281548110610cba57610cba612609565b6000918252602090912001546001600160a01b031603610d9e5760068054610ce4906001906125d4565b81548110610cf457610cf4612609565b600091825260209091200154600680546001600160a01b039092169183908110610d2057610d20612609565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff191690556006805480610d7857610d7861261f565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610da881612635565b915050610c93565b5050565b3360008181526003602090815260408083206001600160a01b03871684529091528120549091610a80918590610b919086906124b7565b610df3611290565b600780546301000000600160b81b03191663010000006001600160a01b0394851602179055600880546001600160a01b03191691909216179055565b610e37611290565b6001600160a01b03811660009081526005602052604090205460ff1615610ea05760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610a44565b6001600160a01b03811660009081526001602052604090205415610efa576001600160a01b038116600090815260016020526040902054610ee090610ba3565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556006805491820181559091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319169091179055565b6001600160a01b03811660009081526005602052604081205460ff1615610f9d57506001600160a01b031660009081526002602052604090205490565b6001600160a01b038216600090815260016020526040902054610a8490610ba3565b610fc7611290565b610fd16000611847565b565b610fdb611290565b610fe76012600a6125ae565b610ff190826125bd565b60115550565b610fff611290565b6007805462ff00ff19166201000117905543601255565b61101e611290565b6007805460ff1916911515919091179055565b611039611290565b601655565b611046611290565b604051339082156108fc029083906000818181858888f19350505050158015610db0573d6000803e3d6000fd5b3360009081526003602090815260408083206001600160a01b0386168452909152812054828110156110f55760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610a44565b6111043385610b9186856125d4565b5060019392505050565b6000610a8033848461140e565b611123611290565b61112f6012600a6125ae565b61113990826125bd565b600f5550565b611147611290565b6111536012600a6125ae565b61115d90826125bd565b600e5550565b61116b611290565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af11580156111ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111de919061264e565b50505050565b6111ec611290565b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b61121f611290565b6001600160a01b0381166112845760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a44565b61128d81611847565b50565b6000546001600160a01b03163314610fd15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a44565b6001600160a01b03831661134c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a44565b6001600160a01b0382166113ad5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a44565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166114725760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a44565b600081116114d45760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610a44565b6114dd83610f60565b8111156115465760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610a44565b6014541580159061155f575060075462010000900460ff165b15611581574360135460125461157591906124b7565b10156115815760006014555b6001600160a01b03831660009081526004602052604081205460ff161580156115c357506001600160a01b03831660009081526004602052604090205460ff16155b156117675760075462010000900460ff166116205760405162461bcd60e51b815260206004820181905260248201527f4c697175696469747920686173206e6f74206265656e206164646564207965746044820152606401610a44565b600f548211156116725760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61785478416d6f756e740000006044820152606401610a44565b6008546001600160a01b038481169116146116f6576010548261169485610f60565b61169e91906124b7565b11156116f65760405162461bcd60e51b815260206004820152602160248201527f596f752061726520657863656564696e67206d617857616c6c6574416d6f756e6044820152601d60fa1b6064820152608401610a44565b506008546001906001600160a01b03858116911614801561172557504360135460125461172391906124b7565b105b15611767576000905060115482106117675760165460155410611761576016546015600082825461175691906125d4565b909155506117679050565b60006015555b6000600e5461177530610f60565b6007549111159150610100900460ff16158015611794575060075460ff165b801561179d5750805b80156117b757506008546001600160a01b03868116911614155b80156117dc57506001600160a01b03851660009081526004602052604090205460ff16155b801561180157506001600160a01b03841660009081526004602052604090205460ff16155b1561181157611811600e54611897565b61181d8585858561195a565b5050505050565b6000806000611831611c33565b909250905061184081836125e7565b9250505090565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6007805461ff001916610100179055476118b082611db6565b60006118bc82476125d4565b6018549091506000906118d09060646125d4565b9050806000036118e25750505061194c565b60195460009082906118f490856125bd565b6118fe91906125e7565b9050801561191c5760095461191c906001600160a01b031682611f37565b600061192882856125d4565b9050801561194657600a54611946906001600160a01b031682611f37565b50505050505b506007805461ff0019169055565b6008546000906001600160a01b0385811691161461197957600061197c565b60015b9050600061198b848484612055565b90508180156119975750825b80156119b15750436013546012546119af91906124b7565b105b156119f4576017546016546015546119c991906124b7565b11156119da576017546015556119f4565b601654601560008282546119ee91906124b7565b90915550505b6001600160a01b03861660009081526005602052604090205460ff1615611a53576001600160a01b038616600090815260026020526040902054611a399085906125d4565b6001600160a01b0387166000908152600260205260409020555b6001600160a01b03851660009081526005602052604090205460ff1615611ab65760808101516001600160a01b038616600090815260026020526040902054611a9c91906124b7565b6001600160a01b0386166000908152600260205260409020555b80516001600160a01b038716600090815260016020526040902054611adb91906125d4565b6001600160a01b0380881660009081526001602090815260408083209490945584015191881681529190912054611b1291906124b7565b6001600160a01b0386166000908152600160205260409081902091909155810151151580611b44575060008160a00151115b15611b5b57611b5b81604001518260a001516120cd565b600081606001511180611b72575060008160c00151115b15611b8957611b8981606001518260c00151612101565b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360800151604051611bd291815260200190565b60405180910390a3306001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360c00151604051611c2391815260200190565b60405180910390a3505050505050565b600c54600b546000918291825b600654811015611d8557826001600060068481548110611c6257611c62612609565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180611ccd5750816002600060068481548110611ca657611ca6612609565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15611ce357600c54600b54945094505050509091565b6001600060068381548110611cfa57611cfa612609565b60009182526020808320909101546001600160a01b03168352820192909252604001902054611d2990846125d4565b92506002600060068381548110611d4257611d42612609565b60009182526020808320909101546001600160a01b03168352820192909252604001902054611d7190836125d4565b915080611d7d81612635565b915050611c40565b50600b54600c54611d9691906125e7565b821015611dad57600c54600b549350935050509091565b90939092509050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611deb57611deb612609565b60200260200101906001600160a01b031690816001600160a01b031681525050600760039054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e82919061266b565b81600181518110611e9557611e95612609565b6001600160a01b039283166020918202929092010152600754611ec29130916301000000900416846112ea565b60075460405163791ac94760e01b815263010000009091046001600160a01b03169063791ac94790611f01908590600090869030904290600401612688565b600060405180830381600087803b158015611f1b57600080fd5b505af1158015611f2f573d6000803e3d6000fd5b505050505050565b80471015611f875760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610a44565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611fd4576040519150601f19603f3d011682016040523d82523d6000602084013e611fd9565b606091505b50509050806120505760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610a44565b505050565b6120956040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6120a084848461215d565b90506120b58185856120b0611824565b612272565b60608501526040840152602083015281529392505050565b81600c60008282546120df91906125d4565b9250508190555080600d60008282546120f891906124b7565b90915550505050565b3060009081526005602052604090205460ff161561213e5730600090815260026020526040812080548392906121389084906124b7565b90915550505b30600090815260016020526040812080548492906120f89084906124b7565b61219d6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b826121ae5760808101849052610b9c565b6000826121bd576014546121c1565b6015545b905060006064601860000154836121d891906125bd565b6121e291906125e7565b90506000606460186000015460646121fa91906125d4565b61220490856125bd565b61220e91906125e7565b90506103e861221d83896125bd565b61222791906125e7565b60a08501526103e861223982896125bd565b61224391906125e7565b60c0850181905260a085015161225990896125d4565b61226391906125d4565b60808501525050509392505050565b600080808061228185886125bd565b935085612296575082915060009050806122d2565b848860a001516122a691906125bd565b9150848860c001516122b891906125bd565b9050806122c583866125d4565b6122cf91906125d4565b92505b945094509450949050565b6001600160a01b038116811461128d57600080fd5b60006020828403121561230457600080fd5b8135610b9c816122dd565b600060208083528351808285015260005b8181101561233c57858101830151858201604001528201612320565b506000604082860101526040601f19601f8301168501019250505092915050565b60006020828403121561236f57600080fd5b5035919050565b60008060006060848603121561238b57600080fd5b505081359360208301359350604090920135919050565b600080604083850312156123b557600080fd5b82356123c0816122dd565b946020939093013593505050565b6000806000606084860312156123e357600080fd5b83356123ee816122dd565b925060208401356123fe816122dd565b929592945050506040919091013590565b6000806040838503121561242257600080fd5b823561242d816122dd565b9150602083013561243d816122dd565b809150509250929050565b801515811461128d57600080fd5b60006020828403121561246857600080fd5b8135610b9c81612448565b6000806040838503121561248657600080fd5b8235612491816122dd565b9150602083013561243d81612448565b634e487b7160e01b600052601160045260246000fd5b80820180821115610a8457610a846124a1565b600181815b808511156125055781600019048211156124eb576124eb6124a1565b808516156124f857918102915b93841c93908002906124cf565b509250929050565b60008261251c57506001610a84565b8161252957506000610a84565b816001811461253f576002811461254957612565565b6001915050610a84565b60ff84111561255a5761255a6124a1565b50506001821b610a84565b5060208310610133831016604e8410600b8410161715612588575081810a610a84565b61259283836124ca565b80600019048211156125a6576125a66124a1565b029392505050565b6000610b9c60ff84168361250d565b8082028115828204841417610a8457610a846124a1565b81810381811115610a8457610a846124a1565b60008261260457634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b600060018201612647576126476124a1565b5060010190565b60006020828403121561266057600080fd5b8151610b9c81612448565b60006020828403121561267d57600080fd5b8151610b9c816122dd565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156126d85784516001600160a01b0316835293830193918301916001016126b3565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212209c8bce01f69d39de2c65dd465e9441cf610c70d8877a2ec68da0c4a87cd6bcec64736f6c634300081300330000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000d38e107df5670054000b9545d55e6f5ae1c77dd6000000000000000000000000eb13b0cf78ac8ce9003646b4823d1e46b2624ef0
Deployed Bytecode
0x6080604052600436106103035760003560e01c8063715018a611610190578063a8aa1b31116100dc578063cea9d26f11610095578063df8408fe1161006f578063df8408fe1461091c578063f13cff411461093c578063f2fde38b14610952578063f887ea401461097257600080fd5b8063cea9d26f14610896578063dd62ed3e146108b6578063deab8aea146108fc57600080fd5b8063a8aa1b31146107ea578063a9059cbb1461080a578063aa4bde281461082a578063c2d0ffca14610840578063cc1776d314610860578063cc274b291461087657600080fd5b80638ea5220f11610149578063963fbc5011610123578063963fbc50146107745780639e252f0014610794578063a411209a146107b4578063a457c2d7146107ca57600080fd5b80638ea5220f14610734578063924de9b71461075457806395d89b411461039457600080fd5b8063715018a614610669578063799754d71461067e57806388f820201461069e5780638a8c523c146106d75780638c0b5e22146106ec5780638da5cb5b1461070257600080fd5b8063313ce5671161024f5780634da86156116102085780635342acb4116101e25780635342acb4146105e0578063649011c8146106195780636ddd17131461062f57806370a082311461064957600080fd5b80634da86156146105945780634f7041a5146105aa57806352390c02146105c057600080fd5b8063313ce567146104e25780633685d419146104fe578063395093511461051e57806340b28c2f1461053e57806348cd4cb11461055e5780634ada218b1461057457600080fd5b8063095ea7b3116102bc5780631a661181116102965780631a6611811461046c5780631c499ab01461048257806323b872dd146104a25780632d838119146104c257600080fd5b8063095ea7b31461040757806318160ddd146104375780631816467f1461044c57600080fd5b8063029514f71461030f5780630445b6671461034e57806304dacd501461037257806306fdde0314610394578063079bf867146103c75780630858fa35146103e757600080fd5b3661030a57005b600080fd5b34801561031b57600080fd5b50601854601954601a5461032e92919083565b604080519384526020840192909252908201526060015b60405180910390f35b34801561035a57600080fd5b50610364600e5481565b604051908152602001610345565b34801561037e57600080fd5b5061039261038d3660046122f2565b610999565b005b3480156103a057600080fd5b5060408051808201825260048152631213d11360e21b60208201529051610345919061230f565b3480156103d357600080fd5b506103926103e236600461235d565b6109db565b3480156103f357600080fd5b50610392610402366004612376565b6109e8565b34801561041357600080fd5b506104276104223660046123a2565b610a73565b6040519015158152602001610345565b34801561044357600080fd5b50600b54610364565b34801561045857600080fd5b506103926104673660046122f2565b610a8a565b34801561047857600080fd5b50610364600d5481565b34801561048e57600080fd5b5061039261049d36600461235d565b610acc565b3480156104ae57600080fd5b506104276104bd3660046123ce565b610af0565b3480156104ce57600080fd5b506103646104dd36600461235d565b610ba3565b3480156104ee57600080fd5b5060405160128152602001610345565b34801561050a57600080fd5b506103926105193660046122f2565b610c20565b34801561052a57600080fd5b506104276105393660046123a2565b610db4565b34801561054a57600080fd5b5061039261055936600461240f565b610deb565b34801561056a57600080fd5b5061036460125481565b34801561058057600080fd5b506007546104279062010000900460ff1681565b3480156105a057600080fd5b5061036460165481565b3480156105b657600080fd5b5061036460145481565b3480156105cc57600080fd5b506103926105db3660046122f2565b610e2f565b3480156105ec57600080fd5b506104276105fb3660046122f2565b6001600160a01b031660009081526004602052604090205460ff1690565b34801561062557600080fd5b5061036460135481565b34801561063b57600080fd5b506007546104279060ff1681565b34801561065557600080fd5b506103646106643660046122f2565b610f60565b34801561067557600080fd5b50610392610fbf565b34801561068a57600080fd5b5061039261069936600461235d565b610fd3565b3480156106aa57600080fd5b506104276106b93660046122f2565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156106e357600080fd5b50610392610ff7565b3480156106f857600080fd5b50610364600f5481565b34801561070e57600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610345565b34801561074057600080fd5b5060095461071c906001600160a01b031681565b34801561076057600080fd5b5061039261076f366004612456565b611016565b34801561078057600080fd5b5061039261078f36600461235d565b611031565b3480156107a057600080fd5b506103926107af36600461235d565b61103e565b3480156107c057600080fd5b5061036460175481565b3480156107d657600080fd5b506104276107e53660046123a2565b611073565b3480156107f657600080fd5b5060085461071c906001600160a01b031681565b34801561081657600080fd5b506104276108253660046123a2565b61110e565b34801561083657600080fd5b5061036460105481565b34801561084c57600080fd5b5061039261085b36600461235d565b61111b565b34801561086c57600080fd5b5061036460155481565b34801561088257600080fd5b5061039261089136600461235d565b61113f565b3480156108a257600080fd5b506103926108b13660046123ce565b611163565b3480156108c257600080fd5b506103646108d136600461240f565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561090857600080fd5b50600a5461071c906001600160a01b031681565b34801561092857600080fd5b50610392610937366004612473565b6111e4565b34801561094857600080fd5b5061036460115481565b34801561095e57600080fd5b5061039261096d3660046122f2565b611217565b34801561097e57600080fd5b5060075461071c90630100000090046001600160a01b031681565b6109a1611290565b600a80546001600160a01b039092166001600160a01b0319909216821790556000908152600460205260409020805460ff19166001179055565b6109e3611290565b601755565b6109f0611290565b806109fb83856124b7565b610a0591906124b7565b606414610a4d5760405162461bcd60e51b81526020600482015260116024820152700546f74616c206d7573742062652031303607c1b60448201526064015b60405180910390fd5b604080516060810182528481526020810184905201819052601892909255601955601a55565b6000610a803384846112ea565b5060015b92915050565b610a92611290565b600980546001600160a01b039092166001600160a01b0319909216821790556000908152600460205260409020805460ff19166001179055565b610ad4611290565b610ae06012600a6125ae565b610aea90826125bd565b60105550565b6000610afd84848461140e565b6001600160a01b038416600090815260036020908152604080832033845290915290205482811015610b825760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610a44565b610b968533610b9186856125d4565b6112ea565b60019150505b9392505050565b6000600c54821115610c0a5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610a44565b6000610c14611824565b9050610b9c81846125e7565b610c28611290565b6001600160a01b03811660009081526005602052604090205460ff16610c905760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c756465640000000000000000006044820152606401610a44565b60005b600654811015610db057816001600160a01b031660068281548110610cba57610cba612609565b6000918252602090912001546001600160a01b031603610d9e5760068054610ce4906001906125d4565b81548110610cf457610cf4612609565b600091825260209091200154600680546001600160a01b039092169183908110610d2057610d20612609565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff191690556006805480610d7857610d7861261f565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610da881612635565b915050610c93565b5050565b3360008181526003602090815260408083206001600160a01b03871684529091528120549091610a80918590610b919086906124b7565b610df3611290565b600780546301000000600160b81b03191663010000006001600160a01b0394851602179055600880546001600160a01b03191691909216179055565b610e37611290565b6001600160a01b03811660009081526005602052604090205460ff1615610ea05760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610a44565b6001600160a01b03811660009081526001602052604090205415610efa576001600160a01b038116600090815260016020526040902054610ee090610ba3565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556006805491820181559091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319169091179055565b6001600160a01b03811660009081526005602052604081205460ff1615610f9d57506001600160a01b031660009081526002602052604090205490565b6001600160a01b038216600090815260016020526040902054610a8490610ba3565b610fc7611290565b610fd16000611847565b565b610fdb611290565b610fe76012600a6125ae565b610ff190826125bd565b60115550565b610fff611290565b6007805462ff00ff19166201000117905543601255565b61101e611290565b6007805460ff1916911515919091179055565b611039611290565b601655565b611046611290565b604051339082156108fc029083906000818181858888f19350505050158015610db0573d6000803e3d6000fd5b3360009081526003602090815260408083206001600160a01b0386168452909152812054828110156110f55760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610a44565b6111043385610b9186856125d4565b5060019392505050565b6000610a8033848461140e565b611123611290565b61112f6012600a6125ae565b61113990826125bd565b600f5550565b611147611290565b6111536012600a6125ae565b61115d90826125bd565b600e5550565b61116b611290565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af11580156111ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111de919061264e565b50505050565b6111ec611290565b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b61121f611290565b6001600160a01b0381166112845760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a44565b61128d81611847565b50565b6000546001600160a01b03163314610fd15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a44565b6001600160a01b03831661134c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a44565b6001600160a01b0382166113ad5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a44565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166114725760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a44565b600081116114d45760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610a44565b6114dd83610f60565b8111156115465760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610a44565b6014541580159061155f575060075462010000900460ff165b15611581574360135460125461157591906124b7565b10156115815760006014555b6001600160a01b03831660009081526004602052604081205460ff161580156115c357506001600160a01b03831660009081526004602052604090205460ff16155b156117675760075462010000900460ff166116205760405162461bcd60e51b815260206004820181905260248201527f4c697175696469747920686173206e6f74206265656e206164646564207965746044820152606401610a44565b600f548211156116725760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61785478416d6f756e740000006044820152606401610a44565b6008546001600160a01b038481169116146116f6576010548261169485610f60565b61169e91906124b7565b11156116f65760405162461bcd60e51b815260206004820152602160248201527f596f752061726520657863656564696e67206d617857616c6c6574416d6f756e6044820152601d60fa1b6064820152608401610a44565b506008546001906001600160a01b03858116911614801561172557504360135460125461172391906124b7565b105b15611767576000905060115482106117675760165460155410611761576016546015600082825461175691906125d4565b909155506117679050565b60006015555b6000600e5461177530610f60565b6007549111159150610100900460ff16158015611794575060075460ff165b801561179d5750805b80156117b757506008546001600160a01b03868116911614155b80156117dc57506001600160a01b03851660009081526004602052604090205460ff16155b801561180157506001600160a01b03841660009081526004602052604090205460ff16155b1561181157611811600e54611897565b61181d8585858561195a565b5050505050565b6000806000611831611c33565b909250905061184081836125e7565b9250505090565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6007805461ff001916610100179055476118b082611db6565b60006118bc82476125d4565b6018549091506000906118d09060646125d4565b9050806000036118e25750505061194c565b60195460009082906118f490856125bd565b6118fe91906125e7565b9050801561191c5760095461191c906001600160a01b031682611f37565b600061192882856125d4565b9050801561194657600a54611946906001600160a01b031682611f37565b50505050505b506007805461ff0019169055565b6008546000906001600160a01b0385811691161461197957600061197c565b60015b9050600061198b848484612055565b90508180156119975750825b80156119b15750436013546012546119af91906124b7565b105b156119f4576017546016546015546119c991906124b7565b11156119da576017546015556119f4565b601654601560008282546119ee91906124b7565b90915550505b6001600160a01b03861660009081526005602052604090205460ff1615611a53576001600160a01b038616600090815260026020526040902054611a399085906125d4565b6001600160a01b0387166000908152600260205260409020555b6001600160a01b03851660009081526005602052604090205460ff1615611ab65760808101516001600160a01b038616600090815260026020526040902054611a9c91906124b7565b6001600160a01b0386166000908152600260205260409020555b80516001600160a01b038716600090815260016020526040902054611adb91906125d4565b6001600160a01b0380881660009081526001602090815260408083209490945584015191881681529190912054611b1291906124b7565b6001600160a01b0386166000908152600160205260409081902091909155810151151580611b44575060008160a00151115b15611b5b57611b5b81604001518260a001516120cd565b600081606001511180611b72575060008160c00151115b15611b8957611b8981606001518260c00151612101565b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360800151604051611bd291815260200190565b60405180910390a3306001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360c00151604051611c2391815260200190565b60405180910390a3505050505050565b600c54600b546000918291825b600654811015611d8557826001600060068481548110611c6257611c62612609565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180611ccd5750816002600060068481548110611ca657611ca6612609565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15611ce357600c54600b54945094505050509091565b6001600060068381548110611cfa57611cfa612609565b60009182526020808320909101546001600160a01b03168352820192909252604001902054611d2990846125d4565b92506002600060068381548110611d4257611d42612609565b60009182526020808320909101546001600160a01b03168352820192909252604001902054611d7190836125d4565b915080611d7d81612635565b915050611c40565b50600b54600c54611d9691906125e7565b821015611dad57600c54600b549350935050509091565b90939092509050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611deb57611deb612609565b60200260200101906001600160a01b031690816001600160a01b031681525050600760039054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e82919061266b565b81600181518110611e9557611e95612609565b6001600160a01b039283166020918202929092010152600754611ec29130916301000000900416846112ea565b60075460405163791ac94760e01b815263010000009091046001600160a01b03169063791ac94790611f01908590600090869030904290600401612688565b600060405180830381600087803b158015611f1b57600080fd5b505af1158015611f2f573d6000803e3d6000fd5b505050505050565b80471015611f875760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610a44565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611fd4576040519150601f19603f3d011682016040523d82523d6000602084013e611fd9565b606091505b50509050806120505760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610a44565b505050565b6120956040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6120a084848461215d565b90506120b58185856120b0611824565b612272565b60608501526040840152602083015281529392505050565b81600c60008282546120df91906125d4565b9250508190555080600d60008282546120f891906124b7565b90915550505050565b3060009081526005602052604090205460ff161561213e5730600090815260026020526040812080548392906121389084906124b7565b90915550505b30600090815260016020526040812080548492906120f89084906124b7565b61219d6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b826121ae5760808101849052610b9c565b6000826121bd576014546121c1565b6015545b905060006064601860000154836121d891906125bd565b6121e291906125e7565b90506000606460186000015460646121fa91906125d4565b61220490856125bd565b61220e91906125e7565b90506103e861221d83896125bd565b61222791906125e7565b60a08501526103e861223982896125bd565b61224391906125e7565b60c0850181905260a085015161225990896125d4565b61226391906125d4565b60808501525050509392505050565b600080808061228185886125bd565b935085612296575082915060009050806122d2565b848860a001516122a691906125bd565b9150848860c001516122b891906125bd565b9050806122c583866125d4565b6122cf91906125d4565b92505b945094509450949050565b6001600160a01b038116811461128d57600080fd5b60006020828403121561230457600080fd5b8135610b9c816122dd565b600060208083528351808285015260005b8181101561233c57858101830151858201604001528201612320565b506000604082860101526040601f19601f8301168501019250505092915050565b60006020828403121561236f57600080fd5b5035919050565b60008060006060848603121561238b57600080fd5b505081359360208301359350604090920135919050565b600080604083850312156123b557600080fd5b82356123c0816122dd565b946020939093013593505050565b6000806000606084860312156123e357600080fd5b83356123ee816122dd565b925060208401356123fe816122dd565b929592945050506040919091013590565b6000806040838503121561242257600080fd5b823561242d816122dd565b9150602083013561243d816122dd565b809150509250929050565b801515811461128d57600080fd5b60006020828403121561246857600080fd5b8135610b9c81612448565b6000806040838503121561248657600080fd5b8235612491816122dd565b9150602083013561243d81612448565b634e487b7160e01b600052601160045260246000fd5b80820180821115610a8457610a846124a1565b600181815b808511156125055781600019048211156124eb576124eb6124a1565b808516156124f857918102915b93841c93908002906124cf565b509250929050565b60008261251c57506001610a84565b8161252957506000610a84565b816001811461253f576002811461254957612565565b6001915050610a84565b60ff84111561255a5761255a6124a1565b50506001821b610a84565b5060208310610133831016604e8410600b8410161715612588575081810a610a84565b61259283836124ca565b80600019048211156125a6576125a66124a1565b029392505050565b6000610b9c60ff84168361250d565b8082028115828204841417610a8457610a846124a1565b81810381811115610a8457610a846124a1565b60008261260457634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b600060018201612647576126476124a1565b5060010190565b60006020828403121561266057600080fd5b8151610b9c81612448565b60006020828403121561267d57600080fd5b8151610b9c816122dd565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156126d85784516001600160a01b0316835293830193918301916001016126b3565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212209c8bce01f69d39de2c65dd465e9441cf610c70d8877a2ec68da0c4a87cd6bcec64736f6c63430008130033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000d38e107df5670054000b9545d55e6f5ae1c77dd6000000000000000000000000eb13b0cf78ac8ce9003646b4823d1e46b2624ef0
-----Decoded View---------------
Arg [0] : _routerAddress (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
Arg [1] : _devWallet (address): 0xD38E107Df5670054000B9545D55e6f5aE1C77dd6
Arg [2] : _buybackWallet (address): 0xeB13b0cF78ac8Ce9003646b4823D1E46B2624ef0
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Arg [1] : 000000000000000000000000d38e107df5670054000b9545d55e6f5ae1c77dd6
Arg [2] : 000000000000000000000000eb13b0cf78ac8ce9003646b4823d1e46b2624ef0
Deployed Bytecode Sourcemap
16591:15193:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18188:66;;;;;;;;;;-1:-1:-1;18188:66:0;;;;;;;;;;;;;;;;216:25:1;;;272:2;257:18;;250:34;;;;300:18;;;293:34;204:2;189:18;18188:66:0;;;;;;;;17467:56;;;;;;;;;;;;;;;;;;;484:25:1;;;472:2;457:18;17467:56:0;338:177:1;30290:161:0;;;;;;;;;;-1:-1:-1;30290:161:0;;;;;:::i;:::-;;:::i;:::-;;19362:83;;;;;;;;;;-1:-1:-1;19432:5:0;;;;;;;;;;;-1:-1:-1;;;19432:5:0;;;;19362:83;;;;19432:5;19362:83;:::i;31360:98::-;;;;;;;;;;-1:-1:-1;31360:98:0;;;;;:::i;:::-;;:::i;22964:235::-;;;;;;;;;;-1:-1:-1;22964:235:0;;;;;:::i;:::-;;:::i;20275:161::-;;;;;;;;;;-1:-1:-1;20275:161:0;;;;;:::i;:::-;;:::i;:::-;;;2452:14:1;;2445:22;2427:41;;2415:2;2400:18;20275:161:0;2287:187:1;19636:95:0;;;;;;;;;;-1:-1:-1;19716:7:0;;19636:95;;30132:149;;;;;;;;;;-1:-1:-1;30132:149:0;;;;;:::i;:::-;;:::i;17437:23::-;;;;;;;;;;;;;;;;30706:118;;;;;;;;;;-1:-1:-1;30706:118:0;;;;;:::i;:::-;;:::i;20445:424::-;;;;;;;;;;-1:-1:-1;20445:424:0;;;;;:::i;:::-;;:::i;21618:248::-;;;;;;;;;;-1:-1:-1;21618:248:0;;;;;:::i;:::-;;:::i;19544:83::-;;;;;;;;;;-1:-1:-1;19544:83:0;;17255:2;3082:36:1;;3070:2;3055:18;19544:83:0;2940:184:1;22215:473:0;;;;;;;;;;-1:-1:-1;22215:473:0;;;;;:::i;:::-;;:::i;20878:215::-;;;;;;;;;;-1:-1:-1;20878:215:0;;;;;:::i;:::-;;:::i;31072:172::-;;;;;;;;;;-1:-1:-1;31072:172:0;;;;;:::i;:::-;;:::i;17720:25::-;;;;;;;;;;;;;;;;17061:26;;;;;;;;;;-1:-1:-1;17061:26:0;;;;;;;;;;;17898:30;;;;;;;;;;;;;;;;17794:27;;;;;;;;;;;;;;;;21875:331;;;;;;;;;;-1:-1:-1;21875:331:0;;;;;:::i;:::-;;:::i;22832:123::-;;;;;;;;;;-1:-1:-1;22832:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;22920:27:0;22896:4;22920:27;;;:18;:27;;;;;;;;;22832:123;17752:32;;;;;;;;;;;;;;;;17003:23;;;;;;;;;;-1:-1:-1;17003:23:0;;;;;;;;19740:198;;;;;;;;;;-1:-1:-1;19740:198:0;;;;;:::i;:::-;;:::i;15247:103::-;;;;;;;;;;;;;:::i;30460:118::-;;;;;;;;;;-1:-1:-1;30460:118:0;;;;;:::i;:::-;;:::i;21489:120::-;;;;;;;;;;-1:-1:-1;21489:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;21581:20:0;21557:4;21581:20;;;:11;:20;;;;;;;;;21489:120;29975:148;;;;;;;;;;;;;:::i;17530:55::-;;;;;;;;;;;;;;;;14606:87;;;;;;;;;;-1:-1:-1;14652:7:0;14679:6;-1:-1:-1;;;;;14679:6:0;14606:87;;;-1:-1:-1;;;;;3686:32:1;;;3668:51;;3656:2;3641:18;14606:87:0;3522:203:1;17151:24:0;;;;;;;;;;-1:-1:-1;17151:24:0;;;;-1:-1:-1;;;;;17151:24:0;;;30962:101;;;;;;;;;;-1:-1:-1;30962:101:0;;;;;:::i;:::-;;:::i;31253:98::-;;;;;;;;;;-1:-1:-1;31253:98:0;;;;;:::i;:::-;;:::i;31467:114::-;;;;;;;;;;-1:-1:-1;31467:114:0;;;;;:::i;:::-;;:::i;17941:31::-;;;;;;;;;;;;;;;;21102:378;;;;;;;;;;-1:-1:-1;21102:378:0;;;;;:::i;:::-;;:::i;17125:19::-;;;;;;;;;;-1:-1:-1;17125:19:0;;;;-1:-1:-1;;;;;17125:19:0;;;19947:167;;;;;;;;;;-1:-1:-1;19947:167:0;;;;;:::i;:::-;;:::i;17592:59::-;;;;;;;;;;;;;;;;30587:110;;;;;;;;;;-1:-1:-1;30587:110:0;;;;;:::i;:::-;;:::i;17856:28::-;;;;;;;;;;;;;;;;30833:120;;;;;;;;;;-1:-1:-1;30833:120:0;;;;;:::i;:::-;;:::i;31590:148::-;;;;;;;;;;-1:-1:-1;31590:148:0;;;;;:::i;:::-;;:::i;20123:143::-;;;;;;;;;;-1:-1:-1;20123:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;20231:18:0;;;20204:7;20231:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;20123:143;17182:28;;;;;;;;;;-1:-1:-1;17182:28:0;;;;-1:-1:-1;;;;;17182:28:0;;;22697:126;;;;;;;;;;-1:-1:-1;22697:126:0;;;;;:::i;:::-;;:::i;17658:55::-;;;;;;;;;;;;;;;;15505:201;;;;;;;;;;-1:-1:-1;15505:201:0;;;;;:::i;:::-;;:::i;17097:21::-;;;;;;;;;;-1:-1:-1;17097:21:0;;;;;;;-1:-1:-1;;;;;17097:21:0;;;30290:161;14492:13;:11;:13::i;:::-;30367::::1;:25:::0;;-1:-1:-1;;;;;30367:25:0;;::::1;-1:-1:-1::0;;;;;;30367:25:0;;::::1;::::0;::::1;::::0;;:13:::1;30403:33:::0;;;:18:::1;:33;::::0;;;;:40;;-1:-1:-1;;30403:40:0::1;30367:25:::0;30403:40:::1;::::0;;30290:161::o;31360:98::-;14492:13;:11;:13::i;:::-;31431:10:::1;:19:::0;31360:98::o;22964:235::-;14492:13;:11;:13::i;:::-;23088:8;23074:11:::1;23081:4:::0;23074;:11:::1;:::i;:::-;:22;;;;:::i;:::-;23100:3;23074:29;23066:59;;;::::0;-1:-1:-1;;;23066:59:0;;5173:2:1;23066:59:0::1;::::0;::::1;5155:21:1::0;5212:2;5192:18;;;5185:30;-1:-1:-1;;;5231:18:1;;;5224:47;5288:18;;23066:59:0::1;;;;;;;;;23154:37;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;23136:15:::1;:55:::0;;;;;;;;22964:235::o;20275:161::-;20350:4;20367:39;13237:10;20390:7;20399:6;20367:8;:39::i;:::-;-1:-1:-1;20424:4:0;20275:161;;;;;:::o;30132:149::-;14492:13;:11;:13::i;:::-;30205:9:::1;:21:::0;;-1:-1:-1;;;;;30205:21:0;;::::1;-1:-1:-1::0;;;;;;30205:21:0;;::::1;::::0;::::1;::::0;;:9:::1;30237:29:::0;;;:18:::1;:29;::::0;;;;:36;;-1:-1:-1;;30237:36:0::1;30205:21:::0;30237:36:::1;::::0;;30132:149::o;30706:118::-;14492:13;:11;:13::i;:::-;30803::::1;17255:2;30803;:13;:::i;:::-;30794:22;::::0;:6;:22:::1;:::i;:::-;30776:15;:40:::0;-1:-1:-1;30706:118:0:o;20445:424::-;20551:4;20568:36;20578:6;20586:9;20597:6;20568:9;:36::i;:::-;-1:-1:-1;;;;;20645:19:0;;20618:24;20645:19;;;:11;:19;;;;;;;;13237:10;20645:33;;;;;;;;20697:26;;;;20689:79;;;;-1:-1:-1;;;20689:79:0;;7075:2:1;20689:79:0;;;7057:21:1;7114:2;7094:18;;;7087:30;7153:34;7133:18;;;7126:62;-1:-1:-1;;;7204:18:1;;;7197:38;7252:19;;20689:79:0;6873:404:1;20689:79:0;20779:57;20788:6;13237:10;20810:25;20829:6;20810:16;:25;:::i;:::-;20779:8;:57::i;:::-;20857:4;20850:11;;;20445:424;;;;;;:::o;21618:248::-;21684:7;21723;;21712;:18;;21704:73;;;;-1:-1:-1;;;21704:73:0;;7617:2:1;21704:73:0;;;7599:21:1;7656:2;7636:18;;;7629:30;7695:34;7675:18;;;7668:62;-1:-1:-1;;;7746:18:1;;;7739:40;7796:19;;21704:73:0;7415:406:1;21704:73:0;21788:19;21811:10;:8;:10::i;:::-;21788:33;-1:-1:-1;21839:19:0;21788:33;21839:7;:19;:::i;22215:473::-;14492:13;:11;:13::i;:::-;-1:-1:-1;;;;;22295:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;22287:56;;;::::0;-1:-1:-1;;;22287:56:0;;8250:2:1;22287:56:0::1;::::0;::::1;8232:21:1::0;8289:2;8269:18;;;8262:30;8328:25;8308:18;;;8301:53;8371:18;;22287:56:0::1;8048:347:1::0;22287:56:0::1;22359:9;22354:327;22378:9;:16:::0;22374:20;::::1;22354:327;;;22436:7;-1:-1:-1::0;;;;;22420:23:0::1;:9;22430:1;22420:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;22420:12:0::1;:23:::0;22416:254:::1;;22479:9;22489:16:::0;;:20:::1;::::0;22508:1:::1;::::0;22489:20:::1;:::i;:::-;22479:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;22464:9:::1;:12:::0;;-1:-1:-1;;;;;22479:31:0;;::::1;::::0;22474:1;;22464:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;22464:46:0::1;-1:-1:-1::0;;;;;22464:46:0;;::::1;;::::0;;22529:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;22568:11:::1;:20:::0;;;;:28;;-1:-1:-1;;22568:28:0::1;::::0;;22615:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;22615:15:0;;;;;-1:-1:-1;;;;;;22615:15:0::1;::::0;;;;;22354:327:::1;22215:473:::0;:::o;22416:254::-:1;22396:3:::0;::::1;::::0;::::1;:::i;:::-;;;;22354:327;;;;22215:473:::0;:::o;20878:215::-;13237:10;20966:4;21015:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;21015:34:0;;;;;;;;;;20966:4;;20983:80;;21006:7;;21015:47;;21052:10;;21015:47;:::i;31072:172::-;14492:13;:11;:13::i;:::-;31184:6:::1;:27:::0;;-1:-1:-1;;;;;;31184:27:0::1;::::0;-1:-1:-1;;;;;31184:27:0;;::::1;;;::::0;;31222:4:::1;:14:::0;;-1:-1:-1;;;;;;31222:14:0::1;::::0;;;::::1;;::::0;;31072:172::o;21875:331::-;14492:13;:11;:13::i;:::-;-1:-1:-1;;;;;21956:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;21955:21;21947:61;;;::::0;-1:-1:-1;;;21947:61:0;;9006:2:1;21947:61:0::1;::::0;::::1;8988:21:1::0;9045:2;9025:18;;;9018:30;9084:29;9064:18;;;9057:57;9131:18;;21947:61:0::1;8804:351:1::0;21947:61:0::1;-1:-1:-1::0;;;;;22022:16:0;::::1;22041:1;22022:16:::0;;;:7:::1;:16;::::0;;;;;:20;22019:108:::1;;-1:-1:-1::0;;;;;22098:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;22078:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;22059:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;22019:108:::1;-1:-1:-1::0;;;;;22137:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;22137:27:0::1;22160:4;22137:27:::0;;::::1;::::0;;;22175:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;22175:23:0::1;::::0;;::::1;::::0;;21875:331::o;19740:198::-;-1:-1:-1;;;;;19830:20:0;;19806:7;19830:20;;;:11;:20;;;;;;;;19826:49;;;-1:-1:-1;;;;;;19859:16:0;;;;;:7;:16;;;;;;;19740:198::o;19826:49::-;-1:-1:-1;;;;;19913:16:0;;;;;;:7;:16;;;;;;19893:37;;:19;:37::i;15247:103::-;14492:13;:11;:13::i;:::-;15312:30:::1;15339:1;15312:18;:30::i;:::-;15247:103::o:0;30460:118::-;14492:13;:11;:13::i;:::-;30557::::1;17255:2;30557;:13;:::i;:::-;30548:22;::::0;:6;:22:::1;:::i;:::-;30533:12;:37:::0;-1:-1:-1;30460:118:0:o;29975:148::-;14492:13;:11;:13::i;:::-;30029:14:::1;:21:::0;;-1:-1:-1;;30061:18:0;;;;;30103:12:::1;30090:10;:25:::0;29975:148::o;30962:101::-;14492:13;:11;:13::i;:::-;31033:11:::1;:22:::0;;-1:-1:-1;;31033:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;30962:101::o;31253:98::-;14492:13;:11;:13::i;:::-;31324:10:::1;:19:::0;31253:98::o;31467:114::-;14492:13;:11;:13::i;:::-;31534:39:::1;::::0;31542:10:::1;::::0;31534:39;::::1;;;::::0;31563:9;;31534:39:::1;::::0;;;31563:9;31542:10;31534:39;::::1;;;;;;;;;;;;;::::0;::::1;;;;21102:378:::0;13237:10;21195:4;21239:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;21239:34:0;;;;;;;;;;21292:35;;;;21284:85;;;;-1:-1:-1;;;21284:85:0;;9362:2:1;21284:85:0;;;9344:21:1;9401:2;9381:18;;;9374:30;9440:34;9420:18;;;9413:62;-1:-1:-1;;;9491:18:1;;;9484:35;9536:19;;21284:85:0;9160:401:1;21284:85:0;21380:67;13237:10;21403:7;21412:34;21431:15;21412:16;:34;:::i;21380:67::-;-1:-1:-1;21468:4:0;;21102:378;-1:-1:-1;;;21102:378:0:o;19947:167::-;20025:4;20042:42;13237:10;20066:9;20077:6;20042:9;:42::i;30587:110::-;14492:13;:11;:13::i;:::-;30676::::1;17255:2;30676;:13;:::i;:::-;30667:22;::::0;:6;:22:::1;:::i;:::-;30653:11;:36:::0;-1:-1:-1;30587:110:0:o;30833:120::-;14492:13;:11;:13::i;:::-;30932::::1;17255:2;30932;:13;:::i;:::-;30923:22;::::0;:6;:22:::1;:::i;:::-;30907:13;:38:::0;-1:-1:-1;30833:120:0:o;31590:148::-;14492:13;:11;:13::i;:::-;31689:41:::1;::::0;-1:-1:-1;;;31689:41:0;;-1:-1:-1;;;;;9758:32:1;;;31689:41:0::1;::::0;::::1;9740:51:1::0;9807:18;;;9800:34;;;31689:27:0;::::1;::::0;::::1;::::0;9713:18:1;;31689:41:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;31590:148:::0;;;:::o;22697:126::-;14492:13;:11;:13::i;:::-;-1:-1:-1;;;;;22779:27:0;;;::::1;;::::0;;;:18:::1;:27;::::0;;;;:36;;-1:-1:-1;;22779:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22697:126::o;15505:201::-;14492:13;:11;:13::i;:::-;-1:-1:-1;;;;;15594:22:0;::::1;15586:73;;;::::0;-1:-1:-1;;;15586:73:0;;10297:2:1;15586:73:0::1;::::0;::::1;10279:21:1::0;10336:2;10316:18;;;10309:30;10375:34;10355:18;;;10348:62;-1:-1:-1;;;10426:18:1;;;10419:36;10472:19;;15586:73:0::1;10095:402:1::0;15586:73:0::1;15670:28;15689:8;15670:18;:28::i;:::-;15505:201:::0;:::o;14771:132::-;14652:7;14679:6;-1:-1:-1;;;;;14679:6:0;13237:10;14835:23;14827:68;;;;-1:-1:-1;;;14827:68:0;;10704:2:1;14827:68:0;;;10686:21:1;;;10723:18;;;10716:30;10782:34;10762:18;;;10755:62;10834:18;;14827:68:0;10502:356:1;25754:335:0;-1:-1:-1;;;;;25847:19:0;;25839:68;;;;-1:-1:-1;;;25839:68:0;;11065:2:1;25839:68:0;;;11047:21:1;11104:2;11084:18;;;11077:30;11143:34;11123:18;;;11116:62;-1:-1:-1;;;11194:18:1;;;11187:34;11238:19;;25839:68:0;10863:400:1;25839:68:0;-1:-1:-1;;;;;25926:21:0;;25918:68;;;;-1:-1:-1;;;25918:68:0;;11470:2:1;25918:68:0;;;11452:21:1;11509:2;11489:18;;;11482:30;11548:34;11528:18;;;11521:62;-1:-1:-1;;;11599:18:1;;;11592:32;11641:19;;25918:68:0;11268:398:1;25918:68:0;-1:-1:-1;;;;;25997:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;26049:32;;484:25:1;;;26049:32:0;;457:18:1;26049:32:0;;;;;;;25754:335;;;:::o;26101:1473::-;-1:-1:-1;;;;;26189:18:0;;26181:68;;;;-1:-1:-1;;;26181:68:0;;11873:2:1;26181:68:0;;;11855:21:1;11912:2;11892:18;;;11885:30;11951:34;11931:18;;;11924:62;-1:-1:-1;;;12002:18:1;;;11995:35;12047:19;;26181:68:0;11671:401:1;26181:68:0;26277:1;26268:6;:10;26260:64;;;;-1:-1:-1;;;26260:64:0;;12279:2:1;26260:64:0;;;12261:21:1;12318:2;12298:18;;;12291:30;12357:34;12337:18;;;12330:62;-1:-1:-1;;;12408:18:1;;;12401:39;12457:19;;26260:64:0;12077:405:1;26260:64:0;26353:15;26363:4;26353:9;:15::i;:::-;26343:6;:25;;26335:86;;;;-1:-1:-1;;;26335:86:0;;12689:2:1;26335:86:0;;;12671:21:1;12728:2;12708:18;;;12701:30;12767:34;12747:18;;;12740:62;-1:-1:-1;;;12818:18:1;;;12811:47;12875:19;;26335:86:0;12487:413:1;26335:86:0;26438:6;;:11;;;;:29;;-1:-1:-1;26453:14:0;;;;;;;26438:29;26435:116;;;26515:12;26499:13;;26486:10;;:26;;;;:::i;:::-;:41;26483:56;;;26538:1;26529:6;:10;26483:56;-1:-1:-1;;;;;26602:24:0;;26564:12;26602:24;;;:18;:24;;;;;;;;26601:25;:52;;;;-1:-1:-1;;;;;;26631:22:0;;;;;;:18;:22;;;;;;;;26630:23;26601:52;26598:664;;;26677:14;;;;;;;26669:59;;;;-1:-1:-1;;;26669:59:0;;13107:2:1;26669:59:0;;;13089:21:1;;;13126:18;;;13119:30;13185:34;13165:18;;;13158:62;13237:18;;26669:59:0;12905:356:1;26669:59:0;26761:11;;26751:6;:21;;26743:63;;;;-1:-1:-1;;;26743:63:0;;13468:2:1;26743:63:0;;;13450:21:1;13507:2;13487:18;;;13480:30;13546:31;13526:18;;;13519:59;13595:18;;26743:63:0;13266:353:1;26743:63:0;26830:4;;-1:-1:-1;;;;;26824:10:0;;;26830:4;;26824:10;26821:102;;26870:15;;26860:6;26844:13;26854:2;26844:9;:13::i;:::-;:22;;;;:::i;:::-;:41;;26836:87;;;;-1:-1:-1;;;26836:87:0;;13826:2:1;26836:87:0;;;13808:21:1;13865:2;13845:18;;;13838:30;13904:34;13884:18;;;13877:62;-1:-1:-1;;;13955:18:1;;;13948:31;13996:19;;26836:87:0;13624:397:1;26836:87:0;-1:-1:-1;26978:4:0;;26948;;-1:-1:-1;;;;;26970:12:0;;;26978:4;;26970:12;:57;;;;;27015:12;26999:13;;26986:10;;:26;;;;:::i;:::-;:41;26970:57;26967:284;;;27057:5;27047:15;;27094:12;;27084:6;:22;27081:155;;27144:10;;27133:7;;:21;27130:86;;27167:10;;27156:7;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;27130:86:0;;-1:-1:-1;27130:86:0;;27215:1;27205:7;:11;27130:86;27275:12;27318:13;;27290:24;27308:4;27290:9;:24::i;:::-;27346:8;;-1:-1:-1;;27290:41:0;;-1:-1:-1;27346:8:0;;;;;27345:9;:24;;;;-1:-1:-1;27358:11:0;;;;27345:24;:35;;;;;27373:7;27345:35;:51;;;;-1:-1:-1;27392:4:0;;-1:-1:-1;;;;;27384:12:0;;;27392:4;;27384:12;;27345:51;:80;;;;-1:-1:-1;;;;;;27401:24:0;;;;;;:18;:24;;;;;;;;27400:25;27345:80;:107;;;;-1:-1:-1;;;;;;27430:22:0;;;;;;:18;:22;;;;;;;;27429:23;27345:107;27342:170;;;27468:32;27486:13;;27468:17;:32::i;:::-;27525:41;27540:4;27546:2;27550:6;27558:7;27525:14;:41::i;:::-;26170:1404;;26101:1473;;;:::o;25038:158::-;25079:7;25100:15;25117;25136:19;:17;:19::i;:::-;25099:56;;-1:-1:-1;25099:56:0;-1:-1:-1;25173:15:0;25099:56;;25173:15;:::i;:::-;25166:22;;;;25038:158;:::o;15866:191::-;15940:16;15959:6;;-1:-1:-1;;;;;15976:17:0;;;-1:-1:-1;;;;;;15976:17:0;;;;;;16009:40;;15959:6;;;;;;;16009:40;;15940:16;16009:40;15929:128;15866:191;:::o;28777:616::-;18516:8;:15;;-1:-1:-1;;18516:15:0;;;;;28878:21:::1;28913:24;28930:6:::0;28913:16:::1;:24::i;:::-;28951:20;28974:38;28998:14:::0;28974:21:::1;:38;:::i;:::-;29055:15;:19:::0;28951:61;;-1:-1:-1;29026:20:0::1;::::0;29049:25:::1;::::0;:3:::1;:25;:::i;:::-;29026:48;;29088:12;29104:1;29088:17:::0;29085:29:::1;;29107:7;;;;;29085:29;29159:19:::0;;29127:14:::1;::::0;29181:12;;29144:34:::1;::::0;:12;:34:::1;:::i;:::-;:49;;;;:::i;:::-;29127:66:::0;-1:-1:-1;29207:10:0;;29204:51:::1;;29227:9;::::0;29219:36:::1;::::0;-1:-1:-1;;;;;29227:9:0::1;29248:6:::0;29219:28:::1;:36::i;:::-;29269:18;29290:21;29305:6:::0;29290:12;:21:::1;:::i;:::-;29269:42:::0;-1:-1:-1;29325:14:0;;29322:63:::1;;29349:13;::::0;29341:44:::1;::::0;-1:-1:-1;;;;;29349:13:0::1;29374:10:::0;29341:32:::1;:44::i;:::-;28839:554;;;;;18542:1;-1:-1:-1::0;18554:8:0;:16;;-1:-1:-1;;18554:16:0;;;28777:616::o;27659:1109::-;27798:4;;27771:11;;-1:-1:-1;;;;;27785:17:0;;;27798:4;;27785:17;:32;;27812:5;27785:32;;;27805:4;27785:32;27771:46;;27828:28;27859:36;27870:7;27879;27888:6;27859:10;:36::i;:::-;27828:67;;27912:6;:17;;;;;27922:7;27912:17;:62;;;;;27962:12;27946:13;;27933:10;;:26;;;;:::i;:::-;:41;27912:62;27909:192;;;28016:10;;28003;;27993:7;;:20;;;;:::i;:::-;:33;27990:99;;;28038:10;;28028:7;:20;27990:99;;;28079:10;;28068:7;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;;27990:99:0;-1:-1:-1;;;;;28118:19:0;;;;;;:11;:19;;;;;;;;28114:115;;;-1:-1:-1;;;;;28194:15:0;;;;;;:7;:15;;;;;;:23;;28210:7;;28194:23;:::i;:::-;-1:-1:-1;;;;;28176:15:0;;;;;;:7;:15;;;;;:41;28114:115;-1:-1:-1;;;;;28243:22:0;;;;;;:11;:22;;;;;;;;28239:130;;;28340:17;;;;-1:-1:-1;;;;;28321:18:0;;;;;;:7;:18;;;;;;:36;;28340:17;28321:36;:::i;:::-;-1:-1:-1;;;;;28300:18:0;;;;;;:7;:18;;;;;:57;28239:130;28416:9;;-1:-1:-1;;;;;28400:15:0;;28416:9;28400:15;;;:7;:15;;;;;;:25;;28416:9;28400:25;:::i;:::-;-1:-1:-1;;;;;28382:15:0;;;;;;;:7;:15;;;;;;;;:43;;;;28476:17;;;28457:18;;;;;;;;;;:36;;28476:17;28457:36;:::i;:::-;-1:-1:-1;;;;;28436:18:0;;;;;;:7;:18;;;;;;;:57;;;;28510:6;;;:10;;;:24;;;28533:1;28524;:6;;;:10;28510:24;28507:56;;;28536:27;28548:1;:6;;;28556:1;:6;;;28536:11;:27::i;:::-;28587:1;28577;:7;;;:11;:26;;;;28602:1;28592;:7;;;:11;28577:26;28574:62;;;28605:31;28619:1;:7;;;28628:1;:7;;;28605:13;:31::i;:::-;28672:9;-1:-1:-1;;;;;28655:46:0;28664:6;-1:-1:-1;;;;;28655:46:0;;28683:1;:17;;;28655:46;;;;484:25:1;;472:2;457:18;;338:177;28655:46:0;;;;;;;;28742:4;-1:-1:-1;;;;;28717:40:0;28726:6;-1:-1:-1;;;;;28717:40:0;;28749:1;:7;;;28717:40;;;;484:25:1;;472:2;457:18;;338:177;28717:40:0;;;;;;;;27757:1011;;27659:1109;;;;:::o;25205:540::-;25302:7;;25338;;25255;;;;;25356:279;25380:9;:16;25376:20;;25356:279;;;25446:7;25422;:21;25430:9;25440:1;25430:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;25430:12:0;25422:21;;;;;;;;;;;;;:31;;:66;;;25481:7;25457;:21;25465:9;25475:1;25465:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;25465:12:0;25457:21;;;;;;;;;;;;;:31;25422:66;25418:97;;;25498:7;;25507;;25490:25;;;;;;;25205:540;;:::o;25418:97::-;25548:7;:21;25556:9;25566:1;25556:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;25556:12:0;25548:21;;;;;;;;;;;;;25540:29;;:7;:29;:::i;:::-;25530:39;;25602:7;:21;25610:9;25620:1;25610:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;25610:12:0;25602:21;;;;;;;;;;;;;25594:29;;:7;:29;:::i;:::-;25584:39;-1:-1:-1;25398:3:0;;;;:::i;:::-;;;;25356:279;;;;25667:7;;25659;;:15;;;;:::i;:::-;25649:7;:25;25645:56;;;25684:7;;25693;;25676:25;;;;;;25205:540;;:::o;25645:56::-;25720:7;;25729;;-1:-1:-1;25205:540:0;-1:-1:-1;25205:540:0:o;29402:564::-;29552:16;;;29566:1;29552:16;;;;;;;;29528:21;;29552:16;;;;;;;;;;-1:-1:-1;29552:16:0;29528:40;;29597:4;29579;29584:1;29579:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;29579:23:0;;;-1:-1:-1;;;;;29579:23:0;;;;;29623:6;;;;;;;;;-1:-1:-1;;;;;29623:6:0;-1:-1:-1;;;;;29623:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29613:4;29618:1;29613:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;29613:23:0;;;:7;;;;;;;;;:23;29682:6;;29650:53;;29667:4;;29682:6;;;;29691:11;29650:8;:53::i;:::-;29743:6;;:215;;-1:-1:-1;;;29743:215:0;;:6;;;;-1:-1:-1;;;;;29743:6:0;;:57;;:215;;29815:11;;29841:1;;29885:4;;29912;;29932:15;;29743:215;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29457:509;29402:564;:::o;2733:317::-;2848:6;2823:21;:31;;2815:73;;;;-1:-1:-1;;;2815:73:0;;15601:2:1;2815:73:0;;;15583:21:1;15640:2;15620:18;;;15613:30;15679:31;15659:18;;;15652:59;15728:18;;2815:73:0;15399:353:1;2815:73:0;2902:12;2920:9;-1:-1:-1;;;;;2920:14:0;2942:6;2920:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2901:52;;;2972:7;2964:78;;;;-1:-1:-1;;;2964:78:0;;16169:2:1;2964:78:0;;;16151:21:1;16208:2;16188:18;;;16181:30;16247:34;16227:18;;;16220:62;16318:28;16298:18;;;16291:56;16364:19;;2964:78:0;15967:422:1;2964:78:0;2804:246;2733:317;;:::o;23562:364::-;23648:36;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23648:36:0;23709:37;23721:7;23730;23739:6;23709:11;:37::i;:::-;23697:49;;23839:52;23851:9;23862:7;23871;23880:10;:8;:10::i;:::-;23839:11;:52::i;:::-;23820:15;;;23757:134;23804:14;;;23757:134;23777:25;;;23757:134;;;23562:364;;;;;:::o;23208:116::-;23286:4;23276:7;;:14;;;;;;;:::i;:::-;;;;;;;;23312:4;23301:8;;:15;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;23208:116:0:o;23333:220::-;23430:4;23410:26;;;;:11;:26;;;;;;;;23407:97;;;23478:4;23462:22;;;;:7;:22;;;;;:30;;23486:6;;23462:22;:30;;23486:6;;23462:30;:::i;:::-;;;;-1:-1:-1;;23407:97:0;23530:4;23514:22;;;;:7;:22;;;;;:31;;23539:6;;23514:22;:31;;23539:6;;23514:31;:::i;23935:580::-;24022:28;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24022:28:0;24070:7;24066:86;;24092:17;;;:27;;;24132:8;;24066:86;24165:15;24183:6;:25;;24202:6;;24183:25;;;24192:7;;24183:25;24165:43;;24219:14;24268:3;24246:15;:19;;;24236:7;:29;;;;:::i;:::-;:35;;;;:::i;:::-;24219:52;;24282:15;24340:3;24317:15;:19;;;24311:3;:25;;;;:::i;:::-;24300:37;;:7;:37;:::i;:::-;:43;;;;:::i;:::-;24282:61;-1:-1:-1;24382:4:0;24363:16;24373:6;24363:7;:16;:::i;:::-;:23;;;;:::i;:::-;24354:6;;;:32;24427:4;24407:17;24417:7;24407;:17;:::i;:::-;:24;;;;:::i;:::-;24397:7;;;:34;;;24472:6;;;;24462:16;;:7;:16;:::i;:::-;:26;;;;:::i;:::-;24442:17;;;:46;-1:-1:-1;;;23935:580:0;;;;;:::o;24524:505::-;24649:15;;;;24741:19;24749:11;24741:7;:19;:::i;:::-;24731:29;;24778:7;24774:67;;-1:-1:-1;24807:7:0;;-1:-1:-1;24825:1:0;;-1:-1:-1;24825:1:0;24800:29;;24774:67;24868:11;24861:1;:6;;;:18;;;;:::i;:::-;24854:25;;24906:11;24898:1;:7;;;:19;;;;:::i;:::-;24890:27;-1:-1:-1;24890:27:0;24947:12;24955:4;24947:7;:12;:::i;:::-;:18;;;;:::i;:::-;24928:37;;24524:505;;;;;;;;;;:::o;520:131:1:-;-1:-1:-1;;;;;595:31:1;;585:42;;575:70;;641:1;638;631:12;656:247;715:6;768:2;756:9;747:7;743:23;739:32;736:52;;;784:1;781;774:12;736:52;823:9;810:23;842:31;867:5;842:31;:::i;908:548::-;1020:4;1049:2;1078;1067:9;1060:21;1110:6;1104:13;1153:6;1148:2;1137:9;1133:18;1126:34;1178:1;1188:140;1202:6;1199:1;1196:13;1188:140;;;1297:14;;;1293:23;;1287:30;1263:17;;;1282:2;1259:26;1252:66;1217:10;;1188:140;;;1192:3;1377:1;1372:2;1363:6;1352:9;1348:22;1344:31;1337:42;1447:2;1440;1436:7;1431:2;1423:6;1419:15;1415:29;1404:9;1400:45;1396:54;1388:62;;;;908:548;;;;:::o;1461:180::-;1520:6;1573:2;1561:9;1552:7;1548:23;1544:32;1541:52;;;1589:1;1586;1579:12;1541:52;-1:-1:-1;1612:23:1;;1461:180;-1:-1:-1;1461:180:1:o;1646:316::-;1723:6;1731;1739;1792:2;1780:9;1771:7;1767:23;1763:32;1760:52;;;1808:1;1805;1798:12;1760:52;-1:-1:-1;;1831:23:1;;;1901:2;1886:18;;1873:32;;-1:-1:-1;1952:2:1;1937:18;;;1924:32;;1646:316;-1:-1:-1;1646:316:1:o;1967:315::-;2035:6;2043;2096:2;2084:9;2075:7;2071:23;2067:32;2064:52;;;2112:1;2109;2102:12;2064:52;2151:9;2138:23;2170:31;2195:5;2170:31;:::i;:::-;2220:5;2272:2;2257:18;;;;2244:32;;-1:-1:-1;;;1967:315:1:o;2479:456::-;2556:6;2564;2572;2625:2;2613:9;2604:7;2600:23;2596:32;2593:52;;;2641:1;2638;2631:12;2593:52;2680:9;2667:23;2699:31;2724:5;2699:31;:::i;:::-;2749:5;-1:-1:-1;2806:2:1;2791:18;;2778:32;2819:33;2778:32;2819:33;:::i;:::-;2479:456;;2871:7;;-1:-1:-1;;;2925:2:1;2910:18;;;;2897:32;;2479:456::o;3129:388::-;3197:6;3205;3258:2;3246:9;3237:7;3233:23;3229:32;3226:52;;;3274:1;3271;3264:12;3226:52;3313:9;3300:23;3332:31;3357:5;3332:31;:::i;:::-;3382:5;-1:-1:-1;3439:2:1;3424:18;;3411:32;3452:33;3411:32;3452:33;:::i;:::-;3504:7;3494:17;;;3129:388;;;;;:::o;3730:118::-;3816:5;3809:13;3802:21;3795:5;3792:32;3782:60;;3838:1;3835;3828:12;3853:241;3909:6;3962:2;3950:9;3941:7;3937:23;3933:32;3930:52;;;3978:1;3975;3968:12;3930:52;4017:9;4004:23;4036:28;4058:5;4036:28;:::i;4099:382::-;4164:6;4172;4225:2;4213:9;4204:7;4200:23;4196:32;4193:52;;;4241:1;4238;4231:12;4193:52;4280:9;4267:23;4299:31;4324:5;4299:31;:::i;:::-;4349:5;-1:-1:-1;4406:2:1;4391:18;;4378:32;4419:30;4378:32;4419:30;:::i;4709:127::-;4770:10;4765:3;4761:20;4758:1;4751:31;4801:4;4798:1;4791:15;4825:4;4822:1;4815:15;4841:125;4906:9;;;4927:10;;;4924:36;;;4940:18;;:::i;5317:422::-;5406:1;5449:5;5406:1;5463:270;5484:7;5474:8;5471:21;5463:270;;;5543:4;5539:1;5535:6;5531:17;5525:4;5522:27;5519:53;;;5552:18;;:::i;:::-;5602:7;5592:8;5588:22;5585:55;;;5622:16;;;;5585:55;5701:22;;;;5661:15;;;;5463:270;;;5467:3;5317:422;;;;;:::o;5744:806::-;5793:5;5823:8;5813:80;;-1:-1:-1;5864:1:1;5878:5;;5813:80;5912:4;5902:76;;-1:-1:-1;5949:1:1;5963:5;;5902:76;5994:4;6012:1;6007:59;;;;6080:1;6075:130;;;;5987:218;;6007:59;6037:1;6028:10;;6051:5;;;6075:130;6112:3;6102:8;6099:17;6096:43;;;6119:18;;:::i;:::-;-1:-1:-1;;6175:1:1;6161:16;;6190:5;;5987:218;;6289:2;6279:8;6276:16;6270:3;6264:4;6261:13;6257:36;6251:2;6241:8;6238:16;6233:2;6227:4;6224:12;6220:35;6217:77;6214:159;;;-1:-1:-1;6326:19:1;;;6358:5;;6214:159;6405:34;6430:8;6424:4;6405:34;:::i;:::-;6475:6;6471:1;6467:6;6463:19;6454:7;6451:32;6448:58;;;6486:18;;:::i;:::-;6524:20;;5744:806;-1:-1:-1;;;5744:806:1:o;6555:140::-;6613:5;6642:47;6683:4;6673:8;6669:19;6663:4;6642:47;:::i;6700:168::-;6773:9;;;6804;;6821:15;;;6815:22;;6801:37;6791:71;;6842:18;;:::i;7282:128::-;7349:9;;;7370:11;;;7367:37;;;7384:18;;:::i;7826:217::-;7866:1;7892;7882:132;;7936:10;7931:3;7927:20;7924:1;7917:31;7971:4;7968:1;7961:15;7999:4;7996:1;7989:15;7882:132;-1:-1:-1;8028:9:1;;7826:217::o;8400:127::-;8461:10;8456:3;8452:20;8449:1;8442:31;8492:4;8489:1;8482:15;8516:4;8513:1;8506:15;8532:127;8593:10;8588:3;8584:20;8581:1;8574:31;8624:4;8621:1;8614:15;8648:4;8645:1;8638:15;8664:135;8703:3;8724:17;;;8721:43;;8744:18;;:::i;:::-;-1:-1:-1;8791:1:1;8780:13;;8664:135::o;9845:245::-;9912:6;9965:2;9953:9;9944:7;9940:23;9936:32;9933:52;;;9981:1;9978;9971:12;9933:52;10013:9;10007:16;10032:28;10054:5;10032:28;:::i;14158:251::-;14228:6;14281:2;14269:9;14260:7;14256:23;14252:32;14249:52;;;14297:1;14294;14287:12;14249:52;14329:9;14323:16;14348:31;14373:5;14348:31;:::i;14414:980::-;14676:4;14724:3;14713:9;14709:19;14755:6;14744:9;14737:25;14781:2;14819:6;14814:2;14803:9;14799:18;14792:34;14862:3;14857:2;14846:9;14842:18;14835:31;14886:6;14921;14915:13;14952:6;14944;14937:22;14990:3;14979:9;14975:19;14968:26;;15029:2;15021:6;15017:15;15003:29;;15050:1;15060:195;15074:6;15071:1;15068:13;15060:195;;;15139:13;;-1:-1:-1;;;;;15135:39:1;15123:52;;15230:15;;;;15195:12;;;;15171:1;15089:9;15060:195;;;-1:-1:-1;;;;;;;15311:32:1;;;;15306:2;15291:18;;15284:60;-1:-1:-1;;;15375:3:1;15360:19;15353:35;15272:3;14414:980;-1:-1:-1;;;14414:980:1:o
Swarm Source
ipfs://9c8bce01f69d39de2c65dd465e9441cf610c70d8877a2ec68da0c4a87cd6bcec
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.