// SPDX-License-Identifier: MIT
pragma solidity 0.8.28;
import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import {LaunchpadBase} from "./LaunchpadBase.sol";
import {IUniswapV3Factory, INonfungiblePositionManager} from "./interfaces/IUniswapV3.sol";
import {ISwapRouter} from "./interfaces/ISwapRouter.sol";
/**
* @title UniswapV3
* @notice One of the five launchpads offered on the site. Every one of them is
* LaunchpadBase with nothing added or removed: identical 25/5/70 split,
* identical airdrop list, identical 1% pool fee. The name is the only
* difference, and it exists so a creator can choose which contract
* mints their token.
*/
contract UniswapV3 is LaunchpadBase {
constructor(
IERC20 weth_,
IUniswapV3Factory v3Factory_,
INonfungiblePositionManager positionManager_,
ISwapRouter swapRouter_,
address protocolTreasury_,
address creatorVestingWallet_
)
LaunchpadBase(weth_, v3Factory_, positionManager_, swapRouter_, protocolTreasury_, creatorVestingWallet_)
{}
}[
{
"type": "constructor",
"inputs": [
{
"name": "weth_",
"type": "address",
"internalType": "contract IERC20"
},
{
"name": "v3Factory_",
"type": "address",
"internalType": "contract IUniswapV3Factory"
},
{
"name": "positionManager_",
"type": "address",
"internalType": "contract INonfungiblePositionManager"
},
{
"name": "swapRouter_",
"type": "address",
"internalType": "contract ISwapRouter"
},
{
"name": "protocolTreasury_",
"type": "address",
"internalType": "address"
},
{
"name": "creatorVestingWallet_",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "nonpayable"
},
{
"name": "EmptyMetadata",
"type": "error",
"inputs": []
},
{
"name": "EnforcedPause",
"type": "error",
"inputs": []
},
{
"name": "ExpectedPause",
"type": "error",
"inputs": []
},
{
"name": "InvalidRange",
"type": "error",
"inputs": []
},
{
"name": "InvalidTick",
"type": "error",
"inputs": []
},
{
"name": "InvalidTickSpacing",
"type": "error",
"inputs": []
},
{
"name": "LiquidityMintFailed",
"type": "error",
"inputs": []
},
{
"name": "MetadataTooLong",
"type": "error",
"inputs": []
},
{
"name": "OwnableInvalidOwner",
"type": "error",
"inputs": [
{
"name": "owner",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "OwnableUnauthorizedAccount",
"type": "error",
"inputs": [
{
"name": "account",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "PoolAlreadyExists",
"type": "error",
"inputs": []
},
{
"name": "ReentrancyGuardReentrantCall",
"type": "error",
"inputs": []
},
{
"name": "SafeERC20FailedOperation",
"type": "error",
"inputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "SaltMiningFailed",
"type": "error",
"inputs": []
},
{
"name": "TokenOrdering",
"type": "error",
"inputs": []
},
{
"name": "UnknownCoin",
"type": "error",
"inputs": []
},
{
"name": "VestingUnderfunded",
"type": "error",
"inputs": []
},
{
"name": "ZeroAddress",
"type": "error",
"inputs": []
},
{
"name": "ZeroAmount",
"type": "error",
"inputs": []
},
{
"name": "AirdropDistributed",
"type": "event",
"inputs": [
{
"name": "token",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "total",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "perWallet",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "wallets",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "CoinCreated",
"type": "event",
"inputs": [
{
"name": "token",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "creator",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "pool",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "name",
"type": "string",
"indexed": false,
"internalType": "string"
},
{
"name": "symbol",
"type": "string",
"indexed": false,
"internalType": "string"
}
],
"anonymous": false
},
{
"name": "CreatorAllocation",
"type": "event",
"inputs": [
{
"name": "token",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "wallet",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "amount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "CreatorAllocationLegacy",
"type": "event",
"inputs": [
{
"name": "token",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "vesting",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "beneficiary",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "amount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "releasePerPeriod",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "periodSeconds",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "FeeSwapFailed",
"type": "event",
"inputs": [
{
"name": "token",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "account",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "tokenAmount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "FeesClaimed",
"type": "event",
"inputs": [
{
"name": "token",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "account",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "quoteAmount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "swappedFromToken",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "LiquidityLocked",
"type": "event",
"inputs": [
{
"name": "token",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "pool",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "lpTokenId",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "amount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "tickLower",
"type": "int24",
"indexed": false,
"internalType": "int24"
},
{
"name": "tickUpper",
"type": "int24",
"indexed": false,
"internalType": "int24"
}
],
"anonymous": false
},
{
"name": "OwnershipTransferStarted",
"type": "event",
"inputs": [
{
"name": "previousOwner",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "newOwner",
"type": "address",
"indexed": true,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "OwnershipTransferred",
"type": "event",
"inputs": [
{
"name": "previousOwner",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "newOwner",
"type": "address",
"indexed": true,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "Paused",
"type": "event",
"inputs": [
{
"name": "account",
"type": "address",
"indexed": false,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "PoolFeesCollected",
"type": "event",
"inputs": [
{
"name": "token",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "wethAmount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "tokenAmount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "ProtocolTreasuryUpdated",
"type": "event",
"inputs": [
{
"name": "treasury",
"type": "address",
"indexed": true,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "Unpaused",
"type": "event",
"inputs": [
{
"name": "account",
"type": "address",
"indexed": false,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "BPS",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "MINT_MIN_BPS",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "POOL_FEE",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint24",
"internalType": "uint24"
}
],
"stateMutability": "view"
},
{
"name": "RANGE_WIDTH",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "int24",
"internalType": "int24"
}
],
"stateMutability": "view"
},
{
"name": "START_TICK",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "int24",
"internalType": "int24"
}
],
"stateMutability": "view"
},
{
"name": "TOTAL_SUPPLY",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "acceptOwnership",
"type": "function",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "airdropBps",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "airdropWallets",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address[224]",
"internalType": "address[224]"
}
],
"stateMutability": "pure"
},
{
"name": "allCoins",
"type": "function",
"inputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "claimFees",
"type": "function",
"inputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
},
{
"name": "minQuoteOut",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "quoteAmount",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "nonpayable"
},
{
"name": "claimableFees",
"type": "function",
"inputs": [
{
"name": "account",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "claimableTokenFees",
"type": "function",
"inputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
},
{
"name": "account",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "claimableWethFees",
"type": "function",
"inputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
},
{
"name": "account",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "coinCount",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "coins",
"type": "function",
"inputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "creator",
"type": "address",
"internalType": "address"
},
{
"name": "pool",
"type": "address",
"internalType": "address"
},
{
"name": "lpTokenId",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "marketTokens",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "vesting",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "collectAndClaimCreatorFees",
"type": "function",
"inputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
},
{
"name": "minQuoteOut",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "quoteAmount",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "nonpayable"
},
{
"name": "collectPoolFees",
"type": "function",
"inputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "wethAmount",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "tokenAmount",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "nonpayable"
},
{
"name": "createCoin",
"type": "function",
"inputs": [
{
"name": "name",
"type": "string",
"internalType": "string"
},
{
"name": "symbol",
"type": "string",
"internalType": "string"
}
],
"outputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "nonpayable"
},
{
"name": "creatorBps",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "creatorFeeShareBps",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "creatorVestingWallet",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "creatorVestingWalletOf",
"type": "function",
"inputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "vestingContract",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "lpIsLocked",
"type": "function",
"inputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "marketBps",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "owner",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "pause",
"type": "function",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "paused",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "pendingCreatorFees",
"type": "function",
"inputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "wethAmount",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "tokenAmount",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "pendingOwner",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "positionManager",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "contract INonfungiblePositionManager"
}
],
"stateMutability": "view"
},
{
"name": "protocolTreasury",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "renounceOwnership",
"type": "function",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setProtocolTreasury",
"type": "function",
"inputs": [
{
"name": "treasury",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "startSqrtPriceForTick",
"type": "function",
"inputs": [
{
"name": "tick",
"type": "int24",
"internalType": "int24"
}
],
"outputs": [
{
"name": "",
"type": "uint160",
"internalType": "uint160"
}
],
"stateMutability": "pure"
},
{
"name": "swapRouter",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "contract ISwapRouter"
}
],
"stateMutability": "view"
},
{
"name": "transferOwnership",
"type": "function",
"inputs": [
{
"name": "newOwner",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "unpause",
"type": "function",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "v3Factory",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "contract IUniswapV3Factory"
}
],
"stateMutability": "view"
},
{
"name": "weth",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "contract IERC20"
}
],
"stateMutability": "view"
}
]0x6101203461026157601f614b0738819003918201601f19168301916001600160401b038311848410176102655780849260c0946040528339810103126102615780516001600160a01b038116918282036102615760208101516001600160a01b038116908181036102615760408301516001600160a01b03811694909190858303610261576060850151936001600160a01b038516808603610261576100b360a06100ac60808a01610279565b9801610279565b97331561024e576001545f8054336001600160a01b03198216811783556040519d939290916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a36001600160a81b031916600190815560025515928315610245575b50821561023c575b508115610233575b508015610222575b8015610211575b6102025760805260a05260c05260e052600380546001600160a01b0319166001600160a01b039290921691909117905561010052614879908161028e823960805181818161093b01528181610bcf0152818161357c015281816138d80152613986015260a0518181816106150152610e7f015260c0518181816106e101528181610fb50152818161110e0152818161114e01528181611bee0152613547015260e0518181816103d7015261392b0152610100518181816107a90152610cc30152f35b63d92e233d60e01b5f5260045ffd5b506001600160a01b03861615610140565b506001600160a01b03851615610139565b9050155f610131565b1591505f610129565b1592505f610121565b631e4fbdf760e01b5f525f60045260245ffd5b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036102615756fe60806040526004361015610011575f80fd5b5f5f3560e01c806306aebc031461171f5780630c5a61f8146116a85780630d55a5b31461165857806313560cac14611616578063172de6da14610a8757806317de3c7e14610a4a578063249d39e9146102f15780632982782614610a2d57806337d0cd9d146109da5780633f4ba83a1461096a5780633fc8cef31461092557806346bea602146108c85780634bf2be6f146108875780635ada7843146108695780635c46ff99146107fe5780635c975abb146107d857806360a2356b14610793578063678fd28914610775578063715018a614610710578063791b98bc146106cb57806379ba5097146106445780637c887c59146105ff5780637d0f7a88146105835780637e0b24921461054a5780637eaa31071461052d578063803db96d146105045780638456cb59146104a15780638da5cb5b1461047a578063902d55a514610453578063a1ad17ab14610425578063c1bf957814610406578063c31c9c07146103c1578063c598b2f91461032b578063d86bcd7d1461030e578063dd1b9c4a146102f1578063de90e29b146102d4578063e30c3978146102ab578063e8baef1b1461025e578063f0187b87146102415763f2fde38b146101d2575f80fd5b3461023e57602036600319011261023e576101eb611ab0565b6101f361342d565b600180546001600160a01b0319166001600160a01b0392831690811790915582549091167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e227008380a380f35b80fd5b503461023e578060031936011261023e5760206040516101f48152f35b503461023e578060031936011261023e57610277611c65565b60405191825b60e0821061028b57611c0084f35b82516001600160a01b03168152602092830192600192909201910161027d565b503461023e578060031936011261023e576001546040516001600160a01b039091168152602090f35b503461023e578060031936011261023e5760206040516109c48152f35b503461023e578060031936011261023e5760206040516127108152f35b503461023e578060031936011261023e5760206040516126ac8152f35b503461023e57602036600319011261023e576001600160a01b0361034d611ab0565b16808252600560205260408220546001600160a01b031680156103b25760408383829552600660205281812060018060a01b0384165f52602052815f20549381526007602052209060018060a01b03165f52602052815f205482519182526020820152f35b6306c3ce4560e41b8352600483fd5b503461023e578060031936011261023e576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b503461023e578060031936011261023e5760206040516203376f198152f35b503461023e57602036600319011261023e576020610449610444611ab0565b611ba4565b6040519015158152f35b503461023e578060031936011261023e5760206040516b033b2e3c9fd0803ce80000008152f35b503461023e578060031936011261023e57546040516001600160a01b039091168152602090f35b503461023e578060031936011261023e576104ba61342d565b6104c2613471565b6001805460ff60a01b1916600160a01b1790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602090a180f35b503461023e578060031936011261023e576003546040516001600160a01b039091168152602090f35b503461023e578060031936011261023e576020604051611b588152f35b503461023e57602036600319011261023e576020906040906001600160a01b03610572611ab0565b168152600883522054604051908152f35b503461023e57602036600319011261023e5760a0906040906001600160a01b036105ab611ab0565b168152600560205220600180831b0381541690600180841b036001820154169060028101546003820154916004600180881b0391015416926040519485526020850152604084015260608301526080820152f35b503461023e578060031936011261023e576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b503461023e578060031936011261023e57600154336001600160a01b03909116036106b857600180546001600160a01b03199081169091555f805433928116831782556001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a380f35b63118cdaa760e01b815233600452602490fd5b503461023e578060031936011261023e576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b503461023e578060031936011261023e5761072961342d565b600180546001600160a01b03199081169091555f80549182168155906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b503461023e578060031936011261023e576020600954604051908152f35b503461023e578060031936011261023e576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b503461023e578060031936011261023e57602060ff60015460a01c166040519015158152f35b503461023e57604036600319011261023e57610818611ab0565b90610821613453565b6001600160a01b03828116825260056020526040822054161561085a57602061084d60243533856137ce565b6001600255604051908152f35b6306c3ce4560e41b8152600490fd5b503461023e578060031936011261023e5760206040516201d4c08152f35b503461023e57602036600319011261023e576020906001600160a01b036108ac611ab0565b16815260048252604060018060a01b0391205416604051908152f35b503461023e57604036600319011261023e576108e2611ab0565b906108eb613453565b6001600160a01b0382811682526005602052604082205416330361085a57602061084d836109188161349c565b50506024359033906137ce565b503461023e578060031936011261023e576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b503461023e578060031936011261023e5761098361342d565b60015460ff8160a01c16156109cb5760ff60a01b19166001556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa90602090a180f35b638dfc202b60e01b8252600482fd5b503461023e57604036600319011261023e5760406109f6611ab0565b916109ff611ac6565b9260018060a01b031681526006602052209060018060a01b03165f52602052602060405f2054604051908152f35b503461023e578060031936011261023e5760206040516123288152f35b503461023e57602036600319011261023e576040610a76610a69611ab0565b610a71613453565b61349c565b600160025582519182526020820152f35b346114195760403660031901126114195760043567ffffffffffffffff811161141957610ab8903690600401611b08565b60243567ffffffffffffffff811161141957610ad8903690600401611b08565b9092610ae2613453565b610aea613471565b8215801561160e575b6115ff57603c831180156115f5575b6115e657604051610b0c93610b1a6020860183611b63565b848252613d3891610b65610bb66020830188868239602087610b858c6040519687918d610b5387850196606088528d6080870191611b43565b848103601f1901604086015291611b43565b6b033b2e3c9fd0803ce8000000606083015203601f198101875286611b63565b60405194859383850197518091895e840190838201905f8252519283915e01015f815203601f198101835282611b63565b51902091600954955f915f975f905f9060018060a01b037f000000000000000000000000000000000000000000000000000000000000000016973360601b903060601b915b610fa08510611543575b50505050501561152057604051918083019083821067ffffffffffffffff83111761152f5783928339606081526b033b2e3c9fd0803ce80000006040610c638c8b610c558c8b6060890191611b43565b918683036020880152611b43565b92015203905ff594851561140e576001600160a01b0390811690861603611520576001600160a01b038581165f9081526005602090815260409182902080546001600160a01b03191633178155915163a9059cbb60e01b918101919091527f0000000000000000000000000000000000000000000000000000000000000000909216602483018190526acecb8f27f4200f3a00000060448085019190915283526b024306c4097859c43c000040939192610d3190610d22606482611b63565b6001600160a01b038a16613b67565b6040516acecb8f27f4200f3a00000081526001600160a01b038916907fe0c3c67f503b3300202bb12cfd591b941507d2ad50554e2274719527d4c7b12a90602090a3610d7b611c65565b955f5b60e0811015610de357600190610ddd828060a01b038260051b8b0151166040519063a9059cbb60e01b60208301526024820152692f44787e292be6392492604482015260448152610dd0606482611b63565b838060a01b038c16613b67565b01610d7e565b5087959650886040516a295be96e64066971ffffc08152692f44787e292be6392492602082015260e060408201527fe7e2cf97cec332b34c13a5502ea607f2a987ed0940bd7df86403acb9b50fb250606060018060a01b038a1692a26001600160a01b03871686111561151157604051630b4c774160e11b81526001600160a01b038881166004830152878116602483015261271060448301527f00000000000000000000000000000000000000000000000000000000000000001695906020816064818a5afa90811561140e575f916114f2575b506001600160a01b03166114e35760405163a167129560e01b81526001600160a01b038981166004830152881660248201526127106044820152956020876064815f855af196871561140e575f976114ae575b506020602491604051928380926322afcccb60e01b825261271060048301525afa90811561140e575f91611472575b5060020b5f811390811591611459575b811561142c575b5061141d576a01bc1aaf2479c33bce5cec906001600160a01b0387163b15611419576040519163f637731d60e01b835260048301525a915f816024818380978d60018060a01b031690f1801561140e576113f9575b50610fde816001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116908c16613c78565b60405197610160890189811067ffffffffffffffff8211176113e55760405260018060a01b038a168952602089015261271060408901526203376f196060890152620162af1960808901528060a08901528160c08901526b023d3c7546d0bf44d500003f60e089015281610100890152306101208901524261014089015261014060405198634418b22b60e11b8a5260018060a01b0381511660048b015260018060a01b0360208201511660248b015262ffffff60408201511660448b0152606081015160020b60648b0152608081015160020b60848b015260a081015160a48b015260c081015160c48b015260e081015160e48b01526101008101516101048b015260018060a01b03610120820151166101248b01520151610144890152608088610164818560018060a01b037f0000000000000000000000000000000000000000000000000000000000000000165af19586156113da578298839761138b575b506111776001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116908c16613bbf565b6b023d3c7546d0bf44d500003f871061137c57868203918211611368578187926112ea575b506001810180546001600160a01b0319166001600160a01b038a16179055600281018990556003015560095490680100000000000000008210156112d6575061123f6020996112118360017e0b9c238b6ed674c6422c1cdddff5f8e6322ff8b00343e01c397e2eb5af2e949501600955611adc565b81546001600160a01b038d811660039390931b92831b921b1916179055604080518181529690870191611b43565b8481038a8601526001600160a01b03878116953395918b16949092839261126592611b43565b0390a460408051938452858401919091526203376f1990830152620162af1960608301526001600160a01b0390811691908316907f7ab83fbfd18d00801ccc746413c5c943431fe2141f152ecdcfd492ed1feaa77b90608090a360016002556040516001600160a01b039091168152f35b634e487b7160e01b81526041600452602490fd5b9091506001600160a01b038a163b1561136457604051630852cd8d60e31b815260048101919091528281602481836001600160a01b038f165af1801561135957879291849161133a575b5061119c565b819293509061134891611b63565b611355578590828c611334565b5080fd5b6040513d85823e3d90fd5b8280fd5b634e487b7160e01b5f52601160045260245ffd5b63244a822560e11b8352600483fd5b985095506080883d6080116113d2575b816113a860809383611b63565b810103126113555787519760208101516001600160801b038116036113645760400151958b611140565b3d915061139b565b6040513d84823e3d90fd5b634e487b7160e01b84526041600452602484fd5b6114069192505f90611b63565b5f908a610fa6565b6040513d5f823e3d90fd5b5f80fd5b63013840ad60e51b5f5260045ffd5b90508015611445576203376f190760020b15158a610f51565b634e487b7160e01b5f52601260045260245ffd5b9050801561144557806201d4c00760020b151590610f4a565b90506020813d6020116114a6575b8161148d60209383611b63565b8101031261141957518060020b8103611419578a610f3a565b3d9150611480565b60249197506114d4602091823d84116114dc575b6114cc8183611b63565b810190611b85565b979150610f0b565b503d6114c2565b630188c99160e11b5f5260045ffd5b61150b915060203d6020116114dc576114cc8183611b63565b8a610eb8565b6303e67ae160e21b5f5260045ffd5b637cb5018b60e11b5f5260045ffd5b634e487b7160e01b5f52604160045260245ffd5b909192939750899c50604051602081019082825285603482015289605482015260548152611572607482611b63565b519020976040516020810160ff60f81b81528560218301528a6035830152846055830152605582526115a5607583611b63565b905190206001600160a01b03169d8e10806115dd575b6115cb5760010193929190610bfb565b50505050505060018a80808080610c05565b508d3b156115bb565b63216e38bd60e21b5f5260045ffd5b50600a8211610b02565b63ae92135760e01b5f5260045ffd5b508115610af3565b34611419576020366003190112611419576004356009548110156114195761163f602091611adc565b905460405160039290921b1c6001600160a01b03168152f35b3461141957604036600319011261141957611671611ab0565b611679611ac6565b6001600160a01b039182165f908152600760209081526040808320949093168252928352819020549051908152f35b34611419576020366003190112611419576116c1611ab0565b6116c961342d565b6001600160a01b0316801561171057600380546001600160a01b031916821790557fb141872ee67913e1bc546464f29b6b07a65159d45c6af64fdecf8b4129157faf5f80a2005b63d92e233d60e01b5f5260045ffd5b34611419576020366003190112611419576004358060020b809103611419575f811215611aaa57805f03905b620d89e88211611a9b576001821615611a89576001600160881b036ffffcb933bd6fad37aa2d162d1a5940015b169160028116611a6d575b60048116611a51575b60088116611a35575b60108116611a19575b602081166119fd575b604081166119e1575b608081166119c5575b61010081166119a9575b610200811661198d575b6104008116611971575b6108008116611955575b6110008116611939575b612000811661191d575b6140008116611901575b61800081166118e5575b6201000081166118c9575b6202000081166118ae575b620400008116611893575b620800001661187a575b5f1261186c575b60209063ffffffff8116611864575f905b60ff60018060a01b03921690831c0116604051908152f35b60019061184c565b8015611445575f190461183b565b6b048a170391f7dc42444e8fa290910260801c90611834565b6d2216e584f5fa1ea926041bedfe9890920260801c9161182a565b916e5d6af8dedb81196699c329225ee6040260801c9161181f565b916f09aa508b5b7a84e1c677de54f3e99bc90260801c91611814565b916f31be135f97d08fd981231505542fcfa60260801c91611809565b916f70d869a156d2a1b890bb3df62baf32f70260801c916117ff565b916fa9f746462d870fdf8a65dc1f90e061e50260801c916117f5565b916fd097f3bdfd2022b8845ad8f792aa58250260801c916117eb565b916fe7159475a2c29b7443b29c7fa6e889d90260801c916117e1565b916ff3392b0822b70005940c7a398e4b70f30260801c916117d7565b916ff987a7253ac413176f2b074cf7815e540260801c916117cd565b916ffcbe86c7900a88aedcffc83b479aa3a40260801c916117c3565b916ffe5dee046a99a2a811c461f1969c30530260801c916117b9565b916fff2ea16466c96a3843ec78b326b528610260801c916117b0565b916fff973b41fa98c081472e6896dfb254c00260801c916117a7565b916fffcb9843d60f6159c9db58835c9266440260801c9161179e565b916fffe5caca7e10e4e61c3624eaa0941cd00260801c91611795565b916ffff2e50f5f656932ef12357cf3c7fdcc0260801c9161178c565b916ffff97272373d413259a46990580e213a0260801c91611783565b6001600160881b03600160801b611778565b6333a3bdff60e21b5f5260045ffd5b8061174b565b600435906001600160a01b038216820361141957565b602435906001600160a01b038216820361141957565b600954811015611af45760095f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b9181601f840112156114195782359167ffffffffffffffff8311611419576020838186019501011161141957565b9190820391821161136857565b908060209392818452848401375f828201840152601f01601f1916010190565b90601f8019910116810190811067ffffffffffffffff82111761152f57604052565b9081602091031261141957516001600160a01b03811681036114195790565b6001600160a01b039081165f9081526005602052604090208054909116158015611c59575b611c5457600201546040516331a9108f60e11b815260048101919091526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561140e575f91611c35575b506001600160a01b0316301490565b611c4e915060203d6020116114dc576114cc8183611b63565b5f611c26565b505f90565b50600281015415611bc9565b611c0080604051611c768282611b63565b36903760405190810181811067ffffffffffffffff82111761152f5760405273473d3a2005499301dc353afa9d0c9c5980b5188c8152739dbfded199ee3a6b291c223e65f97d387156aada602082015273c9d46b11f3b1bbc85ebedfffca09707f8f28dca1604082015273023ab8e20a4682d315daef4c91db96bd77934d6660608201527351a58f289a22a01c1ec74645c08938ecd3cf2444608082015273036dae2378752c76f4e7fa7e2f5882877b86e4d260a082015273e24da1c8f33e1dd8b7993b8b028c7109698ddaa560c0820152730f76892875ab65dc6232dba22fb5bb5d39b8fac860e0820152733391a39a1b508e54a361924a26056c01c1c2c07d61010082015273e1412eb3a56502c5322eddf4fd6b63097fe9f08e610120820152738300f444462e55d11dba5823a1584badfc293fd961014082015273cc768421671c77b2af2998a9bbd59374503938e5610160820152734ee12c95dea425d7c1d8e3f0239416a128a68a68610180820152738c2bbc706174daa948a7f2c26c234415ec289c8c6101a082015273f00408ddcaf624129cc0d08aa122a7abe1f2ef316101c0820152733310fd13c6c55f054cc128439e1e51cd0cb16fed6101e0820152736c795be0a4887816ce761d41e482fcf4fbca9963610200820152735fa57fcaf86e137cb8185c4cb2c01ea7b5b14cfb610220820152738d7bbfa0506ea95c73d864310818acc3e5fa05d9610240820152734032ab8d5cced1444240c7b973f36d712981fb0061026082015273490ecb092c05b37834fd5e8eaacfd1037884581e6102808201527394aa50fe3c1ad32b0419004eee4f278ca39088766102a082015273c2ef1173a4b051bbcc4474c407bbb2ac7e02e3636102c082015273bd6b8d8fa94f7307840252548549b56a33c980546102e082015273d171ebe9d3c1e55d918563107b0b7782948dd52c61030082015273931bd858fd7bc2960f51a42489b84805881036cf6103208201527324bd6c97ffe8696d2c35cd200823caf839e4bd66610340820152736e2d5a559955e0d58c61961fe449dcd415c0000061036082015273096b405c3a81e68235d43fec2b41c28cb7248f30610380820152730cef7feff37208e1295ac6537445a9b5bc566fd56103a082015273b8e134b0c9b82914042e03e1b8a07dd0b912bb986103c082015273ebe7e229783dc3fadfa4dd8b2e3c42e5e91803376103e082015273061825a9195a2fb526735032fcac4ef58c6e52e46104008201527312fba237ac57b408efdbe63c0380ca17ed70b3b1610420820152737a2363a401b2340c7941dd2eeff0196a5078d2e661044082015273c325a84c48a849bcb6fbdf936b71a628ff1aa53061046082015273e475cd3f0d0a77ec581bb6540abef60b0f3f0d57610480820152731466f5596c439142b6f39723eed27c117a97f8ed6104a082015273a41d7cca4f220c286cf1b6d408882aca4dd3130d6104c0820152735edf27efd02421afed92e3cad25b7f42f6252be86104e082015273896c20da40c2a4df9b7c98b16a8d5a95129161a5610500820152739897b49174dc565730ef1d116d80081574ccb3ec61052082015273a4beaea04ee42f451f38c771842489d7649b95f2610540820152733cdf6e157a41995929af82c60bf4d8903225ec37610560820152737b64af79bef42eeb1f210b28a21af075e4aa927861058082015273eb89055e16ae1c1e42ad6770a7344ff5c7b4f31d6105a082015273f7a934528d38e2f2865a7cd30c335c6d115928b86105c082015273e725fda6f6eae408242c2860832f9249777730fb6105e082015273ca1a2fb7f3179d887504966b25d1606978adcd42610600820152739224bbb4e0fbe2f2f8fab55debc41eb21fdfb80461062082015273170332b75c0859a39bf7288f6cbf0db94bb1f5676106408201527370ad955d5f34991e81dad7ce2bbe418f8d5edc076106608201527326dd4199269bec9457f84adb029db917a910c711610680820152739023ef16968ffea318838a223ef2a79bd9f99f886106a082015273f100af33f90445d1d482fb63df3f6cdb475eeb0f6106c082015273cc7b0969e8f622d8435b4ba34a47d70788e87a926106e082015273e0e8c1d735698060477e79a8e4c20276fc2ec7a7610700820152732a93e999816c9826ade0b51aaa2d83240d8f459661072082015273d3a71f80906876d063321ccb125f2f214993de1761074082015273c1165124be8dc53a3826a1aa1b6643e9138d167c6107608201527393c883963af898ab7c41ef9250f9eed71506eb5261078082015273c4ed938caeb36008493aa2e327140a8a3324d1936107a082015273a96f56923ecaae76dc3601ba4e718bf8a5eb60876107c082015273326ef9fa575a92090d8dea0b1f053afca64fb19b6107e0820152732d2f80ecb07f01532c044d1423bb930f9ba4f70061080082015273b4829baf3c6d92c943425feb493e40bf7f0100d8610820820152734d0e5759e4f2af31b93b25277b77b7c59dbb1f9c610840820152739ba457f105bffac35d67138fecb32a86428c02a261086082015273b226f97bc5b01978848dc440b40c70faea7c006e61088082015273d4229d8166dbaa45689589d59fa968abc840b20f6108a0820152733e962421b0fa8ded5b36cf9bd65cb5f8d35d19396108c08201527381606a4fbd0f2a3c601d6b215ed1232674c94d7f6108e08201527393585d7f5f15d8bc67f41a12d2b3e3966a1ee6a0610900820152735388668c4fa8da7f756ef8498ff24d799999999961092082015273878a051559152383fbd35315eb03f3ef5fbf76a661094082015273371903abb32f5f69b536b77495e92adedfea25da61096082015273cb099f7d28dc611bde3b0f58e9194b621eeee8ed61098082015273eb1222a0c07d4e62b0235d8b4b3e7e617d259be26109a082015273e5e9ffe707ee071998340972af6fb178f5c64ba66109c082015273cc5ecdfc4f4b81e3363e6417031a4e3e3186a2f56109e082015273f78b066050e00fdb9b980e265aa9f317ef4b947c610a0082015273db7bdc871f95773853d2b0230d30179b980570b2610a2082015273d3358b1f39a6a71911c6e33717d185f99d43e80d610a4082015273da9f482ea717384af879597303e8b67968afcde2610a60820152735a8116f07937394e6ac2a51995ab6a054c08bf9e610a8082015273745d81601ab13c63ef200848003d548514c9eeb9610aa0820152735ab2d1f5069dd2f9aeec3b0a8e923b1cdbe7fc44610ac0820152735d802e2fe48392c104ce0401c7eca8a4456f1f16610ae082015273e0d72c0b3787ccabdb3483c44fca088d14ff04bf610b0082015273877af245c61289b24f0c619a4346cdbc68f1aaac610b208201527355906f38ff30e606908f575eefb634e7a5c22b7a610b4082015273454685dec7796c2c747294f7aa7a30b2c5ab05f7610b608201527338e47fece3ea323e864c65410f6458c820eaa897610b808201527304b436555dc69ea4bf8ba50d8c591e60443b3ff9610ba082015273c7d75ccdad8c368382e490ffd64b7ee2c2a0bb62610bc082015273037e6b68ca866598d464a370afa060e4583aa0b8610be082015273bd28edf53231cd121a963b4b119d3cc4cb3a368a610c00820152735acabc3222a7b74884bec8efe28a7a69a7920818610c20820152737e8fb0392542812476d9f2d0d71c01d1fa0776c5610c40820152737b3d8e939ee08b52d06ab5e6f85791a6007e8d61610c6082015273fe277aa25a4f65a182c0ec135854794eb7131e79610c80820152733f1c0ea76342cc3427962452891f8de8649a301b610ca0820152739f041fbbc6fd007115dae9bd1ce6001b26747797610cc082015273fe5573c66273313034f7ff6050c54b5402553716610ce08201527306970464c8b936cda744a454a33f2206dbbbfe49610d0082015273ec8b6b6ee8dc5c6631747bdc6b1400aff08829fd610d208201527326b834a643deb024c69d72f552dd4f043f546b67610d4082015273ff9f20367488f3386a97bc3897798b0e8bd1b2da610d608201527341ccc209d3ba4e81ef0c1fcb6d191127fb5b42f5610d8082015273bc5e88747673275d2c7e5dd9c1295a4d728dede6610da082015273347ffc6db9acc54ac2019795173b9599e8b82bd9610dc08201527357825f68fc7b32eaaa1e90db1fd6cd997b5a4035610de0820152730a6ae2a16564109cefc178f6df7d98dd60cb6d5c610e0082015273fe97f3ba5da378cd83f94b02de8358045491d48f610e20820152736994aa3c83455705a514798fc29aff6d94d06da2610e40820152732b614bf0cff1dff5d099f88a98ae449604379bc2610e608201527354d209d9d224a615e0e5f0476644886897b75e45610e8082015273c4cac68f2ce80c328dabcfee4bebc48ca34b66e6610ea0820152731d2a6f8dbe29dfb5bf9ad99894a3ecfc8602e226610ec082015273e18c8685818cb936dc2448be33349da61b412a4d610ee0820152739a1ee67e454bb963183884e7e2872fc0016613d3610f0082015273a12cd8eb1f533255aa252655e456b8c48e9c3d52610f2082015273dd6f338b91f40e5a02c468b7cb49cccc569a3134610f408201527355fade80e573c4594b0dd73041297024f1f2ee95610f60820152739631335762e3603d2a7507d84838aa3236d52745610f80820152731e82cdc70375fff785b695b38976b83b79a30c2f610fa0820152738d12b8c3bef358d1901d891a74fa801aba2b79b0610fc08201527376a280376c5332abbbae1786a73c70116906e757610fe08201527349b3e70dfc8b18654f5335532c17406794ac5ddd61100082015273d1d0675d425d33d429c1de0ac10a9b3b30b34168611020820152735250dbcf6ac11c4c2cbd8dcaf5a6d019f3268ea86110408201527395701259b045f972b06089e5ba498d463f627aa261106082015273a866c5adddc1c3570b6328491b510deefa374e0d61108082015273fe7adaf3fac1fb7873f7aafbe21c0c7e83ea3bcb6110a08201527307591d902e68503c113ac4beca8abb3e3f6b0ab36110c0820152733d06315c94ac30b6061c91caf748fc2db04a89f46110e082015273904a5d05d72a0575c6a60f7de7566abc2ac331e2611100820152733a9f45ac308ccc0a1a48b0f9e2f8ce859a0039ea61112082015273e7e3773235a7ee4e3b3c1f51a4b516abe888bee6611140820152731fa8bbd3f95f89958930450ee15535558888888861116082015273fea3157ff571174f05fc86af3caee3b870a8495a611180820152734d9644d05fe2123b4eafa8d7fd31b0ea430726f36111a0820152731d4b9b250b1bd41daa35d94bf9204ec1b0494ee36111c082015273dc6b9d500d26ac3dd43f783f4ada4d6c372052326111e0820152736078ee8a93697c6d67863fcbff77141d9ab358b2611200820152734fbbc9ef478f0eefe88ebd499a598d382cd2c94f611220820152734b10707123c79f6e99be486dcd95d60323988d7661124082015273da8e6446c8e2c55a43599cf4f461adbfff56b31161126082015273a83b73f5644cde337b61da79589f10ea1554881161128082015273e6a5f1690fcda05d9ba0a663b6e7ddf3c97eb7b16112a082015273ecb7208b4eba833001e0766f036fe5e8e76570396112c082015273e33b746a030c3b3c512d274b05ea6e40772cf2126112e082015273ddac928a240bdace3994c2cc0783d4e29a0021276113008201527307cdaf0140c60a0c34681065abf49bb8d85b8cbe6113208201527355e31160cd170661a887f31b9f6228e5e566a25361134082015273b90d9ea599c2634069ae4d5eecc5ab7234a81a0561136082015273b2d1af0746c410e146272e804b1741f07f83b851611380820152732f84ebb2f7f8edcf8e83a75a12f32bd8d99de3e06113a082015273683035da6b84ce48421534c1d3d160a8487cb9bb6113c08201527392c371744e71dbe58c603661ba8784fd76472e1b6113e08201527381b24791bc6c6713adf55c4f135f13639e92e5ae6114008201527399514773a40f64e52ae3014c7836cf0e703dd0b16114208201527394318ed124785b5910d8e456bf0ca50aaf27835f611440820152730f84d2da979180394fbf9c4499febd0f602a676761146082015273d611a3350321558bda7d15da88e4b74eaf4c8986611480820152730b1811b93e1baaf26f07a7b923d26ec1b5a198626114a08201527328d3bdece9a0c7f54687f734fa73fba04ecf57856114c0820152739d98e11bdfbe185deb3cc4f63dc0a6a867c03e1c6114e082015273af82a3e8cd907687f717eb93c76865ae94e091f9611500820152735f9bc316d8473d8c6634bd26f3e0932cd6bf07186115208201527394878116844aec4c73a08f295a54c767444027426115408201527361fd0d043d519f5a2bd05785000f30db9680942961156082015273b4c77c4f09ce11ade1fe64f2221492d6054eab5c61158082015273ec82fa0b5956f0fe2c4ab4dd12b45141277873506115a082015273c71b2c6b22b64c281555de040b6079e6322913d36115c082015273e540a8d94bd379c4d9c0478c8fe9f7fe7f0b06e16115e082015273d03353d8a531a7b05509f35fadef3e042188bdb5611600820152734a30496554ef401e4b687189f7df6efe4b3e024961162082015273758e83c114e36a28ca1f31c4d2adb5ec7c04c5786116408201527311db1321c3f926334eb155d5fe704f6b2ff6a2f961166082015273679f1c7de559cf077af7bff879e8e8fed76a0b58611680820152734f85b1cae69aba3582acc11d0becf2a01260554f6116a0820152730b3edd0d0bf7c6281a7f8ae5a5630defb94ae78e6116c082015273664d6645a04be9e27a8b33088f85025f29d45dc16116e082015273bac453b9b7f53b35ac906b641925b2f5f2567a8961170082015273f50f0c707df28cbe8dfa22f127c57a2aab1ea3db611720820152732190d4ee2bfc8883c3d71f4b5f41acd7a7287ff561174082015273f41e3186861afb9840ea3c87f00366440a64832061176082015273085111103c78e708199e1779789eefe9529d5d3a611780820152731df3160f73fd6c1bec394c51fc20b7b2a91d63306117a08201527378f210557fcd6663f162c75ed0d96108e42e4f9c6117c082015273e28601398a5448d1147e6e8b0e0c6d686f0d216d6117e082015273ec9e512fe7e90134d8ca7295329ccb0a57c91ecb61180082015273bf004bff64725914ee36d03b87d6965b0ced49036118208201527313267f77e7241db36f9ee3418dd3069bbc91f2b2611840820152733b6b2a0cc5be24f04e9239e3340e2019c2b5af8861186082015273f10ba5ab6d29818d387b5af3faf8e1050275498861188082015273b3cee92c7cd9954c1b52adc7ff5c9bf1a3a723d66118a082015273ab91d89f76c3409ab65c2483273e081d182d27566118c0820152738d5624fa29526c879a1ca7560961e4c5a08089ae6118e082015273d5ff53f48f14e9409b581e41a4cddfe0e97dc72461190082015273d717499568146195938cdcdb4ab8996e3da5491c611920820152734384b10fcdbc8996612f07ec5c219b72f924712f611940820152737e5ce10826ee167de897d262fcc9976f609ecd2b61196082015273d41feaa24dede516a501862cf1f376defb811772611980820152737a44b4588d9fda6f494bbe4cab27ac604fd9fe6f6119a0820152733475831749ea6c9992e638d01427453b9cc83a126119c0820152735865363bb04450ab313dcd2e71a189efb3c31e416119e08201527377a692e79fff538aa4c4101aefdbc8f724b4f54f611a0082015273db1b769d9d10ad6f5698529e3277d434ecec5124611a208201527322a8680e9e1d883dd617428748f599c9fe73e424611a4082015273cef99ab15ef93ba9f523e57bf8039a19f1cea636611a6082015273b5168bd818d3c5278377b38b00c3d0adc50b092c611a8082015273253d32965d2e39e46dd7a2fd052fea1aa189c163611aa082015273f8e9a3e9b4054d1ae3eee530c1b558885cdc6d9f611ac08201527313a7d2fb3f73b57ef539c35c4ec59ed49b1833ca611ae0820152732f43eedaee56684b3d5885c98f22aa5abf200e03611b00820152733ddb3571e81e123dbc74c1f790c33576cd66403d611b2082015273d3abaa759af897122c876b87cf386f748cb213a8611b40820152734d68d0ebc52ce41f2ed057f926960df89b0455f9611b6082015273fe631cd3c9f7e879f936515265302677805f87b9611b808201527353af0d5f5fe42469a5bcfed64dff77763c8650d3611ba082015273077b9981bc8a2ca417cea41861111da63266988b611bc08201527376492754a0bebdbdb3b533012239dcb327674042611be082015290565b5f546001600160a01b0316330361344057565b63118cdaa760e01b5f523360045260245ffd5b60028054146134625760028055565b633ee5aeb560e01b5f5260045ffd5b60ff60015460a01c1661348057565b63d93c066560e01b5f5260045ffd5b9190820180921161136857565b6001600160a01b039081165f81815260056020526040902080549093919216156137bf57600283015491604051926080840184811067ffffffffffffffff82111761152f57604090815290845230602085019081526001600160801b0385830181815260608701828152845163fc6f786560e01b81529751600489015292516001600160a01b0390811660248901529051821660448801529151166064860152849060849082905f907f0000000000000000000000000000000000000000000000000000000000000000165af192831561140e575f905f94613785575b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031682111561378057925b80938095811580156136ad575b5082159081156135f9575b50506040907f251551588ab2fefc5204a992ffe52b797e42bee3b0359226b84003bece36a0b69282519182526020820152a2565b919092612328810293818504612328141715611368575f85815260076020908152604080832095546001600160a01b0316835294905283902080547f251551588ab2fefc5204a992ffe52b797e42bee3b0359226b84003bece36a0b695613674926127109091049161366c90839061348f565b905582611b36565b5f868152600760209081528582206003546001600160a01b031683529052849020805490916136a29161348f565b9055928192506135c5565b6123288302908382046123281417156113685761271090046136cf8184611b36565b5f86815260066020908152604080832086546001600160a01b031684529091529020805491929161370190839061348f565b90555f8681526006602090815260408083206003546001600160a01b031684529091529020805461373390849061348f565b905560018060a01b038354165f52600860205261375560405f2091825461348f565b905560018060a01b03600354165f52600860205261377860405f2091825461348f565b90555f6135ba565b6135ad565b9350506040833d6040116137b7575b816137a160409383611b63565b810103126114195760208351930151925f613579565b3d9150613794565b6306c3ce4560e41b5f5260045ffd5b6001600160a01b039081165f81815260066020908152604080832094861680845294825280832054848452600783528184209584529490915290205492949390919081158080613b5f575b613b50575f8481526006602090815260408083206001600160a01b038b16845290915281205515613b2a575b5f93849181613901575b505061387e6040917f916d60cf5360c058722c013df4e95816ae5ddf71f4c218eb89d1afb76e047bb89361348f565b958661389f575b815187815260208101959095526001600160a01b031693a3565b815163a9059cbb60e01b60208201526001600160a01b0382166024820152604480820189905281526138fc906138d6606482611b63565b7f0000000000000000000000000000000000000000000000000000000000000000613b67565b613885565b5f8581526007602090815260408083206001600160a01b038c8116855292528220919091559192507f000000000000000000000000000000000000000000000000000000000000000090911690613959838387613c78565b6040519060e0820182811067ffffffffffffffff82111761152f5760409081528683526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660208086019182526127108685019081523060608801908152608088018a815260a089019788525f60c08a0181815297516304e45aaf60e01b81529951871660048b01529451861660248a0152915162ffffff1660448901525184166064880152516084870152935160a486015291511660c4840152829060e4908290865af15f9181613af6575b50613ac25750847f916d60cf5360c058722c013df4e95816ae5ddf71f4c218eb89d1afb76e047bb893604093613a6861387e9488613bbf565b5f878152600760209081528682206001600160a01b038d16808452908252918790208390558651928352909188917fdaee5f8848631e54c79192245d9c6fbb4d7e9854c2f0624277f6885067fde5af91a35b93509161384f565b7f916d60cf5360c058722c013df4e95816ae5ddf71f4c218eb89d1afb76e047bb89395506040925061387e91508095613aba565b9091506020813d602011613b22575b81613b1260209383611b63565b810103126114195751905f613a2f565b3d9150613b05565b60018060a01b0386165f52600860205260405f20613b49838254611b36565b9055613845565b631f2a200560e01b5f5260045ffd5b508415613819565b905f602091828151910182855af11561140e575f513d613bb657506001600160a01b0381163b155b613b965750565b635274afe760e01b5f9081526001600160a01b0391909116600452602490fd5b60011415613b8f565b6040519060205f8184019463095ea7b360e01b865260018060a01b03169485602486015281604486015260448552613bf8606486611b63565b84519082855af15f513d82613c53575b505015613c1457505050565b613c4c613c51936040519063095ea7b360e01b602083015260248201525f604482015260448152613c46606482611b63565b82613b67565b613b67565b565b909150613c7057506001600160a01b0381163b15155b5f80613c08565b600114613c69565b60405163095ea7b360e01b60208083019182526001600160a01b0385166024840152604480840196909652948252929390925f90613cb7606486611b63565b84519082855af15f513d82613d12575b505015613cd357505050565b60405163095ea7b360e01b60208201526001600160a01b0390931660248401525f6044808501919091528352613c5192613c4c90613c46606482611b63565b909150613d2f57506001600160a01b0381163b15155b5f80613cc7565b600114613d2856fe60a0604052346103a257610b0c80380380610019816103a6565b9283398101906060818303126103a25780516001600160401b0381116103a257826100459183016103cb565b60208201519092906001600160401b0381116103a2576040916100699184016103cb565b91015182516001600160401b0381116102b357600354600181811c91168015610398575b602082101461029557601f8111610335575b506020601f82116001146102d257819293945f926102c7575b50508160011b915f199060031b1c1916176003555b81516001600160401b0381116102b357600454600181811c911680156102a9575b602082101461029557601f8111610232575b50602092601f82116001146101d157928192935f926101c6575b50508160011b915f199060031b1c1916176004555b3360805233156101b35760025481810180911161019f57600255335f525f60205260405f208181540190556040519081525f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60203393a36040516106ef908161041d82396080518161058a0152f35b634e487b7160e01b5f52601160045260245ffd5b63ec442f0560e01b5f525f60045260245ffd5b015190505f8061011a565b601f1982169360045f52805f20915f5b86811061021a5750836001959610610202575b505050811b0160045561012f565b01515f1960f88460031b161c191690555f80806101f4565b919260206001819286850151815501940192016101e1565b60045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f830160051c8101916020841061028b575b601f0160051c01905b8181106102805750610100565b5f8155600101610273565b909150819061026a565b634e487b7160e01b5f52602260045260245ffd5b90607f16906100ee565b634e487b7160e01b5f52604160045260245ffd5b015190505f806100b8565b601f1982169060035f52805f20915f5b81811061031d57509583600195969710610305575b505050811b016003556100cd565b01515f1960f88460031b161c191690555f80806102f7565b9192602060018192868b0151815501940192016102e2565b60035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b601f830160051c8101916020841061038e575b601f0160051c01905b818110610383575061009f565b5f8155600101610376565b909150819061036d565b90607f169061008d565b5f80fd5b6040519190601f01601f191682016001600160401b038111838210176102b357604052565b81601f820112156103a2578051906001600160401b0382116102b3576103fa601f8301601f19166020016103a6565b92828452602083830101116103a257815f9260208093018386015e830101529056fe6080806040526004361015610012575f80fd5b5f3560e01c90816302669b52146105785750806306fdde03146104a6578063095ea7b31461042457806318160ddd1461040757806323b872dd14610327578063313ce5671461030c57806342966c681461026c57806370a082311461023557806395d89b411461011a578063a9059cbb146100e95763dd62ed3e14610095575f80fd5b346100e55760403660031901126100e5576100ae6105e3565b6100b66105f9565b6001600160a01b039182165f908152600160209081526040808320949093168252928352819020549051908152f35b5f80fd5b346100e55760403660031901126100e55761010f6101056105e3565b602435903361060f565b602060405160018152f35b346100e5575f3660031901126100e5576040515f6004548060011c9060018116801561022b575b602083108114610217578285529081156101fb57506001146101a6575b50819003601f01601f191681019067ffffffffffffffff8211818310176101925761018e829182604052826105b9565b0390f35b634e487b7160e01b5f52604160045260245ffd5b905060045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5f905b8282106101e55750602091508201018261015e565b60018160209254838588010152019101906101d0565b90506020925060ff191682840152151560051b8201018261015e565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610141565b346100e55760203660031901126100e5576001600160a01b036102566105e3565b165f525f602052602060405f2054604051908152f35b346100e55760203660031901126100e55760043533156102f957335f525f60205260405f20548181106102e05790805f923384528360205203604083205580600254036002556040519081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60203392a3005b63391434e360e21b5f523360045260245260445260645ffd5b634b637e8f60e11b5f525f60045260245ffd5b346100e5575f3660031901126100e557602060405160128152f35b346100e55760603660031901126100e5576103406105e3565b6103486105f9565b6001600160a01b0382165f818152600160208181526040808420338552909152909120549193604435939290918101610387575b5061010f935061060f565b8381106103ec5784156103d95733156103c65761010f945f52600160205260405f2060018060a01b0333165f526020528360405f20910390558461037c565b634a1406b160e11b5f525f60045260245ffd5b63e602df0560e01b5f525f60045260245ffd5b8390637dc7a0d960e11b5f523360045260245260445260645ffd5b346100e5575f3660031901126100e5576020600254604051908152f35b346100e55760403660031901126100e55761043d6105e3565b6024359033156103d9576001600160a01b03169081156103c657335f52600160205260405f20825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b346100e5575f3660031901126100e5576040515f6003548060011c9060018116801561056e575b602083108114610217578285529081156101fb57506001146105195750819003601f01601f191681019067ffffffffffffffff8211818310176101925761018e829182604052826105b9565b905060035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5f905b8282106105585750602091508201018261015e565b6001816020925483858801015201910190610543565b91607f16916104cd565b346100e5575f3660031901126100e5577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b03821682036100e557565b602435906001600160a01b03821682036100e557565b6001600160a01b03169081156102f9576001600160a01b03169182156106a657815f525f60205260405f205481811061068d57817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f84520360405f2055845f525f825260405f20818154019055604051908152a3565b8263391434e360e21b5f5260045260245260445260645ffd5b63ec442f0560e01b5f525f60045260245ffdfea2646970667358221220ba45f61159f6327f797015677286d8b1e80999043280cc231b5810a2bef5d5a164736f6c634300081c0033a2646970667358221220369ca9c9bd6658146e764f26c6dcf4455bd5b8fe7560a8fc68d2d34c2f32e19764736f6c634300081c00330000000000000000000000000bd7d308f8e1639fab988df18a8011f41eacad730000000000000000000000001f7d7550b1b028f7571e69a784071f0205fd2efa00000000000000000000000073991a25c818bf1f1128deaab1492d45638de0d3000000000000000000000000caf681a66d020601342297493863e78c959e5cb2000000000000000000000000c5f7d002e3a48dd82f6077068d35959a82b3cc06000000000000000000000000c5f7d002e3a48dd82f6077068d35959a82b3cc06
0x60806040526004361015610011575f80fd5b5f5f3560e01c806306aebc031461171f5780630c5a61f8146116a85780630d55a5b31461165857806313560cac14611616578063172de6da14610a8757806317de3c7e14610a4a578063249d39e9146102f15780632982782614610a2d57806337d0cd9d146109da5780633f4ba83a1461096a5780633fc8cef31461092557806346bea602146108c85780634bf2be6f146108875780635ada7843146108695780635c46ff99146107fe5780635c975abb146107d857806360a2356b14610793578063678fd28914610775578063715018a614610710578063791b98bc146106cb57806379ba5097146106445780637c887c59146105ff5780637d0f7a88146105835780637e0b24921461054a5780637eaa31071461052d578063803db96d146105045780638456cb59146104a15780638da5cb5b1461047a578063902d55a514610453578063a1ad17ab14610425578063c1bf957814610406578063c31c9c07146103c1578063c598b2f91461032b578063d86bcd7d1461030e578063dd1b9c4a146102f1578063de90e29b146102d4578063e30c3978146102ab578063e8baef1b1461025e578063f0187b87146102415763f2fde38b146101d2575f80fd5b3461023e57602036600319011261023e576101eb611ab0565b6101f361342d565b600180546001600160a01b0319166001600160a01b0392831690811790915582549091167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e227008380a380f35b80fd5b503461023e578060031936011261023e5760206040516101f48152f35b503461023e578060031936011261023e57610277611c65565b60405191825b60e0821061028b57611c0084f35b82516001600160a01b03168152602092830192600192909201910161027d565b503461023e578060031936011261023e576001546040516001600160a01b039091168152602090f35b503461023e578060031936011261023e5760206040516109c48152f35b503461023e578060031936011261023e5760206040516127108152f35b503461023e578060031936011261023e5760206040516126ac8152f35b503461023e57602036600319011261023e576001600160a01b0361034d611ab0565b16808252600560205260408220546001600160a01b031680156103b25760408383829552600660205281812060018060a01b0384165f52602052815f20549381526007602052209060018060a01b03165f52602052815f205482519182526020820152f35b6306c3ce4560e41b8352600483fd5b503461023e578060031936011261023e576040517f000000000000000000000000caf681a66d020601342297493863e78c959e5cb26001600160a01b03168152602090f35b503461023e578060031936011261023e5760206040516203376f198152f35b503461023e57602036600319011261023e576020610449610444611ab0565b611ba4565b6040519015158152f35b503461023e578060031936011261023e5760206040516b033b2e3c9fd0803ce80000008152f35b503461023e578060031936011261023e57546040516001600160a01b039091168152602090f35b503461023e578060031936011261023e576104ba61342d565b6104c2613471565b6001805460ff60a01b1916600160a01b1790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602090a180f35b503461023e578060031936011261023e576003546040516001600160a01b039091168152602090f35b503461023e578060031936011261023e576020604051611b588152f35b503461023e57602036600319011261023e576020906040906001600160a01b03610572611ab0565b168152600883522054604051908152f35b503461023e57602036600319011261023e5760a0906040906001600160a01b036105ab611ab0565b168152600560205220600180831b0381541690600180841b036001820154169060028101546003820154916004600180881b0391015416926040519485526020850152604084015260608301526080820152f35b503461023e578060031936011261023e576040517f0000000000000000000000001f7d7550b1b028f7571e69a784071f0205fd2efa6001600160a01b03168152602090f35b503461023e578060031936011261023e57600154336001600160a01b03909116036106b857600180546001600160a01b03199081169091555f805433928116831782556001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a380f35b63118cdaa760e01b815233600452602490fd5b503461023e578060031936011261023e576040517f00000000000000000000000073991a25c818bf1f1128deaab1492d45638de0d36001600160a01b03168152602090f35b503461023e578060031936011261023e5761072961342d565b600180546001600160a01b03199081169091555f80549182168155906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b503461023e578060031936011261023e576020600954604051908152f35b503461023e578060031936011261023e576040517f000000000000000000000000c5f7d002e3a48dd82f6077068d35959a82b3cc066001600160a01b03168152602090f35b503461023e578060031936011261023e57602060ff60015460a01c166040519015158152f35b503461023e57604036600319011261023e57610818611ab0565b90610821613453565b6001600160a01b03828116825260056020526040822054161561085a57602061084d60243533856137ce565b6001600255604051908152f35b6306c3ce4560e41b8152600490fd5b503461023e578060031936011261023e5760206040516201d4c08152f35b503461023e57602036600319011261023e576020906001600160a01b036108ac611ab0565b16815260048252604060018060a01b0391205416604051908152f35b503461023e57604036600319011261023e576108e2611ab0565b906108eb613453565b6001600160a01b0382811682526005602052604082205416330361085a57602061084d836109188161349c565b50506024359033906137ce565b503461023e578060031936011261023e576040517f0000000000000000000000000bd7d308f8e1639fab988df18a8011f41eacad736001600160a01b03168152602090f35b503461023e578060031936011261023e5761098361342d565b60015460ff8160a01c16156109cb5760ff60a01b19166001556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa90602090a180f35b638dfc202b60e01b8252600482fd5b503461023e57604036600319011261023e5760406109f6611ab0565b916109ff611ac6565b9260018060a01b031681526006602052209060018060a01b03165f52602052602060405f2054604051908152f35b503461023e578060031936011261023e5760206040516123288152f35b503461023e57602036600319011261023e576040610a76610a69611ab0565b610a71613453565b61349c565b600160025582519182526020820152f35b346114195760403660031901126114195760043567ffffffffffffffff811161141957610ab8903690600401611b08565b60243567ffffffffffffffff811161141957610ad8903690600401611b08565b9092610ae2613453565b610aea613471565b8215801561160e575b6115ff57603c831180156115f5575b6115e657604051610b0c93610b1a6020860183611b63565b848252613d3891610b65610bb66020830188868239602087610b858c6040519687918d610b5387850196606088528d6080870191611b43565b848103601f1901604086015291611b43565b6b033b2e3c9fd0803ce8000000606083015203601f198101875286611b63565b60405194859383850197518091895e840190838201905f8252519283915e01015f815203601f198101835282611b63565b51902091600954955f915f975f905f9060018060a01b037f0000000000000000000000000bd7d308f8e1639fab988df18a8011f41eacad7316973360601b903060601b915b610fa08510611543575b50505050501561152057604051918083019083821067ffffffffffffffff83111761152f5783928339606081526b033b2e3c9fd0803ce80000006040610c638c8b610c558c8b6060890191611b43565b918683036020880152611b43565b92015203905ff594851561140e576001600160a01b0390811690861603611520576001600160a01b038581165f9081526005602090815260409182902080546001600160a01b03191633178155915163a9059cbb60e01b918101919091527f000000000000000000000000c5f7d002e3a48dd82f6077068d35959a82b3cc06909216602483018190526acecb8f27f4200f3a00000060448085019190915283526b024306c4097859c43c000040939192610d3190610d22606482611b63565b6001600160a01b038a16613b67565b6040516acecb8f27f4200f3a00000081526001600160a01b038916907fe0c3c67f503b3300202bb12cfd591b941507d2ad50554e2274719527d4c7b12a90602090a3610d7b611c65565b955f5b60e0811015610de357600190610ddd828060a01b038260051b8b0151166040519063a9059cbb60e01b60208301526024820152692f44787e292be6392492604482015260448152610dd0606482611b63565b838060a01b038c16613b67565b01610d7e565b5087959650886040516a295be96e64066971ffffc08152692f44787e292be6392492602082015260e060408201527fe7e2cf97cec332b34c13a5502ea607f2a987ed0940bd7df86403acb9b50fb250606060018060a01b038a1692a26001600160a01b03871686111561151157604051630b4c774160e11b81526001600160a01b038881166004830152878116602483015261271060448301527f0000000000000000000000001f7d7550b1b028f7571e69a784071f0205fd2efa1695906020816064818a5afa90811561140e575f916114f2575b506001600160a01b03166114e35760405163a167129560e01b81526001600160a01b038981166004830152881660248201526127106044820152956020876064815f855af196871561140e575f976114ae575b506020602491604051928380926322afcccb60e01b825261271060048301525afa90811561140e575f91611472575b5060020b5f811390811591611459575b811561142c575b5061141d576a01bc1aaf2479c33bce5cec906001600160a01b0387163b15611419576040519163f637731d60e01b835260048301525a915f816024818380978d60018060a01b031690f1801561140e576113f9575b50610fde816001600160a01b037f00000000000000000000000073991a25c818bf1f1128deaab1492d45638de0d38116908c16613c78565b60405197610160890189811067ffffffffffffffff8211176113e55760405260018060a01b038a168952602089015261271060408901526203376f196060890152620162af1960808901528060a08901528160c08901526b023d3c7546d0bf44d500003f60e089015281610100890152306101208901524261014089015261014060405198634418b22b60e11b8a5260018060a01b0381511660048b015260018060a01b0360208201511660248b015262ffffff60408201511660448b0152606081015160020b60648b0152608081015160020b60848b015260a081015160a48b015260c081015160c48b015260e081015160e48b01526101008101516101048b015260018060a01b03610120820151166101248b01520151610144890152608088610164818560018060a01b037f00000000000000000000000073991a25c818bf1f1128deaab1492d45638de0d3165af19586156113da578298839761138b575b506111776001600160a01b037f00000000000000000000000073991a25c818bf1f1128deaab1492d45638de0d38116908c16613bbf565b6b023d3c7546d0bf44d500003f871061137c57868203918211611368578187926112ea575b506001810180546001600160a01b0319166001600160a01b038a16179055600281018990556003015560095490680100000000000000008210156112d6575061123f6020996112118360017e0b9c238b6ed674c6422c1cdddff5f8e6322ff8b00343e01c397e2eb5af2e949501600955611adc565b81546001600160a01b038d811660039390931b92831b921b1916179055604080518181529690870191611b43565b8481038a8601526001600160a01b03878116953395918b16949092839261126592611b43565b0390a460408051938452858401919091526203376f1990830152620162af1960608301526001600160a01b0390811691908316907f7ab83fbfd18d00801ccc746413c5c943431fe2141f152ecdcfd492ed1feaa77b90608090a360016002556040516001600160a01b039091168152f35b634e487b7160e01b81526041600452602490fd5b9091506001600160a01b038a163b1561136457604051630852cd8d60e31b815260048101919091528281602481836001600160a01b038f165af1801561135957879291849161133a575b5061119c565b819293509061134891611b63565b611355578590828c611334565b5080fd5b6040513d85823e3d90fd5b8280fd5b634e487b7160e01b5f52601160045260245ffd5b63244a822560e11b8352600483fd5b985095506080883d6080116113d2575b816113a860809383611b63565b810103126113555787519760208101516001600160801b038116036113645760400151958b611140565b3d915061139b565b6040513d84823e3d90fd5b634e487b7160e01b84526041600452602484fd5b6114069192505f90611b63565b5f908a610fa6565b6040513d5f823e3d90fd5b5f80fd5b63013840ad60e51b5f5260045ffd5b90508015611445576203376f190760020b15158a610f51565b634e487b7160e01b5f52601260045260245ffd5b9050801561144557806201d4c00760020b151590610f4a565b90506020813d6020116114a6575b8161148d60209383611b63565b8101031261141957518060020b8103611419578a610f3a565b3d9150611480565b60249197506114d4602091823d84116114dc575b6114cc8183611b63565b810190611b85565b979150610f0b565b503d6114c2565b630188c99160e11b5f5260045ffd5b61150b915060203d6020116114dc576114cc8183611b63565b8a610eb8565b6303e67ae160e21b5f5260045ffd5b637cb5018b60e11b5f5260045ffd5b634e487b7160e01b5f52604160045260245ffd5b909192939750899c50604051602081019082825285603482015289605482015260548152611572607482611b63565b519020976040516020810160ff60f81b81528560218301528a6035830152846055830152605582526115a5607583611b63565b905190206001600160a01b03169d8e10806115dd575b6115cb5760010193929190610bfb565b50505050505060018a80808080610c05565b508d3b156115bb565b63216e38bd60e21b5f5260045ffd5b50600a8211610b02565b63ae92135760e01b5f5260045ffd5b508115610af3565b34611419576020366003190112611419576004356009548110156114195761163f602091611adc565b905460405160039290921b1c6001600160a01b03168152f35b3461141957604036600319011261141957611671611ab0565b611679611ac6565b6001600160a01b039182165f908152600760209081526040808320949093168252928352819020549051908152f35b34611419576020366003190112611419576116c1611ab0565b6116c961342d565b6001600160a01b0316801561171057600380546001600160a01b031916821790557fb141872ee67913e1bc546464f29b6b07a65159d45c6af64fdecf8b4129157faf5f80a2005b63d92e233d60e01b5f5260045ffd5b34611419576020366003190112611419576004358060020b809103611419575f811215611aaa57805f03905b620d89e88211611a9b576001821615611a89576001600160881b036ffffcb933bd6fad37aa2d162d1a5940015b169160028116611a6d575b60048116611a51575b60088116611a35575b60108116611a19575b602081166119fd575b604081166119e1575b608081166119c5575b61010081166119a9575b610200811661198d575b6104008116611971575b6108008116611955575b6110008116611939575b612000811661191d575b6140008116611901575b61800081166118e5575b6201000081166118c9575b6202000081166118ae575b620400008116611893575b620800001661187a575b5f1261186c575b60209063ffffffff8116611864575f905b60ff60018060a01b03921690831c0116604051908152f35b60019061184c565b8015611445575f190461183b565b6b048a170391f7dc42444e8fa290910260801c90611834565b6d2216e584f5fa1ea926041bedfe9890920260801c9161182a565b916e5d6af8dedb81196699c329225ee6040260801c9161181f565b916f09aa508b5b7a84e1c677de54f3e99bc90260801c91611814565b916f31be135f97d08fd981231505542fcfa60260801c91611809565b916f70d869a156d2a1b890bb3df62baf32f70260801c916117ff565b916fa9f746462d870fdf8a65dc1f90e061e50260801c916117f5565b916fd097f3bdfd2022b8845ad8f792aa58250260801c916117eb565b916fe7159475a2c29b7443b29c7fa6e889d90260801c916117e1565b916ff3392b0822b70005940c7a398e4b70f30260801c916117d7565b916ff987a7253ac413176f2b074cf7815e540260801c916117cd565b916ffcbe86c7900a88aedcffc83b479aa3a40260801c916117c3565b916ffe5dee046a99a2a811c461f1969c30530260801c916117b9565b916fff2ea16466c96a3843ec78b326b528610260801c916117b0565b916fff973b41fa98c081472e6896dfb254c00260801c916117a7565b916fffcb9843d60f6159c9db58835c9266440260801c9161179e565b916fffe5caca7e10e4e61c3624eaa0941cd00260801c91611795565b916ffff2e50f5f656932ef12357cf3c7fdcc0260801c9161178c565b916ffff97272373d413259a46990580e213a0260801c91611783565b6001600160881b03600160801b611778565b6333a3bdff60e21b5f5260045ffd5b8061174b565b600435906001600160a01b038216820361141957565b602435906001600160a01b038216820361141957565b600954811015611af45760095f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b9181601f840112156114195782359167ffffffffffffffff8311611419576020838186019501011161141957565b9190820391821161136857565b908060209392818452848401375f828201840152601f01601f1916010190565b90601f8019910116810190811067ffffffffffffffff82111761152f57604052565b9081602091031261141957516001600160a01b03811681036114195790565b6001600160a01b039081165f9081526005602052604090208054909116158015611c59575b611c5457600201546040516331a9108f60e11b815260048101919091526020816024817f00000000000000000000000073991a25c818bf1f1128deaab1492d45638de0d36001600160a01b03165afa90811561140e575f91611c35575b506001600160a01b0316301490565b611c4e915060203d6020116114dc576114cc8183611b63565b5f611c26565b505f90565b50600281015415611bc9565b611c0080604051611c768282611b63565b36903760405190810181811067ffffffffffffffff82111761152f5760405273473d3a2005499301dc353afa9d0c9c5980b5188c8152739dbfded199ee3a6b291c223e65f97d387156aada602082015273c9d46b11f3b1bbc85ebedfffca09707f8f28dca1604082015273023ab8e20a4682d315daef4c91db96bd77934d6660608201527351a58f289a22a01c1ec74645c08938ecd3cf2444608082015273036dae2378752c76f4e7fa7e2f5882877b86e4d260a082015273e24da1c8f33e1dd8b7993b8b028c7109698ddaa560c0820152730f76892875ab65dc6232dba22fb5bb5d39b8fac860e0820152733391a39a1b508e54a361924a26056c01c1c2c07d61010082015273e1412eb3a56502c5322eddf4fd6b63097fe9f08e610120820152738300f444462e55d11dba5823a1584badfc293fd961014082015273cc768421671c77b2af2998a9bbd59374503938e5610160820152734ee12c95dea425d7c1d8e3f0239416a128a68a68610180820152738c2bbc706174daa948a7f2c26c234415ec289c8c6101a082015273f00408ddcaf624129cc0d08aa122a7abe1f2ef316101c0820152733310fd13c6c55f054cc128439e1e51cd0cb16fed6101e0820152736c795be0a4887816ce761d41e482fcf4fbca9963610200820152735fa57fcaf86e137cb8185c4cb2c01ea7b5b14cfb610220820152738d7bbfa0506ea95c73d864310818acc3e5fa05d9610240820152734032ab8d5cced1444240c7b973f36d712981fb0061026082015273490ecb092c05b37834fd5e8eaacfd1037884581e6102808201527394aa50fe3c1ad32b0419004eee4f278ca39088766102a082015273c2ef1173a4b051bbcc4474c407bbb2ac7e02e3636102c082015273bd6b8d8fa94f7307840252548549b56a33c980546102e082015273d171ebe9d3c1e55d918563107b0b7782948dd52c61030082015273931bd858fd7bc2960f51a42489b84805881036cf6103208201527324bd6c97ffe8696d2c35cd200823caf839e4bd66610340820152736e2d5a559955e0d58c61961fe449dcd415c0000061036082015273096b405c3a81e68235d43fec2b41c28cb7248f30610380820152730cef7feff37208e1295ac6537445a9b5bc566fd56103a082015273b8e134b0c9b82914042e03e1b8a07dd0b912bb986103c082015273ebe7e229783dc3fadfa4dd8b2e3c42e5e91803376103e082015273061825a9195a2fb526735032fcac4ef58c6e52e46104008201527312fba237ac57b408efdbe63c0380ca17ed70b3b1610420820152737a2363a401b2340c7941dd2eeff0196a5078d2e661044082015273c325a84c48a849bcb6fbdf936b71a628ff1aa53061046082015273e475cd3f0d0a77ec581bb6540abef60b0f3f0d57610480820152731466f5596c439142b6f39723eed27c117a97f8ed6104a082015273a41d7cca4f220c286cf1b6d408882aca4dd3130d6104c0820152735edf27efd02421afed92e3cad25b7f42f6252be86104e082015273896c20da40c2a4df9b7c98b16a8d5a95129161a5610500820152739897b49174dc565730ef1d116d80081574ccb3ec61052082015273a4beaea04ee42f451f38c771842489d7649b95f2610540820152733cdf6e157a41995929af82c60bf4d8903225ec37610560820152737b64af79bef42eeb1f210b28a21af075e4aa927861058082015273eb89055e16ae1c1e42ad6770a7344ff5c7b4f31d6105a082015273f7a934528d38e2f2865a7cd30c335c6d115928b86105c082015273e725fda6f6eae408242c2860832f9249777730fb6105e082015273ca1a2fb7f3179d887504966b25d1606978adcd42610600820152739224bbb4e0fbe2f2f8fab55debc41eb21fdfb80461062082015273170332b75c0859a39bf7288f6cbf0db94bb1f5676106408201527370ad955d5f34991e81dad7ce2bbe418f8d5edc076106608201527326dd4199269bec9457f84adb029db917a910c711610680820152739023ef16968ffea318838a223ef2a79bd9f99f886106a082015273f100af33f90445d1d482fb63df3f6cdb475eeb0f6106c082015273cc7b0969e8f622d8435b4ba34a47d70788e87a926106e082015273e0e8c1d735698060477e79a8e4c20276fc2ec7a7610700820152732a93e999816c9826ade0b51aaa2d83240d8f459661072082015273d3a71f80906876d063321ccb125f2f214993de1761074082015273c1165124be8dc53a3826a1aa1b6643e9138d167c6107608201527393c883963af898ab7c41ef9250f9eed71506eb5261078082015273c4ed938caeb36008493aa2e327140a8a3324d1936107a082015273a96f56923ecaae76dc3601ba4e718bf8a5eb60876107c082015273326ef9fa575a92090d8dea0b1f053afca64fb19b6107e0820152732d2f80ecb07f01532c044d1423bb930f9ba4f70061080082015273b4829baf3c6d92c943425feb493e40bf7f0100d8610820820152734d0e5759e4f2af31b93b25277b77b7c59dbb1f9c610840820152739ba457f105bffac35d67138fecb32a86428c02a261086082015273b226f97bc5b01978848dc440b40c70faea7c006e61088082015273d4229d8166dbaa45689589d59fa968abc840b20f6108a0820152733e962421b0fa8ded5b36cf9bd65cb5f8d35d19396108c08201527381606a4fbd0f2a3c601d6b215ed1232674c94d7f6108e08201527393585d7f5f15d8bc67f41a12d2b3e3966a1ee6a0610900820152735388668c4fa8da7f756ef8498ff24d799999999961092082015273878a051559152383fbd35315eb03f3ef5fbf76a661094082015273371903abb32f5f69b536b77495e92adedfea25da61096082015273cb099f7d28dc611bde3b0f58e9194b621eeee8ed61098082015273eb1222a0c07d4e62b0235d8b4b3e7e617d259be26109a082015273e5e9ffe707ee071998340972af6fb178f5c64ba66109c082015273cc5ecdfc4f4b81e3363e6417031a4e3e3186a2f56109e082015273f78b066050e00fdb9b980e265aa9f317ef4b947c610a0082015273db7bdc871f95773853d2b0230d30179b980570b2610a2082015273d3358b1f39a6a71911c6e33717d185f99d43e80d610a4082015273da9f482ea717384af879597303e8b67968afcde2610a60820152735a8116f07937394e6ac2a51995ab6a054c08bf9e610a8082015273745d81601ab13c63ef200848003d548514c9eeb9610aa0820152735ab2d1f5069dd2f9aeec3b0a8e923b1cdbe7fc44610ac0820152735d802e2fe48392c104ce0401c7eca8a4456f1f16610ae082015273e0d72c0b3787ccabdb3483c44fca088d14ff04bf610b0082015273877af245c61289b24f0c619a4346cdbc68f1aaac610b208201527355906f38ff30e606908f575eefb634e7a5c22b7a610b4082015273454685dec7796c2c747294f7aa7a30b2c5ab05f7610b608201527338e47fece3ea323e864c65410f6458c820eaa897610b808201527304b436555dc69ea4bf8ba50d8c591e60443b3ff9610ba082015273c7d75ccdad8c368382e490ffd64b7ee2c2a0bb62610bc082015273037e6b68ca866598d464a370afa060e4583aa0b8610be082015273bd28edf53231cd121a963b4b119d3cc4cb3a368a610c00820152735acabc3222a7b74884bec8efe28a7a69a7920818610c20820152737e8fb0392542812476d9f2d0d71c01d1fa0776c5610c40820152737b3d8e939ee08b52d06ab5e6f85791a6007e8d61610c6082015273fe277aa25a4f65a182c0ec135854794eb7131e79610c80820152733f1c0ea76342cc3427962452891f8de8649a301b610ca0820152739f041fbbc6fd007115dae9bd1ce6001b26747797610cc082015273fe5573c66273313034f7ff6050c54b5402553716610ce08201527306970464c8b936cda744a454a33f2206dbbbfe49610d0082015273ec8b6b6ee8dc5c6631747bdc6b1400aff08829fd610d208201527326b834a643deb024c69d72f552dd4f043f546b67610d4082015273ff9f20367488f3386a97bc3897798b0e8bd1b2da610d608201527341ccc209d3ba4e81ef0c1fcb6d191127fb5b42f5610d8082015273bc5e88747673275d2c7e5dd9c1295a4d728dede6610da082015273347ffc6db9acc54ac2019795173b9599e8b82bd9610dc08201527357825f68fc7b32eaaa1e90db1fd6cd997b5a4035610de0820152730a6ae2a16564109cefc178f6df7d98dd60cb6d5c610e0082015273fe97f3ba5da378cd83f94b02de8358045491d48f610e20820152736994aa3c83455705a514798fc29aff6d94d06da2610e40820152732b614bf0cff1dff5d099f88a98ae449604379bc2610e608201527354d209d9d224a615e0e5f0476644886897b75e45610e8082015273c4cac68f2ce80c328dabcfee4bebc48ca34b66e6610ea0820152731d2a6f8dbe29dfb5bf9ad99894a3ecfc8602e226610ec082015273e18c8685818cb936dc2448be33349da61b412a4d610ee0820152739a1ee67e454bb963183884e7e2872fc0016613d3610f0082015273a12cd8eb1f533255aa252655e456b8c48e9c3d52610f2082015273dd6f338b91f40e5a02c468b7cb49cccc569a3134610f408201527355fade80e573c4594b0dd73041297024f1f2ee95610f60820152739631335762e3603d2a7507d84838aa3236d52745610f80820152731e82cdc70375fff785b695b38976b83b79a30c2f610fa0820152738d12b8c3bef358d1901d891a74fa801aba2b79b0610fc08201527376a280376c5332abbbae1786a73c70116906e757610fe08201527349b3e70dfc8b18654f5335532c17406794ac5ddd61100082015273d1d0675d425d33d429c1de0ac10a9b3b30b34168611020820152735250dbcf6ac11c4c2cbd8dcaf5a6d019f3268ea86110408201527395701259b045f972b06089e5ba498d463f627aa261106082015273a866c5adddc1c3570b6328491b510deefa374e0d61108082015273fe7adaf3fac1fb7873f7aafbe21c0c7e83ea3bcb6110a08201527307591d902e68503c113ac4beca8abb3e3f6b0ab36110c0820152733d06315c94ac30b6061c91caf748fc2db04a89f46110e082015273904a5d05d72a0575c6a60f7de7566abc2ac331e2611100820152733a9f45ac308ccc0a1a48b0f9e2f8ce859a0039ea61112082015273e7e3773235a7ee4e3b3c1f51a4b516abe888bee6611140820152731fa8bbd3f95f89958930450ee15535558888888861116082015273fea3157ff571174f05fc86af3caee3b870a8495a611180820152734d9644d05fe2123b4eafa8d7fd31b0ea430726f36111a0820152731d4b9b250b1bd41daa35d94bf9204ec1b0494ee36111c082015273dc6b9d500d26ac3dd43f783f4ada4d6c372052326111e0820152736078ee8a93697c6d67863fcbff77141d9ab358b2611200820152734fbbc9ef478f0eefe88ebd499a598d382cd2c94f611220820152734b10707123c79f6e99be486dcd95d60323988d7661124082015273da8e6446c8e2c55a43599cf4f461adbfff56b31161126082015273a83b73f5644cde337b61da79589f10ea1554881161128082015273e6a5f1690fcda05d9ba0a663b6e7ddf3c97eb7b16112a082015273ecb7208b4eba833001e0766f036fe5e8e76570396112c082015273e33b746a030c3b3c512d274b05ea6e40772cf2126112e082015273ddac928a240bdace3994c2cc0783d4e29a0021276113008201527307cdaf0140c60a0c34681065abf49bb8d85b8cbe6113208201527355e31160cd170661a887f31b9f6228e5e566a25361134082015273b90d9ea599c2634069ae4d5eecc5ab7234a81a0561136082015273b2d1af0746c410e146272e804b1741f07f83b851611380820152732f84ebb2f7f8edcf8e83a75a12f32bd8d99de3e06113a082015273683035da6b84ce48421534c1d3d160a8487cb9bb6113c08201527392c371744e71dbe58c603661ba8784fd76472e1b6113e08201527381b24791bc6c6713adf55c4f135f13639e92e5ae6114008201527399514773a40f64e52ae3014c7836cf0e703dd0b16114208201527394318ed124785b5910d8e456bf0ca50aaf27835f611440820152730f84d2da979180394fbf9c4499febd0f602a676761146082015273d611a3350321558bda7d15da88e4b74eaf4c8986611480820152730b1811b93e1baaf26f07a7b923d26ec1b5a198626114a08201527328d3bdece9a0c7f54687f734fa73fba04ecf57856114c0820152739d98e11bdfbe185deb3cc4f63dc0a6a867c03e1c6114e082015273af82a3e8cd907687f717eb93c76865ae94e091f9611500820152735f9bc316d8473d8c6634bd26f3e0932cd6bf07186115208201527394878116844aec4c73a08f295a54c767444027426115408201527361fd0d043d519f5a2bd05785000f30db9680942961156082015273b4c77c4f09ce11ade1fe64f2221492d6054eab5c61158082015273ec82fa0b5956f0fe2c4ab4dd12b45141277873506115a082015273c71b2c6b22b64c281555de040b6079e6322913d36115c082015273e540a8d94bd379c4d9c0478c8fe9f7fe7f0b06e16115e082015273d03353d8a531a7b05509f35fadef3e042188bdb5611600820152734a30496554ef401e4b687189f7df6efe4b3e024961162082015273758e83c114e36a28ca1f31c4d2adb5ec7c04c5786116408201527311db1321c3f926334eb155d5fe704f6b2ff6a2f961166082015273679f1c7de559cf077af7bff879e8e8fed76a0b58611680820152734f85b1cae69aba3582acc11d0becf2a01260554f6116a0820152730b3edd0d0bf7c6281a7f8ae5a5630defb94ae78e6116c082015273664d6645a04be9e27a8b33088f85025f29d45dc16116e082015273bac453b9b7f53b35ac906b641925b2f5f2567a8961170082015273f50f0c707df28cbe8dfa22f127c57a2aab1ea3db611720820152732190d4ee2bfc8883c3d71f4b5f41acd7a7287ff561174082015273f41e3186861afb9840ea3c87f00366440a64832061176082015273085111103c78e708199e1779789eefe9529d5d3a611780820152731df3160f73fd6c1bec394c51fc20b7b2a91d63306117a08201527378f210557fcd6663f162c75ed0d96108e42e4f9c6117c082015273e28601398a5448d1147e6e8b0e0c6d686f0d216d6117e082015273ec9e512fe7e90134d8ca7295329ccb0a57c91ecb61180082015273bf004bff64725914ee36d03b87d6965b0ced49036118208201527313267f77e7241db36f9ee3418dd3069bbc91f2b2611840820152733b6b2a0cc5be24f04e9239e3340e2019c2b5af8861186082015273f10ba5ab6d29818d387b5af3faf8e1050275498861188082015273b3cee92c7cd9954c1b52adc7ff5c9bf1a3a723d66118a082015273ab91d89f76c3409ab65c2483273e081d182d27566118c0820152738d5624fa29526c879a1ca7560961e4c5a08089ae6118e082015273d5ff53f48f14e9409b581e41a4cddfe0e97dc72461190082015273d717499568146195938cdcdb4ab8996e3da5491c611920820152734384b10fcdbc8996612f07ec5c219b72f924712f611940820152737e5ce10826ee167de897d262fcc9976f609ecd2b61196082015273d41feaa24dede516a501862cf1f376defb811772611980820152737a44b4588d9fda6f494bbe4cab27ac604fd9fe6f6119a0820152733475831749ea6c9992e638d01427453b9cc83a126119c0820152735865363bb04450ab313dcd2e71a189efb3c31e416119e08201527377a692e79fff538aa4c4101aefdbc8f724b4f54f611a0082015273db1b769d9d10ad6f5698529e3277d434ecec5124611a208201527322a8680e9e1d883dd617428748f599c9fe73e424611a4082015273cef99ab15ef93ba9f523e57bf8039a19f1cea636611a6082015273b5168bd818d3c5278377b38b00c3d0adc50b092c611a8082015273253d32965d2e39e46dd7a2fd052fea1aa189c163611aa082015273f8e9a3e9b4054d1ae3eee530c1b558885cdc6d9f611ac08201527313a7d2fb3f73b57ef539c35c4ec59ed49b1833ca611ae0820152732f43eedaee56684b3d5885c98f22aa5abf200e03611b00820152733ddb3571e81e123dbc74c1f790c33576cd66403d611b2082015273d3abaa759af897122c876b87cf386f748cb213a8611b40820152734d68d0ebc52ce41f2ed057f926960df89b0455f9611b6082015273fe631cd3c9f7e879f936515265302677805f87b9611b808201527353af0d5f5fe42469a5bcfed64dff77763c8650d3611ba082015273077b9981bc8a2ca417cea41861111da63266988b611bc08201527376492754a0bebdbdb3b533012239dcb327674042611be082015290565b5f546001600160a01b0316330361344057565b63118cdaa760e01b5f523360045260245ffd5b60028054146134625760028055565b633ee5aeb560e01b5f5260045ffd5b60ff60015460a01c1661348057565b63d93c066560e01b5f5260045ffd5b9190820180921161136857565b6001600160a01b039081165f81815260056020526040902080549093919216156137bf57600283015491604051926080840184811067ffffffffffffffff82111761152f57604090815290845230602085019081526001600160801b0385830181815260608701828152845163fc6f786560e01b81529751600489015292516001600160a01b0390811660248901529051821660448801529151166064860152849060849082905f907f00000000000000000000000073991a25c818bf1f1128deaab1492d45638de0d3165af192831561140e575f905f94613785575b507f0000000000000000000000000bd7d308f8e1639fab988df18a8011f41eacad736001600160a01b031682111561378057925b80938095811580156136ad575b5082159081156135f9575b50506040907f251551588ab2fefc5204a992ffe52b797e42bee3b0359226b84003bece36a0b69282519182526020820152a2565b919092612328810293818504612328141715611368575f85815260076020908152604080832095546001600160a01b0316835294905283902080547f251551588ab2fefc5204a992ffe52b797e42bee3b0359226b84003bece36a0b695613674926127109091049161366c90839061348f565b905582611b36565b5f868152600760209081528582206003546001600160a01b031683529052849020805490916136a29161348f565b9055928192506135c5565b6123288302908382046123281417156113685761271090046136cf8184611b36565b5f86815260066020908152604080832086546001600160a01b031684529091529020805491929161370190839061348f565b90555f8681526006602090815260408083206003546001600160a01b031684529091529020805461373390849061348f565b905560018060a01b038354165f52600860205261375560405f2091825461348f565b905560018060a01b03600354165f52600860205261377860405f2091825461348f565b90555f6135ba565b6135ad565b9350506040833d6040116137b7575b816137a160409383611b63565b810103126114195760208351930151925f613579565b3d9150613794565b6306c3ce4560e41b5f5260045ffd5b6001600160a01b039081165f81815260066020908152604080832094861680845294825280832054848452600783528184209584529490915290205492949390919081158080613b5f575b613b50575f8481526006602090815260408083206001600160a01b038b16845290915281205515613b2a575b5f93849181613901575b505061387e6040917f916d60cf5360c058722c013df4e95816ae5ddf71f4c218eb89d1afb76e047bb89361348f565b958661389f575b815187815260208101959095526001600160a01b031693a3565b815163a9059cbb60e01b60208201526001600160a01b0382166024820152604480820189905281526138fc906138d6606482611b63565b7f0000000000000000000000000bd7d308f8e1639fab988df18a8011f41eacad73613b67565b613885565b5f8581526007602090815260408083206001600160a01b038c8116855292528220919091559192507f000000000000000000000000caf681a66d020601342297493863e78c959e5cb290911690613959838387613c78565b6040519060e0820182811067ffffffffffffffff82111761152f5760409081528683526001600160a01b037f0000000000000000000000000bd7d308f8e1639fab988df18a8011f41eacad73811660208086019182526127108685019081523060608801908152608088018a815260a089019788525f60c08a0181815297516304e45aaf60e01b81529951871660048b01529451861660248a0152915162ffffff1660448901525184166064880152516084870152935160a486015291511660c4840152829060e4908290865af15f9181613af6575b50613ac25750847f916d60cf5360c058722c013df4e95816ae5ddf71f4c218eb89d1afb76e047bb893604093613a6861387e9488613bbf565b5f878152600760209081528682206001600160a01b038d16808452908252918790208390558651928352909188917fdaee5f8848631e54c79192245d9c6fbb4d7e9854c2f0624277f6885067fde5af91a35b93509161384f565b7f916d60cf5360c058722c013df4e95816ae5ddf71f4c218eb89d1afb76e047bb89395506040925061387e91508095613aba565b9091506020813d602011613b22575b81613b1260209383611b63565b810103126114195751905f613a2f565b3d9150613b05565b60018060a01b0386165f52600860205260405f20613b49838254611b36565b9055613845565b631f2a200560e01b5f5260045ffd5b508415613819565b905f602091828151910182855af11561140e575f513d613bb657506001600160a01b0381163b155b613b965750565b635274afe760e01b5f9081526001600160a01b0391909116600452602490fd5b60011415613b8f565b6040519060205f8184019463095ea7b360e01b865260018060a01b03169485602486015281604486015260448552613bf8606486611b63565b84519082855af15f513d82613c53575b505015613c1457505050565b613c4c613c51936040519063095ea7b360e01b602083015260248201525f604482015260448152613c46606482611b63565b82613b67565b613b67565b565b909150613c7057506001600160a01b0381163b15155b5f80613c08565b600114613c69565b60405163095ea7b360e01b60208083019182526001600160a01b0385166024840152604480840196909652948252929390925f90613cb7606486611b63565b84519082855af15f513d82613d12575b505015613cd357505050565b60405163095ea7b360e01b60208201526001600160a01b0390931660248401525f6044808501919091528352613c5192613c4c90613c46606482611b63565b909150613d2f57506001600160a01b0381163b15155b5f80613cc7565b600114613d2856fe60a0604052346103a257610b0c80380380610019816103a6565b9283398101906060818303126103a25780516001600160401b0381116103a257826100459183016103cb565b60208201519092906001600160401b0381116103a2576040916100699184016103cb565b91015182516001600160401b0381116102b357600354600181811c91168015610398575b602082101461029557601f8111610335575b506020601f82116001146102d257819293945f926102c7575b50508160011b915f199060031b1c1916176003555b81516001600160401b0381116102b357600454600181811c911680156102a9575b602082101461029557601f8111610232575b50602092601f82116001146101d157928192935f926101c6575b50508160011b915f199060031b1c1916176004555b3360805233156101b35760025481810180911161019f57600255335f525f60205260405f208181540190556040519081525f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60203393a36040516106ef908161041d82396080518161058a0152f35b634e487b7160e01b5f52601160045260245ffd5b63ec442f0560e01b5f525f60045260245ffd5b015190505f8061011a565b601f1982169360045f52805f20915f5b86811061021a5750836001959610610202575b505050811b0160045561012f565b01515f1960f88460031b161c191690555f80806101f4565b919260206001819286850151815501940192016101e1565b60045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f830160051c8101916020841061028b575b601f0160051c01905b8181106102805750610100565b5f8155600101610273565b909150819061026a565b634e487b7160e01b5f52602260045260245ffd5b90607f16906100ee565b634e487b7160e01b5f52604160045260245ffd5b015190505f806100b8565b601f1982169060035f52805f20915f5b81811061031d57509583600195969710610305575b505050811b016003556100cd565b01515f1960f88460031b161c191690555f80806102f7565b9192602060018192868b0151815501940192016102e2565b60035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b601f830160051c8101916020841061038e575b601f0160051c01905b818110610383575061009f565b5f8155600101610376565b909150819061036d565b90607f169061008d565b5f80fd5b6040519190601f01601f191682016001600160401b038111838210176102b357604052565b81601f820112156103a2578051906001600160401b0382116102b3576103fa601f8301601f19166020016103a6565b92828452602083830101116103a257815f9260208093018386015e830101529056fe6080806040526004361015610012575f80fd5b5f3560e01c90816302669b52146105785750806306fdde03146104a6578063095ea7b31461042457806318160ddd1461040757806323b872dd14610327578063313ce5671461030c57806342966c681461026c57806370a082311461023557806395d89b411461011a578063a9059cbb146100e95763dd62ed3e14610095575f80fd5b346100e55760403660031901126100e5576100ae6105e3565b6100b66105f9565b6001600160a01b039182165f908152600160209081526040808320949093168252928352819020549051908152f35b5f80fd5b346100e55760403660031901126100e55761010f6101056105e3565b602435903361060f565b602060405160018152f35b346100e5575f3660031901126100e5576040515f6004548060011c9060018116801561022b575b602083108114610217578285529081156101fb57506001146101a6575b50819003601f01601f191681019067ffffffffffffffff8211818310176101925761018e829182604052826105b9565b0390f35b634e487b7160e01b5f52604160045260245ffd5b905060045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5f905b8282106101e55750602091508201018261015e565b60018160209254838588010152019101906101d0565b90506020925060ff191682840152151560051b8201018261015e565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610141565b346100e55760203660031901126100e5576001600160a01b036102566105e3565b165f525f602052602060405f2054604051908152f35b346100e55760203660031901126100e55760043533156102f957335f525f60205260405f20548181106102e05790805f923384528360205203604083205580600254036002556040519081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60203392a3005b63391434e360e21b5f523360045260245260445260645ffd5b634b637e8f60e11b5f525f60045260245ffd5b346100e5575f3660031901126100e557602060405160128152f35b346100e55760603660031901126100e5576103406105e3565b6103486105f9565b6001600160a01b0382165f818152600160208181526040808420338552909152909120549193604435939290918101610387575b5061010f935061060f565b8381106103ec5784156103d95733156103c65761010f945f52600160205260405f2060018060a01b0333165f526020528360405f20910390558461037c565b634a1406b160e11b5f525f60045260245ffd5b63e602df0560e01b5f525f60045260245ffd5b8390637dc7a0d960e11b5f523360045260245260445260645ffd5b346100e5575f3660031901126100e5576020600254604051908152f35b346100e55760403660031901126100e55761043d6105e3565b6024359033156103d9576001600160a01b03169081156103c657335f52600160205260405f20825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b346100e5575f3660031901126100e5576040515f6003548060011c9060018116801561056e575b602083108114610217578285529081156101fb57506001146105195750819003601f01601f191681019067ffffffffffffffff8211818310176101925761018e829182604052826105b9565b905060035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5f905b8282106105585750602091508201018261015e565b6001816020925483858801015201910190610543565b91607f16916104cd565b346100e5575f3660031901126100e5577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b03821682036100e557565b602435906001600160a01b03821682036100e557565b6001600160a01b03169081156102f9576001600160a01b03169182156106a657815f525f60205260405f205481811061068d57817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f84520360405f2055845f525f825260405f20818154019055604051908152a3565b8263391434e360e21b5f5260045260245260445260645ffd5b63ec442f0560e01b5f525f60045260245ffdfea2646970667358221220ba45f61159f6327f797015677286d8b1e80999043280cc231b5810a2bef5d5a164736f6c634300081c0033a2646970667358221220369ca9c9bd6658146e764f26c6dcf4455bd5b8fe7560a8fc68d2d34c2f32e19764736f6c634300081c0033
| Token | Symbol | Balance | Price | Value |
|---|---|---|---|---|
| Uniswap V3 Positions NFT-V1 (UNI-V3-POS) | UNI-V3-POS | 1 | — | — |
| Transaction Hash | Method | Block | Age | From | To | Type | Item | ||
|---|---|---|---|---|---|---|---|---|---|
| 0x6875e02d…e700b7 | Transfer | 34,259,827 | 6 days agoWed, 12 Aug 2026 05:02:21 UTC | 0x0000…0000 | IN | 0xcc5a…bae6 | Mint | Uniswap V3 Positions NFT-V1 (UNI-V3-POS) #665035 |
| Type | Age | Block | Details |
|---|---|---|---|
| no cross-chain L1↔L2 transactions for this address | |||
| Txn Hash | Age | Event | Topics / Data |
|---|---|---|---|
| 0x6875e0…e700b7 | 6 days agoWed, 12 Aug 2026 05:02:21 UTC | 0x7ab83f…a77b | [0] 0x000000000000…afdabb88 [1] 0x000000000000…d184e692 data: 0x000000000000000000…fffe9d50 |
| 0x6875e0…e700b7 | 6 days agoWed, 12 Aug 2026 05:02:21 UTC | 0x000b9c…2e94 | [0] 0x000000000000…afdabb88 [1] 0x000000000000…82b3cc06 [2] 0x000000000000…d184e692 data: 0x000000000000000000…00000000 |
| 0x6875e0…e700b7 | 6 days agoWed, 12 Aug 2026 05:02:21 UTC | 0xe7e2cf…b250 | [0] 0x000000000000…afdabb88 data: 0x000000000000000000…000000e0 |
| 0x6875e0…e700b7 | 6 days agoWed, 12 Aug 2026 05:02:21 UTC | 0xe0c3c6…b12a | [0] 0x000000000000…afdabb88 [1] 0x000000000000…82b3cc06 data: 0x000000000000000000…3a000000 |
| 0xc98a82…4af0ed | 7 days agoMon, 10 Aug 2026 20:27:05 UTC | 0x8be007…57e0 | [0] 0x000000000000…00000000 [1] 0x000000000000…82b3cc06 |
| Transaction Hash | Method | Block | Age | From | To | Amount | Token | ||
|---|---|---|---|---|---|---|---|---|---|
| 0x6875e02d…e700b7 | Transfer | 34,259,827 | 6 days agoWed, 12 Aug 2026 05:02:21 UTC | 0xcc5a…bae6 | OUT | 0x0000…0000 | 0.000000 STONKYARD | STONK YARD (STONKYARD) | |
| 0x6875e02d…e700b7 | Transfer | 34,259,827 | 6 days agoWed, 12 Aug 2026 05:02:21 UTC | 0xcc5a…bae6 | OUT | 0xc563…e692 | 699,999,999.999999 STONKYARD | STONK YARD (STONKYARD) | |
| 0x6875e02d…e700b7 | Transfer | 34,259,827 | 6 days agoWed, 12 Aug 2026 05:02:21 UTC | 0xcc5a…bae6 | OUT | 0x7649…4042 | 223,214.285714 STONKYARD | STONK YARD (STONKYARD) | |
| 0x6875e02d…e700b7 | Transfer | 34,259,827 | 6 days agoWed, 12 Aug 2026 05:02:21 UTC | 0xcc5a…bae6 | OUT | 0x077b…988b | 223,214.285714 STONKYARD | STONK YARD (STONKYARD) | |
| 0x6875e02d…e700b7 | Transfer | 34,259,827 | 6 days agoWed, 12 Aug 2026 05:02:21 UTC | 0xcc5a…bae6 | OUT | 0x53af…50d3 | 223,214.285714 STONKYARD | STONK YARD (STONKYARD) | |
| 0x6875e02d…e700b7 | Transfer | 34,259,827 | 6 days agoWed, 12 Aug 2026 05:02:21 UTC | 0xcc5a…bae6 | OUT | 0xfe63…87b9 | 223,214.285714 STONKYARD | STONK YARD (STONKYARD) | |
| 0x6875e02d…e700b7 | Transfer | 34,259,827 | 6 days agoWed, 12 Aug 2026 05:02:21 UTC | 0xcc5a…bae6 | OUT | 0x4d68…55f9 | 223,214.285714 STONKYARD | STONK YARD (STONKYARD) | |
| 0x6875e02d…e700b7 | Transfer | 34,259,827 | 6 days agoWed, 12 Aug 2026 05:02:21 UTC | 0xcc5a…bae6 | OUT | 0xd3ab…13a8 | 223,214.285714 STONKYARD | STONK YARD (STONKYARD) | |
| 0x6875e02d…e700b7 | Transfer | 34,259,827 | 6 days agoWed, 12 Aug 2026 05:02:21 UTC | 0xcc5a…bae6 | OUT | 0x3ddb…403d | 223,214.285714 STONKYARD | STONK YARD (STONKYARD) | |
| 0x6875e02d…e700b7 | Transfer | 34,259,827 | 6 days agoWed, 12 Aug 2026 05:02:21 UTC | 0xcc5a…bae6 | OUT | 0x2f43…0e03 | 223,214.285714 STONKYARD | STONK YARD (STONKYARD) | |
| 0x6875e02d…e700b7 | Transfer | 34,259,827 | 6 days agoWed, 12 Aug 2026 05:02:21 UTC | 0xcc5a…bae6 | OUT | 0x13a7…33ca | 223,214.285714 STONKYARD | STONK YARD (STONKYARD) | |
| 0x6875e02d…e700b7 | Transfer | 34,259,827 | 6 days agoWed, 12 Aug 2026 05:02:21 UTC | 0xcc5a…bae6 | OUT | 0xf8e9…6d9f | 223,214.285714 STONKYARD | STONK YARD (STONKYARD) | |
| 0x6875e02d…e700b7 | Transfer | 34,259,827 | 6 days agoWed, 12 Aug 2026 05:02:21 UTC | 0xcc5a…bae6 | OUT | 0x253d…c163 | 223,214.285714 STONKYARD | STONK YARD (STONKYARD) | |
| 0x6875e02d…e700b7 | Transfer | 34,259,827 | 6 days agoWed, 12 Aug 2026 05:02:21 UTC | 0xcc5a…bae6 | OUT | 0xb516…092c | 223,214.285714 STONKYARD | STONK YARD (STONKYARD) | |
| 0x6875e02d…e700b7 | Transfer | 34,259,827 | 6 days agoWed, 12 Aug 2026 05:02:21 UTC | 0xcc5a…bae6 | OUT | 0xcef9…a636 | 223,214.285714 STONKYARD | STONK YARD (STONKYARD) | |
| 0x6875e02d…e700b7 | Transfer | 34,259,827 | 6 days agoWed, 12 Aug 2026 05:02:21 UTC | 0xcc5a…bae6 | OUT | 0x22a8…e424 | 223,214.285714 STONKYARD | STONK YARD (STONKYARD) | |
| 0x6875e02d…e700b7 | Transfer | 34,259,827 | 6 days agoWed, 12 Aug 2026 05:02:21 UTC | 0xcc5a…bae6 | OUT | 0xdb1b…5124 | 223,214.285714 STONKYARD | STONK YARD (STONKYARD) | |
| 0x6875e02d…e700b7 | Transfer | 34,259,827 | 6 days agoWed, 12 Aug 2026 05:02:21 UTC | 0xcc5a…bae6 | OUT | 0x77a6…f54f | 223,214.285714 STONKYARD | STONK YARD (STONKYARD) | |
| 0x6875e02d…e700b7 | Transfer | 34,259,827 | 6 days agoWed, 12 Aug 2026 05:02:21 UTC | 0xcc5a…bae6 | OUT | 0x5865…1e41 | 223,214.285714 STONKYARD | STONK YARD (STONKYARD) | |
| 0x6875e02d…e700b7 | Transfer | 34,259,827 | 6 days agoWed, 12 Aug 2026 05:02:21 UTC | 0xcc5a…bae6 | OUT | 0x3475…3a12 | 223,214.285714 STONKYARD | STONK YARD (STONKYARD) | |
| 0x6875e02d…e700b7 | Transfer | 34,259,827 | 6 days agoWed, 12 Aug 2026 05:02:21 UTC | 0xcc5a…bae6 | OUT | 0x7a44…fe6f | 223,214.285714 STONKYARD | STONK YARD (STONKYARD) | |
| 0x6875e02d…e700b7 | Transfer | 34,259,827 | 6 days agoWed, 12 Aug 2026 05:02:21 UTC | 0xcc5a…bae6 | OUT | 0xd41f…1772 | 223,214.285714 STONKYARD | STONK YARD (STONKYARD) | |
| 0x6875e02d…e700b7 | Transfer | 34,259,827 | 6 days agoWed, 12 Aug 2026 05:02:21 UTC | 0xcc5a…bae6 | OUT | 0x7e5c…cd2b | 223,214.285714 STONKYARD | STONK YARD (STONKYARD) | |
| 0x6875e02d…e700b7 | Transfer | 34,259,827 | 6 days agoWed, 12 Aug 2026 05:02:21 UTC | 0xcc5a…bae6 | OUT | 0x4384…712f | 223,214.285714 STONKYARD | STONK YARD (STONKYARD) | |
| 0x6875e02d…e700b7 | Transfer | 34,259,827 | 6 days agoWed, 12 Aug 2026 05:02:21 UTC | 0xcc5a…bae6 | OUT | 0xd717…491c | 223,214.285714 STONKYARD | STONK YARD (STONKYARD) |
| Block | Age | Parent Transaction Hash | Type | Method | From | To | Value | |
|---|---|---|---|---|---|---|---|---|
| 34,259,827 | 6 days agoWed, 12 Aug 2026 05:02:21 UTC | 0x6875e0…e700b7 | CREATE2 | createCoin | 0xcc5a…bae6 | OUT | 0x0183…bb88 | 0 ETH |
| Transaction Hash | Method ? | Block | Age | From | To | Amount | Txn Fee ? | ||
|---|---|---|---|---|---|---|---|---|---|
| 0x6875e0…e700b7 | createCoin | 34,259,827 | 6 days agoWed, 12 Aug 2026 05:02:21 UTC | 0xc5f7…cc06 | IN | UniswapV3 | $0.000 ETH | 0.00048546 |