Feature Tip: Add private address tag to any address under My Name Tag !
Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
USDCNEW_Presale
Compiler Version
v0.8.30+commit.73712a01
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2025-10-21
*/
//SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
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 USDCNEW_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
);
}
USDTInterface.transferFrom(_msgSender(), fundReceiver, usdAmount);
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");
}
USDCInterface.transferFrom(_msgSender(), fundReceiver, usdcAmount);
emit TokensBought(
_msgSender(),
currentSale,
address(USDCInterface),
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 claimMultiple() public {
for (uint8 i = 1; i <= presaleId; i++) {
if (
userClaimData[msg.sender][i].claimAbleAmount > 0 &&
block.timestamp > vesting[i].vestingStartTime
) {
claim(msg.sender, i);
}
}
}
function claimAmount(uint256 _id) public {
claim(msg.sender, _id);
}
function claim(address _user, uint256 _id) internal returns (bool) {
require(isExist[_msgSender()], "User not a participant");
uint256 amount = claimableAmount(_user, _id);
require(amount > 0, "No claimable amount");
require(!isBlackList[_user], "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");
require(
block.timestamp > vesting[_id].vestingStartTime,
"Vesting time is not started yet"
);
uint256 transferAmount;
if (userClaimData[_user][_id].claimCount == 0) {
transferAmount =
(amount * (vesting[_id].initialClaimPercent)) /
1000;
userClaimData[_user][_id].activePercentAmount =
(amount * vesting[_id].vestingPercentage) /
1000;
bool status = IERC20(SaleToken).transfer(_user, transferAmount);
require(status, "Token transfer failed");
userClaimData[_user][_id].claimAbleAmount -= transferAmount;
userClaimData[_user][_id].claimedAmount += transferAmount;
userClaimData[_user][_id].claimCount++;
} else if (
userClaimData[_user][_id].claimAbleAmount >
userClaimData[_user][_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[_user][_id].activePercentAmount;
transferAmount =
_amount -
userClaimData[_user][_id].claimedVestingAmount;
require(transferAmount > 0, "Please wait till next claim");
bool status = IERC20(SaleToken).transfer(_user, transferAmount);
require(status, "Token transfer failed");
userClaimData[_user][_id].claimAbleAmount -= transferAmount;
userClaimData[_user][_id].claimedVestingAmount += transferAmount;
userClaimData[_user][_id].claimedAmount += transferAmount;
userClaimData[_user][_id].claimCount++;
} else {
uint256 duration = block.timestamp - vesting[_id].vestingStartTime;
uint256 multiplier = duration / vesting[_id].vestingTime;
if (multiplier > vesting[_id].totalClaimCycles + 1) {
transferAmount = userClaimData[_user][_id].claimAbleAmount;
require(transferAmount > 0, "Please wait till next claim");
bool status = IERC20(SaleToken).transfer(_user, transferAmount);
require(status, "Token transfer failed");
userClaimData[_user][_id].claimAbleAmount -= transferAmount;
userClaimData[_user][_id].claimedAmount += transferAmount;
userClaimData[_user][_id]
.claimedVestingAmount += transferAmount;
userClaimData[_user][_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 ChangeMinTokenToBuy(uint256 _amount) public onlyOwner {
MinTokenTobuy = _amount;
}
function ChangeOracleAddress(address _oracle) public onlyOwner {
aggregatorInterface = Aggregator(_oracle);
}
function blockTimeStamp() public view returns (uint256) {
return block.timestamp;
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"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":"uint256","name":"_amount","type":"uint256"}],"name":"ChangeMinTokenToBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"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":"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":"blockTimeStamp","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":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimMultiple","outputs":[],"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
608060405234801561000f575f5ffd5b50604051613d11380380613d1183398101604081905261002e9161011c565b60015f5561003b336100b0565b600a80546001600160a01b03199081166001600160a01b039788161790915560148054821693871693909317909255601255600880548216938516939093179092556009805483169190931617909155670de0b6b3a7640000600555620f424060045560068054339216919091179055610176565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b80516001600160a01b0381168114610117575f5ffd5b919050565b5f5f5f5f5f60a08688031215610130575f5ffd5b61013986610101565b945061014760208701610101565b935061015560408701610101565b925061016360608701610101565b9150608086015190509295509295909350565b613b8e806101835f395ff3fe6080604052600436106102f1575f3560e01c8063718a196211610189578063b36d6919116100d8578063e6ab143411610092578063f309fed91161006d578063f309fed914610a1a578063f597573f14610a39578063fb4aa0a114610a58578063fe9f676e14610a77575f5ffd5b8063e6ab14341461091e578063ecf5f437146109dc578063f2fde38b146109fb575f5ffd5b8063b36d69191461085f578063c8f74e111461088d578063d01608c1146108ac578063d099850a146108cb578063e0cef1b0146108ea578063e18e84f914610909575f5ffd5b80638da5cb5b11610143578063a7c601601161011e578063a7c6016014610774578063aa1c3aa514610793578063aeccf735146107a8578063b04c7346146107c7575f5ffd5b80638da5cb5b1461072e5780638e15f4731461074b578063a05d03fd1461075f575f5ffd5b8063718a19621461067e57806379b8d9381461069d5780637cde403d146106bc578063833cde52146106db5780638561c315146106fa5780638d79e66d14610719575f5ffd5b80632ffac82c1161024557806358f98585116101ff5780636f891f82116101da5780636f891f82146106255780636fb4adff146106375780637108b38514610656578063715018a61461066a575f5ffd5b806358f98585146105d25780635dfd59f6146105e7578063680f2e4f14610606575f5ffd5b80632ffac82c146104db578063397643631461054b57806348bf4fcf146105605780634a3bf6c9146105755780634a6413f714610594578063582b5723146105b3575f5ffd5b806311b5444f116102b05780632127fe041161028b5780632127fe041461043957806323b221a01461046657806325312e54146104855780632fb2b44b146104bc575f5ffd5b806311b5444f146103e45780631d5de91c146103ec5780631ed0c9541461040b575f5ffd5b806213eb4b146102f5578062dde10e1461033857806303fcd9ac146103665780630d07cc30146103875780630ec809a8146103a65780630fbfcf37146103c5575b5f5ffd5b348015610300575f5ffd5b5061032361030f3660046133b4565b60116020525f908152604090205460ff1681565b60405190151581526020015b60405180910390f35b348015610343575f5ffd5b506103236103523660046133cd565b600b6020525f908152604090205460ff1681565b348015610371575f5ffd5b506103856103803660046133f1565b610a96565b005b348015610392575f5ffd5b506103856103a13660046133b4565b610ac8565b3480156103b1575f5ffd5b506103856103c03660046133b4565b610af2565b3480156103d0575f5ffd5b506103856103df366004613426565b610b1c565b610323610b4d565b3480156103f7575f5ffd5b506103856104063660046133cd565b610ff6565b348015610416575f5ffd5b506103236104253660046133b4565b600f6020525f908152604090205460ff1681565b348015610444575f5ffd5b50610458610453366004613449565b611003565b60405190815260200161032f565b348015610471575f5ffd5b506103856104803660046133cd565b6110d2565b348015610490575f5ffd5b506009546104a4906001600160a01b031681565b6040516001600160a01b03909116815260200161032f565b3480156104c7575f5ffd5b506103856104d6366004613469565b6110e0565b3480156104e6575f5ffd5b506105236104f53660046133cd565b600d6020525f9081526040902080546001820154600283015460038401546004909401549293919290919085565b604080519586526020860194909452928401919091526060830152608082015260a00161032f565b348015610556575f5ffd5b5061045860055481565b34801561056b575f5ffd5b5061045860045481565b348015610580575f5ffd5b5061038561058f3660046134ba565b6111e9565b34801561059f575f5ffd5b506103856105ae3660046133cd565b611246565b3480156105be575f5ffd5b506103856105cd3660046133cd565b611322565b3480156105dd575f5ffd5b5061045860025481565b3480156105f2575f5ffd5b506103856106013660046134f1565b611343565b348015610611575f5ffd5b50610385610620366004613522565b61141d565b348015610630575f5ffd5b5042610458565b348015610642575f5ffd5b506103856106513660046133b4565b61149e565b348015610661575f5ffd5b50610385611513565b348015610675575f5ffd5b50610385611586565b348015610689575f5ffd5b50610458610698366004613449565b611599565b3480156106a8575f5ffd5b506104586106b7366004613522565b6115e0565b3480156106c7575f5ffd5b506103856106d63660046133cd565b6116d9565b3480156106e6575f5ffd5b506014546104a4906001600160a01b031681565b348015610705575f5ffd5b506103856107143660046133b4565b611789565b348015610724575f5ffd5b5061045860125481565b348015610739575f5ffd5b506001546001600160a01b03166104a4565b348015610756575f5ffd5b506104586117fe565b34801561076a575f5ffd5b5061045860135481565b34801561077f575f5ffd5b5061032361078e3660046133cd565b61188b565b34801561079e575f5ffd5b5061045860075481565b3480156107b3575f5ffd5b506103236107c23660046133cd565b611d87565b3480156107d2575f5ffd5b5061082a6107e1366004613522565b600e602052815f5260405f20602052805f5260405f205f9150915050805f0154908060010154908060020154908060030154908060040154908060050154908060060154905087565b604080519788526020880196909652948601939093526060850191909152608084015260a083015260c082015260e00161032f565b34801561086a575f5ffd5b506103236108793660046133b4565b60106020525f908152604090205460ff1681565b348015610898575f5ffd5b506103856108a73660046135fa565b612249565b3480156108b7575f5ffd5b506103856108c63660046133cd565b6123a3565b3480156108d6575f5ffd5b506103856108e53660046136dd565b61246b565b3480156108f5575f5ffd5b506103856109043660046133f1565b612606565b348015610914575f5ffd5b5061045860035481565b348015610929575f5ffd5b5061098e6109383660046133cd565b600c6020525f908152604090208054600182015460028301546003840154600485015460058601546006870154600788015460089098015496979596949593949293919290919060ff808216916101009004168a565b604080519a8b5260208b0199909952978901969096526060880194909452608087019290925260a086015260c085015260e0840152151561010083015215156101208201526101400161032f565b3480156109e7575f5ffd5b506103856109f63660046133b4565b612638565b348015610a06575f5ffd5b50610385610a153660046133b4565b6126ad565b348015610a25575f5ffd5b50610458610a34366004613449565b612723565b348015610a44575f5ffd5b506008546104a4906001600160a01b031681565b348015610a63575f5ffd5b506006546104a4906001600160a01b031681565b348015610a82575f5ffd5b50610458610a91366004613449565b612755565b610a9e6127e6565b6001600160a01b03919091165f908152600f60205260409020805460ff1916911515919091179055565b610ad06127e6565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b610afa6127e6565b601480546001600160a01b0319166001600160a01b0392909216919091179055565b610b246127e6565b5f918252600c602052604090912060080180549115156101000261ff0019909216919091179055565b5f6013545f81118015610b61575060135481145b610b865760405162461bcd60e51b8152600401610b7d9061370c565b60405180910390fd5b601354610b938134611599565b5f828152600c602052604090206008015460ff161515600114610bc85760405162461bcd60e51b8152600401610b7d90613738565b5f81118015610bf857505f828152600c602052604090206004810154600590910154610bf49190613778565b8111155b610c145760405162461bcd60e51b8152600401610b7d9061378b565b610c1c612840565b6005545f90610c2b90806137b8565b600454610c366117fe565b610c4090346137b8565b610c4a91906137b8565b610c5491906137cf565b6013545f908152600c60205260409020600681015460079091015491925090610c7e9083906137ee565b1115610c9c5760405162461bcd60e51b8152600401610b7d90613801565b335f9081526010602052604090205460ff1615610ccb5760405162461bcd60e51b8152600401610b7d90613847565b6013545f908152600b602052604090205460ff1615610cfc5760405162461bcd60e51b8152600401610b7d90613877565b6013545f908152600c602052604090206008015460ff161515600114610d345760405162461bcd60e51b8152600401610b7d9061389f565b335f9081526011602052604090205460ff16610d7757335f908152601160205260408120805460ff191660011790556007805491610d71836138d6565b91905055505b5f610d8460135483612723565b335f908152600f602052604081205491925060ff90911615159003610dec57601254811015610dec5760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e7420616d6f756e742160601b6044820152606401610b7d565b6013545f908152600c602052604081206004018054839290610e0f9084906137ee565b90915550506013545f908152600c602052604081206007018054849290610e379084906137ee565b925050819055508160025f828254610e4f91906137ee565b9091555050335f908152600e60209081526040808320601354845290915290206002015415610ee157335f908152600e60209081526040808320601354845290915281206002018054839290610ea69084906137ee565b9091555050335f908152600e60209081526040808320601354845290915281208054849290610ed69084906137ee565b90915550610f859050565b6040518060e001604052808381526020015f81526020018281526020015f81526020015f81526020015f81526020015f815250600e5f610f1e3390565b6001600160a01b0316815260208082019290925260409081015f90812060135482528352819020835181559183015160018301558201516002820155606082015160038201556080820151600482015560a0820151600582015560c0909101516006909101555b600654610f9b906001600160a01b031634612897565b60135460408051838152346020820152428183015290515f929133917f4d8aead3491b7eba4b5c7a65fc17e493b9e63f9e433522fc5f6a85a168fc9d369181900360600190a4600195505050610ff060015f55565b50505090565b610ffe6127e6565b601255565b5f828152600c6020526040812060020154819061102090846137b8565b905060145f9054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611072573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061109691906138ee565b6110a190600a6139f1565b6110a96117fe565b6110b391906137b8565b6005546110c090836137b8565b6110ca91906137cf565b949350505050565b6110dc3382612969565b5050565b6110e86127e6565b5f85116111245760405162461bcd60e51b815260206004820152600a6024820152695a65726f20707269636560b01b6044820152606401610b7d565b5f83116111695760405162461bcd60e51b815260206004820152601360248201527216995c9bc81d1bdad95b9cc81d1bc81cd95b1b606a1b6044820152606401610b7d565b5f82116111a65760405162461bcd60e51b815260206004820152600b60248201526a05a65726f206861726361760ac1b6044820152606401610b7d565b5f958652600c6020526040909520600281019490945560038401929092556005830155600682015560080180549115156101000261ff0019909216919091179055565b6111f16127e6565b5f858152600d60205260409020848155600181018490556002810183905560030181905580611221846064613778565b61122b91906137cf565b5f958652600d60205260409095206004019490945550505050565b805f81118015611257575060135481145b6112735760405162461bcd60e51b8152600401610b7d9061370c565b61127b6127e6565b5f828152600b602052604090205460ff16156112ca5760405162461bcd60e51b815260206004820152600e60248201526d105b1c9958591e481c185d5cd95960921b6044820152606401610b7d565b5f828152600b602052604090819020805460ff191660011790555182907f927e6cd2dce24f32508868820cdc35f09d9de0f4b44e945114110125196fba9f906113169042815260200190565b60405180910390a25050565b61132a6127e6565b600654611340906001600160a01b031682612897565b50565b61134b6127e6565b60015b6003548110156113e2576001600160a01b0383165f9081526011602052604090205460ff1661138f5760405162461bcd60e51b8152600401610b7d906139ff565b6001600160a01b038381165f908152600e6020818152604080842086855280835281852060029081018054978a16875294845282862088875284529185209091019490945592909252905560010161134e565b506001600160a01b039182165f90815260116020526040808220805460ff199081169091559290931681529190912080549091166001179055565b6114256127e6565b60065460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303815f875af1158015611475573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114999190613a2f565b505050565b6114a66127e6565b6001600160a01b0381166114f15760405162461bcd60e51b8152602060048201526012602482015271496e76616c696420706172616d657465727360701b6044820152606401610b7d565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b60015b6003548160ff161161134057335f908152600e6020908152604080832060ff8516845290915290206002015415801590611560575060ff81165f908152600d602052604090205442115b1561157457611572338260ff16612969565b505b8061157e81613a4a565b915050611516565b61158e6127e6565b6115975f613348565b565b5f5f6005546005546115ab91906137b8565b6004546115b66117fe565b6115c090866137b8565b6115ca91906137b8565b6115d491906137cf565b90506110ca8482612723565b6001600160a01b0382165f908152600e602090815260408083208484528252808320815160e0810183528154815260018201549381019390935260028101549183018290526003810154606084015260048101546080840152600581015460a08401526006015460c083015261168b5760405162461bcd60e51b815260206004820152601060248201526f4e6f7468696e6720746f20636c61696d60801b6044820152606401610b7d565b6040810151806116cf5760405162461bcd60e51b815260206004820152600f60248201526e105b1c9958591e4818db185a5b5959608a1b6044820152606401610b7d565b9150505b92915050565b6116e16127e6565b5f818152600c60205260409020600501546117345760405162461bcd60e51b8152602060048201526013602482015272141c995cd85b1948191bdb89dd08195e1a5cdd606a1b6044820152606401610b7d565b6013541561176657601380545f908152600c6020526040808220426001909101559154815220600801805460ff191690555b5f818152600c60205260409020428155600801805460ff19166001179055601355565b6117916127e6565b6001600160a01b0381166117dc5760405162461bcd60e51b81526020600482015260126024820152715a65726f20746f6b656e206164647265737360701b6044820152606401610b7d565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b5f5f600a5f9054906101000a90046001600160a01b03166001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015611850573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118749190613a81565b505050915050806402540be4006116d39190613acf565b5f6013545f8111801561189f575060135481145b6118bb5760405162461bcd60e51b8152600401610b7d9061370c565b6013546118c88185612723565b5f828152600c602052604090206008015460ff1615156001146118fd5760405162461bcd60e51b8152600401610b7d90613738565b5f8111801561192d57505f828152600c6020526040902060048101546005909101546119299190613778565b8111155b6119495760405162461bcd60e51b8152600401610b7d9061378b565b611951612840565b6013545f908152600b602052604090205460ff16156119825760405162461bcd60e51b8152600401610b7d90613877565b6013545f908152600c602052604090206008015460ff1615156001146119ba5760405162461bcd60e51b8152600401610b7d9061389f565b335f9081526010602052604090205460ff16156119e95760405162461bcd60e51b8152600401610b7d90613847565b6013545f908152600c602052604090206006810154600790910154611a0f9087906137ee565b1115611a2d5760405162461bcd60e51b8152600401610b7d90613801565b335f9081526011602052604090205460ff16611a7057335f908152601160205260408120805460ff191660011790556007805491611a6a836138d6565b91905055505b5f611a7d60135487612723565b905080600c5f60135481526020019081526020015f206004015f828254611aa491906137ee565b90915550506013545f908152600c602052604081206007018054889290611acc9084906137ee565b925050819055508560025f828254611ae491906137ee565b9091555050335f908152600f602052604081205460ff1615159003611b4c57601254811015611b4c5760405162461bcd60e51b815260206004820152601460248201527313195cdcc81d1a185b881b5a5b88185b5bdd5b9d60621b6044820152606401610b7d565b335f908152600e60209081526040808320601354845290915290206002015415611bd957335f908152600e60209081526040808320601354845290915281206002018054839290611b9e9084906137ee565b9091555050335f908152600e60209081526040808320601354845290915281208054889290611bce9084906137ee565b90915550611c7d9050565b6040518060e001604052808781526020015f81526020018281526020015f81526020015f81526020015f81526020015f815250600e5f611c163390565b6001600160a01b0316815260208082019290925260409081015f90812060135482528352819020835181559183015160018301558201516002820155606082015160038201556080820151600482015560a0820151600582015560c0909101516006909101555b6008546001600160a01b03166323b872dd3360065460405160e084901b6001600160e01b03191681526001600160a01b03928316600482015291166024820152604481018990526064016020604051808303815f875af1158015611ce3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d079190613a2f565b506008546013546001600160a01b0390911690335b6001600160a01b03167f4d8aead3491b7eba4b5c7a65fc17e493b9e63f9e433522fc5f6a85a168fc9d36848a42604051611d69939291909283526020830191909152604082015260600190565b60405180910390a46001945050611d7f60015f55565b505050919050565b5f6013545f81118015611d9b575060135481145b611db75760405162461bcd60e51b8152600401610b7d9061370c565b601354611dc48185612723565b5f828152600c602052604090206008015460ff161515600114611df95760405162461bcd60e51b8152600401610b7d90613738565b5f81118015611e2957505f828152600c602052604090206004810154600590910154611e259190613778565b8111155b611e455760405162461bcd60e51b8152600401610b7d9061378b565b611e4d612840565b6013545f908152600b602052604090205460ff1615611e7e5760405162461bcd60e51b8152600401610b7d90613877565b6013545f908152600c602052604090206008015460ff161515600114611eb65760405162461bcd60e51b8152600401610b7d9061389f565b6013545f908152600c602052604090206006810154600790910154611edc9087906137ee565b1115611efa5760405162461bcd60e51b8152600401610b7d90613801565b335f9081526010602052604090205460ff1615611f295760405162461bcd60e51b8152600401610b7d90613847565b335f9081526011602052604090205460ff16611f6c57335f908152601160205260408120805460ff191660011790556007805491611f66836138d6565b91905055505b5f611f7960135487612723565b905080600c5f60135481526020019081526020015f206004015f828254611fa091906137ee565b90915550506013545f908152600c602052604081206007018054889290611fc89084906137ee565b925050819055508560025f828254611fe091906137ee565b9091555050335f908152600f602052604081205460ff1615159003612048576012548110156120485760405162461bcd60e51b815260206004820152601460248201527313195cdcc81d1a185b881b5a5b88185b5bdd5b9d60621b6044820152606401610b7d565b335f908152600e602090815260408083206013548452909152902060020154156120d557335f908152600e6020908152604080832060135484529091528120600201805483929061209a9084906137ee565b9091555050335f908152600e602090815260408083206013548452909152812080548892906120ca9084906137ee565b909155506121a69050565b6040518060e001604052808781526020015f81526020018281526020015f81526020015f81526020015f81526020015f815250600e5f6121123390565b6001600160a01b0316815260208082019290925260409081015f9081206013548252835281812084518155848401516001820155848301516002820155606085015160038201556080850151600482015560a0850151600582015560c090940151600690940193909355338352601190915290205460ff166121a65760405162461bcd60e51b8152600401610b7d906139ff565b6009546001600160a01b03166323b872dd3360065460405160e084901b6001600160e01b03191681526001600160a01b03928316600482015291166024820152604481018990526064016020604051808303815f875af115801561220c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122309190613a2f565b506009546013546001600160a01b039091169033611d1c565b6122516127e6565b5f5b855181101561239b576040518060a0016040528086838151811061227957612279613afe565b6020026020010151815260200185838151811061229857612298613afe565b602002602001015181526020018483815181106122b7576122b7613afe565b602002602001015181526020018383815181106122d6576122d6613afe565b602002602001015181526020018383815181106122f5576122f5613afe565b602002602001015186848151811061230f5761230f613afe565b60200260200101516103e86123249190613778565b61232e91906137cf565b815250600d5f88848151811061234657612346613afe565b602002602001015181526020019081526020015f205f820151815f0155602082015181600101556040820151816002015560608201518160030155608082015181600401559050508080600101915050612253565b505050505050565b805f811180156123b4575060135481145b6123d05760405162461bcd60e51b8152600401610b7d9061370c565b6123d86127e6565b5f828152600b602052604090205460ff166124225760405162461bcd60e51b815260206004820152600a602482015269139bdd081c185d5cd95960b21b6044820152606401610b7d565b5f828152600b602052604090819020805460ff191690555182907ff608654a6d8e1785594639dd55babb61d7ae157382015f904a24224e50333b1d906113169042815260200190565b6124736127e6565b5f84116124af5760405162461bcd60e51b815260206004820152600a6024820152695a65726f20707269636560b01b6044820152606401610b7d565b5f82116124f45760405162461bcd60e51b815260206004820152601360248201527216995c9bc81d1bdad95b9cc81d1bc81cd95b1b606a1b6044820152606401610b7d565b60038054905f612503836138d6565b909155505060408051610140810182525f808252602080830182815283850189815260608086018a81526080870186815260a088018b815260c089018b815260e08a01898152610100808c018b81526101208d018c8152600380548e52600c8d528f8e209e518f559a5160018f0155985160028e015595518c8a0155935160048c0155915160058b01555160068a0155516007890155905160089097018054935161ffff1990941697151561ff001916979097179215150291909117909455548451878152918201839052938101919091527f6a00651728a92841411081673eaa4eddbed06d102a590e050c22def40d4dd0b8910160405180910390a250505050565b61260e6127e6565b6001600160a01b03919091165f908152601060205260409020805460ff1916911515919091179055565b6126406127e6565b6001600160a01b03811661268b5760405162461bcd60e51b81526020600482015260126024820152715a65726f20746f6b656e206164647265737360701b6044820152606401610b7d565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b6126b56127e6565b6001600160a01b03811661271a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b7d565b61134081613348565b6004545f838152600c602052604081206002015490919061274490846137b8565b61274e91906137cf565b9392505050565b6014546040805163313ce56760e01b815290515f926001600160a01b03169163313ce5679160048083019260209291908290030181865afa15801561279c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127c091906138ee565b6127cb90600a6139f1565b5f848152600c602052604090206002015461274490846137b8565b6001546001600160a01b031633146115975760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b7d565b60025f54036128915760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610b7d565b60025f55565b804710156128d55760405162461bcd60e51b815260206004820152600b60248201526a4c6f772062616c616e636560a81b6044820152606401610b7d565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f811461291e576040519150601f19603f3d011682016040523d82523d5f602084013e612923565b606091505b50509050806114995760405162461bcd60e51b81526020600482015260126024820152711155120814185e5b595b9d0819985a5b195960721b6044820152606401610b7d565b335f9081526011602052604081205460ff166129975760405162461bcd60e51b8152600401610b7d906139ff565b5f6129a284846115e0565b90505f81116129e95760405162461bcd60e51b8152602060048201526013602482015272139bc818db185a5b58589b1948185b5bdd5b9d606a1b6044820152606401610b7d565b6001600160a01b0384165f9081526010602052604090205460ff1615612a215760405162461bcd60e51b8152600401610b7d90613847565b6014546001600160a01b0316612a795760405162461bcd60e51b815260206004820152601d60248201527f50726573616c6520746f6b656e2061646472657373206e6f74207365740000006044820152606401610b7d565b6014546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015612abf573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ae39190613b12565b811115612b3c5760405162461bcd60e51b815260206004820152602160248201527f4e6f7420656e6f75676820746f6b656e7320696e2074686520636f6e747261636044820152601d60fa1b6064820152608401610b7d565b5f838152600c602052604090206008015460ff610100909104161515600114612b9d5760405162461bcd60e51b8152602060048201526013602482015272436c61696d206973206e6f7420656e61626c6560681b6044820152606401610b7d565b5f838152600d60205260409020544211612bf95760405162461bcd60e51b815260206004820152601f60248201527f56657374696e672074696d65206973206e6f74207374617274656420796574006044820152606401610b7d565b6001600160a01b0384165f908152600e602090815260408083208684529091528120600501548103612de0575f848152600d60205260409020600101546103e890612c4490846137b8565b612c4e91906137cf565b5f858152600d60205260409020600301549091506103e890612c7090846137b8565b612c7a91906137cf565b6001600160a01b038681165f818152600e602090815260408083208a845290915280822060060194909455601454935163a9059cbb60e01b8152600481019290925260248201859052929091169063a9059cbb906044016020604051808303815f875af1158015612ced573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d119190613a2f565b905080612d305760405162461bcd60e51b8152600401610b7d90613b29565b6001600160a01b0386165f908152600e6020908152604080832088845290915281206002018054849290612d65908490613778565b90915550506001600160a01b0386165f908152600e6020908152604080832088845290915281206004018054849290612d9f9084906137ee565b90915550506001600160a01b0386165f908152600e602090815260408083208884529091528120600501805491612dd5836138d6565b91905055505061333d565b6001600160a01b0385165f908152600e602090815260408083208784529091529020600681015460029091015411156130ac575f848152600d6020526040812054612e2b9042613778565b5f868152600d602052604081206002015491925090612e4a90836137cf565b5f878152600d6020526040902060040154909150811115612e7857505f858152600d60205260409020600401545b6001600160a01b0387165f908152600e60209081526040808320898452909152812060060154612ea890836137b8565b6001600160a01b0389165f908152600e602090815260408083208b8452909152902060030154909150612edb9082613778565b93505f8411612f2c5760405162461bcd60e51b815260206004820152601b60248201527f506c6561736520776169742074696c6c206e65787420636c61696d00000000006044820152606401610b7d565b60145460405163a9059cbb60e01b81526001600160a01b038a81166004830152602482018790525f92169063a9059cbb906044016020604051808303815f875af1158015612f7c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612fa09190613a2f565b905080612fbf5760405162461bcd60e51b8152600401610b7d90613b29565b6001600160a01b0389165f908152600e602090815260408083208b845290915281206002018054879290612ff4908490613778565b90915550506001600160a01b0389165f908152600e602090815260408083208b84529091528120600301805487929061302e9084906137ee565b90915550506001600160a01b0389165f908152600e602090815260408083208b8452909152812060040180548792906130689084906137ee565b90915550506001600160a01b0389165f908152600e602090815260408083208b8452909152812060050180549161309e836138d6565b91905055505050505061333d565b5f848152600d60205260408120546130c49042613778565b5f868152600d6020526040812060020154919250906130e390836137cf565b5f878152600d60205260409020600401549091506131029060016137ee565b8111156132fb576001600160a01b0387165f908152600e6020908152604080832089845290915290206002015492508261317e5760405162461bcd60e51b815260206004820152601b60248201527f506c6561736520776169742074696c6c206e65787420636c61696d00000000006044820152606401610b7d565b60145460405163a9059cbb60e01b81526001600160a01b038981166004830152602482018690525f92169063a9059cbb906044016020604051808303815f875af11580156131ce573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131f29190613a2f565b9050806132115760405162461bcd60e51b8152600401610b7d90613b29565b6001600160a01b0388165f908152600e602090815260408083208a845290915281206002018054869290613246908490613778565b90915550506001600160a01b0388165f908152600e602090815260408083208a8452909152812060040180548692906132809084906137ee565b90915550506001600160a01b0388165f908152600e602090815260408083208a8452909152812060030180548692906132ba9084906137ee565b90915550506001600160a01b0388165f908152600e602090815260408083208a845290915281206005018054916132f0836138d6565b91905055505061333a565b60405162461bcd60e51b81526020600482015260146024820152735761697420666f72206e65787420636c6169696d60601b6044820152606401610b7d565b50505b506001949350505050565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b80356001600160a01b03811681146133af575f5ffd5b919050565b5f602082840312156133c4575f5ffd5b61274e82613399565b5f602082840312156133dd575f5ffd5b5035919050565b8015158114611340575f5ffd5b5f5f60408385031215613402575f5ffd5b61340b83613399565b9150602083013561341b816133e4565b809150509250929050565b5f5f60408385031215613437575f5ffd5b82359150602083013561341b816133e4565b5f5f6040838503121561345a575f5ffd5b50508035926020909101359150565b5f5f5f5f5f5f60c0878903121561347e575f5ffd5b863595506020870135945060408701359350606087013592506080870135915060a08701356134ac816133e4565b809150509295509295509295565b5f5f5f5f5f60a086880312156134ce575f5ffd5b505083359560208501359550604085013594606081013594506080013592509050565b5f5f60408385031215613502575f5ffd5b61350b83613399565b915061351960208401613399565b90509250929050565b5f5f60408385031215613533575f5ffd5b61353c83613399565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011261356d575f5ffd5b813567ffffffffffffffff8111156135875761358761354a565b8060051b604051601f19603f830116810181811067ffffffffffffffff821117156135b4576135b461354a565b6040529182526020818501810192908101868411156135d1575f5ffd5b6020860192505b838310156135f05782358152602092830192016135d8565b5095945050505050565b5f5f5f5f5f60a0868803121561360e575f5ffd5b853567ffffffffffffffff811115613624575f5ffd5b6136308882890161355e565b955050602086013567ffffffffffffffff81111561364c575f5ffd5b6136588882890161355e565b945050604086013567ffffffffffffffff811115613674575f5ffd5b6136808882890161355e565b935050606086013567ffffffffffffffff81111561369c575f5ffd5b6136a88882890161355e565b925050608086013567ffffffffffffffff8111156136c4575f5ffd5b6136d08882890161355e565b9150509295509295909350565b5f5f5f5f608085870312156136f0575f5ffd5b5050823594602084013594506040840135936060013592509050565b602080825260129082015271125b9d985b1a59081c1c995cd85b19481a5960721b604082015260600190565b60208082526012908201527170726553416c65206e6f742041637469766560701b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b818103818111156116d3576116d3613764565b602080825260139082015272125b9d985b1a59081cd85b1948185b5bdd5b9d606a1b604082015260600190565b80820281158282048414176116d3576116d3613764565b5f826137e957634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156116d3576116d3613764565b60208082526026908201527f416d6f756e742073686f756c64206265206c657373207468616e206c6566744860408201526506172646361760d41b606082015260800190565b6020808252601690820152751058d8dbdd5b9d081a5cc8189b1858dad31a5cdd195960521b604082015260600190565b6020808252600e908201526d141c995cd85b19481c185d5cd95960921b604082015260600190565b60208082526019908201527f50726573616c65206973206e6f74206163746976652079657400000000000000604082015260600190565b5f600182016138e7576138e7613764565b5060010190565b5f602082840312156138fe575f5ffd5b815160ff8116811461274e575f5ffd5b6001815b60018411156139495780850481111561392d5761392d613764565b600184161561393b57908102905b60019390931c928002613912565b935093915050565b5f8261395f575060016116d3565b8161396b57505f6116d3565b8160018114613981576002811461398b576139a7565b60019150506116d3565b60ff84111561399c5761399c613764565b50506001821b6116d3565b5060208310610133831016604e8410600b84101617156139ca575081810a6116d3565b6139d65f19848461390e565b805f19048211156139e9576139e9613764565b029392505050565b5f61274e60ff841683613951565b602080825260169082015275155cd95c881b9bdd0818481c185c9d1a58da5c185b9d60521b604082015260600190565b5f60208284031215613a3f575f5ffd5b815161274e816133e4565b5f60ff821660ff8103613a5f57613a5f613764565b60010192915050565b805169ffffffffffffffffffff811681146133af575f5ffd5b5f5f5f5f5f60a08688031215613a95575f5ffd5b613a9e86613a68565b60208701516040880151606089015192975090955093509150613ac360808701613a68565b90509295509295909350565b8082025f8212600160ff1b84141615613aea57613aea613764565b81810583148215176116d3576116d3613764565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215613b22575f5ffd5b5051919050565b602080825260159082015274151bdad95b881d1c985b9cd9995c8819985a5b1959605a1b60408201526060019056fea26469706673582212206c15108ba45546bd0c2df48a6e15c6999a017f72d1970c88f8350b44cae12e2d64736f6c634300081e00330000000000000000000000005f4ec3df9cbd43714fe2740f5e3616155c5b8419000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000ddc2cbf96836f55ca40b819078f3ecbf1b2703150000000000000000000000000000000000000000000000000000000000000001
Deployed Bytecode
0x6080604052600436106102f1575f3560e01c8063718a196211610189578063b36d6919116100d8578063e6ab143411610092578063f309fed91161006d578063f309fed914610a1a578063f597573f14610a39578063fb4aa0a114610a58578063fe9f676e14610a77575f5ffd5b8063e6ab14341461091e578063ecf5f437146109dc578063f2fde38b146109fb575f5ffd5b8063b36d69191461085f578063c8f74e111461088d578063d01608c1146108ac578063d099850a146108cb578063e0cef1b0146108ea578063e18e84f914610909575f5ffd5b80638da5cb5b11610143578063a7c601601161011e578063a7c6016014610774578063aa1c3aa514610793578063aeccf735146107a8578063b04c7346146107c7575f5ffd5b80638da5cb5b1461072e5780638e15f4731461074b578063a05d03fd1461075f575f5ffd5b8063718a19621461067e57806379b8d9381461069d5780637cde403d146106bc578063833cde52146106db5780638561c315146106fa5780638d79e66d14610719575f5ffd5b80632ffac82c1161024557806358f98585116101ff5780636f891f82116101da5780636f891f82146106255780636fb4adff146106375780637108b38514610656578063715018a61461066a575f5ffd5b806358f98585146105d25780635dfd59f6146105e7578063680f2e4f14610606575f5ffd5b80632ffac82c146104db578063397643631461054b57806348bf4fcf146105605780634a3bf6c9146105755780634a6413f714610594578063582b5723146105b3575f5ffd5b806311b5444f116102b05780632127fe041161028b5780632127fe041461043957806323b221a01461046657806325312e54146104855780632fb2b44b146104bc575f5ffd5b806311b5444f146103e45780631d5de91c146103ec5780631ed0c9541461040b575f5ffd5b806213eb4b146102f5578062dde10e1461033857806303fcd9ac146103665780630d07cc30146103875780630ec809a8146103a65780630fbfcf37146103c5575b5f5ffd5b348015610300575f5ffd5b5061032361030f3660046133b4565b60116020525f908152604090205460ff1681565b60405190151581526020015b60405180910390f35b348015610343575f5ffd5b506103236103523660046133cd565b600b6020525f908152604090205460ff1681565b348015610371575f5ffd5b506103856103803660046133f1565b610a96565b005b348015610392575f5ffd5b506103856103a13660046133b4565b610ac8565b3480156103b1575f5ffd5b506103856103c03660046133b4565b610af2565b3480156103d0575f5ffd5b506103856103df366004613426565b610b1c565b610323610b4d565b3480156103f7575f5ffd5b506103856104063660046133cd565b610ff6565b348015610416575f5ffd5b506103236104253660046133b4565b600f6020525f908152604090205460ff1681565b348015610444575f5ffd5b50610458610453366004613449565b611003565b60405190815260200161032f565b348015610471575f5ffd5b506103856104803660046133cd565b6110d2565b348015610490575f5ffd5b506009546104a4906001600160a01b031681565b6040516001600160a01b03909116815260200161032f565b3480156104c7575f5ffd5b506103856104d6366004613469565b6110e0565b3480156104e6575f5ffd5b506105236104f53660046133cd565b600d6020525f9081526040902080546001820154600283015460038401546004909401549293919290919085565b604080519586526020860194909452928401919091526060830152608082015260a00161032f565b348015610556575f5ffd5b5061045860055481565b34801561056b575f5ffd5b5061045860045481565b348015610580575f5ffd5b5061038561058f3660046134ba565b6111e9565b34801561059f575f5ffd5b506103856105ae3660046133cd565b611246565b3480156105be575f5ffd5b506103856105cd3660046133cd565b611322565b3480156105dd575f5ffd5b5061045860025481565b3480156105f2575f5ffd5b506103856106013660046134f1565b611343565b348015610611575f5ffd5b50610385610620366004613522565b61141d565b348015610630575f5ffd5b5042610458565b348015610642575f5ffd5b506103856106513660046133b4565b61149e565b348015610661575f5ffd5b50610385611513565b348015610675575f5ffd5b50610385611586565b348015610689575f5ffd5b50610458610698366004613449565b611599565b3480156106a8575f5ffd5b506104586106b7366004613522565b6115e0565b3480156106c7575f5ffd5b506103856106d63660046133cd565b6116d9565b3480156106e6575f5ffd5b506014546104a4906001600160a01b031681565b348015610705575f5ffd5b506103856107143660046133b4565b611789565b348015610724575f5ffd5b5061045860125481565b348015610739575f5ffd5b506001546001600160a01b03166104a4565b348015610756575f5ffd5b506104586117fe565b34801561076a575f5ffd5b5061045860135481565b34801561077f575f5ffd5b5061032361078e3660046133cd565b61188b565b34801561079e575f5ffd5b5061045860075481565b3480156107b3575f5ffd5b506103236107c23660046133cd565b611d87565b3480156107d2575f5ffd5b5061082a6107e1366004613522565b600e602052815f5260405f20602052805f5260405f205f9150915050805f0154908060010154908060020154908060030154908060040154908060050154908060060154905087565b604080519788526020880196909652948601939093526060850191909152608084015260a083015260c082015260e00161032f565b34801561086a575f5ffd5b506103236108793660046133b4565b60106020525f908152604090205460ff1681565b348015610898575f5ffd5b506103856108a73660046135fa565b612249565b3480156108b7575f5ffd5b506103856108c63660046133cd565b6123a3565b3480156108d6575f5ffd5b506103856108e53660046136dd565b61246b565b3480156108f5575f5ffd5b506103856109043660046133f1565b612606565b348015610914575f5ffd5b5061045860035481565b348015610929575f5ffd5b5061098e6109383660046133cd565b600c6020525f908152604090208054600182015460028301546003840154600485015460058601546006870154600788015460089098015496979596949593949293919290919060ff808216916101009004168a565b604080519a8b5260208b0199909952978901969096526060880194909452608087019290925260a086015260c085015260e0840152151561010083015215156101208201526101400161032f565b3480156109e7575f5ffd5b506103856109f63660046133b4565b612638565b348015610a06575f5ffd5b50610385610a153660046133b4565b6126ad565b348015610a25575f5ffd5b50610458610a34366004613449565b612723565b348015610a44575f5ffd5b506008546104a4906001600160a01b031681565b348015610a63575f5ffd5b506006546104a4906001600160a01b031681565b348015610a82575f5ffd5b50610458610a91366004613449565b612755565b610a9e6127e6565b6001600160a01b03919091165f908152600f60205260409020805460ff1916911515919091179055565b610ad06127e6565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b610afa6127e6565b601480546001600160a01b0319166001600160a01b0392909216919091179055565b610b246127e6565b5f918252600c602052604090912060080180549115156101000261ff0019909216919091179055565b5f6013545f81118015610b61575060135481145b610b865760405162461bcd60e51b8152600401610b7d9061370c565b60405180910390fd5b601354610b938134611599565b5f828152600c602052604090206008015460ff161515600114610bc85760405162461bcd60e51b8152600401610b7d90613738565b5f81118015610bf857505f828152600c602052604090206004810154600590910154610bf49190613778565b8111155b610c145760405162461bcd60e51b8152600401610b7d9061378b565b610c1c612840565b6005545f90610c2b90806137b8565b600454610c366117fe565b610c4090346137b8565b610c4a91906137b8565b610c5491906137cf565b6013545f908152600c60205260409020600681015460079091015491925090610c7e9083906137ee565b1115610c9c5760405162461bcd60e51b8152600401610b7d90613801565b335f9081526010602052604090205460ff1615610ccb5760405162461bcd60e51b8152600401610b7d90613847565b6013545f908152600b602052604090205460ff1615610cfc5760405162461bcd60e51b8152600401610b7d90613877565b6013545f908152600c602052604090206008015460ff161515600114610d345760405162461bcd60e51b8152600401610b7d9061389f565b335f9081526011602052604090205460ff16610d7757335f908152601160205260408120805460ff191660011790556007805491610d71836138d6565b91905055505b5f610d8460135483612723565b335f908152600f602052604081205491925060ff90911615159003610dec57601254811015610dec5760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e7420616d6f756e742160601b6044820152606401610b7d565b6013545f908152600c602052604081206004018054839290610e0f9084906137ee565b90915550506013545f908152600c602052604081206007018054849290610e379084906137ee565b925050819055508160025f828254610e4f91906137ee565b9091555050335f908152600e60209081526040808320601354845290915290206002015415610ee157335f908152600e60209081526040808320601354845290915281206002018054839290610ea69084906137ee565b9091555050335f908152600e60209081526040808320601354845290915281208054849290610ed69084906137ee565b90915550610f859050565b6040518060e001604052808381526020015f81526020018281526020015f81526020015f81526020015f81526020015f815250600e5f610f1e3390565b6001600160a01b0316815260208082019290925260409081015f90812060135482528352819020835181559183015160018301558201516002820155606082015160038201556080820151600482015560a0820151600582015560c0909101516006909101555b600654610f9b906001600160a01b031634612897565b60135460408051838152346020820152428183015290515f929133917f4d8aead3491b7eba4b5c7a65fc17e493b9e63f9e433522fc5f6a85a168fc9d369181900360600190a4600195505050610ff060015f55565b50505090565b610ffe6127e6565b601255565b5f828152600c6020526040812060020154819061102090846137b8565b905060145f9054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611072573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061109691906138ee565b6110a190600a6139f1565b6110a96117fe565b6110b391906137b8565b6005546110c090836137b8565b6110ca91906137cf565b949350505050565b6110dc3382612969565b5050565b6110e86127e6565b5f85116111245760405162461bcd60e51b815260206004820152600a6024820152695a65726f20707269636560b01b6044820152606401610b7d565b5f83116111695760405162461bcd60e51b815260206004820152601360248201527216995c9bc81d1bdad95b9cc81d1bc81cd95b1b606a1b6044820152606401610b7d565b5f82116111a65760405162461bcd60e51b815260206004820152600b60248201526a05a65726f206861726361760ac1b6044820152606401610b7d565b5f958652600c6020526040909520600281019490945560038401929092556005830155600682015560080180549115156101000261ff0019909216919091179055565b6111f16127e6565b5f858152600d60205260409020848155600181018490556002810183905560030181905580611221846064613778565b61122b91906137cf565b5f958652600d60205260409095206004019490945550505050565b805f81118015611257575060135481145b6112735760405162461bcd60e51b8152600401610b7d9061370c565b61127b6127e6565b5f828152600b602052604090205460ff16156112ca5760405162461bcd60e51b815260206004820152600e60248201526d105b1c9958591e481c185d5cd95960921b6044820152606401610b7d565b5f828152600b602052604090819020805460ff191660011790555182907f927e6cd2dce24f32508868820cdc35f09d9de0f4b44e945114110125196fba9f906113169042815260200190565b60405180910390a25050565b61132a6127e6565b600654611340906001600160a01b031682612897565b50565b61134b6127e6565b60015b6003548110156113e2576001600160a01b0383165f9081526011602052604090205460ff1661138f5760405162461bcd60e51b8152600401610b7d906139ff565b6001600160a01b038381165f908152600e6020818152604080842086855280835281852060029081018054978a16875294845282862088875284529185209091019490945592909252905560010161134e565b506001600160a01b039182165f90815260116020526040808220805460ff199081169091559290931681529190912080549091166001179055565b6114256127e6565b60065460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303815f875af1158015611475573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114999190613a2f565b505050565b6114a66127e6565b6001600160a01b0381166114f15760405162461bcd60e51b8152602060048201526012602482015271496e76616c696420706172616d657465727360701b6044820152606401610b7d565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b60015b6003548160ff161161134057335f908152600e6020908152604080832060ff8516845290915290206002015415801590611560575060ff81165f908152600d602052604090205442115b1561157457611572338260ff16612969565b505b8061157e81613a4a565b915050611516565b61158e6127e6565b6115975f613348565b565b5f5f6005546005546115ab91906137b8565b6004546115b66117fe565b6115c090866137b8565b6115ca91906137b8565b6115d491906137cf565b90506110ca8482612723565b6001600160a01b0382165f908152600e602090815260408083208484528252808320815160e0810183528154815260018201549381019390935260028101549183018290526003810154606084015260048101546080840152600581015460a08401526006015460c083015261168b5760405162461bcd60e51b815260206004820152601060248201526f4e6f7468696e6720746f20636c61696d60801b6044820152606401610b7d565b6040810151806116cf5760405162461bcd60e51b815260206004820152600f60248201526e105b1c9958591e4818db185a5b5959608a1b6044820152606401610b7d565b9150505b92915050565b6116e16127e6565b5f818152600c60205260409020600501546117345760405162461bcd60e51b8152602060048201526013602482015272141c995cd85b1948191bdb89dd08195e1a5cdd606a1b6044820152606401610b7d565b6013541561176657601380545f908152600c6020526040808220426001909101559154815220600801805460ff191690555b5f818152600c60205260409020428155600801805460ff19166001179055601355565b6117916127e6565b6001600160a01b0381166117dc5760405162461bcd60e51b81526020600482015260126024820152715a65726f20746f6b656e206164647265737360701b6044820152606401610b7d565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b5f5f600a5f9054906101000a90046001600160a01b03166001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015611850573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118749190613a81565b505050915050806402540be4006116d39190613acf565b5f6013545f8111801561189f575060135481145b6118bb5760405162461bcd60e51b8152600401610b7d9061370c565b6013546118c88185612723565b5f828152600c602052604090206008015460ff1615156001146118fd5760405162461bcd60e51b8152600401610b7d90613738565b5f8111801561192d57505f828152600c6020526040902060048101546005909101546119299190613778565b8111155b6119495760405162461bcd60e51b8152600401610b7d9061378b565b611951612840565b6013545f908152600b602052604090205460ff16156119825760405162461bcd60e51b8152600401610b7d90613877565b6013545f908152600c602052604090206008015460ff1615156001146119ba5760405162461bcd60e51b8152600401610b7d9061389f565b335f9081526010602052604090205460ff16156119e95760405162461bcd60e51b8152600401610b7d90613847565b6013545f908152600c602052604090206006810154600790910154611a0f9087906137ee565b1115611a2d5760405162461bcd60e51b8152600401610b7d90613801565b335f9081526011602052604090205460ff16611a7057335f908152601160205260408120805460ff191660011790556007805491611a6a836138d6565b91905055505b5f611a7d60135487612723565b905080600c5f60135481526020019081526020015f206004015f828254611aa491906137ee565b90915550506013545f908152600c602052604081206007018054889290611acc9084906137ee565b925050819055508560025f828254611ae491906137ee565b9091555050335f908152600f602052604081205460ff1615159003611b4c57601254811015611b4c5760405162461bcd60e51b815260206004820152601460248201527313195cdcc81d1a185b881b5a5b88185b5bdd5b9d60621b6044820152606401610b7d565b335f908152600e60209081526040808320601354845290915290206002015415611bd957335f908152600e60209081526040808320601354845290915281206002018054839290611b9e9084906137ee565b9091555050335f908152600e60209081526040808320601354845290915281208054889290611bce9084906137ee565b90915550611c7d9050565b6040518060e001604052808781526020015f81526020018281526020015f81526020015f81526020015f81526020015f815250600e5f611c163390565b6001600160a01b0316815260208082019290925260409081015f90812060135482528352819020835181559183015160018301558201516002820155606082015160038201556080820151600482015560a0820151600582015560c0909101516006909101555b6008546001600160a01b03166323b872dd3360065460405160e084901b6001600160e01b03191681526001600160a01b03928316600482015291166024820152604481018990526064016020604051808303815f875af1158015611ce3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d079190613a2f565b506008546013546001600160a01b0390911690335b6001600160a01b03167f4d8aead3491b7eba4b5c7a65fc17e493b9e63f9e433522fc5f6a85a168fc9d36848a42604051611d69939291909283526020830191909152604082015260600190565b60405180910390a46001945050611d7f60015f55565b505050919050565b5f6013545f81118015611d9b575060135481145b611db75760405162461bcd60e51b8152600401610b7d9061370c565b601354611dc48185612723565b5f828152600c602052604090206008015460ff161515600114611df95760405162461bcd60e51b8152600401610b7d90613738565b5f81118015611e2957505f828152600c602052604090206004810154600590910154611e259190613778565b8111155b611e455760405162461bcd60e51b8152600401610b7d9061378b565b611e4d612840565b6013545f908152600b602052604090205460ff1615611e7e5760405162461bcd60e51b8152600401610b7d90613877565b6013545f908152600c602052604090206008015460ff161515600114611eb65760405162461bcd60e51b8152600401610b7d9061389f565b6013545f908152600c602052604090206006810154600790910154611edc9087906137ee565b1115611efa5760405162461bcd60e51b8152600401610b7d90613801565b335f9081526010602052604090205460ff1615611f295760405162461bcd60e51b8152600401610b7d90613847565b335f9081526011602052604090205460ff16611f6c57335f908152601160205260408120805460ff191660011790556007805491611f66836138d6565b91905055505b5f611f7960135487612723565b905080600c5f60135481526020019081526020015f206004015f828254611fa091906137ee565b90915550506013545f908152600c602052604081206007018054889290611fc89084906137ee565b925050819055508560025f828254611fe091906137ee565b9091555050335f908152600f602052604081205460ff1615159003612048576012548110156120485760405162461bcd60e51b815260206004820152601460248201527313195cdcc81d1a185b881b5a5b88185b5bdd5b9d60621b6044820152606401610b7d565b335f908152600e602090815260408083206013548452909152902060020154156120d557335f908152600e6020908152604080832060135484529091528120600201805483929061209a9084906137ee565b9091555050335f908152600e602090815260408083206013548452909152812080548892906120ca9084906137ee565b909155506121a69050565b6040518060e001604052808781526020015f81526020018281526020015f81526020015f81526020015f81526020015f815250600e5f6121123390565b6001600160a01b0316815260208082019290925260409081015f9081206013548252835281812084518155848401516001820155848301516002820155606085015160038201556080850151600482015560a0850151600582015560c090940151600690940193909355338352601190915290205460ff166121a65760405162461bcd60e51b8152600401610b7d906139ff565b6009546001600160a01b03166323b872dd3360065460405160e084901b6001600160e01b03191681526001600160a01b03928316600482015291166024820152604481018990526064016020604051808303815f875af115801561220c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122309190613a2f565b506009546013546001600160a01b039091169033611d1c565b6122516127e6565b5f5b855181101561239b576040518060a0016040528086838151811061227957612279613afe565b6020026020010151815260200185838151811061229857612298613afe565b602002602001015181526020018483815181106122b7576122b7613afe565b602002602001015181526020018383815181106122d6576122d6613afe565b602002602001015181526020018383815181106122f5576122f5613afe565b602002602001015186848151811061230f5761230f613afe565b60200260200101516103e86123249190613778565b61232e91906137cf565b815250600d5f88848151811061234657612346613afe565b602002602001015181526020019081526020015f205f820151815f0155602082015181600101556040820151816002015560608201518160030155608082015181600401559050508080600101915050612253565b505050505050565b805f811180156123b4575060135481145b6123d05760405162461bcd60e51b8152600401610b7d9061370c565b6123d86127e6565b5f828152600b602052604090205460ff166124225760405162461bcd60e51b815260206004820152600a602482015269139bdd081c185d5cd95960b21b6044820152606401610b7d565b5f828152600b602052604090819020805460ff191690555182907ff608654a6d8e1785594639dd55babb61d7ae157382015f904a24224e50333b1d906113169042815260200190565b6124736127e6565b5f84116124af5760405162461bcd60e51b815260206004820152600a6024820152695a65726f20707269636560b01b6044820152606401610b7d565b5f82116124f45760405162461bcd60e51b815260206004820152601360248201527216995c9bc81d1bdad95b9cc81d1bc81cd95b1b606a1b6044820152606401610b7d565b60038054905f612503836138d6565b909155505060408051610140810182525f808252602080830182815283850189815260608086018a81526080870186815260a088018b815260c089018b815260e08a01898152610100808c018b81526101208d018c8152600380548e52600c8d528f8e209e518f559a5160018f0155985160028e015595518c8a0155935160048c0155915160058b01555160068a0155516007890155905160089097018054935161ffff1990941697151561ff001916979097179215150291909117909455548451878152918201839052938101919091527f6a00651728a92841411081673eaa4eddbed06d102a590e050c22def40d4dd0b8910160405180910390a250505050565b61260e6127e6565b6001600160a01b03919091165f908152601060205260409020805460ff1916911515919091179055565b6126406127e6565b6001600160a01b03811661268b5760405162461bcd60e51b81526020600482015260126024820152715a65726f20746f6b656e206164647265737360701b6044820152606401610b7d565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b6126b56127e6565b6001600160a01b03811661271a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b7d565b61134081613348565b6004545f838152600c602052604081206002015490919061274490846137b8565b61274e91906137cf565b9392505050565b6014546040805163313ce56760e01b815290515f926001600160a01b03169163313ce5679160048083019260209291908290030181865afa15801561279c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127c091906138ee565b6127cb90600a6139f1565b5f848152600c602052604090206002015461274490846137b8565b6001546001600160a01b031633146115975760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b7d565b60025f54036128915760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610b7d565b60025f55565b804710156128d55760405162461bcd60e51b815260206004820152600b60248201526a4c6f772062616c616e636560a81b6044820152606401610b7d565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f811461291e576040519150601f19603f3d011682016040523d82523d5f602084013e612923565b606091505b50509050806114995760405162461bcd60e51b81526020600482015260126024820152711155120814185e5b595b9d0819985a5b195960721b6044820152606401610b7d565b335f9081526011602052604081205460ff166129975760405162461bcd60e51b8152600401610b7d906139ff565b5f6129a284846115e0565b90505f81116129e95760405162461bcd60e51b8152602060048201526013602482015272139bc818db185a5b58589b1948185b5bdd5b9d606a1b6044820152606401610b7d565b6001600160a01b0384165f9081526010602052604090205460ff1615612a215760405162461bcd60e51b8152600401610b7d90613847565b6014546001600160a01b0316612a795760405162461bcd60e51b815260206004820152601d60248201527f50726573616c6520746f6b656e2061646472657373206e6f74207365740000006044820152606401610b7d565b6014546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015612abf573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ae39190613b12565b811115612b3c5760405162461bcd60e51b815260206004820152602160248201527f4e6f7420656e6f75676820746f6b656e7320696e2074686520636f6e747261636044820152601d60fa1b6064820152608401610b7d565b5f838152600c602052604090206008015460ff610100909104161515600114612b9d5760405162461bcd60e51b8152602060048201526013602482015272436c61696d206973206e6f7420656e61626c6560681b6044820152606401610b7d565b5f838152600d60205260409020544211612bf95760405162461bcd60e51b815260206004820152601f60248201527f56657374696e672074696d65206973206e6f74207374617274656420796574006044820152606401610b7d565b6001600160a01b0384165f908152600e602090815260408083208684529091528120600501548103612de0575f848152600d60205260409020600101546103e890612c4490846137b8565b612c4e91906137cf565b5f858152600d60205260409020600301549091506103e890612c7090846137b8565b612c7a91906137cf565b6001600160a01b038681165f818152600e602090815260408083208a845290915280822060060194909455601454935163a9059cbb60e01b8152600481019290925260248201859052929091169063a9059cbb906044016020604051808303815f875af1158015612ced573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d119190613a2f565b905080612d305760405162461bcd60e51b8152600401610b7d90613b29565b6001600160a01b0386165f908152600e6020908152604080832088845290915281206002018054849290612d65908490613778565b90915550506001600160a01b0386165f908152600e6020908152604080832088845290915281206004018054849290612d9f9084906137ee565b90915550506001600160a01b0386165f908152600e602090815260408083208884529091528120600501805491612dd5836138d6565b91905055505061333d565b6001600160a01b0385165f908152600e602090815260408083208784529091529020600681015460029091015411156130ac575f848152600d6020526040812054612e2b9042613778565b5f868152600d602052604081206002015491925090612e4a90836137cf565b5f878152600d6020526040902060040154909150811115612e7857505f858152600d60205260409020600401545b6001600160a01b0387165f908152600e60209081526040808320898452909152812060060154612ea890836137b8565b6001600160a01b0389165f908152600e602090815260408083208b8452909152902060030154909150612edb9082613778565b93505f8411612f2c5760405162461bcd60e51b815260206004820152601b60248201527f506c6561736520776169742074696c6c206e65787420636c61696d00000000006044820152606401610b7d565b60145460405163a9059cbb60e01b81526001600160a01b038a81166004830152602482018790525f92169063a9059cbb906044016020604051808303815f875af1158015612f7c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612fa09190613a2f565b905080612fbf5760405162461bcd60e51b8152600401610b7d90613b29565b6001600160a01b0389165f908152600e602090815260408083208b845290915281206002018054879290612ff4908490613778565b90915550506001600160a01b0389165f908152600e602090815260408083208b84529091528120600301805487929061302e9084906137ee565b90915550506001600160a01b0389165f908152600e602090815260408083208b8452909152812060040180548792906130689084906137ee565b90915550506001600160a01b0389165f908152600e602090815260408083208b8452909152812060050180549161309e836138d6565b91905055505050505061333d565b5f848152600d60205260408120546130c49042613778565b5f868152600d6020526040812060020154919250906130e390836137cf565b5f878152600d60205260409020600401549091506131029060016137ee565b8111156132fb576001600160a01b0387165f908152600e6020908152604080832089845290915290206002015492508261317e5760405162461bcd60e51b815260206004820152601b60248201527f506c6561736520776169742074696c6c206e65787420636c61696d00000000006044820152606401610b7d565b60145460405163a9059cbb60e01b81526001600160a01b038981166004830152602482018690525f92169063a9059cbb906044016020604051808303815f875af11580156131ce573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131f29190613a2f565b9050806132115760405162461bcd60e51b8152600401610b7d90613b29565b6001600160a01b0388165f908152600e602090815260408083208a845290915281206002018054869290613246908490613778565b90915550506001600160a01b0388165f908152600e602090815260408083208a8452909152812060040180548692906132809084906137ee565b90915550506001600160a01b0388165f908152600e602090815260408083208a8452909152812060030180548692906132ba9084906137ee565b90915550506001600160a01b0388165f908152600e602090815260408083208a845290915281206005018054916132f0836138d6565b91905055505061333a565b60405162461bcd60e51b81526020600482015260146024820152735761697420666f72206e65787420636c6169696d60601b6044820152606401610b7d565b50505b506001949350505050565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b80356001600160a01b03811681146133af575f5ffd5b919050565b5f602082840312156133c4575f5ffd5b61274e82613399565b5f602082840312156133dd575f5ffd5b5035919050565b8015158114611340575f5ffd5b5f5f60408385031215613402575f5ffd5b61340b83613399565b9150602083013561341b816133e4565b809150509250929050565b5f5f60408385031215613437575f5ffd5b82359150602083013561341b816133e4565b5f5f6040838503121561345a575f5ffd5b50508035926020909101359150565b5f5f5f5f5f5f60c0878903121561347e575f5ffd5b863595506020870135945060408701359350606087013592506080870135915060a08701356134ac816133e4565b809150509295509295509295565b5f5f5f5f5f60a086880312156134ce575f5ffd5b505083359560208501359550604085013594606081013594506080013592509050565b5f5f60408385031215613502575f5ffd5b61350b83613399565b915061351960208401613399565b90509250929050565b5f5f60408385031215613533575f5ffd5b61353c83613399565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011261356d575f5ffd5b813567ffffffffffffffff8111156135875761358761354a565b8060051b604051601f19603f830116810181811067ffffffffffffffff821117156135b4576135b461354a565b6040529182526020818501810192908101868411156135d1575f5ffd5b6020860192505b838310156135f05782358152602092830192016135d8565b5095945050505050565b5f5f5f5f5f60a0868803121561360e575f5ffd5b853567ffffffffffffffff811115613624575f5ffd5b6136308882890161355e565b955050602086013567ffffffffffffffff81111561364c575f5ffd5b6136588882890161355e565b945050604086013567ffffffffffffffff811115613674575f5ffd5b6136808882890161355e565b935050606086013567ffffffffffffffff81111561369c575f5ffd5b6136a88882890161355e565b925050608086013567ffffffffffffffff8111156136c4575f5ffd5b6136d08882890161355e565b9150509295509295909350565b5f5f5f5f608085870312156136f0575f5ffd5b5050823594602084013594506040840135936060013592509050565b602080825260129082015271125b9d985b1a59081c1c995cd85b19481a5960721b604082015260600190565b60208082526012908201527170726553416c65206e6f742041637469766560701b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b818103818111156116d3576116d3613764565b602080825260139082015272125b9d985b1a59081cd85b1948185b5bdd5b9d606a1b604082015260600190565b80820281158282048414176116d3576116d3613764565b5f826137e957634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156116d3576116d3613764565b60208082526026908201527f416d6f756e742073686f756c64206265206c657373207468616e206c6566744860408201526506172646361760d41b606082015260800190565b6020808252601690820152751058d8dbdd5b9d081a5cc8189b1858dad31a5cdd195960521b604082015260600190565b6020808252600e908201526d141c995cd85b19481c185d5cd95960921b604082015260600190565b60208082526019908201527f50726573616c65206973206e6f74206163746976652079657400000000000000604082015260600190565b5f600182016138e7576138e7613764565b5060010190565b5f602082840312156138fe575f5ffd5b815160ff8116811461274e575f5ffd5b6001815b60018411156139495780850481111561392d5761392d613764565b600184161561393b57908102905b60019390931c928002613912565b935093915050565b5f8261395f575060016116d3565b8161396b57505f6116d3565b8160018114613981576002811461398b576139a7565b60019150506116d3565b60ff84111561399c5761399c613764565b50506001821b6116d3565b5060208310610133831016604e8410600b84101617156139ca575081810a6116d3565b6139d65f19848461390e565b805f19048211156139e9576139e9613764565b029392505050565b5f61274e60ff841683613951565b602080825260169082015275155cd95c881b9bdd0818481c185c9d1a58da5c185b9d60521b604082015260600190565b5f60208284031215613a3f575f5ffd5b815161274e816133e4565b5f60ff821660ff8103613a5f57613a5f613764565b60010192915050565b805169ffffffffffffffffffff811681146133af575f5ffd5b5f5f5f5f5f60a08688031215613a95575f5ffd5b613a9e86613a68565b60208701516040880151606089015192975090955093509150613ac360808701613a68565b90509295509295909350565b8082025f8212600160ff1b84141615613aea57613aea613764565b81810583148215176116d3576116d3613764565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215613b22575f5ffd5b5051919050565b602080825260159082015274151bdad95b881d1c985b9cd9995c8819985a5b1959605a1b60408201526060019056fea26469706673582212206c15108ba45546bd0c2df48a6e15c6999a017f72d1970c88f8350b44cae12e2d64736f6c634300081e0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000005f4ec3df9cbd43714fe2740f5e3616155c5b8419000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000ddc2cbf96836f55ca40b819078f3ecbf1b2703150000000000000000000000000000000000000000000000000000000000000001
-----Decoded View---------------
Arg [0] : _oracle (address): 0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419
Arg [1] : _usdt (address): 0xdAC17F958D2ee523a2206206994597C13D831ec7
Arg [2] : _usdc (address): 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48
Arg [3] : _SaleToken (address): 0xddc2CbF96836f55ca40b819078F3ecbf1b270315
Arg [4] : _MinTokenTobuy (uint256): 1
-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 0000000000000000000000005f4ec3df9cbd43714fe2740f5e3616155c5b8419
Arg [1] : 000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7
Arg [2] : 000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
Arg [3] : 000000000000000000000000ddc2cbf96836f55ca40b819078f3ecbf1b270315
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000001
Deployed Bytecode Sourcemap
8060:21503:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9579:39;;;;;;;;;;-1:-1:-1;9579:39:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;548:14:1;;541:22;523:41;;511:2;496:18;9579:39:0;;;;;;;;9246:38;;;;;;;;;;-1:-1:-1;9246:38:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16044:160;;;;;;;;;;-1:-1:-1;16044:160:0;;;;;:::i;:::-;;:::i;:::-;;29332:123;;;;;;;;;;-1:-1:-1;29332:123:0;;;;;:::i;:::-;;:::i;29114:97::-;;;;;;;;;;-1:-1:-1;29114:97:0;;;;;:::i;:::-;;:::i;13588:120::-;;;;;;;;;;-1:-1:-1;13588:120:0;;;;;:::i;:::-;;:::i;20923:2184::-;;;:::i;29219:105::-;;;;;;;;;;-1:-1:-1;29219:105:0;;;;;:::i;:::-;;:::i;9473:49::-;;;;;;;;;;-1:-1:-1;9473:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;23115:327;;;;;;;;;;-1:-1:-1;23115:327:0;;;;;:::i;:::-;;:::i;:::-;;;2112:25:1;;;2100:2;2085:18;23115:327:0;1966:177:1;25173:82:0;;;;;;;;;;-1:-1:-1;25173:82:0;;;;;:::i;:::-;;:::i;9156:35::-;;;;;;;;;;-1:-1:-1;9156:35:0;;;;-1:-1:-1;;;;;9156:35:0;;;;;;-1:-1:-1;;;;;2334:32:1;;;2316:51;;2304:2;2289:18;9156:35:0;2148:225:1;13716:618:0;;;;;;;;;;-1:-1:-1;13716:618:0;;;;;:::i;:::-;;:::i;9344:46::-;;;;;;;;;;-1:-1:-1;9344:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3486:25:1;;;3542:2;3527:18;;3520:34;;;;3570:18;;;3563:34;;;;3628:2;3613:18;;3606:34;3671:3;3656:19;;3649:35;3473:3;3458:19;9344:46:0;3227:463:1;8224:29:0;;;;;;;;;;;;;;;;8187:30;;;;;;;;;;;;;;;;12872:583;;;;;;;;;;-1:-1:-1;12872:583:0;;;;;:::i;:::-;;:::i;14920:212::-;;;;;;;;;;-1:-1:-1;14920:212:0;;;;;:::i;:::-;;:::i;28981:125::-;;;;;;;;;;-1:-1:-1;28981:125:0;;;;;:::i;:::-;;:::i;8120:29::-;;;;;;;;;;;;;;;;18197:530;;;;;;;;;;-1:-1:-1;18197:530:0;;;;;:::i;:::-;;:::i;28834:139::-;;;;;;;;;;-1:-1:-1;28834:139:0;;;;;:::i;:::-;;:::i;29463:97::-;;;;;;;;;;-1:-1:-1;29537:15:0;29463:97;;14342:166;;;;;;;;;;-1:-1:-1;14342:166:0;;;;;:::i;:::-;;:::i;24843:322::-;;;;;;;;;;;;;:::i;1471:103::-;;;;;;;;;;;;;:::i;23706:295::-;;;;;;;;;;-1:-1:-1;23706:295:0;;;;;:::i;:::-;;:::i;24472:363::-;;;;;;;;;;-1:-1:-1;24472:363:0;;;;;:::i;:::-;;:::i;11831:406::-;;;;;;;;;;-1:-1:-1;11831:406:0;;;;;:::i;:::-;;:::i;9695:24::-;;;;;;;;;;-1:-1:-1;9695:24:0;;;;-1:-1:-1;;;;;9695:24:0;;;14516:194;;;;;;;;;;-1:-1:-1;14516:194:0;;;;;:::i;:::-;;:::i;9627:28::-;;;;;;;;;;;;;;;;1236:87;;;;;;;;;;-1:-1:-1;1309:6:0;;-1:-1:-1;;;;;1309:6:0;1236:87;;15376:208;;;;;;;;;;;;;:::i;9662:26::-;;;;;;;;;;;;;;;;16212:1977;;;;;;;;;;-1:-1:-1;16212:1977:0;;;;;:::i;:::-;;:::i;8294:27::-;;;;;;;;;;;;;;;;18857:2058;;;;;;;;;;-1:-1:-1;18857:2058:0;;;;;:::i;:::-;;:::i;9397:69::-;;;;;;;;;;-1:-1:-1;9397:69:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5501:25:1;;;5557:2;5542:18;;5535:34;;;;5585:18;;;5578:34;;;;5643:2;5628:18;;5621:34;;;;5686:3;5671:19;;5664:35;5730:3;5715:19;;5708:35;5774:3;5759:19;;5752:35;5488:3;5473:19;9397:69:0;5186:607:1;9529:43:0;;;;;;;;;;-1:-1:-1;9529:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12245:619;;;;;;;;;;-1:-1:-1;12245:619:0;;;;;:::i;:::-;;:::i;15140:228::-;;;;;;;;;;-1:-1:-1;15140:228:0;;;;;:::i;:::-;;:::i;11186:637::-;;;;;;;;;;-1:-1:-1;11186:637:0;;;;;:::i;:::-;;:::i;18735:114::-;;;;;;;;;;-1:-1:-1;18735:114:0;;;;;:::i;:::-;;:::i;8156:24::-;;;;;;;;;;;;;;;;9291:46;;;;;;;;;;-1:-1:-1;9291:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9191:25:1;;;9247:2;9232:18;;9225:34;;;;9275:18;;;9268:34;;;;9333:2;9318:18;;9311:34;;;;9376:3;9361:19;;9354:35;;;;9420:3;9405:19;;9398:35;9464:3;9449:19;;9442:35;9508:3;9493:19;;9486:35;9565:14;9558:22;9552:3;9537:19;;9530:51;9625:14;9618:22;9612:3;9597:19;;9590:51;9178:3;9163:19;9291:46:0;8804:843:1;14718:194:0;;;;;;;;;;-1:-1:-1;14718:194:0;;;;;:::i;:::-;;:::i;1582:238::-;;;;;;;;;;-1:-1:-1;1582:238:0;;;;;:::i;:::-;;:::i;24009:190::-;;;;;;;;;;-1:-1:-1;24009:190:0;;;;;:::i;:::-;;:::i;9114:35::-;;;;;;;;;;-1:-1:-1;9114:35:0;;;;-1:-1:-1;;;;;9114:35:0;;;8260:27;;;;;;;;;;-1:-1:-1;8260:27:0;;;;-1:-1:-1;;;;;8260:27:0;;;23450:248;;;;;;;;;;-1:-1:-1;23450:248:0;;;;;:::i;:::-;;:::i;16044:160::-;1195:13;:11;:13::i;:::-;-1:-1:-1;;;;;16162:24:0;;;::::1;;::::0;;;:17:::1;:24;::::0;;;;:34;;-1:-1:-1;;16162:34:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16044:160::o;29332:123::-;1195:13;:11;:13::i;:::-;29406:19:::1;:41:::0;;-1:-1:-1;;;;;;29406:41:0::1;-1:-1:-1::0;;;;;29406:41:0;;;::::1;::::0;;;::::1;::::0;;29332:123::o;29114:97::-;1195:13;:11;:13::i;:::-;29185:9:::1;:18:::0;;-1:-1:-1;;;;;;29185:18:0::1;-1:-1:-1::0;;;;;29185:18:0;;;::::1;::::0;;;::::1;::::0;;29114:97::o;13588:120::-;1195:13;:11;:13::i;:::-;13664:12:::1;::::0;;;:7:::1;:12;::::0;;;;;:26:::1;;:36:::0;;;::::1;;;;-1:-1:-1::0;;13664:36:0;;::::1;::::0;;;::::1;::::0;;13588:120::o;20923:2184::-;21131:4;21004:11;;15654:1;15648:3;:7;:29;;;;;15666:11;;15659:3;:18;15648:29;15640:60;;;;-1:-1:-1;;;15640:60:0;;;;;;;:::i;:::-;;;;;;;;;21041:11:::1;::::0;21054:35:::1;21041:11:::0;21079:9:::1;21054:11;:35::i;:::-;15800:12;::::0;;;:7:::1;:12;::::0;;;;:19:::1;;::::0;::::1;;:27;;:19:::0;:27:::1;15792:58;;;;-1:-1:-1::0;;;15792:58:0::1;;;;;;;:::i;:::-;15892:1;15883:6;:10;:86;;;;-1:-1:-1::0;15952:12:0::1;::::0;;;:7:::1;:12;::::0;;;;:17:::1;::::0;::::1;::::0;15924:25:::1;::::0;;::::1;::::0;:45:::1;::::0;15952:17;15924:45:::1;:::i;:::-;15914:6;:55;;15883:86;15861:155;;;;-1:-1:-1::0;;;15861:155:0::1;;;;;;;:::i;:::-;325:21:::2;:19;:21::i;:::-;21255:14:::3;::::0;21153:17:::3;::::0;21238:31:::3;::::0;21255:14;21238:31:::3;:::i;:::-;21205:15;;21186:16;:14;:16::i;:::-;21174:28;::::0;:9:::3;:28;:::i;:::-;:46;;;;:::i;:::-;21173:97;;;;:::i;:::-;21377:11;::::0;21369:20:::3;::::0;;;:7:::3;:20;::::0;;;;:32:::3;::::0;::::3;::::0;21303:33:::3;::::0;;::::3;::::0;21153:117;;-1:-1:-1;21369:32:0;21303:45:::3;::::0;21153:117;;21303:45:::3;:::i;:::-;:98;;21281:186;;;;-1:-1:-1::0;;;21281:186:0::3;;;;;;;:::i;:::-;21499:10;21487:23;::::0;;;:11:::3;:23;::::0;;;;;::::3;;21486:24;21478:59;;;;-1:-1:-1::0;;;21478:59:0::3;;;;;;;:::i;:::-;21564:11;::::0;21557:19:::3;::::0;;;:6:::3;:19;::::0;;;;;::::3;;21556:20;21548:47;;;;-1:-1:-1::0;;;21548:47:0::3;;;;;;;:::i;:::-;21636:11;::::0;21628:20:::3;::::0;;;:7:::3;:20;::::0;;;;:27:::3;;::::0;::::3;;:35;;:27:::0;:35:::3;21606:110;;;;-1:-1:-1::0;;;21606:110:0::3;;;;;;;:::i;:::-;21740:10;21732:19;::::0;;;:7:::3;:19;::::0;;;;;::::3;;21727:108;;21776:10;21768:19;::::0;;;:7:::3;:19;::::0;;;;:26;;-1:-1:-1;;21768:26:0::3;21790:4;21768:26;::::0;;21809:12:::3;:14:::0;;;::::3;::::0;::::3;:::i;:::-;;;;;;21727:108;21847:14;21864:36;21877:11;;21890:9;21864:12;:36::i;:::-;21933:10;21915:29;::::0;;;:17:::3;:29;::::0;;;;;21847:53;;-1:-1:-1;21915:29:0::3;::::0;;::::3;:38;;::::0;;21911:127:::3;;21988:13;;21978:6;:23;;21970:56;;;::::0;-1:-1:-1;;;21970:56:0;;13281:2:1;21970:56:0::3;::::0;::::3;13263:21:1::0;13320:2;13300:18;;;13293:30;-1:-1:-1;;;13339:18:1;;;13332:50;13399:18;;21970:56:0::3;13079:344:1::0;21970:56:0::3;22056:11;::::0;22048:20:::3;::::0;;;:7:::3;:20;::::0;;;;:25:::3;;:35:::0;;22077:6;;22048:20;:35:::3;::::0;22077:6;;22048:35:::3;:::i;:::-;::::0;;;-1:-1:-1;;22102:11:0::3;::::0;22094:20:::3;::::0;;;:7:::3;:20;::::0;;;;:33:::3;;:46:::0;;22131:9;;22094:20;:46:::3;::::0;22131:9;;22094:46:::3;:::i;:::-;;;;;;;;22169:9;22151:14;;:27;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;764:10:0;22254:1:::3;22195:27:::0;;;:13:::3;:27;::::0;;;;;;;22223:11:::3;::::0;22195:40;;;;;;;:56:::3;;::::0;:60;22191:639:::3;;764:10:::0;22272:27:::3;::::0;;;:13:::3;:27;::::0;;;;;;;22300:11:::3;::::0;22272:40;;;;;;;:56:::3;;:66:::0;;22332:6;;22272:27;:66:::3;::::0;22332:6;;22272:66:::3;:::i;:::-;::::0;;;-1:-1:-1;;764:10:0;22353:27:::3;::::0;;;:13:::3;:27;::::0;;;;;;;22381:11:::3;::::0;22353:40;;;;;;;:86;;22430:9;;22353:27;:86:::3;::::0;22430:9;;22353:86:::3;:::i;:::-;::::0;;;-1:-1:-1;22191:639:0::3;::::0;-1:-1:-1;22191:639:0::3;;22515:303;;;;;;;;22542:9;22515:303;;;;22570:1;22515:303;;;;22609:6;22515:303;;;;22664:1;22515:303;;;;22710:1;22515:303;;;;22748:1;22515:303;;;;22783:1;22515:303;;::::0;22472:13:::3;:27;22486:12;764:10:::0;;684:98;22486:12:::3;-1:-1:-1::0;;;;;22472:27:0::3;::::0;;::::3;::::0;;::::3;::::0;;;;;;;;-1:-1:-1;22472:27:0;;;22500:11:::3;::::0;22472: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;22191:639:::3;22860:12;::::0;22842:43:::3;::::0;-1:-1:-1;;;;;22860:12:0::3;22875:9;22842;:43::i;:::-;22955:11;::::0;22901:176:::3;::::0;;13630:25:1;;;23027:9:0::3;13686:2:1::0;13671:18;;13664:34;23051:15:0::3;13714:18:1::0;;;13707:34;22901:176:0;;-1:-1:-1;;22955:11:0;764:10;;22901:176:::3;::::0;;;;13618:2:1;22901:176:0;;::::3;23095:4;23088:11;;;;369:20:::2;141:1:::0;614:7;:22;565:79;369:20:::2;15711:1:::1;;20923:2184:::0;;:::o;29219:105::-;1195:13;:11;:13::i;:::-;29293::::1;:23:::0;29219:105::o;23115:327::-;23214:17;23273:12;;;:7;:12;;;;;:18;;;23214:17;;23264:27;;:6;:27;:::i;:::-;23244:48;;23412:9;;;;;;;;;-1:-1:-1;;;;;23412:9:0;-1:-1:-1;;;;;23397:34:0;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23391:42;;:2;:42;:::i;:::-;23372:16;:14;:16::i;:::-;:61;;;;:::i;:::-;23340:14;;23329:25;;:8;:25;:::i;:::-;23328:106;;;;:::i;:::-;23303:131;23115:327;-1:-1:-1;;;;23115:327:0:o;25173:82::-;25225:22;25231:10;25243:3;25225:5;:22::i;:::-;;25173:82;:::o;13716:618::-;1195:13;:11;:13::i;:::-;13960:1:::1;13951:6;:10;13943:33;;;::::0;-1:-1:-1;;;13943:33:0;;15664:2:1;13943:33:0::1;::::0;::::1;15646:21:1::0;15703:2;15683:18;;;15676:30;-1:-1:-1;;;15722:18:1;;;15715:40;15772:18;;13943:33:0::1;15462:334:1::0;13943:33:0::1;14011:1;13995:13;:17;13987:49;;;::::0;-1:-1:-1;;;13987:49:0;;16003:2:1;13987:49:0::1;::::0;::::1;15985:21:1::0;16042:2;16022:18;;;16015:30;-1:-1:-1;;;16061:18:1;;;16054:49;16120:18;;13987:49:0::1;15801:343:1::0;13987:49:0::1;14066:1;14055:8;:12;14047:36;;;::::0;-1:-1:-1;;;14047:36:0;;16351:2:1;14047:36:0::1;::::0;::::1;16333:21:1::0;16390:2;16370:18;;;16363:30;-1:-1:-1;;;16409:18:1;;;16402:41;16460:18;;14047:36:0::1;16149:335:1::0;14047:36:0::1;14094:12;::::0;;;:7:::1;:12;::::0;;;;;:18:::1;::::0;::::1;:27:::0;;;;14132::::1;::::0;::::1;:45:::0;;;;14188:25:::1;::::0;::::1;:41:::0;14240:24:::1;::::0;::::1;:35:::0;14286:26:::1;;:40:::0;;;::::1;;;;-1:-1:-1::0;;14286:40:0;;::::1;::::0;;;::::1;::::0;;13716:618::o;12872:583::-;1195:13;:11;:13::i;:::-;13102:12:::1;::::0;;;:7:::1;:12;::::0;;;;:49;;;13162:32:::1;::::0;::::1;:55:::0;;;13228:24:::1;::::0;::::1;:39:::0;;;13278:30:::1;;:51:::0;;;13311:18;13386:26:::1;13197:20:::0;13386:3:::1;:26;:::i;:::-;13385:62;;;;:::i;:::-;13340:12;::::0;;;:7:::1;:12;::::0;;;;;:29:::1;;:107:::0;;;;-1:-1:-1;;;;12872:583:0:o;14920:212::-;14979:3;15654:1;15648:3;:7;:29;;;;;15666:11;;15659:3;:18;15648:29;15640:60;;;;-1:-1:-1;;;15640:60:0;;;;;;;:::i;:::-;1195:13:::1;:11;:13::i;:::-;15014:11:::2;::::0;;;:6:::2;:11;::::0;;;;;::::2;;15013:12;15005:39;;;::::0;-1:-1:-1;;;15005:39:0;;16691:2:1;15005:39:0::2;::::0;::::2;16673:21:1::0;16730:2;16710:18;;;16703:30;-1:-1:-1;;;16749:18:1;;;16742:44;16803:18;;15005:39:0::2;16489:338:1::0;15005:39:0::2;15055:11;::::0;;;:6:::2;:11;::::0;;;;;;:18;;-1:-1:-1;;15055:18:0::2;15069:4;15055:18;::::0;;15089:35;15062:3;;15089:35:::2;::::0;::::2;::::0;15108:15:::2;2112:25:1::0;;2100:2;2085:18;;1966:177;15089:35:0::2;;;;;;;;14920:212:::0;;:::o;28981:125::-;1195:13;:11;:13::i;:::-;29076:12:::1;::::0;29058:40:::1;::::0;-1:-1:-1;;;;;29076:12:0::1;29091:6:::0;29058:9:::1;:40::i;:::-;28981:125:::0;:::o;18197:530::-;1195:13;:11;:13::i;:::-;18336:1:::1;18319:325;18343:9;;18339:1;:13;18319:325;;;-1:-1:-1::0;;;;;18382:20:0;::::1;;::::0;;;:7:::1;:20;::::0;;;;;::::1;;18374:55;;;;-1:-1:-1::0;;;18374:55:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18491:58:0;;::::1;;::::0;;;:13:::1;:58;::::0;;;;;;;:61;;;;;;;;;:77:::1;::::0;;::::1;::::0;;18444:25;;::::1;::::0;;;;;;;;:28;;;;;;;;:44;;::::1;:124:::0;;;;18583:29;;;;:49;;-1:-1:-1;18354:3:0::1;18319:325;;;-1:-1:-1::0;;;;;;18654:20:0;;::::1;18677:5;18654:20:::0;;;:7:::1;:20;::::0;;;;;:28;;-1:-1:-1;;18654:28:0;;::::1;::::0;;;18693:19;;;::::1;::::0;;;;;;:26;;;;::::1;18654:28:::0;18693:26:::1;::::0;;18197:530::o;28834:139::-;1195:13;:11;:13::i;:::-;28944:12:::1;::::0;28920:45:::1;::::0;-1:-1:-1;;;28920:45:0;;-1:-1:-1;;;;;28944:12:0;;::::1;28920:45;::::0;::::1;17357:51:1::0;17424:18;;;17417:34;;;28920:23:0;;::::1;::::0;::::1;::::0;17330:18:1;;28920:45:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;28834:139:::0;;:::o;14342:166::-;1195:13;:11;:13::i;:::-;-1:-1:-1;;;;;14423:21:0;::::1;14415:52;;;::::0;-1:-1:-1;;;14415:52:0;;17914:2:1;14415:52:0::1;::::0;::::1;17896:21:1::0;17953:2;17933:18;;;17926:30;-1:-1:-1;;;17972:18:1;;;17965:48;18030:18;;14415:52:0::1;17712:342:1::0;14415:52:0::1;14478:12;:22:::0;;-1:-1:-1;;;;;;14478:22:0::1;-1:-1:-1::0;;;;;14478:22:0;;;::::1;::::0;;;::::1;::::0;;14342:166::o;24843:322::-;24901:1;24886:272;24909:9;;24904:1;:14;;;24886:272;;24976:10;25009:1;24962:25;;;:13;:25;;;;;;;;:28;;;;;;;;;;:44;;;:48;;;;:114;;-1:-1:-1;25049:10:0;;;;;;;:7;:10;;;;;:27;25031:15;:45;24962:114;24940:207;;;25111:20;25117:10;25129:1;25111:20;;:5;:20::i;:::-;;24940:207;24920:3;;;;:::i;:::-;;;;24886:272;;1471:103;1195:13;:11;:13::i;:::-;1536:30:::1;1563:1;1536:18;:30::i;:::-;1471:103::o:0;23706:295::-;23802:15;23830:17;23929:14;;23912;;:31;;;;:::i;:::-;23879:15;;23860:16;:14;:16::i;:::-;23851:25;;:6;:25;:::i;:::-;:43;;;;:::i;:::-;23850:94;;;;:::i;:::-;23830:114;;23965:28;23978:3;23983:9;23965:12;:28::i;24472:363::-;-1:-1:-1;;;;;24614:19:0;;24570:7;24614:19;;;:13;:19;;;;;;;;:24;;;;;;;;24590:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24651:54;;;;-1:-1:-1;;;24651:54:0;;18441:2:1;24651:54:0;;;18423:21:1;18480:2;18460:18;;;18453:30;-1:-1:-1;;;18499:18:1;;;18492:46;18555:18;;24651:54:0;18239:340:1;24651:54:0;24733:21;;;;24773:10;24765:38;;;;-1:-1:-1;;;24765:38:0;;18786:2:1;24765:38:0;;;18768:21:1;18825:2;18805:18;;;18798:30;-1:-1:-1;;;18844:18:1;;;18837:45;18899:18;;24765:38:0;18584:339:1;24765:38:0;24821:6;-1:-1:-1;;24472:363:0;;;;;:::o;11831:406::-;1195:13;:11;:13::i;:::-;11933:1:::1;11905:12:::0;;;:7:::1;:12;::::0;;;;:25:::1;;::::0;11897:61:::1;;;::::0;-1:-1:-1;;;11897:61:0;;19130:2:1;11897:61:0::1;::::0;::::1;19112:21:1::0;19169:2;19149:18;;;19142:30;-1:-1:-1;;;19188:18:1;;;19181:49;19247:18;;11897:61:0::1;18928:343:1::0;11897:61:0::1;11973:11;::::0;:16;11969:145:::1;;12014:11;::::0;;12006:20:::1;::::0;;;:7:::1;:20;::::0;;;;;12037:15:::1;12006:28;::::0;;::::1;:46:::0;12075:11;;12067:20;;;:27:::1;;:35:::0;;-1:-1:-1;;12067:35:0::1;::::0;;11969:145:::1;12124:12;::::0;;;:7:::1;:12;::::0;;;;12149:15:::1;12124:40:::0;;12175:19:::1;;:26:::0;;-1:-1:-1;;12175:26:0::1;12197:4;12175:26;::::0;;12212:11:::1;:17:::0;11831:406::o;14516:194::-;1195:13;:11;:13::i;:::-;-1:-1:-1;;;;;14600:25:0;::::1;14592:56;;;::::0;-1:-1:-1;;;14592:56:0;;19478:2:1;14592:56:0::1;::::0;::::1;19460:21:1::0;19517:2;19497:18;;;19490:30;-1:-1:-1;;;19536:18:1;;;19529:48;19594:18;;14592:56:0::1;19276:342:1::0;14592:56:0::1;14659:13;:43:::0;;-1:-1:-1;;;;;;14659:43:0::1;-1:-1:-1::0;;;;;14659:43:0;;;::::1;::::0;;;::::1;::::0;;14516:194::o;15376:208::-;15423:7;15446:12;15468:19;;;;;;;;;-1:-1:-1;;;;;15468:19:0;-1:-1:-1;;;;;15468:35:0;;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15443:62;;;;;;15525:5;15534:8;15525:18;;;;:::i;16212:1977::-;16438:4;16310:11;;15654:1;15648:3;:7;:29;;;;;15666:11;;15659:3;:18;15648:29;15640:60;;;;-1:-1:-1;;;15640:60:0;;;;;;;:::i;:::-;16347:11:::1;::::0;16360:36:::1;16347:11:::0;16386:9;16360:12:::1;:36::i;:::-;15800:12;::::0;;;:7:::1;:12;::::0;;;;:19:::1;;::::0;::::1;;:27;;:19:::0;:27:::1;15792:58;;;;-1:-1:-1::0;;;15792:58:0::1;;;;;;;:::i;:::-;15892:1;15883:6;:10;:86;;;;-1:-1:-1::0;15952:12:0::1;::::0;;;:7:::1;:12;::::0;;;;:17:::1;::::0;::::1;::::0;15924:25:::1;::::0;;::::1;::::0;:45:::1;::::0;15952:17;15924:45:::1;:::i;:::-;15914:6;:55;;15883:86;15861:155;;;;-1:-1:-1::0;;;15861:155:0::1;;;;;;;:::i;:::-;325:21:::2;:19;:21::i;:::-;16476:11:::3;::::0;16469:19:::3;::::0;;;:6:::3;:19;::::0;;;;;::::3;;16468:20;16460:47;;;;-1:-1:-1::0;;;16460:47:0::3;;;;;;;:::i;:::-;16548:11;::::0;16540:20:::3;::::0;;;:7:::3;:20;::::0;;;;:27:::3;;::::0;::::3;;:35;;:27:::0;:35:::3;16518:110;;;;-1:-1:-1::0;;;16518:110:0::3;;;;;;;:::i;:::-;16660:10;16648:23;::::0;;;:11:::3;:23;::::0;;;;;::::3;;16647:24;16639:59;;;;-1:-1:-1::0;;;16639:59:0::3;;;;;;;:::i;:::-;16805:11;::::0;16797:20:::3;::::0;;;:7:::3;:20;::::0;;;;:32:::3;::::0;::::3;::::0;16731:33:::3;::::0;;::::3;::::0;:45:::3;::::0;16767:9;;16731:45:::3;:::i;:::-;:98;;16709:186;;;;-1:-1:-1::0;;;16709:186:0::3;;;;;;;:::i;:::-;16919:10;16911:19;::::0;;;:7:::3;:19;::::0;;;;;::::3;;16906:108;;16955:10;16947:19;::::0;;;:7:::3;:19;::::0;;;;:26;;-1:-1:-1;;16947:26:0::3;16969:4;16947:26;::::0;;16988:12:::3;:14:::0;;;::::3;::::0;::::3;:::i;:::-;;;;;;16906:108;17024:14;17041:36;17054:11;;17067:9;17041:12;:36::i;:::-;17024:53;;17117:6;17088:7;:20;17096:11;;17088:20;;;;;;;;;;;:25;;;:35;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;17142:11:0::3;::::0;17134:20:::3;::::0;;;:7:::3;:20;::::0;;;;:33:::3;;:46:::0;;17171:9;;17134:20;:46:::3;::::0;17171:9;;17134:46:::3;:::i;:::-;;;;;;;;17209:9;17191:14;;:27;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;17253:10:0::3;17235:29;::::0;;;:17:::3;:29;::::0;;;;;::::3;;:38;;::::0;;17231:127:::3;;17308:13;;17298:6;:23;;17290:56;;;::::0;-1:-1:-1;;;17290:56:0;;20827:2:1;17290:56:0::3;::::0;::::3;20809:21:1::0;20866:2;20846:18;;;20839:30;-1:-1:-1;;;20885:18:1;;;20878:50;20945:18;;17290:56:0::3;20625:344:1::0;17290:56:0::3;764:10:::0;17431:1:::3;17372:27:::0;;;:13:::3;:27;::::0;;;;;;;17400:11:::3;::::0;17372:40;;;;;;;:56:::3;;::::0;:60;17368:512:::3;;764:10:::0;17449:27:::3;::::0;;;:13:::3;:27;::::0;;;;;;;17477:11:::3;::::0;17449:40;;;;;;;:56:::3;;:66:::0;;17509:6;;17449:27;:66:::3;::::0;17509:6;;17449:66:::3;:::i;:::-;::::0;;;-1:-1:-1;;764:10:0;17530:27:::3;::::0;;;:13:::3;:27;::::0;;;;;;;17558:11:::3;::::0;17530:40;;;;;;;:86;;17607:9;;17530:27;:86:::3;::::0;17607:9;;17530:86:::3;:::i;:::-;::::0;;;-1:-1:-1;17368:512:0::3;::::0;-1:-1:-1;17368:512:0::3;;17692:176;;;;;;;;17719:9;17692:176;;;;17747:1;17692:176;;;;17767:6;17692:176;;;;17792:1;17692:176;;;;17812:1;17692:176;;;;17832:1;17692:176;;;;17852:1;17692:176;;::::0;17649:13:::3;:27;17663:12;764:10:::0;;684:98;17663:12:::3;-1:-1:-1::0;;;;;17649:27:0::3;::::0;;::::3;::::0;;::::3;::::0;;;;;;;;-1:-1:-1;17649:27:0;;;17677:11:::3;::::0;17649: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;17368:512:::3;17890:13;::::0;-1:-1:-1;;;;;17890:13:0::3;:26;764:10:::0;17931:12:::3;::::0;17890:65:::3;::::0;::::3;::::0;;;-1:-1:-1;;;;;;17890:65:0;;;-1:-1:-1;;;;;21194:32:1;;;17890:65:0::3;::::0;::::3;21176:51:1::0;17931:12:0;::::3;21243:18:1::0;;;21236:60;21312:18;;;21305:34;;;21149:18;;17890:65:0::3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;18059:13:0::3;::::0;18025:11:::3;::::0;-1:-1:-1;;;;;18059:13:0;;::::3;::::0;764:10;17998:12:::3;-1:-1:-1::0;;;;;17971:188:0::3;;18088:6;18109:9;18133:15;17971:188;;;;;;;13630:25:1::0;;;13686:2;13671:18;;13664:34;;;;13729:2;13714:18;;13707:34;13618:2;13603:18;;13428:319;17971:188:0::3;;;;;;;;18177:4;18170:11;;;369:20:::2;141:1:::0;614:7;:22;565:79;369:20:::2;15711:1:::1;;16212:1977:::0;;;;:::o;18857:2058::-;19085:4;18956:11;;15654:1;15648:3;:7;:29;;;;;15666:11;;15659:3;:18;15648:29;15640:60;;;;-1:-1:-1;;;15640:60:0;;;;;;;:::i;:::-;18993:11:::1;::::0;19006:37:::1;18993:11:::0;19032:10;19006:12:::1;:37::i;:::-;15800:12;::::0;;;:7:::1;:12;::::0;;;;:19:::1;;::::0;::::1;;:27;;:19:::0;:27:::1;15792:58;;;;-1:-1:-1::0;;;15792:58:0::1;;;;;;;:::i;:::-;15892:1;15883:6;:10;:86;;;;-1:-1:-1::0;15952:12:0::1;::::0;;;:7:::1;:12;::::0;;;;:17:::1;::::0;::::1;::::0;15924:25:::1;::::0;;::::1;::::0;:45:::1;::::0;15952:17;15924:45:::1;:::i;:::-;15914:6;:55;;15883:86;15861:155;;;;-1:-1:-1::0;;;15861:155:0::1;;;;;;;:::i;:::-;325:21:::2;:19;:21::i;:::-;19123:11:::3;::::0;19116:19:::3;::::0;;;:6:::3;:19;::::0;;;;;::::3;;19115:20;19107:47;;;;-1:-1:-1::0;;;19107:47:0::3;;;;;;;:::i;:::-;19195:11;::::0;19187:20:::3;::::0;;;:7:::3;:20;::::0;;;;:27:::3;;::::0;::::3;;:35;;:27:::0;:35:::3;19165:110;;;;-1:-1:-1::0;;;19165:110:0::3;;;;;;;:::i;:::-;19383:11;::::0;19375:20:::3;::::0;;;:7:::3;:20;::::0;;;;:32:::3;::::0;::::3;::::0;19308:33:::3;::::0;;::::3;::::0;:46:::3;::::0;19344:10;;19308:46:::3;:::i;:::-;:99;;19286:187;;;;-1:-1:-1::0;;;19286:187:0::3;;;;;;;:::i;:::-;19505:10;19493:23;::::0;;;:11:::3;:23;::::0;;;;;::::3;;19492:24;19484:59;;;;-1:-1:-1::0;;;19484:59:0::3;;;;;;;:::i;:::-;19567:10;19559:19;::::0;;;:7:::3;:19;::::0;;;;;::::3;;19554:108;;19603:10;19595:19;::::0;;;:7:::3;:19;::::0;;;;:26;;-1:-1:-1;;19595:26:0::3;19617:4;19595:26;::::0;;19636:12:::3;:14:::0;;;::::3;::::0;::::3;:::i;:::-;;;;;;19554:108;19672:14;19689:37;19702:11;;19715:10;19689:12;:37::i;:::-;19672:54;;19766:6;19737:7;:20;19745:11;;19737:20;;;;;;;;;;;:25;;;:35;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;19791:11:0::3;::::0;19783:20:::3;::::0;;;:7:::3;:20;::::0;;;;:33:::3;;:47:::0;;19820:10;;19783:20;:47:::3;::::0;19820:10;;19783:47:::3;:::i;:::-;;;;;;;;19859:10;19841:14;;:28;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;19904:10:0::3;19886:29;::::0;;;:17:::3;:29;::::0;;;;;::::3;;:38;;::::0;;19882:127:::3;;19959:13;;19949:6;:23;;19941:56;;;::::0;-1:-1:-1;;;19941:56:0;;20827:2:1;19941:56:0::3;::::0;::::3;20809:21:1::0;20866:2;20846:18;;;20839:30;-1:-1:-1;;;20885:18:1;;;20878:50;20945:18;;19941:56:0::3;20625:344:1::0;19941:56:0::3;764:10:::0;20082:1:::3;20023:27:::0;;;:13:::3;:27;::::0;;;;;;;20051:11:::3;::::0;20023:40;;;;;;;:56:::3;;::::0;:60;20019:585:::3;;764:10:::0;20100:27:::3;::::0;;;:13:::3;:27;::::0;;;;;;;20128:11:::3;::::0;20100:40;;;;;;;:56:::3;;:66:::0;;20160:6;;20100:27;:66:::3;::::0;20160:6;;20100:66:::3;:::i;:::-;::::0;;;-1:-1:-1;;764:10:0;20181:27:::3;::::0;;;:13:::3;:27;::::0;;;;;;;20209:11:::3;::::0;20181:40;;;;;;;:87;;20258:10;;20181:27;:87:::3;::::0;20258:10;;20181:87:::3;:::i;:::-;::::0;;;-1:-1:-1;20019:585:0::3;::::0;-1:-1:-1;20019:585:0::3;;20344:177;;;;;;;;20371:10;20344:177;;;;20400:1;20344:177;;;;20420:6;20344:177;;;;20445:1;20344:177;;;;20465:1;20344:177;;;;20485:1;20344:177;;;;20505:1;20344:177;;::::0;20301:13:::3;:27;20315:12;764:10:::0;;684:98;20315:12:::3;-1:-1:-1::0;;;;;20301:27:0::3;::::0;;::::3;::::0;;::::3;::::0;;;;;;;;-1:-1:-1;20301:27:0;;;20329:11:::3;::::0;20301: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;20544:21;;:7:::3;:21:::0;;;;;;::::3;;20536:56;;;;-1:-1:-1::0;;;20536:56:0::3;;;;;;;:::i;:::-;20614:13;::::0;-1:-1:-1;;;;;20614:13:0::3;:26;764:10:::0;20655:12:::3;::::0;20614:66:::3;::::0;::::3;::::0;;;-1:-1:-1;;;;;;20614:66:0;;;-1:-1:-1;;;;;21194:32:1;;;20614:66:0::3;::::0;::::3;21176:51:1::0;20655:12:0;::::3;21243:18:1::0;;;21236:60;21312:18;;;21305:34;;;21149:18;;20614:66:0::3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;20784:13:0::3;::::0;20750:11:::3;::::0;-1:-1:-1;;;;;20784:13:0;;::::3;::::0;764:10;20723:12:::3;684:98:::0;12245:619;1195:13;:11;:13::i;:::-;12521:9:::1;12516:341;12540:3;:10;12536:1;:14;12516:341;;;12590:255;;;;;;;;12620:16;12637:1;12620:19;;;;;;;;:::i;:::-;;;;;;;12590:255;;;;12658:20;12679:1;12658:23;;;;;;;;:::i;:::-;;;;;;;12590:255;;;;12700:12;12713:1;12700:15;;;;;;;;:::i;:::-;;;;;;;12590:255;;;;12734:18;12753:1;12734:21;;;;;;;;:::i;:::-;;;;;;;12590:255;;;;12809:18;12828:1;12809:21;;;;;;;;:::i;:::-;;;;;;;12782:20;12803:1;12782:23;;;;;;;;:::i;:::-;;;;;;;12775:4;:30;;;;:::i;:::-;12774:56;;;;:::i;:::-;12590:255;;::::0;12572:7:::1;:15;12580:3;12584:1;12580:6;;;;;;;;:::i;:::-;;;;;;;12572:15;;;;;;;;;;;:273;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12552:3;;;;;;;12516:341;;;;12245:619:::0;;;;;:::o;15140:228::-;15217:3;15654:1;15648:3;:7;:29;;;;;15666:11;;15659:3;:18;15648:29;15640:60;;;;-1:-1:-1;;;15640:60:0;;;;;;;:::i;:::-;1195:13:::1;:11;:13::i;:::-;15251:11:::2;::::0;;;:6:::2;:11;::::0;;;;;::::2;;15243:34;;;::::0;-1:-1:-1;;;15243:34:0;;21684:2:1;15243:34:0::2;::::0;::::2;21666:21:1::0;21723:2;21703:18;;;21696:30;-1:-1:-1;;;21742:18:1;;;21735:40;21792:18;;15243:34:0::2;21482:334:1::0;15243:34:0::2;15302:5;15288:11:::0;;;:6:::2;:11;::::0;;;;;;:19;;-1:-1:-1;;15288:19:0::2;::::0;;15323:37;15295:3;;15323:37:::2;::::0;::::2;::::0;15344:15:::2;2112:25:1::0;;2100:2;2085:18;;1966:177;11186:637:0;1195:13;:11;:13::i;:::-;11385:1:::1;11376:6;:10;11368:33;;;::::0;-1:-1:-1;;;11368:33:0;;15664:2:1;11368:33:0::1;::::0;::::1;15646:21:1::0;15703:2;15683:18;;;15676:30;-1:-1:-1;;;15722:18:1;;;15715:40;15772:18;;11368:33:0::1;15462:334:1::0;11368:33:0::1;11436:1;11420:13;:17;11412:49;;;::::0;-1:-1:-1;;;11412:49:0;;16003:2:1;11412:49:0::1;::::0;::::1;15985:21:1::0;16042:2;16022:18;;;16015:30;-1:-1:-1;;;16061:18:1;;;16054:49;16120:18;;11412:49:0::1;15801:343:1::0;11412:49:0::1;11474:9;:11:::0;;;:9:::1;:11;::::0;::::1;:::i;:::-;::::0;;;-1:-1:-1;;11519:232:0::1;::::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;11519:232:0;;;::::1;::::0;;::::1;::::0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11506:9:::1;::::0;;11498:18;;:7:::1;:18:::0;;;;;:253;;;;;;11519:232;11498: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;;11498:253:0;;;;::::1;;-1:-1:-1::0;;11498:253:0;;;;;;::::1;;;::::0;;;::::1;::::0;;;11784:9;11769:46;;13630:25:1;;;13671:18;;;13664:34;;;13714:18;;;13707:34;;;;11769:46:0::1;::::0;13603:18:1;11769:46:0::1;;;;;;;11186:637:::0;;;;:::o;18735:114::-;1195:13;:11;:13::i;:::-;-1:-1:-1;;;;;18814:18:0;;;::::1;;::::0;;;:11:::1;:18;::::0;;;;:27;;-1:-1:-1;;18814:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18735:114::o;14718:194::-;1195:13;:11;:13::i;:::-;-1:-1:-1;;;;;14802:25:0;::::1;14794:56;;;::::0;-1:-1:-1;;;14794:56:0;;19478:2:1;14794:56:0::1;::::0;::::1;19460:21:1::0;19517:2;19497:18;;;19490:30;-1:-1:-1;;;19536:18:1;;;19529:48;19594:18;;14794:56:0::1;19276:342:1::0;14794:56:0::1;14861:13;:43:::0;;-1:-1:-1;;;;;;14861:43:0::1;-1:-1:-1::0;;;;;14861:43:0;;;::::1;::::0;;;::::1;::::0;;14718: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;;22363:2:1;1663:110:0::1;::::0;::::1;22345:21:1::0;22402:2;22382:18;;;22375:30;22441:34;22421:18;;;22414:62;-1:-1:-1;;;22492:18:1;;;22485:36;22538:19;;1663:110:0::1;22161:402:1::0;1663:110:0::1;1784:28;1803:8;1784:18;:28::i;24009:190::-:0;24176:15;;24106;24154:12;;;:7;:12;;;;;:18;;;24106:15;;24176;24145:27;;:6;:27;:::i;:::-;24144:47;;;;:::i;:::-;24134:57;24009:190;-1:-1:-1;;;24009:190:0:o;23450:248::-;23669:9;;23654:36;;;-1:-1:-1;;;23654:36:0;;;;23550:16;;-1:-1:-1;;;;;23669:9:0;;23654:34;;:36;;;;;;;;;;;;;;23669:9;23654:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23648:42;;:2;:42;:::i;:::-;23613:12;;;;:7;:12;;;;;:18;;;23604: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;;22770:2:1;1387:68:0;;;22752:21:1;;;22789:18;;;22782:30;22848:34;22828:18;;;22821:62;22900:18;;1387:68:0;22568:356:1;405:152:0;185:1;463:7;;:19;455:63;;;;-1:-1:-1;;;455:63:0;;23131:2:1;455:63:0;;;23113:21:1;23170:2;23150:18;;;23143:30;23209:33;23189:18;;;23182:61;23260:18;;455:63:0;22929:355:1;455:63:0;185:1;531:7;:18;405:152::o;24207:257::-;24322:6;24297:21;:31;;24289:55;;;;-1:-1:-1;;;24289:55:0;;23491:2:1;24289:55:0;;;23473:21:1;23530:2;23510:18;;;23503:30;-1:-1:-1;;;23549:18:1;;;23542:41;23600:18;;24289:55:0;23289:335:1;24289:55:0;24356:12;24374:9;-1:-1:-1;;;;;24374:14:0;24396:6;24374:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24355:52;;;24426:7;24418:38;;;;-1:-1:-1;;;24418:38:0;;24041:2:1;24418:38:0;;;24023:21:1;24080:2;24060:18;;;24053:30;-1:-1:-1;;;24099:18:1;;;24092:48;24157:18;;24418:38:0;23839:342:1;25263:3563:0;764:10;25324:4;25349:21;;;:7;:21;;;;;;;;25341:56;;;;-1:-1:-1;;;25341:56:0;;;;;;;:::i;:::-;25408:14;25425:27;25441:5;25448:3;25425:15;:27::i;:::-;25408:44;;25480:1;25471:6;:10;25463:42;;;;-1:-1:-1;;;25463:42:0;;24388:2:1;25463:42:0;;;24370:21:1;24427:2;24407:18;;;24400:30;-1:-1:-1;;;24446:18:1;;;24439:49;24505:18;;25463:42:0;24186:343:1;25463:42:0;-1:-1:-1;;;;;25525:18:0;;;;;;:11;:18;;;;;;;;25524:19;25516:54;;;;-1:-1:-1;;;25516:54:0;;;;;;;:::i;:::-;25589:9;;-1:-1:-1;;;;;25589:9:0;25581:65;;;;-1:-1:-1;;;25581:65:0;;24736:2:1;25581:65:0;;;24718:21:1;24775:2;24755:18;;;24748:30;24814:31;24794:18;;;24787:59;24863:18;;25581:65:0;24534:353:1;25581:65:0;25696:9;;25689:42;;-1:-1:-1;;;25689:42:0;;25725:4;25689:42;;;2316:51:1;-1:-1:-1;;;;;25696:9:0;;;;25689:27;;2289:18:1;;25689:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25679:6;:52;;25657:135;;;;-1:-1:-1;;;25657:135:0;;25329:2:1;25657:135:0;;;25311:21:1;25368:2;25348:18;;;25341:30;25407:34;25387:18;;;25380:62;-1:-1:-1;;;25458:18:1;;;25451:31;25499:19;;25657:135:0;25127:397:1;25657:135:0;25812:12;;;;:7;:12;;;;;:26;;;;;;;;;:34;;:26;:34;25803:68;;;;-1:-1:-1;;;25803:68:0;;25731:2:1;25803:68:0;;;25713:21:1;25770:2;25750:18;;;25743:30;-1:-1:-1;;;25789:18:1;;;25782:49;25848:18;;25803:68:0;25529:343:1;25803:68:0;25922:12;;;;:7;:12;;;;;:29;25904:15;:47;25882:128;;;;-1:-1:-1;;;25882:128:0;;26079:2:1;25882:128:0;;;26061:21:1;26118:2;26098:18;;;26091:30;26157:33;26137:18;;;26130:61;26208:18;;25882:128:0;25877:355:1;25882:128:0;-1:-1:-1;;;;;26058:20:0;;26021:22;26058:20;;;:13;:20;;;;;;;;:25;;;;;;;;:36;;;:41;;26054:2743;;26161:12;;;;:7;:12;;;;;:32;;;26215:4;;26151:43;;:6;:43;:::i;:::-;26150:69;;;;:::i;:::-;26309:12;;;;:7;:12;;;;;:30;;;26116:103;;-1:-1:-1;26360:4:0;;26300:39;;:6;:39;:::i;:::-;26299:65;;;;:::i;:::-;-1:-1:-1;;;;;26234:20:0;;;;;;;:13;:20;;;;;;;;:25;;;;;;;;;:45;;:130;;;;26400:9;;26393:49;;-1:-1:-1;;;26393:49:0;;;;;17357:51:1;;;;17424:18;;;17417:34;;;26234:20:0;26400:9;;;;26393:26;;17330:18:1;;26393:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26379:63;;26465:6;26457:40;;;;-1:-1:-1;;;26457:40:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26512:20:0;;;;;;:13;:20;;;;;;;;:25;;;;;;;;:41;;:59;;26557:14;;26512:20;:59;;26557:14;;26512:59;:::i;:::-;;;;-1:-1:-1;;;;;;;26586:20:0;;;;;;:13;:20;;;;;;;;:25;;;;;;;;:39;;:57;;26629:14;;26586:20;:57;;26629:14;;26586:57;:::i;:::-;;;;-1:-1:-1;;;;;;;26658:20:0;;;;;;:13;:20;;;;;;;;:25;;;;;;;;:36;;:38;;;;;;:::i;:::-;;;;;;26101:607;26054:2743;;;-1:-1:-1;;;;;26789:20:0;;;;;;:13;:20;;;;;;;;:25;;;;;;;;:45;;;;26732:41;;;;;:102;26714:2083;;;26861:16;26898:12;;;:7;:12;;;;;:29;26880:47;;:15;:47;:::i;:::-;26942:18;26974:12;;;:7;:12;;;;;:24;;;26861:66;;-1:-1:-1;26942:18:0;26963:35;;26861:66;26963:35;:::i;:::-;27030:12;;;;:7;:12;;;;;:29;;;26942:56;;-1:-1:-1;27017:42:0;;27013:125;;;-1:-1:-1;27093:12:0;;;;:7;:12;;;;;:29;;;27013:125;-1:-1:-1;;;;;27200:20:0;;27152:15;27200:20;;;:13;:20;;;;;;;;:25;;;;;;;;:45;;;27170:75;;:10;:75;:::i;:::-;-1:-1:-1;;;;;27321:20:0;;;;;;:13;:20;;;;;;;;:25;;;;;;;;:46;;;27152:93;;-1:-1:-1;27294:73:0;;27152:93;27294:73;:::i;:::-;27260:107;;27407:1;27390:14;:18;27382:58;;;;-1:-1:-1;;;27382:58:0;;26789:2:1;27382:58:0;;;26771:21:1;26828:2;26808:18;;;26801:30;26867:29;26847:18;;;26840:57;26914:18;;27382:58:0;26587:351:1;27382:58:0;27476:9;;27469:49;;-1:-1:-1;;;27469:49:0;;-1:-1:-1;;;;;17375:32:1;;;27469:49:0;;;17357:51:1;17424:18;;;17417:34;;;27455:11:0;;27476:9;;27469:26;;17330:18:1;;27469:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27455:63;;27541:6;27533:40;;;;-1:-1:-1;;;27533:40:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27588:20:0;;;;;;:13;:20;;;;;;;;:25;;;;;;;;:41;;:59;;27633:14;;27588:20;:59;;27633:14;;27588:59;:::i;:::-;;;;-1:-1:-1;;;;;;;27662:20:0;;;;;;:13;:20;;;;;;;;:25;;;;;;;;:46;;:64;;27712:14;;27662:20;:64;;27712:14;;27662:64;:::i;:::-;;;;-1:-1:-1;;;;;;;27741:20:0;;;;;;:13;:20;;;;;;;;:25;;;;;;;;:39;;:57;;27784:14;;27741:20;:57;;27784:14;;27741:57;:::i;:::-;;;;-1:-1:-1;;;;;;;27813:20:0;;;;;;:13;:20;;;;;;;;:25;;;;;;;;:36;;:38;;;;;;:::i;:::-;;;;;;26846:1017;;;;26714:2083;;;27884:16;27921:12;;;:7;:12;;;;;:29;27903:47;;:15;:47;:::i;:::-;27965:18;27997:12;;;:7;:12;;;;;:24;;;27884:66;;-1:-1:-1;27965:18:0;27986:35;;27884:66;27986:35;:::i;:::-;28053:12;;;;:7;:12;;;;;:29;;;27965:56;;-1:-1:-1;28053:33:0;;28085:1;28053:33;:::i;:::-;28040:10;:46;28036:750;;;-1:-1:-1;;;;;28124:20:0;;;;;;:13;:20;;;;;;;;:25;;;;;;;;:41;;;;-1:-1:-1;28192:18:0;28184:58;;;;-1:-1:-1;;;28184:58:0;;26789:2:1;28184:58:0;;;26771:21:1;26828:2;26808:18;;;26801:30;26867:29;26847:18;;;26840:57;26914:18;;28184:58:0;26587:351:1;28184:58:0;28282:9;;28275:49;;-1:-1:-1;;;28275:49:0;;-1:-1:-1;;;;;17375:32:1;;;28275:49:0;;;17357:51:1;17424:18;;;17417:34;;;28261:11:0;;28282:9;;28275:26;;17330:18:1;;28275:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28261:63;;28351:6;28343:40;;;;-1:-1:-1;;;28343:40:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;28402:20:0;;;;;;:13;:20;;;;;;;;:25;;;;;;;;:41;;:59;;28447:14;;28402:20;:59;;28447:14;;28402:59;:::i;:::-;;;;-1:-1:-1;;;;;;;28480:20:0;;;;;;:13;:20;;;;;;;;:25;;;;;;;;:39;;:57;;28523:14;;28480:20;:57;;28523:14;;28480:57;:::i;:::-;;;;-1:-1:-1;;;;;;;28556:20:0;;;;;;:13;:20;;;;;;;;:25;;;;;;;;:68;;:86;;28628:14;;28556:20;:86;;28628:14;;28556:86;:::i;:::-;;;;-1:-1:-1;;;;;;;28661:20:0;;;;;;:13;:20;;;;;;;;:25;;;;;;;;:36;;:38;;;;;;:::i;:::-;;;;;;28088:627;28036:750;;;28740:30;;-1:-1:-1;;;28740:30:0;;27145:2:1;28740:30:0;;;27127:21:1;27184:2;27164:18;;;27157:30;-1:-1:-1;;;27203:18:1;;;27196:50;27263:18;;28740:30:0;26943:344:1;28036:750:0;27869:928;;26714:2083;-1:-1:-1;28814:4:0;;25263:3563;-1:-1:-1;;;;25263:3563:0:o;1828:191::-;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:226::-;634:6;687:2;675:9;666:7;662:23;658:32;655:52;;;703:1;700;693:12;655:52;-1:-1:-1;748:23:1;;575:226;-1:-1:-1;575:226:1:o;806:118::-;892:5;885:13;878:21;871:5;868:32;858:60;;914:1;911;904:12;929:315;994:6;1002;1055:2;1043:9;1034:7;1030:23;1026:32;1023:52;;;1071:1;1068;1061:12;1023:52;1094:29;1113:9;1094:29;:::i;:::-;1084:39;;1173:2;1162:9;1158:18;1145:32;1186:28;1208:5;1186:28;:::i;:::-;1233:5;1223:15;;;929:315;;;;;:::o;1249:361::-;1314:6;1322;1375:2;1363:9;1354:7;1350:23;1346:32;1343:52;;;1391:1;1388;1381:12;1343:52;1436:23;;;-1:-1:-1;1535:2:1;1520:18;;1507:32;1548:30;1507:32;1548:30;:::i;1615:346::-;1683:6;1691;1744:2;1732:9;1723:7;1719:23;1715:32;1712:52;;;1760:1;1757;1750:12;1712:52;-1:-1:-1;;1805:23:1;;;1925:2;1910:18;;;1897:32;;-1:-1:-1;1615:346:1:o;2378:844::-;2479:6;2487;2495;2503;2511;2519;2572:3;2560:9;2551:7;2547:23;2543:33;2540:53;;;2589:1;2586;2579:12;2540:53;2634:23;;;-1:-1:-1;2754:2:1;2739:18;;2726:32;;-1:-1:-1;2857:2:1;2842:18;;2829:32;;-1:-1:-1;2960:2:1;2945:18;;2932:32;;-1:-1:-1;3063:3:1;3048:19;;3035:33;;-1:-1:-1;3146:3:1;3131:19;;3118:33;3160:30;3118:33;3160:30;:::i;:::-;3209:7;3199:17;;;2378:844;;;;;;;;:::o;3695:708::-;3790:6;3798;3806;3814;3822;3875:3;3863:9;3854:7;3850:23;3846:33;3843:53;;;3892:1;3889;3882:12;3843:53;-1:-1:-1;;3937:23:1;;;4057:2;4042:18;;4029:32;;-1:-1:-1;4160:2:1;4145:18;;4132:32;;4263:2;4248:18;;4235:32;;-1:-1:-1;4366:3:1;4351:19;4338:33;;-1:-1:-1;3695:708:1;-1:-1:-1;3695:708:1:o;4408:260::-;4476:6;4484;4537:2;4525:9;4516:7;4512:23;4508:32;4505:52;;;4553:1;4550;4543:12;4505:52;4576:29;4595:9;4576:29;:::i;:::-;4566:39;;4624:38;4658:2;4647:9;4643:18;4624:38;:::i;:::-;4614:48;;4408:260;;;;;:::o;4673:300::-;4741:6;4749;4802:2;4790:9;4781:7;4777:23;4773:32;4770:52;;;4818:1;4815;4808:12;4770:52;4841:29;4860:9;4841:29;:::i;:::-;4831:39;4939:2;4924:18;;;;4911:32;;-1:-1:-1;;;4673:300:1:o;5798:127::-;5859:10;5854:3;5850:20;5847:1;5840:31;5890:4;5887:1;5880:15;5914:4;5911:1;5904:15;5930:954;5984:5;6037:3;6030:4;6022:6;6018:17;6014:27;6004:55;;6055:1;6052;6045:12;6004:55;6095:6;6082:20;6125:18;6117:6;6114:30;6111:56;;;6147:18;;:::i;:::-;6193:6;6190:1;6186:14;6229:2;6223:9;6292:2;6288:7;6283:2;6279;6275:11;6271:25;6263:6;6259:38;6363:6;6351:10;6348:22;6327:18;6315:10;6312:34;6309:62;6306:88;;;6374:18;;:::i;:::-;6410:2;6403:22;6460;;;6510:4;6542:15;;;6538:26;;;6460:22;6498:17;;6576:15;;;6573:35;;;6604:1;6601;6594:12;6573:35;6640:4;6632:6;6628:17;6617:28;;6654:200;6670:6;6665:3;6662:15;6654:200;;;6762:17;;6792:18;;6839:4;6687:14;;;;6830;6654:200;;;-1:-1:-1;6872:6:1;5930:954;-1:-1:-1;;;;;5930:954:1:o;6889:1318::-;7109:6;7117;7125;7133;7141;7194:3;7182:9;7173:7;7169:23;7165:33;7162:53;;;7211:1;7208;7201:12;7162:53;7251:9;7238:23;7284:18;7276:6;7273:30;7270:50;;;7316:1;7313;7306:12;7270:50;7339:61;7392:7;7383:6;7372:9;7368:22;7339:61;:::i;:::-;7329:71;;;7453:2;7442:9;7438:18;7425:32;7482:18;7472:8;7469:32;7466:52;;;7514:1;7511;7504:12;7466:52;7537:63;7592:7;7581:8;7570:9;7566:24;7537:63;:::i;:::-;7527:73;;;7653:2;7642:9;7638:18;7625:32;7682:18;7672:8;7669:32;7666:52;;;7714:1;7711;7704:12;7666:52;7737:63;7792:7;7781:8;7770:9;7766:24;7737:63;:::i;:::-;7727:73;;;7853:2;7842:9;7838:18;7825:32;7882:18;7872:8;7869:32;7866:52;;;7914:1;7911;7904:12;7866:52;7937:63;7992:7;7981:8;7970:9;7966:24;7937:63;:::i;:::-;7927:73;;;8053:3;8042:9;8038:19;8025:33;8083:18;8073:8;8070:32;8067:52;;;8115:1;8112;8105:12;8067:52;8138:63;8193:7;8182:8;8171:9;8167:24;8138:63;:::i;:::-;8128:73;;;6889:1318;;;;;;;;:::o;8212:587::-;8298:6;8306;8314;8322;8375:3;8363:9;8354:7;8350:23;8346:33;8343:53;;;8392:1;8389;8382:12;8343:53;-1:-1:-1;;8437:23:1;;;8557:2;8542:18;;8529:32;;-1:-1:-1;8660:2:1;8645:18;;8632:32;;8763:2;8748:18;8735:32;;-1:-1:-1;8212:587:1;-1:-1:-1;8212:587:1:o;9652:342::-;9854:2;9836:21;;;9893:2;9873:18;;;9866:30;-1:-1:-1;;;9927:2:1;9912:18;;9905:48;9985:2;9970:18;;9652:342::o;9999:::-;10201:2;10183:21;;;10240:2;10220:18;;;10213:30;-1:-1:-1;;;10274:2:1;10259:18;;10252:48;10332:2;10317:18;;9999:342::o;10346:127::-;10407:10;10402:3;10398:20;10395:1;10388:31;10438:4;10435:1;10428:15;10462:4;10459:1;10452:15;10478:128;10545:9;;;10566:11;;;10563:37;;;10580:18;;:::i;10611:343::-;10813:2;10795:21;;;10852:2;10832:18;;;10825:30;-1:-1:-1;;;10886:2:1;10871:18;;10864:49;10945:2;10930:18;;10611:343::o;10959:168::-;11032:9;;;11063;;11080:15;;;11074:22;;11060:37;11050:71;;11101:18;;:::i;11132:217::-;11172:1;11198;11188:132;;11242:10;11237:3;11233:20;11230:1;11223:31;11277:4;11274:1;11267:15;11305:4;11302:1;11295:15;11188:132;-1:-1:-1;11334:9:1;;11132:217::o;11354:125::-;11419:9;;;11440:10;;;11437:36;;;11453:18;;:::i;11484:402::-;11686:2;11668:21;;;11725:2;11705:18;;;11698:30;11764:34;11759:2;11744:18;;11737:62;-1:-1:-1;;;11830:2:1;11815:18;;11808:36;11876:3;11861:19;;11484:402::o;11891:346::-;12093:2;12075:21;;;12132:2;12112:18;;;12105:30;-1:-1:-1;;;12166:2:1;12151:18;;12144:52;12228:2;12213:18;;11891:346::o;12242:338::-;12444:2;12426:21;;;12483:2;12463:18;;;12456:30;-1:-1:-1;;;12517:2:1;12502:18;;12495:44;12571:2;12556:18;;12242:338::o;12585:349::-;12787:2;12769:21;;;12826:2;12806:18;;;12799:30;12865:27;12860:2;12845:18;;12838:55;12925:2;12910:18;;12585:349::o;12939:135::-;12978:3;12999:17;;;12996:43;;13019:18;;:::i;:::-;-1:-1:-1;13066:1:1;13055:13;;12939:135::o;13752:273::-;13820:6;13873:2;13861:9;13852:7;13848:23;13844:32;13841:52;;;13889:1;13886;13879:12;13841:52;13921:9;13915:16;13971:4;13964:5;13960:16;13953:5;13950:27;13940:55;;13991:1;13988;13981:12;14030:375;14118:1;14136:5;14150:249;14171:1;14161:8;14158:15;14150:249;;;14221:4;14216:3;14212:14;14206:4;14203:24;14200:50;;;14230:18;;:::i;:::-;14280:1;14270:8;14266:16;14263:49;;;14294:16;;;;14263:49;14377:1;14373:16;;;;;14333:15;;14150:249;;;14030:375;;;;;;:::o;14410:902::-;14459:5;14489:8;14479:80;;-1:-1:-1;14530:1:1;14544:5;;14479:80;14578:4;14568:76;;-1:-1:-1;14615:1:1;14629:5;;14568:76;14660:4;14678:1;14673:59;;;;14746:1;14741:174;;;;14653:262;;14673:59;14703:1;14694:10;;14717:5;;;14741:174;14778:3;14768:8;14765:17;14762:43;;;14785:18;;:::i;:::-;-1:-1:-1;;14841:1:1;14827:16;;14900:5;;14653:262;;14999:2;14989:8;14986:16;14980:3;14974:4;14971:13;14967:36;14961:2;14951:8;14948:16;14943:2;14937:4;14934:12;14930:35;14927:77;14924:203;;;-1:-1:-1;15036:19:1;;;15112:5;;14924:203;15159:42;-1:-1:-1;;15184:8:1;15178:4;15159:42;:::i;:::-;15237:6;15233:1;15229:6;15225:19;15216:7;15213:32;15210:58;;;15248:18;;:::i;:::-;15286:20;;14410:902;-1:-1:-1;;;14410:902:1:o;15317:140::-;15375:5;15404:47;15445:4;15435:8;15431:19;15425:4;15404:47;:::i;16832:346::-;17034:2;17016:21;;;17073:2;17053:18;;;17046:30;-1:-1:-1;;;17107:2:1;17092:18;;17085:52;17169:2;17154:18;;16832:346::o;17462:245::-;17529:6;17582:2;17570:9;17561:7;17557:23;17553:32;17550:52;;;17598:1;17595;17588:12;17550:52;17630:9;17624:16;17649:28;17671:5;17649:28;:::i;18059:175::-;18096:3;18140:4;18133:5;18129:16;18169:4;18160:7;18157:17;18154:43;;18177:18;;:::i;:::-;18226:1;18213:15;;18059:175;-1:-1:-1;;18059:175:1:o;19623:179::-;19701:13;;19754:22;19743:34;;19733:45;;19723:73;;19792:1;19789;19782:12;19807:571;19910:6;19918;19926;19934;19942;19995:3;19983:9;19974:7;19970:23;19966:33;19963:53;;;20012:1;20009;20002:12;19963:53;20035:39;20064:9;20035:39;:::i;:::-;20114:2;20099:18;;20093:25;20180:2;20165:18;;20159:25;20274:2;20259:18;;20253:25;20025:49;;-1:-1:-1;20093:25:1;;-1:-1:-1;20159:25:1;-1:-1:-1;20253:25:1;-1:-1:-1;20323:49:1;20367:3;20352:19;;20323:49;:::i;:::-;20313:59;;19807:571;;;;;;;;:::o;20383:237::-;20455:9;;;20422:7;20480:9;;-1:-1:-1;;;20491:18:1;;20476:34;20473:60;;;20513:18;;:::i;:::-;20586:1;20577:7;20572:16;20569:1;20566:23;20562:1;20555:9;20552:38;20542:72;;20594:18;;:::i;21350:127::-;21411:10;21406:3;21402:20;21399:1;21392:31;21442:4;21439:1;21432:15;21466:4;21463:1;21456:15;24892:230;24962:6;25015:2;25003:9;24994:7;24990:23;24986:32;24983:52;;;25031:1;25028;25021:12;24983:52;-1:-1:-1;25076:16:1;;24892:230;-1:-1:-1;24892:230:1:o;26237:345::-;26439:2;26421:21;;;26478:2;26458:18;;;26451:30;-1:-1:-1;;;26512:2:1;26497:18;;26490:51;26573:2;26558:18;;26237:345::o
Swarm Source
ipfs://6c15108ba45546bd0c2df48a6e15c6999a017f72d1970c88f8350b44cae12e2d
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.