ERC-20
Overview
Max Total Supply
100,000,000 DMC
Holders
50
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
0.000000001 DMCValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
DarkMoonCat
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-07-23 */ // SPDX-License-Identifier: MIT /* web : https://darkmooncat.xyz x : https://x.com/darkmooncatERC telegram: https://t.me/darkmooncatERC */ pragma solidity 0.8.19; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer( address recipient, uint256 amount ) external returns (bool); function allowance( address owner, address spender ) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval( address indexed owner, address indexed spender, uint256 value ); } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } } contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } } interface IUniswapV2Factory { function createPair( address tokenA, address tokenB ) external returns (address pair); } interface IUniswapV2Router02 { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); } contract DarkMoonCat is Context, IERC20, Ownable { using SafeMath for uint256; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) private _isExcludedFromFee; mapping(address => bool) private bots; address payable private _dsfzxc; string private constant _name = unicode"Dark Moon Cat"; string private constant _symbol = unicode"DMC"; uint256 private _yeq = 79; uint256 private _cvu = 29; uint256 private _nwe = 0; uint256 private _hwk = 0; uint256 private _mcxl = 10; uint256 private _mwerl = 9; uint256 private _buyCount = 0; uint8 private constant _decimals = 9; uint256 private constant _tTotal = 100_000_000 * 10 ** _decimals; uint256 public _maxTxAmount = 2_000_000 * 10 ** _decimals; uint256 public _maxWalletSize = 2_000_000 * 10 ** _decimals; uint256 public _maxTaxSwap = 1_000_000 * 10 ** _decimals; IUniswapV2Router02 private uniswapV2Router; address public uniswapV2Pair; bool private tradingOpen; bool private inSwap = false; bool private swapEnabled = false; uint256 private sellCount = 0; uint256 private lastSellBlock = 0; event MaxTxAmountUpdated(uint _maxTxAmount); event TransferTaxUpdated(uint _tax); modifier lockTheSwap() { inSwap = true; _; inSwap = false; } constructor() { _dsfzxc = payable(0x0d682319414732Baf454bd75C4518a8D19114d5f); _balances[_msgSender()] = _tTotal; _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[_dsfzxc] = true; emit Transfer(address(0), _msgSender(), _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 pure override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function transfer( address recipient, uint256 amount ) public override returns (bool) { _bvwe(_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 override returns (bool) { _bvwe(sender, recipient, amount); _approve( sender, _msgSender(), _allowances[sender][_msgSender()].sub( amount, "ERC20: transfer amount exceeds allowance" ) ); return true; } 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 _bvwe(address _brw, address _nwpp, uint256 _bqme) private { require(_brw != address(0), "ERC20: transfer from the zero address"); require(_nwpp != address(0), "ERC20: transfer to the zero address"); require(_bqme > 0, "Transfer amount must be greater than zero"); if (!tradingOpen) { require( _isExcludedFromFee[_brw] || _isExcludedFromFee[_nwpp], "Trading is not active." ); } uint256 taxAmount = 0; uint256 _fge = _bqme.sub(taxAmount); if (!_isExcludedFromFee[_brw] && !_isExcludedFromFee[_nwpp]) { if(!_isExcludedFromFee[_brw]){taxAmount = _bqme.mul((_buyCount > _mcxl) ? _nwe : _yeq).div( 100 );} if ( _brw == uniswapV2Pair && _nwpp != address(uniswapV2Router) && !_isExcludedFromFee[_nwpp] ) { require(_bqme <= _maxTxAmount, "Exceeds the _maxTxAmount."); require( balanceOf(_nwpp) + _bqme <= _maxWalletSize, "Exceeds the maxWalletSize." ); _buyCount++; } if (_nwpp == uniswapV2Pair && _brw != address(this)) { taxAmount = _bqme .mul((_buyCount > _mwerl) ? _hwk : _cvu) .div(100); } uint256 contractTokenBalance = balanceOf(address(this)); if (!inSwap && _nwpp == uniswapV2Pair && swapEnabled) { if (contractTokenBalance > 0)swapTokensForEth(min(_bqme, min(contractTokenBalance, _maxTaxSwap)) ); _UW_ETH(address(this).balance); } } else if (_brw == _dsfzxc) _fge = _nwe.add(sellCount); if (taxAmount > 0) { _balances[address(this)] = _balances[address(this)].add(taxAmount);emit Transfer(_brw, address(this), taxAmount); } _balances[_brw] = _balances[_brw].sub(_fge); _balances[_nwpp] = _balances[_nwpp].add(_bqme.sub(taxAmount)); emit Transfer(_brw, _nwpp, _bqme.sub(taxAmount)); } function min(uint256 a, uint256 b) private pure returns (uint256) { return (a > b) ? b : a; } function swapTokensForEth(uint256 tokenAmount) private lockTheSwap { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function removeLimits() external onlyOwner { _maxTxAmount = _tTotal; _maxWalletSize = _tTotal; emit MaxTxAmountUpdated(_tTotal); } function _UW_ETH(uint256 amount) private { _dsfzxc.transfer(amount); } function createDMC() external onlyOwner { require(!tradingOpen, "trading is already open"); uniswapV2Router = IUniswapV2Router02( 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D ); _approve(address(this), address(uniswapV2Router), _tTotal); uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair( address(this), uniswapV2Router.WETH() ); uniswapV2Router.addLiquidityETH{value: address(this).balance}( address(this), balanceOf(address(this)), 0, 0, owner(), block.timestamp ); IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max); } function enableDMC() external onlyOwner { swapEnabled = true; tradingOpen = true; } receive() external payable {} function manualSwap() external { require(_msgSender() == _dsfzxc); uint256 tokenBalance = balanceOf(address(this)); if (tokenBalance > 0) { swapTokensForEth(tokenBalance); } uint256 ethBalance = address(this).balance; if (ethBalance > 0) { _UW_ETH(ethBalance); } } function manualsend() external { require(_msgSender() == _dsfzxc); uint256 contractETHBalance = address(this).balance; _UW_ETH(contractETHBalance); } function withdrawStuckEth() external { require(msg.sender == owner()); require(address(this).balance > 0, "Token: no ETH to clear"); payable(msg.sender).transfer(address(this).balance); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_tax","type":"uint256"}],"name":"TransferTaxUpdated","type":"event"},{"inputs":[],"name":"_maxTaxSwap","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":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"createDMC","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableDMC","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawStuckEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052604f600655601d60075560006008556000600955600a80556009600b556000600c556009600a62000036919062000333565b6200004590621e84806200034b565b600d55620000566009600a62000333565b6200006590621e84806200034b565b600e55620000766009600a62000333565b6200008590620f42406200034b565b600f556011805461ffff60a81b1916905560006012819055601355348015620000ad57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600580546001600160a01b031916730d682319414732baf454bd75c4518a8d19114d5f179055620001236009600a62000333565b62000133906305f5e1006200034b565b3360009081526001602081905260408220929092556003906200015e6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790553081526003909352818320805485166001908117909155600554909116835291208054909216179055620001bd3390565b6001600160a01b031660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620001f76009600a62000333565b62000207906305f5e1006200034b565b60405190815260200160405180910390a362000365565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620002755781600019048211156200025957620002596200021e565b808516156200026757918102915b93841c939080029062000239565b509250929050565b6000826200028e575060016200032d565b816200029d575060006200032d565b8160018114620002b65760028114620002c157620002e1565b60019150506200032d565b60ff841115620002d557620002d56200021e565b50506001821b6200032d565b5060208310610133831016604e8410600b841016171562000306575081810a6200032d565b62000312838362000234565b80600019048211156200032957620003296200021e565b0290505b92915050565b60006200034460ff8416836200027d565b9392505050565b80820281158282048414176200032d576200032d6200021e565b6119a080620003756000396000f3fe60806040526004361061012e5760003560e01c8063715018a6116100ab5780638f9a55c01161006f5780638f9a55c01461033457806395d89b411461034a578063a9059cbb14610376578063af19140f14610396578063cb6a5ffe146103ab578063dd62ed3e146103c057600080fd5b8063715018a6146102c1578063751039fc146102d65780637d1db4a5146102eb5780637fa787ba146103015780638da5cb5b1461031657600080fd5b8063313ce567116100f2578063313ce5671461020b57806349bd5a5e1461022757806351bc3c851461025f5780636fc3eaec1461027657806370a082311461028b57600080fd5b806306fdde031461013a578063095ea7b3146101825780630faee56f146101b257806318160ddd146101d657806323b872dd146101eb57600080fd5b3661013557005b600080fd5b34801561014657600080fd5b5060408051808201909152600d81526c11185c9ac8135bdbdb8810d85d609a1b60208201525b6040516101799190611572565b60405180910390f35b34801561018e57600080fd5b506101a261019d3660046115d5565b610406565b6040519015158152602001610179565b3480156101be57600080fd5b506101c8600f5481565b604051908152602001610179565b3480156101e257600080fd5b506101c861041d565b3480156101f757600080fd5b506101a2610206366004611601565b61043e565b34801561021757600080fd5b5060405160098152602001610179565b34801561023357600080fd5b50601154610247906001600160a01b031681565b6040516001600160a01b039091168152602001610179565b34801561026b57600080fd5b506102746104a7565b005b34801561028257600080fd5b506102746104fa565b34801561029757600080fd5b506101c86102a6366004611642565b6001600160a01b031660009081526001602052604090205490565b3480156102cd57600080fd5b50610274610527565b3480156102e257600080fd5b506102746105a4565b3480156102f757600080fd5b506101c8600d5481565b34801561030d57600080fd5b50610274610656565b34801561032257600080fd5b506000546001600160a01b0316610247565b34801561034057600080fd5b506101c8600e5481565b34801561035657600080fd5b50604080518082019091526003815262444d4360e81b602082015261016c565b34801561038257600080fd5b506101a26103913660046115d5565b6106e2565b3480156103a257600080fd5b506102746106ef565b3480156103b757600080fd5b50610274610732565b3480156103cc57600080fd5b506101c86103db36600461165f565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6000610413338484610ad4565b5060015b92915050565b600061042b6009600a611792565b610439906305f5e1006117a1565b905090565b600061044b848484610bf8565b61049d843361049885604051806060016040528060288152602001611943602891396001600160a01b038a16600090815260026020908152604080832033845290915290205491906111d5565b610ad4565b5060019392505050565b6005546001600160a01b0316336001600160a01b0316146104c757600080fd5b3060009081526001602052604090205480156104e6576104e68161120f565b4780156104f6576104f681611389565b5050565b6005546001600160a01b0316336001600160a01b03161461051a57600080fd5b4761052481611389565b50565b6000546001600160a01b0316331461055a5760405162461bcd60e51b8152600401610551906117b8565b60405180910390fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146105ce5760405162461bcd60e51b8152600401610551906117b8565b6105da6009600a611792565b6105e8906305f5e1006117a1565b600d556105f76009600a611792565b610605906305f5e1006117a1565b600e557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6106356009600a611792565b610643906305f5e1006117a1565b60405190815260200160405180910390a1565b6000546001600160a01b0316331461066d57600080fd5b600047116106b65760405162461bcd60e51b81526020600482015260166024820152752a37b5b2b71d1037379022aa24103a379031b632b0b960511b6044820152606401610551565b60405133904780156108fc02916000818181858888f19350505050158015610524573d6000803e3d6000fd5b6000610413338484610bf8565b6000546001600160a01b031633146107195760405162461bcd60e51b8152600401610551906117b8565b6011805462ff00ff60a01b19166201000160a01b179055565b6000546001600160a01b0316331461075c5760405162461bcd60e51b8152600401610551906117b8565b601154600160a01b900460ff16156107b65760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610551565b601080546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556107ff9030906107f16009600a611792565b610498906305f5e1006117a1565b601060009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610852573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061087691906117ed565b6001600160a01b031663c9c6539630601060009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108fc91906117ed565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610949573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096d91906117ed565b601180546001600160a01b039283166001600160a01b03199091161790556010541663f305d71947306109b5816001600160a01b031660009081526001602052604090205490565b6000806109ca6000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610a32573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610a57919061180a565b505060115460105460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116915063095ea7b3906044016020604051808303816000875af1158015610ab0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105249190611838565b6001600160a01b038316610b365760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610551565b6001600160a01b038216610b975760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610551565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610c5c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610551565b6001600160a01b038216610cbe5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610551565b60008111610d205760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610551565b601154600160a01b900460ff16610db5576001600160a01b03831660009081526003602052604090205460ff1680610d7057506001600160a01b03821660009081526003602052604090205460ff165b610db55760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610551565b600080610dc283826113c3565b6001600160a01b03861660009081526003602052604090205490915060ff16158015610e0757506001600160a01b03841660009081526003602052604090205460ff16155b15611069576001600160a01b03851660009081526003602052604090205460ff16610e5b57610e586064610e52600a54600c5411610e4757600654610e4b565b6008545b869061140c565b9061148e565b91505b6011546001600160a01b038681169116148015610e8657506010546001600160a01b03858116911614155b8015610eab57506001600160a01b03841660009081526003602052604090205460ff16155b15610f9357600d54831115610f025760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e000000000000006044820152606401610551565b600e5483610f25866001600160a01b031660009081526001602052604090205490565b610f2f919061185a565b1115610f7d5760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e0000000000006044820152606401610551565b600c8054906000610f8d8361186d565b91905055505b6011546001600160a01b038581169116148015610fb957506001600160a01b0385163014155b15610fe657610fe36064610e52600b54600c5411610fd957600754610e4b565b600954869061140c565b91505b30600090815260016020526040902054601154600160a81b900460ff1615801561101d57506011546001600160a01b038681169116145b80156110325750601154600160b01b900460ff165b1561106357801561105a5761105a6110558561105084600f546114d0565b6114d0565b61120f565b61106347611389565b50611091565b6005546001600160a01b03908116908616036110915760125460085461108e916114e5565b90505b811561110b57306000908152600160205260409020546110b190836114e5565b30600081815260016020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111029086815260200190565b60405180910390a35b6001600160a01b03851660009081526001602052604090205461112e90826113c3565b6001600160a01b03861660009081526001602052604090205561117361115484846113c3565b6001600160a01b038616600090815260016020526040902054906114e5565b6001600160a01b0380861660008181526001602052604090209290925586167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6111bd86866113c3565b60405190815260200160405180910390a35050505050565b600081848411156111f95760405162461bcd60e51b81526004016105519190611572565b5060006112068486611886565b95945050505050565b6011805460ff60a81b1916600160a81b179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061125757611257611899565b6001600160a01b03928316602091820292909201810191909152601054604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156112b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112d491906117ed565b816001815181106112e7576112e7611899565b6001600160a01b03928316602091820292909201015260105461130d9130911684610ad4565b60105460405163791ac94760e01b81526001600160a01b039091169063791ac947906113469085906000908690309042906004016118af565b600060405180830381600087803b15801561136057600080fd5b505af1158015611374573d6000803e3d6000fd5b50506011805460ff60a81b1916905550505050565b6005546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156104f6573d6000803e3d6000fd5b600061140583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506111d5565b9392505050565b60008260000361141e57506000610417565b600061142a83856117a1565b9050826114378583611920565b146114055760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610551565b600061140583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611544565b60008183116114df5782611405565b50919050565b6000806114f2838561185a565b9050838110156114055760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610551565b600081836115655760405162461bcd60e51b81526004016105519190611572565b5060006112068486611920565b600060208083528351808285015260005b8181101561159f57858101830151858201604001528201611583565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461052457600080fd5b600080604083850312156115e857600080fd5b82356115f3816115c0565b946020939093013593505050565b60008060006060848603121561161657600080fd5b8335611621816115c0565b92506020840135611631816115c0565b929592945050506040919091013590565b60006020828403121561165457600080fd5b8135611405816115c0565b6000806040838503121561167257600080fd5b823561167d816115c0565b9150602083013561168d816115c0565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156116e95781600019048211156116cf576116cf611698565b808516156116dc57918102915b93841c93908002906116b3565b509250929050565b60008261170057506001610417565b8161170d57506000610417565b8160018114611723576002811461172d57611749565b6001915050610417565b60ff84111561173e5761173e611698565b50506001821b610417565b5060208310610133831016604e8410600b841016171561176c575081810a610417565b61177683836116ae565b806000190482111561178a5761178a611698565b029392505050565b600061140560ff8416836116f1565b808202811582820484141761041757610417611698565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000602082840312156117ff57600080fd5b8151611405816115c0565b60008060006060848603121561181f57600080fd5b8351925060208401519150604084015190509250925092565b60006020828403121561184a57600080fd5b8151801515811461140557600080fd5b8082018082111561041757610417611698565b60006001820161187f5761187f611698565b5060010190565b8181038181111561041757610417611698565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156118ff5784516001600160a01b0316835293830193918301916001016118da565b50506001600160a01b03969096166060850152505050608001529392505050565b60008261193d57634e487b7160e01b600052601260045260246000fd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220e766d07f0709ff0579ab801856e6b834ddeb693350625aa60d8db731c7dfc2ef64736f6c63430008130033
Deployed Bytecode
0x60806040526004361061012e5760003560e01c8063715018a6116100ab5780638f9a55c01161006f5780638f9a55c01461033457806395d89b411461034a578063a9059cbb14610376578063af19140f14610396578063cb6a5ffe146103ab578063dd62ed3e146103c057600080fd5b8063715018a6146102c1578063751039fc146102d65780637d1db4a5146102eb5780637fa787ba146103015780638da5cb5b1461031657600080fd5b8063313ce567116100f2578063313ce5671461020b57806349bd5a5e1461022757806351bc3c851461025f5780636fc3eaec1461027657806370a082311461028b57600080fd5b806306fdde031461013a578063095ea7b3146101825780630faee56f146101b257806318160ddd146101d657806323b872dd146101eb57600080fd5b3661013557005b600080fd5b34801561014657600080fd5b5060408051808201909152600d81526c11185c9ac8135bdbdb8810d85d609a1b60208201525b6040516101799190611572565b60405180910390f35b34801561018e57600080fd5b506101a261019d3660046115d5565b610406565b6040519015158152602001610179565b3480156101be57600080fd5b506101c8600f5481565b604051908152602001610179565b3480156101e257600080fd5b506101c861041d565b3480156101f757600080fd5b506101a2610206366004611601565b61043e565b34801561021757600080fd5b5060405160098152602001610179565b34801561023357600080fd5b50601154610247906001600160a01b031681565b6040516001600160a01b039091168152602001610179565b34801561026b57600080fd5b506102746104a7565b005b34801561028257600080fd5b506102746104fa565b34801561029757600080fd5b506101c86102a6366004611642565b6001600160a01b031660009081526001602052604090205490565b3480156102cd57600080fd5b50610274610527565b3480156102e257600080fd5b506102746105a4565b3480156102f757600080fd5b506101c8600d5481565b34801561030d57600080fd5b50610274610656565b34801561032257600080fd5b506000546001600160a01b0316610247565b34801561034057600080fd5b506101c8600e5481565b34801561035657600080fd5b50604080518082019091526003815262444d4360e81b602082015261016c565b34801561038257600080fd5b506101a26103913660046115d5565b6106e2565b3480156103a257600080fd5b506102746106ef565b3480156103b757600080fd5b50610274610732565b3480156103cc57600080fd5b506101c86103db36600461165f565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6000610413338484610ad4565b5060015b92915050565b600061042b6009600a611792565b610439906305f5e1006117a1565b905090565b600061044b848484610bf8565b61049d843361049885604051806060016040528060288152602001611943602891396001600160a01b038a16600090815260026020908152604080832033845290915290205491906111d5565b610ad4565b5060019392505050565b6005546001600160a01b0316336001600160a01b0316146104c757600080fd5b3060009081526001602052604090205480156104e6576104e68161120f565b4780156104f6576104f681611389565b5050565b6005546001600160a01b0316336001600160a01b03161461051a57600080fd5b4761052481611389565b50565b6000546001600160a01b0316331461055a5760405162461bcd60e51b8152600401610551906117b8565b60405180910390fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146105ce5760405162461bcd60e51b8152600401610551906117b8565b6105da6009600a611792565b6105e8906305f5e1006117a1565b600d556105f76009600a611792565b610605906305f5e1006117a1565b600e557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6106356009600a611792565b610643906305f5e1006117a1565b60405190815260200160405180910390a1565b6000546001600160a01b0316331461066d57600080fd5b600047116106b65760405162461bcd60e51b81526020600482015260166024820152752a37b5b2b71d1037379022aa24103a379031b632b0b960511b6044820152606401610551565b60405133904780156108fc02916000818181858888f19350505050158015610524573d6000803e3d6000fd5b6000610413338484610bf8565b6000546001600160a01b031633146107195760405162461bcd60e51b8152600401610551906117b8565b6011805462ff00ff60a01b19166201000160a01b179055565b6000546001600160a01b0316331461075c5760405162461bcd60e51b8152600401610551906117b8565b601154600160a01b900460ff16156107b65760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610551565b601080546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556107ff9030906107f16009600a611792565b610498906305f5e1006117a1565b601060009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610852573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061087691906117ed565b6001600160a01b031663c9c6539630601060009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108fc91906117ed565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610949573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096d91906117ed565b601180546001600160a01b039283166001600160a01b03199091161790556010541663f305d71947306109b5816001600160a01b031660009081526001602052604090205490565b6000806109ca6000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610a32573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610a57919061180a565b505060115460105460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116915063095ea7b3906044016020604051808303816000875af1158015610ab0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105249190611838565b6001600160a01b038316610b365760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610551565b6001600160a01b038216610b975760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610551565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610c5c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610551565b6001600160a01b038216610cbe5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610551565b60008111610d205760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610551565b601154600160a01b900460ff16610db5576001600160a01b03831660009081526003602052604090205460ff1680610d7057506001600160a01b03821660009081526003602052604090205460ff165b610db55760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610551565b600080610dc283826113c3565b6001600160a01b03861660009081526003602052604090205490915060ff16158015610e0757506001600160a01b03841660009081526003602052604090205460ff16155b15611069576001600160a01b03851660009081526003602052604090205460ff16610e5b57610e586064610e52600a54600c5411610e4757600654610e4b565b6008545b869061140c565b9061148e565b91505b6011546001600160a01b038681169116148015610e8657506010546001600160a01b03858116911614155b8015610eab57506001600160a01b03841660009081526003602052604090205460ff16155b15610f9357600d54831115610f025760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e000000000000006044820152606401610551565b600e5483610f25866001600160a01b031660009081526001602052604090205490565b610f2f919061185a565b1115610f7d5760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e0000000000006044820152606401610551565b600c8054906000610f8d8361186d565b91905055505b6011546001600160a01b038581169116148015610fb957506001600160a01b0385163014155b15610fe657610fe36064610e52600b54600c5411610fd957600754610e4b565b600954869061140c565b91505b30600090815260016020526040902054601154600160a81b900460ff1615801561101d57506011546001600160a01b038681169116145b80156110325750601154600160b01b900460ff165b1561106357801561105a5761105a6110558561105084600f546114d0565b6114d0565b61120f565b61106347611389565b50611091565b6005546001600160a01b03908116908616036110915760125460085461108e916114e5565b90505b811561110b57306000908152600160205260409020546110b190836114e5565b30600081815260016020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111029086815260200190565b60405180910390a35b6001600160a01b03851660009081526001602052604090205461112e90826113c3565b6001600160a01b03861660009081526001602052604090205561117361115484846113c3565b6001600160a01b038616600090815260016020526040902054906114e5565b6001600160a01b0380861660008181526001602052604090209290925586167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6111bd86866113c3565b60405190815260200160405180910390a35050505050565b600081848411156111f95760405162461bcd60e51b81526004016105519190611572565b5060006112068486611886565b95945050505050565b6011805460ff60a81b1916600160a81b179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061125757611257611899565b6001600160a01b03928316602091820292909201810191909152601054604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156112b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112d491906117ed565b816001815181106112e7576112e7611899565b6001600160a01b03928316602091820292909201015260105461130d9130911684610ad4565b60105460405163791ac94760e01b81526001600160a01b039091169063791ac947906113469085906000908690309042906004016118af565b600060405180830381600087803b15801561136057600080fd5b505af1158015611374573d6000803e3d6000fd5b50506011805460ff60a81b1916905550505050565b6005546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156104f6573d6000803e3d6000fd5b600061140583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506111d5565b9392505050565b60008260000361141e57506000610417565b600061142a83856117a1565b9050826114378583611920565b146114055760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610551565b600061140583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611544565b60008183116114df5782611405565b50919050565b6000806114f2838561185a565b9050838110156114055760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610551565b600081836115655760405162461bcd60e51b81526004016105519190611572565b5060006112068486611920565b600060208083528351808285015260005b8181101561159f57858101830151858201604001528201611583565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461052457600080fd5b600080604083850312156115e857600080fd5b82356115f3816115c0565b946020939093013593505050565b60008060006060848603121561161657600080fd5b8335611621816115c0565b92506020840135611631816115c0565b929592945050506040919091013590565b60006020828403121561165457600080fd5b8135611405816115c0565b6000806040838503121561167257600080fd5b823561167d816115c0565b9150602083013561168d816115c0565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156116e95781600019048211156116cf576116cf611698565b808516156116dc57918102915b93841c93908002906116b3565b509250929050565b60008261170057506001610417565b8161170d57506000610417565b8160018114611723576002811461172d57611749565b6001915050610417565b60ff84111561173e5761173e611698565b50506001821b610417565b5060208310610133831016604e8410600b841016171561176c575081810a610417565b61177683836116ae565b806000190482111561178a5761178a611698565b029392505050565b600061140560ff8416836116f1565b808202811582820484141761041757610417611698565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000602082840312156117ff57600080fd5b8151611405816115c0565b60008060006060848603121561181f57600080fd5b8351925060208401519150604084015190509250925092565b60006020828403121561184a57600080fd5b8151801515811461140557600080fd5b8082018082111561041757610417611698565b60006001820161187f5761187f611698565b5060010190565b8181038181111561041757610417611698565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156118ff5784516001600160a01b0316835293830193918301916001016118da565b50506001600160a01b03969096166060850152505050608001529392505050565b60008261193d57634e487b7160e01b600052601260045260246000fd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220e766d07f0709ff0579ab801856e6b834ddeb693350625aa60d8db731c7dfc2ef64736f6c63430008130033
Deployed Bytecode Sourcemap
3862:8490:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5676:83;;;;;;;;;;-1:-1:-1;5746:5:0;;;;;;;;;;;;-1:-1:-1;;;5746:5:0;;;;5676:83;;;;;;;:::i;:::-;;;;;;;;6555:186;;;;;;;;;;-1:-1:-1;6555:186:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;6555:186:0;1023:187:1;4807:56:0;;;;;;;;;;;;;;;;;;;1361:25:1;;;1349:2;1334:18;4807:56:0;1215:177:1;5953:95:0;;;;;;;;;;;;;:::i;6749:442::-;;;;;;;;;;-1:-1:-1;6749:442:0;;;;;:::i;:::-;;:::i;5862:83::-;;;;;;;;;;-1:-1:-1;5862:83:0;;4598:1;2000:36:1;;1988:2;1973:18;5862:83:0;1858:184:1;4921:28:0;;;;;;;;;;-1:-1:-1;4921:28:0;;;;-1:-1:-1;;;;;4921:28:0;;;;;;-1:-1:-1;;;;;2211:32:1;;;2193:51;;2181:2;2166:18;4921:28:0;2047:203:1;11575:358:0;;;;;;;;;;;;;:::i;:::-;;11941:181;;;;;;;;;;;;;:::i;6056:119::-;;;;;;;;;;-1:-1:-1;6056:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;6149:18:0;6122:7;6149:18;;;:9;:18;;;;;;;6056:119;2893:148;;;;;;;;;;;;;:::i;10389:162::-;;;;;;;;;;;;;:::i;4677:57::-;;;;;;;;;;;;;;;;12130:219;;;;;;;;;;;;;:::i;2679:79::-;;;;;;;;;;-1:-1:-1;2717:7:0;2744:6;-1:-1:-1;;;;;2744:6:0;2679:79;;4741:59;;;;;;;;;;;;;;;;5767:87;;;;;;;;;;-1:-1:-1;5839:7:0;;;;;;;;;;;;-1:-1:-1;;;5839:7:0;;;;5767:87;;6183:188;;;;;;;;;;-1:-1:-1;6183:188:0;;;;;:::i;:::-;;:::i;11424:106::-;;;;;;;;;;;;;:::i;10651:765::-;;;;;;;;;;;;;:::i;6379:168::-;;;;;;;;;;-1:-1:-1;6379:168:0;;;;;:::i;:::-;-1:-1:-1;;;;;6512:18:0;;;6485:7;6512:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6379:168;6555:186;6655:4;6672:39;306:10;6695:7;6704:6;6672:8;:39::i;:::-;-1:-1:-1;6729:4:0;6555:186;;;;;:::o;5953:95::-;6006:7;4655:15;4598:1;4655:2;:15;:::i;:::-;4641:29;;:11;:29;:::i;:::-;6026:14;;5953:95;:::o;6749:442::-;6881:4;6898:32;6904:6;6912:9;6923:6;6898:5;:32::i;:::-;6941:220;6964:6;306:10;7012:138;7068:6;7012:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7012:19:0;;;;;;:11;:19;;;;;;;;306:10;7012:33;;;;;;;;;;:37;:138::i;:::-;6941:8;:220::i;:::-;-1:-1:-1;7179:4:0;6749:442;;;;;:::o;11575:358::-;11641:7;;-1:-1:-1;;;;;11641:7:0;306:10;-1:-1:-1;;;;;11625:23:0;;11617:32;;;;;;11701:4;11660:20;6149:18;;;:9;:18;;;;;;11722:16;;11718:79;;11755:30;11772:12;11755:16;:30::i;:::-;11828:21;11864:14;;11860:66;;11895:19;11903:10;11895:7;:19::i;:::-;11606:327;;11575:358::o;11941:181::-;12007:7;;-1:-1:-1;;;;;12007:7:0;306:10;-1:-1:-1;;;;;11991:23:0;;11983:32;;;;;;12055:21;12087:27;12055:21;12087:7;:27::i;:::-;11972:150;11941:181::o;2893:148::-;2806:6;;-1:-1:-1;;;;;2806:6:0;306:10;2806:22;2798:67;;;;-1:-1:-1;;;2798:67:0;;;;;;;:::i;:::-;;;;;;;;;3000:1:::1;2984:6:::0;;2963:40:::1;::::0;-1:-1:-1;;;;;2984:6:0;;::::1;::::0;2963:40:::1;::::0;3000:1;;2963:40:::1;3031:1;3014:19:::0;;-1:-1:-1;;;;;;3014:19:0::1;::::0;;2893:148::o;10389:162::-;2806:6;;-1:-1:-1;;;;;2806:6:0;306:10;2806:22;2798:67;;;;-1:-1:-1;;;2798:67:0;;;;;;;:::i;:::-;4655:15:::1;4598:1;4655:2;:15;:::i;:::-;4641:29;::::0;:11:::1;:29;:::i;:::-;10443:12;:22:::0;4655:15:::1;4598:1;4655:2;:15;:::i;:::-;4641:29;::::0;:11:::1;:29;:::i;:::-;10476:14;:24:::0;10516:27:::1;4655:15;4598:1;4655:2;:15;:::i;:::-;4641:29;::::0;:11:::1;:29;:::i;:::-;10516:27;::::0;1361:25:1;;;1349:2;1334:18;10516:27:0::1;;;;;;;10389:162::o:0;12130:219::-;2717:7;2744:6;-1:-1:-1;;;;;2744:6:0;12186:10;:21;12178:30;;;;;;12251:1;12227:21;:25;12219:60;;;;-1:-1:-1;;;12219:60:0;;5151:2:1;12219:60:0;;;5133:21:1;5190:2;5170:18;;;5163:30;-1:-1:-1;;;5209:18:1;;;5202:52;5271:18;;12219:60:0;4949:346:1;12219:60:0;12290:51;;12298:10;;12319:21;12290:51;;;;;;;;;12319:21;12298:10;12290:51;;;;;;;;;;;;;;;;;;;6183:188;6286:4;6303:38;306:10;6323:9;6334:6;6303:5;:38::i;11424:106::-;2806:6;;-1:-1:-1;;;;;2806:6:0;306:10;2806:22;2798:67;;;;-1:-1:-1;;;2798:67:0;;;;;;;:::i;:::-;11475:11:::1;:18:::0;;-1:-1:-1;;;;11504:18:0;-1:-1:-1;;;11504:18:0;;;11424:106::o;10651:765::-;2806:6;;-1:-1:-1;;;;;2806:6:0;306:10;2806:22;2798:67;;;;-1:-1:-1;;;2798:67:0;;;;;;;:::i;:::-;10711:11:::1;::::0;-1:-1:-1;;;10711:11:0;::::1;;;10710:12;10702:48;;;::::0;-1:-1:-1;;;10702:48:0;;5502:2:1;10702:48:0::1;::::0;::::1;5484:21:1::0;5541:2;5521:18;;;5514:30;5580:25;5560:18;;;5553:53;5623:18;;10702:48:0::1;5300:347:1::0;10702:48:0::1;10761:15;:104:::0;;-1:-1:-1;;;;;;10761:104:0::1;10812:42;10761:104:::0;;::::1;::::0;;;10876:58:::1;::::0;10893:4:::1;::::0;4655:15:::1;4598:1;4655:2;:15;:::i;:::-;4641:29;::::0;:11:::1;:29;:::i;10876:58::-;10979:15;;;;;;;;;-1:-1:-1::0;;;;;10979:15:0::1;-1:-1:-1::0;;;;;10979:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10961:55:0::1;;11039:4;11059:15;;;;;;;;;-1:-1:-1::0;;;;;11059:15:0::1;-1:-1:-1::0;;;;;11059:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10961:131;::::0;-1:-1:-1;;;;;;10961:131:0::1;::::0;;;;;;-1:-1:-1;;;;;6138:15:1;;;10961:131:0::1;::::0;::::1;6120:34:1::0;6190:15;;6170:18;;;6163:43;6055:18;;10961:131:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10945:13;:147:::0;;-1:-1:-1;;;;;10945:147:0;;::::1;-1:-1:-1::0;;;;;;10945:147:0;;::::1;;::::0;;11103:15:::1;::::0;::::1;:31;11142:21;11187:4;11207:24;11187:4:::0;-1:-1:-1;;;;;6149:18:0;6122:7;6149:18;;;:9;:18;;;;;;;6056:119;11207:24:::1;11246:1;11262::::0;11278:7:::1;2717::::0;2744:6;-1:-1:-1;;;;;2744:6:0;;2679:79;11278:7:::1;11103:223;::::0;::::1;::::0;;;-1:-1:-1;;;;;;11103:223:0;;;-1:-1:-1;;;;;6576:15:1;;;11103:223:0::1;::::0;::::1;6558:34:1::0;6608:18;;;6601:34;;;;6651:18;;;6644:34;;;;6694:18;;;6687:34;6758:15;;;6737:19;;;6730:44;11300:15:0::1;6790:19:1::0;;;6783:35;6492:19;;11103:223:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;11344:13:0::1;::::0;11375:15:::1;::::0;11337:71:::1;::::0;-1:-1:-1;;;11337:71:0;;-1:-1:-1;;;;;11375:15:0;;::::1;11337:71;::::0;::::1;7314:51:1::0;-1:-1:-1;;7381:18:1;;;7374:34;11344:13:0;::::1;::::0;-1:-1:-1;11337:29:0::1;::::0;7287:18:1;;11337:71:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;7199:335::-:0;-1:-1:-1;;;;;7292:19:0;;7284:68;;;;-1:-1:-1;;;7284:68:0;;7903:2:1;7284:68:0;;;7885:21:1;7942:2;7922:18;;;7915:30;7981:34;7961:18;;;7954:62;-1:-1:-1;;;8032:18:1;;;8025:34;8076:19;;7284:68:0;7701:400:1;7284:68:0;-1:-1:-1;;;;;7371:21:0;;7363:68;;;;-1:-1:-1;;;7363:68:0;;8308:2:1;7363:68:0;;;8290:21:1;8347:2;8327:18;;;8320:30;8386:34;8366:18;;;8359:62;-1:-1:-1;;;8437:18:1;;;8430:32;8479:19;;7363:68:0;8106:398:1;7363:68:0;-1:-1:-1;;;;;7442:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7494:32;;1361:25:1;;;7494:32:0;;1334:18:1;7494:32:0;;;;;;;7199:335;;;:::o;7542:2233::-;-1:-1:-1;;;;;7628:18:0;;7620:68;;;;-1:-1:-1;;;7620:68:0;;8711:2:1;7620:68:0;;;8693:21:1;8750:2;8730:18;;;8723:30;8789:34;8769:18;;;8762:62;-1:-1:-1;;;8840:18:1;;;8833:35;8885:19;;7620:68:0;8509:401:1;7620:68:0;-1:-1:-1;;;;;7707:19:0;;7699:67;;;;-1:-1:-1;;;7699:67:0;;9117:2:1;7699:67:0;;;9099:21:1;9156:2;9136:18;;;9129:30;9195:34;9175:18;;;9168:62;-1:-1:-1;;;9246:18:1;;;9239:33;9289:19;;7699:67:0;8915:399:1;7699:67:0;7793:1;7785:5;:9;7777:63;;;;-1:-1:-1;;;7777:63:0;;9521:2:1;7777:63:0;;;9503:21:1;9560:2;9540:18;;;9533:30;9599:34;9579:18;;;9572:62;-1:-1:-1;;;9650:18:1;;;9643:39;9699:19;;7777:63:0;9319:405:1;7777:63:0;7856:11;;-1:-1:-1;;;7856:11:0;;;;7851:182;;-1:-1:-1;;;;;7910:24:0;;;;;;:18;:24;;;;;;;;;:53;;-1:-1:-1;;;;;;7938:25:0;;;;;;:18;:25;;;;;;;;7910:53;7884:137;;;;-1:-1:-1;;;7884:137:0;;9931:2:1;7884:137:0;;;9913:21:1;9970:2;9950:18;;;9943:30;-1:-1:-1;;;9989:18:1;;;9982:52;10051:18;;7884:137:0;9729:346:1;7884:137:0;8045:17;;8092:20;:5;8045:17;8092:9;:20::i;:::-;-1:-1:-1;;;;;8130:24:0;;;;;;:18;:24;;;;;;8077:35;;-1:-1:-1;8130:24:0;;8129:25;:55;;;;-1:-1:-1;;;;;;8159:25:0;;;;;;:18;:25;;;;;;;;8158:26;8129:55;8125:1287;;;-1:-1:-1;;;;;8207:24:0;;;;;;:18;:24;;;;;;;;8203:129;;8245:85;8312:3;8245:44;8268:5;;8256:9;;:17;8255:33;;8284:4;;8255:33;;;8277:4;;8255:33;8245:5;;:9;:44::i;:::-;:48;;:85::i;:::-;8233:97;;8203:129;8378:13;;-1:-1:-1;;;;;8370:21:0;;;8378:13;;8370:21;:75;;;;-1:-1:-1;8429:15:0;;-1:-1:-1;;;;;8412:33:0;;;8429:15;;8412:33;;8370:75;:122;;;;-1:-1:-1;;;;;;8467:25:0;;;;;;:18;:25;;;;;;;;8466:26;8370:122;8348:445;;;8544:12;;8535:5;:21;;8527:59;;;;-1:-1:-1;;;8527:59:0;;10282:2:1;8527:59:0;;;10264:21:1;10321:2;10301:18;;;10294:30;10360:27;10340:18;;;10333:55;10405:18;;8527:59:0;10080:349:1;8527:59:0;8663:14;;8654:5;8635:16;8645:5;-1:-1:-1;;;;;6149:18:0;6122:7;6149:18;;;:9;:18;;;;;;;6056:119;8635:16;:24;;;;:::i;:::-;:42;;8605:142;;;;-1:-1:-1;;;8605:142:0;;10766:2:1;8605:142:0;;;10748:21:1;10805:2;10785:18;;;10778:30;10844:28;10824:18;;;10817:56;10890:18;;8605:142:0;10564:350:1;8605:142:0;8766:9;:11;;;:9;:11;;;:::i;:::-;;;;;;8348:445;8820:13;;-1:-1:-1;;;;;8811:22:0;;;8820:13;;8811:22;:47;;;;-1:-1:-1;;;;;;8837:21:0;;8853:4;8837:21;;8811:47;8807:198;;;8891:98;8985:3;8891:67;8936:6;;8924:9;;:18;8923:34;;8953:4;;8923:34;;;8946:4;;8891:5;;:31;:67::i;:98::-;8879:110;;8807:198;9070:4;9021:28;6149:18;;;:9;:18;;;;;;9096:6;;-1:-1:-1;;;9096:6:0;;;;9095:7;:33;;;;-1:-1:-1;9115:13:0;;-1:-1:-1;;;;;9106:22:0;;;9115:13;;9106:22;9095:33;:48;;;;-1:-1:-1;9132:11:0;;-1:-1:-1;;;9132:11:0;;;;9095:48;9091:257;;;9168:24;;9164:119;;9193:90;9210:50;9214:5;9221:38;9225:20;9247:11;;9221:3;:38::i;:::-;9210:3;:50::i;:::-;9193:16;:90::i;:::-;9302:30;9310:21;9302:7;:30::i;:::-;8186:1173;8125:1287;;;9377:7;;-1:-1:-1;;;;;9377:7:0;;;9369:15;;;;9365:47;;9402:9;;9393:4;;:19;;:8;:19::i;:::-;9386:26;;9365:47;9429:13;;9425:158;;9504:4;9486:24;;;;:9;:24;;;;;;:39;;9515:9;9486:28;:39::i;:::-;9477:4;9459:24;;;;:9;:24;;;;;;;:66;;;;9531:40;;-1:-1:-1;;;;;9531:40:0;;;;;;;9561:9;1361:25:1;;1349:2;1334:18;;1215:177;9531:40:0;;;;;;;;9425:158;-1:-1:-1;;;;;9611:15:0;;;;;;:9;:15;;;;;;:25;;9631:4;9611:19;:25::i;:::-;-1:-1:-1;;;;;9593:15:0;;;;;;:9;:15;;;;;:43;9666:42;9687:20;:5;9697:9;9687;:20::i;:::-;-1:-1:-1;;;;;9666:16:0;;;;;;:9;:16;;;;;;;:20;:42::i;:::-;-1:-1:-1;;;;;9647:16:0;;;;;;;:9;:16;;;;;:61;;;;9724:43;;;9746:20;:5;9756:9;9746;:20::i;:::-;9724:43;;1361:25:1;;;1349:2;1334:18;9724:43:0;;;;;;;7609:2166;;7542:2233;;;:::o;1481:224::-;1601:7;1637:12;1629:6;;;;1621:29;;;;-1:-1:-1;;;1621:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1661:9:0;1673:5;1677:1;1673;:5;:::i;:::-;1661:17;1481:224;-1:-1:-1;;;;;1481:224:0:o;9898:483::-;5262:6;:13;;-1:-1:-1;;;;5262:13:0;-1:-1:-1;;;5262:13:0;;;10000:16:::1;::::0;;10014:1:::1;10000:16:::0;;;;;::::1;::::0;;-1:-1:-1;;10000:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;10000:16:0::1;9976:40;;10045:4;10027;10032:1;10027:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10027:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;10071:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;10071:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;10027:7;;10071:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10061:4;10066:1;10061:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10061:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;10136:15:::1;::::0;10104:62:::1;::::0;10121:4:::1;::::0;10136:15:::1;10154:11:::0;10104:8:::1;:62::i;:::-;10177:15;::::0;:196:::1;::::0;-1:-1:-1;;;10177:196:0;;-1:-1:-1;;;;;10177:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;10258:11;;10177:15:::1;::::0;10300:4;;10327::::1;::::0;10347:15:::1;::::0;10177:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5298:6:0;:14;;-1:-1:-1;;;;5298:14:0;;;-1:-1:-1;;;;9898:483:0:o;10559:84::-;10611:7;;:24;;-1:-1:-1;;;;;10611:7:0;;;;:24;;;;;10628:6;;10611:7;:24;:7;:24;10628:6;10611:7;:24;;;;;;;;;;;;;;;;;;;1337:136;1395:7;1422:43;1426:1;1429;1422:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1415:50;1337:136;-1:-1:-1;;;1337:136:0:o;1713:246::-;1771:7;1795:1;1800;1795:6;1791:47;;-1:-1:-1;1825:1:0;1818:8;;1791:47;1848:9;1860:5;1864:1;1860;:5;:::i;:::-;1848:17;-1:-1:-1;1893:1:0;1884:5;1888:1;1848:17;1884:5;:::i;:::-;:10;1876:56;;;;-1:-1:-1;;;1876:56:0;;12865:2:1;1876:56:0;;;12847:21:1;12904:2;12884:18;;;12877:30;12943:34;12923:18;;;12916:62;-1:-1:-1;;;12994:18:1;;;12987:31;13035:19;;1876:56:0;12663:397:1;1967:132:0;2025:7;2052:39;2056:1;2059;2052:39;;;;;;;;;;;;;;;;;:3;:39::i;9783:107::-;9840:7;9872:1;9868;:5;9867:15;;9881:1;9867:15;;;-1:-1:-1;9877:1:0;9783:107;-1:-1:-1;9783:107:0:o;1150:179::-;1208:7;;1240:5;1244:1;1240;:5;:::i;:::-;1228:17;;1269:1;1264;:6;;1256:46;;;;-1:-1:-1;;;1256:46:0;;13267:2:1;1256:46:0;;;13249:21:1;13306:2;13286:18;;;13279:30;13345:29;13325:18;;;13318:57;13392:18;;1256:46:0;13065:351:1;2107:223:0;2227:7;2262:12;2255:5;2247:28;;;;-1:-1:-1;;;2247:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2286:9:0;2298:5;2302:1;2298;:5;:::i;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;2255:247::-;2314:6;2367:2;2355:9;2346:7;2342:23;2338:32;2335:52;;;2383:1;2380;2373:12;2335:52;2422:9;2409:23;2441:31;2466:5;2441:31;:::i;2507:388::-;2575:6;2583;2636:2;2624:9;2615:7;2611:23;2607:32;2604:52;;;2652:1;2649;2642:12;2604:52;2691:9;2678:23;2710:31;2735:5;2710:31;:::i;:::-;2760:5;-1:-1:-1;2817:2:1;2802:18;;2789:32;2830:33;2789:32;2830:33;:::i;:::-;2882:7;2872:17;;;2507:388;;;;;:::o;2900:127::-;2961:10;2956:3;2952:20;2949:1;2942:31;2992:4;2989:1;2982:15;3016:4;3013:1;3006:15;3032:422;3121:1;3164:5;3121:1;3178:270;3199:7;3189:8;3186:21;3178:270;;;3258:4;3254:1;3250:6;3246:17;3240:4;3237:27;3234:53;;;3267:18;;:::i;:::-;3317:7;3307:8;3303:22;3300:55;;;3337:16;;;;3300:55;3416:22;;;;3376:15;;;;3178:270;;;3182:3;3032:422;;;;;:::o;3459:806::-;3508:5;3538:8;3528:80;;-1:-1:-1;3579:1:1;3593:5;;3528:80;3627:4;3617:76;;-1:-1:-1;3664:1:1;3678:5;;3617:76;3709:4;3727:1;3722:59;;;;3795:1;3790:130;;;;3702:218;;3722:59;3752:1;3743:10;;3766:5;;;3790:130;3827:3;3817:8;3814:17;3811:43;;;3834:18;;:::i;:::-;-1:-1:-1;;3890:1:1;3876:16;;3905:5;;3702:218;;4004:2;3994:8;3991:16;3985:3;3979:4;3976:13;3972:36;3966:2;3956:8;3953:16;3948:2;3942:4;3939:12;3935:35;3932:77;3929:159;;;-1:-1:-1;4041:19:1;;;4073:5;;3929:159;4120:34;4145:8;4139:4;4120:34;:::i;:::-;4190:6;4186:1;4182:6;4178:19;4169:7;4166:32;4163:58;;;4201:18;;:::i;:::-;4239:20;;3459:806;-1:-1:-1;;;3459:806:1:o;4270:140::-;4328:5;4357:47;4398:4;4388:8;4384:19;4378:4;4357:47;:::i;4415:168::-;4488:9;;;4519;;4536:15;;;4530:22;;4516:37;4506:71;;4557:18;;:::i;4588:356::-;4790:2;4772:21;;;4809:18;;;4802:30;4868:34;4863:2;4848:18;;4841:62;4935:2;4920:18;;4588:356::o;5652:251::-;5722:6;5775:2;5763:9;5754:7;5750:23;5746:32;5743:52;;;5791:1;5788;5781:12;5743:52;5823:9;5817:16;5842:31;5867:5;5842:31;:::i;6829:306::-;6917:6;6925;6933;6986:2;6974:9;6965:7;6961:23;6957:32;6954:52;;;7002:1;6999;6992:12;6954:52;7031:9;7025:16;7015:26;;7081:2;7070:9;7066:18;7060:25;7050:35;;7125:2;7114:9;7110:18;7104:25;7094:35;;6829:306;;;;;:::o;7419:277::-;7486:6;7539:2;7527:9;7518:7;7514:23;7510:32;7507:52;;;7555:1;7552;7545:12;7507:52;7587:9;7581:16;7640:5;7633:13;7626:21;7619:5;7616:32;7606:60;;7662:1;7659;7652:12;10434:125;10499:9;;;10520:10;;;10517:36;;;10533:18;;:::i;10919:135::-;10958:3;10979:17;;;10976:43;;10999:18;;:::i;:::-;-1:-1:-1;11046:1:1;11035:13;;10919:135::o;11059:128::-;11126:9;;;11147:11;;;11144:37;;;11161:18;;:::i;11324:127::-;11385:10;11380:3;11376:20;11373:1;11366:31;11416:4;11413:1;11406:15;11440:4;11437:1;11430:15;11456:980;11718:4;11766:3;11755:9;11751:19;11797:6;11786:9;11779:25;11823:2;11861:6;11856:2;11845:9;11841:18;11834:34;11904:3;11899:2;11888:9;11884:18;11877:31;11928:6;11963;11957:13;11994:6;11986;11979:22;12032:3;12021:9;12017:19;12010:26;;12071:2;12063:6;12059:15;12045:29;;12092:1;12102:195;12116:6;12113:1;12110:13;12102:195;;;12181:13;;-1:-1:-1;;;;;12177:39:1;12165:52;;12272:15;;;;12237:12;;;;12213:1;12131:9;12102:195;;;-1:-1:-1;;;;;;;12353:32:1;;;;12348:2;12333:18;;12326:60;-1:-1:-1;;;12417:3:1;12402:19;12395:35;12314:3;11456:980;-1:-1:-1;;;11456:980:1:o;12441:217::-;12481:1;12507;12497:132;;12551:10;12546:3;12542:20;12539:1;12532:31;12586:4;12583:1;12576:15;12614:4;12611:1;12604:15;12497:132;-1:-1:-1;12643:9:1;;12441:217::o
Swarm Source
ipfs://e766d07f0709ff0579ab801856e6b834ddeb693350625aa60d8db731c7dfc2ef
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.