ERC-20
Overview
Max Total Supply
11,000,000 EAS
Holders
3,154
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
17.340367962566 EASValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
EASContract
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-09-25 */ // SPDX-License-Identifier: MIT pragma solidity ^0.6.0; /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `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 c) { 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 c) { require(b <= a, errorMessage); 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 c) { // 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; } 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 c) { // Solidity only automatically asserts when dividing by 0 require(b > 0, errorMessage); c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } } /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * This test is non-exhaustive, and there may be false-negatives: during the * execution of a contract's constructor, its address will be reported as * not containing 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. */ function isContract(address account) internal view returns (bool) { // This method relies in extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. // 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 != 0x0 && codehash != accountHash); } /** * @dev Converts an `address` into `address payable`. Note that this is * simply a type cast: the actual underlying value is not changed. * * _Available since v2.4.0._ */ function toPayable(address account) internal pure returns (address payable) { return address(uint160(account)); } } /** * @title ERC20Basic * @dev Simpler version of ERC20 interface * See https://github.com/ethereum/EIPs/issues/179 */ interface ERC20Basic { function totalSupply() external view returns (uint256); function balanceOf(address who) external view returns (uint256); function transfer(address to, uint256 value) external returns (bool); event Transfer( address indexed _from, address indexed _to, uint256 _value ); } /** * @title Basic token * @dev Basic version of StandardToken, with no allowances. */ contract BasicToken is ERC20Basic { using SafeMath for uint256; uint256 totalSupply_; mapping(address => uint256) balances; /** * @dev Total number of tokens in existence */ function totalSupply() public view override returns (uint256) { return totalSupply_; } /** * @dev Transfer token for a specified address * @param _to The address to transfer to. * @param _value The amount to be transferred. */ function transfer(address _to, uint256 _value) public override returns (bool) { return _transfer(msg.sender, _to, _value); } /** * @dev Transfer token for a specified address * @param _from The address to transfer from. * @param _to The address to transfer to. * @param _value The amount to be transferred. */ function _transfer(address _from, address _to, uint256 _value) internal returns (bool) { require(_to != address(0), "transfer addr is the zero address"); require(_value <= balances[_from], "lack of balance"); balances[_from] = balances[_from].sub(_value); balances[_to] = balances[_to].add(_value); emit Transfer(_from, _to, _value); return true; } /** * @dev Gets the balance of the specified address. * @param _owner The address to query the the balance of. * @return An uint256 representing the amount owned by the passed address. */ function balanceOf(address _owner) public view override returns (uint256) { return balances[_owner]; } } /** * @title ERC20 interface * @dev see https://github.com/ethereum/EIPs/issues/20 */ interface ERC20 is ERC20Basic { function allowance(address owner, address spender) external view returns (uint256); function transferFrom(address from, address to, uint256 value) external returns (bool); function approve(address spender, uint256 value) external returns (bool); event Approval( address indexed _owner, address indexed _spender, uint256 _value ); } /** * @title Standard ERC20 token * * @dev Implementation of the basic standard token. * https://github.com/ethereum/EIPs/issues/20 * Based on code by FirstBlood: https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol */ contract StandardToken is ERC20, BasicToken { mapping (address => mapping (address => uint256)) internal allowed; /** * @dev Transfer tokens from one address to another * @param _from address The address which you want to send tokens from * @param _to address The address which you want to transfer to * @param _value uint256 the amount of tokens to be transferred */ function transferFrom( address _from, address _to, uint256 _value ) public override returns (bool) { require(_to != address(0), "transfer addr is the zero address"); require(_value <= balances[_from], "lack of balance"); require(_value <= allowed[_from][msg.sender], "lack of transfer balance allowed"); allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value); balances[_from] = balances[_from].sub(_value); balances[_to] = balances[_to].add(_value); emit Transfer(_from, _to, _value); return true; } /** * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender. * 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 * @param _spender The address which will spend the funds. * @param _value The amount of tokens to be spent. */ function approve(address _spender, uint256 _value) public override returns (bool) { // avoid race condition require((_value == 0) || (allowed[msg.sender][_spender] == 0), "reset allowance to 0 before change it's value."); allowed[msg.sender][_spender] = _value; emit Approval(msg.sender, _spender, _value); return true; } /** * @dev Function to check the amount of tokens that an owner allowed to a spender. * @param _owner address The address which owns the funds. * @param _spender address The address which will spend the funds. * @return A uint256 specifying the amount of tokens still available for the spender. */ function allowance( address _owner, address _spender ) public view override returns (uint256) { return allowed[_owner][_spender]; } } contract Token_StandardToken is StandardToken { // region{fields} string public name; string public symbol; uint8 public decimals; // region{Constructor} // note : [(final)totalSupply] >> claimAmount * 10 ** decimals // example : args << "The Kh Token No.X", "ABC", "10000000000", "18" constructor( string memory _token_name, string memory _symbol, uint256 _claim_amount, uint8 _decimals, address minaddr ) public { name = _token_name; symbol = _symbol; decimals = _decimals; totalSupply_ = _claim_amount.mul(10 ** uint256(decimals)); balances[minaddr] = totalSupply_; emit Transfer(address(0), minaddr, totalSupply_); } } /** * @dev Interface of the ERC20 standard as defined in the EIP. Does not include * the optional functions; to access them see {ERC20Detailed}. * USDT transfer and transferFrom not returns */ interface ITokenERC20_USDT { /** * @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; /** * @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; } /** * @dev Interface of the ERC20 standard as defined in the EIP. Does not include * the optional functions; to access them see {ERC20Detailed}. */ interface ITokenERC20 { /** * @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 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); } /** * @title DB * @dev This Provide database support services */ contract DB { //lib using list struct UserInfo { uint id; address code; address rCode; } uint _uid = 0; mapping(uint => address) indexMapping;//UID address Mapping mapping(address => address) addressMapping;//inviteCode address Mapping mapping(address => UserInfo) userInfoMapping;//address UserInfo Mapping /** * @dev Create store user information * @param addr user addr * @param code user invite Code * @param rCode recommend code */ function _registerUser(address addr, address code, address rCode) internal { UserInfo storage userInfo = userInfoMapping[addr]; if (userInfo.id == 0) { if (_uid != 0) { require(isUsedCode(rCode), "DB: rCode not exist"); address pAddr = addressMapping[rCode]; require(pAddr != msg.sender, "DB: rCode can't be self"); userInfo.rCode = rCode; } require(!isUsedCode(code), "DB: code is used"); require(code != address(0), "DB: invalid invite code"); _uid++; userInfo.id = _uid; userInfo.code = code; addressMapping[code] = addr; indexMapping[_uid] = addr; } } /** * @dev determine if user invite code is use * @param code user invite Code * @return bool */ function _isUsedCode(address code) internal view returns (bool) { return addressMapping[code] != address(0); } /** * @dev get the user address of the corresponding user invite code * Authorization Required * @param code user invite Code * @return address */ function _getCodeMapping(address code) internal view returns (address) { return addressMapping[code]; } /** * @dev get the user address of the corresponding user id * Authorization Required * @param uid user id * @return address */ function _getIndexMapping(uint uid) internal view returns (address) { return indexMapping[uid]; } /** * @dev get the user address of the corresponding User info * Authorization Required or addr is owner * @param addr user address * @return info info[id,status,level,levelStatus] * @return code code * @return rCode rCode */ function _getUserInfo(address addr) internal view returns (uint[1] memory info, address code, address rCode) { UserInfo memory userInfo = userInfoMapping[addr]; info[0] = userInfo.id; return (info, userInfo.code, userInfo.rCode); } /** * @dev get the current latest ID * Authorization Required * @return current uid */ function _getCurrentUserID() internal view returns (uint) { return _uid; } /** * @dev determine if user invite code is use * @param code user invite Code * @return bool */ function isUsedCode(address code) public view returns (bool) { return _isUsedCode(code); } } /** * @title Utillibrary * @dev This integrates the basic functions. */ contract Utillibrary is Token_StandardToken { //lib using list using SafeMath for *; using Address for address; //base param setting // uint internal ethWei = 1 ether; uint internal USDTWei = 10 ** 6; uint internal ETTWei = 10 ** 18; uint internal USDT_ETTWei_Ratio = 10 ** 12; constructor() Token_StandardToken("EAS", "EAS", 11000000, 18, address(this)) public { } /** * @dev modifier to scope access to a Contract (uses tx.origin and msg.sender) */ modifier isHuman() { require(msg.sender == tx.origin, "humans only"); _; } /** * @dev check Zero Addr */ modifier checkZeroAddr(address addr) { require(addr != address(0), "zero addr"); _; } /** * @dev check Addr is Contract */ modifier checkIsContract(address addr) { require(addr.isContract(), "not token addr"); _; } /** * @dev check User ID * @param uid user ID */ function checkUserID(uint uid) internal pure { require(uid != 0, "user not exist"); } /** * @dev Transfer to designated user * @param _addr user address * @param _val transfer-out amount */ function sendTokenToUser(address _addr, uint _val) internal { if (_val > 0) { _transfer(address(this), _addr, _val);//erc20 internal Function } } /** * @dev Gets the amount from the specified user * @param _addr user address * @param _val transfer-get amount */ function getTokenFormUser(address _addr, uint _val) internal { if (_val > 0) { _transfer(_addr, address(this), _val);//erc20 internal Function } } /** * @dev Transfer to designated user * USDT transfer and transferFrom not returns * @param _taddr token address * @param _addr user address * @param _val transfer-out amount */ function sendTokenToUser_USDT(address _taddr, address _addr, uint _val) internal checkZeroAddr(_addr) checkIsContract(_taddr) { if (_val > 0) { ITokenERC20_USDT(_taddr).transfer(_addr, _val); } } /** * @dev Gets the amount from the specified user * USDT transfer and transferFrom not returns * @param _taddr token address * @param _addr user address * @param _val transfer-get amount */ function getTokenFormUser_USDT(address _taddr, address _addr, uint _val) internal checkZeroAddr(_addr) checkIsContract(_taddr) { if (_val > 0) { ITokenERC20_USDT(_taddr).transferFrom(_addr, address(this), _val); } } /** * @dev Check and correct transfer amount * @param sendMoney transfer-out amount * @return bool,amount */ function isEnoughTokneBalance(address _taddr, uint sendMoney) internal view returns (bool, uint tokneBalance) { tokneBalance = ITokenERC20(_taddr).balanceOf(address(this)); if (sendMoney > tokneBalance) { return (false, tokneBalance); } else { return (true, sendMoney); } } /** * @dev get Resonance Ratio for the Resonance ID * @param value Resonance ID * @return Resonance Ratio */ function getResonanceRatio(uint value) internal view returns (uint) { // base 1U=10E // 1.10U=100E => 10/100U=1E => 1U=100/10E // 2.11U=100E => 11/100U=1E => 1U=100/11E // 3.12U=100E => 12/100U=1E => 1U=100/12E return USDT_ETTWei_Ratio * 100 / ((value - 1) + 10); } /** * @dev get scale for the level (*scale/1000) * @param level level * @return scale */ function getScaleByLevel(uint level) internal pure returns (uint) { if (level == 1) { return 10; } if (level == 2) { return 12; } if (level == 3) { return 15; } if (level == 4) { return 15; } return 0; } /** * @dev get scale for the DailyDividend (*scale/1000) * @param level level * @return scale algebra */ function getScaleByDailyDividend(uint level) internal pure returns (uint scale, uint algebra) { if (level == 1) { return (100, 1); } if (level == 2) { return (60, 5); } if (level == 3) { return (80, 8); } if (level == 4) { return (100, 10); } return (0, 0); } } contract EASContract is Utillibrary, DB { using SafeMath for *; //struct struct User { uint id; uint investAmountAddup;//add up invest Amount uint investAmountOut;//add up invest Amount Out uint investMoney;//invest amount current uint investAddupStaticBonus;//add up settlement static bonus amonut uint investAddupDynamicBonus;//add up settlement dynamic bonus amonut uint8 investOutMultiple;//invest Exit multiple of investment n/10 uint8 investLevel;//invest level uint40 investTime;//invest time uint40 investLastRwTime;//last settlement time uint bonusStaticAmount;//add up static bonus amonut (static bonus) uint bonusDynamicAmonut;//add up dynamic bonus amonut (dynamic bonus) uint takeBonusWallet;//takeBonus Wallet uint takeBonusAddup;//add up takeBonus } struct ResonanceData { uint40 time;//Resonance time uint ratio;//Resonance amount uint investMoney;//invest amount } //Loglist event InvestEvent(address indexed _addr, address indexed _code, address indexed _rCode, uint _value, uint time); event TakeBonusEvent(address indexed _addr, uint _type, uint _value_USDT, uint _value_ETT, uint time); //ERC Token addr address USDTToken;//USDT contract //base param setting address devAddr;//The special account //resonance uint internal rid = 1;//sell Round id mapping(uint => ResonanceData) internal resonanceDataMapping;//RoundID ResonanceData Mapping //address User Mapping mapping(address => User) userMapping; //addup uint AddupInvestUSD = 0; //ETT Token Pool uint ETTPool_User = ETTWei * 9900000; uint ETTPool_Dev = ETTWei * 1100000; uint ETTPool_Dev_RwAddup = 0; uint40 ETTPool_Dev_LastRwTime = uint40(now + 365 * 1 days); /** * @dev the content of contract is Beginning */ constructor ( address _devAddr, address _USDTAddr ) public { //set addr devAddr = _devAddr; USDTToken = _USDTAddr; //init ResonanceData ResonanceData storage resonance = resonanceDataMapping[rid]; if (resonance.ratio == 0) { resonance.time = uint40(now); resonance.ratio = getResonanceRatio(rid); } } /** * @dev the invest of contract is Beginning * @param money USDT amount for invest * @param rCode recommend code */ function invest(uint money, address rCode) public isHuman() { address code = msg.sender; //判断是投资范围 require( money == USDTWei * 2000 || money == USDTWei * 1000 || money == USDTWei * 500 || money == USDTWei * 100 , "invalid invest range"); //init userInfo uint[1] memory user_data; (user_data, , ) = _getUserInfo(msg.sender); uint user_id = user_data[0]; if (user_id == 0) { _registerUser(msg.sender, code, rCode); (user_data, , ) = _getUserInfo(msg.sender); user_id = user_data[0]; } User storage user = userMapping[msg.sender]; if (user.id == 0) { user.id = user_id; } //判断是已投资 require(user.investMoney == 0, "Has been invested"); //投资等级 uint8 investLevel = 0; if(money == USDTWei * 2000) { investLevel = 4; } else if(money == USDTWei * 1000) { investLevel = 3; } else if(money == USDTWei * 500) { investLevel = 2; } else if(money == USDTWei * 100) { investLevel = 1; } require(investLevel >= user.investLevel,"invalid invest Level"); if(AddupInvestUSD < USDTWei * 500000) { //Transfer USDT Token to Contract getTokenFormUser_USDT(USDTToken, msg.sender, money); } else { uint ETTMoney = money.mul(resonanceDataMapping[rid].ratio).mul(30).div(100); //Transfer USDT Token to Contract getTokenFormUser_USDT(USDTToken, msg.sender, money.mul(70).div(100)); //Transfer ETT Token to Contract getTokenFormUser(msg.sender, ETTMoney); //add user Token pool ETTPool_User += ETTMoney; } //send USDT Token to dev addr sendTokenToUser_USDT(USDTToken, devAddr, money.div(20)); //addup AddupInvestUSD += money; //user invest info user.investAmountAddup += money; user.investMoney = money; user.investAddupStaticBonus = 0; user.investAddupDynamicBonus = 0; user.investOutMultiple = 22; user.investLevel = investLevel; user.investTime = uint40(now); user.investLastRwTime = uint40(now); //update Ratio updateRatio(money); //触发更新直推投资出局倍数 updateUser_Parent(rCode, money); emit InvestEvent(msg.sender, code, rCode, money, now); } /** * @dev settlement */ function settlement() public isHuman() { User storage user = userMapping[msg.sender]; checkUserID(user.id); require(user.investMoney > 0, "uninvested or out"); require(now >= user.investLastRwTime, "not release time"); //reacquire rCode address rCode; (, , rCode) = _getUserInfo(msg.sender); //-----------Static Start uint settlementNumber_base = (now - user.investLastRwTime) / 1 days; if (user.investMoney > 0 && settlementNumber_base > 0) { uint moneyBonus_base = user.investMoney * getScaleByLevel(user.investLevel) / 1000; uint settlementNumber = settlementNumber_base; uint settlementMaxMoney = 0; if(user.investMoney * user.investOutMultiple / 10 >= user.investAddupStaticBonus + user.investAddupDynamicBonus) { settlementMaxMoney = user.investMoney * user.investOutMultiple / 10 - (user.investAddupStaticBonus + user.investAddupDynamicBonus); } uint moneyBonus = 0; if (moneyBonus_base * settlementNumber > settlementMaxMoney) { settlementNumber = settlementMaxMoney / moneyBonus_base; if (moneyBonus_base * settlementNumber < settlementMaxMoney) { settlementNumber ++; } if (settlementNumber > settlementNumber_base) { settlementNumber = settlementNumber_base; } // moneyBonus = moneyBonus_base * settlementNumber; moneyBonus = settlementMaxMoney; } else { moneyBonus = moneyBonus_base * settlementNumber; } user.takeBonusWallet += moneyBonus; user.bonusStaticAmount += moneyBonus; user.investAddupStaticBonus += moneyBonus; user.investLastRwTime += uint40(settlementNumber * 1 days); //check out if (user.investAddupStaticBonus + user.investAddupDynamicBonus >= user.investMoney * user.investOutMultiple / 10) { user.investAmountOut += user.investMoney; user.investMoney = 0;//out } //Calculate the bonus (Daily Dividend) // countBonus_DailyDividend(rCode, moneyBonus, user.investMoney); countBonus_DailyDividend(rCode, moneyBonus_base * settlementNumber, user.investMoney); } //-----------Static End } /** * @dev the take bonus of contract is Beginning * @param _type take type 0:default 100%USDT, 1:30%ETT 70%USDT, 2:50%ETT 50%USDT, 3:70%ETT 30%USDT, 4:100%ETT 0%USDT */ function takeBonus(uint8 _type) public isHuman() { User storage user = userMapping[msg.sender]; checkUserID(user.id); require(user.takeBonusWallet >= USDTWei * 1, "invalid amount"); uint sendDevMoney_USDT = user.takeBonusWallet.div(20); uint takeMoney_USDT = user.takeBonusWallet.sub(sendDevMoney_USDT); uint takeMoney_USDT_ETT = 0; //Calculation amount (takeMoney_USDT, takeMoney_USDT_ETT) = calculationTakeBonus(_type, takeMoney_USDT); bool isEnoughBalance = false; uint resultMoney = 0; //check send USDT //check USDT Enough Balance (isEnoughBalance, resultMoney) = isEnoughTokneBalance(USDTToken, takeMoney_USDT + sendDevMoney_USDT); if(isEnoughBalance == false) { require(resultMoney > 0, "not Enough Balance USDT"); //correct sendDevMoney_USDT = resultMoney.div(20); takeMoney_USDT = resultMoney.sub(sendDevMoney_USDT); //Calculation amount (takeMoney_USDT, takeMoney_USDT_ETT) = calculationTakeBonus(_type, takeMoney_USDT); } //check send ETT if(takeMoney_USDT_ETT > 0) { uint ETTMoney = takeMoney_USDT_ETT.mul(resonanceDataMapping[rid].ratio); //check user Token pool if(ETTMoney > ETTPool_User) { ETTMoney = ETTPool_User; require(ETTMoney > 0, "not Enough Balance pool"); //correct uint ETTMoney_USDT = ETTMoney.div(resonanceDataMapping[rid].ratio); sendDevMoney_USDT = sendDevMoney_USDT.mul(ETTMoney_USDT).div(takeMoney_USDT_ETT); takeMoney_USDT = takeMoney_USDT.mul(ETTMoney_USDT).div(takeMoney_USDT_ETT); takeMoney_USDT_ETT = ETTMoney_USDT; } //check ETT Enough Balance (isEnoughBalance, resultMoney) = isEnoughTokneBalance(address(this), ETTMoney); if(isEnoughBalance == false) { require(resultMoney > 0, "not Enough Balance ETT"); //correct uint resultMoney_USDT = resultMoney.div(resonanceDataMapping[rid].ratio); sendDevMoney_USDT = sendDevMoney_USDT.mul(resultMoney_USDT).div(takeMoney_USDT_ETT); takeMoney_USDT = takeMoney_USDT.mul(resultMoney_USDT).div(takeMoney_USDT_ETT); takeMoney_USDT_ETT = resultMoney_USDT; } } if(sendDevMoney_USDT > 0) { //Transfer USDT Token to Dev sendTokenToUser_USDT(USDTToken, devAddr, sendDevMoney_USDT); } if(takeMoney_USDT > 0) { //Transfer USDT Token to User sendTokenToUser_USDT(USDTToken, msg.sender, takeMoney_USDT); } if(takeMoney_USDT_ETT > 0) { //Transfer ETT Token to User sendTokenToUser(msg.sender, takeMoney_USDT_ETT.mul(resonanceDataMapping[rid].ratio)); ETTPool_User = ETTPool_User.sub(takeMoney_USDT_ETT.mul(resonanceDataMapping[rid].ratio)); } user.takeBonusWallet = user.takeBonusWallet.sub(takeMoney_USDT).sub(takeMoney_USDT_ETT).sub(sendDevMoney_USDT); user.takeBonusAddup = user.takeBonusAddup.add(takeMoney_USDT).add(takeMoney_USDT_ETT).add(sendDevMoney_USDT); emit TakeBonusEvent(msg.sender, _type, takeMoney_USDT, takeMoney_USDT_ETT, now); } /** * @dev settlement ETT Pool Dev */ function settlement_Dev() public isHuman() { require(now >= ETTPool_Dev_LastRwTime, "not release time"); require(ETTPool_Dev > ETTPool_Dev_RwAddup, "release done"); uint settlementNumber_base = (now - ETTPool_Dev_LastRwTime) / 1 days; uint moneyBonus_base = ETTPool_Dev / 365; uint settlementNumber = settlementNumber_base; uint settlementMaxMoney = 0; if(ETTPool_Dev >= ETTPool_Dev_RwAddup) { settlementMaxMoney = ETTPool_Dev - ETTPool_Dev_RwAddup; } uint moneyBonus = 0; if (moneyBonus_base * settlementNumber > settlementMaxMoney) { settlementNumber = settlementMaxMoney / moneyBonus_base; if (moneyBonus_base * settlementNumber < settlementMaxMoney) { settlementNumber ++; } if (settlementNumber > settlementNumber_base) { settlementNumber = settlementNumber_base; } // moneyBonus = moneyBonus_base * settlementNumber; moneyBonus = settlementMaxMoney; } else { moneyBonus = moneyBonus_base * settlementNumber; } //Transfer ETT Token to Dev sendTokenToUser(devAddr, moneyBonus); //update Dev_Rw ETTPool_Dev_RwAddup += moneyBonus; ETTPool_Dev_LastRwTime += uint40(settlementNumber * 1 days); } /** * @dev Show contract state view * @return info contract state view */ function stateView() public view returns (uint[8] memory info) { info[0] = _getCurrentUserID(); info[1] = rid; info[2] = resonanceDataMapping[rid].ratio; info[3] = resonanceDataMapping[rid].investMoney; info[4] = resonanceDataMapping[rid].time; info[5] = AddupInvestUSD; info[6] = ETTPool_Dev_RwAddup; info[7] = ETTPool_Dev_LastRwTime; return (info); } /** * @dev get the user info based * @param addr user addressrd * @return info user info */ function getUserByAddress( address addr ) public view returns (uint[14] memory info, address code, address rCode) { uint[1] memory user_data; (user_data, code, rCode) = _getUserInfo(addr); uint user_id = user_data[0]; User storage user = userMapping[addr]; info[0] = user_id; info[1] = user.investAmountAddup; info[2] = user.investAmountOut; info[3] = user.investMoney; info[4] = user.investAddupStaticBonus; info[5] = user.investAddupDynamicBonus; info[6] = user.investOutMultiple; info[7] = user.investLevel; info[8] = user.investTime; info[9] = user.investLastRwTime; info[10] = user.bonusStaticAmount; info[11] = user.bonusDynamicAmonut; info[12] = user.takeBonusWallet; info[13] = user.takeBonusAddup; return (info, code, rCode); } /** * @dev update Resonance Ratio * @param investMoney invest USDT amount */ function updateRatio(uint investMoney) private { ResonanceData storage resonance = resonanceDataMapping[rid]; resonance.investMoney += investMoney; //check if(AddupInvestUSD >= USDTWei * 500000) { uint newRatio = 0; uint newResonanceInvestMoney = 0; if(rid == 1) { if(resonance.investMoney >= USDTWei * 600000) { newResonanceInvestMoney = resonance.investMoney - USDTWei * 600000; resonance.investMoney = USDTWei * 600000; newRatio = getResonanceRatio(rid + 1); } } else { if(resonance.investMoney >= USDTWei * 100000) { newResonanceInvestMoney = resonance.investMoney - USDTWei * 100000; resonance.investMoney = USDTWei * 100000; newRatio = getResonanceRatio(rid + 1); } } if (newRatio > 0) { rid ++; resonance = resonanceDataMapping[rid]; resonance.time = uint40(now); resonance.ratio = newRatio; //Continuous rise resonance.investMoney = newResonanceInvestMoney; updateRatio(0); } } } /** * @dev update Parent User * @param rCode user recommend code * @param money invest money */ function updateUser_Parent(address rCode, uint money) private { if (rCode == address(0)) { return; } User storage user = userMapping[rCode]; //-----------updateUser_Parent Start if (user.investMoney > 0 && money >= user.investMoney) { user.investOutMultiple = 30; } //-----------updateUser_Parent End } /** * @dev Calculate the bonus (Daily Dividend) * @param rCode user recommend code * @param money base money * @param investMoney invest money */ function countBonus_DailyDividend(address rCode, uint money, uint investMoney) private { address tmpReferrerCode = rCode; address tmpUser_rCode; for (uint i = 1; i <= 10; i++) { if (tmpReferrerCode == address(0)) { break; } User storage user = userMapping[tmpReferrerCode]; //last rRcode and currUserInfo (, , tmpUser_rCode) = _getUserInfo(tmpReferrerCode); //-----------DailyDividend Start if (user.investMoney > 0) { uint moneyBonusDailyDividend = 0; (uint scale, uint algebra) = getScaleByDailyDividend(user.investLevel); if (algebra >= i) { moneyBonusDailyDividend = money * scale / 1000; //burns if (user.investMoney < investMoney) { moneyBonusDailyDividend = moneyBonusDailyDividend * user.investMoney / investMoney; } if (moneyBonusDailyDividend > 0) { //check out if (user.investAddupStaticBonus + user.investAddupDynamicBonus + moneyBonusDailyDividend >= user.investMoney * user.investOutMultiple / 10) { moneyBonusDailyDividend = user.investMoney * user.investOutMultiple / 10 - (user.investAddupStaticBonus + user.investAddupDynamicBonus); user.investAmountOut += user.investMoney; user.investMoney = 0;//out } user.takeBonusWallet += moneyBonusDailyDividend; user.bonusDynamicAmonut += moneyBonusDailyDividend; user.investAddupDynamicBonus += moneyBonusDailyDividend; } } } //-----------DailyDividend End tmpReferrerCode = tmpUser_rCode; } } /** * @dev Calculation amount * @param _type take type * @param takeMoney take Money * @return takeMoney_USDT take Money USDT * @return takeMoney_USDT_ETT take Money USDT(ETT) */ function calculationTakeBonus(uint8 _type, uint takeMoney) internal pure returns (uint takeMoney_USDT, uint takeMoney_USDT_ETT) { takeMoney_USDT = takeMoney; if(_type == 1) { //ETT 30% takeMoney_USDT_ETT = takeMoney_USDT.mul(30).div(100); } else if(_type == 2) { //ETT 50% takeMoney_USDT_ETT = takeMoney_USDT.div(2); } else if(_type == 3) { //ETT 70% takeMoney_USDT_ETT = takeMoney_USDT.mul(70).div(100); } else if(_type == 4) { //ETT 100% takeMoney_USDT_ETT = takeMoney_USDT; } takeMoney_USDT = takeMoney_USDT.sub(takeMoney_USDT_ETT); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_devAddr","type":"address"},{"internalType":"address","name":"_USDTAddr","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_addr","type":"address"},{"indexed":true,"internalType":"address","name":"_code","type":"address"},{"indexed":true,"internalType":"address","name":"_rCode","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"time","type":"uint256"}],"name":"InvestEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_addr","type":"address"},{"indexed":false,"internalType":"uint256","name":"_type","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_value_USDT","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_value_ETT","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"time","type":"uint256"}],"name":"TakeBonusEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"getUserByAddress","outputs":[{"internalType":"uint256[14]","name":"info","type":"uint256[14]"},{"internalType":"address","name":"code","type":"address"},{"internalType":"address","name":"rCode","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"money","type":"uint256"},{"internalType":"address","name":"rCode","type":"address"}],"name":"invest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"code","type":"address"}],"name":"isUsedCode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"settlement","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"settlement_Dev","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stateView","outputs":[{"internalType":"uint256[8]","name":"info","type":"uint256[8]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"_type","type":"uint8"}],"name":"takeBonus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
6080604052620f4240600655670de0b6b3a764000060075564e8d4a51000600855600060098190556001600f5560128190556a083068134c1ffd5380000060135569e8ef1e96ae38978000006014556015556016805464ffffffffff1916426301e133800164ffffffffff161790553480156200007b57600080fd5b50604051620027653803806200276583398181016040526040811015620000a157600080fd5b50805160209182015160408051808201825260038082526245415360e81b828701818152845180860190955282855296840152815194959394919362a7d8c0926012923092620000f19262000295565b5083516200010790600490602087019062000295565b506005805460ff191660ff84811691909117918290556200013a91859116600a0a62000212602090811b6200160317901c565b60008181556001600160a01b03831680825260016020908152604080842085905580519485525191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35050600e80546001600160a01b038088166001600160a01b031992831617909255600d8054928716929091169190911790555050600f54600090815260106020526040902060018101549091506200020957805464ffffffffff19164264ffffffffff16178155600f54620002039062000277565b60018201555b50505062000331565b600082620002235750600062000271565b50818102818382816200023257fe5b0414620002715760405162461bcd60e51b8152600401808060200182810382526021815260200180620027446021913960400191505060405180910390fd5b92915050565b600060018203600a01600854606402816200028e57fe5b0492915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620002d857805160ff191683800117855562000308565b8280016001018555821562000308579182015b8281111562000308578251825591602001919060010190620002eb565b50620003169291506200031a565b5090565b5b808211156200031657600081556001016200031b565b61240380620003416000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80634c4a3c25116100975780637178af45116100665780637178af451461039257806395d89b411461039a578063a9059cbb146103a2578063dd62ed3e146103ce57610100565b80634c4a3c25146102a457806351160630146102e557806369c212f6146102ed57806370a082311461036c57610100565b806323b872dd116100d357806323b872dd146101fe5780632ce8d4bc14610234578063313ce5671461025a5780633d103b971461027857610100565b806301c79bee1461010557806306fdde0314610127578063095ea7b3146101a457806318160ddd146101e4575b600080fd5b6101256004803603602081101561011b57600080fd5b503560ff166103fc565b005b61012f61084b565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610169578181015183820152602001610151565b50505050905090810190601f1680156101965780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101d0600480360360408110156101ba57600080fd5b506001600160a01b0381351690602001356108d9565b604080519115158252519081900360200190f35b6101ec6109ac565b60408051918252519081900360200190f35b6101d06004803603606081101561021457600080fd5b506001600160a01b038135811691602081013590911690604001356109b2565b6101d06004803603602081101561024a57600080fd5b50356001600160a01b0316610bc9565b610262610bdc565b6040805160ff9092168252519081900360200190f35b6101256004803603604081101561028e57600080fd5b50803590602001356001600160a01b0316610be5565b6102ac610f9e565b604051808261010080838360005b838110156102d25781810151838201526020016102ba565b5050505090500191505060405180910390f35b610125611011565b6103136004803603602081101561030357600080fd5b50356001600160a01b03166112bf565b60405180846101c080838360005b83811015610339578181015183820152602001610321565b50505050905001836001600160a01b03168152602001826001600160a01b03168152602001935050505060405180910390f35b6101ec6004803603602081101561038257600080fd5b50356001600160a01b03166113a4565b6101256113bf565b61012f611569565b6101d0600480360360408110156103b857600080fd5b506001600160a01b0381351690602001356115c4565b6101ec600480360360408110156103e457600080fd5b506001600160a01b03813581169160200135166115d8565b33321461043e576040805162461bcd60e51b815260206004820152600b60248201526a68756d616e73206f6e6c7960a81b604482015290519081900360640190fd5b33600090815260116020526040902080546104589061165d565b600654600982015410156104a4576040805162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a5908185b5bdd5b9d60921b604482015290519081900360640190fd5b60098101546000906104b79060146116a3565b905060006104d28284600901546116e590919063ffffffff16565b905060006104e08583611727565b600d5491935091506000908190610502906001600160a01b03168686016117a2565b90925090508161058a5760008111610561576040805162461bcd60e51b815260206004820152601760248201527f6e6f7420456e6f7567682042616c616e63652055534454000000000000000000604482015290519081900360640190fd5b61056c8160146116a3565b945061057881866116e5565b93506105848785611727565b90945092505b821561070657600f546000908152601060205260408120600101546105b0908590611603565b905060135481111561065d575060135480610612576040805162461bcd60e51b815260206004820152601760248201527f6e6f7420456e6f7567682042616c616e636520706f6f6c000000000000000000604482015290519081900360640190fd5b600f546000908152601060205260408120600101546106329083906116a3565b9050610648856106428984611603565b906116a3565b9650610658856106428884611603565b955093505b61066730826117a2565b90935091508261070457600082116106bf576040805162461bcd60e51b81526020600482015260166024820152751b9bdd08115b9bdd59da0810985b185b98d94811551560521b604482015290519081900360640190fd5b600f546000908152601060205260408120600101546106df9084906116a3565b90506106ef856106428984611603565b96506106ff856106428884611603565b955093505b505b841561072957600d54600e54610729916001600160a01b0390811691168761183f565b831561074657600d54610746906001600160a01b0316338661183f565b82156107a857600f54600090815260106020526040902060010154610777903390610772908690611603565b611959565b600f546000908152601060205260409020600101546107a49061079b908590611603565b601354906116e5565b6013555b6107cd856107c7856107c7888b600901546116e590919063ffffffff16565b906116e5565b6009870155600a8601546107f19086906107eb90869082908961196e565b9061196e565b600a8701556040805160ff8916815260208101869052808201859052426060820152905133917fd9cb4ae56afde26a5335323e67967ed65e306e1a933ac789e7320dfae6b8dd19919081900360800190a250505050505050565b6003805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156108d15780601f106108a6576101008083540402835291602001916108d1565b820191906000526020600020905b8154815290600101906020018083116108b457829003601f168201915b505050505081565b600081158061090957503360009081526002602090815260408083206001600160a01b0387168452909152902054155b6109445760405162461bcd60e51b815260040180806020018281038252602e81526020018061235e602e913960400191505060405180910390fd5b3360008181526002602090815260408083206001600160a01b03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060015b92915050565b60005490565b60006001600160a01b0383166109f95760405162461bcd60e51b815260040180806020018281038252602181526020018061238c6021913960400191505060405180910390fd5b6001600160a01b038416600090815260016020526040902054821115610a58576040805162461bcd60e51b815260206004820152600f60248201526e6c61636b206f662062616c616e636560881b604482015290519081900360640190fd5b6001600160a01b0384166000908152600260209081526040808320338452909152902054821115610ad0576040805162461bcd60e51b815260206004820181905260248201527f6c61636b206f66207472616e736665722062616c616e636520616c6c6f776564604482015290519081900360640190fd5b6001600160a01b0384166000908152600260209081526040808320338452909152902054610afe90836116e5565b6001600160a01b038516600081815260026020908152604080832033845282528083209490945591815260019091522054610b3990836116e5565b6001600160a01b038086166000908152600160205260408082209390935590851681522054610b68908361196e565b6001600160a01b0380851660008181526001602090815260409182902094909455805186815290519193928816927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a35060019392505050565b6000610bd4826119c6565b90505b919050565b60055460ff1681565b333214610c27576040805162461bcd60e51b815260206004820152600b60248201526a68756d616e73206f6e6c7960a81b604482015290519081900360640190fd5b60065433906107d002831480610c4257506006546103e80283145b80610c5257506006546101f40283145b80610c61575060065460640283145b610ca9576040805162461bcd60e51b8152602060048201526014602482015273696e76616c696420696e766573742072616e676560601b604482015290519081900360640190fd5b610cb16122e1565b610cba336119e6565b5050805190915080610ce457610cd1338486611a4d565b610cda336119e6565b5050805190925090505b3360009081526011602052604090208054610cfd578181555b600381015415610d48576040805162461bcd60e51b815260206004820152601160248201527012185cc81899595b881a5b9d995cdd1959607a1b604482015290519081900360640190fd5b60006006546107d002871415610d6057506004610d9d565b6006546103e802871415610d7657506003610d9d565b6006546101f402871415610d8c57506002610d9d565b600654606402871415610d9d575060015b600682015460ff61010090910481169082161015610df9576040805162461bcd60e51b81526020600482015260146024820152731a5b9d985b1a59081a5b9d995cdd0813195d995b60621b604482015290519081900360640190fd5b6006546207a120026012541015610e2657600d54610e21906001600160a01b03163389611c62565b610e97565b600f54600090815260106020526040812060010154610e5a9060649061064290601e90610e54908d90611603565b90611603565b600d54909150610e83906001600160a01b031633610e7e60646106428d6046611603565b611c62565b610e8d3382611d5d565b6013805490910190555b600d54600e54610ebe916001600160a01b039081169116610eb98a60146116a3565b61183f565b601280548801905560018201805488019055600382018790556000600483018190556005830155600682018054601660ff199091161761ff00191661010060ff8416021766ffffffffff00001916620100004264ffffffffff169081029190911764ffffffffff60381b1916600160381b91909102179055610f3f87611d6e565b610f498688611e74565b6040805188815242602082015281516001600160a01b03808a16939089169233927f84240542a1fb013913d7acd4a99a1bd8618f8f82ca151785357e6e2c2410efc2929181900390910190a450505050505050565b610fa66122ff565b610fae611ecf565b8152600f546020808301829052600082815260108083526040808320600181015491870191909152600281015460608701529390915290525464ffffffffff908116608083015260125460a083015260155460c08301526016541660e082015290565b333214611053576040805162461bcd60e51b815260206004820152600b60248201526a68756d616e73206f6e6c7960a81b604482015290519081900360640190fd5b336000908152601160205260409020805461106d9061165d565b60008160030154116110ba576040805162461bcd60e51b81526020600482015260116024820152701d5b9a5b9d995cdd1959081bdc881bdd5d607a1b604482015290519081900360640190fd5b6006810154600160381b900464ffffffffff16421015611114576040805162461bcd60e51b815260206004820152601060248201526f6e6f742072656c656173652074696d6560801b604482015290519081900360640190fd5b600061111f336119e6565b600685015490935060009250620151809150600160381b900464ffffffffff164203049050600083600301541180156111585750600081115b156112ba5760068301546000906103e89061117a90610100900460ff16611ed5565b8560030154028161118757fe5b600586015460048701546006880154600389015494909304945085936000939190920191600a9160ff160204106111df5760058601546004870154600688015460038901549190920191600a9160ff90911602040390505b600081838502111561121b578382816111f457fe5b049250818385021015611208576001909201915b84831115611214578492505b5080611220565b508282025b60098701805482019055600787018054820190556004870180548201905560068701805464ffffffffff600160381b8083048216620151808802019091160264ffffffffff60381b1990911617908190556003880154600a9160ff1602048760050154886004015401106112a4576003870180546002890180549091019055600090555b6112b5868486028960030154611f23565b505050505b505050565b6112c761231e565b6000806112d26122e1565b6112db856119e6565b91516001600160a01b03979097166000908152601160209081526040918290209888526001890154908801526002880154908701526003870154606087015260048701546080870152600587015460a0870152600687015460ff80821660c089015261010080830490911660e089015264ffffffffff620100008304811691890191909152600160381b90910416610120870152600787015461014087015260088701546101608701526009870154610180870152600a909601546101a0860152939592505050565b6001600160a01b031660009081526001602052604090205490565b333214611401576040805162461bcd60e51b815260206004820152600b60248201526a68756d616e73206f6e6c7960a81b604482015290519081900360640190fd5b60165464ffffffffff16421015611452576040805162461bcd60e51b815260206004820152601060248201526f6e6f742072656c656173652074696d6560801b604482015290519081900360640190fd5b60155460145411611499576040805162461bcd60e51b815260206004820152600c60248201526b72656c6561736520646f6e6560a01b604482015290519081900360640190fd5b601654600090620151809064ffffffffff164203049050600061016d601454816114bf57fe5b04905060008290506000601554601454106114dd5750601554601454035b6000818385021115611519578382816114f257fe5b049250818385021015611506576001909201915b84831115611512578492505b508061151e565b508282025b600e54611534906001600160a01b031682611959565b60158054919091019055506016805464ffffffffff198116620151809390930264ffffffffff91821601169190911790555050565b6004805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156108d15780601f106108a6576101008083540402835291602001916108d1565b60006115d1338484612063565b9392505050565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b600082611612575060006109a6565b508181028183828161162057fe5b04146109a65760405162461bcd60e51b81526004018080602001828103825260218152602001806123ad6021913960400191505060405180910390fd5b806116a0576040805162461bcd60e51b815260206004820152600e60248201526d1d5cd95c881b9bdd08195e1a5cdd60921b604482015290519081900360640190fd5b50565b60006115d183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061212c565b60006115d183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506121cb565b806000600160ff8516141561174d57611746606461064284601e611603565b905061178f565b8360ff1660021415611764576117468260026116a3565b8360ff1660031415611780576117466064610642846046611603565b8360ff166004141561178f5750805b61179982826116e5565b91509250929050565b600080836001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156117f257600080fd5b505afa158015611806573d6000803e3d6000fd5b505050506040513d602081101561181c57600080fd5b50519050808311156118315760009150611838565b5060019050815b9250929050565b816001600160a01b038116611887576040805162461bcd60e51b81526020600482015260096024820152683d32b9379030b2323960b91b604482015290519081900360640190fd5b8361189a816001600160a01b0316612225565b6118dc576040805162461bcd60e51b815260206004820152600e60248201526d3737ba103a37b5b2b71030b2323960911b604482015290519081900360640190fd5b821561195257846001600160a01b031663a9059cbb85856040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561193957600080fd5b505af115801561194d573d6000803e3d6000fd5b505050505b5050505050565b801561196a576112ba308383612063565b5050565b818101828110156109a6576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6001600160a01b039081166000908152600b602052604090205416151590565b6119ee6122e1565b6000806119f961233d565b5050506001600160a01b039182166000908152600c60209081526040918290208251606081018452815480825260018301548716938201938452600290920154909516949092019384529082525191519092565b6001600160a01b0383166000908152600c602052604090208054611c5c5760095415611b5257611a7c82610bc9565b611ac3576040805162461bcd60e51b815260206004820152601360248201527211108e881c90dbd919481b9bdd08195e1a5cdd606a1b604482015290519081900360640190fd5b6001600160a01b038083166000908152600b60205260409020541633811415611b33576040805162461bcd60e51b815260206004820152601760248201527f44423a2072436f64652063616e27742062652073656c66000000000000000000604482015290519081900360640190fd5b506002810180546001600160a01b0319166001600160a01b0384161790555b611b5b83610bc9565b15611ba0576040805162461bcd60e51b815260206004820152601060248201526f11108e8818dbd919481a5cc81d5cd95960821b604482015290519081900360640190fd5b6001600160a01b038316611bfb576040805162461bcd60e51b815260206004820152601760248201527f44423a20696e76616c696420696e7669746520636f6465000000000000000000604482015290519081900360640190fd5b6009805460019081018083558355820180546001600160a01b03199081166001600160a01b038781169182179093556000908152600b6020908152604080832080548516958b16958617905594548252600a90529290922080549092161790555b50505050565b816001600160a01b038116611caa576040805162461bcd60e51b81526020600482015260096024820152683d32b9379030b2323960b91b604482015290519081900360640190fd5b83611cbd816001600160a01b0316612225565b611cff576040805162461bcd60e51b815260206004820152600e60248201526d3737ba103a37b5b2b71030b2323960911b604482015290519081900360640190fd5b821561195257604080516323b872dd60e01b81526001600160a01b038681166004830152306024830152604482018690529151918716916323b872dd9160648082019260009290919082900301818387803b15801561193957600080fd5b801561196a576112ba823083612063565b600f546000908152601060205260409020600281018054830190556006546012546207a1209091021161196a57600080600f5460011415611dea57600654620927c002836002015410611de55750600654600283018054620927c090920290819055600f54910390611de290600101612261565b91505b611e26565b600654620186a002836002015410611e265750600654600283018054620186a090920290819055600f54910390611e2390600101612261565b91505b8115611c5c57600f80546001908101918290556000918252601060205260408220805464ffffffffff19164264ffffffffff16178155908101849055600281018390559350611c5c90611d6e565b6001600160a01b038216611e875761196a565b6001600160a01b0382166000908152601160205260409020600381015415801590611eb6575080600301548210155b156112ba5760068101805460ff1916601e179055505050565b60095490565b60008160011415611ee85750600a610bd7565b8160021415611ef95750600c610bd7565b8160031415611f0a5750600f610bd7565b8160041415611f1b5750600f610bd7565b506000919050565b82600060015b600a811161205b576001600160a01b038316611f445761205b565b6001600160a01b0383166000908152601160205260409020611f65846119e6565b600384015490955015915061204d905057600681015460009081908190611f9390610100900460ff1661227e565b91509150848110612049576103e88983020492508784600301541015611fc657878460030154840281611fc257fe5b0492505b82156120495760068401546003850154600a9160ff160204838560050154866004015401011061202a5760058401546004850154600686015460038701805460028901805482019055600090915591909201600a60ff909316909102919091040392505b6009840180548401905560088401805484019055600584018054840190555b5050505b509091508190600101611f29565b505050505050565b60006001600160a01b0383166120aa5760405162461bcd60e51b815260040180806020018281038252602181526020018061238c6021913960400191505060405180910390fd5b6001600160a01b038416600090815260016020526040902054821115612109576040805162461bcd60e51b815260206004820152600f60248201526e6c61636b206f662062616c616e636560881b604482015290519081900360640190fd5b6001600160a01b038416600090815260016020526040902054610b3990836116e5565b600081836121b85760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561217d578181015183820152602001612165565b50505050905090810190601f1680156121aa5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508284816121c257fe5b04949350505050565b6000818484111561221d5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561217d578181015183820152602001612165565b505050900390565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081158015906122595750808214155b949350505050565b600060018203600a016008546064028161227757fe5b0492915050565b600080826001141561229657506064905060016122dc565b82600214156122ab5750603c905060056122dc565b82600314156122c057506050905060086122dc565b82600414156122d5575060649050600a6122dc565b5060009050805b915091565b60405180602001604052806001906020820280368337509192915050565b6040518061010001604052806008906020820280368337509192915050565b604051806101c00160405280600e906020820280368337509192915050565b60408051606081018252600080825260208201819052918101919091529056fe726573657420616c6c6f77616e636520746f2030206265666f7265206368616e676520697427732076616c75652e7472616e73666572206164647220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212206d02311a90b9127e1fde2853a5cac04a3e7838df8a507c97ac88de2bea740b6d64736f6c634300060c0033536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77000000000000000000000000d692d6626cad6d5bf6780660d6f4a2f1ca989f89000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101005760003560e01c80634c4a3c25116100975780637178af45116100665780637178af451461039257806395d89b411461039a578063a9059cbb146103a2578063dd62ed3e146103ce57610100565b80634c4a3c25146102a457806351160630146102e557806369c212f6146102ed57806370a082311461036c57610100565b806323b872dd116100d357806323b872dd146101fe5780632ce8d4bc14610234578063313ce5671461025a5780633d103b971461027857610100565b806301c79bee1461010557806306fdde0314610127578063095ea7b3146101a457806318160ddd146101e4575b600080fd5b6101256004803603602081101561011b57600080fd5b503560ff166103fc565b005b61012f61084b565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610169578181015183820152602001610151565b50505050905090810190601f1680156101965780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101d0600480360360408110156101ba57600080fd5b506001600160a01b0381351690602001356108d9565b604080519115158252519081900360200190f35b6101ec6109ac565b60408051918252519081900360200190f35b6101d06004803603606081101561021457600080fd5b506001600160a01b038135811691602081013590911690604001356109b2565b6101d06004803603602081101561024a57600080fd5b50356001600160a01b0316610bc9565b610262610bdc565b6040805160ff9092168252519081900360200190f35b6101256004803603604081101561028e57600080fd5b50803590602001356001600160a01b0316610be5565b6102ac610f9e565b604051808261010080838360005b838110156102d25781810151838201526020016102ba565b5050505090500191505060405180910390f35b610125611011565b6103136004803603602081101561030357600080fd5b50356001600160a01b03166112bf565b60405180846101c080838360005b83811015610339578181015183820152602001610321565b50505050905001836001600160a01b03168152602001826001600160a01b03168152602001935050505060405180910390f35b6101ec6004803603602081101561038257600080fd5b50356001600160a01b03166113a4565b6101256113bf565b61012f611569565b6101d0600480360360408110156103b857600080fd5b506001600160a01b0381351690602001356115c4565b6101ec600480360360408110156103e457600080fd5b506001600160a01b03813581169160200135166115d8565b33321461043e576040805162461bcd60e51b815260206004820152600b60248201526a68756d616e73206f6e6c7960a81b604482015290519081900360640190fd5b33600090815260116020526040902080546104589061165d565b600654600982015410156104a4576040805162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a5908185b5bdd5b9d60921b604482015290519081900360640190fd5b60098101546000906104b79060146116a3565b905060006104d28284600901546116e590919063ffffffff16565b905060006104e08583611727565b600d5491935091506000908190610502906001600160a01b03168686016117a2565b90925090508161058a5760008111610561576040805162461bcd60e51b815260206004820152601760248201527f6e6f7420456e6f7567682042616c616e63652055534454000000000000000000604482015290519081900360640190fd5b61056c8160146116a3565b945061057881866116e5565b93506105848785611727565b90945092505b821561070657600f546000908152601060205260408120600101546105b0908590611603565b905060135481111561065d575060135480610612576040805162461bcd60e51b815260206004820152601760248201527f6e6f7420456e6f7567682042616c616e636520706f6f6c000000000000000000604482015290519081900360640190fd5b600f546000908152601060205260408120600101546106329083906116a3565b9050610648856106428984611603565b906116a3565b9650610658856106428884611603565b955093505b61066730826117a2565b90935091508261070457600082116106bf576040805162461bcd60e51b81526020600482015260166024820152751b9bdd08115b9bdd59da0810985b185b98d94811551560521b604482015290519081900360640190fd5b600f546000908152601060205260408120600101546106df9084906116a3565b90506106ef856106428984611603565b96506106ff856106428884611603565b955093505b505b841561072957600d54600e54610729916001600160a01b0390811691168761183f565b831561074657600d54610746906001600160a01b0316338661183f565b82156107a857600f54600090815260106020526040902060010154610777903390610772908690611603565b611959565b600f546000908152601060205260409020600101546107a49061079b908590611603565b601354906116e5565b6013555b6107cd856107c7856107c7888b600901546116e590919063ffffffff16565b906116e5565b6009870155600a8601546107f19086906107eb90869082908961196e565b9061196e565b600a8701556040805160ff8916815260208101869052808201859052426060820152905133917fd9cb4ae56afde26a5335323e67967ed65e306e1a933ac789e7320dfae6b8dd19919081900360800190a250505050505050565b6003805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156108d15780601f106108a6576101008083540402835291602001916108d1565b820191906000526020600020905b8154815290600101906020018083116108b457829003601f168201915b505050505081565b600081158061090957503360009081526002602090815260408083206001600160a01b0387168452909152902054155b6109445760405162461bcd60e51b815260040180806020018281038252602e81526020018061235e602e913960400191505060405180910390fd5b3360008181526002602090815260408083206001600160a01b03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060015b92915050565b60005490565b60006001600160a01b0383166109f95760405162461bcd60e51b815260040180806020018281038252602181526020018061238c6021913960400191505060405180910390fd5b6001600160a01b038416600090815260016020526040902054821115610a58576040805162461bcd60e51b815260206004820152600f60248201526e6c61636b206f662062616c616e636560881b604482015290519081900360640190fd5b6001600160a01b0384166000908152600260209081526040808320338452909152902054821115610ad0576040805162461bcd60e51b815260206004820181905260248201527f6c61636b206f66207472616e736665722062616c616e636520616c6c6f776564604482015290519081900360640190fd5b6001600160a01b0384166000908152600260209081526040808320338452909152902054610afe90836116e5565b6001600160a01b038516600081815260026020908152604080832033845282528083209490945591815260019091522054610b3990836116e5565b6001600160a01b038086166000908152600160205260408082209390935590851681522054610b68908361196e565b6001600160a01b0380851660008181526001602090815260409182902094909455805186815290519193928816927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a35060019392505050565b6000610bd4826119c6565b90505b919050565b60055460ff1681565b333214610c27576040805162461bcd60e51b815260206004820152600b60248201526a68756d616e73206f6e6c7960a81b604482015290519081900360640190fd5b60065433906107d002831480610c4257506006546103e80283145b80610c5257506006546101f40283145b80610c61575060065460640283145b610ca9576040805162461bcd60e51b8152602060048201526014602482015273696e76616c696420696e766573742072616e676560601b604482015290519081900360640190fd5b610cb16122e1565b610cba336119e6565b5050805190915080610ce457610cd1338486611a4d565b610cda336119e6565b5050805190925090505b3360009081526011602052604090208054610cfd578181555b600381015415610d48576040805162461bcd60e51b815260206004820152601160248201527012185cc81899595b881a5b9d995cdd1959607a1b604482015290519081900360640190fd5b60006006546107d002871415610d6057506004610d9d565b6006546103e802871415610d7657506003610d9d565b6006546101f402871415610d8c57506002610d9d565b600654606402871415610d9d575060015b600682015460ff61010090910481169082161015610df9576040805162461bcd60e51b81526020600482015260146024820152731a5b9d985b1a59081a5b9d995cdd0813195d995b60621b604482015290519081900360640190fd5b6006546207a120026012541015610e2657600d54610e21906001600160a01b03163389611c62565b610e97565b600f54600090815260106020526040812060010154610e5a9060649061064290601e90610e54908d90611603565b90611603565b600d54909150610e83906001600160a01b031633610e7e60646106428d6046611603565b611c62565b610e8d3382611d5d565b6013805490910190555b600d54600e54610ebe916001600160a01b039081169116610eb98a60146116a3565b61183f565b601280548801905560018201805488019055600382018790556000600483018190556005830155600682018054601660ff199091161761ff00191661010060ff8416021766ffffffffff00001916620100004264ffffffffff169081029190911764ffffffffff60381b1916600160381b91909102179055610f3f87611d6e565b610f498688611e74565b6040805188815242602082015281516001600160a01b03808a16939089169233927f84240542a1fb013913d7acd4a99a1bd8618f8f82ca151785357e6e2c2410efc2929181900390910190a450505050505050565b610fa66122ff565b610fae611ecf565b8152600f546020808301829052600082815260108083526040808320600181015491870191909152600281015460608701529390915290525464ffffffffff908116608083015260125460a083015260155460c08301526016541660e082015290565b333214611053576040805162461bcd60e51b815260206004820152600b60248201526a68756d616e73206f6e6c7960a81b604482015290519081900360640190fd5b336000908152601160205260409020805461106d9061165d565b60008160030154116110ba576040805162461bcd60e51b81526020600482015260116024820152701d5b9a5b9d995cdd1959081bdc881bdd5d607a1b604482015290519081900360640190fd5b6006810154600160381b900464ffffffffff16421015611114576040805162461bcd60e51b815260206004820152601060248201526f6e6f742072656c656173652074696d6560801b604482015290519081900360640190fd5b600061111f336119e6565b600685015490935060009250620151809150600160381b900464ffffffffff164203049050600083600301541180156111585750600081115b156112ba5760068301546000906103e89061117a90610100900460ff16611ed5565b8560030154028161118757fe5b600586015460048701546006880154600389015494909304945085936000939190920191600a9160ff160204106111df5760058601546004870154600688015460038901549190920191600a9160ff90911602040390505b600081838502111561121b578382816111f457fe5b049250818385021015611208576001909201915b84831115611214578492505b5080611220565b508282025b60098701805482019055600787018054820190556004870180548201905560068701805464ffffffffff600160381b8083048216620151808802019091160264ffffffffff60381b1990911617908190556003880154600a9160ff1602048760050154886004015401106112a4576003870180546002890180549091019055600090555b6112b5868486028960030154611f23565b505050505b505050565b6112c761231e565b6000806112d26122e1565b6112db856119e6565b91516001600160a01b03979097166000908152601160209081526040918290209888526001890154908801526002880154908701526003870154606087015260048701546080870152600587015460a0870152600687015460ff80821660c089015261010080830490911660e089015264ffffffffff620100008304811691890191909152600160381b90910416610120870152600787015461014087015260088701546101608701526009870154610180870152600a909601546101a0860152939592505050565b6001600160a01b031660009081526001602052604090205490565b333214611401576040805162461bcd60e51b815260206004820152600b60248201526a68756d616e73206f6e6c7960a81b604482015290519081900360640190fd5b60165464ffffffffff16421015611452576040805162461bcd60e51b815260206004820152601060248201526f6e6f742072656c656173652074696d6560801b604482015290519081900360640190fd5b60155460145411611499576040805162461bcd60e51b815260206004820152600c60248201526b72656c6561736520646f6e6560a01b604482015290519081900360640190fd5b601654600090620151809064ffffffffff164203049050600061016d601454816114bf57fe5b04905060008290506000601554601454106114dd5750601554601454035b6000818385021115611519578382816114f257fe5b049250818385021015611506576001909201915b84831115611512578492505b508061151e565b508282025b600e54611534906001600160a01b031682611959565b60158054919091019055506016805464ffffffffff198116620151809390930264ffffffffff91821601169190911790555050565b6004805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156108d15780601f106108a6576101008083540402835291602001916108d1565b60006115d1338484612063565b9392505050565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b600082611612575060006109a6565b508181028183828161162057fe5b04146109a65760405162461bcd60e51b81526004018080602001828103825260218152602001806123ad6021913960400191505060405180910390fd5b806116a0576040805162461bcd60e51b815260206004820152600e60248201526d1d5cd95c881b9bdd08195e1a5cdd60921b604482015290519081900360640190fd5b50565b60006115d183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061212c565b60006115d183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506121cb565b806000600160ff8516141561174d57611746606461064284601e611603565b905061178f565b8360ff1660021415611764576117468260026116a3565b8360ff1660031415611780576117466064610642846046611603565b8360ff166004141561178f5750805b61179982826116e5565b91509250929050565b600080836001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156117f257600080fd5b505afa158015611806573d6000803e3d6000fd5b505050506040513d602081101561181c57600080fd5b50519050808311156118315760009150611838565b5060019050815b9250929050565b816001600160a01b038116611887576040805162461bcd60e51b81526020600482015260096024820152683d32b9379030b2323960b91b604482015290519081900360640190fd5b8361189a816001600160a01b0316612225565b6118dc576040805162461bcd60e51b815260206004820152600e60248201526d3737ba103a37b5b2b71030b2323960911b604482015290519081900360640190fd5b821561195257846001600160a01b031663a9059cbb85856040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561193957600080fd5b505af115801561194d573d6000803e3d6000fd5b505050505b5050505050565b801561196a576112ba308383612063565b5050565b818101828110156109a6576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6001600160a01b039081166000908152600b602052604090205416151590565b6119ee6122e1565b6000806119f961233d565b5050506001600160a01b039182166000908152600c60209081526040918290208251606081018452815480825260018301548716938201938452600290920154909516949092019384529082525191519092565b6001600160a01b0383166000908152600c602052604090208054611c5c5760095415611b5257611a7c82610bc9565b611ac3576040805162461bcd60e51b815260206004820152601360248201527211108e881c90dbd919481b9bdd08195e1a5cdd606a1b604482015290519081900360640190fd5b6001600160a01b038083166000908152600b60205260409020541633811415611b33576040805162461bcd60e51b815260206004820152601760248201527f44423a2072436f64652063616e27742062652073656c66000000000000000000604482015290519081900360640190fd5b506002810180546001600160a01b0319166001600160a01b0384161790555b611b5b83610bc9565b15611ba0576040805162461bcd60e51b815260206004820152601060248201526f11108e8818dbd919481a5cc81d5cd95960821b604482015290519081900360640190fd5b6001600160a01b038316611bfb576040805162461bcd60e51b815260206004820152601760248201527f44423a20696e76616c696420696e7669746520636f6465000000000000000000604482015290519081900360640190fd5b6009805460019081018083558355820180546001600160a01b03199081166001600160a01b038781169182179093556000908152600b6020908152604080832080548516958b16958617905594548252600a90529290922080549092161790555b50505050565b816001600160a01b038116611caa576040805162461bcd60e51b81526020600482015260096024820152683d32b9379030b2323960b91b604482015290519081900360640190fd5b83611cbd816001600160a01b0316612225565b611cff576040805162461bcd60e51b815260206004820152600e60248201526d3737ba103a37b5b2b71030b2323960911b604482015290519081900360640190fd5b821561195257604080516323b872dd60e01b81526001600160a01b038681166004830152306024830152604482018690529151918716916323b872dd9160648082019260009290919082900301818387803b15801561193957600080fd5b801561196a576112ba823083612063565b600f546000908152601060205260409020600281018054830190556006546012546207a1209091021161196a57600080600f5460011415611dea57600654620927c002836002015410611de55750600654600283018054620927c090920290819055600f54910390611de290600101612261565b91505b611e26565b600654620186a002836002015410611e265750600654600283018054620186a090920290819055600f54910390611e2390600101612261565b91505b8115611c5c57600f80546001908101918290556000918252601060205260408220805464ffffffffff19164264ffffffffff16178155908101849055600281018390559350611c5c90611d6e565b6001600160a01b038216611e875761196a565b6001600160a01b0382166000908152601160205260409020600381015415801590611eb6575080600301548210155b156112ba5760068101805460ff1916601e179055505050565b60095490565b60008160011415611ee85750600a610bd7565b8160021415611ef95750600c610bd7565b8160031415611f0a5750600f610bd7565b8160041415611f1b5750600f610bd7565b506000919050565b82600060015b600a811161205b576001600160a01b038316611f445761205b565b6001600160a01b0383166000908152601160205260409020611f65846119e6565b600384015490955015915061204d905057600681015460009081908190611f9390610100900460ff1661227e565b91509150848110612049576103e88983020492508784600301541015611fc657878460030154840281611fc257fe5b0492505b82156120495760068401546003850154600a9160ff160204838560050154866004015401011061202a5760058401546004850154600686015460038701805460028901805482019055600090915591909201600a60ff909316909102919091040392505b6009840180548401905560088401805484019055600584018054840190555b5050505b509091508190600101611f29565b505050505050565b60006001600160a01b0383166120aa5760405162461bcd60e51b815260040180806020018281038252602181526020018061238c6021913960400191505060405180910390fd5b6001600160a01b038416600090815260016020526040902054821115612109576040805162461bcd60e51b815260206004820152600f60248201526e6c61636b206f662062616c616e636560881b604482015290519081900360640190fd5b6001600160a01b038416600090815260016020526040902054610b3990836116e5565b600081836121b85760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561217d578181015183820152602001612165565b50505050905090810190601f1680156121aa5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508284816121c257fe5b04949350505050565b6000818484111561221d5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561217d578181015183820152602001612165565b505050900390565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081158015906122595750808214155b949350505050565b600060018203600a016008546064028161227757fe5b0492915050565b600080826001141561229657506064905060016122dc565b82600214156122ab5750603c905060056122dc565b82600314156122c057506050905060086122dc565b82600414156122d5575060649050600a6122dc565b5060009050805b915091565b60405180602001604052806001906020820280368337509192915050565b6040518061010001604052806008906020820280368337509192915050565b604051806101c00160405280600e906020820280368337509192915050565b60408051606081018252600080825260208201819052918101919091529056fe726573657420616c6c6f77616e636520746f2030206265666f7265206368616e676520697427732076616c75652e7472616e73666572206164647220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212206d02311a90b9127e1fde2853a5cac04a3e7838df8a507c97ac88de2bea740b6d64736f6c634300060c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000d692d6626cad6d5bf6780660d6f4a2f1ca989f89000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7
-----Decoded View---------------
Arg [0] : _devAddr (address): 0xD692D6626CAd6D5bF6780660d6F4A2f1Ca989f89
Arg [1] : _USDTAddr (address): 0xdAC17F958D2ee523a2206206994597C13D831ec7
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000d692d6626cad6d5bf6780660d6f4a2f1ca989f89
Arg [1] : 000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7
Deployed Bytecode Sourcemap
22444:19950:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30471:3530;;;;;;;;;;;;;;;;-1:-1:-1;30471:3530:0;;;;:::i;:::-;;11528:18;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10522:371;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;10522:371:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;6612:100;;;:::i;:::-;;;;;;;;;;;;;;;;9208:665;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;9208:665:0;;;;;;;;;;;;;;;;;:::i;17591:127::-;;;;;;;;;;;;;;;;-1:-1:-1;17591:127:0;-1:-1:-1;;;;;17591:127:0;;:::i;11580:21::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;25016:2653;;;;;;;;;;;;;;;;-1:-1:-1;25016:2653:0;;;;;;-1:-1:-1;;;;;25016:2653:0;;:::i;35618:463::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27719:2551;;;:::i;36207:941::-;;;;;;;;;;;;;;;;-1:-1:-1;36207:941:0;-1:-1:-1;;;;;36207:941:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;36207:941:0;;;;;;-1:-1:-1;;;;;36207:941:0;;;;;;;;;;;;;;;;;7889:116;;;;;;;;;;;;;;;;-1:-1:-1;7889:116:0;-1:-1:-1;;;;;7889:116:0;;:::i;34064:1449::-;;;:::i;11553:20::-;;;:::i;6889:138::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;6889:138:0;;;;;;;;:::i;11234:209::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;11234:209:0;;;;;;;;;;:::i;30471:3530::-;18387:10;18401:9;18387:23;18379:47;;;;;-1:-1:-1;;;18379:47:0;;;;;;;;;;;;-1:-1:-1;;;18379:47:0;;;;;;;;;;;;;;;30580:10:::1;30548:17;30568:23:::0;;;:11:::1;:23;::::0;;;;30608:7;;30596:20:::1;::::0;:11:::1;:20::i;:::-;30655:7;::::0;30631:20:::1;::::0;::::1;::::0;:35:::1;;30623:62;;;::::0;;-1:-1:-1;;;30623:62:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;30623:62:0;;;;;;;;;;;;;::::1;;30723:20;::::0;::::1;::::0;30698:22:::1;::::0;30723:28:::1;::::0;30748:2:::1;30723:24;:28::i;:::-;30698:53;;30756:19;30778:43;30803:17;30778:4;:20;;;:24;;:43;;;;:::i;:::-;30756:65;;30832:23;30941:43;30962:5;30969:14;30941:20;:43::i;:::-;31187:9;::::0;30902:82;;-1:-1:-1;30902:82:0;-1:-1:-1;30997:20:0::1;::::0;;;31166:67:::1;::::0;-1:-1:-1;;;;;31187:9:0::1;31198:34:::0;;::::1;31166:20;:67::i;:::-;31133:100:::0;;-1:-1:-1;31133:100:0;-1:-1:-1;31247:24:0;31244:390:::1;;31319:1;31305:11;:15;31297:51;;;::::0;;-1:-1:-1;;;31297:51:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;31406:19;:11:::0;31422:2:::1;31406:15;:19::i;:::-;31386:39:::0;-1:-1:-1;31457:34:0::1;:11:::0;31386:39;31457:15:::1;:34::i;:::-;31440:51;;31579:43;31600:5;31607:14;31579:20;:43::i;:::-;31540:82:::0;;-1:-1:-1;31540:82:0;-1:-1:-1;31244:390:0::1;31675:22:::0;;31672:1343:::1;;31783:3;::::0;31723:13:::1;31762:25:::0;;;:20:::1;:25;::::0;;;;:31:::1;;::::0;31739:55:::1;::::0;:18;;:22:::1;:55::i;:::-;31723:71;;31860:12;;31849:8;:23;31846:510;;;-1:-1:-1::0;31904:12:0::1;::::0;31943;31935:48:::1;;;::::0;;-1:-1:-1;;;31935:48:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;32084:3;::::0;32029:18:::1;32063:25:::0;;;:20:::1;:25;::::0;;;;:31:::1;;::::0;32050:45:::1;::::0;:8;;:12:::1;:45::i;:::-;32029:66:::0;-1:-1:-1;32134:60:0::1;32175:18:::0;32134:36:::1;:17:::0;32029:66;32134:21:::1;:36::i;:::-;:40:::0;::::1;:60::i;:::-;32114:80:::0;-1:-1:-1;32230:57:0::1;32268:18:::0;32230:33:::1;:14:::0;32249:13;32230:18:::1;:33::i;:57::-;32213:74:::0;-1:-1:-1;32327:13:0;-1:-1:-1;31846:510:0::1;32445:45;32474:4;32481:8;32445:20;:45::i;:::-;32412:78:::0;;-1:-1:-1;32412:78:0;-1:-1:-1;32508:24:0;32505:499:::1;;32588:1;32574:11;:15;32566:50;;;::::0;;-1:-1:-1;;;32566:50:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;32566:50:0;;;;;;;;;;;;;::::1;;32723:3;::::0;32662:21:::1;32702:25:::0;;;:20:::1;:25;::::0;;;;:31:::1;;::::0;32686:48:::1;::::0;:11;;:15:::1;:48::i;:::-;32662:72:::0;-1:-1:-1;32773:63:0::1;32817:18:::0;32773:39:::1;:17:::0;32662:72;32773:21:::1;:39::i;:63::-;32753:83:::0;-1:-1:-1;32872:60:0::1;32913:18:::0;32872:36:::1;:14:::0;32891:16;32872:18:::1;:36::i;:60::-;32855:77:::0;-1:-1:-1;32972:16:0;-1:-1:-1;32505:499:0::1;31672:1343;;33030:21:::0;;33027:163:::1;;33140:9;::::0;33151:7:::1;::::0;33119:59:::1;::::0;-1:-1:-1;;;;;33140:9:0;;::::1;::::0;33151:7:::1;33160:17:::0;33119:20:::1;:59::i;:::-;33203:18:::0;;33200:161:::1;;33311:9;::::0;33290:59:::1;::::0;-1:-1:-1;;;;;33311:9:0::1;33322:10;33334:14:::0;33290:20:::1;:59::i;:::-;33374:22:::0;;33371:292:::1;;33536:3;::::0;33515:25:::1;::::0;;;:20:::1;:25;::::0;;;;:31:::1;;::::0;33464:84:::1;::::0;33480:10:::1;::::0;33492:55:::1;::::0;:18;;:22:::1;:55::i;:::-;33464:15;:84::i;:::-;33639:3;::::0;33618:25:::1;::::0;;;:20:::1;:25;::::0;;;;:31:::1;;::::0;33578:73:::1;::::0;33595:55:::1;::::0;:18;;:22:::1;:55::i;:::-;33578:12;::::0;;:16:::1;:73::i;:::-;33563:12;:88:::0;33371:292:::1;33698:87;33767:17;33698:64;33743:18;33698:40;33723:14;33698:4;:20;;;:24;;:40;;;;:::i;:::-;:44:::0;::::1;:64::i;:87::-;33675:20;::::0;::::1;:110:::0;33818:19:::1;::::0;::::1;::::0;:86:::1;::::0;33886:17;;33818:63:::1;::::0;33862:18;;33818:63;;33842:14;33818:23:::1;:39::i;:::-;:43:::0;::::1;:63::i;:86::-;33796:19;::::0;::::1;:108:::0;33922:74:::1;::::0;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;33992:3:::1;33922:74:::0;;;;;;33937:10:::1;::::0;33922:74:::1;::::0;;;;;;;;::::1;18431:1;;;;;;30471:3530:::0;:::o;11528:18::-;;;;;;;;;;;;;;;-1:-1:-1;;11528:18:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;10522:371::-;10598:4;10657:11;;;10656:53;;-1:-1:-1;10682:10:0;10674:19;;;;:7;:19;;;;;;;;-1:-1:-1;;;;;10674:29:0;;;;;;;;;;:34;10656:53;10648:112;;;;-1:-1:-1;;;10648:112:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10779:10;10771:19;;;;:7;:19;;;;;;;;-1:-1:-1;;;;;10771:29:0;;;;;;;;;;;;:38;;;10825;;;;;;;10771:29;;10779:10;10825:38;;;;;;;;;;;-1:-1:-1;10881:4:0;10522:371;;;;;:::o;6612:100::-;6665:7;6692:12;6612:100;:::o;9208:665::-;9360:4;-1:-1:-1;;;;;9390:17:0;;9382:63;;;;-1:-1:-1;;;9382:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9474:15:0;;;;;;:8;:15;;;;;;9464:25;;;9456:53;;;;;-1:-1:-1;;;9456:53:0;;;;;;;;;;;;-1:-1:-1;;;9456:53:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;9538:14:0;;;;;;:7;:14;;;;;;;;9553:10;9538:26;;;;;;;;9528:36;;;9520:81;;;;;-1:-1:-1;;;9520:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9651:14:0;;;;;;:7;:14;;;;;;;;9666:10;9651:26;;;;;;;;:38;;9682:6;9651:30;:38::i;:::-;-1:-1:-1;;;;;9622:14:0;;;;;;:7;:14;;;;;;;;9637:10;9622:26;;;;;;;:67;;;;9718:15;;;:8;:15;;;;;:27;;9738:6;9718:19;:27::i;:::-;-1:-1:-1;;;;;9700:15:0;;;;;;;:8;:15;;;;;;:45;;;;9772:13;;;;;;;:25;;9790:6;9772:17;:25::i;:::-;-1:-1:-1;;;;;9756:13:0;;;;;;;:8;:13;;;;;;;;;:41;;;;9815:28;;;;;;;9756:13;;9815:28;;;;;;;;;;;;;-1:-1:-1;9861:4:0;9208:665;;;;;:::o;17591:127::-;17673:4;17696:17;17708:4;17696:11;:17::i;:::-;17689:24;;17591:127;;;;:::o;11580:21::-;;;;;;:::o;25016:2653::-;18387:10;18401:9;18387:23;18379:47;;;;;-1:-1:-1;;;18379:47:0;;;;;;;;;;;;-1:-1:-1;;;18379:47:0;;;;;;;;;;;;;;;25212:7:::1;::::0;25125:10:::1;::::0;25222:4:::1;25212:14;25203:23:::0;::::1;::::0;:63:::1;;;25252:7;;25262:4;25252:14;25243:5;:23;25203:63;:102;;;;25292:7;;25302:3;25292:13;25283:5;:22;25203:102;:141;;;;25331:7;;25341:3;25331:13;25322:5;:22;25203:141;25181:202;;;::::0;;-1:-1:-1;;;25181:202:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;25181:202:0;;;;;;;;;;;;;::::1;;25421:24;;:::i;:::-;25474;25487:10;25474:12;:24::i;:::-;-1:-1:-1::0;;25524:12:0;;25456:42;;-1:-1:-1;25524:12:0;25541:162:::1;;25565:38;25579:10;25591:4;25597:5;25565:13;:38::i;:::-;25636:24;25649:10;25636:12;:24::i;:::-;-1:-1:-1::0;;25685:12:0;;25618:42;;-1:-1:-1;25685:12:0;-1:-1:-1;25541:162:0::1;25741:10;25709:17;25729:23:::0;;;:11:::1;:23;::::0;;;;25761:7;;25757:56:::1;;25790:17:::0;;;25757:56:::1;25863:16;::::0;::::1;::::0;:21;25855:51:::1;;;::::0;;-1:-1:-1;;;25855:51:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;25855:51:0;;;;;;;;;;;;;::::1;;25943:17;25987:7;;25997:4;25987:14;25978:5;:23;25975:296;;;-1:-1:-1::0;26032:1:0::1;25975:296;;;26063:7;;26073:4;26063:14;26054:5;:23;26051:220;;;-1:-1:-1::0;26108:1:0::1;26051:220;;;26139:7;;26149:3;26139:13;26130:5;:22;26127:144;;;-1:-1:-1::0;26183:1:0::1;26127:144;;;26214:7;;26224:3;26214:13;26205:5;:22;26202:69;;;-1:-1:-1::0;26258:1:0::1;26202:69;26304:16;::::0;::::1;::::0;::::1;;::::0;;::::1;::::0;::::1;26289:31:::0;;::::1;;;26281:63;;;::::0;;-1:-1:-1;;;26281:63:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;26281:63:0;;;;;;;;;;;;;::::1;;26377:7;;26387:6;26377:16;26360:14;;:33;26357:578;;;26479:9;::::0;26457:51:::1;::::0;-1:-1:-1;;;;;26479:9:0::1;26490:10;26502:5:::0;26457:21:::1;:51::i;:::-;26357:578;;;26588:3;::::0;26541:13:::1;26567:25:::0;;;:20:::1;:25;::::0;;;;:31:::1;;::::0;26557:59:::1;::::0;26612:3:::1;::::0;26557:50:::1;::::0;26604:2:::1;::::0;26557:42:::1;::::0;:5;;:9:::1;:42::i;:::-;:46:::0;::::1;:50::i;:59::-;26702:9;::::0;26541:75;;-1:-1:-1;26680:68:0::1;::::0;-1:-1:-1;;;;;26702:9:0::1;26713:10;26725:22;26743:3;26725:13;:5:::0;26735:2:::1;26725:9;:13::i;:22::-;26680:21;:68::i;:::-;26809:38;26826:10;26838:8;26809:16;:38::i;:::-;26899:12;:24:::0;;;;::::1;::::0;;26357:578:::1;27007:9;::::0;27018:7:::1;::::0;26986:55:::1;::::0;-1:-1:-1;;;;;27007:9:0;;::::1;::::0;27018:7:::1;27027:13;:5:::0;27037:2:::1;27027:9;:13::i;:::-;26986:20;:55::i;:::-;27071:14;:23:::0;;;::::1;::::0;;-1:-1:-1;27135:22:0;::::1;:31:::0;;;::::1;::::0;;27177:16:::1;::::0;::::1;:24:::0;;;-1:-1:-1;27212:27:0::1;::::0;::::1;:31:::0;;;27254:28:::1;::::0;::::1;:32:::0;27297:22:::1;::::0;::::1;:27:::0;;27322:2:::1;-1:-1:-1::0;;27297:27:0;;::::1;;-1:-1:-1::0;;27335:30:0::1;27297:27;;27335:30:::0;::::1;;;-1:-1:-1::0;;27376:29:0::1;::::0;27401:3:::1;27376:29;;::::0;;::::1;::::0;;;::::1;-1:-1:-1::0;;;;27416:35:0::1;-1:-1:-1::0;;;27416:35:0;;;::::1;;::::0;;27488:18:::1;27071:23:::0;27488:11:::1;:18::i;:::-;27567:31;27585:5;27592;27567:17;:31::i;:::-;27616:48;::::0;;;;;27660:3:::1;27616:48;::::0;::::1;::::0;;;-1:-1:-1;;;;;27616:48:0;;::::1;::::0;;;::::1;::::0;27628:10:::1;::::0;27616:48:::1;::::0;;;;;;;;;::::1;18431:1;;;;;25016:2653:::0;;:::o;35618:463::-;35687:19;;:::i;:::-;35734;:17;:19::i;:::-;35724:29;;35774:3;;35724:7;35764;;;:13;;;35729:1;35798:25;;;:20;:25;;;;;;;35769:1;35798:31;;;35788:7;;;:41;;;;35793:1;35850:37;;;35840:7;;;:47;35908:25;;;;;;:30;;;;;35898:7;;;:40;35959:14;;35949:7;;;:24;35994:19;;35984:7;;;:29;36034:22;;;36024:7;;;:32;35724:4;35618:463::o;27719:2551::-;18387:10;18401:9;18387:23;18379:47;;;;;-1:-1:-1;;;18379:47:0;;;;;;;;;;;;-1:-1:-1;;;18379:47:0;;;;;;;;;;;;;;;27818:10:::1;27786:17;27806:23:::0;;;:11:::1;:23;::::0;;;;27852:7;;27840:20:::1;::::0;:11:::1;:20::i;:::-;27900:1;27881:4;:16;;;:20;27873:50;;;::::0;;-1:-1:-1;;;27873:50:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;27873:50:0;;;;;;;;;;;;;::::1;;27949:21;::::0;::::1;::::0;-1:-1:-1;;;27949:21:0;::::1;;;27942:3;:28;;27934:57;;;::::0;;-1:-1:-1;;;27934:57:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;27934:57:0;;;;;;;;;;;;;::::1;;28031:13;28069:24;28082:10;28069:12;:24::i;:::-;28177:21;::::0;::::1;::::0;28055:38;;-1:-1:-1;28141:26:0::1;::::0;-1:-1:-1;28202:6:0::1;::::0;-1:-1:-1;;;;28177:21:0;::::1;;;28171:3;:27;28170:38;28141:67;;28242:1;28223:4;:16;;;:20;:49;;;;;28271:1;28247:21;:25;28223:49;28219:2014;;;28357:16;::::0;::::1;::::0;28299:20:::1;::::0;28377:4:::1;::::0;28341:33:::1;::::0;28357:16:::1;::::0;::::1;;;28341:15;:33::i;:::-;28322:4;:16;;;:52;:59;;;;;28581:28;::::0;::::1;::::0;28551:27:::1;::::0;::::1;::::0;28520:22:::1;::::0;::::1;::::0;28501:16:::1;::::0;::::1;::::0;28322:59;;;::::1;::::0;-1:-1:-1;28420:21:0;;28396::::1;::::0;28551:58;;;::::1;::::0;28545:2:::1;::::0;28520:22:::1;;28501:41;:46;:108;28498:278;;28731:28;::::0;::::1;::::0;28701:27:::1;::::0;::::1;::::0;28670:22:::1;::::0;::::1;::::0;28651:16:::1;::::0;::::1;::::0;28701:58;;;::::1;::::0;28695:2:::1;::::0;28670:22:::1;::::0;;::::1;28651:41;:46;:109;28630:130;;28498:278;28790:15;28865:18;28846:16;28828:15;:34;:55;28824:660;;;28958:15;28937:18;:36;;;;;;28918:55;;29033:18;29014:16;28996:15;:34;:55;28992:123;;;29076:19;::::0;;::::1;::::0;28992:123:::1;29156:21;29137:16;:40;29133:129;;;29221:21;29202:40;;29133:129;-1:-1:-1::0;29362:18:0;28824:660:::1;;;-1:-1:-1::0;29434:34:0;;::::1;28824:660;29500:20;::::0;::::1;:34:::0;;;::::1;::::0;;29549:22:::1;::::0;::::1;:36:::0;;;::::1;::::0;;29602:27:::1;::::0;::::1;:41:::0;;;::::1;::::0;;29658:21:::1;::::0;::::1;:58:::0;;::::1;-1:-1:-1::0;;;29658:58:0;;::::1;::::0;::::1;29709:6;29690:25:::0;::::1;29658:58;::::0;;::::1;;-1:-1:-1::0;;;;29658:58:0;;::::1;;::::0;;;;-1:-1:-1;29822:16:0;::::1;::::0;29866:2:::1;::::0;29841:22:::1;;29822:41;:46;29790:4;:28;;;29760:4;:27;;;:58;:108;29756:233;;29913:16;::::0;::::1;::::0;;29889:20:::1;::::0;::::1;:40:::0;;;;::::1;::::0;;:20:::1;29948::::0;;29756:233:::1;30136:85;30161:5;30186:16;30168:15;:34;30204:4;:16;;;30136:24;:85::i;:::-;28219:2014;;;;;18431:1;;;27719:2551::o:0;36207:941::-;36311:20;;:::i;:::-;36333:12;36347:13;36378:24;;:::i;:::-;36440:18;36453:4;36440:12;:18::i;:::-;36484:12;;-1:-1:-1;;;;;36523:17:0;;;;36469:12;36523:17;;;:11;36484:12;36523:17;;;;;;;;36547;;;36585:22;;;;36575:7;;;:32;36628:20;;;;36618:7;;;:30;36669:16;;;;36659:7;;;:26;36706:27;;;;36696:7;;;:37;36754:28;;;;36744:7;;;:38;36803:22;;;;;;;;36793:7;;;:32;36846:16;;;;;;;36836:7;;;:26;36883:15;;;;;;36873:7;;;:25;;;;-1:-1:-1;;;36919:21:0;;;;36909:7;;;:31;36841:1;36962:22;;;36951:8;;;:33;36878:1;37006:23;;;36995:8;;;:34;36914:1;37051:20;;;37040:8;;;:31;36956:2;37093:19;;;;37082:8;;;:30;36547:4;;36207:941;-1:-1:-1;;;36207:941:0:o;7889:116::-;-1:-1:-1;;;;;7981:16:0;7954:7;7981:16;;;:8;:16;;;;;;;7889:116::o;34064:1449::-;18387:10;18401:9;18387:23;18379:47;;;;;-1:-1:-1;;;18379:47:0;;;;;;;;;;;;-1:-1:-1;;;18379:47:0;;;;;;;;;;;;;;;34156:22:::1;::::0;::::1;;34149:3;:29;;34141:58;;;::::0;;-1:-1:-1;;;34141:58:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;34141:58:0;;;;;;;;;;;;;::::1;;34232:19;;34218:11;;:33;34210:58;;;::::0;;-1:-1:-1;;;34210:58:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;34210:58:0;;;;;;;;;;;;;::::1;;34326:22;::::0;34289:26:::1;::::0;34352:6:::1;::::0;34326:22:::1;;34320:3;:28;34319:39;34289:69;;34369:20;34406:3;34392:11;;:17;;;;;;34369:40;;34420:21;34444;34420:45;;34476:23;34532:19;;34517:11;;:34;34514:120;;-1:-1:-1::0;34603:19:0::1;::::0;34589:11:::1;::::0;:33:::1;34514:120;34644:15;34715:18;34696:16;34678:15;:34;:55;34674:608;;;34800:15;34779:18;:36;;;;;;34760:55;;34871:18;34852:16;34834:15;:34;:55;34830:115;;;34910:19;::::0;;::::1;::::0;34830:115:::1;34982:21;34963:16;:40;34959:121;;;35043:21;35024:40;;34959:121;-1:-1:-1::0;35172:18:0;34674:608:::1;;;-1:-1:-1::0;35236:34:0;;::::1;34674:608;35347:7;::::0;35331:36:::1;::::0;-1:-1:-1;;;;;35347:7:0::1;35356:10:::0;35331:15:::1;:36::i;:::-;35405:19;:33:::0;;;;;::::1;::::0;;-1:-1:-1;35449:22:0::1;:59:::0;;-1:-1:-1;;35449:59:0;::::1;35501:6;35482:25:::0;;;::::1;35449:59;::::0;;::::1;;;::::0;;;::::1;::::0;;-1:-1:-1;;34064:1449:0:o;11553:20::-;;;;;;;;;;;;;;;-1:-1:-1;;11553:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6889:138;6961:4;6985:34;6995:10;7007:3;7012:6;6985:9;:34::i;:::-;6978:41;6889:138;-1:-1:-1;;;6889:138:0:o;11234:209::-;-1:-1:-1;;;;;11410:15:0;;;11378:7;11410:15;;;:7;:15;;;;;;;;:25;;;;;;;;;;;;;11234:209::o;2212:465::-;2270:9;2517:6;2513:47;;-1:-1:-1;2547:1:0;2540:8;;2513:47;-1:-1:-1;2576:5:0;;;2580:1;2576;:5;:1;2600:5;;;;;:10;2592:56;;;;-1:-1:-1;;;2592:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18820:119;18907:8;18899:35;;;;;-1:-1:-1;;;18899:35:0;;;;;;;;;;;;-1:-1:-1;;;18899:35:0;;;;;;;;;;;;;;;18820:119;:::o;3145:132::-;3203:7;3230:39;3234:1;3237;3230:39;;;;;;;;;;;;;;;;;:3;:39::i;1344:136::-;1402:7;1429:43;1433:1;1436;1429:43;;;;;;;;;;;;;;;;;:3;:43::i;41630:761::-;41812:9;41739:19;41846:1;41837:10;;;;41834:487;;;41908:31;41935:3;41908:22;:14;41927:2;41908:18;:22::i;:31::-;41887:52;;41834:487;;;41969:5;:10;;41978:1;41969:10;41966:355;;;42040:21;:14;42059:1;42040:18;:21::i;41966:355::-;42091:5;:10;;42100:1;42091:10;42088:233;;;42162:31;42189:3;42162:22;:14;42181:2;42162:18;:22::i;42088:233::-;42223:5;:10;;42232:1;42223:10;42220:101;;;-1:-1:-1;42295:14:0;42220:101;42348:38;:14;42367:18;42348;:38::i;:::-;42331:55;;41630:761;;;;;:::o;20709:333::-;20821:4;20827:17;20889:6;-1:-1:-1;;;;;20877:29:0;;20915:4;20877:44;;;;;;;;;;;;;-1:-1:-1;;;;;20877:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20877:44:0;;-1:-1:-1;20930:24:0;;;20926:112;;;20970:5;20962:28;;;;20926:112;-1:-1:-1;21016:4:0;;-1:-1:-1;21022:9:0;20926:112;20709:333;;;;;:::o;19813:248::-;19926:5;-1:-1:-1;;;;;18539:18:0;;18531:40;;;;;-1:-1:-1;;;18531:40:0;;;;;;;;;;;;-1:-1:-1;;;18531:40:0;;;;;;;;;;;;;;;19958:6:::1;18693:17;:4;-1:-1:-1::0;;;;;18693:15:0::1;;:17::i;:::-;18685:44;;;::::0;;-1:-1:-1;;;18685:44:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;18685:44:0;;;;;;;;;;;;;::::1;;19980:8:::0;;19976:81:::2;;20022:6;-1:-1:-1::0;;;;;20005:33:0::2;;20039:5;20046:4;20005:46;;;;;;;;;;;;;-1:-1:-1::0;;;;;20005:46:0::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;19976:81;18576:1:::1;19813:248:::0;;;;:::o;19077:180::-;19160:8;;19156:97;;19185:37;19203:4;19210:5;19217:4;19185:9;:37::i;19156:97::-;19077:180;;:::o;894:175::-;978:5;;;1002:6;;;;994:46;;;;;-1:-1:-1;;;994:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;15883:147;-1:-1:-1;;;;;15991:20:0;;;15968:4;15991:20;;;:14;:20;;;;;;;:34;;;15883:147::o;16946:276::-;17032:19;;:::i;:::-;17053:12;17067:13;17092:24;;:::i;:::-;-1:-1:-1;;;;;;;;17119:21:0;;;;;;;:15;:21;;;;;;;;;17092:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17145:21;;;17187:13;17202:14;;17145:4;;16946:276::o;14966:783::-;-1:-1:-1;;;;;15088:21:0;;15060:25;15088:21;;;:15;:21;;;;;15124:11;;15120:625;;15161:4;;:9;15157:270;;15199:17;15210:5;15199:10;:17::i;:::-;15191:49;;;;;-1:-1:-1;;;15191:49:0;;;;;;;;;;;;-1:-1:-1;;;15191:49:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;15275:21:0;;;15259:13;15275:21;;;:14;:21;;;;;;;15332:10;15323:19;;;15315:55;;;;;-1:-1:-1;;;15315:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15389:14:0;;;:22;;-1:-1:-1;;;;;;15389:22:0;-1:-1:-1;;;;;15389:22:0;;;;;15157:270;15452:16;15463:4;15452:10;:16::i;:::-;15451:17;15443:46;;;;;-1:-1:-1;;;15443:46:0;;;;;;;;;;;;-1:-1:-1;;;15443:46:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;15512:18:0;;15504:54;;;;;-1:-1:-1;;;15504:54:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;15575:4;:6;;;;;;;;;15596:18;;15629:13;;:20;;-1:-1:-1;;;;;;15629:20:0;;;-1:-1:-1;;;;;15629:20:0;;;;;;;;;-1:-1:-1;15666:20:0;;;:14;:20;;;;;;;;:27;;;;;;;;;;;;15721:4;;15708:18;;:12;:18;;;;;;:25;;;;;;;;15120:625;14966:783;;;;:::o;20298:268::-;20412:5;-1:-1:-1;;;;;18539:18:0;;18531:40;;;;;-1:-1:-1;;;18531:40:0;;;;;;;;;;;;-1:-1:-1;;;18531:40:0;;;;;;;;;;;;;;;20444:6:::1;18693:17;:4;-1:-1:-1::0;;;;;18693:15:0::1;;:17::i;:::-;18685:44;;;::::0;;-1:-1:-1;;;18685:44:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;18685:44:0;;;;;;;;;;;;;::::1;;20466:8:::0;;20462:100:::2;;20491:65;::::0;;-1:-1:-1;;;20491:65:0;;-1:-1:-1;;;;;20491:65:0;;::::2;;::::0;::::2;::::0;20544:4:::2;20491:65:::0;;;;;;;;;;;;:37;;::::2;::::0;::::2;::::0;:65;;;;;-1:-1:-1;;20491:65:0;;;;;;;;-1:-1:-1;20491:37:0;:65;::::2;;::::0;::::2;;;;::::0;::::2;19407:181:::0;19491:8;;19487:97;;19516:37;19526:5;19541:4;19548;19516:9;:37::i;37253:1426::-;37380:3;;37325:31;37359:25;;;:20;:25;;;;;37395:21;;;:36;;;;;;37482:7;;37464:14;;37492:6;37482:16;;;-1:-1:-1;37461:1214:0;;37524:13;37556:28;37606:3;;37613:1;37606:8;37603:690;;;37676:7;;37686:6;37676:16;37651:9;:21;;;:41;37648:295;;-1:-1:-1;37784:7:0;;37760:21;;;;;37794:6;37784:16;;;37823:40;;;;37915:3;;37760:40;;;37897:26;;-1:-1:-1;37915:7:0;37897:17;:26::i;:::-;37886:37;;37648:295;37603:690;;;38011:7;;38021:6;38011:16;37986:9;:21;;;:41;37983:295;;-1:-1:-1;38119:7:0;;38095:21;;;;;38129:6;38119:16;;;38158:40;;;;38250:3;;38095:40;;;38232:26;;-1:-1:-1;38250:7:0;38232:17;:26::i;:::-;38221:37;;37983:295;38313:12;;38309:355;;38360:3;:6;;;;;;;;;;-1:-1:-1;38397:25:0;;;:20;:25;;;;;38441:28;;-1:-1:-1;;38441:28:0;38465:3;38441:28;;;;;38488:15;;;:26;;;38568:21;;;:47;;;38397:25;-1:-1:-1;38634:14:0;;:11;:14::i;38813:405::-;-1:-1:-1;;;;;38898:19:0;;38894:58;;38934:7;;38894:58;-1:-1:-1;;;;;38984:18:0;;38964:17;38984:18;;;:11;:18;;;;;39065:16;;;;:20;;;;:49;;;39098:4;:16;;;39089:5;:25;;39065:49;39061:109;;;39131:22;;;:27;;-1:-1:-1;;39131:27:0;39156:2;39131:27;;;38813:405;;;:::o;17346:111::-;17448:4;;17346:111;:::o;21652:286::-;21739:4;21759:5;21768:1;21759:10;21755:37;;;-1:-1:-1;21784:2:0;21777:9;;21755:37;21800:5;21809:1;21800:10;21796:37;;;-1:-1:-1;21825:2:0;21818:9;;21796:37;21841:5;21850:1;21841:10;21837:37;;;-1:-1:-1;21866:2:0;21859:9;;21837:37;21888:5;21897:1;21888:10;21884:37;;;-1:-1:-1;21913:2:0;21906:9;;21884:37;-1:-1:-1;21932:1:0;21652:286;;;:::o;39404:1999::-;39536:5;39510:23;39594:1;39580:1819;39602:2;39597:1;:7;39580:1819;;-1:-1:-1;;;;;39621:29:0;;39617:54;;39659:5;;39617:54;-1:-1:-1;;;;;39698:28:0;;39678:17;39698:28;;;:11;:28;;;;;39809:29;39710:15;39809:12;:29::i;:::-;39905:16;;;;39787:51;;-1:-1:-1;39905:20:0;;-1:-1:-1;39901:1401:0;;-1:-1:-1;39901:1401:0;40066:16;;;;39960:28;;;;;;40042:41;;40066:16;;;;;40042:23;:41::i;:::-;40013:70;;;;40117:1;40106:7;:12;40102:1185;;40203:4;40187:13;;;:20;40161:46;;40282:11;40263:4;:16;;;:30;40259:169;;;40393:11;40374:4;:16;;;40348:23;:42;:56;;;;;;40322:82;;40259:169;40454:27;;40450:818;;40660:22;;;;40641:16;;;;40685:2;;40660:22;;40641:41;:46;40614:23;40583:4;:28;;;40553:4;:27;;;:58;:84;:134;40549:463;;40826:28;;;;40796:27;;;;40765:22;;;;40746:16;;;;;40888:20;;;:40;;;;;;-1:-1:-1;40959:20:0;;;40796:58;;;;40790:2;40765:22;;;;40746:41;;;:46;;;;:109;;-1:-1:-1;40549:463:0;41038:20;;;:47;;;;;;41112:23;;;:50;;;;;;41189:28;;;:55;;;;;;40450:818;39901:1401;;;;-1:-1:-1;41380:13:0;;-1:-1:-1;41380:13:0;;39606:3;;39580:1819;;;;39404:1999;;;;;:::o;7255:409::-;7336:4;-1:-1:-1;;;;;7361:17:0;;7353:63;;;;-1:-1:-1;;;7353:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7445:15:0;;;;;;:8;:15;;;;;;7435:25;;;7427:53;;;;;-1:-1:-1;;;7427:53:0;;;;;;;;;;;;-1:-1:-1;;;7427:53:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;7511:15:0;;;;;;:8;:15;;;;;;:27;;7531:6;7511:19;:27::i;3765:339::-;3851:9;3955:12;3948:5;3940:28;;;;-1:-1:-1;;;3940:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3987:1;3983;:5;;;;;;;3765:339;-1:-1:-1;;;;3765:339:0:o;1775:186::-;1861:9;1899:12;1891:6;;;;1883:29;;;;-1:-1:-1;;;1883:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1927:5:0;;;1775:186::o;4658:810::-;4718:4;5377:20;;5220:66;5417:15;;;;;:42;;;5448:11;5436:8;:23;;5417:42;5409:51;4658:810;-1:-1:-1;;;;4658:810:0:o;21185:344::-;21274:4;21516:1;21508:5;:9;21521:2;21507:16;21480:17;;21500:3;21480:23;:44;;;;;;;21185:344;-1:-1:-1;;21185:344:0:o;22077:360::-;22172:10;22184:12;22212:5;22221:1;22212:10;22208:43;;;-1:-1:-1;22238:3:0;;-1:-1:-1;22243:1:0;22230:15;;22208:43;22259:5;22268:1;22259:10;22255:42;;;-1:-1:-1;22285:2:0;;-1:-1:-1;22289:1:0;22277:14;;22255:42;22305:5;22314:1;22305:10;22301:51;;;-1:-1:-1;22340:2:0;;-1:-1:-1;22344:1:0;22332:14;;22301:51;22366:5;22375:1;22366:10;22362:53;;;-1:-1:-1;22401:3:0;;-1:-1:-1;22406:2:0;22393:16;;22362:53;-1:-1:-1;22427:1:0;;-1:-1:-1;22427:1:0;22077:360;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o
Swarm Source
ipfs://6d02311a90b9127e1fde2853a5cac04a3e7838df8a507c97ac88de2bea740b6d
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.