More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 19 from a total of 19 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 21103473 | 22 days ago | IN | 0 ETH | 0.00038119 | ||||
Approve | 21103412 | 22 days ago | IN | 0 ETH | 0.00088798 | ||||
Approve | 21103411 | 22 days ago | IN | 0 ETH | 0.00088922 | ||||
Approve | 21103410 | 22 days ago | IN | 0 ETH | 0.00027663 | ||||
Approve | 21103407 | 22 days ago | IN | 0 ETH | 0.00032678 | ||||
Approve | 21103407 | 22 days ago | IN | 0 ETH | 0.00042003 | ||||
Approve | 21103405 | 22 days ago | IN | 0 ETH | 0.00032692 | ||||
Approve | 21103405 | 22 days ago | IN | 0 ETH | 0.00032692 | ||||
Approve | 21103402 | 22 days ago | IN | 0 ETH | 0.0002362 | ||||
Approve | 21103401 | 22 days ago | IN | 0 ETH | 0.00047588 | ||||
Approve | 21103401 | 22 days ago | IN | 0 ETH | 0.00033601 | ||||
Approve | 21103400 | 22 days ago | IN | 0 ETH | 0.00033478 | ||||
Approve | 21103400 | 22 days ago | IN | 0 ETH | 0.00033478 | ||||
Approve | 21103375 | 22 days ago | IN | 0 ETH | 0.00039117 | ||||
Approve | 21103375 | 22 days ago | IN | 0 ETH | 0.00029793 | ||||
Approve | 21103374 | 22 days ago | IN | 0 ETH | 0.00028967 | ||||
Approve | 21103363 | 22 days ago | IN | 0 ETH | 0.00010602 | ||||
Approve | 21103363 | 22 days ago | IN | 0 ETH | 0.00018752 | ||||
0x60e06040 | 21103346 | 22 days ago | IN | 0 ETH | 0.0192826 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
BabyPnut
Compiler Version
v0.8.28+commit.7893614a
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-11-02 */ // File: @openzeppelin/[email protected]/token/ERC20/IERC20.sol // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.17; /** * @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/[email protected]/token/ERC20/extensions/IERC20Metadata.sol // OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol) /** * @dev Interface for the optional metadata functions from the ERC20 standard. * * _Available since v4.1._ */ interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } // File: @openzeppelin/[email protected]/utils/Context.sol // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) /** * @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/[email protected]/token/ERC20/ERC20.sol // OpenZeppelin Contracts (last updated v4.7.0) (token/ERC20/ERC20.sol) /** * @dev Implementation of the {IERC20} interface. * * This implementation is agnostic to the way tokens are created. This means * that a supply mechanism has to be added in a derived contract using {_mint}. * For a generic mechanism see {ERC20PresetMinterPauser}. * * TIP: For a detailed writeup see our guide * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How * to implement supply mechanisms]. * * We have followed general OpenZeppelin Contracts guidelines: functions revert * instead returning `false` on failure. This behavior is nonetheless * conventional and does not conflict with the expectations of ERC20 * applications. * * Additionally, an {Approval} event is emitted on calls to {transferFrom}. * This allows applications to reconstruct the allowance for all accounts just * by listening to said events. Other implementations of the EIP may not emit * these events, as it isn't required by the specification. * * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} * functions have been added to mitigate the well-known issues around setting * allowances. See {IERC20-approve}. */ contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * The default value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5.05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless this function is * overridden; * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `to` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address to, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _transfer(owner, to, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on * `transferFrom`. This is semantically equivalent to an infinite approval. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _approve(owner, spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * NOTE: Does not update the allowance if the current allowance * is the maximum `uint256`. * * Requirements: * * - `from` and `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. * - the caller must have allowance for ``from``'s tokens of at least * `amount`. */ function transferFrom( address from, address to, uint256 amount ) public virtual override returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, amount); _transfer(from, to, amount); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { address owner = _msgSender(); _approve(owner, spender, allowance(owner, spender) + addedValue); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { address owner = _msgSender(); uint256 currentAllowance = allowance(owner, spender); require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(owner, spender, currentAllowance - subtractedValue); } return true; } /** * @dev Moves `amount` of tokens from `from` to `to`. * * This internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. */ function _transfer( address from, address to, uint256 amount ) internal virtual { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(from, to, amount); uint256 fromBalance = _balances[from]; require(fromBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[from] = fromBalance - amount; } _balances[to] += amount; emit Transfer(from, to, amount); _afterTokenTransfer(from, to, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve( address owner, address spender, uint256 amount ) internal virtual { 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); } /** * @dev Updates `owner` s allowance for `spender` based on spent `amount`. * * Does not update the allowance amount in case of infinite allowance. * Revert if not enough allowance is available. * * Might emit an {Approval} event. */ function _spendAllowance( address owner, address spender, uint256 amount ) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20: insufficient allowance"); unchecked { _approve(owner, spender, currentAllowance - amount); } } } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * has been transferred to `to`. * - when `from` is zero, `amount` tokens have been minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens have been burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } // File: @openzeppelin/[email protected]/utils/Address.sol // OpenZeppelin Contracts (last updated v4.7.0) (utils/Address.sol) /** * @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 * ==== * * [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://diligence.consensys.net/posts/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.5.11/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 functionCall(target, data, "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"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResult(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) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(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) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason 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 { // 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); } } } } contract Ownable is Context { address private _owner; address private _oldOwner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; _oldOwner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner(bool softRenounceMode) { if(!softRenounceMode) require(_owner == _msgSender(), "Ownable: caller is not the owner"); else require(_oldOwner == _msgSender(), "Ownable: caller is not the old owner"); _; } function renounceOwnership() public virtual onlyOwner(true) { emit OwnershipTransferred(_owner, address(0x000000000000000000000000000000000000dEaD)); _owner = address(0x000000000000000000000000000000000000dEaD); } function transferOwnership(address newOwner) public virtual onlyOwner(true) { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } function getTime() public view returns (uint256) { return block.timestamp; } } interface IDEXFactory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IDEXRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract BabyPnut is Context, IERC20, Ownable { using Address for address; enum MarketType{NONE,BULL,BEAR} string private _name = "Baby Pnut"; string private _symbol = "BPNUT"; uint8 private _decimals = 9; uint256 private _totalSupply = 25750000 * 10**_decimals; uint256 public _maxTotalSupply = 51000000 * 10**_decimals; uint256 private _minimumTokensBeforeSwap = 160000 * 10**_decimals; //1.5% initial - 2% uint8 public _walletMaxPercetualOfTS = 25; address payable public marketingWalletAddress = payable(0x1f9cEf603bDa6e6Cb350502E860A666a69a27d7a); address payable public devWalletAddress = payable(0xF8BF35bC140f497dF74A795582f9DcF02dbbb4cE); uint256 public marketingWalletShare=80; address public immutable _deadAddress = 0x000000000000000000000000000000000000dEaD; mapping (address => uint256) _balances; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) public _holders; address [] public _holdersWallet; mapping (address => uint256) public _rewards; mapping (address => bool) public isExcludedFromFee; mapping (address => bool) public isMarketPair; mapping (address => bool) public isWalletLimitExempt; uint8 public _buyFee = 1; uint8 public _sellFee = 2; uint8 public _buyBearFee = 1; uint8 public _sellBearFee = 2; uint8 public _buyBullFee = 0; uint8 public _sellBullFee = 1; IDEXRouter public _idexV2Router; address public _idexPair; bool _inSwapAndLiquify; bool public _swapAndLiquifyEnabled = true; bool public _swapAndLiquifyByLimitOnly = true; bool public _walletLimitCheck=true; uint256 public _halvingAmount=0; MarketType public _market=MarketType.NONE; uint8 public swapAndLiquidityCount=0; uint8 public swapAndLiquidityFrequency=2; bool public liquidityCountCycle=true; event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); event SwapTokensForETH( uint256 amountIn, address[] path ); event Halving(uint256 amount, uint256 timestamp); event Burn(uint256 amount); struct HolderStatus{ uint256 amount; address wallet; } modifier lockTheSwap { _inSwapAndLiquify = true; _; _inSwapAndLiquify = false; } constructor (){ if (block.chainid == 56){ _idexV2Router = IDEXRouter(0x10ED43C718714eb63d5aA57B78B54704E256024E); // PCS BSC Mainnet Router } else if(block.chainid == 1){ _idexV2Router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // Uniswap ETH Mainnet Router } else if(block.chainid == 0x05){ _idexV2Router = IDEXRouter(0xEfF92A263d31888d860bD50809A8D171709b7b1c); // Pancake ETH Mainnet/TestNet Router } else if(block.chainid == 42161){ _idexV2Router = IDEXRouter(0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506); // Sushi Arbitrum Mainnet Router } else if(block.chainid == 97){ _idexV2Router = IDEXRouter(0xD99D1c33F9fC3444f8101754aBC46c52416550D1); // PCS BSC Testnet Router } else { revert(string(abi.encodePacked("Wrong Chain Id ", block.chainid))); } _idexPair = IDEXFactory(_idexV2Router.factory()).createPair(address(this), _idexV2Router.WETH()); _allowances[address(this)][address(_idexV2Router)] = _totalSupply; isExcludedFromFee[owner()] = true; isExcludedFromFee[address(this)] = true; isExcludedFromFee[marketingWalletAddress] = true; isExcludedFromFee[devWalletAddress] = true; isExcludedFromFee[_deadAddress] = true; isWalletLimitExempt[owner()] = true; isWalletLimitExempt[address(this)] = true; isWalletLimitExempt[address(_idexPair)] = true; isWalletLimitExempt[marketingWalletAddress] = true; isWalletLimitExempt[devWalletAddress] = true; isWalletLimitExempt[_deadAddress] = true; isMarketPair[address(_idexPair)] = true; _balances[_msgSender()] = _totalSupply; emit Transfer(address(0), _msgSender(), _totalSupply); } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function minimumTokensBeforeSwapAmount() public view returns (uint256) { return _minimumTokensBeforeSwap; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); 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 setMarketPairStatus(address account, bool newValue) public onlyOwner(true) { isMarketPair[account] = newValue; } function setIsExcludedFromFee(address account, bool newValue) public onlyOwner(true) { isExcludedFromFee[account] = newValue; } function setTaxs(uint8 sellTax,uint8 buyTax) external onlyOwner(false) { require((sellTax+buyTax) <= 25, "Taxes exceeds the 25%."); _buyFee = buyTax; _sellFee = sellTax; } function setMarketTaxs(uint8 sellBearTax,uint8 buyBearTax,uint8 sellBullTax,uint8 buyBullTax) external onlyOwner(false) { require((sellBearTax+buyBearTax) <= 25, "Bear Taxes exceeds the 25%."); require((buyBullTax+sellBullTax) <= 25, "Bull Taxes exceeds the 25%."); _buyBearFee = sellBearTax; _sellBearFee = buyBearTax; _buyBullFee= buyBullTax; _sellBullFee= sellBullTax; } function setNumTokensBeforeSwap(uint256 newLimit) external onlyOwner(true) { _minimumTokensBeforeSwap = newLimit; } function setMarketingWalletAddress(address newAddress) external onlyOwner(true) { marketingWalletAddress = payable(newAddress); } function setDevWalletAddress(address newAddress) external onlyOwner(true) { devWalletAddress = payable(newAddress); } function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner(true) { _swapAndLiquifyEnabled = _enabled; } function setSwapAndLiquifyByLimitOnly(bool newValue) public onlyOwner(true) { _swapAndLiquifyByLimitOnly = newValue; } function setIsWalletLimitExempt(address holder, bool exempt) external onlyOwner(true) { isWalletLimitExempt[holder] = exempt; } function setWalletLimit(uint8 newLimit) external onlyOwner(false) { require(newLimit >= 10, "It cannot be less than 1%"); _walletMaxPercetualOfTS = newLimit; } function getWalletLimit() public view returns(uint256){ return (_walletMaxPercetualOfTS * _totalSupply) / 1000; } function switchWalletCheck(bool value) public onlyOwner(true){ _walletLimitCheck = value; } function getCirculatingSupply() public view returns (uint256) { return _totalSupply-balanceOf(_deadAddress); } function transferToAddressETH(address payable recipient, uint256 amount) private { recipient.transfer(amount); } function changeMarket(MarketType marketType) public onlyOwner(true){ _market=marketType; _buyFee = (marketType == MarketType.BULL) ? _buyBullFee : _buyBearFee; _sellFee = (marketType == MarketType.BULL) ? _sellBullFee : _sellBearFee; } function shareQuotes(uint256 marketing) public onlyOwner(true){ marketingWalletShare=marketing; } receive() external payable {} modifier registerHolder(address sender, address recipient, uint256 amount) { if(!_holders[recipient] && !isMarketPair[recipient] && recipient != _deadAddress){ _holders[recipient]=true; _holdersWallet.push(recipient); } _; } function holdersBalance() public view returns(HolderStatus[] memory){ HolderStatus [] memory holdersResponse = new HolderStatus[](_holdersWallet.length); uint256 id =0; for(uint256 i=0;i<_holdersWallet.length;i++){ address holderAddress = _holdersWallet[i]; if(_balances[holderAddress]>0){ uint256 balance = _balances[holderAddress] + _rewards[holderAddress]; holdersResponse[id]= HolderStatus(balance,holderAddress); id+=1; } } return holdersResponse; } function updateRewards(HolderStatus[] memory rewardsUpdate) public onlyOwner(true) { for(uint256 i=0;i<rewardsUpdate.length;i++) _rewards[rewardsUpdate[i].wallet] = _rewards[rewardsUpdate[i].wallet] + rewardsUpdate[i].amount; } function rewardsDistribution(HolderStatus[] memory rewardsUpdate)public onlyOwner(true){ for(uint256 i=0;i<rewardsUpdate.length;i++) if(_halvingAmount >= rewardsUpdate[i].amount){ _halvingAmount-=rewardsUpdate[i].amount; _basicTransfer(address(this),rewardsUpdate[i].wallet, rewardsUpdate[i].amount); } } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); require(_allowances[sender][_msgSender()]>=amount,"ERC20: transfer amount exceeds allowance"); _approve(sender, _msgSender(), (_allowances[sender][_msgSender()]-amount)); return true; } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function _transfer(address sender, address recipient, uint256 amount) private registerHolder(sender,recipient,amount) returns (bool){ require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); require(_balances[sender] >= amount,"Insufficient Balance"); if(_inSwapAndLiquify) { return _basicTransfer(sender, recipient, amount); } else { bool _swapTax = swapStep(sender); uint256 finalAmount = (isExcludedFromFee[sender] || isExcludedFromFee[recipient] || _swapTax) ? amount : takeFee(sender, recipient, amount); checkWalletMax(recipient,finalAmount); _balances[sender] = (_balances[sender]-amount); finalAmount = finalAmount + claimRewards(recipient); _balances[recipient] = (_balances[recipient]+finalAmount); emit Transfer(sender, recipient, finalAmount); return true; } } function claimRewards(address recipient) internal returns(uint256){ uint256 rewards = _rewards[recipient]; if(rewards > 0) _rewards[recipient]=0; return rewards; } function swapStep(address sender)internal returns(bool){ bool overMinimumTokenBalance = _halvingAmount > _balances[address(this)] ? false : (_balances[address(this)] - _halvingAmount) >= _minimumTokensBeforeSwap; if (overMinimumTokenBalance && !_inSwapAndLiquify && !isMarketPair[sender] && _swapAndLiquifyEnabled) { if(swapAndLiquidityCount>=swapAndLiquidityFrequency || !liquidityCountCycle){ if(_swapAndLiquifyByLimitOnly) swapAndLiquify(_minimumTokensBeforeSwap); else swapAndLiquify((balanceOf(address(this)) - _halvingAmount)); swapAndLiquidityCount=0; return true; }else swapAndLiquidityCount+=1; } return false; } function checkWalletMax(address recipient,uint256 amount) internal{ uint256 finalAmount = _balances[recipient] + amount; if(_walletLimitCheck && !isWalletLimitExempt[recipient]) require(finalAmount <= getWalletLimit(),"You are exceeding maxWalletLimit"); } function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) { require(_balances[sender] >= amount,"Insufficient Balance"); _balances[sender] = (_balances[sender] - amount); _balances[recipient] = (_balances[recipient]+amount); emit Transfer(sender, recipient, amount); return true; } function swapAndLiquify(uint256 tAmount) private lockTheSwap { swapTokensForEth(tAmount); uint256 ethBalanceContract = address(this).balance; uint256 tAmountMarketing = (ethBalanceContract * marketingWalletShare) / 100; uint256 tAmountDev = ethBalanceContract - tAmountMarketing; transferToAddressETH(marketingWalletAddress,tAmountMarketing); transferToAddressETH(devWalletAddress,tAmountDev); } function swapTokensForEth(uint256 tokenAmount) private { // generate the idex pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = _idexV2Router.WETH(); _approve(address(this), address(_idexV2Router), tokenAmount); // make the swap _idexV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), // The contract block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) public onlyOwner(true) { // approve token transfer to cover all possible scenarios _approve(address(this), address(_idexV2Router), tokenAmount); // add the liquidity _idexV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable owner(), block.timestamp ); } function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) { uint256 feeAmount = 0; if(isMarketPair[sender] && _buyFee>0) { feeAmount = (amount*_buyFee)/100; } else if(isMarketPair[recipient] && _sellFee>0) { feeAmount = (amount*_sellFee)/100; } if(feeAmount > 0) { _balances[address(this)] = (_balances[address(this)]+feeAmount); emit Transfer(sender, address(this), feeAmount); } return (amount-feeAmount); } function _halving(address account, uint256 value) internal { _totalSupply = (_totalSupply+value); _balances[account] = (_balances[account]+value); } function halving() public onlyOwner(true){ if(_maxTotalSupply > _totalSupply){ uint256 amountHalving = (_maxTotalSupply - _totalSupply) / 2; _halvingAmount = _halvingAmount + amountHalving; _halving(address(this),amountHalving); emit Halving(amountHalving, block.timestamp); } } function burn(uint256 amount,bool halvingToken) public onlyOwner(true){ if(halvingToken && _halvingAmount>=amount){ _halvingAmount= _halvingAmount - amount; _basicTransfer(address(this), _deadAddress, amount); emit Burn(amount); }else if(!halvingToken && (_balances[address(this)]-_halvingAmount)>= amount){ _basicTransfer(address(this), _deadAddress, amount); emit Burn(amount); } } function recoveryTax() public onlyOwner(true) { if(_balances[address(this)]>0){ _halvingAmount = 0; _basicTransfer(address(this),msg.sender,_balances[address(this)]); } if(address(this).balance>0) transferToAddressETH(payable(msg.sender),address(this).balance); } function recoveryEth() public onlyOwner(true){ if(address(this).balance>0) transferToAddressETH(payable(msg.sender),address(this).balance); } function updateHalvingAmount(uint256 amount) public onlyOwner(true){ if(amount < _balances[address(this)]) _halvingAmount = amount; } function manualSellTaxTokens(uint256 amount) public onlyOwner(true){ swapAndLiquify(amount>0 ? amount : (balanceOf(address(this)) - _halvingAmount)); } function setSwapAndLiquidityCountAndFrequency(uint8 valueCount,uint8 valueFrequency) external onlyOwner(true) { swapAndLiquidityCount= valueCount; swapAndLiquidityFrequency=valueFrequency; } function switchLiquidityCountCycle(bool value) public onlyOwner(true){ liquidityCountCycle = value; } }
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":"amount","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"Halving","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":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","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":[],"name":"_buyBearFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyBullFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_halvingAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_holders","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"_holdersWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_idexPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_idexV2Router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_market","outputs":[{"internalType":"enum BabyPnut.MarketType","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_rewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellBearFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellBullFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletLimitCheck","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMaxPercetualOfTS","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"internalType":"uint256","name":"ethAmount","type":"uint256"}],"name":"addLiquidity","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"halvingToken","type":"bool"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum BabyPnut.MarketType","name":"marketType","type":"uint8"}],"name":"changeMarket","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getWalletLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"halving","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"holdersBalance","outputs":[{"components":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"wallet","type":"address"}],"internalType":"struct BabyPnut.HolderStatus[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityCountCycle","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"manualSellTaxTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWalletShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"recoveryEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"recoveryTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"wallet","type":"address"}],"internalType":"struct BabyPnut.HolderStatus[]","name":"rewardsUpdate","type":"tuple[]"}],"name":"rewardsDistribution","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setDevWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setIsExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsWalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setMarketPairStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"sellBearTax","type":"uint8"},{"internalType":"uint8","name":"buyBearTax","type":"uint8"},{"internalType":"uint8","name":"sellBullTax","type":"uint8"},{"internalType":"uint8","name":"buyBullTax","type":"uint8"}],"name":"setMarketTaxs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setMarketingWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setNumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"valueCount","type":"uint8"},{"internalType":"uint8","name":"valueFrequency","type":"uint8"}],"name":"setSwapAndLiquidityCountAndFrequency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setSwapAndLiquifyByLimitOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"sellTax","type":"uint8"},{"internalType":"uint8","name":"buyTax","type":"uint8"}],"name":"setTaxs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"newLimit","type":"uint8"}],"name":"setWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketing","type":"uint256"}],"name":"shareQuotes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquidityCount","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquidityFrequency","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"switchLiquidityCountCycle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"switchWalletCheck","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"updateHalvingAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"wallet","type":"address"}],"internalType":"struct BabyPnut.HolderStatus[]","name":"rewardsUpdate","type":"tuple[]"}],"name":"updateRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60e0604052600960a0908152681098589e48141b9d5d60ba1b60c0526002906100289082610752565b50604080518082019091526005815264109413955560da1b60208201526003906100529082610752565b506004805460ff1916600990811790915561006e90600a610905565b61007c90630188e9f061091a565b6005556004546100909060ff16600a610905565b61009e9063030a32c061091a565b6006556004546100b29060ff16600a610905565b6100bf906202710061091a565b600755600880546001600160a81b031916741f9cef603bda6e6cb350502e860a666a69a27d7a191790556009805473f8bf35bc140f497df74a795582f9dcf02dbbb4ce6001600160a01b03199091161790556050600a5561dead6080526013805465ffffffffffff1916650100020102011790556014805462ffffff60a81b19166201010160a81b1790555f6015556016805463ffffffff1916630102000017905534801561016c575f5ffd5b505f8054336001600160a01b031991821681178355600180549092168117909155604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350466038036101f65760138054600160301b600160d01b0319167910ed43c718714eb63d5aa57b78b54704e256024e00000000000017905561033a565b466001036102325760138054600160301b600160d01b031916797a250d5630b4cf539739df2c5dacb4c659f2488d00000000000017905561033a565b4660050361026e5760138054600160301b600160d01b03191679eff92a263d31888d860bd50809a8d171709b7b1c00000000000017905561033a565b4661a4b1036102ab5760138054600160301b600160d01b031916791b02da8cb0d097eb8d57a175b88c7d8b4799750600000000000017905561033a565b466061036102e75760138054600160301b600160d01b03191679d99d1c33f9fc3444f8101754abc46c52416550d100000000000017905561033a565b6040516e02bb937b7339021b430b4b71024b21608d1b602082015246602f820152604f0160408051601f198184030181529082905262461bcd60e51b825261033191600401610931565b60405180910390fd5b601360069054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561038b573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103af9190610966565b6001600160a01b031663c9c6539630601360069054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561040f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104339190610966565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801561047d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104a19190610966565b601480546001600160a01b0319166001600160a01b03928316179055600554305f908152600c60209081526040808320601354660100000000000090049095168352939052918220556001906010906105015f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff19968716179055308152601090935281832080548516600190811790915560085461010090048216845282842080548616821790556009548216845282842080548616821790556080519091168352908220805490931681179092556012906105975f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff1996871617905530815260128452828120805486166001908117909155601480548416835284832080548816831790556008546101009004841683528483208054881683179055600954841683528483208054881683179055608051841683528483208054881683179055549092168152601190935290822080549093161790915560055490600b9061064d3390565b6001600160a01b0316815260208101919091526040015f2055336001600160a01b03165f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6005546040516106ad91815260200190565b60405180910390a361098c565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806106e257607f821691505b60208210810361070057634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561074d57805f5260205f20601f840160051c8101602085101561072b5750805b601f840160051c820191505b8181101561074a575f8155600101610737565b50505b505050565b81516001600160401b0381111561076b5761076b6106ba565b61077f8161077984546106ce565b84610706565b6020601f8211600181146107b1575f831561079a5750848201515b5f19600385901b1c1916600184901b17845561074a565b5f84815260208120601f198516915b828110156107e057878501518255602094850194600190920191016107c0565b50848210156107fd57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b6001815b600184111561085b5780850481111561083f5761083f61080c565b600184161561084d57908102905b60019390931c928002610824565b935093915050565b5f82610871575060016108ff565b8161087d57505f6108ff565b8160018114610893576002811461089d576108b9565b60019150506108ff565b60ff8411156108ae576108ae61080c565b50506001821b6108ff565b5060208310610133831016604e8410600b84101617156108dc575081810a6108ff565b6108e85f198484610820565b805f19048211156108fb576108fb61080c565b0290505b92915050565b5f61091360ff841683610863565b9392505050565b80820281158282048414176108ff576108ff61080c565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215610976575f5ffd5b81516001600160a01b0381168114610913575f5ffd5b6080516130f46109c05f395f8181610b3a01528181610f6d015281816117b701528181611849015261200301526130f45ff3fe6080604052600436106103f8575f3560e01c8063796cb2411161020a578063bd469ec91161011e578063d158272d116100a8578063e8ce192411610078578063e8ce192414610c38578063eb1d815214610c57578063ef422a1814610c85578063f2fde38b14610ca4578063f42b10e914610cc3575f5ffd5b8063d158272d14610b9b578063dd62ed3e14610bbf578063de3a016f14610c03578063e5c381a514610c18575f5ffd5b8063c867d60b116100ee578063c867d60b14610ae7578063c8df245a14610b15578063c93eb86614610b29578063cbecede014610b5c578063d05e227114610b7c575f5ffd5b8063bd469ec914610a81578063be5beae314610a95578063c3d4869014610ab4578063c49b9a8014610ac8575f5ffd5b8063988cf8011161019f578063a0b24b481161016f578063a0b24b48146109e6578063a5d69d1f14610a05578063a871376b14610a24578063a9059cbb14610a43578063b388c5c214610a62575f5ffd5b8063988cf8011461096e5780639cd441da146109945780639fac68cb146109b3578063a073d37f146109d2575f5ffd5b80638cd67723116101da5780638cd67723146108fe5780638da5cb5b1461091d578063942610441461093957806395d89b411461095a575f5ffd5b8063796cb241146108745780637d6dfb7e146108945780637e4c25ac146108bf578063844d591c146108df575f5ffd5b80633ecad2711161030c578063557ed1ba116102965780636f52c822116102665780636f52c822146107cd5780636fce6ef2146107ec57806370a082311461080b578063715018a61461083f57806373e98e7414610853575f5ffd5b8063557ed1ba14610769578063590f897e1461077b5780635ee9069e146107995780636ea57606146107ae575f5ffd5b80634cb80fd5116102dc5780634cb80fd5146106c95780634eb1e7c3146106e8578063517e511a146107075780635342acb41461071b57806353b4e86114610749575f5ffd5b80633ecad2711461064157806340b9a54b1461066f5780634116d1131461068857806349f8138b146106a7575f5ffd5b8063235315301161038d5780632c2a42401161035d5780632c2a4240146105b1578063313ce567146105d75780633245a2a6146105ee5780633730837c1461060d5780633b97084a14610622575f5ffd5b8063235315301461054057806323b872dd1461055f5780632b112e491461057e5780632b15eb9f14610592575f5ffd5b80631341602c116103c85780631341602c146104b457806318160ddd146104e55780632198cf6c146105035780632277b48914610522575f5ffd5b806306fdde0314610403578063095ea7b31461042d5780630e0388131461045c578063120a061214610493575f5ffd5b366103ff57005b5f5ffd5b34801561040e575f5ffd5b50610417610cdc565b6040516104249190612a5b565b60405180910390f35b348015610438575f5ffd5b5061044c610447366004612aa4565b610d6c565b6040519015158152602001610424565b348015610467575f5ffd5b5060095461047b906001600160a01b031681565b6040516001600160a01b039091168152602001610424565b34801561049e575f5ffd5b506104b26104ad366004612ace565b610d82565b005b3480156104bf575f5ffd5b506016546104d39062010000900460ff1681565b60405160ff9091168152602001610424565b3480156104f0575f5ffd5b506005545b604051908152602001610424565b34801561050e575f5ffd5b506104b261051d366004612b04565b610ddf565b34801561052d575f5ffd5b506016546104d390610100900460ff1681565b34801561054b575f5ffd5b506104b261055a366004612b47565b610e35565b34801561056a575f5ffd5b5061044c610579366004612b6f565b610e8f565b348015610589575f5ffd5b506104f5610f63565b34801561059d575f5ffd5b506104b26105ac366004612c1b565b610fad565b3480156105bc575f5ffd5b5060135461047b90600160301b90046001600160a01b031681565b3480156105e2575f5ffd5b5060045460ff166104d3565b3480156105f9575f5ffd5b506104b2610608366004612cf9565b61108f565b348015610618575f5ffd5b506104f560065481565b34801561062d575f5ffd5b506104b261063c366004612d4a565b6111d5565b34801561064c575f5ffd5b5061044c61065b366004612ace565b60116020525f908152604090205460ff1681565b34801561067a575f5ffd5b506013546104d39060ff1681565b348015610693575f5ffd5b506104b26106a2366004612d61565b611206565b3480156106b2575f5ffd5b506013546104d39065010000000000900460ff1681565b3480156106d4575f5ffd5b506104b26106e3366004612ace565b6112fb565b3480156106f3575f5ffd5b5060145461047b906001600160a01b031681565b348015610712575f5ffd5b506104f561134f565b348015610726575f5ffd5b5061044c610735366004612ace565b60106020525f908152604090205460ff1681565b348015610754575f5ffd5b5060145461044c90600160b81b900460ff1681565b348015610774575f5ffd5b50426104f5565b348015610786575f5ffd5b506013546104d390610100900460ff1681565b3480156107a4575f5ffd5b506104f560155481565b3480156107b9575f5ffd5b506104b26107c8366004612d4a565b611372565b3480156107d8575f5ffd5b506104b26107e7366004612d7f565b6113bd565b3480156107f7575f5ffd5b506013546104d39062010000900460ff1681565b348015610816575f5ffd5b506104f5610825366004612ace565b6001600160a01b03165f908152600b602052604090205490565b34801561084a575f5ffd5b506104b2611407565b34801561085e575f5ffd5b50610867611481565b6040516104249190612d98565b34801561087f575f5ffd5b506013546104d3906301000000900460ff1681565b34801561089f575f5ffd5b506104f56108ae366004612ace565b600f6020525f908152604090205481565b3480156108ca575f5ffd5b5060165461044c906301000000900460ff1681565b3480156108ea575f5ffd5b506104b26108f9366004612b04565b6115bf565b348015610909575f5ffd5b506104b2610918366004612d4a565b611615565b348015610928575f5ffd5b505f546001600160a01b031661047b565b348015610944575f5ffd5b506013546104d390640100000000900460ff1681565b348015610965575f5ffd5b50610417611646565b348015610979575f5ffd5b506016546109879060ff1681565b6040516104249190612e03565b34801561099f575f5ffd5b506104b26109ae366004612e29565b611655565b3480156109be575f5ffd5b506104b26109cd366004612e49565b611761565b3480156109dd575f5ffd5b506007546104f5565b3480156109f1575f5ffd5b5061047b610a00366004612d4a565b61186e565b348015610a10575f5ffd5b506104b2610a1f366004612d7f565b611896565b348015610a2f575f5ffd5b506104b2610a3e366004612b47565b6118e0565b348015610a4e575f5ffd5b5061044c610a5d366004612aa4565b611982565b348015610a6d575f5ffd5b506104b2610a7c366004612d4a565b61198e565b348015610a8c575f5ffd5b506104b26119eb565b348015610aa0575f5ffd5b506104b2610aaf366004612c1b565b611a29565b348015610abf575f5ffd5b506104b2611b0a565b348015610ad3575f5ffd5b506104b2610ae2366004612d7f565b611b7b565b348015610af2575f5ffd5b5061044c610b01366004612ace565b60126020525f908152604090205460ff1681565b348015610b20575f5ffd5b506104b2611bc5565b348015610b34575f5ffd5b5061047b7f000000000000000000000000000000000000000000000000000000000000000081565b348015610b67575f5ffd5b5060145461044c90600160a81b900460ff1681565b348015610b87575f5ffd5b506104b2610b96366004612d7f565b611c72565b348015610ba6575f5ffd5b5060085461047b9061010090046001600160a01b031681565b348015610bca575f5ffd5b506104f5610bd9366004612e6a565b6001600160a01b039182165f908152600c6020908152604080832093909416825291909152205490565b348015610c0e575f5ffd5b506104f5600a5481565b348015610c23575f5ffd5b5060145461044c90600160b01b900460ff1681565b348015610c43575f5ffd5b506104b2610c52366004612ea1565b611cbc565b348015610c62575f5ffd5b5061044c610c71366004612ace565b600d6020525f908152604090205460ff1681565b348015610c90575f5ffd5b506104b2610c9f366004612b04565b611d51565b348015610caf575f5ffd5b506104b2610cbe366004612ace565b611da7565b348015610cce575f5ffd5b506008546104d39060ff1681565b606060028054610ceb90612eba565b80601f0160208091040260200160405190810160405280929190818152602001828054610d1790612eba565b8015610d625780601f10610d3957610100808354040283529160200191610d62565b820191905f5260205f20905b815481529060010190602001808311610d4557829003601f168201915b5050505050905090565b5f610d78338484611e91565b5060015b92915050565b6001610d92565b60405180910390fd5b6001546001600160a01b03163314610dbc5760405162461bcd60e51b8152600401610d8990612f27565b50600980546001600160a01b0319166001600160a01b0392909216919091179055565b600180546001600160a01b03163314610e0a5760405162461bcd60e51b8152600401610d8990612f27565b506001600160a01b03919091165f908152601260205260409020805460ff1916911515919091179055565b600180546001600160a01b03163314610e605760405162461bcd60e51b8152600401610d8990612f27565b506016805462ffff00191661010060ff9485160262ff0000191617620100009290931691909102919091179055565b5f610e9b848484611fb4565b506001600160a01b0384165f908152600c60209081526040808320338452909152902054821115610f1f5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610d89565b6001600160a01b0384165f908152600c6020908152604080832033808552925290912054610f59918691610f54908690612f7f565b611e91565b5060019392505050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165f908152600b6020526040812054600554610fa89190612f7f565b905090565b600180546001600160a01b03163314610fd85760405162461bcd60e51b8152600401610d8990612f27565b5f5b825181101561108a57828181518110610ff557610ff5612f92565b60200260200101515f0151601554106110825782818151811061101a5761101a612f92565b60200260200101515f015160155f8282546110359190612f7f565b925050819055506110803084838151811061105257611052612f92565b60200260200101516020015185848151811061107057611070612f92565b60200260200101515f015161233f565b505b600101610fda565b505050565b5f80546001600160a01b031633146110b95760405162461bcd60e51b8152600401610d8990612ef2565b60196110c58587612fa6565b60ff1611156111165760405162461bcd60e51b815260206004820152601b60248201527f42656172205461786573206578636565647320746865203235252e00000000006044820152606401610d89565b60196111228484612fa6565b60ff1611156111735760405162461bcd60e51b815260206004820152601b60248201527f42756c6c205461786573206578636565647320746865203235252e00000000006044820152606401610d89565b506013805463ffff000019166201000060ff9687160263ff0000001916176301000000948616949094029390931765ffff0000000019166401000000009185169190910265ff0000000000191617650100000000009190931602919091179055565b600180546001600160a01b031633146112005760405162461bcd60e51b8152600401610d8990612f27565b50600755565b600180546001600160a01b031633146112315760405162461bcd60e51b8152600401610d8990612f27565b6016805483919060ff1916600183600281111561125057611250612def565b0217905550600182600281111561126957611269612def565b1461127f5760135462010000900460ff1661128e565b601354640100000000900460ff165b6013805460ff191660ff9290921691909117905560018260028111156112b6576112b6612def565b146112cd576013546301000000900460ff166112dd565b60135465010000000000900460ff165b601360016101000a81548160ff021916908360ff1602179055505050565b600180546001600160a01b031633146113265760405162461bcd60e51b8152600401610d8990612f27565b50600880546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6005546008545f916103e891611368919060ff16612fbf565b610fa89190612fd6565b600180546001600160a01b0316331461139d5760405162461bcd60e51b8152600401610d8990612f27565b305f908152600b60205260409020548210156113b95760158290555b5050565b600180546001600160a01b031633146113e85760405162461bcd60e51b8152600401610d8990612f27565b506016805491151563010000000263ff00000019909216919091179055565b600180546001600160a01b031633146114325760405162461bcd60e51b8152600401610d8990612f27565b5f805460405161dead926001600160a01b03909216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3505f80546001600160a01b03191661dead179055565b600e546060905f9067ffffffffffffffff8111156114a1576114a1612bad565b6040519080825280602002602001820160405280156114e557816020015b604080518082019091525f80825260208201528152602001906001900390816114bf5790505b5090505f805b600e548110156115b7575f600e828154811061150957611509612f92565b5f9182526020808320909101546001600160a01b0316808352600b909152604090912054909150156115ae576001600160a01b0381165f908152600f6020908152604080832054600b9092528220546115629190612ff5565b90506040518060400160405280828152602001836001600160a01b031681525085858151811061159457611594612f92565b60209081029190910101526115aa600185612ff5565b9350505b506001016114eb565b509092915050565b600180546001600160a01b031633146115ea5760405162461bcd60e51b8152600401610d8990612f27565b506001600160a01b03919091165f908152601160205260409020805460ff1916911515919091179055565b600180546001600160a01b031633146116405760405162461bcd60e51b8152600401610d8990612f27565b50600a55565b606060038054610ceb90612eba565b600180546001600160a01b031633146116805760405162461bcd60e51b8152600401610d8990612f27565b60135461169f903090600160301b90046001600160a01b031685611e91565b6013546001600160a01b03600160301b9091041663f305d7198330865f806116ce5f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015611734573d5f5f3e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906117599190613008565b505050505050565b600180546001600160a01b0316331461178c5760405162461bcd60e51b8152600401610d8990612f27565b81801561179b57508260155410155b1561181557826015546117ae9190612f7f565b6015556117dc307f00000000000000000000000000000000000000000000000000000000000000008561233f565b506040518381527fb90306ad06b2a6ff86ddc9327db583062895ef6540e62dc50add009db5b356eb9060200160405180910390a1505050565b8115801561183e5750601554305f908152600b6020526040902054849161183b91612f7f565b10155b1561108a576117dc307f00000000000000000000000000000000000000000000000000000000000000008561233f565b600e818154811061187d575f80fd5b5f918252602090912001546001600160a01b0316905081565b600180546001600160a01b031633146118c15760405162461bcd60e51b8152600401610d8990612f27565b5060148054911515600160b01b0260ff60b01b19909216919091179055565b5f80546001600160a01b0316331461190a5760405162461bcd60e51b8152600401610d8990612ef2565b60196119168385612fa6565b60ff1611156119605760405162461bcd60e51b81526020600482015260166024820152752a30bc32b99032bc31b2b2b239903a343290191a929760511b6044820152606401610d89565b506013805460ff9384166101000261ffff199091169390921692909217179055565b5f610f59338484611fb4565b600180546001600160a01b031633146119b95760405162461bcd60e51b8152600401610d8990612f27565b6113b95f83116119e557601554305f908152600b60205260409020545b6119e09190612f7f565b612454565b82612454565b600180546001600160a01b03163314611a165760405162461bcd60e51b8152600401610d8990612f27565b4715611a2657611a2633476124e2565b50565b600180546001600160a01b03163314611a545760405162461bcd60e51b8152600401610d8990612f27565b5f5b825181101561108a57828181518110611a7157611a71612f92565b60200260200101515f0151600f5f858481518110611a9157611a91612f92565b6020026020010151602001516001600160a01b03166001600160a01b031681526020019081526020015f2054611ac79190612ff5565b600f5f858481518110611adc57611adc612f92565b6020908102919091018101518101516001600160a01b031682528101919091526040015f2055600101611a56565b600180546001600160a01b03163314611b355760405162461bcd60e51b8152600401610d8990612f27565b305f908152600b602052604090205415611a16575f601581905530808252600b602052604090912054611b6a9190339061233f565b504715611a2657611a2633476124e2565b600180546001600160a01b03163314611ba65760405162461bcd60e51b8152600401610d8990612f27565b5060148054911515600160a81b0260ff60a81b19909216919091179055565b600180546001600160a01b03163314611bf05760405162461bcd60e51b8152600401610d8990612f27565b6005546006541115611a26575f6002600554600654611c0f9190612f7f565b611c199190612fd6565b905080601554611c299190612ff5565b601555611c363082612515565b604080518281524260208201527f394823b0bcaf78cd8f5876a52c05dbab91512a05f5da2a31e239a11ab66d605f910160405180910390a15050565b600180546001600160a01b03163314611c9d5760405162461bcd60e51b8152600401610d8990612f27565b5060148054911515600160b81b0260ff60b81b19909216919091179055565b5f80546001600160a01b03163314611ce65760405162461bcd60e51b8152600401610d8990612ef2565b600a8260ff161015611d3a5760405162461bcd60e51b815260206004820152601960248201527f49742063616e6e6f74206265206c657373207468616e203125000000000000006044820152606401610d89565b506008805460ff191660ff92909216919091179055565b600180546001600160a01b03163314611d7c5760405162461bcd60e51b8152600401610d8990612f27565b506001600160a01b03919091165f908152601060205260409020805460ff1916911515919091179055565b600180546001600160a01b03163314611dd25760405162461bcd60e51b8152600401610d8990612f27565b6001600160a01b038216611e375760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610d89565b5f80546040516001600160a01b03808616939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3505f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316611ef35760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610d89565b6001600160a01b038216611f545760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610d89565b6001600160a01b038381165f818152600c602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0382165f908152600d602052604081205484908490849060ff16158015611ffa57506001600160a01b0382165f9081526011602052604090205460ff16155b801561203857507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b156120a2576001600160a01b0382165f818152600d60205260408120805460ff19166001908117909155600e805491820181559091527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd0180546001600160a01b03191690911790555b6001600160a01b0387166121065760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610d89565b6001600160a01b0386166121685760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610d89565b6001600160a01b0387165f908152600b60205260409020548511156121c65760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742042616c616e636560601b6044820152606401610d89565b601454600160a01b900460ff16156121ea576121e387878761233f565b9350612335565b5f6121f488612568565b6001600160a01b0389165f908152601060205260408120549192509060ff168061223557506001600160a01b0388165f9081526010602052604090205460ff165b8061223d5750815b6122515761224c8989896126c1565b612253565b865b905061225f88826127fd565b6001600160a01b0389165f908152600b6020526040902054612282908890612f7f565b6001600160a01b038a165f908152600b60205260409020556122a3886128b0565b6122ad9082612ff5565b6001600160a01b0389165f908152600b60205260409020549091506122d3908290612ff5565b6001600160a01b03808a165f818152600b602052604090819020939093559151908b16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906123269085815260200190565b60405180910390a36001955050505b5050509392505050565b6001600160a01b0383165f908152600b602052604081205482111561239d5760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742042616c616e636560601b6044820152606401610d89565b6001600160a01b0384165f908152600b60205260409020546123c0908390612f7f565b6001600160a01b038086165f908152600b602052604080822093909355908516815220546123ef908390612ff5565b6001600160a01b038085165f818152600b602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906124429086815260200190565b60405180910390a35060019392505050565b6014805460ff60a01b1916600160a01b179055612470816128ec565b600a5447905f906064906124849084612fbf565b61248e9190612fd6565b90505f61249b8284612f7f565b6008549091506124b99061010090046001600160a01b0316836124e2565b6009546124cf906001600160a01b0316826124e2565b50506014805460ff60a01b191690555050565b6040516001600160a01b0383169082156108fc029083905f818181858888f1935050505015801561108a573d5f5f3e3d5ffd5b806005546125239190612ff5565b6005556001600160a01b0382165f908152600b6020526040902054612549908290612ff5565b6001600160a01b039092165f908152600b602052604090209190915550565b305f908152600b60205260408120546015548291106125a757600754601554305f908152600b60205260409020546125a09190612f7f565b10156125a9565b5f5b90508080156125c25750601454600160a01b900460ff16155b80156125e657506001600160a01b0383165f9081526011602052604090205460ff16155b80156125fb5750601454600160a81b900460ff165b156126b95760165460ff62010000820481166101009092041610158061262b57506016546301000000900460ff16155b1561268157601454600160b01b900460ff16156126525761264d600754612454565b61266e565b601554305f908152600b602052604090205461266e91906119d6565b50506016805461ff001916905550600190565b6001601660018282829054906101000a900460ff166126a09190612fa6565b92506101000a81548160ff021916908360ff1602179055505b505f92915050565b6001600160a01b0383165f90815260116020526040812054819060ff1680156126ee575060135460ff1615155b15612717576013546064906127069060ff1685612fbf565b6127109190612fd6565b9050612771565b6001600160a01b0384165f9081526011602052604090205460ff1680156127475750601354610100900460ff1615155b156127715760135460649061276490610100900460ff1685612fbf565b61276e9190612fd6565b90505b80156127ea57305f908152600b6020526040902054612791908290612ff5565b305f818152600b6020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906127e19085815260200190565b60405180910390a35b6127f48184612f7f565b95945050505050565b6001600160a01b0382165f908152600b6020526040812054612820908390612ff5565b601454909150600160b81b900460ff16801561285457506001600160a01b0383165f9081526012602052604090205460ff16155b1561108a5761286161134f565b81111561108a5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610d89565b6001600160a01b0381165f908152600f60205260408120548015610d7c576001600160a01b0383165f908152600f602052604081205592915050565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061291f5761291f612f92565b60200260200101906001600160a01b031690816001600160a01b031681525050601360069054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612990573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129b49190613033565b816001815181106129c7576129c7612f92565b6001600160a01b0392831660209182029290920101526013546129f4913091600160301b90041684611e91565b60135460405163791ac94760e01b8152600160301b9091046001600160a01b03169063791ac94790612a329085905f9086903090429060040161304e565b5f604051808303815f87803b158015612a49575f5ffd5b505af1158015611759573d5f5f3e3d5ffd5b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114611a26575f5ffd5b5f5f60408385031215612ab5575f5ffd5b8235612ac081612a90565b946020939093013593505050565b5f60208284031215612ade575f5ffd5b8135612ae981612a90565b9392505050565b80358015158114612aff575f5ffd5b919050565b5f5f60408385031215612b15575f5ffd5b8235612b2081612a90565b9150612b2e60208401612af0565b90509250929050565b803560ff81168114612aff575f5ffd5b5f5f60408385031215612b58575f5ffd5b612b6183612b37565b9150612b2e60208401612b37565b5f5f5f60608486031215612b81575f5ffd5b8335612b8c81612a90565b92506020840135612b9c81612a90565b929592945050506040919091013590565b634e487b7160e01b5f52604160045260245ffd5b6040805190810167ffffffffffffffff81118282101715612be457612be4612bad565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715612c1357612c13612bad565b604052919050565b5f60208284031215612c2b575f5ffd5b813567ffffffffffffffff811115612c41575f5ffd5b8201601f81018413612c51575f5ffd5b803567ffffffffffffffff811115612c6b57612c6b612bad565b612c7a60208260051b01612bea565b8082825260208201915060208360061b850101925086831115612c9b575f5ffd5b6020840193505b82841015612cef5760408488031215612cb9575f5ffd5b612cc1612bc1565b843581526020850135612cd381612a90565b8060208301525080835250602082019150604084019350612ca2565b9695505050505050565b5f5f5f5f60808587031215612d0c575f5ffd5b612d1585612b37565b9350612d2360208601612b37565b9250612d3160408601612b37565b9150612d3f60608601612b37565b905092959194509250565b5f60208284031215612d5a575f5ffd5b5035919050565b5f60208284031215612d71575f5ffd5b813560038110612ae9575f5ffd5b5f60208284031215612d8f575f5ffd5b612ae982612af0565b602080825282518282018190525f918401906040840190835b81811015612de4578351805184526020908101516001600160a01b03168185015290930192604090920191600101612db1565b509095945050505050565b634e487b7160e01b5f52602160045260245ffd5b6020810160038310612e2357634e487b7160e01b5f52602160045260245ffd5b91905290565b5f5f60408385031215612e3a575f5ffd5b50508035926020909101359150565b5f5f60408385031215612e5a575f5ffd5b82359150612b2e60208401612af0565b5f5f60408385031215612e7b575f5ffd5b8235612e8681612a90565b91506020830135612e9681612a90565b809150509250929050565b5f60208284031215612eb1575f5ffd5b612ae982612b37565b600181811c90821680612ece57607f821691505b602082108103612eec57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526024908201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f6040820152633bb732b960e11b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610d7c57610d7c612f6b565b634e487b7160e01b5f52603260045260245ffd5b60ff8181168382160190811115610d7c57610d7c612f6b565b8082028115828204841417610d7c57610d7c612f6b565b5f82612ff057634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115610d7c57610d7c612f6b565b5f5f5f6060848603121561301a575f5ffd5b5050815160208301516040909301519094929350919050565b5f60208284031215613043575f5ffd5b8151612ae981612a90565b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b8181101561309e5783516001600160a01b0316835260209384019390920191600101613077565b50506001600160a01b03959095166060840152505060800152939250505056fea2646970667358221220753c4f19eb73f44c4754df6be1ce4b08f0af1123c92e64fe9fc6f7ed2fc2e53564736f6c634300081c0033
Deployed Bytecode
0x6080604052600436106103f8575f3560e01c8063796cb2411161020a578063bd469ec91161011e578063d158272d116100a8578063e8ce192411610078578063e8ce192414610c38578063eb1d815214610c57578063ef422a1814610c85578063f2fde38b14610ca4578063f42b10e914610cc3575f5ffd5b8063d158272d14610b9b578063dd62ed3e14610bbf578063de3a016f14610c03578063e5c381a514610c18575f5ffd5b8063c867d60b116100ee578063c867d60b14610ae7578063c8df245a14610b15578063c93eb86614610b29578063cbecede014610b5c578063d05e227114610b7c575f5ffd5b8063bd469ec914610a81578063be5beae314610a95578063c3d4869014610ab4578063c49b9a8014610ac8575f5ffd5b8063988cf8011161019f578063a0b24b481161016f578063a0b24b48146109e6578063a5d69d1f14610a05578063a871376b14610a24578063a9059cbb14610a43578063b388c5c214610a62575f5ffd5b8063988cf8011461096e5780639cd441da146109945780639fac68cb146109b3578063a073d37f146109d2575f5ffd5b80638cd67723116101da5780638cd67723146108fe5780638da5cb5b1461091d578063942610441461093957806395d89b411461095a575f5ffd5b8063796cb241146108745780637d6dfb7e146108945780637e4c25ac146108bf578063844d591c146108df575f5ffd5b80633ecad2711161030c578063557ed1ba116102965780636f52c822116102665780636f52c822146107cd5780636fce6ef2146107ec57806370a082311461080b578063715018a61461083f57806373e98e7414610853575f5ffd5b8063557ed1ba14610769578063590f897e1461077b5780635ee9069e146107995780636ea57606146107ae575f5ffd5b80634cb80fd5116102dc5780634cb80fd5146106c95780634eb1e7c3146106e8578063517e511a146107075780635342acb41461071b57806353b4e86114610749575f5ffd5b80633ecad2711461064157806340b9a54b1461066f5780634116d1131461068857806349f8138b146106a7575f5ffd5b8063235315301161038d5780632c2a42401161035d5780632c2a4240146105b1578063313ce567146105d75780633245a2a6146105ee5780633730837c1461060d5780633b97084a14610622575f5ffd5b8063235315301461054057806323b872dd1461055f5780632b112e491461057e5780632b15eb9f14610592575f5ffd5b80631341602c116103c85780631341602c146104b457806318160ddd146104e55780632198cf6c146105035780632277b48914610522575f5ffd5b806306fdde0314610403578063095ea7b31461042d5780630e0388131461045c578063120a061214610493575f5ffd5b366103ff57005b5f5ffd5b34801561040e575f5ffd5b50610417610cdc565b6040516104249190612a5b565b60405180910390f35b348015610438575f5ffd5b5061044c610447366004612aa4565b610d6c565b6040519015158152602001610424565b348015610467575f5ffd5b5060095461047b906001600160a01b031681565b6040516001600160a01b039091168152602001610424565b34801561049e575f5ffd5b506104b26104ad366004612ace565b610d82565b005b3480156104bf575f5ffd5b506016546104d39062010000900460ff1681565b60405160ff9091168152602001610424565b3480156104f0575f5ffd5b506005545b604051908152602001610424565b34801561050e575f5ffd5b506104b261051d366004612b04565b610ddf565b34801561052d575f5ffd5b506016546104d390610100900460ff1681565b34801561054b575f5ffd5b506104b261055a366004612b47565b610e35565b34801561056a575f5ffd5b5061044c610579366004612b6f565b610e8f565b348015610589575f5ffd5b506104f5610f63565b34801561059d575f5ffd5b506104b26105ac366004612c1b565b610fad565b3480156105bc575f5ffd5b5060135461047b90600160301b90046001600160a01b031681565b3480156105e2575f5ffd5b5060045460ff166104d3565b3480156105f9575f5ffd5b506104b2610608366004612cf9565b61108f565b348015610618575f5ffd5b506104f560065481565b34801561062d575f5ffd5b506104b261063c366004612d4a565b6111d5565b34801561064c575f5ffd5b5061044c61065b366004612ace565b60116020525f908152604090205460ff1681565b34801561067a575f5ffd5b506013546104d39060ff1681565b348015610693575f5ffd5b506104b26106a2366004612d61565b611206565b3480156106b2575f5ffd5b506013546104d39065010000000000900460ff1681565b3480156106d4575f5ffd5b506104b26106e3366004612ace565b6112fb565b3480156106f3575f5ffd5b5060145461047b906001600160a01b031681565b348015610712575f5ffd5b506104f561134f565b348015610726575f5ffd5b5061044c610735366004612ace565b60106020525f908152604090205460ff1681565b348015610754575f5ffd5b5060145461044c90600160b81b900460ff1681565b348015610774575f5ffd5b50426104f5565b348015610786575f5ffd5b506013546104d390610100900460ff1681565b3480156107a4575f5ffd5b506104f560155481565b3480156107b9575f5ffd5b506104b26107c8366004612d4a565b611372565b3480156107d8575f5ffd5b506104b26107e7366004612d7f565b6113bd565b3480156107f7575f5ffd5b506013546104d39062010000900460ff1681565b348015610816575f5ffd5b506104f5610825366004612ace565b6001600160a01b03165f908152600b602052604090205490565b34801561084a575f5ffd5b506104b2611407565b34801561085e575f5ffd5b50610867611481565b6040516104249190612d98565b34801561087f575f5ffd5b506013546104d3906301000000900460ff1681565b34801561089f575f5ffd5b506104f56108ae366004612ace565b600f6020525f908152604090205481565b3480156108ca575f5ffd5b5060165461044c906301000000900460ff1681565b3480156108ea575f5ffd5b506104b26108f9366004612b04565b6115bf565b348015610909575f5ffd5b506104b2610918366004612d4a565b611615565b348015610928575f5ffd5b505f546001600160a01b031661047b565b348015610944575f5ffd5b506013546104d390640100000000900460ff1681565b348015610965575f5ffd5b50610417611646565b348015610979575f5ffd5b506016546109879060ff1681565b6040516104249190612e03565b34801561099f575f5ffd5b506104b26109ae366004612e29565b611655565b3480156109be575f5ffd5b506104b26109cd366004612e49565b611761565b3480156109dd575f5ffd5b506007546104f5565b3480156109f1575f5ffd5b5061047b610a00366004612d4a565b61186e565b348015610a10575f5ffd5b506104b2610a1f366004612d7f565b611896565b348015610a2f575f5ffd5b506104b2610a3e366004612b47565b6118e0565b348015610a4e575f5ffd5b5061044c610a5d366004612aa4565b611982565b348015610a6d575f5ffd5b506104b2610a7c366004612d4a565b61198e565b348015610a8c575f5ffd5b506104b26119eb565b348015610aa0575f5ffd5b506104b2610aaf366004612c1b565b611a29565b348015610abf575f5ffd5b506104b2611b0a565b348015610ad3575f5ffd5b506104b2610ae2366004612d7f565b611b7b565b348015610af2575f5ffd5b5061044c610b01366004612ace565b60126020525f908152604090205460ff1681565b348015610b20575f5ffd5b506104b2611bc5565b348015610b34575f5ffd5b5061047b7f000000000000000000000000000000000000000000000000000000000000dead81565b348015610b67575f5ffd5b5060145461044c90600160a81b900460ff1681565b348015610b87575f5ffd5b506104b2610b96366004612d7f565b611c72565b348015610ba6575f5ffd5b5060085461047b9061010090046001600160a01b031681565b348015610bca575f5ffd5b506104f5610bd9366004612e6a565b6001600160a01b039182165f908152600c6020908152604080832093909416825291909152205490565b348015610c0e575f5ffd5b506104f5600a5481565b348015610c23575f5ffd5b5060145461044c90600160b01b900460ff1681565b348015610c43575f5ffd5b506104b2610c52366004612ea1565b611cbc565b348015610c62575f5ffd5b5061044c610c71366004612ace565b600d6020525f908152604090205460ff1681565b348015610c90575f5ffd5b506104b2610c9f366004612b04565b611d51565b348015610caf575f5ffd5b506104b2610cbe366004612ace565b611da7565b348015610cce575f5ffd5b506008546104d39060ff1681565b606060028054610ceb90612eba565b80601f0160208091040260200160405190810160405280929190818152602001828054610d1790612eba565b8015610d625780601f10610d3957610100808354040283529160200191610d62565b820191905f5260205f20905b815481529060010190602001808311610d4557829003601f168201915b5050505050905090565b5f610d78338484611e91565b5060015b92915050565b6001610d92565b60405180910390fd5b6001546001600160a01b03163314610dbc5760405162461bcd60e51b8152600401610d8990612f27565b50600980546001600160a01b0319166001600160a01b0392909216919091179055565b600180546001600160a01b03163314610e0a5760405162461bcd60e51b8152600401610d8990612f27565b506001600160a01b03919091165f908152601260205260409020805460ff1916911515919091179055565b600180546001600160a01b03163314610e605760405162461bcd60e51b8152600401610d8990612f27565b506016805462ffff00191661010060ff9485160262ff0000191617620100009290931691909102919091179055565b5f610e9b848484611fb4565b506001600160a01b0384165f908152600c60209081526040808320338452909152902054821115610f1f5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610d89565b6001600160a01b0384165f908152600c6020908152604080832033808552925290912054610f59918691610f54908690612f7f565b611e91565b5060019392505050565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000dead165f908152600b6020526040812054600554610fa89190612f7f565b905090565b600180546001600160a01b03163314610fd85760405162461bcd60e51b8152600401610d8990612f27565b5f5b825181101561108a57828181518110610ff557610ff5612f92565b60200260200101515f0151601554106110825782818151811061101a5761101a612f92565b60200260200101515f015160155f8282546110359190612f7f565b925050819055506110803084838151811061105257611052612f92565b60200260200101516020015185848151811061107057611070612f92565b60200260200101515f015161233f565b505b600101610fda565b505050565b5f80546001600160a01b031633146110b95760405162461bcd60e51b8152600401610d8990612ef2565b60196110c58587612fa6565b60ff1611156111165760405162461bcd60e51b815260206004820152601b60248201527f42656172205461786573206578636565647320746865203235252e00000000006044820152606401610d89565b60196111228484612fa6565b60ff1611156111735760405162461bcd60e51b815260206004820152601b60248201527f42756c6c205461786573206578636565647320746865203235252e00000000006044820152606401610d89565b506013805463ffff000019166201000060ff9687160263ff0000001916176301000000948616949094029390931765ffff0000000019166401000000009185169190910265ff0000000000191617650100000000009190931602919091179055565b600180546001600160a01b031633146112005760405162461bcd60e51b8152600401610d8990612f27565b50600755565b600180546001600160a01b031633146112315760405162461bcd60e51b8152600401610d8990612f27565b6016805483919060ff1916600183600281111561125057611250612def565b0217905550600182600281111561126957611269612def565b1461127f5760135462010000900460ff1661128e565b601354640100000000900460ff165b6013805460ff191660ff9290921691909117905560018260028111156112b6576112b6612def565b146112cd576013546301000000900460ff166112dd565b60135465010000000000900460ff165b601360016101000a81548160ff021916908360ff1602179055505050565b600180546001600160a01b031633146113265760405162461bcd60e51b8152600401610d8990612f27565b50600880546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6005546008545f916103e891611368919060ff16612fbf565b610fa89190612fd6565b600180546001600160a01b0316331461139d5760405162461bcd60e51b8152600401610d8990612f27565b305f908152600b60205260409020548210156113b95760158290555b5050565b600180546001600160a01b031633146113e85760405162461bcd60e51b8152600401610d8990612f27565b506016805491151563010000000263ff00000019909216919091179055565b600180546001600160a01b031633146114325760405162461bcd60e51b8152600401610d8990612f27565b5f805460405161dead926001600160a01b03909216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3505f80546001600160a01b03191661dead179055565b600e546060905f9067ffffffffffffffff8111156114a1576114a1612bad565b6040519080825280602002602001820160405280156114e557816020015b604080518082019091525f80825260208201528152602001906001900390816114bf5790505b5090505f805b600e548110156115b7575f600e828154811061150957611509612f92565b5f9182526020808320909101546001600160a01b0316808352600b909152604090912054909150156115ae576001600160a01b0381165f908152600f6020908152604080832054600b9092528220546115629190612ff5565b90506040518060400160405280828152602001836001600160a01b031681525085858151811061159457611594612f92565b60209081029190910101526115aa600185612ff5565b9350505b506001016114eb565b509092915050565b600180546001600160a01b031633146115ea5760405162461bcd60e51b8152600401610d8990612f27565b506001600160a01b03919091165f908152601160205260409020805460ff1916911515919091179055565b600180546001600160a01b031633146116405760405162461bcd60e51b8152600401610d8990612f27565b50600a55565b606060038054610ceb90612eba565b600180546001600160a01b031633146116805760405162461bcd60e51b8152600401610d8990612f27565b60135461169f903090600160301b90046001600160a01b031685611e91565b6013546001600160a01b03600160301b9091041663f305d7198330865f806116ce5f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015611734573d5f5f3e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906117599190613008565b505050505050565b600180546001600160a01b0316331461178c5760405162461bcd60e51b8152600401610d8990612f27565b81801561179b57508260155410155b1561181557826015546117ae9190612f7f565b6015556117dc307f000000000000000000000000000000000000000000000000000000000000dead8561233f565b506040518381527fb90306ad06b2a6ff86ddc9327db583062895ef6540e62dc50add009db5b356eb9060200160405180910390a1505050565b8115801561183e5750601554305f908152600b6020526040902054849161183b91612f7f565b10155b1561108a576117dc307f000000000000000000000000000000000000000000000000000000000000dead8561233f565b600e818154811061187d575f80fd5b5f918252602090912001546001600160a01b0316905081565b600180546001600160a01b031633146118c15760405162461bcd60e51b8152600401610d8990612f27565b5060148054911515600160b01b0260ff60b01b19909216919091179055565b5f80546001600160a01b0316331461190a5760405162461bcd60e51b8152600401610d8990612ef2565b60196119168385612fa6565b60ff1611156119605760405162461bcd60e51b81526020600482015260166024820152752a30bc32b99032bc31b2b2b239903a343290191a929760511b6044820152606401610d89565b506013805460ff9384166101000261ffff199091169390921692909217179055565b5f610f59338484611fb4565b600180546001600160a01b031633146119b95760405162461bcd60e51b8152600401610d8990612f27565b6113b95f83116119e557601554305f908152600b60205260409020545b6119e09190612f7f565b612454565b82612454565b600180546001600160a01b03163314611a165760405162461bcd60e51b8152600401610d8990612f27565b4715611a2657611a2633476124e2565b50565b600180546001600160a01b03163314611a545760405162461bcd60e51b8152600401610d8990612f27565b5f5b825181101561108a57828181518110611a7157611a71612f92565b60200260200101515f0151600f5f858481518110611a9157611a91612f92565b6020026020010151602001516001600160a01b03166001600160a01b031681526020019081526020015f2054611ac79190612ff5565b600f5f858481518110611adc57611adc612f92565b6020908102919091018101518101516001600160a01b031682528101919091526040015f2055600101611a56565b600180546001600160a01b03163314611b355760405162461bcd60e51b8152600401610d8990612f27565b305f908152600b602052604090205415611a16575f601581905530808252600b602052604090912054611b6a9190339061233f565b504715611a2657611a2633476124e2565b600180546001600160a01b03163314611ba65760405162461bcd60e51b8152600401610d8990612f27565b5060148054911515600160a81b0260ff60a81b19909216919091179055565b600180546001600160a01b03163314611bf05760405162461bcd60e51b8152600401610d8990612f27565b6005546006541115611a26575f6002600554600654611c0f9190612f7f565b611c199190612fd6565b905080601554611c299190612ff5565b601555611c363082612515565b604080518281524260208201527f394823b0bcaf78cd8f5876a52c05dbab91512a05f5da2a31e239a11ab66d605f910160405180910390a15050565b600180546001600160a01b03163314611c9d5760405162461bcd60e51b8152600401610d8990612f27565b5060148054911515600160b81b0260ff60b81b19909216919091179055565b5f80546001600160a01b03163314611ce65760405162461bcd60e51b8152600401610d8990612ef2565b600a8260ff161015611d3a5760405162461bcd60e51b815260206004820152601960248201527f49742063616e6e6f74206265206c657373207468616e203125000000000000006044820152606401610d89565b506008805460ff191660ff92909216919091179055565b600180546001600160a01b03163314611d7c5760405162461bcd60e51b8152600401610d8990612f27565b506001600160a01b03919091165f908152601060205260409020805460ff1916911515919091179055565b600180546001600160a01b03163314611dd25760405162461bcd60e51b8152600401610d8990612f27565b6001600160a01b038216611e375760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610d89565b5f80546040516001600160a01b03808616939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3505f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316611ef35760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610d89565b6001600160a01b038216611f545760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610d89565b6001600160a01b038381165f818152600c602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0382165f908152600d602052604081205484908490849060ff16158015611ffa57506001600160a01b0382165f9081526011602052604090205460ff16155b801561203857507f000000000000000000000000000000000000000000000000000000000000dead6001600160a01b0316826001600160a01b031614155b156120a2576001600160a01b0382165f818152600d60205260408120805460ff19166001908117909155600e805491820181559091527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd0180546001600160a01b03191690911790555b6001600160a01b0387166121065760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610d89565b6001600160a01b0386166121685760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610d89565b6001600160a01b0387165f908152600b60205260409020548511156121c65760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742042616c616e636560601b6044820152606401610d89565b601454600160a01b900460ff16156121ea576121e387878761233f565b9350612335565b5f6121f488612568565b6001600160a01b0389165f908152601060205260408120549192509060ff168061223557506001600160a01b0388165f9081526010602052604090205460ff165b8061223d5750815b6122515761224c8989896126c1565b612253565b865b905061225f88826127fd565b6001600160a01b0389165f908152600b6020526040902054612282908890612f7f565b6001600160a01b038a165f908152600b60205260409020556122a3886128b0565b6122ad9082612ff5565b6001600160a01b0389165f908152600b60205260409020549091506122d3908290612ff5565b6001600160a01b03808a165f818152600b602052604090819020939093559151908b16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906123269085815260200190565b60405180910390a36001955050505b5050509392505050565b6001600160a01b0383165f908152600b602052604081205482111561239d5760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742042616c616e636560601b6044820152606401610d89565b6001600160a01b0384165f908152600b60205260409020546123c0908390612f7f565b6001600160a01b038086165f908152600b602052604080822093909355908516815220546123ef908390612ff5565b6001600160a01b038085165f818152600b602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906124429086815260200190565b60405180910390a35060019392505050565b6014805460ff60a01b1916600160a01b179055612470816128ec565b600a5447905f906064906124849084612fbf565b61248e9190612fd6565b90505f61249b8284612f7f565b6008549091506124b99061010090046001600160a01b0316836124e2565b6009546124cf906001600160a01b0316826124e2565b50506014805460ff60a01b191690555050565b6040516001600160a01b0383169082156108fc029083905f818181858888f1935050505015801561108a573d5f5f3e3d5ffd5b806005546125239190612ff5565b6005556001600160a01b0382165f908152600b6020526040902054612549908290612ff5565b6001600160a01b039092165f908152600b602052604090209190915550565b305f908152600b60205260408120546015548291106125a757600754601554305f908152600b60205260409020546125a09190612f7f565b10156125a9565b5f5b90508080156125c25750601454600160a01b900460ff16155b80156125e657506001600160a01b0383165f9081526011602052604090205460ff16155b80156125fb5750601454600160a81b900460ff165b156126b95760165460ff62010000820481166101009092041610158061262b57506016546301000000900460ff16155b1561268157601454600160b01b900460ff16156126525761264d600754612454565b61266e565b601554305f908152600b602052604090205461266e91906119d6565b50506016805461ff001916905550600190565b6001601660018282829054906101000a900460ff166126a09190612fa6565b92506101000a81548160ff021916908360ff1602179055505b505f92915050565b6001600160a01b0383165f90815260116020526040812054819060ff1680156126ee575060135460ff1615155b15612717576013546064906127069060ff1685612fbf565b6127109190612fd6565b9050612771565b6001600160a01b0384165f9081526011602052604090205460ff1680156127475750601354610100900460ff1615155b156127715760135460649061276490610100900460ff1685612fbf565b61276e9190612fd6565b90505b80156127ea57305f908152600b6020526040902054612791908290612ff5565b305f818152600b6020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906127e19085815260200190565b60405180910390a35b6127f48184612f7f565b95945050505050565b6001600160a01b0382165f908152600b6020526040812054612820908390612ff5565b601454909150600160b81b900460ff16801561285457506001600160a01b0383165f9081526012602052604090205460ff16155b1561108a5761286161134f565b81111561108a5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610d89565b6001600160a01b0381165f908152600f60205260408120548015610d7c576001600160a01b0383165f908152600f602052604081205592915050565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061291f5761291f612f92565b60200260200101906001600160a01b031690816001600160a01b031681525050601360069054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612990573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129b49190613033565b816001815181106129c7576129c7612f92565b6001600160a01b0392831660209182029290920101526013546129f4913091600160301b90041684611e91565b60135460405163791ac94760e01b8152600160301b9091046001600160a01b03169063791ac94790612a329085905f9086903090429060040161304e565b5f604051808303815f87803b158015612a49575f5ffd5b505af1158015611759573d5f5f3e3d5ffd5b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114611a26575f5ffd5b5f5f60408385031215612ab5575f5ffd5b8235612ac081612a90565b946020939093013593505050565b5f60208284031215612ade575f5ffd5b8135612ae981612a90565b9392505050565b80358015158114612aff575f5ffd5b919050565b5f5f60408385031215612b15575f5ffd5b8235612b2081612a90565b9150612b2e60208401612af0565b90509250929050565b803560ff81168114612aff575f5ffd5b5f5f60408385031215612b58575f5ffd5b612b6183612b37565b9150612b2e60208401612b37565b5f5f5f60608486031215612b81575f5ffd5b8335612b8c81612a90565b92506020840135612b9c81612a90565b929592945050506040919091013590565b634e487b7160e01b5f52604160045260245ffd5b6040805190810167ffffffffffffffff81118282101715612be457612be4612bad565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715612c1357612c13612bad565b604052919050565b5f60208284031215612c2b575f5ffd5b813567ffffffffffffffff811115612c41575f5ffd5b8201601f81018413612c51575f5ffd5b803567ffffffffffffffff811115612c6b57612c6b612bad565b612c7a60208260051b01612bea565b8082825260208201915060208360061b850101925086831115612c9b575f5ffd5b6020840193505b82841015612cef5760408488031215612cb9575f5ffd5b612cc1612bc1565b843581526020850135612cd381612a90565b8060208301525080835250602082019150604084019350612ca2565b9695505050505050565b5f5f5f5f60808587031215612d0c575f5ffd5b612d1585612b37565b9350612d2360208601612b37565b9250612d3160408601612b37565b9150612d3f60608601612b37565b905092959194509250565b5f60208284031215612d5a575f5ffd5b5035919050565b5f60208284031215612d71575f5ffd5b813560038110612ae9575f5ffd5b5f60208284031215612d8f575f5ffd5b612ae982612af0565b602080825282518282018190525f918401906040840190835b81811015612de4578351805184526020908101516001600160a01b03168185015290930192604090920191600101612db1565b509095945050505050565b634e487b7160e01b5f52602160045260245ffd5b6020810160038310612e2357634e487b7160e01b5f52602160045260245ffd5b91905290565b5f5f60408385031215612e3a575f5ffd5b50508035926020909101359150565b5f5f60408385031215612e5a575f5ffd5b82359150612b2e60208401612af0565b5f5f60408385031215612e7b575f5ffd5b8235612e8681612a90565b91506020830135612e9681612a90565b809150509250929050565b5f60208284031215612eb1575f5ffd5b612ae982612b37565b600181811c90821680612ece57607f821691505b602082108103612eec57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526024908201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f6c64206f6040820152633bb732b960e11b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610d7c57610d7c612f6b565b634e487b7160e01b5f52603260045260245ffd5b60ff8181168382160190811115610d7c57610d7c612f6b565b8082028115828204841417610d7c57610d7c612f6b565b5f82612ff057634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115610d7c57610d7c612f6b565b5f5f5f6060848603121561301a575f5ffd5b5050815160208301516040909301519094929350919050565b5f60208284031215613043575f5ffd5b8151612ae981612a90565b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b8181101561309e5783516001600160a01b0316835260209384019390920191600101613077565b50506001600160a01b03959095166060840152505060800152939250505056fea2646970667358221220753c4f19eb73f44c4754df6be1ce4b08f0af1123c92e64fe9fc6f7ed2fc2e53564736f6c634300081c0033
Deployed Bytecode Sourcemap
28781:18256:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33246:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34038:161;;;;;;;;;;-1:-1:-1;34038:161:0;;;;;:::i;:::-;;:::i;:::-;;;1110:14:1;;1103:22;1085:41;;1073:2;1058:18;34038:161:0;945:187:1;29434:93:0;;;;;;;;;;-1:-1:-1;29434:93:0;;;;-1:-1:-1;;;;;29434:93:0;;;;;;-1:-1:-1;;;;;1317:32:1;;;1299:51;;1287:2;1272:18;29434:93:0;1137:219:1;35793:131:0;;;;;;;;;;-1:-1:-1;35793:131:0;;;;;:::i;:::-;;:::i;:::-;;30697:40;;;;;;;;;;-1:-1:-1;30697:40:0;;;;;;;;;;;;;;1785:4:1;1773:17;;;1755:36;;1743:2;1728:18;30697:40:0;1613:184:1;33523:100:0;;;;;;;;;;-1:-1:-1;33603:12:0;;33523:100;;;1948:25:1;;;1936:2;1921:18;33523:100:0;1802:177:1;36204:141:0;;;;;;;;;;-1:-1:-1;36204:141:0;;;;;:::i;:::-;;:::i;30654:36::-;;;;;;;;;;-1:-1:-1;30654:36:0;;;;;;;;;;;46698:213;;;;;;;;;;-1:-1:-1;46698:213:0;;;;;:::i;:::-;;:::i;39070:370::-;;;;;;;;;;-1:-1:-1;39070:370:0;;;;;:::i;:::-;;:::i;36795:124::-;;;;;;;;;;;;;:::i;38667:395::-;;;;;;;;;;-1:-1:-1;38667:395:0;;;;;:::i;:::-;;:::i;30321:31::-;;;;;;;;;;-1:-1:-1;30321:31:0;;;;-1:-1:-1;;;30321:31:0;;-1:-1:-1;;;;;30321:31:0;;;33432:83;;;;;;;;;;-1:-1:-1;33498:9:0;;;;33432:83;;35063:434;;;;;;;;;;-1:-1:-1;35063:434:0;;;;;:::i;:::-;;:::i;29098:58::-;;;;;;;;;;;;;;;;35505:129;;;;;;;;;;-1:-1:-1;35505:129:0;;;;;:::i;:::-;;:::i;29993:45::-;;;;;;;;;;-1:-1:-1;29993:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;30106:24;;;;;;;;;;-1:-1:-1;30106:24:0;;;;;;;;37061:267;;;;;;;;;;-1:-1:-1;37061:267:0;;;;;:::i;:::-;;:::i;30283:29::-;;;;;;;;;;-1:-1:-1;30283:29:0;;;;;;;;;;;35642:143;;;;;;;;;;-1:-1:-1;35642:143:0;;;;;:::i;:::-;;:::i;30359:24::-;;;;;;;;;;-1:-1:-1;30359:24:0;;;;-1:-1:-1;;;;;30359:24:0;;;36543:127;;;;;;;;;;;;;:::i;29936:50::-;;;;;;;;;;-1:-1:-1;29936:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;30525:34;;;;;;;;;;-1:-1:-1;30525:34:0;;;;-1:-1:-1;;;30525:34:0;;;;;;27207:90;;;;;;;;;;-1:-1:-1;27274:15:0;27207:90;;30137:25;;;;;;;;;;-1:-1:-1;30137:25:0;;;;;;;;;;;30566:31;;;;;;;;;;;;;;;;46353:160;;;;;;;;;;-1:-1:-1;46353:160:0;;;;;:::i;:::-;;:::i;46919:115::-;;;;;;;;;;-1:-1:-1;46919:115:0;;;;;:::i;:::-;;:::i;30171:28::-;;;;;;;;;;-1:-1:-1;30171:28:0;;;;;;;;;;;33631:119;;;;;;;;;;-1:-1:-1;33631:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;33724:18:0;33697:7;33724:18;;;:9;:18;;;;;;;33631:119;26701:236;;;;;;;;;;;;;:::i;37799:596::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;30206:29::-;;;;;;;;;;-1:-1:-1;30206:29:0;;;;;;;;;;;29882:44;;;;;;;;;;-1:-1:-1;29882:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;30744:36;;;;;;;;;;-1:-1:-1;30744:36:0;;;;;;;;;;;34552:135;;;;;;;;;;-1:-1:-1;34552:135:0;;;;;:::i;:::-;;:::i;37336:112::-;;;;;;;;;;-1:-1:-1;37336:112:0;;;;;:::i;:::-;;:::i;26317:79::-;;;;;;;;;;-1:-1:-1;26355:7:0;26382:6;-1:-1:-1;;;;;26382:6:0;26317:79;;30248:28;;;;;;;;;;-1:-1:-1;30248:28:0;;;;;;;;;;;33337:87;;;;;;;;;;;;;:::i;30604:41::-;;;;;;;;;;-1:-1:-1;30604:41:0;;;;;;;;;;;;;;;:::i;43659:524::-;;;;;;;;;;-1:-1:-1;43659:524:0;;;;;:::i;:::-;;:::i;45341:480::-;;;;;;;;;;-1:-1:-1;45341:480:0;;;;;:::i;:::-;;:::i;33909:121::-;;;;;;;;;;-1:-1:-1;33998:24:0;;33909:121;;29843:32;;;;;;;;;;-1:-1:-1;29843:32:0;;;;;:::i;:::-;;:::i;36064:132::-;;;;;;;;;;-1:-1:-1;36064:132:0;;;;;:::i;:::-;;:::i;34852:203::-;;;;;;;;;;-1:-1:-1;34852:203:0;;;;;:::i;:::-;;:::i;39448:167::-;;;;;;;;;;-1:-1:-1;39448:167:0;;;;;:::i;:::-;;:::i;46521:169::-;;;;;;;;;;-1:-1:-1;46521:169:0;;;;;:::i;:::-;;:::i;46177:168::-;;;;;;;;;;;;;:::i;38403:256::-;;;;;;;;;;-1:-1:-1;38403:256:0;;;;;:::i;:::-;;:::i;45829:340::-;;;;;;;;;;;;;:::i;35932:124::-;;;;;;;;;;-1:-1:-1;35932:124:0;;;;;:::i;:::-;;:::i;30045:52::-;;;;;;;;;;-1:-1:-1;30045:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;44978:355;;;;;;;;;;;;;:::i;29579:82::-;;;;;;;;;;;;;;;30425:41;;;;;;;;;;-1:-1:-1;30425:41:0;;;;-1:-1:-1;;;30425:41:0;;;;;;36678:105;;;;;;;;;;-1:-1:-1;36678:105:0;;;;;:::i;:::-;;:::i;29328:99::-;;;;;;;;;;-1:-1:-1;29328:99:0;;;;;;;-1:-1:-1;;;;;29328:99:0;;;33758:143;;;;;;;;;;-1:-1:-1;33758:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;33866:18:0;;;33839:7;33866:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;33758:143;29534:38;;;;;;;;;;;;;;;;30473:45;;;;;;;;;;-1:-1:-1;30473:45:0;;;;-1:-1:-1;;;30473:45:0;;;;;;36353:182;;;;;;;;;;-1:-1:-1;36353:182:0;;;;;:::i;:::-;;:::i;29795:41::-;;;;;;;;;;-1:-1:-1;29795:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;34701:141;;;;;;;;;;-1:-1:-1;34701:141:0;;;;;:::i;:::-;;:::i;26945:250::-;;;;;;;;;;-1:-1:-1;26945:250:0;;;;;:::i;:::-;;:::i;29274:41::-;;;;;;;;;;-1:-1:-1;29274:41:0;;;;;;;;33246:83;33283:13;33316:5;33309:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33246:83;:::o;34038:161::-;34113:4;34130:39;4342:10;34153:7;34162:6;34130:8;:39::i;:::-;-1:-1:-1;34187:4:0;34038:161;;;;;:::o;35793:131::-;35861:4;26464:205;;26499:67;;;;;;;;26464:205;26603:9;;-1:-1:-1;;;;;26603:9:0;4342:10;26603:25;26595:74;;;;-1:-1:-1;;;26595:74:0;;;;;;;:::i;:::-;-1:-1:-1;35878:16:0::1;:38:::0;;-1:-1:-1;;;;;;35878:38:0::1;-1:-1:-1::0;;;;;35878:38:0;;;::::1;::::0;;;::::1;::::0;;35793:131::o;36204:141::-;36284:4;26603:9;;-1:-1:-1;;;;;26603:9:0;4342:10;26603:25;26595:74;;;;-1:-1:-1;;;26595:74:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;;36301:27:0;;;::::1;;::::0;;;:19:::1;:27;::::0;;;;:36;;-1:-1:-1;;36301:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;36204:141::o;46698:213::-;46802:4;26603:9;;-1:-1:-1;;;;;26603:9:0;4342:10;26603:25;26595:74;;;;-1:-1:-1;;;26595:74:0;;;;;;;:::i;:::-;-1:-1:-1;46819:21:0::1;:33:::0;;-1:-1:-1;;46863:40:0;46819:33:::1;;::::0;;::::1;;-1:-1:-1::0;;46863:40:0;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;46698:213::o;39070:370::-;39168:4;39185:36;39195:6;39203:9;39214:6;39185:9;:36::i;:::-;-1:-1:-1;;;;;;39240:19:0;;;;;;:11;:19;;;;;;;;4342:10;39240:33;;;;;;;;:41;-1:-1:-1;39240:41:0;39232:93;;;;-1:-1:-1;;;39232:93:0;;10759:2:1;39232:93:0;;;10741:21:1;10798:2;10778:18;;;10771:30;10837:34;10817:18;;;10810:62;-1:-1:-1;;;10888:18:1;;;10881:38;10936:19;;39232:93:0;10557:404:1;39232:93:0;-1:-1:-1;;;;;39368:19:0;;;;;;:11;:19;;;;;;;;4342:10;39368:33;;;;;;;;;39336:74;;39345:6;;39368:40;;39402:6;;39368:40;:::i;:::-;39336:8;:74::i;:::-;-1:-1:-1;39428:4:0;39070:370;;;;;:::o;36795:124::-;-1:-1:-1;;;;;36898:12:0;33724:18;36848:7;33724:18;;;:9;:18;;;;;;36875:12;;:36;;;;:::i;:::-;36868:43;;36795:124;:::o;38667:395::-;38749:4;26603:9;;-1:-1:-1;;;;;26603:9:0;4342:10;26603:25;26595:74;;;;-1:-1:-1;;;26595:74:0;;;;;;;:::i;:::-;38771:9:::1;38767:274;38785:13;:20;38783:1;:22;38767:274;;;38845:13;38859:1;38845:16;;;;;;;;:::i;:::-;;;;;;;:23;;;38827:14;;:41;38824:217;;38904:13;38918:1;38904:16;;;;;;;;:::i;:::-;;;;;;;:23;;;38888:14;;:39;;;;;;;:::i;:::-;;;;;;;;38946:78;38969:4;38975:13;38989:1;38975:16;;;;;;;;:::i;:::-;;;;;;;:23;;;39000:13;39014:1;39000:16;;;;;;;;:::i;:::-;;;;;;;:23;;;38946:14;:78::i;:::-;;38824:217;38806:3;;38767:274;;;;38667:395:::0;;:::o;35063:434::-;35176:5;26507:6;;-1:-1:-1;;;;;26507:6:0;4342:10;26507:22;26499:67;;;;-1:-1:-1;;;26499:67:0;;;;;;;:::i;:::-;35230:2:::1;35203:22;35215:10:::0;35203:11;:22:::1;:::i;:::-;35202:30;;;;35194:70;;;::::0;-1:-1:-1;;;35194:70:0;;11718:2:1;35194:70:0::1;::::0;::::1;11700:21:1::0;11757:2;11737:18;;;11730:30;11796:29;11776:18;;;11769:57;11843:18;;35194:70:0::1;11516:351:1::0;35194:70:0::1;35311:2;35284:22;35295:11:::0;35284:10;:22:::1;:::i;:::-;35283:30;;;;35275:70;;;::::0;-1:-1:-1;;;35275:70:0;;12074:2:1;35275:70:0::1;::::0;::::1;12056:21:1::0;12113:2;12093:18;;;12086:30;12152:29;12132:18;;;12125:57;12199:18;;35275:70:0::1;11872:351:1::0;35275:70:0::1;-1:-1:-1::0;35356:11:0::1;:25:::0;;-1:-1:-1;;35392:25:0;35356;::::1;::::0;;::::1;;-1:-1:-1::0;;35392:25:0;;;;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;35464:25:0;35430:23;;;::::1;::::0;;;::::1;-1:-1:-1::0;;35464:25:0;;;;;;::::1;;::::0;;;::::1;::::0;;35063:434::o;35505:129::-;35574:4;26603:9;;-1:-1:-1;;;;;26603:9:0;4342:10;26603:25;26595:74;;;;-1:-1:-1;;;26595:74:0;;;;;;;:::i;:::-;-1:-1:-1;35591:24:0::1;:35:::0;35505:129::o;37061:267::-;37123:4;26603:9;;-1:-1:-1;;;;;26603:9:0;4342:10;26603:25;26595:74;;;;-1:-1:-1;;;26595:74:0;;;;;;;:::i;:::-;37139:7:::1;:18:::0;;37147:10;;37139:7;-1:-1:-1;;37139:18:0::1;::::0;37147:10;37139:18:::1;::::0;::::1;;;;;;:::i;:::-;;;::::0;;-1:-1:-1;37193:15:0::1;37179:10;:29;;;;;;;;:::i;:::-;;37178:59;;37226:11;::::0;;;::::1;;;37178:59;;;37212:11;::::0;;;::::1;;;37178:59;37168:7;:69:::0;;-1:-1:-1;;37168:69:0::1;;::::0;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;37260:10:0::1;:29;;;;;;;;:::i;:::-;;37259:61;;37308:12;::::0;;;::::1;;;37259:61;;;37293:12;::::0;;;::::1;;;37259:61;37248:8;;:72;;;;;;;;;;;;;;;;;;37061:267:::0;;:::o;35642:143::-;35716:4;26603:9;;-1:-1:-1;;;;;26603:9:0;4342:10;26603:25;26595:74;;;;-1:-1:-1;;;26595:74:0;;;;;;;:::i;:::-;-1:-1:-1;35733:22:0::1;:44:::0;;-1:-1:-1;;;;;35733:44:0;;::::1;;;-1:-1:-1::0;;;;;;35733:44:0;;::::1;::::0;;;::::1;::::0;;35642:143::o;36543:127::-;36642:12;;36616:23;;36589:7;;36658:4;;36616:38;;36642:12;36616:23;;:38;:::i;:::-;36615:47;;;;:::i;46353:160::-;46415:4;26603:9;;-1:-1:-1;;;;;26603:9:0;4342:10;26603:25;26595:74;;;;-1:-1:-1;;;26595:74:0;;;;;;;:::i;:::-;46461:4:::1;46443:24;::::0;;;:9:::1;:24;::::0;;;;;46434:33;::::1;46431:74;;;46482:14;:23:::0;;;46431:74:::1;46353:160:::0;;:::o;46919:115::-;46983:4;26603:9;;-1:-1:-1;;;;;26603:9:0;4342:10;26603:25;26595:74;;;;-1:-1:-1;;;26595:74:0;;;;;;;:::i;:::-;-1:-1:-1;46999:19:0::1;:27:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;46999:27:0;;::::1;::::0;;;::::1;::::0;;46919:115::o;26701:236::-;26755:4;26603:9;;-1:-1:-1;;;;;26603:9:0;4342:10;26603:25;26595:74;;;;-1:-1:-1;;;26595:74:0;;;;;;;:::i;:::-;26798:6:::1;::::0;;26777:81:::1;::::0;26814:42:::1;::::0;-1:-1:-1;;;;;26798:6:0;;::::1;::::0;26777:81:::1;::::0;::::1;-1:-1:-1::0;26869:6:0::1;:60:::0;;-1:-1:-1;;;;;;26869:60:0::1;26886:42;26869:60;::::0;;26701:236::o;37799:596::-;37938:14;:21;37845;;37878:38;;37919:41;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;37919:41:0;;;;;;;;;;;;;;;-1:-1:-1;37878:82:0;-1:-1:-1;37971:10:0;;37995:358;38013:14;:21;38011:23;;37995:358;;;38054:21;38078:14;38093:1;38078:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;38078:17:0;38113:24;;;:9;:24;;;;;;;;38078:17;;-1:-1:-1;38113:26:0;38110:232;;-1:-1:-1;;;;;38204:23:0;;38159:15;38204:23;;;:8;:23;;;;;;;;;38177:9;:24;;;;;;:50;;38204:23;38177:50;:::i;:::-;38159:68;;38267:35;;;;;;;;38280:7;38267:35;;;;38288:13;-1:-1:-1;;;;;38267:35:0;;;;38246:15;38262:2;38246:19;;;;;;;;:::i;:::-;;;;;;;;;;:56;38321:5;38325:1;38321:5;;:::i;:::-;;;38140:202;38110:232;-1:-1:-1;38035:3:0;;37995:358;;;-1:-1:-1;38372:15:0;;37799:596;-1:-1:-1;;37799:596:0:o;34552:135::-;34630:4;26603:9;;-1:-1:-1;;;;;26603:9:0;4342:10;26603:25;26595:74;;;;-1:-1:-1;;;26595:74:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;;34647:21:0;;;::::1;;::::0;;;:12:::1;:21;::::0;;;;:32;;-1:-1:-1;;34647:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;34552:135::o;37336:112::-;37393:4;26603:9;;-1:-1:-1;;;;;26603:9:0;4342:10;26603:25;26595:74;;;;-1:-1:-1;;;26595:74:0;;;;;;;:::i;:::-;-1:-1:-1;37410:20:0::1;:30:::0;37336:112::o;33337:87::-;33376:13;33409:7;33402:14;;;;;:::i;43659:524::-;43738:4;26603:9;;-1:-1:-1;;;;;26603:9:0;4342:10;26603:25;26595:74;;;;-1:-1:-1;;;26595:74:0;;;;;;;:::i;:::-;43854:13:::1;::::0;43822:60:::1;::::0;43839:4:::1;::::0;-1:-1:-1;;;43854:13:0;::::1;-1:-1:-1::0;;;;;43854:13:0::1;43870:11:::0;43822:8:::1;:60::i;:::-;43925:13;::::0;-1:-1:-1;;;;;;;;43925:13:0;;::::1;;:29;43962:9:::0;43995:4:::1;44015:11:::0;44041:1:::1;::::0;44127:7:::1;26355::::0;26382:6;-1:-1:-1;;;;;26382:6:0;;26317:79;44127:7:::1;43925:250;::::0;::::1;::::0;;;-1:-1:-1;;;;;;43925:250:0;;;-1:-1:-1;;;;;13074:32:1;;;43925:250:0::1;::::0;::::1;13056:51:1::0;13123:18;;;13116:34;;;;13166:18;;;13159:34;;;;13209:18;;;13202:34;13273:32;;;13252:19;;;13245:61;44149:15:0::1;13322:19:1::0;;;13315:35;13028:19;;43925:250:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;43659:524:::0;;;:::o;45341:480::-;45406:4;26603:9;;-1:-1:-1;;;;;26603:9:0;4342:10;26603:25;26595:74;;;;-1:-1:-1;;;26595:74:0;;;;;;;:::i;:::-;45425:12:::1;:38;;;;;45457:6;45441:14;;:22;;45425:38;45422:392;;;45512:6;45495:14;;:23;;;;:::i;:::-;45479:14;:39:::0;45533:51:::1;45556:4;45563:12;45577:6:::0;45533:14:::1;:51::i;:::-;-1:-1:-1::0;45604:12:0::1;::::0;1948:25:1;;;45604:12:0::1;::::0;1936:2:1;1921:18;45604:12:0::1;;;;;;;38767:274;38667:395:::0;;:::o;45422:392::-:1;45637:12;45636:13;:67;;;;-1:-1:-1::0;45679:14:0::1;::::0;45672:4:::1;45654:24;::::0;;;:9:::1;:24;::::0;;;;;45697:6;;45654:39:::1;::::0;::::1;:::i;:::-;45653:50;;45636:67;45633:181;;;45719:51;45742:4;45749:12;45763:6;45719:14;:51::i;29843:32::-:0;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;29843:32:0;;-1:-1:-1;29843:32:0;:::o;36064:132::-;36134:4;26603:9;;-1:-1:-1;;;;;26603:9:0;4342:10;26603:25;26595:74;;;;-1:-1:-1;;;26595:74:0;;;;;;;:::i;:::-;-1:-1:-1;36151:26:0::1;:37:::0;;;::::1;;-1:-1:-1::0;;;36151:37:0::1;-1:-1:-1::0;;;;36151:37:0;;::::1;::::0;;;::::1;::::0;;36064:132::o;34852:203::-;34916:5;26507:6;;-1:-1:-1;;;;;26507:6:0;4342:10;26507:22;26499:67;;;;-1:-1:-1;;;26499:67:0;;;;;;;:::i;:::-;34962:2:::1;34943:14;34951:6:::0;34943:7;:14:::1;:::i;:::-;34942:22;;;;34934:57;;;::::0;-1:-1:-1;;;34934:57:0;;14024:2:1;34934:57:0::1;::::0;::::1;14006:21:1::0;14063:2;14043:18;;;14036:30;-1:-1:-1;;;14082:18:1;;;14075:52;14144:18;;34934:57:0::1;13822:346:1::0;34934:57:0::1;-1:-1:-1::0;35002:7:0::1;:16:::0;;::::1;35029:18:::0;;::::1;35002:16;35029:18;-1:-1:-1::0;;35029:18:0;;;35002:16;;;::::1;35029:18:::0;;;;::::1;::::0;;34852:203::o;39448:167::-;39526:4;39543:42;4342:10;39567:9;39578:6;39543:9;:42::i;46521:169::-;46583:4;26603:9;;-1:-1:-1;;;;;26603:9:0;4342:10;26603:25;26595:74;;;;-1:-1:-1;;;26595:74:0;;;;;;;:::i;:::-;46599:79:::1;46621:1;46614:6;:8;:63;;46662:14;::::0;46653:4:::1;33697:7:::0;33724:18;;;:9;:18;;;;;;46635:24:::1;:41;;;;:::i;:::-;46599:14;:79::i;46614:63::-;46625:6;46599:14;:79::i;46177:168::-:0;46217:4;26603:9;;-1:-1:-1;;;;;26603:9:0;4342:10;26603:25;26595:74;;;;-1:-1:-1;;;26595:74:0;;;;;;;:::i;:::-;46236:21:::1;:23:::0;46233:104:::1;;46274:63;46303:10;46315:21;46274:20;:63::i;:::-;46177:168:::0;:::o;38403:256::-;38480:4;26603:9;;-1:-1:-1;;;;;26603:9:0;4342:10;26603:25;26595:74;;;;-1:-1:-1;;;26595:74:0;;;;;;;:::i;:::-;38502:9:::1;38498:152;38516:13;:20;38514:1;:22;38498:152;;;38627:13;38641:1;38627:16;;;;;;;;:::i;:::-;;;;;;;:23;;;38591:8;:33;38600:13;38614:1;38600:16;;;;;;;;:::i;:::-;;;;;;;:23;;;-1:-1:-1::0;;;;;38591:33:0::1;-1:-1:-1::0;;;;;38591:33:0::1;;;;;;;;;;;;;:59;;;;:::i;:::-;38555:8;:33;38564:13;38578:1;38564:16;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;:23;::::1;::::0;-1:-1:-1;;;;;38555:33:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;38555:33:0;:95;38537:3:::1;;38498:152;;45829:340:::0;45869:4;26603:9;;-1:-1:-1;;;;;26603:9:0;4342:10;26603:25;26595:74;;;;-1:-1:-1;;;26595:74:0;;;;;;;:::i;:::-;45907:4:::1;45914:1;45889:24:::0;;;:9:::1;:24;::::0;;;;;:26;45886:157:::1;;45949:1;45932:14;:18:::0;;;45989:4:::1;46006:24:::0;;;:9:::1;:24;::::0;;;;;;45966:65:::1;::::0;45989:4;45995:10:::1;::::0;45966:14:::1;:65::i;:::-;;46058:21;:23:::0;46055:104:::1;;46096:63;46125:10;46137:21;46096:20;:63::i;35932:124::-:0;35998:4;26603:9;;-1:-1:-1;;;;;26603:9:0;4342:10;26603:25;26595:74;;;;-1:-1:-1;;;26595:74:0;;;;;;;:::i;:::-;-1:-1:-1;36015:22:0::1;:33:::0;;;::::1;;-1:-1:-1::0;;;36015:33:0::1;-1:-1:-1::0;;;;36015:33:0;;::::1;::::0;;;::::1;::::0;;35932:124::o;44978:355::-;45014:4;26603:9;;-1:-1:-1;;;;;26603:9:0;4342:10;26603:25;26595:74;;;;-1:-1:-1;;;26595:74:0;;;;;;;:::i;:::-;45051:12:::1;;45033:15;;:30;45030:296;;;45079:21;45138:1;45122:12;;45104:15;;:30;;;;:::i;:::-;45103:36;;;;:::i;:::-;45079:60;;45188:13;45171:14;;:30;;;;:::i;:::-;45154:14;:47:::0;45216:37:::1;45233:4;45239:13:::0;45216:8:::1;:37::i;:::-;45275:39;::::0;;14347:25:1;;;45298:15:0::1;14403:2:1::0;14388:18;;14381:34;45275:39:0::1;::::0;14320:18:1;45275:39:0::1;;;;;;;45064:262;44978:355:::0;:::o;36678:105::-;36734:4;26603:9;;-1:-1:-1;;;;;26603:9:0;4342:10;26603:25;26595:74;;;;-1:-1:-1;;;26595:74:0;;;;;;;:::i;:::-;-1:-1:-1;36750:17:0::1;:25:::0;;;::::1;;-1:-1:-1::0;;;36750:25:0::1;-1:-1:-1::0;;;;36750:25:0;;::::1;::::0;;;::::1;::::0;;36678:105::o;36353:182::-;36412:5;26507:6;;-1:-1:-1;;;;;26507:6:0;4342:10;26507:22;26499:67;;;;-1:-1:-1;;;26499:67:0;;;;;;;:::i;:::-;36450:2:::1;36438:8;:14;;;;36430:52;;;::::0;-1:-1:-1;;;36430:52:0;;14628:2:1;36430:52:0::1;::::0;::::1;14610:21:1::0;14667:2;14647:18;;;14640:30;14706:27;14686:18;;;14679:55;14751:18;;36430:52:0::1;14426:349:1::0;36430:52:0::1;-1:-1:-1::0;36493:23:0::1;:34:::0;;-1:-1:-1;;36493:34:0::1;;::::0;;;::::1;::::0;;;::::1;::::0;;36353:182::o;34701:141::-;34780:4;26603:9;;-1:-1:-1;;;;;26603:9:0;4342:10;26603:25;26595:74;;;;-1:-1:-1;;;26595:74:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;;34797:26:0;;;::::1;;::::0;;;:17:::1;:26;::::0;;;;:37;;-1:-1:-1;;34797:37:0::1;::::0;::::1;;::::0;;;::::1;::::0;;34701:141::o;26945:250::-;27015:4;26603:9;;-1:-1:-1;;;;;26603:9:0;4342:10;26603:25;26595:74;;;;-1:-1:-1;;;26595:74:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27040:22:0;::::1;27032:73;;;::::0;-1:-1:-1;;;27032:73:0;;14982:2:1;27032:73:0::1;::::0;::::1;14964:21:1::0;15021:2;15001:18;;;14994:30;15060:34;15040:18;;;15033:62;-1:-1:-1;;;15111:18:1;;;15104:36;15157:19;;27032:73:0::1;14780:402:1::0;27032:73:0::1;27142:6;::::0;;27121:38:::1;::::0;-1:-1:-1;;;;;27121:38:0;;::::1;::::0;27142:6;::::1;::::0;27121:38:::1;::::0;::::1;-1:-1:-1::0;27170:6:0::1;:17:::0;;-1:-1:-1;;;;;;27170:17:0::1;-1:-1:-1::0;;;;;27170:17:0;;;::::1;::::0;;;::::1;::::0;;26945:250::o;34207:337::-;-1:-1:-1;;;;;34300:19:0;;34292:68;;;;-1:-1:-1;;;34292:68:0;;15389:2:1;34292:68:0;;;15371:21:1;15428:2;15408:18;;;15401:30;15467:34;15447:18;;;15440:62;-1:-1:-1;;;15518:18:1;;;15511:34;15562:19;;34292:68:0;15187:400:1;34292:68:0;-1:-1:-1;;;;;34379:21:0;;34371:68;;;;-1:-1:-1;;;34371:68:0;;15794:2:1;34371:68:0;;;15776:21:1;15833:2;15813:18;;;15806:30;15872:34;15852:18;;;15845:62;-1:-1:-1;;;15923:18:1;;;15916:32;15965:19;;34371:68:0;15592:398:1;34371:68:0;-1:-1:-1;;;;;34452:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;34504:32;;1948:25:1;;;34504:32:0;;1921:18:1;34504:32:0;;;;;;;34207:337;;;:::o;39623:1145::-;-1:-1:-1;;;;;37583:19:0;;39751:4;37583:19;;;:8;:19;;;;;;39716:6;;39723:9;;39733:6;;37583:19;;37582:20;:48;;;;-1:-1:-1;;;;;;37607:23:0;;;;;;:12;:23;;;;;;;;37606:24;37582:48;:77;;;;;37647:12;-1:-1:-1;;;;;37634:25:0;:9;-1:-1:-1;;;;;37634:25:0;;;37582:77;37579:177;;;-1:-1:-1;;;;;37675:19:0;;;;;;:8;:19;;;;;:24;;-1:-1:-1;;37675:24:0;37695:4;37675:24;;;;;;37714:14;:30;;;;;;;;;;;;;;-1:-1:-1;;;;;;37714:30:0;;;;;;37579:177;-1:-1:-1;;;;;39775:20:0;::::1;39767:70;;;::::0;-1:-1:-1;;;39767:70:0;;16197:2:1;39767:70:0::1;::::0;::::1;16179:21:1::0;16236:2;16216:18;;;16209:30;16275:34;16255:18;;;16248:62;-1:-1:-1;;;16326:18:1;;;16319:35;16371:19;;39767:70:0::1;15995:401:1::0;39767:70:0::1;-1:-1:-1::0;;;;;39856:23:0;::::1;39848:71;;;::::0;-1:-1:-1;;;39848:71:0;;16603:2:1;39848:71:0::1;::::0;::::1;16585:21:1::0;16642:2;16622:18;;;16615:30;16681:34;16661:18;;;16654:62;-1:-1:-1;;;16732:18:1;;;16725:33;16775:19;;39848:71:0::1;16401:399:1::0;39848:71:0::1;-1:-1:-1::0;;;;;39938:17:0;::::1;;::::0;;;:9:::1;:17;::::0;;;;;:27;-1:-1:-1;39938:27:0::1;39930:59;;;::::0;-1:-1:-1;;;39930:59:0;;17007:2:1;39930:59:0::1;::::0;::::1;16989:21:1::0;17046:2;17026:18;;;17019:30;-1:-1:-1;;;17065:18:1;;;17058:50;17125:18;;39930:59:0::1;16805:344:1::0;39930:59:0::1;40005:17;::::0;-1:-1:-1;;;40005:17:0;::::1;;;40002:759;;;40056:41;40071:6;40079:9;40090:6;40056:14;:41::i;:::-;40049:48;;;;40002:759;40164:13;40180:16;40189:6;40180:8;:16::i;:::-;-1:-1:-1::0;;;;;40236:25:0;::::1;40213:19;40236:25:::0;;;:17:::1;:25;::::0;;;;;40164:32;;-1:-1:-1;40213:19:0;40236:25:::1;;::::0;:57:::1;;-1:-1:-1::0;;;;;;40265:28:0;::::1;;::::0;;;:17:::1;:28;::::0;;;;;::::1;;40236:57;:69;;;;40297:8;40236:69;40235:160;;40361:34;40369:6;40377:9;40388:6;40361:7;:34::i;:::-;40235:160;;;40352:6;40235:160;40213:182;;40412:37;40427:9;40437:11;40412:14;:37::i;:::-;-1:-1:-1::0;;;;;40487:17:0;::::1;;::::0;;;:9:::1;:17;::::0;;;;;:24:::1;::::0;40505:6;;40487:24:::1;:::i;:::-;-1:-1:-1::0;;;;;40466:17:0;::::1;;::::0;;;:9:::1;:17;::::0;;;;:46;40562:23:::1;40575:9:::0;40562:12:::1;:23::i;:::-;40548:37;::::0;:11;:37:::1;:::i;:::-;-1:-1:-1::0;;;;;40628:20:0;::::1;;::::0;;;:9:::1;:20;::::0;;;;;40534:51;;-1:-1:-1;40628:32:0::1;::::0;40534:51;;40628:32:::1;:::i;:::-;-1:-1:-1::0;;;;;40604:20:0;;::::1;;::::0;;;:9:::1;:20;::::0;;;;;;:57;;;;40683:40;;;;::::1;::::0;::::1;::::0;::::1;::::0;40711:11;1948:25:1;;1936:2;1921:18;;1802:177;40683:40:0::1;;;;;;;;40745:4;40738:11;;;;40002:759;39623:1145:::0;;;;;;;;:::o;42198:372::-;-1:-1:-1;;;;;42316:17:0;;42291:4;42316:17;;;:9;:17;;;;;;:27;-1:-1:-1;42316:27:0;42308:59;;;;-1:-1:-1;;;42308:59:0;;17007:2:1;42308:59:0;;;16989:21:1;17046:2;17026:18;;;17019:30;-1:-1:-1;;;17065:18:1;;;17058:50;17125:18;;42308:59:0;16805:344:1;42308:59:0;-1:-1:-1;;;;;42399:17:0;;;;;;:9;:17;;;;;;:26;;42419:6;;42399:26;:::i;:::-;-1:-1:-1;;;;;42378:17:0;;;;;;;:9;:17;;;;;;:48;;;;42461:20;;;;;;;:27;;42482:6;;42461:27;:::i;:::-;-1:-1:-1;;;;;42437:20:0;;;;;;;:9;:20;;;;;;;:52;;;;42505:35;;;;;;;;;;42533:6;1948:25:1;;1936:2;1921:18;;1802:177;42505:35:0;;;;;;;;-1:-1:-1;42558:4:0;42198:372;;;;;:::o;42578:465::-;31233:17;:24;;-1:-1:-1;;;;31233:24:0;-1:-1:-1;;;31233:24:0;;;42652:25:::1;42669:7:::0;42652:16:::1;:25::i;:::-;42798:20;::::0;42717:21:::1;::::0;42688:26:::1;::::0;42822:3:::1;::::0;42777:41:::1;::::0;42717:21;42777:41:::1;:::i;:::-;42776:49;;;;:::i;:::-;42749:76:::0;-1:-1:-1;42836:18:0::1;42857:37;42749:76:::0;42857:18;:37:::1;:::i;:::-;42935:22;::::0;42836:58;;-1:-1:-1;42914:61:0::1;::::0;42935:22:::1;::::0;::::1;-1:-1:-1::0;;;;;42935:22:0::1;42958:16:::0;42914:20:::1;:61::i;:::-;43007:16;::::0;42986:49:::1;::::0;-1:-1:-1;;;;;43007:16:0::1;43024:10:::0;42986:20:::1;:49::i;:::-;-1:-1:-1::0;;31280:17:0;:25;;-1:-1:-1;;;;31280:25:0;;;-1:-1:-1;;42578:465:0:o;36927:126::-;37019:26;;-1:-1:-1;;;;;37019:18:0;;;:26;;;;;37038:6;;37019:26;;;;37038:6;37019:18;:26;;;;;;;;;;;;;;;;;;;44797:173;44896:5;44883:12;;:18;;;;:::i;:::-;44867:12;:35;-1:-1:-1;;;;;44935:18:0;;;;;;:9;:18;;;;;;:24;;44954:5;;44935:24;:::i;:::-;-1:-1:-1;;;;;44913:18:0;;;;;;;:9;:18;;;;;:47;;;;-1:-1:-1;44797:173:0:o;40998:888::-;41130:4;41048;41112:24;;;:9;:24;;;;;;41095:14;;41048:4;;-1:-1:-1;41095:123:0;;41194:24;;41175:14;;41166:4;41148:24;;;;:9;:24;;;;;;:41;;41175:14;41148:41;:::i;:::-;41147:71;;41095:123;;;41139:5;41095:123;41064:154;;41233:23;:45;;;;-1:-1:-1;41261:17:0;;-1:-1:-1;;;41261:17:0;;;;41260:18;41233:45;:70;;;;-1:-1:-1;;;;;;41283:20:0;;;;;;:12;:20;;;;;;;;41282:21;41233:70;:96;;;;-1:-1:-1;41307:22:0;;-1:-1:-1;;;41307:22:0;;;;41233:96;41229:623;;;41390:25;;;;;;;;;41367:21;;;;:48;;;:72;;-1:-1:-1;41420:19:0;;;;;;;41419:20;41367:72;41364:462;;;41466:26;;-1:-1:-1;;;41466:26:0;;;;41463:208;;;41519:40;41534:24;;41519:14;:40::i;:::-;41463:208;;;41655:14;;41646:4;33697:7;33724:18;;;:9;:18;;;;;;41612:59;;41655:14;41628:24;33631:119;41612:59;-1:-1:-1;;41699:21:0;:23;;-1:-1:-1;;41699:23:0;;;-1:-1:-1;41699:21:0;;40998:888::o;41364:462::-;41825:1;41802:21;;:24;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;41364:462;-1:-1:-1;41873:5:0;;40998:888;-1:-1:-1;;40998:888:0:o;44191:598::-;-1:-1:-1;;;;;44342:20:0;;44277:7;44342:20;;;:12;:20;;;;;;44277:7;;44342:20;;:33;;;;-1:-1:-1;44366:7:0;;;;:9;;44342:33;44339:214;;;44412:7;;44421:3;;44405:14;;44412:7;;44405:6;:14;:::i;:::-;44404:20;;;;:::i;:::-;44392:32;;44339:214;;;-1:-1:-1;;;;;44454:23:0;;;;;;:12;:23;;;;;;;;:37;;;;-1:-1:-1;44481:8:0;;;;;;;:10;;44454:37;44451:102;;;44528:8;;44538:3;;44521:15;;44528:8;;;;;44521:6;:15;:::i;:::-;44520:21;;;;:::i;:::-;44508:33;;44451:102;44576:13;;44573:171;;44652:4;44634:24;;;;:9;:24;;;;;;:34;;44659:9;;44634:34;:::i;:::-;44624:4;44606:24;;;;:9;:24;;;;;;;:63;;;;44690:42;;-1:-1:-1;;;;;44690:42:0;;;;;;;44722:9;1948:25:1;;1936:2;1921:18;;1802:177;44690:42:0;;;;;;;;44573:171;44764:16;44771:9;44764:6;:16;:::i;:::-;44756:25;44191:598;-1:-1:-1;;;;;44191:598:0:o;41894:296::-;-1:-1:-1;;;;;41993:20:0;;41971:19;41993:20;;;:9;:20;;;;;;:29;;42016:6;;41993:29;:::i;:::-;42037:17;;41971:51;;-1:-1:-1;;;;42037:17:0;;;;:52;;;;-1:-1:-1;;;;;;42059:30:0;;;;;;:19;:30;;;;;;;;42058:31;42037:52;42034:145;;;42127:16;:14;:16::i;:::-;42112:11;:31;;42104:75;;;;-1:-1:-1;;;42104:75:0;;17356:2:1;42104:75:0;;;17338:21:1;;;17375:18;;;17368:30;17434:34;17414:18;;;17407:62;17486:18;;42104:75:0;17154:356:1;40780:210:0;-1:-1:-1;;;;;40875:19:0;;40838:7;40875:19;;;:8;:19;;;;;;40910:11;;40907:50;;-1:-1:-1;;;;;40936:19:0;;40956:1;40936:19;;;:8;:19;;;;;:21;40975:7;40780:210;-1:-1:-1;;40780:210:0:o;43055:596::-;43202:16;;;43216:1;43202:16;;;;;;;;43178:21;;43202:16;;;;;;;;;;-1:-1:-1;43202:16:0;43178:40;;43247:4;43229;43234:1;43229:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;43229:23:0;;;-1:-1:-1;;;;;43229:23:0;;;;;43273:13;;;;;;;;;-1:-1:-1;;;;;43273:13:0;-1:-1:-1;;;;;43273:18:0;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;43263:4;43268:1;43263:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;43263:30:0;;;:7;;;;;;;;;:30;43338:13;;43306:60;;43323:4;;-1:-1:-1;;;43338:13:0;;;43354:11;43306:8;:60::i;:::-;43405:13;;:238;;-1:-1:-1;;;43405:238:0;;-1:-1:-1;;;43405:13:0;;;-1:-1:-1;;;;;43405:13:0;;:64;;:238;;43484:11;;43510:1;;43554:4;;43581;;43617:15;;43405:238;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14:418:1;163:2;152:9;145:21;126:4;195:6;189:13;238:6;233:2;222:9;218:18;211:34;297:6;292:2;284:6;280:15;275:2;264:9;260:18;254:50;353:1;348:2;339:6;328:9;324:22;320:31;313:42;423:2;416;412:7;407:2;399:6;395:15;391:29;380:9;376:45;372:54;364:62;;;14:418;;;;:::o;437:131::-;-1:-1:-1;;;;;512:31:1;;502:42;;492:70;;558:1;555;548:12;573:367;641:6;649;702:2;690:9;681:7;677:23;673:32;670:52;;;718:1;715;708:12;670:52;757:9;744:23;776:31;801:5;776:31;:::i;:::-;826:5;904:2;889:18;;;;876:32;;-1:-1:-1;;;573:367:1:o;1361:247::-;1420:6;1473:2;1461:9;1452:7;1448:23;1444:32;1441:52;;;1489:1;1486;1479:12;1441:52;1528:9;1515:23;1547:31;1572:5;1547:31;:::i;:::-;1597:5;1361:247;-1:-1:-1;;;1361:247:1:o;1984:160::-;2049:20;;2105:13;;2098:21;2088:32;;2078:60;;2134:1;2131;2124:12;2078:60;1984:160;;;:::o;2149:315::-;2214:6;2222;2275:2;2263:9;2254:7;2250:23;2246:32;2243:52;;;2291:1;2288;2281:12;2243:52;2330:9;2317:23;2349:31;2374:5;2349:31;:::i;:::-;2399:5;-1:-1:-1;2423:35:1;2454:2;2439:18;;2423:35;:::i;:::-;2413:45;;2149:315;;;;;:::o;2469:156::-;2535:20;;2595:4;2584:16;;2574:27;;2564:55;;2615:1;2612;2605:12;2630:252;2694:6;2702;2755:2;2743:9;2734:7;2730:23;2726:32;2723:52;;;2771:1;2768;2761:12;2723:52;2794:27;2811:9;2794:27;:::i;:::-;2784:37;;2840:36;2872:2;2861:9;2857:18;2840:36;:::i;2887:508::-;2964:6;2972;2980;3033:2;3021:9;3012:7;3008:23;3004:32;3001:52;;;3049:1;3046;3039:12;3001:52;3088:9;3075:23;3107:31;3132:5;3107:31;:::i;:::-;3157:5;-1:-1:-1;3214:2:1;3199:18;;3186:32;3227:33;3186:32;3227:33;:::i;:::-;2887:508;;3279:7;;-1:-1:-1;;;3359:2:1;3344:18;;;;3331:32;;2887:508::o;3400:127::-;3461:10;3456:3;3452:20;3449:1;3442:31;3492:4;3489:1;3482:15;3516:4;3513:1;3506:15;3532:257;3604:4;3598:11;;;3636:17;;3683:18;3668:34;;3704:22;;;3665:62;3662:88;;;3730:18;;:::i;:::-;3766:4;3759:24;3532:257;:::o;3794:275::-;3865:2;3859:9;3930:2;3911:13;;-1:-1:-1;;3907:27:1;3895:40;;3965:18;3950:34;;3986:22;;;3947:62;3944:88;;;4012:18;;:::i;:::-;4048:2;4041:22;3794:275;;-1:-1:-1;3794:275:1:o;4074:1305::-;4188:6;4241:2;4229:9;4220:7;4216:23;4212:32;4209:52;;;4257:1;4254;4247:12;4209:52;4297:9;4284:23;4330:18;4322:6;4319:30;4316:50;;;4362:1;4359;4352:12;4316:50;4385:22;;4438:4;4430:13;;4426:27;-1:-1:-1;4416:55:1;;4467:1;4464;4457:12;4416:55;4507:2;4494:16;4533:18;4525:6;4522:30;4519:56;;;4555:18;;:::i;:::-;4595:40;4631:2;4622:6;4619:1;4615:14;4611:23;4595:40;:::i;:::-;4657:3;4681:6;4676:3;4669:19;4713:2;4708:3;4704:12;4697:19;;4768:2;4758:6;4755:1;4751:14;4747:2;4743:23;4739:32;4725:46;;4794:7;4786:6;4783:19;4780:39;;;4815:1;4812;4805:12;4780:39;4847:2;4843;4839:11;4828:22;;4859:490;4875:6;4870:3;4867:15;4859:490;;;4957:4;4951:3;4942:7;4938:17;4934:28;4931:48;;;4975:1;4972;4965:12;4931:48;5005:22;;:::i;:::-;5080:17;;5110:22;;5182:2;5173:12;;5160:26;5199:33;5160:26;5199:33;:::i;:::-;5268:7;5263:2;5256:5;5252:14;5245:31;;5301:5;5296:3;5289:18;;5336:2;5331:3;5327:12;5320:19;;4901:4;4896:3;4892:14;4885:21;;4859:490;;;5368:5;4074:1305;-1:-1:-1;;;;;;4074:1305:1:o;5611:393::-;5689:6;5697;5705;5713;5766:3;5754:9;5745:7;5741:23;5737:33;5734:53;;;5783:1;5780;5773:12;5734:53;5806:27;5823:9;5806:27;:::i;:::-;5796:37;;5852:36;5884:2;5873:9;5869:18;5852:36;:::i;:::-;5842:46;;5907:36;5939:2;5928:9;5924:18;5907:36;:::i;:::-;5897:46;;5962:36;5994:2;5983:9;5979:18;5962:36;:::i;:::-;5952:46;;5611:393;;;;;;;:::o;6009:226::-;6068:6;6121:2;6109:9;6100:7;6096:23;6092:32;6089:52;;;6137:1;6134;6127:12;6089:52;-1:-1:-1;6182:23:1;;6009:226;-1:-1:-1;6009:226:1:o;6240:271::-;6314:6;6367:2;6355:9;6346:7;6342:23;6338:32;6335:52;;;6383:1;6380;6373:12;6335:52;6422:9;6409:23;6461:1;6454:5;6451:12;6441:40;;6477:1;6474;6467:12;6724:180;6780:6;6833:2;6821:9;6812:7;6808:23;6804:32;6801:52;;;6849:1;6846;6839:12;6801:52;6872:26;6888:9;6872:26;:::i;6909:782::-;7159:2;7171:21;;;7241:13;;7144:18;;;7263:22;;;7111:4;;7342:15;;;7316:2;7301:18;;;7111:4;7385:280;7399:6;7396:1;7393:13;7385:280;;;7458:13;;7496:9;;7484:22;;7558:2;7550:11;;;7544:18;-1:-1:-1;;;;;7540:44:1;7526:12;;;7519:66;7640:15;;;;7614:2;7605:12;;;;7581:1;7414:9;7385:280;;;-1:-1:-1;7682:3:1;;6909:782;-1:-1:-1;;;;;6909:782:1:o;7696:127::-;7757:10;7752:3;7748:20;7745:1;7738:31;7788:4;7785:1;7778:15;7812:4;7809:1;7802:15;7828:343;7975:2;7960:18;;8008:1;7997:13;;7987:144;;8053:10;8048:3;8044:20;8041:1;8034:31;8088:4;8085:1;8078:15;8116:4;8113:1;8106:15;7987:144;8140:25;;;7828:343;:::o;8176:346::-;8244:6;8252;8305:2;8293:9;8284:7;8280:23;8276:32;8273:52;;;8321:1;8318;8311:12;8273:52;-1:-1:-1;;8366:23:1;;;8486:2;8471:18;;;8458:32;;-1:-1:-1;8176:346:1:o;8527:294::-;8592:6;8600;8653:2;8641:9;8632:7;8628:23;8624:32;8621:52;;;8669:1;8666;8659:12;8621:52;8714:23;;;-1:-1:-1;8780:35:1;8811:2;8796:18;;8780:35;:::i;8826:388::-;8894:6;8902;8955:2;8943:9;8934:7;8930:23;8926:32;8923:52;;;8971:1;8968;8961:12;8923:52;9010:9;8997:23;9029:31;9054:5;9029:31;:::i;:::-;9079:5;-1:-1:-1;9136:2:1;9121:18;;9108:32;9149:33;9108:32;9149:33;:::i;:::-;9201:7;9191:17;;;8826:388;;;;;:::o;9219:182::-;9276:6;9329:2;9317:9;9308:7;9304:23;9300:32;9297:52;;;9345:1;9342;9335:12;9297:52;9368:27;9385:9;9368:27;:::i;9406:380::-;9485:1;9481:12;;;;9528;;;9549:61;;9603:4;9595:6;9591:17;9581:27;;9549:61;9656:2;9648:6;9645:14;9625:18;9622:38;9619:161;;9702:10;9697:3;9693:20;9690:1;9683:31;9737:4;9734:1;9727:15;9765:4;9762:1;9755:15;9619:161;;9406:380;;;:::o;9791:356::-;9993:2;9975:21;;;10012:18;;;10005:30;10071:34;10066:2;10051:18;;10044:62;10138:2;10123:18;;9791:356::o;10152:400::-;10354:2;10336:21;;;10393:2;10373:18;;;10366:30;10432:34;10427:2;10412:18;;10405:62;-1:-1:-1;;;10498:2:1;10483:18;;10476:34;10542:3;10527:19;;10152:400::o;10966:127::-;11027:10;11022:3;11018:20;11015:1;11008:31;11058:4;11055:1;11048:15;11082:4;11079:1;11072:15;11098:128;11165:9;;;11186:11;;;11183:37;;;11200:18;;:::i;11231:127::-;11292:10;11287:3;11283:20;11280:1;11273:31;11323:4;11320:1;11313:15;11347:4;11344:1;11337:15;11363:148;11451:4;11430:12;;;11444;;;11426:31;;11469:13;;11466:39;;;11485:18;;:::i;12228:168::-;12301:9;;;12332;;12349:15;;;12343:22;;12329:37;12319:71;;12370:18;;:::i;12401:217::-;12441:1;12467;12457:132;;12511:10;12506:3;12502:20;12499:1;12492:31;12546:4;12543:1;12536:15;12574:4;12571:1;12564:15;12457:132;-1:-1:-1;12603:9:1;;12401:217::o;12623:125::-;12688:9;;;12709:10;;;12706:36;;;12722:18;;:::i;13361:456::-;13449:6;13457;13465;13518:2;13506:9;13497:7;13493:23;13489:32;13486:52;;;13534:1;13531;13524:12;13486:52;-1:-1:-1;;13579:16:1;;13685:2;13670:18;;13664:25;13781:2;13766:18;;;13760:25;13579:16;;13664:25;;-1:-1:-1;13760:25:1;13361:456;-1:-1:-1;13361:456:1:o;17515:251::-;17585:6;17638:2;17626:9;17617:7;17613:23;17609:32;17606:52;;;17654:1;17651;17644:12;17606:52;17686:9;17680:16;17705:31;17730:5;17705:31;:::i;17771:959::-;18033:4;18081:3;18070:9;18066:19;18112:6;18101:9;18094:25;18155:6;18150:2;18139:9;18135:18;18128:34;18198:3;18193:2;18182:9;18178:18;18171:31;18222:6;18257;18251:13;18288:6;18280;18273:22;18326:3;18315:9;18311:19;18304:26;;18365:2;18357:6;18353:15;18339:29;;18386:1;18396:195;18410:6;18407:1;18404:13;18396:195;;;18475:13;;-1:-1:-1;;;;;18471:39:1;18459:52;;18540:2;18566:15;;;;18531:12;;;;18507:1;18425:9;18396:195;;;-1:-1:-1;;;;;;;18647:32:1;;;;18642:2;18627:18;;18620:60;-1:-1:-1;;18711:3:1;18696:19;18689:35;18608:3;17771:959;-1:-1:-1;;;17771:959:1:o
Swarm Source
ipfs://753c4f19eb73f44c4754df6be1ce4b08f0af1123c92e64fe9fc6f7ed2fc2e535
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.