ERC-20
Overview
Max Total Supply
1,000,000,000 RASTA
Holders
97
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
859,840.667710728 RASTAValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Rasta
Compiler Version
v0.8.10+commit.fc410830
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-04-20 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @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 `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, 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 `sender` to `recipient` 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 sender, address recipient, uint256 amount ) external returns (bool); /** * @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); } pragma solidity ^0.8.0; // CAUTION // This version of SafeMath should only be used with Solidity 0.8 or later, // because it relies on the compiler's built in overflow checks. /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is no longer needed starting with Solidity 0.8. The compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } pragma solidity ^0.8.0; /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } pragma solidity ^0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _setOwner(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } pragma solidity ^0.8.0; /** * @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 * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; assembly { size := extcodesize(account) } return size > 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); } function _verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) private 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 assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } pragma solidity >=0.5.0; interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } pragma solidity >=0.5.0; interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } pragma solidity >=0.6.2; interface IUniswapV2Router01 { 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 removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } pragma solidity >=0.6.2; interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); 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; } pragma solidity ^0.8.4; contract Rasta is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; address payable public marketingAddress = payable(0xbc17563D746dc307659DF7C76a6aB88fa47c339A); address payable public miscAddress = payable(0x000000000000000000000000000000000000dEaD); address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD; mapping(address => uint256) private _rOwned; mapping(address => uint256) private _tOwned; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) private _isSniper; address[] private _confirmedSnipers; mapping(address => bool) private _isExcludedFromFee; mapping(address => bool) private _isExcluded; address[] private _excluded; uint256 private constant MAX = ~uint256(0); uint256 private _tTotal = 1000000000 * 10**9; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; string private _name = 'RastaMusk'; string private _symbol = 'RASTA'; uint8 private _decimals = 9; uint256 public buyTotalFees; uint256 public buyMarketingFee; uint256 public buyLiquidityFee; uint256 public buyMiscFee; uint256 private _previousbuyTotalFees; uint256 private _previousbuyMarketingFee; uint256 private _previousbuyLiquidityFee; uint256 private _previousbuyMiscFee; uint256 public sellTotalFees; uint256 public sellMarketingFee; uint256 public sellLiquidityFee; uint256 public sellMiscFee; uint256 private _previoussellTotalFees; uint256 private _previoussellMarketingFee; uint256 private _previoussellLiquidityFee; uint256 private _previoussellMiscFee; uint256 public tokensForMarketing; uint256 public tokensForLiquidity; uint256 public tokensForMisc; uint256 public _buyTaxFee = 1; uint256 public _sellTaxFee = 5; uint256 private _previousBuyTaxFee = _buyTaxFee; uint256 private _previousSellTaxFee = _sellTaxFee; uint256 launchTime; mapping (address => bool) public _isExcludedMaxTransactionAmount; bool public limitsInEffect = true; uint256 public maxTransactionAmount; uint256 public maxWallet; IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; bool inSwapAndLiquify; bool tradingOpen = false; event SwapETHForTokens(uint256 amountIn, address[] path); event SwapTokensForETH(uint256 amountIn, address[] path); modifier lockTheSwap() { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor() { _rOwned[_msgSender()] = _rTotal; maxTransactionAmount = _tTotal * 9 / 10000; // 0.09% maxTransactionAmountTxn maxWallet = _tTotal * 25 / 10000; // 0.25% maxWallet uint256 _buyMarketingFee = 2; uint256 _buyLiquidityFee = 1; uint256 _buyMiscFee = 0; uint256 _sellMarketingFee = 10; uint256 _sellLiquidityFee = 5; uint256 _sellMiscFee = 0; buyMarketingFee = _buyMarketingFee; buyLiquidityFee = _buyLiquidityFee; buyMiscFee = _buyMiscFee; buyTotalFees = buyMarketingFee + buyLiquidityFee + buyMiscFee; sellMarketingFee = _sellMarketingFee; sellLiquidityFee = _sellLiquidityFee; sellMiscFee = _sellMiscFee; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellMiscFee; emit Transfer(address(0), _msgSender(), _tTotal); } // remove limits after token is stable function removeLimits() external onlyOwner returns (bool){ limitsInEffect = false; return true; } function updateMaxTxnAmount(uint256 newNum) external onlyOwner { require(newNum >= (totalSupply() * 1 / 10000)/1e9, "Cannot set maxTransactionAmount lower than 0.01%"); maxTransactionAmount = newNum * (10**9); } function updateBuyFees(uint256 _marketingFee, uint256 _liquidityFees, uint256 _miscFee) external onlyOwner { buyMarketingFee = _marketingFee; buyLiquidityFee = _liquidityFees; buyMiscFee = _miscFee; buyTotalFees = buyMarketingFee + buyLiquidityFee + buyMiscFee; } function updateSellFees(uint256 _marketingFee, uint256 _liquidityFees, uint256 _miscFee) external onlyOwner { sellMarketingFee = _marketingFee; sellLiquidityFee = _liquidityFees; sellMiscFee = _miscFee; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellMiscFee; } function updateMaxWalletAmount(uint256 newNum) external onlyOwner { require(newNum >= (totalSupply() * 5 / 10000)/1e9, "Cannot set maxWallet lower than 0.05%"); maxWallet = newNum * (10**9); } function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner { _isExcludedMaxTransactionAmount[updAds] = isEx; } function initContract() external onlyOwner { // PancakeSwap: 0x10ED43C718714eb63d5aA57B78B54704E256024E // Uniswap V2: 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02( 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D ); uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair( address(this), _uniswapV2Router.WETH() ); uniswapV2Router = _uniswapV2Router; _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; } function openTrading() external onlyOwner { _buyTaxFee = _previousBuyTaxFee; _sellTaxFee = _previousSellTaxFee; tradingOpen = true; launchTime = block.timestamp; } function pauseTrading() external onlyOwner { tradingOpen = false; } function resumeTrading() external onlyOwner { tradingOpen = true; } 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 _tTotal; } function balanceOf(address account) public view override returns (uint256) { if (_isExcluded[account]) return _tOwned[account]; return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance( address owner, address spender ) public view override returns (uint256) { return _allowances[owner][spender]; } function approve( address spender, uint256 amount ) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public override returns (bool) { _transfer(sender, recipient, amount); _approve( sender, _msgSender(), _allowances[sender][_msgSender()].sub( amount, 'ERC20: transfer amount exceeds allowance' ) ); return true; } function increaseAllowance( address spender, uint256 addedValue ) public virtual returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue) ); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender].sub( subtractedValue, 'ERC20: decreased allowance below zero' ) ); return true; } function isExcludedFromReward(address account) public view returns (bool) { return _isExcluded[account]; } function totalFees() public view returns (uint256) { return _tFeeTotal; } function tokenFromReflection(uint256 rAmount) public view returns (uint256) { require(rAmount <= _rTotal, 'Amount must be less than total reflections'); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } function excludeFromReward(address account) public onlyOwner { require(!_isExcluded[account], 'Account is already excluded'); if (_rOwned[account] > 0) { _tOwned[account] = tokenFromReflection(_rOwned[account]); } _isExcluded[account] = true; _excluded.push(account); } function includeInReward(address account) external onlyOwner { require(_isExcluded[account], 'Account is already excluded'); for (uint256 i = 0; i < _excluded.length; i++) { if (_excluded[i] == account) { _excluded[i] = _excluded[_excluded.length - 1]; _tOwned[account] = 0; _isExcluded[account] = false; _excluded.pop(); break; } } } function _approve( address owner, address spender, uint256 amount ) private { require(owner != address(0), 'ERC20: approve from the zero address'); require(spender != address(0), 'ERC20: approve to the zero address'); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer( address from, address to, uint256 amount ) private { require(from != address(0), 'ERC20: transfer from the zero address'); require(to != address(0), 'ERC20: transfer to the zero address'); require(amount > 0, 'Transfer amount must be greater than zero'); require(!_isSniper[to], 'You have no power here!'); require(!_isSniper[msg.sender], 'You have no power here!'); // buy if ( from == uniswapV2Pair && to != address(uniswapV2Router) && !_isExcludedFromFee[to] ) { require(tradingOpen, 'Trading not yet enabled.'); //antibot if (block.timestamp == launchTime) { _isSniper[to] = true; _confirmedSnipers.push(to); } } if(limitsInEffect){ if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) ){ if(!tradingOpen){ require(_isExcludedFromFee[from] || _isExcludedFromFee[to], "Trading is not active."); } //when buy if (from == uniswapV2Pair && !_isExcludedMaxTransactionAmount[to]) { require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount."); require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded"); } //when sell else if (to == uniswapV2Pair && !_isExcludedMaxTransactionAmount[from]) { require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount."); } else if(!_isExcludedMaxTransactionAmount[to]){ require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded"); } } } uint256 contractTokenBalance = balanceOf(address(this)); //sell if (!inSwapAndLiquify && tradingOpen && to == uniswapV2Pair) { if (contractTokenBalance > 0) { swapTokens(contractTokenBalance); } } bool takeFee = false; //take fee only on swaps if ( (from == uniswapV2Pair || to == uniswapV2Pair) && !(_isExcludedFromFee[from] || _isExcludedFromFee[to]) ) { takeFee = true; } //sell uint256 fees = 0; if (to == uniswapV2Pair){ if (takeFee && tradingOpen){ fees = amount.mul(sellTotalFees).div(100); tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees; tokensForMisc += fees * sellMiscFee / sellTotalFees; tokensForMarketing += fees * sellMarketingFee / sellTotalFees; } _tokenTransfer(from, to, amount, takeFee, true); } else{ if (takeFee && tradingOpen){ fees = amount.mul(buyTotalFees).div(100); tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees; tokensForMisc += fees * buyMiscFee / buyTotalFees; tokensForMarketing += fees * buyMarketingFee / buyTotalFees; } _tokenTransfer(from, to, amount, takeFee, false); } } function swapTokens(uint256 contractBalance) private lockTheSwap{ uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForMisc; bool success; if(contractBalance == 0 || totalTokensToSwap == 0) {return;} if(contractBalance > totalSupply() * 5 / 10000 * 20){ contractBalance = totalSupply() * 5 / 10000 * 20; } // Halve the amount of liquidity tokens uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2; uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens); uint256 initialETHBalance = address(this).balance; swapTokensForEth(amountToSwapForETH); uint256 ethBalance = address(this).balance.sub(initialETHBalance); uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div(totalTokensToSwap); uint256 ethForMisc = ethBalance.mul(tokensForMisc).div(totalTokensToSwap); uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForMisc; tokensForLiquidity = 0; tokensForMarketing = 0; tokensForMisc = 0; (success,) = address(miscAddress).call{value: ethForMisc}(""); if(liquidityTokens > 0 && ethForLiquidity > 0){ addLiquidity(liquidityTokens, ethForLiquidity); } (success,) = address(marketingAddress).call{value: address(this).balance}(""); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), // The contract block.timestamp ); emit SwapTokensForETH(tokenAmount, path); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{ value: ethAmount }( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable owner(), block.timestamp ); } function _tokenTransfer( address sender, address recipient, uint256 amount, bool takeFee, bool isSell ) private { if (!takeFee) removeAllFee(); if (_isExcluded[sender] && !_isExcluded[recipient]) { _transferFromExcluded(sender, recipient, amount, isSell); } else if (!_isExcluded[sender] && _isExcluded[recipient]) { _transferToExcluded(sender, recipient, amount, isSell); } else if (_isExcluded[sender] && _isExcluded[recipient]) { _transferBothExcluded(sender, recipient, amount, isSell); } else { _transferStandard(sender, recipient, amount, isSell); } if (!takeFee) restoreAllFee(); } function _transferStandard( address sender, address recipient, uint256 tAmount, bool isSell ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity ) = _getValues(tAmount, isSell); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferToExcluded( address sender, address recipient, uint256 tAmount, bool isSell ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity ) = _getValues(tAmount, isSell); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferFromExcluded( address sender, address recipient, uint256 tAmount, bool isSell ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity ) = _getValues(tAmount, isSell); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferBothExcluded( address sender, address recipient, uint256 tAmount, bool isSell ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity ) = _getValues(tAmount, isSell); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } function _getValues(uint256 tAmount, bool isSell) private view returns ( uint256, uint256, uint256, uint256, uint256, uint256 ) { (uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getTValues( tAmount, isSell ); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues( tAmount, tFee, tLiquidity, _getRate() ); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tLiquidity); } function _getTValues(uint256 tAmount, bool isSell) private view returns ( uint256, uint256, uint256 ) { uint256 tFee = calculateTaxFee(tAmount, isSell); uint256 tLiquidity = calculateFee(tAmount, isSell); uint256 tTransferAmount = tAmount.sub(tFee).sub(tLiquidity); return (tTransferAmount, tFee, tLiquidity); } function _getRValues( uint256 tAmount, uint256 tFee, uint256 tLiquidity, uint256 currentRate ) private pure returns ( uint256, uint256, uint256 ) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rLiquidity = tLiquidity.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee).sub(rLiquidity); return (rAmount, rTransferAmount, rFee); } function _getRate() private view returns (uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply.div(tSupply); } function _getCurrentSupply() private view returns (uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; for (uint256 i = 0; i < _excluded.length; i++) { if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal); rSupply = rSupply.sub(_rOwned[_excluded[i]]); tSupply = tSupply.sub(_tOwned[_excluded[i]]); } if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } function _takeLiquidity(uint256 tLiquidity) private { uint256 currentRate = _getRate(); uint256 rLiquidity = tLiquidity.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity); if (_isExcluded[address(this)]) _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity); } function calculateTaxFee(uint256 _amount, bool isSell) private view returns (uint256) { if (isSell){ return _amount.mul(_sellTaxFee).div(10**2); } else{ return _amount.mul(_buyTaxFee).div(10**2); } } function calculateFee(uint256 _amount, bool isSell) private view returns (uint256) { if (isSell){ return _amount.mul(sellTotalFees).div(100); } else{ return _amount.mul(buyTotalFees).div(100); } } function removeAllFee() private { _previousbuyTotalFees = buyTotalFees; _previoussellTotalFees = sellTotalFees; _previousbuyLiquidityFee = buyLiquidityFee; _previoussellLiquidityFee = sellLiquidityFee; _previousbuyMiscFee = buyMiscFee; _previoussellMiscFee = sellMiscFee; _previousbuyMarketingFee = buyMarketingFee; _previoussellMarketingFee = sellMarketingFee; _previousBuyTaxFee = _buyTaxFee; _previousSellTaxFee = _sellTaxFee; _buyTaxFee = 0; _sellTaxFee = 0; buyTotalFees = 0; sellTotalFees = 0; buyLiquidityFee = 0; sellLiquidityFee = 0; buyMiscFee = 0; sellMiscFee = 0; buyMarketingFee = 0; sellMarketingFee = 0; } function restoreAllFee() private { _buyTaxFee = _previousBuyTaxFee; _sellTaxFee = _previousSellTaxFee; buyTotalFees = _previousbuyTotalFees; sellTotalFees = _previoussellTotalFees; buyLiquidityFee = _previousbuyLiquidityFee; sellLiquidityFee = _previoussellLiquidityFee; buyMiscFee = _previousbuyMiscFee; sellMiscFee = _previoussellMiscFee; buyMarketingFee = _previousbuyMarketingFee; sellMarketingFee = _previoussellMarketingFee; } function isExcludedFromFee(address account) public view returns (bool) { return _isExcludedFromFee[account]; } function excludeFromFee(address account) public onlyOwner { _isExcludedFromFee[account] = true; } function includeInFee(address account) public onlyOwner { _isExcludedFromFee[account] = false; } function setTaxFeePercent(uint256 buyTaxFee, uint256 sellTaxFee) external onlyOwner { _buyTaxFee = buyTaxFee; _sellTaxFee = sellTaxFee; } function setMarketingAddress(address _marketingAddress) external onlyOwner { marketingAddress = payable(_marketingAddress); } function setMiscAddress(address _miscAddress) external onlyOwner { miscAddress = payable(_miscAddress); } function isRemovedSniper(address account) public view returns (bool) { return _isSniper[account]; } function _removeSniper(address account) external onlyOwner { require( account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 'We can not blacklist Uniswap' ); require(!_isSniper[account], 'Account is already blacklisted'); _isSniper[account] = true; _confirmedSnipers.push(account); } function _amnestySniper(address account) external onlyOwner { require(_isSniper[account], 'Account is not blacklisted'); for (uint256 i = 0; i < _confirmedSnipers.length; i++) { if (_confirmedSnipers[i] == account) { _confirmedSnipers[i] = _confirmedSnipers[_confirmedSnipers.length - 1]; _isSniper[account] = false; _confirmedSnipers.pop(); break; } } } //to recieve ETH from uniswapV2Router when swaping receive() external payable {} // Withdraw ETH that gets stuck in contract by accident function emergencyWithdraw() external onlyOwner { bool success; (success,) = address(msg.sender).call{value: address(this).balance}(""); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","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":[{"internalType":"address","name":"account","type":"address"}],"name":"_amnestySniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_buyTaxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"_removeSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_sellTaxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMiscFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"emergencyWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isRemovedSniper","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"miscAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pauseTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"resumeTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMiscFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingAddress","type":"address"}],"name":"setMarketingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_miscAddress","type":"address"}],"name":"setMiscAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyTaxFee","type":"uint256"},{"internalType":"uint256","name":"sellTaxFee","type":"uint256"}],"name":"setTaxFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMisc","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFees","type":"uint256"},{"internalType":"uint256","name":"_miscFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFees","type":"uint256"},{"internalType":"uint256","name":"_miscFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a06040526001805473bc17563d746dc307659df7c76a6ab88fa47c339a6001600160a01b0319918216179091556002805461dead921682179055608052670de0b6b3a7640000600b81905562000059906000196200032f565b62000067906000196200035c565b600c556040805180820190915260098082526852617374614d75736b60b81b60209092019182526200009c91600e9162000273565b5060408051808201909152600580825264524153544160d81b6020909201918252620000cb91600f9162000273565b506010805460ff1990811660091790915560016024819055600560258190556026829055602755602a8054909216179055602e805460ff60a81b191690553480156200011657600080fd5b50620001223362000223565b600c5433600090815260036020526040902055600b54612710906200014990600962000376565b62000155919062000398565b602b55600b54612710906200016c90601962000376565b62000178919062000398565b602c55600260128190556001601381905560006014819055600a60058280620001a28688620003af565b620001ae9190620003af565b601155601a839055601b829055601c81905580620001cd8385620003af565b620001d99190620003af565b601955600b5460405190815233906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a350505050505062000407565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8280546200028190620003ca565b90600052602060002090601f016020900481019282620002a55760008555620002f0565b82601f10620002c057805160ff1916838001178555620002f0565b82800160010185558215620002f0579182015b82811115620002f0578251825591602001919060010190620002d3565b50620002fe92915062000302565b5090565b5b80821115620002fe576000815560010162000303565b634e487b7160e01b600052601260045260246000fd5b60008262000341576200034162000319565b500690565b634e487b7160e01b600052601160045260246000fd5b60008282101562000371576200037162000346565b500390565b600081600019048311821515161562000393576200039362000346565b500290565b600082620003aa57620003aa62000319565b500490565b60008219821115620003c557620003c562000346565b500190565b600181811c90821680620003df57607f821691505b602082108114156200040157634e487b7160e01b600052602260045260246000fd5b50919050565b60805161380c6200042360003960006105b5015261380c6000f3fe6080604052600436106103a65760003560e01c806370a08231116101e7578063a5ece9411161010d578063dd62ed3e116100a0578063f2fde38b1161006f578063f2fde38b14610ab0578063f375b25314610ad0578063f637434214610af0578063f8b45b0514610b0657600080fd5b8063dd62ed3e14610a1e578063ea2f0b3714610a64578063efcc52de14610a84578063f11a24d314610a9a57600080fd5b8063c8c8ebe4116100dc578063c8c8ebe4146109c8578063c9567bf9146109de578063d85ba063146109f3578063db2e21bc14610a0957600080fd5b8063a5ece94114610948578063a9059cbb14610968578063c17b5b8c14610988578063c18bc195146109a857600080fd5b806388f8202011610185578063921369131161015457806392136913146108e757806395d89b41146108fd57806398b5162214610912578063a457c2d71461092857600080fd5b806388f82020146108505780638963ea1c146108895780638da5cb5b146108a9578063906e9dd0146108c757600080fd5b80637571336a116101c15780637571336a146107e55780637bce5a04146108055780638095d5641461081b5780638203f5fe1461083b57600080fd5b806370a082311461079b578063715018a6146107bb578063751039fc146107d057600080fd5b806323b872dd116102cc578063395093511161026a57806352390c021161023957806352390c02146106f35780635342acb414610713578063610d5b191461074c5780636a486a8e1461078557600080fd5b80633950935114610679578063437823ec1461069957806349bd5a5e146106b95780634a62bb65146106d957600080fd5b806330b263ba116102a657806330b263ba146105f7578063313ce56714610617578063362a3c5d146106395780633685d4191461065957600080fd5b806323b872dd1461058357806327c8f835146105a35780632d838119146105d757600080fd5b806310d5de53116103445780631a8145bb116103135780631a8145bb146105215780631f3fed8f14610537578063200a692d1461054d578063203e727e1461056357600080fd5b806310d5de531461048f57806313114a9d146104bf5780631694505e146104d457806318160ddd1461050c57600080fd5b8063074b323f11610380578063074b323f14610414578063095ea7b31461042a57806309aa3c031461045a5780631031e36e1461047a57600080fd5b8063067e5a4a146103b25780630694db1e146103db57806306fdde03146103f257600080fd5b366103ad57005b600080fd5b3480156103be57600080fd5b506103c860235481565b6040519081526020015b60405180910390f35b3480156103e757600080fd5b506103f0610b1c565b005b3480156103fe57600080fd5b50610407610b64565b6040516103d29190613399565b34801561042057600080fd5b506103c860145481565b34801561043657600080fd5b5061044a610445366004613403565b610bf6565b60405190151581526020016103d2565b34801561046657600080fd5b506103f061047536600461342f565b610c0d565b34801561048657600080fd5b506103f0610c59565b34801561049b57600080fd5b5061044a6104aa36600461342f565b60296020526000908152604090205460ff1681565b3480156104cb57600080fd5b50600d546103c8565b3480156104e057600080fd5b50602d546104f4906001600160a01b031681565b6040516001600160a01b0390911681526020016103d2565b34801561051857600080fd5b50600b546103c8565b34801561052d57600080fd5b506103c860225481565b34801561054357600080fd5b506103c860215481565b34801561055957600080fd5b506103c860255481565b34801561056f57600080fd5b506103f061057e36600461344c565b610c92565b34801561058f57600080fd5b5061044a61059e366004613465565b610d68565b3480156105af57600080fd5b506104f47f000000000000000000000000000000000000000000000000000000000000000081565b3480156105e357600080fd5b506103c86105f236600461344c565b610dd1565b34801561060357600080fd5b506103f06106123660046134a6565b610e55565b34801561062357600080fd5b5060105460405160ff90911681526020016103d2565b34801561064557600080fd5b506103f061065436600461342f565b610e8a565b34801561066557600080fd5b506103f061067436600461342f565b611038565b34801561068557600080fd5b5061044a610694366004613403565b6111c5565b3480156106a557600080fd5b506103f06106b436600461342f565b6111fb565b3480156106c557600080fd5b50602e546104f4906001600160a01b031681565b3480156106e557600080fd5b50602a5461044a9060ff1681565b3480156106ff57600080fd5b506103f061070e36600461342f565b611249565b34801561071f57600080fd5b5061044a61072e36600461342f565b6001600160a01b031660009081526008602052604090205460ff1690565b34801561075857600080fd5b5061044a61076736600461342f565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561079157600080fd5b506103c860195481565b3480156107a757600080fd5b506103c86107b636600461342f565b61139c565b3480156107c757600080fd5b506103f06113fb565b3480156107dc57600080fd5b5061044a611431565b3480156107f157600080fd5b506103f06108003660046134c8565b61146c565b34801561081157600080fd5b506103c860125481565b34801561082757600080fd5b506103f0610836366004613506565b6114c1565b34801561084757600080fd5b506103f0611517565b34801561085c57600080fd5b5061044a61086b36600461342f565b6001600160a01b031660009081526009602052604090205460ff1690565b34801561089557600080fd5b506002546104f4906001600160a01b031681565b3480156108b557600080fd5b506000546001600160a01b03166104f4565b3480156108d357600080fd5b506103f06108e236600461342f565b611704565b3480156108f357600080fd5b506103c8601a5481565b34801561090957600080fd5b50610407611750565b34801561091e57600080fd5b506103c8601c5481565b34801561093457600080fd5b5061044a610943366004613403565b61175f565b34801561095457600080fd5b506001546104f4906001600160a01b031681565b34801561097457600080fd5b5061044a610983366004613403565b6117ae565b34801561099457600080fd5b506103f06109a3366004613506565b6117bb565b3480156109b457600080fd5b506103f06109c336600461344c565b611811565b3480156109d457600080fd5b506103c8602b5481565b3480156109ea57600080fd5b506103f06118dc565b3480156109ff57600080fd5b506103c860115481565b348015610a1557600080fd5b506103f061192b565b348015610a2a57600080fd5b506103c8610a39366004613532565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b348015610a7057600080fd5b506103f0610a7f36600461342f565b6119a2565b348015610a9057600080fd5b506103c860245481565b348015610aa657600080fd5b506103c860135481565b348015610abc57600080fd5b506103f0610acb36600461342f565b6119ed565b348015610adc57600080fd5b506103f0610aeb36600461342f565b611a88565b348015610afc57600080fd5b506103c8601b5481565b348015610b1257600080fd5b506103c8602c5481565b6000546001600160a01b03163314610b4f5760405162461bcd60e51b8152600401610b4690613560565b60405180910390fd5b602e805460ff60a81b1916600160a81b179055565b6060600e8054610b7390613595565b80601f0160208091040260200160405190810160405280929190818152602001828054610b9f90613595565b8015610bec5780601f10610bc157610100808354040283529160200191610bec565b820191906000526020600020905b815481529060010190602001808311610bcf57829003601f168201915b5050505050905090565b6000610c03338484611bee565b5060015b92915050565b6000546001600160a01b03163314610c375760405162461bcd60e51b8152600401610b4690613560565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610c835760405162461bcd60e51b8152600401610b4690613560565b602e805460ff60a81b19169055565b6000546001600160a01b03163314610cbc5760405162461bcd60e51b8152600401610b4690613560565b633b9aca00612710610ccd600b5490565b610cd89060016135e6565b610ce29190613605565b610cec9190613605565b811015610d545760405162461bcd60e51b815260206004820152603060248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526f6c6f776572207468616e20302e30312560801b6064820152608401610b46565b610d6281633b9aca006135e6565b602b5550565b6000610d75848484611d12565b610dc78433610dc28560405180606001604052806028815260200161378a602891396001600160a01b038a16600090815260056020908152604080832033845290915290205491906125f6565b611bee565b5060019392505050565b6000600c54821115610e385760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610b46565b6000610e42612622565b9050610e4e8382612645565b9392505050565b6000546001600160a01b03163314610e7f5760405162461bcd60e51b8152600401610b4690613560565b602491909155602555565b6000546001600160a01b03163314610eb45760405162461bcd60e51b8152600401610b4690613560565b6001600160a01b03811660009081526006602052604090205460ff16610f1c5760405162461bcd60e51b815260206004820152601a60248201527f4163636f756e74206973206e6f7420626c61636b6c69737465640000000000006044820152606401610b46565b60005b60075481101561103457816001600160a01b031660078281548110610f4657610f46613627565b6000918252602090912001546001600160a01b031614156110225760078054610f719060019061363d565b81548110610f8157610f81613627565b600091825260209091200154600780546001600160a01b039092169183908110610fad57610fad613627565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600690915260409020805460ff191690556007805480610ffc57610ffc613654565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b8061102c8161366a565b915050610f1f565b5050565b6000546001600160a01b031633146110625760405162461bcd60e51b8152600401610b4690613560565b6001600160a01b03811660009081526009602052604090205460ff166110ca5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610b46565b60005b600a5481101561103457816001600160a01b0316600a82815481106110f4576110f4613627565b6000918252602090912001546001600160a01b031614156111b357600a805461111f9060019061363d565b8154811061112f5761112f613627565b600091825260209091200154600a80546001600160a01b03909216918390811061115b5761115b613627565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600482526040808220829055600990925220805460ff19169055600a805480610ffc57610ffc613654565b806111bd8161366a565b9150506110cd565b3360008181526005602090815260408083206001600160a01b03871684529091528120549091610c03918590610dc29086612651565b6000546001600160a01b031633146112255760405162461bcd60e51b8152600401610b4690613560565b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b6000546001600160a01b031633146112735760405162461bcd60e51b8152600401610b4690613560565b6001600160a01b03811660009081526009602052604090205460ff16156112dc5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610b46565b6001600160a01b03811660009081526003602052604090205415611336576001600160a01b03811660009081526003602052604090205461131c90610dd1565b6001600160a01b0382166000908152600460205260409020555b6001600160a01b03166000818152600960205260408120805460ff19166001908117909155600a805491820181559091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180546001600160a01b0319169091179055565b6001600160a01b03811660009081526009602052604081205460ff16156113d957506001600160a01b031660009081526004602052604090205490565b6001600160a01b038216600090815260036020526040902054610c0790610dd1565b6000546001600160a01b031633146114255760405162461bcd60e51b8152600401610b4690613560565b61142f600061265d565b565b600080546001600160a01b0316331461145c5760405162461bcd60e51b8152600401610b4690613560565b50602a805460ff19169055600190565b6000546001600160a01b031633146114965760405162461bcd60e51b8152600401610b4690613560565b6001600160a01b03919091166000908152602960205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146114eb5760405162461bcd60e51b8152600401610b4690613560565b601283905560138290556014819055806115058385613685565b61150f9190613685565b601155505050565b6000546001600160a01b031633146115415760405162461bcd60e51b8152600401610b4690613560565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611598573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115bc919061369d565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611609573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061162d919061369d565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801561167a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061169e919061369d565b602e80546001600160a01b03199081166001600160a01b0393841617909155602d80549091169282169290921790915560008054909116815260086020526040808220805460ff1990811660019081179092553084529190922080549091169091179055565b6000546001600160a01b0316331461172e5760405162461bcd60e51b8152600401610b4690613560565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6060600f8054610b7390613595565b6000610c033384610dc2856040518060600160405280602581526020016137b2602591393360009081526005602090815260408083206001600160a01b038d16845290915290205491906125f6565b6000610c03338484611d12565b6000546001600160a01b031633146117e55760405162461bcd60e51b8152600401610b4690613560565b601a839055601b829055601c819055806117ff8385613685565b6118099190613685565b601955505050565b6000546001600160a01b0316331461183b5760405162461bcd60e51b8152600401610b4690613560565b633b9aca0061271061184c600b5490565b6118579060056135e6565b6118619190613605565b61186b9190613605565b8110156118c85760405162461bcd60e51b815260206004820152602560248201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015264302e30352560d81b6064820152608401610b46565b6118d681633b9aca006135e6565b602c5550565b6000546001600160a01b031633146119065760405162461bcd60e51b8152600401610b4690613560565b602654602455602754602555602e805460ff60a81b1916600160a81b17905542602855565b6000546001600160a01b031633146119555760405162461bcd60e51b8152600401610b4690613560565b604051600090339047908381818185875af1925050503d8060008114611997576040519150601f19603f3d011682016040523d82523d6000602084013e61199c565b606091505b50505050565b6000546001600160a01b031633146119cc5760405162461bcd60e51b8152600401610b4690613560565b6001600160a01b03166000908152600860205260409020805460ff19169055565b6000546001600160a01b03163314611a175760405162461bcd60e51b8152600401610b4690613560565b6001600160a01b038116611a7c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b46565b611a858161265d565b50565b6000546001600160a01b03163314611ab25760405162461bcd60e51b8152600401610b4690613560565b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0382161415611b1f5760405162461bcd60e51b815260206004820152601c60248201527f57652063616e206e6f7420626c61636b6c69737420556e6973776170000000006044820152606401610b46565b6001600160a01b03811660009081526006602052604090205460ff1615611b885760405162461bcd60e51b815260206004820152601e60248201527f4163636f756e7420697320616c726561647920626c61636b6c697374656400006044820152606401610b46565b6001600160a01b03166000818152600660205260408120805460ff191660019081179091556007805491820181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b0319169091179055565b6001600160a01b038316611c505760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b46565b6001600160a01b038216611cb15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b46565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611d765760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b46565b6001600160a01b038216611dd85760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b46565b60008111611e3a5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610b46565b6001600160a01b03821660009081526006602052604090205460ff1615611e9d5760405162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b6044820152606401610b46565b3360009081526006602052604090205460ff1615611ef75760405162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b6044820152606401610b46565b602e546001600160a01b038481169116148015611f225750602d546001600160a01b03838116911614155b8015611f4757506001600160a01b03821660009081526008602052604090205460ff16155b1561201557602e54600160a81b900460ff16611fa55760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642e00000000000000006044820152606401610b46565b602854421415612015576001600160a01b0382166000818152600660205260408120805460ff191660019081179091556007805491820181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b03191690911790555b602a5460ff1615612341576000546001600160a01b0384811691161480159061204c57506000546001600160a01b03838116911614155b801561206057506001600160a01b03821615155b801561207757506001600160a01b03821661dead14155b1561234157602e54600160a81b900460ff16612111576001600160a01b03831660009081526008602052604090205460ff16806120cc57506001600160a01b03821660009081526008602052604090205460ff165b6121115760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610b46565b602e546001600160a01b03848116911614801561214757506001600160a01b03821660009081526029602052604090205460ff16155b1561221b57602b548111156121bc5760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610b46565b602c546121c88361139c565b6121d29083613685565b11156122165760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610b46565b612341565b602e546001600160a01b03838116911614801561225157506001600160a01b03831660009081526029602052604090205460ff16155b156122c757602b548111156122165760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610b46565b6001600160a01b03821660009081526029602052604090205460ff1661234157602c546122f38361139c565b6122fd9083613685565b11156123415760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610b46565b600061234c3061139c565b602e54909150600160a01b900460ff161580156123725750602e54600160a81b900460ff165b801561238b5750602e546001600160a01b038481169116145b1561239f57801561239f5761239f816126ad565b602e546000906001600160a01b03868116911614806123cb5750602e546001600160a01b038581169116145b801561241357506001600160a01b03851660009081526008602052604090205460ff168061241157506001600160a01b03841660009081526008602052604090205460ff165b155b1561241c575060015b602e546000906001600160a01b03868116911614156125175781801561244b5750602e54600160a81b900460ff165b1561250457612470606461246a601954876128f190919063ffffffff16565b90612645565b9050601954601b548261248391906135e6565b61248d9190613605565b6022600082825461249e9190613685565b9091555050601954601c546124b390836135e6565b6124bd9190613605565b602360008282546124ce9190613685565b9091555050601954601a546124e390836135e6565b6124ed9190613605565b602160008282546124fe9190613685565b90915550505b6125128686868560016128fd565b6125ee565b81801561252d5750602e54600160a81b900460ff165b156125e05761254c606461246a601154876128f190919063ffffffff16565b90506011546013548261255f91906135e6565b6125699190613605565b6022600082825461257a9190613685565b909155505060115460145461258f90836135e6565b6125999190613605565b602360008282546125aa9190613685565b90915550506011546012546125bf90836135e6565b6125c99190613605565b602160008282546125da9190613685565b90915550505b6125ee8686868560006128fd565b505050505050565b6000818484111561261a5760405162461bcd60e51b8152600401610b469190613399565b505050900390565b600080600061262f612ac3565b909250905061263e8282612645565b9250505090565b6000610e4e8284613605565b6000610e4e8284613685565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b602e805460ff60a01b1916600160a01b179055602354602154602254600092916126d691613685565b6126e09190613685565b905060008215806126ef575081155b156126fb5750506128e1565b612710612707600b5490565b6127129060056135e6565b61271c9190613605565b6127279060146135e6565b83111561275d5761271061273a600b5490565b6127459060056135e6565b61274f9190613605565b61275a9060146135e6565b92505b60006002836022548661277091906135e6565b61277a9190613605565b6127849190613605565b905060006127928583612c45565b90504761279e82612c51565b60006127aa4783612c45565b905060006127c78761246a602154856128f190919063ffffffff16565b905060006127e48861246a602354866128f190919063ffffffff16565b90506000816127f3848661363d565b6127fd919061363d565b60006022819055602181905560238190556002546040519293506001600160a01b031691849181818185875af1925050503d806000811461285a576040519150601f19603f3d011682016040523d82523d6000602084013e61285f565b606091505b509098505086158015906128735750600081115b15612882576128828782612de4565b6001546040516001600160a01b03909116904790600081818185875af1925050503d80600081146128cf576040519150601f19603f3d011682016040523d82523d6000602084013e6128d4565b606091505b5050505050505050505050505b50602e805460ff60a01b19169055565b6000610e4e82846135e6565b81612970576129706011805460155560198054601d5560138054601755601b8054601f5560148054601855601c805460205560128054601655601a8054601e5560248054602655602580546027556000918290558190559788905595879055938690559185905584905583905582905555565b6001600160a01b03851660009081526009602052604090205460ff1680156129b157506001600160a01b03841660009081526009602052604090205460ff16155b156129c7576129c285858584612eb2565b612a76565b6001600160a01b03851660009081526009602052604090205460ff16158015612a0857506001600160a01b03841660009081526009602052604090205460ff165b15612a19576129c285858584612fec565b6001600160a01b03851660009081526009602052604090205460ff168015612a5957506001600160a01b03841660009081526009602052604090205460ff165b15612a6a576129c2858585846130a8565b612a768585858461312e565b81612abc57612abc602654602455602754602555601554601155601d54601955601754601355601f54601b55601854601455602054601c55601654601255601e54601a55565b5050505050565b600c54600b546000918291825b600a54811015612c15578260036000600a8481548110612af257612af2613627565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612b5d57508160046000600a8481548110612b3657612b36613627565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612b7357600c54600b54945094505050509091565b612bb960036000600a8481548110612b8d57612b8d613627565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490612c45565b9250612c0160046000600a8481548110612bd557612bd5613627565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390612c45565b915080612c0d8161366a565b915050612ad0565b50600b54600c54612c2591612645565b821015612c3c57600c54600b549350935050509091565b90939092509050565b6000610e4e828461363d565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612c8657612c86613627565b6001600160a01b03928316602091820292909201810191909152602d54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612cdf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d03919061369d565b81600181518110612d1657612d16613627565b6001600160a01b039283166020918202929092010152602d54612d3c9130911684611bee565b602d5460405163791ac94760e01b81526001600160a01b039091169063791ac94790612d759085906000908690309042906004016136fe565b600060405180830381600087803b158015612d8f57600080fd5b505af1158015612da3573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051612dd892919061373a565b60405180910390a15050565b602d54612dfc9030906001600160a01b031684611bee565b602d546001600160a01b031663f305d719823085600080612e256000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015612e8d573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612abc919061375b565b600080600080600080612ec58888613185565b955095509550955095509550612f0988600460008d6001600160a01b03166001600160a01b0316815260200190815260200160002054612c4590919063ffffffff16565b6001600160a01b038b16600090815260046020908152604080832093909355600390522054612f389087612c45565b6001600160a01b03808c1660009081526003602052604080822093909355908b1681522054612f679086612651565b6001600160a01b038a16600090815260036020526040902055612f89816131d8565b612f938483613261565b886001600160a01b03168a6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612fd891815260200190565b60405180910390a350505050505050505050565b600080600080600080612fff8888613185565b95509550955095509550955061304386600360008d6001600160a01b03166001600160a01b0316815260200190815260200160002054612c4590919063ffffffff16565b6001600160a01b03808c16600090815260036020908152604080832094909455918c168152600490915220546130799084612651565b6001600160a01b038a16600090815260046020908152604080832093909355600390522054612f679086612651565b6000806000806000806130bb8888613185565b9550955095509550955095506130ff88600460008d6001600160a01b03166001600160a01b0316815260200190815260200160002054612c4590919063ffffffff16565b6001600160a01b038b166000908152600460209081526040808320939093556003905220546130439087612c45565b6000806000806000806131418888613185565b955095509550955095509550612f3886600360008d6001600160a01b03166001600160a01b0316815260200190815260200160002054612c4590919063ffffffff16565b600080600080600080600080600061319d8b8b613285565b92509250925060008060006131bb8e86866131b6612622565b6132ca565b919d509b5099509497509295509093505050509295509295509295565b60006131e2612622565b905060006131f083836128f1565b3060009081526003602052604090205490915061320d9082612651565b3060009081526003602090815260408083209390935560099052205460ff161561325c573060009081526004602052604090205461324b9084612651565b306000908152600460205260409020555b505050565b600c5461326e9083612c45565b600c55600d5461327e9082612651565b600d555050565b600080600080613295868661331a565b905060006132a3878761335d565b905060006132bb826132b58a86612c45565b90612c45565b95509193509150509250925092565b60008080806132d988866128f1565b905060006132e788876128f1565b905060006132f588886128f1565b90506000613307826132b58686612c45565b939b939a50919850919650505050505050565b600081156133435761333c606461246a602554866128f190919063ffffffff16565b9050610c07565b61333c606461246a602454866128f190919063ffffffff16565b6000811561337f5761333c606461246a601954866128f190919063ffffffff16565b61333c606461246a601154866128f190919063ffffffff16565b600060208083528351808285015260005b818110156133c6578581018301518582016040015282016133aa565b818111156133d8576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114611a8557600080fd5b6000806040838503121561341657600080fd5b8235613421816133ee565b946020939093013593505050565b60006020828403121561344157600080fd5b8135610e4e816133ee565b60006020828403121561345e57600080fd5b5035919050565b60008060006060848603121561347a57600080fd5b8335613485816133ee565b92506020840135613495816133ee565b929592945050506040919091013590565b600080604083850312156134b957600080fd5b50508035926020909101359150565b600080604083850312156134db57600080fd5b82356134e6816133ee565b9150602083013580151581146134fb57600080fd5b809150509250929050565b60008060006060848603121561351b57600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561354557600080fd5b8235613550816133ee565b915060208301356134fb816133ee565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c908216806135a957607f821691505b602082108114156135ca57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615613600576136006135d0565b500290565b60008261362257634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b60008282101561364f5761364f6135d0565b500390565b634e487b7160e01b600052603160045260246000fd5b600060001982141561367e5761367e6135d0565b5060010190565b60008219821115613698576136986135d0565b500190565b6000602082840312156136af57600080fd5b8151610e4e816133ee565b600081518084526020808501945080840160005b838110156136f35781516001600160a01b0316875295820195908201906001016136ce565b509495945050505050565b85815284602082015260a06040820152600061371d60a08301866136ba565b6001600160a01b0394909416606083015250608001529392505050565b82815260406020820152600061375360408301846136ba565b949350505050565b60008060006060848603121561377057600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220178fc7daa8ae3ee68cb8929f1450d160e6048b2bba1fdf3cd06651300eb3869464736f6c634300080a0033
Deployed Bytecode
0x6080604052600436106103a65760003560e01c806370a08231116101e7578063a5ece9411161010d578063dd62ed3e116100a0578063f2fde38b1161006f578063f2fde38b14610ab0578063f375b25314610ad0578063f637434214610af0578063f8b45b0514610b0657600080fd5b8063dd62ed3e14610a1e578063ea2f0b3714610a64578063efcc52de14610a84578063f11a24d314610a9a57600080fd5b8063c8c8ebe4116100dc578063c8c8ebe4146109c8578063c9567bf9146109de578063d85ba063146109f3578063db2e21bc14610a0957600080fd5b8063a5ece94114610948578063a9059cbb14610968578063c17b5b8c14610988578063c18bc195146109a857600080fd5b806388f8202011610185578063921369131161015457806392136913146108e757806395d89b41146108fd57806398b5162214610912578063a457c2d71461092857600080fd5b806388f82020146108505780638963ea1c146108895780638da5cb5b146108a9578063906e9dd0146108c757600080fd5b80637571336a116101c15780637571336a146107e55780637bce5a04146108055780638095d5641461081b5780638203f5fe1461083b57600080fd5b806370a082311461079b578063715018a6146107bb578063751039fc146107d057600080fd5b806323b872dd116102cc578063395093511161026a57806352390c021161023957806352390c02146106f35780635342acb414610713578063610d5b191461074c5780636a486a8e1461078557600080fd5b80633950935114610679578063437823ec1461069957806349bd5a5e146106b95780634a62bb65146106d957600080fd5b806330b263ba116102a657806330b263ba146105f7578063313ce56714610617578063362a3c5d146106395780633685d4191461065957600080fd5b806323b872dd1461058357806327c8f835146105a35780632d838119146105d757600080fd5b806310d5de53116103445780631a8145bb116103135780631a8145bb146105215780631f3fed8f14610537578063200a692d1461054d578063203e727e1461056357600080fd5b806310d5de531461048f57806313114a9d146104bf5780631694505e146104d457806318160ddd1461050c57600080fd5b8063074b323f11610380578063074b323f14610414578063095ea7b31461042a57806309aa3c031461045a5780631031e36e1461047a57600080fd5b8063067e5a4a146103b25780630694db1e146103db57806306fdde03146103f257600080fd5b366103ad57005b600080fd5b3480156103be57600080fd5b506103c860235481565b6040519081526020015b60405180910390f35b3480156103e757600080fd5b506103f0610b1c565b005b3480156103fe57600080fd5b50610407610b64565b6040516103d29190613399565b34801561042057600080fd5b506103c860145481565b34801561043657600080fd5b5061044a610445366004613403565b610bf6565b60405190151581526020016103d2565b34801561046657600080fd5b506103f061047536600461342f565b610c0d565b34801561048657600080fd5b506103f0610c59565b34801561049b57600080fd5b5061044a6104aa36600461342f565b60296020526000908152604090205460ff1681565b3480156104cb57600080fd5b50600d546103c8565b3480156104e057600080fd5b50602d546104f4906001600160a01b031681565b6040516001600160a01b0390911681526020016103d2565b34801561051857600080fd5b50600b546103c8565b34801561052d57600080fd5b506103c860225481565b34801561054357600080fd5b506103c860215481565b34801561055957600080fd5b506103c860255481565b34801561056f57600080fd5b506103f061057e36600461344c565b610c92565b34801561058f57600080fd5b5061044a61059e366004613465565b610d68565b3480156105af57600080fd5b506104f47f000000000000000000000000000000000000000000000000000000000000dead81565b3480156105e357600080fd5b506103c86105f236600461344c565b610dd1565b34801561060357600080fd5b506103f06106123660046134a6565b610e55565b34801561062357600080fd5b5060105460405160ff90911681526020016103d2565b34801561064557600080fd5b506103f061065436600461342f565b610e8a565b34801561066557600080fd5b506103f061067436600461342f565b611038565b34801561068557600080fd5b5061044a610694366004613403565b6111c5565b3480156106a557600080fd5b506103f06106b436600461342f565b6111fb565b3480156106c557600080fd5b50602e546104f4906001600160a01b031681565b3480156106e557600080fd5b50602a5461044a9060ff1681565b3480156106ff57600080fd5b506103f061070e36600461342f565b611249565b34801561071f57600080fd5b5061044a61072e36600461342f565b6001600160a01b031660009081526008602052604090205460ff1690565b34801561075857600080fd5b5061044a61076736600461342f565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561079157600080fd5b506103c860195481565b3480156107a757600080fd5b506103c86107b636600461342f565b61139c565b3480156107c757600080fd5b506103f06113fb565b3480156107dc57600080fd5b5061044a611431565b3480156107f157600080fd5b506103f06108003660046134c8565b61146c565b34801561081157600080fd5b506103c860125481565b34801561082757600080fd5b506103f0610836366004613506565b6114c1565b34801561084757600080fd5b506103f0611517565b34801561085c57600080fd5b5061044a61086b36600461342f565b6001600160a01b031660009081526009602052604090205460ff1690565b34801561089557600080fd5b506002546104f4906001600160a01b031681565b3480156108b557600080fd5b506000546001600160a01b03166104f4565b3480156108d357600080fd5b506103f06108e236600461342f565b611704565b3480156108f357600080fd5b506103c8601a5481565b34801561090957600080fd5b50610407611750565b34801561091e57600080fd5b506103c8601c5481565b34801561093457600080fd5b5061044a610943366004613403565b61175f565b34801561095457600080fd5b506001546104f4906001600160a01b031681565b34801561097457600080fd5b5061044a610983366004613403565b6117ae565b34801561099457600080fd5b506103f06109a3366004613506565b6117bb565b3480156109b457600080fd5b506103f06109c336600461344c565b611811565b3480156109d457600080fd5b506103c8602b5481565b3480156109ea57600080fd5b506103f06118dc565b3480156109ff57600080fd5b506103c860115481565b348015610a1557600080fd5b506103f061192b565b348015610a2a57600080fd5b506103c8610a39366004613532565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b348015610a7057600080fd5b506103f0610a7f36600461342f565b6119a2565b348015610a9057600080fd5b506103c860245481565b348015610aa657600080fd5b506103c860135481565b348015610abc57600080fd5b506103f0610acb36600461342f565b6119ed565b348015610adc57600080fd5b506103f0610aeb36600461342f565b611a88565b348015610afc57600080fd5b506103c8601b5481565b348015610b1257600080fd5b506103c8602c5481565b6000546001600160a01b03163314610b4f5760405162461bcd60e51b8152600401610b4690613560565b60405180910390fd5b602e805460ff60a81b1916600160a81b179055565b6060600e8054610b7390613595565b80601f0160208091040260200160405190810160405280929190818152602001828054610b9f90613595565b8015610bec5780601f10610bc157610100808354040283529160200191610bec565b820191906000526020600020905b815481529060010190602001808311610bcf57829003601f168201915b5050505050905090565b6000610c03338484611bee565b5060015b92915050565b6000546001600160a01b03163314610c375760405162461bcd60e51b8152600401610b4690613560565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610c835760405162461bcd60e51b8152600401610b4690613560565b602e805460ff60a81b19169055565b6000546001600160a01b03163314610cbc5760405162461bcd60e51b8152600401610b4690613560565b633b9aca00612710610ccd600b5490565b610cd89060016135e6565b610ce29190613605565b610cec9190613605565b811015610d545760405162461bcd60e51b815260206004820152603060248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526f6c6f776572207468616e20302e30312560801b6064820152608401610b46565b610d6281633b9aca006135e6565b602b5550565b6000610d75848484611d12565b610dc78433610dc28560405180606001604052806028815260200161378a602891396001600160a01b038a16600090815260056020908152604080832033845290915290205491906125f6565b611bee565b5060019392505050565b6000600c54821115610e385760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610b46565b6000610e42612622565b9050610e4e8382612645565b9392505050565b6000546001600160a01b03163314610e7f5760405162461bcd60e51b8152600401610b4690613560565b602491909155602555565b6000546001600160a01b03163314610eb45760405162461bcd60e51b8152600401610b4690613560565b6001600160a01b03811660009081526006602052604090205460ff16610f1c5760405162461bcd60e51b815260206004820152601a60248201527f4163636f756e74206973206e6f7420626c61636b6c69737465640000000000006044820152606401610b46565b60005b60075481101561103457816001600160a01b031660078281548110610f4657610f46613627565b6000918252602090912001546001600160a01b031614156110225760078054610f719060019061363d565b81548110610f8157610f81613627565b600091825260209091200154600780546001600160a01b039092169183908110610fad57610fad613627565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600690915260409020805460ff191690556007805480610ffc57610ffc613654565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b8061102c8161366a565b915050610f1f565b5050565b6000546001600160a01b031633146110625760405162461bcd60e51b8152600401610b4690613560565b6001600160a01b03811660009081526009602052604090205460ff166110ca5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610b46565b60005b600a5481101561103457816001600160a01b0316600a82815481106110f4576110f4613627565b6000918252602090912001546001600160a01b031614156111b357600a805461111f9060019061363d565b8154811061112f5761112f613627565b600091825260209091200154600a80546001600160a01b03909216918390811061115b5761115b613627565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600482526040808220829055600990925220805460ff19169055600a805480610ffc57610ffc613654565b806111bd8161366a565b9150506110cd565b3360008181526005602090815260408083206001600160a01b03871684529091528120549091610c03918590610dc29086612651565b6000546001600160a01b031633146112255760405162461bcd60e51b8152600401610b4690613560565b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b6000546001600160a01b031633146112735760405162461bcd60e51b8152600401610b4690613560565b6001600160a01b03811660009081526009602052604090205460ff16156112dc5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610b46565b6001600160a01b03811660009081526003602052604090205415611336576001600160a01b03811660009081526003602052604090205461131c90610dd1565b6001600160a01b0382166000908152600460205260409020555b6001600160a01b03166000818152600960205260408120805460ff19166001908117909155600a805491820181559091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180546001600160a01b0319169091179055565b6001600160a01b03811660009081526009602052604081205460ff16156113d957506001600160a01b031660009081526004602052604090205490565b6001600160a01b038216600090815260036020526040902054610c0790610dd1565b6000546001600160a01b031633146114255760405162461bcd60e51b8152600401610b4690613560565b61142f600061265d565b565b600080546001600160a01b0316331461145c5760405162461bcd60e51b8152600401610b4690613560565b50602a805460ff19169055600190565b6000546001600160a01b031633146114965760405162461bcd60e51b8152600401610b4690613560565b6001600160a01b03919091166000908152602960205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146114eb5760405162461bcd60e51b8152600401610b4690613560565b601283905560138290556014819055806115058385613685565b61150f9190613685565b601155505050565b6000546001600160a01b031633146115415760405162461bcd60e51b8152600401610b4690613560565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611598573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115bc919061369d565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611609573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061162d919061369d565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801561167a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061169e919061369d565b602e80546001600160a01b03199081166001600160a01b0393841617909155602d80549091169282169290921790915560008054909116815260086020526040808220805460ff1990811660019081179092553084529190922080549091169091179055565b6000546001600160a01b0316331461172e5760405162461bcd60e51b8152600401610b4690613560565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6060600f8054610b7390613595565b6000610c033384610dc2856040518060600160405280602581526020016137b2602591393360009081526005602090815260408083206001600160a01b038d16845290915290205491906125f6565b6000610c03338484611d12565b6000546001600160a01b031633146117e55760405162461bcd60e51b8152600401610b4690613560565b601a839055601b829055601c819055806117ff8385613685565b6118099190613685565b601955505050565b6000546001600160a01b0316331461183b5760405162461bcd60e51b8152600401610b4690613560565b633b9aca0061271061184c600b5490565b6118579060056135e6565b6118619190613605565b61186b9190613605565b8110156118c85760405162461bcd60e51b815260206004820152602560248201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015264302e30352560d81b6064820152608401610b46565b6118d681633b9aca006135e6565b602c5550565b6000546001600160a01b031633146119065760405162461bcd60e51b8152600401610b4690613560565b602654602455602754602555602e805460ff60a81b1916600160a81b17905542602855565b6000546001600160a01b031633146119555760405162461bcd60e51b8152600401610b4690613560565b604051600090339047908381818185875af1925050503d8060008114611997576040519150601f19603f3d011682016040523d82523d6000602084013e61199c565b606091505b50505050565b6000546001600160a01b031633146119cc5760405162461bcd60e51b8152600401610b4690613560565b6001600160a01b03166000908152600860205260409020805460ff19169055565b6000546001600160a01b03163314611a175760405162461bcd60e51b8152600401610b4690613560565b6001600160a01b038116611a7c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b46565b611a858161265d565b50565b6000546001600160a01b03163314611ab25760405162461bcd60e51b8152600401610b4690613560565b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0382161415611b1f5760405162461bcd60e51b815260206004820152601c60248201527f57652063616e206e6f7420626c61636b6c69737420556e6973776170000000006044820152606401610b46565b6001600160a01b03811660009081526006602052604090205460ff1615611b885760405162461bcd60e51b815260206004820152601e60248201527f4163636f756e7420697320616c726561647920626c61636b6c697374656400006044820152606401610b46565b6001600160a01b03166000818152600660205260408120805460ff191660019081179091556007805491820181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b0319169091179055565b6001600160a01b038316611c505760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b46565b6001600160a01b038216611cb15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b46565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611d765760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b46565b6001600160a01b038216611dd85760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b46565b60008111611e3a5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610b46565b6001600160a01b03821660009081526006602052604090205460ff1615611e9d5760405162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b6044820152606401610b46565b3360009081526006602052604090205460ff1615611ef75760405162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b6044820152606401610b46565b602e546001600160a01b038481169116148015611f225750602d546001600160a01b03838116911614155b8015611f4757506001600160a01b03821660009081526008602052604090205460ff16155b1561201557602e54600160a81b900460ff16611fa55760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642e00000000000000006044820152606401610b46565b602854421415612015576001600160a01b0382166000818152600660205260408120805460ff191660019081179091556007805491820181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b03191690911790555b602a5460ff1615612341576000546001600160a01b0384811691161480159061204c57506000546001600160a01b03838116911614155b801561206057506001600160a01b03821615155b801561207757506001600160a01b03821661dead14155b1561234157602e54600160a81b900460ff16612111576001600160a01b03831660009081526008602052604090205460ff16806120cc57506001600160a01b03821660009081526008602052604090205460ff165b6121115760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610b46565b602e546001600160a01b03848116911614801561214757506001600160a01b03821660009081526029602052604090205460ff16155b1561221b57602b548111156121bc5760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610b46565b602c546121c88361139c565b6121d29083613685565b11156122165760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610b46565b612341565b602e546001600160a01b03838116911614801561225157506001600160a01b03831660009081526029602052604090205460ff16155b156122c757602b548111156122165760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610b46565b6001600160a01b03821660009081526029602052604090205460ff1661234157602c546122f38361139c565b6122fd9083613685565b11156123415760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610b46565b600061234c3061139c565b602e54909150600160a01b900460ff161580156123725750602e54600160a81b900460ff165b801561238b5750602e546001600160a01b038481169116145b1561239f57801561239f5761239f816126ad565b602e546000906001600160a01b03868116911614806123cb5750602e546001600160a01b038581169116145b801561241357506001600160a01b03851660009081526008602052604090205460ff168061241157506001600160a01b03841660009081526008602052604090205460ff165b155b1561241c575060015b602e546000906001600160a01b03868116911614156125175781801561244b5750602e54600160a81b900460ff165b1561250457612470606461246a601954876128f190919063ffffffff16565b90612645565b9050601954601b548261248391906135e6565b61248d9190613605565b6022600082825461249e9190613685565b9091555050601954601c546124b390836135e6565b6124bd9190613605565b602360008282546124ce9190613685565b9091555050601954601a546124e390836135e6565b6124ed9190613605565b602160008282546124fe9190613685565b90915550505b6125128686868560016128fd565b6125ee565b81801561252d5750602e54600160a81b900460ff165b156125e05761254c606461246a601154876128f190919063ffffffff16565b90506011546013548261255f91906135e6565b6125699190613605565b6022600082825461257a9190613685565b909155505060115460145461258f90836135e6565b6125999190613605565b602360008282546125aa9190613685565b90915550506011546012546125bf90836135e6565b6125c99190613605565b602160008282546125da9190613685565b90915550505b6125ee8686868560006128fd565b505050505050565b6000818484111561261a5760405162461bcd60e51b8152600401610b469190613399565b505050900390565b600080600061262f612ac3565b909250905061263e8282612645565b9250505090565b6000610e4e8284613605565b6000610e4e8284613685565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b602e805460ff60a01b1916600160a01b179055602354602154602254600092916126d691613685565b6126e09190613685565b905060008215806126ef575081155b156126fb5750506128e1565b612710612707600b5490565b6127129060056135e6565b61271c9190613605565b6127279060146135e6565b83111561275d5761271061273a600b5490565b6127459060056135e6565b61274f9190613605565b61275a9060146135e6565b92505b60006002836022548661277091906135e6565b61277a9190613605565b6127849190613605565b905060006127928583612c45565b90504761279e82612c51565b60006127aa4783612c45565b905060006127c78761246a602154856128f190919063ffffffff16565b905060006127e48861246a602354866128f190919063ffffffff16565b90506000816127f3848661363d565b6127fd919061363d565b60006022819055602181905560238190556002546040519293506001600160a01b031691849181818185875af1925050503d806000811461285a576040519150601f19603f3d011682016040523d82523d6000602084013e61285f565b606091505b509098505086158015906128735750600081115b15612882576128828782612de4565b6001546040516001600160a01b03909116904790600081818185875af1925050503d80600081146128cf576040519150601f19603f3d011682016040523d82523d6000602084013e6128d4565b606091505b5050505050505050505050505b50602e805460ff60a01b19169055565b6000610e4e82846135e6565b81612970576129706011805460155560198054601d5560138054601755601b8054601f5560148054601855601c805460205560128054601655601a8054601e5560248054602655602580546027556000918290558190559788905595879055938690559185905584905583905582905555565b6001600160a01b03851660009081526009602052604090205460ff1680156129b157506001600160a01b03841660009081526009602052604090205460ff16155b156129c7576129c285858584612eb2565b612a76565b6001600160a01b03851660009081526009602052604090205460ff16158015612a0857506001600160a01b03841660009081526009602052604090205460ff165b15612a19576129c285858584612fec565b6001600160a01b03851660009081526009602052604090205460ff168015612a5957506001600160a01b03841660009081526009602052604090205460ff165b15612a6a576129c2858585846130a8565b612a768585858461312e565b81612abc57612abc602654602455602754602555601554601155601d54601955601754601355601f54601b55601854601455602054601c55601654601255601e54601a55565b5050505050565b600c54600b546000918291825b600a54811015612c15578260036000600a8481548110612af257612af2613627565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612b5d57508160046000600a8481548110612b3657612b36613627565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612b7357600c54600b54945094505050509091565b612bb960036000600a8481548110612b8d57612b8d613627565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490612c45565b9250612c0160046000600a8481548110612bd557612bd5613627565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390612c45565b915080612c0d8161366a565b915050612ad0565b50600b54600c54612c2591612645565b821015612c3c57600c54600b549350935050509091565b90939092509050565b6000610e4e828461363d565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612c8657612c86613627565b6001600160a01b03928316602091820292909201810191909152602d54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612cdf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d03919061369d565b81600181518110612d1657612d16613627565b6001600160a01b039283166020918202929092010152602d54612d3c9130911684611bee565b602d5460405163791ac94760e01b81526001600160a01b039091169063791ac94790612d759085906000908690309042906004016136fe565b600060405180830381600087803b158015612d8f57600080fd5b505af1158015612da3573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051612dd892919061373a565b60405180910390a15050565b602d54612dfc9030906001600160a01b031684611bee565b602d546001600160a01b031663f305d719823085600080612e256000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015612e8d573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612abc919061375b565b600080600080600080612ec58888613185565b955095509550955095509550612f0988600460008d6001600160a01b03166001600160a01b0316815260200190815260200160002054612c4590919063ffffffff16565b6001600160a01b038b16600090815260046020908152604080832093909355600390522054612f389087612c45565b6001600160a01b03808c1660009081526003602052604080822093909355908b1681522054612f679086612651565b6001600160a01b038a16600090815260036020526040902055612f89816131d8565b612f938483613261565b886001600160a01b03168a6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612fd891815260200190565b60405180910390a350505050505050505050565b600080600080600080612fff8888613185565b95509550955095509550955061304386600360008d6001600160a01b03166001600160a01b0316815260200190815260200160002054612c4590919063ffffffff16565b6001600160a01b03808c16600090815260036020908152604080832094909455918c168152600490915220546130799084612651565b6001600160a01b038a16600090815260046020908152604080832093909355600390522054612f679086612651565b6000806000806000806130bb8888613185565b9550955095509550955095506130ff88600460008d6001600160a01b03166001600160a01b0316815260200190815260200160002054612c4590919063ffffffff16565b6001600160a01b038b166000908152600460209081526040808320939093556003905220546130439087612c45565b6000806000806000806131418888613185565b955095509550955095509550612f3886600360008d6001600160a01b03166001600160a01b0316815260200190815260200160002054612c4590919063ffffffff16565b600080600080600080600080600061319d8b8b613285565b92509250925060008060006131bb8e86866131b6612622565b6132ca565b919d509b5099509497509295509093505050509295509295509295565b60006131e2612622565b905060006131f083836128f1565b3060009081526003602052604090205490915061320d9082612651565b3060009081526003602090815260408083209390935560099052205460ff161561325c573060009081526004602052604090205461324b9084612651565b306000908152600460205260409020555b505050565b600c5461326e9083612c45565b600c55600d5461327e9082612651565b600d555050565b600080600080613295868661331a565b905060006132a3878761335d565b905060006132bb826132b58a86612c45565b90612c45565b95509193509150509250925092565b60008080806132d988866128f1565b905060006132e788876128f1565b905060006132f588886128f1565b90506000613307826132b58686612c45565b939b939a50919850919650505050505050565b600081156133435761333c606461246a602554866128f190919063ffffffff16565b9050610c07565b61333c606461246a602454866128f190919063ffffffff16565b6000811561337f5761333c606461246a601954866128f190919063ffffffff16565b61333c606461246a601154866128f190919063ffffffff16565b600060208083528351808285015260005b818110156133c6578581018301518582016040015282016133aa565b818111156133d8576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114611a8557600080fd5b6000806040838503121561341657600080fd5b8235613421816133ee565b946020939093013593505050565b60006020828403121561344157600080fd5b8135610e4e816133ee565b60006020828403121561345e57600080fd5b5035919050565b60008060006060848603121561347a57600080fd5b8335613485816133ee565b92506020840135613495816133ee565b929592945050506040919091013590565b600080604083850312156134b957600080fd5b50508035926020909101359150565b600080604083850312156134db57600080fd5b82356134e6816133ee565b9150602083013580151581146134fb57600080fd5b809150509250929050565b60008060006060848603121561351b57600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561354557600080fd5b8235613550816133ee565b915060208301356134fb816133ee565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c908216806135a957607f821691505b602082108114156135ca57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615613600576136006135d0565b500290565b60008261362257634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b60008282101561364f5761364f6135d0565b500390565b634e487b7160e01b600052603160045260246000fd5b600060001982141561367e5761367e6135d0565b5060010190565b60008219821115613698576136986135d0565b500190565b6000602082840312156136af57600080fd5b8151610e4e816133ee565b600081518084526020808501945080840160005b838110156136f35781516001600160a01b0316875295820195908201906001016136ce565b509495945050505050565b85815284602082015260a06040820152600061371d60a08301866136ba565b6001600160a01b0394909416606083015250608001529392505050565b82815260406020820152600061375360408301846136ba565b949350505050565b60008060006060848603121561377057600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220178fc7daa8ae3ee68cb8929f1450d160e6048b2bba1fdf3cd06651300eb3869464736f6c634300080a0033
Deployed Bytecode Sourcemap
28633:27066:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30509:28;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;30509:28:0;;;;;;;;34637:81;;;;;;;;;;;;;:::i;:::-;;34726:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;29885:25::-;;;;;;;;;;;;;;;;35736:218;;;;;;;;;;-1:-1:-1;35736:218:0;;;;;:::i;:::-;;:::i;:::-;;;1419:14:1;;1412:22;1394:41;;1382:2;1367:18;35736:218:0;1254:187:1;54275:119:0;;;;;;;;;;-1:-1:-1;54275:119:0;;;;;:::i;:::-;;:::i;34548:81::-;;;;;;;;;;;;;:::i;30756:64::-;;;;;;;;;;-1:-1:-1;30756:64:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;37305:87;;;;;;;;;;-1:-1:-1;37374:10:0;;37305:87;;30950:41;;;;;;;;;;-1:-1:-1;30950:41:0;;;;-1:-1:-1;;;;;30950:41:0;;;;;;-1:-1:-1;;;;;1889:32:1;;;1871:51;;1859:2;1844:18;30950:41:0;1698:230:1;35003:95:0;;;;;;;;;;-1:-1:-1;35083:7:0;;35003:95;;30469:33;;;;;;;;;;;;;;;;30429;;;;;;;;;;;;;;;;30582:30;;;;;;;;;;;;;;;;32445:234;;;;;;;;;;-1:-1:-1;32445:234:0;;;;;:::i;:::-;;:::i;35962:478::-;;;;;;;;;;-1:-1:-1;35962:478:0;;;;;:::i;:::-;;:::i;28961:86::-;;;;;;;;;;;;;;;37400:253;;;;;;;;;;-1:-1:-1;37400:253:0;;;;;:::i;:::-;;:::i;53958:160::-;;;;;;;;;;-1:-1:-1;53958:160:0;;;;;:::i;:::-;;:::i;34912:83::-;;;;;;;;;;-1:-1:-1;34978:9:0;;34912:83;;34978:9;;;;3182:36:1;;3170:2;3155:18;34912:83:0;3040:184:1;54893:480:0;;;;;;;;;;-1:-1:-1;54893:480:0;;;;;:::i;:::-;;:::i;38001:477::-;;;;;;;;;;-1:-1:-1;38001:477:0;;;;;:::i;:::-;;:::i;36448:325::-;;;;;;;;;;-1:-1:-1;36448:325:0;;;;;:::i;:::-;;:::i;53721:111::-;;;;;;;;;;-1:-1:-1;53721:111:0;;;;;:::i;:::-;;:::i;30998:28::-;;;;;;;;;;-1:-1:-1;30998:28:0;;;;-1:-1:-1;;;;;30998:28:0;;;30827:33;;;;;;;;;;-1:-1:-1;30827:33:0;;;;;;;;37661:332;;;;;;;;;;-1:-1:-1;37661:332:0;;;;;:::i;:::-;;:::i;53589:124::-;;;;;;;;;;-1:-1:-1;53589:124:0;;;;;:::i;:::-;-1:-1:-1;;;;;53678:27:0;53654:4;53678:27;;;:18;:27;;;;;;;;;53589:124;54404:113;;;;;;;;;;-1:-1:-1;54404:113:0;;;;;:::i;:::-;-1:-1:-1;;;;;54491:18:0;54467:4;54491:18;;;:9;:18;;;;;;;;;54404:113;30099:28;;;;;;;;;;;;;;;;35106:198;;;;;;;;;;-1:-1:-1;35106:198:0;;;;;:::i;:::-;;:::i;12070:94::-;;;;;;;;;;;;;:::i;32317:120::-;;;;;;;;;;;;;:::i;33548:144::-;;;;;;;;;;-1:-1:-1;33548:144:0;;;;;:::i;:::-;;:::i;29811:30::-;;;;;;;;;;;;;;;;32687:304;;;;;;;;;;-1:-1:-1;32687:304:0;;;;;:::i;:::-;;:::i;33702:626::-;;;;;;;;;;;;;:::i;37177:120::-;;;;;;;;;;-1:-1:-1;37177:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;37269:20:0;37245:4;37269:20;;;:11;:20;;;;;;;;;37177:120;28855:93;;;;;;;;;;-1:-1:-1;28855:93:0;;;;-1:-1:-1;;;;;28855:93:0;;;11419:87;;;;;;;;;;-1:-1:-1;11465:7:0;11492:6;-1:-1:-1;;;;;11492:6:0;11419:87;;54128:139;;;;;;;;;;-1:-1:-1;54128:139:0;;;;;:::i;:::-;;:::i;30134:31::-;;;;;;;;;;;;;;;;34817:87;;;;;;;;;;;;;:::i;30210:26::-;;;;;;;;;;;;;;;;36781:388;;;;;;;;;;-1:-1:-1;36781:388:0;;;;;:::i;:::-;;:::i;28750:98::-;;;;;;;;;;-1:-1:-1;28750:98:0;;;;-1:-1:-1;;;;;28750:98:0;;;35312:199;;;;;;;;;;-1:-1:-1;35312:199:0;;;;;:::i;:::-;;:::i;33003:312::-;;;;;;;;;;-1:-1:-1;33003:312:0;;;;;:::i;:::-;;:::i;33325:215::-;;;;;;;;;;-1:-1:-1;33325:215:0;;;;;:::i;:::-;;:::i;30871:35::-;;;;;;;;;;;;;;;;34336:204;;;;;;;;;;;;;:::i;29777:27::-;;;;;;;;;;;;;;;;55535:161;;;;;;;;;;;;;:::i;35519:209::-;;;;;;;;;;-1:-1:-1;35519:209:0;;;;;:::i;:::-;-1:-1:-1;;;;;35693:18:0;;;35661:7;35693:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;35519:209;53840:110;;;;;;;;;;-1:-1:-1;53840:110:0;;;;;:::i;:::-;;:::i;30546:29::-;;;;;;;;;;;;;;;;29848:30;;;;;;;;;;;;;;;;12319:192;;;;;;;;;;-1:-1:-1;12319:192:0;;;;;:::i;:::-;;:::i;54525:360::-;;;;;;;;;;-1:-1:-1;54525:360:0;;;;;:::i;:::-;;:::i;30172:31::-;;;;;;;;;;;;;;;;30913:24;;;;;;;;;;;;;;;;34637:81;11465:7;11492:6;-1:-1:-1;;;;;11492:6:0;10348:10;11639:23;11631:68;;;;-1:-1:-1;;;11631:68:0;;;;;;;:::i;:::-;;;;;;;;;34692:11:::1;:18:::0;;-1:-1:-1;;;;34692:18:0::1;-1:-1:-1::0;;;34692:18:0::1;::::0;;34637:81::o;34726:83::-;34763:13;34796:5;34789:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34726:83;:::o;35736:218::-;35863:4;35885:39;10348:10;35908:7;35917:6;35885:8;:39::i;:::-;-1:-1:-1;35942:4:0;35736:218;;;;;:::o;54275:119::-;11465:7;11492:6;-1:-1:-1;;;;;11492:6:0;10348:10;11639:23;11631:68;;;;-1:-1:-1;;;11631:68:0;;;;;;;:::i;:::-;54351:11:::1;:35:::0;;-1:-1:-1;;;;;;54351:35:0::1;-1:-1:-1::0;;;;;54351:35:0;;;::::1;::::0;;;::::1;::::0;;54275:119::o;34548:81::-;11465:7;11492:6;-1:-1:-1;;;;;11492:6:0;10348:10;11639:23;11631:68;;;;-1:-1:-1;;;11631:68:0;;;;;;;:::i;:::-;34602:11:::1;:19:::0;;-1:-1:-1;;;;34602:19:0::1;::::0;;34548:81::o;32445:234::-;11465:7;11492:6;-1:-1:-1;;;;;11492:6:0;10348:10;11639:23;11631:68;;;;-1:-1:-1;;;11631:68:0;;;;;;;:::i;:::-;32565:3:::1;32558:5;32538:13;35083:7:::0;;;35003:95;32538:13:::1;:17;::::0;32554:1:::1;32538:17;:::i;:::-;:25;;;;:::i;:::-;32537:31;;;;:::i;:::-;32527:6;:41;;32519:102;;;::::0;-1:-1:-1;;;32519:102:0;;6063:2:1;32519:102:0::1;::::0;::::1;6045:21:1::0;6102:2;6082:18;;;6075:30;6141:34;6121:18;;;6114:62;-1:-1:-1;;;6192:18:1;;;6185:46;6248:19;;32519:102:0::1;5861:412:1::0;32519:102:0::1;32655:16;:6:::0;32665:5:::1;32655:16;:::i;:::-;32632:20;:39:::0;-1:-1:-1;32445:234:0:o;35962:478::-;36121:4;36143:36;36153:6;36161:9;36172:6;36143:9;:36::i;:::-;36190:220;36213:6;10348:10;36261:138;36317:6;36261:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;36261:19:0;;;;;;:11;:19;;;;;;;;10348:10;36261:33;;;;;;;;;;:37;:138::i;:::-;36190:8;:220::i;:::-;-1:-1:-1;36428:4:0;35962:478;;;;;:::o;37400:253::-;37467:7;37506;;37495;:18;;37487:73;;;;-1:-1:-1;;;37487:73:0;;6480:2:1;37487:73:0;;;6462:21:1;6519:2;6499:18;;;6492:30;6558:34;6538:18;;;6531:62;-1:-1:-1;;;6609:18:1;;;6602:40;6659:19;;37487:73:0;6278:406:1;37487:73:0;37571:19;37593:10;:8;:10::i;:::-;37571:32;-1:-1:-1;37621:24:0;:7;37571:32;37621:11;:24::i;:::-;37614:31;37400:253;-1:-1:-1;;;37400:253:0:o;53958:160::-;11465:7;11492:6;-1:-1:-1;;;;;11492:6:0;10348:10;11639:23;11631:68;;;;-1:-1:-1;;;11631:68:0;;;;;;;:::i;:::-;54053:10:::1;:22:::0;;;;54086:11:::1;:24:::0;53958:160::o;54893:480::-;11465:7;11492:6;-1:-1:-1;;;;;11492:6:0;10348:10;11639:23;11631:68;;;;-1:-1:-1;;;11631:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;54972:18:0;::::1;;::::0;;;:9:::1;:18;::::0;;;;;::::1;;54964:57;;;::::0;-1:-1:-1;;;54964:57:0;;6891:2:1;54964:57:0::1;::::0;::::1;6873:21:1::0;6930:2;6910:18;;;6903:30;6969:28;6949:18;;;6942:56;7015:18;;54964:57:0::1;6689:350:1::0;54964:57:0::1;55037:9;55032:334;55056:17;:24:::0;55052:28;::::1;55032:334;;;55130:7;-1:-1:-1::0;;;;;55106:31:0::1;:17;55124:1;55106:20;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;55106:20:0::1;:31;55102:253;;;55181:17;55199:24:::0;;:28:::1;::::0;55226:1:::1;::::0;55199:28:::1;:::i;:::-;55181:47;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;55158:17:::1;:20:::0;;-1:-1:-1;;;;;55181:47:0;;::::1;::::0;55176:1;;55158:20;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:70:::0;;-1:-1:-1;;;;;;55158:70:0::1;-1:-1:-1::0;;;;;55158:70:0;;::::1;;::::0;;55247:18;;::::1;::::0;;:9:::1;:18:::0;;;;;;:26;;-1:-1:-1;;55247:26:0::1;::::0;;55292:17:::1;:23:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;55292:23:0;;;;;-1:-1:-1;;;;;;55292:23:0::1;::::0;;;;;55032:334:::1;54893:480:::0;:::o;55102:253::-:1;55082:3:::0;::::1;::::0;::::1;:::i;:::-;;;;55032:334;;;;54893:480:::0;:::o;38001:477::-;11465:7;11492:6;-1:-1:-1;;;;;11492:6:0;10348:10;11639:23;11631:68;;;;-1:-1:-1;;;11631:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;38081:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;38073:60;;;::::0;-1:-1:-1;;;38073:60:0;;7780:2:1;38073:60:0::1;::::0;::::1;7762:21:1::0;7819:2;7799:18;;;7792:30;7858:29;7838:18;;;7831:57;7905:18;;38073:60:0::1;7578:351:1::0;38073:60:0::1;38149:9;38144:327;38168:9;:16:::0;38164:20;::::1;38144:327;;;38226:7;-1:-1:-1::0;;;;;38210:23:0::1;:9;38220:1;38210:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;38210:12:0::1;:23;38206:254;;;38269:9;38279:16:::0;;:20:::1;::::0;38298:1:::1;::::0;38279:20:::1;:::i;:::-;38269:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;38254:9:::1;:12:::0;;-1:-1:-1;;;;;38269:31:0;;::::1;::::0;38264:1;;38254:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;38254:46:0::1;-1:-1:-1::0;;;;;38254:46:0;;::::1;;::::0;;38319:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;38358:11:::1;:20:::0;;;;:28;;-1:-1:-1;;38358:28:0::1;::::0;;38405:9:::1;:15:::0;;;::::1;;;;:::i;38206:254::-;38186:3:::0;::::1;::::0;::::1;:::i;:::-;;;;38144:327;;36448:325:::0;10348:10;36588:4;36682:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;36682:34:0;;;;;;;;;;36588:4;;36610:133;;36660:7;;36682:50;;36721:10;36682:38;:50::i;53721:111::-;11465:7;11492:6;-1:-1:-1;;;;;11492:6:0;10348:10;11639:23;11631:68;;;;-1:-1:-1;;;11631:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;53790:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;53790:34:0::1;53820:4;53790:34;::::0;;53721:111::o;37661:332::-;11465:7;11492:6;-1:-1:-1;;;;;11492:6:0;10348:10;11639:23;11631:68;;;;-1:-1:-1;;;11631:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;37742:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;37741:21;37733:61;;;::::0;-1:-1:-1;;;37733:61:0;;7780:2:1;37733:61:0::1;::::0;::::1;7762:21:1::0;7819:2;7799:18;;;7792:30;7858:29;7838:18;;;7831:57;7905:18;;37733:61:0::1;7578:351:1::0;37733:61:0::1;-1:-1:-1::0;;;;;37809:16:0;::::1;37828:1;37809:16:::0;;;:7:::1;:16;::::0;;;;;:20;37805:109:::1;;-1:-1:-1::0;;;;;37885:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;37865:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;37846:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;37805:109:::1;-1:-1:-1::0;;;;;37924:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;37924:27:0::1;37947:4;37924:27:::0;;::::1;::::0;;;37962:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;37962:23:0::1;::::0;;::::1;::::0;;37661:332::o;35106:198::-;-1:-1:-1;;;;;35196:20:0;;35172:7;35196:20;;;:11;:20;;;;;;;;35192:49;;;-1:-1:-1;;;;;;35225:16:0;;;;;:7;:16;;;;;;;35106:198::o;35192:49::-;-1:-1:-1;;;;;35279:16:0;;;;;;:7;:16;;;;;;35259:37;;:19;:37::i;12070:94::-;11465:7;11492:6;-1:-1:-1;;;;;11492:6:0;10348:10;11639:23;11631:68;;;;-1:-1:-1;;;11631:68:0;;;;;;;:::i;:::-;12135:21:::1;12153:1;12135:9;:21::i;:::-;12070:94::o:0;32317:120::-;32369:4;11492:6;;-1:-1:-1;;;;;11492:6:0;10348:10;11639:23;11631:68;;;;-1:-1:-1;;;11631:68:0;;;;;;;:::i;:::-;-1:-1:-1;32385:14:0::1;:22:::0;;-1:-1:-1;;32385:22:0::1;::::0;;;32317:120;:::o;33548:144::-;11465:7;11492:6;-1:-1:-1;;;;;11492:6:0;10348:10;11639:23;11631:68;;;;-1:-1:-1;;;11631:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;33638:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;33638:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;33548:144::o;32687:304::-;11465:7;11492:6;-1:-1:-1;;;;;11492:6:0;10348:10;11639:23;11631:68;;;;-1:-1:-1;;;11631:68:0;;;;;;;:::i;:::-;32805:15:::1;:31:::0;;;32847:15:::1;:32:::0;;;32890:10:::1;:21:::0;;;32903:8;32937:33:::1;32865:14:::0;32823:13;32937:33:::1;:::i;:::-;:46;;;;:::i;:::-;32922:12;:61:::0;-1:-1:-1;;;32687:304:0:o;33702:626::-;11465:7;11492:6;-1:-1:-1;;;;;11492:6:0;10348:10;11639:23;11631:68;;;;-1:-1:-1;;;11631:68:0;;;;;;;:::i;:::-;33891:35:::1;33962:42;33891:124;;34060:16;-1:-1:-1::0;;;;;34060:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;34042:56:0::1;;34121:4;34141:16;-1:-1:-1::0;;;;;34141:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34042:133;::::0;-1:-1:-1;;;;;;34042:133:0::1;::::0;;;;;;-1:-1:-1;;;;;8553:15:1;;;34042:133:0::1;::::0;::::1;8535:34:1::0;8605:15;;8585:18;;;8578:43;8470:18;;34042:133:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34026:13;:149:::0;;-1:-1:-1;;;;;;34026:149:0;;::::1;-1:-1:-1::0;;;;;34026:149:0;;::::1;;::::0;;;34188:15:::1;:34:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;11492:6:0;;;;;34235:27;;:18:::1;:27;::::0;;;;;:34;;-1:-1:-1;;34235:34:0;;::::1;-1:-1:-1::0;34235:34:0;;::::1;::::0;;;34307:4:::1;34280:33:::0;;;;;;:40;;;;::::1;::::0;;::::1;::::0;;33702:626::o;54128:139::-;11465:7;11492:6;-1:-1:-1;;;;;11492:6:0;10348:10;11639:23;11631:68;;;;-1:-1:-1;;;11631:68:0;;;;;;;:::i;:::-;54214:16:::1;:45:::0;;-1:-1:-1;;;;;;54214:45:0::1;-1:-1:-1::0;;;;;54214:45:0;;;::::1;::::0;;;::::1;::::0;;54128:139::o;34817:87::-;34856:13;34889:7;34882:14;;;;;:::i;36781:388::-;36889:4;36911:228;10348:10;36961:7;36983:145;37040:15;36983:145;;;;;;;;;;;;;;;;;10348:10;36983:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;36983:34:0;;;;;;;;;;;;:38;:145::i;35312:199::-;35417:4;35439:42;10348:10;35463:9;35474:6;35439:9;:42::i;33003:312::-;11465:7;11492:6;-1:-1:-1;;;;;11492:6:0;10348:10;11639:23;11631:68;;;;-1:-1:-1;;;11631:68:0;;;;;;;:::i;:::-;33122:16:::1;:32:::0;;;33165:16:::1;:33:::0;;;33209:11:::1;:22:::0;;;33223:8;33258:35:::1;33184:14:::0;33141:13;33258:35:::1;:::i;:::-;:49;;;;:::i;:::-;33242:13;:65:::0;-1:-1:-1;;;33003:312:0:o;33325:215::-;11465:7;11492:6;-1:-1:-1;;;;;11492:6:0;10348:10;11639:23;11631:68;;;;-1:-1:-1;;;11631:68:0;;;;;;;:::i;:::-;33448:3:::1;33441:5;33421:13;35083:7:::0;;;35003:95;33421:13:::1;:17;::::0;33437:1:::1;33421:17;:::i;:::-;:25;;;;:::i;:::-;33420:31;;;;:::i;:::-;33410:6;:41;;33402:91;;;::::0;-1:-1:-1;;;33402:91:0;;8834:2:1;33402:91:0::1;::::0;::::1;8816:21:1::0;8873:2;8853:18;;;8846:30;8912:34;8892:18;;;8885:62;-1:-1:-1;;;8963:18:1;;;8956:35;9008:19;;33402:91:0::1;8632:401:1::0;33402:91:0::1;33516:16;:6:::0;33526:5:::1;33516:16;:::i;:::-;33504:9;:28:::0;-1:-1:-1;33325:215:0:o;34336:204::-;11465:7;11492:6;-1:-1:-1;;;;;11492:6:0;10348:10;11639:23;11631:68;;;;-1:-1:-1;;;11631:68:0;;;;;;;:::i;:::-;34402:18:::1;::::0;34389:10:::1;:31:::0;34445:19:::1;::::0;34431:11:::1;:33:::0;34475:11:::1;:18:::0;;-1:-1:-1;;;;34475:18:0::1;-1:-1:-1::0;;;34475:18:0::1;::::0;;34517:15:::1;34504:10;:28:::0;34336:204::o;55535:161::-;11465:7;11492:6;-1:-1:-1;;;;;11492:6:0;10348:10;11639:23;11631:68;;;;-1:-1:-1;;;11631:68:0;;;;;;;:::i;:::-;55630:58:::1;::::0;55594:12:::1;::::0;55638:10:::1;::::0;55662:21:::1;::::0;55594:12;55630:58;55594:12;55630:58;55662:21;55638:10;55630:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;55535:161:0:o;53840:110::-;11465:7;11492:6;-1:-1:-1;;;;;11492:6:0;10348:10;11639:23;11631:68;;;;-1:-1:-1;;;11631:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;53907:27:0::1;53937:5;53907:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;53907:35:0::1;::::0;;53840:110::o;12319:192::-;11465:7;11492:6;-1:-1:-1;;;;;11492:6:0;10348:10;11639:23;11631:68;;;;-1:-1:-1;;;11631:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12408:22:0;::::1;12400:73;;;::::0;-1:-1:-1;;;12400:73:0;;9450:2:1;12400:73:0::1;::::0;::::1;9432:21:1::0;9489:2;9469:18;;;9462:30;9528:34;9508:18;;;9501:62;-1:-1:-1;;;9579:18:1;;;9572:36;9625:19;;12400:73:0::1;9248:402:1::0;12400:73:0::1;12484:19;12494:8;12484:9;:19::i;:::-;12319:192:::0;:::o;54525:360::-;11465:7;11492:6;-1:-1:-1;;;;;11492:6:0;10348:10;11639:23;11631:68;;;;-1:-1:-1;;;11631:68:0;;;;;;;:::i;:::-;54628:42:::1;-1:-1:-1::0;;;;;54617:53:0;::::1;;;54595:131;;;::::0;-1:-1:-1;;;54595:131:0;;9857:2:1;54595:131:0::1;::::0;::::1;9839:21:1::0;9896:2;9876:18;;;9869:30;9935;9915:18;;;9908:58;9983:18;;54595:131:0::1;9655:352:1::0;54595:131:0::1;-1:-1:-1::0;;;;;54746:18:0;::::1;;::::0;;;:9:::1;:18;::::0;;;;;::::1;;54745:19;54737:62;;;::::0;-1:-1:-1;;;54737:62:0;;10214:2:1;54737:62:0::1;::::0;::::1;10196:21:1::0;10253:2;10233:18;;;10226:30;10292:32;10272:18;;;10265:60;10342:18;;54737:62:0::1;10012:354:1::0;54737:62:0::1;-1:-1:-1::0;;;;;54810:18:0::1;;::::0;;;:9:::1;:18;::::0;;;;:25;;-1:-1:-1;;54810:25:0::1;54831:4;54810:25:::0;;::::1;::::0;;;54846:17:::1;:31:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;54846:31:0::1;::::0;;::::1;::::0;;54525:360::o;38486:371::-;-1:-1:-1;;;;;38613:19:0;;38605:68;;;;-1:-1:-1;;;38605:68:0;;10573:2:1;38605:68:0;;;10555:21:1;10612:2;10592:18;;;10585:30;10651:34;10631:18;;;10624:62;-1:-1:-1;;;10702:18:1;;;10695:34;10746:19;;38605:68:0;10371:400:1;38605:68:0;-1:-1:-1;;;;;38692:21:0;;38684:68;;;;-1:-1:-1;;;38684:68:0;;10978:2:1;38684:68:0;;;10960:21:1;11017:2;10997:18;;;10990:30;11056:34;11036:18;;;11029:62;-1:-1:-1;;;11107:18:1;;;11100:32;11149:19;;38684:68:0;10776:398:1;38684:68:0;-1:-1:-1;;;;;38765:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;38817:32;;160:25:1;;;38817:32:0;;133:18:1;38817:32:0;;;;;;;38486:371;;;:::o;38865:3598::-;-1:-1:-1;;;;;38987:18:0;;38979:68;;;;-1:-1:-1;;;38979:68:0;;11381:2:1;38979:68:0;;;11363:21:1;11420:2;11400:18;;;11393:30;11459:34;11439:18;;;11432:62;-1:-1:-1;;;11510:18:1;;;11503:35;11555:19;;38979:68:0;11179:401:1;38979:68:0;-1:-1:-1;;;;;39066:16:0;;39058:64;;;;-1:-1:-1;;;39058:64:0;;11787:2:1;39058:64:0;;;11769:21:1;11826:2;11806:18;;;11799:30;11865:34;11845:18;;;11838:62;-1:-1:-1;;;11916:18:1;;;11909:33;11959:19;;39058:64:0;11585:399:1;39058:64:0;39150:1;39141:6;:10;39133:64;;;;-1:-1:-1;;;39133:64:0;;12191:2:1;39133:64:0;;;12173:21:1;12230:2;12210:18;;;12203:30;12269:34;12249:18;;;12242:62;-1:-1:-1;;;12320:18:1;;;12313:39;12369:19;;39133:64:0;11989:405:1;39133:64:0;-1:-1:-1;;;;;39217:13:0;;;;;;:9;:13;;;;;;;;39216:14;39208:50;;;;-1:-1:-1;;;39208:50:0;;12601:2:1;39208:50:0;;;12583:21:1;12640:2;12620:18;;;12613:30;-1:-1:-1;;;12659:18:1;;;12652:53;12722:18;;39208:50:0;12399:347:1;39208:50:0;39288:10;39278:21;;;;:9;:21;;;;;;;;39277:22;39269:58;;;;-1:-1:-1;;;39269:58:0;;12601:2:1;39269:58:0;;;12583:21:1;12640:2;12620:18;;;12613:30;-1:-1:-1;;;12659:18:1;;;12652:53;12722:18;;39269:58:0;12399:347:1;39269:58:0;39384:13;;-1:-1:-1;;;;;39376:21:0;;;39384:13;;39376:21;:68;;;;-1:-1:-1;39428:15:0;;-1:-1:-1;;;;;39414:30:0;;;39428:15;;39414:30;;39376:68;:108;;;;-1:-1:-1;;;;;;39462:22:0;;;;;;:18;:22;;;;;;;;39461:23;39376:108;39358:387;;;39519:11;;-1:-1:-1;;;39519:11:0;;;;39511:48;;;;-1:-1:-1;;;39511:48:0;;12953:2:1;39511:48:0;;;12935:21:1;12992:2;12972:18;;;12965:30;13031:26;13011:18;;;13004:54;13075:18;;39511:48:0;12751:348:1;39511:48:0;39622:10;;39603:15;:29;39599:135;;;-1:-1:-1;;;;;39653:13:0;;;;;;:9;:13;;;;;:20;;-1:-1:-1;;39653:20:0;39669:4;39653:20;;;;;;39692:17;:26;;;;;;;;;;;;;;-1:-1:-1;;;;;;39692:26:0;;;;;;39599:135;39760:14;;;;39757:1179;;;11465:7;11492:6;-1:-1:-1;;;;;39812:15:0;;;11492:6;;39812:15;;;;:49;;-1:-1:-1;11465:7:0;11492:6;-1:-1:-1;;;;;39848:13:0;;;11492:6;;39848:13;;39812:49;:86;;;;-1:-1:-1;;;;;;39882:16:0;;;;39812:86;:128;;;;-1:-1:-1;;;;;;39919:21:0;;39933:6;39919:21;;39812:128;39790:1135;;;39978:11;;-1:-1:-1;;;39978:11:0;;;;39974:144;;-1:-1:-1;;;;;40021:24:0;;;;;;:18;:24;;;;;;;;;:50;;-1:-1:-1;;;;;;40049:22:0;;;;;;:18;:22;;;;;;;;40021:50;40013:85;;;;-1:-1:-1;;;40013:85:0;;13306:2:1;40013:85:0;;;13288:21:1;13345:2;13325:18;;;13318:30;-1:-1:-1;;;13364:18:1;;;13357:52;13426:18;;40013:85:0;13104:346:1;40013:85:0;40178:13;;-1:-1:-1;;;;;40170:21:0;;;40178:13;;40170:21;:61;;;;-1:-1:-1;;;;;;40196:35:0;;;;;;:31;:35;;;;;;;;40195:36;40170:61;40166:744;;;40278:20;;40268:6;:30;;40260:96;;;;-1:-1:-1;;;40260:96:0;;13657:2:1;40260:96:0;;;13639:21:1;13696:2;13676:18;;;13669:30;13735:34;13715:18;;;13708:62;-1:-1:-1;;;13786:18:1;;;13779:51;13847:19;;40260:96:0;13455:417:1;40260:96:0;40417:9;;40400:13;40410:2;40400:9;:13::i;:::-;40391:22;;:6;:22;:::i;:::-;:35;;40383:67;;;;-1:-1:-1;;;40383:67:0;;14079:2:1;40383:67:0;;;14061:21:1;14118:2;14098:18;;;14091:30;-1:-1:-1;;;14137:18:1;;;14130:49;14196:18;;40383:67:0;13877:343:1;40383:67:0;40166:744;;;40534:13;;-1:-1:-1;;;;;40528:19:0;;;40534:13;;40528:19;:61;;;;-1:-1:-1;;;;;;40552:37:0;;;;;;:31;:37;;;;;;;;40551:38;40528:61;40524:386;;;40636:20;;40626:6;:30;;40618:97;;;;-1:-1:-1;;;40618:97:0;;14427:2:1;40618:97:0;;;14409:21:1;14466:2;14446:18;;;14439:30;14505:34;14485:18;;;14478:62;-1:-1:-1;;;14556:18:1;;;14549:52;14618:19;;40618:97:0;14225:418:1;40524:386:0;-1:-1:-1;;;;;40764:35:0;;;;;;:31;:35;;;;;;;;40760:150;;40857:9;;40840:13;40850:2;40840:9;:13::i;:::-;40831:22;;:6;:22;:::i;:::-;:35;;40823:67;;;;-1:-1:-1;;;40823:67:0;;14079:2:1;40823:67:0;;;14061:21:1;14118:2;14098:18;;;14091:30;-1:-1:-1;;;14137:18:1;;;14130:49;14196:18;;40823:67:0;13877:343:1;40823:67:0;40948:28;40979:24;40997:4;40979:9;:24::i;:::-;41039:16;;40948:55;;-1:-1:-1;;;;41039:16:0;;;;41038:17;:32;;;;-1:-1:-1;41059:11:0;;-1:-1:-1;;;41059:11:0;;;;41038:32;:55;;;;-1:-1:-1;41080:13:0;;-1:-1:-1;;;;;41074:19:0;;;41080:13;;41074:19;41038:55;41034:191;;;41114:24;;41110:104;;41166:32;41177:20;41166:10;:32::i;:::-;41331:13;;41237:12;;-1:-1:-1;;;;;41323:21:0;;;41331:13;;41323:21;;:44;;-1:-1:-1;41354:13:0;;-1:-1:-1;;;;;41348:19:0;;;41354:13;;41348:19;41323:44;41322:116;;;;-1:-1:-1;;;;;;41387:24:0;;;;;;:18;:24;;;;;;;;;:50;;-1:-1:-1;;;;;;41415:22:0;;;;;;:18;:22;;;;;;;;41387:50;41385:53;41322:116;41304:187;;;-1:-1:-1;41475:4:0;41304:187;41556:13;;41519:12;;-1:-1:-1;;;;;41550:19:0;;;41556:13;;41550:19;41546:910;;;41589:7;:22;;;;-1:-1:-1;41600:11:0;;-1:-1:-1;;;41600:11:0;;;;41589:22;41585:335;;;41638:34;41668:3;41638:25;41649:13;;41638:6;:10;;:25;;;;:::i;:::-;:29;;:34::i;:::-;41631:41;;41739:13;;41720:16;;41713:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;41691:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;41809:13:0;;41795:11;;41788:18;;:4;:18;:::i;:::-;:34;;;;:::i;:::-;41771:13;;:51;;;;;;;:::i;:::-;;;;-1:-1:-1;;41889:13:0;;41870:16;;41863:23;;:4;:23;:::i;:::-;:39;;;;:::i;:::-;41841:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;41585:335:0;41948:47;41963:4;41969:2;41973:6;41981:7;41990:4;41948:14;:47::i;:::-;41546:910;;;42040:7;:22;;;;-1:-1:-1;42051:11:0;;-1:-1:-1;;;42051:11:0;;;;42040:22;42036:332;;;42089:33;42118:3;42089:24;42100:12;;42089:6;:10;;:24;;;;:::i;:33::-;42082:40;;42188:12;;42170:15;;42163:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;42141:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;42256:12:0;;42243:10;;42236:17;;:4;:17;:::i;:::-;:32;;;;:::i;:::-;42219:13;;:49;;;;;;;:::i;:::-;;;;-1:-1:-1;;42334:12:0;;42316:15;;42309:22;;:4;:22;:::i;:::-;:37;;;;:::i;:::-;42287:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;42036:332:0;42396:48;42411:4;42417:2;42421:6;42429:7;42438:5;42396:14;:48::i;:::-;38968:3495;;;38865:3598;;;:::o;7816:240::-;7936:7;7997:12;7989:6;;;;7981:29;;;;-1:-1:-1;;;7981:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;8032:5:0;;;7816:240::o;50536:164::-;50578:7;50599:15;50616;50635:19;:17;:19::i;:::-;50598:56;;-1:-1:-1;50598:56:0;-1:-1:-1;50672:20:0;50598:56;;50672:11;:20::i;:::-;50665:27;;;;50536:164;:::o;6674:98::-;6732:7;6759:5;6763:1;6759;:5;:::i;5537:98::-;5595:7;5622:5;5626:1;5622;:5;:::i;12519:173::-;12575:16;12594:6;;-1:-1:-1;;;;;12611:17:0;;;-1:-1:-1;;;;;;12611:17:0;;;;;;12644:40;;12594:6;;;;;;;12644:40;;12575:16;12644:40;12564:128;12519:173;:::o;42471:1557::-;31262:16;:23;;-1:-1:-1;;;;31262:23:0;-1:-1:-1;;;31262:23:0;;;42616:13:::1;::::0;42595:18:::1;::::0;42574::::1;::::0;31262:23;;42616:13;42574:39:::1;::::0;::::1;:::i;:::-;:55;;;;:::i;:::-;42546:83:::0;-1:-1:-1;42640:12:0::1;42676:20:::0;;;:46:::1;;-1:-1:-1::0;42700:22:0;;42676:46:::1;42673:60;;;42725:7;;;;42673:60;42794:5;42774:13;35083:7:::0;;;35003:95;42774:13:::1;:17;::::0;42790:1:::1;42774:17;:::i;:::-;:25;;;;:::i;:::-;:30;::::0;42802:2:::1;42774:30;:::i;:::-;42756:15;:48;42753:125;;;42856:5;42836:13;35083:7:::0;;;35003:95;42836:13:::1;:17;::::0;42852:1:::1;42836:17;:::i;:::-;:25;;;;:::i;:::-;:30;::::0;42864:2:::1;42836:30;:::i;:::-;42818:48;;42753:125;42937:23;43022:1;43002:17;42981:18;;42963:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;42937:86:::0;-1:-1:-1;43034:26:0::1;43063:36;:15:::0;42937:86;43063:19:::1;:36::i;:::-;43034:65:::0;-1:-1:-1;43148:21:0::1;43182:36;43034:65:::0;43182:16:::1;:36::i;:::-;43242:18;43263:44;:21;43289:17:::0;43263:25:::1;:44::i;:::-;43242:65;;43330:23;43356:57;43395:17;43356:34;43371:18;;43356:10;:14;;:34;;;;:::i;:57::-;43330:83;;43424:18;43445:52;43479:17;43445:29;43460:13;;43445:10;:14;;:29;;;;:::i;:52::-;43424:73:::0;-1:-1:-1;43518:23:0::1;43424:73:::0;43544:28:::1;43557:15:::0;43544:10;:28:::1;:::i;:::-;:41;;;;:::i;:::-;43629:1;43608:18;:22:::0;;;43641:18:::1;:22:::0;;;43674:13:::1;:17:::0;;;43733:11:::1;::::0;43725:48:::1;::::0;43518:67;;-1:-1:-1;;;;;;43733:11:0::1;::::0;43758:10;;43725:48;43629:1;43725:48;43758:10;43733:11;43725:48:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;43712:61:0;;-1:-1:-1;;43797:19:0;;;;;:42:::1;;;43838:1;43820:15;:19;43797:42;43794:119;;;43855:46;43868:15;43885;43855:12;:46::i;:::-;43964:16;::::0;43956:64:::1;::::0;-1:-1:-1;;;;;43964:16:0;;::::1;::::0;43994:21:::1;::::0;43956:64:::1;::::0;;;43994:21;43964:16;43956:64:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;;;;;;;;31296:1:0::1;-1:-1:-1::0;31308:16:0;:24;;-1:-1:-1;;;;31308:24:0;;;42471:1557::o;6275:98::-;6333:7;6360:5;6364:1;6360;:5;:::i;45227:762::-;45405:7;45400:28;;45414:14;52294:12;;;52270:21;:36;52342:13;;;52317:22;:38;52393:15;;;52366:24;:42;52447:16;;;52419:25;:44;52496:10;;;52474:19;:32;52540:11;;;52517:20;:34;52589:15;;;52562:24;:42;52643:16;;;52615:25;:44;52693:10;;;52672:18;:31;52736:11;;;52714:19;:33;-1:-1:-1;52760:14:0;;;;52785:15;;;52811:16;;;;52838:17;;;;52866:19;;;;52896:20;;;;52927:14;;;52952:15;;;52978:19;;;53008:20;52225:811;45414:14;-1:-1:-1;;;;;45445:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;45469:22:0;;;;;;:11;:22;;;;;;;;45468:23;45445:46;45441:499;;;45508:56;45530:6;45538:9;45549:6;45557;45508:21;:56::i;:::-;45441:499;;;-1:-1:-1;;;;;45587:19:0;;;;;;:11;:19;;;;;;;;45586:20;:46;;;;-1:-1:-1;;;;;;45610:22:0;;;;;;:11;:22;;;;;;;;45586:46;45582:358;;;45649:54;45669:6;45677:9;45688:6;45696;45649:19;:54::i;45582:358::-;-1:-1:-1;;;;;45725:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;45748:22:0;;;;;;:11;:22;;;;;;;;45725:45;45721:219;;;45787:56;45809:6;45817:9;45828:6;45836;45787:21;:56::i;45721:219::-;45876:52;45894:6;45902:9;45913:6;45921;45876:17;:52::i;:::-;45957:7;45952:29;;45966:15;53101:18;;53088:10;:31;53144:19;;53130:11;:33;53199:21;;53184:12;:36;53247:22;;53231:13;:38;53298:24;;-1:-1:-1;53280:42:0;53352:25;;53333:16;:44;53401:19;;-1:-1:-1;53388:32:0;53445:20;;53431:11;:34;-1:-1:-1;53494:24:0;-1:-1:-1;53476:42:0;53548:25;;53529:16;:44;53044:537;45966:15;45227:762;;;;;:::o;50708:573::-;50806:7;;50842;;50759;;;;;50860:306;50884:9;:16;50880:20;;50860:306;;;50950:7;50926;:21;50934:9;50944:1;50934:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;50934:12:0;50926:21;;;;;;;;;;;;;:31;;:66;;;50985:7;50961;:21;50969:9;50979:1;50969:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;50969:12:0;50961:21;;;;;;;;;;;;;:31;50926:66;50922:114;;;51019:7;;51028;;51011:25;;;;;;;50708:573;;:::o;50922:114::-;51061:34;51073:7;:21;51081:9;51091:1;51081:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;51081:12:0;51073:21;;;;;;;;;;;;;51061:7;;:11;:34::i;:::-;51051:44;;51120:34;51132:7;:21;51140:9;51150:1;51140:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;51140:12:0;51132:21;;;;;;;;;;;;;51120:7;;:11;:34::i;:::-;51110:44;-1:-1:-1;50902:3:0;;;;:::i;:::-;;;;50860:306;;;-1:-1:-1;51202:7:0;;51190;;:20;;:11;:20::i;:::-;51180:7;:30;51176:61;;;51220:7;;51229;;51212:25;;;;;;50708:573;;:::o;51176:61::-;51256:7;;51265;;-1:-1:-1;50708:573:0;-1:-1:-1;50708:573:0:o;5918:98::-;5976:7;6003:5;6007:1;6003;:5;:::i;44038:658::-;44188:16;;;44202:1;44188:16;;;;;;;;44164:21;;44188:16;;;;;;;;;;-1:-1:-1;44188:16:0;44164:40;;44233:4;44215;44220:1;44215:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;44215:23:0;;;:7;;;;;;;;;;:23;;;;44259:15;;:22;;;-1:-1:-1;;;44259:22:0;;;;:15;;;;;:20;;:22;;;;;44215:7;;44259:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;44249:4;44254:1;44249:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;44249:32:0;;;:7;;;;;;;;;:32;44326:15;;44294:62;;44311:4;;44326:15;44344:11;44294:8;:62::i;:::-;44395:15;;:240;;-1:-1:-1;;;44395:240:0;;-1:-1:-1;;;;;44395:15:0;;;;:66;;:240;;44476:11;;44395:15;;44546:4;;44573;;44609:15;;44395:240;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44653:35;44670:11;44683:4;44653:35;;;;;;;:::i;:::-;;;;;;;;44093:603;44038:658;:::o;44704:515::-;44884:15;;44852:62;;44869:4;;-1:-1:-1;;;;;44884:15:0;44902:11;44852:8;:62::i;:::-;44957:15;;-1:-1:-1;;;;;44957:15:0;:31;44997:9;45031:4;45051:11;44957:15;;45163:7;11465;11492:6;-1:-1:-1;;;;;11492:6:0;;11419:87;45163:7;44957:254;;;;;;-1:-1:-1;;;;;;44957:254:0;;;-1:-1:-1;;;;;16529:15:1;;;44957:254:0;;;16511:34:1;16561:18;;;16554:34;;;;16604:18;;;16597:34;;;;16647:18;;;16640:34;16711:15;;;16690:19;;;16683:44;45185:15:0;16743:19:1;;;16736:35;16445:19;;44957:254:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;47348:692::-;47517:15;47543:23;47577:12;47600:23;47634:12;47657:18;47689:27;47700:7;47709:6;47689:10;:27::i;:::-;47506:210;;;;;;;;;;;;47745:28;47765:7;47745;:15;47753:6;-1:-1:-1;;;;;47745:15:0;-1:-1:-1;;;;;47745:15:0;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;-1:-1:-1;;;;;47727:15:0;;;;;;:7;:15;;;;;;;;:46;;;;47802:7;:15;;;;:28;;47822:7;47802:19;:28::i;:::-;-1:-1:-1;;;;;47784:15:0;;;;;;;:7;:15;;;;;;:46;;;;47862:18;;;;;;;:39;;47885:15;47862:22;:39::i;:::-;-1:-1:-1;;;;;47841:18:0;;;;;;:7;:18;;;;;:60;47912:26;47927:10;47912:14;:26::i;:::-;47949:23;47961:4;47967;47949:11;:23::i;:::-;48005:9;-1:-1:-1;;;;;47988:44:0;47997:6;-1:-1:-1;;;;;47988:44:0;;48016:15;47988:44;;;;160:25:1;;148:2;133:18;;14:177;47988:44:0;;;;;;;;47495:545;;;;;;47348:692;;;;:::o;46636:704::-;46803:15;46829:23;46863:12;46886:23;46920:12;46943:18;46975:27;46986:7;46995:6;46975:10;:27::i;:::-;46792:210;;;;;;;;;;;;47031:28;47051:7;47031;:15;47039:6;-1:-1:-1;;;;;47031:15:0;-1:-1:-1;;;;;47031:15:0;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;-1:-1:-1;;;;;47013:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;47091:18;;;;;:7;:18;;;;;:39;;47114:15;47091:22;:39::i;:::-;-1:-1:-1;;;;;47070:18:0;;;;;;:7;:18;;;;;;;;:60;;;;47162:7;:18;;;;:39;;47185:15;47162:22;:39::i;48048:763::-;48217:15;48243:23;48277:12;48300:23;48334:12;48357:18;48389:27;48400:7;48409:6;48389:10;:27::i;:::-;48206:210;;;;;;;;;;;;48445:28;48465:7;48445;:15;48453:6;-1:-1:-1;;;;;48445:15:0;-1:-1:-1;;;;;48445:15:0;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;-1:-1:-1;;;;;48427:15:0;;;;;;:7;:15;;;;;;;;:46;;;;48502:7;:15;;;;:28;;48522:7;48502:19;:28::i;45997:631::-;46162:15;46188:23;46222:12;46245:23;46279:12;46302:18;46334:27;46345:7;46354:6;46334:10;:27::i;:::-;46151:210;;;;;;;;;;;;46390:28;46410:7;46390;:15;46398:6;-1:-1:-1;;;;;46390:15:0;-1:-1:-1;;;;;46390:15:0;;;;;;;;;;;;;:19;;:28;;;;:::i;48974:608::-;49071:7;49089;49107;49125;49143;49161;49193:23;49218:12;49232:18;49254:52;49280:7;49289:6;49254:11;:52::i;:::-;49192:114;;;;;;49318:15;49335:23;49360:12;49376:113;49402:7;49424:4;49443:10;49468;:8;:10::i;:::-;49376:11;:113::i;:::-;49317:172;;-1:-1:-1;49317:172:0;-1:-1:-1;49317:172:0;-1:-1:-1;49540:15:0;;-1:-1:-1;49557:4:0;;-1:-1:-1;49563:10:0;;-1:-1:-1;;;;48974:608:0;;;;;;;;:::o;51289:355::-;51352:19;51374:10;:8;:10::i;:::-;51352:32;-1:-1:-1;51395:18:0;51416:27;:10;51352:32;51416:14;:27::i;:::-;51495:4;51479:22;;;;:7;:22;;;;;;51395:48;;-1:-1:-1;51479:38:0;;51395:48;51479:26;:38::i;:::-;51470:4;51454:22;;;;:7;:22;;;;;;;;:63;;;;51532:11;:26;;;;;;51528:108;;;51614:4;51598:22;;;;:7;:22;;;;;;:38;;51625:10;51598:26;:38::i;:::-;51589:4;51573:22;;;;:7;:22;;;;;:63;51528:108;51341:303;;51289:355;:::o;48819:147::-;48897:7;;:17;;48909:4;48897:11;:17::i;:::-;48887:7;:27;48938:10;;:20;;48953:4;48938:14;:20::i;:::-;48925:10;:33;-1:-1:-1;;48819:147:0:o;49590:404::-;49688:7;49706;49724;49755:12;49770:32;49786:7;49795:6;49770:15;:32::i;:::-;49755:47;;49813:18;49834:29;49847:7;49856:6;49834:12;:29::i;:::-;49813:50;-1:-1:-1;49874:23:0;49900:33;49813:50;49900:17;:7;49912:4;49900:11;:17::i;:::-;:21;;:33::i;:::-;49874:59;-1:-1:-1;49969:4:0;;-1:-1:-1;49975:10:0;-1:-1:-1;;49590:404:0;;;;;:::o;50002:526::-;50185:7;;;;50270:24;:7;50282:11;50270;:24::i;:::-;50252:42;-1:-1:-1;50305:12:0;50320:21;:4;50329:11;50320:8;:21::i;:::-;50305:36;-1:-1:-1;50352:18:0;50373:27;:10;50388:11;50373:14;:27::i;:::-;50352:48;-1:-1:-1;50411:23:0;50437:33;50352:48;50437:17;:7;50449:4;50437:11;:17::i;:33::-;50489:7;;;;-1:-1:-1;50515:4:0;;-1:-1:-1;50002:526:0;;-1:-1:-1;;;;;;;50002:526:0:o;51652:266::-;51729:7;51753:6;51749:162;;;51782:35;51811:5;51782:24;51794:11;;51782:7;:11;;:24;;;;:::i;:35::-;51775:42;;;;51749:162;51865:34;51893:5;51865:23;51877:10;;51865:7;:11;;:23;;;;:::i;51926:291::-;52015:7;52044:6;52040:170;;;52077:35;52108:3;52077:26;52089:13;;52077:7;:11;;:26;;;;:::i;52040:170::-;52164:34;52194:3;52164:25;52176:12;;52164:7;:11;;:25;;;;:::i;196:597:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;634:6;631:1;628:13;625:91;;;704:1;699:2;690:6;679:9;675:22;671:31;664:42;625:91;-1:-1:-1;777:2:1;756:15;-1:-1:-1;;752:29:1;737:45;;;;784:2;733:54;;196:597;-1:-1:-1;;;196:597:1:o;798:131::-;-1:-1:-1;;;;;873:31:1;;863:42;;853:70;;919:1;916;909:12;934:315;1002:6;1010;1063:2;1051:9;1042:7;1038:23;1034:32;1031:52;;;1079:1;1076;1069:12;1031:52;1118:9;1105:23;1137:31;1162:5;1137:31;:::i;:::-;1187:5;1239:2;1224:18;;;;1211:32;;-1:-1:-1;;;934:315:1:o;1446:247::-;1505:6;1558:2;1546:9;1537:7;1533:23;1529:32;1526:52;;;1574:1;1571;1564:12;1526:52;1613:9;1600:23;1632:31;1657:5;1632:31;:::i;1933:180::-;1992:6;2045:2;2033:9;2024:7;2020:23;2016:32;2013:52;;;2061:1;2058;2051:12;2013:52;-1:-1:-1;2084:23:1;;1933:180;-1:-1:-1;1933:180:1:o;2118:456::-;2195:6;2203;2211;2264:2;2252:9;2243:7;2239:23;2235:32;2232:52;;;2280:1;2277;2270:12;2232:52;2319:9;2306:23;2338:31;2363:5;2338:31;:::i;:::-;2388:5;-1:-1:-1;2445:2:1;2430:18;;2417:32;2458:33;2417:32;2458:33;:::i;:::-;2118:456;;2510:7;;-1:-1:-1;;;2564:2:1;2549:18;;;;2536:32;;2118:456::o;2787:248::-;2855:6;2863;2916:2;2904:9;2895:7;2891:23;2887:32;2884:52;;;2932:1;2929;2922:12;2884:52;-1:-1:-1;;2955:23:1;;;3025:2;3010:18;;;2997:32;;-1:-1:-1;2787:248:1:o;3229:416::-;3294:6;3302;3355:2;3343:9;3334:7;3330:23;3326:32;3323:52;;;3371:1;3368;3361:12;3323:52;3410:9;3397:23;3429:31;3454:5;3429:31;:::i;:::-;3479:5;-1:-1:-1;3536:2:1;3521:18;;3508:32;3578:15;;3571:23;3559:36;;3549:64;;3609:1;3606;3599:12;3549:64;3632:7;3622:17;;;3229:416;;;;;:::o;3650:316::-;3727:6;3735;3743;3796:2;3784:9;3775:7;3771:23;3767:32;3764:52;;;3812:1;3809;3802:12;3764:52;-1:-1:-1;;3835:23:1;;;3905:2;3890:18;;3877:32;;-1:-1:-1;3956:2:1;3941:18;;;3928:32;;3650:316;-1:-1:-1;3650:316:1:o;4195:388::-;4263:6;4271;4324:2;4312:9;4303:7;4299:23;4295:32;4292:52;;;4340:1;4337;4330:12;4292:52;4379:9;4366:23;4398:31;4423:5;4398:31;:::i;:::-;4448:5;-1:-1:-1;4505:2:1;4490:18;;4477:32;4518:33;4477:32;4518:33;:::i;4588:356::-;4790:2;4772:21;;;4809:18;;;4802:30;4868:34;4863:2;4848:18;;4841:62;4935:2;4920:18;;4588:356::o;4949:380::-;5028:1;5024:12;;;;5071;;;5092:61;;5146:4;5138:6;5134:17;5124:27;;5092:61;5199:2;5191:6;5188:14;5168:18;5165:38;5162:161;;;5245:10;5240:3;5236:20;5233:1;5226:31;5280:4;5277:1;5270:15;5308:4;5305:1;5298:15;5162:161;;4949:380;;;:::o;5334:127::-;5395:10;5390:3;5386:20;5383:1;5376:31;5426:4;5423:1;5416:15;5450:4;5447:1;5440:15;5466:168;5506:7;5572:1;5568;5564:6;5560:14;5557:1;5554:21;5549:1;5542:9;5535:17;5531:45;5528:71;;;5579:18;;:::i;:::-;-1:-1:-1;5619:9:1;;5466:168::o;5639:217::-;5679:1;5705;5695:132;;5749:10;5744:3;5740:20;5737:1;5730:31;5784:4;5781:1;5774:15;5812:4;5809:1;5802:15;5695:132;-1:-1:-1;5841:9:1;;5639:217::o;7044:127::-;7105:10;7100:3;7096:20;7093:1;7086:31;7136:4;7133:1;7126:15;7160:4;7157:1;7150:15;7176:125;7216:4;7244:1;7241;7238:8;7235:34;;;7249:18;;:::i;:::-;-1:-1:-1;7286:9:1;;7176:125::o;7306:127::-;7367:10;7362:3;7358:20;7355:1;7348:31;7398:4;7395:1;7388:15;7422:4;7419:1;7412:15;7438:135;7477:3;-1:-1:-1;;7498:17:1;;7495:43;;;7518:18;;:::i;:::-;-1:-1:-1;7565:1:1;7554:13;;7438:135::o;7934:128::-;7974:3;8005:1;8001:6;7998:1;7995:13;7992:39;;;8011:18;;:::i;:::-;-1:-1:-1;8047:9:1;;7934:128::o;8067:251::-;8137:6;8190:2;8178:9;8169:7;8165:23;8161:32;8158:52;;;8206:1;8203;8196:12;8158:52;8238:9;8232:16;8257:31;8282:5;8257:31;:::i;14780:461::-;14833:3;14871:5;14865:12;14898:6;14893:3;14886:19;14924:4;14953:2;14948:3;14944:12;14937:19;;14990:2;14983:5;14979:14;15011:1;15021:195;15035:6;15032:1;15029:13;15021:195;;;15100:13;;-1:-1:-1;;;;;15096:39:1;15084:52;;15156:12;;;;15191:15;;;;15132:1;15050:9;15021:195;;;-1:-1:-1;15232:3:1;;14780:461;-1:-1:-1;;;;;14780:461:1:o;15246:582::-;15545:6;15534:9;15527:25;15588:6;15583:2;15572:9;15568:18;15561:34;15631:3;15626:2;15615:9;15611:18;15604:31;15508:4;15652:57;15704:3;15693:9;15689:19;15681:6;15652:57;:::i;:::-;-1:-1:-1;;;;;15745:32:1;;;;15740:2;15725:18;;15718:60;-1:-1:-1;15809:3:1;15794:19;15787:35;15644:65;15246:582;-1:-1:-1;;;15246:582:1:o;15833:332::-;16040:6;16029:9;16022:25;16083:2;16078;16067:9;16063:18;16056:30;16003:4;16103:56;16155:2;16144:9;16140:18;16132:6;16103:56;:::i;:::-;16095:64;15833:332;-1:-1:-1;;;;15833:332:1:o;16782:306::-;16870:6;16878;16886;16939:2;16927:9;16918:7;16914:23;16910:32;16907:52;;;16955:1;16952;16945:12;16907:52;16984:9;16978:16;16968:26;;17034:2;17023:9;17019:18;17013:25;17003:35;;17078:2;17067:9;17063:18;17057:25;17047:35;;16782:306;;;;;:::o
Swarm Source
ipfs://178fc7daa8ae3ee68cb8929f1450d160e6048b2bba1fdf3cd06651300eb38694
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.