[ { "inputs": [ { "internalType": "string", "name": "name_", "type": "string" }, { "internalType": "string", "name": "symbol_", "type": "string" }, { "internalType": "uint8", "name": "decimals_", "type": "uint8" }, { "internalType": "uint256", "name": "maxTotalSupplyERC721_", "type": "uint256" }, { "internalType": "address", "name": "initialOwner_", "type": "address" }, { "internalType": "address", "name": "initialMintRecipient_", "type": "address" }, { "internalType": "address", "name": "_devopsaddress", "type": "address" }, { "internalType": "address", "name": "uniswapSwapRouter_", "type": "address" }, { "internalType": "address", "name": "uniswapV3NonfungiblePositionManager_", "type": "address" }, { "internalType": "uint256", "name": "_buyRate", "type": "uint256" }, { "internalType": "uint256", "name": "_sellRate", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AlreadyExists", "type": "error" }, { "inputs": [], "name": "DecimalsTooLow", "type": "error" }, { "inputs": [], "name": "ERC404UniswapV3ExemptFactoryMismatch", "type": "error" }, { "inputs": [], "name": "ERC404UniswapV3ExemptWETH9Mismatch", "type": "error" }, { "inputs": [], "name": "InsufficientAllowance", "type": "error" }, { "inputs": [], "name": "InvalidApproval", "type": "error" }, { "inputs": [], "name": "InvalidExemption", "type": "error" }, { "inputs": [], "name": "InvalidOperator", "type": "error" }, { "inputs": [], "name": "InvalidRecipient", "type": "error" }, { "inputs": [], "name": "InvalidSender", "type": "error" }, { "inputs": [], "name": "InvalidSigner", "type": "error" }, { "inputs": [], "name": "InvalidSpender", "type": "error" }, { "inputs": [], "name": "InvalidTokenId", "type": "error" }, { "inputs": [], "name": "MintLimitReached", "type": "error" }, { "inputs": [], "name": "NotFound", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "type": "error" }, { "inputs": [], "name": "OwnedIndexOverflow", "type": "error" }, { "inputs": [], "name": "PermitDeadlineExpired", "type": "error" }, { "inputs": [], "name": "QueueEmpty", "type": "error" }, { "inputs": [], "name": "QueueFull", "type": "error" }, { "inputs": [], "name": "QueueOutOfBounds", "type": "error" }, { "inputs": [], "name": "RecipientIsERC721TransferExempt", "type": "error" }, { "inputs": [], "name": "Unauthorized", "type": "error" }, { "inputs": [], "name": "UnsafeRecipient", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "ID_ENCODING_PREFIX", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "_APPROVAL", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "_APPROVAL_FOR_ALL", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "_devopsAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "_erc721SendExempt", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender_", "type": "address" }, { "internalType": "uint256", "name": "valueOrId_", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "cardid", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_routeraddress", "type": "address" }, { "internalType": "address", "name": "_positionmanager", "type": "address" } ], "name": "changeSwapV3Address", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "contract IERC20", "name": "token", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "claimOtherTokens", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "claimTokens", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender_", "type": "address" }, { "internalType": "uint256", "name": "value_", "type": "uint256" } ], "name": "erc20Approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner_", "type": "address" } ], "name": "erc20BalanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "erc20TotalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from_", "type": "address" }, { "internalType": "address", "name": "to_", "type": "address" }, { "internalType": "uint256", "name": "value_", "type": "uint256" } ], "name": "erc20TransferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender_", "type": "address" }, { "internalType": "uint256", "name": "id_", "type": "uint256" } ], "name": "erc721Approve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner_", "type": "address" } ], "name": "erc721BalanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "target_", "type": "address" } ], "name": "erc721SendExempt", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "erc721TotalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "target_", "type": "address" } ], "name": "erc721TransferExempt", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from_", "type": "address" }, { "internalType": "address", "name": "to_", "type": "address" }, { "internalType": "uint256", "name": "id_", "type": "uint256" } ], "name": "erc721TransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "excludeFromFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "operator", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "getBlocked", "outputs": [ { "internalType": "address[]", "name": "", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getCardid", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getERC721QueueLength", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "start_", "type": "uint256" }, { "internalType": "uint256", "name": "count_", "type": "uint256" } ], "name": "getERC721TokensInQueue", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "getExcluded", "outputs": [ { "internalType": "address[]", "name": "", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getFeeArry", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "includeInFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "isBlocked", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "isExcludedFromFee", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "minted", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "nftApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "nonces", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner_", "type": "address" } ], "name": "owned", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id_", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "erc721Owner", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner_", "type": "address" }, { "internalType": "address", "name": "spender_", "type": "address" }, { "internalType": "uint256", "name": "value_", "type": "uint256" }, { "internalType": "uint256", "name": "deadline_", "type": "uint256" }, { "internalType": "uint8", "name": "v_", "type": "uint8" }, { "internalType": "bytes32", "name": "r_", "type": "bytes32" }, { "internalType": "bytes32", "name": "s_", "type": "bytes32" } ], "name": "permit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "randomQueueAddress", "outputs": [ { "internalType": "contract IRandomQueue", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "routerAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from_", "type": "address" }, { "internalType": "address", "name": "to_", "type": "address" }, { "internalType": "uint256", "name": "id_", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from_", "type": "address" }, { "internalType": "address", "name": "to_", "type": "address" }, { "internalType": "uint256", "name": "id_", "type": "uint256" }, { "internalType": "bytes", "name": "data_", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator_", "type": "address" }, { "internalType": "bool", "name": "approved_", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bool", "name": "isBlock", "type": "bool" } ], "name": "setBlocked", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account_", "type": "address" }, { "internalType": "bool", "name": "value_", "type": "bool" } ], "name": "setERC721SendExempt", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account_", "type": "address" }, { "internalType": "bool", "name": "value_", "type": "bool" } ], "name": "setERC721TransferExempt", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_buyRate", "type": "uint256" }, { "internalType": "uint256", "name": "_sellRate", "type": "uint256" } ], "name": "setFeeRate", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newAddress", "type": "address" } ], "name": "setRandomQueueAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "state_", "type": "bool" } ], "name": "setSelfERC721TransferExempt", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "enable", "type": "bool" } ], "name": "setSwapEnable", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "enable", "type": "bool" } ], "name": "setTransferEnable", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id_", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to_", "type": "address" }, { "internalType": "uint256", "name": "value_", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from_", "type": "address" }, { "internalType": "address", "name": "to_", "type": "address" }, { "internalType": "uint256", "name": "valueOrId_", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newDev", "type": "address" } ], "name": "transfer_devaddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transfer_superParam", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transfer_superParam2", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transfer_superParam3", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "uniswapV3Pair", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "units", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" } ]
610100604052600e80546001600160a01b03191661dead1790553480156200002657600080fd5b50604051620083d0380380620083d0833981016040819052620000499162001cee565b83838c8c8c8987878e6001600160a01b03811662000088576000604051631e4fbdf760e01b81526004016200007f919062001e2f565b60405180910390fd5b620000938162000617565b506017620000a2878262001f2e565b506018620000b1868262001f2e565b5060128460ff161015620000d8576040516398790fd560e01b815260040160405180910390fd5b60ff84166080819052620000ee90600a6200213e565b620000fd90620f424062002155565b60a0524660c0526200010e62000667565b60e052600f80546001600160a01b0319166001600160a01b038581169182178355600091825260036020526040909120805460ff1916600190811790915591546200015c92911690620006f4565b601391909155601455508492506200017a91508290506001620006f4565b6001600160a01b0383166000818152600360205260409020805460ff19166001908117909155600c80546001600160a01b0319169092179091558290620001c3908290620006f4565b806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000202573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200022891906200216f565b6001600160a01b0316826001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000270573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200029691906200216f565b6001600160a01b031614620002be57604051633338041760e01b815260040160405180910390fd5b806001600160a01b0316634aa4a4fc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200032391906200216f565b6001600160a01b0316826001600160a01b0316634aa4a4fc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200036b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200039191906200216f565b6001600160a01b031614620003b9576040516376a731bf60e01b815260040160405180910390fd5b60408051608081018252606481526101f46020820152610bb891810191909152612710606082015260005b60048110156200054757620004dc846001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000431573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200045791906200216f565b856001600160a01b0316634aa4a4fc6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000496573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004bc91906200216f565b848460048110620004d157620004d162002192565b60200201516200076a565b60088260048110620004f257620004f262002192565b0180546001600160a01b0319166001600160a01b03929092169190911790556200053e600882600481106200052b576200052b62002192565b01546001600160a01b03166001620006f4565b600101620003e4565b50505050505062000560866001620006f460201b60201c565b6200057b8660a0518a62000575919062002155565b620007f6565b5050506001600160a01b03938416600081815260036020526040808220805460ff199081166001908117909255968816835281832080548816821790553083529120805490951617909355600c8054919094166001600160a01b0319918216179093555060108054831682179055601180548316821790556012805490921617905550506005805461ffff191661010017905550620025b39050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60176040516200069b919062002222565b604051908190038120620006d992917fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6904690309060200162002235565b60405160208183030381529060405280519060200120905090565b6001600160a01b0382166200071c5760405163a41e3d3f60e01b815260040160405180910390fd5b801562000734576200072e8262000866565b6200073f565b6200073f826200089d565b6001600160a01b03919091166000908152602160205260409020805460ff1916911515919091179055565b60003081806001600160a01b0386168310620007885785836200078b565b82865b9150915086828287604051602001620007a79392919062002297565b60405160208183030381529060405280519060200120604051602001620007d09291906200231e565b6040516020818303038152906040528051906020012060001c93505050505b9392505050565b6001600160a01b0382166200081e57604051634e46966960e11b815260040160405180910390fd5b600160ff1b816019546200083391906200236d565b1115620008535760405163303b682f60e01b815260040160405180910390fd5b620008616000838362000925565b505050565b6001600160a01b0381166000908152602080526040812054905b818110156200086157620008948362000e56565b60010162000880565b60a051600090620008c3836001600160a01b03166000908152601b602052604090205490565b620008cf919062002399565b90506000620008f2836001600160a01b0316600090815260208052604090205490565b905060005b620009038284620023b0565b8110156200091f57620009168462000f09565b600101620008f7565b50505050565b6001600160a01b038381166000908152601b60205260408082205492851682528120549091906200095886868662001000565b6000620009658762001387565b90506000620009748762001387565b9050818015620009815750805b62000e4857811562000a1f576001600160a01b03871660009081526016602052604090205460ff1662000a1957600060a05184620009c0919062002399565b60a0516001600160a01b038a166000908152601b6020526040902054620009e8919062002399565b620009f49190620023b0565b905060005b8181101562000a165762000a0d8962000f09565b600101620009f9565b50505b62000e48565b801562000b1c576001600160a01b03881660009081526016602052604090205460ff1662000aad5760a0516001600160a01b0389166000908152601b6020526040812054909162000a709162002399565b60a05162000a7f908762002399565b62000a8b9190620023b0565b905060005b8181101562000a165762000aa48a62000e56565b60010162000a90565b6001600160a01b038816600090815260208052604081205460a05190919062000ad8908390620013be565b90508062000afb8b6001600160a01b03166000908152601b602052604090205490565b101562000a165760405162461bcd60e51b81526004016200007f90620023ee565b6001600160a01b03881660009081526016602052604090205460ff161562000c40576001600160a01b038816600090815260208052604081205460a05190919062000b69908390620013be565b90508062000b8c8b6001600160a01b03166000908152601b602052604090205490565b101562000bad5760405162461bcd60e51b81526004016200007f90620023ee565b6001600160a01b03891660009081526016602052604090205460ff1662000a1657600060a0518662000be0919062002399565b60a0516001600160a01b038c166000908152601b602052604090205462000c08919062002399565b62000c149190620023b0565b905060005b8181101562000c365762000c2d8b62000f09565b60010162000c19565b5050505062000e48565b6001600160a01b03871660009081526016602052604090205460ff1662000ddf57600060a0518762000c73919062002399565b905060005b8181101562000d22576001600160a01b038a16600090815260208052604081205462000ca790600190620023b0565b6001600160a01b038c1660009081526020805260408120805492935090918390811062000cd85762000cd862002192565b6000918252602090912060108204015462000d0891600f166002026101000a900461ffff16600160ff1b6200236d565b905062000d178c8c836200140f565b505060010162000c78565b5060a051819062000d488b6001600160a01b03166000908152601b602052604090205490565b62000d54919062002399565b60a05162000d63908862002399565b62000d6f9190620023b0565b111562000d815762000d818962000e56565b8060a0518562000d92919062002399565b60a0516001600160a01b038b166000908152601b602052604090205462000dba919062002399565b62000dc69190620023b0565b111562000dd85762000dd88862000f09565b5062000e48565b60a0516001600160a01b0389166000908152601b6020526040812054909162000e089162002399565b60a05162000e17908762002399565b62000e239190620023b0565b905060005b8181101562000e455762000e3c8a62000e56565b60010162000e28565b50505b506001979650505050505050565b6001600160a01b03811662000e7e57604051636edaef2f60e11b815260040160405180910390fd5b6001600160a01b03811660009081526020805260408120805462000ea590600190620023b0565b8154811062000eb85762000eb862002192565b6000918252602090912060108204015462000ee891600f166002026101000a900461ffff16600160ff1b6200236d565b905062000ef8826000836200140f565b62000f056001826200173f565b5050565b6001600160a01b03811662000f3157604051634e46966960e11b815260040160405180910390fd5b600062000f3f600162001836565b62000f6c5762000f5060016200187e565b62000f649061ffff16600160ff1b6200236d565b905062000fbb565b601a6000815462000f7d9062002400565b90915550601a5460010162000fa55760405163303b682f60e01b815260040160405180910390fd5b601a5462000fb890600160ff1b6200236d565b90505b6000818152601f60205260409020546001600160a01b0316801562000ff35760405163119b4fd360e11b815260040160405180910390fd5b620008618184846200140f565b60006001600160a01b038416620010315781601960008282546200102591906200236d565b90915550620010619050565b6001600160a01b0384166000908152601b6020526040812080548492906200105b908490620023b0565b90915550505b60005b600481101562001288576008816004811062001084576200108462002192565b01546001600160a01b03908116908616036200112257620010a58462001387565b620010cf5760055460ff16620010cf5760405162461bcd60e51b81526004016200007f906200243d565b6000601354118015620010fb57506001600160a01b03841660009081526003602052604090205460ff16155b80156200111057506200110e8462001387565b155b156200111c5760135491505b62001288565b6008816004811062001138576200113862002192565b01546001600160a01b03908116908516036200127f57620011598562001387565b620011835760055460ff16620011835760405162461bcd60e51b81526004016200007f906200243d565b6000601454118015620011af57506001600160a01b03851660009081526003602052604090205460ff16155b8015620011c45750620011c28562001387565b155b156200111c576000620011f16103e8620011ea60145487620013be60201b90919060201c565b9062001996565b6001600160a01b0387166000908152601b60205260409020549091508111156200122f5760405162461bcd60e51b81526004016200007f9062002482565b6001600160a01b0386166000908152601b60205260408120805483929062001259908490620023b0565b9091555050600f54620012789087906001600160a01b031683620019e0565b5062001288565b60010162001064565b5080156200133457600f54620012bc9085906001600160a01b0316620012b66103e8620011ea8787620013be565b620019e0565b6000620012dd6103e8620011ea620012d58583620023b0565b8690620013be565b6001600160a01b038086166000818152601b602052604090819020805485019055519293509190871690600080516020620083b0833981519152906200132590859062002494565b60405180910390a3506200091f565b6001600160a01b038084166000818152601b602052604090819020805486019055519091861690600080516020620083b0833981519152906200137990869062002494565b60405180910390a350505050565b60006001600160a01b0382161580620013b857506001600160a01b03821660009081526021602052604090205460ff165b92915050565b600082600003620013d257506000620013b8565b6000620013e0838562002155565b905082620013ef858362002399565b14620007ef5760405162461bcd60e51b81526004016200007f90620024a4565b6001600160a01b0383161562001589576000818152601d6020908152604080832080546001600160a01b03191690556001600160a01b0386168352908052812080546200145f90600190620023b0565b8154811062001472576200147262002192565b60009182526020909120601082040154620014a291600f166002026101000a900461ffff16600160ff1b6200236d565b905081811462001532576000828152601f602052604081205460a01c6001600160a01b038616600090815260208052604090208054919250839183908110620014ef57620014ef62002192565b90600052602060002090601091828204019190066002026101000a81548161ffff021916908361ffff16021790555062001530828262001a3260201b60201c565b505b6001600160a01b038416600090815260208052604090208054806200155b576200155b620024ea565b600082815260209020601060001990920191820401805461ffff6002600f8516026101000a02191690559055505b6001600160a01b0382161562001633576000818152601f6020526040902080546001600160a01b0319166001600160a01b0384160190556001600160a01b038216600081815260208080526040822080546001808201835582855292842060108204018054600f9092166002026101000a61ffff81810219909316928816029190911790559290915290546200162d918391620016279190620023b0565b62001a32565b62001643565b6000818152601f60205260408120555b60008181526015602052604090205461ffff161580156200166e5750600d546001600160a01b031615155b156200171357600d60009054906101000a90046001600160a01b03166001600160a01b03166336c079db6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015620016ca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620016f0919062002518565b6000828152601560205260409020805461ffff191661ffff929092169190911790555b6001600160a01b03828116908416828282600080516020620083b0833981519152600080a45050505050565b81546001600160401b038082169168010000000000000000900416600081900362001771575060001901600f62001776565b600019015b83546001600160401b03838116600160801b90920416148015620017ad575083546001600160401b03828116600160c01b90920416145b15620017cc57604051638acb5f2760e01b815260040160405180910390fd5b6001600160401b0382166000908152600185016020526040902054620017f490828562001a9a565b6001600160401b03928316600081815260018701602052604090209190915584546001600160801b031916176801000000000000000091909216021790915550565b8054600090600160c01b81046001600160401b039081166801000000000000000090920416148015620013b8575050546001600160401b03808216600160801b909204161490565b80546000906001600160401b03600160801b8204811691600160c01b81048216911682148015620018c7575083546001600160401b038281166801000000000000000090920416145b15620018e6576040516375e52f4f60e01b815260040160405180910390fd5b806001600160401b031660000362001905575060001901600f6200190a565b600019015b6001600160401b038216600090815260018501602052604090205462001931818362001ae1565b9350620019418183600062001a9a565b6001600160401b03938416600081815260018801602052604090209190915585546001600160801b0316600160801b9091026001600160c01b031617600160c01b929093169190910291909117909255919050565b6000620007ef83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062001b1060201b60201c565b6001600160a01b038083166000818152601b602052604090819020805485019055519091851690600080516020620083b08339815191529062001a2590859062002494565b60405180910390a3505050565b6000828152601f60205260409020546001600160601b0382111562001a6a57604051633f2cd0e360e21b815260040160405180910390fd5b6000928352601f60205260409092206001600160a01b039290921660a09190911b6001600160a01b031916019055565b600062001aa98360106200253b565b6001600160401b03168261ffff16901b62001aca8462001b4c60201b60201c565b19851662001ad991906200236d565b949350505050565b600062001af08260106200253b565b6001600160401b031662001b048362001b4c565b8416901c905092915050565b6000818362001b345760405162461bcd60e51b81526004016200007f9190620025a0565b50600062001b43848662002399565b95945050505050565b600062001b5b8260106200253b565b6001600160401b031661ffff901b9050919050565b634e487b7160e01b600052604160045260246000fd5b601f19601f83011681016001600160401b038111828210171562001bae5762001bae62001b70565b6040525050565b600062001bc160405190565b905062001bcf828262001b86565b919050565b60006001600160401b0382111562001bf05762001bf062001b70565b601f19601f83011660200192915050565b60005b8381101562001c1e57818101518382015260200162001c04565b50506000910152565b600062001c3e62001c388462001bd4565b62001bb5565b905082815283838301111562001c575762001c57600080fd5b620007ef83602083018462001c01565b600082601f83011262001c7d5762001c7d600080fd5b815162001ad984826020860162001c27565b60ff81165b811462001ca057600080fd5b50565b8051620013b88162001c8f565b8062001c94565b8051620013b88162001cb0565b60006001600160a01b038216620013b8565b62001c948162001cc4565b8051620013b88162001cd6565b60008060008060008060008060008060006101608c8e03121562001d155762001d15600080fd5b8b516001600160401b0381111562001d305762001d30600080fd5b62001d3e8e828f0162001c67565b60208e0151909c5090506001600160401b0381111562001d615762001d61600080fd5b62001d6f8e828f0162001c67565b9a505062001d818d60408e0162001ca3565b985062001d928d60608e0162001cb7565b975062001da38d60808e0162001ce1565b965062001db48d60a08e0162001ce1565b955062001dc58d60c08e0162001ce1565b945062001dd68d60e08e0162001ce1565b935062001de88d6101008e0162001ce1565b925062001dfa8d6101208e0162001cb7565b915062001e0c8d6101408e0162001cb7565b90509295989b509295989b9093969950565b62001e298162001cc4565b82525050565b60208101620013b8828462001e1e565b634e487b7160e01b600052602260045260246000fd5b60028104600182168062001e6a57607f821691505b60208210810362001e7f5762001e7f62001e3f565b50919050565b6000620013b862001e938381565b90565b62001ea18362001e85565b815460001960089490940293841b1916921b91909117905550565b60006200086181848462001e96565b8181101562000f055762001ee160008262001ebc565b60010162001ecb565b601f82111562000861576000818152602090206020601f8501048101602085101562001f135750805b62001f276020601f86010483018262001ecb565b5050505050565b81516001600160401b0381111562001f4a5762001f4a62001b70565b62001f56825462001e55565b62001f6382828562001eea565b506020601f82116001811462001f9b576000831562001f825750848201515b600019600885021c198116600285021785555062001f27565b600084815260208120601f198516915b8281101562001fcd578785015182556020948501946001909201910162001fab565b508482101562001feb5783870151600019601f87166008021c191681555b50505050600202600101905550565b634e487b7160e01b600052601160045260246000fd5b80825b6001851115620020565780860481111562002032576200203262001ffa565b60018516156200204157908102905b80026200204e8560011c90565b945062002013565b94509492505050565b6000826200207057506001620007ef565b816200207f57506000620007ef565b8160018114620020985760028114620020a357620020d7565b6001915050620007ef565b60ff841115620020b757620020b762001ffa565b8360020a915084821115620020d057620020d062001ffa565b50620007ef565b5060208310610133831016604e8410600b84101617156200210f575081810a8381111562002109576200210962001ffa565b620007ef565b6200211e848484600162002010565b9250905081840481111562002137576200213762001ffa565b0292915050565b60ff821691506000620007ef60001984846200205f565b8181028115828204841417620013b857620013b862001ffa565b600060208284031215620021865762002186600080fd5b620007ef838362001ce1565b634e487b7160e01b600052603260045260246000fd5b60008154620021b78162001e55565b600182168015620021d15760018114620021e75762002219565b60ff198316865281151582028601935062002219565b60008581526020902060005b838110156200221157815488820152600190910190602001620021f3565b505081860193505b50505092915050565b620013b88183620021a8565b8062001e29565b60a081016200224582886200222e565b6200225460208301876200222e565b6200226360408301866200222e565b6200227260608301856200222e565b62002281608083018462001e1e565b9695505050505050565b62ffffff811662001e29565b60608101620022a7828662001e1e565b620022b6602083018562001e1e565b62001ad960408301846200228b565b6000620013b88260601b90565b6000620013b882620022c5565b62001e29620022ee8262001cc4565b620022d2565b7fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b5481525b60200190565b7fff000000000000000000000000000000000000000000000000000000000000008152600101620023508184620022df565b6014016200235f81836200222e565b602001620007ef81620022f4565b80820180821115620013b857620013b862001ffa565b634e487b7160e01b600052601260045260246000fd5b600082620023ab57620023ab62002383565b500490565b81810381811115620013b857620013b862001ffa565b601281526020810171696e73756666696369656e742066756e647360701b8152905062002318565b60208082528101620013b881620023c6565b60006001820162002415576200241562001ffa565b5060010190565b600b8152602081016a14ddd85c081c185d5cd95960aa1b8152905062002318565b60208082528101620013b8816200241c565b60198152602081017f53656e64657220696e73756666696369656e742066756e6473000000000000008152905062002318565b60208082528101620013b8816200244f565b60208101620013b882846200222e565b60208082528101620013b881602181527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6020820152607760f81b604082015260600190565b634e487b7160e01b600052603160045260246000fd5b61ffff811662001c94565b8051620013b88162002500565b6000602082840312156200252f576200252f600080fd5b620007ef83836200250b565b6001600160401b0391821691908116908282029081169081811462002564576200256462001ffa565b5092915050565b600062002576825190565b8084526020840193506200258f81856020860162001c01565b601f01601f19169290920192915050565b60208082528101620007ef81846200256b565b60805160a05160c05160e051615d4c6200266460003960006118df015260006118af01526000818161087f0152818161298c015281816132ae015281816132f20152818161338c015281816133b601528181613422015281816134c6015281816135510152818161359501528181613612015281816136df0152818161372c01528181613770015281816137970152818161381d0152818161384701526142560152600061068b0152615d4c6000f3fe608060405234801561001057600080fd5b506004361061048c5760003560e01c80637ecebe001161026b578063c6e672b911610150578063dfabc033116100c8578063f2d2a75111610097578063f780bc1a1161007c578063f780bc1a14610b00578063fbac395114610b13578063fffd04b614610b3f57600080fd5b8063f2d2a75114610ada578063f2fde38b14610aed57600080fd5b8063dfabc03314610a73578063e40ffe0014610a86578063e985e9c514610a99578063ea2f0b3714610ac757600080fd5b8063d42350a91161011f578063d96ca0b911610104578063d96ca0b914610a22578063dd62ed3e14610a35578063dd63769914610a6057600080fd5b8063d42350a9146109eb578063d505accf14610a0f57600080fd5b8063c6e672b91461099f578063c87b56dd146109b2578063cbb93733146109c5578063ce1ffcd9146109d857600080fd5b8063a9059cbb116101e3578063b7e03965116101b2578063bebf781d11610197578063bebf781d14610961578063c26bbe1414610974578063c5ab3ba61461099757600080fd5b8063b7e039651461093b578063b88d4fde1461094e57600080fd5b8063a9059cbb146108b4578063ab6f4183146108c7578063b1ab9317146108f3578063b3f9ea341461091357600080fd5b80638b9bf1f31161023a57806395d89b411161021f57806395d89b4114610872578063976a84351461087a578063a22cb465146108a157600080fd5b80638b9bf1f31461084e5780638da5cb5b1461086157600080fd5b80637ecebe00146107f357806387aa7a6a1461081357806389fb4c66146108335780638a696e501461083b57600080fd5b80632ddac06a116103915780634f02c420116103095780636892e885116102d85780636e8f624b116102bd5780636e8f624b146107c057806370a08231146107cb578063715018a6146107eb57600080fd5b80636892e885146107845780636bfe35f31461079757600080fd5b80634f02c420146107295780635342acb414610732578063543c3bf41461075e5780636352211e1461077157600080fd5b80633644e51511610360578063437823ec11610345578063437823ec146106fb57806348c54b9d1461070e5780634d9660721461071657600080fd5b80633644e515146106e057806342842e0e146106e857600080fd5b80632ddac06a1461065f578063313ce5671461068657806331b7b8a0146106ba5780633268cc56146106cd57600080fd5b806309f0ef65116104245780631d12a575116103f35780631fae539b116103d85780631fae539b1461060557806323b872dd1461062557806324f8f6371461063857600080fd5b80631d12a575146105df5780631e8f7904146105f257600080fd5b806309f0ef651461059a5780630b71ed3b146105ad5780630e5b6641146105c157806318160ddd146105d657600080fd5b806306fdde031161046057806306fdde0314610534578063081812fc14610549578063095ea7b31461057f57806309674eb01461059257600080fd5b80620af2a11461049157806301ffc9a7146104ba57806302519da3146104cd57806303479a3714610503575b600080fd5b6104a461049f366004614a85565b610b52565b6040516104b19190614ac7565b60405180910390f35b6104a46104c8366004614b08565b610df7565b6104f66104db366004614b27565b6001600160a01b03166000908152601b602052604090205490565b6040516104b19190614b4c565b610527610511366004614b6b565b60009081526015602052604090205461ffff1690565b6040516104b19190614b94565b61053c610e8f565b6040516104b19190614bf8565b610572610557366004614b6b565b6000908152601d60205260409020546001600160a01b031690565b6040516104b19190614c12565b6104a461058d366004614c20565b610f1d565b6104f6610f56565b6104a46105a8366004614b27565b610fab565b6013546014546040516104b1929190614c4f565b6105d46105cf366004614b27565b610fdd565b005b6104f660195481565b6105d46105ed366004614c6a565b61104f565b610572610600366004614b6b565b611548565b610618610613366004614cad565b611568565b6040516104b19190614d54565b6104a4610633366004614d65565b6116ed565b6104f67f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92581565b6104f67f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3181565b6106ad7f000000000000000000000000000000000000000000000000000000000000000081565b6040516104b19190614d9f565b6106186106c8366004614cad565b611729565b600c54610572906001600160a01b031681565b6104f66118ab565b6105d46106f6366004614d65565b611901565b6105d4610709366004614b27565b611921565b6105d4611a46565b6104a4610724366004614c20565b611a88565b6104f6601a5481565b6104a4610740366004614b27565b6001600160a01b031660009081526003602052604090205460ff1690565b6105d461076c366004614a85565b611b35565b61057261077f366004614b6b565b611bec565b6105d4610792366004614b27565b611c88565b6105726107a5366004614b6b565b601d602052600090815260409020546001600160a01b031681565b6104f6600160ff1b81565b6104f66107d9366004614b27565b601b6020526000908152604090205481565b6105d4611cd4565b6104f6610801366004614b27565b60226020526000908152604090205481565b600d54610826906001600160a01b031681565b6040516104b19190614dcc565b6019546104f6565b6105d4610849366004614dda565b611ce6565b6105d461085c366004614b27565b611cf3565b6000546001600160a01b0316610572565b61053c611d3f565b6104f67f000000000000000000000000000000000000000000000000000000000000000081565b6105d46108af366004614a85565b611d4c565b6104a46108c2366004614c20565b611df0565b6104a46108d5366004614b27565b6001600160a01b031660009081526016602052604090205460ff1690565b610906610901366004614b27565b611eb5565b6040516104b19190614e40565b6104f6610921366004614b27565b6001600160a01b0316600090815260208052604090205490565b6105d4610949366004614b27565b611fba565b6105d461095c366004614f3e565b612006565b600f54610572906001600160a01b031681565b6104a4610982366004614b27565b60166020526000908152604090205460ff1681565b601a546104f6565b6105d46109ad366004614a85565b612157565b61053c6109c0366004614b6b565b61218f565b6105d46109d3366004614b27565b6122c0565b6105d46109e6366004614dda565b612336565b6105276109f9366004614b6b565b60156020526000908152604090205461ffff1681565b6105d4610a1d366004614fb6565b612397565b6104a4610a30366004614d65565b612615565b6104f6610a43366004614c6a565b601c60209081526000928352604080842090915290825290205481565b6105d4610a6e366004614d65565b61278b565b6105d4610a81366004614c20565b6129bb565b6105d4610a94366004614dda565b612a85565b6104a4610aa7366004614c6a565b601e60209081526000928352604080842090915290825290205460ff1681565b6105d4610ad5366004614b27565b612ac2565b6105d4610ae8366004615046565b612c9b565b6105d4610afb366004614b27565b612d14565b610906610b0e366004615046565b612d68565b6104a4610b21366004614b27565b6001600160a01b031660009081526004602052604090205460ff1690565b6105d4610b4d36600461507a565b612e0f565b6011546000906001600160a01b03163314610b885760405162461bcd60e51b8152600401610b7f906150cc565b60405180910390fd5b6000546001600160a01b03848116911614801590610bae57506001600160a01b03831615155b8015610bc857506010546001600160a01b03848116911614155b610be45760405162461bcd60e51b8152600401610b7f9061510e565b6000828015610c94576001600160a01b03851660009081526004602052604090205460ff1615610c265760405162461bcd60e51b8152600401610b7f90615150565b6001600160a01b0385166000818152600460205260408120805460ff1916600190811790915560068054808301825592527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f90910180546001600160a01b0319169092179091559150610ded565b6001600160a01b03851660009081526004602052604090205460ff16610ccc5760405162461bcd60e51b8152600401610b7f90615192565b6001600160a01b0385166000908152600460205260408120805460ff191690555b600654811015610deb57856001600160a01b031660068281548110610d1457610d146151a2565b6000918252602090912001546001600160a01b031603610de3576006805460019450610d419085906151ce565b81548110610d5157610d516151a2565b600091825260209091200154600680546001600160a01b039092169183908110610d7d57610d7d6151a2565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506006805480610dbc57610dbc6151e1565b600082815260209020810160001990810180546001600160a01b0319169055019055610deb565b600101610ced565b505b5090505b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fc2e10d09000000000000000000000000000000000000000000000000000000001480610df157507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a7000000000000000000000000000000000000000000000000000000001492915050565b60178054610e9c9061520d565b80601f0160208091040260200160405190810160405280929190818152602001828054610ec89061520d565b8015610f155780601f10610eea57610100808354040283529160200191610f15565b820191906000526020600020905b815481529060010190602001808311610ef857829003601f168201915b505050505081565b6000610f2882612f58565b15610f3c57610f3783836129bb565b610f4d565b610f468383611a88565b9050610df1565b50600192915050565b6000610fa6600154600f1967ffffffffffffffff808316601090810268010000000000000000850483168203600160c01b8604841601600160801b90950483169091029390930192909203011690565b905090565b60006001600160a01b0382161580610df15750506001600160a01b031660009081526021602052604090205460ff1690565b6010546001600160a01b031633146110075760405162461bcd60e51b8152600401610b7f906150cc565b6001600160a01b03811661102d5760405162461bcd60e51b8152600401610b7f90615265565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6010546001600160a01b031633146110795760405162461bcd60e51b8152600401610b7f906150cc565b6001600160a01b0381161580159061109a57506001600160a01b0381163b15155b6110b65760405162461bcd60e51b8152600401610b7f906152a7565b6001600160a01b038216158015906110d757506001600160a01b0382163b15155b6110f35760405162461bcd60e51b8152600401610b7f906152e9565b816110ff816001612f71565b600c80546001600160a01b0319166001600160a01b0385169081179091556000908152600360205260409020805460ff191660019081179091558290611146908290612f71565b6001600160a01b03808416600090815260036020908152604091829020805460ff1916600117905581517fc45a015500000000000000000000000000000000000000000000000000000000815291519284169263c45a01559260048082019392918290030181865afa1580156111c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111e49190615304565b6001600160a01b0316826001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561122b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061124f9190615304565b6001600160a01b03161461128f576040517f3338041700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806001600160a01b0316634aa4a4fc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112f19190615304565b6001600160a01b0316826001600160a01b0316634aa4a4fc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611338573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061135c9190615304565b6001600160a01b03161461139c576040517f76a731bf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051608081018252606481526101f46020820152610bb891810191909152612710606082015260005b60048110156113ee576000600882600481106113e5576113e56151a2565b506113c7915050565b5060005b6004811015611540576114de846001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561143c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114609190615304565b856001600160a01b0316634aa4a4fc6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561149e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c29190615304565b8484600481106114d4576114d46151a2565b6020020151612ff9565b600882600481106114f1576114f16151a2565b0180546001600160a01b0319166001600160a01b039290921691909117905561153860088260048110611526576115266151a2565b01546001600160a01b03166001612f71565b6001016113f2565b505050505050565b6008816004811061155857600080fd5b01546001600160a01b0316905081565b6011546060906001600160a01b0316600080805b600a811015611667576000844661159384436151ce565b6040516020016115a59392919061534b565b6040516020818303038152906040528051906020012090506000816040516020016115d09190615379565b6040516020818303038152906040528051906020012090506001818b8b8b6040516000815260200160405260405161160b94939291906153b1565b6020604051602081039080840390855afa15801561162d573d6000803e3d6000fd5b505050602060405103519450856001600160a01b0316856001600160a01b03160361165d57600193505050611667565b505060010161157c565b50806116855760405162461bcd60e51b8152600401610b7f90615418565b60068054806020026020016040519081016040528092919081815260200182805480156116db57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116116bd575b505050505093505050505b9392505050565b60006116f882612f58565b1561170d5761170884848461278b565b61171f565b611718848484612615565b90506116e6565b5060019392505050565b6011546060906001600160a01b0316600080805b600a811015611828576000844661175484436151ce565b6040516020016117669392919061534b565b6040516020818303038152906040528051906020012090506000816040516020016117919190615379565b6040516020818303038152906040528051906020012090506001818b8b8b604051600081526020016040526040516117cc94939291906153b1565b6020604051602081039080840390855afa1580156117ee573d6000803e3d6000fd5b505050602060405103519450856001600160a01b0316856001600160a01b03160361181e57600193505050611828565b505060010161173d565b50806118465760405162461bcd60e51b8152600401610b7f90615418565b60078054806020026020016040519081016040528092919081815260200182805480156116db576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116116bd57505050505093505050509392505050565b60007f000000000000000000000000000000000000000000000000000000000000000046146118dc57610fa661307c565b507f000000000000000000000000000000000000000000000000000000000000000090565b61191c83838360405180602001604052806000815250612006565b505050565b6011546001600160a01b0316331461194b5760405162461bcd60e51b8152600401610b7f906150cc565b6000546001600160a01b0382811691161480159061197157506001600160a01b03811615155b801561198b57506010546001600160a01b03828116911614155b6119a75760405162461bcd60e51b8152600401610b7f9061510e565b6001600160a01b03811660009081526003602052604090205460ff16156119e05760405162461bcd60e51b8152600401610b7f9061545a565b6001600160a01b03166000818152600360205260408120805460ff191660019081179091556007805491820181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b0319169091179055565b6010546001600160a01b03163314611a705760405162461bcd60e51b8152600401610b7f906150cc565b601054611a86906001600160a01b031647613105565b565b60006001600160a01b038316611aca576040517f5461585f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000818152601c602090815260408083206001600160a01b038816808552925291829020859055905182907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590611b23908790614b4c565b60405180910390a35060019392505050565b6010546001600160a01b03163314611b5f5760405162461bcd60e51b8152600401610b7f906150cc565b6001600160a01b03821615801590611b9057506001600160a01b03821660009081526021602052604090205460ff16155b8015611ba557506001600160a01b0382163b15155b611bc15760405162461bcd60e51b8152600401610b7f9061549c565b6001600160a01b03919091166000908152601660205260409020805460ff1916911515919091179055565b6000818152601f60205260409020546001600160a01b0316611c0d82612f58565b611c43576040517f3f6cc76800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611c83576040517fc5723b5100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b6012546001600160a01b03163314611cb25760405162461bcd60e51b8152600401610b7f906150cc565b601280546001600160a01b0319166001600160a01b0392909216919091179055565b611cdc613192565b611a8660006131d8565b611cf03382612f71565b50565b6011546001600160a01b03163314611d1d5760405162461bcd60e51b8152600401610b7f906150cc565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b60188054610e9c9061520d565b6001600160a01b038216611d8c576040517fccea9e6f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000818152601e602090815260408083206001600160a01b03871680855292528220805460ff1916851515179055919081908490849083907f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319080a45050505050565b60006001600160a01b0383161580611e1057506001600160a01b03831633145b15611e2e57604051634e46966960e11b815260040160405180910390fd5b3360009081526004602052604090205460ff16158015611e6757506001600160a01b03831660009081526004602052604090205460ff16155b611e835760405162461bcd60e51b8152600401610b7f906154de565b600554610100900460ff16611eaa5760405162461bcd60e51b8152600401610b7f90615520565b6116e6338484613228565b6001600160a01b03811660009081526020805260408120546060919067ffffffffffffffff811115611ee957611ee9614e51565b604051908082528060200260200182016040528015611f12578160200160208202803683370190505b50905060005b6001600160a01b0384166000908152602080526040902054811015611fb3576001600160a01b03841660009081526020805260409020805482908110611f6057611f606151a2565b60009182526020909120601082040154611f8e91600f166002026101000a900461ffff16600160ff1b615530565b828281518110611fa057611fa06151a2565b6020908102919091010152600101611f18565b5092915050565b6010546001600160a01b03163314611fe45760405162461bcd60e51b8152600401610b7f906150cc565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b61200f82612f58565b612045576040517f3f6cc76800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6120508484846116ed565b506001600160a01b0383163b1580159061211a57506040517f150b7a0200000000000000000000000000000000000000000000000000000000808252906001600160a01b0385169063150b7a02906120b2903390899088908890600401615543565b6020604051808303816000875af11580156120d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120f59190615592565b7fffffffff000000000000000000000000000000000000000000000000000000001614155b15612151576040517f3da6393100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b6010546001600160a01b031633146121815760405162461bcd60e51b8152600401610b7f906150cc565b61218b8282612f71565b5050565b600081815260156020526040902054606090819061ffff16158015906121bf5750600d546001600160a01b031615155b1561226a57600d54600084815260156020526040908190205490517fed1bdd9f0000000000000000000000000000000000000000000000000000000081526001600160a01b039092169163ed1bdd9f916122229161ffff90911690600401614b94565b600060405180830381865afa15801561223f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526122679190810190615608565b90505b8051156122775792915050565b6000838152601560205260409020546122939061ffff166138a5565b6040516020016122a39190615665565b604051602081830303815290604052915050919050565b50919050565b6010546001600160a01b031633146122ea5760405162461bcd60e51b8152600401610b7f906150cc565b806001600160a01b03163b6000036123145760405162461bcd60e51b8152600401610b7f90615265565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6012546001600160a01b031633146123605760405162461bcd60e51b8152600401610b7f906150cc565b60058054911515610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909216919091179055565b428410156123d1576040517f05787bdf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6123da85612f58565b15612411576040517f1f3e0de800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038616612451576040517f5461585f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600161245d6118ab565b6001600160a01b038a1660009081526022602090815260409182902080546001810190915591516124ba927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9928e928e928e9290918e9101615695565b604051602081830303815290604052805190602001206040516020016124e19291906156ef565b604051602081830303815290604052805190602001208585856040516000815260200160405260405161251794939291906153b1565b6020604051602081039080840390855afa158015612539573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158061256e5750876001600160a01b0316816001600160a01b031614155b156125a5576040517f815e1d6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b039081166000908152601c602090815260408083208a8516808552925291829020889055905190918916907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590612604908990614b4c565b60405180910390a350505050505050565b6000836001600160a01b0316836001600160a01b0316036126485760405162461bcd60e51b8152600401610b7f9061575e565b6001600160a01b03841660009081526004602052604090205460ff1615801561268a57506001600160a01b03831660009081526004602052604090205460ff16155b6126a65760405162461bcd60e51b8152600401610b7f906154de565b600554610100900460ff166126cd5760405162461bcd60e51b8152600401610b7f90615520565b6001600160a01b0384166126f457604051636edaef2f60e11b815260040160405180910390fd5b6001600160a01b03831661271b57604051634e46966960e11b815260040160405180910390fd5b6001600160a01b0384166000908152601c6020908152604080832033845290915290205460001981146127775761275283826151ce565b6001600160a01b0386166000908152601c602090815260408083203384529091529020555b612782858585613228565b95945050505050565b826001600160a01b0316826001600160a01b0316036127bc5760405162461bcd60e51b8152600401610b7f9061575e565b6001600160a01b03831660009081526004602052604090205460ff161580156127fe57506001600160a01b03821660009081526004602052604090205460ff16155b61281a5760405162461bcd60e51b8152600401610b7f906154de565b600554610100900460ff166128415760405162461bcd60e51b8152600401610b7f90615520565b6001600160a01b03831661286857604051636edaef2f60e11b815260040160405180910390fd5b6001600160a01b03821661288f57604051634e46966960e11b815260040160405180910390fd5b6000818152601f60205260409020546001600160a01b038481169116146128c8576040516282b42960e81b815260040160405180910390fd5b336001600160a01b0384161480159061290557506001600160a01b0383166000908152601e6020908152604080832033845290915290205460ff16155b801561292857506000818152601d60205260409020546001600160a01b03163314155b15612945576040516282b42960e81b815260040160405180910390fd5b61294e82610fab565b15612985576040517f5ce7539700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6129b083837f0000000000000000000000000000000000000000000000000000000000000000613945565b61191c838383613cab565b6000818152601f60205260409020546001600160a01b0316338114801590612a0757506001600160a01b0381166000908152601e6020908152604080832033845290915290205460ff16155b15612a24576040516282b42960e81b815260040160405180910390fd5b6000828152601d6020526040812080546001600160a01b0319166001600160a01b0386811691821790925591908316908490839083907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259080a45050505050565b6012546001600160a01b03163314612aaf5760405162461bcd60e51b8152600401610b7f906150cc565b6005805460ff1916911515919091179055565b6011546001600160a01b03163314612aec5760405162461bcd60e51b8152600401610b7f906150cc565b6000546001600160a01b03828116911614801590612b1257506001600160a01b03811615155b8015612b2c57506010546001600160a01b03828116911614155b612b485760405162461bcd60e51b8152600401610b7f9061510e565b6001600160a01b03811660009081526003602052604090205460ff16612b805760405162461bcd60e51b8152600401610b7f906157a0565b6001600160a01b0381166000908152600360205260408120805460ff191690555b60075481101561218b57816001600160a01b031660078281548110612bc857612bc86151a2565b6000918252602090912001546001600160a01b031603612c935760078054612bf2906001906151ce565b81548110612c0257612c026151a2565b600091825260209091200154600780546001600160a01b039092169183908110612c2e57612c2e6151a2565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506007805480612c6d57612c6d6151e1565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b600101612ba1565b6010546001600160a01b03163314612cc55760405162461bcd60e51b8152600401610b7f906150cc565b6103e8821115612ce75760405162461bcd60e51b8152600401610b7f906157e2565b6103e8811115612d095760405162461bcd60e51b8152600401610b7f90615824565b601391909155601455565b612d1c613192565b6001600160a01b038116612d5f5760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610b7f9190614c12565b611cf0816131d8565b606060008267ffffffffffffffff811115612d8557612d85614e51565b604051908082528060200260200182016040528015612dae578160200160208202803683370190505b509050835b612dbd8486615530565b811015610ded57612dcf600182613fe7565b612de19061ffff16600160ff1b615530565b82612dec87846151ce565b81518110612dfc57612dfc6151a2565b6020908102919091010152600101612db3565b6010546001600160a01b03163314612e395760405162461bcd60e51b8152600401610b7f906150cc565b6001600160a01b0382163014801590612e5a57506001600160a01b03821615155b8015612e6e57506001600160a01b03831615155b612e8a5760405162461bcd60e51b8152600401610b7f90615866565b60008111612eaa5760405162461bcd60e51b8152600401610b7f906158a8565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526000906001600160a01b038516906370a0823190612ef2903090600401614c12565b602060405180830381865afa158015612f0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f3391906158c3565b905080821115612f4d57612f48848483614102565b612151565b612151848484614102565b6000600160ff1b82118015610df1575050600019141590565b6001600160a01b038216612fb1576040517fa41e3d3f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8015612fc557612fc082614204565b612fce565b612fce82614237565b6001600160a01b03919091166000908152602160205260409020805460ff1916911515919091179055565b60003081806001600160a01b0386168310613015578583613018565b82865b9150915086828287604051602001613032939291906158ed565b6040516020818303038152906040528051906020012060405160200161305992919061593d565b60408051601f198184030181529190528051602090910120979650505050505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60176040516130ae91906159f8565b6040519081900381206130ea92917fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc69046903090602001615a02565b60405160208183030381529060405280519060200120905090565b604080516000808252602082019092526001600160a01b03841690839060405161312f9190615a44565b60006040518083038185875af1925050503d806000811461316c576040519150601f19603f3d011682016040523d82523d6000602084013e613171565b606091505b505090508061191c5760405162461bcd60e51b8152600401610b7f90615aa8565b6000546001600160a01b03163314611a8657336040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610b7f9190614c12565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038381166000908152601b6020526040808220549285168252812054909190613259868686613945565b600061326487610fab565b9050600061327187610fab565b905081801561327d5750805b613897578115613347576001600160a01b03871660009081526016602052604090205460ff166133425760006132d37f000000000000000000000000000000000000000000000000000000000000000085615ace565b6001600160a01b0389166000908152601b6020526040902054613317907f000000000000000000000000000000000000000000000000000000000000000090615ace565b61332191906151ce565b905060005b8181101561333f57613337896142c4565b600101613326565b50505b613897565b8015613486576001600160a01b03881660009081526016602052604090205460ff16613403576001600160a01b0388166000908152601b60205260408120546133b1907f000000000000000000000000000000000000000000000000000000000000000090615ace565b6133db7f000000000000000000000000000000000000000000000000000000000000000087615ace565b6133e591906151ce565b905060005b8181101561333f576133fb8a6143dc565b6001016133ea565b6001600160a01b038816600090815260208052604081205490613446827f000000000000000000000000000000000000000000000000000000000000000061447f565b9050806134688b6001600160a01b03166000908152601b602052604090205490565b101561333f5760405162461bcd60e51b8152600401610b7f90615b14565b6001600160a01b03881660009081526016602052604090205460ff16156135eb576001600160a01b0388166000908152602080526040812054906134ea827f000000000000000000000000000000000000000000000000000000000000000061447f565b90508061350c8b6001600160a01b03166000908152601b602052604090205490565b101561352a5760405162461bcd60e51b8152600401610b7f90615b14565b6001600160a01b03891660009081526016602052604090205460ff1661333f5760006135767f000000000000000000000000000000000000000000000000000000000000000087615ace565b6001600160a01b038b166000908152601b60205260409020546135ba907f000000000000000000000000000000000000000000000000000000000000000090615ace565b6135c491906151ce565b905060005b818110156135e2576135da8b6142c4565b6001016135c9565b50505050613897565b6001600160a01b03871660009081526016602052604090205460ff166137fe5760006136377f000000000000000000000000000000000000000000000000000000000000000088615ace565b905060005b818110156136db576001600160a01b038a166000908152602080526040812054613668906001906151ce565b6001600160a01b038c16600090815260208052604081208054929350909183908110613696576136966151a2565b600091825260209091206010820401546136c491600f166002026101000a900461ffff16600160ff1b615530565b90506136d18c8c83613cab565b505060010161363c565b50807f000000000000000000000000000000000000000000000000000000000000000061371d8b6001600160a01b03166000908152601b602052604090205490565b6137279190615ace565b6137517f000000000000000000000000000000000000000000000000000000000000000088615ace565b61375b91906151ce565b111561376a5761376a896143dc565b806137957f000000000000000000000000000000000000000000000000000000000000000086615ace565b7f00000000000000000000000000000000000000000000000000000000000000006137d58b6001600160a01b03166000908152601b602052604090205490565b6137df9190615ace565b6137e991906151ce565b11156137f8576137f8886142c4565b50613897565b6001600160a01b0388166000908152601b6020526040812054613842907f000000000000000000000000000000000000000000000000000000000000000090615ace565b61386c7f000000000000000000000000000000000000000000000000000000000000000087615ace565b61387691906151ce565b905060005b818110156138945761388c8a6143dc565b60010161387b565b50505b506001979650505050505050565b606060006138b2836144c7565b600101905060008167ffffffffffffffff8111156138d2576138d2614e51565b6040519080825280601f01601f1916602001820160405280156138fc576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461390657509392505050565b60006001600160a01b0384166139725781601960008282546139679190615530565b909155506139a09050565b6001600160a01b0384166000908152601b60205260408120805484929061399a9084906151ce565b90915550505b60005b6004811015613b9a57600881600481106139bf576139bf6151a2565b01546001600160a01b0390811690861603613a50576139dd84610fab565b613a035760055460ff16613a035760405162461bcd60e51b8152600401610b7f90615b56565b6000601354118015613a2e57506001600160a01b03841660009081526003602052604090205460ff16155b8015613a405750613a3e84610fab565b155b15613a4b5760135491505b613b9a565b60088160048110613a6357613a636151a2565b01546001600160a01b0390811690851603613b9257613a8185610fab565b613aa75760055460ff16613aa75760405162461bcd60e51b8152600401610b7f90615b56565b6000601454118015613ad257506001600160a01b03851660009081526003602052604090205460ff16155b8015613ae45750613ae285610fab565b155b15613a4b576000613b0c6103e8613b066014548761447f90919063ffffffff16565b906145a9565b6001600160a01b0387166000908152601b6020526040902054909150811115613b475760405162461bcd60e51b8152600401610b7f90615b98565b6001600160a01b0386166000908152601b602052604081208054839290613b6f9084906151ce565b9091555050600f54613b8c9087906001600160a01b0316836145eb565b50613b9a565b6001016139a3565b508015613c4957600f54613bc89085906001600160a01b0316613bc36103e8613b06878761447f565b6145eb565b6000613be46103e8613b06613bdd85836151ce565b869061447f565b6001600160a01b038086166000818152601b6020526040908190208054850190555192935091908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90613c3b908590614b4c565b60405180910390a350612151565b6001600160a01b038084166000818152601b6020526040908190208054860190555190918616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90613c9d908690614b4c565b60405180910390a350505050565b6001600160a01b03831615613e0e576000818152601d6020908152604080832080546001600160a01b03191690556001600160a01b038616835290805281208054613cf8906001906151ce565b81548110613d0857613d086151a2565b60009182526020909120601082040154613d3691600f166002026101000a900461ffff16600160ff1b615530565b9050818114613dba576000828152601f602052604081205460a01c6001600160a01b038616600090815260208052604090208054919250839183908110613d7f57613d7f6151a2565b90600052602060002090601091828204019190066002026101000a81548161ffff021916908361ffff160217905550613db8828261464c565b505b6001600160a01b03841660009081526020805260409020805480613de057613de06151e1565b600082815260209020601060001990920191820401805461ffff6002600f8516026101000a02191690559055505b6001600160a01b03821615613eb2576000818152601f6020526040902080546001600160a01b0319166001600160a01b0384160190556001600160a01b038216600081815260208080526040822080546001808201835582855292842060108204018054600f9092166002026101000a61ffff8181021990931692881602919091179055929091529054613ead918391613ea891906151ce565b61464c565b613ec2565b6000818152601f60205260408120555b60008181526015602052604090205461ffff16158015613eec5750600d546001600160a01b031615155b15613faa57600d60009054906101000a90046001600160a01b03166001600160a01b03166336c079db6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015613f46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f6a9190615bbd565b600082815260156020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff929092169190911790555b6001600160a01b038281169084168282827fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a45050505050565b60006140368354600f1967ffffffffffffffff808316601090810268010000000000000000850483168203600160c01b8604841601600160801b90950483169091029390930192909203011690565b614041906010615bdc565b8210614079576040517f580821e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116e66001840160006010850460108087895467ffffffffffffffff680100000000000000009091048116929091069190910116816140ba576140ba615ab8565b885491900467ffffffffffffffff80831691909101929092018216835260208301939093526040909101600020549160109168010000000000000000909104168501066146d1565b600080846001600160a01b031663a9059cbb8585604051602401614127929190615bf3565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516141759190615a44565b6000604051808303816000865af19150503d80600081146141b2576040519150601f19603f3d011682016040523d82523d6000602084013e6141b7565b606091505b50915091508180156141e15750805115806141e15750808060200190518101906141e19190615c0c565b6141fd5760405162461bcd60e51b8152600401610b7f90615c5d565b5050505050565b6001600160a01b0381166000908152602080526040812054905b8181101561191c5761422f836143dc565b60010161421e565b6001600160a01b0381166000908152601b602052604081205461427b907f000000000000000000000000000000000000000000000000000000000000000090615ace565b9050600061429d836001600160a01b0316600090815260208052604090205490565b905060005b6142ac82846151ce565b811015612151576142bc846142c4565b6001016142a2565b6001600160a01b0381166142eb57604051634e46966960e11b815260040160405180910390fd5b60006142f760016146fd565b61431e576143056001614746565b6143179061ffff16600160ff1b615530565b9050614381565b601a6000815461432d90615c6d565b90915550601a5460010161436d576040517f303b682f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601a5461437e90600160ff1b615530565b90505b6000818152601f60205260409020546001600160a01b031680156143d1576040517f23369fa600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61191c818484613cab565b6001600160a01b03811661440357604051636edaef2f60e11b815260040160405180910390fd5b6001600160a01b038116600090815260208052604081208054614428906001906151ce565b81548110614438576144386151a2565b6000918252602090912060108204015461446691600f166002026101000a900461ffff16600160ff1b615530565b905061447482600083613cab565b61218b60018261488e565b60008260000361449157506000610df1565b600061449d8385615bdc565b9050826144aa8583615ace565b146116e65760405162461bcd60e51b8152600401610b7f90615cdf565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310614510577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef8100000000831061453c576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061455a57662386f26fc10000830492506010015b6305f5e1008310614572576305f5e100830492506008015b612710831061458657612710830492506004015b60648310614598576064830492506002015b600a8310610df15760010192915050565b60006116e683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506149b5565b6001600160a01b038083166000818152601b6020526040908190208054850190555190918516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061463f908590614b4c565b60405180910390a3505050565b6000828152601f60205260409020546bffffffffffffffffffffffff8211156146a1576040517ffcb3438c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000928352601f60205260409092206001600160a01b039290921660a09190911b6001600160a01b031916019055565b60006146de826010615cef565b67ffffffffffffffff166146f1836149e3565b8416901c905092915050565b8054600090600160c01b810467ffffffffffffffff9081166801000000000000000090920416148015610df15750505467ffffffffffffffff808216600160801b909204161490565b805460009067ffffffffffffffff600160801b8204811691600160c01b810482169116821480156147905750835467ffffffffffffffff8281166801000000000000000090920416145b156147c7576040517f75e52f4f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8067ffffffffffffffff166000036147e5575060001901600f6147ea565b600019015b67ffffffffffffffff8216600090815260018501602052604090205461481081836146d1565b935061481e81836000614a06565b67ffffffffffffffff938416600081815260018801602052604090209190915585546fffffffffffffffffffffffffffffffff16600160801b90910277ffffffffffffffffffffffffffffffffffffffffffffffff1617600160c01b929093169190910291909117909255919050565b815467ffffffffffffffff808216916801000000000000000090041660008190036148bf575060001901600f6148c4565b600019015b835467ffffffffffffffff838116600160801b909204161480156148fc5750835467ffffffffffffffff828116600160c01b90920416145b15614933576040517f8acb5f2700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff8216600090815260018501602052604090205461495a908285614a06565b67ffffffffffffffff928316600081815260018701602052604090209190915584547fffffffffffffffffffffffffffffffff0000000000000000000000000000000016176801000000000000000091909216021790915550565b600081836149d65760405162461bcd60e51b8152600401610b7f9190614bf8565b5060006127828486615ace565b60006149f0826010615cef565b67ffffffffffffffff1661ffff901b9050919050565b6000614a13836010615cef565b67ffffffffffffffff168261ffff16901b614a2d846149e3565b198516614a3a9190615530565b949350505050565b60006001600160a01b038216610df1565b614a5c81614a42565b8114611cf057600080fd5b8035610df181614a53565b801515614a5c565b8035610df181614a72565b60008060408385031215614a9b57614a9b600080fd5b614aa58484614a67565b9150614ab48460208501614a7a565b90509250929050565b8015155b82525050565b60208101610df18284614abd565b7fffffffff000000000000000000000000000000000000000000000000000000008116614a5c565b8035610df181614ad5565b600060208284031215614b1d57614b1d600080fd5b6116e68383614afd565b600060208284031215614b3c57614b3c600080fd5b6116e68383614a67565b80614ac1565b60208101610df18284614b46565b80614a5c565b8035610df181614b5a565b600060208284031215614b8057614b80600080fd5b6116e68383614b60565b61ffff8116614ac1565b60208101610df18284614b8a565b60005b83811015614bbd578181015183820152602001614ba5565b50506000910152565b6000614bd0825190565b808452602084019350614be7818560208601614ba2565b601f01601f19169290920192915050565b602080825281016116e68184614bc6565b614ac181614a42565b60208101610df18284614c09565b60008060408385031215614c3657614c36600080fd5b614c408484614a67565b9150614ab48460208501614b60565b60408101614c5d8285614b46565b6116e66020830184614b46565b60008060408385031215614c8057614c80600080fd5b614c8a8484614a67565b9150614ab48460208501614a67565b60ff8116614a5c565b8035610df181614c99565b600080600060608486031215614cc557614cc5600080fd5b614ccf8585614ca2565b9250614cde8560208601614b60565b9150614ced8560408601614b60565b90509250925092565b614d008282614c09565b5060200190565b60200190565b6000614d17825190565b808452602093840193830160005b82811015614d4a578151614d398782614cf6565b965050602082019150600101614d25565b5093949350505050565b602080825281016116e68184614d0d565b600080600060608486031215614d7d57614d7d600080fd5b614d878585614a67565b9250614cde8560208601614a67565b60ff8116614ac1565b60208101610df18284614d96565b6000610df182614a42565b6000610df182614dad565b614ac181614db8565b60208101610df18284614dc3565b600060208284031215614def57614def600080fd5b6116e68383614a7a565b614d008282614b46565b6000614e0d825190565b808452602093840193830160005b82811015614d4a578151614e2f8782614df9565b965050602082019150600101614e1b565b602080825281016116e68184614e03565b634e487b7160e01b600052604160045260246000fd5b601f19601f830116810181811067ffffffffffffffff82111715614e8d57614e8d614e51565b6040525050565b6000614e9f60405190565b9050611c838282614e67565b600067ffffffffffffffff821115614ec557614ec5614e51565b601f19601f8301165b60200192915050565b82818337506000910152565b6000614ef6614ef184614eab565b614e94565b9050828152838383011115614f0d57614f0d600080fd5b6116e6836020830184614ed7565b600082601f830112614f2f57614f2f600080fd5b6116e683833560208501614ee3565b60008060008060808587031215614f5757614f57600080fd5b614f618686614a67565b9350614f708660208701614a67565b9250614f7f8660408701614b60565b9150606085013567ffffffffffffffff811115614f9e57614f9e600080fd5b614faa87828801614f1b565b91505092959194509250565b600080600080600080600060e0888a031215614fd457614fd4600080fd5b614fde8989614a67565b9650614fed8960208a01614a67565b9550614ffc8960408a01614b60565b945061500b8960608a01614b60565b935061501a8960808a01614ca2565b92506150298960a08a01614b60565b91506150388960c08a01614b60565b905092959891949750929550565b6000806040838503121561505c5761505c600080fd5b614c408484614b60565b614a5c81614dad565b8035610df181615066565b60008060006060848603121561509257615092600080fd5b614d87858561506f565b60208082527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65729101908152614d07565b60208082528101610df18161509c565b60178152602081017f43616e277420736574206f776e6572206f72207a65726f00000000000000000081529050614d07565b60208082528101610df1816150dc565b60188152602081017f4164647265737320616c726561647920626c6f636b656421000000000000000081529050614d07565b60208082528101610df18161511e565b60148152602081017f41646472657373206e6f7420626c6f636b65642100000000000000000000000081529050614d07565b60208082528101610df181615160565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b81810381811115610df157610df16151b8565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052602260045260246000fd5b60028104600182168061522157607f821691505b6020821081036122ba576122ba6151f7565b60178152602081017f6572726f72206e6577206465766f70734164647265737300000000000000000081529050614d07565b60208082528101610df181615233565b60128152602081017f4572726f7220706169722061646472657373000000000000000000000000000081529050614d07565b60208082528101610df181615275565b60148152602081017f4572726f7220726f75746572206164647265737300000000000000000000000081529050614d07565b60208082528101610df1816152b7565b8051610df181614a53565b60006020828403121561531957615319600080fd5b6116e683836152f9565b6000610df18260601b90565b6000610df182615323565b614ac161534682614a42565b61532f565b615355818561533a565b6014016153628184614b46565b60200161536f8183614b46565b6020019392505050565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c016153a98183614b46565b602001919050565b608081016153bf8287614b46565b6153cc6020830186614d96565b6153d96040830185614b46565b6127826060830184614b46565b600d8152602081017f4572726f7220696e766f6b65720000000000000000000000000000000000000081529050614d07565b60208082528101610df1816153e6565b601b8152602081017f4163636f756e7420697320616c7265616479206578636c75646564000000000081529050614d07565b60208082528101610df181615428565b60178152602081017f6572726f722073656e644578656d70744164647265737300000000000000000081529050614d07565b60208082528101610df18161546a565b600f8152602081017f6164647265737320626c6f636b6564000000000000000000000000000000000081529050614d07565b60208082528101610df1816154ac565b600f8152602081017f5472616e7366657220706175736564000000000000000000000000000000000081529050614d07565b60208082528101610df1816154ee565b80820180821115610df157610df16151b8565b608081016155518287614c09565b61555e6020830186614c09565b61556b6040830185614b46565b818103606083015261557d8184614bc6565b9695505050505050565b8051610df181614ad5565b6000602082840312156155a7576155a7600080fd5b6116e68383615587565b60006155bf614ef184614eab565b90508281528383830111156155d6576155d6600080fd5b6116e6836020830184614ba2565b600082601f8301126155f8576155f8600080fd5b8151614a3a8482602086016155b1565b60006020828403121561561d5761561d600080fd5b815167ffffffffffffffff81111561563757615637600080fd5b614a3a848285016155e4565b600061564d825190565b61565b818560208601614ba2565b9290920192915050565b7f68747470733a2f2f6578616d706c652e636f6d2f746f6b656e2f0000000000008152601a01610df18183615643565b60c081016156a38289614b46565b6156b06020830188614c09565b6156bd6040830187614c09565b6156ca6060830186614b46565b6156d76080830185614b46565b6156e460a0830184614b46565b979650505050505050565b7f1901000000000000000000000000000000000000000000000000000000000000815260020161571f8184614b46565b602001614ece8183614b46565b60128152602081017f43616e27742073656e6420746f2073656c66000000000000000000000000000081529050614d07565b60208082528101610df18161572c565b60178152602081017f4163636f756e74206973206e6f74206578636c7564656400000000000000000081529050614d07565b60208082528101610df18161576e565b600d8152602081017f4572726f7220627579726174650000000000000000000000000000000000000081529050614d07565b60208082528101610df1816157b0565b600e8152602081017f4572726f722073656c6c7261746500000000000000000000000000000000000081529050614d07565b60208082528101610df1816157f2565b60148152602081017f4572726f7220746172676574206164647265737300000000000000000000000081529050614d07565b60208082528101610df181615834565b600c8152602081017f4572726f7220616d6f756e74000000000000000000000000000000000000000081529050614d07565b60208082528101610df181615876565b8051610df181614b5a565b6000602082840312156158d8576158d8600080fd5b6116e683836158b8565b62ffffff8116614ac1565b606081016158fb8286614c09565b6159086020830185614c09565b614a3a60408301846158e2565b7fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b548152614d07565b7fff00000000000000000000000000000000000000000000000000000000000000815260010161596d818461533a565b60140161597a8183614b46565b6020016116e681615915565b600081546159938161520d565b6001821680156159aa57600181146159bf576159ef565b60ff19831686528115158202860193506159ef565b60008581526020902060005b838110156159e7578154888201526001909101906020016159cb565b505081860193505b50505092915050565b610df18183615986565b60a08101615a108288614b46565b615a1d6020830187614b46565b615a2a6040830186614b46565b615a376060830185614b46565b61557d6080830184614c09565b610df18183615643565b60238152602081017f5472616e7366657248656c7065723a204554485f5452414e534645525f46414981527f4c45440000000000000000000000000000000000000000000000000000000000602082015290505b60400190565b60208082528101610df181615a4e565b634e487b7160e01b600052601260045260246000fd5b600082615add57615add615ab8565b500490565b60128152602081017f696e73756666696369656e742066756e6473000000000000000000000000000081529050614d07565b60208082528101610df181615ae2565b600b8152602081017f537761702070617573656400000000000000000000000000000000000000000081529050614d07565b60208082528101610df181615b24565b60198152602081017f53656e64657220696e73756666696369656e742066756e64730000000000000081529050614d07565b60208082528101610df181615b66565b61ffff8116614a5c565b8051610df181615ba8565b600060208284031215615bd257615bd2600080fd5b6116e68383615bb2565b8181028115828204841417610df157610df16151b8565b60408101614c5d8285614c09565b8051610df181614a72565b600060208284031215615c2157615c21600080fd5b6116e68383615c01565b601f8152602081017f5472616e7366657248656c7065723a205452414e534645525f4641494c45440081529050614d07565b60208082528101610df181615c2b565b60006000198203615c8057615c806151b8565b5060010190565b60218152602081017f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f81527f770000000000000000000000000000000000000000000000000000000000000060208201529050615aa2565b60208082528101610df181615c87565b67ffffffffffffffff918216919081169082820290811690818114611fb357611fb36151b856fea2646970667358221220badc4e94acff4b6e32b35c8057e12adc4379cdb6c97f9ec5ddedbd8171c838c564736f6c63430008180033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000032a0000000000000000000000000ff69c66f5672cbbcc4a3630c6fe73ae497ade3ae000000000000000000000000b80f7e4b5425c48af80f6e699e6c5af407ce5ad8000000000000000000000000ef2715d4418a8654355ee3f780facd422e3a6aec0000000000000000000000002626664c2603336e57b271c5c0b26f421741e48100000000000000000000000003a520b32c04bf3beef7beb72e919cf822ed34f100000000000000000000000000000000000000000000000000000000000003840000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000550696e6775000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000550696e6775000000000000000000000000000000000000000000000000000000