[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "address", "name": "target", "type": "address" } ], "name": "AddressEmptyCode", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "AddressInsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "balance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ERC1155InsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC1155InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "idsLength", "type": "uint256" }, { "internalType": "uint256", "name": "valuesLength", "type": "uint256" } ], "name": "ERC1155InvalidArrayLength", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" } ], "name": "ERC1155InvalidOperator", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC1155InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC1155InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC1155MissingApprovalForAll", "type": "error" }, { "inputs": [], "name": "EnforcedPause", "type": "error" }, { "inputs": [], "name": "ExpectedPause", "type": "error" }, { "inputs": [], "name": "FailedInnerCall", "type": "error" }, { "inputs": [], "name": "InvalidInitialization", "type": "error" }, { "inputs": [], "name": "LG_GAME_ALREADY_ENDED_OR_INVALID_END_TIME", "type": "error" }, { "inputs": [], "name": "LG_GAME_ALREADY_STARTED", "type": "error" }, { "inputs": [], "name": "LG_INVALID_MARKET_PHASE", "type": "error" }, { "inputs": [], "name": "LG_INVALID_START_OR_GAME_TIME", "type": "error" }, { "inputs": [], "name": "LG_INVALID_TRANSFER_AGENT", "type": "error" }, { "inputs": [], "name": "LG_NOT_FACTORY", "type": "error" }, { "inputs": [], "name": "LG_NOT_LIQUIDATION_ENGINE", "type": "error" }, { "inputs": [], "name": "LG_NOT_ORDER_BOOK", "type": "error" }, { "inputs": [], "name": "LG_NOT_ROUTER", "type": "error" }, { "inputs": [], "name": "NotInitializing", "type": "error" }, { "inputs": [ { "internalType": "uint8", "name": "bits", "type": "uint8" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "SafeCastOverflowedUintDowncast", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" } ], "name": "SafeERC20FailedOperation", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint64", "name": "version", "type": "uint64" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "gameId", "type": "uint256" }, { "indexed": false, "internalType": "uint16", "name": "positionId", "type": "uint16" }, { "indexed": true, "internalType": "enum TokenId", "name": "tokenId", "type": "uint8" }, { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": false, "internalType": "uint8", "name": "leverageRate", "type": "uint8" }, { "indexed": false, "internalType": "uint256", "name": "collateral", "type": "uint256" }, { "indexed": false, "internalType": "uint128", "name": "amountOfTokensIncreased", "type": "uint128" }, { "indexed": false, "internalType": "uint128", "name": "entryPrice", "type": "uint128" }, { "indexed": false, "internalType": "uint128", "name": "liquidationPrice", "type": "uint128" } ], "name": "LeveragePositionIncreased", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "gameId", "type": "uint256" }, { "indexed": false, "internalType": "uint16", "name": "positionId", "type": "uint16" }, { "indexed": false, "internalType": "uint8", "name": "epochId", "type": "uint8" }, { "indexed": true, "internalType": "enum TokenId", "name": "tokenId", "type": "uint8" }, { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": false, "internalType": "uint8", "name": "leverageRate", "type": "uint8" }, { "indexed": false, "internalType": "uint128", "name": "amountOfTokensBought", "type": "uint128" }, { "indexed": false, "internalType": "uint128", "name": "collateral", "type": "uint128" }, { "indexed": false, "internalType": "uint128", "name": "positionSize", "type": "uint128" }, { "indexed": false, "internalType": "uint128", "name": "entryPrice", "type": "uint128" }, { "indexed": false, "internalType": "uint128", "name": "liquidationPrice", "type": "uint128" } ], "name": "LeveragePositionOpened", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "gameId", "type": "uint256" }, { "indexed": true, "internalType": "enum TokenId", "name": "tokenId", "type": "uint8" }, { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": false, "internalType": "uint128", "name": "collateralAdded", "type": "uint128" }, { "indexed": false, "internalType": "uint8", "name": "prevLeverage", "type": "uint8" }, { "indexed": false, "internalType": "uint16", "name": "prevPositionId", "type": "uint16" }, { "indexed": false, "internalType": "uint128", "name": "prevLiqPrice", "type": "uint128" }, { "indexed": false, "internalType": "uint8", "name": "newLeverage", "type": "uint8" }, { "indexed": false, "internalType": "uint16", "name": "newPositionId", "type": "uint16" }, { "indexed": false, "internalType": "uint128", "name": "newLiqPrice", "type": "uint128" } ], "name": "LeveragePositionReduced", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint48", "name": "startTime", "type": "uint48" }, { "indexed": true, "internalType": "uint48", "name": "expectedGameTime", "type": "uint48" } ], "name": "LiveMarketStarted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Paused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint48", "name": "endTime", "type": "uint48" }, { "indexed": true, "internalType": "uint48", "name": "actualGameTime", "type": "uint48" }, { "indexed": true, "internalType": "enum TokenId", "name": "winningTeamToken", "type": "uint8" } ], "name": "PostMarketStarted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "receiver", "type": "address" }, { "indexed": false, "internalType": "uint128", "name": "amountOfHTokens", "type": "uint128" }, { "indexed": false, "internalType": "uint128", "name": "amountOfVTokens", "type": "uint128" } ], "name": "TokensMintedToMarketMaker", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "redeemer", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "gameId", "type": "uint256" }, { "indexed": false, "internalType": "uint128", "name": "amountOfTokens", "type": "uint128" }, { "indexed": false, "internalType": "uint128", "name": "totalPayout", "type": "uint128" }, { "indexed": false, "internalType": "uint128", "name": "totalFees", "type": "uint128" } ], "name": "TokensRedeemed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "indexed": false, "internalType": "uint256[]", "name": "values", "type": "uint256[]" } ], "name": "TransferBatch", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "id", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "TransferSingle", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "value", "type": "string" }, { "indexed": true, "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "URI", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Unpaused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "enum MarketPhase", "name": "previousMarketPhase", "type": "uint8" }, { "indexed": true, "internalType": "enum MarketPhase", "name": "newMarketPhase", "type": "uint8" } ], "name": "UpdatedMarketPhase", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "accounts", "type": "address[]" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" } ], "name": "balanceOfBatch", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "currentMarketPhase", "outputs": [ { "internalType": "enum MarketPhase", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "gameDuration", "outputs": [ { "internalType": "uint48", "name": "", "type": "uint48" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "gameEndTime", "outputs": [ { "internalType": "uint48", "name": "", "type": "uint48" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "gameId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "gameStartTime", "outputs": [ { "internalType": "uint48", "name": "", "type": "uint48" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "enum TokenId", "name": "tokenId", "type": "uint8" }, { "internalType": "uint128", "name": "liqPrice", "type": "uint128" } ], "name": "getPositionIdOfLiqPrice", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "enum TokenId", "name": "tokenId", "type": "uint8" }, { "internalType": "uint16", "name": "positionId", "type": "uint16" }, { "internalType": "uint8", "name": "leverageRate", "type": "uint8" } ], "name": "getUserLeveragePosition", "outputs": [ { "components": [ { "internalType": "uint128", "name": "entryPrice", "type": "uint128" }, { "internalType": "uint128", "name": "exitPrice", "type": "uint128" }, { "internalType": "uint128", "name": "liquidationPrice", "type": "uint128" }, { "internalType": "uint128", "name": "collateralAmount", "type": "uint128" }, { "internalType": "uint128", "name": "positionSize", "type": "uint128" }, { "internalType": "uint128", "name": "positionFee", "type": "uint128" }, { "internalType": "uint128", "name": "tokensBought", "type": "uint128" }, { "internalType": "uint128", "name": "paidOut", "type": "uint128" }, { "internalType": "uint128", "name": "positionBoundedLoss", "type": "uint128" }, { "internalType": "uint16", "name": "positionId", "type": "uint16" }, { "internalType": "uint8", "name": "leverageRate", "type": "uint8" }, { "internalType": "enum TokenId", "name": "tokenId", "type": "uint8" }, { "internalType": "enum PositionStatus", "name": "positionStatus", "type": "uint8" }, { "internalType": "address", "name": "user", "type": "address" } ], "internalType": "struct StandardLeveragePosition", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "enum TokenId", "name": "tokenId", "type": "uint8" } ], "name": "getUserPositionId", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "enum TokenId", "name": "tokenId", "type": "uint8" } ], "name": "getUserStandardPosition", "outputs": [ { "components": [ { "internalType": "uint128", "name": "collateralAmount", "type": "uint128" }, { "internalType": "uint128", "name": "tokensBought", "type": "uint128" }, { "internalType": "uint128", "name": "paidOut", "type": "uint128" }, { "internalType": "enum TokenId", "name": "tokenId", "type": "uint8" }, { "internalType": "address", "name": "user", "type": "address" } ], "internalType": "struct StandardPosition", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "tokenReceiver", "type": "address" }, { "internalType": "address", "name": "liquidated", "type": "address" }, { "internalType": "uint128", "name": "forfeitedCollateral", "type": "uint128" }, { "internalType": "uint128", "name": "outstandingVaultDebt", "type": "uint128" }, { "internalType": "uint128", "name": "tokensLiquidated", "type": "uint128" }, { "internalType": "uint16", "name": "positionId", "type": "uint16" }, { "internalType": "uint8", "name": "positionLeverage", "type": "uint8" }, { "internalType": "enum TokenId", "name": "tokenId", "type": "uint8" } ], "name": "handleLiquidation", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_usdcToken", "type": "address" }, { "internalType": "address", "name": "_configHandler", "type": "address" }, { "internalType": "uint256", "name": "_gameId", "type": "uint256" }, { "internalType": "string", "name": "_gameApiEndpoint", "type": "string" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "components": [ { "components": [ { "components": [ { "internalType": "uint128", "name": "collateralAmount", "type": "uint128" }, { "internalType": "uint128", "name": "tokensBought", "type": "uint128" }, { "internalType": "uint128", "name": "paidOut", "type": "uint128" }, { "internalType": "enum TokenId", "name": "tokenId", "type": "uint8" }, { "internalType": "address", "name": "user", "type": "address" } ], "internalType": "struct StandardPosition", "name": "position", "type": "tuple" }, { "internalType": "uint128", "name": "sellerPayout", "type": "uint128" } ], "internalType": "struct StandardUpdatePosition[]", "name": "standardPositions", "type": "tuple[]" }, { "components": [ { "components": [ { "internalType": "uint128", "name": "entryPrice", "type": "uint128" }, { "internalType": "uint128", "name": "exitPrice", "type": "uint128" }, { "internalType": "uint128", "name": "liquidationPrice", "type": "uint128" }, { "internalType": "uint128", "name": "collateralAmount", "type": "uint128" }, { "internalType": "uint128", "name": "positionSize", "type": "uint128" }, { "internalType": "uint128", "name": "positionFee", "type": "uint128" }, { "internalType": "uint128", "name": "tokensBought", "type": "uint128" }, { "internalType": "uint128", "name": "paidOut", "type": "uint128" }, { "internalType": "uint128", "name": "positionBoundedLoss", "type": "uint128" }, { "internalType": "uint16", "name": "positionId", "type": "uint16" }, { "internalType": "uint8", "name": "leverageRate", "type": "uint8" }, { "internalType": "enum TokenId", "name": "tokenId", "type": "uint8" }, { "internalType": "enum PositionStatus", "name": "positionStatus", "type": "uint8" }, { "internalType": "address", "name": "user", "type": "address" } ], "internalType": "struct StandardLeveragePosition", "name": "position", "type": "tuple" }, { "internalType": "uint128", "name": "sellerPayout", "type": "uint128" } ], "internalType": "struct LeverageUpdatePosition[]", "name": "leveragePositions", "type": "tuple[]" }, { "components": [ { "components": [ { "internalType": "uint128", "name": "entryPrice", "type": "uint128" }, { "internalType": "uint128", "name": "exitPrice", "type": "uint128" }, { "internalType": "uint128", "name": "liquidationPrice", "type": "uint128" }, { "internalType": "uint128", "name": "collateralAmount", "type": "uint128" }, { "internalType": "uint128", "name": "positionSize", "type": "uint128" }, { "internalType": "uint128", "name": "positionFee", "type": "uint128" }, { "internalType": "uint128", "name": "tokensBought", "type": "uint128" }, { "internalType": "uint128", "name": "paidOut", "type": "uint128" }, { "internalType": "uint128", "name": "positionBoundedLoss", "type": "uint128" }, { "internalType": "uint16", "name": "positionId", "type": "uint16" }, { "internalType": "uint8", "name": "leverageRate", "type": "uint8" }, { "internalType": "enum TokenId", "name": "tokenId", "type": "uint8" }, { "internalType": "enum PositionStatus", "name": "positionStatus", "type": "uint8" }, { "internalType": "address", "name": "user", "type": "address" } ], "internalType": "struct StandardLeveragePosition", "name": "position", "type": "tuple" }, { "internalType": "uint128", "name": "sellerPayout", "type": "uint128" } ], "internalType": "struct LeverageUpdatePosition[]", "name": "buyerLeveragePositions", "type": "tuple[]" }, { "components": [ { "internalType": "uint128", "name": "totalPurchaseCollateral", "type": "uint128" }, { "internalType": "uint128", "name": "totalVaultPayoutRequest", "type": "uint128" }, { "internalType": "int128", "name": "totalBoundedLossDelta", "type": "int128" }, { "internalType": "int128", "name": "totalLeverageFundedDelta", "type": "int128" }, { "internalType": "int128", "name": "totalPotentialPayoutDelta", "type": "int128" }, { "internalType": "int128", "name": "totalPotentialBorrowFeeDelta", "type": "int128" } ], "internalType": "struct VaultDelta", "name": "vaultDelta", "type": "tuple" }, { "internalType": "enum TokenId", "name": "tokenId", "type": "uint8" }, { "internalType": "uint8", "name": "maxElements", "type": "uint8" } ], "internalType": "struct UpdatePositions", "name": "updatePositions", "type": "tuple" } ], "name": "mutatePositions", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "uint128", "name": "entryPrice", "type": "uint128" }, { "internalType": "uint128", "name": "exitPrice", "type": "uint128" }, { "internalType": "uint128", "name": "liquidationPrice", "type": "uint128" }, { "internalType": "uint128", "name": "collateralAmount", "type": "uint128" }, { "internalType": "uint128", "name": "positionSize", "type": "uint128" }, { "internalType": "uint128", "name": "positionFee", "type": "uint128" }, { "internalType": "uint128", "name": "tokensBought", "type": "uint128" }, { "internalType": "uint128", "name": "paidOut", "type": "uint128" }, { "internalType": "uint128", "name": "positionBoundedLoss", "type": "uint128" }, { "internalType": "uint16", "name": "positionId", "type": "uint16" }, { "internalType": "uint8", "name": "leverageRate", "type": "uint8" }, { "internalType": "enum TokenId", "name": "tokenId", "type": "uint8" }, { "internalType": "enum PositionStatus", "name": "positionStatus", "type": "uint8" }, { "internalType": "address", "name": "user", "type": "address" } ], "internalType": "struct StandardLeveragePosition", "name": "positionBought", "type": "tuple" }, { "components": [ { "internalType": "uint128", "name": "actualCollateral", "type": "uint128" }, { "internalType": "uint128", "name": "positionSize", "type": "uint128" }, { "internalType": "uint128", "name": "entryPrice", "type": "uint128" }, { "internalType": "uint128", "name": "tokensPurchased", "type": "uint128" }, { "internalType": "uint128", "name": "positionFee", "type": "uint128" }, { "internalType": "uint128", "name": "positionBoundedLoss", "type": "uint128" }, { "internalType": "uint8", "name": "epochId", "type": "uint8" } ], "internalType": "struct LevrPurchaseInfo", "name": "purchaseInfo", "type": "tuple" }, { "internalType": "address", "name": "buyer", "type": "address" }, { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint16", "name": "positionId", "type": "uint16" }, { "internalType": "bool", "name": "newPosition", "type": "bool" } ], "name": "openLeveragePosition", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "pause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "uint128", "name": "userBalance", "type": "uint128" }, { "internalType": "uint128", "name": "standardPositionBalance", "type": "uint128" }, { "internalType": "enum TokenId", "name": "tokenId", "type": "uint8" } ], "name": "redeemTokens", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "uint128", "name": "entryPrice", "type": "uint128" }, { "internalType": "uint128", "name": "exitPrice", "type": "uint128" }, { "internalType": "uint128", "name": "liquidationPrice", "type": "uint128" }, { "internalType": "uint128", "name": "collateralAmount", "type": "uint128" }, { "internalType": "uint128", "name": "positionSize", "type": "uint128" }, { "internalType": "uint128", "name": "positionFee", "type": "uint128" }, { "internalType": "uint128", "name": "tokensBought", "type": "uint128" }, { "internalType": "uint128", "name": "paidOut", "type": "uint128" }, { "internalType": "uint128", "name": "positionBoundedLoss", "type": "uint128" }, { "internalType": "uint16", "name": "positionId", "type": "uint16" }, { "internalType": "uint8", "name": "leverageRate", "type": "uint8" }, { "internalType": "enum TokenId", "name": "tokenId", "type": "uint8" }, { "internalType": "enum PositionStatus", "name": "positionStatus", "type": "uint8" }, { "internalType": "address", "name": "user", "type": "address" } ], "internalType": "struct StandardLeveragePosition", "name": "newLeveragePosition", "type": "tuple" }, { "components": [ { "internalType": "uint128", "name": "collateralAmount", "type": "uint128" }, { "internalType": "uint128", "name": "tokensBought", "type": "uint128" }, { "internalType": "uint128", "name": "paidOut", "type": "uint128" }, { "internalType": "enum TokenId", "name": "tokenId", "type": "uint8" }, { "internalType": "address", "name": "user", "type": "address" } ], "internalType": "struct StandardPosition", "name": "newStandardPosition", "type": "tuple" }, { "internalType": "address", "name": "payer", "type": "address" }, { "internalType": "uint128", "name": "collateral", "type": "uint128" }, { "internalType": "uint128", "name": "prevLiqPrice", "type": "uint128" }, { "internalType": "uint16", "name": "prevPositionId", "type": "uint16" }, { "internalType": "uint8", "name": "prevLeverage", "type": "uint8" }, { "internalType": "uint8", "name": "newLeverage", "type": "uint8" }, { "internalType": "enum TokenId", "name": "tokenId", "type": "uint8" } ], "name": "reduceLeverage", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "values", "type": "uint256[]" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeBatchTransferFrom", "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": "uint256", "name": "value", "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": "uint48", "name": "startTime", "type": "uint48" }, { "internalType": "uint48", "name": "gameTime", "type": "uint48" } ], "name": "startLiveMarket", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint48", "name": "endTime", "type": "uint48" }, { "internalType": "enum TokenId", "name": "winningTokenId", "type": "uint8" } ], "name": "startPostMarket", "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": "unpause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "uri", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "winningTeamToken", "outputs": [ { "internalType": "enum TokenId", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" } ]
60806040523480156200001157600080fd5b506200001c62000022565b620000d6565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000735760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d35780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b615e7f80620000e66000396000f3fe608060405234801561001057600080fd5b50600436106101ce5760003560e01c80635c975abb116101045780639fb25732116100a2578063e1f0c37611610071578063e1f0c3761461042c578063e57201b714610445578063e985e9c514610466578063f242432a1461047957600080fd5b80639fb25732146103dd5780639fec600b146103fd578063a22cb46514610410578063d7c81b551461042357600080fd5b80637bd6f20d116100de5780637bd6f20d146103895780637fa7f9721461039c5780638456cb59146103c25780638d556519146103ca57600080fd5b80635c975abb1461033a578063634c08971461035257806367ee9d591461037657600080fd5b80632eb2c2d6116101715780634287687d1161014b5780634287687d146102d557806344d9bc5f146102f55780634e1273f41461030757806353e978ef1461032757600080fd5b80632eb2c2d6146102a75780633ddc41ed146102ba5780633f4ba83a146102cd57600080fd5b80630e89341c116101ad5780630e89341c1461024c57806315dfbb521461026c578063196e9d601461028157806326ebcfce1461029457600080fd5b8062fdd58e146101d357806301ffc9a7146101f95780630252b9951461021c575b600080fd5b6101e66101e1366004614750565b61048c565b6040519081526020015b60405180910390f35b61020c610207366004614792565b6104c3565b60405190151581526020016101f0565b60065461023590600160a01b900465ffffffffffff1681565b60405165ffffffffffff90911681526020016101f0565b61025f61025a3660046147af565b610513565b6040516101f09190614818565b61027f61027a366004614a8b565b6105d8565b005b61027f61028f366004614b99565b610c71565b61027f6102a2366004614c50565b610ef9565b61027f6102b5366004614d80565b611082565b61027f6102c8366004615090565b6110ee565b61027f611d38565b6102e86102e336600461517b565b611d6d565b6040516101f09190615214565b6007546102359065ffffffffffff1681565b61031a61031536600461535c565b611f0f565b6040516101f09190615458565b61027f61033536600461546b565b611fe3565b600080516020615e2a8339815191525460ff1661020c565b600754610369906601000000000000900460ff1681565b6040516101f09190615522565b61027f610384366004615530565b6125b6565b61027f61039736600461555a565b612733565b6103af6103aa3660046155a9565b612b2e565b60405161ffff90911681526020016101f0565b61027f612b9f565b6103af6103d83660046155f2565b612bd2565b6103f06103eb3660046155f2565b612c2a565b6040516101f09190615610565b61027f61040b366004615669565b612d0a565b61027f61041e366004615707565b613025565b6101e660055481565b60065461023590600160d01b900465ffffffffffff1681565b60075461045990600160381b900460ff1681565b6040516101f09190615740565b61020c610474366004615753565b613034565b61027f610487366004615781565b613081565b6000818152600080516020615e0a833981519152602090815260408083206001600160a01b03861684529091529020545b92915050565b60006001600160e01b03198216636cdb3d1360e11b14806104f457506001600160e01b031982166303a24d0760e21b145b806104bd57506301ffc9a760e01b6001600160e01b03198316146104bd565b7f88be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c45028054606091600080516020615e0a83398151915291610552906157e9565b80601f016020809104026020016040519081016040528092919081815260200182805461057e906157e9565b80156105cb5780601f106105a0576101008083540402835291602001916105cb565b820191906000526020600020905b8154815290600101906020018083116105ae57829003601f168201915b5050505050915050919050565b6105e0613162565b6003546001600160a01b0316331461060b57604051638714e3e760e01b815260040160405180910390fd5b8451600454610632916001600160a01b0390911690869030906001600160801b0316613193565b610160860151610140870151600254600554895160808a015160208b01516001600160a01b0390941693635d47cead9392879287926106719190615839565b60808e01518e516106829190615839565b8e60a001516040518863ffffffff1660e01b81526004016106a99796959493929190615860565b600060405180830381600087803b1580156106c357600080fd5b505af11580156106d7573d6000803e3d6000fd5b5050505086608001516001600160801b031660001461078057600154604080516356610b3560e11b81529051610780926001600160a01b03169163acc2166a9160048083019260209291908290030181865afa15801561073b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061075f91906158ae565b60808901516004546001600160a01b031691906001600160801b0316613200565b606087015160005460055460405163c65e26e160e01b81526001600160a01b039092169163c65e26e1916107ba91859088906004016158cb565b600060405180830381600087803b1580156107d457600080fd5b505af11580156107e8573d6000803e3d6000fd5b505050506001600160a01b03861660009081526008602052604081208a91856001811115610818576108186151d1565b6001811115610829576108296151d1565b81526020808201929092526040908101600090812061ffff808b16835290845282822060ff8089168452908552918390208551948601516001600160801b03908116600160801b9081029682169690961782559386015160608701518516860290851617600180830191909155608087015160a08801518616870290861617600283015560c087015160e0880151861687029086161760038301556101008701516004830180546101208a01516101408b0151909716600160901b0260ff60901b19979096169098026001600160901b031990981691909616179590951792831682178455610160860151909490939260ff60981b1990921661ffff60901b199092169190911790600160981b908490811115610948576109486151d1565b021790555061018082015160048201805460ff60a01b1916600160a01b836002811115610977576109776151d1565b02179055506101a09190910151600590910180546001600160a01b0319166001600160a01b039092169190911790558315610a92576001600160a01b0386166000908152600a6020526040812086918560018111156109d8576109d86151d1565b60018111156109e9576109e96151d1565b815260208082019290925260409081016000908120805461ffff191661ffff95909516949094179093556001600160a01b0389168352600990915281208691856001811115610a3a57610a3a6151d1565b6001811115610a4b57610a4b6151d1565b815260200190815260200160002060008b604001516001600160801b0316815260200190815260200160002060006101000a81548161ffff021916908361ffff1602179055505b610aca86846001811115610aa857610aa86151d1565b60ff16836001600160801b031660405180602001604052806000815250613236565b806001600160801b0316600c6000856001811115610aea57610aea6151d1565b6001811115610afb57610afb6151d1565b81526020019081526020016000206000828254610b1891906158ee565b90915550506040808a015160208a01518a5160c08c0151938c0151929391929091908815610bdb578a6001600160a01b0316886001811115610b5c57610b5c6151d1565b6005546040805161ffff8f16815260ff87811660208301528c16818301526001600160801b038b81166060830152888116608083015289811660a083015286811660c08301528a1660e082015290517fd026f53b49532f9b4c7e59f32feb5b919b08627ac82d92d57e12a19c45054efa918190036101000190a4610c61565b8a6001600160a01b0316886001811115610bf757610bf76151d1565b6005546040805161ffff8f16815260ff8c1660208201526001600160801b03888116828401528b8116606083015286811660808301528a1660a082015290517f4446d5b8e666c8e766075e263fd9232bfc5cd9620b020fa8909372df6d0b54b29181900360c00190a45b5050505050505050505050505050565b610c79613162565b600160009054906101000a90046001600160a01b03166001600160a01b03166344bf3c726040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ccc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf091906158ae565b6001600160a01b0316336001600160a01b031614610d215760405163c4d7829b60e01b815260040160405180910390fd5b6004805460025460405163095ea7b360e01b81526001600160a01b039283169363095ea7b393610d559316918a9101615901565b6020604051808303816000875af1158015610d74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d989190615923565b50600154604080516356610b3560e11b81529051610e24926001600160a01b03169163acc2166a9160048083019260209291908290030181865afa158015610de4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e0891906158ae565b6004546001600160a01b0316906001600160801b038916613200565b610e5d8789836001811115610e3b57610e3b6151d1565b60ff16876001600160801b031660405180602001604052806000815250613293565b6001600160a01b0387166000908152600860205260408120600291836001811115610e8a57610e8a6151d1565b6001811115610e9b57610e9b6151d1565b81526020808201929092526040908101600090812061ffff88168252835281812060ff871682529092529020600401805460ff60a01b1916600160a01b836002811115610eea57610eea6151d1565b02179055505050505050505050565b6006546001600160a01b03163314610f245760405163e6a7bb6560e01b815260040160405180910390fd5b600654600160a01b900465ffffffffffff1615610f5457604051632611d3f560e01b815260040160405180910390fd5b65ffffffffffff82161580610f6f575065ffffffffffff8116155b15610f8d576040516360cc997560e11b815260040160405180910390fd5b6006805465ffffffffffff838116600160d01b026001600160d01b03918616600160a01b02919091166001600160a01b03928316171790915560015460408051631f21f9af60e01b81529051611036939290921691631f21f9af916004808201926020929091908290030181865afa15801561100d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061103191906158ae565b613321565b611040600161370a565b8065ffffffffffff168265ffffffffffff167fdd9cb81c733d63c9d011d9c804132f5d8accce82455da94b97b0919f27f3b5ba60405160405180910390a35050565b336001600160a01b03861681148015906110a357506110a18682613034565b155b156110d95760405163711bec9160e11b81526001600160a01b038083166004830152871660248201526044015b60405180910390fd5b6110e68686868686613790565b505050505050565b600160009054906101000a90046001600160a01b03166001600160a01b03166319abfd726040518163ffffffff1660e01b8152600401602060405180830381865afa158015611141573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116591906158ae565b6001600160a01b0316336001600160a01b03161461119657604051633748275360e21b815260040160405180910390fd5b61119e613162565b606081015180516004546111ca916001600160a01b0390911690339030906001600160801b0316613193565b60008082602001516001600160801b0316116111ea5781606001516111fe565b816060015182602001516111fe9190615940565b9050600081600f0b1215611290576004546002546001600160a01b039182169163095ea7b3911661122e84615976565b6040518363ffffffff1660e01b815260040161124b929190615901565b6020604051808303816000875af115801561126a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061128e9190615923565b505b60808301516002546005546060860151604051635a9e810d60e01b81526001600160a01b0390931692635a9e810d926112d092909186919060040161599c565b600060405180830381600087803b1580156112ea57600080fd5b505af11580156112fe573d6000803e3d6000fd5b5050855151602087015151604088015151919350915060005b8760a0015160ff168160ff161015611d2e578360ff168160ff16101561154957600088600001518260ff168151811061135257611352615a0b565b60209081029190910101515160808101519091506001600160a01b038116156115465760008a600001518460ff168151811061139057611390615a0b565b6020026020010151602001519050806001600160801b03166000146113cf576004546113cf906001600160a01b0316836001600160801b038416613200565b82602001516001600160801b031660000361145d576001600160a01b0382166000908152600b602052604081209089600181111561140f5761140f6151d1565b6001811115611420576114206151d1565b8152602081019190915260400160009081209081556001810180546001600160881b031916905560020180546001600160a01b0319169055611544565b6001600160a01b0382166000908152600b6020526040812084918a6001811115611489576114896151d1565b600181111561149a5761149a6151d1565b815260208082019290925260409081016000208351928401516001600160801b03938416600160801b918516820217825591840151600180830180546001600160801b0319811693909616928317815560608701519395939490936001600160881b03191690921791908490811115611515576115156151d1565b021790555060809190910151600290910180546001600160a01b0319166001600160a01b039092169190911790555b505b50505b8260ff168160ff1610156119c957600088602001518260ff168151811061157257611572615a0b565b6020908102919091010151516101a081015161012082015161014083015192935090916001600160a01b038316156119c45760008c602001518660ff16815181106115bf576115bf615a0b565b6020026020010151602001519050806001600160801b0316600014611603576004546115fe906001600160a01b0316856001600160801b038416613200565b611749565b6001600160a01b0384166000908152600a60205260408120818c600181111561162e5761162e6151d1565b600181111561163f5761163f6151d1565b815260208101919091526040016000205461ffff90811691508416811015611747576001600160a01b0385166000908152600a6020526040812085918d600181111561168d5761168d6151d1565b600181111561169e5761169e6151d1565b815260208082019290925260409081016000908120805461ffff191661ffff95909516949094179093556001600160a01b03881683526009909152812085918d60018111156116ef576116ef6151d1565b6001811115611700576117006151d1565b8152602001908152602001600020600088604001516001600160801b0316815260200190815260200160002060006101000a81548161ffff021916908361ffff1602179055505b505b8460c001516001600160801b0316600003611807576001600160a01b0384166000908152600860205260408120908b6001811115611789576117896151d1565b600181111561179a5761179a6151d1565b81526020808201929092526040908101600090812061ffff87168252835281812060ff861682529092528120818155600181018290556002810182905560038101919091556004810180546001600160a81b031916905560050180546001600160a01b03191690556119c2565b6001600160a01b038416600090815260086020526040812086918c6001811115611833576118336151d1565b6001811115611844576118446151d1565b81526020808201929092526040908101600090812061ffff808916835290845282822060ff8089168452908552918390208551948601516001600160801b03908116600160801b9081029682169690961782559386015160608701518516860290851617600180830191909155608087015160a08801518616870290861617600283015560c087015160e0880151861687029086161760038301556101008701516004830180546101208a01516101408b0151909716600160901b0260ff60901b19979096169098026001600160901b031990981691909616179590951792831682178455610160860151909490939260ff60981b1990921661ffff60901b199092169190911790600160981b908490811115611963576119636151d1565b021790555061018082015160048201805460ff60a01b1916600160a01b836002811115611992576119926151d1565b02179055506101a09190910151600590910180546001600160a01b0319166001600160a01b039092169190911790555b505b505050505b8160ff168160ff161015611d1e57600088604001518260ff16815181106119f2576119f2615a0b565b6020908102919091010151516101a081015161014082015161012083015192935090916001600160a01b03831615611d19576001600160a01b038316600090815260086020526040812085918b6001811115611a5057611a506151d1565b6001811115611a6157611a616151d1565b81526020808201929092526040908101600090812061ffff808716835290845282822060ff8089168452908552918390208551948601516001600160801b03908116600160801b9081029682169690961782559386015160608701518516860290851617600180830191909155608087015160a08801518616870290861617600283015560c087015160e0880151861687029086161760038301556101008701516004830180546101208a01516101408b0151909716600160901b0260ff60901b19979096169098026001600160901b031990981691909616179590951792831682178455610160860151909490939260ff60981b1990921661ffff60901b199092169190911790600160981b908490811115611b8057611b806151d1565b021790555061018082015160048201805460ff60a01b1916600160a01b836002811115611baf57611baf6151d1565b02179055506101a09190910151600590910180546001600160a01b0319166001600160a01b0392831617905583166000908152600a60205260408120818b6001811115611bfe57611bfe6151d1565b6001811115611c0f57611c0f6151d1565b815260208101919091526040016000205461ffff90811691508216811015611d17576001600160a01b0384166000908152600a6020526040812083918c6001811115611c5d57611c5d6151d1565b6001811115611c6e57611c6e6151d1565b815260208082019290925260409081016000908120805461ffff191661ffff95909516949094179093556001600160a01b03871683526009909152812083918c6001811115611cbf57611cbf6151d1565b6001811115611cd057611cd06151d1565b8152602001908152602001600020600087604001516001600160801b0316815260200190815260200160002060006101000a81548161ffff021916908361ffff1602179055505b505b505050505b611d2781615a21565b9050611317565b5050505050505050565b6006546001600160a01b03163314611d635760405163e6a7bb6560e01b815260040160405180910390fd5b611d6b6137f0565b565b611d75614690565b6001600160a01b038516600090815260086020526040812090856001811115611da057611da06151d1565b6001811115611db157611db16151d1565b81526020808201929092526040908101600090812061ffff808816835290845282822060ff80881684529085529183902083516101c08101855281546001600160801b038082168352600160801b9182900481169783019790975260018084015480891697840197909752958190048716606083015260028301548088166080840152819004871660a0830152600383015480881660c0840152819004871660e083015260048301549687166101008301528604909216610120830152600160901b8504831661014083015290939092610160850192600160981b90920490911690811115611ea257611ea26151d1565b6001811115611eb357611eb36151d1565b81526020016004820160149054906101000a900460ff166002811115611edb57611edb6151d1565b6002811115611eec57611eec6151d1565b8152600591909101546001600160a01b031660209091015290505b949350505050565b60608151835114611f405781518351604051635b05999160e01b8152600481019290925260248201526044016110d0565b600083516001600160401b03811115611f5b57611f5b61482b565b604051908082528060200260200182016040528015611f84578160200160208202803683370190505b50905060005b8451811015611fdb57602080820286010151611fae9060208084028701015161048c565b828281518110611fc057611fc0615a0b565b6020908102919091010152611fd481615a40565b9050611f8a565b509392505050565b611feb613162565b6003546001600160a01b0316331461201657604051638714e3e760e01b815260040160405180910390fd5b600454612037906001600160a01b031688306001600160801b038a16613193565b60008260ff1660011461204f57896101a00151612055565b88608001515b6001600160a01b0381166000908152600860205260408120919250836001811115612082576120826151d1565b6001811115612093576120936151d1565b81526020808201929092526040908101600090812061ffff89168252835281812060ff80891683529352908120818155600180820183905560028201839055600382018390556004820180546001600160a81b0319169055600590910180546001600160a01b03191690559091851690036121f3576001600160a01b0382166000908152600b602052604081208b91856001811115612134576121346151d1565b6001811115612145576121456151d1565b815260208082019290925260409081016000208351928401516001600160801b03938416600160801b918516820217825591840151600180830180546001600160801b0319811693909616928317815560608701519395939490936001600160881b031916909217919084908111156121c0576121c06151d1565b021790555060809190910151600290910180546001600160a01b0319166001600160a01b0390921691909117905561249d565b6001600160a01b03821660009081526009602052604081209084600181111561221e5761221e6151d1565b600181111561222f5761222f6151d1565b8152602080820192909252604090810160009081208e8301516001600160801b0316825290925281205461ffff1691508190036122e2576001600160a01b0382166000908152600a6020526040812090846001811115612291576122916151d1565b60018111156122a2576122a26151d1565b81526020810191909152604001600090812080549091906122c69061ffff16615a59565b91906101000a81548161ffff021916908361ffff160217905590505b6001600160a01b03821660009081526008602052604081208c9185600181111561230e5761230e6151d1565b600181111561231f5761231f6151d1565b81526020808201929092526040908101600090812061ffff808716835290845282822060ff808b168452908552918390208551948601516001600160801b03908116600160801b9081029682169690961782559386015160608701518516860290851617600180830191909155608087015160a08801518616870290861617600283015560c087015160e0880151861687029086161760038301556101008701516004830180546101208a01516101408b0151909716600160901b0260ff60901b19979096169098026001600160901b031990981691909616179590951792831682178455610160860151909490939260ff60981b1990921661ffff60901b199092169190911790600160981b90849081111561243e5761243e6151d1565b021790555061018082015160048201805460ff60a01b1916600160a01b83600281111561246d5761246d6151d1565b02179055506101a09190910151600590910180546001600160a01b0319166001600160a01b039092169190911790555b6004805460025460405163095ea7b360e01b81526001600160a01b039283169363095ea7b3936124d19316918d9101615901565b6020604051808303816000875af11580156124f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125149190615923565b5060408b01516001600160a01b038316846001811115612536576125366151d1565b600554604080516001600160801b038e8116825260ff8c8116602084015261ffff8e8116848601528f83166060850152908c166080840152881660a0830152861660c082015290517fd6e96314a69d63134bbf5419ffad8ff1cdb0e6a7f3e0c2ff4ec3d86d8cf5ed939181900360e00190a4505050505050505050505050565b6006546001600160a01b031633146125e15760405163e6a7bb6560e01b815260040160405180910390fd5b65ffffffffffff821615806125ff575060075465ffffffffffff1615155b1561261d576040516325df1c1b60e11b815260040160405180910390fd5b6007805465ffffffffffff191665ffffffffffff8481169190911790915560065461265191600160a01b9091041683615a7a565b6006805465ffffffffffff92909216600160d01b026001600160d01b039092169190911790556007805482919066ff000000000000191666010000000000008360018111156126a2576126a26151d1565b02179055506126b1600261370a565b6126dc8160008360018111156126c9576126c96151d1565b146126d5576000613850565b6001613850565b8060018111156126ee576126ee6151d1565b60065460405165ffffffffffff600160d01b9092048216918516907fe97bee48f36bb901f003dd085743af5501f29989004c4eff6ab14eb8f724ca7c90600090a45050565b61273b613162565b6003546001600160a01b0316331461276657604051638714e3e760e01b815260040160405180910390fd5b60006127728385615839565b905060008061278664e8d4a5100086615aaf565b6001600160a01b0388166000908152600a6020526040812091925090818660018111156127b5576127b56151d1565b60018111156127c6576127c66151d1565b815260208101919091526040016000205461ffff16905060016001600160801b03851615612a7c575b8161ffff168161ffff1611612a7c5760025b60058160ff1611612a6b576001600160a01b038a16600090815260086020526040812081896001811115612837576128376151d1565b6001811115612848576128486151d1565b81526020808201929092526040908101600090812061ffff87168252835281812060ff86168252909252902060038101549091506001600160801b0316158015906128b2575060016004820154600160a01b900460ff1660028111156128b0576128b06151d1565b145b15612a5a576004818101805460ff60a01b1916905581546503782dace9d960921b6001600160801b0391821690811784556002840154600354600554604051630d2a991d60e21b815295860152818416602486018190526044860184905294600160801b9092049093169260009161297d916001600160a01b0316906334aa647490606401602060405180830381865afa158015612954573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129789190615ad5565b613c39565b60018601549091506000908490600160801b90046001600160801b0316846129ad81670de0b6b3a7640000615839565b6129b79089615aee565b6129c19190615aaf565b6129cb9190615b11565b6129d59190615839565b905060006129e38383615839565b9050808760030160108282829054906101000a90046001600160801b0316612a0b9190615b11565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550808b612a3b9190615b11565b9a50612a478386615b11565b612a51908d615b11565b9b505050505050505b50612a6481615a21565b9050612801565b50612a7581615a59565b90506127ef565b612aa489876001811115612a9257612a926151d1565b60ff168a6001600160801b0316613c71565b600454612ac4906001600160a01b03168a6001600160801b038616613200565b600554604080519182526001600160801b038a811660208401528581168383015286166060830152516001600160a01b038b16917fd69c0fd92c14e63cdb4b242765e9a7a37b0c5b95c4f1e8fbe7ca4310bbda2d0b919081900360800190a2505050505050505050565b6001600160a01b038316600090815260096020526040812081846001811115612b5957612b596151d1565b6001811115612b6a57612b6a6151d1565b8152602080820192909252604090810160009081206001600160801b038616825290925290205461ffff1690505b9392505050565b6006546001600160a01b03163314612bca5760405163e6a7bb6560e01b815260040160405180910390fd5b611d6b613cd9565b6001600160a01b0382166000908152600a6020526040812081836001811115612bfd57612bfd6151d1565b6001811115612c0e57612c0e6151d1565b815260208101919091526040016000205461ffff169392505050565b612c32614704565b6001600160a01b0383166000908152600b6020526040812090836001811115612c5d57612c5d6151d1565b6001811115612c6e57612c6e6151d1565b81526020808201929092526040908101600020815160a08101835281546001600160801b038082168352600160801b91829004811695830195909552600180840154958616948301949094529093919260608501929190910460ff1690811115612cda57612cda6151d1565b6001811115612ceb57612ceb6151d1565b8152600291909101546001600160a01b03166020909101529392505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b0316600081158015612d4f5750825b90506000826001600160401b03166001148015612d6b5750303b155b905081158015612d79575080155b15612d975760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315612dc157845460ff60401b1916600160401b1785555b612e0087878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613d2292505050565b612e08613d36565b6007805460ff60381b19169055600480546001600160a01b038c81166001600160a01b031992831617835560018054918d169190921681179091556040805163e785ba4f60e01b81529051919263e785ba4f9282820192602092908290030181865afa158015612e7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ea091906158ae565b600080546001600160a01b0319166001600160a01b03928316179055600154604080516312d1c00b60e21b815290519190921691634b47002c9160048083019260209291908290030181865afa158015612efe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f2291906158ae565b600280546001600160a01b0319166001600160a01b03928316179055600154604080516345026fdb60e01b8152905191909216916345026fdb9160048083019260209291908290030181865afa158015612f80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fa491906158ae565b600380546001600160a01b03929092166001600160a01b031992831617905560068054909116331790556005889055831561301957845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050565b613030338383613d46565b5050565b6001600160a01b0391821660009081527f88be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c45016020908152604080832093909416825291909152205460ff1690565b6006546001600160a01b03166378fc3cb3336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa1580156130d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130fb9190615923565b61314e576001600160a01b038516331480159061311f575061311d8533613034565b155b1561314e5760405163711bec9160e11b81523360048201526001600160a01b03861660248201526044016110d0565b61315b8585858585613293565b5050505050565b600080516020615e2a8339815191525460ff1615611d6b5760405163d93c066560e01b815260040160405180910390fd5b6040516001600160a01b0384811660248301528381166044830152606482018390526131fa9186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050613dee565b50505050565b6040516001600160a01b0383811660248301526044820183905261323191859182169063a9059cbb906064016131c8565b505050565b6001600160a01b03841661326057604051632bfa23e760e11b8152600060048201526024016110d0565b604080516001808252602082018690528183019081526060820185905260808201909252906110e6600087848487613e51565b6001600160a01b0384166132bd57604051632bfa23e760e11b8152600060048201526024016110d0565b6001600160a01b0385166132e657604051626a0d4560e21b8152600060048201526024016110d0565b604080516001808252602082018690528183019081526060820185905260808201909252906133188787848487613e51565b50505050505050565b6000805460055460405163d5ff140960e01b8152600481019190915282916001600160a01b03169063d5ff1409906024016040805180830381865afa15801561336e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133929190615b31565b91509150816001600160801b031660001480156133b657506001600160801b038116155b156133c057505050565b6133e5836000846001600160801b031660405180602001604052806000815250613236565b61340a836001836001600160801b031660405180602001604052806000815250613236565b6040805160a08101825260008082526001600160801b038581166020808501918252848601848152606086018581526001600160a01b038b16608088018190528652600b83528786208680529092529590932084519151918316600160801b92841683021781559451600180870180546001600160801b03198116939095169283178155945195969594936001600160881b031916909117919084908111156134b5576134b56151d1565b021790555060809190910151600290910180546001600160a01b0319166001600160a01b039092169190911790556000808052600c6020527f13649b2456f1b42fef0f0040b3aaeabcd21a76a0f3f5defd4f583839455116e880546001600160801b03851692906135279084906158ee565b90915550506040805160a08101825260008082526001600160801b0384811660208085019182528486018481526001606087018181526001600160a01b038c16608089018190528752600b84528887208288529093529690942085519251928416600160801b9385168402178155935184870180546001600160801b031981169290951691821781559151959694959491936001600160881b03191617919084908111156135d7576135d76151d1565b021790555060809190910151600290910180546001600160a01b0319166001600160a01b0390921691909117905560016000908152600c6020527fd421a5181c571bba3f01190c922c3b2a896fc1d84e86c9f17ac10e67ebef8b5c80546001600160801b038416929061364b9084906158ee565b909155505060005460055460405163a95358f760e01b81526001600160a01b039092169163a95358f7916136859160040190815260200190565b600060405180830381600087803b15801561369f57600080fd5b505af11580156136b3573d6000803e3d6000fd5b5050604080516001600160801b038087168252851660208201526001600160a01b03871693507f85d07dd1bd4938d68eb629bcd71ef9107ce6b3ffc2ad28dc7c3ebbae126cd0e192500160405180910390a2505050565b60078054600160381b80820460ff16928492909160ff60381b199091169083600281111561373a5761373a6151d1565b0217905550816002811115613751576137516151d1565b816002811115613763576137636151d1565b6040517fe6083f7ea6d46500472792fb93117cbbeb540e2698b3ca58c35484bb0e88c5f990600090a35050565b6001600160a01b0384166137ba57604051632bfa23e760e11b8152600060048201526024016110d0565b6001600160a01b0385166137e357604051626a0d4560e21b8152600060048201526024016110d0565b61315b8585858585613e51565b6137f8613ea4565b600080516020615e2a833981519152805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b60025460055460405163065d416960e21b81526000928392839283926001600160a01b03169163197505a49161388b91908990600401615b60565b6080604051808303816000875af11580156138aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138ce9190615b74565b9350935093509350600084600f0b131561390d57600254600454613908916001600160a01b0391821691166001600160801b038716613200565b613950565b600084600f0b121561395057600254613950906001600160a01b03163061393387615976565b6004546001600160a01b03169291906001600160801b0316613193565b60015460408051631f21f9af60e01b815290516000926001600160a01b031691631f21f9af9160048083019260209291908290030181865afa15801561399a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139be91906158ae565b905060006139cd82600061048c565b905060006139dc83600161048c565b90506139ea83600084613c71565b6139f683600183613c71565b6000808052600c6020527f13649b2456f1b42fef0f0040b3aaeabcd21a76a0f3f5defd4f583839455116e88054849290613a31908490615bd3565b909155505060016000908152600c6020527fd421a5181c571bba3f01190c922c3b2a896fc1d84e86c9f17ac10e67ebef8b5c8054839290613a73908490615bd3565b909155506000905064e8d4a51000600c828c6001811115613a9657613a966151d1565b6001811115613aa757613aa76151d1565b815260200190815260200160002054613ac09190615be6565b90506000876001600160801b03168211613adb576000613ae5565b613ae58883615839565b9050600087613af4888b615839565b613afe9190615839565b90506000613b0c8383615b11565b600480546040516370a0823160e01b815230928101929092526001600160801b0392909216916001600160a01b0316906370a0823190602401602060405180830381865afa158015613b62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b869190615ad5565b613b909190615bd3565b9050613c2a600160009054906101000a90046001600160a01b03166001600160a01b031663acc2166a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613be8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c0c91906158ae565b613c17600a84615bd3565b6004546001600160a01b03169190613200565b50505050505050505050505050565b60006001600160801b03821115613c6d576040516306dfcc6560e41b815260806004820152602481018390526044016110d0565b5090565b6001600160a01b038316613c9a57604051626a0d4560e21b8152600060048201526024016110d0565b604080516001808252602082018590528183019081526060820184905260a0820190925260006080820181815291929161315b91879185908590613e51565b613ce1613162565b600080516020615e2a833981519152805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833613832565b613d2a613ed4565b613d3381613f1d565b50565b613d3e613ed4565b611d6b613f2e565b600080516020615e0a8339815191526001600160a01b038316613d7e5760405162ced3e160e81b8152600060048201526024016110d0565b6001600160a01b038481166000818152600184016020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b6000613e036001600160a01b03841683613f4f565b90508051600014158015613e28575080806020019051810190613e269190615923565b155b1561323157604051635274afe760e01b81526001600160a01b03841660048201526024016110d0565b613e5d85858585613f5d565b6001600160a01b0384161561315b5782513390600103613e965760208481015190840151613e8f8389898585896140f9565b50506110e6565b6110e681878787878761421d565b600080516020615e2a8339815191525460ff16611d6b57604051638dfc202b60e01b815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16611d6b57604051631afcd79f60e31b815260040160405180910390fd5b613f25613ed4565b613d3381614306565b613f36613ed4565b600080516020615e2a833981519152805460ff19169055565b6060612b9883836000614340565b613f65613162565b6002600754600160381b900460ff166002811115613f8557613f856151d1565b14614029576006546040516378fc3cb360e01b81523360048201526001600160a01b03909116906378fc3cb390602401602060405180830381865afa158015613fd2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ff69190615923565b15801561400b57506001600160a01b03841615155b1561402957604051633d6d8ca160e21b815260040160405180910390fd5b6002600754600160381b900460ff166002811115614049576140496151d1565b036140ed576006546040516378fc3cb360e01b81523360048201526001600160a01b03909116906378fc3cb390602401602060405180830381865afa158015614096573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140ba9190615923565b1580156140cf57506001600160a01b03831615155b156140ed57604051633d6d8ca160e21b815260040160405180910390fd5b6131fa848484846143dd565b6001600160a01b0384163b156110e65760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e619061413d9089908990889088908890600401615bfa565b6020604051808303816000875af1925050508015614178575060408051601f3d908101601f1916820190925261417591810190615c3f565b60015b6141e1573d8080156141a6576040519150601f19603f3d011682016040523d82523d6000602084013e6141ab565b606091505b5080516000036141d957604051632bfa23e760e11b81526001600160a01b03861660048201526024016110d0565b805181602001fd5b6001600160e01b0319811663f23a6e6160e01b1461331857604051632bfa23e760e11b81526001600160a01b03861660048201526024016110d0565b6001600160a01b0384163b156110e65760405163bc197c8160e01b81526001600160a01b0385169063bc197c81906142619089908990889088908890600401615c5c565b6020604051808303816000875af192505050801561429c575060408051601f3d908101601f1916820190925261429991810190615c3f565b60015b6142ca573d8080156141a6576040519150601f19603f3d011682016040523d82523d6000602084013e6141ab565b6001600160e01b0319811663bc197c8160e01b1461331857604051632bfa23e760e11b81526001600160a01b03861660048201526024016110d0565b600080516020615e0a8339815191527f88be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c45026132318382615d00565b6060814710156143655760405163cd78605960e01b81523060048201526024016110d0565b600080856001600160a01b031684866040516143819190615dbf565b60006040518083038185875af1925050503d80600081146143be576040519150601f19603f3d011682016040523d82523d6000602084013e6143c3565b606091505b50915091506143d386838361460b565b9695505050505050565b80518251600080516020615e0a833981519152911461441c5782518251604051635b05999160e01b8152600481019290925260248201526044016110d0565b3360005b845181101561452b576020818102868101820151908601909101516001600160a01b038916156144d3576000828152602086815260408083206001600160a01b038d168452909152902054818110156144ac576040516303dee4c560e01b81526001600160a01b038b1660048201526024810182905260448101839052606481018490526084016110d0565b6000838152602087815260408083206001600160a01b038e16845290915290209082900390555b6001600160a01b03881615614518576000828152602086815260408083206001600160a01b038c168452909152812080548392906145129084906158ee565b90915550505b50508061452490615a40565b9050614420565b5083516001036145ac5760208401516000906020850151909150866001600160a01b0316886001600160a01b0316846001600160a01b03167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62858560405161459d929190918252602082015260400190565b60405180910390a450506110e6565b846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516145fb929190615ddb565b60405180910390a4505050505050565b6060826146205761461b82614667565b612b98565b815115801561463757506001600160a01b0384163b155b1561466057604051639996b31560e01b81526001600160a01b03851660048201526024016110d0565b5080612b98565b8051156146775780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604080516101c081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905290610160820190815260200160005b8152600060209091015290565b6040805160a0810182526000808252602082018190529181018290529060608201906146f7565b6001600160a01b0381168114613d3357600080fd5b803561474b8161472b565b919050565b6000806040838503121561476357600080fd5b823561476e8161472b565b946020939093013593505050565b6001600160e01b031981168114613d3357600080fd5b6000602082840312156147a457600080fd5b8135612b988161477c565b6000602082840312156147c157600080fd5b5035919050565b60005b838110156147e35781810151838201526020016147cb565b50506000910152565b600081518084526148048160208601602086016147c8565b601f01601f19169290920160200192915050565b602081526000612b9860208301846147ec565b634e487b7160e01b600052604160045260246000fd5b6040516101c081016001600160401b03811182821017156148645761486461482b565b60405290565b60405160e081016001600160401b03811182821017156148645761486461482b565b604080519081016001600160401b03811182821017156148645761486461482b565b60405160c081016001600160401b03811182821017156148645761486461482b565b604051601f8201601f191681016001600160401b03811182821017156148f8576148f861482b565b604052919050565b6001600160801b0381168114613d3357600080fd5b803561474b81614900565b803561ffff8116811461474b57600080fd5b803560ff8116811461474b57600080fd5b80356002811061474b57600080fd5b80356003811061474b57600080fd5b60006101c0828403121561497457600080fd5b61497c614841565b905061498782614915565b815261499560208301614915565b60208201526149a660408301614915565b60408201526149b760608301614915565b60608201526149c860808301614915565b60808201526149d960a08301614915565b60a08201526149ea60c08301614915565b60c08201526149fb60e08301614915565b60e0820152610100614a0e818401614915565b90820152610120614a20838201614920565b90820152610140614a32838201614932565b90820152610160614a44838201614943565b90820152610180614a56838201614952565b908201526101a0614a68838201614740565b9082015292915050565b8015158114613d3357600080fd5b803561474b81614a72565b600080600080600080868803610320811215614aa657600080fd5b614ab08989614961565b965060e06101bf1982011215614ac557600080fd5b50614ace61486a565b6101c0880135614add81614900565b81526101e0880135614aee81614900565b6020820152610200880135614b0281614900565b6040820152610220880135614b1681614900565b6060820152614b286102408901614915565b6080820152614b3a6102608901614915565b60a0820152614b4c6102808901614932565b60c08201529450614b606102a08801614740565b9350614b6f6102c08801614740565b9250614b7e6102e08801614920565b9150614b8d6103008801614a80565b90509295509295509295565b600080600080600080600080610100898b031215614bb657600080fd5b8835614bc18161472b565b97506020890135614bd18161472b565b96506040890135614be181614900565b95506060890135614bf181614900565b94506080890135614c0181614900565b9350614c0f60a08a01614920565b9250614c1d60c08a01614932565b9150614c2b60e08a01614943565b90509295985092959890939650565b803565ffffffffffff8116811461474b57600080fd5b60008060408385031215614c6357600080fd5b614c6c83614c3a565b9150614c7a60208401614c3a565b90509250929050565b60006001600160401b03821115614c9c57614c9c61482b565b5060051b60200190565b600082601f830112614cb757600080fd5b81356020614ccc614cc783614c83565b6148d0565b82815260059290921b84018101918181019086841115614ceb57600080fd5b8286015b84811015614d065780358352918301918301614cef565b509695505050505050565b600082601f830112614d2257600080fd5b81356001600160401b03811115614d3b57614d3b61482b565b614d4e601f8201601f19166020016148d0565b818152846020838601011115614d6357600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a08688031215614d9857600080fd5b8535614da38161472b565b94506020860135614db38161472b565b935060408601356001600160401b0380821115614dcf57600080fd5b614ddb89838a01614ca6565b94506060880135915080821115614df157600080fd5b614dfd89838a01614ca6565b93506080880135915080821115614e1357600080fd5b50614e2088828901614d11565b9150509295509295909350565b600060a08284031215614e3f57600080fd5b60405160a081018181106001600160401b0382111715614e6157614e6161482b565b6040529050808235614e7281614900565b81526020830135614e8281614900565b60208201526040830135614e9581614900565b6040820152614ea660608401614943565b60608201526080830135614eb98161472b565b6080919091015292915050565b600082601f830112614ed757600080fd5b81356020614ee7614cc783614c83565b82815260c09283028501820192828201919087851115614f0657600080fd5b8387015b85811015614f555781818a031215614f225760008081fd5b614f2a61488c565b614f348a83614e2d565b815260a0820135614f4481614900565b818701528452928401928101614f0a565b5090979650505050505050565b600082601f830112614f7357600080fd5b81356020614f83614cc783614c83565b8281526101e09283028501820192828201919087851115614fa357600080fd5b8387015b85811015614f555781818a031215614fbf5760008081fd5b614fc761488c565b614fd18a83614961565b81526101c0820135614fe281614900565b818701528452928401928101614fa7565b80600f0b8114613d3357600080fd5b600060c0828403121561501457600080fd5b61501c6148ae565b9050813561502981614900565b8152602082013561503981614900565b6020820152604082013561504c81614ff3565b6040820152606082013561505f81614ff3565b6060820152608082013561507281614ff3565b608082015260a082013561508581614ff3565b60a082015292915050565b6000602082840312156150a257600080fd5b81356001600160401b03808211156150b957600080fd5b9083019061016082860312156150ce57600080fd5b6150d66148ae565b8235828111156150e557600080fd5b6150f187828601614ec6565b82525060208301358281111561510657600080fd5b61511287828601614f62565b60208301525060408301358281111561512a57600080fd5b61513687828601614f62565b6040830152506151498660608501615002565b606082015261515b6101208401614943565b608082015261516d6101408401614932565b60a082015295945050505050565b6000806000806080858703121561519157600080fd5b843561519c8161472b565b93506151aa60208601614943565b92506151b860408601614920565b91506151c660608601614932565b905092959194509250565b634e487b7160e01b600052602160045260246000fd5b600281106151f7576151f76151d1565b9052565b60038110613d3357613d336151d1565b6151f7816151fb565b81516001600160801b031681526101c08101602083015161524060208401826001600160801b03169052565b50604083015161525b60408401826001600160801b03169052565b50606083015161527660608401826001600160801b03169052565b50608083015161529160808401826001600160801b03169052565b5060a08301516152ac60a08401826001600160801b03169052565b5060c08301516152c760c08401826001600160801b03169052565b5060e08301516152e260e08401826001600160801b03169052565b50610100838101516001600160801b0316908301526101208084015161ffff16908301526101408084015160ff169083015261016080840151615327828501826151e7565b50506101808084015161533c8285018261520b565b50506101a0838101516001600160a01b038116848301525b505092915050565b6000806040838503121561536f57600080fd5b82356001600160401b038082111561538657600080fd5b818501915085601f83011261539a57600080fd5b813560206153aa614cc783614c83565b82815260059290921b840181019181810190898411156153c957600080fd5b948201945b838610156153f05785356153e18161472b565b825294820194908201906153ce565b9650508601359250508082111561540657600080fd5b5061541385828601614ca6565b9150509250929050565b600081518084526020808501945080840160005b8381101561544d57815187529582019590820190600101615431565b509495945050505050565b602081526000612b98602083018461541d565b60008060008060008060008060006103408a8c03121561548a57600080fd5b6154948b8b614961565b98506154a48b6101c08c01614e2d565b97506102608a01356154b58161472b565b96506102808a01356154c681614900565b95506102a08a01356154d781614900565b94506154e66102c08b01614920565b93506154f56102e08b01614932565b92506155046103008b01614932565b91506155136103208b01614943565b90509295985092959850929598565b602081016104bd82846151e7565b6000806040838503121561554357600080fd5b61554c83614c3a565b9150614c7a60208401614943565b6000806000806080858703121561557057600080fd5b843561557b8161472b565b9350602085013561558b81614900565b9250604085013561559b81614900565b91506151c660608601614943565b6000806000606084860312156155be57600080fd5b83356155c98161472b565b92506155d760208501614943565b915060408401356155e781614900565b809150509250925092565b6000806040838503121561560557600080fd5b823561554c8161472b565b600060a0820190506001600160801b0380845116835280602085015116602084015280604085015116604084015250606083015161565160608401826151e7565b506080928301516001600160a01b0316919092015290565b60008060008060006080868803121561568157600080fd5b853561568c8161472b565b9450602086013561569c8161472b565b93506040860135925060608601356001600160401b03808211156156bf57600080fd5b818801915088601f8301126156d357600080fd5b8135818111156156e257600080fd5b8960208285010111156156f457600080fd5b9699959850939650602001949392505050565b6000806040838503121561571a57600080fd5b82356157258161472b565b9150602083013561573581614a72565b809150509250929050565b6020810161574d836151fb565b91905290565b6000806040838503121561576657600080fd5b82356157718161472b565b915060208301356157358161472b565b600080600080600060a0868803121561579957600080fd5b85356157a48161472b565b945060208601356157b48161472b565b9350604086013592506060860135915060808601356001600160401b038111156157dd57600080fd5b614e2088828901614d11565b600181811c908216806157fd57607f821691505b60208210810361581d57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6001600160801b0382811682821603908082111561585957615859615823565b5092915050565b87815260e0810161587460208301896151e7565b60ff9690961660408201526001600160801b039485166060820152928416608084015290831660a083015290911660c09091015292915050565b6000602082840312156158c057600080fd5b8151612b988161472b565b8381526001600160801b038316602082015260608101611f0760408301846151e7565b808201808211156104bd576104bd615823565b6001600160a01b039290921682526001600160801b0316602082015260400190565b60006020828403121561593557600080fd5b8151612b9881614a72565b600f81810b9083900b0160016001607f1b0381136f7fffffffffffffffffffffffffffffff19821217156104bd576104bd615823565b600081600f0b60016001607f1b0319810361599357615993615823565b60000392915050565b83815261010081016159b160208301856151e7565b6001600160801b03808451166040840152806020850151166060840152506040830151600f0b60808301526060830151600f0b60a08301526080830151600f0b60c083015260a0830151600f0b60e0830152949350505050565b634e487b7160e01b600052603260045260246000fd5b600060ff821660ff8103615a3757615a37615823565b60010192915050565b600060018201615a5257615a52615823565b5060010190565b600061ffff808316818103615a7057615a70615823565b6001019392505050565b65ffffffffffff82811682821603908082111561585957615859615823565b634e487b7160e01b600052601260045260246000fd5b60006001600160801b0380841680615ac957615ac9615a99565b92169190910492915050565b600060208284031215615ae757600080fd5b5051919050565b6001600160801b0381811683821602808216919082811461535457615354615823565b6001600160801b0381811683821601908082111561585957615859615823565b60008060408385031215615b4457600080fd5b8251615b4f81614900565b602084015190925061573581614900565b82815260408101612b9860208301846151e7565b60008060008060808587031215615b8a57600080fd5b8451615b9581614ff3565b6020860151909450615ba681614900565b6040860151909350615bb781614900565b6060860151909250615bc881614900565b939692955090935050565b818103818111156104bd576104bd615823565b600082615bf557615bf5615a99565b500490565b6001600160a01b03868116825285166020820152604081018490526060810183905260a060808201819052600090615c34908301846147ec565b979650505050505050565b600060208284031215615c5157600080fd5b8151612b988161477c565b6001600160a01b0386811682528516602082015260a060408201819052600090615c889083018661541d565b8281036060840152615c9a818661541d565b90508281036080840152615cae81856147ec565b98975050505050505050565b601f82111561323157600081815260208120601f850160051c81016020861015615ce15750805b601f850160051c820191505b818110156110e657828155600101615ced565b81516001600160401b03811115615d1957615d1961482b565b615d2d81615d2784546157e9565b84615cba565b602080601f831160018114615d625760008415615d4a5750858301515b600019600386901b1c1916600185901b1785556110e6565b600085815260208120601f198616915b82811015615d9157888601518255948401946001909101908401615d72565b5085821015615daf5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008251615dd18184602087016147c8565b9190910192915050565b604081526000615dee604083018561541d565b8281036020840152615e00818561541d565b9594505050505056fe88be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c4500cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300a264697066735822122066dfa02342a87090dd44c6cfff24ab8863087c665c36b05a26056413b28a577d64736f6c63430008150033