diff --git a/apps/dapp/abi/contracts/templegold/AuctionBase.sol/AuctionBase.json b/apps/dapp/abi/contracts/templegold/AuctionBase.sol/AuctionBase.json new file mode 100644 index 000000000..dd91698c2 --- /dev/null +++ b/apps/dapp/abi/contracts/templegold/AuctionBase.sol/AuctionBase.json @@ -0,0 +1,343 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "AuctionBase", + "sourceName": "contracts/templegold/AuctionBase.sol", + "abi": [ + { + "inputs": [], + "name": "AlreadyClaimed", + "type": "error" + }, + { + "inputs": [], + "name": "AlreadyRecovered", + "type": "error" + }, + { + "inputs": [], + "name": "AuctionActive", + "type": "error" + }, + { + "inputs": [], + "name": "AuctionEnded", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "epochId", + "type": "uint256" + } + ], + "name": "CannotClaim", + "type": "error" + }, + { + "inputs": [], + "name": "CannotDeposit", + "type": "error" + }, + { + "inputs": [], + "name": "CannotStartAuction", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidEpoch", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidOperation", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "epochId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "starter", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint128", + "name": "startTime", + "type": "uint128" + }, + { + "indexed": false, + "internalType": "uint128", + "name": "endTime", + "type": "uint128" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "auctionTokenAmount", + "type": "uint256" + } + ], + "name": "AuctionStarted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "epochId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "bidTokenAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "auctionTokenAmount", + "type": "uint256" + } + ], + "name": "Claim", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "depositor", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "epochId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Deposit", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "bid", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "depositor", + "type": "address" + }, + { + "internalType": "uint256", + "name": "epochId", + "type": "uint256" + } + ], + "name": "claimed", + "outputs": [ + { + "internalType": "bool", + "name": "claimed", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "depositor", + "type": "address" + }, + { + "internalType": "uint256", + "name": "epochId", + "type": "uint256" + } + ], + "name": "claimedAmount", + "outputs": [ + { + "internalType": "uint256", + "name": "claimedAmount", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "currentEpoch", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "depositor", + "type": "address" + }, + { + "internalType": "uint256", + "name": "epochId", + "type": "uint256" + } + ], + "name": "depositors", + "outputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "epochId", + "type": "uint256" + } + ], + "name": "epochsWithoutBidsRecovered", + "outputs": [ + { + "internalType": "bool", + "name": "recovered", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "epochId", + "type": "uint256" + } + ], + "name": "getEpochInfo", + "outputs": [ + { + "components": [ + { + "internalType": "uint128", + "name": "startTime", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "endTime", + "type": "uint128" + }, + { + "internalType": "uint256", + "name": "totalBidTokenAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalAuctionTokenAmount", + "type": "uint256" + } + ], + "internalType": "struct IAuctionBase.EpochInfo", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "recoverToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "startAuction", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/templegold/DaiGoldAuction.sol/DaiGoldAuction.json b/apps/dapp/abi/contracts/templegold/DaiGoldAuction.sol/DaiGoldAuction.json new file mode 100644 index 000000000..50ca814a6 --- /dev/null +++ b/apps/dapp/abi/contracts/templegold/DaiGoldAuction.sol/DaiGoldAuction.json @@ -0,0 +1,1174 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "DaiGoldAuction", + "sourceName": "contracts/templegold/DaiGoldAuction.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_templeGold", + "type": "address" + }, + { + "internalType": "address", + "name": "_bidToken", + "type": "address" + }, + { + "internalType": "address", + "name": "_treasury", + "type": "address" + }, + { + "internalType": "address", + "name": "_rescuer", + "type": "address" + }, + { + "internalType": "address", + "name": "_executor", + "type": "address" + }, + { + "internalType": "address", + "name": "_auctionStarter", + "type": "address" + } + ], + "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": [], + "name": "AlreadyClaimed", + "type": "error" + }, + { + "inputs": [], + "name": "AlreadyRecovered", + "type": "error" + }, + { + "inputs": [], + "name": "AuctionActive", + "type": "error" + }, + { + "inputs": [], + "name": "AuctionEnded", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "epochId", + "type": "uint256" + } + ], + "name": "CannotClaim", + "type": "error" + }, + { + "inputs": [], + "name": "CannotDeposit", + "type": "error" + }, + { + "inputs": [], + "name": "CannotStartAuction", + "type": "error" + }, + { + "inputs": [], + "name": "ExpectedNonZero", + "type": "error" + }, + { + "inputs": [], + "name": "FailedInnerCall", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidAccess", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidAddress", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "InvalidAmount", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidEpoch", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidOperation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "epochGoldAmount", + "type": "uint256" + } + ], + "name": "LowGoldDistributed", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "y", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "denominator", + "type": "uint256" + } + ], + "name": "PRBMath_MulDiv_Overflow", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "SafeERC20FailedOperation", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "epochId", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint32", + "name": "auctionsTimeDiff", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "auctionStartCooldown", + "type": "uint32" + }, + { + "internalType": "uint192", + "name": "auctionMinimumDistributedGold", + "type": "uint192" + } + ], + "indexed": false, + "internalType": "struct IDaiGoldAuction.AuctionConfig", + "name": "config", + "type": "tuple" + } + ], + "name": "AuctionConfigSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "epochId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "starter", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint128", + "name": "startTime", + "type": "uint128" + }, + { + "indexed": false, + "internalType": "uint128", + "name": "endTime", + "type": "uint128" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "auctionTokenAmount", + "type": "uint256" + } + ], + "name": "AuctionStarted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "starter", + "type": "address" + } + ], + "name": "AuctionStarterSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "bidToken", + "type": "address" + } + ], + "name": "BidTokenSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "epochId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "bidTokenAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "auctionTokenAmount", + "type": "uint256" + } + ], + "name": "Claim", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "depositor", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "epochId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Deposit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "bytes4", + "name": "fnSelector", + "type": "bytes4" + }, + { + "indexed": true, + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "ExplicitAccessSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "name": "GoldDistributionNotified", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newExecutor", + "type": "address" + } + ], + "name": "NewExecutorAccepted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "oldProposedExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newProposedExecutor", + "type": "address" + } + ], + "name": "NewExecutorProposed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newRescuer", + "type": "address" + } + ], + "name": "NewRescuerAccepted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "oldProposedRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newProposedRescuer", + "type": "address" + } + ], + "name": "NewRescuerProposed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "RescueModeSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TokenRecovered", + "type": "event" + }, + { + "inputs": [], + "name": "AUCTION_DURATION", + "outputs": [ + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "acceptExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "acceptRescuer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "auctionStarter", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "bid", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "bidToken", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "canDeposit", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "epochId", + "type": "uint256" + } + ], + "name": "claim", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "depositor", + "type": "address" + }, + { + "internalType": "uint256", + "name": "epochId", + "type": "uint256" + } + ], + "name": "claimed", + "outputs": [ + { + "internalType": "bool", + "name": "claimed", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "depositor", + "type": "address" + }, + { + "internalType": "uint256", + "name": "epochId", + "type": "uint256" + } + ], + "name": "claimedAmount", + "outputs": [ + { + "internalType": "uint256", + "name": "claimedAmount", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "currentEpoch", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "depositor", + "type": "address" + }, + { + "internalType": "uint256", + "name": "epochId", + "type": "uint256" + } + ], + "name": "depositors", + "outputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "distributeGold", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "epochId", + "type": "uint256" + } + ], + "name": "epochGoldSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "epochId", + "type": "uint256" + } + ], + "name": "epochsWithoutBidsRecovered", + "outputs": [ + { + "internalType": "bool", + "name": "recovered", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "executor", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "name": "explicitFunctionAccess", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getAuctionConfig", + "outputs": [ + { + "components": [ + { + "internalType": "uint32", + "name": "auctionsTimeDiff", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "auctionStartCooldown", + "type": "uint32" + }, + { + "internalType": "uint192", + "name": "auctionMinimumDistributedGold", + "type": "uint192" + } + ], + "internalType": "struct IDaiGoldAuction.AuctionConfig", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "depositor", + "type": "address" + } + ], + "name": "getClaimableAtCurrentEpoch", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "depositor", + "type": "address" + }, + { + "internalType": "uint256", + "name": "epochId", + "type": "uint256" + } + ], + "name": "getClaimableAtEpoch", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "epochId", + "type": "uint256" + } + ], + "name": "getEpochInfo", + "outputs": [ + { + "components": [ + { + "internalType": "uint128", + "name": "startTime", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "endTime", + "type": "uint128" + }, + { + "internalType": "uint256", + "name": "totalBidTokenAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalAuctionTokenAmount", + "type": "uint256" + } + ], + "internalType": "struct IAuctionBase.EpochInfo", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "inRescueMode", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "isCurrentEpochEnded", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "nextAuctionGoldAmount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "nextEpoch", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "notifyDistribution", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "proposeNewExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "proposeNewRescuer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "epochId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "recoverTempleGoldForZeroBidAuction", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "recoverToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "rescuer", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint32", + "name": "auctionsTimeDiff", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "auctionStartCooldown", + "type": "uint32" + }, + { + "internalType": "uint192", + "name": "auctionMinimumDistributedGold", + "type": "uint192" + } + ], + "internalType": "struct IDaiGoldAuction.AuctionConfig", + "name": "_config", + "type": "tuple" + } + ], + "name": "setAuctionConfig", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_starter", + "type": "address" + } + ], + "name": "setAuctionStarter", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_bidToken", + "type": "address" + } + ], + "name": "setBidToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "allowedCaller", + "type": "address" + }, + { + "components": [ + { + "internalType": "bytes4", + "name": "fnSelector", + "type": "bytes4" + }, + { + "internalType": "bool", + "name": "allowed", + "type": "bool" + } + ], + "internalType": "struct ITempleElevatedAccess.ExplicitAccess[]", + "name": "access", + "type": "tuple[]" + } + ], + "name": "setExplicitAccess", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "setRescueMode", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "startAuction", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "templeGold", + "outputs": [ + { + "internalType": "contract ITempleGold", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "treasury", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x60c06040523480156200001157600080fd5b50604051620031ea380380620031ea833981016040819052620000349162000161565b82826001600160a01b0382166200005e5760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b038116620000865760405163e6c4247b60e01b815260040160405180910390fd5b816001600160a01b0316816001600160a01b031603620000b95760405163e6c4247b60e01b815260040160405180910390fd5b600680546001600160a01b03199081166001600160a01b039485161790915560078054821692841692909217909155878216608052600b8054821688841617905585821660a052600c805490911691831691821790556040517f9912e2a4535169ea3ec6c9138afab89a1ba028d9534726bbedd154a25f11392c90600090a2505050505050620001e2565b80516001600160a01b03811681146200015c57600080fd5b919050565b60008060008060008060c087890312156200017b57600080fd5b620001868762000144565b9550620001966020880162000144565b9450620001a66040880162000144565b9350620001b66060880162000144565b9250620001c66080880162000144565b9150620001d660a0880162000144565b90509295509295509295565b60805160a051612faa620002406000396000818161058c0152610fbb0152600081816107a401528181610e890152818161122d0152818161184401528181611b14015281816123a20152818161241901526126810152612faa6000f3fe608060405234801561001057600080fd5b50600436106102ad5760003560e01c8063766718081161017b578063ccb51004116100d8578063e110dfda1161008c578063e78a587511610071578063e78a5875146107d9578063f0234008146107e1578063f3ed8f251461080457600080fd5b8063e110dfda1461079f578063e36977cc146107c657600080fd5b8063d9a349c1116100bd578063d9a349c11461073e578063daeccc7914610751578063dfafd4fd1461077f57600080fd5b8063ccb5100414610723578063d2fbb3cb1461072b57600080fd5b8063ab1b71bd1161012f578063b3ba0e2b11610114578063b3ba0e2b146106e7578063bfccf0ec146106f0578063c34c08e51461070357600080fd5b8063ab1b71bd146106cc578063aea0e78b146106df57600080fd5b80638503ae3d116101605780638503ae3d146105d9578063a271e52514610696578063a7229fd9146106b957600080fd5b806376671808146105c95780638112c4af146105d157600080fd5b806338a6318311610229578063501ee126116101dd57806361d027b3116101c257806361d027b314610587578063654f2fc8146105ae5780636b64c769146105c157600080fd5b8063501ee1261461054957806355b4b1a41461055c57600080fd5b8063454a2ab31161020e578063454a2ab3146104dd578063466c01b8146104f05780634dd6c8de1461051b57600080fd5b806338a631831461047b578063396939f21461049b57600080fd5b806314e21ecf116102805780631a7d73d0116102655780631a7d73d01461041b5780631f21140514610460578063379607f51461046857600080fd5b806314e21ecf146103dd5780631810fe7f146103fe57600080fd5b8063032ef901146102b257806307f184f1146102c7578063128e771b146102da578063135022c2146102ed575b600080fd5b6102c56102c0366004612a13565b610827565b005b6102c56102d5366004612a59565b6108d6565b6102c56102e8366004612a59565b610a0e565b6103866102fb366004612a74565b60408051608081018252600080825260208201819052918101829052606081019190915250600090815260016020818152604092839020835160808101855281546fffffffffffffffffffffffffffffffff80821683527001000000000000000000000000000000009091041692810192909252918201549281019290925260020154606082015290565b6040516103d4919060006080820190506fffffffffffffffffffffffffffffffff80845116835280602085015116602084015250604083015160408301526060830151606083015292915050565b60405180910390f35b6103f06103eb366004612a59565b610b66565b6040519081526020016103d4565b60095461040b9060ff1681565b60405190151581526020016103d4565b600c5461043b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016103d4565b6102c5610b7a565b6102c5610476366004612a74565b610c99565b60065461043b9073ffffffffffffffffffffffffffffffffffffffff1681565b61040b60008054815260016020526040812054427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff161115905090565b6102c56104eb366004612a74565b610f13565b6103f06104fe366004612a8d565b600260209081526000928352604080842090915290825290205481565b61040b610529366004612a8d565b600360209081526000928352604080842090915290825290205460ff1681565b6102c5610557366004612a59565b61107a565b6103f061056a366004612a8d565b600460209081526000928352604080842090915290825290205481565b61043b7f000000000000000000000000000000000000000000000000000000000000000081565b6102c56105bc366004612a74565b611215565b6102c5611309565b6000546103f0565b6102c5611617565b61064f60408051606081018252600080825260208201819052918101919091525060408051606081018252600e5463ffffffff8082168352640100000000820416602083015268010000000000000000900477ffffffffffffffffffffffffffffffffffffffffffffffff169181019190915290565b60408051825163ffffffff9081168252602080850151909116908201529181015177ffffffffffffffffffffffffffffffffffffffffffffffff16908201526060016103d4565b6106a062093a8081565b60405167ffffffffffffffff90911681526020016103d4565b6102c56106c7366004612ab7565b611757565b6103f06106da366004612a8d565b611b43565b6103f0611c4e565b6103f0600d5481565b6102c56106fe366004612af3565b611c5d565b60075461043b9073ffffffffffffffffffffffffffffffffffffffff1681565b6102c5611e5c565b6102c5610739366004612b79565b611e66565b6102c561074c366004612a59565b612024565b61040b61075f366004612bc1565b600860209081526000928352604080842090915290825290205460ff1681565b600b5461043b9073ffffffffffffffffffffffffffffffffffffffff1681565b61043b7f000000000000000000000000000000000000000000000000000000000000000081565b6102c56107d4366004612bf4565b612169565b61040b612446565b6103f06107ef366004612a74565b60009081526001602052604090206002015490565b61040b610812366004612a74565b60056020526000908152604090205460ff1681565b60065473ffffffffffffffffffffffffffffffffffffffff163314610878576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604051811515907f18f4a9a726c72020fd959c636d2fd464c6cefe90afeaea3c830b971614cf70b690600090a2600980547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60065473ffffffffffffffffffffffffffffffffffffffff163314610927576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610974576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60095460405173ffffffffffffffffffffffffffffffffffffffff808416926101009004169033907f374d23b359cab0f8963c5c1715a6de7974f53af00aecc27de50d93906b70943e90600090a46009805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b610a3c336000357fffffffff000000000000000000000000000000000000000000000000000000001661245e565b610a72576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff831617905560008054815260016020526040902054427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff161115610b22576040517f398d4d3200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405173ffffffffffffffffffffffffffffffffffffffff8216907f9912e2a4535169ea3ec6c9138afab89a1ba028d9534726bbedd154a25f11392c90600090a250565b6000610b7482600054611b43565b92915050565b600a5473ffffffffffffffffffffffffffffffffffffffff163314610bcb576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60065473ffffffffffffffffffffffffffffffffffffffff163303610c1c576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600754604051339173ffffffffffffffffffffffffffffffffffffffff16907fe963dc9c0d2165b080440a5d2665566142f2426b1ea15f3da8390b0fd336b06490600090a3600780547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163317909155600a80549091169055565b60008181526001602052604090208054427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff161115610d11576040517fbf009dab000000000000000000000000000000000000000000000000000000008152600481018390526024015b60405180910390fd5b80546fffffffffffffffffffffffffffffffff16600003610d5e576040517fd5b25b6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33600090815260036020908152604080832085845290915290205460ff1615610db3576040517f646cf55800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33600090815260026020908152604080832085845290915281205490819003610e08576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000908152600360209081526040808320868452909152812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001908117909155600284015490840154610e6391849184612521565b3360008181526004602090815260408083208984529091529020829055909150610ec5907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169083612568565b604080518581526020810184905290810182905233907f45c072aa05b9853b5a993de7a28bc332ee01404a628cec1a23ce0f659f842ef19060600160405180910390a250505050565b905090565b600080548152600160205260409020610f2b906125e9565b610f61576040517f65ca8f5400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600003610f9b576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600b54610fe09073ffffffffffffffffffffffffffffffffffffffff16337f000000000000000000000000000000000000000000000000000000000000000084612639565b60008054338252600260209081526040808420838552909152822080549192849261100c908490612c46565b909155505060008181526001602081905260408220908101805491928592611035908490612c46565b9091555050604080518381526020810185905233917f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a15910160405180910390a2505050565b6110a8336000357fffffffff000000000000000000000000000000000000000000000000000000001661245e565b6110de576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff811661112b576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054815260016020526040902054427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff16111561119b576040517f398d4d3200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f24e72a08217d19828f258be09f53f19295e0b24dbd7d8f168403e54e88af5bc9906020015b60405180910390a150565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016148015906112865750611284336000357fffffffff000000000000000000000000000000000000000000000000000000001661245e565b155b156112bd576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600d60008282546112cf9190612c46565b9091555050604080518281524260208201527f1e215fdd40f0b4854c5a2b2cfe53859ca232f085a5b129c9f65b6bfeb094c5e4910161120a565b600c5473ffffffffffffffffffffffffffffffffffffffff16158015906113485750600c5473ffffffffffffffffffffffffffffffffffffffff163314155b1561137f576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054808252600160205260409091208054427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff1611156113f2576040517ffcd189b500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600e8215801590611450575080548254429161143c9163ffffffff9091169070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16612c59565b6fffffffffffffffffffffffffffffffff16115b15611487576040517ffcd189b500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61148f61267f565b600d8054600091829055906114a5856001612c46565b6000819055835490915068010000000000000000900477ffffffffffffffffffffffffffffffffffffffffffffffff16821015611511576040517fd1c6fee000000000000000000000000000000000000000000000000000000000815260048101839052602401610d08565b600081815260016020526040812060028101849055845490919061154390640100000000900463ffffffff1642612c59565b82547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff82161783559050600061158e62093a8083612c59565b83546fffffffffffffffffffffffffffffffff9081167001000000000000000000000000000000008383169081029190911786556040805188815292861660208401528201526060810187905290915033907f2f0e07e2baf6351377b2a46b5ccf5cd22b494921f870da223157659e174918f99060800160405180910390a25050505050505050565b600954610100900473ffffffffffffffffffffffffffffffffffffffff16331461166d576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60075473ffffffffffffffffffffffffffffffffffffffff1633036116be576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600654604051339173ffffffffffffffffffffffffffffffffffffffff16907ff07131157ebea15896dc89264eb9a7572e67cc9fad6b855015730fcec10704e090600090a3600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001633179055600980547fffffffffffffffffffffff0000000000000000000000000000000000000000ff169055565b611785336000357fffffffff000000000000000000000000000000000000000000000000000000001661245e565b6117bb576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611808576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600003611842576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611922578273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f879f92dded0f26b83c3e00b12e0395dc72cfc3077343d1854ed6988edd1f9096836040516118f491815260200190565b60405180910390a361191d73ffffffffffffffffffffffffffffffffffffffff84168383612568565b505050565b600080548082526001602052604082208054919290916fffffffffffffffffffffffffffffffff169003611982576040517f398d4d3200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61198b816125e9565b156119c2576040517fb37f700600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8054427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff1611611a23576040517fa0e9298400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600281015480841115611a81576040517fb2b3b53b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8716600482015260248101859052604401610d08565b6000838152600160208181526040808420848155928301849055600290920192909255600d80548785030190555185815273ffffffffffffffffffffffffffffffffffffffff88811692908816917f879f92dded0f26b83c3e00b12e0395dc72cfc3077343d1854ed6988edd1f9096910160405180910390a3611b3b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168686612568565b505050505050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260036020908152604080832084845290915281205460ff1615611b8457506000610b74565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600260209081526040808320858452909152902054801580611bc3575060005483115b15611bd2576000915050610b74565b6000838152600160208181526040808420815160808101835281546fffffffffffffffffffffffffffffffff8082168352700100000000000000000000000000000000909104169381019390935292830154908201819052600290920154606082018190529092611c4592859291612521565b95945050505050565b60008054610f0e906001612c46565b611c8b336000357fffffffff000000000000000000000000000000000000000000000000000000001661245e565b611cc1576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316611d0e576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805180820190915260008082526020820152819060005b82811015611b3b57848482818110611d4157611d41612c89565b905060400201803603810190611d579190612cb8565b91508160200151151582600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168773ffffffffffffffffffffffffffffffffffffffff167ff5736e75de2c751f775d4c5ed517289f77074f8c337f451ba4c0c3ed1dd7f9ad60405160405180910390a460208281015173ffffffffffffffffffffffffffffffffffffffff8816600090815260088352604080822086517fffffffff000000000000000000000000000000000000000000000000000000001683529093529190912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055611e5581612d3c565b9050611d27565b611e6461267f565b565b611e94336000357fffffffff000000000000000000000000000000000000000000000000000000001661245e565b611eca576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611eda6040820160208301612d86565b63ffffffff161580611f135750611ef76060820160408301612dc9565b77ffffffffffffffffffffffffffffffffffffffffffffffff16155b80611f2e5750611f266020820182612d86565b63ffffffff16155b15611f65576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080548082526001602052604090912054427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff161115611fd7576040517f398d4d3200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600e611fe48282612de6565b9050507f0ae1772a552aa48ab7e8bf58c335b3d4ce981b3d6c928f90d69a58f0f28d75fe8183604051612018929190612e8c565b60405180910390a15050565b612052336000357fffffffff000000000000000000000000000000000000000000000000000000001661245e565b612088576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166120d5576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a5460075460405173ffffffffffffffffffffffffffffffffffffffff8085169381169216907f4857570a90fe0a0fc580e89a287e77576141ac8e2e8b3710cd26db44f44156c190600090a4600a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b612197336000357fffffffff000000000000000000000000000000000000000000000000000000001661245e565b6121cd576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff811661221a576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054821115612256576040517fd5b25b6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526005602052604090205460ff161561229f576040517f3e49310000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602052604090208054427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff16111561230f576040517fb37f700600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018101541561234b576040517f398d4d3200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838152600560205260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556002820154905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811691908516907f879f92dded0f26b83c3e00b12e0395dc72cfc3077343d1854ed6988edd1f9096906123f79085815260200190565b60405180910390a361244073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168483612568565b50505050565b600080548152600160205260408120610f0e906125e9565b60095460009060ff1615612490575060065473ffffffffffffffffffffffffffffffffffffffff838116911614610b74565b60075473ffffffffffffffffffffffffffffffffffffffff8481169116148061250b575073ffffffffffffffffffffffffffffffffffffffff831660009081526008602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290205460ff165b1561251857506001610b74565b50600092915050565b600061252e8585856126fb565b905081801561254d57506000838061254857612548612ef9565b858709115b156125605761255d600182612c46565b90505b949350505050565b60405173ffffffffffffffffffffffffffffffffffffffff83811660248301526044820183905261191d91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061280c565b8054600090426fffffffffffffffffffffffffffffffff90911611801590610b745750505470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16421090565b60405173ffffffffffffffffffffffffffffffffffffffff84811660248301528381166044830152606482018390526124409186918216906323b872dd906084016125a2565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631249c58b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156126e757600080fd5b505af1158015612440573d6000803e3d6000fd5b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff858709858702925082811083820303915050806000036127535783828161274957612749612ef9565b0492505050612805565b83811061279d576040517f63a05778000000000000000000000000000000000000000000000000000000008152600481018790526024810186905260448101859052606401610d08565b600084868809851960019081018716968790049682860381900495909211909303600082900391909104909201919091029190911760038402600290811880860282030280860282030280860282030280860282030280860282030280860290910302029150505b9392505050565b600061282e73ffffffffffffffffffffffffffffffffffffffff8416836128a2565b905080516000141580156128535750808060200190518101906128519190612f28565b155b1561191d576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610d08565b606061280583836000846000808573ffffffffffffffffffffffffffffffffffffffff1684866040516128d59190612f45565b60006040518083038185875af1925050503d8060008114612912576040519150601f19603f3d011682016040523d82523d6000602084013e612917565b606091505b5091509150612927868383612931565b9695505050505050565b60608261294657612941826129c0565b612805565b815115801561296a575073ffffffffffffffffffffffffffffffffffffffff84163b155b156129b9576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610d08565b5080612805565b8051156129d05780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b8015158114612a0257600080fd5b600060208284031215612a2557600080fd5b813561280581612a05565b803573ffffffffffffffffffffffffffffffffffffffff81168114612a5457600080fd5b919050565b600060208284031215612a6b57600080fd5b61280582612a30565b600060208284031215612a8657600080fd5b5035919050565b60008060408385031215612aa057600080fd5b612aa983612a30565b946020939093013593505050565b600080600060608486031215612acc57600080fd5b612ad584612a30565b9250612ae360208501612a30565b9150604084013590509250925092565b600080600060408486031215612b0857600080fd5b612b1184612a30565b9250602084013567ffffffffffffffff80821115612b2e57600080fd5b818601915086601f830112612b4257600080fd5b813581811115612b5157600080fd5b8760208260061b8501011115612b6657600080fd5b6020830194508093505050509250925092565b600060608284031215612b8b57600080fd5b50919050565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114612a5457600080fd5b60008060408385031215612bd457600080fd5b612bdd83612a30565b9150612beb60208401612b91565b90509250929050565b60008060408385031215612c0757600080fd5b82359150612beb60208401612a30565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115610b7457610b74612c17565b6fffffffffffffffffffffffffffffffff818116838216019080821115612c8257612c82612c17565b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060408284031215612cca57600080fd5b6040516040810181811067ffffffffffffffff82111715612d14577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604052612d2083612b91565b81526020830135612d3081612a05565b60208201529392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612d6d57612d6d612c17565b5060010190565b63ffffffff81168114612a0257600080fd5b600060208284031215612d9857600080fd5b813561280581612d74565b77ffffffffffffffffffffffffffffffffffffffffffffffff81168114612a0257600080fd5b600060208284031215612ddb57600080fd5b813561280581612da3565b8135612df181612d74565b63ffffffff811690508154817fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000082161783556020840135612e3181612d74565b67ffffffff000000008160201b1690507fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000081848285161717855560408601359250612e7b83612da3565b921760409190911b90911617905550565b828152608081018235612e9e81612d74565b63ffffffff808216602085015260208501359150612ebb82612d74565b16604083810191909152830135612ed181612da3565b77ffffffffffffffffffffffffffffffffffffffffffffffff81166060840152509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600060208284031215612f3a57600080fd5b815161280581612a05565b6000825160005b81811015612f665760208186018101518583015201612f4c565b50600092019182525091905056fea2646970667358221220cfdaff998e353abb9c668f7edd4d4ce42c4258910eb90aa3e080ab341e9afa9f64736f6c63430008140033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102ad5760003560e01c8063766718081161017b578063ccb51004116100d8578063e110dfda1161008c578063e78a587511610071578063e78a5875146107d9578063f0234008146107e1578063f3ed8f251461080457600080fd5b8063e110dfda1461079f578063e36977cc146107c657600080fd5b8063d9a349c1116100bd578063d9a349c11461073e578063daeccc7914610751578063dfafd4fd1461077f57600080fd5b8063ccb5100414610723578063d2fbb3cb1461072b57600080fd5b8063ab1b71bd1161012f578063b3ba0e2b11610114578063b3ba0e2b146106e7578063bfccf0ec146106f0578063c34c08e51461070357600080fd5b8063ab1b71bd146106cc578063aea0e78b146106df57600080fd5b80638503ae3d116101605780638503ae3d146105d9578063a271e52514610696578063a7229fd9146106b957600080fd5b806376671808146105c95780638112c4af146105d157600080fd5b806338a6318311610229578063501ee126116101dd57806361d027b3116101c257806361d027b314610587578063654f2fc8146105ae5780636b64c769146105c157600080fd5b8063501ee1261461054957806355b4b1a41461055c57600080fd5b8063454a2ab31161020e578063454a2ab3146104dd578063466c01b8146104f05780634dd6c8de1461051b57600080fd5b806338a631831461047b578063396939f21461049b57600080fd5b806314e21ecf116102805780631a7d73d0116102655780631a7d73d01461041b5780631f21140514610460578063379607f51461046857600080fd5b806314e21ecf146103dd5780631810fe7f146103fe57600080fd5b8063032ef901146102b257806307f184f1146102c7578063128e771b146102da578063135022c2146102ed575b600080fd5b6102c56102c0366004612a13565b610827565b005b6102c56102d5366004612a59565b6108d6565b6102c56102e8366004612a59565b610a0e565b6103866102fb366004612a74565b60408051608081018252600080825260208201819052918101829052606081019190915250600090815260016020818152604092839020835160808101855281546fffffffffffffffffffffffffffffffff80821683527001000000000000000000000000000000009091041692810192909252918201549281019290925260020154606082015290565b6040516103d4919060006080820190506fffffffffffffffffffffffffffffffff80845116835280602085015116602084015250604083015160408301526060830151606083015292915050565b60405180910390f35b6103f06103eb366004612a59565b610b66565b6040519081526020016103d4565b60095461040b9060ff1681565b60405190151581526020016103d4565b600c5461043b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016103d4565b6102c5610b7a565b6102c5610476366004612a74565b610c99565b60065461043b9073ffffffffffffffffffffffffffffffffffffffff1681565b61040b60008054815260016020526040812054427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff161115905090565b6102c56104eb366004612a74565b610f13565b6103f06104fe366004612a8d565b600260209081526000928352604080842090915290825290205481565b61040b610529366004612a8d565b600360209081526000928352604080842090915290825290205460ff1681565b6102c5610557366004612a59565b61107a565b6103f061056a366004612a8d565b600460209081526000928352604080842090915290825290205481565b61043b7f000000000000000000000000000000000000000000000000000000000000000081565b6102c56105bc366004612a74565b611215565b6102c5611309565b6000546103f0565b6102c5611617565b61064f60408051606081018252600080825260208201819052918101919091525060408051606081018252600e5463ffffffff8082168352640100000000820416602083015268010000000000000000900477ffffffffffffffffffffffffffffffffffffffffffffffff169181019190915290565b60408051825163ffffffff9081168252602080850151909116908201529181015177ffffffffffffffffffffffffffffffffffffffffffffffff16908201526060016103d4565b6106a062093a8081565b60405167ffffffffffffffff90911681526020016103d4565b6102c56106c7366004612ab7565b611757565b6103f06106da366004612a8d565b611b43565b6103f0611c4e565b6103f0600d5481565b6102c56106fe366004612af3565b611c5d565b60075461043b9073ffffffffffffffffffffffffffffffffffffffff1681565b6102c5611e5c565b6102c5610739366004612b79565b611e66565b6102c561074c366004612a59565b612024565b61040b61075f366004612bc1565b600860209081526000928352604080842090915290825290205460ff1681565b600b5461043b9073ffffffffffffffffffffffffffffffffffffffff1681565b61043b7f000000000000000000000000000000000000000000000000000000000000000081565b6102c56107d4366004612bf4565b612169565b61040b612446565b6103f06107ef366004612a74565b60009081526001602052604090206002015490565b61040b610812366004612a74565b60056020526000908152604090205460ff1681565b60065473ffffffffffffffffffffffffffffffffffffffff163314610878576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604051811515907f18f4a9a726c72020fd959c636d2fd464c6cefe90afeaea3c830b971614cf70b690600090a2600980547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60065473ffffffffffffffffffffffffffffffffffffffff163314610927576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610974576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60095460405173ffffffffffffffffffffffffffffffffffffffff808416926101009004169033907f374d23b359cab0f8963c5c1715a6de7974f53af00aecc27de50d93906b70943e90600090a46009805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b610a3c336000357fffffffff000000000000000000000000000000000000000000000000000000001661245e565b610a72576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff831617905560008054815260016020526040902054427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff161115610b22576040517f398d4d3200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405173ffffffffffffffffffffffffffffffffffffffff8216907f9912e2a4535169ea3ec6c9138afab89a1ba028d9534726bbedd154a25f11392c90600090a250565b6000610b7482600054611b43565b92915050565b600a5473ffffffffffffffffffffffffffffffffffffffff163314610bcb576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60065473ffffffffffffffffffffffffffffffffffffffff163303610c1c576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600754604051339173ffffffffffffffffffffffffffffffffffffffff16907fe963dc9c0d2165b080440a5d2665566142f2426b1ea15f3da8390b0fd336b06490600090a3600780547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163317909155600a80549091169055565b60008181526001602052604090208054427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff161115610d11576040517fbf009dab000000000000000000000000000000000000000000000000000000008152600481018390526024015b60405180910390fd5b80546fffffffffffffffffffffffffffffffff16600003610d5e576040517fd5b25b6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33600090815260036020908152604080832085845290915290205460ff1615610db3576040517f646cf55800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33600090815260026020908152604080832085845290915281205490819003610e08576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000908152600360209081526040808320868452909152812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001908117909155600284015490840154610e6391849184612521565b3360008181526004602090815260408083208984529091529020829055909150610ec5907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169083612568565b604080518581526020810184905290810182905233907f45c072aa05b9853b5a993de7a28bc332ee01404a628cec1a23ce0f659f842ef19060600160405180910390a250505050565b905090565b600080548152600160205260409020610f2b906125e9565b610f61576040517f65ca8f5400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600003610f9b576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600b54610fe09073ffffffffffffffffffffffffffffffffffffffff16337f000000000000000000000000000000000000000000000000000000000000000084612639565b60008054338252600260209081526040808420838552909152822080549192849261100c908490612c46565b909155505060008181526001602081905260408220908101805491928592611035908490612c46565b9091555050604080518381526020810185905233917f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a15910160405180910390a2505050565b6110a8336000357fffffffff000000000000000000000000000000000000000000000000000000001661245e565b6110de576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff811661112b576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054815260016020526040902054427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff16111561119b576040517f398d4d3200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f24e72a08217d19828f258be09f53f19295e0b24dbd7d8f168403e54e88af5bc9906020015b60405180910390a150565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016148015906112865750611284336000357fffffffff000000000000000000000000000000000000000000000000000000001661245e565b155b156112bd576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600d60008282546112cf9190612c46565b9091555050604080518281524260208201527f1e215fdd40f0b4854c5a2b2cfe53859ca232f085a5b129c9f65b6bfeb094c5e4910161120a565b600c5473ffffffffffffffffffffffffffffffffffffffff16158015906113485750600c5473ffffffffffffffffffffffffffffffffffffffff163314155b1561137f576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054808252600160205260409091208054427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff1611156113f2576040517ffcd189b500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600e8215801590611450575080548254429161143c9163ffffffff9091169070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16612c59565b6fffffffffffffffffffffffffffffffff16115b15611487576040517ffcd189b500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61148f61267f565b600d8054600091829055906114a5856001612c46565b6000819055835490915068010000000000000000900477ffffffffffffffffffffffffffffffffffffffffffffffff16821015611511576040517fd1c6fee000000000000000000000000000000000000000000000000000000000815260048101839052602401610d08565b600081815260016020526040812060028101849055845490919061154390640100000000900463ffffffff1642612c59565b82547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff82161783559050600061158e62093a8083612c59565b83546fffffffffffffffffffffffffffffffff9081167001000000000000000000000000000000008383169081029190911786556040805188815292861660208401528201526060810187905290915033907f2f0e07e2baf6351377b2a46b5ccf5cd22b494921f870da223157659e174918f99060800160405180910390a25050505050505050565b600954610100900473ffffffffffffffffffffffffffffffffffffffff16331461166d576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60075473ffffffffffffffffffffffffffffffffffffffff1633036116be576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600654604051339173ffffffffffffffffffffffffffffffffffffffff16907ff07131157ebea15896dc89264eb9a7572e67cc9fad6b855015730fcec10704e090600090a3600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001633179055600980547fffffffffffffffffffffff0000000000000000000000000000000000000000ff169055565b611785336000357fffffffff000000000000000000000000000000000000000000000000000000001661245e565b6117bb576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611808576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600003611842576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611922578273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f879f92dded0f26b83c3e00b12e0395dc72cfc3077343d1854ed6988edd1f9096836040516118f491815260200190565b60405180910390a361191d73ffffffffffffffffffffffffffffffffffffffff84168383612568565b505050565b600080548082526001602052604082208054919290916fffffffffffffffffffffffffffffffff169003611982576040517f398d4d3200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61198b816125e9565b156119c2576040517fb37f700600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8054427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff1611611a23576040517fa0e9298400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600281015480841115611a81576040517fb2b3b53b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8716600482015260248101859052604401610d08565b6000838152600160208181526040808420848155928301849055600290920192909255600d80548785030190555185815273ffffffffffffffffffffffffffffffffffffffff88811692908816917f879f92dded0f26b83c3e00b12e0395dc72cfc3077343d1854ed6988edd1f9096910160405180910390a3611b3b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168686612568565b505050505050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260036020908152604080832084845290915281205460ff1615611b8457506000610b74565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600260209081526040808320858452909152902054801580611bc3575060005483115b15611bd2576000915050610b74565b6000838152600160208181526040808420815160808101835281546fffffffffffffffffffffffffffffffff8082168352700100000000000000000000000000000000909104169381019390935292830154908201819052600290920154606082018190529092611c4592859291612521565b95945050505050565b60008054610f0e906001612c46565b611c8b336000357fffffffff000000000000000000000000000000000000000000000000000000001661245e565b611cc1576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316611d0e576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805180820190915260008082526020820152819060005b82811015611b3b57848482818110611d4157611d41612c89565b905060400201803603810190611d579190612cb8565b91508160200151151582600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168773ffffffffffffffffffffffffffffffffffffffff167ff5736e75de2c751f775d4c5ed517289f77074f8c337f451ba4c0c3ed1dd7f9ad60405160405180910390a460208281015173ffffffffffffffffffffffffffffffffffffffff8816600090815260088352604080822086517fffffffff000000000000000000000000000000000000000000000000000000001683529093529190912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055611e5581612d3c565b9050611d27565b611e6461267f565b565b611e94336000357fffffffff000000000000000000000000000000000000000000000000000000001661245e565b611eca576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611eda6040820160208301612d86565b63ffffffff161580611f135750611ef76060820160408301612dc9565b77ffffffffffffffffffffffffffffffffffffffffffffffff16155b80611f2e5750611f266020820182612d86565b63ffffffff16155b15611f65576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080548082526001602052604090912054427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff161115611fd7576040517f398d4d3200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600e611fe48282612de6565b9050507f0ae1772a552aa48ab7e8bf58c335b3d4ce981b3d6c928f90d69a58f0f28d75fe8183604051612018929190612e8c565b60405180910390a15050565b612052336000357fffffffff000000000000000000000000000000000000000000000000000000001661245e565b612088576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166120d5576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a5460075460405173ffffffffffffffffffffffffffffffffffffffff8085169381169216907f4857570a90fe0a0fc580e89a287e77576141ac8e2e8b3710cd26db44f44156c190600090a4600a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b612197336000357fffffffff000000000000000000000000000000000000000000000000000000001661245e565b6121cd576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff811661221a576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054821115612256576040517fd5b25b6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526005602052604090205460ff161561229f576040517f3e49310000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602052604090208054427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff16111561230f576040517fb37f700600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018101541561234b576040517f398d4d3200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838152600560205260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556002820154905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811691908516907f879f92dded0f26b83c3e00b12e0395dc72cfc3077343d1854ed6988edd1f9096906123f79085815260200190565b60405180910390a361244073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168483612568565b50505050565b600080548152600160205260408120610f0e906125e9565b60095460009060ff1615612490575060065473ffffffffffffffffffffffffffffffffffffffff838116911614610b74565b60075473ffffffffffffffffffffffffffffffffffffffff8481169116148061250b575073ffffffffffffffffffffffffffffffffffffffff831660009081526008602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290205460ff165b1561251857506001610b74565b50600092915050565b600061252e8585856126fb565b905081801561254d57506000838061254857612548612ef9565b858709115b156125605761255d600182612c46565b90505b949350505050565b60405173ffffffffffffffffffffffffffffffffffffffff83811660248301526044820183905261191d91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061280c565b8054600090426fffffffffffffffffffffffffffffffff90911611801590610b745750505470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16421090565b60405173ffffffffffffffffffffffffffffffffffffffff84811660248301528381166044830152606482018390526124409186918216906323b872dd906084016125a2565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631249c58b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156126e757600080fd5b505af1158015612440573d6000803e3d6000fd5b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff858709858702925082811083820303915050806000036127535783828161274957612749612ef9565b0492505050612805565b83811061279d576040517f63a05778000000000000000000000000000000000000000000000000000000008152600481018790526024810186905260448101859052606401610d08565b600084868809851960019081018716968790049682860381900495909211909303600082900391909104909201919091029190911760038402600290811880860282030280860282030280860282030280860282030280860282030280860290910302029150505b9392505050565b600061282e73ffffffffffffffffffffffffffffffffffffffff8416836128a2565b905080516000141580156128535750808060200190518101906128519190612f28565b155b1561191d576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610d08565b606061280583836000846000808573ffffffffffffffffffffffffffffffffffffffff1684866040516128d59190612f45565b60006040518083038185875af1925050503d8060008114612912576040519150601f19603f3d011682016040523d82523d6000602084013e612917565b606091505b5091509150612927868383612931565b9695505050505050565b60608261294657612941826129c0565b612805565b815115801561296a575073ffffffffffffffffffffffffffffffffffffffff84163b155b156129b9576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610d08565b5080612805565b8051156129d05780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b8015158114612a0257600080fd5b600060208284031215612a2557600080fd5b813561280581612a05565b803573ffffffffffffffffffffffffffffffffffffffff81168114612a5457600080fd5b919050565b600060208284031215612a6b57600080fd5b61280582612a30565b600060208284031215612a8657600080fd5b5035919050565b60008060408385031215612aa057600080fd5b612aa983612a30565b946020939093013593505050565b600080600060608486031215612acc57600080fd5b612ad584612a30565b9250612ae360208501612a30565b9150604084013590509250925092565b600080600060408486031215612b0857600080fd5b612b1184612a30565b9250602084013567ffffffffffffffff80821115612b2e57600080fd5b818601915086601f830112612b4257600080fd5b813581811115612b5157600080fd5b8760208260061b8501011115612b6657600080fd5b6020830194508093505050509250925092565b600060608284031215612b8b57600080fd5b50919050565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114612a5457600080fd5b60008060408385031215612bd457600080fd5b612bdd83612a30565b9150612beb60208401612b91565b90509250929050565b60008060408385031215612c0757600080fd5b82359150612beb60208401612a30565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115610b7457610b74612c17565b6fffffffffffffffffffffffffffffffff818116838216019080821115612c8257612c82612c17565b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060408284031215612cca57600080fd5b6040516040810181811067ffffffffffffffff82111715612d14577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604052612d2083612b91565b81526020830135612d3081612a05565b60208201529392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612d6d57612d6d612c17565b5060010190565b63ffffffff81168114612a0257600080fd5b600060208284031215612d9857600080fd5b813561280581612d74565b77ffffffffffffffffffffffffffffffffffffffffffffffff81168114612a0257600080fd5b600060208284031215612ddb57600080fd5b813561280581612da3565b8135612df181612d74565b63ffffffff811690508154817fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000082161783556020840135612e3181612d74565b67ffffffff000000008160201b1690507fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000081848285161717855560408601359250612e7b83612da3565b921760409190911b90911617905550565b828152608081018235612e9e81612d74565b63ffffffff808216602085015260208501359150612ebb82612d74565b16604083810191909152830135612ed181612da3565b77ffffffffffffffffffffffffffffffffffffffffffffffff81166060840152509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600060208284031215612f3a57600080fd5b815161280581612a05565b6000825160005b81811015612f665760208186018101518583015201612f4c565b50600092019182525091905056fea2646970667358221220cfdaff998e353abb9c668f7edd4d4ce42c4258910eb90aa3e080ab341e9afa9f64736f6c63430008140033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/templegold/EpochLib.sol/EpochLib.json b/apps/dapp/abi/contracts/templegold/EpochLib.sol/EpochLib.json new file mode 100644 index 000000000..2783bd1f0 --- /dev/null +++ b/apps/dapp/abi/contracts/templegold/EpochLib.sol/EpochLib.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "EpochLib", + "sourceName": "contracts/templegold/EpochLib.sol", + "abi": [], + "bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220415c2a8a426a1c12ca765ae08db3e2d6df4dd4c310a3fe54e92f39e68a6bfa1764736f6c634300081c0033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220415c2a8a426a1c12ca765ae08db3e2d6df4dd4c310a3fe54e92f39e68a6bfa1764736f6c634300081c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/templegold/SpiceAuction.sol/SpiceAuction.json b/apps/dapp/abi/contracts/templegold/SpiceAuction.sol/SpiceAuction.json new file mode 100644 index 000000000..a331fe358 --- /dev/null +++ b/apps/dapp/abi/contracts/templegold/SpiceAuction.sol/SpiceAuction.json @@ -0,0 +1,1211 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "SpiceAuction", + "sourceName": "contracts/templegold/SpiceAuction.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_templeGold", + "type": "address" + }, + { + "internalType": "address", + "name": "_spiceToken", + "type": "address" + }, + { + "internalType": "address", + "name": "_daoExecutor", + "type": "address" + }, + { + "internalType": "address", + "name": "_operator", + "type": "address" + }, + { + "internalType": "uint32", + "name": "_arbEid", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "mintChainId_", + "type": "uint32" + }, + { + "internalType": "string", + "name": "_name", + "type": "string" + } + ], + "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": [], + "name": "AlreadyClaimed", + "type": "error" + }, + { + "inputs": [], + "name": "AlreadyRecovered", + "type": "error" + }, + { + "inputs": [], + "name": "AuctionActive", + "type": "error" + }, + { + "inputs": [], + "name": "AuctionEnded", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "epochId", + "type": "uint256" + } + ], + "name": "CannotClaim", + "type": "error" + }, + { + "inputs": [], + "name": "CannotDeposit", + "type": "error" + }, + { + "inputs": [], + "name": "CannotStartAuction", + "type": "error" + }, + { + "inputs": [], + "name": "EtherNotNeeded", + "type": "error" + }, + { + "inputs": [], + "name": "ExpectedNonZero", + "type": "error" + }, + { + "inputs": [], + "name": "FailedInnerCall", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "required", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "name": "InsufficientBalance", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidAccess", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidAddress", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidConfigOperation", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidEpoch", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidOperation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "optionType", + "type": "uint16" + } + ], + "name": "InvalidOptionType", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidParam", + "type": "error" + }, + { + "inputs": [], + "name": "MissingAuctionTokenConfig", + "type": "error" + }, + { + "inputs": [], + "name": "NoConfig", + "type": "error" + }, + { + "inputs": [], + "name": "NotEnoughAuctionTokens", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "y", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "denominator", + "type": "uint256" + } + ], + "name": "PRBMath_MulDiv_Overflow", + "type": "error" + }, + { + "inputs": [], + "name": "ReentrancyGuardReentrantCall", + "type": "error" + }, + { + "inputs": [], + "name": "RemoveAuctionConfig", + "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" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "WithdrawFailed", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "configId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "epochId", + "type": "uint256" + } + ], + "name": "AuctionConfigRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "epoch", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint32", + "name": "duration", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "waitPeriod", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "startCooldown", + "type": "uint32" + }, + { + "internalType": "uint160", + "name": "minimumDistributedAuctionToken", + "type": "uint160" + }, + { + "internalType": "address", + "name": "starter", + "type": "address" + }, + { + "internalType": "bool", + "name": "isTempleGoldAuctionToken", + "type": "bool" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + } + ], + "indexed": false, + "internalType": "struct ISpiceAuction.SpiceAuctionConfig", + "name": "config", + "type": "tuple" + } + ], + "name": "AuctionConfigSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "epochId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "starter", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint128", + "name": "startTime", + "type": "uint128" + }, + { + "indexed": false, + "internalType": "uint128", + "name": "endTime", + "type": "uint128" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "auctionTokenAmount", + "type": "uint256" + } + ], + "name": "AuctionStarted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "epochId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "bidTokenAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "auctionTokenAmount", + "type": "uint256" + } + ], + "name": "Claim", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "daoExecutor", + "type": "address" + } + ], + "name": "DaoExecutorSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "depositor", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "epochId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Deposit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint32", + "name": "gas", + "type": "uint32" + } + ], + "name": "LzReceiveExecutorGasSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "OperatorSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "epochId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "RedeemedTempleGoldBurned", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TokenRecovered", + "type": "event" + }, + { + "inputs": [], + "name": "MAXIMUM_AUCTION_DURATION", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MAXIMUM_AUCTION_WAIT_PERIOD", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MINIMUM_AUCTION_PERIOD", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "auctionId", + "type": "uint256" + } + ], + "name": "auctionConfigs", + "outputs": [ + { + "internalType": "uint32", + "name": "duration", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "waitPeriod", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "startCooldown", + "type": "uint32" + }, + { + "internalType": "uint160", + "name": "minimumDistributedAuctionToken", + "type": "uint160" + }, + { + "internalType": "address", + "name": "starter", + "type": "address" + }, + { + "internalType": "bool", + "name": "isTempleGoldAuctionToken", + "type": "bool" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "bid", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "epochId", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "useContractEth", + "type": "bool" + } + ], + "name": "burnAndNotify", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "epochId", + "type": "uint256" + } + ], + "name": "claim", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "depositor", + "type": "address" + }, + { + "internalType": "uint256", + "name": "epochId", + "type": "uint256" + } + ], + "name": "claimed", + "outputs": [ + { + "internalType": "bool", + "name": "claimed", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "depositor", + "type": "address" + }, + { + "internalType": "uint256", + "name": "epochId", + "type": "uint256" + } + ], + "name": "claimedAmount", + "outputs": [ + { + "internalType": "uint256", + "name": "claimedAmount", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "currentEpoch", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "daoExecutor", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "depositor", + "type": "address" + }, + { + "internalType": "uint256", + "name": "epochId", + "type": "uint256" + } + ], + "name": "depositors", + "outputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "epochId", + "type": "uint256" + } + ], + "name": "epochsWithoutBidsRecovered", + "outputs": [ + { + "internalType": "bool", + "name": "recovered", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "epochId", + "type": "uint256" + } + ], + "name": "getAuctionBidAmount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "auctionId", + "type": "uint256" + } + ], + "name": "getAuctionConfig", + "outputs": [ + { + "components": [ + { + "internalType": "uint32", + "name": "duration", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "waitPeriod", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "startCooldown", + "type": "uint32" + }, + { + "internalType": "uint160", + "name": "minimumDistributedAuctionToken", + "type": "uint160" + }, + { + "internalType": "address", + "name": "starter", + "type": "address" + }, + { + "internalType": "bool", + "name": "isTempleGoldAuctionToken", + "type": "bool" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + } + ], + "internalType": "struct ISpiceAuction.SpiceAuctionConfig", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "epochId", + "type": "uint256" + } + ], + "name": "getAuctionTokenAmount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getAuctionTokenForCurrentEpoch", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "depositor", + "type": "address" + }, + { + "internalType": "uint256", + "name": "epochId", + "type": "uint256" + } + ], + "name": "getClaimableForEpoch", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "epochId", + "type": "uint256" + } + ], + "name": "getEpochInfo", + "outputs": [ + { + "components": [ + { + "internalType": "uint128", + "name": "startTime", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "endTime", + "type": "uint128" + }, + { + "internalType": "uint256", + "name": "totalBidTokenAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalAuctionTokenAmount", + "type": "uint256" + } + ], + "internalType": "struct IAuctionBase.EpochInfo", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "isActive", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "lzReceiveExecutorGas", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "operator", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "epochId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "recoverAuctionTokenForZeroBidAuction", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "recoverToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "epochId", + "type": "uint256" + } + ], + "name": "redeemedEpochs", + "outputs": [ + { + "internalType": "bool", + "name": "redeemed", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "removeAuctionConfig", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint32", + "name": "duration", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "waitPeriod", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "startCooldown", + "type": "uint32" + }, + { + "internalType": "uint160", + "name": "minimumDistributedAuctionToken", + "type": "uint160" + }, + { + "internalType": "address", + "name": "starter", + "type": "address" + }, + { + "internalType": "bool", + "name": "isTempleGoldAuctionToken", + "type": "bool" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + } + ], + "internalType": "struct ISpiceAuction.SpiceAuctionConfig", + "name": "_config", + "type": "tuple" + } + ], + "name": "setAuctionConfig", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_daoExecutor", + "type": "address" + } + ], + "name": "setDaoExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "_gas", + "type": "uint32" + } + ], + "name": "setLzReceiveExecutorGas", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_operator", + "type": "address" + } + ], + "name": "setOperator", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "spiceToken", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "startAuction", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "templeGold", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address payable", + "name": "_to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "withdrawEth", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + } + ], + "bytecode": "0x61012060405234801561001157600080fd5b506040516149d13803806149d1833981016040819052610030916100f9565b60016006556001600160a01b03868116608052600780546001600160a01b03199081168884161790915560088054909116868316179055871660a05263ffffffff83811660c052821660e052600961008882826102b3565b5050426101005250506008805463ffffffff60a01b191662014f8160a01b1790555061037192505050565b80516001600160a01b03811681146100ca57600080fd5b919050565b805163ffffffff811681146100ca57600080fd5b634e487b7160e01b600052604160045260246000fd5b600080600080600080600060e0888a03121561011457600080fd5b61011d886100b3565b965061012b602089016100b3565b9550610139604089016100b3565b9450610147606089016100b3565b9350610155608089016100cf565b925061016360a089016100cf565b60c08901519092506001600160401b0381111561017f57600080fd5b8801601f81018a1361019057600080fd5b80516001600160401b038111156101a9576101a96100e3565b604051601f8201601f19908116603f011681016001600160401b03811182821017156101d7576101d76100e3565b6040528181528282016020018c10156101ef57600080fd5b60005b8281101561020e576020818501810151838301820152016101f2565b5060006020838301015280935050505092959891949750929550565b600181811c9082168061023e57607f821691505b60208210810361025e57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156102ae57806000526020600020601f840160051c8101602085101561028b5750805b601f840160051c820191505b818110156102ab5760008155600101610297565b50505b505050565b81516001600160401b038111156102cc576102cc6100e3565b6102e0816102da845461022a565b84610264565b6020601f82116001811461031457600083156102fc5750848201515b600019600385901b1c1916600184901b1784556102ab565b600084815260208120601f198516915b828110156103445787850151825560209485019460019092019101610324565b50848210156103625786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b60805160a05160c05160e051610100516145b361041e6000396000611c370152600081816126830152613043015260006131950152600081816109a701528181611a35015281816121ea015281816126ff01528181612e1c01528181612e84015281816130190152818161309d0152818161321e015281816133a001526134620152600081816102bd01528181611a0f0152818161219301528181612e3d0152612e6301526145b36000f3fe6080604052600436106102385760003560e01c8063570ca73511610138578063b3ab15fb116100b0578063ce86cdfd1161007f578063e30e4e8a11610064578063e30e4e8a146109c9578063eee44acb146109e9578063f3ed8f2514610a1957600080fd5b8063ce86cdfd14610890578063e110dfda1461099557600080fd5b8063b3ab15fb14610804578063b6fc8fac14610824578063b791513a1461083b578063cd366b9c1461087057600080fd5b80637667180811610107578063a7229fd9116100ec578063a7229fd9146107ba578063ac8477ab146107da578063b0c36601146107f157600080fd5b80637667180814610785578063a300fbbb1461079a57600080fd5b8063570ca7351461070e578063607de07a1461073b57806367ae97e61461075b5780636b64c7691461077057600080fd5b80632cf702f8116101cb578063466c01b81161019a5780634dd6c8de1161017f5780634dd6c8de1461066f5780634e62917b146106aa57806355b4b1a4146106d657600080fd5b8063466c01b8146106175780634c92c5cd1461064f57600080fd5b80632cf702f814610595578063379607f5146105aa578063406194c5146105ca578063454a2ab3146105f757600080fd5b80631b9a91a4116102075780631b9a91a41461040657806322f3e2d41461042857806327cc4c431461043d5780632ac873f91461047c57600080fd5b80630627099b1461024457806306fdde03146102895780630ab54b36146102ab578063135022c21461030457600080fd5b3661023f57005b600080fd5b34801561025057600080fd5b5061027461025f366004613b34565b600d6020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561029557600080fd5b5061029e610a49565b6040516102809190613bbb565b3480156102b757600080fd5b506102df7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610280565b34801561031057600080fd5b506103aa61031f366004613b34565b60408051608081018252600080825260208201819052918101829052606081019190915250600090815260016020818152604092839020835160808101855281546fffffffffffffffffffffffffffffffff80821683527001000000000000000000000000000000009091041692810192909252918201549281019290925260020154606082015290565b604051610280919060006080820190506fffffffffffffffffffffffffffffffff83511682526fffffffffffffffffffffffffffffffff6020840151166020830152604083015160408301526060830151606083015292915050565b34801561041257600080fd5b50610426610421366004613bf0565b610ad7565b005b34801561043457600080fd5b50610274610cc9565b34801561044957600080fd5b5061046e610458366004613b34565b6000908152600160208190526040909120015490565b604051908152602001610280565b34801561048857600080fd5b50610588610497366004613b34565b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810191909152506000908152600a6020908152604091829020825160e081018452815463ffffffff808216835264010000000082048116948301949094526801000000000000000081049093169381019390935273ffffffffffffffffffffffffffffffffffffffff6c01000000000000000000000000909204821660608401526001810154808316608085015260ff7401000000000000000000000000000000000000000090910416151560a0840152600201541660c082015290565b6040516102809190613c1c565b3480156105a157600080fd5b50610426610ce6565b3480156105b657600080fd5b506104266105c5366004613b34565b611046565b3480156105d657600080fd5b506007546102df9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561060357600080fd5b50610426610612366004613b34565b6112f0565b34801561062357600080fd5b5061046e610632366004613bf0565b600260209081526000928352604080842090915290825290205481565b34801561065b57600080fd5b5061042661066a366004613ce0565b6115bb565b34801561067b57600080fd5b5061027461068a366004613bf0565b600360209081526000928352604080842090915290825290205460ff1681565b3480156106b657600080fd5b506106c162278d0081565b60405163ffffffff9091168152602001610280565b3480156106e257600080fd5b5061046e6106f1366004613bf0565b600460209081526000928352604080842090915290825290205481565b34801561071a57600080fd5b506008546102df9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561074757600080fd5b50610426610756366004613cfd565b6116d3565b34801561076757600080fd5b506102df611950565b34801561077c57600080fd5b50610426611a5b565b34801561079157600080fd5b5060005461046e565b3480156107a657600080fd5b5061046e6107b5366004613bf0565b611fac565b3480156107c657600080fd5b506104266107d5366004613d18565b6120b9565b3480156107e657600080fd5b506106c16276a70081565b6104266107ff366004613d72565b612565565b34801561081057600080fd5b5061042661081f366004613ce0565b61286b565b34801561083057600080fd5b506106c162093a8081565b34801561084757600080fd5b506008546106c19074010000000000000000000000000000000000000000900463ffffffff1681565b34801561087c57600080fd5b5061042661088b366004613db4565b612978565b34801561089c57600080fd5b506109386108ab366004613b34565b600a6020526000908152604090208054600182015460029092015463ffffffff8083169364010000000084048216936801000000000000000081049092169273ffffffffffffffffffffffffffffffffffffffff6c010000000000000000000000009093048316928281169260ff7401000000000000000000000000000000000000000090910416911687565b6040805163ffffffff98891681529688166020880152949096169385019390935273ffffffffffffffffffffffffffffffffffffffff91821660608501528116608084015290151560a083015290911660c082015260e001610280565b3480156109a157600080fd5b506102df7f000000000000000000000000000000000000000000000000000000000000000081565b3480156109d557600080fd5b506104266109e4366004613dd1565b612aac565b3480156109f557600080fd5b5061046e610a04366004613b34565b60009081526001602052604090206002015490565b348015610a2557600080fd5b50610274610a34366004613b34565b60056020526000908152604090205460ff1681565b60098054610a5690613df6565b80601f0160208091040260200160405190810160405280929190818152602001828054610a8290613df6565b8015610acf5780601f10610aa457610100808354040283529160200191610acf565b820191906000526020600020905b815481529060010190602001808311610ab257829003601f168201915b505050505081565b60085473ffffffffffffffffffffffffffffffffffffffff163314801590610b17575060075473ffffffffffffffffffffffffffffffffffffffff163314155b15610b4e576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610b9b576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600003610bd5576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b4781811015610c26576040517fdb42144d0000000000000000000000000000000000000000000000000000000081526000600482015260248101839052604481018290526064015b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff168360405160006040518083038185875af1925050503d8060008114610c80576040519150601f19603f3d011682016040523d82523d6000602084013e610c85565b606091505b5050905080610cc3576040517f51fe4a3400000000000000000000000000000000000000000000000000000000815260048101849052602401610c1d565b50505050565b600080548152600160205260408120610ce190612da1565b905090565b60075473ffffffffffffffffffffffffffffffffffffffff163314610d37576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080548082526001602052604082208054919290916fffffffffffffffffffffffffffffffff169003610d97576040517f260e629b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610da081612da1565b15610dd7576040517f260e629b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080600a81610de8866001613e78565b815260208101919091526040016000205463ffffffff1611905080610f90578154427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff1611610e68576040517fa0e9298400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838152600a6020526040812090610e8082612df1565b600286015473ffffffffffffffffffffffffffffffffffffffff82166000908152600c6020526040812080549395509193509091610ebf908490613e8b565b90915550506000858152600a60209081526040808320838155600180820180547fffffffffffffffffffffff000000000000000000000000000000000000000000169055600291820180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055928390529083208381558083018490550191909155610f4d9086613e8b565b60005560408051868152602081018790527f5ef593cff3080a71aa942dc8e20fb32a38198f7cbc7095fa55324ededdcd98d6910160405180910390a15050505050565b610f9b600184613e78565b6000818152600a60205260408082208281556001810180547fffffffffffffffffffffff00000000000000000000000000000000000000000016905560020180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055519194507f5ef593cff3080a71aa942dc8e20fb32a38198f7cbc7095fa55324ededdcd98d69161103891868252602082015260400190565b60405180910390a15b505050565b6000818152600160205260408120805490916fffffffffffffffffffffffffffffffff90911690036110a4576040517fd5b25b6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8054427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff161115611109576040517fbf009dab00000000000000000000000000000000000000000000000000000000815260048101839052602401610c1d565b33600090815260036020908152604080832085845290915290205460ff161561115e576040517f646cf55800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000908152600260209081526040808320858452909152812054908190036111b3576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000908152600360209081526040808320868452825280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055600a90915281209061120782612df1565b915050600061122c85600201548660010154600087612eae909392919063ffffffff16565b3360009081526004602090815260408083208a8452825280832084905573ffffffffffffffffffffffffffffffffffffffff86168352600b90915281208054929350839290919061127e908490613e78565b909155506112a5905073ffffffffffffffffffffffffffffffffffffffff83163383612ef5565b604080518781526020810186905290810182905233907f45c072aa05b9853b5a993de7a28bc332ee01404a628cec1a23ce0f659f842ef19060600160405180910390a2505050505050565b600080548082526001602052604090912061130a81612da1565b611340576040517f65ca8f5400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8260000361137a576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152600a602052604081209061139282612df1565b5060028301546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482018190529293506000918416906370a0823190602401602060405180830381865afa15801561140c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114309190613e9e565b905061145473ffffffffffffffffffffffffffffffffffffffff841633848a612f76565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152600091908516906370a0823190602401602060405180830381865afa1580156114c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e89190613e9e565b90506114f48282613e8b565b881461152c576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526002602090815260408083208a8452909152812080548a9290611556908490613e78565b92505081905550878660010160008282546115719190613e78565b909155505060408051888152602081018a905233917f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a15910160405180910390a25050505050505050565b60075473ffffffffffffffffffffffffffffffffffffffff16331461160c576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116611659576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527ffe46d4bbb89eab62693e8325c2c0b567b017d956f54941fb99110a372a152e37906020015b60405180910390a150565b60075473ffffffffffffffffffffffffffffffffffffffff163314611724576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054801561177d57600081815260016020526040902061174481612da1565b1561177b576040517f260e629b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b62093a8061178e6020840184613db4565b63ffffffff1610806117b4575062278d006117ac6020840184613db4565b63ffffffff16115b806117d657506276a7006117ce6040840160208501613db4565b63ffffffff16115b1561180d576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61181d6040830160208401613db4565b63ffffffff161580611852575061183a6080830160608401613ce0565b73ffffffffffffffffffffffffffffffffffffffff16155b15611889576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061189b60e0840160c08501613ce0565b73ffffffffffffffffffffffffffffffffffffffff16036118e8576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118f3600182613e78565b6000818152600a6020526040902090915082906119108282613ede565b9050507fde766fad167141a0e1213696eeff0a28605b0c2a2228ac153d27ec3cd91121d681836040516119449291906140fe565b60405180910390a15050565b600080548152600a60209081526040808320815160e081018352815463ffffffff80821683526401000000008204811695830195909552680100000000000000008104909416928101929092526c0100000000000000000000000090920473ffffffffffffffffffffffffffffffffffffffff90811660608301526001830154808216608084015274010000000000000000000000000000000000000000900460ff16151560a083018190526002909301541660c082015290611a33577f0000000000000000000000000000000000000000000000000000000000000000611a55565b7f00000000000000000000000000000000000000000000000000000000000000005b91505090565b6000805490600a81611a6e846001613e78565b815260208101919091526040016000908120805490925063ffffffff169003611ac3576040517ffcd189b500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600181015473ffffffffffffffffffffffffffffffffffffffff1615801590611b065750600181015473ffffffffffffffffffffffffffffffffffffffff163314155b15611b3d576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8115611c1f576000828152600160208181526040808420815160808101835281546fffffffffffffffffffffffffffffffff80821683527001000000000000000000000000000000009091041681850190815294820154818401526002909101546060820152868552600a90925290922054905164010000000090910463ffffffff16904290611bce9083906141e8565b6fffffffffffffffffffffffffffffffff161115611c18576040517ffcd189b500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050611c93565b80544290611c5b90640100000000900463ffffffff167f0000000000000000000000000000000000000000000000000000000000000000613e78565b1115611c93576040517ffcd189b500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611c9e82612df1565b73ffffffffffffffffffffffffffffffffffffffff81166000818152600c60205260408082205490517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529395509350916370a0823190602401602060405180830381865afa158015611d1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d409190613e9e565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600b602052604081205491925090611d749084613e8b565b611d7e9083613e8b565b85549091506c01000000000000000000000000900473ffffffffffffffffffffffffffffffffffffffff16600003611de2576040517f9f16f00800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84546c01000000000000000000000000900473ffffffffffffffffffffffffffffffffffffffff16811015611e43576040517f2b049be300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054611e51906001613e78565b6000818155818152600160205260408120875492985091611e849068010000000000000000900463ffffffff16426141e8565b82547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff82161783558754909150600090611ed69063ffffffff16836141e8565b83546fffffffffffffffffffffffffffffffff828116700100000000000000000000000000000000029116178455600284018590559050611f178487613e78565b73ffffffffffffffffffffffffffffffffffffffff88166000908152600c60209081526040918290209290925580518b81526fffffffffffffffffffffffffffffffff80861693820193909352918316908201526060810185905233907f2f0e07e2baf6351377b2a46b5ccf5cd22b494921f870da223157659e174918f99060800160405180910390a2505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260036020908152604080832084845290915281205460ff1615611fed575060006120b3565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260026020908152604080832085845290915290205480158061202c575060005483115b1561203b5760009150506120b3565b6000838152600160208181526040808420815160808101835281546fffffffffffffffffffffffffffffffff80821683527001000000000000000000000000000000009091041693810193909352928301549082018190526002909201546060820181905290926120ae92859291612eae565b925050505b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff16331461210a576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216612157576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600003612191576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561223957507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156122c6578273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f879f92dded0f26b83c3e00b12e0395dc72cfc3077343d1854ed6988edd1f90968360405161229d91815260200190565b60405180910390a361104173ffffffffffffffffffffffffffffffffffffffff84168383612ef5565b600080548082526001602052604090912081156123bd5780546fffffffffffffffffffffffffffffffff1660000361232a576040517f260e629b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8054427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff1611151580156123865750600a600061236d846001613e78565b815260208101919091526040016000205463ffffffff16155b156123bd576040517f97ea364c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8716906370a0823190602401602060405180830381865afa15801561242a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061244e9190613e9e565b73ffffffffffffffffffffffffffffffffffffffff87166000908152600b6020908152604080832054600c909252822054929350909161248e9190613e8b565b6124989083613e8b565b9050808511156124d4576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6124f573ffffffffffffffffffffffffffffffffffffffff88168787612ef5565b8673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f879f92dded0f26b83c3e00b12e0395dc72cfc3077343d1854ed6988edd1f90968760405161255491815260200190565b60405180910390a350505050505050565b61256d612fbc565b6000828152600d602052604090205460ff16156125b6576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152600160205260408120805490916fffffffffffffffffffffffffffffffff9091169003612614576040517fd5b25b6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8054427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff161115612676576040517fb37f700600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000341180156126ab57507f000000000000000000000000000000000000000000000000000000000000000063ffffffff1646145b156126e2576040517fba792cb900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838152600a60205260408120906126fa82612df1565b5090507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612782576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600183015460008190036127c2576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051878152602081018390527f7100c4f922b370c0ad3218efd254665bfc8609664973b40534b2c4ea6ca28708910160405180910390a16000868152600d6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055600283015461285990829073ffffffffffffffffffffffffffffffffffffffff1687612fff565b505050506128676001600655565b5050565b60075473ffffffffffffffffffffffffffffffffffffffff1633146128bc576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116612909576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f99d737e0adf2c449d71890b86772885ec7959b152ddb265f76325b6e68e105d390600090a250565b60085473ffffffffffffffffffffffffffffffffffffffff1633148015906129b8575060075473ffffffffffffffffffffffffffffffffffffffff163314155b156129ef576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8063ffffffff16600003612a2f576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600880547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000063ffffffff8416908102919091179091556040519081527fb12b811ee01ea66d1cd1a2f8ee470517b143478dafa635fd782430c34251d9f0906020016116c8565b60075473ffffffffffffffffffffffffffffffffffffffff163314612afd576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116612b4a576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054821115612b86576040517fd5b25b6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526005602052604090205460ff1615612bcf576040517f3e49310000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602052604090208054427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff161115612c3f576040517fb37f700600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600181015415612c7b576040517f398d4d3200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838152600a6020526040812090612c9382612df1565b600087815260056020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055600288015473ffffffffffffffffffffffffffffffffffffffff85168452600c909252822080549395509093508392909190612d0a908490613e8b565b925050819055508173ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f879f92dded0f26b83c3e00b12e0395dc72cfc3077343d1854ed6988edd1f909683604051612d7091815260200190565b60405180910390a3612d9973ffffffffffffffffffffffffffffffffffffffff83168683612ef5565b505050505050565b8054600090426fffffffffffffffffffffffffffffffff909116118015906120b35750505470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16421090565b6001810154600090819074010000000000000000000000000000000000000000900460ff16612e61577f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000612ea4565b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000005b9094909350915050565b6000612ebb858585613586565b9050818015612eda575060008380612ed557612ed5614210565b858709115b15612eed57612eea600182613e78565b90505b949350505050565b60405173ffffffffffffffffffffffffffffffffffffffff83811660248301526044820183905261104191859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050613697565b60405173ffffffffffffffffffffffffffffffffffffffff8481166024830152838116604483015260648201839052610cc39186918216906323b872dd90608401612f2f565b600260065403612ff8576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600655565b61304173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016833086612f76565b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff164603613113576040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018490527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906342966c6890602401600060405180830381600087803b1580156130f657600080fd5b505af115801561310a573d6000803e3d6000fd5b50505050505050565b6008546000906131849074010000000000000000000000000000000000000000900463ffffffff168261317d604080517e03000000000000000000000000000000000000000000000000000000000000602082015281516002818303018152602290910190915290565b919061372d565b6040805160e08101825263ffffffff7f00000000000000000000000000000000000000000000000000000000000000001681526000602080830182905282840189905260608301829052608083018590528351808201855282815260a08401528351908101845281815260c083015291517f3b6f743b000000000000000000000000000000000000000000000000000000008152929350917f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690633b6f743b9061326a90859085906004016142b5565b6040805180830381865afa158015613286573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132aa919061434f565b90508380156132b95750805147105b156133035780516040517fdb42144d000000000000000000000000000000000000000000000000000000008152600060048201526024810191909152476044820152606401610c1d565b831580156133115750805134105b1561335b5780516040517fdb42144d000000000000000000000000000000000000000000000000000000008152600060048201526024810191909152346044820152606401610c1d565b83156134235780516040517fc7c7f5b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169163c7c7f5b3916133d99086908690309060040161436b565b60c06040518083038185885af11580156133f7573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061341c91906143b5565b5050612d99565b80516040517fc7c7f5b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169163c7c7f5b39161349b9086908690339060040161436b565b60c06040518083038185885af11580156134b9573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906134de91906143b5565b505080516000906134ef9034613e8b565b9050801561310a57604051600090339083908381818185875af1925050503d8060008114613539576040519150601f19603f3d011682016040523d82523d6000602084013e61353e565b606091505b505090508061357c576040517f51fe4a3400000000000000000000000000000000000000000000000000000000815260048101839052602401610c1d565b5050505050505050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff858709858702925082811083820303915050806000036135de578382816135d4576135d4614210565b0492505050613690565b838110613628576040517f63a05778000000000000000000000000000000000000000000000000000000008152600481018790526024810186905260448101859052606401610c1d565b600084868809851960019081018716968790049682860381900495909211909303600082900391909104909201919091029190911760038402600290811880860282030280860282030280860282030280860282030280860282030280860290910302029150505b9392505050565b60006136b973ffffffffffffffffffffffffffffffffffffffff8416836137b0565b905080516000141580156136de5750808060200190518101906136dc9190614473565b155b15611041576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610c1d565b606083600361373d8260006137be565b61ffff161461378a576137518160006137be565b6040517f3a51740d00000000000000000000000000000000000000000000000000000000815261ffff9091166004820152602401610c1d565b6000613796858561383e565b90506137a4866001836138f0565b9250505b509392505050565b60606136908383600061395b565b60006137cb826002613e78565b83511015613835576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f746f55696e7431365f6f75744f66426f756e64730000000000000000000000006044820152606401610c1d565b50016002015190565b60606fffffffffffffffffffffffffffffffff8216156138a757604080517fffffffffffffffffffffffffffffffff00000000000000000000000000000000608086811b8216602084015285901b16603082015201604051602081830303815290604052613690565b6040517fffffffffffffffffffffffffffffffff00000000000000000000000000000000608085901b166020820152603001604051602081830303815290604052905092915050565b60608360036139008260006137be565b61ffff1614613914576137518160006137be565b8460016139218551613a14565b61392c906001614490565b86866040516020016139429594939291906144aa565b6040516020818303038152906040529150509392505050565b606081471015613999576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610c1d565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516139c29190614561565b60006040518083038185875af1925050503d80600081146139ff576040519150601f19603f3d011682016040523d82523d6000602084013e613a04565b606091505b50915091506137a4868383613a60565b600061ffff821115613a5c576040517f6dfcc6500000000000000000000000000000000000000000000000000000000081526010600482015260248101839052604401610c1d565b5090565b606082613a7557613a7082613aef565b613690565b8151158015613a99575073ffffffffffffffffffffffffffffffffffffffff84163b155b15613ae8576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610c1d565b5080613690565b805115613aff5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b600060208284031215613b4657600080fd5b5035919050565b60005b83811015613b68578181015183820152602001613b50565b50506000910152565b60008151808452613b89816020860160208601613b4d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006136906020830184613b71565b73ffffffffffffffffffffffffffffffffffffffff81168114613b3157600080fd5b60008060408385031215613c0357600080fd5b8235613c0e81613bce565b946020939093013593505050565b600060e08201905063ffffffff835116825263ffffffff602084015116602083015263ffffffff604084015116604083015273ffffffffffffffffffffffffffffffffffffffff606084015116606083015273ffffffffffffffffffffffffffffffffffffffff608084015116608083015260a0830151613ca160a084018215159052565b5060c0830151613cc960c084018273ffffffffffffffffffffffffffffffffffffffff169052565b5092915050565b8035613cdb81613bce565b919050565b600060208284031215613cf257600080fd5b813561369081613bce565b600060e0828403128015613d1057600080fd5b509092915050565b600080600060608486031215613d2d57600080fd5b8335613d3881613bce565b92506020840135613d4881613bce565b929592945050506040919091013590565b8015158114613b3157600080fd5b8035613cdb81613d59565b60008060408385031215613d8557600080fd5b823591506020830135613d9781613d59565b809150509250929050565b63ffffffff81168114613b3157600080fd5b600060208284031215613dc657600080fd5b813561369081613da2565b60008060408385031215613de457600080fd5b823591506020830135613d9781613bce565b600181811c90821680613e0a57607f821691505b602082108103613e43577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156120b3576120b3613e49565b818103818111156120b3576120b3613e49565b600060208284031215613eb057600080fd5b5051919050565b600081356120b381613da2565b600081356120b381613bce565b600081356120b381613d59565b8135613ee981613da2565b63ffffffff811690508154817fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000082161783556020840135613f2981613da2565b67ffffffff000000008160201b16837fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000841617178455505050613fae613f7160408401613eb7565b82547fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff1660409190911b6bffffffff000000000000000016178255565b613ffa613fbd60608401613ec4565b82546bffffffffffffffffffffffff1660609190911b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016178255565b6001810161404f61400d60808501613ec4565b82547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff91909116178255565b6140a861405e60a08501613ed1565b8280547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1691151560a01b74ff000000000000000000000000000000000000000016919091179055565b506128676140b860c08401613ec4565b6002830173ffffffffffffffffffffffffffffffffffffffff82167fffffffffffffffffffffffff00000000000000000000000000000000000000008254161781555050565b8281526101008101823561411181613da2565b63ffffffff8116602084015250602083013561412c81613da2565b63ffffffff8116604084015250604083013561414781613da2565b63ffffffff811660608401525061416060608401613cd0565b73ffffffffffffffffffffffffffffffffffffffff811660808401525061418960808401613cd0565b73ffffffffffffffffffffffffffffffffffffffff811660a0840152506141b260a08401613d67565b80151560c0840152506141c760c08401613cd0565b73ffffffffffffffffffffffffffffffffffffffff811660e08401526137a8565b6fffffffffffffffffffffffffffffffff81811683821601908111156120b3576120b3613e49565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b63ffffffff81511682526020810151602083015260408101516040830152606081015160608301526000608082015160e0608085015261428260e0850182613b71565b905060a083015184820360a086015261429b8282613b71565b91505060c083015184820360c08601526120ae8282613b71565b6040815260006142c8604083018561423f565b905082151560208301529392505050565b6000604082840312156142eb57600080fd5b6040805190810167ffffffffffffffff81118282101715614335577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604052825181526020928301519281019290925250919050565b60006040828403121561436157600080fd5b61369083836142d9565b60808152600061437e608083018661423f565b9050835160208301526020840151604083015273ffffffffffffffffffffffffffffffffffffffff83166060830152949350505050565b60008082840360c08112156143c957600080fd5b60808112156143d757600080fd5b506040516060810167ffffffffffffffff81118282101715614422577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405283518152602084015167ffffffffffffffff8116811461444457600080fd5b602082015261445685604086016142d9565b6040820152915061446a84608085016142d9565b90509250929050565b60006020828403121561448557600080fd5b815161369081613d59565b61ffff81811683821601908111156120b3576120b3613e49565b600086516144bc818460208b01613b4d565b80830190507fff000000000000000000000000000000000000000000000000000000000000008760f81b1681527fffff0000000000000000000000000000000000000000000000000000000000008660f01b1660018201527fff000000000000000000000000000000000000000000000000000000000000008560f81b1660038201528351614552816004840160208801613b4d565b01600401979650505050505050565b60008251614573818460208701613b4d565b919091019291505056fea2646970667358221220b6d77a257f3180c35565b75ca84601a62f8a7d27457944b6135dcb4341b816d964736f6c634300081c0033", + "deployedBytecode": "0x6080604052600436106102385760003560e01c8063570ca73511610138578063b3ab15fb116100b0578063ce86cdfd1161007f578063e30e4e8a11610064578063e30e4e8a146109c9578063eee44acb146109e9578063f3ed8f2514610a1957600080fd5b8063ce86cdfd14610890578063e110dfda1461099557600080fd5b8063b3ab15fb14610804578063b6fc8fac14610824578063b791513a1461083b578063cd366b9c1461087057600080fd5b80637667180811610107578063a7229fd9116100ec578063a7229fd9146107ba578063ac8477ab146107da578063b0c36601146107f157600080fd5b80637667180814610785578063a300fbbb1461079a57600080fd5b8063570ca7351461070e578063607de07a1461073b57806367ae97e61461075b5780636b64c7691461077057600080fd5b80632cf702f8116101cb578063466c01b81161019a5780634dd6c8de1161017f5780634dd6c8de1461066f5780634e62917b146106aa57806355b4b1a4146106d657600080fd5b8063466c01b8146106175780634c92c5cd1461064f57600080fd5b80632cf702f814610595578063379607f5146105aa578063406194c5146105ca578063454a2ab3146105f757600080fd5b80631b9a91a4116102075780631b9a91a41461040657806322f3e2d41461042857806327cc4c431461043d5780632ac873f91461047c57600080fd5b80630627099b1461024457806306fdde03146102895780630ab54b36146102ab578063135022c21461030457600080fd5b3661023f57005b600080fd5b34801561025057600080fd5b5061027461025f366004613b34565b600d6020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561029557600080fd5b5061029e610a49565b6040516102809190613bbb565b3480156102b757600080fd5b506102df7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610280565b34801561031057600080fd5b506103aa61031f366004613b34565b60408051608081018252600080825260208201819052918101829052606081019190915250600090815260016020818152604092839020835160808101855281546fffffffffffffffffffffffffffffffff80821683527001000000000000000000000000000000009091041692810192909252918201549281019290925260020154606082015290565b604051610280919060006080820190506fffffffffffffffffffffffffffffffff83511682526fffffffffffffffffffffffffffffffff6020840151166020830152604083015160408301526060830151606083015292915050565b34801561041257600080fd5b50610426610421366004613bf0565b610ad7565b005b34801561043457600080fd5b50610274610cc9565b34801561044957600080fd5b5061046e610458366004613b34565b6000908152600160208190526040909120015490565b604051908152602001610280565b34801561048857600080fd5b50610588610497366004613b34565b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810191909152506000908152600a6020908152604091829020825160e081018452815463ffffffff808216835264010000000082048116948301949094526801000000000000000081049093169381019390935273ffffffffffffffffffffffffffffffffffffffff6c01000000000000000000000000909204821660608401526001810154808316608085015260ff7401000000000000000000000000000000000000000090910416151560a0840152600201541660c082015290565b6040516102809190613c1c565b3480156105a157600080fd5b50610426610ce6565b3480156105b657600080fd5b506104266105c5366004613b34565b611046565b3480156105d657600080fd5b506007546102df9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561060357600080fd5b50610426610612366004613b34565b6112f0565b34801561062357600080fd5b5061046e610632366004613bf0565b600260209081526000928352604080842090915290825290205481565b34801561065b57600080fd5b5061042661066a366004613ce0565b6115bb565b34801561067b57600080fd5b5061027461068a366004613bf0565b600360209081526000928352604080842090915290825290205460ff1681565b3480156106b657600080fd5b506106c162278d0081565b60405163ffffffff9091168152602001610280565b3480156106e257600080fd5b5061046e6106f1366004613bf0565b600460209081526000928352604080842090915290825290205481565b34801561071a57600080fd5b506008546102df9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561074757600080fd5b50610426610756366004613cfd565b6116d3565b34801561076757600080fd5b506102df611950565b34801561077c57600080fd5b50610426611a5b565b34801561079157600080fd5b5060005461046e565b3480156107a657600080fd5b5061046e6107b5366004613bf0565b611fac565b3480156107c657600080fd5b506104266107d5366004613d18565b6120b9565b3480156107e657600080fd5b506106c16276a70081565b6104266107ff366004613d72565b612565565b34801561081057600080fd5b5061042661081f366004613ce0565b61286b565b34801561083057600080fd5b506106c162093a8081565b34801561084757600080fd5b506008546106c19074010000000000000000000000000000000000000000900463ffffffff1681565b34801561087c57600080fd5b5061042661088b366004613db4565b612978565b34801561089c57600080fd5b506109386108ab366004613b34565b600a6020526000908152604090208054600182015460029092015463ffffffff8083169364010000000084048216936801000000000000000081049092169273ffffffffffffffffffffffffffffffffffffffff6c010000000000000000000000009093048316928281169260ff7401000000000000000000000000000000000000000090910416911687565b6040805163ffffffff98891681529688166020880152949096169385019390935273ffffffffffffffffffffffffffffffffffffffff91821660608501528116608084015290151560a083015290911660c082015260e001610280565b3480156109a157600080fd5b506102df7f000000000000000000000000000000000000000000000000000000000000000081565b3480156109d557600080fd5b506104266109e4366004613dd1565b612aac565b3480156109f557600080fd5b5061046e610a04366004613b34565b60009081526001602052604090206002015490565b348015610a2557600080fd5b50610274610a34366004613b34565b60056020526000908152604090205460ff1681565b60098054610a5690613df6565b80601f0160208091040260200160405190810160405280929190818152602001828054610a8290613df6565b8015610acf5780601f10610aa457610100808354040283529160200191610acf565b820191906000526020600020905b815481529060010190602001808311610ab257829003601f168201915b505050505081565b60085473ffffffffffffffffffffffffffffffffffffffff163314801590610b17575060075473ffffffffffffffffffffffffffffffffffffffff163314155b15610b4e576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610b9b576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600003610bd5576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b4781811015610c26576040517fdb42144d0000000000000000000000000000000000000000000000000000000081526000600482015260248101839052604481018290526064015b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff168360405160006040518083038185875af1925050503d8060008114610c80576040519150601f19603f3d011682016040523d82523d6000602084013e610c85565b606091505b5050905080610cc3576040517f51fe4a3400000000000000000000000000000000000000000000000000000000815260048101849052602401610c1d565b50505050565b600080548152600160205260408120610ce190612da1565b905090565b60075473ffffffffffffffffffffffffffffffffffffffff163314610d37576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080548082526001602052604082208054919290916fffffffffffffffffffffffffffffffff169003610d97576040517f260e629b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610da081612da1565b15610dd7576040517f260e629b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080600a81610de8866001613e78565b815260208101919091526040016000205463ffffffff1611905080610f90578154427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff1611610e68576040517fa0e9298400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838152600a6020526040812090610e8082612df1565b600286015473ffffffffffffffffffffffffffffffffffffffff82166000908152600c6020526040812080549395509193509091610ebf908490613e8b565b90915550506000858152600a60209081526040808320838155600180820180547fffffffffffffffffffffff000000000000000000000000000000000000000000169055600291820180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055928390529083208381558083018490550191909155610f4d9086613e8b565b60005560408051868152602081018790527f5ef593cff3080a71aa942dc8e20fb32a38198f7cbc7095fa55324ededdcd98d6910160405180910390a15050505050565b610f9b600184613e78565b6000818152600a60205260408082208281556001810180547fffffffffffffffffffffff00000000000000000000000000000000000000000016905560020180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055519194507f5ef593cff3080a71aa942dc8e20fb32a38198f7cbc7095fa55324ededdcd98d69161103891868252602082015260400190565b60405180910390a15b505050565b6000818152600160205260408120805490916fffffffffffffffffffffffffffffffff90911690036110a4576040517fd5b25b6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8054427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff161115611109576040517fbf009dab00000000000000000000000000000000000000000000000000000000815260048101839052602401610c1d565b33600090815260036020908152604080832085845290915290205460ff161561115e576040517f646cf55800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000908152600260209081526040808320858452909152812054908190036111b3576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000908152600360209081526040808320868452825280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055600a90915281209061120782612df1565b915050600061122c85600201548660010154600087612eae909392919063ffffffff16565b3360009081526004602090815260408083208a8452825280832084905573ffffffffffffffffffffffffffffffffffffffff86168352600b90915281208054929350839290919061127e908490613e78565b909155506112a5905073ffffffffffffffffffffffffffffffffffffffff83163383612ef5565b604080518781526020810186905290810182905233907f45c072aa05b9853b5a993de7a28bc332ee01404a628cec1a23ce0f659f842ef19060600160405180910390a2505050505050565b600080548082526001602052604090912061130a81612da1565b611340576040517f65ca8f5400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8260000361137a576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152600a602052604081209061139282612df1565b5060028301546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482018190529293506000918416906370a0823190602401602060405180830381865afa15801561140c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114309190613e9e565b905061145473ffffffffffffffffffffffffffffffffffffffff841633848a612f76565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152600091908516906370a0823190602401602060405180830381865afa1580156114c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e89190613e9e565b90506114f48282613e8b565b881461152c576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526002602090815260408083208a8452909152812080548a9290611556908490613e78565b92505081905550878660010160008282546115719190613e78565b909155505060408051888152602081018a905233917f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a15910160405180910390a25050505050505050565b60075473ffffffffffffffffffffffffffffffffffffffff16331461160c576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116611659576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527ffe46d4bbb89eab62693e8325c2c0b567b017d956f54941fb99110a372a152e37906020015b60405180910390a150565b60075473ffffffffffffffffffffffffffffffffffffffff163314611724576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054801561177d57600081815260016020526040902061174481612da1565b1561177b576040517f260e629b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b62093a8061178e6020840184613db4565b63ffffffff1610806117b4575062278d006117ac6020840184613db4565b63ffffffff16115b806117d657506276a7006117ce6040840160208501613db4565b63ffffffff16115b1561180d576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61181d6040830160208401613db4565b63ffffffff161580611852575061183a6080830160608401613ce0565b73ffffffffffffffffffffffffffffffffffffffff16155b15611889576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061189b60e0840160c08501613ce0565b73ffffffffffffffffffffffffffffffffffffffff16036118e8576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118f3600182613e78565b6000818152600a6020526040902090915082906119108282613ede565b9050507fde766fad167141a0e1213696eeff0a28605b0c2a2228ac153d27ec3cd91121d681836040516119449291906140fe565b60405180910390a15050565b600080548152600a60209081526040808320815160e081018352815463ffffffff80821683526401000000008204811695830195909552680100000000000000008104909416928101929092526c0100000000000000000000000090920473ffffffffffffffffffffffffffffffffffffffff90811660608301526001830154808216608084015274010000000000000000000000000000000000000000900460ff16151560a083018190526002909301541660c082015290611a33577f0000000000000000000000000000000000000000000000000000000000000000611a55565b7f00000000000000000000000000000000000000000000000000000000000000005b91505090565b6000805490600a81611a6e846001613e78565b815260208101919091526040016000908120805490925063ffffffff169003611ac3576040517ffcd189b500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600181015473ffffffffffffffffffffffffffffffffffffffff1615801590611b065750600181015473ffffffffffffffffffffffffffffffffffffffff163314155b15611b3d576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8115611c1f576000828152600160208181526040808420815160808101835281546fffffffffffffffffffffffffffffffff80821683527001000000000000000000000000000000009091041681850190815294820154818401526002909101546060820152868552600a90925290922054905164010000000090910463ffffffff16904290611bce9083906141e8565b6fffffffffffffffffffffffffffffffff161115611c18576040517ffcd189b500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050611c93565b80544290611c5b90640100000000900463ffffffff167f0000000000000000000000000000000000000000000000000000000000000000613e78565b1115611c93576040517ffcd189b500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611c9e82612df1565b73ffffffffffffffffffffffffffffffffffffffff81166000818152600c60205260408082205490517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529395509350916370a0823190602401602060405180830381865afa158015611d1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d409190613e9e565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600b602052604081205491925090611d749084613e8b565b611d7e9083613e8b565b85549091506c01000000000000000000000000900473ffffffffffffffffffffffffffffffffffffffff16600003611de2576040517f9f16f00800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84546c01000000000000000000000000900473ffffffffffffffffffffffffffffffffffffffff16811015611e43576040517f2b049be300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054611e51906001613e78565b6000818155818152600160205260408120875492985091611e849068010000000000000000900463ffffffff16426141e8565b82547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff82161783558754909150600090611ed69063ffffffff16836141e8565b83546fffffffffffffffffffffffffffffffff828116700100000000000000000000000000000000029116178455600284018590559050611f178487613e78565b73ffffffffffffffffffffffffffffffffffffffff88166000908152600c60209081526040918290209290925580518b81526fffffffffffffffffffffffffffffffff80861693820193909352918316908201526060810185905233907f2f0e07e2baf6351377b2a46b5ccf5cd22b494921f870da223157659e174918f99060800160405180910390a2505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260036020908152604080832084845290915281205460ff1615611fed575060006120b3565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260026020908152604080832085845290915290205480158061202c575060005483115b1561203b5760009150506120b3565b6000838152600160208181526040808420815160808101835281546fffffffffffffffffffffffffffffffff80821683527001000000000000000000000000000000009091041693810193909352928301549082018190526002909201546060820181905290926120ae92859291612eae565b925050505b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff16331461210a576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216612157576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600003612191576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561223957507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156122c6578273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f879f92dded0f26b83c3e00b12e0395dc72cfc3077343d1854ed6988edd1f90968360405161229d91815260200190565b60405180910390a361104173ffffffffffffffffffffffffffffffffffffffff84168383612ef5565b600080548082526001602052604090912081156123bd5780546fffffffffffffffffffffffffffffffff1660000361232a576040517f260e629b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8054427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff1611151580156123865750600a600061236d846001613e78565b815260208101919091526040016000205463ffffffff16155b156123bd576040517f97ea364c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8716906370a0823190602401602060405180830381865afa15801561242a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061244e9190613e9e565b73ffffffffffffffffffffffffffffffffffffffff87166000908152600b6020908152604080832054600c909252822054929350909161248e9190613e8b565b6124989083613e8b565b9050808511156124d4576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6124f573ffffffffffffffffffffffffffffffffffffffff88168787612ef5565b8673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f879f92dded0f26b83c3e00b12e0395dc72cfc3077343d1854ed6988edd1f90968760405161255491815260200190565b60405180910390a350505050505050565b61256d612fbc565b6000828152600d602052604090205460ff16156125b6576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152600160205260408120805490916fffffffffffffffffffffffffffffffff9091169003612614576040517fd5b25b6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8054427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff161115612676576040517fb37f700600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000341180156126ab57507f000000000000000000000000000000000000000000000000000000000000000063ffffffff1646145b156126e2576040517fba792cb900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838152600a60205260408120906126fa82612df1565b5090507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612782576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600183015460008190036127c2576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051878152602081018390527f7100c4f922b370c0ad3218efd254665bfc8609664973b40534b2c4ea6ca28708910160405180910390a16000868152600d6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055600283015461285990829073ffffffffffffffffffffffffffffffffffffffff1687612fff565b505050506128676001600655565b5050565b60075473ffffffffffffffffffffffffffffffffffffffff1633146128bc576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116612909576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f99d737e0adf2c449d71890b86772885ec7959b152ddb265f76325b6e68e105d390600090a250565b60085473ffffffffffffffffffffffffffffffffffffffff1633148015906129b8575060075473ffffffffffffffffffffffffffffffffffffffff163314155b156129ef576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8063ffffffff16600003612a2f576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600880547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000063ffffffff8416908102919091179091556040519081527fb12b811ee01ea66d1cd1a2f8ee470517b143478dafa635fd782430c34251d9f0906020016116c8565b60075473ffffffffffffffffffffffffffffffffffffffff163314612afd576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116612b4a576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054821115612b86576040517fd5b25b6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526005602052604090205460ff1615612bcf576040517f3e49310000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602052604090208054427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff161115612c3f576040517fb37f700600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600181015415612c7b576040517f398d4d3200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838152600a6020526040812090612c9382612df1565b600087815260056020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055600288015473ffffffffffffffffffffffffffffffffffffffff85168452600c909252822080549395509093508392909190612d0a908490613e8b565b925050819055508173ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f879f92dded0f26b83c3e00b12e0395dc72cfc3077343d1854ed6988edd1f909683604051612d7091815260200190565b60405180910390a3612d9973ffffffffffffffffffffffffffffffffffffffff83168683612ef5565b505050505050565b8054600090426fffffffffffffffffffffffffffffffff909116118015906120b35750505470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16421090565b6001810154600090819074010000000000000000000000000000000000000000900460ff16612e61577f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000612ea4565b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000005b9094909350915050565b6000612ebb858585613586565b9050818015612eda575060008380612ed557612ed5614210565b858709115b15612eed57612eea600182613e78565b90505b949350505050565b60405173ffffffffffffffffffffffffffffffffffffffff83811660248301526044820183905261104191859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050613697565b60405173ffffffffffffffffffffffffffffffffffffffff8481166024830152838116604483015260648201839052610cc39186918216906323b872dd90608401612f2f565b600260065403612ff8576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600655565b61304173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016833086612f76565b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff164603613113576040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018490527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906342966c6890602401600060405180830381600087803b1580156130f657600080fd5b505af115801561310a573d6000803e3d6000fd5b50505050505050565b6008546000906131849074010000000000000000000000000000000000000000900463ffffffff168261317d604080517e03000000000000000000000000000000000000000000000000000000000000602082015281516002818303018152602290910190915290565b919061372d565b6040805160e08101825263ffffffff7f00000000000000000000000000000000000000000000000000000000000000001681526000602080830182905282840189905260608301829052608083018590528351808201855282815260a08401528351908101845281815260c083015291517f3b6f743b000000000000000000000000000000000000000000000000000000008152929350917f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690633b6f743b9061326a90859085906004016142b5565b6040805180830381865afa158015613286573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132aa919061434f565b90508380156132b95750805147105b156133035780516040517fdb42144d000000000000000000000000000000000000000000000000000000008152600060048201526024810191909152476044820152606401610c1d565b831580156133115750805134105b1561335b5780516040517fdb42144d000000000000000000000000000000000000000000000000000000008152600060048201526024810191909152346044820152606401610c1d565b83156134235780516040517fc7c7f5b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169163c7c7f5b3916133d99086908690309060040161436b565b60c06040518083038185885af11580156133f7573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061341c91906143b5565b5050612d99565b80516040517fc7c7f5b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169163c7c7f5b39161349b9086908690339060040161436b565b60c06040518083038185885af11580156134b9573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906134de91906143b5565b505080516000906134ef9034613e8b565b9050801561310a57604051600090339083908381818185875af1925050503d8060008114613539576040519150601f19603f3d011682016040523d82523d6000602084013e61353e565b606091505b505090508061357c576040517f51fe4a3400000000000000000000000000000000000000000000000000000000815260048101839052602401610c1d565b5050505050505050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff858709858702925082811083820303915050806000036135de578382816135d4576135d4614210565b0492505050613690565b838110613628576040517f63a05778000000000000000000000000000000000000000000000000000000008152600481018790526024810186905260448101859052606401610c1d565b600084868809851960019081018716968790049682860381900495909211909303600082900391909104909201919091029190911760038402600290811880860282030280860282030280860282030280860282030280860282030280860290910302029150505b9392505050565b60006136b973ffffffffffffffffffffffffffffffffffffffff8416836137b0565b905080516000141580156136de5750808060200190518101906136dc9190614473565b155b15611041576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610c1d565b606083600361373d8260006137be565b61ffff161461378a576137518160006137be565b6040517f3a51740d00000000000000000000000000000000000000000000000000000000815261ffff9091166004820152602401610c1d565b6000613796858561383e565b90506137a4866001836138f0565b9250505b509392505050565b60606136908383600061395b565b60006137cb826002613e78565b83511015613835576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f746f55696e7431365f6f75744f66426f756e64730000000000000000000000006044820152606401610c1d565b50016002015190565b60606fffffffffffffffffffffffffffffffff8216156138a757604080517fffffffffffffffffffffffffffffffff00000000000000000000000000000000608086811b8216602084015285901b16603082015201604051602081830303815290604052613690565b6040517fffffffffffffffffffffffffffffffff00000000000000000000000000000000608085901b166020820152603001604051602081830303815290604052905092915050565b60608360036139008260006137be565b61ffff1614613914576137518160006137be565b8460016139218551613a14565b61392c906001614490565b86866040516020016139429594939291906144aa565b6040516020818303038152906040529150509392505050565b606081471015613999576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610c1d565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516139c29190614561565b60006040518083038185875af1925050503d80600081146139ff576040519150601f19603f3d011682016040523d82523d6000602084013e613a04565b606091505b50915091506137a4868383613a60565b600061ffff821115613a5c576040517f6dfcc6500000000000000000000000000000000000000000000000000000000081526010600482015260248101839052604401610c1d565b5090565b606082613a7557613a7082613aef565b613690565b8151158015613a99575073ffffffffffffffffffffffffffffffffffffffff84163b155b15613ae8576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610c1d565b5080613690565b805115613aff5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b600060208284031215613b4657600080fd5b5035919050565b60005b83811015613b68578181015183820152602001613b50565b50506000910152565b60008151808452613b89816020860160208601613b4d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006136906020830184613b71565b73ffffffffffffffffffffffffffffffffffffffff81168114613b3157600080fd5b60008060408385031215613c0357600080fd5b8235613c0e81613bce565b946020939093013593505050565b600060e08201905063ffffffff835116825263ffffffff602084015116602083015263ffffffff604084015116604083015273ffffffffffffffffffffffffffffffffffffffff606084015116606083015273ffffffffffffffffffffffffffffffffffffffff608084015116608083015260a0830151613ca160a084018215159052565b5060c0830151613cc960c084018273ffffffffffffffffffffffffffffffffffffffff169052565b5092915050565b8035613cdb81613bce565b919050565b600060208284031215613cf257600080fd5b813561369081613bce565b600060e0828403128015613d1057600080fd5b509092915050565b600080600060608486031215613d2d57600080fd5b8335613d3881613bce565b92506020840135613d4881613bce565b929592945050506040919091013590565b8015158114613b3157600080fd5b8035613cdb81613d59565b60008060408385031215613d8557600080fd5b823591506020830135613d9781613d59565b809150509250929050565b63ffffffff81168114613b3157600080fd5b600060208284031215613dc657600080fd5b813561369081613da2565b60008060408385031215613de457600080fd5b823591506020830135613d9781613bce565b600181811c90821680613e0a57607f821691505b602082108103613e43577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156120b3576120b3613e49565b818103818111156120b3576120b3613e49565b600060208284031215613eb057600080fd5b5051919050565b600081356120b381613da2565b600081356120b381613bce565b600081356120b381613d59565b8135613ee981613da2565b63ffffffff811690508154817fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000082161783556020840135613f2981613da2565b67ffffffff000000008160201b16837fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000841617178455505050613fae613f7160408401613eb7565b82547fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff1660409190911b6bffffffff000000000000000016178255565b613ffa613fbd60608401613ec4565b82546bffffffffffffffffffffffff1660609190911b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016178255565b6001810161404f61400d60808501613ec4565b82547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff91909116178255565b6140a861405e60a08501613ed1565b8280547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1691151560a01b74ff000000000000000000000000000000000000000016919091179055565b506128676140b860c08401613ec4565b6002830173ffffffffffffffffffffffffffffffffffffffff82167fffffffffffffffffffffffff00000000000000000000000000000000000000008254161781555050565b8281526101008101823561411181613da2565b63ffffffff8116602084015250602083013561412c81613da2565b63ffffffff8116604084015250604083013561414781613da2565b63ffffffff811660608401525061416060608401613cd0565b73ffffffffffffffffffffffffffffffffffffffff811660808401525061418960808401613cd0565b73ffffffffffffffffffffffffffffffffffffffff811660a0840152506141b260a08401613d67565b80151560c0840152506141c760c08401613cd0565b73ffffffffffffffffffffffffffffffffffffffff811660e08401526137a8565b6fffffffffffffffffffffffffffffffff81811683821601908111156120b3576120b3613e49565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b63ffffffff81511682526020810151602083015260408101516040830152606081015160608301526000608082015160e0608085015261428260e0850182613b71565b905060a083015184820360a086015261429b8282613b71565b91505060c083015184820360c08601526120ae8282613b71565b6040815260006142c8604083018561423f565b905082151560208301529392505050565b6000604082840312156142eb57600080fd5b6040805190810167ffffffffffffffff81118282101715614335577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604052825181526020928301519281019290925250919050565b60006040828403121561436157600080fd5b61369083836142d9565b60808152600061437e608083018661423f565b9050835160208301526020840151604083015273ffffffffffffffffffffffffffffffffffffffff83166060830152949350505050565b60008082840360c08112156143c957600080fd5b60808112156143d757600080fd5b506040516060810167ffffffffffffffff81118282101715614422577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405283518152602084015167ffffffffffffffff8116811461444457600080fd5b602082015261445685604086016142d9565b6040820152915061446a84608085016142d9565b90509250929050565b60006020828403121561448557600080fd5b815161369081613d59565b61ffff81811683821601908111156120b3576120b3613e49565b600086516144bc818460208b01613b4d565b80830190507fff000000000000000000000000000000000000000000000000000000000000008760f81b1681527fffff0000000000000000000000000000000000000000000000000000000000008660f01b1660018201527fff000000000000000000000000000000000000000000000000000000000000008560f81b1660038201528351614552816004840160208801613b4d565b01600401979650505050505050565b60008251614573818460208701613b4d565b919091019291505056fea2646970667358221220b6d77a257f3180c35565b75ca84601a62f8a7d27457944b6135dcb4341b816d964736f6c634300081c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/templegold/SpiceAuctionFactory.sol/SpiceAuctionFactory.json b/apps/dapp/abi/contracts/templegold/SpiceAuctionFactory.sol/SpiceAuctionFactory.json new file mode 100644 index 000000000..6691b15fc --- /dev/null +++ b/apps/dapp/abi/contracts/templegold/SpiceAuctionFactory.sol/SpiceAuctionFactory.json @@ -0,0 +1,478 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "SpiceAuctionFactory", + "sourceName": "contracts/templegold/SpiceAuctionFactory.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_rescuer", + "type": "address" + }, + { + "internalType": "address", + "name": "_executor", + "type": "address" + }, + { + "internalType": "address", + "name": "_daoExecutor", + "type": "address" + }, + { + "internalType": "address", + "name": "_operator", + "type": "address" + }, + { + "internalType": "address", + "name": "_templeGold", + "type": "address" + }, + { + "internalType": "uint32", + "name": "_arbLzEid", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "mintChainId_", + "type": "uint32" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "InvalidAccess", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidAddress", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidParam", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "address", + "name": "auction", + "type": "address" + } + ], + "name": "AuctionCreated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "bytes4", + "name": "fnSelector", + "type": "bytes4" + }, + { + "indexed": true, + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "ExplicitAccessSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newExecutor", + "type": "address" + } + ], + "name": "NewExecutorAccepted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "oldProposedExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newProposedExecutor", + "type": "address" + } + ], + "name": "NewExecutorProposed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newRescuer", + "type": "address" + } + ], + "name": "NewRescuerAccepted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "oldProposedRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newProposedRescuer", + "type": "address" + } + ], + "name": "NewRescuerProposed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "RescueModeSet", + "type": "event" + }, + { + "inputs": [], + "name": "acceptExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "acceptRescuer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spiceToken", + "type": "address" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + } + ], + "name": "createAuction", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "daoExecutor", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + } + ], + "name": "deployedAuctions", + "outputs": [ + { + "internalType": "address", + "name": "auction", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "executor", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "name": "explicitFunctionAccess", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spiceToken", + "type": "address" + } + ], + "name": "findAuctionForSpiceToken", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spiceToken", + "type": "address" + } + ], + "name": "getPairId", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "inRescueMode", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "operator", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "proposeNewExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "proposeNewRescuer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "rescuer", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "allowedCaller", + "type": "address" + }, + { + "components": [ + { + "internalType": "bytes4", + "name": "fnSelector", + "type": "bytes4" + }, + { + "internalType": "bool", + "name": "allowed", + "type": "bool" + } + ], + "internalType": "struct ITempleElevatedAccess.ExplicitAccess[]", + "name": "access", + "type": "tuple[]" + } + ], + "name": "setExplicitAccess", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "setRescueMode", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "templeGold", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x61012060405234801561001157600080fd5b506040516160393803806160398339810160408190526100309161013a565b86866001600160a01b0382166100595760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b0381166100805760405163e6c4247b60e01b815260040160405180910390fd5b816001600160a01b0316816001600160a01b0316036100b25760405163e6c4247b60e01b815260040160405180910390fd5b600080546001600160a01b03199081166001600160a01b03948516179091556001805490911691831691909117905594851660a05292841660c052921660805263ffffffff91821660e0521661010052506101c09050565b80516001600160a01b038116811461012157600080fd5b919050565b805163ffffffff8116811461012157600080fd5b600080600080600080600060e0888a03121561015557600080fd5b61015e8861010a565b965061016c6020890161010a565b955061017a6040890161010a565b94506101886060890161010a565b93506101966080890161010a565b92506101a460a08901610126565b91506101b260c08901610126565b905092959891949750929550565b60805160a05160c05160e05161010051615e04610235600039600061093d0152600061091c0152600081816101e301526108fb0152600081816101bc01526108da01526000818161030301528181610831015281816108b801528181610dcc01528181610e2d0152610eb40152615e046000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c80638bb93e5d116100b2578063bfccf0ec11610081578063d9a349c111610066578063d9a349c1146102bd578063daeccc79146102d0578063e110dfda146102fe57600080fd5b8063bfccf0ec1461028a578063c34c08e51461029d57600080fd5b80638bb93e5d1461020d5780638ed46a0d146102435780639002540814610264578063b42138c21461027757600080fd5b806338a63183116100ee57806338a6318314610172578063406194c5146101b7578063570ca735146101de5780638112c4af1461020557600080fd5b8063032ef9011461012057806307f184f1146101355780631810fe7f146101485780631f2114051461016a575b600080fd5b61013361012e366004610fc8565b610325565b005b61013361014336600461100e565b6103d4565b6003546101559060ff1681565b60405190151581526020015b60405180910390f35b61013361050c565b6000546101929073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610161565b6101927f000000000000000000000000000000000000000000000000000000000000000081565b6101927f000000000000000000000000000000000000000000000000000000000000000081565b61013361062b565b61019261021b366004611029565b60056020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b61025661025136600461100e565b61076b565b604051908152602001610161565b6101926102723660046110c0565b61077c565b61019261028536600461100e565b610a35565b610133610298366004611189565b610a6d565b6001546101929073ffffffffffffffffffffffffffffffffffffffff1681565b6101336102cb36600461100e565b610c6c565b6101556102de366004611241565b600260209081526000928352604080842090915290825290205460ff1681565b6101927f000000000000000000000000000000000000000000000000000000000000000081565b60005473ffffffffffffffffffffffffffffffffffffffff163314610376576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604051811515907f18f4a9a726c72020fd959c636d2fd464c6cefe90afeaea3c830b971614cf70b690600090a2600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610425576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610472576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60035460405173ffffffffffffffffffffffffffffffffffffffff808416926101009004169033907f374d23b359cab0f8963c5c1715a6de7974f53af00aecc27de50d93906b70943e90600090a46003805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b60045473ffffffffffffffffffffffffffffffffffffffff16331461055d576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005473ffffffffffffffffffffffffffffffffffffffff1633036105ae576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600154604051339173ffffffffffffffffffffffffffffffffffffffff16907fe963dc9c0d2165b080440a5d2665566142f2426b1ea15f3da8390b0fd336b06490600090a3600180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163317909155600480549091169055565b600354610100900473ffffffffffffffffffffffffffffffffffffffff163314610681576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015473ffffffffffffffffffffffffffffffffffffffff1633036106d2576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054604051339273ffffffffffffffffffffffffffffffffffffffff909216917ff07131157ebea15896dc89264eb9a7572e67cc9fad6b855015730fcec10704e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001633179055600380547fffffffffffffffffffffff0000000000000000000000000000000000000000ff169055565b600061077682610db1565b92915050565b60006107ac336000357fffffffff0000000000000000000000000000000000000000000000000000000016610ee8565b6107e2576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831661082f576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036108b4576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60007f0000000000000000000000000000000000000000000000000000000000000000847f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008860405161096990610fab565b6109799796959493929190611274565b604051809103906000f080158015610995573d6000803e3d6000fd5b50905060006109a385610db1565b60008181526005602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87169081179091558251848152918201529192507f832e001c1b031a46bae65558b4362398dec9d31b642c5b1420b13fa0c0651343910160405180910390a1509392505050565b600080610a4183610db1565b60009081526005602052604090205473ffffffffffffffffffffffffffffffffffffffff169392505050565b610a9b336000357fffffffff0000000000000000000000000000000000000000000000000000000016610ee8565b610ad1576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316610b1e576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805180820190915260008082526020820152819060005b82811015610c6457848482818110610b5157610b51611371565b905060400201803603810190610b6791906113a0565b91508160200151151582600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168773ffffffffffffffffffffffffffffffffffffffff167ff5736e75de2c751f775d4c5ed517289f77074f8c337f451ba4c0c3ed1dd7f9ad60405160405180910390a460208281015173ffffffffffffffffffffffffffffffffffffffff8816600090815260028352604080822086517fffffffff000000000000000000000000000000000000000000000000000000001683529093529190912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101610b37565b505050505050565b610c9a336000357fffffffff0000000000000000000000000000000000000000000000000000000016610ee8565b610cd0576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610d1d576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60045460015460405173ffffffffffffffffffffffffffffffffffffffff8085169381169216907f4857570a90fe0a0fc580e89a287e77576141ac8e2e8b3710cd26db44f44156c190600090a4600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60008173ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff161015610e82576040517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000606090811b8216602084015284901b1660348201526048015b604051602081830303815290604052805190602001209050919050565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b821660208401527f0000000000000000000000000000000000000000000000000000000000000000901b166034820152604801610e65565b919050565b60035460009060ff1615610f1a575060005473ffffffffffffffffffffffffffffffffffffffff838116911614610776565b60015473ffffffffffffffffffffffffffffffffffffffff84811691161480610f95575073ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290205460ff165b15610fa257506001610776565b50600092915050565b6149d1806113fe83390190565b80358015158114610ee357600080fd5b600060208284031215610fda57600080fd5b610fe382610fb8565b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610ee357600080fd5b60006020828403121561102057600080fd5b610fe382610fea565b60006020828403121561103b57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156110b8576110b8611042565b604052919050565b600080604083850312156110d357600080fd5b6110dc83610fea565b9150602083013567ffffffffffffffff8111156110f857600080fd5b8301601f8101851361110957600080fd5b803567ffffffffffffffff81111561112357611123611042565b61115460207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611071565b81815286602083850101111561116957600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008060006040848603121561119e57600080fd5b6111a784610fea565b9250602084013567ffffffffffffffff8111156111c357600080fd5b8401601f810186136111d457600080fd5b803567ffffffffffffffff8111156111eb57600080fd5b8660208260061b840101111561120057600080fd5b939660209190910195509293505050565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114610ee357600080fd5b6000806040838503121561125457600080fd5b61125d83610fea565b915061126b60208401611211565b90509250929050565b73ffffffffffffffffffffffffffffffffffffffff8816815273ffffffffffffffffffffffffffffffffffffffff8716602082015273ffffffffffffffffffffffffffffffffffffffff8616604082015273ffffffffffffffffffffffffffffffffffffffff8516606082015263ffffffff8416608082015263ffffffff831660a082015260e060c0820152600082518060e084015260005b8181101561132b57602081860181015161010086840101520161130d565b50600061010082850101526101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505098975050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060408284031280156113b357600080fd5b506040805190810167ffffffffffffffff811182821017156113d7576113d7611042565b6040526113e383611211565b81526113f160208401610fb8565b6020820152939250505056fe61012060405234801561001157600080fd5b506040516149d13803806149d1833981016040819052610030916100f9565b60016006556001600160a01b03868116608052600780546001600160a01b03199081168884161790915560088054909116868316179055871660a05263ffffffff83811660c052821660e052600961008882826102b3565b5050426101005250506008805463ffffffff60a01b191662014f8160a01b1790555061037192505050565b80516001600160a01b03811681146100ca57600080fd5b919050565b805163ffffffff811681146100ca57600080fd5b634e487b7160e01b600052604160045260246000fd5b600080600080600080600060e0888a03121561011457600080fd5b61011d886100b3565b965061012b602089016100b3565b9550610139604089016100b3565b9450610147606089016100b3565b9350610155608089016100cf565b925061016360a089016100cf565b60c08901519092506001600160401b0381111561017f57600080fd5b8801601f81018a1361019057600080fd5b80516001600160401b038111156101a9576101a96100e3565b604051601f8201601f19908116603f011681016001600160401b03811182821017156101d7576101d76100e3565b6040528181528282016020018c10156101ef57600080fd5b60005b8281101561020e576020818501810151838301820152016101f2565b5060006020838301015280935050505092959891949750929550565b600181811c9082168061023e57607f821691505b60208210810361025e57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156102ae57806000526020600020601f840160051c8101602085101561028b5750805b601f840160051c820191505b818110156102ab5760008155600101610297565b50505b505050565b81516001600160401b038111156102cc576102cc6100e3565b6102e0816102da845461022a565b84610264565b6020601f82116001811461031457600083156102fc5750848201515b600019600385901b1c1916600184901b1784556102ab565b600084815260208120601f198516915b828110156103445787850151825560209485019460019092019101610324565b50848210156103625786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b60805160a05160c05160e051610100516145b361041e6000396000611c370152600081816126830152613043015260006131950152600081816109a701528181611a35015281816121ea015281816126ff01528181612e1c01528181612e84015281816130190152818161309d0152818161321e015281816133a001526134620152600081816102bd01528181611a0f0152818161219301528181612e3d0152612e6301526145b36000f3fe6080604052600436106102385760003560e01c8063570ca73511610138578063b3ab15fb116100b0578063ce86cdfd1161007f578063e30e4e8a11610064578063e30e4e8a146109c9578063eee44acb146109e9578063f3ed8f2514610a1957600080fd5b8063ce86cdfd14610890578063e110dfda1461099557600080fd5b8063b3ab15fb14610804578063b6fc8fac14610824578063b791513a1461083b578063cd366b9c1461087057600080fd5b80637667180811610107578063a7229fd9116100ec578063a7229fd9146107ba578063ac8477ab146107da578063b0c36601146107f157600080fd5b80637667180814610785578063a300fbbb1461079a57600080fd5b8063570ca7351461070e578063607de07a1461073b57806367ae97e61461075b5780636b64c7691461077057600080fd5b80632cf702f8116101cb578063466c01b81161019a5780634dd6c8de1161017f5780634dd6c8de1461066f5780634e62917b146106aa57806355b4b1a4146106d657600080fd5b8063466c01b8146106175780634c92c5cd1461064f57600080fd5b80632cf702f814610595578063379607f5146105aa578063406194c5146105ca578063454a2ab3146105f757600080fd5b80631b9a91a4116102075780631b9a91a41461040657806322f3e2d41461042857806327cc4c431461043d5780632ac873f91461047c57600080fd5b80630627099b1461024457806306fdde03146102895780630ab54b36146102ab578063135022c21461030457600080fd5b3661023f57005b600080fd5b34801561025057600080fd5b5061027461025f366004613b34565b600d6020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561029557600080fd5b5061029e610a49565b6040516102809190613bbb565b3480156102b757600080fd5b506102df7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610280565b34801561031057600080fd5b506103aa61031f366004613b34565b60408051608081018252600080825260208201819052918101829052606081019190915250600090815260016020818152604092839020835160808101855281546fffffffffffffffffffffffffffffffff80821683527001000000000000000000000000000000009091041692810192909252918201549281019290925260020154606082015290565b604051610280919060006080820190506fffffffffffffffffffffffffffffffff83511682526fffffffffffffffffffffffffffffffff6020840151166020830152604083015160408301526060830151606083015292915050565b34801561041257600080fd5b50610426610421366004613bf0565b610ad7565b005b34801561043457600080fd5b50610274610cc9565b34801561044957600080fd5b5061046e610458366004613b34565b6000908152600160208190526040909120015490565b604051908152602001610280565b34801561048857600080fd5b50610588610497366004613b34565b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810191909152506000908152600a6020908152604091829020825160e081018452815463ffffffff808216835264010000000082048116948301949094526801000000000000000081049093169381019390935273ffffffffffffffffffffffffffffffffffffffff6c01000000000000000000000000909204821660608401526001810154808316608085015260ff7401000000000000000000000000000000000000000090910416151560a0840152600201541660c082015290565b6040516102809190613c1c565b3480156105a157600080fd5b50610426610ce6565b3480156105b657600080fd5b506104266105c5366004613b34565b611046565b3480156105d657600080fd5b506007546102df9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561060357600080fd5b50610426610612366004613b34565b6112f0565b34801561062357600080fd5b5061046e610632366004613bf0565b600260209081526000928352604080842090915290825290205481565b34801561065b57600080fd5b5061042661066a366004613ce0565b6115bb565b34801561067b57600080fd5b5061027461068a366004613bf0565b600360209081526000928352604080842090915290825290205460ff1681565b3480156106b657600080fd5b506106c162278d0081565b60405163ffffffff9091168152602001610280565b3480156106e257600080fd5b5061046e6106f1366004613bf0565b600460209081526000928352604080842090915290825290205481565b34801561071a57600080fd5b506008546102df9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561074757600080fd5b50610426610756366004613cfd565b6116d3565b34801561076757600080fd5b506102df611950565b34801561077c57600080fd5b50610426611a5b565b34801561079157600080fd5b5060005461046e565b3480156107a657600080fd5b5061046e6107b5366004613bf0565b611fac565b3480156107c657600080fd5b506104266107d5366004613d18565b6120b9565b3480156107e657600080fd5b506106c16276a70081565b6104266107ff366004613d72565b612565565b34801561081057600080fd5b5061042661081f366004613ce0565b61286b565b34801561083057600080fd5b506106c162093a8081565b34801561084757600080fd5b506008546106c19074010000000000000000000000000000000000000000900463ffffffff1681565b34801561087c57600080fd5b5061042661088b366004613db4565b612978565b34801561089c57600080fd5b506109386108ab366004613b34565b600a6020526000908152604090208054600182015460029092015463ffffffff8083169364010000000084048216936801000000000000000081049092169273ffffffffffffffffffffffffffffffffffffffff6c010000000000000000000000009093048316928281169260ff7401000000000000000000000000000000000000000090910416911687565b6040805163ffffffff98891681529688166020880152949096169385019390935273ffffffffffffffffffffffffffffffffffffffff91821660608501528116608084015290151560a083015290911660c082015260e001610280565b3480156109a157600080fd5b506102df7f000000000000000000000000000000000000000000000000000000000000000081565b3480156109d557600080fd5b506104266109e4366004613dd1565b612aac565b3480156109f557600080fd5b5061046e610a04366004613b34565b60009081526001602052604090206002015490565b348015610a2557600080fd5b50610274610a34366004613b34565b60056020526000908152604090205460ff1681565b60098054610a5690613df6565b80601f0160208091040260200160405190810160405280929190818152602001828054610a8290613df6565b8015610acf5780601f10610aa457610100808354040283529160200191610acf565b820191906000526020600020905b815481529060010190602001808311610ab257829003601f168201915b505050505081565b60085473ffffffffffffffffffffffffffffffffffffffff163314801590610b17575060075473ffffffffffffffffffffffffffffffffffffffff163314155b15610b4e576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610b9b576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600003610bd5576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b4781811015610c26576040517fdb42144d0000000000000000000000000000000000000000000000000000000081526000600482015260248101839052604481018290526064015b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff168360405160006040518083038185875af1925050503d8060008114610c80576040519150601f19603f3d011682016040523d82523d6000602084013e610c85565b606091505b5050905080610cc3576040517f51fe4a3400000000000000000000000000000000000000000000000000000000815260048101849052602401610c1d565b50505050565b600080548152600160205260408120610ce190612da1565b905090565b60075473ffffffffffffffffffffffffffffffffffffffff163314610d37576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080548082526001602052604082208054919290916fffffffffffffffffffffffffffffffff169003610d97576040517f260e629b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610da081612da1565b15610dd7576040517f260e629b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080600a81610de8866001613e78565b815260208101919091526040016000205463ffffffff1611905080610f90578154427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff1611610e68576040517fa0e9298400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838152600a6020526040812090610e8082612df1565b600286015473ffffffffffffffffffffffffffffffffffffffff82166000908152600c6020526040812080549395509193509091610ebf908490613e8b565b90915550506000858152600a60209081526040808320838155600180820180547fffffffffffffffffffffff000000000000000000000000000000000000000000169055600291820180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055928390529083208381558083018490550191909155610f4d9086613e8b565b60005560408051868152602081018790527f5ef593cff3080a71aa942dc8e20fb32a38198f7cbc7095fa55324ededdcd98d6910160405180910390a15050505050565b610f9b600184613e78565b6000818152600a60205260408082208281556001810180547fffffffffffffffffffffff00000000000000000000000000000000000000000016905560020180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055519194507f5ef593cff3080a71aa942dc8e20fb32a38198f7cbc7095fa55324ededdcd98d69161103891868252602082015260400190565b60405180910390a15b505050565b6000818152600160205260408120805490916fffffffffffffffffffffffffffffffff90911690036110a4576040517fd5b25b6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8054427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff161115611109576040517fbf009dab00000000000000000000000000000000000000000000000000000000815260048101839052602401610c1d565b33600090815260036020908152604080832085845290915290205460ff161561115e576040517f646cf55800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000908152600260209081526040808320858452909152812054908190036111b3576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000908152600360209081526040808320868452825280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055600a90915281209061120782612df1565b915050600061122c85600201548660010154600087612eae909392919063ffffffff16565b3360009081526004602090815260408083208a8452825280832084905573ffffffffffffffffffffffffffffffffffffffff86168352600b90915281208054929350839290919061127e908490613e78565b909155506112a5905073ffffffffffffffffffffffffffffffffffffffff83163383612ef5565b604080518781526020810186905290810182905233907f45c072aa05b9853b5a993de7a28bc332ee01404a628cec1a23ce0f659f842ef19060600160405180910390a2505050505050565b600080548082526001602052604090912061130a81612da1565b611340576040517f65ca8f5400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8260000361137a576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152600a602052604081209061139282612df1565b5060028301546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482018190529293506000918416906370a0823190602401602060405180830381865afa15801561140c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114309190613e9e565b905061145473ffffffffffffffffffffffffffffffffffffffff841633848a612f76565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152600091908516906370a0823190602401602060405180830381865afa1580156114c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e89190613e9e565b90506114f48282613e8b565b881461152c576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526002602090815260408083208a8452909152812080548a9290611556908490613e78565b92505081905550878660010160008282546115719190613e78565b909155505060408051888152602081018a905233917f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a15910160405180910390a25050505050505050565b60075473ffffffffffffffffffffffffffffffffffffffff16331461160c576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116611659576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527ffe46d4bbb89eab62693e8325c2c0b567b017d956f54941fb99110a372a152e37906020015b60405180910390a150565b60075473ffffffffffffffffffffffffffffffffffffffff163314611724576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054801561177d57600081815260016020526040902061174481612da1565b1561177b576040517f260e629b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b62093a8061178e6020840184613db4565b63ffffffff1610806117b4575062278d006117ac6020840184613db4565b63ffffffff16115b806117d657506276a7006117ce6040840160208501613db4565b63ffffffff16115b1561180d576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61181d6040830160208401613db4565b63ffffffff161580611852575061183a6080830160608401613ce0565b73ffffffffffffffffffffffffffffffffffffffff16155b15611889576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061189b60e0840160c08501613ce0565b73ffffffffffffffffffffffffffffffffffffffff16036118e8576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118f3600182613e78565b6000818152600a6020526040902090915082906119108282613ede565b9050507fde766fad167141a0e1213696eeff0a28605b0c2a2228ac153d27ec3cd91121d681836040516119449291906140fe565b60405180910390a15050565b600080548152600a60209081526040808320815160e081018352815463ffffffff80821683526401000000008204811695830195909552680100000000000000008104909416928101929092526c0100000000000000000000000090920473ffffffffffffffffffffffffffffffffffffffff90811660608301526001830154808216608084015274010000000000000000000000000000000000000000900460ff16151560a083018190526002909301541660c082015290611a33577f0000000000000000000000000000000000000000000000000000000000000000611a55565b7f00000000000000000000000000000000000000000000000000000000000000005b91505090565b6000805490600a81611a6e846001613e78565b815260208101919091526040016000908120805490925063ffffffff169003611ac3576040517ffcd189b500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600181015473ffffffffffffffffffffffffffffffffffffffff1615801590611b065750600181015473ffffffffffffffffffffffffffffffffffffffff163314155b15611b3d576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8115611c1f576000828152600160208181526040808420815160808101835281546fffffffffffffffffffffffffffffffff80821683527001000000000000000000000000000000009091041681850190815294820154818401526002909101546060820152868552600a90925290922054905164010000000090910463ffffffff16904290611bce9083906141e8565b6fffffffffffffffffffffffffffffffff161115611c18576040517ffcd189b500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050611c93565b80544290611c5b90640100000000900463ffffffff167f0000000000000000000000000000000000000000000000000000000000000000613e78565b1115611c93576040517ffcd189b500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611c9e82612df1565b73ffffffffffffffffffffffffffffffffffffffff81166000818152600c60205260408082205490517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529395509350916370a0823190602401602060405180830381865afa158015611d1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d409190613e9e565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600b602052604081205491925090611d749084613e8b565b611d7e9083613e8b565b85549091506c01000000000000000000000000900473ffffffffffffffffffffffffffffffffffffffff16600003611de2576040517f9f16f00800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84546c01000000000000000000000000900473ffffffffffffffffffffffffffffffffffffffff16811015611e43576040517f2b049be300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054611e51906001613e78565b6000818155818152600160205260408120875492985091611e849068010000000000000000900463ffffffff16426141e8565b82547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff82161783558754909150600090611ed69063ffffffff16836141e8565b83546fffffffffffffffffffffffffffffffff828116700100000000000000000000000000000000029116178455600284018590559050611f178487613e78565b73ffffffffffffffffffffffffffffffffffffffff88166000908152600c60209081526040918290209290925580518b81526fffffffffffffffffffffffffffffffff80861693820193909352918316908201526060810185905233907f2f0e07e2baf6351377b2a46b5ccf5cd22b494921f870da223157659e174918f99060800160405180910390a2505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260036020908152604080832084845290915281205460ff1615611fed575060006120b3565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260026020908152604080832085845290915290205480158061202c575060005483115b1561203b5760009150506120b3565b6000838152600160208181526040808420815160808101835281546fffffffffffffffffffffffffffffffff80821683527001000000000000000000000000000000009091041693810193909352928301549082018190526002909201546060820181905290926120ae92859291612eae565b925050505b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff16331461210a576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216612157576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600003612191576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561223957507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156122c6578273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f879f92dded0f26b83c3e00b12e0395dc72cfc3077343d1854ed6988edd1f90968360405161229d91815260200190565b60405180910390a361104173ffffffffffffffffffffffffffffffffffffffff84168383612ef5565b600080548082526001602052604090912081156123bd5780546fffffffffffffffffffffffffffffffff1660000361232a576040517f260e629b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8054427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff1611151580156123865750600a600061236d846001613e78565b815260208101919091526040016000205463ffffffff16155b156123bd576040517f97ea364c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8716906370a0823190602401602060405180830381865afa15801561242a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061244e9190613e9e565b73ffffffffffffffffffffffffffffffffffffffff87166000908152600b6020908152604080832054600c909252822054929350909161248e9190613e8b565b6124989083613e8b565b9050808511156124d4576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6124f573ffffffffffffffffffffffffffffffffffffffff88168787612ef5565b8673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f879f92dded0f26b83c3e00b12e0395dc72cfc3077343d1854ed6988edd1f90968760405161255491815260200190565b60405180910390a350505050505050565b61256d612fbc565b6000828152600d602052604090205460ff16156125b6576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152600160205260408120805490916fffffffffffffffffffffffffffffffff9091169003612614576040517fd5b25b6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8054427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff161115612676576040517fb37f700600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000341180156126ab57507f000000000000000000000000000000000000000000000000000000000000000063ffffffff1646145b156126e2576040517fba792cb900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838152600a60205260408120906126fa82612df1565b5090507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612782576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600183015460008190036127c2576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051878152602081018390527f7100c4f922b370c0ad3218efd254665bfc8609664973b40534b2c4ea6ca28708910160405180910390a16000868152600d6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055600283015461285990829073ffffffffffffffffffffffffffffffffffffffff1687612fff565b505050506128676001600655565b5050565b60075473ffffffffffffffffffffffffffffffffffffffff1633146128bc576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116612909576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f99d737e0adf2c449d71890b86772885ec7959b152ddb265f76325b6e68e105d390600090a250565b60085473ffffffffffffffffffffffffffffffffffffffff1633148015906129b8575060075473ffffffffffffffffffffffffffffffffffffffff163314155b156129ef576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8063ffffffff16600003612a2f576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600880547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000063ffffffff8416908102919091179091556040519081527fb12b811ee01ea66d1cd1a2f8ee470517b143478dafa635fd782430c34251d9f0906020016116c8565b60075473ffffffffffffffffffffffffffffffffffffffff163314612afd576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116612b4a576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054821115612b86576040517fd5b25b6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526005602052604090205460ff1615612bcf576040517f3e49310000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602052604090208054427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff161115612c3f576040517fb37f700600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600181015415612c7b576040517f398d4d3200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838152600a6020526040812090612c9382612df1565b600087815260056020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055600288015473ffffffffffffffffffffffffffffffffffffffff85168452600c909252822080549395509093508392909190612d0a908490613e8b565b925050819055508173ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f879f92dded0f26b83c3e00b12e0395dc72cfc3077343d1854ed6988edd1f909683604051612d7091815260200190565b60405180910390a3612d9973ffffffffffffffffffffffffffffffffffffffff83168683612ef5565b505050505050565b8054600090426fffffffffffffffffffffffffffffffff909116118015906120b35750505470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16421090565b6001810154600090819074010000000000000000000000000000000000000000900460ff16612e61577f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000612ea4565b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000005b9094909350915050565b6000612ebb858585613586565b9050818015612eda575060008380612ed557612ed5614210565b858709115b15612eed57612eea600182613e78565b90505b949350505050565b60405173ffffffffffffffffffffffffffffffffffffffff83811660248301526044820183905261104191859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050613697565b60405173ffffffffffffffffffffffffffffffffffffffff8481166024830152838116604483015260648201839052610cc39186918216906323b872dd90608401612f2f565b600260065403612ff8576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600655565b61304173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016833086612f76565b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff164603613113576040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018490527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906342966c6890602401600060405180830381600087803b1580156130f657600080fd5b505af115801561310a573d6000803e3d6000fd5b50505050505050565b6008546000906131849074010000000000000000000000000000000000000000900463ffffffff168261317d604080517e03000000000000000000000000000000000000000000000000000000000000602082015281516002818303018152602290910190915290565b919061372d565b6040805160e08101825263ffffffff7f00000000000000000000000000000000000000000000000000000000000000001681526000602080830182905282840189905260608301829052608083018590528351808201855282815260a08401528351908101845281815260c083015291517f3b6f743b000000000000000000000000000000000000000000000000000000008152929350917f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690633b6f743b9061326a90859085906004016142b5565b6040805180830381865afa158015613286573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132aa919061434f565b90508380156132b95750805147105b156133035780516040517fdb42144d000000000000000000000000000000000000000000000000000000008152600060048201526024810191909152476044820152606401610c1d565b831580156133115750805134105b1561335b5780516040517fdb42144d000000000000000000000000000000000000000000000000000000008152600060048201526024810191909152346044820152606401610c1d565b83156134235780516040517fc7c7f5b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169163c7c7f5b3916133d99086908690309060040161436b565b60c06040518083038185885af11580156133f7573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061341c91906143b5565b5050612d99565b80516040517fc7c7f5b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169163c7c7f5b39161349b9086908690339060040161436b565b60c06040518083038185885af11580156134b9573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906134de91906143b5565b505080516000906134ef9034613e8b565b9050801561310a57604051600090339083908381818185875af1925050503d8060008114613539576040519150601f19603f3d011682016040523d82523d6000602084013e61353e565b606091505b505090508061357c576040517f51fe4a3400000000000000000000000000000000000000000000000000000000815260048101839052602401610c1d565b5050505050505050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff858709858702925082811083820303915050806000036135de578382816135d4576135d4614210565b0492505050613690565b838110613628576040517f63a05778000000000000000000000000000000000000000000000000000000008152600481018790526024810186905260448101859052606401610c1d565b600084868809851960019081018716968790049682860381900495909211909303600082900391909104909201919091029190911760038402600290811880860282030280860282030280860282030280860282030280860282030280860290910302029150505b9392505050565b60006136b973ffffffffffffffffffffffffffffffffffffffff8416836137b0565b905080516000141580156136de5750808060200190518101906136dc9190614473565b155b15611041576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610c1d565b606083600361373d8260006137be565b61ffff161461378a576137518160006137be565b6040517f3a51740d00000000000000000000000000000000000000000000000000000000815261ffff9091166004820152602401610c1d565b6000613796858561383e565b90506137a4866001836138f0565b9250505b509392505050565b60606136908383600061395b565b60006137cb826002613e78565b83511015613835576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f746f55696e7431365f6f75744f66426f756e64730000000000000000000000006044820152606401610c1d565b50016002015190565b60606fffffffffffffffffffffffffffffffff8216156138a757604080517fffffffffffffffffffffffffffffffff00000000000000000000000000000000608086811b8216602084015285901b16603082015201604051602081830303815290604052613690565b6040517fffffffffffffffffffffffffffffffff00000000000000000000000000000000608085901b166020820152603001604051602081830303815290604052905092915050565b60608360036139008260006137be565b61ffff1614613914576137518160006137be565b8460016139218551613a14565b61392c906001614490565b86866040516020016139429594939291906144aa565b6040516020818303038152906040529150509392505050565b606081471015613999576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610c1d565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516139c29190614561565b60006040518083038185875af1925050503d80600081146139ff576040519150601f19603f3d011682016040523d82523d6000602084013e613a04565b606091505b50915091506137a4868383613a60565b600061ffff821115613a5c576040517f6dfcc6500000000000000000000000000000000000000000000000000000000081526010600482015260248101839052604401610c1d565b5090565b606082613a7557613a7082613aef565b613690565b8151158015613a99575073ffffffffffffffffffffffffffffffffffffffff84163b155b15613ae8576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610c1d565b5080613690565b805115613aff5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b600060208284031215613b4657600080fd5b5035919050565b60005b83811015613b68578181015183820152602001613b50565b50506000910152565b60008151808452613b89816020860160208601613b4d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006136906020830184613b71565b73ffffffffffffffffffffffffffffffffffffffff81168114613b3157600080fd5b60008060408385031215613c0357600080fd5b8235613c0e81613bce565b946020939093013593505050565b600060e08201905063ffffffff835116825263ffffffff602084015116602083015263ffffffff604084015116604083015273ffffffffffffffffffffffffffffffffffffffff606084015116606083015273ffffffffffffffffffffffffffffffffffffffff608084015116608083015260a0830151613ca160a084018215159052565b5060c0830151613cc960c084018273ffffffffffffffffffffffffffffffffffffffff169052565b5092915050565b8035613cdb81613bce565b919050565b600060208284031215613cf257600080fd5b813561369081613bce565b600060e0828403128015613d1057600080fd5b509092915050565b600080600060608486031215613d2d57600080fd5b8335613d3881613bce565b92506020840135613d4881613bce565b929592945050506040919091013590565b8015158114613b3157600080fd5b8035613cdb81613d59565b60008060408385031215613d8557600080fd5b823591506020830135613d9781613d59565b809150509250929050565b63ffffffff81168114613b3157600080fd5b600060208284031215613dc657600080fd5b813561369081613da2565b60008060408385031215613de457600080fd5b823591506020830135613d9781613bce565b600181811c90821680613e0a57607f821691505b602082108103613e43577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156120b3576120b3613e49565b818103818111156120b3576120b3613e49565b600060208284031215613eb057600080fd5b5051919050565b600081356120b381613da2565b600081356120b381613bce565b600081356120b381613d59565b8135613ee981613da2565b63ffffffff811690508154817fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000082161783556020840135613f2981613da2565b67ffffffff000000008160201b16837fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000841617178455505050613fae613f7160408401613eb7565b82547fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff1660409190911b6bffffffff000000000000000016178255565b613ffa613fbd60608401613ec4565b82546bffffffffffffffffffffffff1660609190911b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016178255565b6001810161404f61400d60808501613ec4565b82547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff91909116178255565b6140a861405e60a08501613ed1565b8280547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1691151560a01b74ff000000000000000000000000000000000000000016919091179055565b506128676140b860c08401613ec4565b6002830173ffffffffffffffffffffffffffffffffffffffff82167fffffffffffffffffffffffff00000000000000000000000000000000000000008254161781555050565b8281526101008101823561411181613da2565b63ffffffff8116602084015250602083013561412c81613da2565b63ffffffff8116604084015250604083013561414781613da2565b63ffffffff811660608401525061416060608401613cd0565b73ffffffffffffffffffffffffffffffffffffffff811660808401525061418960808401613cd0565b73ffffffffffffffffffffffffffffffffffffffff811660a0840152506141b260a08401613d67565b80151560c0840152506141c760c08401613cd0565b73ffffffffffffffffffffffffffffffffffffffff811660e08401526137a8565b6fffffffffffffffffffffffffffffffff81811683821601908111156120b3576120b3613e49565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b63ffffffff81511682526020810151602083015260408101516040830152606081015160608301526000608082015160e0608085015261428260e0850182613b71565b905060a083015184820360a086015261429b8282613b71565b91505060c083015184820360c08601526120ae8282613b71565b6040815260006142c8604083018561423f565b905082151560208301529392505050565b6000604082840312156142eb57600080fd5b6040805190810167ffffffffffffffff81118282101715614335577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604052825181526020928301519281019290925250919050565b60006040828403121561436157600080fd5b61369083836142d9565b60808152600061437e608083018661423f565b9050835160208301526020840151604083015273ffffffffffffffffffffffffffffffffffffffff83166060830152949350505050565b60008082840360c08112156143c957600080fd5b60808112156143d757600080fd5b506040516060810167ffffffffffffffff81118282101715614422577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405283518152602084015167ffffffffffffffff8116811461444457600080fd5b602082015261445685604086016142d9565b6040820152915061446a84608085016142d9565b90509250929050565b60006020828403121561448557600080fd5b815161369081613d59565b61ffff81811683821601908111156120b3576120b3613e49565b600086516144bc818460208b01613b4d565b80830190507fff000000000000000000000000000000000000000000000000000000000000008760f81b1681527fffff0000000000000000000000000000000000000000000000000000000000008660f01b1660018201527fff000000000000000000000000000000000000000000000000000000000000008560f81b1660038201528351614552816004840160208801613b4d565b01600401979650505050505050565b60008251614573818460208701613b4d565b919091019291505056fea2646970667358221220b6d77a257f3180c35565b75ca84601a62f8a7d27457944b6135dcb4341b816d964736f6c634300081c0033a26469706673582212201ec58c6c32b373a34abd47af372644cd3569dbc9f4754a01ede8b0a1cb825de664736f6c634300081c0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061011b5760003560e01c80638bb93e5d116100b2578063bfccf0ec11610081578063d9a349c111610066578063d9a349c1146102bd578063daeccc79146102d0578063e110dfda146102fe57600080fd5b8063bfccf0ec1461028a578063c34c08e51461029d57600080fd5b80638bb93e5d1461020d5780638ed46a0d146102435780639002540814610264578063b42138c21461027757600080fd5b806338a63183116100ee57806338a6318314610172578063406194c5146101b7578063570ca735146101de5780638112c4af1461020557600080fd5b8063032ef9011461012057806307f184f1146101355780631810fe7f146101485780631f2114051461016a575b600080fd5b61013361012e366004610fc8565b610325565b005b61013361014336600461100e565b6103d4565b6003546101559060ff1681565b60405190151581526020015b60405180910390f35b61013361050c565b6000546101929073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610161565b6101927f000000000000000000000000000000000000000000000000000000000000000081565b6101927f000000000000000000000000000000000000000000000000000000000000000081565b61013361062b565b61019261021b366004611029565b60056020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b61025661025136600461100e565b61076b565b604051908152602001610161565b6101926102723660046110c0565b61077c565b61019261028536600461100e565b610a35565b610133610298366004611189565b610a6d565b6001546101929073ffffffffffffffffffffffffffffffffffffffff1681565b6101336102cb36600461100e565b610c6c565b6101556102de366004611241565b600260209081526000928352604080842090915290825290205460ff1681565b6101927f000000000000000000000000000000000000000000000000000000000000000081565b60005473ffffffffffffffffffffffffffffffffffffffff163314610376576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604051811515907f18f4a9a726c72020fd959c636d2fd464c6cefe90afeaea3c830b971614cf70b690600090a2600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610425576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610472576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60035460405173ffffffffffffffffffffffffffffffffffffffff808416926101009004169033907f374d23b359cab0f8963c5c1715a6de7974f53af00aecc27de50d93906b70943e90600090a46003805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b60045473ffffffffffffffffffffffffffffffffffffffff16331461055d576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005473ffffffffffffffffffffffffffffffffffffffff1633036105ae576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600154604051339173ffffffffffffffffffffffffffffffffffffffff16907fe963dc9c0d2165b080440a5d2665566142f2426b1ea15f3da8390b0fd336b06490600090a3600180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163317909155600480549091169055565b600354610100900473ffffffffffffffffffffffffffffffffffffffff163314610681576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015473ffffffffffffffffffffffffffffffffffffffff1633036106d2576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054604051339273ffffffffffffffffffffffffffffffffffffffff909216917ff07131157ebea15896dc89264eb9a7572e67cc9fad6b855015730fcec10704e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001633179055600380547fffffffffffffffffffffff0000000000000000000000000000000000000000ff169055565b600061077682610db1565b92915050565b60006107ac336000357fffffffff0000000000000000000000000000000000000000000000000000000016610ee8565b6107e2576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831661082f576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036108b4576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60007f0000000000000000000000000000000000000000000000000000000000000000847f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008860405161096990610fab565b6109799796959493929190611274565b604051809103906000f080158015610995573d6000803e3d6000fd5b50905060006109a385610db1565b60008181526005602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87169081179091558251848152918201529192507f832e001c1b031a46bae65558b4362398dec9d31b642c5b1420b13fa0c0651343910160405180910390a1509392505050565b600080610a4183610db1565b60009081526005602052604090205473ffffffffffffffffffffffffffffffffffffffff169392505050565b610a9b336000357fffffffff0000000000000000000000000000000000000000000000000000000016610ee8565b610ad1576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316610b1e576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805180820190915260008082526020820152819060005b82811015610c6457848482818110610b5157610b51611371565b905060400201803603810190610b6791906113a0565b91508160200151151582600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168773ffffffffffffffffffffffffffffffffffffffff167ff5736e75de2c751f775d4c5ed517289f77074f8c337f451ba4c0c3ed1dd7f9ad60405160405180910390a460208281015173ffffffffffffffffffffffffffffffffffffffff8816600090815260028352604080822086517fffffffff000000000000000000000000000000000000000000000000000000001683529093529190912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101610b37565b505050505050565b610c9a336000357fffffffff0000000000000000000000000000000000000000000000000000000016610ee8565b610cd0576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610d1d576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60045460015460405173ffffffffffffffffffffffffffffffffffffffff8085169381169216907f4857570a90fe0a0fc580e89a287e77576141ac8e2e8b3710cd26db44f44156c190600090a4600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60008173ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff161015610e82576040517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000606090811b8216602084015284901b1660348201526048015b604051602081830303815290604052805190602001209050919050565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b821660208401527f0000000000000000000000000000000000000000000000000000000000000000901b166034820152604801610e65565b919050565b60035460009060ff1615610f1a575060005473ffffffffffffffffffffffffffffffffffffffff838116911614610776565b60015473ffffffffffffffffffffffffffffffffffffffff84811691161480610f95575073ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290205460ff165b15610fa257506001610776565b50600092915050565b6149d1806113fe83390190565b80358015158114610ee357600080fd5b600060208284031215610fda57600080fd5b610fe382610fb8565b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610ee357600080fd5b60006020828403121561102057600080fd5b610fe382610fea565b60006020828403121561103b57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156110b8576110b8611042565b604052919050565b600080604083850312156110d357600080fd5b6110dc83610fea565b9150602083013567ffffffffffffffff8111156110f857600080fd5b8301601f8101851361110957600080fd5b803567ffffffffffffffff81111561112357611123611042565b61115460207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611071565b81815286602083850101111561116957600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008060006040848603121561119e57600080fd5b6111a784610fea565b9250602084013567ffffffffffffffff8111156111c357600080fd5b8401601f810186136111d457600080fd5b803567ffffffffffffffff8111156111eb57600080fd5b8660208260061b840101111561120057600080fd5b939660209190910195509293505050565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114610ee357600080fd5b6000806040838503121561125457600080fd5b61125d83610fea565b915061126b60208401611211565b90509250929050565b73ffffffffffffffffffffffffffffffffffffffff8816815273ffffffffffffffffffffffffffffffffffffffff8716602082015273ffffffffffffffffffffffffffffffffffffffff8616604082015273ffffffffffffffffffffffffffffffffffffffff8516606082015263ffffffff8416608082015263ffffffff831660a082015260e060c0820152600082518060e084015260005b8181101561132b57602081860181015161010086840101520161130d565b50600061010082850101526101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505098975050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060408284031280156113b357600080fd5b506040805190810167ffffffffffffffff811182821017156113d7576113d7611042565b6040526113e383611211565b81526113f160208401610fb8565b6020820152939250505056fe61012060405234801561001157600080fd5b506040516149d13803806149d1833981016040819052610030916100f9565b60016006556001600160a01b03868116608052600780546001600160a01b03199081168884161790915560088054909116868316179055871660a05263ffffffff83811660c052821660e052600961008882826102b3565b5050426101005250506008805463ffffffff60a01b191662014f8160a01b1790555061037192505050565b80516001600160a01b03811681146100ca57600080fd5b919050565b805163ffffffff811681146100ca57600080fd5b634e487b7160e01b600052604160045260246000fd5b600080600080600080600060e0888a03121561011457600080fd5b61011d886100b3565b965061012b602089016100b3565b9550610139604089016100b3565b9450610147606089016100b3565b9350610155608089016100cf565b925061016360a089016100cf565b60c08901519092506001600160401b0381111561017f57600080fd5b8801601f81018a1361019057600080fd5b80516001600160401b038111156101a9576101a96100e3565b604051601f8201601f19908116603f011681016001600160401b03811182821017156101d7576101d76100e3565b6040528181528282016020018c10156101ef57600080fd5b60005b8281101561020e576020818501810151838301820152016101f2565b5060006020838301015280935050505092959891949750929550565b600181811c9082168061023e57607f821691505b60208210810361025e57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156102ae57806000526020600020601f840160051c8101602085101561028b5750805b601f840160051c820191505b818110156102ab5760008155600101610297565b50505b505050565b81516001600160401b038111156102cc576102cc6100e3565b6102e0816102da845461022a565b84610264565b6020601f82116001811461031457600083156102fc5750848201515b600019600385901b1c1916600184901b1784556102ab565b600084815260208120601f198516915b828110156103445787850151825560209485019460019092019101610324565b50848210156103625786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b60805160a05160c05160e051610100516145b361041e6000396000611c370152600081816126830152613043015260006131950152600081816109a701528181611a35015281816121ea015281816126ff01528181612e1c01528181612e84015281816130190152818161309d0152818161321e015281816133a001526134620152600081816102bd01528181611a0f0152818161219301528181612e3d0152612e6301526145b36000f3fe6080604052600436106102385760003560e01c8063570ca73511610138578063b3ab15fb116100b0578063ce86cdfd1161007f578063e30e4e8a11610064578063e30e4e8a146109c9578063eee44acb146109e9578063f3ed8f2514610a1957600080fd5b8063ce86cdfd14610890578063e110dfda1461099557600080fd5b8063b3ab15fb14610804578063b6fc8fac14610824578063b791513a1461083b578063cd366b9c1461087057600080fd5b80637667180811610107578063a7229fd9116100ec578063a7229fd9146107ba578063ac8477ab146107da578063b0c36601146107f157600080fd5b80637667180814610785578063a300fbbb1461079a57600080fd5b8063570ca7351461070e578063607de07a1461073b57806367ae97e61461075b5780636b64c7691461077057600080fd5b80632cf702f8116101cb578063466c01b81161019a5780634dd6c8de1161017f5780634dd6c8de1461066f5780634e62917b146106aa57806355b4b1a4146106d657600080fd5b8063466c01b8146106175780634c92c5cd1461064f57600080fd5b80632cf702f814610595578063379607f5146105aa578063406194c5146105ca578063454a2ab3146105f757600080fd5b80631b9a91a4116102075780631b9a91a41461040657806322f3e2d41461042857806327cc4c431461043d5780632ac873f91461047c57600080fd5b80630627099b1461024457806306fdde03146102895780630ab54b36146102ab578063135022c21461030457600080fd5b3661023f57005b600080fd5b34801561025057600080fd5b5061027461025f366004613b34565b600d6020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561029557600080fd5b5061029e610a49565b6040516102809190613bbb565b3480156102b757600080fd5b506102df7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610280565b34801561031057600080fd5b506103aa61031f366004613b34565b60408051608081018252600080825260208201819052918101829052606081019190915250600090815260016020818152604092839020835160808101855281546fffffffffffffffffffffffffffffffff80821683527001000000000000000000000000000000009091041692810192909252918201549281019290925260020154606082015290565b604051610280919060006080820190506fffffffffffffffffffffffffffffffff83511682526fffffffffffffffffffffffffffffffff6020840151166020830152604083015160408301526060830151606083015292915050565b34801561041257600080fd5b50610426610421366004613bf0565b610ad7565b005b34801561043457600080fd5b50610274610cc9565b34801561044957600080fd5b5061046e610458366004613b34565b6000908152600160208190526040909120015490565b604051908152602001610280565b34801561048857600080fd5b50610588610497366004613b34565b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810191909152506000908152600a6020908152604091829020825160e081018452815463ffffffff808216835264010000000082048116948301949094526801000000000000000081049093169381019390935273ffffffffffffffffffffffffffffffffffffffff6c01000000000000000000000000909204821660608401526001810154808316608085015260ff7401000000000000000000000000000000000000000090910416151560a0840152600201541660c082015290565b6040516102809190613c1c565b3480156105a157600080fd5b50610426610ce6565b3480156105b657600080fd5b506104266105c5366004613b34565b611046565b3480156105d657600080fd5b506007546102df9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561060357600080fd5b50610426610612366004613b34565b6112f0565b34801561062357600080fd5b5061046e610632366004613bf0565b600260209081526000928352604080842090915290825290205481565b34801561065b57600080fd5b5061042661066a366004613ce0565b6115bb565b34801561067b57600080fd5b5061027461068a366004613bf0565b600360209081526000928352604080842090915290825290205460ff1681565b3480156106b657600080fd5b506106c162278d0081565b60405163ffffffff9091168152602001610280565b3480156106e257600080fd5b5061046e6106f1366004613bf0565b600460209081526000928352604080842090915290825290205481565b34801561071a57600080fd5b506008546102df9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561074757600080fd5b50610426610756366004613cfd565b6116d3565b34801561076757600080fd5b506102df611950565b34801561077c57600080fd5b50610426611a5b565b34801561079157600080fd5b5060005461046e565b3480156107a657600080fd5b5061046e6107b5366004613bf0565b611fac565b3480156107c657600080fd5b506104266107d5366004613d18565b6120b9565b3480156107e657600080fd5b506106c16276a70081565b6104266107ff366004613d72565b612565565b34801561081057600080fd5b5061042661081f366004613ce0565b61286b565b34801561083057600080fd5b506106c162093a8081565b34801561084757600080fd5b506008546106c19074010000000000000000000000000000000000000000900463ffffffff1681565b34801561087c57600080fd5b5061042661088b366004613db4565b612978565b34801561089c57600080fd5b506109386108ab366004613b34565b600a6020526000908152604090208054600182015460029092015463ffffffff8083169364010000000084048216936801000000000000000081049092169273ffffffffffffffffffffffffffffffffffffffff6c010000000000000000000000009093048316928281169260ff7401000000000000000000000000000000000000000090910416911687565b6040805163ffffffff98891681529688166020880152949096169385019390935273ffffffffffffffffffffffffffffffffffffffff91821660608501528116608084015290151560a083015290911660c082015260e001610280565b3480156109a157600080fd5b506102df7f000000000000000000000000000000000000000000000000000000000000000081565b3480156109d557600080fd5b506104266109e4366004613dd1565b612aac565b3480156109f557600080fd5b5061046e610a04366004613b34565b60009081526001602052604090206002015490565b348015610a2557600080fd5b50610274610a34366004613b34565b60056020526000908152604090205460ff1681565b60098054610a5690613df6565b80601f0160208091040260200160405190810160405280929190818152602001828054610a8290613df6565b8015610acf5780601f10610aa457610100808354040283529160200191610acf565b820191906000526020600020905b815481529060010190602001808311610ab257829003601f168201915b505050505081565b60085473ffffffffffffffffffffffffffffffffffffffff163314801590610b17575060075473ffffffffffffffffffffffffffffffffffffffff163314155b15610b4e576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610b9b576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600003610bd5576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b4781811015610c26576040517fdb42144d0000000000000000000000000000000000000000000000000000000081526000600482015260248101839052604481018290526064015b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff168360405160006040518083038185875af1925050503d8060008114610c80576040519150601f19603f3d011682016040523d82523d6000602084013e610c85565b606091505b5050905080610cc3576040517f51fe4a3400000000000000000000000000000000000000000000000000000000815260048101849052602401610c1d565b50505050565b600080548152600160205260408120610ce190612da1565b905090565b60075473ffffffffffffffffffffffffffffffffffffffff163314610d37576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080548082526001602052604082208054919290916fffffffffffffffffffffffffffffffff169003610d97576040517f260e629b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610da081612da1565b15610dd7576040517f260e629b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080600a81610de8866001613e78565b815260208101919091526040016000205463ffffffff1611905080610f90578154427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff1611610e68576040517fa0e9298400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838152600a6020526040812090610e8082612df1565b600286015473ffffffffffffffffffffffffffffffffffffffff82166000908152600c6020526040812080549395509193509091610ebf908490613e8b565b90915550506000858152600a60209081526040808320838155600180820180547fffffffffffffffffffffff000000000000000000000000000000000000000000169055600291820180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055928390529083208381558083018490550191909155610f4d9086613e8b565b60005560408051868152602081018790527f5ef593cff3080a71aa942dc8e20fb32a38198f7cbc7095fa55324ededdcd98d6910160405180910390a15050505050565b610f9b600184613e78565b6000818152600a60205260408082208281556001810180547fffffffffffffffffffffff00000000000000000000000000000000000000000016905560020180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055519194507f5ef593cff3080a71aa942dc8e20fb32a38198f7cbc7095fa55324ededdcd98d69161103891868252602082015260400190565b60405180910390a15b505050565b6000818152600160205260408120805490916fffffffffffffffffffffffffffffffff90911690036110a4576040517fd5b25b6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8054427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff161115611109576040517fbf009dab00000000000000000000000000000000000000000000000000000000815260048101839052602401610c1d565b33600090815260036020908152604080832085845290915290205460ff161561115e576040517f646cf55800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000908152600260209081526040808320858452909152812054908190036111b3576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000908152600360209081526040808320868452825280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055600a90915281209061120782612df1565b915050600061122c85600201548660010154600087612eae909392919063ffffffff16565b3360009081526004602090815260408083208a8452825280832084905573ffffffffffffffffffffffffffffffffffffffff86168352600b90915281208054929350839290919061127e908490613e78565b909155506112a5905073ffffffffffffffffffffffffffffffffffffffff83163383612ef5565b604080518781526020810186905290810182905233907f45c072aa05b9853b5a993de7a28bc332ee01404a628cec1a23ce0f659f842ef19060600160405180910390a2505050505050565b600080548082526001602052604090912061130a81612da1565b611340576040517f65ca8f5400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8260000361137a576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152600a602052604081209061139282612df1565b5060028301546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482018190529293506000918416906370a0823190602401602060405180830381865afa15801561140c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114309190613e9e565b905061145473ffffffffffffffffffffffffffffffffffffffff841633848a612f76565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152600091908516906370a0823190602401602060405180830381865afa1580156114c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e89190613e9e565b90506114f48282613e8b565b881461152c576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526002602090815260408083208a8452909152812080548a9290611556908490613e78565b92505081905550878660010160008282546115719190613e78565b909155505060408051888152602081018a905233917f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a15910160405180910390a25050505050505050565b60075473ffffffffffffffffffffffffffffffffffffffff16331461160c576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116611659576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527ffe46d4bbb89eab62693e8325c2c0b567b017d956f54941fb99110a372a152e37906020015b60405180910390a150565b60075473ffffffffffffffffffffffffffffffffffffffff163314611724576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054801561177d57600081815260016020526040902061174481612da1565b1561177b576040517f260e629b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b62093a8061178e6020840184613db4565b63ffffffff1610806117b4575062278d006117ac6020840184613db4565b63ffffffff16115b806117d657506276a7006117ce6040840160208501613db4565b63ffffffff16115b1561180d576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61181d6040830160208401613db4565b63ffffffff161580611852575061183a6080830160608401613ce0565b73ffffffffffffffffffffffffffffffffffffffff16155b15611889576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061189b60e0840160c08501613ce0565b73ffffffffffffffffffffffffffffffffffffffff16036118e8576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118f3600182613e78565b6000818152600a6020526040902090915082906119108282613ede565b9050507fde766fad167141a0e1213696eeff0a28605b0c2a2228ac153d27ec3cd91121d681836040516119449291906140fe565b60405180910390a15050565b600080548152600a60209081526040808320815160e081018352815463ffffffff80821683526401000000008204811695830195909552680100000000000000008104909416928101929092526c0100000000000000000000000090920473ffffffffffffffffffffffffffffffffffffffff90811660608301526001830154808216608084015274010000000000000000000000000000000000000000900460ff16151560a083018190526002909301541660c082015290611a33577f0000000000000000000000000000000000000000000000000000000000000000611a55565b7f00000000000000000000000000000000000000000000000000000000000000005b91505090565b6000805490600a81611a6e846001613e78565b815260208101919091526040016000908120805490925063ffffffff169003611ac3576040517ffcd189b500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600181015473ffffffffffffffffffffffffffffffffffffffff1615801590611b065750600181015473ffffffffffffffffffffffffffffffffffffffff163314155b15611b3d576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8115611c1f576000828152600160208181526040808420815160808101835281546fffffffffffffffffffffffffffffffff80821683527001000000000000000000000000000000009091041681850190815294820154818401526002909101546060820152868552600a90925290922054905164010000000090910463ffffffff16904290611bce9083906141e8565b6fffffffffffffffffffffffffffffffff161115611c18576040517ffcd189b500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050611c93565b80544290611c5b90640100000000900463ffffffff167f0000000000000000000000000000000000000000000000000000000000000000613e78565b1115611c93576040517ffcd189b500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611c9e82612df1565b73ffffffffffffffffffffffffffffffffffffffff81166000818152600c60205260408082205490517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529395509350916370a0823190602401602060405180830381865afa158015611d1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d409190613e9e565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600b602052604081205491925090611d749084613e8b565b611d7e9083613e8b565b85549091506c01000000000000000000000000900473ffffffffffffffffffffffffffffffffffffffff16600003611de2576040517f9f16f00800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84546c01000000000000000000000000900473ffffffffffffffffffffffffffffffffffffffff16811015611e43576040517f2b049be300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054611e51906001613e78565b6000818155818152600160205260408120875492985091611e849068010000000000000000900463ffffffff16426141e8565b82547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff82161783558754909150600090611ed69063ffffffff16836141e8565b83546fffffffffffffffffffffffffffffffff828116700100000000000000000000000000000000029116178455600284018590559050611f178487613e78565b73ffffffffffffffffffffffffffffffffffffffff88166000908152600c60209081526040918290209290925580518b81526fffffffffffffffffffffffffffffffff80861693820193909352918316908201526060810185905233907f2f0e07e2baf6351377b2a46b5ccf5cd22b494921f870da223157659e174918f99060800160405180910390a2505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260036020908152604080832084845290915281205460ff1615611fed575060006120b3565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260026020908152604080832085845290915290205480158061202c575060005483115b1561203b5760009150506120b3565b6000838152600160208181526040808420815160808101835281546fffffffffffffffffffffffffffffffff80821683527001000000000000000000000000000000009091041693810193909352928301549082018190526002909201546060820181905290926120ae92859291612eae565b925050505b92915050565b60075473ffffffffffffffffffffffffffffffffffffffff16331461210a576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216612157576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600003612191576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561223957507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156122c6578273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f879f92dded0f26b83c3e00b12e0395dc72cfc3077343d1854ed6988edd1f90968360405161229d91815260200190565b60405180910390a361104173ffffffffffffffffffffffffffffffffffffffff84168383612ef5565b600080548082526001602052604090912081156123bd5780546fffffffffffffffffffffffffffffffff1660000361232a576040517f260e629b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8054427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff1611151580156123865750600a600061236d846001613e78565b815260208101919091526040016000205463ffffffff16155b156123bd576040517f97ea364c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8716906370a0823190602401602060405180830381865afa15801561242a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061244e9190613e9e565b73ffffffffffffffffffffffffffffffffffffffff87166000908152600b6020908152604080832054600c909252822054929350909161248e9190613e8b565b6124989083613e8b565b9050808511156124d4576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6124f573ffffffffffffffffffffffffffffffffffffffff88168787612ef5565b8673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f879f92dded0f26b83c3e00b12e0395dc72cfc3077343d1854ed6988edd1f90968760405161255491815260200190565b60405180910390a350505050505050565b61256d612fbc565b6000828152600d602052604090205460ff16156125b6576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152600160205260408120805490916fffffffffffffffffffffffffffffffff9091169003612614576040517fd5b25b6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8054427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff161115612676576040517fb37f700600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000341180156126ab57507f000000000000000000000000000000000000000000000000000000000000000063ffffffff1646145b156126e2576040517fba792cb900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838152600a60205260408120906126fa82612df1565b5090507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612782576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600183015460008190036127c2576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051878152602081018390527f7100c4f922b370c0ad3218efd254665bfc8609664973b40534b2c4ea6ca28708910160405180910390a16000868152600d6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055600283015461285990829073ffffffffffffffffffffffffffffffffffffffff1687612fff565b505050506128676001600655565b5050565b60075473ffffffffffffffffffffffffffffffffffffffff1633146128bc576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116612909576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f99d737e0adf2c449d71890b86772885ec7959b152ddb265f76325b6e68e105d390600090a250565b60085473ffffffffffffffffffffffffffffffffffffffff1633148015906129b8575060075473ffffffffffffffffffffffffffffffffffffffff163314155b156129ef576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8063ffffffff16600003612a2f576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600880547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000063ffffffff8416908102919091179091556040519081527fb12b811ee01ea66d1cd1a2f8ee470517b143478dafa635fd782430c34251d9f0906020016116c8565b60075473ffffffffffffffffffffffffffffffffffffffff163314612afd576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116612b4a576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054821115612b86576040517fd5b25b6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526005602052604090205460ff1615612bcf576040517f3e49310000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602052604090208054427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff161115612c3f576040517fb37f700600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600181015415612c7b576040517f398d4d3200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838152600a6020526040812090612c9382612df1565b600087815260056020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055600288015473ffffffffffffffffffffffffffffffffffffffff85168452600c909252822080549395509093508392909190612d0a908490613e8b565b925050819055508173ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f879f92dded0f26b83c3e00b12e0395dc72cfc3077343d1854ed6988edd1f909683604051612d7091815260200190565b60405180910390a3612d9973ffffffffffffffffffffffffffffffffffffffff83168683612ef5565b505050505050565b8054600090426fffffffffffffffffffffffffffffffff909116118015906120b35750505470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16421090565b6001810154600090819074010000000000000000000000000000000000000000900460ff16612e61577f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000612ea4565b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000005b9094909350915050565b6000612ebb858585613586565b9050818015612eda575060008380612ed557612ed5614210565b858709115b15612eed57612eea600182613e78565b90505b949350505050565b60405173ffffffffffffffffffffffffffffffffffffffff83811660248301526044820183905261104191859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050613697565b60405173ffffffffffffffffffffffffffffffffffffffff8481166024830152838116604483015260648201839052610cc39186918216906323b872dd90608401612f2f565b600260065403612ff8576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600655565b61304173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016833086612f76565b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff164603613113576040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018490527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906342966c6890602401600060405180830381600087803b1580156130f657600080fd5b505af115801561310a573d6000803e3d6000fd5b50505050505050565b6008546000906131849074010000000000000000000000000000000000000000900463ffffffff168261317d604080517e03000000000000000000000000000000000000000000000000000000000000602082015281516002818303018152602290910190915290565b919061372d565b6040805160e08101825263ffffffff7f00000000000000000000000000000000000000000000000000000000000000001681526000602080830182905282840189905260608301829052608083018590528351808201855282815260a08401528351908101845281815260c083015291517f3b6f743b000000000000000000000000000000000000000000000000000000008152929350917f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690633b6f743b9061326a90859085906004016142b5565b6040805180830381865afa158015613286573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132aa919061434f565b90508380156132b95750805147105b156133035780516040517fdb42144d000000000000000000000000000000000000000000000000000000008152600060048201526024810191909152476044820152606401610c1d565b831580156133115750805134105b1561335b5780516040517fdb42144d000000000000000000000000000000000000000000000000000000008152600060048201526024810191909152346044820152606401610c1d565b83156134235780516040517fc7c7f5b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169163c7c7f5b3916133d99086908690309060040161436b565b60c06040518083038185885af11580156133f7573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061341c91906143b5565b5050612d99565b80516040517fc7c7f5b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169163c7c7f5b39161349b9086908690339060040161436b565b60c06040518083038185885af11580156134b9573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906134de91906143b5565b505080516000906134ef9034613e8b565b9050801561310a57604051600090339083908381818185875af1925050503d8060008114613539576040519150601f19603f3d011682016040523d82523d6000602084013e61353e565b606091505b505090508061357c576040517f51fe4a3400000000000000000000000000000000000000000000000000000000815260048101839052602401610c1d565b5050505050505050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff858709858702925082811083820303915050806000036135de578382816135d4576135d4614210565b0492505050613690565b838110613628576040517f63a05778000000000000000000000000000000000000000000000000000000008152600481018790526024810186905260448101859052606401610c1d565b600084868809851960019081018716968790049682860381900495909211909303600082900391909104909201919091029190911760038402600290811880860282030280860282030280860282030280860282030280860282030280860290910302029150505b9392505050565b60006136b973ffffffffffffffffffffffffffffffffffffffff8416836137b0565b905080516000141580156136de5750808060200190518101906136dc9190614473565b155b15611041576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610c1d565b606083600361373d8260006137be565b61ffff161461378a576137518160006137be565b6040517f3a51740d00000000000000000000000000000000000000000000000000000000815261ffff9091166004820152602401610c1d565b6000613796858561383e565b90506137a4866001836138f0565b9250505b509392505050565b60606136908383600061395b565b60006137cb826002613e78565b83511015613835576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f746f55696e7431365f6f75744f66426f756e64730000000000000000000000006044820152606401610c1d565b50016002015190565b60606fffffffffffffffffffffffffffffffff8216156138a757604080517fffffffffffffffffffffffffffffffff00000000000000000000000000000000608086811b8216602084015285901b16603082015201604051602081830303815290604052613690565b6040517fffffffffffffffffffffffffffffffff00000000000000000000000000000000608085901b166020820152603001604051602081830303815290604052905092915050565b60608360036139008260006137be565b61ffff1614613914576137518160006137be565b8460016139218551613a14565b61392c906001614490565b86866040516020016139429594939291906144aa565b6040516020818303038152906040529150509392505050565b606081471015613999576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610c1d565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516139c29190614561565b60006040518083038185875af1925050503d80600081146139ff576040519150601f19603f3d011682016040523d82523d6000602084013e613a04565b606091505b50915091506137a4868383613a60565b600061ffff821115613a5c576040517f6dfcc6500000000000000000000000000000000000000000000000000000000081526010600482015260248101839052604401610c1d565b5090565b606082613a7557613a7082613aef565b613690565b8151158015613a99575073ffffffffffffffffffffffffffffffffffffffff84163b155b15613ae8576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610c1d565b5080613690565b805115613aff5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b600060208284031215613b4657600080fd5b5035919050565b60005b83811015613b68578181015183820152602001613b50565b50506000910152565b60008151808452613b89816020860160208601613b4d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006136906020830184613b71565b73ffffffffffffffffffffffffffffffffffffffff81168114613b3157600080fd5b60008060408385031215613c0357600080fd5b8235613c0e81613bce565b946020939093013593505050565b600060e08201905063ffffffff835116825263ffffffff602084015116602083015263ffffffff604084015116604083015273ffffffffffffffffffffffffffffffffffffffff606084015116606083015273ffffffffffffffffffffffffffffffffffffffff608084015116608083015260a0830151613ca160a084018215159052565b5060c0830151613cc960c084018273ffffffffffffffffffffffffffffffffffffffff169052565b5092915050565b8035613cdb81613bce565b919050565b600060208284031215613cf257600080fd5b813561369081613bce565b600060e0828403128015613d1057600080fd5b509092915050565b600080600060608486031215613d2d57600080fd5b8335613d3881613bce565b92506020840135613d4881613bce565b929592945050506040919091013590565b8015158114613b3157600080fd5b8035613cdb81613d59565b60008060408385031215613d8557600080fd5b823591506020830135613d9781613d59565b809150509250929050565b63ffffffff81168114613b3157600080fd5b600060208284031215613dc657600080fd5b813561369081613da2565b60008060408385031215613de457600080fd5b823591506020830135613d9781613bce565b600181811c90821680613e0a57607f821691505b602082108103613e43577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156120b3576120b3613e49565b818103818111156120b3576120b3613e49565b600060208284031215613eb057600080fd5b5051919050565b600081356120b381613da2565b600081356120b381613bce565b600081356120b381613d59565b8135613ee981613da2565b63ffffffff811690508154817fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000082161783556020840135613f2981613da2565b67ffffffff000000008160201b16837fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000841617178455505050613fae613f7160408401613eb7565b82547fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff1660409190911b6bffffffff000000000000000016178255565b613ffa613fbd60608401613ec4565b82546bffffffffffffffffffffffff1660609190911b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016178255565b6001810161404f61400d60808501613ec4565b82547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff91909116178255565b6140a861405e60a08501613ed1565b8280547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1691151560a01b74ff000000000000000000000000000000000000000016919091179055565b506128676140b860c08401613ec4565b6002830173ffffffffffffffffffffffffffffffffffffffff82167fffffffffffffffffffffffff00000000000000000000000000000000000000008254161781555050565b8281526101008101823561411181613da2565b63ffffffff8116602084015250602083013561412c81613da2565b63ffffffff8116604084015250604083013561414781613da2565b63ffffffff811660608401525061416060608401613cd0565b73ffffffffffffffffffffffffffffffffffffffff811660808401525061418960808401613cd0565b73ffffffffffffffffffffffffffffffffffffffff811660a0840152506141b260a08401613d67565b80151560c0840152506141c760c08401613cd0565b73ffffffffffffffffffffffffffffffffffffffff811660e08401526137a8565b6fffffffffffffffffffffffffffffffff81811683821601908111156120b3576120b3613e49565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b63ffffffff81511682526020810151602083015260408101516040830152606081015160608301526000608082015160e0608085015261428260e0850182613b71565b905060a083015184820360a086015261429b8282613b71565b91505060c083015184820360c08601526120ae8282613b71565b6040815260006142c8604083018561423f565b905082151560208301529392505050565b6000604082840312156142eb57600080fd5b6040805190810167ffffffffffffffff81118282101715614335577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604052825181526020928301519281019290925250919050565b60006040828403121561436157600080fd5b61369083836142d9565b60808152600061437e608083018661423f565b9050835160208301526020840151604083015273ffffffffffffffffffffffffffffffffffffffff83166060830152949350505050565b60008082840360c08112156143c957600080fd5b60808112156143d757600080fd5b506040516060810167ffffffffffffffff81118282101715614422577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405283518152602084015167ffffffffffffffff8116811461444457600080fd5b602082015261445685604086016142d9565b6040820152915061446a84608085016142d9565b90509250929050565b60006020828403121561448557600080fd5b815161369081613d59565b61ffff81811683821601908111156120b3576120b3613e49565b600086516144bc818460208b01613b4d565b80830190507fff000000000000000000000000000000000000000000000000000000000000008760f81b1681527fffff0000000000000000000000000000000000000000000000000000000000008660f01b1660018201527fff000000000000000000000000000000000000000000000000000000000000008560f81b1660038201528351614552816004840160208801613b4d565b01600401979650505050505050565b60008251614573818460208701613b4d565b919091019291505056fea2646970667358221220b6d77a257f3180c35565b75ca84601a62f8a7d27457944b6135dcb4341b816d964736f6c634300081c0033a26469706673582212201ec58c6c32b373a34abd47af372644cd3569dbc9f4754a01ede8b0a1cb825de664736f6c634300081c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/templegold/StableGoldAuction.sol/StableGoldAuction.json b/apps/dapp/abi/contracts/templegold/StableGoldAuction.sol/StableGoldAuction.json new file mode 100644 index 000000000..eae803bb6 --- /dev/null +++ b/apps/dapp/abi/contracts/templegold/StableGoldAuction.sol/StableGoldAuction.json @@ -0,0 +1,1174 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "StableGoldAuction", + "sourceName": "contracts/templegold/StableGoldAuction.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_templeGold", + "type": "address" + }, + { + "internalType": "address", + "name": "_bidToken", + "type": "address" + }, + { + "internalType": "address", + "name": "_treasury", + "type": "address" + }, + { + "internalType": "address", + "name": "_rescuer", + "type": "address" + }, + { + "internalType": "address", + "name": "_executor", + "type": "address" + }, + { + "internalType": "address", + "name": "_auctionStarter", + "type": "address" + } + ], + "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": [], + "name": "AlreadyClaimed", + "type": "error" + }, + { + "inputs": [], + "name": "AlreadyRecovered", + "type": "error" + }, + { + "inputs": [], + "name": "AuctionActive", + "type": "error" + }, + { + "inputs": [], + "name": "AuctionEnded", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "epochId", + "type": "uint256" + } + ], + "name": "CannotClaim", + "type": "error" + }, + { + "inputs": [], + "name": "CannotDeposit", + "type": "error" + }, + { + "inputs": [], + "name": "CannotStartAuction", + "type": "error" + }, + { + "inputs": [], + "name": "ExpectedNonZero", + "type": "error" + }, + { + "inputs": [], + "name": "FailedInnerCall", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidAccess", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidAddress", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "InvalidAmount", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidEpoch", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidOperation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "epochGoldAmount", + "type": "uint256" + } + ], + "name": "LowGoldDistributed", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "y", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "denominator", + "type": "uint256" + } + ], + "name": "PRBMath_MulDiv_Overflow", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "SafeERC20FailedOperation", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "epochId", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint32", + "name": "auctionsTimeDiff", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "auctionStartCooldown", + "type": "uint32" + }, + { + "internalType": "uint192", + "name": "auctionMinimumDistributedGold", + "type": "uint192" + } + ], + "indexed": false, + "internalType": "struct IStableGoldAuction.AuctionConfig", + "name": "config", + "type": "tuple" + } + ], + "name": "AuctionConfigSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "epochId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "starter", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint128", + "name": "startTime", + "type": "uint128" + }, + { + "indexed": false, + "internalType": "uint128", + "name": "endTime", + "type": "uint128" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "auctionTokenAmount", + "type": "uint256" + } + ], + "name": "AuctionStarted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "starter", + "type": "address" + } + ], + "name": "AuctionStarterSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "bidToken", + "type": "address" + } + ], + "name": "BidTokenSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "epochId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "bidTokenAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "auctionTokenAmount", + "type": "uint256" + } + ], + "name": "Claim", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "depositor", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "epochId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Deposit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "bytes4", + "name": "fnSelector", + "type": "bytes4" + }, + { + "indexed": true, + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "ExplicitAccessSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "name": "GoldDistributionNotified", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newExecutor", + "type": "address" + } + ], + "name": "NewExecutorAccepted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "oldProposedExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newProposedExecutor", + "type": "address" + } + ], + "name": "NewExecutorProposed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newRescuer", + "type": "address" + } + ], + "name": "NewRescuerAccepted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "oldProposedRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newProposedRescuer", + "type": "address" + } + ], + "name": "NewRescuerProposed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "RescueModeSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TokenRecovered", + "type": "event" + }, + { + "inputs": [], + "name": "AUCTION_DURATION", + "outputs": [ + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "acceptExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "acceptRescuer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "auctionStarter", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "bid", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "bidToken", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "canDeposit", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "epochId", + "type": "uint256" + } + ], + "name": "claim", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "depositor", + "type": "address" + }, + { + "internalType": "uint256", + "name": "epochId", + "type": "uint256" + } + ], + "name": "claimed", + "outputs": [ + { + "internalType": "bool", + "name": "claimed", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "depositor", + "type": "address" + }, + { + "internalType": "uint256", + "name": "epochId", + "type": "uint256" + } + ], + "name": "claimedAmount", + "outputs": [ + { + "internalType": "uint256", + "name": "claimedAmount", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "currentEpoch", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "depositor", + "type": "address" + }, + { + "internalType": "uint256", + "name": "epochId", + "type": "uint256" + } + ], + "name": "depositors", + "outputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "distributeGold", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "epochId", + "type": "uint256" + } + ], + "name": "epochGoldSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "epochId", + "type": "uint256" + } + ], + "name": "epochsWithoutBidsRecovered", + "outputs": [ + { + "internalType": "bool", + "name": "recovered", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "executor", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "name": "explicitFunctionAccess", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getAuctionConfig", + "outputs": [ + { + "components": [ + { + "internalType": "uint32", + "name": "auctionsTimeDiff", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "auctionStartCooldown", + "type": "uint32" + }, + { + "internalType": "uint192", + "name": "auctionMinimumDistributedGold", + "type": "uint192" + } + ], + "internalType": "struct IStableGoldAuction.AuctionConfig", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "depositor", + "type": "address" + } + ], + "name": "getClaimableAtCurrentEpoch", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "depositor", + "type": "address" + }, + { + "internalType": "uint256", + "name": "epochId", + "type": "uint256" + } + ], + "name": "getClaimableAtEpoch", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "epochId", + "type": "uint256" + } + ], + "name": "getEpochInfo", + "outputs": [ + { + "components": [ + { + "internalType": "uint128", + "name": "startTime", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "endTime", + "type": "uint128" + }, + { + "internalType": "uint256", + "name": "totalBidTokenAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalAuctionTokenAmount", + "type": "uint256" + } + ], + "internalType": "struct IAuctionBase.EpochInfo", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "inRescueMode", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "isCurrentEpochEnded", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "nextAuctionGoldAmount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "nextEpoch", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "notifyDistribution", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "proposeNewExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "proposeNewRescuer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "epochId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "recoverTempleGoldForZeroBidAuction", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "recoverToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "rescuer", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint32", + "name": "auctionsTimeDiff", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "auctionStartCooldown", + "type": "uint32" + }, + { + "internalType": "uint192", + "name": "auctionMinimumDistributedGold", + "type": "uint192" + } + ], + "internalType": "struct IStableGoldAuction.AuctionConfig", + "name": "_config", + "type": "tuple" + } + ], + "name": "setAuctionConfig", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_starter", + "type": "address" + } + ], + "name": "setAuctionStarter", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_bidToken", + "type": "address" + } + ], + "name": "setBidToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "allowedCaller", + "type": "address" + }, + { + "components": [ + { + "internalType": "bytes4", + "name": "fnSelector", + "type": "bytes4" + }, + { + "internalType": "bool", + "name": "allowed", + "type": "bool" + } + ], + "internalType": "struct ITempleElevatedAccess.ExplicitAccess[]", + "name": "access", + "type": "tuple[]" + } + ], + "name": "setExplicitAccess", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "setRescueMode", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "startAuction", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "templeGold", + "outputs": [ + { + "internalType": "contract ITempleGold", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "treasury", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x60c060405234801561001057600080fd5b5060405161322338038061322383398101604081905261002f91610157565b82826001600160a01b0382166100585760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b03811661007f5760405163e6c4247b60e01b815260040160405180910390fd5b816001600160a01b0316816001600160a01b0316036100b15760405163e6c4247b60e01b815260040160405180910390fd5b600680546001600160a01b03199081166001600160a01b039485161790915560078054821692841692909217909155878216608052600b8054821688841617905585821660a052600c805490911691831691821790556040517f9912e2a4535169ea3ec6c9138afab89a1ba028d9534726bbedd154a25f11392c90600090a25050505050506101cb565b80516001600160a01b038116811461015257600080fd5b919050565b60008060008060008060c0878903121561017057600080fd5b6101798761013b565b95506101876020880161013b565b94506101956040880161013b565b93506101a36060880161013b565b92506101b16080880161013b565b91506101bf60a0880161013b565b90509295509295509295565b60805160a051612ffb6102286000396000818161059a0152610fc90152600081816107b201528181610e970152818161123b015281816118b301528181611b83015281816124090152818161248001526126e80152612ffb6000f3fe608060405234801561001057600080fd5b50600436106102ad5760003560e01c8063766718081161017b578063ccb51004116100d8578063e110dfda1161008c578063e78a587511610071578063e78a5875146107e7578063f0234008146107ef578063f3ed8f251461081257600080fd5b8063e110dfda146107ad578063e36977cc146107d457600080fd5b8063d9a349c1116100bd578063d9a349c11461074c578063daeccc791461075f578063dfafd4fd1461078d57600080fd5b8063ccb5100414610731578063d2fbb3cb1461073957600080fd5b8063ab1b71bd1161012f578063b3ba0e2b11610114578063b3ba0e2b146106f5578063bfccf0ec146106fe578063c34c08e51461071157600080fd5b8063ab1b71bd146106da578063aea0e78b146106ed57600080fd5b80638503ae3d116101605780638503ae3d146105e7578063a271e525146106a4578063a7229fd9146106c757600080fd5b806376671808146105d75780638112c4af146105df57600080fd5b806338a6318311610229578063501ee126116101dd57806361d027b3116101c257806361d027b314610595578063654f2fc8146105bc5780636b64c769146105cf57600080fd5b8063501ee1261461055757806355b4b1a41461056a57600080fd5b8063454a2ab31161020e578063454a2ab3146104eb578063466c01b8146104fe5780634dd6c8de1461052957600080fd5b806338a6318314610489578063396939f2146104a957600080fd5b806314e21ecf116102805780631a7d73d0116102655780631a7d73d0146104295780631f2114051461046e578063379607f51461047657600080fd5b806314e21ecf146103eb5780631810fe7f1461040c57600080fd5b8063032ef901146102b257806307f184f1146102c7578063128e771b146102da578063135022c2146102ed575b600080fd5b6102c56102c0366004612a7a565b610835565b005b6102c56102d5366004612ac0565b6108e4565b6102c56102e8366004612ac0565b610a1c565b6103866102fb366004612adb565b60408051608081018252600080825260208201819052918101829052606081019190915250600090815260016020818152604092839020835160808101855281546fffffffffffffffffffffffffffffffff80821683527001000000000000000000000000000000009091041692810192909252918201549281019290925260020154606082015290565b6040516103e2919060006080820190506fffffffffffffffffffffffffffffffff83511682526fffffffffffffffffffffffffffffffff6020840151166020830152604083015160408301526060830151606083015292915050565b60405180910390f35b6103fe6103f9366004612ac0565b610b74565b6040519081526020016103e2565b6009546104199060ff1681565b60405190151581526020016103e2565b600c546104499073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016103e2565b6102c5610b88565b6102c5610484366004612adb565b610ca7565b6006546104499073ffffffffffffffffffffffffffffffffffffffff1681565b61041960008054815260016020526040812054427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff161115905090565b6102c56104f9366004612adb565b610f21565b6103fe61050c366004612af4565b600260209081526000928352604080842090915290825290205481565b610419610537366004612af4565b600360209081526000928352604080842090915290825290205460ff1681565b6102c5610565366004612ac0565b611088565b6103fe610578366004612af4565b600460209081526000928352604080842090915290825290205481565b6104497f000000000000000000000000000000000000000000000000000000000000000081565b6102c56105ca366004612adb565b611223565b6102c5611317565b6000546103fe565b6102c5611686565b61065d60408051606081018252600080825260208201819052918101919091525060408051606081018252600e5463ffffffff8082168352640100000000820416602083015268010000000000000000900477ffffffffffffffffffffffffffffffffffffffffffffffff169181019190915290565b60408051825163ffffffff9081168252602080850151909116908201529181015177ffffffffffffffffffffffffffffffffffffffffffffffff16908201526060016103e2565b6106ae62093a8081565b60405167ffffffffffffffff90911681526020016103e2565b6102c56106d5366004612b1e565b6117c6565b6103fe6106e8366004612af4565b611bb2565b6103fe611cbd565b6103fe600d5481565b6102c561070c366004612b5b565b611ccc565b6007546104499073ffffffffffffffffffffffffffffffffffffffff1681565b6102c5611ec3565b6102c5610747366004612be3565b611ecd565b6102c561075a366004612ac0565b61208b565b61041961076d366004612c2e565b600860209081526000928352604080842090915290825290205460ff1681565b600b546104499073ffffffffffffffffffffffffffffffffffffffff1681565b6104497f000000000000000000000000000000000000000000000000000000000000000081565b6102c56107e2366004612c61565b6121d0565b6104196124ad565b6103fe6107fd366004612adb565b60009081526001602052604090206002015490565b610419610820366004612adb565b60056020526000908152604090205460ff1681565b60065473ffffffffffffffffffffffffffffffffffffffff163314610886576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604051811515907f18f4a9a726c72020fd959c636d2fd464c6cefe90afeaea3c830b971614cf70b690600090a2600980547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60065473ffffffffffffffffffffffffffffffffffffffff163314610935576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610982576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60095460405173ffffffffffffffffffffffffffffffffffffffff808416926101009004169033907f374d23b359cab0f8963c5c1715a6de7974f53af00aecc27de50d93906b70943e90600090a46009805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b610a4a336000357fffffffff00000000000000000000000000000000000000000000000000000000166124c5565b610a80576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff831617905560008054815260016020526040902054427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff161115610b30576040517f398d4d3200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405173ffffffffffffffffffffffffffffffffffffffff8216907f9912e2a4535169ea3ec6c9138afab89a1ba028d9534726bbedd154a25f11392c90600090a250565b6000610b8282600054611bb2565b92915050565b600a5473ffffffffffffffffffffffffffffffffffffffff163314610bd9576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60065473ffffffffffffffffffffffffffffffffffffffff163303610c2a576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600754604051339173ffffffffffffffffffffffffffffffffffffffff16907fe963dc9c0d2165b080440a5d2665566142f2426b1ea15f3da8390b0fd336b06490600090a3600780547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163317909155600a80549091169055565b60008181526001602052604090208054427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff161115610d1f576040517fbf009dab000000000000000000000000000000000000000000000000000000008152600481018390526024015b60405180910390fd5b80546fffffffffffffffffffffffffffffffff16600003610d6c576040517fd5b25b6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33600090815260036020908152604080832085845290915290205460ff1615610dc1576040517f646cf55800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33600090815260026020908152604080832085845290915281205490819003610e16576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000908152600360209081526040808320868452909152812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001908117909155600284015490840154610e7191849184612588565b3360008181526004602090815260408083208984529091529020829055909150610ed3907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690836125cf565b604080518581526020810184905290810182905233907f45c072aa05b9853b5a993de7a28bc332ee01404a628cec1a23ce0f659f842ef19060600160405180910390a250505050565b905090565b600080548152600160205260409020610f3990612650565b610f6f576040517f65ca8f5400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600003610fa9576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600b54610fee9073ffffffffffffffffffffffffffffffffffffffff16337f0000000000000000000000000000000000000000000000000000000000000000846126a0565b60008054338252600260209081526040808420838552909152822080549192849261101a908490612cb3565b909155505060008181526001602081905260408220908101805491928592611043908490612cb3565b9091555050604080518381526020810185905233917f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a15910160405180910390a2505050565b6110b6336000357fffffffff00000000000000000000000000000000000000000000000000000000166124c5565b6110ec576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116611139576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054815260016020526040902054427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff1611156111a9576040517f398d4d3200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f24e72a08217d19828f258be09f53f19295e0b24dbd7d8f168403e54e88af5bc9906020015b60405180910390a150565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016148015906112945750611292336000357fffffffff00000000000000000000000000000000000000000000000000000000166124c5565b155b156112cb576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600d60008282546112dd9190612cb3565b9091555050604080518281524260208201527f1e215fdd40f0b4854c5a2b2cfe53859ca232f085a5b129c9f65b6bfeb094c5e49101611218565b600c5473ffffffffffffffffffffffffffffffffffffffff16158015906113565750600c5473ffffffffffffffffffffffffffffffffffffffff163314155b1561138d576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054808252600160205260409091208054427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff161115611400576040517ffcd189b500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600e821580159061145e575080548254429161144a9163ffffffff9091169070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16612cc6565b6fffffffffffffffffffffffffffffffff16115b15611495576040517ffcd189b500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805468010000000000000000900477ffffffffffffffffffffffffffffffffffffffffffffffff166000036114f6576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114fe6126e6565b600d805460009182905590611514856001612cb3565b6000819055835490915068010000000000000000900477ffffffffffffffffffffffffffffffffffffffffffffffff16821015611580576040517fd1c6fee000000000000000000000000000000000000000000000000000000000815260048101839052602401610d16565b60008181526001602052604081206002810184905584549091906115b290640100000000900463ffffffff1642612cc6565b82547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff8216178355905060006115fd62093a8083612cc6565b83546fffffffffffffffffffffffffffffffff9081167001000000000000000000000000000000008383169081029190911786556040805188815292861660208401528201526060810187905290915033907f2f0e07e2baf6351377b2a46b5ccf5cd22b494921f870da223157659e174918f99060800160405180910390a25050505050505050565b600954610100900473ffffffffffffffffffffffffffffffffffffffff1633146116dc576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60075473ffffffffffffffffffffffffffffffffffffffff16330361172d576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600654604051339173ffffffffffffffffffffffffffffffffffffffff16907ff07131157ebea15896dc89264eb9a7572e67cc9fad6b855015730fcec10704e090600090a3600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001633179055600980547fffffffffffffffffffffff0000000000000000000000000000000000000000ff169055565b6117f4336000357fffffffff00000000000000000000000000000000000000000000000000000000166124c5565b61182a576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611877576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806000036118b1576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611991578273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f879f92dded0f26b83c3e00b12e0395dc72cfc3077343d1854ed6988edd1f90968360405161196391815260200190565b60405180910390a361198c73ffffffffffffffffffffffffffffffffffffffff841683836125cf565b505050565b600080548082526001602052604082208054919290916fffffffffffffffffffffffffffffffff1690036119f1576040517f398d4d3200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6119fa81612650565b15611a31576040517fb37f700600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8054427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff1611611a92576040517fa0e9298400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600281015480841115611af0576040517fb2b3b53b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8716600482015260248101859052604401610d16565b6000838152600160208181526040808420848155928301849055600290920192909255600d80548785030190555185815273ffffffffffffffffffffffffffffffffffffffff88811692908816917f879f92dded0f26b83c3e00b12e0395dc72cfc3077343d1854ed6988edd1f9096910160405180910390a3611baa73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001686866125cf565b505050505050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260036020908152604080832084845290915281205460ff1615611bf357506000610b82565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600260209081526040808320858452909152902054801580611c32575060005483115b15611c41576000915050610b82565b6000838152600160208181526040808420815160808101835281546fffffffffffffffffffffffffffffffff8082168352700100000000000000000000000000000000909104169381019390935292830154908201819052600290920154606082018190529092611cb492859291612588565b95945050505050565b60008054610f1c906001612cb3565b611cfa336000357fffffffff00000000000000000000000000000000000000000000000000000000166124c5565b611d30576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316611d7d576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805180820190915260008082526020820152819060005b82811015611baa57848482818110611db057611db0612cee565b905060400201803603810190611dc69190612d1d565b91508160200151151582600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168773ffffffffffffffffffffffffffffffffffffffff167ff5736e75de2c751f775d4c5ed517289f77074f8c337f451ba4c0c3ed1dd7f9ad60405160405180910390a460208281015173ffffffffffffffffffffffffffffffffffffffff8816600090815260088352604080822086517fffffffff000000000000000000000000000000000000000000000000000000001683529093529190912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101611d96565b611ecb6126e6565b565b611efb336000357fffffffff00000000000000000000000000000000000000000000000000000000166124c5565b611f31576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611f416040820160208301612db5565b63ffffffff161580611f7a5750611f5e6060820160408301612df8565b77ffffffffffffffffffffffffffffffffffffffffffffffff16155b80611f955750611f8d6020820182612db5565b63ffffffff16155b15611fcc576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080548082526001602052604090912054427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff16111561203e576040517f398d4d3200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600e61204b8282612e15565b9050507f0ae1772a552aa48ab7e8bf58c335b3d4ce981b3d6c928f90d69a58f0f28d75fe818360405161207f929190612eda565b60405180910390a15050565b6120b9336000357fffffffff00000000000000000000000000000000000000000000000000000000166124c5565b6120ef576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff811661213c576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a5460075460405173ffffffffffffffffffffffffffffffffffffffff8085169381169216907f4857570a90fe0a0fc580e89a287e77576141ac8e2e8b3710cd26db44f44156c190600090a4600a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6121fe336000357fffffffff00000000000000000000000000000000000000000000000000000000166124c5565b612234576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116612281576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000548211156122bd576040517fd5b25b6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526005602052604090205460ff1615612306576040517f3e49310000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602052604090208054427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff161115612376576040517fb37f700600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001810154156123b2576040517f398d4d3200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838152600560205260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556002820154905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811691908516907f879f92dded0f26b83c3e00b12e0395dc72cfc3077343d1854ed6988edd1f90969061245e9085815260200190565b60405180910390a36124a773ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001684836125cf565b50505050565b600080548152600160205260408120610f1c90612650565b60095460009060ff16156124f7575060065473ffffffffffffffffffffffffffffffffffffffff838116911614610b82565b60075473ffffffffffffffffffffffffffffffffffffffff84811691161480612572575073ffffffffffffffffffffffffffffffffffffffff831660009081526008602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290205460ff165b1561257f57506001610b82565b50600092915050565b6000612595858585612762565b90508180156125b45750600083806125af576125af612f4a565b858709115b156125c7576125c4600182612cb3565b90505b949350505050565b60405173ffffffffffffffffffffffffffffffffffffffff83811660248301526044820183905261198c91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612873565b8054600090426fffffffffffffffffffffffffffffffff90911611801590610b825750505470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16421090565b60405173ffffffffffffffffffffffffffffffffffffffff84811660248301528381166044830152606482018390526124a79186918216906323b872dd90608401612609565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631249c58b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561274e57600080fd5b505af11580156124a7573d6000803e3d6000fd5b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff858709858702925082811083820303915050806000036127ba578382816127b0576127b0612f4a565b049250505061286c565b838110612804576040517f63a05778000000000000000000000000000000000000000000000000000000008152600481018790526024810186905260448101859052606401610d16565b600084868809851960019081018716968790049682860381900495909211909303600082900391909104909201919091029190911760038402600290811880860282030280860282030280860282030280860282030280860282030280860290910302029150505b9392505050565b600061289573ffffffffffffffffffffffffffffffffffffffff841683612909565b905080516000141580156128ba5750808060200190518101906128b89190612f79565b155b1561198c576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610d16565b606061286c83836000846000808573ffffffffffffffffffffffffffffffffffffffff16848660405161293c9190612f96565b60006040518083038185875af1925050503d8060008114612979576040519150601f19603f3d011682016040523d82523d6000602084013e61297e565b606091505b509150915061298e868383612998565b9695505050505050565b6060826129ad576129a882612a27565b61286c565b81511580156129d1575073ffffffffffffffffffffffffffffffffffffffff84163b155b15612a20576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610d16565b508061286c565b805115612a375780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b8015158114612a6957600080fd5b600060208284031215612a8c57600080fd5b813561286c81612a6c565b803573ffffffffffffffffffffffffffffffffffffffff81168114612abb57600080fd5b919050565b600060208284031215612ad257600080fd5b61286c82612a97565b600060208284031215612aed57600080fd5b5035919050565b60008060408385031215612b0757600080fd5b612b1083612a97565b946020939093013593505050565b600080600060608486031215612b3357600080fd5b612b3c84612a97565b9250612b4a60208501612a97565b929592945050506040919091013590565b600080600060408486031215612b7057600080fd5b612b7984612a97565b9250602084013567ffffffffffffffff811115612b9557600080fd5b8401601f81018613612ba657600080fd5b803567ffffffffffffffff811115612bbd57600080fd5b8660208260061b8401011115612bd257600080fd5b939660209190910195509293505050565b60006060828403128015612bf657600080fd5b509092915050565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114612abb57600080fd5b60008060408385031215612c4157600080fd5b612c4a83612a97565b9150612c5860208401612bfe565b90509250929050565b60008060408385031215612c7457600080fd5b82359150612c5860208401612a97565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115610b8257610b82612c84565b6fffffffffffffffffffffffffffffffff8181168382160190811115610b8257610b82612c84565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006040828403128015612d3057600080fd5b506040805190810167ffffffffffffffff81118282101715612d7b577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604052612d8783612bfe565b81526020830135612d9781612a6c565b60208201529392505050565b63ffffffff81168114612a6957600080fd5b600060208284031215612dc757600080fd5b813561286c81612da3565b77ffffffffffffffffffffffffffffffffffffffffffffffff81168114612a6957600080fd5b600060208284031215612e0a57600080fd5b813561286c81612dd2565b8135612e2081612da3565b63ffffffff811690508154817fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000082161783556020840135612e6081612da3565b67ffffffff000000008160201b16905080837fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000084161717845560408501359150612ea982612dd2565b90911760409190911b7fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001617905550565b828152608081018235612eec81612da3565b63ffffffff81166020840152506020830135612f0781612da3565b63ffffffff81166040840152506040830135612f2281612dd2565b77ffffffffffffffffffffffffffffffffffffffffffffffff81166060840152509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600060208284031215612f8b57600080fd5b815161286c81612a6c565b6000825160005b81811015612fb75760208186018101518583015201612f9d565b50600092019182525091905056fea2646970667358221220f04074cfc1c336c5b34bf043ca300f3519398aac60ec08f02ec5e7f842a2de9e64736f6c634300081c0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102ad5760003560e01c8063766718081161017b578063ccb51004116100d8578063e110dfda1161008c578063e78a587511610071578063e78a5875146107e7578063f0234008146107ef578063f3ed8f251461081257600080fd5b8063e110dfda146107ad578063e36977cc146107d457600080fd5b8063d9a349c1116100bd578063d9a349c11461074c578063daeccc791461075f578063dfafd4fd1461078d57600080fd5b8063ccb5100414610731578063d2fbb3cb1461073957600080fd5b8063ab1b71bd1161012f578063b3ba0e2b11610114578063b3ba0e2b146106f5578063bfccf0ec146106fe578063c34c08e51461071157600080fd5b8063ab1b71bd146106da578063aea0e78b146106ed57600080fd5b80638503ae3d116101605780638503ae3d146105e7578063a271e525146106a4578063a7229fd9146106c757600080fd5b806376671808146105d75780638112c4af146105df57600080fd5b806338a6318311610229578063501ee126116101dd57806361d027b3116101c257806361d027b314610595578063654f2fc8146105bc5780636b64c769146105cf57600080fd5b8063501ee1261461055757806355b4b1a41461056a57600080fd5b8063454a2ab31161020e578063454a2ab3146104eb578063466c01b8146104fe5780634dd6c8de1461052957600080fd5b806338a6318314610489578063396939f2146104a957600080fd5b806314e21ecf116102805780631a7d73d0116102655780631a7d73d0146104295780631f2114051461046e578063379607f51461047657600080fd5b806314e21ecf146103eb5780631810fe7f1461040c57600080fd5b8063032ef901146102b257806307f184f1146102c7578063128e771b146102da578063135022c2146102ed575b600080fd5b6102c56102c0366004612a7a565b610835565b005b6102c56102d5366004612ac0565b6108e4565b6102c56102e8366004612ac0565b610a1c565b6103866102fb366004612adb565b60408051608081018252600080825260208201819052918101829052606081019190915250600090815260016020818152604092839020835160808101855281546fffffffffffffffffffffffffffffffff80821683527001000000000000000000000000000000009091041692810192909252918201549281019290925260020154606082015290565b6040516103e2919060006080820190506fffffffffffffffffffffffffffffffff83511682526fffffffffffffffffffffffffffffffff6020840151166020830152604083015160408301526060830151606083015292915050565b60405180910390f35b6103fe6103f9366004612ac0565b610b74565b6040519081526020016103e2565b6009546104199060ff1681565b60405190151581526020016103e2565b600c546104499073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016103e2565b6102c5610b88565b6102c5610484366004612adb565b610ca7565b6006546104499073ffffffffffffffffffffffffffffffffffffffff1681565b61041960008054815260016020526040812054427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff161115905090565b6102c56104f9366004612adb565b610f21565b6103fe61050c366004612af4565b600260209081526000928352604080842090915290825290205481565b610419610537366004612af4565b600360209081526000928352604080842090915290825290205460ff1681565b6102c5610565366004612ac0565b611088565b6103fe610578366004612af4565b600460209081526000928352604080842090915290825290205481565b6104497f000000000000000000000000000000000000000000000000000000000000000081565b6102c56105ca366004612adb565b611223565b6102c5611317565b6000546103fe565b6102c5611686565b61065d60408051606081018252600080825260208201819052918101919091525060408051606081018252600e5463ffffffff8082168352640100000000820416602083015268010000000000000000900477ffffffffffffffffffffffffffffffffffffffffffffffff169181019190915290565b60408051825163ffffffff9081168252602080850151909116908201529181015177ffffffffffffffffffffffffffffffffffffffffffffffff16908201526060016103e2565b6106ae62093a8081565b60405167ffffffffffffffff90911681526020016103e2565b6102c56106d5366004612b1e565b6117c6565b6103fe6106e8366004612af4565b611bb2565b6103fe611cbd565b6103fe600d5481565b6102c561070c366004612b5b565b611ccc565b6007546104499073ffffffffffffffffffffffffffffffffffffffff1681565b6102c5611ec3565b6102c5610747366004612be3565b611ecd565b6102c561075a366004612ac0565b61208b565b61041961076d366004612c2e565b600860209081526000928352604080842090915290825290205460ff1681565b600b546104499073ffffffffffffffffffffffffffffffffffffffff1681565b6104497f000000000000000000000000000000000000000000000000000000000000000081565b6102c56107e2366004612c61565b6121d0565b6104196124ad565b6103fe6107fd366004612adb565b60009081526001602052604090206002015490565b610419610820366004612adb565b60056020526000908152604090205460ff1681565b60065473ffffffffffffffffffffffffffffffffffffffff163314610886576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604051811515907f18f4a9a726c72020fd959c636d2fd464c6cefe90afeaea3c830b971614cf70b690600090a2600980547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60065473ffffffffffffffffffffffffffffffffffffffff163314610935576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610982576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60095460405173ffffffffffffffffffffffffffffffffffffffff808416926101009004169033907f374d23b359cab0f8963c5c1715a6de7974f53af00aecc27de50d93906b70943e90600090a46009805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b610a4a336000357fffffffff00000000000000000000000000000000000000000000000000000000166124c5565b610a80576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff831617905560008054815260016020526040902054427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff161115610b30576040517f398d4d3200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405173ffffffffffffffffffffffffffffffffffffffff8216907f9912e2a4535169ea3ec6c9138afab89a1ba028d9534726bbedd154a25f11392c90600090a250565b6000610b8282600054611bb2565b92915050565b600a5473ffffffffffffffffffffffffffffffffffffffff163314610bd9576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60065473ffffffffffffffffffffffffffffffffffffffff163303610c2a576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600754604051339173ffffffffffffffffffffffffffffffffffffffff16907fe963dc9c0d2165b080440a5d2665566142f2426b1ea15f3da8390b0fd336b06490600090a3600780547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163317909155600a80549091169055565b60008181526001602052604090208054427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff161115610d1f576040517fbf009dab000000000000000000000000000000000000000000000000000000008152600481018390526024015b60405180910390fd5b80546fffffffffffffffffffffffffffffffff16600003610d6c576040517fd5b25b6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33600090815260036020908152604080832085845290915290205460ff1615610dc1576040517f646cf55800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33600090815260026020908152604080832085845290915281205490819003610e16576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000908152600360209081526040808320868452909152812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001908117909155600284015490840154610e7191849184612588565b3360008181526004602090815260408083208984529091529020829055909150610ed3907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690836125cf565b604080518581526020810184905290810182905233907f45c072aa05b9853b5a993de7a28bc332ee01404a628cec1a23ce0f659f842ef19060600160405180910390a250505050565b905090565b600080548152600160205260409020610f3990612650565b610f6f576040517f65ca8f5400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600003610fa9576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600b54610fee9073ffffffffffffffffffffffffffffffffffffffff16337f0000000000000000000000000000000000000000000000000000000000000000846126a0565b60008054338252600260209081526040808420838552909152822080549192849261101a908490612cb3565b909155505060008181526001602081905260408220908101805491928592611043908490612cb3565b9091555050604080518381526020810185905233917f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a15910160405180910390a2505050565b6110b6336000357fffffffff00000000000000000000000000000000000000000000000000000000166124c5565b6110ec576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116611139576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054815260016020526040902054427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff1611156111a9576040517f398d4d3200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f24e72a08217d19828f258be09f53f19295e0b24dbd7d8f168403e54e88af5bc9906020015b60405180910390a150565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016148015906112945750611292336000357fffffffff00000000000000000000000000000000000000000000000000000000166124c5565b155b156112cb576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600d60008282546112dd9190612cb3565b9091555050604080518281524260208201527f1e215fdd40f0b4854c5a2b2cfe53859ca232f085a5b129c9f65b6bfeb094c5e49101611218565b600c5473ffffffffffffffffffffffffffffffffffffffff16158015906113565750600c5473ffffffffffffffffffffffffffffffffffffffff163314155b1561138d576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054808252600160205260409091208054427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff161115611400576040517ffcd189b500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600e821580159061145e575080548254429161144a9163ffffffff9091169070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16612cc6565b6fffffffffffffffffffffffffffffffff16115b15611495576040517ffcd189b500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805468010000000000000000900477ffffffffffffffffffffffffffffffffffffffffffffffff166000036114f6576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114fe6126e6565b600d805460009182905590611514856001612cb3565b6000819055835490915068010000000000000000900477ffffffffffffffffffffffffffffffffffffffffffffffff16821015611580576040517fd1c6fee000000000000000000000000000000000000000000000000000000000815260048101839052602401610d16565b60008181526001602052604081206002810184905584549091906115b290640100000000900463ffffffff1642612cc6565b82547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff8216178355905060006115fd62093a8083612cc6565b83546fffffffffffffffffffffffffffffffff9081167001000000000000000000000000000000008383169081029190911786556040805188815292861660208401528201526060810187905290915033907f2f0e07e2baf6351377b2a46b5ccf5cd22b494921f870da223157659e174918f99060800160405180910390a25050505050505050565b600954610100900473ffffffffffffffffffffffffffffffffffffffff1633146116dc576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60075473ffffffffffffffffffffffffffffffffffffffff16330361172d576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600654604051339173ffffffffffffffffffffffffffffffffffffffff16907ff07131157ebea15896dc89264eb9a7572e67cc9fad6b855015730fcec10704e090600090a3600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001633179055600980547fffffffffffffffffffffff0000000000000000000000000000000000000000ff169055565b6117f4336000357fffffffff00000000000000000000000000000000000000000000000000000000166124c5565b61182a576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611877576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806000036118b1576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611991578273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f879f92dded0f26b83c3e00b12e0395dc72cfc3077343d1854ed6988edd1f90968360405161196391815260200190565b60405180910390a361198c73ffffffffffffffffffffffffffffffffffffffff841683836125cf565b505050565b600080548082526001602052604082208054919290916fffffffffffffffffffffffffffffffff1690036119f1576040517f398d4d3200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6119fa81612650565b15611a31576040517fb37f700600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8054427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff1611611a92576040517fa0e9298400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600281015480841115611af0576040517fb2b3b53b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8716600482015260248101859052604401610d16565b6000838152600160208181526040808420848155928301849055600290920192909255600d80548785030190555185815273ffffffffffffffffffffffffffffffffffffffff88811692908816917f879f92dded0f26b83c3e00b12e0395dc72cfc3077343d1854ed6988edd1f9096910160405180910390a3611baa73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001686866125cf565b505050505050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260036020908152604080832084845290915281205460ff1615611bf357506000610b82565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600260209081526040808320858452909152902054801580611c32575060005483115b15611c41576000915050610b82565b6000838152600160208181526040808420815160808101835281546fffffffffffffffffffffffffffffffff8082168352700100000000000000000000000000000000909104169381019390935292830154908201819052600290920154606082018190529092611cb492859291612588565b95945050505050565b60008054610f1c906001612cb3565b611cfa336000357fffffffff00000000000000000000000000000000000000000000000000000000166124c5565b611d30576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316611d7d576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805180820190915260008082526020820152819060005b82811015611baa57848482818110611db057611db0612cee565b905060400201803603810190611dc69190612d1d565b91508160200151151582600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168773ffffffffffffffffffffffffffffffffffffffff167ff5736e75de2c751f775d4c5ed517289f77074f8c337f451ba4c0c3ed1dd7f9ad60405160405180910390a460208281015173ffffffffffffffffffffffffffffffffffffffff8816600090815260088352604080822086517fffffffff000000000000000000000000000000000000000000000000000000001683529093529190912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101611d96565b611ecb6126e6565b565b611efb336000357fffffffff00000000000000000000000000000000000000000000000000000000166124c5565b611f31576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611f416040820160208301612db5565b63ffffffff161580611f7a5750611f5e6060820160408301612df8565b77ffffffffffffffffffffffffffffffffffffffffffffffff16155b80611f955750611f8d6020820182612db5565b63ffffffff16155b15611fcc576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080548082526001602052604090912054427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff16111561203e576040517f398d4d3200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600e61204b8282612e15565b9050507f0ae1772a552aa48ab7e8bf58c335b3d4ce981b3d6c928f90d69a58f0f28d75fe818360405161207f929190612eda565b60405180910390a15050565b6120b9336000357fffffffff00000000000000000000000000000000000000000000000000000000166124c5565b6120ef576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff811661213c576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a5460075460405173ffffffffffffffffffffffffffffffffffffffff8085169381169216907f4857570a90fe0a0fc580e89a287e77576141ac8e2e8b3710cd26db44f44156c190600090a4600a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6121fe336000357fffffffff00000000000000000000000000000000000000000000000000000000166124c5565b612234576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116612281576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000548211156122bd576040517fd5b25b6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526005602052604090205460ff1615612306576040517f3e49310000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602052604090208054427001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff161115612376576040517fb37f700600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001810154156123b2576040517f398d4d3200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838152600560205260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556002820154905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811691908516907f879f92dded0f26b83c3e00b12e0395dc72cfc3077343d1854ed6988edd1f90969061245e9085815260200190565b60405180910390a36124a773ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001684836125cf565b50505050565b600080548152600160205260408120610f1c90612650565b60095460009060ff16156124f7575060065473ffffffffffffffffffffffffffffffffffffffff838116911614610b82565b60075473ffffffffffffffffffffffffffffffffffffffff84811691161480612572575073ffffffffffffffffffffffffffffffffffffffff831660009081526008602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290205460ff165b1561257f57506001610b82565b50600092915050565b6000612595858585612762565b90508180156125b45750600083806125af576125af612f4a565b858709115b156125c7576125c4600182612cb3565b90505b949350505050565b60405173ffffffffffffffffffffffffffffffffffffffff83811660248301526044820183905261198c91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612873565b8054600090426fffffffffffffffffffffffffffffffff90911611801590610b825750505470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16421090565b60405173ffffffffffffffffffffffffffffffffffffffff84811660248301528381166044830152606482018390526124a79186918216906323b872dd90608401612609565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631249c58b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561274e57600080fd5b505af11580156124a7573d6000803e3d6000fd5b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff858709858702925082811083820303915050806000036127ba578382816127b0576127b0612f4a565b049250505061286c565b838110612804576040517f63a05778000000000000000000000000000000000000000000000000000000008152600481018790526024810186905260448101859052606401610d16565b600084868809851960019081018716968790049682860381900495909211909303600082900391909104909201919091029190911760038402600290811880860282030280860282030280860282030280860282030280860282030280860290910302029150505b9392505050565b600061289573ffffffffffffffffffffffffffffffffffffffff841683612909565b905080516000141580156128ba5750808060200190518101906128b89190612f79565b155b1561198c576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610d16565b606061286c83836000846000808573ffffffffffffffffffffffffffffffffffffffff16848660405161293c9190612f96565b60006040518083038185875af1925050503d8060008114612979576040519150601f19603f3d011682016040523d82523d6000602084013e61297e565b606091505b509150915061298e868383612998565b9695505050505050565b6060826129ad576129a882612a27565b61286c565b81511580156129d1575073ffffffffffffffffffffffffffffffffffffffff84163b155b15612a20576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610d16565b508061286c565b805115612a375780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b8015158114612a6957600080fd5b600060208284031215612a8c57600080fd5b813561286c81612a6c565b803573ffffffffffffffffffffffffffffffffffffffff81168114612abb57600080fd5b919050565b600060208284031215612ad257600080fd5b61286c82612a97565b600060208284031215612aed57600080fd5b5035919050565b60008060408385031215612b0757600080fd5b612b1083612a97565b946020939093013593505050565b600080600060608486031215612b3357600080fd5b612b3c84612a97565b9250612b4a60208501612a97565b929592945050506040919091013590565b600080600060408486031215612b7057600080fd5b612b7984612a97565b9250602084013567ffffffffffffffff811115612b9557600080fd5b8401601f81018613612ba657600080fd5b803567ffffffffffffffff811115612bbd57600080fd5b8660208260061b8401011115612bd257600080fd5b939660209190910195509293505050565b60006060828403128015612bf657600080fd5b509092915050565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114612abb57600080fd5b60008060408385031215612c4157600080fd5b612c4a83612a97565b9150612c5860208401612bfe565b90509250929050565b60008060408385031215612c7457600080fd5b82359150612c5860208401612a97565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115610b8257610b82612c84565b6fffffffffffffffffffffffffffffffff8181168382160190811115610b8257610b82612c84565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006040828403128015612d3057600080fd5b506040805190810167ffffffffffffffff81118282101715612d7b577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604052612d8783612bfe565b81526020830135612d9781612a6c565b60208201529392505050565b63ffffffff81168114612a6957600080fd5b600060208284031215612dc757600080fd5b813561286c81612da3565b77ffffffffffffffffffffffffffffffffffffffffffffffff81168114612a6957600080fd5b600060208284031215612e0a57600080fd5b813561286c81612dd2565b8135612e2081612da3565b63ffffffff811690508154817fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000082161783556020840135612e6081612da3565b67ffffffff000000008160201b16905080837fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000084161717845560408501359150612ea982612dd2565b90911760409190911b7fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001617905550565b828152608081018235612eec81612da3565b63ffffffff81166020840152506020830135612f0781612da3565b63ffffffff81166040840152506040830135612f2281612dd2565b77ffffffffffffffffffffffffffffffffffffffffffffffff81166060840152509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600060208284031215612f8b57600080fd5b815161286c81612a6c565b6000825160005b81811015612fb75760208186018101518583015201612f9d565b50600092019182525091905056fea2646970667358221220f04074cfc1c336c5b34bf043ca300f3519398aac60ec08f02ec5e7f842a2de9e64736f6c634300081c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/templegold/TempleGold.sol/TempleGold.json b/apps/dapp/abi/contracts/templegold/TempleGold.sol/TempleGold.json new file mode 100644 index 000000000..e34e3f7d6 --- /dev/null +++ b/apps/dapp/abi/contracts/templegold/TempleGold.sol/TempleGold.json @@ -0,0 +1,2240 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "TempleGold", + "sourceName": "contracts/templegold/TempleGold.sol", + "abi": [ + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "executor", + "type": "address" + }, + { + "internalType": "address", + "name": "layerZeroEndpoint", + "type": "address" + }, + { + "internalType": "uint128", + "name": "mintChainId", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "mintChainLzEid", + "type": "uint128" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + } + ], + "internalType": "struct ITempleGold.InitArgs", + "name": "_initArgs", + "type": "tuple" + } + ], + "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": [], + "name": "CannotCompose", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "allowance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "ERC20InsufficientAllowance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "ERC20InsufficientBalance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "approver", + "type": "address" + } + ], + "name": "ERC20InvalidApprover", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + } + ], + "name": "ERC20InvalidReceiver", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "ERC20InvalidSender", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "ERC20InvalidSpender", + "type": "error" + }, + { + "inputs": [], + "name": "ExpectedNonZero", + "type": "error" + }, + { + "inputs": [], + "name": "FailedInnerCall", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidAddress", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidDelegate", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidEndpointCall", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidLocalDecimals", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "options", + "type": "bytes" + } + ], + "name": "InvalidOptions", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidParam", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidTotalShare", + "type": "error" + }, + { + "inputs": [], + "name": "LzTokenUnavailable", + "type": "error" + }, + { + "inputs": [], + "name": "MissingParameter", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "eid", + "type": "uint32" + } + ], + "name": "NoPeer", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "NonTransferrable", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "msgValue", + "type": "uint256" + } + ], + "name": "NotEnoughNative", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "addr", + "type": "address" + } + ], + "name": "OnlyEndpoint", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "eid", + "type": "uint32" + }, + { + "internalType": "bytes32", + "name": "sender", + "type": "bytes32" + } + ], + "name": "OnlyPeer", + "type": "error" + }, + { + "inputs": [], + "name": "OnlySelf", + "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": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "y", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "denominator", + "type": "uint256" + } + ], + "name": "PRBMath_MulDiv_Overflow", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "SafeERC20FailedOperation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "result", + "type": "bytes" + } + ], + "name": "SimulationResult", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountLD", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minAmountLD", + "type": "uint256" + } + ], + "name": "SlippageExceeded", + "type": "error" + }, + { + "inputs": [], + "name": "WrongChain", + "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": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "circulatingSuppply", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "totalBurned", + "type": "uint256" + } + ], + "name": "CirculatingSupplyUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_contract", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "_whitelisted", + "type": "bool" + } + ], + "name": "ContractAuthorizationSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "stakingAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "auctionAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "gnosisAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "name": "Distributed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "staking", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "auction", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "gnosis", + "type": "uint256" + } + ], + "name": "DistributionParamsSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "components": [ + { + "internalType": "uint32", + "name": "eid", + "type": "uint32" + }, + { + "internalType": "uint16", + "name": "msgType", + "type": "uint16" + }, + { + "internalType": "bytes", + "name": "options", + "type": "bytes" + } + ], + "indexed": false, + "internalType": "struct EnforcedOptionParam[]", + "name": "_enforcedOptions", + "type": "tuple[]" + } + ], + "name": "EnforcedOptionSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "inspector", + "type": "address" + } + ], + "name": "MsgInspectorSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "guid", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint32", + "name": "srcEid", + "type": "uint32" + }, + { + "indexed": true, + "internalType": "address", + "name": "toAddress", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amountReceivedLD", + "type": "uint256" + } + ], + "name": "OFTReceived", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "guid", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint32", + "name": "dstEid", + "type": "uint32" + }, + { + "indexed": true, + "internalType": "address", + "name": "fromAddress", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amountSentLD", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amountReceivedLD", + "type": "uint256" + } + ], + "name": "OFTSent", + "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": false, + "internalType": "uint32", + "name": "eid", + "type": "uint32" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "peer", + "type": "bytes32" + } + ], + "name": "PeerSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "preCrimeAddress", + "type": "address" + } + ], + "name": "PreCrimeSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "auction", + "type": "address" + } + ], + "name": "StableGoldAuctionSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "staking", + "type": "address" + } + ], + "name": "StakingSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "gnosis", + "type": "address" + } + ], + "name": "TeamGnosisSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint128", + "name": "numerator", + "type": "uint128" + }, + { + "indexed": false, + "internalType": "uint128", + "name": "denominator", + "type": "uint128" + } + ], + "name": "VestingFactorSet", + "type": "event" + }, + { + "inputs": [], + "name": "DISTRIBUTION_DIVISOR", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MAX_CIRCULATING_SUPPLY", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MINIMUM_MINT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "SEND", + "outputs": [ + { + "internalType": "uint16", + "name": "", + "type": "uint16" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "SEND_AND_CALL", + "outputs": [ + { + "internalType": "uint16", + "name": "", + "type": "uint16" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint32", + "name": "srcEid", + "type": "uint32" + }, + { + "internalType": "bytes32", + "name": "sender", + "type": "bytes32" + }, + { + "internalType": "uint64", + "name": "nonce", + "type": "uint64" + } + ], + "internalType": "struct Origin", + "name": "origin", + "type": "tuple" + } + ], + "name": "allowInitializePath", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "approvalRequired", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "auction", + "outputs": [ + { + "internalType": "contract IStableGoldAuction", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_contract", + "type": "address" + }, + { + "internalType": "bool", + "name": "_whitelist", + "type": "bool" + } + ], + "name": "authorizeContract", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "authorized", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "canDistribute", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "circulatingSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "_eid", + "type": "uint32" + }, + { + "internalType": "uint16", + "name": "_msgType", + "type": "uint16" + }, + { + "internalType": "bytes", + "name": "_extraOptions", + "type": "bytes" + } + ], + "name": "combineOptions", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimalConversionRate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "endpoint", + "outputs": [ + { + "internalType": "contract ILayerZeroEndpointV2", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "eid", + "type": "uint32" + }, + { + "internalType": "uint16", + "name": "msgType", + "type": "uint16" + } + ], + "name": "enforcedOptions", + "outputs": [ + { + "internalType": "bytes", + "name": "enforcedOption", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getDistributionParameters", + "outputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "staking", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "auction", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "gnosis", + "type": "uint256" + } + ], + "internalType": "struct ITempleGold.DistributionParams", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getMintAmount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getVestingFactor", + "outputs": [ + { + "components": [ + { + "internalType": "uint128", + "name": "value", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "weekMultiplier", + "type": "uint128" + } + ], + "internalType": "struct ITempleGold.VestingFactor", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint32", + "name": "srcEid", + "type": "uint32" + }, + { + "internalType": "bytes32", + "name": "sender", + "type": "bytes32" + }, + { + "internalType": "uint64", + "name": "nonce", + "type": "uint64" + } + ], + "internalType": "struct Origin", + "name": "", + "type": "tuple" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + }, + { + "internalType": "address", + "name": "_sender", + "type": "address" + } + ], + "name": "isComposeMsgSender", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "_eid", + "type": "uint32" + }, + { + "internalType": "bytes32", + "name": "_peer", + "type": "bytes32" + } + ], + "name": "isPeer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "lastMintTimestamp", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint32", + "name": "srcEid", + "type": "uint32" + }, + { + "internalType": "bytes32", + "name": "sender", + "type": "bytes32" + }, + { + "internalType": "uint64", + "name": "nonce", + "type": "uint64" + } + ], + "internalType": "struct Origin", + "name": "_origin", + "type": "tuple" + }, + { + "internalType": "bytes32", + "name": "_guid", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "_message", + "type": "bytes" + }, + { + "internalType": "address", + "name": "_executor", + "type": "address" + }, + { + "internalType": "bytes", + "name": "_extraData", + "type": "bytes" + } + ], + "name": "lzReceive", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "components": [ + { + "internalType": "uint32", + "name": "srcEid", + "type": "uint32" + }, + { + "internalType": "bytes32", + "name": "sender", + "type": "bytes32" + }, + { + "internalType": "uint64", + "name": "nonce", + "type": "uint64" + } + ], + "internalType": "struct Origin", + "name": "origin", + "type": "tuple" + }, + { + "internalType": "uint32", + "name": "dstEid", + "type": "uint32" + }, + { + "internalType": "address", + "name": "receiver", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "guid", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "address", + "name": "executor", + "type": "address" + }, + { + "internalType": "bytes", + "name": "message", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "extraData", + "type": "bytes" + } + ], + "internalType": "struct InboundPacket[]", + "name": "_packets", + "type": "tuple[]" + } + ], + "name": "lzReceiveAndRevert", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint32", + "name": "srcEid", + "type": "uint32" + }, + { + "internalType": "bytes32", + "name": "sender", + "type": "bytes32" + }, + { + "internalType": "uint64", + "name": "nonce", + "type": "uint64" + } + ], + "internalType": "struct Origin", + "name": "_origin", + "type": "tuple" + }, + { + "internalType": "bytes32", + "name": "_guid", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "_message", + "type": "bytes" + }, + { + "internalType": "address", + "name": "_executor", + "type": "address" + }, + { + "internalType": "bytes", + "name": "_extraData", + "type": "bytes" + } + ], + "name": "lzReceiveSimulate", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "msgInspector", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + }, + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "nextNonce", + "outputs": [ + { + "internalType": "uint64", + "name": "nonce", + "type": "uint64" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "oApp", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "oAppVersion", + "outputs": [ + { + "internalType": "uint64", + "name": "senderVersion", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "receiverVersion", + "type": "uint64" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "oftVersion", + "outputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + }, + { + "internalType": "uint64", + "name": "version", + "type": "uint64" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "eid", + "type": "uint32" + } + ], + "name": "peers", + "outputs": [ + { + "internalType": "bytes32", + "name": "peer", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "preCrime", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint32", + "name": "dstEid", + "type": "uint32" + }, + { + "internalType": "bytes32", + "name": "to", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "amountLD", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minAmountLD", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "extraOptions", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "composeMsg", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "oftCmd", + "type": "bytes" + } + ], + "internalType": "struct SendParam", + "name": "_sendParam", + "type": "tuple" + } + ], + "name": "quoteOFT", + "outputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "minAmountLD", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxAmountLD", + "type": "uint256" + } + ], + "internalType": "struct OFTLimit", + "name": "oftLimit", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "int256", + "name": "feeAmountLD", + "type": "int256" + }, + { + "internalType": "string", + "name": "description", + "type": "string" + } + ], + "internalType": "struct OFTFeeDetail[]", + "name": "oftFeeDetails", + "type": "tuple[]" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "amountSentLD", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountReceivedLD", + "type": "uint256" + } + ], + "internalType": "struct OFTReceipt", + "name": "oftReceipt", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint32", + "name": "dstEid", + "type": "uint32" + }, + { + "internalType": "bytes32", + "name": "to", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "amountLD", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minAmountLD", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "extraOptions", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "composeMsg", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "oftCmd", + "type": "bytes" + } + ], + "internalType": "struct SendParam", + "name": "_sendParam", + "type": "tuple" + }, + { + "internalType": "bool", + "name": "_payInLzToken", + "type": "bool" + } + ], + "name": "quoteSend", + "outputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "nativeFee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lzTokenFee", + "type": "uint256" + } + ], + "internalType": "struct MessagingFee", + "name": "msgFee", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint32", + "name": "dstEid", + "type": "uint32" + }, + { + "internalType": "bytes32", + "name": "to", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "amountLD", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minAmountLD", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "extraOptions", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "composeMsg", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "oftCmd", + "type": "bytes" + } + ], + "internalType": "struct SendParam", + "name": "_sendParam", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "nativeFee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lzTokenFee", + "type": "uint256" + } + ], + "internalType": "struct MessagingFee", + "name": "_fee", + "type": "tuple" + }, + { + "internalType": "address", + "name": "_refundAddress", + "type": "address" + } + ], + "name": "send", + "outputs": [ + { + "components": [ + { + "internalType": "bytes32", + "name": "guid", + "type": "bytes32" + }, + { + "internalType": "uint64", + "name": "nonce", + "type": "uint64" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "nativeFee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lzTokenFee", + "type": "uint256" + } + ], + "internalType": "struct MessagingFee", + "name": "fee", + "type": "tuple" + } + ], + "internalType": "struct MessagingReceipt", + "name": "msgReceipt", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "amountSentLD", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountReceivedLD", + "type": "uint256" + } + ], + "internalType": "struct OFTReceipt", + "name": "oftReceipt", + "type": "tuple" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_delegate", + "type": "address" + } + ], + "name": "setDelegate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "staking", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "auction", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "gnosis", + "type": "uint256" + } + ], + "internalType": "struct ITempleGold.DistributionParams", + "name": "_params", + "type": "tuple" + } + ], + "name": "setDistributionParams", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint32", + "name": "eid", + "type": "uint32" + }, + { + "internalType": "uint16", + "name": "msgType", + "type": "uint16" + }, + { + "internalType": "bytes", + "name": "options", + "type": "bytes" + } + ], + "internalType": "struct EnforcedOptionParam[]", + "name": "_enforcedOptions", + "type": "tuple[]" + } + ], + "name": "setEnforcedOptions", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_msgInspector", + "type": "address" + } + ], + "name": "setMsgInspector", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "_eid", + "type": "uint32" + }, + { + "internalType": "bytes32", + "name": "_peer", + "type": "bytes32" + } + ], + "name": "setPeer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_preCrime", + "type": "address" + } + ], + "name": "setPreCrime", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_auction", + "type": "address" + } + ], + "name": "setStableGoldAuction", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_staking", + "type": "address" + } + ], + "name": "setStaking", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_gnosis", + "type": "address" + } + ], + "name": "setTeamGnosis", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint128", + "name": "value", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "weekMultiplier", + "type": "uint128" + } + ], + "internalType": "struct ITempleGold.VestingFactor", + "name": "_factor", + "type": "tuple" + } + ], + "name": "setVestingFactor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "sharedDecimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "staking", + "outputs": [ + { + "internalType": "contract ITempleGoldStaking", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "teamGnosis", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "token", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalDistributed", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "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": "value", + "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" + } + ], + "bytecode": "0x61010060405234801561001157600080fd5b5060405161571738038061571783398101604081905261003091610326565b608081015160a08201516020830151835183836012848481818181806001600160a01b03811661007a57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b610083816101ab565b506001600160a01b0380831660805281166100b157604051632d618d8160e21b815260040160405180910390fd5b60805160405163ca5eb5e160e01b81526001600160a01b0383811660048301529091169063ca5eb5e190602401600060405180830381600087803b1580156100f857600080fd5b505af115801561010c573d6000803e3d6000fd5b50505050505050506101226101fb60201b60201c565b60ff168360ff161015610148576040516301e9714b60e41b815260040160405180910390fd5b61015360068461041a565b61015e90600a610520565b60a0525060089150610172905083826105bf565b50600961017f82826105bf565b50505060408501516001600160801b0390811660c05260609095015190941660e0525061067d92505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600690565b634e487b7160e01b600052604160045260246000fd5b60405160c081016001600160401b038111828210171561023857610238610200565b60405290565b604051601f8201601f191681016001600160401b038111828210171561026657610266610200565b604052919050565b80516001600160a01b038116811461028557600080fd5b919050565b80516001600160801b038116811461028557600080fd5b600082601f8301126102b257600080fd5b81516001600160401b038111156102cb576102cb610200565b6102de601f8201601f191660200161023e565b8181528460208386010111156102f357600080fd5b60005b82811015610312576020818601810151838301820152016102f6565b506000918101602001919091529392505050565b60006020828403121561033857600080fd5b81516001600160401b0381111561034e57600080fd5b820160c0818503121561036057600080fd5b610368610216565b6103718261026e565b815261037f6020830161026e565b60208201526103906040830161028a565b60408201526103a16060830161028a565b606082015260808201516001600160401b038111156103bf57600080fd5b6103cb868285016102a1565b60808301525060a08201516001600160401b038111156103ea57600080fd5b6103f6868285016102a1565b60a083015250949350505050565b634e487b7160e01b600052601160045260246000fd5b60ff828116828216039081111561043357610433610404565b92915050565b6001815b60018411156104745780850481111561045857610458610404565b600184161561046657908102905b60019390931c92800261043d565b935093915050565b60008261048b57506001610433565b8161049857506000610433565b81600181146104ae57600281146104b8576104d4565b6001915050610433565b60ff8411156104c9576104c9610404565b50506001821b610433565b5060208310610133831016604e8410600b84101617156104f7575081810a610433565b6105046000198484610439565b806000190482111561051857610518610404565b029392505050565b600061052f60ff84168361047c565b9392505050565b600181811c9082168061054a57607f821691505b60208210810361056a57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156105ba57806000526020600020601f840160051c810160208510156105975750805b601f840160051c820191505b818110156105b757600081556001016105a3565b50505b505050565b81516001600160401b038111156105d8576105d8610200565b6105ec816105e68454610536565b84610570565b6020601f82116001811461062057600083156106085750848201515b600019600385901b1c1916600184901b1784556105b7565b600084815260208120601f198516915b828110156106505787850151825560209485019460019092019101610630565b508482101561066e5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b60805160a05160c05160e051614ff861071f6000396000611e01015260008181610ebb01528181611116015281816112ba015281816115c0015281816116f30152818161183501526120940152600081816109b10152818161332e0152818161343b01526135a301526000818161072501528181610fe90152818161202b01528181612d0a015281816130e60152818161369f01526137980152614ff86000f3fe6080604052600436106103c35760003560e01c80638da5cb5b116101f2578063b98bd0701161010d578063d4243885116100a0578063efca2eed1161006f578063efca2eed14610ce6578063f2fde38b14610cfb578063fc0c546a14610689578063ff7bd03d14610d1b57600080fd5b8063d424388514610be8578063d677947e14610c08578063dd62ed3e14610c1d578063e71cc65c14610c7057600080fd5b8063c7c7f5b3116100dc578063c7c7f5b314610b74578063ca5eb5e114610b95578063cb5cf37014610bb5578063d045a0dc14610bd557600080fd5b8063b98bd07014610af4578063bb0b6a5314610b14578063bc70b35414610b41578063bd815db014610b6157600080fd5b80639f335d9a11610185578063a9059cbb11610154578063a9059cbb14610a5a578063b731ea0a14610a7a578063b7de9ad614610aa7578063b918161114610ac457600080fd5b80639f335d9a146109f35780639f68b96414610a11578063a1b85eba14610a25578063a8995deb14610a4557600080fd5b80639358928b116101c15780639358928b1461097557806395d89b411461098a578063963efcaa1461099f5780639dcb114c146109d357600080fd5b80638da5cb5b146108c05780638e80ff5d146108eb5780638f2419d3146109355780638ff390991461095557600080fd5b806342966c68116102e25780637027ecfb116102755780637d25a05e116102445780637d25a05e146108235780637d9f6db51461085f57806382413eac1461088c578063857749b0146108ac57600080fd5b80637027ecfb1461076757806370a082311461079e578063715018a6146107e15780637a962f4c146107f657600080fd5b80635a0dfe4d116102b15780635a0dfe4d146106bc5780635cbeb13f146106f35780635e280f11146107135780636fc1b31e1461074757600080fd5b806342966c681461063c5780634cf088d91461065c57806352ae2879146106895780635535d4611461069c57600080fd5b806317442b701161035a578063246080271161032957806324608027146105ad578063313ce567146105cd5780633400288b146105ef5780633b6f743b1461060f57600080fd5b806317442b701461053757806318160ddd146105595780631f5e13341461057857806323b872dd1461058d57600080fd5b80631249c58b116103965780631249c58b146104a457806313137d65146104bb578063134d4f25146104ce578063156a0d0f146104f657600080fd5b806306fdde03146103c8578063095ea7b3146103f35780630d35b41514610423578063111ecdad14610452575b600080fd5b3480156103d457600080fd5b506103dd610d3b565b6040516103ea9190613d8f565b60405180910390f35b3480156103ff57600080fd5b5061041361040e366004613dc4565b610dcd565b60405190151581526020016103ea565b34801561042f57600080fd5b5061044361043e366004613e08565b610de7565b6040516103ea93929190613e3d565b34801561045e57600080fd5b5060045461047f9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016103ea565b3480156104b057600080fd5b506104b9610eb9565b005b6104b96104c9366004613f53565b610fe7565b3480156104da57600080fd5b506104e3600281565b60405161ffff90911681526020016103ea565b34801561050257600080fd5b50604080517f02e49c2c00000000000000000000000000000000000000000000000000000000815260016020820152016103ea565b34801561054357600080fd5b50604080516001815260026020820152016103ea565b34801561056557600080fd5b506007545b6040519081526020016103ea565b34801561058457600080fd5b506104e3600181565b34801561059957600080fd5b506104136105a8366004613ff6565b6110e6565b3480156105b957600080fd5b506104b96105c8366004614037565b61110c565b3480156105d957600080fd5b5060125b60405160ff90911681526020016103ea565b3480156105fb57600080fd5b506104b961060a36600461406c565b61123b565b34801561061b57600080fd5b5061062f61062a366004614096565b611251565b6040516103ea91906140e8565b34801561064857600080fd5b506104b96106573660046140ff565b6112b8565b34801561066857600080fd5b50600a5461047f9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561069557600080fd5b503061047f565b3480156106a857600080fd5b506103dd6106b736600461412a565b61133a565b3480156106c857600080fd5b506104136106d736600461406c565b63ffffffff919091166000908152600160205260409020541490565b3480156106ff57600080fd5b506104b961070e36600461415d565b6113df565b34801561071f57600080fd5b5061047f7f000000000000000000000000000000000000000000000000000000000000000081565b34801561075357600080fd5b506104b961076236600461418b565b6114be565b34801561077357600080fd5b5061077c611539565b60408051825181526020808401519082015291810151908201526060016103ea565b3480156107aa57600080fd5b5061056a6107b936600461418b565b73ffffffffffffffffffffffffffffffffffffffff1660009081526005602052604090205490565b3480156107ed57600080fd5b506104b9611582565b34801561080257600080fd5b50600c5461047f9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561082f57600080fd5b5061084661083e36600461406c565b600092915050565b60405167ffffffffffffffff90911681526020016103ea565b34801561086b57600080fd5b50600b5461047f9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561089857600080fd5b506104136108a73660046141a8565b611594565b3480156108b857600080fd5b5060066105dd565b3480156108cc57600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff1661047f565b3480156108f757600080fd5b50600c546109209074010000000000000000000000000000000000000000900463ffffffff1681565b60405163ffffffff90911681526020016103ea565b34801561094157600080fd5b506104b961095036600461418b565b6115b6565b34801561096157600080fd5b506104b961097036600461418b565b6116e9565b34801561098157600080fd5b50600f5461056a565b34801561099657600080fd5b506103dd61181c565b3480156109ab57600080fd5b5061056a7f000000000000000000000000000000000000000000000000000000000000000081565b3480156109df57600080fd5b5061056a6b033b2e3c9fd0803ce800000081565b3480156109ff57600080fd5b5061056a69021e19e0c9bab240000081565b348015610a1d57600080fd5b506000610413565b348015610a3157600080fd5b506104b9610a4036600461418b565b61182b565b348015610a5157600080fd5b5061056a61195e565b348015610a6657600080fd5b50610413610a75366004613dc4565b6119ae565b348015610a8657600080fd5b5060025461047f9073ffffffffffffffffffffffffffffffffffffffff1681565b348015610ab357600080fd5b5061056a68056bc75e2d6310000081565b348015610ad057600080fd5b50610413610adf36600461418b565b60106020526000908152604090205460ff1681565b348015610b0057600080fd5b506104b9610b0f366004614254565b6119bc565b348015610b2057600080fd5b5061056a610b2f366004614296565b60016020526000908152604090205481565b348015610b4d57600080fd5b506103dd610b5c3660046142b1565b6119d6565b6104b9610b6f366004614254565b611b97565b610b87610b82366004614324565b611d65565b6040516103ea929190614387565b348015610ba157600080fd5b506104b9610bb036600461418b565b611fde565b348015610bc157600080fd5b506104b9610bd03660046143da565b61208a565b6104b9610be3366004613f53565b612271565b348015610bf457600080fd5b506104b9610c0336600461418b565b6122b9565b348015610c1457600080fd5b50610413612334565b348015610c2957600080fd5b5061056a610c383660046143f6565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260066020908152604080832093909416825291909152205490565b348015610c7c57600080fd5b506040805180820182526000808252602091820152815180830183526014546fffffffffffffffffffffffffffffffff80821680845270010000000000000000000000000000000090920481169284019283528451918252915190911691810191909152016103ea565b348015610cf257600080fd5b50600d5461056a565b348015610d0757600080fd5b506104b9610d1636600461418b565b61237e565b348015610d2757600080fd5b50610413610d36366004614037565b6123df565b606060088054610d4a90614424565b80601f0160208091040260200160405190810160405280929190818152602001828054610d7690614424565b8015610dc35780601f10610d9857610100808354040283529160200191610dc3565b820191906000526020600020905b815481529060010190602001808311610da657829003601f168201915b5050505050905090565b600033610ddb818585612415565b60019150505b92915050565b60408051808201909152600080825260208201526060610e1a604051806040016040528060008152602001600081525090565b604080518082018252600080825267ffffffffffffffff602080840182905284518381529081019094529195509182610e76565b604080518082019091526000815260606020820152815260200190600190039081610e4e5790505b509350600080610e9b604089013560608a0135610e9660208c018c614296565b612422565b60408051808201909152918252602082015296989597505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff164614610f24576040517f10dfc03300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080518082019091526014546fffffffffffffffffffffffffffffffff808216808452700100000000000000000000000000000000909204166020830152601190600003610f71575050565b6000610f7c8361247f565b9050610f8781612553565b610f9057505050565b600c80547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000004263ffffffff1602179055610fe1828261259b565b5050505b565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16331461105d576040517f91ac5e4f0000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b6020870180359061107790611072908a614296565b6127f3565b146110ce576110896020880188614296565b6040517fc26bebcc00000000000000000000000000000000000000000000000000000000815263ffffffff909116600482015260208801356024820152604401611054565b6110dd87878787878787612848565b50505050505050565b6000336110f485828561297b565b6110ff858585612a4a565b60019150505b9392505050565b611114612af5565b7f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff16461461117f576040517f10dfc03300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b68056bc75e2d63100000602082013561119d604084013584356144cf565b6111a791906144cf565b146111de576040517fd092e7b700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356011819055602080830135601281905560408085013560138190558151948552928401919091528201527f3b4270ae8d61147b12973c792d879467685ec408647743ce9b9afd6a0763289c906060015b60405180910390a150565b611243612af5565b61124d8282612b48565b5050565b6040805180820190915260008082526020820152600061128160408501356060860135610e966020880188614296565b9150506000806112918684612b9d565b90925090506112ae6112a66020880188614296565b838388612cf4565b9695505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff164614611323576040517f10dfc03300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61132d3382612de2565b6113373382612e3e565b50565b60036020908152600092835260408084209091529082529020805461135e90614424565b80601f016020809104026020016040519081016040528092919081815260200182805461138a90614424565b80156113d75780601f106113ac576101008083540402835291602001916113d7565b820191906000526020600020905b8154815290600101906020018083116113ba57829003601f168201915b505050505081565b6113e7612af5565b73ffffffffffffffffffffffffffffffffffffffff8216611434576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660008181526010602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685151590811790915591519182527f8ef11fcc7ba2acd30d3c67a4ed9b0261e93c5bb66d31d5dd4dff82c83d860bda910160405180910390a25050565b6114c6612af5565b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527ff0be4f1e87349231d80c36b33f9e8639658eeaf474014dee15a3e6a4d441419790602001611230565b61155d60405180606001604052806000815260200160008152602001600081525090565b5060408051606081018252601154815260125460208201526013549181019190915290565b61158a612af5565b610fe56000612ecc565b73ffffffffffffffffffffffffffffffffffffffff811630145b949350505050565b6115be612af5565b7f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff164614611629576040517f10dfc03300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116611676576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527ff782216d1b02bb841c11576e3acbe7ef0dcc261caed6eee061871387f3cfd18190602001611230565b6116f1612af5565b7f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff16461461175c576040517f10dfc03300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166117a9576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527ff520447191196b125f76f7110397fdf32b1b9cefb7dec323bd3b998022ac233890602001611230565b606060098054610d4a90614424565b611833612af5565b7f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff16461461189e576040517f10dfc03300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166118eb576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f0345019a4b882f65ce6451a4c87d09510f8606cb6eb18799aba7018d65ebada590602001611230565b604080518082019091526014546fffffffffffffffffffffffffffffffff80821683527001000000000000000000000000000000009091041660208201526000906119a88161247f565b91505090565b600033610ddb818585612a4a565b6119c4612af5565b61124d6119d182846145c3565b612f41565b63ffffffff8416600090815260036020908152604080832061ffff87168452909152812080546060929190611a0a90614424565b80601f0160208091040260200160405190810160405280929190818152602001828054611a3690614424565b8015611a835780601f10611a5857610100808354040283529160200191611a83565b820191906000526020600020905b815481529060010190602001808311611a6657829003601f168201915b505050505090508051600003611ad35783838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509294506115ae9350505050565b6000839003611ae35790506115ae565b60028310611b6157611b2a84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061304892505050565b80611b3884600281886146ef565b604051602001611b4a93929190614719565b6040516020818303038152906040529150506115ae565b83836040517f9a6d49cd00000000000000000000000000000000000000000000000000000000815260040161105492919061478a565b60005b81811015611ca05736838383818110611bb557611bb561479e565b9050602002810190611bc791906147cd565b9050611bfa611bd96020830183614296565b602083013563ffffffff919091166000908152600160205260409020541490565b611c045750611c98565b3063d045a0dc60c08301358360a0810135611c2361010083018361480b565b611c34610100890160e08a0161418b565b611c426101208a018a61480b565b6040518963ffffffff1660e01b8152600401611c649796959493929190614886565b6000604051808303818588803b158015611c7d57600080fd5b505af1158015611c91573d6000803e3d6000fd5b5050505050505b600101611b9a565b503373ffffffffffffffffffffffffffffffffffffffff16638e9e70996040518163ffffffff1660e01b8152600401600060405180830381865afa158015611cec573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611d32919081019061491a565b6040517f8351eea70000000000000000000000000000000000000000000000000000000081526004016110549190613d8f565b611d6d613cd9565b60408051808201909152600080825260208201526000611d9060a087018761480b565b90501115611dca576040517f9cad625100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602085013573ffffffffffffffffffffffffffffffffffffffff8116158015611e3757506fffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016611e2e6020880188614296565b63ffffffff1614155b15611e6e576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff811615801590611ea957503373ffffffffffffffffffffffffffffffffffffffff821614155b15611efe576040517fd1d0c78400000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff82166024820152604401611054565b600080611f213360408a013560608b0135611f1c60208d018d614296565b61308d565b91509150600080611f328a84612b9d565b9092509050611f5e611f4760208c018c614296565b8383611f58368e90038e018e614988565b8c6130b3565b60408051808201909152858152602080820186905282519299509097503391907f85496b760a4b7f8d66384b9df21b381f5d1b1e79f229a47aaf4c232edc2fe59a90611fac908e018e614296565b6040805163ffffffff909216825260208201899052810187905260600160405180910390a35050505050935093915050565b611fe6612af5565b6040517fca5eb5e100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063ca5eb5e190602401600060405180830381600087803b15801561206f57600080fd5b505af1158015612083573d6000803e3d6000fd5b5050505050565b612092612af5565b7f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff1646146120fd576040517f10dfc03300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61210a60208201826149d9565b6fffffffffffffffffffffffffffffffff161580612147575061213360408201602083016149d9565b6fffffffffffffffffffffffffffffffff16155b1561217e576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600c5474010000000000000000000000000000000000000000900463ffffffff166000036121f257600c80547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000004263ffffffff16021790556121fa565b6121fa610eb9565b80601461220782826149f6565b507fb3cfdbde4244db49a852e823f0cd30cbb8d07432d26b944547cfe887f09e3fb2905061223860208301836149d9565b61224860408401602085016149d9565b604080516fffffffffffffffffffffffffffffffff938416815292909116602083015201611230565b3330146122aa576040517f14d4a4e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110dd878787878787876110ce565b6122c1612af5565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd48d879cef83a1c0bdda516f27b13ddb1b3f8bbac1c9e1511bb2a659c242776090602001611230565b604080518082019091526014546fffffffffffffffffffffffffffffffff80821683527001000000000000000000000000000000009091041660208201526000906119a8816131cb565b612386612af5565b73ffffffffffffffffffffffffffffffffffffffff81166123d6576040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260006004820152602401611054565b61133781612ecc565b60006020820180359060019083906123f79086614296565b63ffffffff1681526020810191909152604001600020541492915050565b610fe183838360016131e2565b60008061242e8561332a565b915081905083811015612477576040517f71c4efed0000000000000000000000000000000000000000000000000000000081526004810182905260248101859052604401611054565b935093915050565b600c5460009074010000000000000000000000000000000000000000900463ffffffff168082036124b35750600092915050565b600f5460208401516fffffffffffffffffffffffffffffffff166125116124e063ffffffff851642614a77565b6124f6846b033b2e3c9fd0803ce8000000614a77565b87516fffffffffffffffffffffffffffffffff166000613361565b61251b9190614ab9565b92506b033b2e3c9fd0803ce800000061253484836144cf565b111561254c57806b033b2e3c9fd0803ce80000000392505b5050919050565b6000811580159061257c57506b033b2e3c9fd0803ce800000082600f5461257a91906144cf565b145b6125935769021e19e0c9bab2400000821015610de1565b600192915050565b60006125b783600001548368056bc75e2d631000006000613361565b9050801561266757600a546125e29073ffffffffffffffffffffffffffffffffffffffff168261339d565b600a546040517f654f2fc80000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff9091169063654f2fc890602401600060405180830381600087803b15801561264e57600080fd5b505af1158015612662573d6000803e3d6000fd5b505050505b600061268384600101548468056bc75e2d631000006000613361565b9050801561273357600b546126ae9073ffffffffffffffffffffffffffffffffffffffff168261339d565b600b546040517f654f2fc80000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff9091169063654f2fc890602401600060405180830381600087803b15801561271a57600080fd5b505af115801561272e573d6000803e3d6000fd5b505050505b6000816127408486614a77565b61274a9190614a77565b9050801561277557600c546127759073ffffffffffffffffffffffffffffffffffffffff168261339d565b83600d600082825461278791906144cf565b9250508190555083600f60008282546127a091906144cf565b909155505060408051848152602081018490529081018290524260608201527ff7576d8c2653e9d07af5ef229acf59b339e327d4e0eaddb4a96615534cf148f89060800160405180910390a15050505050565b63ffffffff811660009081526001602052604081205480610de1576040517ff6ff4fb700000000000000000000000000000000000000000000000000000000815263ffffffff84166004820152602401611054565b6028841115612883576040517f9cad625100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061289561289287876133f9565b90565b73ffffffffffffffffffffffffffffffffffffffff16036128d4576128cf60208801356128ca6128c58888613411565b613434565b612e3e565b6110dd565b60006128e361289287876133f9565b9050600061290a826128f86128c58a8a613411565b61290560208d018d614296565b61346a565b905073ffffffffffffffffffffffffffffffffffffffff8216887fefed6d3500546b29533b128a29e3a94d70788727f0507505ac12eaf2e578fd9c61295260208d018d614296565b6040805163ffffffff9092168252602082018690520160405180910390a3505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600660209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114612a445781811015612a35576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024810182905260448101839052606401611054565b612a44848484840360006131e2565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316612a9a576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401611054565b73ffffffffffffffffffffffffffffffffffffffff8216612aea576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401611054565b610fe183838361349f565b60005473ffffffffffffffffffffffffffffffffffffffff163314610fe5576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401611054565b63ffffffff8216600081815260016020908152604091829020849055815192835282018390527f238399d427b947898edb290f5ff0f9109849b1c3ba196a42e35f00c50a54b98b910160405180910390a15050565b6060806000612bfa8560200135612bb38661359c565b612bc060a089018961480b565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506135c892505050565b9093509050600081612c0d576001612c10565b60025b9050612c30612c226020880188614296565b82610b5c60808a018a61480b565b60045490935073ffffffffffffffffffffffffffffffffffffffff1615612ceb57600480546040517f043a78eb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169163043a78eb91612ca8918891889101614af4565b602060405180830381865afa158015612cc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ce99190614b19565b505b50509250929050565b60408051808201909152600080825260208201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ddc28c586040518060a001604052808863ffffffff168152602001612d64896127f3565b8152602001878152602001868152602001851515815250306040518363ffffffff1660e01b8152600401612d99929190614b36565b6040805180830381865afa158015612db5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dd99190614c0b565b95945050505050565b73ffffffffffffffffffffffffffffffffffffffff8216612e32576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401611054565b61124d8260008361349f565b600081600e54612e4e91906144cf565b600e8190559050600082600f54612e659190614a77565b600f819055604080518581526020810183905290810184905290915073ffffffffffffffffffffffffffffffffffffffff8516907f87dad80f3ba50e9e7ca4442fee6772eb468383860cc7e9d493b2b6bc33da7d199060600160405180910390a250505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60005b815181101561301857612f73828281518110612f6257612f6261479e565b602002602001015160400151613048565b818181518110612f8557612f8561479e565b60200260200101516040015160036000848481518110612fa757612fa761479e565b60200260200101516000015163ffffffff1663ffffffff1681526020019081526020016000206000848481518110612fe157612fe161479e565b60200260200101516020015161ffff1661ffff168152602001908152602001600020908161300f9190614c6e565b50600101612f44565b507fbe4864a8e820971c0247f5992e2da559595f7bf076a21cb5928d443d2a13b674816040516112309190614d87565b600281015161ffff811660031461124d57816040517f9a6d49cd0000000000000000000000000000000000000000000000000000000081526004016110549190613d8f565b60008061309b858585612422565b90925090506130aa8683612de2565b94509492505050565b6130bb613cd9565b60006130ca846000015161365a565b6020850151909150156130e4576130e4846020015161369b565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632637a450826040518060a001604052808b63ffffffff1681526020016131418c6127f3565b81526020018a815260200189815260200160008960200151111515815250866040518463ffffffff1660e01b815260040161317d929190614b36565b60806040518083038185885af115801561319b573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906131c09190614e35565b979650505050505050565b6000806131d78361247f565b905061110581612553565b73ffffffffffffffffffffffffffffffffffffffff8416613232576040517fe602df0500000000000000000000000000000000000000000000000000000000815260006004820152602401611054565b73ffffffffffffffffffffffffffffffffffffffff8316613282576040517f94280d6200000000000000000000000000000000000000000000000000000000815260006004820152602401611054565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526006602090815260408083209387168352929052208290558015612a44578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161331c91815260200190565b60405180910390a350505050565b60007f00000000000000000000000000000000000000000000000000000000000000006133578184614ab9565b610de19190614e81565b600061336e8585856137bd565b905081801561338d57506000838061338857613388614a8a565b858709115b156115ae57612dd96001826144cf565b73ffffffffffffffffffffffffffffffffffffffff82166133ed576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401611054565b61124d6000838361349f565b600061340860208284866146ef565b61110591614e98565b60006134216028602084866146ef565b61342a91614ed4565b60c01c9392505050565b6000610de17f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff8416614e81565b600073ffffffffffffffffffffffffffffffffffffffff841661348d5761dead93505b613497848461339d565b509092915050565b73ffffffffffffffffffffffffffffffffffffffff8316158015906134d9575073ffffffffffffffffffffffffffffffffffffffff821615155b156135915773ffffffffffffffffffffffffffffffffffffffff831660009081526010602052604090205460ff1615801561353a575073ffffffffffffffffffffffffffffffffffffffff821660009081526010602052604090205460ff16155b15613591576040517fd1d0c78400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808516600483015283166024820152604401611054565b610fe18383836138c8565b6000610de17f000000000000000000000000000000000000000000000000000000000000000083614ab9565b805160609015158061362957848460405160200161361592919091825260c01b7fffffffffffffffff00000000000000000000000000000000000000000000000016602082015260280190565b604051602081830303815290604052613650565b848433856040516020016136409493929190614f3a565b6040516020818303038152906040525b9150935093915050565b6000813414613697576040517f9f704120000000000000000000000000000000000000000000000000000000008152346004820152602401611054565b5090565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e4fe1d946040518163ffffffff1660e01b8152600401602060405180830381865afa158015613708573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061372c9190614f93565b905073ffffffffffffffffffffffffffffffffffffffff811661377b576040517f5373352a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61124d73ffffffffffffffffffffffffffffffffffffffff8216337f000000000000000000000000000000000000000000000000000000000000000085613a73565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff858709858702925082811083820303915050806000036138155783828161380b5761380b614a8a565b0492505050611105565b83811061385f576040517f63a05778000000000000000000000000000000000000000000000000000000008152600481018790526024810186905260448101859052606401611054565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b73ffffffffffffffffffffffffffffffffffffffff83166139005780600760008282546138f591906144cf565b909155506139b29050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526005602052604090205481811015613986576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024810182905260448101839052606401611054565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff82166139db57600780548290039055613a07565b73ffffffffffffffffffffffffffffffffffffffff821660009081526005602052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613a6691815260200190565b60405180910390a3505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8581166024830152848116604483015260648083018590528351808403909101815260849092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052612a4491869190600090613b1490841683613b88565b90508051600014158015613b39575080806020019051810190613b379190614b19565b155b15610fe1576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401611054565b606061110583836000846000808573ffffffffffffffffffffffffffffffffffffffff168486604051613bbb9190614fb0565b60006040518083038185875af1925050503d8060008114613bf8576040519150601f19603f3d011682016040523d82523d6000602084013e613bfd565b606091505b50915091506112ae868383606082613c1d57613c1882613c97565b611105565b8151158015613c41575073ffffffffffffffffffffffffffffffffffffffff84163b155b15613c90576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401611054565b5080611105565b805115613ca75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604051806060016040528060008019168152602001600067ffffffffffffffff168152602001613d1c604051806040016040528060008152602001600081525090565b905290565b60005b83811015613d3c578181015183820152602001613d24565b50506000910152565b60008151808452613d5d816020860160208601613d21565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006111056020830184613d45565b73ffffffffffffffffffffffffffffffffffffffff8116811461133757600080fd5b60008060408385031215613dd757600080fd5b8235613de281613da2565b946020939093013593505050565b600060e08284031215613e0257600080fd5b50919050565b600060208284031215613e1a57600080fd5b813567ffffffffffffffff811115613e3157600080fd5b6115ae84828501613df0565b8351815260208085015190820152600060a0820160a0604084015280855180835260c08501915060c08160051b86010192506020870160005b82811015613edc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff408786030184528151805186526020810151905060406020870152613ec66040870182613d45565b9550506020938401939190910190600101613e76565b50508551606086015250506020840151608084015290506115ae565b600060608284031215613e0257600080fd5b60008083601f840112613f1c57600080fd5b50813567ffffffffffffffff811115613f3457600080fd5b602083019150836020828501011115613f4c57600080fd5b9250929050565b600080600080600080600060e0888a031215613f6e57600080fd5b613f788989613ef8565b965060608801359550608088013567ffffffffffffffff811115613f9b57600080fd5b613fa78a828b01613f0a565b90965094505060a0880135613fbb81613da2565b925060c088013567ffffffffffffffff811115613fd757600080fd5b613fe38a828b01613f0a565b989b979a50959850939692959293505050565b60008060006060848603121561400b57600080fd5b833561401681613da2565b9250602084013561402681613da2565b929592945050506040919091013590565b60006060828403121561404957600080fd5b6111058383613ef8565b803563ffffffff8116811461406757600080fd5b919050565b6000806040838503121561407f57600080fd5b613de283614053565b801515811461133757600080fd5b600080604083850312156140a957600080fd5b823567ffffffffffffffff8111156140c057600080fd5b6140cc85828601613df0565b92505060208301356140dd81614088565b809150509250929050565b815181526020808301519082015260408101610de1565b60006020828403121561411157600080fd5b5035919050565b803561ffff8116811461406757600080fd5b6000806040838503121561413d57600080fd5b61414683614053565b915061415460208401614118565b90509250929050565b6000806040838503121561417057600080fd5b823561417b81613da2565b915060208301356140dd81614088565b60006020828403121561419d57600080fd5b813561110581613da2565b60008060008060a085870312156141be57600080fd5b6141c88686613ef8565b9350606085013567ffffffffffffffff8111156141e457600080fd5b6141f087828801613f0a565b909450925050608085013561420481613da2565b939692955090935050565b60008083601f84011261422157600080fd5b50813567ffffffffffffffff81111561423957600080fd5b6020830191508360208260051b8501011115613f4c57600080fd5b6000806020838503121561426757600080fd5b823567ffffffffffffffff81111561427e57600080fd5b61428a8582860161420f565b90969095509350505050565b6000602082840312156142a857600080fd5b61110582614053565b600080600080606085870312156142c757600080fd5b6142d085614053565b93506142de60208601614118565b9250604085013567ffffffffffffffff8111156142fa57600080fd5b61430687828801613f0a565b95989497509550505050565b600060408284031215613e0257600080fd5b60008060006080848603121561433957600080fd5b833567ffffffffffffffff81111561435057600080fd5b61435c86828701613df0565b93505061436c8560208601614312565b9150606084013561437c81613da2565b809150509250925092565b600060c0820190508351825267ffffffffffffffff602085015116602083015260408401516143c3604084018280518252602090810151910152565b5082516080830152602083015160a0830152611105565b6000604082840312156143ec57600080fd5b6111058383614312565b6000806040838503121561440957600080fd5b823561441481613da2565b915060208301356140dd81613da2565b600181811c9082168061443857607f821691505b602082108103613e02577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115610de157610de16144a0565b6040516060810167ffffffffffffffff8111828210171561450557614505614471565b60405290565b6040805190810167ffffffffffffffff8111828210171561450557614505614471565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561457557614575614471565b604052919050565b600067ffffffffffffffff82111561459757614597614471565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600067ffffffffffffffff8311156145dd576145dd614471565b8260051b6145ed6020820161452e565b8481529083019060208101903683111561460657600080fd5b845b838110156146e557803567ffffffffffffffff81111561462757600080fd5b8601606036829003121561463a57600080fd5b6146426144e2565b61464b82614053565b815261465960208301614118565b6020820152604082013567ffffffffffffffff81111561467857600080fd5b919091019036601f83011261468c57600080fd5b813561469f61469a8261457d565b61452e565b8181523660208386010111156146b457600080fd5b8160208501602083013760006020838301015280604084015250508085525050602083019250602081019050614608565b5095945050505050565b600080858511156146ff57600080fd5b8386111561470c57600080fd5b5050820193919092039150565b6000845161472b818460208901613d21565b8201838582376000930192835250909392505050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006115ae602083018486614741565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec183360301811261480157600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261484057600080fd5b83018035915067ffffffffffffffff82111561485b57600080fd5b602001915036819003821315613f4c57600080fd5b67ffffffffffffffff8116811461133757600080fd5b63ffffffff61489489614053565b16815260208881013590820152600060408901356148b181614870565b67ffffffffffffffff811660408401525087606083015260e060808301526148dd60e083018789614741565b73ffffffffffffffffffffffffffffffffffffffff861660a084015282810360c084015261490c818587614741565b9a9950505050505050505050565b60006020828403121561492c57600080fd5b815167ffffffffffffffff81111561494357600080fd5b8201601f8101841361495457600080fd5b805161496261469a8261457d565b81815285602083850101111561497757600080fd5b612dd9826020830160208601613d21565b6000604082840312801561499b57600080fd5b506149a461450b565b823581526020928301359281019290925250919050565b6fffffffffffffffffffffffffffffffff8116811461133757600080fd5b6000602082840312156149eb57600080fd5b8135611105816149bb565b8135614a01816149bb565b6fffffffffffffffffffffffffffffffff81169050807fffffffffffffffffffffffffffffffff000000000000000000000000000000008354161782556020830135614a4c816149bb565b60801b7fffffffffffffffffffffffffffffffff000000000000000000000000000000001617905550565b81810381811115610de157610de16144a0565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082614aef577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b604081526000614b076040830185613d45565b8281036020840152612dd98185613d45565b600060208284031215614b2b57600080fd5b815161110581614088565b6040815263ffffffff8351166040820152602083015160608201526000604084015160a06080840152614b6c60e0840182613d45565b905060608501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08483030160a0850152614ba78282613d45565b60809690960151151560c085015250505073ffffffffffffffffffffffffffffffffffffffff9190911660209091015290565b600060408284031215614bec57600080fd5b614bf461450b565b825181526020928301519281019290925250919050565b600060408284031215614c1d57600080fd5b6111058383614bda565b601f821115610fe157806000526020600020601f840160051c81016020851015614c4e5750805b601f840160051c820191505b818110156120835760008155600101614c5a565b815167ffffffffffffffff811115614c8857614c88614471565b614c9c81614c968454614424565b84614c27565b6020601f821160018114614cee5760008315614cb85750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455612083565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b82811015614d3c5787850151825560209485019460019092019101614d1c565b5084821015614d7857868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015614e29577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815163ffffffff815116865261ffff60208201511660208701526040810151905060606040870152614e136060870182613d45565b9550506020938401939190910190600101614daf565b50929695505050505050565b60006080828403128015614e4857600080fd5b50614e516144e2565b825181526020830151614e6381614870565b6020820152614e758460408501614bda565b60408201529392505050565b8082028115828204841417610de157610de16144a0565b80356020831015610de1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b80357fffffffffffffffff0000000000000000000000000000000000000000000000008116906008841015614f33577fffffffffffffffff000000000000000000000000000000000000000000000000808560080360031b1b82161691505b5092915050565b8481527fffffffffffffffff0000000000000000000000000000000000000000000000008460c01b16602082015282602882015260008251614f83816048850160208701613d21565b9190910160480195945050505050565b600060208284031215614fa557600080fd5b815161110581613da2565b60008251614801818460208701613d2156fea26469706673582212205883a5fd4dd9d6985cad8f2c68c426040cc134676b8a26267c4fc2cdf1a5243d64736f6c634300081c0033", + "deployedBytecode": "0x6080604052600436106103c35760003560e01c80638da5cb5b116101f2578063b98bd0701161010d578063d4243885116100a0578063efca2eed1161006f578063efca2eed14610ce6578063f2fde38b14610cfb578063fc0c546a14610689578063ff7bd03d14610d1b57600080fd5b8063d424388514610be8578063d677947e14610c08578063dd62ed3e14610c1d578063e71cc65c14610c7057600080fd5b8063c7c7f5b3116100dc578063c7c7f5b314610b74578063ca5eb5e114610b95578063cb5cf37014610bb5578063d045a0dc14610bd557600080fd5b8063b98bd07014610af4578063bb0b6a5314610b14578063bc70b35414610b41578063bd815db014610b6157600080fd5b80639f335d9a11610185578063a9059cbb11610154578063a9059cbb14610a5a578063b731ea0a14610a7a578063b7de9ad614610aa7578063b918161114610ac457600080fd5b80639f335d9a146109f35780639f68b96414610a11578063a1b85eba14610a25578063a8995deb14610a4557600080fd5b80639358928b116101c15780639358928b1461097557806395d89b411461098a578063963efcaa1461099f5780639dcb114c146109d357600080fd5b80638da5cb5b146108c05780638e80ff5d146108eb5780638f2419d3146109355780638ff390991461095557600080fd5b806342966c68116102e25780637027ecfb116102755780637d25a05e116102445780637d25a05e146108235780637d9f6db51461085f57806382413eac1461088c578063857749b0146108ac57600080fd5b80637027ecfb1461076757806370a082311461079e578063715018a6146107e15780637a962f4c146107f657600080fd5b80635a0dfe4d116102b15780635a0dfe4d146106bc5780635cbeb13f146106f35780635e280f11146107135780636fc1b31e1461074757600080fd5b806342966c681461063c5780634cf088d91461065c57806352ae2879146106895780635535d4611461069c57600080fd5b806317442b701161035a578063246080271161032957806324608027146105ad578063313ce567146105cd5780633400288b146105ef5780633b6f743b1461060f57600080fd5b806317442b701461053757806318160ddd146105595780631f5e13341461057857806323b872dd1461058d57600080fd5b80631249c58b116103965780631249c58b146104a457806313137d65146104bb578063134d4f25146104ce578063156a0d0f146104f657600080fd5b806306fdde03146103c8578063095ea7b3146103f35780630d35b41514610423578063111ecdad14610452575b600080fd5b3480156103d457600080fd5b506103dd610d3b565b6040516103ea9190613d8f565b60405180910390f35b3480156103ff57600080fd5b5061041361040e366004613dc4565b610dcd565b60405190151581526020016103ea565b34801561042f57600080fd5b5061044361043e366004613e08565b610de7565b6040516103ea93929190613e3d565b34801561045e57600080fd5b5060045461047f9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016103ea565b3480156104b057600080fd5b506104b9610eb9565b005b6104b96104c9366004613f53565b610fe7565b3480156104da57600080fd5b506104e3600281565b60405161ffff90911681526020016103ea565b34801561050257600080fd5b50604080517f02e49c2c00000000000000000000000000000000000000000000000000000000815260016020820152016103ea565b34801561054357600080fd5b50604080516001815260026020820152016103ea565b34801561056557600080fd5b506007545b6040519081526020016103ea565b34801561058457600080fd5b506104e3600181565b34801561059957600080fd5b506104136105a8366004613ff6565b6110e6565b3480156105b957600080fd5b506104b96105c8366004614037565b61110c565b3480156105d957600080fd5b5060125b60405160ff90911681526020016103ea565b3480156105fb57600080fd5b506104b961060a36600461406c565b61123b565b34801561061b57600080fd5b5061062f61062a366004614096565b611251565b6040516103ea91906140e8565b34801561064857600080fd5b506104b96106573660046140ff565b6112b8565b34801561066857600080fd5b50600a5461047f9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561069557600080fd5b503061047f565b3480156106a857600080fd5b506103dd6106b736600461412a565b61133a565b3480156106c857600080fd5b506104136106d736600461406c565b63ffffffff919091166000908152600160205260409020541490565b3480156106ff57600080fd5b506104b961070e36600461415d565b6113df565b34801561071f57600080fd5b5061047f7f000000000000000000000000000000000000000000000000000000000000000081565b34801561075357600080fd5b506104b961076236600461418b565b6114be565b34801561077357600080fd5b5061077c611539565b60408051825181526020808401519082015291810151908201526060016103ea565b3480156107aa57600080fd5b5061056a6107b936600461418b565b73ffffffffffffffffffffffffffffffffffffffff1660009081526005602052604090205490565b3480156107ed57600080fd5b506104b9611582565b34801561080257600080fd5b50600c5461047f9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561082f57600080fd5b5061084661083e36600461406c565b600092915050565b60405167ffffffffffffffff90911681526020016103ea565b34801561086b57600080fd5b50600b5461047f9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561089857600080fd5b506104136108a73660046141a8565b611594565b3480156108b857600080fd5b5060066105dd565b3480156108cc57600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff1661047f565b3480156108f757600080fd5b50600c546109209074010000000000000000000000000000000000000000900463ffffffff1681565b60405163ffffffff90911681526020016103ea565b34801561094157600080fd5b506104b961095036600461418b565b6115b6565b34801561096157600080fd5b506104b961097036600461418b565b6116e9565b34801561098157600080fd5b50600f5461056a565b34801561099657600080fd5b506103dd61181c565b3480156109ab57600080fd5b5061056a7f000000000000000000000000000000000000000000000000000000000000000081565b3480156109df57600080fd5b5061056a6b033b2e3c9fd0803ce800000081565b3480156109ff57600080fd5b5061056a69021e19e0c9bab240000081565b348015610a1d57600080fd5b506000610413565b348015610a3157600080fd5b506104b9610a4036600461418b565b61182b565b348015610a5157600080fd5b5061056a61195e565b348015610a6657600080fd5b50610413610a75366004613dc4565b6119ae565b348015610a8657600080fd5b5060025461047f9073ffffffffffffffffffffffffffffffffffffffff1681565b348015610ab357600080fd5b5061056a68056bc75e2d6310000081565b348015610ad057600080fd5b50610413610adf36600461418b565b60106020526000908152604090205460ff1681565b348015610b0057600080fd5b506104b9610b0f366004614254565b6119bc565b348015610b2057600080fd5b5061056a610b2f366004614296565b60016020526000908152604090205481565b348015610b4d57600080fd5b506103dd610b5c3660046142b1565b6119d6565b6104b9610b6f366004614254565b611b97565b610b87610b82366004614324565b611d65565b6040516103ea929190614387565b348015610ba157600080fd5b506104b9610bb036600461418b565b611fde565b348015610bc157600080fd5b506104b9610bd03660046143da565b61208a565b6104b9610be3366004613f53565b612271565b348015610bf457600080fd5b506104b9610c0336600461418b565b6122b9565b348015610c1457600080fd5b50610413612334565b348015610c2957600080fd5b5061056a610c383660046143f6565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260066020908152604080832093909416825291909152205490565b348015610c7c57600080fd5b506040805180820182526000808252602091820152815180830183526014546fffffffffffffffffffffffffffffffff80821680845270010000000000000000000000000000000090920481169284019283528451918252915190911691810191909152016103ea565b348015610cf257600080fd5b50600d5461056a565b348015610d0757600080fd5b506104b9610d1636600461418b565b61237e565b348015610d2757600080fd5b50610413610d36366004614037565b6123df565b606060088054610d4a90614424565b80601f0160208091040260200160405190810160405280929190818152602001828054610d7690614424565b8015610dc35780601f10610d9857610100808354040283529160200191610dc3565b820191906000526020600020905b815481529060010190602001808311610da657829003601f168201915b5050505050905090565b600033610ddb818585612415565b60019150505b92915050565b60408051808201909152600080825260208201526060610e1a604051806040016040528060008152602001600081525090565b604080518082018252600080825267ffffffffffffffff602080840182905284518381529081019094529195509182610e76565b604080518082019091526000815260606020820152815260200190600190039081610e4e5790505b509350600080610e9b604089013560608a0135610e9660208c018c614296565b612422565b60408051808201909152918252602082015296989597505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff164614610f24576040517f10dfc03300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080518082019091526014546fffffffffffffffffffffffffffffffff808216808452700100000000000000000000000000000000909204166020830152601190600003610f71575050565b6000610f7c8361247f565b9050610f8781612553565b610f9057505050565b600c80547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000004263ffffffff1602179055610fe1828261259b565b5050505b565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16331461105d576040517f91ac5e4f0000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b6020870180359061107790611072908a614296565b6127f3565b146110ce576110896020880188614296565b6040517fc26bebcc00000000000000000000000000000000000000000000000000000000815263ffffffff909116600482015260208801356024820152604401611054565b6110dd87878787878787612848565b50505050505050565b6000336110f485828561297b565b6110ff858585612a4a565b60019150505b9392505050565b611114612af5565b7f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff16461461117f576040517f10dfc03300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b68056bc75e2d63100000602082013561119d604084013584356144cf565b6111a791906144cf565b146111de576040517fd092e7b700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356011819055602080830135601281905560408085013560138190558151948552928401919091528201527f3b4270ae8d61147b12973c792d879467685ec408647743ce9b9afd6a0763289c906060015b60405180910390a150565b611243612af5565b61124d8282612b48565b5050565b6040805180820190915260008082526020820152600061128160408501356060860135610e966020880188614296565b9150506000806112918684612b9d565b90925090506112ae6112a66020880188614296565b838388612cf4565b9695505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff164614611323576040517f10dfc03300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61132d3382612de2565b6113373382612e3e565b50565b60036020908152600092835260408084209091529082529020805461135e90614424565b80601f016020809104026020016040519081016040528092919081815260200182805461138a90614424565b80156113d75780601f106113ac576101008083540402835291602001916113d7565b820191906000526020600020905b8154815290600101906020018083116113ba57829003601f168201915b505050505081565b6113e7612af5565b73ffffffffffffffffffffffffffffffffffffffff8216611434576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660008181526010602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685151590811790915591519182527f8ef11fcc7ba2acd30d3c67a4ed9b0261e93c5bb66d31d5dd4dff82c83d860bda910160405180910390a25050565b6114c6612af5565b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527ff0be4f1e87349231d80c36b33f9e8639658eeaf474014dee15a3e6a4d441419790602001611230565b61155d60405180606001604052806000815260200160008152602001600081525090565b5060408051606081018252601154815260125460208201526013549181019190915290565b61158a612af5565b610fe56000612ecc565b73ffffffffffffffffffffffffffffffffffffffff811630145b949350505050565b6115be612af5565b7f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff164614611629576040517f10dfc03300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116611676576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527ff782216d1b02bb841c11576e3acbe7ef0dcc261caed6eee061871387f3cfd18190602001611230565b6116f1612af5565b7f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff16461461175c576040517f10dfc03300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166117a9576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527ff520447191196b125f76f7110397fdf32b1b9cefb7dec323bd3b998022ac233890602001611230565b606060098054610d4a90614424565b611833612af5565b7f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff16461461189e576040517f10dfc03300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166118eb576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f0345019a4b882f65ce6451a4c87d09510f8606cb6eb18799aba7018d65ebada590602001611230565b604080518082019091526014546fffffffffffffffffffffffffffffffff80821683527001000000000000000000000000000000009091041660208201526000906119a88161247f565b91505090565b600033610ddb818585612a4a565b6119c4612af5565b61124d6119d182846145c3565b612f41565b63ffffffff8416600090815260036020908152604080832061ffff87168452909152812080546060929190611a0a90614424565b80601f0160208091040260200160405190810160405280929190818152602001828054611a3690614424565b8015611a835780601f10611a5857610100808354040283529160200191611a83565b820191906000526020600020905b815481529060010190602001808311611a6657829003601f168201915b505050505090508051600003611ad35783838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509294506115ae9350505050565b6000839003611ae35790506115ae565b60028310611b6157611b2a84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061304892505050565b80611b3884600281886146ef565b604051602001611b4a93929190614719565b6040516020818303038152906040529150506115ae565b83836040517f9a6d49cd00000000000000000000000000000000000000000000000000000000815260040161105492919061478a565b60005b81811015611ca05736838383818110611bb557611bb561479e565b9050602002810190611bc791906147cd565b9050611bfa611bd96020830183614296565b602083013563ffffffff919091166000908152600160205260409020541490565b611c045750611c98565b3063d045a0dc60c08301358360a0810135611c2361010083018361480b565b611c34610100890160e08a0161418b565b611c426101208a018a61480b565b6040518963ffffffff1660e01b8152600401611c649796959493929190614886565b6000604051808303818588803b158015611c7d57600080fd5b505af1158015611c91573d6000803e3d6000fd5b5050505050505b600101611b9a565b503373ffffffffffffffffffffffffffffffffffffffff16638e9e70996040518163ffffffff1660e01b8152600401600060405180830381865afa158015611cec573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611d32919081019061491a565b6040517f8351eea70000000000000000000000000000000000000000000000000000000081526004016110549190613d8f565b611d6d613cd9565b60408051808201909152600080825260208201526000611d9060a087018761480b565b90501115611dca576040517f9cad625100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602085013573ffffffffffffffffffffffffffffffffffffffff8116158015611e3757506fffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016611e2e6020880188614296565b63ffffffff1614155b15611e6e576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff811615801590611ea957503373ffffffffffffffffffffffffffffffffffffffff821614155b15611efe576040517fd1d0c78400000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff82166024820152604401611054565b600080611f213360408a013560608b0135611f1c60208d018d614296565b61308d565b91509150600080611f328a84612b9d565b9092509050611f5e611f4760208c018c614296565b8383611f58368e90038e018e614988565b8c6130b3565b60408051808201909152858152602080820186905282519299509097503391907f85496b760a4b7f8d66384b9df21b381f5d1b1e79f229a47aaf4c232edc2fe59a90611fac908e018e614296565b6040805163ffffffff909216825260208201899052810187905260600160405180910390a35050505050935093915050565b611fe6612af5565b6040517fca5eb5e100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063ca5eb5e190602401600060405180830381600087803b15801561206f57600080fd5b505af1158015612083573d6000803e3d6000fd5b5050505050565b612092612af5565b7f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff1646146120fd576040517f10dfc03300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61210a60208201826149d9565b6fffffffffffffffffffffffffffffffff161580612147575061213360408201602083016149d9565b6fffffffffffffffffffffffffffffffff16155b1561217e576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600c5474010000000000000000000000000000000000000000900463ffffffff166000036121f257600c80547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000004263ffffffff16021790556121fa565b6121fa610eb9565b80601461220782826149f6565b507fb3cfdbde4244db49a852e823f0cd30cbb8d07432d26b944547cfe887f09e3fb2905061223860208301836149d9565b61224860408401602085016149d9565b604080516fffffffffffffffffffffffffffffffff938416815292909116602083015201611230565b3330146122aa576040517f14d4a4e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110dd878787878787876110ce565b6122c1612af5565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd48d879cef83a1c0bdda516f27b13ddb1b3f8bbac1c9e1511bb2a659c242776090602001611230565b604080518082019091526014546fffffffffffffffffffffffffffffffff80821683527001000000000000000000000000000000009091041660208201526000906119a8816131cb565b612386612af5565b73ffffffffffffffffffffffffffffffffffffffff81166123d6576040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260006004820152602401611054565b61133781612ecc565b60006020820180359060019083906123f79086614296565b63ffffffff1681526020810191909152604001600020541492915050565b610fe183838360016131e2565b60008061242e8561332a565b915081905083811015612477576040517f71c4efed0000000000000000000000000000000000000000000000000000000081526004810182905260248101859052604401611054565b935093915050565b600c5460009074010000000000000000000000000000000000000000900463ffffffff168082036124b35750600092915050565b600f5460208401516fffffffffffffffffffffffffffffffff166125116124e063ffffffff851642614a77565b6124f6846b033b2e3c9fd0803ce8000000614a77565b87516fffffffffffffffffffffffffffffffff166000613361565b61251b9190614ab9565b92506b033b2e3c9fd0803ce800000061253484836144cf565b111561254c57806b033b2e3c9fd0803ce80000000392505b5050919050565b6000811580159061257c57506b033b2e3c9fd0803ce800000082600f5461257a91906144cf565b145b6125935769021e19e0c9bab2400000821015610de1565b600192915050565b60006125b783600001548368056bc75e2d631000006000613361565b9050801561266757600a546125e29073ffffffffffffffffffffffffffffffffffffffff168261339d565b600a546040517f654f2fc80000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff9091169063654f2fc890602401600060405180830381600087803b15801561264e57600080fd5b505af1158015612662573d6000803e3d6000fd5b505050505b600061268384600101548468056bc75e2d631000006000613361565b9050801561273357600b546126ae9073ffffffffffffffffffffffffffffffffffffffff168261339d565b600b546040517f654f2fc80000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff9091169063654f2fc890602401600060405180830381600087803b15801561271a57600080fd5b505af115801561272e573d6000803e3d6000fd5b505050505b6000816127408486614a77565b61274a9190614a77565b9050801561277557600c546127759073ffffffffffffffffffffffffffffffffffffffff168261339d565b83600d600082825461278791906144cf565b9250508190555083600f60008282546127a091906144cf565b909155505060408051848152602081018490529081018290524260608201527ff7576d8c2653e9d07af5ef229acf59b339e327d4e0eaddb4a96615534cf148f89060800160405180910390a15050505050565b63ffffffff811660009081526001602052604081205480610de1576040517ff6ff4fb700000000000000000000000000000000000000000000000000000000815263ffffffff84166004820152602401611054565b6028841115612883576040517f9cad625100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061289561289287876133f9565b90565b73ffffffffffffffffffffffffffffffffffffffff16036128d4576128cf60208801356128ca6128c58888613411565b613434565b612e3e565b6110dd565b60006128e361289287876133f9565b9050600061290a826128f86128c58a8a613411565b61290560208d018d614296565b61346a565b905073ffffffffffffffffffffffffffffffffffffffff8216887fefed6d3500546b29533b128a29e3a94d70788727f0507505ac12eaf2e578fd9c61295260208d018d614296565b6040805163ffffffff9092168252602082018690520160405180910390a3505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600660209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114612a445781811015612a35576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024810182905260448101839052606401611054565b612a44848484840360006131e2565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316612a9a576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401611054565b73ffffffffffffffffffffffffffffffffffffffff8216612aea576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401611054565b610fe183838361349f565b60005473ffffffffffffffffffffffffffffffffffffffff163314610fe5576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401611054565b63ffffffff8216600081815260016020908152604091829020849055815192835282018390527f238399d427b947898edb290f5ff0f9109849b1c3ba196a42e35f00c50a54b98b910160405180910390a15050565b6060806000612bfa8560200135612bb38661359c565b612bc060a089018961480b565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506135c892505050565b9093509050600081612c0d576001612c10565b60025b9050612c30612c226020880188614296565b82610b5c60808a018a61480b565b60045490935073ffffffffffffffffffffffffffffffffffffffff1615612ceb57600480546040517f043a78eb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169163043a78eb91612ca8918891889101614af4565b602060405180830381865afa158015612cc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ce99190614b19565b505b50509250929050565b60408051808201909152600080825260208201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ddc28c586040518060a001604052808863ffffffff168152602001612d64896127f3565b8152602001878152602001868152602001851515815250306040518363ffffffff1660e01b8152600401612d99929190614b36565b6040805180830381865afa158015612db5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dd99190614c0b565b95945050505050565b73ffffffffffffffffffffffffffffffffffffffff8216612e32576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401611054565b61124d8260008361349f565b600081600e54612e4e91906144cf565b600e8190559050600082600f54612e659190614a77565b600f819055604080518581526020810183905290810184905290915073ffffffffffffffffffffffffffffffffffffffff8516907f87dad80f3ba50e9e7ca4442fee6772eb468383860cc7e9d493b2b6bc33da7d199060600160405180910390a250505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60005b815181101561301857612f73828281518110612f6257612f6261479e565b602002602001015160400151613048565b818181518110612f8557612f8561479e565b60200260200101516040015160036000848481518110612fa757612fa761479e565b60200260200101516000015163ffffffff1663ffffffff1681526020019081526020016000206000848481518110612fe157612fe161479e565b60200260200101516020015161ffff1661ffff168152602001908152602001600020908161300f9190614c6e565b50600101612f44565b507fbe4864a8e820971c0247f5992e2da559595f7bf076a21cb5928d443d2a13b674816040516112309190614d87565b600281015161ffff811660031461124d57816040517f9a6d49cd0000000000000000000000000000000000000000000000000000000081526004016110549190613d8f565b60008061309b858585612422565b90925090506130aa8683612de2565b94509492505050565b6130bb613cd9565b60006130ca846000015161365a565b6020850151909150156130e4576130e4846020015161369b565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632637a450826040518060a001604052808b63ffffffff1681526020016131418c6127f3565b81526020018a815260200189815260200160008960200151111515815250866040518463ffffffff1660e01b815260040161317d929190614b36565b60806040518083038185885af115801561319b573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906131c09190614e35565b979650505050505050565b6000806131d78361247f565b905061110581612553565b73ffffffffffffffffffffffffffffffffffffffff8416613232576040517fe602df0500000000000000000000000000000000000000000000000000000000815260006004820152602401611054565b73ffffffffffffffffffffffffffffffffffffffff8316613282576040517f94280d6200000000000000000000000000000000000000000000000000000000815260006004820152602401611054565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526006602090815260408083209387168352929052208290558015612a44578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161331c91815260200190565b60405180910390a350505050565b60007f00000000000000000000000000000000000000000000000000000000000000006133578184614ab9565b610de19190614e81565b600061336e8585856137bd565b905081801561338d57506000838061338857613388614a8a565b858709115b156115ae57612dd96001826144cf565b73ffffffffffffffffffffffffffffffffffffffff82166133ed576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401611054565b61124d6000838361349f565b600061340860208284866146ef565b61110591614e98565b60006134216028602084866146ef565b61342a91614ed4565b60c01c9392505050565b6000610de17f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff8416614e81565b600073ffffffffffffffffffffffffffffffffffffffff841661348d5761dead93505b613497848461339d565b509092915050565b73ffffffffffffffffffffffffffffffffffffffff8316158015906134d9575073ffffffffffffffffffffffffffffffffffffffff821615155b156135915773ffffffffffffffffffffffffffffffffffffffff831660009081526010602052604090205460ff1615801561353a575073ffffffffffffffffffffffffffffffffffffffff821660009081526010602052604090205460ff16155b15613591576040517fd1d0c78400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808516600483015283166024820152604401611054565b610fe18383836138c8565b6000610de17f000000000000000000000000000000000000000000000000000000000000000083614ab9565b805160609015158061362957848460405160200161361592919091825260c01b7fffffffffffffffff00000000000000000000000000000000000000000000000016602082015260280190565b604051602081830303815290604052613650565b848433856040516020016136409493929190614f3a565b6040516020818303038152906040525b9150935093915050565b6000813414613697576040517f9f704120000000000000000000000000000000000000000000000000000000008152346004820152602401611054565b5090565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e4fe1d946040518163ffffffff1660e01b8152600401602060405180830381865afa158015613708573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061372c9190614f93565b905073ffffffffffffffffffffffffffffffffffffffff811661377b576040517f5373352a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61124d73ffffffffffffffffffffffffffffffffffffffff8216337f000000000000000000000000000000000000000000000000000000000000000085613a73565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff858709858702925082811083820303915050806000036138155783828161380b5761380b614a8a565b0492505050611105565b83811061385f576040517f63a05778000000000000000000000000000000000000000000000000000000008152600481018790526024810186905260448101859052606401611054565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b73ffffffffffffffffffffffffffffffffffffffff83166139005780600760008282546138f591906144cf565b909155506139b29050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526005602052604090205481811015613986576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024810182905260448101839052606401611054565b73ffffffffffffffffffffffffffffffffffffffff841660009081526005602052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff82166139db57600780548290039055613a07565b73ffffffffffffffffffffffffffffffffffffffff821660009081526005602052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613a6691815260200190565b60405180910390a3505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8581166024830152848116604483015260648083018590528351808403909101815260849092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052612a4491869190600090613b1490841683613b88565b90508051600014158015613b39575080806020019051810190613b379190614b19565b155b15610fe1576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401611054565b606061110583836000846000808573ffffffffffffffffffffffffffffffffffffffff168486604051613bbb9190614fb0565b60006040518083038185875af1925050503d8060008114613bf8576040519150601f19603f3d011682016040523d82523d6000602084013e613bfd565b606091505b50915091506112ae868383606082613c1d57613c1882613c97565b611105565b8151158015613c41575073ffffffffffffffffffffffffffffffffffffffff84163b155b15613c90576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401611054565b5080611105565b805115613ca75780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604051806060016040528060008019168152602001600067ffffffffffffffff168152602001613d1c604051806040016040528060008152602001600081525090565b905290565b60005b83811015613d3c578181015183820152602001613d24565b50506000910152565b60008151808452613d5d816020860160208601613d21565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006111056020830184613d45565b73ffffffffffffffffffffffffffffffffffffffff8116811461133757600080fd5b60008060408385031215613dd757600080fd5b8235613de281613da2565b946020939093013593505050565b600060e08284031215613e0257600080fd5b50919050565b600060208284031215613e1a57600080fd5b813567ffffffffffffffff811115613e3157600080fd5b6115ae84828501613df0565b8351815260208085015190820152600060a0820160a0604084015280855180835260c08501915060c08160051b86010192506020870160005b82811015613edc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff408786030184528151805186526020810151905060406020870152613ec66040870182613d45565b9550506020938401939190910190600101613e76565b50508551606086015250506020840151608084015290506115ae565b600060608284031215613e0257600080fd5b60008083601f840112613f1c57600080fd5b50813567ffffffffffffffff811115613f3457600080fd5b602083019150836020828501011115613f4c57600080fd5b9250929050565b600080600080600080600060e0888a031215613f6e57600080fd5b613f788989613ef8565b965060608801359550608088013567ffffffffffffffff811115613f9b57600080fd5b613fa78a828b01613f0a565b90965094505060a0880135613fbb81613da2565b925060c088013567ffffffffffffffff811115613fd757600080fd5b613fe38a828b01613f0a565b989b979a50959850939692959293505050565b60008060006060848603121561400b57600080fd5b833561401681613da2565b9250602084013561402681613da2565b929592945050506040919091013590565b60006060828403121561404957600080fd5b6111058383613ef8565b803563ffffffff8116811461406757600080fd5b919050565b6000806040838503121561407f57600080fd5b613de283614053565b801515811461133757600080fd5b600080604083850312156140a957600080fd5b823567ffffffffffffffff8111156140c057600080fd5b6140cc85828601613df0565b92505060208301356140dd81614088565b809150509250929050565b815181526020808301519082015260408101610de1565b60006020828403121561411157600080fd5b5035919050565b803561ffff8116811461406757600080fd5b6000806040838503121561413d57600080fd5b61414683614053565b915061415460208401614118565b90509250929050565b6000806040838503121561417057600080fd5b823561417b81613da2565b915060208301356140dd81614088565b60006020828403121561419d57600080fd5b813561110581613da2565b60008060008060a085870312156141be57600080fd5b6141c88686613ef8565b9350606085013567ffffffffffffffff8111156141e457600080fd5b6141f087828801613f0a565b909450925050608085013561420481613da2565b939692955090935050565b60008083601f84011261422157600080fd5b50813567ffffffffffffffff81111561423957600080fd5b6020830191508360208260051b8501011115613f4c57600080fd5b6000806020838503121561426757600080fd5b823567ffffffffffffffff81111561427e57600080fd5b61428a8582860161420f565b90969095509350505050565b6000602082840312156142a857600080fd5b61110582614053565b600080600080606085870312156142c757600080fd5b6142d085614053565b93506142de60208601614118565b9250604085013567ffffffffffffffff8111156142fa57600080fd5b61430687828801613f0a565b95989497509550505050565b600060408284031215613e0257600080fd5b60008060006080848603121561433957600080fd5b833567ffffffffffffffff81111561435057600080fd5b61435c86828701613df0565b93505061436c8560208601614312565b9150606084013561437c81613da2565b809150509250925092565b600060c0820190508351825267ffffffffffffffff602085015116602083015260408401516143c3604084018280518252602090810151910152565b5082516080830152602083015160a0830152611105565b6000604082840312156143ec57600080fd5b6111058383614312565b6000806040838503121561440957600080fd5b823561441481613da2565b915060208301356140dd81613da2565b600181811c9082168061443857607f821691505b602082108103613e02577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115610de157610de16144a0565b6040516060810167ffffffffffffffff8111828210171561450557614505614471565b60405290565b6040805190810167ffffffffffffffff8111828210171561450557614505614471565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561457557614575614471565b604052919050565b600067ffffffffffffffff82111561459757614597614471565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600067ffffffffffffffff8311156145dd576145dd614471565b8260051b6145ed6020820161452e565b8481529083019060208101903683111561460657600080fd5b845b838110156146e557803567ffffffffffffffff81111561462757600080fd5b8601606036829003121561463a57600080fd5b6146426144e2565b61464b82614053565b815261465960208301614118565b6020820152604082013567ffffffffffffffff81111561467857600080fd5b919091019036601f83011261468c57600080fd5b813561469f61469a8261457d565b61452e565b8181523660208386010111156146b457600080fd5b8160208501602083013760006020838301015280604084015250508085525050602083019250602081019050614608565b5095945050505050565b600080858511156146ff57600080fd5b8386111561470c57600080fd5b5050820193919092039150565b6000845161472b818460208901613d21565b8201838582376000930192835250909392505050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020815260006115ae602083018486614741565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec183360301811261480157600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261484057600080fd5b83018035915067ffffffffffffffff82111561485b57600080fd5b602001915036819003821315613f4c57600080fd5b67ffffffffffffffff8116811461133757600080fd5b63ffffffff61489489614053565b16815260208881013590820152600060408901356148b181614870565b67ffffffffffffffff811660408401525087606083015260e060808301526148dd60e083018789614741565b73ffffffffffffffffffffffffffffffffffffffff861660a084015282810360c084015261490c818587614741565b9a9950505050505050505050565b60006020828403121561492c57600080fd5b815167ffffffffffffffff81111561494357600080fd5b8201601f8101841361495457600080fd5b805161496261469a8261457d565b81815285602083850101111561497757600080fd5b612dd9826020830160208601613d21565b6000604082840312801561499b57600080fd5b506149a461450b565b823581526020928301359281019290925250919050565b6fffffffffffffffffffffffffffffffff8116811461133757600080fd5b6000602082840312156149eb57600080fd5b8135611105816149bb565b8135614a01816149bb565b6fffffffffffffffffffffffffffffffff81169050807fffffffffffffffffffffffffffffffff000000000000000000000000000000008354161782556020830135614a4c816149bb565b60801b7fffffffffffffffffffffffffffffffff000000000000000000000000000000001617905550565b81810381811115610de157610de16144a0565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082614aef577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b604081526000614b076040830185613d45565b8281036020840152612dd98185613d45565b600060208284031215614b2b57600080fd5b815161110581614088565b6040815263ffffffff8351166040820152602083015160608201526000604084015160a06080840152614b6c60e0840182613d45565b905060608501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08483030160a0850152614ba78282613d45565b60809690960151151560c085015250505073ffffffffffffffffffffffffffffffffffffffff9190911660209091015290565b600060408284031215614bec57600080fd5b614bf461450b565b825181526020928301519281019290925250919050565b600060408284031215614c1d57600080fd5b6111058383614bda565b601f821115610fe157806000526020600020601f840160051c81016020851015614c4e5750805b601f840160051c820191505b818110156120835760008155600101614c5a565b815167ffffffffffffffff811115614c8857614c88614471565b614c9c81614c968454614424565b84614c27565b6020601f821160018114614cee5760008315614cb85750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455612083565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b82811015614d3c5787850151825560209485019460019092019101614d1c565b5084821015614d7857868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015614e29577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815163ffffffff815116865261ffff60208201511660208701526040810151905060606040870152614e136060870182613d45565b9550506020938401939190910190600101614daf565b50929695505050505050565b60006080828403128015614e4857600080fd5b50614e516144e2565b825181526020830151614e6381614870565b6020820152614e758460408501614bda565b60408201529392505050565b8082028115828204841417610de157610de16144a0565b80356020831015610de1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b80357fffffffffffffffff0000000000000000000000000000000000000000000000008116906008841015614f33577fffffffffffffffff000000000000000000000000000000000000000000000000808560080360031b1b82161691505b5092915050565b8481527fffffffffffffffff0000000000000000000000000000000000000000000000008460c01b16602082015282602882015260008251614f83816048850160208701613d21565b9190910160480195945050505050565b600060208284031215614fa557600080fd5b815161110581613da2565b60008251614801818460208701613d2156fea26469706673582212205883a5fd4dd9d6985cad8f2c68c426040cc134676b8a26267c4fc2cdf1a5243d64736f6c634300081c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/templegold/TempleGoldAdmin.sol/TempleGoldAdmin.json b/apps/dapp/abi/contracts/templegold/TempleGoldAdmin.sol/TempleGoldAdmin.json new file mode 100644 index 000000000..6425c02df --- /dev/null +++ b/apps/dapp/abi/contracts/templegold/TempleGoldAdmin.sol/TempleGoldAdmin.json @@ -0,0 +1,526 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "TempleGoldAdmin", + "sourceName": "contracts/templegold/TempleGoldAdmin.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_rescuer", + "type": "address" + }, + { + "internalType": "address", + "name": "_executor", + "type": "address" + }, + { + "internalType": "address", + "name": "_templeGold", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "InvalidAccess", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidAddress", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "bytes4", + "name": "fnSelector", + "type": "bytes4" + }, + { + "indexed": true, + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "ExplicitAccessSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newExecutor", + "type": "address" + } + ], + "name": "NewExecutorAccepted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "oldProposedExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newProposedExecutor", + "type": "address" + } + ], + "name": "NewExecutorProposed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newRescuer", + "type": "address" + } + ], + "name": "NewRescuerAccepted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "oldProposedRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newProposedRescuer", + "type": "address" + } + ], + "name": "NewRescuerProposed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "RescueModeSet", + "type": "event" + }, + { + "inputs": [], + "name": "acceptExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "acceptRescuer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_contract", + "type": "address" + }, + { + "internalType": "bool", + "name": "_whitelist", + "type": "bool" + } + ], + "name": "authorizeContract", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "executor", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "name": "explicitFunctionAccess", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "inRescueMode", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "proposeNewExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "proposeNewRescuer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "rescuer", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_delegate", + "type": "address" + } + ], + "name": "setDelegate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "staking", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "auction", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "gnosis", + "type": "uint256" + } + ], + "internalType": "struct ITempleGold.DistributionParams", + "name": "_params", + "type": "tuple" + } + ], + "name": "setDistributionParams", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint32", + "name": "eid", + "type": "uint32" + }, + { + "internalType": "uint16", + "name": "msgType", + "type": "uint16" + }, + { + "internalType": "bytes", + "name": "options", + "type": "bytes" + } + ], + "internalType": "struct EnforcedOptionParam[]", + "name": "_enforcedOptions", + "type": "tuple[]" + } + ], + "name": "setEnforcedOptions", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "allowedCaller", + "type": "address" + }, + { + "components": [ + { + "internalType": "bytes4", + "name": "fnSelector", + "type": "bytes4" + }, + { + "internalType": "bool", + "name": "allowed", + "type": "bool" + } + ], + "internalType": "struct ITempleElevatedAccess.ExplicitAccess[]", + "name": "access", + "type": "tuple[]" + } + ], + "name": "setExplicitAccess", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_msgInspector", + "type": "address" + } + ], + "name": "setMsgInspector", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "_eid", + "type": "uint32" + }, + { + "internalType": "bytes32", + "name": "_peer", + "type": "bytes32" + } + ], + "name": "setPeer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_preCrime", + "type": "address" + } + ], + "name": "setPreCrime", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "setRescueMode", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_auction", + "type": "address" + } + ], + "name": "setStableGoldAuction", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_staking", + "type": "address" + } + ], + "name": "setStaking", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_gnosis", + "type": "address" + } + ], + "name": "setTeamGnosis", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint128", + "name": "value", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "weekMultiplier", + "type": "uint128" + } + ], + "internalType": "struct ITempleGold.VestingFactor", + "name": "_factor", + "type": "tuple" + } + ], + "name": "setVestingFactor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "templeGold", + "outputs": [ + { + "internalType": "contract ITempleGold", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x60a060405234801561001057600080fd5b50604051611d1c380380611d1c83398101604081905261002f91610108565b82826001600160a01b0382166100585760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b03811661007f5760405163e6c4247b60e01b815260040160405180910390fd5b816001600160a01b0316816001600160a01b0316036100b15760405163e6c4247b60e01b815260040160405180910390fd5b600080546001600160a01b03199081166001600160a01b039485161790915560018054909116918316919091179055166080525061014b9050565b80516001600160a01b038116811461010357600080fd5b919050565b60008060006060848603121561011d57600080fd5b610126846100ec565b9250610134602085016100ec565b9150610142604085016100ec565b90509250925092565b608051611b696101b3600039600081816103700152818161073f015281816108530152818161097a01528181610a5201528181610c6a01528181610d4201528181610e1a01528181610eea015281816111c1015281816112a2015261138f0152611b696000f3fe608060405234801561001057600080fd5b50600436106101825760003560e01c80638ff39099116100d8578063ca5eb5e11161008c578063d9a349c111610066578063d9a349c11461032a578063daeccc791461033d578063e110dfda1461036b57600080fd5b8063ca5eb5e1146102f1578063cb5cf37014610304578063d42438851461031757600080fd5b8063b98bd070116100bd578063b98bd070146102ab578063bfccf0ec146102be578063c34c08e5146102d157600080fd5b80638ff3909914610285578063a1b85eba1461029857600080fd5b80633400288b1161013a5780636fc1b31e116101145780636fc1b31e146102575780638112c4af1461026a5780638f2419d31461027257600080fd5b80633400288b146101ec57806338a63183146101ff5780635cbeb13f1461024457600080fd5b80631810fe7f1161016b5780631810fe7f146101af5780631f211405146101d157806324608027146101d957600080fd5b8063032ef9011461018757806307f184f11461019c575b600080fd5b61019a6101953660046115dc565b610392565b005b61019a6101aa366004611622565b610441565b6003546101bc9060ff1681565b60405190151581526020015b60405180910390f35b61019a610579565b61019a6101e736600461168d565b610698565b61019a6101fa366004611726565b6107b4565b60005461021f9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101c8565b61019a610252366004611750565b6108c9565b61019a610265366004611622565b6109a9565b61019a610a81565b61019a610280366004611622565b610bc1565b61019a610293366004611622565b610c99565b61019a6102a6366004611622565b610d71565b61019a6102b9366004611783565b610e49565b61019a6102cc3660046117fa565b610f21565b60015461021f9073ffffffffffffffffffffffffffffffffffffffff1681565b61019a6102ff366004611622565b611118565b61019a6103123660046118a2565b6111f0565b61019a610325366004611622565b6112e6565b61019a610338366004611622565b6113be565b6101bc61034b366004611911565b600260209081526000928352604080842090915290825290205460ff1681565b61021f7f000000000000000000000000000000000000000000000000000000000000000081565b60005473ffffffffffffffffffffffffffffffffffffffff1633146103e3576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604051811515907f18f4a9a726c72020fd959c636d2fd464c6cefe90afeaea3c830b971614cf70b690600090a2600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610492576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166104df576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60035460405173ffffffffffffffffffffffffffffffffffffffff808416926101009004169033907f374d23b359cab0f8963c5c1715a6de7974f53af00aecc27de50d93906b70943e90600090a46003805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b60045473ffffffffffffffffffffffffffffffffffffffff1633146105ca576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005473ffffffffffffffffffffffffffffffffffffffff16330361061b576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600154604051339173ffffffffffffffffffffffffffffffffffffffff16907fe963dc9c0d2165b080440a5d2665566142f2426b1ea15f3da8390b0fd336b06490600090a3600180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163317909155600480549091169055565b6106c6336000357fffffffff0000000000000000000000000000000000000000000000000000000016611503565b6106fc576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080517f2460802700000000000000000000000000000000000000000000000000000000815282516004820152602083015160248201529082015160448201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906324608027906064015b600060405180830381600087803b15801561079957600080fd5b505af11580156107ad573d6000803e3d6000fd5b5050505050565b6107e2336000357fffffffff0000000000000000000000000000000000000000000000000000000016611503565b610818576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f3400288b00000000000000000000000000000000000000000000000000000000815263ffffffff83166004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690633400288b906044015b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b505050505050565b6108f7336000357fffffffff0000000000000000000000000000000000000000000000000000000016611503565b61092d576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f5cbeb13f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff838116600483015282151560248301527f00000000000000000000000000000000000000000000000000000000000000001690635cbeb13f90604401610893565b6109d7336000357fffffffff0000000000000000000000000000000000000000000000000000000016611503565b610a0d576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f6fc1b31e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636fc1b31e9060240161077f565b600354610100900473ffffffffffffffffffffffffffffffffffffffff163314610ad7576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015473ffffffffffffffffffffffffffffffffffffffff163303610b28576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054604051339273ffffffffffffffffffffffffffffffffffffffff909216917ff07131157ebea15896dc89264eb9a7572e67cc9fad6b855015730fcec10704e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001633179055600380547fffffffffffffffffffffff0000000000000000000000000000000000000000ff169055565b610bef336000357fffffffff0000000000000000000000000000000000000000000000000000000016611503565b610c25576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8f2419d300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f00000000000000000000000000000000000000000000000000000000000000001690638f2419d39060240161077f565b610cc7336000357fffffffff0000000000000000000000000000000000000000000000000000000016611503565b610cfd576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8ff3909900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f00000000000000000000000000000000000000000000000000000000000000001690638ff390999060240161077f565b610d9f336000357fffffffff0000000000000000000000000000000000000000000000000000000016611503565b610dd5576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fa1b85eba00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a1b85eba9060240161077f565b610e77336000357fffffffff0000000000000000000000000000000000000000000000000000000016611503565b610ead576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fb98bd07000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b98bd070906108939085908590600401611984565b610f4f336000357fffffffff0000000000000000000000000000000000000000000000000000000016611503565b610f85576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316610fd2576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805180820190915260008082526020820152819060005b828110156108c15784848281811061100557611005611ad1565b90506040020180360381019061101b9190611b00565b91508160200151151582600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168773ffffffffffffffffffffffffffffffffffffffff167ff5736e75de2c751f775d4c5ed517289f77074f8c337f451ba4c0c3ed1dd7f9ad60405160405180910390a460208281015173ffffffffffffffffffffffffffffffffffffffff8816600090815260028352604080822086517fffffffff000000000000000000000000000000000000000000000000000000001683529093529190912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101610feb565b611146336000357fffffffff0000000000000000000000000000000000000000000000000000000016611503565b61117c576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fca5eb5e100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063ca5eb5e19060240161077f565b61121e336000357fffffffff0000000000000000000000000000000000000000000000000000000016611503565b611254576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fcb5cf37000000000000000000000000000000000000000000000000000000000815281516fffffffffffffffffffffffffffffffff908116600483015260208301511660248201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063cb5cf3709060440161077f565b611314336000357fffffffff0000000000000000000000000000000000000000000000000000000016611503565b61134a576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fd424388500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063d42438859060240161077f565b6113ec336000357fffffffff0000000000000000000000000000000000000000000000000000000016611503565b611422576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff811661146f576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60045460015460405173ffffffffffffffffffffffffffffffffffffffff8085169381169216907f4857570a90fe0a0fc580e89a287e77576141ac8e2e8b3710cd26db44f44156c190600090a4600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60035460009060ff1615611535575060005473ffffffffffffffffffffffffffffffffffffffff8381169116146115c1565b60015473ffffffffffffffffffffffffffffffffffffffff848116911614806115b0575073ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290205460ff165b156115bd575060016115c1565b5060005b92915050565b803580151581146115d757600080fd5b919050565b6000602082840312156115ee57600080fd5b6115f7826115c7565b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146115d757600080fd5b60006020828403121561163457600080fd5b6115f7826115fe565b6040805190810167ffffffffffffffff81118282101715611687577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b600060608284031280156116a057600080fd5b506040516000906060810167ffffffffffffffff811182821017156116ec577f4e487b710000000000000000000000000000000000000000000000000000000083526041600452602483fd5b604090815284358252602080860135908301529384013593810193909352509092915050565b803563ffffffff811681146115d757600080fd5b6000806040838503121561173957600080fd5b61174283611712565b946020939093013593505050565b6000806040838503121561176357600080fd5b61176c836115fe565b915061177a602084016115c7565b90509250929050565b6000806020838503121561179657600080fd5b823567ffffffffffffffff8111156117ad57600080fd5b8301601f810185136117be57600080fd5b803567ffffffffffffffff8111156117d557600080fd5b8560208260051b84010111156117ea57600080fd5b6020919091019590945092505050565b60008060006040848603121561180f57600080fd5b611818846115fe565b9250602084013567ffffffffffffffff81111561183457600080fd5b8401601f8101861361184557600080fd5b803567ffffffffffffffff81111561185c57600080fd5b8660208260061b840101111561187157600080fd5b939660209190910195509293505050565b80356fffffffffffffffffffffffffffffffff811681146115d757600080fd5b600060408284031280156118b557600080fd5b506118be61163d565b6118c783611882565b81526118d560208401611882565b60208201529392505050565b80357fffffffff00000000000000000000000000000000000000000000000000000000811681146115d757600080fd5b6000806040838503121561192457600080fd5b61192d836115fe565b915061177a602084016118e1565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020808252810182905260006040600584901b8301810190830185837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa136839003015b87821015611ac4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528235818112611a0457600080fd5b890163ffffffff611a1482611712565b168652602081013561ffff8116808214611a2d57600080fd5b6020880152506040810135368290037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1018112611a6957600080fd5b0160208101903567ffffffffffffffff811115611a8557600080fd5b803603821315611a9457600080fd5b60606040880152611aa960608801828461193b565b965050506020830192506020840193506001820191506119c7565b5092979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006040828403128015611b1357600080fd5b50611b1c61163d565b611b25836118e1565b81526118d5602084016115c756fea2646970667358221220145f5a521c2a976507eb592d6ce5a6a6e61e7c3374a3f4e5cf6004ae1ad767d264736f6c634300081c0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101825760003560e01c80638ff39099116100d8578063ca5eb5e11161008c578063d9a349c111610066578063d9a349c11461032a578063daeccc791461033d578063e110dfda1461036b57600080fd5b8063ca5eb5e1146102f1578063cb5cf37014610304578063d42438851461031757600080fd5b8063b98bd070116100bd578063b98bd070146102ab578063bfccf0ec146102be578063c34c08e5146102d157600080fd5b80638ff3909914610285578063a1b85eba1461029857600080fd5b80633400288b1161013a5780636fc1b31e116101145780636fc1b31e146102575780638112c4af1461026a5780638f2419d31461027257600080fd5b80633400288b146101ec57806338a63183146101ff5780635cbeb13f1461024457600080fd5b80631810fe7f1161016b5780631810fe7f146101af5780631f211405146101d157806324608027146101d957600080fd5b8063032ef9011461018757806307f184f11461019c575b600080fd5b61019a6101953660046115dc565b610392565b005b61019a6101aa366004611622565b610441565b6003546101bc9060ff1681565b60405190151581526020015b60405180910390f35b61019a610579565b61019a6101e736600461168d565b610698565b61019a6101fa366004611726565b6107b4565b60005461021f9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101c8565b61019a610252366004611750565b6108c9565b61019a610265366004611622565b6109a9565b61019a610a81565b61019a610280366004611622565b610bc1565b61019a610293366004611622565b610c99565b61019a6102a6366004611622565b610d71565b61019a6102b9366004611783565b610e49565b61019a6102cc3660046117fa565b610f21565b60015461021f9073ffffffffffffffffffffffffffffffffffffffff1681565b61019a6102ff366004611622565b611118565b61019a6103123660046118a2565b6111f0565b61019a610325366004611622565b6112e6565b61019a610338366004611622565b6113be565b6101bc61034b366004611911565b600260209081526000928352604080842090915290825290205460ff1681565b61021f7f000000000000000000000000000000000000000000000000000000000000000081565b60005473ffffffffffffffffffffffffffffffffffffffff1633146103e3576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604051811515907f18f4a9a726c72020fd959c636d2fd464c6cefe90afeaea3c830b971614cf70b690600090a2600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610492576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166104df576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60035460405173ffffffffffffffffffffffffffffffffffffffff808416926101009004169033907f374d23b359cab0f8963c5c1715a6de7974f53af00aecc27de50d93906b70943e90600090a46003805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b60045473ffffffffffffffffffffffffffffffffffffffff1633146105ca576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005473ffffffffffffffffffffffffffffffffffffffff16330361061b576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600154604051339173ffffffffffffffffffffffffffffffffffffffff16907fe963dc9c0d2165b080440a5d2665566142f2426b1ea15f3da8390b0fd336b06490600090a3600180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163317909155600480549091169055565b6106c6336000357fffffffff0000000000000000000000000000000000000000000000000000000016611503565b6106fc576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080517f2460802700000000000000000000000000000000000000000000000000000000815282516004820152602083015160248201529082015160448201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906324608027906064015b600060405180830381600087803b15801561079957600080fd5b505af11580156107ad573d6000803e3d6000fd5b5050505050565b6107e2336000357fffffffff0000000000000000000000000000000000000000000000000000000016611503565b610818576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f3400288b00000000000000000000000000000000000000000000000000000000815263ffffffff83166004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690633400288b906044015b600060405180830381600087803b1580156108ad57600080fd5b505af11580156108c1573d6000803e3d6000fd5b505050505050565b6108f7336000357fffffffff0000000000000000000000000000000000000000000000000000000016611503565b61092d576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f5cbeb13f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff838116600483015282151560248301527f00000000000000000000000000000000000000000000000000000000000000001690635cbeb13f90604401610893565b6109d7336000357fffffffff0000000000000000000000000000000000000000000000000000000016611503565b610a0d576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f6fc1b31e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f00000000000000000000000000000000000000000000000000000000000000001690636fc1b31e9060240161077f565b600354610100900473ffffffffffffffffffffffffffffffffffffffff163314610ad7576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015473ffffffffffffffffffffffffffffffffffffffff163303610b28576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054604051339273ffffffffffffffffffffffffffffffffffffffff909216917ff07131157ebea15896dc89264eb9a7572e67cc9fad6b855015730fcec10704e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001633179055600380547fffffffffffffffffffffff0000000000000000000000000000000000000000ff169055565b610bef336000357fffffffff0000000000000000000000000000000000000000000000000000000016611503565b610c25576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8f2419d300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f00000000000000000000000000000000000000000000000000000000000000001690638f2419d39060240161077f565b610cc7336000357fffffffff0000000000000000000000000000000000000000000000000000000016611503565b610cfd576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8ff3909900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f00000000000000000000000000000000000000000000000000000000000000001690638ff390999060240161077f565b610d9f336000357fffffffff0000000000000000000000000000000000000000000000000000000016611503565b610dd5576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fa1b85eba00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a1b85eba9060240161077f565b610e77336000357fffffffff0000000000000000000000000000000000000000000000000000000016611503565b610ead576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fb98bd07000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b98bd070906108939085908590600401611984565b610f4f336000357fffffffff0000000000000000000000000000000000000000000000000000000016611503565b610f85576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316610fd2576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805180820190915260008082526020820152819060005b828110156108c15784848281811061100557611005611ad1565b90506040020180360381019061101b9190611b00565b91508160200151151582600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168773ffffffffffffffffffffffffffffffffffffffff167ff5736e75de2c751f775d4c5ed517289f77074f8c337f451ba4c0c3ed1dd7f9ad60405160405180910390a460208281015173ffffffffffffffffffffffffffffffffffffffff8816600090815260028352604080822086517fffffffff000000000000000000000000000000000000000000000000000000001683529093529190912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101610feb565b611146336000357fffffffff0000000000000000000000000000000000000000000000000000000016611503565b61117c576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fca5eb5e100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063ca5eb5e19060240161077f565b61121e336000357fffffffff0000000000000000000000000000000000000000000000000000000016611503565b611254576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fcb5cf37000000000000000000000000000000000000000000000000000000000815281516fffffffffffffffffffffffffffffffff908116600483015260208301511660248201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063cb5cf3709060440161077f565b611314336000357fffffffff0000000000000000000000000000000000000000000000000000000016611503565b61134a576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fd424388500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063d42438859060240161077f565b6113ec336000357fffffffff0000000000000000000000000000000000000000000000000000000016611503565b611422576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff811661146f576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60045460015460405173ffffffffffffffffffffffffffffffffffffffff8085169381169216907f4857570a90fe0a0fc580e89a287e77576141ac8e2e8b3710cd26db44f44156c190600090a4600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60035460009060ff1615611535575060005473ffffffffffffffffffffffffffffffffffffffff8381169116146115c1565b60015473ffffffffffffffffffffffffffffffffffffffff848116911614806115b0575073ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290205460ff165b156115bd575060016115c1565b5060005b92915050565b803580151581146115d757600080fd5b919050565b6000602082840312156115ee57600080fd5b6115f7826115c7565b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146115d757600080fd5b60006020828403121561163457600080fd5b6115f7826115fe565b6040805190810167ffffffffffffffff81118282101715611687577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b600060608284031280156116a057600080fd5b506040516000906060810167ffffffffffffffff811182821017156116ec577f4e487b710000000000000000000000000000000000000000000000000000000083526041600452602483fd5b604090815284358252602080860135908301529384013593810193909352509092915050565b803563ffffffff811681146115d757600080fd5b6000806040838503121561173957600080fd5b61174283611712565b946020939093013593505050565b6000806040838503121561176357600080fd5b61176c836115fe565b915061177a602084016115c7565b90509250929050565b6000806020838503121561179657600080fd5b823567ffffffffffffffff8111156117ad57600080fd5b8301601f810185136117be57600080fd5b803567ffffffffffffffff8111156117d557600080fd5b8560208260051b84010111156117ea57600080fd5b6020919091019590945092505050565b60008060006040848603121561180f57600080fd5b611818846115fe565b9250602084013567ffffffffffffffff81111561183457600080fd5b8401601f8101861361184557600080fd5b803567ffffffffffffffff81111561185c57600080fd5b8660208260061b840101111561187157600080fd5b939660209190910195509293505050565b80356fffffffffffffffffffffffffffffffff811681146115d757600080fd5b600060408284031280156118b557600080fd5b506118be61163d565b6118c783611882565b81526118d560208401611882565b60208201529392505050565b80357fffffffff00000000000000000000000000000000000000000000000000000000811681146115d757600080fd5b6000806040838503121561192457600080fd5b61192d836115fe565b915061177a602084016118e1565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6020808252810182905260006040600584901b8301810190830185837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa136839003015b87821015611ac4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528235818112611a0457600080fd5b890163ffffffff611a1482611712565b168652602081013561ffff8116808214611a2d57600080fd5b6020880152506040810135368290037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1018112611a6957600080fd5b0160208101903567ffffffffffffffff811115611a8557600080fd5b803603821315611a9457600080fd5b60606040880152611aa960608801828461193b565b965050506020830192506020840193506001820191506119c7565b5092979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006040828403128015611b1357600080fd5b50611b1c61163d565b611b25836118e1565b81526118d5602084016115c756fea2646970667358221220145f5a521c2a976507eb592d6ce5a6a6e61e7c3374a3f4e5cf6004ae1ad767d264736f6c634300081c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/templegold/TempleGoldStaking.sol/TempleGoldStaking.json b/apps/dapp/abi/contracts/templegold/TempleGoldStaking.sol/TempleGoldStaking.json new file mode 100644 index 000000000..d002ec1ea --- /dev/null +++ b/apps/dapp/abi/contracts/templegold/TempleGoldStaking.sol/TempleGoldStaking.json @@ -0,0 +1,1403 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "TempleGoldStaking", + "sourceName": "contracts/templegold/TempleGoldStaking.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_rescuer", + "type": "address" + }, + { + "internalType": "address", + "name": "_executor", + "type": "address" + }, + { + "internalType": "address", + "name": "_stakingToken", + "type": "address" + }, + { + "internalType": "address", + "name": "_rewardToken", + "type": "address" + } + ], + "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": [], + "name": "CannotDelegate", + "type": "error" + }, + { + "inputs": [], + "name": "CannotDistribute", + "type": "error" + }, + { + "inputs": [], + "name": "CannotStake", + "type": "error" + }, + { + "inputs": [], + "name": "EnforcedPause", + "type": "error" + }, + { + "inputs": [], + "name": "ExpectedNonZero", + "type": "error" + }, + { + "inputs": [], + "name": "ExpectedPause", + "type": "error" + }, + { + "inputs": [], + "name": "FailedInnerCall", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "required", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "name": "InsufficientBalance", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidAccess", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidAddress", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidBlockNumber", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidOperation", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidParam", + "type": "error" + }, + { + "inputs": [], + "name": "NoStaker", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "SafeERC20FailedOperation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "timestampnow", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "unstakeTime", + "type": "uint256" + } + ], + "name": "UnstakeCooldown", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "daoExecutor", + "type": "address" + } + ], + "name": "DAOExecutorSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "delegator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "fromDelegate", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "toDelegate", + "type": "address" + } + ], + "name": "DelegateChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "delegate", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "previousBalance", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newBalance", + "type": "uint256" + } + ], + "name": "DelegateVotesChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "starter", + "type": "address" + } + ], + "name": "DistributionStarterSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "bytes4", + "name": "fnSelector", + "type": "bytes4" + }, + { + "indexed": true, + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "ExplicitAccessSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "name": "GoldDistributionNotified", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "migrator", + "type": "address" + } + ], + "name": "MigratorSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newExecutor", + "type": "address" + } + ], + "name": "NewExecutorAccepted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "oldProposedExecutor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newProposedExecutor", + "type": "address" + } + ], + "name": "NewExecutorProposed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newRescuer", + "type": "address" + } + ], + "name": "NewRescuerAccepted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "oldProposedRescuer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newProposedRescuer", + "type": "address" + } + ], + "name": "NewRescuerProposed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Paused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "RescueModeSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint160", + "name": "cooldown", + "type": "uint160" + } + ], + "name": "RewardDistributionCoolDownSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "duration", + "type": "uint256" + } + ], + "name": "RewardDurationSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "staker", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "toAddress", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "reward", + "type": "uint256" + } + ], + "name": "RewardPaid", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "staker", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Staked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TokenRecovered", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Unpaused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint32", + "name": "period", + "type": "uint32" + } + ], + "name": "UnstakeCooldownSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "staker", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Withdrawn", + "type": "event" + }, + { + "inputs": [], + "name": "MAXIMUM_UNSTAKE_COOLDOWN", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "WEEK_LENGTH", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "acceptExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "acceptRescuer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "claimableRewards", + "outputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "daoExecutor", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "delegatee", + "type": "address" + } + ], + "name": "delegate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "delegates", + "outputs": [ + { + "internalType": "address", + "name": "delegate", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "distributeGold", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "distributeRewards", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "distributionStarter", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "earned", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "executor", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "name": "explicitFunctionAccess", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "getAccountUnstakeTime", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "epoch", + "type": "uint256" + } + ], + "name": "getCheckpoint", + "outputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "fromBlock", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "votes", + "type": "uint256" + } + ], + "internalType": "struct ITempleGoldStaking.Checkpoint", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "getCurrentVotes", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + } + ], + "name": "getPriorVotes", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "staker", + "type": "address" + } + ], + "name": "getReward", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getRewardData", + "outputs": [ + { + "components": [ + { + "internalType": "uint40", + "name": "periodFinish", + "type": "uint40" + }, + { + "internalType": "uint216", + "name": "rewardRate", + "type": "uint216" + }, + { + "internalType": "uint40", + "name": "lastUpdateTime", + "type": "uint40" + }, + { + "internalType": "uint216", + "name": "rewardPerTokenStored", + "type": "uint216" + } + ], + "internalType": "struct ITempleGoldStaking.Reward", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "inRescueMode", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "lastRewardNotificationTimestamp", + "outputs": [ + { + "internalType": "uint96", + "name": "", + "type": "uint96" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "staker", + "type": "address" + } + ], + "name": "migrateWithdraw", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "migrator", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "nextRewardAmount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "notifyDistribution", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "numCheckpoints", + "outputs": [ + { + "internalType": "uint256", + "name": "number", + "type": "uint256" + } + ], + "stateMutability": "view", + "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": "account", + "type": "address" + } + ], + "name": "proposeNewExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "proposeNewRescuer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_token", + "type": "address" + }, + { + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "recoverToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "rescuer", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "rewardDistributionCoolDown", + "outputs": [ + { + "internalType": "uint160", + "name": "", + "type": "uint160" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "rewardDuration", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "rewardPerToken", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "rewardPeriodFinish", + "outputs": [ + { + "internalType": "uint40", + "name": "", + "type": "uint40" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "rewardToken", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_executor", + "type": "address" + } + ], + "name": "setDaoExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_starter", + "type": "address" + } + ], + "name": "setDistributionStarter", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "allowedCaller", + "type": "address" + }, + { + "components": [ + { + "internalType": "bytes4", + "name": "fnSelector", + "type": "bytes4" + }, + { + "internalType": "bool", + "name": "allowed", + "type": "bool" + } + ], + "internalType": "struct ITempleElevatedAccess.ExplicitAccess[]", + "name": "access", + "type": "tuple[]" + } + ], + "name": "setExplicitAccess", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_migrator", + "type": "address" + } + ], + "name": "setMigrator", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "setRescueMode", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint160", + "name": "_cooldown", + "type": "uint160" + } + ], + "name": "setRewardDistributionCoolDown", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_duration", + "type": "uint256" + } + ], + "name": "setRewardDuration", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "_period", + "type": "uint32" + } + ], + "name": "setUnstakeCooldown", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "stake", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "stakeTimes", + "outputs": [ + { + "internalType": "uint256", + "name": "stakeTime", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "stakingToken", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "unpause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "unstakeCooldown", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "userRewardPerTokenPaid", + "outputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "claimRewards", + "type": "bool" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60c060405234801561001057600080fd5b50604051613ee9380380613ee983398101604081905261002f9161011b565b83836001600160a01b0382166100585760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b03811661007f5760405163e6c4247b60e01b815260040160405180910390fd5b816001600160a01b0316816001600160a01b0316036100b15760405163e6c4247b60e01b815260040160405180910390fd5b600080546001600160a01b03199081166001600160a01b0394851617909155600180549091169183169190911790556004805460ff60a01b191690559182166080521660a0525061016f9050565b80516001600160a01b038116811461011657600080fd5b919050565b6000806000806080858703121561013157600080fd5b61013a856100ff565b9350610148602086016100ff565b9250610156604086016100ff565b9150610164606086016100ff565b905092959194509250565b60805160a051613d1d6101cc6000396000818161099c015281816112c701528181611d6f01528181612c7401526130ec01526000818161071e01528181611d1a015281816129df01528181612aa80152612fae0152613d1d6000f3fe608060405234801561001057600080fd5b506004361061036c5760003560e01c8063763c4036116101d3578063bfccf0ec11610104578063da4e88f2116100a2578063e9a776991161007c578063e9a776991461096e578063f520e7e51461098e578063f7c618c114610997578063fc83c95b146109be57600080fd5b8063da4e88f214610900578063daeccc7914610920578063dc01f60d1461094e57600080fd5b8063c34c08e5116100de578063c34c08e5146108bd578063ccb51004146108dd578063cd3daf9d146108e5578063d9a349c1146108ed57600080fd5b8063bfccf0ec14610884578063c00007b014610897578063c0ed00c9146108aa57600080fd5b80638963888c11610171578063a3f9f7d01161014b578063a3f9f7d014610838578063a694fc3a1461084b578063a7229fd91461085e578063b4b5ea571461087157600080fd5b80638963888c146107b85780638b876347146108055780639c0421991461082557600080fd5b80637cd07e47116101ad5780637cd07e47146107705780637eefd5ae146107985780638112c4af146107a85780638456cb59146107b057600080fd5b8063763c403614610740578063782d6fe11461075357806379dac2a01461076657600080fd5b806338d07436116102ad5780635c975abb1161024b5780636f4a2cd0116102255780636f4a2cd0146106bb5780636fcfff45146106c357806370a08231146106e357806372f702f31461071957600080fd5b80635c975abb1461057e578063654f2fc8146105a1578063668845d8146105b457600080fd5b806347f761f51161028757806347f761f5146104f45780634c92c5cd14610522578063587cde1e146105355780635c19a95c1461056b57600080fd5b806338d07436146104b95780633f4ba83a146104cc578063406194c5146104d457600080fd5b806318160ddd1161031a57806323cf3118116102f457806323cf31181461043f578063279084a61461045257806337a583581461046b57806338a631831461047457600080fd5b806318160ddd1461040e5780631ad25ffb146104175780631f2114051461043757600080fd5b8063135918081161034b57806313591808146103bf57806315ead477146103de5780631810fe7f146103f157600080fd5b80628cc26214610371578063032ef9011461039757806307f184f1146103ac575b600080fd5b61038461037f366004613900565b6109d1565b6040519081526020015b60405180910390f35b6103aa6103a536600461392b565b6109ef565b005b6103aa6103ba366004613900565b610a9e565b6103c962278d0081565b60405163ffffffff909116815260200161038e565b6103aa6103ec366004613900565b610bd6565b6003546103fe9060ff1681565b604051901515815260200161038e565b61038460075481565b610384610425366004613900565b60146020526000908152604090205481565b6103aa610cf6565b6103aa61044d366004613900565b610e15565b600c5460405164ffffffffff909116815260200161038e565b61038460085481565b6000546104949073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161038e565b6103aa6104c7366004613948565b610fbd565b6103aa611048565b6006546104949073ffffffffffffffffffffffffffffffffffffffff1681565b610507610502366004613978565b6110b6565b6040805182518152602092830151928101929092520161038e565b6103aa610530366004613900565b61110f565b610494610543366004613900565b600f6020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6103aa610579366004613900565b6112a2565b60045474010000000000000000000000000000000000000000900460ff166103fe565b6103aa6105af3660046139a4565b6112af565b61063b6040805160808101825260008082526020820181905291810182905260608101919091525060408051608081018252600c5464ffffffffff80821683527affffffffffffffffffffffffffffffffffffffffffffffffffffff650100000000009283900481166020850152600d549182169484019490945204909116606082015290565b60405161038e9190600060808201905064ffffffffff83511682527affffffffffffffffffffffffffffffffffffffffffffffffffffff602084015116602083015264ffffffffff60408401511660408301527affffffffffffffffffffffffffffffffffffffffffffffffffffff606084015116606083015292915050565b6103aa6113a3565b6103846106d1366004613900565b60136020526000908152604090205481565b6103846106f1366004613900565b73ffffffffffffffffffffffffffffffffffffffff166000908152600e602052604090205490565b6104947f000000000000000000000000000000000000000000000000000000000000000081565b61038461074e366004613900565b611649565b610384610761366004613978565b6116ba565b61038462093a8081565b600b5461049490640100000000900473ffffffffffffffffffffffffffffffffffffffff1681565b600b546103c99063ffffffff1681565b6103aa611907565b6103aa611a47565b600a546107e8907401000000000000000000000000000000000000000090046bffffffffffffffffffffffff1681565b6040516bffffffffffffffffffffffff909116815260200161038e565b610384610813366004613900565b60116020526000908152604090205481565b610384610833366004613900565b611ab3565b6103aa6108463660046139bd565b611b98565b6103aa6108593660046139a4565b611ca2565b6103aa61086c3660046139e3565b611cb4565b61038461087f366004613900565b611e81565b6103aa610892366004613a24565b611efd565b6103aa6108a5366004613900565b6120fc565b6103aa6108b83660046139a4565b61222c565b6001546104949073ffffffffffffffffffffffffffffffffffffffff1681565b6103aa612346565b610384612356565b6103aa6108fb366004613900565b612365565b600a546104949073ffffffffffffffffffffffffffffffffffffffff1681565b6103fe61092e366004613ade565b600260209081526000928352604080842090915290825290205460ff1681565b61038461095c366004613900565b60106020526000908152604090205481565b6005546104949073ffffffffffffffffffffffffffffffffffffffff1681565b61038460095481565b6104947f000000000000000000000000000000000000000000000000000000000000000081565b6103aa6109cc366004613900565b6124aa565b6000806109dc612581565b90506109e8838261267b565b9392505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610a40576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604051811515907f18f4a9a726c72020fd959c636d2fd464c6cefe90afeaea3c830b971614cf70b690600090a2600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610aef576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610b3c576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60035460405173ffffffffffffffffffffffffffffffffffffffff808416926101009004169033907f374d23b359cab0f8963c5c1715a6de7974f53af00aecc27de50d93906b70943e90600090a46003805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b610c04336000357fffffffff0000000000000000000000000000000000000000000000000000000016612704565b610c3a576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610c87576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f7cbcf2db31edf0f80b106b728f3e8f75d23576649e580cde45821df75db331e990600090a250565b60045473ffffffffffffffffffffffffffffffffffffffff163314610d47576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005473ffffffffffffffffffffffffffffffffffffffff163303610d98576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600154604051339173ffffffffffffffffffffffffffffffffffffffff16907fe963dc9c0d2165b080440a5d2665566142f2426b1ea15f3da8390b0fd336b06490600090a3600180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163317909155600480549091169055565b60065473ffffffffffffffffffffffffffffffffffffffff16610e9b57610e60336000357fffffffff0000000000000000000000000000000000000000000000000000000016612704565b610e96576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610eec565b60065473ffffffffffffffffffffffffffffffffffffffff163314610eec576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610f39576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600b80547fffffffffffffffff0000000000000000000000000000000000000000ffffffff1664010000000073ffffffffffffffffffffffffffffffffffffffff8416908102919091179091556040519081527f3ba4758949febc607e14523620298f8b5995b1848492ad7aa083372ac886ae07906020015b60405180910390a150565b610fc56127c7565b600b54336000908152601460205260408120549091610fec9163ffffffff90911690613b42565b905042811115611036576040517f497e9598000000000000000000000000000000000000000000000000000000008152426004820152602481018290526044015b60405180910390fd5b611043333385853361281c565b505050565b611076336000357fffffffff0000000000000000000000000000000000000000000000000000000016612704565b6110ac576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110b4612b3b565b565b6040805180820182526000808252602091820181905273ffffffffffffffffffffffffffffffffffffffff8516815260128252828120848252825282902082518084019093528054835260010154908201525b92915050565b60065473ffffffffffffffffffffffffffffffffffffffff166111955761115a336000357fffffffff0000000000000000000000000000000000000000000000000000000016612704565b611190576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111e6565b60065473ffffffffffffffffffffffffffffffffffffffff1633146111e6576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116611233576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f16d61a8ae20f45aed7c5f705859e84b0292aabf52ce61496c63db9ab14c228b490600090a250565b6112ac3382612bb8565b50565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614801590611320575061131e336000357fffffffff0000000000000000000000000000000000000000000000000000000016612704565b155b15611357576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600860008282546113699190613b42565b9091555050604080518281524260208201527f1e215fdd40f0b4854c5a2b2cfe53859ca232f085a5b129c9f65b6bfeb094c5e49101610fb2565b6113ab6127c7565b6000806113b6612581565b600d80547affffffffffffffffffffffffffffffffffffffffffffffffffffff8316650100000000000264ffffffffff91821617909155600c549192506113fd9116612c5d565b600d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000001664ffffffffff9290921691909117905573ffffffffffffffffffffffffffffffffffffffff8216156114c85761147682827affffffffffffffffffffffffffffffffffffffffffffffffffffff1661267b565b73ffffffffffffffffffffffffffffffffffffffff831660009081526010602090815260408083209390935560119052207affffffffffffffffffffffffffffffffffffffffffffffffffffff821690555b5060055473ffffffffffffffffffffffffffffffffffffffff16331461151a576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600754600003611556576040517f1090380d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a5442906115a29073ffffffffffffffffffffffffffffffffffffffff8116907401000000000000000000000000000000000000000090046bffffffffffffffffffffffff16613b55565b73ffffffffffffffffffffffffffffffffffffffff1611156115f0576040517f51e624a700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6115f8612c72565b600854600954811015611637576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060085561164581612cee565b5050565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260146020526040812054156116b257600b5473ffffffffffffffffffffffffffffffffffffffff83166000908152601460205260409020546116ad9163ffffffff1690613b42565b611109565b600092915050565b60004382106116f5576040517f4e47846c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83166000908152601360205260408120549081900361172d576000915050611109565b73ffffffffffffffffffffffffffffffffffffffff84166000908152601260205260408120849161175f600185613b81565b815260200190815260200160002060000154116117c15773ffffffffffffffffffffffffffffffffffffffff84166000908152601260205260408120906117a7600184613b81565b815260200190815260200160002060010154915050611109565b73ffffffffffffffffffffffffffffffffffffffff84166000908152601260209081526040808320838052909152902054831015611803576000915050611109565b600080611811600184613b81565b90505b818111156118ca576000600261182a8484613b81565b6118349190613b94565b61183e9083613b81565b73ffffffffffffffffffffffffffffffffffffffff881660009081526012602090815260408083208484528252918290208251808401909352805480845260019091015491830191909152919250908790036118a4576020015194506111099350505050565b80518711156118b5578193506118c3565b6118c0600183613b81565b92505b5050611814565b5073ffffffffffffffffffffffffffffffffffffffff85166000908152601260209081526040808320938352929052206001015491505092915050565b600354610100900473ffffffffffffffffffffffffffffffffffffffff16331461195d576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015473ffffffffffffffffffffffffffffffffffffffff1633036119ae576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054604051339273ffffffffffffffffffffffffffffffffffffffff909216917ff07131157ebea15896dc89264eb9a7572e67cc9fad6b855015730fcec10704e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001633179055600380547fffffffffffffffffffffff0000000000000000000000000000000000000000ff169055565b611a75336000357fffffffff0000000000000000000000000000000000000000000000000000000016612704565b611aab576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110b4612eeb565b600b54600090640100000000900473ffffffffffffffffffffffffffffffffffffffff163314611b0f576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611b5c576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600e6020526040902054611b9083338360018361281c565b90505b919050565b611bc6336000357fffffffff0000000000000000000000000000000000000000000000000000000016612704565b611bfc576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b62278d0063ffffffff82161115611c3f576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff83169081179091556040519081527f885b3532bfa278e4874fcd9bcd74c49a1682c9ff7eaa6b301cea6a7969e5813190602001610fb2565b611caa6127c7565b6112ac3382612f5a565b611ce2336000357fffffffff0000000000000000000000000000000000000000000000000000000016612704565b611d18576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480611dbd57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15611df4576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611e1573ffffffffffffffffffffffffffffffffffffffff84168383613012565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f879f92dded0f26b83c3e00b12e0395dc72cfc3077343d1854ed6988edd1f909683604051611e7491815260200190565b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526013602052604081205480611eb35760006109e8565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260126020526040812090611ee4600184613b81565b8152602001908152602001600020600101549392505050565b611f2b336000357fffffffff0000000000000000000000000000000000000000000000000000000016612704565b611f61576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316611fae576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805180820190915260008082526020820152819060005b828110156120f457848482818110611fe157611fe1613bcf565b905060400201803603810190611ff79190613bfe565b91508160200151151582600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168773ffffffffffffffffffffffffffffffffffffffff167ff5736e75de2c751f775d4c5ed517289f77074f8c337f451ba4c0c3ed1dd7f9ad60405160405180910390a460208281015173ffffffffffffffffffffffffffffffffffffffff8816600090815260028352604080822086517fffffffff000000000000000000000000000000000000000000000000000000001683529093529190912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101611fc7565b505050505050565b6121046127c7565b80600061210f612581565b600d80547affffffffffffffffffffffffffffffffffffffffffffffffffffff8316650100000000000264ffffffffff91821617909155600c549192506121569116612c5d565b600d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000001664ffffffffff9290921691909117905573ffffffffffffffffffffffffffffffffffffffff821615612221576121cf82827affffffffffffffffffffffffffffffffffffffffffffffffffffff1661267b565b73ffffffffffffffffffffffffffffffffffffffff831660009081526010602090815260408083209390935560119052207affffffffffffffffffffffffffffffffffffffffffffffffffffff821690555b506116458283613093565b61225a336000357fffffffff0000000000000000000000000000000000000000000000000000000016612704565b612290576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b62093a808110156122cd576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600c544264ffffffffff90911610612311576040517f398d4d3200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60098190556040518181527f823b3cede11929e1b876086e20886121c9c32f04426a36ed323a85d541df3b8e90602001610fb2565b61234e6127c7565b6110b4612c72565b6000612360612581565b905090565b612393336000357fffffffff0000000000000000000000000000000000000000000000000000000016612704565b6123c9576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116612416576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60045460015460405173ffffffffffffffffffffffffffffffffffffffff8085169381169216907f4857570a90fe0a0fc580e89a287e77576141ac8e2e8b3710cd26db44f44156c190600090a4600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6124d8336000357fffffffff0000000000000000000000000000000000000000000000000000000016612704565b61250e576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527ffac87d3c8a428a7011075404cc37f2669246fcd04ff5c3098e32d122de1d9c6890602001610fb2565b6000600754600014806125a25750600c54600d5464ffffffffff9081169116145b156125d45750600d546501000000000090047affffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b600754600c54600d547affffffffffffffffffffffffffffffffffffffffffffffffffffff650100000000008304169164ffffffffff918216916126189116612c5d565b6126229190613b81565b61262c9190613c84565b61263e90670de0b6b3a7640000613c84565b6126489190613b94565b600d5461236091906501000000000090047affffffffffffffffffffffffffffffffffffffffffffffffffffff16613b42565b73ffffffffffffffffffffffffffffffffffffffff82166000908152601060209081526040808320546011909252822054670de0b6b3a7640000906126c09085613b81565b73ffffffffffffffffffffffffffffffffffffffff86166000908152600e60205260409020546126f09190613c84565b6126fa9190613b94565b6109e89190613b42565b60035460009060ff1615612736575060005473ffffffffffffffffffffffffffffffffffffffff838116911614611109565b60015473ffffffffffffffffffffffffffffffffffffffff848116911614806127b1575073ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290205460ff165b156127be57506001611109565b50600092915050565b60045474010000000000000000000000000000000000000000900460ff16156110b4576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b846000612827612581565b600d80547affffffffffffffffffffffffffffffffffffffffffffffffffffff8316650100000000000264ffffffffff91821617909155600c5491925061286e9116612c5d565b600d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000001664ffffffffff9290921691909117905573ffffffffffffffffffffffffffffffffffffffff821615612939576128e782827affffffffffffffffffffffffffffffffffffffffffffffffffffff1661267b565b73ffffffffffffffffffffffffffffffffffffffff831660009081526010602090815260408083209390935560119052207affffffffffffffffffffffffffffffffffffffffffffffffffffff821690555b5083600003612974576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff86166000908152600e602052604090205480851115612a1a576040517fdb42144d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166004820152602481018690526044810182905260640161102d565b73ffffffffffffffffffffffffffffffffffffffff87166000908152600e60205260408120868303905560078054879290612a56908490613b81565b909155505073ffffffffffffffffffffffffffffffffffffffff8088166000908152600f6020526040812054612a8e9216908761316c565b612acf73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168787613012565b6040805173ffffffffffffffffffffffffffffffffffffffff8881168252602082018890528916917fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb910160405180910390a28315612b3257612b328784613093565b50505050505050565b612b4361330f565b600480547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b73ffffffffffffffffffffffffffffffffffffffff8083166000818152600f602081815260408084208054600e845282862054949093528787167fffffffffffffffffffffffff00000000000000000000000000000000000000008416811790915590519190951694919391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4612c5782848361316c565b50505050565b600042821015612c6b575090565b5042919050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631249c58b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612cda57600080fd5b505af1158015612c57573d6000803e3d6000fd5b600954600c5464ffffffffff164210612d6857612d0b8183613b94565b600c805464ffffffffff16650100000000007affffffffffffffffffffffffffffffffffffffffffffffffffffff93841681029190911791829055612d569284929190910416613c84565b612d609083613b81565b600855612e35565b600c54600090612d8090429064ffffffffff16613b81565b600c54909150600090612db9906501000000000090047affffffffffffffffffffffffffffffffffffffffffffffffffffff1683613c84565b905082612dc68286613b42565b612dd09190613b94565b600c805464ffffffffff16650100000000007affffffffffffffffffffffffffffffffffffffffffffffffffffff93841681029190911791829055612e1b9286929190910416613c84565b612e258286613b42565b612e2f9190613b81565b60085550505b600d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000164264ffffffffff811691909117909155612e76908290613b42565b600c80547fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000001664ffffffffff929092169190911790555050600a805473ffffffffffffffffffffffffffffffffffffffff164263ffffffff167401000000000000000000000000000000000000000002179055565b612ef36127c7565b600480547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612b8e3390565b80600003612f94576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612fd673ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016333084613363565b612fe082826133a9565b73ffffffffffffffffffffffffffffffffffffffff8083166000908152600f602052604081205461164592168361316c565b60405173ffffffffffffffffffffffffffffffffffffffff83811660248301526044820183905261104391859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050613572565b73ffffffffffffffffffffffffffffffffffffffff821660009081526010602052604090205480156110435773ffffffffffffffffffffffffffffffffffffffff808416600090815260106020526040812055613113907f0000000000000000000000000000000000000000000000000000000000000000168383613012565b6040805173ffffffffffffffffffffffffffffffffffffffff8481168252602082018490528516917f540798df468d7b23d11f156fdb954cb19ad414d150722a7b6d55ba369dea792e91015b60405180910390a2505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156131a85750600081115b156110435773ffffffffffffffffffffffffffffffffffffffff8316156132605773ffffffffffffffffffffffffffffffffffffffff831660009081526013602052604081205490816131fc576000613240565b73ffffffffffffffffffffffffffffffffffffffff851660009081526012602052604081209061322d600185613b81565b8152602001908152602001600020600101545b9050600061324e8483613b81565b905061325c86848484613608565b5050505b73ffffffffffffffffffffffffffffffffffffffff8216156110435773ffffffffffffffffffffffffffffffffffffffff821660009081526013602052604081205490816132af5760006132f3565b73ffffffffffffffffffffffffffffffffffffffff84166000908152601260205260408120906132e0600185613b81565b8152602001908152602001600020600101545b905060006133018483613b42565b90506120f485848484613608565b60045474010000000000000000000000000000000000000000900460ff166110b4576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405173ffffffffffffffffffffffffffffffffffffffff8481166024830152838116604483015260648201839052612c579186918216906323b872dd9060840161304c565b8160006133b4612581565b600d80547affffffffffffffffffffffffffffffffffffffffffffffffffffff8316650100000000000264ffffffffff91821617909155600c549192506133fb9116612c5d565b600d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000001664ffffffffff9290921691909117905573ffffffffffffffffffffffffffffffffffffffff8216156134c65761347482827affffffffffffffffffffffffffffffffffffffffffffffffffffff1661267b565b73ffffffffffffffffffffffffffffffffffffffff831660009081526010602090815260408083209390935560119052207affffffffffffffffffffffffffffffffffffffffffffffffffffff821690555b5081600760008282546134d99190613b42565b909155505073ffffffffffffffffffffffffffffffffffffffff83166000908152600e602052604081208054849290613513908490613b42565b909155505073ffffffffffffffffffffffffffffffffffffffff831660008181526014602052604090819020429055517f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d9061315f9085815260200190565b600061359473ffffffffffffffffffffffffffffffffffffffff84168361377e565b905080516000141580156135b95750808060200190518101906135b79190613c9b565b155b15611043576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260240161102d565b600083118015613659575073ffffffffffffffffffffffffffffffffffffffff841660009081526012602052604081204391613645600187613b81565b815260200190815260200160002060000154145b156136a95773ffffffffffffffffffffffffffffffffffffffff841660009081526012602052604081208291613690600187613b81565b8152602081019190915260400160002060010155613727565b604080518082018252438152602080820184815273ffffffffffffffffffffffffffffffffffffffff8816600090815260128352848120888252909252929020905181559051600191820155613700908490613b42565b73ffffffffffffffffffffffffffffffffffffffff85166000908152601360205260409020555b604080518381526020810183905273ffffffffffffffffffffffffffffffffffffffff8616917fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724910160405180910390a250505050565b60606109e883836000846000808573ffffffffffffffffffffffffffffffffffffffff1684866040516137b19190613cb8565b60006040518083038185875af1925050503d80600081146137ee576040519150601f19603f3d011682016040523d82523d6000602084013e6137f3565b606091505b509150915061380386838361380d565b9695505050505050565b6060826138225761381d8261389c565b6109e8565b8151158015613846575073ffffffffffffffffffffffffffffffffffffffff84163b155b15613895576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240161102d565b50806109e8565b8051156138ac5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff811681146112ac57600080fd5b60006020828403121561391257600080fd5b81356109e8816138de565b80151581146112ac57600080fd5b60006020828403121561393d57600080fd5b81356109e88161391d565b6000806040838503121561395b57600080fd5b82359150602083013561396d8161391d565b809150509250929050565b6000806040838503121561398b57600080fd5b8235613996816138de565b946020939093013593505050565b6000602082840312156139b657600080fd5b5035919050565b6000602082840312156139cf57600080fd5b813563ffffffff811681146109e857600080fd5b6000806000606084860312156139f857600080fd5b8335613a03816138de565b92506020840135613a13816138de565b929592945050506040919091013590565b600080600060408486031215613a3957600080fd5b8335613a44816138de565b9250602084013567ffffffffffffffff811115613a6057600080fd5b8401601f81018613613a7157600080fd5b803567ffffffffffffffff811115613a8857600080fd5b8660208260061b8401011115613a9d57600080fd5b939660209190910195509293505050565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114611b9357600080fd5b60008060408385031215613af157600080fd5b8235613afc816138de565b9150613b0a60208401613aae565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561110957611109613b13565b73ffffffffffffffffffffffffffffffffffffffff818116838216019081111561110957611109613b13565b8181038181111561110957611109613b13565b600082613bca577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006040828403128015613c1157600080fd5b506040805190810167ffffffffffffffff81118282101715613c5c577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604052613c6883613aae565b81526020830135613c788161391d565b60208201529392505050565b808202811582820484141761110957611109613b13565b600060208284031215613cad57600080fd5b81516109e88161391d565b6000825160005b81811015613cd95760208186018101518583015201613cbf565b50600092019182525091905056fea2646970667358221220a638bf31cf2f76851a14da070a6501cdf3cbb3488593a5df2dc1bf24e405af8564736f6c634300081c0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061036c5760003560e01c8063763c4036116101d3578063bfccf0ec11610104578063da4e88f2116100a2578063e9a776991161007c578063e9a776991461096e578063f520e7e51461098e578063f7c618c114610997578063fc83c95b146109be57600080fd5b8063da4e88f214610900578063daeccc7914610920578063dc01f60d1461094e57600080fd5b8063c34c08e5116100de578063c34c08e5146108bd578063ccb51004146108dd578063cd3daf9d146108e5578063d9a349c1146108ed57600080fd5b8063bfccf0ec14610884578063c00007b014610897578063c0ed00c9146108aa57600080fd5b80638963888c11610171578063a3f9f7d01161014b578063a3f9f7d014610838578063a694fc3a1461084b578063a7229fd91461085e578063b4b5ea571461087157600080fd5b80638963888c146107b85780638b876347146108055780639c0421991461082557600080fd5b80637cd07e47116101ad5780637cd07e47146107705780637eefd5ae146107985780638112c4af146107a85780638456cb59146107b057600080fd5b8063763c403614610740578063782d6fe11461075357806379dac2a01461076657600080fd5b806338d07436116102ad5780635c975abb1161024b5780636f4a2cd0116102255780636f4a2cd0146106bb5780636fcfff45146106c357806370a08231146106e357806372f702f31461071957600080fd5b80635c975abb1461057e578063654f2fc8146105a1578063668845d8146105b457600080fd5b806347f761f51161028757806347f761f5146104f45780634c92c5cd14610522578063587cde1e146105355780635c19a95c1461056b57600080fd5b806338d07436146104b95780633f4ba83a146104cc578063406194c5146104d457600080fd5b806318160ddd1161031a57806323cf3118116102f457806323cf31181461043f578063279084a61461045257806337a583581461046b57806338a631831461047457600080fd5b806318160ddd1461040e5780631ad25ffb146104175780631f2114051461043757600080fd5b8063135918081161034b57806313591808146103bf57806315ead477146103de5780631810fe7f146103f157600080fd5b80628cc26214610371578063032ef9011461039757806307f184f1146103ac575b600080fd5b61038461037f366004613900565b6109d1565b6040519081526020015b60405180910390f35b6103aa6103a536600461392b565b6109ef565b005b6103aa6103ba366004613900565b610a9e565b6103c962278d0081565b60405163ffffffff909116815260200161038e565b6103aa6103ec366004613900565b610bd6565b6003546103fe9060ff1681565b604051901515815260200161038e565b61038460075481565b610384610425366004613900565b60146020526000908152604090205481565b6103aa610cf6565b6103aa61044d366004613900565b610e15565b600c5460405164ffffffffff909116815260200161038e565b61038460085481565b6000546104949073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161038e565b6103aa6104c7366004613948565b610fbd565b6103aa611048565b6006546104949073ffffffffffffffffffffffffffffffffffffffff1681565b610507610502366004613978565b6110b6565b6040805182518152602092830151928101929092520161038e565b6103aa610530366004613900565b61110f565b610494610543366004613900565b600f6020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6103aa610579366004613900565b6112a2565b60045474010000000000000000000000000000000000000000900460ff166103fe565b6103aa6105af3660046139a4565b6112af565b61063b6040805160808101825260008082526020820181905291810182905260608101919091525060408051608081018252600c5464ffffffffff80821683527affffffffffffffffffffffffffffffffffffffffffffffffffffff650100000000009283900481166020850152600d549182169484019490945204909116606082015290565b60405161038e9190600060808201905064ffffffffff83511682527affffffffffffffffffffffffffffffffffffffffffffffffffffff602084015116602083015264ffffffffff60408401511660408301527affffffffffffffffffffffffffffffffffffffffffffffffffffff606084015116606083015292915050565b6103aa6113a3565b6103846106d1366004613900565b60136020526000908152604090205481565b6103846106f1366004613900565b73ffffffffffffffffffffffffffffffffffffffff166000908152600e602052604090205490565b6104947f000000000000000000000000000000000000000000000000000000000000000081565b61038461074e366004613900565b611649565b610384610761366004613978565b6116ba565b61038462093a8081565b600b5461049490640100000000900473ffffffffffffffffffffffffffffffffffffffff1681565b600b546103c99063ffffffff1681565b6103aa611907565b6103aa611a47565b600a546107e8907401000000000000000000000000000000000000000090046bffffffffffffffffffffffff1681565b6040516bffffffffffffffffffffffff909116815260200161038e565b610384610813366004613900565b60116020526000908152604090205481565b610384610833366004613900565b611ab3565b6103aa6108463660046139bd565b611b98565b6103aa6108593660046139a4565b611ca2565b6103aa61086c3660046139e3565b611cb4565b61038461087f366004613900565b611e81565b6103aa610892366004613a24565b611efd565b6103aa6108a5366004613900565b6120fc565b6103aa6108b83660046139a4565b61222c565b6001546104949073ffffffffffffffffffffffffffffffffffffffff1681565b6103aa612346565b610384612356565b6103aa6108fb366004613900565b612365565b600a546104949073ffffffffffffffffffffffffffffffffffffffff1681565b6103fe61092e366004613ade565b600260209081526000928352604080842090915290825290205460ff1681565b61038461095c366004613900565b60106020526000908152604090205481565b6005546104949073ffffffffffffffffffffffffffffffffffffffff1681565b61038460095481565b6104947f000000000000000000000000000000000000000000000000000000000000000081565b6103aa6109cc366004613900565b6124aa565b6000806109dc612581565b90506109e8838261267b565b9392505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610a40576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604051811515907f18f4a9a726c72020fd959c636d2fd464c6cefe90afeaea3c830b971614cf70b690600090a2600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610aef576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610b3c576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60035460405173ffffffffffffffffffffffffffffffffffffffff808416926101009004169033907f374d23b359cab0f8963c5c1715a6de7974f53af00aecc27de50d93906b70943e90600090a46003805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b610c04336000357fffffffff0000000000000000000000000000000000000000000000000000000016612704565b610c3a576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610c87576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f7cbcf2db31edf0f80b106b728f3e8f75d23576649e580cde45821df75db331e990600090a250565b60045473ffffffffffffffffffffffffffffffffffffffff163314610d47576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005473ffffffffffffffffffffffffffffffffffffffff163303610d98576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600154604051339173ffffffffffffffffffffffffffffffffffffffff16907fe963dc9c0d2165b080440a5d2665566142f2426b1ea15f3da8390b0fd336b06490600090a3600180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163317909155600480549091169055565b60065473ffffffffffffffffffffffffffffffffffffffff16610e9b57610e60336000357fffffffff0000000000000000000000000000000000000000000000000000000016612704565b610e96576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610eec565b60065473ffffffffffffffffffffffffffffffffffffffff163314610eec576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610f39576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600b80547fffffffffffffffff0000000000000000000000000000000000000000ffffffff1664010000000073ffffffffffffffffffffffffffffffffffffffff8416908102919091179091556040519081527f3ba4758949febc607e14523620298f8b5995b1848492ad7aa083372ac886ae07906020015b60405180910390a150565b610fc56127c7565b600b54336000908152601460205260408120549091610fec9163ffffffff90911690613b42565b905042811115611036576040517f497e9598000000000000000000000000000000000000000000000000000000008152426004820152602481018290526044015b60405180910390fd5b611043333385853361281c565b505050565b611076336000357fffffffff0000000000000000000000000000000000000000000000000000000016612704565b6110ac576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110b4612b3b565b565b6040805180820182526000808252602091820181905273ffffffffffffffffffffffffffffffffffffffff8516815260128252828120848252825282902082518084019093528054835260010154908201525b92915050565b60065473ffffffffffffffffffffffffffffffffffffffff166111955761115a336000357fffffffff0000000000000000000000000000000000000000000000000000000016612704565b611190576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111e6565b60065473ffffffffffffffffffffffffffffffffffffffff1633146111e6576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116611233576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f16d61a8ae20f45aed7c5f705859e84b0292aabf52ce61496c63db9ab14c228b490600090a250565b6112ac3382612bb8565b50565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614801590611320575061131e336000357fffffffff0000000000000000000000000000000000000000000000000000000016612704565b155b15611357576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600860008282546113699190613b42565b9091555050604080518281524260208201527f1e215fdd40f0b4854c5a2b2cfe53859ca232f085a5b129c9f65b6bfeb094c5e49101610fb2565b6113ab6127c7565b6000806113b6612581565b600d80547affffffffffffffffffffffffffffffffffffffffffffffffffffff8316650100000000000264ffffffffff91821617909155600c549192506113fd9116612c5d565b600d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000001664ffffffffff9290921691909117905573ffffffffffffffffffffffffffffffffffffffff8216156114c85761147682827affffffffffffffffffffffffffffffffffffffffffffffffffffff1661267b565b73ffffffffffffffffffffffffffffffffffffffff831660009081526010602090815260408083209390935560119052207affffffffffffffffffffffffffffffffffffffffffffffffffffff821690555b5060055473ffffffffffffffffffffffffffffffffffffffff16331461151a576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600754600003611556576040517f1090380d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a5442906115a29073ffffffffffffffffffffffffffffffffffffffff8116907401000000000000000000000000000000000000000090046bffffffffffffffffffffffff16613b55565b73ffffffffffffffffffffffffffffffffffffffff1611156115f0576040517f51e624a700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6115f8612c72565b600854600954811015611637576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060085561164581612cee565b5050565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260146020526040812054156116b257600b5473ffffffffffffffffffffffffffffffffffffffff83166000908152601460205260409020546116ad9163ffffffff1690613b42565b611109565b600092915050565b60004382106116f5576040517f4e47846c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83166000908152601360205260408120549081900361172d576000915050611109565b73ffffffffffffffffffffffffffffffffffffffff84166000908152601260205260408120849161175f600185613b81565b815260200190815260200160002060000154116117c15773ffffffffffffffffffffffffffffffffffffffff84166000908152601260205260408120906117a7600184613b81565b815260200190815260200160002060010154915050611109565b73ffffffffffffffffffffffffffffffffffffffff84166000908152601260209081526040808320838052909152902054831015611803576000915050611109565b600080611811600184613b81565b90505b818111156118ca576000600261182a8484613b81565b6118349190613b94565b61183e9083613b81565b73ffffffffffffffffffffffffffffffffffffffff881660009081526012602090815260408083208484528252918290208251808401909352805480845260019091015491830191909152919250908790036118a4576020015194506111099350505050565b80518711156118b5578193506118c3565b6118c0600183613b81565b92505b5050611814565b5073ffffffffffffffffffffffffffffffffffffffff85166000908152601260209081526040808320938352929052206001015491505092915050565b600354610100900473ffffffffffffffffffffffffffffffffffffffff16331461195d576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015473ffffffffffffffffffffffffffffffffffffffff1633036119ae576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054604051339273ffffffffffffffffffffffffffffffffffffffff909216917ff07131157ebea15896dc89264eb9a7572e67cc9fad6b855015730fcec10704e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001633179055600380547fffffffffffffffffffffff0000000000000000000000000000000000000000ff169055565b611a75336000357fffffffff0000000000000000000000000000000000000000000000000000000016612704565b611aab576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110b4612eeb565b600b54600090640100000000900473ffffffffffffffffffffffffffffffffffffffff163314611b0f576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611b5c576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600e6020526040902054611b9083338360018361281c565b90505b919050565b611bc6336000357fffffffff0000000000000000000000000000000000000000000000000000000016612704565b611bfc576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b62278d0063ffffffff82161115611c3f576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff83169081179091556040519081527f885b3532bfa278e4874fcd9bcd74c49a1682c9ff7eaa6b301cea6a7969e5813190602001610fb2565b611caa6127c7565b6112ac3382612f5a565b611ce2336000357fffffffff0000000000000000000000000000000000000000000000000000000016612704565b611d18576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480611dbd57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15611df4576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611e1573ffffffffffffffffffffffffffffffffffffffff84168383613012565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f879f92dded0f26b83c3e00b12e0395dc72cfc3077343d1854ed6988edd1f909683604051611e7491815260200190565b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526013602052604081205480611eb35760006109e8565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260126020526040812090611ee4600184613b81565b8152602001908152602001600020600101549392505050565b611f2b336000357fffffffff0000000000000000000000000000000000000000000000000000000016612704565b611f61576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316611fae576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805180820190915260008082526020820152819060005b828110156120f457848482818110611fe157611fe1613bcf565b905060400201803603810190611ff79190613bfe565b91508160200151151582600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168773ffffffffffffffffffffffffffffffffffffffff167ff5736e75de2c751f775d4c5ed517289f77074f8c337f451ba4c0c3ed1dd7f9ad60405160405180910390a460208281015173ffffffffffffffffffffffffffffffffffffffff8816600090815260028352604080822086517fffffffff000000000000000000000000000000000000000000000000000000001683529093529190912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101611fc7565b505050505050565b6121046127c7565b80600061210f612581565b600d80547affffffffffffffffffffffffffffffffffffffffffffffffffffff8316650100000000000264ffffffffff91821617909155600c549192506121569116612c5d565b600d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000001664ffffffffff9290921691909117905573ffffffffffffffffffffffffffffffffffffffff821615612221576121cf82827affffffffffffffffffffffffffffffffffffffffffffffffffffff1661267b565b73ffffffffffffffffffffffffffffffffffffffff831660009081526010602090815260408083209390935560119052207affffffffffffffffffffffffffffffffffffffffffffffffffffff821690555b506116458283613093565b61225a336000357fffffffff0000000000000000000000000000000000000000000000000000000016612704565b612290576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b62093a808110156122cd576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600c544264ffffffffff90911610612311576040517f398d4d3200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60098190556040518181527f823b3cede11929e1b876086e20886121c9c32f04426a36ed323a85d541df3b8e90602001610fb2565b61234e6127c7565b6110b4612c72565b6000612360612581565b905090565b612393336000357fffffffff0000000000000000000000000000000000000000000000000000000016612704565b6123c9576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116612416576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60045460015460405173ffffffffffffffffffffffffffffffffffffffff8085169381169216907f4857570a90fe0a0fc580e89a287e77576141ac8e2e8b3710cd26db44f44156c190600090a4600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6124d8336000357fffffffff0000000000000000000000000000000000000000000000000000000016612704565b61250e576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527ffac87d3c8a428a7011075404cc37f2669246fcd04ff5c3098e32d122de1d9c6890602001610fb2565b6000600754600014806125a25750600c54600d5464ffffffffff9081169116145b156125d45750600d546501000000000090047affffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b600754600c54600d547affffffffffffffffffffffffffffffffffffffffffffffffffffff650100000000008304169164ffffffffff918216916126189116612c5d565b6126229190613b81565b61262c9190613c84565b61263e90670de0b6b3a7640000613c84565b6126489190613b94565b600d5461236091906501000000000090047affffffffffffffffffffffffffffffffffffffffffffffffffffff16613b42565b73ffffffffffffffffffffffffffffffffffffffff82166000908152601060209081526040808320546011909252822054670de0b6b3a7640000906126c09085613b81565b73ffffffffffffffffffffffffffffffffffffffff86166000908152600e60205260409020546126f09190613c84565b6126fa9190613b94565b6109e89190613b42565b60035460009060ff1615612736575060005473ffffffffffffffffffffffffffffffffffffffff838116911614611109565b60015473ffffffffffffffffffffffffffffffffffffffff848116911614806127b1575073ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290205460ff165b156127be57506001611109565b50600092915050565b60045474010000000000000000000000000000000000000000900460ff16156110b4576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b846000612827612581565b600d80547affffffffffffffffffffffffffffffffffffffffffffffffffffff8316650100000000000264ffffffffff91821617909155600c5491925061286e9116612c5d565b600d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000001664ffffffffff9290921691909117905573ffffffffffffffffffffffffffffffffffffffff821615612939576128e782827affffffffffffffffffffffffffffffffffffffffffffffffffffff1661267b565b73ffffffffffffffffffffffffffffffffffffffff831660009081526010602090815260408083209390935560119052207affffffffffffffffffffffffffffffffffffffffffffffffffffff821690555b5083600003612974576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff86166000908152600e602052604090205480851115612a1a576040517fdb42144d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166004820152602481018690526044810182905260640161102d565b73ffffffffffffffffffffffffffffffffffffffff87166000908152600e60205260408120868303905560078054879290612a56908490613b81565b909155505073ffffffffffffffffffffffffffffffffffffffff8088166000908152600f6020526040812054612a8e9216908761316c565b612acf73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168787613012565b6040805173ffffffffffffffffffffffffffffffffffffffff8881168252602082018890528916917fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb910160405180910390a28315612b3257612b328784613093565b50505050505050565b612b4361330f565b600480547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b73ffffffffffffffffffffffffffffffffffffffff8083166000818152600f602081815260408084208054600e845282862054949093528787167fffffffffffffffffffffffff00000000000000000000000000000000000000008416811790915590519190951694919391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4612c5782848361316c565b50505050565b600042821015612c6b575090565b5042919050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631249c58b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612cda57600080fd5b505af1158015612c57573d6000803e3d6000fd5b600954600c5464ffffffffff164210612d6857612d0b8183613b94565b600c805464ffffffffff16650100000000007affffffffffffffffffffffffffffffffffffffffffffffffffffff93841681029190911791829055612d569284929190910416613c84565b612d609083613b81565b600855612e35565b600c54600090612d8090429064ffffffffff16613b81565b600c54909150600090612db9906501000000000090047affffffffffffffffffffffffffffffffffffffffffffffffffffff1683613c84565b905082612dc68286613b42565b612dd09190613b94565b600c805464ffffffffff16650100000000007affffffffffffffffffffffffffffffffffffffffffffffffffffff93841681029190911791829055612e1b9286929190910416613c84565b612e258286613b42565b612e2f9190613b81565b60085550505b600d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000164264ffffffffff811691909117909155612e76908290613b42565b600c80547fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000001664ffffffffff929092169190911790555050600a805473ffffffffffffffffffffffffffffffffffffffff164263ffffffff167401000000000000000000000000000000000000000002179055565b612ef36127c7565b600480547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612b8e3390565b80600003612f94576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612fd673ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016333084613363565b612fe082826133a9565b73ffffffffffffffffffffffffffffffffffffffff8083166000908152600f602052604081205461164592168361316c565b60405173ffffffffffffffffffffffffffffffffffffffff83811660248301526044820183905261104391859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050613572565b73ffffffffffffffffffffffffffffffffffffffff821660009081526010602052604090205480156110435773ffffffffffffffffffffffffffffffffffffffff808416600090815260106020526040812055613113907f0000000000000000000000000000000000000000000000000000000000000000168383613012565b6040805173ffffffffffffffffffffffffffffffffffffffff8481168252602082018490528516917f540798df468d7b23d11f156fdb954cb19ad414d150722a7b6d55ba369dea792e91015b60405180910390a2505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156131a85750600081115b156110435773ffffffffffffffffffffffffffffffffffffffff8316156132605773ffffffffffffffffffffffffffffffffffffffff831660009081526013602052604081205490816131fc576000613240565b73ffffffffffffffffffffffffffffffffffffffff851660009081526012602052604081209061322d600185613b81565b8152602001908152602001600020600101545b9050600061324e8483613b81565b905061325c86848484613608565b5050505b73ffffffffffffffffffffffffffffffffffffffff8216156110435773ffffffffffffffffffffffffffffffffffffffff821660009081526013602052604081205490816132af5760006132f3565b73ffffffffffffffffffffffffffffffffffffffff84166000908152601260205260408120906132e0600185613b81565b8152602001908152602001600020600101545b905060006133018483613b42565b90506120f485848484613608565b60045474010000000000000000000000000000000000000000900460ff166110b4576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405173ffffffffffffffffffffffffffffffffffffffff8481166024830152838116604483015260648201839052612c579186918216906323b872dd9060840161304c565b8160006133b4612581565b600d80547affffffffffffffffffffffffffffffffffffffffffffffffffffff8316650100000000000264ffffffffff91821617909155600c549192506133fb9116612c5d565b600d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000001664ffffffffff9290921691909117905573ffffffffffffffffffffffffffffffffffffffff8216156134c65761347482827affffffffffffffffffffffffffffffffffffffffffffffffffffff1661267b565b73ffffffffffffffffffffffffffffffffffffffff831660009081526010602090815260408083209390935560119052207affffffffffffffffffffffffffffffffffffffffffffffffffffff821690555b5081600760008282546134d99190613b42565b909155505073ffffffffffffffffffffffffffffffffffffffff83166000908152600e602052604081208054849290613513908490613b42565b909155505073ffffffffffffffffffffffffffffffffffffffff831660008181526014602052604090819020429055517f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d9061315f9085815260200190565b600061359473ffffffffffffffffffffffffffffffffffffffff84168361377e565b905080516000141580156135b95750808060200190518101906135b79190613c9b565b155b15611043576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260240161102d565b600083118015613659575073ffffffffffffffffffffffffffffffffffffffff841660009081526012602052604081204391613645600187613b81565b815260200190815260200160002060000154145b156136a95773ffffffffffffffffffffffffffffffffffffffff841660009081526012602052604081208291613690600187613b81565b8152602081019190915260400160002060010155613727565b604080518082018252438152602080820184815273ffffffffffffffffffffffffffffffffffffffff8816600090815260128352848120888252909252929020905181559051600191820155613700908490613b42565b73ffffffffffffffffffffffffffffffffffffffff85166000908152601360205260409020555b604080518381526020810183905273ffffffffffffffffffffffffffffffffffffffff8616917fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724910160405180910390a250505050565b60606109e883836000846000808573ffffffffffffffffffffffffffffffffffffffff1684866040516137b19190613cb8565b60006040518083038185875af1925050503d80600081146137ee576040519150601f19603f3d011682016040523d82523d6000602084013e6137f3565b606091505b509150915061380386838361380d565b9695505050505050565b6060826138225761381d8261389c565b6109e8565b8151158015613846575073ffffffffffffffffffffffffffffffffffffffff84163b155b15613895576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240161102d565b50806109e8565b8051156138ac5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff811681146112ac57600080fd5b60006020828403121561391257600080fd5b81356109e8816138de565b80151581146112ac57600080fd5b60006020828403121561393d57600080fd5b81356109e88161391d565b6000806040838503121561395b57600080fd5b82359150602083013561396d8161391d565b809150509250929050565b6000806040838503121561398b57600080fd5b8235613996816138de565b946020939093013593505050565b6000602082840312156139b657600080fd5b5035919050565b6000602082840312156139cf57600080fd5b813563ffffffff811681146109e857600080fd5b6000806000606084860312156139f857600080fd5b8335613a03816138de565b92506020840135613a13816138de565b929592945050506040919091013590565b600080600060408486031215613a3957600080fd5b8335613a44816138de565b9250602084013567ffffffffffffffff811115613a6057600080fd5b8401601f81018613613a7157600080fd5b803567ffffffffffffffff811115613a8857600080fd5b8660208260061b8401011115613a9d57600080fd5b939660209190910195509293505050565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114611b9357600080fd5b60008060408385031215613af157600080fd5b8235613afc816138de565b9150613b0a60208401613aae565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561110957611109613b13565b73ffffffffffffffffffffffffffffffffffffffff818116838216019081111561110957611109613b13565b8181038181111561110957611109613b13565b600082613bca577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006040828403128015613c1157600080fd5b506040805190810167ffffffffffffffff81118282101715613c5c577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604052613c6883613aae565b81526020830135613c788161391d565b60208201529392505050565b808202811582820484141761110957611109613b13565b600060208284031215613cad57600080fd5b81516109e88161391d565b6000825160005b81811015613cd95760208186018101518583015201613cbf565b50600092019182525091905056fea2646970667358221220a638bf31cf2f76851a14da070a6501cdf3cbb3488593a5df2dc1bf24e405af8564736f6c634300081c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/abi/contracts/templegold/TempleTeleporter.sol/TempleTeleporter.json b/apps/dapp/abi/contracts/templegold/TempleTeleporter.sol/TempleTeleporter.json new file mode 100644 index 000000000..aa3a115f5 --- /dev/null +++ b/apps/dapp/abi/contracts/templegold/TempleTeleporter.sol/TempleTeleporter.json @@ -0,0 +1,668 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "TempleTeleporter", + "sourceName": "contracts/templegold/TempleTeleporter.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_executor", + "type": "address" + }, + { + "internalType": "address", + "name": "_temple", + "type": "address" + }, + { + "internalType": "address", + "name": "_endpoint", + "type": "address" + } + ], + "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": [], + "name": "ExpectedNonZero", + "type": "error" + }, + { + "inputs": [], + "name": "FailedInnerCall", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidAddress", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidDelegate", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidEndpointCall", + "type": "error" + }, + { + "inputs": [], + "name": "LzTokenUnavailable", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "eid", + "type": "uint32" + } + ], + "name": "NoPeer", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "msgValue", + "type": "uint256" + } + ], + "name": "NotEnoughNative", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "addr", + "type": "address" + } + ], + "name": "OnlyEndpoint", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "eid", + "type": "uint32" + }, + { + "internalType": "bytes32", + "name": "sender", + "type": "bytes32" + } + ], + "name": "OnlyPeer", + "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": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "SafeERC20FailedOperation", + "type": "error" + }, + { + "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": false, + "internalType": "uint32", + "name": "eid", + "type": "uint32" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "peer", + "type": "bytes32" + } + ], + "name": "PeerSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint32", + "name": "dstEid", + "type": "uint32" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TempleTeleported", + "type": "event" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint32", + "name": "srcEid", + "type": "uint32" + }, + { + "internalType": "bytes32", + "name": "sender", + "type": "bytes32" + }, + { + "internalType": "uint64", + "name": "nonce", + "type": "uint64" + } + ], + "internalType": "struct Origin", + "name": "origin", + "type": "tuple" + } + ], + "name": "allowInitializePath", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "endpoint", + "outputs": [ + { + "internalType": "contract ILayerZeroEndpointV2", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint32", + "name": "srcEid", + "type": "uint32" + }, + { + "internalType": "bytes32", + "name": "sender", + "type": "bytes32" + }, + { + "internalType": "uint64", + "name": "nonce", + "type": "uint64" + } + ], + "internalType": "struct Origin", + "name": "", + "type": "tuple" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + }, + { + "internalType": "address", + "name": "_sender", + "type": "address" + } + ], + "name": "isComposeMsgSender", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint32", + "name": "srcEid", + "type": "uint32" + }, + { + "internalType": "bytes32", + "name": "sender", + "type": "bytes32" + }, + { + "internalType": "uint64", + "name": "nonce", + "type": "uint64" + } + ], + "internalType": "struct Origin", + "name": "_origin", + "type": "tuple" + }, + { + "internalType": "bytes32", + "name": "_guid", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "_message", + "type": "bytes" + }, + { + "internalType": "address", + "name": "_executor", + "type": "address" + }, + { + "internalType": "bytes", + "name": "_extraData", + "type": "bytes" + } + ], + "name": "lzReceive", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + }, + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "nextNonce", + "outputs": [ + { + "internalType": "uint64", + "name": "nonce", + "type": "uint64" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "oAppVersion", + "outputs": [ + { + "internalType": "uint64", + "name": "senderVersion", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "receiverVersion", + "type": "uint64" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "eid", + "type": "uint32" + } + ], + "name": "peers", + "outputs": [ + { + "internalType": "bytes32", + "name": "peer", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "_dstEid", + "type": "uint32" + }, + { + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "_options", + "type": "bytes" + } + ], + "name": "quote", + "outputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "nativeFee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lzTokenFee", + "type": "uint256" + } + ], + "internalType": "struct MessagingFee", + "name": "fee", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "_dstEid", + "type": "uint32" + }, + { + "internalType": "bytes", + "name": "_message", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "_options", + "type": "bytes" + } + ], + "name": "quote", + "outputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "nativeFee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lzTokenFee", + "type": "uint256" + } + ], + "internalType": "struct MessagingFee", + "name": "fee", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_delegate", + "type": "address" + } + ], + "name": "setDelegate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "_eid", + "type": "uint32" + }, + { + "internalType": "bytes32", + "name": "_peer", + "type": "bytes32" + } + ], + "name": "setPeer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "dstEid", + "type": "uint32" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "options", + "type": "bytes" + } + ], + "name": "teleport", + "outputs": [ + { + "components": [ + { + "internalType": "bytes32", + "name": "guid", + "type": "bytes32" + }, + { + "internalType": "uint64", + "name": "nonce", + "type": "uint64" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "nativeFee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lzTokenFee", + "type": "uint256" + } + ], + "internalType": "struct MessagingFee", + "name": "fee", + "type": "tuple" + } + ], + "internalType": "struct MessagingReceipt", + "name": "receipt", + "type": "tuple" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "temple", + "outputs": [ + { + "internalType": "contract ITempleERC20Token", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60c060405234801561001057600080fd5b50604051611ac7380380611ac783398101604081905261002f9161017e565b80838181806001600160a01b03811661006257604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b61006b81610112565b506001600160a01b03808316608052811661009957604051632d618d8160e21b815260040160405180910390fd5b60805160405163ca5eb5e160e01b81526001600160a01b0383811660048301529091169063ca5eb5e190602401600060405180830381600087803b1580156100e057600080fd5b505af11580156100f4573d6000803e3d6000fd5b5050506001600160a01b0390961660a052506101c195505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b038116811461017957600080fd5b919050565b60008060006060848603121561019357600080fd5b61019c84610162565b92506101aa60208501610162565b91506101b860408501610162565b90509250925092565b60805160a0516118a961021e600039600081816102a4015281816105f601526109b6015260008181610166015281816103b00152818161077901528181610b6f01528181610c5f01528181610d730152610e5d01526118a96000f3fe6080604052600436106100f35760003560e01c80638da5cb5b1161008a578063d65d28c311610059578063d65d28c314610321578063f2fde38b1461034e578063fccbe2201461036e578063ff7bd03d1461038e57600080fd5b80638da5cb5b1461026757806397cd9a3414610292578063bb0b6a53146102c6578063ca5eb5e11461030157600080fd5b8063715018a6116100c6578063715018a6146101ad5780637626be8c146101c25780637d25a05e146101e257806382413eac1461021b57600080fd5b806313137d65146100f857806317442b701461010d5780633400288b146101345780635e280f1114610154575b600080fd5b61010b6101063660046111db565b6103ae565b005b34801561011957600080fd5b50604080516001815260026020820152015b60405180910390f35b34801561014057600080fd5b5061010b61014f366004611297565b6104ad565b34801561016057600080fd5b506101887f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161012b565b3480156101b957600080fd5b5061010b6104c3565b6101d56101d03660046112c1565b6104d7565b60405161012b9190611332565b3480156101ee57600080fd5b506102026101fd366004611297565b610723565b60405167ffffffffffffffff909116815260200161012b565b34801561022757600080fd5b50610257610236366004611375565b73ffffffffffffffffffffffffffffffffffffffff81163014949350505050565b604051901515815260200161012b565b34801561027357600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff16610188565b34801561029e57600080fd5b506101887f000000000000000000000000000000000000000000000000000000000000000081565b3480156102d257600080fd5b506102f36102e13660046113dc565b60016020526000908152604090205481565b60405190815260200161012b565b34801561030d57600080fd5b5061010b61031c3660046113f7565b61072c565b34801561032d57600080fd5b5061034161033c3660046114f0565b6107d8565b60405161012b919061155a565b34801561035a57600080fd5b5061010b6103693660046113f7565b61083b565b34801561037a57600080fd5b50610341610389366004611571565b61089f565b34801561039a57600080fd5b506102576103a93660046115ea565b6108ca565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163314610424576040517f91ac5e4f0000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b6020870180359061043e90610439908a6113dc565b610900565b146104955761045060208801886113dc565b6040517fc26bebcc00000000000000000000000000000000000000000000000000000000815263ffffffff90911660048201526020880135602482015260440161041b565b6104a487878787878787610955565b50505050505050565b6104b5610a1f565b6104bf8282610a72565b5050565b6104cb610a1f565b6104d56000610ac7565b565b6104df611110565b83600003610519576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8516610566576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff86166040805160208101929092528101869052606001604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018152908290527f79cc67900000000000000000000000000000000000000000000000000000000082523360048301526024820187905291507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b15801561064f57600080fd5b505af1158015610663573d6000803e3d6000fd5b50506040805163ffffffff8b1681526020810189905273ffffffffffffffffffffffffffffffffffffffff8a1693503392507f54c4a194b05dc181761d873dfa15d370b0836fb76e18164f589b71d591c7a73a910160405180910390a3610718878286868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052506040805180820190915234815260208101919091529250339150610b3c9050565b979650505050505050565b60005b92915050565b610734610a1f565b6040517fca5eb5e100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063ca5eb5e190602401600060405180830381600087803b1580156107bd57600080fd5b505af11580156107d1573d6000803e3d6000fd5b5050505050565b60408051808201909152600080825260208201526108328573ffffffffffffffffffffffffffffffffffffffff86166040805160208101929092528101869052606001604051602081830303815290604052846000610c49565b95945050505050565b610843610a1f565b73ffffffffffffffffffffffffffffffffffffffff8116610893576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526000600482015260240161041b565b61089c81610ac7565b50565b60408051808201909152600080825260208201526108c08484846000610c49565b90505b9392505050565b60006020820180359060019083906108e290866113dc565b63ffffffff1681526020810191909152604001600020541492915050565b63ffffffff811660009081526001602052604081205480610726576040517ff6ff4fb700000000000000000000000000000000000000000000000000000000815263ffffffff8416600482015260240161041b565b60008061096486880188611606565b6040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8084166004830152602482018390529294509092507f0000000000000000000000000000000000000000000000000000000000000000909116906340c10f1990604401600060405180830381600087803b1580156109fc57600080fd5b505af1158015610a10573d6000803e3d6000fd5b50505050505050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146104d5576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161041b565b63ffffffff8216600081815260016020908152604091829020849055815192835282018390527f238399d427b947898edb290f5ff0f9109849b1c3ba196a42e35f00c50a54b98b910160405180910390a15050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610b44611110565b6000610b538460000151610d2e565b602085015190915015610b6d57610b6d8460200151610d6f565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632637a450826040518060a001604052808b63ffffffff168152602001610bca8c610900565b81526020018a815260200189815260200160008960200151111515815250866040518463ffffffff1660e01b8152600401610c06929190611692565b60806040518083038185885af1158015610c24573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906107189190611785565b60408051808201909152600080825260208201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ddc28c586040518060a001604052808863ffffffff168152602001610cb989610900565b8152602001878152602001868152602001851515815250306040518363ffffffff1660e01b8152600401610cee929190611692565b6040805180830381865afa158015610d0a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083291906117fc565b6000813414610d6b576040517f9f70412000000000000000000000000000000000000000000000000000000000815234600482015260240161041b565b5090565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e4fe1d946040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ddc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e009190611818565b905073ffffffffffffffffffffffffffffffffffffffff8116610e4f576040517f5373352a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805133602482018190527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff818116604485015260648085018890528551808603909101815260849094019094526020830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790526104bf938516928690610f0f908590610f15565b50505050565b6000610f3773ffffffffffffffffffffffffffffffffffffffff841683610fb0565b90508051600014158015610f5c575080806020019051810190610f5a9190611835565b155b15610fab576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260240161041b565b505050565b60606108c383836000846000808573ffffffffffffffffffffffffffffffffffffffff168486604051610fe39190611857565b60006040518083038185875af1925050503d8060008114611020576040519150601f19603f3d011682016040523d82523d6000602084013e611025565b606091505b509150915061103586838361103f565b9695505050505050565b6060826110545761104f826110ce565b6108c3565b8151158015611078575073ffffffffffffffffffffffffffffffffffffffff84163b155b156110c7576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240161041b565b50806108c3565b8051156110de5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604051806060016040528060008019168152602001600067ffffffffffffffff168152602001611153604051806040016040528060008152602001600081525090565b905290565b60006060828403121561116a57600080fd5b50919050565b60008083601f84011261118257600080fd5b50813567ffffffffffffffff81111561119a57600080fd5b6020830191508360208285010111156111b257600080fd5b9250929050565b73ffffffffffffffffffffffffffffffffffffffff8116811461089c57600080fd5b600080600080600080600060e0888a0312156111f657600080fd5b6112008989611158565b965060608801359550608088013567ffffffffffffffff81111561122357600080fd5b61122f8a828b01611170565b90965094505060a0880135611243816111b9565b925060c088013567ffffffffffffffff81111561125f57600080fd5b61126b8a828b01611170565b989b979a50959850939692959293505050565b803563ffffffff8116811461129257600080fd5b919050565b600080604083850312156112aa57600080fd5b6112b38361127e565b946020939093013593505050565b6000806000806000608086880312156112d957600080fd5b6112e28661127e565b945060208601356112f2816111b9565b935060408601359250606086013567ffffffffffffffff81111561131557600080fd5b61132188828901611170565b969995985093965092949392505050565b60006080820190508251825267ffffffffffffffff6020840151166020830152604083015161136e604084018280518252602090810151910152565b5092915050565b60008060008060a0858703121561138b57600080fd5b6113958686611158565b9350606085013567ffffffffffffffff8111156113b157600080fd5b6113bd87828801611170565b90945092505060808501356113d1816111b9565b939692955090935050565b6000602082840312156113ee57600080fd5b6108c38261127e565b60006020828403121561140957600080fd5b81356108c3816111b9565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261145457600080fd5b813567ffffffffffffffff81111561146e5761146e611414565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff811182821017156114bb576114bb611414565b6040528181528382016020018510156114d357600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806080858703121561150657600080fd5b61150f8561127e565b9350602085013561151f816111b9565b925060408501359150606085013567ffffffffffffffff81111561154257600080fd5b61154e87828801611443565b91505092959194509250565b815181526020808301519082015260408101610726565b60008060006060848603121561158657600080fd5b61158f8461127e565b9250602084013567ffffffffffffffff8111156115ab57600080fd5b6115b786828701611443565b925050604084013567ffffffffffffffff8111156115d457600080fd5b6115e086828701611443565b9150509250925092565b6000606082840312156115fc57600080fd5b6108c38383611158565b6000806040838503121561161957600080fd5b82356112b3816111b9565b60005b8381101561163f578181015183820152602001611627565b50506000910152565b60008151808452611660816020860160208601611624565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6040815263ffffffff8351166040820152602083015160608201526000604084015160a060808401526116c860e0840182611648565b905060608501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08483030160a08501526117038282611648565b60809690960151151560c085015250505073ffffffffffffffffffffffffffffffffffffffff9190911660209091015290565b60006040828403121561174857600080fd5b6040805190810167ffffffffffffffff8111828210171561176b5761176b611414565b604052825181526020928301519281019290925250919050565b6000608082840312801561179857600080fd5b506040516060810167ffffffffffffffff811182821017156117bc576117bc611414565b60405282518152602083015167ffffffffffffffff811681146117de57600080fd5b60208201526117f08460408501611736565b60408201529392505050565b60006040828403121561180e57600080fd5b6108c38383611736565b60006020828403121561182a57600080fd5b81516108c3816111b9565b60006020828403121561184757600080fd5b815180151581146108c357600080fd5b60008251611869818460208701611624565b919091019291505056fea264697066735822122043f7196bebff6dfdd5193b0693b6b9e994957a28c8366b11af22819c57c168f664736f6c634300081c0033", + "deployedBytecode": "0x6080604052600436106100f35760003560e01c80638da5cb5b1161008a578063d65d28c311610059578063d65d28c314610321578063f2fde38b1461034e578063fccbe2201461036e578063ff7bd03d1461038e57600080fd5b80638da5cb5b1461026757806397cd9a3414610292578063bb0b6a53146102c6578063ca5eb5e11461030157600080fd5b8063715018a6116100c6578063715018a6146101ad5780637626be8c146101c25780637d25a05e146101e257806382413eac1461021b57600080fd5b806313137d65146100f857806317442b701461010d5780633400288b146101345780635e280f1114610154575b600080fd5b61010b6101063660046111db565b6103ae565b005b34801561011957600080fd5b50604080516001815260026020820152015b60405180910390f35b34801561014057600080fd5b5061010b61014f366004611297565b6104ad565b34801561016057600080fd5b506101887f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161012b565b3480156101b957600080fd5b5061010b6104c3565b6101d56101d03660046112c1565b6104d7565b60405161012b9190611332565b3480156101ee57600080fd5b506102026101fd366004611297565b610723565b60405167ffffffffffffffff909116815260200161012b565b34801561022757600080fd5b50610257610236366004611375565b73ffffffffffffffffffffffffffffffffffffffff81163014949350505050565b604051901515815260200161012b565b34801561027357600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff16610188565b34801561029e57600080fd5b506101887f000000000000000000000000000000000000000000000000000000000000000081565b3480156102d257600080fd5b506102f36102e13660046113dc565b60016020526000908152604090205481565b60405190815260200161012b565b34801561030d57600080fd5b5061010b61031c3660046113f7565b61072c565b34801561032d57600080fd5b5061034161033c3660046114f0565b6107d8565b60405161012b919061155a565b34801561035a57600080fd5b5061010b6103693660046113f7565b61083b565b34801561037a57600080fd5b50610341610389366004611571565b61089f565b34801561039a57600080fd5b506102576103a93660046115ea565b6108ca565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163314610424576040517f91ac5e4f0000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b6020870180359061043e90610439908a6113dc565b610900565b146104955761045060208801886113dc565b6040517fc26bebcc00000000000000000000000000000000000000000000000000000000815263ffffffff90911660048201526020880135602482015260440161041b565b6104a487878787878787610955565b50505050505050565b6104b5610a1f565b6104bf8282610a72565b5050565b6104cb610a1f565b6104d56000610ac7565b565b6104df611110565b83600003610519576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8516610566576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff86166040805160208101929092528101869052606001604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018152908290527f79cc67900000000000000000000000000000000000000000000000000000000082523360048301526024820187905291507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379cc679090604401600060405180830381600087803b15801561064f57600080fd5b505af1158015610663573d6000803e3d6000fd5b50506040805163ffffffff8b1681526020810189905273ffffffffffffffffffffffffffffffffffffffff8a1693503392507f54c4a194b05dc181761d873dfa15d370b0836fb76e18164f589b71d591c7a73a910160405180910390a3610718878286868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052506040805180820190915234815260208101919091529250339150610b3c9050565b979650505050505050565b60005b92915050565b610734610a1f565b6040517fca5eb5e100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063ca5eb5e190602401600060405180830381600087803b1580156107bd57600080fd5b505af11580156107d1573d6000803e3d6000fd5b5050505050565b60408051808201909152600080825260208201526108328573ffffffffffffffffffffffffffffffffffffffff86166040805160208101929092528101869052606001604051602081830303815290604052846000610c49565b95945050505050565b610843610a1f565b73ffffffffffffffffffffffffffffffffffffffff8116610893576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526000600482015260240161041b565b61089c81610ac7565b50565b60408051808201909152600080825260208201526108c08484846000610c49565b90505b9392505050565b60006020820180359060019083906108e290866113dc565b63ffffffff1681526020810191909152604001600020541492915050565b63ffffffff811660009081526001602052604081205480610726576040517ff6ff4fb700000000000000000000000000000000000000000000000000000000815263ffffffff8416600482015260240161041b565b60008061096486880188611606565b6040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8084166004830152602482018390529294509092507f0000000000000000000000000000000000000000000000000000000000000000909116906340c10f1990604401600060405180830381600087803b1580156109fc57600080fd5b505af1158015610a10573d6000803e3d6000fd5b50505050505050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146104d5576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161041b565b63ffffffff8216600081815260016020908152604091829020849055815192835282018390527f238399d427b947898edb290f5ff0f9109849b1c3ba196a42e35f00c50a54b98b910160405180910390a15050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610b44611110565b6000610b538460000151610d2e565b602085015190915015610b6d57610b6d8460200151610d6f565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632637a450826040518060a001604052808b63ffffffff168152602001610bca8c610900565b81526020018a815260200189815260200160008960200151111515815250866040518463ffffffff1660e01b8152600401610c06929190611692565b60806040518083038185885af1158015610c24573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906107189190611785565b60408051808201909152600080825260208201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ddc28c586040518060a001604052808863ffffffff168152602001610cb989610900565b8152602001878152602001868152602001851515815250306040518363ffffffff1660e01b8152600401610cee929190611692565b6040805180830381865afa158015610d0a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083291906117fc565b6000813414610d6b576040517f9f70412000000000000000000000000000000000000000000000000000000000815234600482015260240161041b565b5090565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e4fe1d946040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ddc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e009190611818565b905073ffffffffffffffffffffffffffffffffffffffff8116610e4f576040517f5373352a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805133602482018190527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff818116604485015260648085018890528551808603909101815260849094019094526020830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790526104bf938516928690610f0f908590610f15565b50505050565b6000610f3773ffffffffffffffffffffffffffffffffffffffff841683610fb0565b90508051600014158015610f5c575080806020019051810190610f5a9190611835565b155b15610fab576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260240161041b565b505050565b60606108c383836000846000808573ffffffffffffffffffffffffffffffffffffffff168486604051610fe39190611857565b60006040518083038185875af1925050503d8060008114611020576040519150601f19603f3d011682016040523d82523d6000602084013e611025565b606091505b509150915061103586838361103f565b9695505050505050565b6060826110545761104f826110ce565b6108c3565b8151158015611078575073ffffffffffffffffffffffffffffffffffffffff84163b155b156110c7576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240161041b565b50806108c3565b8051156110de5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604051806060016040528060008019168152602001600067ffffffffffffffff168152602001611153604051806040016040528060008152602001600081525090565b905290565b60006060828403121561116a57600080fd5b50919050565b60008083601f84011261118257600080fd5b50813567ffffffffffffffff81111561119a57600080fd5b6020830191508360208285010111156111b257600080fd5b9250929050565b73ffffffffffffffffffffffffffffffffffffffff8116811461089c57600080fd5b600080600080600080600060e0888a0312156111f657600080fd5b6112008989611158565b965060608801359550608088013567ffffffffffffffff81111561122357600080fd5b61122f8a828b01611170565b90965094505060a0880135611243816111b9565b925060c088013567ffffffffffffffff81111561125f57600080fd5b61126b8a828b01611170565b989b979a50959850939692959293505050565b803563ffffffff8116811461129257600080fd5b919050565b600080604083850312156112aa57600080fd5b6112b38361127e565b946020939093013593505050565b6000806000806000608086880312156112d957600080fd5b6112e28661127e565b945060208601356112f2816111b9565b935060408601359250606086013567ffffffffffffffff81111561131557600080fd5b61132188828901611170565b969995985093965092949392505050565b60006080820190508251825267ffffffffffffffff6020840151166020830152604083015161136e604084018280518252602090810151910152565b5092915050565b60008060008060a0858703121561138b57600080fd5b6113958686611158565b9350606085013567ffffffffffffffff8111156113b157600080fd5b6113bd87828801611170565b90945092505060808501356113d1816111b9565b939692955090935050565b6000602082840312156113ee57600080fd5b6108c38261127e565b60006020828403121561140957600080fd5b81356108c3816111b9565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261145457600080fd5b813567ffffffffffffffff81111561146e5761146e611414565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff811182821017156114bb576114bb611414565b6040528181528382016020018510156114d357600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806080858703121561150657600080fd5b61150f8561127e565b9350602085013561151f816111b9565b925060408501359150606085013567ffffffffffffffff81111561154257600080fd5b61154e87828801611443565b91505092959194509250565b815181526020808301519082015260408101610726565b60008060006060848603121561158657600080fd5b61158f8461127e565b9250602084013567ffffffffffffffff8111156115ab57600080fd5b6115b786828701611443565b925050604084013567ffffffffffffffff8111156115d457600080fd5b6115e086828701611443565b9150509250925092565b6000606082840312156115fc57600080fd5b6108c38383611158565b6000806040838503121561161957600080fd5b82356112b3816111b9565b60005b8381101561163f578181015183820152602001611627565b50506000910152565b60008151808452611660816020860160208601611624565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6040815263ffffffff8351166040820152602083015160608201526000604084015160a060808401526116c860e0840182611648565b905060608501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08483030160a08501526117038282611648565b60809690960151151560c085015250505073ffffffffffffffffffffffffffffffffffffffff9190911660209091015290565b60006040828403121561174857600080fd5b6040805190810167ffffffffffffffff8111828210171561176b5761176b611414565b604052825181526020928301519281019290925250919050565b6000608082840312801561179857600080fd5b506040516060810167ffffffffffffffff811182821017156117bc576117bc611414565b60405282518152602083015167ffffffffffffffff811681146117de57600080fd5b60208201526117f08460408501611736565b60408201529392505050565b60006040828403121561180e57600080fd5b6108c38383611736565b60006020828403121561182a57600080fd5b81516108c3816111b9565b60006020828403121561184757600080fd5b815180151581146108c357600080fd5b60008251611869818460208701611624565b919091019291505056fea264697066735822122043f7196bebff6dfdd5193b0693b6b9e994957a28c8366b11af22819c57c168f664736f6c634300081c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/apps/dapp/package.json b/apps/dapp/package.json index d630b4ce9..ee4ffad3d 100644 --- a/apps/dapp/package.json +++ b/apps/dapp/package.json @@ -21,7 +21,6 @@ }, "dependencies": { "@balancer-labs/sdk": "^1.1.6", - "@cowprotocol/widget-react": "^0.12.0", "@safe-global/safe-apps-provider": "^0.18.0", "@safe-global/safe-apps-sdk": "^8.1.0", "@safe-global/safe-core-sdk-types": "2.3.0", @@ -53,8 +52,7 @@ "tippy.js": "^6.3.7", "use-debounce": "^9.0.2", "use-interval": "^1.4.0", - "util": "^0.12.4", - "zod": "^3.19.1" + "util": "^0.12.4" }, "devDependencies": { "@babel/core": "^7.16.0", @@ -96,5 +94,6 @@ "typescript": "^5.5.4", "vite": "^5.2.10", "vite-plugin-svgr": "^4.2.0" - } + }, + "packageManager": "yarn@1.22.21" } diff --git a/apps/dapp/src/assets/icons/Dai.svg b/apps/dapp/src/assets/icons/Dai.svg new file mode 100644 index 000000000..a5a2647df --- /dev/null +++ b/apps/dapp/src/assets/icons/Dai.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/apps/dapp/src/assets/icons/active.svg b/apps/dapp/src/assets/icons/active.svg new file mode 100644 index 000000000..2fbb03c9b --- /dev/null +++ b/apps/dapp/src/assets/icons/active.svg @@ -0,0 +1,231 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/dapp/src/assets/icons/arbitrum.svg b/apps/dapp/src/assets/icons/arbitrum.svg new file mode 100644 index 000000000..fb799add6 --- /dev/null +++ b/apps/dapp/src/assets/icons/arbitrum.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/apps/dapp/src/assets/icons/box.svg b/apps/dapp/src/assets/icons/box.svg new file mode 100644 index 000000000..022df10f6 --- /dev/null +++ b/apps/dapp/src/assets/icons/box.svg @@ -0,0 +1,3 @@ + + + diff --git a/apps/dapp/src/assets/icons/check.svg b/apps/dapp/src/assets/icons/check.svg new file mode 100644 index 000000000..4ebbe4852 --- /dev/null +++ b/apps/dapp/src/assets/icons/check.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/apps/dapp/src/assets/icons/checkbox-square.svg b/apps/dapp/src/assets/icons/checkbox-square.svg new file mode 100644 index 000000000..022df10f6 --- /dev/null +++ b/apps/dapp/src/assets/icons/checkbox-square.svg @@ -0,0 +1,3 @@ + + + diff --git a/apps/dapp/src/assets/icons/checkbox.svg b/apps/dapp/src/assets/icons/checkbox.svg new file mode 100644 index 000000000..c27455311 --- /dev/null +++ b/apps/dapp/src/assets/icons/checkbox.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/dapp/src/assets/icons/checkmark-in-box.svg b/apps/dapp/src/assets/icons/checkmark-in-box.svg new file mode 100644 index 000000000..78de80e68 --- /dev/null +++ b/apps/dapp/src/assets/icons/checkmark-in-box.svg @@ -0,0 +1,4 @@ + + + + diff --git a/apps/dapp/src/assets/icons/checkmark.svg b/apps/dapp/src/assets/icons/checkmark.svg new file mode 100644 index 000000000..0ea00e712 --- /dev/null +++ b/apps/dapp/src/assets/icons/checkmark.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/apps/dapp/src/assets/icons/chevron_left.svg b/apps/dapp/src/assets/icons/chevron_left.svg new file mode 100644 index 000000000..c8d6a1430 --- /dev/null +++ b/apps/dapp/src/assets/icons/chevron_left.svg @@ -0,0 +1,3 @@ + + + diff --git a/apps/dapp/src/assets/icons/chevron_right.svg b/apps/dapp/src/assets/icons/chevron_right.svg new file mode 100644 index 000000000..f15885d52 --- /dev/null +++ b/apps/dapp/src/assets/icons/chevron_right.svg @@ -0,0 +1,3 @@ + + + diff --git a/apps/dapp/src/assets/icons/circle.svg b/apps/dapp/src/assets/icons/circle.svg new file mode 100644 index 000000000..cca71b68f --- /dev/null +++ b/apps/dapp/src/assets/icons/circle.svg @@ -0,0 +1,3 @@ + + + diff --git a/apps/dapp/src/assets/icons/close.svg b/apps/dapp/src/assets/icons/close.svg new file mode 100644 index 000000000..e2ed52d38 --- /dev/null +++ b/apps/dapp/src/assets/icons/close.svg @@ -0,0 +1,3 @@ + + + diff --git a/apps/dapp/src/assets/icons/expand_more.svg b/apps/dapp/src/assets/icons/expand_more.svg new file mode 100644 index 000000000..00b19434f --- /dev/null +++ b/apps/dapp/src/assets/icons/expand_more.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/apps/dapp/src/assets/icons/first_page.svg b/apps/dapp/src/assets/icons/first_page.svg new file mode 100644 index 000000000..cb6534e17 --- /dev/null +++ b/apps/dapp/src/assets/icons/first_page.svg @@ -0,0 +1,3 @@ + + + diff --git a/apps/dapp/src/assets/icons/info.svg b/apps/dapp/src/assets/icons/info.svg new file mode 100644 index 000000000..a8da3e3ff --- /dev/null +++ b/apps/dapp/src/assets/icons/info.svg @@ -0,0 +1,3 @@ + + + diff --git a/apps/dapp/src/assets/icons/last_page.svg b/apps/dapp/src/assets/icons/last_page.svg new file mode 100644 index 000000000..f9bdf2f1c --- /dev/null +++ b/apps/dapp/src/assets/icons/last_page.svg @@ -0,0 +1,3 @@ + + + diff --git a/apps/dapp/src/assets/icons/live-gold-auction.svg b/apps/dapp/src/assets/icons/live-gold-auction.svg new file mode 100644 index 000000000..c8908fd0d --- /dev/null +++ b/apps/dapp/src/assets/icons/live-gold-auction.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/apps/dapp/src/assets/icons/priority-high.svg b/apps/dapp/src/assets/icons/priority-high.svg new file mode 100644 index 000000000..000918b85 --- /dev/null +++ b/apps/dapp/src/assets/icons/priority-high.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/apps/dapp/src/assets/icons/scheduled.svg b/apps/dapp/src/assets/icons/scheduled.svg new file mode 100644 index 000000000..b17be6492 --- /dev/null +++ b/apps/dapp/src/assets/icons/scheduled.svg @@ -0,0 +1,206 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/dapp/src/assets/icons/selector.svg b/apps/dapp/src/assets/icons/selector.svg new file mode 100644 index 000000000..7d000b206 --- /dev/null +++ b/apps/dapp/src/assets/icons/selector.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/dapp/src/assets/icons/stake-temple.svg b/apps/dapp/src/assets/icons/stake-temple.svg new file mode 100644 index 000000000..397f12d68 --- /dev/null +++ b/apps/dapp/src/assets/icons/stake-temple.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/apps/dapp/src/assets/icons/storefront.svg b/apps/dapp/src/assets/icons/storefront.svg new file mode 100644 index 000000000..dd3ec51d2 --- /dev/null +++ b/apps/dapp/src/assets/icons/storefront.svg @@ -0,0 +1,3 @@ + + + diff --git a/apps/dapp/src/assets/icons/temple-gold.svg b/apps/dapp/src/assets/icons/temple-gold.svg new file mode 100644 index 000000000..992c0aa01 --- /dev/null +++ b/apps/dapp/src/assets/icons/temple-gold.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/apps/dapp/src/assets/icons/usds.svg b/apps/dapp/src/assets/icons/usds.svg new file mode 100644 index 000000000..25df90674 --- /dev/null +++ b/apps/dapp/src/assets/icons/usds.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/apps/dapp/src/assets/icons/wallet.svg b/apps/dapp/src/assets/icons/wallet.svg new file mode 100644 index 000000000..cf98643a9 --- /dev/null +++ b/apps/dapp/src/assets/icons/wallet.svg @@ -0,0 +1,4 @@ + + + + diff --git a/apps/dapp/src/assets/images/all-spices.svg b/apps/dapp/src/assets/images/all-spices.svg new file mode 100644 index 000000000..314eae869 --- /dev/null +++ b/apps/dapp/src/assets/images/all-spices.svg @@ -0,0 +1,457 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/dapp/src/assets/images/earn-circle-left-mobile.svg b/apps/dapp/src/assets/images/earn-circle-left-mobile.svg new file mode 100644 index 000000000..c54ba6c23 --- /dev/null +++ b/apps/dapp/src/assets/images/earn-circle-left-mobile.svg @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/dapp/src/assets/images/earn-circle-left.svg b/apps/dapp/src/assets/images/earn-circle-left.svg new file mode 100644 index 000000000..69861227a --- /dev/null +++ b/apps/dapp/src/assets/images/earn-circle-left.svg @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/dapp/src/assets/images/earn-circle-right.svg b/apps/dapp/src/assets/images/earn-circle-right.svg new file mode 100644 index 000000000..6de1cd0f5 --- /dev/null +++ b/apps/dapp/src/assets/images/earn-circle-right.svg @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/dapp/src/assets/images/gold-auctions.svg b/apps/dapp/src/assets/images/gold-auctions.svg new file mode 100644 index 000000000..6f72f404d --- /dev/null +++ b/apps/dapp/src/assets/images/gold-auctions.svg @@ -0,0 +1,1178 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/dapp/src/assets/images/spice-all-spices.svg b/apps/dapp/src/assets/images/spice-all-spices.svg new file mode 100644 index 000000000..de0a573dc --- /dev/null +++ b/apps/dapp/src/assets/images/spice-all-spices.svg @@ -0,0 +1,457 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/dapp/src/assets/images/spice-bazaar.svg b/apps/dapp/src/assets/images/spice-bazaar.svg new file mode 100644 index 000000000..fa01cb65f --- /dev/null +++ b/apps/dapp/src/assets/images/spice-bazaar.svg @@ -0,0 +1,502 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/dapp/src/assets/images/spice1.svg b/apps/dapp/src/assets/images/spice1.svg new file mode 100644 index 000000000..4983cab1d --- /dev/null +++ b/apps/dapp/src/assets/images/spice1.svg @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/dapp/src/assets/images/spice2.svg b/apps/dapp/src/assets/images/spice2.svg new file mode 100644 index 000000000..029b4fe5c --- /dev/null +++ b/apps/dapp/src/assets/images/spice2.svg @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/dapp/src/assets/images/spice3.svg b/apps/dapp/src/assets/images/spice3.svg new file mode 100644 index 000000000..5532e251e --- /dev/null +++ b/apps/dapp/src/assets/images/spice3.svg @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/dapp/src/assets/images/spice4.svg b/apps/dapp/src/assets/images/spice4.svg new file mode 100644 index 000000000..8122f8339 --- /dev/null +++ b/apps/dapp/src/assets/images/spice4.svg @@ -0,0 +1,324 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/dapp/src/assets/images/stake-temple.svg b/apps/dapp/src/assets/images/stake-temple.svg new file mode 100644 index 000000000..5f3dcd903 --- /dev/null +++ b/apps/dapp/src/assets/images/stake-temple.svg @@ -0,0 +1,2408 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/dapp/src/assets/images/temple-dao-logo.svg b/apps/dapp/src/assets/images/temple-dao-logo.svg new file mode 100644 index 000000000..b341a2316 --- /dev/null +++ b/apps/dapp/src/assets/images/temple-dao-logo.svg @@ -0,0 +1,3 @@ + + + diff --git a/apps/dapp/src/components/Button/Button.tsx b/apps/dapp/src/components/Button/Button.tsx index e37e044f1..8d3f7a61c 100644 --- a/apps/dapp/src/components/Button/Button.tsx +++ b/apps/dapp/src/components/Button/Button.tsx @@ -3,7 +3,6 @@ import Image from 'components/Image/Image'; import styled, { css } from 'styled-components'; import Loader from '../Loader/Loader'; -import useIsMounted from 'hooks/use-is-mounted'; export interface ButtonProps extends ButtonStyledProps, @@ -31,7 +30,6 @@ export const Button = ({ ...props }: ButtonProps) => { const [isLoading, setIsLoading] = useState(false); - const isMounted = useIsMounted(); /** * Click handler which shows a spinner while the action is in progress. @@ -57,12 +55,6 @@ export const Button = ({ console.info(`Error: ${JSON.stringify(err, null, 2)}`); } } finally { - // Make sure the component is still mounted after async code. - // setting state on an unmounted component is a memory leak. - if (!isMounted.current) { - return; - } - setIsLoading(false); } }; diff --git a/apps/dapp/src/components/Layouts/V2Layout/index.tsx b/apps/dapp/src/components/Layouts/V2Layout/index.tsx index 9ee67963e..2f0178985 100644 --- a/apps/dapp/src/components/Layouts/V2Layout/index.tsx +++ b/apps/dapp/src/components/Layouts/V2Layout/index.tsx @@ -14,6 +14,7 @@ import CurrencyExchange from 'assets/icons/currency_exchange.svg?react'; import Payments from 'assets/icons/payments.svg?react'; import Candle from 'assets/icons/candle.svg?react'; import Restore from 'assets/icons/restore.svg?react'; +import StoreFront from 'assets/icons/storefront.svg?react'; import { useGeoBlocked } from 'hooks/use-geo-blocked'; import GeoblockModal from 'components/Popover/GeoblockModal'; @@ -32,6 +33,8 @@ enum V2DashboardLocPaths { Trade = '/dapp/trade', Trv = '/dapp/dashboard/treasuryreservesvault', Borrow = '/dapp/borrow', + SpiceBazaar = '/dapp/spice', + Ohmage = '/dapp/ohmage', Legacy = '/dapp/legacy', } @@ -62,6 +65,18 @@ const V2Layout = () => { Logo: Payments, selected: V2DashboardLocPaths.Borrow === loc.pathname, }, + { + label: 'Spice Bazaar', + linkTo: V2DashboardLocPaths.SpiceBazaar, + Logo: StoreFront, + selected: V2DashboardLocPaths.SpiceBazaar === loc.pathname, + }, + { + label: 'Ohmage', + linkTo: V2DashboardLocPaths.Ohmage, + Logo: Candle, + selected: V2DashboardLocPaths.Ohmage === loc.pathname, + }, { label: 'Legacy', linkTo: V2DashboardLocPaths.Legacy, diff --git a/apps/dapp/src/components/Pages/Core/DappPages/Borrow/Chart.tsx b/apps/dapp/src/components/Pages/Core/DappPages/Borrow/Chart.tsx index fa4afd2bd..9cd7093a7 100644 --- a/apps/dapp/src/components/Pages/Core/DappPages/Borrow/Chart.tsx +++ b/apps/dapp/src/components/Pages/Core/DappPages/Borrow/Chart.tsx @@ -10,7 +10,7 @@ import { formatNumberFixedDecimals, } from 'utils/formatter'; import { formatDailyDataPoints } from 'utils/charts'; -import { queryTlcDailySnapshots, subgraphQuery } from 'utils/subgraph'; +import { fetchGenericSubgraph } from 'utils/subgraph'; import IntervalToggler from 'components/Charts/IntervalToggler'; import env from 'constants/env'; @@ -50,18 +50,17 @@ export const TlcChart = () => { useEffect(() => { const fetchMetrics = async () => { - const response = await subgraphQuery( + const { data } = await fetchGenericSubgraph( env.subgraph.templeV2, - queryTlcDailySnapshots() - ); - - setMetrics( - response.tlcDailySnapshots.map((r) => ({ - timestamp: parseFloat(r.timestamp), - utilRatio: parseFloat(r.utilRatio), - interestYield: parseFloat(r.interestYield), - })) + `{ + tlcDailySnapshots(orderBy: timestamp, orderDirection: desc) { + timestamp + utilRatio + interestYield + } + }` ); + setMetrics(data.tlcDailySnapshots); }; fetchMetrics(); }, []); diff --git a/apps/dapp/src/components/Pages/Core/DappPages/Borrow/TLC/Borrow.tsx b/apps/dapp/src/components/Pages/Core/DappPages/Borrow/TLC/Borrow.tsx index d7c9b109f..0f5f6f756 100644 --- a/apps/dapp/src/components/Pages/Core/DappPages/Borrow/TLC/Borrow.tsx +++ b/apps/dapp/src/components/Pages/Core/DappPages/Borrow/TLC/Borrow.tsx @@ -20,7 +20,7 @@ import { TlcInfo, Warning, } from '../index'; -import { fromAtto, toAtto, ZERO } from 'utils/bigNumber'; +import { fromAtto, toAtto } from 'utils/bigNumber'; import styled from 'styled-components'; import { ReactNode, useEffect, useMemo, useState } from 'react'; @@ -67,28 +67,18 @@ export const Borrow: React.FC = ({ const userMaxBorrowBigNumber = toAtto(userMaxBorrow); - let returnValue = { value: userMaxBorrow, isCircuitBreakerActive: false }; - - // Check if the dai circuit breaker is active - if ( - tlcInfo && - tlcInfo.daiCircuitBreakerRemaining.lt(userMaxBorrowBigNumber) - ) { - returnValue = { - value: fromAtto(tlcInfo.daiCircuitBreakerRemaining), - isCircuitBreakerActive: true, - }; + if (!tlcInfo) { + return { value: userMaxBorrow, isCircuitBreakerActive: false }; } - // Check if trvAvailable from the contract is less than the user max borrow - if (tlcInfo && tlcInfo.trvAvailable.lt(userMaxBorrowBigNumber)) { - returnValue = { - value: fromAtto(tlcInfo.trvAvailable || ZERO), + if (tlcInfo.daiCircuitBreakerRemaining.lt(userMaxBorrowBigNumber)) { + return { + value: fromAtto(tlcInfo.daiCircuitBreakerRemaining), isCircuitBreakerActive: true, }; } - return returnValue; + return { value: userMaxBorrow, isCircuitBreakerActive: false }; }, [tlcInfo, accountPosition, prices.tpi]); return ( diff --git a/apps/dapp/src/components/Pages/Core/DappPages/Borrow/index.tsx b/apps/dapp/src/components/Pages/Core/DappPages/Borrow/index.tsx index 01bce1b18..7604c7acc 100644 --- a/apps/dapp/src/components/Pages/Core/DappPages/Borrow/index.tsx +++ b/apps/dapp/src/components/Pages/Core/DappPages/Borrow/index.tsx @@ -10,11 +10,7 @@ import { TreasuryReservesVault__factory, } from 'types/typechain'; import { ITlcDataTypes } from 'types/typechain/contracts/interfaces/v2/templeLineOfCredit/ITempleLineOfCredit'; -import { - queryTlcMinBorrowAmount, - queryTlcPrices, - subgraphQuery, -} from 'utils/subgraph'; +import { fetchGenericSubgraph } from 'utils/subgraph'; import { BigNumber, ethers } from 'ethers'; import daiImg from 'assets/images/newui-images/tokens/dai.png'; import templeImg from 'assets/images/newui-images/tokens/temple.png'; @@ -32,7 +28,6 @@ import env from 'constants/env'; import { useConnectWallet } from '@web3-onboard/react'; import Tooltip from 'components/Tooltip/Tooltip'; import { estimateAndMine } from 'utils/ethers'; -import { aprToApy } from 'utils/helpers'; export type State = { supplyValue: string; @@ -53,8 +48,6 @@ export type TlcInfo = { debtCeiling: number; daiCircuitBreakerRemaining: BigNumber; templeCircuitBreakerRemaining: BigNumber; - outstandingUserDebt: number; - trvAvailable: BigNumber; }; export const MAX_LTV = 85; @@ -93,18 +86,23 @@ export const BorrowPage = () => { const [metricsLoading, setMetricsLoading] = useState(false); const getPrices = useCallback(async () => { - const response = await subgraphQuery( + const { data } = await fetchGenericSubgraph( env.subgraph.templeV2, - queryTlcPrices() + `{ + tokens { + price + symbol + } + treasuryReservesVaults { + treasuryPriceIndex + } + }` ); setPrices({ - templePrice: parseFloat( - response.tokens.filter((t: any) => t.symbol == 'TEMPLE')[0].price - ), - daiPrice: parseFloat( - response.tokens.filter((t: any) => t.symbol == 'DAI')[0].price - ), - tpi: parseFloat(response.treasuryReservesVaults[0].treasuryPriceIndex), + templePrice: data.tokens.filter((t: any) => t.symbol == 'TEMPLE')[0] + .price, + daiPrice: data.tokens.filter((t: any) => t.symbol == 'DAI')[0].price, + tpi: data.treasuryReservesVaults[0].treasuryPriceIndex, }); }, []); @@ -150,7 +148,6 @@ export const BorrowPage = () => { const debtPosition = await tlcContract.totalDebtPosition(); const totalUserDebt = debtPosition.totalDebt; const utilizationRatio = debtPosition.utilizationRatio; - const outstandingUserDebt = debtPosition[2]; // NOTE: We are intentionally rounding here to nearest 1e18 const debtCeiling = totalUserDebt @@ -162,9 +159,6 @@ export const BorrowPage = () => { const trvContract = new TreasuryReservesVault__factory(signer).attach( env.contracts.treasuryReservesVault ); - - const trvAvailable = await trvContract.totalAvailable(env.contracts.dai); - const strategyAvailalableToBorrowFromTrv = await trvContract.availableForStrategyToBorrow( env.contracts.strategies.tlcStrategy, @@ -185,9 +179,8 @@ export const BorrowPage = () => { const maxLtv = debtTokenConfig.maxLtvRatio; // current borrow apy - const currentBorrowInterestRate = aprToApy( - fromAtto(debtTokenData.interestRate) - ); + const currentBorrowInterestRate = + Math.pow(1 + fromAtto(debtTokenData.interestRate) / 365, 365) - 1; const circuitBreakers = await getCircuitBreakers(); @@ -196,8 +189,6 @@ export const BorrowPage = () => { strategyBalance: fromAtto(maxAvailableToBorrow), borrowRate: currentBorrowInterestRate, liquidationLtv: fromAtto(maxLtv), - outstandingUserDebt: fromAtto(outstandingUserDebt), - trvAvailable: trvAvailable, daiCircuitBreakerRemaining: circuitBreakers?.daiCircuitBreakerRemaining, templeCircuitBreakerRemaining: circuitBreakers?.templeCircuitBreakerRemaining, @@ -219,9 +210,13 @@ export const BorrowPage = () => { }; getAccountPosition(); try { - const response = await subgraphQuery( + const { data } = await fetchGenericSubgraph( env.subgraph.templeV2, - queryTlcMinBorrowAmount() + `{ + tlcDailySnapshots(orderBy: timestamp, orderDirection: desc, first: 1) { + minBorrowAmount + } + }` ); const tlcInfoFromContracts = await getTlcInfoFromContracts(); @@ -235,7 +230,7 @@ export const BorrowPage = () => { } setTlcInfo({ - minBorrow: parseFloat(response.tlcDailySnapshots[0].minBorrowAmount), + minBorrow: data.tlcDailySnapshots[0].minBorrowAmount, borrowRate: tlcInfoFromContracts?.borrowRate || 0, liquidationLtv: tlcInfoFromContracts?.liquidationLtv || 0, strategyBalance: tlcInfoFromContracts?.strategyBalance || 0, @@ -244,8 +239,6 @@ export const BorrowPage = () => { tlcInfoFromContracts?.daiCircuitBreakerRemaining || ZERO, templeCircuitBreakerRemaining: tlcInfoFromContracts?.templeCircuitBreakerRemaining || ZERO, - outstandingUserDebt: tlcInfoFromContracts?.outstandingUserDebt || 0, - trvAvailable: tlcInfoFromContracts?.trvAvailable || ZERO, }); } catch (e) { setMetricsLoading(false); @@ -489,21 +482,14 @@ export const BorrowPage = () => { if (!tlcInfo) return '...'; const availableAsBigNumber = toAtto(tlcInfo.strategyBalance); - let borrowableAmount = tlcInfo.strategyBalance; if (tlcInfo.daiCircuitBreakerRemaining.lt(availableAsBigNumber)) { - borrowableAmount = fromAtto(tlcInfo.daiCircuitBreakerRemaining); + return `$${Number( + fromAtto(tlcInfo.daiCircuitBreakerRemaining) + ).toLocaleString()}`; } - const trvAvailable = fromAtto(tlcInfo.trvAvailable); - if (trvAvailable < borrowableAmount) { - borrowableAmount = trvAvailable; - } - - return `$${Number(borrowableAmount).toLocaleString('en', { - minimumFractionDigits: 2, - maximumFractionDigits: 2, - })}`; + return `$${Number(tlcInfo.strategyBalance).toLocaleString()}`; }, [tlcInfo]); return ( @@ -731,29 +717,10 @@ export const BorrowPage = () => { Current Borrow APY - - - - {showLoading ? '...' : prices.tpi.toFixed(2)} - + {showLoading ? '...' : prices.tpi} Current TPI - - - {showLoading - ? '...' - : tlcInfo && - `$${Number(tlcInfo.outstandingUserDebt).toLocaleString( - 'en', - { - minimumFractionDigits: 2, - maximumFractionDigits: 2, - } - )}`} - - Outstanding User Debt - diff --git a/apps/dapp/src/components/Pages/Core/DappPages/Dashboard/Chart/V2StrategyMetricsChart.tsx b/apps/dapp/src/components/Pages/Core/DappPages/Dashboard/Chart/V2StrategyMetricsChart.tsx index 54ee54d09..6d6965b47 100644 --- a/apps/dapp/src/components/Pages/Core/DappPages/Dashboard/Chart/V2StrategyMetricsChart.tsx +++ b/apps/dapp/src/components/Pages/Core/DappPages/Dashboard/Chart/V2StrategyMetricsChart.tsx @@ -7,14 +7,13 @@ import { formatTimestampedChartData } from 'utils/charts'; import useV2StrategySnapshotData, { StrategyTokenField, V2SnapshotMetric, + V2StrategySnapshot, } from '../hooks/use-dashboardv2-daily-snapshots'; import { ALL_STRATEGIES, DashboardData, isTRVDashboard, - StrategyKey, } from '../DashboardConfig'; -import { V2StrategySnapshot } from 'utils/subgraph'; type XAxisTickFormatter = (timestamp: number) => string; @@ -182,16 +181,12 @@ const V2StrategyMetricsChart: React.FC<{ const filteredDaily = dailyMetrics - ?.filter((m) => - chartStrategyNames.includes(m.strategy.name as StrategyKey) - ) + ?.filter((m) => chartStrategyNames.includes(m.strategy.name)) .sort((a, b) => parseInt(a.timestamp) - parseInt(b.timestamp)) ?? []; const filteredHourly = hourlyMetrics - ?.filter((m) => - chartStrategyNames.includes(m.strategy.name as StrategyKey) - ) + ?.filter((m) => chartStrategyNames.includes(m.strategy.name)) .sort((a, b) => parseInt(a.timestamp) - parseInt(b.timestamp)) ?? []; // if we are rendering chart for only one strategy we can use data as is diff --git a/apps/dapp/src/components/Pages/Core/DappPages/Dashboard/DashboardConfig.tsx b/apps/dapp/src/components/Pages/Core/DappPages/Dashboard/DashboardConfig.tsx index c3134bc0d..528521ab2 100644 --- a/apps/dapp/src/components/Pages/Core/DappPages/Dashboard/DashboardConfig.tsx +++ b/apps/dapp/src/components/Pages/Core/DappPages/Dashboard/DashboardConfig.tsx @@ -38,7 +38,7 @@ export const Dashboards: DashboardData[] = [ title: 'TRV', path: 'treasuryreservesvault', description: - 'Treasury Reserves Vault (TRV) is the central clearinghouse for the Temple Treasury and critical coordinator for current Treasury Strategy allocations. When funding and management parameters are approved for a Strategy, the TRV will transfer funds and issue corresponding debt to the Strategy borrower. The current equity of the Strategy is discounted by the loan principal and accrued interest benchmarked to the prevailing rate of the current Base Strategy for the borrowed token.', + 'Treasury Reserves Vault (TRV) coordinates and manages the flow of capital for current Treasury allocations. When funding and management parameters are approved for a Strategy, the TRV will transfer funds e.g. DAI and issue corresponding debt to the Strategy borrower. The current equity of the Strategy is discounted by the loan principal and accrued interest benchmarked to the prevailing rate of the current Base Strategy for the borrowed token.', contractLink: `${env.etherscan}/address/${env.contracts.treasuryReservesVault}`, }, { @@ -47,7 +47,7 @@ export const Dashboards: DashboardData[] = [ title: 'RAMOS', path: 'ramos', description: - 'Ramos is the automated market operations (AMO) manager that supplies liquidity to the TEMPLE/DAI pool on the Balancer DEX. A bot manages the contract to support TEMPLE trading, reduce price volatility, and earn farming rewards.', + 'Ramos is the automated market operations (AMO) manager that supplies liquidity to the TEMPLE/DAI pool on the Balancer Exchange platform. A bot manages the contract to support TEMPLE trading, reduce price volatility, and earn farming rewards.', contractLink: `${env.etherscan}/address/${env.contracts.strategies.ramosStrategy}`, }, { @@ -56,7 +56,7 @@ export const Dashboards: DashboardData[] = [ title: 'TLC', path: 'tlc', description: - 'Temple Loving Care (also known as Temple Line of Credit) offers DAI lending for users who supply TEMPLE as collateral. The TLC will use the current Treasury Price Index (TPI) Oracle to determine the collateral value of TEMPLE. Users may borrow up to 85% loan-to-value (LTV) with the TEMPLE liquidation LTV set to 90%. There are no origination fees and users can withdraw their TEMPLE at any time by repaying the DAI loan. The TLC interest rate is set to a fixed rate that will be periodically updated to 2X the yield from the current Treasury Base Strategy e.g. sDAI. Click here to learn more about Temple Loving Care.', + 'Temple Loving Care (also known as Temple Line of Credit) offers DAI lending for users who supply TEMPLE token as collateral. The value of the collateral is not determined by the current $TEMPLE spot price on the Balancer DEX but by the current Treasury Price Index (TPI). Users may borrow up to 75% loan-to-value (LTV) with the liquidation LTV set to 80%. There are no origination fees and users can withdraw their collateral at any time by repaying the DAI loan. TLC interest rate is a variable APR that is dependent on Debt Ceiling Utilisation. Any accrued interest will increase LTV over time. Borrowers can expect the APR to be set no lower than the prevailing APR for the Treasury DAI Base Strategy. Click here to learn more about Temple Loving Care.', contractLink: `${env.etherscan}/address/${env.contracts.strategies.tlcStrategy}`, }, { @@ -65,7 +65,7 @@ export const Dashboards: DashboardData[] = [ title: 'TEMPLE BASE', path: 'templebase', description: - 'TEMPLE Base strategy is the funding source for TEMPLE tokens for automated market operations (AMO) in the Treasury framework. The TRV facilitates the withdrawal of newly minted TEMPLE tokens from and the issuance of TEMPLE debt to the TEMPLE Base strategy. These TEMPLE tokens will be borrowed by a Treasury Strategy such as Ramos to generate returns. Once these tokens are repaid to the TRV, they will be deposited to the TEMPLE Base strategy to be burned. Positive returns will be realized when TEMPLE flows to the TEMPLE Base strategy is net positive.', + 'Temple Base strategy is the source of automated market operations (AMO) TEMPLE tokens in the Treasury framework. The TRV facilitates the withdrawal of newly minted TEMPLE tokens from and the issuance of TEMPLE debt to the Temple Base strategy. These TEMPLE tokens will be borrowed by a Treasury Strategy such as Ramos to generate returns. Once these tokens are repaid to the TRV, they will be deposited to the Temple Base strategy to be burned. From the perspective of the TRV, positive returns will be realized when TEMPLE flows to the Temple Base strategy is net positive.', contractLink: `${env.etherscan}/address/${env.contracts.strategies.templeStrategy}`, }, { @@ -74,7 +74,7 @@ export const Dashboards: DashboardData[] = [ title: 'DSR BASE', path: 'dsrbase', description: - 'Idle reserve capital in the TRV that is not currently borrowed by a Strategy Borrower will be automatically directed to a Base Strategy to earn yield. The TRV Base Strategy is currently set to the Dai Savings Rate (DSR) or sDAI. The current rate of return for the Base Strategy also serves as the performance benchmark or "risk-free" interest rate for Treasury Strategies.', + 'Idle capital in the Treasury Reserves Vault (TRV) that is not currently deployed to a Strategy borrower will be automatically directed to a Base Strategy to earn yield. Currently, the Base Strategy is set to the Dai Savings Rate (DSR) which makes DAI the base currency of the TRV. The current rate of return for DSR Base also serves as the benchmark interest rate for the Treasury Strategy that borrows DAI from the TRV.', contractLink: `${env.etherscan}/address/${env.contracts.strategies.dsrBaseStrategy}`, }, { @@ -83,7 +83,7 @@ export const Dashboards: DashboardData[] = [ title: 'TEMPLO MAYOR', path: 'templomayor', description: - 'Templo Mayor is an Gnosis Safe Omnibus Strategy that is particularly useful when full automation is not feasible. An Omnibus Strategy utilises the same bookkeeping structure and approval process as the automated Temple v2 Strategies, but may entail several related holdings or sub-positions that are managed holistically. For instance, deposits into different but similar or co-dependent vaults on the same platform or different platforms may be consolidated into one Omnibus Gnosis Safe. Partner seed allocations of a target risk profile may also be consolidated into an Omnibus Strategy to derisk any particular project. An Omnibus Strategy may provide additional operational efficiency and allow Stakeholders to evaluate a series of related deployments as one composite position rather than as singletons.', + 'Templo Mayor is an Gnosis Safe Omnibus strategy. An Omnibus Strategy utilises the same bookkeeping structure and approval process, but may entail several related holdings or sub-positions that are managed as a whole. For instance, deposits into different but similar or co-dependent vaults on the same platform or different platforms may be consolidated into one Omnibus Gnosis Safe. Seed allocations of a target risk profile may also be consolidated into an Omnibus Strategy to reduce the noise. Therefore an Omnibus Strategy may provide additional operational efficiency and allow Stakeholders to evaluate a series of related deployments as one composite position rather than as singletons.', contractLink: `${env.etherscan}/address/${env.contracts.strategies.temploMayorGnosisStrategy}`, }, { @@ -92,7 +92,7 @@ export const Dashboards: DashboardData[] = [ title: 'FOHMO', path: 'fohmo', description: - 'FOHMO is a strategy that aims to maintain a maximally looped position in OHM', + 'FOHMO is a strategy that aims to maintain a maxed looped position in OHM', contractLink: `${env.etherscan}/address/${env.contracts.strategies.fohmoGnosisStrategy}`, }, ]; diff --git a/apps/dapp/src/components/Pages/Core/DappPages/Dashboard/Table/TxnHistoryTable.tsx b/apps/dapp/src/components/Pages/Core/DappPages/Dashboard/Table/TxnHistoryTable.tsx index e2e58ebad..a63049924 100644 --- a/apps/dapp/src/components/Pages/Core/DappPages/Dashboard/Table/TxnHistoryTable.tsx +++ b/apps/dapp/src/components/Pages/Core/DappPages/Dashboard/Table/TxnHistoryTable.tsx @@ -16,12 +16,7 @@ import { queryMinTablet } from 'styles/breakpoints'; import env from 'constants/env'; import linkSvg from 'assets/icons/link.svg?react'; import { formatNumberWithCommas } from 'utils/formatter'; -import { - DashboardData, - Dashboards, - isTRVDashboard, - StrategyKey, -} from '../DashboardConfig'; +import { DashboardData, Dashboards, isTRVDashboard } from '../DashboardConfig'; type Props = { dashboardData: DashboardData; @@ -276,8 +271,8 @@ const TxnHistoryTable = (props: Props) => { const timeOnly = format(new Date(Number(tx.timestamp) * 1000), 'H:mm:ss'); return { date: isBiggerThanTablet ? datetime : dateOnly, - type: tx.name as TxType, - strategy: tx.strategy.name as StrategyKey, + type: tx.name, + strategy: tx.strategy.name, token: tx.token.symbol, amount: amountFmt, txHash: tx.hash, diff --git a/apps/dapp/src/components/Pages/Core/DappPages/Dashboard/hooks/use-dashboardv2-daily-snapshots.ts b/apps/dapp/src/components/Pages/Core/DappPages/Dashboard/hooks/use-dashboardv2-daily-snapshots.ts index 4e96c0a2a..2629078fd 100644 --- a/apps/dapp/src/components/Pages/Core/DappPages/Dashboard/hooks/use-dashboardv2-daily-snapshots.ts +++ b/apps/dapp/src/components/Pages/Core/DappPages/Dashboard/hooks/use-dashboardv2-daily-snapshots.ts @@ -1,12 +1,9 @@ import { useQuery } from '@tanstack/react-query'; import env from 'constants/env'; import { getQueryKey } from 'utils/react-query-helpers'; -import { - queryStrategyDailySnapshots, - queryStrategyHourlySnapshots, - subgraphQuery, - V2StrategySnapshot, -} from 'utils/subgraph'; +import { SubGraphResponse } from 'hooks/core/types'; +import { fetchGenericSubgraph } from 'utils/subgraph'; +import { StrategyKey } from '../DashboardConfig'; const V2SnapshotMetrics = [ 'totalMarketValueUSD', @@ -33,12 +30,38 @@ const STRATEGY_TOKEN_FIELDS = [ export type StrategyTokenField = (typeof STRATEGY_TOKEN_FIELDS)[number]; +const QUERIED_FIELDS = ` + strategy{ + name + } + timeframe + timestamp + ${V2SnapshotMetrics.join('\n')} + strategyTokens{ + ${STRATEGY_TOKEN_FIELDS.join('\n')} + } +`; + +export type V2StrategySnapshot = { + timestamp: string; + timeframe: string; + strategy: { name: StrategyKey }; + strategyTokens: { [key in (typeof STRATEGY_TOKEN_FIELDS)[number]]: string }[]; +} & { [key in V2SnapshotMetric]: string }; + export function isV2SnapshotMetric( key?: string | null ): key is V2SnapshotMetric { return V2SnapshotMetrics.some((m) => m === key); } +type FetchV2StrategyDailySnapshotResponse = SubGraphResponse<{ + strategyDailySnapshots: V2StrategySnapshot[]; +}>; +type FetchV2StrategyHourlySnapshotResponse = SubGraphResponse<{ + strategyHourlySnapshots: V2StrategySnapshot[]; +}>; + const ONE_DAY_ONE_HOUR_MS = 25 * 60 * 60 * 1000; const ONE_YEAR_MS = 365 * 24 * 60 * 60 * 1000; @@ -50,17 +73,22 @@ async function fetchStrategyHourlySnapshots() { ).toString(); // if # of strategies * 24 > 1000 we would be missing data // but we shouldnt be getting anywhere close to that - const resp = await subgraphQuery( - env.subgraph.templeV2Balances, - queryStrategyHourlySnapshots( - V2SnapshotMetrics, - STRATEGY_TOKEN_FIELDS, - itemsPerPage, - since - ) - ); - - return resp.strategyHourlySnapshots; + const query = ` + query { + strategyHourlySnapshots(first: ${itemsPerPage}, + orderBy: timestamp, + orderDirection: asc, + where: {timestamp_gt: ${since}} + ) { + ${QUERIED_FIELDS} + } + }`; + const resp = + await fetchGenericSubgraph( + env.subgraph.templeV2Balances, + query + ); + return resp?.data?.strategyHourlySnapshots ?? []; } async function fetchStrategyDailySnapshots() { @@ -71,19 +99,26 @@ async function fetchStrategyDailySnapshots() { const MAX_PAGE_SIZE = 1000; // current max page size let skip = 0; while (true) { - const page = await subgraphQuery( - env.subgraph.templeV2Balances, - queryStrategyDailySnapshots( - V2SnapshotMetrics, - STRATEGY_TOKEN_FIELDS, - MAX_PAGE_SIZE, - since, - skip - ) - ); - const itemsOnPage = page.strategyDailySnapshots.length ?? 0; - result.push(...page.strategyDailySnapshots); - skip += itemsOnPage; + const query = ` + query { + strategyDailySnapshots(first: ${MAX_PAGE_SIZE}, + orderBy: timestamp, + orderDirection: asc, + where: {timestamp_gt: ${since}} + skip: ${skip}) { + ${QUERIED_FIELDS} + } + }`; + const page = + await fetchGenericSubgraph( + env.subgraph.templeV2Balances, + query + ); + const itemsOnPage = page.data?.strategyDailySnapshots.length ?? 0; + if (page.data) { + result.push(...page.data.strategyDailySnapshots); + skip += itemsOnPage; + } if (itemsOnPage < MAX_PAGE_SIZE) { break; } diff --git a/apps/dapp/src/components/Pages/Core/DappPages/Dashboard/hooks/use-dashboardv2-metrics.ts b/apps/dapp/src/components/Pages/Core/DappPages/Dashboard/hooks/use-dashboardv2-metrics.ts index f91780bee..9e1aaf85b 100644 --- a/apps/dapp/src/components/Pages/Core/DappPages/Dashboard/hooks/use-dashboardv2-metrics.ts +++ b/apps/dapp/src/components/Pages/Core/DappPages/Dashboard/hooks/use-dashboardv2-metrics.ts @@ -1,5 +1,6 @@ import { useQuery } from '@tanstack/react-query'; import millify from 'millify'; +import { fetchGenericSubgraph } from 'utils/subgraph'; import env from 'constants/env'; import { getQueryKey } from 'utils/react-query-helpers'; import { @@ -8,21 +9,6 @@ import { TrvKey, isTRVDashboard, } from '../DashboardConfig'; -import { - queryBenchmarkRate, - queryRamosData, - queryStrategyBalances, - queryStrategyData, - queryTempleCirculatingSupply, - queryTrvBalances, - queryTrvData, - StrategyBalancesResp, - StrategyDataResp, - subgraphQuery, - TrvBalancesResp, - TrvDataResp, -} from 'utils/subgraph'; -import { aprToApy } from 'utils/helpers'; export enum TokenSymbols { DAI = 'DAI', @@ -98,52 +84,80 @@ export default function useDashboardV2Metrics(dashboardData: DashboardData) { try { const allMetricsPromises = [ - subgraphQuery(env.subgraph.templeV2, queryStrategyData()), - + fetchGenericSubgraph( + env.subgraph.templeV2, + `{ + strategies { + name + isShutdown + id + strategyTokens { + symbol + rate + premiumRate + debtShare + debtCeiling + debtCeilingUtil + } + totalRepaymentUSD + principalUSD + accruedInterestUSD + } + }` + ), // includes the external balances so has to come from the second subgraph - subgraphQuery(env.subgraph.templeV2Balances, queryStrategyBalances()), + fetchGenericSubgraph( + env.subgraph.templeV2Balances, + `{ + strategies { + name + isShutdown + id + benchmarkedEquityUSD + totalMarketValueUSD + } + }` + ), ]; const [responses, responseExternalBalances] = await Promise.all( allMetricsPromises ); - const subgraphData = (responses as StrategyDataResp).strategies.find( + const subgraphData = responses?.data?.strategies.find( // eslint-disable-next-line @typescript-eslint/no-explicit-any (_strategy: any) => _strategy.name === strategy && _strategy.isShutdown === false ); - const externalBalancesData = ( - responseExternalBalances as StrategyBalancesResp - ).strategies.find( - // eslint-disable-next-line @typescript-eslint/no-explicit-any - (_strategy: any) => - _strategy.name === strategy && _strategy.isShutdown === false - ); + const externalBalancesData = + responseExternalBalances?.data?.strategies.find( + // eslint-disable-next-line @typescript-eslint/no-explicit-any + (_strategy: any) => + _strategy.name === strategy && _strategy.isShutdown === false + ); - const daiStrategyTokenData = subgraphData!.strategyTokens.find( + const daiStrategyTokenData = subgraphData?.strategyTokens.find( // eslint-disable-next-line @typescript-eslint/no-explicit-any (_strategyToken: any) => _strategyToken.symbol === TokenSymbols.DAI ); metrics = { - valueOfHoldings: parseFloat(externalBalancesData!.totalMarketValueUSD), + valueOfHoldings: parseFloat(externalBalancesData.totalMarketValueUSD), benchmarkedEquity: parseFloat( - externalBalancesData!.benchmarkedEquityUSD - ), - interestRate: aprToApy( - parseFloat(daiStrategyTokenData!.rate) + - parseFloat(daiStrategyTokenData!.premiumRate) + externalBalancesData.benchmarkedEquityUSD ), - debtShare: parseFloat(daiStrategyTokenData!.debtShare), - debtCeiling: parseFloat(daiStrategyTokenData!.debtCeiling), + interestRate: + parseFloat(daiStrategyTokenData.rate) + + parseFloat(daiStrategyTokenData.premiumRate), + debtShare: parseFloat(daiStrategyTokenData.debtShare), + debtCeiling: parseFloat(daiStrategyTokenData.debtCeiling), debtCeilingUtilization: parseFloat( - daiStrategyTokenData!.debtCeilingUtil + daiStrategyTokenData.debtCeilingUtil ), - totalRepayment: parseFloat(subgraphData!.totalRepaymentUSD), - principal: parseFloat(subgraphData!.principalUSD), - accruedInterest: parseFloat(subgraphData!.accruedInterestUSD), + totalRepayment: parseFloat(subgraphData.totalRepaymentUSD), + principal: parseFloat(subgraphData.principalUSD), + accruedInterest: parseFloat(subgraphData.accruedInterestUSD), }; } catch (error) { console.info(error); @@ -167,11 +181,26 @@ export default function useDashboardV2Metrics(dashboardData: DashboardData) { try { const allMetricsPromises = [ - subgraphQuery(env.subgraph.templeV2, queryTrvData()), - + fetchGenericSubgraph( + env.subgraph.templeV2, + `{ + treasuryReservesVaults { + treasuryPriceIndex + principalUSD + accruedInterestUSD + } + }` + ), // includes the external balances so has to come from the second subgraph - subgraphQuery(env.subgraph.templeV2Balances, queryTrvBalances()), - + fetchGenericSubgraph( + env.subgraph.templeV2Balances, + `{ + treasuryReservesVaults { + totalMarketValueUSD + benchmarkedEquityUSD + } + }` + ), getBenchmarkRate(), getTempleCirculatingSupply(), getTempleSpotPrice(), @@ -185,21 +214,20 @@ export default function useDashboardV2Metrics(dashboardData: DashboardData) { templeSpotPrice, ] = await Promise.all(allMetricsPromises); - const trvSubgraphData = (trvSubgraphResponse as TrvDataResp) - .treasuryReservesVaults[0]; + const trvSubgraphData = + trvSubgraphResponse?.data?.treasuryReservesVaults[0]; - const externalBalancesData = ( - responseExternalBalances as TrvBalancesResp - ).treasuryReservesVaults[0]; + const externalBalancesData = + responseExternalBalances?.data?.treasuryReservesVaults[0]; metrics = { totalMarketValue: parseFloat( externalBalancesData.totalMarketValueUSD ), - spotPrice: parseFloat(templeSpotPrice as string), + spotPrice: parseFloat(templeSpotPrice), treasuryPriceIndex: parseFloat(trvSubgraphData.treasuryPriceIndex), - circulatingSupply: parseFloat(templeCirculatingSupply as string), - benchmarkRate: aprToApy(parseFloat(benchmarkRate as string)), + circulatingSupply: parseFloat(templeCirculatingSupply), + benchmarkRate: parseFloat(benchmarkRate), principal: parseFloat(trvSubgraphData.principalUSD), accruedInterest: parseFloat(trvSubgraphData.accruedInterestUSD), benchmarkedEquity: parseFloat( @@ -214,12 +242,18 @@ export default function useDashboardV2Metrics(dashboardData: DashboardData) { }; const getBenchmarkRate = async () => { - const debtTokensResponse = await subgraphQuery( + const debtTokensResponse = await fetchGenericSubgraph( env.subgraph.templeV2, - queryBenchmarkRate() + `{ + debtTokens { + name + symbol + baseRate + } + }` ); - const debtTokensData = debtTokensResponse.debtTokens; + const debtTokensData = debtTokensResponse?.data?.debtTokens; // eslint-disable-next-line @typescript-eslint/no-explicit-any return debtTokensData.find( @@ -228,20 +262,37 @@ export default function useDashboardV2Metrics(dashboardData: DashboardData) { }; const getTempleCirculatingSupply = async (): Promise => { - const response = await subgraphQuery( + const response = await fetchGenericSubgraph( env.subgraph.protocolMetrics, - queryTempleCirculatingSupply() + `{ + metrics(first: 1, orderBy: timestamp, orderDirection: desc) { + templeCirculatingSupply + } + }` ); - return response.metrics[0].templeCirculatingSupply; + + const data = response?.data?.metrics?.[0] || {}; + + return data.templeCirculatingSupply; }; const getTempleSpotPrice = async () => { - const response = await subgraphQuery(env.subgraph.ramos, queryRamosData()); - return response.metrics[0].spotPrice; + const response = await fetchGenericSubgraph( + env.subgraph.ramos, + `{ + metrics { + spotPrice + } + }` + ); + + const data = response?.data?.metrics?.[0] || {}; + + return data.spotPrice; }; const formatPercent = (input: number) => { - return (Math.round(input * 10_000) / 100).toFixed(2); + return Math.round(input * 100).toFixed(2); }; /** diff --git a/apps/dapp/src/components/Pages/Core/DappPages/Dashboard/hooks/use-dashboardv2-txHistory.ts b/apps/dapp/src/components/Pages/Core/DappPages/Dashboard/hooks/use-dashboardv2-txHistory.ts index dba2d90b4..b80d4427e 100644 --- a/apps/dapp/src/components/Pages/Core/DappPages/Dashboard/hooks/use-dashboardv2-txHistory.ts +++ b/apps/dapp/src/components/Pages/Core/DappPages/Dashboard/hooks/use-dashboardv2-txHistory.ts @@ -1,15 +1,32 @@ +import { fetchGenericSubgraph } from 'utils/subgraph'; import env from 'constants/env'; +import { SubGraphResponse } from 'hooks/core/types'; import { TxHistoryFilterType } from '../Table'; import { TableHeaders, TxHistoryTableHeader } from '../Table/TxnHistoryTable'; +import { TxType } from '../Table/TxnDataTable'; import { getQueryKey } from 'utils/react-query-helpers'; import { useQuery } from '@tanstack/react-query'; -import { DashboardData, isTRVDashboard } from '../DashboardConfig'; -import { - subgraphQuery, - queryStrategyTransactions, - StrategyTransactions, - queryStrategyTransactionsMeta, -} from 'utils/subgraph'; +import { DashboardData, StrategyKey, isTRVDashboard } from '../DashboardConfig'; + +type Transactions = { + hash: string; + strategy: { + id: string; + name: StrategyKey; + }; + token: { + id: string; + name: string; + symbol: string; + }; + amount: string; + amountUsd: string; + id: string; + from: string; + to: string; + name: TxType; + timestamp: string; +}[]; type AvailableRows = { totalTransactionCount: number; @@ -17,6 +34,22 @@ type AvailableRows = { blockNumber: number; }; +type Metrics = { + strategyTransactionCount: number; +}[]; + +type Meta = { + block: { + number: number; + }; +}; + +type FetchTxnsResponse = SubGraphResponse<{ + strategyTransactions: Transactions; + metrics: Metrics; + _meta: Meta; +}>; + export type RowFilter = { type?: string; strategy?: string; @@ -78,7 +111,7 @@ const useTxHistory = (props: TxHistoryProps) => const fetchTransactions = async ( props: TxHistoryProps -): Promise => { +): Promise => { const { dashboardData, blockNumber, @@ -96,6 +129,8 @@ const fetchTransactions = async ( const blockNumberQueryParam = blockNumber > 0 ? `block: { number: ${blockNumber} }` : ``; + const paginationQuery = `skip: ${offset} first: ${limit}`; + const dateNowSecs = Math.round(Date.now() / 1000); const typeRowFilterQuery = `${ rowFilter.type ? 'name_contains_nocase: "' + rowFilter.type + '"' : '' @@ -131,10 +166,32 @@ const fetchTransactions = async ( : 'asc' : 'desc'; - const res = await subgraphQuery( + const subgraphQuery = `{ + strategyTransactions(orderBy: ${orderBy}, orderDirection: ${orderType} ${paginationQuery} ${whereQuery}) { + hash + strategy { + id + name + } + token { + id + name + symbol + } + amount + amountUSD + id + from + name + timestamp + } + }`; + + const { data: res } = await fetchGenericSubgraph( env.subgraph.templeV2, - queryStrategyTransactions(orderBy, orderType, offset, limit, whereQuery) + subgraphQuery ); + if (!res) return []; return res.strategyTransactions; }; @@ -167,18 +224,31 @@ const fetchTxHistoryAvailableRows = async ( : '' }`; // get the max allowed 1000 records for a more accurate totalPages calculation - const whereQuery = `first: 1000 + const whereQuery = `( first: 1000 where: { ${strategyQuery} timestamp_gt: ${dateNowSecs - txHistoryFilterTypeToSeconds(txFilter)} ${typeRowFilterQuery} ${strategyRowFilterQuery} ${tokenRowFilterQuery} - }`; - - const res = await subgraphQuery( + } + )`; + const subgraphQuery = `{ + metrics { + strategyTransactionCount + } + strategyTransactions${whereQuery} { + hash + } + _meta { + block { + number + } + } + }`; + const { data: res } = await fetchGenericSubgraph( env.subgraph.templeV2, - queryStrategyTransactionsMeta(whereQuery) + subgraphQuery ); let result: AvailableRows = { @@ -191,29 +261,29 @@ const fetchTxHistoryAvailableRows = async ( if (rowFilter.strategy) hasRowFilters = rowFilter.strategy.length > 0; if (rowFilter.token) hasRowFilters = rowFilter.token.length > 0; if (rowFilter.type) hasRowFilters = rowFilter.type.length > 0; + if (res) { + let totalRowCount = 0; + if ( + props.txFilter === TxHistoryFilterType.all && + isTRVDashboard(strategyKey) && + !hasRowFilters + ) { + // if user chooses all transactions, sum the txCountTotal of every strategy, we don't use this + // calc for the last30days or lastweek filters because it could show an incorrect number of totalPages + totalRowCount = res.metrics[0].strategyTransactionCount; + } else { + // if user chooses last30days or lastweek filters, count the length of txs of each strategy + // in this case there maybe a chance of incorrect calc if there are more than 1000 records, + // which is unlikely in foreseeable future. This due to the max 1000 records subgraph limitation + totalRowCount = res.strategyTransactions.length; + } - let totalRowCount = 0; - if ( - props.txFilter === TxHistoryFilterType.all && - isTRVDashboard(strategyKey) && - !hasRowFilters - ) { - // if user chooses all transactions, sum the txCountTotal of every strategy, we don't use this - // calc for the last30days or lastweek filters because it could show an incorrect number of totalPages - totalRowCount = res.metrics[0].strategyTransactionCount; - } else { - // if user chooses last30days or lastweek filters, count the length of txs of each strategy - // in this case there maybe a chance of incorrect calc if there are more than 1000 records, - // which is unlikely in foreseeable future. This due to the max 1000 records subgraph limitation - totalRowCount = res.strategyTransactions.length; + result = { + totalRowCount, + blockNumber: res._meta.block.number, + totalTransactionCount: totalRowCount, + }; } - - result = { - totalRowCount, - blockNumber: res._meta.block.number, - totalTransactionCount: totalRowCount, - }; - return result; }; diff --git a/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/Analytics/Chart/Chart.tsx b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/Analytics/Chart/Chart.tsx new file mode 100644 index 000000000..121fe7b3c --- /dev/null +++ b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/Analytics/Chart/Chart.tsx @@ -0,0 +1,188 @@ +import { useEffect, useState } from 'react'; +import styled, { useTheme } from 'styled-components'; +import { format, subDays } from 'date-fns'; +import LineChart from './LineChart'; +import Loader from 'components/Loader/Loader'; +import { formatNumberAbbreviated } from 'utils/formatter'; +import expand from 'assets/icons/expand_more.svg?react'; +import * as breakpoints from 'styles/breakpoints'; + +type XAxisTickFormatter = (timestamp: number) => string; + +const tickFormatter: XAxisTickFormatter = (timestamp) => + format(new Date(timestamp), 'MMM dd'); + +type Metric = { timestamp: number; price: number }; + +enum Options { + ValueOfHoldings = 'Value of Holdings', + Option2 = 'Option 2', + Option3 = 'Option3', +} + +const pricesLast7Days = [ + { timestamp: subDays(new Date(), 6).getTime(), price: 1.13 }, + { timestamp: subDays(new Date(), 5).getTime(), price: 1.14 }, + { timestamp: subDays(new Date(), 4).getTime(), price: 1.13 }, + { timestamp: subDays(new Date(), 3).getTime(), price: 1.14 }, + { timestamp: subDays(new Date(), 2).getTime(), price: 1.16 }, + { timestamp: subDays(new Date(), 1).getTime(), price: 1.15 }, + { timestamp: new Date().getTime(), price: 1.17 }, +]; + +export const Chart = () => { + const [metrics, setMetrics] = useState([]); + const theme = useTheme(); + + useEffect(() => { + setMetrics(pricesLast7Days); + }, []); + + const [isOpen, setIsOpen] = useState(false); + const [selectedOption, setSelectedOption] = useState(Options.ValueOfHoldings); + + const toggleDropDown = () => { + setIsOpen(!isOpen); + }; + + const handleSelectedOption = (option: Options) => { + setSelectedOption(option); + setIsOpen(!isOpen); + }; + + const [filter, setFilter] = useState('1W'); + + const filterOptions = ['1D', '1W', '1M', '1Y']; + + if (!metrics.length) return ; + + return ( + + + + + {filterOptions.map((option) => ( + setFilter(option)} + selected={filter === option} + > + {option} + + ))} + + + + `$${formatNumberAbbreviated(val).number.toFixed(2)}\u00A0M` + } + tooltipLabelFormatter={tickFormatter} + yDomain={[1.12, 1.18]} + tooltipValuesFormatter={(value) => [`$ ${value.toFixed(2)} M`, 'Value']} + /> + + ); +}; + +const PageContainer = styled.div` + height: 100%; + display: flex; + flex-direction: column; + gap: 10px; +`; + +const HeaderContainer = styled.div` + display: flex; + justify-content: space-between; + flex-direction: column; + gap: 10px; + + ${breakpoints.phoneAndAbove(` + flex-direction: row; + `)} +`; + +const Option = styled.div` + display: flex; + flex-direction: row; + width: 100%; + gap: 10px; + padding: 5px 10px 5px 10px; + justify-content: space-between; + border: 1px solid ${({ theme }) => theme.palette.brand}; + border-radius: 5px; + font-size: 16px; + line-height: 19px; + color: ${({ theme }) => theme.palette.brandLight}; + + ${breakpoints.phoneAndAbove(` + width: 195px; + `)} +`; + +const ExpandIcon = styled(expand)` + min-width: 24px; + min-height: 24px; +`; + +const DropDownMenu = styled.ul` + list-style: none; + padding: 0; + margin: 0; + position: absolute; + background: ${({ theme }) => theme.palette.grayOpaque}; + box-shadow: ${({ theme }) => theme.palette.gradients.grey}; +`; + +const DropDownItem = styled.li` + padding: 8px 16px; + cursor: pointer; + color: ${({ theme }) => theme.palette.brand}; + &:hover { + background-color: ${({ theme }) => theme.palette.brandLight}; + } +`; + +const FilterContainer = styled.div` + display: flex; + flex-direction: row; + align-self: flex-end; + gap: 20px; +`; + +const FilterButton = styled.button<{ selected: boolean }>` + background: none; + color: ${({ selected, theme }) => + selected ? theme.palette.brandLight : theme.palette.brand}; + text-decoration: ${({ selected }) => (selected ? 'underline' : 'none')}; + font-size: 16px; + line-height: 19px; + border: none; + cursor: pointer; +`; diff --git a/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/Analytics/Chart/LineChart.tsx b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/Analytics/Chart/LineChart.tsx new file mode 100644 index 000000000..247ca5cc2 --- /dev/null +++ b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/Analytics/Chart/LineChart.tsx @@ -0,0 +1,208 @@ +import type { DataKey, AxisDomain } from 'recharts/types/util/types'; +import React, { useState } from 'react'; +import { useTheme } from 'styled-components'; +import { + CartesianGrid, + ResponsiveContainer, + Line, + XAxis, + YAxis, + Tooltip, + Legend, + ComposedChart, + Area, +} from 'recharts'; +import { formatNumberAbbreviated } from 'utils/formatter'; +import { useMediaQuery } from 'react-responsive'; +import { queryPhone } from 'styles/breakpoints'; + +type LineChartProps = { + chartData: T[]; + xDataKey: DataKey; + lines: { series: DataKey; color: string; hide?: boolean }[]; + stackedItems?: { + series: string; + color: string; + stackId: string; + hide?: boolean; + }[]; + xTickFormatter: (xValue: any, index: number) => string; + yTickFormatter?: (yValue: any, index: number) => string; + tooltipLabelFormatter: (value: any) => string; + tooltipValuesFormatter?: (value: number, name: string) => string[]; + legendFormatter?: (value: string) => string; + yDomain?: AxisDomain; + onLegendClick?: (key: string) => void; +}; + +export default function LineChart( + props: React.PropsWithChildren> +) { + const { + chartData, + xDataKey, + lines, + stackedItems, + xTickFormatter, + yTickFormatter, + tooltipLabelFormatter, + tooltipValuesFormatter, + legendFormatter, + yDomain, + } = props; + const theme = useTheme(); + + const [hiddenLines, setHiddenLines] = useState({ + ...Object.fromEntries( + lines.map((s) => [s.series.toString(), s.hide || false]) + ), + ...Object.fromEntries( + stackedItems?.map((s) => [s.series.toString(), s.hide || false]) ?? [] + ), + }); + + const toggleLineVisibility = (key: string) => { + //there must be always at least one visible line + // otherwise the chart breaks + const nextState = { + ...hiddenLines, + [key]: !hiddenLines[key], + }; + + const totalLines = Object.values(hiddenLines).length; + const wouldBeHiddenLinesCount = Object.values(nextState).reduce( + (hiddenCount, isHidden) => (isHidden ? hiddenCount + 1 : hiddenCount), + 0 + ); + + if (totalLines - wouldBeHiddenLinesCount === 0) { + return; + } + setHiddenLines(nextState); + }; + + const isDesktop = useMediaQuery({ + query: queryPhone, + }); + return ( + + + + {stackedItems?.map((item) => ( + + ))} + {lines.map((line) => ( + + ))} + + yTickFormatter(val, i) + : (value) => formatNumberAbbreviated(value).string + } + tick={{ + fill: theme.palette.brandLight, + style: { + fontSize: '12px', + fontWeight: '700', + lineHeight: '18px', + letterSpacing: '0.05em', + }, + }} + offset={10} + domain={yDomain} + ticks={[1.12, 1.14, 1.16, 1.18]} + tickMargin={20} + /> + { + //@ts-ignore + return tooltipValuesFormatter(value, name); + } + : undefined + } + /> + {legendFormatter ? ( + toggleLineVisibility(e.dataKey?.toString() || '')} + /> + ) : null} + + + ); +} diff --git a/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/Analytics/Table/DataTable.tsx b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/Analytics/Table/DataTable.tsx new file mode 100644 index 000000000..a296943ec --- /dev/null +++ b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/Analytics/Table/DataTable.tsx @@ -0,0 +1,218 @@ +import React, { useEffect, useState } from 'react'; +import styled from 'styled-components'; +import { PaginationControl } from 'components/Pages/Core/DappPages/SpiceBazaar/components/PaginationControl'; +import * as breakpoints from 'styles/breakpoints'; + +export type Transaction = { + key: number; + date: string; + debit: number | '-'; + credit: number | '-'; +}; + +type TableHeaderType = { name: string }; + +type TableProps = { + tableHeaders: TableHeaderType[]; + transactions: Transaction[]; + loading: boolean; + refetch?: () => void; + dataRefetching?: boolean; +}; + +const ROWS_PER_PAGE = 15; + +export const DataTable: React.FC = ({ + tableHeaders, + transactions, + loading, + refetch, + dataRefetching, +}) => { + const [filter, setFilter] = useState('Last 30 Days'); + const [filteredTransactions, setFilteredTransactions] = + useState(transactions); + const [currentPage, setCurrentPage] = useState(1); + + const filterOptions = ['Last Week', 'Last 30 Days', 'All']; + + useEffect(() => { + const parseDate = (dateString: string): Date => { + const [day, month, year] = dateString.split('/').map(Number); + return new Date(year, month - 1, day); + }; + + const newFilteredTransactions = transactions.filter((transaction) => { + const auctionEndDate = parseDate(transaction.date); // Parse the date using DD/MM/YYYY format + + const today = new Date(); + const thirtyDaysAgo = new Date(); + thirtyDaysAgo.setDate(today.getDate() - 30); + + if (filter === 'Last Week') { + const startOfWeek = new Date(); + startOfWeek.setDate(today.getDate() - today.getDay()); + return auctionEndDate >= startOfWeek && auctionEndDate <= today; + } + if (filter === 'Last 30 Days') { + return auctionEndDate >= thirtyDaysAgo && auctionEndDate <= today; + } + return true; + }); + + setFilteredTransactions(newFilteredTransactions); + setCurrentPage(1); + }, [filter, transactions]); + + const indexOfLastTransaction = currentPage * ROWS_PER_PAGE; + const indexOfFirstTransaction = indexOfLastTransaction - ROWS_PER_PAGE; + const currentTransactions = filteredTransactions.slice( + indexOfFirstTransaction, + indexOfLastTransaction + ); + + const totalPages = Math.ceil(filteredTransactions.length / ROWS_PER_PAGE); + + return ( + +
+ Transaction History + + {filterOptions.map((option) => ( + setFilter(option)} + selected={filter === option} + > + {option} + + ))} + +
+ + + + {tableHeaders.map((h) => ( + {h.name} + ))} + + + + {loading ? ( + + Loading... + + ) : currentTransactions.length === 0 ? ( + + No data available + + ) : ( + currentTransactions.map((transaction) => ( + + {transaction.date} + + {transaction.debit !== '-' + ? `$${Number(transaction.debit).toFixed(2)}` + : ''} + + + {transaction.credit !== '-' + ? `$${Number(transaction.credit).toFixed(2)}` + : ''} + + + )) + )} + + + +
+ ); +}; + +const PageContainer = styled.div` + display: flex; + flex-direction: column; + padding: 40px 0px 24px 0px; + gap: 20px; + + ${breakpoints.phoneAndAbove(` + gap: 32px; + `)} +`; + +const Header = styled.div` + display: flex; + flex-direction: column; + justify-content: space-between; + align-items: center; + gap: 10px; + + ${breakpoints.phoneAndAbove(` + flex-direction: row; + `)} +`; + +const Title = styled.h3` + color: ${({ theme }) => theme.palette.brandLight}; + font-size: 24px; + line-height: 44px; + margin: 0; +`; + +const FilterContainer = styled.div` + display: flex; + flex-direction: row; + gap: 20px; +`; + +const FilterButton = styled.button<{ selected: boolean }>` + background: none; + color: ${({ selected, theme }) => + selected ? theme.palette.brandLight : theme.palette.brand}; + font-size: 16px; + line-height: 19px; + border: none; + cursor: pointer; +`; + +const TableData = styled.table` + border-spacing: 10px; + width: 100%; + border-collapse: collapse; +`; + +const HeaderRow = styled.tr` + border-bottom: 1px solid ${({ theme }) => theme.palette.brand}; +`; + +const TableHeader = styled.th` + font-size: 13px; + font-weight: 700; + line-height: 20px; + text-align: left; + padding-top: 5px; + width: 33.33%; + color: ${({ theme }) => theme.palette.brand}; +`; + +const DataRow = styled.tr` + &:hover { + background: ${({ theme }) => theme.palette.gradients.grey}; + } +`; + +const DataCell = styled.td` + font-size: 13px; + font-weight: 700; + line-height: 20px; + text-align: left; + padding: 20px 0px 20px 0px; + width: 33.33%; + border-bottom: 1px solid ${({ theme }) => theme.palette.brand}; + color: ${({ theme }) => theme.palette.brandLight}; +`; diff --git a/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/Analytics/Table/Table.tsx b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/Analytics/Table/Table.tsx new file mode 100644 index 000000000..25249072c --- /dev/null +++ b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/Analytics/Table/Table.tsx @@ -0,0 +1,167 @@ +import styled from 'styled-components'; +import { DataTable } from './DataTable'; +import type { Transaction } from './DataTable'; + +enum TableHeaders { + Date = 'Date', + Debit = 'Debit', + Credit = 'Credit', +} + +const data: Transaction[] = [ + { + key: 1, + date: '02/11/2024', + debit: '-', + credit: 20832.81, + }, + { + key: 2, + date: '02/11/2024', + debit: '-', + credit: 5891.0, + }, + { + key: 3, + date: '02/11/2024', + debit: 1200.9, + credit: '-', + }, + { + key: 4, + date: '02/11/2024', + debit: 1200.9, + credit: '-', + }, + { + key: 5, + date: '02/11/2024', + debit: 1200.9, + credit: '-', + }, + { + key: 6, + date: '12/11/2024', + debit: 1200.9, + credit: '-', + }, + { + key: 7, + date: '02/11/2024', + debit: 1200.9, + credit: '-', + }, + { + key: 8, + date: '02/11/2024', + debit: 1200.9, + credit: '-', + }, + { + key: 9, + date: '02/11/2024', + debit: 1200.9, + credit: '-', + }, + { + key: 10, + date: '02/11/2024', + debit: 1200.9, + credit: '-', + }, + { + key: 11, + date: '02/11/2024', + debit: 1200.9, + credit: '-', + }, + { + key: 12, + date: '02/11/2024', + debit: 1200.9, + credit: '-', + }, + { + key: 13, + date: '02/11/2024', + debit: 1200.9, + credit: '-', + }, + { + key: 14, + date: '02/11/2024', + debit: 1200.9, + credit: '-', + }, + { + key: 15, + date: '02/11/2024', + debit: 1200.9, + credit: '-', + }, + { + key: 16, + date: '02/11/2024', + debit: 1200.9, + credit: '-', + }, + { + key: 17, + date: '12/12/2024', + debit: 1200.9, + credit: '-', + }, + { + key: 18, + date: '12/12/2024', + debit: 1200.9, + credit: '-', + }, + { + key: 19, + date: '12/12/2024', + debit: 1200.9, + credit: '-', + }, + { + key: 20, + date: '12/12/2024', + debit: 1200.9, + credit: '-', + }, + { + key: 21, + date: '12/12/2024', + debit: 1200.9, + credit: '-', + }, + { + key: 22, + date: '12/12/2024', + debit: 1200.9, + credit: '-', + }, +]; + +const tableHeaders = [ + { name: TableHeaders.Date }, + { name: TableHeaders.Debit }, + { name: TableHeaders.Credit }, +]; + +export const TransactionsHistory = () => { + return ( + + + + ); +}; + +const AuctionsHistoryContainer = styled.div` + display: flex; + flex-direction: column; +`; diff --git a/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/Analytics/index.tsx b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/Analytics/index.tsx new file mode 100644 index 000000000..d370de42e --- /dev/null +++ b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/Analytics/index.tsx @@ -0,0 +1,358 @@ +import styled from 'styled-components'; +import { useState } from 'react'; +import linkSvg from 'assets/icons/link.svg?react'; +import { TransactionsHistory } from './Table/Table'; +import { Chart } from './Chart/Chart'; +import * as breakpoints from 'styles/breakpoints'; +import { useMediaQuery } from 'react-responsive'; +import { queryPhone } from 'styles/breakpoints'; + +type ItemProps = { + isActive: boolean; +}; + +const Selectors = ['USD', 'DAI', 'TEMPLE', 'TGLD']; + +export const Analytics = () => { + const isPhoneOrAbove = useMediaQuery({ + query: queryPhone, + }); + + const [activeTab, setActiveTab] = useState('USD'); + + return ( + + + <TitleText>Analytics</TitleText> + <LinkIcon /> + + + + Base currency + + {Selectors.map((item) => ( + setActiveTab(item)} + > + {item} + + ))} + + + + + + $1.12 M + Value of Holdings + + + $0.69 M + Nominal Equity + + + $0.19 M + Benchmarked Equity + + + 5.58% p.a. + Interest Rate + + + + {isPhoneOrAbove ? ( + <> + + + 36% + Dept Share + + + $4.51 M + Debt Ceiling + + + 25.12% + Debt Ceiling Utilization + + + 2.41 DAI + Total Repayment + + + $1.20 B + Principal + + + $980.83 K + Accrued dUSD Interest + + + + + $0.44 B + Nominal Equity + + + $1.20 B + Benchmarked Equity + + + 1.35% + Nominal Performance + + + 0.38% + Benchmark Performance + + + 110% + Positive Threshold + + + 90% + Negative Threshold + + + + ) : ( + <> + + + 36% + Dept Share + + + $4.51 M + Debt Ceiling + + + + + 25.12% + Debt Ceiling Utilization + + + 2.41 DAI + Total Repayment + + + + + $1.20 B + Principal + + + $980.83 K + Accrued dUSD Interest + + + + + $0.44 B + Nominal Equity + + + $1.20 B + Benchmarked Equity + + + + + 1.35% + Nominal Performance + + + 0.38% + Benchmark Performance + + + + + 110% + Positive Threshold + + + 90% + Negative Threshold + + + + )} + + + + ); +}; + +const PageContainer = styled.div` + margin-top: -20px; + display: flex; + flex-direction: column; + gap: 20px; + + ${breakpoints.phoneAndAbove(` + gap: 40px; + `)} +`; + +const Title = styled.div` + display: flex; + flex-direction: row; + align-items: center; + gap: 15px; +`; + +const TitleText = styled.h2` + color: ${({ theme }) => theme.palette.brandLight}; + margin: 0px; + font-size: 28px; + line-height: 52px; + + ${breakpoints.phoneAndAbove(` + font-size: 36px; + line-height: 67px; + `)} +`; + +const LinkIcon = styled(linkSvg)` + fill: ${({ theme }) => theme.palette.brand}; + cursor: pointer; +`; + +const BodyContainer = styled.div` + display: flex; + flex-direction: column; + gap: 60px; + + ${breakpoints.phoneAndAbove(` + gap: 40px; + `)} +`; + +const Selector = styled.div` + display: flex; + flex-direction: row; + gap: 25px; + align-items: center; +`; + +const SelectorTitle = styled.div` + font-size: 16px; + line-height: 19px; + color: ${({ theme }) => theme.palette.brand}; +`; + +const Items = styled.div` + display: flex; + flex-direction: row; + justify-content: center; + height: 37px; + gap: 16px; + border: 1.5px solid ${({ theme }) => theme.palette.brand}; + border-radius: 30px; + backdrop-filter: blur(42px) + box-shadow: -5px -5px 250px 0px #FFFFFF05 inset; +`; + +const Item = styled.button` + cursor: pointer; + background: ${(props) => + props.isActive + ? ({ theme }) => theme.palette.gradients.greyVertical + : 'none'}; + border: ${({ isActive, theme }) => + isActive ? `1.5px solid ${theme.palette.brand}` : 'none'}; + border-radius: 40px; + box-shadow: ${(props) => + props.isActive ? '0px 0px 20px 0px #DE5C0666' : 'none'}; + padding: 8px 20px 8px 20px; +`; + +const ItemText = styled.p` + font-size: 12px; + font-weight: 700; + line-height: 18px; + color: ${({ theme }) => theme.palette.brandLight}; + margin: 0px; +`; + +const InfoRow1 = styled.div` + display: flex; + gap: 22.5px; + flex-direction: column; + + ${breakpoints.phoneAndAbove(` + flex-direction: row; + `)} +`; + +const InfoRow2 = styled.div` + display: flex; + flex-direction: row; + justify-content: space-around; + padding: 0px 20px; + + ${breakpoints.phoneAndAbove(` + gap: 0px; + padding: 0px 0px; + `)} +`; + +const InfoCell1 = styled.div` + display: flex; + flex-direction: column; + justify-content: center; + flex-grow: 1; + flex-basis: 0; + align-items: center; + padding: 18px 30px 18px 30px; + gap: 5px; + border-radius: 10px; + border: 1px solid ${({ theme }) => theme.palette.brand}; + background: linear-gradient(180deg, #0b0a0a 0%, #1d1a1a 100%); + min-height: 136px; + + ${breakpoints.phoneAndAbove(` + min-height: 109px; + `)} +`; + +const InfoCell2 = styled.div` + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + padding: 7px 8px 7px 8px; + gap: 6px; + min-width: 200px; + height: 52px; +`; + +const Value1 = styled.div` + font-size: 24px; + line-height: 30px; + color: ${({ theme }) => theme.palette.brandLight}; +`; + +const Text1 = styled.p` + font-size: 16px; + line-height: 19px; + color: ${({ theme }) => theme.palette.brand}; + margin: 0px; +`; + +const Value2 = styled.p` + font-size: 16px; + line-height: 19px; + color: ${({ theme }) => theme.palette.brandLight}; + margin: 0px; +`; + +const Text2 = styled.p` + font-size: 16px; + line-height: 19px; + color: ${({ theme }) => theme.palette.brand}; + margin: 0px; +`; diff --git a/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/BidTGLD/BidTGLD.tsx b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/BidTGLD/BidTGLD.tsx new file mode 100644 index 000000000..47b4c60bc --- /dev/null +++ b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/BidTGLD/BidTGLD.tsx @@ -0,0 +1,236 @@ +import styled from 'styled-components'; +import { TradeButton } from './Details/Details'; +import templeGold from 'assets/icons/temple-gold.svg?react'; +import { Input } from '.././components/Input'; +import * as breakpoints from 'styles/breakpoints'; +import { useMediaQuery } from 'react-responsive'; +import { queryPhone } from 'styles/breakpoints'; + +export const BidTGLD = () => { + const isPhoneOrAbove = useMediaQuery({ + query: queryPhone, + }); + + return ( + + + BID TGLD + + + + + + 70.53 TGLD + AVAILABLE + + + + + Your Bid Amount + + + + + If the current bid price holds, you will {!isPhoneOrAbove &&
} + receive X {isPhoneOrAbove &&
} + TOKEN at 5.32 TGLD per TOKEN +
+ + +

i

+
+ + + Current TGLD price may rise before the end of the auction. + + + Once submitted, the bid cannot be withdrawn or cancelled. + + +
+ console.log('clicked')} + > + SUBMIT BID + +
+
+ ); +}; + +const ContentContainer = styled.div` + display: flex; + flex-direction: column; + align-items: center; + flex-grow: 1; + gap: 32px; + max-width: 393px; + padding: 0px 16px 0px 16px; + + ${breakpoints.phoneAndAbove(` + max-width: 100%; + padding: 0px 0px 0px 0px; + `)} +`; + +const TitleContainer = styled.div` + display: flex; + flex-direction: row; + height: 77px; + width: 100%; + justify-content: center; + align-items: center; + background: ${({ theme }) => theme.palette.gradients.grey}; + + ${breakpoints.phoneAndAbove(` + width: 624px; + `)} +`; + +const Title = styled.h3` + diplay: flex; + color: ${({ theme }) => theme.palette.brandLight}; + font-size: 28px; + line-height: 52px; + text-align: center; + margin: 0px; +`; + +const Container = styled.div` + display: flex; + flex-direction: column; + flex-grow: 1; + padding: 8px 0px 8px 0px; + gap: 24px; + width: 360px; + + ${breakpoints.phoneAndAbove(` + width: 450px; + `)} +`; + +const AvailableAmountContainer = styled.div` + display: flex; + flex-direction: row; + align-items: center; + padding: 0px 24px 0px 24px; + gap: 10px; + + ${breakpoints.phoneAndAbove(` + width: 450px; + `)} +`; + +const AvailableAmountText = styled.div` + display: flex; + flex-direction: column; +`; + +const AvailableAmount = styled.h3` + font-size: 28px; + line-height: 52px; + color: ${({ theme }) => theme.palette.gold}; + margin: 0px; +`; + +const AvailableText = styled.div` + font-size: 16px; + line-height: 19px; + color: ${({ theme }) => theme.palette.brand}; + margin: 0px; +`; + +const BidContainer = styled.div` + display: flex; + flex-direction: column; + width: 100%; + border-top: 2px solid ${({ theme }) => theme.palette.brand}; + border-bottom: 2px solid ${({ theme }) => theme.palette.brand}; + background: ${({ theme }) => theme.palette.gradients.grey}; + padding: 24px; + gap: 32px; +`; + +const BidContent = styled.div` + display: flex; + flex-direction: column; + gap: 8px; +`; + +const TitleBid = styled.div` + font-size: 16px; + line-height: 19px; + color: ${({ theme }) => theme.palette.brandLight}; +`; + +const TempleGoldIcon = styled(templeGold)` + width: 42px; + height: 42px; +`; + +const ReceiveText = styled.div` + padding: 0px 20px 0px 20px; + font-size: 16px; + line-height: 19px; + color: ${({ theme }) => theme.palette.brandLight}; +`; + +const InfoCircle = styled.div` + display: flex; + margin: 0.25rem; + padding: 0.5rem; + align-items: center; + justify-content: center; + width: 1.25rem; + height: 1.25rem; + font-size: 1rem; + font-weight: 600; + border-radius: 50%; + border: 1px solid ${({ theme }) => theme.palette.brand}; +`; + +const MessageText = styled.div` + display: flex; + flex-direction: column; + gap: 8px; +`; + +const Text = styled.p` + margin: 0px; + color: ${({ theme }) => theme.palette.brand}; + font-size: 12px; + line-height: 18px; + font-weight: 700; +`; + +const WarningMessage = styled.div` + display: flex; + flex-direction: row; + align-items: center; + width: 100%; + border: 2px solid transparent; + border-image-source: linear-gradient( + 180deg, + rgba(149, 97, 63, 0.1) 0%, + rgba(255, 255, 255, 0) 100% + ); + border-image-slice: 1; + border-radius: 6px; + padding: 10px 0px 10px 10px; + gap: 10px; + background: #24272c; +`; diff --git a/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/BidTGLD/Chart/Chart.tsx b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/BidTGLD/Chart/Chart.tsx new file mode 100644 index 000000000..e5bb87939 --- /dev/null +++ b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/BidTGLD/Chart/Chart.tsx @@ -0,0 +1,60 @@ +import { useEffect, useState } from 'react'; +import styled, { useTheme } from 'styled-components'; +import { subHours } from 'date-fns'; +import LineChart from './LineChart'; +import Loader from 'components/Loader/Loader'; +import { formatNumberAbbreviated } from 'utils/formatter'; + +const tickFormatter = (timestamp: number) => { + const hoursAgo = Math.floor( + (new Date().getTime() - timestamp) / (1000 * 60 * 60) + ); + return `${hoursAgo}h`; +}; + +type Metric = { timestamp: number; price: number }; + +const pricesLast72H = [ + { timestamp: new Date().getTime(), price: 1.8 }, + { timestamp: subHours(new Date(), 12).getTime(), price: 2.1 }, + { timestamp: subHours(new Date(), 24).getTime(), price: 2.4 }, + { timestamp: subHours(new Date(), 36).getTime(), price: 2.6 }, + { timestamp: subHours(new Date(), 48).getTime(), price: 2.2 }, + { timestamp: subHours(new Date(), 60).getTime(), price: 3.7 }, + { timestamp: subHours(new Date(), 72).getTime(), price: 3.2 }, +]; + +export const Chart = () => { + const [metrics, setMetrics] = useState([]); + const theme = useTheme(); + + useEffect(() => { + setMetrics(pricesLast72H); + }, []); + + if (!metrics.length) return ; + + return ( + + + `${formatNumberAbbreviated(val).number.toFixed(2)}\u00A0TGLD` + } + tooltipLabelFormatter={tickFormatter} + yDomain={[1, 4]} + tooltipValuesFormatter={(value) => [ + `${value.toFixed(2)} TGLD`, + 'Price', + ]} + /> + + ); +}; + +const PageContainer = styled.div` + height: 100%; +`; diff --git a/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/BidTGLD/Chart/LineChart.tsx b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/BidTGLD/Chart/LineChart.tsx new file mode 100644 index 000000000..2d529857d --- /dev/null +++ b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/BidTGLD/Chart/LineChart.tsx @@ -0,0 +1,209 @@ +import type { DataKey, AxisDomain } from 'recharts/types/util/types'; + +import React, { useState } from 'react'; +import { useTheme } from 'styled-components'; +import { + CartesianGrid, + ResponsiveContainer, + Line, + XAxis, + YAxis, + Tooltip, + Legend, + ComposedChart, + Area, +} from 'recharts'; +import { formatNumberAbbreviated } from 'utils/formatter'; +import { useMediaQuery } from 'react-responsive'; +import { queryPhone } from 'styles/breakpoints'; + +type LineChartProps = { + chartData: T[]; + xDataKey: DataKey; + lines: { series: DataKey; color: string; hide?: boolean }[]; + stackedItems?: { + series: string; + color: string; + stackId: string; + hide?: boolean; + }[]; + xTickFormatter: (xValue: any, index: number) => string; + yTickFormatter?: (yValue: any, index: number) => string; + tooltipLabelFormatter: (value: any) => string; + tooltipValuesFormatter?: (value: number, name: string) => string[]; + legendFormatter?: (value: string) => string; + yDomain?: AxisDomain; + onLegendClick?: (key: string) => void; +}; + +export default function LineChart( + props: React.PropsWithChildren> +) { + const { + chartData, + xDataKey, + lines, + stackedItems, + xTickFormatter, + yTickFormatter, + tooltipLabelFormatter, + tooltipValuesFormatter, + legendFormatter, + yDomain, + } = props; + const theme = useTheme(); + + const [hiddenLines, setHiddenLines] = useState({ + ...Object.fromEntries( + lines.map((s) => [s.series.toString(), s.hide || false]) + ), + ...Object.fromEntries( + stackedItems?.map((s) => [s.series.toString(), s.hide || false]) ?? [] + ), + }); + + const toggleLineVisibility = (key: string) => { + //there must be always at least one visible line + // otherwise the chart breaks + const nextState = { + ...hiddenLines, + [key]: !hiddenLines[key], + }; + + const totalLines = Object.values(hiddenLines).length; + const wouldBeHiddenLinesCount = Object.values(nextState).reduce( + (hiddenCount, isHidden) => (isHidden ? hiddenCount + 1 : hiddenCount), + 0 + ); + + if (totalLines - wouldBeHiddenLinesCount === 0) { + return; + } + setHiddenLines(nextState); + }; + + const isDesktop = useMediaQuery({ + query: queryPhone, + }); + return ( + + + + {stackedItems?.map((item) => ( + + ))} + {lines.map((line) => ( + + ))} + + yTickFormatter(val, i) + : (value) => formatNumberAbbreviated(value).string + } + tick={{ + fill: theme.palette.brandLight, + style: { + fontSize: '12px', + fontWeight: '700', + lineHeight: '18px', + letterSpacing: '0.05em', + }, + }} + offset={10} + domain={yDomain} + ticks={[1.0, 2.0, 3.0, 4.0]} + tickMargin={20} + /> + { + //@ts-ignore + return tooltipValuesFormatter(value, name); + } + : undefined + } + /> + {legendFormatter ? ( + toggleLineVisibility(e.dataKey?.toString() || '')} + /> + ) : null} + + + ); +} diff --git a/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/BidTGLD/Details/DataTable.tsx b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/BidTGLD/Details/DataTable.tsx new file mode 100644 index 000000000..53695872b --- /dev/null +++ b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/BidTGLD/Details/DataTable.tsx @@ -0,0 +1,256 @@ +import React, { useEffect, useState } from 'react'; +import styled from 'styled-components'; +import { Transaction } from './Table'; +import { PaginationControl } from 'components/Pages/Core/DappPages/SpiceBazaar/components/PaginationControl'; +import * as breakpoints from 'styles/breakpoints'; + +enum TableHeaders { + Epoch = 'EPOCH', + Status = 'Status', + AuctionStartDate = 'Auction Start Date', + AuctionEndDate = 'Auction End Date', + AmountTGLDAuctioned = 'Amount TGLD Auctioned', + PriceRatio = 'Price Ratio', +} + +type TableProps = { + transactions: Transaction[]; + loading: boolean; + refetch?: () => void; + dataRefetching?: boolean; +}; + +const ROWS_PER_PAGE = 4; + +export const DataTable: React.FC = ({ + transactions, + loading, + refetch, + dataRefetching, +}) => { + const tableHeaders = [ + { name: TableHeaders.Epoch }, + { name: TableHeaders.Status }, + { name: TableHeaders.AuctionStartDate }, + { name: TableHeaders.AuctionEndDate }, + { name: TableHeaders.AmountTGLDAuctioned }, + { name: TableHeaders.PriceRatio }, + ]; + + const [filter, setFilter] = useState('Last 30 Days'); + const [filteredTransactions, setFilteredTransactions] = + useState(transactions); + const [currentPage, setCurrentPage] = useState(1); + + const filterOptions = ['Last Week', 'Last 30 Days', 'All']; + + useEffect(() => { + const newFilteredTransactions = transactions.filter((transaction) => { + const auctionEndDate = new Date(transaction.auctionStartDate); + const today = new Date(); + const thirtyDaysAgo = new Date(); + thirtyDaysAgo.setDate(today.getDate() - 30); + + if (filter === 'Last Week') { + const startOfWeek = new Date(); + startOfWeek.setDate(today.getDate() - today.getDay()); + return auctionEndDate >= startOfWeek && auctionEndDate <= today; + } + if (filter === 'Last 30 Days') { + return auctionEndDate >= thirtyDaysAgo && auctionEndDate <= today; + } + return true; + }); + + setFilteredTransactions(newFilteredTransactions); + setCurrentPage(1); + }, [filter, transactions]); + + const indexOfLastTransaction = currentPage * ROWS_PER_PAGE; + const indexOfFirstTransaction = indexOfLastTransaction - ROWS_PER_PAGE; + const currentTransactions = filteredTransactions.slice( + indexOfFirstTransaction, + indexOfLastTransaction + ); + + const totalPages = Math.ceil(filteredTransactions.length / ROWS_PER_PAGE); + + return ( + +
+ Auctions History + + {filterOptions.map((option) => ( + setFilter(option)} + selected={filter === option} + > + {option} + + ))} + +
+ + + + + {tableHeaders.map((h) => ( + {h.name} + ))} + + + + {loading ? ( + + Loading... + + ) : currentTransactions.length === 0 ? ( + + No data available + + ) : ( + currentTransactions.map((transaction) => ( + + {transaction.epoch} + {transaction.status} + + {transaction.status !== 'Not yet started' + ? transaction.auctionStartDate + : '-'} + + + {transaction.status === 'Finished' + ? transaction.auctionEndDate + : '-'} + + {transaction.amountTGLD} + + {transaction.status === 'Finished' + ? transaction.priceRatio + : '-'} + + + )) + )} + + + + +
+ ); +}; + +const PageContainer = styled.div` + display: flex; + flex-direction: column; + padding: 40px 0px 24px 0px; + gap: 20px; + + ${breakpoints.phoneAndAbove(` + gap: 10px; + `)} +`; + +const Header = styled.div` + display: flex; + justify-content: space-between; + align-items: center; + flex-direction: column; + gap: 10px; + + ${breakpoints.phoneAndAbove(` + flex-direction: row; + `)} +`; + +const Title = styled.h3` + color: ${({ theme }) => theme.palette.brandLight}; + font-size: 24px; + line-height: 44px; + margin: 0; +`; + +const FilterContainer = styled.div` + display: flex; + flex-direction: row; + gap: 20px; +`; + +const FilterButton = styled.button<{ selected: boolean }>` + font-size: 16px; + line-height: 19px; + background: none; + color: ${({ selected, theme }) => + selected ? theme.palette.brandLight : theme.palette.brand}; + border: none; + cursor: pointer; +`; + +const TableWrapper = styled.div` + overflow-x: scroll; + padding-bottom: 20px; + scrollbar-width: thin; + scrollbar-color: #58321a #95613f; + + &::-webkit-scrollbar { + height: 8px; + background: transparent; + border-radius: 8px; + } + + &::-webkit-scrollbar-thumb { + background: linear-gradient(to right, #58321a 20%, #95613f 84.5%); + margin: 2px 82px 2px 2px; + } + + &::-webkit-scrollbar-track { + border: 1px solid #351f11; + border-radius: 8px; + } +`; + +const TableData = styled.table` + border-spacing: 10px; + min-width: 980px; + border-collapse: collapse; + width: 100%; +`; + +const HeaderRow = styled.tr` + border-bottom: 1px solid ${({ theme }) => theme.palette.brand}; +`; + +const TableHeader = styled.th` + font-size: 13px; + font-weight: 700; + line-height: 20px; + text-align: left; + padding-top: 5px; + color: ${({ theme }) => theme.palette.brand}; + position: sticky; + top: 0; + z-index: 1; +`; + +const DataRow = styled.tr` + padding-left: 16px; +`; + +const DataCell = styled.td` + font-size: 13px; + font-weight: 700; + line-height: 20px; + text-align: left; + padding: 20px 0px 20px 0px; + border-bottom: 1px solid ${({ theme }) => theme.palette.brand}; + color: ${({ theme }) => theme.palette.brandLight}; + + &:first-child { + padding-left: 16px; + } +`; diff --git a/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/BidTGLD/Details/Details.tsx b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/BidTGLD/Details/Details.tsx new file mode 100644 index 000000000..5a694af09 --- /dev/null +++ b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/BidTGLD/Details/Details.tsx @@ -0,0 +1,393 @@ +import linkSvg from 'assets/icons/link.svg?react'; +import active from 'assets/icons/active.svg?react'; +import scheduled from 'assets/icons/scheduled.svg?react'; +import styled from 'styled-components'; +import { useState } from 'react'; +import { Button } from 'components/Button/Button'; +import { Chart } from '../Chart/Chart'; +import { BidTGLD } from '../BidTGLD'; +import { Popover } from 'components/Pages/Core/DappPages/SpiceBazaar/components/Popover'; +import { AuctionsHistory } from './Table'; +import { BidTopNav } from '../TopNav'; +import * as breakpoints from 'styles/breakpoints'; + +export const Details = () => { + const [isLive, setIsLive] = useState(true); + const [modal, setModal] = useState<'closed' | 'bidTgld'>('closed'); + + return ( + <> + + + + + + + Spice Auctions Details + + + + +
+ + + Current Auction + 0xC4973de5e...5EcF + + + EPOCH 2 + + + + { + setIsLive(!isLive); + }} + > + {isLive ? ( + <> + + + ACTIVE + + + Ends in 00:15:03:04 at 07.07.24 23:59 CST + + + ) : ( + <> + + + SCHEDULE + + 05.10.24 at 00:00 CST + + )} + + +
+ + + Amount to be auctioned + 2500 TOKENS + + + Price Ratio + 1 Token = 5.32 TGLD + View history + + + Amount TGLD submitted until now + 2500 TGLD + + + {isLive ? ( + + Token Price History + + + ) : null} + + setModal('bidTgld')} + style={{ whiteSpace: 'nowrap' }} + > + BID TGLD + + +
+
+ + + +
+
+ setModal('closed')} + closeOnClickOutside + showCloseButton + > + + + + ); +}; + +const LinkIcon = styled(linkSvg)` + fill: ${({ theme }) => theme.palette.brand}; + cursor: pointer; +`; +const PageContainer = styled.div` + margin-top: -20px; +`; + +const ContentContainer = styled.div` + display: flex; + flex-direction: column; + gap: 20px; + padding: 20px 20px 40px 20px; + + ${breakpoints.phoneAndAbove(` + gap: 60px; + padding: 60px 0px 0px 0px; + `)} +`; + +const SpiceAuctionDetails = styled.div` + display: flex; + flex-direction: column; + gap: 20px; + + ${breakpoints.phoneAndAbove(` + gap: 60px; + `)} +`; + +const SpiceAuction = styled.div` + display: flex; + flex-direction: column; + gap: 20px; +`; + +const SpiceAuctionTitle = styled.h2` + display: flex; + align-items: center; + color: ${({ theme }) => theme.palette.brandLight}; + gap: 15px; + margin: 0px; + font-size: 28px; + line-height: 52px; + + ${breakpoints.phoneAndAbove(` + font-size: 36px; + line-height: 67px; + `)} +`; + +const CurrentAuction = styled.div` + display: flex; + flex-direction: column; + border-top: solid ${({ theme }) => theme.palette.brandDark} 2px; + border-bottom: solid ${({ theme }) => theme.palette.brandDark} 2px; + background: ${({ theme }) => theme.palette.gradients.grey}; + padding: 24px; + gap: 32px; +`; + +const CurrentAddress = styled.div` + font-size: 16px; + line-height: 19px; + color: ${({ theme }) => theme.palette.brandLight}; + text-decoration: underline; +`; + +const Header = styled.div` + display: flex; + justify-content: space-between; + gap: 32px; + flex-direction: column; + + ${breakpoints.phoneAndAbove(` + flex-direction: row; + align-items: center; + gap: 20px; + `)} +`; + +const HeaderLeft = styled.div` + display: flex; + align-items: center; + gap: 20px; + padding: 15px 0px; +`; + +const Left = styled.div` + display: flex; + flex-direction: column; + gap: 6px; +`; + +const Right = styled.div` + display: flex; + flex-direction: row; + gap: 8px; +`; + +const HeaderRight = styled.div` + display: flex; + justify-content: center; + + ${breakpoints.phoneAndAbove(` + gap: 12px; + justify-content: flex-end;; + `)} +`; + +const HeaderRightContainer = styled.div` + display: flex; + flex-direction: column; + align-items: center; + background: ${({ theme }) => theme.palette.black}; + border: solid 1px #588f22; + border-radius: 10px; + padding: 8px 24px 8px 24px; + gap: 10px; + width: 305px; + + ${breakpoints.phoneAndAbove(` + width: 100%; + flex-direction: row; + width: 100%; + height: 45px; + `)} +`; + +const AuctionStatus = styled.div` + display: flex; + flex-direction: row; + align-items: center; + font-size: 16px; + line-height: 19px; + gap: 8px; + color: ${({ theme }) => theme.palette.brandLight}; +`; + +const TimeStamp = styled.div` + display: flex; + flex-direction: row; + align-items: center; + justify-content: center; + font-size: 16px; + line-height: 19px; + text-align: center; + color: ${({ theme }) => theme.palette.brandLight}; +`; + +const Active = styled(active)``; + +const Scheduled = styled(scheduled)``; + +const CurrentAuctionTitle = styled.h3` + display: flex; + white-space: nowrap; + font-size: 24px; + line-height: 44px; + text-align: left; + color: ${({ theme }) => theme.palette.brandLight}; + margin: 0px; +`; + +const Epoch = styled.div` + display: flex; + white-space: nowrap; + border: 1px solid ${({ theme }) => theme.palette.brand}; + border-radius: 10px; + padding: 8px; + background: ${({ theme }) => theme.palette.black}; + gap: 10px; + font-size: 12px; + font-weight: 700; + line-height: 18px; + color: ${({ theme }) => theme.palette.brand}; +`; + +const Status = styled.div` + display: flex; + flex-wrap: wrap; + justify-content: space-between; + gap: 8px; + + ${breakpoints.phoneAndAbove(` + gap: 40px; + `)} +`; + +const StatusContent = styled.div` + display: flex; + flex: 1 1 30%; + flex-direction: column; + justify-content: center; + align-items: center; + height: 136px; + width: 305px; + white-space: nowrap; + border: solid 1px ${({ theme }) => theme.palette.brand}; + border-radius: 10px; + background: ${({ theme }) => theme.palette.black}; + padding: 20px 10px 20px 10px; + gap: 12px; + margin: auto; + + ${breakpoints.phoneAndAbove(` + min-width: 250px; + max-width: 50%; + `)} +`; + +const StatusTitle = styled.p` + margin: 0px; + font-size: 16px; + line-height: 19px; + text-align: center; + text-wrap: balance; + color: ${({ theme }) => theme.palette.brand}; +`; + +const StatusValue = styled.p` + margin: 0px; + font-size: 24px; + font-weight: 700; + line-height: 29px; + text-align: center; + color: ${({ theme }) => theme.palette.brandLight}; +`; + +const StatusLink = styled.a` + margin: 0px; + font-size: 12px; + font-weight: 700; + line-height: 18px; + text-align: center; + text-decoration: underline; + color: ${({ theme }) => theme.palette.brand}; +`; + +const ChartContainer = styled.div` + display: flex; + flex-direction: column; + padding: 20px 20px 20px 20px; + gap: 40px; + background: ${({ theme }) => theme.palette.black}; + border: 1px solid ${({ theme }) => theme.palette.brand}; + border-radius: 10px; +`; + +const ChartTitle = styled.div` + color: ${({ theme }) => theme.palette.brand}; + font-weight: 700; + font-size: 16px; + line-height: 19px; + margin-left: 20px; +`; + +const AuctionsHistoryContainer = styled.div``; + +const ButtonContainer = styled.div` + display: flex; + justify-content: center; +`; + +export const TradeButton = styled(Button)` + padding: 12px 20px 12px 20px; + width: ${(props) => props.width || 'min-content'}; + height: min-content; + background: ${({ theme }) => theme.palette.gradients.dark}; + border: 1px solid ${({ theme }) => theme.palette.brandDark}; + box-shadow: 0px 0px 20px rgba(222, 92, 6, 0.4); + border-radius: 10px; + font-size: 16px; + line-height: 19px; + text-transform: uppercase; + color: ${({ theme }) => theme.palette.brandLight}; +`; diff --git a/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/BidTGLD/Details/Table.tsx b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/BidTGLD/Details/Table.tsx new file mode 100644 index 000000000..cecbbdf91 --- /dev/null +++ b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/BidTGLD/Details/Table.tsx @@ -0,0 +1,91 @@ +import styled from 'styled-components'; +import { DataTable } from './DataTable'; + +export type Transaction = { + epoch: number; + status: 'Finished' | 'Started' | 'Scheduled' | 'Not yet started'; + auctionStartDate: string; + auctionEndDate: string; + amountTGLD: string; + priceRatio: string; +}; + +const data: Transaction[] = [ + { + epoch: 1, + status: 'Finished', + auctionStartDate: '2024-10-18 23:22:59 CST', + auctionEndDate: '2024-10-13 23:22:59 CST', + amountTGLD: '20,832.81 TGLD', + priceRatio: '5.42 DAI', + }, + { + epoch: 2, + status: 'Finished', + auctionStartDate: '2024-10-18 23:22:59 CST', + auctionEndDate: '2024-09-18 23:22:59 CST', + amountTGLD: '20,832.81 TGLD', + priceRatio: '5.42 DAI', + }, + { + epoch: 3, + status: 'Started', + auctionStartDate: '2024-10-16 23:22:59 CST', + auctionEndDate: '-', + amountTGLD: '18,000.00 TGLD', + priceRatio: '-', + }, + { + epoch: 4, + status: 'Started', + auctionStartDate: '2024-10-14 23:22:59 CST', + auctionEndDate: '-', + amountTGLD: '18,000.00 TGLD', + priceRatio: '-', + }, + { + epoch: 5, + status: 'Scheduled', + auctionStartDate: '2024-09-15 23:22:59 CST', + auctionEndDate: '-', + amountTGLD: '22,500.00 TGLD', + priceRatio: '-', + }, + { + epoch: 6, + status: 'Scheduled', + auctionStartDate: '2024-09-15 23:22:59 CST', + auctionEndDate: '-', + amountTGLD: '22,500.00 TGLD', + priceRatio: '-', + }, + { + epoch: 7, + status: 'Not yet started', + auctionStartDate: '-', + auctionEndDate: '-', + amountTGLD: '-', + priceRatio: '-', + }, + { + epoch: 8, + status: 'Not yet started', + auctionStartDate: '-', + auctionEndDate: '-', + amountTGLD: '-', + priceRatio: '-', + }, +]; + +export const AuctionsHistory = () => { + return ( + + + + ); +}; + +const AuctionsHistoryContainer = styled.div` + display: flex; + flex-direction: column; +`; diff --git a/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/BidTGLD/Table/DataTable.tsx b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/BidTGLD/Table/DataTable.tsx new file mode 100644 index 000000000..885388e66 --- /dev/null +++ b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/BidTGLD/Table/DataTable.tsx @@ -0,0 +1,301 @@ +import React, { useEffect, useState } from 'react'; +import { useNavigate } from 'react-router-dom'; +import styled from 'styled-components'; +import { PaginationControl } from 'components/Pages/Core/DappPages/SpiceBazaar/components/PaginationControl'; +import { Transaction } from './Table'; +import { BidTGLD } from '../BidTGLD'; +import { Popover } from 'components/Pages/Core/DappPages/SpiceBazaar/components/Popover'; +import { Button } from 'components/Button/Button'; +import * as breakpoints from 'styles/breakpoints'; + +enum TableHeaders { + Status = 'Status', + AuctionName = 'Auction Name', + TotalVolume = 'Total Volume', + FloorPrice = 'Floor Price', + BestOffer = 'Best Offer', + Links = '', +} + +type TableProps = { + transactions: Transaction[]; + loading: boolean; + refetch?: () => void; + dataRefetching?: boolean; +}; + +const ROWS_PER_PAGE = 5; + +export const DataTable: React.FC = ({ + transactions, + loading, + refetch, + dataRefetching, +}) => { + const tableHeaders = [ + { name: TableHeaders.Status }, + { name: TableHeaders.AuctionName }, + { name: TableHeaders.TotalVolume }, + { name: TableHeaders.FloorPrice }, + { name: TableHeaders.BestOffer }, + { name: TableHeaders.Links }, + ]; + const [modal, setModal] = useState<'closed' | 'bidTgld'>('closed'); + const [filter, setFilter] = useState('Last 30 Days'); + const [filteredTransactions, setFilteredTransactions] = + useState(transactions); + const [currentPage, setCurrentPage] = useState(1); + + const navigate = useNavigate(); + + const filterOptions = ['Last Week', 'Last 30 Days', 'All']; + + useEffect(() => { + const newFilteredTransactions = transactions.filter((transaction) => { + // Extracting the date from the status string + const statusParts = transaction.status.split(' at '); + const auctionEndDateString = statusParts[statusParts.length - 1]; // Geting the last part which contains the date + const auctionEndDate = new Date(auctionEndDateString); + + const today = new Date(); + const thirtyDaysAgo = new Date(); + thirtyDaysAgo.setDate(today.getDate() - 30); + + if (filter === 'Last Week') { + const startOfWeek = new Date(); + startOfWeek.setDate(today.getDate() - today.getDay()); + return auctionEndDate >= startOfWeek && auctionEndDate <= today; + } + if (filter === 'Last 30 Days') { + return auctionEndDate >= thirtyDaysAgo && auctionEndDate <= today; + } + return true; + }); + + setFilteredTransactions(newFilteredTransactions); + setCurrentPage(1); + }, [filter, transactions]); + + const indexOfLastTransaction = currentPage * ROWS_PER_PAGE; + const indexOfFirstTransaction = indexOfLastTransaction - ROWS_PER_PAGE; + const currentTransactions = filteredTransactions.slice( + indexOfFirstTransaction, + indexOfLastTransaction + ); + + const totalPages = Math.ceil(filteredTransactions.length / ROWS_PER_PAGE); + + return ( + <> + +
+ Auctions History + + {filterOptions.map((option) => ( + setFilter(option)} + selected={filter === option} + > + {option} + + ))} + +
+ + + + + {tableHeaders.map((h) => ( + {h.name} + ))} + + + + {loading ? ( + + Loading... + + ) : currentTransactions.length === 0 ? ( + + No data available + + ) : ( + currentTransactions.map((transaction) => ( + + {transaction.status} + {transaction.auctionName} + {transaction.totalVolume} ETH + {transaction.floorPrice} TGLD + {transaction.bestOffer} TGLD + + + navigate(transaction.details)} + style={{ whiteSpace: 'nowrap', margin: 0 }} + > + Details + + setModal('bidTgld')} + style={{ whiteSpace: 'nowrap', margin: 0 }} + > + BID + + + + + )) + )} + + + + +
+ setModal('closed')} + closeOnClickOutside + showCloseButton + > + + + + ); +}; + +const PageContainer = styled.div` + display: flex; + flex-direction: column; + padding: 40px 0px 24px 0px; + gap: 20px; + + ${breakpoints.phoneAndAbove(` + gap: 10px; + `)} +`; + +const Header = styled.div` + display: flex; + justify-content: space-between; + align-items: center; + flex-direction: column; + gap: 10px; + + ${breakpoints.phoneAndAbove(` + flex-direction: row; + `)} +`; + +const Title = styled.h3` + color: ${({ theme }) => theme.palette.brandLight}; + font-size: 24px; + line-height: 44px; + margin: 0; +`; + +const FilterContainer = styled.div` + display: flex; + flex-direction: row; + gap: 20px; +`; + +const FilterButton = styled.button<{ selected: boolean }>` + font-size: 16px; + line-height: 19px; + background: none; + color: ${({ selected, theme }) => + selected ? theme.palette.brandLight : theme.palette.brand}; + border: none; + cursor: pointer; +`; + +const TableWrapper = styled.div` + overflow-x: scroll; + padding-bottom: 20px; + scrollbar-width: thin; + scrollbar-color: #58321a #95613f; + + &::-webkit-scrollbar { + height: 8px; + background: transparent; + border-radius: 8px; + } + + &::-webkit-scrollbar-thumb { + background: linear-gradient(to right, #58321a 20%, #95613f 84.5%); + margin: 2px 82px 2px 2px; + } + + &::-webkit-scrollbar-track { + border: 1px solid #351f11; + border-radius: 8px; + } +`; + +const TableData = styled.table` + border-spacing: 10px; + min-width: 980px; + border-collapse: collapse; + width: 100%; +`; + +const HeaderRow = styled.tr` + border-bottom: 1px solid ${({ theme }) => theme.palette.brand}; +`; + +const TableHeader = styled.th` + font-size: 13px; + font-weight: 700; + line-height: 20px; + text-align: left; + padding-top: 5px; + color: ${({ theme }) => theme.palette.brand}; + position: sticky; + top: 0; + z-index: 1; +`; + +const DataRow = styled.tr``; + +const DataCell = styled.td` + font-size: 13px; + font-weight: 700; + line-height: 20px; + text-align: left; + padding: 20px 0px 20px 0px; + border-bottom: 1px solid ${({ theme }) => theme.palette.brand}; + color: ${({ theme }) => theme.palette.brandLight}; + + &:last-child { + text-align: right; + } +`; + +const ButtonsContainer = styled.div` + display: flex; + flex-direction: row; + justify-content: flex-end; + align-items: center; + gap: 10px; + width: 100%; +`; + +const TradeButton = styled(Button)` + padding: 10px 20px 10px 20px; + width: ${(props) => props.width || 'min-content'}; + height: min-content; + background: ${({ theme }) => theme.palette.gradients.dark}; + border: 1px solid ${({ theme }) => theme.palette.brandDark}; //if button is not active this is not used + box-shadow: 0px 0px 20px rgba(222, 92, 6, 0.4); //if button is not active this is not used + border-radius: 10px; + font-weight: 700; + font-size: 12px; + line-height: 18px; + text-transform: uppercase; + color: ${({ theme }) => theme.palette.brandLight}; +`; diff --git a/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/BidTGLD/Table/Table.tsx b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/BidTGLD/Table/Table.tsx new file mode 100644 index 000000000..66c384381 --- /dev/null +++ b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/BidTGLD/Table/Table.tsx @@ -0,0 +1,91 @@ +import styled from 'styled-components'; +import { DataTable } from './DataTable'; + +export type Transaction = { + status: string; + auctionName: string; + totalVolume: number; + floorPrice: number; + bestOffer: number; + details: string; + bid: string; +}; + +const data: Transaction[] = [ + { + status: 'Upcoming 2024-11-13 23:22:59 CST', + auctionName: 'Spice 1', + totalVolume: 1848, + floorPrice: 0.1097, + bestOffer: 0.0819, + details: 'details', + bid: '', + }, + { + status: 'Upcoming 2024-11-13 23:22:59 CST', + auctionName: 'Spice 1', + totalVolume: 1848, + floorPrice: 0.1097, + bestOffer: 0.0819, + details: 'details', + bid: '', + }, + { + status: 'Upcoming 2024-10-13 23:22:59 CST', + auctionName: 'Spice 1', + totalVolume: 1848, + floorPrice: 0.1097, + bestOffer: 0.0819, + details: 'details', + bid: '', + }, + { + status: 'Upcoming 2024-10-13 23:22:59 CST', + auctionName: 'Spice 1', + totalVolume: 1848, + floorPrice: 0.1097, + bestOffer: 0.0819, + details: 'details', + bid: '', + }, + { + status: 'Ends in 00:15:03:04 at 2024-10-13 23:22:59 CST', + auctionName: 'Spice 1', + totalVolume: 1848, + floorPrice: 0.1097, + bestOffer: 0.0819, + details: 'details', + bid: '', + }, + { + status: 'Closed at 2024-10-13 23:22:59 CST', + auctionName: 'Spice 1', + totalVolume: 1848, + floorPrice: 0.1097, + bestOffer: 0.0819, + details: 'details', + bid: '', + }, + { + status: 'Closed at 2024-10-13 23:22:59 CST', + auctionName: 'Spice 1', + totalVolume: 1848, + floorPrice: 0.1097, + bestOffer: 0.0819, + details: 'details', + bid: '', + }, +]; + +export const AuctionsHistory = () => { + return ( + + + + ); +}; + +const AuctionsHistoryContainer = styled.div` + display: flex; + flex-direction: column; +`; diff --git a/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/BidTGLD/TopNav.tsx b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/BidTGLD/TopNav.tsx new file mode 100644 index 000000000..0544bf67a --- /dev/null +++ b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/BidTGLD/TopNav.tsx @@ -0,0 +1,74 @@ +import { useEffect, useState } from 'react'; +import { useLocation } from 'react-router-dom'; +import { TopNav } from 'components/Pages/Core/DappPages/SpiceBazaar/components/TopNav'; +import { MobileTopNavSecondary } from 'components/Pages/Core/DappPages/SpiceBazaar/components/MobileTopNavSecondary'; +import { useMediaQuery } from 'react-responsive'; +import { queryPhone } from 'styles/breakpoints'; + +enum BidLocPaths { + Bid = '/dapp/spice/bid', +} + +const BidConfig = [ + { + label: 'Spice Auctions', + linkTo: BidLocPaths.Bid, + }, +]; + +export const BidTopNav = () => { + const isPhoneOrAbove = useMediaQuery({ + query: queryPhone, + }); + const loc = useLocation(); + const [menuNavItems, setMenuNavItems] = useState( + BidConfig.map((item) => ({ + label: item.label, + path: item.linkTo, + selected: item.linkTo === loc.pathname, + })) + ); + + useEffect(() => { + setMenuNavItems((prevMenuNavItems) => + prevMenuNavItems.map((menuItem) => ({ + ...menuItem, + selected: menuItem.path === loc.pathname, + })) + ); + }, [loc.pathname]); + + const onSelectMenuNavItems = (selectedMenuItem: { label: string }) => { + setMenuNavItems( + menuNavItems.map((item) => { + if (item.label === selectedMenuItem.label) { + return { ...item, selected: true }; + } + return { ...item, selected: false }; + }) + ); + }; + + return ( + <> + {isPhoneOrAbove ? ( + + ) : ( + + )} + + ); +}; diff --git a/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/BidTGLD/index.tsx b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/BidTGLD/index.tsx new file mode 100644 index 000000000..834f8929b --- /dev/null +++ b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/BidTGLD/index.tsx @@ -0,0 +1,299 @@ +import styled from 'styled-components'; +import active from 'assets/icons/active.svg?react'; +import scheduled from 'assets/icons/scheduled.svg?react'; +import { BidTopNav } from './TopNav'; +import { AuctionsHistory } from './Table/Table'; +import * as breakpoints from 'styles/breakpoints'; + +export const Bid = () => { + return ( + + + + + + Spice Auctions + + + + + + Spice 2 + + + Epoch 2 + + + + + + Token icon + + 70.530 KAMI + + + Total amount currently in auction + + + + + + ACTIVE + + 00:15:03:04 + + + + + + + + Spice 5 + + + Epoch 3 + + + + + + Token icon + + 85.000 ENA + + + Total amount currently in auction + + + + + + ACTIVE + + 00:15:03:04 + + + + + + + + Spice 2 + + + Epoch 2 + + + + + + Token icon + + 40.320 KAMI + + Total amount to be auctioned + + + + UPCOMING AUCTION + + + + + + + + + + + + ); +}; + +const PageContainer = styled.div` + margin-top: -20px; +`; + +const ContentContainer = styled.div` + display: flex; + flex-direction: column; + gap: 60px; + margin-top: 20px; + + ${breakpoints.phoneAndAbove(` + margin-top: 60px; + `)} +`; + +const SpiceAuctions = styled.div` + display: flex; + flex-direction: column; + gap: 20px; +`; + +const SpiceTitle = styled.div` + display: flex; + flex-direction: row; + align-items: center; + gap: 15px; +`; + +const SpiceTitleText = styled.h2` + font-size: 36px; + line-height: 67px; + color: ${({ theme }) => theme.palette.brandLight}; + margin: 0px; +`; + +const Status = styled.div` + display: flex; + gap: 20px; + flex-direction: column; + + ${breakpoints.phoneAndAbove(` + flex-direction: row; + `)} +`; + +const StatusContent = styled.div` + display: flex; + flex-direction: column; + width: 100%; + padding: 12px 20px 20px 20px; + gap: 20px; + border-radius: 10px; + border: 1px solid ${({ theme }) => theme.palette.brand}; + background: ${({ theme }) => theme.palette.gradients.grey}; +`; + +const StatusHeader = styled.div` + display: flex; + width: 100%; + flex-direction: row; + justify-content: flex-end; + gap: 8px; +`; +const AuctionName = styled.div` + padding: 8px; + border-radius: 10px; + border: 1px solid ${({ theme }) => theme.palette.brand}; + background: ${({ theme }) => theme.palette.black}; +`; + +const AuctionNameText = styled.p` + font-size: 12px; + font-weight: 700; + line-height: 18px; + color: ${({ theme }) => theme.palette.brand}; + margin: 0px; +`; + +const Epoch = styled.div` + display: flex; + align-items: center; + padding: 8px; + border-radius: 10px; + border: 1px solid ${({ theme }) => theme.palette.brand}; + background: ${({ theme }) => theme.palette.black}; +`; + +const EpochText = styled.p` + font-size: 12px; + font-weight: 700; + line-height: 18px; + color: ${({ theme }) => theme.palette.brand}; + margin: 0px; +`; + +const StatusBody = styled.div` + display: flex; + flex-direction: column; + align-items: center; + gap: 4px; +`; + +const AmountInAuction = styled.div` + display: flex; + flex-direction: column; + align-items: center; + gap: 4px; +`; + +const AmountInAuctionIcon = styled.div` + display: flex; + width: 42px; + height: 42px; +`; + +const AmountInActionSum = styled.h3` + font-size: 24px; + line-height: 44px; + color: ${({ theme }) => theme.palette.brandLight}; + margin: 0px; +`; + +const TotalAmountText = styled.p` + font-size: 12px; + font-weight: 700; + line-height: 18px; + text-align: center; + white-space: nowrap; + color: ${({ theme }) => theme.palette.brand}; + margin: 0px; +`; + +const AuctionStatus = styled.div` + display: flex; + flex-direction: row; + justify-content: center; + align-items: center; + width: 100%; + height: 43px; + padding: 8px; + gap: 8px; + border-radius: 10px; + background: ${({ theme }) => theme.palette.black}; +`; + +const Active = styled(active)``; + +const Scheduled = styled(scheduled)``; + +const LiveContainer = styled.div` + display: flex; + flex-direction: row; + align-items: center; + gap: 8px; +`; + +const ActiveContainer = styled.div` + display: flex; + flex-direction: row; + align-items: center; + gap: 8px; + font-size: 13px; + font-weight: 700; + line-height: 15px; + text-align: left; + color: #588f22; +`; + +const ScheduledContainer = styled.div` + display: flex; + flex-direction: row; + align-items: center; + color: ${({ theme }) => theme.palette.brandLight}; + font-size: 13px; + font-weight: 700; + line-height: 15px; + gap: 8px; +`; + +const AuctionTimeStamp = styled.div` + font-size: 13px; + font-weight: 700; + line-height: 15px; + color: #588f22; +`; + +const AuctionsHistoryContainer = styled.div``; diff --git a/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/Earn/Auctions/BidDai.tsx b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/Earn/Auctions/BidDai.tsx new file mode 100644 index 000000000..da3e86c74 --- /dev/null +++ b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/Earn/Auctions/BidDai.tsx @@ -0,0 +1,248 @@ +import styled from 'styled-components'; +import { TradeButton } from 'components/Pages/Core/NewUI/Home'; +import dai from 'assets/icons/Dai.svg?react'; +import templeGold from 'assets/icons/temple-gold.svg?react'; +import { Input } from 'components/Pages/Core/DappPages/SpiceBazaar/components/Input'; + +export const BidDai = () => { + return ( + + + BID DAI + + + + + + 70.53 DAI + AVAILABLE + + + + + Your Bid Amount + + + + + You will receive + + + 1 TGLD + + + at the current TGLD priece of 5.32 DAI per{' '} + TGLD + + + + +

i

+
+ Current TGLD price may rise before the end of the auction.
+ Once submitted, the bid cannot be withdrawn or cancelled. +
+ console.log('clicked')} + > + SUBMIT BID + +
+
+ ); +}; + +const ContentContainer = styled.div` + display: flex; + flex-direction: column; + align-items: center; + flex-grow: 1; + gap: 32px; +`; + +const TitleContainer = styled.div` + display: flex; + flex-direction: row; + height: 77px; + width: 624px; + justify-content: center; + align-items: center; + background: ${({ theme }) => theme.palette.gradients.grey}; +`; + +const Title = styled.h3` + diplay: flex; + color: ${({ theme }) => theme.palette.brandLight}; + font-size: 28px; + font-weight: 400; + line-height: 52px; + text-align: center; + margin: 0px; +`; + +const Container = styled.div` + display: flex; + flex-direction: column; + width: 450px; + align-items: center; + flex-grow: 1; + padding: 8px 0px 8px 0px; + gap: 24px; +`; + +const AvailableAmountContainer = styled.div` + display: flex; + flex-direction: row; + align-items: center; + padding: 0px 24px 0px 24px; + width: 450px; + gap: 10px; +`; + +const DaiIcon = styled(dai)` + width: 42px; + height: 42px; +`; + +const AvailableAmountText = styled.div` + display: flex; + flex-direction: column; +`; + +const AvailableAmount = styled.h3` + font-weight: 400; + font-size: 28px; + line-height: 52px; + font-weight: 400; + color: ${({ theme }) => theme.palette.brandLight}; + margin: 0px; +`; + +const AvailableText = styled.div` + font-size: 16px; + font-weight: 700; + line-height: 19px; + letter-spacing: 0.05em; + color: ${({ theme }) => theme.palette.brand}; + margin: 0px; +`; + +const BidContainer = styled.div` + display: flex; + flex-direction: column; + width: 100%; + border-top: 2px solid ${({ theme }) => theme.palette.brand}; + border-bottom: 2px solid ${({ theme }) => theme.palette.brand}; + background: ${({ theme }) => theme.palette.gradients.grey}; + padding: 24px; + gap: 32px; +`; + +const BidContent = styled.div` + display: flex; + flex-direction: column; + gap: 8px; +`; + +const TitleBid = styled.div` + font-weight: 400; + font-size: 16px; + line-height: 19px; + letter-spacing: -0.02em; + color: ${({ theme }) => theme.palette.brandLight}; +`; + +const ReceiveAmountContainer = styled.div` + display: flex; + flex-direction: column; + align-items: center; + width: 100%; + border: 1px solid ${({ theme }) => theme.palette.brand}; + border-radius: 10px; + background: ${({ theme }) => theme.palette.black}; + gap: 20px; + padding: 16px; +`; + +const TempleGoldIcon = styled(templeGold)``; + +const ReceiveContainer = styled.div` + display: flex; + flex-direction: row; + align-items: center; + gap: 20px; +`; + +const ReceiveTextTop = styled.div` + font-weight: 400; + letter-spacing: -0.02em; + font-size: 18px; + line-height: 21px; + color: ${({ theme }) => theme.palette.brandLight}; +`; + +const ReceiveTextBottom = styled.div` + font-size: 16px; + font-weight: 400; + line-height: 19px; + letter-spacing: 0.05em; + span { + font-weight: 700; + } + color: ${({ theme }) => theme.palette.brandLight}; +`; + +const ReceiveAmount = styled.h3` + line-height: 52px; + font-size: 28px; + line-height: 52px; + font-weight: 400; + color: ${({ theme }) => theme.palette.gold}; + margin: 0px; +`; + +const InfoCircle = styled.div` + display: flex; + margin: 0.25rem; + padding: 0.5rem; + align-items: center; + justify-content: center; + width: 1.25rem; + height: 1.25rem; + font-size: 1rem; + font-weight: 600; + border-radius: 50%; + border: 1px solid ${({ theme }) => theme.palette.brand}; +`; + +const WarningMessage = styled.div` + display: flex; + flex-direction: row; + align-items: center; + width: 100%; + border: 2px solid transparent; + border-image-source: linear-gradient( + 180deg, + rgba(149, 97, 63, 0.1) 0%, + rgba(255, 255, 255, 0) 100% + ); + border-image-slice: 1; + border-radius: 6px; + padding: 10px 0px 10px 10px; + gap: 10px; + background: #24272c; + color: ${({ theme }) => theme.palette.brand}; + font-size: 12px; + line-height: 18px; + font-weight: 700; +`; diff --git a/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/Earn/Auctions/BidUSDS.tsx b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/Earn/Auctions/BidUSDS.tsx new file mode 100644 index 000000000..6bd69f907 --- /dev/null +++ b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/Earn/Auctions/BidUSDS.tsx @@ -0,0 +1,324 @@ +import styled from 'styled-components'; +import { TradeButton } from '../StakeTemple/Stake'; +import usds from 'assets/icons/usds.svg?react'; +import templeGold from 'assets/icons/temple-gold.svg?react'; +import { Input } from 'components/Pages/Core/DappPages/SpiceBazaar/components/Input'; +import * as breakpoints from 'styles/breakpoints'; +import { useMediaQuery } from 'react-responsive'; +import { queryPhone } from 'styles/breakpoints'; +import { useWallet } from 'providers/WalletProvider'; +import { TICKER_SYMBOL } from 'enums/ticker-symbol'; +import { formatToken } from 'utils/formatter'; +import { useEffect, useState } from 'react'; +import { useSpiceBazaar } from 'providers/SpiceBazaarProvider'; +import { formatBigNumber } from 'components/Vault/utils'; +import { ZERO } from 'utils/bigNumber'; +import { getTokenInfo } from 'components/Vault/utils'; + +export const BidDai = () => { + const isPhoneOrAbove = useMediaQuery({ + query: queryPhone, + }); + + const { + daiGoldAuctions: { bid }, + } = useSpiceBazaar(); + + const { balance, updateBalance } = useWallet(); + + useEffect(() => { + updateBalance(); + }, [updateBalance]); + + const handleBidClick = async (value: string) => { + await bid(value); + setInputValue(''); + }; + + const handleHintClick = () => { + const amount = balance.DAI.eq(ZERO) + ? '' + : formatBigNumber(balance.DAI, getTokenInfo(TICKER_SYMBOL.DAI).decimals); + setInputValue(amount); + }; + + const [inputValue, setInputValue] = useState(''); + + const handleInputChange = (value: string) => { + setInputValue(value); + }; + + return ( + + + BID USDS + + + + + + + {!balance?.DAI + ? '0' + : formatToken(balance.DAI, TICKER_SYMBOL.DAI)} + + AVAILABLE + + + + + Your Bid Amount + + + + + You will receive + + + 1 TGLD + + + at the current TGLD priece of {!isPhoneOrAbove &&
} + 5.32 USDS per TGLD +
+
+ + +

i

+
+ + + Current TGLD price may rise before the end of the auction. + + + Once submitted, the bid cannot be withdrawn or cancelled. + + +
+ handleBidClick(inputValue)} + disabled={!inputValue} + > + SUBMIT BID + +
+
+ ); +}; + +const ContentContainer = styled.div` + display: flex; + flex-direction: column; + align-items: center; + flex-grow: 1; + gap: 32px; + max-width: 393px; + padding: 0px 16px 0px 16px; + + ${breakpoints.phoneAndAbove(` + max-width: 100%; + padding: 0px 0px 0px 0px; + `)} +`; + +const TitleContainer = styled.div` + display: flex; + flex-direction: row; + height: 77px; + width: 100%; + justify-content: center; + align-items: center; + background: ${({ theme }) => theme.palette.gradients.grey}; + + ${breakpoints.phoneAndAbove(` + width: 624px; + `)} +`; + +const Title = styled.h3` + diplay: flex; + color: ${({ theme }) => theme.palette.brandLight}; + font-size: 24px; + line-height: 44px; + text-align: center; + margin: 0px; +`; + +const Container = styled.div` + display: flex; + flex-direction: column; + flex-grow: 1; + padding: 8px 0px 8px 0px; + gap: 24px; + width: 360px; + + ${breakpoints.phoneAndAbove(` + width: 450px; + `)} +`; + +const AvailableAmountContainer = styled.div` + display: flex; + flex-direction: row; + align-items: center; + padding: 0px 24px 0px 24px; + gap: 10px; + + ${breakpoints.phoneAndAbove(` + width: 450px; + `)} +`; + +const USDSIcon = styled(usds)` + width: 42px; + height: 42px; +`; + +const AvailableAmountText = styled.div` + display: flex; + flex-direction: column; +`; + +const AvailableAmount = styled.h3` + font-size: 28px; + line-height: 52px; + color: ${({ theme }) => theme.palette.brandLight}; + margin: 0px; +`; + +const AvailableText = styled.div` + font-size: 16px; + line-height: 19px; + color: ${({ theme }) => theme.palette.brand}; + margin: 0px; +`; + +const BidContainer = styled.div` + display: flex; + flex-direction: column; + width: 100%; + border-top: 2px solid ${({ theme }) => theme.palette.brand}; + border-bottom: 2px solid ${({ theme }) => theme.palette.brand}; + background: ${({ theme }) => theme.palette.gradients.grey}; + padding: 24px; + gap: 32px; +`; + +const BidContent = styled.div` + display: flex; + flex-direction: column; + gap: 8px; +`; + +const TitleBid = styled.div` + font-weight: 400; + font-size: 16px; + line-height: 19px; + color: ${({ theme }) => theme.palette.brandLight}; +`; + +const ReceiveAmountContainer = styled.div` + display: flex; + flex-direction: column; + align-items: center; + width: 100%; + border: 1px solid ${({ theme }) => theme.palette.brand}; + border-radius: 10px; + background: ${({ theme }) => theme.palette.black}; + gap: 20px; + padding: 16px; +`; + +const TempleGoldIcon = styled(templeGold)``; + +const ReceiveContainer = styled.div` + display: flex; + flex-direction: row; + align-items: center; + gap: 20px; +`; + +const ReceiveTextTop = styled.div` + font-weight: 400; + font-size: 18px; + line-height: 21px; + color: ${({ theme }) => theme.palette.brandLight}; +`; + +const ReceiveTextBottom = styled.div` + font-size: 16px; + line-height: 19px; + text-align: center; + color: ${({ theme }) => theme.palette.brandLight}; +`; + +const ReceiveAmount = styled.h3` + line-height: 52px; + font-size: 28px; + line-height: 52px; + color: ${({ theme }) => theme.palette.gold}; + margin: 0px; +`; + +const InfoCircle = styled.div` + display: flex; + margin: 0.25rem; + padding: 0.5rem; + align-items: center; + justify-content: center; + width: 1.25rem; + height: 1.25rem; + font-size: 1rem; + font-weight: 600; + border-radius: 50%; + border: 1px solid ${({ theme }) => theme.palette.brand}; +`; + +const MessageText = styled.div` + display: flex; + flex-direction: column; + gap: 8px; +`; + +const Text = styled.p` + margin: 0px; + color: ${({ theme }) => theme.palette.brand}; + font-size: 12px; + line-height: 18px; + font-weight: 700; +`; + +const WarningMessage = styled.div` + display: flex; + flex-direction: row; + align-items: center; + width: 100%; + border: 2px solid transparent; + border-image-source: linear-gradient( + 180deg, + rgba(149, 97, 63, 0.1) 0%, + rgba(255, 255, 255, 0) 100% + ); + border-image-slice: 1; + border-radius: 6px; + padding: 10px 0px 10px 10px; + gap: 8px; + background: #24272c; +`; diff --git a/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/Earn/Auctions/Chart/Chart.tsx b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/Earn/Auctions/Chart/Chart.tsx new file mode 100644 index 000000000..9027552b4 --- /dev/null +++ b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/Earn/Auctions/Chart/Chart.tsx @@ -0,0 +1,65 @@ +import { useEffect, useState } from 'react'; +import styled, { useTheme } from 'styled-components'; +import { format, subDays } from 'date-fns'; +import LineChart from './LineChart'; +import Loader from 'components/Loader/Loader'; +import { formatNumberAbbreviated } from 'utils/formatter'; +import { useMediaQuery } from 'react-responsive'; +import { queryPhone } from 'styles/breakpoints'; + +type XAxisTickFormatter = (timestamp: number) => string; + +const tickFormatter: XAxisTickFormatter = (timestamp) => + format(new Date(timestamp), 'MMM dd'); + +type Metric = { timestamp: number; price: number }; + +const pricesLast7Days = [ + { timestamp: subDays(new Date(), 6).getTime(), price: 5.32 }, + { timestamp: subDays(new Date(), 5).getTime(), price: 5.3 }, + { timestamp: subDays(new Date(), 4).getTime(), price: 5.3 }, + { timestamp: subDays(new Date(), 3).getTime(), price: 5.36 }, + { timestamp: subDays(new Date(), 2).getTime(), price: 5.36 }, + { timestamp: subDays(new Date(), 1).getTime(), price: 5.34 }, + { timestamp: new Date().getTime(), price: 5.45 }, +]; + +export const Chart = () => { + const isPhoneOrAbove = useMediaQuery({ + query: queryPhone, + }); + const [metrics, setMetrics] = useState([]); + const theme = useTheme(); + + useEffect(() => { + isPhoneOrAbove + ? setMetrics(pricesLast7Days) + : setMetrics(pricesLast7Days.filter((_, index) => index % 2 === 0)); + }, []); + + if (!metrics.length) return ; + + return ( + + + `${formatNumberAbbreviated(val).number.toFixed(2)}\u00A0USDS` + } + tooltipLabelFormatter={tickFormatter} + yDomain={[5.3, 5.45]} + tooltipValuesFormatter={(value) => [ + `${value.toFixed(2)} USDS`, + 'Price', + ]} + /> + + ); +}; + +const PageContainer = styled.div` + height: 100%; +`; diff --git a/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/Earn/Auctions/Chart/LineChart.tsx b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/Earn/Auctions/Chart/LineChart.tsx new file mode 100644 index 000000000..f22d6ee72 --- /dev/null +++ b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/Earn/Auctions/Chart/LineChart.tsx @@ -0,0 +1,209 @@ +import type { DataKey, AxisDomain } from 'recharts/types/util/types'; + +import React, { useState } from 'react'; +import { useTheme } from 'styled-components'; +import { + CartesianGrid, + ResponsiveContainer, + Line, + XAxis, + YAxis, + Tooltip, + Legend, + ComposedChart, + Area, +} from 'recharts'; +import { formatNumberAbbreviated } from 'utils/formatter'; +import { useMediaQuery } from 'react-responsive'; +import { queryPhone } from 'styles/breakpoints'; + +type LineChartProps = { + chartData: T[]; + xDataKey: DataKey; + lines: { series: DataKey; color: string; hide?: boolean }[]; + stackedItems?: { + series: string; + color: string; + stackId: string; + hide?: boolean; + }[]; + xTickFormatter: (xValue: any, index: number) => string; + yTickFormatter?: (yValue: any, index: number) => string; + tooltipLabelFormatter: (value: any) => string; + tooltipValuesFormatter?: (value: number, name: string) => string[]; + legendFormatter?: (value: string) => string; + yDomain?: AxisDomain; + onLegendClick?: (key: string) => void; +}; + +export default function LineChart( + props: React.PropsWithChildren> +) { + const { + chartData, + xDataKey, + lines, + stackedItems, + xTickFormatter, + yTickFormatter, + tooltipLabelFormatter, + tooltipValuesFormatter, + legendFormatter, + yDomain, + } = props; + const theme = useTheme(); + + const [hiddenLines, setHiddenLines] = useState({ + ...Object.fromEntries( + lines.map((s) => [s.series.toString(), s.hide || false]) + ), + ...Object.fromEntries( + stackedItems?.map((s) => [s.series.toString(), s.hide || false]) ?? [] + ), + }); + + const toggleLineVisibility = (key: string) => { + //there must be always at least one visible line + // otherwise the chart breaks + const nextState = { + ...hiddenLines, + [key]: !hiddenLines[key], + }; + + const totalLines = Object.values(hiddenLines).length; + const wouldBeHiddenLinesCount = Object.values(nextState).reduce( + (hiddenCount, isHidden) => (isHidden ? hiddenCount + 1 : hiddenCount), + 0 + ); + + if (totalLines - wouldBeHiddenLinesCount === 0) { + return; + } + setHiddenLines(nextState); + }; + + const isDesktop = useMediaQuery({ + query: queryPhone, + }); + return ( + + + + {stackedItems?.map((item) => ( + + ))} + {lines.map((line) => ( + + ))} + + yTickFormatter(val, i) + : (value) => formatNumberAbbreviated(value).string + } + tick={{ + fill: theme.palette.brandLight, + style: { + fontSize: '12px', + fontWeight: '700', + lineHeight: '18px', + letterSpacing: '0.05em', + }, + }} + offset={10} + domain={yDomain} + ticks={[5.3, 5.35, 5.4, 5.45]} + tickMargin={20} + /> + { + //@ts-ignore + return tooltipValuesFormatter(value, name); + } + : undefined + } + /> + {legendFormatter ? ( + toggleLineVisibility(e.dataKey?.toString() || '')} + /> + ) : null} + + + ); +} diff --git a/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/Earn/Auctions/Table/DataTable.tsx b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/Earn/Auctions/Table/DataTable.tsx new file mode 100644 index 000000000..53eb14a68 --- /dev/null +++ b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/Earn/Auctions/Table/DataTable.tsx @@ -0,0 +1,256 @@ +import React, { useEffect, useState } from 'react'; +import styled from 'styled-components'; +import { Transaction } from './Table'; +import { PaginationControl } from 'components/Pages/Core/DappPages/SpiceBazaar/components/PaginationControl'; +import * as breakpoints from 'styles/breakpoints'; + +enum TableHeaders { + Epoch = 'EPOCH', + Status = 'Status', + AuctionStartDate = 'Auction Start Date', + AuctionEndDate = 'Auction End Date', + AmountTGLDAuctioned = 'Amount TGLD Auctioned', + PriceRatio = 'Price Ratio', +} + +type TableProps = { + transactions: Transaction[]; + loading: boolean; + refetch?: () => void; + dataRefetching?: boolean; +}; + +const ROWS_PER_PAGE = 3; + +export const DataTable: React.FC = ({ + transactions, + loading, + refetch, + dataRefetching, +}) => { + const tableHeaders = [ + { name: TableHeaders.Epoch }, + { name: TableHeaders.Status }, + { name: TableHeaders.AuctionStartDate }, + { name: TableHeaders.AuctionEndDate }, + { name: TableHeaders.AmountTGLDAuctioned }, + { name: TableHeaders.PriceRatio }, + ]; + + const [filter, setFilter] = useState('Last 30 Days'); + const [filteredTransactions, setFilteredTransactions] = + useState(transactions); + const [currentPage, setCurrentPage] = useState(1); + + const filterOptions = ['Last Week', 'Last 30 Days', 'All']; + + useEffect(() => { + const newFilteredTransactions = transactions.filter((transaction) => { + const auctionEndDate = new Date(transaction.auctionStartDate); + const today = new Date(); + const thirtyDaysAgo = new Date(); + thirtyDaysAgo.setDate(today.getDate() - 30); + + if (filter === 'Last Week') { + const startOfWeek = new Date(); + startOfWeek.setDate(today.getDate() - today.getDay()); + return auctionEndDate >= startOfWeek && auctionEndDate <= today; + } + if (filter === 'Last 30 Days') { + return auctionEndDate >= thirtyDaysAgo && auctionEndDate <= today; + } + return true; + }); + + setFilteredTransactions(newFilteredTransactions); + setCurrentPage(1); + }, [filter, transactions]); + + const indexOfLastTransaction = currentPage * ROWS_PER_PAGE; + const indexOfFirstTransaction = indexOfLastTransaction - ROWS_PER_PAGE; + const currentTransactions = filteredTransactions.slice( + indexOfFirstTransaction, + indexOfLastTransaction + ); + + const totalPages = Math.ceil(filteredTransactions.length / ROWS_PER_PAGE); + + return ( + +
+ Auctions History + + {filterOptions.map((option) => ( + setFilter(option)} + selected={filter === option} + > + {option} + + ))} + +
+ + + + + {tableHeaders.map((h) => ( + {h.name} + ))} + + + + {loading ? ( + + Loading... + + ) : currentTransactions.length === 0 ? ( + + No data available + + ) : ( + currentTransactions.map((transaction) => ( + + {transaction.epoch} + {transaction.status} + + {transaction.auctionStartDate !== '-' + ? transaction.auctionStartDate + : '-'} + + + {transaction.status === 'Closed' + ? transaction.auctionEndDate + : '-'} + + {transaction.amountTGLD} + + {transaction.status === 'Closed' + ? transaction.priceRatio + : '-'} + + + )) + )} + + + + +
+ ); +}; + +const PageContainer = styled.div` + display: flex; + flex-direction: column; + padding: 40px 0px 24px 0px; + gap: 20px; + + ${breakpoints.phoneAndAbove(` + gap: 10px; + `)} +`; + +const Header = styled.div` + display: flex; + justify-content: space-between; + align-items: center; + flex-direction: column; + gap: 10px; + + ${breakpoints.phoneAndAbove(` + flex-direction: row; + `)} +`; + +const Title = styled.h3` + color: ${({ theme }) => theme.palette.brandLight}; + font-size: 24px; + line-height: 44px; + margin: 0; +`; + +const FilterContainer = styled.div` + display: flex; + flex-direction: row; + gap: 20px; +`; + +const FilterButton = styled.button<{ selected: boolean }>` + font-size: 16px; + line-height: 19px; + background: none; + color: ${({ selected, theme }) => + selected ? theme.palette.brandLight : theme.palette.brand}; + border: none; + cursor: pointer; +`; + +const TableWrapper = styled.div` + overflow-x: scroll; + padding-bottom: 20px; + scrollbar-width: thin; + scrollbar-color: #58321a #95613f; + + &::-webkit-scrollbar { + height: 8px; + background: transparent; + border-radius: 8px; + } + + &::-webkit-scrollbar-thumb { + background: linear-gradient(to right, #58321a 20%, #95613f 84.5%); + margin: 2px 82px 2px 2px; + } + + &::-webkit-scrollbar-track { + border: 1px solid #351f11; + border-radius: 8px; + } +`; + +const TableData = styled.table` + border-spacing: 10px; + min-width: 980px; + border-collapse: collapse; + width: 100%; +`; + +const HeaderRow = styled.tr` + border-bottom: 1px solid ${({ theme }) => theme.palette.brand}; +`; + +const TableHeader = styled.th` + font-size: 13px; + font-weight: 700; + line-height: 20px; + text-align: left; + padding-top: 5px; + color: ${({ theme }) => theme.palette.brand}; + position: sticky; + top: 0; + z-index: 1; +`; + +const DataRow = styled.tr` + padding-left: 16px; +`; + +const DataCell = styled.td` + font-size: 13px; + font-weight: 700; + line-height: 20px; + text-align: left; + padding: 20px 0px 20px 0px; + border-bottom: 1px solid ${({ theme }) => theme.palette.brand}; + color: ${({ theme }) => theme.palette.brandLight}; + + &:first-child { + padding-left: 16px; + } +`; diff --git a/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/Earn/Auctions/Table/Table.tsx b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/Earn/Auctions/Table/Table.tsx new file mode 100644 index 000000000..424284482 --- /dev/null +++ b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/Earn/Auctions/Table/Table.tsx @@ -0,0 +1,91 @@ +import styled from 'styled-components'; +import { DataTable } from './DataTable'; + +export type Transaction = { + epoch: number; + status: 'Closed' | 'Active' | 'Upcoming'; + auctionStartDate: string; + auctionEndDate: string; + amountTGLD: string; + priceRatio: string; +}; + +const data: Transaction[] = [ + { + epoch: 1, + status: 'Closed', + auctionStartDate: '2024-10-13 23:22:59 CST', + auctionEndDate: '2024-10-13 23:22:59 CST', + amountTGLD: '20,832.81 TGLD', + priceRatio: '5.42 DAI', + }, + { + epoch: 2, + status: 'Closed', + auctionStartDate: '2024-10-13 23:22:59 CST', + auctionEndDate: '2024-10-13 23:22:59 CST', + amountTGLD: '20,832.81 TGLD', + priceRatio: '5.42 DAI', + }, + { + epoch: 3, + status: 'Active', + auctionStartDate: '2024-10-18 23:22:59 CST', + auctionEndDate: '-', + amountTGLD: '18,000.00 TGLD', + priceRatio: '-', + }, + { + epoch: 4, + status: 'Active', + auctionStartDate: '2024-10-14 23:22:59 CST', + auctionEndDate: '-', + amountTGLD: '18,000.00 TGLD', + priceRatio: '-', + }, + { + epoch: 5, + status: 'Upcoming', + auctionStartDate: '15.10.24 00:00 CST', + auctionEndDate: '-', + amountTGLD: '22,500.00 TGLD', + priceRatio: '-', + }, + { + epoch: 6, + status: 'Upcoming', + auctionStartDate: '-', + auctionEndDate: '-', + amountTGLD: '22,500.00 TGLD', + priceRatio: '-', + }, + { + epoch: 7, + status: 'Upcoming', + auctionStartDate: '-', + auctionEndDate: '-', + amountTGLD: '-', + priceRatio: '-', + }, + { + epoch: 8, + status: 'Upcoming', + auctionStartDate: '-', + auctionEndDate: '-', + amountTGLD: '-', + priceRatio: '-', + }, +]; + +export const AuctionsHistory = () => { + return ( + + + + ); +}; + +const AuctionsHistoryContainer = styled.div` + display: flex; + flex-direction: column; +`; diff --git a/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/Earn/Auctions/index.tsx b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/Earn/Auctions/index.tsx new file mode 100644 index 000000000..e6140acf0 --- /dev/null +++ b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/Earn/Auctions/index.tsx @@ -0,0 +1,476 @@ +import { EarnTopNav } from 'components/Pages/Core/DappPages/SpiceBazaar/Earn/TopNav'; +import linkSvg from 'assets/icons/link.svg?react'; +import active from 'assets/icons/active.svg?react'; +import scheduled from 'assets/icons/scheduled.svg?react'; +import styled from 'styled-components'; +import { useEffect, useState } from 'react'; +import { TradeButton } from '../StakeTemple/Stake'; +import { Chart } from './Chart/Chart'; +import { BidDai } from './BidUSDS'; +import { Popover } from 'components/Pages/Core/DappPages/SpiceBazaar/components/Popover'; +import { AuctionsHistory } from './Table/Table'; +import { useSpiceBazaar } from 'providers/SpiceBazaarProvider'; +import { formatNumberWithCommas } from 'utils/formatter'; +import Loader from 'components/Loader/Loader'; +import * as breakpoints from 'styles/breakpoints'; +import { useMediaQuery } from 'react-responsive'; +import { queryPhone } from 'styles/breakpoints'; + +export const Auctions = () => { + const isPhoneOrAbove = useMediaQuery({ + query: queryPhone, + }); + const [isLive, setIsLive] = useState(true); + const [modal, setModal] = useState<'closed' | 'bidDai'>('closed'); + const [countdown, setCountdown] = useState(''); + + const { + daiGoldAuctionInfo: { + data: daiGoldAuctionInfo, + fetch: fetchDaiGoldAuctionInfo, + loading: daiGoldAuctionInfoLoading, + }, + } = useSpiceBazaar(); + + const calculateTimeLeft = (endTime: number) => { + const difference = endTime - Date.now(); + + if (difference <= 0) { + return '00:00:00:00'; + } + + const days = Math.floor(difference / (1000 * 60 * 60 * 24)); + const hours = Math.floor((difference / (1000 * 60 * 60)) % 24); + const minutes = Math.floor((difference / 1000 / 60) % 60); + const seconds = Math.floor((difference / 1000) % 60); + + return `${days.toString().padStart(2, '0')}:${hours + .toString() + .padStart(2, '0')}:${minutes.toString().padStart(2, '0')}:${seconds + .toString() + .padStart(2, '0')}`; + }; + + useEffect(() => { + if (!daiGoldAuctionInfo?.auctionEndTime) return; + + const timer = setInterval(() => { + setCountdown(calculateTimeLeft(daiGoldAuctionInfo.auctionEndTime)); + }, 1000); + + return () => clearInterval(timer); + }, [daiGoldAuctionInfo?.auctionEndTime]); + + useEffect(() => { + const fetchData = async () => { + await fetchDaiGoldAuctionInfo(); + }; + fetchData(); + }, [fetchDaiGoldAuctionInfo]); + + return ( + <> + + + + + + + USDS GOLD Auctions + + + + In the USDS Gold Auction, submit your{' '} + {!isPhoneOrAbove &&
} + USDS bid to win TGLD. The more you bid,{' '} + {!isPhoneOrAbove &&
} + the more TGLD you will earn. Once {!isPhoneOrAbove &&
} + placed, Bids cannot be withdrawn, but{' '} + {!isPhoneOrAbove &&
} + you can add more. +
+
+ +
+ + Current Auction + {daiGoldAuctionInfoLoading ? ( + + ) : ( + EPOCH {daiGoldAuctionInfo?.currentEpoch} + )} + + + { + // TODO: Add logic to detect future auction live vs current live + setIsLive(!isLive); + }} + > + {daiGoldAuctionInfoLoading ? ( + + ) : isLive ? ( + <> + + + ACTIVE + + Ends in {countdown} + + ) : ( + <> + + + UPCOMING + + + Scheduled for 05.10.24 at 00:00 CST + + + )} + + +
+ + + {daiGoldAuctionInfoLoading ? ( + + ) : ( + <> + Price Ratio + + 1 TLGD ={' '} + {daiGoldAuctionInfo?.priceRatio < 1 + ? '<1' + : daiGoldAuctionInfo?.priceRatio.toFixed(2)}{' '} + USDS + + { + e.preventDefault(); + document + .getElementById('auction-history') + ?.scrollIntoView({ + behavior: 'smooth', + }); + }} + > + View history + + + )} + + + {daiGoldAuctionInfoLoading ? ( + + ) : ( + <> + Amount to be auctioned + + {formatNumberWithCommas( + daiGoldAuctionInfo?.totalAuctionTokenAmount + )}{' '} + TGLD + + + )} + + + {daiGoldAuctionInfoLoading ? ( + + ) : ( + <> + Amount submitted + + {daiGoldAuctionInfo?.totalBidTokenAmount} USDS + + + )} + + + {isLive ? ( + + TGLD Price History + + + ) : null} + + setModal('bidDai')} + style={{ whiteSpace: 'nowrap', margin: 0 }} + > + BID USDS FOR TGLD + + +
+
+ + + +
+
+ setModal('closed')} + closeOnClickOutside + showCloseButton + > + + + + ); +}; + +const LinkIcon = styled(linkSvg)` + fill: ${({ theme }) => theme.palette.brand}; + cursor: pointer; +`; + +const PageContainer = styled.div` + margin-top: -20px; +`; + +const ContentContainer = styled.div` + display: flex; + flex-direction: column; + gap: 20px; + padding: 20px 0px 40px 0px; + + ${breakpoints.phoneAndAbove(` + gap: 60px; + padding: 60px 0px 0px 0px; + `)} +`; + +const DaiGoldAuctions = styled.div` + display: flex; + flex-direction: column; + gap: 20px; + + ${breakpoints.phoneAndAbove(` + gap: 60px; + `)} +`; + +const DaiGold = styled.div` + display: flex; + flex-direction: column; + gap: 20px; +`; + +const DaiGoldTitle = styled.h2` + display: flex; + align-items: center; + color: ${({ theme }) => theme.palette.brandLight}; + gap: 15px; + margin: 0px; + font-size: 28px; + line-height: 52px; + + ${breakpoints.phoneAndAbove(` + font-size: 36px; + line-height: 67px; + `)} +`; + +const DaiGoldText = styled.div` + font-weight: 700; + color: ${({ theme }) => theme.palette.brand}; + font-size: 16px; + line-height: 19px; + + ${breakpoints.phoneAndAbove(` + font-size: 18px; + line-height: 22px; + `)} +`; + +const CurrentAuction = styled.div` + display: flex; + flex-direction: column; + border-top: solid ${({ theme }) => theme.palette.brandDark} 2px; + border-bottom: solid ${({ theme }) => theme.palette.brandDark} 2px; + background: ${({ theme }) => theme.palette.gradients.grey}; + padding: 24px; + gap: 32px; +`; + +const Header = styled.div` + display: flex; + justify-content: space-between; + padding: 15px 0px 15px 0px; + gap: 20px; + flex-direction: column; + + ${breakpoints.phoneAndAbove(` + flex-direction: row; + `)} +`; + +const HeaderLeft = styled.div` + display: flex; + align-items: center; + gap: 20px; +`; + +const HeaderRight = styled.div` + display: flex; + justify-content: center; + + ${breakpoints.phoneAndAbove(` + gap: 12px; + justify-content: flex-end;; + `)} +`; + +const HeaderRightContainer = styled.div<{ isLive: boolean }>` + display: flex; + flex-direction: column; + align-items: center; + background: ${({ theme }) => theme.palette.black}; + border: solid 1px; + border-color: ${({ isLive }) => (isLive ? '#588f22' : '#EAB85B')}; + border-radius: 10px; + padding: 16px 24px 16px 24px; + gap: 10px; + width: 305px; + + ${breakpoints.phoneAndAbove(` + width: 100%; + padding: 8px 24px 8px 24px; + `)} +`; + +const AuctionStatus = styled.div` + display: flex; + flex-direction: row; + align-items: center; + font-size: 16px; + line-height: 19px; + gap: 8px; + color: ${({ theme }) => theme.palette.brandLight}; +`; + +const TimeStamp = styled.div` + display: flex; + flex-direction: row; + align-items: center; + justify-content: center; + font-size: 16px; + line-height: 19px; + text-align: center; + color: ${({ theme }) => theme.palette.brandLight}; +`; + +const Active = styled(active)``; + +const Scheduled = styled(scheduled)``; + +const CurrentAuctionTitle = styled.h3` + display: flex; + white-space: nowrap; + font-size: 24px; + line-height: 44px; + text-align: left; + color: ${({ theme }) => theme.palette.brandLight}; + margin: 0px; +`; + +const Epoch = styled.div` + display: flex; + white-space: nowrap; + border: 1px solid ${({ theme }) => theme.palette.brand}; + border-radius: 10px; + padding: 8px; + background: ${({ theme }) => theme.palette.black}; + gap: 10px; + font-size: 12px; + font-weight: 700; + line-height: 18px; + color: ${({ theme }) => theme.palette.brand}; +`; + +const Status = styled.div` + display: flex; + flex-wrap: wrap; + justify-content: space-between; + gap: 8px; + + ${breakpoints.phoneAndAbove(` + gap: 40px; + `)} +`; + +const StatusContent = styled.div` + display: flex; + flex: 1 1 30%; + flex-direction: column; + justify-content: center; + align-items: center; + height: 136px; + width: 305px; + white-space: nowrap; + border: solid 1px ${({ theme }) => theme.palette.brand}; + border-radius: 10px; + background: ${({ theme }) => theme.palette.black}; + padding: 20px 10px 20px 10px; + gap: 12px; + margin: auto; + + ${breakpoints.phoneAndAbove(` + min-width: 250px; + max-width: 50%; + `)} +`; + +const StatusTitle = styled.p` + margin: 0px; + font-size: 16px; + line-height: 19px; + text-align: center; + color: ${({ theme }) => theme.palette.brand}; +`; + +const StatusValue = styled.p` + margin: 0px; + font-size: 24px; + font-weight: 700; + line-height: 29px; + color: ${({ theme }) => theme.palette.brandLight}; +`; + +const StatusLink = styled.a` + margin: 0px; + font-size: 12px; + font-weight: 700; + line-height: 18px; + text-align: center; + text-decoration: underline; + color: ${({ theme }) => theme.palette.brand}; +`; + +const ChartContainer = styled.div` + display: flex; + flex-direction: column; + padding: 20px 20px 20px 20px; + gap: 40px; + background: ${({ theme }) => theme.palette.black}; + border: 1px solid ${({ theme }) => theme.palette.brand}; + border-radius: 10px; +`; + +const ChartTitle = styled.div` + color: ${({ theme }) => theme.palette.brand}; + font-size: 16px; + line-height: 19px; + margin-left: 20px; +`; + +const AuctionsHistoryContainer = styled.div``; + +const ButtonContainer = styled.div` + display: flex; + justify-content: center; +`; diff --git a/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/Earn/Claim.tsx b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/Earn/Claim.tsx new file mode 100644 index 000000000..73cca6586 --- /dev/null +++ b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/Earn/Claim.tsx @@ -0,0 +1,7 @@ +export const Claim = () => { + return ( + <> +

Claim

+ + ); +}; diff --git a/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/Earn/Stake.tsx b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/Earn/Stake.tsx new file mode 100644 index 000000000..b1ca1d91e --- /dev/null +++ b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/Earn/Stake.tsx @@ -0,0 +1,7 @@ +export const Stake = () => { + return ( + <> +

Stake

+ + ); +}; diff --git a/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/Earn/StakeTemple/Claim.tsx b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/Earn/StakeTemple/Claim.tsx new file mode 100644 index 000000000..b190fab9a --- /dev/null +++ b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/Earn/StakeTemple/Claim.tsx @@ -0,0 +1,97 @@ +import styled from 'styled-components'; +import { TradeButton } from './Stake'; +import templeGold from 'assets/icons/temple-gold.svg?react'; +import { useSpiceBazaar } from 'providers/SpiceBazaarProvider'; +import { formatNumberWithCommas } from 'utils/formatter'; +import Loader from 'components/Loader/Loader'; + +export const Claim = () => { + const { + stakePageMetrics: { + data: stakePageMetricsData, + loading: stakePageMetricsLoading, + }, + staking: { claimRewards }, + } = useSpiceBazaar(); + + const hasRewards = stakePageMetricsData.yourRewards > 0; + + return ( + + + {stakePageMetricsLoading ? ( + + ) : ( + <> + + + + {formatNumberWithCommas(stakePageMetricsData.yourRewards)} TGLD + + AVAILABLE + + + )} + + {stakePageMetricsLoading ? ( + + + + ) : ( + { + await claimRewards(); + }} + disabled={!hasRewards} + > + CLAIM + + )} + + ); +}; + +const PageContainer = styled.div` + display: flex; + flex-direction: column; + align-items: center; + padding: 32px 10px 32px 10px; + gap: 24px; +`; + +const AvailableAmountContainer = styled.div` + display: flex; + flex-direction: row; + align-items: center; + padding: 0px 24px 0px 24px; + gap: 15px; + width: 450px; +`; + +const TempleGoldIcon = styled(templeGold)``; + +const AvailableAmountText = styled.div` + display: flex; + flex-direction: column; +`; + +const AvailableAmount = styled.h3` + font-size: 28px; + line-height: 52px; + color: ${({ theme }) => theme.palette.gold}; + margin: 0px; +`; + +const AvailabilityText = styled.div` + font-size: 16px; + line-height: 19px; + color: ${({ theme }) => theme.palette.brand}; +`; + +const LoaderContainer = styled.div` + height: 43px; // Match the height of the TradeButton + display: flex; + align-items: center; + justify-content: center; +`; diff --git a/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/Earn/StakeTemple/Stake.tsx b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/Earn/StakeTemple/Stake.tsx new file mode 100644 index 000000000..66ab0077a --- /dev/null +++ b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/Earn/StakeTemple/Stake.tsx @@ -0,0 +1,247 @@ +import { useEffect, useState } from 'react'; +import styled from 'styled-components'; +import stakeTemple from 'assets/icons/stake-temple.svg?react'; +import templeGold from 'assets/icons/temple-gold.svg?react'; +import priorityHigh from 'assets/icons/priority-high.svg?react'; +import { Input } from 'components/Pages/Core/DappPages/SpiceBazaar/components/Input'; +import { Button } from 'components/Button/Button'; +import { useWallet } from 'providers/WalletProvider'; +import { formatNumberWithCommas, formatToken } from 'utils/formatter'; +import { TICKER_SYMBOL } from 'enums/ticker-symbol'; +import { formatBigNumber, getTokenInfo } from 'components/Vault/utils'; +import { fromAtto, ZERO } from 'utils/bigNumber'; +import { useSpiceBazaar } from 'providers/SpiceBazaarProvider'; +import * as breakpoints from 'styles/breakpoints'; +import { useMediaQuery } from 'react-responsive'; +import { queryPhone } from 'styles/breakpoints'; + +export const Stake = () => { + const isPhoneOrAbove = useMediaQuery({ + query: queryPhone, + }); + + const { balance, updateBalance } = useWallet(); + const { + staking: { stakeTemple }, + } = useSpiceBazaar(); + + useEffect(() => { + const onMount = async () => { + await updateBalance(); + }; + onMount(); + }, [updateBalance]); + + const handleHintClick = () => { + const amount = balance.TEMPLE.eq(ZERO) + ? '' + : formatBigNumber( + balance.TEMPLE, + getTokenInfo(TICKER_SYMBOL.TEMPLE_TOKEN).decimals + ); + setInputValue(amount); + }; + + const [inputValue, setInputValue] = useState(''); + + const handleInputChange = async (value: string) => { + setInputValue(value); + }; + + return ( + + + + + + {formatNumberWithCommas(fromAtto(balance.TEMPLE))} + TEMPLE + + AVAILABLE + + + + Amount to stake + + + {/* // Hidden per PB + + + You will receive + 1,618 TGLD + + */} + + + TGLD is non-transferrable.
+ Once submitted, bids cannot be withdrawn {!isPhoneOrAbove &&
} or + canceled, {isPhoneOrAbove &&
} + and your stake will be locked {!isPhoneOrAbove &&
} for X days + before it can be {isPhoneOrAbove &&
} + unstaked. +
+ { + await stakeTemple(inputValue); + setInputValue(''); + }} + disabled={!inputValue} + > + SUBMIT + +
+ ); +}; + +const PageContainer = styled.div` + display: flex; + flex-direction: column; + align-items: center; + padding: 32px 10px 32px 10px; + gap: 24px; +`; + +const AvailableAmountContainer = styled.div` + display: flex; + flex-direction: row; + align-items: center; + padding: 0px 24px 0px 24px; + gap: 15px; + + ${breakpoints.phoneAndAbove(` + width: 450px; + `)} +`; + +const StakeTempleIcon = styled(stakeTemple)``; + +const AvailableAmountText = styled.div` + display: flex; + flex-direction: column; +`; + +const AvailableAmount = styled.h3` + font-size: 28px; + line-height: 52px; + color: ${({ theme }) => theme.palette.brandLight}; + margin: 0px; +`; + +const AvailabilityText = styled.div` + font-size: 16px; + line-height: 19px; + color: ${({ theme }) => theme.palette.brand}; +`; + +const BodyContainer = styled.div` + display: flex; + flex-direction: column; + border-top: 2px solid ${({ theme }) => theme.palette.brand}; + border-bottom: 2px solid ${({ theme }) => theme.palette.brand}; + background: ${({ theme }) => theme.palette.gradients.grey}; + padding: 24px; + gap: 8px; + + ${breakpoints.phoneAndAbove(` + width: 450px; + `)} +`; +const TitleStake = styled.div` + font-size: 16px; + line-height: 19px; + color: ${({ theme }) => theme.palette.brandLight}; +`; + +const ReceiveAmountContainer = styled.div` + display: flex; + flex-direction: row; + align-items: center; + gap: 16px; + padding: 16px 25px 16px 0px; + width: 236px; +`; + +const TempleGoldIcon = styled(templeGold)``; + +const ContentReceive = styled.div` + display: flex; + flex-direction: column; +`; + +const ReceiveText = styled.div` + font-size: 18px; + line-height: 21px; + color: ${({ theme }) => theme.palette.brandLight}; +`; + +const ReceiveAmount = styled.h3` + font-size: 28px; + line-height: 52px; + color: ${({ theme }) => theme.palette.gold}; + margin: 0px; +`; + +const WarningMessage = styled.div` + display: flex; + flex-direction: row; + align-items: center; + + border: 2px solid transparent; + border-image-source: linear-gradient( + 180deg, + rgba(149, 97, 63, 0.1) 0%, + rgba(255, 255, 255, 0) 100% + ); + border-image-slice: 1; + border-radius: 6px; + + padding: 10px 10px 10px 10px; + gap: 10px; + background: #24272c; + color: ${({ theme }) => theme.palette.brandLight}; + font-size: 12px; + line-height: 18px; + font-weight: 700; + + ${breakpoints.phoneAndAbove(` + width: 436px; + `)} +`; + +const ExclamationIcon = styled(priorityHigh)` + min-width: 26px; + min-height: 26px; +`; + +export const TradeButton = styled(Button)` + padding: 12px 20px 12px 20px; + width: ${(props) => props.width || 'min-content'}; + height: min-content; + background: ${({ theme }) => theme.palette.gradients.dark}; + border: 1px solid ${({ theme }) => theme.palette.brandDark}; + box-shadow: 0px 0px 20px rgba(222, 92, 6, 0.4); + border-radius: 10px; + font-size: 16px; + line-height: 19px; + text-transform: uppercase; + color: ${({ theme }) => theme.palette.brandLight}; +`; diff --git a/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/Earn/StakeTemple/Unstake.tsx b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/Earn/StakeTemple/Unstake.tsx new file mode 100644 index 000000000..55dc9e95f --- /dev/null +++ b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/Earn/StakeTemple/Unstake.tsx @@ -0,0 +1,242 @@ +import { useState } from 'react'; +import styled from 'styled-components'; +import { TradeButton } from './Stake'; +import stakeTemple from 'assets/icons/stake-temple.svg?react'; +import info from 'assets/icons/info.svg?react'; +import { Input } from 'components/Pages/Core/DappPages/SpiceBazaar/components/Input'; +import RoundCheckbox from 'components/Pages/Core/DappPages/SpiceBazaar/components/RoundCheckBox'; +import { useSpiceBazaar } from 'providers/SpiceBazaarProvider'; +import { formatNumberWithCommas } from 'utils/formatter'; +import { TICKER_SYMBOL } from 'enums/ticker-symbol'; +import * as breakpoints from 'styles/breakpoints'; +import { useMediaQuery } from 'react-responsive'; +import { queryPhone } from 'styles/breakpoints'; +import Loader from 'components/Loader/Loader'; +import { useUnstakeTime } from 'hooks/spicebazaar/use-unstake-time'; + +export const Unstake = () => { + const isPhoneOrAbove = useMediaQuery({ + query: queryPhone, + }); + + const { + stakePageMetrics, + staking: { unstakeTemple }, + } = useSpiceBazaar(); + + const { isLoading, countdown, shouldShowCountdown } = useUnstakeTime(); + + const [isCheckboxChecked, setIsCheckboxChecked] = useState(false); + const handleCheckboxToggle = (checked: boolean) => { + setIsCheckboxChecked(checked); + }; + + const handleHintClick = () => { + const amount = + stakePageMetrics.data.stakedTemple === 0 + ? '' + : String(stakePageMetrics.data.stakedTemple); + setInputValue(amount); + }; + + const [inputValue, setInputValue] = useState(''); + + const handleInputChange = async (value: string) => { + setInputValue(value); + }; + + return ( + <> + {shouldShowCountdown && countdown && ( + + + TIME UNTIL YOU CAN UNSTAKE: {!isPhoneOrAbove &&
} + {countdown.days}d {countdown.hours}h {countdown.minutes}m{' '} + {countdown.seconds}s +
+ )} + + + {isLoading ? ( + + ) : ( + <> + + + + {formatNumberWithCommas(stakePageMetrics.data.stakedTemple)}{' '} + TEMPLE + + STAKED + + + )} + + + Amount to unstake + + + + + + Claim my earned TGLD + + + {isLoading ? ( + + + + ) : ( + { + await unstakeTemple(inputValue, isCheckboxChecked); + setInputValue(''); + }} + disabled={shouldShowCountdown || !inputValue} + > + UNSTAKE + + )} + + + + ); +}; + +const WarningMessage = styled.div` + display: flex; + flex-direction: row; + justify-content: center; + // align-items: center; + width: 85%; + gap: 10px; + background: #9d4124; + border-radius: 6px; + border: 2px solid; + border-image-source: linear-gradient( + 180deg, + rgba(149, 97, 63, 0.1) 0%, + rgba(255, 255, 255, 0) 100% + ); + padding: 10px 0px 10px 10px; + margin-top: 32px; + font-size: 13px; + line-height: 20px; + font-weight: 700; + text-align: center; + color: ${({ theme }) => theme.palette.brandLight}; +`; + +const InfoIcon = styled(info)` + width: 16px; + height: 16px; +`; + +const PageContainer = styled.div` + display: flex; + flex-direction: column; + align-items: center; + padding: 24px 10px 32px 10px; + gap: 24px; +`; + +const StakedAmountContainer = styled.div` + display: flex; + flex-direction: row; + align-items: center; + padding: 0px 24px 0px 24px; + gap: 15px; + + ${breakpoints.phoneAndAbove(` + width: 450px; + `)} +`; + +const StakedTempleIcon = styled(stakeTemple)``; + +const StakedAmountText = styled.div` + display: flex; + flex-direction: column; +`; + +const StakedAmount = styled.h3` + font-size: 28px; + line-height: 52px; + color: ${({ theme }) => theme.palette.brandLight}; + margin: 0px; +`; + +const StakedText = styled.div` + font-size: 16px; + line-height: 19px; + color: ${({ theme }) => theme.palette.brand}; +`; + +const BodyContainer = styled.div` + display: flex; + flex-direction: column; + border-top: 2px solid ${({ theme }) => theme.palette.brand}; + border-bottom: 2px solid ${({ theme }) => theme.palette.brand}; + background: ${({ theme }) => theme.palette.gradients.grey}; + padding: 24px; + gap: 8px; + + ${breakpoints.phoneAndAbove(` + width: 450px; + `)} +`; + +const TitleUnstake = styled.div` + font-size: 16px; + line-height: 19px; + color: ${({ theme }) => theme.palette.brandLight}; +`; + +const ButtonContainer = styled.div` + display: flex; + flex-direction: column; + gap: 16px; + align-items: center; +`; + +const Message = styled.div` + display: flex; + flex-direction: row; + justify-content: center; + align-items: center; + width: 436px; + gap: 10px; + color: ${({ theme }) => theme.palette.brandLight}; + font-size: 12px; + line-height: 18px; + font-weight: 700; +`; + +const LoaderContainer = styled.div` + height: 43px; // Match the height of the TradeButton + display: flex; + align-items: center; + justify-content: center; +`; diff --git a/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/Earn/StakeTemple/index.tsx b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/Earn/StakeTemple/index.tsx new file mode 100644 index 000000000..1c1446438 --- /dev/null +++ b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/Earn/StakeTemple/index.tsx @@ -0,0 +1,407 @@ +import { useConnectWallet } from '@web3-onboard/react'; +import { useEffect, useState } from 'react'; +import styled from 'styled-components'; +import { Outlet, useLocation, useNavigate } from 'react-router-dom'; +import { useWallet } from 'providers/WalletProvider'; +import linkSvg from 'assets/icons/link.svg?react'; +import { EarnTopNav } from 'components/Pages/Core/DappPages/SpiceBazaar/Earn/TopNav'; +import { Button } from 'components/Button/Button'; +import wallet from 'assets/icons/wallet.svg?react'; +import { useSpiceBazaar } from 'providers/SpiceBazaarProvider'; +import Loader from 'components/Loader/Loader'; +import { formatNumberWithCommas } from 'utils/formatter'; +import * as breakpoints from 'styles/breakpoints'; +import { useMediaQuery } from 'react-responsive'; +import { queryPhone } from 'styles/breakpoints'; + +type ItemProps = { + isActive: boolean; +}; + +enum StakeTempleLocPaths { + Stake = '/dapp/spice/earn/staketemple/stake', + Unstake = '/dapp/spice/earn/staketemple/unstake', + Claim = '/dapp/spice/earn/staketemple/claim', +} + +const items = [ + { + label: 'STAKE', + linkTo: StakeTempleLocPaths.Stake, + }, + { + label: 'UNSTAKE', + linkTo: StakeTempleLocPaths.Unstake, + }, + { + label: 'CLAIM TGLD', + linkTo: StakeTempleLocPaths.Claim, + }, +]; + +export const StakeTemple = () => { + const isPhoneOrAbove = useMediaQuery({ + query: queryPhone, + }); + + const [activeTab, setActiveTab] = useState( + StakeTempleLocPaths.Stake + ); + const navigate = useNavigate(); + const loc = useLocation(); + + const [{}, connect] = useConnectWallet(); + const { wallet } = useWallet(); + + const { stakePageMetrics } = useSpiceBazaar(); + const { + data: stakePageMetricsData, + loading: stakePageMetricsLoading, + fetch: fetchStakePageMetrics, + } = stakePageMetrics; + + // Only fetch on mount and wallet changes + useEffect(() => { + if (wallet) { + fetchStakePageMetrics(); + } + }, [wallet, fetchStakePageMetrics]); + + useEffect(() => { + if (loc.pathname) { + setActiveTab(loc.pathname as StakeTempleLocPaths); + } + }, [loc.pathname]); + + const handleTabClick = (linkTo: string) => { + setActiveTab(linkTo as StakeTempleLocPaths); + navigate(linkTo.toLowerCase()); + }; + + return ( + + + + +
+ + Stake TEMPLE + + + + Staking TEMPLE tokens boosts your TGLD {!isPhoneOrAbove &&
} + rewards over time—25% after 4 weeks, {!isPhoneOrAbove &&
} + 50% after 6 weeks, and full rewards after{' '} + {!isPhoneOrAbove &&
} + 12 weeks. Each stake is independent, so{' '} + {!isPhoneOrAbove &&
} + reward rates vary based on individual {!isPhoneOrAbove &&
} + vesting schedules. +
+
+ + + + {stakePageMetricsLoading ? ( + + ) : ( + <> + + $ + {formatNumberWithCommas( + stakePageMetricsData.stakedTemple + )} + + Total Staked (TEMPLE) + + )} + + + {stakePageMetricsLoading ? ( + + ) : ( + <> + + {formatNumberWithCommas( + stakePageMetricsData.totalEpochRewards + )} +  TGLD + + Total EPOCH Rewards + + )} + + + + + {stakePageMetricsLoading ? ( + + ) : ( + <> + + {formatNumberWithCommas(stakePageMetricsData.yourStake)} +  TEMPLE + + Your Stake + + )} + + + {stakePageMetricsLoading ? ( + + ) : ( + <> + + {formatNumberWithCommas(stakePageMetricsData.yourRewards)} +  TGLD + + Claimable Rewards + + )} + + + +
+ + + + {wallet ? ( + + ) : ( + { + connect(); + }} + style={{ margin: 'auto', whiteSpace: 'nowrap' }} + > + + Connect Wallet + + )} + + +
+
+ ); +}; + +const PageContainer = styled.div` + margin-top: -20px; +`; + +const BodyContainer = styled.div` + display: flex; + flex-direction: column; + gap: 20px; + padding: 20px 0px 40px 0px; + + ${breakpoints.phoneAndAbove(` + gap: 60px; + padding: 60px 0px 0px 0px; + `)} +`; + +const ContainerTop = styled.div` + display: flex; + flex-direction: column; + gap: 40px; +`; + +const Header = styled.div` + display: flex; + flex-direction: column; + gap: 20px; +`; + +const LinkIcon = styled(linkSvg)` + fill: ${({ theme }) => theme.palette.brand}; + cursor: pointer; +`; + +const HeaderTitle = styled.h2` + display: flex; + align-items: center; + text-align: center; + color: ${({ theme }) => theme.palette.brandLight}; + gap: 15px; + margin: 0px; + font-size: 28px; + line-height: 52px; + + ${breakpoints.phoneAndAbove(` + font-size: 36px; + line-height: 67px; +`)} +`; + +const HeaderText = styled.div` + font-weight: 700; + color: ${({ theme }) => theme.palette.brand}; + font-size: 16px; + line-height: 19px; + + ${breakpoints.phoneAndAbove(` + font-size: 18px; + line-height: 22px; +`)} +`; + +const StatusContainer = styled.div` + display: flex; + flex-direction: column; + gap: 20px; +`; + +const BoxContainer = styled.div` + display: flex; + flex-direction: column; + gap: 20px; + + ${breakpoints.phoneAndAbove(` + flex-direction: row; + `)} +`; + +const Box = styled.div` + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + flex-grow: 1; + flex-basis: 0; + min-height: 136px; + gap: 12px; + padding: 10px; + border: 1px solid ${({ theme }) => theme.palette.brand}; + border-radius: 10px; + background: linear-gradient( + to bottom, + #0b0a0a, + #1d1a1a + ); //it is lighter than the grey from theme.palette +`; + +const Title = styled.div` + font-size: 16px; + line-height: 19px; + color: ${({ theme }) => theme.palette.brand}; +`; + +const Sum = styled.div` + font-size: 24px; + font-weight: 700; + line-height: 29px; + color: ${({ theme }) => theme.palette.brandLight}; +`; + +const ContainerBottom = styled.div` + border: 1px solid ${({ theme }) => theme.palette.brand}; + border-radius: 10px; + gap: 60px; +`; + +const Nav = styled.nav` + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-around; + border-bottom: 1px solid ${({ theme }) => theme.palette.brand}; +`; + +const Item = styled.button` + white-space: nowrap; + overflow: hidden; + flex-grow: 1; + flex-basis: 0; + cursor: pointer; + background: ${(props) => + props.isActive + ? ({ theme }) => theme.palette.gradients.greyVertical + : 'none'}; + border: none; + + &:first-child { + border-right: none; + border-radius: 9px 0 0 0; + padding: 15px 0px 15px 0px; + } + + &:last-child { + border-left: none; + border-radius: 0 9px 0 0; + padding: 15px 0px 15px 0px; + } + + &:not(:first-child):not(:last-child) { + border-left: 1px solid ${({ theme }) => theme.palette.brand}; + border-right: 1px solid ${({ theme }) => theme.palette.brand}; + padding: 15px 0px 15px 0px; + } + + ${breakpoints.phoneAndAbove(` + padding: 15px 40px 15px 40px; + `)} +`; + +const ItemText = styled.p` + margin: 0px; + color: ${({ theme }) => theme.palette.brandLight}; + // text-align: center; + font-size: 14px; + line-height: 24px; + + ${breakpoints.phoneAndAbove(` + font-size: 16px; + line-height: 19px; +`)} +`; + +const OutletContainer = styled.div<{ wallet?: string }>` + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + height: ${({ wallet }) => (wallet === undefined ? '166px' : 'auto')}; +`; + +const WalletIcon = styled(wallet)` + min-width: 24px; + min-height: 24px; +`; + +const TradeButton = styled(Button)` + padding: 12px 20px 12px 20px; + width: ${(props) => props.width || 'min-content'}; + height: min-content; + background: ${({ theme }) => theme.palette.gradients.dark}; + border: 1px solid ${({ theme }) => theme.palette.brandDark}; + box-shadow: 0px 0px 20px rgba(222, 92, 6, 0.4); + border-radius: 10px; + font-size: 16px; + line-height: 19px; + text-transform: uppercase; + color: ${({ theme }) => theme.palette.brandLight}; + + /* Flex settings for centering button content */ + display: flex; + align-items: center; + justify-content: center; + + /* Flex settings for the span inside the button */ + & > span { + display: flex; + align-items: center; + justify-content: center; + gap: 12px; + } +`; diff --git a/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/Earn/TopNav.tsx b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/Earn/TopNav.tsx new file mode 100644 index 000000000..35a08eb4f --- /dev/null +++ b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/Earn/TopNav.tsx @@ -0,0 +1,82 @@ +import { useEffect, useState } from 'react'; +import { useLocation } from 'react-router-dom'; +import { TopNav } from 'components/Pages/Core/DappPages/SpiceBazaar/components/TopNav'; +import { MobileTopNavSecondary } from 'components/Pages/Core/DappPages/SpiceBazaar/components/MobileTopNavSecondary'; +import { useMediaQuery } from 'react-responsive'; +import { queryPhone } from 'styles/breakpoints'; + +enum EarnLocPaths { + Stake = '/dapp/spice/earn/staketemple/stake', + Auctions = '/dapp/spice/earn/auctions', +} + +const EarnConfig = [ + { + label: 'Stake TEMPLE', + linkTo: EarnLocPaths.Stake, + }, + { + label: 'USDS Gold Auctions', + linkTo: EarnLocPaths.Auctions, + }, +]; + +export const EarnTopNav = () => { + const isPhoneOrAbove = useMediaQuery({ + query: queryPhone, + }); + const loc = useLocation(); + const [menuNavItems, setMenuNavItems] = useState( + EarnConfig.map((item) => ({ + label: item.label, + path: item.linkTo, + selected: item.linkTo === loc.pathname, + })) + ); + + useEffect(() => { + setMenuNavItems((prevMenuNavItems) => + prevMenuNavItems.map((menuItem) => ({ + ...menuItem, + selected: + menuItem.path === loc.pathname || + (menuItem.path === '/dapp/spice/earn/staketemple/stake' && + loc.pathname.startsWith('/dapp/spice/earn/staketemple')), + })) + ); + }, [loc.pathname]); + + const onSelectMenuNavItems = (selectedMenuItem: { label: string }) => { + setMenuNavItems( + menuNavItems.map((item) => { + if (item.label === selectedMenuItem.label) { + return { ...item, selected: true }; + } + return { ...item, selected: false }; + }) + ); + }; + + return ( + <> + {isPhoneOrAbove ? ( + + ) : ( + + )} + + ); +}; diff --git a/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/Earn/Unstake.tsx b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/Earn/Unstake.tsx new file mode 100644 index 000000000..d4e3dc10c --- /dev/null +++ b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/Earn/Unstake.tsx @@ -0,0 +1,7 @@ +export const Unstake = () => { + return ( + <> +

Unstake

+ + ); +}; diff --git a/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/Earn/index.tsx b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/Earn/index.tsx new file mode 100644 index 000000000..bf7a74850 --- /dev/null +++ b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/Earn/index.tsx @@ -0,0 +1,435 @@ +import styled from 'styled-components'; +import { useNavigate } from 'react-router-dom'; +import linkSvg from 'assets/icons/link.svg?react'; +import stakeTemple from 'assets/images/stake-temple.svg'; +import goldAuctions from 'assets/images/gold-auctions.svg'; +import liveGoldAuction from 'assets/icons/live-gold-auction.svg?react'; +import CircleLeft from 'assets/images/earn-circle-left.svg?react'; +import CircleLeftMobile from 'assets/images/earn-circle-left-mobile.svg?react'; +import CircleRight from 'assets/images/earn-circle-right.svg?react'; +import { Button } from 'components/Button/Button'; +import * as breakpoints from 'styles/breakpoints'; +import { useMediaQuery } from 'react-responsive'; +import { queryPhone } from 'styles/breakpoints'; + +export const Earn = () => { + const navigate = useNavigate(); + const isPhoneOrAbove = useMediaQuery({ + query: queryPhone, + }); + + return ( + +
+ + Earn Temple Gold + + + + Temple Gold (TGLD) is the native currency of the Spice Bazaar.{' '} + {!isPhoneOrAbove &&
} + TGLD can be used to enter bids on certain tokens from the Treasury{' '} + {!isPhoneOrAbove &&
} + offered through periodic Auctions called Spice Auctions.{' '} + {!isPhoneOrAbove &&
} +
+ + Temple Gold is accessible to everyone. If you do not{' '} + {!isPhoneOrAbove &&
} + hold TEMPLE, You may directly enter USDS bids for{' '} + {!isPhoneOrAbove &&
} + TGLD through bi-weekly Gold Auctions. If you are a{' '} + {!isPhoneOrAbove &&
} + TEMPLE holder, simply stake TEMPLE for TGLD{' '} + {!isPhoneOrAbove &&
} + rewards every Epoch and use them in Spice Auctions.{' '} + {!isPhoneOrAbove &&
} +
+
+ + + + Stake TEMPLE for TGLD + {isPhoneOrAbove ? ( + + ) : ( + + )} + + + + + Temple Gold (TGLD) rewards will be distributed every Epoch + to staked TEMPLE tokens. + + + The TGLD reward rate for each Epoch depends on the number of + staked TEMPLE and the amount of TGLD in circulation. + + + Earned TGLD rewards can be used to bid in Spice Auctions. + + + Once staked, there will be a Cooldown before you can unstake + TEMPLE. Learn More + + + + navigate('staketemple/stake')} + style={{ whiteSpace: 'nowrap', margin: 0 }} + > + Stake Temple for TGLD + + + + + + + {isPhoneOrAbove && ( + + )} + + + + AN AUCTION IS LIVE + + {isPhoneOrAbove ? ( + + ) : ( + + )} + + + + Bid USDS for TGLD {!isPhoneOrAbove &&
} + (Gold Auctions) +
+ + In a Temple Gold Auction, you may bid{' '} + {!isPhoneOrAbove &&
} USDS to earn TGLD which can be + used to redeem volatile tokens in the Spice Auction. The more + USDS you bid, the more TGLD you will earn when the Temple Gold + Auction expires. +
+ + There is no minimum reserve price and the Auction unit price + for 1 TGLD will not be known until the last Bid has been + submitted.{' '} + + Once submitted, USDS bids cannot be withdrawn. + {' '} + Learn More + +
+ navigate('auctions')} + > + Bid USDS For TGLD + +
+ {!isPhoneOrAbove && ( + + )} +
+
+
+
+ ); +}; + +const PageContainer = styled.div` + margin-top: -20px; + display: flex; + flex-direction: column; + gap: 80px; + + ${breakpoints.phoneAndAbove(` + gap: 60px; + `)} +`; + +const Header = styled.div` + display: flex; + flex-direction: column; + gap: 20px; +`; + +const HeaderTitle = styled.h2` + display: flex; + align-items: center; + text-align: center; + color: ${({ theme }) => theme.palette.brandLight}; + gap: 15px; + margin: 0px; + font-size: 28px; + line-height: 52px; + + ${breakpoints.phoneAndAbove(` + font-size: 36px; + line-height: 67px; + `)} +`; + +const LinkIcon = styled(linkSvg)` + fill: ${({ theme }) => theme.palette.brand}; + cursor: pointer; +`; + +const HeaderText = styled.div` + font-size: 16px; + line-height: 19px; + font-weight: 700; + color: ${({ theme }) => theme.palette.brand}; + + ${breakpoints.phoneAndAbove(` + font-size: 18px; + line-height: 22px; + `)} +`; + +const ContentContainer = styled.div` + display: flex; + flex-direction: column; + gap: 30px; +`; + +const StakeContainer = styled.div` + display: flex; + flex-direction: column; + border-radius: 10px; + border: 1px solid ${({ theme }) => theme.palette.brand}; + gap: 60px; + padding: 32px; + align-items: center; + + ${breakpoints.phoneAndAbove(` + flex-direction: row; + `)} +`; + +const StakeContent = styled.div` + display: flex; + flex-direction: column; + gap: 20px; + position: relative; +`; + +const StakeContentImage = styled(CircleLeft)` + position: absolute; + top: 46px; + left: 0; + z-index: 0; +`; + +const StakeContentImageMobile = styled(CircleLeftMobile)` + position: absolute; + top: 60px; + left: 0; + z-index: 0; +`; + +const StakeContentText = styled.div` + z-index: 1; + display: flex; + flex-direction: column; + align-items: center; + gap: 40px; + + ${breakpoints.phoneAndAbove(` + align-items: flex-start; + `)} +`; + +const StakeBody = styled.div` + display: flex; + flex-direction: column; +`; + +const StakeTitle = styled.h3` + font-size: 20px; + line-height: 37px; + color: ${({ theme }) => theme.palette.brandLight}; + margin: 0px; + text-align: center; + + ${breakpoints.phoneAndAbove(` + text-align: left; + font-size: 24px; + line-height: 44px; + `)} +`; + +const StakeText = styled.ul` + list-style-type: disc; + padding-left: 20px; + margin: 0px; + + & li::marker { + color: ${({ theme }) => theme.palette.brand}; + } +`; + +const StakeListItem = styled.li` + font-size: 16px; + line-height: 24px; + color: ${({ theme }) => theme.palette.brand}; + margin-bottom: 8px; + &:last-child { + margin-bottom: 0; + } + .learn-more { + font-weight: 700; + text-decoration: underline; + font-size: 13px; + line-height: 20px; + } + + ${breakpoints.phoneAndAbove(` + line-height: 20px; + `)} +`; + +const StakeImg = styled.img` + width: 275px; + height: 245px; + + ${breakpoints.phoneAndAbove(` + width: 390px; + height: 345px; + `)} +`; + +const AuctionsContainer = styled.div` + display: flex; + flex-direction: row; + border-radius: 10px; + border: 1px solid ${({ theme }) => theme.palette.brand}; + padding: 32px; +`; + +const AuctionsContent = styled.div` + display: flex; + flex-direction: column; + align-items: center; + position: relative; + gap: 40px; + + ${breakpoints.phoneAndAbove(` + gap: 20px; +`)} +`; + +const AuctionContentImage = styled(CircleRight)` + position: absolute; + top: 40px; + right: 0px; + z-index: 0; +`; + +const AuctionContentImageMobile = styled(CircleLeftMobile)` + position: absolute; + top: 60px; + left: 0; + z-index: 0; +`; + +const AuctionContentText = styled.div` + z-index: 1; + display: flex; + flex-direction: column; + display: flex; + flex-direction: column; + align-items: center; + gap: 40px; + + ${breakpoints.phoneAndAbove(` + align-items: flex-start; + `)} +`; + +const AuctionBody = styled.div` + display: flex; + flex-direction: column; + gap: 20px; +`; + +const AuctionsStatus = styled.div` + display: flex; + width: 170px; + flex-direction: row; + align-self: center; + justify-content: space-between; + font-size: 12px; + line-height: 18px; + font-weight: 700; + color: ${({ theme }) => theme.palette.brandLight}; + padding: 8px; + border: 1px solid ${({ theme }) => theme.palette.brandLight}; + border-radius: 10px; + + ${breakpoints.phoneAndAbove(` + align-self: flex-end; +`)} +`; + +const AuctionsImg = styled.img` + width: 271px; + height: 310px; +`; + +const LiveAuctionIcon = styled(liveGoldAuction)` + width: '17px'; + height: '17px'; +`; + +const AuctionsTitle = styled.h3` + font-size: 20px; + line-height: 37px; + color: ${({ theme }) => theme.palette.brandLight}; + margin: 0px; + text-align: center; + + ${breakpoints.phoneAndAbove(` + text-align: left; + font-size: 24px; + line-height: 44px; + `)} +`; + +const AuctionsText = styled.div` + font-size: 16px; + line-height: 24px; + color: ${({ theme }) => theme.palette.brand}; + text-align: center; + .submission { + font-weight: 700; + } + .learn-more { + font-weight: 700; + text-decoration: underline; + font-size: 13px; + line-height: 20px; + } + + ${breakpoints.phoneAndAbove(` + line-height: 20px; + text-align: left; + `)} +`; + +const TradeButton = styled(Button)` + padding: 10px 20px 10px 20px; + width: ${(props) => props.width || 'min-content'}; + height: min-content; + background: ${({ theme }) => theme.palette.gradients.dark}; + border: 1px solid ${({ theme }) => theme.palette.brandDark}; + box-shadow: 0px 0px 20px rgba(222, 92, 6, 0.4); + border-radius: 10px; + font-weight: 700; + font-size: 12px; + line-height: 18px; + text-transform: uppercase; + color: ${({ theme }) => theme.palette.brandLight}; +`; diff --git a/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/MyActivity/BidsForSpice/BidTable/DataTable.tsx b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/MyActivity/BidsForSpice/BidTable/DataTable.tsx new file mode 100644 index 000000000..e3dbf8b11 --- /dev/null +++ b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/MyActivity/BidsForSpice/BidTable/DataTable.tsx @@ -0,0 +1,249 @@ +import React, { useEffect, useState } from 'react'; +import { useNavigate } from 'react-router-dom'; +import styled from 'styled-components'; +import { Transaction } from './Table'; +import { Button } from 'components/Button/Button'; +import checkbox from 'assets/icons/checkbox-square.svg?react'; +import { Popover } from 'components/Pages/Core/DappPages/SpiceBazaar/components/Popover'; +import { BidTgld } from '../BidTgld'; + +enum TableHeaders { + EpochId = 'EPOCH\nID', + AuctionEndDateTime = 'Auction End\nDate/Time', + BidAmount = 'Bid Amount', + ClaimableTokens = 'Claimable\nTOKENS', + Unit = 'Unit', + UnitPrice = 'Unit Price\n(TGLD)', + Claim = 'Claim', + Increase = '', +} + +type TableProps = { + transactions: Transaction[]; + loading: boolean; + refetch?: () => void; + dataRefetching?: boolean; +}; + +export const DataTable: React.FC = ({ + transactions, + loading, + refetch, + dataRefetching, +}) => { + const [modal, setModal] = useState<'closed' | 'bidTgld'>('closed'); + + const tableHeaders = [ + { name: TableHeaders.EpochId }, + { name: TableHeaders.AuctionEndDateTime }, + { name: TableHeaders.BidAmount }, + { name: TableHeaders.ClaimableTokens }, + { name: TableHeaders.Unit }, + { name: TableHeaders.UnitPrice }, + { name: TableHeaders.Claim }, + { name: TableHeaders.Increase }, + ]; + + const [filter, setFilter] = useState('Last 5 Shown'); + const [filteredTransactions, setFilteredTransactions] = + useState(transactions); + + const navigate = useNavigate(); + + const filterOptions = ['Last 5 Shown', 'Show All']; + + // State to track the selected (checked) checkbox + const [selectedClaim, setSelectedClaim] = useState(null); + + // Function to handle checkbox change + const handleCheckboxChange = (epochId: number) => { + setSelectedClaim(epochId === selectedClaim ? null : epochId); // Toggle between checked and unchecked + }; + + return ( + <> + +
+ BID for Spice History + + {filterOptions.map((option) => ( + setFilter(option)} + selected={filter === option} + > + {option} + + ))} + +
+ + + + {tableHeaders.map((h) => ( + + {h.name === TableHeaders.Claim ? ( + + {h.name} + + ) : ( + h.name + )} + + ))} + + + + {loading ? ( + + Loading... + + ) : transactions.length === 0 ? ( + + No data available + + ) : ( + transactions.map((transaction) => ( + + {transaction.epochId} + {transaction.auctionEndDateTime} + {transaction.bidAmount} TLGD + {transaction.claimableTokens} + {transaction.unit} + {transaction.unitPrice} + + handleCheckboxChange(transaction.epochId)} + /> + + {transaction.claim} + + setModal('bidTgld')} + style={{ whiteSpace: 'nowrap', margin: 0 }} + > + Increase Bid + + + + )) + )} + + +
+ setModal('closed')} + closeOnClickOutside + showCloseButton + > + + + + ); +}; + +const PageContainer = styled.div` + display: flex; + flex-direction: column; + padding: 40px 0px 24px 0px; + gap: 20px; +`; + +const Header = styled.div` + display: flex; + justify-content: space-between; + align-items: center; +`; + +const Title = styled.h3` + color: ${({ theme }) => theme.palette.brandLight}; + font-size: 24px; + line-height: 44px; + font-weight: 400; + margin: 0; +`; + +const FilterContainer = styled.div` + display: flex; + flex-direction: row; + gap: 20px; +`; + +const FilterButton = styled.button<{ selected: boolean }>` + background: none; + color: ${({ selected, theme }) => + selected ? theme.palette.brandLight : theme.palette.brand}; + border: none; + cursor: pointer; +`; + +const TableData = styled.table` + border-spacing: 10px + width: 100%; + border-collapse: collapse; +`; + +const HeaderRow = styled.tr` + border-bottom: 1px solid ${({ theme }) => theme.palette.brand}; +`; + +const TableHeader = styled.th<{ name: string }>` + font-size: 13px; + font-weight: 700; + line-height: 20px; + text-align: left; + padding-top: 5px; + color: ${({ theme }) => theme.palette.brand}; + white-space: ${({ name }) => + name === TableHeaders.EpochId || + name === TableHeaders.AuctionEndDateTime || + name === TableHeaders.ClaimableTokens || + name === TableHeaders.UnitPrice + ? 'pre-wrap' + : 'nowrap'}; +`; + +const DataRow = styled.tr` + padding-left: 16px; +`; + +const DataCell = styled.td` + font-size: 13px; + font-weight: 700; + line-height: 20px; + text-align: left; + padding: 20px 0px 20px 0px; + border-bottom: 1px solid ${({ theme }) => theme.palette.brand}; + color: ${({ theme }) => theme.palette.brandLight}; + + &:first-child { + padding-left: 16px; + } +`; + +const TradeButton = styled(Button)` + padding: 10px 20px 10px 20px; + width: ${(props) => props.width || 'min-content'}; + height: min-content; + background: ${({ theme }) => theme.palette.gradients.dark}; + border: 1px solid ${({ theme }) => theme.palette.brandDark}; //if button is not active this is not used + box-shadow: 0px 0px 20px rgba(222, 92, 6, 0.4); //if button is not active this is not used + border-radius: 10px; + font-weight: 700; + font-size: 12px; + line-height: 18px; + text-transform: uppercase; + color: ${({ theme }) => theme.palette.brandLight}; +`; + +const CheckBox = styled(checkbox)``; + +const ClaimHeader = styled.div` + display: flex; + flex-direction: row; + align-items: center; + gap: 12px; +`; diff --git a/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/MyActivity/BidsForSpice/BidTable/Table.tsx b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/MyActivity/BidsForSpice/BidTable/Table.tsx new file mode 100644 index 000000000..3fb5c53fe --- /dev/null +++ b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/MyActivity/BidsForSpice/BidTable/Table.tsx @@ -0,0 +1,79 @@ +import styled from 'styled-components'; +import { DataTable } from './DataTable'; + +export type Transaction = { + epochId: number; + auctionEndDateTime: string; + bidAmount: number; + claimableTokens: number | '-'; + unit: 'WSBI' | 'ENA'; + unitPrice: number | '-'; + claim: string; + increase: string; +}; + +const data: Transaction[] = [ + { + epochId: 1, + auctionEndDateTime: '30.09.2024', + bidAmount: 100, + claimableTokens: '-', + unit: 'WSBI', + unitPrice: '-', + claim: '', + increase: '', + }, + { + epochId: 2, + auctionEndDateTime: '14.10.2024', + bidAmount: 100, + claimableTokens: 100000, + unit: 'WSBI', + unitPrice: 231, + claim: '', + increase: '', + }, + { + epochId: 3, + auctionEndDateTime: '28.10.2024', + bidAmount: 100, + claimableTokens: 200000, + unit: 'ENA', + unitPrice: 99, + claim: '', + increase: '', + }, + { + epochId: 4, + auctionEndDateTime: '28.10.2024', + bidAmount: 100, + claimableTokens: 150000, + unit: 'WSBI', + unitPrice: 78, + claim: '', + increase: '', + }, + { + epochId: 5, + auctionEndDateTime: '-', + bidAmount: 100, + claimableTokens: '-', + unit: 'ENA', + unitPrice: '-', + claim: '', + increase: '', + }, +]; + +export const BidHistory = () => { + return ( + + + + ); +}; + +const AuctionsHistoryContainer = styled.div` + display: flex; + flex-direction: column; +`; diff --git a/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/MyActivity/BidsForSpice/BidTgld.tsx b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/MyActivity/BidsForSpice/BidTgld.tsx new file mode 100644 index 000000000..298ef0cf3 --- /dev/null +++ b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/MyActivity/BidsForSpice/BidTgld.tsx @@ -0,0 +1,258 @@ +import styled from 'styled-components'; +import { TradeButton } from '../BidsForTGLD/BidUSDS'; +import templeGold from 'assets/icons/temple-gold.svg?react'; +import { Input } from 'components/Pages/Core/DappPages/SpiceBazaar/components/Input'; +import * as breakpoints from 'styles/breakpoints'; +import { useMediaQuery } from 'react-responsive'; +import { queryPhone } from 'styles/breakpoints'; + +export const BidTgld = () => { + const isPhoneOrAbove = useMediaQuery({ + query: queryPhone, + }); + + return ( + + + BID TGLD + + + + + + 70.53 TGLD + AVAILABLE + + + + + Current Bid Amount + + + + New Bid Amount + + + + + If the current bid price holds, you will {!isPhoneOrAbove &&
} + receive X {isPhoneOrAbove &&
} + TOKEN at 5.32 TGLD per TOKEN +
+ + +

i

+
+ + + Current TGLD price may rise before the end of the auction. + + + Once submitted, the bid cannot be withdrawn or cancelled. + + +
+ console.log('clicked')} + > + SUBMIT NEW BID + +
+
+ ); +}; + +const ContentContainer = styled.div` + display: flex; + flex-direction: column; + align-items: center; + flex-grow: 1; + gap: 32px; + max-width: 393px; + padding: 0px 16px 0px 16px; + + ${breakpoints.phoneAndAbove(` + max-width: 100%; + padding: 0px 0px 0px 0px; + `)} +`; + +const TitleContainer = styled.div` + display: flex; + flex-direction: row; + height: 77px; + width: 100%; + justify-content: center; + align-items: center; + background: ${({ theme }) => theme.palette.gradients.grey}; + + ${breakpoints.phoneAndAbove(` + width: 624px; + `)} +`; + +const Title = styled.h3` + diplay: flex; + color: ${({ theme }) => theme.palette.brandLight}; + font-size: 28px; + line-height: 52px; + text-align: center; + margin: 0px; +`; + +const Container = styled.div` + display: flex; + flex-direction: column; + width: 450px; + flex-grow: 1; + padding: 8px 0px 8px 0px; + gap: 24px; + width: 360px; + + ${breakpoints.phoneAndAbove(` + width: 450px; + `)} +`; + +const AvailableAmountContainer = styled.div` + display: flex; + flex-direction: row; + align-items: center; + padding: 0px 24px 0px 24px; + gap: 10px; + + ${breakpoints.phoneAndAbove(` + width: 450px; + `)} +`; + +const TempleGoldIcon = styled(templeGold)` + width: 42px; + height: 42px; +`; + +const AvailableAmountText = styled.div` + display: flex; + flex-direction: column; +`; + +const AvailableAmount = styled.h3` + font-size: 28px; + line-height: 52px; + color: ${({ theme }) => theme.palette.gold}; + margin: 0px; +`; + +const AvailableText = styled.div` + font-size: 16px; + line-height: 19px; + color: ${({ theme }) => theme.palette.brand}; + margin: 0px; +`; + +const BidContainer = styled.div` + display: flex; + flex-direction: column; + width: 100%; + border-top: 2px solid ${({ theme }) => theme.palette.brand}; + border-bottom: 2px solid ${({ theme }) => theme.palette.brand}; + background: ${({ theme }) => theme.palette.gradients.grey}; + padding: 24px; + gap: 32px; +`; + +const BidContent = styled.div` + display: flex; + flex-direction: column; + gap: 8px; +`; + +const TitleBid = styled.div` + font-size: 16px; + line-height: 19px; + color: ${({ theme }) => theme.palette.brandLight}; +`; + +const ReceiveAmountContainer = styled.p` + display: flex; + align-items: center; + width: 100%; + padding: 0px 24px 0px 24px; + font-size: 16px; + line-height: 19px; + margin: 0px; + color: ${({ theme }) => theme.palette.brandLight}; +`; + +const InfoCircle = styled.div` + display: flex; + margin: 0.25rem; + padding: 0.5rem; + align-items: center; + justify-content: center; + width: 1.25rem; + height: 1.25rem; + font-size: 1rem; + font-weight: 600; + border-radius: 50%; + border: 1px solid ${({ theme }) => theme.palette.brand}; +`; + +const MessageText = styled.div` + display: flex; + flex-direction: column; + gap: 8px; +`; + +const Text = styled.p` + margin: 0px; + color: ${({ theme }) => theme.palette.brand}; + font-size: 12px; + line-height: 18px; + font-weight: 700; +`; + +const WarningMessage = styled.div` + display: flex; + flex-direction: row; + align-items: center; + width: 100%; + border: 2px solid transparent; + border-image-source: linear-gradient( + 180deg, + rgba(149, 97, 63, 0.1) 0%, + rgba(255, 255, 255, 0) 100% + ); + border-image-slice: 1; + border-radius: 6px; + padding: 10px 0px 10px 10px; + gap: 10px; + background: #24272c; + color: ${({ theme }) => theme.palette.brand}; + font-size: 12px; + line-height: 18px; + font-weight: 700; +`; diff --git a/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/MyActivity/BidsForSpice/Tables/BidTable.tsx b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/MyActivity/BidsForSpice/Tables/BidTable.tsx new file mode 100644 index 000000000..81204d647 --- /dev/null +++ b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/MyActivity/BidsForSpice/Tables/BidTable.tsx @@ -0,0 +1,97 @@ +import styled from 'styled-components'; +import { DataTable } from '../../DataTables/BidDataTable'; +import type { Transaction } from '../../DataTables/BidDataTable'; + +enum TableHeaders { + EpochId = 'EPOCH\nID', + AuctionEndDateTime = 'Auction End\nDate/Time', + BidAmount = 'Bid Amount', + ClaimableTokens = 'Claimable\nTOKENS', + Unit = 'Unit', + UnitPrice = 'Unit Price\n(TGLD)', + Claim = 'Claim', + Increase = '', +} + +const data: Transaction[] = [ + { + epochId: 1, + auctionEndDateTime: '30.09.2024', + bidAmount: 100, + claimableTokens: '-', + unit: 'WSBI', + unitPrice: '-', + claim: '', + increase: '', + }, + { + epochId: 2, + auctionEndDateTime: '14.10.2024', + bidAmount: 100, + claimableTokens: 100000, + unit: 'WSBI', + unitPrice: 231, + claim: '', + increase: '', + }, + { + epochId: 3, + auctionEndDateTime: '28.10.2024', + bidAmount: 100, + claimableTokens: 200000, + unit: 'ENA', + unitPrice: 99, + claim: '', + increase: '', + }, + { + epochId: 4, + auctionEndDateTime: '28.10.2024', + bidAmount: 100, + claimableTokens: 150000, + unit: 'WSBI', + unitPrice: 78, + claim: '', + increase: '', + }, + { + epochId: 5, + auctionEndDateTime: '-', + bidAmount: 100, + claimableTokens: '-', + unit: 'ENA', + unitPrice: '-', + claim: '', + increase: '', + }, +]; + +const tableHeaders = [ + { name: TableHeaders.EpochId }, + { name: TableHeaders.AuctionEndDateTime }, + { name: TableHeaders.BidAmount }, + { name: TableHeaders.ClaimableTokens }, + { name: TableHeaders.Unit }, + { name: TableHeaders.UnitPrice }, + { name: TableHeaders.Claim }, + { name: TableHeaders.Increase }, +]; + +export const BidHistory = () => { + return ( + + + + ); +}; + +const AuctionsHistoryContainer = styled.div` + display: flex; + flex-direction: column; +`; diff --git a/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/MyActivity/BidsForSpice/Tables/TransactionsTable.tsx b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/MyActivity/BidsForSpice/Tables/TransactionsTable.tsx new file mode 100644 index 000000000..835828199 --- /dev/null +++ b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/MyActivity/BidsForSpice/Tables/TransactionsTable.tsx @@ -0,0 +1,70 @@ +import styled from 'styled-components'; +import { DataTable } from '../../DataTables/TransactionsDataTable'; +import type { Transaction } from '../../DataTables/TransactionsDataTable'; + +enum TableHeaders { + Epoch = 'EPOCH', + Type = 'Type', + TransactionLink = 'Transaction Link', +} + +const data: Transaction[] = [ + { + epoch: '12/11/2024', + type: 'Bid', + transactionLink: '0x192c453a2dbb0b...0e74a056', + }, + { + epoch: '12/11/2024', + type: 'Claim', + transactionLink: '0x342c4535430979a...0b6b8b25', + }, + { + epoch: '12/11/2024', + type: 'Bid', + transactionLink: '0x192c453a2dbb0b...0e74a056', + }, + { + epoch: '12/11/2024', + type: 'Bid', + transactionLink: '0x192c453a2dbb0b...0e74a056', + }, + { + epoch: '12/11/2024', + type: 'Claim', + transactionLink: '0x192c453a2dbb0b...0e74a056', + }, + { + epoch: '12/11/2024', + type: 'Claim', + transactionLink: '0x192c453a2dbb0b...0e74a056', + }, + { + epoch: '12/11/2024', + type: 'Claim', + transactionLink: '0x192c453a2dbb0b...0e74a056', + }, +]; + +const tableHeaders = [ + { name: TableHeaders.Epoch }, + { name: TableHeaders.Type }, + { name: TableHeaders.TransactionLink }, +]; + +export const TransactionsHistory = () => { + return ( + + + + ); +}; + +const AuctionsHistoryContainer = styled.div` + display: flex; + flex-direction: column; +`; diff --git a/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/MyActivity/BidsForSpice/TransactionsTable/DataTable.tsx b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/MyActivity/BidsForSpice/TransactionsTable/DataTable.tsx new file mode 100644 index 000000000..41bf3c076 --- /dev/null +++ b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/MyActivity/BidsForSpice/TransactionsTable/DataTable.tsx @@ -0,0 +1,150 @@ +import React, { useEffect, useState } from 'react'; +import styled from 'styled-components'; +import { Transaction } from './Table'; + +enum TableHeaders { + Epoch = 'EPOCH', + Type = 'Type', + TransactionLink = 'Transaction Link', +} + +type TableProps = { + transactions: Transaction[]; + loading: boolean; + refetch?: () => void; + dataRefetching?: boolean; +}; + +export const DataTable: React.FC = ({ + transactions, + loading, + refetch, + dataRefetching, +}) => { + const tableHeaders = [ + { name: TableHeaders.Epoch }, + { name: TableHeaders.Type }, + { name: TableHeaders.TransactionLink }, + ]; + + const [filter, setFilter] = useState('Last 5 Shown'); + const [filteredTransactions, setFilteredTransactions] = + useState(transactions); + + const filterOptions = ['Last 5 Shown', 'Show All']; + + return ( + +
+ Transaction History + + {filterOptions.map((option) => ( + setFilter(option)} + selected={filter === option} + > + {option} + + ))} + +
+ + + + {tableHeaders.map((h) => ( + {h.name} + ))} + + + + {loading ? ( + + Loading... + + ) : transactions.length === 0 ? ( + + No data available + + ) : ( + transactions.map((transaction) => ( + + {transaction.epoch} + {transaction.type} + {transaction.transactionLink} + + )) + )} + + +
+ ); +}; + +const PageContainer = styled.div` + display: flex; + flex-direction: column; + padding: 40px 0px 24px 0px; + gap: 32px; +`; + +const Header = styled.div` + display: flex; + justify-content: space-between; + align-items: center; +`; + +const Title = styled.h3` + color: ${({ theme }) => theme.palette.brandLight}; + font-size: 24px; + line-height: 44px; + font-weight: 400; + margin: 0; +`; + +const FilterContainer = styled.div` + display: flex; + flex-direction: row; + gap: 20px; +`; + +const FilterButton = styled.button<{ selected: boolean }>` + background: none; + color: ${({ selected, theme }) => + selected ? theme.palette.brandLight : theme.palette.brand}; + border: none; + cursor: pointer; +`; + +const TableData = styled.table` + border-spacing: 10px + width: 100%; + border-collapse: collapse; +`; + +const HeaderRow = styled.tr` + border-bottom: 1px solid ${({ theme }) => theme.palette.brand}; +`; + +const TableHeader = styled.th` + font-size: 13px; + font-weight: 700; + line-height: 20px; + text-align: left; + padding-top: 5px; + width: 33.33%; + color: ${({ theme }) => theme.palette.brand}; +`; + +const DataRow = styled.tr``; + +const DataCell = styled.td` + font-size: 13px; + font-weight: 700; + line-height: 20px; + text-align: left; + padding: 20px 0px 20px 0px; + width: 33.33%; + border-bottom: 1px solid ${({ theme }) => theme.palette.brand}; + color: ${({ theme }) => theme.palette.brandLight}; +`; diff --git a/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/MyActivity/BidsForSpice/TransactionsTable/Table.tsx b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/MyActivity/BidsForSpice/TransactionsTable/Table.tsx new file mode 100644 index 000000000..e2362fd26 --- /dev/null +++ b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/MyActivity/BidsForSpice/TransactionsTable/Table.tsx @@ -0,0 +1,49 @@ +import styled from 'styled-components'; +import { DataTable } from './DataTable'; + +export type Transaction = { + epoch: string; + type: 'Bid' | 'Claim'; + transactionLink: string; +}; + +const data: Transaction[] = [ + { + epoch: '12/12/2024', + type: 'Bid', + transactionLink: '0x192c453a2dbb0b...0e74a056', + }, + { + epoch: '12/12/2024', + type: 'Claim', + transactionLink: '0x342c4535430979a...0b6b8b25', + }, + { + epoch: '12/12/2024', + type: 'Bid', + transactionLink: '0x192c453a2dbb0b...0e74a056', + }, + { + epoch: '12/12/2024', + type: 'Bid', + transactionLink: '0x192c453a2dbb0b...0e74a056', + }, + { + epoch: '12/12/2024', + type: 'Claim', + transactionLink: '0x192c453a2dbb0b...0e74a056', + }, +]; + +export const TransactionsHistory = () => { + return ( + + + + ); +}; + +const AuctionsHistoryContainer = styled.div` + display: flex; + flex-direction: column; +`; diff --git a/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/MyActivity/BidsForSpice/index.tsx b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/MyActivity/BidsForSpice/index.tsx new file mode 100644 index 000000000..6c7701dc4 --- /dev/null +++ b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/MyActivity/BidsForSpice/index.tsx @@ -0,0 +1,190 @@ +import styled from 'styled-components'; +import { MyActivityTopNav } from '../TopNav'; +import linkSvg from 'assets/icons/link.svg?react'; +import { BidHistory } from './Tables/BidTable'; +import { TransactionsHistory } from './Tables/TransactionsTable'; +import { Button } from 'components/Button/Button'; +import * as breakpoints from 'styles/breakpoints'; + +export const MyActivitySpice = () => { + return ( + + + + <TitleText>Bids for Spice</TitleText> + <LinkIcon /> + + + + + 0 + Total Redeemed TGLD + + + + $17,851 + Unclaimed Rewards (USD) + + console.log('clicked')} + > + Claim selected + + + + + + + + + + ); +}; + +const PageContainer = styled.div` + margin-top: -20px; + display: flex; + flex-direction: column; + gap: 20px; + + ${breakpoints.phoneAndAbove(` + gap: 40px; + `)} +`; + +const ContentContainer = styled.div` + display: flex; + flex-direction: column; + gap: 60px; +`; + +const Title = styled.div` + display: flex; + flex-direction: row; + align-items: center; + gap: 15px; +`; + +const TitleText = styled.h2` + color: ${({ theme }) => theme.palette.brandLight}; + margin: 0px; + font-size: 28px; + line-height: 52px; + + ${breakpoints.phoneAndAbove(` + font-size: 36px; + line-height: 67px; + `)} +`; + +const LinkIcon = styled(linkSvg)` + fill: ${({ theme }) => theme.palette.brand}; + cursor: pointer; +`; + +const StatusContainer = styled.div` + display: flex; + flex-direction: column; + justify-content: space-between; + gap: 12px; + + ${breakpoints.phoneAndAbove(` + flex-direction: row; + gap: 20px; + `)} +`; + +const BalanceBox = styled.div` + display: flex; + flex-direction: column; + flex-grow: 1; + flex-basis: 0; + justify-content: center; + align-items: center; + min-height: 140px; + padding: 20px 10px 20px 10px; + border: 1px solid ${({ theme }) => theme.palette.brand}; + border-radius: 10px; + gap: 12px; + background: linear-gradient(180deg, #0b0a0a 0%, #1d1a1a 100%); + + ${breakpoints.phoneAndAbove(` + padding: 10px 20px 20px 20px; + background: none; + height: 180px; + gap: 20px; + `)} +`; + +const UnclaimedBox = styled.div` + display: flex; + flex-direction: column; + flex-grow: 1; + flex-basis: 0; + justify-content: center; + align-items: center; + min-height: 190px; + padding: 20px 10px 20px 10px; + border: 1px solid ${({ theme }) => theme.palette.brand}; + border-radius: 10px; + gap: 20px; + background: linear-gradient(180deg, #0b0a0a 0%, #1d1a1a 100%); + + ${breakpoints.phoneAndAbove(` + padding: 10px 20px 0px 20px; + background: none; + min-height: 180px; + `)} +`; + +const StatusValue = styled.div` + color: ${({ theme }) => theme.palette.brandLight}; + font-size: 24px; + font-weight: 700; + line-height: 29px; +`; + +const StatusText = styled.div` + color: ${({ theme }) => theme.palette.brand}; + font-size: 16px; + line-height: 19px; + text-align: center; +`; + +const Status = styled.div` + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + gap: 15px; +`; + +const TablesContainer = styled.div` + display: flex; + flex-direction: column; + gap: 0px; + + ${breakpoints.phoneAndAbove(` + gap: 80px; + `)} +`; + +const TradeButton = styled(Button)` + padding: 10px 20px 10px 20px; + width: ${(props) => props.width || 'min-content'}; + height: min-content; + background: ${({ theme }) => theme.palette.gradients.dark}; + border: 1px solid ${({ theme }) => theme.palette.brandDark}; //if button is not active this is not used + box-shadow: 0px 0px 20px rgba(222, 92, 6, 0.4); //if button is not active this is not used + border-radius: 10px; + font-weight: 700; + font-size: 12px; + line-height: 18px; + text-transform: uppercase; + color: ${({ theme }) => theme.palette.brandLight}; +`; diff --git a/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/MyActivity/BidsForTGLD/BidDai.tsx b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/MyActivity/BidsForTGLD/BidDai.tsx new file mode 100644 index 000000000..669a52650 --- /dev/null +++ b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/MyActivity/BidsForTGLD/BidDai.tsx @@ -0,0 +1,291 @@ +import styled from 'styled-components'; +import { Button } from 'components/Button/Button'; +import dai from 'assets/icons/Dai.svg?react'; +import templeGold from 'assets/icons/temple-gold.svg?react'; +import { Input } from 'components/Pages/Core/DappPages/SpiceBazaar/components/Input'; + +export const BidDai = () => { + return ( + + + BID DAI + + + + + + 70.53 DAI + AVAILABLE + + + + + Current Bid Amount + + + + New Bid Amount + + + + + You will receive + + + 1 TGLD + + + at the current TGLD priece of 5.32 DAI per TGLD + + + + +

i

+
+ + + Current TGLD price may rise before the end of the auction. + + + Once submitted, the bid cannot be withdrawn or cancelled. + + +
+ console.log('clicked')} + > + SUBMIT NEW BID + +
+
+ ); +}; + +const ContentContainer = styled.div` + display: flex; + flex-direction: column; + align-items: center; + flex-grow: 1; + gap: 32px; +`; + +const TitleContainer = styled.div` + display: flex; + flex-direction: row; + height: 77px; + width: 624px; + justify-content: center; + align-items: center; + background: ${({ theme }) => theme.palette.gradients.grey}; +`; + +const Title = styled.h3` + diplay: flex; + color: ${({ theme }) => theme.palette.brandLight}; + font-size: 28px; + font-weight: 400; + line-height: 52px; + text-align: center; + margin: 0px; +`; + +const Container = styled.div` + display: flex; + flex-direction: column; + width: 450px; + align-items: center; + flex-grow: 1; + padding: 8px 0px 8px 0px; + gap: 24px; +`; + +const AvailableAmountContainer = styled.div` + display: flex; + flex-direction: row; + align-items: center; + padding: 0px 24px 0px 24px; + width: 450px; + gap: 10px; +`; + +const DaiIcon = styled(dai)` + width: 42px; + height: 42px; +`; + +const AvailableAmountText = styled.div` + display: flex; + flex-direction: column; +`; + +const AvailableAmount = styled.h3` + font-weight: 400; + font-size: 28px; + line-height: 52px; + font-weight: 400; + color: ${({ theme }) => theme.palette.brandLight}; + margin: 0px; +`; + +const AvailableText = styled.div` + font-size: 16px; + line-height: 19px; + color: ${({ theme }) => theme.palette.brand}; + margin: 0px; +`; + +const BidContainer = styled.div` + display: flex; + flex-direction: column; + width: 100%; + border-top: 2px solid ${({ theme }) => theme.palette.brand}; + border-bottom: 2px solid ${({ theme }) => theme.palette.brand}; + background: ${({ theme }) => theme.palette.gradients.grey}; + padding: 24px; + gap: 32px; +`; + +const BidContent = styled.div` + display: flex; + flex-direction: column; + gap: 8px; +`; + +const TitleBid = styled.div` + font-weight: 400; + font-size: 16px; + line-height: 19px; + color: ${({ theme }) => theme.palette.brandLight}; +`; + +const ReceiveAmountContainer = styled.div` + display: flex; + flex-direction: column; + align-items: center; + width: 100%; + border: 1px solid ${({ theme }) => theme.palette.brand}; + border-radius: 10px; + background: ${({ theme }) => theme.palette.black}; + gap: 20px; + padding: 16px; +`; + +const TempleGoldIcon = styled(templeGold)``; + +const ReceiveContainer = styled.div` + display: flex; + flex-direction: row; + align-items: center; + gap: 20px; +`; + +const ReceiveTextTop = styled.div` + font-weight: 400; + letter-spacing: -0.02em; + font-size: 18px; + line-height: 21px; + color: ${({ theme }) => theme.palette.brandLight}; +`; + +const ReceiveTextBottom = styled.div` + font-size: 16px; + font-weight: 400; + line-height: 19px; + letter-spacing: 0.05em; + span { + font-weight: 700; + } + color: ${({ theme }) => theme.palette.brandLight}; +`; + +const ReceiveAmount = styled.h3` + line-height: 52px; + font-size: 28px; + line-height: 52px; + font-weight: 400; + color: ${({ theme }) => theme.palette.gold}; + margin: 0px; +`; + +const InfoCircle = styled.div` + display: flex; + margin: 0.25rem; + padding: 0.5rem; + align-items: center; + justify-content: center; + width: 1.25rem; + height: 1.25rem; + font-size: 1rem; + font-weight: 600; + border-radius: 50%; + border: 1px solid ${({ theme }) => theme.palette.brand}; +`; + +const MessageText = styled.div` + display: flex; + flex-direction: column; + gap: 8px; +`; + +const Text = styled.p` + margin: 0px; + color: ${({ theme }) => theme.palette.brand}; + font-size: 12px; + line-height: 18px; + font-weight: 700; +`; + +const WarningMessage = styled.div` + display: flex; + flex-direction: row; + align-items: center; + width: 100%; + border: 2px solid transparent; + border-image-source: linear-gradient( + 180deg, + rgba(149, 97, 63, 0.1) 0%, + rgba(255, 255, 255, 0) 100% + ); + border-image-slice: 1; + border-radius: 6px; + padding: 10px 0px 10px 10px; + gap: 10px; + background: #24272c; + color: ${({ theme }) => theme.palette.brand}; + font-size: 12px; + line-height: 18px; + font-weight: 700; +`; + +export const TradeButton = styled(Button)` + padding: 12px 20px 12px 20px; + width: ${(props) => props.width || 'min-content'}; + height: min-content; + background: ${({ theme }) => theme.palette.gradients.dark}; + border: 1px solid ${({ theme }) => theme.palette.brandDark}; //if button is not active this is not used + box-shadow: 0px 0px 20px rgba(222, 92, 6, 0.4); //if button is not active this is not used + border-radius: 10px; + font-size: 16px; + line-height: 19px; + text-transform: uppercase; + color: ${({ theme }) => theme.palette.brandLight}; +`; diff --git a/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/MyActivity/BidsForTGLD/BidTable/DataTable.tsx b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/MyActivity/BidsForTGLD/BidTable/DataTable.tsx new file mode 100644 index 000000000..b441b8ae6 --- /dev/null +++ b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/MyActivity/BidsForTGLD/BidTable/DataTable.tsx @@ -0,0 +1,246 @@ +import React, { useEffect, useState } from 'react'; +import { useNavigate } from 'react-router-dom'; +import styled from 'styled-components'; +import { Transaction } from './Table'; +import { Button } from 'components/Button/Button'; +import checkbox from 'assets/icons/checkbox-square.svg?react'; +import { Popover } from 'components/Pages/Core/DappPages/SpiceBazaar/components/Popover'; +import { BidDai } from '../BidDai'; + +enum TableHeaders { + EpochId = 'EPOCH\nID', + AuctionEndDateTime = 'Auction End\nDate/Time', + BidAmount = 'Bid Amount', + ClaimableTokens = 'Claimable TOKENS', + Unit = 'Unit', + UnitPrice = 'Unit Price (DAI)', + Claim = 'Claim', + Increase = '', +} + +type TableProps = { + transactions: Transaction[]; + loading: boolean; + refetch?: () => void; + dataRefetching?: boolean; +}; + +export const DataTable: React.FC = ({ + transactions, + loading, + refetch, + dataRefetching, +}) => { + const [modal, setModal] = useState<'closed' | 'bidDai'>('closed'); + + const tableHeaders = [ + { name: TableHeaders.EpochId }, + { name: TableHeaders.AuctionEndDateTime }, + { name: TableHeaders.BidAmount }, + { name: TableHeaders.ClaimableTokens }, + { name: TableHeaders.Unit }, + { name: TableHeaders.UnitPrice }, + { name: TableHeaders.Claim }, + { name: TableHeaders.Increase }, + ]; + + const [filter, setFilter] = useState('Last 5 Shown'); + const [filteredTransactions, setFilteredTransactions] = + useState(transactions); + + const navigate = useNavigate(); + + const filterOptions = ['Last 5 Shown', 'Show All']; + + // State to track the selected (checked) checkbox + const [selectedClaim, setSelectedClaim] = useState(null); + + // Function to handle checkbox change + const handleCheckboxChange = (epochId: number) => { + setSelectedClaim(epochId === selectedClaim ? null : epochId); // Toggle between checked and unchecked + }; + + return ( + <> + +
+ BID for TGLD History + + {filterOptions.map((option) => ( + setFilter(option)} + selected={filter === option} + > + {option} + + ))} + +
+ + + + {tableHeaders.map((h) => ( + + {h.name === TableHeaders.Claim ? ( + + {h.name} + + ) : ( + h.name + )} + + ))} + + + + {loading ? ( + + Loading... + + ) : transactions.length === 0 ? ( + + No data available + + ) : ( + transactions.map((transaction) => ( + + {transaction.epochId} + {transaction.auctionEndDateTime} + {transaction.bidAmount} DAO + {transaction.claimableTokens} + {transaction.unit} + {transaction.unitPrice} + + handleCheckboxChange(transaction.epochId)} + /> + + {transaction.claim} + + setModal('bidDai')} + style={{ whiteSpace: 'nowrap', margin: 0 }} + > + Increase Bid + + + + )) + )} + + +
+ setModal('closed')} + closeOnClickOutside + showCloseButton + > + + + + ); +}; + +const PageContainer = styled.div` + display: flex; + flex-direction: column; + padding: 40px 0px 24px 0px; + gap: 20px; +`; + +const Header = styled.div` + display: flex; + justify-content: space-between; + align-items: center; +`; + +const Title = styled.h3` + color: ${({ theme }) => theme.palette.brandLight}; + font-size: 24px; + line-height: 44px; + font-weight: 400; + margin: 0; +`; + +const FilterContainer = styled.div` + display: flex; + flex-direction: row; + gap: 20px; +`; + +const FilterButton = styled.button<{ selected: boolean }>` + background: none; + color: ${({ selected, theme }) => + selected ? theme.palette.brandLight : theme.palette.brand}; + border: none; + cursor: pointer; +`; + +const TableData = styled.table` + border-spacing: 10px + width: 100%; + border-collapse: collapse; +`; + +const HeaderRow = styled.tr` + border-bottom: 1px solid ${({ theme }) => theme.palette.brand}; +`; + +const TableHeader = styled.th<{ name: string }>` + font-size: 13px; + font-weight: 700; + line-height: 20px; + text-align: left; + padding-top: 5px; + color: ${({ theme }) => theme.palette.brand}; + white-space: ${({ name }) => + name === TableHeaders.EpochId || name === TableHeaders.AuctionEndDateTime + ? 'pre-wrap' + : 'nowrap'}; +`; + +const DataRow = styled.tr` + padding-left: 16px; +`; + +const DataCell = styled.td` + font-size: 13px; + font-weight: 700; + line-height: 20px; + text-align: left; + padding: 20px 0px 20px 0px; + border-bottom: 1px solid ${({ theme }) => theme.palette.brand}; + color: ${({ theme }) => theme.palette.brandLight}; + + &:first-child { + padding-left: 16px; + } +`; + +const TradeButton = styled(Button)` + padding: 10px 20px 10px 20px; + width: ${(props) => props.width || 'min-content'}; + height: min-content; + background: ${({ theme }) => theme.palette.gradients.dark}; + border: 1px solid ${({ theme }) => theme.palette.brandDark}; //if button is not active this is not used + box-shadow: 0px 0px 20px rgba(222, 92, 6, 0.4); //if button is not active this is not used + border-radius: 10px; + font-weight: 700; + font-size: 12px; + line-height: 18px; + text-transform: uppercase; + color: ${({ theme }) => theme.palette.brandLight}; +`; + +const CheckBox = styled(checkbox)``; + +const ClaimHeader = styled.div` + display: flex; + flex-direction: row; + align-items: center; + gap: 12px; +`; diff --git a/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/MyActivity/BidsForTGLD/BidTable/Table.tsx b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/MyActivity/BidsForTGLD/BidTable/Table.tsx new file mode 100644 index 000000000..c6f9793c6 --- /dev/null +++ b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/MyActivity/BidsForTGLD/BidTable/Table.tsx @@ -0,0 +1,79 @@ +import styled from 'styled-components'; +import { DataTable } from './DataTable'; + +export type Transaction = { + epochId: number; + auctionEndDateTime: string; + bidAmount: number; + claimableTokens: number | '-'; + unit: 'TGLD'; + unitPrice: number; + claim: string; + increase: string; +}; + +const data: Transaction[] = [ + { + epochId: 1, + auctionEndDateTime: '30.09.2024', + bidAmount: 100, + claimableTokens: '-', + unit: 'TGLD', + unitPrice: 0.0025, + claim: '', + increase: '', + }, + { + epochId: 2, + auctionEndDateTime: '14.10.2024', + bidAmount: 100, + claimableTokens: 100000, + unit: 'TGLD', + unitPrice: 0.0029, + claim: '', + increase: '', + }, + { + epochId: 3, + auctionEndDateTime: '28.10.2024', + bidAmount: 100, + claimableTokens: 200000, + unit: 'TGLD', + unitPrice: 0.0025, + claim: '', + increase: '', + }, + { + epochId: 4, + auctionEndDateTime: '28.10.2024', + bidAmount: 100, + claimableTokens: 150000, + unit: 'TGLD', + unitPrice: 0.0045, + claim: '', + increase: '', + }, + { + epochId: 5, + auctionEndDateTime: '-', + bidAmount: 100, + claimableTokens: '-', + unit: 'TGLD', + unitPrice: 0.0029, + claim: '', + increase: '', + }, +]; + +export const BidHistory = () => { + return ( + + + + ); +}; + +const AuctionsHistoryContainer = styled.div` + display: flex; + flex-direction: column; +`; diff --git a/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/MyActivity/BidsForTGLD/BidUSDS.tsx b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/MyActivity/BidsForTGLD/BidUSDS.tsx new file mode 100644 index 000000000..4394a4dd5 --- /dev/null +++ b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/MyActivity/BidsForTGLD/BidUSDS.tsx @@ -0,0 +1,310 @@ +import styled from 'styled-components'; +import { Button } from 'components/Button/Button'; +import usds from 'assets/icons/usds.svg?react'; +import templeGold from 'assets/icons/temple-gold.svg?react'; +import { Input } from 'components/Pages/Core/DappPages/SpiceBazaar/components/Input'; +import * as breakpoints from 'styles/breakpoints'; +import { useMediaQuery } from 'react-responsive'; +import { queryPhone } from 'styles/breakpoints'; + +export const BidUSDS = () => { + const isPhoneOrAbove = useMediaQuery({ + query: queryPhone, + }); + + return ( + + + BID USDS + + + + + + 70.53 USDS + AVAILABLE + + + + + Current Bid Amount + + + + New Bid Amount + + + + + You will receive + + + 1 TGLD + + + at the current TGLD priece of {!isPhoneOrAbove &&
} + 5.32 USDS per TGLD +
+
+ + +

i

+
+ + + Current TGLD price may rise before the end of the auction. + + + Once submitted, the bid cannot be withdrawn or cancelled. + + +
+ console.log('clicked')} + > + SUBMIT NEW BID + +
+
+ ); +}; + +const ContentContainer = styled.div` + display: flex; + flex-direction: column; + align-items: center; + flex-grow: 1; + gap: 32px; + max-width: 393px; + padding: 0px 16px 0px 16px; + + ${breakpoints.phoneAndAbove(` + max-width: 100%; + padding: 0px 0px 0px 0px; + `)} +`; + +const TitleContainer = styled.div` + display: flex; + flex-direction: row; + height: 77px; + width: 100%; + justify-content: center; + align-items: center; + background: ${({ theme }) => theme.palette.gradients.grey}; + + ${breakpoints.phoneAndAbove(` + width: 624px; + `)} +`; + +const Title = styled.h3` + diplay: flex; + color: ${({ theme }) => theme.palette.brandLight}; + font-size: 24px; + line-height: 44px; + text-align: center; + margin: 0px; +`; + +const Container = styled.div` + display: flex; + flex-direction: column; + width: 450px; + flex-grow: 1; + padding: 8px 0px 8px 0px; + gap: 24px; + width: 360px; + + ${breakpoints.phoneAndAbove(` + width: 450px; + `)} +`; + +const AvailableAmountContainer = styled.div` + display: flex; + flex-direction: row; + align-items: center; + padding: 0px 24px 0px 24px; + gap: 10px; + + ${breakpoints.phoneAndAbove(` + width: 450px; + `)} +`; + +const USDSIcon = styled(usds)` + width: 42px; + height: 42px; +`; + +const AvailableAmountText = styled.div` + display: flex; + flex-direction: column; +`; + +const AvailableAmount = styled.h3` + font-size: 28px; + line-height: 52px; + color: ${({ theme }) => theme.palette.brandLight}; + margin: 0px; +`; + +const AvailableText = styled.div` + font-size: 16px; + line-height: 19px; + color: ${({ theme }) => theme.palette.brand}; + margin: 0px; +`; + +const BidContainer = styled.div` + display: flex; + flex-direction: column; + width: 100%; + border-top: 2px solid ${({ theme }) => theme.palette.brand}; + border-bottom: 2px solid ${({ theme }) => theme.palette.brand}; + background: ${({ theme }) => theme.palette.gradients.grey}; + padding: 24px; + gap: 32px; +`; + +const BidContent = styled.div` + display: flex; + flex-direction: column; + gap: 8px; +`; + +const TitleBid = styled.div` + font-size: 16px; + line-height: 19px; + color: ${({ theme }) => theme.palette.brandLight}; +`; + +const ReceiveAmountContainer = styled.div` + display: flex; + flex-direction: column; + align-items: center; + width: 100%; + border: 1px solid ${({ theme }) => theme.palette.brand}; + border-radius: 10px; + background: ${({ theme }) => theme.palette.black}; + gap: 20px; + padding: 16px; +`; + +const TempleGoldIcon = styled(templeGold)``; + +const ReceiveContainer = styled.div` + display: flex; + flex-direction: row; + align-items: center; + gap: 20px; +`; + +const ReceiveTextTop = styled.div` + font-size: 18px; + line-height: 21px; + color: ${({ theme }) => theme.palette.brandLight}; +`; + +const ReceiveTextBottom = styled.div` + font-size: 16px; + line-height: 19px; + text-align: center; + color: ${({ theme }) => theme.palette.brandLight}; +`; + +const ReceiveAmount = styled.h3` + line-height: 52px; + font-size: 28px; + line-height: 52px; + color: ${({ theme }) => theme.palette.gold}; + margin: 0px; +`; + +const InfoCircle = styled.div` + display: flex; + margin: 0.25rem; + padding: 0.5rem; + align-items: center; + justify-content: center; + width: 1.25rem; + height: 1.25rem; + font-size: 1rem; + font-weight: 600; + border-radius: 50%; + border: 1px solid ${({ theme }) => theme.palette.brand}; +`; + +const MessageText = styled.div` + display: flex; + flex-direction: column; + gap: 8px; +`; + +const Text = styled.p` + margin: 0px; + color: ${({ theme }) => theme.palette.brand}; + font-size: 12px; + line-height: 18px; + font-weight: 700; +`; + +const WarningMessage = styled.div` + display: flex; + flex-direction: row; + align-items: center; + width: 100%; + border: 2px solid transparent; + border-image-source: linear-gradient( + 180deg, + rgba(149, 97, 63, 0.1) 0%, + rgba(255, 255, 255, 0) 100% + ); + border-image-slice: 1; + border-radius: 6px; + padding: 10px 0px 10px 10px; + gap: 10px; + background: #24272c; + color: ${({ theme }) => theme.palette.brand}; + font-size: 12px; + line-height: 18px; + font-weight: 700; +`; + +export const TradeButton = styled(Button)` + padding: 12px 20px 12px 20px; + width: ${(props) => props.width || 'min-content'}; + height: min-content; + background: ${({ theme }) => theme.palette.gradients.dark}; + border: 1px solid ${({ theme }) => theme.palette.brandDark}; //if button is not active this is not used + box-shadow: 0px 0px 20px rgba(222, 92, 6, 0.4); //if button is not active this is not used + border-radius: 10px; + font-size: 16px; + line-height: 19px; + text-transform: uppercase; + color: ${({ theme }) => theme.palette.brandLight}; +`; diff --git a/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/MyActivity/BidsForTGLD/Tables/BidTable.tsx b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/MyActivity/BidsForTGLD/Tables/BidTable.tsx new file mode 100644 index 000000000..0a658e843 --- /dev/null +++ b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/MyActivity/BidsForTGLD/Tables/BidTable.tsx @@ -0,0 +1,117 @@ +import styled from 'styled-components'; +import { DataTable } from '../../DataTables/BidDataTable'; +import type { Transaction } from '../../DataTables/BidDataTable'; + +enum TableHeaders { + EpochId = 'EPOCH\nID', + AuctionEndDateTime = 'Auction End\nDate/Time', + BidAmount = 'Bid Amount', + ClaimableTokens = 'Claimable\nTOKENS', + Unit = 'Unit', + UnitPrice = 'Unit Price\n(TGLD)', + Claim = 'Claim', + Increase = '', +} + +const data: Transaction[] = [ + { + epochId: 1, + auctionEndDateTime: '30.09.2024', + bidAmount: 100, + claimableTokens: '-', + unit: 'TGLD', + unitPrice: 0.0025, + claim: '', + increase: '', + }, + { + epochId: 2, + auctionEndDateTime: '14.10.2024', + bidAmount: 100, + claimableTokens: 100000, + unit: 'TGLD', + unitPrice: 0.0029, + claim: '', + increase: '', + }, + { + epochId: 3, + auctionEndDateTime: '28.10.2024', + bidAmount: 100, + claimableTokens: 200000, + unit: 'TGLD', + unitPrice: 0.0025, + claim: '', + increase: '', + }, + { + epochId: 4, + auctionEndDateTime: '28.10.2024', + bidAmount: 100, + claimableTokens: 150000, + unit: 'TGLD', + unitPrice: 0.0045, + claim: '', + increase: '', + }, + { + epochId: 5, + auctionEndDateTime: '-', + bidAmount: 100, + claimableTokens: '-', + unit: 'TGLD', + unitPrice: 0.0029, + claim: '', + increase: '', + }, + { + epochId: 6, + auctionEndDateTime: '-', + bidAmount: 100, + claimableTokens: '-', + unit: 'TGLD', + unitPrice: 0.0029, + claim: '', + increase: '', + }, + { + epochId: 7, + auctionEndDateTime: '-', + bidAmount: 100, + claimableTokens: '-', + unit: 'TGLD', + unitPrice: 0.0029, + claim: '', + increase: '', + }, +]; + +const tableHeaders = [ + { name: TableHeaders.EpochId }, + { name: TableHeaders.AuctionEndDateTime }, + { name: TableHeaders.BidAmount }, + { name: TableHeaders.ClaimableTokens }, + { name: TableHeaders.Unit }, + { name: TableHeaders.UnitPrice }, + { name: TableHeaders.Claim }, + { name: TableHeaders.Increase }, +]; + +export const BidHistory = () => { + return ( + + + + ); +}; + +const AuctionsHistoryContainer = styled.div` + display: flex; + flex-direction: column; +`; diff --git a/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/MyActivity/BidsForTGLD/Tables/TransactionsTable.tsx b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/MyActivity/BidsForTGLD/Tables/TransactionsTable.tsx new file mode 100644 index 000000000..f68c1e589 --- /dev/null +++ b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/MyActivity/BidsForTGLD/Tables/TransactionsTable.tsx @@ -0,0 +1,70 @@ +import styled from 'styled-components'; +import { DataTable } from '../../DataTables/TransactionsDataTable'; +import type { Transaction } from '../../DataTables/TransactionsDataTable'; + +enum TableHeaders { + Epoch = 'EPOCH', + Type = 'Type', + TransactionLink = 'Transaction Link', +} + +const data: Transaction[] = [ + { + epoch: '12/12/2024', + type: 'Bid', + transactionLink: '0x192c453a2dbb0b...0e74a056', + }, + { + epoch: '12/12/2024', + type: 'Claim', + transactionLink: '0x342c4535430979a...0b6b8b25', + }, + { + epoch: '12/12/2024', + type: 'Bid', + transactionLink: '0x192c453a2dbb0b...0e74a056', + }, + { + epoch: '12/12/2024', + type: 'Bid', + transactionLink: '0x192c453a2dbb0b...0e74a056', + }, + { + epoch: '12/12/2024', + type: 'Claim', + transactionLink: '0x192c453a2dbb0b...0e74a056', + }, + { + epoch: '12/12/2024', + type: 'Claim', + transactionLink: '0x192c453a2dbb0b...0e74a056', + }, + { + epoch: '12/12/2024', + type: 'Claim', + transactionLink: '0x192c453a2dbb0b...0e74a056', + }, +]; + +const tableHeaders = [ + { name: TableHeaders.Epoch }, + { name: TableHeaders.Type }, + { name: TableHeaders.TransactionLink }, +]; + +export const TransactionsHistory = () => { + return ( + + + + ); +}; + +const AuctionsHistoryContainer = styled.div` + display: flex; + flex-direction: column; +`; diff --git a/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/MyActivity/BidsForTGLD/TransactionsTable/DataTable.tsx b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/MyActivity/BidsForTGLD/TransactionsTable/DataTable.tsx new file mode 100644 index 000000000..41bf3c076 --- /dev/null +++ b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/MyActivity/BidsForTGLD/TransactionsTable/DataTable.tsx @@ -0,0 +1,150 @@ +import React, { useEffect, useState } from 'react'; +import styled from 'styled-components'; +import { Transaction } from './Table'; + +enum TableHeaders { + Epoch = 'EPOCH', + Type = 'Type', + TransactionLink = 'Transaction Link', +} + +type TableProps = { + transactions: Transaction[]; + loading: boolean; + refetch?: () => void; + dataRefetching?: boolean; +}; + +export const DataTable: React.FC = ({ + transactions, + loading, + refetch, + dataRefetching, +}) => { + const tableHeaders = [ + { name: TableHeaders.Epoch }, + { name: TableHeaders.Type }, + { name: TableHeaders.TransactionLink }, + ]; + + const [filter, setFilter] = useState('Last 5 Shown'); + const [filteredTransactions, setFilteredTransactions] = + useState(transactions); + + const filterOptions = ['Last 5 Shown', 'Show All']; + + return ( + +
+ Transaction History + + {filterOptions.map((option) => ( + setFilter(option)} + selected={filter === option} + > + {option} + + ))} + +
+ + + + {tableHeaders.map((h) => ( + {h.name} + ))} + + + + {loading ? ( + + Loading... + + ) : transactions.length === 0 ? ( + + No data available + + ) : ( + transactions.map((transaction) => ( + + {transaction.epoch} + {transaction.type} + {transaction.transactionLink} + + )) + )} + + +
+ ); +}; + +const PageContainer = styled.div` + display: flex; + flex-direction: column; + padding: 40px 0px 24px 0px; + gap: 32px; +`; + +const Header = styled.div` + display: flex; + justify-content: space-between; + align-items: center; +`; + +const Title = styled.h3` + color: ${({ theme }) => theme.palette.brandLight}; + font-size: 24px; + line-height: 44px; + font-weight: 400; + margin: 0; +`; + +const FilterContainer = styled.div` + display: flex; + flex-direction: row; + gap: 20px; +`; + +const FilterButton = styled.button<{ selected: boolean }>` + background: none; + color: ${({ selected, theme }) => + selected ? theme.palette.brandLight : theme.palette.brand}; + border: none; + cursor: pointer; +`; + +const TableData = styled.table` + border-spacing: 10px + width: 100%; + border-collapse: collapse; +`; + +const HeaderRow = styled.tr` + border-bottom: 1px solid ${({ theme }) => theme.palette.brand}; +`; + +const TableHeader = styled.th` + font-size: 13px; + font-weight: 700; + line-height: 20px; + text-align: left; + padding-top: 5px; + width: 33.33%; + color: ${({ theme }) => theme.palette.brand}; +`; + +const DataRow = styled.tr``; + +const DataCell = styled.td` + font-size: 13px; + font-weight: 700; + line-height: 20px; + text-align: left; + padding: 20px 0px 20px 0px; + width: 33.33%; + border-bottom: 1px solid ${({ theme }) => theme.palette.brand}; + color: ${({ theme }) => theme.palette.brandLight}; +`; diff --git a/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/MyActivity/BidsForTGLD/TransactionsTable/Table.tsx b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/MyActivity/BidsForTGLD/TransactionsTable/Table.tsx new file mode 100644 index 000000000..e2362fd26 --- /dev/null +++ b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/MyActivity/BidsForTGLD/TransactionsTable/Table.tsx @@ -0,0 +1,49 @@ +import styled from 'styled-components'; +import { DataTable } from './DataTable'; + +export type Transaction = { + epoch: string; + type: 'Bid' | 'Claim'; + transactionLink: string; +}; + +const data: Transaction[] = [ + { + epoch: '12/12/2024', + type: 'Bid', + transactionLink: '0x192c453a2dbb0b...0e74a056', + }, + { + epoch: '12/12/2024', + type: 'Claim', + transactionLink: '0x342c4535430979a...0b6b8b25', + }, + { + epoch: '12/12/2024', + type: 'Bid', + transactionLink: '0x192c453a2dbb0b...0e74a056', + }, + { + epoch: '12/12/2024', + type: 'Bid', + transactionLink: '0x192c453a2dbb0b...0e74a056', + }, + { + epoch: '12/12/2024', + type: 'Claim', + transactionLink: '0x192c453a2dbb0b...0e74a056', + }, +]; + +export const TransactionsHistory = () => { + return ( + + + + ); +}; + +const AuctionsHistoryContainer = styled.div` + display: flex; + flex-direction: column; +`; diff --git a/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/MyActivity/BidsForTGLD/index.tsx b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/MyActivity/BidsForTGLD/index.tsx new file mode 100644 index 000000000..a60479861 --- /dev/null +++ b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/MyActivity/BidsForTGLD/index.tsx @@ -0,0 +1,228 @@ +import styled from 'styled-components'; +import { MyActivityTopNav } from '../TopNav'; +import linkSvg from 'assets/icons/link.svg?react'; +import { BidHistory } from './Tables/BidTable'; +import { TransactionsHistory } from './Tables/TransactionsTable'; +import { Button } from 'components/Button/Button'; +import * as breakpoints from 'styles/breakpoints'; +import { useWallet } from 'providers/WalletProvider'; +import { formatUnits } from 'ethers/lib/utils'; +import Loader from 'components/Loader/Loader'; +import { formatNumberWithCommas, formatToken } from 'utils/formatter'; +import { useSpiceBazaar } from 'providers/SpiceBazaarProvider'; +import env from 'constants/env'; +import { TICKER_SYMBOL } from 'enums/ticker-symbol'; +import { useEffect } from 'react'; + +export const MyActivityTGLD = () => { + const { balance, updateBalance } = useWallet(); + const { + stakePageMetrics, + staking: { claimRewards }, + } = useSpiceBazaar(); + const { data: stakePageMetricsData, loading: stakePageMetricsLoading } = + stakePageMetrics; + + // TODO: Move to provider? + const hasRewards = stakePageMetricsData.yourRewards > 0; + + useEffect(() => { + const onMount = async () => { + await updateBalance(); + }; + onMount(); + }, [updateBalance]); + + return ( + + + + <TitleText>Bids for TGLD</TitleText> + <LinkIcon /> + + + + + + {balance.TGLD + ? formatToken(balance.TGLD, TICKER_SYMBOL.TEMPLE_GOLD_TOKEN) + : '0'} + + Wallet Balance (TGLD) + + + + {stakePageMetricsLoading ? ( + + ) : ( + <> + + {formatNumberWithCommas(stakePageMetricsData.yourRewards)} +  TGLD + + Unclaimed TGLD + + )} + + + Claim selected + + + + + + + + + + ); +}; + +const PageContainer = styled.div` + margin-top: -20px; + display: flex; + flex-direction: column; + gap: 20px; + + ${breakpoints.phoneAndAbove(` + gap: 40px; + `)} +`; + +const ContentContainer = styled.div` + display: flex; + flex-direction: column; + gap: 60px; +`; + +const Title = styled.div` + display: flex; + flex-direction: row; + align-items: center; + gap: 15px; +`; + +const TitleText = styled.h2` + color: ${({ theme }) => theme.palette.brandLight}; + margin: 0px; + font-size: 28px; + line-height: 52px; + + ${breakpoints.phoneAndAbove(` + font-size: 36px; + line-height: 67px; + `)} +`; + +const LinkIcon = styled(linkSvg)` + fill: ${({ theme }) => theme.palette.brand}; + cursor: pointer; +`; + +const StatusContainer = styled.div` + display: flex; + flex-direction: column; + justify-content: space-between; + gap: 12px; + + ${breakpoints.phoneAndAbove(` + flex-direction: row; + gap: 20px; + `)} +`; + +const BalanceBox = styled.div` + display: flex; + flex-direction: column; + flex-grow: 1; + flex-basis: 0; + justify-content: center; + align-items: center; + min-height: 140px; + padding: 20px 10px 20px 10px; + border: 1px solid ${({ theme }) => theme.palette.brand}; + border-radius: 10px; + gap: 12px; + background: linear-gradient(180deg, #0b0a0a 0%, #1d1a1a 100%); + + ${breakpoints.phoneAndAbove(` + padding: 10px 20px 20px 20px; + background: none; + height: 180px; + gap: 20px; + `)} +`; + +const UnclaimedBox = styled.div` + display: flex; + flex-direction: column; + flex-grow: 1; + flex-basis: 0; + justify-content: center; + align-items: center; + min-height: 190px; + padding: 20px 10px 20px 10px; + border: 1px solid ${({ theme }) => theme.palette.brand}; + border-radius: 10px; + gap: 20px; + background: linear-gradient(180deg, #0b0a0a 0%, #1d1a1a 100%); + + ${breakpoints.phoneAndAbove(` + padding: 10px 20px 0px 20px; + background: none; + min-height: 180px; + `)} +`; + +const StatusValue = styled.div` + color: ${({ theme }) => theme.palette.brandLight}; + font-size: 24px; + font-weight: 700; + line-height: 29px; +`; + +const StatusText = styled.div` + color: ${({ theme }) => theme.palette.brand}; + font-size: 16px; + line-height: 19px; +`; + +const Status = styled.div` + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + gap: 15px; +`; + +const TablesContainer = styled.div` + display: flex; + flex-direction: column; + gap: 0px; + + ${breakpoints.phoneAndAbove(` + gap: 80px; + `)} +`; +const TradeButton = styled(Button)` + padding: 10px 20px 10px 20px; + width: ${(props) => props.width || 'min-content'}; + height: min-content; + background: ${({ theme }) => theme.palette.gradients.dark}; + border: 1px solid ${({ theme }) => theme.palette.brandDark}; //if button is not active this is not used + box-shadow: 0px 0px 20px rgba(222, 92, 6, 0.4); //if button is not active this is not used + border-radius: 10px; + font-weight: 700; + font-size: 12px; + line-height: 18px; + text-transform: uppercase; + color: ${({ theme }) => theme.palette.brandLight}; +`; diff --git a/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/MyActivity/DataTables/BidDataTable.tsx b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/MyActivity/DataTables/BidDataTable.tsx new file mode 100644 index 000000000..c9cf771fb --- /dev/null +++ b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/MyActivity/DataTables/BidDataTable.tsx @@ -0,0 +1,295 @@ +import React, { useEffect, useState } from 'react'; +import styled from 'styled-components'; +import { Button } from 'components/Button/Button'; +import checkbox from 'assets/icons/box.svg?react'; +import { Popover } from 'components/Pages/Core/DappPages/SpiceBazaar/components/Popover'; +import { BidUSDS } from '../BidsForTGLD/BidUSDS'; +import { BidTgld } from '../BidsForSpice/BidTgld'; +import Checkbox from 'components/Pages/Core/DappPages/SpiceBazaar/components/CheckBox'; +import * as breakpoints from 'styles/breakpoints'; + +export type Transaction = { + epochId: number; + auctionEndDateTime: string; + bidAmount: number; + claimableTokens: number | '-'; + unit: 'TGLD' | 'WSBI' | 'ENA'; + unitPrice: number | '-'; + claim: string; + increase: string; +}; + +type TableHeader = { name: string }; + +type TableProps = { + tableHeaders: TableHeader[]; + transactions: Transaction[]; + modal: 'bidDai' | 'bidTgld'; + loading: boolean; + title: string; + refetch?: () => void; + dataRefetching?: boolean; +}; + +export const DataTable: React.FC = ({ + modal, + tableHeaders, + transactions, + loading, + title, + refetch, + dataRefetching, +}) => { + const [modalState, setModalState] = useState<'closed' | 'bidDai' | 'bidTgld'>( + 'closed' + ); + + const [filter, setFilter] = useState('Last 5 Shown'); + const [filteredTransactions, setFilteredTransactions] = + useState(transactions); + const filterOptions = ['Last 5 Shown', 'Show All']; + + useEffect(() => { + if (filter === 'Last 5 Shown') { + setFilteredTransactions(transactions.slice(0, 5)); + // setFilteredTransactions(transactions.slice(-5)); - that's if the last transactions are in end of the array + } else { + setFilteredTransactions(transactions); + } + }, [filter, transactions]); + + const [isCheckboxChecked, setIsCheckboxChecked] = useState(false); + const handleCheckboxToggle = (checked: boolean) => { + setIsCheckboxChecked(checked); + }; + + return ( + <> + +
+ {title} + + {filterOptions.map((option) => ( + setFilter(option)} + selected={filter === option} + > + {option} + + ))} + +
+ + + + + {tableHeaders.map((h) => ( + + {h.name === 'Claim' ? ( + + {h.name} + + ) : ( + h.name + )} + + ))} + + + + {loading ? ( + + Loading... + + ) : filteredTransactions.length === 0 ? ( + + No data available + + ) : ( + filteredTransactions.map((transaction) => ( + + {transaction.epochId} + {transaction.auctionEndDateTime} + {transaction.bidAmount} DAO + {transaction.claimableTokens} + {transaction.unit} + {transaction.unitPrice} + + + + {transaction.claim} + + + setModalState(modal)} + style={{ whiteSpace: 'nowrap', margin: 0 }} + > + Increase Bid + + + + + )) + )} + + + +
+ setModalState('closed')} + closeOnClickOutside + showCloseButton + > + {modal === 'bidDai' && } + {modal === 'bidTgld' && } + + + ); +}; +const PageContainer = styled.div` + display: flex; + flex-direction: column; + padding: 40px 0px 24px 0px; + gap: 20px; + + ${breakpoints.phoneAndAbove(` + gap: 10px; + `)} +`; + +const Header = styled.div` + display: flex; + justify-content: space-between; + align-items: center; + flex-direction: column; + gap: 10px; + + ${breakpoints.phoneAndAbove(` + flex-direction: row; + `)} +`; + +const Title = styled.h3` + color: ${({ theme }) => theme.palette.brandLight}; + font-size: 24px; + line-height: 44px; + margin: 0; +`; + +const FilterContainer = styled.div` + display: flex; + flex-direction: row; + gap: 20px; +`; + +const FilterButton = styled.button<{ selected: boolean }>` + font-size: 16px; + line-height: 19px; + background: none; + color: ${({ selected, theme }) => + selected ? theme.palette.brandLight : theme.palette.brand}; + border: none; + cursor: pointer; +`; + +const TableWrapper = styled.div` + overflow-x: scroll; + padding-bottom: 20px; + scrollbar-width: thin; + scrollbar-color: #58321a #95613f; + + &::-webkit-scrollbar { + height: 8px; + background: transparent; + border-radius: 8px; + } + + &::-webkit-scrollbar-thumb { + background: linear-gradient(to right, #58321a 20%, #95613f 84.5%); + margin: 2px 82px 2px 2px; + } + + &::-webkit-scrollbar-track { + border: 1px solid #351f11; + border-radius: 8px; + } +`; + +const TableData = styled.table` + border-spacing: 10px; + min-width: 800px; + border-collapse: collapse; + width: 100%; +`; + +const HeaderRow = styled.tr` + border-bottom: 1px solid ${({ theme }) => theme.palette.brand}; +`; + +const TableHeader = styled.th<{ name: string }>` + font-size: 13px; + font-weight: 700; + line-height: 20px; + text-align: left; + padding: 5px 0px 0px 0px; + color: ${({ theme }) => theme.palette.brand}; + white-space: ${({ name }) => (name.includes('\n') ? 'pre-wrap' : 'nowrap')}; + position: sticky; + top: 0; + z-index: 1; +`; + +const ClaimHeader = styled.div` + display: flex; + flex-direction: row; + align-items: center; + gap: 12px; +`; + +const CheckBox = styled(checkbox)``; + +const DataRow = styled.tr` + padding-left: 16px; +`; + +const DataCell = styled.td` + font-size: 13px; + font-weight: 700; + line-height: 20px; + text-align: left; + padding: 20px 0px 20px 0px; + border-bottom: 1px solid ${({ theme }) => theme.palette.brand}; + color: ${({ theme }) => theme.palette.brandLight}; + + ${breakpoints.phoneAndAbove(` + &:last-child { + text-align: right; + } + `)} +`; + +const ButtonContainer = styled.div` + display: flex; + flex-direction: row; + justify-content: flex-end; + align-items: center; + gap: 10px; + width: 100%; +`; + +const TradeButton = styled(Button)` + padding: 10px 20px 10px 20px; + width: ${(props) => props.width || 'min-content'}; + height: min-content; + background: ${({ theme }) => theme.palette.gradients.dark}; + border: 1px solid ${({ theme }) => theme.palette.brandDark}; //if button is not active this is not used + box-shadow: 0px 0px 20px rgba(222, 92, 6, 0.4); //if button is not active this is not used + border-radius: 10px; + font-weight: 700; + font-size: 12px; + line-height: 18px; + text-transform: uppercase; + color: ${({ theme }) => theme.palette.brandLight}; +`; diff --git a/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/MyActivity/DataTables/TransactionsDataTable.tsx b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/MyActivity/DataTables/TransactionsDataTable.tsx new file mode 100644 index 000000000..167837bff --- /dev/null +++ b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/MyActivity/DataTables/TransactionsDataTable.tsx @@ -0,0 +1,196 @@ +import React, { useEffect, useState } from 'react'; +import styled from 'styled-components'; +import * as breakpoints from 'styles/breakpoints'; + +export type Transaction = { + epoch: string; + type: 'Bid' | 'Claim'; + transactionLink: string; +}; + +type TableHeader = { name: string }; + +type TableProps = { + tableHeaders: TableHeader[]; + transactions: Transaction[]; + loading: boolean; + refetch?: () => void; + dataRefetching?: boolean; +}; + +export const DataTable: React.FC = ({ + tableHeaders, + transactions, + loading, + refetch, + dataRefetching, +}) => { + const [filter, setFilter] = useState('Last 5 Shown'); + const [filteredTransactions, setFilteredTransactions] = + useState(transactions); + const filterOptions = ['Last 5 Shown', 'Show All']; + + useEffect(() => { + if (filter === 'Last 5 Shown') { + setFilteredTransactions(transactions.slice(0, 5)); + // setFilteredTransactions(transactions.slice(-5)); - that's if the last transactions are in end of the array + } else { + setFilteredTransactions(transactions); + } + }, [filter, transactions]); + + return ( + +
+ Transaction History + + {filterOptions.map((option) => ( + setFilter(option)} + selected={filter === option} + > + {option} + + ))} + +
+ + + + + {tableHeaders.map((h) => ( + {h.name} + ))} + + + + {loading ? ( + + Loading... + + ) : filteredTransactions.length === 0 ? ( + + No data available + + ) : ( + filteredTransactions.map((transaction) => ( + + {transaction.epoch} + {transaction.type} + {transaction.transactionLink} + + )) + )} + + + +
+ ); +}; + +const PageContainer = styled.div` + display: flex; + flex-direction: column; + padding: 40px 0px 24px 0px; + gap: 20px; + + ${breakpoints.phoneAndAbove(` + gap: 32px; + `)} +`; + +const Header = styled.div` + display: flex; + justify-content: space-between; + align-items: center; + flex-direction: column; + gap: 10px; + + ${breakpoints.phoneAndAbove(` + flex-direction: row; + `)} +`; + +const Title = styled.h3` + color: ${({ theme }) => theme.palette.brandLight}; + font-size: 24px; + line-height: 44px; + margin: 0; +`; + +const FilterContainer = styled.div` + display: flex; + flex-direction: row; + gap: 20px; +`; + +const FilterButton = styled.button<{ selected: boolean }>` + font-size: 16px; + line-height: 19px; + background: none; + color: ${({ selected, theme }) => + selected ? theme.palette.brandLight : theme.palette.brand}; + border: none; + cursor: pointer; +`; + +const TableWrapper = styled.div` + overflow-x: scroll; + padding-bottom: 20px; + scrollbar-width: thin; + scrollbar-color: #58321a #95613f; + + &::-webkit-scrollbar { + height: 8px; + background: transparent; + border-radius: 8px; + } + + &::-webkit-scrollbar-thumb { + background: linear-gradient(to right, #58321a 20%, #95613f 84.5%); + margin: 2px 82px 2px 2px; + } + + &::-webkit-scrollbar-track { + border: 1px solid #351f11; + border-radius: 8px; + } +`; + +const TableData = styled.table` + border-spacing: 10px + width: 100%; + border-collapse: collapse; + min-width: 500px; +`; + +const HeaderRow = styled.tr` + border-bottom: 1px solid ${({ theme }) => theme.palette.brand}; +`; + +const TableHeader = styled.th` + font-size: 13px; + font-weight: 700; + line-height: 20px; + text-align: left; + padding-top: 5px; + width: 33.33%; + color: ${({ theme }) => theme.palette.brand}; + position: sticky; + top: 0; + z-index: 1; +`; + +const DataRow = styled.tr``; + +const DataCell = styled.td` + font-size: 13px; + font-weight: 700; + line-height: 20px; + text-align: left; + padding: 20px 0px 20px 0px; + width: 33.33%; + border-bottom: 1px solid ${({ theme }) => theme.palette.brand}; + color: ${({ theme }) => theme.palette.brandLight}; +`; diff --git a/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/MyActivity/TopNav.tsx b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/MyActivity/TopNav.tsx new file mode 100644 index 000000000..6cf48214c --- /dev/null +++ b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/MyActivity/TopNav.tsx @@ -0,0 +1,79 @@ +import { useEffect, useState } from 'react'; +import { useLocation } from 'react-router-dom'; +import { TopNav } from 'components/Pages/Core/DappPages/SpiceBazaar/components/TopNav'; +import { MobileTopNavSecondary } from 'components/Pages/Core/DappPages/SpiceBazaar/components/MobileTopNavSecondary'; +import { useMediaQuery } from 'react-responsive'; +import { queryPhone } from 'styles/breakpoints'; + +enum EarnLocPaths { + Tgld = '/dapp/spice/myactivity/tgld', + Spice = '/dapp/spice/myactivity/spice', +} + +const EarnConfig = [ + { + label: 'Bids for TGLD', + linkTo: EarnLocPaths.Tgld, + }, + // { + // label: 'Bids for Spice', + // linkTo: EarnLocPaths.Spice, + // }, +]; + +export const MyActivityTopNav = () => { + const isPhoneOrAbove = useMediaQuery({ + query: queryPhone, + }); + const loc = useLocation(); + const [menuNavItems, setMenuNavItems] = useState( + EarnConfig.map((item) => ({ + label: item.label, + path: item.linkTo, + selected: item.linkTo === loc.pathname, + })) + ); + + useEffect(() => { + setMenuNavItems((prevMenuNavItems) => + prevMenuNavItems.map((menuItem) => ({ + ...menuItem, + selected: menuItem.path === loc.pathname, + })) + ); + }, [loc.pathname]); + + const onSelectMenuNavItems = (selectedMenuItem: { label: string }) => { + setMenuNavItems( + menuNavItems.map((item) => { + if (item.label === selectedMenuItem.label) { + return { ...item, selected: true }; + } + return { ...item, selected: false }; + }) + ); + }; + + return ( + <> + {isPhoneOrAbove ? ( + + ) : ( + + )} + + ); +}; diff --git a/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/MyActivity/index.tsx b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/MyActivity/index.tsx new file mode 100644 index 000000000..a46234110 --- /dev/null +++ b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/MyActivity/index.tsx @@ -0,0 +1,7 @@ +export const MyActivity = () => { + return ( + <> +

MyActivity

+ + ); +}; diff --git a/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/TopNav.tsx b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/TopNav.tsx new file mode 100644 index 000000000..bd8dcc629 --- /dev/null +++ b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/TopNav.tsx @@ -0,0 +1,114 @@ +import { useEffect, useState } from 'react'; +import { Outlet, useLocation } from 'react-router-dom'; +import styled from 'styled-components'; +import { TopNav } from './components/TopNav'; +import { MobileTopNav } from './components/MobileTopNav'; +import allSpices from 'assets/images/all-spices.svg?react'; +import { useMediaQuery } from 'react-responsive'; +import { queryPhone } from 'styles/breakpoints'; + +enum SpiceLocPaths { + Earn = '/dapp/spice/earn', + Bid = '/dapp/spice/bid', + MyActivity = '/dapp/spice/myactivity/tgld', + Analytics = '/dapp/spice/analytics', +} + +const SpiceBazaarConfig = [ + { + label: 'Earn Temple Gold', + linkTo: SpiceLocPaths.Earn, + }, + // { + // label: 'Bid Temple Gold', + // linkTo: SpiceLocPaths.Bid, + // }, + { + label: 'My Activity', + linkTo: SpiceLocPaths.MyActivity, + }, + { + label: 'Analytics', + linkTo: SpiceLocPaths.Analytics, + }, +]; + +export const SpiceBazaarTopNav = () => { + const isPhoneOrAbove = useMediaQuery({ + query: queryPhone, + }); + const loc = useLocation(); + const [menuNavItems, setMenuNavItems] = useState( + SpiceBazaarConfig.map((item) => ({ + label: item.label, + path: item.linkTo, + selected: item.linkTo === loc.pathname, + })) + ); + + useEffect(() => { + setMenuNavItems((prevMenuNavItems) => + prevMenuNavItems.map((menuItem) => ({ + ...menuItem, + selected: + menuItem.path === location.pathname || + (menuItem.path === '/dapp/spice/earn' && + location.pathname.startsWith('/dapp/spice/earn')) || + (menuItem.path === '/dapp/spice/bid' && + location.pathname.startsWith('/dapp/spice/bid')) || + (menuItem.path === '/dapp/spice/myactivity/tgld' && + location.pathname.startsWith('/dapp/spice/myactivity')), + })) + ); + }, [loc.pathname]); + + const onSelectMenuNavItems = (selectedMenuItem: { label: string }) => { + setMenuNavItems( + menuNavItems.map((item) => { + if (item.label === selectedMenuItem.label) { + return { ...item, selected: true }; + } + return { ...item, selected: false }; + }) + ); + }; + + return ( + <> + {isPhoneOrAbove && } + + + {isPhoneOrAbove ? ( + + ) : ( + + )} + + + + + ); +}; +const PageContainer = styled.div` + position: relative; + z-index: 1; +`; + +const Content = styled.div` + display: flex; + flex-direction: column; + gap: 60px; +`; + +const AllSpices = styled(allSpices)` + position: absolute; + top: 0; + right: 0; + z-index: 0; +`; diff --git a/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/components/CheckBox.tsx b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/components/CheckBox.tsx new file mode 100644 index 000000000..22461db4a --- /dev/null +++ b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/components/CheckBox.tsx @@ -0,0 +1,67 @@ +import { useState } from 'react'; +import styled from 'styled-components'; +import box from 'assets/icons/box.svg?react'; +import checkmark from 'assets/icons/checkmark-in-box.svg?react'; + +type CustomCheckboxProps = { + onToggle?: (checked: boolean) => void; +}; + +const Checkbox: React.FC = ({ onToggle }) => { + const [checked, setChecked] = useState(false); + + const handleClick = () => { + setChecked(!checked); + if (onToggle) { + onToggle(!checked); + } + }; + + return ( + + + + {checked && } + + + ); +}; + +export default Checkbox; + +const CheckboxContainer = styled.div` + display: flex; + align-items: center; + gap: 8px; + cursor: pointer; +`; + +const CheckboxSvgWrapper = styled.div` + position: relative; + width: 24px; + height: 24px; + display: flex; + justify-content: center; + align-items: center; +`; + +const StyledCircle = styled(box)` + position: absolute; + top: 0; + left: 0; + width: 24px; + height: 24px; +`; + +const StyledCheckmark = styled(checkmark)` + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + width: 18px; + height: 18px; +`; diff --git a/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/components/Input.tsx b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/components/Input.tsx new file mode 100644 index 000000000..f240e85f9 --- /dev/null +++ b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/components/Input.tsx @@ -0,0 +1,195 @@ +import React, { InputHTMLAttributes, KeyboardEvent } from 'react'; +import styled, { css } from 'styled-components'; +import { theme } from 'styles/theme'; + +interface InputStyledProps { + valueFontSize?: string; + valueLineHeight?: string; +} + +interface SizeProps { + small?: boolean; + width?: number | string | undefined; +} + +export interface CryptoValue { + kind: 'value'; + value: string; +} + +export interface InputProps + extends SizeProps, + InputHTMLAttributes { + hint?: string; + crypto?: CryptoValue; + isNumber?: boolean; + + // Callback for input value change + handleChange?(value: number | string): void; + + onHintClick?(): void; + suffix?: string; + + valueFontSize?: string; + valueLineHeight?: string; +} + +export const Input = ({ + handleChange, + onHintClick, + hint, + crypto, + isNumber, + type, + value, + disabled, + valueFontSize, + valueLineHeight, + ...props +}: InputProps) => { + const renderCrypto = () => { + if (!crypto) return null; + if (crypto.kind === 'value') return {crypto.value}; + }; + + const handleInputChange = (event: React.ChangeEvent) => { + if (!handleChange) return; + const val = event.target.value; + if (isNumber) { + // if starting with a period, prepend 0 + if (val.charAt(0) === '.') { + handleChange('0' + val); + return; + } + // don't allow multiple periods + if (val.indexOf('.') != val.lastIndexOf('.')) { + event.preventDefault(); + return; + } + } + handleChange(val); + }; + + // using onKeyPress instead of onChange, + // otherwise cursor jumps around when editing in the middle + const numbersOnly = (event: KeyboardEvent) => { + if (!/\.|\d/.test(event.key)) { + event.preventDefault(); + } + }; + + return ( + + + {renderCrypto()} + {hint && ( + { + if (onHintClick) onHintClick(); + }} + > + {hint} + + )} + + + + ); +}; + +interface InputWrapperProps extends SizeProps { + isDisabled?: boolean; +} + +export const InputWrapper = styled.div` + display: flex; + position: relative; + box-sizing: border-box; + background-color: ${(props) => props.theme.palette.dark}; + border: 1px solid ${(props) => props.theme.palette.brand}; + width: ${({ width }) => width || '90%'}; + border-radius: 10px; + padding: 10px; + gap: 10px; + + ${(props) => + props.isDisabled && + css` + background-color: ${(props) => props.theme.palette.brand25}; + `} +`; + +const InputTokenWrapper = styled.div` + position: relative; + display: flex; + flex-direction: column; + justify-content: center; + align-items: left; + gap: 5px; +`; + +interface InputHintProps { + hasAction: boolean; +} + +export const InputHint = styled.small` + color: ${theme.palette.brand}; + font-size: 12px; + line-height: 18px; + font-weight: 700; + text-align: center; + width: max-content; + margin-top: 0.15rem; + + ${(props) => + props.hasAction && + css` + border-radius: 0.25em; + cursor: pointer; + `} +`; + +export const InputStyled = styled.input` + ${theme.typography.fonts.fontHeading}; + color: ${theme.palette.brand}; + background-color: transparent; + border: none; + outline: none; + width: 100%; + font-size: ${({ valueFontSize }) => + valueFontSize || '18px'}; // Use the prop or default to 18px + line-height: ${({ valueLineHeight }) => + valueLineHeight || '33px'}; // Use the prop or default to 33px + font-weight: 400; + letter-spacing: 0.05em; + text-align: right; + padding-left: 0.5rem; + + // remove input number controls ^ v + &[type='number']::-webkit-inner-spin-button, + &[type='number']::-webkit-outer-spin-button { + appearance: none; + margin: 0; + } + + appearance: textfield; +`; + +const Ticker = styled.h3` + font-size: 18px; + font-weight: 400; + line-height: 33px; + text-wrap: nowrap; + margin: 0; + color: ${theme.palette.brandLight}; +`; diff --git a/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/components/MobileTopNav.tsx b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/components/MobileTopNav.tsx new file mode 100644 index 000000000..e59a4b937 --- /dev/null +++ b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/components/MobileTopNav.tsx @@ -0,0 +1,88 @@ +import { useNavigate } from 'react-router-dom'; +import styled from 'styled-components'; + +interface NavCellProps { + selected: boolean; +} + +export type MenuNavItem = { + label: string; + path: string; + selected: boolean; +}; + +type TopNavProps = { + menuNavItems: { + label: string; + path: string; + selected: boolean; + }[]; + onSelectMenuNavItems: (mi: MenuNavItem) => void; +}; + +export const MobileTopNav = (props: TopNavProps) => { + const { menuNavItems, onSelectMenuNavItems } = props; + + const navigate = useNavigate(); + + return ( + + {menuNavItems.map((item) => ( + { + onSelectMenuNavItems(item); + navigate(item.path); + }} + > + {item.label} + + ))} + + ); +}; + +const TopNavContainer = styled.div` + display: flex; + flex-direction: row; + height: 64px; + align-items: left; + border-top: 1px solid ${({ theme }) => theme.palette.brand}; + padding: 8px 8px 4px 8px; + gap: 10px; + margin-top: -25px; + margin-left: -20px; + margin-right: -20px; + + /* Enable horizontal scrolling */ + overflow-x: auto; + white-space: nowrap; + + &::-webkit-scrollbar { + display: none; + } +`; + +const NavCell = styled.div` + display: flex; + align-items: center; + justify-content: center; + padding: 16px 12px; + min-width: 181px; + border: 1px solid; + border-image-source: linear-gradient( + 180deg, + #643c22 0%, + #95613f 52.5%, + #58321a 99.5% + ); + border-image-slice: 1; + + font-size: 16px; + line-height: 20px; + font-weight: 700; + cursor: pointer; + color: ${({ selected, theme }) => + selected ? theme.palette.brandLight : theme.palette.brand}; +`; diff --git a/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/components/MobileTopNavSecondary.tsx b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/components/MobileTopNavSecondary.tsx new file mode 100644 index 000000000..defe64daa --- /dev/null +++ b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/components/MobileTopNavSecondary.tsx @@ -0,0 +1,72 @@ +import { useNavigate } from 'react-router-dom'; +import styled from 'styled-components'; + +interface NavCellProps { + selected: boolean; +} + +export type MenuNavItem = { + label: string; + path: string; + selected: boolean; +}; + +type TopNavProps = { + menuNavItems: { + label: string; + path: string; + selected: boolean; + }[]; + onSelectMenuNavItems: (mi: MenuNavItem) => void; +}; + +export const MobileTopNavSecondary = (props: TopNavProps) => { + const { menuNavItems, onSelectMenuNavItems } = props; + + const navigate = useNavigate(); + + return ( + + {menuNavItems.map((item) => ( + { + onSelectMenuNavItems(item); + navigate(item.path); + }} + > + {item.label} + + ))} + + ); +}; + +const TopNavContainer = styled.div` + display: flex; + flex-direction: column; + width: 181px; + align-items: left; + margin-top: -40px; + margin-left: -20px; + padding-left: 8px; +`; + +const NavCell = styled.div` + display: flex; + align-items: center; + padding: 10px 16px; + min-width: 181px; + + color: ${({ selected, theme }) => + selected ? theme.palette.brandLight : theme.palette.brand}; + background: ${({ selected }) => + selected + ? 'linear-gradient(180deg, #353535 45.25%, #101010 81.46%, #0B0A0A 87.55%)' + : 'linear-gradient(180deg, #5E402C 0%, #0C0B0B 100%)'}; + font-size: 14px; + line-height: 18px; + font-weight: 700; + cursor: pointer; +`; diff --git a/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/components/PaginationControl/PageRangeSelector.tsx b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/components/PaginationControl/PageRangeSelector.tsx new file mode 100644 index 000000000..a5106ee2f --- /dev/null +++ b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/components/PaginationControl/PageRangeSelector.tsx @@ -0,0 +1,50 @@ +import { Dispatch, SetStateAction } from 'react'; +import { useRangePagination } from 'hooks/use-range-pagination'; +import { PageLink } from '.'; +import styled from 'styled-components'; + +type Props = { + currentPage: number; + setCurrentPage: Dispatch>; + totalPages: number; +}; + +export const PageRangeSelector = (props: Props) => { + const { setCurrentPage, totalPages, currentPage } = props; + + const paginationRange = useRangePagination({ + currentPage, + totalPages, + }); + + if (!paginationRange) return null; + + if (currentPage === 0 || paginationRange.length < 2) { + return null; + } + + return ( + <> + {paginationRange.map((pageNumber) => { + if (pageNumber === -1) + return ...; + return ( + setCurrentPage(pageNumber)} + selected={currentPage === pageNumber} + > + {pageNumber} + + ); + })} + + ); +}; + +const DotsContainer = styled.div` + { + margin: 2px 5px; + color: ${({ theme }) => theme.palette.brand}; + } +`; diff --git a/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/components/PaginationControl/index.tsx b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/components/PaginationControl/index.tsx new file mode 100644 index 000000000..ae25d47b3 --- /dev/null +++ b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/components/PaginationControl/index.tsx @@ -0,0 +1,99 @@ +import { Dispatch, SetStateAction } from 'react'; +import styled from 'styled-components'; +import { PageRangeSelector } from './PageRangeSelector'; +import lastPage from 'assets/icons/last_page.svg?react'; +import firstPage from 'assets/icons/first_page.svg?react'; +import left from 'assets/icons/chevron_left.svg?react'; +import right from 'assets/icons/chevron_right.svg?react'; + +type PaginationControlProps = { + currentPage: number; + totalPages: number; + setCurrentPage: Dispatch>; +}; + +export const PaginationControl = (props: PaginationControlProps) => { + const { totalPages, currentPage, setCurrentPage } = props; + + return ( + + + setCurrentPage((prev) => prev - 1)} + disabled={currentPage === 1} + > + + + setCurrentPage((prev) => prev + 1)} + disabled={currentPage === totalPages} + > + + + setCurrentPage(1)} disabled={currentPage === 1}> + + + setCurrentPage(totalPages)} + disabled={currentPage === totalPages} + > + + + + ); +}; + +const PaginationContainer = styled.div` + display: flex; + justify-content: flex-end; + text-align: right; + align-items: center; +`; + +type PageLinkProps = { + selected?: boolean; + disabled?: boolean; +}; + +export const PageLink = styled.button` + margin: 0 5px; + color: ${({ selected, disabled, theme }) => + disabled + ? theme.palette.brand50 + : selected + ? theme.palette.brandLight + : theme.palette.brand}; + font-size: 16px; + font-weight: 700; + line-height: 19px; + border: none; + padding: 0; + cursor: ${({ disabled }) => (disabled ? 'not-allowed' : 'pointer')}; + background: none; + box-shadow: none; + border-radius: 0px; +`; + +const LeftPageIcon = styled(left)` + width: 24px; + height: 24px; +`; + +const RightPageIcon = styled(right)` + width: 24px; + height: 24px; +`; + +const FirstPageIcon = styled(firstPage)` + width: 24px; + height: 24px; +`; + +const LastPageIcon = styled(lastPage)` + width: 24px; + height: 24px; +`; diff --git a/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/components/Popover.tsx b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/components/Popover.tsx new file mode 100644 index 000000000..0b7c6f1be --- /dev/null +++ b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/components/Popover.tsx @@ -0,0 +1,99 @@ +import { useRef, FC, ReactNode, useEffect } from 'react'; +import styled from 'styled-components'; +import { backgroundImage, buttonResets } from 'styles/mixins'; +import { useOutsideClick } from 'hooks/use-outside-click'; +import close from 'assets/icons/close.svg'; + +interface Props { + onClose: () => void; + isOpen: boolean; + closeOnClickOutside?: boolean; + closeOnEscape?: boolean; + showCloseButton?: boolean; + header?: ReactNode; + children?: React.ReactNode; +} + +export const Popover: FC = ({ + onClose, + isOpen, + closeOnClickOutside = false, + showCloseButton = true, + closeOnEscape = false, + children, + header, +}) => { + const ref = useRef(null); + + useOutsideClick(ref, () => { + if (!closeOnClickOutside) return; + onClose(); + }); + + // Close modal on escape + useEffect(() => { + if (!closeOnEscape || !isOpen) return; + const onEscape = (evt: KeyboardEvent) => { + if (evt.key === 'Escape') onClose(); + }; + window.addEventListener('keyup', onEscape); + return () => window.removeEventListener('keyup', onEscape); + }, [closeOnEscape, isOpen]); + + return ( + <> + {isOpen && } + + {header &&
{header}
} + {showCloseButton && onClose()} />} + {children} +
+ + ); +}; + +const CloseIcon = styled.button` + ${backgroundImage(close)} + ${buttonResets} + width: 24px; + height: 24px; + position: absolute; + right: 2rem; + top: 26.5px; +`; + +const Header = styled.h4` + font-size: 1.5rem; + text-align: center; + color: ${({ theme }) => theme.palette.brandLight}; + background: + margin-top: 0; + margin-bottom: 1rem; +`; + +const Wrapper = styled.div<{ isOpen: boolean }>` + display: ${({ isOpen }) => (isOpen ? 'flex' : 'none')}; + background: ${({ theme }) => theme.palette.black}; + position: fixed; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + z-index: 10; + padding-bottom: 32px; + flex-direction: column; + // height: 707px; + box-shadow: 0 0 4rem rgba(0, 0, 0, 0.8); + border-radius: 10px; + border: 1px solid ${({ theme }) => theme.palette.brand}; + gap: 10px; +`; + +const Dimmer = styled.div` + background: rgba(0, 0, 0, 0.4); + position: fixed; + top: 0; + left: 0; + height: 100%; + width: 100%; + z-index: 9; +`; diff --git a/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/components/RoundCheckBox.tsx b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/components/RoundCheckBox.tsx new file mode 100644 index 000000000..4107e7047 --- /dev/null +++ b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/components/RoundCheckBox.tsx @@ -0,0 +1,90 @@ +import { useState } from 'react'; +import styled from 'styled-components'; + +interface CustomCheckboxProps { + children: React.ReactNode; + onToggle: (checked: boolean) => void; + disabled?: boolean; +} + +const RoundCheckbox = ({ + children, + onToggle, + disabled = false, +}: CustomCheckboxProps) => { + const [isChecked, setIsChecked] = useState(false); + + const handleToggle = () => { + if (disabled) return; + setIsChecked(!isChecked); + onToggle(!isChecked); + }; + + return ( + + {}} + disabled={disabled} + /> + + + + + + + + ); +}; + +const CheckboxContainer = styled.div<{ disabled?: boolean }>` + display: flex; + align-items: center; + gap: 8px; + cursor: ${(props) => (props.disabled ? 'not-allowed' : 'pointer')}; + opacity: ${(props) => (props.disabled ? 0.5 : 1)}; +`; + +const HiddenCheckbox = styled.input` + border: 0; + clip: rect(0 0 0 0); + clippath: inset(50%); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + white-space: nowrap; + width: 1px; +`; + +const StyledCheckbox = styled.div<{ checked: boolean; disabled?: boolean }>` + display: inline-block; + width: 16px; + height: 16px; + background: ${(props) => + props.checked ? props.theme.palette.brand : 'transparent'}; + border: 2px solid ${(props) => props.theme.palette.brand}; + border-radius: 50%; + transition: all 150ms; + opacity: ${(props) => (props.disabled ? 0.5 : 1)}; + + svg { + visibility: ${(props) => (props.checked ? 'visible' : 'hidden')}; + } +`; + +const Icon = styled.svg` + fill: none; + stroke: white; + stroke-width: 2px; +`; + +const Label = styled.span<{ disabled?: boolean }>` + color: ${(props) => props.theme.palette.brandLight}; + opacity: ${(props) => (props.disabled ? 0.5 : 1)}; +`; + +export default RoundCheckbox; diff --git a/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/components/TopNav.tsx b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/components/TopNav.tsx new file mode 100644 index 000000000..9b9fb75dc --- /dev/null +++ b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/components/TopNav.tsx @@ -0,0 +1,147 @@ +import { useNavigate } from 'react-router-dom'; +import styled from 'styled-components'; +import selector from 'assets/icons/selector.svg?react'; + +interface TopNavContainerProps { + height?: string; + borderButtomGradient?: string; + borderBottomWidth?: string; + backgroundColor?: string; +} + +interface NavCellProps { + selected: boolean; + fontWeight?: number; + borderVerticalStyle?: string; +} + +export type MenuNavItem = { + label: string; + path: string; + selected: boolean; +}; + +type TopNavProps = { + menuNavItems: { + label: string; + path: string; + selected: boolean; + }[]; + onSelectMenuNavItems: (mi: MenuNavItem) => void; + showSelector?: boolean; + height?: string; + fontWeight?: number; + borderButtomGradient?: string; + borderVerticalStyle?: string; + borderBottomWidth?: string; + backgroundColor?: string; +}; + +export const TopNav = (props: TopNavProps) => { + const { + menuNavItems, + onSelectMenuNavItems, + showSelector, + height, + fontWeight, + borderButtomGradient, + borderVerticalStyle, + borderBottomWidth, + backgroundColor, + } = props; + + const navigate = useNavigate(); + + return ( + + {menuNavItems.map((item) => ( + { + onSelectMenuNavItems(item); + navigate(item.path); + }} + fontWeight={fontWeight} + borderVerticalStyle={borderVerticalStyle} + > + {item.label} + {item.selected && showSelector && ( + + + + )} + + ))} + + ); +}; + +const TopNavContainer = styled.div` + display: flex; + flex-direction: row; + height: ${({ height }) => height || '78px'}; + align-items: left; + border-bottom: ${({ borderBottomWidth }) => borderBottomWidth || '1px'} solid; + border-image-source: ${({ borderButtomGradient }) => + borderButtomGradient || + 'linear-gradient(90deg, #58321A 20%, #95613F 84.5%)'}; + border-image-slice: 1; + padding: 0px 90px; + margin-top: -40px; + margin-left: -120px; + margin-right: -120px; + background: ${({ backgroundColor, theme }) => + backgroundColor || `${theme.palette.black}4C`}; +`; + +const NavCell = styled.div` + display: flex; + align-items: center; + justify-content: center; + padding: 10px 20px; + min-width: 200px; + border-right: ${({ borderVerticalStyle }) => + borderVerticalStyle ? `${borderVerticalStyle} solid` : '1px solid'}; + border-image-source: ${({ borderVerticalStyle }) => + borderVerticalStyle + ? 'linear-gradient(180deg, #643C22 0%, #95613F 52.5%, #58321A 99.5%)' + : 'linear-gradient(180deg, #643C22 0%, #95613F 52.5%, #58321A 99.5%)'}; + border-image-slice: 1; + &:first-child { + border-left: ${({ borderVerticalStyle }) => + borderVerticalStyle ? `${borderVerticalStyle} solid` : '1px solid'}; + border-image-source: ${({ borderVerticalStyle }) => + borderVerticalStyle + ? 'linear-gradient(180deg, #643C22 0%, #95613F 52.5%, #58321A 99.5%)' + : 'linear-gradient(180deg, #643C22 0%, #95613F 52.5%, #58321A 99.5%)'}; + } + font-size: 16px; + line-height: 20px; + font-weight: ${({ fontWeight }) => fontWeight || 700}; + height: 100%; + cursor: pointer; + color: ${({ selected, theme }) => + selected ? theme.palette.brandLight : theme.palette.brand}; + position: relative; + z-index: 2; +`; + +const SelectorWrapper = styled.div<{ selected: boolean }>` + position: absolute; + bottom: -55%; + left: 45%; // make something to be sure it,s in the middle + width: 100%; + z-index: 3; + pointer-events: none; +`; + +const Selector = styled(selector)` + // width: 19px; + // height: 24px; +`; diff --git a/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/index.tsx b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/index.tsx new file mode 100644 index 000000000..a10908246 --- /dev/null +++ b/apps/dapp/src/components/Pages/Core/DappPages/SpiceBazaar/index.tsx @@ -0,0 +1,272 @@ +import styled from 'styled-components'; +import { useNavigate } from 'react-router-dom'; +import linkSvg from 'assets/icons/link.svg?react'; +import templeDaoLogo from 'assets/images/temple-dao-logo.svg?react'; +import spiceBazaar from 'assets/images/spice-bazaar.svg?react'; +import { Button } from 'components/Button/Button'; +import spice1 from 'assets/images/spice1.svg?react'; +import spice2 from 'assets/images/spice2.svg?react'; +import spice3 from 'assets/images/spice3.svg?react'; +import spice4 from 'assets/images/spice4.svg?react'; +import spice5 from 'assets/images/spice-all-spices.svg?react'; +import * as breakpoints from 'styles/breakpoints'; +import { useMediaQuery } from 'react-responsive'; +import { queryPhone } from 'styles/breakpoints'; + +export const SpiceBazaarPage = () => { + const isPhoneOrAbove = useMediaQuery({ + query: queryPhone, + }); + const navigate = useNavigate(); + return ( + + {isPhoneOrAbove && ( + + + + + + + + )} + + + + Spice Bazaar + <LinkIcon /> + + {isPhoneOrAbove ? ( + + Welcome to the Spice Bazaar,
+ a marketplace where you can
+ earn Temple Gold and spend
+ them to acquire valuable
+ tokens from the Treasury.
+
+ ) : ( + + + Welcome to the Spice Bazaar,
+ a marketplace where you can
+ earn Temple Gold and spend
+ them to acquire valuable
+ tokens from the Treasury.
+
+
+ )} +
+ + + navigate('earn')}> + EARN TEMPLE GOLD + + navigate('bid')}> + BID TEMPLE GOLD + + + + + +
+
+ ); +}; + +const PageContainer = styled.div` + display: flex; + flex-direction: column; + position: relative; + overflow: hidden; + gap: 60px; + margin-top: -40px; + + ${breakpoints.phoneAndAbove(` + margin-bottom: -80px; + margin-right: -120px; + margin-left: -120px; + `)} +`; + +const BackgroundContainer = styled.div` + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 0; + overflow: hidden; +`; + +const MainContainer = styled.div` + position: relative; + display: flex; + flex-direction: column; + padding: 20px; + gap: 20px; + z-index: 1; + overflow: hidden; + + ${breakpoints.phoneAndAbove(` + flex-direction: row; + align-self: center; + width: 1200px; + height: 706px; + margin-top: 110px; + padding: 0px; + gap: 40px; + `)} +`; + +const LeftContainer = styled.div` + display: flex; + flex-direction: column; + gap: 20px; + + ${breakpoints.phoneAndAbove(` + padding: 40px 80px 80px 80px; + `)} +`; + +const Title = styled.h2` + display: flex; + align-items: center; + font-size: 36px; + font-weight: 400; + text-align: center; + line-height: 67px; + color: ${({ theme }) => theme.palette.brandLight}; + gap: 15px; + margin: 0px; +`; + +const LinkIcon = styled(linkSvg)` + fill: ${({ theme }) => theme.palette.brand}; + cursor: pointer; +`; + +const Text = styled.div` + font-size: 18px; + line-height: 22px; + font-weight: 700; + color: ${({ theme }) => theme.palette.brand}; +`; + +const TextMobileContainer = styled.div` + display: flex; + flex-direction: column; + gap: 20px; +`; + +const TextMobile = styled.div` + font-size: 16px; + line-height: 19px; + font-weight: 700; + color: ${({ theme }) => theme.palette.brand}; +`; + +const RightContainer = styled.div` + display: flex; + flex-direction: column; + align-items: center; +`; + +const BackgroundImage = styled(spiceBazaar)` + z-index: 2; + width: 290px; + height: 300px; + top: 20%; + + ${breakpoints.phoneAndAbove(` + width: 682px; + height: 707px; + `)} +`; + +const Logo = styled(templeDaoLogo)` + width: 109px; + height: 104px; + position: absolute; + top: 71%; + left: 33%; + z-index: 3; + + ${breakpoints.phoneAndAbove(` + top: 22%; + left: 57%; + width: 180px; + height: 170px; + `)} +`; + +const ButtoonsContainer = styled.div` + background: linear-gradient( + 90deg, + rgba(196, 196, 196, 0) 0.49%, + rgba(89, 89, 89, 0.48) 50.04%, + rgba(196, 196, 196, 0) 100% + ); + display: flex; + flex-direction: column; + align-items: center; + margin-top: 20px; + margin-bottom: 20px; + gap: 12px; + height: 100%; + width: auto; + + ${breakpoints.phoneAndAbove(` + padding: 0px 10px 0px 10px; + position: absolute; + top: 49%; + left: 53%; + z-index: 4; + height: auto; + `)} +`; + +const TradeButton = styled(Button)` + padding: 10px 20px 10px 20px; + min-width: 205px; + width: ${(props) => props.width || 'min-content'}; + height: min-content; + background: ${({ theme }) => theme.palette.gradients.dark}; + border: 1px solid ${({ theme }) => theme.palette.brandDark}; + box-shadow: 0px 0px 20px rgba(222, 92, 6, 0.4); + border-radius: 10px; + font-size: 16px; + line-height: 19px; + text-transform: uppercase; + color: ${({ theme }) => theme.palette.brandLight}; + whitespace: 'nowrap'; + margin: 0px; +`; + +const Spice1 = styled(spice1)` + position: absolute; + bottom: 0; + left: 0; +`; + +const Spice2 = styled(spice2)` + position: absolute; + bottom: 0; + left: 17%; +`; + +const Spice3 = styled(spice3)` + position: absolute; + bottom: 5%; + left: 13%; +`; + +const Spice4 = styled(spice4)` + position: absolute; + bottom: 0; + right: 0px; +`; + +const Spice5 = styled(spice5)` + position: absolute; + top: 0; + right: 0; +`; diff --git a/apps/dapp/src/components/Pages/Core/DappPages/TradePage.tsx b/apps/dapp/src/components/Pages/Core/DappPages/TradePage.tsx index f71529cb5..34d7ffdfa 100644 --- a/apps/dapp/src/components/Pages/Core/DappPages/TradePage.tsx +++ b/apps/dapp/src/components/Pages/Core/DappPages/TradePage.tsx @@ -1,44 +1,14 @@ import styled from 'styled-components'; -import { TradeWidget } from './Trade/TradeWidget'; -import { useConnectWallet } from '@web3-onboard/react'; -import { useWallet } from 'providers/WalletProvider'; -import { TradeButton } from '../NewUI/Home'; +import { Trade } from '../NewUI/TradeNew'; export const TradePage = () => { - const [{}, connect] = useConnectWallet(); - const { wallet } = useWallet(); - return ( - Trade - {wallet ? ( - - ) : ( - { - connect(); - }} - style={{ whiteSpace: 'nowrap' }} - > - Connect Wallet - - )} + ); }; -const HeaderText = styled.div` - height: 32px; - font-size: 36px; - line-height: 42px; - display: flex; - align-items: center; - text-align: center; - color: #ffdec9; - margin-top: 10px; - margin-bottom: 40px; -`; - const TradeContainer = styled.div` display: flex; flex-direction: column; diff --git a/apps/dapp/src/components/Pages/Core/NewUI/Home.tsx b/apps/dapp/src/components/Pages/Core/NewUI/Home.tsx index 121c5972d..1de33ebf5 100644 --- a/apps/dapp/src/components/Pages/Core/NewUI/Home.tsx +++ b/apps/dapp/src/components/Pages/Core/NewUI/Home.tsx @@ -17,7 +17,7 @@ import { TemplePriceChart } from './PriceChart'; import { RAMOSMetrics } from './RAMOSMetrics'; import { Button } from 'components/Button/Button'; import { useEffect, useState } from 'react'; -import { queryRamosData, queryTrvData, subgraphQuery } from 'utils/subgraph'; +import { fetchGenericSubgraph } from 'utils/subgraph'; import env from 'constants/env'; interface Metrics { @@ -105,14 +105,23 @@ const Home = ({ tlc }: { tlc?: boolean }) => { useEffect(() => { const fetchMetrics = async () => { - const treasuryData = await subgraphQuery( + const { data: treasuryData } = await fetchGenericSubgraph( env.subgraph.templeV2Balances, - queryTrvData() + `{ + treasuryReservesVaults { + principalUSD + benchmarkedEquityUSD + treasuryPriceIndex + } + }` ); - - const ramosData = await subgraphQuery( + const { data: ramosData } = await fetchGenericSubgraph( env.subgraph.ramos, - queryRamosData() + `{ + metrics { + spotPrice + } + }` ); const treasuryMetrics = treasuryData.treasuryReservesVaults[0]; diff --git a/apps/dapp/src/components/Vault/utils.ts b/apps/dapp/src/components/Vault/utils.ts index 8e13f0f0f..3e087aea0 100644 --- a/apps/dapp/src/components/Vault/utils.ts +++ b/apps/dapp/src/components/Vault/utils.ts @@ -287,5 +287,6 @@ export const formatJoiningFee = ( export const getTokenInfo = (symbol: TICKER_SYMBOL): Token => { const tokenInFormat = symbol.toLowerCase().replace('$', '') as keyof Tokens; const tokenInfo = env.tokens[tokenInFormat]; + console.log('---- tokenInfo: ', tokenInfo); return tokenInfo; }; diff --git a/apps/dapp/src/constants/env/local.tsx b/apps/dapp/src/constants/env/local.tsx index a27828d45..89b175cc2 100644 --- a/apps/dapp/src/constants/env/local.tsx +++ b/apps/dapp/src/constants/env/local.tsx @@ -1,16 +1,13 @@ import { ADDRESS_ZERO } from 'utils/bigNumber'; import { Environment } from './types'; -const ENV_VARS = import.meta.env; -const BALANCER_SUBGRAPH_API_KEY = ENV_VARS.VITE_BALANCER_SUBGRAPH_API_KEY; -const ENABLE_SUBGRAPH_LOGS = ENV_VARS.VITE_ENABLE_SUBGRAPH_LOGS === 'true'; +const BALANCER_SUBGRAPH_API_KEY = import.meta.env + .VITE_BALANCER_SUBGRAPH_API_KEY; const env: Environment = { alchemyId: '-nNWThz_YpX1cGffGiz-lbSMu7dmp4GK', rpcUrl: 'https://rpc.ankr.com/eth', backendUrl: 'http://localhost:3001', - tradeTokenListUrl: - 'https://sf294otxgnbicood.public.blob.vercel-storage.com/testnet-tokens-acdWvsxlYFCXUEjNZmcxd4DRB4fXAb.json', contracts: { balancerVault: '', farmingWallet: '', @@ -29,6 +26,7 @@ const env: Environment = { olympus: '', otcOffer: '', temple: '0x5FbDB2315678afecb367f032d93F642f64180aa3', + templegold: '', templeStaking: '0x2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6', templeV2FraxPair: '', templeV2Router: '', @@ -53,6 +51,10 @@ const env: Environment = { }, daiCircuitBreaker: '', templeCircuitBreaker: '', + spiceBazaar: { + templeGoldStaking: '', + daiGoldAuction: '', + }, }, infuraId: '4cd22916292d4fb6be156454978c326b', subgraph: { @@ -75,6 +77,11 @@ const env: Environment = { }, etherscan: 'https://sepolia.etherscan.io', tokens: { + tgld: { + name: 'Temple Gold', + address: '', + decimals: 18, + }, frax: { name: 'Frax', address: '', @@ -143,7 +150,6 @@ const env: Environment = { // address: '0x5CE28cAE5aAb002DcBc076d5A551A473a7C9dF89', // }, ], - enableSubgraphLogs: ENABLE_SUBGRAPH_LOGS, }; export default env; diff --git a/apps/dapp/src/constants/env/preview.tsx b/apps/dapp/src/constants/env/preview.tsx index fdfa72922..e57b18f77 100644 --- a/apps/dapp/src/constants/env/preview.tsx +++ b/apps/dapp/src/constants/env/preview.tsx @@ -1,16 +1,13 @@ import { ADDRESS_ZERO } from 'utils/bigNumber'; import { Environment } from './types'; -const ENV_VARS = import.meta.env; -const BALANCER_SUBGRAPH_API_KEY = ENV_VARS.VITE_BALANCER_SUBGRAPH_API_KEY; -const ENABLE_SUBGRAPH_LOGS = ENV_VARS.VITE_ENABLE_SUBGRAPH_LOGS === 'true'; +const BALANCER_SUBGRAPH_API_KEY = import.meta.env + .VITE_BALANCER_SUBGRAPH_API_KEY; const env: Environment = { alchemyId: 'AorwfDdHDsEjIX4HPwS70zkVjWqjv5vZ', rpcUrl: 'https://rpc.ankr.com/eth', backendUrl: 'https://backend-stage.templedao.link', - tradeTokenListUrl: - 'https://sf294otxgnbicood.public.blob.vercel-storage.com/testnet-tokens-BCYU6hCLdzUdj1TvvTOcw5ux8Wxmhj.json', contracts: { balancerVault: '', exitQueue: '', @@ -19,7 +16,7 @@ const env: Environment = { frax: '', usdc: '', usdt: '', - dai: '0x33FA9618365F67c5345066d5Cfd7f3A2f183599A', + dai: '0xBe9162230D9e637218D74C7f41f62ef2385fEe64', weth: '', frax3CrvFarming: '', frax3CrvFarmingRewards: '', @@ -28,7 +25,8 @@ const env: Environment = { ogTemple: '', olympus: '0xf7f739Bb945880aD0398122069Fd3beC282c6621', otcOffer: '0x09fdf85893c1277bdc9ef1be2acdf29ee5e19771', - temple: '0x64a925B0fA211c44337148C0807f959Bd44b0B67', + temple: '0x98c5e61b1b3731a1f379e8770861164d23118cdc', + templegold: '0x2ae6318e34bb97ae3755afce75559452aa223a5d', templeStaking: '', templeV2FraxPair: '', templeV2Router: '', @@ -53,6 +51,10 @@ const env: Environment = { }, daiCircuitBreaker: '0x30AC664062f58b6E4DF187713a2352385633B739', templeCircuitBreaker: '0x8f783c4A3d90712A794d5660b632AC67611852aF', + spiceBazaar: { + templeGoldStaking: '0xdbDAc0FCA9cF8CA2F2Ef718775f0F265f581808F', + daiGoldAuction: '0x8d3671d794d511Bb0E3D28e260F8E2233C0653aB', + }, }, subgraph: { templeCore: @@ -87,6 +89,12 @@ const env: Environment = { ascendQuote: 10_000, }, tokens: { + tgld: { + name: 'Temple Gold', + address: '0x2ae6318e34bb97ae3755AFcE75559452aA223A5D', + decimals: 18, + symbol: 'TGLD', + }, frax: { name: 'Frax', address: '0x73651AD693531F9937528009cC204a4d9b696a68', @@ -95,7 +103,7 @@ const env: Environment = { }, temple: { name: 'Temple', - address: '0x64a925B0fA211c44337148C0807f959Bd44b0B67', + address: '0x98c5e61b1b3731a1f379e8770861164d23118cdc', decimals: 18, symbol: 'TEMPLE', }, @@ -134,7 +142,7 @@ const env: Environment = { }, dai: { name: 'DAI', - address: '0x33FA9618365F67c5345066d5Cfd7f3A2f183599A', + address: '0xBe9162230D9e637218D74C7f41f62ef2385fEe64', decimals: 18, symbol: 'DAI', }, @@ -155,7 +163,6 @@ const env: Environment = { // address: '0x5CE28cAE5aAb002DcBc076d5A551A473a7C9dF89', // }, ], - enableSubgraphLogs: ENABLE_SUBGRAPH_LOGS, }; export default env; diff --git a/apps/dapp/src/constants/env/production.tsx b/apps/dapp/src/constants/env/production.tsx index 5cc0534e0..8bd5f7cae 100644 --- a/apps/dapp/src/constants/env/production.tsx +++ b/apps/dapp/src/constants/env/production.tsx @@ -1,16 +1,13 @@ import { ADDRESS_ZERO } from 'utils/bigNumber'; import { Environment } from './types'; -const ENV_VARS = import.meta.env; -const BALANCER_SUBGRAPH_API_KEY = ENV_VARS.VITE_BALANCER_SUBGRAPH_API_KEY; -const ENABLE_SUBGRAPH_LOGS = ENV_VARS.VITE_ENABLE_SUBGRAPH_LOGS === 'true'; +const BALANCER_SUBGRAPH_API_KEY = import.meta.env + .VITE_BALANCER_SUBGRAPH_API_KEY; const env: Environment = { alchemyId: 'XiIZxWykHU5AOFBwxKgxseXWN984Mp8F', rpcUrl: 'https://rpc.ankr.com/eth', backendUrl: 'https://backend.templedao.link', - tradeTokenListUrl: - 'https://sf294otxgnbicood.public.blob.vercel-storage.com/prod-tokens-ycNgmUSdpPt1kIoael5y4t81s2jtZc.json', contracts: { balancerVault: '0xBA12222222228d8Ba445958a75a0704d566BF2C8', exitQueue: '0xC6d556C34a179a224AEBE42e77c6e76594148B97', @@ -168,6 +165,7 @@ const env: Environment = { }, ], temple: '0x470ebf5f030ed85fc1ed4c2d36b9dd02e77cf1b7', + templegold: '', templeStaking: '0x4D14b24EDb751221B3Ff08BBB8bd91D4b1c8bc77', templeV2FraxPair: '0x6021444f1706f15465bEe85463BCc7d7cC17Fc03', templeV2Router: '0x98257C876ACe5009e7B97843F8c71b3AE795c71E', @@ -193,6 +191,10 @@ const env: Environment = { }, daiCircuitBreaker: '0x02607d6bc3146bb3d3022e991ef54f545988fb7b', templeCircuitBreaker: '0x0745D453A19DfEAd0e5fd350a231D878F5c71b8D', + spiceBazaar: { + templeGoldStaking: '', + daiGoldAuction: '', + }, }, gas: { swapFraxForTemple: 300000, @@ -212,6 +214,11 @@ const env: Environment = { ascendQuote: 10_000, }, tokens: { + tgld: { + name: 'Temple Gold', + address: '', + decimals: 18, + }, frax: { name: 'Frax', address: '0x853d955acef822db058eb8505911ed77f175b99e', @@ -305,7 +312,6 @@ const env: Environment = { // address: '0x9f90430179D9b67341BFa50559bc7B8E35629f1b', // }, ], - enableSubgraphLogs: ENABLE_SUBGRAPH_LOGS, }; export default env; diff --git a/apps/dapp/src/constants/env/types.ts b/apps/dapp/src/constants/env/types.ts index ea8dc6eab..a32210469 100644 --- a/apps/dapp/src/constants/env/types.ts +++ b/apps/dapp/src/constants/env/types.ts @@ -34,6 +34,7 @@ interface Contracts { otcOffer: string; teamPayments?: { name: string; address: string }[]; temple: string; + templegold: string; templeStaking: string; templeV2FraxPair: string; templeV2Router: string; @@ -58,6 +59,12 @@ interface Contracts { balancerHelpers: string; daiCircuitBreaker: string; templeCircuitBreaker: string; + spiceBazaar: SpiceBazaar; +} + +interface SpiceBazaar { + templeGoldStaking: string; + daiGoldAuction: string; } interface Gas { @@ -78,10 +85,10 @@ export interface Token { address: string; decimals: number; symbol?: string; - logoURI?: string; } export interface Tokens { + tgld: Token; frax: Token; temple: Token; ogTemple: Token; @@ -107,7 +114,6 @@ export interface Environment { alchemyId: string; rpcUrl: string; backendUrl: string; - tradeTokenListUrl: string; contracts: Contracts; gas?: Gas; tokens: Tokens; @@ -125,5 +131,4 @@ export interface Environment { enableAscend: boolean; }; safes: SafeWallet[]; - enableSubgraphLogs: boolean; } diff --git a/apps/dapp/src/enums/ticker-symbol.ts b/apps/dapp/src/enums/ticker-symbol.ts index 481cce196..ec0fef1cc 100644 --- a/apps/dapp/src/enums/ticker-symbol.ts +++ b/apps/dapp/src/enums/ticker-symbol.ts @@ -2,6 +2,7 @@ export enum TICKER_SYMBOL { STABLE_TOKEN = 'FRAX', TEMPLE_TOKEN = 'TEMPLE', OG_TEMPLE_TOKEN = 'OGTEMPLE', + TEMPLE_GOLD_TOKEN = 'TGLD', FRAX = 'FRAX', ETH = 'ETH', USDC = 'USDC', diff --git a/apps/dapp/src/hooks/spicebazaar/use-spice-bazaar.tsx b/apps/dapp/src/hooks/spicebazaar/use-spice-bazaar.tsx new file mode 100644 index 000000000..a1ef6223b --- /dev/null +++ b/apps/dapp/src/hooks/spicebazaar/use-spice-bazaar.tsx @@ -0,0 +1,363 @@ +import { + DaiGoldAuction__factory, + ERC20__factory, + TempleGoldStaking__factory, +} from 'types/typechain'; + +import { useWallet } from 'providers/WalletProvider'; +import env from 'constants/env'; +import { useCallback, useState } from 'react'; +import { fromAtto, ZERO } from 'utils/bigNumber'; +import { useNotification } from 'providers/NotificationProvider'; +import { estimateAndMine } from 'utils/ethers'; +import { getBigNumberFromString, getTokenInfo } from 'components/Vault/utils'; +import { TICKER_SYMBOL } from 'enums/ticker-symbol'; +import { BigNumber } from 'ethers'; + +export type StakePageMetrics = { + stakedTemple: number; + totalEpochRewards: number; + yourStake: number; + yourRewards: number; +}; + +export type DaiGoldAuctionInfo = { + currentEpoch: number; + auctionLive: boolean; + totalAuctionTokenAmount: number; + auctionEndTime: number; + totalBidTokenAmount: number; + priceRatio: number; +}; + +export const useSpiceBazaar = () => { + const { wallet, signer, ensureAllowance, updateBalance } = useWallet(); + const { openNotification } = useNotification(); + + const [stakePageMetricsLoading, setStakePageMetricsLoading] = useState(false); + const [stakePageMetrics, setStakePageMetrics] = useState({ + stakedTemple: 0, + totalEpochRewards: 0, + yourStake: 0, + yourRewards: 0, + }); + + const [daiGoldAuctionInfoLoading, setDaiGoldAuctionInfoLoading] = + useState(false); + const [daiGoldAuctionInfo, setDaiGoldAuctionInfo] = + useState({ + currentEpoch: 0, + auctionLive: false, + totalAuctionTokenAmount: 0, + auctionEndTime: 0, + totalBidTokenAmount: 0, + priceRatio: 0, + }); + + const getStakedTemple = useCallback(async () => { + if (!wallet || !signer) { + console.debug('Missing wallet or signer when trying to use SpiceBazaar.'); + return; + } + + try { + const templeGoldStaking = new TempleGoldStaking__factory(signer).attach( + env.contracts.spiceBazaar.templeGoldStaking + ); + + const totalSupply = await templeGoldStaking.totalSupply(); + return fromAtto(totalSupply); + } catch (err) { + console.error('Error while getting staked temple', { + cause: err, + }); + return 0; + } + }, [wallet, signer]); + + const getTotalEpochRewards = useCallback(async () => { + if (!wallet || !signer) { + console.debug('Missing wallet or signer when trying to use SpiceBazaar.'); + return; + } + + // TODO: Implement, + // rewardData.rewardRate * rewardDuration?? + return 0; + }, [signer, wallet]); + + const getYourStake = useCallback(async () => { + if (!wallet || !signer) { + console.debug('Missing wallet or signer when trying to use SpiceBazaar.'); + return; + } + + const templeGoldStaking = new TempleGoldStaking__factory(signer).attach( + env.contracts.spiceBazaar.templeGoldStaking + ); + + try { + const balance = await templeGoldStaking.balanceOf(wallet); + return fromAtto(balance); + } catch (err) { + console.error('Error while getting your stake', { + cause: err, + }); + return 0; + } + }, [signer, wallet]); + + const getYourRewards = useCallback(async () => { + if (!wallet || !signer) { + console.debug('Missing wallet or signer when trying to use SpiceBazaar.'); + return; + } + + const templeGoldStaking = new TempleGoldStaking__factory(signer).attach( + env.contracts.spiceBazaar.templeGoldStaking + ); + + try { + const reward = await templeGoldStaking.earned(wallet); + return fromAtto(reward); + } catch (err) { + console.error('Error while getting your rewards', { + cause: err, + }); + return 0; + } + }, [signer, wallet]); + + const fetchStakePageMetrics = useCallback(async (): Promise => { + console.log('--- updating stake page metrics'); + setStakePageMetricsLoading(true); + + const allMetrics = await Promise.all([ + getStakedTemple(), + getTotalEpochRewards(), + getYourStake(), + getYourRewards(), + ]); + + setStakePageMetrics({ + stakedTemple: allMetrics[0] || 0, + totalEpochRewards: allMetrics[1] || 0, + yourStake: allMetrics[2] || 0, + yourRewards: allMetrics[3] || 0, + }); + + setStakePageMetricsLoading(false); + console.log('--- DONE updating stake page metrics'); + }, [getStakedTemple, getTotalEpochRewards, getYourRewards, getYourStake]); + + const stakeTemple = useCallback( + async (amount: string) => { + if (!wallet || !signer) { + console.debug( + 'Missing wallet or signer when trying to use SpiceBazaar.' + ); + return; + } + + try { + const templeAmount = getBigNumberFromString( + amount, + getTokenInfo(TICKER_SYMBOL.TEMPLE_TOKEN).decimals + ); + + const templeContract = new ERC20__factory(signer).attach( + env.contracts.temple + ); + + await ensureAllowance( + TICKER_SYMBOL.TEMPLE_TOKEN, + templeContract, + env.contracts.spiceBazaar.templeGoldStaking, + templeAmount + ); + + const templeGoldStaking = new TempleGoldStaking__factory(signer).attach( + env.contracts.spiceBazaar.templeGoldStaking + ); + + const populatedTransaction = + await templeGoldStaking.populateTransaction.stake(templeAmount); + const receipt = await estimateAndMine(signer, populatedTransaction); + + openNotification({ + title: `Staked ${amount} TEMPLE`, + hash: receipt.transactionHash, + }); + + fetchStakePageMetrics(); + updateBalance(); + } catch (err) { + console.error(err); + openNotification({ + title: 'Error staking TEMPLE', + hash: '', + }); + } + }, + [wallet, signer, ensureAllowance, openNotification, fetchStakePageMetrics] + ); + + const unstakeTemple = useCallback( + async (amount: string, claimRewards: boolean) => { + if (!wallet || !signer) { + console.debug( + 'Missing wallet or signer when trying to use SpiceBazaar.' + ); + return; + } + + const templeAmount = getBigNumberFromString( + amount, + getTokenInfo(TICKER_SYMBOL.TEMPLE_TOKEN).decimals + ); + + // TODO: Once on mainnet we need to ensure allowance + // await ensureAllowance( + // TICKER_SYMBOL.TEMPLE_TOKEN, + // env.contracts.spiceBazaar.tokens.temple, // I think that here should be the same obs like in stakeTemple + // env.contracts.spiceBazaar.templeGoldStaking, + // templeAmount + // ); + + const templeGoldStaking = new TempleGoldStaking__factory(signer).attach( + env.contracts.spiceBazaar.templeGoldStaking + ); + + const populatedTransaction = + await templeGoldStaking.populateTransaction.withdraw( + templeAmount, + claimRewards + ); + const receipt = await estimateAndMine(signer, populatedTransaction); + + openNotification({ + title: `Unstaked ${amount} TEMPLE`, + hash: receipt.transactionHash, + }); + + fetchStakePageMetrics(); + }, + [wallet, signer, openNotification, fetchStakePageMetrics] + ); + + const claimRewards = useCallback(async () => { + if (!wallet || !signer) { + console.debug('Missing wallet or signer when trying to use SpiceBazaar.'); + return; + } + + const templeGoldStaking = new TempleGoldStaking__factory(signer).attach( + env.contracts.spiceBazaar.templeGoldStaking + ); + + const populatedTransaction = + await templeGoldStaking.populateTransaction.getReward(wallet); + const receipt = await estimateAndMine(signer, populatedTransaction); + + openNotification({ + title: `Claimed your TGLD`, + hash: receipt.transactionHash, + }); + + fetchStakePageMetrics(); + }, [wallet, signer, openNotification, fetchStakePageMetrics]); + + const getCurrentEpoch = useCallback(async () => { + if (!signer) { + console.debug('Missing signer when trying to use SpiceBazaar.'); + return; + } + + const daiGoldAuction = new DaiGoldAuction__factory(signer).attach( + env.contracts.spiceBazaar.daiGoldAuction + ); + + return BigNumber.from(await daiGoldAuction.currentEpoch()); + }, [signer]); + + const getEpochInfo = useCallback( + async (epoch: number) => { + if (!signer) { + console.debug('Missing signer when trying to use SpiceBazaar.'); + return; + } + + const daiGoldAuction = new DaiGoldAuction__factory(signer).attach( + env.contracts.spiceBazaar.daiGoldAuction + ); + + return await daiGoldAuction.getEpochInfo(epoch); + }, + [signer] + ); + + const isAuctionLive = useCallback(async () => { + if (!signer) { + console.debug('Missing signer when trying to use SpiceBazaar.'); + return; + } + + const daiGoldAuction = new DaiGoldAuction__factory(signer).attach( + env.contracts.spiceBazaar.daiGoldAuction + ); + + return await daiGoldAuction.canDeposit(); + }, [signer]); + + const fetchDaiGoldAuctionInfo = useCallback(async () => { + if (!wallet || !signer) { + console.debug('Missing wallet or signer when trying to use SpiceBazaar.'); + return; + } + + setDaiGoldAuctionInfoLoading(true); + + const currentEpoch = await getCurrentEpoch(); + const epochInfo = await getEpochInfo(Number(currentEpoch)); + const auctionLive = await isAuctionLive(); + + if (!epochInfo) { + setDaiGoldAuctionInfoLoading(false); + return; + } + + setDaiGoldAuctionInfo({ + currentEpoch: Number(currentEpoch), + auctionLive: auctionLive || false, + totalAuctionTokenAmount: fromAtto(epochInfo.totalAuctionTokenAmount), + auctionEndTime: new Date(epochInfo.endTime.toNumber() * 1000).getTime(), + totalBidTokenAmount: fromAtto(epochInfo.totalBidTokenAmount), + priceRatio: fromAtto( + epochInfo.totalBidTokenAmount.div(epochInfo.totalAuctionTokenAmount) + ), + }); + + setDaiGoldAuctionInfoLoading(false); + }, [wallet, signer, getCurrentEpoch, getEpochInfo, isAuctionLive]); + + return { + stakePageMetrics: { + data: stakePageMetrics, + loading: stakePageMetricsLoading, + fetch: fetchStakePageMetrics, + }, + staking: { + stakeTemple, + unstakeTemple, + claimRewards, + }, + daiGoldAuctionInfo: { + data: daiGoldAuctionInfo, + loading: daiGoldAuctionInfoLoading, + fetch: fetchDaiGoldAuctionInfo, + }, + daiGoldAuctions: { + bid: async () => ({}), + }, + }; +}; diff --git a/apps/dapp/src/hooks/spicebazaar/use-unstake-time.tsx b/apps/dapp/src/hooks/spicebazaar/use-unstake-time.tsx new file mode 100644 index 000000000..b4d2c15cc --- /dev/null +++ b/apps/dapp/src/hooks/spicebazaar/use-unstake-time.tsx @@ -0,0 +1,87 @@ +import { useState, useEffect } from 'react'; +import { useSpiceBazaar } from 'providers/SpiceBazaarProvider'; + +type TimeRemaining = { + days: number; + hours: number; + minutes: number; + seconds: number; +}; + +export const useUnstakeTime = () => { + const [isLoading, setIsLoading] = useState(true); + const [unstakeTimeRemaining, setUnstakeTimeRemaining] = useState< + number | null + >(null); + const [countdown, setCountdown] = useState(null); + + const { + staking: { getUnstakeTime }, + } = useSpiceBazaar(); + + // Fetch unstake time on mount + useEffect(() => { + const fetchUnstakeTime = async () => { + setIsLoading(true); + try { + const time = await getUnstakeTime(); + setUnstakeTimeRemaining(time); + } finally { + setIsLoading(false); + } + }; + fetchUnstakeTime(); + }, [getUnstakeTime]); + + // Update countdown every second, but only if we have a valid unstakeTimeRemaining + useEffect(() => { + if (unstakeTimeRemaining === null) return; + + const now = Math.floor(Date.now() / 1000); + const diff = unstakeTimeRemaining - now; + + // If no time remaining, clear countdown and don't start interval + if (diff <= 0) { + setCountdown(null); + return; + } + + // Set initial countdown value + const updateCountdown = () => { + const now = Math.floor(Date.now() / 1000); + const diff = unstakeTimeRemaining - now; + + if (diff <= 0) { + setCountdown(null); + return false; // Return false to clear interval + } + + const days = Math.floor(diff / (24 * 60 * 60)); + const hours = Math.floor((diff % (24 * 60 * 60)) / (60 * 60)); + const minutes = Math.floor((diff % (60 * 60)) / 60); + const seconds = diff % 60; + + setCountdown({ days, hours, minutes, seconds }); + return true; // Return true to keep interval + }; + + // Set initial value + updateCountdown(); + + // Start interval + const timer = setInterval(() => { + const shouldContinue = updateCountdown(); + if (!shouldContinue) clearInterval(timer); + }, 1000); + + return () => clearInterval(timer); + }, [unstakeTimeRemaining]); + + const shouldShowCountdown = !isLoading && countdown !== null; + + return { + isLoading, + countdown, + shouldShowCountdown, + }; +}; diff --git a/apps/dapp/src/main.tsx b/apps/dapp/src/main.tsx index 2c57bac46..6a058788b 100644 --- a/apps/dapp/src/main.tsx +++ b/apps/dapp/src/main.tsx @@ -17,6 +17,20 @@ import { TradePage } from './components/Pages/Core/DappPages/TradePage'; import { BorrowPage } from 'components/Pages/Core/DappPages/Borrow'; import { LegacyPage } from 'components/Pages/Core/DappPages/LegacyPage'; import V2Layout from 'components/Layouts/V2Layout'; +import { OhmagePage } from 'components/Pages/Core/DappPages/OhmagePage'; +import { SpiceBazaarPage } from 'components/Pages/Core/DappPages/SpiceBazaar/index'; +import { SpiceBazaarTopNav } from 'components/Pages/Core/DappPages/SpiceBazaar/TopNav'; +import { Earn } from 'components/Pages/Core/DappPages/SpiceBazaar/Earn'; +import { StakeTemple } from 'components/Pages/Core/DappPages/SpiceBazaar/Earn/StakeTemple'; +import { Stake } from 'components/Pages/Core/DappPages/SpiceBazaar/Earn/StakeTemple/Stake'; +import { Unstake } from 'components/Pages/Core/DappPages/SpiceBazaar/Earn/StakeTemple/Unstake'; +import { Claim } from 'components/Pages/Core/DappPages/SpiceBazaar/Earn/StakeTemple/Claim'; +import { Auctions } from 'components/Pages/Core/DappPages/SpiceBazaar/Earn/Auctions'; +import { Bid } from 'components/Pages/Core/DappPages/SpiceBazaar/BidTGLD'; +import { MyActivityTGLD } from 'components/Pages/Core/DappPages/SpiceBazaar/MyActivity/BidsForTGLD'; +import { Analytics } from 'components/Pages/Core/DappPages/SpiceBazaar/Analytics'; +import { Details } from 'components/Pages/Core/DappPages/SpiceBazaar/BidTGLD/Details/Details'; +import { MyActivitySpice } from 'components/Pages/Core/DappPages/SpiceBazaar/MyActivity/BidsForSpice'; // Separate Chunks const TeamPayments = React.lazy(() => import('components/Pages/TeamPayments')); @@ -79,7 +93,29 @@ root.render( } /> } /> } /> + } /> } /> + } /> + }> + } /> + }> + } /> + } /> + } /> + + } /> + } /> + } /> + } + /> + } + /> + } /> + diff --git a/apps/dapp/src/providers/AppProvider.tsx b/apps/dapp/src/providers/AppProvider.tsx index ca9c48c69..8963e6b4c 100644 --- a/apps/dapp/src/providers/AppProvider.tsx +++ b/apps/dapp/src/providers/AppProvider.tsx @@ -12,6 +12,7 @@ import { Web3OnboardInitProvider } from 'components/Web3OnboardInitProvider'; import { WrongNetworkPopover } from 'components/Layouts/CoreLayout/WrongNetworkPopover'; import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; +import { SpiceBazaarProvider } from './SpiceBazaarProvider'; // eslint-disable-next-line @typescript-eslint/no-empty-interface interface AppProviderState {} @@ -36,7 +37,9 @@ export const AppProvider = (props: PropsWithChildren<{}>) => { - {props.children} + + {props.children} + diff --git a/apps/dapp/src/providers/SpiceBazaarProvider.tsx b/apps/dapp/src/providers/SpiceBazaarProvider.tsx new file mode 100644 index 000000000..2dc86b880 --- /dev/null +++ b/apps/dapp/src/providers/SpiceBazaarProvider.tsx @@ -0,0 +1,530 @@ +import { + createContext, + useContext, + useState, + PropsWithChildren, + useCallback, + useMemo, +} from 'react'; +import { + DaiGoldAuction__factory, + TempleGoldStaking__factory, + ERC20__factory, +} from 'types/typechain'; +import { useWallet } from 'providers/WalletProvider'; +import env from 'constants/env'; +import { fromAtto } from 'utils/bigNumber'; +import { useNotification } from 'providers/NotificationProvider'; +import { estimateAndMine } from 'utils/ethers'; +import { getBigNumberFromString, getTokenInfo } from 'components/Vault/utils'; +import { TICKER_SYMBOL } from 'enums/ticker-symbol'; +import { BigNumber } from 'ethers'; +import { asyncNoop } from 'utils/helpers'; + +export type StakePageMetrics = { + stakedTemple: number; + totalEpochRewards: number; + yourStake: number; + yourRewards: number; +}; + +export type DaiGoldAuctionInfo = { + currentEpoch: number; + auctionLive: boolean; + totalAuctionTokenAmount: number; + auctionEndTime: number; + totalBidTokenAmount: number; + priceRatio: number; +}; + +interface SpiceBazaarContextValue { + stakePageMetrics: { + data: StakePageMetrics; + loading: boolean; + fetch: () => Promise; + }; + staking: { + stakeTemple: (amount: string) => Promise; + unstakeTemple: (amount: string, claimRewards: boolean) => Promise; + claimRewards: () => Promise; + getUnstakeTime: () => Promise; + }; + daiGoldAuctionInfo: { + data: DaiGoldAuctionInfo; + loading: boolean; + fetch: () => Promise; + }; + daiGoldAuctions: { + bid: (amount: string) => Promise; + }; +} + +const INITIAL_STATE: SpiceBazaarContextValue = { + stakePageMetrics: { + data: { + stakedTemple: 0, + totalEpochRewards: 0, + yourStake: 0, + yourRewards: 0, + }, + loading: false, + fetch: asyncNoop, + }, + staking: { + stakeTemple: asyncNoop, + unstakeTemple: asyncNoop, + claimRewards: asyncNoop, + getUnstakeTime: async () => 0, + }, + daiGoldAuctionInfo: { + data: { + currentEpoch: 0, + auctionLive: false, + totalAuctionTokenAmount: 0, + auctionEndTime: 0, + totalBidTokenAmount: 0, + priceRatio: 0, + }, + loading: false, + fetch: asyncNoop, + }, + daiGoldAuctions: { + bid: asyncNoop, + }, +}; + +const SpiceBazaarContext = + createContext(INITIAL_STATE); + +export const SpiceBazaarProvider = ({ children }: PropsWithChildren) => { + const { wallet, signer, ensureAllowance, updateBalance } = useWallet(); + const { openNotification } = useNotification(); + + const [stakePageMetricsLoading, setStakePageMetricsLoading] = useState(false); + const [stakePageMetrics, setStakePageMetrics] = useState( + INITIAL_STATE.stakePageMetrics.data + ); + + const [daiGoldAuctionInfoLoading, setDaiGoldAuctionInfoLoading] = + useState(false); + const [daiGoldAuctionInfo, setDaiGoldAuctionInfo] = + useState(INITIAL_STATE.daiGoldAuctionInfo.data); + + const getStakedTemple = useCallback(async () => { + if (!wallet || !signer) { + console.debug('Missing wallet or signer when trying to use SpiceBazaar.'); + return; + } + + try { + const templeGoldStaking = new TempleGoldStaking__factory(signer).attach( + env.contracts.spiceBazaar.templeGoldStaking + ); + + const totalSupply = await templeGoldStaking.totalSupply(); + return fromAtto(totalSupply); + } catch (err) { + console.error('Error while getting staked temple', { + cause: err, + }); + return 0; + } + }, [wallet, signer]); + + const getTotalEpochRewards = useCallback(async () => { + if (!wallet || !signer) { + console.debug('Missing wallet or signer when trying to use SpiceBazaar.'); + return; + } + // TODO: Implement + return 0; + }, [wallet, signer]); + + const getYourStake = useCallback(async () => { + if (!wallet || !signer) { + console.debug('Missing wallet or signer when trying to use SpiceBazaar.'); + return; + } + + const templeGoldStaking = new TempleGoldStaking__factory(signer).attach( + env.contracts.spiceBazaar.templeGoldStaking + ); + + try { + const balance = await templeGoldStaking.balanceOf(wallet); + return fromAtto(balance); + } catch (err) { + console.error('Error while getting your stake', { + cause: err, + }); + return 0; + } + }, [wallet, signer]); + + const getYourRewards = useCallback(async () => { + if (!wallet || !signer) { + console.debug('Missing wallet or signer when trying to use SpiceBazaar.'); + return; + } + + const templeGoldStaking = new TempleGoldStaking__factory(signer).attach( + env.contracts.spiceBazaar.templeGoldStaking + ); + + try { + const reward = await templeGoldStaking.earned(wallet); + return fromAtto(reward); + } catch (err) { + console.error('Error while getting your rewards', { + cause: err, + }); + return 0; + } + }, [wallet, signer]); + + const fetchStakePageMetrics = useCallback(async () => { + setStakePageMetricsLoading(true); + + const allMetrics = await Promise.all([ + getStakedTemple(), + getTotalEpochRewards(), + getYourStake(), + getYourRewards(), + ]); + + setStakePageMetrics({ + stakedTemple: allMetrics[0] || 0, + totalEpochRewards: allMetrics[1] || 0, + yourStake: allMetrics[2] || 0, + yourRewards: allMetrics[3] || 0, + }); + + setStakePageMetricsLoading(false); + }, [getStakedTemple, getTotalEpochRewards, getYourStake, getYourRewards]); + + const stakeTemple = useCallback( + async (amount: string) => { + if (!wallet || !signer) { + console.debug( + 'Missing wallet or signer when trying to use SpiceBazaar.' + ); + return; + } + + try { + const templeAmount = getBigNumberFromString( + amount, + getTokenInfo(TICKER_SYMBOL.TEMPLE_TOKEN).decimals + ); + + const templeContract = new ERC20__factory(signer).attach( + env.contracts.temple + ); + + await ensureAllowance( + TICKER_SYMBOL.TEMPLE_TOKEN, + templeContract, + env.contracts.spiceBazaar.templeGoldStaking, + templeAmount, + true + ); + + const templeGoldStaking = new TempleGoldStaking__factory(signer).attach( + env.contracts.spiceBazaar.templeGoldStaking + ); + + const populatedTransaction = + await templeGoldStaking.populateTransaction.stake(templeAmount); + + const receipt = await estimateAndMine(signer, populatedTransaction); + + openNotification({ + title: `Staked ${amount} TEMPLE`, + hash: receipt.transactionHash, + }); + + fetchStakePageMetrics(); + updateBalance(); + } catch (err) { + console.error(err); + openNotification({ + title: 'Error staking TEMPLE', + hash: '', + }); + } + }, + [ + wallet, + signer, + ensureAllowance, + openNotification, + fetchStakePageMetrics, + updateBalance, + ] + ); + + const unstakeTemple = useCallback( + async (amount: string, claimRewards: boolean) => { + if (!wallet || !signer) { + console.debug( + 'Missing wallet or signer when trying to use SpiceBazaar.' + ); + return; + } + + const templeAmount = getBigNumberFromString( + amount, + getTokenInfo(TICKER_SYMBOL.TEMPLE_TOKEN).decimals + ); + + const templeGoldStaking = new TempleGoldStaking__factory(signer).attach( + env.contracts.spiceBazaar.templeGoldStaking + ); + + const populatedTransaction = + await templeGoldStaking.populateTransaction.withdraw( + templeAmount, + claimRewards + ); + const receipt = await estimateAndMine(signer, populatedTransaction); + + openNotification({ + title: `Unstaked ${amount} TEMPLE`, + hash: receipt.transactionHash, + }); + + fetchStakePageMetrics(); + }, + [wallet, signer, openNotification, fetchStakePageMetrics] + ); + + const claimRewards = useCallback(async () => { + if (!wallet || !signer) { + console.debug('Missing wallet or signer when trying to use SpiceBazaar.'); + return; + } + + const templeGoldStaking = new TempleGoldStaking__factory(signer).attach( + env.contracts.spiceBazaar.templeGoldStaking + ); + + const populatedTransaction = + await templeGoldStaking.populateTransaction.getReward(wallet); + const receipt = await estimateAndMine(signer, populatedTransaction); + + openNotification({ + title: `Claimed your TGLD`, + hash: receipt.transactionHash, + }); + + fetchStakePageMetrics(); + }, [wallet, signer, openNotification, fetchStakePageMetrics]); + + const getCurrentEpoch = useCallback(async () => { + if (!signer) { + console.debug('Missing signer when trying to use SpiceBazaar.'); + return; + } + + const daiGoldAuction = new DaiGoldAuction__factory(signer).attach( + env.contracts.spiceBazaar.daiGoldAuction + ); + + return BigNumber.from(await daiGoldAuction.currentEpoch()); + }, [signer]); + + const getEpochInfo = useCallback( + async (epoch: number) => { + if (!signer) { + console.debug('Missing signer when trying to use SpiceBazaar.'); + return; + } + + const daiGoldAuction = new DaiGoldAuction__factory(signer).attach( + env.contracts.spiceBazaar.daiGoldAuction + ); + + return await daiGoldAuction.getEpochInfo(epoch); + }, + [signer] + ); + + // TODO: possibly move to useMemo + const isAuctionLive = useCallback(async () => { + if (!signer) { + console.debug('Missing signer when trying to use SpiceBazaar.'); + return; + } + + const daiGoldAuction = new DaiGoldAuction__factory(signer).attach( + env.contracts.spiceBazaar.daiGoldAuction + ); + + return await daiGoldAuction.canDeposit(); + }, [signer]); + + const fetchDaiGoldAuctionInfo = useCallback(async () => { + if (!wallet || !signer) { + console.debug('Missing wallet or signer when trying to use SpiceBazaar.'); + return; + } + + setDaiGoldAuctionInfoLoading(true); + + const currentEpoch = await getCurrentEpoch(); + const epochInfo = await getEpochInfo(Number(currentEpoch)); + const auctionLive = await isAuctionLive(); + + if (!epochInfo) { + setDaiGoldAuctionInfoLoading(false); + return; + } + + const totalBidTokenAmountNumber = fromAtto(epochInfo.totalBidTokenAmount); + const totalAuctionTokenAmountNumber = fromAtto( + epochInfo.totalAuctionTokenAmount + ); + + const priceRatio = + totalBidTokenAmountNumber / totalAuctionTokenAmountNumber; + + setDaiGoldAuctionInfo({ + currentEpoch: Number(currentEpoch), + auctionLive: auctionLive || false, + totalAuctionTokenAmount: fromAtto(epochInfo.totalAuctionTokenAmount), + auctionEndTime: new Date(epochInfo.endTime.toNumber() * 1000).getTime(), + totalBidTokenAmount: fromAtto(epochInfo.totalBidTokenAmount), + priceRatio: priceRatio, + }); + + setDaiGoldAuctionInfoLoading(false); + }, [getCurrentEpoch, getEpochInfo, isAuctionLive, signer, wallet]); + + const getUnstakeTime = useCallback(async () => { + if (!wallet || !signer) { + console.debug('Missing wallet or signer when trying to use SpiceBazaar.'); + return 0; + } + + try { + const templeGoldStaking = new TempleGoldStaking__factory(signer).attach( + env.contracts.spiceBazaar.templeGoldStaking + ); + + const unstakeTime = await templeGoldStaking.getAccountUnstakeTime(wallet); + return unstakeTime.toNumber(); + } catch (err) { + console.error('Error while getting unstake time', { + cause: err, + }); + return 0; + } + }, [wallet, signer]); + + const daiGoldAuctionBid = useCallback( + async (amount: string) => { + if (!wallet || !signer) { + console.debug( + 'Missing wallet or signer when trying to use SpiceBazaar.' + ); + return; + } + + try { + const daiAmount = getBigNumberFromString( + amount, + getTokenInfo(TICKER_SYMBOL.DAI).decimals + ); + + const daiContract = new ERC20__factory(signer).attach( + env.contracts.dai + ); + + await ensureAllowance( + TICKER_SYMBOL.DAI, + daiContract, + env.contracts.spiceBazaar.daiGoldAuction, + daiAmount, + true + ); + + const daiGoldAuction = new DaiGoldAuction__factory(signer).attach( + env.contracts.spiceBazaar.daiGoldAuction + ); + + const populatedTransaction = + await daiGoldAuction.populateTransaction.bid(daiAmount); + const receipt = await estimateAndMine(signer, populatedTransaction); + + openNotification({ + title: `Bid ${amount} DAI`, + hash: receipt.transactionHash, + }); + + fetchDaiGoldAuctionInfo(); + updateBalance(); + } catch (err) { + console.error('Error while bidding DAI', { + cause: err, + }); + openNotification({ + title: 'Error bidding DAI', + hash: '', + }); + } + }, + [ + wallet, + signer, + ensureAllowance, + openNotification, + fetchDaiGoldAuctionInfo, + updateBalance, + ] + ); + + const value = useMemo( + () => ({ + stakePageMetrics: { + data: stakePageMetrics, + loading: stakePageMetricsLoading, + fetch: fetchStakePageMetrics, + }, + staking: { + stakeTemple, + unstakeTemple, + claimRewards, + getUnstakeTime, + }, + daiGoldAuctionInfo: { + data: daiGoldAuctionInfo, + loading: daiGoldAuctionInfoLoading, + fetch: fetchDaiGoldAuctionInfo, + }, + daiGoldAuctions: { + bid: daiGoldAuctionBid, + }, + }), + [ + stakePageMetrics, + stakePageMetricsLoading, + fetchStakePageMetrics, + stakeTemple, + unstakeTemple, + claimRewards, + getUnstakeTime, + daiGoldAuctionInfo, + daiGoldAuctionInfoLoading, + fetchDaiGoldAuctionInfo, + daiGoldAuctionBid, + ] + ); + + return ( + + {children} + + ); +}; + +export const useSpiceBazaar = () => useContext(SpiceBazaarContext); diff --git a/apps/dapp/src/providers/WalletProvider.tsx b/apps/dapp/src/providers/WalletProvider.tsx index bcfa32aaa..4301a22a6 100644 --- a/apps/dapp/src/providers/WalletProvider.tsx +++ b/apps/dapp/src/providers/WalletProvider.tsx @@ -42,6 +42,7 @@ const INITIAL_STATE: WalletState = { TEMPLE: ZERO, OGTEMPLE: ZERO, OHM: ZERO, + TGLD: ZERO, }, wallet: undefined, walletAddress: undefined, @@ -52,7 +53,6 @@ const INITIAL_STATE: WalletState = { updateBalance: asyncNoop, collectTempleTeamPayment: asyncNoop, ensureAllowance: asyncNoop, - ethersProvider: null, }; const WalletContext = createContext(INITIAL_STATE); @@ -63,13 +63,10 @@ export const WalletProvider = (props: PropsWithChildren) => { const [{ wallet, connecting }] = useConnectWallet(); const [signer, setSigner] = useState>(null); const [walletAddress, setWalletAddress] = useState(); - const [ethersProvider, setEthersProvider] = - useState(null); useEffect(() => { if (wallet) { const ethersProvider = new ethers.providers.Web3Provider(wallet.provider); - setEthersProvider(ethersProvider); setSigner(ethersProvider.getSigner()); if (wallet.accounts.length > 0) { setWalletAddress(wallet.accounts[0].address); @@ -102,6 +99,7 @@ export const WalletProvider = (props: PropsWithChildren) => { DAI: ZERO, WETH: ZERO, OHM: ZERO, + TGLD: ZERO, }; if (env.contracts.frax) { @@ -177,6 +175,16 @@ export const WalletProvider = (props: PropsWithChildren) => { response = { ...response, TEMPLE: templeBalance }; } + if (env.contracts.templegold) { + const tgldContract = new ERC20__factory(signer).attach( + env.contracts.templegold + ); + const tgldBalance: BigNumber = await tgldContract.balanceOf( + walletAddress + ); + response = { ...response, TGLD: tgldBalance }; + } + return { ...response, ETH: await signer.getBalance(), @@ -204,7 +212,8 @@ export const WalletProvider = (props: PropsWithChildren) => { // Should be ERC20, need to update Typechain (fix is in 8.0.x) erc20Token: any, spender: string, - minAllowance: BigNumber + minAllowance: BigNumber, + shouldUseMinAllowance = false ) => { // pre-condition if (!walletAddress) { @@ -216,9 +225,13 @@ export const WalletProvider = (props: PropsWithChildren) => { if (allowance.lt(minAllowance)) { // increase allowance - const approveTXN = await token.approve(spender, DEFAULT_ALLOWANCE, { - gasLimit: 50000, - }); + const approveTXN = await token.approve( + spender, + shouldUseMinAllowance ? minAllowance : DEFAULT_ALLOWANCE, + { + gasLimit: 50000, + } + ); await approveTXN.wait(); // Show feedback to user @@ -265,7 +278,6 @@ export const WalletProvider = (props: PropsWithChildren) => { getBalance: updateBalance, updateBalance, collectTempleTeamPayment, - ethersProvider, }} > {children} diff --git a/apps/dapp/src/providers/types.ts b/apps/dapp/src/providers/types.ts index c9f4b8a5f..9b86b55cc 100644 --- a/apps/dapp/src/providers/types.ts +++ b/apps/dapp/src/providers/types.ts @@ -1,4 +1,4 @@ -import { BigNumber, ContractReceipt, ethers, Signer } from 'ethers'; +import { BigNumber, ContractReceipt, Signer } from 'ethers'; import { Nullable } from 'types/util'; import { TransactionReceipt } from '@ethersproject/abstract-provider'; import { TICKER_SYMBOL } from 'enums/ticker-symbol'; @@ -132,8 +132,7 @@ export interface WalletState { // Should be ERC20, need to update Typechain (fix is in 8.0.x) erc20Token: any, spender: string, - minAllowance: BigNumber + minAllowance: BigNumber, + shouldUseMinAllowance?: boolean ): Promise; - - ethersProvider: Nullable; } diff --git a/apps/dapp/src/styles/styled.d.ts b/apps/dapp/src/styles/styled.d.ts index 39d81d1b9..e9248e393 100644 --- a/apps/dapp/src/styles/styled.d.ts +++ b/apps/dapp/src/styles/styled.d.ts @@ -17,6 +17,7 @@ declare module 'styled-components' { dark: string; dark75: string; grayOpaque: string; + gold: string; light: string; light75: string; light50: string; diff --git a/apps/dapp/src/styles/theme.ts b/apps/dapp/src/styles/theme.ts index e69c22f1e..d7f9b6167 100644 --- a/apps/dapp/src/styles/theme.ts +++ b/apps/dapp/src/styles/theme.ts @@ -43,6 +43,7 @@ const theme: DefaultTheme = { dark75: transparentize(0.25, darkColor), // check if this color is needed? If it is then need to sync to Figma grayOpaque: '#1B1919', + gold: '#EAB85B', light: '#FFFFFF', light75: darken(0.25, '#FFFFFF'), light50: darken(0.5, '#FFFFFF'), diff --git a/apps/dapp/src/utils/helpers.ts b/apps/dapp/src/utils/helpers.ts index d22e13e12..fd381638d 100644 --- a/apps/dapp/src/utils/helpers.ts +++ b/apps/dapp/src/utils/helpers.ts @@ -12,8 +12,3 @@ export const asyncNoop = async () => {}; export const isDevelopmentEnv = () => { return ENV.VITE_ENV === 'preview' || ENV.VITE_ENV === 'local'; }; - -// Continuously compounded rate -export const aprToApy = (rate: number) => { - return Math.pow(1 + rate / 365, 365) - 1; -}; diff --git a/apps/dapp/src/utils/subgraph.ts b/apps/dapp/src/utils/subgraph.ts index 274e7caae..58f88e2ec 100644 --- a/apps/dapp/src/utils/subgraph.ts +++ b/apps/dapp/src/utils/subgraph.ts @@ -1,641 +1,40 @@ -import env from 'constants/env'; -import { z } from 'zod'; -import { backOff } from 'exponential-backoff'; +import { SubGraphResponse } from 'hooks/core/types'; -/** A typed query to subgraph */ -interface SubGraphQuery { - label: string; - request: string; - parse(response: unknown): T; -} - -//---------------------------------------------------------------------------------------------------- - -export function queryTlcDailySnapshots(): SubGraphQuery { - const label = 'queryTlcDailySnapshots'; - const request = ` - { - tlcDailySnapshots(orderBy: timestamp, orderDirection: desc) { - timestamp - utilRatio - interestYield - } - }`; - return { - label, - request, - parse: TlcDailySnapshotsResp.parse, - }; -} - -const TlcDailySnapshotsResp = z.object({ - tlcDailySnapshots: z.array( - z.object({ - timestamp: z.string(), - utilRatio: z.string(), - interestYield: z.string(), - }) - ), -}); -export type TlcDailySnapshotsResp = z.infer; - -//---------------------------------------------------------------------------------------------------- - -export function queryTlcMinBorrowAmount(): SubGraphQuery { - const label = 'queryTlcMinBorrowAmount'; - const request = ` - { - tlcDailySnapshots(orderBy: timestamp, orderDirection: desc, first: 1) { - minBorrowAmount - } - }`; - return { - label, - request, - parse: TlcMinBorrowAmountResp.parse, - }; -} - -const TlcMinBorrowAmountResp = z.object({ - tlcDailySnapshots: z.array( - z.object({ - minBorrowAmount: z.string(), - }) - ), -}); -export type TlcMinBorrowAmountResp = z.infer; - -//---------------------------------------------------------------------------------------------------- - -export function queryTrvData(): SubGraphQuery { - const label = 'queryTrvData'; - const request = ` - { - treasuryReservesVaults { - principalUSD - benchmarkedEquityUSD - treasuryPriceIndex - accruedInterestUSD - } - }`; - return { - label, - request, - parse: TrvDataResp.parse, - }; -} - -const TrvDataResp = z.object({ - treasuryReservesVaults: z.array( - z.object({ - principalUSD: z.string(), - benchmarkedEquityUSD: z.string(), - treasuryPriceIndex: z.string(), - accruedInterestUSD: z.string(), - }) - ), -}); -export type TrvDataResp = z.infer; - -//---------------------------------------------------------------------------------------------------- - -export function queryTrvBalances(): SubGraphQuery { - const label = 'queryTrvBalances'; - const request = ` - { - treasuryReservesVaults { - totalMarketValueUSD - benchmarkedEquityUSD - } - }`; - return { - label, - request, - parse: TrvBalancesResp.parse, - }; -} - -const TrvBalancesResp = z.object({ - treasuryReservesVaults: z.array( - z.object({ - totalMarketValueUSD: z.string(), - benchmarkedEquityUSD: z.string(), - }) - ), -}); -export type TrvBalancesResp = z.infer; - -//---------------------------------------------------------------------------------------------------- - -export function queryRamosData(): SubGraphQuery { - const label = 'queryRamosData'; - const request = ` - { - metrics { - spotPrice - } - }`; - return { - label, - request, - parse: RamosDataResp.parse, - }; -} - -const RamosDataResp = z.object({ - metrics: z.array( - z.object({ - spotPrice: z.string(), - }) - ), -}); -export type RamosDataResp = z.infer; - -//---------------------------------------------------------------------------------------------------- - -export function queryTlcPrices(): SubGraphQuery { - const label = 'queryTlcPrices'; - const request = ` - { - tokens { - price - symbol - } - treasuryReservesVaults { - treasuryPriceIndex - } - }`; - return { - label, - request, - parse: TlcPricesResp.parse, - }; -} - -const TlcPricesResp = z.object({ - tokens: z.array( - z.object({ - price: z.string(), - symbol: z.string(), - }) - ), - treasuryReservesVaults: z.array( - z.object({ - treasuryPriceIndex: z.string(), - }) - ), -}); -export type TlcPricesResp = z.infer; - -//---------------------------------------------------------------------------------------------------- - -const V2StrategySnapshot = z.object({ - strategy: z.object({ - name: z.string(), - }), - timeframe: z.string(), - timestamp: z.string(), - totalMarketValueUSD: z.string(), - debtUSD: z.string(), - netDebtUSD: z.string(), - creditUSD: z.string(), - principalUSD: z.string(), - accruedInterestUSD: z.string(), - benchmarkedEquityUSD: z.string(), - strategyTokens: z.array( - z.object({ - symbol: z.string(), - debtUSD: z.string(), - creditUSD: z.string(), - assetBalance: z.string(), - marketValueUSD: z.string(), - principalUSD: z.string(), - accruedInterestUSD: z.string(), - }) - ), -}); -export type V2StrategySnapshot = z.infer; - -export function queryStrategyHourlySnapshots( - v2SnapshotMetrics: readonly string[], - strategyTokenFields: readonly string[], - itemsPerPage: number, - since: string -): SubGraphQuery { - const label = 'queryStrategyHourlySnapshots'; - const request = ` - query { - strategyHourlySnapshots( - first: ${itemsPerPage}, - orderBy: timestamp, - orderDirection: asc, - where: {timestamp_gt: ${since}} - ) { - strategy { - name - } - timeframe - timestamp - ${v2SnapshotMetrics.join('\n')} - strategyTokens { - ${strategyTokenFields.join('\n')} - } - } - }`; - return { - label, - request, - parse: StrategyHourlySnapshotsResp.parse, - }; -} - -const StrategyHourlySnapshotsResp = z.object({ - strategyHourlySnapshots: z.array(V2StrategySnapshot), -}); -export type StrategyHourlySnapshotsResp = z.infer< - typeof StrategyHourlySnapshotsResp ->; - -export function queryStrategyDailySnapshots( - v2SnapshotMetrics: readonly string[], - strategyTokenFields: readonly string[], - itemsPerPage: number, - since: string, - skip: number -): SubGraphQuery { - const label = 'queryStrategyDailySnapshots'; - const request = ` - query { - strategyDailySnapshots( - first: ${itemsPerPage}, - orderBy: timestamp, - orderDirection: asc, - where: {timestamp_gt: ${since}} - skip: ${skip} - ) { - strategy { - name - } - timeframe - timestamp - ${v2SnapshotMetrics.join('\n')} - strategyTokens { - ${strategyTokenFields.join('\n')} - } - } - }`; - return { - label, - request, - parse: StrategyDailySnapshotsResp.parse, - }; -} - -const StrategyDailySnapshotsResp = z.object({ - strategyDailySnapshots: z.array(V2StrategySnapshot), -}); -export type StrategyDailySnapshotsResp = z.infer< - typeof StrategyDailySnapshotsResp ->; - -//---------------------------------------------------------------------------------------------------- - -export function queryTempleCirculatingSupply(): SubGraphQuery { - const label = 'queryTempleCirculatingSupply'; - const request = ` - { - metrics(first: 1, orderBy: timestamp, orderDirection: desc) { - templeCirculatingSupply - } - }`; - return { - label, - request, - parse: TempleCirculatingSupplyResp.parse, - }; -} - -const TempleCirculatingSupplyResp = z.object({ - metrics: z.array( - z.object({ - templeCirculatingSupply: z.string(), - }) - ), -}); -export type TempleCirculatingSupplyResp = z.infer< - typeof TempleCirculatingSupplyResp ->; - -//---------------------------------------------------------------------------------------------------- - -export function queryBenchmarkRate(): SubGraphQuery { - const label = 'queryBenchmarkRate'; - const request = ` - { - debtTokens { - name - symbol - baseRate - } - }`; - return { - label, - request, - parse: BenchmarkRateResp.parse, - }; -} - -const BenchmarkRateResp = z.object({ - debtTokens: z.array( - z.object({ - name: z.string(), - symbol: z.string(), - baseRate: z.string(), - }) - ), -}); -export type BenchmarkRateResp = z.infer; - -//---------------------------------------------------------------------------------------------------- - -export function queryStrategyData(): SubGraphQuery { - const label = 'queryStrategyData'; - const request = ` - { - strategies { - name - isShutdown - id - strategyTokens { - symbol - rate - premiumRate - debtShare - debtCeiling - debtCeilingUtil - } - totalRepaymentUSD - principalUSD - accruedInterestUSD - } - }`; - return { - label, - request, - parse: StrategyDataResp.parse, - }; -} - -const StrategyDataResp = z.object({ - strategies: z.array( - z.object({ - name: z.string(), - isShutdown: z.boolean(), - id: z.string(), - strategyTokens: z.array( - z.object({ - symbol: z.string(), - rate: z.string(), - premiumRate: z.string(), - debtShare: z.string(), - debtCeiling: z.string(), - debtCeilingUtil: z.string(), - }) - ), - totalRepaymentUSD: z.string(), - principalUSD: z.string(), - accruedInterestUSD: z.string(), - }) - ), -}); -export type StrategyDataResp = z.infer; - -//---------------------------------------------------------------------------------------------------- - -export function queryStrategyTransactions( - orderBy: string, - orderType: string, - offset: number, - limit: number, - whereQuery: string -): SubGraphQuery { - const label = 'queryStrategyTransactions'; - const request = ` - { - strategyTransactions( - orderBy: ${orderBy} - orderDirection: ${orderType} - skip: ${offset} - first: ${limit} - ${whereQuery} - ) { - hash - strategy { - id - name - } - token { - id - name - symbol - } - amount - amountUSD - id - from - name - timestamp - } - }`; - return { - label, - request, - parse: StrategyTransactionsResp.parse, - }; -} - -const StrategyTransactions = z.array( - z.object({ - hash: z.string(), - strategy: z.object({ - id: z.string(), - name: z.string(), - }), - token: z.object({ - id: z.string(), - name: z.string(), - symbol: z.string(), - }), - amount: z.string(), - amountUSD: z.string(), - id: z.string(), - from: z.string(), - name: z.string(), - timestamp: z.string(), - }) -); -export type StrategyTransactions = z.infer; - -const StrategyTransactionsResp = z.object({ - strategyTransactions: StrategyTransactions, -}); -export type StrategyTransactionsResp = z.infer; - -//---------------------------------------------------------------------------------------------------- - -export function queryStrategyTransactionsMeta( - whereQuery: string -): SubGraphQuery { - const label = 'queryStrategyTransactionsMeta'; - const request = ` - { - metrics { - strategyTransactionCount - } - strategyTransactions( - ${whereQuery} - ) { - hash - } - _meta { - block { - number - } - } - }`; - return { - label, - request, - parse: StrategyTransactionsMetaResp.parse, - }; -} - -const StrategyTransactionsMetaResp = z.object({ - metrics: z.array( - z.object({ - strategyTransactionCount: z.number(), - }) - ), - strategyTransactions: z.array( - z.object({ - hash: z.string(), - }) - ), - _meta: z.object({ - block: z.object({ - number: z.number(), - }), - }), -}); -export type StrategyTransactionsMetaResp = z.infer< - typeof StrategyTransactionsMetaResp ->; - -//---------------------------------------------------------------------------------------------------- - -export function queryStrategyBalances(): SubGraphQuery { - const label = 'queryStrategyBalances'; - const request = ` - { - strategies { - name - isShutdown - id - benchmarkedEquityUSD - totalMarketValueUSD - } - }`; - return { - label, - request, - parse: StrategyBalancesResp.parse, - }; -} - -const StrategyBalancesResp = z.object({ - strategies: z.array( - z.object({ - name: z.string(), - isShutdown: z.boolean(), - id: z.string(), - benchmarkedEquityUSD: z.string(), - totalMarketValueUSD: z.string(), - }) - ), -}); -export type StrategyBalancesResp = z.infer; - -//---------------------------------------------------------------------------------------------------- - -export async function subgraphQuery( - url: string, - query: SubGraphQuery -): Promise { - const response = await rawSubgraphQuery(url, query.label, query.request); - return query.parse(response); +export class SubgraphQueryError extends Error { + constructor(graphqlErrors: any[]) { + super(graphqlErrors.map((errorPath) => errorPath.message).join(';')); + this.name = 'SubgraphQueryError'; + } } -export async function rawSubgraphQuery( - url: string, - label: string, +// Preserved to avoid a larger refactor across the code base for now +export const fetchSubgraph = async >( query: string -): Promise { - return backOff(() => _rawSubgraphQuery(url, label, query), { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - retry: (e: any, attemptNumber: number) => { - if ((e as FetchError).httpStatus === 429) { - console.info( - `received 429 from subgraph api, retry ${attemptNumber} ...` - ); - return true; - } - return false; - }, - }); -} - -async function _rawSubgraphQuery( +) => { + return fetchGenericSubgraph( + 'https://subgraph.satsuma-prod.com/a912521dd162/templedao/temple-metrics/api', + query + ); +}; + +export const fetchGenericSubgraph = async >( url: string, - label: string, query: string -): Promise { - if (env.enableSubgraphLogs) { - console.log('subgraph-request', label, query); - } - const response = await fetch(url, { +) => { + const result = await fetch(url, { method: 'POST', headers: { Accept: 'application/json', 'Content-Type': 'application/json', }, - body: JSON.stringify({ query }), + body: JSON.stringify({ + query, + }), }); + const response: R = await result.json(); - if (!response.ok) { - throw new FetchError( - response.status, - `rawSubgraphQuery failed with status: ${ - response.status - }, body: ${await response.text()}` - ); - } - - const rawResults = await response.json(); - - if (env.enableSubgraphLogs) { - console.log('subgraph-response', label, rawResults); - } - if (rawResults.errors !== undefined) { - throw new Error( - `Unable to fetch ${label} from subgraph: ${rawResults.errors}` - ); - } - - return rawResults.data as unknown; -} - -class FetchError extends Error { - constructor(readonly httpStatus: number, message: string) { - super(message); + if (response.errors) { + throw new SubgraphQueryError(response.errors); } -} + return response; +}; diff --git a/apps/dapp/yarn.lock b/apps/dapp/yarn.lock index 1927c118d..4531805df 100644 --- a/apps/dapp/yarn.lock +++ b/apps/dapp/yarn.lock @@ -7,6 +7,11 @@ resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.10.0.tgz#d2a39395c587e092d77cbbc80acf956a54f38bf7" integrity sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q== +"@adraffy/ens-normalize@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.11.0.tgz#42cc67c5baa407ac25059fcd7d405cc5ecdb0c33" + integrity sha512-/3DDPKHqqIqxUULp8yP4zODUY1i+2xvVWsv8A79xGWdCAG+8sb0hRh0Rk2QyOJUnnbyPUAZYcpBuRe3nS2OIUg== + "@ampproject/remapping@^2.2.0": version "2.3.0" resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.3.0.tgz#ed441b6fa600072520ce18b43d2c8cc8caecc7f4" @@ -32,96 +37,98 @@ dependencies: "@babel/highlight" "^7.10.4" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.7.tgz#882fd9e09e8ee324e496bd040401c6f046ef4465" - integrity sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA== +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.25.9", "@babel/code-frame@^7.26.0": + version "7.26.2" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.26.2.tgz#4b5fab97d33338eff916235055f0ebc21e573a85" + integrity sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ== dependencies: - "@babel/highlight" "^7.24.7" + "@babel/helper-validator-identifier" "^7.25.9" + js-tokens "^4.0.0" picocolors "^1.0.0" -"@babel/compat-data@^7.20.5", "@babel/compat-data@^7.22.6", "@babel/compat-data@^7.25.2": - version "7.25.2" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.25.2.tgz#e41928bd33475305c586f6acbbb7e3ade7a6f7f5" - integrity sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ== +"@babel/compat-data@^7.20.5", "@babel/compat-data@^7.22.6", "@babel/compat-data@^7.25.9", "@babel/compat-data@^7.26.0": + version "7.26.2" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.26.2.tgz#278b6b13664557de95b8f35b90d96785850bb56e" + integrity sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg== "@babel/core@^7.12.3", "@babel/core@^7.16.0", "@babel/core@^7.17.10", "@babel/core@^7.21.3", "@babel/core@^7.7.5": - version "7.25.2" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.25.2.tgz#ed8eec275118d7613e77a352894cd12ded8eba77" - integrity sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA== + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.26.0.tgz#d78b6023cc8f3114ccf049eb219613f74a747b40" + integrity sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg== dependencies: "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.24.7" - "@babel/generator" "^7.25.0" - "@babel/helper-compilation-targets" "^7.25.2" - "@babel/helper-module-transforms" "^7.25.2" - "@babel/helpers" "^7.25.0" - "@babel/parser" "^7.25.0" - "@babel/template" "^7.25.0" - "@babel/traverse" "^7.25.2" - "@babel/types" "^7.25.2" + "@babel/code-frame" "^7.26.0" + "@babel/generator" "^7.26.0" + "@babel/helper-compilation-targets" "^7.25.9" + "@babel/helper-module-transforms" "^7.26.0" + "@babel/helpers" "^7.26.0" + "@babel/parser" "^7.26.0" + "@babel/template" "^7.25.9" + "@babel/traverse" "^7.25.9" + "@babel/types" "^7.26.0" convert-source-map "^2.0.0" debug "^4.1.0" gensync "^1.0.0-beta.2" json5 "^2.2.3" semver "^6.3.1" -"@babel/generator@^7.25.0": - version "7.25.0" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.25.0.tgz#f858ddfa984350bc3d3b7f125073c9af6988f18e" - integrity sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw== +"@babel/generator@^7.25.9", "@babel/generator@^7.26.0": + version "7.26.2" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.26.2.tgz#87b75813bec87916210e5e01939a4c823d6bb74f" + integrity sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw== dependencies: - "@babel/types" "^7.25.0" + "@babel/parser" "^7.26.2" + "@babel/types" "^7.26.0" "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.25" - jsesc "^2.5.1" + jsesc "^3.0.2" -"@babel/helper-annotate-as-pure@^7.22.5", "@babel/helper-annotate-as-pure@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz#5373c7bc8366b12a033b4be1ac13a206c6656aab" - integrity sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg== +"@babel/helper-annotate-as-pure@^7.22.5", "@babel/helper-annotate-as-pure@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz#d8eac4d2dc0d7b6e11fa6e535332e0d3184f06b4" + integrity sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g== dependencies: - "@babel/types" "^7.24.7" + "@babel/types" "^7.25.9" -"@babel/helper-builder-binary-assignment-operator-visitor@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.7.tgz#37d66feb012024f2422b762b9b2a7cfe27c7fba3" - integrity sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA== +"@babel/helper-builder-binary-assignment-operator-visitor@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.25.9.tgz#f41752fe772a578e67286e6779a68a5a92de1ee9" + integrity sha512-C47lC7LIDCnz0h4vai/tpNOI95tCd5ZT3iBt/DBH5lXKHZsyNQv18yf1wIIg2ntiQNgmAvA+DgZ82iW8Qdym8g== dependencies: - "@babel/traverse" "^7.24.7" - "@babel/types" "^7.24.7" + "@babel/traverse" "^7.25.9" + "@babel/types" "^7.25.9" -"@babel/helper-compilation-targets@^7.20.7", "@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.24.7", "@babel/helper-compilation-targets@^7.24.8", "@babel/helper-compilation-targets@^7.25.2": - version "7.25.2" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz#e1d9410a90974a3a5a66e84ff55ef62e3c02d06c" - integrity sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw== +"@babel/helper-compilation-targets@^7.20.7", "@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz#55af025ce365be3cdc0c1c1e56c6af617ce88875" + integrity sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ== dependencies: - "@babel/compat-data" "^7.25.2" - "@babel/helper-validator-option" "^7.24.8" - browserslist "^4.23.1" + "@babel/compat-data" "^7.25.9" + "@babel/helper-validator-option" "^7.25.9" + browserslist "^4.24.0" lru-cache "^5.1.1" semver "^6.3.1" -"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.24.7": - version "7.25.0" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.0.tgz#a109bf9c3d58dfed83aaf42e85633c89f43a6253" - integrity sha512-GYM6BxeQsETc9mnct+nIIpf63SAyzvyYN7UB/IlTyd+MBg06afFGp0mIeUqGyWgS2mxad6vqbMrHVlaL3m70sQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.24.7" - "@babel/helper-member-expression-to-functions" "^7.24.8" - "@babel/helper-optimise-call-expression" "^7.24.7" - "@babel/helper-replace-supers" "^7.25.0" - "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" - "@babel/traverse" "^7.25.0" +"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.9.tgz#7644147706bb90ff613297d49ed5266bde729f83" + integrity sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.25.9" + "@babel/helper-member-expression-to-functions" "^7.25.9" + "@babel/helper-optimise-call-expression" "^7.25.9" + "@babel/helper-replace-supers" "^7.25.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" + "@babel/traverse" "^7.25.9" semver "^6.3.1" -"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.24.7", "@babel/helper-create-regexp-features-plugin@^7.25.0": - version "7.25.2" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.2.tgz#24c75974ed74183797ffd5f134169316cd1808d9" - integrity sha512-+wqVGP+DFmqwFD3EH6TMTfUNeqDehV3E/dl+Sd54eaXqm17tEUNbEIn4sVivVowbvUpOtIGxdo3GoXyDH9N/9g== +"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.9.tgz#3e8999db94728ad2b2458d7a470e7770b7764e26" + integrity sha512-ORPNZ3h6ZRkOyAa/SaHU+XsLZr0UQzRwuDQ0cczIA17nAzZ+85G5cVkOJIj7QavLZGSe8QXUmNFxSZzjcZF9bw== dependencies: - "@babel/helper-annotate-as-pure" "^7.24.7" - regexpu-core "^5.3.1" + "@babel/helper-annotate-as-pure" "^7.25.9" + regexpu-core "^6.1.1" semver "^6.3.1" "@babel/helper-define-polyfill-provider@^0.6.2": @@ -135,165 +142,164 @@ lodash.debounce "^4.0.8" resolve "^1.14.2" -"@babel/helper-member-expression-to-functions@^7.24.8": - version "7.24.8" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.8.tgz#6155e079c913357d24a4c20480db7c712a5c3fb6" - integrity sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA== - dependencies: - "@babel/traverse" "^7.24.8" - "@babel/types" "^7.24.8" - -"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.22.5", "@babel/helper-module-imports@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz#f2f980392de5b84c3328fc71d38bd81bbb83042b" - integrity sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA== - dependencies: - "@babel/traverse" "^7.24.7" - "@babel/types" "^7.24.7" - -"@babel/helper-module-transforms@^7.24.7", "@babel/helper-module-transforms@^7.24.8", "@babel/helper-module-transforms@^7.25.0", "@babel/helper-module-transforms@^7.25.2": - version "7.25.2" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz#ee713c29768100f2776edf04d4eb23b8d27a66e6" - integrity sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ== - dependencies: - "@babel/helper-module-imports" "^7.24.7" - "@babel/helper-simple-access" "^7.24.7" - "@babel/helper-validator-identifier" "^7.24.7" - "@babel/traverse" "^7.25.2" - -"@babel/helper-optimise-call-expression@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz#8b0a0456c92f6b323d27cfd00d1d664e76692a0f" - integrity sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A== - dependencies: - "@babel/types" "^7.24.7" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.24.7", "@babel/helper-plugin-utils@^7.24.8", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.24.8" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz#94ee67e8ec0e5d44ea7baeb51e571bd26af07878" - integrity sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg== - -"@babel/helper-remap-async-to-generator@^7.24.7", "@babel/helper-remap-async-to-generator@^7.25.0": - version "7.25.0" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.0.tgz#d2f0fbba059a42d68e5e378feaf181ef6055365e" - integrity sha512-NhavI2eWEIz/H9dbrG0TuOicDhNexze43i5z7lEqwYm0WEZVTwnPpA0EafUTP7+6/W79HWIP2cTe3Z5NiSTVpw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.24.7" - "@babel/helper-wrap-function" "^7.25.0" - "@babel/traverse" "^7.25.0" - -"@babel/helper-replace-supers@^7.24.7", "@babel/helper-replace-supers@^7.25.0": - version "7.25.0" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.25.0.tgz#ff44deac1c9f619523fe2ca1fd650773792000a9" - integrity sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.24.8" - "@babel/helper-optimise-call-expression" "^7.24.7" - "@babel/traverse" "^7.25.0" - -"@babel/helper-simple-access@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz#bcade8da3aec8ed16b9c4953b74e506b51b5edb3" - integrity sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg== - dependencies: - "@babel/traverse" "^7.24.7" - "@babel/types" "^7.24.7" - -"@babel/helper-skip-transparent-expression-wrappers@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz#5f8fa83b69ed5c27adc56044f8be2b3ea96669d9" - integrity sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ== - dependencies: - "@babel/traverse" "^7.24.7" - "@babel/types" "^7.24.7" - -"@babel/helper-string-parser@^7.24.8": - version "7.24.8" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz#5b3329c9a58803d5df425e5785865881a81ca48d" - integrity sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ== - -"@babel/helper-validator-identifier@^7.15.7", "@babel/helper-validator-identifier@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz#75b889cfaf9e35c2aaf42cf0d72c8e91719251db" - integrity sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w== - -"@babel/helper-validator-option@^7.24.7", "@babel/helper-validator-option@^7.24.8": - version "7.24.8" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz#3725cdeea8b480e86d34df15304806a06975e33d" - integrity sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q== - -"@babel/helper-wrap-function@^7.25.0": - version "7.25.0" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.25.0.tgz#dab12f0f593d6ca48c0062c28bcfb14ebe812f81" - integrity sha512-s6Q1ebqutSiZnEjaofc/UKDyC4SbzV5n5SrA2Gq8UawLycr3i04f1dX4OzoQVnexm6aOCh37SQNYlJ/8Ku+PMQ== - dependencies: - "@babel/template" "^7.25.0" - "@babel/traverse" "^7.25.0" - "@babel/types" "^7.25.0" - -"@babel/helpers@^7.25.0": - version "7.25.0" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.25.0.tgz#e69beb7841cb93a6505531ede34f34e6a073650a" - integrity sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw== - dependencies: - "@babel/template" "^7.25.0" - "@babel/types" "^7.25.0" - -"@babel/highlight@^7.10.4", "@babel/highlight@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.7.tgz#a05ab1df134b286558aae0ed41e6c5f731bf409d" - integrity sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw== - dependencies: - "@babel/helper-validator-identifier" "^7.24.7" +"@babel/helper-member-expression-to-functions@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz#9dfffe46f727005a5ea29051ac835fb735e4c1a3" + integrity sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ== + dependencies: + "@babel/traverse" "^7.25.9" + "@babel/types" "^7.25.9" + +"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.22.5", "@babel/helper-module-imports@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz#e7f8d20602ebdbf9ebbea0a0751fb0f2a4141715" + integrity sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw== + dependencies: + "@babel/traverse" "^7.25.9" + "@babel/types" "^7.25.9" + +"@babel/helper-module-transforms@^7.25.9", "@babel/helper-module-transforms@^7.26.0": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz#8ce54ec9d592695e58d84cd884b7b5c6a2fdeeae" + integrity sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw== + dependencies: + "@babel/helper-module-imports" "^7.25.9" + "@babel/helper-validator-identifier" "^7.25.9" + "@babel/traverse" "^7.25.9" + +"@babel/helper-optimise-call-expression@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz#3324ae50bae7e2ab3c33f60c9a877b6a0146b54e" + integrity sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ== + dependencies: + "@babel/types" "^7.25.9" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.25.9", "@babel/helper-plugin-utils@^7.8.0": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz#9cbdd63a9443a2c92a725cca7ebca12cc8dd9f46" + integrity sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw== + +"@babel/helper-remap-async-to-generator@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.9.tgz#e53956ab3d5b9fb88be04b3e2f31b523afd34b92" + integrity sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.25.9" + "@babel/helper-wrap-function" "^7.25.9" + "@babel/traverse" "^7.25.9" + +"@babel/helper-replace-supers@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.25.9.tgz#ba447224798c3da3f8713fc272b145e33da6a5c5" + integrity sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.25.9" + "@babel/helper-optimise-call-expression" "^7.25.9" + "@babel/traverse" "^7.25.9" + +"@babel/helper-simple-access@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.25.9.tgz#6d51783299884a2c74618d6ef0f86820ec2e7739" + integrity sha512-c6WHXuiaRsJTyHYLJV75t9IqsmTbItYfdj99PnzYGQZkYKvan5/2jKJ7gu31J3/BJ/A18grImSPModuyG/Eo0Q== + dependencies: + "@babel/traverse" "^7.25.9" + "@babel/types" "^7.25.9" + +"@babel/helper-skip-transparent-expression-wrappers@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz#0b2e1b62d560d6b1954893fd2b705dc17c91f0c9" + integrity sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA== + dependencies: + "@babel/traverse" "^7.25.9" + "@babel/types" "^7.25.9" + +"@babel/helper-string-parser@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz#1aabb72ee72ed35789b4bbcad3ca2862ce614e8c" + integrity sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA== + +"@babel/helper-validator-identifier@^7.15.7", "@babel/helper-validator-identifier@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz#24b64e2c3ec7cd3b3c547729b8d16871f22cbdc7" + integrity sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ== + +"@babel/helper-validator-option@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz#86e45bd8a49ab7e03f276577f96179653d41da72" + integrity sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw== + +"@babel/helper-wrap-function@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.25.9.tgz#d99dfd595312e6c894bd7d237470025c85eea9d0" + integrity sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g== + dependencies: + "@babel/template" "^7.25.9" + "@babel/traverse" "^7.25.9" + "@babel/types" "^7.25.9" + +"@babel/helpers@^7.26.0": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.26.0.tgz#30e621f1eba5aa45fe6f4868d2e9154d884119a4" + integrity sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw== + dependencies: + "@babel/template" "^7.25.9" + "@babel/types" "^7.26.0" + +"@babel/highlight@^7.10.4": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.25.9.tgz#8141ce68fc73757946f983b343f1231f4691acc6" + integrity sha512-llL88JShoCsth8fF8R4SJnIn+WLvR6ccFxu1H3FlMhDontdcmZWf2HgIZ7AIqV3Xcck1idlohrN4EUBQz6klbw== + dependencies: + "@babel/helper-validator-identifier" "^7.25.9" chalk "^2.4.2" js-tokens "^4.0.0" picocolors "^1.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.25.0", "@babel/parser@^7.25.3", "@babel/parser@^7.7.0": - version "7.25.3" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.25.3.tgz#91fb126768d944966263f0657ab222a642b82065" - integrity sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw== +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.25.9", "@babel/parser@^7.26.0", "@babel/parser@^7.26.2", "@babel/parser@^7.7.0": + version "7.26.2" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.26.2.tgz#fd7b6f487cfea09889557ef5d4eeb9ff9a5abd11" + integrity sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ== dependencies: - "@babel/types" "^7.25.2" + "@babel/types" "^7.26.0" -"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.25.3": - version "7.25.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.3.tgz#dca427b45a6c0f5c095a1c639dfe2476a3daba7f" - integrity sha512-wUrcsxZg6rqBXG05HG1FPYgsP6EvwF4WpBbxIpWIIYnH8wG0gzx3yZY3dtEHas4sTAOGkbTsc9EGPxwff8lRoA== +"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.9.tgz#cc2e53ebf0a0340777fff5ed521943e253b4d8fe" + integrity sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g== dependencies: - "@babel/helper-plugin-utils" "^7.24.8" - "@babel/traverse" "^7.25.3" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/traverse" "^7.25.9" -"@babel/plugin-bugfix-safari-class-field-initializer-scope@^7.25.0": - version "7.25.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.0.tgz#cd0c583e01369ef51676bdb3d7b603e17d2b3f73" - integrity sha512-Bm4bH2qsX880b/3ziJ8KD711LT7z4u8CFudmjqle65AZj/HNUFhEf90dqYv6O86buWvSBmeQDjv0Tn2aF/bIBA== +"@babel/plugin-bugfix-safari-class-field-initializer-scope@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.9.tgz#af9e4fb63ccb8abcb92375b2fcfe36b60c774d30" + integrity sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw== dependencies: - "@babel/helper-plugin-utils" "^7.24.8" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.25.0": - version "7.25.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.0.tgz#749bde80356b295390954643de7635e0dffabe73" - integrity sha512-lXwdNZtTmeVOOFtwM/WDe7yg1PL8sYhRk/XH0FzbR2HDQ0xC+EnQ/JHeoMYSavtU115tnUk0q9CDyq8si+LMAA== +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.9.tgz#e8dc26fcd616e6c5bf2bd0d5a2c151d4f92a9137" + integrity sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug== dependencies: - "@babel/helper-plugin-utils" "^7.24.8" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.7.tgz#e4eabdd5109acc399b38d7999b2ef66fc2022f89" - integrity sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ== +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.9.tgz#807a667f9158acac6f6164b4beb85ad9ebc9e1d1" + integrity sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" - "@babel/plugin-transform-optional-chaining" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" + "@babel/plugin-transform-optional-chaining" "^7.25.9" -"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.25.0": - version "7.25.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.0.tgz#3a82a70e7cb7294ad2559465ebcb871dfbf078fb" - integrity sha512-tggFrk1AIShG/RUQbEwt2Tr/E+ObkfwrPjR6BjbRvsx24+PSjK8zrq0GWPNCjo8qpRx4DuJzlcvWJqlm+0h3kw== +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.9.tgz#de7093f1e7deaf68eadd7cc6b07f2ab82543269e" + integrity sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg== dependencies: - "@babel/helper-plugin-utils" "^7.24.8" - "@babel/traverse" "^7.25.0" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/traverse" "^7.25.9" "@babel/plugin-proposal-class-properties@^7.16.0": version "7.18.6" @@ -319,679 +325,563 @@ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz#7844f9289546efa9febac2de4cfe358a050bd703" integrity sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w== -"@babel/plugin-syntax-async-generators@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" - integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-class-properties@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" - integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-class-static-block@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" - integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-dynamic-import@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" - integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== +"@babel/plugin-syntax-import-assertions@^7.26.0": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.26.0.tgz#620412405058efa56e4a564903b79355020f445f" + integrity sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg== dependencies: - "@babel/helper-plugin-utils" "^7.8.0" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-syntax-export-namespace-from@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" - integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== +"@babel/plugin-syntax-import-attributes@^7.26.0": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz#3b1412847699eea739b4f2602c74ce36f6b0b0f7" + integrity sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-syntax-import-assertions@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.7.tgz#2a0b406b5871a20a841240586b1300ce2088a778" - integrity sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg== +"@babel/plugin-syntax-jsx@^7.22.5", "@babel/plugin-syntax-jsx@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz#a34313a178ea56f1951599b929c1ceacee719290" + integrity sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-syntax-import-attributes@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.7.tgz#b4f9ea95a79e6912480c4b626739f86a076624ca" - integrity sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-syntax-import-meta@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" - integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-json-strings@^7.8.3": +"@babel/plugin-syntax-object-rest-spread@^7.8.3": version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" - integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-jsx@^7.22.5", "@babel/plugin-syntax-jsx@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz#39a1fa4a7e3d3d7f34e2acc6be585b718d30e02d" - integrity sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" - integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== +"@babel/plugin-syntax-unicode-sets-regex@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz#d49a3b3e6b52e5be6740022317580234a6a47357" + integrity sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" - integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== +"@babel/plugin-transform-arrow-functions@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.9.tgz#7821d4410bee5daaadbb4cdd9a6649704e176845" + integrity sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg== dependencies: - "@babel/helper-plugin-utils" "^7.8.0" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-syntax-numeric-separator@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" - integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== +"@babel/plugin-transform-async-generator-functions@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.9.tgz#1b18530b077d18a407c494eb3d1d72da505283a2" + integrity sha512-RXV6QAzTBbhDMO9fWwOmwwTuYaiPbggWQ9INdZqAYeSHyG7FzQ+nOZaUUjNwKv9pV3aE4WFqFm1Hnbci5tBCAw== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-remap-async-to-generator" "^7.25.9" + "@babel/traverse" "^7.25.9" -"@babel/plugin-syntax-object-rest-spread@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" - integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== +"@babel/plugin-transform-async-to-generator@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.9.tgz#c80008dacae51482793e5a9c08b39a5be7e12d71" + integrity sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ== dependencies: - "@babel/helper-plugin-utils" "^7.8.0" + "@babel/helper-module-imports" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-remap-async-to-generator" "^7.25.9" -"@babel/plugin-syntax-optional-catch-binding@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" - integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== +"@babel/plugin-transform-block-scoped-functions@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.25.9.tgz#5700691dbd7abb93de300ca7be94203764fce458" + integrity sha512-toHc9fzab0ZfenFpsyYinOX0J/5dgJVA2fm64xPewu7CoYHWEivIWKxkK2rMi4r3yQqLnVmheMXRdG+k239CgA== dependencies: - "@babel/helper-plugin-utils" "^7.8.0" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-syntax-optional-chaining@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" - integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== +"@babel/plugin-transform-block-scoping@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.9.tgz#c33665e46b06759c93687ca0f84395b80c0473a1" + integrity sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg== dependencies: - "@babel/helper-plugin-utils" "^7.8.0" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-syntax-private-property-in-object@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" - integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== +"@babel/plugin-transform-class-properties@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.9.tgz#a8ce84fedb9ad512549984101fa84080a9f5f51f" + integrity sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-create-class-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-syntax-top-level-await@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" - integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== +"@babel/plugin-transform-class-static-block@^7.26.0": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.26.0.tgz#6c8da219f4eb15cae9834ec4348ff8e9e09664a0" + integrity sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-create-class-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-syntax-unicode-sets-regex@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz#d49a3b3e6b52e5be6740022317580234a6a47357" - integrity sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg== +"@babel/plugin-transform-classes@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.9.tgz#7152457f7880b593a63ade8a861e6e26a4469f52" + integrity sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-arrow-functions@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz#4f6886c11e423bd69f3ce51dbf42424a5f275514" - integrity sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-transform-async-generator-functions@^7.25.0": - version "7.25.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.0.tgz#b785cf35d73437f6276b1e30439a57a50747bddf" - integrity sha512-uaIi2FdqzjpAMvVqvB51S42oC2JEVgh0LDsGfZVDysWE8LrJtQC2jvKmOqEYThKyB7bDEb7BP1GYWDm7tABA0Q== - dependencies: - "@babel/helper-plugin-utils" "^7.24.8" - "@babel/helper-remap-async-to-generator" "^7.25.0" - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/traverse" "^7.25.0" - -"@babel/plugin-transform-async-to-generator@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.7.tgz#72a3af6c451d575842a7e9b5a02863414355bdcc" - integrity sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA== - dependencies: - "@babel/helper-module-imports" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/helper-remap-async-to-generator" "^7.24.7" - -"@babel/plugin-transform-block-scoped-functions@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.7.tgz#a4251d98ea0c0f399dafe1a35801eaba455bbf1f" - integrity sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-transform-block-scoping@^7.25.0": - version "7.25.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.0.tgz#23a6ed92e6b006d26b1869b1c91d1b917c2ea2ac" - integrity sha512-yBQjYoOjXlFv9nlXb3f1casSHOZkWr29NX+zChVanLg5Nc157CrbEX9D7hxxtTpuFy7Q0YzmmWfJxzvps4kXrQ== - dependencies: - "@babel/helper-plugin-utils" "^7.24.8" - -"@babel/plugin-transform-class-properties@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.7.tgz#256879467b57b0b68c7ddfc5b76584f398cd6834" - integrity sha512-vKbfawVYayKcSeSR5YYzzyXvsDFWU2mD8U5TFeXtbCPLFUqe7GyCgvO6XDHzje862ODrOwy6WCPmKeWHbCFJ4w== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-transform-class-static-block@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.7.tgz#c82027ebb7010bc33c116d4b5044fbbf8c05484d" - integrity sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - -"@babel/plugin-transform-classes@^7.25.0": - version "7.25.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.0.tgz#63122366527d88e0ef61b612554fe3f8c793991e" - integrity sha512-xyi6qjr/fYU304fiRwFbekzkqVJZ6A7hOjWZd+89FVcBqPV3S9Wuozz82xdpLspckeaafntbzglaW4pqpzvtSw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.24.7" - "@babel/helper-compilation-targets" "^7.24.8" - "@babel/helper-plugin-utils" "^7.24.8" - "@babel/helper-replace-supers" "^7.25.0" - "@babel/traverse" "^7.25.0" + "@babel/helper-annotate-as-pure" "^7.25.9" + "@babel/helper-compilation-targets" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-replace-supers" "^7.25.9" + "@babel/traverse" "^7.25.9" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz#4cab3214e80bc71fae3853238d13d097b004c707" - integrity sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ== +"@babel/plugin-transform-computed-properties@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.9.tgz#db36492c78460e534b8852b1d5befe3c923ef10b" + integrity sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/template" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/template" "^7.25.9" -"@babel/plugin-transform-destructuring@^7.24.8": - version "7.24.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.8.tgz#c828e814dbe42a2718a838c2a2e16a408e055550" - integrity sha512-36e87mfY8TnRxc7yc6M9g9gOB7rKgSahqkIKwLpz4Ppk2+zC2Cy1is0uwtuSG6AE4zlTOUa+7JGz9jCJGLqQFQ== +"@babel/plugin-transform-destructuring@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.9.tgz#966ea2595c498224340883602d3cfd7a0c79cea1" + integrity sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.8" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-dotall-regex@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.7.tgz#5f8bf8a680f2116a7207e16288a5f974ad47a7a0" - integrity sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw== +"@babel/plugin-transform-dotall-regex@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.9.tgz#bad7945dd07734ca52fe3ad4e872b40ed09bb09a" + integrity sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-create-regexp-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-duplicate-keys@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.7.tgz#dd20102897c9a2324e5adfffb67ff3610359a8ee" - integrity sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw== +"@babel/plugin-transform-duplicate-keys@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.9.tgz#8850ddf57dce2aebb4394bb434a7598031059e6d" + integrity sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-duplicate-named-capturing-groups-regex@^7.25.0": - version "7.25.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.0.tgz#809af7e3339466b49c034c683964ee8afb3e2604" - integrity sha512-YLpb4LlYSc3sCUa35un84poXoraOiQucUTTu8X1j18JV+gNa8E0nyUf/CjZ171IRGr4jEguF+vzJU66QZhn29g== +"@babel/plugin-transform-duplicate-named-capturing-groups-regex@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.9.tgz#6f7259b4de127721a08f1e5165b852fcaa696d31" + integrity sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.25.0" - "@babel/helper-plugin-utils" "^7.24.8" + "@babel/helper-create-regexp-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-dynamic-import@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.7.tgz#4d8b95e3bae2b037673091aa09cd33fecd6419f4" - integrity sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg== +"@babel/plugin-transform-dynamic-import@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.9.tgz#23e917de63ed23c6600c5dd06d94669dce79f7b8" + integrity sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-exponentiation-operator@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.7.tgz#b629ee22645f412024297d5245bce425c31f9b0d" - integrity sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ== +"@babel/plugin-transform-exponentiation-operator@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.25.9.tgz#ece47b70d236c1d99c263a1e22b62dc20a4c8b0f" + integrity sha512-KRhdhlVk2nObA5AYa7QMgTMTVJdfHprfpAk4DjZVtllqRg9qarilstTKEhpVjyt+Npi8ThRyiV8176Am3CodPA== dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-export-namespace-from@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.7.tgz#176d52d8d8ed516aeae7013ee9556d540c53f197" - integrity sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA== +"@babel/plugin-transform-export-namespace-from@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.9.tgz#90745fe55053394f554e40584cda81f2c8a402a2" + integrity sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-for-of@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.7.tgz#f25b33f72df1d8be76399e1b8f3f9d366eb5bc70" - integrity sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g== +"@babel/plugin-transform-for-of@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.25.9.tgz#4bdc7d42a213397905d89f02350c5267866d5755" + integrity sha512-LqHxduHoaGELJl2uhImHwRQudhCM50pT46rIBNvtT/Oql3nqiS3wOwP+5ten7NpYSXrrVLgtZU3DZmPtWZo16A== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" -"@babel/plugin-transform-function-name@^7.25.1": - version "7.25.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.1.tgz#b85e773097526c1a4fc4ba27322748643f26fc37" - integrity sha512-TVVJVdW9RKMNgJJlLtHsKDTydjZAbwIsn6ySBPQaEAUU5+gVvlJt/9nRmqVbsV/IBanRjzWoaAQKLoamWVOUuA== +"@babel/plugin-transform-function-name@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.9.tgz#939d956e68a606661005bfd550c4fc2ef95f7b97" + integrity sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA== dependencies: - "@babel/helper-compilation-targets" "^7.24.8" - "@babel/helper-plugin-utils" "^7.24.8" - "@babel/traverse" "^7.25.1" + "@babel/helper-compilation-targets" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/traverse" "^7.25.9" -"@babel/plugin-transform-json-strings@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.7.tgz#f3e9c37c0a373fee86e36880d45b3664cedaf73a" - integrity sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw== +"@babel/plugin-transform-json-strings@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.9.tgz#c86db407cb827cded902a90c707d2781aaa89660" + integrity sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-literals@^7.25.2": - version "7.25.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.2.tgz#deb1ad14fc5490b9a65ed830e025bca849d8b5f3" - integrity sha512-HQI+HcTbm9ur3Z2DkO+jgESMAMcYLuN/A7NRw9juzxAezN9AvqvUTnpKP/9kkYANz6u7dFlAyOu44ejuGySlfw== +"@babel/plugin-transform-literals@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.9.tgz#1a1c6b4d4aa59bc4cad5b6b3a223a0abd685c9de" + integrity sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.8" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-logical-assignment-operators@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.7.tgz#a58fb6eda16c9dc8f9ff1c7b1ba6deb7f4694cb0" - integrity sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw== +"@babel/plugin-transform-logical-assignment-operators@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.9.tgz#b19441a8c39a2fda0902900b306ea05ae1055db7" + integrity sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-member-expression-literals@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.7.tgz#3b4454fb0e302e18ba4945ba3246acb1248315df" - integrity sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw== +"@babel/plugin-transform-member-expression-literals@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.9.tgz#63dff19763ea64a31f5e6c20957e6a25e41ed5de" + integrity sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-modules-amd@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.7.tgz#65090ed493c4a834976a3ca1cde776e6ccff32d7" - integrity sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg== +"@babel/plugin-transform-modules-amd@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.9.tgz#49ba478f2295101544abd794486cd3088dddb6c5" + integrity sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw== dependencies: - "@babel/helper-module-transforms" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-module-transforms" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-modules-commonjs@^7.24.8": - version "7.24.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.8.tgz#ab6421e564b717cb475d6fff70ae7f103536ea3c" - integrity sha512-WHsk9H8XxRs3JXKWFiqtQebdh9b/pTk4EgueygFzYlTKAg0Ud985mSevdNjdXdFBATSKVJGQXP1tv6aGbssLKA== +"@babel/plugin-transform-modules-commonjs@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.25.9.tgz#d165c8c569a080baf5467bda88df6425fc060686" + integrity sha512-dwh2Ol1jWwL2MgkCzUSOvfmKElqQcuswAZypBSUsScMXvgdT8Ekq5YA6TtqpTVWH+4903NmboMuH1o9i8Rxlyg== dependencies: - "@babel/helper-module-transforms" "^7.24.8" - "@babel/helper-plugin-utils" "^7.24.8" - "@babel/helper-simple-access" "^7.24.7" + "@babel/helper-module-transforms" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-simple-access" "^7.25.9" -"@babel/plugin-transform-modules-systemjs@^7.25.0": - version "7.25.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.0.tgz#8f46cdc5f9e5af74f3bd019485a6cbe59685ea33" - integrity sha512-YPJfjQPDXxyQWg/0+jHKj1llnY5f/R6a0p/vP4lPymxLu7Lvl4k2WMitqi08yxwQcCVUUdG9LCUj4TNEgAp3Jw== - dependencies: - "@babel/helper-module-transforms" "^7.25.0" - "@babel/helper-plugin-utils" "^7.24.8" - "@babel/helper-validator-identifier" "^7.24.7" - "@babel/traverse" "^7.25.0" +"@babel/plugin-transform-modules-systemjs@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.9.tgz#8bd1b43836269e3d33307151a114bcf3ba6793f8" + integrity sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA== + dependencies: + "@babel/helper-module-transforms" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-validator-identifier" "^7.25.9" + "@babel/traverse" "^7.25.9" -"@babel/plugin-transform-modules-umd@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.7.tgz#edd9f43ec549099620df7df24e7ba13b5c76efc8" - integrity sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A== +"@babel/plugin-transform-modules-umd@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.9.tgz#6710079cdd7c694db36529a1e8411e49fcbf14c9" + integrity sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw== dependencies: - "@babel/helper-module-transforms" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-module-transforms" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-named-capturing-groups-regex@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.7.tgz#9042e9b856bc6b3688c0c2e4060e9e10b1460923" - integrity sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g== +"@babel/plugin-transform-named-capturing-groups-regex@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.9.tgz#454990ae6cc22fd2a0fa60b3a2c6f63a38064e6a" + integrity sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-create-regexp-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-new-target@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.7.tgz#31ff54c4e0555cc549d5816e4ab39241dfb6ab00" - integrity sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA== +"@babel/plugin-transform-new-target@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.9.tgz#42e61711294b105c248336dcb04b77054ea8becd" + integrity sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-nullish-coalescing-operator@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.7.tgz#1de4534c590af9596f53d67f52a92f12db984120" - integrity sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ== +"@babel/plugin-transform-nullish-coalescing-operator@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.25.9.tgz#bcb1b0d9e948168102d5f7104375ca21c3266949" + integrity sha512-ENfftpLZw5EItALAD4WsY/KUWvhUlZndm5GC7G3evUsVeSJB6p0pBeLQUnRnBCBx7zV0RKQjR9kCuwrsIrjWog== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-numeric-separator@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.7.tgz#bea62b538c80605d8a0fac9b40f48e97efa7de63" - integrity sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA== +"@babel/plugin-transform-numeric-separator@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.9.tgz#bfed75866261a8b643468b0ccfd275f2033214a1" + integrity sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-object-rest-spread@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.7.tgz#d13a2b93435aeb8a197e115221cab266ba6e55d6" - integrity sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q== +"@babel/plugin-transform-object-rest-spread@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.9.tgz#0203725025074164808bcf1a2cfa90c652c99f18" + integrity sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg== dependencies: - "@babel/helper-compilation-targets" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.24.7" + "@babel/helper-compilation-targets" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-transform-parameters" "^7.25.9" -"@babel/plugin-transform-object-super@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.7.tgz#66eeaff7830bba945dd8989b632a40c04ed625be" - integrity sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg== +"@babel/plugin-transform-object-super@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.9.tgz#385d5de135162933beb4a3d227a2b7e52bb4cf03" + integrity sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/helper-replace-supers" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-replace-supers" "^7.25.9" -"@babel/plugin-transform-optional-catch-binding@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.7.tgz#00eabd883d0dd6a60c1c557548785919b6e717b4" - integrity sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA== +"@babel/plugin-transform-optional-catch-binding@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.9.tgz#10e70d96d52bb1f10c5caaac59ac545ea2ba7ff3" + integrity sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-optional-chaining@^7.24.7", "@babel/plugin-transform-optional-chaining@^7.24.8": - version "7.24.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.8.tgz#bb02a67b60ff0406085c13d104c99a835cdf365d" - integrity sha512-5cTOLSMs9eypEy8JUVvIKOu6NgvbJMnpG62VpIHrTmROdQ+L5mDAaI40g25k5vXti55JWNX5jCkq3HZxXBQANw== +"@babel/plugin-transform-optional-chaining@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.9.tgz#e142eb899d26ef715435f201ab6e139541eee7dd" + integrity sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A== dependencies: - "@babel/helper-plugin-utils" "^7.24.8" - "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" -"@babel/plugin-transform-parameters@^7.20.7", "@babel/plugin-transform-parameters@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz#5881f0ae21018400e320fc7eb817e529d1254b68" - integrity sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA== +"@babel/plugin-transform-parameters@^7.20.7", "@babel/plugin-transform-parameters@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.9.tgz#b856842205b3e77e18b7a7a1b94958069c7ba257" + integrity sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-private-methods@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.7.tgz#e6318746b2ae70a59d023d5cc1344a2ba7a75f5e" - integrity sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ== +"@babel/plugin-transform-private-methods@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.9.tgz#847f4139263577526455d7d3223cd8bda51e3b57" + integrity sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw== dependencies: - "@babel/helper-create-class-features-plugin" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-create-class-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-private-property-in-object@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.7.tgz#4eec6bc701288c1fab5f72e6a4bbc9d67faca061" - integrity sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA== +"@babel/plugin-transform-private-property-in-object@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.9.tgz#9c8b73e64e6cc3cbb2743633885a7dd2c385fe33" + integrity sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw== dependencies: - "@babel/helper-annotate-as-pure" "^7.24.7" - "@babel/helper-create-class-features-plugin" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/helper-annotate-as-pure" "^7.25.9" + "@babel/helper-create-class-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-property-literals@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.7.tgz#f0d2ed8380dfbed949c42d4d790266525d63bbdc" - integrity sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA== +"@babel/plugin-transform-property-literals@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.9.tgz#d72d588bd88b0dec8b62e36f6fda91cedfe28e3f" + integrity sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-react-display-name@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.24.7.tgz#9caff79836803bc666bcfe210aeb6626230c293b" - integrity sha512-H/Snz9PFxKsS1JLI4dJLtnJgCJRoo0AUm3chP6NYr+9En1JMKloheEiLIhlp5MDVznWo+H3AAC1Mc8lmUEpsgg== +"@babel/plugin-transform-react-display-name@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.25.9.tgz#4b79746b59efa1f38c8695065a92a9f5afb24f7d" + integrity sha512-KJfMlYIUxQB1CJfO3e0+h0ZHWOTLCPP115Awhaz8U0Zpq36Gl/cXlpoyMRnUWlhNUBAzldnCiAZNvCDj7CrKxQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-react-jsx-development@^7.16.7", "@babel/plugin-transform-react-jsx-development@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.24.7.tgz#eaee12f15a93f6496d852509a850085e6361470b" - integrity sha512-QG9EnzoGn+Qar7rxuW+ZOsbWOt56FvvI93xInqsZDC5fsekx1AlIO4KIJ5M+D0p0SqSH156EpmZyXq630B8OlQ== +"@babel/plugin-transform-react-jsx-development@^7.16.7", "@babel/plugin-transform-react-jsx-development@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.25.9.tgz#8fd220a77dd139c07e25225a903b8be8c829e0d7" + integrity sha512-9mj6rm7XVYs4mdLIpbZnHOYdpW42uoiBCTVowg7sP1thUOiANgMb4UtpRivR0pp5iL+ocvUv7X4mZgFRpJEzGw== dependencies: - "@babel/plugin-transform-react-jsx" "^7.24.7" + "@babel/plugin-transform-react-jsx" "^7.25.9" "@babel/plugin-transform-react-jsx-self@^7.16.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.24.7.tgz#66bff0248ea0b549972e733516ffad577477bdab" - integrity sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw== + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.25.9.tgz#c0b6cae9c1b73967f7f9eb2fca9536ba2fad2858" + integrity sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" "@babel/plugin-transform-react-jsx-source@^7.16.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.24.7.tgz#1198aab2548ad19582013815c938d3ebd8291ee3" - integrity sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ== + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.25.9.tgz#4c6b8daa520b5f155b5fb55547d7c9fa91417503" + integrity sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-react-jsx@^7.17.3", "@babel/plugin-transform-react-jsx@^7.24.7": - version "7.25.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.2.tgz#e37e8ebfa77e9f0b16ba07fadcb6adb47412227a" - integrity sha512-KQsqEAVBpU82NM/B/N9j9WOdphom1SZH3R+2V7INrQUH+V9EBFwZsEJl8eBIVeQE62FxJCc70jzEZwqU7RcVqA== +"@babel/plugin-transform-react-jsx@^7.17.3", "@babel/plugin-transform-react-jsx@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.9.tgz#06367940d8325b36edff5e2b9cbe782947ca4166" + integrity sha512-s5XwpQYCqGerXl+Pu6VDL3x0j2d82eiV77UJ8a2mDHAW7j9SWRqQ2y1fNo1Z74CdcYipl5Z41zvjj4Nfzq36rw== dependencies: - "@babel/helper-annotate-as-pure" "^7.24.7" - "@babel/helper-module-imports" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.8" - "@babel/plugin-syntax-jsx" "^7.24.7" - "@babel/types" "^7.25.2" + "@babel/helper-annotate-as-pure" "^7.25.9" + "@babel/helper-module-imports" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-syntax-jsx" "^7.25.9" + "@babel/types" "^7.25.9" -"@babel/plugin-transform-react-pure-annotations@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.24.7.tgz#bdd9d140d1c318b4f28b29a00fb94f97ecab1595" - integrity sha512-PLgBVk3fzbmEjBJ/u8kFzOqS9tUeDjiaWud/rRym/yjCo/M9cASPlnrd2ZmmZpQT40fOOrvR8jh+n8jikrOhNA== +"@babel/plugin-transform-react-pure-annotations@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.25.9.tgz#ea1c11b2f9dbb8e2d97025f43a3b5bc47e18ae62" + integrity sha512-KQ/Takk3T8Qzj5TppkS1be588lkbTp5uj7w6a0LeQaTMSckU/wK0oJ/pih+T690tkgI5jfmg2TqDJvd41Sj1Cg== dependencies: - "@babel/helper-annotate-as-pure" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-annotate-as-pure" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-regenerator@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.7.tgz#021562de4534d8b4b1851759fd7af4e05d2c47f8" - integrity sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA== +"@babel/plugin-transform-regenerator@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.25.9.tgz#03a8a4670d6cebae95305ac6defac81ece77740b" + integrity sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" regenerator-transform "^0.15.2" -"@babel/plugin-transform-reserved-words@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.7.tgz#80037fe4fbf031fc1125022178ff3938bb3743a4" - integrity sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ== +"@babel/plugin-transform-regexp-modifiers@^7.26.0": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.26.0.tgz#2f5837a5b5cd3842a919d8147e9903cc7455b850" + integrity sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/plugin-transform-reserved-words@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.9.tgz#0398aed2f1f10ba3f78a93db219b27ef417fb9ce" + integrity sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" "@babel/plugin-transform-runtime@^7.16.0", "@babel/plugin-transform-runtime@^7.5.5": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.24.7.tgz#00a5bfaf8c43cf5c8703a8a6e82b59d9c58f38ca" - integrity sha512-YqXjrk4C+a1kZjewqt+Mmu2UuV1s07y8kqcUf4qYLnoqemhR4gRQikhdAhSVJioMjVTu6Mo6pAbaypEA3jY6fw== + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.25.9.tgz#62723ea3f5b31ffbe676da9d6dae17138ae580ea" + integrity sha512-nZp7GlEl+yULJrClz0SwHPqir3lc0zsPrDHQUcxGspSL7AKrexNSEfTbfqnDNJUO13bgKyfuOLMF8Xqtu8j3YQ== dependencies: - "@babel/helper-module-imports" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-module-imports" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" babel-plugin-polyfill-corejs2 "^0.4.10" - babel-plugin-polyfill-corejs3 "^0.10.1" + babel-plugin-polyfill-corejs3 "^0.10.6" babel-plugin-polyfill-regenerator "^0.6.1" semver "^6.3.1" -"@babel/plugin-transform-shorthand-properties@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz#85448c6b996e122fa9e289746140aaa99da64e73" - integrity sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA== +"@babel/plugin-transform-shorthand-properties@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.9.tgz#bb785e6091f99f826a95f9894fc16fde61c163f2" + integrity sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-spread@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz#e8a38c0fde7882e0fb8f160378f74bd885cc7bb3" - integrity sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng== +"@babel/plugin-transform-spread@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.9.tgz#24a35153931b4ba3d13cec4a7748c21ab5514ef9" + integrity sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" -"@babel/plugin-transform-sticky-regex@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.7.tgz#96ae80d7a7e5251f657b5cf18f1ea6bf926f5feb" - integrity sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g== +"@babel/plugin-transform-sticky-regex@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.9.tgz#c7f02b944e986a417817b20ba2c504dfc1453d32" + integrity sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-template-literals@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.7.tgz#a05debb4a9072ae8f985bcf77f3f215434c8f8c8" - integrity sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw== +"@babel/plugin-transform-template-literals@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.25.9.tgz#6dbd4a24e8fad024df76d1fac6a03cf413f60fe1" + integrity sha512-o97AE4syN71M/lxrCtQByzphAdlYluKPDBzDVzMmfCobUjjhAryZV0AIpRPrxN0eAkxXO6ZLEScmt+PNhj2OTw== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-typeof-symbol@^7.24.8": - version "7.24.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.8.tgz#383dab37fb073f5bfe6e60c654caac309f92ba1c" - integrity sha512-adNTUpDCVnmAE58VEqKlAA6ZBlNkMnWD0ZcW76lyNFN3MJniyGFZfNwERVk8Ap56MCnXztmDr19T4mPTztcuaw== +"@babel/plugin-transform-typeof-symbol@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.25.9.tgz#224ba48a92869ddbf81f9b4a5f1204bbf5a2bc4b" + integrity sha512-v61XqUMiueJROUv66BVIOi0Fv/CUuZuZMl5NkRoCVxLAnMexZ0A3kMe7vvZ0nulxMuMp0Mk6S5hNh48yki08ZA== dependencies: - "@babel/helper-plugin-utils" "^7.24.8" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-unicode-escapes@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.7.tgz#2023a82ced1fb4971630a2e079764502c4148e0e" - integrity sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw== +"@babel/plugin-transform-unicode-escapes@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.9.tgz#a75ef3947ce15363fccaa38e2dd9bc70b2788b82" + integrity sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-unicode-property-regex@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.7.tgz#9073a4cd13b86ea71c3264659590ac086605bbcd" - integrity sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w== +"@babel/plugin-transform-unicode-property-regex@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.9.tgz#a901e96f2c1d071b0d1bb5dc0d3c880ce8f53dd3" + integrity sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-create-regexp-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-unicode-regex@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.7.tgz#dfc3d4a51127108099b19817c0963be6a2adf19f" - integrity sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg== +"@babel/plugin-transform-unicode-regex@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.9.tgz#5eae747fe39eacf13a8bd006a4fb0b5d1fa5e9b1" + integrity sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-create-regexp-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-unicode-sets-regex@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.7.tgz#d40705d67523803a576e29c63cef6e516b858ed9" - integrity sha512-2G8aAvF4wy1w/AGZkemprdGMRg5o6zPNhbHVImRz3lss55TYCBd6xStN19rt8XJHq20sqV0JbyWjOWwQRwV/wg== +"@babel/plugin-transform-unicode-sets-regex@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.9.tgz#65114c17b4ffc20fa5b163c63c70c0d25621fabe" + integrity sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-create-regexp-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" "@babel/preset-env@^7.16.0": - version "7.25.3" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.25.3.tgz#0bf4769d84ac51d1073ab4a86f00f30a3a83c67c" - integrity sha512-QsYW7UeAaXvLPX9tdVliMJE7MD7M6MLYVTovRTIwhoYQVFHR1rM4wO8wqAezYi3/BpSD+NzVCZ69R6smWiIi8g== - dependencies: - "@babel/compat-data" "^7.25.2" - "@babel/helper-compilation-targets" "^7.25.2" - "@babel/helper-plugin-utils" "^7.24.8" - "@babel/helper-validator-option" "^7.24.8" - "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.25.3" - "@babel/plugin-bugfix-safari-class-field-initializer-scope" "^7.25.0" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.25.0" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.24.7" - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.25.0" + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.26.0.tgz#30e5c6bc1bcc54865bff0c5a30f6d4ccdc7fa8b1" + integrity sha512-H84Fxq0CQJNdPFT2DrfnylZ3cf5K43rGfWK4LJGPpjKHiZlk0/RzwEus3PDDZZg+/Er7lCA03MVacueUuXdzfw== + dependencies: + "@babel/compat-data" "^7.26.0" + "@babel/helper-compilation-targets" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-validator-option" "^7.25.9" + "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.25.9" + "@babel/plugin-bugfix-safari-class-field-initializer-scope" "^7.25.9" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.25.9" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.25.9" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.25.9" "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-class-properties" "^7.12.13" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-syntax-import-assertions" "^7.24.7" - "@babel/plugin-syntax-import-attributes" "^7.24.7" - "@babel/plugin-syntax-import-meta" "^7.10.4" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - "@babel/plugin-syntax-top-level-await" "^7.14.5" + "@babel/plugin-syntax-import-assertions" "^7.26.0" + "@babel/plugin-syntax-import-attributes" "^7.26.0" "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" - "@babel/plugin-transform-arrow-functions" "^7.24.7" - "@babel/plugin-transform-async-generator-functions" "^7.25.0" - "@babel/plugin-transform-async-to-generator" "^7.24.7" - "@babel/plugin-transform-block-scoped-functions" "^7.24.7" - "@babel/plugin-transform-block-scoping" "^7.25.0" - "@babel/plugin-transform-class-properties" "^7.24.7" - "@babel/plugin-transform-class-static-block" "^7.24.7" - "@babel/plugin-transform-classes" "^7.25.0" - "@babel/plugin-transform-computed-properties" "^7.24.7" - "@babel/plugin-transform-destructuring" "^7.24.8" - "@babel/plugin-transform-dotall-regex" "^7.24.7" - "@babel/plugin-transform-duplicate-keys" "^7.24.7" - "@babel/plugin-transform-duplicate-named-capturing-groups-regex" "^7.25.0" - "@babel/plugin-transform-dynamic-import" "^7.24.7" - "@babel/plugin-transform-exponentiation-operator" "^7.24.7" - "@babel/plugin-transform-export-namespace-from" "^7.24.7" - "@babel/plugin-transform-for-of" "^7.24.7" - "@babel/plugin-transform-function-name" "^7.25.1" - "@babel/plugin-transform-json-strings" "^7.24.7" - "@babel/plugin-transform-literals" "^7.25.2" - "@babel/plugin-transform-logical-assignment-operators" "^7.24.7" - "@babel/plugin-transform-member-expression-literals" "^7.24.7" - "@babel/plugin-transform-modules-amd" "^7.24.7" - "@babel/plugin-transform-modules-commonjs" "^7.24.8" - "@babel/plugin-transform-modules-systemjs" "^7.25.0" - "@babel/plugin-transform-modules-umd" "^7.24.7" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.24.7" - "@babel/plugin-transform-new-target" "^7.24.7" - "@babel/plugin-transform-nullish-coalescing-operator" "^7.24.7" - "@babel/plugin-transform-numeric-separator" "^7.24.7" - "@babel/plugin-transform-object-rest-spread" "^7.24.7" - "@babel/plugin-transform-object-super" "^7.24.7" - "@babel/plugin-transform-optional-catch-binding" "^7.24.7" - "@babel/plugin-transform-optional-chaining" "^7.24.8" - "@babel/plugin-transform-parameters" "^7.24.7" - "@babel/plugin-transform-private-methods" "^7.24.7" - "@babel/plugin-transform-private-property-in-object" "^7.24.7" - "@babel/plugin-transform-property-literals" "^7.24.7" - "@babel/plugin-transform-regenerator" "^7.24.7" - "@babel/plugin-transform-reserved-words" "^7.24.7" - "@babel/plugin-transform-shorthand-properties" "^7.24.7" - "@babel/plugin-transform-spread" "^7.24.7" - "@babel/plugin-transform-sticky-regex" "^7.24.7" - "@babel/plugin-transform-template-literals" "^7.24.7" - "@babel/plugin-transform-typeof-symbol" "^7.24.8" - "@babel/plugin-transform-unicode-escapes" "^7.24.7" - "@babel/plugin-transform-unicode-property-regex" "^7.24.7" - "@babel/plugin-transform-unicode-regex" "^7.24.7" - "@babel/plugin-transform-unicode-sets-regex" "^7.24.7" + "@babel/plugin-transform-arrow-functions" "^7.25.9" + "@babel/plugin-transform-async-generator-functions" "^7.25.9" + "@babel/plugin-transform-async-to-generator" "^7.25.9" + "@babel/plugin-transform-block-scoped-functions" "^7.25.9" + "@babel/plugin-transform-block-scoping" "^7.25.9" + "@babel/plugin-transform-class-properties" "^7.25.9" + "@babel/plugin-transform-class-static-block" "^7.26.0" + "@babel/plugin-transform-classes" "^7.25.9" + "@babel/plugin-transform-computed-properties" "^7.25.9" + "@babel/plugin-transform-destructuring" "^7.25.9" + "@babel/plugin-transform-dotall-regex" "^7.25.9" + "@babel/plugin-transform-duplicate-keys" "^7.25.9" + "@babel/plugin-transform-duplicate-named-capturing-groups-regex" "^7.25.9" + "@babel/plugin-transform-dynamic-import" "^7.25.9" + "@babel/plugin-transform-exponentiation-operator" "^7.25.9" + "@babel/plugin-transform-export-namespace-from" "^7.25.9" + "@babel/plugin-transform-for-of" "^7.25.9" + "@babel/plugin-transform-function-name" "^7.25.9" + "@babel/plugin-transform-json-strings" "^7.25.9" + "@babel/plugin-transform-literals" "^7.25.9" + "@babel/plugin-transform-logical-assignment-operators" "^7.25.9" + "@babel/plugin-transform-member-expression-literals" "^7.25.9" + "@babel/plugin-transform-modules-amd" "^7.25.9" + "@babel/plugin-transform-modules-commonjs" "^7.25.9" + "@babel/plugin-transform-modules-systemjs" "^7.25.9" + "@babel/plugin-transform-modules-umd" "^7.25.9" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.25.9" + "@babel/plugin-transform-new-target" "^7.25.9" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.25.9" + "@babel/plugin-transform-numeric-separator" "^7.25.9" + "@babel/plugin-transform-object-rest-spread" "^7.25.9" + "@babel/plugin-transform-object-super" "^7.25.9" + "@babel/plugin-transform-optional-catch-binding" "^7.25.9" + "@babel/plugin-transform-optional-chaining" "^7.25.9" + "@babel/plugin-transform-parameters" "^7.25.9" + "@babel/plugin-transform-private-methods" "^7.25.9" + "@babel/plugin-transform-private-property-in-object" "^7.25.9" + "@babel/plugin-transform-property-literals" "^7.25.9" + "@babel/plugin-transform-regenerator" "^7.25.9" + "@babel/plugin-transform-regexp-modifiers" "^7.26.0" + "@babel/plugin-transform-reserved-words" "^7.25.9" + "@babel/plugin-transform-shorthand-properties" "^7.25.9" + "@babel/plugin-transform-spread" "^7.25.9" + "@babel/plugin-transform-sticky-regex" "^7.25.9" + "@babel/plugin-transform-template-literals" "^7.25.9" + "@babel/plugin-transform-typeof-symbol" "^7.25.9" + "@babel/plugin-transform-unicode-escapes" "^7.25.9" + "@babel/plugin-transform-unicode-property-regex" "^7.25.9" + "@babel/plugin-transform-unicode-regex" "^7.25.9" + "@babel/plugin-transform-unicode-sets-regex" "^7.25.9" "@babel/preset-modules" "0.1.6-no-external-plugins" babel-plugin-polyfill-corejs2 "^0.4.10" - babel-plugin-polyfill-corejs3 "^0.10.4" + babel-plugin-polyfill-corejs3 "^0.10.6" babel-plugin-polyfill-regenerator "^0.6.1" - core-js-compat "^3.37.1" + core-js-compat "^3.38.1" semver "^6.3.1" "@babel/preset-modules@0.1.6-no-external-plugins": @@ -1004,72 +894,66 @@ esutils "^2.0.2" "@babel/preset-react@^7.16.0": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.24.7.tgz#480aeb389b2a798880bf1f889199e3641cbb22dc" - integrity sha512-AAH4lEkpmzFWrGVlHaxJB7RLH21uPQ9+He+eFLWHmF9IuFQVugz8eAsamaW0DXRrTfco5zj1wWtpdcXJUOfsag== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/helper-validator-option" "^7.24.7" - "@babel/plugin-transform-react-display-name" "^7.24.7" - "@babel/plugin-transform-react-jsx" "^7.24.7" - "@babel/plugin-transform-react-jsx-development" "^7.24.7" - "@babel/plugin-transform-react-pure-annotations" "^7.24.7" - -"@babel/regjsgen@^0.8.0": - version "0.8.0" - resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" - integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.25.9.tgz#5f473035dc2094bcfdbc7392d0766bd42dce173e" + integrity sha512-D3to0uSPiWE7rBrdIICCd0tJSIGpLaaGptna2+w7Pft5xMqLpA1sz99DK5TZ1TjGbdQ/VI1eCSZ06dv3lT4JOw== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-validator-option" "^7.25.9" + "@babel/plugin-transform-react-display-name" "^7.25.9" + "@babel/plugin-transform-react-jsx" "^7.25.9" + "@babel/plugin-transform-react-jsx-development" "^7.25.9" + "@babel/plugin-transform-react-pure-annotations" "^7.25.9" "@babel/runtime-corejs3@^7.10.2": - version "7.25.0" - resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.25.0.tgz#0a318b66dfc765ad10562d829fea372ed7e1eb7d" - integrity sha512-BOehWE7MgQ8W8Qn0CQnMtg2tHPHPulcS/5AVpFvs2KCK1ET+0WqZqPvnpRpFN81gYoFopdIEJX9Sgjw3ZBccPg== + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.26.0.tgz#5af6bed16073eb4a0191233d61e158a5c768c430" + integrity sha512-YXHu5lN8kJCb1LOb9PgV6pvak43X2h4HvRApcN5SdWeaItQOzfn1hgP6jasD6KWQyJDBxrVmA9o9OivlnNJK/w== dependencies: core-js-pure "^3.30.2" regenerator-runtime "^0.14.0" "@babel/runtime@^7.10.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.5", "@babel/runtime@^7.14.6", "@babel/runtime@^7.16.0", "@babel/runtime@^7.17.8", "@babel/runtime@^7.18.3", "@babel/runtime@^7.21.0", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7": - version "7.25.0" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.25.0.tgz#3af9a91c1b739c569d5d80cc917280919c544ecb" - integrity sha512-7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw== + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.26.0.tgz#8600c2f595f277c60815256418b85356a65173c1" + integrity sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw== dependencies: regenerator-runtime "^0.14.0" "@babel/standalone@^7.17.11": - version "7.25.3" - resolved "https://registry.yarnpkg.com/@babel/standalone/-/standalone-7.25.3.tgz#da5eaa9e0b0c2da360fe033eb580400739b03bb9" - integrity sha512-uR+EoBqIIIvKGCG7fOj7HKupu3zVObiMfdEwoPZfVCPpcWJaZ1PkshaP5/6cl6BKAm1Zcv25O1rf+uoQ7V8nqA== - -"@babel/template@^7.24.7", "@babel/template@^7.25.0": - version "7.25.0" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.25.0.tgz#e733dc3134b4fede528c15bc95e89cb98c52592a" - integrity sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q== - dependencies: - "@babel/code-frame" "^7.24.7" - "@babel/parser" "^7.25.0" - "@babel/types" "^7.25.0" - -"@babel/traverse@^7.24.7", "@babel/traverse@^7.24.8", "@babel/traverse@^7.25.0", "@babel/traverse@^7.25.1", "@babel/traverse@^7.25.2", "@babel/traverse@^7.25.3", "@babel/traverse@^7.4.5", "@babel/traverse@^7.7.0": - version "7.25.3" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.25.3.tgz#f1b901951c83eda2f3e29450ce92743783373490" - integrity sha512-HefgyP1x754oGCsKmV5reSmtV7IXj/kpaE1XYY+D9G5PvKKoFfSbiS4M77MdjuwlZKDIKFCffq9rPU+H/s3ZdQ== - dependencies: - "@babel/code-frame" "^7.24.7" - "@babel/generator" "^7.25.0" - "@babel/parser" "^7.25.3" - "@babel/template" "^7.25.0" - "@babel/types" "^7.25.2" + version "7.26.2" + resolved "https://registry.yarnpkg.com/@babel/standalone/-/standalone-7.26.2.tgz#a1fdf2d477a1f3d2828f0551b5dc14c44d4e127f" + integrity sha512-i2VbegsRfwa9yq3xmfDX3tG2yh9K0cCqwpSyVG2nPxifh0EOnucAZUeO/g4lW2Zfg03aPJNtPfxQbDHzXc7H+w== + +"@babel/template@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.25.9.tgz#ecb62d81a8a6f5dc5fe8abfc3901fc52ddf15016" + integrity sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg== + dependencies: + "@babel/code-frame" "^7.25.9" + "@babel/parser" "^7.25.9" + "@babel/types" "^7.25.9" + +"@babel/traverse@^7.25.9", "@babel/traverse@^7.4.5", "@babel/traverse@^7.7.0": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.25.9.tgz#a50f8fe49e7f69f53de5bea7e413cd35c5e13c84" + integrity sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw== + dependencies: + "@babel/code-frame" "^7.25.9" + "@babel/generator" "^7.25.9" + "@babel/parser" "^7.25.9" + "@babel/template" "^7.25.9" + "@babel/types" "^7.25.9" debug "^4.3.1" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.21.3", "@babel/types@^7.24.7", "@babel/types@^7.24.8", "@babel/types@^7.25.0", "@babel/types@^7.25.2", "@babel/types@^7.4.4", "@babel/types@^7.7.0": - version "7.25.2" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.25.2.tgz#55fb231f7dc958cd69ea141a4c2997e819646125" - integrity sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q== +"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.21.3", "@babel/types@^7.25.9", "@babel/types@^7.26.0", "@babel/types@^7.4.4", "@babel/types@^7.7.0": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.26.0.tgz#deabd08d6b753bc8e0f198f8709fb575e31774ff" + integrity sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA== dependencies: - "@babel/helper-string-parser" "^7.24.8" - "@babel/helper-validator-identifier" "^7.24.7" - to-fast-properties "^2.0.0" + "@babel/helper-string-parser" "^7.25.9" + "@babel/helper-validator-identifier" "^7.25.9" "@balancer-labs/sdk@^1.1.6": version "1.1.6" @@ -1265,38 +1149,6 @@ dependencies: chalk "^4.0.0" -"@cowprotocol/events@^1.5.0": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@cowprotocol/events/-/events-1.5.0.tgz#052e8c8d4462ffe64b81152f4ac3d90658a920e0" - integrity sha512-n7HTpd6ADSZrjwdtT9e79dfl1OWCqVHavm8l96FucW/De8ZCdFhPMsxLLdjdJlhWos3oFgpLjQNmthJvpzEl8A== - dependencies: - "@cowprotocol/types" "^1.2.0" - -"@cowprotocol/iframe-transport@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@cowprotocol/iframe-transport/-/iframe-transport-1.1.0.tgz#18cf735134f05ecc4877a93dda5bd621c563de69" - integrity sha512-sT3B8WwmJqz1FhIgDtpmEZcDg3EFkTGevsPddLShSwdcaqV7fYsVeYv4JgB/b0fwIIVLO0dHdrUhoQh9DTihog== - -"@cowprotocol/types@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@cowprotocol/types/-/types-1.2.0.tgz#b036c7959122118d278e67200da2aeb88d5aed09" - integrity sha512-K/jOyLtffgEFs52hRKX7tyDHtIA3asnsB9So6lINCPfNetr1GhM818+kf+f3sPtOHWsBpL3pTkjJphzDVCQntQ== - -"@cowprotocol/widget-lib@^0.16.0": - version "0.16.0" - resolved "https://registry.yarnpkg.com/@cowprotocol/widget-lib/-/widget-lib-0.16.0.tgz#75874201e5bcc27c12c79b9fa657979b7e261885" - integrity sha512-QAIFhpiWJXslWIxmX6KaoJE/ohYiOxwylApB7GO4TIx+HtvAMEZUorvPcb/ueF8K9P2zZMUGGZsiy83sOC5big== - dependencies: - "@cowprotocol/events" "^1.5.0" - "@cowprotocol/iframe-transport" "^1.1.0" - -"@cowprotocol/widget-react@^0.12.0": - version "0.12.0" - resolved "https://registry.yarnpkg.com/@cowprotocol/widget-react/-/widget-react-0.12.0.tgz#d45ad64ac3baf9d142f3df1b3a91f46a806adbf6" - integrity sha512-mN/+lMUGJAAKVRt3gin3NfFQqmHphbq23tdPvAl5pTGQ9FdhN+4YHmAjiWnxXR87slmNvwMYPrOkfrCPtR1+GA== - dependencies: - "@cowprotocol/widget-lib" "^0.16.0" - "@cspotcode/source-map-support@^0.8.0": version "0.8.1" resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" @@ -1382,10 +1234,10 @@ tunnel-agent "^0.6.0" uuid "^8.3.2" -"@cypress/request@^3.0.1": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@cypress/request/-/request-3.0.1.tgz#72d7d5425236a2413bd3d8bb66d02d9dc3168960" - integrity sha512-TWivJlJi8ZDx2wGOw1dbLuHJKUYX7bWySw377nlnGOW3hP9/MUKIsEdXT/YngWxVdgNCHRBmFlBipE+5/2ZZlQ== +"@cypress/request@^3.0.6": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@cypress/request/-/request-3.0.6.tgz#f5580add6acee0e183b4d4e07eff4f31327ae12b" + integrity sha512-fi0eVdCOtKu5Ed6+E8mYxUF6ZTFJDZvHogCBelM0xVXmrDEkyM22gRArQzq1YcHPm1V47Vf/iAD+WgVdUlJCGg== dependencies: aws-sign2 "~0.7.0" aws4 "^1.8.0" @@ -1393,16 +1245,16 @@ combined-stream "~1.0.6" extend "~3.0.2" forever-agent "~0.6.1" - form-data "~2.3.2" - http-signature "~1.3.6" + form-data "~4.0.0" + http-signature "~1.4.0" is-typedarray "~1.0.0" isstream "~0.1.2" json-stringify-safe "~5.0.1" mime-types "~2.1.19" performance-now "^2.1.0" - qs "6.10.4" + qs "6.13.0" safe-buffer "^5.1.2" - tough-cookie "^4.1.3" + tough-cookie "^5.0.0" tunnel-agent "^0.6.0" uuid "^8.3.2" @@ -1505,9 +1357,9 @@ integrity sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g== "@emotion/is-prop-valid@^1.1.0": - version "1.3.0" - resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.3.0.tgz#bd84ba972195e8a2d42462387581560ef780e4e2" - integrity sha512-SHetuSLvJDzuNbOdtPVbq6yMMMlLoW5Q94uDqJZqy50gcmAjxFkVqmzqSGEFq9gT2iMuIeKV1PXVWmvUhuZLlQ== + version "1.3.1" + resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.3.1.tgz#8d5cf1132f836d7adbe42cf0b49df7816fc88240" + integrity sha512-/ACwoqx7XQi9knQs/G0qKvv5teDMhD7bXYns9N/wM8ah8iNb8jZ2uNO0YOgiq2o2poIvVtJS2YALasQuMSQ7Kw== dependencies: "@emotion/memoize" "^0.9.0" @@ -1517,28 +1369,28 @@ integrity sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ== "@emotion/react@^11.1.1": - version "11.13.0" - resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.13.0.tgz#a9ebf827b98220255e5760dac89fa2d38ca7b43d" - integrity sha512-WkL+bw1REC2VNV1goQyfxjx1GYJkcc23CRQkXX+vZNLINyfI7o+uUn/rTGPt/xJ3bJHd5GcljgnxHf4wRw5VWQ== + version "11.13.3" + resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.13.3.tgz#a69d0de2a23f5b48e0acf210416638010e4bd2e4" + integrity sha512-lIsdU6JNrmYfJ5EbUCf4xW1ovy5wKQ2CkPRM4xogziOxH1nXxBSjpC9YqbFAP7circxMfYp+6x676BqWcEiixg== dependencies: "@babel/runtime" "^7.18.3" "@emotion/babel-plugin" "^11.12.0" "@emotion/cache" "^11.13.0" - "@emotion/serialize" "^1.3.0" + "@emotion/serialize" "^1.3.1" "@emotion/use-insertion-effect-with-fallbacks" "^1.1.0" "@emotion/utils" "^1.4.0" "@emotion/weak-memoize" "^0.4.0" hoist-non-react-statics "^3.3.1" -"@emotion/serialize@^1.0.0", "@emotion/serialize@^1.2.0", "@emotion/serialize@^1.3.0": - version "1.3.0" - resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.3.0.tgz#e07cadfc967a4e7816e0c3ffaff4c6ce05cb598d" - integrity sha512-jACuBa9SlYajnpIVXB+XOXnfJHyckDfe6fOpORIM6yhBDlqGuExvDdZYHDQGoDf3bZXGv7tNr+LpLjJqiEQ6EA== +"@emotion/serialize@^1.0.0", "@emotion/serialize@^1.2.0", "@emotion/serialize@^1.3.1": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.3.2.tgz#e1c1a2e90708d5d85d81ccaee2dfeb3cc0cccf7a" + integrity sha512-grVnMvVPK9yUVE6rkKfAJlYZgo0cu3l9iMC77V7DW6E1DUIrU68pSEXRmFZFOFB1QFo57TncmOcvcbMDWsL4yA== dependencies: "@emotion/hash" "^0.9.2" "@emotion/memoize" "^0.9.0" - "@emotion/unitless" "^0.9.0" - "@emotion/utils" "^1.4.0" + "@emotion/unitless" "^0.10.0" + "@emotion/utils" "^1.4.1" csstype "^3.0.2" "@emotion/sheet@^1.4.0": @@ -1551,25 +1403,25 @@ resolved "https://registry.yarnpkg.com/@emotion/stylis/-/stylis-0.8.5.tgz#deacb389bd6ee77d1e7fcaccce9e16c5c7e78e04" integrity sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ== +"@emotion/unitless@^0.10.0": + version "0.10.0" + resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.10.0.tgz#2af2f7c7e5150f497bdabd848ce7b218a27cf745" + integrity sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg== + "@emotion/unitless@^0.7.4": version "0.7.5" resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.5.tgz#77211291c1900a700b8a78cfafda3160d76949ed" integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg== -"@emotion/unitless@^0.9.0": - version "0.9.0" - resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.9.0.tgz#8e5548f072bd67b8271877e51c0f95c76a66cbe2" - integrity sha512-TP6GgNZtmtFaFcsOgExdnfxLLpRDla4Q66tnenA9CktvVSdNKDvMVuUah4QvWPIpNjrWsGg3qeGo9a43QooGZQ== - "@emotion/use-insertion-effect-with-fallbacks@^1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.1.0.tgz#1a818a0b2c481efba0cf34e5ab1e0cb2dcb9dfaf" integrity sha512-+wBOcIV5snwGgI2ya3u99D7/FJquOIniQT1IKyDsBmEgwvpxMNeS65Oib7OnE2d2aY+3BU4OiH+0Wchf8yk3Hw== -"@emotion/utils@^1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.4.0.tgz#262f1d02aaedb2ec91c83a0955dd47822ad5fbdd" - integrity sha512-spEnrA1b6hDR/C68lC2M7m6ALPUHZC0lIY7jAS/B/9DuuO1ZP04eov8SMv/6fwRd8pzmsn2AuJEznRREWlQrlQ== +"@emotion/utils@^1.4.0", "@emotion/utils@^1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.4.1.tgz#b3adbb43de12ee2149541c4f1337d2eb7774f0ad" + integrity sha512-BymCXzCG3r72VKJxaYVwOXATqXIZ85cuvg0YOUDxMGNrKc1DJRZk8MgV5wyXRyEayIMd4FuXJIUgTBXvDNW5cA== "@emotion/weak-memoize@^0.4.0": version "0.4.0" @@ -1860,16 +1712,16 @@ integrity sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw== "@eslint-community/eslint-utils@^4.2.0": - version "4.4.0" - resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" - integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== + version "4.4.1" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz#d1145bf2c20132d6400495d6df4bf59362fd9d56" + integrity sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA== dependencies: - eslint-visitor-keys "^3.3.0" + eslint-visitor-keys "^3.4.3" "@eslint-community/regexpp@^4.4.0": - version "4.11.0" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.11.0.tgz#b0ffd0312b4a3fd2d6f77237e7248a5ad3a680ae" - integrity sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A== + version "4.12.1" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.1.tgz#cfc6cffe39df390a3841cde2abccf92eaa7ae0e0" + integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ== "@eslint/eslintrc@^0.4.3": version "0.4.3" @@ -2648,13 +2500,6 @@ dependencies: "@noble/hashes" "1.3.2" -"@noble/curves@1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.4.0.tgz#f05771ef64da724997f69ee1261b2417a49522d6" - integrity sha512-p+4cb332SFCrReJkCYe8Xzm0OWi4Jji5jVdIZRL/PmacmDkFNw6MrrV+gGpiPxLHbV+zKFRywUWbaseT+tZRXg== - dependencies: - "@noble/hashes" "1.4.0" - "@noble/curves@1.4.2", "@noble/curves@~1.4.0": version "1.4.2" resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.4.2.tgz#40309198c76ed71bc6dbf7ba24e81ceb4d0d1fe9" @@ -2662,23 +2507,28 @@ dependencies: "@noble/hashes" "1.4.0" -"@noble/curves@^1.4.0": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.5.0.tgz#7a9b9b507065d516e6dce275a1e31db8d2a100dd" - integrity sha512-J5EKamIHnKPyClwVrzmaf5wSdQXgdHcPZIZLu3bwnbeCx8/7NPK5q2ZBWF+5FvYGByjiQQsJYX6jfgB2wDPn3A== +"@noble/curves@1.6.0", "@noble/curves@^1.4.0", "@noble/curves@~1.6.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.6.0.tgz#be5296ebcd5a1730fccea4786d420f87abfeb40b" + integrity sha512-TlaHRXDehJuRNR9TfZDNQ45mMEd5dwUwmicsafcIX4SsNiqnCHKjE/1alYPd/lDRVhxdhUAlv8uEhMCI5zjIJQ== dependencies: - "@noble/hashes" "1.4.0" + "@noble/hashes" "1.5.0" "@noble/hashes@1.3.2": version "1.3.2" resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.2.tgz#6f26dbc8fbc7205873ce3cee2f690eba0d421b39" integrity sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ== -"@noble/hashes@1.4.0", "@noble/hashes@^1.4.0", "@noble/hashes@~1.4.0": +"@noble/hashes@1.4.0", "@noble/hashes@~1.4.0": version "1.4.0" resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.4.0.tgz#45814aa329f30e4fe0ba49426f49dfccdd066426" integrity sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg== +"@noble/hashes@1.5.0", "@noble/hashes@^1.4.0", "@noble/hashes@~1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.5.0.tgz#abadc5ca20332db2b1b2aa3e496e9af1213570b0" + integrity sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA== + "@noble/hashes@~1.3.0", "@noble/hashes@~1.3.2": version "1.3.3" resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.3.tgz#39908da56a4adc270147bb07968bf3b16cfe1699" @@ -2710,97 +2560,103 @@ resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-ethers/-/hardhat-ethers-2.2.1.tgz#8057b43566a0e41abeb8142064a3c0d3f23dca86" integrity sha512-RHWYwnxryWR8hzRmU4Jm/q4gzvXpetUOJ4OPlwH2YARcDB+j79+yAYCwO0lN1SUOb4++oOTJEe6AWLEc42LIvg== -"@parcel/watcher-android-arm64@2.4.1": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.4.1.tgz#c2c19a3c442313ff007d2d7a9c2c1dd3e1c9ca84" - integrity sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg== +"@parcel/watcher-android-arm64@2.5.0": + version "2.5.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.0.tgz#e32d3dda6647791ee930556aee206fcd5ea0fb7a" + integrity sha512-qlX4eS28bUcQCdribHkg/herLe+0A9RyYC+mm2PXpncit8z5b3nSqGVzMNR3CmtAOgRutiZ02eIJJgP/b1iEFQ== -"@parcel/watcher-darwin-arm64@2.4.1": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.4.1.tgz#c817c7a3b4f3a79c1535bfe54a1c2818d9ffdc34" - integrity sha512-ln41eihm5YXIY043vBrrHfn94SIBlqOWmoROhsMVTSXGh0QahKGy77tfEywQ7v3NywyxBBkGIfrWRHm0hsKtzA== +"@parcel/watcher-darwin-arm64@2.5.0": + version "2.5.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.0.tgz#0d9e680b7e9ec1c8f54944f1b945aa8755afb12f" + integrity sha512-hyZ3TANnzGfLpRA2s/4U1kbw2ZI4qGxaRJbBH2DCSREFfubMswheh8TeiC1sGZ3z2jUf3s37P0BBlrD3sjVTUw== -"@parcel/watcher-darwin-x64@2.4.1": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.4.1.tgz#1a3f69d9323eae4f1c61a5f480a59c478d2cb020" - integrity sha512-yrw81BRLjjtHyDu7J61oPuSoeYWR3lDElcPGJyOvIXmor6DEo7/G2u1o7I38cwlcoBHQFULqF6nesIX3tsEXMg== +"@parcel/watcher-darwin-x64@2.5.0": + version "2.5.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.0.tgz#f9f1d5ce9d5878d344f14ef1856b7a830c59d1bb" + integrity sha512-9rhlwd78saKf18fT869/poydQK8YqlU26TMiNg7AIu7eBp9adqbJZqmdFOsbZ5cnLp5XvRo9wcFmNHgHdWaGYA== -"@parcel/watcher-freebsd-x64@2.4.1": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.4.1.tgz#0d67fef1609f90ba6a8a662bc76a55fc93706fc8" - integrity sha512-TJa3Pex/gX3CWIx/Co8k+ykNdDCLx+TuZj3f3h7eOjgpdKM+Mnix37RYsYU4LHhiYJz3DK5nFCCra81p6g050w== +"@parcel/watcher-freebsd-x64@2.5.0": + version "2.5.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.0.tgz#2b77f0c82d19e84ff4c21de6da7f7d096b1a7e82" + integrity sha512-syvfhZzyM8kErg3VF0xpV8dixJ+RzbUaaGaeb7uDuz0D3FK97/mZ5AJQ3XNnDsXX7KkFNtyQyFrXZzQIcN49Tw== -"@parcel/watcher-linux-arm-glibc@2.4.1": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.4.1.tgz#ce5b340da5829b8e546bd00f752ae5292e1c702d" - integrity sha512-4rVYDlsMEYfa537BRXxJ5UF4ddNwnr2/1O4MHM5PjI9cvV2qymvhwZSFgXqbS8YoTk5i/JR0L0JDs69BUn45YA== +"@parcel/watcher-linux-arm-glibc@2.5.0": + version "2.5.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.0.tgz#92ed322c56dbafa3d2545dcf2803334aee131e42" + integrity sha512-0VQY1K35DQET3dVYWpOaPFecqOT9dbuCfzjxoQyif1Wc574t3kOSkKevULddcR9znz1TcklCE7Ht6NIxjvTqLA== -"@parcel/watcher-linux-arm64-glibc@2.4.1": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.4.1.tgz#6d7c00dde6d40608f9554e73998db11b2b1ff7c7" - integrity sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA== +"@parcel/watcher-linux-arm-musl@2.5.0": + version "2.5.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.0.tgz#cd48e9bfde0cdbbd2ecd9accfc52967e22f849a4" + integrity sha512-6uHywSIzz8+vi2lAzFeltnYbdHsDm3iIB57d4g5oaB9vKwjb6N6dRIgZMujw4nm5r6v9/BQH0noq6DzHrqr2pA== -"@parcel/watcher-linux-arm64-musl@2.4.1": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.4.1.tgz#bd39bc71015f08a4a31a47cd89c236b9d6a7f635" - integrity sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA== +"@parcel/watcher-linux-arm64-glibc@2.5.0": + version "2.5.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.0.tgz#7b81f6d5a442bb89fbabaf6c13573e94a46feb03" + integrity sha512-BfNjXwZKxBy4WibDb/LDCriWSKLz+jJRL3cM/DllnHH5QUyoiUNEp3GmL80ZqxeumoADfCCP19+qiYiC8gUBjA== -"@parcel/watcher-linux-x64-glibc@2.4.1": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.4.1.tgz#0ce29966b082fb6cdd3de44f2f74057eef2c9e39" - integrity sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg== +"@parcel/watcher-linux-arm64-musl@2.5.0": + version "2.5.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.0.tgz#dcb8ff01077cdf59a18d9e0a4dff7a0cfe5fd732" + integrity sha512-S1qARKOphxfiBEkwLUbHjCY9BWPdWnW9j7f7Hb2jPplu8UZ3nes7zpPOW9bkLbHRvWM0WDTsjdOTUgW0xLBN1Q== -"@parcel/watcher-linux-x64-musl@2.4.1": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.4.1.tgz#d2ebbf60e407170bb647cd6e447f4f2bab19ad16" - integrity sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ== +"@parcel/watcher-linux-x64-glibc@2.5.0": + version "2.5.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.0.tgz#2e254600fda4e32d83942384d1106e1eed84494d" + integrity sha512-d9AOkusyXARkFD66S6zlGXyzx5RvY+chTP9Jp0ypSTC9d4lzyRs9ovGf/80VCxjKddcUvnsGwCHWuF2EoPgWjw== + +"@parcel/watcher-linux-x64-musl@2.5.0": + version "2.5.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.0.tgz#01fcea60fedbb3225af808d3f0a7b11229792eef" + integrity sha512-iqOC+GoTDoFyk/VYSFHwjHhYrk8bljW6zOhPuhi5t9ulqiYq1togGJB5e3PwYVFFfeVgc6pbz3JdQyDoBszVaA== "@parcel/watcher-wasm@^2.4.1": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-wasm/-/watcher-wasm-2.4.1.tgz#c4353e4fdb96ee14389856f7f6f6d21b7dcef9e1" - integrity sha512-/ZR0RxqxU/xxDGzbzosMjh4W6NdYFMqq2nvo2b8SLi7rsl/4jkL8S5stIikorNkdR50oVDvqb/3JT05WM+CRRA== + version "2.5.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-wasm/-/watcher-wasm-2.5.0.tgz#81fad1e10957f08a532eb4fc0d4c353cd8901a50" + integrity sha512-Z4ouuR8Pfggk1EYYbTaIoxc+Yv4o7cGQnH0Xy8+pQ+HbiW+ZnwhcD2LPf/prfq1nIWpAxjOkQ8uSMFWMtBLiVQ== dependencies: is-glob "^4.0.3" micromatch "^4.0.5" napi-wasm "^1.1.0" -"@parcel/watcher-win32-arm64@2.4.1": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.4.1.tgz#eb4deef37e80f0b5e2f215dd6d7a6d40a85f8adc" - integrity sha512-Uq2BPp5GWhrq/lcuItCHoqxjULU1QYEcyjSO5jqqOK8RNFDBQnenMMx4gAl3v8GiWa59E9+uDM7yZ6LxwUIfRg== +"@parcel/watcher-win32-arm64@2.5.0": + version "2.5.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.0.tgz#87cdb16e0783e770197e52fb1dc027bb0c847154" + integrity sha512-twtft1d+JRNkM5YbmexfcH/N4znDtjgysFaV9zvZmmJezQsKpkfLYJ+JFV3uygugK6AtIM2oADPkB2AdhBrNig== -"@parcel/watcher-win32-ia32@2.4.1": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.4.1.tgz#94fbd4b497be39fd5c8c71ba05436927842c9df7" - integrity sha512-maNRit5QQV2kgHFSYwftmPBxiuK5u4DXjbXx7q6eKjq5dsLXZ4FJiVvlcw35QXzk0KrUecJmuVFbj4uV9oYrcw== +"@parcel/watcher-win32-ia32@2.5.0": + version "2.5.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.0.tgz#778c39b56da33e045ba21c678c31a9f9d7c6b220" + integrity sha512-+rgpsNRKwo8A53elqbbHXdOMtY/tAtTzManTWShB5Kk54N8Q9mzNWV7tV+IbGueCbcj826MfWGU3mprWtuf1TA== -"@parcel/watcher-win32-x64@2.4.1": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.4.1.tgz#4bf920912f67cae5f2d264f58df81abfea68dadf" - integrity sha512-+DvS92F9ezicfswqrvIRM2njcYJbd5mb9CUgtrHCHmvn7pPPa+nMDRu1o1bYYz/l5IB2NVGNJWiH7h1E58IF2A== +"@parcel/watcher-win32-x64@2.5.0": + version "2.5.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.0.tgz#33873876d0bbc588aacce38e90d1d7480ce81cb7" + integrity sha512-lPrxve92zEHdgeff3aiu4gDOIt4u7sJYha6wbdEZDCDUhtjTsOMiaJzG5lMY4GkWH8p0fMmO2Ppq5G5XXG+DQw== "@parcel/watcher@^2.4.1": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher/-/watcher-2.4.1.tgz#a50275151a1bb110879c6123589dba90c19f1bf8" - integrity sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA== + version "2.5.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher/-/watcher-2.5.0.tgz#5c88818b12b8de4307a9d3e6dc3e28eba0dfbd10" + integrity sha512-i0GV1yJnm2n3Yq1qw6QrUrd/LI9bE8WEBOTtOkpCXHHdyN3TAGgqAK/DAT05z4fq2x04cARXt2pDmjWjL92iTQ== dependencies: detect-libc "^1.0.3" is-glob "^4.0.3" micromatch "^4.0.5" node-addon-api "^7.0.0" optionalDependencies: - "@parcel/watcher-android-arm64" "2.4.1" - "@parcel/watcher-darwin-arm64" "2.4.1" - "@parcel/watcher-darwin-x64" "2.4.1" - "@parcel/watcher-freebsd-x64" "2.4.1" - "@parcel/watcher-linux-arm-glibc" "2.4.1" - "@parcel/watcher-linux-arm64-glibc" "2.4.1" - "@parcel/watcher-linux-arm64-musl" "2.4.1" - "@parcel/watcher-linux-x64-glibc" "2.4.1" - "@parcel/watcher-linux-x64-musl" "2.4.1" - "@parcel/watcher-win32-arm64" "2.4.1" - "@parcel/watcher-win32-ia32" "2.4.1" - "@parcel/watcher-win32-x64" "2.4.1" + "@parcel/watcher-android-arm64" "2.5.0" + "@parcel/watcher-darwin-arm64" "2.5.0" + "@parcel/watcher-darwin-x64" "2.5.0" + "@parcel/watcher-freebsd-x64" "2.5.0" + "@parcel/watcher-linux-arm-glibc" "2.5.0" + "@parcel/watcher-linux-arm-musl" "2.5.0" + "@parcel/watcher-linux-arm64-glibc" "2.5.0" + "@parcel/watcher-linux-arm64-musl" "2.5.0" + "@parcel/watcher-linux-x64-glibc" "2.5.0" + "@parcel/watcher-linux-x64-musl" "2.5.0" + "@parcel/watcher-win32-arm64" "2.5.0" + "@parcel/watcher-win32-ia32" "2.5.0" + "@parcel/watcher-win32-x64" "2.5.0" "@popperjs/core@^2.9.0": version "2.11.8" @@ -2845,12 +2701,12 @@ penpal "3.0.7" pocket-js-core "0.0.3" -"@puppeteer/browsers@2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@puppeteer/browsers/-/browsers-2.3.0.tgz#791ea7d80450fea24eb19fb1d70c367ad4e08cae" - integrity sha512-ioXoq9gPxkss4MYhD+SFaU9p1IHFUX0ILAWFPyjGaBdjLsYAlZw6j1iLA0N/m12uVHLFDfSYNF7EQccjinIMDA== +"@puppeteer/browsers@2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@puppeteer/browsers/-/browsers-2.4.1.tgz#7afd271199cc920ece2ff25109278be0a3e8a225" + integrity sha512-0kdAbmic3J09I6dT8e9vE2JOCSt13wHCW5x/ly8TSt2bDtuIWe2TgLZZDHdcziw9AVCzflMAXCrVyRIhIs44Ng== dependencies: - debug "^4.3.5" + debug "^4.3.7" extract-zip "^2.0.1" progress "^2.0.3" proxy-agent "^6.4.0" @@ -2859,10 +2715,10 @@ unbzip2-stream "^1.4.3" yargs "^17.7.2" -"@remix-run/router@1.19.0": - version "1.19.0" - resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.19.0.tgz#745dbffbce67f05386d57ca22c51dfd85c979593" - integrity sha512-zDICCLKEwbVYTS6TjYaWtHXxkdoUvD/QXvyVZjGCsWz5vyH7aFeONlPffPdW+Y/t6KT0MgXb2Mfjun9YpWN1dA== +"@remix-run/router@1.20.0": + version "1.20.0" + resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.20.0.tgz#03554155b45d8b529adf635b2f6ad1165d70d8b4" + integrity sha512-mUnk8rPJBI9loFDZ+YzPGdeniYK+FTmRD1TMCz7ev2SNIozyKKpnGgsxO34u6Z4z/t0ITuu7voi/AshfsGsgFg== "@rollup/pluginutils@^4.2.1": version "4.2.1" @@ -2872,99 +2728,109 @@ estree-walker "^2.0.1" picomatch "^2.2.2" -"@rollup/pluginutils@^5.0.5": - version "5.1.0" - resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.1.0.tgz#7e53eddc8c7f483a4ad0b94afb1f7f5fd3c771e0" - integrity sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g== +"@rollup/pluginutils@^5.1.3": + version "5.1.3" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.1.3.tgz#3001bf1a03f3ad24457591f2c259c8e514e0dbdf" + integrity sha512-Pnsb6f32CD2W3uCaLZIzDmeFyQ2b8UWMFI7xtwUezpcGBDVDW6y9XgAWIlARiGAo6eNF5FK5aQTr0LFyNyqq5A== dependencies: "@types/estree" "^1.0.0" estree-walker "^2.0.2" - picomatch "^2.3.1" - -"@rollup/rollup-android-arm-eabi@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.20.0.tgz#c3f5660f67030c493a981ac1d34ee9dfe1d8ec0f" - integrity sha512-TSpWzflCc4VGAUJZlPpgAJE1+V60MePDQnBd7PPkpuEmOy8i87aL6tinFGKBFKuEDikYpig72QzdT3QPYIi+oA== - -"@rollup/rollup-android-arm64@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.20.0.tgz#64161f0b67050023a3859e723570af54a82cff5c" - integrity sha512-u00Ro/nok7oGzVuh/FMYfNoGqxU5CPWz1mxV85S2w9LxHR8OoMQBuSk+3BKVIDYgkpeOET5yXkx90OYFc+ytpQ== - -"@rollup/rollup-darwin-arm64@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.20.0.tgz#25f3d57b1da433097cfebc89341b355901615763" - integrity sha512-uFVfvzvsdGtlSLuL0ZlvPJvl6ZmrH4CBwLGEFPe7hUmf7htGAN+aXo43R/V6LATyxlKVC/m6UsLb7jbG+LG39Q== - -"@rollup/rollup-darwin-x64@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.20.0.tgz#d8ddaffb636cc2f59222c50316e27771e48966df" - integrity sha512-xbrMDdlev53vNXexEa6l0LffojxhqDTBeL+VUxuuIXys4x6xyvbKq5XqTXBCEUA8ty8iEJblHvFaWRJTk/icAQ== - -"@rollup/rollup-linux-arm-gnueabihf@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.20.0.tgz#41bd4fcffa20fb84f3dbac6c5071638f46151885" - integrity sha512-jMYvxZwGmoHFBTbr12Xc6wOdc2xA5tF5F2q6t7Rcfab68TT0n+r7dgawD4qhPEvasDsVpQi+MgDzj2faOLsZjA== - -"@rollup/rollup-linux-arm-musleabihf@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.20.0.tgz#842077c5113a747eb5686f19f2f18c33ecc0acc8" - integrity sha512-1asSTl4HKuIHIB1GcdFHNNZhxAYEdqML/MW4QmPS4G0ivbEcBr1JKlFLKsIRqjSwOBkdItn3/ZDlyvZ/N6KPlw== - -"@rollup/rollup-linux-arm64-gnu@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.20.0.tgz#65d1d5b6778848f55b7823958044bf3e8737e5b7" - integrity sha512-COBb8Bkx56KldOYJfMf6wKeYJrtJ9vEgBRAOkfw6Ens0tnmzPqvlpjZiLgkhg6cA3DGzCmLmmd319pmHvKWWlQ== - -"@rollup/rollup-linux-arm64-musl@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.20.0.tgz#50eef7d6e24d0fe3332200bb666cad2be8afcf86" - integrity sha512-+it+mBSyMslVQa8wSPvBx53fYuZK/oLTu5RJoXogjk6x7Q7sz1GNRsXWjn6SwyJm8E/oMjNVwPhmNdIjwP135Q== - -"@rollup/rollup-linux-powerpc64le-gnu@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.20.0.tgz#8837e858f53c84607f05ad0602943e96d104c6b4" - integrity sha512-yAMvqhPfGKsAxHN8I4+jE0CpLWD8cv4z7CK7BMmhjDuz606Q2tFKkWRY8bHR9JQXYcoLfopo5TTqzxgPUjUMfw== - -"@rollup/rollup-linux-riscv64-gnu@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.20.0.tgz#c894ade2300caa447757ddf45787cca246e816a4" - integrity sha512-qmuxFpfmi/2SUkAw95TtNq/w/I7Gpjurx609OOOV7U4vhvUhBcftcmXwl3rqAek+ADBwSjIC4IVNLiszoj3dPA== - -"@rollup/rollup-linux-s390x-gnu@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.20.0.tgz#5841e5390d4c82dd5cdf7b2c95a830e3c2f47dd3" - integrity sha512-I0BtGXddHSHjV1mqTNkgUZLnS3WtsqebAXv11D5BZE/gfw5KoyXSAXVqyJximQXNvNzUo4GKlCK/dIwXlz+jlg== - -"@rollup/rollup-linux-x64-gnu@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.20.0.tgz#cc1f26398bf777807a99226dc13f47eb0f6c720d" - integrity sha512-y+eoL2I3iphUg9tN9GB6ku1FA8kOfmF4oUEWhztDJ4KXJy1agk/9+pejOuZkNFhRwHAOxMsBPLbXPd6mJiCwew== - -"@rollup/rollup-linux-x64-musl@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.20.0.tgz#1507465d9056e0502a590d4c1a00b4d7b1fda370" - integrity sha512-hM3nhW40kBNYUkZb/r9k2FKK+/MnKglX7UYd4ZUy5DJs8/sMsIbqWK2piZtVGE3kcXVNj3B2IrUYROJMMCikNg== - -"@rollup/rollup-win32-arm64-msvc@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.20.0.tgz#86a221f01a2c248104dd0defb4da119f2a73642e" - integrity sha512-psegMvP+Ik/Bg7QRJbv8w8PAytPA7Uo8fpFjXyCRHWm6Nt42L+JtoqH8eDQ5hRP7/XW2UiIriy1Z46jf0Oa1kA== - -"@rollup/rollup-win32-ia32-msvc@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.20.0.tgz#8bc8f77e02760aa664694b4286d6fbea7f1331c5" - integrity sha512-GabekH3w4lgAJpVxkk7hUzUf2hICSQO0a/BLFA11/RMxQT92MabKAqyubzDZmMOC/hcJNlc+rrypzNzYl4Dx7A== - -"@rollup/rollup-win32-x64-msvc@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.20.0.tgz#601fffee719a1e8447f908aca97864eec23b2784" - integrity sha512-aJ1EJSuTdGnM6qbVC4B5DSmozPTqIag9fSzXRNNo+humQLG89XpPgdt16Ia56ORD7s+H8Pmyx44uczDQ0yDzpg== + picomatch "^4.0.2" + +"@rollup/rollup-android-arm-eabi@4.24.4": + version "4.24.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.24.4.tgz#c460b54c50d42f27f8254c435a4f3b3e01910bc8" + integrity sha512-jfUJrFct/hTA0XDM5p/htWKoNNTbDLY0KRwEt6pyOA6k2fmk0WVwl65PdUdJZgzGEHWx+49LilkcSaumQRyNQw== + +"@rollup/rollup-android-arm64@4.24.4": + version "4.24.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.24.4.tgz#96e01f3a04675d8d5973ab8d3fd6bc3be21fa5e1" + integrity sha512-j4nrEO6nHU1nZUuCfRKoCcvh7PIywQPUCBa2UsootTHvTHIoIu2BzueInGJhhvQO/2FTRdNYpf63xsgEqH9IhA== + +"@rollup/rollup-darwin-arm64@4.24.4": + version "4.24.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.24.4.tgz#9b2ec23b17b47cbb2f771b81f86ede3ac6730bce" + integrity sha512-GmU/QgGtBTeraKyldC7cDVVvAJEOr3dFLKneez/n7BvX57UdhOqDsVwzU7UOnYA7AAOt+Xb26lk79PldDHgMIQ== + +"@rollup/rollup-darwin-x64@4.24.4": + version "4.24.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.24.4.tgz#f30e4ee6929e048190cf10e0daa8e8ae035b6e46" + integrity sha512-N6oDBiZCBKlwYcsEPXGDE4g9RoxZLK6vT98M8111cW7VsVJFpNEqvJeIPfsCzbf0XEakPslh72X0gnlMi4Ddgg== + +"@rollup/rollup-freebsd-arm64@4.24.4": + version "4.24.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.24.4.tgz#c54b2373ec5bcf71f08c4519c7ae80a0b6c8e03b" + integrity sha512-py5oNShCCjCyjWXCZNrRGRpjWsF0ic8f4ieBNra5buQz0O/U6mMXCpC1LvrHuhJsNPgRt36tSYMidGzZiJF6mw== + +"@rollup/rollup-freebsd-x64@4.24.4": + version "4.24.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.24.4.tgz#3bc53aa29d5a34c28ba8e00def76aa612368458e" + integrity sha512-L7VVVW9FCnTTp4i7KrmHeDsDvjB4++KOBENYtNYAiYl96jeBThFfhP6HVxL74v4SiZEVDH/1ILscR5U9S4ms4g== + +"@rollup/rollup-linux-arm-gnueabihf@4.24.4": + version "4.24.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.24.4.tgz#c85aedd1710c9e267ee86b6d1ce355ecf7d9e8d9" + integrity sha512-10ICosOwYChROdQoQo589N5idQIisxjaFE/PAnX2i0Zr84mY0k9zul1ArH0rnJ/fpgiqfu13TFZR5A5YJLOYZA== + +"@rollup/rollup-linux-arm-musleabihf@4.24.4": + version "4.24.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.24.4.tgz#e77313408bf13995aecde281aec0cceb08747e42" + integrity sha512-ySAfWs69LYC7QhRDZNKqNhz2UKN8LDfbKSMAEtoEI0jitwfAG2iZwVqGACJT+kfYvvz3/JgsLlcBP+WWoKCLcw== + +"@rollup/rollup-linux-arm64-gnu@4.24.4": + version "4.24.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.24.4.tgz#633f632397b3662108cfaa1abca2a80b85f51102" + integrity sha512-uHYJ0HNOI6pGEeZ/5mgm5arNVTI0nLlmrbdph+pGXpC9tFHFDQmDMOEqkmUObRfosJqpU8RliYoGz06qSdtcjg== + +"@rollup/rollup-linux-arm64-musl@4.24.4": + version "4.24.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.24.4.tgz#63edd72b29c4cced93e16113a68e1be9fef88907" + integrity sha512-38yiWLemQf7aLHDgTg85fh3hW9stJ0Muk7+s6tIkSUOMmi4Xbv5pH/5Bofnsb6spIwD5FJiR+jg71f0CH5OzoA== + +"@rollup/rollup-linux-powerpc64le-gnu@4.24.4": + version "4.24.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.24.4.tgz#a9418a4173df80848c0d47df0426a0bf183c4e75" + integrity sha512-q73XUPnkwt9ZNF2xRS4fvneSuaHw2BXuV5rI4cw0fWYVIWIBeDZX7c7FWhFQPNTnE24172K30I+dViWRVD9TwA== + +"@rollup/rollup-linux-riscv64-gnu@4.24.4": + version "4.24.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.24.4.tgz#bc9c195db036a27e5e3339b02f51526b4ce1e988" + integrity sha512-Aie/TbmQi6UXokJqDZdmTJuZBCU3QBDA8oTKRGtd4ABi/nHgXICulfg1KI6n9/koDsiDbvHAiQO3YAUNa/7BCw== + +"@rollup/rollup-linux-s390x-gnu@4.24.4": + version "4.24.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.24.4.tgz#1651fdf8144ae89326c01da5d52c60be63e71a82" + integrity sha512-P8MPErVO/y8ohWSP9JY7lLQ8+YMHfTI4bAdtCi3pC2hTeqFJco2jYspzOzTUB8hwUWIIu1xwOrJE11nP+0JFAQ== + +"@rollup/rollup-linux-x64-gnu@4.24.4": + version "4.24.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.24.4.tgz#e473de5e4acb95fcf930a35cbb7d3e8080e57a6f" + integrity sha512-K03TljaaoPK5FOyNMZAAEmhlyO49LaE4qCsr0lYHUKyb6QacTNF9pnfPpXnFlFD3TXuFbFbz7tJ51FujUXkXYA== + +"@rollup/rollup-linux-x64-musl@4.24.4": + version "4.24.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.24.4.tgz#0af12dd2578c29af4037f0c834b4321429dd5b01" + integrity sha512-VJYl4xSl/wqG2D5xTYncVWW+26ICV4wubwN9Gs5NrqhJtayikwCXzPL8GDsLnaLU3WwhQ8W02IinYSFJfyo34Q== + +"@rollup/rollup-win32-arm64-msvc@4.24.4": + version "4.24.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.24.4.tgz#e48e78cdd45313b977c1390f4bfde7ab79be8871" + integrity sha512-ku2GvtPwQfCqoPFIJCqZ8o7bJcj+Y54cZSr43hHca6jLwAiCbZdBUOrqE6y29QFajNAzzpIOwsckaTFmN6/8TA== + +"@rollup/rollup-win32-ia32-msvc@4.24.4": + version "4.24.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.24.4.tgz#a3fc8536d243fe161c796acb93eba43c250f311c" + integrity sha512-V3nCe+eTt/W6UYNr/wGvO1fLpHUrnlirlypZfKCT1fG6hWfqhPgQV/K/mRBXBpxc0eKLIF18pIOFVPh0mqHjlg== + +"@rollup/rollup-win32-x64-msvc@4.24.4": + version "4.24.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.24.4.tgz#e2a9d1fd56524103a6cc8a54404d9d3ebc73c454" + integrity sha512-LTw1Dfd0mBIEqUVCxbvTE/LLo+9ZxVC9k99v1v4ahg9Aak6FpqOfNu5kRkeTAn0wphoC4JU7No1/rL+bBCEwhg== "@safe-global/safe-apps-provider@^0.18.0": - version "0.18.3" - resolved "https://registry.yarnpkg.com/@safe-global/safe-apps-provider/-/safe-apps-provider-0.18.3.tgz#805a42e24f5dde803cb96dac251a3c9e256de45b" - integrity sha512-f/0cNv3S4v7p8rowAjj0hDCg8Q8P/wBjp5twkNWeBdvd0RDr7BuRBPPk74LCqmjQ82P+1ltLlkmVFSmxTIT7XQ== + version "0.18.4" + resolved "https://registry.yarnpkg.com/@safe-global/safe-apps-provider/-/safe-apps-provider-0.18.4.tgz#53df912aa20d933f6b14c5bcb0737a8cd47def57" + integrity sha512-SWYeG3gyTO6wGHMSokfHakZ9isByn2mHsM0VohIorYFFEyGGmJ89btnTm+DqDUSoQtvWAatZB7XNy6CaYMvqtg== dependencies: "@safe-global/safe-apps-sdk" "^9.1.0" events "^3.3.0" @@ -2997,9 +2863,9 @@ web3-utils "^1.8.1" "@safe-global/safe-deployments@^1.26.0": - version "1.37.3" - resolved "https://registry.yarnpkg.com/@safe-global/safe-deployments/-/safe-deployments-1.37.3.tgz#ded9fa6bb04f0e8972c00c481badcf513d590b0b" - integrity sha512-EtbiOJVGe697+GcbHtfo75NYpp+hTlIIBqL2ETPLGoQBHoxo9HWbGX/6ZkVxsZv/NN4nKawyMi+MvpUkH9VXGg== + version "1.37.14" + resolved "https://registry.yarnpkg.com/@safe-global/safe-deployments/-/safe-deployments-1.37.14.tgz#31c1d1ff924d94ce639c136bef154de3adf5f75e" + integrity sha512-uHpYizq52j1arwWRxHbEbrZsECD5tG87NwLo/xDViRVw/GIrkRC6HerkzfZwiHVjVrC8gN8o3ApLsknYbxrF4w== dependencies: semver "^7.6.2" @@ -3008,10 +2874,10 @@ resolved "https://registry.yarnpkg.com/@safe-global/safe-gateway-typescript-sdk/-/safe-gateway-typescript-sdk-3.22.2.tgz#d4ff9972e58f9344fc95f8d41b2ec6517baa8e79" integrity sha512-Y0yAxRaB98LFp2Dm+ACZqBSdAmI3FlpH/LjxOZ94g/ouuDJecSq0iR26XZ5QDuEL8Rf+L4jBJaoDC08CD0KkJw== -"@scure/base@~1.1.0", "@scure/base@~1.1.2", "@scure/base@~1.1.6": - version "1.1.7" - resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.7.tgz#fe973311a5c6267846aa131bc72e96c5d40d2b30" - integrity sha512-PPNYBslrLNNUQ/Yad37MHYsNQtK67EhWb6WtSvNLLPo7SdVZgkUjD6Dg+5On7zNwmskf8OX7I7Nx5oN+MIWE0g== +"@scure/base@~1.1.0", "@scure/base@~1.1.2", "@scure/base@~1.1.6", "@scure/base@~1.1.7", "@scure/base@~1.1.8": + version "1.1.9" + resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.9.tgz#e5e142fbbfe251091f9c5f1dd4c834ac04c3dbd1" + integrity sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg== "@scure/bip32@1.3.2": version "1.3.2" @@ -3031,6 +2897,15 @@ "@noble/hashes" "~1.4.0" "@scure/base" "~1.1.6" +"@scure/bip32@1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.5.0.tgz#dd4a2e1b8a9da60e012e776d954c4186db6328e6" + integrity sha512-8EnFYkqEQdnkuGBVpCzKxyIwDCBLDVj3oiX0EKUFre/tOjL/Hqba1D6n/8RcmaQy4f95qQFrO2A8Sr6ybh4NRw== + dependencies: + "@noble/curves" "~1.6.0" + "@noble/hashes" "~1.5.0" + "@scure/base" "~1.1.7" + "@scure/bip39@1.2.1": version "1.2.1" resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.2.1.tgz#5cee8978656b272a917b7871c981e0541ad6ac2a" @@ -3047,6 +2922,14 @@ "@noble/hashes" "~1.4.0" "@scure/base" "~1.1.6" +"@scure/bip39@1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.4.0.tgz#664d4f851564e2e1d4bffa0339f9546ea55960a6" + integrity sha512-BEEm6p8IueV/ZTfQLp/0vhw4NPnT9oWf5+28nvmeUICjP99f4vr2d+qc7AVGDDtwRep6ifR43Yed9ERVmiITzw== + dependencies: + "@noble/hashes" "~1.5.0" + "@scure/base" "~1.1.8" + "@sideway/address@^4.1.3", "@sideway/address@^4.1.5": version "4.1.5" resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.5.tgz#4bc149a0076623ced99ca8208ba780d65a99b9d5" @@ -3621,9 +3504,9 @@ "@types/node" "*" "@types/bn.js@^5.1.0", "@types/bn.js@^5.1.1": - version "5.1.5" - resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.5.tgz#2e0dacdcce2c0f16b905d20ff87aedbc6f7b4bf0" - integrity sha512-V46N0zwKRF5Q00AZ6hWtN0T8gGmDUaUzLWQvHFo5yThtVwK/VCenFY3wXVbOvNfajEpsTfQM4IN9k/d6gUVX3A== + version "5.1.6" + resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.6.tgz#9ba818eec0c85e4d3c679518428afdf611d03203" + integrity sha512-Xh8vSwUeMKeYYrj3cX4lGQgFSF/N03r+tv4AiLl1SucqV+uTQpxRcnM8AkXKHwYP9ZPXOYXRr2KPXpVlIvqh9w== dependencies: "@types/node" "*" @@ -3693,10 +3576,10 @@ resolved "https://registry.yarnpkg.com/@types/dateformat/-/dateformat-5.0.2.tgz#876f06431ce6f411dbaca3f81d95a8784c9ab82a" integrity sha512-M95hNBMa/hnwErH+a+VOD/sYgTmo15OTYTM2Hr52/e0OdOuY+Crag+kd3/ioZrhg0WGbl9Sm3hR7UU+MH6rfOw== -"@types/estree@1.0.5", "@types/estree@^1.0.0": - version "1.0.5" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" - integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== +"@types/estree@1.0.6", "@types/estree@^1.0.0": + version "1.0.6" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50" + integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw== "@types/history@^4.7.11": version "4.7.11" @@ -3766,11 +3649,11 @@ form-data "^3.0.0" "@types/node@*": - version "22.2.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-22.2.0.tgz#7cf046a99f0ba4d628ad3088cb21f790df9b0c5b" - integrity sha512-bm6EG6/pCpkxDf/0gDNDdtDILMOHgaQBVOJGdwsqClnxA3xL6jtMv76rLBc006RVMWbmaf0xbmom4Z/5o2nRkQ== + version "22.9.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.9.0.tgz#b7f16e5c3384788542c72dc3d561a7ceae2c0365" + integrity sha512-vuyHg81vvWA1Z1ELfvLko2c8f34gyA0zaic0+Rllc5lbCnbSyuvb2Oxpm6TAUAC/2xZN3QGqxBNggD1nNR2AfQ== dependencies: - undici-types "~6.13.0" + undici-types "~6.19.8" "@types/node@14.18.33": version "14.18.33" @@ -3788,9 +3671,9 @@ integrity sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ== "@types/node@^16.11.10": - version "16.18.105" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.18.105.tgz#7147176852774ec4d6dd626803888adf6b999feb" - integrity sha512-w2d0Z9yMk07uH3+Cx0N8lqFyi3yjXZxlbYappPj+AsOlT02OyxyiuNoNHdGt6EuiSm8Wtgp2YV7vWg+GMFrvFA== + version "16.18.119" + resolved "https://registry.yarnpkg.com/@types/node/-/node-16.18.119.tgz#88443bb82119b7c0920e86949673876cbe1c3492" + integrity sha512-ia7V9a2FnhUFfetng4/sRPBMTwHZUkPFY736rb1cg9AgG7MZdR97q7/nLR9om+sq5f1la9C857E0l/nrI0RiFQ== "@types/normalize-package-data@^2.4.0": version "2.4.4" @@ -3815,9 +3698,9 @@ integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA== "@types/prop-types@*": - version "15.7.12" - resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.12.tgz#12bb1e2be27293c1406acb6af1c3f3a1481d98c6" - integrity sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q== + version "15.7.13" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.13.tgz#2af91918ee12d9d32914feb13f5326658461b451" + integrity sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA== "@types/puppeteer-core@5.4.0": version "5.4.0" @@ -3834,9 +3717,9 @@ puppeteer "*" "@types/react-dom@*", "@types/react-dom@^18.2.25": - version "18.3.0" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.3.0.tgz#0cbc818755d87066ab6ca74fbedb2547d74a82b0" - integrity sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg== + version "18.3.1" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.3.1.tgz#1e4654c08a9cdcfb6594c780ac59b55aad42fe07" + integrity sha512-qW1Mfv8taImTthu4KoXgDfLuk4bydU6Q/TkADnDWWHwi4NX4BR+LWfTp2sVmTqRrsHvyDDTelgelxJ+SsejKKQ== dependencies: "@types/react" "*" @@ -3875,9 +3758,9 @@ "@types/react" "*" "@types/react@*", "@types/react@^18.2.79": - version "18.3.3" - resolved "https://registry.yarnpkg.com/@types/react/-/react-18.3.3.tgz#9679020895318b0915d7a3ab004d92d33375c45f" - integrity sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw== + version "18.3.12" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.3.12.tgz#99419f182ccd69151813b7ee24b792fe08774f60" + integrity sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw== dependencies: "@types/prop-types" "*" csstype "^3.0.2" @@ -3907,9 +3790,9 @@ integrity sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g== "@types/sizzle@^2.3.2": - version "2.3.8" - resolved "https://registry.yarnpkg.com/@types/sizzle/-/sizzle-2.3.8.tgz#518609aefb797da19bf222feb199e8f653ff7627" - integrity sha512-0vWLNK2D5MT9dg0iOo8GlKguPAU02QjmZitPEsXRuJXU/OGIOt9vT9Fc26wtYuavLxtO45v9PGleoL9Z0k1LHg== + version "2.3.9" + resolved "https://registry.yarnpkg.com/@types/sizzle/-/sizzle-2.3.9.tgz#d4597dbd4618264c414d7429363e3f50acb66ea2" + integrity sha512-xzLEyKB50yqCUPUJkIsrVvoWNfFUbIZI+RspLWt8u+tIW/BetMBZtgV2LY/2o+tYH8dRvQ+eoPf3NdhQCcLE2w== "@types/styled-components@^5.1.34": version "5.1.34" @@ -4132,10 +4015,10 @@ "@walletconnect/types" "^1.8.0" "@walletconnect/utils" "^1.8.0" -"@walletconnect/core@2.14.0": - version "2.14.0" - resolved "https://registry.yarnpkg.com/@walletconnect/core/-/core-2.14.0.tgz#e8afb01455968b02aaf26c74f3bfcc9b82678a39" - integrity sha512-E/dgBM9q3judXnTfZQ5ILvDpeSdDpabBLsXtYXa3Nyc26cfNplfLJ2nXm9FgtTdhM1nZ7yx4+zDPiXawBRZl2g== +"@walletconnect/core@2.17.2": + version "2.17.2" + resolved "https://registry.yarnpkg.com/@walletconnect/core/-/core-2.17.2.tgz#877dc03f190d7b262bff8ce346330fdf1019cd83" + integrity sha512-O9VUsFg78CbvIaxfQuZMsHcJ4a2Z16DRz/O4S+uOAcGKhH/i/ln8hp864Tb+xRvifWSzaZ6CeAVxk657F+pscA== dependencies: "@walletconnect/heartbeat" "1.2.2" "@walletconnect/jsonrpc-provider" "1.0.14" @@ -4144,14 +4027,14 @@ "@walletconnect/jsonrpc-ws-connection" "1.0.14" "@walletconnect/keyvaluestorage" "1.1.1" "@walletconnect/logger" "2.1.2" - "@walletconnect/relay-api" "1.0.10" + "@walletconnect/relay-api" "1.0.11" "@walletconnect/relay-auth" "1.0.4" "@walletconnect/safe-json" "1.0.2" "@walletconnect/time" "1.0.2" - "@walletconnect/types" "2.14.0" - "@walletconnect/utils" "2.14.0" + "@walletconnect/types" "2.17.2" + "@walletconnect/utils" "2.17.2" + "@walletconnect/window-getters" "1.0.1" events "3.3.0" - isomorphic-unfetch "3.1.0" lodash.isequal "4.5.0" uint8arrays "3.1.0" @@ -4193,19 +4076,20 @@ tslib "1.14.1" "@walletconnect/ethereum-provider@^2.13.0": - version "2.14.0" - resolved "https://registry.yarnpkg.com/@walletconnect/ethereum-provider/-/ethereum-provider-2.14.0.tgz#0ed4ba9b383c889b56e0af87181756d900fc504a" - integrity sha512-Cc2/DCn85VciA10BrsNWFM//3VC1D8yjwrjfUKjGndLPDz0YIdAxTgYZViIlMjE0lzQC/DMvPYEAnGfW0O1Bwg== + version "2.17.2" + resolved "https://registry.yarnpkg.com/@walletconnect/ethereum-provider/-/ethereum-provider-2.17.2.tgz#7ac8091daf65f33c9f77cb08f524246c638e9e66" + integrity sha512-o4aL4KkUKT+n0iDwGzC6IY4bl+9n8bwOeT2KwifaVHsFw/irhtRPlsAQQH4ezOiPyk8cri1KN9dPk/YeU0pe6w== dependencies: "@walletconnect/jsonrpc-http-connection" "1.0.8" "@walletconnect/jsonrpc-provider" "1.0.14" "@walletconnect/jsonrpc-types" "1.0.4" "@walletconnect/jsonrpc-utils" "1.0.8" - "@walletconnect/modal" "2.6.2" - "@walletconnect/sign-client" "2.14.0" - "@walletconnect/types" "2.14.0" - "@walletconnect/universal-provider" "2.14.0" - "@walletconnect/utils" "2.14.0" + "@walletconnect/keyvaluestorage" "1.1.1" + "@walletconnect/modal" "2.7.0" + "@walletconnect/sign-client" "2.17.2" + "@walletconnect/types" "2.17.2" + "@walletconnect/universal-provider" "2.17.2" + "@walletconnect/utils" "2.17.2" events "3.3.0" "@walletconnect/events@1.0.1", "@walletconnect/events@^1.0.1": @@ -4312,30 +4196,30 @@ resolved "https://registry.yarnpkg.com/@walletconnect/mobile-registry/-/mobile-registry-1.4.0.tgz#502cf8ab87330841d794819081e748ebdef7aee5" integrity sha512-ZtKRio4uCZ1JUF7LIdecmZt7FOLnX72RPSY7aUVu7mj7CSfxDwUn6gBuK6WGtH+NZCldBqDl5DenI5fFSvkKYw== -"@walletconnect/modal-core@2.6.2": - version "2.6.2" - resolved "https://registry.yarnpkg.com/@walletconnect/modal-core/-/modal-core-2.6.2.tgz#d73e45d96668764e0c8668ea07a45bb8b81119e9" - integrity sha512-cv8ibvdOJQv2B+nyxP9IIFdxvQznMz8OOr/oR/AaUZym4hjXNL/l1a2UlSQBXrVjo3xxbouMxLb3kBsHoYP2CA== +"@walletconnect/modal-core@2.7.0": + version "2.7.0" + resolved "https://registry.yarnpkg.com/@walletconnect/modal-core/-/modal-core-2.7.0.tgz#73c13c3b7b0abf9ccdbac9b242254a86327ce0a4" + integrity sha512-oyMIfdlNdpyKF2kTJowTixZSo0PGlCJRdssUN/EZdA6H6v03hZnf09JnwpljZNfir2M65Dvjm/15nGrDQnlxSA== dependencies: valtio "1.11.2" -"@walletconnect/modal-ui@2.6.2": - version "2.6.2" - resolved "https://registry.yarnpkg.com/@walletconnect/modal-ui/-/modal-ui-2.6.2.tgz#fa57c087c57b7f76aaae93deab0f84bb68b59cf9" - integrity sha512-rbdstM1HPGvr7jprQkyPggX7rP4XiCG85ZA+zWBEX0dVQg8PpAgRUqpeub4xQKDgY7pY/xLRXSiCVdWGqvG2HA== +"@walletconnect/modal-ui@2.7.0": + version "2.7.0" + resolved "https://registry.yarnpkg.com/@walletconnect/modal-ui/-/modal-ui-2.7.0.tgz#dbbb7ee46a5a25f7d39db622706f2d197b268cbb" + integrity sha512-gERYvU7D7K1ANCN/8vUgsE0d2hnRemfAFZ2novm9aZBg7TEd/4EgB+AqbJ+1dc7GhOL6dazckVq78TgccHb7mQ== dependencies: - "@walletconnect/modal-core" "2.6.2" + "@walletconnect/modal-core" "2.7.0" lit "2.8.0" motion "10.16.2" qrcode "1.5.3" -"@walletconnect/modal@2.6.2": - version "2.6.2" - resolved "https://registry.yarnpkg.com/@walletconnect/modal/-/modal-2.6.2.tgz#4b534a836f5039eeb3268b80be7217a94dd12651" - integrity sha512-eFopgKi8AjKf/0U4SemvcYw9zlLpx9njVN8sf6DAkowC2Md0gPU/UNEbH1Wwj407pEKnEds98pKWib1NN1ACoA== +"@walletconnect/modal@2.7.0": + version "2.7.0" + resolved "https://registry.yarnpkg.com/@walletconnect/modal/-/modal-2.7.0.tgz#55f969796d104cce1205f5f844d8f8438b79723a" + integrity sha512-RQVt58oJ+rwqnPcIvRFeMGKuXb9qkgSmwz4noF8JZGUym3gUAzVs+uW2NQ1Owm9XOJAV+sANrtJ+VoVq1ftElw== dependencies: - "@walletconnect/modal-core" "2.6.2" - "@walletconnect/modal-ui" "2.6.2" + "@walletconnect/modal-core" "2.7.0" + "@walletconnect/modal-ui" "2.7.0" "@walletconnect/qrcode-modal@^1.8.0": version "1.8.0" @@ -4359,10 +4243,10 @@ randombytes "^2.1.0" tslib "1.14.1" -"@walletconnect/relay-api@1.0.10": - version "1.0.10" - resolved "https://registry.yarnpkg.com/@walletconnect/relay-api/-/relay-api-1.0.10.tgz#5aef3cd07c21582b968136179aa75849dcc65499" - integrity sha512-tqrdd4zU9VBNqUaXXQASaexklv6A54yEyQQEXYOCr+Jz8Ket0dmPBDyg19LVSNUN2cipAghQc45/KVmfFJ0cYw== +"@walletconnect/relay-api@1.0.11": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@walletconnect/relay-api/-/relay-api-1.0.11.tgz#80ab7ef2e83c6c173be1a59756f95e515fb63224" + integrity sha512-tLPErkze/HmC9aCmdZOhtVmYZq1wKfWTJtygQHoWtgg722Jd4homo54Cs4ak2RUFUZIGO2RsOpIcWipaua5D5Q== dependencies: "@walletconnect/jsonrpc-types" "^1.0.2" @@ -4390,19 +4274,19 @@ dependencies: tslib "1.14.1" -"@walletconnect/sign-client@2.14.0": - version "2.14.0" - resolved "https://registry.yarnpkg.com/@walletconnect/sign-client/-/sign-client-2.14.0.tgz#36533ef0976a869d815624217527482c90937fc8" - integrity sha512-UrB3S3eLjPYfBLCN3WJ5u7+WcZ8kFMe/QIDqLf76Jk6TaLwkSUy563LvnSw4KW/kA+/cY1KBSdUDfX1tzYJJXg== +"@walletconnect/sign-client@2.17.2": + version "2.17.2" + resolved "https://registry.yarnpkg.com/@walletconnect/sign-client/-/sign-client-2.17.2.tgz#b8bd125d7c34a67916745ebbdbbc834db5518c8b" + integrity sha512-/wigdCIQjlBXSWY43Id0IPvZ5biq4HiiQZti8Ljvx408UYjmqcxcBitbj2UJXMYkid7704JWAB2mw32I1HgshQ== dependencies: - "@walletconnect/core" "2.14.0" + "@walletconnect/core" "2.17.2" "@walletconnect/events" "1.0.1" "@walletconnect/heartbeat" "1.2.2" "@walletconnect/jsonrpc-utils" "1.0.8" "@walletconnect/logger" "2.1.2" "@walletconnect/time" "1.0.2" - "@walletconnect/types" "2.14.0" - "@walletconnect/utils" "2.14.0" + "@walletconnect/types" "2.17.2" + "@walletconnect/utils" "2.17.2" events "3.3.0" "@walletconnect/socket-transport@^1.8.0": @@ -4421,10 +4305,10 @@ dependencies: tslib "1.14.1" -"@walletconnect/types@2.14.0": - version "2.14.0" - resolved "https://registry.yarnpkg.com/@walletconnect/types/-/types-2.14.0.tgz#af3d4799b8ac5d166251af12bc024276f82f9b91" - integrity sha512-vevMi4jZLJ55vLuFOicQFmBBbLyb+S0sZS4IsaBdZkQflfGIq34HkN13c/KPl4Ye0aoR4/cUcUSitmGIzEQM5g== +"@walletconnect/types@2.17.2": + version "2.17.2" + resolved "https://registry.yarnpkg.com/@walletconnect/types/-/types-2.17.2.tgz#f9afff242563be33f377de689b03b482f5b20aee" + integrity sha512-j/+0WuO00lR8ntu7b1+MKe/r59hNwYLFzW0tTmozzhfAlDL+dYwWasDBNq4AH8NbVd7vlPCQWmncH7/6FVtOfQ== dependencies: "@walletconnect/events" "1.0.1" "@walletconnect/heartbeat" "1.2.2" @@ -4438,38 +4322,47 @@ resolved "https://registry.yarnpkg.com/@walletconnect/types/-/types-1.8.0.tgz#3f5e85b2d6b149337f727ab8a71b8471d8d9a195" integrity sha512-Cn+3I0V0vT9ghMuzh1KzZvCkiAxTq+1TR2eSqw5E5AVWfmCtECFkVZBP6uUJZ8YjwLqXheI+rnjqPy7sVM4Fyg== -"@walletconnect/universal-provider@2.14.0": - version "2.14.0" - resolved "https://registry.yarnpkg.com/@walletconnect/universal-provider/-/universal-provider-2.14.0.tgz#39d029be80374894b5f4249b76282dd9211d8b9f" - integrity sha512-Mr8uoTmD6H0+Hh+3gxBu4l3T2uP/nNPR02sVtwEujNum++F727mMk+ifPRIpkVo21V/bvXFEy8sHTs5hqyq5iA== +"@walletconnect/universal-provider@2.17.2": + version "2.17.2" + resolved "https://registry.yarnpkg.com/@walletconnect/universal-provider/-/universal-provider-2.17.2.tgz#f4627dd9b66db3bacc31864584112868be23bf08" + integrity sha512-yIWDhBODRa9J349d/i1sObzon0vy4n+7R3MvGQQYaU1EVrV+WfoGSRsu8U7rYsL067/MAUu9t/QrpPblaSbz7g== dependencies: + "@walletconnect/events" "1.0.1" "@walletconnect/jsonrpc-http-connection" "1.0.8" "@walletconnect/jsonrpc-provider" "1.0.14" "@walletconnect/jsonrpc-types" "1.0.4" "@walletconnect/jsonrpc-utils" "1.0.8" + "@walletconnect/keyvaluestorage" "1.1.1" "@walletconnect/logger" "2.1.2" - "@walletconnect/sign-client" "2.14.0" - "@walletconnect/types" "2.14.0" - "@walletconnect/utils" "2.14.0" + "@walletconnect/sign-client" "2.17.2" + "@walletconnect/types" "2.17.2" + "@walletconnect/utils" "2.17.2" events "3.3.0" + lodash "4.17.21" -"@walletconnect/utils@2.14.0": - version "2.14.0" - resolved "https://registry.yarnpkg.com/@walletconnect/utils/-/utils-2.14.0.tgz#48493ffe1e902815fda3cbd5cc5409288a066d35" - integrity sha512-vRVomYQEtEAyCK2c5bzzEvtgxaGGITF8mWuIL+WYSAMyEJLY97mirP2urDucNwcUczwxUgI+no9RiNFbUHreQQ== +"@walletconnect/utils@2.17.2": + version "2.17.2" + resolved "https://registry.yarnpkg.com/@walletconnect/utils/-/utils-2.17.2.tgz#b4b12e3f5ebbfd883b2a5c87fb818e53501dc7ea" + integrity sha512-T7eLRiuw96fgwUy2A5NZB5Eu87ukX8RCVoO9lji34RFV4o2IGU9FhTEWyd4QQKI8OuQRjSknhbJs0tU0r0faPw== dependencies: + "@ethersproject/hash" "5.7.0" + "@ethersproject/transactions" "5.7.0" "@stablelib/chacha20poly1305" "1.0.1" "@stablelib/hkdf" "1.0.1" "@stablelib/random" "1.0.2" "@stablelib/sha256" "1.0.1" "@stablelib/x25519" "1.0.3" - "@walletconnect/relay-api" "1.0.10" + "@walletconnect/jsonrpc-utils" "1.0.8" + "@walletconnect/keyvaluestorage" "1.1.1" + "@walletconnect/relay-api" "1.0.11" + "@walletconnect/relay-auth" "1.0.4" "@walletconnect/safe-json" "1.0.2" "@walletconnect/time" "1.0.2" - "@walletconnect/types" "2.14.0" + "@walletconnect/types" "2.17.2" "@walletconnect/window-getters" "1.0.1" "@walletconnect/window-metadata" "1.0.1" detect-browser "5.3.0" + elliptic "6.6.0" query-string "7.1.3" uint8arrays "3.1.0" @@ -4541,10 +4434,10 @@ joi "17.9.1" viem "2.12.0" -"@web3-onboard/core@2.22.2": - version "2.22.2" - resolved "https://registry.yarnpkg.com/@web3-onboard/core/-/core-2.22.2.tgz#fa55abebc251ef9195ebcfde3cbaddbb934859bd" - integrity sha512-g0oO1hHdifKO/PqOn9kM7ZVnhvJssrcWmKkd1MFcA1Jp+WWHgLrYxznw6ql9ii5PqaOUMT1Oi0ZwnrKx798bNA== +"@web3-onboard/core@2.23.0": + version "2.23.0" + resolved "https://registry.yarnpkg.com/@web3-onboard/core/-/core-2.23.0.tgz#fff882ca67e954ba3b38680b876eca676e54d8d1" + integrity sha512-2gzBgVDq0eV6tLqAHzvYY6McRlq+6TgEkfkk31JuZUOy2vq2mhwAl3/MuXmItm/GSd3ePLpQl/Kiyr1V3I56yg== dependencies: "@web3-onboard/common" "^2.4.1" bnc-sdk "^4.6.7" @@ -4560,28 +4453,28 @@ viem "2.12.0" "@web3-onboard/gnosis@^2.2.2": - version "2.3.1" - resolved "https://registry.yarnpkg.com/@web3-onboard/gnosis/-/gnosis-2.3.1.tgz#e62b4095097a3d59848eb01986616f6909d5f936" - integrity sha512-p+27gDF8BAr8MuhKkUisbP/d7LvFZs2ifbOsR5Xs61oObw7HNifN3IzUbeMaUCZ1l8P7JMgU1TOqE75GPwl1fg== + version "2.3.2" + resolved "https://registry.yarnpkg.com/@web3-onboard/gnosis/-/gnosis-2.3.2.tgz#10a27f1a29b74e76c554b926bba21e6c138f18a7" + integrity sha512-gLo/Hjli4Ymg3hBz8URAD1ffKF0H/HmyPSiGVpuqiYEGCO39m1Ol9MVscIGAtOKV3QROnkKKf6wgckiKcAupIg== dependencies: "@web3-onboard/common" "^2.4.1" "@web3-onboard/injected-wallets@^2.10.16": - version "2.11.1" - resolved "https://registry.yarnpkg.com/@web3-onboard/injected-wallets/-/injected-wallets-2.11.1.tgz#7e282da187879735790cde7486dca7d85f39c9c0" - integrity sha512-kssRbYd1GfRHUpdGh5v1tfA+ZRZ2y8YM5EHTzBjH7FPoBMHpZAGCA9N0NF2mZNQ2VDYOuXpz2SipnrYdVP34qQ== + version "2.11.2" + resolved "https://registry.yarnpkg.com/@web3-onboard/injected-wallets/-/injected-wallets-2.11.2.tgz#f39c937f903875cfaad6373e1975dde2660d9e17" + integrity sha512-VeI0LTFKAcikBLBOub/avzdvc2SWOh3qLjqw/Yh34YS7ArGG5jrQXSbOuVXLqQoW07TyY4SDHXTI1Yft9MiF4Q== dependencies: "@web3-onboard/common" "^2.4.1" joi "17.9.1" lodash.uniqby "^4.7.0" "@web3-onboard/react@^2.8.17": - version "2.9.2" - resolved "https://registry.yarnpkg.com/@web3-onboard/react/-/react-2.9.2.tgz#2181f821962ecfe0ae61cd95fb2853ebc00e37e6" - integrity sha512-Sfl8q+iUOQhKF35vmy+q7nqhzp25+7EhUCQQu+W/p/FFRzyOCw+TOCyaNwRo28xcimu7+dLLPEAZxNMjDja3SA== + version "2.10.0" + resolved "https://registry.yarnpkg.com/@web3-onboard/react/-/react-2.10.0.tgz#f9407653407eb394e9769e416f8356e7ba01ecdd" + integrity sha512-4qwoB22uNe7xrcSni7t8Lm/5yQ8HjbD6t+EoCG4K8EWlNzPAMHNXVbOX+EeQgB6afE/dmF1Cf9cLyE/E2MY4fA== dependencies: "@web3-onboard/common" "^2.4.1" - "@web3-onboard/core" "2.22.2" + "@web3-onboard/core" "2.23.0" use-sync-external-store "1.0.0" "@web3-onboard/walletconnect@^2.5.5": @@ -4625,10 +4518,10 @@ abitype@1.0.0: resolved "https://registry.yarnpkg.com/abitype/-/abitype-1.0.0.tgz#237176dace81d90d018bebf3a45cb42f2a2d9e97" integrity sha512-NMeMah//6bJ56H5XRj8QCV4AwuW6hB6zqz2LnhhLdcWVQOsXki6/Pn3APeqxCma62nXIcmZWdu1DlHWS74umVQ== -abitype@1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/abitype/-/abitype-1.0.5.tgz#29d0daa3eea867ca90f7e4123144c1d1270774b6" - integrity sha512-YzDhti7cjlfaBhHutMaboYB21Ha3rXR9QTkNJFzYC4kC8YclaiwPBBBJY8ejFdu2wnJeZCVZSMlQJ7fi8S6hsw== +abitype@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/abitype/-/abitype-1.0.6.tgz#76410903e1d88e34f1362746e2d407513c38565b" + integrity sha512-MMSqYh4+C/aVqI2RQaWqbvI4Kxo5cQV40WQ4QFtDnNzCkqChm8MuENhElmynZlO0qUy/ObkEUaXtKqYnx1Kp3A== abortcontroller-polyfill@^1.7.3, abortcontroller-polyfill@^1.7.5: version "1.7.5" @@ -4677,9 +4570,9 @@ acorn-walk@^7.0.0: integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== acorn-walk@^8.1.1: - version "8.3.3" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.3.tgz#9caeac29eefaa0c41e3d4c65137de4d6f34df43e" - integrity sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw== + version "8.3.4" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.4.tgz#794dd169c3977edf4ba4ea47583587c5866236b7" + integrity sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g== dependencies: acorn "^8.11.0" @@ -4688,10 +4581,10 @@ acorn@^7.0.0, acorn@^7.4.0: resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -acorn@^8.11.0, acorn@^8.11.3, acorn@^8.4.1, acorn@^8.8.2: - version "8.12.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.12.1.tgz#71616bdccbe25e27a54439e0046e89ca76df2248" - integrity sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg== +acorn@^8.11.0, acorn@^8.12.1, acorn@^8.4.1, acorn@^8.8.2: + version "8.14.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.14.0.tgz#063e2c70cac5fb4f6467f0b11152e04c682795b0" + integrity sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA== add-stream@^1.0.0: version "1.0.0" @@ -4817,9 +4710,9 @@ ansi-regex@^5.0.0, ansi-regex@^5.0.1: integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== ansi-regex@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" - integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== + version "6.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.1.0.tgz#95ec409c69619d6cb1b8b34f14b660ef28ebd654" + integrity sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA== ansi-styles@^2.2.1: version "2.2.1" @@ -5134,9 +5027,9 @@ async@^2.0.1, async@^2.1.2, async@^2.4.0, async@^2.5.0, async@^2.6.1: lodash "^4.17.14" async@^3.2.0: - version "3.2.5" - resolved "https://registry.yarnpkg.com/async/-/async-3.2.5.tgz#ebd52a8fdaf7a2289a24df399f8d8485c8a46b66" - integrity sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg== + version "3.2.6" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.6.tgz#1b0728e14929d51b85b449b7f06e27c1145e38ce" + integrity sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA== asynckit@^0.4.0: version "0.4.0" @@ -5171,9 +5064,9 @@ aws-sign2@~0.7.0: integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA== aws4@^1.8.0: - version "1.13.1" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.13.1.tgz#bb5f8b8a20739f6ae1caeaf7eea2c7913df8048e" - integrity sha512-u5w79Rd7SU4JaIlA/zFqG+gOiuq25q5VLyZ8E+ijJeILuTxVzZgp2CaGw/UTw6pXYN9XMO9yiqj/nEHmhTG5CA== + version "1.13.2" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.13.2.tgz#0aa167216965ac9474ccfa83892cfb6b3e1e52ef" + integrity sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw== axios@0.26.1: version "0.26.1" @@ -5212,9 +5105,9 @@ axios@^0.24.0: follow-redirects "^1.14.4" b4a@^1.6.4: - version "1.6.6" - resolved "https://registry.yarnpkg.com/b4a/-/b4a-1.6.6.tgz#a4cc349a3851987c3c4ac2d7785c18744f6da9ba" - integrity sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg== + version "1.6.7" + resolved "https://registry.yarnpkg.com/b4a/-/b4a-1.6.7.tgz#a99587d4ebbfbd5a6e3b21bdb5d5fa385767abe4" + integrity sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg== babel-code-frame@^6.26.0: version "6.26.0" @@ -5390,12 +5283,12 @@ babel-helpers@^6.24.1: babel-template "^6.24.1" babel-loader@^8.2.3: - version "8.3.0" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.3.0.tgz#124936e841ba4fe8176786d6ff28add1f134d6a8" - integrity sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q== + version "8.4.1" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.4.1.tgz#6ccb75c66e62c3b144e1c5f2eaec5b8f6c08c675" + integrity sha512-nXzRChX+Z1GoE6yWavBQg6jDslyFF3SDjl2paADuoQtQW10JqShJt62R6eJQ5m/pjJFDT8xgKIWSP85OY8eXeA== dependencies: find-cache-dir "^3.3.1" - loader-utils "^2.0.0" + loader-utils "^2.0.4" make-dir "^3.1.0" schema-utils "^2.6.5" @@ -5447,7 +5340,7 @@ babel-plugin-polyfill-corejs2@^0.4.10: "@babel/helper-define-polyfill-provider" "^0.6.2" semver "^6.3.1" -babel-plugin-polyfill-corejs3@^0.10.1, babel-plugin-polyfill-corejs3@^0.10.4: +babel-plugin-polyfill-corejs3@^0.10.6: version "0.10.6" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz#2deda57caef50f59c525aeb4964d3b2f867710c7" integrity sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA== @@ -5868,23 +5761,23 @@ balanced-match@^1.0.0: integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== bare-events@^2.0.0, bare-events@^2.2.0: - version "2.4.2" - resolved "https://registry.yarnpkg.com/bare-events/-/bare-events-2.4.2.tgz#3140cca7a0e11d49b3edc5041ab560659fd8e1f8" - integrity sha512-qMKFd2qG/36aA4GwvKq8MxnPgCQAmBWmSyLWsJcbn8v03wvIPQ/hG1Ms8bPzndZxMDoHpxez5VOS+gC9Yi24/Q== + version "2.5.0" + resolved "https://registry.yarnpkg.com/bare-events/-/bare-events-2.5.0.tgz#305b511e262ffd8b9d5616b056464f8e1b3329cc" + integrity sha512-/E8dDe9dsbLyh2qrZ64PEPadOQ0F4gbl1sUJOrmph7xOiIxfY8vwab/4bFLh4Y88/Hk/ujKcrQKc+ps0mv873A== bare-fs@^2.1.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/bare-fs/-/bare-fs-2.3.1.tgz#cdbd63dac7a552dfb2b87d18c822298d1efd213d" - integrity sha512-W/Hfxc/6VehXlsgFtbB5B4xFcsCl+pAh30cYhoFyXErf6oGrwjh8SwiPAdHgpmWonKuYpZgGywN0SXt7dgsADA== + version "2.3.5" + resolved "https://registry.yarnpkg.com/bare-fs/-/bare-fs-2.3.5.tgz#05daa8e8206aeb46d13c2fe25a2cd3797b0d284a" + integrity sha512-SlE9eTxifPDJrT6YgemQ1WGFleevzwY+XAP1Xqgl56HtcrisC2CHCZ2tq6dBpcH2TnNxwUEUGhweo+lrQtYuiw== dependencies: bare-events "^2.0.0" bare-path "^2.0.0" bare-stream "^2.0.0" bare-os@^2.1.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/bare-os/-/bare-os-2.4.0.tgz#5de5e3ba7704f459c9656629edca7cc736e06608" - integrity sha512-v8DTT08AS/G0F9xrhyLtepoo9EJBJ85FRSMbu1pQUlAf6A8T0tEEQGMVObWeqpjhSPXsE0VGlluFBJu2fdoTNg== + version "2.4.4" + resolved "https://registry.yarnpkg.com/bare-os/-/bare-os-2.4.4.tgz#01243392eb0a6e947177bb7c8a45123d45c9b1a9" + integrity sha512-z3UiI2yi1mK0sXeRdc4O1Kk8aOa/e+FNWZcTiPB/dfTWyLypuE99LibgRaQki914Jq//yAWylcAt+mknKdixRQ== bare-path@^2.0.0, bare-path@^2.1.0: version "2.1.3" @@ -5894,11 +5787,11 @@ bare-path@^2.0.0, bare-path@^2.1.0: bare-os "^2.1.0" bare-stream@^2.0.0: - version "2.1.3" - resolved "https://registry.yarnpkg.com/bare-stream/-/bare-stream-2.1.3.tgz#070b69919963a437cc9e20554ede079ce0a129b2" - integrity sha512-tiDAH9H/kP+tvNO5sczyn9ZAA7utrSMobyDchsnyyXBuUe2FSQWbxhtuHB8jwpHYYevVo2UJpcmvvjrbHboUUQ== + version "2.3.2" + resolved "https://registry.yarnpkg.com/bare-stream/-/bare-stream-2.3.2.tgz#3bc62b429bcf850d2f265719b7a49ee0630a3ae4" + integrity sha512-EFZHSIBkDgSHIwj2l2QZfP4U5OcD4xFAOwhSb/vlr9PIqyGJGvB/nfClJbcnh3EY4jtPE4zsb5ztae96bVF79A== dependencies: - streamx "^2.18.0" + streamx "^2.20.0" base-x@^3.0.2, base-x@^3.0.8: version "3.0.10" @@ -5953,9 +5846,9 @@ big.js@^5.2.2: integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== big.js@^6.0.3: - version "6.2.1" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-6.2.1.tgz#7205ce763efb17c2e41f26f121c420c6a7c2744f" - integrity sha512-bCtHMwL9LeDIozFn+oNhhFoq+yQ3BNdnsLSASUxLciOb1vgvpHsIO1dsENiGMgbb4SkP5TrzWzRiLddn8ahVOQ== + version "6.2.2" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-6.2.2.tgz#be3bb9ac834558b53b099deef2a1d06ac6368e1a" + integrity sha512-y/ie+Faknx7sZA5MfGA2xKlu0GDv8RWrXGsmlteyJQ2lvoKv9GBK/fpRMc2qlSoBAgNxrixICFCBefIq8WCQpQ== bignumber.js@^7.2.1: version "7.2.1" @@ -6030,7 +5923,7 @@ bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.10.0, bn.js@^4.11.0, bn.js@^4.11.6, bn.js@^ resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== -bn.js@^5.0.0, bn.js@^5.1.1, bn.js@^5.1.2, bn.js@^5.1.3, bn.js@^5.2.0, bn.js@^5.2.1: +bn.js@^5.1.1, bn.js@^5.1.2, bn.js@^5.1.3, bn.js@^5.2.0, bn.js@^5.2.1: version "5.2.1" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== @@ -6045,10 +5938,10 @@ bnc-sdk@^4.6.7: rxjs "^6.6.3" sturdy-websocket "^0.1.12" -body-parser@1.20.2, body-parser@^1.16.0: - version "1.20.2" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.2.tgz#6feb0e21c4724d06de7ff38da36dad4f57a747fd" - integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA== +body-parser@1.20.3, body-parser@^1.16.0: + version "1.20.3" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.3.tgz#1953431221c6fb5cd63c4b36d53fab0928e548c6" + integrity sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g== dependencies: bytes "3.1.2" content-type "~1.0.5" @@ -6058,7 +5951,7 @@ body-parser@1.20.2, body-parser@^1.16.0: http-errors "2.0.0" iconv-lite "0.4.24" on-finished "2.4.1" - qs "6.11.0" + qs "6.13.0" raw-body "2.5.2" type-is "~1.6.18" unpipe "1.0.0" @@ -6154,7 +6047,7 @@ browserify-aes@^1.0.4, browserify-aes@^1.0.6, browserify-aes@^1.2.0: inherits "^2.0.1" safe-buffer "^5.0.1" -browserify-cipher@^1.0.0: +browserify-cipher@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== @@ -6174,14 +6067,15 @@ browserify-des@^1.0.0: safe-buffer "^5.1.2" browserify-rsa@^4.0.0, browserify-rsa@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" - integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== + version "4.1.1" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.1.tgz#06e530907fe2949dc21fc3c2e2302e10b1437238" + integrity sha512-YBjSAiTqM04ZVei6sXighu679a3SqWORA3qZTEqZImnlkDIFtKc6pNutpjyZ8RJTjQtuYfeetkxM11GwoYXMIQ== dependencies: - bn.js "^5.0.0" - randombytes "^2.0.1" + bn.js "^5.2.1" + randombytes "^2.1.0" + safe-buffer "^5.2.1" -browserify-sign@^4.0.0: +browserify-sign@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.3.tgz#7afe4c01ec7ee59a89a558a4b75bd85ae62d4208" integrity sha512-JWCZW6SKhfhjJxO8Tyiiy+XYB7cqd2S5/+WeYHsKdNKFlCBhKbblba1A/HN/90YwtxKc8tCErjffZl++UNmGiw== @@ -6259,9 +6153,9 @@ browserify@^16.2.3: xtend "^4.0.0" browserify@^17.0.0: - version "17.0.0" - resolved "https://registry.yarnpkg.com/browserify/-/browserify-17.0.0.tgz#4c48fed6c02bfa2b51fd3b670fddb805723cdc22" - integrity sha512-SaHqzhku9v/j6XsQMRxPyBrSP3gnwmE27gLJYZgMT2GeK3J0+0toN+MnuNYDfHwVGQfLiMZ7KSNSIXHemy905w== + version "17.0.1" + resolved "https://registry.yarnpkg.com/browserify/-/browserify-17.0.1.tgz#d822fa701431ca94cb405b033bb2551951e5d97d" + integrity sha512-pxhT00W3ylMhCHwG5yfqtZjNnFuX5h2IJdaBfSo4ChaaBsIp9VLrEMQ1bHV+Xr1uLPXuNDDM1GlJkjli0qkRsw== dependencies: JSONStream "^1.0.3" assert "^1.4.0" @@ -6280,7 +6174,7 @@ browserify@^17.0.0: duplexer2 "~0.1.2" events "^3.0.0" glob "^7.1.0" - has "^1.0.0" + hasown "^2.0.0" htmlescape "^1.1.0" https-browserify "^1.0.0" inherits "~2.0.1" @@ -6320,15 +6214,15 @@ browserslist@^3.2.6: caniuse-lite "^1.0.30000844" electron-to-chromium "^1.3.47" -browserslist@^4.23.1, browserslist@^4.23.3: - version "4.23.3" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.3.tgz#debb029d3c93ebc97ffbc8d9cbb03403e227c800" - integrity sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA== +browserslist@^4.24.0, browserslist@^4.24.2: + version "4.24.2" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.24.2.tgz#f5845bc91069dbd55ee89faf9822e1d885d16580" + integrity sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg== dependencies: - caniuse-lite "^1.0.30001646" - electron-to-chromium "^1.5.4" + caniuse-lite "^1.0.30001669" + electron-to-chromium "^1.5.41" node-releases "^2.0.18" - update-browserslist-db "^1.1.0" + update-browserslist-db "^1.1.1" bs58@^2.0.1: version "2.0.1" @@ -6571,10 +6465,10 @@ camelize@^1.0.0: resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.1.tgz#89b7e16884056331a35d6b5ad064332c91daa6c3" integrity sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ== -caniuse-lite@^1.0.30000844, caniuse-lite@^1.0.30001646: - version "1.0.30001651" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001651.tgz#52de59529e8b02b1aedcaaf5c05d9e23c0c28138" - integrity sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg== +caniuse-lite@^1.0.30000844, caniuse-lite@^1.0.30001669: + version "1.0.30001677" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001677.tgz#27c2e2c637e007cfa864a16f7dfe7cde66b38b5f" + integrity sha512-fmfjsOlJUpMWu+mAAtZZZHz7UEwsUxIIvu1TJfO1HqFQvB/B+ii0xr9B5HpbZY/mC4XZ8SvjHJqtAY6pDPQEog== caseless@~0.12.0: version "0.12.0" @@ -6726,10 +6620,10 @@ chownr@^1.1.1, chownr@^1.1.4: resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== -chromium-bidi@0.6.4: - version "0.6.4" - resolved "https://registry.yarnpkg.com/chromium-bidi/-/chromium-bidi-0.6.4.tgz#627d76bae2819d59b61a413babe9664e0a16b71d" - integrity sha512-8zoq6ogmhQQkAKZVKO2ObFTl4uOkqoX1PlKQX3hZQ5E9cbUotcAb7h4pTNVAGGv8Z36PF3CtdOriEp/Rz82JqQ== +chromium-bidi@0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/chromium-bidi/-/chromium-bidi-0.8.0.tgz#ffd79dad7db1fcc874f1c55fcf46ded05a884269" + integrity sha512-uJydbGdTw0DEUjhoogGveneJVWX/9YuqkWePzMmkBYwtdAqo5d3J/ovNKFr+/2hWXYmYCr6it8mSSTIj6SS6Ug== dependencies: mitt "3.0.1" urlpattern-polyfill "10.0.0" @@ -6740,6 +6634,11 @@ ci-info@^3.2.0, ci-info@^3.3.0: resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== +ci-info@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-4.0.0.tgz#65466f8b280fc019b9f50a5388115d17a63a44f2" + integrity sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg== + cids@^0.7.1: version "0.7.5" resolved "https://registry.yarnpkg.com/cids/-/cids-0.7.5.tgz#60a08138a99bfb69b6be4ceb63bfef7a396b28b2" @@ -7172,10 +7071,10 @@ concat-stream@^2.0.0: readable-stream "^3.0.2" typedarray "^0.0.6" -confbox@^0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/confbox/-/confbox-0.1.7.tgz#ccfc0a2bcae36a84838e83a3b7f770fb17d6c579" - integrity sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA== +confbox@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/confbox/-/confbox-0.1.8.tgz#820d73d3b3c82d9bd910652c5d4d599ef8ff8b06" + integrity sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w== consola@^3.2.3: version "3.2.3" @@ -7409,7 +7308,7 @@ convert-source-map@~1.1.0: resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.1.3.tgz#4829c877e9fe49b3161f3bf3673888e204699860" integrity sha512-Y8L5rp6jo+g9VEPgvqNfEopjTR4OTYct8lXlS8iVQdmnjDvbdbzYe9rjtFCB9egC86JoNCU61WRY+ScjkZpnIg== -cookie-es@^1.1.0: +cookie-es@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/cookie-es/-/cookie-es-1.2.2.tgz#18ceef9eb513cac1cb6c14bcbf8bdb2679b34821" integrity sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg== @@ -7419,10 +7318,10 @@ cookie-signature@1.0.6: resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== -cookie@0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.6.0.tgz#2798b04b071b0ecbff0dbb62a505a8efa4e19051" - integrity sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw== +cookie@0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.7.1.tgz#2f73c42142d5d5cf71310a74fc4ae61670e5dbc9" + integrity sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w== cookiejar@^2.1.1: version "2.1.4" @@ -7441,27 +7340,27 @@ copy-to-clipboard@^3.3.1: dependencies: toggle-selection "^1.0.6" -core-js-compat@^3.37.1, core-js-compat@^3.38.0: - version "3.38.0" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.38.0.tgz#d93393b1aa346b6ee683377b0c31172ccfe607aa" - integrity sha512-75LAicdLa4OJVwFxFbQR3NdnZjNgX6ILpVcVzcC4T2smerB5lELMrJQQQoWV6TiuC/vlaFqgU2tKQx9w5s0e0A== +core-js-compat@^3.38.0, core-js-compat@^3.38.1: + version "3.39.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.39.0.tgz#b12dccb495f2601dc860bdbe7b4e3ffa8ba63f61" + integrity sha512-VgEUx3VwlExr5no0tXlBt+silBvhTryPwCXRI2Id1PN8WTKu7MreethvddqOubrYxkFdv/RnYrqlv1sFNAUelw== dependencies: - browserslist "^4.23.3" + browserslist "^4.24.2" core-js-pure@^3.30.2: - version "3.38.0" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.38.0.tgz#bc802cd152e33d5b0ec733b656c71cb847cac701" - integrity sha512-8balb/HAXo06aHP58mZMtXgD8vcnXz9tUDePgqBgJgKdmTlMt+jw3ujqniuBDQXMvTzxnMpxHFeuSM3g1jWQuQ== + version "3.39.0" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.39.0.tgz#aa0d54d70a15bdc13e7c853db87c10abc30d68f3" + integrity sha512-7fEcWwKI4rJinnK+wLTezeg2smbFFdSBP6E2kQZNbnzM2s1rpKQ6aaRteZSSg7FLU3P0HGGVo/gbpfanU36urg== core-js@^2.4.0, core-js@^2.5.0: version "2.6.12" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== -core-js@^3.22.3, core-js@^3.6.4: - version "3.38.0" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.38.0.tgz#8acb7c050bf2ccbb35f938c0d040132f6110f636" - integrity sha512-XPpwqEodRljce9KswjZShh95qJ1URisBeKCjUdq27YdenkslVe7OO0ZJhlYXAChW7OhXaRLl8AAba7IBfoIHug== +core-js@^3.22.3, core-js@^3.38.1, core-js@^3.6.4: + version "3.39.0" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.39.0.tgz#57f7647f4d2d030c32a72ea23a0555b2eaa30f83" + integrity sha512-raM0ew0/jJUqkJ0E6e8UDtl+y/7ktFivgWvqw8dNSQeNWoSDLvQ1H/RN3aPXB9tBd4/FhyR4RDPGhsNIMsAn7g== core-util-is@1.0.2: version "1.0.2" @@ -7517,7 +7416,7 @@ crc-32@^1.2.0: resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.2.tgz#3cad35a934b8bf71f25ca524b6da51fb7eace2ff" integrity sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ== -create-ecdh@^4.0.0: +create-ecdh@^4.0.4: version "4.0.4" resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== @@ -7536,7 +7435,7 @@ create-hash@^1.1.0, create-hash@^1.1.1, create-hash@^1.1.2, create-hash@^1.2.0: ripemd160 "^2.0.1" sha.js "^2.4.0" -create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: +create-hmac@^1.1.4, create-hmac@^1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== @@ -7607,10 +7506,12 @@ cross-zip@4.0.0: resolved "https://registry.yarnpkg.com/cross-zip/-/cross-zip-4.0.0.tgz#c29bfb2c001659a6d480ae9596f3bee83b48a230" integrity sha512-MEzGfZo0rqE10O/B+AEcCSJLZsrWuRUvmqJTqHNqBtALhaJc3E3ixLGLJNTRzEA2K34wbmOHC4fwYs9sVsdcCA== -crossws@^0.2.0, crossws@^0.2.4: - version "0.2.4" - resolved "https://registry.yarnpkg.com/crossws/-/crossws-0.2.4.tgz#82a8b518bff1018ab1d21ced9e35ffbe1681ad03" - integrity sha512-DAxroI2uSOgUKLz00NX6A8U/8EE3SZHmIND+10jkVSaypvyt57J5JEOxAQOL6lQxyzi/wZbTIwssU1uy69h5Vg== +"crossws@>=0.2.0 <0.4.0": + version "0.3.1" + resolved "https://registry.yarnpkg.com/crossws/-/crossws-0.3.1.tgz#7980e0b6688fe23286661c3ab8deeccbaa05ca86" + integrity sha512-HsZgeVYaG+b5zA+9PbIPGq4+J/CJynJuearykPsXx4V/eMhyQ5EDVg3Ak2FBZtVXCiOLu/U7IiwDHTr9MA+IKw== + dependencies: + uncrypto "^0.1.3" crypto-addr-codec@^0.1.7: version "0.1.8" @@ -7626,21 +7527,22 @@ crypto-addr-codec@^0.1.7: sha3 "^2.1.1" crypto-browserify@^3.0.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" - integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== + version "3.12.1" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.1.tgz#bb8921bec9acc81633379aa8f52d69b0b69e0dac" + integrity sha512-r4ESw/IlusD17lgQi1O20Fa3qNnsckR126TdUuBgAu7GBYSIPvdNyONd3Zrxh0xCwA4+6w/TDArBPsMvhur+KQ== dependencies: - browserify-cipher "^1.0.0" - browserify-sign "^4.0.0" - create-ecdh "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.0" - diffie-hellman "^5.0.0" - inherits "^2.0.1" - pbkdf2 "^3.0.3" - public-encrypt "^4.0.0" - randombytes "^2.0.0" - randomfill "^1.0.3" + browserify-cipher "^1.0.1" + browserify-sign "^4.2.3" + create-ecdh "^4.0.4" + create-hash "^1.2.0" + create-hmac "^1.1.7" + diffie-hellman "^5.0.3" + hash-base "~3.0.4" + inherits "^2.0.4" + pbkdf2 "^3.1.2" + public-encrypt "^4.0.3" + randombytes "^2.1.0" + randomfill "^1.0.4" crypto-es@^1.2.2: version "1.2.7" @@ -7704,11 +7606,11 @@ cypress-wait-until@1.7.2: integrity sha512-uZ+M8/MqRcpf+FII/UZrU7g1qYZ4aVlHcgyVopnladyoBrpoaMJ4PKZDrdOJ05H5RHbr7s9Tid635X3E+ZLU/Q== cypress@*: - version "13.13.2" - resolved "https://registry.yarnpkg.com/cypress/-/cypress-13.13.2.tgz#c71f8d92056c430b1b879e5313f6de25ccce0eda" - integrity sha512-PvJQU33933NvS1StfzEb8/mu2kMy4dABwCF+yd5Bi7Qly1HOVf+Bufrygee/tlmty/6j5lX+KIi8j9Q3JUMbhA== + version "13.15.2" + resolved "https://registry.yarnpkg.com/cypress/-/cypress-13.15.2.tgz#ef19554c274bc4ff23802aeb5c52951677fa67f1" + integrity sha512-ARbnUorjcCM3XiPwgHKuqsyr5W9Qn+pIIBPaoilnoBkLdSC2oLQjV1BUpnmc7KR+b7Avah3Ly2RMFnfxr96E/A== dependencies: - "@cypress/request" "^3.0.1" + "@cypress/request" "^3.0.6" "@cypress/xvfb" "^1.2.4" "@types/sinonjs__fake-timers" "8.1.1" "@types/sizzle" "^2.3.2" @@ -7719,6 +7621,7 @@ cypress@*: cachedir "^2.3.0" chalk "^4.1.0" check-more-types "^2.24.0" + ci-info "^4.0.0" cli-cursor "^3.1.0" cli-table3 "~0.6.1" commander "^6.2.1" @@ -7733,7 +7636,6 @@ cypress@*: figures "^3.2.0" fs-extra "^9.1.0" getos "^3.2.1" - is-ci "^3.0.1" is-installed-globally "~0.4.0" lazy-ass "^1.6.0" listr2 "^3.8.3" @@ -7748,6 +7650,7 @@ cypress@*: semver "^7.5.3" supports-color "^8.1.1" tmp "~0.2.3" + tree-kill "1.2.2" untildify "^4.0.0" yauzl "^2.10.0" @@ -7945,9 +7848,9 @@ dayjs@1.10.7: integrity sha512-P6twpd70BcPK34K26uJ1KT3wlhpuOAPoMwJzpsIWUxHZ7wpmbdZL/hQqBDfz7hGurYSa5PhzdhDHtt319hL3ig== dayjs@^1.10.4: - version "1.11.12" - resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.12.tgz#5245226cc7f40a15bf52e0b99fd2a04669ccac1d" - integrity sha512-Rt2g+nTbLlDWZTwwrIXjy9MeiZmSDI375FvZs72ngxx8PDC6YXOeR3q5LAuPzjZQxhiWdRKac7RKV+YyQYfYIg== + version "1.11.13" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.13.tgz#92430b0139055c3ebb60150aa13e860a4b5a366c" + integrity sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg== debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: version "2.6.9" @@ -7956,12 +7859,12 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: dependencies: ms "2.0.0" -debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.3.5, debug@^4.3.6, debug@~4.3.6: - version "4.3.6" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.6.tgz#2ab2c38fbaffebf8aa95fdfe6d88438c7a13c52b" - integrity sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg== +debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.3.7, debug@~4.3.6: + version "4.3.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.7.tgz#87945b4151a011d76d95a198d7111c865c360a52" + integrity sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ== dependencies: - ms "2.1.2" + ms "^2.1.3" debug@4.1.1: version "4.1.1" @@ -8255,10 +8158,10 @@ detective@^5.2.0: defined "^1.0.0" minimist "^1.2.6" -devtools-protocol@0.0.1312386: - version "0.0.1312386" - resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.1312386.tgz#5ab824d6f1669ec6c6eb0fba047e73601d969052" - integrity sha512-DPnhUXvmvKT2dFA/j7B+riVLUt9Q6RKJlcppojL5CoRywJJKLDYnRlw0gTFKfgDPHP5E04UoB71SxoJlVZy8FA== +devtools-protocol@0.0.1354347: + version "0.0.1354347" + resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.1354347.tgz#5cb509610b8f61fc69a31e5c810d5bed002d85ea" + integrity sha512-BlmkSqV0V84E2WnEnoPnwyix57rQxAM5SKJjf4TbYOCGLAWtz8CDH8RIaGOjPgPCXo2Mce3kxSY497OySidY3Q== devtools-protocol@0.0.969999: version "0.0.969999" @@ -8270,7 +8173,7 @@ diff@^4.0.1: resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== -diffie-hellman@^5.0.0: +diffie-hellman@^5.0.3: version "5.0.3" resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== @@ -8486,10 +8389,10 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== -electron-to-chromium@^1.3.47, electron-to-chromium@^1.5.4: - version "1.5.6" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.6.tgz#c81d9938b5a877314ad370feb73b4e5409b36abd" - integrity sha512-jwXWsM5RPf6j9dPYzaorcBSUg6AiqocPEyMpkchkvntaH9HGfOOMZwxMJjDY/XEs3T5dM7uyH1VhRMkqUU9qVw== +electron-to-chromium@^1.3.47, electron-to-chromium@^1.5.41: + version "1.5.52" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.52.tgz#2bed832c95a56a195504f918150e548474687da8" + integrity sha512-xtoijJTZ+qeucLBDNztDOuQBE1ksqjvNjvqFoST3nGC7fSpqJ+X6BdTBaY5BHG+IhWWmpc6b/KfpeuEDupEPOQ== elliptic@6.5.2: version "6.5.2" @@ -8517,10 +8420,10 @@ elliptic@6.5.4: minimalistic-assert "^1.0.1" minimalistic-crypto-utils "^1.0.1" -elliptic@^6.4.0, elliptic@^6.5.2, elliptic@^6.5.3, elliptic@^6.5.4, elliptic@^6.5.5: - version "6.5.6" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.6.tgz#ee5f7c3a00b98a2144ac84d67d01f04d438fa53e" - integrity sha512-mpzdtpeCLuS3BmE3pO3Cpp5bbjlOPY2Q0PgoF+Od1XZrHLYI28Xe3ossCmYCQt11FQKEYd9+PF8jymTvtWJSHQ== +elliptic@6.6.0, elliptic@^6.4.0, elliptic@^6.5.2, elliptic@^6.5.3, elliptic@^6.5.5, elliptic@^6.5.7: + version "6.6.0" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.6.0.tgz#5919ec723286c1edf28685aa89261d4761afa210" + integrity sha512-dpwoQcLc/2WLQvJvLRHKZ+f9FgOdjnq11rurqwekGQygGPsYSK29OMMD2WalatiqQ+XGFDglTNixpPfI+lpaAA== dependencies: bn.js "^4.11.9" brorand "^1.1.0" @@ -8536,9 +8439,9 @@ email-addresses@^3.0.1: integrity sha512-k0/r7GrWVL32kZlGwfPNgB2Y/mMXVTq/decgLczm/j34whdaspNrZO8CnXPf1laaHxI6ptUlsnAxN+UAPw+fzg== emoji-regex@^10.3.0: - version "10.3.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-10.3.0.tgz#76998b9268409eb3dae3de989254d456e70cfe23" - integrity sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw== + version "10.4.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-10.4.0.tgz#03553afea80b3975749cfcb36f776ca268e413d4" + integrity sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw== emoji-regex@^7.0.1: version "7.0.3" @@ -8565,6 +8468,11 @@ encodeurl@~1.0.2: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== +encodeurl@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-2.0.0.tgz#7b8ea898077d7e409d3ac45474ea38eaf0857a58" + integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg== + encoding-sniffer@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/encoding-sniffer/-/encoding-sniffer-0.2.0.tgz#799569d66d443babe82af18c9f403498365ef1d5" @@ -8724,10 +8632,10 @@ es-get-iterator@^1.1.3: isarray "^2.0.5" stop-iteration-iterator "^1.0.0" -es-iterator-helpers@^1.0.19: - version "1.0.19" - resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz#117003d0e5fec237b4b5c08aded722e0c6d50ca8" - integrity sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw== +es-iterator-helpers@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.2.0.tgz#2f1a3ab998b30cb2d10b195b587c6d9ebdebf152" + integrity sha512-tpxqxncxnpw3c93u8n3VOzACmRFoVmWJqbWXvX/JfKbkhBw1oslgPrUfeSt2psuqyEJFD6N/9lg5i7bsKpoq+Q== dependencies: call-bind "^1.0.7" define-properties "^1.2.1" @@ -8736,12 +8644,13 @@ es-iterator-helpers@^1.0.19: es-set-tostringtag "^2.0.3" function-bind "^1.1.2" get-intrinsic "^1.2.4" - globalthis "^1.0.3" + globalthis "^1.0.4" + gopd "^1.0.1" has-property-descriptors "^1.0.2" has-proto "^1.0.3" has-symbols "^1.0.3" internal-slot "^1.0.7" - iterator.prototype "^1.1.2" + iterator.prototype "^1.1.3" safe-array-concat "^1.1.2" es-object-atoms@^1.0.0: @@ -9007,10 +8916,10 @@ esbuild@^0.21.3: "@esbuild/win32-ia32" "0.21.5" "@esbuild/win32-x64" "0.21.5" -escalade@^3.1.1, escalade@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" - integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== +escalade@^3.1.1, escalade@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" + integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== escape-html@~1.0.3: version "1.0.3" @@ -9058,9 +8967,9 @@ eslint-import-resolver-node@^0.3.6: resolve "^1.22.4" eslint-module-utils@^2.7.3: - version "2.8.1" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz#52f2404300c3bd33deece9d7372fb337cc1d7c34" - integrity sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q== + version "2.12.0" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz#fe4cfb948d61f49203d7b08871982b65b9af0b0b" + integrity sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg== dependencies: debug "^3.2.7" @@ -9133,16 +9042,16 @@ eslint-plugin-react-hooks@^4.6.2: integrity sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ== eslint-plugin-react@^7.35.0: - version "7.35.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.35.0.tgz#00b1e4559896710e58af6358898f2ff917ea4c41" - integrity sha512-v501SSMOWv8gerHkk+IIQBkcGRGrO2nfybfj5pLxuJNFTPxxA3PSryhXTK+9pNbtkggheDdsC0E9Q8CuPk6JKA== + version "7.37.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.37.2.tgz#cd0935987876ba2900df2f58339f6d92305acc7a" + integrity sha512-EsTAnj9fLVr/GZleBLFbj/sSuXeWmp1eXIN60ceYnZveqEaUCyW4X+Vh4WTdUhCkW4xutXYqTXCUSyqD4rB75w== dependencies: array-includes "^3.1.8" array.prototype.findlast "^1.2.5" array.prototype.flatmap "^1.3.2" array.prototype.tosorted "^1.1.4" doctrine "^2.1.0" - es-iterator-helpers "^1.0.19" + es-iterator-helpers "^1.1.0" estraverse "^5.3.0" hasown "^2.0.2" jsx-ast-utils "^2.4.1 || ^3.0.0" @@ -9227,7 +9136,7 @@ eslint-visitor-keys@^2.0.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== -eslint-visitor-keys@^3.3.0: +eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.3: version "3.4.3" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== @@ -10080,36 +9989,36 @@ exponential-backoff@^3.1.1: integrity sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw== express@^4.14.0: - version "4.19.2" - resolved "https://registry.yarnpkg.com/express/-/express-4.19.2.tgz#e25437827a3aa7f2a827bc8171bbbb664a356465" - integrity sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q== + version "4.21.1" + resolved "https://registry.yarnpkg.com/express/-/express-4.21.1.tgz#9dae5dda832f16b4eec941a4e44aa89ec481b281" + integrity sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ== dependencies: accepts "~1.3.8" array-flatten "1.1.1" - body-parser "1.20.2" + body-parser "1.20.3" content-disposition "0.5.4" content-type "~1.0.4" - cookie "0.6.0" + cookie "0.7.1" cookie-signature "1.0.6" debug "2.6.9" depd "2.0.0" - encodeurl "~1.0.2" + encodeurl "~2.0.0" escape-html "~1.0.3" etag "~1.8.1" - finalhandler "1.2.0" + finalhandler "1.3.1" fresh "0.5.2" http-errors "2.0.0" - merge-descriptors "1.0.1" + merge-descriptors "1.0.3" methods "~1.1.2" on-finished "2.4.1" parseurl "~1.3.3" - path-to-regexp "0.1.7" + path-to-regexp "0.1.10" proxy-addr "~2.0.7" - qs "6.11.0" + qs "6.13.0" range-parser "~1.2.1" safe-buffer "5.2.1" - send "0.18.0" - serve-static "1.15.0" + send "0.19.0" + serve-static "1.16.2" setprototypeof "1.2.0" statuses "2.0.1" type-is "~1.6.18" @@ -10258,9 +10167,9 @@ fast-safe-stringify@^2.0.6, fast-safe-stringify@^2.0.7: integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== fast-uri@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.0.1.tgz#cddd2eecfc83a71c1be2cc2ef2061331be8a7134" - integrity sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw== + version "3.0.3" + resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.0.3.tgz#892a1c91802d5d7860de728f18608a0573142241" + integrity sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw== fast-url-parser@1.1.3: version "1.1.3" @@ -10365,13 +10274,13 @@ filter-obj@^1.1.0: resolved "https://registry.yarnpkg.com/filter-obj/-/filter-obj-1.1.0.tgz#9b311112bc6c6127a16e016c6c5d7f19e0805c5b" integrity sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ== -finalhandler@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" - integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== +finalhandler@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.3.1.tgz#0c575f1d1d324ddd1da35ad7ece3df7d19088019" + integrity sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ== dependencies: debug "2.6.9" - encodeurl "~1.0.2" + encodeurl "~2.0.0" escape-html "~1.0.3" on-finished "2.4.1" parseurl "~1.3.3" @@ -10488,9 +10397,9 @@ follow-redirects@1.5.10: debug "=3.1.0" follow-redirects@^1.14.0, follow-redirects@^1.14.4, follow-redirects@^1.14.8: - version "1.15.6" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.6.tgz#7f815c0cda4249c74ff09e95ef97c23b5fd0399b" - integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA== + version "1.15.9" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.9.tgz#a604fa10e443bf98ca94228d9eebcc2e8a2c8ee1" + integrity sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ== for-each@^0.3.3, for-each@~0.3.3: version "0.3.3" @@ -10523,9 +10432,9 @@ form-data-encoder@1.7.1: integrity sha512-EFRDrsMm/kyqbTQocNvRXMLjc7Es2Vk+IQFx/YW7hkUH1eBl4J1fqiP34l74Yt0pFLCNpc06fkbVk00008mzjg== form-data@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" - integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== + version "3.0.2" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.2.tgz#83ad9ced7c03feaad97e293d6f6091011e1659c8" + integrity sha512-sJe+TQb2vIaIyO783qN6BlMYWMw3WBOHA1Ay2qxsnjuafEOQFJ2JakedOQirT6D5XPRxDvS7AHYyem9fTpb4LQ== dependencies: asynckit "^0.4.0" combined-stream "^1.0.8" @@ -10540,6 +10449,15 @@ form-data@~2.3.2: combined-stream "^1.0.6" mime-types "^2.1.12" +form-data@~4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.1.tgz#ba1076daaaa5bfd7e99c1a6cb02aa0a5cff90d48" + integrity sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + forwarded@0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" @@ -10701,9 +10619,9 @@ get-caller-file@^2.0.1, get-caller-file@^2.0.5: integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== get-east-asian-width@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/get-east-asian-width/-/get-east-asian-width-1.2.0.tgz#5e6ebd9baee6fb8b7b6bd505221065f0cd91f64e" - integrity sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA== + version "1.3.0" + resolved "https://registry.yarnpkg.com/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz#21b4071ee58ed04ee0db653371b55b4299875389" + integrity sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ== get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4: version "1.2.4" @@ -10914,7 +10832,7 @@ globals@^9.18.0: resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== -globalthis@^1.0.3: +globalthis@^1.0.3, globalthis@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.4.tgz#7430ed3a975d97bfb59bcce41f5cabbafa651236" integrity sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ== @@ -11034,21 +10952,21 @@ graphql@^15.6.1: resolved "https://registry.yarnpkg.com/graphql/-/graphql-15.9.0.tgz#4e8ca830cfd30b03d44d3edd9cac2b0690304b53" integrity sha512-GCOQdvm7XxV1S4U4CGrsdlEN37245eC8P9zaYCMr6K1BG0IPGy5lUwmJsEOGyl1GD6HXjOtl2keCP9asRBwNvA== -h3@^1.10.2, h3@^1.11.1: - version "1.12.0" - resolved "https://registry.yarnpkg.com/h3/-/h3-1.12.0.tgz#9d7f05f08a997d263e484b02436cb027df3026d8" - integrity sha512-Zi/CcNeWBXDrFNlV0hUBJQR9F7a96RjMeAZweW/ZWkR9fuXrMcvKnSA63f/zZ9l0GgQOZDVHGvXivNN9PWOwhA== +h3@^1.12.0, h3@^1.13.0: + version "1.13.0" + resolved "https://registry.yarnpkg.com/h3/-/h3-1.13.0.tgz#b5347a8936529794b6754b440e26c0ab8a60dceb" + integrity sha512-vFEAu/yf8UMUcB4s43OaDaigcqpQd14yanmOsn+NcRX3/guSKncyE2rOYhq8RIchgJrPSs/QiIddnTTR1ddiAg== dependencies: - cookie-es "^1.1.0" - crossws "^0.2.4" + cookie-es "^1.2.2" + crossws ">=0.2.0 <0.4.0" defu "^6.1.4" destr "^2.0.3" - iron-webcrypto "^1.1.1" - ohash "^1.1.3" + iron-webcrypto "^1.2.1" + ohash "^1.1.4" radix3 "^1.1.2" - ufo "^1.5.3" + ufo "^1.5.4" uncrypto "^0.1.3" - unenv "^1.9.0" + unenv "^1.10.0" handlebars@^4.7.7: version "4.7.8" @@ -11171,7 +11089,7 @@ hash-base@^3.0.0: readable-stream "^3.6.0" safe-buffer "^5.2.0" -hash-base@~3.0: +hash-base@~3.0, hash-base@~3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" integrity sha512-EeeoJKjTyt868liAlVmcv2ZsUfGHlE3Q+BICOXcZiwN3osr5Q/zFGYmTJpoIzuaSTAwndFy+GqhEwlU4L3j4Ow== @@ -11360,6 +11278,15 @@ http-signature@~1.3.6: jsprim "^2.0.2" sshpk "^1.14.1" +http-signature@~1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.4.0.tgz#dee5a9ba2bf49416abc544abd6d967f6a94c8c3f" + integrity sha512-G5akfn7eKbpDN+8nPS/cb57YeA1jLTVxjpCj7tmm3QKPdyDy7T+qSC40e9ptydSWvkwjSXw1VbkpyEm39ukeAg== + dependencies: + assert-plus "^1.0.0" + jsprim "^2.0.2" + sshpk "^1.18.0" + http2-wrapper@^1.0.0-beta.5.2: version "1.0.3" resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.3.tgz#b8f55e0c1f25d4ebd08b3b0c2c079f9590800b3d" @@ -11421,9 +11348,9 @@ humanize-url@^1.0.0: strip-url-auth "^1.0.0" husky@^9.1.4: - version "9.1.4" - resolved "https://registry.yarnpkg.com/husky/-/husky-9.1.4.tgz#926fd19c18d345add5eab0a42b2b6d9a80259b34" - integrity sha512-bho94YyReb4JV7LYWRWxZ/xr6TtOTt8cMfmQ39MQYJ7f/YE268s3GdghGwi+y4zAeqewE5zYLvuhV0M0ijsDEA== + version "9.1.6" + resolved "https://registry.yarnpkg.com/husky/-/husky-9.1.6.tgz#e23aa996b6203ab33534bdc82306b0cf2cb07d6c" + integrity sha512-sqbjZKK7kf44hfdE94EoX8MZNk0n7HeW37O4YrVGCF4wzgQjp+akPAkfUK5LZ6KuR/6sqeAVuXHji+RzQgOn5A== hyphenate-style-name@^1.0.0: version "1.1.0" @@ -11623,7 +11550,7 @@ ipaddr.js@1.9.1: resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== -iron-webcrypto@^1.1.1: +iron-webcrypto@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/iron-webcrypto/-/iron-webcrypto-1.2.1.tgz#aa60ff2aa10550630f4c0b11fd2442becdb35a6f" integrity sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg== @@ -11707,7 +11634,7 @@ is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== -is-ci@^3.0.0, is-ci@^3.0.1: +is-ci@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-3.0.1.tgz#db6ecbed1bd659c43dac0f45661e7674103d1867" integrity sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ== @@ -11715,9 +11642,9 @@ is-ci@^3.0.0, is-ci@^3.0.1: ci-info "^3.2.0" is-core-module@^2.13.0, is-core-module@^2.5.0, is-core-module@^2.8.1: - version "2.15.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.15.0.tgz#71c72ec5442ace7e76b306e9d48db361f22699ea" - integrity sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA== + version "2.15.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.15.1.tgz#a7363a25bee942fefab0de13bf6aa372c82dcc37" + integrity sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ== dependencies: hasown "^2.0.2" @@ -12104,14 +12031,6 @@ isomorphic-fetch@^2.2.1: node-fetch "^1.0.1" whatwg-fetch ">=0.10.0" -isomorphic-unfetch@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/isomorphic-unfetch/-/isomorphic-unfetch-3.1.0.tgz#87341d5f4f7b63843d468438128cb087b7c3e98f" - integrity sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q== - dependencies: - node-fetch "^2.6.1" - unfetch "^4.2.0" - isows@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/isows/-/isows-1.0.3.tgz#93c1cf0575daf56e7120bab5c8c448b0809d0d74" @@ -12122,6 +12041,11 @@ isows@1.0.4: resolved "https://registry.yarnpkg.com/isows/-/isows-1.0.4.tgz#810cd0d90cc4995c26395d2aa4cfa4037ebdf061" integrity sha512-hEzjY+x9u9hPmBom9IIAqdJCwNLax+xrPb51vEPpERoFlIxgmZcHzsT5jKG06nvInKOBGvReAVz80Umed5CczQ== +isows@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/isows/-/isows-1.0.6.tgz#0da29d706fa51551c663c627ace42769850f86e7" + integrity sha512-lPHCayd40oW98/I0uvgaHKWCSvkzY27LjWLbtzOm64yQ+G3Q5npjjbdppU65iZXkK1Zt+kH9pfegli0AYfwYYw== + isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" @@ -12203,10 +12127,10 @@ istanbul-reports@^3.0.2: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" -iterator.prototype@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/iterator.prototype/-/iterator.prototype-1.1.2.tgz#5e29c8924f01916cb9335f1ff80619dcff22b0c0" - integrity sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w== +iterator.prototype@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/iterator.prototype/-/iterator.prototype-1.1.3.tgz#016c2abe0be3bbdb8319852884f60908ac62bf9c" + integrity sha512-FW5iMbeQ6rBGm/oKgzq2aW4KvAGpxPzYES8N4g4xNXUKpL1mclMvOe+76AcLDTvD+Ze+sOpVhgdAQEKF4L9iGQ== dependencies: define-properties "^1.2.1" get-intrinsic "^1.2.1" @@ -12214,10 +12138,10 @@ iterator.prototype@^1.1.2: reflect.getprototypeof "^1.0.4" set-function-name "^2.0.1" -jiti@^1.21.0: - version "1.21.6" - resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.6.tgz#6c7f7398dd4b3142767f9a168af2f317a428d268" - integrity sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w== +jiti@^2.1.2: + version "2.4.0" + resolved "https://registry.yarnpkg.com/jiti/-/jiti-2.4.0.tgz#393d595fb6031a11d11171b5e4fc0b989ba3e053" + integrity sha512-H5UpaUI+aHOqZXlYOaFP/8AzKsg+guWu+Pr3Y8i7+Y3zr1aXAvCvTAQ1RxSc6oVD8R8c7brgNtTVP91E7upH/g== joi@17.9.1: version "17.9.1" @@ -12296,10 +12220,10 @@ jsesc@^1.3.0: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" integrity sha512-Mke0DA0QjUWuJlhsE0ZPPhYiJkRap642SmI/4ztCFaUs6V2AiH1sfecc+57NgaryfAA2VR3v6O+CSjC1jZJKOA== -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== +jsesc@^3.0.2, jsesc@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.0.2.tgz#bb8b09a6597ba426425f2e4a07245c3d00b9343e" + integrity sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g== jsesc@~0.5.0: version "0.5.0" @@ -12419,9 +12343,9 @@ json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== json-to-graphql-query@^2.2.4: - version "2.2.5" - resolved "https://registry.yarnpkg.com/json-to-graphql-query/-/json-to-graphql-query-2.2.5.tgz#56b072a693b50fd4dc981367b60d52e3dc78f426" - integrity sha512-5Nom9inkIMrtY992LMBBG1Zaekrc10JaRhyZgprwHBVMDtRgllTvzl0oBbg13wJsVZoSoFNNMaeIVQs0P04vsA== + version "2.3.0" + resolved "https://registry.yarnpkg.com/json-to-graphql-query/-/json-to-graphql-query-2.3.0.tgz#cf2d4927f99c372c91abff699b2c3dd4cc2f825e" + integrity sha512-khZtaLLQ0HllFec+t89ZWduUZ0rmne/OpRm/39hyZUWDHNx9Yk4DgQzDtMeqd8zj2g5opBD4GHrdtH0JzKnN2g== json5@^0.5.1: version "0.5.1" @@ -12649,9 +12573,9 @@ lines-and-columns@^1.1.6: integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== lint-staged@>=10: - version "15.2.9" - resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-15.2.9.tgz#bf70d40b6b192df6ad756fb89822211615e0f4da" - integrity sha512-BZAt8Lk3sEnxw7tfxM7jeZlPRuT4M68O0/CwZhhaw6eeWu0Lz5eERE3m386InivXB64fp/mDID452h48tvKlRQ== + version "15.2.10" + resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-15.2.10.tgz#92ac222f802ba911897dcf23671da5bb80643cd2" + integrity sha512-5dY5t743e1byO19P9I4b3x8HJwalIznL5E1FWYnU6OWw33KxNBSLAc6Cy7F2PsFEO8FKnLwjwm5hx7aMF0jzZg== dependencies: chalk "~5.3.0" commander "~12.1.0" @@ -12659,32 +12583,32 @@ lint-staged@>=10: execa "~8.0.1" lilconfig "~3.1.2" listr2 "~8.2.4" - micromatch "~4.0.7" + micromatch "~4.0.8" pidtree "~0.6.0" string-argv "~0.3.2" yaml "~2.5.0" -listhen@^1.7.2: - version "1.7.2" - resolved "https://registry.yarnpkg.com/listhen/-/listhen-1.7.2.tgz#66b81740692269d5d8cafdc475020f2fc51afbae" - integrity sha512-7/HamOm5YD9Wb7CFgAZkKgVPA96WwhcTQoqtm2VTZGVbVVn3IWKRBTgrU7cchA3Q8k9iCsG8Osoi9GX4JsGM9g== +listhen@^1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/listhen/-/listhen-1.9.0.tgz#59355f7e4fc1eefda6bc494ae7e9ed13aa7658ef" + integrity sha512-I8oW2+QL5KJo8zXNWX046M134WchxsXC7SawLPvRQpogCbkyQIaFxPE89A2HiwR7vAK2Dm2ERBAmyjTYGYEpBg== dependencies: "@parcel/watcher" "^2.4.1" "@parcel/watcher-wasm" "^2.4.1" citty "^0.1.6" clipboardy "^4.0.0" consola "^3.2.3" - crossws "^0.2.0" + crossws ">=0.2.0 <0.4.0" defu "^6.1.4" get-port-please "^3.1.2" - h3 "^1.10.2" + h3 "^1.12.0" http-shutdown "^1.2.2" - jiti "^1.21.0" - mlly "^1.6.1" + jiti "^2.1.2" + mlly "^1.7.1" node-forge "^1.3.1" pathe "^1.1.2" std-env "^3.7.0" - ufo "^1.4.0" + ufo "^1.5.4" untun "^0.1.3" uqr "^0.1.2" @@ -12703,9 +12627,9 @@ listr2@^3.8.3: wrap-ansi "^7.0.0" listr2@~8.2.4: - version "8.2.4" - resolved "https://registry.yarnpkg.com/listr2/-/listr2-8.2.4.tgz#486b51cbdb41889108cb7e2c90eeb44519f5a77f" - integrity sha512-opevsywziHd3zHCVQGAj8zu+Z3yHNkkoYhWIGnq54RrCVwLz0MozotJEDnKsIBLvkfLGN6BLOyAeRrYI0pKA4g== + version "8.2.5" + resolved "https://registry.yarnpkg.com/listr2/-/listr2-8.2.5.tgz#5c9db996e1afeb05db0448196d3d5f64fec2593d" + integrity sha512-iyAZCeyD+c1gPyE9qpFu8af0Y+MRtmKOncdGoA2S5EY8iFq99dmmvkNnHiWo+pj0s7yH7l3KPIgee77tKpXPWQ== dependencies: cli-truncate "^4.0.0" colorette "^2.0.20" @@ -12760,7 +12684,7 @@ load-json-file@^4.0.0: pify "^3.0.0" strip-bom "^3.0.0" -loader-utils@^2.0.0: +loader-utils@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.4.tgz#8b5cb38b5c34a9a018ee1fc0e6a066d1dfcc528c" integrity sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw== @@ -12904,7 +12828,7 @@ lodash@4.17.19: resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b" integrity sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ== -lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4: +lodash@4.17.21, lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -12979,7 +12903,7 @@ lowercase-keys@^3.0.0: resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-3.0.0.tgz#c5e7d442e37ead247ae9db117a9d0a467c89d4f2" integrity sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ== -lru-cache@^10.2.0: +lru-cache@^10.4.3: version "10.4.3" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119" integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== @@ -13147,10 +13071,10 @@ meow@^8.0.0: type-fest "^0.18.0" yargs-parser "^20.2.3" -merge-descriptors@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" - integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== +merge-descriptors@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.3.tgz#d80319a65f3c7935351e5cfdac8f9318504dbed5" + integrity sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ== merge-stream@^2.0.0: version "2.0.0" @@ -13205,10 +13129,10 @@ micromatch@^3.1.4: snapdragon "^0.8.1" to-regex "^3.0.2" -micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5, micromatch@~4.0.7: - version "4.0.7" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.7.tgz#33e8190d9fe474a9895525f5618eee136d46c2e5" - integrity sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q== +micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5, micromatch@~4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" + integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== dependencies: braces "^3.0.3" picomatch "^2.3.1" @@ -13404,15 +13328,15 @@ mkdirp@^1.0.4: resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== -mlly@^1.6.1, mlly@^1.7.1: - version "1.7.1" - resolved "https://registry.yarnpkg.com/mlly/-/mlly-1.7.1.tgz#e0336429bb0731b6a8e887b438cbdae522c8f32f" - integrity sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA== +mlly@^1.7.1, mlly@^1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/mlly/-/mlly-1.7.2.tgz#21c0d04543207495b8d867eff0ac29fac9a023c0" + integrity sha512-tN3dvVHYVz4DhSXinXIk7u9syPYaJvio118uomkovAtWBT+RdbP6Lfh/5Lvo519YMmwBafwlh20IPTXIStscpA== dependencies: - acorn "^8.11.3" + acorn "^8.12.1" pathe "^1.1.2" - pkg-types "^1.1.1" - ufo "^1.5.3" + pkg-types "^1.2.0" + ufo "^1.5.4" mock-fs@^4.1.0: version "4.14.0" @@ -13479,7 +13403,7 @@ motion@10.16.2: "@motionone/utils" "^10.15.1" "@motionone/vue" "^10.16.2" -mri@1.2.0, mri@^1.1.0, mri@^1.2.0: +mri@1.2.0, mri@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b" integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA== @@ -13494,7 +13418,7 @@ ms@2.1.2: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -ms@2.1.3, ms@^2.1.1: +ms@2.1.3, ms@^2.1.1, ms@^2.1.3: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== @@ -13550,9 +13474,9 @@ mute-stream@0.0.7: integrity sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ== nan@^2.14.0, nan@^2.2.1: - version "2.20.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.20.0.tgz#08c5ea813dd54ed16e5bd6505bf42af4f7838ca3" - integrity sha512-bk3gXBZDGILuuo/6sKtr0DQmSThYHLtNCdSdXk9YkxD/jK6X2vmCyyXBBxyqZ4XcnzTyYEAThfX3DCEnLf6igw== + version "2.22.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.22.0.tgz#31bc433fc33213c97bad36404bb68063de604de3" + integrity sha512-nbajikzWTMwsW+eSsNm3QwlOs7het9gGJU5dDZzRTQGk03vyBOauxgI4VakDzE0PtsGTmXPsXTbbjVhRwR5mpw== nano-base32@^1.0.1: version "1.0.1" @@ -13592,9 +13516,9 @@ nanomatch@^1.2.9: to-regex "^3.0.1" napi-wasm@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/napi-wasm/-/napi-wasm-1.1.0.tgz#bbe617823765ae9c1bc12ff5942370eae7b2ba4e" - integrity sha512-lHwIAJbmLSjF9VDRm9GoVOy9AGp3aIvkjv+Kvz9h16QR3uSVYH78PNQUnT2U4X53mhlnV2M7wrhibQ3GHicDmg== + version "1.1.3" + resolved "https://registry.yarnpkg.com/napi-wasm/-/napi-wasm-1.1.3.tgz#7bb95c88e6561f84880bb67195437b1cfbe99224" + integrity sha512-h/4nMGsHjZDCYmQVNODIrYACVJ+I9KItbG+0si6W/jSjdA9JbWDoU4LLeMXVcEQGHjttI2tuXqDrbGF7qkUHHg== natural-compare-lite@^1.4.0: version "1.4.0" @@ -13651,12 +13575,17 @@ node-addon-api@^2.0.0: resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32" integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== +node-addon-api@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-5.1.0.tgz#49da1ca055e109a23d537e9de43c09cca21eb762" + integrity sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA== + node-addon-api@^7.0.0: version "7.1.1" resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-7.1.1.tgz#1aba6693b0f255258a049d621329329322aad558" integrity sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ== -node-fetch-native@^1.6.2, node-fetch-native@^1.6.3, node-fetch-native@^1.6.4: +node-fetch-native@^1.6.4: version "1.6.4" resolved "https://registry.yarnpkg.com/node-fetch-native/-/node-fetch-native-1.6.4.tgz#679fc8fd8111266d47d7e72c379f1bed9acff06e" integrity sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ== @@ -13701,9 +13630,9 @@ node-forge@^1.3.1: integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== node-gyp-build@^4.2.0, node-gyp-build@^4.3.0: - version "4.8.1" - resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.8.1.tgz#976d3ad905e71b76086f4f0b0d3637fe79b6cda5" - integrity sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw== + version "4.8.2" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.8.2.tgz#4f802b71c1ab2ca16af830e6c1ea7dd1ad9496fa" + integrity sha512-IRUxE4BVsHWXkV/SFOut4qTlagw2aM8T5/vnTsmrHJvVoKueJHRc/JaFND7QDDc61kLYUJ6qlZM3sqTSyx2dTw== node-preload@^0.2.1: version "0.2.1" @@ -13942,19 +13871,19 @@ oboe@2.1.5: dependencies: http-https "^1.0.0" -ofetch@^1.3.3: - version "1.3.4" - resolved "https://registry.yarnpkg.com/ofetch/-/ofetch-1.3.4.tgz#7ea65ced3c592ec2b9906975ae3fe1d26a56f635" - integrity sha512-KLIET85ik3vhEfS+3fDlc/BAZiAp+43QEC/yCo5zkNoY2YaKvNkOaFr/6wCFgFH1kuYQM5pMNi0Tg8koiIemtw== +ofetch@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/ofetch/-/ofetch-1.4.1.tgz#b6bf6b0d75ba616cef6519dd8b6385a8bae480ec" + integrity sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw== dependencies: destr "^2.0.3" - node-fetch-native "^1.6.3" - ufo "^1.5.3" + node-fetch-native "^1.6.4" + ufo "^1.5.4" -ohash@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/ohash/-/ohash-1.1.3.tgz#f12c3c50bfe7271ce3fd1097d42568122ccdcf07" - integrity sha512-zuHHiGTYTA1sYJ/wZN+t5HKZaH23i4yI1HMwbuXm24Nid7Dv0KcuRlKoNKS9UNfAVSBlnGLcuQrnOKWOZoEGaw== +ohash@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/ohash/-/ohash-1.1.4.tgz#ae8d83014ab81157d2c285abf7792e2995fadd72" + integrity sha512-FlDryZAahJmEF3VR3w1KogSEdWX3WhA5GPakFx4J81kEAiHyLMpdLLElS8n8dfNadMgAne/MywcvmogzscVt4g== on-exit-leak-free@^0.2.0: version "0.2.0" @@ -14264,11 +14193,11 @@ parse-ms@^2.1.0: integrity sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA== parse5-htmlparser2-tree-adapter@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz#23c2cc233bcf09bb7beba8b8a69d46b08c62c2f1" - integrity sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g== + version "7.1.0" + resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz#b5a806548ed893a43e24ccb42fbb78069311e81b" + integrity sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g== dependencies: - domhandler "^5.0.2" + domhandler "^5.0.3" parse5 "^7.0.0" parse5-parser-stream@^7.1.2: @@ -14279,11 +14208,11 @@ parse5-parser-stream@^7.1.2: parse5 "^7.0.0" parse5@^7.0.0, parse5@^7.1.2: - version "7.1.2" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.1.2.tgz#0736bebbfd77793823240a23b7fc5e010b7f8e32" - integrity sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw== + version "7.2.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.2.1.tgz#8928f55915e6125f430cc44309765bf17556a33a" + integrity sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ== dependencies: - entities "^4.4.0" + entities "^4.5.0" parseurl@~1.3.3: version "1.3.3" @@ -14377,10 +14306,10 @@ path-platform@~0.11.15: resolved "https://registry.yarnpkg.com/path-platform/-/path-platform-0.11.15.tgz#e864217f74c36850f0852b78dc7bf7d4a5721bf2" integrity sha512-Y30dB6rab1A/nfEKsZxmr01nUotHX0c/ZiIAsCTatEe1CmS5Pm5He7fZ195bPT7RdquoaL8lLxFCMQi/bS7IJg== -path-to-regexp@0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" - integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== +path-to-regexp@0.1.10: + version "0.1.10" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.10.tgz#67e9108c5c0551b9e5326064387de4763c4d5f8b" + integrity sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w== path-to-regexp@2.2.1: version "2.2.1" @@ -14425,7 +14354,7 @@ pause-stream@0.0.11: dependencies: through "~2.3" -pbkdf2@^3.0.17, pbkdf2@^3.0.3, pbkdf2@^3.1.2: +pbkdf2@^3.0.17, pbkdf2@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== @@ -14456,16 +14385,21 @@ picocolors@1.0.0: resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== -picocolors@^1.0.0, picocolors@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.1.tgz#a8ad579b571952f0e5d25892de5445bcfe25aaa1" - integrity sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew== +picocolors@^1.0.0, picocolors@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" + integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== +picomatch@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.2.tgz#77c742931e8f3b8820946c76cd0c1f13730d1dab" + integrity sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg== + pidtree@~0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.6.0.tgz#90ad7b6d42d5841e69e0a2419ef38f8883aa057c" @@ -14535,13 +14469,13 @@ pkg-dir@4.2.0, pkg-dir@^4.1.0: dependencies: find-up "^4.0.0" -pkg-types@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/pkg-types/-/pkg-types-1.1.3.tgz#161bb1242b21daf7795036803f28e30222e476e3" - integrity sha512-+JrgthZG6m3ckicaOB74TwQ+tBWsFl3qVQg7mN8ulwSOElJ7gBhKzj2VkCPnZ4NlF6kEquYU+RIYNVAvzd54UA== +pkg-types@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/pkg-types/-/pkg-types-1.2.1.tgz#6ac4e455a5bb4b9a6185c1c79abd544c901db2e5" + integrity sha512-sQoqa8alT3nHjGuTjuKgOnvjo4cljkufdtLMnO2LBP/wRwuDlo1tkaEdMxCRhyGRPacv/ztlZgDPm2b7FAmEvw== dependencies: - confbox "^0.1.7" - mlly "^1.7.1" + confbox "^0.1.8" + mlly "^1.7.2" pathe "^1.1.2" pluralize@^8.0.0: @@ -14588,23 +14522,24 @@ postcss-value-parser@^4.0.2: resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== -postcss@^8.4.40: - version "8.4.41" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.41.tgz#d6104d3ba272d882fe18fc07d15dc2da62fa2681" - integrity sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ== +postcss@^8.4.43: + version "8.4.47" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.47.tgz#5bf6c9a010f3e724c503bf03ef7947dcb0fea365" + integrity sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ== dependencies: nanoid "^3.3.7" - picocolors "^1.0.1" - source-map-js "^1.2.0" + picocolors "^1.1.0" + source-map-js "^1.2.1" posthog-js@^1.28.0: - version "1.155.2" - resolved "https://registry.yarnpkg.com/posthog-js/-/posthog-js-1.155.2.tgz#2896aaee0a2566a228b5d5a7bee8b747c3cb9992" - integrity sha512-Q1++WXfQEm2aMujXsx+XORMDVvaKeTIW24NqI3+BUTF7RjEtc7FjJ+X1v5De29SndTb04fA/tgT1SgfVaf6xEQ== + version "1.181.0" + resolved "https://registry.yarnpkg.com/posthog-js/-/posthog-js-1.181.0.tgz#b2119f6a27b27297dee9540bfcd33eddab06905c" + integrity sha512-bI+J+f4E8x4JwbGtG6LReQv1Xvss01F6cs7UDlvffHySpVhNq4ptkNjV88B92IVEsrCtNYhy/TjFnGxk6RN0Qw== dependencies: + core-js "^3.38.1" fflate "^0.4.8" preact "^10.19.3" - web-vitals "^4.0.1" + web-vitals "^4.2.0" preact@10.4.1: version "10.4.1" @@ -14612,9 +14547,9 @@ preact@10.4.1: integrity sha512-WKrRpCSwL2t3tpOOGhf2WfTpcmbpxaWtDbdJdKdjd0aEiTkvOmS4NBkG6kzlaAHI9AkQ3iVqbFWM3Ei7mZ4o1Q== preact@^10.16.0, preact@^10.19.3, preact@^10.3.3: - version "10.23.2" - resolved "https://registry.yarnpkg.com/preact/-/preact-10.23.2.tgz#52deec92796ae0f0cc6b034d9c66e0fbc1b837dc" - integrity sha512-kKYfePf9rzKnxOAKDpsWhg/ysrHPqT+yQ7UW4JjdnqjFIeNUnNcEJvhuA8fDenxAGWzUqtd51DfVg7xp/8T9NA== + version "10.24.3" + resolved "https://registry.yarnpkg.com/preact/-/preact-10.24.3.tgz#086386bd47071e3b45410ef20844c21e23828f64" + integrity sha512-Z2dPnBnMUfyQfSQ+GBdsGa16hz35YmLmtTLhM169uW944hYL6xzTYkJjC07j+Wosz733pMWx0fgON3JNw1jJQA== precond@0.2: version "0.2.3" @@ -14790,7 +14725,7 @@ psl@^1.1.28, psl@^1.1.33: resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== -public-encrypt@^4.0.0: +public-encrypt@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== @@ -14803,9 +14738,9 @@ public-encrypt@^4.0.0: safe-buffer "^5.1.2" pump@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + version "3.0.2" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.2.tgz#836f3edd6bc2ee599256c924ffe0d88573ddcbf8" + integrity sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw== dependencies: end-of-stream "^1.1.0" once "^1.3.1" @@ -14843,27 +14778,29 @@ puppeteer-core@13.5.2: unbzip2-stream "1.4.3" ws "8.5.0" -puppeteer-core@23.0.2: - version "23.0.2" - resolved "https://registry.yarnpkg.com/puppeteer-core/-/puppeteer-core-23.0.2.tgz#343c8d003e609620febfe35f76847a0014cdc97c" - integrity sha512-MvOHn+g1TYkAR2oVd/bf/YWXKqFTJmkhyyurYgxkrjh8rBOL1ZH5VyOsLJi0bLO7/yoipAmk1gFZEx9HUJnaoA== +puppeteer-core@23.7.0: + version "23.7.0" + resolved "https://registry.yarnpkg.com/puppeteer-core/-/puppeteer-core-23.7.0.tgz#b737476f8f5e2a36a6683d91595eaa5c0e231a37" + integrity sha512-0kC81k3K6n6Upg/k04xv+Mi8yy62bNAJiK7LCA71zfq2XKEo9WAzas1t6UQiLgaNHtGNKM0d1KbR56p/+mgEiQ== dependencies: - "@puppeteer/browsers" "2.3.0" - chromium-bidi "0.6.4" - debug "^4.3.6" - devtools-protocol "0.0.1312386" + "@puppeteer/browsers" "2.4.1" + chromium-bidi "0.8.0" + debug "^4.3.7" + devtools-protocol "0.0.1354347" + typed-query-selector "^2.12.0" ws "^8.18.0" puppeteer@*: - version "23.0.2" - resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-23.0.2.tgz#73391e87407da4ae6d630e156f42623a5a7619cd" - integrity sha512-I/l1P8s8brcLG+oW9AwF8hUaOSGGJcGKMflXRgULUH0S3ABptlLI9ZKjqWDo8ipY6v789ZKd+bNKtcCwpTh5Ww== + version "23.7.0" + resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-23.7.0.tgz#193dcc78bdcc5d3023cc172e9231771c350484bd" + integrity sha512-YTgo0KFe8NtBcI9hCu/xsjPFumEhu8kA7QqLr6Uh79JcEsUcUt+go966NgKYXJ+P3Fuefrzn2SXwV3cyOe/UcQ== dependencies: - "@puppeteer/browsers" "2.3.0" - chromium-bidi "0.6.4" + "@puppeteer/browsers" "2.4.1" + chromium-bidi "0.8.0" cosmiconfig "^9.0.0" - devtools-protocol "0.0.1312386" - puppeteer-core "23.0.2" + devtools-protocol "0.0.1354347" + puppeteer-core "23.7.0" + typed-query-selector "^2.12.0" pure-rand@^5.0.1: version "5.0.5" @@ -14898,21 +14835,7 @@ qrcode@1.5.3: pngjs "^5.0.0" yargs "^15.3.1" -qs@6.10.4: - version "6.10.4" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.4.tgz#6a3003755add91c0ec9eacdc5f878b034e73f9e7" - integrity sha512-OQiU+C+Ds5qiH91qh/mg0w+8nwQuLjM4F4M/PbmhDOoYehPh+Fb0bDjtR1sOvy7YKxvj28Y/M0PhP5uVX0kB+g== - dependencies: - side-channel "^1.0.4" - -qs@6.11.0: - version "6.11.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" - integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== - dependencies: - side-channel "^1.0.4" - -qs@^6.12.3: +qs@6.13.0, qs@^6.12.3: version "6.13.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.13.0.tgz#6ca3bd58439f7e245655798997787b0d88a51906" integrity sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg== @@ -15024,7 +14947,7 @@ randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: dependencies: safe-buffer "^5.1.0" -randomfill@^1.0.3: +randomfill@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== @@ -15077,7 +15000,7 @@ react-input-autosize@^3.0.0: dependencies: prop-types "^15.5.8" -react-is@^16.10.2, react-is@^16.13.1, react-is@^16.7.0: +react-is@^16.13.1, react-is@^16.7.0: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== @@ -15087,6 +15010,11 @@ react-is@^17.0.1: resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== +react-is@^18.3.1: + version "18.3.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e" + integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== + react-refresh@^0.13.0: version "0.13.0" resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.13.0.tgz#cbd01a4482a177a5da8d44c9755ebb1f26d5a1c1" @@ -15103,19 +15031,19 @@ react-responsive@^9.0.0-beta.5: shallow-equal "^1.2.1" react-router-dom@^6.22.3: - version "6.26.0" - resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.26.0.tgz#8debe13295c58605c04f93018d659a763245e58c" - integrity sha512-RRGUIiDtLrkX3uYcFiCIxKFWMcWQGMojpYZfcstc63A1+sSnVgILGIm9gNUA6na3Fm1QuPGSBQH2EMbAZOnMsQ== + version "6.27.0" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.27.0.tgz#8d7972a425fd75f91c1e1ff67e47240c5752dc3f" + integrity sha512-+bvtFWMC0DgAFrfKXKG9Fc+BcXWRUO1aJIihbB79xaeq0v5UzfvnM5houGUm1Y461WVRcgAQ+Clh5rdb1eCx4g== dependencies: - "@remix-run/router" "1.19.0" - react-router "6.26.0" + "@remix-run/router" "1.20.0" + react-router "6.27.0" -react-router@6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.26.0.tgz#d5af4c46835b202348ef2b7ddacd32a2db539fde" - integrity sha512-wVQq0/iFYd3iZ9H2l3N3k4PL8EEHcb0XlU2Na8nEwmiXgIUElEH6gaJDtUQxJ+JFzmIXaQjfdpcGWaM6IoQGxg== +react-router@6.27.0: + version "6.27.0" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.27.0.tgz#db292474926c814c996c0ff3ef0162d1f9f60ed4" + integrity sha512-YA+HGZXz4jaAkVoYBE98VQl+nVzI+cVI2Oj/06F5ZM+0u3TgedN9Y9kmMRo2mnkSK2nCpNQn0DVob4HCsY/WLw== dependencies: - "@remix-run/router" "1.19.0" + "@remix-run/router" "1.20.0" react-select@^4.3.1: version "4.3.1" @@ -15278,14 +15206,14 @@ recharts-scale@^0.4.4: decimal.js-light "^2.4.1" recharts@^2.4.3: - version "2.12.7" - resolved "https://registry.yarnpkg.com/recharts/-/recharts-2.12.7.tgz#c7f42f473a257ff88b43d88a92530930b5f9e773" - integrity sha512-hlLJMhPQfv4/3NBSAyq3gzGg4h2v69RJh6KU7b3pXYNNAELs9kEoXOjbkxdXpALqKBoVmVptGfLpxdaVYqjmXQ== + version "2.13.3" + resolved "https://registry.yarnpkg.com/recharts/-/recharts-2.13.3.tgz#a5ce61e493dff921a14a14a8f42a9f2d2bbefd5a" + integrity sha512-YDZ9dOfK9t3ycwxgKbrnDlRC4BHdjlY73fet3a0C1+qGMjXVZe6+VXmpOIIhzkje5MMEL8AN4hLIe4AMskBzlA== dependencies: clsx "^2.0.0" eventemitter3 "^4.0.1" lodash "^4.17.21" - react-is "^16.10.2" + react-is "^18.3.1" react-smooth "^4.0.0" recharts-scale "^0.4.4" tiny-invariant "^1.3.1" @@ -15317,10 +15245,10 @@ reflect.getprototypeof@^1.0.4: globalthis "^1.0.3" which-builtin-type "^1.1.3" -regenerate-unicode-properties@^10.1.0: - version "10.1.1" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz#6b0e05489d9076b04c436f318d9b067bba459480" - integrity sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q== +regenerate-unicode-properties@^10.2.0: + version "10.2.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz#626e39df8c372338ea9b8028d1f99dc3fd9c3db0" + integrity sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA== dependencies: regenerate "^1.4.2" @@ -15374,14 +15302,14 @@ regexp-tree@^0.1.24, regexp-tree@~0.1.1: integrity sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA== regexp.prototype.flags@^1.5.1, regexp.prototype.flags@^1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz#138f644a3350f981a858c44f6bb1a61ff59be334" - integrity sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw== + version "1.5.3" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz#b3ae40b1d2499b8350ab2c3fe6ef3845d3a96f42" + integrity sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ== dependencies: - call-bind "^1.0.6" + call-bind "^1.0.7" define-properties "^1.2.1" es-errors "^1.3.0" - set-function-name "^2.0.1" + set-function-name "^2.0.2" regexpp@^3.0.0, regexpp@^3.1.0: version "3.2.0" @@ -15397,15 +15325,15 @@ regexpu-core@^2.0.0: regjsgen "^0.2.0" regjsparser "^0.1.4" -regexpu-core@^5.3.1: - version "5.3.2" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.3.2.tgz#11a2b06884f3527aec3e93dbbf4a3b958a95546b" - integrity sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ== +regexpu-core@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-6.1.1.tgz#b469b245594cb2d088ceebc6369dceb8c00becac" + integrity sha512-k67Nb9jvwJcJmVpw0jPttR1/zVfnKf8Km0IPatrU/zJ5XeG3+Slx0xLXs9HByJSzXzrlz5EDvN6yLNMDc2qdnw== dependencies: - "@babel/regjsgen" "^0.8.0" regenerate "^1.4.2" - regenerate-unicode-properties "^10.1.0" - regjsparser "^0.9.1" + regenerate-unicode-properties "^10.2.0" + regjsgen "^0.8.0" + regjsparser "^0.11.0" unicode-match-property-ecmascript "^2.0.0" unicode-match-property-value-ecmascript "^2.1.0" @@ -15429,6 +15357,11 @@ regjsgen@^0.2.0: resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" integrity sha512-x+Y3yA24uF68m5GA+tBjbGYo64xXVJpbToBaWCoSNSc1hdk6dfctaRWrNFTVJZIIhL5GxW8zwjoixbnifnK59g== +regjsgen@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.8.0.tgz#df23ff26e0c5b300a6470cad160a9d090c3a37ab" + integrity sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q== + regjsparser@^0.1.4: version "0.1.5" resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" @@ -15436,12 +15369,12 @@ regjsparser@^0.1.4: dependencies: jsesc "~0.5.0" -regjsparser@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709" - integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== +regjsparser@^0.11.0: + version "0.11.2" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.11.2.tgz#7404ad42be00226d72bcf1f003f1f441861913d8" + integrity sha512-3OGZZ4HoLJkkAZx/48mTXJNlmqTGOzc0o9OWQPuWpkOlXXPbyN6OafCcoXUnBqE2D3f/T5L+pWc1kdEmnfnRsA== dependencies: - jsesc "~0.5.0" + jsesc "~3.0.2" release-zalgo@^1.0.0: version "1.0.0" @@ -15666,29 +15599,31 @@ rlp@^2.0.0, rlp@^2.2.3, rlp@^2.2.4: dependencies: bn.js "^5.2.0" -rollup@^4.13.0: - version "4.20.0" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.20.0.tgz#f9d602161d29e178f0bf1d9f35f0a26f83939492" - integrity sha512-6rbWBChcnSGzIlXeIdNIZTopKYad8ZG8ajhl78lGRLsI2rX8IkaotQhVas2Ma+GPxJav19wrSzvRvuiv0YKzWw== +rollup@^4.20.0: + version "4.24.4" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.24.4.tgz#fdc76918de02213c95447c9ffff5e35dddb1d058" + integrity sha512-vGorVWIsWfX3xbcyAS+I047kFKapHYivmkaT63Smj77XwvLSJos6M1xGqZnBPFQFBRZDOcG1QnYEIxAvTr/HjA== dependencies: - "@types/estree" "1.0.5" + "@types/estree" "1.0.6" optionalDependencies: - "@rollup/rollup-android-arm-eabi" "4.20.0" - "@rollup/rollup-android-arm64" "4.20.0" - "@rollup/rollup-darwin-arm64" "4.20.0" - "@rollup/rollup-darwin-x64" "4.20.0" - "@rollup/rollup-linux-arm-gnueabihf" "4.20.0" - "@rollup/rollup-linux-arm-musleabihf" "4.20.0" - "@rollup/rollup-linux-arm64-gnu" "4.20.0" - "@rollup/rollup-linux-arm64-musl" "4.20.0" - "@rollup/rollup-linux-powerpc64le-gnu" "4.20.0" - "@rollup/rollup-linux-riscv64-gnu" "4.20.0" - "@rollup/rollup-linux-s390x-gnu" "4.20.0" - "@rollup/rollup-linux-x64-gnu" "4.20.0" - "@rollup/rollup-linux-x64-musl" "4.20.0" - "@rollup/rollup-win32-arm64-msvc" "4.20.0" - "@rollup/rollup-win32-ia32-msvc" "4.20.0" - "@rollup/rollup-win32-x64-msvc" "4.20.0" + "@rollup/rollup-android-arm-eabi" "4.24.4" + "@rollup/rollup-android-arm64" "4.24.4" + "@rollup/rollup-darwin-arm64" "4.24.4" + "@rollup/rollup-darwin-x64" "4.24.4" + "@rollup/rollup-freebsd-arm64" "4.24.4" + "@rollup/rollup-freebsd-x64" "4.24.4" + "@rollup/rollup-linux-arm-gnueabihf" "4.24.4" + "@rollup/rollup-linux-arm-musleabihf" "4.24.4" + "@rollup/rollup-linux-arm64-gnu" "4.24.4" + "@rollup/rollup-linux-arm64-musl" "4.24.4" + "@rollup/rollup-linux-powerpc64le-gnu" "4.24.4" + "@rollup/rollup-linux-riscv64-gnu" "4.24.4" + "@rollup/rollup-linux-s390x-gnu" "4.24.4" + "@rollup/rollup-linux-x64-gnu" "4.24.4" + "@rollup/rollup-linux-x64-musl" "4.24.4" + "@rollup/rollup-win32-arm64-msvc" "4.24.4" + "@rollup/rollup-win32-ia32-msvc" "4.24.4" + "@rollup/rollup-win32-x64-msvc" "4.24.4" fsevents "~2.3.2" run-async@^2.2.0, run-async@^2.3.0: @@ -15780,9 +15715,9 @@ safe-regex@^2.1.1: regexp-tree "~0.1.1" safe-stable-stringify@^2.1.0: - version "2.4.3" - resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz#138c84b6f6edb3db5f8ef3ef7115b8f55ccbf886" - integrity sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g== + version "2.5.0" + resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz#4ca2f8e385f2831c432a719b108a3bf7af42a1dd" + integrity sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA== "safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: version "2.1.2" @@ -15816,26 +15751,26 @@ scrypt-js@3.0.1, scrypt-js@^3.0.0, scrypt-js@^3.0.1: integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== secp256k1@^3.0.1: - version "3.8.0" - resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-3.8.0.tgz#28f59f4b01dbee9575f56a47034b7d2e3b3b352d" - integrity sha512-k5ke5avRZbtl9Tqx/SA7CbY3NF6Ro+Sj9cZxezFzuBlLDmyqPiL8hJJ+EmzD8Ig4LUDByHJ3/iPOVoRixs/hmw== + version "3.8.1" + resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-3.8.1.tgz#b62a62a882d6b16f9b51fe599c6b3a861e36c59f" + integrity sha512-tArjQw2P0RTdY7QmkNehgp6TVvQXq6ulIhxv8gaH6YubKG/wxxAoNKcbuXjDhybbc+b2Ihc7e0xxiGN744UIiQ== dependencies: bindings "^1.5.0" bip66 "^1.1.5" bn.js "^4.11.8" create-hash "^1.2.0" drbg.js "^1.0.1" - elliptic "^6.5.2" + elliptic "^6.5.7" nan "^2.14.0" safe-buffer "^5.1.2" secp256k1@^4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.3.tgz#c4559ecd1b8d3c1827ed2d1b94190d69ce267303" - integrity sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA== + version "4.0.4" + resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.4.tgz#58f0bfe1830fe777d9ca1ffc7574962a8189f8ab" + integrity sha512-6JfvwvjUOn8F/jUoBY2Q1v5WY5XS+rj8qSe0v8Y4ezH4InLgTEeOOPQsRll9OV429Pvo6BCHGavIyJfr3TAhsw== dependencies: - elliptic "^6.5.4" - node-addon-api "^2.0.0" + elliptic "^6.5.7" + node-addon-api "^5.0.0" node-gyp-build "^4.2.0" semaphore@>=1.0.1, semaphore@^1.0.3: @@ -15870,10 +15805,10 @@ semver@~5.4.1: resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" integrity sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg== -send@0.18.0: - version "0.18.0" - resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" - integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== +send@0.19.0: + version "0.19.0" + resolved "https://registry.yarnpkg.com/send/-/send-0.19.0.tgz#bbc5a388c8ea6c048967049dbeac0e4a3f09d7f8" + integrity sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw== dependencies: debug "2.6.9" depd "2.0.0" @@ -15911,15 +15846,15 @@ serve-handler@6.1.3: path-to-regexp "2.2.1" range-parser "1.2.0" -serve-static@1.15.0: - version "1.15.0" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" - integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== +serve-static@1.16.2: + version "1.16.2" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.16.2.tgz#b6a5343da47f6bdd2673848bf45754941e803296" + integrity sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw== dependencies: - encodeurl "~1.0.2" + encodeurl "~2.0.0" escape-html "~1.0.3" parseurl "~1.3.3" - send "0.18.0" + send "0.19.0" serve@13.0.2: version "13.0.2" @@ -16260,10 +16195,10 @@ sort-keys@^1.0.0: dependencies: is-plain-obj "^1.0.0" -source-map-js@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af" - integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg== +source-map-js@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" + integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== source-map-resolve@^0.5.0: version "0.5.3" @@ -16345,9 +16280,9 @@ spdx-expression-parse@^3.0.0: spdx-license-ids "^3.0.0" spdx-license-ids@^3.0.0: - version "3.0.18" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.18.tgz#22aa922dcf2f2885a6494a261f2d8b75345d0326" - integrity sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ== + version "3.0.20" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.20.tgz#e44ed19ed318dd1e5888f93325cee800f0f51b89" + integrity sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw== split-on-first@^1.0.0: version "1.1.0" @@ -16397,7 +16332,7 @@ sprintf-js@~1.0.2: resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== -sshpk@^1.14.1, sshpk@^1.7.0: +sshpk@^1.14.1, sshpk@^1.18.0, sshpk@^1.7.0: version "1.18.0" resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.18.0.tgz#1663e55cddf4d688b86a46b77f0d5fe363aba028" integrity sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ== @@ -16524,10 +16459,10 @@ stream-splicer@^2.0.0: inherits "^2.0.1" readable-stream "^2.0.2" -streamx@^2.15.0, streamx@^2.18.0: - version "2.18.0" - resolved "https://registry.yarnpkg.com/streamx/-/streamx-2.18.0.tgz#5bc1a51eb412a667ebfdcd4e6cf6a6fc65721ac7" - integrity sha512-LLUC1TWdjVdn1weXGcSxyTR3T4+acB6tVGXT95y0nGbca4t4o/ng1wKAGTljm9VicuCVLvRlqFYXYy5GwgM7sQ== +streamx@^2.15.0, streamx@^2.20.0: + version "2.20.1" + resolved "https://registry.yarnpkg.com/streamx/-/streamx-2.20.1.tgz#471c4f8b860f7b696feb83d5b125caab2fdbb93c" + integrity sha512-uTa0mU6WUC65iUvzKH4X9hEdvSW7rbPxPtwfWiLMSj3qTdQbAiUboZTxauKfpFuGIGa1C2BYijZ7wgdUXICJhA== dependencies: fast-fifo "^1.3.2" queue-tick "^1.0.1" @@ -17067,9 +17002,9 @@ tar@^4.0.2: yallist "^3.1.1" terser@^5.30.4: - version "5.31.6" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.31.6.tgz#c63858a0f0703988d0266a82fcbf2d7ba76422b1" - integrity sha512-PQ4DAriWzKj+qgehQ7LK5bQqCFNMmlhjR2PFFLuqGCpuCAauxemVBWwWOxo3UIwWQx8+Pr61Df++r76wDmkQBg== + version "5.36.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.36.0.tgz#8b0dbed459ac40ff7b4c9fd5a3a2029de105180e" + integrity sha512-IYV9eNMuFAV4THUspIRXkLakHnV6XO7FEdtKjf/mDyrnqUg9LnlOn6/RwRvM9SZjR4GUq8Nk8zj67FzVARr74w== dependencies: "@jridgewell/source-map" "^0.3.3" acorn "^8.8.2" @@ -17091,11 +17026,9 @@ testrpc@0.0.1: integrity sha512-afH1hO+SQ/VPlmaLUFj2636QMeDvPCeQMc/9RBMW0IfjNe9gFD9Ra3ShqYkB7py0do1ZcCna/9acHyzTJ+GcNA== text-decoder@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/text-decoder/-/text-decoder-1.1.1.tgz#5df9c224cebac4a7977720b9f083f9efa1aefde8" - integrity sha512-8zll7REEv4GDD3x4/0pW+ppIxSNs7H1J10IKFZsuOMscumCdM2a+toDGLPA3T+1+fLBql4zbt5z83GEQGGV5VA== - dependencies: - b4a "^1.6.4" + version "1.2.1" + resolved "https://registry.yarnpkg.com/text-decoder/-/text-decoder-1.2.1.tgz#e173f5121d97bfa3ff8723429ad5ba92e1ead67e" + integrity sha512-x9v3H/lTKIJKQQe7RPQkLfKAnc9lUTkWDypIQgTzPJAq+5/GCDHonmshfvlsNSj58yyshbIJJDLmU15qNERrXQ== text-extensions@^1.0.0: version "1.9.0" @@ -17194,6 +17127,18 @@ title-case@^2.1.0: no-case "^2.2.0" upper-case "^1.0.3" +tldts-core@^6.1.58: + version "6.1.58" + resolved "https://registry.yarnpkg.com/tldts-core/-/tldts-core-6.1.58.tgz#f0b5c1fcb2e214f558c7cb380fb1e6f4b2459d8b" + integrity sha512-dR936xmhBm7AeqHIhCWwK765gZ7dFyL+IqLSFAjJbFlUXGMLCb8i2PzlzaOuWBuplBTaBYseSb565nk/ZEM0Bg== + +tldts@^6.1.32: + version "6.1.58" + resolved "https://registry.yarnpkg.com/tldts/-/tldts-6.1.58.tgz#63d211f46f2c17d69d4cedf0c4c19423a608874f" + integrity sha512-MQJrJhjHOYGYb8DobR6Y4AdDbd4TYkyQ+KBDVc5ODzs1cbrvPpfN1IemYi9jfipJ/vR1YWvrDli0hg1y19VRoA== + dependencies: + tldts-core "^6.1.58" + tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" @@ -17211,11 +17156,6 @@ to-fast-properties@^1.0.3: resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" integrity sha512-lxrWP8ejsq+7E3nNjwYmUBMAgjMTZoTI+sdBOpvNyijeDLa29LUn9QaoXAHv4+Z578hbmHHJKZknzxVtvo77og== -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== - to-object-path@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" @@ -17268,6 +17208,13 @@ tough-cookie@^4.1.3: universalify "^0.2.0" url-parse "^1.5.3" +tough-cookie@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-5.0.0.tgz#6b6518e2b5c070cf742d872ee0f4f92d69eac1af" + integrity sha512-FRKsF7cz96xIIeMZ82ehjC3xW2E+O2+v11udrDYewUbszngYhsGa8z6YUMMzO9QJZzzyd0nGGXnML/TReX6W8Q== + dependencies: + tldts "^6.1.32" + tough-cookie@~2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" @@ -17281,6 +17228,11 @@ tr46@~0.0.3: resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== +tree-kill@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" + integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== + trezor-connect@8.1.8: version "8.1.8" resolved "https://registry.yarnpkg.com/trezor-connect/-/trezor-connect-8.1.8.tgz#db46f2637047fa45fef3f5a7c6f16a792cc2067a" @@ -17391,9 +17343,9 @@ tslib@1.14.1, tslib@^1.8.1, tslib@^1.9.0: integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== tslib@^2, tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.1: - version "2.6.3" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.3.tgz#0438f810ad7a9edcde7a241c3d80db693c8cbfe0" - integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ== + version "2.8.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" + integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== tsutils@^3.21.0: version "3.21.0" @@ -17534,6 +17486,11 @@ typed-array-length@^1.0.6: is-typed-array "^1.1.13" possible-typed-array-names "^1.0.0" +typed-query-selector@^2.12.0: + version "2.12.0" + resolved "https://registry.yarnpkg.com/typed-query-selector/-/typed-query-selector-2.12.0.tgz#92b65dbc0a42655fccf4aeb1a08b1dddce8af5f2" + integrity sha512-SbklCd1F0EiZOyPiW192rrHZzZ5sBijB6xM+cpmrwDqObvdtunOHHIk9fCGsoK5JVIYXoyEp4iEdE3upFH3PAg== + typedarray-to-buffer@3.1.5, typedarray-to-buffer@^3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" @@ -17552,9 +17509,9 @@ typescript@4.9.5, typescript@^4.4.3: integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== typescript@^5.5.4: - version "5.5.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.5.4.tgz#d9852d6c82bad2d2eda4fd74a5762a8f5909e9ba" - integrity sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q== + version "5.6.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.6.3.tgz#5f3449e31c9d94febb17de03cc081dd56d81db5b" + integrity sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw== typical@^4.0.0: version "4.0.0" @@ -17571,15 +17528,15 @@ u2f-api@0.2.7: resolved "https://registry.yarnpkg.com/u2f-api/-/u2f-api-0.2.7.tgz#17bf196b242f6bf72353d9858e6a7566cc192720" integrity sha512-fqLNg8vpvLOD5J/z4B6wpPg4Lvowz1nJ9xdHcCzdUPKcFE/qNCceV2gNZxSJd5vhAZemHr/K/hbzVA0zxB5mkg== -ufo@^1.4.0, ufo@^1.5.3: +ufo@^1.5.4: version "1.5.4" resolved "https://registry.yarnpkg.com/ufo/-/ufo-1.5.4.tgz#16d6949674ca0c9e0fbbae1fa20a71d7b1ded754" integrity sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ== uglify-js@^3.1.4: - version "3.19.2" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.19.2.tgz#319ae26a5fbd18d03c7dc02496cfa1d6f1cd4307" - integrity sha512-S8KA6DDI47nQXJSi2ctQ629YzwOVs+bQML6DAtvy0wgNdpi+0ySpQK0g2pxBq2xfF2z3YCscu7NNA8nXT9PlIQ== + version "3.19.3" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.19.3.tgz#82315e9bbc6f2b25888858acd1fff8441035b77f" + integrity sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ== uint8arrays@3.1.0: version "3.1.0" @@ -17644,17 +17601,17 @@ underscore@1.9.1: resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.9.1.tgz#06dce34a0e68a7babc29b365b8e74b8925203961" integrity sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg== -undici-types@~6.13.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.13.0.tgz#e3e79220ab8c81ed1496b5812471afd7cf075ea5" - integrity sha512-xtFJHudx8S2DSoujjMd1WeWvn7KKWFRESZTMeL1RptAYERu29D6jphMjjY+vn96jvN3kVPDNxU/E13VTaXj6jg== +undici-types@~6.19.8: + version "6.19.8" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.19.8.tgz#35111c9d1437ab83a7cdc0abae2f26d88eda0a02" + integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw== undici@^6.19.5: - version "6.19.7" - resolved "https://registry.yarnpkg.com/undici/-/undici-6.19.7.tgz#7d4cf26dc689838aa8b6753a3c5c4288fc1e0216" - integrity sha512-HR3W/bMGPSr90i8AAp2C4DM3wChFdJPLrWYpIS++LxS8K+W535qftjt+4MyjNYHeWabMj1nvtmLIi7l++iq91A== + version "6.20.1" + resolved "https://registry.yarnpkg.com/undici/-/undici-6.20.1.tgz#fbb87b1e2b69d963ff2d5410a40ffb4c9e81b621" + integrity sha512-AjQF1QsmqfJys+LXfGTNum+qw4S88CojRInG/6t31W/1fk6G59s92bnAvGz5Cmur+kQv2SURXEvvudLmbrE8QA== -unenv@^1.9.0: +unenv@^1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/unenv/-/unenv-1.10.0.tgz#c3394a6c6e4cfe68d699f87af456fe3f0db39571" integrity sha512-wY5bskBQFL9n3Eca5XnhH6KbUo/tfvkwm9OpcdCvLaeA7piBNbavbOKJySEwQ1V0RH6HvNlSAFRTpvTqgKRQXQ== @@ -17665,15 +17622,10 @@ unenv@^1.9.0: node-fetch-native "^1.6.4" pathe "^1.1.2" -unfetch@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/unfetch/-/unfetch-4.2.0.tgz#7e21b0ef7d363d8d9af0fb929a5555f6ef97a3be" - integrity sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA== - unicode-canonical-property-names-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" - integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== + version "2.0.1" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz#cb3173fe47ca743e228216e4a3ddc4c84d628cc2" + integrity sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg== unicode-match-property-ecmascript@^2.0.0: version "2.0.0" @@ -17684,9 +17636,9 @@ unicode-match-property-ecmascript@^2.0.0: unicode-property-aliases-ecmascript "^2.0.0" unicode-match-property-value-ecmascript@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz#cb5fffdcd16a05124f5a4b0bf7c3770208acbbe0" - integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA== + version "2.2.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz#a0401aee72714598f739b68b104e4fe3a0cb3c71" + integrity sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg== unicode-property-aliases-ecmascript@^2.0.0: version "2.1.0" @@ -17732,20 +17684,20 @@ unset-value@^1.0.0: isobject "^3.0.0" unstorage@^1.9.0: - version "1.10.2" - resolved "https://registry.yarnpkg.com/unstorage/-/unstorage-1.10.2.tgz#fb7590ada8b30e83be9318f85100158b02a76dae" - integrity sha512-cULBcwDqrS8UhlIysUJs2Dk0Mmt8h7B0E6mtR+relW9nZvsf/u4SkAYyNliPiPW7XtFNb5u3IUMkxGxFTTRTgQ== + version "1.13.1" + resolved "https://registry.yarnpkg.com/unstorage/-/unstorage-1.13.1.tgz#090b30de978ee8755b3ad7bbc00acfade124ac13" + integrity sha512-ELexQHUrG05QVIM/iUeQNdl9FXDZhqLJ4yP59fnmn2jGUh0TEulwOgov1ubOb3Gt2ZGK/VMchJwPDNVEGWQpRg== dependencies: anymatch "^3.1.3" chokidar "^3.6.0" + citty "^0.1.6" destr "^2.0.3" - h3 "^1.11.1" - listhen "^1.7.2" - lru-cache "^10.2.0" - mri "^1.2.0" - node-fetch-native "^1.6.2" - ofetch "^1.3.3" - ufo "^1.4.0" + h3 "^1.13.0" + listhen "^1.9.0" + lru-cache "^10.4.3" + node-fetch-native "^1.6.4" + ofetch "^1.4.1" + ufo "^1.5.4" untildify@^4.0.0: version "4.0.0" @@ -17761,13 +17713,13 @@ untun@^0.1.3: consola "^3.2.3" pathe "^1.1.1" -update-browserslist-db@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz#7ca61c0d8650766090728046e416a8cde682859e" - integrity sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ== +update-browserslist-db@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz#80846fba1d79e82547fb661f8d141e0945755fe5" + integrity sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A== dependencies: - escalade "^3.1.2" - picocolors "^1.0.1" + escalade "^3.2.0" + picocolors "^1.1.0" update-check@1.5.2: version "1.5.2" @@ -18021,37 +17973,37 @@ viem@^1.0.0: ws "8.13.0" viem@^2.1.1: - version "2.19.4" - resolved "https://registry.yarnpkg.com/viem/-/viem-2.19.4.tgz#129a6dfbaf81bfc5664fde62c6a77cdbdebeeff9" - integrity sha512-JdhK3ui3uPD2tnpqGNkJaDQV4zTfOeKXcF+VrU8RG88Dn2e0lFjv6l7m0YNmYLsHm+n5vFFfCLcUrTk6xcYv5w== - dependencies: - "@adraffy/ens-normalize" "1.10.0" - "@noble/curves" "1.4.0" - "@noble/hashes" "1.4.0" - "@scure/bip32" "1.4.0" - "@scure/bip39" "1.3.0" - abitype "1.0.5" - isows "1.0.4" - webauthn-p256 "0.0.5" - ws "8.17.1" + version "2.21.41" + resolved "https://registry.yarnpkg.com/viem/-/viem-2.21.41.tgz#40c9af3f6e0fdbb45b532838b4e1be2418d1b0de" + integrity sha512-FxDALzW6I9lGSISbGKqGLfsc4GCtALrgm3mpQcOi7gpyTBkKkl39IWgRjAK1KGNOOvqneQmUKSxWsApkUYSn5w== + dependencies: + "@adraffy/ens-normalize" "1.11.0" + "@noble/curves" "1.6.0" + "@noble/hashes" "1.5.0" + "@scure/bip32" "1.5.0" + "@scure/bip39" "1.4.0" + abitype "1.0.6" + isows "1.0.6" + webauthn-p256 "0.0.10" + ws "8.18.0" vite-plugin-svgr@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/vite-plugin-svgr/-/vite-plugin-svgr-4.2.0.tgz#9f3bf5206b0ec510287e56d16f1915e729bb4e6b" - integrity sha512-SC7+FfVtNQk7So0XMjrrtLAbEC8qjFPifyD7+fs/E6aaNdVde6umlVVh0QuwDLdOMu7vp5RiGFsB70nj5yo0XA== + version "4.3.0" + resolved "https://registry.yarnpkg.com/vite-plugin-svgr/-/vite-plugin-svgr-4.3.0.tgz#742f16f11375996306c696ec323e4d23f6005075" + integrity sha512-Jy9qLB2/PyWklpYy0xk0UU3TlU0t2UMpJXZvf+hWII1lAmRHrOUKi11Uw8N3rxoNk7atZNYO3pR3vI1f7oi+6w== dependencies: - "@rollup/pluginutils" "^5.0.5" + "@rollup/pluginutils" "^5.1.3" "@svgr/core" "^8.1.0" "@svgr/plugin-jsx" "^8.1.0" vite@^5.2.10: - version "5.4.0" - resolved "https://registry.yarnpkg.com/vite/-/vite-5.4.0.tgz#11dca8a961369ba8b5cae42d068c7ad684d5370f" - integrity sha512-5xokfMX0PIiwCMCMb9ZJcMyh5wbBun0zUzKib+L65vAZ8GY9ePZMXxFrHbr/Kyll2+LSCY7xtERPpxkBDKngwg== + version "5.4.10" + resolved "https://registry.yarnpkg.com/vite/-/vite-5.4.10.tgz#d358a7bd8beda6cf0f3b7a450a8c7693a4f80c18" + integrity sha512-1hvaPshuPUtxeQ0hsVH3Mud0ZanOLwVTneA1EgbAM5LhaZEqyPWGRQ7BtaMvUrTDeEaC8pxtj6a6jku3x4z6SQ== dependencies: esbuild "^0.21.3" - postcss "^8.4.40" - rollup "^4.13.0" + postcss "^8.4.43" + rollup "^4.20.0" optionalDependencies: fsevents "~2.3.3" @@ -18095,10 +18047,10 @@ watchify@^4.0.0: through2 "^4.0.2" xtend "^4.0.2" -web-vitals@^4.0.1: - version "4.2.3" - resolved "https://registry.yarnpkg.com/web-vitals/-/web-vitals-4.2.3.tgz#270c4baecfbc6ec6fc15da1989e465e5f9b94fb7" - integrity sha512-/CFAm1mNxSmOj6i0Co+iGFJ58OS4NRGVP+AWS/l509uIK5a1bSoIVaHz/ZumpHTfHSZBpgrJ+wjfpAOrTHok5Q== +web-vitals@^4.2.0: + version "4.2.4" + resolved "https://registry.yarnpkg.com/web-vitals/-/web-vitals-4.2.4.tgz#1d20bc8590a37769bd0902b289550936069184b7" + integrity sha512-r4DIlprAGwJ7YM11VZp4R884m0Vmgr6EAKe3P+kO0PPj3Unqyvv59rczf6UiGcb9Z8QxZVcqKNwv/g0WNdWwsw== web3-bzz@1.10.0: version "1.10.0" @@ -18500,10 +18452,10 @@ web3@1.10.0: web3-shh "1.10.0" web3-utils "1.10.0" -webauthn-p256@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/webauthn-p256/-/webauthn-p256-0.0.5.tgz#0baebd2ba8a414b21cc09c0d40f9dd0be96a06bd" - integrity sha512-drMGNWKdaixZNobeORVIqq7k5DsRC9FnG201K2QjeOoQLmtSDaSsVZdkg6n5jUALJKcAG++zBPJXmv6hy0nWFg== +webauthn-p256@0.0.10: + version "0.0.10" + resolved "https://registry.yarnpkg.com/webauthn-p256/-/webauthn-p256-0.0.10.tgz#877e75abe8348d3e14485932968edf3325fd2fdd" + integrity sha512-EeYD+gmIT80YkSIDb2iWq0lq2zbHo1CxHlQTeJ+KkCILWpVy3zASH3ByD4bopzfk0uCwXxLqKGLqp2W4O28VFA== dependencies: "@noble/curves" "^1.4.0" "@noble/hashes" "^1.4.0" @@ -18747,10 +18699,10 @@ ws@8.13.0: resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0" integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA== -ws@8.17.1: - version "8.17.1" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.17.1.tgz#9293da530bb548febc95371d90f9c878727d919b" - integrity sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ== +ws@8.18.0, ws@^8.18.0: + version "8.18.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.0.tgz#0d7505a6eafe2b0e712d232b42279f53bc289bbc" + integrity sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw== ws@8.5.0: version "8.5.0" @@ -18778,11 +18730,6 @@ ws@^7.5.1: resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9" integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== -ws@^8.18.0: - version "8.18.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.0.tgz#0d7505a6eafe2b0e712d232b42279f53bc289bbc" - integrity sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw== - xhr-request-promise@^0.1.2: version "0.1.3" resolved "https://registry.yarnpkg.com/xhr-request-promise/-/xhr-request-promise-0.1.3.tgz#2d5f4b16d8c6c893be97f1a62b0ed4cf3ca5f96c" @@ -18873,9 +18820,9 @@ yaml@^1.10.0: integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== yaml@~2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.5.0.tgz#c6165a721cf8000e91c36490a41d7be25176cf5d" - integrity sha512-2wWLbGbYDiSqqIKoPjar3MPgB94ErzCtrNE1FdqGuaO0pi2JGjmE8aW8TDZwzU7vuxcGRdL/4gPQwQ7hD5AMSw== + version "2.5.1" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.5.1.tgz#c9772aacf62cb7494a95b0c4f1fb065b563db130" + integrity sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q== yargs-parser@^13.1.2: version "13.1.2" @@ -19008,7 +18955,7 @@ yocto-queue@^0.1.0: resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== -zod@3.23.8, zod@^3.19.1: +zod@3.23.8: version "3.23.8" resolved "https://registry.yarnpkg.com/zod/-/zod-3.23.8.tgz#e37b957b5d52079769fb8097099b592f0ef4067d" integrity sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==