Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
DeFi
Overview
Max Total Supply
1,000,000,000 EMPIRE
Holders
1,024 (0.00%)
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
$0.00
Other Info
Token Contract (WITH 9 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
EmpireToken
Compiler Version
v0.8.15+commit.e14f2714
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-02-24 */ // File: @openzeppelin/contracts/utils/math/SafeMath.sol // OpenZeppelin Contracts (last updated v4.6.0) (utils/math/SafeMath.sol) 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 generally not needed starting with Solidity 0.8, since 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 subtraction 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; } } } // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions 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 { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: @openzeppelin/contracts/token/ERC20/IERC20.sol // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 amount ) external returns (bool); } // File: contracts/35_EmpireToken.sol pragma solidity 0.8.15; interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); } interface IUniswapV2Router02 is IUniswapV2Router01 { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } contract EmpireToken is IERC20, Ownable{ using SafeMath for uint256; mapping(address => uint256) private _rOwned; mapping(address => uint256) private _tOwned; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) public automatedMarketMakerPairs; mapping(address => bool) private _isExcludedFromFee; mapping(address => bool) private _isExcluded; address[] private _excluded; struct BuyFee { uint256 autoLp; uint256 burn; uint256 marketing; uint256 tax; uint256 team; } struct SellFee { uint256 autoLp; uint256 burn; uint256 marketing; uint256 tax; uint256 team; } BuyFee public buyFee; SellFee public sellFee; uint256 private constant MAX = ~uint256(0); uint256 private constant _tTotal = 10**9 * 10**9; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; string private constant _name = "Empire Token"; string private constant _symbol = "EMPIRE"; uint8 private constant _decimals = 9; uint256 public _taxFee = 0; uint256 public _liquidityFee = 0; uint256 public _burnFee = 0; uint256 public _marketingFee = 0; uint256 public _teamFee = 0; address public marketingWallet; address public immutable burnWallet; address public liquidityWallet; address public teamWallet; // to accommodate lock or unlock balance by bridge address public bridgeVault; IUniswapV2Router02 public uniswapV2Router; address public bridge; bool private inSwapAndLiquify; bool private shouldTakeFee = false; bool public swapAndLiquifyEnabled = true; bool public isTradingEnabled; uint256 public numTokensSellToAddToLiquidity = 8000 * 10**9; event LogSetAutomatedMarketMakerPair( address indexed setter, address pair, bool enabled ); event LogSwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); event LogSwapAndDistribute( uint256 forMarketing, uint256 forLiquidity, uint256 forBurn, uint256 forTeam ); event LogSwapAndLiquifyEnabledUpdated(address indexed setter, bool enabled); event LogSetBridge(address indexed setter, address bridge); event LogSetSwapTokensAmount(address indexed setter, uint256 amount); event LogSetExcludeFromFee( address indexed setter, address account, bool enabled ); event LogTransfer(address from, address to, uint amount); event LogExcludeFromReward(address indexed account); event LogIncludeInReward(address indexed account); event LogFallback(address from, uint256 amount); event LogReceive(address from, uint256 amount); event LogSetEnableTrading(bool enabled); event LogSetMarketingWallet( address indexed setter, address marketingWallet ); event LogSetTeamWallet(address indexed setter, address teamWallet); event LogSetBuyFees(address indexed setter, BuyFee buyFee); event LogSetSellFees(address indexed setter, SellFee sellFee); event LogSetRouterAddress(address indexed setter, address router); event LogUpdateLiquidityWallet( address indexed setter, address liquidityWallet ); event LogWithdrawalETH(address indexed recipient, uint256 amount); event LogWithdrawToken( address indexed token, address indexed recipient, uint256 amount ); event LogWithdrawal(address indexed recipient, uint256 tAmount); event LogLockByBridge(address indexed account, uint256 tAmount); event LogUnlockByBridge(address indexed account, uint256 tAmount); event LogSetBridgeVault(address setter, address _bridgeVault); event LogDeliver(address indexed from, uint256 tAmount); modifier lockTheSwap() { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor( address _router, address _marketingWallet, address _teamWallet, address _bridgeVault ) payable { _rOwned[_msgSender()] = _rTotal; require(_router!=address(0) && _marketingWallet!=address(0) && _teamWallet!=address(0) && _bridgeVault!=address(0), "Zero address"); marketingWallet = _marketingWallet; burnWallet = address(0xdead); liquidityWallet = owner(); teamWallet = _teamWallet; // exclude bridge Vault from receive reflection bridgeVault = _bridgeVault; _isExcluded[bridgeVault] = true; _excluded.push(bridgeVault); // exclude burn address from receive reflection _isExcluded[burnWallet] = true; _excluded.push(burnWallet); IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(_router); // Create a uniswap pair for this new token address pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair( address(this), _uniswapV2Router.WETH() ); setAutomatedMarketMakerPair(pair, true); // set the rest of the contract variables uniswapV2Router = _uniswapV2Router; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[owner()] = true; buyFee.autoLp = 4; buyFee.burn = 0; buyFee.marketing = 3; buyFee.tax = 2; buyFee.team = 1; sellFee.autoLp = 4; sellFee.burn = 0; sellFee.marketing = 3; sellFee.tax = 2; sellFee.team = 1; emit Transfer(address(0), _msgSender(), _tTotal); } function setAutomatedMarketMakerPair(address pair, bool enabled) public onlyOwner { require(automatedMarketMakerPairs[pair] != enabled, "Pair Already Enabled"); automatedMarketMakerPairs[pair] = enabled; emit LogSetAutomatedMarketMakerPair(msg.sender, pair, enabled); } function name() external view returns (string memory) { return _name; } function symbol() external view returns (string memory) { return _symbol; } function decimals() external view returns (uint8) { return _decimals; } function totalSupply() external view override returns (uint256) { return _tTotal; } /** * @dev because bridgeVault not receive reward */ function circulatingSupply() external view returns (uint256) { return _tTotal.sub(_tOwned[bridgeVault]).sub(_tOwned[burnWallet]); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). Referenced from SafeMath library to preserve transaction integrity. */ function balanceCheck( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a.sub(b); return c; } 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) external override returns (bool) { _transfer(_msgSender(), recipient, amount); emit LogTransfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) external view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) external override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) external override returns (bool) { _transfer(sender, recipient, amount); _approve( sender, _msgSender(), balanceCheck( _allowances[sender][_msgSender()], amount, "ERC20: transfer amount exceeds allowance" ) ); return true; } function increaseAllowance(address spender, uint256 addedValue) external virtual returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue) ); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) external virtual returns (bool) { _approve( _msgSender(), spender, balanceCheck( _allowances[_msgSender()][spender], subtractedValue, "ERC20: decreased allowance below zero" ) ); return true; } function isExcludedFromReward(address account) external view returns (bool) { return _isExcluded[account]; } function totalFees() external view returns (uint256) { return _tFeeTotal; } // reflection by action of volunteer function deliver(uint256 tAmount) external { address sender = _msgSender(); require( !_isExcluded[sender], "Excluded addresses cannot call this function" ); (uint256 rAmount, , , , , ) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rTotal = _rTotal.sub(rAmount); _tFeeTotal = _tFeeTotal.add(tAmount); emit LogDeliver(msg.sender, tAmount); } function reflectionFromToken(uint256 tAmount, bool deductTransferFee) external view returns (uint256) { require(tAmount <= _tTotal, "Amount must be less than supply"); if (!deductTransferFee) { (uint256 rAmount, , , , , ) = _getValues(tAmount); return rAmount; } else { (, uint256 rTransferAmount, , , , ) = _getValues(tAmount); return rTransferAmount; } } 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) external onlyOwner { require(!_isExcluded[account], "Account is already excluded"); if (_rOwned[account] > 0) { _tOwned[account] = tokenFromReflection(_rOwned[account]); } _isExcluded[account] = true; _excluded.push(account); emit LogExcludeFromReward(account); } function includeInReward(address account) external onlyOwner { require(account != bridgeVault, "Bridge Vault can't receive reward"); require(_isExcluded[account], "Account is already included"); 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; } } emit LogIncludeInReward(account); } //to receive ETH from uniswapV2Router when swapping receive() external payable { emit LogReceive(msg.sender, msg.value); } fallback() external payable { emit LogFallback(msg.sender, msg.value); } // reflection function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } function _getValues(uint256 tAmount) private view returns ( uint256, uint256, uint256, uint256, uint256, uint256 ) { ( uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tMarketing, uint256 tBurn ) = _getTValues(tAmount); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues( tAmount, tFee, tLiquidity, tMarketing, tBurn, _getRate() ); return ( rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tLiquidity ); } function _getTValues(uint256 tAmount) private view returns ( uint256, uint256, uint256, uint256, uint256 ) { uint256 tFee = calculateTaxFee(tAmount); uint256 tLiquidity = calculateLiquidityFee(tAmount); uint256 tMarketing = calculateMarketingFee(tAmount); uint256 tBurn = calculateBurnFee(tAmount); uint256 tTeam = calculateTeamFee(tAmount); uint256 tTransferAmount = tAmount.sub(tFee).sub(tLiquidity); tTransferAmount = tTransferAmount.sub(tMarketing).sub(tBurn).sub(tTeam); return (tTransferAmount, tFee, tLiquidity, tMarketing, tBurn); } function _getRValues( uint256 tAmount, uint256 tFee, uint256 tLiquidity, uint256 tMarketing, uint256 tBurn, uint256 currentRate ) private view returns ( uint256, uint256, uint256 ) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rLiquidity = tLiquidity.mul(currentRate); uint256 rMarketing = tMarketing.mul(currentRate); uint256 rBurn = tBurn.mul(currentRate); uint256 tTeam = calculateTeamFee(tAmount); uint256 rTeam = tTeam.mul(currentRate); uint256 totalDeduction = rFee.add(rLiquidity).add(rMarketing).add(rBurn).add(rTeam); uint256 rTransferAmount = rAmount.sub(totalDeduction); 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 _takeTeam(uint256 tTeam) private { uint256 currentRate = _getRate(); uint256 rTeam = tTeam.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rTeam); if (_isExcluded[address(this)]) _tOwned[address(this)] = _tOwned[address(this)].add(tTeam); } function _takeMarketingAndBurn(uint256 tMarketing, uint256 tBurn) private { uint256 currentRate = _getRate(); uint256 rMarketing = tMarketing.mul(currentRate); uint256 rBurn = tBurn.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rBurn).add(rMarketing); if (_isExcluded[address(this)]) _tOwned[address(this)] = _tOwned[address(this)] + (tMarketing + tBurn); } function calculateTaxFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_taxFee).div(10**2); } function calculateLiquidityFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_liquidityFee).div(10**2); } function calculateBurnFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_burnFee).div(10**2); } function calculateMarketingFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_marketingFee).div(10**2); } function calculateTeamFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_teamFee).div(10**2); } function restoreAllFee() private { _taxFee = 0; _liquidityFee = 0; _marketingFee = 0; _burnFee = 0; _teamFee = 0; } function setBuyFee() private { _taxFee = buyFee.tax; _liquidityFee = buyFee.autoLp; _marketingFee = buyFee.marketing; _burnFee = buyFee.burn; _teamFee = buyFee.team; } function setSellFee() private { _taxFee = sellFee.tax; _liquidityFee = sellFee.autoLp; _marketingFee = sellFee.marketing; _burnFee = sellFee.burn; _teamFee = sellFee.team; } function setEnableTrading(bool enable) external onlyOwner { require(isTradingEnabled != enable, "Already set Enable"); isTradingEnabled = enable; emit LogSetEnableTrading(isTradingEnabled); } function setBridgeVault (address _bridgeVault) external onlyOwner { require(_bridgeVault != address(0), "Invalid address"); require(bridgeVault != _bridgeVault, "Already set to this value"); bridgeVault = _bridgeVault; emit LogSetBridgeVault(msg.sender, bridgeVault); } function isExcludedFromFee(address account) external view returns (bool) { return _isExcludedFromFee[account]; } 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"); uint256 contractTokenBalance = balanceOf(address(this)); bool overMinTokenBalance = contractTokenBalance >= numTokensSellToAddToLiquidity; if ( overMinTokenBalance && !inSwapAndLiquify && !automatedMarketMakerPairs[from] && swapAndLiquifyEnabled && from != liquidityWallet && to != liquidityWallet ) { contractTokenBalance = numTokensSellToAddToLiquidity; swapAndDistribute(contractTokenBalance); } //transfer amount, it will take tax, Burn, liquidity fee _tokenTransfer(from, to, amount); } function swapAndDistribute(uint256 contractTokenBalance) private lockTheSwap { uint256 total = buyFee.marketing .add(sellFee.marketing) .add(buyFee.autoLp) .add(sellFee.autoLp) .add(buyFee.burn) .add(sellFee.burn) .add(buyFee.team) .add(sellFee.team); uint256 lp = buyFee.autoLp + sellFee.autoLp; uint256 forLiquidity = contractTokenBalance.mul(lp).div(total); swapAndLiquify(forLiquidity); uint256 totalBurn = buyFee.burn + sellFee.burn; uint256 forBurn = contractTokenBalance.mul(totalBurn).div(total); sendToBurn(forBurn); uint256 marketingFee = buyFee.marketing + sellFee.marketing; uint256 forMarketing = contractTokenBalance.mul(marketingFee).div(total); sendToMarketing(forMarketing); uint256 teamFee = buyFee.team + sellFee.team; uint256 forTeam = contractTokenBalance.mul(teamFee).div(total); sendToTeam(forTeam); emit LogSwapAndDistribute(forMarketing, forLiquidity, forBurn, forTeam); } function sendToBurn(uint256 tBurn) private { uint256 currentRate = _getRate(); uint256 rBurn = tBurn.mul(currentRate); _rOwned[burnWallet] = _rOwned[burnWallet].add(rBurn); _rOwned[address(this)] = _rOwned[address(this)].sub(rBurn); if (_isExcluded[burnWallet]) _tOwned[burnWallet] = _tOwned[burnWallet].add(tBurn); if (_isExcluded[address(this)]) _tOwned[address(this)] = _tOwned[address(this)].sub(tBurn); emit Transfer(address(this), burnWallet, tBurn); } function sendToTeam(uint256 tTeam) private { uint256 currentRate = _getRate(); uint256 rTeam = tTeam.mul(currentRate); _rOwned[teamWallet] = _rOwned[teamWallet].add(rTeam); _rOwned[address(this)] = _rOwned[address(this)].sub(rTeam); if (_isExcluded[teamWallet]) _tOwned[teamWallet] = _tOwned[teamWallet].add(tTeam); if (_isExcluded[address(this)]) _tOwned[address(this)] = _tOwned[address(this)].sub(tTeam); emit Transfer(address(this), teamWallet, tTeam); } function sendToMarketing(uint256 tMarketing) private { uint256 currentRate = _getRate(); uint256 rMarketing = tMarketing.mul(currentRate); _rOwned[marketingWallet] = _rOwned[marketingWallet].add(rMarketing); _rOwned[address(this)] = _rOwned[address(this)].sub(rMarketing); if (_isExcluded[marketingWallet]) _tOwned[marketingWallet] = _tOwned[marketingWallet].add(tMarketing); if (_isExcluded[address(this)]) _tOwned[address(this)] = _tOwned[address(this)].sub(tMarketing); emit Transfer(address(this), marketingWallet, tMarketing); } function swapAndLiquify(uint256 tokens) private { uint256 half = tokens.div(2); uint256 otherHalf = tokens.sub(half); uint256 initialBalance = address(this).balance; swapTokensForETH(half); uint256 newBalance = address(this).balance.sub(initialBalance); addLiquidity(otherHalf, newBalance); emit LogSwapAndLiquify(half, newBalance, otherHalf); } function swapTokensForETH(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, 0, liquidityWallet, block.timestamp ); } function _tokenTransfer( address sender, address recipient, uint256 amount ) private { if (!_isExcludedFromFee[sender] && !_isExcludedFromFee[recipient]) { require(isTradingEnabled, "Trading is disabled"); if (automatedMarketMakerPairs[sender] == true) { shouldTakeFee = true; setBuyFee(); } else if (automatedMarketMakerPairs[recipient] == true) { shouldTakeFee = true; setSellFee(); } } if (_isExcluded[sender] && !_isExcluded[recipient]) { _transferFromExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && _isExcluded[recipient]) { _transferToExcluded(sender, recipient, amount); } else if (_isExcluded[sender] && _isExcluded[recipient]) { _transferBothExcluded(sender, recipient, amount); } else { _transferStandard(sender, recipient, amount); } if (shouldTakeFee == true) { shouldTakeFee = false; restoreAllFee(); } } function _takeFee( address sender, uint256 tAmount, uint256 tLiquidity, uint256 tFee, uint256 rFee ) private { if (shouldTakeFee == true) { uint256 tMarketing = calculateMarketingFee(tAmount); uint256 tBurn = calculateBurnFee(tAmount); uint256 tTeam = calculateTeamFee(tAmount); _takeLiquidity(tLiquidity); _takeMarketingAndBurn(tMarketing, tBurn); _takeTeam(tTeam); // reflection _reflectFee(rFee, tFee); // rFee, tFee // `tFee` will miss Transfer event and then with the `tFee`, reflect to all token holders. emit Transfer( sender, address(this), tLiquidity + tMarketing + tBurn + tTeam ); } } function _transferStandard( address sender, address recipient, uint256 tAmount ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity ) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeFee(sender, tAmount, tLiquidity, tFee, rFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferToExcluded( address sender, address recipient, uint256 tAmount ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity ) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeFee(sender, tAmount, tLiquidity, tFee, rFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferFromExcluded( address sender, address recipient, uint256 tAmount ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity ) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeFee(sender, tAmount, tLiquidity, tFee, rFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferBothExcluded( address sender, address recipient, uint256 tAmount ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity ) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeFee(sender, tAmount, tLiquidity, tFee, rFee); emit Transfer(sender, recipient, tTransferAmount); } function setExcludeFromFee(address account, bool enabled) external onlyOwner { require(account != address(0),"Zero Address"); require(_isExcludedFromFee[account] != enabled,"Already enabled"); _isExcludedFromFee[account] = enabled; emit LogSetExcludeFromFee(msg.sender, account, enabled); } function setMarketingWallet(address newWallet) external onlyOwner { require(newWallet != address(0), "Zero Address"); require(newWallet != marketingWallet, "Same Address"); marketingWallet = newWallet; emit LogSetMarketingWallet(msg.sender, marketingWallet); } function setTeamWallet(address newWallet) external onlyOwner { require(newWallet != address(0), "Zero Address"); require(newWallet != teamWallet, "Same Address"); teamWallet = newWallet; emit LogSetTeamWallet(msg.sender, teamWallet); } function setBuyFees( uint256 _lp, uint256 _marketing, uint256 _burn, uint256 _tax, uint256 _team ) external onlyOwner { require(_lp + _marketing + _burn + _tax + _team <= 50, "Max total fee is 50%"); require(!(buyFee.autoLp == _lp && buyFee.marketing == _marketing && buyFee.burn == _burn && buyFee.tax == _tax && buyFee.team == _team), "Nothing is changed"); buyFee.autoLp = _lp; buyFee.marketing = _marketing; buyFee.burn = _burn; buyFee.tax = _tax; buyFee.team = _team; emit LogSetBuyFees(msg.sender, buyFee); } function setSellFees( uint256 _lp, uint256 _marketing, uint256 _burn, uint256 _tax, uint256 _team ) external onlyOwner { require(_lp + _marketing + _burn + _tax + _team <= 50, "Max total fee is 50%"); sellFee.autoLp = _lp; sellFee.marketing = _marketing; sellFee.burn = _burn; sellFee.tax = _tax; sellFee.team = _team; emit LogSetSellFees(msg.sender, sellFee); } function setRouterAddress(address newRouter) external onlyOwner { require(newRouter != address(0), "Zero Address"); require(newRouter != address(uniswapV2Router), "Same Address"); uniswapV2Router = IUniswapV2Router02(newRouter); emit LogSetRouterAddress(msg.sender, newRouter); } function setSwapAndLiquifyEnabled(bool _enabled) external onlyOwner { require(_enabled != swapAndLiquifyEnabled, "Already enabled"); swapAndLiquifyEnabled = _enabled; emit LogSwapAndLiquifyEnabledUpdated(msg.sender, _enabled); } function setSwapTokensAmount(uint256 amount) external onlyOwner { require(amount != numTokensSellToAddToLiquidity, "Same Amount"); numTokensSellToAddToLiquidity = amount; emit LogSetSwapTokensAmount(msg.sender, amount); } function updateLiquidityWallet(address newLiquidityWallet) external onlyOwner { require(newLiquidityWallet != address(0), "Zero Address"); require(newLiquidityWallet != liquidityWallet,"The liquidity wallet is already this address" ); liquidityWallet = newLiquidityWallet; emit LogUpdateLiquidityWallet(msg.sender, newLiquidityWallet); } function withdrawETH(address payable recipient, uint256 amount) external onlyOwner { require(recipient != address(0), "Zero Address"); require(amount <= (address(this)).balance, "Incufficient funds"); recipient.transfer(amount); emit LogWithdrawalETH(recipient, amount); } /** * @notice Should not be withdrawn scam token or this Empire token. * Use `withdraw` function to withdraw this Empire token. */ function withdrawToken( IERC20 token, address recipient, uint256 amount ) external onlyOwner { require(address(token) != address(0), "Zero Address of Token"); require(recipient != address(0), "Zero Address of Recepient"); require(amount <= token.balanceOf(address(this)), "Incufficient funds"); require(token.transfer(recipient, amount), "Transfer Fail"); emit LogWithdrawToken(address(token), recipient, amount); } /** * @notice The onlyOwner will withdraw this token to `recipient`. */ function withdraw(address recipient, uint256 tAmount) external onlyOwner { require(recipient != address(0), "Zero Address"); require(tAmount > 0, "Withdrawal amount must be greater than zero"); if (_isExcluded[address(this)] && !_isExcluded[recipient]) { _transferFromExcluded(address(this), recipient, tAmount); } else if (!_isExcluded[address(this)] && _isExcluded[recipient]) { _transferToExcluded(address(this), recipient, tAmount); } else if (_isExcluded[address(this)] && _isExcluded[recipient]) { _transferBothExcluded(address(this), recipient, tAmount); } else { _transferStandard(address(this), recipient, tAmount); } emit LogWithdrawal(recipient, tAmount); } modifier onlyBridge() { require(msg.sender == bridge, "Only bridge can perform this action"); _; } function setBridge(address _bridge) external onlyOwner { require(_bridge != address(0), "Zero Address"); require(bridge != _bridge, "Same Bridge!"); bridge = _bridge; emit LogSetBridge(msg.sender, bridge); } /** * @dev need approval from account */ function lock(address account, uint256 tAmount) external onlyBridge { require(account != address(0), "Zero address"); require(tAmount > 0, "Lock amount must be greater than zero"); require(tAmount <= balanceOf(account), "Incufficient funds"); require(_allowances[account][_msgSender()] >= tAmount, "ERC20: transfer amount exceeds allowance"); if (!_isExcluded[account]) { _transferToExcluded(account, bridgeVault, tAmount); } else { _transferBothExcluded(account, bridgeVault, tAmount); } emit LogLockByBridge(account, tAmount); } /** * @dev no need approval, because bridgeVault balance is controlled by EMPIRE */ function unlock(address account, uint256 tAmount) external onlyBridge { require(account != address(0), "Zero address"); require(tAmount > 0, "Unlock amount must be greater than zero"); require(tAmount <= balanceOf(bridgeVault), "Incufficient funds"); if (!_isExcluded[account]) { _transferFromExcluded(bridgeVault, account, tAmount); } else { _transferBothExcluded(bridgeVault, account, tAmount); } emit LogUnlockByBridge(account, tAmount); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_router","type":"address"},{"internalType":"address","name":"_marketingWallet","type":"address"},{"internalType":"address","name":"_teamWallet","type":"address"},{"internalType":"address","name":"_bridgeVault","type":"address"}],"stateMutability":"payable","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":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"LogDeliver","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"LogExcludeFromReward","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"LogFallback","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"LogIncludeInReward","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"LogLockByBridge","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"LogReceive","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"setter","type":"address"},{"indexed":false,"internalType":"address","name":"pair","type":"address"},{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"LogSetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"setter","type":"address"},{"indexed":false,"internalType":"address","name":"bridge","type":"address"}],"name":"LogSetBridge","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"setter","type":"address"},{"indexed":false,"internalType":"address","name":"_bridgeVault","type":"address"}],"name":"LogSetBridgeVault","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"setter","type":"address"},{"components":[{"internalType":"uint256","name":"autoLp","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"tax","type":"uint256"},{"internalType":"uint256","name":"team","type":"uint256"}],"indexed":false,"internalType":"struct EmpireToken.BuyFee","name":"buyFee","type":"tuple"}],"name":"LogSetBuyFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"LogSetEnableTrading","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"setter","type":"address"},{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"LogSetExcludeFromFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"setter","type":"address"},{"indexed":false,"internalType":"address","name":"marketingWallet","type":"address"}],"name":"LogSetMarketingWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"setter","type":"address"},{"indexed":false,"internalType":"address","name":"router","type":"address"}],"name":"LogSetRouterAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"setter","type":"address"},{"components":[{"internalType":"uint256","name":"autoLp","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"tax","type":"uint256"},{"internalType":"uint256","name":"team","type":"uint256"}],"indexed":false,"internalType":"struct EmpireToken.SellFee","name":"sellFee","type":"tuple"}],"name":"LogSetSellFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"setter","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"LogSetSwapTokensAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"setter","type":"address"},{"indexed":false,"internalType":"address","name":"teamWallet","type":"address"}],"name":"LogSetTeamWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"forMarketing","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"forLiquidity","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"forBurn","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"forTeam","type":"uint256"}],"name":"LogSwapAndDistribute","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"LogSwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"setter","type":"address"},{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"LogSwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"LogTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"LogUnlockByBridge","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"setter","type":"address"},{"indexed":false,"internalType":"address","name":"liquidityWallet","type":"address"}],"name":"LogUpdateLiquidityWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"LogWithdrawToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"LogWithdrawal","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"LogWithdrawalETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"_burnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_teamFee","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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bridge","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bridgeVault","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"autoLp","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"tax","type":"uint256"},{"internalType":"uint256","name":"team","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"circulatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isTradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numTokensSellToAddToLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"autoLp","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"tax","type":"uint256"},{"internalType":"uint256","name":"team","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_bridge","type":"address"}],"name":"setBridge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_bridgeVault","type":"address"}],"name":"setBridgeVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_lp","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_burn","type":"uint256"},{"internalType":"uint256","name":"_tax","type":"uint256"},{"internalType":"uint256","name":"_team","type":"uint256"}],"name":"setBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enable","type":"bool"}],"name":"setEnableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setRouterAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_lp","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_burn","type":"uint256"},{"internalType":"uint256","name":"_tax","type":"uint256"},{"internalType":"uint256","name":"_team","type":"uint256"}],"name":"setSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setSwapTokensAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"setTeamWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"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":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newLiquidityWallet","type":"address"}],"name":"updateLiquidityWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a06040526200001a670de0b6b3a76400006000196200062a565b62000028906000196200064d565b60125560006014819055601581905560168190556017819055601855601e805461ffff60a81b1916600160b01b179055650746a5288000601f5560405162004bbb38819003908190833981016040819052620000849162000690565b6200008f336200049b565b601254336000908152600160205260409020556001600160a01b03841615801590620000c357506001600160a01b03831615155b8015620000d857506001600160a01b03821615155b8015620000ed57506001600160a01b03811615155b6200012e5760405162461bcd60e51b815260206004820152600c60248201526b5a65726f206164647265737360a01b60448201526064015b60405180910390fd5b601980546001600160a01b0319166001600160a01b03851617905561dead608052620001626000546001600160a01b031690565b601a80546001600160a01b039283166001600160a01b031991821617909155601b8054858416908316179055601c8054848416908316811782556000908152600660209081526040808320805460ff19908116600190811790925594546007805480840182557fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68890810180548a16938b1693909317909255608051891680875284872080549098168417909755805492830181558552018054909516909317909355815163c45a015560e01b81529151889491939185169263c45a01559260048083019391928290030181865afa15801562000262573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002889190620006ed565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002d6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002fc9190620006ed565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200034a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003709190620006ed565b90506200037f816001620004eb565b601d80546001600160a01b0319166001600160a01b0384161790553060009081526005602081905260408220805460ff1916600190811790915591620003cd6000546001600160a01b031690565b6001600160a01b0316815260208101919091526040016000908120805460ff1916921515929092179091556004600881905560098290556003600a8190556002600b8190556001600c819055600d93909355600e93909355600f55601091909155601155620004393390565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a76400006040516200048791815260200190565b60405180910390a350505050505062000712565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b620004f5620005cc565b6001600160a01b03821660009081526004602052604090205481151560ff909116151503620005675760405162461bcd60e51b815260206004820152601460248201527f5061697220416c726561647920456e61626c6564000000000000000000000000604482015260640162000125565b6001600160a01b038216600081815260046020908152604091829020805460ff191685151590811790915582519384529083015233917fac0b2958c680afbcacee16a4305170e8004cf74c8270ac3edd2abc61b919e8ea910160405180910390a25050565b6000546001600160a01b03163314620006285760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000125565b565b6000826200064857634e487b7160e01b600052601260045260246000fd5b500690565b6000828210156200066e57634e487b7160e01b600052601160045260246000fd5b500390565b80516001600160a01b03811681146200068b57600080fd5b919050565b60008060008060808587031215620006a757600080fd5b620006b28562000673565b9350620006c26020860162000673565b9250620006d26040860162000673565b9150620006e26060860162000673565b905092959194509250565b6000602082840312156200070057600080fd5b6200070b8262000673565b9392505050565b60805161445c6200075f6000396000818161043901528181611e5e0152818161369d015281816136e30152818161373d0152818161377f015281816137c20152613845015261445c6000f3fe6080604052600436106103905760003560e01c80635d098b38116101dc578063ac03e9f011610102578063d12a7688116100a0578063e78cea921161006f578063e78cea9214610b97578063ebcb0b7a14610bb7578063f2fde38b14610bd7578063f3fef3a314610bf7576103d0565b8063d12a768814610afb578063d469801614610b11578063dd62ed3e14610b31578063e37ba8f914610b77576103d0565b8063b92ebd5f116100dc578063b92ebd5f14610a85578063c0b0fda214610aa5578063c1cf53c414610abb578063c49b9a8014610adb576103d0565b8063ac03e9f014610a15578063af9549e014610a35578063b62496f514610a55576103d0565b80638da5cb5b1161017a5780639a7a23d6116101495780639a7a23d61461099f5780639eb942e5146109bf578063a457c2d7146109d5578063a9059cbb146109f5576103d0565b80638da5cb5b1461091d5780638dd148021461093b5780639358928b1461095b57806395d89b4114610970576103d0565b8063715018a6116101b6578063715018a61461088f57806375f0a874146108a45780637eee288d146108c457806388f82020146108e4576103d0565b80635d098b38146108395780636bc87c3a1461085957806370a082311461086f576103d0565b8063313ce567116102c15780634549b0391161025f5780634a74bb021161022e5780634a74bb021461079f57806352390c02146107c05780635342acb4146107e05780635992704414610819576103d0565b80634549b0391461071857806347062402146107385780634782f7791461075f57806347a28b791461077f576103d0565b80633b124fe71161029b5780633b124fe7146106a25780633bd5d173146106b857806341cb87fc146106d857806343e716fe146106f8576103d0565b8063313ce567146106465780633685d419146106625780633950935114610682576103d0565b80631694505e1161032e57806323b872dd1161030857806323b872dd14610597578063282d3fdf146105b75780632b14ca56146105d75780632d83811914610626576103d0565b80631694505e1461054657806318160ddd1461056657806322976e0d14610581576103d0565b806306fdde031161036a57806306fdde03146104a9578063095ea7b3146104e757806313114a9d146105075780631525ff7d14610526576103d0565b806301e33667146104055780630622874914610427578063064a59d014610478576103d0565b366103d057604080513381523460208201527f98c44cd71a4f8250380570aaf8bf1f0fd2a19bc3428a18a782e9e4d6c1928b1391015b60405180910390a1005b604080513381523460208201527fc04e16d4878a87a7d627a5fb8c387ac4a2169e45f86d1935cc739c196c8a571591016103c6565b34801561041157600080fd5b50610425610420366004613f22565b610c17565b005b34801561043357600080fd5b5061045b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561048457600080fd5b50601e5461049990600160b81b900460ff1681565b604051901515815260200161046f565b3480156104b557600080fd5b5060408051808201909152600c81526b22b6b834b932902a37b5b2b760a11b60208201525b60405161046f9190613f63565b3480156104f357600080fd5b50610499610502366004613fb8565b610e50565b34801561051357600080fd5b506013545b60405190815260200161046f565b34801561053257600080fd5b50610425610541366004613fe4565b610e67565b34801561055257600080fd5b50601d5461045b906001600160a01b031681565b34801561057257600080fd5b50670de0b6b3a7640000610518565b34801561058d57600080fd5b5061051860175481565b3480156105a357600080fd5b506104996105b2366004613f22565b610f1a565b3480156105c357600080fd5b506104256105d2366004613fb8565b610f98565b3480156105e357600080fd5b50600d54600e54600f546010546011546105fe949392919085565b604080519586526020860194909452928401919091526060830152608082015260a00161046f565b34801561063257600080fd5b50610518610641366004614001565b6111ad565b34801561065257600080fd5b506040516009815260200161046f565b34801561066e57600080fd5b5061042561067d366004613fe4565b611231565b34801561068e57600080fd5b5061049961069d366004613fb8565b611462565b3480156106ae57600080fd5b5061051860145481565b3480156106c457600080fd5b506104256106d3366004614001565b611498565b3480156106e457600080fd5b506104256106f3366004613fe4565b6115b7565b34801561070457600080fd5b50610425610713366004614001565b611663565b34801561072457600080fd5b50610518610733366004614028565b6116e1565b34801561074457600080fd5b50600854600954600a54600b54600c546105fe949392919085565b34801561076b57600080fd5b5061042561077a366004613fb8565b611774565b34801561078b57600080fd5b5061042561079a366004614058565b611835565b3480156107ab57600080fd5b50601e5461049990600160b01b900460ff1681565b3480156107cc57600080fd5b506104256107db366004613fe4565b611983565b3480156107ec57600080fd5b506104996107fb366004613fe4565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561082557600080fd5b50601b5461045b906001600160a01b031681565b34801561084557600080fd5b50610425610854366004613fe4565b611ada565b34801561086557600080fd5b5061051860155481565b34801561087b57600080fd5b5061051861088a366004613fe4565b611b86565b34801561089b57600080fd5b50610425611be5565b3480156108b057600080fd5b5060195461045b906001600160a01b031681565b3480156108d057600080fd5b506104256108df366004613fb8565b611bf9565b3480156108f057600080fd5b506104996108ff366004613fe4565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561092957600080fd5b506000546001600160a01b031661045b565b34801561094757600080fd5b50610425610956366004613fe4565b611d8a565b34801561096757600080fd5b50610518611e54565b34801561097c57600080fd5b50604080518082019091526006815265454d5049524560d01b60208201526104da565b3480156109ab57600080fd5b506104256109ba366004614093565b611ebe565b3480156109cb57600080fd5b5061051860185481565b3480156109e157600080fd5b506104996109f0366004613fb8565b611f8b565b348015610a0157600080fd5b50610499610a10366004613fb8565b611fda565b348015610a2157600080fd5b50601c5461045b906001600160a01b031681565b348015610a4157600080fd5b50610425610a50366004614093565b612038565b348015610a6157600080fd5b50610499610a70366004613fe4565b60046020526000908152604090205460ff1681565b348015610a9157600080fd5b50610425610aa03660046140c1565b612126565b348015610ab157600080fd5b5061051860165481565b348015610ac757600080fd5b50610425610ad6366004614058565b6121e1565b348015610ae757600080fd5b50610425610af63660046140c1565b6122a5565b348015610b0757600080fd5b50610518601f5481565b348015610b1d57600080fd5b50601a5461045b906001600160a01b031681565b348015610b3d57600080fd5b50610518610b4c3660046140de565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610b8357600080fd5b50610425610b92366004613fe4565b61234d565b348015610ba357600080fd5b50601e5461045b906001600160a01b031681565b348015610bc357600080fd5b50610425610bd2366004613fe4565b61243e565b348015610be357600080fd5b50610425610bf2366004613fe4565b612540565b348015610c0357600080fd5b50610425610c12366004613fb8565b6125b9565b610c1f61276d565b6001600160a01b038316610c725760405162461bcd60e51b81526020600482015260156024820152742d32b9379020b2323932b9b99037b3102a37b5b2b760591b60448201526064015b60405180910390fd5b6001600160a01b038216610cc85760405162461bcd60e51b815260206004820152601960248201527f5a65726f2041646472657373206f6620526563657069656e74000000000000006044820152606401610c69565b6040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610d0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d30919061410c565b811115610d4f5760405162461bcd60e51b8152600401610c6990614125565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af1158015610d9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc29190614151565b610dfe5760405162461bcd60e51b815260206004820152600d60248201526c151c985b9cd9995c8811985a5b609a1b6044820152606401610c69565b816001600160a01b0316836001600160a01b03167f46ae78bc7b198b8b534ca0070d125569ac5f955976841c4343223079f3abf0de83604051610e4391815260200190565b60405180910390a3505050565b6000610e5d3384846127c7565b5060015b92915050565b610e6f61276d565b6001600160a01b038116610e955760405162461bcd60e51b8152600401610c699061416e565b601b546001600160a01b0390811690821603610ec35760405162461bcd60e51b8152600401610c6990614194565b601b80546001600160a01b0319166001600160a01b03831690811790915560405190815233907f6b23cabdb8b55d4883cb406993a5f14492a2c4c86e5ce8debed487c4dc5a45e6906020015b60405180910390a250565b6000610f278484846128e3565b610f8e84336001600160a01b0387166000908152600360205260408120610f8991336001600160a01b03166001600160a01b0316815260200190815260200160002054866040518060600160405280602881526020016143ba60289139612aca565b6127c7565b5060019392505050565b601e546001600160a01b03163314610fc25760405162461bcd60e51b8152600401610c69906141ba565b6001600160a01b0382166110075760405162461bcd60e51b815260206004820152600c60248201526b5a65726f206164647265737360a01b6044820152606401610c69565b600081116110655760405162461bcd60e51b815260206004820152602560248201527f4c6f636b20616d6f756e74206d7573742062652067726561746572207468616e604482015264207a65726f60d81b6064820152608401610c69565b61106e82611b86565b81111561108d5760405162461bcd60e51b8152600401610c6990614125565b6001600160a01b03821660009081526003602090815260408083203384529091529020548111156111115760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610c69565b6001600160a01b03821660009081526006602052604090205460ff1661114e57601c546111499083906001600160a01b031683612b04565b611166565b601c546111669083906001600160a01b031683612c19565b816001600160a01b03167fd67292b41a781140f5a0da0649c6028bd549f6e3335f570c31cdd202db9fc0cf826040516111a191815260200190565b60405180910390a25050565b60006012548211156112145760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610c69565b600061121e612c8c565b905061122a8382612caf565b9392505050565b61123961276d565b601c546001600160a01b03908116908216036112a15760405162461bcd60e51b815260206004820152602160248201527f427269646765205661756c742063616e277420726563656976652072657761726044820152601960fa1b6064820152608401610c69565b6001600160a01b03811660009081526006602052604090205460ff166113095760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c726561647920696e636c7564656400000000006044820152606401610c69565b60005b60075481101561142a57816001600160a01b031660078281548110611333576113336141fd565b6000918252602090912001546001600160a01b031603611418576007805461135d90600190614229565b8154811061136d5761136d6141fd565b600091825260209091200154600780546001600160a01b039092169183908110611399576113996141fd565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600690925220805460ff1916905560078054806113f1576113f1614240565b600082815260209020810160001990810180546001600160a01b031916905501905561142a565b8061142281614256565b91505061130c565b506040516001600160a01b038216907f5f05034ac7f3d648bc123a1fa9e17b8b56758b33c45ad85f418b7125cf0b9ce590600090a250565b3360008181526003602090815260408083206001600160a01b03871684529091528120549091610e5d918590610f899086612cbb565b3360008181526006602052604090205460ff161561150d5760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608401610c69565b600061151883612cc7565b505050506001600160a01b03841660009081526001602052604090205491925061154491905082612d23565b6001600160a01b03831660009081526001602052604090205560125461156a9082612d23565b60125560135461157a9084612cbb565b60135560405183815233907f9745995e0db679b62281d9ca9200fed9b3cc7ee9ff131b05a3fb642b5d43dcc49060200160405180910390a2505050565b6115bf61276d565b6001600160a01b0381166115e55760405162461bcd60e51b8152600401610c699061416e565b601d546001600160a01b03908116908216036116135760405162461bcd60e51b8152600401610c6990614194565b601d80546001600160a01b0319166001600160a01b03831690811790915560405190815233907fac059041d07fde13bf50242296de370c33ddecff1f8ecb4d5ae0836f1ebe365d90602001610f0f565b61166b61276d565b601f5481036116aa5760405162461bcd60e51b815260206004820152600b60248201526a14d85b5948105b5bdd5b9d60aa1b6044820152606401610c69565b601f81905560405181815233907f9dcafbd759717e12afc2978cb500b553016b707cc2c3497e2d05f528ee77796190602001610f0f565b6000670de0b6b3a764000083111561173b5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610c69565b8161175a57600061174b84612cc7565b50939550610e61945050505050565b600061176584612cc7565b50929550610e61945050505050565b61177c61276d565b6001600160a01b0382166117a25760405162461bcd60e51b8152600401610c699061416e565b30318111156117c35760405162461bcd60e51b8152600401610c6990614125565b6040516001600160a01b0383169082156108fc029083906000818181858888f193505050501580156117f9573d6000803e3d6000fd5b50816001600160a01b03167f4d8420592b5127331542602906f9907d197ec28af2dfd4daa72324bcfadcc600826040516111a191815260200190565b61183d61276d565b603281838561184c888a61426f565b611856919061426f565b611860919061426f565b61186a919061426f565b11156118af5760405162461bcd60e51b81526020600482015260146024820152734d617820746f74616c206665652069732035302560601b6044820152606401610c69565b600854851480156118c15750600a5484145b80156118ce575060095483145b80156118db5750600b5482145b80156118e85750600c5481145b1561192a5760405162461bcd60e51b8152602060048201526012602482015271139bdd1a1a5b99c81a5cc818da185b99d95960721b6044820152606401610c69565b6008858155600a8590556009849055600b839055600c82905560405133917f5ed6fe211f244075ad220436a1126097caaea93ebdab2a44c01339432c70aa2d916119749190614287565b60405180910390a25050505050565b61198b61276d565b6001600160a01b03811660009081526006602052604090205460ff16156119f45760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610c69565b6001600160a01b03811660009081526001602052604090205415611a4e576001600160a01b038116600090815260016020526040902054611a34906111ad565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b038116600081815260066020526040808220805460ff1916600190811790915560078054918201815583527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b03191684179055517f4940d2d27c97c0426162178d4249cafef4a4e9ce874280d41948dc95ef4d79759190a250565b611ae261276d565b6001600160a01b038116611b085760405162461bcd60e51b8152600401610c699061416e565b6019546001600160a01b0390811690821603611b365760405162461bcd60e51b8152600401610c6990614194565b601980546001600160a01b0319166001600160a01b03831690811790915560405190815233907f1f8c951d17767e852874d7e6bc407c7e0bcf18713d8d8bbf1b562740ca43a47490602001610f0f565b6001600160a01b03811660009081526006602052604081205460ff1615611bc357506001600160a01b031660009081526002602052604090205490565b6001600160a01b038216600090815260016020526040902054610e61906111ad565b611bed61276d565b611bf76000612d2f565b565b601e546001600160a01b03163314611c235760405162461bcd60e51b8152600401610c69906141ba565b6001600160a01b038216611c685760405162461bcd60e51b815260206004820152600c60248201526b5a65726f206164647265737360a01b6044820152606401610c69565b60008111611cc85760405162461bcd60e51b815260206004820152602760248201527f556e6c6f636b20616d6f756e74206d7573742062652067726561746572207468604482015266616e207a65726f60c81b6064820152608401610c69565b601c54611cdd906001600160a01b0316611b86565b811115611cfc5760405162461bcd60e51b8152600401610c6990614125565b6001600160a01b03821660009081526006602052604090205460ff16611d3857601c54611d33906001600160a01b03168383612d7f565b611d4f565b601c54611d4f906001600160a01b03168383612c19565b816001600160a01b03167f6910e0daf9e4cb68a38b4c1a459b879944b8eb161a86c8f354d96e5a54faf0c0826040516111a191815260200190565b611d9261276d565b6001600160a01b038116611db85760405162461bcd60e51b8152600401610c699061416e565b601e546001600160a01b03808316911603611e045760405162461bcd60e51b815260206004820152600c60248201526b53616d65204272696467652160a01b6044820152606401610c69565b601e80546001600160a01b0319166001600160a01b03831690811790915560405190815233907fd94e52c58cb5870958c05be7a6183038f705e88c54604590d15d3986cf12a2c990602001610f0f565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660009081526002602052604080822054601c5490931682528120549091611eb991611eb390670de0b6b3a764000090612d23565b90612d23565b905090565b611ec661276d565b6001600160a01b03821660009081526004602052604090205481151560ff909116151503611f2d5760405162461bcd60e51b815260206004820152601460248201527314185a5c88105b1c9958591e48115b98589b195960621b6044820152606401610c69565b6001600160a01b038216600081815260046020908152604091829020805460ff191685151590811790915582519384529083015233917fac0b2958c680afbcacee16a4305170e8004cf74c8270ac3edd2abc61b919e8ea91016111a1565b3360008181526003602090815260408083206001600160a01b038716845282528083205481516060810190925260258083529394610e5d9490938893610f899392899261440290830139612aca565b6000611fe73384846128e3565b604080513381526001600160a01b038516602082015280820184905290517f0a85107a334eae0d22d21cdf13af0f8e8125039ec60baaa843d2c4c5b06801749181900360600190a150600192915050565b61204061276d565b6001600160a01b0382166120665760405162461bcd60e51b8152600401610c699061416e565b6001600160a01b03821660009081526005602052604090205481151560ff9091161515036120c85760405162461bcd60e51b815260206004820152600f60248201526e105b1c9958591e48195b98589b1959608a1b6044820152606401610c69565b6001600160a01b038216600081815260056020908152604091829020805460ff191685151590811790915582519384529083015233917f76f22305305903e16255cd5e7860e85c184833a5d910944a72f17fec284b8e1f91016111a1565b61212e61276d565b801515601e60179054906101000a900460ff161515036121855760405162461bcd60e51b8152602060048201526012602482015271416c72656164792073657420456e61626c6560701b6044820152606401610c69565b601e805460ff60b81b1916600160b81b8315158102919091179182905560405160ff9190920416151581527f31bb29a860273cd60e45bfd8d53a143941df649ed22e5681a416fab2500c8b12906020015b60405180910390a150565b6121e961276d565b60328183856121f8888a61426f565b612202919061426f565b61220c919061426f565b612216919061426f565b111561225b5760405162461bcd60e51b81526020600482015260146024820152734d617820746f74616c206665652069732035302560601b6044820152606401610c69565b600d858155600f859055600e8490556010839055601182905560405133917feeafcf7f0f07b512f79535e74a0088e915295e3ba562933b8a5d5dcf4b0b5354916119749190614287565b6122ad61276d565b601e54600160b01b900460ff161515811515036122fe5760405162461bcd60e51b815260206004820152600f60248201526e105b1c9958591e48195b98589b1959608a1b6044820152606401610c69565b601e8054821515600160b01b0260ff60b01b1990911617905560405133907fb318bd8ba266a5ee667ec4d0326bb4b0be9a30e8aadeaa85fef0cdeac50d723690610f0f90841515815260200190565b61235561276d565b6001600160a01b03811661237b5760405162461bcd60e51b8152600401610c699061416e565b601a546001600160a01b03908116908216036123ee5760405162461bcd60e51b815260206004820152602c60248201527f546865206c69717569646974792077616c6c657420697320616c72656164792060448201526b74686973206164647265737360a01b6064820152608401610c69565b601a80546001600160a01b0319166001600160a01b03831690811790915560405190815233907f99cf746968302d2ab01f9f9b0f5410586a666bb17b3fe690b309f5d6e16f6cd390602001610f0f565b61244661276d565b6001600160a01b03811661248e5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606401610c69565b601c546001600160a01b038083169116036124eb5760405162461bcd60e51b815260206004820152601960248201527f416c72656164792073657420746f20746869732076616c7565000000000000006044820152606401610c69565b601c80546001600160a01b0319166001600160a01b0383169081179091556040805133815260208101929092527fb97f7a2535e0e53d65a1db2e5691bf70f020b2a06dcc9419e93976fa79e2b4ec91016121d6565b61254861276d565b6001600160a01b0381166125ad5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c69565b6125b681612d2f565b50565b6125c161276d565b6001600160a01b0382166125e75760405162461bcd60e51b8152600401610c699061416e565b6000811161264b5760405162461bcd60e51b815260206004820152602b60248201527f5769746864726177616c20616d6f756e74206d7573742062652067726561746560448201526a72207468616e207a65726f60a81b6064820152608401610c69565b3060009081526006602052604090205460ff16801561268357506001600160a01b03821660009081526006602052604090205460ff16155b1561269857612693308383612d7f565b612732565b3060009081526006602052604090205460ff161580156126d057506001600160a01b03821660009081526006602052604090205460ff165b156126e057612693308383612b04565b3060009081526006602052604090205460ff16801561271757506001600160a01b03821660009081526006602052604090205460ff165b1561272757612693308383612c19565b612732308383612e21565b816001600160a01b03167fb4214c8c54fc7442f36d3682f59aebaf09358a4431835b30efb29d52cf9e1e91826040516111a191815260200190565b6000546001600160a01b03163314611bf75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610c69565b6001600160a01b0383166128295760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610c69565b6001600160a01b03821661288a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610c69565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259101610e43565b6001600160a01b0383166129475760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610c69565b6001600160a01b0382166129a95760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610c69565b60008111612a0b5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610c69565b6000612a1630611b86565b601f5490915081108015908190612a375750601e54600160a01b900460ff16155b8015612a5c57506001600160a01b03851660009081526004602052604090205460ff16155b8015612a715750601e54600160b01b900460ff165b8015612a8b5750601a546001600160a01b03868116911614155b8015612aa55750601a546001600160a01b03858116911614155b15612ab857601f549150612ab882612e65565b612ac3858585612fdf565b5050505050565b60008184841115612aee5760405162461bcd60e51b8152600401610c699190613f63565b506000612afb8585612d23565b95945050505050565b600080600080600080612b1687612cc7565b6001600160a01b038f16600090815260016020526040902054959b50939950919750955093509150612b489087612d23565b6001600160a01b03808b16600090815260016020908152604080832094909455918b16815260029091522054612b7e9084612cbb565b6001600160a01b038916600090815260026020908152604080832093909355600190522054612bad9086612cbb565b6001600160a01b038916600090815260016020526040902055612bd38988838588613278565b876001600160a01b0316896001600160a01b03166000805160206143e283398151915285604051612c0691815260200190565b60405180910390a3505050505050505050565b600080600080600080612c2b87612cc7565b6001600160a01b038f16600090815260026020526040902054959b50939950919750955093509150612c5d9088612d23565b6001600160a01b038a16600090815260026020908152604080832093909355600190522054612b489087612d23565b6000806000612c99613330565b9092509050612ca88282612caf565b9250505090565b600061122a82846142bc565b600061122a828461426f565b6000806000806000806000806000806000612ce18c6134c8565b945094509450945094506000806000612d058f88888888612d00612c8c565b613546565b919f509d509b50969950949750929550505050505091939550919395565b600061122a8284614229565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080600080600080612d9187612cc7565b6001600160a01b038f16600090815260026020526040902054959b50939950919750955093509150612dc39088612d23565b6001600160a01b038a16600090815260026020908152604080832093909355600190522054612df29087612d23565b6001600160a01b03808b1660009081526001602052604080822093909355908a1681522054612bad9086612cbb565b600080600080600080612e3387612cc7565b6001600160a01b038f16600090815260016020526040902054959b50939950919750955093509150612df29087612d23565b601e805460ff60a01b1916600160a01b179055601154600c54600e54600954600d54600854600f54600a54600097612eb8979096612eb29691958795919486948593849290918391612cbb565b90612cbb565b600d54600854919250600091612ece919061426f565b90506000612ee683612ee086856135e8565b90612caf565b9050612ef1816135f4565b600e54600954600091612f039161426f565b90506000612f1585612ee088856135e8565b9050612f208161367b565b600f54600a54600091612f329161426f565b90506000612f4487612ee08a856135e8565b9050612f4f81613880565b601154600c54600091612f619161426f565b90506000612f7389612ee08c856135e8565b9050612f7e816139d3565b6040805184815260208101899052908101869052606081018290527fab43d64ef8bfe74393a308a718f49af9d2f845de3bdc8f5e3cb528b4ffec85f79060800160405180910390a15050601e805460ff60a01b191690555050505050505050565b6001600160a01b03831660009081526005602052604090205460ff1615801561302157506001600160a01b03821660009081526005602052604090205460ff16155b1561313057601e54600160b81b900460ff166130755760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81a5cc8191a5cd8589b1959606a1b6044820152606401610c69565b6001600160a01b03831660009081526004602052604090205460ff1615156001036130d557601e805460ff60a81b1916600160a81b1790556130d0600b54601455600854601555600a54601755600954601655600c54601855565b613130565b6001600160a01b03821660009081526004602052604090205460ff16151560010361313057601e805460ff60a81b1916600160a81b179055613130601054601455600d54601555600f54601755600e54601655601154601855565b6001600160a01b03831660009081526006602052604090205460ff16801561317157506001600160a01b03821660009081526006602052604090205460ff16155b1561318657613181838383612d7f565b613232565b6001600160a01b03831660009081526006602052604090205460ff161580156131c757506001600160a01b03821660009081526006602052604090205460ff165b156131d757613181838383612b04565b6001600160a01b03831660009081526006602052604090205460ff16801561321757506001600160a01b03821660009081526006602052604090205460ff165b1561322757613181838383612c19565b613232838383612e21565b601e54600160a81b900460ff16151560010361327357601e805460ff60a81b1916905561327360006014819055601581905560178190556016819055601855565b505050565b601e54600160a81b900460ff161515600103612ac357600061329985613b26565b905060006132a686613b42565b905060006132b387613b5e565b90506132be86613b7a565b6132c88383613c02565b6132d181613b7a565b6132db8486613caa565b306001600160a01b0389166000805160206143e28339815191528385613301888c61426f565b61330b919061426f565b613315919061426f565b60405190815260200160405180910390a35050505050505050565b6012546000908190670de0b6b3a7640000825b60075481101561348d57826001600060078481548110613365576133656141fd565b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806133d057508160026000600784815481106133a9576133a96141fd565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156133eb57505060125493670de0b6b3a76400009350915050565b6134316001600060078481548110613405576134056141fd565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490612d23565b9250613479600260006007848154811061344d5761344d6141fd565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390612d23565b91508061348581614256565b915050613343565b506012546134a390670de0b6b3a7640000612caf565b8210156134bf57505060125492670de0b6b3a764000092509050565b90939092509050565b6000806000806000806134da87613cce565b905060006134e788613cea565b905060006134f489613b26565b905060006135018a613b42565b9050600061350e8b613b5e565b9050600061352085611eb38e89612d23565b905061353282611eb385818589612d23565b9c959b509399509197509550919350505050565b60008080806135558a866135e8565b905060006135638a876135e8565b905060006135718a886135e8565b9050600061357f8a896135e8565b9050600061358d8a8a6135e8565b9050600061359a8f613b5e565b905060006135a8828c6135e8565b905060006135be82612eb2868189818d8d612cbb565b905060006135cc8983612d23565b989b509799509597505050505050505096509650969350505050565b600061122a82846142de565b6000613601826002612caf565b9050600061360f8383612d23565b90504761361b83613d06565b60006136274783612d23565b90506136338382613e60565b60408051858152602081018390529081018490527f9d1cc8269ebbe9c8a971dd4c72fe5f591a00d412092c504fabeacee79732ac119060600160405180910390a15050505050565b6000613685612c8c565b9050600061369383836135e8565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166000908152600160205260409020549091506136d99082612cbb565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166000908152600160205260408082209290925530815220546137259082612d23565b306000908152600160209081526040808320939093557f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316825260069052205460ff16156137f2576001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166000908152600260205260409020546137b89084612cbb565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166000908152600260205260409020555b3060009081526006602052604090205460ff161561383557306000908152600260205260409020546138249084612d23565b306000908152600260205260409020555b6040518381526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169030906000805160206143e283398151915290602001610e43565b600061388a612c8c565b9050600061389883836135e8565b6019546001600160a01b03166000908152600160205260409020549091506138c09082612cbb565b6019546001600160a01b03166000908152600160205260408082209290925530815220546138ee9082612d23565b306000908152600160209081526040808320939093556019546001600160a01b0316825260069052205460ff1615613961576019546001600160a01b03166000908152600260205260409020546139459084612cbb565b6019546001600160a01b03166000908152600260205260409020555b3060009081526006602052604090205460ff16156139a457306000908152600260205260409020546139939084612d23565b306000908152600260205260409020555b6019546040518481526001600160a01b039091169030906000805160206143e283398151915290602001610e43565b60006139dd612c8c565b905060006139eb83836135e8565b601b546001600160a01b0316600090815260016020526040902054909150613a139082612cbb565b601b546001600160a01b0316600090815260016020526040808220929092553081522054613a419082612d23565b30600090815260016020908152604080832093909355601b546001600160a01b0316825260069052205460ff1615613ab457601b546001600160a01b0316600090815260026020526040902054613a989084612cbb565b601b546001600160a01b03166000908152600260205260409020555b3060009081526006602052604090205460ff1615613af75730600090815260026020526040902054613ae69084612d23565b306000908152600260205260409020555b601b546040518481526001600160a01b039091169030906000805160206143e283398151915290602001610e43565b6000610e616064612ee0601754856135e890919063ffffffff16565b6000610e616064612ee0601654856135e890919063ffffffff16565b6000610e616064612ee0601854856135e890919063ffffffff16565b6000613b84612c8c565b90506000613b9283836135e8565b30600090815260016020526040902054909150613baf9082612cbb565b3060009081526001602090815260408083209390935560069052205460ff16156132735730600090815260026020526040902054613bed9084612cbb565b30600090815260026020526040902055505050565b6000613c0c612c8c565b90506000613c1a84836135e8565b90506000613c2884846135e8565b30600090815260016020526040902054909150613c4b908390612eb29084612cbb565b3060009081526001602090815260408083209390935560069052205460ff1615612ac357613c79848661426f565b30600090815260026020526040902054613c93919061426f565b306000908152600260205260409020555050505050565b601254613cb79083612d23565b601255601354613cc79082612cbb565b6013555050565b6000610e616064612ee0601454856135e890919063ffffffff16565b6000610e616064612ee0601554856135e890919063ffffffff16565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110613d3b57613d3b6141fd565b6001600160a01b03928316602091820292909201810191909152601d54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015613d94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613db891906142fd565b81600181518110613dcb57613dcb6141fd565b6001600160a01b039283166020918202929092010152601d54613df191309116846127c7565b601d5460405163791ac94760e01b81526001600160a01b039091169063791ac94790613e2a90859060009086903090429060040161431a565b600060405180830381600087803b158015613e4457600080fd5b505af1158015613e58573d6000803e3d6000fd5b505050505050565b601d54613e789030906001600160a01b0316846127c7565b601d54601a5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015613ee8573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612ac3919061438b565b6001600160a01b03811681146125b657600080fd5b600080600060608486031215613f3757600080fd5b8335613f4281613f0d565b92506020840135613f5281613f0d565b929592945050506040919091013590565b600060208083528351808285015260005b81811015613f9057858101830151858201604001528201613f74565b81811115613fa2576000604083870101525b50601f01601f1916929092016040019392505050565b60008060408385031215613fcb57600080fd5b8235613fd681613f0d565b946020939093013593505050565b600060208284031215613ff657600080fd5b813561122a81613f0d565b60006020828403121561401357600080fd5b5035919050565b80151581146125b657600080fd5b6000806040838503121561403b57600080fd5b82359150602083013561404d8161401a565b809150509250929050565b600080600080600060a0868803121561407057600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b600080604083850312156140a657600080fd5b82356140b181613f0d565b9150602083013561404d8161401a565b6000602082840312156140d357600080fd5b813561122a8161401a565b600080604083850312156140f157600080fd5b82356140fc81613f0d565b9150602083013561404d81613f0d565b60006020828403121561411e57600080fd5b5051919050565b602080825260129082015271496e63756666696369656e742066756e647360701b604082015260600190565b60006020828403121561416357600080fd5b815161122a8161401a565b6020808252600c908201526b5a65726f204164647265737360a01b604082015260600190565b6020808252600c908201526b53616d65204164647265737360a01b604082015260600190565b60208082526023908201527f4f6e6c79206272696467652063616e20706572666f726d20746869732061637460408201526234b7b760e91b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008282101561423b5761423b614213565b500390565b634e487b7160e01b600052603160045260246000fd5b60006001820161426857614268614213565b5060010190565b6000821982111561428257614282614213565b500190565b815481526001820154602082015260028201546040820152600382015460608201526004820154608082015260a08101610e61565b6000826142d957634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156142f8576142f8614213565b500290565b60006020828403121561430f57600080fd5b815161122a81613f0d565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561436a5784516001600160a01b031683529383019391830191600101614345565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156143a057600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212208b76c3abc8074058bd6eb1af9b97726ea5880cc2726e3f0ccfef8a5a2659b82164736f6c634300080f00330000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000ebaecbc9f43eee833feddea0a7f9b8df0d99af19000000000000000000000000ebaecbc9f43eee833feddea0a7f9b8df0d99af19000000000000000000000000343def46f3424d10df63668fe548e38ae4924644
Deployed Bytecode
0x6080604052600436106103905760003560e01c80635d098b38116101dc578063ac03e9f011610102578063d12a7688116100a0578063e78cea921161006f578063e78cea9214610b97578063ebcb0b7a14610bb7578063f2fde38b14610bd7578063f3fef3a314610bf7576103d0565b8063d12a768814610afb578063d469801614610b11578063dd62ed3e14610b31578063e37ba8f914610b77576103d0565b8063b92ebd5f116100dc578063b92ebd5f14610a85578063c0b0fda214610aa5578063c1cf53c414610abb578063c49b9a8014610adb576103d0565b8063ac03e9f014610a15578063af9549e014610a35578063b62496f514610a55576103d0565b80638da5cb5b1161017a5780639a7a23d6116101495780639a7a23d61461099f5780639eb942e5146109bf578063a457c2d7146109d5578063a9059cbb146109f5576103d0565b80638da5cb5b1461091d5780638dd148021461093b5780639358928b1461095b57806395d89b4114610970576103d0565b8063715018a6116101b6578063715018a61461088f57806375f0a874146108a45780637eee288d146108c457806388f82020146108e4576103d0565b80635d098b38146108395780636bc87c3a1461085957806370a082311461086f576103d0565b8063313ce567116102c15780634549b0391161025f5780634a74bb021161022e5780634a74bb021461079f57806352390c02146107c05780635342acb4146107e05780635992704414610819576103d0565b80634549b0391461071857806347062402146107385780634782f7791461075f57806347a28b791461077f576103d0565b80633b124fe71161029b5780633b124fe7146106a25780633bd5d173146106b857806341cb87fc146106d857806343e716fe146106f8576103d0565b8063313ce567146106465780633685d419146106625780633950935114610682576103d0565b80631694505e1161032e57806323b872dd1161030857806323b872dd14610597578063282d3fdf146105b75780632b14ca56146105d75780632d83811914610626576103d0565b80631694505e1461054657806318160ddd1461056657806322976e0d14610581576103d0565b806306fdde031161036a57806306fdde03146104a9578063095ea7b3146104e757806313114a9d146105075780631525ff7d14610526576103d0565b806301e33667146104055780630622874914610427578063064a59d014610478576103d0565b366103d057604080513381523460208201527f98c44cd71a4f8250380570aaf8bf1f0fd2a19bc3428a18a782e9e4d6c1928b1391015b60405180910390a1005b604080513381523460208201527fc04e16d4878a87a7d627a5fb8c387ac4a2169e45f86d1935cc739c196c8a571591016103c6565b34801561041157600080fd5b50610425610420366004613f22565b610c17565b005b34801561043357600080fd5b5061045b7f000000000000000000000000000000000000000000000000000000000000dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561048457600080fd5b50601e5461049990600160b81b900460ff1681565b604051901515815260200161046f565b3480156104b557600080fd5b5060408051808201909152600c81526b22b6b834b932902a37b5b2b760a11b60208201525b60405161046f9190613f63565b3480156104f357600080fd5b50610499610502366004613fb8565b610e50565b34801561051357600080fd5b506013545b60405190815260200161046f565b34801561053257600080fd5b50610425610541366004613fe4565b610e67565b34801561055257600080fd5b50601d5461045b906001600160a01b031681565b34801561057257600080fd5b50670de0b6b3a7640000610518565b34801561058d57600080fd5b5061051860175481565b3480156105a357600080fd5b506104996105b2366004613f22565b610f1a565b3480156105c357600080fd5b506104256105d2366004613fb8565b610f98565b3480156105e357600080fd5b50600d54600e54600f546010546011546105fe949392919085565b604080519586526020860194909452928401919091526060830152608082015260a00161046f565b34801561063257600080fd5b50610518610641366004614001565b6111ad565b34801561065257600080fd5b506040516009815260200161046f565b34801561066e57600080fd5b5061042561067d366004613fe4565b611231565b34801561068e57600080fd5b5061049961069d366004613fb8565b611462565b3480156106ae57600080fd5b5061051860145481565b3480156106c457600080fd5b506104256106d3366004614001565b611498565b3480156106e457600080fd5b506104256106f3366004613fe4565b6115b7565b34801561070457600080fd5b50610425610713366004614001565b611663565b34801561072457600080fd5b50610518610733366004614028565b6116e1565b34801561074457600080fd5b50600854600954600a54600b54600c546105fe949392919085565b34801561076b57600080fd5b5061042561077a366004613fb8565b611774565b34801561078b57600080fd5b5061042561079a366004614058565b611835565b3480156107ab57600080fd5b50601e5461049990600160b01b900460ff1681565b3480156107cc57600080fd5b506104256107db366004613fe4565b611983565b3480156107ec57600080fd5b506104996107fb366004613fe4565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561082557600080fd5b50601b5461045b906001600160a01b031681565b34801561084557600080fd5b50610425610854366004613fe4565b611ada565b34801561086557600080fd5b5061051860155481565b34801561087b57600080fd5b5061051861088a366004613fe4565b611b86565b34801561089b57600080fd5b50610425611be5565b3480156108b057600080fd5b5060195461045b906001600160a01b031681565b3480156108d057600080fd5b506104256108df366004613fb8565b611bf9565b3480156108f057600080fd5b506104996108ff366004613fe4565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561092957600080fd5b506000546001600160a01b031661045b565b34801561094757600080fd5b50610425610956366004613fe4565b611d8a565b34801561096757600080fd5b50610518611e54565b34801561097c57600080fd5b50604080518082019091526006815265454d5049524560d01b60208201526104da565b3480156109ab57600080fd5b506104256109ba366004614093565b611ebe565b3480156109cb57600080fd5b5061051860185481565b3480156109e157600080fd5b506104996109f0366004613fb8565b611f8b565b348015610a0157600080fd5b50610499610a10366004613fb8565b611fda565b348015610a2157600080fd5b50601c5461045b906001600160a01b031681565b348015610a4157600080fd5b50610425610a50366004614093565b612038565b348015610a6157600080fd5b50610499610a70366004613fe4565b60046020526000908152604090205460ff1681565b348015610a9157600080fd5b50610425610aa03660046140c1565b612126565b348015610ab157600080fd5b5061051860165481565b348015610ac757600080fd5b50610425610ad6366004614058565b6121e1565b348015610ae757600080fd5b50610425610af63660046140c1565b6122a5565b348015610b0757600080fd5b50610518601f5481565b348015610b1d57600080fd5b50601a5461045b906001600160a01b031681565b348015610b3d57600080fd5b50610518610b4c3660046140de565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610b8357600080fd5b50610425610b92366004613fe4565b61234d565b348015610ba357600080fd5b50601e5461045b906001600160a01b031681565b348015610bc357600080fd5b50610425610bd2366004613fe4565b61243e565b348015610be357600080fd5b50610425610bf2366004613fe4565b612540565b348015610c0357600080fd5b50610425610c12366004613fb8565b6125b9565b610c1f61276d565b6001600160a01b038316610c725760405162461bcd60e51b81526020600482015260156024820152742d32b9379020b2323932b9b99037b3102a37b5b2b760591b60448201526064015b60405180910390fd5b6001600160a01b038216610cc85760405162461bcd60e51b815260206004820152601960248201527f5a65726f2041646472657373206f6620526563657069656e74000000000000006044820152606401610c69565b6040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610d0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d30919061410c565b811115610d4f5760405162461bcd60e51b8152600401610c6990614125565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af1158015610d9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc29190614151565b610dfe5760405162461bcd60e51b815260206004820152600d60248201526c151c985b9cd9995c8811985a5b609a1b6044820152606401610c69565b816001600160a01b0316836001600160a01b03167f46ae78bc7b198b8b534ca0070d125569ac5f955976841c4343223079f3abf0de83604051610e4391815260200190565b60405180910390a3505050565b6000610e5d3384846127c7565b5060015b92915050565b610e6f61276d565b6001600160a01b038116610e955760405162461bcd60e51b8152600401610c699061416e565b601b546001600160a01b0390811690821603610ec35760405162461bcd60e51b8152600401610c6990614194565b601b80546001600160a01b0319166001600160a01b03831690811790915560405190815233907f6b23cabdb8b55d4883cb406993a5f14492a2c4c86e5ce8debed487c4dc5a45e6906020015b60405180910390a250565b6000610f278484846128e3565b610f8e84336001600160a01b0387166000908152600360205260408120610f8991336001600160a01b03166001600160a01b0316815260200190815260200160002054866040518060600160405280602881526020016143ba60289139612aca565b6127c7565b5060019392505050565b601e546001600160a01b03163314610fc25760405162461bcd60e51b8152600401610c69906141ba565b6001600160a01b0382166110075760405162461bcd60e51b815260206004820152600c60248201526b5a65726f206164647265737360a01b6044820152606401610c69565b600081116110655760405162461bcd60e51b815260206004820152602560248201527f4c6f636b20616d6f756e74206d7573742062652067726561746572207468616e604482015264207a65726f60d81b6064820152608401610c69565b61106e82611b86565b81111561108d5760405162461bcd60e51b8152600401610c6990614125565b6001600160a01b03821660009081526003602090815260408083203384529091529020548111156111115760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610c69565b6001600160a01b03821660009081526006602052604090205460ff1661114e57601c546111499083906001600160a01b031683612b04565b611166565b601c546111669083906001600160a01b031683612c19565b816001600160a01b03167fd67292b41a781140f5a0da0649c6028bd549f6e3335f570c31cdd202db9fc0cf826040516111a191815260200190565b60405180910390a25050565b60006012548211156112145760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610c69565b600061121e612c8c565b905061122a8382612caf565b9392505050565b61123961276d565b601c546001600160a01b03908116908216036112a15760405162461bcd60e51b815260206004820152602160248201527f427269646765205661756c742063616e277420726563656976652072657761726044820152601960fa1b6064820152608401610c69565b6001600160a01b03811660009081526006602052604090205460ff166113095760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c726561647920696e636c7564656400000000006044820152606401610c69565b60005b60075481101561142a57816001600160a01b031660078281548110611333576113336141fd565b6000918252602090912001546001600160a01b031603611418576007805461135d90600190614229565b8154811061136d5761136d6141fd565b600091825260209091200154600780546001600160a01b039092169183908110611399576113996141fd565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600690925220805460ff1916905560078054806113f1576113f1614240565b600082815260209020810160001990810180546001600160a01b031916905501905561142a565b8061142281614256565b91505061130c565b506040516001600160a01b038216907f5f05034ac7f3d648bc123a1fa9e17b8b56758b33c45ad85f418b7125cf0b9ce590600090a250565b3360008181526003602090815260408083206001600160a01b03871684529091528120549091610e5d918590610f899086612cbb565b3360008181526006602052604090205460ff161561150d5760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608401610c69565b600061151883612cc7565b505050506001600160a01b03841660009081526001602052604090205491925061154491905082612d23565b6001600160a01b03831660009081526001602052604090205560125461156a9082612d23565b60125560135461157a9084612cbb565b60135560405183815233907f9745995e0db679b62281d9ca9200fed9b3cc7ee9ff131b05a3fb642b5d43dcc49060200160405180910390a2505050565b6115bf61276d565b6001600160a01b0381166115e55760405162461bcd60e51b8152600401610c699061416e565b601d546001600160a01b03908116908216036116135760405162461bcd60e51b8152600401610c6990614194565b601d80546001600160a01b0319166001600160a01b03831690811790915560405190815233907fac059041d07fde13bf50242296de370c33ddecff1f8ecb4d5ae0836f1ebe365d90602001610f0f565b61166b61276d565b601f5481036116aa5760405162461bcd60e51b815260206004820152600b60248201526a14d85b5948105b5bdd5b9d60aa1b6044820152606401610c69565b601f81905560405181815233907f9dcafbd759717e12afc2978cb500b553016b707cc2c3497e2d05f528ee77796190602001610f0f565b6000670de0b6b3a764000083111561173b5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610c69565b8161175a57600061174b84612cc7565b50939550610e61945050505050565b600061176584612cc7565b50929550610e61945050505050565b61177c61276d565b6001600160a01b0382166117a25760405162461bcd60e51b8152600401610c699061416e565b30318111156117c35760405162461bcd60e51b8152600401610c6990614125565b6040516001600160a01b0383169082156108fc029083906000818181858888f193505050501580156117f9573d6000803e3d6000fd5b50816001600160a01b03167f4d8420592b5127331542602906f9907d197ec28af2dfd4daa72324bcfadcc600826040516111a191815260200190565b61183d61276d565b603281838561184c888a61426f565b611856919061426f565b611860919061426f565b61186a919061426f565b11156118af5760405162461bcd60e51b81526020600482015260146024820152734d617820746f74616c206665652069732035302560601b6044820152606401610c69565b600854851480156118c15750600a5484145b80156118ce575060095483145b80156118db5750600b5482145b80156118e85750600c5481145b1561192a5760405162461bcd60e51b8152602060048201526012602482015271139bdd1a1a5b99c81a5cc818da185b99d95960721b6044820152606401610c69565b6008858155600a8590556009849055600b839055600c82905560405133917f5ed6fe211f244075ad220436a1126097caaea93ebdab2a44c01339432c70aa2d916119749190614287565b60405180910390a25050505050565b61198b61276d565b6001600160a01b03811660009081526006602052604090205460ff16156119f45760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610c69565b6001600160a01b03811660009081526001602052604090205415611a4e576001600160a01b038116600090815260016020526040902054611a34906111ad565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b038116600081815260066020526040808220805460ff1916600190811790915560078054918201815583527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b03191684179055517f4940d2d27c97c0426162178d4249cafef4a4e9ce874280d41948dc95ef4d79759190a250565b611ae261276d565b6001600160a01b038116611b085760405162461bcd60e51b8152600401610c699061416e565b6019546001600160a01b0390811690821603611b365760405162461bcd60e51b8152600401610c6990614194565b601980546001600160a01b0319166001600160a01b03831690811790915560405190815233907f1f8c951d17767e852874d7e6bc407c7e0bcf18713d8d8bbf1b562740ca43a47490602001610f0f565b6001600160a01b03811660009081526006602052604081205460ff1615611bc357506001600160a01b031660009081526002602052604090205490565b6001600160a01b038216600090815260016020526040902054610e61906111ad565b611bed61276d565b611bf76000612d2f565b565b601e546001600160a01b03163314611c235760405162461bcd60e51b8152600401610c69906141ba565b6001600160a01b038216611c685760405162461bcd60e51b815260206004820152600c60248201526b5a65726f206164647265737360a01b6044820152606401610c69565b60008111611cc85760405162461bcd60e51b815260206004820152602760248201527f556e6c6f636b20616d6f756e74206d7573742062652067726561746572207468604482015266616e207a65726f60c81b6064820152608401610c69565b601c54611cdd906001600160a01b0316611b86565b811115611cfc5760405162461bcd60e51b8152600401610c6990614125565b6001600160a01b03821660009081526006602052604090205460ff16611d3857601c54611d33906001600160a01b03168383612d7f565b611d4f565b601c54611d4f906001600160a01b03168383612c19565b816001600160a01b03167f6910e0daf9e4cb68a38b4c1a459b879944b8eb161a86c8f354d96e5a54faf0c0826040516111a191815260200190565b611d9261276d565b6001600160a01b038116611db85760405162461bcd60e51b8152600401610c699061416e565b601e546001600160a01b03808316911603611e045760405162461bcd60e51b815260206004820152600c60248201526b53616d65204272696467652160a01b6044820152606401610c69565b601e80546001600160a01b0319166001600160a01b03831690811790915560405190815233907fd94e52c58cb5870958c05be7a6183038f705e88c54604590d15d3986cf12a2c990602001610f0f565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000dead811660009081526002602052604080822054601c5490931682528120549091611eb991611eb390670de0b6b3a764000090612d23565b90612d23565b905090565b611ec661276d565b6001600160a01b03821660009081526004602052604090205481151560ff909116151503611f2d5760405162461bcd60e51b815260206004820152601460248201527314185a5c88105b1c9958591e48115b98589b195960621b6044820152606401610c69565b6001600160a01b038216600081815260046020908152604091829020805460ff191685151590811790915582519384529083015233917fac0b2958c680afbcacee16a4305170e8004cf74c8270ac3edd2abc61b919e8ea91016111a1565b3360008181526003602090815260408083206001600160a01b038716845282528083205481516060810190925260258083529394610e5d9490938893610f899392899261440290830139612aca565b6000611fe73384846128e3565b604080513381526001600160a01b038516602082015280820184905290517f0a85107a334eae0d22d21cdf13af0f8e8125039ec60baaa843d2c4c5b06801749181900360600190a150600192915050565b61204061276d565b6001600160a01b0382166120665760405162461bcd60e51b8152600401610c699061416e565b6001600160a01b03821660009081526005602052604090205481151560ff9091161515036120c85760405162461bcd60e51b815260206004820152600f60248201526e105b1c9958591e48195b98589b1959608a1b6044820152606401610c69565b6001600160a01b038216600081815260056020908152604091829020805460ff191685151590811790915582519384529083015233917f76f22305305903e16255cd5e7860e85c184833a5d910944a72f17fec284b8e1f91016111a1565b61212e61276d565b801515601e60179054906101000a900460ff161515036121855760405162461bcd60e51b8152602060048201526012602482015271416c72656164792073657420456e61626c6560701b6044820152606401610c69565b601e805460ff60b81b1916600160b81b8315158102919091179182905560405160ff9190920416151581527f31bb29a860273cd60e45bfd8d53a143941df649ed22e5681a416fab2500c8b12906020015b60405180910390a150565b6121e961276d565b60328183856121f8888a61426f565b612202919061426f565b61220c919061426f565b612216919061426f565b111561225b5760405162461bcd60e51b81526020600482015260146024820152734d617820746f74616c206665652069732035302560601b6044820152606401610c69565b600d858155600f859055600e8490556010839055601182905560405133917feeafcf7f0f07b512f79535e74a0088e915295e3ba562933b8a5d5dcf4b0b5354916119749190614287565b6122ad61276d565b601e54600160b01b900460ff161515811515036122fe5760405162461bcd60e51b815260206004820152600f60248201526e105b1c9958591e48195b98589b1959608a1b6044820152606401610c69565b601e8054821515600160b01b0260ff60b01b1990911617905560405133907fb318bd8ba266a5ee667ec4d0326bb4b0be9a30e8aadeaa85fef0cdeac50d723690610f0f90841515815260200190565b61235561276d565b6001600160a01b03811661237b5760405162461bcd60e51b8152600401610c699061416e565b601a546001600160a01b03908116908216036123ee5760405162461bcd60e51b815260206004820152602c60248201527f546865206c69717569646974792077616c6c657420697320616c72656164792060448201526b74686973206164647265737360a01b6064820152608401610c69565b601a80546001600160a01b0319166001600160a01b03831690811790915560405190815233907f99cf746968302d2ab01f9f9b0f5410586a666bb17b3fe690b309f5d6e16f6cd390602001610f0f565b61244661276d565b6001600160a01b03811661248e5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606401610c69565b601c546001600160a01b038083169116036124eb5760405162461bcd60e51b815260206004820152601960248201527f416c72656164792073657420746f20746869732076616c7565000000000000006044820152606401610c69565b601c80546001600160a01b0319166001600160a01b0383169081179091556040805133815260208101929092527fb97f7a2535e0e53d65a1db2e5691bf70f020b2a06dcc9419e93976fa79e2b4ec91016121d6565b61254861276d565b6001600160a01b0381166125ad5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c69565b6125b681612d2f565b50565b6125c161276d565b6001600160a01b0382166125e75760405162461bcd60e51b8152600401610c699061416e565b6000811161264b5760405162461bcd60e51b815260206004820152602b60248201527f5769746864726177616c20616d6f756e74206d7573742062652067726561746560448201526a72207468616e207a65726f60a81b6064820152608401610c69565b3060009081526006602052604090205460ff16801561268357506001600160a01b03821660009081526006602052604090205460ff16155b1561269857612693308383612d7f565b612732565b3060009081526006602052604090205460ff161580156126d057506001600160a01b03821660009081526006602052604090205460ff165b156126e057612693308383612b04565b3060009081526006602052604090205460ff16801561271757506001600160a01b03821660009081526006602052604090205460ff165b1561272757612693308383612c19565b612732308383612e21565b816001600160a01b03167fb4214c8c54fc7442f36d3682f59aebaf09358a4431835b30efb29d52cf9e1e91826040516111a191815260200190565b6000546001600160a01b03163314611bf75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610c69565b6001600160a01b0383166128295760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610c69565b6001600160a01b03821661288a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610c69565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259101610e43565b6001600160a01b0383166129475760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610c69565b6001600160a01b0382166129a95760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610c69565b60008111612a0b5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610c69565b6000612a1630611b86565b601f5490915081108015908190612a375750601e54600160a01b900460ff16155b8015612a5c57506001600160a01b03851660009081526004602052604090205460ff16155b8015612a715750601e54600160b01b900460ff165b8015612a8b5750601a546001600160a01b03868116911614155b8015612aa55750601a546001600160a01b03858116911614155b15612ab857601f549150612ab882612e65565b612ac3858585612fdf565b5050505050565b60008184841115612aee5760405162461bcd60e51b8152600401610c699190613f63565b506000612afb8585612d23565b95945050505050565b600080600080600080612b1687612cc7565b6001600160a01b038f16600090815260016020526040902054959b50939950919750955093509150612b489087612d23565b6001600160a01b03808b16600090815260016020908152604080832094909455918b16815260029091522054612b7e9084612cbb565b6001600160a01b038916600090815260026020908152604080832093909355600190522054612bad9086612cbb565b6001600160a01b038916600090815260016020526040902055612bd38988838588613278565b876001600160a01b0316896001600160a01b03166000805160206143e283398151915285604051612c0691815260200190565b60405180910390a3505050505050505050565b600080600080600080612c2b87612cc7565b6001600160a01b038f16600090815260026020526040902054959b50939950919750955093509150612c5d9088612d23565b6001600160a01b038a16600090815260026020908152604080832093909355600190522054612b489087612d23565b6000806000612c99613330565b9092509050612ca88282612caf565b9250505090565b600061122a82846142bc565b600061122a828461426f565b6000806000806000806000806000806000612ce18c6134c8565b945094509450945094506000806000612d058f88888888612d00612c8c565b613546565b919f509d509b50969950949750929550505050505091939550919395565b600061122a8284614229565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080600080600080612d9187612cc7565b6001600160a01b038f16600090815260026020526040902054959b50939950919750955093509150612dc39088612d23565b6001600160a01b038a16600090815260026020908152604080832093909355600190522054612df29087612d23565b6001600160a01b03808b1660009081526001602052604080822093909355908a1681522054612bad9086612cbb565b600080600080600080612e3387612cc7565b6001600160a01b038f16600090815260016020526040902054959b50939950919750955093509150612df29087612d23565b601e805460ff60a01b1916600160a01b179055601154600c54600e54600954600d54600854600f54600a54600097612eb8979096612eb29691958795919486948593849290918391612cbb565b90612cbb565b600d54600854919250600091612ece919061426f565b90506000612ee683612ee086856135e8565b90612caf565b9050612ef1816135f4565b600e54600954600091612f039161426f565b90506000612f1585612ee088856135e8565b9050612f208161367b565b600f54600a54600091612f329161426f565b90506000612f4487612ee08a856135e8565b9050612f4f81613880565b601154600c54600091612f619161426f565b90506000612f7389612ee08c856135e8565b9050612f7e816139d3565b6040805184815260208101899052908101869052606081018290527fab43d64ef8bfe74393a308a718f49af9d2f845de3bdc8f5e3cb528b4ffec85f79060800160405180910390a15050601e805460ff60a01b191690555050505050505050565b6001600160a01b03831660009081526005602052604090205460ff1615801561302157506001600160a01b03821660009081526005602052604090205460ff16155b1561313057601e54600160b81b900460ff166130755760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81a5cc8191a5cd8589b1959606a1b6044820152606401610c69565b6001600160a01b03831660009081526004602052604090205460ff1615156001036130d557601e805460ff60a81b1916600160a81b1790556130d0600b54601455600854601555600a54601755600954601655600c54601855565b613130565b6001600160a01b03821660009081526004602052604090205460ff16151560010361313057601e805460ff60a81b1916600160a81b179055613130601054601455600d54601555600f54601755600e54601655601154601855565b6001600160a01b03831660009081526006602052604090205460ff16801561317157506001600160a01b03821660009081526006602052604090205460ff16155b1561318657613181838383612d7f565b613232565b6001600160a01b03831660009081526006602052604090205460ff161580156131c757506001600160a01b03821660009081526006602052604090205460ff165b156131d757613181838383612b04565b6001600160a01b03831660009081526006602052604090205460ff16801561321757506001600160a01b03821660009081526006602052604090205460ff165b1561322757613181838383612c19565b613232838383612e21565b601e54600160a81b900460ff16151560010361327357601e805460ff60a81b1916905561327360006014819055601581905560178190556016819055601855565b505050565b601e54600160a81b900460ff161515600103612ac357600061329985613b26565b905060006132a686613b42565b905060006132b387613b5e565b90506132be86613b7a565b6132c88383613c02565b6132d181613b7a565b6132db8486613caa565b306001600160a01b0389166000805160206143e28339815191528385613301888c61426f565b61330b919061426f565b613315919061426f565b60405190815260200160405180910390a35050505050505050565b6012546000908190670de0b6b3a7640000825b60075481101561348d57826001600060078481548110613365576133656141fd565b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806133d057508160026000600784815481106133a9576133a96141fd565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156133eb57505060125493670de0b6b3a76400009350915050565b6134316001600060078481548110613405576134056141fd565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490612d23565b9250613479600260006007848154811061344d5761344d6141fd565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390612d23565b91508061348581614256565b915050613343565b506012546134a390670de0b6b3a7640000612caf565b8210156134bf57505060125492670de0b6b3a764000092509050565b90939092509050565b6000806000806000806134da87613cce565b905060006134e788613cea565b905060006134f489613b26565b905060006135018a613b42565b9050600061350e8b613b5e565b9050600061352085611eb38e89612d23565b905061353282611eb385818589612d23565b9c959b509399509197509550919350505050565b60008080806135558a866135e8565b905060006135638a876135e8565b905060006135718a886135e8565b9050600061357f8a896135e8565b9050600061358d8a8a6135e8565b9050600061359a8f613b5e565b905060006135a8828c6135e8565b905060006135be82612eb2868189818d8d612cbb565b905060006135cc8983612d23565b989b509799509597505050505050505096509650969350505050565b600061122a82846142de565b6000613601826002612caf565b9050600061360f8383612d23565b90504761361b83613d06565b60006136274783612d23565b90506136338382613e60565b60408051858152602081018390529081018490527f9d1cc8269ebbe9c8a971dd4c72fe5f591a00d412092c504fabeacee79732ac119060600160405180910390a15050505050565b6000613685612c8c565b9050600061369383836135e8565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000dead166000908152600160205260409020549091506136d99082612cbb565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000dead166000908152600160205260408082209290925530815220546137259082612d23565b306000908152600160209081526040808320939093557f000000000000000000000000000000000000000000000000000000000000dead6001600160a01b0316825260069052205460ff16156137f2576001600160a01b037f000000000000000000000000000000000000000000000000000000000000dead166000908152600260205260409020546137b89084612cbb565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000dead166000908152600260205260409020555b3060009081526006602052604090205460ff161561383557306000908152600260205260409020546138249084612d23565b306000908152600260205260409020555b6040518381526001600160a01b037f000000000000000000000000000000000000000000000000000000000000dead169030906000805160206143e283398151915290602001610e43565b600061388a612c8c565b9050600061389883836135e8565b6019546001600160a01b03166000908152600160205260409020549091506138c09082612cbb565b6019546001600160a01b03166000908152600160205260408082209290925530815220546138ee9082612d23565b306000908152600160209081526040808320939093556019546001600160a01b0316825260069052205460ff1615613961576019546001600160a01b03166000908152600260205260409020546139459084612cbb565b6019546001600160a01b03166000908152600260205260409020555b3060009081526006602052604090205460ff16156139a457306000908152600260205260409020546139939084612d23565b306000908152600260205260409020555b6019546040518481526001600160a01b039091169030906000805160206143e283398151915290602001610e43565b60006139dd612c8c565b905060006139eb83836135e8565b601b546001600160a01b0316600090815260016020526040902054909150613a139082612cbb565b601b546001600160a01b0316600090815260016020526040808220929092553081522054613a419082612d23565b30600090815260016020908152604080832093909355601b546001600160a01b0316825260069052205460ff1615613ab457601b546001600160a01b0316600090815260026020526040902054613a989084612cbb565b601b546001600160a01b03166000908152600260205260409020555b3060009081526006602052604090205460ff1615613af75730600090815260026020526040902054613ae69084612d23565b306000908152600260205260409020555b601b546040518481526001600160a01b039091169030906000805160206143e283398151915290602001610e43565b6000610e616064612ee0601754856135e890919063ffffffff16565b6000610e616064612ee0601654856135e890919063ffffffff16565b6000610e616064612ee0601854856135e890919063ffffffff16565b6000613b84612c8c565b90506000613b9283836135e8565b30600090815260016020526040902054909150613baf9082612cbb565b3060009081526001602090815260408083209390935560069052205460ff16156132735730600090815260026020526040902054613bed9084612cbb565b30600090815260026020526040902055505050565b6000613c0c612c8c565b90506000613c1a84836135e8565b90506000613c2884846135e8565b30600090815260016020526040902054909150613c4b908390612eb29084612cbb565b3060009081526001602090815260408083209390935560069052205460ff1615612ac357613c79848661426f565b30600090815260026020526040902054613c93919061426f565b306000908152600260205260409020555050505050565b601254613cb79083612d23565b601255601354613cc79082612cbb565b6013555050565b6000610e616064612ee0601454856135e890919063ffffffff16565b6000610e616064612ee0601554856135e890919063ffffffff16565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110613d3b57613d3b6141fd565b6001600160a01b03928316602091820292909201810191909152601d54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015613d94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613db891906142fd565b81600181518110613dcb57613dcb6141fd565b6001600160a01b039283166020918202929092010152601d54613df191309116846127c7565b601d5460405163791ac94760e01b81526001600160a01b039091169063791ac94790613e2a90859060009086903090429060040161431a565b600060405180830381600087803b158015613e4457600080fd5b505af1158015613e58573d6000803e3d6000fd5b505050505050565b601d54613e789030906001600160a01b0316846127c7565b601d54601a5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015613ee8573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612ac3919061438b565b6001600160a01b03811681146125b657600080fd5b600080600060608486031215613f3757600080fd5b8335613f4281613f0d565b92506020840135613f5281613f0d565b929592945050506040919091013590565b600060208083528351808285015260005b81811015613f9057858101830151858201604001528201613f74565b81811115613fa2576000604083870101525b50601f01601f1916929092016040019392505050565b60008060408385031215613fcb57600080fd5b8235613fd681613f0d565b946020939093013593505050565b600060208284031215613ff657600080fd5b813561122a81613f0d565b60006020828403121561401357600080fd5b5035919050565b80151581146125b657600080fd5b6000806040838503121561403b57600080fd5b82359150602083013561404d8161401a565b809150509250929050565b600080600080600060a0868803121561407057600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b600080604083850312156140a657600080fd5b82356140b181613f0d565b9150602083013561404d8161401a565b6000602082840312156140d357600080fd5b813561122a8161401a565b600080604083850312156140f157600080fd5b82356140fc81613f0d565b9150602083013561404d81613f0d565b60006020828403121561411e57600080fd5b5051919050565b602080825260129082015271496e63756666696369656e742066756e647360701b604082015260600190565b60006020828403121561416357600080fd5b815161122a8161401a565b6020808252600c908201526b5a65726f204164647265737360a01b604082015260600190565b6020808252600c908201526b53616d65204164647265737360a01b604082015260600190565b60208082526023908201527f4f6e6c79206272696467652063616e20706572666f726d20746869732061637460408201526234b7b760e91b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008282101561423b5761423b614213565b500390565b634e487b7160e01b600052603160045260246000fd5b60006001820161426857614268614213565b5060010190565b6000821982111561428257614282614213565b500190565b815481526001820154602082015260028201546040820152600382015460608201526004820154608082015260a08101610e61565b6000826142d957634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156142f8576142f8614213565b500290565b60006020828403121561430f57600080fd5b815161122a81613f0d565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561436a5784516001600160a01b031683529383019391830191600101614345565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156143a057600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212208b76c3abc8074058bd6eb1af9b97726ea5880cc2726e3f0ccfef8a5a2659b82164736f6c634300080f0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000ebaecbc9f43eee833feddea0a7f9b8df0d99af19000000000000000000000000ebaecbc9f43eee833feddea0a7f9b8df0d99af19000000000000000000000000343def46f3424d10df63668fe548e38ae4924644
-----Decoded View---------------
Arg [0] : _router (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
Arg [1] : _marketingWallet (address): 0xebaEcbc9f43eEe833fedDEa0A7f9B8Df0D99AF19
Arg [2] : _teamWallet (address): 0xebaEcbc9f43eEe833fedDEa0A7f9B8Df0D99AF19
Arg [3] : _bridgeVault (address): 0x343dEf46f3424D10Df63668Fe548e38aE4924644
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Arg [1] : 000000000000000000000000ebaecbc9f43eee833feddea0a7f9b8df0d99af19
Arg [2] : 000000000000000000000000ebaecbc9f43eee833feddea0a7f9b8df0d99af19
Arg [3] : 000000000000000000000000343def46f3424d10df63668fe548e38ae4924644
Deployed Bytecode Sourcemap
14547:36482:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26655:33;;;26666:10;188:51:1;;26678:9:0;270:2:1;255:18;;248:34;26655:33:0;;161:18:1;26655:33:0;;;;;;;;14547:36482;;26748:34;;;26760:10;188:51:1;;26772:9:0;270:2:1;255:18;;248:34;26748::0;;161:18:1;26748:34:0;14:274:1;47885:499:0;;;;;;;;;;-1:-1:-1;47885:499:0;;;;;:::i;:::-;;:::i;:::-;;15938:35;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1092:32:1;;;1074:51;;1062:2;1047:18;15938:35:0;;;;;;;;16346:28;;;;;;;;;;-1:-1:-1;16346:28:0;;;;-1:-1:-1;;;16346:28:0;;;;;;;;;1301:14:1;;1294:22;1276:41;;1264:2;1249:18;16346:28:0;1136:187:1;20766:85:0;;;;;;;;;;-1:-1:-1;20838:5:0;;;;;;;;;;;;-1:-1:-1;;;20838:5:0;;;;20766:85;;;;;;;:::i;22525:195::-;;;;;;;;;;-1:-1:-1;22525:195:0;;;;;:::i;:::-;;:::i;24120:89::-;;;;;;;;;;-1:-1:-1;24191:10:0;;24120:89;;;2404:25:1;;;2392:2;2377:18;24120:89:0;2258:177:1;44677:276:0;;;;;;;;;;-1:-1:-1;44677:276:0;;;;;:::i;:::-;;:::i;16142:41::-;;;;;;;;;;-1:-1:-1;16142:41:0;;;;-1:-1:-1;;;;;16142:41:0;;;21049:97;;;;;;;;;;-1:-1:-1;15462:13:0;21049:97;;15826:32;;;;;;;;;;;;;;;;22728:475;;;;;;;;;;-1:-1:-1;22728:475:0;;;;;:::i;:::-;;:::i;49736:639::-;;;;;;;;;;-1:-1:-1;49736:639:0;;;;;:::i;:::-;;:::i;15347:22::-;;;;;;;;;;-1:-1:-1;15347:22:0;;;;;;;;;;;;;;;;;;;;;;3670:25:1;;;3726:2;3711:18;;3704:34;;;;3754:18;;;3747:34;;;;3812:2;3797:18;;3790:34;3855:3;3840:19;;3833:35;3657:3;3642:19;15347:22:0;3411:463:1;25227:322:0;;;;;;;;;;-1:-1:-1;25227:322:0;;;;;:::i;:::-;;:::i;20956:85::-;;;;;;;;;;-1:-1:-1;20956:85:0;;15710:1;4206:36:1;;4194:2;4179:18;20956:85:0;4064:184:1;25946:601:0;;;;;;;;;;-1:-1:-1;25946:601:0;;;;;:::i;:::-;;:::i;23211:302::-;;;;;;;;;;-1:-1:-1;23211:302:0;;;;;:::i;:::-;;:::i;15720:26::-;;;;;;;;;;;;;;;;24260:470;;;;;;;;;;-1:-1:-1;24260:470:0;;;;;:::i;:::-;;:::i;46103:322::-;;;;;;;;;;-1:-1:-1;46103:322:0;;;;;:::i;:::-;;:::i;46703:255::-;;;;;;;;;;-1:-1:-1;46703:255:0;;;;;:::i;:::-;;:::i;24738:481::-;;;;;;;;;;-1:-1:-1;24738:481:0;;;;;:::i;:::-;;:::i;15320:20::-;;;;;;;;;;-1:-1:-1;15320:20:0;;;;;;;;;;;;;;;;;;47377:336;;;;;;;;;;-1:-1:-1;47377:336:0;;;;;:::i;:::-;;:::i;44961:644::-;;;;;;;;;;-1:-1:-1;44961:644:0;;;;;:::i;:::-;;:::i;16299:40::-;;;;;;;;;;-1:-1:-1;16299:40:0;;;;-1:-1:-1;;;16299:40:0;;;;;;25557:381;;;;;;;;;;-1:-1:-1;25557:381:0;;;;;:::i;:::-;;:::i;33406:126::-;;;;;;;;;;-1:-1:-1;33406:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;33497:27:0;33473:4;33497:27;;;:18;:27;;;;;;;;;33406:126;16017:25;;;;;;;;;;-1:-1:-1;16017:25:0;;;;-1:-1:-1;;;;;16017:25:0;;;44368:301;;;;;;;;;;-1:-1:-1;44368:301:0;;;;;:::i;:::-;;:::i;15753:32::-;;;;;;;;;;;;;;;;21853:198;;;;;;;;;;-1:-1:-1;21853:198:0;;;;;:::i;:::-;;:::i;9817:103::-;;;;;;;;;;;;;:::i;15901:30::-;;;;;;;;;;-1:-1:-1;15901:30:0;;;;-1:-1:-1;;;;;15901:30:0;;;50484:542;;;;;;;;;;-1:-1:-1;50484:542:0;;;;;:::i;:::-;;:::i;23958:154::-;;;;;;;;;;-1:-1:-1;23958:154:0;;;;;:::i;:::-;-1:-1:-1;;;;;24084:20:0;24055:4;24084:20;;;:11;:20;;;;;;;;;23958:154;9169:87;;;;;;;;;;-1:-1:-1;9215:7:0;9242:6;-1:-1:-1;;;;;9242:6:0;9169:87;;49420:250;;;;;;;;;;-1:-1:-1;49420:250:0;;;;;:::i;:::-;;:::i;21224:145::-;;;;;;;;;;;;;:::i;20859:89::-;;;;;;;;;;-1:-1:-1;20933:7:0;;;;;;;;;;;;-1:-1:-1;;;20933:7:0;;;;20859:89;;20429:329;;;;;;;;;;-1:-1:-1;20429:329:0;;;;;:::i;:::-;;:::i;15865:27::-;;;;;;;;;;;;;;;;23521:429;;;;;;;;;;-1:-1:-1;23521:429:0;;;;;:::i;:::-;;:::i;22059:264::-;;;;;;;;;;-1:-1:-1;22059:264:0;;;;;:::i;:::-;;:::i;16107:26::-;;;;;;;;;;-1:-1:-1;16107:26:0;;;;-1:-1:-1;;;;;16107:26:0;;;44006:354;;;;;;;;;;-1:-1:-1;44006:354:0;;;;;:::i;:::-;;:::i;14804:57::-;;;;;;;;;;-1:-1:-1;14804:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;32855:225;;;;;;;;;;-1:-1:-1;32855:225:0;;;;;:::i;:::-;;:::i;15792:27::-;;;;;;;;;;;;;;;;45613:482;;;;;;;;;;-1:-1:-1;45613:482:0;;;;;:::i;:::-;;:::i;46433:262::-;;;;;;;;;;-1:-1:-1;46433:262:0;;;;;:::i;:::-;;:::i;16383:59::-;;;;;;;;;;;;;;;;15980:30;;;;;;;;;;-1:-1:-1;15980:30:0;;;;-1:-1:-1;;;;;15980:30:0;;;22331:186;;;;;;;;;;-1:-1:-1;22331:186:0;;;;;:::i;:::-;-1:-1:-1;;;;;22482:18:0;;;22450:7;22482:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;22331:186;46966:403;;;;;;;;;;-1:-1:-1;46966:403:0;;;;;:::i;:::-;;:::i;16192:21::-;;;;;;;;;;-1:-1:-1;16192:21:0;;;;-1:-1:-1;;;;;16192:21:0;;;33088:310;;;;;;;;;;-1:-1:-1;33088:310:0;;;;;:::i;:::-;;:::i;10075:201::-;;;;;;;;;;-1:-1:-1;10075:201:0;;;;;:::i;:::-;;:::i;48482:801::-;;;;;;;;;;-1:-1:-1;48482:801:0;;;;;:::i;:::-;;:::i;47885:499::-;9055:13;:11;:13::i;:::-;-1:-1:-1;;;;;48029:28:0;::::1;48021:62;;;::::0;-1:-1:-1;;;48021:62:0;;6737:2:1;48021:62:0::1;::::0;::::1;6719:21:1::0;6776:2;6756:18;;;6749:30;-1:-1:-1;;;6795:18:1;;;6788:51;6856:18;;48021:62:0::1;;;;;;;;;-1:-1:-1::0;;;;;48102:23:0;::::1;48094:61;;;::::0;-1:-1:-1;;;48094:61:0;;7087:2:1;48094:61:0::1;::::0;::::1;7069:21:1::0;7126:2;7106:18;;;7099:30;7165:27;7145:18;;;7138:55;7210:18;;48094:61:0::1;6885:349:1::0;48094:61:0::1;48184:30;::::0;-1:-1:-1;;;48184:30:0;;48208:4:::1;48184:30;::::0;::::1;1074:51:1::0;-1:-1:-1;;;;;48184:15:0;::::1;::::0;::::1;::::0;1047:18:1;;48184:30:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;48174:6;:40;;48166:71;;;;-1:-1:-1::0;;;48166:71:0::1;;;;;;;:::i;:::-;48256:33;::::0;-1:-1:-1;;;48256:33:0;;-1:-1:-1;;;;;206:32:1;;;48256:33:0::1;::::0;::::1;188:51:1::0;255:18;;;248:34;;;48256:14:0;::::1;::::0;::::1;::::0;161:18:1;;48256:33:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;48248:59;;;::::0;-1:-1:-1;;;48248:59:0;;8227:2:1;48248:59:0::1;::::0;::::1;8209:21:1::0;8266:2;8246:18;;;8239:30;-1:-1:-1;;;8285:18:1;;;8278:43;8338:18;;48248:59:0::1;8025:337:1::0;48248:59:0::1;48358:9;-1:-1:-1::0;;;;;48325:51:0::1;48350:5;-1:-1:-1::0;;;;;48325:51:0::1;;48369:6;48325:51;;;;2404:25:1::0;;2392:2;2377:18;;2258:177;48325:51:0::1;;;;;;;;47885:499:::0;;;:::o;22525:195::-;22629:4;22651:39;7800:10;22674:7;22683:6;22651:8;:39::i;:::-;-1:-1:-1;22708:4:0;22525:195;;;;;:::o;44677:276::-;9055:13;:11;:13::i;:::-;-1:-1:-1;;;;;44757:23:0;::::1;44749:48;;;;-1:-1:-1::0;;;44749:48:0::1;;;;;;;:::i;:::-;44829:10;::::0;-1:-1:-1;;;;;44829:10:0;;::::1;44816:23:::0;;::::1;::::0;44808:48:::1;;;;-1:-1:-1::0;;;44808:48:0::1;;;;;;;:::i;:::-;44867:10;:22:::0;;-1:-1:-1;;;;;;44867:22:0::1;-1:-1:-1::0;;;;;44867:22:0;::::1;::::0;;::::1;::::0;;;44905:40:::1;::::0;1074:51:1;;;44922:10:0::1;::::0;44905:40:::1;::::0;1062:2:1;1047:18;44905:40:0::1;;;;;;;;44677:276:::0;:::o;22728:475::-;22862:4;22879:36;22889:6;22897:9;22908:6;22879:9;:36::i;:::-;22926:247;22949:6;7800:10;-1:-1:-1;;;;;23028:19:0;;;;;;:11;:19;;;;;22997:165;;7800:10;-1:-1:-1;;;;;23028:33:0;-1:-1:-1;;;;;23028:33:0;;;;;;;;;;;;;23080:6;22997:165;;;;;;;;;;;;;;;;;:12;:165::i;:::-;22926:8;:247::i;:::-;-1:-1:-1;23191:4:0;22728:475;;;;;:::o;49736:639::-;49346:6;;-1:-1:-1;;;;;49346:6:0;49332:10;:20;49324:68;;;;-1:-1:-1;;;49324:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;49823:21:0;::::1;49815:46;;;::::0;-1:-1:-1;;;49815:46:0;;9655:2:1;49815:46:0::1;::::0;::::1;9637:21:1::0;9694:2;9674:18;;;9667:30;-1:-1:-1;;;9713:18:1;;;9706:42;9765:18;;49815:46:0::1;9453:336:1::0;49815:46:0::1;49890:1;49880:7;:11;49872:61;;;::::0;-1:-1:-1;;;49872:61:0;;9996:2:1;49872:61:0::1;::::0;::::1;9978:21:1::0;10035:2;10015:18;;;10008:30;10074:34;10054:18;;;10047:62;-1:-1:-1;;;10125:18:1;;;10118:35;10170:19;;49872:61:0::1;9794:401:1::0;49872:61:0::1;49963:18;49973:7;49963:9;:18::i;:::-;49952:7;:29;;49944:60;;;;-1:-1:-1::0;;;49944:60:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;50023:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;;;7800:10;50023:34;;;;;;;;:45;-1:-1:-1;50023:45:0::1;50015:98;;;::::0;-1:-1:-1;;;50015:98:0;;10402:2:1;50015:98:0::1;::::0;::::1;10384:21:1::0;10441:2;10421:18;;;10414:30;10480:34;10460:18;;;10453:62;-1:-1:-1;;;10531:18:1;;;10524:38;10579:19;;50015:98:0::1;10200:404:1::0;50015:98:0::1;-1:-1:-1::0;;;;;50131:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;50126:189;;50197:11;::::0;50168:50:::1;::::0;50188:7;;-1:-1:-1;;;;;50197:11:0::1;50210:7:::0;50168:19:::1;:50::i;:::-;50126:189;;;50282:11;::::0;50251:52:::1;::::0;50273:7;;-1:-1:-1;;;;;50282:11:0::1;50295:7:::0;50251:21:::1;:52::i;:::-;50350:7;-1:-1:-1::0;;;;;50334:33:0::1;;50359:7;50334:33;;;;2404:25:1::0;;2392:2;2377:18;;2258:177;50334:33:0::1;;;;;;;;49736:639:::0;;:::o;25227:322::-;25321:7;25379;;25368;:18;;25346:110;;;;-1:-1:-1;;;25346:110:0;;10811:2:1;25346:110:0;;;10793:21:1;10850:2;10830:18;;;10823:30;10889:34;10869:18;;;10862:62;-1:-1:-1;;;10940:18:1;;;10933:40;10990:19;;25346:110:0;10609:406:1;25346:110:0;25467:19;25489:10;:8;:10::i;:::-;25467:32;-1:-1:-1;25517:24:0;:7;25467:32;25517:11;:24::i;:::-;25510:31;25227:322;-1:-1:-1;;;25227:322:0:o;25946:601::-;9055:13;:11;:13::i;:::-;26037:11:::1;::::0;-1:-1:-1;;;;;26037:11:0;;::::1;26026:22:::0;;::::1;::::0;26018:68:::1;;;::::0;-1:-1:-1;;;26018:68:0;;11222:2:1;26018:68:0::1;::::0;::::1;11204:21:1::0;11261:2;11241:18;;;11234:30;11300:34;11280:18;;;11273:62;-1:-1:-1;;;11351:18:1;;;11344:31;11392:19;;26018:68:0::1;11020:397:1::0;26018:68:0::1;-1:-1:-1::0;;;;;26105:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;26097:60;;;::::0;-1:-1:-1;;;26097:60:0;;11624:2:1;26097:60:0::1;::::0;::::1;11606:21:1::0;11663:2;11643:18;;;11636:30;11702:29;11682:18;;;11675:57;11749:18;;26097:60:0::1;11422:351:1::0;26097:60:0::1;26173:9;26168:327;26192:9;:16:::0;26188:20;::::1;26168:327;;;26250:7;-1:-1:-1::0;;;;;26234:23:0::1;:9;26244:1;26234:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;26234:12:0::1;:23:::0;26230:254:::1;;26293:9;26303:16:::0;;:20:::1;::::0;26322:1:::1;::::0;26303:20:::1;:::i;:::-;26293:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;26278:9:::1;:12:::0;;-1:-1:-1;;;;;26293:31:0;;::::1;::::0;26288:1;;26278:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;26278:46:0::1;-1:-1:-1::0;;;;;26278:46:0;;::::1;;::::0;;26343:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;26382:11:::1;:20:::0;;;;:28;;-1:-1:-1;;26382:28:0::1;::::0;;26429:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;26429:15:0;;;;;-1:-1:-1;;;;;;26429:15:0::1;::::0;;;;;26463:5:::1;;26230:254;26210:3:::0;::::1;::::0;::::1;:::i;:::-;;;;26168:327;;;-1:-1:-1::0;26512:27:0::1;::::0;-1:-1:-1;;;;;26512:27:0;::::1;::::0;::::1;::::0;;;::::1;25946:601:::0;:::o;23211:302::-;7800:10;23328:4;23422:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;23422:34:0;;;;;;;;;;23328:4;;23350:133;;23400:7;;23422:50;;23461:10;23422:38;:50::i;24260:470::-;7800:10;24314:14;24377:19;;;:11;:19;;;;;;;;24376:20;24354:114;;;;-1:-1:-1;;;24354:114:0;;12646:2:1;24354:114:0;;;12628:21:1;12685:2;12665:18;;;12658:30;12724:34;12704:18;;;12697:62;-1:-1:-1;;;12775:18:1;;;12768:42;12827:19;;24354:114:0;12444:408:1;24354:114:0;24480:15;24509:19;24520:7;24509:10;:19::i;:::-;-1:-1:-1;;;;;;;;;24557:15:0;;;;;;:7;:15;;;;;;24479:49;;-1:-1:-1;24557:28:0;;:15;-1:-1:-1;24479:49:0;24557:19;:28::i;:::-;-1:-1:-1;;;;;24539:15:0;;;;;;:7;:15;;;;;:46;24606:7;;:20;;24618:7;24606:11;:20::i;:::-;24596:7;:30;24650:10;;:23;;24665:7;24650:14;:23::i;:::-;24637:10;:36;24691:31;;2404:25:1;;;24702:10:0;;24691:31;;2392:2:1;2377:18;24691:31:0;;;;;;;24303:427;;24260:470;:::o;46103:322::-;9055:13;:11;:13::i;:::-;-1:-1:-1;;;;;46186:23:0;::::1;46178:48;;;;-1:-1:-1::0;;;46178:48:0::1;;;;;;;:::i;:::-;46266:15;::::0;-1:-1:-1;;;;;46266:15:0;;::::1;46245:37:::0;;::::1;::::0;46237:62:::1;;;;-1:-1:-1::0;;;46237:62:0::1;;;;;;;:::i;:::-;46310:15;:47:::0;;-1:-1:-1;;;;;;46310:47:0::1;-1:-1:-1::0;;;;;46310:47:0;::::1;::::0;;::::1;::::0;;;46375:42:::1;::::0;1074:51:1;;;46395:10:0::1;::::0;46375:42:::1;::::0;1062:2:1;1047:18;46375:42:0::1;928:203:1::0;46703:255:0;9055:13;:11;:13::i;:::-;46796:29:::1;;46786:6;:39:::0;46778:63:::1;;;::::0;-1:-1:-1;;;46778:63:0;;13059:2:1;46778:63:0::1;::::0;::::1;13041:21:1::0;13098:2;13078:18;;;13071:30;-1:-1:-1;;;13117:18:1;;;13110:41;13168:18;;46778:63:0::1;12857:335:1::0;46778:63:0::1;46852:29;:38:::0;;;46908:42:::1;::::0;2404:25:1;;;46931:10:0::1;::::0;46908:42:::1;::::0;2392:2:1;2377:18;46908:42:0::1;2258:177:1::0;24738:481:0;24858:7;15462:13;24891:7;:18;;24883:62;;;;-1:-1:-1;;;24883:62:0;;13399:2:1;24883:62:0;;;13381:21:1;13438:2;13418:18;;;13411:30;13477:33;13457:18;;;13450:61;13528:18;;24883:62:0;13197:355:1;24883:62:0;24961:17;24956:256;;24996:15;25025:19;25036:7;25025:10;:19::i;:::-;-1:-1:-1;24995:49:0;;-1:-1:-1;25059:14:0;;-1:-1:-1;;;;;25059:14:0;24956:256;25109:23;25144:19;25155:7;25144:10;:19::i;:::-;-1:-1:-1;25106:57:0;;-1:-1:-1;25178:22:0;;-1:-1:-1;;;;;25178:22:0;47377:336;9055:13;:11;:13::i;:::-;-1:-1:-1;;;;;47502:23:0;::::1;47494:48;;;;-1:-1:-1::0;;;47494:48:0::1;;;;;;;:::i;:::-;47580:4;47571:23;47561:33:::0;::::1;;47553:64;;;;-1:-1:-1::0;;;47553:64:0::1;;;;;;;:::i;:::-;47628:26;::::0;-1:-1:-1;;;;;47628:18:0;::::1;::::0;:26;::::1;;;::::0;47647:6;;47628:26:::1;::::0;;;47647:6;47628:18;:26;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;47687:9;-1:-1:-1::0;;;;;47670:35:0::1;;47698:6;47670:35;;;;2404:25:1::0;;2392:2;2377:18;;2258:177;44961:644:0;9055:13;:11;:13::i;:::-;45191:2:::1;45182:5:::0;45175:4;45167:5;45148:16:::1;45154:10:::0;45148:3;:16:::1;:::i;:::-;:24;;;;:::i;:::-;:31;;;;:::i;:::-;:39;;;;:::i;:::-;:45;;45140:78;;;::::0;-1:-1:-1;;;45140:78:0;;13892:2:1;45140:78:0::1;::::0;::::1;13874:21:1::0;13931:2;13911:18;;;13904:30;-1:-1:-1;;;13950:18:1;;;13943:50;14010:18;;45140:78:0::1;13690:344:1::0;45140:78:0::1;45239:6;:13:::0;:20;::::1;:54:::0;::::1;;;-1:-1:-1::0;45263:16:0;;:30;::::1;45239:54;:78;;;;-1:-1:-1::0;45297:11:0;;:20;::::1;45239:78;:100;;;;-1:-1:-1::0;45321:10:0;;:18;::::1;45239:100;:125;;;;-1:-1:-1::0;45344:11:0;;:20;::::1;45239:125;45237:128;45229:159;;;::::0;-1:-1:-1;;;45229:159:0;;14241:2:1;45229:159:0::1;::::0;::::1;14223:21:1::0;14280:2;14260:18;;;14253:30;-1:-1:-1;;;14299:18:1;;;14292:48;14357:18;;45229:159:0::1;14039:342:1::0;45229:159:0::1;45399:6;:19:::0;;;45429:16;:29;;;45469:11;:19;;;45499:10;:17;;;45527:11;:19;;;45564:33:::1;::::0;45578:10:::1;::::0;45564:33:::1;::::0;::::1;::::0;45399:6;45564:33:::1;:::i;:::-;;;;;;;;44961:644:::0;;;;;:::o;25557:381::-;9055:13;:11;:13::i;:::-;-1:-1:-1;;;;;25640:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;25639:21;25631:61;;;::::0;-1:-1:-1;;;25631:61:0;;15168:2:1;25631:61:0::1;::::0;::::1;15150:21:1::0;15207:2;15187:18;;;15180:30;15246:29;15226:18;;;15219:57;15293:18;;25631:61:0::1;14966:351:1::0;25631:61:0::1;-1:-1:-1::0;;;;;25707:16:0;::::1;25726:1;25707:16:::0;;;:7:::1;:16;::::0;;;;;:20;25703:109:::1;;-1:-1:-1::0;;;;;25783:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;25763:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;25744:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;25703:109:::1;-1:-1:-1::0;;;;;25822:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;:27;;-1:-1:-1;;25822:27:0::1;25845:4;25822:27:::0;;::::1;::::0;;;25860:9:::1;:23:::0;;;;::::1;::::0;;;;;::::1;::::0;;-1:-1:-1;;;;;;25860:23:0::1;::::0;::::1;::::0;;25901:29;::::1;::::0;25822:20;25901:29:::1;25557:381:::0;:::o;44368:301::-;9055:13;:11;:13::i;:::-;-1:-1:-1;;;;;44453:23:0;::::1;44445:48;;;;-1:-1:-1::0;;;44445:48:0::1;;;;;;;:::i;:::-;44525:15;::::0;-1:-1:-1;;;;;44525:15:0;;::::1;44512:28:::0;;::::1;::::0;44504:53:::1;;;;-1:-1:-1::0;;;44504:53:0::1;;;;;;;:::i;:::-;44568:15;:27:::0;;-1:-1:-1;;;;;;44568:27:0::1;-1:-1:-1::0;;;;;44568:27:0;::::1;::::0;;::::1;::::0;;;44611:50:::1;::::0;1074:51:1;;;44633:10:0::1;::::0;44611:50:::1;::::0;1062:2:1;1047:18;44611:50:0::1;928:203:1::0;21853:198:0;-1:-1:-1;;;;;21943:20:0;;21919:7;21943:20;;;:11;:20;;;;;;;;21939:49;;;-1:-1:-1;;;;;;21972:16:0;;;;;:7;:16;;;;;;;21853:198::o;21939:49::-;-1:-1:-1;;;;;22026:16:0;;;;;;:7;:16;;;;;;22006:37;;:19;:37::i;9817:103::-;9055:13;:11;:13::i;:::-;9882:30:::1;9909:1;9882:18;:30::i;:::-;9817:103::o:0;50484:542::-;49346:6;;-1:-1:-1;;;;;49346:6:0;49332:10;:20;49324:68;;;;-1:-1:-1;;;49324:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;50573:21:0;::::1;50565:46;;;::::0;-1:-1:-1;;;50565:46:0;;9655:2:1;50565:46:0::1;::::0;::::1;9637:21:1::0;9694:2;9674:18;;;9667:30;-1:-1:-1;;;9713:18:1;;;9706:42;9765:18;;50565:46:0::1;9453:336:1::0;50565:46:0::1;50640:1;50630:7;:11;50622:63;;;::::0;-1:-1:-1;;;50622:63:0;;15524:2:1;50622:63:0::1;::::0;::::1;15506:21:1::0;15563:2;15543:18;;;15536:30;15602:34;15582:18;;;15575:62;-1:-1:-1;;;15653:18:1;;;15646:37;15700:19;;50622:63:0::1;15322:403:1::0;50622:63:0::1;50725:11;::::0;50715:22:::1;::::0;-1:-1:-1;;;;;50725:11:0::1;50715:9;:22::i;:::-;50704:7;:33;;50696:64;;;;-1:-1:-1::0;;;50696:64:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;50780:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;50775:191;;50839:11;::::0;50817:52:::1;::::0;-1:-1:-1;;;;;50839:11:0::1;50852:7:::0;50861;50817:21:::1;:52::i;:::-;50775:191;;;50924:11;::::0;50902:52:::1;::::0;-1:-1:-1;;;;;50924:11:0::1;50937:7:::0;50946;50902:21:::1;:52::i;:::-;51001:7;-1:-1:-1::0;;;;;50983:35:0::1;;51010:7;50983:35;;;;2404:25:1::0;;2392:2;2377:18;;2258:177;49420:250:0;9055:13;:11;:13::i;:::-;-1:-1:-1;;;;;49494:21:0;::::1;49486:46;;;;-1:-1:-1::0;;;49486:46:0::1;;;;;;;:::i;:::-;49551:6;::::0;-1:-1:-1;;;;;49551:17:0;;::::1;:6:::0;::::1;:17:::0;49543:42:::1;;;::::0;-1:-1:-1;;;49543:42:0;;15932:2:1;49543:42:0::1;::::0;::::1;15914:21:1::0;15971:2;15951:18;;;15944:30;-1:-1:-1;;;15990:18:1;;;15983:42;16042:18;;49543:42:0::1;15730:336:1::0;49543:42:0::1;49596:6;:16:::0;;-1:-1:-1;;;;;;49596:16:0::1;-1:-1:-1::0;;;;;49596:16:0;::::1;::::0;;::::1;::::0;;;49630:32:::1;::::0;1074:51:1;;;49643:10:0::1;::::0;49630:32:::1;::::0;1062:2:1;1047:18;49630:32:0::1;928:203:1::0;21224:145:0;-1:-1:-1;;;;;21349:10:0;21341:19;;21276:7;21341:19;;;:7;:19;;;;;;;21323:11;;;;;21315:20;;;;;21276:7;;21303:58;;:33;;15462:13;;21303:11;:33::i;:::-;:37;;:58::i;:::-;21296:65;;21224:145;:::o;20429:329::-;9055:13;:11;:13::i;:::-;-1:-1:-1;;;;;20556:31:0;::::1;;::::0;;;:25:::1;:31;::::0;;;;;:42;::::1;;:31;::::0;;::::1;:42;;::::0;20548:75:::1;;;::::0;-1:-1:-1;;;20548:75:0;;16273:2:1;20548:75:0::1;::::0;::::1;16255:21:1::0;16312:2;16292:18;;;16285:30;-1:-1:-1;;;16331:18:1;;;16324:50;16391:18;;20548:75:0::1;16071:344:1::0;20548:75:0::1;-1:-1:-1::0;;;;;20634:31:0;::::1;;::::0;;;:25:::1;:31;::::0;;;;;;;;:41;;-1:-1:-1;;20634:41:0::1;::::0;::::1;;::::0;;::::1;::::0;;;20693:57;;16588:51:1;;;16655:18;;;16648:50;20724:10:0::1;::::0;20693:57:::1;::::0;16561:18:1;20693:57:0::1;16420:284:1::0;23521:429:0;7800:10;23643:4;23768:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;23768:34:0;;;;;;;;;;23737:172;;;;;;;;;;;;23643:4;;23665:255;;7800:10;;23715:7;;23737:172;;23768:34;23821:15;;23737:172;;;;;:12;:172::i;22059:264::-;22167:4;22191:42;7800:10;22215:9;22226:6;22191:9;:42::i;:::-;22249:44;;;7800:10;16949:34:1;;-1:-1:-1;;;;;17019:15:1;;17014:2;16999:18;;16992:43;17051:18;;;17044:34;;;22249:44:0;;;;;;;16899:2:1;22249:44:0;;;-1:-1:-1;22311:4:0;22059:264;;;;:::o;44006:354::-;9055:13;:11;:13::i;:::-;-1:-1:-1;;;;;44125:21:0;::::1;44117:45;;;;-1:-1:-1::0;;;44117:45:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;44181:27:0;::::1;;::::0;;;:18:::1;:27;::::0;;;;;:38;::::1;;:27;::::0;;::::1;:38;;::::0;44173:65:::1;;;::::0;-1:-1:-1;;;44173:65:0;;17291:2:1;44173:65:0::1;::::0;::::1;17273:21:1::0;17330:2;17310:18;;;17303:30;-1:-1:-1;;;17349:18:1;;;17342:45;17404:18;;44173:65:0::1;17089:339:1::0;44173:65:0::1;-1:-1:-1::0;;;;;44249:27:0;::::1;;::::0;;;:18:::1;:27;::::0;;;;;;;;:37;;-1:-1:-1;;44249:37:0::1;::::0;::::1;;::::0;;::::1;::::0;;;44302:50;;16588:51:1;;;16655:18;;;16648:50;44323:10:0::1;::::0;44302:50:::1;::::0;16561:18:1;44302:50:0::1;16420:284:1::0;32855:225:0;9055:13;:11;:13::i;:::-;32952:6:::1;32932:26;;:16;;;;;;;;;;;:26;;::::0;32924:57:::1;;;::::0;-1:-1:-1;;;32924:57:0;;17635:2:1;32924:57:0::1;::::0;::::1;17617:21:1::0;17674:2;17654:18;;;17647:30;-1:-1:-1;;;17693:18:1;;;17686:48;17751:18;;32924:57:0::1;17433:342:1::0;32924:57:0::1;32992:16;:25:::0;;-1:-1:-1;;;;32992:25:0::1;-1:-1:-1::0;;;32992:25:0;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;;33035:37:::1;::::0;32992:25:::1;33055:16:::0;;;::::1;;1301:14:1::0;1294:22;1276:41;;33035:37:0::1;::::0;1264:2:1;1249:18;33035:37:0::1;;;;;;;;32855:225:::0;:::o;45613:482::-;9055:13;:11;:13::i;:::-;45844:2:::1;45835:5:::0;45828:4;45820:5;45801:16:::1;45807:10:::0;45801:3;:16:::1;:::i;:::-;:24;;;;:::i;:::-;:31;;;;:::i;:::-;:39;;;;:::i;:::-;:45;;45793:78;;;::::0;-1:-1:-1;;;45793:78:0;;13892:2:1;45793:78:0::1;::::0;::::1;13874:21:1::0;13931:2;13911:18;;;13904:30;-1:-1:-1;;;13950:18:1;;;13943:50;14010:18;;45793:78:0::1;13690:344:1::0;45793:78:0::1;45882:7;:20:::0;;;45913:17;:30;;;45954:12;:20;;;45985:11;:18;;;46014:12;:20;;;46052:35:::1;::::0;46067:10:::1;::::0;46052:35:::1;::::0;::::1;::::0;45882:7;46052:35:::1;:::i;46433:262::-:0;9055:13;:11;:13::i;:::-;46532:21:::1;::::0;-1:-1:-1;;;46532:21:0;::::1;;;46520:33;;::::0;::::1;;::::0;46512:61:::1;;;::::0;-1:-1:-1;;;46512:61:0;;17291:2:1;46512:61:0::1;::::0;::::1;17273:21:1::0;17330:2;17310:18;;;17303:30;-1:-1:-1;;;17349:18:1;;;17342:45;17404:18;;46512:61:0::1;17089:339:1::0;46512:61:0::1;46584:21;:32:::0;;;::::1;;-1:-1:-1::0;;;46584:32:0::1;-1:-1:-1::0;;;;46584:32:0;;::::1;;::::0;;46634:53:::1;::::0;46666:10:::1;::::0;46634:53:::1;::::0;::::1;::::0;46608:8;1301:14:1;1294:22;1276:41;;1264:2;1249:18;;1136:187;46966:403:0;9055:13;:11;:13::i;:::-;-1:-1:-1;;;;;47086:32:0;::::1;47078:57;;;;-1:-1:-1::0;;;47078:57:0::1;;;;;;;:::i;:::-;47176:15;::::0;-1:-1:-1;;;;;47176:15:0;;::::1;47154:37:::0;;::::1;::::0;47146:94:::1;;;::::0;-1:-1:-1;;;47146:94:0;;18236:2:1;47146:94:0::1;::::0;::::1;18218:21:1::0;18275:2;18255:18;;;18248:30;18314:34;18294:18;;;18287:62;-1:-1:-1;;;18365:18:1;;;18358:42;18417:19;;47146:94:0::1;18034:408:1::0;47146:94:0::1;47251:15;:36:::0;;-1:-1:-1;;;;;;47251:36:0::1;-1:-1:-1::0;;;;;47251:36:0;::::1;::::0;;::::1;::::0;;;47305:56:::1;::::0;1074:51:1;;;47330:10:0::1;::::0;47305:56:::1;::::0;1062:2:1;1047:18;47305:56:0::1;928:203:1::0;33088:310:0;9055:13;:11;:13::i;:::-;-1:-1:-1;;;;;33173:26:0;::::1;33165:54;;;::::0;-1:-1:-1;;;33165:54:0;;18649:2:1;33165:54:0::1;::::0;::::1;18631:21:1::0;18688:2;18668:18;;;18661:30;-1:-1:-1;;;18707:18:1;;;18700:45;18762:18;;33165:54:0::1;18447:339:1::0;33165:54:0::1;33238:11;::::0;-1:-1:-1;;;;;33238:27:0;;::::1;:11:::0;::::1;:27:::0;33230:65:::1;;;::::0;-1:-1:-1;;;33230:65:0;;18993:2:1;33230:65:0::1;::::0;::::1;18975:21:1::0;19032:2;19012:18;;;19005:30;19071:27;19051:18;;;19044:55;19116:18;;33230:65:0::1;18791:349:1::0;33230:65:0::1;33306:11;:26:::0;;-1:-1:-1;;;;;;33306:26:0::1;-1:-1:-1::0;;;;;33306:26:0;::::1;::::0;;::::1;::::0;;;33348:42:::1;::::0;;33366:10:::1;19357:34:1::0;;19422:2;19407:18;;19400:43;;;;33348:42:0::1;::::0;19292:18:1;33348:42:0::1;19145:304:1::0;10075:201:0;9055:13;:11;:13::i;:::-;-1:-1:-1;;;;;10164:22:0;::::1;10156:73;;;::::0;-1:-1:-1;;;10156:73:0;;19656:2:1;10156:73:0::1;::::0;::::1;19638:21:1::0;19695:2;19675:18;;;19668:30;19734:34;19714:18;;;19707:62;-1:-1:-1;;;19785:18:1;;;19778:36;19831:19;;10156:73:0::1;19454:402:1::0;10156:73:0::1;10240:28;10259:8;10240:18;:28::i;:::-;10075:201:::0;:::o;48482:801::-;9055:13;:11;:13::i;:::-;-1:-1:-1;;;;;48574:23:0;::::1;48566:48;;;;-1:-1:-1::0;;;48566:48:0::1;;;;;;;:::i;:::-;48643:1;48633:7;:11;48625:67;;;::::0;-1:-1:-1;;;48625:67:0;;20063:2:1;48625:67:0::1;::::0;::::1;20045:21:1::0;20102:2;20082:18;;;20075:30;20141:34;20121:18;;;20114:62;-1:-1:-1;;;20192:18:1;;;20185:41;20243:19;;48625:67:0::1;19861:407:1::0;48625:67:0::1;48729:4;48709:26;::::0;;;:11:::1;:26;::::0;;;;;::::1;;:53:::0;::::1;;;-1:-1:-1::0;;;;;;48740:22:0;::::1;;::::0;;;:11:::1;:22;::::0;;;;;::::1;;48739:23;48709:53;48705:520;;;48779:56;48809:4;48816:9;48827:7;48779:21;:56::i;:::-;48705:520;;;48878:4;48858:26;::::0;;;:11:::1;:26;::::0;;;;;::::1;;48857:27;:53:::0;::::1;;;-1:-1:-1::0;;;;;;48888:22:0;::::1;;::::0;;;:11:::1;:22;::::0;;;;;::::1;;48857:53;48853:372;;;48927:54;48955:4;48962:9;48973:7;48927:19;:54::i;48853:372::-;49023:4;49003:26;::::0;;;:11:::1;:26;::::0;;;;;::::1;;:52:::0;::::1;;;-1:-1:-1::0;;;;;;49033:22:0;::::1;;::::0;;;:11:::1;:22;::::0;;;;;::::1;;49003:52;48999:226;;;49072:56;49102:4;49109:9;49120:7;49072:21;:56::i;48999:226::-;49161:52;49187:4;49194:9;49205:7;49161:17;:52::i;:::-;49256:9;-1:-1:-1::0;;;;;49242:33:0::1;;49267:7;49242:33;;;;2404:25:1::0;;2392:2;2377:18;;2258:177;9334:132:0;9215:7;9242:6;-1:-1:-1;;;;;9242:6:0;7800:10;9398:23;9390:68;;;;-1:-1:-1;;;9390:68:0;;20475:2:1;9390:68:0;;;20457:21:1;;;20494:18;;;20487:30;20553:34;20533:18;;;20526:62;20605:18;;9390:68:0;20273:356:1;33540:379:0;-1:-1:-1;;;;;33667:19:0;;33659:68;;;;-1:-1:-1;;;33659:68:0;;20836:2:1;33659:68:0;;;20818:21:1;20875:2;20855:18;;;20848:30;20914:34;20894:18;;;20887:62;-1:-1:-1;;;20965:18:1;;;20958:34;21009:19;;33659:68:0;20634:400:1;33659:68:0;-1:-1:-1;;;;;33746:21:0;;33738:68;;;;-1:-1:-1;;;33738:68:0;;21241:2:1;33738:68:0;;;21223:21:1;21280:2;21260:18;;;21253:30;21319:34;21299:18;;;21292:62;-1:-1:-1;;;21370:18:1;;;21363:32;21412:19;;33738:68:0;21039:398:1;33738:68:0;-1:-1:-1;;;;;33827:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;33879:32;;2404:25:1;;;33879:32:0;;2377:18:1;33879:32:0;2258:177:1;33927:1016:0;-1:-1:-1;;;;;34049:18:0;;34041:68;;;;-1:-1:-1;;;34041:68:0;;21644:2:1;34041:68:0;;;21626:21:1;21683:2;21663:18;;;21656:30;21722:34;21702:18;;;21695:62;-1:-1:-1;;;21773:18:1;;;21766:35;21818:19;;34041:68:0;21442:401:1;34041:68:0;-1:-1:-1;;;;;34128:16:0;;34120:64;;;;-1:-1:-1;;;34120:64:0;;22050:2:1;34120:64:0;;;22032:21:1;22089:2;22069:18;;;22062:30;22128:34;22108:18;;;22101:62;-1:-1:-1;;;22179:18:1;;;22172:33;22222:19;;34120:64:0;21848:399:1;34120:64:0;34212:1;34203:6;:10;34195:64;;;;-1:-1:-1;;;34195:64:0;;22454:2:1;34195:64:0;;;22436:21:1;22493:2;22473:18;;;22466:30;22532:34;22512:18;;;22505:62;-1:-1:-1;;;22583:18:1;;;22576:39;22632:19;;34195:64:0;22252:405:1;34195:64:0;34272:28;34303:24;34321:4;34303:9;:24::i;:::-;34402:29;;34272:55;;-1:-1:-1;34365:66:0;;;;;;;34460:53;;-1:-1:-1;34497:16:0;;-1:-1:-1;;;34497:16:0;;;;34496:17;34460:53;:102;;;;-1:-1:-1;;;;;;34531:31:0;;;;;;:25;:31;;;;;;;;34530:32;34460:102;:140;;;;-1:-1:-1;34579:21:0;;-1:-1:-1;;;34579:21:0;;;;34460:140;:180;;;;-1:-1:-1;34625:15:0;;-1:-1:-1;;;;;34617:23:0;;;34625:15;;34617:23;;34460:180;:218;;;;-1:-1:-1;34663:15:0;;-1:-1:-1;;;;;34657:21:0;;;34663:15;;34657:21;;34460:218;34442:383;;;34728:29;;34705:52;;34774:39;34792:20;34774:17;:39::i;:::-;34903:32;34918:4;34924:2;34928:6;34903:14;:32::i;:::-;34030:913;;33927:1016;;;:::o;21607:238::-;21736:7;21772:12;21764:6;;;;21756:29;;;;-1:-1:-1;;;21756:29:0;;;;;;;;:::i;:::-;-1:-1:-1;21796:9:0;21808:8;:1;21814;21808:5;:8::i;:::-;21796:20;21607:238;-1:-1:-1;;;;;21607:238:0:o;41874:687::-;42023:15;42053:23;42091:12;42118:23;42156:12;42183:18;42215:19;42226:7;42215:10;:19::i;:::-;-1:-1:-1;;;;;42263:15:0;;;;;;:7;:15;;;;;;42008:226;;-1:-1:-1;42008:226:0;;-1:-1:-1;42008:226:0;;-1:-1:-1;42008:226:0;-1:-1:-1;42008:226:0;-1:-1:-1;42008:226:0;-1:-1:-1;42263:28:0;;42008:226;42263:19;:28::i;:::-;-1:-1:-1;;;;;42245:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;42323:18;;;;;:7;:18;;;;;:39;;42346:15;42323:22;:39::i;:::-;-1:-1:-1;;;;;42302:18:0;;;;;;:7;:18;;;;;;;;:60;;;;42394:7;:18;;;;:39;;42417:15;42394:22;:39::i;:::-;-1:-1:-1;;;;;42373:18:0;;;;;;:7;:18;;;;;:60;42444:49;42453:6;42461:7;42470:10;42482:4;42488;42444:8;:49::i;:::-;42526:9;-1:-1:-1;;;;;42509:44:0;42518:6;-1:-1:-1;;;;;42509:44:0;-1:-1:-1;;;;;;;;;;;42537:15:0;42509:44;;;;2404:25:1;;2392:2;2377:18;;2258:177;42509:44:0;;;;;;;;41997:564;;;;;;41874:687;;;:::o;43252:746::-;43403:15;43433:23;43471:12;43498:23;43536:12;43563:18;43595:19;43606:7;43595:10;:19::i;:::-;-1:-1:-1;;;;;43643:15:0;;;;;;:7;:15;;;;;;43388:226;;-1:-1:-1;43388:226:0;;-1:-1:-1;43388:226:0;;-1:-1:-1;43388:226:0;-1:-1:-1;43388:226:0;-1:-1:-1;43388:226:0;-1:-1:-1;43643:28:0;;43663:7;43643:19;:28::i;:::-;-1:-1:-1;;;;;43625:15:0;;;;;;:7;:15;;;;;;;;:46;;;;43700:7;:15;;;;:28;;43720:7;43700:19;:28::i;29477:164::-;29519:7;29540:15;29557;29576:19;:17;:19::i;:::-;29539:56;;-1:-1:-1;29539:56:0;-1:-1:-1;29613:20:0;29539:56;;29613:11;:20::i;:::-;29606:27;;;;29477:164;:::o;4013:98::-;4071:7;4098:5;4102:1;4098;:5;:::i;2876:98::-;2934:7;2961:5;2965:1;2961;:5;:::i;26978:848::-;27078:7;27100;27122;27144;27166;27188;27238:23;27276:12;27303:18;27336;27369:13;27396:20;27408:7;27396:11;:20::i;:::-;27223:193;;;;;;;;;;27428:15;27445:23;27470:12;27486:158;27512:7;27534:4;27553:10;27578;27603:5;27623:10;:8;:10::i;:::-;27486:11;:158::i;:::-;27427:217;;-1:-1:-1;27427:217:0;-1:-1:-1;27427:217:0;-1:-1:-1;27748:15:0;;-1:-1:-1;27778:4:0;;-1:-1:-1;27797:10:0;;-1:-1:-1;;;;;;26978:848:0;;;;;;;:::o;3257:98::-;3315:7;3342:5;3346:1;3342;:5;:::i;10436:191::-;10510:16;10529:6;;-1:-1:-1;;;;;10546:17:0;;;-1:-1:-1;;;;;;10546:17:0;;;;;;10579:40;;10529:6;;;;;;;10579:40;;10510:16;10579:40;10499:128;10436:191;:::o;42569:675::-;42720:15;42750:23;42788:12;42815:23;42853:12;42880:18;42912:19;42923:7;42912:10;:19::i;:::-;-1:-1:-1;;;;;42960:15:0;;;;;;:7;:15;;;;;;42705:226;;-1:-1:-1;42705:226:0;;-1:-1:-1;42705:226:0;;-1:-1:-1;42705:226:0;-1:-1:-1;42705:226:0;-1:-1:-1;42705:226:0;-1:-1:-1;42960:28:0;;42980:7;42960:19;:28::i;:::-;-1:-1:-1;;;;;42942:15:0;;;;;;:7;:15;;;;;;;;:46;;;;43017:7;:15;;;;:28;;43037:7;43017:19;:28::i;:::-;-1:-1:-1;;;;;42999:15:0;;;;;;;:7;:15;;;;;;:46;;;;43077:18;;;;;;;:39;;43100:15;43077:22;:39::i;41252:614::-;41399:15;41429:23;41467:12;41494:23;41532:12;41559:18;41591:19;41602:7;41591:10;:19::i;:::-;-1:-1:-1;;;;;41639:15:0;;;;;;:7;:15;;;;;;41384:226;;-1:-1:-1;41384:226:0;;-1:-1:-1;41384:226:0;;-1:-1:-1;41384:226:0;-1:-1:-1;41384:226:0;-1:-1:-1;41384:226:0;-1:-1:-1;41639:28:0;;41384:226;41639:19;:28::i;34951:1164::-;18629:16;:23;;-1:-1:-1;;;;18629:23:0;-1:-1:-1;;;18629:23:0;;;35311:12;;35280:11;;35248:12;;35217:11;;35311:7:::1;35183:14:::0;35280:6:::1;35150:13:::0;35113:17;;35078:16;;18629:23;;35078:246:::1;::::0;35311:12;;35078:214:::1;::::0;35280:11;;35078:214;;35248:12;;35078:214;;;;;;35150:13;;35078:214;;:34:::1;:53::i;:::-;:71:::0;::::1;:86::i;:246::-;35378:7;:14:::0;35362:6:::1;:13:::0;35062:262;;-1:-1:-1;35349:10:0::1;::::0;35362:30:::1;::::0;35378:14;35362:30:::1;:::i;:::-;35349:43:::0;-1:-1:-1;35403:20:0::1;35426:39;35459:5:::0;35426:28:::1;:20:::0;35349:43;35426:24:::1;:28::i;:::-;:32:::0;::::1;:39::i;:::-;35403:62;;35476:28;35491:12;35476:14;:28::i;:::-;35551:12:::0;;35537:11;;35517:17:::1;::::0;35537:26:::1;::::0;::::1;:::i;:::-;35517:46:::0;-1:-1:-1;35574:15:0::1;35592:46;35632:5:::0;35592:35:::1;:20:::0;35517:46;35592:24:::1;:35::i;:46::-;35574:64;;35649:19;35660:7;35649:10;:19::i;:::-;35723:17:::0;;35704:16;;35681:20:::1;::::0;35704:36:::1;::::0;::::1;:::i;:::-;35681:59:::0;-1:-1:-1;35751:20:0::1;35774:49;35817:5:::0;35774:38:::1;:20:::0;35681:59;35774:24:::1;:38::i;:49::-;35751:72;;35834:29;35850:12;35834:15;:29::i;:::-;35908:12:::0;;35894:11;;35876:15:::1;::::0;35894:26:::1;::::0;::::1;:::i;:::-;35876:44:::0;-1:-1:-1;35931:15:0::1;35949:44;35987:5:::0;35949:33:::1;:20:::0;35876:44;35949:24:::1;:33::i;:44::-;35931:62;;36004:19;36015:7;36004:10;:19::i;:::-;36041:66;::::0;;23115:25:1;;;23171:2;23156:18;;23149:34;;;23199:18;;;23192:34;;;23257:2;23242:18;;23235:34;;;36041:66:0::1;::::0;23102:3:1;23087:19;36041:66:0::1;;;;;;;-1:-1:-1::0;;18675:16:0;:24;;-1:-1:-1;;;;18675:24:0;;;-1:-1:-1;;;;;;;;34951:1164:0:o;39194:1163::-;-1:-1:-1;;;;;39327:26:0;;;;;;:18;:26;;;;;;;;39326:27;:61;;;;-1:-1:-1;;;;;;39358:29:0;;;;;;:18;:29;;;;;;;;39357:30;39326:61;39322:432;;;39412:16;;-1:-1:-1;;;39412:16:0;;;;39404:48;;;;-1:-1:-1;;;39404:48:0;;23482:2:1;39404:48:0;;;23464:21:1;23521:2;23501:18;;;23494:30;-1:-1:-1;;;23540:18:1;;;23533:49;23599:18;;39404:48:0;23280:343:1;39404:48:0;-1:-1:-1;;;;;39473:33:0;;;;;;:25;:33;;;;;;;;:41;;:33;:41;39469:274;;39535:13;:20;;-1:-1:-1;;;;39535:20:0;-1:-1:-1;;;39535:20:0;;;39574:11;32449:10;;32439:7;:20;32449:6;32486:13;32470;:29;32526:16;;32510:13;:32;32564:11;;32553:8;:22;32597:11;;32586:8;:22;32399:217;39574:11;39469:274;;;-1:-1:-1;;;;;39611:36:0;;;;;;:25;:36;;;;;;;;:44;;:36;:44;39607:136;;39676:13;:20;;-1:-1:-1;;;;39676:20:0;-1:-1:-1;;;39676:20:0;;;39715:12;32675:11;;32665:7;:21;32675:7;32713:14;32697:13;:30;32754:17;;32738:13;:33;32793:12;;32782:8;:23;32827:12;;32816:8;:23;32624:223;39715:12;-1:-1:-1;;;;;39770:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;39794:22:0;;;;;;:11;:22;;;;;;;;39793:23;39770:46;39766:467;;;39833:48;39855:6;39863:9;39874:6;39833:21;:48::i;:::-;39766:467;;;-1:-1:-1;;;;;39904:19:0;;;;;;:11;:19;;;;;;;;39903:20;:46;;;;-1:-1:-1;;;;;;39927:22:0;;;;;;:11;:22;;;;;;;;39903:46;39899:334;;;39966:46;39986:6;39994:9;40005:6;39966:19;:46::i;39899:334::-;-1:-1:-1;;;;;40034:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;40057:22:0;;;;;;:11;:22;;;;;;;;40034:45;40030:203;;;40096:48;40118:6;40126:9;40137:6;40096:21;:48::i;40030:203::-;40177:44;40195:6;40203:9;40214:6;40177:17;:44::i;:::-;40249:13;;-1:-1:-1;;;40249:13:0;;;;:21;;40266:4;40249:21;40245:105;;40287:13;:21;;-1:-1:-1;;;;40287:21:0;;;40323:15;32280:1;32270:7;:11;;;32292:13;:17;;;32320:13;:17;;;32348:8;:12;;;32371:8;:12;32226:165;40323:15;39194:1163;;;:::o;40365:879::-;40539:13;;-1:-1:-1;;;40539:13:0;;;;:21;;40556:4;40539:21;40535:702;;40577:18;40598:30;40620:7;40598:21;:30::i;:::-;40577:51;;40643:13;40659:25;40676:7;40659:16;:25::i;:::-;40643:41;;40699:13;40715:25;40732:7;40715:16;:25::i;:::-;40699:41;;40757:26;40772:10;40757:14;:26::i;:::-;40798:40;40820:10;40832:5;40798:21;:40::i;:::-;40853:16;40863:5;40853:9;:16::i;:::-;40911:23;40923:4;40929;40911:11;:23::i;:::-;41147:4;-1:-1:-1;;;;;41087:138:0;;-1:-1:-1;;;;;;;;;;;41205:5:0;41197;41171:23;41184:10;41171;:23;:::i;:::-;:31;;;;:::i;:::-;:39;;;;:::i;:::-;41087:138;;2404:25:1;;;2392:2;2377:18;41087:138:0;;;;;;;40562:675;;;40365:879;;;;;:::o;29649:605::-;29747:7;;29700;;;;15462:13;29700:7;29801:338;29825:9;:16;29821:20;;29801:338;;;29909:7;29885;:21;29893:9;29903:1;29893:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;29893:12:0;29885:21;;;;;;;;;;;;;:31;;:83;;;29961:7;29937;:21;29945:9;29955:1;29945:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;29945:12:0;29937:21;;;;;;;;;;;;;:31;29885:83;29863:146;;;-1:-1:-1;;29992:7:0;;;15462:13;;-1:-1:-1;29649:605:0;-1:-1:-1;;29649:605:0:o;29863:146::-;30034:34;30046:7;:21;30054:9;30064:1;30054:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;30054:12:0;30046:21;;;;;;;;;;;;;30034:7;;:11;:34::i;:::-;30024:44;;30093:34;30105:7;:21;30113:9;30123:1;30113:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;30113:12:0;30105:21;;;;;;;;;;;;;30093:7;;:11;:34::i;:::-;30083:44;-1:-1:-1;29843:3:0;;;;:::i;:::-;;;;29801:338;;;-1:-1:-1;30163:7:0;;:20;;15462:13;30163:11;:20::i;:::-;30153:7;:30;30149:61;;;-1:-1:-1;;30193:7:0;;;15462:13;;-1:-1:-1;29649:605:0;-1:-1:-1;29649:605:0:o;30149:61::-;30229:7;;30238;;-1:-1:-1;29649:605:0;-1:-1:-1;29649:605:0:o;27834:723::-;27935:7;27957;27979;28001;28023;28058:12;28073:24;28089:7;28073:15;:24::i;:::-;28058:39;;28108:18;28129:30;28151:7;28129:21;:30::i;:::-;28108:51;;28170:18;28191:30;28213:7;28191:21;:30::i;:::-;28170:51;;28232:13;28248:25;28265:7;28248:16;:25::i;:::-;28232:41;;28284:13;28300:25;28317:7;28300:16;:25::i;:::-;28284:41;-1:-1:-1;28336:23:0;28362:33;28384:10;28362:17;:7;28374:4;28362:11;:17::i;:33::-;28336:59;-1:-1:-1;28424:53:0;28471:5;28424:42;28460:5;28424:42;28336:59;28444:10;28424:19;:31::i;:53::-;28406:71;28513:4;;-1:-1:-1;28519:10:0;;-1:-1:-1;28531:10:0;;-1:-1:-1;28531:10:0;-1:-1:-1;27834:723:0;;-1:-1:-1;;;;27834:723:0:o;28565:904::-;28817:7;;;;28914:24;:7;28926:11;28914;:24::i;:::-;28896:42;-1:-1:-1;28949:12:0;28964:21;:4;28973:11;28964:8;:21::i;:::-;28949:36;-1:-1:-1;28996:18:0;29017:27;:10;29032:11;29017:14;:27::i;:::-;28996:48;-1:-1:-1;29055:18:0;29076:27;:10;29091:11;29076:14;:27::i;:::-;29055:48;-1:-1:-1;29114:13:0;29130:22;:5;29140:11;29130:9;:22::i;:::-;29114:38;;29163:13;29179:25;29196:7;29179:16;:25::i;:::-;29163:41;-1:-1:-1;29215:13:0;29231:22;29163:41;29241:11;29231:9;:22::i;:::-;29215:38;-1:-1:-1;29264:22:0;29289:58;29215:38;29289:47;29330:5;29289:47;29314:10;29289:47;:4;29298:10;29289:8;:20::i;:58::-;29264:83;-1:-1:-1;29358:23:0;29384:27;:7;29264:83;29384:11;:27::i;:::-;29430:7;;-1:-1:-1;29358:53:0;;-1:-1:-1;29456:4:0;;-1:-1:-1;;;;;;;;28565:904:0;;;;;;;;;;:::o;3614:98::-;3672:7;3699:5;3703:1;3699;:5;:::i;37902:423::-;37961:12;37976:13;:6;37987:1;37976:10;:13::i;:::-;37961:28;-1:-1:-1;38000:17:0;38020:16;:6;37961:28;38020:10;:16::i;:::-;38000:36;-1:-1:-1;38074:21:0;38108:22;38125:4;38108:16;:22::i;:::-;38143:18;38164:41;:21;38190:14;38164:25;:41::i;:::-;38143:62;;38218:35;38231:9;38242:10;38218:12;:35::i;:::-;38271:46;;;24003:25:1;;;24059:2;24044:18;;24037:34;;;24087:18;;;24080:34;;;38271:46:0;;23991:2:1;23976:18;38271:46:0;;;;;;;37950:375;;;;37902:423;:::o;36123:560::-;36177:19;36199:10;:8;:10::i;:::-;36177:32;-1:-1:-1;36220:13:0;36236:22;:5;36177:32;36236:9;:22::i;:::-;-1:-1:-1;;;;;36301:10:0;36293:19;;;;;:7;:19;;;;;;36220:38;;-1:-1:-1;36293:30:0;;36220:38;36293:23;:30::i;:::-;-1:-1:-1;;;;;36279:10:0;36271:19;;;;;:7;:19;;;;;;:52;;;;36375:4;36359:22;;;;:33;;36386:5;36359:26;:33::i;:::-;36350:4;36334:22;;;;:7;:22;;;;;;;;:58;;;;36421:10;-1:-1:-1;;;;;36409:23:0;;;:11;:23;;;;;;36405:94;;;-1:-1:-1;;;;;36477:10:0;36469:19;;;;;:7;:19;;;;;;:30;;36493:5;36469:23;:30::i;:::-;-1:-1:-1;;;;;36455:10:0;36447:19;;;;;:7;:19;;;;;:52;36405:94;36536:4;36516:26;;;;:11;:26;;;;;;;;36512:103;;;36598:4;36582:22;;;;:7;:22;;;;;;:33;;36609:5;36582:26;:33::i;:::-;36573:4;36557:22;;;;:7;:22;;;;;:58;36512:103;36633:42;;2404:25:1;;;-1:-1:-1;;;;;36657:10:0;36633:42;;36650:4;;-1:-1:-1;;;;;;;;;;;36633:42:0;2392:2:1;2377:18;36633:42:0;2258:177:1;37259:635:0;37323:19;37345:10;:8;:10::i;:::-;37323:32;-1:-1:-1;37366:18:0;37387:27;:10;37323:32;37387:14;:27::i;:::-;37462:15;;-1:-1:-1;;;;;37462:15:0;37454:24;;;;:7;:24;;;;;;37366:48;;-1:-1:-1;37454:40:0;;37366:48;37454:28;:40::i;:::-;37435:15;;-1:-1:-1;;;;;37435:15:0;37427:24;;;;:7;:24;;;;;;:67;;;;37546:4;37530:22;;;;:38;;37557:10;37530:26;:38::i;:::-;37521:4;37505:22;;;;:7;:22;;;;;;;;:63;;;;37597:15;;-1:-1:-1;;;;;37597:15:0;37585:28;;:11;:28;;;;;;37581:114;;;37663:15;;-1:-1:-1;;;;;37663:15:0;37655:24;;;;:7;:24;;;;;;:40;;37684:10;37655:28;:40::i;:::-;37636:15;;-1:-1:-1;;;;;37636:15:0;37628:24;;;;:7;:24;;;;;:67;37581:114;37732:4;37712:26;;;;:11;:26;;;;;;;;37708:108;;;37794:4;37778:22;;;;:7;:22;;;;;;:38;;37805:10;37778:26;:38::i;:::-;37769:4;37753:22;;;;:7;:22;;;;;:63;37708:108;37858:15;;37834:52;;2404:25:1;;;-1:-1:-1;;;;;37858:15:0;;;;37851:4;;-1:-1:-1;;;;;;;;;;;37834:52:0;2392:2:1;2377:18;37834:52:0;2258:177:1;36691:560:0;36745:19;36767:10;:8;:10::i;:::-;36745:32;-1:-1:-1;36788:13:0;36804:22;:5;36745:32;36804:9;:22::i;:::-;36869:10;;-1:-1:-1;;;;;36869:10:0;36861:19;;;;:7;:19;;;;;;36788:38;;-1:-1:-1;36861:30:0;;36788:38;36861:23;:30::i;:::-;36847:10;;-1:-1:-1;;;;;36847:10:0;36839:19;;;;:7;:19;;;;;;:52;;;;36943:4;36927:22;;;;:33;;36954:5;36927:26;:33::i;:::-;36918:4;36902:22;;;;:7;:22;;;;;;;;:58;;;;36989:10;;-1:-1:-1;;;;;36989:10:0;36977:23;;:11;:23;;;;;;36973:94;;;37045:10;;-1:-1:-1;;;;;37045:10:0;37037:19;;;;:7;:19;;;;;;:30;;37061:5;37037:23;:30::i;:::-;37023:10;;-1:-1:-1;;;;;37023:10:0;37015:19;;;;:7;:19;;;;;:52;36973:94;37104:4;37084:26;;;;:11;:26;;;;;;;;37080:103;;;37166:4;37150:22;;;;:7;:22;;;;;;:33;;37177:5;37150:26;:33::i;:::-;37141:4;37125:22;;;;:7;:22;;;;;:58;37080:103;37225:10;;37201:42;;2404:25:1;;;-1:-1:-1;;;;;37225:10:0;;;;37218:4;;-1:-1:-1;;;;;;;;;;;37201:42:0;2392:2:1;2377:18;37201:42:0;2258:177:1;31904:174:0;32001:7;32033:37;32064:5;32033:26;32045:13;;32033:7;:11;;:26;;;;:::i;31764:132::-;31829:7;31856:32;31882:5;31856:21;31868:8;;31856:7;:11;;:21;;;;:::i;32086:132::-;32151:7;32178:32;32204:5;32178:21;32190:8;;32178:7;:11;;:21;;;;:::i;30262:355::-;30325:19;30347:10;:8;:10::i;:::-;30325:32;-1:-1:-1;30368:18:0;30389:27;:10;30325:32;30389:14;:27::i;:::-;30468:4;30452:22;;;;:7;:22;;;;;;30368:48;;-1:-1:-1;30452:38:0;;30368:48;30452:26;:38::i;:::-;30443:4;30427:22;;;;:7;:22;;;;;;;;:63;;;;30505:11;:26;;;;;;30501:108;;;30587:4;30571:22;;;;:7;:22;;;;;;:38;;30598:10;30571:26;:38::i;:::-;30562:4;30546:22;;;;:7;:22;;;;;:63;30314:303;;30262:355;:::o;30958:478::-;31043:19;31065:10;:8;:10::i;:::-;31043:32;-1:-1:-1;31086:18:0;31107:27;:10;31043:32;31107:14;:27::i;:::-;31086:48;-1:-1:-1;31145:13:0;31161:22;:5;31171:11;31161:9;:22::i;:::-;31235:4;31219:22;;;;:7;:22;;;;;;31145:38;;-1:-1:-1;31219:49:0;;31257:10;;31219:33;;31145:38;31219:26;:33::i;:49::-;31210:4;31194:22;;;;:7;:22;;;;;;;;:74;;;;31283:11;:26;;;;;;31279:149;;;31409:18;31422:5;31409:10;:18;:::i;:::-;31382:4;31366:22;;;;:7;:22;;;;;;:62;;;;:::i;:::-;31340:4;31324:22;;;;:7;:22;;;;;:104;31032:404;;;30958:478;;:::o;26823:147::-;26901:7;;:17;;26913:4;26901:11;:17::i;:::-;26891:7;:27;26942:10;;:20;;26957:4;26942:14;:20::i;:::-;26929:10;:33;-1:-1:-1;;26823:147:0:o;31444:130::-;31508:7;31535:31;31560:5;31535:20;31547:7;;31535;:11;;:20;;;;:::i;31582:174::-;31679:7;31711:37;31742:5;31711:26;31723:13;;31711:7;:11;;:26;;;;:::i;38333:475::-;38423:16;;;38437:1;38423:16;;;;;;;;38399:21;;38423:16;;;;;;;;;;-1:-1:-1;38423:16:0;38399:40;;38468:4;38450;38455:1;38450:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;38450:23:0;;;:7;;;;;;;;;;:23;;;;38494:15;;:22;;;-1:-1:-1;;;38494:22:0;;;;:15;;;;;:20;;:22;;;;;38450:7;;38494:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;38484:4;38489:1;38484:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;38484:32:0;;;:7;;;;;;;;;:32;38561:15;;38529:62;;38546:4;;38561:15;38579:11;38529:8;:62::i;:::-;38604:15;;:196;;-1:-1:-1;;;38604:196:0;;-1:-1:-1;;;;;38604:15:0;;;;:66;;:196;;38685:11;;38604:15;;38727:4;;38754;;38774:15;;38604:196;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38388:420;38333:475;:::o;38816:370::-;38929:15;;38897:62;;38914:4;;-1:-1:-1;;;;;38929:15:0;38947:11;38897:8;:62::i;:::-;38972:15;;39122;;38972:206;;-1:-1:-1;;;38972:206:0;;39044:4;38972:206;;;25847:34:1;25897:18;;;25890:34;;;38972:15:0;25940:18:1;;;25933:34;;;25983:18;;;25976:34;-1:-1:-1;;;;;39122:15:0;;;26026:19:1;;;26019:44;39152:15:0;26079:19:1;;;26072:35;38972:15:0;;;:31;;39011:9;;25781:19:1;;38972:206:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;293:139:1:-;-1:-1:-1;;;;;376:31:1;;366:42;;356:70;;422:1;419;412:12;437:486;528:6;536;544;597:2;585:9;576:7;572:23;568:32;565:52;;;613:1;610;603:12;565:52;652:9;639:23;671:39;704:5;671:39;:::i;:::-;729:5;-1:-1:-1;786:2:1;771:18;;758:32;799:41;758:32;799:41;:::i;:::-;437:486;;859:7;;-1:-1:-1;;;913:2:1;898:18;;;;885:32;;437:486::o;1328:597::-;1440:4;1469:2;1498;1487:9;1480:21;1530:6;1524:13;1573:6;1568:2;1557:9;1553:18;1546:34;1598:1;1608:140;1622:6;1619:1;1616:13;1608:140;;;1717:14;;;1713:23;;1707:30;1683:17;;;1702:2;1679:26;1672:66;1637:10;;1608:140;;;1766:6;1763:1;1760:13;1757:91;;;1836:1;1831:2;1822:6;1811:9;1807:22;1803:31;1796:42;1757:91;-1:-1:-1;1909:2:1;1888:15;-1:-1:-1;;1884:29:1;1869:45;;;;1916:2;1865:54;;1328:597;-1:-1:-1;;;1328:597:1:o;1930:323::-;1998:6;2006;2059:2;2047:9;2038:7;2034:23;2030:32;2027:52;;;2075:1;2072;2065:12;2027:52;2114:9;2101:23;2133:39;2166:5;2133:39;:::i;:::-;2191:5;2243:2;2228:18;;;;2215:32;;-1:-1:-1;;;1930:323:1:o;2440:255::-;2499:6;2552:2;2540:9;2531:7;2527:23;2523:32;2520:52;;;2568:1;2565;2558:12;2520:52;2607:9;2594:23;2626:39;2659:5;2626:39;:::i;3879:180::-;3938:6;3991:2;3979:9;3970:7;3966:23;3962:32;3959:52;;;4007:1;4004;3997:12;3959:52;-1:-1:-1;4030:23:1;;3879:180;-1:-1:-1;3879:180:1:o;4253:118::-;4339:5;4332:13;4325:21;4318:5;4315:32;4305:60;;4361:1;4358;4351:12;4376:309;4441:6;4449;4502:2;4490:9;4481:7;4477:23;4473:32;4470:52;;;4518:1;4515;4508:12;4470:52;4554:9;4541:23;4531:33;;4614:2;4603:9;4599:18;4586:32;4627:28;4649:5;4627:28;:::i;:::-;4674:5;4664:15;;;4376:309;;;;;:::o;5026:454::-;5121:6;5129;5137;5145;5153;5206:3;5194:9;5185:7;5181:23;5177:33;5174:53;;;5223:1;5220;5213:12;5174:53;-1:-1:-1;;5246:23:1;;;5316:2;5301:18;;5288:32;;-1:-1:-1;5367:2:1;5352:18;;5339:32;;5418:2;5403:18;;5390:32;;-1:-1:-1;5469:3:1;5454:19;5441:33;;-1:-1:-1;5026:454:1;-1:-1:-1;5026:454:1:o;5485:390::-;5550:6;5558;5611:2;5599:9;5590:7;5586:23;5582:32;5579:52;;;5627:1;5624;5617:12;5579:52;5666:9;5653:23;5685:39;5718:5;5685:39;:::i;:::-;5743:5;-1:-1:-1;5800:2:1;5785:18;;5772:32;5813:30;5772:32;5813:30;:::i;5880:241::-;5936:6;5989:2;5977:9;5968:7;5964:23;5960:32;5957:52;;;6005:1;6002;5995:12;5957:52;6044:9;6031:23;6063:28;6085:5;6063:28;:::i;6126:404::-;6194:6;6202;6255:2;6243:9;6234:7;6230:23;6226:32;6223:52;;;6271:1;6268;6261:12;6223:52;6310:9;6297:23;6329:39;6362:5;6329:39;:::i;:::-;6387:5;-1:-1:-1;6444:2:1;6429:18;;6416:32;6457:41;6416:32;6457:41;:::i;7239:184::-;7309:6;7362:2;7350:9;7341:7;7337:23;7333:32;7330:52;;;7378:1;7375;7368:12;7330:52;-1:-1:-1;7401:16:1;;7239:184;-1:-1:-1;7239:184:1:o;7428:342::-;7630:2;7612:21;;;7669:2;7649:18;;;7642:30;-1:-1:-1;;;7703:2:1;7688:18;;7681:48;7761:2;7746:18;;7428:342::o;7775:245::-;7842:6;7895:2;7883:9;7874:7;7870:23;7866:32;7863:52;;;7911:1;7908;7901:12;7863:52;7943:9;7937:16;7962:28;7984:5;7962:28;:::i;8367:336::-;8569:2;8551:21;;;8608:2;8588:18;;;8581:30;-1:-1:-1;;;8642:2:1;8627:18;;8620:42;8694:2;8679:18;;8367:336::o;8708:::-;8910:2;8892:21;;;8949:2;8929:18;;;8922:30;-1:-1:-1;;;8983:2:1;8968:18;;8961:42;9035:2;9020:18;;8708:336::o;9049:399::-;9251:2;9233:21;;;9290:2;9270:18;;;9263:30;9329:34;9324:2;9309:18;;9302:62;-1:-1:-1;;;9395:2:1;9380:18;;9373:33;9438:3;9423:19;;9049:399::o;11778:127::-;11839:10;11834:3;11830:20;11827:1;11820:31;11870:4;11867:1;11860:15;11894:4;11891:1;11884:15;11910:127;11971:10;11966:3;11962:20;11959:1;11952:31;12002:4;11999:1;11992:15;12026:4;12023:1;12016:15;12042:125;12082:4;12110:1;12107;12104:8;12101:34;;;12115:18;;:::i;:::-;-1:-1:-1;12152:9:1;;12042:125::o;12172:127::-;12233:10;12228:3;12224:20;12221:1;12214:31;12264:4;12261:1;12254:15;12288:4;12285:1;12278:15;12304:135;12343:3;12364:17;;;12361:43;;12384:18;;:::i;:::-;-1:-1:-1;12431:1:1;12420:13;;12304:135::o;13557:128::-;13597:3;13628:1;13624:6;13621:1;13618:13;13615:39;;;13634:18;;:::i;:::-;-1:-1:-1;13670:9:1;;13557:128::o;14714:247::-;14466:12;;14454:25;;14528:4;14517:16;;14511:23;14504:4;14495:14;;14488:47;14584:4;14573:16;;14567:23;14560:4;14551:14;;14544:47;14640:4;14629:16;;14623:23;14616:4;14607:14;;14600:47;14696:4;14685:16;;14679:23;14672:4;14663:14;;14656:47;14891:3;14876:19;;14904:51;14386:323;22662:217;22702:1;22728;22718:132;;22772:10;22767:3;22763:20;22760:1;22753:31;22807:4;22804:1;22797:15;22835:4;22832:1;22825:15;22718:132;-1:-1:-1;22864:9:1;;22662:217::o;23628:168::-;23668:7;23734:1;23730;23726:6;23722:14;23719:1;23716:21;23711:1;23704:9;23697:17;23693:45;23690:71;;;23741:18;;:::i;:::-;-1:-1:-1;23781:9:1;;23628:168::o;24257:259::-;24327:6;24380:2;24368:9;24359:7;24355:23;24351:32;24348:52;;;24396:1;24393;24386:12;24348:52;24428:9;24422:16;24447:39;24480:5;24447:39;:::i;24521:980::-;24783:4;24831:3;24820:9;24816:19;24862:6;24851:9;24844:25;24888:2;24926:6;24921:2;24910:9;24906:18;24899:34;24969:3;24964:2;24953:9;24949:18;24942:31;24993:6;25028;25022:13;25059:6;25051;25044:22;25097:3;25086:9;25082:19;25075:26;;25136:2;25128:6;25124:15;25110:29;;25157:1;25167:195;25181:6;25178:1;25175:13;25167:195;;;25246:13;;-1:-1:-1;;;;;25242:39:1;25230:52;;25337:15;;;;25302:12;;;;25278:1;25196:9;25167:195;;;-1:-1:-1;;;;;;;25418:32:1;;;;25413:2;25398:18;;25391:60;-1:-1:-1;;;25482:3:1;25467:19;25460:35;25379:3;24521:980;-1:-1:-1;;;24521:980:1:o;26118:306::-;26206:6;26214;26222;26275:2;26263:9;26254:7;26250:23;26246:32;26243:52;;;26291:1;26288;26281:12;26243:52;26320:9;26314:16;26304:26;;26370:2;26359:9;26355:18;26349:25;26339:35;;26414:2;26403:9;26399:18;26393:25;26383:35;;26118:306;;;;;:::o
Swarm Source
ipfs://8b76c3abc8074058bd6eb1af9b97726ea5880cc2726e3f0ccfef8a5a2659b821
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.