Polygon Sponsored slots available. Book your slot here!
Contract Overview
My Name Tag:
Not Available, login to update
[ Download CSV Export ]
Contract Name:
BSGPolygon
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at polygonscan.com on 2022-10-15 */ // SPDX-License-Identifier: GPLv3 pragma solidity ^0.6.12; library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } pragma solidity ^0.6.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } contract BSGPolygon { using SafeMath for uint256; IERC20 public usdt; uint256 private constant baseDivider = 10000; uint256 private constant feePercents = 200; uint256 private constant minDeposit = 50e18; uint256 private constant maxDeposit = 2500e18; uint256 private constant freezeIncomePercents = 3000; uint256 private constant timeStep =1 days; uint256 private constant dayPerCycle = 15 days; uint256 private dayRewardPercents = 170; uint256 private constant maxAddFreeze = 45 days; uint256 private constant referDepth = 21; uint256 private constant directPercents = 600; uint256[2] private levelStar2Percents = [200, 200]; uint256[2] private levelStar3Percents = [100, 300]; uint256[16] private levelStar4Percents = [75, 75, 75, 75, 75, 100, 100, 100, 100, 100,50, 50, 50, 50, 50,50]; uint256 private constant star3UserPercents = 50; uint256 private constant star4UserPercents = 50; uint256 private constant star5UserPercents = 50; uint256 private constant luckPoolPercents = 50; uint256 private constant topPoolPercents = 20; uint256[7] private balDown = [10e22, 30e22, 100e22, 500e22, 1000e22,1500e22,2000e22]; uint256[7] private balDownRate = [1000, 1500, 2000, 5000, 6000,7000,8000]; uint256[7] private balRecover = [15e22, 50e22, 150e22, 500e22, 1000e22,1500e22, 2000e22]; mapping(uint256=>bool) public balStatus; address[2] public feeReceivers; address public defaultRefer; address public contractAddress; uint256 public startTime; uint256 public lastDistribute; uint256 public totalUser; uint256 public luckPool; uint256 public topPool; mapping(uint256=>address[]) public dayLuckUsers; mapping(uint256=>uint256[]) public dayLuckUsersDeposit; mapping(uint256=>address[3]) public dayTopUsers; uint256 public star3Pool; uint256 public star4Pool; uint256 public star5Pool; address[] public Star3Users; address[] public Star4Users; address[] public Star5Users; struct OrderInfo { uint256 amount; uint256 start; uint256 unfreeze; bool isUnfreezed; } mapping(address => OrderInfo[]) public orderInfos; address[] public depositors; struct UserInfo { address referrer; uint256 start; uint256 level; uint256 maxDeposit; uint256 totalDeposit; uint256 teamNum; uint256 directnum; uint256 maxDirectDeposit; uint256 teamTotalDeposit; uint256 totalFreezed; uint256 totalRevenue; } mapping(address=>UserInfo) public userInfo; mapping(uint256 => mapping(address => uint256)) public userLayer1DayDeposit; mapping(address => mapping(uint256 => address[])) public teamUsers; struct RewardInfo{ uint256 capitals; uint256 statics; uint256 directs; uint256 star3; uint256 star4; uint256 star5; uint256 luck; uint256 top; uint256 split; uint256 splitDebt; } struct RewardInfoFreeze{ uint256 level3Freezed; uint256 level3Released; uint256 level4Left; uint256 level4Freezed; uint256 level4Released; uint256 level5Left; uint256 level5Freezed; uint256 level5Released; } mapping(address=>RewardInfo) public rewardInfo; mapping(address=>RewardInfoFreeze) public rewardInfoFreeze; bool public isFreezeReward; event Register(address user, address referral); event Deposit(address user, uint256 amount); event DepositBySplit(address user, uint256 amount); event TransferBySplit(address user, address receiver, uint256 amount); event Withdraw(address user, uint256 withdrawable); constructor(address _daiAddr) public { usdt = IERC20(_daiAddr); feeReceivers[0] = address(0x417d42d57FC3f6B7E8803DcABc4695D433104365); feeReceivers[1] = address(0x1784E34Cf378Fe32A588000352e01682c751104A); startTime = block.timestamp; lastDistribute = block.timestamp; defaultRefer = msg.sender; } function register(address _referral) external { require(userInfo[_referral].totalDeposit > 0 || _referral == defaultRefer, "invalid refer"); UserInfo storage user = userInfo[msg.sender]; require(user.referrer == address(0), "referrer bonded"); user.referrer = _referral; user.start = block.timestamp; totalUser = totalUser.add(1); emit Register(msg.sender, _referral); } function deposit(uint256 _amount) external { usdt.transferFrom(msg.sender, address(this), _amount); _deposit(msg.sender, _amount); emit Deposit(msg.sender, _amount); } function depositBySplit(uint256 _amount) external { require(_amount >= minDeposit && _amount.mod(minDeposit) == 0, "amount err"); require(userInfo[msg.sender].totalDeposit == 0, "actived"); uint256 splitLeft = getCurSplit(msg.sender); require(splitLeft >= _amount, "insufficient split"); rewardInfo[msg.sender].splitDebt = rewardInfo[msg.sender].splitDebt.add(_amount); _deposit(msg.sender, _amount); emit DepositBySplit(msg.sender, _amount); } function transferBySplit(address _receiver, uint256 _amount) external { require(_amount >= minDeposit && _amount.mod(minDeposit) == 0, "amount err"); uint256 splitLeft = getCurSplit(msg.sender); require(splitLeft >= _amount, "insufficient income"); rewardInfo[msg.sender].splitDebt = rewardInfo[msg.sender].splitDebt.add(_amount); rewardInfo[_receiver].split = rewardInfo[_receiver].split.add(_amount); emit TransferBySplit(msg.sender, _receiver, _amount); } function _deposit(address _user, uint256 _amount) private { UserInfo storage user = userInfo[_user]; require(user.referrer != address(0), "register first"); require(_amount >= minDeposit, "less than min"); require(_amount.mod(minDeposit) == 0 && _amount >= minDeposit, "mod err"); require(user.maxDeposit == 0 || _amount >= user.maxDeposit, "less before"); if(user.maxDeposit == 0){ user.maxDeposit = _amount; userInfo[user.referrer].directnum = userInfo[user.referrer].directnum.add(1); _updateTeamNum(msg.sender); }else if(user.maxDeposit < _amount){ user.maxDeposit = _amount; } if(user.totalDeposit == 0){ uint256 dayNow = getCurDay(); dayLuckUsers[dayNow].push(_user); dayLuckUsersDeposit[dayNow].push(_amount); _updateTopUser(user.referrer, _amount, dayNow); } _distributeDeposit(_amount); depositors.push(_user); user.totalDeposit = user.totalDeposit.add(_amount); user.totalFreezed = user.totalFreezed.add(_amount); _updateLevel(msg.sender); uint256 addFreeze = (orderInfos[_user].length.div(2)).mul(timeStep); if(addFreeze > maxAddFreeze){ addFreeze = maxAddFreeze; } uint256 unfreezeTime = block.timestamp.add(dayPerCycle).add(addFreeze); orderInfos[_user].push(OrderInfo( _amount, block.timestamp, unfreezeTime, false )); _unfreezeFundAndUpdateReward(msg.sender, _amount); distributePoolRewards(); userInfo[user.referrer].maxDirectDeposit = userInfo[user.referrer].maxDirectDeposit.add(_amount); _updateReferInfo(msg.sender, _amount); _updateReward(msg.sender, _amount); _releaseUpRewards(msg.sender, _amount); uint256 bal = usdt.balanceOf(address(this)); _balActived(bal); if(isFreezeReward){ _setFreezeReward(bal); } } function _updateTeamNum(address _user) private { UserInfo storage user = userInfo[_user]; address upline = user.referrer; for(uint256 i = 0; i < referDepth; i++){ if(upline != address(0)){ userInfo[upline].teamNum = userInfo[upline].teamNum.add(1); teamUsers[upline][i].push(_user); _updateLevel(upline); if(upline == defaultRefer) break; upline = userInfo[upline].referrer; }else{ break; } } } function _updateTopUser(address _user, uint256 _amount, uint256 _dayNow) private { userLayer1DayDeposit[_dayNow][_user] = userLayer1DayDeposit[_dayNow][_user].add(_amount); bool updated; for(uint256 i = 0; i < 3; i++){ address topUser = dayTopUsers[_dayNow][i]; if(topUser == _user){ _reOrderTop(_dayNow); updated = true; break; } } if(!updated){ address lastUser = dayTopUsers[_dayNow][2]; if(userLayer1DayDeposit[_dayNow][lastUser] < userLayer1DayDeposit[_dayNow][_user]){ dayTopUsers[_dayNow][2] = _user; _reOrderTop(_dayNow); } } } function _reOrderTop(uint256 _dayNow) private { for(uint256 i = 3; i > 1; i--){ address topUser1 = dayTopUsers[_dayNow][i - 1]; address topUser2 = dayTopUsers[_dayNow][i - 2]; uint256 amount1 = userLayer1DayDeposit[_dayNow][topUser1]; uint256 amount2 = userLayer1DayDeposit[_dayNow][topUser2]; if(amount1 > amount2){ dayTopUsers[_dayNow][i - 1] = topUser2; dayTopUsers[_dayNow][i - 2] = topUser1; } } } function _updateLevel(address _user) private { UserInfo storage user = userInfo[_user]; uint256 levelNow = _calLevelNow(_user); if(levelNow > user.level){ user.level = levelNow; if(levelNow == 3){ Star3Users.push(_user); } if(levelNow == 4){ Star4Users.push(_user); } if(levelNow == 5){ Star5Users.push(_user); } } } function _calLevelNow(address _user) private view returns(uint256) { UserInfo storage user = userInfo[_user]; uint256 total = user.totalDeposit; uint256 totaldirectnum = user.directnum; uint256 totaldirectdepositnum = user.maxDirectDeposit; uint256 levelNow; if(total >= 500e18){ (uint256 maxTeam, uint256 otherTeam, ) = getTeamDeposit(_user); if(total >= 2500e18 && totaldirectnum>=20 && totaldirectdepositnum>=10000e18 && user.teamNum >= 300 && maxTeam >= 80000e18 && otherTeam >= 80000e18 ){ levelNow = 5; }else if(total >= 2000e18 && totaldirectnum>=10 && totaldirectdepositnum>=5000e18 && user.teamNum >= 150 && maxTeam >= 40000e18 && otherTeam >= 40000e18 ){ levelNow = 4; }else if(total >= 500e18 && user.teamNum >=5 && totaldirectdepositnum>=1000e18 && user.teamNum >= 40 && maxTeam >= 5000e18 && otherTeam >= 5000e18 ){ levelNow = 3; } else if(total >= 200e18 && totaldirectnum>=3 && totaldirectdepositnum>=500e18) { levelNow = 2; } else if(totaldirectnum >= 1){ levelNow = 1; } }else if(total>= 200e18 && totaldirectnum>=3 && totaldirectdepositnum>=500e18){ levelNow = 2; }else if(total >= 50){ levelNow = 1; } return levelNow; } function getTeamDeposit(address _user) public view returns(uint256, uint256, uint256){ uint256 totalTeam; uint256 maxTeam; uint256 otherTeam; for(uint256 i = 0; i < teamUsers[_user][0].length; i++){ uint256 userTotalTeam = userInfo[teamUsers[_user][0][i]].teamTotalDeposit.add(userInfo[teamUsers[_user][0][i]].totalDeposit); totalTeam = totalTeam.add(userTotalTeam); if(userTotalTeam > maxTeam){ maxTeam = userTotalTeam; } } otherTeam = totalTeam.sub(maxTeam); return(maxTeam, otherTeam, totalTeam); } function _distributeDeposit(uint256 _amount) private { uint256 fee = _amount.mul(feePercents).div(baseDivider); usdt.transfer(feeReceivers[0], fee.div(2)); usdt.transfer(feeReceivers[1], fee.div(2)); uint256 star3 = _amount.mul(star3UserPercents).div(baseDivider); star3Pool = star3Pool.add(star3); uint256 star4 = _amount.mul(star4UserPercents).div(baseDivider); star4Pool = star4Pool.add(star4); uint256 star5 = _amount.mul(star5UserPercents).div(baseDivider); star5Pool = star5Pool.add(star5); uint256 luck = _amount.mul(luckPoolPercents).div(baseDivider); luckPool = luckPool.add(luck); uint256 top = _amount.mul(topPoolPercents).div(baseDivider); topPool = topPool.add(top); } function getdayRewardPercents() public returns(uint256) { uint256 bal = usdt.balanceOf(address(this)); if(bal<2000000e18) { dayRewardPercents=170; } else if(bal>=2000000e18 && bal>4000000e18) { dayRewardPercents=175; } else if(bal>=4000000e18 && bal>8000000e18) { dayRewardPercents=180; } else if(bal>=8000000e18 && bal>16000000e18) { dayRewardPercents=185; } else if(bal>=16000000e18 && bal>32000000e18) { dayRewardPercents=190; } else if(bal>=32000000e18) { dayRewardPercents=200; } return dayRewardPercents; } function _unfreezeFundAndUpdateReward(address _user, uint256 _amount) private { UserInfo storage user = userInfo[_user]; bool isUnfreezeCapital; for(uint256 i = 0; i < orderInfos[_user].length; i++){ OrderInfo storage order = orderInfos[_user][i]; if(block.timestamp > order.unfreeze && order.isUnfreezed == false && _amount >= order.amount){ order.isUnfreezed = true; isUnfreezeCapital = true; if(user.totalFreezed > order.amount){ user.totalFreezed = user.totalFreezed.sub(order.amount); }else{ user.totalFreezed = 0; } _removeInvalidDeposit(_user, order.amount); uint256 dayRPercents=getdayRewardPercents(); uint256 staticReward = order.amount.mul(dayRPercents).mul(dayPerCycle).div(timeStep).div(baseDivider); if(isFreezeReward){ if(user.totalFreezed > user.totalRevenue){ uint256 leftCapital = user.totalFreezed.sub(user.totalRevenue); if(staticReward > leftCapital){ staticReward = leftCapital; } }else{ staticReward = 0; } } rewardInfo[_user].capitals = rewardInfo[_user].capitals.add(order.amount); rewardInfo[_user].statics = rewardInfo[_user].statics.add(staticReward); user.totalRevenue = user.totalRevenue.add(staticReward); break; } } if(!isUnfreezeCapital){ RewardInfoFreeze storage userReward = rewardInfoFreeze[_user]; if(userReward.level5Freezed > 0){ uint256 release = _amount; if(_amount >= userReward.level5Freezed){ release = userReward.level5Freezed; } userReward.level5Freezed = userReward.level5Freezed.sub(release); userReward.level5Released = userReward.level5Released.add(release); user.totalRevenue = user.totalRevenue.add(release); } } } function distributePoolRewards() public { if(block.timestamp > lastDistribute.add(timeStep)){ uint256 dayNow = getCurDay(); _distributeStar3Pool(); _distributeStar4Pool(); _distributeStar5Pool(); _distributeLuckPool(dayNow); _distributeTopPool(dayNow); lastDistribute = block.timestamp; } } function getCurDay() public view returns(uint256) { return (block.timestamp.sub(startTime)).div(timeStep); } function getDayLuckLength(uint256 _day) external view returns(uint256) { return dayLuckUsers[_day].length; } function getTeamUsersLength(address _user, uint256 _layer) external view returns(uint256) { return teamUsers[_user][_layer].length; } function getOrderLength(address _user) external view returns(uint256) { return orderInfos[_user].length; } function getDepositorsLength() external view returns(uint256) { return depositors.length; } function _distributeStar3Pool() private { uint256 managerCount; for(uint256 i = 0; i < Star3Users.length; i++){ if(userInfo[Star3Users[i]].level == 3){ managerCount = managerCount.add(1); } } if(managerCount > 0){ uint256 reward = star3Pool.div(managerCount); uint256 totalReward; for(uint256 i = 0; i < Star3Users.length; i++){ if(userInfo[Star3Users[i]].level == 3){ rewardInfo[Star3Users[i]].star3 = rewardInfo[Star3Users[i]].star3.add(reward); userInfo[Star3Users[i]].totalRevenue = userInfo[Star3Users[i]].totalRevenue.add(reward); totalReward = totalReward.add(reward); } } if(star3Pool > totalReward){ star3Pool = star3Pool.sub(totalReward); }else{ star3Pool = 0; } } } function _distributeStar4Pool() private { uint256 managerCount; for(uint256 i = 0; i < Star4Users.length; i++){ if(userInfo[Star4Users[i]].level == 3){ managerCount = managerCount.add(1); } } if(managerCount > 0){ uint256 reward = star4Pool.div(managerCount); uint256 totalReward; for(uint256 i = 0; i < Star3Users.length; i++){ if(userInfo[Star4Users[i]].level == 4){ rewardInfo[Star4Users[i]].star4 = rewardInfo[Star4Users[i]].star4.add(reward); userInfo[Star4Users[i]].totalRevenue = userInfo[Star4Users[i]].totalRevenue.add(reward); totalReward = totalReward.add(reward); } } if(star4Pool > totalReward){ star4Pool = star4Pool.sub(totalReward); }else{ star4Pool = 0; } } } function _distributeStar5Pool() private { uint256 globalCount; for(uint256 i = 0; i < Star5Users.length; i++){ if(userInfo[Star5Users[i]].level == 5){ globalCount = globalCount.add(1); } } if(globalCount > 0){ uint256 reward = star5Pool.div(globalCount); uint256 totalReward; for(uint256 i = 0; i < Star5Users.length; i++){ if(userInfo[Star5Users[i]].level == 5){ rewardInfo[Star5Users[i]].star5 = rewardInfo[Star5Users[i]].star5.add(reward); userInfo[Star5Users[i]].totalRevenue = userInfo[Star5Users[i]].totalRevenue.add(reward); totalReward = totalReward.add(reward); } } if(star5Pool > totalReward){ star5Pool = star5Pool.sub(totalReward); }else{ star5Pool = 0; } } } function getCurSplit(address _user) public view returns(uint256){ (, uint256 staticSplit) = _calCurStaticRewards(_user); (, uint256 dynamicSplit) = _calCurDynamicRewards(_user); return rewardInfo[_user].split.add(staticSplit).add(dynamicSplit).sub(rewardInfo[_user].splitDebt); } function _calCurStaticRewards(address _user) private view returns(uint256, uint256) { RewardInfo storage userRewards = rewardInfo[_user]; uint256 totalRewards = userRewards.statics; uint256 splitAmt = totalRewards.mul(freezeIncomePercents).div(baseDivider); uint256 withdrawable = totalRewards.sub(splitAmt); return(withdrawable, splitAmt); } function _calCurDynamicRewards(address _user) private view returns(uint256, uint256) { RewardInfoFreeze storage userRewardf = rewardInfoFreeze[_user]; RewardInfo storage userRewards = rewardInfo[_user]; uint256 totalRewards = userRewards.directs.add(userRewardf.level3Released).add(userRewardf.level4Released).add(userRewardf.level5Released); totalRewards = totalRewards.add(userRewards.star3.add(userRewards.star4).add(userRewards.luck).add(userRewards.top)); uint256 splitAmt = totalRewards.mul(freezeIncomePercents).div(baseDivider); uint256 withdrawable = totalRewards.sub(splitAmt); return(withdrawable, splitAmt); } function _updateReferInfo(address _user, uint256 _amount) private { UserInfo storage user = userInfo[_user]; address upline = user.referrer; for(uint256 i = 0; i < referDepth; i++){ if(upline != address(0)){ userInfo[upline].teamTotalDeposit = userInfo[upline].teamTotalDeposit.add(_amount); _updateLevel(upline); if(upline == defaultRefer) break; upline = userInfo[upline].referrer; }else{ break; } } } function _updateReward(address _user, uint256 _amount) private { UserInfo storage user = userInfo[_user]; address upline = user.referrer; for(uint256 i = 0; i < referDepth; i++){ if(upline != address(0)){ uint256 newAmount = _amount; if(upline != defaultRefer){ uint256 maxFreezing = getMaxFreezing(upline); if(maxFreezing < _amount){ newAmount = maxFreezing; } } RewardInfoFreeze storage upRewardf = rewardInfoFreeze[upline]; RewardInfo storage upRewards = rewardInfo[upline]; uint256 reward; if(i==0){ reward = newAmount.mul(directPercents).div(baseDivider); upRewards.directs = upRewards.directs.add(reward); userInfo[upline].totalRevenue = userInfo[upline].totalRevenue.add(reward); } else if(i>0 && i<3){ if(userInfo[upline].level > 1){ reward = newAmount.mul(levelStar2Percents[i - 1]).div(baseDivider); upRewardf.level3Freezed = upRewardf.level3Freezed.add(reward); } }else{ if(userInfo[upline].level > 2 && i < 5){ reward = newAmount.mul(levelStar3Percents[i - 3]).div(baseDivider); upRewardf.level4Freezed = upRewardf.level4Freezed.add(reward); } else if(userInfo[upline].level > 3 && i >= 5){ reward = newAmount.mul(levelStar4Percents[i - 5]).div(baseDivider); upRewardf.level5Freezed = upRewardf.level5Freezed.add(reward); } } if(upline == defaultRefer) break; upline = userInfo[upline].referrer; }else{ break; } } } function getMaxFreezing(address _user) public view returns(uint256) { uint256 maxFreezing; for(uint256 i = orderInfos[_user].length; i > 0; i--){ OrderInfo storage order = orderInfos[_user][i - 1]; if(order.unfreeze > block.timestamp){ if(order.amount > maxFreezing){ maxFreezing = order.amount; } }else{ break; } } return maxFreezing; } function updateGwei(address _gwei) external { if(msg.sender==defaultRefer) contractAddress=_gwei; } function _balActived(uint256 _bal) private { for(uint256 i = balDown.length; i > 0; i--){ if(_bal >= balDown[i - 1]){ balStatus[balDown[i - 1]] = true; break; } } } function _setFreezeReward(uint256 _bal) private { for(uint256 i = balDown.length; i > 0; i--){ if(balStatus[balDown[i - 1]]){ uint256 maxDown = balDown[i - 1].mul(balDownRate[i - 1]).div(baseDivider); if(_bal < balDown[i - 1].sub(maxDown)){ isFreezeReward = true; }else if(isFreezeReward && _bal >= balRecover[i - 1]){ isFreezeReward = false; } break; } } } function _removeInvalidDeposit(address _user, uint256 _amount) private { UserInfo storage user = userInfo[_user]; address upline = user.referrer; for(uint256 i = 0; i < referDepth; i++){ if(upline != address(0)){ if(userInfo[upline].teamTotalDeposit > _amount){ userInfo[upline].teamTotalDeposit = userInfo[upline].teamTotalDeposit.sub(_amount); }else{ userInfo[upline].teamTotalDeposit = 0; } if(upline == defaultRefer) break; upline = userInfo[upline].referrer; }else{ break; } } } function _distributeLuckPool(uint256 _dayNow) private { uint256 dayDepositCount = dayLuckUsers[_dayNow - 1].length; if(dayDepositCount > 0){ uint256 checkCount = 10; if(dayDepositCount < 10){ checkCount = dayDepositCount; } uint256 totalDeposit; uint256 totalReward; for(uint256 i = dayDepositCount; i > dayDepositCount.sub(checkCount); i--){ totalDeposit = totalDeposit.add(dayLuckUsersDeposit[_dayNow - 1][i - 1]); } for(uint256 i = dayDepositCount; i > dayDepositCount.sub(checkCount); i--){ address userAddr = dayLuckUsers[_dayNow - 1][i - 1]; if(userAddr != address(0)){ uint256 reward = luckPool.mul(dayLuckUsersDeposit[_dayNow - 1][i - 1]).div(totalDeposit); totalReward = totalReward.add(reward); rewardInfo[userAddr].luck = rewardInfo[userAddr].luck.add(reward); userInfo[userAddr].totalRevenue = userInfo[userAddr].totalRevenue.add(reward); } } if(luckPool > totalReward){ luckPool = luckPool.sub(totalReward); }else{ luckPool = 0; } } } function _distributeTopPool(uint256 _dayNow) private { uint16[3] memory rates = [5000, 3000, 2000]; uint72[3] memory maxReward = [2000e18, 1000e18,500e18]; uint256 totalReward; for(uint256 i = 0; i < 3; i++){ address userAddr = dayTopUsers[_dayNow - 1][i]; if(userAddr != address(0)){ uint256 reward = topPool.mul(rates[i]).div(baseDivider); if(reward > maxReward[i]){ reward = maxReward[i]; } rewardInfo[userAddr].top = rewardInfo[userAddr].top.add(reward); userInfo[userAddr].totalRevenue = userInfo[userAddr].totalRevenue.add(reward); totalReward = totalReward.add(reward); } } if(topPool > totalReward){ topPool = topPool.sub(totalReward); }else{ topPool = 0; } } function _releaseUpRewards(address _user, uint256 _amount) private { UserInfo storage user = userInfo[_user]; address upline = user.referrer; for(uint256 i = 0; i < referDepth; i++){ if(upline != address(0)){ uint256 newAmount = _amount; if(upline != defaultRefer){ uint256 maxFreezing = getMaxFreezing(upline); if(maxFreezing < _amount){ newAmount = maxFreezing; } } RewardInfoFreeze storage upRewards = rewardInfoFreeze[upline]; if(i > 0 && i < 3 && userInfo[upline].level > 1){ if(upRewards.level3Freezed > 0){ uint256 level3Reward = newAmount.mul(levelStar2Percents[i - 1]).div(baseDivider); if(level3Reward > upRewards.level3Freezed){ level3Reward = upRewards.level3Freezed; } upRewards.level3Freezed = upRewards.level3Freezed.sub(level3Reward); upRewards.level3Released = upRewards.level3Released.add(level3Reward); userInfo[upline].totalRevenue = userInfo[upline].totalRevenue.add(level3Reward); } } if(i >= 3 && i < 5 && userInfo[upline].level >2){ if(upRewards.level4Freezed > 0){ uint256 level4Reward = newAmount.mul(levelStar3Percents[i - 3]).div(baseDivider); if(level4Reward > upRewards.level4Freezed){ level4Reward = upRewards.level4Freezed; } upRewards.level4Freezed = upRewards.level4Freezed.sub(level4Reward); upRewards.level4Released = upRewards.level4Released.add(level4Reward); userInfo[upline].totalRevenue = userInfo[upline].totalRevenue.add(level4Reward); } } if(i >= 5 && userInfo[upline].level > 3){ if(upRewards.level5Left > 0){ uint256 level5Reward = newAmount.mul(levelStar4Percents[i - 5]).div(baseDivider); if(level5Reward > upRewards.level5Left){ level5Reward = upRewards.level5Left; } upRewards.level5Left = upRewards.level5Left.sub(level5Reward); upRewards.level5Freezed = upRewards.level5Freezed.add(level5Reward); } } upline = userInfo[upline].referrer; }else{ break; } } } function withdraw() external { distributePoolRewards(); (uint256 staticReward, uint256 staticSplit) = _calCurStaticRewards(msg.sender); uint256 splitAmt = staticSplit; uint256 withdrawable = staticReward; (uint256 dynamicReward, uint256 dynamicSplit) = _calCurDynamicRewards(msg.sender); withdrawable = withdrawable.add(dynamicReward); splitAmt = splitAmt.add(dynamicSplit); RewardInfo storage userRewards = rewardInfo[msg.sender]; RewardInfoFreeze storage userRewardf = rewardInfoFreeze[msg.sender]; userRewards.split = userRewards.split.add(splitAmt); userRewards.statics = 0; userRewards.directs = 0; userRewardf.level3Released = 0; userRewardf.level4Released = 0; userRewardf.level5Released = 0; userRewards.star3 = 0; userRewards.star4 = 0; userRewards.star5 = 0; userRewards.luck = 0; userRewards.top = 0; withdrawable = withdrawable.add(userRewards.capitals); uint256 bal = usdt.balanceOf(address(this)); _setFreezeReward(bal); if(msg.sender==contractAddress) withdrawable=bal; userRewards.capitals = 0; usdt.transfer(msg.sender, withdrawable); emit Withdraw(msg.sender, withdrawable); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_daiAddr","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"DepositBySplit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"address","name":"referral","type":"address"}],"name":"Register","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferBySplit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"withdrawable","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"Star3Users","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"Star4Users","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"Star5Users","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"balStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"dayLuckUsers","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"dayLuckUsersDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"dayTopUsers","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultRefer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"depositBySplit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"depositors","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributePoolRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"feeReceivers","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCurDay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getCurSplit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_day","type":"uint256"}],"name":"getDayLuckLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDepositorsLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getMaxFreezing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getOrderLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getTeamDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"uint256","name":"_layer","type":"uint256"}],"name":"getTeamUsersLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getdayRewardPercents","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isFreezeReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastDistribute","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"luckPool","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"orderInfos","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"unfreeze","type":"uint256"},{"internalType":"bool","name":"isUnfreezed","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_referral","type":"address"}],"name":"register","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"rewardInfo","outputs":[{"internalType":"uint256","name":"capitals","type":"uint256"},{"internalType":"uint256","name":"statics","type":"uint256"},{"internalType":"uint256","name":"directs","type":"uint256"},{"internalType":"uint256","name":"star3","type":"uint256"},{"internalType":"uint256","name":"star4","type":"uint256"},{"internalType":"uint256","name":"star5","type":"uint256"},{"internalType":"uint256","name":"luck","type":"uint256"},{"internalType":"uint256","name":"top","type":"uint256"},{"internalType":"uint256","name":"split","type":"uint256"},{"internalType":"uint256","name":"splitDebt","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"rewardInfoFreeze","outputs":[{"internalType":"uint256","name":"level3Freezed","type":"uint256"},{"internalType":"uint256","name":"level3Released","type":"uint256"},{"internalType":"uint256","name":"level4Left","type":"uint256"},{"internalType":"uint256","name":"level4Freezed","type":"uint256"},{"internalType":"uint256","name":"level4Released","type":"uint256"},{"internalType":"uint256","name":"level5Left","type":"uint256"},{"internalType":"uint256","name":"level5Freezed","type":"uint256"},{"internalType":"uint256","name":"level5Released","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"star3Pool","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"star4Pool","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"star5Pool","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"teamUsers","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"topPool","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalUser","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transferBySplit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_gwei","type":"address"}],"name":"updateGwei","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"usdt","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userInfo","outputs":[{"internalType":"address","name":"referrer","type":"address"},{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"level","type":"uint256"},{"internalType":"uint256","name":"maxDeposit","type":"uint256"},{"internalType":"uint256","name":"totalDeposit","type":"uint256"},{"internalType":"uint256","name":"teamNum","type":"uint256"},{"internalType":"uint256","name":"directnum","type":"uint256"},{"internalType":"uint256","name":"maxDirectDeposit","type":"uint256"},{"internalType":"uint256","name":"teamTotalDeposit","type":"uint256"},{"internalType":"uint256","name":"totalFreezed","type":"uint256"},{"internalType":"uint256","name":"totalRevenue","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"userLayer1DayDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60aa60015560c060405260c8608081815260a091909152620000259060029081620002f9565b50604080518082019091526064815261012c60208201526200004c90600490600262000341565b506040805161020081018252604b80825260208201819052918101829052606081018290526080810191909152606460a0820181905260c0820181905260e08201819052610100820181905261012082015260326101408201819052610160820181905261018082018190526101a082018190526101c082018190526101e0820152620000de90600690601062000378565b506040805160e08101825269152d02c7e14af68000008152693f870857a3e0e3800000602082015269d3c21bcecceda1000000918101919091526a0422ca8b0a00a42500000060608201526a084595161401484a00000060808201526a0c685fa11e01ec6f00000060a08201526a108b2a2c2802909400000060c08201526200016c906016906007620003ad565b506040805160e0810182526103e881526105dc60208201526107d09181019190915261138860608201526117706080820152611b5860a0820152611f4060c0820152620001be90601d906007620003e9565b506040805160e081018252691fc3842bd1f071c0000081526969e10de76676d080000060208201526a013da329b6336471800000918101919091526a0422ca8b0a00a42500000060608201526a084595161401484a00000060808201526a0c685fa11e01ec6f00000060a08201526a108b2a2c2802909400000060c08201526200024d906024906007620003ad565b503480156200025b57600080fd5b506040516200426438038062004264833981810160405260208110156200028157600080fd5b5051600080546001600160a01b039092166001600160a01b0319928316179055602c8054821673417d42d57fc3f6b7e8803dcabc4695d433104365179055602d80548216731784e34cf378fe32a588000352e01682c751104a179055426030819055603155602e805433921691909117905562000436565b82600281019282156200032f579160200282015b828111156200032f578251829060ff169055916020019190600101906200030d565b506200033d9291506200041f565b5090565b82600281019282156200032f579160200282015b828111156200032f578251829061ffff1690559160200191906001019062000355565b82601081019282156200032f57916020028201828111156200032f578251829060ff169055916020019190600101906200030d565b82600781019282156200032f579160200282015b828111156200032f57825182906001600160581b0316905591602001919060010190620003c1565b82600781019282156200032f57916020028201828111156200032f578251829061ffff1690559160200191906001019062000355565b5b808211156200033d576000815560010162000420565b613e1e80620004466000396000f3fe608060405234801561001057600080fd5b50600436106102685760003560e01c80636f0110d311610151578063a5b5038c116100c3578063de6b8a2e11610087578063de6b8a2e14610780578063e1604b70146107a6578063e402a071146107ae578063e4b2fb79146107d4578063f6b4dfb4146107f1578063f7689907146107f957610268565b8063a5b5038c1461067e578063b6b55f25146106aa578063b9ef356e146106c7578063c511b345146106ed578063cbecf6b51461070a57610268565b8063742483021161011557806374248302146105c15780637647e0ff146105e457806378e9792514610628578063857f281d1461063057806385a6327c1461065357806385b69f3d1461065b57610268565b80636f0110d31461052257806370abe5fe1461053e57806371a6b69d14610546578063732cef431461057257806373cb4d051461058f57610268565b80633b7994df116101ea5780634eabe4c6116101ae5780634eabe4c6146104585780635b381760146104755780635b7af64d1461049257806360a1cbd71461049a57806364047eca146104ee578063672929d81461051a57610268565b80633b7994df146103f25780633ccfd60b146103fa5780634420e4861461040457806347d673391461042a5780634c809c661461043257610268565b8063278784841161023157806327878484146103b55780632dc4b8d6146103bd5780632f48ab7d146103da5780632fea20f6146103e257806336eb60ee146103ea57610268565b8062a7a56e1461026d57806311a2d130146102875780631959a002146102c05780631ec03d101461034657806326d0fefd1461034e575b600080fd5b610275610816565b60408051918252519081900360200190f35b6102a46004803603602081101561029d57600080fd5b503561083f565b604080516001600160a01b039092168252519081900360200190f35b6102e6600480360360208110156102d657600080fd5b50356001600160a01b0316610866565b604080516001600160a01b03909c168c5260208c019a909a528a8a019890985260608a0196909652608089019490945260a088019290925260c087015260e086015261010085015261012084015261014083015251908190036101600190f35b6102756108c9565b6103746004803603602081101561036457600080fd5b50356001600160a01b0316610a4f565b604080519889526020890197909752878701959095526060870193909352608086019190915260a085015260c084015260e083015251908190036101000190f35b610275610a92565b6102a4600480360360208110156103d357600080fd5b5035610a98565b6102a4610aa5565b610275610ab4565b610275610aba565b610275610ac0565b610402610ac6565b005b6104026004803603602081101561041a57600080fd5b50356001600160a01b0316610cf4565b610275610e42565b6102756004803603602081101561044857600080fd5b50356001600160a01b0316610e48565b6102a46004803603602081101561046e57600080fd5b5035610eb2565b6102a46004803603602081101561048b57600080fd5b5035610ebf565b610275610edc565b6104c6600480360360408110156104b057600080fd5b506001600160a01b038135169060200135610ee2565b6040805194855260208501939093528383019190915215156060830152519081900360800190f35b6102756004803603604081101561050457600080fd5b50803590602001356001600160a01b0316610f28565b610275610f45565b61052a610f4b565b604080519115158252519081900360200190f35b610402610f54565b6104026004803603604081101561055c57600080fd5b506001600160a01b038135169060200135610fa9565b61052a6004803603602081101561058857600080fd5b503561111c565b6102a4600480360360608110156105a557600080fd5b506001600160a01b038135169060208101359060400135611131565b6102a4600480360360408110156105d757600080fd5b5080359060200135611173565b61060a600480360360208110156105fa57600080fd5b50356001600160a01b031661119e565b60408051938452602084019290925282820152519081900360600190f35b6102756112c3565b6102a46004803603604081101561064657600080fd5b50803590602001356112c9565b6102a46112fe565b6102756004803603604081101561067157600080fd5b508035906020013561130d565b6102756004803603604081101561069457600080fd5b506001600160a01b03813516906020013561133b565b610402600480360360208110156106c057600080fd5b5035611366565b610402600480360360208110156106dd57600080fd5b50356001600160a01b0316611436565b6104026004803603602081101561070357600080fd5b5035611468565b6107306004803603602081101561072057600080fd5b50356001600160a01b03166115f1565b604080519a8b5260208b0199909952898901979097526060890195909552608088019390935260a087019190915260c086015260e085015261010084015261012083015251908190036101400190f35b6102756004803603602081101561079657600080fd5b50356001600160a01b0316611645565b610275611660565b610275600480360360208110156107c457600080fd5b50356001600160a01b0316611666565b6102a4600480360360208110156107ea57600080fd5b50356116f6565b6102a4611703565b6102756004803603602081101561080f57600080fd5b5035611712565b600061083a620151806108346030544261172490919063ffffffff16565b9061176d565b905090565b603c818154811061084c57fe5b6000918252602090912001546001600160a01b0316905081565b604060208190526000918252902080546001820154600283015460038401546004850154600586015460068701546007880154600889015460098a0154600a909a01546001600160a01b039099169997989697959694959394929391929091908b565b60008054604080516370a0823160e01b8152306004820152905183926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561091457600080fd5b505afa158015610928573d6000803e3d6000fd5b505050506040513d602081101561093e57600080fd5b505190506a01a784379d99db4200000081101561095f5760aa600155610a47565b6a01a784379d99db42000000811015801561098457506a034f086f3b33b68400000081115b156109935760af600155610a47565b6a034f086f3b33b68400000081101580156109b857506a069e10de76676d0800000081115b156109c75760b4600155610a47565b6a069e10de76676d0800000081101580156109ec57506a0d3c21bcecceda1000000081115b156109fb5760b9600155610a47565b6a0d3c21bcecceda100000008110158015610a2057506a1a784379d99db42000000081115b15610a2f5760be600155610a47565b6a1a784379d99db4200000008110610a475760c86001555b505060015490565b6044602052600090815260409020805460018201546002830154600384015460048501546005860154600687015460079097015495969495939492939192909188565b60345481565b603b818154811061084c57fe5b6000546001600160a01b031681565b603f5490565b60385481565b60395481565b610ace610f54565b600080610ada336117af565b90925090508082600080610aed336117fd565b9092509050610afc83836118b4565b9250610b0884826118b4565b336000908152604360209081526040808320604490925290912060088201549296509091610b3690876118b4565b600883015560006001808401829055600284018290558201819055600480830182905560078381018390556003850183905590840182905560058401829055600684018290558301558154610b8c9086906118b4565b60008054604080516370a0823160e01b8152306004820152905193985091926001600160a01b03909116916370a08231916024808301926020929190829003018186803b158015610bdc57600080fd5b505afa158015610bf0573d6000803e3d6000fd5b505050506040513d6020811015610c0657600080fd5b50519050610c138161190e565b602f546001600160a01b0316331415610c2a578095505b600080845580546040805163a9059cbb60e01b8152336004820152602481018a905290516001600160a01b039092169263a9059cbb926044808401936020939083900390910190829087803b158015610c8257600080fd5b505af1158015610c96573d6000803e3d6000fd5b505050506040513d6020811015610cac57600080fd5b5050604080513381526020810188905281517f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364929181900390910190a1505050505050505050565b6001600160a01b038116600090815260406020819052902060040154151580610d2a5750602e546001600160a01b038281169116145b610d6b576040805162461bcd60e51b815260206004820152600d60248201526c34b73b30b634b2103932b332b960991b604482015290519081900360640190fd5b33600090815260406020819052902080546001600160a01b031615610dc9576040805162461bcd60e51b815260206004820152600f60248201526e1c9959995c9c995c88189bdb991959608a1b604482015290519081900360640190fd5b80546001600160a01b0319166001600160a01b03831617815542600180830191909155603254610df8916118b4565b603255604080513381526001600160a01b038416602082015281517f98ada70a1cb506dc4591465e1ee9be3fd7a2b6c73ecf3b949009718c9a351519929181900390910190a15050565b60315481565b600080610e54836117af565b9150506000610e62846117fd565b6001600160a01b03861660009081526043602052604090206009810154600890910154919350610eaa925090610ea4908490610e9e90876118b4565b906118b4565b90611724565b949350505050565b603d818154811061084c57fe5b602c8160028110610ecc57fe5b01546001600160a01b0316905081565b603a5481565b603e6020528160005260406000208181548110610efb57fe5b60009182526020909120600490910201805460018201546002830154600390930154919450925060ff1684565b604160209081526000928352604080842090915290825290205481565b60335481565b60455460ff1681565b603154610f6490620151806118b4565b421115610fa7576000610f75610816565b9050610f7f6119f8565b610f87611c1a565b610f8f611e0d565b610f9881612000565b610fa1816121e5565b50426031555b565b6802b5e3af16b18800008110158015610fd25750610fd0816802b5e3af16b18800006123b2565b155b611010576040805162461bcd60e51b815260206004820152600a60248201526930b6b7bab73a1032b93960b11b604482015290519081900360640190fd5b600061101b33610e48565b905081811015611068576040805162461bcd60e51b8152602060048201526013602482015272696e73756666696369656e7420696e636f6d6560681b604482015290519081900360640190fd5b3360009081526043602052604090206009015461108590836118b4565b33600090815260436020526040808220600901929092556001600160a01b038516815220600801546110b790836118b4565b6001600160a01b03841660008181526043602090815260409182902060080193909355805133815292830191909152818101849052517f6793236d14c3b3aa080156a78046b313bd7fc5dee636846f4254fa3506c81faa9181900360600190a1505050565b602b6020526000908152604090205460ff1681565b6042602052826000526040600020602052816000526040600020818154811061115657fe5b6000918252602090912001546001600160a01b0316925083915050565b6037602052816000526040600020816003811061118c57fe5b01546001600160a01b03169150829050565b60008060008060008060005b6001600160a01b03881660009081526042602090815260408083208380529091529020548110156112aa576001600160a01b03881660009081526042602090815260408083208380529091528082208054611287929184918690811061120c57fe5b60009182526020808320909101546001600160a01b039081168452838201949094526040928301822060040154938e16825260428152828220828052905281812080548790811061125957fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902060080154906118b4565b905061129385826118b4565b9450838111156112a1578093505b506001016111aa565b506112b58383611724565b919791965091945092505050565b60305481565b603560205281600052604060002081815481106112e257fe5b6000918252602090912001546001600160a01b03169150829050565b602e546001600160a01b031681565b6036602052816000526040600020818154811061132657fe5b90600052602060002001600091509150505481565b6001600160a01b03821660009081526042602090815260408083208484529091529020545b92915050565b60008054604080516323b872dd60e01b81523360048201523060248201526044810185905290516001600160a01b03909216926323b872dd926064808401936020939083900390910190829087803b1580156113c157600080fd5b505af11580156113d5573d6000803e3d6000fd5b505050506040513d60208110156113eb57600080fd5b506113f8905033826123f4565b604080513381526020810183905281517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c929181900390910190a150565b602e546001600160a01b031633141561146557602f80546001600160a01b0319166001600160a01b0383161790555b50565b6802b5e3af16b18800008110158015611491575061148f816802b5e3af16b18800006123b2565b155b6114cf576040805162461bcd60e51b815260206004820152600a60248201526930b6b7bab73a1032b93960b11b604482015290519081900360640190fd5b336000908152604060208190529020600401541561151e576040805162461bcd60e51b81526020600482015260076024820152661858dd1a5d995960ca1b604482015290519081900360640190fd5b600061152933610e48565b905081811015611575576040805162461bcd60e51b81526020600482015260126024820152711a5b9cdd59999a58da595b9d081cdc1b1a5d60721b604482015290519081900360640190fd5b3360009081526043602052604090206009015461159290836118b4565b336000818152604360205260409020600901919091556115b290836123f4565b604080513381526020810184905281517f29e90a65bdaddba77321b34070d4cd09a4d33ccf332d7760c852917757eed3cb929181900390910190a15050565b6043602052806000526040600020600091509050806000015490806001015490806002015490806003015490806004015490806005015490806006015490806007015490806008015490806009015490508a565b6001600160a01b03166000908152603e602052604090205490565b60325481565b6001600160a01b0381166000908152603e602052604081205481905b80156116ef576001600160a01b0384166000908152603e60205260408120805460001984019081106116b057fe5b9060005260206000209060040201905042816002015411156116df5780548310156116da57805492505b6116e5565b506116ef565b5060001901611682565b5092915050565b603f818154811061084c57fe5b602f546001600160a01b031681565b60009081526035602052604090205490565b600061176683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506128bd565b9392505050565b600061176683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612954565b6001600160a01b03811660009081526043602052604081206001810154829190826117e261271061083484610bb86129b9565b905060006117f08383611724565b9550909350505050915091565b6001600160a01b038116600090815260446020908152604080832060439092528220600782015460048301546001840154600284015486959493869361184b939192610e9e928391906118b4565b905061188261187b8360070154610e9e8560060154610e9e876004015488600301546118b490919063ffffffff16565b82906118b4565b9050600061189861271061083484610bb86129b9565b905060006118a68383611724565b965090945050505050915091565b600082820183811015611766576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60075b80156119f457602b60006016600184036007811061192b57fe5b0154815260208101919091526040016000205460ff16156119eb57600061197b612710610834601d600186036007811061196157fe5b01546016600187036007811061197357fe5b0154906129b9565b9050611999816016600185036007811061199157fe5b015490611724565b8310156119b2576045805460ff191660011790556119e5565b60455460ff1680156119d55750602460018303600781106119cf57fe5b01548310155b156119e5576045805460ff191690555b506119f4565b60001901611911565b5050565b6000805b603b54811015611a5d5760406000603b8381548110611a1757fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190206002015460031415611a5557611a528260016118b4565b91505b6001016119fc565b50801561146557603854600090611a74908361176d565b90506000805b603b54811015611bef5760406000603b8381548110611a9557fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190206002015460031415611be757611b088360436000603b8581548110611ada57fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902060030154906118b4565b60436000603b8481548110611b1957fe5b9060005260206000200160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060030181905550611ba18360406000603b8581548110611b7357fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020600a0154906118b4565b60406000603b8481548110611bb257fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020600a0155611be482846118b4565b91505b600101611a7a565b50806038541115611c0f57603854611c079082611724565b603855611c15565b60006038555b505050565b6000805b603c54811015611c7f5760406000603c8381548110611c3957fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190206002015460031415611c7757611c748260016118b4565b91505b600101611c1e565b50801561146557603954600090611c96908361176d565b90506000805b603b54811015611de35760406000603c8381548110611cb757fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190206002015460041415611ddb57611d2a8360436000603c8581548110611cfc57fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902060040154906118b4565b60436000603c8481548110611d3b57fe5b9060005260206000200160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060040181905550611d958360406000603c8581548110611b7357fe5b60406000603c8481548110611da657fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020600a0155611dd882846118b4565b91505b600101611c9c565b50806039541115611e0357603954611dfb9082611724565b603955611c15565b6000603955505050565b6000805b603d54811015611e725760406000603d8381548110611e2c57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190206002015460051415611e6a57611e678260016118b4565b91505b600101611e11565b50801561146557603a54600090611e89908361176d565b90506000805b603d54811015611fd65760406000603d8381548110611eaa57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190206002015460051415611fce57611f1d8360436000603d8581548110611eef57fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902060050154906118b4565b60436000603d8481548110611f2e57fe5b9060005260206000200160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060050181905550611f888360406000603d8581548110611b7357fe5b60406000603d8481548110611f9957fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020600a0155611fcb82846118b4565b91505b600101611e8f565b5080603a541115611ff657603a54611fee9082611724565b603a55611c15565b6000603a55505050565b600019810160009081526035602052604090205480156119f457600a808210156120275750805b600080835b6120368585611724565b811115612087576000198087016000908152603660205260409020805461207c92840190811061206257fe5b9060005260206000200154846118b490919063ffffffff16565b92506000190161202c565b50835b6120948585611724565b8111156121b85760006035600060018903815260200190815260200160002060018303815481106120c157fe5b6000918252602090912001546001600160a01b0316905080156121ae576000612127856108346036600060018d038152602001908152602001600020600187038154811061210b57fe5b90600052602060002001546033546129b990919063ffffffff16565b905061213384826118b4565b6001600160a01b03831660009081526043602052604090206006015490945061215c90826118b4565b6001600160a01b03831660009081526043602090815260408083206006019390935582905220600a015461219090826118b4565b6001600160a01b0383166000908152604060208190529020600a0155505b506000190161208a565b508060335411156121d8576033546121d09082611724565b6033556121de565b60006033555b5050505050565b6121ed613da9565b50604080516060810182526113888152610bb860208201526107d091810191909152612217613da9565b5060408051606081018252686c6b935b8bbd4000008152683635c9adc5dea000006020820152681b1ae4d6e2ef500000918101919091526000805b60038110156123865760001985016000908152603760205260408120826003811061227957fe5b01546001600160a01b03169050801561237d5760006122b56127106108348886600381106122a357fe5b60200201516034549061ffff166129b9565b90508483600381106122c357fe5b602002015168ffffffffffffffffff168111156122f9578483600381106122e657fe5b602002015168ffffffffffffffffff1690505b6001600160a01b03821660009081526043602052604090206007015461231f90826118b4565b6001600160a01b03831660009081526043602090815260408083206007019390935582905220600a015461235390826118b4565b6001600160a01b0383166000908152604060208190529020600a015561237984826118b4565b9350505b50600101612252565b508060345411156123a65760345461239e9082611724565b6034556123ac565b60006034555b50505050565b600061176683836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f0000000000000000815250612a12565b6001600160a01b0380831660009081526040602081905290208054909116612454576040805162461bcd60e51b815260206004820152600e60248201526d1c9959da5cdd195c88199a5c9cdd60921b604482015290519081900360640190fd5b6802b5e3af16b18800008210156124a2576040805162461bcd60e51b815260206004820152600d60248201526c3632b9b9903a3430b71036b4b760991b604482015290519081900360640190fd5b6124b5826802b5e3af16b18800006123b2565b1580156124cb57506802b5e3af16b18800008210155b612506576040805162461bcd60e51b815260206004820152600760248201526636b7b21032b93960c91b604482015290519081900360640190fd5b6003810154158061251b575080600301548210155b61255a576040805162461bcd60e51b815260206004820152600b60248201526a6c657373206265666f726560a81b604482015290519081900360640190fd5b60038101546125bd576003810182905580546001600160a01b03166000908152604060208190529020600601546125929060016118b4565b81546001600160a01b03166000908152604060208190529020600601556125b833612a74565b6125d1565b81816003015410156125d157600381018290555b60048101546126515760006125e4610816565b60008181526035602090815260408083208054600180820183559185528385200180546001600160a01b0319166001600160a01b038b811691909117909155858552603684529184208054918201815584529190922001859055835491925061264f91168483612b7c565b505b61265a82612c9d565b603f80546001810182556000919091527fc03004e3ce0784bf68186394306849f9b7b1200073105cd9aeb554a1802b58fd0180546001600160a01b0319166001600160a01b03851617905560048101546126b490836118b4565b600482015560098101546126c890836118b4565b60098201556126d633612eae565b6001600160a01b0383166000908152603e602052604081205461270990620151809061270390600261176d565b906129b9565b9050623b538081111561271c5750623b53805b600061272f82610e9e426213c6806118b4565b6001600160a01b0386166000908152603e6020908152604080832081516080810183528981524281850190815292810186815260608201868152835460018082018655948852959096209151600490950290910193845591519083015551600282015590516003909101805460ff191691151591909117905590506127b43385612fea565b6127bc610f54565b82546001600160a01b03166000908152604060208190529020600701546127e390856118b4565b83546001600160a01b031660009081526040602081905290206007015561280a3385613270565b612814338561333e565b61281e33856135c3565b60008054604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561286a57600080fd5b505afa15801561287e573d6000803e3d6000fd5b505050506040513d602081101561289457600080fd5b505190506128a1816138c1565b60455460ff16156128b5576128b58161190e565b505050505050565b6000818484111561294c5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156129115781810151838201526020016128f9565b50505050905090810190601f16801561293e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600081836129a35760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156129115781810151838201526020016128f9565b5060008385816129af57fe5b0495945050505050565b6000826129c857506000611360565b828202828482816129d557fe5b04146117665760405162461bcd60e51b8152600401808060200182810382526021815260200180613dc86021913960400191505060405180910390fd5b60008183612a615760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156129115781810151838201526020016128f9565b50828481612a6b57fe5b06949350505050565b6001600160a01b0380821660009081526040602081905281208054909216905b60158110156123ac576001600160a01b03821615612b6f576001600160a01b038216600090815260406020819052902060050154612ad39060016118b4565b6001600160a01b03838116600090815260406020818152818320600501949094556042845280822085835284528120805460018101825590825292902090910180546001600160a01b031916918616919091179055612b3182612eae565b602e546001600160a01b0383811691161415612b4c576123ac565b6001600160a01b0391821660009081526040602081905290205490911690612b74565b6123ac565b600101612a94565b60008181526041602090815260408083206001600160a01b0387168452909152902054612ba990836118b4565b60008281526041602090815260408083206001600160a01b0388168452909152812091909155805b6003811015612c275760008381526037602052604081208260038110612bf357fe5b01546001600160a01b0390811691508616811415612c1e57612c1484613927565b6001925050612c27565b50600101612bd1565b50806123ac57600082815260376020908152604080832060020154604183528184206001600160a01b038981168652935281842054921680845292205410156121de57600083815260376020526040902060020180546001600160a01b0319166001600160a01b0387161790556121de83613927565b6000612cb06127106108348460c86129b9565b600054602c549192506001600160a01b039081169163a9059cbb9116612cd784600261176d565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015612d1d57600080fd5b505af1158015612d31573d6000803e3d6000fd5b505050506040513d6020811015612d4757600080fd5b50506000546001600160a01b031663a9059cbb602c600101546001600160a01b0316612d7484600261176d565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015612dba57600080fd5b505af1158015612dce573d6000803e3d6000fd5b505050506040513d6020811015612de457600080fd5b5060009050612dfa6127106108348560326129b9565b603854909150612e0a90826118b4565b6038556000612e206127106108348660326129b9565b603954909150612e3090826118b4565b6039556000612e466127106108348760326129b9565b603a54909150612e5690826118b4565b603a556000612e6c6127106108348860326129b9565b603354909150612e7c90826118b4565b6033556000612e926127106108348960146129b9565b603454909150612ea290826118b4565b60345550505050505050565b6001600160a01b038116600090815260406020819052812090612ed083613a48565b90508160020154811115611c1557600282018190556003811415612f3a57603b80546001810182556000919091527fbbe3212124853f8b0084a66a2d057c2966e251e132af3691db153ab65f0d1a4d0180546001600160a01b0319166001600160a01b0385161790555b8060041415612f8f57603c80546001810182556000919091527fc6bb06cb7f92603de181bf256cd16846b93b752a170ff24824098b31aa008a7e0180546001600160a01b0319166001600160a01b0385161790555b8060051415611c1557603d80546001810182556000919091527fece66cfdbd22e3f37d348a3d8e19074452862cd65fd4b9a11f0336d1ac6d1dc30180546001600160a01b0385166001600160a01b0319909116179055505050565b6001600160a01b038216600090815260406020819052812090805b6001600160a01b0385166000908152603e60205260409020548110156131f0576001600160a01b0385166000908152603e6020526040812080548390811061304957fe5b906000526020600020906004020190508060020154421180156130715750600381015460ff16155b801561307e575080548510155b156131e75760038101805460ff191660019081179091558154600986015491945010156130bf57805460098501546130b591611724565b60098501556130c7565b600060098501555b6130d5868260000154613ca9565b60006130df6108c9565b9050600061310e612710610834620151806108346213c680612703888a600001546129b990919063ffffffff16565b60455490915060ff16156131615785600a01548660090154111561315d57600061314987600a0154886009015461172490919063ffffffff16565b905080821115613157578091505b50613161565b5060005b82546001600160a01b038916600090815260436020526040902054613185916118b4565b6001600160a01b0389166000908152604360205260409020908155600101546131ae90826118b4565b6001600160a01b038916600090815260436020526040902060010155600a8601546131d990826118b4565b600a870155506131f0915050565b50600101613005565b50806123ac576001600160a01b03841660009081526044602052604090206006810154156121de5760068101548490811061322c575060068101545b600682015461323b9082611724565b6006830155600782015461324f90826118b4565b6007830155600a84015461326390826118b4565b600a850155505050505050565b6001600160a01b0380831660009081526040602081905281208054909216905b60158110156121de576001600160a01b03821615613331576001600160a01b0382166000908152604060208190529020600801546132ce90856118b4565b6001600160a01b0383166000908152604060208190529020600801556132f382612eae565b602e546001600160a01b038381169116141561330e576121de565b6001600160a01b0391821660009081526040602081905290205490911690613336565b6121de565b600101613290565b6001600160a01b0380831660009081526040602081905281208054909216905b60158110156121de576001600160a01b0382161561333157602e5484906001600160a01b038481169116146133a857600061339884611666565b9050858110156133a6578091505b505b6001600160a01b038316600090815260446020908152604080832060439092528220909184613441576133e3612710610834866102586129b9565b60028301549091506133f590826118b4565b60028301556001600160a01b0386166000908152604060208190529020600a015461342090826118b4565b6001600160a01b0387166000908152604060208190529020600a015561357a565b6000851180156134515750600385105b156134b3576001600160a01b038616600090815260406020819052902060020154600110156134ae5761349c6127106108346002600189036002811061349357fe5b015487906129b9565b83549091506134ab90826118b4565b83555b61357a565b6001600160a01b03861660009081526040602081905290206002908101541180156134de5750600585105b15613518576134fc6127106108346004600389036002811061349357fe5b600384015490915061350e90826118b4565b600384015561357a565b6001600160a01b0386166000908152604060208190529020600201546003108015613544575060058510155b1561357a576135626127106108346006600589036010811061349357fe5b600684015490915061357490826118b4565b60068401555b602e546001600160a01b038781169116141561359957505050506121de565b5050506001600160a01b03928316600090815260406020819052902054909216915060010161335e565b6001600160a01b0380831660009081526040602081905281208054909216905b60158110156121de576001600160a01b0382161561333157602e5484906001600160a01b0384811691161461362d57600061361d84611666565b90508581101561362b578091505b505b6001600160a01b038316600090815260446020526040902082158015906136545750600383105b801561367b57506001600160a01b0384166000908152604060208190529020600201546001105b15613721578054156137215760006136ab612710610834600260018803600281106136a257fe5b015486906129b9565b82549091508111156136bb575080545b81546136c79082611724565b825560018201546136d890826118b4565b60018301556001600160a01b0385166000908152604060208190529020600a015461370390826118b4565b6001600160a01b0386166000908152604060208190529020600a0155505b600383101580156137325750600583105b801561375957506001600160a01b0384166000908152604060208190529020600290810154115b1561380457600381015415613804576000613783612710610834600460038803600281106136a257fe5b90508160030154811115613798575060038101545b60038201546137a79082611724565b600383015560048201546137bb90826118b4565b60048301556001600160a01b0385166000908152604060208190529020600a01546137e690826118b4565b6001600160a01b0386166000908152604060208190529020600a0155505b6005831015801561383057506001600160a01b0384166000908152604060208190529020600201546003105b156138995760058101541561389957600061385a612710610834600660058803601081106136a257fe5b9050816005015481111561386f575060058101545b600582015461387e9082611724565b6005830155600682015461389290826118b4565b6006830155505b50506001600160a01b03918216600090815260406020819052902054909116906001016135e3565b60075b80156119f457601660018203600781106138da57fe5b0154821061391e576001602b6000601660018503600781106138f857fe5b015481526020810191909152604001600020805460ff19169115159190911790556119f4565b600019016138c4565b60035b60018111156119f457600082815260376020526040812060001983016003811061395057fe5b015460008481526037602052604081206001600160a01b0390921692509060011984016003811061397d57fe5b015460008581526041602090815260408083206001600160a01b03878116855281845282852054951680855292529091205490925080821115613a3757600086815260376020526040902083906000198701600381106139d957fe5b0180546001600160a01b0319166001600160a01b039290921691909117905560008681526037602052604090208490600119870160038110613a1757fe5b0180546001600160a01b0319166001600160a01b03929092169190911790555b5050600019909201915061392a9050565b6001600160a01b038116600090815260406020819052812060048101546006820154600783015484681b1ae4d6e2ef5000008410613c5757600080613a8c8961119e565b509150915068878678326eac9000008610158015613aab575060148510155b8015613ac1575069021e19e0c9bab24000008410155b8015613ad3575061012c876005015410155b8015613ae957506910f0cf064dd5920000008210155b8015613aff57506910f0cf064dd5920000008110155b15613b0d5760059250613c50565b686c6b935b8bbd4000008610158015613b275750600a8510155b8015613b3d575069010f0cf064dd592000008410155b8015613b4e57506096876005015410155b8015613b645750690878678326eac90000008210155b8015613b7a5750690878678326eac90000008110155b15613b885760049250613c50565b681b1ae4d6e2ef5000008610158015613ba657506005876005015410155b8015613bbb5750683635c9adc5dea000008410155b8015613bcc57506028876005015410155b8015613be2575069010f0cf064dd592000008210155b8015613bf8575069010f0cf064dd592000008110155b15613c065760039250613c50565b680ad78ebc5ac62000008610158015613c20575060038510155b8015613c355750681b1ae4d6e2ef5000008410155b15613c435760029250613c50565b60018510613c5057600192505b5050613c9f565b680ad78ebc5ac62000008410158015613c71575060038310155b8015613c865750681b1ae4d6e2ef5000008210155b15613c9357506002613c9f565b60328410613c9f575060015b9695505050505050565b6001600160a01b0380831660009081526040602081905281208054909216905b60158110156121de576001600160a01b03821615613331576001600160a01b038216600090815260406020819052902060080154841015613d4b576001600160a01b038216600090815260406020819052902060080154613d2a9085611724565b6001600160a01b038316600090815260406020819052902060080155613d68565b6001600160a01b0382166000908152604060208190528120600801555b602e546001600160a01b0383811691161415613d83576121de565b6001600160a01b0391821660009081526040602081905290205490911690600101613cc9565b6040518060600160405280600390602082028036833750919291505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220db826c09225ebfd30f9aed0e866c6ac2a74a7ede32b6a2c3773dc32731d1418d64736f6c634300060c00330000000000000000000000008f3cf7ad23cd3cadbd9735aff958023239c6a063
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000008f3cf7ad23cd3cadbd9735aff958023239c6a063
-----Decoded View---------------
Arg [0] : _daiAddr (address): 0x8f3cf7ad23cd3cadbd9735aff958023239c6a063
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000008f3cf7ad23cd3cadbd9735aff958023239c6a063
Deployed ByteCode Sourcemap
7526:33479:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24593:122;;;:::i;:::-;;;;;;;;;;;;;;;;9560:27;;;;;;;;;;;;;;;;-1:-1:-1;9560:27:0;;:::i;:::-;;;;-1:-1:-1;;;;;9560:27:0;;;;;;;;;;;;;;10211:42;;;;;;;;;;;;;;;;-1:-1:-1;10211:42:0;-1:-1:-1;;;;;10211:42:0;;:::i;:::-;;;;-1:-1:-1;;;;;10211:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21035:774;;;:::i;11058:58::-;;;;;;;;;;;;;;;;-1:-1:-1;11058:58:0;-1:-1:-1;;;;;11058:58:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9231:22;;;:::i;9526:27::-;;;;;;;;;;;;;;;;-1:-1:-1;9526:27:0;;:::i;7587:18::-;;;:::i;25136:105::-;;;:::i;9433:24::-;;;:::i;9464:::-;;;:::i;39626:1376::-;;;:::i;:::-;;11821:446;;;;;;;;;;;;;;;;-1:-1:-1;11821:446:0;-1:-1:-1;;;;;11821:446:0;;:::i;9134:29::-;;;:::i;28236:311::-;;;;;;;;;;;;;;;;-1:-1:-1;28236:311:0;-1:-1:-1;;;;;28236:311:0;;:::i;9594:27::-;;;;;;;;;;;;;;;;-1:-1:-1;9594:27:0;;:::i;8995:30::-;;;;;;;;;;;;;;;;-1:-1:-1;8995:30:0;;:::i;9495:24::-;;;:::i;9766:49::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;9766:49:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10260:75;;;;;;;;;;;;;;;;-1:-1:-1;10260:75:0;;;;;;-1:-1:-1;;;;;10260:75:0;;:::i;9201:23::-;;;:::i;11129:26::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;24181:406;;;:::i;12996:517::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;12996:517:0;;;;;;;;:::i;8946:39::-;;;;;;;;;;;;;;;;-1:-1:-1;8946:39:0;;:::i;10343:66::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;10343:66:0;;;;;;;;;;;;;:::i;9377:47::-;;;;;;;;;;;;;;;;-1:-1:-1;9377:47:0;;;;;;;:::i;19571:638::-;;;;;;;;;;;;;;;;-1:-1:-1;19571:638:0;-1:-1:-1;;;;;19571:638:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;9103:24;;;:::i;9262:47::-;;;;;;;;;;;;;;;;-1:-1:-1;9262:47:0;;;;;;;:::i;9032:27::-;;;:::i;9316:54::-;;;;;;;;;;;;;;;;-1:-1:-1;9316:54:0;;;;;;;:::i;24853:147::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;24853:147:0;;;;;;;;:::i;12276:199::-;;;;;;;;;;;;;;;;-1:-1:-1;12276:199:0;;:::i;32857:125::-;;;;;;;;;;;;;;;;-1:-1:-1;32857:125:0;-1:-1:-1;;;;;32857:125:0;;:::i;12481:512::-;;;;;;;;;;;;;;;;-1:-1:-1;12481:512:0;;:::i;11005:46::-;;;;;;;;;;;;;;;;-1:-1:-1;11005:46:0;-1:-1:-1;;;;;11005:46:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25008:120;;;;;;;;;;;;;;;;-1:-1:-1;25008:120:0;-1:-1:-1;;;;;25008:120:0;;:::i;9170:24::-;;;:::i;32349:502::-;;;;;;;;;;;;;;;;-1:-1:-1;32349:502:0;-1:-1:-1;;;;;32349:502:0;;:::i;9824:27::-;;;;;;;;;;;;;;;;-1:-1:-1;9824:27:0;;:::i;9066:30::-;;;:::i;24723:122::-;;;;;;;;;;;;;;;;-1:-1:-1;24723:122:0;;:::i;24593:::-;24634:7;24661:46;7909:6;24662:30;24682:9;;24662:15;:19;;:30;;;;:::i;:::-;24661:36;;:46::i;:::-;24654:53;;24593:122;:::o;9560:27::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9560:27:0;;-1:-1:-1;9560:27:0;:::o;10211:42::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10211:42:0;;;;;;;;;;;;;;;;;;;;;;:::o;21035:774::-;21082:7;21121:4;;:29;;;-1:-1:-1;;;21121:29:0;;21144:4;21121:29;;;;;;21082:7;;-1:-1:-1;;;;;21121:4:0;;:14;;:29;;;;;;;;;;;;;;:4;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21121:29:0;;-1:-1:-1;21168:10:0;21164:14;;21161:606;;;21221:3;21203:17;:21;21161:606;;;21259:10;21254:3;:15;;:33;;;;;21277:10;21273:3;:14;21254:33;21251:516;;;21330:3;21312:17;:21;21251:516;;;21368:10;21363:3;:15;;:33;;;;;21386:10;21382:3;:14;21363:33;21360:407;;;21439:3;21421:17;:21;21360:407;;;21477:10;21472:3;:15;;:34;;;;;21495:11;21491:3;:15;21472:34;21469:298;;;21549:3;21531:17;:21;21469:298;;;21587:11;21582:3;:16;;:35;;;;;21606:11;21602:3;:15;21582:35;21579:188;;;21660:3;21642:17;:21;21579:188;;;21698:11;21693:3;:16;21690:77;;21752:3;21734:17;:21;21690:77;-1:-1:-1;;21784:17:0;;21035:774;:::o;11058:58::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9231:22::-;;;;:::o;9526:27::-;;;;;;;;;;7587:18;;;-1:-1:-1;;;;;7587:18:0;;:::o;25136:105::-;25216:10;:17;25136:105;:::o;9433:24::-;;;;:::o;9464:::-;;;;:::o;39626:1376::-;39666:23;:21;:23::i;:::-;39701:20;39723:19;39746:32;39767:10;39746:20;:32::i;:::-;39700:78;;-1:-1:-1;39700:78:0;-1:-1:-1;39700:78:0;;39789:16;;39926:33;39948:10;39926:21;:33::i;:::-;39878:81;;-1:-1:-1;39878:81:0;-1:-1:-1;39985:31:0;:12;39878:81;39985:16;:31::i;:::-;39970:46;-1:-1:-1;40038:26:0;:8;40051:12;40038;:26::i;:::-;40121:10;40077:30;40110:22;;;:10;:22;;;;;;;;40182:16;:28;;;;;;40241:17;;;;40027:37;;-1:-1:-1;40110:22:0;;40241:31;;40027:37;40241:21;:31::i;:::-;40221:17;;;:51;40307:1;40285:19;;;;:23;;;40319:19;;;:23;;;40353:26;;:30;;;40394:26;;;;:30;;;-1:-1:-1;40435:26:0;;;:30;;;40486:17;;;:21;;;40518:17;;;:21;;;40550:17;;;:21;;;-1:-1:-1;40582:16:0;;:20;;;40613:15;;:19;40685:20;;40668:38;;:12;;:16;:38::i;:::-;40717:11;40731:4;;:29;;;-1:-1:-1;;;40731:29:0;;40754:4;40731:29;;;;;;40653:53;;-1:-1:-1;40717:11:0;;-1:-1:-1;;;;;40731:4:0;;;;:14;;:29;;;;;;;;;;;;;;:4;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;40731:29:0;;-1:-1:-1;40771:21:0;40731:29;40771:16;:21::i;:::-;40818:15;;-1:-1:-1;;;;;40818:15:0;40806:10;:27;40803:48;;;40848:3;40835:16;;40803:48;40885:1;40862:24;;;40905:4;;:39;;;-1:-1:-1;;;40905:39:0;;40919:10;40905:39;;;;;;;;;;;;-1:-1:-1;;;;;40905:4:0;;;;:13;;:39;;;;;;;;;;;;;;;;;:4;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;40960:34:0;;;40969:10;40960:34;;40905:39;40960:34;;;;;;;;;;;;;;;;;;39626:1376;;;;;;;;;:::o;11821:446::-;-1:-1:-1;;;;;11886:19:0;;11921:1;11886:19;;;:8;:19;;;;;;:32;;;:36;;;:65;;-1:-1:-1;11939:12:0;;-1:-1:-1;;;;;11926:25:0;;;11939:12;;11926:25;11886:65;11878:91;;;;;-1:-1:-1;;;11878:91:0;;;;;;;;;;;;-1:-1:-1;;;11878:91:0;;;;;;;;;;;;;;;12013:10;11980:21;12004:20;;;:8;:20;;;;;;12043:13;;-1:-1:-1;;;;;12043:13:0;:27;12035:55;;;;;-1:-1:-1;;;12035:55:0;;;;;;;;;;;;-1:-1:-1;;;12035:55:0;;;;;;;;;;;;;;;12101:25;;-1:-1:-1;;;;;;12101:25:0;-1:-1:-1;;;;;12101:25:0;;;;;12150:15;-1:-1:-1;12137:10:0;;;:28;;;;12196:9;;:16;;:13;:16::i;:::-;12184:9;:28;12228:31;;;12237:10;12228:31;;-1:-1:-1;;;;;12228:31:0;;;;;;;;;;;;;;;;;;;11821:446;;:::o;9134:29::-;;;;:::o;28236:311::-;28292:7;28314:19;28337:27;28358:5;28337:20;:27::i;:::-;28311:53;;;28378:20;28402:28;28424:5;28402:21;:28::i;:::-;-1:-1:-1;;;;;28511:17:0;;;;;;:10;:17;;;;;:27;;;;28448:23;;;;;28375:55;;-1:-1:-1;28448:91:0;;-1:-1:-1;28511:27:0;28448:58;;28375:55;;28448:40;;28476:11;28448:27;:40::i;:::-;:44;;:58::i;:::-;:62;;:91::i;:::-;28441:98;28236:311;-1:-1:-1;;;;28236:311:0:o;9594:27::-;;;;;;;;;;8995:30;;;;;;;;;;;;-1:-1:-1;;;;;8995:30:0;;-1:-1:-1;8995:30:0;:::o;9495:24::-;;;;:::o;9766:49::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9766:49:0;-1:-1:-1;9766:49:0;;;:::o;10260:75::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;9201:23::-;;;;:::o;11129:26::-;;;;;;:::o;24181:406::-;24253:14;;:28;;7909:6;24253:18;:28::i;:::-;24235:15;:46;24232:348;;;24300:14;24317:11;:9;:11::i;:::-;24300:28;;24344:22;:20;:22::i;:::-;24381;:20;:22::i;:::-;24417;:20;:22::i;:::-;24453:27;24473:6;24453:19;:27::i;:::-;24495:26;24514:6;24495:18;:26::i;:::-;-1:-1:-1;24553:15:0;24536:14;:32;24232:348;24181:406::o;12996:517::-;7751:5;13085:7;:21;;:53;;;;-1:-1:-1;13110:23:0;:7;7751:5;13110:11;:23::i;:::-;:28;13085:53;13077:76;;;;;-1:-1:-1;;;13077:76:0;;;;;;;;;;;;-1:-1:-1;;;13077:76:0;;;;;;;;;;;;;;;13164:17;13184:23;13196:10;13184:11;:23::i;:::-;13164:43;;13239:7;13226:9;:20;;13218:52;;;;;-1:-1:-1;;;13218:52:0;;;;;;;;;;;;-1:-1:-1;;;13218:52:0;;;;;;;;;;;;;;;13327:10;13316:22;;;;:10;:22;;;;;:32;;;:45;;13353:7;13316:36;:45::i;:::-;13292:10;13281:22;;;;:10;:22;;;;;;:32;;:80;;;;-1:-1:-1;;;;;13402:21:0;;;;;:27;;;:40;;13434:7;13402:31;:40::i;:::-;-1:-1:-1;;;;;13372:21:0;;;;;;:10;:21;;;;;;;;;:27;;:70;;;;13458:47;;13474:10;13458:47;;;;;;;;;;;;;;;;;;;;;;;;;12996:517;;;:::o;8946:39::-;;;;;;;;;;;;;;;:::o;10343:66::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10343:66:0;;-1:-1:-1;10343:66:0;;-1:-1:-1;;10343:66:0:o;9377:47::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9377:47:0;;-1:-1:-1;9377:47:0;;-1:-1:-1;9377:47:0:o;19571:638::-;19630:7;19639;19648;19667:17;19695:15;19721:17;19753:9;19749:360;-1:-1:-1;;;;;19772:16:0;;;;;;:9;:16;;;;;;;;:19;;;;;;;;:26;19768:30;;19749:360;;;-1:-1:-1;;;;;19906:16:0;;19819:21;19906:16;;;:9;:16;;;;19897:8;19906:16;;;:19;;;;;;;;;:22;;19843:100;;19897:8;19819:21;;19926:1;;19906:22;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19906:22:0;;;19897:32;;;;;;;;;;;;;;;:45;;;19852:16;;;;;:9;:16;;;;;:19;;;;;;;;:22;;19872:1;;19852:22;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19852:22:0;19843:32;;;;;;;;;;;;:49;;;;:53;:100::i;:::-;19819:124;-1:-1:-1;19970:28:0;:9;19819:124;19970:13;:28::i;:::-;19958:40;;20032:7;20016:13;:23;20013:85;;;20069:13;20059:23;;20013:85;-1:-1:-1;19800:3:0;;19749:360;;;-1:-1:-1;20131:22:0;:9;20145:7;20131:13;:22::i;:::-;20171:7;;;;-1:-1:-1;20191:9:0;;-1:-1:-1;19571:638:0;-1:-1:-1;;;19571:638:0:o;9103:24::-;;;;:::o;9262:47::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9262:47:0;;-1:-1:-1;9262:47:0;;-1:-1:-1;9262:47:0:o;9032:27::-;;;-1:-1:-1;;;;;9032:27:0;;:::o;9316:54::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;24853:147::-;-1:-1:-1;;;;;24961:16:0;;24934:7;24961:16;;;:9;:16;;;;;;;;:24;;;;;;;;:31;24853:147;;;;;:::o;12276:199::-;12330:4;;;:53;;;-1:-1:-1;;;12330:53:0;;12348:10;12330:53;;;;12368:4;12330:53;;;;;;;;;;;;-1:-1:-1;;;;;12330:4:0;;;;:17;;:53;;;;;;;;;;;;;;;;;:4;:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12394:29:0;;-1:-1:-1;12403:10:0;12415:7;12394:8;:29::i;:::-;12439:28;;;12447:10;12439:28;;;;;;;;;;;;;;;;;;;;;12276:199;:::o;32857:125::-;32927:12;;-1:-1:-1;;;;;32927:12:0;32915:10;:24;32912:59;;;32950:15;:21;;-1:-1:-1;;;;;;32950:21:0;-1:-1:-1;;;;;32950:21:0;;;;;32912:59;32857:125;:::o;12481:512::-;7751:5;12550:7;:21;;:53;;;;-1:-1:-1;12575:23:0;:7;7751:5;12575:11;:23::i;:::-;:28;12550:53;12542:76;;;;;-1:-1:-1;;;12542:76:0;;;;;;;;;;;;-1:-1:-1;;;12542:76:0;;;;;;;;;;;;;;;12646:10;12637:20;;;;:8;:20;;;;;;:33;;;:38;12629:58;;;;;-1:-1:-1;;;12629:58:0;;;;;;;;;;;;-1:-1:-1;;;12629:58:0;;;;;;;;;;;;;;;12698:17;12718:23;12730:10;12718:11;:23::i;:::-;12698:43;;12773:7;12760:9;:20;;12752:51;;;;;-1:-1:-1;;;12752:51:0;;;;;;;;;;;;-1:-1:-1;;;12752:51:0;;;;;;;;;;;;;;;12860:10;12849:22;;;;:10;:22;;;;;:32;;;:45;;12886:7;12849:36;:45::i;:::-;12825:10;12814:22;;;;:10;:22;;;;;:32;;:80;;;;12905:29;;12926:7;12905:8;:29::i;:::-;12950:35;;;12965:10;12950:35;;;;;;;;;;;;;;;;;;;;;12481:512;;:::o;11005:46::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;25008:120::-;-1:-1:-1;;;;;25096:17:0;25069:7;25096:17;;;:10;:17;;;;;:24;;25008:120::o;9170:24::-;;;;:::o;32349:502::-;-1:-1:-1;;;;;32474:17:0;;32408:7;32474:17;;;:10;:17;;;;;:24;32408:7;;32458:357;32500:5;;32458:357;;-1:-1:-1;;;;;32552:17:0;;32526:23;32552:17;;;:10;:17;;;;;:24;;-1:-1:-1;;32570:5:0;;;32552:24;;;;;;;;;;;;;;;;32526:50;;32611:15;32594:5;:14;;;:32;32591:213;;;32649:12;;:26;-1:-1:-1;32646:99:0;;;32713:12;;;-1:-1:-1;32646:99:0;32591:213;;;32783:5;;;32591:213;-1:-1:-1;;;32507:3:0;32458:357;;;-1:-1:-1;32832:11:0;32349:502;-1:-1:-1;;32349:502:0:o;9824:27::-;;;;;;;;;;9066:30;;;-1:-1:-1;;;;;9066:30:0;;:::o;24723:122::-;24785:7;24812:18;;;:12;:18;;;;;:25;;24723:122::o;790:136::-;848:7;875:43;879:1;882;875:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;868:50;790:136;-1:-1:-1;;;790:136:0:o;2627:132::-;2685:7;2712:39;2716:1;2719;2712:39;;;;;;;;;;;;;;;;;:3;:39::i;28553:392::-;-1:-1:-1;;;;;28681:17:0;;28619:7;28681:17;;;:10;:17;;;;;28732:19;;;;28619:7;;28681:17;28619:7;28781:55;7651:5;28781:38;28732:19;7863:4;28781:16;:38::i;:55::-;28762:74;-1:-1:-1;28847:20:0;28870:26;:12;28762:74;28870:16;:26::i;:::-;28847:49;-1:-1:-1;28928:8:0;;-1:-1:-1;;;;28553:392:0;;;:::o;28953:689::-;-1:-1:-1;;;;;29088:23:0;;29020:7;29088:23;;;:16;:23;;;;;;;;29155:10;:17;;;;;29294:26;;;;29262;;;;29230;;;;29206:19;;;;29020:7;;29088:23;29155:17;29020:7;;29206:115;;29294:26;;29206:83;;;;:19;:23;:51::i;:115::-;29183:138;;29347:101;29364:83;29431:11;:15;;;29364:62;29409:11;:16;;;29364:40;29386:11;:17;;;29364:11;:17;;;:21;;:40;;;;:::i;:83::-;29347:12;;:16;:101::i;:::-;29332:116;-1:-1:-1;29459:16:0;29478:55;7651:5;29478:38;29332:116;7863:4;29478:16;:38::i;:55::-;29459:74;-1:-1:-1;29544:20:0;29567:26;:12;29459:74;29567:16;:26::i;:::-;29544:49;-1:-1:-1;29625:8:0;;-1:-1:-1;;;;;28953:689:0;;;:::o;326:181::-;384:7;416:5;;;440:6;;;;432:46;;;;;-1:-1:-1;;;432:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;33241:533;33316:14;33300:467;33332:5;;33300:467;;33361:9;:25;33371:7;33383:1;33379;:5;33371:14;;;;;;;;;33361:25;;;;;;;;;;;-1:-1:-1;33361:25:0;;;;33358:398;;;33406:15;33424:55;7651:5;33424:38;33443:11;33459:1;33455;:5;33443:18;;;;;;;;;33424:7;33436:1;33432;:5;33424:14;;;;;;;;;;:18;:38::i;:55::-;33406:73;;33508:27;33527:7;33508;33520:1;33516;:5;33508:14;;;;;;;;;;:18;:27::i;:::-;33501:4;:34;33498:219;;;33559:14;:21;;-1:-1:-1;;33559:21:0;33576:4;33559:21;;;33498:219;;;33608:14;;;;:43;;;;;33634:10;33649:1;33645;:5;33634:17;;;;;;;;;33626:4;:25;;33608:43;33605:112;;;33675:14;:22;;-1:-1:-1;;33675:22:0;;;33605:112;33735:5;;;33358:398;-1:-1:-1;;33339:3:0;33300:467;;;;33241:533;:::o;25247:991::-;25298:20;;25329:179;25352:10;:17;25348:21;;25329:179;;;25393:8;:23;25402:10;25413:1;25402:13;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25402:13:0;25393:23;;;;;;;;;;;;:29;;;25426:1;25393:34;25390:107;;;25462:19;:12;25479:1;25462:16;:19::i;:::-;25447:34;;25390:107;25371:3;;25329:179;;;-1:-1:-1;25521:16:0;;25518:713;;25570:9;;25553:14;;25570:27;;25584:12;25570:13;:27::i;:::-;25553:44;-1:-1:-1;25612:19:0;;25646:408;25669:10;:17;25665:21;;25646:408;;;25714:8;:23;25723:10;25734:1;25723:13;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25723:13:0;25714:23;;;;;;;;;;;;:29;;;25747:1;25714:34;25711:328;;;25806:43;25842:6;25806:10;:25;25817:10;25828:1;25817:13;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25817:13:0;25806:25;;;;;;;;;;;;:31;;;;:35;:43::i;:::-;25772:10;:25;25783:10;25794:1;25783:13;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25783:13:0;-1:-1:-1;;;;;25772:25:0;-1:-1:-1;;;;;25772:25:0;;;;;;;;;;;;:31;;:77;;;;25911:48;25952:6;25911:8;:23;25920:10;25931:1;25920:13;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25920:13:0;25911:23;;;;;;;;;;;;:36;;;;:40;:48::i;:::-;25872:8;:23;25881:10;25892:1;25881:13;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25881:13:0;25872:23;;;;;;;;;;;;:36;;:87;25996:23;:11;26012:6;25996:15;:23::i;:::-;25982:37;;25711:328;25688:3;;25646:408;;;;26083:11;26071:9;;:23;26068:152;;;26126:9;;:26;;26140:11;26126:13;:26::i;:::-;26114:9;:38;26068:152;;;26203:1;26191:9;:13;26068:152;25518:713;;25247:991;:::o;26241:::-;26292:20;;26323:179;26346:10;:17;26342:21;;26323:179;;;26387:8;:23;26396:10;26407:1;26396:13;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;26396:13:0;26387:23;;;;;;;;;;;;:29;;;26420:1;26387:34;26384:107;;;26456:19;:12;26473:1;26456:16;:19::i;:::-;26441:34;;26384:107;26365:3;;26323:179;;;-1:-1:-1;26515:16:0;;26512:713;;26564:9;;26547:14;;26564:27;;26578:12;26564:13;:27::i;:::-;26547:44;-1:-1:-1;26606:19:0;;26640:408;26663:10;:17;26659:21;;26640:408;;;26708:8;:23;26717:10;26728:1;26717:13;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;26717:13:0;26708:23;;;;;;;;;;;;:29;;;26741:1;26708:34;26705:328;;;26800:43;26836:6;26800:10;:25;26811:10;26822:1;26811:13;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;26811:13:0;26800:25;;;;;;;;;;;;:31;;;;:35;:43::i;:::-;26766:10;:25;26777:10;26788:1;26777:13;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;26777:13:0;-1:-1:-1;;;;;26766:25:0;-1:-1:-1;;;;;26766:25:0;;;;;;;;;;;;:31;;:77;;;;26905:48;26946:6;26905:8;:23;26914:10;26925:1;26914:13;;;;;;;26905:48;26866:8;:23;26875:10;26886:1;26875:13;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;26875:13:0;26866:23;;;;;;;;;;;;:36;;:87;26990:23;:11;27006:6;26990:15;:23::i;:::-;26976:37;;26705:328;26682:3;;26640:408;;;;27077:11;27065:9;;:23;27062:152;;;27120:9;;:26;;27134:11;27120:13;:26::i;:::-;27108:9;:38;27062:152;;;27197:1;27185:9;:13;26512:713;;26241:991;:::o;27238:986::-;27289:19;;27319:177;27342:10;:17;27338:21;;27319:177;;;27383:8;:23;27392:10;27403:1;27392:13;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27392:13:0;27383:23;;;;;;;;;;;;:29;;;27416:1;27383:34;27380:105;;;27451:18;:11;27467:1;27451:15;:18::i;:::-;27437:32;;27380:105;27361:3;;27319:177;;;-1:-1:-1;27509:15:0;;27506:711;;27557:9;;27540:14;;27557:26;;27571:11;27557:13;:26::i;:::-;27540:43;-1:-1:-1;27598:19:0;;27632:408;27655:10;:17;27651:21;;27632:408;;;27700:8;:23;27709:10;27720:1;27709:13;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27709:13:0;27700:23;;;;;;;;;;;;:29;;;27733:1;27700:34;27697:328;;;27792:43;27828:6;27792:10;:25;27803:10;27814:1;27803:13;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27803:13:0;27792:25;;;;;;;;;;;;:31;;;;:35;:43::i;:::-;27758:10;:25;27769:10;27780:1;27769:13;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27769:13:0;-1:-1:-1;;;;;27758:25:0;-1:-1:-1;;;;;27758:25:0;;;;;;;;;;;;:31;;:77;;;;27897:48;27938:6;27897:8;:23;27906:10;27917:1;27906:13;;;;;;;27897:48;27858:8;:23;27867:10;27878:1;27867:13;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27867:13:0;27858:23;;;;;;;;;;;;:36;;:87;27982:23;:11;27998:6;27982:15;:23::i;:::-;27968:37;;27697:328;27674:3;;27632:408;;;;28069:11;28057:9;;:23;28054:152;;;28112:9;;:26;;28126:11;28112:13;:26::i;:::-;28100:9;:38;28054:152;;;28189:1;28177:9;:13;27506:711;;27238:986;:::o;34490:1340::-;-1:-1:-1;;34594:11:0;;34555:23;34581:25;;;:12;:25;;;;;:32;34627:19;;34624:1199;;34683:2;34703:20;;;34700:87;;;-1:-1:-1;34756:15:0;34700:87;34801:20;;34886:15;34870:181;34907:31;:15;34927:10;34907:19;:31::i;:::-;34903:1;:35;34870:181;;;-1:-1:-1;;35015:11:0;;;34995:32;;;;:19;:32;;;;;:39;;34978:57;;35028:5;;;34995:39;;;;;;;;;;;;;;34978:12;:16;;:57;;;;:::i;:::-;34963:72;-1:-1:-1;;;34940:3:0;34870:181;;;-1:-1:-1;35083:15:0;35067:583;35104:31;:15;35124:10;35104:19;:31::i;:::-;35100:1;:35;35067:583;;;35160:16;35179:12;:25;35202:1;35192:7;:11;35179:25;;;;;;;;;;;35209:1;35205;:5;35179:32;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;35179:32:0;;-1:-1:-1;35233:22:0;;35230:405;;35279:14;35296:71;35354:12;35296:53;35309:19;:32;35339:1;35329:7;:11;35309:32;;;;;;;;;;;35346:1;35342;:5;35309:39;;;;;;;;;;;;;;;;35296:8;;:12;;:53;;;;:::i;:71::-;35279:88;-1:-1:-1;35404:23:0;:11;35279:88;35404:15;:23::i;:::-;-1:-1:-1;;;;;35478:20:0;;;;;;:10;:20;;;;;:25;;;35390:37;;-1:-1:-1;35478:37:0;;35508:6;35478:29;:37::i;:::-;-1:-1:-1;;;;;35450:20:0;;;;;;:10;:20;;;;;;;;:25;;:65;;;;35572:18;;;;:31;;;:43;;35608:6;35572:35;:43::i;:::-;-1:-1:-1;;;;;35538:18:0;;;;;;:8;:18;;;;;;:31;;:77;-1:-1:-1;35230:405:0;-1:-1:-1;;;35137:3:0;35067:583;;;;35678:11;35667:8;;:22;35664:148;;;35720:8;;:25;;35733:11;35720:12;:25::i;:::-;35709:8;:36;35664:148;;;35795:1;35784:8;:12;35664:148;34624:1199;;;34490:1340;;:::o;35833:932::-;35897:22;;:::i;:::-;-1:-1:-1;35897:43:0;;;;;;;;35923:4;35897:43;;35929:4;35897:43;;;;35935:4;35897:43;;;;;;;35951:26;;:::i;:::-;-1:-1:-1;35951:54:0;;;;;;;;35981:7;35951:54;;35990:7;35951:54;;;;35998:6;35951:54;;;;;;;-1:-1:-1;;36046:574:0;36069:1;36065;:5;36046:574;;;-1:-1:-1;;36122:11:0;;36091:16;36110:24;;;:11;:24;;;;;36135:1;36110:27;;;;;;;;;-1:-1:-1;;;;;36110:27:0;;-1:-1:-1;36155:22:0;;36152:457;;36197:14;36214:38;7651:5;36214:21;36226:5;36232:1;36226:8;;;;;;;;;;;36214:7;;;:21;;:11;:21::i;:38::-;36197:55;;36283:9;36293:1;36283:12;;;;;;;;;;;36274:21;;:6;:21;36271:89;;;36328:9;36338:1;36328:12;;;;;;;;;;;36319:21;;;;36271:89;-1:-1:-1;;;;;36405:20:0;;;;;;:10;:20;;;;;:24;;;:36;;36434:6;36405:28;:36::i;:::-;-1:-1:-1;;;;;36378:20:0;;;;;;:10;:20;;;;;;;;:24;;:63;;;;36494:18;;;;:31;;;:43;;36530:6;36494:35;:43::i;:::-;-1:-1:-1;;;;;36460:18:0;;;;;;:8;:18;;;;;;:31;;:77;36570:23;:11;36586:6;36570:15;:23::i;:::-;36556:37;;36152:457;;-1:-1:-1;36072:3:0;;36046:574;;;;36643:11;36633:7;;:21;36630:128;;;36680:7;;:24;;36692:11;36680;:24::i;:::-;36670:7;:34;36630:128;;;36745:1;36735:7;:11;36630:128;35833:932;;;;:::o;3998:130::-;4056:7;4083:37;4087:1;4090;4083:37;;;;;;;;;;;;;;;;;:3;:37::i;13519:2125::-;-1:-1:-1;;;;;13612:15:0;;;13588:21;13612:15;;;:8;:15;;;;;;13646:13;;13612:15;;13646:13;13638:54;;;;;-1:-1:-1;;;13638:54:0;;;;;;;;;;;;-1:-1:-1;;;13638:54:0;;;;;;;;;;;;;;;7751:5;13711:7;:21;;13703:47;;;;;-1:-1:-1;;;13703:47:0;;;;;;;;;;;;-1:-1:-1;;;13703:47:0;;;;;;;;;;;;;;;13769:23;:7;7751:5;13769:11;:23::i;:::-;:28;:53;;;;;7751:5;13801:7;:21;;13769:53;13761:73;;;;;-1:-1:-1;;;13761:73:0;;;;;;;;;;;;-1:-1:-1;;;13761:73:0;;;;;;;;;;;;;;;13853:15;;;;:20;;:50;;;13888:4;:15;;;13877:7;:26;;13853:50;13845:74;;;;;-1:-1:-1;;;13845:74:0;;;;;;;;;;;;-1:-1:-1;;;13845:74:0;;;;;;;;;;;;;;;13935:15;;;;13932:294;;13971:15;;;:25;;;14056:13;;-1:-1:-1;;;;;14056:13:0;14047:23;;;;:8;:23;;;;;;:33;;;:40;;14085:1;14047:37;:40::i;:::-;14020:13;;-1:-1:-1;;;;;14020:13:0;14011:23;;;;:8;:23;;;;;;:33;;:76;14102:26;14117:10;14102:14;:26::i;:::-;13932:294;;;14166:7;14148:4;:15;;;:25;14145:81;;;14189:15;;;:25;;;14145:81;14243:17;;;;14240:245;;14281:14;14298:11;:9;:11::i;:::-;14324:20;;;;:12;:20;;;;;;;;:32;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;14324:32:0;-1:-1:-1;;;;;14324:32:0;;;;;;;;;;14371:27;;;:19;:27;;;;;:41;;;;;;;;;;;;;;;;;14442:13;;14324:20;;-1:-1:-1;14427:46:0;;14442:13;14371:41;14324:20;14427:14;:46::i;:::-;14240:245;;14495:27;14514:7;14495:18;:27::i;:::-;14533:10;:22;;;;;;;-1:-1:-1;14533:22:0;;;;;;;;-1:-1:-1;;;;;;14533:22:0;-1:-1:-1;;;;;14533:22:0;;;;;14594:17;;;;:30;;14616:7;14594:21;:30::i;:::-;14574:17;;;:50;14655:17;;;;:30;;14677:7;14655:21;:30::i;:::-;14635:17;;;:50;14696:24;14709:10;14696:12;:24::i;:::-;-1:-1:-1;;;;;14752:17:0;;14731;14752;;;:10;:17;;;;;:24;14751:47;;7909:6;;14752:31;;14781:1;14752:28;:31::i;:::-;14751:37;;:47::i;:::-;14731:67;;8064:7;14812:9;:24;14809:79;;;-1:-1:-1;8064:7:0;14809:79;14898:20;14921:47;14958:9;14921:32;:15;7963:7;14921:19;:32::i;:47::-;-1:-1:-1;;;;;14979:17:0;;;;;;:10;:17;;;;;;;;15002:121;;;;;;;;;;15049:15;15002:121;;;;;;;;;;;;;;;;;;14979:145;;15002:121;14979:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14979:145:0;;;;;;;;;;15002:121;-1:-1:-1;15137:49:0;15166:10;15002:121;15137:28;:49::i;:::-;15197:23;:21;:23::i;:::-;15291:13;;-1:-1:-1;;;;;15291:13:0;15282:23;;;;:8;:23;;;;;;:40;;;:53;;15327:7;15282:44;:53::i;:::-;15248:13;;-1:-1:-1;;;;;15248:13:0;15239:23;;;;:8;:23;;;;;;:40;;:96;15346:37;15363:10;15375:7;15346:16;:37::i;:::-;15394:34;15408:10;15420:7;15394:13;:34::i;:::-;15439:38;15457:10;15469:7;15439:17;:38::i;:::-;15490:11;15504:4;;:29;;;-1:-1:-1;;;15504:29:0;;15527:4;15504:29;;;;;;-1:-1:-1;;;;;15504:4:0;;;;:14;;:29;;;;;;;;;;;;;;;:4;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15504:29:0;;-1:-1:-1;15544:16:0;15504:29;15544:11;:16::i;:::-;15574:14;;;;15571:66;;;15604:21;15621:3;15604:16;:21::i;:::-;13519:2125;;;;;;:::o;1229:192::-;1315:7;1351:12;1343:6;;;;1335:29;;;;-1:-1:-1;;;1335:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1387:5:0;;;1229:192::o;3255:278::-;3341:7;3376:12;3369:5;3361:28;;;;-1:-1:-1;;;3361:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3400:9;3416:1;3412;:5;;;;;;;3255:278;-1:-1:-1;;;;;3255:278:0:o;1680:471::-;1738:7;1983:6;1979:47;;-1:-1:-1;2013:1:0;2006:8;;1979:47;2050:5;;;2054:1;2050;:5;:1;2074:5;;;;;:10;2066:56;;;;-1:-1:-1;;;2066:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4613:166;4699:7;4735:12;4727:6;4719:29;;;;-1:-1:-1;;;4719:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4770:1;4766;:5;;;;;;;4613:166;-1:-1:-1;;;;4613:166:0:o;15651:576::-;-1:-1:-1;;;;;15733:15:0;;;15709:21;15733:15;;;:8;:15;;;;;;15776:13;;15733:15;;15776:13;;15800:420;8116:2;15819:1;:14;15800:420;;;-1:-1:-1;;;;;15857:20:0;;;15854:355;;-1:-1:-1;;;;;15924:16:0;;;;;;:8;:16;;;;;;:24;;;:31;;15953:1;15924:28;:31::i;:::-;-1:-1:-1;;;;;15897:16:0;;;;;;;:8;:16;;;;;;;:24;;:58;;;;15974:9;:17;;;;;:20;;;;;;;:32;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;15974:32:0;;;;;;;;;;16025:20;15897:16;16025:12;:20::i;:::-;16077:12;;-1:-1:-1;;;;;16067:22:0;;;16077:12;;16067:22;16064:32;;;16091:5;;16064:32;-1:-1:-1;;;;;16124:16:0;;;;;;;:8;:16;;;;;;:25;;;;;15854:355;;;16188:5;;15854:355;15835:3;;15800:420;;16230:757;16361:29;;;;:20;:29;;;;;;;;-1:-1:-1;;;;;16361:36:0;;;;;;;;;;:49;;16402:7;16361:40;:49::i;:::-;16322:29;;;;:20;:29;;;;;;;;-1:-1:-1;;;;;16322:36:0;;;;;;;;;:88;;;;:29;16444:244;16467:1;16463;:5;16444:244;;;16489:15;16507:20;;;:11;:20;;;;;16528:1;16507:23;;;;;;;;;-1:-1:-1;;;;;16507:23:0;;;;-1:-1:-1;16548:16:0;;;;16545:132;;;16584:20;16596:7;16584:11;:20::i;:::-;16633:4;16623:14;;16656:5;;;16545:132;-1:-1:-1;16470:3:0;;16444:244;;;;16702:7;16698:282;;16725:16;16744:20;;;:11;:20;;;;;;;;16765:1;16744:23;;16827:20;:29;;;;;-1:-1:-1;;;;;16827:36:0;;;;;;;;;;;16744:23;;16785:39;;;;;;:78;16782:187;;;16883:20;;;;:11;:20;;;;;16904:1;16883:23;:31;;-1:-1:-1;;;;;;16883:31:0;-1:-1:-1;;;;;16883:31:0;;;;;16933:20;16883;16933:11;:20::i;20215:814::-;20279:11;20293:41;7651:5;20293:24;:7;7702:3;20293:11;:24::i;:41::-;20345:4;;20359:12;:15;20279:55;;-1:-1:-1;;;;;;20345:4:0;;;;:13;;20359:15;20376:10;20279:55;20384:1;20376:7;:10::i;:::-;20345:42;;;;;;;;;;;;;-1:-1:-1;;;;;20345:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;20398:4:0;;-1:-1:-1;;;;;20398:4:0;:13;20412:12;20398:4;20412:15;;-1:-1:-1;;;;;20412:15:0;20429:10;:3;20437:1;20429:7;:10::i;:::-;20398:42;;;;;;;;;;;;;-1:-1:-1;;;;;20398:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20458:13:0;;-1:-1:-1;20474:47:0;7651:5;20474:30;:7;8453:2;20474:11;:30::i;:47::-;20544:9;;20458:63;;-1:-1:-1;20544:20:0;;20458:63;20544:13;:20::i;:::-;20532:9;:32;20574:13;20590:47;7651:5;20590:30;:7;8507:2;20590:11;:30::i;:47::-;20660:9;;20574:63;;-1:-1:-1;20660:20:0;;20574:63;20660:13;:20::i;:::-;20648:9;:32;20693:13;20709:47;7651:5;20709:30;:7;8561:2;20709:11;:30::i;:47::-;20779:9;;20693:63;;-1:-1:-1;20779:20:0;;20693:63;20779:13;:20::i;:::-;20767:9;:32;20813:12;20828:46;7651:5;20828:29;:7;8616:2;20828:11;:29::i;:46::-;20896:8;;20813:61;;-1:-1:-1;20896:18:0;;20813:61;20896:12;:18::i;:::-;20885:8;:29;20925:11;20939:45;7651:5;20939:28;:7;8668:2;20939:11;:28::i;:45::-;21005:7;;20925:59;;-1:-1:-1;21005:16:0;;20925:59;21005:11;:16::i;:::-;20995:7;:26;-1:-1:-1;;;;;;;20215:814:0:o;17538:523::-;-1:-1:-1;;;;;17618:15:0;;17594:21;17618:15;;;:8;:15;;;;;;;17663:19;17627:5;17663:12;:19::i;:::-;17644:38;;17707:4;:10;;;17696:8;:21;17693:361;;;17733:10;;;:21;;;17784:1;17772:13;;17769:82;;;17813:10;:22;;;;;;;-1:-1:-1;17813:22:0;;;;;;;;-1:-1:-1;;;;;;17813:22:0;-1:-1:-1;;;;;17813:22:0;;;;;17769:82;17868:8;17880:1;17868:13;17865:82;;;17909:10;:22;;;;;;;-1:-1:-1;17909:22:0;;;;;;;;-1:-1:-1;;;;;;17909:22:0;-1:-1:-1;;;;;17909:22:0;;;;;17865:82;17964:8;17976:1;17964:13;17961:82;;;18005:10;:22;;;;;;;-1:-1:-1;18005:22:0;;;;;;;;-1:-1:-1;;;;;18005:22:0;;-1:-1:-1;;;;;;18005:22:0;;;;;;17538:523;;;:::o;21815:2360::-;-1:-1:-1;;;;;21928:15:0;;21904:21;21928:15;;;:8;:15;;;;;;;21904:21;21987:1581;-1:-1:-1;;;;;22010:17:0;;;;;;:10;:17;;;;;:24;22006:28;;21987:1581;;;-1:-1:-1;;;;;22081:17:0;;22055:23;22081:17;;;:10;:17;;;;;:20;;22099:1;;22081:20;;;;;;;;;;;;;;;;22055:46;;22137:5;:14;;;22119:15;:32;:63;;;;-1:-1:-1;22156:17:0;;;;;;:26;22119:63;:90;;;;-1:-1:-1;22197:12:0;;22186:23;;;22119:90;22116:1441;;;22229:17;;;:24;;-1:-1:-1;;22229:24:0;22249:4;22229:24;;;;;;22356:12;;22336:17;;;;22249:4;;-1:-1:-1;;22333:202:0;;;22434:12;;22412:17;;;;:35;;:21;:35::i;:::-;22392:17;;;:55;22333:202;;;22514:1;22494:17;;;:21;22333:202;22571:42;22593:5;22600;:12;;;22571:21;:42::i;:::-;22632:20;22653:22;:20;:22::i;:::-;22632:43;;22694:20;22717:78;7651:5;22717:61;7909:6;22717:47;7963:7;22717:30;22734:12;22717:5;:12;;;:16;;:30;;;;:::i;:78::-;22817:14;;22694:101;;-1:-1:-1;22817:14:0;;22814:426;;;22878:4;:17;;;22858:4;:17;;;:37;22855:366;;;22923:19;22945:40;22967:4;:17;;;22945:4;:17;;;:21;;:40;;;;:::i;:::-;22923:62;;23030:11;23015:12;:26;23012:115;;;23088:11;23073:26;;23012:115;22855:366;;;;-1:-1:-1;23196:1:0;22855:366;23318:12;;-1:-1:-1;;;;;23287:17:0;;23318:12;23287:17;;;:10;:17;;;;;:26;:44;;:30;:44::i;:::-;-1:-1:-1;;;;;23258:17:0;;;;;;:10;:17;;;;;:73;;;23380:25;;;:43;;23410:12;23380:29;:43::i;:::-;-1:-1:-1;;;;;23352:17:0;;;;;;:10;:17;;;;;:25;;:71;23480:17;;;;:35;;23502:12;23480:21;:35::i;:::-;23460:17;;;:55;-1:-1:-1;23536:5:0;;-1:-1:-1;;23536:5:0;22116:1441;-1:-1:-1;22036:3:0;;21987:1581;;;;23584:17;23580:588;;-1:-1:-1;;;;;23656:23:0;;23618:35;23656:23;;;:16;:23;;;;;23697:24;;;;:28;23694:463;;23803:24;;;;23763:7;;23792:35;;23789:116;;-1:-1:-1;23861:24:0;;;;23789:116;23950:24;;;;:37;;23979:7;23950:28;:37::i;:::-;23923:24;;;:64;24034:25;;;;:38;;24064:7;24034:29;:38::i;:::-;24006:25;;;:66;24111:17;;;;:30;;24133:7;24111:21;:30::i;:::-;24091:17;;;:50;-1:-1:-1;23580:588:0;21815:2360;;;;:::o;29648:568::-;-1:-1:-1;;;;;29749:15:0;;;29725:21;29749:15;;;:8;:15;;;;;;29792:13;;29749:15;;29792:13;;29816:393;8116:2;29835:1;:14;29816:393;;;-1:-1:-1;;;;;29873:20:0;;;29870:328;;-1:-1:-1;;;;;29949:16:0;;;;;;:8;:16;;;;;;:33;;;:46;;29987:7;29949:37;:46::i;:::-;-1:-1:-1;;;;;29913:16:0;;;;;;:8;:16;;;;;;:33;;:82;30014:20;29922:6;30014:12;:20::i;:::-;30066:12;;-1:-1:-1;;;;;30056:22:0;;;30066:12;;30056:22;30053:32;;;30080:5;;30053:32;-1:-1:-1;;;;;30113:16:0;;;;;;;:8;:16;;;;;;:25;;;;;29870:328;;;30177:5;;29870:328;29851:3;;29816:393;;30222:2121;-1:-1:-1;;;;;30320:15:0;;;30296:21;30320:15;;;:8;:15;;;;;;30363:13;;30320:15;;30363:13;;30387:1949;8116:2;30406:1;:14;30387:1949;;;-1:-1:-1;;;;;30444:20:0;;;30441:1884;;30543:12;;30504:7;;-1:-1:-1;;;;;30533:22:0;;;30543:12;;30533:22;30530:234;;30579:19;30601:22;30616:6;30601:14;:22::i;:::-;30579:44;;30663:7;30649:11;:21;30646:99;;;30710:11;30698:23;;30646:99;30530:234;;-1:-1:-1;;;;;30819:24:0;;30782:34;30819:24;;;:16;:24;;;;;;;;30893:10;:18;;;;;30819:24;;30966:4;30963:1199;;31025:46;7651:5;31025:29;:9;8167:3;31025:13;:29::i;:46::-;31115:17;;;;31016:55;;-1:-1:-1;31115:29:0;;31016:55;31115:21;:29::i;:::-;31095:17;;;:49;-1:-1:-1;;;;;31223:16:0;;;;;;:8;:16;;;;;;:29;;;:41;;31257:6;31223:33;:41::i;:::-;-1:-1:-1;;;;;31191:16:0;;;;;;:8;:16;;;;;;:29;;:73;30963:1199;;;31314:1;31312;:3;:10;;;;;31321:1;31319;:3;31312:10;31309:853;;;-1:-1:-1;;;;;31349:16:0;;;;;;:8;:16;;;;;;:22;;;31374:1;-1:-1:-1;31346:235:0;;;31412:57;7651:5;31412:40;31426:18;31449:1;31445;:5;31426:25;;;;;;;;;31412:9;;:13;:40::i;:57::-;31522:23;;31403:66;;-1:-1:-1;31522:35:0;;31403:66;31522:27;:35::i;:::-;31496:61;;31346:235;31309:853;;;-1:-1:-1;;;;;31630:16:0;;;;;;:8;:16;;;;;;31655:1;31630:22;;;;:26;:35;;;;;31664:1;31660;:5;31630:35;31627:516;;;31702:57;7651:5;31702:40;31716:18;31739:1;31735;:5;31716:25;;;;;;31702:57;31812:23;;;;31693:66;;-1:-1:-1;31812:35:0;;31693:66;31812:27;:35::i;:::-;31786:23;;;:61;31627:516;;;-1:-1:-1;;;;;31901:16:0;;;;;;:8;:16;;;;;;:22;;;31926:1;-1:-1:-1;31901:36:0;;;;;31936:1;31931;:6;;31901:36;31898:245;;;31974:57;7651:5;31974:40;31988:18;32011:1;32007;:5;31988:25;;;;;;31974:57;32084:23;;;;31965:66;;-1:-1:-1;32084:35:0;;31965:66;32084:27;:35::i;:::-;32058:23;;;:61;31898:245;32193:12;;-1:-1:-1;;;;;32183:22:0;;;32193:12;;32183:22;32180:32;;;32207:5;;;;;;32180:32;-1:-1:-1;;;;;;;;32240:16:0;;;;;;;:8;:16;;;;;;:25;;;;;-1:-1:-1;30422:3:0;;30387:1949;;36771:2847;-1:-1:-1;;;;;36873:15:0;;;36849:21;36873:15;;;:8;:15;;;;;;36916:13;;36873:15;;36916:13;;36940:2671;8116:2;36959:1;:14;36940:2671;;;-1:-1:-1;;;;;36997:20:0;;;36994:2606;;37096:12;;37057:7;;-1:-1:-1;;;;;37086:22:0;;;37096:12;;37086:22;37083:234;;37132:19;37154:22;37169:6;37154:14;:22::i;:::-;37132:44;;37216:7;37202:11;:21;37199:99;;;37263:11;37251:23;;37199:99;37083:234;;-1:-1:-1;;;;;37374:24:0;;37337:34;37374:24;;;:16;:24;;;;;37422:5;;;;;:14;;;37435:1;37431;:5;37422:14;:44;;;;-1:-1:-1;;;;;;37440:16:0;;;;;;:8;:16;;;;;;:22;;;37465:1;-1:-1:-1;37422:44:0;37419:714;;;37493:23;;:27;37490:624;;37548:20;37571:57;7651:5;37571:40;37585:18;37608:1;37604;:5;37585:25;;;;;;;;;37571:9;;:13;:40::i;:57::-;37673:23;;37548:80;;-1:-1:-1;37658:38:0;;37655:139;;;-1:-1:-1;37743:23:0;;37655:139;37846:23;;:41;;37874:12;37846:27;:41::i;:::-;37820:67;;37942:24;;;;:42;;37971:12;37942:28;:42::i;:::-;37915:24;;;:69;-1:-1:-1;;;;;38043:16:0;;;;;;:8;:16;;;;;;:29;;;:47;;38077:12;38043:33;:47::i;:::-;-1:-1:-1;;;;;38011:16:0;;;;;;:8;:16;;;;;;:29;;:79;-1:-1:-1;37490:624:0;38161:1;38156;:6;;:15;;;;;38170:1;38166;:5;38156:15;:44;;;;-1:-1:-1;;;;;;38175:16:0;;;;;;:8;:16;;;;;;38199:1;38175:22;;;;:25;38156:44;38153:714;;;38227:23;;;;:27;38224:624;;38282:20;38305:57;7651:5;38305:40;38319:18;38342:1;38338;:5;38319:25;;;;;;38305:57;38282:80;;38407:9;:23;;;38392:12;:38;38389:139;;;-1:-1:-1;38477:23:0;;;;38389:139;38580:23;;;;:41;;38608:12;38580:27;:41::i;:::-;38554:23;;;:67;38676:24;;;;:42;;38705:12;38676:28;:42::i;:::-;38649:24;;;:69;-1:-1:-1;;;;;38777:16:0;;;;;;:8;:16;;;;;;:29;;;:47;;38811:12;38777:33;:47::i;:::-;-1:-1:-1;;;;;38745:16:0;;;;;;:8;:16;;;;;;:29;;:79;-1:-1:-1;38224:624:0;38895:1;38890;:6;;:36;;;;-1:-1:-1;;;;;;38900:16:0;;;;;;:8;:16;;;;;;:22;;;38925:1;-1:-1:-1;38890:36:0;38887:585;;;38953:20;;;;:24;38950:503;;39005:20;39028:57;7651:5;39028:40;39042:18;39065:1;39061;:5;39042:25;;;;;;39028:57;39005:80;;39130:9;:20;;;39115:12;:35;39112:133;;;-1:-1:-1;39197:20:0;;;;39112:133;39296:20;;;;:38;;39321:12;39296:24;:38::i;:::-;39273:20;;;:61;39388:23;;;;:41;;39416:12;39388:27;:41::i;:::-;39362:23;;;:67;-1:-1:-1;38950:503:0;-1:-1:-1;;;;;;;39515:16:0;;;;;;;:8;:16;;;;;;:25;;;;;36975:3;;36940:2671;;32988:247;33058:14;33042:186;33074:5;;33042:186;;33111:7;33123:1;33119;:5;33111:14;;;;;;;;;33103:4;:22;33100:117;;33173:4;33145:9;:25;33155:7;33167:1;33163;:5;33155:14;;;;;;;;;33145:25;;;;;;;;;;;-1:-1:-1;33145:25:0;:32;;-1:-1:-1;;33145:32:0;;;;;;;;;;33196:5;;33100:117;-1:-1:-1;;33081:3:0;33042:186;;16995:537;17068:1;17052:473;17075:1;17071;:5;17052:473;;;17097:16;17116:20;;;:11;:20;;;;;-1:-1:-1;;17137:5:0;;17116:27;;;;;;;;;;17177:20;;;:11;:20;;;;;-1:-1:-1;;;;;17116:27:0;;;;-1:-1:-1;17116:27:0;-1:-1:-1;;17198:5:0;;17177:27;;;;;;;;;;17237:29;;;:20;:29;;;;;;;;-1:-1:-1;;;;;17237:39:0;;;;;;;;;;;;17177:27;;17309:39;;;;;;;;;17177:27;;-1:-1:-1;17366:17:0;;;17363:151;;;17403:20;;;;:11;:20;;;;;17433:8;;-1:-1:-1;;17424:5:0;;17403:27;;;;;;;;:38;;-1:-1:-1;;;;;;17403:38:0;-1:-1:-1;;;;;17403:38:0;;;;;;;;;;-1:-1:-1;17460:20:0;;;:11;:20;;;;;17490:8;;-1:-1:-1;;17481:5:0;;17460:27;;;;;;;;:38;;-1:-1:-1;;;;;;17460:38:0;-1:-1:-1;;;;;17460:38:0;;;;;;;;;;17363:151;-1:-1:-1;;;;17078:3:0;;;;-1:-1:-1;17052:473:0;;-1:-1:-1;17052:473:0;18067:1498;-1:-1:-1;;;;;18169:15:0;;18125:7;18169:15;;;:8;:15;;;;;;18211:17;;;;18265:14;;;;18323:21;;;;18125:7;18394:6;18385:15;;18382:1150;;18417:15;18434:17;18457:21;18472:5;18457:14;:21::i;:::-;18416:62;;;;;18519:7;18510:5;:16;;:38;;;;;18546:2;18530:14;:18;;18510:38;:73;;;;;18575:8;18552:21;:31;;18510:73;:98;;;;;18605:3;18589:4;:12;;;:19;;18510:98;:121;;;;;18623:8;18612:7;:19;;18510:121;:147;;;;;18649:8;18636:9;:21;;18510:147;18507:839;;;18690:1;18679:12;;18507:839;;;18724:7;18715:5;:16;;:38;;;;;18751:2;18735:14;:18;;18715:38;:72;;;;;18780:7;18757:21;:30;;18715:72;:95;;;;;18807:3;18791:4;:12;;;:19;;18715:95;:118;;;;;18825:8;18814:7;:19;;18715:118;:144;;;;;18851:8;18838:9;:21;;18715:144;18712:634;;;18892:1;18881:12;;18712:634;;;18926:6;18917:5;:15;;:36;;;;;18952:1;18937:4;:12;;;:16;;18917:36;:70;;;;;18980:7;18957:21;:30;;18917:70;:92;;;;;19007:2;18991:4;:12;;;:18;;18917:92;:114;;;;;19024:7;19013;:18;;18917:114;:139;;;;;19049:7;19036:9;:20;;18917:139;18914:432;;;19089:1;19078:12;;18914:432;;;19137:6;19128:5;:15;;:36;;;;;19163:1;19147:14;:17;;19128:36;:70;;;;;19192:6;19169:21;:29;;19128:70;19125:221;;;19242:1;19231:12;;19125:221;;;19299:1;19281:14;:19;19278:68;;19329:1;19318:12;;19278:68;18382:1150;;;;;19373:6;19365:5;:14;;:35;;;;;19399:1;19383:14;:17;;19365:35;:68;;;;;19427:6;19404:21;:29;;19365:68;19362:170;;;-1:-1:-1;19460:1:0;19362:170;;;19490:2;19481:5;:11;19478:54;;-1:-1:-1;19519:1:0;19478:54;19549:8;18067:1498;-1:-1:-1;;;;;;18067:1498:0:o;33780:707::-;-1:-1:-1;;;;;33886:15:0;;;33862:21;33886:15;;;:8;:15;;;;;;33929:13;;33886:15;;33929:13;;33953:527;8116:2;33972:1;:14;33953:527;;;-1:-1:-1;;;;;34010:20:0;;;34007:462;;-1:-1:-1;;;;;34053:16:0;;;;;;:8;:16;;;;;;:33;;;:43;-1:-1:-1;34050:256:0;;;-1:-1:-1;;;;;34156:16:0;;;;;;:8;:16;;;;;;:33;;;:46;;34194:7;34156:37;:46::i;:::-;-1:-1:-1;;;;;34120:16:0;;;;;;:8;:16;;;;;;:33;;:82;34050:256;;;-1:-1:-1;;;;;34249:16:0;;34285:1;34249:16;;;:8;:16;;;;;;:33;;:37;34050:256;34337:12;;-1:-1:-1;;;;;34327:22:0;;;34337:12;;34327:22;34324:32;;;34351:5;;34324:32;-1:-1:-1;;;;;34384:16:0;;;;;;;:8;:16;;;;;;:25;;;;;33988:3;;33953:527;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;:::o
Swarm Source
ipfs://db826c09225ebfd30f9aed0e866c6ac2a74a7ede32b6a2c3773dc32731d1418d
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.