ERC-20
Overview
Max Total Supply
100,000,000,000 BABYNAMI
Holders
6
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
0.000000001 BABYNAMIValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
BabyNami
Compiler Version
v0.8.9+commit.e5eed63a
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-12-20 */ /* MetaNami is a mooner This will moon https://t.me/BabyMetaNami */ pragma solidity ^0.8.9; /** * @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 pure virtual returns (bytes calldata) { return msg.data; } } /** * @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 Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _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); } } /** * SPDX-License-Identifier: MIT * * Copyright (c) 2020 CENTRE SECZ * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ interface IDexFactory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } interface IDexRouter01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IDexRouter02 is IDexRouter01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract BabyNami is Context, Ownable { using Address for address; string private _name = "Baby Nami"; string private _symbol = "BABYNAMI"; uint8 private _decimals = 9; mapping(address => uint256) private _rOwned; mapping(address => uint256) private _tOwned; mapping(address => mapping(address => uint256)) private _allowances; address[] private _excluded; mapping(address => bool) private _isExcludedFromRewards; mapping(address => bool) private _taxWhitelist; mapping(address => bool) private _liqProvWhitelist; address public marketingWallet; address public liquidityWallet; uint256 private constant MAX = type(uint256).max; uint256 private _tTotal = 100_000_000_000 * (10 ** _decimals); uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; address public burnAddress = 0x000000000000000000000000000000000000dEaD; mapping (address => bool) public liquidityPools; address public pair; IDexRouter02 public router; bool public swapAndLiquifyEnabled = true; bool public inSwap = false; uint256 public _taxFee = 10; uint256 private _previousTaxFee = _taxFee; uint256 public totalFeesToLP = 20; uint256 public totalFeesToMarketing = 70; uint256 public totalFeesToBurn = 0; uint256 public _liquidityFee = 10; uint256 private _previousLiquidityFee = _liquidityFee; uint256 public sellBias = 10; uint256 public previousSellBias = sellBias; uint256 public minTokenNumberToSell = _tTotal / 10000; bool public liquidityLaunched = false; event Transfer(address indexed from, address indexed to, uint256 value); event Approval( address indexed owner, address indexed spender, uint256 value ); modifier swapping() { inSwap = true; _; inSwap = false; } constructor(address _marketing) { _tOwned[msg.sender] = _tTotal; _rOwned[msg.sender] = _rTotal; address routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; router = IDexRouter02(routerAddress); pair = IDexFactory(router.factory()).createPair( address(this), router.WETH() ); liquidityPools[pair] = true; marketingWallet = _marketing; liquidityWallet = msg.sender; _taxWhitelist[msg.sender] = true; _liqProvWhitelist[msg.sender] = true; _taxWhitelist[_marketing] = true; _taxWhitelist[address(this)] = true; _isExcludedFromRewards[address(this)] = true; _excluded.push(address(this)); _isExcludedFromRewards[pair] = true; _excluded.push(pair); _approve(address(this), routerAddress, _tTotal); _approve(msg.sender, routerAddress, _tTotal); emit Transfer(address(0), _msgSender(), _tTotal); } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } function totalSupply() public view returns (uint256) { return _tTotal; } function balanceOf(address account) public view returns (uint256) { if (_isExcludedFromRewards[account]) return _tOwned[account]; return tokenFromReflection(_rOwned[account]); } function isExcludedFromReward(address account) public view returns (bool) { return _isExcludedFromRewards[account]; } function excludeFromReward(address account) public onlyOwner { require( !_isExcludedFromRewards[account], "Account is already excluded" ); if (_rOwned[account] > 0) { _tOwned[account] = tokenFromReflection(_rOwned[account]); } _isExcludedFromRewards[account] = true; _excluded.push(account); } function includeInReward(address account) public onlyOwner { require(_isExcludedFromRewards[account], "Account is not excluded"); for (uint256 i = 0; i < _excluded.length; i++) { if (_excluded[i] == account) { _excluded[i] = _excluded[_excluded.length - 1]; _tOwned[account] = 0; _isExcludedFromRewards[account] = false; _excluded.pop(); break; } } } function allowance(address _owner, address spender) public view returns (uint256) { return _allowances[_owner][spender]; } function totalFees() public view returns (uint256) { return _tFeeTotal; } function approve(address spender, uint256 amount) public returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transfer(address recipient, uint256 amount) public returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public returns (bool) { _transfer(sender, recipient, amount); _approve( sender, _msgSender(), _allowances[sender][_msgSender()] - amount ); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender] + addedValue ); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender] - subtractedValue ); return true; } function tokenFromReflection(uint256 rAmount) public view returns (uint256) { require(rAmount <= _rTotal, "Amount must < total reflections"); uint256 currentRate = _getRate(); return rAmount / currentRate; } function setAccountWhitelisted(address account, bool whitelisted) public onlyOwner { _taxWhitelist[account] = whitelisted; } function setTaxFeePercent(uint256 taxFee) external onlyOwner { _taxFee = taxFee; _previousTaxFee = _taxFee; } function setBNBFeePercent(uint256 totalBNBFee, uint256 _marketingFee, uint256 _lpFee, uint256 _burnFee, uint256 _sellbias) external onlyOwner { _liquidityFee = totalBNBFee; _previousLiquidityFee = _liquidityFee; totalFeesToLP = _lpFee; totalFeesToMarketing = _marketingFee; totalFeesToBurn = _burnFee; sellBias = _sellbias; previousSellBias = sellBias; require(totalFeesToLP + totalFeesToMarketing + totalFeesToBurn <= _liquidityFee); } function setAmountToSell(uint256 _divisor) external onlyOwner { minTokenNumberToSell = _tTotal / _divisor; } function setMarketingWallet(address _newAddress) external onlyOwner { marketingWallet = _newAddress; } function setLiquidityWallet(address _newAddress) external onlyOwner { liquidityWallet = _newAddress; } function setLiqidityProviderWhitelisted(address _address, bool _whitelisted) external onlyOwner { _liqProvWhitelist[_address] = _whitelisted; _taxWhitelist[_address] = _whitelisted; // tax whitelists LPs to avoid tax on initial LP if (_whitelisted) excludeFromReward(_address); else includeInReward(_address); } // view function for LP whitelist address values as set above function getLPWhitelisted(address _account) external view returns (bool) { return _liqProvWhitelist[_account]; } function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner { swapAndLiquifyEnabled = _enabled; } function addLiquidityPool(address lp, bool isPool) external onlyOwner { liquidityPools[lp] = isPool; excludeFromReward(lp); } function updateRouter(address _market) external onlyOwner { router = IDexRouter02(_market); } receive() external payable {} function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal - rFee; _tFeeTotal = _tFeeTotal + tFee; } function _getValues(uint256 tAmount, bool selling) private view returns ( uint256, uint256, uint256, uint256, uint256, uint256 ) { ( uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity ) = _getTValues(tAmount, selling); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues( tAmount, tFee, tLiquidity, _getRate() ); return ( rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tLiquidity ); } function _getTValues(uint256 tAmount, bool selling) private view returns ( uint256, uint256, uint256 ) { uint256 tFee = calculateTaxFee(tAmount, selling); uint256 tLiquidity = calculateLiquidityFee(tAmount, selling); uint256 tTransferAmount = tAmount - (tFee + tLiquidity); return (tTransferAmount, tFee, tLiquidity); } function _getRValues( uint256 tAmount, uint256 tFee, uint256 tLiquidity, uint256 currentRate ) private pure returns ( uint256, uint256, uint256 ) { uint256 rAmount = tAmount * currentRate; uint256 rFee = tFee * currentRate; uint256 rLiquidity = tLiquidity * currentRate; uint256 rTransferAmount = rAmount - (rFee + rLiquidity); return (rAmount, rTransferAmount, rFee); } function _getRate() public view returns (uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply / tSupply; } function _getCurrentSupply() private view returns (uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; for (uint256 i = 0; i < _excluded.length; i++) { if ( _rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply ) return (_rTotal, _tTotal); rSupply -= _rOwned[_excluded[i]]; tSupply -= _tOwned[_excluded[i]]; } if (rSupply < _rTotal / _tTotal) return (_rTotal, _tTotal); return (rSupply, tSupply); } function _takeLiquidity(uint256 tLiquidity) private { uint256 currentRate = _getRate(); uint256 rLiquidity = tLiquidity * currentRate; uint256 tBurn = (tLiquidity * totalFeesToBurn) / _liquidityFee; uint256 rBurn = tBurn * currentRate; tLiquidity -= tBurn; rLiquidity -= rBurn; _rOwned[address(this)] += rLiquidity; if (_isExcludedFromRewards[address(this)]) _tOwned[address(this)] += tLiquidity; if (tBurn > 0) { _rOwned[burnAddress] += rBurn; if (_isExcludedFromRewards[burnAddress]) _tOwned[burnAddress] += tBurn; emit Transfer(address(this), burnAddress, tBurn); } } function calculateTaxFee(uint256 _amount, bool selling) private view returns (uint256) { if (!selling) return 0; return (_amount * _taxFee) / 1000; } function calculateLiquidityFee(uint256 _amount, bool selling) private view returns (uint256) { return (_amount * (selling ? _liquidityFee + sellBias : _liquidityFee - sellBias )) / 1000; } function removeAllFee() private { if (_taxFee == 0 && _liquidityFee == 0) return; _previousTaxFee = _taxFee; _previousLiquidityFee = _liquidityFee; previousSellBias = sellBias; _taxFee = 0; _liquidityFee = 0; sellBias = 0; } function restoreAllFee() private { _taxFee = _previousTaxFee; _liquidityFee = _previousLiquidityFee; sellBias = previousSellBias; } function isWhitelisted(address account) public view returns (bool) { return _taxWhitelist[account]; } function _approve( address _owner, address spender, uint256 amount ) internal { require(_owner != address(0), "BEP20: approve from zero address"); require(spender != address(0), "BEP20: approve to zero address"); _allowances[_owner][spender] = amount; emit Approval(_owner, spender, amount); } function _transfer( address from, address to, uint256 amount ) private { require(from != address(0), "BEP20: transfer from 0x0"); require(to != address(0), "BEP20: transfer to 0x0"); require(amount > 0, "Amount must be > zero"); if (!liquidityLaunched) { if (_liqProvWhitelist[from] && liquidityPools[to]) { liquidityLaunched = true; } else { require(_liqProvWhitelist[from] || _liqProvWhitelist[to], "Liquidity not launched yet"); } } if (shouldSwap(to)) swapAndLiquify(); bool takeFee = true; if (_taxWhitelist[from] || _taxWhitelist[to]) { takeFee = false; } _tokenTransfer(from, to, amount, takeFee); } function _tokenTransfer( address sender, address recipient, uint256 amount, bool takeFee ) private { if (!takeFee) removeAllFee(); _transferStandard(sender, recipient, amount); if (!takeFee) restoreAllFee(); } function _transferStandard( address sender, address recipient, uint256 tAmount ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity ) = _getValues(tAmount, liquidityPools[recipient]); _rOwned[sender] -= rAmount; if (_isExcludedFromRewards[sender]) _tOwned[sender] -= tAmount; if (_isExcludedFromRewards[recipient]) _tOwned[recipient] += tTransferAmount; _rOwned[recipient] += rTransferAmount; if(tLiquidity > 0) _takeLiquidity(tLiquidity); if(rFee > 0 || tFee > 0) _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function shouldSwap(address to) internal view returns(bool) { return !inSwap && swapAndLiquifyEnabled && balanceOf(address(this)) >= minTokenNumberToSell && !liquidityPools[msg.sender] && liquidityPools[to] && _liquidityFee > 0; } function swapAndLiquify() internal swapping { uint256 swapFees = _liquidityFee - totalFeesToBurn; uint256 tokensForLP = ((minTokenNumberToSell * totalFeesToLP) / swapFees) / 2; swapTokensForEth( minTokenNumberToSell - tokensForLP ); uint256 toBeAddedToLiquidity = ((address(this).balance * totalFeesToLP) / (swapFees - totalFeesToLP / 2)) / 2; if (toBeAddedToLiquidity > 0) addLiquidity(liquidityWallet, tokensForLP, toBeAddedToLiquidity); uint256 toBeAddedToMarketing = address(this).balance - toBeAddedToLiquidity; if (toBeAddedToMarketing > 0) { payable(marketingWallet).transfer(toBeAddedToMarketing); } } function swapTokensForEth( uint256 tokenAmount ) internal { address[] memory path = new address[](2); path[0] = address(this); path[1] = router.WETH(); router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function addLiquidity( address owner, uint256 tokenAmount, uint256 ethAmount ) internal { router.addLiquidityETH{value : ethAmount}( address(this), tokenAmount, 0, 0, owner, block.timestamp + 360 ); } function airdrop(address[] calldata _addresses, uint256[] calldata _amount) external onlyOwner { require(_addresses.length == _amount.length); bool previousSwap = swapAndLiquifyEnabled; swapAndLiquifyEnabled = false; for (uint256 i = 0; i < _addresses.length; i++) { require(!liquidityPools[_addresses[i]]); _transfer(msg.sender, _addresses[i], _amount[i] * (10 ** _decimals)); } swapAndLiquifyEnabled = previousSwap; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_marketing","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_getRate","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":"_taxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"lp","type":"address"},{"internalType":"bool","name":"isPool","type":"bool"}],"name":"addLiquidityPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"},{"internalType":"uint256[]","name":"_amount","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"getLPWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"inSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityLaunched","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"liquidityPools","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minTokenNumberToSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"previousSellBias","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDexRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellBias","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"whitelisted","type":"bool"}],"name":"setAccountWhitelisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_divisor","type":"uint256"}],"name":"setAmountToSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"totalBNBFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_lpFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"},{"internalType":"uint256","name":"_sellbias","type":"uint256"}],"name":"setBNBFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_whitelisted","type":"bool"}],"name":"setLiqidityProviderWhitelisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newAddress","type":"address"}],"name":"setLiquidityWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newAddress","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"setTaxFeePercent","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":[{"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":"totalFeesToBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFeesToLP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFeesToMarketing","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":[{"internalType":"address","name":"_market","type":"address"}],"name":"updateRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526040518060400160405280600981526020017f42616279204e616d690000000000000000000000000000000000000000000000815250600190805190602001906200005192919062000cda565b506040518060400160405280600881526020017f424142594e414d49000000000000000000000000000000000000000000000000815250600290805190602001906200009f92919062000cda565b506009600360006101000a81548160ff021916908360ff160217905550600360009054906101000a900460ff16600a620000da919062000f24565b64174876e800620000ec919062000f75565b600d55600d547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6200011f919062001005565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6200014c91906200103d565b600e5561dead601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601360146101000a81548160ff0219169083151502179055506000601360156101000a81548160ff021916908315150217905550600a601455601454601555601460165560466017556000601855600a601955601954601a55600a601b55601b54601c55612710600d546200020a919062001078565b601d556000601e60006101000a81548160ff0219169083151502179055503480156200023557600080fd5b50604051620061053803806200610583398181016040528101906200025b91906200111a565b6200027b6200026f62000a3b60201b60201c565b62000a4360201b60201c565b600d54600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600e54600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620003ca57600080fd5b505afa158015620003df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200040591906200111a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200048a57600080fd5b505afa1580156200049f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004c591906200111a565b6040518363ffffffff1660e01b8152600401620004e49291906200115d565b602060405180830381600087803b158015620004ff57600080fd5b505af115801562000514573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200053a91906200111a565b601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160116000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555081600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506007309080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160086000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506007601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620009a53082600d5462000b0760201b60201c565b620009ba3382600d5462000b0760201b60201c565b620009ca62000a3b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600d5460405162000a2b91906200119b565b60405180910390a3505062001312565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141562000b7a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b719062001219565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000bed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000be4906200128b565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000ccd91906200119b565b60405180910390a3505050565b82805462000ce890620012dc565b90600052602060002090601f01602090048101928262000d0c576000855562000d58565b82601f1062000d2757805160ff191683800117855562000d58565b8280016001018555821562000d58579182015b8281111562000d5757825182559160200191906001019062000d3a565b5b50905062000d67919062000d6b565b5090565b5b8082111562000d8657600081600090555060010162000d6c565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000e185780860481111562000df05762000def62000d8a565b5b600185161562000e005780820291505b808102905062000e108562000db9565b945062000dd0565b94509492505050565b60008262000e33576001905062000f06565b8162000e43576000905062000f06565b816001811462000e5c576002811462000e675762000e9d565b600191505062000f06565b60ff84111562000e7c5762000e7b62000d8a565b5b8360020a91508482111562000e965762000e9562000d8a565b5b5062000f06565b5060208310610133831016604e8410600b841016171562000ed75782820a90508381111562000ed15762000ed062000d8a565b5b62000f06565b62000ee6848484600162000dc6565b9250905081840481111562000f005762000eff62000d8a565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000f318262000f0d565b915062000f3e8362000f17565b925062000f6d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000e21565b905092915050565b600062000f828262000f0d565b915062000f8f8362000f0d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000fcb5762000fca62000d8a565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620010128262000f0d565b91506200101f8362000f0d565b92508262001032576200103162000fd6565b5b828206905092915050565b60006200104a8262000f0d565b9150620010578362000f0d565b9250828210156200106d576200106c62000d8a565b5b828203905092915050565b6000620010858262000f0d565b9150620010928362000f0d565b925082620010a557620010a462000fd6565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620010e282620010b5565b9050919050565b620010f481620010d5565b81146200110057600080fd5b50565b6000815190506200111481620010e9565b92915050565b600060208284031215620011335762001132620010b0565b5b6000620011438482850162001103565b91505092915050565b6200115781620010d5565b82525050565b60006040820190506200117460008301856200114c565b6200118360208301846200114c565b9392505050565b620011958162000f0d565b82525050565b6000602082019050620011b260008301846200118a565b92915050565b600082825260208201905092915050565b7f42455032303a20617070726f76652066726f6d207a65726f2061646472657373600082015250565b600062001201602083620011b8565b91506200120e82620011c9565b602082019050919050565b600060208201905081810360008301526200123481620011f2565b9050919050565b7f42455032303a20617070726f766520746f207a65726f20616464726573730000600082015250565b600062001273601e83620011b8565b915062001280826200123b565b602082019050919050565b60006020820190508181036000830152620012a68162001264565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620012f557607f821691505b602082108114156200130c576200130b620012ad565b5b50919050565b614de380620013226000396000f3fe6080604052600436106102cd5760003560e01c806370d5ae0511610175578063a457c2d7116100dc578063d14e52f411610095578063dd62ed3e1161006f578063dd62ed3e14610b2d578063ee789f8314610b6a578063f2fde38b14610b93578063f887ea4014610bbc576102d4565b8063d14e52f414610aae578063d469801614610ad7578063d830678614610b02576102d4565b8063a457c2d71461098e578063a7f01258146109cb578063a8aa1b31146109f4578063a9059cbb14610a1f578063c49b9a8014610a5c578063c851cc3214610a85576102d4565b80638f809b4a1161012e5780638f809b4a1461087a57806393110697146108b757806394e10784146108e257806395d89b411461090d578063a021324e14610938578063a317234014610963576102d4565b806370d5ae051461077a578063715018a6146107a557806375f0a874146107bc5780637a091849146107e757806388f82020146108125780638da5cb5b1461084f576102d4565b80633685d4191161023457806352390c02116101ed5780635d098b38116101c75780635d098b38146106c057806367243482146106e95780636bc87c3a1461071257806370a082311461073d576102d4565b806352390c021461064357806359a3ed911461066c57806359f8160b14610697576102d4565b80633685d41914610521578063395093511461054a5780633af32abf146105875780633b124fe7146105c4578063492a937b146105ef5780634a74bb0214610618576102d4565b80631e8c260d116102865780631e8c260d146103fd5780631eb147d51461042857806323b872dd14610453578063296f0a0c146104905780632d838119146104b9578063313ce567146104f6576102d4565b8063061c82d0146102d957806306fdde0314610302578063095ea7b31461032d5780630b0fd47e1461036a57806313114a9d146103a757806318160ddd146103d2576102d4565b366102d457005b600080fd5b3480156102e557600080fd5b5061030060048036038101906102fb9190613c8c565b610be7565b005b34801561030e57600080fd5b50610317610c76565b6040516103249190613d52565b60405180910390f35b34801561033957600080fd5b50610354600480360381019061034f9190613dd2565b610d08565b6040516103619190613e2d565b60405180910390f35b34801561037657600080fd5b50610391600480360381019061038c9190613e48565b610d26565b60405161039e9190613e2d565b60405180910390f35b3480156103b357600080fd5b506103bc610d46565b6040516103c99190613e84565b60405180910390f35b3480156103de57600080fd5b506103e7610d50565b6040516103f49190613e84565b60405180910390f35b34801561040957600080fd5b50610412610d5a565b60405161041f9190613e84565b60405180910390f35b34801561043457600080fd5b5061043d610d60565b60405161044a9190613e2d565b60405180910390f35b34801561045f57600080fd5b5061047a60048036038101906104759190613e9f565b610d73565b6040516104879190613e2d565b60405180910390f35b34801561049c57600080fd5b506104b760048036038101906104b29190613e48565b610e2b565b005b3480156104c557600080fd5b506104e060048036038101906104db9190613c8c565b610eeb565b6040516104ed9190613e84565b60405180910390f35b34801561050257600080fd5b5061050b610f52565b6040516105189190613f0e565b60405180910390f35b34801561052d57600080fd5b5061054860048036038101906105439190613e48565b610f69565b005b34801561055657600080fd5b50610571600480360381019061056c9190613dd2565b61129f565b60405161057e9190613e2d565b60405180910390f35b34801561059357600080fd5b506105ae60048036038101906105a99190613e48565b61134b565b6040516105bb9190613e2d565b60405180910390f35b3480156105d057600080fd5b506105d96113a1565b6040516105e69190613e84565b60405180910390f35b3480156105fb57600080fd5b5061061660048036038101906106119190613f55565b6113a7565b005b34801561062457600080fd5b5061062d611487565b60405161063a9190613e2d565b60405180910390f35b34801561064f57600080fd5b5061066a60048036038101906106659190613e48565b61149a565b005b34801561067857600080fd5b50610681611735565b60405161068e9190613e84565b60405180910390f35b3480156106a357600080fd5b506106be60048036038101906106b99190613f55565b61173b565b005b3480156106cc57600080fd5b506106e760048036038101906106e29190613e48565b611812565b005b3480156106f557600080fd5b50610710600480360381019061070b9190614050565b6118d2565b005b34801561071e57600080fd5b50610727611ac1565b6040516107349190613e84565b60405180910390f35b34801561074957600080fd5b50610764600480360381019061075f9190613e48565b611ac7565b6040516107719190613e84565b60405180910390f35b34801561078657600080fd5b5061078f611bb2565b60405161079c91906140e0565b60405180910390f35b3480156107b157600080fd5b506107ba611bd8565b005b3480156107c857600080fd5b506107d1611c60565b6040516107de91906140e0565b60405180910390f35b3480156107f357600080fd5b506107fc611c86565b6040516108099190613e84565b60405180910390f35b34801561081e57600080fd5b5061083960048036038101906108349190613e48565b611c8c565b6040516108469190613e2d565b60405180910390f35b34801561085b57600080fd5b50610864611ce2565b60405161087191906140e0565b60405180910390f35b34801561088657600080fd5b506108a1600480360381019061089c9190613e48565b611d0b565b6040516108ae9190613e2d565b60405180910390f35b3480156108c357600080fd5b506108cc611d61565b6040516108d99190613e84565b60405180910390f35b3480156108ee57600080fd5b506108f7611d67565b6040516109049190613e84565b60405180910390f35b34801561091957600080fd5b50610922611d8b565b60405161092f9190613d52565b60405180910390f35b34801561094457600080fd5b5061094d611e1d565b60405161095a9190613e84565b60405180910390f35b34801561096f57600080fd5b50610978611e23565b6040516109859190613e84565b60405180910390f35b34801561099a57600080fd5b506109b560048036038101906109b09190613dd2565b611e29565b6040516109c29190613e2d565b60405180910390f35b3480156109d757600080fd5b506109f260048036038101906109ed9190613c8c565b611ed5565b005b348015610a0057600080fd5b50610a09611f68565b604051610a1691906140e0565b60405180910390f35b348015610a2b57600080fd5b50610a466004803603810190610a419190613dd2565b611f8e565b604051610a539190613e2d565b60405180910390f35b348015610a6857600080fd5b50610a836004803603810190610a7e91906140fb565b611fac565b005b348015610a9157600080fd5b50610aac6004803603810190610aa79190613e48565b612045565b005b348015610aba57600080fd5b50610ad56004803603810190610ad09190613f55565b612105565b005b348015610ae357600080fd5b50610aec612251565b604051610af991906140e0565b60405180910390f35b348015610b0e57600080fd5b50610b17612277565b604051610b249190613e2d565b60405180910390f35b348015610b3957600080fd5b50610b546004803603810190610b4f9190614128565b61228a565b604051610b619190613e84565b60405180910390f35b348015610b7657600080fd5b50610b916004803603810190610b8c9190614168565b612311565b005b348015610b9f57600080fd5b50610bba6004803603810190610bb59190613e48565b6123f4565b005b348015610bc857600080fd5b50610bd16124ec565b604051610bde9190614242565b60405180910390f35b610bef612512565b73ffffffffffffffffffffffffffffffffffffffff16610c0d611ce2565b73ffffffffffffffffffffffffffffffffffffffff1614610c63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5a906142a9565b60405180910390fd5b8060148190555060145460158190555050565b606060018054610c85906142f8565b80601f0160208091040260200160405190810160405280929190818152602001828054610cb1906142f8565b8015610cfe5780601f10610cd357610100808354040283529160200191610cfe565b820191906000526020600020905b815481529060010190602001808311610ce157829003601f168201915b5050505050905090565b6000610d1c610d15612512565b848461251a565b6001905092915050565b60116020528060005260406000206000915054906101000a900460ff1681565b6000600f54905090565b6000600d54905090565b601c5481565b601e60009054906101000a900460ff1681565b6000610d808484846126e5565b610e2084610d8c612512565b84600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610dd6612512565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e1b9190614359565b61251a565b600190509392505050565b610e33612512565b73ffffffffffffffffffffffffffffffffffffffff16610e51611ce2565b73ffffffffffffffffffffffffffffffffffffffff1614610ea7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9e906142a9565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600e54821115610f32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f29906143d9565b60405180910390fd5b6000610f3c611d67565b90508083610f4a9190614428565b915050919050565b6000600360009054906101000a900460ff16905090565b610f71612512565b73ffffffffffffffffffffffffffffffffffffffff16610f8f611ce2565b73ffffffffffffffffffffffffffffffffffffffff1614610fe5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdc906142a9565b60405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611071576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611068906144a5565b60405180910390fd5b60005b60078054905081101561129b578173ffffffffffffffffffffffffffffffffffffffff16600782815481106110ac576110ab6144c5565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561128857600760016007805490506111079190614359565b81548110611118576111176144c5565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660078281548110611157576111566144c5565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600780548061124e5761124d6144f4565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905561129b565b808061129390614523565b915050611074565b5050565b60006113416112ac612512565b8484600660006112ba612512565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461133c919061456c565b61251a565b6001905092915050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60145481565b6113af612512565b73ffffffffffffffffffffffffffffffffffffffff166113cd611ce2565b73ffffffffffffffffffffffffffffffffffffffff1614611423576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141a906142a9565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506114838261149a565b5050565b601360149054906101000a900460ff1681565b6114a2612512565b73ffffffffffffffffffffffffffffffffffffffff166114c0611ce2565b73ffffffffffffffffffffffffffffffffffffffff1614611516576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150d906142a9565b60405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156115a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159a9061460e565b60405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111561167757611633600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610eeb565b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506007819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60165481565b611743612512565b73ffffffffffffffffffffffffffffffffffffffff16611761611ce2565b73ffffffffffffffffffffffffffffffffffffffff16146117b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ae906142a9565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61181a612512565b73ffffffffffffffffffffffffffffffffffffffff16611838611ce2565b73ffffffffffffffffffffffffffffffffffffffff161461188e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611885906142a9565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6118da612512565b73ffffffffffffffffffffffffffffffffffffffff166118f8611ce2565b73ffffffffffffffffffffffffffffffffffffffff161461194e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611945906142a9565b60405180910390fd5b81819050848490501461196057600080fd5b6000601360149054906101000a900460ff1690506000601360146101000a81548160ff02191690831515021790555060005b85859050811015611a9f57601160008787848181106119b4576119b36144c5565b5b90506020020160208101906119c99190613e48565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611a1b57600080fd5b611a8c33878784818110611a3257611a316144c5565b5b9050602002016020810190611a479190613e48565b600360009054906101000a900460ff16600a611a639190614761565b878786818110611a7657611a756144c5565b5b90506020020135611a8791906147ac565b6126e5565b8080611a9790614523565b915050611992565b5080601360146101000a81548160ff0219169083151502179055505050505050565b60195481565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611b6257600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611bad565b611baa600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610eeb565b90505b919050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611be0612512565b73ffffffffffffffffffffffffffffffffffffffff16611bfe611ce2565b73ffffffffffffffffffffffffffffffffffffffff1614611c54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4b906142a9565b60405180910390fd5b611c5e6000612a9f565b565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601d5481565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60185481565b6000806000611d74612b63565b915091508082611d849190614428565b9250505090565b606060028054611d9a906142f8565b80601f0160208091040260200160405190810160405280929190818152602001828054611dc6906142f8565b8015611e135780601f10611de857610100808354040283529160200191611e13565b820191906000526020600020905b815481529060010190602001808311611df657829003601f168201915b5050505050905090565b60175481565b601b5481565b6000611ecb611e36612512565b848460066000611e44612512565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ec69190614359565b61251a565b6001905092915050565b611edd612512565b73ffffffffffffffffffffffffffffffffffffffff16611efb611ce2565b73ffffffffffffffffffffffffffffffffffffffff1614611f51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f48906142a9565b60405180910390fd5b80600d54611f5f9190614428565b601d8190555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611fa2611f9b612512565b84846126e5565b6001905092915050565b611fb4612512565b73ffffffffffffffffffffffffffffffffffffffff16611fd2611ce2565b73ffffffffffffffffffffffffffffffffffffffff1614612028576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201f906142a9565b60405180910390fd5b80601360146101000a81548160ff02191690831515021790555050565b61204d612512565b73ffffffffffffffffffffffffffffffffffffffff1661206b611ce2565b73ffffffffffffffffffffffffffffffffffffffff16146120c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b8906142a9565b60405180910390fd5b80601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61210d612512565b73ffffffffffffffffffffffffffffffffffffffff1661212b611ce2565b73ffffffffffffffffffffffffffffffffffffffff1614612181576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612178906142a9565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080156122435761223e8261149a565b61224d565b61224c82610f69565b5b5050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601360159054906101000a900460ff1681565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612319612512565b73ffffffffffffffffffffffffffffffffffffffff16612337611ce2565b73ffffffffffffffffffffffffffffffffffffffff161461238d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612384906142a9565b60405180910390fd5b84601981905550601954601a8190555082601681905550836017819055508160188190555080601b81905550601b54601c819055506019546018546017546016546123d8919061456c565b6123e2919061456c565b11156123ed57600080fd5b5050505050565b6123fc612512565b73ffffffffffffffffffffffffffffffffffffffff1661241a611ce2565b73ffffffffffffffffffffffffffffffffffffffff1614612470576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612467906142a9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156124e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d790614878565b60405180910390fd5b6124e981612a9f565b50565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561258a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612581906148e4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156125fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f190614950565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516126d89190613e84565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612755576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274c906149bc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156127c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127bc90614a28565b60405180910390fd5b60008111612808576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ff90614a94565b60405180910390fd5b601e60009054906101000a900460ff166129c557600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156128be5750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156128e3576001601e60006101000a81548160ff0219169083151502179055506129c4565b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806129845750600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6129c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129ba90614b00565b60405180910390fd5b5b5b6129ce82612e01565b156129dc576129db612f02565b5b600060019050600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612a835750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612a8d57600090505b612a998484848461308e565b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000806000600e5490506000600d54905060005b600780549050811015612dcb57826004600060078481548110612b9d57612b9c6144c5565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180612c8b5750816005600060078481548110612c2357612c226144c5565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15612ca257600e54600d5494509450505050612dfd565b6004600060078381548110612cba57612cb96144c5565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483612d2b9190614359565b92506005600060078381548110612d4557612d446144c5565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482612db69190614359565b91508080612dc390614523565b915050612b77565b50600d54600e54612ddc9190614428565b821015612df457600e54600d54935093505050612dfd565b81819350935050505b9091565b6000601360159054906101000a900460ff16158015612e2c5750601360149054906101000a900460ff165b8015612e425750601d54612e3f30611ac7565b10155b8015612e985750601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612eed5750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8015612efb57506000601954115b9050919050565b6001601360156101000a81548160ff0219169083151502179055506000601854601954612f2f9190614359565b90506000600282601654601d54612f4691906147ac565b612f509190614428565b612f5a9190614428565b9050612f7281601d54612f6d9190614359565b6130bb565b6000600280601654612f849190614428565b84612f8f9190614359565b60165447612f9d91906147ac565b612fa79190614428565b612fb19190614428565b90506000811115612fea57612fe9600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683836132e0565b5b60008147612ff89190614359565b9050600081111561306d57600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561306b573d6000803e3d6000fd5b505b505050506000601360156101000a81548160ff021916908315150217905550565b8061309c5761309b6133ae565b5b6130a7848484613402565b806130b5576130b461370d565b5b50505050565b6000600267ffffffffffffffff8111156130d8576130d7614b20565b5b6040519080825280602002602001820160405280156131065781602001602082028036833780820191505090505b509050308160008151811061311e5761311d6144c5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156131c057600080fd5b505afa1580156131d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131f89190614b64565b8160018151811061320c5761320b6144c5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016132aa959493929190614c8a565b600060405180830381600087803b1580156132c457600080fd5b505af11580156132d8573d6000803e3d6000fd5b505050505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000808961016842613333919061456c565b6040518863ffffffff1660e01b815260040161335496959493929190614ce4565b6060604051808303818588803b15801561336d57600080fd5b505af1158015613381573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906133a69190614d5a565b505050505050565b60006014541480156133c257506000601954145b156133cc57613400565b601454601581905550601954601a81905550601b54601c81905550600060148190555060006019819055506000601b819055505b565b60008060008060008061346187601160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661372a565b95509550955095509550955085600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546134bc9190614359565b92505081905550600860008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561356c5786600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546135649190614359565b925050819055505b600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156136155782600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461360d919061456c565b925050819055505b84600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613664919061456c565b92505081905550600081111561367e5761367d81613788565b5b600084118061368d5750600082115b1561369d5761369c8483613aeb565b5b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516136fa9190613e84565b60405180910390a3505050505050505050565b601554601481905550601a54601981905550601c54601b81905550565b60008060008060008060008060006137428b8b613b17565b92509250925060008060006137608e868661375b611d67565b613b65565b9250925092508282828888889b509b509b509b509b509b505050505050509295509295509295565b6000613792611d67565b9050600081836137a291906147ac565b90506000601954601854856137b791906147ac565b6137c19190614428565b9050600083826137d191906147ac565b905081856137df9190614359565b945080836137ed9190614359565b925082600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461383e919061456c565b92505081905550600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156138ee5784600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546138e6919061456c565b925050819055505b6000821115613ae4578060046000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613968919061456c565b9250508190555060086000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613a5c578160056000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613a54919061456c565b925050819055505b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613adb9190613e84565b60405180910390a35b5050505050565b81600e54613af99190614359565b600e8190555080600f54613b0d919061456c565b600f819055505050565b600080600080613b278686613bcb565b90506000613b358787613bff565b905060008183613b45919061456c565b88613b509190614359565b90508083839550955095505050509250925092565b6000806000808488613b7791906147ac565b905060008588613b8791906147ac565b905060008688613b9791906147ac565b905060008183613ba7919061456c565b84613bb29190614359565b9050838184965096509650505050509450945094915050565b600081613bdb5760009050613bf9565b6103e860145484613bec91906147ac565b613bf69190614428565b90505b92915050565b60006103e882613c1e57601b54601954613c199190614359565b613c2f565b601b54601954613c2e919061456c565b5b84613c3a91906147ac565b613c449190614428565b905092915050565b600080fd5b600080fd5b6000819050919050565b613c6981613c56565b8114613c7457600080fd5b50565b600081359050613c8681613c60565b92915050565b600060208284031215613ca257613ca1613c4c565b5b6000613cb084828501613c77565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613cf3578082015181840152602081019050613cd8565b83811115613d02576000848401525b50505050565b6000601f19601f8301169050919050565b6000613d2482613cb9565b613d2e8185613cc4565b9350613d3e818560208601613cd5565b613d4781613d08565b840191505092915050565b60006020820190508181036000830152613d6c8184613d19565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613d9f82613d74565b9050919050565b613daf81613d94565b8114613dba57600080fd5b50565b600081359050613dcc81613da6565b92915050565b60008060408385031215613de957613de8613c4c565b5b6000613df785828601613dbd565b9250506020613e0885828601613c77565b9150509250929050565b60008115159050919050565b613e2781613e12565b82525050565b6000602082019050613e426000830184613e1e565b92915050565b600060208284031215613e5e57613e5d613c4c565b5b6000613e6c84828501613dbd565b91505092915050565b613e7e81613c56565b82525050565b6000602082019050613e996000830184613e75565b92915050565b600080600060608486031215613eb857613eb7613c4c565b5b6000613ec686828701613dbd565b9350506020613ed786828701613dbd565b9250506040613ee886828701613c77565b9150509250925092565b600060ff82169050919050565b613f0881613ef2565b82525050565b6000602082019050613f236000830184613eff565b92915050565b613f3281613e12565b8114613f3d57600080fd5b50565b600081359050613f4f81613f29565b92915050565b60008060408385031215613f6c57613f6b613c4c565b5b6000613f7a85828601613dbd565b9250506020613f8b85828601613f40565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f840112613fba57613fb9613f95565b5b8235905067ffffffffffffffff811115613fd757613fd6613f9a565b5b602083019150836020820283011115613ff357613ff2613f9f565b5b9250929050565b60008083601f8401126140105761400f613f95565b5b8235905067ffffffffffffffff81111561402d5761402c613f9a565b5b60208301915083602082028301111561404957614048613f9f565b5b9250929050565b6000806000806040858703121561406a57614069613c4c565b5b600085013567ffffffffffffffff81111561408857614087613c51565b5b61409487828801613fa4565b9450945050602085013567ffffffffffffffff8111156140b7576140b6613c51565b5b6140c387828801613ffa565b925092505092959194509250565b6140da81613d94565b82525050565b60006020820190506140f560008301846140d1565b92915050565b60006020828403121561411157614110613c4c565b5b600061411f84828501613f40565b91505092915050565b6000806040838503121561413f5761413e613c4c565b5b600061414d85828601613dbd565b925050602061415e85828601613dbd565b9150509250929050565b600080600080600060a0868803121561418457614183613c4c565b5b600061419288828901613c77565b95505060206141a388828901613c77565b94505060406141b488828901613c77565b93505060606141c588828901613c77565b92505060806141d688828901613c77565b9150509295509295909350565b6000819050919050565b60006142086142036141fe84613d74565b6141e3565b613d74565b9050919050565b600061421a826141ed565b9050919050565b600061422c8261420f565b9050919050565b61423c81614221565b82525050565b60006020820190506142576000830184614233565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614293602083613cc4565b915061429e8261425d565b602082019050919050565b600060208201905081810360008301526142c281614286565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061431057607f821691505b60208210811415614324576143236142c9565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061436482613c56565b915061436f83613c56565b9250828210156143825761438161432a565b5b828203905092915050565b7f416d6f756e74206d757374203c20746f74616c207265666c656374696f6e7300600082015250565b60006143c3601f83613cc4565b91506143ce8261438d565b602082019050919050565b600060208201905081810360008301526143f2816143b6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061443382613c56565b915061443e83613c56565b92508261444e5761444d6143f9565b5b828204905092915050565b7f4163636f756e74206973206e6f74206578636c75646564000000000000000000600082015250565b600061448f601783613cc4565b915061449a82614459565b602082019050919050565b600060208201905081810360008301526144be81614482565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600061452e82613c56565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156145615761456061432a565b5b600182019050919050565b600061457782613c56565b915061458283613c56565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156145b7576145b661432a565b5b828201905092915050565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b60006145f8601b83613cc4565b9150614603826145c2565b602082019050919050565b60006020820190508181036000830152614627816145eb565b9050919050565b60008160011c9050919050565b6000808291508390505b6001851115614685578086048111156146615761466061432a565b5b60018516156146705780820291505b808102905061467e8561462e565b9450614645565b94509492505050565b60008261469e576001905061475a565b816146ac576000905061475a565b81600181146146c257600281146146cc576146fb565b600191505061475a565b60ff8411156146de576146dd61432a565b5b8360020a9150848211156146f5576146f461432a565b5b5061475a565b5060208310610133831016604e8410600b84101617156147305782820a90508381111561472b5761472a61432a565b5b61475a565b61473d848484600161463b565b925090508184048111156147545761475361432a565b5b81810290505b9392505050565b600061476c82613c56565b915061477783613ef2565b92506147a47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461468e565b905092915050565b60006147b782613c56565b91506147c283613c56565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156147fb576147fa61432a565b5b828202905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614862602683613cc4565b915061486d82614806565b604082019050919050565b6000602082019050818103600083015261489181614855565b9050919050565b7f42455032303a20617070726f76652066726f6d207a65726f2061646472657373600082015250565b60006148ce602083613cc4565b91506148d982614898565b602082019050919050565b600060208201905081810360008301526148fd816148c1565b9050919050565b7f42455032303a20617070726f766520746f207a65726f20616464726573730000600082015250565b600061493a601e83613cc4565b915061494582614904565b602082019050919050565b600060208201905081810360008301526149698161492d565b9050919050565b7f42455032303a207472616e736665722066726f6d203078300000000000000000600082015250565b60006149a6601883613cc4565b91506149b182614970565b602082019050919050565b600060208201905081810360008301526149d581614999565b9050919050565b7f42455032303a207472616e7366657220746f2030783000000000000000000000600082015250565b6000614a12601683613cc4565b9150614a1d826149dc565b602082019050919050565b60006020820190508181036000830152614a4181614a05565b9050919050565b7f416d6f756e74206d757374206265203e207a65726f0000000000000000000000600082015250565b6000614a7e601583613cc4565b9150614a8982614a48565b602082019050919050565b60006020820190508181036000830152614aad81614a71565b9050919050565b7f4c6971756964697479206e6f74206c61756e6368656420796574000000000000600082015250565b6000614aea601a83613cc4565b9150614af582614ab4565b602082019050919050565b60006020820190508181036000830152614b1981614add565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050614b5e81613da6565b92915050565b600060208284031215614b7a57614b79613c4c565b5b6000614b8884828501614b4f565b91505092915050565b6000819050919050565b6000614bb6614bb1614bac84614b91565b6141e3565b613c56565b9050919050565b614bc681614b9b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614c0181613d94565b82525050565b6000614c138383614bf8565b60208301905092915050565b6000602082019050919050565b6000614c3782614bcc565b614c418185614bd7565b9350614c4c83614be8565b8060005b83811015614c7d578151614c648882614c07565b9750614c6f83614c1f565b925050600181019050614c50565b5085935050505092915050565b600060a082019050614c9f6000830188613e75565b614cac6020830187614bbd565b8181036040830152614cbe8186614c2c565b9050614ccd60608301856140d1565b614cda6080830184613e75565b9695505050505050565b600060c082019050614cf960008301896140d1565b614d066020830188613e75565b614d136040830187614bbd565b614d206060830186614bbd565b614d2d60808301856140d1565b614d3a60a0830184613e75565b979650505050505050565b600081519050614d5481613c60565b92915050565b600080600060608486031215614d7357614d72613c4c565b5b6000614d8186828701614d45565b9350506020614d9286828701614d45565b9250506040614da386828701614d45565b915050925092509256fea2646970667358221220c6ea75a37e16846b8c0126a27dbed9684601d405ec18834cdf0157124fed30bb64736f6c63430008090033000000000000000000000000f2ce18ed721eb1b5a31c902162165d2fe5671129
Deployed Bytecode
0x6080604052600436106102cd5760003560e01c806370d5ae0511610175578063a457c2d7116100dc578063d14e52f411610095578063dd62ed3e1161006f578063dd62ed3e14610b2d578063ee789f8314610b6a578063f2fde38b14610b93578063f887ea4014610bbc576102d4565b8063d14e52f414610aae578063d469801614610ad7578063d830678614610b02576102d4565b8063a457c2d71461098e578063a7f01258146109cb578063a8aa1b31146109f4578063a9059cbb14610a1f578063c49b9a8014610a5c578063c851cc3214610a85576102d4565b80638f809b4a1161012e5780638f809b4a1461087a57806393110697146108b757806394e10784146108e257806395d89b411461090d578063a021324e14610938578063a317234014610963576102d4565b806370d5ae051461077a578063715018a6146107a557806375f0a874146107bc5780637a091849146107e757806388f82020146108125780638da5cb5b1461084f576102d4565b80633685d4191161023457806352390c02116101ed5780635d098b38116101c75780635d098b38146106c057806367243482146106e95780636bc87c3a1461071257806370a082311461073d576102d4565b806352390c021461064357806359a3ed911461066c57806359f8160b14610697576102d4565b80633685d41914610521578063395093511461054a5780633af32abf146105875780633b124fe7146105c4578063492a937b146105ef5780634a74bb0214610618576102d4565b80631e8c260d116102865780631e8c260d146103fd5780631eb147d51461042857806323b872dd14610453578063296f0a0c146104905780632d838119146104b9578063313ce567146104f6576102d4565b8063061c82d0146102d957806306fdde0314610302578063095ea7b31461032d5780630b0fd47e1461036a57806313114a9d146103a757806318160ddd146103d2576102d4565b366102d457005b600080fd5b3480156102e557600080fd5b5061030060048036038101906102fb9190613c8c565b610be7565b005b34801561030e57600080fd5b50610317610c76565b6040516103249190613d52565b60405180910390f35b34801561033957600080fd5b50610354600480360381019061034f9190613dd2565b610d08565b6040516103619190613e2d565b60405180910390f35b34801561037657600080fd5b50610391600480360381019061038c9190613e48565b610d26565b60405161039e9190613e2d565b60405180910390f35b3480156103b357600080fd5b506103bc610d46565b6040516103c99190613e84565b60405180910390f35b3480156103de57600080fd5b506103e7610d50565b6040516103f49190613e84565b60405180910390f35b34801561040957600080fd5b50610412610d5a565b60405161041f9190613e84565b60405180910390f35b34801561043457600080fd5b5061043d610d60565b60405161044a9190613e2d565b60405180910390f35b34801561045f57600080fd5b5061047a60048036038101906104759190613e9f565b610d73565b6040516104879190613e2d565b60405180910390f35b34801561049c57600080fd5b506104b760048036038101906104b29190613e48565b610e2b565b005b3480156104c557600080fd5b506104e060048036038101906104db9190613c8c565b610eeb565b6040516104ed9190613e84565b60405180910390f35b34801561050257600080fd5b5061050b610f52565b6040516105189190613f0e565b60405180910390f35b34801561052d57600080fd5b5061054860048036038101906105439190613e48565b610f69565b005b34801561055657600080fd5b50610571600480360381019061056c9190613dd2565b61129f565b60405161057e9190613e2d565b60405180910390f35b34801561059357600080fd5b506105ae60048036038101906105a99190613e48565b61134b565b6040516105bb9190613e2d565b60405180910390f35b3480156105d057600080fd5b506105d96113a1565b6040516105e69190613e84565b60405180910390f35b3480156105fb57600080fd5b5061061660048036038101906106119190613f55565b6113a7565b005b34801561062457600080fd5b5061062d611487565b60405161063a9190613e2d565b60405180910390f35b34801561064f57600080fd5b5061066a60048036038101906106659190613e48565b61149a565b005b34801561067857600080fd5b50610681611735565b60405161068e9190613e84565b60405180910390f35b3480156106a357600080fd5b506106be60048036038101906106b99190613f55565b61173b565b005b3480156106cc57600080fd5b506106e760048036038101906106e29190613e48565b611812565b005b3480156106f557600080fd5b50610710600480360381019061070b9190614050565b6118d2565b005b34801561071e57600080fd5b50610727611ac1565b6040516107349190613e84565b60405180910390f35b34801561074957600080fd5b50610764600480360381019061075f9190613e48565b611ac7565b6040516107719190613e84565b60405180910390f35b34801561078657600080fd5b5061078f611bb2565b60405161079c91906140e0565b60405180910390f35b3480156107b157600080fd5b506107ba611bd8565b005b3480156107c857600080fd5b506107d1611c60565b6040516107de91906140e0565b60405180910390f35b3480156107f357600080fd5b506107fc611c86565b6040516108099190613e84565b60405180910390f35b34801561081e57600080fd5b5061083960048036038101906108349190613e48565b611c8c565b6040516108469190613e2d565b60405180910390f35b34801561085b57600080fd5b50610864611ce2565b60405161087191906140e0565b60405180910390f35b34801561088657600080fd5b506108a1600480360381019061089c9190613e48565b611d0b565b6040516108ae9190613e2d565b60405180910390f35b3480156108c357600080fd5b506108cc611d61565b6040516108d99190613e84565b60405180910390f35b3480156108ee57600080fd5b506108f7611d67565b6040516109049190613e84565b60405180910390f35b34801561091957600080fd5b50610922611d8b565b60405161092f9190613d52565b60405180910390f35b34801561094457600080fd5b5061094d611e1d565b60405161095a9190613e84565b60405180910390f35b34801561096f57600080fd5b50610978611e23565b6040516109859190613e84565b60405180910390f35b34801561099a57600080fd5b506109b560048036038101906109b09190613dd2565b611e29565b6040516109c29190613e2d565b60405180910390f35b3480156109d757600080fd5b506109f260048036038101906109ed9190613c8c565b611ed5565b005b348015610a0057600080fd5b50610a09611f68565b604051610a1691906140e0565b60405180910390f35b348015610a2b57600080fd5b50610a466004803603810190610a419190613dd2565b611f8e565b604051610a539190613e2d565b60405180910390f35b348015610a6857600080fd5b50610a836004803603810190610a7e91906140fb565b611fac565b005b348015610a9157600080fd5b50610aac6004803603810190610aa79190613e48565b612045565b005b348015610aba57600080fd5b50610ad56004803603810190610ad09190613f55565b612105565b005b348015610ae357600080fd5b50610aec612251565b604051610af991906140e0565b60405180910390f35b348015610b0e57600080fd5b50610b17612277565b604051610b249190613e2d565b60405180910390f35b348015610b3957600080fd5b50610b546004803603810190610b4f9190614128565b61228a565b604051610b619190613e84565b60405180910390f35b348015610b7657600080fd5b50610b916004803603810190610b8c9190614168565b612311565b005b348015610b9f57600080fd5b50610bba6004803603810190610bb59190613e48565b6123f4565b005b348015610bc857600080fd5b50610bd16124ec565b604051610bde9190614242565b60405180910390f35b610bef612512565b73ffffffffffffffffffffffffffffffffffffffff16610c0d611ce2565b73ffffffffffffffffffffffffffffffffffffffff1614610c63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5a906142a9565b60405180910390fd5b8060148190555060145460158190555050565b606060018054610c85906142f8565b80601f0160208091040260200160405190810160405280929190818152602001828054610cb1906142f8565b8015610cfe5780601f10610cd357610100808354040283529160200191610cfe565b820191906000526020600020905b815481529060010190602001808311610ce157829003601f168201915b5050505050905090565b6000610d1c610d15612512565b848461251a565b6001905092915050565b60116020528060005260406000206000915054906101000a900460ff1681565b6000600f54905090565b6000600d54905090565b601c5481565b601e60009054906101000a900460ff1681565b6000610d808484846126e5565b610e2084610d8c612512565b84600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610dd6612512565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e1b9190614359565b61251a565b600190509392505050565b610e33612512565b73ffffffffffffffffffffffffffffffffffffffff16610e51611ce2565b73ffffffffffffffffffffffffffffffffffffffff1614610ea7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9e906142a9565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600e54821115610f32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f29906143d9565b60405180910390fd5b6000610f3c611d67565b90508083610f4a9190614428565b915050919050565b6000600360009054906101000a900460ff16905090565b610f71612512565b73ffffffffffffffffffffffffffffffffffffffff16610f8f611ce2565b73ffffffffffffffffffffffffffffffffffffffff1614610fe5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdc906142a9565b60405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611071576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611068906144a5565b60405180910390fd5b60005b60078054905081101561129b578173ffffffffffffffffffffffffffffffffffffffff16600782815481106110ac576110ab6144c5565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561128857600760016007805490506111079190614359565b81548110611118576111176144c5565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660078281548110611157576111566144c5565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600780548061124e5761124d6144f4565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905561129b565b808061129390614523565b915050611074565b5050565b60006113416112ac612512565b8484600660006112ba612512565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461133c919061456c565b61251a565b6001905092915050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60145481565b6113af612512565b73ffffffffffffffffffffffffffffffffffffffff166113cd611ce2565b73ffffffffffffffffffffffffffffffffffffffff1614611423576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141a906142a9565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506114838261149a565b5050565b601360149054906101000a900460ff1681565b6114a2612512565b73ffffffffffffffffffffffffffffffffffffffff166114c0611ce2565b73ffffffffffffffffffffffffffffffffffffffff1614611516576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150d906142a9565b60405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156115a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159a9061460e565b60405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111561167757611633600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610eeb565b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506007819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60165481565b611743612512565b73ffffffffffffffffffffffffffffffffffffffff16611761611ce2565b73ffffffffffffffffffffffffffffffffffffffff16146117b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ae906142a9565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61181a612512565b73ffffffffffffffffffffffffffffffffffffffff16611838611ce2565b73ffffffffffffffffffffffffffffffffffffffff161461188e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611885906142a9565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6118da612512565b73ffffffffffffffffffffffffffffffffffffffff166118f8611ce2565b73ffffffffffffffffffffffffffffffffffffffff161461194e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611945906142a9565b60405180910390fd5b81819050848490501461196057600080fd5b6000601360149054906101000a900460ff1690506000601360146101000a81548160ff02191690831515021790555060005b85859050811015611a9f57601160008787848181106119b4576119b36144c5565b5b90506020020160208101906119c99190613e48565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611a1b57600080fd5b611a8c33878784818110611a3257611a316144c5565b5b9050602002016020810190611a479190613e48565b600360009054906101000a900460ff16600a611a639190614761565b878786818110611a7657611a756144c5565b5b90506020020135611a8791906147ac565b6126e5565b8080611a9790614523565b915050611992565b5080601360146101000a81548160ff0219169083151502179055505050505050565b60195481565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611b6257600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611bad565b611baa600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610eeb565b90505b919050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611be0612512565b73ffffffffffffffffffffffffffffffffffffffff16611bfe611ce2565b73ffffffffffffffffffffffffffffffffffffffff1614611c54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4b906142a9565b60405180910390fd5b611c5e6000612a9f565b565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601d5481565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60185481565b6000806000611d74612b63565b915091508082611d849190614428565b9250505090565b606060028054611d9a906142f8565b80601f0160208091040260200160405190810160405280929190818152602001828054611dc6906142f8565b8015611e135780601f10611de857610100808354040283529160200191611e13565b820191906000526020600020905b815481529060010190602001808311611df657829003601f168201915b5050505050905090565b60175481565b601b5481565b6000611ecb611e36612512565b848460066000611e44612512565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ec69190614359565b61251a565b6001905092915050565b611edd612512565b73ffffffffffffffffffffffffffffffffffffffff16611efb611ce2565b73ffffffffffffffffffffffffffffffffffffffff1614611f51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f48906142a9565b60405180910390fd5b80600d54611f5f9190614428565b601d8190555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611fa2611f9b612512565b84846126e5565b6001905092915050565b611fb4612512565b73ffffffffffffffffffffffffffffffffffffffff16611fd2611ce2565b73ffffffffffffffffffffffffffffffffffffffff1614612028576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201f906142a9565b60405180910390fd5b80601360146101000a81548160ff02191690831515021790555050565b61204d612512565b73ffffffffffffffffffffffffffffffffffffffff1661206b611ce2565b73ffffffffffffffffffffffffffffffffffffffff16146120c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b8906142a9565b60405180910390fd5b80601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61210d612512565b73ffffffffffffffffffffffffffffffffffffffff1661212b611ce2565b73ffffffffffffffffffffffffffffffffffffffff1614612181576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612178906142a9565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080156122435761223e8261149a565b61224d565b61224c82610f69565b5b5050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601360159054906101000a900460ff1681565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612319612512565b73ffffffffffffffffffffffffffffffffffffffff16612337611ce2565b73ffffffffffffffffffffffffffffffffffffffff161461238d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612384906142a9565b60405180910390fd5b84601981905550601954601a8190555082601681905550836017819055508160188190555080601b81905550601b54601c819055506019546018546017546016546123d8919061456c565b6123e2919061456c565b11156123ed57600080fd5b5050505050565b6123fc612512565b73ffffffffffffffffffffffffffffffffffffffff1661241a611ce2565b73ffffffffffffffffffffffffffffffffffffffff1614612470576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612467906142a9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156124e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d790614878565b60405180910390fd5b6124e981612a9f565b50565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561258a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612581906148e4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156125fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f190614950565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516126d89190613e84565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612755576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274c906149bc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156127c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127bc90614a28565b60405180910390fd5b60008111612808576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ff90614a94565b60405180910390fd5b601e60009054906101000a900460ff166129c557600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156128be5750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156128e3576001601e60006101000a81548160ff0219169083151502179055506129c4565b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806129845750600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6129c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129ba90614b00565b60405180910390fd5b5b5b6129ce82612e01565b156129dc576129db612f02565b5b600060019050600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612a835750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612a8d57600090505b612a998484848461308e565b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000806000600e5490506000600d54905060005b600780549050811015612dcb57826004600060078481548110612b9d57612b9c6144c5565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180612c8b5750816005600060078481548110612c2357612c226144c5565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15612ca257600e54600d5494509450505050612dfd565b6004600060078381548110612cba57612cb96144c5565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483612d2b9190614359565b92506005600060078381548110612d4557612d446144c5565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482612db69190614359565b91508080612dc390614523565b915050612b77565b50600d54600e54612ddc9190614428565b821015612df457600e54600d54935093505050612dfd565b81819350935050505b9091565b6000601360159054906101000a900460ff16158015612e2c5750601360149054906101000a900460ff165b8015612e425750601d54612e3f30611ac7565b10155b8015612e985750601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612eed5750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8015612efb57506000601954115b9050919050565b6001601360156101000a81548160ff0219169083151502179055506000601854601954612f2f9190614359565b90506000600282601654601d54612f4691906147ac565b612f509190614428565b612f5a9190614428565b9050612f7281601d54612f6d9190614359565b6130bb565b6000600280601654612f849190614428565b84612f8f9190614359565b60165447612f9d91906147ac565b612fa79190614428565b612fb19190614428565b90506000811115612fea57612fe9600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683836132e0565b5b60008147612ff89190614359565b9050600081111561306d57600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561306b573d6000803e3d6000fd5b505b505050506000601360156101000a81548160ff021916908315150217905550565b8061309c5761309b6133ae565b5b6130a7848484613402565b806130b5576130b461370d565b5b50505050565b6000600267ffffffffffffffff8111156130d8576130d7614b20565b5b6040519080825280602002602001820160405280156131065781602001602082028036833780820191505090505b509050308160008151811061311e5761311d6144c5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156131c057600080fd5b505afa1580156131d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131f89190614b64565b8160018151811061320c5761320b6144c5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016132aa959493929190614c8a565b600060405180830381600087803b1580156132c457600080fd5b505af11580156132d8573d6000803e3d6000fd5b505050505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000808961016842613333919061456c565b6040518863ffffffff1660e01b815260040161335496959493929190614ce4565b6060604051808303818588803b15801561336d57600080fd5b505af1158015613381573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906133a69190614d5a565b505050505050565b60006014541480156133c257506000601954145b156133cc57613400565b601454601581905550601954601a81905550601b54601c81905550600060148190555060006019819055506000601b819055505b565b60008060008060008061346187601160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661372a565b95509550955095509550955085600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546134bc9190614359565b92505081905550600860008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561356c5786600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546135649190614359565b925050819055505b600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156136155782600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461360d919061456c565b925050819055505b84600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613664919061456c565b92505081905550600081111561367e5761367d81613788565b5b600084118061368d5750600082115b1561369d5761369c8483613aeb565b5b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516136fa9190613e84565b60405180910390a3505050505050505050565b601554601481905550601a54601981905550601c54601b81905550565b60008060008060008060008060006137428b8b613b17565b92509250925060008060006137608e868661375b611d67565b613b65565b9250925092508282828888889b509b509b509b509b509b505050505050509295509295509295565b6000613792611d67565b9050600081836137a291906147ac565b90506000601954601854856137b791906147ac565b6137c19190614428565b9050600083826137d191906147ac565b905081856137df9190614359565b945080836137ed9190614359565b925082600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461383e919061456c565b92505081905550600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156138ee5784600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546138e6919061456c565b925050819055505b6000821115613ae4578060046000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613968919061456c565b9250508190555060086000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613a5c578160056000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613a54919061456c565b925050819055505b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613adb9190613e84565b60405180910390a35b5050505050565b81600e54613af99190614359565b600e8190555080600f54613b0d919061456c565b600f819055505050565b600080600080613b278686613bcb565b90506000613b358787613bff565b905060008183613b45919061456c565b88613b509190614359565b90508083839550955095505050509250925092565b6000806000808488613b7791906147ac565b905060008588613b8791906147ac565b905060008688613b9791906147ac565b905060008183613ba7919061456c565b84613bb29190614359565b9050838184965096509650505050509450945094915050565b600081613bdb5760009050613bf9565b6103e860145484613bec91906147ac565b613bf69190614428565b90505b92915050565b60006103e882613c1e57601b54601954613c199190614359565b613c2f565b601b54601954613c2e919061456c565b5b84613c3a91906147ac565b613c449190614428565b905092915050565b600080fd5b600080fd5b6000819050919050565b613c6981613c56565b8114613c7457600080fd5b50565b600081359050613c8681613c60565b92915050565b600060208284031215613ca257613ca1613c4c565b5b6000613cb084828501613c77565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613cf3578082015181840152602081019050613cd8565b83811115613d02576000848401525b50505050565b6000601f19601f8301169050919050565b6000613d2482613cb9565b613d2e8185613cc4565b9350613d3e818560208601613cd5565b613d4781613d08565b840191505092915050565b60006020820190508181036000830152613d6c8184613d19565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613d9f82613d74565b9050919050565b613daf81613d94565b8114613dba57600080fd5b50565b600081359050613dcc81613da6565b92915050565b60008060408385031215613de957613de8613c4c565b5b6000613df785828601613dbd565b9250506020613e0885828601613c77565b9150509250929050565b60008115159050919050565b613e2781613e12565b82525050565b6000602082019050613e426000830184613e1e565b92915050565b600060208284031215613e5e57613e5d613c4c565b5b6000613e6c84828501613dbd565b91505092915050565b613e7e81613c56565b82525050565b6000602082019050613e996000830184613e75565b92915050565b600080600060608486031215613eb857613eb7613c4c565b5b6000613ec686828701613dbd565b9350506020613ed786828701613dbd565b9250506040613ee886828701613c77565b9150509250925092565b600060ff82169050919050565b613f0881613ef2565b82525050565b6000602082019050613f236000830184613eff565b92915050565b613f3281613e12565b8114613f3d57600080fd5b50565b600081359050613f4f81613f29565b92915050565b60008060408385031215613f6c57613f6b613c4c565b5b6000613f7a85828601613dbd565b9250506020613f8b85828601613f40565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f840112613fba57613fb9613f95565b5b8235905067ffffffffffffffff811115613fd757613fd6613f9a565b5b602083019150836020820283011115613ff357613ff2613f9f565b5b9250929050565b60008083601f8401126140105761400f613f95565b5b8235905067ffffffffffffffff81111561402d5761402c613f9a565b5b60208301915083602082028301111561404957614048613f9f565b5b9250929050565b6000806000806040858703121561406a57614069613c4c565b5b600085013567ffffffffffffffff81111561408857614087613c51565b5b61409487828801613fa4565b9450945050602085013567ffffffffffffffff8111156140b7576140b6613c51565b5b6140c387828801613ffa565b925092505092959194509250565b6140da81613d94565b82525050565b60006020820190506140f560008301846140d1565b92915050565b60006020828403121561411157614110613c4c565b5b600061411f84828501613f40565b91505092915050565b6000806040838503121561413f5761413e613c4c565b5b600061414d85828601613dbd565b925050602061415e85828601613dbd565b9150509250929050565b600080600080600060a0868803121561418457614183613c4c565b5b600061419288828901613c77565b95505060206141a388828901613c77565b94505060406141b488828901613c77565b93505060606141c588828901613c77565b92505060806141d688828901613c77565b9150509295509295909350565b6000819050919050565b60006142086142036141fe84613d74565b6141e3565b613d74565b9050919050565b600061421a826141ed565b9050919050565b600061422c8261420f565b9050919050565b61423c81614221565b82525050565b60006020820190506142576000830184614233565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614293602083613cc4565b915061429e8261425d565b602082019050919050565b600060208201905081810360008301526142c281614286565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061431057607f821691505b60208210811415614324576143236142c9565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061436482613c56565b915061436f83613c56565b9250828210156143825761438161432a565b5b828203905092915050565b7f416d6f756e74206d757374203c20746f74616c207265666c656374696f6e7300600082015250565b60006143c3601f83613cc4565b91506143ce8261438d565b602082019050919050565b600060208201905081810360008301526143f2816143b6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061443382613c56565b915061443e83613c56565b92508261444e5761444d6143f9565b5b828204905092915050565b7f4163636f756e74206973206e6f74206578636c75646564000000000000000000600082015250565b600061448f601783613cc4565b915061449a82614459565b602082019050919050565b600060208201905081810360008301526144be81614482565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600061452e82613c56565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156145615761456061432a565b5b600182019050919050565b600061457782613c56565b915061458283613c56565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156145b7576145b661432a565b5b828201905092915050565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b60006145f8601b83613cc4565b9150614603826145c2565b602082019050919050565b60006020820190508181036000830152614627816145eb565b9050919050565b60008160011c9050919050565b6000808291508390505b6001851115614685578086048111156146615761466061432a565b5b60018516156146705780820291505b808102905061467e8561462e565b9450614645565b94509492505050565b60008261469e576001905061475a565b816146ac576000905061475a565b81600181146146c257600281146146cc576146fb565b600191505061475a565b60ff8411156146de576146dd61432a565b5b8360020a9150848211156146f5576146f461432a565b5b5061475a565b5060208310610133831016604e8410600b84101617156147305782820a90508381111561472b5761472a61432a565b5b61475a565b61473d848484600161463b565b925090508184048111156147545761475361432a565b5b81810290505b9392505050565b600061476c82613c56565b915061477783613ef2565b92506147a47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461468e565b905092915050565b60006147b782613c56565b91506147c283613c56565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156147fb576147fa61432a565b5b828202905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614862602683613cc4565b915061486d82614806565b604082019050919050565b6000602082019050818103600083015261489181614855565b9050919050565b7f42455032303a20617070726f76652066726f6d207a65726f2061646472657373600082015250565b60006148ce602083613cc4565b91506148d982614898565b602082019050919050565b600060208201905081810360008301526148fd816148c1565b9050919050565b7f42455032303a20617070726f766520746f207a65726f20616464726573730000600082015250565b600061493a601e83613cc4565b915061494582614904565b602082019050919050565b600060208201905081810360008301526149698161492d565b9050919050565b7f42455032303a207472616e736665722066726f6d203078300000000000000000600082015250565b60006149a6601883613cc4565b91506149b182614970565b602082019050919050565b600060208201905081810360008301526149d581614999565b9050919050565b7f42455032303a207472616e7366657220746f2030783000000000000000000000600082015250565b6000614a12601683613cc4565b9150614a1d826149dc565b602082019050919050565b60006020820190508181036000830152614a4181614a05565b9050919050565b7f416d6f756e74206d757374206265203e207a65726f0000000000000000000000600082015250565b6000614a7e601583613cc4565b9150614a8982614a48565b602082019050919050565b60006020820190508181036000830152614aad81614a71565b9050919050565b7f4c6971756964697479206e6f74206c61756e6368656420796574000000000000600082015250565b6000614aea601a83613cc4565b9150614af582614ab4565b602082019050919050565b60006020820190508181036000830152614b1981614add565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050614b5e81613da6565b92915050565b600060208284031215614b7a57614b79613c4c565b5b6000614b8884828501614b4f565b91505092915050565b6000819050919050565b6000614bb6614bb1614bac84614b91565b6141e3565b613c56565b9050919050565b614bc681614b9b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614c0181613d94565b82525050565b6000614c138383614bf8565b60208301905092915050565b6000602082019050919050565b6000614c3782614bcc565b614c418185614bd7565b9350614c4c83614be8565b8060005b83811015614c7d578151614c648882614c07565b9750614c6f83614c1f565b925050600181019050614c50565b5085935050505092915050565b600060a082019050614c9f6000830188613e75565b614cac6020830187614bbd565b8181036040830152614cbe8186614c2c565b9050614ccd60608301856140d1565b614cda6080830184613e75565b9695505050505050565b600060c082019050614cf960008301896140d1565b614d066020830188613e75565b614d136040830187614bbd565b614d206060830186614bbd565b614d2d60808301856140d1565b614d3a60a0830184613e75565b979650505050505050565b600081519050614d5481613c60565b92915050565b600080600060608486031215614d7357614d72613c4c565b5b6000614d8186828701614d45565b9350506020614d9286828701614d45565b9250506040614da386828701614d45565b915050925092509256fea2646970667358221220c6ea75a37e16846b8c0126a27dbed9684601d405ec18834cdf0157124fed30bb64736f6c63430008090033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000f2ce18ed721eb1b5a31c902162165d2fe5671129
-----Decoded View---------------
Arg [0] : _marketing (address): 0xf2cE18eD721eb1B5A31c902162165D2fE5671129
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000f2ce18ed721eb1b5a31c902162165d2fe5671129
Deployed Bytecode Sourcemap
17881:17942:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24478:142;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20858:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22753:152;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18835:47;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22658:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21135:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19377:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19494:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23079:341;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25441:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24048:271;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21044:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21979:493;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23428:297;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30933:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19032:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26281:148;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18950:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21580:391;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19114:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24327:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25313:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35311:509;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19242:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21229:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18757:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2428:103;;;;;;;;;;;;;:::i;:::-;;18467:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19428:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21441:131;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1777:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26018:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19201:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28512:160;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20949:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19154:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19342:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23733:307;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25183:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18889:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22913:158;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26152:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26441:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25565:378;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18504:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18997:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22482:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24628:543;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2686:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18915:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24478:142;2008:12;:10;:12::i;:::-;1997:23;;:7;:5;:7::i;:::-;:23;;;1989:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24570:6:::1;24560:7;:16;;;;24605:7;;24587:15;:25;;;;24478:142:::0;:::o;20858:83::-;20895:13;20928:5;20921:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20858:83;:::o;22753:152::-;22819:4;22836:39;22845:12;:10;:12::i;:::-;22859:7;22868:6;22836:8;:39::i;:::-;22893:4;22886:11;;22753:152;;;;:::o;18835:47::-;;;;;;;;;;;;;;;;;;;;;;:::o;22658:87::-;22700:7;22727:10;;22720:17;;22658:87;:::o;21135:86::-;21179:7;21206;;21199:14;;21135:86;:::o;19377:42::-;;;;:::o;19494:37::-;;;;;;;;;;;;;:::o;23079:341::-;23202:4;23219:36;23229:6;23237:9;23248:6;23219:9;:36::i;:::-;23266:124;23289:6;23310:12;:10;:12::i;:::-;23373:6;23337:11;:19;23349:6;23337:19;;;;;;;;;;;;;;;:33;23357:12;:10;:12::i;:::-;23337:33;;;;;;;;;;;;;;;;:42;;;;:::i;:::-;23266:8;:124::i;:::-;23408:4;23401:11;;23079:341;;;;;:::o;25441:116::-;2008:12;:10;:12::i;:::-;1997:23;;:7;:5;:7::i;:::-;:23;;;1989:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25538:11:::1;25520:15;;:29;;;;;;;;;;;;;;;;;;25441:116:::0;:::o;24048:271::-;24142:7;24186;;24175;:18;;24167:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;24240:19;24262:10;:8;:10::i;:::-;24240:32;;24300:11;24290:7;:21;;;;:::i;:::-;24283:28;;;24048:271;;;:::o;21044:83::-;21085:5;21110:9;;;;;;;;;;;21103:16;;21044:83;:::o;21979:493::-;2008:12;:10;:12::i;:::-;1997:23;;:7;:5;:7::i;:::-;:23;;;1989:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22057:22:::1;:31;22080:7;22057:31;;;;;;;;;;;;;;;;;;;;;;;;;22049:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22132:9;22127:338;22151:9;:16;;;;22147:1;:20;22127:338;;;22209:7;22193:23;;:9;22203:1;22193:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:23;;;22189:265;;;22252:9;22281:1;22262:9;:16;;;;:20;;;;:::i;:::-;22252:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;22237:9;22247:1;22237:12;;;;;;;;:::i;:::-;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;22321:1;22302:7;:16;22310:7;22302:16;;;;;;;;;;;;;;;:20;;;;22375:5;22341:22;:31;22364:7;22341:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;22399:9;:15;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;22433:5;;22189:265;22169:3;;;;;:::i;:::-;;;;22127:338;;;;21979:493:::0;:::o;23428:297::-;23543:4;23565:130;23588:12;:10;:12::i;:::-;23615:7;23674:10;23637:11;:25;23649:12;:10;:12::i;:::-;23637:25;;;;;;;;;;;;;;;:34;23663:7;23637:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;23565:8;:130::i;:::-;23713:4;23706:11;;23428:297;;;;:::o;30933:115::-;30994:4;31018:13;:22;31032:7;31018:22;;;;;;;;;;;;;;;;;;;;;;;;;31011:29;;30933:115;;;:::o;19032:27::-;;;;:::o;26281:148::-;2008:12;:10;:12::i;:::-;1997:23;;:7;:5;:7::i;:::-;:23;;;1989:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26383:6:::1;26362:14;:18;26377:2;26362:18;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;26400:21;26418:2;26400:17;:21::i;:::-;26281:148:::0;;:::o;18950:40::-;;;;;;;;;;;;;:::o;21580:391::-;2008:12;:10;:12::i;:::-;1997:23;;:7;:5;:7::i;:::-;:23;;;1989:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21675:22:::1;:31;21698:7;21675:31;;;;;;;;;;;;;;;;;;;;;;;;;21674:32;21652:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;21795:1;21776:7;:16;21784:7;21776:16;;;;;;;;;;;;;;;;:20;21772:109;;;21832:37;21852:7;:16;21860:7;21852:16;;;;;;;;;;;;;;;;21832:19;:37::i;:::-;21813:7;:16;21821:7;21813:16;;;;;;;;;;;;;;;:56;;;;21772:109;21925:4;21891:22;:31;21914:7;21891:31;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;21940:9;21955:7;21940:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21580:391:::0;:::o;19114:33::-;;;;:::o;24327:143::-;2008:12;:10;:12::i;:::-;1997:23;;:7;:5;:7::i;:::-;:23;;;1989:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24451:11:::1;24426:13;:22;24440:7;24426:22;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;24327:143:::0;;:::o;25313:116::-;2008:12;:10;:12::i;:::-;1997:23;;:7;:5;:7::i;:::-;:23;;;1989:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25410:11:::1;25392:15;;:29;;;;;;;;;;;;;;;;;;25313:116:::0;:::o;35311:509::-;2008:12;:10;:12::i;:::-;1997:23;;:7;:5;:7::i;:::-;:23;;;1989:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;35451:7:::1;;:14;;35430:10;;:17;;:35;35422:44;;;::::0;::::1;;35477:17;35497:21;;;;;;;;;;;35477:41;;35553:5;35529:21;;:29;;;;;;;;;;;;;;;;;;35574:9;35569:197;35593:10;;:17;;35589:1;:21;35569:197;;;35641:14;:29;35656:10;;35667:1;35656:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;35641:29;;;;;;;;;;;;;;;;;;;;;;;;;35640:30;35632:39;;;::::0;::::1;;35686:68;35696:10;35708;;35719:1;35708:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;35743:9;;;;;;;;;;;35737:2;:15;;;;:::i;:::-;35723:7;;35731:1;35723:10;;;;;;;:::i;:::-;;;;;;;;:30;;;;:::i;:::-;35686:9;:68::i;:::-;35612:3;;;;;:::i;:::-;;;;35569:197;;;;35800:12;35776:21;;:36;;;;;;;;;;;;;;;;;;35411:409;35311:509:::0;;;;:::o;19242:33::-;;;;:::o;21229:200::-;21286:7;21310:22;:31;21333:7;21310:31;;;;;;;;;;;;;;;;;;;;;;;;;21306:60;;;21350:7;:16;21358:7;21350:16;;;;;;;;;;;;;;;;21343:23;;;;21306:60;21384:37;21404:7;:16;21412:7;21404:16;;;;;;;;;;;;;;;;21384:19;:37::i;:::-;21377:44;;21229:200;;;;:::o;18757:71::-;;;;;;;;;;;;;:::o;2428:103::-;2008:12;:10;:12::i;:::-;1997:23;;:7;:5;:7::i;:::-;:23;;;1989:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2493:30:::1;2520:1;2493:18;:30::i;:::-;2428:103::o:0;18467:30::-;;;;;;;;;;;;;:::o;19428:53::-;;;;:::o;21441:131::-;21509:4;21533:22;:31;21556:7;21533:31;;;;;;;;;;;;;;;;;;;;;;;;;21526:38;;21441:131;;;:::o;1777:87::-;1823:7;1850:6;;;;;;;;;;;1843:13;;1777:87;:::o;26018:126::-;26085:4;26109:17;:27;26127:8;26109:27;;;;;;;;;;;;;;;;;;;;;;;;;26102:34;;26018:126;;;:::o;19201:34::-;;;;:::o;28512:160::-;28553:7;28574:15;28591;28610:19;:17;:19::i;:::-;28573:56;;;;28657:7;28647;:17;;;;:::i;:::-;28640:24;;;;28512:160;:::o;20949:87::-;20988:13;21021:7;21014:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20949:87;:::o;19154:40::-;;;;:::o;19342:28::-;;;;:::o;23733:307::-;23853:4;23875:135;23898:12;:10;:12::i;:::-;23925:7;23984:15;23947:11;:25;23959:12;:10;:12::i;:::-;23947:25;;;;;;;;;;;;;;;:34;23973:7;23947:34;;;;;;;;;;;;;;;;:52;;;;:::i;:::-;23875:8;:135::i;:::-;24028:4;24021:11;;23733:307;;;;:::o;25183:122::-;2008:12;:10;:12::i;:::-;1997:23;;:7;:5;:7::i;:::-;:23;;;1989:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25289:8:::1;25279:7;;:18;;;;:::i;:::-;25256:20;:41;;;;25183:122:::0;:::o;18889:19::-;;;;;;;;;;;;;:::o;22913:158::-;22982:4;22999:42;23009:12;:10;:12::i;:::-;23023:9;23034:6;22999:9;:42::i;:::-;23059:4;23052:11;;22913:158;;;;:::o;26152:117::-;2008:12;:10;:12::i;:::-;1997:23;;:7;:5;:7::i;:::-;:23;;;1989:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26253:8:::1;26229:21;;:32;;;;;;;;;;;;;;;;;;26152:117:::0;:::o;26441:107::-;2008:12;:10;:12::i;:::-;1997:23;;:7;:5;:7::i;:::-;:23;;;1989:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26532:7:::1;26510:6;;:30;;;;;;;;;;;;;;;;;;26441:107:::0;:::o;25565:378::-;2008:12;:10;:12::i;:::-;1997:23;;:7;:5;:7::i;:::-;:23;;;1989:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25702:12:::1;25672:17;:27;25690:8;25672:27;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;25751:12;25725:13;:23;25739:8;25725:23;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;25827:12;25823:112;;;25854:27;25872:8;25854:17;:27::i;:::-;25823:112;;;25910:25;25926:8;25910:15;:25::i;:::-;25823:112;25565:378:::0;;:::o;18504:30::-;;;;;;;;;;;;;:::o;18997:26::-;;;;;;;;;;;;;:::o;22482:168::-;22582:7;22614:11;:19;22626:6;22614:19;;;;;;;;;;;;;;;:28;22634:7;22614:28;;;;;;;;;;;;;;;;22607:35;;22482:168;;;;:::o;24628:543::-;2008:12;:10;:12::i;:::-;1997:23;;:7;:5;:7::i;:::-;:23;;;1989:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24797:11:::1;24781:13;:27;;;;24843:13;;24819:21;:37;;;;24893:6;24877:13;:22;;;;24933:13;24910:20;:36;;;;24975:8;24957:15;:26;;;;25015:9;25004:8;:20;;;;25054:8;;25035:16;:27;;;;25149:13;;25130:15;;25107:20;;25091:13;;:36;;;;:::i;:::-;:54;;;;:::i;:::-;:71;;25083:80;;;::::0;::::1;;24628:543:::0;;;;;:::o;2686:201::-;2008:12;:10;:12::i;:::-;1997:23;;:7;:5;:7::i;:::-;:23;;;1989:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2795:1:::1;2775:22;;:8;:22;;;;2767:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2851:28;2870:8;2851:18;:28::i;:::-;2686:201:::0;:::o;18915:26::-;;;;;;;;;;;;;:::o;644:98::-;697:7;724:10;717:17;;644:98;:::o;31060:368::-;31207:1;31189:20;;:6;:20;;;;31181:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;31284:1;31265:21;;:7;:21;;;;31257:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;31365:6;31334:11;:19;31346:6;31334:19;;;;;;;;;;;;;;;:28;31354:7;31334:28;;;;;;;;;;;;;;;:37;;;;31404:7;31387:33;;31396:6;31387:33;;;31413:6;31387:33;;;;;;:::i;:::-;;;;;;;;31060:368;;;:::o;31436:845::-;31574:1;31558:18;;:4;:18;;;;31550:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;31638:1;31624:16;;:2;:16;;;;31616:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;31695:1;31686:6;:10;31678:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;31748:17;;;;;;;;;;;31743:288;;31786:17;:23;31804:4;31786:23;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;31813:14;:18;31828:2;31813:18;;;;;;;;;;;;;;;;;;;;;;;;;31786:45;31782:238;;;31872:4;31852:17;;:24;;;;;;;;;;;;;;;;;;31782:238;;;31925:17;:23;31943:4;31925:23;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;31952:17;:21;31970:2;31952:21;;;;;;;;;;;;;;;;;;;;;;;;;31925:48;31917:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;31782:238;31743:288;32055:14;32066:2;32055:10;:14::i;:::-;32051:36;;;32071:16;:14;:16::i;:::-;32051:36;32100:12;32115:4;32100:19;;32136:13;:19;32150:4;32136:19;;;;;;;;;;;;;;;;;;;;;;;;;:40;;;;32159:13;:17;32173:2;32159:17;;;;;;;;;;;;;;;;;;;;;;;;;32136:40;32132:88;;;32203:5;32193:15;;32132:88;32232:41;32247:4;32253:2;32257:6;32265:7;32232:14;:41::i;:::-;31539:742;31436:845;;;:::o;3047:191::-;3121:16;3140:6;;;;;;;;;;;3121:25;;3166:8;3157:6;;:17;;;;;;;;;;;;;;;;;;3221:8;3190:40;;3211:8;3190:40;;;;;;;;;;;;3110:128;3047:191;:::o;28680:582::-;28731:7;28740;28760:15;28778:7;;28760:25;;28796:15;28814:7;;28796:25;;28837:9;28832:314;28856:9;:16;;;;28852:1;:20;28832:314;;;28940:7;28916;:21;28924:9;28934:1;28924:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;28916:21;;;;;;;;;;;;;;;;:31;:83;;;;28992:7;28968;:21;28976:9;28986:1;28976:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;28968:21;;;;;;;;;;;;;;;;:31;28916:83;28894:146;;;29023:7;;29032;;29015:25;;;;;;;;;28894:146;29066:7;:21;29074:9;29084:1;29074:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;29066:21;;;;;;;;;;;;;;;;29055:32;;;;;:::i;:::-;;;29113:7;:21;29121:9;29131:1;29121:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;29113:21;;;;;;;;;;;;;;;;29102:32;;;;;:::i;:::-;;;28874:3;;;;;:::i;:::-;;;;28832:314;;;;29184:7;;29174;;:17;;;;:::i;:::-;29164:7;:27;29160:58;;;29201:7;;29210;;29193:25;;;;;;;;29160:58;29237:7;29246;29229:25;;;;;;28680:582;;;:::o;33470:324::-;33524:4;33563:6;;;;;;;;;;;33562:7;:45;;;;;33586:21;;;;;;;;;;;33562:45;:110;;;;;33652:20;;33624:24;33642:4;33624:9;:24::i;:::-;:48;;33562:110;:154;;;;;33690:14;:26;33705:10;33690:26;;;;;;;;;;;;;;;;;;;;;;;;;33689:27;33562:154;:189;;;;;33733:14;:18;33748:2;33733:18;;;;;;;;;;;;;;;;;;;;;;;;;33562:189;:224;;;;;33785:1;33769:13;;:17;33562:224;33541:245;;33470:324;;;:::o;33802:752::-;19770:4;19761:6;;:13;;;;;;;;;;;;;;;;;;33857:16:::1;33892:15;;33876:13;;:31;;;;:::i;:::-;33857:50;;33918:19;33994:1;33982:8;33965:13;;33942:20;;:36;;;;:::i;:::-;33941:49;;;;:::i;:::-;33940:55;;;;:::i;:::-;33918:77;;34008:76;34062:11;34039:20;;:34;;;;:::i;:::-;34008:16;:76::i;:::-;34097:28;34205:1;34199::::0;34183:13:::1;;:17;;;;:::i;:::-;34172:8;:28;;;;:::i;:::-;34154:13;;34130:21;:37;;;;:::i;:::-;34129:72;;;;:::i;:::-;34128:78;;;;:::i;:::-;34097:109;;34246:1;34223:20;:24;34219:107;;;34262:64;34275:15;;;;;;;;;;;34292:11;34305:20;34262:12;:64::i;:::-;34219:107;34339:28;34394:20;34370:21;:44;;;;:::i;:::-;34339:75;;34462:1;34439:20;:24;34435:112;;;34488:15;;;;;;;;;;;34480:33;;:55;34514:20;34480:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;34435:112;33846:708;;;;19788:5:::0;19779:6;;:14;;;;;;;;;;;;;;;;;;33802:752::o;32289:286::-;32445:7;32440:28;;32454:14;:12;:14::i;:::-;32440:28;32481:44;32499:6;32507:9;32518:6;32481:17;:44::i;:::-;32543:7;32538:29;;32552:15;:13;:15::i;:::-;32538:29;32289:286;;;;:::o;34562:399::-;34645:21;34683:1;34669:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34645:40;;34714:4;34696;34701:1;34696:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;34740:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34730:4;34735:1;34730:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;34766:6;;;;;;;;;;;:57;;;34838:11;34864:1;34880:4;34907;34927:15;34766:187;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34634:327;34562:399;:::o;34969:333::-;35100:6;;;;;;;;;;;:22;;;35131:9;35164:4;35184:11;35210:1;35226;35242:5;35280:3;35262:15;:21;;;;:::i;:::-;35100:194;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;34969:333;;;:::o;30458:296::-;30516:1;30505:7;;:12;:34;;;;;30538:1;30521:13;;:18;30505:34;30501:47;;;30541:7;;30501:47;30578:7;;30560:15;:25;;;;30620:13;;30596:21;:37;;;;30663:8;;30644:16;:27;;;;30694:1;30684:7;:11;;;;30722:1;30706:13;:17;;;;30745:1;30734:8;:12;;;;30458:296;:::o;32583:875::-;32730:15;32760:23;32798:12;32825:23;32863:12;32890:18;32922:46;32933:7;32942:14;:25;32957:9;32942:25;;;;;;;;;;;;;;;;;;;;;;;;;32922:10;:46::i;:::-;32715:253;;;;;;;;;;;;32998:7;32979;:15;32987:6;32979:15;;;;;;;;;;;;;;;;:26;;;;;;;:::i;:::-;;;;;;;;33020:22;:30;33043:6;33020:30;;;;;;;;;;;;;;;;;;;;;;;;;33016:75;;;33084:7;33065;:15;33073:6;33065:15;;;;;;;;;;;;;;;;:26;;;;;;;:::i;:::-;;;;;;;;33016:75;33106:22;:33;33129:9;33106:33;;;;;;;;;;;;;;;;;;;;;;;;;33102:89;;;33176:15;33154:7;:18;33162:9;33154:18;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;33102:89;33224:15;33202:7;:18;33210:9;33202:18;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;33266:1;33253:10;:14;33250:58;;;33282:26;33297:10;33282:14;:26::i;:::-;33250:58;33329:1;33322:4;:8;:20;;;;33341:1;33334:4;:8;33322:20;33319:61;;;33357:23;33369:4;33375;33357:11;:23::i;:::-;33319:61;33423:9;33406:44;;33415:6;33406:44;;;33434:15;33406:44;;;;;;:::i;:::-;;;;;;;;32704:754;;;;;;32583:875;;;:::o;30762:163::-;30816:15;;30806:7;:25;;;;30858:21;;30842:13;:37;;;;30901:16;;30890:8;:27;;;;30762:163::o;26742:765::-;26856:7;26878;26900;26922;26944;26966;27016:23;27054:12;27081:18;27113:29;27125:7;27134;27113:11;:29::i;:::-;27001:141;;;;;;27154:15;27171:23;27196:12;27212:113;27238:7;27260:4;27279:10;27304;:8;:10::i;:::-;27212:11;:113::i;:::-;27153:172;;;;;;27358:7;27380:15;27410:4;27429:15;27459:4;27478:10;27336:163;;;;;;;;;;;;;;;;;;26742:765;;;;;;;;:::o;29270:758::-;29333:19;29355:10;:8;:10::i;:::-;29333:32;;29376:18;29410:11;29397:10;:24;;;;:::i;:::-;29376:45;;29432:13;29481;;29462:15;;29449:10;:28;;;;:::i;:::-;29448:46;;;;:::i;:::-;29432:62;;29505:13;29529:11;29521:5;:19;;;;:::i;:::-;29505:35;;29565:5;29551:19;;;;;:::i;:::-;;;29595:5;29581:19;;;;;:::i;:::-;;;29637:10;29611:7;:22;29627:4;29611:22;;;;;;;;;;;;;;;;:36;;;;;;;:::i;:::-;;;;;;;;29662:22;:37;29693:4;29662:37;;;;;;;;;;;;;;;;;;;;;;;;;29658:92;;;29740:10;29714:7;:22;29730:4;29714:22;;;;;;;;;;;;;;;;:36;;;;;;;:::i;:::-;;;;;;;;29658:92;29783:1;29775:5;:9;29771:250;;;29825:5;29801:7;:20;29809:11;;;;;;;;;;;29801:20;;;;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;29849:22;:35;29872:11;;;;;;;;;;;29849:35;;;;;;;;;;;;;;;;;;;;;;;;;29845:87;;;29927:5;29903:7;:20;29911:11;;;;;;;;;;;29903:20;;;;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;29845:87;29990:11;;;;;;;;;;;29966:43;;29983:4;29966:43;;;30003:5;29966:43;;;;;;:::i;:::-;;;;;;;;29771:250;29322:706;;;;29270:758;:::o;26593:141::-;26681:4;26671:7;;:14;;;;:::i;:::-;26661:7;:24;;;;26722:4;26709:10;;:17;;;;:::i;:::-;26696:10;:30;;;;26593:141;;:::o;27515:440::-;27630:7;27652;27674;27709:12;27724:33;27740:7;27749;27724:15;:33::i;:::-;27709:48;;27768:18;27789:39;27811:7;27820;27789:21;:39::i;:::-;27768:60;;27839:23;27883:10;27876:4;:17;;;;:::i;:::-;27865:7;:29;;;;:::i;:::-;27839:55;;27913:15;27930:4;27936:10;27905:42;;;;;;;;;27515:440;;;;;:::o;27963:541::-;28162:7;28184;28206;28241:15;28269:11;28259:7;:21;;;;:::i;:::-;28241:39;;28291:12;28313:11;28306:4;:18;;;;:::i;:::-;28291:33;;28335:18;28369:11;28356:10;:24;;;;:::i;:::-;28335:45;;28391:23;28435:10;28428:4;:17;;;;:::i;:::-;28417:7;:29;;;;:::i;:::-;28391:55;;28465:7;28474:15;28491:4;28457:39;;;;;;;;;;27963:541;;;;;;;;:::o;30036:172::-;30114:7;30139;30134:22;;30155:1;30148:8;;;;30134:22;30196:4;30185:7;;30175;:17;;;;:::i;:::-;30174:26;;;;:::i;:::-;30167:33;;30036:172;;;;;:::o;30216:234::-;30327:7;30438:4;30371:7;:61;;30424:8;;30408:13;;:24;;;;:::i;:::-;30371:61;;;30397:8;;30381:13;;:24;;;;:::i;:::-;30371:61;30360:7;:74;;;;:::i;:::-;30359:83;;;;:::i;:::-;30352:90;;30216:234;;;;:::o;88:117:1:-;197:1;194;187:12;211:117;320:1;317;310:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:99::-;1077:6;1111:5;1105:12;1095:22;;1025:99;;;:::o;1130:169::-;1214:11;1248:6;1243:3;1236:19;1288:4;1283:3;1279:14;1264:29;;1130:169;;;;:::o;1305:307::-;1373:1;1383:113;1397:6;1394:1;1391:13;1383:113;;;1482:1;1477:3;1473:11;1467:18;1463:1;1458:3;1454:11;1447:39;1419:2;1416:1;1412:10;1407:15;;1383:113;;;1514:6;1511:1;1508:13;1505:101;;;1594:1;1585:6;1580:3;1576:16;1569:27;1505:101;1354:258;1305:307;;;:::o;1618:102::-;1659:6;1710:2;1706:7;1701:2;1694:5;1690:14;1686:28;1676:38;;1618:102;;;:::o;1726:364::-;1814:3;1842:39;1875:5;1842:39;:::i;:::-;1897:71;1961:6;1956:3;1897:71;:::i;:::-;1890:78;;1977:52;2022:6;2017:3;2010:4;2003:5;1999:16;1977:52;:::i;:::-;2054:29;2076:6;2054:29;:::i;:::-;2049:3;2045:39;2038:46;;1818:272;1726:364;;;;:::o;2096:313::-;2209:4;2247:2;2236:9;2232:18;2224:26;;2296:9;2290:4;2286:20;2282:1;2271:9;2267:17;2260:47;2324:78;2397:4;2388:6;2324:78;:::i;:::-;2316:86;;2096:313;;;;:::o;2415:126::-;2452:7;2492:42;2485:5;2481:54;2470:65;;2415:126;;;:::o;2547:96::-;2584:7;2613:24;2631:5;2613:24;:::i;:::-;2602:35;;2547:96;;;:::o;2649:122::-;2722:24;2740:5;2722:24;:::i;:::-;2715:5;2712:35;2702:63;;2761:1;2758;2751:12;2702:63;2649:122;:::o;2777:139::-;2823:5;2861:6;2848:20;2839:29;;2877:33;2904:5;2877:33;:::i;:::-;2777:139;;;;:::o;2922:474::-;2990:6;2998;3047:2;3035:9;3026:7;3022:23;3018:32;3015:119;;;3053:79;;:::i;:::-;3015:119;3173:1;3198:53;3243:7;3234:6;3223:9;3219:22;3198:53;:::i;:::-;3188:63;;3144:117;3300:2;3326:53;3371:7;3362:6;3351:9;3347:22;3326:53;:::i;:::-;3316:63;;3271:118;2922:474;;;;;:::o;3402:90::-;3436:7;3479:5;3472:13;3465:21;3454:32;;3402:90;;;:::o;3498:109::-;3579:21;3594:5;3579:21;:::i;:::-;3574:3;3567:34;3498:109;;:::o;3613:210::-;3700:4;3738:2;3727:9;3723:18;3715:26;;3751:65;3813:1;3802:9;3798:17;3789:6;3751:65;:::i;:::-;3613:210;;;;:::o;3829:329::-;3888:6;3937:2;3925:9;3916:7;3912:23;3908:32;3905:119;;;3943:79;;:::i;:::-;3905:119;4063:1;4088:53;4133:7;4124:6;4113:9;4109:22;4088:53;:::i;:::-;4078:63;;4034:117;3829:329;;;;:::o;4164:118::-;4251:24;4269:5;4251:24;:::i;:::-;4246:3;4239:37;4164:118;;:::o;4288:222::-;4381:4;4419:2;4408:9;4404:18;4396:26;;4432:71;4500:1;4489:9;4485:17;4476:6;4432:71;:::i;:::-;4288:222;;;;:::o;4516:619::-;4593:6;4601;4609;4658:2;4646:9;4637:7;4633:23;4629:32;4626:119;;;4664:79;;:::i;:::-;4626:119;4784:1;4809:53;4854:7;4845:6;4834:9;4830:22;4809:53;:::i;:::-;4799:63;;4755:117;4911:2;4937:53;4982:7;4973:6;4962:9;4958:22;4937:53;:::i;:::-;4927:63;;4882:118;5039:2;5065:53;5110:7;5101:6;5090:9;5086:22;5065:53;:::i;:::-;5055:63;;5010:118;4516:619;;;;;:::o;5141:86::-;5176:7;5216:4;5209:5;5205:16;5194:27;;5141:86;;;:::o;5233:112::-;5316:22;5332:5;5316:22;:::i;:::-;5311:3;5304:35;5233:112;;:::o;5351:214::-;5440:4;5478:2;5467:9;5463:18;5455:26;;5491:67;5555:1;5544:9;5540:17;5531:6;5491:67;:::i;:::-;5351:214;;;;:::o;5571:116::-;5641:21;5656:5;5641:21;:::i;:::-;5634:5;5631:32;5621:60;;5677:1;5674;5667:12;5621:60;5571:116;:::o;5693:133::-;5736:5;5774:6;5761:20;5752:29;;5790:30;5814:5;5790:30;:::i;:::-;5693:133;;;;:::o;5832:468::-;5897:6;5905;5954:2;5942:9;5933:7;5929:23;5925:32;5922:119;;;5960:79;;:::i;:::-;5922:119;6080:1;6105:53;6150:7;6141:6;6130:9;6126:22;6105:53;:::i;:::-;6095:63;;6051:117;6207:2;6233:50;6275:7;6266:6;6255:9;6251:22;6233:50;:::i;:::-;6223:60;;6178:115;5832:468;;;;;:::o;6306:117::-;6415:1;6412;6405:12;6429:117;6538:1;6535;6528:12;6552:117;6661:1;6658;6651:12;6692:568;6765:8;6775:6;6825:3;6818:4;6810:6;6806:17;6802:27;6792:122;;6833:79;;:::i;:::-;6792:122;6946:6;6933:20;6923:30;;6976:18;6968:6;6965:30;6962:117;;;6998:79;;:::i;:::-;6962:117;7112:4;7104:6;7100:17;7088:29;;7166:3;7158:4;7150:6;7146:17;7136:8;7132:32;7129:41;7126:128;;;7173:79;;:::i;:::-;7126:128;6692:568;;;;;:::o;7283:::-;7356:8;7366:6;7416:3;7409:4;7401:6;7397:17;7393:27;7383:122;;7424:79;;:::i;:::-;7383:122;7537:6;7524:20;7514:30;;7567:18;7559:6;7556:30;7553:117;;;7589:79;;:::i;:::-;7553:117;7703:4;7695:6;7691:17;7679:29;;7757:3;7749:4;7741:6;7737:17;7727:8;7723:32;7720:41;7717:128;;;7764:79;;:::i;:::-;7717:128;7283:568;;;;;:::o;7857:934::-;7979:6;7987;7995;8003;8052:2;8040:9;8031:7;8027:23;8023:32;8020:119;;;8058:79;;:::i;:::-;8020:119;8206:1;8195:9;8191:17;8178:31;8236:18;8228:6;8225:30;8222:117;;;8258:79;;:::i;:::-;8222:117;8371:80;8443:7;8434:6;8423:9;8419:22;8371:80;:::i;:::-;8353:98;;;;8149:312;8528:2;8517:9;8513:18;8500:32;8559:18;8551:6;8548:30;8545:117;;;8581:79;;:::i;:::-;8545:117;8694:80;8766:7;8757:6;8746:9;8742:22;8694:80;:::i;:::-;8676:98;;;;8471:313;7857:934;;;;;;;:::o;8797:118::-;8884:24;8902:5;8884:24;:::i;:::-;8879:3;8872:37;8797:118;;:::o;8921:222::-;9014:4;9052:2;9041:9;9037:18;9029:26;;9065:71;9133:1;9122:9;9118:17;9109:6;9065:71;:::i;:::-;8921:222;;;;:::o;9149:323::-;9205:6;9254:2;9242:9;9233:7;9229:23;9225:32;9222:119;;;9260:79;;:::i;:::-;9222:119;9380:1;9405:50;9447:7;9438:6;9427:9;9423:22;9405:50;:::i;:::-;9395:60;;9351:114;9149:323;;;;:::o;9478:474::-;9546:6;9554;9603:2;9591:9;9582:7;9578:23;9574:32;9571:119;;;9609:79;;:::i;:::-;9571:119;9729:1;9754:53;9799:7;9790:6;9779:9;9775:22;9754:53;:::i;:::-;9744:63;;9700:117;9856:2;9882:53;9927:7;9918:6;9907:9;9903:22;9882:53;:::i;:::-;9872:63;;9827:118;9478:474;;;;;:::o;9958:911::-;10053:6;10061;10069;10077;10085;10134:3;10122:9;10113:7;10109:23;10105:33;10102:120;;;10141:79;;:::i;:::-;10102:120;10261:1;10286:53;10331:7;10322:6;10311:9;10307:22;10286:53;:::i;:::-;10276:63;;10232:117;10388:2;10414:53;10459:7;10450:6;10439:9;10435:22;10414:53;:::i;:::-;10404:63;;10359:118;10516:2;10542:53;10587:7;10578:6;10567:9;10563:22;10542:53;:::i;:::-;10532:63;;10487:118;10644:2;10670:53;10715:7;10706:6;10695:9;10691:22;10670:53;:::i;:::-;10660:63;;10615:118;10772:3;10799:53;10844:7;10835:6;10824:9;10820:22;10799:53;:::i;:::-;10789:63;;10743:119;9958:911;;;;;;;;:::o;10875:60::-;10903:3;10924:5;10917:12;;10875:60;;;:::o;10941:142::-;10991:9;11024:53;11042:34;11051:24;11069:5;11051:24;:::i;:::-;11042:34;:::i;:::-;11024:53;:::i;:::-;11011:66;;10941:142;;;:::o;11089:126::-;11139:9;11172:37;11203:5;11172:37;:::i;:::-;11159:50;;11089:126;;;:::o;11221:146::-;11291:9;11324:37;11355:5;11324:37;:::i;:::-;11311:50;;11221:146;;;:::o;11373:171::-;11480:57;11531:5;11480:57;:::i;:::-;11475:3;11468:70;11373:171;;:::o;11550:262::-;11663:4;11701:2;11690:9;11686:18;11678:26;;11714:91;11802:1;11791:9;11787:17;11778:6;11714:91;:::i;:::-;11550:262;;;;:::o;11818:182::-;11958:34;11954:1;11946:6;11942:14;11935:58;11818:182;:::o;12006:366::-;12148:3;12169:67;12233:2;12228:3;12169:67;:::i;:::-;12162:74;;12245:93;12334:3;12245:93;:::i;:::-;12363:2;12358:3;12354:12;12347:19;;12006:366;;;:::o;12378:419::-;12544:4;12582:2;12571:9;12567:18;12559:26;;12631:9;12625:4;12621:20;12617:1;12606:9;12602:17;12595:47;12659:131;12785:4;12659:131;:::i;:::-;12651:139;;12378:419;;;:::o;12803:180::-;12851:77;12848:1;12841:88;12948:4;12945:1;12938:15;12972:4;12969:1;12962:15;12989:320;13033:6;13070:1;13064:4;13060:12;13050:22;;13117:1;13111:4;13107:12;13138:18;13128:81;;13194:4;13186:6;13182:17;13172:27;;13128:81;13256:2;13248:6;13245:14;13225:18;13222:38;13219:84;;;13275:18;;:::i;:::-;13219:84;13040:269;12989:320;;;:::o;13315:180::-;13363:77;13360:1;13353:88;13460:4;13457:1;13450:15;13484:4;13481:1;13474:15;13501:191;13541:4;13561:20;13579:1;13561:20;:::i;:::-;13556:25;;13595:20;13613:1;13595:20;:::i;:::-;13590:25;;13634:1;13631;13628:8;13625:34;;;13639:18;;:::i;:::-;13625:34;13684:1;13681;13677:9;13669:17;;13501:191;;;;:::o;13698:181::-;13838:33;13834:1;13826:6;13822:14;13815:57;13698:181;:::o;13885:366::-;14027:3;14048:67;14112:2;14107:3;14048:67;:::i;:::-;14041:74;;14124:93;14213:3;14124:93;:::i;:::-;14242:2;14237:3;14233:12;14226:19;;13885:366;;;:::o;14257:419::-;14423:4;14461:2;14450:9;14446:18;14438:26;;14510:9;14504:4;14500:20;14496:1;14485:9;14481:17;14474:47;14538:131;14664:4;14538:131;:::i;:::-;14530:139;;14257:419;;;:::o;14682:180::-;14730:77;14727:1;14720:88;14827:4;14824:1;14817:15;14851:4;14848:1;14841:15;14868:185;14908:1;14925:20;14943:1;14925:20;:::i;:::-;14920:25;;14959:20;14977:1;14959:20;:::i;:::-;14954:25;;14998:1;14988:35;;15003:18;;:::i;:::-;14988:35;15045:1;15042;15038:9;15033:14;;14868:185;;;;:::o;15059:173::-;15199:25;15195:1;15187:6;15183:14;15176:49;15059:173;:::o;15238:366::-;15380:3;15401:67;15465:2;15460:3;15401:67;:::i;:::-;15394:74;;15477:93;15566:3;15477:93;:::i;:::-;15595:2;15590:3;15586:12;15579:19;;15238:366;;;:::o;15610:419::-;15776:4;15814:2;15803:9;15799:18;15791:26;;15863:9;15857:4;15853:20;15849:1;15838:9;15834:17;15827:47;15891:131;16017:4;15891:131;:::i;:::-;15883:139;;15610:419;;;:::o;16035:180::-;16083:77;16080:1;16073:88;16180:4;16177:1;16170:15;16204:4;16201:1;16194:15;16221:180;16269:77;16266:1;16259:88;16366:4;16363:1;16356:15;16390:4;16387:1;16380:15;16407:233;16446:3;16469:24;16487:5;16469:24;:::i;:::-;16460:33;;16515:66;16508:5;16505:77;16502:103;;;16585:18;;:::i;:::-;16502:103;16632:1;16625:5;16621:13;16614:20;;16407:233;;;:::o;16646:305::-;16686:3;16705:20;16723:1;16705:20;:::i;:::-;16700:25;;16739:20;16757:1;16739:20;:::i;:::-;16734:25;;16893:1;16825:66;16821:74;16818:1;16815:81;16812:107;;;16899:18;;:::i;:::-;16812:107;16943:1;16940;16936:9;16929:16;;16646:305;;;;:::o;16957:177::-;17097:29;17093:1;17085:6;17081:14;17074:53;16957:177;:::o;17140:366::-;17282:3;17303:67;17367:2;17362:3;17303:67;:::i;:::-;17296:74;;17379:93;17468:3;17379:93;:::i;:::-;17497:2;17492:3;17488:12;17481:19;;17140:366;;;:::o;17512:419::-;17678:4;17716:2;17705:9;17701:18;17693:26;;17765:9;17759:4;17755:20;17751:1;17740:9;17736:17;17729:47;17793:131;17919:4;17793:131;:::i;:::-;17785:139;;17512:419;;;:::o;17937:102::-;17979:8;18026:5;18023:1;18019:13;17998:34;;17937:102;;;:::o;18045:848::-;18106:5;18113:4;18137:6;18128:15;;18161:5;18152:14;;18175:712;18196:1;18186:8;18183:15;18175:712;;;18291:4;18286:3;18282:14;18276:4;18273:24;18270:50;;;18300:18;;:::i;:::-;18270:50;18350:1;18340:8;18336:16;18333:451;;;18765:4;18758:5;18754:16;18745:25;;18333:451;18815:4;18809;18805:15;18797:23;;18845:32;18868:8;18845:32;:::i;:::-;18833:44;;18175:712;;;18045:848;;;;;;;:::o;18899:1073::-;18953:5;19144:8;19134:40;;19165:1;19156:10;;19167:5;;19134:40;19193:4;19183:36;;19210:1;19201:10;;19212:5;;19183:36;19279:4;19327:1;19322:27;;;;19363:1;19358:191;;;;19272:277;;19322:27;19340:1;19331:10;;19342:5;;;19358:191;19403:3;19393:8;19390:17;19387:43;;;19410:18;;:::i;:::-;19387:43;19459:8;19456:1;19452:16;19443:25;;19494:3;19487:5;19484:14;19481:40;;;19501:18;;:::i;:::-;19481:40;19534:5;;;19272:277;;19658:2;19648:8;19645:16;19639:3;19633:4;19630:13;19626:36;19608:2;19598:8;19595:16;19590:2;19584:4;19581:12;19577:35;19561:111;19558:246;;;19714:8;19708:4;19704:19;19695:28;;19749:3;19742:5;19739:14;19736:40;;;19756:18;;:::i;:::-;19736:40;19789:5;;19558:246;19829:42;19867:3;19857:8;19851:4;19848:1;19829:42;:::i;:::-;19814:57;;;;19903:4;19898:3;19894:14;19887:5;19884:25;19881:51;;;19912:18;;:::i;:::-;19881:51;19961:4;19954:5;19950:16;19941:25;;18899:1073;;;;;;:::o;19978:281::-;20036:5;20060:23;20078:4;20060:23;:::i;:::-;20052:31;;20104:25;20120:8;20104:25;:::i;:::-;20092:37;;20148:104;20185:66;20175:8;20169:4;20148:104;:::i;:::-;20139:113;;19978:281;;;;:::o;20265:348::-;20305:7;20328:20;20346:1;20328:20;:::i;:::-;20323:25;;20362:20;20380:1;20362:20;:::i;:::-;20357:25;;20550:1;20482:66;20478:74;20475:1;20472:81;20467:1;20460:9;20453:17;20449:105;20446:131;;;20557:18;;:::i;:::-;20446:131;20605:1;20602;20598:9;20587:20;;20265:348;;;;:::o;20619:225::-;20759:34;20755:1;20747:6;20743:14;20736:58;20828:8;20823:2;20815:6;20811:15;20804:33;20619:225;:::o;20850:366::-;20992:3;21013:67;21077:2;21072:3;21013:67;:::i;:::-;21006:74;;21089:93;21178:3;21089:93;:::i;:::-;21207:2;21202:3;21198:12;21191:19;;20850:366;;;:::o;21222:419::-;21388:4;21426:2;21415:9;21411:18;21403:26;;21475:9;21469:4;21465:20;21461:1;21450:9;21446:17;21439:47;21503:131;21629:4;21503:131;:::i;:::-;21495:139;;21222:419;;;:::o;21647:182::-;21787:34;21783:1;21775:6;21771:14;21764:58;21647:182;:::o;21835:366::-;21977:3;21998:67;22062:2;22057:3;21998:67;:::i;:::-;21991:74;;22074:93;22163:3;22074:93;:::i;:::-;22192:2;22187:3;22183:12;22176:19;;21835:366;;;:::o;22207:419::-;22373:4;22411:2;22400:9;22396:18;22388:26;;22460:9;22454:4;22450:20;22446:1;22435:9;22431:17;22424:47;22488:131;22614:4;22488:131;:::i;:::-;22480:139;;22207:419;;;:::o;22632:180::-;22772:32;22768:1;22760:6;22756:14;22749:56;22632:180;:::o;22818:366::-;22960:3;22981:67;23045:2;23040:3;22981:67;:::i;:::-;22974:74;;23057:93;23146:3;23057:93;:::i;:::-;23175:2;23170:3;23166:12;23159:19;;22818:366;;;:::o;23190:419::-;23356:4;23394:2;23383:9;23379:18;23371:26;;23443:9;23437:4;23433:20;23429:1;23418:9;23414:17;23407:47;23471:131;23597:4;23471:131;:::i;:::-;23463:139;;23190:419;;;:::o;23615:174::-;23755:26;23751:1;23743:6;23739:14;23732:50;23615:174;:::o;23795:366::-;23937:3;23958:67;24022:2;24017:3;23958:67;:::i;:::-;23951:74;;24034:93;24123:3;24034:93;:::i;:::-;24152:2;24147:3;24143:12;24136:19;;23795:366;;;:::o;24167:419::-;24333:4;24371:2;24360:9;24356:18;24348:26;;24420:9;24414:4;24410:20;24406:1;24395:9;24391:17;24384:47;24448:131;24574:4;24448:131;:::i;:::-;24440:139;;24167:419;;;:::o;24592:172::-;24732:24;24728:1;24720:6;24716:14;24709:48;24592:172;:::o;24770:366::-;24912:3;24933:67;24997:2;24992:3;24933:67;:::i;:::-;24926:74;;25009:93;25098:3;25009:93;:::i;:::-;25127:2;25122:3;25118:12;25111:19;;24770:366;;;:::o;25142:419::-;25308:4;25346:2;25335:9;25331:18;25323:26;;25395:9;25389:4;25385:20;25381:1;25370:9;25366:17;25359:47;25423:131;25549:4;25423:131;:::i;:::-;25415:139;;25142:419;;;:::o;25567:171::-;25707:23;25703:1;25695:6;25691:14;25684:47;25567:171;:::o;25744:366::-;25886:3;25907:67;25971:2;25966:3;25907:67;:::i;:::-;25900:74;;25983:93;26072:3;25983:93;:::i;:::-;26101:2;26096:3;26092:12;26085:19;;25744:366;;;:::o;26116:419::-;26282:4;26320:2;26309:9;26305:18;26297:26;;26369:9;26363:4;26359:20;26355:1;26344:9;26340:17;26333:47;26397:131;26523:4;26397:131;:::i;:::-;26389:139;;26116:419;;;:::o;26541:176::-;26681:28;26677:1;26669:6;26665:14;26658:52;26541:176;:::o;26723:366::-;26865:3;26886:67;26950:2;26945:3;26886:67;:::i;:::-;26879:74;;26962:93;27051:3;26962:93;:::i;:::-;27080:2;27075:3;27071:12;27064:19;;26723:366;;;:::o;27095:419::-;27261:4;27299:2;27288:9;27284:18;27276:26;;27348:9;27342:4;27338:20;27334:1;27323:9;27319:17;27312:47;27376:131;27502:4;27376:131;:::i;:::-;27368:139;;27095:419;;;:::o;27520:180::-;27568:77;27565:1;27558:88;27665:4;27662:1;27655:15;27689:4;27686:1;27679:15;27706:143;27763:5;27794:6;27788:13;27779:22;;27810:33;27837:5;27810:33;:::i;:::-;27706:143;;;;:::o;27855:351::-;27925:6;27974:2;27962:9;27953:7;27949:23;27945:32;27942:119;;;27980:79;;:::i;:::-;27942:119;28100:1;28125:64;28181:7;28172:6;28161:9;28157:22;28125:64;:::i;:::-;28115:74;;28071:128;27855:351;;;;:::o;28212:85::-;28257:7;28286:5;28275:16;;28212:85;;;:::o;28303:158::-;28361:9;28394:61;28412:42;28421:32;28447:5;28421:32;:::i;:::-;28412:42;:::i;:::-;28394:61;:::i;:::-;28381:74;;28303:158;;;:::o;28467:147::-;28562:45;28601:5;28562:45;:::i;:::-;28557:3;28550:58;28467:147;;:::o;28620:114::-;28687:6;28721:5;28715:12;28705:22;;28620:114;;;:::o;28740:184::-;28839:11;28873:6;28868:3;28861:19;28913:4;28908:3;28904:14;28889:29;;28740:184;;;;:::o;28930:132::-;28997:4;29020:3;29012:11;;29050:4;29045:3;29041:14;29033:22;;28930:132;;;:::o;29068:108::-;29145:24;29163:5;29145:24;:::i;:::-;29140:3;29133:37;29068:108;;:::o;29182:179::-;29251:10;29272:46;29314:3;29306:6;29272:46;:::i;:::-;29350:4;29345:3;29341:14;29327:28;;29182:179;;;;:::o;29367:113::-;29437:4;29469;29464:3;29460:14;29452:22;;29367:113;;;:::o;29516:732::-;29635:3;29664:54;29712:5;29664:54;:::i;:::-;29734:86;29813:6;29808:3;29734:86;:::i;:::-;29727:93;;29844:56;29894:5;29844:56;:::i;:::-;29923:7;29954:1;29939:284;29964:6;29961:1;29958:13;29939:284;;;30040:6;30034:13;30067:63;30126:3;30111:13;30067:63;:::i;:::-;30060:70;;30153:60;30206:6;30153:60;:::i;:::-;30143:70;;29999:224;29986:1;29983;29979:9;29974:14;;29939:284;;;29943:14;30239:3;30232:10;;29640:608;;;29516:732;;;;:::o;30254:831::-;30517:4;30555:3;30544:9;30540:19;30532:27;;30569:71;30637:1;30626:9;30622:17;30613:6;30569:71;:::i;:::-;30650:80;30726:2;30715:9;30711:18;30702:6;30650:80;:::i;:::-;30777:9;30771:4;30767:20;30762:2;30751:9;30747:18;30740:48;30805:108;30908:4;30899:6;30805:108;:::i;:::-;30797:116;;30923:72;30991:2;30980:9;30976:18;30967:6;30923:72;:::i;:::-;31005:73;31073:3;31062:9;31058:19;31049:6;31005:73;:::i;:::-;30254:831;;;;;;;;:::o;31091:807::-;31340:4;31378:3;31367:9;31363:19;31355:27;;31392:71;31460:1;31449:9;31445:17;31436:6;31392:71;:::i;:::-;31473:72;31541:2;31530:9;31526:18;31517:6;31473:72;:::i;:::-;31555:80;31631:2;31620:9;31616:18;31607:6;31555:80;:::i;:::-;31645;31721:2;31710:9;31706:18;31697:6;31645:80;:::i;:::-;31735:73;31803:3;31792:9;31788:19;31779:6;31735:73;:::i;:::-;31818;31886:3;31875:9;31871:19;31862:6;31818:73;:::i;:::-;31091:807;;;;;;;;;:::o;31904:143::-;31961:5;31992:6;31986:13;31977:22;;32008:33;32035:5;32008:33;:::i;:::-;31904:143;;;;:::o;32053:663::-;32141:6;32149;32157;32206:2;32194:9;32185:7;32181:23;32177:32;32174:119;;;32212:79;;:::i;:::-;32174:119;32332:1;32357:64;32413:7;32404:6;32393:9;32389:22;32357:64;:::i;:::-;32347:74;;32303:128;32470:2;32496:64;32552:7;32543:6;32532:9;32528:22;32496:64;:::i;:::-;32486:74;;32441:129;32609:2;32635:64;32691:7;32682:6;32671:9;32667:22;32635:64;:::i;:::-;32625:74;;32580:129;32053:663;;;;;:::o
Swarm Source
ipfs://c6ea75a37e16846b8c0126a27dbed9684601d405ec18834cdf0157124fed30bb
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.