Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
1,000,000,000,000 KSC
Holders
181
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
212,453,532.374177628 KSCValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
KibaStableCapital
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-11-27 */ /** Kiba-Stable Capital: $KSC Deflationary Token, with 60% supply burned to 0xDEAD address. You buy on Ethereum, we execute algorithmic stablecoin strategies on various chains and return the profits to $KSC holders. Initial Supply: 1,000,000,000,000 $KSC 60% of $KSC burned to 0xDEAD address. 10% of each buy goes to existing holders. 10% of each sell goes into various-chain algorithmic stablecoin investing to add to the treasury and buy back $KSC tokens. Twitter: https://twitter.com/KibaStable Website: https://KibaStableCapital.link Telegram: https://t.me/KibaStableCapital */ // File: @openzeppelin/contracts/utils/math/SafeMath.sol // OpenZeppelin Contracts v4.4.0 (utils/math/SafeMath.sol) pragma solidity ^0.8.0; // CAUTION // This version of SafeMath should only be used with Solidity 0.8 or later, // because it relies on the compiler's built in overflow checks. /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } // File: @openzeppelin/contracts/token/ERC20/IERC20.sol // OpenZeppelin Contracts v4.4.0 (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts v4.4.0 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts v4.4.0 (access/Ownable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev 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); } } // File: @openzeppelin/contracts/utils/Address.sol // OpenZeppelin Contracts v4.4.0 (utils/Address.sol) pragma solidity ^0.8.0; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @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); } } } } // File: contracts/KibaStableCapital.sol // Vari-Stable Capital: $KSC // Deflationary DeFi-as-a-Service (DaaS) Token, with 60% supply burned to 0x0dEaD // You buy on Ethereum, we execute algorithmic stablecoin strategies on various chains and return the profits to $KSC holders. //Initial Supply: 1,000,000,000,000 $KSC //60% of $KSC burned to 0x0dEaD //10% of each buy goes to existing holders. //10% of each sell goes into various-chain algorithmic stablecoin investing to add to the treasury and buy back $KSC tokens. // Twitter: https://twitter.com/VariStableCap // Website: https://KibaStableCapital.link/ // Medium: https://KibaStableCapital.medium.com/ // Telegram: https://t.me/KibaStableCapital interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } pragma solidity ^0.8.0; //SPDX-License-Identifier: MIT contract KibaStableCapital is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; mapping (address => uint256) private _rOwned; mapping (address => uint256) private _tOwned; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _isExcludedFromFee; mapping (address => bool) private _isExcluded; address[] private _excluded; uint256 private constant MAX = ~uint256(0); uint256 private _tTotal = 1000000000000 * 10**9; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; string private _name = 'KibaStableCapital'; string private _symbol = 'KSC'; uint8 private _decimals = 9; uint256 private _taxFee = 10; uint256 private _teamFee = 10; uint256 private _previousTaxFee = _taxFee; uint256 private _previousTeamFee = _teamFee; address payable public _KSCWalletAddress; address payable public _marketingWalletAddress; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; bool inSwap = false; bool public swapEnabled = true; uint256 private _maxTxAmount = 100000000000000e9; // We will set a minimum amount of tokens to be swaped => 5M uint256 private _numOfTokensToExchangeForTeam = 5 * 10**3 * 10**9; event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap); event SwapEnabledUpdated(bool enabled); modifier lockTheSwap { inSwap = true; _; inSwap = false; } constructor (address payable KSCWalletAddress, address payable marketingWalletAddress) { _KSCWalletAddress = KSCWalletAddress; _marketingWalletAddress = marketingWalletAddress; _rOwned[_msgSender()] = _rTotal; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // UniswapV2 for Ethereum network // Create a uniswap pair for this new token uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); // set the rest of the contract variables uniswapV2Router = _uniswapV2Router; // Exclude owner and this contract from fee _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; 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 override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { if (_isExcluded[account]) return _tOwned[account]; return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } function isExcluded(address account) public view returns (bool) { return _isExcluded[account]; } function setExcludeFromFee(address account, bool excluded) external onlyOwner() { _isExcludedFromFee[account] = excluded; } function totalFees() public view returns (uint256) { return _tFeeTotal; } function deliver(uint256 tAmount) public { address sender = _msgSender(); require(!_isExcluded[sender], "Excluded addresses cannot call this function"); (uint256 rAmount,,,,,) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rTotal = _rTotal.sub(rAmount); _tFeeTotal = _tFeeTotal.add(tAmount); } function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns(uint256) { require(tAmount <= _tTotal, "Amount must be less than supply"); if (!deductTransferFee) { (uint256 rAmount,,,,,) = _getValues(tAmount); return rAmount; } else { (,uint256 rTransferAmount,,,,) = _getValues(tAmount); return rTransferAmount; } } function tokenFromReflection(uint256 rAmount) public view returns(uint256) { require(rAmount <= _rTotal, "Amount must be less than total reflections"); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } function excludeAccount(address account) external onlyOwner() { require(account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 'We can not exclude Uniswap router.'); require(!_isExcluded[account], "Account is already excluded"); if(_rOwned[account] > 0) { _tOwned[account] = tokenFromReflection(_rOwned[account]); } _isExcluded[account] = true; _excluded.push(account); } function includeAccount(address account) external onlyOwner() { require(_isExcluded[account], "Account is already excluded"); for (uint256 i = 0; i < _excluded.length; i++) { if (_excluded[i] == account) { _excluded[i] = _excluded[_excluded.length - 1]; _tOwned[account] = 0; _isExcluded[account] = false; _excluded.pop(); break; } } } function removeAllFee() private { if(_taxFee == 0 && _teamFee == 0) return; _previousTaxFee = _taxFee; _previousTeamFee = _teamFee; _taxFee = 0; _teamFee = 0; } function restoreAllFee() private { _taxFee = _previousTaxFee; _teamFee = _previousTeamFee; } function isExcludedFromFee(address account) public view returns(bool) { return _isExcludedFromFee[account]; } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer(address sender, address recipient, uint256 amount) private { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); if(sender != owner() && recipient != owner()) require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount."); // is the token balance of this contract address over the min number of // tokens that we need to initiate a swap? // also, don't get caught in a circular team event. // also, don't swap if sender is uniswap pair. uint256 contractTokenBalance = balanceOf(address(this)); if(contractTokenBalance >= _maxTxAmount) { contractTokenBalance = _maxTxAmount; } bool overMinTokenBalance = contractTokenBalance >= _numOfTokensToExchangeForTeam; if (!inSwap && swapEnabled && overMinTokenBalance && sender != uniswapV2Pair) { // We need to swap the current tokens to ETH and send to the team wallet swapTokensForEth(contractTokenBalance); uint256 contractETHBalance = address(this).balance; if(contractETHBalance > 0) { sendETHToTeam(address(this).balance); } } //indicates if fee should be deducted from transfer bool takeFee = true; //if any account belongs to _isExcludedFromFee account then remove the fee if(_isExcludedFromFee[sender] || _isExcludedFromFee[recipient]){ takeFee = false; } //transfer amount, it will take tax and team fee _tokenTransfer(sender,recipient,amount,takeFee); } function swapTokensForEth(uint256 tokenAmount) private lockTheSwap{ // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function sendETHToTeam(uint256 amount) private { _KSCWalletAddress.transfer(amount.div(2)); _marketingWalletAddress.transfer(amount.div(2)); } // We are exposing these functions to be able to manual swap and send // in case the token is highly valued and 5M becomes too much function manualSwap() external onlyOwner() { uint256 contractBalance = balanceOf(address(this)); swapTokensForEth(contractBalance); } function manualSend() external onlyOwner() { uint256 contractETHBalance = address(this).balance; sendETHToTeam(contractETHBalance); } function setSwapEnabled(bool enabled) external onlyOwner(){ swapEnabled = enabled; } function _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFee) private { if(!takeFee) removeAllFee(); if (_isExcluded[sender] && !_isExcluded[recipient]) { _transferFromExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && _isExcluded[recipient]) { _transferToExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && !_isExcluded[recipient]) { _transferStandard(sender, recipient, amount); } else if (_isExcluded[sender] && _isExcluded[recipient]) { _transferBothExcluded(sender, recipient, amount); } else { _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 tTeam) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeTeam(tTeam); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferToExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeTeam(tTeam); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeTeam(tTeam); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeTeam(tTeam); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _takeTeam(uint256 tTeam) private { uint256 currentRate = _getRate(); uint256 rTeam = tTeam.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rTeam); if(_isExcluded[address(this)]) _tOwned[address(this)] = _tOwned[address(this)].add(tTeam); } function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } //to recieve ETH from uniswapV2Router when swaping receive() external payable {} function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) { (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(tAmount, _taxFee, _teamFee); uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, currentRate); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam); } function _getTValues(uint256 tAmount, uint256 taxFee, uint256 teamFee) private pure returns (uint256, uint256, uint256) { uint256 tFee = tAmount.mul(taxFee).div(100); uint256 tTeam = tAmount.mul(teamFee).div(100); uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam); return (tTransferAmount, tFee, tTeam); } function _getRValues(uint256 tAmount, uint256 tFee, uint256 currentRate) private pure returns (uint256, uint256, uint256) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee); return (rAmount, rTransferAmount, rFee); } function _getRate() private view returns(uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply.div(tSupply); } function _getCurrentSupply() private view returns(uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; for (uint256 i = 0; i < _excluded.length; i++) { if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal); rSupply = rSupply.sub(_rOwned[_excluded[i]]); tSupply = tSupply.sub(_tOwned[_excluded[i]]); } if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } function _getTaxFee() private view returns(uint256) { return _taxFee; } function _getMaxTxAmount() private view returns(uint256) { return _maxTxAmount; } function _getETHBalance() public view returns(uint256 balance) { return address(this).balance; } function _setTaxFee(uint256 taxFee) external onlyOwner() { require(taxFee >= 1 && taxFee <= 25, 'taxFee should be in 1 - 25'); _taxFee = taxFee; } function _setTeamFee(uint256 teamFee) external onlyOwner() { require(teamFee >= 1 && teamFee <= 25, 'teamFee should be in 1 - 25'); _teamFee = teamFee; } function _setKSCWallet(address payable KSCWalletAddress) external onlyOwner() { _KSCWalletAddress = KSCWalletAddress; } function _setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() { require(maxTxAmount >= 100000000000000e9 , 'maxTxAmount should be greater than 100000000000000e9'); _maxTxAmount = maxTxAmount; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address payable","name":"KSCWalletAddress","type":"address"},{"internalType":"address payable","name":"marketingWalletAddress","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":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapEnabledUpdated","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":"_KSCWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_getETHBalance","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"KSCWalletAddress","type":"address"}],"name":"_setKSCWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"_setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"_setTaxFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"teamFee","type":"uint256"}],"name":"_setTeamFee","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":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeAccount","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":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","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":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c0604052683635c9adc5dea0000060075560075460001962000023919062000952565b6000196200003291906200088f565b6008556040518060400160405280601181526020017f4b696261537461626c654361706974616c000000000000000000000000000000815250600a908051906020019062000082929190620006cc565b506040518060400160405280600381526020017f4b53430000000000000000000000000000000000000000000000000000000000815250600b9080519060200190620000d0929190620006cc565b506009600c60006101000a81548160ff021916908360ff160217905550600a600d55600a600e55600d54600f55600e546010556000601260146101000a81548160ff0219169083151502179055506001601260156101000a81548160ff02191690831515021790555069152d02c7e14af680000060135565048c273950006014553480156200015e57600080fd5b5060405162005983380380620059838339818101604052810190620001849190620007dc565b620001a462000198620005d760201b60201c565b620005df60201b60201c565b81601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600854600160006200023d620005d760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620002db57600080fd5b505afa158015620002f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003169190620007aa565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200037957600080fd5b505afa1580156200038e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003b49190620007aa565b6040518363ffffffff1660e01b8152600401620003d392919062000845565b602060405180830381600087803b158015620003ee57600080fd5b505af115801562000403573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004299190620007aa565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b81525050600160046000620004ac620006a360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000565620005d760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600754604051620005c6919062000872565b60405180910390a350505062000a50565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054620006da906200091c565b90600052602060002090601f016020900481019282620006fe57600085556200074a565b82601f106200071957805160ff19168380011785556200074a565b828001600101855582156200074a579182015b82811115620007495782518255916020019190600101906200072c565b5b5090506200075991906200075d565b5090565b5b80821115620007785760008160009055506001016200075e565b5090565b6000815190506200078d8162000a1c565b92915050565b600081519050620007a48162000a36565b92915050565b600060208284031215620007c357620007c262000a17565b5b6000620007d3848285016200077c565b91505092915050565b60008060408385031215620007f657620007f562000a17565b5b6000620008068582860162000793565b9250506020620008198582860162000793565b9150509250929050565b6200082e81620008ca565b82525050565b6200083f8162000912565b82525050565b60006040820190506200085c600083018562000823565b6200086b602083018462000823565b9392505050565b600060208201905062000889600083018462000834565b92915050565b60006200089c8262000912565b9150620008a98362000912565b925082821015620008bf57620008be6200098a565b5b828203905092915050565b6000620008d782620008f2565b9050919050565b6000620008eb82620008f2565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060028204905060018216806200093557607f821691505b602082108114156200094c576200094b620009e8565b5b50919050565b60006200095f8262000912565b91506200096c8362000912565b9250826200097f576200097e620009b9565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b62000a2781620008ca565b811462000a3357600080fd5b50565b62000a4181620008de565b811462000a4d57600080fd5b50565b60805160601c60a05160601c614eeb62000a9860003960008181610f6b01526123a701526000818161095d015281816126c6015281816127b601526127dd0152614eeb6000f3fe6080604052600436106102135760003560e01c80636ddd171311610118578063cba0e996116100a0578063f2cc0c181161006f578063f2cc0c18146107e4578063f2fde38b1461080d578063f429389014610836578063f815a8421461084d578063f84354f1146108785761021a565b8063cba0e99614610716578063cf1bfc2c14610753578063dd62ed3e1461077e578063e01af92c146107bb5761021a565b80638da5cb5b116100e75780638da5cb5b1461061d57806395d89b4114610648578063a457c2d714610673578063a9059cbb146106b0578063af9549e0146106ed5761021a565b80636ddd17131461057557806370a08231146105a0578063715018a6146105dd57806377c8eafc146105f45761021a565b8063313ce5671161019b5780634549b0391161016a5780634549b0391461049057806349bd5a5e146104cd57806351bc3c85146104f85780635342acb41461050f5780635880b8731461054c5761021a565b8063313ce567146103d457806339509351146103ff5780633bd5d1731461043c5780634144d9e4146104655761021a565b806318160ddd116101e257806318160ddd146102dd5780631bbae6e01461030857806323b872dd14610331578063286671621461036e5780632d838119146103975761021a565b806306fdde031461021f578063095ea7b31461024a57806313114a9d146102875780631694505e146102b25761021a565b3661021a57005b600080fd5b34801561022b57600080fd5b506102346108a1565b6040516102419190614331565b60405180910390f35b34801561025657600080fd5b50610271600480360381019061026c9190613e94565b610933565b60405161027e91906142fb565b60405180910390f35b34801561029357600080fd5b5061029c610951565b6040516102a99190614553565b60405180910390f35b3480156102be57600080fd5b506102c761095b565b6040516102d49190614316565b60405180910390f35b3480156102e957600080fd5b506102f261097f565b6040516102ff9190614553565b60405180910390f35b34801561031457600080fd5b5061032f600480360381019061032a9190613f01565b610989565b005b34801561033d57600080fd5b5061035860048036038101906103539190613e01565b610a5c565b60405161036591906142fb565b60405180910390f35b34801561037a57600080fd5b5061039560048036038101906103909190613f01565b610b35565b005b3480156103a357600080fd5b506103be60048036038101906103b99190613f01565b610c0c565b6040516103cb9190614553565b60405180910390f35b3480156103e057600080fd5b506103e9610c7a565b6040516103f691906145c8565b60405180910390f35b34801561040b57600080fd5b5061042660048036038101906104219190613e94565b610c91565b60405161043391906142fb565b60405180910390f35b34801561044857600080fd5b50610463600480360381019061045e9190613f01565b610d44565b005b34801561047157600080fd5b5061047a610ebf565b60405161048791906142e0565b60405180910390f35b34801561049c57600080fd5b506104b760048036038101906104b29190613f2e565b610ee5565b6040516104c49190614553565b60405180910390f35b3480156104d957600080fd5b506104e2610f69565b6040516104ef91906142c5565b60405180910390f35b34801561050457600080fd5b5061050d610f8d565b005b34801561051b57600080fd5b5061053660048036038101906105319190613d3a565b611022565b60405161054391906142fb565b60405180910390f35b34801561055857600080fd5b50610573600480360381019061056e9190613f01565b611078565b005b34801561058157600080fd5b5061058a61114f565b60405161059791906142fb565b60405180910390f35b3480156105ac57600080fd5b506105c760048036038101906105c29190613d3a565b611162565b6040516105d49190614553565b60405180910390f35b3480156105e957600080fd5b506105f261124d565b005b34801561060057600080fd5b5061061b60048036038101906106169190613d94565b6112d5565b005b34801561062957600080fd5b50610632611395565b60405161063f91906142c5565b60405180910390f35b34801561065457600080fd5b5061065d6113be565b60405161066a9190614331565b60405180910390f35b34801561067f57600080fd5b5061069a60048036038101906106959190613e94565b611450565b6040516106a791906142fb565b60405180910390f35b3480156106bc57600080fd5b506106d760048036038101906106d29190613e94565b61151d565b6040516106e491906142fb565b60405180910390f35b3480156106f957600080fd5b50610714600480360381019061070f9190613e54565b61153b565b005b34801561072257600080fd5b5061073d60048036038101906107389190613d3a565b611612565b60405161074a91906142fb565b60405180910390f35b34801561075f57600080fd5b50610768611668565b60405161077591906142e0565b60405180910390f35b34801561078a57600080fd5b506107a560048036038101906107a09190613dc1565b61168e565b6040516107b29190614553565b60405180910390f35b3480156107c757600080fd5b506107e260048036038101906107dd9190613ed4565b611715565b005b3480156107f057600080fd5b5061080b60048036038101906108069190613d3a565b6117ae565b005b34801561081957600080fd5b50610834600480360381019061082f9190613d3a565b611acc565b005b34801561084257600080fd5b5061084b611bc4565b005b34801561085957600080fd5b50610862611c51565b60405161086f9190614553565b60405180910390f35b34801561088457600080fd5b5061089f600480360381019061089a9190613d3a565b611c59565b005b6060600a80546108b09061482f565b80601f01602080910402602001604051908101604052809291908181526020018280546108dc9061482f565b80156109295780601f106108fe57610100808354040283529160200191610929565b820191906000526020600020905b81548152906001019060200180831161090c57829003601f168201915b5050505050905090565b6000610947610940611f8f565b8484611f97565b6001905092915050565b6000600954905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600754905090565b610991611f8f565b73ffffffffffffffffffffffffffffffffffffffff166109af611395565b73ffffffffffffffffffffffffffffffffffffffff1614610a05576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109fc90614473565b60405180910390fd5b69152d02c7e14af6800000811015610a52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4990614413565b60405180910390fd5b8060138190555050565b6000610a69848484612162565b610b2a84610a75611f8f565b610b2585604051806060016040528060288152602001614e6960289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610adb611f8f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124e39092919063ffffffff16565b611f97565b600190509392505050565b610b3d611f8f565b73ffffffffffffffffffffffffffffffffffffffff16610b5b611395565b73ffffffffffffffffffffffffffffffffffffffff1614610bb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba890614473565b60405180910390fd5b60018110158015610bc3575060198111155b610c02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf9906143d3565b60405180910390fd5b80600e8190555050565b6000600854821115610c53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4a90614373565b60405180910390fd5b6000610c5d612538565b9050610c72818461256390919063ffffffff16565b915050919050565b6000600c60009054906101000a900460ff16905090565b6000610d3a610c9e611f8f565b84610d358560036000610caf611f8f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257990919063ffffffff16565b611f97565b6001905092915050565b6000610d4e611f8f565b9050600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610ddd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd490614533565b60405180910390fd5b6000610de88361258f565b50505050509050610e4181600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125f690919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e99816008546125f690919063ffffffff16565b600881905550610eb48360095461257990919063ffffffff16565b600981905550505050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600754831115610f2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2390614433565b60405180910390fd5b81610f4c576000610f3c8461258f565b5050505050905080915050610f63565b6000610f578461258f565b50505050915050809150505b92915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b610f95611f8f565b73ffffffffffffffffffffffffffffffffffffffff16610fb3611395565b73ffffffffffffffffffffffffffffffffffffffff1614611009576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100090614473565b60405180910390fd5b600061101430611162565b905061101f8161260c565b50565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611080611f8f565b73ffffffffffffffffffffffffffffffffffffffff1661109e611395565b73ffffffffffffffffffffffffffffffffffffffff16146110f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110eb90614473565b60405180910390fd5b60018110158015611106575060198111155b611145576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113c906144f3565b60405180910390fd5b80600d8190555050565b601260159054906101000a900460ff1681565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156111fd57600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611248565b611245600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c0c565b90505b919050565b611255611f8f565b73ffffffffffffffffffffffffffffffffffffffff16611273611395565b73ffffffffffffffffffffffffffffffffffffffff16146112c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c090614473565b60405180910390fd5b6112d3600061288e565b565b6112dd611f8f565b73ffffffffffffffffffffffffffffffffffffffff166112fb611395565b73ffffffffffffffffffffffffffffffffffffffff1614611351576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134890614473565b60405180910390fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600b80546113cd9061482f565b80601f01602080910402602001604051908101604052809291908181526020018280546113f99061482f565b80156114465780601f1061141b57610100808354040283529160200191611446565b820191906000526020600020905b81548152906001019060200180831161142957829003601f168201915b5050505050905090565b600061151361145d611f8f565b8461150e85604051806060016040528060258152602001614e916025913960036000611487611f8f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124e39092919063ffffffff16565b611f97565b6001905092915050565b600061153161152a611f8f565b8484612162565b6001905092915050565b611543611f8f565b73ffffffffffffffffffffffffffffffffffffffff16611561611395565b73ffffffffffffffffffffffffffffffffffffffff16146115b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ae90614473565b60405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61171d611f8f565b73ffffffffffffffffffffffffffffffffffffffff1661173b611395565b73ffffffffffffffffffffffffffffffffffffffff1614611791576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178890614473565b60405180910390fd5b80601260156101000a81548160ff02191690831515021790555050565b6117b6611f8f565b73ffffffffffffffffffffffffffffffffffffffff166117d4611395565b73ffffffffffffffffffffffffffffffffffffffff161461182a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182190614473565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156118ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a490614513565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561193a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611931906143f3565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611a0e576119ca600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c0c565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506006819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611ad4611f8f565b73ffffffffffffffffffffffffffffffffffffffff16611af2611395565b73ffffffffffffffffffffffffffffffffffffffff1614611b48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3f90614473565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611bb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611baf90614393565b60405180910390fd5b611bc18161288e565b50565b611bcc611f8f565b73ffffffffffffffffffffffffffffffffffffffff16611bea611395565b73ffffffffffffffffffffffffffffffffffffffff1614611c40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3790614473565b60405180910390fd5b6000479050611c4e81612952565b50565b600047905090565b611c61611f8f565b73ffffffffffffffffffffffffffffffffffffffff16611c7f611395565b73ffffffffffffffffffffffffffffffffffffffff1614611cd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ccc90614473565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611d61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d58906143f3565b60405180910390fd5b60005b600680549050811015611f8b578173ffffffffffffffffffffffffffffffffffffffff1660068281548110611d9c57611d9b614966565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611f785760066001600680549050611df79190614719565b81548110611e0857611e07614966565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660068281548110611e4757611e46614966565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506006805480611f3e57611f3d614937565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055611f8b565b8080611f8390614861565b915050611d64565b5050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612007576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ffe906144d3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612077576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206e906143b3565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516121559190614553565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156121d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c9906144b3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612242576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223990614353565b60405180910390fd5b60008111612285576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227c90614493565b60405180910390fd5b61228d611395565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156122fb57506122cb611395565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561234657601354811115612345576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233c90614453565b60405180910390fd5b5b600061235130611162565b905060135481106123625760135490505b60006014548210159050601260149054906101000a900460ff161580156123955750601260159054906101000a900460ff165b801561239e5750805b80156123f657507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b1561241e576124048261260c565b6000479050600081111561241c5761241b47612952565b5b505b600060019050600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806124c55750600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156124cf57600090505b6124db86868684612a4d565b505050505050565b600083831115829061252b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125229190614331565b60405180910390fd5b5082840390509392505050565b6000806000612545612d5e565b9150915061255c818361256390919063ffffffff16565b9250505090565b60008183612571919061468e565b905092915050565b600081836125879190614638565b905092915050565b60008060008060008060008060006125ac8a600d54600e54613011565b92509250925060006125bc612538565b905060008060006125ce8e87866130a7565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600081836126049190614719565b905092915050565b6001601260146101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561264457612643614995565b5b6040519080825280602002602001820160405280156126725781602001602082028036833780820191505090505b509050308160008151811061268a57612689614966565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561272a57600080fd5b505afa15801561273e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127629190613d67565b8160018151811061277657612775614966565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506127db307f000000000000000000000000000000000000000000000000000000000000000084611f97565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161283d95949392919061456e565b600060405180830381600087803b15801561285757600080fd5b505af115801561286b573d6000803e3d6000fd5b50505050506000601260146101000a81548160ff02191690831515021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6129a260028461256390919063ffffffff16565b9081150290604051600060405180830381858888f193505050501580156129cd573d6000803e3d6000fd5b50601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc612a1e60028461256390919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612a49573d6000803e3d6000fd5b5050565b80612a5b57612a5a613105565b5b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612afe5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612b1357612b0e848484613148565b612d4a565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612bb65750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612bcb57612bc68484846133a8565b612d49565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612c6f5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612c8457612c7f848484613608565b612d48565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612d265750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612d3b57612d368484846137d3565b612d47565b612d46848484613608565b5b5b5b5b80612d5857612d57613ac8565b5b50505050565b600080600060085490506000600754905060005b600680549050811015612fd457826001600060068481548110612d9857612d97614966565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180612e865750816002600060068481548110612e1e57612e1d614966565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15612e9d576008546007549450945050505061300d565b612f2d6001600060068481548110612eb857612eb7614966565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846125f690919063ffffffff16565b9250612fbf6002600060068481548110612f4a57612f49614966565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836125f690919063ffffffff16565b91508080612fcc90614861565b915050612d72565b50612fec60075460085461256390919063ffffffff16565b8210156130045760085460075493509350505061300d565b81819350935050505b9091565b60008060008061303d606461302f888a613adc90919063ffffffff16565b61256390919063ffffffff16565b905060006130676064613059888b613adc90919063ffffffff16565b61256390919063ffffffff16565b9050600061309082613082858c6125f690919063ffffffff16565b6125f690919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806130c08588613adc90919063ffffffff16565b905060006130d78688613adc90919063ffffffff16565b905060006130ee82846125f690919063ffffffff16565b905082818395509550955050505093509350939050565b6000600d5414801561311957506000600e54145b1561312357613146565b600d54600f81905550600e546010819055506000600d819055506000600e819055505b565b60008060008060008061315a8761258f565b9550955095509550955095506131b887600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125f690919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061324d86600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125f690919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506132e285600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257990919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061332e81613af2565b6133388483613c97565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516133959190614553565b60405180910390a3505050505050505050565b6000806000806000806133ba8761258f565b95509550955095509550955061341886600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125f690919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506134ad83600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257990919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061354285600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257990919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061358e81613af2565b6135988483613c97565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516135f59190614553565b60405180910390a3505050505050505050565b60008060008060008061361a8761258f565b95509550955095509550955061367886600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125f690919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061370d85600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257990919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061375981613af2565b6137638483613c97565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516137c09190614553565b60405180910390a3505050505050505050565b6000806000806000806137e58761258f565b95509550955095509550955061384387600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125f690919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138d886600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125f690919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061396d83600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257990919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a0285600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257990919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a4e81613af2565b613a588483613c97565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613ab59190614553565b60405180910390a3505050505050505050565b600f54600d81905550601054600e81905550565b60008183613aea91906146bf565b905092915050565b6000613afc612538565b90506000613b138284613adc90919063ffffffff16565b9050613b6781600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257990919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613c9257613c4e83600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257990919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b613cac826008546125f690919063ffffffff16565b600881905550613cc78160095461257990919063ffffffff16565b6009819055505050565b600081359050613ce081614e0c565b92915050565b600081519050613cf581614e0c565b92915050565b600081359050613d0a81614e23565b92915050565b600081359050613d1f81614e3a565b92915050565b600081359050613d3481614e51565b92915050565b600060208284031215613d5057613d4f6149c4565b5b6000613d5e84828501613cd1565b91505092915050565b600060208284031215613d7d57613d7c6149c4565b5b6000613d8b84828501613ce6565b91505092915050565b600060208284031215613daa57613da96149c4565b5b6000613db884828501613cfb565b91505092915050565b60008060408385031215613dd857613dd76149c4565b5b6000613de685828601613cd1565b9250506020613df785828601613cd1565b9150509250929050565b600080600060608486031215613e1a57613e196149c4565b5b6000613e2886828701613cd1565b9350506020613e3986828701613cd1565b9250506040613e4a86828701613d25565b9150509250925092565b60008060408385031215613e6b57613e6a6149c4565b5b6000613e7985828601613cd1565b9250506020613e8a85828601613d10565b9150509250929050565b60008060408385031215613eab57613eaa6149c4565b5b6000613eb985828601613cd1565b9250506020613eca85828601613d25565b9150509250929050565b600060208284031215613eea57613ee96149c4565b5b6000613ef884828501613d10565b91505092915050565b600060208284031215613f1757613f166149c4565b5b6000613f2584828501613d25565b91505092915050565b60008060408385031215613f4557613f446149c4565b5b6000613f5385828601613d25565b9250506020613f6485828601613d10565b9150509250929050565b6000613f7a8383613f95565b60208301905092915050565b613f8f8161475f565b82525050565b613f9e8161474d565b82525050565b613fad8161474d565b82525050565b6000613fbe826145f3565b613fc88185614616565b9350613fd3836145e3565b8060005b83811015614004578151613feb8882613f6e565b9750613ff683614609565b925050600181019050613fd7565b5085935050505092915050565b61401a81614771565b82525050565b614029816147b4565b82525050565b614038816147c6565b82525050565b6000614049826145fe565b6140538185614627565b93506140638185602086016147fc565b61406c816149c9565b840191505092915050565b6000614084602383614627565b915061408f826149da565b604082019050919050565b60006140a7602a83614627565b91506140b282614a29565b604082019050919050565b60006140ca602683614627565b91506140d582614a78565b604082019050919050565b60006140ed602283614627565b91506140f882614ac7565b604082019050919050565b6000614110601b83614627565b915061411b82614b16565b602082019050919050565b6000614133601b83614627565b915061413e82614b3f565b602082019050919050565b6000614156603483614627565b915061416182614b68565b604082019050919050565b6000614179601f83614627565b915061418482614bb7565b602082019050919050565b600061419c602883614627565b91506141a782614be0565b604082019050919050565b60006141bf602083614627565b91506141ca82614c2f565b602082019050919050565b60006141e2602983614627565b91506141ed82614c58565b604082019050919050565b6000614205602583614627565b915061421082614ca7565b604082019050919050565b6000614228602483614627565b915061423382614cf6565b604082019050919050565b600061424b601a83614627565b915061425682614d45565b602082019050919050565b600061426e602283614627565b915061427982614d6e565b604082019050919050565b6000614291602c83614627565b915061429c82614dbd565b604082019050919050565b6142b08161479d565b82525050565b6142bf816147a7565b82525050565b60006020820190506142da6000830184613fa4565b92915050565b60006020820190506142f56000830184613f86565b92915050565b60006020820190506143106000830184614011565b92915050565b600060208201905061432b6000830184614020565b92915050565b6000602082019050818103600083015261434b818461403e565b905092915050565b6000602082019050818103600083015261436c81614077565b9050919050565b6000602082019050818103600083015261438c8161409a565b9050919050565b600060208201905081810360008301526143ac816140bd565b9050919050565b600060208201905081810360008301526143cc816140e0565b9050919050565b600060208201905081810360008301526143ec81614103565b9050919050565b6000602082019050818103600083015261440c81614126565b9050919050565b6000602082019050818103600083015261442c81614149565b9050919050565b6000602082019050818103600083015261444c8161416c565b9050919050565b6000602082019050818103600083015261446c8161418f565b9050919050565b6000602082019050818103600083015261448c816141b2565b9050919050565b600060208201905081810360008301526144ac816141d5565b9050919050565b600060208201905081810360008301526144cc816141f8565b9050919050565b600060208201905081810360008301526144ec8161421b565b9050919050565b6000602082019050818103600083015261450c8161423e565b9050919050565b6000602082019050818103600083015261452c81614261565b9050919050565b6000602082019050818103600083015261454c81614284565b9050919050565b600060208201905061456860008301846142a7565b92915050565b600060a08201905061458360008301886142a7565b614590602083018761402f565b81810360408301526145a28186613fb3565b90506145b16060830185613fa4565b6145be60808301846142a7565b9695505050505050565b60006020820190506145dd60008301846142b6565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006146438261479d565b915061464e8361479d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614683576146826148aa565b5b828201905092915050565b60006146998261479d565b91506146a48361479d565b9250826146b4576146b36148d9565b5b828204905092915050565b60006146ca8261479d565b91506146d58361479d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561470e5761470d6148aa565b5b828202905092915050565b60006147248261479d565b915061472f8361479d565b925082821015614742576147416148aa565b5b828203905092915050565b60006147588261477d565b9050919050565b600061476a8261477d565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006147bf826147d8565b9050919050565b60006147d18261479d565b9050919050565b60006147e3826147ea565b9050919050565b60006147f58261477d565b9050919050565b60005b8381101561481a5780820151818401526020810190506147ff565b83811115614829576000848401525b50505050565b6000600282049050600182168061484757607f821691505b6020821081141561485b5761485a614908565b5b50919050565b600061486c8261479d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561489f5761489e6148aa565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f7465616d4665652073686f756c6420626520696e2031202d2032350000000000600082015250565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b7f6d61785478416d6f756e742073686f756c64206265206772656174657220746860008201527f616e203130303030303030303030303030306539000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f7461784665652073686f756c6420626520696e2031202d203235000000000000600082015250565b7f57652063616e206e6f74206578636c75646520556e697377617020726f75746560008201527f722e000000000000000000000000000000000000000000000000000000000000602082015250565b7f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008201527f6869732066756e6374696f6e0000000000000000000000000000000000000000602082015250565b614e158161474d565b8114614e2057600080fd5b50565b614e2c8161475f565b8114614e3757600080fd5b50565b614e4381614771565b8114614e4e57600080fd5b50565b614e5a8161479d565b8114614e6557600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212204d2d58b05dfba912efb9a9d909a12314414e90d30e5daafd0ff620c2523fb35664736f6c63430008070033000000000000000000000000b9b94f6bb515ff6326a1b381ad241e4cf525aa03000000000000000000000000b9b94f6bb515ff6326a1b381ad241e4cf525aa03
Deployed Bytecode
0x6080604052600436106102135760003560e01c80636ddd171311610118578063cba0e996116100a0578063f2cc0c181161006f578063f2cc0c18146107e4578063f2fde38b1461080d578063f429389014610836578063f815a8421461084d578063f84354f1146108785761021a565b8063cba0e99614610716578063cf1bfc2c14610753578063dd62ed3e1461077e578063e01af92c146107bb5761021a565b80638da5cb5b116100e75780638da5cb5b1461061d57806395d89b4114610648578063a457c2d714610673578063a9059cbb146106b0578063af9549e0146106ed5761021a565b80636ddd17131461057557806370a08231146105a0578063715018a6146105dd57806377c8eafc146105f45761021a565b8063313ce5671161019b5780634549b0391161016a5780634549b0391461049057806349bd5a5e146104cd57806351bc3c85146104f85780635342acb41461050f5780635880b8731461054c5761021a565b8063313ce567146103d457806339509351146103ff5780633bd5d1731461043c5780634144d9e4146104655761021a565b806318160ddd116101e257806318160ddd146102dd5780631bbae6e01461030857806323b872dd14610331578063286671621461036e5780632d838119146103975761021a565b806306fdde031461021f578063095ea7b31461024a57806313114a9d146102875780631694505e146102b25761021a565b3661021a57005b600080fd5b34801561022b57600080fd5b506102346108a1565b6040516102419190614331565b60405180910390f35b34801561025657600080fd5b50610271600480360381019061026c9190613e94565b610933565b60405161027e91906142fb565b60405180910390f35b34801561029357600080fd5b5061029c610951565b6040516102a99190614553565b60405180910390f35b3480156102be57600080fd5b506102c761095b565b6040516102d49190614316565b60405180910390f35b3480156102e957600080fd5b506102f261097f565b6040516102ff9190614553565b60405180910390f35b34801561031457600080fd5b5061032f600480360381019061032a9190613f01565b610989565b005b34801561033d57600080fd5b5061035860048036038101906103539190613e01565b610a5c565b60405161036591906142fb565b60405180910390f35b34801561037a57600080fd5b5061039560048036038101906103909190613f01565b610b35565b005b3480156103a357600080fd5b506103be60048036038101906103b99190613f01565b610c0c565b6040516103cb9190614553565b60405180910390f35b3480156103e057600080fd5b506103e9610c7a565b6040516103f691906145c8565b60405180910390f35b34801561040b57600080fd5b5061042660048036038101906104219190613e94565b610c91565b60405161043391906142fb565b60405180910390f35b34801561044857600080fd5b50610463600480360381019061045e9190613f01565b610d44565b005b34801561047157600080fd5b5061047a610ebf565b60405161048791906142e0565b60405180910390f35b34801561049c57600080fd5b506104b760048036038101906104b29190613f2e565b610ee5565b6040516104c49190614553565b60405180910390f35b3480156104d957600080fd5b506104e2610f69565b6040516104ef91906142c5565b60405180910390f35b34801561050457600080fd5b5061050d610f8d565b005b34801561051b57600080fd5b5061053660048036038101906105319190613d3a565b611022565b60405161054391906142fb565b60405180910390f35b34801561055857600080fd5b50610573600480360381019061056e9190613f01565b611078565b005b34801561058157600080fd5b5061058a61114f565b60405161059791906142fb565b60405180910390f35b3480156105ac57600080fd5b506105c760048036038101906105c29190613d3a565b611162565b6040516105d49190614553565b60405180910390f35b3480156105e957600080fd5b506105f261124d565b005b34801561060057600080fd5b5061061b60048036038101906106169190613d94565b6112d5565b005b34801561062957600080fd5b50610632611395565b60405161063f91906142c5565b60405180910390f35b34801561065457600080fd5b5061065d6113be565b60405161066a9190614331565b60405180910390f35b34801561067f57600080fd5b5061069a60048036038101906106959190613e94565b611450565b6040516106a791906142fb565b60405180910390f35b3480156106bc57600080fd5b506106d760048036038101906106d29190613e94565b61151d565b6040516106e491906142fb565b60405180910390f35b3480156106f957600080fd5b50610714600480360381019061070f9190613e54565b61153b565b005b34801561072257600080fd5b5061073d60048036038101906107389190613d3a565b611612565b60405161074a91906142fb565b60405180910390f35b34801561075f57600080fd5b50610768611668565b60405161077591906142e0565b60405180910390f35b34801561078a57600080fd5b506107a560048036038101906107a09190613dc1565b61168e565b6040516107b29190614553565b60405180910390f35b3480156107c757600080fd5b506107e260048036038101906107dd9190613ed4565b611715565b005b3480156107f057600080fd5b5061080b60048036038101906108069190613d3a565b6117ae565b005b34801561081957600080fd5b50610834600480360381019061082f9190613d3a565b611acc565b005b34801561084257600080fd5b5061084b611bc4565b005b34801561085957600080fd5b50610862611c51565b60405161086f9190614553565b60405180910390f35b34801561088457600080fd5b5061089f600480360381019061089a9190613d3a565b611c59565b005b6060600a80546108b09061482f565b80601f01602080910402602001604051908101604052809291908181526020018280546108dc9061482f565b80156109295780601f106108fe57610100808354040283529160200191610929565b820191906000526020600020905b81548152906001019060200180831161090c57829003601f168201915b5050505050905090565b6000610947610940611f8f565b8484611f97565b6001905092915050565b6000600954905090565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600754905090565b610991611f8f565b73ffffffffffffffffffffffffffffffffffffffff166109af611395565b73ffffffffffffffffffffffffffffffffffffffff1614610a05576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109fc90614473565b60405180910390fd5b69152d02c7e14af6800000811015610a52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4990614413565b60405180910390fd5b8060138190555050565b6000610a69848484612162565b610b2a84610a75611f8f565b610b2585604051806060016040528060288152602001614e6960289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610adb611f8f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124e39092919063ffffffff16565b611f97565b600190509392505050565b610b3d611f8f565b73ffffffffffffffffffffffffffffffffffffffff16610b5b611395565b73ffffffffffffffffffffffffffffffffffffffff1614610bb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba890614473565b60405180910390fd5b60018110158015610bc3575060198111155b610c02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf9906143d3565b60405180910390fd5b80600e8190555050565b6000600854821115610c53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4a90614373565b60405180910390fd5b6000610c5d612538565b9050610c72818461256390919063ffffffff16565b915050919050565b6000600c60009054906101000a900460ff16905090565b6000610d3a610c9e611f8f565b84610d358560036000610caf611f8f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257990919063ffffffff16565b611f97565b6001905092915050565b6000610d4e611f8f565b9050600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610ddd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd490614533565b60405180910390fd5b6000610de88361258f565b50505050509050610e4181600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125f690919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e99816008546125f690919063ffffffff16565b600881905550610eb48360095461257990919063ffffffff16565b600981905550505050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600754831115610f2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2390614433565b60405180910390fd5b81610f4c576000610f3c8461258f565b5050505050905080915050610f63565b6000610f578461258f565b50505050915050809150505b92915050565b7f000000000000000000000000220728a97cf95b3ac237d47455e4a76b7b876c3381565b610f95611f8f565b73ffffffffffffffffffffffffffffffffffffffff16610fb3611395565b73ffffffffffffffffffffffffffffffffffffffff1614611009576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100090614473565b60405180910390fd5b600061101430611162565b905061101f8161260c565b50565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611080611f8f565b73ffffffffffffffffffffffffffffffffffffffff1661109e611395565b73ffffffffffffffffffffffffffffffffffffffff16146110f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110eb90614473565b60405180910390fd5b60018110158015611106575060198111155b611145576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113c906144f3565b60405180910390fd5b80600d8190555050565b601260159054906101000a900460ff1681565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156111fd57600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611248565b611245600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c0c565b90505b919050565b611255611f8f565b73ffffffffffffffffffffffffffffffffffffffff16611273611395565b73ffffffffffffffffffffffffffffffffffffffff16146112c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c090614473565b60405180910390fd5b6112d3600061288e565b565b6112dd611f8f565b73ffffffffffffffffffffffffffffffffffffffff166112fb611395565b73ffffffffffffffffffffffffffffffffffffffff1614611351576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134890614473565b60405180910390fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600b80546113cd9061482f565b80601f01602080910402602001604051908101604052809291908181526020018280546113f99061482f565b80156114465780601f1061141b57610100808354040283529160200191611446565b820191906000526020600020905b81548152906001019060200180831161142957829003601f168201915b5050505050905090565b600061151361145d611f8f565b8461150e85604051806060016040528060258152602001614e916025913960036000611487611f8f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124e39092919063ffffffff16565b611f97565b6001905092915050565b600061153161152a611f8f565b8484612162565b6001905092915050565b611543611f8f565b73ffffffffffffffffffffffffffffffffffffffff16611561611395565b73ffffffffffffffffffffffffffffffffffffffff16146115b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ae90614473565b60405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61171d611f8f565b73ffffffffffffffffffffffffffffffffffffffff1661173b611395565b73ffffffffffffffffffffffffffffffffffffffff1614611791576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178890614473565b60405180910390fd5b80601260156101000a81548160ff02191690831515021790555050565b6117b6611f8f565b73ffffffffffffffffffffffffffffffffffffffff166117d4611395565b73ffffffffffffffffffffffffffffffffffffffff161461182a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182190614473565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156118ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a490614513565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561193a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611931906143f3565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611a0e576119ca600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c0c565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506006819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611ad4611f8f565b73ffffffffffffffffffffffffffffffffffffffff16611af2611395565b73ffffffffffffffffffffffffffffffffffffffff1614611b48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3f90614473565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611bb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611baf90614393565b60405180910390fd5b611bc18161288e565b50565b611bcc611f8f565b73ffffffffffffffffffffffffffffffffffffffff16611bea611395565b73ffffffffffffffffffffffffffffffffffffffff1614611c40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3790614473565b60405180910390fd5b6000479050611c4e81612952565b50565b600047905090565b611c61611f8f565b73ffffffffffffffffffffffffffffffffffffffff16611c7f611395565b73ffffffffffffffffffffffffffffffffffffffff1614611cd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ccc90614473565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611d61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d58906143f3565b60405180910390fd5b60005b600680549050811015611f8b578173ffffffffffffffffffffffffffffffffffffffff1660068281548110611d9c57611d9b614966565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611f785760066001600680549050611df79190614719565b81548110611e0857611e07614966565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660068281548110611e4757611e46614966565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506006805480611f3e57611f3d614937565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055611f8b565b8080611f8390614861565b915050611d64565b5050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612007576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ffe906144d3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612077576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206e906143b3565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516121559190614553565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156121d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c9906144b3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612242576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223990614353565b60405180910390fd5b60008111612285576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227c90614493565b60405180910390fd5b61228d611395565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156122fb57506122cb611395565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561234657601354811115612345576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233c90614453565b60405180910390fd5b5b600061235130611162565b905060135481106123625760135490505b60006014548210159050601260149054906101000a900460ff161580156123955750601260159054906101000a900460ff165b801561239e5750805b80156123f657507f000000000000000000000000220728a97cf95b3ac237d47455e4a76b7b876c3373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b1561241e576124048261260c565b6000479050600081111561241c5761241b47612952565b5b505b600060019050600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806124c55750600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156124cf57600090505b6124db86868684612a4d565b505050505050565b600083831115829061252b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125229190614331565b60405180910390fd5b5082840390509392505050565b6000806000612545612d5e565b9150915061255c818361256390919063ffffffff16565b9250505090565b60008183612571919061468e565b905092915050565b600081836125879190614638565b905092915050565b60008060008060008060008060006125ac8a600d54600e54613011565b92509250925060006125bc612538565b905060008060006125ce8e87866130a7565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600081836126049190614719565b905092915050565b6001601260146101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561264457612643614995565b5b6040519080825280602002602001820160405280156126725781602001602082028036833780820191505090505b509050308160008151811061268a57612689614966565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561272a57600080fd5b505afa15801561273e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127629190613d67565b8160018151811061277657612775614966565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506127db307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611f97565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161283d95949392919061456e565b600060405180830381600087803b15801561285757600080fd5b505af115801561286b573d6000803e3d6000fd5b50505050506000601260146101000a81548160ff02191690831515021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6129a260028461256390919063ffffffff16565b9081150290604051600060405180830381858888f193505050501580156129cd573d6000803e3d6000fd5b50601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc612a1e60028461256390919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612a49573d6000803e3d6000fd5b5050565b80612a5b57612a5a613105565b5b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612afe5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612b1357612b0e848484613148565b612d4a565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612bb65750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612bcb57612bc68484846133a8565b612d49565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612c6f5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612c8457612c7f848484613608565b612d48565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612d265750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612d3b57612d368484846137d3565b612d47565b612d46848484613608565b5b5b5b5b80612d5857612d57613ac8565b5b50505050565b600080600060085490506000600754905060005b600680549050811015612fd457826001600060068481548110612d9857612d97614966565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180612e865750816002600060068481548110612e1e57612e1d614966565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15612e9d576008546007549450945050505061300d565b612f2d6001600060068481548110612eb857612eb7614966565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846125f690919063ffffffff16565b9250612fbf6002600060068481548110612f4a57612f49614966565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836125f690919063ffffffff16565b91508080612fcc90614861565b915050612d72565b50612fec60075460085461256390919063ffffffff16565b8210156130045760085460075493509350505061300d565b81819350935050505b9091565b60008060008061303d606461302f888a613adc90919063ffffffff16565b61256390919063ffffffff16565b905060006130676064613059888b613adc90919063ffffffff16565b61256390919063ffffffff16565b9050600061309082613082858c6125f690919063ffffffff16565b6125f690919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806130c08588613adc90919063ffffffff16565b905060006130d78688613adc90919063ffffffff16565b905060006130ee82846125f690919063ffffffff16565b905082818395509550955050505093509350939050565b6000600d5414801561311957506000600e54145b1561312357613146565b600d54600f81905550600e546010819055506000600d819055506000600e819055505b565b60008060008060008061315a8761258f565b9550955095509550955095506131b887600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125f690919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061324d86600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125f690919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506132e285600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257990919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061332e81613af2565b6133388483613c97565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516133959190614553565b60405180910390a3505050505050505050565b6000806000806000806133ba8761258f565b95509550955095509550955061341886600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125f690919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506134ad83600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257990919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061354285600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257990919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061358e81613af2565b6135988483613c97565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516135f59190614553565b60405180910390a3505050505050505050565b60008060008060008061361a8761258f565b95509550955095509550955061367886600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125f690919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061370d85600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257990919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061375981613af2565b6137638483613c97565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516137c09190614553565b60405180910390a3505050505050505050565b6000806000806000806137e58761258f565b95509550955095509550955061384387600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125f690919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138d886600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125f690919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061396d83600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257990919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a0285600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257990919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a4e81613af2565b613a588483613c97565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613ab59190614553565b60405180910390a3505050505050505050565b600f54600d81905550601054600e81905550565b60008183613aea91906146bf565b905092915050565b6000613afc612538565b90506000613b138284613adc90919063ffffffff16565b9050613b6781600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257990919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613c9257613c4e83600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257990919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b613cac826008546125f690919063ffffffff16565b600881905550613cc78160095461257990919063ffffffff16565b6009819055505050565b600081359050613ce081614e0c565b92915050565b600081519050613cf581614e0c565b92915050565b600081359050613d0a81614e23565b92915050565b600081359050613d1f81614e3a565b92915050565b600081359050613d3481614e51565b92915050565b600060208284031215613d5057613d4f6149c4565b5b6000613d5e84828501613cd1565b91505092915050565b600060208284031215613d7d57613d7c6149c4565b5b6000613d8b84828501613ce6565b91505092915050565b600060208284031215613daa57613da96149c4565b5b6000613db884828501613cfb565b91505092915050565b60008060408385031215613dd857613dd76149c4565b5b6000613de685828601613cd1565b9250506020613df785828601613cd1565b9150509250929050565b600080600060608486031215613e1a57613e196149c4565b5b6000613e2886828701613cd1565b9350506020613e3986828701613cd1565b9250506040613e4a86828701613d25565b9150509250925092565b60008060408385031215613e6b57613e6a6149c4565b5b6000613e7985828601613cd1565b9250506020613e8a85828601613d10565b9150509250929050565b60008060408385031215613eab57613eaa6149c4565b5b6000613eb985828601613cd1565b9250506020613eca85828601613d25565b9150509250929050565b600060208284031215613eea57613ee96149c4565b5b6000613ef884828501613d10565b91505092915050565b600060208284031215613f1757613f166149c4565b5b6000613f2584828501613d25565b91505092915050565b60008060408385031215613f4557613f446149c4565b5b6000613f5385828601613d25565b9250506020613f6485828601613d10565b9150509250929050565b6000613f7a8383613f95565b60208301905092915050565b613f8f8161475f565b82525050565b613f9e8161474d565b82525050565b613fad8161474d565b82525050565b6000613fbe826145f3565b613fc88185614616565b9350613fd3836145e3565b8060005b83811015614004578151613feb8882613f6e565b9750613ff683614609565b925050600181019050613fd7565b5085935050505092915050565b61401a81614771565b82525050565b614029816147b4565b82525050565b614038816147c6565b82525050565b6000614049826145fe565b6140538185614627565b93506140638185602086016147fc565b61406c816149c9565b840191505092915050565b6000614084602383614627565b915061408f826149da565b604082019050919050565b60006140a7602a83614627565b91506140b282614a29565b604082019050919050565b60006140ca602683614627565b91506140d582614a78565b604082019050919050565b60006140ed602283614627565b91506140f882614ac7565b604082019050919050565b6000614110601b83614627565b915061411b82614b16565b602082019050919050565b6000614133601b83614627565b915061413e82614b3f565b602082019050919050565b6000614156603483614627565b915061416182614b68565b604082019050919050565b6000614179601f83614627565b915061418482614bb7565b602082019050919050565b600061419c602883614627565b91506141a782614be0565b604082019050919050565b60006141bf602083614627565b91506141ca82614c2f565b602082019050919050565b60006141e2602983614627565b91506141ed82614c58565b604082019050919050565b6000614205602583614627565b915061421082614ca7565b604082019050919050565b6000614228602483614627565b915061423382614cf6565b604082019050919050565b600061424b601a83614627565b915061425682614d45565b602082019050919050565b600061426e602283614627565b915061427982614d6e565b604082019050919050565b6000614291602c83614627565b915061429c82614dbd565b604082019050919050565b6142b08161479d565b82525050565b6142bf816147a7565b82525050565b60006020820190506142da6000830184613fa4565b92915050565b60006020820190506142f56000830184613f86565b92915050565b60006020820190506143106000830184614011565b92915050565b600060208201905061432b6000830184614020565b92915050565b6000602082019050818103600083015261434b818461403e565b905092915050565b6000602082019050818103600083015261436c81614077565b9050919050565b6000602082019050818103600083015261438c8161409a565b9050919050565b600060208201905081810360008301526143ac816140bd565b9050919050565b600060208201905081810360008301526143cc816140e0565b9050919050565b600060208201905081810360008301526143ec81614103565b9050919050565b6000602082019050818103600083015261440c81614126565b9050919050565b6000602082019050818103600083015261442c81614149565b9050919050565b6000602082019050818103600083015261444c8161416c565b9050919050565b6000602082019050818103600083015261446c8161418f565b9050919050565b6000602082019050818103600083015261448c816141b2565b9050919050565b600060208201905081810360008301526144ac816141d5565b9050919050565b600060208201905081810360008301526144cc816141f8565b9050919050565b600060208201905081810360008301526144ec8161421b565b9050919050565b6000602082019050818103600083015261450c8161423e565b9050919050565b6000602082019050818103600083015261452c81614261565b9050919050565b6000602082019050818103600083015261454c81614284565b9050919050565b600060208201905061456860008301846142a7565b92915050565b600060a08201905061458360008301886142a7565b614590602083018761402f565b81810360408301526145a28186613fb3565b90506145b16060830185613fa4565b6145be60808301846142a7565b9695505050505050565b60006020820190506145dd60008301846142b6565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006146438261479d565b915061464e8361479d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614683576146826148aa565b5b828201905092915050565b60006146998261479d565b91506146a48361479d565b9250826146b4576146b36148d9565b5b828204905092915050565b60006146ca8261479d565b91506146d58361479d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561470e5761470d6148aa565b5b828202905092915050565b60006147248261479d565b915061472f8361479d565b925082821015614742576147416148aa565b5b828203905092915050565b60006147588261477d565b9050919050565b600061476a8261477d565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006147bf826147d8565b9050919050565b60006147d18261479d565b9050919050565b60006147e3826147ea565b9050919050565b60006147f58261477d565b9050919050565b60005b8381101561481a5780820151818401526020810190506147ff565b83811115614829576000848401525b50505050565b6000600282049050600182168061484757607f821691505b6020821081141561485b5761485a614908565b5b50919050565b600061486c8261479d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561489f5761489e6148aa565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f7465616d4665652073686f756c6420626520696e2031202d2032350000000000600082015250565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b7f6d61785478416d6f756e742073686f756c64206265206772656174657220746860008201527f616e203130303030303030303030303030306539000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f7461784665652073686f756c6420626520696e2031202d203235000000000000600082015250565b7f57652063616e206e6f74206578636c75646520556e697377617020726f75746560008201527f722e000000000000000000000000000000000000000000000000000000000000602082015250565b7f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008201527f6869732066756e6374696f6e0000000000000000000000000000000000000000602082015250565b614e158161474d565b8114614e2057600080fd5b50565b614e2c8161475f565b8114614e3757600080fd5b50565b614e4381614771565b8114614e4e57600080fd5b50565b614e5a8161479d565b8114614e6557600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212204d2d58b05dfba912efb9a9d909a12314414e90d30e5daafd0ff620c2523fb35664736f6c63430008070033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000b9b94f6bb515ff6326a1b381ad241e4cf525aa03000000000000000000000000b9b94f6bb515ff6326a1b381ad241e4cf525aa03
-----Decoded View---------------
Arg [0] : KSCWalletAddress (address): 0xb9B94F6BB515Ff6326A1B381Ad241e4cF525AA03
Arg [1] : marketingWalletAddress (address): 0xb9B94F6BB515Ff6326A1B381Ad241e4cF525AA03
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000b9b94f6bb515ff6326a1b381ad241e4cf525aa03
Arg [1] : 000000000000000000000000b9b94f6bb515ff6326a1b381ad241e4cf525aa03
Deployed Bytecode Sourcemap
31596:18842:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34323:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35327:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36675:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32731:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34636:103;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;50198:233;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35512:329;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;49845:188;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;37683:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34533:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35853:230;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36782:405;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32672:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37199:472;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32793:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42869:168;;;;;;;;;;;;;:::i;:::-;;39374:131;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;49652:181;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32874:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34751:210;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13138:103;;;;;;;;;;;;;:::i;:::-;;50045:141;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12487:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34426:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36095:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34973:179;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36518:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;36388:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32621:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35164:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43229:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;37964:475;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13396:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;43049:168;;;;;;;;;;;;;:::i;:::-;;49522:118;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38451:522;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34323:91;34360:13;34397:5;34390:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34323:91;:::o;35327:173::-;35402:4;35423:39;35432:12;:10;:12::i;:::-;35446:7;35455:6;35423:8;:39::i;:::-;35484:4;35477:11;;35327:173;;;;:::o;36675:95::-;36717:7;36748:10;;36741:17;;36675:95;:::o;32731:51::-;;;:::o;34636:103::-;34689:7;34720;;34713:14;;34636:103;:::o;50198:233::-;12718:12;:10;:12::i;:::-;12707:23;;:7;:5;:7::i;:::-;:23;;;12699:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;50303:17:::1;50288:11;:32;;50280:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;50408:11;50393:12;:26;;;;50198:233:::0;:::o;35512:329::-;35610:4;35631:36;35641:6;35649:9;35660:6;35631:9;:36::i;:::-;35682:121;35691:6;35699:12;:10;:12::i;:::-;35713:89;35751:6;35713:89;;;;;;;;;;;;;;;;;:11;:19;35725:6;35713:19;;;;;;;;;;;;;;;:33;35733:12;:10;:12::i;:::-;35713:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;35682:8;:121::i;:::-;35825:4;35818:11;;35512:329;;;;;:::o;49845:188::-;12718:12;:10;:12::i;:::-;12707:23;;:7;:5;:7::i;:::-;:23;;;12699:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;49938:1:::1;49927:7;:12;;:29;;;;;49954:2;49943:7;:13;;49927:29;49919:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;50014:7;50003:8;:18;;;;49845:188:::0;:::o;37683:269::-;37749:7;37792;;37781;:18;;37773:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;37861:19;37884:10;:8;:10::i;:::-;37861:33;;37916:24;37928:11;37916:7;:11;;:24;;;;:::i;:::-;37909:31;;;37683:269;;;:::o;34533:91::-;34574:5;34603:9;;;;;;;;;;;34596:16;;34533:91;:::o;35853:230::-;35941:4;35962:83;35971:12;:10;:12::i;:::-;35985:7;35994:50;36033:10;35994:11;:25;36006:12;:10;:12::i;:::-;35994:25;;;;;;;;;;;;;;;:34;36020:7;35994:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;35962:8;:83::i;:::-;36067:4;36060:11;;35853:230;;;;:::o;36782:405::-;36838:14;36855:12;:10;:12::i;:::-;36838:29;;36891:11;:19;36903:6;36891:19;;;;;;;;;;;;;;;;;;;;;;;;;36890:20;36882:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;36975:15;36999:19;37010:7;36999:10;:19::i;:::-;36974:44;;;;;;;37051:28;37071:7;37051;:15;37059:6;37051:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;37033:7;:15;37041:6;37033:15;;;;;;;;;;;;;;;:46;;;;37104:20;37116:7;37104;;:11;;:20;;;;:::i;:::-;37094:7;:30;;;;37152:23;37167:7;37152:10;;:14;;:23;;;;:::i;:::-;37139:10;:36;;;;36823:364;;36782:405;:::o;32672:46::-;;;;;;;;;;;;;:::o;37199:472::-;37289:7;37332;;37321;:18;;37313:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;37395:17;37390:270;;37434:15;37458:19;37469:7;37458:10;:19::i;:::-;37433:44;;;;;;;37503:7;37496:14;;;;;37390:270;37553:23;37584:19;37595:7;37584:10;:19::i;:::-;37551:52;;;;;;;37629:15;37622:22;;;37199:472;;;;;:::o;32793:38::-;;;:::o;42869:168::-;12718:12;:10;:12::i;:::-;12707:23;;:7;:5;:7::i;:::-;:23;;;12699:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;42927:23:::1;42953:24;42971:4;42953:9;:24::i;:::-;42927:50;;42992:33;43009:15;42992:16;:33::i;:::-;42912:125;42869:168::o:0;39374:131::-;39438:4;39466:18;:27;39485:7;39466:27;;;;;;;;;;;;;;;;;;;;;;;;;39459:34;;39374:131;;;:::o;49652:181::-;12718:12;:10;:12::i;:::-;12707:23;;:7;:5;:7::i;:::-;:23;;;12699:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;49742:1:::1;49732:6;:11;;:27;;;;;49757:2;49747:6;:12;;49732:27;49724:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;49815:6;49805:7;:16;;;;49652:181:::0;:::o;32874:30::-;;;;;;;;;;;;;:::o;34751:210::-;34817:7;34845:11;:20;34857:7;34845:20;;;;;;;;;;;;;;;;;;;;;;;;;34841:49;;;34874:7;:16;34882:7;34874:16;;;;;;;;;;;;;;;;34867:23;;;;34841:49;34912:37;34932:7;:16;34940:7;34932:16;;;;;;;;;;;;;;;;34912:19;:37::i;:::-;34905:44;;34751:210;;;;:::o;13138:103::-;12718:12;:10;:12::i;:::-;12707:23;;:7;:5;:7::i;:::-;:23;;;12699:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13203:30:::1;13230:1;13203:18;:30::i;:::-;13138:103::o:0;50045:141::-;12718:12;:10;:12::i;:::-;12707:23;;:7;:5;:7::i;:::-;:23;;;12699:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;50158:16:::1;50138:17;;:36;;;;;;;;;;;;;;;;;;50045:141:::0;:::o;12487:87::-;12533:7;12560:6;;;;;;;;;;;12553:13;;12487:87;:::o;34426:95::-;34465:13;34502:7;34495:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34426:95;:::o;36095:281::-;36188:4;36209:129;36218:12;:10;:12::i;:::-;36232:7;36241:96;36280:15;36241:96;;;;;;;;;;;;;;;;;:11;:25;36253:12;:10;:12::i;:::-;36241:25;;;;;;;;;;;;;;;:34;36267:7;36241:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;36209:8;:129::i;:::-;36360:4;36353:11;;36095:281;;;;:::o;34973:179::-;35051:4;35072:42;35082:12;:10;:12::i;:::-;35096:9;35107:6;35072:9;:42::i;:::-;35136:4;35129:11;;34973:179;;;;:::o;36518:145::-;12718:12;:10;:12::i;:::-;12707:23;;:7;:5;:7::i;:::-;:23;;;12699:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;36643:8:::1;36613:18;:27;36632:7;36613:27;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;36518:145:::0;;:::o;36388:118::-;36446:4;36474:11;:20;36486:7;36474:20;;;;;;;;;;;;;;;;;;;;;;;;;36467:27;;36388:118;;;:::o;32621:40::-;;;;;;;;;;;;;:::o;35164:151::-;35245:7;35276:11;:18;35288:5;35276:18;;;;;;;;;;;;;;;:27;35295:7;35276:27;;;;;;;;;;;;;;;;35269:34;;35164:151;;;;:::o;43229:106::-;12718:12;:10;:12::i;:::-;12707:23;;:7;:5;:7::i;:::-;:23;;;12699:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;43316:7:::1;43302:11;;:21;;;;;;;;;;;;;;;;;;43229:106:::0;:::o;37964:475::-;12718:12;:10;:12::i;:::-;12707:23;;:7;:5;:7::i;:::-;:23;;;12699:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;38060:42:::1;38049:53;;:7;:53;;;;38041:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;38165:11;:20;38177:7;38165:20;;;;;;;;;;;;;;;;;;;;;;;;;38164:21;38156:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;38254:1;38235:7;:16;38243:7;38235:16;;;;;;;;;;;;;;;;:20;38232:116;;;38295:37;38315:7;:16;38323:7;38315:16;;;;;;;;;;;;;;;;38295:19;:37::i;:::-;38276:7;:16;38284:7;38276:16;;;;;;;;;;;;;;;:56;;;;38232:116;38385:4;38362:11;:20;38374:7;38362:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;38404:9;38419:7;38404:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37964:475:::0;:::o;13396:201::-;12718:12;:10;:12::i;:::-;12707:23;;:7;:5;:7::i;:::-;:23;;;12699:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13505:1:::1;13485:22;;:8;:22;;;;13477:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;13561:28;13580:8;13561:18;:28::i;:::-;13396:201:::0;:::o;43049:168::-;12718:12;:10;:12::i;:::-;12707:23;;:7;:5;:7::i;:::-;:23;;;12699:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;43107:26:::1;43136:21;43107:50;;43172:33;43186:18;43172:13;:33::i;:::-;43092:125;43049:168::o:0;49522:118::-;49568:15;49607:21;49600:28;;49522:118;:::o;38451:522::-;12718:12;:10;:12::i;:::-;12707:23;;:7;:5;:7::i;:::-;:23;;;12699:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;38536:11:::1;:20;38548:7;38536:20;;;;;;;;;;;;;;;;;;;;;;;;;38528:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;38608:9;38603:359;38627:9;:16;;;;38623:1;:20;38603:359;;;38689:7;38673:23;;:9;38683:1;38673:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:23;;;38669:278;;;38736:9;38765:1;38746:9;:16;;;;:20;;;;:::i;:::-;38736:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;38721:9;38731:1;38721:12;;;;;;;;:::i;:::-;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;38809:1;38790:7;:16;38798:7;38790:16;;;;;;;;;;;;;;;:20;;;;38856:5;38833:11;:20;38845:7;38833:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;38884:9;:15;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;38922:5;;38669:278;38645:3;;;;;:::i;:::-;;;;38603:359;;;;38451:522:::0;:::o;11211:98::-;11264:7;11291:10;11284:17;;11211:98;:::o;39517:357::-;39631:1;39614:19;;:5;:19;;;;39606:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;39716:1;39697:21;;:7;:21;;;;39689:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;39804:6;39774:11;:18;39786:5;39774:18;;;;;;;;;;;;;;;:27;39793:7;39774:27;;;;;;;;;;;;;;;:36;;;;39846:7;39830:32;;39839:5;39830:32;;;39855:6;39830:32;;;;;;:::i;:::-;;;;;;;;39517:357;;;:::o;39886:1964::-;40005:1;39987:20;;:6;:20;;;;39979:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;40093:1;40072:23;;:9;:23;;;;40064:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;40167:1;40158:6;:10;40150:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;40244:7;:5;:7::i;:::-;40234:17;;:6;:17;;;;:41;;;;;40268:7;:5;:7::i;:::-;40255:20;;:9;:20;;;;40234:41;40231:138;;;40312:12;;40302:6;:22;;40294:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;40231:138;40652:28;40683:24;40701:4;40683:9;:24::i;:::-;40652:55;;40751:12;;40727:20;:36;40724:124;;40820:12;;40797:35;;40724:124;40864:24;40915:29;;40891:20;:53;;40864:80;;40964:6;;;;;;;;;;;40963:7;:22;;;;;40974:11;;;;;;;;;;;40963:22;:45;;;;;40989:19;40963:45;:72;;;;;41022:13;41012:23;;:6;:23;;;;40963:72;40959:436;;;41146:38;41163:20;41146:16;:38::i;:::-;41205:26;41234:21;41205:50;;41298:1;41277:18;:22;41274:106;;;41324:36;41338:21;41324:13;:36::i;:::-;41274:106;41037:358;40959:436;41476:12;41491:4;41476:19;;41603:18;:26;41622:6;41603:26;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;41633:18;:29;41652:9;41633:29;;;;;;;;;;;;;;;;;;;;;;;;;41603:59;41600:113;;;41692:5;41682:15;;41600:113;41791:47;41806:6;41813:9;41823:6;41830:7;41791:14;:47::i;:::-;39964:1886;;;39886:1964;;;:::o;5750:240::-;5870:7;5928:1;5923;:6;;5931:12;5915:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;5970:1;5966;:5;5959:12;;5750:240;;;;;:::o;48508:175::-;48549:7;48574:15;48591;48610:19;:17;:19::i;:::-;48573:56;;;;48651:20;48663:7;48651;:11;;:20;;;;:::i;:::-;48644:27;;;;48508:175;:::o;4608:98::-;4666:7;4697:1;4693;:5;;;;:::i;:::-;4686:12;;4608:98;;;;:::o;3471:::-;3529:7;3560:1;3556;:5;;;;:::i;:::-;3549:12;;3471:98;;;;:::o;47266:481::-;47325:7;47334;47343;47352;47361;47370;47395:23;47420:12;47434:13;47451:39;47463:7;47472;;47481:8;;47451:11;:39::i;:::-;47394:96;;;;;;47505:19;47528:10;:8;:10::i;:::-;47505:33;;47554:15;47571:23;47596:12;47612:39;47624:7;47633:4;47639:11;47612;:39::i;:::-;47553:98;;;;;;47674:7;47683:15;47700:4;47706:15;47723:4;47729:5;47666:69;;;;;;;;;;;;;;;;;;;47266:481;;;;;;;:::o;3852:98::-;3910:7;3941:1;3937;:5;;;;:::i;:::-;3930:12;;3852:98;;;;:::o;41862:656::-;33292:4;33283:6;;:13;;;;;;;;;;;;;;;;;;42007:21:::1;42045:1;42031:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42007:40;;42080:4;42062;42067:1;42062:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;42110:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;42100:4;42105:1;42100:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;42149:62;42166:4;42181:15;42199:11;42149:8;:62::i;:::-;42258:15;:66;;;42343:11;42373:1;42421:4;42452;42476:15;42258:248;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;41928:590;33336:5:::0;33327:6;;:14;;;;;;;;;;;;;;;;;;41862:656;:::o;13757:191::-;13831:16;13850:6;;;;;;;;;;;13831:25;;13876:8;13867:6;;:17;;;;;;;;;;;;;;;;;;13931:8;13900:40;;13921:8;13900:40;;;;;;;;;;;;13820:128;13757:191;:::o;42530:177::-;42592:17;;;;;;;;;;;:26;;:41;42619:13;42630:1;42619:6;:10;;:13;;;;:::i;:::-;42592:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42648:23;;;;;;;;;;;:32;;:47;42681:13;42692:1;42681:6;:10;;:13;;;;:::i;:::-;42648:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42530:177;:::o;43347:883::-;43463:7;43459:44;;43489:14;:12;:14::i;:::-;43459:44;43524:11;:19;43536:6;43524:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;43548:11;:22;43560:9;43548:22;;;;;;;;;;;;;;;;;;;;;;;;;43547:23;43524:46;43520:637;;;43591:48;43613:6;43621:9;43632:6;43591:21;:48::i;:::-;43520:637;;;43666:11;:19;43678:6;43666:19;;;;;;;;;;;;;;;;;;;;;;;;;43665:20;:46;;;;;43689:11;:22;43701:9;43689:22;;;;;;;;;;;;;;;;;;;;;;;;;43665:46;43661:496;;;43732:46;43752:6;43760:9;43771:6;43732:19;:46::i;:::-;43661:496;;;43805:11;:19;43817:6;43805:19;;;;;;;;;;;;;;;;;;;;;;;;;43804:20;:47;;;;;43829:11;:22;43841:9;43829:22;;;;;;;;;;;;;;;;;;;;;;;;;43828:23;43804:47;43800:357;;;43872:44;43890:6;43898:9;43909:6;43872:17;:44::i;:::-;43800:357;;;43942:11;:19;43954:6;43942:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;43965:11;:22;43977:9;43965:22;;;;;;;;;;;;;;;;;;;;;;;;;43942:45;43938:219;;;44008:48;44030:6;44038:9;44049:6;44008:21;:48::i;:::-;43938:219;;;44097:44;44115:6;44123:9;44134:6;44097:17;:44::i;:::-;43938:219;43800:357;43661:496;43520:637;44177:7;44173:45;;44203:15;:13;:15::i;:::-;44173:45;43347:883;;;;:::o;48695:595::-;48745:7;48754;48778:15;48796:7;;48778:25;;48818:15;48836:7;;48818:25;;48863:9;48858:305;48882:9;:16;;;;48878:1;:20;48858:305;;;48952:7;48928;:21;48936:9;48946:1;48936:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;48928:21;;;;;;;;;;;;;;;;:31;:66;;;;48987:7;48963;:21;48971:9;48981:1;48971:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;48963:21;;;;;;;;;;;;;;;;:31;48928:66;48924:97;;;49004:7;;49013;;48996:25;;;;;;;;;48924:97;49050:34;49062:7;:21;49070:9;49080:1;49070:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;49062:21;;;;;;;;;;;;;;;;49050:7;:11;;:34;;;;:::i;:::-;49040:44;;49113:34;49125:7;:21;49133:9;49143:1;49133:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;49125:21;;;;;;;;;;;;;;;;49113:7;:11;;:34;;;;:::i;:::-;49103:44;;48900:3;;;;;:::i;:::-;;;;48858:305;;;;49191:20;49203:7;;49191;;:11;;:20;;;;:::i;:::-;49181:7;:30;49177:61;;;49221:7;;49230;;49213:25;;;;;;;;49177:61;49261:7;49270;49253:25;;;;;;48695:595;;;:::o;47759:371::-;47852:7;47861;47870;47894:12;47909:28;47933:3;47909:19;47921:6;47909:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;47894:43;;47952:13;47968:29;47993:3;47968:20;47980:7;47968;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;47952:45;;48012:23;48038:28;48060:5;48038:17;48050:4;48038:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;48012:54;;48089:15;48106:4;48112:5;48081:37;;;;;;;;;47759:371;;;;;;;:::o;48142:354::-;48237:7;48246;48255;48279:15;48297:24;48309:11;48297:7;:11;;:24;;;;:::i;:::-;48279:42;;48336:12;48351:21;48360:11;48351:4;:8;;:21;;;;:::i;:::-;48336:36;;48387:23;48413:17;48425:4;48413:7;:11;;:17;;;;:::i;:::-;48387:43;;48453:7;48462:15;48479:4;48445:39;;;;;;;;;48142:354;;;;;;;:::o;38985:238::-;39046:1;39035:7;;:12;:29;;;;;39063:1;39051:8;;:13;39035:29;39032:41;;;39066:7;;39032:41;39107:7;;39089:15;:25;;;;39148:8;;39129:16;:27;;;;39183:1;39173:7;:11;;;;39210:1;39199:8;:12;;;;38985:238;:::o;45373:580::-;45480:15;45497:23;45522:12;45536:23;45561:12;45575:13;45592:19;45603:7;45592:10;:19::i;:::-;45479:132;;;;;;;;;;;;45644:28;45664:7;45644;:15;45652:6;45644:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;45626:7;:15;45634:6;45626:15;;;;;;;;;;;;;;;:46;;;;45705:28;45725:7;45705;:15;45713:6;45705:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;45687:7;:15;45695:6;45687:15;;;;;;;;;;;;;;;:46;;;;45769:39;45792:15;45769:7;:18;45777:9;45769:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;45748:7;:18;45756:9;45748:18;;;;;;;;;;;;;;;:60;;;;45823:16;45833:5;45823:9;:16::i;:::-;45854:23;45866:4;45872;45854:11;:23::i;:::-;45914:9;45897:44;;45906:6;45897:44;;;45925:15;45897:44;;;;;;:::i;:::-;;;;;;;;45464:489;;;;;;45373:580;;;:::o;44769:592::-;44874:15;44891:23;44916:12;44930:23;44955:12;44969:13;44986:19;44997:7;44986:10;:19::i;:::-;44873:132;;;;;;;;;;;;45038:28;45058:7;45038;:15;45046:6;45038:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;45020:7;:15;45028:6;45020:15;;;;;;;;;;;;;;;:46;;;;45102:39;45125:15;45102:7;:18;45110:9;45102:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;45081:7;:18;45089:9;45081:18;;;;;;;;;;;;;;;:60;;;;45177:39;45200:15;45177:7;:18;45185:9;45177:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;45156:7;:18;45164:9;45156:18;;;;;;;;;;;;;;;:60;;;;45231:16;45241:5;45231:9;:16::i;:::-;45262:23;45274:4;45280;45262:11;:23::i;:::-;45322:9;45305:44;;45314:6;45305:44;;;45333:15;45305:44;;;;;;:::i;:::-;;;;;;;;44858:503;;;;;;44769:592;;;:::o;44242:515::-;44345:15;44362:23;44387:12;44401:23;44426:12;44440:13;44457:19;44468:7;44457:10;:19::i;:::-;44344:132;;;;;;;;;;;;44509:28;44529:7;44509;:15;44517:6;44509:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;44491:7;:15;44499:6;44491:15;;;;;;;;;;;;;;;:46;;;;44573:39;44596:15;44573:7;:18;44581:9;44573:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;44552:7;:18;44560:9;44552:18;;;;;;;;;;;;;;;:60;;;;44627:16;44637:5;44627:9;:16::i;:::-;44658:23;44670:4;44676;44658:11;:23::i;:::-;44718:9;44701:44;;44710:6;44701:44;;;44729:15;44701:44;;;;;;:::i;:::-;;;;;;;;44329:428;;;;;;44242:515;;;:::o;45965:655::-;46072:15;46089:23;46114:12;46128:23;46153:12;46167:13;46184:19;46195:7;46184:10;:19::i;:::-;46071:132;;;;;;;;;;;;46236:28;46256:7;46236;:15;46244:6;46236:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;46218:7;:15;46226:6;46218:15;;;;;;;;;;;;;;;:46;;;;46297:28;46317:7;46297;:15;46305:6;46297:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;46279:7;:15;46287:6;46279:15;;;;;;;;;;;;;;;:46;;;;46361:39;46384:15;46361:7;:18;46369:9;46361:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;46340:7;:18;46348:9;46340:18;;;;;;;;;;;;;;;:60;;;;46436:39;46459:15;46436:7;:18;46444:9;46436:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;46415:7;:18;46423:9;46415:18;;;;;;;;;;;;;;;:60;;;;46490:16;46500:5;46490:9;:16::i;:::-;46521:23;46533:4;46539;46521:11;:23::i;:::-;46581:9;46564:44;;46573:6;46564:44;;;46592:15;46564:44;;;;;;:::i;:::-;;;;;;;;46056:564;;;;;;45965:655;;;:::o;39235:127::-;39293:15;;39283:7;:25;;;;39334:16;;39323:8;:27;;;;39235:127::o;4209:98::-;4267:7;4298:1;4294;:5;;;;:::i;:::-;4287:12;;4209:98;;;;:::o;46632:349::-;46689:19;46712:10;:8;:10::i;:::-;46689:33;;46737:13;46753:22;46763:11;46753:5;:9;;:22;;;;:::i;:::-;46737:38;;46815:33;46842:5;46815:7;:22;46831:4;46815:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;46790:7;:22;46806:4;46790:22;;;;;;;;;;;;;;;:58;;;;46866:11;:26;46886:4;46866:26;;;;;;;;;;;;;;;;;;;;;;;;;46863:106;;;46936:33;46963:5;46936:7;:22;46952:4;46936:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;46911:7;:22;46927:4;46911:22;;;;;;;;;;;;;;;:58;;;;46863:106;46674:307;;46632:349;:::o;46993:159::-;47075:17;47087:4;47075:7;;:11;;:17;;;;:::i;:::-;47065:7;:27;;;;47120:20;47135:4;47120:10;;:14;;:20;;;;:::i;:::-;47107:10;:33;;;;46993:159;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;152:143;;;;:::o;301:155::-;355:5;393:6;380:20;371:29;;409:41;444:5;409:41;:::i;:::-;301:155;;;;:::o;462:133::-;505:5;543:6;530:20;521:29;;559:30;583:5;559:30;:::i;:::-;462:133;;;;:::o;601:139::-;647:5;685:6;672:20;663:29;;701:33;728:5;701:33;:::i;:::-;601:139;;;;:::o;746:329::-;805:6;854:2;842:9;833:7;829:23;825:32;822:119;;;860:79;;:::i;:::-;822:119;980:1;1005:53;1050:7;1041:6;1030:9;1026:22;1005:53;:::i;:::-;995:63;;951:117;746:329;;;;:::o;1081:351::-;1151:6;1200:2;1188:9;1179:7;1175:23;1171:32;1168:119;;;1206:79;;:::i;:::-;1168:119;1326:1;1351:64;1407:7;1398:6;1387:9;1383:22;1351:64;:::i;:::-;1341:74;;1297:128;1081:351;;;;:::o;1438:345::-;1505:6;1554:2;1542:9;1533:7;1529:23;1525:32;1522:119;;;1560:79;;:::i;:::-;1522:119;1680:1;1705:61;1758:7;1749:6;1738:9;1734:22;1705:61;:::i;:::-;1695:71;;1651:125;1438:345;;;;:::o;1789:474::-;1857:6;1865;1914:2;1902:9;1893:7;1889:23;1885:32;1882:119;;;1920:79;;:::i;:::-;1882:119;2040:1;2065:53;2110:7;2101:6;2090:9;2086:22;2065:53;:::i;:::-;2055:63;;2011:117;2167:2;2193:53;2238:7;2229:6;2218:9;2214:22;2193:53;:::i;:::-;2183:63;;2138:118;1789:474;;;;;:::o;2269:619::-;2346:6;2354;2362;2411:2;2399:9;2390:7;2386:23;2382:32;2379:119;;;2417:79;;:::i;:::-;2379:119;2537:1;2562:53;2607:7;2598:6;2587:9;2583:22;2562:53;:::i;:::-;2552:63;;2508:117;2664:2;2690:53;2735:7;2726:6;2715:9;2711:22;2690:53;:::i;:::-;2680:63;;2635:118;2792:2;2818:53;2863:7;2854:6;2843:9;2839:22;2818:53;:::i;:::-;2808:63;;2763:118;2269:619;;;;;:::o;2894:468::-;2959:6;2967;3016:2;3004:9;2995:7;2991:23;2987:32;2984:119;;;3022:79;;:::i;:::-;2984:119;3142:1;3167:53;3212:7;3203:6;3192:9;3188:22;3167:53;:::i;:::-;3157:63;;3113:117;3269:2;3295:50;3337:7;3328:6;3317:9;3313:22;3295:50;:::i;:::-;3285:60;;3240:115;2894:468;;;;;:::o;3368:474::-;3436:6;3444;3493:2;3481:9;3472:7;3468:23;3464:32;3461:119;;;3499:79;;:::i;:::-;3461:119;3619:1;3644:53;3689:7;3680:6;3669:9;3665:22;3644:53;:::i;:::-;3634:63;;3590:117;3746:2;3772:53;3817:7;3808:6;3797:9;3793:22;3772:53;:::i;:::-;3762:63;;3717:118;3368:474;;;;;:::o;3848:323::-;3904:6;3953:2;3941:9;3932:7;3928:23;3924:32;3921:119;;;3959:79;;:::i;:::-;3921:119;4079:1;4104:50;4146:7;4137:6;4126:9;4122:22;4104:50;:::i;:::-;4094:60;;4050:114;3848:323;;;;:::o;4177:329::-;4236:6;4285:2;4273:9;4264:7;4260:23;4256:32;4253:119;;;4291:79;;:::i;:::-;4253:119;4411:1;4436:53;4481:7;4472:6;4461:9;4457:22;4436:53;:::i;:::-;4426:63;;4382:117;4177:329;;;;:::o;4512:468::-;4577:6;4585;4634:2;4622:9;4613:7;4609:23;4605:32;4602:119;;;4640:79;;:::i;:::-;4602:119;4760:1;4785:53;4830:7;4821:6;4810:9;4806:22;4785:53;:::i;:::-;4775:63;;4731:117;4887:2;4913:50;4955:7;4946:6;4935:9;4931:22;4913:50;:::i;:::-;4903:60;;4858:115;4512:468;;;;;:::o;4986:179::-;5055:10;5076:46;5118:3;5110:6;5076:46;:::i;:::-;5154:4;5149:3;5145:14;5131:28;;4986:179;;;;:::o;5171:142::-;5274:32;5300:5;5274:32;:::i;:::-;5269:3;5262:45;5171:142;;:::o;5319:108::-;5396:24;5414:5;5396:24;:::i;:::-;5391:3;5384:37;5319:108;;:::o;5433:118::-;5520:24;5538:5;5520:24;:::i;:::-;5515:3;5508:37;5433:118;;:::o;5587:732::-;5706:3;5735:54;5783:5;5735:54;:::i;:::-;5805:86;5884:6;5879:3;5805:86;:::i;:::-;5798:93;;5915:56;5965:5;5915:56;:::i;:::-;5994:7;6025:1;6010:284;6035:6;6032:1;6029:13;6010:284;;;6111:6;6105:13;6138:63;6197:3;6182:13;6138:63;:::i;:::-;6131:70;;6224:60;6277:6;6224:60;:::i;:::-;6214:70;;6070:224;6057:1;6054;6050:9;6045:14;;6010:284;;;6014:14;6310:3;6303:10;;5711:608;;;5587:732;;;;:::o;6325:109::-;6406:21;6421:5;6406:21;:::i;:::-;6401:3;6394:34;6325:109;;:::o;6440:185::-;6554:64;6612:5;6554:64;:::i;:::-;6549:3;6542:77;6440:185;;:::o;6631:147::-;6726:45;6765:5;6726:45;:::i;:::-;6721:3;6714:58;6631:147;;:::o;6784:364::-;6872:3;6900:39;6933:5;6900:39;:::i;:::-;6955:71;7019:6;7014:3;6955:71;:::i;:::-;6948:78;;7035:52;7080:6;7075:3;7068:4;7061:5;7057:16;7035:52;:::i;:::-;7112:29;7134:6;7112:29;:::i;:::-;7107:3;7103:39;7096:46;;6876:272;6784:364;;;;:::o;7154:366::-;7296:3;7317:67;7381:2;7376:3;7317:67;:::i;:::-;7310:74;;7393:93;7482:3;7393:93;:::i;:::-;7511:2;7506:3;7502:12;7495:19;;7154:366;;;:::o;7526:::-;7668:3;7689:67;7753:2;7748:3;7689:67;:::i;:::-;7682:74;;7765:93;7854:3;7765:93;:::i;:::-;7883:2;7878:3;7874:12;7867:19;;7526:366;;;:::o;7898:::-;8040:3;8061:67;8125:2;8120:3;8061:67;:::i;:::-;8054:74;;8137:93;8226:3;8137:93;:::i;:::-;8255:2;8250:3;8246:12;8239:19;;7898:366;;;:::o;8270:::-;8412:3;8433:67;8497:2;8492:3;8433:67;:::i;:::-;8426:74;;8509:93;8598:3;8509:93;:::i;:::-;8627:2;8622:3;8618:12;8611:19;;8270:366;;;:::o;8642:::-;8784:3;8805:67;8869:2;8864:3;8805:67;:::i;:::-;8798:74;;8881:93;8970:3;8881:93;:::i;:::-;8999:2;8994:3;8990:12;8983:19;;8642:366;;;:::o;9014:::-;9156:3;9177:67;9241:2;9236:3;9177:67;:::i;:::-;9170:74;;9253:93;9342:3;9253:93;:::i;:::-;9371:2;9366:3;9362:12;9355:19;;9014:366;;;:::o;9386:::-;9528:3;9549:67;9613:2;9608:3;9549:67;:::i;:::-;9542:74;;9625:93;9714:3;9625:93;:::i;:::-;9743:2;9738:3;9734:12;9727:19;;9386:366;;;:::o;9758:::-;9900:3;9921:67;9985:2;9980:3;9921:67;:::i;:::-;9914:74;;9997:93;10086:3;9997:93;:::i;:::-;10115:2;10110:3;10106:12;10099:19;;9758:366;;;:::o;10130:::-;10272:3;10293:67;10357:2;10352:3;10293:67;:::i;:::-;10286:74;;10369:93;10458:3;10369:93;:::i;:::-;10487:2;10482:3;10478:12;10471:19;;10130:366;;;:::o;10502:::-;10644:3;10665:67;10729:2;10724:3;10665:67;:::i;:::-;10658:74;;10741:93;10830:3;10741:93;:::i;:::-;10859:2;10854:3;10850:12;10843:19;;10502:366;;;:::o;10874:::-;11016:3;11037:67;11101:2;11096:3;11037:67;:::i;:::-;11030:74;;11113:93;11202:3;11113:93;:::i;:::-;11231:2;11226:3;11222:12;11215:19;;10874:366;;;:::o;11246:::-;11388:3;11409:67;11473:2;11468:3;11409:67;:::i;:::-;11402:74;;11485:93;11574:3;11485:93;:::i;:::-;11603:2;11598:3;11594:12;11587:19;;11246:366;;;:::o;11618:::-;11760:3;11781:67;11845:2;11840:3;11781:67;:::i;:::-;11774:74;;11857:93;11946:3;11857:93;:::i;:::-;11975:2;11970:3;11966:12;11959:19;;11618:366;;;:::o;11990:::-;12132:3;12153:67;12217:2;12212:3;12153:67;:::i;:::-;12146:74;;12229:93;12318:3;12229:93;:::i;:::-;12347:2;12342:3;12338:12;12331:19;;11990:366;;;:::o;12362:::-;12504:3;12525:67;12589:2;12584:3;12525:67;:::i;:::-;12518:74;;12601:93;12690:3;12601:93;:::i;:::-;12719:2;12714:3;12710:12;12703:19;;12362:366;;;:::o;12734:::-;12876:3;12897:67;12961:2;12956:3;12897:67;:::i;:::-;12890:74;;12973:93;13062:3;12973:93;:::i;:::-;13091:2;13086:3;13082:12;13075:19;;12734:366;;;:::o;13106:118::-;13193:24;13211:5;13193:24;:::i;:::-;13188:3;13181:37;13106:118;;:::o;13230:112::-;13313:22;13329:5;13313:22;:::i;:::-;13308:3;13301:35;13230:112;;:::o;13348:222::-;13441:4;13479:2;13468:9;13464:18;13456:26;;13492:71;13560:1;13549:9;13545:17;13536:6;13492:71;:::i;:::-;13348:222;;;;:::o;13576:254::-;13685:4;13723:2;13712:9;13708:18;13700:26;;13736:87;13820:1;13809:9;13805:17;13796:6;13736:87;:::i;:::-;13576:254;;;;:::o;13836:210::-;13923:4;13961:2;13950:9;13946:18;13938:26;;13974:65;14036:1;14025:9;14021:17;14012:6;13974:65;:::i;:::-;13836:210;;;;:::o;14052:276::-;14172:4;14210:2;14199:9;14195:18;14187:26;;14223:98;14318:1;14307:9;14303:17;14294:6;14223:98;:::i;:::-;14052:276;;;;:::o;14334:313::-;14447:4;14485:2;14474:9;14470:18;14462:26;;14534:9;14528:4;14524:20;14520:1;14509:9;14505:17;14498:47;14562:78;14635:4;14626:6;14562:78;:::i;:::-;14554:86;;14334:313;;;;:::o;14653:419::-;14819:4;14857:2;14846:9;14842:18;14834:26;;14906:9;14900:4;14896:20;14892:1;14881:9;14877:17;14870:47;14934:131;15060:4;14934:131;:::i;:::-;14926:139;;14653:419;;;:::o;15078:::-;15244:4;15282:2;15271:9;15267:18;15259:26;;15331:9;15325:4;15321:20;15317:1;15306:9;15302:17;15295:47;15359:131;15485:4;15359:131;:::i;:::-;15351:139;;15078:419;;;:::o;15503:::-;15669:4;15707:2;15696:9;15692:18;15684:26;;15756:9;15750:4;15746:20;15742:1;15731:9;15727:17;15720:47;15784:131;15910:4;15784:131;:::i;:::-;15776:139;;15503:419;;;:::o;15928:::-;16094:4;16132:2;16121:9;16117:18;16109:26;;16181:9;16175:4;16171:20;16167:1;16156:9;16152:17;16145:47;16209:131;16335:4;16209:131;:::i;:::-;16201:139;;15928:419;;;:::o;16353:::-;16519:4;16557:2;16546:9;16542:18;16534:26;;16606:9;16600:4;16596:20;16592:1;16581:9;16577:17;16570:47;16634:131;16760:4;16634:131;:::i;:::-;16626:139;;16353:419;;;:::o;16778:::-;16944:4;16982:2;16971:9;16967:18;16959:26;;17031:9;17025:4;17021:20;17017:1;17006:9;17002:17;16995:47;17059:131;17185:4;17059:131;:::i;:::-;17051:139;;16778:419;;;:::o;17203:::-;17369:4;17407:2;17396:9;17392:18;17384:26;;17456:9;17450:4;17446:20;17442:1;17431:9;17427:17;17420:47;17484:131;17610:4;17484:131;:::i;:::-;17476:139;;17203:419;;;:::o;17628:::-;17794:4;17832:2;17821:9;17817:18;17809:26;;17881:9;17875:4;17871:20;17867:1;17856:9;17852:17;17845:47;17909:131;18035:4;17909:131;:::i;:::-;17901:139;;17628:419;;;:::o;18053:::-;18219:4;18257:2;18246:9;18242:18;18234:26;;18306:9;18300:4;18296:20;18292:1;18281:9;18277:17;18270:47;18334:131;18460:4;18334:131;:::i;:::-;18326:139;;18053:419;;;:::o;18478:::-;18644:4;18682:2;18671:9;18667:18;18659:26;;18731:9;18725:4;18721:20;18717:1;18706:9;18702:17;18695:47;18759:131;18885:4;18759:131;:::i;:::-;18751:139;;18478:419;;;:::o;18903:::-;19069:4;19107:2;19096:9;19092:18;19084:26;;19156:9;19150:4;19146:20;19142:1;19131:9;19127:17;19120:47;19184:131;19310:4;19184:131;:::i;:::-;19176:139;;18903:419;;;:::o;19328:::-;19494:4;19532:2;19521:9;19517:18;19509:26;;19581:9;19575:4;19571:20;19567:1;19556:9;19552:17;19545:47;19609:131;19735:4;19609:131;:::i;:::-;19601:139;;19328:419;;;:::o;19753:::-;19919:4;19957:2;19946:9;19942:18;19934:26;;20006:9;20000:4;19996:20;19992:1;19981:9;19977:17;19970:47;20034:131;20160:4;20034:131;:::i;:::-;20026:139;;19753:419;;;:::o;20178:::-;20344:4;20382:2;20371:9;20367:18;20359:26;;20431:9;20425:4;20421:20;20417:1;20406:9;20402:17;20395:47;20459:131;20585:4;20459:131;:::i;:::-;20451:139;;20178:419;;;:::o;20603:::-;20769:4;20807:2;20796:9;20792:18;20784:26;;20856:9;20850:4;20846:20;20842:1;20831:9;20827:17;20820:47;20884:131;21010:4;20884:131;:::i;:::-;20876:139;;20603:419;;;:::o;21028:::-;21194:4;21232:2;21221:9;21217:18;21209:26;;21281:9;21275:4;21271:20;21267:1;21256:9;21252:17;21245:47;21309:131;21435:4;21309:131;:::i;:::-;21301:139;;21028:419;;;:::o;21453:222::-;21546:4;21584:2;21573:9;21569:18;21561:26;;21597:71;21665:1;21654:9;21650:17;21641:6;21597:71;:::i;:::-;21453:222;;;;:::o;21681:831::-;21944:4;21982:3;21971:9;21967:19;21959:27;;21996:71;22064:1;22053:9;22049:17;22040:6;21996:71;:::i;:::-;22077:80;22153:2;22142:9;22138:18;22129:6;22077:80;:::i;:::-;22204:9;22198:4;22194:20;22189:2;22178:9;22174:18;22167:48;22232:108;22335:4;22326:6;22232:108;:::i;:::-;22224:116;;22350:72;22418:2;22407:9;22403:18;22394:6;22350:72;:::i;:::-;22432:73;22500:3;22489:9;22485:19;22476:6;22432:73;:::i;:::-;21681:831;;;;;;;;:::o;22518:214::-;22607:4;22645:2;22634:9;22630:18;22622:26;;22658:67;22722:1;22711:9;22707:17;22698:6;22658:67;:::i;:::-;22518:214;;;;:::o;22819:132::-;22886:4;22909:3;22901:11;;22939:4;22934:3;22930:14;22922:22;;22819:132;;;:::o;22957:114::-;23024:6;23058:5;23052:12;23042:22;;22957:114;;;:::o;23077:99::-;23129:6;23163:5;23157:12;23147:22;;23077:99;;;:::o;23182:113::-;23252:4;23284;23279:3;23275:14;23267:22;;23182:113;;;:::o;23301:184::-;23400:11;23434:6;23429:3;23422:19;23474:4;23469:3;23465:14;23450:29;;23301:184;;;;:::o;23491:169::-;23575:11;23609:6;23604:3;23597:19;23649:4;23644:3;23640:14;23625:29;;23491:169;;;;:::o;23666:305::-;23706:3;23725:20;23743:1;23725:20;:::i;:::-;23720:25;;23759:20;23777:1;23759:20;:::i;:::-;23754:25;;23913:1;23845:66;23841:74;23838:1;23835:81;23832:107;;;23919:18;;:::i;:::-;23832:107;23963:1;23960;23956:9;23949:16;;23666:305;;;;:::o;23977:185::-;24017:1;24034:20;24052:1;24034:20;:::i;:::-;24029:25;;24068:20;24086:1;24068:20;:::i;:::-;24063:25;;24107:1;24097:35;;24112:18;;:::i;:::-;24097:35;24154:1;24151;24147:9;24142:14;;23977:185;;;;:::o;24168:348::-;24208:7;24231:20;24249:1;24231:20;:::i;:::-;24226:25;;24265:20;24283:1;24265:20;:::i;:::-;24260:25;;24453:1;24385:66;24381:74;24378:1;24375:81;24370:1;24363:9;24356:17;24352:105;24349:131;;;24460:18;;:::i;:::-;24349:131;24508:1;24505;24501:9;24490:20;;24168:348;;;;:::o;24522:191::-;24562:4;24582:20;24600:1;24582:20;:::i;:::-;24577:25;;24616:20;24634:1;24616:20;:::i;:::-;24611:25;;24655:1;24652;24649:8;24646:34;;;24660:18;;:::i;:::-;24646:34;24705:1;24702;24698:9;24690:17;;24522:191;;;;:::o;24719:96::-;24756:7;24785:24;24803:5;24785:24;:::i;:::-;24774:35;;24719:96;;;:::o;24821:104::-;24866:7;24895:24;24913:5;24895:24;:::i;:::-;24884:35;;24821:104;;;:::o;24931:90::-;24965:7;25008:5;25001:13;24994:21;24983:32;;24931:90;;;:::o;25027:126::-;25064:7;25104:42;25097:5;25093:54;25082:65;;25027:126;;;:::o;25159:77::-;25196:7;25225:5;25214:16;;25159:77;;;:::o;25242:86::-;25277:7;25317:4;25310:5;25306:16;25295:27;;25242:86;;;:::o;25334:153::-;25411:9;25444:37;25475:5;25444:37;:::i;:::-;25431:50;;25334:153;;;:::o;25493:121::-;25551:9;25584:24;25602:5;25584:24;:::i;:::-;25571:37;;25493:121;;;:::o;25620:126::-;25670:9;25703:37;25734:5;25703:37;:::i;:::-;25690:50;;25620:126;;;:::o;25752:113::-;25802:9;25835:24;25853:5;25835:24;:::i;:::-;25822:37;;25752:113;;;:::o;25871:307::-;25939:1;25949:113;25963:6;25960:1;25957:13;25949:113;;;26048:1;26043:3;26039:11;26033:18;26029:1;26024:3;26020:11;26013:39;25985:2;25982:1;25978:10;25973:15;;25949:113;;;26080:6;26077:1;26074:13;26071:101;;;26160:1;26151:6;26146:3;26142:16;26135:27;26071:101;25920:258;25871:307;;;:::o;26184:320::-;26228:6;26265:1;26259:4;26255:12;26245:22;;26312:1;26306:4;26302:12;26333:18;26323:81;;26389:4;26381:6;26377:17;26367:27;;26323:81;26451:2;26443:6;26440:14;26420:18;26417:38;26414:84;;;26470:18;;:::i;:::-;26414:84;26235:269;26184:320;;;:::o;26510:233::-;26549:3;26572:24;26590:5;26572:24;:::i;:::-;26563:33;;26618:66;26611:5;26608:77;26605:103;;;26688:18;;:::i;:::-;26605:103;26735:1;26728:5;26724:13;26717:20;;26510:233;;;:::o;26749:180::-;26797:77;26794:1;26787:88;26894:4;26891:1;26884:15;26918:4;26915:1;26908:15;26935:180;26983:77;26980:1;26973:88;27080:4;27077:1;27070:15;27104:4;27101:1;27094:15;27121:180;27169:77;27166:1;27159:88;27266:4;27263:1;27256:15;27290:4;27287:1;27280:15;27307:180;27355:77;27352:1;27345:88;27452:4;27449:1;27442:15;27476:4;27473:1;27466:15;27493:180;27541:77;27538:1;27531:88;27638:4;27635:1;27628:15;27662:4;27659:1;27652:15;27679:180;27727:77;27724:1;27717:88;27824:4;27821:1;27814:15;27848:4;27845:1;27838:15;27988:117;28097:1;28094;28087:12;28111:102;28152:6;28203:2;28199:7;28194:2;28187:5;28183:14;28179:28;28169:38;;28111:102;;;:::o;28219:222::-;28359:34;28355:1;28347:6;28343:14;28336:58;28428:5;28423:2;28415:6;28411:15;28404:30;28219:222;:::o;28447:229::-;28587:34;28583:1;28575:6;28571:14;28564:58;28656:12;28651:2;28643:6;28639:15;28632:37;28447:229;:::o;28682:225::-;28822:34;28818:1;28810:6;28806:14;28799:58;28891:8;28886:2;28878:6;28874:15;28867:33;28682:225;:::o;28913:221::-;29053:34;29049:1;29041:6;29037:14;29030:58;29122:4;29117:2;29109:6;29105:15;29098:29;28913:221;:::o;29140:177::-;29280:29;29276:1;29268:6;29264:14;29257:53;29140:177;:::o;29323:::-;29463:29;29459:1;29451:6;29447:14;29440:53;29323:177;:::o;29506:239::-;29646:34;29642:1;29634:6;29630:14;29623:58;29715:22;29710:2;29702:6;29698:15;29691:47;29506:239;:::o;29751:181::-;29891:33;29887:1;29879:6;29875:14;29868:57;29751:181;:::o;29938:227::-;30078:34;30074:1;30066:6;30062:14;30055:58;30147:10;30142:2;30134:6;30130:15;30123:35;29938:227;:::o;30171:182::-;30311:34;30307:1;30299:6;30295:14;30288:58;30171:182;:::o;30359:228::-;30499:34;30495:1;30487:6;30483:14;30476:58;30568:11;30563:2;30555:6;30551:15;30544:36;30359:228;:::o;30593:224::-;30733:34;30729:1;30721:6;30717:14;30710:58;30802:7;30797:2;30789:6;30785:15;30778:32;30593:224;:::o;30823:223::-;30963:34;30959:1;30951:6;30947:14;30940:58;31032:6;31027:2;31019:6;31015:15;31008:31;30823:223;:::o;31052:176::-;31192:28;31188:1;31180:6;31176:14;31169:52;31052:176;:::o;31234:221::-;31374:34;31370:1;31362:6;31358:14;31351:58;31443:4;31438:2;31430:6;31426:15;31419:29;31234:221;:::o;31461:231::-;31601:34;31597:1;31589:6;31585:14;31578:58;31670:14;31665:2;31657:6;31653:15;31646:39;31461:231;:::o;31698:122::-;31771:24;31789:5;31771:24;:::i;:::-;31764:5;31761:35;31751:63;;31810:1;31807;31800:12;31751:63;31698:122;:::o;31826:138::-;31907:32;31933:5;31907:32;:::i;:::-;31900:5;31897:43;31887:71;;31954:1;31951;31944:12;31887:71;31826:138;:::o;31970:116::-;32040:21;32055:5;32040:21;:::i;:::-;32033:5;32030:32;32020:60;;32076:1;32073;32066:12;32020:60;31970:116;:::o;32092:122::-;32165:24;32183:5;32165:24;:::i;:::-;32158:5;32155:35;32145:63;;32204:1;32201;32194:12;32145:63;32092:122;:::o
Swarm Source
ipfs://4d2d58b05dfba912efb9a9d909a12314414e90d30e5daafd0ff620c2523fb356
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.