More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 1,610 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Deposit | 11358293 | 1506 days ago | IN | 0 ETH | 0.00337124 | ||||
Deposit | 11329629 | 1511 days ago | IN | 0 ETH | 0.00291474 | ||||
Deposit | 11326383 | 1511 days ago | IN | 0 ETH | 0.00429067 | ||||
Deposit | 11323496 | 1512 days ago | IN | 0 ETH | 0.00514744 | ||||
Deposit | 11308377 | 1514 days ago | IN | 0 ETH | 0.00453411 | ||||
Withdraw | 11302650 | 1515 days ago | IN | 0 ETH | 0.00412748 | ||||
Deposit | 11300869 | 1515 days ago | IN | 0 ETH | 0.00692992 | ||||
Withdraw | 11296402 | 1516 days ago | IN | 0 ETH | 0.00191633 | ||||
Deposit | 11284021 | 1518 days ago | IN | 0 ETH | 0.00674492 | ||||
Deposit | 11284010 | 1518 days ago | IN | 0 ETH | 0.00686337 | ||||
Deposit | 11284003 | 1518 days ago | IN | 0 ETH | 0.00834635 | ||||
Deposit | 11282139 | 1518 days ago | IN | 0 ETH | 0.00905239 | ||||
Deposit | 11279969 | 1518 days ago | IN | 0 ETH | 0.01471885 | ||||
Deposit | 11277897 | 1519 days ago | IN | 0 ETH | 0.00551491 | ||||
Withdraw | 11277081 | 1519 days ago | IN | 0 ETH | 0.0026303 | ||||
Withdraw | 11277073 | 1519 days ago | IN | 0 ETH | 0.00379563 | ||||
Deposit | 11276350 | 1519 days ago | IN | 0 ETH | 0.0116878 | ||||
Deposit | 11274547 | 1519 days ago | IN | 0 ETH | 0.0106542 | ||||
Deposit | 11273808 | 1519 days ago | IN | 0 ETH | 0.00664587 | ||||
Deposit | 11273793 | 1519 days ago | IN | 0 ETH | 0.00482454 | ||||
Withdraw | 11266668 | 1520 days ago | IN | 0 ETH | 0.0058964 | ||||
Deposit | 11264087 | 1521 days ago | IN | 0 ETH | 0.00364219 | ||||
Withdraw | 11256696 | 1522 days ago | IN | 0 ETH | 0.00115401 | ||||
Withdraw | 11254777 | 1522 days ago | IN | 0 ETH | 0.00076902 | ||||
Deposit | 11254251 | 1522 days ago | IN | 0 ETH | 0.00169819 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
UniCore_Vault
Compiler Version
v0.6.6+commit.6c089d02
Contract Source Code (Solidity Multiple files format)
// SPDX-License-Identifier: WHO GIVES A FUCK ANYWAY?? // but thanks a million Gwei to MIT and Zeppelin. You guys rock!!! // MAINNET VERSION. pragma solidity ^0.6.6; import "./UniCore_Libraries.sol"; import "./UniCore_Interfaces.sol"; // Vault distributes fees equally amongst staked pools contract UniCore_Vault { using SafeMath for uint256; address public UniCore; //token address address public Treasury1; address public Treasury2; address public Treasury3; uint256 public treasuryFee; uint256 public pendingTreasuryRewards; //USERS METRICS struct UserInfo { uint256 amount; // How many tokens the user has provided. uint256 rewardPaid; // Already Paid. See explanation below. // pending reward = (user.amount * pool.UniCorePerShare) - user.rewardPaid } mapping(uint256 => mapping(address => UserInfo)) public userInfo; //POOL METRICS struct PoolInfo { address stakedToken; // Address of staked token contract. uint256 allocPoint; // How many allocation points assigned to this pool. UniCores to distribute per block. (ETH = 2.3M blocks per year) uint256 accUniCorePerShare; // Accumulated UniCores per share, times 1e18. See below. bool withdrawable; // Is this pool withdrawable or not mapping(address => mapping(address => uint256)) allowance; } PoolInfo[] public poolInfo; uint256 public totalAllocPoint; // Total allocation points. Must be the sum of all allocation points in all pools. uint256 public pendingRewards; // pending rewards awaiting anyone to massUpdate uint256 public contractStartBlock; uint256 public epochCalculationStartBlock; uint256 public cumulativeRewardsSinceStart; uint256 public rewardsInThisEpoch; uint public epoch; //EVENTS 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 Approval(address indexed owner, address indexed spender, uint256 _pid, uint256 value); //INITIALIZE constructor(address _UniCore) public { UniCore = _UniCore; Treasury1 = address(0x688C3eE6E470b63a4Edfc9A798908b473B5CaA93); // UniCore Central Treasury2 = address(0x58071aeb3e5550A9359efBff98b7eCF59057799d); //stpd Treasury3 = address(0x05957F3344255fDC9fE172E30016ee148D684313); //QS treasuryFee = 700; //7% contractStartBlock = block.number; } //================================================================================================================================== //POOL //view stuff function poolLength() external view returns (uint256) { return poolInfo.length; //number of pools (per pid) } // Returns fees generated since start of this contract function averageFeesPerBlockSinceStart() external view returns (uint averagePerBlock) { averagePerBlock = cumulativeRewardsSinceStart.add(rewardsInThisEpoch).div(block.number.sub(contractStartBlock)); } // Returns averge fees in this epoch function averageFeesPerBlockEpoch() external view returns (uint256 averagePerBlock) { averagePerBlock = rewardsInThisEpoch.div(block.number.sub(epochCalculationStartBlock)); } // For easy graphing historical epoch rewards mapping(uint => uint256) public epochRewards; //set stuff (govenrors) // Add a new token pool. Can only be called by governors. function addPool( uint256 _allocPoint, address _stakedToken, bool _withdrawable) public governanceLevel(2) { require(_allocPoint > 0, "Zero alloc points not allowed"); nonWithdrawableByAdmin[_stakedToken] = true; // stakedToken is now non-widthrawable by the admins. /* @dev Addressing potential issues with zombie pools. * https://medium.com/@DraculaProtocol/sushiswap-smart-contract-bug-and-quality-of-audits-in-community-f50ee0545bc6 * Thank you @DraculaProtocol for this interesting post. */ massUpdatePools(); uint256 length = poolInfo.length; for (uint256 pid = 0; pid < length; ++pid) { require(poolInfo[pid].stakedToken != _stakedToken,"Error pool already added"); } totalAllocPoint = totalAllocPoint.add(_allocPoint); //pre-allocation poolInfo.push( PoolInfo({ stakedToken: _stakedToken, allocPoint: _allocPoint, accUniCorePerShare: 0, withdrawable : _withdrawable }) ); } // Updates the given pool's allocation points. Can only be called with right governance levels. function setPool(uint256 _pid, uint256 _allocPoint, bool _withUpdate) public governanceLevel(2) { require(_allocPoint > 0, "Zero alloc points not allowed"); if (_withUpdate) {massUpdatePools();} totalAllocPoint = totalAllocPoint.sub(poolInfo[_pid].allocPoint).add(_allocPoint); poolInfo[_pid].allocPoint = _allocPoint; } // Update the given pool's ability to withdraw tokens function setPoolWithdrawable(uint256 _pid, bool _withdrawable) public governanceLevel(2) { poolInfo[_pid].withdrawable = _withdrawable; } //set stuff (anybody) //Starts a new calculation epoch; Because average since start will not be accurate function startNewEpoch() public { require(epochCalculationStartBlock + 50000 < block.number, "New epoch not ready yet"); // 50k blocks = About a week epochRewards[epoch] = rewardsInThisEpoch; cumulativeRewardsSinceStart = cumulativeRewardsSinceStart.add(rewardsInThisEpoch); rewardsInThisEpoch = 0; epochCalculationStartBlock = block.number; ++epoch; } // Updates the reward variables of the given pool function updatePool(uint256 _pid) internal returns (uint256 UniCoreRewardWhole) { PoolInfo storage pool = poolInfo[_pid]; uint256 tokenSupply = IERC20(pool.stakedToken).balanceOf(address(this)); if (tokenSupply == 0) { // avoids division by 0 errors return 0; } UniCoreRewardWhole = pendingRewards // Multiplies pending rewards by allocation point of this pool and then total allocation .mul(pool.allocPoint) // getting the percent of total pending rewards this pool should get .div(totalAllocPoint); // we can do this because pools are only mass updated uint256 UniCoreRewardFee = UniCoreRewardWhole.mul(treasuryFee).div(10000); uint256 UniCoreRewardToDistribute = UniCoreRewardWhole.sub(UniCoreRewardFee); pendingTreasuryRewards = pendingTreasuryRewards.add(UniCoreRewardFee); pool.accUniCorePerShare = pool.accUniCorePerShare.add(UniCoreRewardToDistribute.mul(1e18).div(tokenSupply)); } function massUpdatePools() public { uint256 length = poolInfo.length; uint allRewards; for (uint256 pid = 0; pid < length; ++pid) { allRewards = allRewards.add(updatePool(pid)); //calls updatePool(pid) } pendingRewards = pendingRewards.sub(allRewards); } //payout of UniCore Rewards, uses SafeUnicoreTransfer function updateAndPayOutPending(uint256 _pid, address user) internal { massUpdatePools(); uint256 pending = pendingUniCore(_pid, user); safeUniCoreTransfer(user, pending); } // Safe UniCore transfer function, Manages rounding errors. function safeUniCoreTransfer(address _to, uint256 _amount) internal { if(_amount == 0) return; uint256 UniCoreBal = IERC20(UniCore).balanceOf(address(this)); if (_amount >= UniCoreBal) { IERC20(UniCore).transfer(_to, UniCoreBal);} else { IERC20(UniCore).transfer(_to, _amount);} transferTreasuryFees(); //adds unecessary gas for users, team can trigger the function manually UniCoreBalance = IERC20(UniCore).balanceOf(address(this)); } //external call from token when rewards are loaded /* @dev called by the token after each fee transfer to the vault. * updates the pendingRewards and the rewardsInThisEpoch variables */ modifier onlyUniCore() { require(msg.sender == UniCore); _; } uint256 private UniCoreBalance; function updateRewards() external onlyUniCore { //function addPendingRewards(uint256 _) for CORE uint256 newRewards = IERC20(UniCore).balanceOf(address(this)).sub(UniCoreBalance); //delta vs previous balanceOf if(newRewards > 0) { UniCoreBalance = IERC20(UniCore).balanceOf(address(this)); //balance snapshot pendingRewards = pendingRewards.add(newRewards); rewardsInThisEpoch = rewardsInThisEpoch.add(newRewards); } } //================================================================================================================================== //USERS /* protects from a potential reentrancy in Deposits and Withdraws * users can only make 1 deposit or 1 wd per block */ mapping(address => uint256) private lastTXBlock; modifier NoReentrant(address _address) { require(block.number > lastTXBlock[_address], "Wait 1 block between each deposit/withdrawal"); _; } // Deposit tokens to Vault to get allocation rewards function deposit(uint256 _pid, uint256 _amount) external NoReentrant(msg.sender) { lastTXBlock[msg.sender] = block.number; require(_amount > 0, "cannot deposit zero tokens"); PoolInfo storage pool = poolInfo[_pid]; UserInfo storage user = userInfo[_pid][msg.sender]; updateAndPayOutPending(_pid, msg.sender); //Transfer pending tokens, updates the pools //Transfer the amounts from user IERC20(pool.stakedToken).transferFrom(msg.sender, address(this), _amount); user.amount = user.amount.add(_amount); //Finalize user.rewardPaid = user.amount.mul(pool.accUniCorePerShare).div(1e18); emit Deposit(msg.sender, _pid, _amount); } // Withdraw tokens from Vault. function withdraw(uint256 _pid, uint256 _amount) external NoReentrant(msg.sender) { lastTXBlock[msg.sender] = block.number; _withdraw(_pid, _amount, msg.sender, msg.sender); transferTreasuryFees(); //incurs a gas penalty -> treasury fees transfer IUniCore(UniCore).burnFromUni(_amount); //performs the burn on UniSwap pool } function _withdraw(uint256 _pid, uint256 _amount, address from, address to) internal { PoolInfo storage pool = poolInfo[_pid]; require(pool.withdrawable, "Withdrawing from this pool is disabled"); UserInfo storage user = userInfo[_pid][from]; require(user.amount >= _amount, "withdraw: user amount insufficient"); updateAndPayOutPending(_pid, from); // //Transfer pending tokens, massupdates the pools if(_amount > 0) { user.amount = user.amount.sub(_amount); IERC20(pool.stakedToken).transfer(address(to), _amount); } user.rewardPaid = user.amount.mul(pool.accUniCorePerShare).div(1e18); emit Withdraw(to, _pid, _amount); } // Getter function to see pending UniCore rewards per user. function pendingUniCore(uint256 _pid, address _user) public view returns (uint256) { PoolInfo storage pool = poolInfo[_pid]; UserInfo storage user = userInfo[_pid][_user]; uint256 accUniCorePerShare = pool.accUniCorePerShare; return user.amount.mul(accUniCorePerShare).div(1e18).sub(user.rewardPaid); } //================================================================================================================================== //TREASURY function transferTreasuryFees() public { if(pendingTreasuryRewards == 0) return; uint256 UniCorebal = IERC20(UniCore).balanceOf(address(this)); //splitRewards uint256 rewards3 = pendingTreasuryRewards.mul(19).div(100); //stpd uint256 rewards2 = pendingTreasuryRewards.mul(19).div(100); //qtsr uint256 rewards1 = pendingTreasuryRewards.sub(rewards3).sub(rewards2); //team -> could //manages overflows or bad math if (pendingTreasuryRewards > UniCorebal) { rewards3 = UniCorebal.mul(19).div(100); //stpd rewards2 = UniCorebal.mul(19).div(100); //qtsr rewards1 = UniCorebal.sub(rewards3).sub(rewards2); //team } IERC20(UniCore).transfer(Treasury3, rewards3); IERC20(UniCore).transfer(Treasury2, rewards2); IERC20(UniCore).transfer(Treasury1, rewards1); UniCoreBalance = IERC20(UniCore).balanceOf(address(this)); pendingTreasuryRewards = 0; } //================================================================================================================================== //GOVERNANCE & UTILS //Governance inherited from governance levels of UniCoreVaultAddress function viewGovernanceLevel(address _address) public view returns(uint8) { return IUniCore(UniCore).viewGovernanceLevel(_address); } modifier governanceLevel(uint8 _level){ require(viewGovernanceLevel(msg.sender) >= _level, "Grow some mustache kiddo..."); _; } function setTreasuryFee(uint256 _newFee) public governanceLevel(2) { require(_newFee <= 150, "treasuryFee capped at 15%"); treasuryFee = _newFee; } function chgTreasury1(address _new) public { require(msg.sender == Treasury1, "Treasury holder only"); Treasury1 = _new; } function chgTreasury2(address _new) public { require(msg.sender == Treasury2, "Treasury holder only"); Treasury2 = _new; } function chgTreasury3(address _new) public { require(msg.sender == Treasury3, "Treasury holder only"); Treasury3 = _new; } // utils mapping(address => bool) nonWithdrawableByAdmin; function isNonWithdrawbleByAdmins(address _token) public view returns(bool) { return nonWithdrawableByAdmin[_token]; } function _widthdrawAnyToken(address _recipient, address _ERC20address, uint256 _amount) public governanceLevel(2) returns(bool) { require(_ERC20address != UniCore, "Cannot withdraw Unicore from the pools"); require(!nonWithdrawableByAdmin[_ERC20address], "this token is into a pool an cannot we withdrawn"); IERC20(_ERC20address).transfer(_recipient, _amount); //use of the _ERC20 traditional transfer return true; } //get tokens sent by error, excelt UniCore and those used for Staking. }
// SPDX-License-Identifier: WHO GIVES A FUCK ANYWAY?? pragma solidity ^0.6.6; //UNICORE interface IUniCore { function viewGovernanceLevel(address _address) external view returns(uint8); function viewVault() external view returns(address); function viewUNIv2() external view returns(address); function viewwWrappedUNIv2()external view returns(address); function burnFromUni(uint256 _amount) external; } //Reactor is wrapping Tokens, generates wrappped UNIv2 interface IReactor { function wrapUNIv2(uint256 amount) external; function wTransfer(address recipient, uint256 amount) external; function setPublicWrappingRatio(uint256 _ratioBase100) external; } //VAULT interface IVault { function updateRewards() external; } //UNISWAP interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function migrator() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; function setMigrator(address) external; } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IWETH { function deposit() external payable; function transfer(address to, uint value) external returns (bool); function withdraw(uint) external; }
// SPDX-License-Identifier: WHO GIVES A FUCK ANYWAY?? pragma solidity ^0.6.6; /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with GSN meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address 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; } } /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain`call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: weiValue }(data); if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); event Log(string log); }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_UniCore","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"_pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","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":"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":"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":"Treasury1","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Treasury2","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Treasury3","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UniCore","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"address","name":"_ERC20address","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"_widthdrawAnyToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_allocPoint","type":"uint256"},{"internalType":"address","name":"_stakedToken","type":"address"},{"internalType":"bool","name":"_withdrawable","type":"bool"}],"name":"addPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"averageFeesPerBlockEpoch","outputs":[{"internalType":"uint256","name":"averagePerBlock","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"averageFeesPerBlockSinceStart","outputs":[{"internalType":"uint256","name":"averagePerBlock","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_new","type":"address"}],"name":"chgTreasury1","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_new","type":"address"}],"name":"chgTreasury2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_new","type":"address"}],"name":"chgTreasury3","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractStartBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cumulativeRewardsSinceStart","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"epoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"epochCalculationStartBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"epochRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"isNonWithdrawbleByAdmins","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"massUpdatePools","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pendingRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingTreasuryRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"address","name":"_user","type":"address"}],"name":"pendingUniCore","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"poolInfo","outputs":[{"internalType":"address","name":"stakedToken","type":"address"},{"internalType":"uint256","name":"allocPoint","type":"uint256"},{"internalType":"uint256","name":"accUniCorePerShare","type":"uint256"},{"internalType":"bool","name":"withdrawable","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"poolLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardsInThisEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"_allocPoint","type":"uint256"},{"internalType":"bool","name":"_withUpdate","type":"bool"}],"name":"setPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"bool","name":"_withdrawable","type":"bool"}],"name":"setPoolWithdrawable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newFee","type":"uint256"}],"name":"setTreasuryFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startNewEpoch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalAllocPoint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"transferTreasuryFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"updateRewards","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":"rewardPaid","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"viewGovernanceLevel","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"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
608060405234801561001057600080fd5b506040516122403803806122408339818101604052602081101561003357600080fd5b5051600080546001600160a01b039092166001600160a01b031992831617905560018054821673688c3ee6e470b63a4edfc9a798908b473b5caa931790556002805482167358071aeb3e5550a9359efbff98b7ecf59057799d179055600380549091167305957f3344255fdc9fe172e30016ee148d6843131790556102bc60045543600a55612179806100c76000396000f3fe608060405234801561001057600080fd5b506004361061021c5760003560e01c8063630b5ba111610125578063bb0f03f2116100ad578063de2ccedf1161007c578063de2ccedf14610572578063e0447f781461057a578063e2bbb15814610582578063eded3fda146105a5578063f87a879b146105ad5761021c565b8063bb0f03f214610500578063c25cc8af14610526578063c8ffb87314610562578063cc32d1761461056a5761021c565b80637f0b2ffc116100f45780637f0b2ffc1461045f578063900cf0cf1461048557806393f1a40b1461048d5780639dbc2d90146104d2578063b5760d27146104da5761021c565b8063630b5ba1146103fe57806368f7471e1461040657806377e741c71461040e5780637abceffd1461042b5761021c565b80633aab0a62116101a857806349c5468d1161017757806349c5468d146103a45780634dc47d34146103ac5780635207cc0d146103c95780635d577c18146103ee578063608c8d3a146103f65761021c565b80633aab0a62146103445780633e158b0c1461034e578063441a3e701461035657806346ca6bea146103795761021c565b80631526fe27116101ef5780631526fe27146102b157806317caf6f11461030057806319076e20146103085780631a6af7af146103345780633081d2581461033c5761021c565b806303dec00914610221578063081e3eda1461023b5780630d3e805a146102435780631156c72414610267575b600080fd5b6102296105d3565b60408051918252519081900360200190f35b610229610601565b61024b610607565b604080516001600160a01b039092168252519081900360200190f35b61029d6004803603606081101561027d57600080fd5b506001600160a01b03813581169160208101359091169060400135610616565b604080519115158252519081900360200190f35b6102ce600480360360208110156102c757600080fd5b50356107a4565b604080516001600160a01b03909516855260208501939093528383019190915215156060830152519081900360800190f35b6102296107e8565b6102296004803603604081101561031e57600080fd5b50803590602001356001600160a01b03166107ee565b61024b610886565b61024b610895565b61034c6108a4565b005b61034c61093e565b61034c6004803603604081101561036c57600080fd5b5080359060200135610a93565b61034c6004803603606081101561038f57600080fd5b50803590602081013590604001351515610b6d565b610229610c92565b610229600480360360208110156103c257600080fd5b5035610c98565b61034c600480360360408110156103df57600080fd5b50803590602001351515610caa565b610229610d2f565b610229610d35565b61034c610d3b565b61034c610d88565b61034c6004803603602081101561042457600080fd5b50356110da565b61034c6004803603606081101561044157600080fd5b508035906001600160a01b0360208201351690604001351515611186565b61034c6004803603602081101561047557600080fd5b50356001600160a01b0316611405565b61022961147d565b6104b9600480360360408110156104a357600080fd5b50803590602001356001600160a01b0316611483565b6040805192835260208301919091528051918290030190f35b6102296114a7565b61029d600480360360208110156104f057600080fd5b50356001600160a01b03166114d6565b61034c6004803603602081101561051657600080fd5b50356001600160a01b03166114f8565b61054c6004803603602081101561053c57600080fd5b50356001600160a01b0316611570565b6040805160ff9092168252519081900360200190f35b6102296115f0565b6102296115f6565b6102296115fc565b61024b611602565b61034c6004803603604081101561059857600080fd5b5080359060200135611611565b610229611806565b61034c600480360360208110156105c357600080fd5b50356001600160a01b031661180c565b60006105fc6105ed600b544361188490919063ffffffff16565b600d549063ffffffff6118cd16565b905090565b60075490565b6003546001600160a01b031681565b600060028061062433611570565b60ff161015610668576040805162461bcd60e51b815260206004820152601b602482015260008051602061205b833981519152604482015290519081900360640190fd5b6000546001600160a01b03858116911614156106b55760405162461bcd60e51b81526004018080602001828103825260268152602001806120f26026913960400191505060405180910390fd5b6001600160a01b03841660009081526012602052604090205460ff161561070d5760405162461bcd60e51b815260040180806020018281038252603081526020018061207b6030913960400191505060405180910390fd5b836001600160a01b031663a9059cbb86856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561076d57600080fd5b505af1158015610781573d6000803e3d6000fd5b505050506040513d602081101561079757600080fd5b5060019695505050505050565b600781815481106107b157fe5b600091825260209091206005909102018054600182015460028301546003909301546001600160a01b039092169350919060ff1684565b60085481565b600080600784815481106107fe57fe5b600091825260208083208784526006825260408085206001600160a01b03891686529092529220600260059092029092019081015460018301548354929450909161087a919061086e90670de0b6b3a764000090610862908663ffffffff61190f16565b9063ffffffff6118cd16565b9063ffffffff61188416565b93505050505b92915050565b6000546001600160a01b031681565b6002546001600160a01b031681565b43600b5461c35001106108fe576040805162461bcd60e51b815260206004820152601760248201527f4e65772065706f6368206e6f7420726561647920796574000000000000000000604482015290519081900360640190fd5b600d54600e546000908152600f60205260409020819055600c546109279163ffffffff61196816565b600c556000600d5543600b55600e80546001019055565b6000546001600160a01b0316331461095557600080fd5b60105460008054604080516370a0823160e01b8152306004820152905192936109e19390926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156109a957600080fd5b505afa1580156109bd573d6000803e3d6000fd5b505050506040513d60208110156109d357600080fd5b50519063ffffffff61188416565b90508015610a9057600054604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015610a3457600080fd5b505afa158015610a48573d6000803e3d6000fd5b505050506040513d6020811015610a5e57600080fd5b5051601055600954610a76908263ffffffff61196816565b600955600d54610a8c908263ffffffff61196816565b600d555b50565b336000818152601160205260409020544311610ae05760405162461bcd60e51b815260040180806020018281038252602c815260200180612118602c913960400191505060405180910390fd5b336000818152601160205260409020439055610b009084908490806119c2565b610b08610d88565b6000805460408051631fca1d6560e01b81526004810186905290516001600160a01b0390921692631fca1d659260248084019382900301818387803b158015610b5057600080fd5b505af1158015610b64573d6000803e3d6000fd5b50505050505050565b600280610b7933611570565b60ff161015610bbd576040805162461bcd60e51b815260206004820152601b602482015260008051602061205b833981519152604482015290519081900360640190fd5b60008311610c12576040805162461bcd60e51b815260206004820152601d60248201527f5a65726f20616c6c6f6320706f696e7473206e6f7420616c6c6f776564000000604482015290519081900360640190fd5b8115610c2057610c20610d3b565b610c6383610c5760078781548110610c3457fe5b90600052602060002090600502016001015460085461188490919063ffffffff16565b9063ffffffff61196816565b6008819055508260078581548110610c7757fe5b90600052602060002090600502016001018190555050505050565b600a5481565b600f6020526000908152604090205481565b600280610cb633611570565b60ff161015610cfa576040805162461bcd60e51b815260206004820152601b602482015260008051602061205b833981519152604482015290519081900360640190fd5b8160078481548110610d0857fe5b60009182526020909120600590910201600301805460ff1916911515919091179055505050565b600b5481565b600d5481565b6007546000805b82811015610d6d57610d63610d5682611ba0565b839063ffffffff61196816565b9150600101610d42565b50600954610d81908263ffffffff61188416565b6009555050565b600554610d94576110d8565b60008054604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015610de057600080fd5b505afa158015610df4573d6000803e3d6000fd5b505050506040513d6020811015610e0a57600080fd5b5051600554909150600090610e2d9060649061086290601363ffffffff61190f16565b90506000610e4c6064610862601360055461190f90919063ffffffff16565b90506000610e698261086e8560055461188490919063ffffffff16565b9050836005541115610ebc57610e8b606461086286601363ffffffff61190f16565b9250610ea3606461086286601363ffffffff61190f16565b9150610eb98261086e868663ffffffff61188416565b90505b600080546003546040805163a9059cbb60e01b81526001600160a01b039283166004820152602481018890529051919092169263a9059cbb92604480820193602093909283900390910190829087803b158015610f1857600080fd5b505af1158015610f2c573d6000803e3d6000fd5b505050506040513d6020811015610f4257600080fd5b5050600080546002546040805163a9059cbb60e01b81526001600160a01b039283166004820152602481018790529051919092169263a9059cbb92604480820193602093909283900390910190829087803b158015610fa057600080fd5b505af1158015610fb4573d6000803e3d6000fd5b505050506040513d6020811015610fca57600080fd5b5050600080546001546040805163a9059cbb60e01b81526001600160a01b039283166004820152602481018690529051919092169263a9059cbb92604480820193602093909283900390910190829087803b15801561102857600080fd5b505af115801561103c573d6000803e3d6000fd5b505050506040513d602081101561105257600080fd5b5050600054604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561109f57600080fd5b505afa1580156110b3573d6000803e3d6000fd5b505050506040513d60208110156110c957600080fd5b50516010555050600060055550505b565b6002806110e633611570565b60ff16101561112a576040805162461bcd60e51b815260206004820152601b602482015260008051602061205b833981519152604482015290519081900360640190fd5b6096821115611180576040805162461bcd60e51b815260206004820152601960248201527f7472656173757279466565206361707065642061742031352500000000000000604482015290519081900360640190fd5b50600455565b60028061119233611570565b60ff1610156111d6576040805162461bcd60e51b815260206004820152601b602482015260008051602061205b833981519152604482015290519081900360640190fd5b6000841161122b576040805162461bcd60e51b815260206004820152601d60248201527f5a65726f20616c6c6f6320706f696e7473206e6f7420616c6c6f776564000000604482015290519081900360640190fd5b6001600160a01b0383166000908152601260205260409020805460ff19166001179055611256610d3b565b60075460005b818110156112f057846001600160a01b03166007828154811061127b57fe5b60009182526020909120600590910201546001600160a01b031614156112e8576040805162461bcd60e51b815260206004820152601860248201527f4572726f7220706f6f6c20616c72656164792061646465640000000000000000604482015290519081900360640190fd5b60010161125c565b50600854611304908663ffffffff61196816565b6008555050604080516080810182526001600160a01b0393841681526020810194855260009181018281529215156060820190815260078054600181018255935290517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688600590930292830180546001600160a01b031916919095161790935592517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c689840155517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a830155517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68b909101805460ff1916911515919091179055565b6003546001600160a01b0316331461145b576040805162461bcd60e51b8152602060048201526014602482015273547265617375727920686f6c646572206f6e6c7960601b604482015290519081900360640190fd5b600380546001600160a01b0319166001600160a01b0392909216919091179055565b600e5481565b60066020908152600092835260408084209091529082529020805460019091015482565b60006105fc6114c1600a544361188490919063ffffffff16565b600d54600c546108629163ffffffff61196816565b6001600160a01b03811660009081526012602052604090205460ff165b919050565b6001546001600160a01b0316331461154e576040805162461bcd60e51b8152602060048201526014602482015273547265617375727920686f6c646572206f6e6c7960601b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546040805163c25cc8af60e01b81526001600160a01b0385811660048301529151919092169163c25cc8af916024808301926020929190829003018186803b1580156115be57600080fd5b505afa1580156115d2573d6000803e3d6000fd5b505050506040513d60208110156115e857600080fd5b505192915050565b600c5481565b60045481565b60055481565b6001546001600160a01b031681565b33600081815260116020526040902054431161165e5760405162461bcd60e51b815260040180806020018281038252602c815260200180612118602c913960400191505060405180910390fd5b336000908152601160205260409020439055816116c2576040805162461bcd60e51b815260206004820152601a60248201527f63616e6e6f74206465706f736974207a65726f20746f6b656e73000000000000604482015290519081900360640190fd5b6000600784815481106116d157fe5b600091825260208083208784526006825260408085203380875293529093206005909202909201925090611706908690611cf3565b8154604080516323b872dd60e01b81523360048201523060248201526044810187905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b15801561175f57600080fd5b505af1158015611773573d6000803e3d6000fd5b505050506040513d602081101561178957600080fd5b5050805461179d908563ffffffff61196816565b80825560028301546117c391670de0b6b3a764000091610862919063ffffffff61190f16565b6001820155604080518581529051869133917f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a159181900360200190a35050505050565b60095481565b6002546001600160a01b03163314611862576040805162461bcd60e51b8152602060048201526014602482015273547265617375727920686f6c646572206f6e6c7960601b604482015290519081900360640190fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b60006118c683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d18565b9392505050565b60006118c683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611daf565b60008261191e57506000610880565b8282028284828161192b57fe5b04146118c65760405162461bcd60e51b81526004018080602001828103825260218152602001806120ab6021913960400191505060405180910390fd5b6000828201838110156118c6576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000600785815481106119d157fe5b60009182526020909120600590910201600381015490915060ff16611a275760405162461bcd60e51b81526004018080602001828103825260268152602001806120cc6026913960400191505060405180910390fd5b60008581526006602090815260408083206001600160a01b038716845290915290208054851115611a895760405162461bcd60e51b81526004018080602001828103825260228152602001806120396022913960400191505060405180910390fd5b611a938685611cf3565b8415611b2f578054611aab908663ffffffff61188416565b815581546040805163a9059cbb60e01b81526001600160a01b038681166004830152602482018990529151919092169163a9059cbb9160448083019260209291908290030181600087803b158015611b0257600080fd5b505af1158015611b16573d6000803e3d6000fd5b505050506040513d6020811015611b2c57600080fd5b50505b60028201548154611b5391670de0b6b3a7640000916108629163ffffffff61190f16565b600182015560408051868152905187916001600160a01b038616917ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b5689181900360200190a3505050505050565b60008060078381548110611bb057fe5b6000918252602080832060059092029091018054604080516370a0823160e01b815230600482015290519295506001600160a01b03909116926370a0823192602480840193829003018186803b158015611c0957600080fd5b505afa158015611c1d573d6000803e3d6000fd5b505050506040513d6020811015611c3357600080fd5b5051905080611c47576000925050506114f3565b611c66600854610862846001015460095461190f90919063ffffffff16565b92506000611c856127106108626004548761190f90919063ffffffff16565b90506000611c99858363ffffffff61188416565b600554909150611caf908363ffffffff61196816565b600555611ce2611cd18461086284670de0b6b3a764000063ffffffff61190f16565b60028601549063ffffffff61196816565b846002018190555050505050919050565b611cfb610d3b565b6000611d0783836107ee565b9050611d138282611e14565b505050565b60008184841115611da75760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611d6c578181015183820152602001611d54565b50505050905090810190601f168015611d995780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008183611dfe5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611d6c578181015183820152602001611d54565b506000838581611e0a57fe5b0495945050505050565b80611e1e57612034565b60008054604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015611e6a57600080fd5b505afa158015611e7e573d6000803e3d6000fd5b505050506040513d6020811015611e9457600080fd5b50519050808210611f2a57600080546040805163a9059cbb60e01b81526001600160a01b038781166004830152602482018690529151919092169263a9059cbb92604480820193602093909283900390910190829087803b158015611ef857600080fd5b505af1158015611f0c573d6000803e3d6000fd5b505050506040513d6020811015611f2257600080fd5b50611fb09050565b600080546040805163a9059cbb60e01b81526001600160a01b038781166004830152602482018790529151919092169263a9059cbb92604480820193602093909283900390910190829087803b158015611f8357600080fd5b505af1158015611f97573d6000803e3d6000fd5b505050506040513d6020811015611fad57600080fd5b50505b611fb8610d88565b600054604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561200357600080fd5b505afa158015612017573d6000803e3d6000fd5b505050506040513d602081101561202d57600080fd5b5051601055505b505056fe77697468647261773a207573657220616d6f756e7420696e73756666696369656e7447726f7720736f6d65206d75737461636865206b6964646f2e2e2e00000000007468697320746f6b656e20697320696e746f206120706f6f6c20616e2063616e6e6f742077652077697468647261776e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775769746864726177696e672066726f6d207468697320706f6f6c2069732064697361626c656443616e6e6f7420776974686472617720556e69636f72652066726f6d2074686520706f6f6c7357616974203120626c6f636b206265747765656e2065616368206465706f7369742f7769746864726177616ca2646970667358221220df4f177877874db048a65110ef77e928bfbe2642850d30b2adcde4c3fcb0842164736f6c634300060600330000000000000000000000005506861bbb104baa8d8575e88e22084627b192d8
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061021c5760003560e01c8063630b5ba111610125578063bb0f03f2116100ad578063de2ccedf1161007c578063de2ccedf14610572578063e0447f781461057a578063e2bbb15814610582578063eded3fda146105a5578063f87a879b146105ad5761021c565b8063bb0f03f214610500578063c25cc8af14610526578063c8ffb87314610562578063cc32d1761461056a5761021c565b80637f0b2ffc116100f45780637f0b2ffc1461045f578063900cf0cf1461048557806393f1a40b1461048d5780639dbc2d90146104d2578063b5760d27146104da5761021c565b8063630b5ba1146103fe57806368f7471e1461040657806377e741c71461040e5780637abceffd1461042b5761021c565b80633aab0a62116101a857806349c5468d1161017757806349c5468d146103a45780634dc47d34146103ac5780635207cc0d146103c95780635d577c18146103ee578063608c8d3a146103f65761021c565b80633aab0a62146103445780633e158b0c1461034e578063441a3e701461035657806346ca6bea146103795761021c565b80631526fe27116101ef5780631526fe27146102b157806317caf6f11461030057806319076e20146103085780631a6af7af146103345780633081d2581461033c5761021c565b806303dec00914610221578063081e3eda1461023b5780630d3e805a146102435780631156c72414610267575b600080fd5b6102296105d3565b60408051918252519081900360200190f35b610229610601565b61024b610607565b604080516001600160a01b039092168252519081900360200190f35b61029d6004803603606081101561027d57600080fd5b506001600160a01b03813581169160208101359091169060400135610616565b604080519115158252519081900360200190f35b6102ce600480360360208110156102c757600080fd5b50356107a4565b604080516001600160a01b03909516855260208501939093528383019190915215156060830152519081900360800190f35b6102296107e8565b6102296004803603604081101561031e57600080fd5b50803590602001356001600160a01b03166107ee565b61024b610886565b61024b610895565b61034c6108a4565b005b61034c61093e565b61034c6004803603604081101561036c57600080fd5b5080359060200135610a93565b61034c6004803603606081101561038f57600080fd5b50803590602081013590604001351515610b6d565b610229610c92565b610229600480360360208110156103c257600080fd5b5035610c98565b61034c600480360360408110156103df57600080fd5b50803590602001351515610caa565b610229610d2f565b610229610d35565b61034c610d3b565b61034c610d88565b61034c6004803603602081101561042457600080fd5b50356110da565b61034c6004803603606081101561044157600080fd5b508035906001600160a01b0360208201351690604001351515611186565b61034c6004803603602081101561047557600080fd5b50356001600160a01b0316611405565b61022961147d565b6104b9600480360360408110156104a357600080fd5b50803590602001356001600160a01b0316611483565b6040805192835260208301919091528051918290030190f35b6102296114a7565b61029d600480360360208110156104f057600080fd5b50356001600160a01b03166114d6565b61034c6004803603602081101561051657600080fd5b50356001600160a01b03166114f8565b61054c6004803603602081101561053c57600080fd5b50356001600160a01b0316611570565b6040805160ff9092168252519081900360200190f35b6102296115f0565b6102296115f6565b6102296115fc565b61024b611602565b61034c6004803603604081101561059857600080fd5b5080359060200135611611565b610229611806565b61034c600480360360208110156105c357600080fd5b50356001600160a01b031661180c565b60006105fc6105ed600b544361188490919063ffffffff16565b600d549063ffffffff6118cd16565b905090565b60075490565b6003546001600160a01b031681565b600060028061062433611570565b60ff161015610668576040805162461bcd60e51b815260206004820152601b602482015260008051602061205b833981519152604482015290519081900360640190fd5b6000546001600160a01b03858116911614156106b55760405162461bcd60e51b81526004018080602001828103825260268152602001806120f26026913960400191505060405180910390fd5b6001600160a01b03841660009081526012602052604090205460ff161561070d5760405162461bcd60e51b815260040180806020018281038252603081526020018061207b6030913960400191505060405180910390fd5b836001600160a01b031663a9059cbb86856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561076d57600080fd5b505af1158015610781573d6000803e3d6000fd5b505050506040513d602081101561079757600080fd5b5060019695505050505050565b600781815481106107b157fe5b600091825260209091206005909102018054600182015460028301546003909301546001600160a01b039092169350919060ff1684565b60085481565b600080600784815481106107fe57fe5b600091825260208083208784526006825260408085206001600160a01b03891686529092529220600260059092029092019081015460018301548354929450909161087a919061086e90670de0b6b3a764000090610862908663ffffffff61190f16565b9063ffffffff6118cd16565b9063ffffffff61188416565b93505050505b92915050565b6000546001600160a01b031681565b6002546001600160a01b031681565b43600b5461c35001106108fe576040805162461bcd60e51b815260206004820152601760248201527f4e65772065706f6368206e6f7420726561647920796574000000000000000000604482015290519081900360640190fd5b600d54600e546000908152600f60205260409020819055600c546109279163ffffffff61196816565b600c556000600d5543600b55600e80546001019055565b6000546001600160a01b0316331461095557600080fd5b60105460008054604080516370a0823160e01b8152306004820152905192936109e19390926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156109a957600080fd5b505afa1580156109bd573d6000803e3d6000fd5b505050506040513d60208110156109d357600080fd5b50519063ffffffff61188416565b90508015610a9057600054604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015610a3457600080fd5b505afa158015610a48573d6000803e3d6000fd5b505050506040513d6020811015610a5e57600080fd5b5051601055600954610a76908263ffffffff61196816565b600955600d54610a8c908263ffffffff61196816565b600d555b50565b336000818152601160205260409020544311610ae05760405162461bcd60e51b815260040180806020018281038252602c815260200180612118602c913960400191505060405180910390fd5b336000818152601160205260409020439055610b009084908490806119c2565b610b08610d88565b6000805460408051631fca1d6560e01b81526004810186905290516001600160a01b0390921692631fca1d659260248084019382900301818387803b158015610b5057600080fd5b505af1158015610b64573d6000803e3d6000fd5b50505050505050565b600280610b7933611570565b60ff161015610bbd576040805162461bcd60e51b815260206004820152601b602482015260008051602061205b833981519152604482015290519081900360640190fd5b60008311610c12576040805162461bcd60e51b815260206004820152601d60248201527f5a65726f20616c6c6f6320706f696e7473206e6f7420616c6c6f776564000000604482015290519081900360640190fd5b8115610c2057610c20610d3b565b610c6383610c5760078781548110610c3457fe5b90600052602060002090600502016001015460085461188490919063ffffffff16565b9063ffffffff61196816565b6008819055508260078581548110610c7757fe5b90600052602060002090600502016001018190555050505050565b600a5481565b600f6020526000908152604090205481565b600280610cb633611570565b60ff161015610cfa576040805162461bcd60e51b815260206004820152601b602482015260008051602061205b833981519152604482015290519081900360640190fd5b8160078481548110610d0857fe5b60009182526020909120600590910201600301805460ff1916911515919091179055505050565b600b5481565b600d5481565b6007546000805b82811015610d6d57610d63610d5682611ba0565b839063ffffffff61196816565b9150600101610d42565b50600954610d81908263ffffffff61188416565b6009555050565b600554610d94576110d8565b60008054604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015610de057600080fd5b505afa158015610df4573d6000803e3d6000fd5b505050506040513d6020811015610e0a57600080fd5b5051600554909150600090610e2d9060649061086290601363ffffffff61190f16565b90506000610e4c6064610862601360055461190f90919063ffffffff16565b90506000610e698261086e8560055461188490919063ffffffff16565b9050836005541115610ebc57610e8b606461086286601363ffffffff61190f16565b9250610ea3606461086286601363ffffffff61190f16565b9150610eb98261086e868663ffffffff61188416565b90505b600080546003546040805163a9059cbb60e01b81526001600160a01b039283166004820152602481018890529051919092169263a9059cbb92604480820193602093909283900390910190829087803b158015610f1857600080fd5b505af1158015610f2c573d6000803e3d6000fd5b505050506040513d6020811015610f4257600080fd5b5050600080546002546040805163a9059cbb60e01b81526001600160a01b039283166004820152602481018790529051919092169263a9059cbb92604480820193602093909283900390910190829087803b158015610fa057600080fd5b505af1158015610fb4573d6000803e3d6000fd5b505050506040513d6020811015610fca57600080fd5b5050600080546001546040805163a9059cbb60e01b81526001600160a01b039283166004820152602481018690529051919092169263a9059cbb92604480820193602093909283900390910190829087803b15801561102857600080fd5b505af115801561103c573d6000803e3d6000fd5b505050506040513d602081101561105257600080fd5b5050600054604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561109f57600080fd5b505afa1580156110b3573d6000803e3d6000fd5b505050506040513d60208110156110c957600080fd5b50516010555050600060055550505b565b6002806110e633611570565b60ff16101561112a576040805162461bcd60e51b815260206004820152601b602482015260008051602061205b833981519152604482015290519081900360640190fd5b6096821115611180576040805162461bcd60e51b815260206004820152601960248201527f7472656173757279466565206361707065642061742031352500000000000000604482015290519081900360640190fd5b50600455565b60028061119233611570565b60ff1610156111d6576040805162461bcd60e51b815260206004820152601b602482015260008051602061205b833981519152604482015290519081900360640190fd5b6000841161122b576040805162461bcd60e51b815260206004820152601d60248201527f5a65726f20616c6c6f6320706f696e7473206e6f7420616c6c6f776564000000604482015290519081900360640190fd5b6001600160a01b0383166000908152601260205260409020805460ff19166001179055611256610d3b565b60075460005b818110156112f057846001600160a01b03166007828154811061127b57fe5b60009182526020909120600590910201546001600160a01b031614156112e8576040805162461bcd60e51b815260206004820152601860248201527f4572726f7220706f6f6c20616c72656164792061646465640000000000000000604482015290519081900360640190fd5b60010161125c565b50600854611304908663ffffffff61196816565b6008555050604080516080810182526001600160a01b0393841681526020810194855260009181018281529215156060820190815260078054600181018255935290517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688600590930292830180546001600160a01b031916919095161790935592517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c689840155517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a830155517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68b909101805460ff1916911515919091179055565b6003546001600160a01b0316331461145b576040805162461bcd60e51b8152602060048201526014602482015273547265617375727920686f6c646572206f6e6c7960601b604482015290519081900360640190fd5b600380546001600160a01b0319166001600160a01b0392909216919091179055565b600e5481565b60066020908152600092835260408084209091529082529020805460019091015482565b60006105fc6114c1600a544361188490919063ffffffff16565b600d54600c546108629163ffffffff61196816565b6001600160a01b03811660009081526012602052604090205460ff165b919050565b6001546001600160a01b0316331461154e576040805162461bcd60e51b8152602060048201526014602482015273547265617375727920686f6c646572206f6e6c7960601b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546040805163c25cc8af60e01b81526001600160a01b0385811660048301529151919092169163c25cc8af916024808301926020929190829003018186803b1580156115be57600080fd5b505afa1580156115d2573d6000803e3d6000fd5b505050506040513d60208110156115e857600080fd5b505192915050565b600c5481565b60045481565b60055481565b6001546001600160a01b031681565b33600081815260116020526040902054431161165e5760405162461bcd60e51b815260040180806020018281038252602c815260200180612118602c913960400191505060405180910390fd5b336000908152601160205260409020439055816116c2576040805162461bcd60e51b815260206004820152601a60248201527f63616e6e6f74206465706f736974207a65726f20746f6b656e73000000000000604482015290519081900360640190fd5b6000600784815481106116d157fe5b600091825260208083208784526006825260408085203380875293529093206005909202909201925090611706908690611cf3565b8154604080516323b872dd60e01b81523360048201523060248201526044810187905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b15801561175f57600080fd5b505af1158015611773573d6000803e3d6000fd5b505050506040513d602081101561178957600080fd5b5050805461179d908563ffffffff61196816565b80825560028301546117c391670de0b6b3a764000091610862919063ffffffff61190f16565b6001820155604080518581529051869133917f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a159181900360200190a35050505050565b60095481565b6002546001600160a01b03163314611862576040805162461bcd60e51b8152602060048201526014602482015273547265617375727920686f6c646572206f6e6c7960601b604482015290519081900360640190fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b60006118c683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d18565b9392505050565b60006118c683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611daf565b60008261191e57506000610880565b8282028284828161192b57fe5b04146118c65760405162461bcd60e51b81526004018080602001828103825260218152602001806120ab6021913960400191505060405180910390fd5b6000828201838110156118c6576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000600785815481106119d157fe5b60009182526020909120600590910201600381015490915060ff16611a275760405162461bcd60e51b81526004018080602001828103825260268152602001806120cc6026913960400191505060405180910390fd5b60008581526006602090815260408083206001600160a01b038716845290915290208054851115611a895760405162461bcd60e51b81526004018080602001828103825260228152602001806120396022913960400191505060405180910390fd5b611a938685611cf3565b8415611b2f578054611aab908663ffffffff61188416565b815581546040805163a9059cbb60e01b81526001600160a01b038681166004830152602482018990529151919092169163a9059cbb9160448083019260209291908290030181600087803b158015611b0257600080fd5b505af1158015611b16573d6000803e3d6000fd5b505050506040513d6020811015611b2c57600080fd5b50505b60028201548154611b5391670de0b6b3a7640000916108629163ffffffff61190f16565b600182015560408051868152905187916001600160a01b038616917ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b5689181900360200190a3505050505050565b60008060078381548110611bb057fe5b6000918252602080832060059092029091018054604080516370a0823160e01b815230600482015290519295506001600160a01b03909116926370a0823192602480840193829003018186803b158015611c0957600080fd5b505afa158015611c1d573d6000803e3d6000fd5b505050506040513d6020811015611c3357600080fd5b5051905080611c47576000925050506114f3565b611c66600854610862846001015460095461190f90919063ffffffff16565b92506000611c856127106108626004548761190f90919063ffffffff16565b90506000611c99858363ffffffff61188416565b600554909150611caf908363ffffffff61196816565b600555611ce2611cd18461086284670de0b6b3a764000063ffffffff61190f16565b60028601549063ffffffff61196816565b846002018190555050505050919050565b611cfb610d3b565b6000611d0783836107ee565b9050611d138282611e14565b505050565b60008184841115611da75760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611d6c578181015183820152602001611d54565b50505050905090810190601f168015611d995780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008183611dfe5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611d6c578181015183820152602001611d54565b506000838581611e0a57fe5b0495945050505050565b80611e1e57612034565b60008054604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015611e6a57600080fd5b505afa158015611e7e573d6000803e3d6000fd5b505050506040513d6020811015611e9457600080fd5b50519050808210611f2a57600080546040805163a9059cbb60e01b81526001600160a01b038781166004830152602482018690529151919092169263a9059cbb92604480820193602093909283900390910190829087803b158015611ef857600080fd5b505af1158015611f0c573d6000803e3d6000fd5b505050506040513d6020811015611f2257600080fd5b50611fb09050565b600080546040805163a9059cbb60e01b81526001600160a01b038781166004830152602482018790529151919092169263a9059cbb92604480820193602093909283900390910190829087803b158015611f8357600080fd5b505af1158015611f97573d6000803e3d6000fd5b505050506040513d6020811015611fad57600080fd5b50505b611fb8610d88565b600054604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561200357600080fd5b505afa158015612017573d6000803e3d6000fd5b505050506040513d602081101561202d57600080fd5b5051601055505b505056fe77697468647261773a207573657220616d6f756e7420696e73756666696369656e7447726f7720736f6d65206d75737461636865206b6964646f2e2e2e00000000007468697320746f6b656e20697320696e746f206120706f6f6c20616e2063616e6e6f742077652077697468647261776e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775769746864726177696e672066726f6d207468697320706f6f6c2069732064697361626c656443616e6e6f7420776974686472617720556e69636f72652066726f6d2074686520706f6f6c7357616974203120626c6f636b206265747765656e2065616368206465706f7369742f7769746864726177616ca2646970667358221220df4f177877874db048a65110ef77e928bfbe2642850d30b2adcde4c3fcb0842164736f6c63430006060033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000005506861bbb104baa8d8575e88e22084627b192d8
-----Decoded View---------------
Arg [0] : _UniCore (address): 0x5506861bbb104Baa8d8575e88E22084627B192D8
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000005506861bbb104baa8d8575e88e22084627b192d8
Deployed Bytecode Sourcemap
308:15137:2:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;308:15137:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;3390:189:2;;;:::i;:::-;;;;;;;;;;;;;;;;2929:123;;;:::i;488:24::-;;;:::i;:::-;;;;-1:-1:-1;;;;;488:24:2;;;;;;;;;;;;;;14902:457;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;14902:457:2;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1482:26;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1482:26:2;;:::i;:::-;;;;-1:-1:-1;;;;;1482:26:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1517:30;;;:::i;11923:345::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;11923:345:2;;;;;;-1:-1:-1;;;;;11923:345:2;;:::i;375:22::-;;;:::i;457:24::-;;;:::i;5729:411::-;;;:::i;:::-;;8831:493;;;:::i;10724:365::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;10724:365:2;;;;;;;:::i;5020:363::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;5020:363:2;;;;;;;;;;;;;;:::i;1731:33::-;;;:::i;3638:44::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;3638:44:2;;:::i;5450:151::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;5450:151:2;;;;;;;;;:::i;1771:41::-;;;:::i;1868:33::-;;;:::i;7274:328::-;;;:::i;12425:1075::-;;;:::i;14059:170::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;14059:170:2;;:::i;3782:1128::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;3782:1128:2;;;-1:-1:-1;;;;;3782:1128:2;;;;;;;;;;;;:::i;14543:145::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;14543:145:2;-1:-1:-1;;;;;14543:145:2;;:::i;1908:17::-;;;:::i;872:64::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;872:64:2;;;;;;-1:-1:-1;;;;;872:64:2;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3124:216;;;:::i;14764:132::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;14764:132:2;-1:-1:-1;;;;;14764:132:2;;:::i;14241:145::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;14241:145:2;-1:-1:-1;;;;;14241:145:2;;:::i;13738:147::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;13738:147:2;-1:-1:-1;;;;;13738:147:2;;:::i;:::-;;;;;;;;;;;;;;;;;;;1819:42;;;:::i;519:26::-;;;:::i;552:37::-;;;:::i;426:24::-;;;:::i;9914:766::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;9914:766:2;;;;;;;:::i;1641:29::-;;;:::i;14392:145::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;14392:145:2;-1:-1:-1;;;;;14392:145:2;;:::i;3390:189::-;3449:23;3503:68;3526:44;3543:26;;3526:12;:16;;:44;;;;:::i;:::-;3503:18;;;:68;:22;:68;:::i;:::-;3485:86;;3390:189;:::o;2929:123::-;3001:8;:15;2929:123;:::o;488:24::-;;;-1:-1:-1;;;;;488:24:2;;:::o;14902:457::-;15024:4;15013:1;;13954:31;13974:10;13954:19;:31::i;:::-;:41;;;;13946:81;;;;;-1:-1:-1;;;13946:81:2;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;13946:81:2;;;;;;;;;;;;;;;15066:7:::1;::::0;-1:-1:-1;;;;;15049:24:2;;::::1;15066:7:::0;::::1;15049:24;;15041:75;;;;-1:-1:-1::0;;;15041:75:2::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;15136:37:2;::::1;;::::0;;;:22:::1;:37;::::0;;;;;::::1;;15135:38;15127:99;;;;-1:-1:-1::0;;;15127:99:2::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15244:13;-1:-1:-1::0;;;;;15237:30:2::1;;15268:10;15280:7;15237:51;;;;;;;;;;;;;-1:-1:-1::0;;;;;15237:51:2::1;-1:-1:-1::0;;;;;15237:51:2::1;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;15237:51:2;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;15237:51:2;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;15347:4:2::1;::::0;14902:457;-1:-1:-1;;;;;;14902:457:2:o;1482:26::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1482:26:2;;;;-1:-1:-1;1482:26:2;;;;;:::o;1517:30::-;;;;:::o;11923:345::-;11997:7;12017:21;12041:8;12050:4;12041:14;;;;;;;;;;;;;;;;12090;;;:8;:14;;;;;;-1:-1:-1;;;;;12090:21:2;;;;;;;;;12151:23;12041:14;;;;;;;12151:23;;;;12244:15;;;;12194:11;;12041:14;;-1:-1:-1;12151:23:2;;12194:66;;12244:15;12194:45;;12234:4;;12194:35;;12151:23;12194:35;:15;:35;:::i;:::-;:39;:45;:39;:45;:::i;:::-;:49;:66;:49;:66;:::i;:::-;12187:73;;;;;11923:345;;;;;:::o;375:22::-;;;-1:-1:-1;;;;;375:22:2;;:::o;457:24::-;;;-1:-1:-1;;;;;457:24:2;;:::o;5729:411::-;5817:12;5780:26;;5809:5;5780:34;:49;5772:85;;;;;-1:-1:-1;;;5772:85:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;5919:18;;5910:5;;5897:19;;;;:12;:19;;;;;:40;;;5978:27;;:51;;;:31;:51;:::i;:::-;5948:27;:81;6061:1;6040:18;:22;6102:12;6073:26;:41;6127:5;6125:7;;-1:-1:-1;6125:7:2;;;5729:411::o;8831:493::-;8754:7;;-1:-1:-1;;;;;8754:7:2;8740:10;:21;8732:30;;12:1:-1;9;2:12;8732:30:2;9004:14:::1;::::0;8938:18:::1;8966:7:::0;;8959:40:::1;::::0;;-1:-1:-1;;;8959:40:2;;8993:4:::1;8959:40;::::0;::::1;::::0;;;8938:18;;8959:60:::1;::::0;9004:14;;-1:-1:-1;;;;;8966:7:2::1;::::0;8959:25:::1;::::0;:40;;;;;::::1;::::0;;;;;;;;8966:7;8959:40;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;8959:40:2;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;8959:40:2;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;8959:40:2;;:60:::1;:44;:60;:::i;:::-;8938:81:::0;-1:-1:-1;9065:14:2;;9062:255:::1;;9121:7;::::0;9114:40:::1;::::0;;-1:-1:-1;;;9114:40:2;;9148:4:::1;9114:40;::::0;::::1;::::0;;;-1:-1:-1;;;;;9121:7:2;;::::1;::::0;9114:25:::1;::::0;:40;;;;;::::1;::::0;;;;;;;;;9121:7;9114:40;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;9114:40:2;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;9114:40:2;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;9114:40:2;9096:14:::1;:58:::0;9205:14:::1;::::0;:30:::1;::::0;9224:10;9205:30:::1;:18;:30;:::i;:::-;9188:14;:47:::0;9271:18:::1;::::0;:34:::1;::::0;9294:10;9271:34:::1;:22;:34;:::i;:::-;9250:18;:55:::0;9062:255:::1;8773:1;8831:493::o:0;10724:365::-;10794:10;9754:21;;;;:11;:21;;;;;;9739:12;:36;9731:93;;;;-1:-1:-1;;;9731:93:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10829:10:::1;10817:23;::::0;;;:11:::1;:23;::::0;;;;10843:12:::1;10817:38:::0;;10866:48:::1;::::0;10876:4;;10882:7;;10829:10;10866:9:::1;:48::i;:::-;10925:22;:20;:22::i;:::-;11016:7;::::0;;11007:38:::1;::::0;;-1:-1:-1;;;11007:38:2;;::::1;::::0;::::1;::::0;;;;;-1:-1:-1;;;;;11016:7:2;;::::1;::::0;11007:29:::1;::::0;:38;;;;;;;;;;11016:7;;11007:38;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;11007:38:2;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;11007:38:2;;;;10724:365:::0;;;:::o;5020:363::-;5113:1;;13954:31;13974:10;13954:19;:31::i;:::-;:41;;;;13946:81;;;;;-1:-1:-1;;;13946:81:2;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;13946:81:2;;;;;;;;;;;;;;;5149:1:::1;5135:11;:15;5127:57;;;::::0;;-1:-1:-1;;;5127:57:2;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;5199:11;5195:37;;;5213:17;:15;:17::i;:::-;5262:63;5313:11;5262:46;5282:8;5291:4;5282:14;;;;;;;;;;;;;;;;;;:25;;;5262:15;;:19;;:46;;;;:::i;:::-;:50:::0;:63:::1;:50;:63;:::i;:::-;5244:15;:81;;;;5364:11;5336:8;5345:4;5336:14;;;;;;;;;;;;;;;;;;:25;;:39;;;;5020:363:::0;;;;:::o;1731:33::-;;;;:::o;3638:44::-;;;;;;;;;;;;;:::o;5450:151::-;5536:1;;13954:31;13974:10;13954:19;:31::i;:::-;:41;;;;13946:81;;;;;-1:-1:-1;;;13946:81:2;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;13946:81:2;;;;;;;;;;;;;;;5580:13:::1;5550:8;5559:4;5550:14;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;;:27;;:43:::0;;-1:-1:-1;;5550:43:2::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;;;5450:151:2:o;1771:41::-;;;;:::o;1868:33::-;;;;:::o;7274:328::-;7336:8;:15;7319:14;;7399:138;7427:6;7421:3;:12;7399:138;;;7470:31;7485:15;7496:3;7485:10;:15::i;:::-;7470:10;;:31;:14;:31;:::i;:::-;7457:44;-1:-1:-1;7435:5:2;;7399:138;;;-1:-1:-1;7564:14:2;;:30;;7583:10;7564:30;:18;:30;:::i;:::-;7547:14;:47;-1:-1:-1;;7274:328:2:o;12425:1075::-;12478:22;;12475:39;;12507:7;;12475:39;12526:18;12554:7;;12547:40;;;-1:-1:-1;;;12547:40:2;;12581:4;12547:40;;;;;;-1:-1:-1;;;;;12554:7:2;;;;12547:25;;:40;;;;;;;;;;;;;;;12554:7;12547:40;;;2:2:-1;;;;27:1;24;17:12;2:2;12547:40:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12547:40:2;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;12547:40:2;12651:22;;12547:40;;-1:-1:-1;12632:16:2;;12651:39;;12686:3;;12651:30;;12678:2;12651:30;:26;:30;:::i;:39::-;12632:58;;12708:16;12727:39;12762:3;12727:30;12754:2;12727:22;;:26;;:30;;;;:::i;:39::-;12708:58;;12784:16;12803:50;12844:8;12803:36;12830:8;12803:22;;:26;;:36;;;;:::i;:50::-;12784:69;;12970:10;12945:22;;:35;12941:244;;;13008:27;13031:3;13008:18;:10;13023:2;13008:18;:14;:18;:::i;:27::-;12997:38;-1:-1:-1;13068:27:2;13091:3;13068:18;:10;13083:2;13068:18;:14;:18;:::i;:27::-;13057:38;-1:-1:-1;13128:38:2;13057;13128:24;:10;13143:8;13128:24;:14;:24;:::i;:38::-;13117:49;;12941:244;13209:7;;;13227:9;;13202:45;;;-1:-1:-1;;;13202:45:2;;-1:-1:-1;;;;;13227:9:2;;;13202:45;;;;;;;;;;;;13209:7;;;;;13202:24;;:45;;;;;;;;;;;;;;;;;;13209:7;13202:45;;;2:2:-1;;;;27:1;24;17:12;2:2;13202:45:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13202:45:2;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;13269:7:2;;;13287:9;;13262:45;;;-1:-1:-1;;;13262:45:2;;-1:-1:-1;;;;;13287:9:2;;;13262:45;;;;;;;;;;;;13269:7;;;;;13262:24;;:45;;;;;13202;;13262;;;;;;;;;;;13269:7;13262:45;;;2:2:-1;;;;27:1;24;17:12;2:2;13262:45:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13262:45:2;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;13329:7:2;;;;13347:9;13322:45;;;-1:-1:-1;;;13322:45:2;;-1:-1:-1;;;;;13347:9:2;;;13322:45;;;;;;;;;;;;13329:7;;;;;13322:24;;:45;;;;;13262;;13322;;;;;;;;;;;13329:7;13322:45;;;2:2:-1;;;;27:1;24;17:12;2:2;13322:45:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13322:45:2;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;13408:7:2;;13401:40;;;-1:-1:-1;;;13401:40:2;;13435:4;13401:40;;;;;;-1:-1:-1;;;;;13408:7:2;;;;13401:25;;:40;;;;;13322:45;;13401:40;;;;;;;;13408:7;13401:40;;;2:2:-1;;;;27:1;24;17:12;2:2;13401:40:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13401:40:2;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;13401:40:2;13384:14;:57;-1:-1:-1;;13491:1:2;13466:22;:26;-1:-1:-1;;12425:1075:2;:::o;14059:170::-;14123:1;;13954:31;13974:10;13954:19;:31::i;:::-;:41;;;;13946:81;;;;;-1:-1:-1;;;13946:81:2;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;13946:81:2;;;;;;;;;;;;;;;14156:3:::1;14145:7;:14;;14137:52;;;::::0;;-1:-1:-1;;;14137:52:2;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;14200:11:2::1;:21:::0;14059:170::o;3782:1128::-;3886:1;;13954:31;13974:10;13954:19;:31::i;:::-;:41;;;;13946:81;;;;;-1:-1:-1;;;13946:81:2;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;13946:81:2;;;;;;;;;;;;;;;3922:1:::1;3908:11;:15;3900:57;;;::::0;;-1:-1:-1;;;3900:57:2;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;3968:36:2;::::1;;::::0;;;:22:::1;:36;::::0;;;;:43;;-1:-1:-1;;3968:43:2::1;4007:4;3968:43;::::0;;4353:17:::1;:15;:17::i;:::-;4400:8;:15:::0;4383:14:::1;4426:147;4454:6;4448:3;:12;4426:147;;;4521:12;-1:-1:-1::0;;;;;4492:41:2::1;:8;4501:3;4492:13;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;;:25:::0;-1:-1:-1;;;;;4492:25:2::1;:41;;4484:77;;;::::0;;-1:-1:-1;;;4484:77:2;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;4462:5;;4426:147;;;-1:-1:-1::0;4603:15:2::1;::::0;:32:::1;::::0;4623:11;4603:32:::1;:19;:32;:::i;:::-;4585:15;:50:::0;-1:-1:-1;;4693:198:2::1;::::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;;;;;4693:198:2;;::::1;::::0;;::::1;::::0;::::1;::::0;;;-1:-1:-1;4693:198:2;;;;;;;::::1;;::::0;;;;;;4665:8:::1;27:10:-1::0;;39:1:::1;23:18:::0;::::1;45:23:::0;;4665:237:2;;;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;-1:-1:-1;;;;;;4665:237:2::1;::::0;;;::::1;;::::0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4665:237:2::1;::::0;::::1;;::::0;;;::::1;::::0;;3782:1128::o;14543:145::-;14619:9;;-1:-1:-1;;;;;14619:9:2;14605:10;:23;14597:56;;;;;-1:-1:-1;;;14597:56:2;;;;;;;;;;;;-1:-1:-1;;;14597:56:2;;;;;;;;;;;;;;;14664:9;:16;;-1:-1:-1;;;;;;14664:16:2;-1:-1:-1;;;;;14664:16:2;;;;;;;;;;14543:145::o;1908:17::-;;;;:::o;872:64::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3124:216::-;3188:20;3239:93;3295:36;3312:18;;3295:12;:16;;:36;;;;:::i;:::-;3271:18;;3239:27;;:51;;;:31;:51;:::i;14764:132::-;-1:-1:-1;;;;;14858:30:2;;14834:4;14858:30;;;:22;:30;;;;;;;;14764:132;;;;:::o;14241:145::-;14317:9;;-1:-1:-1;;;;;14317:9:2;14303:10;:23;14295:56;;;;;-1:-1:-1;;;14295:56:2;;;;;;;;;;;;-1:-1:-1;;;14295:56:2;;;;;;;;;;;;;;;14362:9;:16;;-1:-1:-1;;;;;;14362:16:2;-1:-1:-1;;;;;14362:16:2;;;;;;;;;;14241:145::o;13738:147::-;13805:5;13839:7;;13830:47;;;-1:-1:-1;;;13830:47:2;;-1:-1:-1;;;;;13830:47:2;;;;;;;;;13839:7;;;;;13830:37;;:47;;;;;;;;;;;;;;13839:7;13830:47;;;2:2:-1;;;;27:1;24;17:12;2:2;13830:47:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13830:47:2;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;13830:47:2;;13738:147;-1:-1:-1;;13738:147:2:o;1819:42::-;;;;:::o;519:26::-;;;;:::o;552:37::-;;;;:::o;426:24::-;;;-1:-1:-1;;;;;426:24:2;;:::o;9914:766::-;9983:10;9754:21;;;;:11;:21;;;;;;9739:12;:36;9731:93;;;;-1:-1:-1;;;9731:93:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10018:10:::1;10006:23;::::0;;;:11:::1;:23;::::0;;;;10032:12:::1;10006:38:::0;;10073:11;10065:50:::1;;;::::0;;-1:-1:-1;;;10065:50:2;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;10136:21;10160:8;10169:4;10160:14;;;;;;;;;::::0;;;::::1;::::0;;;10209;;;:8:::1;:14:::0;;;;;;10224:10:::1;10209:26:::0;;;;;;;;10160:14:::1;::::0;;::::1;::::0;;::::1;::::0;-1:-1:-1;10209:26:2;10248:40:::1;::::0;10218:4;;10248:22:::1;:40::i;:::-;10396:16:::0;;10389:73:::1;::::0;;-1:-1:-1;;;10389:73:2;;10427:10:::1;10389:73;::::0;::::1;::::0;10447:4:::1;10389:73:::0;;;;;;;;;;;;-1:-1:-1;;;;;10396:16:2;;::::1;::::0;10389:37:::1;::::0;:73;;;;;::::1;::::0;;;;;;;;;10396:16:::1;::::0;10389:73;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;10389:73:2;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;10389:73:2;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;;10487:11:2;;:24:::1;::::0;10503:7;10487:24:::1;:15;:24;:::i;:::-;10473:38:::0;;;10578:23:::1;::::0;::::1;::::0;10562:50:::1;::::0;10607:4:::1;::::0;10562:40:::1;::::0;10473:38;10562:40:::1;:15;:40;:::i;:50::-;10544:15;::::0;::::1;:68:::0;10638:34:::1;::::0;;;;;;;10658:4;;10646:10:::1;::::0;10638:34:::1;::::0;;;;::::1;::::0;;::::1;9835:1;;9914:766:::0;;;:::o;1641:29::-;;;;:::o;14392:145::-;14468:9;;-1:-1:-1;;;;;14468:9:2;14454:10;:23;14446:56;;;;;-1:-1:-1;;;14446:56:2;;;;;;;;;;;;-1:-1:-1;;;14446:56:2;;;;;;;;;;;;;;;14513:9;:16;;-1:-1:-1;;;;;;14513:16:2;-1:-1:-1;;;;;14513:16:2;;;;;;;;;;14392:145::o;2285:136:1:-;2343:7;2370:43;2374:1;2377;2370:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2363:50;2285:136;-1:-1:-1;;;2285:136:1:o;4122:132::-;4180:7;4207:39;4211:1;4214;4207:39;;;;;;;;;;;;;;;;;:3;:39::i;3175:471::-;3233:7;3478:6;3474:47;;-1:-1:-1;3508:1:1;3501:8;;3474:47;3545:5;;;3549:1;3545;:5;:1;3569:5;;;;;:10;3561:56;;;;-1:-1:-1;;;3561:56:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1821:181;1879:7;1911:5;;;1935:6;;;;1927:46;;;;;-1:-1:-1;;;1927:46:1;;;;;;;;;;;;;;;;;;;;;;;;;;;11095:755:2;11193:21;11217:8;11226:4;11217:14;;;;;;;;;;;;;;;;;;;;;11250:17;;;;11217:14;;-1:-1:-1;11250:17:2;;11242:68;;;;-1:-1:-1;;;11242:68:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11331:21;11355:14;;;:8;:14;;;;;;;;-1:-1:-1;;;;;11355:20:2;;;;;;;;;11394:11;;:22;-1:-1:-1;11394:22:2;11386:69;;;;-1:-1:-1;;;11386:69:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11468:34;11491:4;11497;11468:22;:34::i;:::-;11571:11;;11568:151;;11613:11;;:24;;11629:7;11613:24;:15;:24;:::i;:::-;11599:38;;11659:16;;11652:55;;;-1:-1:-1;;;11652:55:2;;-1:-1:-1;;;;;11652:55:2;;;;;;;;;;;;;;;11659:16;;;;;11652:33;;:55;;;;;;;;;;;;;;11599:11;11659:16;11652:55;;;2:2:-1;;;;27:1;24;17:12;2:2;11652:55:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11652:55:2;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;11568:151:2;11763:23;;;;11747:11;;:50;;11792:4;;11747:40;;;:15;:40;:::i;:50::-;11729:15;;;:68;11815:27;;;;;;;;11828:4;;-1:-1:-1;;;;;11815:27:2;;;;;;;;;;;;11095:755;;;;;;:::o;6207:1061::-;6259:26;6298:21;6322:8;6331:4;6322:14;;;;;;;;;;;;;;;;;;;;;;;6378:16;;6371:49;;;-1:-1:-1;;;6371:49:2;;6414:4;6371:49;;;;;;6322:14;;-1:-1:-1;;;;;;6378:16:2;;;;6371:34;;:49;;;;;;;;;;6378:16;6371:49;;;2:2:-1;;;;27:1;24;17:12;2:2;6371:49:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6371:49:2;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;6371:49:2;;-1:-1:-1;6435:16:2;6431:88;;6506:1;6499:8;;;;;;6431:88;6550:260;6794:15;;6550:142;6676:4;:15;;;6550:14;;:125;;:142;;;;:::i;:260::-;6529:281;;6898:24;6925:46;6965:5;6925:35;6948:11;;6925:18;:22;;:35;;;;:::i;:46::-;6898:73;-1:-1:-1;6982:33:2;7018:40;:18;6898:73;7018:40;:22;:40;:::i;:::-;7096:22;;6982:76;;-1:-1:-1;7096:44:2;;7123:16;7096:44;:26;:44;:::i;:::-;7071:22;:69;7179:81;7207:52;7247:11;7207:35;:25;7237:4;7207:35;:29;:35;:::i;:52::-;7179:23;;;;;:81;:27;:81;:::i;:::-;7153:4;:23;;:107;;;;6207:1061;;;;;;;:::o;7673:219::-;7763:17;:15;:17::i;:::-;7793:15;7811:26;7826:4;7832;7811:14;:26::i;:::-;7793:44;;7850:34;7870:4;7876:7;7850:19;:34::i;:::-;7673:219;;;:::o;2724:192:1:-;2810:7;2846:12;2838:6;;;;2830:29;;;;-1:-1:-1;;;2830:29:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2830:29:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2882:5:1;;;2724:192::o;4750:278::-;4836:7;4871:12;4864:5;4856:28;;;;-1:-1:-1;;;4856:28:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;4856:28:1;;4895:9;4911:1;4907;:5;;;;;;;4750:278;-1:-1:-1;;;;;4750:278:1:o;7975:499:2:-;8057:12;8054:24;;8071:7;;8054:24;8090:18;8118:7;;8111:40;;;-1:-1:-1;;;8111:40:2;;8145:4;8111:40;;;;;;-1:-1:-1;;;;;8118:7:2;;;;8111:25;;:40;;;;;;;;;;;;;;;8118:7;8111:40;;;2:2:-1;;;;27:1;24;17:12;2:2;8111:40:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8111:40:2;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;8111:40:2;;-1:-1:-1;8166:21:2;;;8162:130;;8198:7;;;8191:41;;;-1:-1:-1;;;8191:41:2;;-1:-1:-1;;;;;8191:41:2;;;;;;;;;;;;;;;8198:7;;;;;8191:24;;:41;;;;;;;;;;;;;;;;;;8198:7;8191:41;;;2:2:-1;;;;27:1;24;17:12;2:2;8191:41:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8191:41:2;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;8162:130:2;;-1:-1:-1;8162:130:2;;8259:7;;;8252:38;;;-1:-1:-1;;;8252:38:2;;-1:-1:-1;;;;;8252:38:2;;;;;;;;;;;;;;;8259:7;;;;;8252:24;;:38;;;;;;;;;;;;;;;;;;8259:7;8252:38;;;2:2:-1;;;;27:1;24;17:12;2:2;8252:38:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8252:38:2;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;8162:130:2;8304:22;:20;:22::i;:::-;8433:7;;8426:40;;;-1:-1:-1;;;8426:40:2;;8460:4;8426:40;;;;;;-1:-1:-1;;;;;8433:7:2;;;;8426:25;;:40;;;;;;;;;;;;;;;8433:7;8426:40;;;2:2:-1;;;;27:1;24;17:12;2:2;8426:40:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8426:40:2;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;8426:40:2;8409:14;:57;-1:-1:-1;7975:499:2;;;:::o
Swarm Source
ipfs://df4f177877874db048a65110ef77e928bfbe2642850d30b2adcde4c3fcb08421
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.