Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 947 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Approve | 24289385 | 5 days ago | IN | 0 ETH | 0.00001351 | ||||
| Approve | 23867318 | 64 days ago | IN | 0 ETH | 0.0000048 | ||||
| Approve | 23777401 | 76 days ago | IN | 0 ETH | 0.00015008 | ||||
| Approve | 23765551 | 78 days ago | IN | 0 ETH | 0.00009862 | ||||
| Approve | 23637614 | 96 days ago | IN | 0 ETH | 0.00001607 | ||||
| Approve | 23583364 | 104 days ago | IN | 0 ETH | 0.00005251 | ||||
| Transfer | 23567829 | 106 days ago | IN | 0 ETH | 0.0000484 | ||||
| Transfer | 23546631 | 109 days ago | IN | 0 ETH | 0.00001862 | ||||
| Transfer | 23546628 | 109 days ago | IN | 0 ETH | 0.00001227 | ||||
| Approve | 23544213 | 109 days ago | IN | 0 ETH | 0.0000173 | ||||
| Transfer | 23458367 | 121 days ago | IN | 0 ETH | 0.0000136 | ||||
| Transfer | 23458125 | 121 days ago | IN | 0 ETH | 0.00001018 | ||||
| Transfer | 23458053 | 121 days ago | IN | 0 ETH | 0.00001377 | ||||
| Approve | 23442502 | 123 days ago | IN | 0 ETH | 0.0001226 | ||||
| Approve | 23404437 | 129 days ago | IN | 0 ETH | 0.00003905 | ||||
| Transfer | 23399618 | 129 days ago | IN | 0 ETH | 0.00002328 | ||||
| Approve | 23329605 | 139 days ago | IN | 0 ETH | 0.00005678 | ||||
| Transfer | 23297432 | 144 days ago | IN | 0 ETH | 0.00009128 | ||||
| Approve | 23292613 | 144 days ago | IN | 0 ETH | 0.00024625 | ||||
| Approve | 23278543 | 146 days ago | IN | 0 ETH | 0.00001193 | ||||
| Approve | 23277469 | 146 days ago | IN | 0 ETH | 0.00001571 | ||||
| Approve | 23274983 | 147 days ago | IN | 0 ETH | 0.00005849 | ||||
| Approve | 23274982 | 147 days ago | IN | 0 ETH | 0.00005906 | ||||
| Approve | 23274980 | 147 days ago | IN | 0 ETH | 0.00005871 | ||||
| Approve | 23274979 | 147 days ago | IN | 0 ETH | 0.0000184 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| Transfer | 22591416 | 242 days ago | 1.73376765 ETH | ||||
| Transfer | 22591416 | 242 days ago | 1.73376765 ETH | ||||
| Transfer | 22591413 | 242 days ago | 1.66911059 ETH | ||||
| Transfer | 22591413 | 242 days ago | 1.66911059 ETH | ||||
| Transfer | 22591411 | 242 days ago | 1.57322863 ETH | ||||
| Transfer | 22591411 | 242 days ago | 1.57322863 ETH | ||||
| Transfer | 22591408 | 242 days ago | 1.70732676 ETH | ||||
| Transfer | 22591408 | 242 days ago | 1.70732676 ETH | ||||
| Transfer | 22591406 | 242 days ago | 1.8910952 ETH | ||||
| Transfer | 22591406 | 242 days ago | 1.8910952 ETH | ||||
| Transfer | 22591404 | 242 days ago | 2.0170104 ETH | ||||
| Transfer | 22591404 | 242 days ago | 2.0170104 ETH | ||||
| Transfer | 22591402 | 242 days ago | 2.33418024 ETH | ||||
| Transfer | 22591402 | 242 days ago | 2.33418024 ETH | ||||
| Transfer | 22591400 | 242 days ago | 1.66073639 ETH | ||||
| Transfer | 22591400 | 242 days ago | 1.66073639 ETH | ||||
| Transfer | 22591398 | 242 days ago | 2.0250981 ETH | ||||
| Transfer | 22591398 | 242 days ago | 2.0250981 ETH | ||||
| Transfer | 22591396 | 242 days ago | 1.60955361 ETH | ||||
| Transfer | 22591396 | 242 days ago | 1.60955361 ETH | ||||
| Transfer | 22591394 | 242 days ago | 1.6323869 ETH | ||||
| Transfer | 22591394 | 242 days ago | 1.6323869 ETH | ||||
| Transfer | 22591392 | 242 days ago | 1.61510869 ETH | ||||
| Transfer | 22591392 | 242 days ago | 1.61510869 ETH | ||||
| Transfer | 22591390 | 242 days ago | 1.67894673 ETH |
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
token
Compiler Version
v0.8.26+commit.8a97fa7a
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2025-05-29
*/
/**
████████ ██████ ██ ██ ███ ███ ██████ ███████
██ ██ ██ ██ ██ ████ ████ ██ ██ ██
██ ██████ ██ ██ ██ ████ ██ ██████ █████
██ ██ ██ ██ ██ ██ ██ ██ ██ ██
██ ██ ██ ██████ ██ ██ ██ ███████
Trump Pepe, $TRUMPE - Make Ethereum Great Again!
Web: https://trumpecoineth.vip
X: https://x.com/trumpecoineth
TG: https://t.me/trumpecoineth
*/
pragma solidity 0.8.26;
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
return msg.data;
}
}
interface IERC20 {
function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
function transfer(address recipient, 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 sender,
address recipient,
uint256 amount
) external returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
}
interface IERC20Metadata is IERC20{
function name() external view returns (string memory);
function symbol() external view returns (string memory);
function decimals() external view returns (uint8);
}
contract ERC20 is Context, IERC20, IERC20Metadata {
mapping(address => uint256) private _balances;
mapping(address => mapping(address => uint256)) private _allowances;
uint256 private _totalSupply;
string private _name;
string private _symbol;
constructor(string memory name_, string memory symbol_) {
_name = name_;
_symbol = symbol_;
}
function name() public view virtual override returns (string memory) {
return _name;
}
function symbol() public view virtual override returns (string memory) {
return _symbol;
}
function decimals() public view virtual override returns (uint8) {
return 18;
}
function totalSupply() public view virtual override returns (uint256) {
return _totalSupply;
}
function balanceOf(address account) public view virtual override returns (uint256) {
return _balances[account];
}
function transfer(address to, uint256 amount) public virtual override returns (bool) {
address owner = _msgSender();
_transfer(owner, to, amount);
return true;
}
function allowance(address owner, address spender) public view virtual override returns (uint256) {
return _allowances[owner][spender];
}
function approve(address spender, uint256 amount) public virtual override returns (bool) {
address owner = _msgSender();
_approve(owner, spender, amount);
return true;
}
function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) {
address spender = _msgSender();
_spendAllowance(from, spender, amount);
_transfer(from, to, amount);
return true;
}
function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
address owner = _msgSender();
_approve(owner, spender, allowance(owner, spender) + addedValue);
return true;
}
function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
address owner = _msgSender();
uint256 currentAllowance = allowance(owner, spender);
require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
unchecked {
_approve(owner, spender, currentAllowance - subtractedValue);
}
return true;
}
function _transfer(address from, address to, uint256 amount) internal virtual {
require(from != address(0), "ERC20: transfer from the zero address");
require(to != address(0), "ERC20: transfer to the zero address");
uint256 fromBalance = _balances[from];
require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
unchecked {
_balances[from] = fromBalance - amount;
// Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by
// decrementing then incrementing.
_balances[to] += amount;
}
emit Transfer(from, to, amount);
}
function _mint(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: mint to the zero address");
_totalSupply += amount;
unchecked {
// Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.
_balances[account] += amount;
}
emit Transfer(address(0), account, amount);
}
function _approve(address owner, address spender, uint256 amount) internal virtual {
require(owner != address(0), "ERC20: approve from the zero address");
require(spender != address(0), "ERC20: approve to the zero address");
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
function _spendAllowance(address owner, address spender, uint256 amount) internal virtual {
uint256 currentAllowance = allowance(owner, spender);
if (currentAllowance != type(uint256).max) {
require(currentAllowance >= amount, "ERC20: insufficient allowance");
unchecked {
_approve(owner, spender, currentAllowance - amount);
}
}
}
}
contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
constructor () {
address msgSender = _msgSender();
_owner = msgSender;
emit OwnershipTransferred(address(0), msgSender);
}
function owner() public view returns (address) {
return _owner;
}
modifier onlyOwner() {
require(_owner == _msgSender(), "Ownable: caller is not the owner");
_;
}
function renounceOwnership() external virtual onlyOwner {
emit OwnershipTransferred(_owner, address(0));
_owner = address(0);
}
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
emit OwnershipTransferred(_owner, newOwner);
_owner = 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) {
// only check isContract if the call was successful and the return data is empty
// otherwise we already know that it was a contract
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 {
// Look for revert reason and bubble it up if present
if (returndata.length > 0) {
// The easiest way to bubble the revert reason is using memory via assembly
/// @solidity memory-safe-assembly
assembly {
let returndata_size := mload(returndata)
revert(add(32, returndata), returndata_size)
}
} else {
revert(errorMessage);
}
}
}
library SafeERC20 {
using Address for address;
function safeTransfer(IERC20 token, address to, uint256 value) internal {
_callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
}
function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {
_callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
}
function _callOptionalReturn(IERC20 token, bytes memory data) private {
bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed");
if (returndata.length > 0) {
require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
}
}
function safeApprove(IERC20 token, address spender, uint256 value) internal {
require(
(value == 0) || (token.allowance(address(this), spender) == 0),
"SafeERC20: approve from non-zero to non-zero allowance"
);
_callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
}
}
interface ILpPair {
function sync() external;
}
interface IDexRouter {
function factory() external pure returns (address);
function WETH() external pure returns (address);
function swapExactTokensForETHSupportingFeeOnTransferTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external;
}
interface IDexFactory {
function createPair(address tokenA, address tokenB) external returns (address pair);
}
contract token is ERC20, Ownable {
// Mappings
mapping(address => bool) public exemptFromFees;
mapping(address => bool) public exemptFromLimits;
mapping(address => bool) public isAMMPair;
mapping(address => uint256) private _holderLastTransferBlock; // MEV protection
// Addresses
address public marketingAddress;
address public devAddress;
address public immutable lpPair;
address public immutable WETH;
// Contracts
IDexRouter public immutable dexRouter;
// Booleans
bool public tradingAllowed;
bool public antiMevEnabled = false;
bool public limited = true;
bool public transferDelayEnabled = true;
// Structs
struct TxLimits {
uint128 transactionLimit;
uint128 walletLimit;
}
struct Taxes {
uint64 marketingTax;
uint64 devTax;
uint64 liquidityTax;
uint64 totalTax;
}
struct TokensForTax {
uint80 tokensForMarketing;
uint80 tokensForLiquidity;
uint80 tokensForDev;
bool gasSaver;
}
// Public Variables
TxLimits public txLimits;
Taxes public buyTax;
Taxes public sellTax;
TokensForTax public tokensForTax;
// Constants
uint64 public constant FEE_DIVISOR = 10000;
uint256 public launchBlock;
// Swap Variables
uint256 public swapTokensAtAmt;
uint256 public lastSwapBackBlock;
// Events
event UpdatedTransactionLimit(uint newMax);
event UpdatedWalletLimit(uint newMax);
event SetExemptFromFees(address _address, bool _isExempt);
event SetExemptFromLimits(address _address, bool _isExempt);
event RemovedLimits();
event UpdatedBuyTax(uint newAmt);
event UpdatedSellTax(uint newAmt);
event removeTaxEvent(uint newAmt);
uint128 private launchTax = 500; // Initial value set to 500 (5%)
constructor()
ERC20("Trump Pepe", "TRUMPE")
{
_mint(msg.sender, 1000000000 * (10 ** 18));
address _v2Router;
// @dev assumes WETH pair
if(block.chainid == 1){
_v2Router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
} else if(block.chainid == 5){
_v2Router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
} else if(block.chainid == 97){
_v2Router = 0xD99D1c33F9fC3444f8101754aBC46c52416550D1;
} else if(block.chainid == 56){
_v2Router = 0x10ED43C718714eb63d5aA57B78B54704E256024E;
} else if(block.chainid == 42161){
_v2Router = 0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506;
} else if(block.chainid == 8453){
_v2Router = 0x4752ba5DBc23f44D87826276BF6Fd6b1C372aD24;
} else {
revert("Chain not configured");
}
dexRouter = IDexRouter(_v2Router);
txLimits.transactionLimit = uint128(totalSupply() * 10 / 1000);
txLimits.walletLimit = uint128(totalSupply() * 10 / 1000);
swapTokensAtAmt = totalSupply() * 25 / 100000;
marketingAddress = msg.sender; // update
devAddress = msg.sender; // update
buyTax.marketingTax = 1500;// 1% = 100
buyTax.liquidityTax = 0;
buyTax.devTax = 0;
buyTax.totalTax = buyTax.marketingTax + buyTax.liquidityTax + buyTax.devTax;
sellTax.marketingTax = 1500;
sellTax.liquidityTax = 0;
sellTax.devTax = 0;
sellTax.totalTax = sellTax.marketingTax + sellTax.liquidityTax + sellTax.devTax;
tokensForTax.gasSaver = true;
WETH = dexRouter.WETH();
lpPair = IDexFactory(dexRouter.factory()).createPair(address(this), WETH);
isAMMPair[lpPair] = true;
exemptFromLimits[lpPair] = true;
exemptFromLimits[msg.sender] = true;
exemptFromLimits[address(this)] = true;
exemptFromFees[msg.sender] = true;
exemptFromFees[address(this)] = true;
exemptFromFees[address(dexRouter)] = true;
_approve(address(this), address(dexRouter), type(uint256).max);
_approve(address(msg.sender), address(dexRouter), totalSupply());
}
function _transfer(
address from,
address to,
uint256 amount
) internal virtual override {
if(!exemptFromFees[from] && !exemptFromFees[to]){
require(tradingAllowed, "Trading not active");
amount -= handleTax(from, to, amount);
checkLimits(from, to, amount);
}
super._transfer(from,to,amount);
}
function checkLimits(address from, address to, uint256 amount) internal {
if(limited){
bool exFromLimitsTo = exemptFromLimits[to];
uint256 balanceOfTo = balanceOf(to);
TxLimits memory _txLimits = txLimits;
// buy
if (isAMMPair[from] && !exFromLimitsTo) {
require(amount <= _txLimits.transactionLimit, "Max Txn");
require(amount + balanceOfTo <= _txLimits.walletLimit, "Max Wallet");
}
// sell
else if (isAMMPair[to] && !exemptFromLimits[from]) {
require(amount <= _txLimits.transactionLimit, "Max Txn");
}
else if(!exFromLimitsTo) {
require(amount + balanceOfTo <= _txLimits.walletLimit, "Max Wallet");
}
if(transferDelayEnabled){
if (to != address(dexRouter) && to != address(lpPair)){
require(_holderLastTransferBlock[tx.origin] + 6 < block.number, "Transfer Delay");
_holderLastTransferBlock[to] = block.number;
_holderLastTransferBlock[tx.origin] = block.number;
if(from == address(lpPair)){
require(tx.origin == to, "no buying to external wallets yet");
}
}
}
}
}
function handleTax(address from, address to, uint256 amount) internal returns (uint256){
if(balanceOf(address(this)) >= swapTokensAtAmt && !isAMMPair[from] && lastSwapBackBlock + 2 <= block.number) {
convertTaxes();
}
uint128 tax = 0;
Taxes memory taxes;
if (isAMMPair[to]){
taxes = sellTax;
} else if(isAMMPair[from]){
taxes = buyTax;
}
if(taxes.totalTax > 0){
TokensForTax memory tokensForTaxUpdate = tokensForTax;
if(launchBlock == block.number){
if (isAMMPair[from] || isAMMPair[to]){
tax = uint128(amount * launchTax / FEE_DIVISOR);
}
} else if(block.number == launchBlock + 1 || block.number == launchBlock + 2){
if (isAMMPair[from] || isAMMPair[to]){
tax = uint128(amount * 3000 / FEE_DIVISOR);
}
} else {
tax = uint128(amount * taxes.totalTax / FEE_DIVISOR);
}
tokensForTaxUpdate.tokensForLiquidity += uint80(tax * taxes.liquidityTax / taxes.totalTax / 1e9);
tokensForTaxUpdate.tokensForMarketing += uint80(tax * taxes.marketingTax / taxes.totalTax / 1e9);
tokensForTaxUpdate.tokensForDev += uint80(tax * taxes.devTax / taxes.totalTax / 1e9);
tokensForTax = tokensForTaxUpdate;
super._transfer(from, address(this), tax);
}
return tax;
}
function swapTokensForETH(uint256 tokenAmt) private {
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = WETH;
dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
tokenAmt,
0,
path,
address(this),
block.timestamp
);
}
function convertTaxes() private {
uint256 contractBalance = balanceOf(address(this));
TokensForTax memory tokensForTaxMem = tokensForTax;
uint256 totalTokensToSwap = tokensForTaxMem.tokensForLiquidity + tokensForTaxMem.tokensForMarketing + tokensForTaxMem.tokensForDev;
if(contractBalance == 0 || totalTokensToSwap == 0) {return;}
if(contractBalance > swapTokensAtAmt * 10){
contractBalance = swapTokensAtAmt * 10;
}
if(tokensForTaxMem.tokensForLiquidity > 0){
uint256 liquidityTokens = contractBalance * tokensForTaxMem.tokensForLiquidity / totalTokensToSwap;
super._transfer(address(this), lpPair, liquidityTokens);
try ILpPair(lpPair).sync(){} catch {}
contractBalance -= liquidityTokens;
totalTokensToSwap -= tokensForTaxMem.tokensForLiquidity;
}
if(contractBalance > 0){
swapTokensForETH(contractBalance);
uint256 ethBalance = address(this).balance;
bool success;
if(tokensForTaxMem.tokensForDev > 0){
(success,) = devAddress.call{value: ethBalance * tokensForTaxMem.tokensForDev / totalTokensToSwap}("");
}
ethBalance = address(this).balance;
if(ethBalance > 0){
(success,) = marketingAddress.call{value: ethBalance}("");
}
}
tokensForTaxMem.tokensForLiquidity = 0;
tokensForTaxMem.tokensForMarketing = 0;
tokensForTaxMem.tokensForDev = 0;
tokensForTax = tokensForTaxMem;
lastSwapBackBlock = block.number;
}
// owner functions
function setExemptFromFee(address _address, bool _isExempt) external onlyOwner {
require(_address != address(0), "Zero Address");
require(_address != address(this), "Cannot unexempt contract");
exemptFromFees[_address] = _isExempt;
emit SetExemptFromFees(_address, _isExempt);
}
function setExemptFromLimit(address _address, bool _isExempt) external onlyOwner {
require(_address != address(0), "Zero Address");
if(!_isExempt){
require(_address != lpPair, "Cannot remove pair");
}
exemptFromLimits[_address] = _isExempt;
emit SetExemptFromLimits(_address, _isExempt);
}
function updateTransactionLimit(uint128 newNumInTokens) external onlyOwner {
require(newNumInTokens >= (totalSupply() * 1 / 1000)/(10**decimals()), "Too low");
txLimits.transactionLimit = uint128(newNumInTokens * (10**decimals()));
emit UpdatedTransactionLimit(txLimits.transactionLimit);
}
function updateWalletLimit(uint128 newNumInTokens) external onlyOwner {
require(newNumInTokens >= (totalSupply() * 1 / 1000)/(10**decimals()), "Too low");
txLimits.walletLimit = uint128(newNumInTokens * (10**decimals()));
emit UpdatedWalletLimit(txLimits.walletLimit);
}
function updateSwapTokensAmt(uint256 newAmount) external onlyOwner {
require(newAmount >= (totalSupply() * 1) / 100000, "Swap amount cannot be lower than 0.001% total supply.");
require(newAmount <= (totalSupply() * 5) / 1000, "Swap amount cannot be higher than 0.5% total supply.");
swapTokensAtAmt = newAmount;
}
function updateBuyTax(uint64 _marketingTax, uint64 _liquidityTax, uint64 _devTax) external onlyOwner {
Taxes memory taxes;
taxes.marketingTax = _marketingTax;
taxes.liquidityTax = _liquidityTax;
taxes.devTax = _devTax;
taxes.totalTax = _marketingTax + _liquidityTax + _devTax;
require(taxes.totalTax <= 6000 || taxes.totalTax <= buyTax.totalTax, "Keep tax below 60%");
emit UpdatedBuyTax(taxes.totalTax);
buyTax = taxes;
}
function updateSellTax(uint64 _marketingTax, uint64 _liquidityTax, uint64 _devTax) external onlyOwner {
Taxes memory taxes;
taxes.marketingTax = _marketingTax;
taxes.liquidityTax = _liquidityTax;
taxes.devTax = _devTax;
taxes.totalTax = _marketingTax + _liquidityTax + _devTax;
require(taxes.totalTax <= 6000 || taxes.totalTax <= sellTax.totalTax, "Keep tax below 60%");
emit UpdatedSellTax(taxes.totalTax);
sellTax = taxes;
}
function renounceDevTax() external {
require(msg.sender == devAddress, "Not dev");
Taxes memory buyTaxes = buyTax;
buyTaxes.marketingTax += buyTaxes.devTax;
buyTaxes.devTax = 0;
buyTax = buyTaxes;
Taxes memory sellTaxes = sellTax;
sellTaxes.marketingTax += sellTaxes.devTax;
sellTaxes.devTax = 0;
sellTax = sellTaxes;
}
function enableTrading() external onlyOwner {
require(!tradingAllowed, "Trading already enabled");
tradingAllowed = true;
launchBlock = block.number;
lastSwapBackBlock = block.number;
}
function removeLimits() external onlyOwner {
limited = false;
TxLimits memory _txLimits;
uint256 supply = totalSupply();
_txLimits.transactionLimit = uint128(supply);
_txLimits.walletLimit = uint128(supply);
txLimits = _txLimits;
emit RemovedLimits();
}
function removeTransferDelay() external onlyOwner {
require(transferDelayEnabled, "Already disabled!");
transferDelayEnabled = false;
}
function withdrawStuckETH() external {
bool success;
(success,) = address(devAddress).call{value: address(this).balance}("");
}
function rescueTokens(address _token) external {
require(_token != address(0), "_token address cannot be 0");
require(msg.sender == marketingAddress || msg.sender == devAddress, "Not dev");
uint256 _contractBalance = IERC20(_token).balanceOf(address(this));
SafeERC20.safeTransfer(IERC20(_token),address(devAddress), _contractBalance);
}
function updateMarketingAddress(address _address) external onlyOwner {
require(_address != address(0), "zero address");
marketingAddress = _address;
}
function updateDevAddress(address _address) external onlyOwner {
require(_address != address(0), "zero address");
devAddress = _address;
}
function setLaunchTax(uint128 newTax) external onlyOwner {
require(newTax <= 9900, "Launch tax cannot exceed 99%"); // Safety check
launchTax = newTax;
}
function trumpPepe() public pure returns (string memory) {
return "Trump but Pepe";
}
receive() payable external {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"RemovedLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"_isExempt","type":"bool"}],"name":"SetExemptFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"_isExempt","type":"bool"}],"name":"SetExemptFromLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmt","type":"uint256"}],"name":"UpdatedBuyTax","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmt","type":"uint256"}],"name":"UpdatedSellTax","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newMax","type":"uint256"}],"name":"UpdatedTransactionLimit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newMax","type":"uint256"}],"name":"UpdatedWalletLimit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmt","type":"uint256"}],"name":"removeTaxEvent","type":"event"},{"inputs":[],"name":"FEE_DIVISOR","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"antiMevEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTax","outputs":[{"internalType":"uint64","name":"marketingTax","type":"uint64"},{"internalType":"uint64","name":"devTax","type":"uint64"},{"internalType":"uint64","name":"liquidityTax","type":"uint64"},{"internalType":"uint64","name":"totalTax","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"exemptFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"exemptFromLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isAMMPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastSwapBackBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limited","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeTransferDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceDevTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"rescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint64","name":"marketingTax","type":"uint64"},{"internalType":"uint64","name":"devTax","type":"uint64"},{"internalType":"uint64","name":"liquidityTax","type":"uint64"},{"internalType":"uint64","name":"totalTax","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_isExempt","type":"bool"}],"name":"setExemptFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_isExempt","type":"bool"}],"name":"setExemptFromLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint128","name":"newTax","type":"uint128"}],"name":"setLaunchTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTokensAtAmt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForTax","outputs":[{"internalType":"uint80","name":"tokensForMarketing","type":"uint80"},{"internalType":"uint80","name":"tokensForLiquidity","type":"uint80"},{"internalType":"uint80","name":"tokensForDev","type":"uint80"},{"internalType":"bool","name":"gasSaver","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingAllowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"trumpPepe","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"txLimits","outputs":[{"internalType":"uint128","name":"transactionLimit","type":"uint128"},{"internalType":"uint128","name":"walletLimit","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"_marketingTax","type":"uint64"},{"internalType":"uint64","name":"_liquidityTax","type":"uint64"},{"internalType":"uint64","name":"_devTax","type":"uint64"}],"name":"updateBuyTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"updateDevAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"updateMarketingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"_marketingTax","type":"uint64"},{"internalType":"uint64","name":"_liquidityTax","type":"uint64"},{"internalType":"uint64","name":"_devTax","type":"uint64"}],"name":"updateSellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAmt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint128","name":"newNumInTokens","type":"uint128"}],"name":"updateTransactionLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint128","name":"newNumInTokens","type":"uint128"}],"name":"updateWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60e0604052600b805461010160b01b62ffffff60a81b19909116179055601380546001600160801b0319166101f417905534801561003b575f80fd5b506040518060400160405280600a8152602001695472756d70205065706560b01b815250604051806040016040528060068152602001655452554d504560d01b815250816003908161008d919061088c565b50600461009a828261088c565b5050505f6100ac61060a60201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250905f907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35061010f336b033b2e3c9fd0803ce800000061060e565b5f466001036101335750737a250d5630b4cf539739df2c5dacb4c659f2488d610231565b466005036101565750737a250d5630b4cf539739df2c5dacb4c659f2488d610231565b46606103610179575073d99d1c33f9fc3444f8101754abc46c52416550d1610231565b4660380361019c57507310ed43c718714eb63d5aa57b78b54704e256024e610231565b4661a4b1036101c05750731b02da8cb0d097eb8d57a175b88c7d8b47997506610231565b46612105036101e45750734752ba5dbc23f44d87826276bf6fd6b1c372ad24610231565b60405162461bcd60e51b815260206004820152601460248201527f436861696e206e6f7420636f6e6669677572656400000000000000000000000060448201526064015b60405180910390fd5b6001600160a01b03811660c0526103e861024a60025490565b61025590600a61095a565b61025f9190610977565b600c80546001600160801b0319166001600160801b03929092169190911790556103e861028b60025490565b61029690600a61095a565b6102a09190610977565b600c80546001600160801b03928316600160801b029216919091179055620186a06102ca60025490565b6102d590601961095a565b6102df9190610977565b601155600a8054336001600160a01b03199182168117909255600b80549091169091179055600d80546105dc6001600160c01b03199091168117918290556001600160401b0368010000000000000000830481169261034992600160801b90910490911690610996565b6103539190610996565b600d80546001600160c01b0316600160c01b6001600160401b0393841602179055600e80546105dc6001600160c01b03199091168117918290556801000000000000000082048316926103ae92600160801b90041690610996565b6103b89190610996565b600e80546001600160401b0392909216600160c01b026001600160c01b03909216919091179055600f805460ff60f01b1916600160f01b17905560c051604080516315ab88c960e31b815290516001600160a01b039092169163ad5c4648916004808201926020929091908290030181865afa15801561043a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061045e91906109b5565b6001600160a01b031660a0816001600160a01b03168152505060c0516001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104b5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104d991906109b5565b60a0516040516364e329cb60e11b81523060048201526001600160a01b03918216602482015291169063c9c65396906044016020604051808303815f875af1158015610527573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061054b91906109b5565b6001600160a01b0390811660808190525f9081526008602090815260408083208054600160ff19918216811790925560078452828520805482168317905533808652838620805483168417905530808752848720805484168517905590865260069094528285208054821683179055838552828520805482168317905560c05195861685529190932080549091169092179091556105ea915f196106d1565b6106043360c0516105ff6106cb60201b60201c565b6106d1565b506109f5565b3390565b6001600160a01b0382166106645760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610228565b8060025f82825461067591906109e2565b90915550506001600160a01b0382165f81815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b60025490565b6001600160a01b0383166107335760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610228565b6001600160a01b0382166107945760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610228565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168061081c57607f821691505b60208210810361083a57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561088757805f5260205f20601f840160051c810160208510156108655750805b601f840160051c820191505b81811015610884575f8155600101610871565b50505b505050565b81516001600160401b038111156108a5576108a56107f4565b6108b9816108b38454610808565b84610840565b6020601f8211600181146108eb575f83156108d45750848201515b5f19600385901b1c1916600184901b178455610884565b5f84815260208120601f198516915b8281101561091a57878501518255602094850194600190920191016108fa565b508482101561093757868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761097157610971610946565b92915050565b5f8261099157634e487b7160e01b5f52601260045260245ffd5b500490565b6001600160401b03818116838216019081111561097157610971610946565b5f602082840312156109c5575f80fd5b81516001600160a01b03811681146109db575f80fd5b9392505050565b8082018082111561097157610971610946565b60805160a05160c051613558610a575f395f8181610342015281816127570152612f0c01525f81816108a80152612eb501525f81816104e301528181611aa2015281816127940152818161284e01528181612b970152612bbe01526135585ff3fe6080604052600436106102db575f3560e01c80637580863111610189578063ad5c4648116100d8578063ccad03e111610092578063f270fde41161006d578063f270fde4146109dd578063f2fde38b14610a27578063f5648a4f14610a46578063f8686f0714610a5a575f80fd5b8063ccad03e11461098a578063d00efb2f146109a9578063dd62ed3e146109be575f80fd5b8063ad5c464814610897578063b0249cc6146108ca578063bedafd01146108f8578063c78d0fa014610917578063c876d0b91461092c578063cc1776d31461094c575f80fd5b80638da5cb5b116101435780639e93ad8e1161011e5780639e93ad8e1461080d578063a457c2d71461083a578063a5ece94114610859578063a9059cbb14610878575f80fd5b80638da5cb5b146107a657806392f278b2146107c357806395d89b41146107f9575f80fd5b806375808631146106f25780638503376214610706578063860a32ec146107255780638a8c523c146107455780638becc57d146107595780638d3e6e4014610778575f80fd5b80633ad10ef611610245578063627e9d8e116101ff5780636eb14903116101da5780636eb149031461067757806370a0823114610696578063715018a6146106ca578063751039fc146106de575f80fd5b8063627e9d8e146105c457806366ebd39a146105e45780636d7adcad14610603575f80fd5b80633ad10ef61461049e578063432e95a5146104bd578063452ed4f1146104d25780634f7041a51461050557806353371be0146105765780635a90a49e14610596575f80fd5b80632369bf83116102965780632369bf83146103e857806323b872dd14610407578063286965a714610426578063313ce5671461044557806336e18e1914610460578063395093511461047f575f80fd5b8062ae3bf8146102e657806306fdde03146103075780630758d92414610331578063095ea7b31461037c57806318160ddd146103ab57806321045918146103c9575f80fd5b366102e257005b5f80fd5b3480156102f1575f80fd5b5061030561030036600461302c565b610a6e565b005b348015610312575f80fd5b5061031b610ba9565b604051610328919061304c565b60405180910390f35b34801561033c575f80fd5b506103647f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610328565b348015610387575f80fd5b5061039b610396366004613081565b610c39565b6040519015158152602001610328565b3480156103b6575f80fd5b506002545b604051908152602001610328565b3480156103d4575f80fd5b506103056103e33660046130a9565b610c52565b3480156103f3575f80fd5b5061030561040236600461302c565b610d9d565b348015610412575f80fd5b5061039b6104213660046130c0565b610e2e565b348015610431575f80fd5b50610305610440366004613110565b610e51565b348015610450575f80fd5b5060405160128152602001610328565b34801561046b575f80fd5b5061030561047a366004613150565b610fee565b34801561048a575f80fd5b5061039b610499366004613081565b611106565b3480156104a9575f80fd5b50600b54610364906001600160a01b031681565b3480156104c8575f80fd5b506103bb60125481565b3480156104dd575f80fd5b506103647f000000000000000000000000000000000000000000000000000000000000000081565b348015610510575f80fd5b50600d54610543906001600160401b0380821691600160401b8104821691600160801b8204811691600160c01b90041684565b604080516001600160401b0395861681529385166020850152918416918301919091529091166060820152608001610328565b348015610581575f80fd5b50600b5461039b90600160a01b900460ff1681565b3480156105a1575f80fd5b5061039b6105b036600461302c565b60066020525f908152604090205460ff1681565b3480156105cf575f80fd5b50600b5461039b90600160a81b900460ff1681565b3480156105ef575f80fd5b506103056105fe366004613150565b611127565b34801561060e575f80fd5b50600f54610642906001600160501b0380821691600160501b8104821691600160a01b82041690600160f01b900460ff1684565b60405161032894939291906001600160501b039485168152928416602084015292166040820152901515606082015260800190565b348015610682575f80fd5b50610305610691366004613150565b61123b565b3480156106a1575f80fd5b506103bb6106b036600461302c565b6001600160a01b03165f9081526020819052604090205490565b3480156106d5575f80fd5b506103056112e2565b3480156106e9575f80fd5b50610305611355565b3480156106fd575f80fd5b506103056113f7565b348015610711575f80fd5b5061030561072036600461302c565b61159c565b348015610730575f80fd5b50600b5461039b90600160b01b900460ff1681565b348015610750575f80fd5b5061030561162d565b348015610764575f80fd5b50610305610773366004613110565b6116cf565b348015610783575f80fd5b5061039b61079236600461302c565b60076020525f908152604090205460ff1681565b3480156107b1575f80fd5b506005546001600160a01b0316610364565b3480156107ce575f80fd5b5060408051808201909152600e81526d5472756d7020627574205065706560901b602082015261031b565b348015610804575f80fd5b5061031b61186c565b348015610818575f80fd5b5061082261271081565b6040516001600160401b039091168152602001610328565b348015610845575f80fd5b5061039b610854366004613081565b61187b565b348015610864575f80fd5b50600a54610364906001600160a01b031681565b348015610883575f80fd5b5061039b610892366004613081565b6118f5565b3480156108a2575f80fd5b506103647f000000000000000000000000000000000000000000000000000000000000000081565b3480156108d5575f80fd5b5061039b6108e436600461302c565b60086020525f908152604090205460ff1681565b348015610903575f80fd5b50610305610912366004613186565b611902565b348015610922575f80fd5b506103bb60115481565b348015610937575f80fd5b50600b5461039b90600160b81b900460ff1681565b348015610957575f80fd5b50600e54610543906001600160401b0380821691600160401b8104821691600160801b8204811691600160c01b90041684565b348015610995575f80fd5b506103056109a4366004613186565b611a2c565b3480156109b4575f80fd5b506103bb60105481565b3480156109c9575f80fd5b506103bb6109d83660046131bb565b611b71565b3480156109e8575f80fd5b50600c54610a07906001600160801b0380821691600160801b90041682565b604080516001600160801b03938416815292909116602083015201610328565b348015610a32575f80fd5b50610305610a4136600461302c565b611b9b565b348015610a51575f80fd5b50610305611c85565b348015610a65575f80fd5b50610305611cda565b6001600160a01b038116610ac95760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f74206265203000000000000060448201526064015b60405180910390fd5b600a546001600160a01b0316331480610aec5750600b546001600160a01b031633145b610b225760405162461bcd60e51b81526020600482015260076024820152662737ba103232bb60c91b6044820152606401610ac0565b6040516370a0823160e01b81523060048201525f906001600160a01b038316906370a0823190602401602060405180830381865afa158015610b66573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b8a91906131ec565b600b54909150610ba59083906001600160a01b031683611d60565b5050565b606060038054610bb890613203565b80601f0160208091040260200160405190810160405280929190818152602001828054610be490613203565b8015610c2f5780601f10610c0657610100808354040283529160200191610c2f565b820191905f5260205f20905b815481529060010190602001808311610c1257829003601f168201915b5050505050905090565b5f33610c46818585611db7565b60019150505b92915050565b6005546001600160a01b03163314610c7c5760405162461bcd60e51b8152600401610ac09061323b565b620186a0610c8960025490565b610c94906001613284565b610c9e91906132af565b811015610d0b5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610ac0565b6103e8610d1760025490565b610d22906005613284565b610d2c91906132af565b811115610d985760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610ac0565b601155565b6005546001600160a01b03163314610dc75760405162461bcd60e51b8152600401610ac09061323b565b6001600160a01b038116610e0c5760405162461bcd60e51b815260206004820152600c60248201526b7a65726f206164647265737360a01b6044820152606401610ac0565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b5f33610e3b858285611eda565b610e46858585611f4c565b506001949350505050565b6005546001600160a01b03163314610e7b5760405162461bcd60e51b8152600401610ac09061323b565b604080516080810182525f60608201526001600160401b03858116825284811692820192909252908216602082015281610eb584866132c2565b610ebf91906132c2565b6001600160401b031660608201819052611770101580610ef95750600e5460608201516001600160401b03600160c01b9092048216911611155b610f3a5760405162461bcd60e51b81526020600482015260126024820152714b656570207461782062656c6f772036302560701b6044820152606401610ac0565b60608101516040516001600160401b0390911681527fa02824f65350567bc405e202b741e7ca6274004a9feeb44149df72b8bd599c979060200160405180910390a18051600e8054602084015160408501516060909501516001600160401b03908116600160c01b026001600160c01b03968216600160801b02969096166001600160801b03928216600160401b026001600160801b03199094169190951617919091171691909117919091179055505050565b6005546001600160a01b031633146110185760405162461bcd60e51b8152600401610ac09061323b565b6110246012600a6133c4565b6103e861103060025490565b61103b906001613284565b61104591906132af565b61104f91906132af565b816001600160801b031610156110915760405162461bcd60e51b8152602060048201526007602482015266546f6f206c6f7760c81b6044820152606401610ac0565b61109d6012600a6133c4565b6110b0906001600160801b038316613284565b600c80546001600160801b0319166001600160801b039290921691821790556040519081527f6710da7d4acedae09cb83751ae24c150719ef67dcbc1e02049f171d13c6b44e6906020015b60405180910390a150565b5f33610c468185856111188383611b71565b61112291906133d2565b611db7565b6005546001600160a01b031633146111515760405162461bcd60e51b8152600401610ac09061323b565b61115d6012600a6133c4565b6103e861116960025490565b611174906001613284565b61117e91906132af565b61118891906132af565b816001600160801b031610156111ca5760405162461bcd60e51b8152602060048201526007602482015266546f6f206c6f7760c81b6044820152606401610ac0565b6111d66012600a6133c4565b6111e9906001600160801b038316613284565b600c80546001600160801b03908116600160801b93821684021791829055604051929091041681527fde064515fae8f8bb6d8ff19d2c6ba704322def7494147d8a971266430ade0788906020016110fb565b6005546001600160a01b031633146112655760405162461bcd60e51b8152600401610ac09061323b565b6126ac816001600160801b031611156112c05760405162461bcd60e51b815260206004820152601c60248201527f4c61756e6368207461782063616e6e6f742065786365656420393925000000006044820152606401610ac0565b601380546001600160801b0319166001600160801b0392909216919091179055565b6005546001600160a01b0316331461130c5760405162461bcd60e51b8152600401610ac09061323b565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b0316331461137f5760405162461bcd60e51b8152600401610ac09061323b565b600b805460ff60b01b19169055604080518082019091525f80825260208201525f6113a960025490565b6001600160801b03811680845260208401819052600160801b810217600c556040519091507fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c905f90a15050565b600b546001600160a01b0316331461143b5760405162461bcd60e51b81526020600482015260076024820152662737ba103232bb60c91b6044820152606401610ac0565b60408051608081018252600d546001600160401b03808216808452600160401b8304821660208501819052600160801b8404831695850195909552600160c01b90920416606083015290919082906114949083906132c2565b6001600160401b039081169091525f6020848101919091528351600d80546040808801516060808a01519588166001600160c01b031990941693909317600160801b9188168202176001600160c01b0316600160c01b9588168602179093558051608081018252600e54808816808352600160401b8204891697830188905294810488169282019290925293900490941693820193909352925090829061153c9083906132c2565b6001600160401b039081169091525f60208401528251600e805460408601516060909601519284166001600160c01b031990911617600160801b95841695909502949094176001600160c01b0316600160c01b9190921602179091555050565b6005546001600160a01b031633146115c65760405162461bcd60e51b8152600401610ac09061323b565b6001600160a01b03811661160b5760405162461bcd60e51b815260206004820152600c60248201526b7a65726f206164647265737360a01b6044820152606401610ac0565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146116575760405162461bcd60e51b8152600401610ac09061323b565b600b54600160a01b900460ff16156116b15760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720616c726561647920656e61626c65640000000000000000006044820152606401610ac0565b600b805460ff60a01b1916600160a01b179055436010819055601255565b6005546001600160a01b031633146116f95760405162461bcd60e51b8152600401610ac09061323b565b604080516080810182525f60608201526001600160401b0385811682528481169282019290925290821660208201528161173384866132c2565b61173d91906132c2565b6001600160401b0316606082018190526117701015806117775750600d5460608201516001600160401b03600160c01b9092048216911611155b6117b85760405162461bcd60e51b81526020600482015260126024820152714b656570207461782062656c6f772036302560701b6044820152606401610ac0565b60608101516040516001600160401b0390911681527f5380a61520019ce8270d583f62f1b2b9f4f4372e1acaaf708f4865cecece05089060200160405180910390a18051600d8054602084015160408501516060909501516001600160401b03908116600160c01b026001600160c01b03968216600160801b02969096166001600160801b03928216600160401b026001600160801b03199094169190951617919091171691909117919091179055505050565b606060048054610bb890613203565b5f33816118888286611b71565b9050838110156118e85760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610ac0565b610e468286868403611db7565b5f33610c46818585611f4c565b6005546001600160a01b0316331461192c5760405162461bcd60e51b8152600401610ac09061323b565b6001600160a01b0382166119715760405162461bcd60e51b815260206004820152600c60248201526b5a65726f204164647265737360a01b6044820152606401610ac0565b306001600160a01b038316036119c95760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420756e6578656d707420636f6e747261637400000000000000006044820152606401610ac0565b6001600160a01b0382165f81815260066020908152604091829020805460ff19168515159081179091558251938452908301527f998cce27cbf44405c67eb636a634d5e2f2e6ff248b3d71fbbbb022f3c4c6dd2d91015b60405180910390a15050565b6005546001600160a01b03163314611a565760405162461bcd60e51b8152600401610ac09061323b565b6001600160a01b038216611a9b5760405162461bcd60e51b815260206004820152600c60248201526b5a65726f204164647265737360a01b6044820152606401610ac0565b80611b16577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603611b165760405162461bcd60e51b815260206004820152601260248201527121b0b73737ba103932b6b7bb32903830b4b960711b6044820152606401610ac0565b6001600160a01b0382165f81815260076020908152604091829020805460ff19168515159081179091558251938452908301527f8f9f40630a1d139e6cf69b4f447ca47a36f10a017524efaa38252e516fa227ce9101611a20565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6005546001600160a01b03163314611bc55760405162461bcd60e51b8152600401610ac09061323b565b6001600160a01b038116611c2a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ac0565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600b546040515f916001600160a01b03169047908381818185875af1925050503d805f8114611ccf576040519150601f19603f3d011682016040523d82523d5f602084013e611cd4565b606091505b50505050565b6005546001600160a01b03163314611d045760405162461bcd60e51b8152600401610ac09061323b565b600b54600160b81b900460ff16611d515760405162461bcd60e51b8152602060048201526011602482015270416c72656164792064697361626c65642160781b6044820152606401610ac0565b600b805460ff60b81b19169055565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611db290849061200c565b505050565b6001600160a01b038316611e195760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ac0565b6001600160a01b038216611e7a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ac0565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f611ee58484611b71565b90505f198114611cd45781811015611f3f5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610ac0565b611cd48484848403611db7565b6001600160a01b0383165f9081526006602052604090205460ff16158015611f8c57506001600160a01b0382165f9081526006602052604090205460ff16155b1561200157600b54600160a01b900460ff16611fdf5760405162461bcd60e51b815260206004820152601260248201527154726164696e67206e6f742061637469766560701b6044820152606401610ac0565b611fea8383836120dd565b611ff490826133e5565b9050612001838383612549565b611db28383836128e1565b5f612060826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612a849092919063ffffffff16565b805190915015611db2578080602001905181019061207e91906133f8565b611db25760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610ac0565b601154305f9081526020819052604081205490911115801561211757506001600160a01b0384165f9081526008602052604090205460ff16155b8015612131575043601254600261212e91906133d2565b11155b1561213e5761213e612a9a565b604080516080810182525f8082526020808301829052828401829052606083018290526001600160a01b0387168252600890529182205460ff16156121ca575060408051608081018252600e546001600160401b038082168352600160401b820481166020840152600160801b8204811693830193909352600160c01b90049091166060820152612233565b6001600160a01b0386165f9081526008602052604090205460ff1615612233575060408051608081018252600d546001600160401b038082168352600160401b820481166020840152600160801b8204811693830193909352600160c01b900490911660608201525b60608101516001600160401b0316156125375760408051608081018252600f546001600160501b038082168352600160501b820481166020840152600160a01b82041692820192909252600160f01b90910460ff1615156060820152601054439003612307576001600160a01b0387165f9081526008602052604090205460ff16806122d657506001600160a01b0386165f9081526008602052604090205460ff165b1561230257601354612710906122f5906001600160801b031687613284565b6122ff91906132af565b92505b6123ad565b6010546123159060016133d2565b43148061232e575060105461232b9060026133d2565b43145b15612384576001600160a01b0387165f9081526008602052604090205460ff168061237057506001600160a01b0386165f9081526008602052604090205460ff165b15612302576127106122f586610bb8613284565b6060820151612710906123a0906001600160401b031687613284565b6123aa91906132af565b92505b633b9aca0082606001516001600160401b031683604001516001600160401b0316856123d99190613413565b6123e3919061343c565b6123ed919061343c565b816020018181516123fe9190613469565b6001600160501b031690525060608201518251633b9aca00916001600160401b039081169161242e911686613413565b612438919061343c565b612442919061343c565b81518290612451908390613469565b6001600160501b031690525060608201516020830151633b9aca00916001600160401b0390811691612484911686613413565b61248e919061343c565b612498919061343c565b816040018181516124a99190613469565b6001600160501b039081169091528251600f80546020860151604087015160608801511515600160f01b0260ff60f01b19918716600160a01b02919091166affffffffffffffffffffff60a01b19928716600160501b026001600160a01b031990941695909616949094179190911716929092171790555061253587306001600160801b0386166128e1565b505b506001600160801b0316949350505050565b600b54600160b01b900460ff1615611db2576001600160a01b038281165f908152600760209081526040808320548383528184205482518084018452600c546001600160801b038082168352600160801b90910416818601529589168552600890935292205460ff9283169391921680156125c2575082155b156126635780516001600160801b031684111561260b5760405162461bcd60e51b815260206004820152600760248201526626b0bc102a3c3760c91b6044820152606401610ac0565b60208101516001600160801b031661262383866133d2565b111561265e5760405162461bcd60e51b815260206004820152600a60248201526913585e0815d85b1b195d60b21b6044820152606401610ac0565b612743565b6001600160a01b0385165f9081526008602052604090205460ff1680156126a257506001600160a01b0386165f9081526007602052604090205460ff16155b156126eb5780516001600160801b031684111561265e5760405162461bcd60e51b815260206004820152600760248201526626b0bc102a3c3760c91b6044820152606401610ac0565b826127435760208101516001600160801b031661270883866133d2565b11156127435760405162461bcd60e51b815260206004820152600a60248201526913585e0815d85b1b195d60b21b6044820152606401610ac0565b600b54600160b81b900460ff16156128d9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b0316141580156127c957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614155b156128d957325f9081526009602052604090205443906127ea9060066133d2565b106128285760405162461bcd60e51b815260206004820152600e60248201526d5472616e736665722044656c617960901b6044820152606401610ac0565b6001600160a01b038086165f9081526009602052604080822043908190553283529120557f00000000000000000000000000000000000000000000000000000000000000008116908716036128d957326001600160a01b038616146128d95760405162461bcd60e51b815260206004820152602160248201527f6e6f20627579696e6720746f2065787465726e616c2077616c6c6574732079656044820152601d60fa1b6064820152608401610ac0565b505050505050565b6001600160a01b0383166129455760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610ac0565b6001600160a01b0382166129a75760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610ac0565b6001600160a01b0383165f9081526020819052604090205481811015612a1e5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610ac0565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350505050565b6060612a9284845f85612d89565b949350505050565b305f9081526020819052604081205460408051608081018252600f546001600160501b03808216808452600160501b8304821660208501819052600160a01b8404909216948401859052600160f01b90920460ff161515606084015293945090925f9291612b0791613469565b612b119190613469565b6001600160501b03169050821580612b27575080155b15612b3157505050565b601154612b3f90600a613284565b831115612b5757601154612b5490600a613284565b92505b60208201516001600160501b031615612c4f575f8183602001516001600160501b031685612b859190613284565b612b8f91906132af565b9050612bbc307f0000000000000000000000000000000000000000000000000000000000000000836128e1565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663fff6cae96040518163ffffffff1660e01b81526004015f604051808303815f87803b158015612c14575f80fd5b505af1925050508015612c25575060015b50612c3081856133e5565b935082602001516001600160501b031682612c4b91906133e5565b9150505b8215612d4d57612c5e83612e60565b604082015147905f906001600160501b031615612cec57600b5460408501516001600160a01b03909116908490612c9e906001600160501b031685613284565b612ca891906132af565b6040515f81818185875af1925050503d805f8114612ce1576040519150601f19603f3d011682016040523d82523d5f602084013e612ce6565b606091505b50909150505b4791508115612d4a57600a546040516001600160a01b039091169083905f81818185875af1925050503d805f8114612d3f576040519150601f19603f3d011682016040523d82523d5f602084013e612d44565b606091505b50909150505b50505b505f602082018190528082526040820152600f80546060909201511515600160f01b026001600160f81b03199092169190911790555043601255565b606082471015612dea5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610ac0565b5f80866001600160a01b03168587604051612e059190613488565b5f6040518083038185875af1925050503d805f8114612e3f576040519150601f19603f3d011682016040523d82523d5f602084013e612e44565b606091505b5091509150612e5587838387612f74565b979650505050505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110612e9357612e9361349e565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110612ee757612ee761349e565b6001600160a01b03928316602091820292909201015260405163791ac94760e01b81527f00000000000000000000000000000000000000000000000000000000000000009091169063791ac94790612f4b9085905f908690309042906004016134b2565b5f604051808303815f87803b158015612f62575f80fd5b505af11580156128d9573d5f803e3d5ffd5b60608315612fe25782515f03612fdb576001600160a01b0385163b612fdb5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610ac0565b5081612a92565b612a928383815115612ff75781518083602001fd5b8060405162461bcd60e51b8152600401610ac0919061304c565b80356001600160a01b0381168114613027575f80fd5b919050565b5f6020828403121561303c575f80fd5b61304582613011565b9392505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f8060408385031215613092575f80fd5b61309b83613011565b946020939093013593505050565b5f602082840312156130b9575f80fd5b5035919050565b5f805f606084860312156130d2575f80fd5b6130db84613011565b92506130e960208501613011565b929592945050506040919091013590565b80356001600160401b0381168114613027575f80fd5b5f805f60608486031215613122575f80fd5b61312b846130fa565b9250613139602085016130fa565b9150613147604085016130fa565b90509250925092565b5f60208284031215613160575f80fd5b81356001600160801b0381168114613045575f80fd5b8015158114613183575f80fd5b50565b5f8060408385031215613197575f80fd5b6131a083613011565b915060208301356131b081613176565b809150509250929050565b5f80604083850312156131cc575f80fd5b6131d583613011565b91506131e360208401613011565b90509250929050565b5f602082840312156131fc575f80fd5b5051919050565b600181811c9082168061321757607f821691505b60208210810361323557634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417610c4c57610c4c613270565b634e487b7160e01b5f52601260045260245ffd5b5f826132bd576132bd61329b565b500490565b6001600160401b038181168382160190811115610c4c57610c4c613270565b6001815b600184111561331c5780850481111561330057613300613270565b600184161561330e57908102905b60019390931c9280026132e5565b935093915050565b5f8261333257506001610c4c565b8161333e57505f610c4c565b8160018114613354576002811461335e5761337a565b6001915050610c4c565b60ff84111561336f5761336f613270565b50506001821b610c4c565b5060208310610133831016604e8410600b841016171561339d575081810a610c4c565b6133a95f1984846132e1565b805f19048211156133bc576133bc613270565b029392505050565b5f61304560ff841683613324565b80820180821115610c4c57610c4c613270565b81810381811115610c4c57610c4c613270565b5f60208284031215613408575f80fd5b815161304581613176565b6001600160801b03818116838216029081169081811461343557613435613270565b5092915050565b5f6001600160801b038316806134545761345461329b565b806001600160801b0384160491505092915050565b6001600160501b038181168382160190811115610c4c57610c4c613270565b5f82518060208501845e5f920191825250919050565b634e487b7160e01b5f52603260045260245ffd5b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b818110156135025783516001600160a01b03168352602093840193909201916001016134db565b50506001600160a01b03959095166060840152505060800152939250505056fea264697066735822122070ab1412dacf491ee47fd0bf96deb823138394e08514913cc9bbf6f19f49ac3064736f6c634300081a0033
Deployed Bytecode
0x6080604052600436106102db575f3560e01c80637580863111610189578063ad5c4648116100d8578063ccad03e111610092578063f270fde41161006d578063f270fde4146109dd578063f2fde38b14610a27578063f5648a4f14610a46578063f8686f0714610a5a575f80fd5b8063ccad03e11461098a578063d00efb2f146109a9578063dd62ed3e146109be575f80fd5b8063ad5c464814610897578063b0249cc6146108ca578063bedafd01146108f8578063c78d0fa014610917578063c876d0b91461092c578063cc1776d31461094c575f80fd5b80638da5cb5b116101435780639e93ad8e1161011e5780639e93ad8e1461080d578063a457c2d71461083a578063a5ece94114610859578063a9059cbb14610878575f80fd5b80638da5cb5b146107a657806392f278b2146107c357806395d89b41146107f9575f80fd5b806375808631146106f25780638503376214610706578063860a32ec146107255780638a8c523c146107455780638becc57d146107595780638d3e6e4014610778575f80fd5b80633ad10ef611610245578063627e9d8e116101ff5780636eb14903116101da5780636eb149031461067757806370a0823114610696578063715018a6146106ca578063751039fc146106de575f80fd5b8063627e9d8e146105c457806366ebd39a146105e45780636d7adcad14610603575f80fd5b80633ad10ef61461049e578063432e95a5146104bd578063452ed4f1146104d25780634f7041a51461050557806353371be0146105765780635a90a49e14610596575f80fd5b80632369bf83116102965780632369bf83146103e857806323b872dd14610407578063286965a714610426578063313ce5671461044557806336e18e1914610460578063395093511461047f575f80fd5b8062ae3bf8146102e657806306fdde03146103075780630758d92414610331578063095ea7b31461037c57806318160ddd146103ab57806321045918146103c9575f80fd5b366102e257005b5f80fd5b3480156102f1575f80fd5b5061030561030036600461302c565b610a6e565b005b348015610312575f80fd5b5061031b610ba9565b604051610328919061304c565b60405180910390f35b34801561033c575f80fd5b506103647f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610328565b348015610387575f80fd5b5061039b610396366004613081565b610c39565b6040519015158152602001610328565b3480156103b6575f80fd5b506002545b604051908152602001610328565b3480156103d4575f80fd5b506103056103e33660046130a9565b610c52565b3480156103f3575f80fd5b5061030561040236600461302c565b610d9d565b348015610412575f80fd5b5061039b6104213660046130c0565b610e2e565b348015610431575f80fd5b50610305610440366004613110565b610e51565b348015610450575f80fd5b5060405160128152602001610328565b34801561046b575f80fd5b5061030561047a366004613150565b610fee565b34801561048a575f80fd5b5061039b610499366004613081565b611106565b3480156104a9575f80fd5b50600b54610364906001600160a01b031681565b3480156104c8575f80fd5b506103bb60125481565b3480156104dd575f80fd5b506103647f000000000000000000000000136de0af045de8c7c8ec5fa50be81c11492cf8bc81565b348015610510575f80fd5b50600d54610543906001600160401b0380821691600160401b8104821691600160801b8204811691600160c01b90041684565b604080516001600160401b0395861681529385166020850152918416918301919091529091166060820152608001610328565b348015610581575f80fd5b50600b5461039b90600160a01b900460ff1681565b3480156105a1575f80fd5b5061039b6105b036600461302c565b60066020525f908152604090205460ff1681565b3480156105cf575f80fd5b50600b5461039b90600160a81b900460ff1681565b3480156105ef575f80fd5b506103056105fe366004613150565b611127565b34801561060e575f80fd5b50600f54610642906001600160501b0380821691600160501b8104821691600160a01b82041690600160f01b900460ff1684565b60405161032894939291906001600160501b039485168152928416602084015292166040820152901515606082015260800190565b348015610682575f80fd5b50610305610691366004613150565b61123b565b3480156106a1575f80fd5b506103bb6106b036600461302c565b6001600160a01b03165f9081526020819052604090205490565b3480156106d5575f80fd5b506103056112e2565b3480156106e9575f80fd5b50610305611355565b3480156106fd575f80fd5b506103056113f7565b348015610711575f80fd5b5061030561072036600461302c565b61159c565b348015610730575f80fd5b50600b5461039b90600160b01b900460ff1681565b348015610750575f80fd5b5061030561162d565b348015610764575f80fd5b50610305610773366004613110565b6116cf565b348015610783575f80fd5b5061039b61079236600461302c565b60076020525f908152604090205460ff1681565b3480156107b1575f80fd5b506005546001600160a01b0316610364565b3480156107ce575f80fd5b5060408051808201909152600e81526d5472756d7020627574205065706560901b602082015261031b565b348015610804575f80fd5b5061031b61186c565b348015610818575f80fd5b5061082261271081565b6040516001600160401b039091168152602001610328565b348015610845575f80fd5b5061039b610854366004613081565b61187b565b348015610864575f80fd5b50600a54610364906001600160a01b031681565b348015610883575f80fd5b5061039b610892366004613081565b6118f5565b3480156108a2575f80fd5b506103647f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b3480156108d5575f80fd5b5061039b6108e436600461302c565b60086020525f908152604090205460ff1681565b348015610903575f80fd5b50610305610912366004613186565b611902565b348015610922575f80fd5b506103bb60115481565b348015610937575f80fd5b50600b5461039b90600160b81b900460ff1681565b348015610957575f80fd5b50600e54610543906001600160401b0380821691600160401b8104821691600160801b8204811691600160c01b90041684565b348015610995575f80fd5b506103056109a4366004613186565b611a2c565b3480156109b4575f80fd5b506103bb60105481565b3480156109c9575f80fd5b506103bb6109d83660046131bb565b611b71565b3480156109e8575f80fd5b50600c54610a07906001600160801b0380821691600160801b90041682565b604080516001600160801b03938416815292909116602083015201610328565b348015610a32575f80fd5b50610305610a4136600461302c565b611b9b565b348015610a51575f80fd5b50610305611c85565b348015610a65575f80fd5b50610305611cda565b6001600160a01b038116610ac95760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f74206265203000000000000060448201526064015b60405180910390fd5b600a546001600160a01b0316331480610aec5750600b546001600160a01b031633145b610b225760405162461bcd60e51b81526020600482015260076024820152662737ba103232bb60c91b6044820152606401610ac0565b6040516370a0823160e01b81523060048201525f906001600160a01b038316906370a0823190602401602060405180830381865afa158015610b66573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b8a91906131ec565b600b54909150610ba59083906001600160a01b031683611d60565b5050565b606060038054610bb890613203565b80601f0160208091040260200160405190810160405280929190818152602001828054610be490613203565b8015610c2f5780601f10610c0657610100808354040283529160200191610c2f565b820191905f5260205f20905b815481529060010190602001808311610c1257829003601f168201915b5050505050905090565b5f33610c46818585611db7565b60019150505b92915050565b6005546001600160a01b03163314610c7c5760405162461bcd60e51b8152600401610ac09061323b565b620186a0610c8960025490565b610c94906001613284565b610c9e91906132af565b811015610d0b5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610ac0565b6103e8610d1760025490565b610d22906005613284565b610d2c91906132af565b811115610d985760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610ac0565b601155565b6005546001600160a01b03163314610dc75760405162461bcd60e51b8152600401610ac09061323b565b6001600160a01b038116610e0c5760405162461bcd60e51b815260206004820152600c60248201526b7a65726f206164647265737360a01b6044820152606401610ac0565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b5f33610e3b858285611eda565b610e46858585611f4c565b506001949350505050565b6005546001600160a01b03163314610e7b5760405162461bcd60e51b8152600401610ac09061323b565b604080516080810182525f60608201526001600160401b03858116825284811692820192909252908216602082015281610eb584866132c2565b610ebf91906132c2565b6001600160401b031660608201819052611770101580610ef95750600e5460608201516001600160401b03600160c01b9092048216911611155b610f3a5760405162461bcd60e51b81526020600482015260126024820152714b656570207461782062656c6f772036302560701b6044820152606401610ac0565b60608101516040516001600160401b0390911681527fa02824f65350567bc405e202b741e7ca6274004a9feeb44149df72b8bd599c979060200160405180910390a18051600e8054602084015160408501516060909501516001600160401b03908116600160c01b026001600160c01b03968216600160801b02969096166001600160801b03928216600160401b026001600160801b03199094169190951617919091171691909117919091179055505050565b6005546001600160a01b031633146110185760405162461bcd60e51b8152600401610ac09061323b565b6110246012600a6133c4565b6103e861103060025490565b61103b906001613284565b61104591906132af565b61104f91906132af565b816001600160801b031610156110915760405162461bcd60e51b8152602060048201526007602482015266546f6f206c6f7760c81b6044820152606401610ac0565b61109d6012600a6133c4565b6110b0906001600160801b038316613284565b600c80546001600160801b0319166001600160801b039290921691821790556040519081527f6710da7d4acedae09cb83751ae24c150719ef67dcbc1e02049f171d13c6b44e6906020015b60405180910390a150565b5f33610c468185856111188383611b71565b61112291906133d2565b611db7565b6005546001600160a01b031633146111515760405162461bcd60e51b8152600401610ac09061323b565b61115d6012600a6133c4565b6103e861116960025490565b611174906001613284565b61117e91906132af565b61118891906132af565b816001600160801b031610156111ca5760405162461bcd60e51b8152602060048201526007602482015266546f6f206c6f7760c81b6044820152606401610ac0565b6111d66012600a6133c4565b6111e9906001600160801b038316613284565b600c80546001600160801b03908116600160801b93821684021791829055604051929091041681527fde064515fae8f8bb6d8ff19d2c6ba704322def7494147d8a971266430ade0788906020016110fb565b6005546001600160a01b031633146112655760405162461bcd60e51b8152600401610ac09061323b565b6126ac816001600160801b031611156112c05760405162461bcd60e51b815260206004820152601c60248201527f4c61756e6368207461782063616e6e6f742065786365656420393925000000006044820152606401610ac0565b601380546001600160801b0319166001600160801b0392909216919091179055565b6005546001600160a01b0316331461130c5760405162461bcd60e51b8152600401610ac09061323b565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b0316331461137f5760405162461bcd60e51b8152600401610ac09061323b565b600b805460ff60b01b19169055604080518082019091525f80825260208201525f6113a960025490565b6001600160801b03811680845260208401819052600160801b810217600c556040519091507fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c905f90a15050565b600b546001600160a01b0316331461143b5760405162461bcd60e51b81526020600482015260076024820152662737ba103232bb60c91b6044820152606401610ac0565b60408051608081018252600d546001600160401b03808216808452600160401b8304821660208501819052600160801b8404831695850195909552600160c01b90920416606083015290919082906114949083906132c2565b6001600160401b039081169091525f6020848101919091528351600d80546040808801516060808a01519588166001600160c01b031990941693909317600160801b9188168202176001600160c01b0316600160c01b9588168602179093558051608081018252600e54808816808352600160401b8204891697830188905294810488169282019290925293900490941693820193909352925090829061153c9083906132c2565b6001600160401b039081169091525f60208401528251600e805460408601516060909601519284166001600160c01b031990911617600160801b95841695909502949094176001600160c01b0316600160c01b9190921602179091555050565b6005546001600160a01b031633146115c65760405162461bcd60e51b8152600401610ac09061323b565b6001600160a01b03811661160b5760405162461bcd60e51b815260206004820152600c60248201526b7a65726f206164647265737360a01b6044820152606401610ac0565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146116575760405162461bcd60e51b8152600401610ac09061323b565b600b54600160a01b900460ff16156116b15760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720616c726561647920656e61626c65640000000000000000006044820152606401610ac0565b600b805460ff60a01b1916600160a01b179055436010819055601255565b6005546001600160a01b031633146116f95760405162461bcd60e51b8152600401610ac09061323b565b604080516080810182525f60608201526001600160401b0385811682528481169282019290925290821660208201528161173384866132c2565b61173d91906132c2565b6001600160401b0316606082018190526117701015806117775750600d5460608201516001600160401b03600160c01b9092048216911611155b6117b85760405162461bcd60e51b81526020600482015260126024820152714b656570207461782062656c6f772036302560701b6044820152606401610ac0565b60608101516040516001600160401b0390911681527f5380a61520019ce8270d583f62f1b2b9f4f4372e1acaaf708f4865cecece05089060200160405180910390a18051600d8054602084015160408501516060909501516001600160401b03908116600160c01b026001600160c01b03968216600160801b02969096166001600160801b03928216600160401b026001600160801b03199094169190951617919091171691909117919091179055505050565b606060048054610bb890613203565b5f33816118888286611b71565b9050838110156118e85760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610ac0565b610e468286868403611db7565b5f33610c46818585611f4c565b6005546001600160a01b0316331461192c5760405162461bcd60e51b8152600401610ac09061323b565b6001600160a01b0382166119715760405162461bcd60e51b815260206004820152600c60248201526b5a65726f204164647265737360a01b6044820152606401610ac0565b306001600160a01b038316036119c95760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420756e6578656d707420636f6e747261637400000000000000006044820152606401610ac0565b6001600160a01b0382165f81815260066020908152604091829020805460ff19168515159081179091558251938452908301527f998cce27cbf44405c67eb636a634d5e2f2e6ff248b3d71fbbbb022f3c4c6dd2d91015b60405180910390a15050565b6005546001600160a01b03163314611a565760405162461bcd60e51b8152600401610ac09061323b565b6001600160a01b038216611a9b5760405162461bcd60e51b815260206004820152600c60248201526b5a65726f204164647265737360a01b6044820152606401610ac0565b80611b16577f000000000000000000000000136de0af045de8c7c8ec5fa50be81c11492cf8bc6001600160a01b0316826001600160a01b031603611b165760405162461bcd60e51b815260206004820152601260248201527121b0b73737ba103932b6b7bb32903830b4b960711b6044820152606401610ac0565b6001600160a01b0382165f81815260076020908152604091829020805460ff19168515159081179091558251938452908301527f8f9f40630a1d139e6cf69b4f447ca47a36f10a017524efaa38252e516fa227ce9101611a20565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6005546001600160a01b03163314611bc55760405162461bcd60e51b8152600401610ac09061323b565b6001600160a01b038116611c2a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ac0565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600b546040515f916001600160a01b03169047908381818185875af1925050503d805f8114611ccf576040519150601f19603f3d011682016040523d82523d5f602084013e611cd4565b606091505b50505050565b6005546001600160a01b03163314611d045760405162461bcd60e51b8152600401610ac09061323b565b600b54600160b81b900460ff16611d515760405162461bcd60e51b8152602060048201526011602482015270416c72656164792064697361626c65642160781b6044820152606401610ac0565b600b805460ff60b81b19169055565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611db290849061200c565b505050565b6001600160a01b038316611e195760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ac0565b6001600160a01b038216611e7a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ac0565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f611ee58484611b71565b90505f198114611cd45781811015611f3f5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610ac0565b611cd48484848403611db7565b6001600160a01b0383165f9081526006602052604090205460ff16158015611f8c57506001600160a01b0382165f9081526006602052604090205460ff16155b1561200157600b54600160a01b900460ff16611fdf5760405162461bcd60e51b815260206004820152601260248201527154726164696e67206e6f742061637469766560701b6044820152606401610ac0565b611fea8383836120dd565b611ff490826133e5565b9050612001838383612549565b611db28383836128e1565b5f612060826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612a849092919063ffffffff16565b805190915015611db2578080602001905181019061207e91906133f8565b611db25760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610ac0565b601154305f9081526020819052604081205490911115801561211757506001600160a01b0384165f9081526008602052604090205460ff16155b8015612131575043601254600261212e91906133d2565b11155b1561213e5761213e612a9a565b604080516080810182525f8082526020808301829052828401829052606083018290526001600160a01b0387168252600890529182205460ff16156121ca575060408051608081018252600e546001600160401b038082168352600160401b820481166020840152600160801b8204811693830193909352600160c01b90049091166060820152612233565b6001600160a01b0386165f9081526008602052604090205460ff1615612233575060408051608081018252600d546001600160401b038082168352600160401b820481166020840152600160801b8204811693830193909352600160c01b900490911660608201525b60608101516001600160401b0316156125375760408051608081018252600f546001600160501b038082168352600160501b820481166020840152600160a01b82041692820192909252600160f01b90910460ff1615156060820152601054439003612307576001600160a01b0387165f9081526008602052604090205460ff16806122d657506001600160a01b0386165f9081526008602052604090205460ff165b1561230257601354612710906122f5906001600160801b031687613284565b6122ff91906132af565b92505b6123ad565b6010546123159060016133d2565b43148061232e575060105461232b9060026133d2565b43145b15612384576001600160a01b0387165f9081526008602052604090205460ff168061237057506001600160a01b0386165f9081526008602052604090205460ff165b15612302576127106122f586610bb8613284565b6060820151612710906123a0906001600160401b031687613284565b6123aa91906132af565b92505b633b9aca0082606001516001600160401b031683604001516001600160401b0316856123d99190613413565b6123e3919061343c565b6123ed919061343c565b816020018181516123fe9190613469565b6001600160501b031690525060608201518251633b9aca00916001600160401b039081169161242e911686613413565b612438919061343c565b612442919061343c565b81518290612451908390613469565b6001600160501b031690525060608201516020830151633b9aca00916001600160401b0390811691612484911686613413565b61248e919061343c565b612498919061343c565b816040018181516124a99190613469565b6001600160501b039081169091528251600f80546020860151604087015160608801511515600160f01b0260ff60f01b19918716600160a01b02919091166affffffffffffffffffffff60a01b19928716600160501b026001600160a01b031990941695909616949094179190911716929092171790555061253587306001600160801b0386166128e1565b505b506001600160801b0316949350505050565b600b54600160b01b900460ff1615611db2576001600160a01b038281165f908152600760209081526040808320548383528184205482518084018452600c546001600160801b038082168352600160801b90910416818601529589168552600890935292205460ff9283169391921680156125c2575082155b156126635780516001600160801b031684111561260b5760405162461bcd60e51b815260206004820152600760248201526626b0bc102a3c3760c91b6044820152606401610ac0565b60208101516001600160801b031661262383866133d2565b111561265e5760405162461bcd60e51b815260206004820152600a60248201526913585e0815d85b1b195d60b21b6044820152606401610ac0565b612743565b6001600160a01b0385165f9081526008602052604090205460ff1680156126a257506001600160a01b0386165f9081526007602052604090205460ff16155b156126eb5780516001600160801b031684111561265e5760405162461bcd60e51b815260206004820152600760248201526626b0bc102a3c3760c91b6044820152606401610ac0565b826127435760208101516001600160801b031661270883866133d2565b11156127435760405162461bcd60e51b815260206004820152600a60248201526913585e0815d85b1b195d60b21b6044820152606401610ac0565b600b54600160b81b900460ff16156128d9577f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316856001600160a01b0316141580156127c957507f000000000000000000000000136de0af045de8c7c8ec5fa50be81c11492cf8bc6001600160a01b0316856001600160a01b031614155b156128d957325f9081526009602052604090205443906127ea9060066133d2565b106128285760405162461bcd60e51b815260206004820152600e60248201526d5472616e736665722044656c617960901b6044820152606401610ac0565b6001600160a01b038086165f9081526009602052604080822043908190553283529120557f000000000000000000000000136de0af045de8c7c8ec5fa50be81c11492cf8bc8116908716036128d957326001600160a01b038616146128d95760405162461bcd60e51b815260206004820152602160248201527f6e6f20627579696e6720746f2065787465726e616c2077616c6c6574732079656044820152601d60fa1b6064820152608401610ac0565b505050505050565b6001600160a01b0383166129455760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610ac0565b6001600160a01b0382166129a75760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610ac0565b6001600160a01b0383165f9081526020819052604090205481811015612a1e5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610ac0565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350505050565b6060612a9284845f85612d89565b949350505050565b305f9081526020819052604081205460408051608081018252600f546001600160501b03808216808452600160501b8304821660208501819052600160a01b8404909216948401859052600160f01b90920460ff161515606084015293945090925f9291612b0791613469565b612b119190613469565b6001600160501b03169050821580612b27575080155b15612b3157505050565b601154612b3f90600a613284565b831115612b5757601154612b5490600a613284565b92505b60208201516001600160501b031615612c4f575f8183602001516001600160501b031685612b859190613284565b612b8f91906132af565b9050612bbc307f000000000000000000000000136de0af045de8c7c8ec5fa50be81c11492cf8bc836128e1565b7f000000000000000000000000136de0af045de8c7c8ec5fa50be81c11492cf8bc6001600160a01b031663fff6cae96040518163ffffffff1660e01b81526004015f604051808303815f87803b158015612c14575f80fd5b505af1925050508015612c25575060015b50612c3081856133e5565b935082602001516001600160501b031682612c4b91906133e5565b9150505b8215612d4d57612c5e83612e60565b604082015147905f906001600160501b031615612cec57600b5460408501516001600160a01b03909116908490612c9e906001600160501b031685613284565b612ca891906132af565b6040515f81818185875af1925050503d805f8114612ce1576040519150601f19603f3d011682016040523d82523d5f602084013e612ce6565b606091505b50909150505b4791508115612d4a57600a546040516001600160a01b039091169083905f81818185875af1925050503d805f8114612d3f576040519150601f19603f3d011682016040523d82523d5f602084013e612d44565b606091505b50909150505b50505b505f602082018190528082526040820152600f80546060909201511515600160f01b026001600160f81b03199092169190911790555043601255565b606082471015612dea5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610ac0565b5f80866001600160a01b03168587604051612e059190613488565b5f6040518083038185875af1925050503d805f8114612e3f576040519150601f19603f3d011682016040523d82523d5f602084013e612e44565b606091505b5091509150612e5587838387612f74565b979650505050505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110612e9357612e9361349e565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281600181518110612ee757612ee761349e565b6001600160a01b03928316602091820292909201015260405163791ac94760e01b81527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d9091169063791ac94790612f4b9085905f908690309042906004016134b2565b5f604051808303815f87803b158015612f62575f80fd5b505af11580156128d9573d5f803e3d5ffd5b60608315612fe25782515f03612fdb576001600160a01b0385163b612fdb5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610ac0565b5081612a92565b612a928383815115612ff75781518083602001fd5b8060405162461bcd60e51b8152600401610ac0919061304c565b80356001600160a01b0381168114613027575f80fd5b919050565b5f6020828403121561303c575f80fd5b61304582613011565b9392505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f8060408385031215613092575f80fd5b61309b83613011565b946020939093013593505050565b5f602082840312156130b9575f80fd5b5035919050565b5f805f606084860312156130d2575f80fd5b6130db84613011565b92506130e960208501613011565b929592945050506040919091013590565b80356001600160401b0381168114613027575f80fd5b5f805f60608486031215613122575f80fd5b61312b846130fa565b9250613139602085016130fa565b9150613147604085016130fa565b90509250925092565b5f60208284031215613160575f80fd5b81356001600160801b0381168114613045575f80fd5b8015158114613183575f80fd5b50565b5f8060408385031215613197575f80fd5b6131a083613011565b915060208301356131b081613176565b809150509250929050565b5f80604083850312156131cc575f80fd5b6131d583613011565b91506131e360208401613011565b90509250929050565b5f602082840312156131fc575f80fd5b5051919050565b600181811c9082168061321757607f821691505b60208210810361323557634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417610c4c57610c4c613270565b634e487b7160e01b5f52601260045260245ffd5b5f826132bd576132bd61329b565b500490565b6001600160401b038181168382160190811115610c4c57610c4c613270565b6001815b600184111561331c5780850481111561330057613300613270565b600184161561330e57908102905b60019390931c9280026132e5565b935093915050565b5f8261333257506001610c4c565b8161333e57505f610c4c565b8160018114613354576002811461335e5761337a565b6001915050610c4c565b60ff84111561336f5761336f613270565b50506001821b610c4c565b5060208310610133831016604e8410600b841016171561339d575081810a610c4c565b6133a95f1984846132e1565b805f19048211156133bc576133bc613270565b029392505050565b5f61304560ff841683613324565b80820180821115610c4c57610c4c613270565b81810381811115610c4c57610c4c613270565b5f60208284031215613408575f80fd5b815161304581613176565b6001600160801b03818116838216029081169081811461343557613435613270565b5092915050565b5f6001600160801b038316806134545761345461329b565b806001600160801b0384160491505092915050565b6001600160501b038181168382160190811115610c4c57610c4c613270565b5f82518060208501845e5f920191825250919050565b634e487b7160e01b5f52603260045260245ffd5b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b818110156135025783516001600160a01b03168352602093840193909201916001016134db565b50506001600160a01b03959095166060840152505060800152939250505056fea264697066735822122070ab1412dacf491ee47fd0bf96deb823138394e08514913cc9bbf6f19f49ac3064736f6c634300081a0033
Deployed Bytecode Sourcemap
13358:14849:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27148:378;;;;;;;;;;-1:-1:-1;27148:378:0;;;;;:::i;:::-;;:::i;:::-;;2482:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13842:37;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;989:32:1;;;971:51;;959:2;944:18;13842:37:0;806:222:1;3414:201:0;;;;;;;;;;-1:-1:-1;3414:201:0;;;;;:::i;:::-;;:::i;:::-;;;1503:14:1;;1496:22;1478:41;;1466:2;1451:18;3414:201:0;1338:187:1;2803:108:0;;;;;;;;;;-1:-1:-1;2891:12:0;;2803:108;;;1676:25:1;;;1664:2;1649:18;2803:108:0;1530:177:1;24444:346:0;;;;;;;;;;-1:-1:-1;24444:346:0;;;;;:::i;:::-;;:::i;27534:173::-;;;;;;;;;;-1:-1:-1;27534:173:0;;;;;:::i;:::-;;:::i;3623:261::-;;;;;;;;;;-1:-1:-1;3623:261:0;;;;;:::i;:::-;;:::i;25306:504::-;;;;;;;;;;-1:-1:-1;25306:504:0;;;;;:::i;:::-;;:::i;2702:93::-;;;;;;;;;;-1:-1:-1;2702:93:0;;2785:2;2973:36:1;;2961:2;2946:18;2702:93:0;2831:184:1;23804:322:0;;;;;;;;;;-1:-1:-1;23804:322:0;;;;;:::i;:::-;;:::i;3892:238::-;;;;;;;;;;-1:-1:-1;3892:238:0;;;;;:::i;:::-;;:::i;13716:25::-;;;;;;;;;;-1:-1:-1;13716:25:0;;;;-1:-1:-1;;;;;13716:25:0;;;14788:32;;;;;;;;;;;;;;;;13748:31;;;;;;;;;;;;;;;14530:19;;;;;;;;;;-1:-1:-1;14530:19:0;;;;-1:-1:-1;;;;;14530:19:0;;;;-1:-1:-1;;;14530:19:0;;;;;-1:-1:-1;;;14530:19:0;;;;;-1:-1:-1;;;14530:19:0;;;;;;;;;-1:-1:-1;;;;;3775:31:1;;;3757:50;;3843:31;;;3838:2;3823:18;;3816:59;3911:31;;;3891:18;;;3884:59;;;;3979:31;;;3974:2;3959:18;;3952:59;3744:3;3729:19;14530::0;3534:483:1;13905:26:0;;;;;;;;;;-1:-1:-1;13905:26:0;;;;-1:-1:-1;;;13905:26:0;;;;;;13417:46;;;;;;;;;;-1:-1:-1;13417:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;13938:34;;;;;;;;;;-1:-1:-1;13938:34:0;;;;-1:-1:-1;;;13938:34:0;;;;;;24134:302;;;;;;;;;;-1:-1:-1;24134:302:0;;;;;:::i;:::-;;:::i;14583:32::-;;;;;;;;;;-1:-1:-1;14583:32:0;;;;-1:-1:-1;;;;;14583:32:0;;;;-1:-1:-1;;;14583:32:0;;;;;-1:-1:-1;;;14583:32:0;;;;-1:-1:-1;;;14583:32:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;4259:35:1;;;4241:54;;4331:35;;;4326:2;4311:18;;4304:63;4403:35;;4398:2;4383:18;;4376:63;4482:14;;4475:22;4470:2;4455:18;;4448:50;4228:3;4213:19;;4022:482;27884:176:0;;;;;;;;;;-1:-1:-1;27884:176:0;;;;;:::i;:::-;;:::i;2919:127::-;;;;;;;;;;-1:-1:-1;2919:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;3020:18:0;2993:7;3020:18;;;;;;;;;;;;2919:127;7050:150;;;;;;;;;;;;;:::i;26483:321::-;;;;;;;;;;;;;:::i;25818:417::-;;;;;;;;;;;;;:::i;27715:161::-;;;;;;;;;;-1:-1:-1;27715:161:0;;;;;:::i;:::-;;:::i;13979:26::-;;;;;;;;;;-1:-1:-1;13979:26:0;;;;-1:-1:-1;;;13979:26:0;;;;;;26249:226;;;;;;;;;;;;;:::i;24798:500::-;;;;;;;;;;-1:-1:-1;24798:500:0;;;;;:::i;:::-;;:::i;13470:48::-;;;;;;;;;;-1:-1:-1;13470:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6836:79;;;;;;;;;;-1:-1:-1;6901:6:0;;-1:-1:-1;;;;;6901:6:0;6836:79;;28068:99;;;;;;;;;;-1:-1:-1;28136:23:0;;;;;;;;;;;;-1:-1:-1;;;28136:23:0;;;;28068:99;;2590:104;;;;;;;;;;;;;:::i;14642:42::-;;;;;;;;;;;;14679:5;14642:42;;;;;-1:-1:-1;;;;;4671:31:1;;;4653:50;;4641:2;4626:18;14642:42:0;4509:200:1;4140:436:0;;;;;;;;;;-1:-1:-1;4140:436:0;;;;;:::i;:::-;;:::i;13678:31::-;;;;;;;;;;-1:-1:-1;13678:31:0;;;;-1:-1:-1;;;;;13678:31:0;;;3054:193;;;;;;;;;;-1:-1:-1;3054:193:0;;;;;:::i;:::-;;:::i;13786:29::-;;;;;;;;;;;;;;;13525:41;;;;;;;;;;-1:-1:-1;13525:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;23117:319;;;;;;;;;;-1:-1:-1;23117:319:0;;;;;:::i;:::-;;:::i;14751:30::-;;;;;;;;;;;;;;;;14012:39;;;;;;;;;;-1:-1:-1;14012:39:0;;;;-1:-1:-1;;;14012:39:0;;;;;;14556:20;;;;;;;;;;-1:-1:-1;14556:20:0;;;;-1:-1:-1;;;;;14556:20:0;;;;-1:-1:-1;;;14556:20:0;;;;;-1:-1:-1;;;14556:20:0;;;;;-1:-1:-1;;;14556:20:0;;;;;23444:352;;;;;;;;;;-1:-1:-1;23444:352:0;;;;;:::i;:::-;;:::i;14693:26::-;;;;;;;;;;;;;;;;3255:151;;;;;;;;;;-1:-1:-1;3255:151:0;;;;;:::i;:::-;;:::i;14499:24::-;;;;;;;;;;-1:-1:-1;14499:24:0;;;;-1:-1:-1;;;;;14499:24:0;;;;-1:-1:-1;;;14499:24:0;;;;;;;;;-1:-1:-1;;;;;5614:47:1;;;5596:66;;5698:47;;;;5693:2;5678:18;;5671:75;5569:18;14499:24:0;5422:330:1;7208:244:0;;;;;;;;;;-1:-1:-1;7208:244:0;;;;;:::i;:::-;;:::i;26990:150::-;;;;;;;;;;;;;:::i;26814:158::-;;;;;;;;;;;;;:::i;27148:378::-;-1:-1:-1;;;;;27214:20:0;;27206:59;;;;-1:-1:-1;;;27206:59:0;;5959:2:1;27206:59:0;;;5941:21:1;5998:2;5978:18;;;5971:30;6037:28;6017:18;;;6010:56;6083:18;;27206:59:0;;;;;;;;;27298:16;;-1:-1:-1;;;;;27298:16:0;27284:10;:30;;:58;;-1:-1:-1;27332:10:0;;-1:-1:-1;;;;;27332:10:0;27318;:24;27284:58;27276:78;;;;-1:-1:-1;;;27276:78:0;;6314:2:1;27276:78:0;;;6296:21:1;6353:1;6333:18;;;6326:29;-1:-1:-1;;;6371:18:1;;;6364:37;6418:18;;27276:78:0;6112:330:1;27276:78:0;27392:39;;-1:-1:-1;;;27392:39:0;;27425:4;27392:39;;;971:51:1;27365:24:0;;-1:-1:-1;;;;;27392:24:0;;;;;944:18:1;;27392:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27488:10;;27365:66;;-1:-1:-1;27442:76:0;;27472:6;;-1:-1:-1;;;;;27488:10:0;27365:66;27442:22;:76::i;:::-;27195:331;27148:378;:::o;2482:100::-;2536:13;2569:5;2562:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2482:100;:::o;3414:201::-;3497:4;873:10;3553:32;873:10;3569:7;3578:6;3553:8;:32::i;:::-;3603:4;3596:11;;;3414:201;;;;;:::o;24444:346::-;6963:6;;-1:-1:-1;;;;;6963:6:0;873:10;6963:22;6955:67;;;;-1:-1:-1;;;6955:67:0;;;;;;;:::i;:::-;24565:6:::1;24544:13;2891:12:::0;;;2803:108;24544:13:::1;:17;::::0;24560:1:::1;24544:17;:::i;:::-;24543:28;;;;:::i;:::-;24530:9;:41;;24522:107;;;::::0;-1:-1:-1;;;24522:107:0;;8146:2:1;24522:107:0::1;::::0;::::1;8128:21:1::0;8185:2;8165:18;;;8158:30;8224:34;8204:18;;;8197:62;-1:-1:-1;;;8275:18:1;;;8268:51;8336:19;;24522:107:0::1;7944:417:1::0;24522:107:0::1;24683:4;24662:13;2891:12:::0;;;2803:108;24662:13:::1;:17;::::0;24678:1:::1;24662:17;:::i;:::-;24661:26;;;;:::i;:::-;24648:9;:39;;24640:104;;;::::0;-1:-1:-1;;;24640:104:0;;8568:2:1;24640:104:0::1;::::0;::::1;8550:21:1::0;8607:2;8587:18;;;8580:30;8646:34;8626:18;;;8619:62;-1:-1:-1;;;8697:18:1;;;8690:50;8757:19;;24640:104:0::1;8366:416:1::0;24640:104:0::1;24755:15;:27:::0;24444:346::o;27534:173::-;6963:6;;-1:-1:-1;;;;;6963:6:0;873:10;6963:22;6955:67;;;;-1:-1:-1;;;6955:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27622:22:0;::::1;27614:47;;;::::0;-1:-1:-1;;;27614:47:0;;8989:2:1;27614:47:0::1;::::0;::::1;8971:21:1::0;9028:2;9008:18;;;9001:30;-1:-1:-1;;;9047:18:1;;;9040:42;9099:18;;27614:47:0::1;8787:336:1::0;27614:47:0::1;27672:16;:27:::0;;-1:-1:-1;;;;;;27672:27:0::1;-1:-1:-1::0;;;;;27672:27:0;;;::::1;::::0;;;::::1;::::0;;27534:173::o;3623:261::-;3720:4;873:10;3778:38;3794:4;873:10;3809:6;3778:15;:38::i;:::-;3827:27;3837:4;3843:2;3847:6;3827:9;:27::i;:::-;-1:-1:-1;3872:4:0;;3623:261;-1:-1:-1;;;;3623:261:0:o;25306:504::-;6963:6;;-1:-1:-1;;;;;6963:6:0;873:10;6963:22;6955:67;;;;-1:-1:-1;;;6955:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;;;;;;25448:34:0;;::::1;::::0;;25493;;::::1;-1:-1:-1::0;;;25493:34:0;;;;25538:22;;::::1;-1:-1:-1::0;;;25538:22:0;;25588:29:::1;25493:34:::0;25448;25588:29:::1;:::i;:::-;:39;;;;:::i;:::-;-1:-1:-1::0;;;;;25571:56:0::1;:14;::::0;::::1;:56:::0;;;25665:4:::1;-1:-1:-1::0;25646:23:0::1;::::0;:61:::1;;-1:-1:-1::0;25691:7:0::1;:16:::0;25673:14:::1;::::0;::::1;::::0;-1:-1:-1;;;;;;;;25691:16:0;;::::1;::::0;::::1;25673:34:::0;::::1;;;25646:61;25638:92;;;::::0;-1:-1:-1;;;25638:92:0;;9526:2:1;25638:92:0::1;::::0;::::1;9508:21:1::0;9565:2;9545:18;;;9538:30;-1:-1:-1;;;9584:18:1;;;9577:48;9642:18;;25638:92:0::1;9324:342:1::0;25638:92:0::1;25761:14;::::0;::::1;::::0;25746:30:::1;::::0;-1:-1:-1;;;;;4671:31:1;;;4653:50;;25746:30:0::1;::::0;4641:2:1;4626:18;25746:30:0::1;;;;;;;25787:15:::0;;:7:::1;:15:::0;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;-1:-1:-1;;;;;25787:15:0;;::::1;-1:-1:-1::0;;;25787:15:0::1;-1:-1:-1::0;;;;;25787:15:0;;::::1;-1:-1:-1::0;;;25787:15:0::1;::::0;;;;-1:-1:-1;;;;;25787:15:0;;::::1;-1:-1:-1::0;;;25787:15:0::1;-1:-1:-1::0;;;;;;25787:15:0;;;;;;::::1;::::0;;;;::::1;::::0;;;;;;;;::::1;::::0;;-1:-1:-1;;;25306:504:0:o;23804:322::-;6963:6;;-1:-1:-1;;;;;6963:6:0;873:10;6963:22;6955:67;;;;-1:-1:-1;;;6955:67:0;;;;;;;:::i;:::-;23944:14:::1;2785:2:::0;23944::::1;:14;:::i;:::-;23937:4;23917:13;2891:12:::0;;;2803:108;23917:13:::1;:17;::::0;23933:1:::1;23917:17;:::i;:::-;:24;;;;:::i;:::-;23916:43;;;;:::i;:::-;23898:14;-1:-1:-1::0;;;;;23898:61:0::1;;;23890:81;;;::::0;-1:-1:-1;;;23890:81:0;;11511:2:1;23890:81:0::1;::::0;::::1;11493:21:1::0;11550:1;11530:18;;;11523:29;-1:-1:-1;;;11568:18:1;;;11561:37;11615:18;;23890:81:0::1;11309:330:1::0;23890:81:0::1;24036:14;2785:2:::0;24036::::1;:14;:::i;:::-;24018:33;::::0;-1:-1:-1;;;;;24018:33:0;::::1;;:::i;:::-;23982:8;:70:::0;;-1:-1:-1;;;;;;23982:70:0::1;-1:-1:-1::0;;;;;23982:70:0;;;::::1;::::0;;::::1;::::0;;24068:50:::1;::::0;11790:66:1;;;24068:50:0::1;::::0;11778:2:1;11763:18;24068:50:0::1;;;;;;;;23804:322:::0;:::o;3892:238::-;3980:4;873:10;4036:64;873:10;4052:7;4089:10;4061:25;873:10;4052:7;4061:9;:25::i;:::-;:38;;;;:::i;:::-;4036:8;:64::i;24134:302::-;6963:6;;-1:-1:-1;;;;;6963:6:0;873:10;6963:22;6955:67;;;;-1:-1:-1;;;6955:67:0;;;;;;;:::i;:::-;24269:14:::1;2785:2:::0;24269::::1;:14;:::i;:::-;24262:4;24242:13;2891:12:::0;;;2803:108;24242:13:::1;:17;::::0;24258:1:::1;24242:17;:::i;:::-;:24;;;;:::i;:::-;24241:43;;;;:::i;:::-;24223:14;-1:-1:-1::0;;;;;24223:61:0::1;;;24215:81;;;::::0;-1:-1:-1;;;24215:81:0;;11511:2:1;24215:81:0::1;::::0;::::1;11493:21:1::0;11550:1;11530:18;;;11523:29;-1:-1:-1;;;11568:18:1;;;11561:37;11615:18;;24215:81:0::1;11309:330:1::0;24215:81:0::1;24356:14;2785:2:::0;24356::::1;:14;:::i;:::-;24338:33;::::0;-1:-1:-1;;;;;24338:33:0;::::1;;:::i;:::-;24307:8;:65:::0;;-1:-1:-1;;;;;24307:65:0;;::::1;-1:-1:-1::0;;;24307:65:0;;::::1;::::0;::::1;;::::0;;;;24388:40:::1;::::0;24407:20;;;::::1;;11790:66:1::0;;24388:40:0::1;::::0;11778:2:1;11763:18;24388:40:0::1;11644:218:1::0;27884:176:0;6963:6;;-1:-1:-1;;;;;6963:6:0;873:10;6963:22;6955:67;;;;-1:-1:-1;;;6955:67:0;;;;;;;:::i;:::-;27970:4:::1;27960:6;-1:-1:-1::0;;;;;27960:14:0::1;;;27952:55;;;::::0;-1:-1:-1;;;27952:55:0;;12199:2:1;27952:55:0::1;::::0;::::1;12181:21:1::0;12238:2;12218:18;;;12211:30;12277;12257:18;;;12250:58;12325:18;;27952:55:0::1;11997:352:1::0;27952:55:0::1;28034:9;:18:::0;;-1:-1:-1;;;;;;28034:18:0::1;-1:-1:-1::0;;;;;28034:18:0;;;::::1;::::0;;;::::1;::::0;;27884:176::o;7050:150::-;6963:6;;-1:-1:-1;;;;;6963:6:0;873:10;6963:22;6955:67;;;;-1:-1:-1;;;6955:67:0;;;;;;;:::i;:::-;7143:6:::1;::::0;7122:40:::1;::::0;7159:1:::1;::::0;-1:-1:-1;;;;;7143:6:0::1;::::0;7122:40:::1;::::0;7159:1;;7122:40:::1;7173:6;:19:::0;;-1:-1:-1;;;;;;7173:19:0::1;::::0;;7050:150::o;26483:321::-;6963:6;;-1:-1:-1;;;;;6963:6:0;873:10;6963:22;6955:67;;;;-1:-1:-1;;;6955:67:0;;;;;;;:::i;:::-;26537:7:::1;:15:::0;;-1:-1:-1;;;;26537:15:0::1;::::0;;-1:-1:-1;;;;;;;;;26547:5:0::1;-1:-1:-1::0;;;;;;;26599:14:0::1;26616:13;2891:12:::0;;;2803:108;26616:13:::1;-1:-1:-1::0;;;;;26640:44:0;::::1;::::0;;;26695:21:::1;::::0;::::1;:39:::0;;;-1:-1:-1;;;26745:20:0;::::1;;:8;:20:::0;26781:15:::1;::::0;26599:30;;-1:-1:-1;26781:15:0::1;::::0;26640:26:::1;::::0;26781:15:::1;26526:278;;26483:321::o:0;25818:417::-;25886:10;;-1:-1:-1;;;;;25886:10:0;25872;:24;25864:44;;;;-1:-1:-1;;;25864:44:0;;6314:2:1;25864:44:0;;;6296:21:1;6353:1;6333:18;;;6326:29;-1:-1:-1;;;6371:18:1;;;6364:37;6418:18;;25864:44:0;6112:330:1;25864:44:0;25929:30;;;;;;;;25953:6;25929:30;-1:-1:-1;;;;;25929:30:0;;;;;;-1:-1:-1;;;25929:30:0;;;;;;;;;;-1:-1:-1;;;25929:30:0;;;;;;;;;;;-1:-1:-1;;;25929:30:0;;;;;;;;;;;;;25970:40;;25929:30;;25970:40;:::i;:::-;-1:-1:-1;;;;;25970:40:0;;;;;;26039:1;26021:15;;;;:19;;;;26051:17;;:6;:17;;;;;;;;;;;;;;;-1:-1:-1;;;;;;26051:17:0;;;;;;;-1:-1:-1;;;26051:17:0;;;;;;-1:-1:-1;;;;;26051:17:0;-1:-1:-1;;;26051:17:0;;;;;;;;;26081:32;;;;;;;26106:7;26081:32;;;;;;;-1:-1:-1;;;26081:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26081:32:0;;;26124:42;;26081:32;;26124:42;:::i;:::-;-1:-1:-1;;;;;26124:42:0;;;;;;26196:1;26177:16;;;:20;26208:19;;:7;:19;;;;;;;;;;;;;;-1:-1:-1;;;;;;26208:19:0;;;;-1:-1:-1;;;26208:19:0;;;;;;;;;;;-1:-1:-1;;;;;26208:19:0;-1:-1:-1;;;26208:19:0;;;;;;;;;-1:-1:-1;;25818:417:0:o;27715:161::-;6963:6;;-1:-1:-1;;;;;6963:6:0;873:10;6963:22;6955:67;;;;-1:-1:-1;;;6955:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27797:22:0;::::1;27789:47;;;::::0;-1:-1:-1;;;27789:47:0;;8989:2:1;27789:47:0::1;::::0;::::1;8971:21:1::0;9028:2;9008:18;;;9001:30;-1:-1:-1;;;9047:18:1;;;9040:42;9099:18;;27789:47:0::1;8787:336:1::0;27789:47:0::1;27847:10;:21:::0;;-1:-1:-1;;;;;;27847:21:0::1;-1:-1:-1::0;;;;;27847:21:0;;;::::1;::::0;;;::::1;::::0;;27715:161::o;26249:226::-;6963:6;;-1:-1:-1;;;;;6963:6:0;873:10;6963:22;6955:67;;;;-1:-1:-1;;;6955:67:0;;;;;;;:::i;:::-;26313:14:::1;::::0;-1:-1:-1;;;26313:14:0;::::1;;;26312:15;26304:51;;;::::0;-1:-1:-1;;;26304:51:0;;12556:2:1;26304:51:0::1;::::0;::::1;12538:21:1::0;12595:2;12575:18;;;12568:30;12634:25;12614:18;;;12607:53;12677:18;;26304:51:0::1;12354:347:1::0;26304:51:0::1;26366:14;:21:::0;;-1:-1:-1;;;;26366:21:0::1;-1:-1:-1::0;;;26366:21:0::1;::::0;;26412:12:::1;26398:11;:26:::0;;;26435:17:::1;:32:::0;26249:226::o;24798:500::-;6963:6;;-1:-1:-1;;;;;6963:6:0;873:10;6963:22;6955:67;;;;-1:-1:-1;;;6955:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;;;;;;24939:34:0;;::::1;::::0;;24984;;::::1;-1:-1:-1::0;;;24984:34:0;;;;25029:22;;::::1;-1:-1:-1::0;;;25029:22:0;;25079:29:::1;24984:34:::0;24939;25079:29:::1;:::i;:::-;:39;;;;:::i;:::-;-1:-1:-1::0;;;;;25062:56:0::1;:14;::::0;::::1;:56:::0;;;25156:4:::1;-1:-1:-1::0;25137:23:0::1;::::0;:60:::1;;-1:-1:-1::0;25182:6:0::1;:15:::0;25164:14:::1;::::0;::::1;::::0;-1:-1:-1;;;;;;;;25182:15:0;;::::1;::::0;::::1;25164:33:::0;::::1;;;25137:60;25129:91;;;::::0;-1:-1:-1;;;25129:91:0;;9526:2:1;25129:91:0::1;::::0;::::1;9508:21:1::0;9565:2;9545:18;;;9538:30;-1:-1:-1;;;9584:18:1;;;9577:48;9642:18;;25129:91:0::1;9324:342:1::0;25129:91:0::1;25250:14;::::0;::::1;::::0;25236:29:::1;::::0;-1:-1:-1;;;;;4671:31:1;;;4653:50;;25236:29:0::1;::::0;4641:2:1;4626:18;25236:29:0::1;;;;;;;25276:14:::0;;:6:::1;:14:::0;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;-1:-1:-1;;;;;25276:14:0;;::::1;-1:-1:-1::0;;;25276:14:0::1;-1:-1:-1::0;;;;;25276:14:0;;::::1;-1:-1:-1::0;;;25276:14:0::1;::::0;;;;-1:-1:-1;;;;;25276:14:0;;::::1;-1:-1:-1::0;;;25276:14:0::1;-1:-1:-1::0;;;;;;25276:14:0;;;;;;::::1;::::0;;;;::::1;::::0;;;;;;;;::::1;::::0;;-1:-1:-1;;;24798:500:0:o;2590:104::-;2646:13;2679:7;2672:14;;;;;:::i;4140:436::-;4233:4;873:10;4233:4;4316:25;873:10;4333:7;4316:9;:25::i;:::-;4289:52;;4380:15;4360:16;:35;;4352:85;;;;-1:-1:-1;;;4352:85:0;;12908:2:1;4352:85:0;;;12890:21:1;12947:2;12927:18;;;12920:30;12986:34;12966:18;;;12959:62;-1:-1:-1;;;13037:18:1;;;13030:35;13082:19;;4352:85:0;12706:401:1;4352:85:0;4473:60;4482:5;4489:7;4517:15;4498:16;:34;4473:8;:60::i;3054:193::-;3133:4;873:10;3189:28;873:10;3206:2;3210:6;3189:9;:28::i;23117:319::-;6963:6;;-1:-1:-1;;;;;6963:6:0;873:10;6963:22;6955:67;;;;-1:-1:-1;;;6955:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23215:22:0;::::1;23207:47;;;::::0;-1:-1:-1;;;23207:47:0;;13314:2:1;23207:47:0::1;::::0;::::1;13296:21:1::0;13353:2;13333:18;;;13326:30;-1:-1:-1;;;13372:18:1;;;13365:42;13424:18;;23207:47:0::1;13112:336:1::0;23207:47:0::1;23293:4;-1:-1:-1::0;;;;;23273:25:0;::::1;::::0;23265:62:::1;;;::::0;-1:-1:-1;;;23265:62:0;;13655:2:1;23265:62:0::1;::::0;::::1;13637:21:1::0;13694:2;13674:18;;;13667:30;13733:26;13713:18;;;13706:54;13777:18;;23265:62:0::1;13453:348:1::0;23265:62:0::1;-1:-1:-1::0;;;;;23338:24:0;::::1;;::::0;;;:14:::1;:24;::::0;;;;;;;;:36;;-1:-1:-1;;23338:36:0::1;::::0;::::1;;::::0;;::::1;::::0;;;23390:38;;13974:51:1;;;14041:18;;;14034:50;23390:38:0::1;::::0;13947:18:1;23390:38:0::1;;;;;;;;23117:319:::0;;:::o;23444:352::-;6963:6;;-1:-1:-1;;;;;6963:6:0;873:10;6963:22;6955:67;;;;-1:-1:-1;;;6955:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23544:22:0;::::1;23536:47;;;::::0;-1:-1:-1;;;23536:47:0;;13314:2:1;23536:47:0::1;::::0;::::1;13296:21:1::0;13353:2;13333:18;;;13326:30;-1:-1:-1;;;13372:18:1;;;13365:42;13424:18;;23536:47:0::1;13112:336:1::0;23536:47:0::1;23598:9;23594:90;;23643:6;-1:-1:-1::0;;;;;23631:18:0::1;:8;-1:-1:-1::0;;;;;23631:18:0::1;::::0;23623:49:::1;;;::::0;-1:-1:-1;;;23623:49:0;;14297:2:1;23623:49:0::1;::::0;::::1;14279:21:1::0;14336:2;14316:18;;;14309:30;-1:-1:-1;;;14355:18:1;;;14348:48;14413:18;;23623:49:0::1;14095:342:1::0;23623:49:0::1;-1:-1:-1::0;;;;;23694:26:0;::::1;;::::0;;;:16:::1;:26;::::0;;;;;;;;:38;;-1:-1:-1;;23694:38:0::1;::::0;::::1;;::::0;;::::1;::::0;;;23748:40;;13974:51:1;;;14041:18;;;14034:50;23748:40:0::1;::::0;13947:18:1;23748:40:0::1;13806:284:1::0;3255:151:0;-1:-1:-1;;;;;3371:18:0;;;3344:7;3371:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3255:151::o;7208:244::-;6963:6;;-1:-1:-1;;;;;6963:6:0;873:10;6963:22;6955:67;;;;-1:-1:-1;;;6955:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7297:22:0;::::1;7289:73;;;::::0;-1:-1:-1;;;7289:73:0;;14644:2:1;7289:73:0::1;::::0;::::1;14626:21:1::0;14683:2;14663:18;;;14656:30;14722:34;14702:18;;;14695:62;-1:-1:-1;;;14773:18:1;;;14766:36;14819:19;;7289:73:0::1;14442:402:1::0;7289:73:0::1;7399:6;::::0;7378:38:::1;::::0;-1:-1:-1;;;;;7378:38:0;;::::1;::::0;7399:6:::1;::::0;7378:38:::1;::::0;7399:6:::1;::::0;7378:38:::1;7427:6;:17:::0;;-1:-1:-1;;;;;;7427:17:0::1;-1:-1:-1::0;;;;;7427:17:0;;;::::1;::::0;;;::::1;::::0;;7208:244::o;26990:150::-;27082:10;;27074:58;;27038:12;;-1:-1:-1;;;;;27082:10:0;;27106:21;;27038:12;27074:58;27038:12;27074:58;27106:21;27082:10;27074:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;26990:150:0:o;26814:158::-;6963:6;;-1:-1:-1;;;;;6963:6:0;873:10;6963:22;6955:67;;;;-1:-1:-1;;;6955:67:0;;;;;;;:::i;:::-;26883:20:::1;::::0;-1:-1:-1;;;26883:20:0;::::1;;;26875:50;;;::::0;-1:-1:-1;;;26875:50:0;;15261:2:1;26875:50:0::1;::::0;::::1;15243:21:1::0;15300:2;15280:18;;;15273:30;-1:-1:-1;;;15319:18:1;;;15312:47;15376:18;;26875:50:0::1;15059:341:1::0;26875:50:0::1;26936:20;:28:::0;;-1:-1:-1;;;;26936:28:0::1;::::0;;26814:158::o;11772:177::-;11882:58;;;-1:-1:-1;;;;;15597:32:1;;11882:58:0;;;15579:51:1;15646:18;;;;15639:34;;;11882:58:0;;;;;;;;;;15552:18:1;;;;11882:58:0;;;;;;;;-1:-1:-1;;;;;11882:58:0;-1:-1:-1;;;11882:58:0;;;11855:86;;11875:5;;11855:19;:86::i;:::-;11772:177;;;:::o;5732:346::-;-1:-1:-1;;;;;5834:19:0;;5826:68;;;;-1:-1:-1;;;5826:68:0;;15886:2:1;5826:68:0;;;15868:21:1;15925:2;15905:18;;;15898:30;15964:34;15944:18;;;15937:62;-1:-1:-1;;;16015:18:1;;;16008:34;16059:19;;5826:68:0;15684:400:1;5826:68:0;-1:-1:-1;;;;;5913:21:0;;5905:68;;;;-1:-1:-1;;;5905:68:0;;16291:2:1;5905:68:0;;;16273:21:1;16330:2;16310:18;;;16303:30;16369:34;16349:18;;;16342:62;-1:-1:-1;;;16420:18:1;;;16413:32;16462:19;;5905:68:0;16089:398:1;5905:68:0;-1:-1:-1;;;;;5986:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;6038:32;;1676:25:1;;;6038:32:0;;1649:18:1;6038:32:0;;;;;;;5732:346;;;:::o;6086:419::-;6187:24;6214:25;6224:5;6231:7;6214:9;:25::i;:::-;6187:52;;-1:-1:-1;;6254:16:0;:37;6250:248;;6336:6;6316:16;:26;;6308:68;;;;-1:-1:-1;;;6308:68:0;;16694:2:1;6308:68:0;;;16676:21:1;16733:2;16713:18;;;16706:30;16772:31;16752:18;;;16745:59;16821:18;;6308:68:0;16492:353:1;6308:68:0;6420:51;6429:5;6436:7;6464:6;6445:16;:25;6420:8;:51::i;17582:409::-;-1:-1:-1;;;;;17728:20:0;;;;;;:14;:20;;;;;;;;17727:21;:44;;;;-1:-1:-1;;;;;;17753:18:0;;;;;;:14;:18;;;;;;;;17752:19;17727:44;17724:216;;;17795:14;;-1:-1:-1;;;17795:14:0;;;;17787:45;;;;-1:-1:-1;;;17787:45:0;;17052:2:1;17787:45:0;;;17034:21:1;17091:2;17071:18;;;17064:30;-1:-1:-1;;;17110:18:1;;;17103:48;17168:18;;17787:45:0;16850:342:1;17787:45:0;17857:27;17867:4;17873:2;17877:6;17857:9;:27::i;:::-;17847:37;;;;:::i;:::-;;;17899:29;17911:4;17917:2;17921:6;17899:11;:29::i;:::-;17952:31;17968:4;17973:2;17976:6;17952:15;:31::i;12170:333::-;12251:23;12277:69;12305:4;12277:69;;;;;;;;;;;;;;;;;12285:5;-1:-1:-1;;;;;12277:27:0;;;:69;;;;;:::i;:::-;12361:17;;12251:95;;-1:-1:-1;12361:21:0;12357:139;;12418:10;12407:30;;;;;;;;;;;;:::i;:::-;12399:85;;;;-1:-1:-1;;;12399:85:0;;17782:2:1;12399:85:0;;;17764:21:1;17821:2;17801:18;;;17794:30;17860:34;17840:18;;;17833:62;-1:-1:-1;;;17911:18:1;;;17904:40;17961:19;;12399:85:0;17580:406:1;19406:1571:0;19537:15;;19527:4;19485:7;3020:18;;;;;;;;;;;19485:7;;-1:-1:-1;19509:43:0;:63;;;;-1:-1:-1;;;;;;19557:15:0;;;;;;:9;:15;;;;;;;;19556:16;19509:63;:104;;;;;19601:12;19576:17;;19596:1;19576:21;;;;:::i;:::-;:37;;19509:104;19506:150;;;19630:14;:12;:14::i;:::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19739:13:0;;;;:9;:13;;;;;;;;19735:126;;;-1:-1:-1;19768:15:0;;;;;;;;19776:7;19768:15;-1:-1:-1;;;;;19768:15:0;;;;;-1:-1:-1;;;19768:15:0;;;;;;;;-1:-1:-1;;;19768:15:0;;;;;;;;;;;-1:-1:-1;;;19768:15:0;;;;;;;;;19735:126;;;-1:-1:-1;;;;;19804:15:0;;;;;;:9;:15;;;;;;;;19801:60;;;-1:-1:-1;19835:14:0;;;;;;;;19843:6;19835:14;-1:-1:-1;;;;;19835:14:0;;;;;-1:-1:-1;;;19835:14:0;;;;;;;;-1:-1:-1;;;19835:14:0;;;;;;;;;;;-1:-1:-1;;;19835:14:0;;;;;;;;;19801:60;19884:14;;;;-1:-1:-1;;;;;19884:18:0;;19881:1058;;19918:53;;;;;;;;19959:12;19918:53;-1:-1:-1;;;;;19918:53:0;;;;;-1:-1:-1;;;19918:53:0;;;;;;;;-1:-1:-1;;;19918:53:0;;;;;;;;;;-1:-1:-1;;;19918:53:0;;;;;;;;;;;19989:11;;20004:12;19989:27;;19986:517;;-1:-1:-1;;;;;20040:15:0;;;;;;:9;:15;;;;;;;;;:32;;-1:-1:-1;;;;;;20059:13:0;;;;;;:9;:13;;;;;;;;20040:32;20036:127;;;20119:9;;14679:5;;20110:18;;-1:-1:-1;;;;;20119:9:0;20110:6;:18;:::i;:::-;:32;;;;:::i;:::-;20096:47;;20036:127;19986:517;;;20203:11;;:15;;20217:1;20203:15;:::i;:::-;20187:12;:31;:66;;;-1:-1:-1;20238:11:0;;:15;;20252:1;20238:15;:::i;:::-;20222:12;:31;20187:66;20184:319;;;-1:-1:-1;;;;;20277:15:0;;;;;;:9;:15;;;;;;;;;:32;;-1:-1:-1;;;;;;20296:13:0;;;;;;:9;:13;;;;;;;;20277:32;20273:122;;;14679:5;20347:13;:6;20356:4;20347:13;:::i;20184:319::-;20458:14;;;;14679:5;;20449:23;;-1:-1:-1;;;;;20449:23:0;:6;:23;:::i;:::-;:37;;;;:::i;:::-;20435:52;;20184:319;20609:3;20592:5;:14;;;-1:-1:-1;;;;;20565:41:0;20571:5;:18;;;-1:-1:-1;;;;;20565:24:0;:3;:24;;;;:::i;:::-;:41;;;;:::i;:::-;:47;;;;:::i;:::-;20517:18;:37;;:96;;;;;;;:::i;:::-;-1:-1:-1;;;;;20517:96:0;;;-1:-1:-1;20703:14:0;;;;20682:18;;20720:3;;-1:-1:-1;;;;;20676:41:0;;;;:24;;;:3;:24;:::i;:::-;:41;;;;:::i;:::-;:47;;;;:::i;:::-;20628:96;;:18;;:96;;;;;:::i;:::-;-1:-1:-1;;;;;20628:96:0;;;-1:-1:-1;20802:14:0;;;;20787:12;;;;20819:3;;-1:-1:-1;;;;;20781:35:0;;;;:18;;;:3;:18;:::i;:::-;:35;;;;:::i;:::-;:41;;;;:::i;:::-;20739:18;:31;;:84;;;;;;;:::i;:::-;-1:-1:-1;;;;;20739:84:0;;;;;;20838:33;;:12;:33;;;;;;;;;;;;;;;;-1:-1:-1;;;20838:33:0;-1:-1:-1;;;;20838:33:0;;;-1:-1:-1;;;20838:33:0;;;;;-1:-1:-1;;;;20838:33:0;;;-1:-1:-1;;;20838:33:0;-1:-1:-1;;;;;;20838:33:0;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20886:41:0;20902:4;20916;-1:-1:-1;;;;;20886:41:0;;:15;:41::i;:::-;19903:1036;19881:1058;-1:-1:-1;;;;;;20959:10:0;;19406:1571;-1:-1:-1;;;;19406:1571:0:o;17999:1399::-;18085:7;;-1:-1:-1;;;18085:7:0;;;;18082:1307;;;-1:-1:-1;;;;;18130:20:0;;;18108:19;18130:20;;;:16;:20;;;;;;;;;3020:18;;;;;;;18215:36;;;;;;;18243:8;18215:36;-1:-1:-1;;;;;18215:36:0;;;;;-1:-1:-1;;;18215:36:0;;;;;;;;18290:15;;;;;:9;:15;;;;;;18130:20;;;;;3020:18;;18290:15;:34;;;;;18310:14;18309:15;18290:34;18286:538;;;18363:26;;-1:-1:-1;;;;;18353:36:0;;;;18345:56;;;;-1:-1:-1;;;18345:56:0;;18955:2:1;18345:56:0;;;18937:21:1;18994:1;18974:18;;;18967:29;-1:-1:-1;;;19012:18:1;;;19005:37;19059:18;;18345:56:0;18753:330:1;18345:56:0;18452:21;;;;-1:-1:-1;;;;;18428:45:0;:20;18437:11;18428:6;:20;:::i;:::-;:45;;18420:68;;;;-1:-1:-1;;;18420:68:0;;19290:2:1;18420:68:0;;;19272:21:1;19329:2;19309:18;;;19302:30;-1:-1:-1;;;19348:18:1;;;19341:40;19398:18;;18420:68:0;19088:334:1;18420:68:0;18286:538;;;-1:-1:-1;;;;;18549:13:0;;;;;;:9;:13;;;;;;;;:40;;;;-1:-1:-1;;;;;;18567:22:0;;;;;;:16;:22;;;;;;;;18566:23;18549:40;18545:279;;;18628:26;;-1:-1:-1;;;;;18618:36:0;;;;18610:56;;;;-1:-1:-1;;;18610:56:0;;18955:2:1;18610:56:0;;;18937:21:1;18994:1;18974:18;;;18967:29;-1:-1:-1;;;19012:18:1;;;19005:37;19059:18;;18610:56:0;18753:330:1;18545:279:0;18705:14;18701:123;;18772:21;;;;-1:-1:-1;;;;;18748:45:0;:20;18757:11;18748:6;:20;:::i;:::-;:45;;18740:68;;;;-1:-1:-1;;;18740:68:0;;19290:2:1;18740:68:0;;;19272:21:1;19329:2;19309:18;;;19302:30;-1:-1:-1;;;19348:18:1;;;19341:40;19398:18;;18740:68:0;19088:334:1;18740:68:0;18843:20;;-1:-1:-1;;;18843:20:0;;;;18840:536;;;18901:9;-1:-1:-1;;;;;18887:24:0;:2;-1:-1:-1;;;;;18887:24:0;;;:49;;;;;18929:6;-1:-1:-1;;;;;18915:21:0;:2;-1:-1:-1;;;;;18915:21:0;;;18887:49;18883:478;;;18993:9;18968:35;;;;:24;:35;;;;;;19010:12;;18968:39;;19006:1;18968:39;:::i;:::-;:54;18960:81;;;;-1:-1:-1;;;18960:81:0;;19629:2:1;18960:81:0;;;19611:21:1;19668:2;19648:18;;;19641:30;-1:-1:-1;;;19687:18:1;;;19680:44;19741:18;;18960:81:0;19427:338:1;18960:81:0;-1:-1:-1;;;;;19064:28:0;;;;;;;:24;:28;;;;;;19095:12;19064:43;;;;19155:9;19130:35;;;;:50;19222:6;19206:23;;;;;;19203:139;;19265:9;-1:-1:-1;;;;;19265:15:0;;;19257:61;;;;-1:-1:-1;;;19257:61:0;;19972:2:1;19257:61:0;;;19954:21:1;20011:2;19991:18;;;19984:30;20050:34;20030:18;;;20023:62;-1:-1:-1;;;20101:18:1;;;20094:31;20142:19;;19257:61:0;19770:397:1;19257:61:0;18093:1296;;;17999:1399;;;:::o;4584:705::-;-1:-1:-1;;;;;4681:18:0;;4673:68;;;;-1:-1:-1;;;4673:68:0;;20374:2:1;4673:68:0;;;20356:21:1;20413:2;20393:18;;;20386:30;20452:34;20432:18;;;20425:62;-1:-1:-1;;;20503:18:1;;;20496:35;20548:19;;4673:68:0;20172:401:1;4673:68:0;-1:-1:-1;;;;;4760:16:0;;4752:64;;;;-1:-1:-1;;;4752:64:0;;20780:2:1;4752:64:0;;;20762:21:1;20819:2;20799:18;;;20792:30;20858:34;20838:18;;;20831:62;-1:-1:-1;;;20909:18:1;;;20902:33;20952:19;;4752:64:0;20578:399:1;4752:64:0;-1:-1:-1;;;;;4851:15:0;;4829:19;4851:15;;;;;;;;;;;4885:21;;;;4877:72;;;;-1:-1:-1;;;4877:72:0;;21184:2:1;4877:72:0;;;21166:21:1;21223:2;21203:18;;;21196:30;21262:34;21242:18;;;21235:62;-1:-1:-1;;;21313:18:1;;;21306:36;21359:19;;4877:72:0;20982:402:1;4877:72:0;-1:-1:-1;;;;;4985:15:0;;;:9;:15;;;;;;;;;;;5003:20;;;4985:38;;5203:13;;;;;;;;;;:23;;;;;;5255:26;;1676:25:1;;;5203:13:0;;5255:26;;1649:18:1;5255:26:0;;;;;;;4662:627;4584:705;;;:::o;8125:229::-;8262:12;8294:52;8316:6;8324:4;8330:1;8333:12;8294:21;:52::i;:::-;8287:59;8125:229;-1:-1:-1;;;;8125:229:0:o;21366:1719::-;21455:4;21411:23;3020:18;;;;;;;;;;;21472:50;;;;;;;;21510:12;21472:50;-1:-1:-1;;;;;21472:50:0;;;;;;-1:-1:-1;;;21472:50:0;;;;;;;;;;-1:-1:-1;;;21472:50:0;;;;;;;;;;;-1:-1:-1;;;21472:50:0;;;;;;;;;;;21411;;-1:-1:-1;21472:50:0;;-1:-1:-1;;21472:50:0;21561:71;;;:::i;:::-;:102;;;;:::i;:::-;-1:-1:-1;;;;;21533:130:0;;-1:-1:-1;21687:20:0;;;:46;;-1:-1:-1;21711:22:0;;21687:46;21684:60;;;21736:7;;;21366:1719::o;21684:60::-;21777:15;;:20;;21795:2;21777:20;:::i;:::-;21759:15;:38;21756:107;;;21831:15;;:20;;21849:2;21831:20;:::i;:::-;21813:38;;21756:107;21878:34;;;;-1:-1:-1;;;;;21878:38:0;;21875:407;;21932:23;22013:17;21976:15;:34;;;-1:-1:-1;;;;;21958:52:0;:15;:52;;;;:::i;:::-;:72;;;;:::i;:::-;21932:98;;22045:55;22069:4;22076:6;22084:15;22045;:55::i;:::-;22127:6;-1:-1:-1;;;;;22119:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22115:37;22166:34;22185:15;22166:34;;:::i;:::-;;;22236:15;:34;;;-1:-1:-1;;;;;22215:55:0;;;;;;:::i;:::-;;;21917:365;21875:407;22297:19;;22294:555;;22334:33;22351:15;22334:16;:33::i;:::-;22487:28;;;;22417:21;;22396:18;;-1:-1:-1;;;;;22487:32:0;;22484:175;;22552:10;;22588:28;;;;-1:-1:-1;;;;;22552:10:0;;;;22619:17;;22575:41;;-1:-1:-1;;;;;22575:41:0;:10;:41;:::i;:::-;:61;;;;:::i;:::-;22552:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22539:102:0;;-1:-1:-1;;22484:175:0;22688:21;;-1:-1:-1;22729:14:0;;22726:112;;22776:16;;:44;;-1:-1:-1;;;;;22776:16:0;;;;22805:10;;22776:44;;;;22805:10;22776:16;:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22763:57:0;;-1:-1:-1;;22726:112:0;22317:532;;22294:555;-1:-1:-1;22898:1:0;22861:34;;;:38;;;22910;;;22959:28;;;:32;23004:12;:30;;;;;;;;;-1:-1:-1;;;23004:30:0;-1:-1:-1;;;;;;23004:30:0;;;;;;;;;-1:-1:-1;23065:12:0;23045:17;:32;21366:1719::o;8630:455::-;8800:12;8858:5;8833:21;:30;;8825:81;;;;-1:-1:-1;;;8825:81:0;;21591:2:1;8825:81:0;;;21573:21:1;21630:2;21610:18;;;21603:30;21669:34;21649:18;;;21642:62;-1:-1:-1;;;21720:18:1;;;21713:36;21766:19;;8825:81:0;21389:402:1;8825:81:0;8918:12;8932:23;8959:6;-1:-1:-1;;;;;8959:11:0;8978:5;8985:4;8959:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8917:73;;;;9008:69;9035:6;9043:7;9052:10;9064:12;9008:26;:69::i;:::-;9001:76;8630:455;-1:-1:-1;;;;;;;8630:455:0:o;20986:372::-;21075:16;;;21089:1;21075:16;;;;;;;;21051:21;;21075:16;;;;;;;;;;-1:-1:-1;21075:16:0;21051:40;;21120:4;21102;21107:1;21102:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;21102:23:0;;;-1:-1:-1;;;;;21102:23:0;;;;;21146:4;21136;21141:1;21136:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;21136:14:0;;;:7;;;;;;;;;:14;21163:187;;-1:-1:-1;;;21163:187:0;;:9;:60;;;;;;:187;;21238:8;;21261:1;;21277:4;;21304;;21324:15;;21163:187;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10189:644;10374:12;10403:7;10399:427;;;10431:10;:17;10452:1;10431:22;10427:290;;-1:-1:-1;;;;;7566:19:0;;;10641:60;;;;-1:-1:-1;;;10641:60:0;;23532:2:1;10641:60:0;;;23514:21:1;23571:2;23551:18;;;23544:30;23610:31;23590:18;;;23583:59;23659:18;;10641:60:0;23330:353:1;10641:60:0;-1:-1:-1;10738:10:0;10731:17;;10399:427;10781:33;10789:10;10801:12;11315:17;;:21;11311:388;;11547:10;11541:17;11604:15;11591:10;11587:2;11583:19;11576:44;11311:388;11674:12;11667:20;;-1:-1:-1;;;11667:20:0;;;;;;;;:::i;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;:::-;333:39;192:186;-1:-1:-1;;;192:186:1:o;383:418::-;532:2;521:9;514:21;495:4;564:6;558:13;607:6;602:2;591:9;587:18;580:34;666:6;661:2;653:6;649:15;644:2;633:9;629:18;623:50;722:1;717:2;708:6;697:9;693:22;689:31;682:42;792:2;785;781:7;776:2;768:6;764:15;760:29;749:9;745:45;741:54;733:62;;;383:418;;;;:::o;1033:300::-;1101:6;1109;1162:2;1150:9;1141:7;1137:23;1133:32;1130:52;;;1178:1;1175;1168:12;1130:52;1201:29;1220:9;1201:29;:::i;:::-;1191:39;1299:2;1284:18;;;;1271:32;;-1:-1:-1;;;1033:300:1:o;1712:226::-;1771:6;1824:2;1812:9;1803:7;1799:23;1795:32;1792:52;;;1840:1;1837;1830:12;1792:52;-1:-1:-1;1885:23:1;;1712:226;-1:-1:-1;1712:226:1:o;1943:374::-;2020:6;2028;2036;2089:2;2077:9;2068:7;2064:23;2060:32;2057:52;;;2105:1;2102;2095:12;2057:52;2128:29;2147:9;2128:29;:::i;:::-;2118:39;;2176:38;2210:2;2199:9;2195:18;2176:38;:::i;:::-;1943:374;;2166:48;;-1:-1:-1;;;2283:2:1;2268:18;;;;2255:32;;1943:374::o;2322:171::-;2389:20;;-1:-1:-1;;;;;2438:30:1;;2428:41;;2418:69;;2483:1;2480;2473:12;2498:328;2572:6;2580;2588;2641:2;2629:9;2620:7;2616:23;2612:32;2609:52;;;2657:1;2654;2647:12;2609:52;2680:28;2698:9;2680:28;:::i;:::-;2670:38;;2727:37;2760:2;2749:9;2745:18;2727:37;:::i;:::-;2717:47;;2783:37;2816:2;2805:9;2801:18;2783:37;:::i;:::-;2773:47;;2498:328;;;;;:::o;3020:301::-;3079:6;3132:2;3120:9;3111:7;3107:23;3103:32;3100:52;;;3148:1;3145;3138:12;3100:52;3187:9;3174:23;-1:-1:-1;;;;;3230:5:1;3226:46;3219:5;3216:57;3206:85;;3287:1;3284;3277:12;4714:118;4800:5;4793:13;4786:21;4779:5;4776:32;4766:60;;4822:1;4819;4812:12;4766:60;4714:118;:::o;4837:315::-;4902:6;4910;4963:2;4951:9;4942:7;4938:23;4934:32;4931:52;;;4979:1;4976;4969:12;4931:52;5002:29;5021:9;5002:29;:::i;:::-;4992:39;;5081:2;5070:9;5066:18;5053:32;5094:28;5116:5;5094:28;:::i;:::-;5141:5;5131:15;;;4837:315;;;;;:::o;5157:260::-;5225:6;5233;5286:2;5274:9;5265:7;5261:23;5257:32;5254:52;;;5302:1;5299;5292:12;5254:52;5325:29;5344:9;5325:29;:::i;:::-;5315:39;;5373:38;5407:2;5396:9;5392:18;5373:38;:::i;:::-;5363:48;;5157:260;;;;;:::o;6447:184::-;6517:6;6570:2;6558:9;6549:7;6545:23;6541:32;6538:52;;;6586:1;6583;6576:12;6538:52;-1:-1:-1;6609:16:1;;6447:184;-1:-1:-1;6447:184:1:o;6636:380::-;6715:1;6711:12;;;;6758;;;6779:61;;6833:4;6825:6;6821:17;6811:27;;6779:61;6886:2;6878:6;6875:14;6855:18;6852:38;6849:161;;6932:10;6927:3;6923:20;6920:1;6913:31;6967:4;6964:1;6957:15;6995:4;6992:1;6985:15;6849:161;;6636:380;;;:::o;7021:356::-;7223:2;7205:21;;;7242:18;;;7235:30;7301:34;7296:2;7281:18;;7274:62;7368:2;7353:18;;7021:356::o;7382:127::-;7443:10;7438:3;7434:20;7431:1;7424:31;7474:4;7471:1;7464:15;7498:4;7495:1;7488:15;7514:168;7587:9;;;7618;;7635:15;;;7629:22;;7615:37;7605:71;;7656:18;;:::i;7687:127::-;7748:10;7743:3;7739:20;7736:1;7729:31;7779:4;7776:1;7769:15;7803:4;7800:1;7793:15;7819:120;7859:1;7885;7875:35;;7890:18;;:::i;:::-;-1:-1:-1;7924:9:1;;7819:120::o;9128:191::-;-1:-1:-1;;;;;9196:26:1;;;9224;;;9192:59;;9263:27;;9260:53;;;9293:18;;:::i;9877:375::-;9965:1;9983:5;9997:249;10018:1;10008:8;10005:15;9997:249;;;10068:4;10063:3;10059:14;10053:4;10050:24;10047:50;;;10077:18;;:::i;:::-;10127:1;10117:8;10113:16;10110:49;;;10141:16;;;;10110:49;10224:1;10220:16;;;;;10180:15;;9997:249;;;9877:375;;;;;;:::o;10257:902::-;10306:5;10336:8;10326:80;;-1:-1:-1;10377:1:1;10391:5;;10326:80;10425:4;10415:76;;-1:-1:-1;10462:1:1;10476:5;;10415:76;10507:4;10525:1;10520:59;;;;10593:1;10588:174;;;;10500:262;;10520:59;10550:1;10541:10;;10564:5;;;10588:174;10625:3;10615:8;10612:17;10609:43;;;10632:18;;:::i;:::-;-1:-1:-1;;10688:1:1;10674:16;;10747:5;;10500:262;;10846:2;10836:8;10833:16;10827:3;10821:4;10818:13;10814:36;10808:2;10798:8;10795:16;10790:2;10784:4;10781:12;10777:35;10774:77;10771:203;;;-1:-1:-1;10883:19:1;;;10959:5;;10771:203;11006:42;-1:-1:-1;;11031:8:1;11025:4;11006:42;:::i;:::-;11084:6;11080:1;11076:6;11072:19;11063:7;11060:32;11057:58;;;11095:18;;:::i;:::-;11133:20;;10257:902;-1:-1:-1;;;10257:902:1:o;11164:140::-;11222:5;11251:47;11292:4;11282:8;11278:19;11272:4;11251:47;:::i;11867:125::-;11932:9;;;11953:10;;;11950:36;;;11966:18;;:::i;17197:128::-;17264:9;;;17285:11;;;17282:37;;;17299:18;;:::i;17330:245::-;17397:6;17450:2;17438:9;17429:7;17425:23;17421:32;17418:52;;;17466:1;17463;17456:12;17418:52;17498:9;17492:16;17517:28;17539:5;17517:28;:::i;17991:317::-;-1:-1:-1;;;;;18076:42:1;;;18120;;;18072:91;18183:52;;;;18254:24;;;18244:58;;18282:18;;:::i;:::-;18244:58;17991:317;;;;:::o;18313:227::-;18353:1;-1:-1:-1;;;;;18384:1:1;18380:42;18441:3;18431:37;;18448:18;;:::i;:::-;18530:3;-1:-1:-1;;;;;18490:1:1;18486:42;18482:52;18477:57;;;18313:227;;;;:::o;18545:203::-;-1:-1:-1;;;;;18613:30:1;;;18645;;;18609:67;;18688:31;;18685:57;;;18722:18;;:::i;21796:301::-;21925:3;21963:6;21957:13;22009:6;22002:4;21994:6;21990:17;21985:3;21979:37;22071:1;22035:16;;22060:13;;;-1:-1:-1;22035:16:1;21796:301;-1:-1:-1;21796:301:1:o;22234:127::-;22295:10;22290:3;22286:20;22283:1;22276:31;22326:4;22323:1;22316:15;22350:4;22347:1;22340:15;22366:959;22628:4;22676:3;22665:9;22661:19;22707:6;22696:9;22689:25;22750:6;22745:2;22734:9;22730:18;22723:34;22793:3;22788:2;22777:9;22773:18;22766:31;22817:6;22852;22846:13;22883:6;22875;22868:22;22921:3;22910:9;22906:19;22899:26;;22960:2;22952:6;22948:15;22934:29;;22981:1;22991:195;23005:6;23002:1;22999:13;22991:195;;;23070:13;;-1:-1:-1;;;;;23066:39:1;23054:52;;23135:2;23161:15;;;;23126:12;;;;23102:1;23020:9;22991:195;;;-1:-1:-1;;;;;;;23242:32:1;;;;23237:2;23222:18;;23215:60;-1:-1:-1;;23306:3:1;23291:19;23284:35;23203:3;22366:959;-1:-1:-1;;;22366:959:1:o
Swarm Source
ipfs://70ab1412dacf491ee47fd0bf96deb823138394e08514913cc9bbf6f19f49ac30
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 ]
[ 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.