Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 153 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Deposit | 16102935 | 790 days ago | IN | 0 ETH | 0.002346 | ||||
Withdraw | 16102928 | 790 days ago | IN | 0 ETH | 0.00335337 | ||||
Withdraw | 16079548 | 793 days ago | IN | 0 ETH | 0.00032906 | ||||
Withdraw | 16079547 | 793 days ago | IN | 0 ETH | 0.00114882 | ||||
Withdraw | 16055766 | 797 days ago | IN | 0 ETH | 0.00156585 | ||||
Deposit | 16054160 | 797 days ago | IN | 0 ETH | 0.00367473 | ||||
Deposit | 16049597 | 798 days ago | IN | 0 ETH | 0.00153092 | ||||
Withdraw | 16035541 | 800 days ago | IN | 0 ETH | 0.00313236 | ||||
Withdraw | 15956991 | 810 days ago | IN | 0 ETH | 0.00130875 | ||||
Withdraw | 15956971 | 811 days ago | IN | 0 ETH | 0.00123223 | ||||
Deposit | 15942335 | 813 days ago | IN | 0 ETH | 0.0034641 | ||||
Deposit | 15906164 | 818 days ago | IN | 0 ETH | 0.00176266 | ||||
Withdraw | 15906072 | 818 days ago | IN | 0 ETH | 0.00112795 | ||||
Withdraw | 15892174 | 820 days ago | IN | 0 ETH | 0.00177616 | ||||
Withdraw | 15874810 | 822 days ago | IN | 0 ETH | 0.0011424 | ||||
Withdraw | 15841981 | 827 days ago | IN | 0 ETH | 0.00180378 | ||||
Withdraw | 15820898 | 830 days ago | IN | 0 ETH | 0.00151994 | ||||
Withdraw | 15820897 | 830 days ago | IN | 0 ETH | 0.00321217 | ||||
Withdraw | 15814033 | 830 days ago | IN | 0 ETH | 0.00287523 | ||||
Withdraw | 15803649 | 832 days ago | IN | 0 ETH | 0.00391657 | ||||
Withdraw | 15803647 | 832 days ago | IN | 0 ETH | 0.00392571 | ||||
Withdraw | 15790454 | 834 days ago | IN | 0 ETH | 0.00554266 | ||||
Withdraw | 15767526 | 837 days ago | IN | 0 ETH | 0.00172988 | ||||
Withdraw | 15762539 | 838 days ago | IN | 0 ETH | 0.00316088 | ||||
Withdraw | 15744726 | 840 days ago | IN | 0 ETH | 0.00167735 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
PalsStaking
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-08-11 */ /** *Submitted for verification at BscScan.com on 2021-11-22 */ // SPDX-License-Identifier: MIT pragma solidity >=0.6.0 <0.8.0; library SafeMath { function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b > a) return (false, 0); return (true, a - b); } function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b == 0) return (false, 0); return (true, a / b); } function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b == 0) return (false, 0); return (true, a % b); } function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(b <= a, "SafeMath: subtraction overflow"); return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) return 0; uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { require(b > 0, "SafeMath: division by zero"); return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { require(b > 0, "SafeMath: modulo by zero"); return a % b; } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); return a - b; } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); return a / b; } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); return a % b; } } pragma solidity >=0.4.0; interface IBEP20 { function totalSupply() external view returns (uint256); function decimals() external view returns (uint8); function symbol() external view returns (string memory); function name() external view returns (string memory); function getOwner() external view returns (address); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address _owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } // File: @openzeppelin\contracts\utils\Address.sol pragma solidity >=0.6.2 <0.8.0; library Address { function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; // solhint-disable-next-line no-inline-assembly assembly { size := extcodesize(account) } return size > 0; } 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"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } 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"); } function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: value }(data); return _verifyCallResult(success, returndata, errorMessage); } function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.delegatecall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } pragma solidity ^0.6.0; library SafeBEP20 { using SafeMath for uint256; using Address for address; function safeTransfer( IBEP20 token, address to, uint256 value ) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom( IBEP20 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 * {IBEP20-approve}, and its usage is discouraged. * * Whenever possible, use {safeIncreaseAllowance} and * {safeDecreaseAllowance} instead. */ function safeApprove( IBEP20 token, address spender, uint256 value ) internal { require( (value == 0) || (token.allowance(address(this), spender) == 0), "SafeBEP20: approve from non-zero to non-zero allowance" ); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); } function safeIncreaseAllowance( IBEP20 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( IBEP20 token, address spender, uint256 value ) internal { uint256 newAllowance = token.allowance(address(this), spender).sub( value, "SafeBEP20: decreased allowance below zero" ); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function _callOptionalReturn(IBEP20 token, bytes memory data) private { bytes memory returndata = address(token).functionCall(data, "SafeBEP20: low-level call failed"); if (returndata.length > 0) { // Return data is optional // solhint-disable-next-line max-line-length require(abi.decode(returndata, (bool)), "SafeBEP20: BEP20 operation did not succeed"); } } } // File: contracts\libs\ITokenReferral.sol pragma solidity 0.6.12; interface ITokenReferral { /** * @dev Record referral. */ function recordReferral(address user, address referrer) external; /** * @dev Record referral commission. */ function recordReferralCommission(address referrer, uint256 commission) external; /** * @dev Get the referrer address that referred the user. */ function getReferrer(address user) external view returns (address); } // File: node_modules\@openzeppelin\contracts\utils\Context.sol pragma solidity >=0.6.0 <0.8.0; abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } // File: @openzeppelin\contracts\access\Ownable.sol pragma solidity >=0.6.0 <0.8.0; abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () internal { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } // File: @openzeppelin\contracts\utils\ReentrancyGuard.sol pragma solidity >=0.6.0 <0.8.0; abstract contract ReentrancyGuard { uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor () internal { _status = _NOT_ENTERED; } modifier nonReentrant() { // On the first call to nonReentrant, _notEntered will be true require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; _; _status = _NOT_ENTERED; } } pragma solidity 0.6.12; contract PalsStaking is Ownable, ReentrancyGuard { using SafeMath for uint256; using SafeBEP20 for IBEP20; // Info of each user. struct UserInfo { uint256 amount; // How many LP tokens the user has provided. uint256 rewardDebt; // Reward debt. See explanation below. uint256 rewardLockedUp; // Reward locked up. uint256 nextHarvestUntil; // When can the user harvest again. uint256 lastDepositTime; // when user deposited } // Info of each pool. struct PoolInfo { IBEP20 lpToken; // Address of LP token contract. uint256 allocPoint; // How many allocation points assigned to this pool. PALS to distribute per block. uint256 lastRewardBlock; // Last block number that PALS distribution occurs. uint256 accTokenPerShare; // Accumulated PALS per share, times 1e12. See below. uint16 depositFeeBP; // Deposit fee in basis points uint256 harvestInterval; // Harvest interval in seconds uint256 withdrawLockPeriod; // lock period for this pool uint256 balance; // pool token balance, allow multiple pools with same token } IBEP20 public token; // Dev address. address public devAddress; // Deposit Fee address address public feeAddress; uint256 public tokenPerBlock; uint256 public constant BONUS_MULTIPLIER = 1; // Info of each pool. PoolInfo[] public poolInfo; // Info of each user that stakes LP tokens. mapping(uint256 => mapping(address => UserInfo)) public userInfo; // Total allocation points. Must be the sum of all allocation points in all pools. uint256 public totalAllocPoint = 0; uint256 public startBlock; uint256 public endBlock; // Total locked up rewards uint256 public totalLockedUpRewards; // Token referral contract address. ITokenReferral public tokenReferral; // Referral commission rate in basis points. uint16 public referralCommissionRate = 100; // Max referral commission rate: 10%. uint16 public constant MAXIMUM_REFERRAL_COMMISSION_RATE = 1000; event Deposit(address indexed user, uint256 indexed pid, uint256 amount); event Withdraw(address indexed user, uint256 indexed pid, uint256 amount); event EmergencyWithdraw(address indexed user, uint256 indexed pid, uint256 amount); event EmissionRateUpdated(address indexed caller, uint256 previousAmount, uint256 newAmount); event ReferralCommissionPaid(address indexed user, address indexed referrer, uint256 commissionAmount); event RewardLockedUp(address indexed user, uint256 indexed pid, uint256 amountLockedUp); constructor( IBEP20 _token, uint256 _startBlock, uint256 _tokenPerBlock ) public { token = _token; startBlock = _startBlock; tokenPerBlock = _tokenPerBlock; token.balanceOf( address(this) ); devAddress = msg.sender; feeAddress = msg.sender; } function poolLength() external view returns (uint256) { return poolInfo.length; } // Add a new lp to the pool. Can only be called by the owner. function add(uint256 _allocPoint, IBEP20 _lpToken, uint16 _depositFeeBP, uint256 _harvestInterval, bool _withUpdate, uint256 _withdrawLockPeriod ) external onlyOwner { require(_depositFeeBP <= 400, "add: invalid deposit fee basis points"); require(_withdrawLockPeriod <= 90 days, "withdraw lock must be less than 90 days"); require(_harvestInterval <= 90 days, "add: invalid harvest interval"); if (_withUpdate) { massUpdatePools(); } _lpToken.balanceOf(address(this)); // prevent adding invalid token. uint256 lastRewardBlock = block.number > startBlock ? block.number : startBlock; totalAllocPoint = totalAllocPoint.add(_allocPoint); poolInfo.push(PoolInfo({ lpToken: _lpToken, allocPoint: _allocPoint, lastRewardBlock: lastRewardBlock, accTokenPerShare: 0, balance: 0, depositFeeBP: _depositFeeBP, harvestInterval: _harvestInterval, withdrawLockPeriod: _withdrawLockPeriod })); } function set(uint256 _pid, uint256 _allocPoint, uint16 _depositFeeBP, uint256 _harvestInterval, bool _withUpdate, uint256 _withdrawLockPeriod ) external onlyOwner { require(_depositFeeBP <= 400, "set: invalid deposit fee basis points"); require(_withdrawLockPeriod <= 90 days, "withdraw lock must be less than 90 days"); require(_harvestInterval <= 90 days, "set: invalid harvest interval"); if (_withUpdate) { massUpdatePools(); } totalAllocPoint = totalAllocPoint.sub(poolInfo[_pid].allocPoint).add(_allocPoint); poolInfo[_pid].allocPoint = _allocPoint; poolInfo[_pid].depositFeeBP = _depositFeeBP; poolInfo[_pid].harvestInterval = _harvestInterval; poolInfo[_pid].withdrawLockPeriod = _withdrawLockPeriod; } // Return reward multiplier over the given _from to _to block. function getMultiplier(uint256 _from, uint256 _to) public view returns (uint256) { if( treasure == 0 ){ // if contract has no balance, stop emission. return 0; } return _to.sub(_from).mul(BONUS_MULTIPLIER); } function pendingToken(uint256 _pid, address _user) public view returns (uint256) { PoolInfo storage pool = poolInfo[_pid]; UserInfo storage user = userInfo[_pid][_user]; uint256 accTokenPerShare = pool.accTokenPerShare; uint256 lpSupply = pool.balance; uint256 myBlock = (block.number <= endBlock ) ? block.number : endBlock; if (myBlock > pool.lastRewardBlock && lpSupply != 0 ) { uint256 multiplier = getMultiplier(pool.lastRewardBlock, myBlock); uint256 tokenReward = multiplier.mul(tokenPerBlock).mul(pool.allocPoint).div(totalAllocPoint); accTokenPerShare = accTokenPerShare.add(tokenReward.mul(1e12).div(lpSupply)); } uint256 pending = user.amount.mul(accTokenPerShare).div(1e12).sub(user.rewardDebt); return pending.add(user.rewardLockedUp); } function canHarvest(uint256 _pid, address _user) public view returns (bool) { UserInfo storage user = userInfo[_pid][_user]; return block.timestamp >= user.nextHarvestUntil; } // Update reward variables for all pools. Be careful of gas spending! function massUpdatePools() public { uint256 length = poolInfo.length; for (uint256 pid = 0; pid < length; ++pid) { updatePool(pid); } } // Update reward variables of the given pool to be up-to-date. function updatePool(uint256 _pid) public { PoolInfo storage pool = poolInfo[_pid]; uint256 myBlock = (block.number <= endBlock ) ? block.number : endBlock; if (myBlock <= pool.lastRewardBlock) { return; } uint256 lpSupply = pool.balance; if (lpSupply == 0 || pool.allocPoint == 0) { pool.lastRewardBlock = myBlock; return; } uint256 multiplier = getMultiplier(pool.lastRewardBlock, myBlock); uint256 tokenReward = multiplier.mul(tokenPerBlock).mul(pool.allocPoint).div(totalAllocPoint); mint(address(this), tokenReward); pool.accTokenPerShare = pool.accTokenPerShare.add(tokenReward.mul(1e12).div(lpSupply)); pool.lastRewardBlock = myBlock; } function deposit(uint256 _pid, uint256 _amount, address _referrer) external nonReentrant { PoolInfo storage pool = poolInfo[_pid]; UserInfo storage user = userInfo[_pid][msg.sender]; updatePool(_pid); if (_amount > 0 && address(tokenReferral) != address(0) && _referrer != address(0) && _referrer != msg.sender) { tokenReferral.recordReferral(msg.sender, _referrer); } payOrLockupPendingToken(_pid); if (_amount > 0) { uint256 oldBalance = pool.lpToken.balanceOf(address(this)); pool.lpToken.safeTransferFrom(address(msg.sender), address(this), _amount); uint256 newBalance = pool.lpToken.balanceOf(address(this)); _amount = newBalance.sub(oldBalance); pool.balance = pool.balance.add(_amount); if (pool.depositFeeBP > 0) { uint256 depositFee = _amount.mul(pool.depositFeeBP).div(10000); pool.lpToken.safeTransfer(feeAddress, depositFee); user.amount = user.amount.add(_amount).sub(depositFee); } else { user.amount = user.amount.add(_amount); } user.lastDepositTime = block.timestamp; } user.rewardDebt = user.amount.mul(pool.accTokenPerShare).div(1e12); emit Deposit(msg.sender, _pid, _amount); } function withdraw(uint256 _pid, uint256 _amount) external nonReentrant { PoolInfo storage pool = poolInfo[_pid]; UserInfo storage user = userInfo[_pid][msg.sender]; require(user.amount >= _amount, "withdraw: not good"); updatePool(_pid); payOrLockupPendingToken(_pid); if (_amount > 0) { // check withdraw is locked: if( pool.withdrawLockPeriod > 0){ bool isLocked = block.timestamp < user.lastDepositTime + pool.withdrawLockPeriod; require( isLocked == false, "withdraw still locked" ); } user.amount = user.amount.sub(_amount); pool.balance = pool.balance.sub(_amount); pool.lpToken.safeTransfer(address(msg.sender), _amount); } user.rewardDebt = user.amount.mul(pool.accTokenPerShare).div(1e12); emit Withdraw(msg.sender, _pid, _amount); } // Withdraw without caring about rewards. EMERGENCY ONLY. function emergencyWithdraw(uint256 _pid) external nonReentrant { PoolInfo storage pool = poolInfo[_pid]; UserInfo storage user = userInfo[_pid][msg.sender]; uint256 amount = user.amount; pool.balance = pool.balance.sub(amount); user.amount = 0; user.rewardDebt = 0; user.rewardLockedUp = 0; user.nextHarvestUntil = 0; pool.lpToken.safeTransfer(address(msg.sender), amount); emit EmergencyWithdraw(msg.sender, _pid, amount); } function payOrLockupPendingToken(uint256 _pid) internal { PoolInfo storage pool = poolInfo[_pid]; UserInfo storage user = userInfo[_pid][msg.sender]; if (user.nextHarvestUntil == 0) { user.nextHarvestUntil = block.timestamp.add(pool.harvestInterval); } uint256 pending = user.amount.mul(pool.accTokenPerShare).div(1e12).sub(user.rewardDebt); if (canHarvest(_pid, msg.sender)) { if (pending > 0 || user.rewardLockedUp > 0) { uint256 totalRewards = pending.add(user.rewardLockedUp); // reset lockup totalLockedUpRewards = totalLockedUpRewards.sub(user.rewardLockedUp); user.rewardLockedUp = 0; user.nextHarvestUntil = block.timestamp.add(pool.harvestInterval); // send rewards safeTokenTransfer(msg.sender, totalRewards); payReferralCommission(msg.sender, totalRewards); } } else if (pending > 0) { user.rewardLockedUp = user.rewardLockedUp.add(pending); totalLockedUpRewards = totalLockedUpRewards.add(pending); emit RewardLockedUp(msg.sender, _pid, pending); } } // Update dev address by the previous dev. function setDevAddress(address _devAddress) external { require(msg.sender == devAddress, "setDevAddress: FORBIDDEN"); require(_devAddress != address(0), "setDevAddress: ZERO"); devAddress = _devAddress; } function setFeeAddress(address _feeAddress) external { require(msg.sender == feeAddress, "setFeeAddress: FORBIDDEN"); require(_feeAddress != address(0), "setFeeAddress: ZERO"); feeAddress = _feeAddress; } // Update the token referral contract address by the owner function setTokenReferral(ITokenReferral _tokenReferral) external onlyOwner { tokenReferral = _tokenReferral; } // Update referral commission rate by the owner function setReferralCommissionRate(uint16 _referralCommissionRate) external onlyOwner { require(_referralCommissionRate <= MAXIMUM_REFERRAL_COMMISSION_RATE, "setReferralCommissionRate: invalid referral commission rate basis points"); referralCommissionRate = _referralCommissionRate; } // Pay referral commission to the referrer who referred this user. function payReferralCommission(address _user, uint256 _pending) internal { if (address(tokenReferral) != address(0) && referralCommissionRate > 0) { address referrer = tokenReferral.getReferrer(_user); uint256 commissionAmount = _pending.mul(referralCommissionRate).div(10000); if (referrer != address(0) && commissionAmount > 0) { mint(referrer, commissionAmount); tokenReferral.recordReferralCommission(referrer, commissionAmount); emit ReferralCommissionPaid(_user, referrer, commissionAmount); } } } uint256 public treasure; uint256 public allocated; uint256 public blocks; event Mint(address to, uint256 amount); function addBalance(uint256 _amount, uint256 _endBlock) external onlyOwner { require( _amount > 0 , "err _amount=0"); require( _endBlock > block.number , "err start<=block"); uint256 oldBalance = token.balanceOf(address(this)); token.safeTransferFrom(msg.sender, address(this), _amount); uint256 newBalance = token.balanceOf(address(this)); _amount = newBalance.sub(oldBalance); endBlock = _endBlock; treasure = treasure.add(_amount); blocks = _endBlock - block.number; tokenPerBlock = treasure.div(blocks); startBlock = block.number; } function mint(address to, uint256 amount ) internal { if( amount > treasure ){ // treasure is 0, stop emission. tokenPerBlock = 0; amount = treasure; // last ming } treasure = treasure.sub(amount); allocated = allocated.add(amount); emit Mint(to, amount); } // Safe token transfer function, just in case if rounding error causes pool to not have enough Tokens function safeTokenTransfer(address _to, uint256 _amount) internal { uint256 tokenBal = token.balanceOf(address(this)); if (_amount > tokenBal) { token.transfer(_to, tokenBal); } else { token.transfer(_to, _amount); } } function getBlock() public view returns (uint256) { return block.number; } function recoverTreasure( IBEP20 recoverToken, uint256 amount) external onlyOwner{ uint256 length = poolInfo.length; for (uint256 pid = 1; pid < length; ++pid) { require(recoverToken != poolInfo[pid].lpToken,"can't transfer lp"); } require(block.number > endBlock, "can recover only farming end."); // allow treasure recover unused/lost funds recoverToken.transfer(devAddress, amount); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"contract IBEP20","name":"_token","type":"address"},{"internalType":"uint256","name":"_startBlock","type":"uint256"},{"internalType":"uint256","name":"_tokenPerBlock","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"EmergencyWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"previousAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"EmissionRateUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"referrer","type":"address"},{"indexed":false,"internalType":"uint256","name":"commissionAmount","type":"uint256"}],"name":"ReferralCommissionPaid","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountLockedUp","type":"uint256"}],"name":"RewardLockedUp","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[],"name":"BONUS_MULTIPLIER","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAXIMUM_REFERRAL_COMMISSION_RATE","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_allocPoint","type":"uint256"},{"internalType":"contract IBEP20","name":"_lpToken","type":"address"},{"internalType":"uint16","name":"_depositFeeBP","type":"uint16"},{"internalType":"uint256","name":"_harvestInterval","type":"uint256"},{"internalType":"bool","name":"_withUpdate","type":"bool"},{"internalType":"uint256","name":"_withdrawLockPeriod","type":"uint256"}],"name":"add","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_endBlock","type":"uint256"}],"name":"addBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"allocated","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"address","name":"_user","type":"address"}],"name":"canHarvest","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address","name":"_referrer","type":"address"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"emergencyWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"endBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_from","type":"uint256"},{"internalType":"uint256","name":"_to","type":"uint256"}],"name":"getMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"massUpdatePools","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"address","name":"_user","type":"address"}],"name":"pendingToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"poolInfo","outputs":[{"internalType":"contract IBEP20","name":"lpToken","type":"address"},{"internalType":"uint256","name":"allocPoint","type":"uint256"},{"internalType":"uint256","name":"lastRewardBlock","type":"uint256"},{"internalType":"uint256","name":"accTokenPerShare","type":"uint256"},{"internalType":"uint16","name":"depositFeeBP","type":"uint16"},{"internalType":"uint256","name":"harvestInterval","type":"uint256"},{"internalType":"uint256","name":"withdrawLockPeriod","type":"uint256"},{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"poolLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IBEP20","name":"recoverToken","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"recoverTreasure","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"referralCommissionRate","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"_allocPoint","type":"uint256"},{"internalType":"uint16","name":"_depositFeeBP","type":"uint16"},{"internalType":"uint256","name":"_harvestInterval","type":"uint256"},{"internalType":"bool","name":"_withUpdate","type":"bool"},{"internalType":"uint256","name":"_withdrawLockPeriod","type":"uint256"}],"name":"set","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_devAddress","type":"address"}],"name":"setDevAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_feeAddress","type":"address"}],"name":"setFeeAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_referralCommissionRate","type":"uint16"}],"name":"setReferralCommissionRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ITokenReferral","name":"_tokenReferral","type":"address"}],"name":"setTokenReferral","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"contract IBEP20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenPerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenReferral","outputs":[{"internalType":"contract ITokenReferral","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalAllocPoint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalLockedUpRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasure","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"updatePool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"userInfo","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"rewardDebt","type":"uint256"},{"internalType":"uint256","name":"rewardLockedUp","type":"uint256"},{"internalType":"uint256","name":"nextHarvestUntil","type":"uint256"},{"internalType":"uint256","name":"lastDepositTime","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405260006008556064600c60146101000a81548161ffff021916908361ffff1602179055503480156200003457600080fd5b506040516200465238038062004652833981810160405260608110156200005a57600080fd5b81019080805190602001909291908051906020019092919080519060200190929190505050600062000091620002d860201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506001808190555082600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160098190555080600581905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156200020f57600080fd5b505afa15801562000224573d6000803e3d6000fd5b505050506040513d60208110156200023b57600080fd5b81019080805190602001909291905050505033600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050620002e0565b600033905090565b61436280620002f06000396000f3fe608060405234801561001057600080fd5b50600436106102325760003560e01c80635f8b6ff011610130578063967ff23e116100b8578063d0d41fe11161007c578063d0d41fe114610994578063d30ef61b146109d8578063e520fc7e146109fa578063f2fde38b14610a18578063fc0c546a14610a5c57610232565b8063967ff23e14610856578063a40398a614610874578063b304b2e1146108ac578063c816a54c146108ca578063caa84cd11461091857610232565b80638aa28550116100ff5780638aa28550146106e25780638da5cb5b146107005780638dbb1e3a146107345780638dbdbe6d1461078057806393f1a40b146107d857610232565b80635f8b6ff014610646578063630b5ba11461068a578063715018a6146106945780638705fcd41461069e57610232565b806341443304116101be57806348cd4cb11161018257806348cd4cb11461053857806348e43af41461055657806351eb05a6146105b85780635312ea8e146105e657806355dbc8261461061457610232565b8063414433041461046e5780634198709a146104a2578063441a3e70146104c0578063474fa630146104f857806348b22bfb1461051657610232565b80632e6c998d116102055780632e6c998d1461031e5780632e97766d146103825780632fb76f24146103a05780633ad10ef614610406578063412753581461043a57610232565b8063081e3eda14610237578063083c6323146102555780631526fe271461027357806317caf6f114610300575b600080fd5b61023f610a90565b6040518082815260200191505060405180910390f35b61025d610a9d565b6040518082815260200191505060405180910390f35b61029f6004803603602081101561028957600080fd5b8101908080359060200190929190505050610aa3565b604051808973ffffffffffffffffffffffffffffffffffffffff1681526020018881526020018781526020018681526020018561ffff1681526020018481526020018381526020018281526020019850505050505050505060405180910390f35b610308610b26565b6040518082815260200191505060405180910390f35b61036a6004803603604081101561033457600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b2c565b60405180821515815260200191505060405180910390f35b61038a610b92565b6040518082815260200191505060405180910390f35b610404600480360360c08110156103b657600080fd5b810190808035906020019092919080359060200190929190803561ffff1690602001909291908035906020019092919080351515906020019092919080359060200190929190505050610b9a565b005b61040e610e81565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610442610ea7565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610476610ecd565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104aa610ef3565b6040518082815260200191505060405180910390f35b6104f6600480360360408110156104d657600080fd5b810190808035906020019092919080359060200190929190505050610ef9565b005b610500611240565b6040518082815260200191505060405180910390f35b61051e611246565b604051808261ffff16815260200191505060405180910390f35b61054061124c565b6040518082815260200191505060405180910390f35b6105a26004803603604081101561056c57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611252565b6040518082815260200191505060405180910390f35b6105e4600480360360208110156105ce57600080fd5b810190808035906020019092919050505061140c565b005b610612600480360360208110156105fc57600080fd5b8101908080359060200190929190505050611540565b005b6106446004803603602081101561062a57600080fd5b81019080803561ffff16906020019092919050505061172f565b005b6106886004803603602081101561065c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611861565b005b610692611954565b005b61069c611981565b005b6106e0600480360360208110156106b457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611aee565b005b6106ea611c98565b6040518082815260200191505060405180910390f35b610708611c9d565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61076a6004803603604081101561074a57600080fd5b810190808035906020019092919080359060200190929190505050611cc6565b6040518082815260200191505060405180910390f35b6107d66004803603606081101561079657600080fd5b810190808035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d0a565b005b610824600480360360408110156107ee57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612394565b604051808681526020018581526020018481526020018381526020018281526020019550505050505060405180910390f35b61085e6123d7565b6040518082815260200191505060405180910390f35b6108aa6004803603604081101561088a57600080fd5b8101908080359060200190929190803590602001909291905050506123dd565b005b6108b46127c0565b6040518082815260200191505060405180910390f35b610916600480360360408110156108e057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506127c6565b005b610992600480360360c081101561092e57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803561ffff1690602001909291908035906020019092919080351515906020019092919080359060200190929190505050612ac5565b005b6109d6600480360360208110156109aa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612ebe565b005b6109e0613068565b604051808261ffff16815260200191505060405180910390f35b610a0261307c565b6040518082815260200191505060405180910390f35b610a5a60048036036020811015610a2e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613082565b005b610a64613274565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000600680549050905090565b600a5481565b60068181548110610ab057fe5b90600052602060002090600802016000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030154908060040160009054906101000a900461ffff16908060050154908060060154908060070154905088565b60085481565b6000806007600085815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050806003015442101591505092915050565b600043905090565b610ba261329a565b73ffffffffffffffffffffffffffffffffffffffff16610bc0611c9d565b73ffffffffffffffffffffffffffffffffffffffff1614610c49576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6101908461ffff161115610ca8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806143086025913960400191505060405180910390fd5b6276a700811115610d04576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602781526020018061429a6027913960400191505060405180910390fd5b6276a700831115610d7d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f7365743a20696e76616c6964206861727665737420696e74657276616c00000081525060200191505060405180910390fd5b8115610d8c57610d8b611954565b5b610dd185610dc360068981548110610da057fe5b9060005260206000209060080201600101546008546132a290919063ffffffff16565b61332590919063ffffffff16565b6008819055508460068781548110610de557fe5b9060005260206000209060080201600101819055508360068781548110610e0857fe5b906000526020600020906008020160040160006101000a81548161ffff021916908361ffff1602179055508260068781548110610e4157fe5b9060005260206000209060080201600501819055508060068781548110610e6457fe5b906000526020600020906008020160060181905550505050505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b60026001541415610f72576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b6002600181905550600060068381548110610f8957fe5b9060005260206000209060080201905060006007600085815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508281600001541015611067576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f77697468647261773a206e6f7420676f6f64000000000000000000000000000081525060200191505060405180910390fd5b6110708461140c565b611079846133ad565b60008311156111aa5760008260060154111561111c576000826006015482600401540142109050600015158115151461111a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f7769746864726177207374696c6c206c6f636b6564000000000000000000000081525060200191505060405180910390fd5b505b6111338382600001546132a290919063ffffffff16565b81600001819055506111528383600701546132a290919063ffffffff16565b82600701819055506111a933848460000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166135d89092919063ffffffff16565b5b6111dc64e8d4a510006111ce8460030154846000015461367a90919063ffffffff16565b61370090919063ffffffff16565b8160010181905550833373ffffffffffffffffffffffffffffffffffffffff167ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b568856040518082815260200191505060405180910390a35050600180819055505050565b600b5481565b6103e881565b60095481565b6000806006848154811061126257fe5b9060005260206000209060080201905060006007600086815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000826003015490506000836007015490506000600a544311156112ec57600a546112ee565b435b9050846002015481118015611304575060008214155b1561139f576000611319866002015483611cc6565b9050600061135c60085461134e89600101546113406005548761367a90919063ffffffff16565b61367a90919063ffffffff16565b61370090919063ffffffff16565b905061139a61138b8561137d64e8d4a510008561367a90919063ffffffff16565b61370090919063ffffffff16565b8661332590919063ffffffff16565b945050505b60006113e585600101546113d764e8d4a510006113c9888a6000015461367a90919063ffffffff16565b61370090919063ffffffff16565b6132a290919063ffffffff16565b90506113fe85600201548261332590919063ffffffff16565b965050505050505092915050565b60006006828154811061141b57fe5b906000526020600020906008020190506000600a5443111561143f57600a54611441565b435b90508160020154811161145557505061153d565b6000826007015490506000811480611471575060008360010154145b156114875781836002018190555050505061153d565b6000611497846002015484611cc6565b905060006114da6008546114cc87600101546114be6005548761367a90919063ffffffff16565b61367a90919063ffffffff16565b61370090919063ffffffff16565b90506114e63082613789565b6115266115138461150564e8d4a510008561367a90919063ffffffff16565b61370090919063ffffffff16565b866003015461332590919063ffffffff16565b856003018190555083856002018190555050505050505b50565b600260015414156115b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60026001819055506000600682815481106115d057fe5b9060005260206000209060080201905060006007600084815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000816000015490506116548184600701546132a290919063ffffffff16565b8360070181905550600082600001819055506000826001018190555060008260020181905550600082600301819055506116d333828560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166135d89092919063ffffffff16565b833373ffffffffffffffffffffffffffffffffffffffff167fbb757047c2b5f3974fe26b7c10f732e7bce710b0952a71082702781e62ae0595836040518082815260200191505060405180910390a35050506001808190555050565b61173761329a565b73ffffffffffffffffffffffffffffffffffffffff16611755611c9d565b73ffffffffffffffffffffffffffffffffffffffff16146117de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6103e861ffff168161ffff161115611841576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260488152602001806142026048913960600191505060405180910390fd5b80600c60146101000a81548161ffff021916908361ffff16021790555050565b61186961329a565b73ffffffffffffffffffffffffffffffffffffffff16611887611c9d565b73ffffffffffffffffffffffffffffffffffffffff1614611910576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600680549050905060005b8181101561197d576119728161140c565b806001019050611961565b5050565b61198961329a565b73ffffffffffffffffffffffffffffffffffffffff166119a7611c9d565b73ffffffffffffffffffffffffffffffffffffffff1614611a30576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611bb1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f736574466565416464726573733a20464f5242494444454e000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611c54576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f736574466565416464726573733a205a45524f0000000000000000000000000081525060200191505060405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080600d541415611cdb5760009050611d04565b611d016001611cf385856132a290919063ffffffff16565b61367a90919063ffffffff16565b90505b92915050565b60026001541415611d83576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b6002600181905550600060068481548110611d9a57fe5b9060005260206000209060080201905060006007600086815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050611e078561140c565b600084118015611e665750600073ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b8015611e9f5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611ed757503373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f9e57600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630c7f7b6b33856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b158015611f8557600080fd5b505af1158015611f99573d6000803e3d6000fd5b505050505b611fa7856133ad565b60008411156122fd5760008260000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561203d57600080fd5b505afa158015612051573d6000803e3d6000fd5b505050506040513d602081101561206757600080fd5b810190808051906020019092919050505090506120cb3330878660000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16613830909392919063ffffffff16565b60008360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561215857600080fd5b505afa15801561216c573d6000803e3d6000fd5b505050506040513d602081101561218257600080fd5b810190808051906020019092919050505090506121a882826132a290919063ffffffff16565b95506121c186856007015461332590919063ffffffff16565b846007018190555060008460040160009054906101000a900461ffff1661ffff1611156122d15760006122276127106122198760040160009054906101000a900461ffff1661ffff168a61367a90919063ffffffff16565b61370090919063ffffffff16565b905061229a600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828760000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166135d89092919063ffffffff16565b6122c3816122b589876000015461332590919063ffffffff16565b6132a290919063ffffffff16565b8460000181905550506122f1565b6122e886846000015461332590919063ffffffff16565b83600001819055505b42836004018190555050505b61232f64e8d4a510006123218460030154846000015461367a90919063ffffffff16565b61370090919063ffffffff16565b8160010181905550843373ffffffffffffffffffffffffffffffffffffffff167f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a15866040518082815260200191505060405180910390a3505060018081905550505050565b6007602052816000526040600020602052806000526040600020600091509150508060000154908060010154908060020154908060030154908060040154905085565b600f5481565b6123e561329a565b73ffffffffffffffffffffffffffffffffffffffff16612403611c9d565b73ffffffffffffffffffffffffffffffffffffffff161461248c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008211612502576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f657272205f616d6f756e743d300000000000000000000000000000000000000081525060200191505060405180910390fd5b438111612577576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f6572722073746172743c3d626c6f636b0000000000000000000000000000000081525060200191505060405180910390fd5b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561260257600080fd5b505afa158015612616573d6000803e3d6000fd5b505050506040513d602081101561262c57600080fd5b8101908080519060200190929190505050905061268e333085600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16613830909392919063ffffffff16565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561271957600080fd5b505afa15801561272d573d6000803e3d6000fd5b505050506040513d602081101561274357600080fd5b8101908080519060200190929190505050905061276982826132a290919063ffffffff16565b935082600a8190555061278784600d5461332590919063ffffffff16565b600d81905550438303600f819055506127ad600f54600d5461370090919063ffffffff16565b6005819055504360098190555050505050565b600e5481565b6127ce61329a565b73ffffffffffffffffffffffffffffffffffffffff166127ec611c9d565b73ffffffffffffffffffffffffffffffffffffffff1614612875576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600060068054905090506000600190505b81811015612979576006818154811061289b57fe5b906000526020600020906008020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561296e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f63616e2774207472616e73666572206c7000000000000000000000000000000081525060200191505060405180910390fd5b806001019050612886565b50600a5443116129f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f63616e207265636f766572206f6e6c79206661726d696e6720656e642e00000081525060200191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015612a8457600080fd5b505af1158015612a98573d6000803e3d6000fd5b505050506040513d6020811015612aae57600080fd5b810190808051906020019092919050505050505050565b612acd61329a565b73ffffffffffffffffffffffffffffffffffffffff16612aeb611c9d565b73ffffffffffffffffffffffffffffffffffffffff1614612b74576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6101908461ffff161115612bd3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806141dd6025913960400191505060405180910390fd5b6276a700811115612c2f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602781526020018061429a6027913960400191505060405180910390fd5b6276a700831115612ca8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f6164643a20696e76616c6964206861727665737420696e74657276616c00000081525060200191505060405180910390fd5b8115612cb757612cb6611954565b5b8473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612d1e57600080fd5b505afa158015612d32573d6000803e3d6000fd5b505050506040513d6020811015612d4857600080fd5b81019080805190602001909291905050505060006009544311612d6d57600954612d6f565b435b9050612d868760085461332590919063ffffffff16565b60088190555060066040518061010001604052808873ffffffffffffffffffffffffffffffffffffffff168152602001898152602001838152602001600081526020018761ffff1681526020018681526020018481526020016000815250908060018154018082558091505060019003906000526020600020906008020160009091909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010155604082015181600201556060820151816003015560808201518160040160006101000a81548161ffff021916908361ffff16021790555060a0820151816005015560c0820151816006015560e08201518160070155505050505050505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612f81576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f736574446576416464726573733a20464f5242494444454e000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415613024576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f736574446576416464726573733a205a45524f0000000000000000000000000081525060200191505060405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600c60149054906101000a900461ffff1681565b600d5481565b61308a61329a565b73ffffffffffffffffffffffffffffffffffffffff166130a8611c9d565b73ffffffffffffffffffffffffffffffffffffffff1614613131576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156131b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806142746026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b60008282111561331a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b818303905092915050565b6000808284019050838110156133a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000600682815481106133bc57fe5b9060005260206000209060080201905060006007600084815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008160030154141561344d5761344482600501544261332590919063ffffffff16565b81600301819055505b6000613497826001015461348964e8d4a5100061347b8760030154876000015461367a90919063ffffffff16565b61370090919063ffffffff16565b6132a290919063ffffffff16565b90506134a38433610b2c565b1561353e5760008111806134bb575060008260020154115b156135395760006134d983600201548361332590919063ffffffff16565b90506134f48360020154600b546132a290919063ffffffff16565b600b819055506000836002018190555061351b84600501544261332590919063ffffffff16565b836003018190555061352d33826138f1565b6135373382613b6a565b505b6135d2565b60008111156135d15761355e81836002015461332590919063ffffffff16565b826002018190555061357b81600b5461332590919063ffffffff16565b600b81905550833373ffffffffffffffffffffffffffffffffffffffff167fee470483107f579a55c754fa00613c45a9a3b617a418b39cb0be97e5381ba7c1836040518082815260200191505060405180910390a35b5b50505050565b6136758363a9059cbb60e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050613e4d565b505050565b60008083141561368d57600090506136fa565b600082840290508284828161369e57fe5b04146136f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806142e76021913960400191505060405180910390fd5b809150505b92915050565b6000808211613777576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060200191505060405180910390fd5b81838161378057fe5b04905092915050565b600d548111156137a1576000600581905550600d5490505b6137b681600d546132a290919063ffffffff16565b600d819055506137d181600e5461332590919063ffffffff16565b600e819055507f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968858282604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15050565b6138eb846323b872dd60e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050613e4d565b50505050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561397c57600080fd5b505afa158015613990573d6000803e3d6000fd5b505050506040513d60208110156139a657600080fd5b8101908080519060200190929190505050905080821115613a9557600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015613a5457600080fd5b505af1158015613a68573d6000803e3d6000fd5b505050506040513d6020811015613a7e57600080fd5b810190808051906020019092919050505050613b65565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015613b2857600080fd5b505af1158015613b3c573d6000803e3d6000fd5b505050506040513d6020811015613b5257600080fd5b8101908080519060200190929190505050505b505050565b600073ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158015613bdd57506000600c60149054906101000a900461ffff1661ffff16115b15613e49576000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634a9fefc7846040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015613c6d57600080fd5b505afa158015613c81573d6000803e3d6000fd5b505050506040513d6020811015613c9757600080fd5b810190808051906020019092919050505090506000613ce7612710613cd9600c60149054906101000a900461ffff1661ffff168661367a90919063ffffffff16565b61370090919063ffffffff16565b9050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015613d265750600081115b15613e4657613d358282613789565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dc1694b883836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015613dc857600080fd5b505af1158015613ddc573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f86ddab457291316e0f5496737e5ca67c4037234c32c3be04c48ae96186893a7b836040518082815260200191505060405180910390a35b50505b5050565b6060613eaf826040518060400160405280602081526020017f5361666542455032303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16613f3c9092919063ffffffff16565b9050600081511115613f3757808060200190516020811015613ed057600080fd5b8101908080519060200190929190505050613f36576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a81526020018061424a602a913960400191505060405180910390fd5b5b505050565b6060613f4b8484600085613f54565b90509392505050565b606082471015613faf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806142c16026913960400191505060405180910390fd5b613fb8856140fd565b61402a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081525060200191505060405180910390fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b6020831061407a5780518252602082019150602081019050602083039250614057565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146140dc576040519150601f19603f3d011682016040523d82523d6000602084013e6140e1565b606091505b50915091506140f1828286614110565b92505050949350505050565b600080823b905060008111915050919050565b60608315614120578290506141d5565b6000835111156141335782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561419a57808201518184015260208101905061417f565b50505050905090810190601f1680156141c75780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b939250505056fe6164643a20696e76616c6964206465706f7369742066656520626173697320706f696e7473736574526566657272616c436f6d6d697373696f6e526174653a20696e76616c696420726566657272616c20636f6d6d697373696f6e207261746520626173697320706f696e74735361666542455032303a204245503230206f7065726174696f6e20646964206e6f7420737563636565644f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573737769746864726177206c6f636b206d757374206265206c657373207468616e2039302064617973416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f777365743a20696e76616c6964206465706f7369742066656520626173697320706f696e7473a2646970667358221220a5573015ee6810e9d39db445b6ccedf860897541b944ff64b074d7bac65b0f5864736f6c634300060c00330000000000000000000000005b6a35c90d7f7d25899ee52f1aa63344a5be786f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106102325760003560e01c80635f8b6ff011610130578063967ff23e116100b8578063d0d41fe11161007c578063d0d41fe114610994578063d30ef61b146109d8578063e520fc7e146109fa578063f2fde38b14610a18578063fc0c546a14610a5c57610232565b8063967ff23e14610856578063a40398a614610874578063b304b2e1146108ac578063c816a54c146108ca578063caa84cd11461091857610232565b80638aa28550116100ff5780638aa28550146106e25780638da5cb5b146107005780638dbb1e3a146107345780638dbdbe6d1461078057806393f1a40b146107d857610232565b80635f8b6ff014610646578063630b5ba11461068a578063715018a6146106945780638705fcd41461069e57610232565b806341443304116101be57806348cd4cb11161018257806348cd4cb11461053857806348e43af41461055657806351eb05a6146105b85780635312ea8e146105e657806355dbc8261461061457610232565b8063414433041461046e5780634198709a146104a2578063441a3e70146104c0578063474fa630146104f857806348b22bfb1461051657610232565b80632e6c998d116102055780632e6c998d1461031e5780632e97766d146103825780632fb76f24146103a05780633ad10ef614610406578063412753581461043a57610232565b8063081e3eda14610237578063083c6323146102555780631526fe271461027357806317caf6f114610300575b600080fd5b61023f610a90565b6040518082815260200191505060405180910390f35b61025d610a9d565b6040518082815260200191505060405180910390f35b61029f6004803603602081101561028957600080fd5b8101908080359060200190929190505050610aa3565b604051808973ffffffffffffffffffffffffffffffffffffffff1681526020018881526020018781526020018681526020018561ffff1681526020018481526020018381526020018281526020019850505050505050505060405180910390f35b610308610b26565b6040518082815260200191505060405180910390f35b61036a6004803603604081101561033457600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b2c565b60405180821515815260200191505060405180910390f35b61038a610b92565b6040518082815260200191505060405180910390f35b610404600480360360c08110156103b657600080fd5b810190808035906020019092919080359060200190929190803561ffff1690602001909291908035906020019092919080351515906020019092919080359060200190929190505050610b9a565b005b61040e610e81565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610442610ea7565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610476610ecd565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104aa610ef3565b6040518082815260200191505060405180910390f35b6104f6600480360360408110156104d657600080fd5b810190808035906020019092919080359060200190929190505050610ef9565b005b610500611240565b6040518082815260200191505060405180910390f35b61051e611246565b604051808261ffff16815260200191505060405180910390f35b61054061124c565b6040518082815260200191505060405180910390f35b6105a26004803603604081101561056c57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611252565b6040518082815260200191505060405180910390f35b6105e4600480360360208110156105ce57600080fd5b810190808035906020019092919050505061140c565b005b610612600480360360208110156105fc57600080fd5b8101908080359060200190929190505050611540565b005b6106446004803603602081101561062a57600080fd5b81019080803561ffff16906020019092919050505061172f565b005b6106886004803603602081101561065c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611861565b005b610692611954565b005b61069c611981565b005b6106e0600480360360208110156106b457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611aee565b005b6106ea611c98565b6040518082815260200191505060405180910390f35b610708611c9d565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61076a6004803603604081101561074a57600080fd5b810190808035906020019092919080359060200190929190505050611cc6565b6040518082815260200191505060405180910390f35b6107d66004803603606081101561079657600080fd5b810190808035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d0a565b005b610824600480360360408110156107ee57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612394565b604051808681526020018581526020018481526020018381526020018281526020019550505050505060405180910390f35b61085e6123d7565b6040518082815260200191505060405180910390f35b6108aa6004803603604081101561088a57600080fd5b8101908080359060200190929190803590602001909291905050506123dd565b005b6108b46127c0565b6040518082815260200191505060405180910390f35b610916600480360360408110156108e057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506127c6565b005b610992600480360360c081101561092e57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803561ffff1690602001909291908035906020019092919080351515906020019092919080359060200190929190505050612ac5565b005b6109d6600480360360208110156109aa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612ebe565b005b6109e0613068565b604051808261ffff16815260200191505060405180910390f35b610a0261307c565b6040518082815260200191505060405180910390f35b610a5a60048036036020811015610a2e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613082565b005b610a64613274565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000600680549050905090565b600a5481565b60068181548110610ab057fe5b90600052602060002090600802016000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030154908060040160009054906101000a900461ffff16908060050154908060060154908060070154905088565b60085481565b6000806007600085815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050806003015442101591505092915050565b600043905090565b610ba261329a565b73ffffffffffffffffffffffffffffffffffffffff16610bc0611c9d565b73ffffffffffffffffffffffffffffffffffffffff1614610c49576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6101908461ffff161115610ca8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806143086025913960400191505060405180910390fd5b6276a700811115610d04576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602781526020018061429a6027913960400191505060405180910390fd5b6276a700831115610d7d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f7365743a20696e76616c6964206861727665737420696e74657276616c00000081525060200191505060405180910390fd5b8115610d8c57610d8b611954565b5b610dd185610dc360068981548110610da057fe5b9060005260206000209060080201600101546008546132a290919063ffffffff16565b61332590919063ffffffff16565b6008819055508460068781548110610de557fe5b9060005260206000209060080201600101819055508360068781548110610e0857fe5b906000526020600020906008020160040160006101000a81548161ffff021916908361ffff1602179055508260068781548110610e4157fe5b9060005260206000209060080201600501819055508060068781548110610e6457fe5b906000526020600020906008020160060181905550505050505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b60026001541415610f72576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b6002600181905550600060068381548110610f8957fe5b9060005260206000209060080201905060006007600085815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508281600001541015611067576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f77697468647261773a206e6f7420676f6f64000000000000000000000000000081525060200191505060405180910390fd5b6110708461140c565b611079846133ad565b60008311156111aa5760008260060154111561111c576000826006015482600401540142109050600015158115151461111a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f7769746864726177207374696c6c206c6f636b6564000000000000000000000081525060200191505060405180910390fd5b505b6111338382600001546132a290919063ffffffff16565b81600001819055506111528383600701546132a290919063ffffffff16565b82600701819055506111a933848460000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166135d89092919063ffffffff16565b5b6111dc64e8d4a510006111ce8460030154846000015461367a90919063ffffffff16565b61370090919063ffffffff16565b8160010181905550833373ffffffffffffffffffffffffffffffffffffffff167ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b568856040518082815260200191505060405180910390a35050600180819055505050565b600b5481565b6103e881565b60095481565b6000806006848154811061126257fe5b9060005260206000209060080201905060006007600086815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000826003015490506000836007015490506000600a544311156112ec57600a546112ee565b435b9050846002015481118015611304575060008214155b1561139f576000611319866002015483611cc6565b9050600061135c60085461134e89600101546113406005548761367a90919063ffffffff16565b61367a90919063ffffffff16565b61370090919063ffffffff16565b905061139a61138b8561137d64e8d4a510008561367a90919063ffffffff16565b61370090919063ffffffff16565b8661332590919063ffffffff16565b945050505b60006113e585600101546113d764e8d4a510006113c9888a6000015461367a90919063ffffffff16565b61370090919063ffffffff16565b6132a290919063ffffffff16565b90506113fe85600201548261332590919063ffffffff16565b965050505050505092915050565b60006006828154811061141b57fe5b906000526020600020906008020190506000600a5443111561143f57600a54611441565b435b90508160020154811161145557505061153d565b6000826007015490506000811480611471575060008360010154145b156114875781836002018190555050505061153d565b6000611497846002015484611cc6565b905060006114da6008546114cc87600101546114be6005548761367a90919063ffffffff16565b61367a90919063ffffffff16565b61370090919063ffffffff16565b90506114e63082613789565b6115266115138461150564e8d4a510008561367a90919063ffffffff16565b61370090919063ffffffff16565b866003015461332590919063ffffffff16565b856003018190555083856002018190555050505050505b50565b600260015414156115b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60026001819055506000600682815481106115d057fe5b9060005260206000209060080201905060006007600084815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000816000015490506116548184600701546132a290919063ffffffff16565b8360070181905550600082600001819055506000826001018190555060008260020181905550600082600301819055506116d333828560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166135d89092919063ffffffff16565b833373ffffffffffffffffffffffffffffffffffffffff167fbb757047c2b5f3974fe26b7c10f732e7bce710b0952a71082702781e62ae0595836040518082815260200191505060405180910390a35050506001808190555050565b61173761329a565b73ffffffffffffffffffffffffffffffffffffffff16611755611c9d565b73ffffffffffffffffffffffffffffffffffffffff16146117de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6103e861ffff168161ffff161115611841576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260488152602001806142026048913960600191505060405180910390fd5b80600c60146101000a81548161ffff021916908361ffff16021790555050565b61186961329a565b73ffffffffffffffffffffffffffffffffffffffff16611887611c9d565b73ffffffffffffffffffffffffffffffffffffffff1614611910576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600680549050905060005b8181101561197d576119728161140c565b806001019050611961565b5050565b61198961329a565b73ffffffffffffffffffffffffffffffffffffffff166119a7611c9d565b73ffffffffffffffffffffffffffffffffffffffff1614611a30576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611bb1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f736574466565416464726573733a20464f5242494444454e000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611c54576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f736574466565416464726573733a205a45524f0000000000000000000000000081525060200191505060405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080600d541415611cdb5760009050611d04565b611d016001611cf385856132a290919063ffffffff16565b61367a90919063ffffffff16565b90505b92915050565b60026001541415611d83576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b6002600181905550600060068481548110611d9a57fe5b9060005260206000209060080201905060006007600086815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050611e078561140c565b600084118015611e665750600073ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b8015611e9f5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611ed757503373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f9e57600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630c7f7b6b33856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b158015611f8557600080fd5b505af1158015611f99573d6000803e3d6000fd5b505050505b611fa7856133ad565b60008411156122fd5760008260000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561203d57600080fd5b505afa158015612051573d6000803e3d6000fd5b505050506040513d602081101561206757600080fd5b810190808051906020019092919050505090506120cb3330878660000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16613830909392919063ffffffff16565b60008360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561215857600080fd5b505afa15801561216c573d6000803e3d6000fd5b505050506040513d602081101561218257600080fd5b810190808051906020019092919050505090506121a882826132a290919063ffffffff16565b95506121c186856007015461332590919063ffffffff16565b846007018190555060008460040160009054906101000a900461ffff1661ffff1611156122d15760006122276127106122198760040160009054906101000a900461ffff1661ffff168a61367a90919063ffffffff16565b61370090919063ffffffff16565b905061229a600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828760000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166135d89092919063ffffffff16565b6122c3816122b589876000015461332590919063ffffffff16565b6132a290919063ffffffff16565b8460000181905550506122f1565b6122e886846000015461332590919063ffffffff16565b83600001819055505b42836004018190555050505b61232f64e8d4a510006123218460030154846000015461367a90919063ffffffff16565b61370090919063ffffffff16565b8160010181905550843373ffffffffffffffffffffffffffffffffffffffff167f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a15866040518082815260200191505060405180910390a3505060018081905550505050565b6007602052816000526040600020602052806000526040600020600091509150508060000154908060010154908060020154908060030154908060040154905085565b600f5481565b6123e561329a565b73ffffffffffffffffffffffffffffffffffffffff16612403611c9d565b73ffffffffffffffffffffffffffffffffffffffff161461248c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008211612502576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f657272205f616d6f756e743d300000000000000000000000000000000000000081525060200191505060405180910390fd5b438111612577576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f6572722073746172743c3d626c6f636b0000000000000000000000000000000081525060200191505060405180910390fd5b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561260257600080fd5b505afa158015612616573d6000803e3d6000fd5b505050506040513d602081101561262c57600080fd5b8101908080519060200190929190505050905061268e333085600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16613830909392919063ffffffff16565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561271957600080fd5b505afa15801561272d573d6000803e3d6000fd5b505050506040513d602081101561274357600080fd5b8101908080519060200190929190505050905061276982826132a290919063ffffffff16565b935082600a8190555061278784600d5461332590919063ffffffff16565b600d81905550438303600f819055506127ad600f54600d5461370090919063ffffffff16565b6005819055504360098190555050505050565b600e5481565b6127ce61329a565b73ffffffffffffffffffffffffffffffffffffffff166127ec611c9d565b73ffffffffffffffffffffffffffffffffffffffff1614612875576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600060068054905090506000600190505b81811015612979576006818154811061289b57fe5b906000526020600020906008020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561296e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f63616e2774207472616e73666572206c7000000000000000000000000000000081525060200191505060405180910390fd5b806001019050612886565b50600a5443116129f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f63616e207265636f766572206f6e6c79206661726d696e6720656e642e00000081525060200191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015612a8457600080fd5b505af1158015612a98573d6000803e3d6000fd5b505050506040513d6020811015612aae57600080fd5b810190808051906020019092919050505050505050565b612acd61329a565b73ffffffffffffffffffffffffffffffffffffffff16612aeb611c9d565b73ffffffffffffffffffffffffffffffffffffffff1614612b74576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6101908461ffff161115612bd3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806141dd6025913960400191505060405180910390fd5b6276a700811115612c2f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602781526020018061429a6027913960400191505060405180910390fd5b6276a700831115612ca8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f6164643a20696e76616c6964206861727665737420696e74657276616c00000081525060200191505060405180910390fd5b8115612cb757612cb6611954565b5b8473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612d1e57600080fd5b505afa158015612d32573d6000803e3d6000fd5b505050506040513d6020811015612d4857600080fd5b81019080805190602001909291905050505060006009544311612d6d57600954612d6f565b435b9050612d868760085461332590919063ffffffff16565b60088190555060066040518061010001604052808873ffffffffffffffffffffffffffffffffffffffff168152602001898152602001838152602001600081526020018761ffff1681526020018681526020018481526020016000815250908060018154018082558091505060019003906000526020600020906008020160009091909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010155604082015181600201556060820151816003015560808201518160040160006101000a81548161ffff021916908361ffff16021790555060a0820151816005015560c0820151816006015560e08201518160070155505050505050505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612f81576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f736574446576416464726573733a20464f5242494444454e000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415613024576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f736574446576416464726573733a205a45524f0000000000000000000000000081525060200191505060405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600c60149054906101000a900461ffff1681565b600d5481565b61308a61329a565b73ffffffffffffffffffffffffffffffffffffffff166130a8611c9d565b73ffffffffffffffffffffffffffffffffffffffff1614613131576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156131b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806142746026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b60008282111561331a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b818303905092915050565b6000808284019050838110156133a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000600682815481106133bc57fe5b9060005260206000209060080201905060006007600084815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008160030154141561344d5761344482600501544261332590919063ffffffff16565b81600301819055505b6000613497826001015461348964e8d4a5100061347b8760030154876000015461367a90919063ffffffff16565b61370090919063ffffffff16565b6132a290919063ffffffff16565b90506134a38433610b2c565b1561353e5760008111806134bb575060008260020154115b156135395760006134d983600201548361332590919063ffffffff16565b90506134f48360020154600b546132a290919063ffffffff16565b600b819055506000836002018190555061351b84600501544261332590919063ffffffff16565b836003018190555061352d33826138f1565b6135373382613b6a565b505b6135d2565b60008111156135d15761355e81836002015461332590919063ffffffff16565b826002018190555061357b81600b5461332590919063ffffffff16565b600b81905550833373ffffffffffffffffffffffffffffffffffffffff167fee470483107f579a55c754fa00613c45a9a3b617a418b39cb0be97e5381ba7c1836040518082815260200191505060405180910390a35b5b50505050565b6136758363a9059cbb60e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050613e4d565b505050565b60008083141561368d57600090506136fa565b600082840290508284828161369e57fe5b04146136f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806142e76021913960400191505060405180910390fd5b809150505b92915050565b6000808211613777576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060200191505060405180910390fd5b81838161378057fe5b04905092915050565b600d548111156137a1576000600581905550600d5490505b6137b681600d546132a290919063ffffffff16565b600d819055506137d181600e5461332590919063ffffffff16565b600e819055507f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968858282604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15050565b6138eb846323b872dd60e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050613e4d565b50505050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561397c57600080fd5b505afa158015613990573d6000803e3d6000fd5b505050506040513d60208110156139a657600080fd5b8101908080519060200190929190505050905080821115613a9557600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015613a5457600080fd5b505af1158015613a68573d6000803e3d6000fd5b505050506040513d6020811015613a7e57600080fd5b810190808051906020019092919050505050613b65565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015613b2857600080fd5b505af1158015613b3c573d6000803e3d6000fd5b505050506040513d6020811015613b5257600080fd5b8101908080519060200190929190505050505b505050565b600073ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158015613bdd57506000600c60149054906101000a900461ffff1661ffff16115b15613e49576000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634a9fefc7846040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015613c6d57600080fd5b505afa158015613c81573d6000803e3d6000fd5b505050506040513d6020811015613c9757600080fd5b810190808051906020019092919050505090506000613ce7612710613cd9600c60149054906101000a900461ffff1661ffff168661367a90919063ffffffff16565b61370090919063ffffffff16565b9050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015613d265750600081115b15613e4657613d358282613789565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dc1694b883836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015613dc857600080fd5b505af1158015613ddc573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f86ddab457291316e0f5496737e5ca67c4037234c32c3be04c48ae96186893a7b836040518082815260200191505060405180910390a35b50505b5050565b6060613eaf826040518060400160405280602081526020017f5361666542455032303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16613f3c9092919063ffffffff16565b9050600081511115613f3757808060200190516020811015613ed057600080fd5b8101908080519060200190929190505050613f36576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a81526020018061424a602a913960400191505060405180910390fd5b5b505050565b6060613f4b8484600085613f54565b90509392505050565b606082471015613faf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806142c16026913960400191505060405180910390fd5b613fb8856140fd565b61402a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081525060200191505060405180910390fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b6020831061407a5780518252602082019150602081019050602083039250614057565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146140dc576040519150601f19603f3d011682016040523d82523d6000602084013e6140e1565b606091505b50915091506140f1828286614110565b92505050949350505050565b600080823b905060008111915050919050565b60608315614120578290506141d5565b6000835111156141335782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561419a57808201518184015260208101905061417f565b50505050905090810190601f1680156141c75780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b939250505056fe6164643a20696e76616c6964206465706f7369742066656520626173697320706f696e7473736574526566657272616c436f6d6d697373696f6e526174653a20696e76616c696420726566657272616c20636f6d6d697373696f6e207261746520626173697320706f696e74735361666542455032303a204245503230206f7065726174696f6e20646964206e6f7420737563636565644f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573737769746864726177206c6f636b206d757374206265206c657373207468616e2039302064617973416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f777365743a20696e76616c6964206465706f7369742066656520626173697320706f696e7473a2646970667358221220a5573015ee6810e9d39db445b6ccedf860897541b944ff64b074d7bac65b0f5864736f6c634300060c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000005b6a35c90d7f7d25899ee52f1aa63344a5be786f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _token (address): 0x5b6a35c90d7f7D25899EE52F1Aa63344a5bE786F
Arg [1] : _startBlock (uint256): 0
Arg [2] : _tokenPerBlock (uint256): 0
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000005b6a35c90d7f7d25899ee52f1aa63344a5be786f
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
13354:15913:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16461:95;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15166:23;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14852:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15093:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19802:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;28707:88;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17742:827;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14645:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14705;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15313:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14737:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;;22546:940;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15228:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15497:62;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15134:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18919:875;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;20339:794;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23557:520;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;26140:308;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;25954:125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;20083:180;;;:::i;:::-;;12239:148;;;:::i;:::-;;25646:236;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14772:44;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11931:87;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;18645:266;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21141:1397;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14934:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27230:21;;;:::i;:::-;;;;;;;;;;;;;;;;;;;27304:644;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;27199:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;28803:459;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16631:1103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;25402:236;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15405:42;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;27169:23;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12397:244;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14598:19;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;16461:95;16506:7;16533:8;:15;;;;16526:22;;16461:95;:::o;15166:23::-;;;;:::o;14852:26::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;15093:34::-;;;;:::o;19802:198::-;19872:4;19889:21;19913:8;:14;19922:4;19913:14;;;;;;;;;;;:21;19928:5;19913:21;;;;;;;;;;;;;;;19889:45;;19971:4;:21;;;19952:15;:40;;19945:47;;;19802:198;;;;:::o;28707:88::-;28748:7;28775:12;28768:19;;28707:88;:::o;17742:827::-;12162:12;:10;:12::i;:::-;12151:23;;:7;:5;:7::i;:::-;:23;;;12143:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17950:3:::1;17933:13;:20;;;;17925:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18037:7;18014:19;:30;;18006:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18127:7;18107:16;:27;;18099:69;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;18183:11;18179:61;;;18211:17;:15;:17::i;:::-;18179:61;18268:63;18319:11;18268:46;18288:8;18297:4;18288:14;;;;;;;;;;;;;;;;;;:25;;;18268:15;;:19;;:46;;;;:::i;:::-;:50;;:63;;;;:::i;:::-;18250:15;:81;;;;18370:11;18342:8;18351:4;18342:14;;;;;;;;;;;;;;;;;;:25;;:39;;;;18422:13;18392:8;18401:4;18392:14;;;;;;;;;;;;;;;;;;:27;;;:43;;;;;;;;;;;;;;;;;;18479:16;18446:8;18455:4;18446:14;;;;;;;;;;;;;;;;;;:30;;:49;;;;18542:19;18506:8;18515:4;18506:14;;;;;;;;;;;;;;;;;;:33;;:55;;;;17742:827:::0;;;;;;:::o;14645:25::-;;;;;;;;;;;;;:::o;14705:::-;;;;;;;;;;;;;:::o;15313:35::-;;;;;;;;;;;;;:::o;14737:28::-;;;;:::o;22546:940::-;12878:1;13110:7;;:19;;13102:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12878:1;13243:7;:18;;;;22628:21:::1;22652:8;22661:4;22652:14;;;;;;;;;;;;;;;;;;22628:38;;22677:21;22701:8;:14;22710:4;22701:14;;;;;;;;;;;:26;22716:10;22701:26;;;;;;;;;;;;;;;22677:50;;22761:7;22746:4;:11;;;:22;;22738:53;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;22802:16;22813:4;22802:10;:16::i;:::-;22829:29;22853:4;22829:23;:29::i;:::-;22883:1;22873:7;:11;22869:482;;;22973:1;22947:4;:23;;;:27;22943:219;;;22994:13;23051:4;:23;;;23028:4;:20;;;:46;23010:15;:64;22994:80;;23114:5;23102:17;;:8;:17;;;23093:53;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;22943:219;;23190:24;23206:7;23190:4;:11;;;:15;;:24;;;;:::i;:::-;23176:4;:11;;:38;;;;23244:25;23261:7;23244:4;:12;;;:16;;:25;;;;:::i;:::-;23229:4;:12;;:40;;;;23284:55;23318:10;23331:7;23284:4;:12;;;;;;;;;;;;:25;;;;:55;;;;;:::i;:::-;22869:482;23379:48;23422:4;23379:38;23395:4;:21;;;23379:4;:11;;;:15;;:38;;;;:::i;:::-;:42;;:48;;;;:::i;:::-;23361:4;:15;;:66;;;;23464:4;23452:10;23443:35;;;23470:7;23443:35;;;;;;;;;;;;;;;;;;13274:1;;12834::::0;13290:7;:22;;;;22546:940;;:::o;15228:35::-;;;;:::o;15497:62::-;15555:4;15497:62;:::o;15134:25::-;;;;:::o;18919:875::-;18991:7;19011:21;19035:8;19044:4;19035:14;;;;;;;;;;;;;;;;;;19011:38;;19060:21;19084:8;:14;19093:4;19084:14;;;;;;;;;;;:21;19099:5;19084:21;;;;;;;;;;;;;;;19060:45;;19116:24;19143:4;:21;;;19116:48;;19175:16;19194:4;:12;;;19175:31;;19217:15;19252:8;;19236:12;:24;;19235:53;;19280:8;;19235:53;;;19265:12;19235:53;19217:71;;19313:4;:20;;;19303:7;:30;:47;;;;;19349:1;19337:8;:13;;19303:47;19299:345;;;19368:18;19389:44;19403:4;:20;;;19425:7;19389:13;:44::i;:::-;19368:65;;19448:19;19470:71;19525:15;;19470:50;19504:4;:15;;;19470:29;19485:13;;19470:10;:14;;:29;;;;:::i;:::-;:33;;:50;;;;:::i;:::-;:54;;:71;;;;:::i;:::-;19448:93;;19575:57;19596:35;19622:8;19596:21;19612:4;19596:11;:15;;:21;;;;:::i;:::-;:25;;:35;;;;:::i;:::-;19575:16;:20;;:57;;;;:::i;:::-;19556:76;;19299:345;;;19654:15;19672:64;19720:4;:15;;;19672:43;19710:4;19672:33;19688:16;19672:4;:11;;;:15;;:33;;;;:::i;:::-;:37;;:43;;;;:::i;:::-;:47;;:64;;;;:::i;:::-;19654:82;;19754:32;19766:4;:19;;;19754:7;:11;;:32;;;;:::i;:::-;19747:39;;;;;;;;18919:875;;;;:::o;20339:794::-;20391:21;20415:8;20424:4;20415:14;;;;;;;;;;;;;;;;;;20391:38;;20440:15;20475:8;;20459:12;:24;;20458:53;;20503:8;;20458:53;;;20488:12;20458:53;20440:71;;20537:4;:20;;;20526:7;:31;20522:70;;20574:7;;;;20522:70;20602:16;20621:4;:12;;;20602:31;;20660:1;20648:8;:13;:37;;;;20684:1;20665:4;:15;;;:20;20648:37;20644:121;;;20725:7;20702:4;:20;;:30;;;;20747:7;;;;;20644:121;20775:18;20796:44;20810:4;:20;;;20832:7;20796:13;:44::i;:::-;20775:65;;20851:19;20873:71;20928:15;;20873:50;20907:4;:15;;;20873:29;20888:13;;20873:10;:14;;:29;;;;:::i;:::-;:33;;:50;;;;:::i;:::-;:54;;:71;;;;:::i;:::-;20851:93;;20955:32;20968:4;20975:11;20955:4;:32::i;:::-;21022:62;21048:35;21074:8;21048:21;21064:4;21048:11;:15;;:21;;;;:::i;:::-;:25;;:35;;;;:::i;:::-;21022:4;:21;;;:25;;:62;;;;:::i;:::-;20998:4;:21;;:86;;;;21118:7;21095:4;:20;;:30;;;;20339:794;;;;;;;:::o;23557:520::-;12878:1;13110:7;;:19;;13102:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12878:1;13243:7;:18;;;;23631:21:::1;23655:8;23664:4;23655:14;;;;;;;;;;;;;;;;;;23631:38;;23680:21;23704:8;:14;23713:4;23704:14;;;;;;;;;;;:26;23719:10;23704:26;;;;;;;;;;;;;;;23680:50;;23741:14;23758:4;:11;;;23741:28;;23795:24;23812:6;23795:4;:12;;;:16;;:24;;;;:::i;:::-;23780:4;:12;;:39;;;;23844:1;23830:4;:11;;:15;;;;23874:1;23856:4;:15;;:19;;;;23908:1;23886:4;:19;;:23;;;;23944:1;23920:4;:21;;:25;;;;23956:54;23990:10;24003:6;23956:4;:12;;;;;;;;;;;;:25;;;;:54;;;;;:::i;:::-;24056:4;24044:10;24026:43;;;24062:6;24026:43;;;;;;;;;;;;;;;;;;13274:1;;;12834::::0;13290:7;:22;;;;23557:520;:::o;26140:308::-;12162:12;:10;:12::i;:::-;12151:23;;:7;:5;:7::i;:::-;:23;;;12143:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15555:4:::1;26245:59;;:23;:59;;;;26237:144;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26417:23;26392:22;;:48;;;;;;;;;;;;;;;;;;26140:308:::0;:::o;25954:125::-;12162:12;:10;:12::i;:::-;12151:23;;:7;:5;:7::i;:::-;:23;;;12143:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26057:14:::1;26041:13;;:30;;;;;;;;;;;;;;;;;;25954:125:::0;:::o;20083:180::-;20128:14;20145:8;:15;;;;20128:32;;20176:11;20171:85;20199:6;20193:3;:12;20171:85;;;20229:15;20240:3;20229:10;:15::i;:::-;20207:5;;;;;20171:85;;;;20083:180;:::o;12239:148::-;12162:12;:10;:12::i;:::-;12151:23;;:7;:5;:7::i;:::-;:23;;;12143:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12346:1:::1;12309:40;;12330:6;::::0;::::1;;;;;;;;12309:40;;;;;;;;;;;;12377:1;12360:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;12239:148::o:0;25646:236::-;25732:10;;;;;;;;;;;25718:24;;:10;:24;;;25710:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25813:1;25790:25;;:11;:25;;;;25782:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25863:11;25850:10;;:24;;;;;;;;;;;;;;;;;;25646:236;:::o;14772:44::-;14815:1;14772:44;:::o;11931:87::-;11977:7;12004:6;;;;;;;;;;;11997:13;;11931:87;:::o;18645:266::-;18717:7;18753:1;18741:8;;:13;18737:113;;;18837:1;18830:8;;;;18737:113;18867:36;14815:1;18867:14;18875:5;18867:3;:7;;:14;;;;:::i;:::-;:18;;:36;;;;:::i;:::-;18860:43;;18645:266;;;;;:::o;21141:1397::-;12878:1;13110:7;;:19;;13102:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12878:1;13243:7;:18;;;;21241:21:::1;21265:8;21274:4;21265:14;;;;;;;;;;;;;;;;;;21241:38;;21290:21;21314:8;:14;21323:4;21314:14;;;;;;;;;;;:26;21329:10;21314:26;;;;;;;;;;;;;;;21290:50;;21351:16;21362:4;21351:10;:16::i;:::-;21392:1;21382:7;:11;:51;;;;;21431:1;21397:36;;21405:13;;;;;;;;;;;21397:36;;;;21382:51;:78;;;;;21458:1;21437:23;;:9;:23;;;;21382:78;:105;;;;;21477:10;21464:23;;:9;:23;;;;21382:105;21378:189;;;21504:13;;;;;;;;;;;:28;;;21533:10;21545:9;21504:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;21378:189;21577:29;21601:4;21577:23;:29::i;:::-;21631:1;21621:7;:11;21617:787;;;21651:18;21672:4;:12;;;;;;;;;;;;:22;;;21703:4;21672:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;21651:58;;21724:74;21762:10;21783:4;21790:7;21724:4;:12;;;;;;;;;;;;:29;;;;:74;;;;;;:::i;:::-;21813:18;21834:4;:12;;;;;;;;;;;;:22;;;21865:4;21834:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;21813:58;;21896:26;21911:10;21896;:14;;:26;;;;:::i;:::-;21886:36;;21954:25;21971:7;21954:4;:12;;;:16;;:25;;;;:::i;:::-;21939:4;:12;;:40;;;;22020:1;22000:4;:17;;;;;;;;;;;;:21;;;21996:344;;;22042:18;22063:41;22098:5;22063:30;22075:4;:17;;;;;;;;;;;;22063:30;;:7;:11;;:30;;;;:::i;:::-;:34;;:41;;;;:::i;:::-;22042:62;;22123:49;22149:10;;;;;;;;;;;22161;22123:4;:12;;;;;;;;;;;;:25;;;;:49;;;;;:::i;:::-;22205:40;22234:10;22205:24;22221:7;22205:4;:11;;;:15;;:24;;;;:::i;:::-;:28;;:40;;;;:::i;:::-;22191:4;:11;;:54;;;;21996:344;;;;22300:24;22316:7;22300:4;:11;;;:15;;:24;;;;:::i;:::-;22286:4;:11;;:38;;;;21996:344;22377:15;22354:4;:20;;:38;;;;21617:787;;;22432:48;22475:4;22432:38;22448:4;:21;;;22432:4;:11;;;:15;;:38;;;;:::i;:::-;:42;;:48;;;;:::i;:::-;22414:4;:15;;:66;;;;22516:4;22504:10;22496:34;;;22522:7;22496:34;;;;;;;;;;;;;;;;;;13274:1;;12834::::0;13290:7;:22;;;;21141:1397;;;:::o;14934:64::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;27230:21::-;;;;:::o;27304:644::-;12162:12;:10;:12::i;:::-;12151:23;;:7;:5;:7::i;:::-;:23;;;12143:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27409:1:::1;27399:7;:11;27390:39;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;27461:12;27449:9;:24;27440:55;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;27508:18;27529:5;;;;;;;;;;;:15;;;27553:4;27529:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;27508:51;;27570:58;27593:10;27613:4;27620:7;27570:5;;;;;;;;;;;:22;;;;:58;;;;;;:::i;:::-;27639:18;27660:5;;;;;;;;;;;:15;;;27684:4;27660:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;27639:51;;27711:26;27726:10;27711;:14;;:26;;;;:::i;:::-;27701:36;;27761:9;27750:8;:20;;;;27792:21;27805:7;27792:8;;:12;;:21;;;;:::i;:::-;27781:8;:32;;;;27845:12;27833:9;:24;27824:6;:33;;;;27884:20;27897:6;;27884:8;;:12;;:20;;;;:::i;:::-;27868:13;:36;;;;27928:12;27915:10;:25;;;;12222:1;;27304:644:::0;;:::o;27199:24::-;;;;:::o;28803:459::-;12162:12;:10;:12::i;:::-;12151:23;;:7;:5;:7::i;:::-;:23;;;12143:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28895:14:::1;28912:8;:15;;;;28895:32;;28943:11;28957:1;28943:15;;28938:136;28966:6;28960:3;:12;28938:136;;;29020:8;29029:3;29020:13;;;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;29004:37;;:12;:37;;;;28996:66;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;28974:5;;;;;28938:136;;;;29107:8;;29092:12;:23;29084:65;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;29213:12;:21;;;29235:10;;;;;;;;;;;29247:6;29213:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;12222:1;28803:459:::0;;:::o;16631:1103::-;12162:12;:10;:12::i;:::-;12151:23;;:7;:5;:7::i;:::-;:23;;;12143:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16842:3:::1;16825:13;:20;;;;16817:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16929:7;16906:19;:30;;16898:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17019:7;16999:16;:27;;16991:69;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;17075:11;17071:61;;;17103:17;:15;:17::i;:::-;17071:61;17142:8;:18;;;17169:4;17142:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;17219:23;17260:10;;17245:12;:25;:53;;17288:10;;17245:53;;;17273:12;17245:53;17219:79;;17327:32;17347:11;17327:15;;:19;;:32;;;;:::i;:::-;17309:15;:50;;;;17370:8;17384:341;;;;;;;;17417:8;17384:341;;;;;;17452:11;17384:341;;;;17495:15;17384:341;;;;17543:1;17384:341;;;;17598:13;17384:341;;;;;;17643:16;17384:341;;;;17694:19;17384:341;;;;17568:1;17384:341;;::::0;17370:356:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12222:1;16631:1103:::0;;;;;;:::o;25402:236::-;25488:10;;;;;;;;;;;25474:24;;:10;:24;;;25466:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25569:1;25546:25;;:11;:25;;;;25538:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25619:11;25606:10;;:24;;;;;;;;;;;;;;;;;;25402:236;:::o;15405:42::-;;;;;;;;;;;;;:::o;27169:23::-;;;;:::o;12397:244::-;12162:12;:10;:12::i;:::-;12151:23;;:7;:5;:7::i;:::-;:23;;;12143:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12506:1:::1;12486:22;;:8;:22;;;;12478:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12596:8;12567:38;;12588:6;::::0;::::1;;;;;;;;12567:38;;;;;;;;;;;;12625:8;12616:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;12397:244:::0;:::o;14598:19::-;;;;;;;;;;;;;:::o;10973:106::-;11026:15;11061:10;11054:17;;10973:106;:::o;1251:158::-;1309:7;1342:1;1337;:6;;1329:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1400:1;1396;:5;1389:12;;1251:158;;;;:::o;1064:179::-;1122:7;1142:9;1158:1;1154;:5;1142:17;;1183:1;1178;:6;;1170:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1234:1;1227:8;;;1064:179;;;;:::o;24085:1261::-;24152:21;24176:8;24185:4;24176:14;;;;;;;;;;;;;;;;;;24152:38;;24201:21;24225:8;:14;24234:4;24225:14;;;;;;;;;;;:26;24240:10;24225:26;;;;;;;;;;;;;;;24201:50;;24293:1;24268:4;:21;;;:26;24264:124;;;24335:41;24355:4;:20;;;24335:15;:19;;:41;;;;:::i;:::-;24311:4;:21;;:65;;;;24264:124;24400:15;24418:69;24471:4;:15;;;24418:48;24461:4;24418:38;24434:4;:21;;;24418:4;:11;;;:15;;:38;;;;:::i;:::-;:42;;:48;;;;:::i;:::-;:52;;:69;;;;:::i;:::-;24400:87;;24502:28;24513:4;24519:10;24502;:28::i;:::-;24498:841;;;24561:1;24551:7;:11;:38;;;;24588:1;24566:4;:19;;;:23;24551:38;24547:545;;;24610:20;24633:32;24645:4;:19;;;24633:7;:11;;:32;;;;:::i;:::-;24610:55;;24742:45;24767:4;:19;;;24742:20;;:24;;:45;;;;:::i;:::-;24719:20;:68;;;;24828:1;24806:4;:19;;:23;;;;24872:41;24892:4;:20;;;24872:15;:19;;:41;;;;:::i;:::-;24848:4;:21;;:65;;;;24967:43;24985:10;24997:12;24967:17;:43::i;:::-;25029:47;25051:10;25063:12;25029:21;:47::i;:::-;24547:545;;24498:841;;;25123:1;25113:7;:11;25109:230;;;25163:32;25187:7;25163:4;:19;;;:23;;:32;;;;:::i;:::-;25141:4;:19;;:54;;;;25233:33;25258:7;25233:20;;:24;;:33;;;;:::i;:::-;25210:20;:56;;;;25313:4;25301:10;25286:41;;;25319:7;25286:41;;;;;;;;;;;;;;;;;;25109:230;24498:841;24085:1261;;;;:::o;7984:211::-;8101:86;8121:5;8151:23;;;8176:2;8180:5;8128:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8101:19;:86::i;:::-;7984:211;;;:::o;1417:220::-;1475:7;1504:1;1499;:6;1495:20;;;1514:1;1507:8;;;;1495:20;1526:9;1542:1;1538;:5;1526:17;;1571:1;1566;1562;:5;;;;;;:10;1554:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1628:1;1621:8;;;1417:220;;;;;:::o;1645:153::-;1703:7;1735:1;1731;:5;1723:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1789:1;1785;:5;;;;;;1778:12;;1645:153;;;;:::o;27954:347::-;28031:8;;28022:6;:17;28018:158;;;28118:1;28102:13;:17;;;;28143:8;;28134:17;;28018:158;28197:20;28210:6;28197:8;;:12;;:20;;;;:::i;:::-;28186:8;:31;;;;28240:21;28254:6;28240:9;;:13;;:21;;;;:::i;:::-;28228:9;:33;;;;28277:16;28282:2;28286:6;28277:16;;;;;;;;;;;;;;;;;;;;;;;;;;27954:347;;:::o;8203:248::-;8347:96;8367:5;8397:27;;;8426:4;8432:2;8436:5;8374:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8347:19;:96::i;:::-;8203:248;;;;:::o;28414:285::-;28491:16;28510:5;;;;;;;;;;;:15;;;28534:4;28510:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28491:49;;28565:8;28555:7;:18;28551:141;;;28590:5;;;;;;;;;;;:14;;;28605:3;28610:8;28590:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28551:141;;;28652:5;;;;;;;;;;;:14;;;28667:3;28672:7;28652:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28551:141;28414:285;;;:::o;26528:631::-;26650:1;26616:36;;26624:13;;;;;;;;;;;26616:36;;;;:66;;;;;26681:1;26656:22;;;;;;;;;;;:26;;;26616:66;26612:540;;;26699:16;26718:13;;;;;;;;;;;:25;;;26744:5;26718:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26699:51;;26765:24;26792:47;26833:5;26792:36;26805:22;;;;;;;;;;;26792:36;;:8;:12;;:36;;;;:::i;:::-;:40;;:47;;;;:::i;:::-;26765:74;;26880:1;26860:22;;:8;:22;;;;:46;;;;;26905:1;26886:16;:20;26860:46;26856:285;;;26927:32;26932:8;26942:16;26927:4;:32::i;:::-;26978:13;;;;;;;;;;;:38;;;27017:8;27027:16;26978:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27098:8;27068:57;;27091:5;27068:57;;;27108:16;27068:57;;;;;;;;;;;;;;;;;;26856:285;26612:540;;;26528:631;;:::o;9862:433::-;9945:23;9971:69;9999:4;9971:69;;;;;;;;;;;;;;;;;9979:5;9971:27;;;;:69;;;;;:::i;:::-;9945:95;;10075:1;10055:10;:17;:21;10051:237;;;10210:10;10199:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10191:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10051:237;9862:433;;;:::o;4863:195::-;4966:12;4998:52;5020:6;5028:4;5034:1;5037:12;4998:21;:52::i;:::-;4991:59;;4863:195;;;;;:::o;5300:530::-;5427:12;5485:5;5460:21;:30;;5452:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5552:18;5563:6;5552:10;:18::i;:::-;5544:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5678:12;5692:23;5719:6;:11;;5739:5;5747:4;5719:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5677:75;;;;5770:52;5788:7;5797:10;5809:12;5770:17;:52::i;:::-;5763:59;;;;5300:530;;;;;;:::o;3618:422::-;3678:4;3886:12;3997:7;3985:20;3977:28;;4031:1;4024:4;:8;4017:15;;;3618:422;;;:::o;7116:742::-;7231:12;7260:7;7256:595;;;7291:10;7284:17;;;;7256:595;7425:1;7405:10;:17;:21;7401:439;;;7668:10;7662:17;7729:15;7716:10;7712:2;7708:19;7701:44;7616:148;7811:12;7804:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7116:742;;;;;;:::o
Swarm Source
ipfs://a5573015ee6810e9d39db445b6ccedf860897541b944ff64b074d7bac65b0f58
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 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.