Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00Token Holdings
More Info
Private Name Tags
ContractCreator
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
0x2ffb102a1931292ca317b6bfcd41b55e5c70b0fad7b1b5f6dbffdd75b87fe3d2 | Claim Amount | (pending) | 2 mins ago | IN | 0 ETH | (Pending) | |||
0x1ba3d8a543443508ca82a859e38156ff00b07e5041bb0955af087b27c3f283ce | Claim Amount | (pending) | 3 days ago | IN | 0 ETH | (Pending) | |||
0x912562f6868bc75c9cc72c9c69c3c49a9ea18065eeda25567462585707f6b3ac | Claim Amount | (pending) | 3 days ago | IN | 0 ETH | (Pending) | |||
0xa9372ac0a3cafa9e2c566a969b3d17dc3f768e702e7f0399bb30c6d348b8d438 | Claim Amount | (pending) | 3 days ago | IN | 0 ETH | (Pending) | |||
0xc7851a8f4f19c53d0bba2364d1b2043c988a3383d85666bf3547082ae1ef6750 | Claim Amount | (pending) | 19 days ago | IN | 0 ETH | (Pending) | |||
0x59d64c9f09c16139d00eb426968d1a2ea60cbf421b993aaa4e6f8df5728c3aef | Buy With Eth | (pending) | 19 days ago | IN | 0.00504 ETH | (Pending) | |||
0x7efa1627db72e6e829208e17b1a62a2ca979173619ef96091e5a4500feab407b | Buy With Eth | (pending) | 19 days ago | IN | 0.0001 ETH | (Pending) | |||
0xae9d00d1ad69c10ee01bcabdddd4536d99b0f6df2e52b2c8a55b103b6b5f8a30 | Claim Amount | (pending) | 20 days ago | IN | 0 ETH | (Pending) | |||
0xabf2feb3dc2ed454d72edbd8fa00dc7090bd920534fef6bec1dbc60db3a615cc | Claim Amount | (pending) | 20 days ago | IN | 0 ETH | (Pending) | |||
Claim Amount | 21251904 | 23 mins ago | IN | 0 ETH | 0.00238751 | ||||
Claim Amount | 21251761 | 52 mins ago | IN | 0 ETH | 0.00188031 | ||||
Claim Amount | 21251756 | 53 mins ago | IN | 0 ETH | 0.00193755 | ||||
Claim Amount | 21251752 | 53 mins ago | IN | 0 ETH | 0.0020473 | ||||
Claim Amount | 21251614 | 1 hr ago | IN | 0 ETH | 0.00395234 | ||||
Claim Amount | 21251465 | 1 hr ago | IN | 0 ETH | 0.00188759 | ||||
Claim Amount | 21251159 | 2 hrs ago | IN | 0 ETH | 0.0021248 | ||||
Claim Amount | 21251012 | 3 hrs ago | IN | 0 ETH | 0.00234964 | ||||
Claim Amount | 21250354 | 5 hrs ago | IN | 0 ETH | 0.0008146 | ||||
Claim Amount | 21250350 | 5 hrs ago | IN | 0 ETH | 0.00086266 | ||||
Claim Amount | 21250348 | 5 hrs ago | IN | 0 ETH | 0.00085506 | ||||
Claim Amount | 21250301 | 5 hrs ago | IN | 0 ETH | 0.00085861 | ||||
Claim Amount | 21250202 | 6 hrs ago | IN | 0 ETH | 0.00090022 | ||||
Claim Amount | 21250195 | 6 hrs ago | IN | 0 ETH | 0.0010843 | ||||
Claim Amount | 21250187 | 6 hrs ago | IN | 0 ETH | 0.00154611 | ||||
Claim Amount | 21250071 | 6 hrs ago | IN | 0 ETH | 0.00158039 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
20799906 | 63 days ago | 0.00742248 ETH | ||||
20799881 | 63 days ago | 0.00742601 ETH | ||||
20047563 | 168 days ago | 0.08142361 ETH | ||||
19296045 | 273 days ago | 0.000041 ETH | ||||
19291039 | 274 days ago | 0.02 ETH | ||||
19291033 | 274 days ago | 0.02017654 ETH | ||||
19291032 | 274 days ago | 0.005 ETH | ||||
19291029 | 274 days ago | 0.2 ETH | ||||
19291027 | 274 days ago | 0.323 ETH | ||||
19291025 | 274 days ago | 0.152 ETH | ||||
19291019 | 274 days ago | 0.69806232 ETH | ||||
19291012 | 274 days ago | 0.0614011 ETH | ||||
19291010 | 274 days ago | 0.01 ETH | ||||
19291008 | 274 days ago | 0.323 ETH | ||||
19291008 | 274 days ago | 0.45 ETH | ||||
19291003 | 274 days ago | 0.312 ETH | ||||
19291003 | 274 days ago | 0.045 ETH | ||||
19291002 | 274 days ago | 0.41 ETH | ||||
19291000 | 274 days ago | 0.17 ETH | ||||
19290997 | 274 days ago | 0.02377466 ETH | ||||
19290997 | 274 days ago | 0.04 ETH | ||||
19290991 | 274 days ago | 0.18 ETH | ||||
19290989 | 274 days ago | 0.1 ETH | ||||
19290986 | 274 days ago | 0.033 ETH | ||||
19290984 | 274 days ago | 0.6 ETH |
Loading...
Loading
Contract Name:
Retik_Presale
Compiler Version
v0.8.22+commit.4fc1097e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-12-04 */ //SPDX-License-Identifier: MIT pragma solidity ^0.8.10; abstract contract ReentrancyGuard { uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } modifier nonReentrant() { _nonReentrantBefore(); _; _nonReentrantAfter(); } function _nonReentrantBefore() private { require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); _status = _ENTERED; } function _nonReentrantAfter() private { _status = _NOT_ENTERED; } } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() { _transferOwnership(_msgSender()); } modifier onlyOwner() { _checkOwner(); _; } function owner() public view virtual returns (address) { return _owner; } function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require( newOwner != address(0), "Ownable: new owner is the zero address" ); _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } library Address { function isContract(address account) internal view returns (bool) { return account.code.length > 0; } function sendValue(address payable recipient, uint256 amount) internal { require( address(this).balance >= amount, "Address: insufficient balance" ); (bool success, ) = recipient.call{value: amount}(""); require( success, "Address: unable to send value, recipient may have reverted" ); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCallWithValue( target, data, 0, "Address: low-level call failed" ); } function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue( target, data, value, "Address: low-level call with value failed" ); } function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require( address(this).balance >= value, "Address: insufficient balance for call" ); (bool success, bytes memory returndata) = target.call{value: value}( data ); return verifyCallResultFromTarget( target, success, returndata, errorMessage ); } function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall( target, data, "Address: low-level static call failed" ); } function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResultFromTarget( target, success, returndata, errorMessage ); } function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall( target, data, "Address: low-level delegate call failed" ); } function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResultFromTarget( target, success, returndata, errorMessage ); } function verifyCallResultFromTarget( address target, bool success, bytes memory returndata, string memory errorMessage ) internal view returns (bytes memory) { if (success) { if (returndata.length == 0) { require(isContract(target), "Address: call to non-contract"); } return returndata; } else { _revert(returndata, errorMessage); } } function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { _revert(returndata, errorMessage); } } function _revert(bytes memory returndata, string memory errorMessage) private pure { if (returndata.length > 0) { assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } interface IERC20 { event Transfer(address indexed from, address indexed to, uint256 value); event Approval( address indexed owner, address indexed spender, uint256 value ); function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address to, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address from, address to, uint256 amount ) external returns (bool); } interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } interface Aggregator { function latestRoundData() external view returns ( uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound ); } contract Retik_Presale is ReentrancyGuard, Ownable { uint256 public overalllRaised; uint256 public presaleId; uint256 public USDT_MULTIPLIER; uint256 public ETH_MULTIPLIER; address public fundReceiver; uint256 public uniqueBuyers; struct PresaleData { uint256 startTime; uint256 endTime; uint256 price; uint256 nextStagePrice; uint256 Sold; uint256 tokensToSell; uint256 UsdtHardcap; uint256 amountRaised; bool Active; bool isEnableClaim; } struct VestingData { uint256 vestingStartTime; uint256 initialClaimPercent; uint256 vestingTime; uint256 vestingPercentage; uint256 totalClaimCycles; } struct UserData { uint256 investedAmount; uint256 claimAt; uint256 claimAbleAmount; uint256 claimedVestingAmount; uint256 claimedAmount; uint256 claimCount; uint256 activePercentAmount; } IERC20Metadata public USDTInterface; IERC20Metadata public USDCInterface; Aggregator internal aggregatorInterface; mapping(uint256 => bool) public paused; mapping(uint256 => PresaleData) public presale; mapping(uint256 => VestingData) public vesting; mapping(address => mapping(uint256 => UserData)) public userClaimData; mapping(address => bool) public isExcludeMinToken; mapping(address => bool) public isBlackList; mapping(address => bool) public isExist; uint256 public MinTokenTobuy; uint256 public currentSale; address public SaleToken; event PresaleCreated( uint256 indexed _id, uint256 _totalTokens, uint256 _startTime, uint256 _endTime ); event PresaleUpdated( bytes32 indexed key, uint256 prevValue, uint256 newValue, uint256 timestamp ); event TokensBought( address indexed user, uint256 indexed id, address indexed purchaseToken, uint256 tokensBought, uint256 amountPaid, uint256 timestamp ); event TokensClaimed( address indexed user, uint256 indexed id, uint256 amount, uint256 timestamp ); event PresaleTokenAddressUpdated( address indexed prevValue, address indexed newValue, uint256 timestamp ); event PresalePaused(uint256 indexed id, uint256 timestamp); event PresaleUnpaused(uint256 indexed id, uint256 timestamp); constructor( address _oracle, address _usdt, address _usdc, address _SaleToken, uint256 _MinTokenTobuy ) { aggregatorInterface = Aggregator(_oracle); SaleToken = _SaleToken; MinTokenTobuy = _MinTokenTobuy; USDTInterface = IERC20Metadata(_usdt); USDCInterface = IERC20Metadata(_usdc); ETH_MULTIPLIER = (10**18); USDT_MULTIPLIER = (10**6); fundReceiver = msg.sender; } function createPresale( uint256 _price, uint256 _nextStagePrice, uint256 _tokensToSell, uint256 _UsdtHardcap ) external onlyOwner { require(_price > 0, "Zero price"); require(_tokensToSell > 0, "Zero tokens to sell"); presaleId++; presale[presaleId] = PresaleData( 0, 0, _price, _nextStagePrice, 0, _tokensToSell, _UsdtHardcap, 0, false, false ); emit PresaleCreated(presaleId, _tokensToSell, 0, 0); } function setPresaleStage(uint256 _id) public onlyOwner { require(presale[_id].tokensToSell > 0, "Presale don't exist"); if (currentSale != 0) { presale[currentSale].endTime = block.timestamp; presale[currentSale].Active = false; } presale[_id].startTime = block.timestamp; presale[_id].Active = true; currentSale = _id; } function setPresaleVesting( uint256[] memory _id, uint256[] memory vestingStartTime, uint256[] memory _initialClaimPercent, uint256[] memory _vestingTime, uint256[] memory _vestingPercentage ) public onlyOwner { for (uint256 i = 0; i < _id.length; i++) { vesting[_id[i]] = VestingData( vestingStartTime[i], _initialClaimPercent[i], _vestingTime[i], _vestingPercentage[i], (1000 - _initialClaimPercent[i]) / _vestingPercentage[i] ); } } function updatePresaleVesting( uint256 _id, uint256 _vestingStartTime, uint256 _initialClaimPercent, uint256 _vestingTime, uint256 _vestingPercentage ) public onlyOwner { vesting[_id].vestingStartTime = _vestingStartTime; vesting[_id].initialClaimPercent = _initialClaimPercent; vesting[_id].vestingTime = _vestingTime; vesting[_id].vestingPercentage = _vestingPercentage; vesting[_id].totalClaimCycles = (100 - _initialClaimPercent) / _vestingPercentage; } uint256 initialClaimPercent; uint256 vestingTime; uint256 vestingPercentage; uint256 totalClaimCycles; function enableClaim(uint256 _id, bool _status) public onlyOwner { presale[_id].isEnableClaim = _status; } function updatePresale( uint256 _id, uint256 _price, uint256 _nextStagePrice, uint256 _tokensToSell, uint256 _Hardcap, bool isclaimAble ) external onlyOwner { require(_price > 0, "Zero price"); require(_tokensToSell > 0, "Zero tokens to sell"); require(_Hardcap > 0, "Zero harcap"); presale[_id].price = _price; presale[_id].nextStagePrice = _nextStagePrice; presale[_id].tokensToSell = _tokensToSell; presale[_id].UsdtHardcap = _Hardcap; presale[_id].isEnableClaim = isclaimAble; } function changeFundWallet(address _wallet) external onlyOwner { require(_wallet != address(0), "Invalid parameters"); fundReceiver = _wallet; } function changeUSDTToken(address _newAddress) external onlyOwner { require(_newAddress != address(0), "Zero token address"); USDTInterface = IERC20Metadata(_newAddress); } function changeUSDCToken(address _newAddress) external onlyOwner { require(_newAddress != address(0), "Zero token address"); USDCInterface = IERC20Metadata(_newAddress); } function pausePresale(uint256 _id) external checkPresaleId(_id) onlyOwner { require(!paused[_id], "Already paused"); paused[_id] = true; emit PresalePaused(_id, block.timestamp); } function unPausePresale(uint256 _id) external checkPresaleId(_id) onlyOwner { require(paused[_id], "Not paused"); paused[_id] = false; emit PresaleUnpaused(_id, block.timestamp); } function getLatestPrice() public view returns (uint256) { (, int256 price, , , ) = aggregatorInterface.latestRoundData(); price = (price * (10**10)); return uint256(price); } modifier checkPresaleId(uint256 _id) { require(_id > 0 && _id == currentSale, "Invalid presale id"); _; } modifier checkSaleState(uint256 _id, uint256 amount) { require(presale[_id].Active == true, "preSAle not Active"); require( amount > 0 && amount <= presale[_id].tokensToSell - presale[_id].Sold, "Invalid sale amount" ); _; } function ExcludeAccouctFromMinBuy(address _user, bool _status) external onlyOwner { isExcludeMinToken[_user] = _status; } function buyWithUSDT(uint256 usdAmount) external checkPresaleId(currentSale) checkSaleState(currentSale, usdtToTokens(currentSale, usdAmount)) nonReentrant returns (bool) { require(!paused[currentSale], "Presale paused"); require( presale[currentSale].Active == true, "Presale is not active yet" ); require(!isBlackList[msg.sender], "Account is blackListed"); require( presale[currentSale].amountRaised + usdAmount <= presale[currentSale].UsdtHardcap, "Amount should be less than leftHardcap" ); if (!isExist[msg.sender]) { isExist[msg.sender] = true; uniqueBuyers++; } uint256 tokens = usdtToTokens(currentSale, usdAmount); presale[currentSale].Sold += tokens; presale[currentSale].amountRaised += usdAmount; overalllRaised += usdAmount; if (isExcludeMinToken[msg.sender] == false) { require(tokens >= MinTokenTobuy, "Less than min amount"); } if (userClaimData[_msgSender()][currentSale].claimAbleAmount > 0) { userClaimData[_msgSender()][currentSale].claimAbleAmount += tokens; userClaimData[_msgSender()][currentSale].investedAmount += usdAmount; } else { userClaimData[_msgSender()][currentSale] = UserData( usdAmount, 0, tokens, 0, 0, 0, 0 ); } uint256 ourAllowance = USDTInterface.allowance( _msgSender(), address(this) ); require(usdAmount <= ourAllowance, "Make sure to add enough allowance"); (bool success, ) = address(USDTInterface).call( abi.encodeWithSignature( "transferFrom(address,address,uint256)", _msgSender(), fundReceiver, usdAmount ) ); require(success, "Token payment failed"); emit TokensBought( _msgSender(), currentSale, address(USDTInterface), tokens, usdAmount, block.timestamp ); return true; } function changeClaimAddress(address _oldAddress, address _newWallet) public onlyOwner { for (uint256 i = 1; i < presaleId; i++) { require(isExist[_oldAddress], "User not a participant"); userClaimData[_newWallet][i].claimAbleAmount = userClaimData[ _oldAddress ][i].claimAbleAmount; userClaimData[_oldAddress][i].claimAbleAmount = 0; } isExist[_oldAddress] = false; isExist[_newWallet] = true; } function blackListUser(address _user, bool _value) public onlyOwner { isBlackList[_user] = _value; } function buyWithUSDC(uint256 usdcAmount) external checkPresaleId(currentSale) checkSaleState(currentSale, usdtToTokens(currentSale, usdcAmount)) nonReentrant returns (bool) { require(!paused[currentSale], "Presale paused"); require( presale[currentSale].Active == true, "Presale is not active yet" ); require( presale[currentSale].amountRaised + usdcAmount <= presale[currentSale].UsdtHardcap, "Amount should be less than leftHardcap" ); require(!isBlackList[msg.sender], "Account is blackListed"); if (!isExist[msg.sender]) { isExist[msg.sender] = true; uniqueBuyers++; } uint256 tokens = usdtToTokens(currentSale, usdcAmount); presale[currentSale].Sold += tokens; presale[currentSale].amountRaised += usdcAmount; overalllRaised += usdcAmount; if (isExcludeMinToken[msg.sender] == false) { require(tokens >= MinTokenTobuy, "Less than min amount"); } if (userClaimData[_msgSender()][currentSale].claimAbleAmount > 0) { userClaimData[_msgSender()][currentSale].claimAbleAmount += tokens; userClaimData[_msgSender()][currentSale].investedAmount += usdcAmount; } else { userClaimData[_msgSender()][currentSale] = UserData( usdcAmount, 0, tokens, 0, 0, 0, 0 ); require(isExist[_msgSender()], "User not a participant"); } uint256 ourAllowance = USDTInterface.allowance( _msgSender(), address(this) ); require( usdcAmount <= ourAllowance, "Make sure to add enough allowance" ); (bool success, ) = address(USDCInterface).call( abi.encodeWithSignature( "transferFrom(address,address,uint256)", _msgSender(), fundReceiver, usdcAmount ) ); require(success, "Token payment failed"); emit TokensBought( _msgSender(), currentSale, address(USDTInterface), tokens, usdcAmount, block.timestamp ); return true; } function buyWithEth() external payable checkPresaleId(currentSale) checkSaleState(currentSale, ethToTokens(currentSale, msg.value)) nonReentrant returns (bool) { uint256 usdAmount = (msg.value * getLatestPrice() * USDT_MULTIPLIER) / (ETH_MULTIPLIER * ETH_MULTIPLIER); require( presale[currentSale].amountRaised + usdAmount <= presale[currentSale].UsdtHardcap, "Amount should be less than leftHardcap" ); require(!isBlackList[msg.sender], "Account is blackListed"); require(!paused[currentSale], "Presale paused"); require( presale[currentSale].Active == true, "Presale is not active yet" ); if (!isExist[msg.sender]) { isExist[msg.sender] = true; uniqueBuyers++; } uint256 tokens = usdtToTokens(currentSale, usdAmount); if (isExcludeMinToken[msg.sender] == false) { require(tokens >= MinTokenTobuy, "Insufficient amount!"); } presale[currentSale].Sold += tokens; presale[currentSale].amountRaised += usdAmount; overalllRaised += usdAmount; if (userClaimData[_msgSender()][currentSale].claimAbleAmount > 0) { userClaimData[_msgSender()][currentSale].claimAbleAmount += tokens; userClaimData[_msgSender()][currentSale].investedAmount += usdAmount; } else { userClaimData[_msgSender()][currentSale] = UserData( usdAmount, 0, // Last claimed at tokens, // total tokens to be claimed 0, // vesting claimed amount 0, // claimed amount 0, // claim count 0 // vesting percent ); } sendValue(payable(fundReceiver), msg.value); emit TokensBought( _msgSender(), currentSale, address(0), tokens, msg.value, block.timestamp ); return true; } function ethBuyHelper(uint256 _id, uint256 amount) external view returns (uint256 ethAmount) { uint256 usdPrice = (amount * presale[_id].price); ethAmount = (usdPrice * ETH_MULTIPLIER) / (getLatestPrice() * 10**IERC20Metadata(SaleToken).decimals()); } function usdtBuyHelper(uint256 _id, uint256 amount) external view returns (uint256 usdPrice) { usdPrice = (amount * presale[_id].price) / 10**IERC20Metadata(SaleToken).decimals(); } function ethToTokens(uint256 _id, uint256 amount) public view returns (uint256 _tokens) { uint256 usdAmount = (amount * getLatestPrice() * USDT_MULTIPLIER) / (ETH_MULTIPLIER * ETH_MULTIPLIER); _tokens = usdtToTokens(_id, usdAmount); } function usdtToTokens(uint256 _id, uint256 amount) public view returns (uint256 _tokens) { _tokens = (amount * presale[_id].price) / USDT_MULTIPLIER; } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Low balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "ETH Payment failed"); } function claimableAmount(address user, uint256 _id) public view returns (uint256) { UserData memory _user = userClaimData[user][_id]; require(_user.claimAbleAmount > 0, "Nothing to claim"); uint256 amount = _user.claimAbleAmount; require(amount > 0, "Already claimed"); return amount; } function claimAmount(uint256 _id) public returns (bool) { require(isExist[_msgSender()], "User not a participant"); uint256 amount = claimableAmount(msg.sender, _id); require(amount > 0, "No claimable amount"); require(!isBlackList[msg.sender], "Account is blackListed"); require(SaleToken != address(0), "Presale token address not set"); require( amount <= IERC20(SaleToken).balanceOf(address(this)), "Not enough tokens in the contract" ); require((presale[_id].isEnableClaim == true), "Claim is not enable"); uint256 transferAmount; if (userClaimData[msg.sender][_id].claimCount == 0) { transferAmount = (amount * (vesting[_id].initialClaimPercent)) / 1000; userClaimData[msg.sender][_id].activePercentAmount = (amount * vesting[_id].vestingPercentage) / 1000; bool status = IERC20(SaleToken).transfer( msg.sender, transferAmount ); require(status, "Token transfer failed"); userClaimData[msg.sender][_id].claimAbleAmount -= transferAmount; userClaimData[msg.sender][_id].claimedAmount += transferAmount; userClaimData[msg.sender][_id].claimCount++; } else if ( userClaimData[msg.sender][_id].claimAbleAmount > userClaimData[msg.sender][_id].activePercentAmount ) { uint256 duration = block.timestamp - vesting[_id].vestingStartTime; uint256 multiplier = duration / vesting[_id].vestingTime; if (multiplier > vesting[_id].totalClaimCycles) { multiplier = vesting[_id].totalClaimCycles; } uint256 _amount = multiplier * userClaimData[msg.sender][_id].activePercentAmount; transferAmount = _amount - userClaimData[msg.sender][_id].claimedVestingAmount; require(transferAmount > 0, "Please wait till next claim"); bool status = IERC20(SaleToken).transfer( msg.sender, transferAmount ); require(status, "Token transfer failed"); userClaimData[msg.sender][_id].claimAbleAmount -= transferAmount; userClaimData[msg.sender][_id] .claimedVestingAmount += transferAmount; userClaimData[msg.sender][_id].claimedAmount += transferAmount; userClaimData[msg.sender][_id].claimCount++; } else { uint256 duration = block.timestamp - vesting[_id].vestingStartTime; uint256 multiplier = duration / vesting[_id].vestingTime; if (multiplier > vesting[_id].totalClaimCycles + 1) { transferAmount = userClaimData[msg.sender][_id].claimAbleAmount; require(transferAmount > 0, "Please wait till next claim"); bool status = IERC20(SaleToken).transfer( msg.sender, transferAmount ); require(status, "Token transfer failed"); userClaimData[msg.sender][_id] .claimAbleAmount -= transferAmount; userClaimData[msg.sender][_id].claimedAmount += transferAmount; userClaimData[msg.sender][_id] .claimedVestingAmount += transferAmount; userClaimData[msg.sender][_id].claimCount++; } else { revert("Wait for next claiim"); } } return true; } function WithdrawTokens(address _token, uint256 amount) external onlyOwner { IERC20(_token).transfer(fundReceiver, amount); } function WithdrawContractFunds(uint256 amount) external onlyOwner { sendValue(payable(fundReceiver), amount); } function ChangeTokenToSell(address _token) public onlyOwner { SaleToken = _token; } function EditMinTokenToBuy(uint256 _amount) public onlyOwner { MinTokenTobuy = _amount; } function ChangeOracleAddress(address _oracle) public onlyOwner { aggregatorInterface = Aggregator(_oracle); } function blockStamp() public view returns(uint256) { return block.timestamp; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_oracle","type":"address"},{"internalType":"address","name":"_usdt","type":"address"},{"internalType":"address","name":"_usdc","type":"address"},{"internalType":"address","name":"_SaleToken","type":"address"},{"internalType":"uint256","name":"_MinTokenTobuy","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_totalTokens","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_startTime","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_endTime","type":"uint256"}],"name":"PresaleCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"PresalePaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"prevValue","type":"address"},{"indexed":true,"internalType":"address","name":"newValue","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"PresaleTokenAddressUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"PresaleUnpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"key","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"prevValue","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newValue","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"PresaleUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":true,"internalType":"address","name":"purchaseToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokensBought","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountPaid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"TokensBought","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"TokensClaimed","type":"event"},{"inputs":[{"internalType":"address","name":"_oracle","type":"address"}],"name":"ChangeOracleAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"ChangeTokenToSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ETH_MULTIPLIER","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"EditMinTokenToBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"ExcludeAccouctFromMinBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"MinTokenTobuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SaleToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"USDCInterface","outputs":[{"internalType":"contract IERC20Metadata","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"USDTInterface","outputs":[{"internalType":"contract IERC20Metadata","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"USDT_MULTIPLIER","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"WithdrawContractFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"WithdrawTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"bool","name":"_value","type":"bool"}],"name":"blackListUser","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"blockStamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyWithEth","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"usdcAmount","type":"uint256"}],"name":"buyWithUSDC","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"usdAmount","type":"uint256"}],"name":"buyWithUSDT","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_oldAddress","type":"address"},{"internalType":"address","name":"_newWallet","type":"address"}],"name":"changeClaimAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"}],"name":"changeFundWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newAddress","type":"address"}],"name":"changeUSDCToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newAddress","type":"address"}],"name":"changeUSDTToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"claimAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"claimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_price","type":"uint256"},{"internalType":"uint256","name":"_nextStagePrice","type":"uint256"},{"internalType":"uint256","name":"_tokensToSell","type":"uint256"},{"internalType":"uint256","name":"_UsdtHardcap","type":"uint256"}],"name":"createPresale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"currentSale","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableClaim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ethBuyHelper","outputs":[{"internalType":"uint256","name":"ethAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ethToTokens","outputs":[{"internalType":"uint256","name":"_tokens","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fundReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLatestPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBlackList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludeMinToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"overalllRaised","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"pausePresale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"presale","outputs":[{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"endTime","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"nextStagePrice","type":"uint256"},{"internalType":"uint256","name":"Sold","type":"uint256"},{"internalType":"uint256","name":"tokensToSell","type":"uint256"},{"internalType":"uint256","name":"UsdtHardcap","type":"uint256"},{"internalType":"uint256","name":"amountRaised","type":"uint256"},{"internalType":"bool","name":"Active","type":"bool"},{"internalType":"bool","name":"isEnableClaim","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"presaleId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"setPresaleStage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_id","type":"uint256[]"},{"internalType":"uint256[]","name":"vestingStartTime","type":"uint256[]"},{"internalType":"uint256[]","name":"_initialClaimPercent","type":"uint256[]"},{"internalType":"uint256[]","name":"_vestingTime","type":"uint256[]"},{"internalType":"uint256[]","name":"_vestingPercentage","type":"uint256[]"}],"name":"setPresaleVesting","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"unPausePresale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniqueBuyers","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"uint256","name":"_price","type":"uint256"},{"internalType":"uint256","name":"_nextStagePrice","type":"uint256"},{"internalType":"uint256","name":"_tokensToSell","type":"uint256"},{"internalType":"uint256","name":"_Hardcap","type":"uint256"},{"internalType":"bool","name":"isclaimAble","type":"bool"}],"name":"updatePresale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"uint256","name":"_vestingStartTime","type":"uint256"},{"internalType":"uint256","name":"_initialClaimPercent","type":"uint256"},{"internalType":"uint256","name":"_vestingTime","type":"uint256"},{"internalType":"uint256","name":"_vestingPercentage","type":"uint256"}],"name":"updatePresaleVesting","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"usdtBuyHelper","outputs":[{"internalType":"uint256","name":"usdPrice","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"usdtToTokens","outputs":[{"internalType":"uint256","name":"_tokens","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"userClaimData","outputs":[{"internalType":"uint256","name":"investedAmount","type":"uint256"},{"internalType":"uint256","name":"claimAt","type":"uint256"},{"internalType":"uint256","name":"claimAbleAmount","type":"uint256"},{"internalType":"uint256","name":"claimedVestingAmount","type":"uint256"},{"internalType":"uint256","name":"claimedAmount","type":"uint256"},{"internalType":"uint256","name":"claimCount","type":"uint256"},{"internalType":"uint256","name":"activePercentAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"vesting","outputs":[{"internalType":"uint256","name":"vestingStartTime","type":"uint256"},{"internalType":"uint256","name":"initialClaimPercent","type":"uint256"},{"internalType":"uint256","name":"vestingTime","type":"uint256"},{"internalType":"uint256","name":"vestingPercentage","type":"uint256"},{"internalType":"uint256","name":"totalClaimCycles","type":"uint256"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
608060405234801562000010575f80fd5b5060405162003caf38038062003caf833981016040819052620000339162000125565b60015f556200004233620000b8565b600a80546001600160a01b03199081166001600160a01b039788161790915560148054821693871693909317909255601255600880548216938516939093179092556009805483169190931617909155670de0b6b3a7640000600555620f42406004556006805433921691909117905562000188565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b80516001600160a01b038116811462000120575f80fd5b919050565b5f805f805f60a086880312156200013a575f80fd5b620001458662000109565b9450620001556020870162000109565b9350620001656040870162000109565b9250620001756060870162000109565b9150608086015190509295509295909350565b613b1980620001965f395ff3fe6080604052600436106102d7575f3560e01c80637cde403d11610189578063cd1704a8116100d8578063ecf5f43711610092578063f427fdf91161006d578063f427fdf9146109f9578063f597573f14610a0b578063fb4aa0a114610a2a578063fe9f676e14610a49575f80fd5b8063ecf5f4371461099c578063f2fde38b146109bb578063f309fed9146109da575f80fd5b8063cd1704a81461084d578063d01608c11461086c578063d099850a1461088b578063e0cef1b0146108aa578063e18e84f9146108c9578063e6ab1434146108de575f80fd5b8063a05d03fd11610143578063aeccf7351161011e578063aeccf73514610749578063b04c734614610768578063b36d691914610800578063c8f74e111461082e575f80fd5b8063a05d03fd14610700578063a7c6016014610715578063aa1c3aa514610734575f80fd5b80637cde403d1461065d578063833cde521461067c5780638561c3151461069b5780638d79e66d146106ba5780638da5cb5b146106cf5780638e15f473146106ec575f80fd5b80632ffac82c1161024557806358f98585116101ff5780636fb4adff116101da5780636fb4adff146105ec578063715018a61461060b578063718a19621461061f57806379b8d9381461063e575f80fd5b806358f98585146105995780635dfd59f6146105ae578063680f2e4f146105cd575f80fd5b80632ffac82c146104a2578063397643631461051257806348bf4fcf146105275780634a3bf6c91461053c5780634a6413f71461055b578063582b57231461057a575f80fd5b806311b5444f1161029657806311b5444f146103ca5780631ed0c954146103d25780632127fe041461040057806323b221a01461042d57806325312e541461044c5780632fb2b44b14610483575f80fd5b806213eb4b146102db578062dde10e1461031e57806303fcd9ac1461034c5780630d07cc301461036d5780630ec809a81461038c5780630fbfcf37146103ab575b5f80fd5b3480156102e6575f80fd5b506103096102f5366004613310565b60116020525f908152604090205460ff1681565b60405190151581526020015b60405180910390f35b348015610329575f80fd5b50610309610338366004613329565b600b6020525f908152604090205460ff1681565b348015610357575f80fd5b5061036b61036636600461334d565b610a68565b005b348015610378575f80fd5b5061036b610387366004613310565b610a9a565b348015610397575f80fd5b5061036b6103a6366004613310565b610ac4565b3480156103b6575f80fd5b5061036b6103c5366004613382565b610aee565b610309610b1f565b3480156103dd575f80fd5b506103096103ec366004613310565b600f6020525f908152604090205460ff1681565b34801561040b575f80fd5b5061041f61041a3660046133a5565b610fc8565b604051908152602001610315565b348015610438575f80fd5b50610309610447366004613329565b611097565b348015610457575f80fd5b5060095461046b906001600160a01b031681565b6040516001600160a01b039091168152602001610315565b34801561048e575f80fd5b5061036b61049d3660046133c5565b611978565b3480156104ad575f80fd5b506104ea6104bc366004613329565b600d6020525f9081526040902080546001820154600283015460038401546004909401549293919290919085565b604080519586526020860194909452928401919091526060830152608082015260a001610315565b34801561051d575f80fd5b5061041f60055481565b348015610532575f80fd5b5061041f60045481565b348015610547575f80fd5b5061036b610556366004613416565b611a81565b348015610566575f80fd5b5061036b610575366004613329565b611ade565b348015610585575f80fd5b5061036b610594366004613329565b611bba565b3480156105a4575f80fd5b5061041f60025481565b3480156105b9575f80fd5b5061036b6105c836600461344d565b611bdb565b3480156105d8575f80fd5b5061036b6105e736600461347e565b611cb5565b3480156105f7575f80fd5b5061036b610606366004613310565b611d36565b348015610616575f80fd5b5061036b611dab565b34801561062a575f80fd5b5061041f6106393660046133a5565b611dbe565b348015610649575f80fd5b5061041f61065836600461347e565b611e05565b348015610668575f80fd5b5061036b610677366004613329565b611efe565b348015610687575f80fd5b5060145461046b906001600160a01b031681565b3480156106a6575f80fd5b5061036b6106b5366004613310565b611fae565b3480156106c5575f80fd5b5061041f60125481565b3480156106da575f80fd5b506001546001600160a01b031661046b565b3480156106f7575f80fd5b5061041f612023565b34801561070b575f80fd5b5061041f60135481565b348015610720575f80fd5b5061030961072f366004613329565b6120b0565b34801561073f575f80fd5b5061041f60075481565b348015610754575f80fd5b50610309610763366004613329565b6126a2565b348015610773575f80fd5b506107cb61078236600461347e565b600e602052815f5260405f20602052805f5260405f205f9150915050805f0154908060010154908060020154908060030154908060040154908060050154908060060154905087565b604080519788526020880196909652948601939093526060850191909152608084015260a083015260c082015260e001610315565b34801561080b575f80fd5b5061030961081a366004613310565b60106020525f908152604090205460ff1681565b348015610839575f80fd5b5061036b610848366004613555565b612b77565b348015610858575f80fd5b5061036b610867366004613329565b612cd1565b348015610877575f80fd5b5061036b610886366004613329565b612cde565b348015610896575f80fd5b5061036b6108a536600461361e565b612da6565b3480156108b5575f80fd5b5061036b6108c436600461334d565b612f41565b3480156108d4575f80fd5b5061041f60035481565b3480156108e9575f80fd5b5061094e6108f8366004613329565b600c6020525f908152604090208054600182015460028301546003840154600485015460058601546006870154600788015460089098015496979596949593949293919290919060ff808216916101009004168a565b604080519a8b5260208b0199909952978901969096526060880194909452608087019290925260a086015260c085015260e08401521515610100830152151561012082015261014001610315565b3480156109a7575f80fd5b5061036b6109b6366004613310565b612f73565b3480156109c6575f80fd5b5061036b6109d5366004613310565b612fe8565b3480156109e5575f80fd5b5061041f6109f43660046133a5565b61305e565b348015610a04575f80fd5b504261041f565b348015610a16575f80fd5b5060085461046b906001600160a01b031681565b348015610a35575f80fd5b5060065461046b906001600160a01b031681565b348015610a54575f80fd5b5061041f610a633660046133a5565b613090565b610a70613121565b6001600160a01b03919091165f908152600f60205260409020805460ff1916911515919091179055565b610aa2613121565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b610acc613121565b601480546001600160a01b0319166001600160a01b0392909216919091179055565b610af6613121565b5f918252600c602052604090912060080180549115156101000261ff0019909216919091179055565b5f6013545f81118015610b33575060135481145b610b585760405162461bcd60e51b8152600401610b4f9061364d565b60405180910390fd5b601354610b658134611dbe565b5f828152600c602052604090206008015460ff161515600114610b9a5760405162461bcd60e51b8152600401610b4f90613679565b5f81118015610bca57505f828152600c602052604090206004810154600590910154610bc691906136b9565b8111155b610be65760405162461bcd60e51b8152600401610b4f906136cc565b610bee61317b565b6005545f90610bfd90806136f9565b600454610c08612023565b610c1290346136f9565b610c1c91906136f9565b610c269190613710565b6013545f908152600c60205260409020600681015460079091015491925090610c5090839061372f565b1115610c6e5760405162461bcd60e51b8152600401610b4f90613742565b335f9081526010602052604090205460ff1615610c9d5760405162461bcd60e51b8152600401610b4f90613788565b6013545f908152600b602052604090205460ff1615610cce5760405162461bcd60e51b8152600401610b4f906137b8565b6013545f908152600c602052604090206008015460ff161515600114610d065760405162461bcd60e51b8152600401610b4f906137e0565b335f9081526011602052604090205460ff16610d4957335f908152601160205260408120805460ff191660011790556007805491610d4383613817565b91905055505b5f610d566013548361305e565b335f908152600f602052604081205491925060ff90911615159003610dbe57601254811015610dbe5760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e7420616d6f756e742160601b6044820152606401610b4f565b6013545f908152600c602052604081206004018054839290610de190849061372f565b90915550506013545f908152600c602052604081206007018054849290610e0990849061372f565b925050819055508160025f828254610e21919061372f565b9091555050335f908152600e60209081526040808320601354845290915290206002015415610eb357335f908152600e60209081526040808320601354845290915281206002018054839290610e7890849061372f565b9091555050335f908152600e60209081526040808320601354845290915281208054849290610ea890849061372f565b90915550610f579050565b6040518060e001604052808381526020015f81526020018281526020015f81526020015f81526020015f81526020015f815250600e5f610ef03390565b6001600160a01b0316815260208082019290925260409081015f90812060135482528352819020835181559183015160018301558201516002820155606082015160038201556080820151600482015560a0820151600582015560c0909101516006909101555b600654610f6d906001600160a01b0316346131d2565b60135460408051838152346020820152428183015290515f929133917f4d8aead3491b7eba4b5c7a65fc17e493b9e63f9e433522fc5f6a85a168fc9d369181900360600190a4600195505050610fc260015f55565b50505090565b5f828152600c60205260408120600201548190610fe590846136f9565b905060145f9054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611037573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061105b919061382f565b61106690600a61392f565b61106e612023565b61107891906136f9565b60055461108590836136f9565b61108f9190613710565b949350505050565b335f9081526011602052604081205460ff166110c55760405162461bcd60e51b8152600401610b4f9061393d565b5f6110d03384611e05565b90505f81116111175760405162461bcd60e51b8152602060048201526013602482015272139bc818db185a5b58589b1948185b5bdd5b9d606a1b6044820152606401610b4f565b335f9081526010602052604090205460ff16156111465760405162461bcd60e51b8152600401610b4f90613788565b6014546001600160a01b031661119e5760405162461bcd60e51b815260206004820152601d60248201527f50726573616c6520746f6b656e2061646472657373206e6f74207365740000006044820152606401610b4f565b6014546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156111e4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611208919061396d565b8111156112615760405162461bcd60e51b815260206004820152602160248201527f4e6f7420656e6f75676820746f6b656e7320696e2074686520636f6e747261636044820152601d60fa1b6064820152608401610b4f565b5f838152600c602052604090206008015460ff6101009091041615156001146112c25760405162461bcd60e51b8152602060048201526013602482015272436c61696d206973206e6f7420656e61626c6560681b6044820152606401610b4f565b335f908152600e602090815260408083208684529091528120600501548103611481575f848152600d60205260409020600101546103e89061130490846136f9565b61130e9190613710565b5f858152600d60205260409020600301549091506103e89061133090846136f9565b61133a9190613710565b335f818152600e6020908152604080832089845290915280822060060193909355601454925163a9059cbb60e01b8152600481019290925260248201849052916001600160a01b03169063a9059cbb906044016020604051808303815f875af11580156113a9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113cd9190613984565b9050806113ec5760405162461bcd60e51b8152600401610b4f9061399f565b335f908152600e60209081526040808320888452909152812060020180548492906114189084906136b9565b9091555050335f908152600e602090815260408083208884529091528120600401805484929061144990849061372f565b9091555050335f908152600e60209081526040808320888452909152812060050180549161147683613817565b91905055505061196e565b335f908152600e6020908152604080832087845290915290206006810154600290910154111561170c575f848152600d60205260408120546114c390426136b9565b5f868152600d6020526040812060020154919250906114e29083613710565b5f878152600d602052604090206004015490915081111561151057505f858152600d60205260409020600401545b335f908152600e6020908152604080832089845290915281206006015461153790836136f9565b335f908152600e602090815260408083208b845290915290206003015490915061156190826136b9565b93505f84116115b25760405162461bcd60e51b815260206004820152601b60248201527f506c6561736520776169742074696c6c206e65787420636c61696d00000000006044820152606401610b4f565b60145460405163a9059cbb60e01b8152336004820152602481018690525f916001600160a01b03169063a9059cbb906044016020604051808303815f875af1158015611600573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116249190613984565b9050806116435760405162461bcd60e51b8152600401610b4f9061399f565b335f908152600e602090815260408083208b84529091528120600201805487929061166f9084906136b9565b9091555050335f908152600e602090815260408083208b8452909152812060030180548792906116a090849061372f565b9091555050335f908152600e602090815260408083208b8452909152812060040180548792906116d190849061372f565b9091555050335f908152600e602090815260408083208b845290915281206005018054916116fe83613817565b91905055505050505061196e565b5f848152600d602052604081205461172490426136b9565b5f868152600d6020526040812060020154919250906117439083613710565b5f878152600d602052604090206004015490915061176290600161372f565b81111561192c57335f908152600e602090815260408083208984529091529020600201549250826117d55760405162461bcd60e51b815260206004820152601b60248201527f506c6561736520776169742074696c6c206e65787420636c61696d00000000006044820152606401610b4f565b60145460405163a9059cbb60e01b8152336004820152602481018590525f916001600160a01b03169063a9059cbb906044016020604051808303815f875af1158015611823573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118479190613984565b9050806118665760405162461bcd60e51b8152600401610b4f9061399f565b335f908152600e602090815260408083208a8452909152812060020180548692906118929084906136b9565b9091555050335f908152600e602090815260408083208a8452909152812060040180548692906118c390849061372f565b9091555050335f908152600e602090815260408083208a8452909152812060030180548692906118f490849061372f565b9091555050335f908152600e602090815260408083208a8452909152812060050180549161192183613817565b91905055505061196b565b60405162461bcd60e51b81526020600482015260146024820152735761697420666f72206e65787420636c6169696d60601b6044820152606401610b4f565b50505b5060019392505050565b611980613121565b5f85116119bc5760405162461bcd60e51b815260206004820152600a6024820152695a65726f20707269636560b01b6044820152606401610b4f565b5f8311611a015760405162461bcd60e51b815260206004820152601360248201527216995c9bc81d1bdad95b9cc81d1bc81cd95b1b606a1b6044820152606401610b4f565b5f8211611a3e5760405162461bcd60e51b815260206004820152600b60248201526a05a65726f206861726361760ac1b6044820152606401610b4f565b5f958652600c6020526040909520600281019490945560038401929092556005830155600682015560080180549115156101000261ff0019909216919091179055565b611a89613121565b5f858152600d60205260409020848155600181018490556002810183905560030181905580611ab98460646136b9565b611ac39190613710565b5f958652600d60205260409095206004019490945550505050565b805f81118015611aef575060135481145b611b0b5760405162461bcd60e51b8152600401610b4f9061364d565b611b13613121565b5f828152600b602052604090205460ff1615611b625760405162461bcd60e51b815260206004820152600e60248201526d105b1c9958591e481c185d5cd95960921b6044820152606401610b4f565b5f828152600b602052604090819020805460ff191660011790555182907f927e6cd2dce24f32508868820cdc35f09d9de0f4b44e945114110125196fba9f90611bae9042815260200190565b60405180910390a25050565b611bc2613121565b600654611bd8906001600160a01b0316826131d2565b50565b611be3613121565b60015b600354811015611c7a576001600160a01b0383165f9081526011602052604090205460ff16611c275760405162461bcd60e51b8152600401610b4f9061393d565b6001600160a01b038381165f908152600e6020818152604080842086855280835281852060029081018054978a168752948452828620888752845291852090910194909455929092529055600101611be6565b506001600160a01b039182165f90815260116020526040808220805460ff199081169091559290931681529190912080549091166001179055565b611cbd613121565b60065460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303815f875af1158015611d0d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d319190613984565b505050565b611d3e613121565b6001600160a01b038116611d895760405162461bcd60e51b8152602060048201526012602482015271496e76616c696420706172616d657465727360701b6044820152606401610b4f565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b611db3613121565b611dbc5f6132a4565b565b5f80600554600554611dd091906136f9565b600454611ddb612023565b611de590866136f9565b611def91906136f9565b611df99190613710565b905061108f848261305e565b6001600160a01b0382165f908152600e602090815260408083208484528252808320815160e0810183528154815260018201549381019390935260028101549183018290526003810154606084015260048101546080840152600581015460a08401526006015460c0830152611eb05760405162461bcd60e51b815260206004820152601060248201526f4e6f7468696e6720746f20636c61696d60801b6044820152606401610b4f565b604081015180611ef45760405162461bcd60e51b815260206004820152600f60248201526e105b1c9958591e4818db185a5b5959608a1b6044820152606401610b4f565b9150505b92915050565b611f06613121565b5f818152600c6020526040902060050154611f595760405162461bcd60e51b8152602060048201526013602482015272141c995cd85b1948191bdb89dd08195e1a5cdd606a1b6044820152606401610b4f565b60135415611f8b57601380545f908152600c6020526040808220426001909101559154815220600801805460ff191690555b5f818152600c60205260409020428155600801805460ff19166001179055601355565b611fb6613121565b6001600160a01b0381166120015760405162461bcd60e51b81526020600482015260126024820152715a65726f20746f6b656e206164647265737360701b6044820152606401610b4f565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b5f80600a5f9054906101000a90046001600160a01b03166001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015612075573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061209991906139e7565b505050915050806402540be400611ef89190613a33565b5f6013545f811180156120c4575060135481145b6120e05760405162461bcd60e51b8152600401610b4f9061364d565b6013546120ed818561305e565b5f828152600c602052604090206008015460ff1615156001146121225760405162461bcd60e51b8152600401610b4f90613679565b5f8111801561215257505f828152600c60205260409020600481015460059091015461214e91906136b9565b8111155b61216e5760405162461bcd60e51b8152600401610b4f906136cc565b61217661317b565b6013545f908152600b602052604090205460ff16156121a75760405162461bcd60e51b8152600401610b4f906137b8565b6013545f908152600c602052604090206008015460ff1615156001146121df5760405162461bcd60e51b8152600401610b4f906137e0565b335f9081526010602052604090205460ff161561220e5760405162461bcd60e51b8152600401610b4f90613788565b6013545f908152600c60205260409020600681015460079091015461223490879061372f565b11156122525760405162461bcd60e51b8152600401610b4f90613742565b335f9081526011602052604090205460ff1661229557335f908152601160205260408120805460ff19166001179055600780549161228f83613817565b91905055505b5f6122a26013548761305e565b905080600c5f60135481526020019081526020015f206004015f8282546122c9919061372f565b90915550506013545f908152600c6020526040812060070180548892906122f190849061372f565b925050819055508560025f828254612309919061372f565b9091555050335f908152600f602052604081205460ff1615159003612371576012548110156123715760405162461bcd60e51b815260206004820152601460248201527313195cdcc81d1a185b881b5a5b88185b5bdd5b9d60621b6044820152606401610b4f565b335f908152600e602090815260408083206013548452909152902060020154156123fe57335f908152600e602090815260408083206013548452909152812060020180548392906123c390849061372f565b9091555050335f908152600e602090815260408083206013548452909152812080548892906123f390849061372f565b909155506124a29050565b6040518060e001604052808781526020015f81526020018281526020015f81526020015f81526020015f81526020015f815250600e5f61243b3390565b6001600160a01b0316815260208082019290925260409081015f90812060135482528352819020835181559183015160018301558201516002820155606082015160038201556080820151600482015560a0820151600582015560c0909101516006909101555b6008545f906001600160a01b031663dd62ed3e336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604401602060405180830381865afa1580156124fe573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612522919061396d565b9050808711156125445760405162461bcd60e51b8152600401610b4f90613a62565b6008545f906001600160a01b0316335b6006546040516001600160a01b03928316602482015291166044820152606481018a905260840160408051601f198184030181529181526020820180516001600160e01b03166323b872dd60e01b179052516125b09190613aa3565b5f604051808303815f865af19150503d805f81146125e9576040519150601f19603f3d011682016040523d82523d5f602084013e6125ee565b606091505b50509050806126365760405162461bcd60e51b8152602060048201526014602482015273151bdad95b881c185e5b595b9d0819985a5b195960621b6044820152606401610b4f565b60085460135460408051868152602081018c9052428183015290516001600160a01b039093169233917f4d8aead3491b7eba4b5c7a65fc17e493b9e63f9e433522fc5f6a85a168fc9d36919081900360600190a46001965050505061269a60015f55565b505050919050565b5f6013545f811180156126b6575060135481145b6126d25760405162461bcd60e51b8152600401610b4f9061364d565b6013546126df818561305e565b5f828152600c602052604090206008015460ff1615156001146127145760405162461bcd60e51b8152600401610b4f90613679565b5f8111801561274457505f828152600c60205260409020600481015460059091015461274091906136b9565b8111155b6127605760405162461bcd60e51b8152600401610b4f906136cc565b61276861317b565b6013545f908152600b602052604090205460ff16156127995760405162461bcd60e51b8152600401610b4f906137b8565b6013545f908152600c602052604090206008015460ff1615156001146127d15760405162461bcd60e51b8152600401610b4f906137e0565b6013545f908152600c6020526040902060068101546007909101546127f790879061372f565b11156128155760405162461bcd60e51b8152600401610b4f90613742565b335f9081526010602052604090205460ff16156128445760405162461bcd60e51b8152600401610b4f90613788565b335f9081526011602052604090205460ff1661288757335f908152601160205260408120805460ff19166001179055600780549161288183613817565b91905055505b5f6128946013548761305e565b905080600c5f60135481526020019081526020015f206004015f8282546128bb919061372f565b90915550506013545f908152600c6020526040812060070180548892906128e390849061372f565b925050819055508560025f8282546128fb919061372f565b9091555050335f908152600f602052604081205460ff1615159003612963576012548110156129635760405162461bcd60e51b815260206004820152601460248201527313195cdcc81d1a185b881b5a5b88185b5bdd5b9d60621b6044820152606401610b4f565b335f908152600e602090815260408083206013548452909152902060020154156129f057335f908152600e602090815260408083206013548452909152812060020180548392906129b590849061372f565b9091555050335f908152600e602090815260408083206013548452909152812080548892906129e590849061372f565b90915550612ac19050565b6040518060e001604052808781526020015f81526020018281526020015f81526020015f81526020015f81526020015f815250600e5f612a2d3390565b6001600160a01b0316815260208082019290925260409081015f9081206013548252835281812084518155848401516001820155848301516002820155606085015160038201556080850151600482015560a0850151600582015560c090940151600690940193909355338352601190915290205460ff16612ac15760405162461bcd60e51b8152600401610b4f9061393d565b6008545f906001600160a01b031663dd62ed3e336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604401602060405180830381865afa158015612b1d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b41919061396d565b905080871115612b635760405162461bcd60e51b8152600401610b4f90613a62565b6009545f906001600160a01b031633612554565b612b7f613121565b5f5b8551811015612cc9576040518060a00160405280868381518110612ba757612ba7613acf565b60200260200101518152602001858381518110612bc657612bc6613acf565b60200260200101518152602001848381518110612be557612be5613acf565b60200260200101518152602001838381518110612c0457612c04613acf565b60200260200101518152602001838381518110612c2357612c23613acf565b6020026020010151868481518110612c3d57612c3d613acf565b60200260200101516103e8612c5291906136b9565b612c5c9190613710565b815250600d5f888481518110612c7457612c74613acf565b602002602001015181526020019081526020015f205f820151815f0155602082015181600101556040820151816002015560608201518160030155608082015181600401559050508080600101915050612b81565b505050505050565b612cd9613121565b601255565b805f81118015612cef575060135481145b612d0b5760405162461bcd60e51b8152600401610b4f9061364d565b612d13613121565b5f828152600b602052604090205460ff16612d5d5760405162461bcd60e51b815260206004820152600a602482015269139bdd081c185d5cd95960b21b6044820152606401610b4f565b5f828152600b602052604090819020805460ff191690555182907ff608654a6d8e1785594639dd55babb61d7ae157382015f904a24224e50333b1d90611bae9042815260200190565b612dae613121565b5f8411612dea5760405162461bcd60e51b815260206004820152600a6024820152695a65726f20707269636560b01b6044820152606401610b4f565b5f8211612e2f5760405162461bcd60e51b815260206004820152601360248201527216995c9bc81d1bdad95b9cc81d1bc81cd95b1b606a1b6044820152606401610b4f565b60038054905f612e3e83613817565b909155505060408051610140810182525f808252602080830182815283850189815260608086018a81526080870186815260a088018b815260c089018b815260e08a01898152610100808c018b81526101208d018c8152600380548e52600c8d528f8e209e518f559a5160018f0155985160028e015595518c8a0155935160048c0155915160058b01555160068a0155516007890155905160089097018054935161ffff1990941697151561ff001916979097179215150291909117909455548451878152918201839052938101919091527f6a00651728a92841411081673eaa4eddbed06d102a590e050c22def40d4dd0b8910160405180910390a250505050565b612f49613121565b6001600160a01b03919091165f908152601060205260409020805460ff1916911515919091179055565b612f7b613121565b6001600160a01b038116612fc65760405162461bcd60e51b81526020600482015260126024820152715a65726f20746f6b656e206164647265737360701b6044820152606401610b4f565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b612ff0613121565b6001600160a01b0381166130555760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b4f565b611bd8816132a4565b6004545f838152600c602052604081206002015490919061307f90846136f9565b6130899190613710565b9392505050565b6014546040805163313ce56760e01b815290515f926001600160a01b03169163313ce5679160048083019260209291908290030181865afa1580156130d7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130fb919061382f565b61310690600a61392f565b5f848152600c602052604090206002015461307f90846136f9565b6001546001600160a01b03163314611dbc5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b4f565b60025f54036131cc5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610b4f565b60025f55565b804710156132105760405162461bcd60e51b815260206004820152600b60248201526a4c6f772062616c616e636560a81b6044820152606401610b4f565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114613259576040519150601f19603f3d011682016040523d82523d5f602084013e61325e565b606091505b5050905080611d315760405162461bcd60e51b81526020600482015260126024820152711155120814185e5b595b9d0819985a5b195960721b6044820152606401610b4f565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b80356001600160a01b038116811461330b575f80fd5b919050565b5f60208284031215613320575f80fd5b613089826132f5565b5f60208284031215613339575f80fd5b5035919050565b8015158114611bd8575f80fd5b5f806040838503121561335e575f80fd5b613367836132f5565b9150602083013561337781613340565b809150509250929050565b5f8060408385031215613393575f80fd5b82359150602083013561337781613340565b5f80604083850312156133b6575f80fd5b50508035926020909101359150565b5f805f805f8060c087890312156133da575f80fd5b863595506020870135945060408701359350606087013592506080870135915060a087013561340881613340565b809150509295509295509295565b5f805f805f60a0868803121561342a575f80fd5b505083359560208501359550604085013594606081013594506080013592509050565b5f806040838503121561345e575f80fd5b613467836132f5565b9150613475602084016132f5565b90509250929050565b5f806040838503121561348f575f80fd5b613498836132f5565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f8301126134c9575f80fd5b8135602067ffffffffffffffff808311156134e6576134e66134a6565b8260051b604051601f19603f8301168101818110848211171561350b5761350b6134a6565b604052938452602081870181019490810192508785111561352a575f80fd5b6020870191505b8482101561354a57813583529183019190830190613531565b979650505050505050565b5f805f805f60a08688031215613569575f80fd5b853567ffffffffffffffff80821115613580575f80fd5b61358c89838a016134ba565b965060208801359150808211156135a1575f80fd5b6135ad89838a016134ba565b955060408801359150808211156135c2575f80fd5b6135ce89838a016134ba565b945060608801359150808211156135e3575f80fd5b6135ef89838a016134ba565b93506080880135915080821115613604575f80fd5b50613611888289016134ba565b9150509295509295909350565b5f805f8060808587031215613631575f80fd5b5050823594602084013594506040840135936060013592509050565b602080825260129082015271125b9d985b1a59081c1c995cd85b19481a5960721b604082015260600190565b60208082526012908201527170726553416c65206e6f742041637469766560701b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b81810381811115611ef857611ef86136a5565b602080825260139082015272125b9d985b1a59081cd85b1948185b5bdd5b9d606a1b604082015260600190565b8082028115828204841417611ef857611ef86136a5565b5f8261372a57634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115611ef857611ef86136a5565b60208082526026908201527f416d6f756e742073686f756c64206265206c657373207468616e206c6566744860408201526506172646361760d41b606082015260800190565b6020808252601690820152751058d8dbdd5b9d081a5cc8189b1858dad31a5cdd195960521b604082015260600190565b6020808252600e908201526d141c995cd85b19481c185d5cd95960921b604082015260600190565b60208082526019908201527f50726573616c65206973206e6f74206163746976652079657400000000000000604082015260600190565b5f60018201613828576138286136a5565b5060010190565b5f6020828403121561383f575f80fd5b815160ff81168114613089575f80fd5b600181815b8085111561388957815f190482111561386f5761386f6136a5565b8085161561387c57918102915b93841c9390800290613854565b509250929050565b5f8261389f57506001611ef8565b816138ab57505f611ef8565b81600181146138c157600281146138cb576138e7565b6001915050611ef8565b60ff8411156138dc576138dc6136a5565b50506001821b611ef8565b5060208310610133831016604e8410600b841016171561390a575081810a611ef8565b613914838361384f565b805f1904821115613927576139276136a5565b029392505050565b5f61308960ff841683613891565b602080825260169082015275155cd95c881b9bdd0818481c185c9d1a58da5c185b9d60521b604082015260600190565b5f6020828403121561397d575f80fd5b5051919050565b5f60208284031215613994575f80fd5b815161308981613340565b602080825260159082015274151bdad95b881d1c985b9cd9995c8819985a5b1959605a1b604082015260600190565b805169ffffffffffffffffffff8116811461330b575f80fd5b5f805f805f60a086880312156139fb575f80fd5b613a04866139ce565b9450602086015193506040860151925060608601519150613a27608087016139ce565b90509295509295909350565b8082025f8212600160ff1b84141615613a4e57613a4e6136a5565b8181058314821517611ef857611ef86136a5565b60208082526021908201527f4d616b65207375726520746f2061646420656e6f75676820616c6c6f77616e636040820152606560f81b606082015260800190565b5f82515f5b81811015613ac25760208186018101518583015201613aa8565b505f920191825250919050565b634e487b7160e01b5f52603260045260245ffdfea264697066735822122065bb570f95c7f827b3fa12122705c24aaef226bb28aa0740f66923e487e2a41264736f6c634300081600330000000000000000000000005f4ec3df9cbd43714fe2740f5e3616155c5b8419000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000026ebb8213fb8d66156f1af8908d43f7e3e367c1d0000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x6080604052600436106102d7575f3560e01c80637cde403d11610189578063cd1704a8116100d8578063ecf5f43711610092578063f427fdf91161006d578063f427fdf9146109f9578063f597573f14610a0b578063fb4aa0a114610a2a578063fe9f676e14610a49575f80fd5b8063ecf5f4371461099c578063f2fde38b146109bb578063f309fed9146109da575f80fd5b8063cd1704a81461084d578063d01608c11461086c578063d099850a1461088b578063e0cef1b0146108aa578063e18e84f9146108c9578063e6ab1434146108de575f80fd5b8063a05d03fd11610143578063aeccf7351161011e578063aeccf73514610749578063b04c734614610768578063b36d691914610800578063c8f74e111461082e575f80fd5b8063a05d03fd14610700578063a7c6016014610715578063aa1c3aa514610734575f80fd5b80637cde403d1461065d578063833cde521461067c5780638561c3151461069b5780638d79e66d146106ba5780638da5cb5b146106cf5780638e15f473146106ec575f80fd5b80632ffac82c1161024557806358f98585116101ff5780636fb4adff116101da5780636fb4adff146105ec578063715018a61461060b578063718a19621461061f57806379b8d9381461063e575f80fd5b806358f98585146105995780635dfd59f6146105ae578063680f2e4f146105cd575f80fd5b80632ffac82c146104a2578063397643631461051257806348bf4fcf146105275780634a3bf6c91461053c5780634a6413f71461055b578063582b57231461057a575f80fd5b806311b5444f1161029657806311b5444f146103ca5780631ed0c954146103d25780632127fe041461040057806323b221a01461042d57806325312e541461044c5780632fb2b44b14610483575f80fd5b806213eb4b146102db578062dde10e1461031e57806303fcd9ac1461034c5780630d07cc301461036d5780630ec809a81461038c5780630fbfcf37146103ab575b5f80fd5b3480156102e6575f80fd5b506103096102f5366004613310565b60116020525f908152604090205460ff1681565b60405190151581526020015b60405180910390f35b348015610329575f80fd5b50610309610338366004613329565b600b6020525f908152604090205460ff1681565b348015610357575f80fd5b5061036b61036636600461334d565b610a68565b005b348015610378575f80fd5b5061036b610387366004613310565b610a9a565b348015610397575f80fd5b5061036b6103a6366004613310565b610ac4565b3480156103b6575f80fd5b5061036b6103c5366004613382565b610aee565b610309610b1f565b3480156103dd575f80fd5b506103096103ec366004613310565b600f6020525f908152604090205460ff1681565b34801561040b575f80fd5b5061041f61041a3660046133a5565b610fc8565b604051908152602001610315565b348015610438575f80fd5b50610309610447366004613329565b611097565b348015610457575f80fd5b5060095461046b906001600160a01b031681565b6040516001600160a01b039091168152602001610315565b34801561048e575f80fd5b5061036b61049d3660046133c5565b611978565b3480156104ad575f80fd5b506104ea6104bc366004613329565b600d6020525f9081526040902080546001820154600283015460038401546004909401549293919290919085565b604080519586526020860194909452928401919091526060830152608082015260a001610315565b34801561051d575f80fd5b5061041f60055481565b348015610532575f80fd5b5061041f60045481565b348015610547575f80fd5b5061036b610556366004613416565b611a81565b348015610566575f80fd5b5061036b610575366004613329565b611ade565b348015610585575f80fd5b5061036b610594366004613329565b611bba565b3480156105a4575f80fd5b5061041f60025481565b3480156105b9575f80fd5b5061036b6105c836600461344d565b611bdb565b3480156105d8575f80fd5b5061036b6105e736600461347e565b611cb5565b3480156105f7575f80fd5b5061036b610606366004613310565b611d36565b348015610616575f80fd5b5061036b611dab565b34801561062a575f80fd5b5061041f6106393660046133a5565b611dbe565b348015610649575f80fd5b5061041f61065836600461347e565b611e05565b348015610668575f80fd5b5061036b610677366004613329565b611efe565b348015610687575f80fd5b5060145461046b906001600160a01b031681565b3480156106a6575f80fd5b5061036b6106b5366004613310565b611fae565b3480156106c5575f80fd5b5061041f60125481565b3480156106da575f80fd5b506001546001600160a01b031661046b565b3480156106f7575f80fd5b5061041f612023565b34801561070b575f80fd5b5061041f60135481565b348015610720575f80fd5b5061030961072f366004613329565b6120b0565b34801561073f575f80fd5b5061041f60075481565b348015610754575f80fd5b50610309610763366004613329565b6126a2565b348015610773575f80fd5b506107cb61078236600461347e565b600e602052815f5260405f20602052805f5260405f205f9150915050805f0154908060010154908060020154908060030154908060040154908060050154908060060154905087565b604080519788526020880196909652948601939093526060850191909152608084015260a083015260c082015260e001610315565b34801561080b575f80fd5b5061030961081a366004613310565b60106020525f908152604090205460ff1681565b348015610839575f80fd5b5061036b610848366004613555565b612b77565b348015610858575f80fd5b5061036b610867366004613329565b612cd1565b348015610877575f80fd5b5061036b610886366004613329565b612cde565b348015610896575f80fd5b5061036b6108a536600461361e565b612da6565b3480156108b5575f80fd5b5061036b6108c436600461334d565b612f41565b3480156108d4575f80fd5b5061041f60035481565b3480156108e9575f80fd5b5061094e6108f8366004613329565b600c6020525f908152604090208054600182015460028301546003840154600485015460058601546006870154600788015460089098015496979596949593949293919290919060ff808216916101009004168a565b604080519a8b5260208b0199909952978901969096526060880194909452608087019290925260a086015260c085015260e08401521515610100830152151561012082015261014001610315565b3480156109a7575f80fd5b5061036b6109b6366004613310565b612f73565b3480156109c6575f80fd5b5061036b6109d5366004613310565b612fe8565b3480156109e5575f80fd5b5061041f6109f43660046133a5565b61305e565b348015610a04575f80fd5b504261041f565b348015610a16575f80fd5b5060085461046b906001600160a01b031681565b348015610a35575f80fd5b5060065461046b906001600160a01b031681565b348015610a54575f80fd5b5061041f610a633660046133a5565b613090565b610a70613121565b6001600160a01b03919091165f908152600f60205260409020805460ff1916911515919091179055565b610aa2613121565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b610acc613121565b601480546001600160a01b0319166001600160a01b0392909216919091179055565b610af6613121565b5f918252600c602052604090912060080180549115156101000261ff0019909216919091179055565b5f6013545f81118015610b33575060135481145b610b585760405162461bcd60e51b8152600401610b4f9061364d565b60405180910390fd5b601354610b658134611dbe565b5f828152600c602052604090206008015460ff161515600114610b9a5760405162461bcd60e51b8152600401610b4f90613679565b5f81118015610bca57505f828152600c602052604090206004810154600590910154610bc691906136b9565b8111155b610be65760405162461bcd60e51b8152600401610b4f906136cc565b610bee61317b565b6005545f90610bfd90806136f9565b600454610c08612023565b610c1290346136f9565b610c1c91906136f9565b610c269190613710565b6013545f908152600c60205260409020600681015460079091015491925090610c5090839061372f565b1115610c6e5760405162461bcd60e51b8152600401610b4f90613742565b335f9081526010602052604090205460ff1615610c9d5760405162461bcd60e51b8152600401610b4f90613788565b6013545f908152600b602052604090205460ff1615610cce5760405162461bcd60e51b8152600401610b4f906137b8565b6013545f908152600c602052604090206008015460ff161515600114610d065760405162461bcd60e51b8152600401610b4f906137e0565b335f9081526011602052604090205460ff16610d4957335f908152601160205260408120805460ff191660011790556007805491610d4383613817565b91905055505b5f610d566013548361305e565b335f908152600f602052604081205491925060ff90911615159003610dbe57601254811015610dbe5760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e7420616d6f756e742160601b6044820152606401610b4f565b6013545f908152600c602052604081206004018054839290610de190849061372f565b90915550506013545f908152600c602052604081206007018054849290610e0990849061372f565b925050819055508160025f828254610e21919061372f565b9091555050335f908152600e60209081526040808320601354845290915290206002015415610eb357335f908152600e60209081526040808320601354845290915281206002018054839290610e7890849061372f565b9091555050335f908152600e60209081526040808320601354845290915281208054849290610ea890849061372f565b90915550610f579050565b6040518060e001604052808381526020015f81526020018281526020015f81526020015f81526020015f81526020015f815250600e5f610ef03390565b6001600160a01b0316815260208082019290925260409081015f90812060135482528352819020835181559183015160018301558201516002820155606082015160038201556080820151600482015560a0820151600582015560c0909101516006909101555b600654610f6d906001600160a01b0316346131d2565b60135460408051838152346020820152428183015290515f929133917f4d8aead3491b7eba4b5c7a65fc17e493b9e63f9e433522fc5f6a85a168fc9d369181900360600190a4600195505050610fc260015f55565b50505090565b5f828152600c60205260408120600201548190610fe590846136f9565b905060145f9054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611037573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061105b919061382f565b61106690600a61392f565b61106e612023565b61107891906136f9565b60055461108590836136f9565b61108f9190613710565b949350505050565b335f9081526011602052604081205460ff166110c55760405162461bcd60e51b8152600401610b4f9061393d565b5f6110d03384611e05565b90505f81116111175760405162461bcd60e51b8152602060048201526013602482015272139bc818db185a5b58589b1948185b5bdd5b9d606a1b6044820152606401610b4f565b335f9081526010602052604090205460ff16156111465760405162461bcd60e51b8152600401610b4f90613788565b6014546001600160a01b031661119e5760405162461bcd60e51b815260206004820152601d60248201527f50726573616c6520746f6b656e2061646472657373206e6f74207365740000006044820152606401610b4f565b6014546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156111e4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611208919061396d565b8111156112615760405162461bcd60e51b815260206004820152602160248201527f4e6f7420656e6f75676820746f6b656e7320696e2074686520636f6e747261636044820152601d60fa1b6064820152608401610b4f565b5f838152600c602052604090206008015460ff6101009091041615156001146112c25760405162461bcd60e51b8152602060048201526013602482015272436c61696d206973206e6f7420656e61626c6560681b6044820152606401610b4f565b335f908152600e602090815260408083208684529091528120600501548103611481575f848152600d60205260409020600101546103e89061130490846136f9565b61130e9190613710565b5f858152600d60205260409020600301549091506103e89061133090846136f9565b61133a9190613710565b335f818152600e6020908152604080832089845290915280822060060193909355601454925163a9059cbb60e01b8152600481019290925260248201849052916001600160a01b03169063a9059cbb906044016020604051808303815f875af11580156113a9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113cd9190613984565b9050806113ec5760405162461bcd60e51b8152600401610b4f9061399f565b335f908152600e60209081526040808320888452909152812060020180548492906114189084906136b9565b9091555050335f908152600e602090815260408083208884529091528120600401805484929061144990849061372f565b9091555050335f908152600e60209081526040808320888452909152812060050180549161147683613817565b91905055505061196e565b335f908152600e6020908152604080832087845290915290206006810154600290910154111561170c575f848152600d60205260408120546114c390426136b9565b5f868152600d6020526040812060020154919250906114e29083613710565b5f878152600d602052604090206004015490915081111561151057505f858152600d60205260409020600401545b335f908152600e6020908152604080832089845290915281206006015461153790836136f9565b335f908152600e602090815260408083208b845290915290206003015490915061156190826136b9565b93505f84116115b25760405162461bcd60e51b815260206004820152601b60248201527f506c6561736520776169742074696c6c206e65787420636c61696d00000000006044820152606401610b4f565b60145460405163a9059cbb60e01b8152336004820152602481018690525f916001600160a01b03169063a9059cbb906044016020604051808303815f875af1158015611600573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116249190613984565b9050806116435760405162461bcd60e51b8152600401610b4f9061399f565b335f908152600e602090815260408083208b84529091528120600201805487929061166f9084906136b9565b9091555050335f908152600e602090815260408083208b8452909152812060030180548792906116a090849061372f565b9091555050335f908152600e602090815260408083208b8452909152812060040180548792906116d190849061372f565b9091555050335f908152600e602090815260408083208b845290915281206005018054916116fe83613817565b91905055505050505061196e565b5f848152600d602052604081205461172490426136b9565b5f868152600d6020526040812060020154919250906117439083613710565b5f878152600d602052604090206004015490915061176290600161372f565b81111561192c57335f908152600e602090815260408083208984529091529020600201549250826117d55760405162461bcd60e51b815260206004820152601b60248201527f506c6561736520776169742074696c6c206e65787420636c61696d00000000006044820152606401610b4f565b60145460405163a9059cbb60e01b8152336004820152602481018590525f916001600160a01b03169063a9059cbb906044016020604051808303815f875af1158015611823573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118479190613984565b9050806118665760405162461bcd60e51b8152600401610b4f9061399f565b335f908152600e602090815260408083208a8452909152812060020180548692906118929084906136b9565b9091555050335f908152600e602090815260408083208a8452909152812060040180548692906118c390849061372f565b9091555050335f908152600e602090815260408083208a8452909152812060030180548692906118f490849061372f565b9091555050335f908152600e602090815260408083208a8452909152812060050180549161192183613817565b91905055505061196b565b60405162461bcd60e51b81526020600482015260146024820152735761697420666f72206e65787420636c6169696d60601b6044820152606401610b4f565b50505b5060019392505050565b611980613121565b5f85116119bc5760405162461bcd60e51b815260206004820152600a6024820152695a65726f20707269636560b01b6044820152606401610b4f565b5f8311611a015760405162461bcd60e51b815260206004820152601360248201527216995c9bc81d1bdad95b9cc81d1bc81cd95b1b606a1b6044820152606401610b4f565b5f8211611a3e5760405162461bcd60e51b815260206004820152600b60248201526a05a65726f206861726361760ac1b6044820152606401610b4f565b5f958652600c6020526040909520600281019490945560038401929092556005830155600682015560080180549115156101000261ff0019909216919091179055565b611a89613121565b5f858152600d60205260409020848155600181018490556002810183905560030181905580611ab98460646136b9565b611ac39190613710565b5f958652600d60205260409095206004019490945550505050565b805f81118015611aef575060135481145b611b0b5760405162461bcd60e51b8152600401610b4f9061364d565b611b13613121565b5f828152600b602052604090205460ff1615611b625760405162461bcd60e51b815260206004820152600e60248201526d105b1c9958591e481c185d5cd95960921b6044820152606401610b4f565b5f828152600b602052604090819020805460ff191660011790555182907f927e6cd2dce24f32508868820cdc35f09d9de0f4b44e945114110125196fba9f90611bae9042815260200190565b60405180910390a25050565b611bc2613121565b600654611bd8906001600160a01b0316826131d2565b50565b611be3613121565b60015b600354811015611c7a576001600160a01b0383165f9081526011602052604090205460ff16611c275760405162461bcd60e51b8152600401610b4f9061393d565b6001600160a01b038381165f908152600e6020818152604080842086855280835281852060029081018054978a168752948452828620888752845291852090910194909455929092529055600101611be6565b506001600160a01b039182165f90815260116020526040808220805460ff199081169091559290931681529190912080549091166001179055565b611cbd613121565b60065460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303815f875af1158015611d0d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d319190613984565b505050565b611d3e613121565b6001600160a01b038116611d895760405162461bcd60e51b8152602060048201526012602482015271496e76616c696420706172616d657465727360701b6044820152606401610b4f565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b611db3613121565b611dbc5f6132a4565b565b5f80600554600554611dd091906136f9565b600454611ddb612023565b611de590866136f9565b611def91906136f9565b611df99190613710565b905061108f848261305e565b6001600160a01b0382165f908152600e602090815260408083208484528252808320815160e0810183528154815260018201549381019390935260028101549183018290526003810154606084015260048101546080840152600581015460a08401526006015460c0830152611eb05760405162461bcd60e51b815260206004820152601060248201526f4e6f7468696e6720746f20636c61696d60801b6044820152606401610b4f565b604081015180611ef45760405162461bcd60e51b815260206004820152600f60248201526e105b1c9958591e4818db185a5b5959608a1b6044820152606401610b4f565b9150505b92915050565b611f06613121565b5f818152600c6020526040902060050154611f595760405162461bcd60e51b8152602060048201526013602482015272141c995cd85b1948191bdb89dd08195e1a5cdd606a1b6044820152606401610b4f565b60135415611f8b57601380545f908152600c6020526040808220426001909101559154815220600801805460ff191690555b5f818152600c60205260409020428155600801805460ff19166001179055601355565b611fb6613121565b6001600160a01b0381166120015760405162461bcd60e51b81526020600482015260126024820152715a65726f20746f6b656e206164647265737360701b6044820152606401610b4f565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b5f80600a5f9054906101000a90046001600160a01b03166001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015612075573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061209991906139e7565b505050915050806402540be400611ef89190613a33565b5f6013545f811180156120c4575060135481145b6120e05760405162461bcd60e51b8152600401610b4f9061364d565b6013546120ed818561305e565b5f828152600c602052604090206008015460ff1615156001146121225760405162461bcd60e51b8152600401610b4f90613679565b5f8111801561215257505f828152600c60205260409020600481015460059091015461214e91906136b9565b8111155b61216e5760405162461bcd60e51b8152600401610b4f906136cc565b61217661317b565b6013545f908152600b602052604090205460ff16156121a75760405162461bcd60e51b8152600401610b4f906137b8565b6013545f908152600c602052604090206008015460ff1615156001146121df5760405162461bcd60e51b8152600401610b4f906137e0565b335f9081526010602052604090205460ff161561220e5760405162461bcd60e51b8152600401610b4f90613788565b6013545f908152600c60205260409020600681015460079091015461223490879061372f565b11156122525760405162461bcd60e51b8152600401610b4f90613742565b335f9081526011602052604090205460ff1661229557335f908152601160205260408120805460ff19166001179055600780549161228f83613817565b91905055505b5f6122a26013548761305e565b905080600c5f60135481526020019081526020015f206004015f8282546122c9919061372f565b90915550506013545f908152600c6020526040812060070180548892906122f190849061372f565b925050819055508560025f828254612309919061372f565b9091555050335f908152600f602052604081205460ff1615159003612371576012548110156123715760405162461bcd60e51b815260206004820152601460248201527313195cdcc81d1a185b881b5a5b88185b5bdd5b9d60621b6044820152606401610b4f565b335f908152600e602090815260408083206013548452909152902060020154156123fe57335f908152600e602090815260408083206013548452909152812060020180548392906123c390849061372f565b9091555050335f908152600e602090815260408083206013548452909152812080548892906123f390849061372f565b909155506124a29050565b6040518060e001604052808781526020015f81526020018281526020015f81526020015f81526020015f81526020015f815250600e5f61243b3390565b6001600160a01b0316815260208082019290925260409081015f90812060135482528352819020835181559183015160018301558201516002820155606082015160038201556080820151600482015560a0820151600582015560c0909101516006909101555b6008545f906001600160a01b031663dd62ed3e336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604401602060405180830381865afa1580156124fe573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612522919061396d565b9050808711156125445760405162461bcd60e51b8152600401610b4f90613a62565b6008545f906001600160a01b0316335b6006546040516001600160a01b03928316602482015291166044820152606481018a905260840160408051601f198184030181529181526020820180516001600160e01b03166323b872dd60e01b179052516125b09190613aa3565b5f604051808303815f865af19150503d805f81146125e9576040519150601f19603f3d011682016040523d82523d5f602084013e6125ee565b606091505b50509050806126365760405162461bcd60e51b8152602060048201526014602482015273151bdad95b881c185e5b595b9d0819985a5b195960621b6044820152606401610b4f565b60085460135460408051868152602081018c9052428183015290516001600160a01b039093169233917f4d8aead3491b7eba4b5c7a65fc17e493b9e63f9e433522fc5f6a85a168fc9d36919081900360600190a46001965050505061269a60015f55565b505050919050565b5f6013545f811180156126b6575060135481145b6126d25760405162461bcd60e51b8152600401610b4f9061364d565b6013546126df818561305e565b5f828152600c602052604090206008015460ff1615156001146127145760405162461bcd60e51b8152600401610b4f90613679565b5f8111801561274457505f828152600c60205260409020600481015460059091015461274091906136b9565b8111155b6127605760405162461bcd60e51b8152600401610b4f906136cc565b61276861317b565b6013545f908152600b602052604090205460ff16156127995760405162461bcd60e51b8152600401610b4f906137b8565b6013545f908152600c602052604090206008015460ff1615156001146127d15760405162461bcd60e51b8152600401610b4f906137e0565b6013545f908152600c6020526040902060068101546007909101546127f790879061372f565b11156128155760405162461bcd60e51b8152600401610b4f90613742565b335f9081526010602052604090205460ff16156128445760405162461bcd60e51b8152600401610b4f90613788565b335f9081526011602052604090205460ff1661288757335f908152601160205260408120805460ff19166001179055600780549161288183613817565b91905055505b5f6128946013548761305e565b905080600c5f60135481526020019081526020015f206004015f8282546128bb919061372f565b90915550506013545f908152600c6020526040812060070180548892906128e390849061372f565b925050819055508560025f8282546128fb919061372f565b9091555050335f908152600f602052604081205460ff1615159003612963576012548110156129635760405162461bcd60e51b815260206004820152601460248201527313195cdcc81d1a185b881b5a5b88185b5bdd5b9d60621b6044820152606401610b4f565b335f908152600e602090815260408083206013548452909152902060020154156129f057335f908152600e602090815260408083206013548452909152812060020180548392906129b590849061372f565b9091555050335f908152600e602090815260408083206013548452909152812080548892906129e590849061372f565b90915550612ac19050565b6040518060e001604052808781526020015f81526020018281526020015f81526020015f81526020015f81526020015f815250600e5f612a2d3390565b6001600160a01b0316815260208082019290925260409081015f9081206013548252835281812084518155848401516001820155848301516002820155606085015160038201556080850151600482015560a0850151600582015560c090940151600690940193909355338352601190915290205460ff16612ac15760405162461bcd60e51b8152600401610b4f9061393d565b6008545f906001600160a01b031663dd62ed3e336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604401602060405180830381865afa158015612b1d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b41919061396d565b905080871115612b635760405162461bcd60e51b8152600401610b4f90613a62565b6009545f906001600160a01b031633612554565b612b7f613121565b5f5b8551811015612cc9576040518060a00160405280868381518110612ba757612ba7613acf565b60200260200101518152602001858381518110612bc657612bc6613acf565b60200260200101518152602001848381518110612be557612be5613acf565b60200260200101518152602001838381518110612c0457612c04613acf565b60200260200101518152602001838381518110612c2357612c23613acf565b6020026020010151868481518110612c3d57612c3d613acf565b60200260200101516103e8612c5291906136b9565b612c5c9190613710565b815250600d5f888481518110612c7457612c74613acf565b602002602001015181526020019081526020015f205f820151815f0155602082015181600101556040820151816002015560608201518160030155608082015181600401559050508080600101915050612b81565b505050505050565b612cd9613121565b601255565b805f81118015612cef575060135481145b612d0b5760405162461bcd60e51b8152600401610b4f9061364d565b612d13613121565b5f828152600b602052604090205460ff16612d5d5760405162461bcd60e51b815260206004820152600a602482015269139bdd081c185d5cd95960b21b6044820152606401610b4f565b5f828152600b602052604090819020805460ff191690555182907ff608654a6d8e1785594639dd55babb61d7ae157382015f904a24224e50333b1d90611bae9042815260200190565b612dae613121565b5f8411612dea5760405162461bcd60e51b815260206004820152600a6024820152695a65726f20707269636560b01b6044820152606401610b4f565b5f8211612e2f5760405162461bcd60e51b815260206004820152601360248201527216995c9bc81d1bdad95b9cc81d1bc81cd95b1b606a1b6044820152606401610b4f565b60038054905f612e3e83613817565b909155505060408051610140810182525f808252602080830182815283850189815260608086018a81526080870186815260a088018b815260c089018b815260e08a01898152610100808c018b81526101208d018c8152600380548e52600c8d528f8e209e518f559a5160018f0155985160028e015595518c8a0155935160048c0155915160058b01555160068a0155516007890155905160089097018054935161ffff1990941697151561ff001916979097179215150291909117909455548451878152918201839052938101919091527f6a00651728a92841411081673eaa4eddbed06d102a590e050c22def40d4dd0b8910160405180910390a250505050565b612f49613121565b6001600160a01b03919091165f908152601060205260409020805460ff1916911515919091179055565b612f7b613121565b6001600160a01b038116612fc65760405162461bcd60e51b81526020600482015260126024820152715a65726f20746f6b656e206164647265737360701b6044820152606401610b4f565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b612ff0613121565b6001600160a01b0381166130555760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b4f565b611bd8816132a4565b6004545f838152600c602052604081206002015490919061307f90846136f9565b6130899190613710565b9392505050565b6014546040805163313ce56760e01b815290515f926001600160a01b03169163313ce5679160048083019260209291908290030181865afa1580156130d7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130fb919061382f565b61310690600a61392f565b5f848152600c602052604090206002015461307f90846136f9565b6001546001600160a01b03163314611dbc5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b4f565b60025f54036131cc5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610b4f565b60025f55565b804710156132105760405162461bcd60e51b815260206004820152600b60248201526a4c6f772062616c616e636560a81b6044820152606401610b4f565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114613259576040519150601f19603f3d011682016040523d82523d5f602084013e61325e565b606091505b5050905080611d315760405162461bcd60e51b81526020600482015260126024820152711155120814185e5b595b9d0819985a5b195960721b6044820152606401610b4f565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b80356001600160a01b038116811461330b575f80fd5b919050565b5f60208284031215613320575f80fd5b613089826132f5565b5f60208284031215613339575f80fd5b5035919050565b8015158114611bd8575f80fd5b5f806040838503121561335e575f80fd5b613367836132f5565b9150602083013561337781613340565b809150509250929050565b5f8060408385031215613393575f80fd5b82359150602083013561337781613340565b5f80604083850312156133b6575f80fd5b50508035926020909101359150565b5f805f805f8060c087890312156133da575f80fd5b863595506020870135945060408701359350606087013592506080870135915060a087013561340881613340565b809150509295509295509295565b5f805f805f60a0868803121561342a575f80fd5b505083359560208501359550604085013594606081013594506080013592509050565b5f806040838503121561345e575f80fd5b613467836132f5565b9150613475602084016132f5565b90509250929050565b5f806040838503121561348f575f80fd5b613498836132f5565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f8301126134c9575f80fd5b8135602067ffffffffffffffff808311156134e6576134e66134a6565b8260051b604051601f19603f8301168101818110848211171561350b5761350b6134a6565b604052938452602081870181019490810192508785111561352a575f80fd5b6020870191505b8482101561354a57813583529183019190830190613531565b979650505050505050565b5f805f805f60a08688031215613569575f80fd5b853567ffffffffffffffff80821115613580575f80fd5b61358c89838a016134ba565b965060208801359150808211156135a1575f80fd5b6135ad89838a016134ba565b955060408801359150808211156135c2575f80fd5b6135ce89838a016134ba565b945060608801359150808211156135e3575f80fd5b6135ef89838a016134ba565b93506080880135915080821115613604575f80fd5b50613611888289016134ba565b9150509295509295909350565b5f805f8060808587031215613631575f80fd5b5050823594602084013594506040840135936060013592509050565b602080825260129082015271125b9d985b1a59081c1c995cd85b19481a5960721b604082015260600190565b60208082526012908201527170726553416c65206e6f742041637469766560701b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b81810381811115611ef857611ef86136a5565b602080825260139082015272125b9d985b1a59081cd85b1948185b5bdd5b9d606a1b604082015260600190565b8082028115828204841417611ef857611ef86136a5565b5f8261372a57634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115611ef857611ef86136a5565b60208082526026908201527f416d6f756e742073686f756c64206265206c657373207468616e206c6566744860408201526506172646361760d41b606082015260800190565b6020808252601690820152751058d8dbdd5b9d081a5cc8189b1858dad31a5cdd195960521b604082015260600190565b6020808252600e908201526d141c995cd85b19481c185d5cd95960921b604082015260600190565b60208082526019908201527f50726573616c65206973206e6f74206163746976652079657400000000000000604082015260600190565b5f60018201613828576138286136a5565b5060010190565b5f6020828403121561383f575f80fd5b815160ff81168114613089575f80fd5b600181815b8085111561388957815f190482111561386f5761386f6136a5565b8085161561387c57918102915b93841c9390800290613854565b509250929050565b5f8261389f57506001611ef8565b816138ab57505f611ef8565b81600181146138c157600281146138cb576138e7565b6001915050611ef8565b60ff8411156138dc576138dc6136a5565b50506001821b611ef8565b5060208310610133831016604e8410600b841016171561390a575081810a611ef8565b613914838361384f565b805f1904821115613927576139276136a5565b029392505050565b5f61308960ff841683613891565b602080825260169082015275155cd95c881b9bdd0818481c185c9d1a58da5c185b9d60521b604082015260600190565b5f6020828403121561397d575f80fd5b5051919050565b5f60208284031215613994575f80fd5b815161308981613340565b602080825260159082015274151bdad95b881d1c985b9cd9995c8819985a5b1959605a1b604082015260600190565b805169ffffffffffffffffffff8116811461330b575f80fd5b5f805f805f60a086880312156139fb575f80fd5b613a04866139ce565b9450602086015193506040860151925060608601519150613a27608087016139ce565b90509295509295909350565b8082025f8212600160ff1b84141615613a4e57613a4e6136a5565b8181058314821517611ef857611ef86136a5565b60208082526021908201527f4d616b65207375726520746f2061646420656e6f75676820616c6c6f77616e636040820152606560f81b606082015260800190565b5f82515f5b81811015613ac25760208186018101518583015201613aa8565b505f920191825250919050565b634e487b7160e01b5f52603260045260245ffdfea264697066735822122065bb570f95c7f827b3fa12122705c24aaef226bb28aa0740f66923e487e2a41264736f6c63430008160033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000005f4ec3df9cbd43714fe2740f5e3616155c5b8419000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000026ebb8213fb8d66156f1af8908d43f7e3e367c1d0000000000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _oracle (address): 0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419
Arg [1] : _usdt (address): 0xdAC17F958D2ee523a2206206994597C13D831ec7
Arg [2] : _usdc (address): 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48
Arg [3] : _SaleToken (address): 0x26EbB8213fb8D66156F1Af8908d43f7e3e367C1d
Arg [4] : _MinTokenTobuy (uint256): 0
-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 0000000000000000000000005f4ec3df9cbd43714fe2740f5e3616155c5b8419
Arg [1] : 000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7
Arg [2] : 000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
Arg [3] : 00000000000000000000000026ebb8213fb8d66156f1af8908d43f7e3e367c1d
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
8063:22129:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9580:39;;;;;;;;;;-1:-1:-1;9580:39:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;548:14:1;;541:22;523:41;;511:2;496:18;9580:39:0;;;;;;;;9247:38;;;;;;;;;;-1:-1:-1;9247:38:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16055:158;;;;;;;;;;-1:-1:-1;16055:158:0;;;;;:::i;:::-;;:::i;:::-;;29966:123;;;;;;;;;;-1:-1:-1;29966:123:0;;;;;:::i;:::-;;:::i;29750:97::-;;;;;;;;;;-1:-1:-1;29750:97:0;;;;;:::i;:::-;;:::i;13585:120::-;;;;;;;;;;-1:-1:-1;13585:120:0;;;;;:::i;:::-;;:::i;21802:2166::-;;;:::i;9474:49::-;;;;;;;;;;-1:-1:-1;9474:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;23976:332;;;;;;;;;;-1:-1:-1;23976:332:0;;;;;:::i;:::-;;:::i;:::-;;;1916:25:1;;;1904:2;1889:18;23976:332:0;1770:177:1;25735:3727:0;;;;;;;;;;-1:-1:-1;25735:3727:0;;;;;:::i;:::-;;:::i;9157:35::-;;;;;;;;;;-1:-1:-1;9157:35:0;;;;-1:-1:-1;;;;;9157:35:0;;;;;;-1:-1:-1;;;;;2138:32:1;;;2120:51;;2108:2;2093:18;9157:35:0;1952:225:1;13713:618:0;;;;;;;;;;-1:-1:-1;13713:618:0;;;;;:::i;:::-;;:::i;9345:46::-;;;;;;;;;;-1:-1:-1;9345:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3030:25:1;;;3086:2;3071:18;;3064:34;;;;3114:18;;;3107:34;;;;3172:2;3157:18;;3150:34;3215:3;3200:19;;3193:35;3017:3;3002:19;9345:46:0;2771:463:1;8225:29:0;;;;;;;;;;;;;;;;8188:30;;;;;;;;;;;;;;;;12869:583;;;;;;;;;;-1:-1:-1;12869:583:0;;;;;:::i;:::-;;:::i;14917:212::-;;;;;;;;;;-1:-1:-1;14917:212:0;;;;;:::i;:::-;;:::i;29617:125::-;;;;;;;;;;-1:-1:-1;29617:125:0;;;;;:::i;:::-;;:::i;8121:29::-;;;;;;;;;;;;;;;;18623:528;;;;;;;;;;-1:-1:-1;18623:528:0;;;;;:::i;:::-;;:::i;29470:139::-;;;;;;;;;;-1:-1:-1;29470:139:0;;;;;:::i;:::-;;:::i;14339:166::-;;;;;;;;;;-1:-1:-1;14339:166:0;;;;;:::i;:::-;;:::i;1471:103::-;;;;;;;;;;;;;:::i;24577:302::-;;;;;;;;;;-1:-1:-1;24577:302:0;;;;;:::i;:::-;;:::i;25357:370::-;;;;;;;;;;-1:-1:-1;25357:370:0;;;;;:::i;:::-;;:::i;11828:406::-;;;;;;;;;;-1:-1:-1;11828:406:0;;;;;:::i;:::-;;:::i;9696:24::-;;;;;;;;;;-1:-1:-1;9696:24:0;;;;-1:-1:-1;;;;;9696:24:0;;;14513:194;;;;;;;;;;-1:-1:-1;14513:194:0;;;;;:::i;:::-;;:::i;9628:28::-;;;;;;;;;;;;;;;;1236:87;;;;;;;;;;-1:-1:-1;1309:6:0;;-1:-1:-1;;;;;1309:6:0;1236:87;;15389:206;;;;;;;;;;;;;:::i;9663:26::-;;;;;;;;;;;;;;;;16221:2394;;;;;;;;;;-1:-1:-1;16221:2394:0;;;;;:::i;:::-;;:::i;8295:27::-;;;;;;;;;;;;;;;;19281:2513;;;;;;;;;;-1:-1:-1;19281:2513:0;;;;;:::i;:::-;;:::i;9398:69::-;;;;;;;;;;-1:-1:-1;9398:69:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4745:25:1;;;4801:2;4786:18;;4779:34;;;;4829:18;;;4822:34;;;;4887:2;4872:18;;4865:34;;;;4930:3;4915:19;;4908:35;4974:3;4959:19;;4952:35;5018:3;5003:19;;4996:35;4732:3;4717:19;9398:69:0;4430:607:1;9530:43:0;;;;;;;;;;-1:-1:-1;9530:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12242:619;;;;;;;;;;-1:-1:-1;12242:619:0;;;;;:::i;:::-;;:::i;29855:103::-;;;;;;;;;;-1:-1:-1;29855:103:0;;;;;:::i;:::-;;:::i;15137:244::-;;;;;;;;;;-1:-1:-1;15137:244:0;;;;;:::i;:::-;;:::i;11183:637::-;;;;;;;;;;-1:-1:-1;11183:637:0;;;;;:::i;:::-;;:::i;19159:114::-;;;;;;;;;;-1:-1:-1;19159:114:0;;;;;:::i;:::-;;:::i;8157:24::-;;;;;;;;;;;;;;;;9292:46;;;;;;;;;;-1:-1:-1;9292:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8144:25:1;;;8200:2;8185:18;;8178:34;;;;8228:18;;;8221:34;;;;8286:2;8271:18;;8264:34;;;;8329:3;8314:19;;8307:35;;;;8373:3;8358:19;;8351:35;8417:3;8402:19;;8395:35;8461:3;8446:19;;8439:35;8518:14;8511:22;8505:3;8490:19;;8483:51;8578:14;8571:22;8565:3;8550:19;;8543:51;8131:3;8116:19;9292:46:0;7757:843:1;14715:194:0;;;;;;;;;;-1:-1:-1;14715:194:0;;;;;:::i;:::-;;:::i;1582:238::-;;;;;;;;;;-1:-1:-1;1582:238:0;;;;;:::i;:::-;;:::i;24887:197::-;;;;;;;;;;-1:-1:-1;24887:197:0;;;;;:::i;:::-;;:::i;30097:92::-;;;;;;;;;;-1:-1:-1;30166:15:0;30097:92;;9115:35;;;;;;;;;;-1:-1:-1;9115:35:0;;;;-1:-1:-1;;;;;9115:35:0;;;8261:27;;;;;;;;;;-1:-1:-1;8261:27:0;;;;-1:-1:-1;;;;;8261:27:0;;;24316:253;;;;;;;;;;-1:-1:-1;24316:253:0;;;;;:::i;:::-;;:::i;16055:158::-;1195:13;:11;:13::i;:::-;-1:-1:-1;;;;;16171:24:0;;;::::1;;::::0;;;:17:::1;:24;::::0;;;;:34;;-1:-1:-1;;16171:34:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16055:158::o;29966:123::-;1195:13;:11;:13::i;:::-;30040:19:::1;:41:::0;;-1:-1:-1;;;;;;30040:41:0::1;-1:-1:-1::0;;;;;30040:41:0;;;::::1;::::0;;;::::1;::::0;;29966:123::o;29750:97::-;1195:13;:11;:13::i;:::-;29821:9:::1;:18:::0;;-1:-1:-1;;;;;;29821:18:0::1;-1:-1:-1::0;;;;;29821:18:0;;;::::1;::::0;;;::::1;::::0;;29750:97::o;13585:120::-;1195:13;:11;:13::i;:::-;13661:12:::1;::::0;;;:7:::1;:12;::::0;;;;;:26:::1;;:36:::0;;;::::1;;;;-1:-1:-1::0;;13661:36:0;;::::1;::::0;;;::::1;::::0;;13585:120::o;21802:2166::-;22010:4;21883:11;;15665:1;15659:3;:7;:29;;;;;15677:11;;15670:3;:18;15659:29;15651:60;;;;-1:-1:-1;;;15651:60:0;;;;;;;:::i;:::-;;;;;;;;;21920:11:::1;::::0;21933:35:::1;21920:11:::0;21958:9:::1;21933:11;:35::i;:::-;15811:12;::::0;;;:7:::1;:12;::::0;;;;:19:::1;;::::0;::::1;;:27;;:19:::0;:27:::1;15803:58;;;;-1:-1:-1::0;;;15803:58:0::1;;;;;;;:::i;:::-;15903:1;15894:6;:10;:86;;;;-1:-1:-1::0;15963:12:0::1;::::0;;;:7:::1;:12;::::0;;;;:17:::1;::::0;::::1;::::0;15935:25:::1;::::0;;::::1;::::0;:45:::1;::::0;15963:17;15935:45:::1;:::i;:::-;15925:6;:55;;15894:86;15872:155;;;;-1:-1:-1::0;;;15872:155:0::1;;;;;;;:::i;:::-;325:21:::2;:19;:21::i;:::-;22134:14:::3;::::0;22032:17:::3;::::0;22117:31:::3;::::0;22134:14;22117:31:::3;:::i;:::-;22084:15;;22065:16;:14;:16::i;:::-;22053:28;::::0;:9:::3;:28;:::i;:::-;:46;;;;:::i;:::-;22052:97;;;;:::i;:::-;22256:11;::::0;22248:20:::3;::::0;;;:7:::3;:20;::::0;;;;:32:::3;::::0;::::3;::::0;22182:33:::3;::::0;;::::3;::::0;22032:117;;-1:-1:-1;22248:32:0;22182:45:::3;::::0;22032:117;;22182:45:::3;:::i;:::-;:98;;22160:186;;;;-1:-1:-1::0;;;22160:186:0::3;;;;;;;:::i;:::-;22378:10;22366:23;::::0;;;:11:::3;:23;::::0;;;;;::::3;;22365:24;22357:59;;;;-1:-1:-1::0;;;22357:59:0::3;;;;;;;:::i;:::-;22443:11;::::0;22436:19:::3;::::0;;;:6:::3;:19;::::0;;;;;::::3;;22435:20;22427:47;;;;-1:-1:-1::0;;;22427:47:0::3;;;;;;;:::i;:::-;22515:11;::::0;22507:20:::3;::::0;;;:7:::3;:20;::::0;;;;:27:::3;;::::0;::::3;;:35;;:27:::0;:35:::3;22485:110;;;;-1:-1:-1::0;;;22485:110:0::3;;;;;;;:::i;:::-;22619:10;22611:19;::::0;;;:7:::3;:19;::::0;;;;;::::3;;22606:108;;22655:10;22647:19;::::0;;;:7:::3;:19;::::0;;;;:26;;-1:-1:-1;;22647:26:0::3;22669:4;22647:26;::::0;;22688:12:::3;:14:::0;;;::::3;::::0;::::3;:::i;:::-;;;;;;22606:108;22726:14;22743:36;22756:11;;22769:9;22743:12;:36::i;:::-;22812:10;22794:29;::::0;;;:17:::3;:29;::::0;;;;;22726:53;;-1:-1:-1;22794:29:0::3;::::0;;::::3;:38;;::::0;;22790:127:::3;;22867:13;;22857:6;:23;;22849:56;;;::::0;-1:-1:-1;;;22849:56:0;;12234:2:1;22849:56:0::3;::::0;::::3;12216:21:1::0;12273:2;12253:18;;;12246:30;-1:-1:-1;;;12292:18:1;;;12285:50;12352:18;;22849:56:0::3;12032:344:1::0;22849:56:0::3;22935:11;::::0;22927:20:::3;::::0;;;:7:::3;:20;::::0;;;;:25:::3;;:35:::0;;22956:6;;22927:20;:35:::3;::::0;22956:6;;22927:35:::3;:::i;:::-;::::0;;;-1:-1:-1;;22981:11:0::3;::::0;22973:20:::3;::::0;;;:7:::3;:20;::::0;;;;:33:::3;;:46:::0;;23010:9;;22973:20;:46:::3;::::0;23010:9;;22973:46:::3;:::i;:::-;;;;;;;;23048:9;23030:14;;:27;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;764:10:0;23133:1:::3;23074:27:::0;;;:13:::3;:27;::::0;;;;;;;23102:11:::3;::::0;23074:40;;;;;;;:56:::3;;::::0;:60;23070:621:::3;;764:10:::0;23151:27:::3;::::0;;;:13:::3;:27;::::0;;;;;;;23179:11:::3;::::0;23151:40;;;;;;;:56:::3;;:66:::0;;23211:6;;23151:27;:66:::3;::::0;23211:6;;23151:66:::3;:::i;:::-;::::0;;;-1:-1:-1;;764:10:0;23232:27:::3;::::0;;;:13:::3;:27;::::0;;;;;;;23260:11:::3;::::0;23232:40;;;;;;;:68;;23291:9;;23232:27;:68:::3;::::0;23291:9;;23232:68:::3;:::i;:::-;::::0;;;-1:-1:-1;23070:621:0::3;::::0;-1:-1:-1;23070:621:0::3;;23376:303;;;;;;;;23403:9;23376:303;;;;23431:1;23376:303;;;;23470:6;23376:303;;;;23525:1;23376:303;;;;23571:1;23376:303;;;;23609:1;23376:303;;;;23644:1;23376:303;;::::0;23333:13:::3;:27;23347:12;764:10:::0;;684:98;23347:12:::3;-1:-1:-1::0;;;;;23333:27:0::3;::::0;;::::3;::::0;;::::3;::::0;;;;;;;;-1:-1:-1;23333:27:0;;;23361:11:::3;::::0;23333:40;;;;;;;:346;;;;;;::::3;::::0;::::3;::::0;::::3;::::0;;::::3;::::0;::::3;::::0;::::3;::::0;::::3;::::0;::::3;::::0;::::3;::::0;::::3;::::0;::::3;::::0;::::3;::::0;::::3;::::0;::::3;::::0;::::3;::::0;::::3;::::0;::::3;::::0;::::3;::::0;::::3;::::0;;::::3;::::0;::::3;::::0;;::::3;::::0;23070:621:::3;23721:12;::::0;23703:43:::3;::::0;-1:-1:-1;;;;;23721:12:0::3;23736:9;23703;:43::i;:::-;23816:11;::::0;23762:176:::3;::::0;;12583:25:1;;;23888:9:0::3;12639:2:1::0;12624:18;;12617:34;23912:15:0::3;12667:18:1::0;;;12660:34;23762:176:0;;-1:-1:-1;;23816:11:0;764:10;;23762:176:::3;::::0;;;;12571:2:1;23762:176:0;;::::3;23956:4;23949:11;;;;369:20:::2;141:1:::0;614:7;:22;565:79;369:20:::2;15722:1:::1;;21802:2166:::0;;:::o;23976:332::-;24077:17;24141:12;;;:7;:12;;;;;:18;;;24077:17;;24132:27;;:6;:27;:::i;:::-;24112:48;;24278:9;;;;;;;;;-1:-1:-1;;;;;24278:9:0;-1:-1:-1;;;;;24263:34:0;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24259:40;;:2;:40;:::i;:::-;24240:16;:14;:16::i;:::-;:59;;;;:::i;:::-;24208:14;;24197:25;;:8;:25;:::i;:::-;24196:104;;;;:::i;:::-;24171:129;23976:332;-1:-1:-1;;;;23976:332:0:o;25735:3727::-;764:10;25785:4;25810:21;;;:7;:21;;;;;;;;25802:56;;;;-1:-1:-1;;;25802:56:0;;;;;;;:::i;:::-;25869:14;25886:32;25902:10;25914:3;25886:15;:32::i;:::-;25869:49;;25946:1;25937:6;:10;25929:42;;;;-1:-1:-1;;;25929:42:0;;14913:2:1;25929:42:0;;;14895:21:1;14952:2;14932:18;;;14925:30;-1:-1:-1;;;14971:18:1;;;14964:49;15030:18;;25929:42:0;14711:343:1;25929:42:0;26003:10;25991:23;;;;:11;:23;;;;;;;;25990:24;25982:59;;;;-1:-1:-1;;;25982:59:0;;;;;;;:::i;:::-;26060:9;;-1:-1:-1;;;;;26060:9:0;26052:65;;;;-1:-1:-1;;;26052:65:0;;15261:2:1;26052:65:0;;;15243:21:1;15300:2;15280:18;;;15273:30;15339:31;15319:18;;;15312:59;15388:18;;26052:65:0;15059:353:1;26052:65:0;26167:9;;26160:42;;-1:-1:-1;;;26160:42:0;;26196:4;26160:42;;;2120:51:1;-1:-1:-1;;;;;26167:9:0;;;;26160:27;;2093:18:1;;26160:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26150:6;:52;;26128:135;;;;-1:-1:-1;;;26128:135:0;;15808:2:1;26128:135:0;;;15790:21:1;15847:2;15827:18;;;15820:30;15886:34;15866:18;;;15859:62;-1:-1:-1;;;15937:18:1;;;15930:31;15978:19;;26128:135:0;15606:397:1;26128:135:0;26283:12;;;;:7;:12;;;;;:26;;;;;;;;;:34;;:26;:34;26274:68;;;;-1:-1:-1;;;26274:68:0;;16210:2:1;26274:68:0;;;16192:21:1;16249:2;16229:18;;;16222:30;-1:-1:-1;;;16268:18:1;;;16261:49;16327:18;;26274:68:0;16008:343:1;26274:68:0;26404:10;26353:22;26390:25;;;:13;:25;;;;;;;;:30;;;;;;;;:41;;;:46;;26386:3047;;26498:12;;;;:7;:12;;;;;:32;;;26552:4;;26488:43;;:6;:43;:::i;:::-;26487:69;;;;:::i;:::-;26651:12;;;;:7;:12;;;;;:30;;;26453:103;;-1:-1:-1;26702:4:0;;26642:39;;:6;:39;:::i;:::-;26641:65;;;;:::i;:::-;26585:10;26571:25;;;;:13;:25;;;;;;;;:30;;;;;;;;;:50;;:135;;;;26742:9;;26735:103;;-1:-1:-1;;;26735:103:0;;;;;16530:51:1;;;;16597:18;;;16590:34;;;26571:25:0;-1:-1:-1;;;;;26742:9:0;;26735:26;;16503:18:1;;26735:103:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26721:117;;26861:6;26853:40;;;;-1:-1:-1;;;26853:40:0;;;;;;;:::i;:::-;26922:10;26908:25;;;;:13;:25;;;;;;;;:30;;;;;;;;:46;;:64;;26958:14;;26908:25;:64;;26958:14;;26908:64;:::i;:::-;;;;-1:-1:-1;;27001:10:0;26987:25;;;;:13;:25;;;;;;;;:30;;;;;;;;:44;;:62;;27035:14;;26987:25;:62;;27035:14;;26987:62;:::i;:::-;;;;-1:-1:-1;;27078:10:0;27064:25;;;;:13;:25;;;;;;;;:30;;;;;;;;:41;;:43;;;;;;:::i;:::-;;;;;;26438:681;26386:3047;;;27219:10;27205:25;;;;:13;:25;;;;;;;;:30;;;;;;;;:50;;;;27143:46;;;;;:112;27125:2308;;;27282:16;27319:12;;;:7;:12;;;;;:29;27301:47;;:15;:47;:::i;:::-;27363:18;27395:12;;;:7;:12;;;;;:24;;;27282:66;;-1:-1:-1;27363:18:0;27384:35;;27282:66;27384:35;:::i;:::-;27451:12;;;;:7;:12;;;;;:29;;;27363:56;;-1:-1:-1;27438:42:0;;27434:125;;;-1:-1:-1;27514:12:0;;;;:7;:12;;;;;:29;;;27434:125;27635:10;27573:15;27621:25;;;:13;:25;;;;;;;;:30;;;;;;;;:50;;;27591:80;;:10;:80;:::i;:::-;27761:10;27747:25;;;;:13;:25;;;;;;;;:30;;;;;;;;:51;;;27573:98;;-1:-1:-1;27720:78:0;;27573:98;27720:78;:::i;:::-;27686:112;;27838:1;27821:14;:18;27813:58;;;;-1:-1:-1;;;27813:58:0;;17437:2:1;27813:58:0;;;17419:21:1;17476:2;17456:18;;;17449:30;17515:29;17495:18;;;17488:57;17562:18;;27813:58:0;17235:351:1;27813:58:0;27907:9;;27900:103;;-1:-1:-1;;;27900:103:0;;27945:10;27900:103;;;16530:51:1;16597:18;;;16590:34;;;27886:11:0;;-1:-1:-1;;;;;27907:9:0;;27900:26;;16503:18:1;;27900:103:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27886:117;;28026:6;28018:40;;;;-1:-1:-1;;;28018:40:0;;;;;;;:::i;:::-;28087:10;28073:25;;;;:13;:25;;;;;;;;:30;;;;;;;;:46;;:64;;28123:14;;28073:25;:64;;28123:14;;28073:64;:::i;:::-;;;;-1:-1:-1;;28166:10:0;28152:25;;;;:13;:25;;;;;;;;:30;;;;;;;;:69;;:87;;28225:14;;28152:25;:87;;28225:14;;28152:87;:::i;:::-;;;;-1:-1:-1;;28268:10:0;28254:25;;;;:13;:25;;;;;;;;:30;;;;;;;;:44;;:62;;28302:14;;28254:25;:62;;28302:14;;28254:62;:::i;:::-;;;;-1:-1:-1;;28345:10:0;28331:25;;;;:13;:25;;;;;;;;:30;;;;;;;;:41;;:43;;;;;;:::i;:::-;;;;;;27267:1119;;;;27125:2308;;;28407:16;28444:12;;;:7;:12;;;;;:29;28426:47;;:15;:47;:::i;:::-;28488:18;28520:12;;;:7;:12;;;;;:24;;;28407:66;;-1:-1:-1;28488:18:0;28509:35;;28407:66;28509:35;:::i;:::-;28576:12;;;;:7;:12;;;;;:29;;;28488:56;;-1:-1:-1;28576:33:0;;28608:1;28576:33;:::i;:::-;28563:10;:46;28559:863;;;28661:10;28647:25;;;;:13;:25;;;;;;;;:30;;;;;;;;:46;;;;-1:-1:-1;28720:18:0;28712:58;;;;-1:-1:-1;;;28712:58:0;;17437:2:1;28712:58:0;;;17419:21:1;17476:2;17456:18;;;17449:30;17515:29;17495:18;;;17488:57;17562:18;;28712:58:0;17235:351:1;28712:58:0;28810:9;;28803:115;;-1:-1:-1;;;28803:115:0;;28852:10;28803:115;;;16530:51:1;16597:18;;;16590:34;;;28789:11:0;;-1:-1:-1;;;;;28810:9:0;;28803:26;;16503:18:1;;28803:115:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28789:129;;28945:6;28937:40;;;;-1:-1:-1;;;28937:40:0;;;;;;;:::i;:::-;29010:10;28996:25;;;;:13;:25;;;;;;;;:30;;;;;;;;:68;;:86;;29068:14;;28996:25;:86;;29068:14;;28996:86;:::i;:::-;;;;-1:-1:-1;;29115:10:0;29101:25;;;;:13;:25;;;;;;;;:30;;;;;;;;:44;;:62;;29149:14;;29101:25;:62;;29149:14;;29101:62;:::i;:::-;;;;-1:-1:-1;;29196:10:0;29182:25;;;;:13;:25;;;;;;;;:30;;;;;;;;:73;;:91;;29259:14;;29182:25;:91;;29259:14;;29182:91;:::i;:::-;;;;-1:-1:-1;;29306:10:0;29292:25;;;;:13;:25;;;;;;;;:30;;;;;;;;:41;;:43;;;;;;:::i;:::-;;;;;;28611:740;28559:863;;;29376:30;;-1:-1:-1;;;29376:30:0;;17793:2:1;29376:30:0;;;17775:21:1;17832:2;17812:18;;;17805:30;-1:-1:-1;;;17851:18:1;;;17844:50;17911:18;;29376:30:0;17591:344:1;28559:863:0;28392:1041;;27125:2308;-1:-1:-1;29450:4:0;;25735:3727;-1:-1:-1;;;25735:3727:0:o;13713:618::-;1195:13;:11;:13::i;:::-;13957:1:::1;13948:6;:10;13940:33;;;::::0;-1:-1:-1;;;13940:33:0;;18142:2:1;13940:33:0::1;::::0;::::1;18124:21:1::0;18181:2;18161:18;;;18154:30;-1:-1:-1;;;18200:18:1;;;18193:40;18250:18;;13940:33:0::1;17940:334:1::0;13940:33:0::1;14008:1;13992:13;:17;13984:49;;;::::0;-1:-1:-1;;;13984:49:0;;18481:2:1;13984:49:0::1;::::0;::::1;18463:21:1::0;18520:2;18500:18;;;18493:30;-1:-1:-1;;;18539:18:1;;;18532:49;18598:18;;13984:49:0::1;18279:343:1::0;13984:49:0::1;14063:1;14052:8;:12;14044:36;;;::::0;-1:-1:-1;;;14044:36:0;;18829:2:1;14044:36:0::1;::::0;::::1;18811:21:1::0;18868:2;18848:18;;;18841:30;-1:-1:-1;;;18887:18:1;;;18880:41;18938:18;;14044:36:0::1;18627:335:1::0;14044:36:0::1;14091:12;::::0;;;:7:::1;:12;::::0;;;;;:18:::1;::::0;::::1;:27:::0;;;;14129::::1;::::0;::::1;:45:::0;;;;14185:25:::1;::::0;::::1;:41:::0;14237:24:::1;::::0;::::1;:35:::0;14283:26:::1;;:40:::0;;;::::1;;;;-1:-1:-1::0;;14283:40:0;;::::1;::::0;;;::::1;::::0;;13713:618::o;12869:583::-;1195:13;:11;:13::i;:::-;13099:12:::1;::::0;;;:7:::1;:12;::::0;;;;:49;;;13159:32:::1;::::0;::::1;:55:::0;;;13225:24:::1;::::0;::::1;:39:::0;;;13275:30:::1;;:51:::0;;;13308:18;13383:26:::1;13194:20:::0;13383:3:::1;:26;:::i;:::-;13382:62;;;;:::i;:::-;13337:12;::::0;;;:7:::1;:12;::::0;;;;;:29:::1;;:107:::0;;;;-1:-1:-1;;;;12869:583:0:o;14917:212::-;14976:3;15665:1;15659:3;:7;:29;;;;;15677:11;;15670:3;:18;15659:29;15651:60;;;;-1:-1:-1;;;15651:60:0;;;;;;;:::i;:::-;1195:13:::1;:11;:13::i;:::-;15011:11:::2;::::0;;;:6:::2;:11;::::0;;;;;::::2;;15010:12;15002:39;;;::::0;-1:-1:-1;;;15002:39:0;;19169:2:1;15002:39:0::2;::::0;::::2;19151:21:1::0;19208:2;19188:18;;;19181:30;-1:-1:-1;;;19227:18:1;;;19220:44;19281:18;;15002:39:0::2;18967:338:1::0;15002:39:0::2;15052:11;::::0;;;:6:::2;:11;::::0;;;;;;:18;;-1:-1:-1;;15052:18:0::2;15066:4;15052:18;::::0;;15086:35;15059:3;;15086:35:::2;::::0;::::2;::::0;15105:15:::2;1916:25:1::0;;1904:2;1889:18;;1770:177;15086:35:0::2;;;;;;;;14917:212:::0;;:::o;29617:125::-;1195:13;:11;:13::i;:::-;29712:12:::1;::::0;29694:40:::1;::::0;-1:-1:-1;;;;;29712:12:0::1;29727:6:::0;29694:9:::1;:40::i;:::-;29617:125:::0;:::o;18623:528::-;1195:13;:11;:13::i;:::-;18760:1:::1;18743:325;18767:9;;18763:1;:13;18743:325;;;-1:-1:-1::0;;;;;18806:20:0;::::1;;::::0;;;:7:::1;:20;::::0;;;;;::::1;;18798:55;;;;-1:-1:-1::0;;;18798:55:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18915:58:0;;::::1;;::::0;;;:13:::1;:58;::::0;;;;;;;:61;;;;;;;;;:77:::1;::::0;;::::1;::::0;;18868:25;;::::1;::::0;;;;;;;;:28;;;;;;;;:44;;::::1;:124:::0;;;;19007:29;;;;:49;;-1:-1:-1;18778:3:0::1;18743:325;;;-1:-1:-1::0;;;;;;19078:20:0;;::::1;19101:5;19078:20:::0;;;:7:::1;:20;::::0;;;;;:28;;-1:-1:-1;;19078:28:0;;::::1;::::0;;;19117:19;;;::::1;::::0;;;;;;:26;;;;::::1;19078:28:::0;19117:26:::1;::::0;;18623:528::o;29470:139::-;1195:13;:11;:13::i;:::-;29580:12:::1;::::0;29556:45:::1;::::0;-1:-1:-1;;;29556:45:0;;-1:-1:-1;;;;;29580:12:0;;::::1;29556:45;::::0;::::1;16530:51:1::0;16597:18;;;16590:34;;;29556:23:0;;::::1;::::0;::::1;::::0;16503:18:1;;29556:45:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;29470:139:::0;;:::o;14339:166::-;1195:13;:11;:13::i;:::-;-1:-1:-1;;;;;14420:21:0;::::1;14412:52;;;::::0;-1:-1:-1;;;14412:52:0;;19512:2:1;14412:52:0::1;::::0;::::1;19494:21:1::0;19551:2;19531:18;;;19524:30;-1:-1:-1;;;19570:18:1;;;19563:48;19628:18;;14412:52:0::1;19310:342:1::0;14412:52:0::1;14475:12;:22:::0;;-1:-1:-1;;;;;;14475:22:0::1;-1:-1:-1::0;;;;;14475:22:0;;;::::1;::::0;;;::::1;::::0;;14339:166::o;1471:103::-;1195:13;:11;:13::i;:::-;1536:30:::1;1563:1;1536:18;:30::i;:::-;1471:103::o:0;24577:302::-;24675:15;24708:17;24807:14;;24790;;:31;;;;:::i;:::-;24757:15;;24738:16;:14;:16::i;:::-;24729:25;;:6;:25;:::i;:::-;:43;;;;:::i;:::-;24728:94;;;;:::i;:::-;24708:114;;24843:28;24856:3;24861:9;24843:12;:28::i;25357:370::-;-1:-1:-1;;;;;25506:19:0;;25457:7;25506:19;;;:13;:19;;;;;;;;:24;;;;;;;;25482:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25543:54;;;;-1:-1:-1;;;25543:54:0;;19859:2:1;25543:54:0;;;19841:21:1;19898:2;19878:18;;;19871:30;-1:-1:-1;;;19917:18:1;;;19910:46;19973:18;;25543:54:0;19657:340:1;25543:54:0;25625:21;;;;25665:10;25657:38;;;;-1:-1:-1;;;25657:38:0;;20204:2:1;25657:38:0;;;20186:21:1;20243:2;20223:18;;;20216:30;-1:-1:-1;;;20262:18:1;;;20255:45;20317:18;;25657:38:0;20002:339:1;25657:38:0;25713:6;-1:-1:-1;;25357:370:0;;;;;:::o;11828:406::-;1195:13;:11;:13::i;:::-;11930:1:::1;11902:12:::0;;;:7:::1;:12;::::0;;;;:25:::1;;::::0;11894:61:::1;;;::::0;-1:-1:-1;;;11894:61:0;;20548:2:1;11894:61:0::1;::::0;::::1;20530:21:1::0;20587:2;20567:18;;;20560:30;-1:-1:-1;;;20606:18:1;;;20599:49;20665:18;;11894:61:0::1;20346:343:1::0;11894:61:0::1;11970:11;::::0;:16;11966:145:::1;;12011:11;::::0;;12003:20:::1;::::0;;;:7:::1;:20;::::0;;;;;12034:15:::1;12003:28;::::0;;::::1;:46:::0;12072:11;;12064:20;;;:27:::1;;:35:::0;;-1:-1:-1;;12064:35:0::1;::::0;;11966:145:::1;12121:12;::::0;;;:7:::1;:12;::::0;;;;12146:15:::1;12121:40:::0;;12172:19:::1;;:26:::0;;-1:-1:-1;;12172:26:0::1;12194:4;12172:26;::::0;;12209:11:::1;:17:::0;11828:406::o;14513:194::-;1195:13;:11;:13::i;:::-;-1:-1:-1;;;;;14597:25:0;::::1;14589:56;;;::::0;-1:-1:-1;;;14589:56:0;;20896:2:1;14589:56:0::1;::::0;::::1;20878:21:1::0;20935:2;20915:18;;;20908:30;-1:-1:-1;;;20954:18:1;;;20947:48;21012:18;;14589:56:0::1;20694:342:1::0;14589:56:0::1;14656:13;:43:::0;;-1:-1:-1;;;;;;14656:43:0::1;-1:-1:-1::0;;;;;14656:43:0;;;::::1;::::0;;;::::1;::::0;;14513:194::o;15389:206::-;15436:7;15459:12;15481:19;;;;;;;;;-1:-1:-1;;;;;15481:19:0;-1:-1:-1;;;;;15481:35:0;;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15456:62;;;;;;15538:5;15547:6;15538:16;;;;:::i;16221:2394::-;16431:4;16303:11;;15665:1;15659:3;:7;:29;;;;;15677:11;;15670:3;:18;15659:29;15651:60;;;;-1:-1:-1;;;15651:60:0;;;;;;;:::i;:::-;16340:11:::1;::::0;16353:36:::1;16340:11:::0;16379:9;16353:12:::1;:36::i;:::-;15811:12;::::0;;;:7:::1;:12;::::0;;;;:19:::1;;::::0;::::1;;:27;;:19:::0;:27:::1;15803:58;;;;-1:-1:-1::0;;;15803:58:0::1;;;;;;;:::i;:::-;15903:1;15894:6;:10;:86;;;;-1:-1:-1::0;15963:12:0::1;::::0;;;:7:::1;:12;::::0;;;;:17:::1;::::0;::::1;::::0;15935:25:::1;::::0;;::::1;::::0;:45:::1;::::0;15963:17;15935:45:::1;:::i;:::-;15925:6;:55;;15894:86;15872:155;;;;-1:-1:-1::0;;;15872:155:0::1;;;;;;;:::i;:::-;325:21:::2;:19;:21::i;:::-;16469:11:::3;::::0;16462:19:::3;::::0;;;:6:::3;:19;::::0;;;;;::::3;;16461:20;16453:47;;;;-1:-1:-1::0;;;16453:47:0::3;;;;;;;:::i;:::-;16541:11;::::0;16533:20:::3;::::0;;;:7:::3;:20;::::0;;;;:27:::3;;::::0;::::3;;:35;;:27:::0;:35:::3;16511:110;;;;-1:-1:-1::0;;;16511:110:0::3;;;;;;;:::i;:::-;16653:10;16641:23;::::0;;;:11:::3;:23;::::0;;;;;::::3;;16640:24;16632:59;;;;-1:-1:-1::0;;;16632:59:0::3;;;;;;;:::i;:::-;16798:11;::::0;16790:20:::3;::::0;;;:7:::3;:20;::::0;;;;:32:::3;::::0;::::3;::::0;16724:33:::3;::::0;;::::3;::::0;:45:::3;::::0;16760:9;;16724:45:::3;:::i;:::-;:98;;16702:186;;;;-1:-1:-1::0;;;16702:186:0::3;;;;;;;:::i;:::-;16912:10;16904:19;::::0;;;:7:::3;:19;::::0;;;;;::::3;;16899:108;;16948:10;16940:19;::::0;;;:7:::3;:19;::::0;;;;:26;;-1:-1:-1;;16940:26:0::3;16962:4;16940:26;::::0;;16981:12:::3;:14:::0;;;::::3;::::0;::::3;:::i;:::-;;;;;;16899:108;17017:14;17034:36;17047:11;;17060:9;17034:12;:36::i;:::-;17017:53;;17110:6;17081:7;:20;17089:11;;17081:20;;;;;;;;;;;:25;;;:35;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;17135:11:0::3;::::0;17127:20:::3;::::0;;;:7:::3;:20;::::0;;;;:33:::3;;:46:::0;;17164:9;;17127:20;:46:::3;::::0;17164:9;;17127:46:::3;:::i;:::-;;;;;;;;17202:9;17184:14;;:27;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;17246:10:0::3;17228:29;::::0;;;:17:::3;:29;::::0;;;;;::::3;;:38;;::::0;;17224:127:::3;;17301:13;;17291:6;:23;;17283:56;;;::::0;-1:-1:-1;;;17283:56:0;;22147:2:1;17283:56:0::3;::::0;::::3;22129:21:1::0;22186:2;22166:18;;;22159:30;-1:-1:-1;;;22205:18:1;;;22198:50;22265:18;;17283:56:0::3;21945:344:1::0;17283:56:0::3;764:10:::0;17424:1:::3;17365:27:::0;;;:13:::3;:27;::::0;;;;;;;17393:11:::3;::::0;17365:40;;;;;;;:56:::3;;::::0;:60;17361:494:::3;;764:10:::0;17442:27:::3;::::0;;;:13:::3;:27;::::0;;;;;;;17470:11:::3;::::0;17442:40;;;;;;;:56:::3;;:66:::0;;17502:6;;17442:27;:66:::3;::::0;17502:6;;17442:66:::3;:::i;:::-;::::0;;;-1:-1:-1;;764:10:0;17523:27:::3;::::0;;;:13:::3;:27;::::0;;;;;;;17551:11:::3;::::0;17523:40;;;;;;;:68;;17582:9;;17523:27;:68:::3;::::0;17582:9;;17523:68:::3;:::i;:::-;::::0;;;-1:-1:-1;17361:494:0::3;::::0;-1:-1:-1;17361:494:0::3;;17667:176;;;;;;;;17694:9;17667:176;;;;17722:1;17667:176;;;;17742:6;17667:176;;;;17767:1;17667:176;;;;17787:1;17667:176;;;;17807:1;17667:176;;;;17827:1;17667:176;;::::0;17624:13:::3;:27;17638:12;764:10:::0;;684:98;17638:12:::3;-1:-1:-1::0;;;;;17624:27:0::3;::::0;;::::3;::::0;;::::3;::::0;;;;;;;;-1:-1:-1;17624:27:0;;;17652:11:::3;::::0;17624:40;;;;;;;:219;;;;;;::::3;::::0;::::3;::::0;::::3;::::0;;::::3;::::0;::::3;::::0;::::3;::::0;::::3;::::0;::::3;::::0;::::3;::::0;::::3;::::0;::::3;::::0;::::3;::::0;::::3;::::0;::::3;::::0;::::3;::::0;::::3;::::0;::::3;::::0;::::3;::::0;::::3;::::0;;::::3;::::0;::::3;::::0;;::::3;::::0;17361:494:::3;17890:13;::::0;17867:20:::3;::::0;-1:-1:-1;;;;;17890:13:0::3;:23;764:10:::0;17890:89:::3;::::0;-1:-1:-1;;;;;;17890:89:0::3;::::0;;;;;;-1:-1:-1;;;;;22524:15:1;;;17890:89:0::3;::::0;::::3;22506:34:1::0;17963:4:0::3;22556:18:1::0;;;22549:43;22441:18;;17890:89:0::3;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17867:112;;18011:12;17998:9;:25;;17990:71;;;;-1:-1:-1::0;;;17990:71:0::3;;;;;;;:::i;:::-;18099:13;::::0;18073:12:::3;::::0;-1:-1:-1;;;;;18099:13:0::3;764:10:::0;18233:12:::3;18264;::::0;18133:186:::3;::::0;-1:-1:-1;;;;;23263:15:1;;;18133:186:0::3;::::0;::::3;23245:34:1::0;18264:12:0;::::3;23295:18:1::0;;;23288:43;23347:18;;;23340:34;;;23180:18;;18133:186:0::3;::::0;;-1:-1:-1;;18133:186:0;;::::3;::::0;;;;;;::::3;::::0;::::3;::::0;;-1:-1:-1;;;;;18133:186:0::3;-1:-1:-1::0;;;18133:186:0::3;::::0;;18091:239;::::3;::::0;18133:186;18091:239:::3;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18072:258;;;18349:7;18341:40;;;::::0;-1:-1:-1;;;18341:40:0;;24004:2:1;18341:40:0::3;::::0;::::3;23986:21:1::0;24043:2;24023:18;;;24016:30;-1:-1:-1;;;24062:18:1;;;24055:50;24122:18;;18341:40:0::3;23802:344:1::0;18341:40:0::3;18485:13;::::0;18451:11:::3;::::0;18397:188:::3;::::0;;12583:25:1;;;12639:2;12624:18;;12617:34;;;18559:15:0::3;12667:18:1::0;;;12660:34;18397:188:0;;-1:-1:-1;;;;;18485:13:0;;::::3;::::0;764:10;;18397:188:::3;::::0;;;;;12571:2:1;18397:188:0;;::::3;18603:4;18596:11;;;;;369:20:::2;141:1:::0;614:7;:22;565:79;369:20:::2;15722:1:::1;;16221:2394:::0;;;;:::o;19281:2513::-;19493:4;19364:11;;15665:1;15659:3;:7;:29;;;;;15677:11;;15670:3;:18;15659:29;15651:60;;;;-1:-1:-1;;;15651:60:0;;;;;;;:::i;:::-;19401:11:::1;::::0;19414:37:::1;19401:11:::0;19440:10;19414:12:::1;:37::i;:::-;15811:12;::::0;;;:7:::1;:12;::::0;;;;:19:::1;;::::0;::::1;;:27;;:19:::0;:27:::1;15803:58;;;;-1:-1:-1::0;;;15803:58:0::1;;;;;;;:::i;:::-;15903:1;15894:6;:10;:86;;;;-1:-1:-1::0;15963:12:0::1;::::0;;;:7:::1;:12;::::0;;;;:17:::1;::::0;::::1;::::0;15935:25:::1;::::0;;::::1;::::0;:45:::1;::::0;15963:17;15935:45:::1;:::i;:::-;15925:6;:55;;15894:86;15872:155;;;;-1:-1:-1::0;;;15872:155:0::1;;;;;;;:::i;:::-;325:21:::2;:19;:21::i;:::-;19531:11:::3;::::0;19524:19:::3;::::0;;;:6:::3;:19;::::0;;;;;::::3;;19523:20;19515:47;;;;-1:-1:-1::0;;;19515:47:0::3;;;;;;;:::i;:::-;19603:11;::::0;19595:20:::3;::::0;;;:7:::3;:20;::::0;;;;:27:::3;;::::0;::::3;;:35;;:27:::0;:35:::3;19573:110;;;;-1:-1:-1::0;;;19573:110:0::3;;;;;;;:::i;:::-;19791:11;::::0;19783:20:::3;::::0;;;:7:::3;:20;::::0;;;;:32:::3;::::0;::::3;::::0;19716:33:::3;::::0;;::::3;::::0;:46:::3;::::0;19752:10;;19716:46:::3;:::i;:::-;:99;;19694:187;;;;-1:-1:-1::0;;;19694:187:0::3;;;;;;;:::i;:::-;19913:10;19901:23;::::0;;;:11:::3;:23;::::0;;;;;::::3;;19900:24;19892:59;;;;-1:-1:-1::0;;;19892:59:0::3;;;;;;;:::i;:::-;19975:10;19967:19;::::0;;;:7:::3;:19;::::0;;;;;::::3;;19962:108;;20011:10;20003:19;::::0;;;:7:::3;:19;::::0;;;;:26;;-1:-1:-1;;20003:26:0::3;20025:4;20003:26;::::0;;20044:12:::3;:14:::0;;;::::3;::::0;::::3;:::i;:::-;;;;;;19962:108;20080:14;20097:37;20110:11;;20123:10;20097:12;:37::i;:::-;20080:54;;20174:6;20145:7;:20;20153:11;;20145:20;;;;;;;;;;;:25;;;:35;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;20199:11:0::3;::::0;20191:20:::3;::::0;;;:7:::3;:20;::::0;;;;:33:::3;;:47:::0;;20228:10;;20191:20;:47:::3;::::0;20228:10;;20191:47:::3;:::i;:::-;;;;;;;;20267:10;20249:14;;:28;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;20312:10:0::3;20294:29;::::0;;;:17:::3;:29;::::0;;;;;::::3;;:38;;::::0;;20290:127:::3;;20367:13;;20357:6;:23;;20349:56;;;::::0;-1:-1:-1;;;20349:56:0;;22147:2:1;20349:56:0::3;::::0;::::3;22129:21:1::0;22186:2;22166:18;;;22159:30;-1:-1:-1;;;22205:18:1;;;22198:50;22265:18;;20349:56:0::3;21945:344:1::0;20349:56:0::3;764:10:::0;20490:1:::3;20431:27:::0;;;:13:::3;:27;::::0;;;;;;;20459:11:::3;::::0;20431:40;;;;;;;:56:::3;;::::0;:60;20427:567:::3;;764:10:::0;20508:27:::3;::::0;;;:13:::3;:27;::::0;;;;;;;20536:11:::3;::::0;20508:40;;;;;;;:56:::3;;:66:::0;;20568:6;;20508:27;:66:::3;::::0;20568:6;;20508:66:::3;:::i;:::-;::::0;;;-1:-1:-1;;764:10:0;20589:27:::3;::::0;;;:13:::3;:27;::::0;;;;;;;20617:11:::3;::::0;20589:40;;;;;;;:69;;20648:10;;20589:27;:69:::3;::::0;20648:10;;20589:69:::3;:::i;:::-;::::0;;;-1:-1:-1;20427:567:0::3;::::0;-1:-1:-1;20427:567:0::3;;20734:177;;;;;;;;20761:10;20734:177;;;;20790:1;20734:177;;;;20810:6;20734:177;;;;20835:1;20734:177;;;;20855:1;20734:177;;;;20875:1;20734:177;;;;20895:1;20734:177;;::::0;20691:13:::3;:27;20705:12;764:10:::0;;684:98;20705:12:::3;-1:-1:-1::0;;;;;20691:27:0::3;::::0;;::::3;::::0;;::::3;::::0;;;;;;;;-1:-1:-1;20691:27:0;;;20719:11:::3;::::0;20691:40;;;;;;;:220;;;;;;::::3;::::0;::::3;::::0;::::3;::::0;;;::::3;::::0;::::3;::::0;::::3;::::0;::::3;::::0;::::3;::::0;::::3;::::0;::::3;::::0;::::3;::::0;::::3;::::0;::::3;::::0;::::3;::::0;::::3;::::0;::::3;::::0;::::3;::::0;::::3;::::0;::::3;::::0;;::::3;::::0;::::3;::::0;;::::3;::::0;;;;764:10;20934:21;;:7:::3;:21:::0;;;;;;::::3;;20926:56;;;;-1:-1:-1::0;;;20926:56:0::3;;;;;;;:::i;:::-;21029:13;::::0;21006:20:::3;::::0;-1:-1:-1;;;;;21029:13:0::3;:23;764:10:::0;21029:89:::3;::::0;-1:-1:-1;;;;;;21029:89:0::3;::::0;;;;;;-1:-1:-1;;;;;22524:15:1;;;21029:89:0::3;::::0;::::3;22506:34:1::0;21102:4:0::3;22556:18:1::0;;;22549:43;22441:18;;21029:89:0::3;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21006:112;;21165:12;21151:10;:26;;21129:109;;;;-1:-1:-1::0;;;21129:109:0::3;;;;;;;:::i;:::-;21276:13;::::0;21250:12:::3;::::0;-1:-1:-1;;;;;21276:13:0::3;764:10:::0;21410:12:::3;684:98:::0;12242:619;1195:13;:11;:13::i;:::-;12518:9:::1;12513:341;12537:3;:10;12533:1;:14;12513:341;;;12587:255;;;;;;;;12617:16;12634:1;12617:19;;;;;;;;:::i;:::-;;;;;;;12587:255;;;;12655:20;12676:1;12655:23;;;;;;;;:::i;:::-;;;;;;;12587:255;;;;12697:12;12710:1;12697:15;;;;;;;;:::i;:::-;;;;;;;12587:255;;;;12731:18;12750:1;12731:21;;;;;;;;:::i;:::-;;;;;;;12587:255;;;;12806:18;12825:1;12806:21;;;;;;;;:::i;:::-;;;;;;;12779:20;12800:1;12779:23;;;;;;;;:::i;:::-;;;;;;;12772:4;:30;;;;:::i;:::-;12771:56;;;;:::i;:::-;12587:255;;::::0;12569:7:::1;:15;12577:3;12581:1;12577:6;;;;;;;;:::i;:::-;;;;;;;12569:15;;;;;;;;;;;:273;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12549:3;;;;;;;12513:341;;;;12242:619:::0;;;;;:::o;29855:103::-;1195:13;:11;:13::i;:::-;29927::::1;:23:::0;29855:103::o;15137:244::-;15216:3;15665:1;15659:3;:7;:29;;;;;15677:11;;15670:3;:18;15659:29;15651:60;;;;-1:-1:-1;;;15651:60:0;;;;;;;:::i;:::-;1195:13:::1;:11;:13::i;:::-;15264:11:::2;::::0;;;:6:::2;:11;::::0;;;;;::::2;;15256:34;;;::::0;-1:-1:-1;;;15256:34:0;;24485:2:1;15256:34:0::2;::::0;::::2;24467:21:1::0;24524:2;24504:18;;;24497:30;-1:-1:-1;;;24543:18:1;;;24536:40;24593:18;;15256:34:0::2;24283:334:1::0;15256:34:0::2;15315:5;15301:11:::0;;;:6:::2;:11;::::0;;;;;;:19;;-1:-1:-1;;15301:19:0::2;::::0;;15336:37;15308:3;;15336:37:::2;::::0;::::2;::::0;15357:15:::2;1916:25:1::0;;1904:2;1889:18;;1770:177;11183:637:0;1195:13;:11;:13::i;:::-;11382:1:::1;11373:6;:10;11365:33;;;::::0;-1:-1:-1;;;11365:33:0;;18142:2:1;11365:33:0::1;::::0;::::1;18124:21:1::0;18181:2;18161:18;;;18154:30;-1:-1:-1;;;18200:18:1;;;18193:40;18250:18;;11365:33:0::1;17940:334:1::0;11365:33:0::1;11433:1;11417:13;:17;11409:49;;;::::0;-1:-1:-1;;;11409:49:0;;18481:2:1;11409:49:0::1;::::0;::::1;18463:21:1::0;18520:2;18500:18;;;18493:30;-1:-1:-1;;;18539:18:1;;;18532:49;18598:18;;11409:49:0::1;18279:343:1::0;11409:49:0::1;11471:9;:11:::0;;;:9:::1;:11;::::0;::::1;:::i;:::-;::::0;;;-1:-1:-1;;11516:232:0::1;::::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;11516:232:0;;;::::1;::::0;;::::1;::::0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11503:9:::1;::::0;;11495:18;;:7:::1;:18:::0;;;;;:253;;;;;;11516:232;11495:253;::::1;::::0;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;;;;-1:-1:-1;;11495:253:0;;;;::::1;;-1:-1:-1::0;;11495:253:0;;;;;;::::1;;;::::0;;;::::1;::::0;;;11781:9;11766:46;;12583:25:1;;;12624:18;;;12617:34;;;12667:18;;;12660:34;;;;11766:46:0::1;::::0;12556:18:1;11766:46:0::1;;;;;;;11183:637:::0;;;;:::o;19159:114::-;1195:13;:11;:13::i;:::-;-1:-1:-1;;;;;19238:18:0;;;::::1;;::::0;;;:11:::1;:18;::::0;;;;:27;;-1:-1:-1;;19238:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19159:114::o;14715:194::-;1195:13;:11;:13::i;:::-;-1:-1:-1;;;;;14799:25:0;::::1;14791:56;;;::::0;-1:-1:-1;;;14791:56:0;;20896:2:1;14791:56:0::1;::::0;::::1;20878:21:1::0;20935:2;20915:18;;;20908:30;-1:-1:-1;;;20954:18:1;;;20947:48;21012:18;;14791:56:0::1;20694:342:1::0;14791:56:0::1;14858:13;:43:::0;;-1:-1:-1;;;;;;14858:43:0::1;-1:-1:-1::0;;;;;14858:43:0;;;::::1;::::0;;;::::1;::::0;;14715:194::o;1582:238::-;1195:13;:11;:13::i;:::-;-1:-1:-1;;;;;1685:22:0;::::1;1663:110;;;::::0;-1:-1:-1;;;1663:110:0;;25164:2:1;1663:110:0::1;::::0;::::1;25146:21:1::0;25203:2;25183:18;;;25176:30;25242:34;25222:18;;;25215:62;-1:-1:-1;;;25293:18:1;;;25286:36;25339:19;;1663:110:0::1;24962:402:1::0;1663:110:0::1;1784:28;1803:8;1784:18;:28::i;24887:197::-:0;25061:15;;24986;25039:12;;;:7;:12;;;;;:18;;;24986:15;;25061;25030:27;;:6;:27;:::i;:::-;25029:47;;;;:::i;:::-;25019:57;24887:197;-1:-1:-1;;;24887:197:0:o;24316:253::-;24540:9;;24525:36;;;-1:-1:-1;;;24525:36:0;;;;24418:16;;-1:-1:-1;;;;;24540:9:0;;24525:34;;:36;;;;;;;;;;;;;;24540:9;24525:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24521:40;;:2;:40;:::i;:::-;24486:12;;;;:7;:12;;;;;:18;;;24477:27;;:6;:27;:::i;1331:132::-;1309:6;;-1:-1:-1;;;;;1309:6:0;764:10;1395:23;1387:68;;;;-1:-1:-1;;;1387:68:0;;25571:2:1;1387:68:0;;;25553:21:1;;;25590:18;;;25583:30;25649:34;25629:18;;;25622:62;25701:18;;1387:68:0;25369:356:1;405:152:0;185:1;463:7;;:19;455:63;;;;-1:-1:-1;;;455:63:0;;25932:2:1;455:63:0;;;25914:21:1;25971:2;25951:18;;;25944:30;26010:33;25990:18;;;25983:61;26061:18;;455:63:0;25730:355:1;455:63:0;185:1;531:7;:18;405:152::o;25092:257::-;25207:6;25182:21;:31;;25174:55;;;;-1:-1:-1;;;25174:55:0;;26292:2:1;25174:55:0;;;26274:21:1;26331:2;26311:18;;;26304:30;-1:-1:-1;;;26350:18:1;;;26343:41;26401:18;;25174:55:0;26090:335:1;25174:55:0;25241:12;25259:9;-1:-1:-1;;;;;25259:14:0;25281:6;25259:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25240:52;;;25311:7;25303:38;;;;-1:-1:-1;;;25303:38:0;;26842:2:1;25303:38:0;;;26824:21:1;26881:2;26861:18;;;26854:30;-1:-1:-1;;;26900:18:1;;;26893:48;26958:18;;25303:38:0;26640:342:1;1828:191:0;1921:6;;;-1:-1:-1;;;;;1938:17:0;;;-1:-1:-1;;;;;;1938:17:0;;;;;;;1971:40;;1921:6;;;1938:17;1921:6;;1971:40;;1902:16;;1971:40;1891:128;1828:191;:::o;14:173:1:-;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:186::-;251:6;304:2;292:9;283:7;279:23;275:32;272:52;;;320:1;317;310:12;272:52;343:29;362:9;343:29;:::i;575:180::-;634:6;687:2;675:9;666:7;662:23;658:32;655:52;;;703:1;700;693:12;655:52;-1:-1:-1;726:23:1;;575:180;-1:-1:-1;575:180:1:o;760:118::-;846:5;839:13;832:21;825:5;822:32;812:60;;868:1;865;858:12;883:315;948:6;956;1009:2;997:9;988:7;984:23;980:32;977:52;;;1025:1;1022;1015:12;977:52;1048:29;1067:9;1048:29;:::i;:::-;1038:39;;1127:2;1116:9;1112:18;1099:32;1140:28;1162:5;1140:28;:::i;:::-;1187:5;1177:15;;;883:315;;;;;:::o;1203:309::-;1268:6;1276;1329:2;1317:9;1308:7;1304:23;1300:32;1297:52;;;1345:1;1342;1335:12;1297:52;1381:9;1368:23;1358:33;;1441:2;1430:9;1426:18;1413:32;1454:28;1476:5;1454:28;:::i;1517:248::-;1585:6;1593;1646:2;1634:9;1625:7;1621:23;1617:32;1614:52;;;1662:1;1659;1652:12;1614:52;-1:-1:-1;;1685:23:1;;;1755:2;1740:18;;;1727:32;;-1:-1:-1;1517:248:1:o;2182:584::-;2283:6;2291;2299;2307;2315;2323;2376:3;2364:9;2355:7;2351:23;2347:33;2344:53;;;2393:1;2390;2383:12;2344:53;2429:9;2416:23;2406:33;;2486:2;2475:9;2471:18;2458:32;2448:42;;2537:2;2526:9;2522:18;2509:32;2499:42;;2588:2;2577:9;2573:18;2560:32;2550:42;;2639:3;2628:9;2624:19;2611:33;2601:43;;2694:3;2683:9;2679:19;2666:33;2708:28;2730:5;2708:28;:::i;:::-;2755:5;2745:15;;;2182:584;;;;;;;;:::o;3239:454::-;3334:6;3342;3350;3358;3366;3419:3;3407:9;3398:7;3394:23;3390:33;3387:53;;;3436:1;3433;3426:12;3387:53;-1:-1:-1;;3459:23:1;;;3529:2;3514:18;;3501:32;;-1:-1:-1;3580:2:1;3565:18;;3552:32;;3631:2;3616:18;;3603:32;;-1:-1:-1;3682:3:1;3667:19;3654:33;;-1:-1:-1;3239:454:1;-1:-1:-1;3239:454:1:o;3698:260::-;3766:6;3774;3827:2;3815:9;3806:7;3802:23;3798:32;3795:52;;;3843:1;3840;3833:12;3795:52;3866:29;3885:9;3866:29;:::i;:::-;3856:39;;3914:38;3948:2;3937:9;3933:18;3914:38;:::i;:::-;3904:48;;3698:260;;;;;:::o;3963:254::-;4031:6;4039;4092:2;4080:9;4071:7;4067:23;4063:32;4060:52;;;4108:1;4105;4098:12;4060:52;4131:29;4150:9;4131:29;:::i;:::-;4121:39;4207:2;4192:18;;;;4179:32;;-1:-1:-1;;;3963:254:1:o;5042:127::-;5103:10;5098:3;5094:20;5091:1;5084:31;5134:4;5131:1;5124:15;5158:4;5155:1;5148:15;5174:908;5228:5;5281:3;5274:4;5266:6;5262:17;5258:27;5248:55;;5299:1;5296;5289:12;5248:55;5335:6;5322:20;5361:4;5384:18;5421:2;5417;5414:10;5411:36;;;5427:18;;:::i;:::-;5473:2;5470:1;5466:10;5505:2;5499:9;5568:2;5564:7;5559:2;5555;5551:11;5547:25;5539:6;5535:38;5623:6;5611:10;5608:22;5603:2;5591:10;5588:18;5585:46;5582:72;;;5634:18;;:::i;:::-;5670:2;5663:22;5720:18;;;5766:4;5798:15;;;5794:26;;;5754:17;;;;-1:-1:-1;5832:15:1;;;5829:35;;;5860:1;5857;5850:12;5829:35;5896:4;5888:6;5884:17;5873:28;;5910:142;5926:6;5921:3;5918:15;5910:142;;;5992:17;;5980:30;;6030:12;;;;5943;;;;5910:142;;;6070:6;5174:908;-1:-1:-1;;;;;;;5174:908:1:o;6087:1275::-;6307:6;6315;6323;6331;6339;6392:3;6380:9;6371:7;6367:23;6363:33;6360:53;;;6409:1;6406;6399:12;6360:53;6449:9;6436:23;6478:18;6519:2;6511:6;6508:14;6505:34;;;6535:1;6532;6525:12;6505:34;6558:61;6611:7;6602:6;6591:9;6587:22;6558:61;:::i;:::-;6548:71;;6672:2;6661:9;6657:18;6644:32;6628:48;;6701:2;6691:8;6688:16;6685:36;;;6717:1;6714;6707:12;6685:36;6740:63;6795:7;6784:8;6773:9;6769:24;6740:63;:::i;:::-;6730:73;;6856:2;6845:9;6841:18;6828:32;6812:48;;6885:2;6875:8;6872:16;6869:36;;;6901:1;6898;6891:12;6869:36;6924:63;6979:7;6968:8;6957:9;6953:24;6924:63;:::i;:::-;6914:73;;7040:2;7029:9;7025:18;7012:32;6996:48;;7069:2;7059:8;7056:16;7053:36;;;7085:1;7082;7075:12;7053:36;7108:63;7163:7;7152:8;7141:9;7137:24;7108:63;:::i;:::-;7098:73;;7224:3;7213:9;7209:19;7196:33;7180:49;;7254:2;7244:8;7241:16;7238:36;;;7270:1;7267;7260:12;7238:36;;7293:63;7348:7;7337:8;7326:9;7322:24;7293:63;:::i;:::-;7283:73;;;6087:1275;;;;;;;;:::o;7367:385::-;7453:6;7461;7469;7477;7530:3;7518:9;7509:7;7505:23;7501:33;7498:53;;;7547:1;7544;7537:12;7498:53;-1:-1:-1;;7570:23:1;;;7640:2;7625:18;;7612:32;;-1:-1:-1;7691:2:1;7676:18;;7663:32;;7742:2;7727:18;7714:32;;-1:-1:-1;7367:385:1;-1:-1:-1;7367:385:1:o;8605:342::-;8807:2;8789:21;;;8846:2;8826:18;;;8819:30;-1:-1:-1;;;8880:2:1;8865:18;;8858:48;8938:2;8923:18;;8605:342::o;8952:::-;9154:2;9136:21;;;9193:2;9173:18;;;9166:30;-1:-1:-1;;;9227:2:1;9212:18;;9205:48;9285:2;9270:18;;8952:342::o;9299:127::-;9360:10;9355:3;9351:20;9348:1;9341:31;9391:4;9388:1;9381:15;9415:4;9412:1;9405:15;9431:128;9498:9;;;9519:11;;;9516:37;;;9533:18;;:::i;9564:343::-;9766:2;9748:21;;;9805:2;9785:18;;;9778:30;-1:-1:-1;;;9839:2:1;9824:18;;9817:49;9898:2;9883:18;;9564:343::o;9912:168::-;9985:9;;;10016;;10033:15;;;10027:22;;10013:37;10003:71;;10054:18;;:::i;10085:217::-;10125:1;10151;10141:132;;10195:10;10190:3;10186:20;10183:1;10176:31;10230:4;10227:1;10220:15;10258:4;10255:1;10248:15;10141:132;-1:-1:-1;10287:9:1;;10085:217::o;10307:125::-;10372:9;;;10393:10;;;10390:36;;;10406:18;;:::i;10437:402::-;10639:2;10621:21;;;10678:2;10658:18;;;10651:30;10717:34;10712:2;10697:18;;10690:62;-1:-1:-1;;;10783:2:1;10768:18;;10761:36;10829:3;10814:19;;10437:402::o;10844:346::-;11046:2;11028:21;;;11085:2;11065:18;;;11058:30;-1:-1:-1;;;11119:2:1;11104:18;;11097:52;11181:2;11166:18;;10844:346::o;11195:338::-;11397:2;11379:21;;;11436:2;11416:18;;;11409:30;-1:-1:-1;;;11470:2:1;11455:18;;11448:44;11524:2;11509:18;;11195:338::o;11538:349::-;11740:2;11722:21;;;11779:2;11759:18;;;11752:30;11818:27;11813:2;11798:18;;11791:55;11878:2;11863:18;;11538:349::o;11892:135::-;11931:3;11952:17;;;11949:43;;11972:18;;:::i;:::-;-1:-1:-1;12019:1:1;12008:13;;11892:135::o;12705:273::-;12773:6;12826:2;12814:9;12805:7;12801:23;12797:32;12794:52;;;12842:1;12839;12832:12;12794:52;12874:9;12868:16;12924:4;12917:5;12913:16;12906:5;12903:27;12893:55;;12944:1;12941;12934:12;12983:416;13072:1;13109:5;13072:1;13123:270;13144:7;13134:8;13131:21;13123:270;;;13203:4;13199:1;13195:6;13191:17;13185:4;13182:27;13179:53;;;13212:18;;:::i;:::-;13262:7;13252:8;13248:22;13245:55;;;13282:16;;;;13245:55;13361:22;;;;13321:15;;;;13123:270;;;13127:3;12983:416;;;;;:::o;13404:806::-;13453:5;13483:8;13473:80;;-1:-1:-1;13524:1:1;13538:5;;13473:80;13572:4;13562:76;;-1:-1:-1;13609:1:1;13623:5;;13562:76;13654:4;13672:1;13667:59;;;;13740:1;13735:130;;;;13647:218;;13667:59;13697:1;13688:10;;13711:5;;;13735:130;13772:3;13762:8;13759:17;13756:43;;;13779:18;;:::i;:::-;-1:-1:-1;;13835:1:1;13821:16;;13850:5;;13647:218;;13949:2;13939:8;13936:16;13930:3;13924:4;13921:13;13917:36;13911:2;13901:8;13898:16;13893:2;13887:4;13884:12;13880:35;13877:77;13874:159;;;-1:-1:-1;13986:19:1;;;14018:5;;13874:159;14065:34;14090:8;14084:4;14065:34;:::i;:::-;14135:6;14131:1;14127:6;14123:19;14114:7;14111:32;14108:58;;;14146:18;;:::i;:::-;14184:20;;13404:806;-1:-1:-1;;;13404:806:1:o;14215:140::-;14273:5;14302:47;14343:4;14333:8;14329:19;14323:4;14302:47;:::i;14360:346::-;14562:2;14544:21;;;14601:2;14581:18;;;14574:30;-1:-1:-1;;;14635:2:1;14620:18;;14613:52;14697:2;14682:18;;14360:346::o;15417:184::-;15487:6;15540:2;15528:9;15519:7;15515:23;15511:32;15508:52;;;15556:1;15553;15546:12;15508:52;-1:-1:-1;15579:16:1;;15417:184;-1:-1:-1;15417:184:1:o;16635:245::-;16702:6;16755:2;16743:9;16734:7;16730:23;16726:32;16723:52;;;16771:1;16768;16761:12;16723:52;16803:9;16797:16;16822:28;16844:5;16822:28;:::i;16885:345::-;17087:2;17069:21;;;17126:2;17106:18;;;17099:30;-1:-1:-1;;;17160:2:1;17145:18;;17138:51;17221:2;17206:18;;16885:345::o;21041:179::-;21119:13;;21172:22;21161:34;;21151:45;;21141:73;;21210:1;21207;21200:12;21225:473;21328:6;21336;21344;21352;21360;21413:3;21401:9;21392:7;21388:23;21384:33;21381:53;;;21430:1;21427;21420:12;21381:53;21453:39;21482:9;21453:39;:::i;:::-;21443:49;;21532:2;21521:9;21517:18;21511:25;21501:35;;21576:2;21565:9;21561:18;21555:25;21545:35;;21620:2;21609:9;21605:18;21599:25;21589:35;;21643:49;21687:3;21676:9;21672:19;21643:49;:::i;:::-;21633:59;;21225:473;;;;;;;;:::o;21703:237::-;21775:9;;;21742:7;21800:9;;-1:-1:-1;;;21811:18:1;;21796:34;21793:60;;;21833:18;;:::i;:::-;21906:1;21897:7;21892:16;21889:1;21886:23;21882:1;21875:9;21872:38;21862:72;;21914:18;;:::i;22603:397::-;22805:2;22787:21;;;22844:2;22824:18;;;22817:30;22883:34;22878:2;22863:18;;22856:62;-1:-1:-1;;;22949:2:1;22934:18;;22927:31;22990:3;22975:19;;22603:397::o;23385:412::-;23514:3;23552:6;23546:13;23577:1;23587:129;23601:6;23598:1;23595:13;23587:129;;;23699:4;23683:14;;;23679:25;;23673:32;23660:11;;;23653:53;23616:12;23587:129;;;-1:-1:-1;23771:1:1;23735:16;;23760:13;;;-1:-1:-1;23735:16:1;23385:412;-1:-1:-1;23385:412:1:o;24151:127::-;24212:10;24207:3;24203:20;24200:1;24193:31;24243:4;24240:1;24233:15;24267:4;24264:1;24257:15
Swarm Source
ipfs://65bb570f95c7f827b3fa12122705c24aaef226bb28aa0740f66923e487e2a412
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 97.11% | $0.002315 | 201,633,224.521 | $466,841.4 | |
ETH | 2.05% | $0.000021 | 475,993,758.5852 | $9,834.03 | |
ETH | 0.34% | $1 | 1,612.118 | $1,615.34 | |
ETH | <0.01% | <$0.000001 | 16,008,748.4112 | $1.26 | |
BASE | 0.44% | $3,432.8 | 0.6121 | $2,101.37 | |
BSC | 0.03% | $658.34 | 0.237 | $156.02 | |
BSC | <0.01% | $1 | 9.8394 | $9.87 | |
POL | 0.02% | $1 | 74.4489 | $74.67 | |
POL | <0.01% | $0.000481 | 500 | $0.2405 | |
POL | <0.01% | $0.576632 | 0.14 | $0.080729 | |
OP | <0.01% | $3,433.63 | 0.012 | $41.37 | |
ARB | <0.01% | $3,432.65 | 0.0108 | $37 | |
AVAX | <0.01% | $42.42 | 0.0521 | $2.21 | |
CRONOS | <0.01% | $0.198735 | 0.1399 | $0.027807 |
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.