Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 282 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Withdraw | 12104462 | 1434 days ago | IN | 0 ETH | 0.00425719 | ||||
Withdraw | 12103910 | 1434 days ago | IN | 0 ETH | 0.00554996 | ||||
Withdraw | 11918077 | 1462 days ago | IN | 0 ETH | 0.0044578 | ||||
Withdraw Winning | 11711170 | 1494 days ago | IN | 0 ETH | 0.01281527 | ||||
Withdraw Winning | 11692545 | 1497 days ago | IN | 0 ETH | 0.01656181 | ||||
Withdraw Winning | 11688834 | 1497 days ago | IN | 0 ETH | 0.00956835 | ||||
Withdraw Winning | 11680179 | 1499 days ago | IN | 0 ETH | 0.00698245 | ||||
Withdraw Winning | 11679489 | 1499 days ago | IN | 0 ETH | 0.00892867 | ||||
Withdraw | 11671921 | 1500 days ago | IN | 0 ETH | 0.00094728 | ||||
Withdraw | 11671921 | 1500 days ago | IN | 0 ETH | 0.00098071 | ||||
Withdraw | 11671920 | 1500 days ago | IN | 0 ETH | 0.00151565 | ||||
Withdraw Winning | 11669003 | 1501 days ago | IN | 0 ETH | 0.01050432 | ||||
Withdraw Winning | 11667643 | 1501 days ago | IN | 0 ETH | 0.00945388 | ||||
Withdraw Winning | 11666518 | 1501 days ago | IN | 0 ETH | 0.01569666 | ||||
Withdraw | 11666510 | 1501 days ago | IN | 0 ETH | 0.01084204 | ||||
Withdraw | 11664849 | 1501 days ago | IN | 0 ETH | 0.00329254 | ||||
Withdraw | 11663929 | 1501 days ago | IN | 0 ETH | 0.00387621 | ||||
Withdraw | 11663690 | 1501 days ago | IN | 0 ETH | 0.00421909 | ||||
Withdraw | 11663672 | 1501 days ago | IN | 0 ETH | 0.00348748 | ||||
Withdraw | 11662930 | 1501 days ago | IN | 0 ETH | 0.00664283 | ||||
Withdraw | 11658612 | 1502 days ago | IN | 0 ETH | 0.0055297 | ||||
Withdraw | 11657967 | 1502 days ago | IN | 0 ETH | 0.00394979 | ||||
Withdraw | 11657382 | 1502 days ago | IN | 0 ETH | 0.00539121 | ||||
Withdraw | 11656055 | 1503 days ago | IN | 0 ETH | 0.00511677 | ||||
Withdraw | 11653204 | 1503 days ago | IN | 0 ETH | 0.00368048 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
USDTexPro
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-11-07 */ // SPDX-License-Identifier: MIT pragma solidity ^0.6.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 . */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves tokens from the caller's account to . * * 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 will be * allowed to spend on behalf of 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 as the allowance of 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 tokens from to using the * allowance mechanism. 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 tokens are moved from one account () to * another (). * * Note that may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a for an is set by * a call to {approve}. is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } pragma solidity ^0.6.0; /** * @title SafeERC20 * @dev Wrappers around ERC20 operations that throw on failure (when the token * contract returns false). Tokens that return no value (and instead revert or * throw on failure) are also supported, non-reverting calls are assumed to be * successful. * To use this library you can add a statement to your contract, * which allows you to call the safe operations as , etc. */ library SafeERC20 { using SafeMath for uint256; using Address for address; function safeTransfer(IERC20 token, address to, uint256 value) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value)); } /** * @dev Deprecated. This function has issues similar to the ones found in * {IERC20-approve}, and its usage is discouraged. * * Whenever possible, use {safeIncreaseAllowance} and * {safeDecreaseAllowance} instead. */ function safeApprove(IERC20 token, address spender, uint256 value) internal { // safeApprove should only be called when setting an initial allowance, // or when resetting it to zero. To increase and decrease it, use // 'safeIncreaseAllowance' and 'safeDecreaseAllowance' // solhint-disable-next-line max-line-length require((value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); } function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal { uint256 newAllowance = token.allowance(address(this), spender).add(value); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal { uint256 newAllowance = token.allowance(address(this), spender).sub(value, "SafeERC20: decreased allowance below zero"); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } /** * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement * on the return value: the return value is optional (but if data is returned, it must not be false). * @param token The token targeted by the call. * @param data The call data (encoded using abi.encode or one of its variants). */ function _callOptionalReturn(IERC20 token, bytes memory data) private { // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that // the target address contains contract code and also asserts for success in the low-level call. bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed"); if (returndata.length > 0) { // Return data is optional // solhint-disable-next-line max-line-length require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } pragma solidity ^0.6.0; /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @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) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @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 sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's ~ operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @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) { // 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 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's operator. Note: this function uses a * 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) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's operator. Note: this function uses a * 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) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's operator. This function uses a * 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 mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's operator. This function uses a * 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) { require(b != 0, errorMessage); return a % b; } } pragma solidity ^0.6.2; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if 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, 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 in extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; // solhint-disable-next-line no-inline-assembly assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's : sends wei to * , 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 , making them unable to receive funds via * . {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to , 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"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (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 . A * plain is an unsafe replacement for a function call: use this * function instead. * * If 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[]. * * Requirements: * * - must be a contract. * - calling with 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-}[], but with * as a fallback revert reason when 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-}[], * but also transferring wei to . * * Requirements: * * - the calling contract must have an ETH balance of at least . * - the called Solidity function must be . * * _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-}[], but * with as a fallback revert reason when 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"); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: weiValue }(data); 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 // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } /* * * USDTex - investment platform based on Ethereun blockchain smart-contract technology. Safe and legit! * * ┌───────────────────────────────────────────────────────────────────────┐ * │ Website: https://usdtex.pro │ * │ │ * | E-mail: [email protected] | * └───────────────────────────────────────────────────────────────────────┘ * * */ pragma solidity 0.6.12; contract USDTexPro { using SafeMath for uint256; using SafeERC20 for IERC20; // USDT contract Decimals: 6 IERC20 public investToken; uint256 constant public INVEST_MIN_AMOUNT = 1e7; // 10 usdt uint256 constant public PERCENTS_DIVIDER = 1e13 ;//1000; uint256 constant public BASE_PERCENT = 1e11; uint256 constant public MAX_PERCENT = 18*(1e12); uint256 constant public MARKETING_FEE = 60*(1e10); uint256 constant public PROJECT_FEE = 20*(1e10); uint256 constant public DEV_FEE = 20*(1e10); // uint256 constant public REFERRAL_PERCENTS = 1e11; uint256 public REFERRAL_PERCENTS = 1e11; uint256 constant public TIME_STEP = 1 days ; //days uint256 constant public BASE_AMOUNT_DALIY = 1e11; // 10w USDT uint256 constant public START_POINT = 1605064271; // Singapore time at: 2020-11-11 11:11:11 uint256 constant public PERCENT_INVEST = 10; // increase percent pre Invest uint256 constant public PERCENT_WITHDRAW = 15; // decreased percent pre Withdraw uint256 public presentPercent = 1e11; uint256 public presentDayAmount = BASE_AMOUNT_DALIY; uint256 public presentDaysInterval = 0; uint256 public totalLottery; //sum of latest 100 ticker uint256 public totalLotteryReward; //sum of 5% of invest uint256 public totalUsers; uint256 public totalInvested; uint256 public totalWithdrawn; uint256 public totalDeposits; uint256 public announceAt; bool public announceWinner; // announce Winners address public marketingAddress; address public projectAddress; address public devAddress; address public rewardPool; address public obsoleteExitTo; struct Deposit { uint256 amount; uint256 withdrawn; uint256 start; } struct User { Deposit[] deposits; uint256 checkpoint; address referrer; uint256 bonus; uint256 totalInvested; // invite reward uint256 totalBonus; uint256 missedBonus; //lottery reward uint256 lotteryBonus; } struct LotteryTicket { address user; uint256 amount; } mapping (address => User) internal users; mapping (uint256 => uint256) internal daliyInvestAmount; mapping(address => uint256[]) public userLotteryTicker; LotteryTicket[] public lotteryPool; event Newbie(address user); event NewDeposit(address indexed user, uint256 amount); event Withdrawn(address indexed user, uint256 amount); event MissBonus(address indexed referrer, address indexed referral, uint256 indexed level, uint256 amount); event FeePayed(address indexed user, uint256 totalAmount); event WithdrawWinning(address indexed user, uint256 amount); constructor(address _investToken, address marketingAddr, address projectAddr, address devAddr, address _obsoleteExitTo) public { require(!isContract(marketingAddr) && !isContract(projectAddr)); investToken = IERC20(_investToken); marketingAddress = marketingAddr; projectAddress = projectAddr; devAddress = devAddr; obsoleteExitTo = _obsoleteExitTo; } function setRewardPool(address _rewardPool) public { require(rewardPool == address(0), "Invalid operation"); rewardPool = _rewardPool; } function updateTodayAmount(uint daysInterval) private { if(daysInterval > presentDaysInterval) { uint power = daysInterval - presentDaysInterval; // presentDayAmount = presentDayAmount.mul(11**power).div(10**power); for (uint256 index = 0; index < power; index++) { presentDayAmount = presentDayAmount.mul(11).div(10); } presentDaysInterval = daysInterval; } } function invest(address referrer , uint256 _amount) public { require(_amount >= INVEST_MIN_AMOUNT, "Less than minimum"); require(!isContract(msg.sender), "cannot call from contract"); require(!announceWinner, "Game Over"); // game over! uint daysInterval = getDaysInterval(); // count days passed updateTodayAmount(daysInterval); uint todayAmount = presentDayAmount.sub(daliyInvestAmount[daysInterval]); require(todayAmount>0, "Sold out today"); uint amount = _amount > todayAmount ? _amount.sub(todayAmount) : _amount; investToken.safeTransferFrom(address(msg.sender), address(this), amount); investToken.safeTransfer( address(marketingAddress), amount.mul(MARKETING_FEE).div(PERCENTS_DIVIDER)); investToken.safeTransfer( address(projectAddress), amount.mul(PROJECT_FEE).div(PERCENTS_DIVIDER)); investToken.safeTransfer( address(devAddress), amount.mul(DEV_FEE).div(PERCENTS_DIVIDER)); // emit FeePayed(msg.sender, amount.mul(MARKETING_FEE.add(PROJECT_FEE)).div(PERCENTS_DIVIDER)); User storage user = users[msg.sender]; if (user.referrer == address(0) && users[referrer].deposits.length > 0 && referrer != msg.sender) { user.referrer = referrer; } if (user.referrer != address(0)) { address upline = user.referrer; for (uint256 i = 0; i < 10; i++) { if (upline != address(0)) { uint256 bonuAmount = amount.mul(REFERRAL_PERCENTS).div(PERCENTS_DIVIDER); if (users[upline].totalBonus.add(bonuAmount) <= users[upline].totalInvested) { users[upline].bonus = users[upline].bonus.add(bonuAmount); users[upline].totalBonus = users[upline].totalBonus.add(bonuAmount); } else { users[upline].missedBonus = users[upline].missedBonus.add(bonuAmount); emit MissBonus(upline, msg.sender, i, bonuAmount); } upline = users[upline].referrer; } else break; } } if (user.deposits.length == 0) { user.checkpoint = block.timestamp; totalUsers = totalUsers.add(1); // emit Newbie(msg.sender); } user.deposits.push(Deposit(amount, 0, block.timestamp)); user.totalInvested = user.totalInvested.add(amount); updateRate(amount, true); addLotteryTicket(msg.sender, amount); daliyInvestAmount[daysInterval] = daliyInvestAmount[daysInterval].add(amount); totalInvested = totalInvested.add(amount); totalDeposits = totalDeposits.add(1); emit NewDeposit(msg.sender, amount); } function addLotteryTicket(address _user, uint256 _amount) private { uint256 index = totalDeposits % 100;//100 totalDeposits from 0 LotteryTicket[] storage lotPool = lotteryPool; if (lotPool.length == 100) { //reuse 100 totalLottery = totalLottery.add(_amount).sub(lotPool[index].amount); lotPool[index].amount = _amount; lotPool[index].user = _user; } else { lotPool.push(LotteryTicket({ user : _user, amount : _amount })); totalLottery = totalLottery.add(_amount); } userLotteryTicker[_user].push(index); totalLotteryReward = totalLotteryReward.add( _amount.div(20) ); //transafer Reward to Pool investToken.safeTransfer( rewardPool, _amount.div(20)); } function withdrawWinning() public { require(announceWinner, "Not allowed"); uint256 winning = winningAmount(msg.sender); require(winning > 0, "No winnings"); User storage user = users[msg.sender]; user.lotteryBonus = user.lotteryBonus.add(winning); // investToken.safeTransfer( msg.sender, winning); investToken.safeTransferFrom( rewardPool , msg.sender, winning); emit WithdrawWinning(msg.sender, winning); } function winningAmount(address _user) public view returns (uint256) { uint256[] memory useTickers = userLotteryTicker[_user]; if (useTickers.length == 0 ) { return 0; } uint userAmount; LotteryTicket[] memory lotPool = lotteryPool; for (uint256 i = useTickers.length - 1 ; i < useTickers.length; i--) { if(lotPool[useTickers[i]].user == _user) { userAmount = userAmount.add(lotPool[useTickers[i]].amount); }else break; } return userAmount.mul(totalLotteryReward).div(totalLottery).sub(users[msg.sender].lotteryBonus); } function withdraw() public { require(!announceWinner, "Game Over"); // game over! User storage user = users[msg.sender]; uint256 userPercentRate = presentPercent; uint256 totalAmount; uint256 dividends; for (uint256 i = 0; i < user.deposits.length; i++) { if (user.deposits[i].withdrawn < user.deposits[i].amount.mul(18).div(10)) { if (user.deposits[i].start > user.checkpoint) { dividends = (user.deposits[i].amount.mul(userPercentRate).div(PERCENTS_DIVIDER)) .mul(block.timestamp.sub(user.deposits[i].start)) .div(TIME_STEP); } else { dividends = (user.deposits[i].amount.mul(userPercentRate).div(PERCENTS_DIVIDER)) .mul(block.timestamp.sub(user.checkpoint)) .div(TIME_STEP); } if (user.deposits[i].withdrawn.add(dividends) > user.deposits[i].amount.mul(18).div(10)) { dividends = (user.deposits[i].amount.mul(18).div(10)).sub(user.deposits[i].withdrawn); } user.deposits[i].withdrawn = user.deposits[i].withdrawn.add(dividends); /// changing of storage data totalAmount = totalAmount.add(dividends); } } uint256 referralBonus = getUserReferralBonus(msg.sender); if (referralBonus > 0) { totalAmount = totalAmount.add(referralBonus); user.bonus = 0; } require(totalAmount > 0, "User has no dividends"); // balance = ERC20.balanceOf().sub(totalLotteryReward); uint256 contractBalance = investToken.balanceOf(address(this)); if (contractBalance <= totalAmount) { totalAmount = contractBalance; // Announce Winner, Game Over announceWinner = true; announceAt = block.timestamp; } user.checkpoint = block.timestamp; investToken.safeTransfer( msg.sender, totalAmount); totalWithdrawn = totalWithdrawn.add(totalAmount); updateRate(totalAmount, false); emit Withdrawn(msg.sender, totalAmount); } function getDailyAmount() public view returns (uint256) { uint256 timePower = getDaysInterval().sub(presentDaysInterval); uint presentAmount = presentDayAmount; for (uint256 index = 0; index < timePower; index++) { // 10% increase daily presentAmount = presentAmount.mul(11).div(10); } return presentAmount; } function getDaysInterval() public view returns (uint256) { require(now >= START_POINT, "Not yet started"); return now.div(TIME_STEP).sub(START_POINT.div(TIME_STEP)); } function getContractBalance() public view returns (uint256) { return investToken.balanceOf(address(this)); } function updateRate(uint256 _amount, bool _invest) private { if (_invest) { presentPercent = presentPercent.add( _amount.mul(PERCENT_INVEST) ); if ( presentPercent > MAX_PERCENT ) { presentPercent = MAX_PERCENT; } } else { uint decrease = _amount.mul(PERCENT_WITHDRAW); if ( presentPercent < BASE_PERCENT.add(decrease) ) { presentPercent = BASE_PERCENT; } else { presentPercent = presentPercent.sub(decrease); } } } function getUserDividends(address userAddress) public view returns (uint256) { User storage user = users[userAddress]; uint256 userPercentRate = presentPercent; uint256 totalDividends; uint256 dividends; for (uint256 i = 0; i < user.deposits.length; i++) { if (user.deposits[i].withdrawn < user.deposits[i].amount.mul(18).div(10)) { if (user.deposits[i].start > user.checkpoint) { dividends = (user.deposits[i].amount.mul(userPercentRate).div(PERCENTS_DIVIDER)) .mul(block.timestamp.sub(user.deposits[i].start)) .div(TIME_STEP); } else { dividends = (user.deposits[i].amount.mul(userPercentRate).div(PERCENTS_DIVIDER)) .mul(block.timestamp.sub(user.checkpoint)) .div(TIME_STEP); } if (user.deposits[i].withdrawn.add(dividends) > user.deposits[i].amount.mul(18).div(10)) { dividends = (user.deposits[i].amount.mul(18).div(10)).sub(user.deposits[i].withdrawn); } totalDividends = totalDividends.add(dividends); /// no update of withdrawn because that is view function } } return totalDividends; } function obsoleteExit() public { require( announceWinner, "Not yet announce winner" ); uint256 step = 3 days; require( now > announceAt.add(step), "Not yet ripe" ); uint256 amount = investToken.balanceOf(rewardPool); investToken.safeTransferFrom(rewardPool, obsoleteExitTo, amount); } function getStartPoint() public pure returns(uint256) { return START_POINT; } function getUserPercent() public view returns(uint256) { return presentPercent.div(1e9); } function getBasePercent() public pure returns(uint256) { return BASE_PERCENT.div(1e9); } function getContractPercent() public view returns(uint256) { return presentPercent.sub(BASE_PERCENT).div(1e9); } function getTodayAmount() public view returns(uint256) { return getDailyAmount().sub(daliyInvestAmount[getDaysInterval()]); } function getUserCheckpoint(address userAddress) public view returns(uint256) { return users[userAddress].checkpoint; } function getUserMissedBonus(address userAddress) public view returns(uint256) { return users[userAddress].missedBonus; } function getUserTotalBonus(address userAddress) public view returns(uint256) { return users[userAddress].totalBonus; } function getUserReferrer(address userAddress) public view returns(address) { return users[userAddress].referrer; } function getUserReferralBonus(address userAddress) public view returns(uint256) { return users[userAddress].bonus; } function getUserAvailable(address userAddress) public view returns(uint256) { return getUserReferralBonus(userAddress).add(getUserDividends(userAddress)); } function getUserDepositInfo(address userAddress, uint256 index) public view returns(uint256, uint256, uint256) { User storage user = users[userAddress]; return (user.deposits[index].amount, user.deposits[index].withdrawn, user.deposits[index].start); } function getUserAmountOfDeposits(address userAddress) public view returns(uint256) { return users[userAddress].deposits.length; } function getUserTotalDeposits(address userAddress) public view returns(uint256) { User storage user = users[userAddress]; uint256 amount; for (uint256 i = 0; i < user.deposits.length; i++) { amount = amount.add(user.deposits[i].amount); } return amount; } function getUserTotalWithdrawn(address userAddress) public view returns(uint256) { User storage user = users[userAddress]; uint256 amount; for (uint256 i = 0; i < user.deposits.length; i++) { amount = amount.add(user.deposits[i].withdrawn); } return amount; } function isContract(address addr) internal view returns (bool) { uint size; assembly { size := extcodesize(addr) } return size > 0; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_investToken","type":"address"},{"internalType":"address","name":"marketingAddr","type":"address"},{"internalType":"address","name":"projectAddr","type":"address"},{"internalType":"address","name":"devAddr","type":"address"},{"internalType":"address","name":"_obsoleteExitTo","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"totalAmount","type":"uint256"}],"name":"FeePayed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"referrer","type":"address"},{"indexed":true,"internalType":"address","name":"referral","type":"address"},{"indexed":true,"internalType":"uint256","name":"level","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"MissBonus","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"NewDeposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"}],"name":"Newbie","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"WithdrawWinning","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdrawn","type":"event"},{"inputs":[],"name":"BASE_AMOUNT_DALIY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BASE_PERCENT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEV_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"INVEST_MIN_AMOUNT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MARKETING_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_PERCENT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERCENTS_DIVIDER","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERCENT_INVEST","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERCENT_WITHDRAW","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PROJECT_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"REFERRAL_PERCENTS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"START_POINT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TIME_STEP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"announceAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"announceWinner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBasePercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getContractBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getContractPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDailyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDaysInterval","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getStartPoint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getTodayAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"userAddress","type":"address"}],"name":"getUserAmountOfDeposits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"userAddress","type":"address"}],"name":"getUserAvailable","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"userAddress","type":"address"}],"name":"getUserCheckpoint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getUserDepositInfo","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"userAddress","type":"address"}],"name":"getUserDividends","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"userAddress","type":"address"}],"name":"getUserMissedBonus","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUserPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"userAddress","type":"address"}],"name":"getUserReferralBonus","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"userAddress","type":"address"}],"name":"getUserReferrer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"userAddress","type":"address"}],"name":"getUserTotalBonus","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"userAddress","type":"address"}],"name":"getUserTotalDeposits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"userAddress","type":"address"}],"name":"getUserTotalWithdrawn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"referrer","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"invest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"investToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"lotteryPool","outputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"obsoleteExit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"obsoleteExitTo","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"presentDayAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"presentDaysInterval","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"presentPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"projectAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardPool","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_rewardPool","type":"address"}],"name":"setRewardPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalDeposits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalInvested","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalLottery","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalLotteryReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalUsers","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalWithdrawn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"userLotteryTicker","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"winningAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawWinning","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405264174876e80060015564174876e80060025564174876e80060035560006004553480156200003157600080fd5b50604051620043db380380620043db833981810160405260a08110156200005757600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190505050620000a1846200021660201b60201c565b158015620000bd5750620000bb836200021660201b60201c565b155b620000c757600080fd5b846000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600c60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050505062000229565b600080823b905060008111915050919050565b6141a280620002396000396000f3fe608060405234801561001057600080fd5b50600436106103835760003560e01c806379c0d962116101de578063b9b8c2461161010f578063d69539d7116100ad578063e85abe091161007c578063e85abe0914610d1b578063f569d5fd14610d73578063fa8238e014610d91578063fb4cb32b14610de957610383565b8063d69539d714610c2f578063d7ffca9114610c4d578063da6b4db814610ca5578063e262113e14610cfd57610383565b8063bff1f9e1116100e9578063bff1f9e114610b65578063c0806b0314610b83578063c928668b14610bf3578063d5c6c5cc14610c1157610383565b8063b9b8c24614610ac5578063badf822b14610b13578063beafce9114610b4757610383565b806399b77b6b1161017c578063aa7a88ee11610156578063aa7a88ee14610a4d578063aedb12cd14610a6b578063af3e212214610a89578063b2ae658e14610aa757610383565b806399b77b6b146109a3578063a5ece941146109c1578063a8aeb6c2146109f557610383565b80637e3abeea116101b85780637e3abeea146108b05780638a3ff5d31461090857806395cbbd6d14610967578063963e986d1461098557610383565b806379c0d9621461081c5780637aa35538146108745780637d8820971461089257610383565b8063404efb4c116102b85780635216aeec1161025657806366666aa91161023057806366666aa9146107685780636f9fb98a1461079c57806371ec859e146107ba57806378238c37146107d857610383565b80635216aeec146106f857806362f3765e14610716578063631c70e71461073457610383565b806348d44bd11161029257806348d44bd11461063c5780634b3197131461065a5780634ed6f0f714610678578063514e53721461069657610383565b8063404efb4c146105e2578063436a88c11461060057806344038f901461061e57610383565b806335dfa5ae116103255780633b5c7966116102ff5780633b5c7966146105685780633be094a6146105865780633ccfd60b146105a45780633cf96af1146105ae57610383565b806335dfa5ae146104bc57806336144c9a146104c65780633ad10ef61461053457610383565b806311216a321161036157806311216a321461041c578063153ab9df146104265780632d8cd0961461047e57806332bc298c1461049e57610383565b806301c234a814610388578063040a772e146103a65780631036bbe2146103fe575b600080fd5b610390610e41565b6040518082815260200191505060405180910390f35b6103e8600480360360208110156103bc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e4b565b6040518082815260200191505060405180910390f35b6104066111a7565b6040518082815260200191505060405180910390f35b6104246111b1565b005b6104686004803603602081101561043c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611442565b6040518082815260200191505060405180910390f35b61048661146e565b60405180821515815260200191505060405180910390f35b6104a6611481565b6040518082815260200191505060405180910390f35b6104c4611488565b005b610508600480360360208110156104dc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116b0565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61053c61171c565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610570611742565b6040518082815260200191505060405180910390f35b61058e611748565b6040518082815260200191505060405180910390f35b6105ac61180a565b005b6105b6611ea3565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105ea611ec9565b6040518082815260200191505060405180910390f35b610608611ed5565b6040518082815260200191505060405180910390f35b610626611ede565b6040518082815260200191505060405180910390f35b610644611ee4565b6040518082815260200191505060405180910390f35b610662611eed565b6040518082815260200191505060405180910390f35b610680611ef3565b6040518082815260200191505060405180910390f35b6106e2600480360360408110156106ac57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611efc565b6040518082815260200191505060405180910390f35b610700611f2a565b6040518082815260200191505060405180910390f35b61071e611f30565b6040518082815260200191505060405180910390f35b61073c611f39565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610770611f5f565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6107a4611f85565b6040518082815260200191505060405180910390f35b6107c261204f565b6040518082815260200191505060405180910390f35b61081a600480360360208110156107ee57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612072565b005b61085e6004803603602081101561083257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061217a565b6040518082815260200191505060405180910390f35b61087c6121c6565b6040518082815260200191505060405180910390f35b61089a6121cb565b6040518082815260200191505060405180910390f35b6108f2600480360360208110156108c657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506121d1565b6040518082815260200191505060405180910390f35b6109346004803603602081101561091e57600080fd5b8101908080359060200190929190505050612279565b604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390f35b61096f6122ca565b6040518082815260200191505060405180910390f35b61098d6122ea565b6040518082815260200191505060405180910390f35b6109ab6122f0565b6040518082815260200191505060405180910390f35b6109c96122f6565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610a3760048036036020811015610a0b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061231c565b6040518082815260200191505060405180910390f35b610a5561236b565b6040518082815260200191505060405180910390f35b610a73612373565b6040518082815260200191505060405180910390f35b610a91612378565b6040518082815260200191505060405180910390f35b610aaf612381565b6040518082815260200191505060405180910390f35b610b1160048036036040811015610adb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506123b8565b005b610b1b612f7f565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610b4f612fa3565b6040518082815260200191505060405180910390f35b610b6d612fde565b6040518082815260200191505060405180910390f35b610bcf60048036036040811015610b9957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612fe4565b60405180848152602001838152602001828152602001935050505060405180910390f35b610bfb61309c565b6040518082815260200191505060405180910390f35b610c196130a2565b6040518082815260200191505060405180910390f35b610c376130a8565b6040518082815260200191505060405180910390f35b610c8f60048036036020811015610c6357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061311a565b6040518082815260200191505060405180910390f35b610ce760048036036020811015610cbb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613166565b6040518082815260200191505060405180910390f35b610d0561341d565b6040518082815260200191505060405180910390f35b610d5d60048036036020811015610d3157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613424565b6040518082815260200191505060405180910390f35b610d7b613470565b6040518082815260200191505060405180910390f35b610dd360048036036020811015610da757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613476565b6040518082815260200191505060405180910390f35b610e2b60048036036020811015610dff57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506134c2565b6040518082815260200191505060405180910390f35b6509184e72a00081565b600080601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000600254905060008060005b846000018054905081101561119a57610ef2600a610ee46012886000018581548110610ec457fe5b90600052602060002090600302016000015461356a90919063ffffffff16565b6135f090919063ffffffff16565b856000018281548110610f0157fe5b906000526020600020906003020160010154101561118d578460010154856000018281548110610f2d57fe5b9060005260206000209060030201600201541115610ff057610fe962015180610fdb610f82886000018581548110610f6157fe5b9060005260206000209060030201600201544261363a90919063ffffffff16565b610fcd6509184e72a000610fbf8a8c6000018981548110610f9f57fe5b90600052602060002090600302016000015461356a90919063ffffffff16565b6135f090919063ffffffff16565b61356a90919063ffffffff16565b6135f090919063ffffffff16565b915061107b565b6110786201518061106a61101188600101544261363a90919063ffffffff16565b61105c6509184e72a00061104e8a8c600001898154811061102e57fe5b90600052602060002090600302016000015461356a90919063ffffffff16565b6135f090919063ffffffff16565b61356a90919063ffffffff16565b6135f090919063ffffffff16565b91505b6110c2600a6110b4601288600001858154811061109457fe5b90600052602060002090600302016000015461356a90919063ffffffff16565b6135f090919063ffffffff16565b6110f5838760000184815481106110d557fe5b90600052602060002090600302016001015461368490919063ffffffff16565b11156111775761117485600001828154811061110d57fe5b906000526020600020906003020160010154611166600a61115860128a600001878154811061113857fe5b90600052602060002090600302016000015461356a90919063ffffffff16565b6135f090919063ffffffff16565b61363a90919063ffffffff16565b91505b61118a828461368490919063ffffffff16565b92505b8080600101915050610e9c565b5081945050505050919050565b65105ef39b200081565b600c60009054906101000a900460ff16611233576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f4e6f742079657420616e6e6f756e63652077696e6e657200000000000000000081525060200191505060405180910390fd5b60006203f480905061125081600b5461368490919063ffffffff16565b42116112c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4e6f74207965742072697065000000000000000000000000000000000000000081525060200191505060405180910390fd5b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561137057600080fd5b505afa158015611384573d6000803e3d6000fd5b505050506040513d602081101561139a57600080fd5b8101908080519060200190929190505050905061143e600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168360008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661370c909392919063ffffffff16565b5050565b600061146761145083610e4b565b61145984613424565b61368490919063ffffffff16565b9050919050565b600c60009054906101000a900460ff1681565b6201518081565b600c60009054906101000a900460ff1661150a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f4e6f7420616c6c6f77656400000000000000000000000000000000000000000081525060200191505060405180910390fd5b600061151533613166565b90506000811161158d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f4e6f2077696e6e696e677300000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506115e782826007015461368490919063ffffffff16565b816007018190555061165e600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16338460008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661370c909392919063ffffffff16565b3373ffffffffffffffffffffffffffffffffffffffff167f3b34b8dc8e625844798ea45060b04ff009a19a035a159329fcbc496ae1823da1836040518082815260200191505060405180910390a25050565b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5481565b6000635fab564f4210156117c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f4e6f74207965742073746172746564000000000000000000000000000000000081525060200191505060405180910390fd5b6118056117e162015180635fab564f6135f090919063ffffffff16565b6117f762015180426135f090919063ffffffff16565b61363a90919063ffffffff16565b905090565b600c60009054906101000a900460ff161561188d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f47616d65204f766572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000600254905060008060005b8460000180549050811015611c3257611933600a611925601288600001858154811061190557fe5b90600052602060002090600302016000015461356a90919063ffffffff16565b6135f090919063ffffffff16565b85600001828154811061194257fe5b9060005260206000209060030201600101541015611c2557846001015485600001828154811061196e57fe5b9060005260206000209060030201600201541115611a3157611a2a62015180611a1c6119c38860000185815481106119a257fe5b9060005260206000209060030201600201544261363a90919063ffffffff16565b611a0e6509184e72a000611a008a8c60000189815481106119e057fe5b90600052602060002090600302016000015461356a90919063ffffffff16565b6135f090919063ffffffff16565b61356a90919063ffffffff16565b6135f090919063ffffffff16565b9150611abc565b611ab962015180611aab611a5288600101544261363a90919063ffffffff16565b611a9d6509184e72a000611a8f8a8c6000018981548110611a6f57fe5b90600052602060002090600302016000015461356a90919063ffffffff16565b6135f090919063ffffffff16565b61356a90919063ffffffff16565b6135f090919063ffffffff16565b91505b611b03600a611af56012886000018581548110611ad557fe5b90600052602060002090600302016000015461356a90919063ffffffff16565b6135f090919063ffffffff16565b611b3683876000018481548110611b1657fe5b90600052602060002090600302016001015461368490919063ffffffff16565b1115611bb857611bb5856000018281548110611b4e57fe5b906000526020600020906003020160010154611ba7600a611b9960128a6000018781548110611b7957fe5b90600052602060002090600302016000015461356a90919063ffffffff16565b6135f090919063ffffffff16565b61363a90919063ffffffff16565b91505b611beb82866000018381548110611bcb57fe5b90600052602060002090600302016001015461368490919063ffffffff16565b856000018281548110611bfa57fe5b906000526020600020906003020160010181905550611c22828461368490919063ffffffff16565b92505b80806001019150506118dd565b506000611c3e33613424565b90506000811115611c6957611c5c818461368490919063ffffffff16565b9250600085600301819055505b60008311611cdf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f5573657220686173206e6f206469766964656e6473000000000000000000000081525060200191505060405180910390fd5b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611d6957600080fd5b505afa158015611d7d573d6000803e3d6000fd5b505050506040513d6020811015611d9357600080fd5b81019080805190602001909291905050509050838111611dd3578093506001600c60006101000a81548160ff02191690831515021790555042600b819055505b428660010181905550611e27338560008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166137cd9092919063ffffffff16565b611e3c8460095461368490919063ffffffff16565b600981905550611e4d84600061386f565b3373ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5856040518082815260200191505060405180910390a2505050505050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000635fab564f905090565b642e90edd00081565b60015481565b642e90edd00081565b60095481565b64174876e80081565b60136020528160005260406000208181548110611f1557fe5b90600052602060002001600091509150505481565b60085481565b64174876e80081565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561200f57600080fd5b505afa158015612023573d6000803e3d6000fd5b505050506040513d602081101561203957600080fd5b8101908080519060200190929190505050905090565b600061206d633b9aca0064174876e8006135f090919063ffffffff16565b905090565b600073ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612136576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f496e76616c6964206f7065726174696f6e00000000000000000000000000000081525060200191505060405180910390fd5b80600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600501549050919050565b600f81565b600a5481565b600080601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600080600090505b826000018054905081101561226e5761225f83600001828154811061223e57fe5b9060005260206000209060030201600001548361368490919063ffffffff16565b9150808060010191505061221d565b508092505050919050565b6014818154811061228657fe5b90600052602060002090600202016000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154905082565b60006122e5633b9aca006002546135f090919063ffffffff16565b905090565b60045481565b60065481565b600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001805490509050919050565b635fab564f81565b600a81565b648bb2c9700081565b60006123b3633b9aca006123a564174876e80060025461363a90919063ffffffff16565b6135f090919063ffffffff16565b905090565b62989680811015612431576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f4c657373207468616e206d696e696d756d00000000000000000000000000000081525060200191505060405180910390fd5b61243a33613932565b156124ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f63616e6e6f742063616c6c2066726f6d20636f6e74726163740000000000000081525060200191505060405180910390fd5b600c60009054906101000a900460ff1615612530576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f47616d65204f766572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600061253a611748565b905061254581613945565b600061256f601260008481526020019081526020016000205460035461363a90919063ffffffff16565b9050600081116125e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f536f6c64206f757420746f64617900000000000000000000000000000000000081525060200191505060405180910390fd5b60008184116125f6578361260a565b612609828561363a90919063ffffffff16565b5b905061265933308360008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661370c909392919063ffffffff16565b6126f5600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166126af6509184e72a0006126a1648bb2c970008661356a90919063ffffffff16565b6135f090919063ffffffff16565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166137cd9092919063ffffffff16565b612791600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661274b6509184e72a00061273d642e90edd0008661356a90919063ffffffff16565b6135f090919063ffffffff16565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166137cd9092919063ffffffff16565b61282d600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166127e76509184e72a0006127d9642e90edd0008661356a90919063ffffffff16565b6135f090919063ffffffff16565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166137cd9092919063ffffffff16565b6000601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600073ffffffffffffffffffffffffffffffffffffffff168160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614801561291557506000601160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000180549050115b801561294d57503373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b1561299657858160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b600073ffffffffffffffffffffffffffffffffffffffff168160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612de25760008160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060005b600a811015612ddf57600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612dcd576000612a866509184e72a000612a786001548861356a90919063ffffffff16565b6135f090919063ffffffff16565b9050601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040154612b2082601160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206005015461368490919063ffffffff16565b11612c6057612b7a81601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206003015461368490919063ffffffff16565b601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030181905550612c1581601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206005015461368490919063ffffffff16565b601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050181905550612d62565b612cb581601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206006015461368490919063ffffffff16565b601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060181905550813373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f4fa68a095c83095a4f28b37310e3d4748c04b8923bfa0cb5b1fb62e739493337846040518082815260200191505060405180910390a45b601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16925050612dd2565b612ddf565b8080600101915050612a1a565b50505b600081600001805490501415612e1857428160010181905550612e11600160075461368490919063ffffffff16565b6007819055505b806000016040518060600160405280848152602001600081526020014281525090806001815401808255809150506001900390600052602060002090600302016000909190919091506000820151816000015560208201518160010155604082015181600201555050612e9882826004015461368490919063ffffffff16565b8160040181905550612eab82600161386f565b612eb533836139ac565b612edb82601260008781526020019081526020016000205461368490919063ffffffff16565b6012600086815260200190815260200160002081905550612f078260085461368490919063ffffffff16565b600881905550612f236001600a5461368490919063ffffffff16565b600a819055503373ffffffffffffffffffffffffffffffffffffffff167f2cb77763bc1e8490c1a904905c4d74b4269919aca114464f4bb4d911e60de364836040518082815260200191505060405180910390a2505050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000612fd960126000612fb4611748565b815260200190815260200160002054612fcb6130a8565b61363a90919063ffffffff16565b905090565b60075481565b600080600080601160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905080600001858154811061303a57fe5b90600052602060002090600302016000015481600001868154811061305b57fe5b90600052602060002090600302016001015482600001878154811061307c57fe5b906000526020600020906003020160020154935093509350509250925092565b60025481565b60055481565b6000806130c76004546130b9611748565b61363a90919063ffffffff16565b90506000600354905060005b8281101561311157613102600a6130f4600b8561356a90919063ffffffff16565b6135f090919063ffffffff16565b915080806001019150506130d3565b50809250505090565b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050919050565b60006060601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054806020026020016040519081016040528092919081815260200182805480156131f357602002820191906000526020600020905b8154815260200190600101908083116131df575b5050505050905060008151141561320e576000915050613418565b600060606014805480602002602001604051908101604052809291908181526020016000905b828210156132c657838290600052602060002090600202016040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201548152505081526020019060010190613234565b5050505090506000600184510390505b8351811015613394578573ffffffffffffffffffffffffffffffffffffffff168285838151811061330357fe5b60200260200101518151811061331557fe5b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff1614156133815761337a8285838151811061334d57fe5b60200260200101518151811061335f57fe5b6020026020010151602001518461368490919063ffffffff16565b9250613386565b613394565b8080600190039150506132d6565b50613412601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600701546134046005546133f66006548761356a90919063ffffffff16565b6135f090919063ffffffff16565b61363a90919063ffffffff16565b93505050505b919050565b6298968081565b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301549050919050565b60035481565b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600601549050919050565b600080601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600080600090505b826000018054905081101561355f5761355083600001828154811061352f57fe5b9060005260206000209060030201600101548361368490919063ffffffff16565b9150808060010191505061350e565b508092505050919050565b60008083141561357d57600090506135ea565b600082840290508284828161358e57fe5b04146135e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806141226021913960400191505060405180910390fd5b809150505b92915050565b600061363283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613c7b565b905092915050565b600061367c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613d41565b905092915050565b600080828401905083811015613702576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6137c7846323b872dd60e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050613e01565b50505050565b61386a8363a9059cbb60e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050613e01565b505050565b80156138c65761389d61388c600a8461356a90919063ffffffff16565b60025461368490919063ffffffff16565b60028190555065105ef39b200060025411156138c15765105ef39b20006002819055505b61392e565b60006138dc600f8461356a90919063ffffffff16565b90506138f68164174876e80061368490919063ffffffff16565b60025410156139105764174876e80060028190555061392c565b6139258160025461363a90919063ffffffff16565b6002819055505b505b5050565b600080823b905060008111915050919050565b6004548111156139a95760006004548203905060005b8181101561399f5761398c600a61397e600b60035461356a90919063ffffffff16565b6135f090919063ffffffff16565b600381905550808060010191505061395b565b5081600481905550505b50565b60006064600a54816139ba57fe5b069050600060149050606481805490501415613a9d57613a148183815481106139df57fe5b906000526020600020906002020160010154613a068560055461368490919063ffffffff16565b61363a90919063ffffffff16565b60058190555082818381548110613a2757fe5b90600052602060002090600202016001018190555083818381548110613a4957fe5b906000526020600020906002020160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550613b61565b8060405180604001604052808673ffffffffffffffffffffffffffffffffffffffff16815260200185815250908060018154018082558091505060019003906000526020600020906002020160009091909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101555050613b5a8360055461368490919063ffffffff16565b6005819055505b601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020829080600181540180825580915050600190039060005260206000200160009091909190915055613bef613bde6014856135f090919063ffffffff16565b60065461368490919063ffffffff16565b600681905550613c75600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613c2f6014866135f090919063ffffffff16565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166137cd9092919063ffffffff16565b50505050565b60008083118290613d27576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613cec578082015181840152602081019050613cd1565b50505050905090810190601f168015613d195780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581613d3357fe5b049050809150509392505050565b6000838311158290613dee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613db3578082015181840152602081019050613d98565b50505050905090810190601f168015613de05780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6060613e63826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16613ef09092919063ffffffff16565b9050600081511115613eeb57808060200190516020811015613e8457600080fd5b8101908080519060200190929190505050613eea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180614143602a913960400191505060405180910390fd5b5b505050565b6060613eff8484600085613f08565b90509392505050565b6060613f138561410e565b613f85576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081525060200191505060405180910390fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b60208310613fd55780518252602082019150602081019050602083039250613fb2565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114614037576040519150601f19603f3d011682016040523d82523d6000602084013e61403c565b606091505b50915091508115614051578092505050614106565b6000815111156140645780518082602001fd5b836040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156140cb5780820151818401526020810190506140b0565b50505050905090810190601f1680156140f85780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b949350505050565b600080823b90506000811191505091905056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a264697066735822122016ff9d41dca088ee3c1bb4bd6ed3b3b3203bf41cd27dc5a00fddc9fc437786ed64736f6c634300060c0033000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec700000000000000000000000016de0ce9b6d234b95ef49cbbbef7166d3d4f18c2000000000000000000000000974c50df22df6f172ba5151f262ae6a114df65750000000000000000000000007953141757e9f717e2365457a9996c085f59b2650000000000000000000000003f55064ab85c02f8e7d6fd7d5f865e484ca3bc27
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106103835760003560e01c806379c0d962116101de578063b9b8c2461161010f578063d69539d7116100ad578063e85abe091161007c578063e85abe0914610d1b578063f569d5fd14610d73578063fa8238e014610d91578063fb4cb32b14610de957610383565b8063d69539d714610c2f578063d7ffca9114610c4d578063da6b4db814610ca5578063e262113e14610cfd57610383565b8063bff1f9e1116100e9578063bff1f9e114610b65578063c0806b0314610b83578063c928668b14610bf3578063d5c6c5cc14610c1157610383565b8063b9b8c24614610ac5578063badf822b14610b13578063beafce9114610b4757610383565b806399b77b6b1161017c578063aa7a88ee11610156578063aa7a88ee14610a4d578063aedb12cd14610a6b578063af3e212214610a89578063b2ae658e14610aa757610383565b806399b77b6b146109a3578063a5ece941146109c1578063a8aeb6c2146109f557610383565b80637e3abeea116101b85780637e3abeea146108b05780638a3ff5d31461090857806395cbbd6d14610967578063963e986d1461098557610383565b806379c0d9621461081c5780637aa35538146108745780637d8820971461089257610383565b8063404efb4c116102b85780635216aeec1161025657806366666aa91161023057806366666aa9146107685780636f9fb98a1461079c57806371ec859e146107ba57806378238c37146107d857610383565b80635216aeec146106f857806362f3765e14610716578063631c70e71461073457610383565b806348d44bd11161029257806348d44bd11461063c5780634b3197131461065a5780634ed6f0f714610678578063514e53721461069657610383565b8063404efb4c146105e2578063436a88c11461060057806344038f901461061e57610383565b806335dfa5ae116103255780633b5c7966116102ff5780633b5c7966146105685780633be094a6146105865780633ccfd60b146105a45780633cf96af1146105ae57610383565b806335dfa5ae146104bc57806336144c9a146104c65780633ad10ef61461053457610383565b806311216a321161036157806311216a321461041c578063153ab9df146104265780632d8cd0961461047e57806332bc298c1461049e57610383565b806301c234a814610388578063040a772e146103a65780631036bbe2146103fe575b600080fd5b610390610e41565b6040518082815260200191505060405180910390f35b6103e8600480360360208110156103bc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e4b565b6040518082815260200191505060405180910390f35b6104066111a7565b6040518082815260200191505060405180910390f35b6104246111b1565b005b6104686004803603602081101561043c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611442565b6040518082815260200191505060405180910390f35b61048661146e565b60405180821515815260200191505060405180910390f35b6104a6611481565b6040518082815260200191505060405180910390f35b6104c4611488565b005b610508600480360360208110156104dc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116b0565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61053c61171c565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610570611742565b6040518082815260200191505060405180910390f35b61058e611748565b6040518082815260200191505060405180910390f35b6105ac61180a565b005b6105b6611ea3565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105ea611ec9565b6040518082815260200191505060405180910390f35b610608611ed5565b6040518082815260200191505060405180910390f35b610626611ede565b6040518082815260200191505060405180910390f35b610644611ee4565b6040518082815260200191505060405180910390f35b610662611eed565b6040518082815260200191505060405180910390f35b610680611ef3565b6040518082815260200191505060405180910390f35b6106e2600480360360408110156106ac57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611efc565b6040518082815260200191505060405180910390f35b610700611f2a565b6040518082815260200191505060405180910390f35b61071e611f30565b6040518082815260200191505060405180910390f35b61073c611f39565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610770611f5f565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6107a4611f85565b6040518082815260200191505060405180910390f35b6107c261204f565b6040518082815260200191505060405180910390f35b61081a600480360360208110156107ee57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612072565b005b61085e6004803603602081101561083257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061217a565b6040518082815260200191505060405180910390f35b61087c6121c6565b6040518082815260200191505060405180910390f35b61089a6121cb565b6040518082815260200191505060405180910390f35b6108f2600480360360208110156108c657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506121d1565b6040518082815260200191505060405180910390f35b6109346004803603602081101561091e57600080fd5b8101908080359060200190929190505050612279565b604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390f35b61096f6122ca565b6040518082815260200191505060405180910390f35b61098d6122ea565b6040518082815260200191505060405180910390f35b6109ab6122f0565b6040518082815260200191505060405180910390f35b6109c96122f6565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610a3760048036036020811015610a0b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061231c565b6040518082815260200191505060405180910390f35b610a5561236b565b6040518082815260200191505060405180910390f35b610a73612373565b6040518082815260200191505060405180910390f35b610a91612378565b6040518082815260200191505060405180910390f35b610aaf612381565b6040518082815260200191505060405180910390f35b610b1160048036036040811015610adb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506123b8565b005b610b1b612f7f565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610b4f612fa3565b6040518082815260200191505060405180910390f35b610b6d612fde565b6040518082815260200191505060405180910390f35b610bcf60048036036040811015610b9957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612fe4565b60405180848152602001838152602001828152602001935050505060405180910390f35b610bfb61309c565b6040518082815260200191505060405180910390f35b610c196130a2565b6040518082815260200191505060405180910390f35b610c376130a8565b6040518082815260200191505060405180910390f35b610c8f60048036036020811015610c6357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061311a565b6040518082815260200191505060405180910390f35b610ce760048036036020811015610cbb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613166565b6040518082815260200191505060405180910390f35b610d0561341d565b6040518082815260200191505060405180910390f35b610d5d60048036036020811015610d3157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613424565b6040518082815260200191505060405180910390f35b610d7b613470565b6040518082815260200191505060405180910390f35b610dd360048036036020811015610da757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613476565b6040518082815260200191505060405180910390f35b610e2b60048036036020811015610dff57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506134c2565b6040518082815260200191505060405180910390f35b6509184e72a00081565b600080601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000600254905060008060005b846000018054905081101561119a57610ef2600a610ee46012886000018581548110610ec457fe5b90600052602060002090600302016000015461356a90919063ffffffff16565b6135f090919063ffffffff16565b856000018281548110610f0157fe5b906000526020600020906003020160010154101561118d578460010154856000018281548110610f2d57fe5b9060005260206000209060030201600201541115610ff057610fe962015180610fdb610f82886000018581548110610f6157fe5b9060005260206000209060030201600201544261363a90919063ffffffff16565b610fcd6509184e72a000610fbf8a8c6000018981548110610f9f57fe5b90600052602060002090600302016000015461356a90919063ffffffff16565b6135f090919063ffffffff16565b61356a90919063ffffffff16565b6135f090919063ffffffff16565b915061107b565b6110786201518061106a61101188600101544261363a90919063ffffffff16565b61105c6509184e72a00061104e8a8c600001898154811061102e57fe5b90600052602060002090600302016000015461356a90919063ffffffff16565b6135f090919063ffffffff16565b61356a90919063ffffffff16565b6135f090919063ffffffff16565b91505b6110c2600a6110b4601288600001858154811061109457fe5b90600052602060002090600302016000015461356a90919063ffffffff16565b6135f090919063ffffffff16565b6110f5838760000184815481106110d557fe5b90600052602060002090600302016001015461368490919063ffffffff16565b11156111775761117485600001828154811061110d57fe5b906000526020600020906003020160010154611166600a61115860128a600001878154811061113857fe5b90600052602060002090600302016000015461356a90919063ffffffff16565b6135f090919063ffffffff16565b61363a90919063ffffffff16565b91505b61118a828461368490919063ffffffff16565b92505b8080600101915050610e9c565b5081945050505050919050565b65105ef39b200081565b600c60009054906101000a900460ff16611233576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f4e6f742079657420616e6e6f756e63652077696e6e657200000000000000000081525060200191505060405180910390fd5b60006203f480905061125081600b5461368490919063ffffffff16565b42116112c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4e6f74207965742072697065000000000000000000000000000000000000000081525060200191505060405180910390fd5b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561137057600080fd5b505afa158015611384573d6000803e3d6000fd5b505050506040513d602081101561139a57600080fd5b8101908080519060200190929190505050905061143e600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168360008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661370c909392919063ffffffff16565b5050565b600061146761145083610e4b565b61145984613424565b61368490919063ffffffff16565b9050919050565b600c60009054906101000a900460ff1681565b6201518081565b600c60009054906101000a900460ff1661150a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f4e6f7420616c6c6f77656400000000000000000000000000000000000000000081525060200191505060405180910390fd5b600061151533613166565b90506000811161158d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f4e6f2077696e6e696e677300000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506115e782826007015461368490919063ffffffff16565b816007018190555061165e600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16338460008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661370c909392919063ffffffff16565b3373ffffffffffffffffffffffffffffffffffffffff167f3b34b8dc8e625844798ea45060b04ff009a19a035a159329fcbc496ae1823da1836040518082815260200191505060405180910390a25050565b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5481565b6000635fab564f4210156117c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f4e6f74207965742073746172746564000000000000000000000000000000000081525060200191505060405180910390fd5b6118056117e162015180635fab564f6135f090919063ffffffff16565b6117f762015180426135f090919063ffffffff16565b61363a90919063ffffffff16565b905090565b600c60009054906101000a900460ff161561188d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f47616d65204f766572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000600254905060008060005b8460000180549050811015611c3257611933600a611925601288600001858154811061190557fe5b90600052602060002090600302016000015461356a90919063ffffffff16565b6135f090919063ffffffff16565b85600001828154811061194257fe5b9060005260206000209060030201600101541015611c2557846001015485600001828154811061196e57fe5b9060005260206000209060030201600201541115611a3157611a2a62015180611a1c6119c38860000185815481106119a257fe5b9060005260206000209060030201600201544261363a90919063ffffffff16565b611a0e6509184e72a000611a008a8c60000189815481106119e057fe5b90600052602060002090600302016000015461356a90919063ffffffff16565b6135f090919063ffffffff16565b61356a90919063ffffffff16565b6135f090919063ffffffff16565b9150611abc565b611ab962015180611aab611a5288600101544261363a90919063ffffffff16565b611a9d6509184e72a000611a8f8a8c6000018981548110611a6f57fe5b90600052602060002090600302016000015461356a90919063ffffffff16565b6135f090919063ffffffff16565b61356a90919063ffffffff16565b6135f090919063ffffffff16565b91505b611b03600a611af56012886000018581548110611ad557fe5b90600052602060002090600302016000015461356a90919063ffffffff16565b6135f090919063ffffffff16565b611b3683876000018481548110611b1657fe5b90600052602060002090600302016001015461368490919063ffffffff16565b1115611bb857611bb5856000018281548110611b4e57fe5b906000526020600020906003020160010154611ba7600a611b9960128a6000018781548110611b7957fe5b90600052602060002090600302016000015461356a90919063ffffffff16565b6135f090919063ffffffff16565b61363a90919063ffffffff16565b91505b611beb82866000018381548110611bcb57fe5b90600052602060002090600302016001015461368490919063ffffffff16565b856000018281548110611bfa57fe5b906000526020600020906003020160010181905550611c22828461368490919063ffffffff16565b92505b80806001019150506118dd565b506000611c3e33613424565b90506000811115611c6957611c5c818461368490919063ffffffff16565b9250600085600301819055505b60008311611cdf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f5573657220686173206e6f206469766964656e6473000000000000000000000081525060200191505060405180910390fd5b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611d6957600080fd5b505afa158015611d7d573d6000803e3d6000fd5b505050506040513d6020811015611d9357600080fd5b81019080805190602001909291905050509050838111611dd3578093506001600c60006101000a81548160ff02191690831515021790555042600b819055505b428660010181905550611e27338560008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166137cd9092919063ffffffff16565b611e3c8460095461368490919063ffffffff16565b600981905550611e4d84600061386f565b3373ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5856040518082815260200191505060405180910390a2505050505050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000635fab564f905090565b642e90edd00081565b60015481565b642e90edd00081565b60095481565b64174876e80081565b60136020528160005260406000208181548110611f1557fe5b90600052602060002001600091509150505481565b60085481565b64174876e80081565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561200f57600080fd5b505afa158015612023573d6000803e3d6000fd5b505050506040513d602081101561203957600080fd5b8101908080519060200190929190505050905090565b600061206d633b9aca0064174876e8006135f090919063ffffffff16565b905090565b600073ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612136576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f496e76616c6964206f7065726174696f6e00000000000000000000000000000081525060200191505060405180910390fd5b80600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600501549050919050565b600f81565b600a5481565b600080601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600080600090505b826000018054905081101561226e5761225f83600001828154811061223e57fe5b9060005260206000209060030201600001548361368490919063ffffffff16565b9150808060010191505061221d565b508092505050919050565b6014818154811061228657fe5b90600052602060002090600202016000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154905082565b60006122e5633b9aca006002546135f090919063ffffffff16565b905090565b60045481565b60065481565b600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001805490509050919050565b635fab564f81565b600a81565b648bb2c9700081565b60006123b3633b9aca006123a564174876e80060025461363a90919063ffffffff16565b6135f090919063ffffffff16565b905090565b62989680811015612431576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f4c657373207468616e206d696e696d756d00000000000000000000000000000081525060200191505060405180910390fd5b61243a33613932565b156124ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f63616e6e6f742063616c6c2066726f6d20636f6e74726163740000000000000081525060200191505060405180910390fd5b600c60009054906101000a900460ff1615612530576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f47616d65204f766572000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600061253a611748565b905061254581613945565b600061256f601260008481526020019081526020016000205460035461363a90919063ffffffff16565b9050600081116125e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f536f6c64206f757420746f64617900000000000000000000000000000000000081525060200191505060405180910390fd5b60008184116125f6578361260a565b612609828561363a90919063ffffffff16565b5b905061265933308360008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661370c909392919063ffffffff16565b6126f5600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166126af6509184e72a0006126a1648bb2c970008661356a90919063ffffffff16565b6135f090919063ffffffff16565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166137cd9092919063ffffffff16565b612791600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661274b6509184e72a00061273d642e90edd0008661356a90919063ffffffff16565b6135f090919063ffffffff16565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166137cd9092919063ffffffff16565b61282d600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166127e76509184e72a0006127d9642e90edd0008661356a90919063ffffffff16565b6135f090919063ffffffff16565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166137cd9092919063ffffffff16565b6000601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600073ffffffffffffffffffffffffffffffffffffffff168160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614801561291557506000601160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000180549050115b801561294d57503373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b1561299657858160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b600073ffffffffffffffffffffffffffffffffffffffff168160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612de25760008160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060005b600a811015612ddf57600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612dcd576000612a866509184e72a000612a786001548861356a90919063ffffffff16565b6135f090919063ffffffff16565b9050601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040154612b2082601160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206005015461368490919063ffffffff16565b11612c6057612b7a81601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206003015461368490919063ffffffff16565b601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030181905550612c1581601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206005015461368490919063ffffffff16565b601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050181905550612d62565b612cb581601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206006015461368490919063ffffffff16565b601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060181905550813373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f4fa68a095c83095a4f28b37310e3d4748c04b8923bfa0cb5b1fb62e739493337846040518082815260200191505060405180910390a45b601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16925050612dd2565b612ddf565b8080600101915050612a1a565b50505b600081600001805490501415612e1857428160010181905550612e11600160075461368490919063ffffffff16565b6007819055505b806000016040518060600160405280848152602001600081526020014281525090806001815401808255809150506001900390600052602060002090600302016000909190919091506000820151816000015560208201518160010155604082015181600201555050612e9882826004015461368490919063ffffffff16565b8160040181905550612eab82600161386f565b612eb533836139ac565b612edb82601260008781526020019081526020016000205461368490919063ffffffff16565b6012600086815260200190815260200160002081905550612f078260085461368490919063ffffffff16565b600881905550612f236001600a5461368490919063ffffffff16565b600a819055503373ffffffffffffffffffffffffffffffffffffffff167f2cb77763bc1e8490c1a904905c4d74b4269919aca114464f4bb4d911e60de364836040518082815260200191505060405180910390a2505050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000612fd960126000612fb4611748565b815260200190815260200160002054612fcb6130a8565b61363a90919063ffffffff16565b905090565b60075481565b600080600080601160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905080600001858154811061303a57fe5b90600052602060002090600302016000015481600001868154811061305b57fe5b90600052602060002090600302016001015482600001878154811061307c57fe5b906000526020600020906003020160020154935093509350509250925092565b60025481565b60055481565b6000806130c76004546130b9611748565b61363a90919063ffffffff16565b90506000600354905060005b8281101561311157613102600a6130f4600b8561356a90919063ffffffff16565b6135f090919063ffffffff16565b915080806001019150506130d3565b50809250505090565b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050919050565b60006060601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054806020026020016040519081016040528092919081815260200182805480156131f357602002820191906000526020600020905b8154815260200190600101908083116131df575b5050505050905060008151141561320e576000915050613418565b600060606014805480602002602001604051908101604052809291908181526020016000905b828210156132c657838290600052602060002090600202016040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201548152505081526020019060010190613234565b5050505090506000600184510390505b8351811015613394578573ffffffffffffffffffffffffffffffffffffffff168285838151811061330357fe5b60200260200101518151811061331557fe5b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff1614156133815761337a8285838151811061334d57fe5b60200260200101518151811061335f57fe5b6020026020010151602001518461368490919063ffffffff16565b9250613386565b613394565b8080600190039150506132d6565b50613412601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600701546134046005546133f66006548761356a90919063ffffffff16565b6135f090919063ffffffff16565b61363a90919063ffffffff16565b93505050505b919050565b6298968081565b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301549050919050565b60035481565b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600601549050919050565b600080601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600080600090505b826000018054905081101561355f5761355083600001828154811061352f57fe5b9060005260206000209060030201600101548361368490919063ffffffff16565b9150808060010191505061350e565b508092505050919050565b60008083141561357d57600090506135ea565b600082840290508284828161358e57fe5b04146135e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806141226021913960400191505060405180910390fd5b809150505b92915050565b600061363283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613c7b565b905092915050565b600061367c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613d41565b905092915050565b600080828401905083811015613702576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6137c7846323b872dd60e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050613e01565b50505050565b61386a8363a9059cbb60e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050613e01565b505050565b80156138c65761389d61388c600a8461356a90919063ffffffff16565b60025461368490919063ffffffff16565b60028190555065105ef39b200060025411156138c15765105ef39b20006002819055505b61392e565b60006138dc600f8461356a90919063ffffffff16565b90506138f68164174876e80061368490919063ffffffff16565b60025410156139105764174876e80060028190555061392c565b6139258160025461363a90919063ffffffff16565b6002819055505b505b5050565b600080823b905060008111915050919050565b6004548111156139a95760006004548203905060005b8181101561399f5761398c600a61397e600b60035461356a90919063ffffffff16565b6135f090919063ffffffff16565b600381905550808060010191505061395b565b5081600481905550505b50565b60006064600a54816139ba57fe5b069050600060149050606481805490501415613a9d57613a148183815481106139df57fe5b906000526020600020906002020160010154613a068560055461368490919063ffffffff16565b61363a90919063ffffffff16565b60058190555082818381548110613a2757fe5b90600052602060002090600202016001018190555083818381548110613a4957fe5b906000526020600020906002020160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550613b61565b8060405180604001604052808673ffffffffffffffffffffffffffffffffffffffff16815260200185815250908060018154018082558091505060019003906000526020600020906002020160009091909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101555050613b5a8360055461368490919063ffffffff16565b6005819055505b601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020829080600181540180825580915050600190039060005260206000200160009091909190915055613bef613bde6014856135f090919063ffffffff16565b60065461368490919063ffffffff16565b600681905550613c75600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613c2f6014866135f090919063ffffffff16565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166137cd9092919063ffffffff16565b50505050565b60008083118290613d27576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613cec578082015181840152602081019050613cd1565b50505050905090810190601f168015613d195780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581613d3357fe5b049050809150509392505050565b6000838311158290613dee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613db3578082015181840152602081019050613d98565b50505050905090810190601f168015613de05780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6060613e63826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16613ef09092919063ffffffff16565b9050600081511115613eeb57808060200190516020811015613e8457600080fd5b8101908080519060200190929190505050613eea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180614143602a913960400191505060405180910390fd5b5b505050565b6060613eff8484600085613f08565b90509392505050565b6060613f138561410e565b613f85576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081525060200191505060405180910390fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b60208310613fd55780518252602082019150602081019050602083039250613fb2565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114614037576040519150601f19603f3d011682016040523d82523d6000602084013e61403c565b606091505b50915091508115614051578092505050614106565b6000815111156140645780518082602001fd5b836040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156140cb5780820151818401526020810190506140b0565b50505050905090810190601f1680156140f85780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b949350505050565b600080823b90506000811191505091905056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a264697066735822122016ff9d41dca088ee3c1bb4bd6ed3b3b3203bf41cd27dc5a00fddc9fc437786ed64736f6c634300060c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec700000000000000000000000016de0ce9b6d234b95ef49cbbbef7166d3d4f18c2000000000000000000000000974c50df22df6f172ba5151f262ae6a114df65750000000000000000000000007953141757e9f717e2365457a9996c085f59b2650000000000000000000000003f55064ab85c02f8e7d6fd7d5f865e484ca3bc27
-----Decoded View---------------
Arg [0] : _investToken (address): 0xdAC17F958D2ee523a2206206994597C13D831ec7
Arg [1] : marketingAddr (address): 0x16dE0Ce9B6D234b95Ef49cbbBef7166d3d4F18C2
Arg [2] : projectAddr (address): 0x974c50Df22dF6f172bA5151F262Ae6A114Df6575
Arg [3] : devAddr (address): 0x7953141757e9F717e2365457a9996c085F59B265
Arg [4] : _obsoleteExitTo (address): 0x3F55064aB85C02F8E7d6FD7D5f865e484ca3bC27
-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7
Arg [1] : 00000000000000000000000016de0ce9b6d234b95ef49cbbbef7166d3d4f18c2
Arg [2] : 000000000000000000000000974c50df22df6f172ba5151f262ae6a114df6575
Arg [3] : 0000000000000000000000007953141757e9f717e2365457a9996c085f59b265
Arg [4] : 0000000000000000000000003f55064ab85c02f8e7d6fd7d5f865e484ca3bc27
Deployed Bytecode Sourcemap
18093:14765:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18302:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;28897:1136;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18409:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;30040:311;;;:::i;:::-;;31529:161;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19506:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;18714:42;;;:::i;:::-;;;;;;;;;;;;;;;;;;;24847:446;;;:::i;:::-;;31279:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;19627:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;19477;;;:::i;:::-;;;;;;;;;;;;;;;;;;;28124:176;;;:::i;:::-;;;;;;;;;;;;;;;;;;;25875:1903;;;:::i;:::-;;19594:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;30356:82;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18564:43;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18668:39;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18513:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19410:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18768:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;20222:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19378:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18362:43;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19687:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;19658:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;28303:113;;;:::i;:::-;;;;;;;;;;;;;;;;;;;30540:93;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21080:144;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;31151:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19004:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19443:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;;32104:285;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;20280:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;30442:95;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19186:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19288:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19559:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;31965:134;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18832:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18926:43;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18460:49;;;:::i;:::-;;;;;;;;;;;;;;;;;;;30636:117;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21633:2476;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18208:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;30758:130;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19349:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;31695:265;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19089:36;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19230:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;27783:336;;;:::i;:::-;;;;;;;;;;;;;;;;;;;30893:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;25298:572;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18240:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;31403:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19131:51;;;:::i;:::-;;;;;;;;;;;;;;;;;;;31021:125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;32394:289;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18302:48;18346:4;18302:48;:::o;28897:1136::-;28965:7;28979:17;28999:5;:18;29005:11;28999:18;;;;;;;;;;;;;;;28979:38;;29024:23;29050:14;;29024:40;;29071:22;29098:17;29127:9;29122:879;29146:4;:13;;:20;;;;29142:1;:24;29122:879;;;29214:39;29250:2;29214:31;29242:2;29214:4;:13;;29228:1;29214:16;;;;;;;;;;;;;;;;;;:23;;;:27;;:31;;;;:::i;:::-;:35;;:39;;;;:::i;:::-;29185:4;:13;;29199:1;29185:16;;;;;;;;;;;;;;;;;;:26;;;:68;29181:813;;;29293:4;:15;;;29268:4;:13;;29282:1;29268:16;;;;;;;;;;;;;;;;;;:22;;;:40;29264:405;;;29332:148;18750:6;29332:125;29413:43;29433:4;:13;;29447:1;29433:16;;;;;;;;;;;;;;;;;;:22;;;29413:15;:19;;:43;;;;:::i;:::-;29333:66;18346:4;29333:44;29361:15;29333:4;:13;;29347:1;29333:16;;;;;;;;;;;;;;;;;;:23;;;:27;;:44;;;;:::i;:::-;:48;;:66;;;;:::i;:::-;29332:80;;:125;;;;:::i;:::-;:137;;:148;;;;:::i;:::-;29320:160;;29264:405;;;29518:141;18750:6;29518:118;29599:36;29619:4;:15;;;29599;:19;;:36;;;;:::i;:::-;29519:66;18346:4;29519:44;29547:15;29519:4;:13;;29533:1;29519:16;;;;;;;;;;;;;;;;;;:23;;;:27;;:44;;;;:::i;:::-;:48;;:66;;;;:::i;:::-;29518:80;;:118;;;;:::i;:::-;:130;;:141;;;;:::i;:::-;29506:153;;29264:405;29725:39;29761:2;29725:31;29753:2;29725:4;:13;;29739:1;29725:16;;;;;;;;;;;;;;;;;;:23;;;:27;;:31;;;;:::i;:::-;:35;;:39;;;;:::i;:::-;29681:41;29712:9;29681:4;:13;;29695:1;29681:16;;;;;;;;;;;;;;;;;;:26;;;:30;;:41;;;;:::i;:::-;:83;29677:190;;;29786:73;29832:4;:13;;29846:1;29832:16;;;;;;;;;;;;;;;;;;:26;;;29787:39;29823:2;29787:31;29815:2;29787:4;:13;;29801:1;29787:16;;;;;;;;;;;;;;;;;;:23;;;:27;;:31;;;;:::i;:::-;:35;;:39;;;;:::i;:::-;29786:45;;:73;;;;:::i;:::-;29774:85;;29677:190;29892:29;29911:9;29892:14;:18;;:29;;;;:::i;:::-;29875:46;;29181:813;29168:3;;;;;;;29122:879;;;;30014:14;30007:21;;;;;;28897:1136;;;:::o;18409:47::-;18447:9;18409:47;:::o;30040:311::-;30089:14;;;;;;;;;;;30080:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30141:12;30156:6;30141:21;;30182:20;30197:4;30182:10;;:14;;:20;;;;:::i;:::-;30176:3;:26;30167:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30227:14;30244:11;;;;;;;;;;;:21;;;30266:10;;;;;;;;;;;30244:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30227:50;;30282:64;30311:10;;;;;;;;;;;30323:14;;;;;;;;;;;30339:6;30282:11;;;;;;;;;;:28;;;;:64;;;;;;:::i;:::-;30040:311;;:::o;31529:161::-;31596:7;31617:68;31655:29;31672:11;31655:16;:29::i;:::-;31617:33;31638:11;31617:20;:33::i;:::-;:37;;:68;;;;:::i;:::-;31610:75;;31529:161;;;:::o;19506:26::-;;;;;;;;;;;;;:::o;18714:42::-;18750:6;18714:42;:::o;24847:446::-;24895:14;;;;;;;;;;;24887:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24934:15;24952:25;24966:10;24952:13;:25::i;:::-;24934:43;;25000:1;24990:7;:11;24982:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25024:17;25044:5;:17;25050:10;25044:17;;;;;;;;;;;;;;;25024:37;;25086:30;25108:7;25086:4;:17;;;:21;;:30;;;;:::i;:::-;25066:4;:17;;:50;;;;25177:63;25207:10;;;;;;;;;;;25220;25232:7;25177:11;;;;;;;;;;:28;;;;:63;;;;;;:::i;:::-;25268:10;25252:36;;;25280:7;25252:36;;;;;;;;;;;;;;;;;;24847:446;;:::o;31279:119::-;31345:7;31366:5;:18;31372:11;31366:18;;;;;;;;;;;;;;;:27;;;;;;;;;;;;31359:34;;31279:119;;;:::o;19627:25::-;;;;;;;;;;;;;:::o;19477:::-;;;;:::o;28124:176::-;28172:7;18870:10;28194:3;:18;;28186:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28245:50;28268:26;18750:6;18870:10;28268:15;;:26;;;;:::i;:::-;28245:18;18750:6;28245:3;:7;;:18;;;;:::i;:::-;:22;;:50;;;;:::i;:::-;28237:58;;28124:176;:::o;25875:1903::-;25916:14;;;;;;;;;;;25915:15;25907:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25963:17;25983:5;:17;25989:10;25983:17;;;;;;;;;;;;;;;25963:37;;26007:23;26033:14;;26007:40;;26054:19;26078:17;26107:9;26102:913;26126:4;:13;;:20;;;;26122:1;:24;26102:913;;;26194:39;26230:2;26194:31;26222:2;26194:4;:13;;26208:1;26194:16;;;;;;;;;;;;;;;;;;:23;;;:27;;:31;;;;:::i;:::-;:35;;:39;;;;:::i;:::-;26165:4;:13;;26179:1;26165:16;;;;;;;;;;;;;;;;;;:26;;;:68;26161:849;;;26273:4;:15;;;26248:4;:13;;26262:1;26248:16;;;;;;;;;;;;;;;;;;:22;;;:40;26244:405;;;26312:148;18750:6;26312:125;26393:43;26413:4;:13;;26427:1;26413:16;;;;;;;;;;;;;;;;;;:22;;;26393:15;:19;;:43;;;;:::i;:::-;26313:66;18346:4;26313:44;26341:15;26313:4;:13;;26327:1;26313:16;;;;;;;;;;;;;;;;;;:23;;;:27;;:44;;;;:::i;:::-;:48;;:66;;;;:::i;:::-;26312:80;;:125;;;;:::i;:::-;:137;;:148;;;;:::i;:::-;26300:160;;26244:405;;;26498:141;18750:6;26498:118;26579:36;26599:4;:15;;;26579;:19;;:36;;;;:::i;:::-;26499:66;18346:4;26499:44;26527:15;26499:4;:13;;26513:1;26499:16;;;;;;;;;;;;;;;;;;:23;;;:27;;:44;;;;:::i;:::-;:48;;:66;;;;:::i;:::-;26498:80;;:118;;;;:::i;:::-;:130;;:141;;;;:::i;:::-;26486:153;;26244:405;26705:39;26741:2;26705:31;26733:2;26705:4;:13;;26719:1;26705:16;;;;;;;;;;;;;;;;;;:23;;;:27;;:31;;;;:::i;:::-;:35;;:39;;;;:::i;:::-;26661:41;26692:9;26661:4;:13;;26675:1;26661:16;;;;;;;;;;;;;;;;;;:26;;;:30;;:41;;;;:::i;:::-;:83;26657:190;;;26766:73;26812:4;:13;;26826:1;26812:16;;;;;;;;;;;;;;;;;;:26;;;26767:39;26803:2;26767:31;26795:2;26767:4;:13;;26781:1;26767:16;;;;;;;;;;;;;;;;;;:23;;;:27;;:31;;;;:::i;:::-;:35;;:39;;;;:::i;:::-;26766:45;;:73;;;;:::i;:::-;26754:85;;26657:190;26884:41;26915:9;26884:4;:13;;26898:1;26884:16;;;;;;;;;;;;;;;;;;:26;;;:30;;:41;;;;:::i;:::-;26855:4;:13;;26869:1;26855:16;;;;;;;;;;;;;;;;;;:26;;:70;;;;26975:26;26991:9;26975:11;:15;;:26;;;;:::i;:::-;26961:40;;26161:849;26148:3;;;;;;;26102:913;;;;27021:21;27045:32;27066:10;27045:20;:32::i;:::-;27021:56;;27102:1;27086:13;:17;27082:99;;;27125:30;27141:13;27125:11;:15;;:30;;;;:::i;:::-;27111:44;;27174:1;27161:4;:10;;:14;;;;27082:99;27209:1;27195:11;:15;27187:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27300:23;27326:11;;;;;;;;;;;:21;;;27356:4;27326:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27300:62;;27390:11;27371:15;:30;27367:172;;27423:15;27409:29;;27495:4;27478:14;;:21;;;;;;;;;;;;;;;;;;27518:15;27505:10;:28;;;;27367:172;27563:15;27545:4;:15;;:33;;;;27585:50;27611:10;27623:11;27585;;;;;;;;;;:24;;;;:50;;;;;:::i;:::-;27659:31;27678:11;27659:14;;:18;;:31;;;;:::i;:::-;27642:14;:48;;;;27697:30;27708:11;27721:5;27697:10;:30::i;:::-;27747:10;27737:34;;;27759:11;27737:34;;;;;;;;;;;;;;;;;;25875:1903;;;;;;:::o;19594:29::-;;;;;;;;;;;;;:::o;30356:82::-;30401:7;18870:10;30415:18;;30356:82;:::o;18564:43::-;18598:9;18564:43;:::o;18668:39::-;;;;:::o;18513:47::-;18551:9;18513:47;:::o;19410:29::-;;;;:::o;18768:48::-;18812:4;18768:48;:::o;20222:54::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;19378:28::-;;;;:::o;18362:43::-;18401:4;18362:43;:::o;19687:29::-;;;;;;;;;;;;;:::o;19658:25::-;;;;;;;;;;;;;:::o;28303:113::-;28354:7;28375:11;;;;;;;;;;;:21;;;28405:4;28375:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28368:43;;28303:113;:::o;30540:93::-;30586:7;30607:21;30624:3;18401:4;30607:16;;:21;;;;:::i;:::-;30600:28;;30540:93;:::o;21080:144::-;21166:1;21144:24;;:10;;;;;;;;;;;:24;;;21136:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21208:11;21195:10;;:24;;;;;;;;;;;;;;;;;;21080:144;:::o;31151:123::-;31219:7;31240:5;:18;31246:11;31240:18;;;;;;;;;;;;;;;:29;;;31233:36;;31151:123;;;:::o;19004:45::-;19047:2;19004:45;:::o;19443:28::-;;;;:::o;32104:285::-;32175:7;32192:17;32212:5;:18;32218:11;32212:18;;;;;;;;;;;;;;;32192:38;;32237:14;32263:9;32275:1;32263:13;;32258:107;32282:4;:13;;:20;;;;32278:1;:24;32258:107;;;32324:35;32335:4;:13;;32349:1;32335:16;;;;;;;;;;;;;;;;;;:23;;;32324:6;:10;;:35;;;;:::i;:::-;32315:44;;32304:3;;;;;;;32258:107;;;;32378:6;32371:13;;;;32104:285;;;:::o;20280:35::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;30442:95::-;30488:7;30509:23;30528:3;30509:14;;:18;;:23;;;;:::i;:::-;30502:30;;30442:95;:::o;19186:38::-;;;;:::o;19288:33::-;;;;:::o;19559:31::-;;;;;;;;;;;;;:::o;31965:134::-;32039:7;32060:5;:18;32066:11;32060:18;;;;;;;;;;;;;;;:27;;:34;;;;32053:41;;31965:134;;;:::o;18832:48::-;18870:10;18832:48;:::o;18926:43::-;18967:2;18926:43;:::o;18460:49::-;18500:9;18460:49;:::o;30636:117::-;30686:7;30707:41;30744:3;30707:32;18401:4;30707:14;;:18;;:32;;;;:::i;:::-;:36;;:41;;;;:::i;:::-;30700:48;;30636:117;:::o;21633:2476::-;18284:3;21705:7;:28;;21697:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21769:22;21780:10;21769;:22::i;:::-;21768:23;21760:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21835:14;;;;;;;;;;;21834:15;21826:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21886:17;21906;:15;:17::i;:::-;21886:37;;21949:31;21967:12;21949:17;:31::i;:::-;21988:16;22007:53;22028:17;:31;22046:12;22028:31;;;;;;;;;;;;22007:16;;:20;;:53;;;;:::i;:::-;21988:72;;22085:1;22073:11;:13;22065:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22110:11;22134;22124:7;:21;:59;;22176:7;22124:59;;;22149:24;22161:11;22149:7;:11;;:24;;;;:::i;:::-;22124:59;22110:73;;22190:72;22227:10;22248:4;22255:6;22190:11;;;;;;;;;;:28;;;;:72;;;;;;:::i;:::-;22267:101;22301:16;;;;;;;;;;;22320:47;18346:4;22320:25;18500:9;22320:6;:10;;:25;;;;:::i;:::-;:29;;:47;;;;:::i;:::-;22267:11;;;;;;;;;;:24;;;;:101;;;;;:::i;:::-;22373:97;22407:14;;;;;;;;;;;22424:45;18346:4;22424:23;18551:9;22424:6;:10;;:23;;;;:::i;:::-;:27;;:45;;;;:::i;:::-;22373:11;;;;;;;;;;:24;;;;:97;;;;;:::i;:::-;22475:89;22509:10;;;;;;;;;;;22522:41;18346:4;22522:19;18598:9;22522:6;:10;;:19;;;;:::i;:::-;:23;;:41;;;;:::i;:::-;22475:11;;;;;;;;;;:24;;;;:89;;;;;:::i;:::-;22674:17;22694:5;:17;22700:10;22694:17;;;;;;;;;;;;;;;22674:37;;22747:1;22722:27;;:4;:13;;;;;;;;;;;;:27;;;:66;;;;;22787:1;22753:5;:15;22759:8;22753:15;;;;;;;;;;;;;;;:24;;:31;;;;:35;22722:66;:92;;;;;22804:10;22792:22;;:8;:22;;;;22722:92;22718:134;;;22838:8;22822:4;:13;;;:24;;;;;;;;;;;;;;;;;;22718:134;22887:1;22862:27;;:4;:13;;;;;;;;;;;;:27;;;22858:690;;22899:14;22916:4;:13;;;;;;;;;;;;22899:30;;22940:9;22935:606;22959:2;22955:1;:6;22935:606;;;22997:1;22979:20;;:6;:20;;;22975:559;;23009:18;23030:51;18346:4;23030:29;23041:17;;23030:6;:10;;:29;;;;:::i;:::-;:33;;:51;;;;:::i;:::-;23009:72;;23137:5;:13;23143:6;23137:13;;;;;;;;;;;;;;;:27;;;23093:40;23122:10;23093:5;:13;23099:6;23093:13;;;;;;;;;;;;;;;:24;;;:28;;:40;;;;:::i;:::-;:71;23089:388;;23197:35;23221:10;23197:5;:13;23203:6;23197:13;;;;;;;;;;;;;;;:19;;;:23;;:35;;;;:::i;:::-;23175:5;:13;23181:6;23175:13;;;;;;;;;;;;;;;:19;;:57;;;;23268:40;23297:10;23268:5;:13;23274:6;23268:13;;;;;;;;;;;;;;;:24;;;:28;;:40;;;;:::i;:::-;23241:5;:13;23247:6;23241:13;;;;;;;;;;;;;;;:24;;:67;;;;23089:388;;;23368:41;23398:10;23368:5;:13;23374:6;23368:13;;;;;;;;;;;;;;;:25;;;:29;;:41;;;;:::i;:::-;23340:5;:13;23346:6;23340:13;;;;;;;;;;;;;;;:25;;:69;;;;23454:1;23442:10;23424:44;;23434:6;23424:44;;;23457:10;23424:44;;;;;;;;;;;;;;;;;;23089:388;23493:5;:13;23499:6;23493:13;;;;;;;;;;;;;;;:22;;;;;;;;;;;;23484:31;;22975:559;;;;23529:5;;22975:559;22963:3;;;;;;;22935:606;;;;22858:690;;23582:1;23558:4;:13;;:20;;;;:25;23554:144;;;23609:15;23591:4;:15;;:33;;;;23643:17;23658:1;23643:10;;:14;;:17;;;;:::i;:::-;23630:10;:30;;;;23554:144;23704:4;:13;;23723:35;;;;;;;;23731:6;23723:35;;;;23739:1;23723:35;;;;23742:15;23723:35;;;23704:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23785:30;23808:6;23785:4;:18;;;:22;;:30;;;;:::i;:::-;23764:4;:18;;:51;;;;23822:24;23833:6;23841:4;23822:10;:24::i;:::-;23851:36;23868:10;23880:6;23851:16;:36::i;:::-;23928:43;23964:6;23928:17;:31;23946:12;23928:31;;;;;;;;;;;;:35;;:43;;;;:::i;:::-;23894:17;:31;23912:12;23894:31;;;;;;;;;;;:77;;;;23994:25;24012:6;23994:13;;:17;;:25;;;;:::i;:::-;23978:13;:41;;;;24040:20;24058:1;24040:13;;:17;;:20;;;;:::i;:::-;24024:13;:36;;;;24085:10;24074:30;;;24097:6;24074:30;;;;;;;;;;;;;;;;;;21633:2476;;;;;;:::o;18208:26::-;;;;;;;;;;;;:::o;30758:130::-;30804:7;30825:58;30846:17;:36;30864:17;:15;:17::i;:::-;30846:36;;;;;;;;;;;;30825:16;:14;:16::i;:::-;:20;;:58;;;;:::i;:::-;30818:65;;30758:130;:::o;19349:25::-;;;;:::o;31695:265::-;31779:7;31788;31797;31814:17;31834:5;:18;31840:11;31834:18;;;;;;;;;;;;;;;31814:38;;31867:4;:13;;31881:5;31867:20;;;;;;;;;;;;;;;;;;:27;;;31896:4;:13;;31910:5;31896:20;;;;;;;;;;;;;;;;;;:30;;;31928:4;:13;;31942:5;31928:20;;;;;;;;;;;;;;;;;;:26;;;31859:96;;;;;;;31695:265;;;;;:::o;19089:36::-;;;;:::o;19230:27::-;;;;:::o;27783:336::-;27830:7;27848:17;27868:42;27890:19;;27868:17;:15;:17::i;:::-;:21;;:42;;;;:::i;:::-;27848:62;;27915:18;27936:16;;27915:37;;27962:13;27957:132;27989:9;27981:5;:17;27957:132;;;28054:29;28080:2;28054:21;28072:2;28054:13;:17;;:21;;;;:::i;:::-;:25;;:29;;;;:::i;:::-;28038:45;;28000:7;;;;;;;27957:132;;;;28100:13;28093:20;;;;27783:336;:::o;30893:123::-;30961:7;30982:5;:18;30988:11;30982:18;;;;;;;;;;;;;;;:29;;;30975:36;;30893:123;;;:::o;25298:572::-;25357:7;25371:27;25401:17;:24;25419:5;25401:24;;;;;;;;;;;;;;;25371:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25457:1;25436:10;:17;:22;25432:49;;;25474:1;25467:8;;;;;25432:49;25487:15;25507:30;25540:11;25507:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25561:9;25593:1;25573:10;:17;:21;25561:33;;25556:206;25601:10;:17;25597:1;:21;25556:206;;;25667:5;25636:36;;:7;25644:10;25655:1;25644:13;;;;;;;;;;;;;;25636:22;;;;;;;;;;;;;;:27;;;:36;;;25633:123;;;25694:45;25709:7;25717:10;25728:1;25717:13;;;;;;;;;;;;;;25709:22;;;;;;;;;;;;;;:29;;;25694:10;:14;;:45;;;;:::i;:::-;25681:58;;25633:123;;;25751:5;;25633:123;25620:3;;;;;;;;25556:206;;;;25775:88;25832:5;:17;25838:10;25832:17;;;;;;;;;;;;;;;:30;;;25775:52;25814:12;;25775:34;25790:18;;25775:10;:14;;:34;;;;:::i;:::-;:38;;:52;;;;:::i;:::-;:56;;:88;;;;:::i;:::-;25768:95;;;;;25298:572;;;;:::o;18240:47::-;18284:3;18240:47;:::o;31403:121::-;31474:7;31495:5;:18;31501:11;31495:18;;;;;;;;;;;;;;;:24;;;31488:31;;31403:121;;;:::o;19131:51::-;;;;:::o;31021:125::-;31090:7;31111:5;:18;31117:11;31111:18;;;;;;;;;;;;;;;:30;;;31104:37;;31021:125;;;:::o;32394:289::-;32466:7;32483:17;32503:5;:18;32509:11;32503:18;;;;;;;;;;;;;;;32483:38;;32528:14;32554:9;32566:1;32554:13;;32549:110;32573:4;:13;;:20;;;;32569:1;:24;32549:110;;;32615:38;32626:4;:13;;32640:1;32626:16;;;;;;;;;;;;;;;;;;:26;;;32615:6;:10;;:38;;;;:::i;:::-;32606:47;;32595:3;;;;;;;32549:110;;;;32672:6;32665:13;;;;32394:289;;;:::o;8444:471::-;8502:7;8752:1;8747;:6;8743:47;;;8777:1;8770:8;;;;8743:47;8802:9;8818:1;8814;:5;8802:17;;8847:1;8842;8838;:5;;;;;;:10;8830:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8906:1;8899:8;;;8444:471;;;;;:::o;9380:132::-;9438:7;9465:39;9469:1;9472;9465:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;9458:46;;9380:132;;;;:::o;7559:136::-;7617:7;7644:43;7648:1;7651;7644:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;7637:50;;7559:136;;;;:::o;7097:181::-;7155:7;7175:9;7191:1;7187;:5;7175:17;;7216:1;7211;:6;;7203:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7269:1;7262:8;;;7097:181;;;;:::o;3353:205::-;3454:96;3474:5;3504:27;;;3533:4;3539:2;3543:5;3481:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3454:19;:96::i;:::-;3353:205;;;;:::o;3168:177::-;3251:86;3271:5;3301:23;;;3326:2;3330:5;3278:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3251:19;:86::i;:::-;3168:177;;;:::o;28419:473::-;28487:7;28483:401;;;28519:49;28539:27;18967:2;28539:7;:11;;:27;;;;:::i;:::-;28519:14;;:18;;:49;;;;:::i;:::-;28502:14;:66;;;;18447:9;28579:14;;:28;28574:78;;;18447:9;28617:14;:28;;;;28574:78;28483:401;;;28669:13;28685:29;19047:2;28685:7;:11;;:29;;;;:::i;:::-;28669:45;;28742:26;28759:8;18401:4;28742:16;;:26;;;;:::i;:::-;28725:14;;:43;28720:159;;;18401:4;28778:14;:29;;;;28720:159;;;28844:28;28863:8;28844:14;;:18;;:28;;;;:::i;:::-;28827:14;:45;;;;28720:159;28483:401;;28419:473;;:::o;32688:165::-;32745:4;32762:9;32813:4;32801:17;32793:25;;32844:1;32837:4;:8;32830:15;;;32688:165;;;:::o;21229:399::-;21308:19;;21293:12;:34;21290:334;;;21335:10;21363:19;;21348:12;:34;21335:47;;21469:13;21464:113;21496:5;21488;:13;21464:113;;;21538:32;21567:2;21538:24;21559:2;21538:16;;:20;;:24;;;;:::i;:::-;:28;;:32;;;;:::i;:::-;21519:16;:51;;;;21503:7;;;;;;;21464:113;;;;21606:12;21584:19;:34;;;;21290:334;;21229:399;:::o;24114:728::-;24185:13;24218:3;24201:13;;:20;;;;;;24185:36;;24253:32;24288:11;24253:46;;24328:3;24310:7;:14;;;;:21;24306:333;;;24366:52;24396:7;24404:5;24396:14;;;;;;;;;;;;;;;;;;:21;;;24366:25;24383:7;24366:12;;:16;;:25;;;;:::i;:::-;:29;;:52;;;;:::i;:::-;24351:12;:67;;;;24448:7;24424;24432:5;24424:14;;;;;;;;;;;;;;;;;;:21;;:31;;;;24485:5;24461:7;24469:5;24461:14;;;;;;;;;;;;;;;;;;:19;;;:29;;;;;;;;;;;;;;;;;;24306:333;;;24510:7;24523:63;;;;;;;;24551:5;24523:63;;;;;;24572:7;24523:63;;;24510:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24608:25;24625:7;24608:12;;:16;;:25;;;;:::i;:::-;24593:12;:40;;;;24306:333;24643:17;:24;24661:5;24643:24;;;;;;;;;;;;;;;24673:5;24643:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24707:41;24731:15;24743:2;24731:7;:11;;:15;;;;:::i;:::-;24707:18;;:22;;:41;;;;:::i;:::-;24686:18;:62;;;;24783:54;24809:10;;;;;;;;;;;24821:15;24833:2;24821:7;:11;;:15;;;;:::i;:::-;24783:11;;;;;;;;;;:24;;;;:54;;;;;:::i;:::-;24114:728;;;;:::o;9997:278::-;10083:7;10115:1;10111;:5;10118:12;10103:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10142:9;10158:1;10154;:5;;;;;;10142:17;;10266:1;10259:8;;;9997:278;;;;;:::o;7996:192::-;8082:7;8115:1;8110;:6;;8118:12;8102:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8142:9;8158:1;8154;:5;8142:17;;8179:1;8172:8;;;7996:192;;;;;:::o;5473:761::-;5897:23;5923:69;5951:4;5923:69;;;;;;;;;;;;;;;;;5931:5;5923:27;;;;:69;;;;;:::i;:::-;5897:95;;6027:1;6007:10;:17;:21;6003:224;;;6149:10;6138:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6130:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6003:224;5473:761;;;:::o;14959:196::-;15062:12;15094:53;15117:6;15125:4;15131:1;15134:12;15094:22;:53::i;:::-;15087:60;;14959:196;;;;;:::o;16246:979::-;16376:12;16409:18;16420:6;16409:10;:18::i;:::-;16401:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16535:12;16549:23;16576:6;:11;;16596:8;16607:4;16576:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16534:78;;;;16627:7;16623:595;;;16658:10;16651:17;;;;;;16623:595;16792:1;16772:10;:17;:21;16768:439;;;17035:10;17029:17;17096:15;17083:10;17079:2;17075:19;17068:44;16983:148;17178:12;17171:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16246:979;;;;;;;:::o;12191:422::-;12251:4;12459:12;12570:7;12558:20;12550:28;;12604:1;12597:4;:8;12590:15;;;12191:422;;;:::o
Swarm Source
ipfs://16ff9d41dca088ee3c1bb4bd6ed3b3b3203bf41cd27dc5a00fddc9fc437786ed
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 31 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.