@0xsequence/marketplace-sdk 1.0.0 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.changeset/honest-peas-arrive.md +5 -0
- package/.changeset/real-tips-stick.md +8 -0
- package/.changeset/tall-pandas-wear.md +8 -0
- package/.storybook/main.ts +1 -1
- package/.storybook/preview.tsx +0 -1
- package/CHANGELOG.md +84 -13
- package/dist/BellIcon-ByhygxBO.js +45 -0
- package/dist/BellIcon-ByhygxBO.js.map +1 -0
- package/dist/{BellIcon-Cb9YEUzJ.js → CartIcon-Bt3rQYGk.js} +10 -49
- package/dist/CartIcon-Bt3rQYGk.js.map +1 -0
- package/dist/CollectibleCard-CVpdgXA8.d.ts +8 -0
- package/dist/{_internal-DslqcNC1.js → _internal-DkS2VUn5.js} +1 -1
- package/dist/{_internal-DslqcNC1.js.map → _internal-DkS2VUn5.js.map} +1 -1
- package/dist/abi-fa-o9gH3.js +134 -0
- package/dist/abi-fa-o9gH3.js.map +1 -0
- package/dist/{alien_swap-DJ98gZQp.js → alien_swap-DoY6XfMA.js} +1 -1
- package/dist/{alien_swap-DJ98gZQp.js.map → alien_swap-DoY6XfMA.js.map} +1 -1
- package/dist/{api-BmEQfSQa.js → api-BoO0V5aJ.js} +11 -4
- package/dist/api-BoO0V5aJ.js.map +1 -0
- package/dist/{aqua-xyz-n1PcCCZ0.js → aqua-xyz-BBDxnG14.js} +1 -1
- package/dist/{aqua-xyz-n1PcCCZ0.js.map → aqua-xyz-BBDxnG14.js.map} +1 -1
- package/dist/{aura-Bevk_YkS.js → aura-DGx2zwvF.js} +1 -1
- package/dist/{aura-Bevk_YkS.js.map → aura-DGx2zwvF.js.map} +1 -1
- package/dist/{blur-B5sHErx5.js → blur-D8GKrRrq.js} +1 -1
- package/dist/{blur-B5sHErx5.js.map → blur-D8GKrRrq.js.map} +1 -1
- package/dist/builder-api-BFuZNOaN.js.map +1 -1
- package/dist/builder.gen-B9wR2nvF.js.map +1 -1
- package/dist/{coinbase-D30W-lxA.js → coinbase-DOry4PXY.js} +1 -1
- package/dist/{coinbase-D30W-lxA.js.map → coinbase-DOry4PXY.js.map} +1 -1
- package/dist/collectibles-C_H8jMGH.js +358 -0
- package/dist/collectibles-C_H8jMGH.js.map +1 -0
- package/dist/collections-CKummc-R.js +249 -0
- package/dist/collections-CKummc-R.js.map +1 -0
- package/dist/components-CosnX7F9.js +119 -0
- package/dist/components-CosnX7F9.js.map +1 -0
- package/dist/{contracts-DPHFT2TA.js → contracts-BP_0vX48.js} +4 -5
- package/dist/{contracts-DPHFT2TA.js.map → contracts-BP_0vX48.js.map} +1 -1
- package/dist/{create-config-6uynwTeb.js → create-config-CIfejoCk.js} +6 -11
- package/dist/create-config-CIfejoCk.js.map +1 -0
- package/dist/{create-config-lLSrnkbb.d.ts → create-config-ZOB7i4ZJ.d.ts} +135 -37
- package/dist/{element-C2NJexro.js → element-ciybd_VF.js} +1 -1
- package/dist/{element-C2NJexro.js.map → element-ciybd_VF.js.map} +1 -1
- package/dist/filters-V-V8Dn8f.d.ts +60 -0
- package/dist/{foundation-QgY1lvUj.js → foundation-Bq4lRz4x.js} +1 -1
- package/dist/{foundation-QgY1lvUj.js.map → foundation-Bq4lRz4x.js.map} +1 -1
- package/dist/index-BOiHR01C.d.ts +106 -0
- package/dist/index-BZIJTQT0.d.ts +121 -0
- package/dist/index-BeRV-7AX.d.ts +55 -0
- package/dist/{index-DonXiSg2.d.ts → index-Bsx6XsC2.d.ts} +117 -70
- package/dist/{index-BGJXqdg6.d.ts → index-BtWMBHeP.d.ts} +13 -9
- package/dist/{index-CtF7EE2z.d.ts → index-Bxzjy0d1.d.ts} +1 -1
- package/dist/{index-ChSKFOMx.d.ts → index-C-745li7.d.ts} +1 -1
- package/dist/{index-CY5UEX4h.d.ts → index-C4MUKshG.d.ts} +2 -2
- package/dist/{index-C7xKVIr4.d.ts → index-CPzvNmq9.d.ts} +37 -37
- package/dist/{index-ByW08-Z7.d.ts → index-CS65jqOq.d.ts} +2 -2
- package/dist/index-CZUtOTjh.d.ts +1 -0
- package/dist/index-CnEbXm_t.d.ts +130 -0
- package/dist/{index-ThUIs-Sy.d.ts → index-CxA34wP1.d.ts} +37 -23
- package/dist/{index-CIkpYltz.d.ts → index-CxpFwGvR.d.ts} +3 -3
- package/dist/{index-QxxS6f9r.d.ts → index-D9LPlmbC.d.ts} +1 -1
- package/dist/{index-CQnGIGb5.d.ts → index-DFEnA6Wa.d.ts} +44 -33
- package/dist/{index-PSPpUxCE.d.ts → index-DNNUeZEq.d.ts} +4 -4
- package/dist/{index-Dpyp7fQz.d.ts → index-DUXfvhxs.d.ts} +12 -12
- package/dist/index-DW3njUfb.d.ts +1 -0
- package/dist/index-DWt6yrIG.d.ts +64 -0
- package/dist/index-DewGsFz5.d.ts +1 -0
- package/dist/index-DmudgrsN.d.ts +495 -0
- package/dist/{index-DNU9xoGK.d.ts → index-DqXd1EeB.d.ts} +5 -5
- package/dist/{index-DX0Vm8HY.d.ts → index-DwKr18CI.d.ts} +1 -1
- package/dist/{index-D71J5Ghd.d.ts → index-NlPMNcqh.d.ts} +99 -99
- package/dist/index-Stm5u0I0.d.ts +53 -0
- package/dist/index-U-zp70of.d.ts +74 -0
- package/dist/index.d.ts +8 -8
- package/dist/index.js +13 -12
- package/dist/inventory-Dd7TazvZ.js +72 -0
- package/dist/inventory-Dd7TazvZ.js.map +1 -0
- package/dist/listBalances-BxpxBCvn.js +57 -0
- package/dist/listBalances-BxpxBCvn.js.map +1 -0
- package/dist/listCollectiblesPaginated-Cy2_qEZA.d.ts +327 -0
- package/dist/{listCollections-Bbzbz7qW.d.ts → listCollections-BB9FxKj2.d.ts} +264 -137
- package/dist/{looks-rare-CMVPny4v.js → looks-rare-6H--x3AM.js} +1 -1
- package/dist/{looks-rare-CMVPny4v.js.map → looks-rare-6H--x3AM.js.map} +1 -1
- package/dist/lowestListing-Cbsi6M1K.d.ts +465 -0
- package/dist/{magic-eden-IrWp2ZXk.js → magic-eden-BoxEQ1Li.js} +1 -1
- package/dist/{magic-eden-IrWp2ZXk.js.map → magic-eden-BoxEQ1Li.js.map} +1 -1
- package/dist/{manifold-DeOE-p2G.js → manifold-DycKsljb.js} +1 -1
- package/dist/{manifold-DeOE-p2G.js.map → manifold-DycKsljb.js.map} +1 -1
- package/dist/market-C3HV-awQ.js +209 -0
- package/dist/market-C3HV-awQ.js.map +1 -0
- package/dist/{marketCurrencies-CmOMCCOr.d.ts → marketCurrencies-Bpw1bIO0.d.ts} +46 -15
- package/dist/marketCurrencies-sKrTX0og.js +53 -0
- package/dist/marketCurrencies-sKrTX0og.js.map +1 -0
- package/dist/{marketplace-B5Z8G03R.js → marketplace-NQB-sEQL.js} +1 -1
- package/dist/{marketplace-B5Z8G03R.js.map → marketplace-NQB-sEQL.js.map} +1 -1
- package/dist/{marketplace-logos-D8t86gsW.js → marketplace-logos-D4dS1Foy.js} +21 -21
- package/dist/marketplace-logos-D4dS1Foy.js.map +1 -0
- package/dist/{marketplace.gen-JzNYpM0U.js → marketplace.gen-ksUafDqS.js} +56 -5
- package/dist/marketplace.gen-ksUafDqS.js.map +1 -0
- package/dist/{marketplaceConfig-sNh-MA5M.js → marketplaceConfig-UHQMM9fq.js} +9 -10
- package/dist/marketplaceConfig-UHQMM9fq.js.map +1 -0
- package/dist/{mintify-DG3GrljJ.js → mintify-Dyqyo8jQ.js} +1 -1
- package/dist/{mintify-DG3GrljJ.js.map → mintify-Dyqyo8jQ.js.map} +1 -1
- package/dist/{network-DnBEe1Ur.js → network-DtmiMhcg.js} +2 -2
- package/dist/network-DtmiMhcg.js.map +1 -0
- package/dist/networkconfigToWagmiChain-DbUf6HiO.js +15 -0
- package/dist/networkconfigToWagmiChain-DbUf6HiO.js.map +1 -0
- package/dist/{nftx-B3LH-ZYM.js → nftx-2LbFjj9Q.js} +1 -1
- package/dist/{nftx-B3LH-ZYM.js.map → nftx-2LbFjj9Q.js.map} +1 -1
- package/dist/{okx-CRFLrT3Z.js → okx-CBEWJNsR.js} +1 -1
- package/dist/{okx-CRFLrT3Z.js.map → okx-CBEWJNsR.js.map} +1 -1
- package/dist/{open-sea-cOpfl366.js → open-sea-Dxntz_PA.js} +1 -1
- package/dist/{open-sea-cOpfl366.js.map → open-sea-Dxntz_PA.js.map} +1 -1
- package/dist/orders-DnFfZAXV.js +462 -0
- package/dist/orders-DnFfZAXV.js.map +1 -0
- package/dist/{primary-sale-CLjXRrDj.js → primary-sale-1u4QlPdA.js} +1 -1
- package/dist/{primary-sale-CLjXRrDj.js.map → primary-sale-1u4QlPdA.js.map} +1 -1
- package/dist/primary-sales-Dmsi6bqj.js +114 -0
- package/dist/primary-sales-Dmsi6bqj.js.map +1 -0
- package/dist/{query-BTe7Wkrs.d.ts → query-BWbCsXLY.d.ts} +1 -1
- package/dist/{rarible-guwUx4cn.js → rarible-CS0SupHr.js} +1 -1
- package/dist/{rarible-guwUx4cn.js.map → rarible-CS0SupHr.js.map} +1 -1
- package/dist/react/_internal/api/index.d.ts +2 -2
- package/dist/react/_internal/api/index.js +5 -5
- package/dist/react/_internal/databeat/index.d.ts +1 -1
- package/dist/react/_internal/databeat/index.js +35 -21
- package/dist/react/_internal/index.d.ts +2 -2
- package/dist/react/_internal/index.js +9 -8
- package/dist/react/_internal/wagmi/index.d.ts +1 -1
- package/dist/react/_internal/wagmi/index.js +4 -3
- package/dist/react/hooks/config/index.d.ts +8 -8
- package/dist/react/hooks/config/index.js +35 -21
- package/dist/react/hooks/contracts/index.d.ts +6 -6
- package/dist/react/hooks/contracts/index.js +13 -12
- package/dist/react/hooks/data/collectibles/index.d.ts +10 -4
- package/dist/react/hooks/data/collectibles/index.js +35 -21
- package/dist/react/hooks/data/collections/index.d.ts +10 -10
- package/dist/react/hooks/data/collections/index.js +35 -21
- package/dist/react/hooks/data/index.d.ts +37 -29
- package/dist/react/hooks/data/index.js +36 -22
- package/dist/react/hooks/data/inventory/index.d.ts +36 -28
- package/dist/react/hooks/data/inventory/index.js +35 -21
- package/dist/react/hooks/data/market/index.d.ts +11 -11
- package/dist/react/hooks/data/market/index.js +35 -21
- package/dist/react/hooks/data/orders/index.d.ts +11 -11
- package/dist/react/hooks/data/orders/index.js +36 -22
- package/dist/react/hooks/data/primary-sales/index.d.ts +36 -28
- package/dist/react/hooks/data/primary-sales/index.js +35 -21
- package/dist/react/hooks/data/tokens/index.d.ts +4 -4
- package/dist/react/hooks/data/tokens/index.js +35 -21
- package/dist/react/hooks/index.d.ts +37 -29
- package/dist/react/hooks/index.js +36 -22
- package/dist/react/hooks/transactions/index.d.ts +2 -2
- package/dist/react/hooks/transactions/index.js +35 -21
- package/dist/react/hooks/ui/index.d.ts +4 -4
- package/dist/react/hooks/ui/index.js +35 -21
- package/dist/react/hooks/utils/index.d.ts +37 -29
- package/dist/react/hooks/utils/index.js +36 -22
- package/dist/react/index.d.ts +37 -29
- package/dist/react/index.js +36 -22
- package/dist/react/queries/collectibles/index.d.ts +11 -0
- package/dist/react/queries/collectibles/index.js +23 -0
- package/dist/react/queries/collections/index.d.ts +11 -0
- package/dist/react/queries/collections/index.js +20 -0
- package/dist/react/queries/index.d.ts +24 -16
- package/dist/react/queries/index.js +29 -17
- package/dist/react/queries/inventory/index.d.ts +3 -0
- package/dist/react/queries/inventory/index.js +22 -0
- package/dist/react/queries/market/index.d.ts +6 -0
- package/dist/react/queries/market/index.js +22 -0
- package/dist/react/queries/orders/index.d.ts +11 -0
- package/dist/react/queries/orders/index.js +13 -0
- package/dist/react/queries/primary-sales/index.d.ts +4 -0
- package/dist/react/queries/primary-sales/index.js +13 -0
- package/dist/react/queries/tokens/index.d.ts +5 -0
- package/dist/react/queries/tokens/index.js +14 -0
- package/dist/react/queries/utils/index.d.ts +4 -0
- package/dist/react/queries/utils/index.js +22 -0
- package/dist/react/ssr/index.d.ts +7 -7
- package/dist/react/ssr/index.js +9 -8
- package/dist/react/ssr/index.js.map +1 -1
- package/dist/react/ui/components/marketplace-collectible-card/components/footer/components/index.d.ts +3 -0
- package/dist/react/ui/components/marketplace-collectible-card/components/footer/components/index.js +22 -0
- package/dist/react/ui/components/marketplace-collectible-card/components/footer/index.d.ts +54 -0
- package/dist/react/ui/components/marketplace-collectible-card/components/footer/index.js +40 -0
- package/dist/react/ui/components/marketplace-collectible-card/index.d.ts +5 -5
- package/dist/react/ui/components/marketplace-collectible-card/index.js +35 -21
- package/dist/react/ui/components/marketplace-collectible-card/utils/index.d.ts +2 -2
- package/dist/react/ui/components/marketplace-collectible-card/utils/index.js +9 -8
- package/dist/react/ui/components/marketplace-logos/index.d.ts +21 -21
- package/dist/react/ui/components/marketplace-logos/index.js +1 -1
- package/dist/react/ui/icons/index.js +13 -11
- package/dist/react/ui/index.d.ts +5 -5
- package/dist/react/ui/index.js +35 -21
- package/dist/react/ui/modals/_internal/components/actionModal/index.d.ts +2 -2
- package/dist/react/ui/modals/_internal/components/actionModal/index.js +35 -21
- package/dist/react/utils/index.d.ts +3 -3
- package/dist/react/utils/index.js +5 -5
- package/dist/{react-Ceq8mamy.js → react-DE852KeT.js} +2111 -1002
- package/dist/react-DE852KeT.js.map +1 -0
- package/dist/{sequence-Dt2Xo7Fa.js → sequence-paCCener.js} +1 -1
- package/dist/{sequence-Dt2Xo7Fa.js.map → sequence-paCCener.js.map} +1 -1
- package/dist/styles/index.css +200 -24
- package/dist/{sudo-swap-CGoARONs.js → sudo-swap-9rH2EgfT.js} +1 -1
- package/dist/{sudo-swap-CGoARONs.js.map → sudo-swap-9rH2EgfT.js.map} +1 -1
- package/dist/{super-rare-NeQtZjcn.js → super-rare-DHIuWtRw.js} +1 -1
- package/dist/{super-rare-NeQtZjcn.js.map → super-rare-DHIuWtRw.js.map} +1 -1
- package/dist/{token-D9gZVqbX.js → token-Cv7l2ZaL.js} +1 -1
- package/dist/{token-D9gZVqbX.js.map → token-Cv7l2ZaL.js.map} +1 -1
- package/dist/tokenBalances-ibDerNmM.js +63 -0
- package/dist/tokenBalances-ibDerNmM.js.map +1 -0
- package/dist/tokenSupplies-Bfe8RHzI.d.ts +272 -0
- package/dist/tokens-cGxMadd8.js +194 -0
- package/dist/tokens-cGxMadd8.js.map +1 -0
- package/dist/{transaction-CC2KxNF6.js → transaction-DZUW5RHu.js} +2 -8
- package/dist/transaction-DZUW5RHu.js.map +1 -0
- package/dist/types/index.d.ts +2 -2
- package/dist/types/index.js +2 -2
- package/dist/{types-G2PWxiJR.js → types-B_-cnkcP.js} +1 -1
- package/dist/types-B_-cnkcP.js.map +1 -0
- package/dist/{types-BlCa0TVE.d.ts → types-D2TJ1dwv.d.ts} +19 -10
- package/dist/utils/abi/index.d.ts +5 -5
- package/dist/utils/abi/index.js +5 -5
- package/dist/utils/abi/marketplace/index.d.ts +1 -1
- package/dist/utils/abi/marketplace/index.js +1 -1
- package/dist/utils/abi/primary-sale/index.d.ts +1 -1
- package/dist/utils/abi/primary-sale/index.js +1 -1
- package/dist/utils/abi/token/index.d.ts +1 -1
- package/dist/utils/abi/token/index.js +1 -1
- package/dist/utils/index.d.ts +7 -7
- package/dist/utils/index.js +12 -11
- package/dist/utils-BCgNhBFR.js +112 -0
- package/dist/utils-BCgNhBFR.js.map +1 -0
- package/dist/{utils-CKJd-CRf.js → utils-BfpDVibN.js} +7 -24
- package/dist/utils-BfpDVibN.js.map +1 -0
- package/dist/{utils-wquIhK6T.js → utils-BqxcalL2.js} +2 -2
- package/dist/utils-BqxcalL2.js.map +1 -0
- package/dist/waitForTransactionReceipt-DieAnV52.js +25 -0
- package/dist/waitForTransactionReceipt-DieAnV52.js.map +1 -0
- package/dist/{x2y2-CQdg24VP.js → x2y2-45WDooeh.js} +1 -1
- package/dist/{x2y2-CQdg24VP.js.map → x2y2-45WDooeh.js.map} +1 -1
- package/dist/{zora-DdEydy4L.js → zora-CbeBoLvQ.js} +1 -1
- package/dist/{zora-DdEydy4L.js.map → zora-CbeBoLvQ.js.map} +1 -1
- package/package.json +43 -38
- package/src/react/_internal/api/__mocks__/marketplace.msw.ts +2 -0
- package/src/react/_internal/api/marketplace.gen.ts +1730 -2383
- package/src/react/_internal/api/query-keys.ts +16 -0
- package/src/react/_internal/api/services.ts +1 -1
- package/src/react/_internal/databeat/types.ts +1 -0
- package/src/react/_internal/types.ts +14 -0
- package/src/react/_internal/utils.ts +3 -0
- package/src/react/_internal/wagmi/__tests__/create-config.test.ts +19 -8
- package/src/react/_internal/wagmi/create-config.ts +6 -17
- package/src/react/hooks/config/__snapshots__/useMarketplaceConfig.test.tsx.snap +4 -4
- package/src/react/hooks/config/useMarketplaceConfig.tsx +1 -1
- package/src/react/hooks/data/collectibles/useBalanceOfCollectible.laos.test.tsx +2 -2
- package/src/react/hooks/data/collectibles/useBalanceOfCollectible.tsx +1 -1
- package/src/react/hooks/data/collectibles/useCollectible.tsx +1 -1
- package/src/react/hooks/data/collectibles/useCountOfCollectables.tsx +1 -1
- package/src/react/hooks/data/collectibles/useListCollectibleActivities.tsx +1 -1
- package/src/react/hooks/data/collectibles/useListCollectibles.tsx +1 -1
- package/src/react/hooks/data/collectibles/useListCollectiblesPaginated.tsx +1 -1
- package/src/react/hooks/data/collectibles/useTokenBalances.test.tsx +151 -0
- package/src/react/hooks/data/collectibles/useTokenBalances.tsx +47 -0
- package/src/react/hooks/data/collections/__snapshots__/useListCollections.test.tsx.snap +6 -6
- package/src/react/hooks/data/collections/useCollection.tsx +1 -1
- package/src/react/hooks/data/collections/useCollectionBalanceDetails.tsx +1 -1
- package/src/react/hooks/data/collections/useCollectionDetails.ts +1 -1
- package/src/react/hooks/data/collections/useListCollectionActivities.tsx +1 -1
- package/src/react/hooks/data/collections/useListCollections.tsx +1 -1
- package/src/react/hooks/data/inventory/useInventory.test.tsx +3 -98
- package/src/react/hooks/data/inventory/useInventory.tsx +3 -3
- package/src/react/hooks/data/market/useCurrency.tsx +1 -1
- package/src/react/hooks/data/market/useListMarketCardData.tsx +8 -1
- package/src/react/hooks/data/market/useMarketCurrencies.tsx +1 -1
- package/src/react/hooks/data/orders/index.ts +4 -0
- package/src/react/hooks/data/orders/useCountItemsOrdersForCollection.tsx +90 -0
- package/src/react/hooks/data/orders/useCountListingsForCollectible.tsx +1 -1
- package/src/react/hooks/data/orders/useCountOffersForCollectible.tsx +1 -1
- package/src/react/hooks/data/orders/useFloorOrder.tsx +1 -1
- package/src/react/hooks/data/orders/useGetCountOfFilteredOrders.tsx +39 -0
- package/src/react/hooks/data/orders/useHighestOffer.tsx +1 -1
- package/src/react/hooks/data/orders/useListItemsOrdersForCollection.tsx +93 -0
- package/src/react/hooks/data/orders/useListItemsOrdersForCollectionPaginated.tsx +108 -0
- package/src/react/hooks/data/orders/useListListingsForCollectible.tsx +1 -1
- package/src/react/hooks/data/orders/useListOffersForCollectible.tsx +70 -45
- package/src/react/hooks/data/orders/useLowestListing.tsx +1 -1
- package/src/react/hooks/data/primary-sales/useGetCountOfPrimarySaleItems.tsx +2 -2
- package/src/react/hooks/data/primary-sales/useList1155ShopCardData.tsx +21 -37
- package/src/react/hooks/data/primary-sales/useList721ShopCardData.tsx +14 -3
- package/src/react/hooks/data/primary-sales/useListPrimarySaleItems.tsx +1 -1
- package/src/react/hooks/data/tokens/useGetTokenRanges.tsx +2 -2
- package/src/react/hooks/data/tokens/useListBalances.tsx +2 -2
- package/src/react/hooks/data/tokens/useListTokenMetadata.tsx +1 -1
- package/src/react/hooks/data/tokens/useSearchTokenMetadata.tsx +5 -2
- package/src/react/hooks/data/tokens/useTokenSupplies.ts +1 -1
- package/src/react/hooks/transactions/useCancelOrder.test.tsx +7 -4
- package/src/react/hooks/transactions/useCancelOrder.tsx +2 -1
- package/src/react/hooks/transactions/useCancelTransactionSteps.tsx +2 -2
- package/src/react/hooks/transactions/useGenerateCancelTransaction.test.tsx +1 -0
- package/src/react/hooks/transactions/useGenerateListingTransaction.test.tsx +13 -0
- package/src/react/hooks/transactions/useGenerateOfferTransaction.test.tsx +1 -0
- package/src/react/hooks/transactions/useGenerateSellTransaction.test.tsx +6 -0
- package/src/react/hooks/transactions/useProcessStep.test.tsx +2 -2
- package/src/react/hooks/ui/useFilterState.tsx +72 -2
- package/src/react/hooks/ui/useFilters.tsx +1 -1
- package/src/react/hooks/utils/__tests__/useEnsureCorrectChain.test.tsx +75 -0
- package/src/react/hooks/utils/index.ts +0 -1
- package/src/react/hooks/utils/useCheckoutOptions.tsx +2 -2
- package/src/react/hooks/utils/useCheckoutOptionsSalesContract.tsx +1 -1
- package/src/react/hooks/utils/useComparePrices.tsx +1 -1
- package/src/react/hooks/utils/useConvertPriceToUSD.tsx +1 -1
- package/src/react/hooks/utils/useEnsureCorrectChain.ts +31 -34
- package/src/react/providers/analytics-provider.tsx +45 -0
- package/src/react/providers/index.tsx +33 -46
- package/src/react/providers/modal-provider.tsx +15 -4
- package/src/react/queries/{__tests__ → collectibles/__tests__}/balanceOfCollectible.laos.test.ts +4 -4
- package/src/react/queries/collectibles/__tests__/tokenBalances.laos.test.ts +123 -0
- package/src/react/queries/{balanceOfCollectible.ts → collectibles/balanceOfCollectible.ts} +26 -4
- package/src/react/queries/{collectible.ts → collectibles/collectible.ts} +20 -5
- package/src/react/queries/{countOfCollectables.ts → collectibles/countOfCollectables.ts} +32 -6
- package/src/react/queries/collectibles/index.ts +7 -0
- package/src/react/queries/{listCollectibleActivities.ts → collectibles/listCollectibleActivities.ts} +29 -5
- package/src/react/queries/{listCollectibles.ts → collectibles/listCollectibles.ts} +47 -54
- package/src/react/queries/{listCollectiblesPaginated.ts → collectibles/listCollectiblesPaginated.ts} +22 -5
- package/src/react/queries/collectibles/tokenBalances.ts +103 -0
- package/src/react/queries/{collection.ts → collections/collection.ts} +19 -5
- package/src/react/queries/{collectionBalanceDetails.ts → collections/collectionBalanceDetails.ts} +19 -4
- package/src/react/queries/{collectionDetails.ts → collections/collectionDetails.ts} +21 -6
- package/src/react/queries/collections/index.ts +5 -0
- package/src/react/queries/{listCollectionActivities.ts → collections/listCollectionActivities.ts} +28 -6
- package/src/react/queries/{listCollections.ts → collections/listCollections.ts} +26 -18
- package/src/react/queries/index.ts +7 -33
- package/src/react/queries/{__tests__ → inventory/__tests__}/inventory.laos.test.ts +10 -7
- package/src/react/queries/inventory/index.ts +1 -0
- package/src/react/queries/inventory/inventory.ts +169 -0
- package/src/react/queries/{checkoutOptions.ts → market/checkoutOptions.ts} +28 -6
- package/src/react/queries/{checkoutOptionsSalesContract.ts → market/checkoutOptionsSalesContract.ts} +24 -5
- package/src/react/queries/{currency.ts → market/currency.ts} +13 -4
- package/src/react/queries/{filters.ts → market/filters.ts} +48 -34
- package/src/react/queries/market/index.ts +6 -0
- package/src/react/queries/{marketCurrencies.ts → market/marketCurrencies.ts} +24 -5
- package/src/react/queries/{marketplaceConfig.ts → market/marketplaceConfig.ts} +11 -7
- package/src/react/queries/orders/countItemsOrdersForCollection.ts +86 -0
- package/src/react/queries/{countListingsForCollectible.ts → orders/countListingsForCollectible.ts} +23 -6
- package/src/react/queries/{countOffersForCollectible.ts → orders/countOffersForCollectible.ts} +23 -6
- package/src/react/queries/{floorOrder.ts → orders/floorOrder.ts} +15 -4
- package/src/react/queries/orders/getCountOfFilteredOrders.ts +88 -0
- package/src/react/queries/{highestOffer.ts → orders/highestOffer.ts} +16 -4
- package/src/react/queries/orders/index.ts +11 -0
- package/src/react/queries/orders/listItemsOrdersForCollection.ts +90 -0
- package/src/react/queries/orders/listItemsOrdersForCollectionPaginated.ts +90 -0
- package/src/react/queries/{listListingsForCollectible.ts → orders/listListingsForCollectible.ts} +20 -5
- package/src/react/queries/orders/listOffersForCollectible.ts +116 -0
- package/src/react/queries/{lowestListing.ts → orders/lowestListing.ts} +16 -4
- package/src/react/queries/{countOfPrimarySaleItems.ts → primary-sales/countOfPrimarySaleItems.ts} +17 -3
- package/src/react/queries/primary-sales/index.ts +3 -0
- package/src/react/queries/{primarySaleItems.ts → primary-sales/primarySaleItems.ts} +18 -4
- package/src/react/queries/{primarySaleItemsCount.ts → primary-sales/primarySaleItemsCount.ts} +19 -4
- package/src/react/queries/{getTokenRanges.ts → tokens/getTokenRanges.ts} +17 -4
- package/src/react/queries/tokens/index.ts +5 -0
- package/src/react/queries/{listBalances.ts → tokens/listBalances.ts} +18 -3
- package/src/react/queries/{listTokenMetadata.ts → tokens/listTokenMetadata.ts} +18 -4
- package/src/react/queries/{searchTokenMetadata.ts → tokens/searchTokenMetadata.ts} +18 -4
- package/src/react/queries/{tokenSupplies.ts → tokens/tokenSupplies.ts} +16 -4
- package/src/react/queries/{comparePrices.ts → utils/comparePrices.ts} +16 -4
- package/src/react/queries/{convertPriceToUSD.ts → utils/convertPriceToUSD.ts} +18 -5
- package/src/react/queries/utils/index.ts +2 -0
- package/src/react/ssr/__tests__/__snapshots__/create-ssr-client.test.ts.snap +4 -4
- package/src/react/ssr/create-ssr-client.ts +1 -1
- package/src/react/ui/components/_internals/ErrorLogBox.tsx +85 -0
- package/src/react/ui/components/_internals/action-button/ActionButton.stories.tsx +8 -8
- package/src/react/ui/components/_internals/action-button/ActionButton.tsx +10 -9
- package/src/react/ui/components/_internals/action-button/__tests__/NonOwnerActions.test.tsx +4 -4
- package/src/react/ui/components/_internals/action-button/components/NonOwnerActions.tsx +10 -6
- package/src/react/ui/components/_internals/custom-select/__tests__/CustomSelect.test.tsx +1 -1
- package/src/react/ui/components/marketplace-collectible-card/CollectibleCard.tsx +4 -3
- package/src/react/ui/components/marketplace-collectible-card/CollectibleCardSkeleton.tsx +13 -2
- package/src/react/ui/components/marketplace-collectible-card/components/ActionButtonWrapper.tsx +7 -7
- package/src/react/ui/components/marketplace-collectible-card/components/BaseCard.tsx +14 -5
- package/src/react/ui/components/marketplace-collectible-card/components/footer/Footer.tsx +179 -0
- package/src/react/ui/components/marketplace-collectible-card/components/footer/components/FooterName.tsx +103 -0
- package/src/react/ui/components/marketplace-collectible-card/components/footer/components/PriceDisplay.tsx +80 -0
- package/src/react/ui/components/marketplace-collectible-card/components/footer/components/SaleDetailsPill.tsx +29 -0
- package/src/react/ui/components/marketplace-collectible-card/components/footer/components/TokenTypeBalancePill.tsx +30 -0
- package/src/react/ui/components/marketplace-collectible-card/components/footer/components/index.ts +4 -0
- package/src/react/ui/components/marketplace-collectible-card/components/footer/index.ts +2 -0
- package/src/react/ui/components/marketplace-collectible-card/types.ts +19 -6
- package/src/react/ui/components/marketplace-collectible-card/variants/MarketCard.tsx +14 -23
- package/src/react/ui/components/marketplace-collectible-card/variants/NonTradableInventoryCard.tsx +42 -0
- package/src/react/ui/components/marketplace-collectible-card/variants/ShopCard.tsx +17 -12
- package/src/react/ui/modals/BuyModal/__tests__/BuyModalRouter.test.tsx +10 -10
- package/src/react/ui/modals/BuyModal/__tests__/ERC1155ShopModal.test.tsx +3 -3
- package/src/react/ui/modals/BuyModal/__tests__/Modal.test.tsx.bak +3 -3
- package/src/react/ui/modals/BuyModal/__tests__/Modal1155.test.tsx +6 -6
- package/src/react/ui/modals/BuyModal/__tests__/store.test.ts +3 -3
- package/src/react/ui/modals/BuyModal/components/BuyModalRouter.tsx +5 -5
- package/src/react/ui/modals/BuyModal/components/ERC1155BuyModal.tsx +67 -5
- package/src/react/ui/modals/BuyModal/components/ERC1155QuantityModal.tsx +8 -8
- package/src/react/ui/modals/BuyModal/components/ERC1155ShopModal.tsx +2 -2
- package/src/react/ui/modals/BuyModal/components/ERC721BuyModal.tsx +31 -0
- package/src/react/ui/modals/BuyModal/hooks/__tests__/useERC721SalePaymentParams.test.tsx +20 -1
- package/src/react/ui/modals/BuyModal/hooks/useERC1155Checkout.ts +20 -4
- package/src/react/ui/modals/BuyModal/hooks/useERC721SalePaymentParams.ts +12 -3
- package/src/react/ui/modals/BuyModal/hooks/usePaymentModalParams.ts +11 -2
- package/src/react/ui/modals/BuyModal/store.ts +9 -6
- package/src/react/ui/modals/CreateListingModal/Modal.tsx +63 -24
- package/src/react/ui/modals/CreateListingModal/__tests__/Modal.test.tsx +4 -0
- package/src/react/ui/modals/CreateListingModal/hooks/useCreateListing.tsx +20 -13
- package/src/react/ui/modals/CreateListingModal/hooks/useGetTokenApproval.ts +4 -1
- package/src/react/ui/modals/CreateListingModal/hooks/useTransactionSteps.tsx +2 -1
- package/src/react/ui/modals/MakeOfferModal/Modal.tsx +141 -96
- package/src/react/ui/modals/MakeOfferModal/__tests__/Modal.test.tsx +10 -0
- package/src/react/ui/modals/MakeOfferModal/hooks/useGetTokenApproval.tsx +4 -1
- package/src/react/ui/modals/MakeOfferModal/hooks/useMakeOffer.tsx +17 -27
- package/src/react/ui/modals/MakeOfferModal/hooks/useTransactionSteps.tsx +2 -1
- package/src/react/ui/modals/SellModal/Modal.tsx +21 -3
- package/src/react/ui/modals/SellModal/__tests__/Modal.test.tsx +2 -0
- package/src/react/ui/modals/SellModal/hooks/useGetTokenApproval.tsx +5 -2
- package/src/react/ui/modals/SellModal/hooks/useSell.tsx +15 -8
- package/src/react/ui/modals/SuccessfulPurchaseModal/__tests__/Modal.test.tsx +9 -0
- package/src/react/ui/modals/_internal/components/actionModal/ActionModal.test.tsx +20 -9
- package/src/react/ui/modals/_internal/components/calendarDropdown/TimeSelector.tsx +105 -0
- package/src/react/ui/modals/_internal/components/calendarDropdown/index.tsx +45 -12
- package/src/react/ui/modals/_internal/components/calendarDropdown/overrides.css +39 -0
- package/src/react/ui/modals/_internal/components/currencyOptionsSelect/index.tsx +31 -10
- package/src/react/ui/modals/_internal/components/expirationDateSelect/index.tsx +18 -9
- package/src/react/ui/modals/_internal/components/priceInput/index.tsx +53 -3
- package/src/react/ui/modals/_internal/components/switchChainErrorModal/__tests__/SwitchChainErrorModal.test.tsx +80 -0
- package/src/react/ui/modals/_internal/components/switchChainErrorModal/index.tsx +64 -0
- package/src/react/ui/modals/_internal/components/switchChainErrorModal/store.ts +42 -0
- package/src/react/ui/modals/_internal/components/transactionDetails/index.tsx +58 -10
- package/src/react/ui/modals/_internal/constants/opensea-currencies.ts +481 -0
- package/src/react/ui/modals/_internal/types.ts +0 -1
- package/src/react/utils/waitForTransactionReceipt.ts +26 -32
- package/src/styles/index.css +1 -0
- package/src/styles/styles.ts +201 -25
- package/src/types/index.ts +1 -1
- package/src/types/new-marketplace-types.ts +9 -18
- package/src/types/types.ts +1 -1
- package/src/utils/abi/index.ts +1 -0
- package/src/utils/abi/mainModule.ts +158 -0
- package/test/globalSetup.ts +1 -1
- package/test/test-utils.tsx +1 -0
- package/dist/BellIcon-Cb9YEUzJ.js.map +0 -1
- package/dist/CollectibleCard-CYyWzk6u.d.ts +0 -8
- package/dist/api-BmEQfSQa.js.map +0 -1
- package/dist/create-config-6uynwTeb.js.map +0 -1
- package/dist/filters-B8XS4tFH.d.ts +0 -31
- package/dist/index-BuY_NKSX.d.ts +0 -222
- package/dist/index-D2HohSwO.d.ts +0 -293
- package/dist/listCollectiblesPaginated--AgXjajA.d.ts +0 -166
- package/dist/lowestListing-BQHfQpfg.d.ts +0 -144
- package/dist/marketplace-logos-D8t86gsW.js.map +0 -1
- package/dist/marketplace.gen-JzNYpM0U.js.map +0 -1
- package/dist/marketplaceConfig-sNh-MA5M.js.map +0 -1
- package/dist/network-DnBEe1Ur.js.map +0 -1
- package/dist/queries-BYT4GJw3.js +0 -1478
- package/dist/queries-BYT4GJw3.js.map +0 -1
- package/dist/react-CbqXKOpt.css +0 -80
- package/dist/react-CbqXKOpt.css.map +0 -1
- package/dist/react-Ceq8mamy.js.map +0 -1
- package/dist/tokenSupplies-DXtkRYNO.d.ts +0 -147
- package/dist/transaction-CC2KxNF6.js.map +0 -1
- package/dist/types-G2PWxiJR.js.map +0 -1
- package/dist/utils-CKJd-CRf.js.map +0 -1
- package/dist/utils-wquIhK6T.js.map +0 -1
- package/dist/waitForTransactionReceipt-DZxAuR9N.js +0 -27
- package/dist/waitForTransactionReceipt-DZxAuR9N.js.map +0 -1
- package/src/react/hooks/utils/useSwitchChainWithModal.ts +0 -38
- package/src/react/queries/inventory.ts +0 -343
- package/src/react/ui/components/marketplace-collectible-card/Footer.tsx +0 -238
- package/src/react/ui/modals/_internal/components/switchChainModal/__tests__/SwitchChainModal.test.tsx +0 -117
- package/src/react/ui/modals/_internal/components/switchChainModal/index.tsx +0 -124
- package/src/react/ui/modals/_internal/components/switchChainModal/store.ts +0 -71
- /package/dist/{index-q7f-WDBS.d.ts → index-6wsMChsg.d.ts} +0 -0
- /package/dist/{abi-Wr_aTZFi.js → queries-KOcILNJO.js} +0 -0
- /package/dist/{wagmi-BhP3mdhP.js → wagmi-Bseovd6Q.js} +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import "../../index-
|
|
5
|
-
export { EIP2981_ABI, ERC1155_ABI, ERC1155_SALES_CONTRACT_ABI_V0, ERC1155_SALES_CONTRACT_ABI_V1, ERC20_ABI, ERC721_ABI, ERC721_SALE_ABI_V0, ERC721_SALE_ABI_V1, SEQUENCE_1155_ITEMS_ABI, SequenceMarketplaceV1_ABI, SequenceMarketplaceV2_ABI };
|
|
1
|
+
import { MAIN_MODULE_ABI } from "../../index-BeRV-7AX.js";
|
|
2
|
+
import { EIP2981_ABI, SequenceMarketplaceV1_ABI, SequenceMarketplaceV2_ABI } from "../../index-Bxzjy0d1.js";
|
|
3
|
+
import { ERC1155_SALES_CONTRACT_ABI_V0, ERC1155_SALES_CONTRACT_ABI_V1, ERC721_SALE_ABI_V0, ERC721_SALE_ABI_V1 } from "../../index-DwKr18CI.js";
|
|
4
|
+
import { ERC1155_ABI, ERC20_ABI, ERC721_ABI, SEQUENCE_1155_ITEMS_ABI } from "../../index-D9LPlmbC.js";
|
|
5
|
+
export { EIP2981_ABI, ERC1155_ABI, ERC1155_SALES_CONTRACT_ABI_V0, ERC1155_SALES_CONTRACT_ABI_V1, ERC20_ABI, ERC721_ABI, ERC721_SALE_ABI_V0, ERC721_SALE_ABI_V1, MAIN_MODULE_ABI, SEQUENCE_1155_ITEMS_ABI, SequenceMarketplaceV1_ABI, SequenceMarketplaceV2_ABI };
|
package/dist/utils/abi/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import "../../
|
|
1
|
+
import { MAIN_MODULE_ABI } from "../../abi-fa-o9gH3.js";
|
|
2
|
+
import { EIP2981_ABI, SequenceMarketplaceV1_ABI, SequenceMarketplaceV2_ABI } from "../../marketplace-NQB-sEQL.js";
|
|
3
|
+
import { ERC1155_SALES_CONTRACT_ABI_V0, ERC1155_SALES_CONTRACT_ABI_V1, ERC721_SALE_ABI_V0, ERC721_SALE_ABI_V1 } from "../../primary-sale-1u4QlPdA.js";
|
|
4
|
+
import { ERC1155_ABI, ERC20_ABI, ERC721_ABI, SEQUENCE_1155_ITEMS_ABI } from "../../token-Cv7l2ZaL.js";
|
|
5
5
|
|
|
6
|
-
export { EIP2981_ABI, ERC1155_ABI, ERC1155_SALES_CONTRACT_ABI_V0, ERC1155_SALES_CONTRACT_ABI_V1, ERC20_ABI, ERC721_ABI, ERC721_SALE_ABI_V0, ERC721_SALE_ABI_V1, SEQUENCE_1155_ITEMS_ABI, SequenceMarketplaceV1_ABI, SequenceMarketplaceV2_ABI };
|
|
6
|
+
export { EIP2981_ABI, ERC1155_ABI, ERC1155_SALES_CONTRACT_ABI_V0, ERC1155_SALES_CONTRACT_ABI_V1, ERC20_ABI, ERC721_ABI, ERC721_SALE_ABI_V0, ERC721_SALE_ABI_V1, MAIN_MODULE_ABI, SEQUENCE_1155_ITEMS_ABI, SequenceMarketplaceV1_ABI, SequenceMarketplaceV2_ABI };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { EIP2981_ABI, SequenceMarketplaceV1_ABI, SequenceMarketplaceV2_ABI } from "../../../index-
|
|
1
|
+
import { EIP2981_ABI, SequenceMarketplaceV1_ABI, SequenceMarketplaceV2_ABI } from "../../../index-Bxzjy0d1.js";
|
|
2
2
|
export { EIP2981_ABI, SequenceMarketplaceV1_ABI, SequenceMarketplaceV2_ABI };
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { EIP2981_ABI, SequenceMarketplaceV1_ABI, SequenceMarketplaceV2_ABI } from "../../../marketplace-
|
|
1
|
+
import { EIP2981_ABI, SequenceMarketplaceV1_ABI, SequenceMarketplaceV2_ABI } from "../../../marketplace-NQB-sEQL.js";
|
|
2
2
|
|
|
3
3
|
export { EIP2981_ABI, SequenceMarketplaceV1_ABI, SequenceMarketplaceV2_ABI };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { ERC1155_SALES_CONTRACT_ABI_V0, ERC1155_SALES_CONTRACT_ABI_V1, ERC721_SALE_ABI_V0, ERC721_SALE_ABI_V1 } from "../../../index-
|
|
1
|
+
import { ERC1155_SALES_CONTRACT_ABI_V0, ERC1155_SALES_CONTRACT_ABI_V1, ERC721_SALE_ABI_V0, ERC721_SALE_ABI_V1 } from "../../../index-DwKr18CI.js";
|
|
2
2
|
export { ERC1155_SALES_CONTRACT_ABI_V0, ERC1155_SALES_CONTRACT_ABI_V1, ERC721_SALE_ABI_V0, ERC721_SALE_ABI_V1 };
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { ERC1155_SALES_CONTRACT_ABI_V0, ERC1155_SALES_CONTRACT_ABI_V1, ERC721_SALE_ABI_V0, ERC721_SALE_ABI_V1 } from "../../../primary-sale-
|
|
1
|
+
import { ERC1155_SALES_CONTRACT_ABI_V0, ERC1155_SALES_CONTRACT_ABI_V1, ERC721_SALE_ABI_V0, ERC721_SALE_ABI_V1 } from "../../../primary-sale-1u4QlPdA.js";
|
|
2
2
|
|
|
3
3
|
export { ERC1155_SALES_CONTRACT_ABI_V0, ERC1155_SALES_CONTRACT_ABI_V1, ERC721_SALE_ABI_V0, ERC721_SALE_ABI_V1 };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { ERC1155_ABI, ERC20_ABI, ERC721_ABI, SEQUENCE_1155_ITEMS_ABI } from "../../../index-
|
|
1
|
+
import { ERC1155_ABI, ERC20_ABI, ERC721_ABI, SEQUENCE_1155_ITEMS_ABI } from "../../../index-D9LPlmbC.js";
|
|
2
2
|
export { ERC1155_ABI, ERC20_ABI, ERC721_ABI, SEQUENCE_1155_ITEMS_ABI };
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { ERC1155_ABI, ERC20_ABI, ERC721_ABI, SEQUENCE_1155_ITEMS_ABI } from "../../../token-
|
|
1
|
+
import { ERC1155_ABI, ERC20_ABI, ERC721_ABI, SEQUENCE_1155_ITEMS_ABI } from "../../../token-Cv7l2ZaL.js";
|
|
2
2
|
|
|
3
3
|
export { ERC1155_ABI, ERC20_ABI, ERC721_ABI, SEQUENCE_1155_ITEMS_ABI };
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import "../create-config-
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import "../index-
|
|
6
|
-
import { calculateEarningsAfterFees, calculatePriceDifferencePercentage, cn, compareAddress, formatPrice, formatPriceWithFee, getMarketplaceDetails, getNetwork, getPresentableChainName, networkToWagmiChain, truncateEnd, truncateMiddle } from "../index-
|
|
7
|
-
export { EIP2981_ABI, ERC1155_ABI, ERC1155_SALES_CONTRACT_ABI_V0, ERC1155_SALES_CONTRACT_ABI_V1, ERC20_ABI, ERC721_ABI, ERC721_SALE_ABI_V0, ERC721_SALE_ABI_V1, SEQUENCE_1155_ITEMS_ABI, SequenceMarketplaceV1_ABI, SequenceMarketplaceV2_ABI, calculateEarningsAfterFees, calculatePriceDifferencePercentage, cn, compareAddress, formatPrice, formatPriceWithFee, getMarketplaceDetails, getNetwork, getPresentableChainName, networkToWagmiChain, truncateEnd, truncateMiddle };
|
|
1
|
+
import "../create-config-ZOB7i4ZJ.js";
|
|
2
|
+
import { MAIN_MODULE_ABI } from "../index-BeRV-7AX.js";
|
|
3
|
+
import { EIP2981_ABI, SequenceMarketplaceV1_ABI, SequenceMarketplaceV2_ABI } from "../index-Bxzjy0d1.js";
|
|
4
|
+
import { ERC1155_SALES_CONTRACT_ABI_V0, ERC1155_SALES_CONTRACT_ABI_V1, ERC721_SALE_ABI_V0, ERC721_SALE_ABI_V1 } from "../index-DwKr18CI.js";
|
|
5
|
+
import { ERC1155_ABI, ERC20_ABI, ERC721_ABI, SEQUENCE_1155_ITEMS_ABI } from "../index-D9LPlmbC.js";
|
|
6
|
+
import { calculateEarningsAfterFees, calculatePriceDifferencePercentage, cn, compareAddress, formatPrice, formatPriceWithFee, getMarketplaceDetails, getNetwork, getPresentableChainName, networkToWagmiChain, truncateEnd, truncateMiddle } from "../index-CS65jqOq.js";
|
|
7
|
+
export { EIP2981_ABI, ERC1155_ABI, ERC1155_SALES_CONTRACT_ABI_V0, ERC1155_SALES_CONTRACT_ABI_V1, ERC20_ABI, ERC721_ABI, ERC721_SALE_ABI_V0, ERC721_SALE_ABI_V1, MAIN_MODULE_ABI, SEQUENCE_1155_ITEMS_ABI, SequenceMarketplaceV1_ABI, SequenceMarketplaceV2_ABI, calculateEarningsAfterFees, calculatePriceDifferencePercentage, cn, compareAddress, formatPrice, formatPriceWithFee, getMarketplaceDetails, getNetwork, getPresentableChainName, networkToWagmiChain, truncateEnd, truncateMiddle };
|
package/dist/utils/index.js
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import "../builder.gen-B9wR2nvF.js";
|
|
2
|
-
import "../
|
|
3
|
-
import "../
|
|
4
|
-
import
|
|
5
|
-
import "../
|
|
6
|
-
import
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import "../
|
|
10
|
-
import {
|
|
11
|
-
import "../
|
|
2
|
+
import { networkToWagmiChain } from "../networkconfigToWagmiChain-DbUf6HiO.js";
|
|
3
|
+
import "../transaction-DZUW5RHu.js";
|
|
4
|
+
import "../marketplace.gen-ksUafDqS.js";
|
|
5
|
+
import { getNetwork, getPresentableChainName } from "../network-DtmiMhcg.js";
|
|
6
|
+
import "../types-B_-cnkcP.js";
|
|
7
|
+
import { MAIN_MODULE_ABI } from "../abi-fa-o9gH3.js";
|
|
8
|
+
import { EIP2981_ABI, SequenceMarketplaceV1_ABI, SequenceMarketplaceV2_ABI } from "../marketplace-NQB-sEQL.js";
|
|
9
|
+
import { ERC1155_SALES_CONTRACT_ABI_V0, ERC1155_SALES_CONTRACT_ABI_V1, ERC721_SALE_ABI_V0, ERC721_SALE_ABI_V1 } from "../primary-sale-1u4QlPdA.js";
|
|
10
|
+
import { ERC1155_ABI, ERC20_ABI, ERC721_ABI, SEQUENCE_1155_ITEMS_ABI } from "../token-Cv7l2ZaL.js";
|
|
11
|
+
import { calculateEarningsAfterFees, calculatePriceDifferencePercentage, cn, compareAddress, formatPrice, formatPriceWithFee, getMarketplaceDetails, truncateEnd, truncateMiddle } from "../utils-BfpDVibN.js";
|
|
12
|
+
import "../marketplace-logos-D4dS1Foy.js";
|
|
12
13
|
|
|
13
|
-
export { EIP2981_ABI, ERC1155_ABI, ERC1155_SALES_CONTRACT_ABI_V0, ERC1155_SALES_CONTRACT_ABI_V1, ERC20_ABI, ERC721_ABI, ERC721_SALE_ABI_V0, ERC721_SALE_ABI_V1, SEQUENCE_1155_ITEMS_ABI, SequenceMarketplaceV1_ABI, SequenceMarketplaceV2_ABI, calculateEarningsAfterFees, calculatePriceDifferencePercentage, cn, compareAddress, formatPrice, formatPriceWithFee, getMarketplaceDetails, getNetwork, getPresentableChainName, networkToWagmiChain, truncateEnd, truncateMiddle };
|
|
14
|
+
export { EIP2981_ABI, ERC1155_ABI, ERC1155_SALES_CONTRACT_ABI_V0, ERC1155_SALES_CONTRACT_ABI_V1, ERC20_ABI, ERC721_ABI, ERC721_SALE_ABI_V0, ERC721_SALE_ABI_V1, MAIN_MODULE_ABI, SEQUENCE_1155_ITEMS_ABI, SequenceMarketplaceV1_ABI, SequenceMarketplaceV2_ABI, calculateEarningsAfterFees, calculatePriceDifferencePercentage, cn, compareAddress, formatPrice, formatPriceWithFee, getMarketplaceDetails, getNetwork, getPresentableChainName, networkToWagmiChain, truncateEnd, truncateMiddle };
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { currencyKeys, getQueryClient } from "./api-BoO0V5aJ.js";
|
|
2
|
+
import { marketCurrenciesQueryOptions } from "./marketCurrencies-sKrTX0og.js";
|
|
3
|
+
import { queryOptions } from "@tanstack/react-query";
|
|
4
|
+
import { formatUnits } from "viem";
|
|
5
|
+
|
|
6
|
+
//#region src/react/queries/utils/convertPriceToUSD.ts
|
|
7
|
+
/**
|
|
8
|
+
* Converts a price amount from a specific currency to USD using exchange rates
|
|
9
|
+
*/
|
|
10
|
+
async function fetchConvertPriceToUSD(params) {
|
|
11
|
+
const { chainId, currencyAddress, amountRaw, config } = params;
|
|
12
|
+
const currencyDetails = (await getQueryClient().fetchQuery(marketCurrenciesQueryOptions({
|
|
13
|
+
chainId,
|
|
14
|
+
config
|
|
15
|
+
}))).find((c) => c.contractAddress.toLowerCase() === currencyAddress.toLowerCase());
|
|
16
|
+
if (!currencyDetails) throw new Error("Currency not found");
|
|
17
|
+
const usdAmount = Number(formatUnits(BigInt(amountRaw), currencyDetails.decimals)) * currencyDetails.exchangeRate;
|
|
18
|
+
return {
|
|
19
|
+
usdAmount,
|
|
20
|
+
usdAmountFormatted: usdAmount.toFixed(2)
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
function getConvertPriceToUSDQueryKey(params) {
|
|
24
|
+
const apiArgs = {
|
|
25
|
+
chainId: params.chainId,
|
|
26
|
+
currencyAddress: params.currencyAddress,
|
|
27
|
+
amountRaw: params.amountRaw
|
|
28
|
+
};
|
|
29
|
+
return [
|
|
30
|
+
...currencyKeys.conversion,
|
|
31
|
+
"usd",
|
|
32
|
+
apiArgs
|
|
33
|
+
];
|
|
34
|
+
}
|
|
35
|
+
function convertPriceToUSDQueryOptions(params) {
|
|
36
|
+
const enabled = Boolean(params.chainId && params.currencyAddress && params.amountRaw && params.config && (params.query?.enabled ?? true));
|
|
37
|
+
return queryOptions({
|
|
38
|
+
queryKey: getConvertPriceToUSDQueryKey(params),
|
|
39
|
+
queryFn: () => fetchConvertPriceToUSD({
|
|
40
|
+
chainId: params.chainId,
|
|
41
|
+
currencyAddress: params.currencyAddress,
|
|
42
|
+
amountRaw: params.amountRaw,
|
|
43
|
+
config: params.config
|
|
44
|
+
}),
|
|
45
|
+
...params.query,
|
|
46
|
+
enabled
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
//#endregion
|
|
51
|
+
//#region src/react/queries/utils/comparePrices.ts
|
|
52
|
+
/**
|
|
53
|
+
* Compares prices between different currencies by converting both to USD
|
|
54
|
+
*/
|
|
55
|
+
async function fetchComparePrices(params) {
|
|
56
|
+
const { chainId, priceAmountRaw, priceCurrencyAddress, compareToPriceAmountRaw, compareToPriceCurrencyAddress, config } = params;
|
|
57
|
+
const [priceUSD, compareToPriceUSD] = await Promise.all([fetchConvertPriceToUSD({
|
|
58
|
+
chainId,
|
|
59
|
+
currencyAddress: priceCurrencyAddress,
|
|
60
|
+
amountRaw: priceAmountRaw,
|
|
61
|
+
config
|
|
62
|
+
}), fetchConvertPriceToUSD({
|
|
63
|
+
chainId,
|
|
64
|
+
currencyAddress: compareToPriceCurrencyAddress,
|
|
65
|
+
amountRaw: compareToPriceAmountRaw,
|
|
66
|
+
config
|
|
67
|
+
})]);
|
|
68
|
+
const difference = priceUSD.usdAmount - compareToPriceUSD.usdAmount;
|
|
69
|
+
if (compareToPriceUSD.usdAmount === 0) throw new Error("Cannot compare to zero price");
|
|
70
|
+
const percentageDifference = difference / compareToPriceUSD.usdAmount * 100;
|
|
71
|
+
const isAbove = percentageDifference > 0;
|
|
72
|
+
const isSame = percentageDifference === 0;
|
|
73
|
+
return {
|
|
74
|
+
percentageDifference,
|
|
75
|
+
percentageDifferenceFormatted: Math.abs(percentageDifference).toFixed(2),
|
|
76
|
+
status: isAbove ? "above" : isSame ? "same" : "below"
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
function getComparePricesQueryKey(params) {
|
|
80
|
+
const apiArgs = {
|
|
81
|
+
chainId: params.chainId,
|
|
82
|
+
priceAmountRaw: params.priceAmountRaw,
|
|
83
|
+
priceCurrencyAddress: params.priceCurrencyAddress,
|
|
84
|
+
compareToPriceAmountRaw: params.compareToPriceAmountRaw,
|
|
85
|
+
compareToPriceCurrencyAddress: params.compareToPriceCurrencyAddress
|
|
86
|
+
};
|
|
87
|
+
return [
|
|
88
|
+
...currencyKeys.conversion,
|
|
89
|
+
"compare",
|
|
90
|
+
apiArgs
|
|
91
|
+
];
|
|
92
|
+
}
|
|
93
|
+
function comparePricesQueryOptions(params) {
|
|
94
|
+
const enabled = Boolean(params.chainId && params.priceAmountRaw && params.priceCurrencyAddress && params.compareToPriceAmountRaw && params.compareToPriceCurrencyAddress && params.config && (params.query?.enabled ?? true));
|
|
95
|
+
return queryOptions({
|
|
96
|
+
queryKey: getComparePricesQueryKey(params),
|
|
97
|
+
queryFn: () => fetchComparePrices({
|
|
98
|
+
chainId: params.chainId,
|
|
99
|
+
priceAmountRaw: params.priceAmountRaw,
|
|
100
|
+
priceCurrencyAddress: params.priceCurrencyAddress,
|
|
101
|
+
compareToPriceAmountRaw: params.compareToPriceAmountRaw,
|
|
102
|
+
compareToPriceCurrencyAddress: params.compareToPriceCurrencyAddress,
|
|
103
|
+
config: params.config
|
|
104
|
+
}),
|
|
105
|
+
...params.query,
|
|
106
|
+
enabled
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
//#endregion
|
|
111
|
+
export { comparePricesQueryOptions, convertPriceToUSDQueryOptions, fetchComparePrices, fetchConvertPriceToUSD, getComparePricesQueryKey, getConvertPriceToUSDQueryKey };
|
|
112
|
+
//# sourceMappingURL=utils-BCgNhBFR.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils-BCgNhBFR.js","names":[],"sources":["../src/react/queries/utils/convertPriceToUSD.ts","../src/react/queries/utils/comparePrices.ts"],"sourcesContent":["import { queryOptions } from '@tanstack/react-query';\nimport { type Address, formatUnits } from 'viem';\nimport type { SdkConfig } from '../../../types';\nimport {\n\ttype Currency,\n\tcurrencyKeys,\n\tgetQueryClient,\n\ttype ValuesOptional,\n} from '../../_internal';\nimport type { StandardQueryOptions } from '../../types/query';\nimport { marketCurrenciesQueryOptions } from '../market/marketCurrencies';\n\nexport interface FetchConvertPriceToUSDParams {\n\tchainId: number;\n\tcurrencyAddress: Address;\n\tamountRaw: string;\n\tconfig: SdkConfig;\n}\n\nexport interface ConvertPriceToUSDReturn {\n\tusdAmount: number;\n\tusdAmountFormatted: string;\n}\n\n/**\n * Converts a price amount from a specific currency to USD using exchange rates\n */\nexport async function fetchConvertPriceToUSD(\n\tparams: FetchConvertPriceToUSDParams,\n): Promise<ConvertPriceToUSDReturn> {\n\tconst { chainId, currencyAddress, amountRaw, config } = params;\n\n\tconst queryClient = getQueryClient();\n\tconst currencies = (await queryClient.fetchQuery(\n\t\tmarketCurrenciesQueryOptions({\n\t\t\tchainId,\n\t\t\tconfig,\n\t\t}),\n\t)) as Currency[];\n\n\tconst currencyDetails = currencies.find(\n\t\t(c: Currency) =>\n\t\t\tc.contractAddress.toLowerCase() === currencyAddress.toLowerCase(),\n\t);\n\n\tif (!currencyDetails) {\n\t\tthrow new Error('Currency not found');\n\t}\n\n\tconst amountDecimal = Number(\n\t\tformatUnits(BigInt(amountRaw), currencyDetails.decimals),\n\t);\n\tconst usdAmount = amountDecimal * currencyDetails.exchangeRate;\n\n\treturn {\n\t\tusdAmount,\n\t\tusdAmountFormatted: usdAmount.toFixed(2),\n\t};\n}\n\nexport type ConvertPriceToUSDQueryOptions =\n\tValuesOptional<FetchConvertPriceToUSDParams> & {\n\t\tquery?: StandardQueryOptions;\n\t};\n\nexport function getConvertPriceToUSDQueryKey(\n\tparams: ConvertPriceToUSDQueryOptions,\n) {\n\tconst apiArgs = {\n\t\tchainId: params.chainId!,\n\t\tcurrencyAddress: params.currencyAddress!,\n\t\tamountRaw: params.amountRaw!,\n\t};\n\n\treturn [...currencyKeys.conversion, 'usd', apiArgs] as const;\n}\n\nexport function convertPriceToUSDQueryOptions(\n\tparams: ConvertPriceToUSDQueryOptions,\n) {\n\tconst enabled = Boolean(\n\t\tparams.chainId &&\n\t\t\tparams.currencyAddress &&\n\t\t\tparams.amountRaw &&\n\t\t\tparams.config &&\n\t\t\t(params.query?.enabled ?? true),\n\t);\n\n\treturn queryOptions({\n\t\tqueryKey: getConvertPriceToUSDQueryKey(params),\n\t\tqueryFn: () =>\n\t\t\tfetchConvertPriceToUSD({\n\t\t\t\t// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined\n\t\t\t\tchainId: params.chainId!,\n\t\t\t\t// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined\n\t\t\t\tcurrencyAddress: params.currencyAddress!,\n\t\t\t\t// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined\n\t\t\t\tamountRaw: params.amountRaw!,\n\t\t\t\t// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined\n\t\t\t\tconfig: params.config!,\n\t\t\t}),\n\t\t...params.query,\n\t\tenabled,\n\t});\n}\n","import { queryOptions } from '@tanstack/react-query';\nimport type { Address } from 'viem';\nimport type { SdkConfig } from '../../../types';\nimport { currencyKeys, type ValuesOptional } from '../../_internal';\nimport type { StandardQueryOptions } from '../../types/query';\nimport { fetchConvertPriceToUSD } from './convertPriceToUSD';\n\nexport interface FetchComparePricesParams {\n\tchainId: number;\n\t// First price details\n\tpriceAmountRaw: string;\n\tpriceCurrencyAddress: Address;\n\t// Second price details (to compare against)\n\tcompareToPriceAmountRaw: string;\n\tcompareToPriceCurrencyAddress: Address;\n\tconfig: SdkConfig;\n}\n\nexport type ComparePricesReturn = {\n\tpercentageDifference: number;\n\tpercentageDifferenceFormatted: string;\n\tstatus: 'above' | 'same' | 'below';\n};\n\n/**\n * Compares prices between different currencies by converting both to USD\n */\nexport async function fetchComparePrices(\n\tparams: FetchComparePricesParams,\n): Promise<ComparePricesReturn> {\n\tconst {\n\t\tchainId,\n\t\tpriceAmountRaw,\n\t\tpriceCurrencyAddress,\n\t\tcompareToPriceAmountRaw,\n\t\tcompareToPriceCurrencyAddress,\n\t\tconfig,\n\t} = params;\n\n\tconst [priceUSD, compareToPriceUSD] = await Promise.all([\n\t\tfetchConvertPriceToUSD({\n\t\t\tchainId,\n\t\t\tcurrencyAddress: priceCurrencyAddress,\n\t\t\tamountRaw: priceAmountRaw,\n\t\t\tconfig,\n\t\t}),\n\t\tfetchConvertPriceToUSD({\n\t\t\tchainId,\n\t\t\tcurrencyAddress: compareToPriceCurrencyAddress,\n\t\t\tamountRaw: compareToPriceAmountRaw,\n\t\t\tconfig,\n\t\t}),\n\t]);\n\n\tconst difference = priceUSD.usdAmount - compareToPriceUSD.usdAmount;\n\n\tif (compareToPriceUSD.usdAmount === 0) {\n\t\tthrow new Error('Cannot compare to zero price');\n\t}\n\n\tconst percentageDifference = (difference / compareToPriceUSD.usdAmount) * 100;\n\tconst isAbove = percentageDifference > 0;\n\tconst isSame = percentageDifference === 0;\n\n\treturn {\n\t\tpercentageDifference,\n\t\tpercentageDifferenceFormatted: Math.abs(percentageDifference).toFixed(2),\n\t\tstatus: isAbove ? 'above' : isSame ? 'same' : 'below',\n\t};\n}\n\nexport type ComparePricesQueryOptions =\n\tValuesOptional<FetchComparePricesParams> & {\n\t\tquery?: StandardQueryOptions;\n\t};\n\nexport function getComparePricesQueryKey(params: ComparePricesQueryOptions) {\n\tconst apiArgs = {\n\t\tchainId: params.chainId!,\n\t\tpriceAmountRaw: params.priceAmountRaw!,\n\t\tpriceCurrencyAddress: params.priceCurrencyAddress!,\n\t\tcompareToPriceAmountRaw: params.compareToPriceAmountRaw!,\n\t\tcompareToPriceCurrencyAddress: params.compareToPriceCurrencyAddress!,\n\t};\n\n\treturn [...currencyKeys.conversion, 'compare', apiArgs] as const;\n}\n\nexport function comparePricesQueryOptions(params: ComparePricesQueryOptions) {\n\tconst enabled = Boolean(\n\t\tparams.chainId &&\n\t\t\tparams.priceAmountRaw &&\n\t\t\tparams.priceCurrencyAddress &&\n\t\t\tparams.compareToPriceAmountRaw &&\n\t\t\tparams.compareToPriceCurrencyAddress &&\n\t\t\tparams.config &&\n\t\t\t(params.query?.enabled ?? true),\n\t);\n\n\treturn queryOptions({\n\t\tqueryKey: getComparePricesQueryKey(params),\n\t\tqueryFn: () =>\n\t\t\tfetchComparePrices({\n\t\t\t\t// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined\n\t\t\t\tchainId: params.chainId!,\n\t\t\t\t// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined\n\t\t\t\tpriceAmountRaw: params.priceAmountRaw!,\n\t\t\t\t// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined\n\t\t\t\tpriceCurrencyAddress: params.priceCurrencyAddress!,\n\t\t\t\t// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined\n\t\t\t\tcompareToPriceAmountRaw: params.compareToPriceAmountRaw!,\n\t\t\t\t// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined\n\t\t\t\tcompareToPriceCurrencyAddress: params.compareToPriceCurrencyAddress!,\n\t\t\t\t// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined\n\t\t\t\tconfig: params.config!,\n\t\t\t}),\n\t\t...params.query,\n\t\tenabled,\n\t});\n}\n"],"mappings":";;;;;;;;;AA2BA,eAAsB,uBACrB,QACmC;CACnC,MAAM,EAAE,SAAS,iBAAiB,WAAW,WAAW;CAUxD,MAAM,mBAPc,MADA,gBAAgB,CACE,WACrC,6BAA6B;EAC5B;EACA;EACA,CAAC,CACF,EAEkC,MACjC,MACA,EAAE,gBAAgB,aAAa,KAAK,gBAAgB,aAAa,CAClE;AAED,KAAI,CAAC,gBACJ,OAAM,IAAI,MAAM,qBAAqB;CAMtC,MAAM,YAHgB,OACrB,YAAY,OAAO,UAAU,EAAE,gBAAgB,SAAS,CACxD,GACiC,gBAAgB;AAElD,QAAO;EACN;EACA,oBAAoB,UAAU,QAAQ,EAAE;EACxC;;AAQF,SAAgB,6BACf,QACC;CACD,MAAM,UAAU;EACf,SAAS,OAAO;EAChB,iBAAiB,OAAO;EACxB,WAAW,OAAO;EAClB;AAED,QAAO;EAAC,GAAG,aAAa;EAAY;EAAO;EAAQ;;AAGpD,SAAgB,8BACf,QACC;CACD,MAAM,UAAU,QACf,OAAO,WACN,OAAO,mBACP,OAAO,aACP,OAAO,WACN,OAAO,OAAO,WAAW,MAC3B;AAED,QAAO,aAAa;EACnB,UAAU,6BAA6B,OAAO;EAC9C,eACC,uBAAuB;GAEtB,SAAS,OAAO;GAEhB,iBAAiB,OAAO;GAExB,WAAW,OAAO;GAElB,QAAQ,OAAO;GACf,CAAC;EACH,GAAG,OAAO;EACV;EACA,CAAC;;;;;;;;AC5EH,eAAsB,mBACrB,QAC+B;CAC/B,MAAM,EACL,SACA,gBACA,sBACA,yBACA,+BACA,WACG;CAEJ,MAAM,CAAC,UAAU,qBAAqB,MAAM,QAAQ,IAAI,CACvD,uBAAuB;EACtB;EACA,iBAAiB;EACjB,WAAW;EACX;EACA,CAAC,EACF,uBAAuB;EACtB;EACA,iBAAiB;EACjB,WAAW;EACX;EACA,CAAC,CACF,CAAC;CAEF,MAAM,aAAa,SAAS,YAAY,kBAAkB;AAE1D,KAAI,kBAAkB,cAAc,EACnC,OAAM,IAAI,MAAM,+BAA+B;CAGhD,MAAM,uBAAwB,aAAa,kBAAkB,YAAa;CAC1E,MAAM,UAAU,uBAAuB;CACvC,MAAM,SAAS,yBAAyB;AAExC,QAAO;EACN;EACA,+BAA+B,KAAK,IAAI,qBAAqB,CAAC,QAAQ,EAAE;EACxE,QAAQ,UAAU,UAAU,SAAS,SAAS;EAC9C;;AAQF,SAAgB,yBAAyB,QAAmC;CAC3E,MAAM,UAAU;EACf,SAAS,OAAO;EAChB,gBAAgB,OAAO;EACvB,sBAAsB,OAAO;EAC7B,yBAAyB,OAAO;EAChC,+BAA+B,OAAO;EACtC;AAED,QAAO;EAAC,GAAG,aAAa;EAAY;EAAW;EAAQ;;AAGxD,SAAgB,0BAA0B,QAAmC;CAC5E,MAAM,UAAU,QACf,OAAO,WACN,OAAO,kBACP,OAAO,wBACP,OAAO,2BACP,OAAO,iCACP,OAAO,WACN,OAAO,OAAO,WAAW,MAC3B;AAED,QAAO,aAAa;EACnB,UAAU,yBAAyB,OAAO;EAC1C,eACC,mBAAmB;GAElB,SAAS,OAAO;GAEhB,gBAAgB,OAAO;GAEvB,sBAAsB,OAAO;GAE7B,yBAAyB,OAAO;GAEhC,+BAA+B,OAAO;GAEtC,QAAQ,OAAO;GACf,CAAC;EACH,GAAG,OAAO;EACV;EACA,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { MarketplaceKind } from "./marketplace.gen-
|
|
2
|
-
import { AlienSwapLogo, BlurLogo, LooksRareLogo, MagicEdenLogo, MintifyLogo, OpenSeaLogo, SequenceLogo, X2y2Logo } from "./marketplace-logos-
|
|
1
|
+
import { MarketplaceKind } from "./marketplace.gen-ksUafDqS.js";
|
|
2
|
+
import { AlienSwapLogo, BlurLogo, LooksRareLogo, MagicEdenLogo, MintifyLogo, OpenSeaLogo, SequenceLogo, X2y2Logo } from "./marketplace-logos-D4dS1Foy.js";
|
|
3
3
|
import { clsx } from "clsx";
|
|
4
4
|
import { twMerge } from "tailwind-merge";
|
|
5
5
|
import * as dn from "dnum";
|
|
@@ -85,24 +85,10 @@ function getMarketplaceDetails({ originName, kind }) {
|
|
|
85
85
|
if (KIND_TO_MARKETPLACE[kind]) return MARKETPLACES[KIND_TO_MARKETPLACE[kind]];
|
|
86
86
|
}
|
|
87
87
|
function getRootDomain(url) {
|
|
88
|
-
const
|
|
89
|
-
const parts = domain.split(".");
|
|
88
|
+
const parts = url.replace(/^(https?:\/\/)?(www\.)?/, "").split(".");
|
|
90
89
|
return parts[parts.length - 2] || parts[0];
|
|
91
90
|
}
|
|
92
91
|
|
|
93
|
-
//#endregion
|
|
94
|
-
//#region src/utils/networkconfigToWagmiChain.ts
|
|
95
|
-
const networkToWagmiChain = (network) => ({
|
|
96
|
-
...network,
|
|
97
|
-
id: Number(network.chainId),
|
|
98
|
-
name: network.name,
|
|
99
|
-
nativeCurrency: { ...network.nativeToken },
|
|
100
|
-
rpcUrls: {
|
|
101
|
-
default: { http: [network.rpcUrl] },
|
|
102
|
-
public: { http: [network.rpcUrl] }
|
|
103
|
-
}
|
|
104
|
-
});
|
|
105
|
-
|
|
106
92
|
//#endregion
|
|
107
93
|
//#region src/utils/price.ts
|
|
108
94
|
/**
|
|
@@ -121,9 +107,7 @@ const networkToWagmiChain = (network) => ({
|
|
|
121
107
|
const calculatePriceDifferencePercentage = ({ inputPriceRaw, basePriceRaw, decimals }) => {
|
|
122
108
|
const inputPrice = Number(formatUnits(inputPriceRaw, decimals));
|
|
123
109
|
const basePrice = Number(formatUnits(basePriceRaw, decimals));
|
|
124
|
-
|
|
125
|
-
const percentageDifference = difference / basePrice * 100;
|
|
126
|
-
return percentageDifference.toFixed(2);
|
|
110
|
+
return ((inputPrice - basePrice) / basePrice * 100).toFixed(2);
|
|
127
111
|
};
|
|
128
112
|
/**
|
|
129
113
|
* Formats a raw price amount with the specified number of decimal places
|
|
@@ -136,8 +120,7 @@ const calculatePriceDifferencePercentage = ({ inputPriceRaw, basePriceRaw, decim
|
|
|
136
120
|
* ```
|
|
137
121
|
*/
|
|
138
122
|
const formatPrice = (amount, decimals) => {
|
|
139
|
-
|
|
140
|
-
return formattedUnits.toLocaleString("en-US", {
|
|
123
|
+
return Number(formatUnits(amount, decimals)).toLocaleString("en-US", {
|
|
141
124
|
minimumFractionDigits: 0,
|
|
142
125
|
maximumFractionDigits: decimals
|
|
143
126
|
});
|
|
@@ -205,5 +188,5 @@ const formatPriceWithFee = (amount, decimals, feePercentage) => {
|
|
|
205
188
|
};
|
|
206
189
|
|
|
207
190
|
//#endregion
|
|
208
|
-
export { calculateEarningsAfterFees, calculatePriceDifferencePercentage, cn, compareAddress, formatPrice, formatPriceWithFee, getMarketplaceDetails,
|
|
209
|
-
//# sourceMappingURL=utils-
|
|
191
|
+
export { calculateEarningsAfterFees, calculatePriceDifferencePercentage, cn, compareAddress, formatPrice, formatPriceWithFee, getMarketplaceDetails, truncateEnd, truncateMiddle };
|
|
192
|
+
//# sourceMappingURL=utils-BfpDVibN.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils-BfpDVibN.js","names":["MARKETPLACES: Record<string, Marketplace>","KIND_TO_MARKETPLACE: Partial<\n\tRecord<MarketplaceKind, keyof typeof MARKETPLACES>\n>"],"sources":["../src/utils/address.ts","../src/utils/cn.ts","../src/utils/getMarketplaceDetails.ts","../src/utils/price.ts"],"sourcesContent":["export const truncateMiddle = (\n\taddress: string,\n\tminPrefix = 20,\n\tminSuffix = 3,\n): string => {\n\tif (minPrefix + minSuffix >= 40) {\n\t\treturn address;\n\t}\n\treturn `${address.substring(0, 2 + minPrefix)}…${address.substring(address.length - minSuffix)}`;\n};\n\nexport const truncateEnd = (text: string | undefined, truncateAt: number) => {\n\tif (!text) return '';\n\n\tlet finalText = text;\n\n\tif (text.length >= truncateAt) {\n\t\tfinalText = `${text.slice(0, truncateAt)}...`;\n\t}\n\n\treturn finalText;\n};\n\nexport const compareAddress = (a = '', b = '') => {\n\treturn a.toLowerCase() === b.toLowerCase();\n};\n","import { type ClassValue, clsx } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n\treturn twMerge(clsx(inputs));\n}\n","import type { Image } from '@0xsequence/design-system';\nimport type { ComponentType } from 'react';\nimport {\n\tAlienSwapLogo,\n\tBlurLogo,\n\tLooksRareLogo,\n\tMagicEdenLogo,\n\tMintifyLogo,\n\tOpenSeaLogo,\n\tSequenceLogo,\n\tX2y2Logo,\n} from '../react/ui/components/marketplace-logos';\nimport { MarketplaceKind } from '../types';\n\ninterface Marketplace {\n\tlogo: ComponentType<React.ComponentProps<typeof Image>>;\n\tdisplayName: string;\n}\n\nconst MARKETPLACES: Record<string, Marketplace> = {\n\tsequence: {\n\t\tlogo: SequenceLogo,\n\t\tdisplayName: 'Sequence',\n\t},\n\topensea: {\n\t\tlogo: OpenSeaLogo,\n\t\tdisplayName: 'OpenSea',\n\t},\n\tmagiceden: {\n\t\tlogo: MagicEdenLogo,\n\t\tdisplayName: 'Magic Eden',\n\t},\n\tmintify: {\n\t\tlogo: MintifyLogo,\n\t\tdisplayName: 'Mintify',\n\t},\n\tlooksrare: {\n\t\tlogo: LooksRareLogo,\n\t\tdisplayName: 'Looks Rare',\n\t},\n\tx2y2: {\n\t\tlogo: X2y2Logo,\n\t\tdisplayName: 'X2Y2',\n\t},\n\tblur: {\n\t\tlogo: BlurLogo,\n\t\tdisplayName: 'Blur',\n\t},\n\talienswap: {\n\t\tlogo: AlienSwapLogo,\n\t\tdisplayName: 'AlienSwap',\n\t},\n} as const;\n\nconst KIND_TO_MARKETPLACE: Partial<\n\tRecord<MarketplaceKind, keyof typeof MARKETPLACES>\n> = {\n\t[MarketplaceKind.sequence_marketplace_v1]: 'sequence',\n\t[MarketplaceKind.sequence_marketplace_v2]: 'sequence',\n\t[MarketplaceKind.opensea]: 'opensea',\n\t[MarketplaceKind.mintify]: 'mintify',\n\t[MarketplaceKind.looks_rare]: 'looksrare',\n\t[MarketplaceKind.x2y2]: 'x2y2',\n\t[MarketplaceKind.blur]: 'blur',\n\t[MarketplaceKind.magic_eden]: 'magiceden',\n};\n\ntype MarketplaceDetailsProp = {\n\toriginName: string;\n\tkind: MarketplaceKind;\n};\n\n// TODO: add support for more marketplaces and improve detection of marketplace\nexport function getMarketplaceDetails({\n\toriginName,\n\tkind,\n}: MarketplaceDetailsProp) {\n\tif (\n\t\tkind === MarketplaceKind.sequence_marketplace_v1 ||\n\t\tkind === MarketplaceKind.sequence_marketplace_v2\n\t) {\n\t\treturn MARKETPLACES.sequence;\n\t}\n\n\tlet name = originName.toLowerCase();\n\n\ttry {\n\t\t//Check if the name can be parsed as a url\n\t\tnew URL(name);\n\t\t// if it can we are naively trying to extract the root domain\n\t\tname = getRootDomain(name) || name;\n\t} catch {}\n\n\tname = name.replace(/ /g, '');\n\n\tconst details = MARKETPLACES[name];\n\n\tif (details) {\n\t\treturn details;\n\t}\n\n\tif (KIND_TO_MARKETPLACE[kind]) {\n\t\treturn MARKETPLACES[KIND_TO_MARKETPLACE[kind]];\n\t}\n}\n\nfunction getRootDomain(url: string) {\n\tconst domain = url.replace(/^(https?:\\/\\/)?(www\\.)?/, '');\n\tconst parts = domain.split('.');\n\treturn parts[parts.length - 2] || parts[0];\n}\n","import * as dn from 'dnum';\nimport { formatUnits } from 'viem';\n\ntype CalculatePriceDifferencePercentageArgs = {\n\tinputPriceRaw: bigint;\n\tbasePriceRaw: bigint;\n\tdecimals: number;\n};\n\n/**\n * Calculates the percentage difference between two prices\n * @param args - Object containing input price, base price, and decimals\n * @returns The percentage difference as a string with 2 decimal places\n * @example\n * ```ts\n * const diff = calculatePriceDifferencePercentage({\n * inputPriceRaw: 1000000n,\n * basePriceRaw: 900000n,\n * decimals: 6\n * }); // Returns \"11.11\"\n * ```\n */\nexport const calculatePriceDifferencePercentage = ({\n\tinputPriceRaw,\n\tbasePriceRaw,\n\tdecimals,\n}: CalculatePriceDifferencePercentageArgs) => {\n\tconst inputPrice = Number(formatUnits(inputPriceRaw, decimals));\n\tconst basePrice = Number(formatUnits(basePriceRaw, decimals));\n\tconst difference = inputPrice - basePrice;\n\tconst percentageDifference = (difference / basePrice) * 100;\n\n\treturn percentageDifference.toFixed(2);\n};\n\n/**\n * Formats a raw price amount with the specified number of decimal places\n * @param amount - The raw price amount as a bigint\n * @param decimals - Number of decimal places to format to\n * @returns Formatted price string with proper decimal and thousands separators\n * @example\n * ```ts\n * const formatted = formatPrice(1000000n, 6); // Returns \"1.000000\"\n * ```\n */\nexport const formatPrice = (amount: bigint, decimals: number): string => {\n\tconst formattedUnits = Number(formatUnits(amount, decimals));\n\treturn formattedUnits.toLocaleString('en-US', {\n\t\tminimumFractionDigits: 0,\n\t\tmaximumFractionDigits: decimals,\n\t});\n};\n\n/**\n * Calculates the final earnings amount after applying multiple fee percentages\n * @param amount - The raw amount as a bigint (e.g., from a blockchain transaction)\n * @param decimals - The number of decimal places for the currency (e.g., 18 for ETH, 6 for USDC)\n * @param fees - Array of fee percentages to apply (e.g., [2.5, 1.0] for 2.5% and 1% fees)\n * @returns Formatted string representing the final earnings after all fees are applied\n * @throws Will return '0' if there's an error in calculation\n * @example\n * ```ts\n * const earnings = calculateEarningsAfterFees(\n * 1000000000000000000n, // 1 ETH\n * 18, // ETH decimals\n * [2.5, 1.0] // 2.5% and 1% fees\n * ); // Returns \"0.96525\" (1 ETH after 2.5% and 1% fees)\n * ```\n */\nexport const calculateEarningsAfterFees = (\n\tamount: bigint,\n\tdecimals: number,\n\tfees: number[],\n): string => {\n\ttry {\n\t\tconst decimalAmount = Number(formatUnits(amount, decimals));\n\t\tlet earnings = dn.from(decimalAmount.toString(), decimals);\n\n\t\tfor (const fee of fees) {\n\t\t\tif (fee > 0) {\n\t\t\t\tconst feeMultiplier = dn.from((1 - fee / 100).toString(), decimals);\n\t\t\t\tearnings = dn.multiply(earnings, feeMultiplier);\n\t\t\t}\n\t\t}\n\n\t\treturn dn.format(earnings, {\n\t\t\tdigits: decimals,\n\t\t\ttrailingZeros: false,\n\t\t\tlocale: 'en-US',\n\t\t});\n\t} catch (error) {\n\t\tconsole.error('Error calculating earnings after fees:', error);\n\t\treturn '0';\n\t}\n};\n\n/**\n * Formats a price amount with fee applied\n * @param amount - The raw price amount as a bigint\n * @param decimals - Number of decimal places for the currency\n * @param feePercentage - Fee percentage to apply (e.g., 3.5 for 3.5%)\n * @returns Formatted price string with fee applied and proper decimal/thousands separators\n * @example\n * ```ts\n * const priceWithFee = formatPriceWithFee(1000000n, 6, 3.5); // Returns \"1.035\"\n * ```\n */\nexport const formatPriceWithFee = (\n\tamount: bigint,\n\tdecimals: number,\n\tfeePercentage: number,\n): string => {\n\ttry {\n\t\tconst decimalAmount = Number(formatUnits(amount, decimals));\n\t\tconst price = dn.from(decimalAmount.toString(), decimals);\n\t\tconst feeMultiplier = dn.from(\n\t\t\t(1 + feePercentage / 100).toString(),\n\t\t\tdecimals,\n\t\t);\n\t\tconst totalPrice = dn.multiply(price, feeMultiplier);\n\n\t\treturn dn.format(totalPrice, {\n\t\t\tdigits: decimals,\n\t\t\ttrailingZeros: false,\n\t\t\tlocale: 'en-US',\n\t\t});\n\t} catch (error) {\n\t\tconsole.error('Error formatting price with fee:', error);\n\t\treturn '0';\n\t}\n};\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ContractType } from "./marketplace.gen-
|
|
1
|
+
import { ContractType } from "./marketplace.gen-ksUafDqS.js";
|
|
2
2
|
import { formatUnits } from "viem";
|
|
3
3
|
|
|
4
4
|
//#region src/react/ui/components/marketplace-collectible-card/utils/formatPrice.ts
|
|
@@ -40,4 +40,4 @@ const getSupplyStatusText = ({ quantityRemaining, collectionType, unlimitedSuppl
|
|
|
40
40
|
|
|
41
41
|
//#endregion
|
|
42
42
|
export { OVERFLOW_PRICE, UNDERFLOW_PRICE, formatPriceNumber, getSupplyStatusText };
|
|
43
|
-
//# sourceMappingURL=utils-
|
|
43
|
+
//# sourceMappingURL=utils-BqxcalL2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils-BqxcalL2.js","names":[],"sources":["../src/react/ui/components/marketplace-collectible-card/utils/formatPrice.ts","../src/react/ui/components/marketplace-collectible-card/utils/supplyStatus.ts"],"sourcesContent":["import { formatUnits } from 'viem';\n\nexport const OVERFLOW_PRICE = 100000000;\nexport const UNDERFLOW_PRICE = 0.0001;\n\nexport const formatPriceNumber = (\n\tamount: string,\n\tdecimals: number,\n): {\n\tformattedNumber: string;\n\tisUnderflow: boolean;\n\tisOverflow: boolean;\n} => {\n\tconst formattedPrice = formatUnits(BigInt(amount), decimals);\n\tconst numericPrice = Number.parseFloat(formattedPrice);\n\n\tif (numericPrice < UNDERFLOW_PRICE) {\n\t\treturn {\n\t\t\tformattedNumber: UNDERFLOW_PRICE.toString(),\n\t\t\tisUnderflow: true,\n\t\t\tisOverflow: false,\n\t\t};\n\t}\n\n\tif (numericPrice > OVERFLOW_PRICE) {\n\t\treturn {\n\t\t\tformattedNumber: OVERFLOW_PRICE.toLocaleString('en-US', {\n\t\t\t\tmaximumFractionDigits: 2,\n\t\t\t}),\n\t\t\tisUnderflow: false,\n\t\t\tisOverflow: true,\n\t\t};\n\t}\n\n\tconst maxDecimals = numericPrice < 0.01 ? 6 : 4;\n\n\treturn {\n\t\tformattedNumber: numericPrice.toLocaleString('en-US', {\n\t\t\tminimumFractionDigits: 0,\n\t\t\tmaximumFractionDigits: maxDecimals,\n\t\t}),\n\t\tisUnderflow: false,\n\t\tisOverflow: false,\n\t};\n};\n","import { ContractType } from '../../../../_internal';\n\nexport const getSupplyStatusText = ({\n\tquantityRemaining,\n\tcollectionType,\n\tunlimitedSupply,\n}: {\n\tquantityRemaining: string | undefined;\n\tcollectionType: ContractType;\n\tunlimitedSupply?: boolean;\n}): string => {\n\tif (unlimitedSupply) {\n\t\treturn 'Unlimited Supply';\n\t}\n\n\tif (\n\t\tcollectionType === ContractType.ERC721 &&\n\t\tquantityRemaining === undefined\n\t) {\n\t\treturn 'Out of stock';\n\t}\n\n\tif (\n\t\tcollectionType === ContractType.ERC1155 &&\n\t\t!unlimitedSupply &&\n\t\tquantityRemaining === '0'\n\t) {\n\t\treturn 'Out of stock';\n\t}\n\n\tif (quantityRemaining && Number(quantityRemaining) > 0) {\n\t\treturn `Supply: ${quantityRemaining}`;\n\t}\n\n\treturn 'Out of stock';\n};\n"],"mappings":";;;;AAEA,MAAa,iBAAiB;AAC9B,MAAa,kBAAkB;AAE/B,MAAa,qBACZ,QACA,aAKI;CACJ,MAAM,iBAAiB,YAAY,OAAO,OAAO,EAAE,SAAS;CAC5D,MAAM,eAAe,OAAO,WAAW,eAAe;AAEtD,KAAI,eAAe,gBAClB,QAAO;EACN,iBAAiB,gBAAgB,UAAU;EAC3C,aAAa;EACb,YAAY;EACZ;AAGF,KAAI,eAAe,eAClB,QAAO;EACN,iBAAiB,eAAe,eAAe,SAAS,EACvD,uBAAuB,GACvB,CAAC;EACF,aAAa;EACb,YAAY;EACZ;CAGF,MAAM,cAAc,eAAe,MAAO,IAAI;AAE9C,QAAO;EACN,iBAAiB,aAAa,eAAe,SAAS;GACrD,uBAAuB;GACvB,uBAAuB;GACvB,CAAC;EACF,aAAa;EACb,YAAY;EACZ;;;;;ACzCF,MAAa,uBAAuB,EACnC,mBACA,gBACA,sBAKa;AACb,KAAI,gBACH,QAAO;AAGR,KACC,mBAAmB,aAAa,UAChC,sBAAsB,OAEtB,QAAO;AAGR,KACC,mBAAmB,aAAa,WAChC,CAAC,mBACD,sBAAsB,IAEtB,QAAO;AAGR,KAAI,qBAAqB,OAAO,kBAAkB,GAAG,EACpD,QAAO,WAAW;AAGnB,QAAO"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { getIndexerClient } from "./api-BoO0V5aJ.js";
|
|
2
|
+
import { TransactionReceiptNotFoundError } from "viem";
|
|
3
|
+
|
|
4
|
+
//#region src/react/utils/waitForTransactionReceipt.ts
|
|
5
|
+
const MAX_RETRIES = 3;
|
|
6
|
+
const MAX_BLOCK_WAIT = 30;
|
|
7
|
+
const waitForTransactionReceipt = async ({ txHash, chainId, sdkConfig, maxBlockWait = MAX_BLOCK_WAIT }) => {
|
|
8
|
+
const indexer = getIndexerClient(chainId, sdkConfig);
|
|
9
|
+
let retries = 0;
|
|
10
|
+
while (retries < MAX_RETRIES) try {
|
|
11
|
+
return (await indexer.fetchTransactionReceipt({
|
|
12
|
+
txnHash: txHash,
|
|
13
|
+
maxBlockWait
|
|
14
|
+
})).receipt;
|
|
15
|
+
} catch (error) {
|
|
16
|
+
retries++;
|
|
17
|
+
console.error(`Failed to fetch transaction receipt (attempt ${retries}/${MAX_RETRIES}):`, error);
|
|
18
|
+
if (retries >= MAX_RETRIES) throw TransactionReceiptNotFoundError;
|
|
19
|
+
}
|
|
20
|
+
throw TransactionReceiptNotFoundError;
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
//#endregion
|
|
24
|
+
export { waitForTransactionReceipt };
|
|
25
|
+
//# sourceMappingURL=waitForTransactionReceipt-DieAnV52.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"waitForTransactionReceipt-DieAnV52.js","names":[],"sources":["../src/react/utils/waitForTransactionReceipt.ts"],"sourcesContent":["import type { TransactionReceipt } from '@0xsequence/indexer';\nimport { type Hex, TransactionReceiptNotFoundError } from 'viem';\nimport type { SdkConfig } from '../../types';\nimport { getIndexerClient } from '../_internal/api';\n\nconst MAX_RETRIES = 3;\nconst MAX_BLOCK_WAIT = 30;\n\nexport const waitForTransactionReceipt = async ({\n\ttxHash,\n\tchainId,\n\tsdkConfig,\n\tmaxBlockWait = MAX_BLOCK_WAIT,\n}: {\n\ttxHash: Hex;\n\tchainId: number;\n\tsdkConfig: SdkConfig;\n\tmaxBlockWait?: number;\n}): Promise<TransactionReceipt> => {\n\tconst indexer = getIndexerClient(chainId, sdkConfig);\n\tlet retries = 0;\n\n\twhile (retries < MAX_RETRIES) {\n\t\ttry {\n\t\t\tconst result = await indexer.fetchTransactionReceipt({\n\t\t\t\ttxnHash: txHash,\n\t\t\t\tmaxBlockWait,\n\t\t\t});\n\t\t\treturn result.receipt;\n\t\t} catch (error) {\n\t\t\tretries++;\n\t\t\tconsole.error(\n\t\t\t\t`Failed to fetch transaction receipt (attempt ${retries}/${MAX_RETRIES}):`,\n\t\t\t\terror,\n\t\t\t);\n\t\t\tif (retries >= MAX_RETRIES) {\n\t\t\t\tthrow TransactionReceiptNotFoundError;\n\t\t\t}\n\t\t}\n\t}\n\n\tthrow TransactionReceiptNotFoundError;\n};\n"],"mappings":";;;;AAKA,MAAM,cAAc;AACpB,MAAM,iBAAiB;AAEvB,MAAa,4BAA4B,OAAO,EAC/C,QACA,SACA,WACA,eAAe,qBAMmB;CAClC,MAAM,UAAU,iBAAiB,SAAS,UAAU;CACpD,IAAI,UAAU;AAEd,QAAO,UAAU,YAChB,KAAI;AAKH,UAJe,MAAM,QAAQ,wBAAwB;GACpD,SAAS;GACT;GACA,CAAC,EACY;UACN,OAAO;AACf;AACA,UAAQ,MACP,gDAAgD,QAAQ,GAAG,YAAY,KACvE,MACA;AACD,MAAI,WAAW,YACd,OAAM;;AAKT,OAAM"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"x2y2-CQdg24VP.js","names":[],"sources":["../src/react/ui/images/marketplaces/x2y2.png"],"sourcesContent":["\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAACXBIWXMAACxLAAAsSwGlPZapAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAE9/SURBVHgB3X0HnBzFlXdVdZieuDOzebW7WuWIkJBARCMZjAGDwZyFM584n4UT3NnnwN1nn5ffBeOID3z2wZ2N4xlLZ5NsgknCILCQhEAJobDanMPkzlXfq56wM7Mzs7sCAfoejHamu7qquurVC/9XAaP/j+ju3f2eV8dc1SYVG0RG5xwfNVuDblKf1FltX8SqqlZIiGAWtCwkGQYTbZsJmDJGEGIyRpYkYNMtosRwxB6t9pGYTyTjtoWGqz24B5l2jxIQBtYtqB/9+Lk4hv4/IYxOU/r+Cz3u46qvbtxgLQmNzhtMosWmYbdZFNXbFgsxhhRqIQV62MVsLEIfi8RmImJIxAxhTOHdKYO/jDcCg98M8QsU25QyQ8TIZjYzIR9LQkhDjGkSwVG3QIZ9EurxiqjD7cIn/B6hq6FK7b/1+gVRdBrSacMAm59hyriZCqum2aRqrCVpWfNtGzVTihqh3+otEzUwyqqh0/xwzcWczoUHGf8wJPA/ltPHzksTlr4HTOHcRxTl/go8AaRjPC1Lp4UPSApmihgngCEmBMYGGcPDwFEDwCx9oog7/C7c7VXkvhAbGf3ul89MotOA3rkMAK27Zc8esal6rbB9f9ynUlxHKJuPkLXSstnZqkFXp0zcYNnUw3in8c6Cv9BJTqc5H8qcTsYs8zeTBmc7HGUZIH2NP4Po5POI5j3n/E5fY3aakUB1cGbR3SIeccv4kEsUXpYYetnFrMNEYEMLkCdxcPmEtXXTchNjJ4d3HL1jGYABA9y8Y7TRYsriY3H7E/0Je33KQK2mTf3I6eh0p5FsZ7NM52ZGOKJZBsh0XikGyOvcAgagmYYpYoB8xphkCi4pkMMU/DdIAxUYYiDsF15pCAq/BLVxYJ6o9dxyyyIdvQPpHccAvOM/uyN+4d4ovWpcYxeoFltgWcwHSlyETpMxt9lyHZbuLJTHANkOxzRPAtD04KvEACQjJRAtZIbpGCBbRlaFcKMSfnObQoNPQnGhHo9EXqxySw8sWkR3oK6fG+3t7RS9Q+gdwwCffznZpOr2vFcn8IYJg55vWXQxtVkdDKyAI24znYTzOgllOx0Vde5MGYBfs/MYCRV29hQGoKhITbA8NYMm60NZTgIJBCcIo6NQ/yMBj7B3YaPrGUlmR483t3Ztux7b6G2mt50BNr+UaPjLKFviEugqgZCVMZVujJtsHrKpmDG+So/uCgyQL8qnY4CsEVjMANnnWFa15DFAOg3L2QRpIxPnjMjiNNyYJOBduCU06HMLfwaJ9iqzrZ3NDUrnf7bP60RvI4nobSYLs6WEsE+M6WiDZtvzGYwJCVqf4Myo4iw6G/OJ5f5B2ccnqXRmxaOAZpiOdz610xckp0Lpx7P5grsI9zMqhKT7P8eA2bwhIX8ULgopjc1JJO2PyAJ+l8ctrIMSfgt3OtHbSG+LBNi8dyI4mBBXxyneDAbeDeDOYcegQ5Oie6p+zxfNhZY9mmIEZkfn5Gh0XrZIAlD+sWlavWQkgADPKgKJQdqYS0Qxn4toImXDwzE7CfiCKYFzydNoOiI1fuL2icxv2SgwEbe8gDf4gSECzEJeUGECtZjjlWQlGXcvs/VlGekR9AoPBqvIvc0h4S//9n/nD6G3mN5yBti8V92wL2ZtGFTZRovixSDqG1ApK/xkGYAVumz5ujzn2zteBLYljFJBGR0FqdMtEdTnImRUtaw+L0LjqkUj0JkpnywbArPNgRi1AUFkMmTjAhAgrmLc5sdElGzRtIkQVw1ZEWQvtu0gYTgsC6wGRv98Q0d1mmq3mgZtNQwaQnaeikkzxSh4Dp2ygJ7zKOSFEEs8ePfda623ym18SxhgwwmmyCNq7Zhun5u08QeSJlupmWwhDD63yCYNKlSCASaNq0ljC0/DAFkjkE36+BQaWZcQjsKIHALwZlTAuA/S9FYp+HVsoVGPC4/XuqVYktGJOQ1CKmWGtMF7t1nbtl3vGGrcO7ntNoQPLt8GbbYJrTiEWPs3OOiQ7qhNW7cKK5JnS5EIUixR8HgEwZ9M2fXjMValpcwGw2TN1KRttslaoIo1AErVgHrxWyb1QQ4mZwL4vOZxCQ82Noh/rlM8/e3tTSl0iumUM8AnXmXe44Yxb1S3N2DT/qthA10Ao1MiWR8+Z3SVlgAF1vUUI3AqA6C83wIDzJ6xFDTsiAvjAZcAEK5Ajvkl3NNchY/6XK4T37zSP7IVOu8QdB7yesVei3nHk6JE1aTLtEVZ123RJ1JZM2Vi2TaIdYsw3cKCrNgipbZHoTZGgmUkLKOx0WOKpmUIEtHCYVlvSobVUGgb1GqFcCwRroppRmtvp7VKNViTrrG5tmE16gZrA18gTC07iEEuKS78epWH/ALU4q5gEL9+z/eWjKJTSKfcCIwzdcW4Rj82oqG/gRHv4QWm7amM1ZxlwZxxVc7qm/5ahlecfzhz+WXyekghL4bd6Nk6gl+687pwXynROqFc6FLdSo2h23WCjReZmjEHUXGOZdnghmIfJkIDhARctkUl02Jg8MP/oBBECRmM4qRN7agJUoWZxogkC/0Qg+ixNKN7TOk7PpA8O9l+4zwNihnJfPbwMu++m0lH4gNVWsy4aHzMeG80hi7SNHtxIoHW6Cl7VSgg/Ipg8gtI+jQ6hXRKJcDFu7XPdqTYNSmLnm9T5oFRT0jeSM4HXfIBlXJGYL4KQEVAEBf33IgEnP6EX0I7Wn14e19UeFwWDL3BZyVW1Dab7RtB2AN95tddoQnL3Raz8VItYb5bBbfTMOxGm+IA6H1AciFwhMDWo5jbezxoJAgoHUDKxxa4nwCjl4eRGJgFEESCJ8CxAVia14pHFgc9Eu7zKMLrPpm87HejvbZ7bsedNyODM2I7B7VuG1A6I7osSWabodPFkah9hZpkV1CTuaHQA1V+4enl84ZuQ+hZeioApDedAfhLvfCSNpe6hI0HoubnDIbaoHPCuKS4nw0DFOr3tM+dDdiAjy2gQQjpPiYyvAvCfYfW1/tO3HWFu4/r6JsfYa7BoZEQEoUzRlIGF8EthoVaYETzQFIz5OeDfLzwkXkX5nz4rLFmp+HlQoRxUuU4biD/ak+iiplrKkg7AIIY9yqGwDgcdrvQYb8idwYD4uGQXznyb1+oHeDt9v3v97iPxVxVIz0TrapqnQNtthG8juWWQXFTvfIzxW1scy1Seu96kyHlN5UBNjzDxG63Pg9E4rtcRLihX7XfxaNwJA82ncIAGex+pgyQj7/Ddwvw4Siolde9EtnhJeSpGre59/7rGoZ5fT79eLxucFRtAmSxJaHSRRImZ0GjrjJMWg9gTAj0rMR9QZKNLSA01ZXMq3fOC8mihwUuJsoxRc7zyNTTQTIdVBBRRRT6QLz0yQI5Cn7FAUUWd81vlLpcXt/obbdUO/MM/uYfO+pTw8a5ibi1QdXo6rBf9IEX8RAEwR4N+0cP/OxnGzX0JtGbxgBgJZMFO7RmTcDXGBb7WIqy9XKeoVaRAQq8gPIMkO8NQDoVrPmIT8S7m32u36+s1X/nMQ+owIbo+ZEJbzwaURrcvosStn1eQifrYym6yjSpn3eskPHLnQawWWms4E1ggAK4OHOdSwmWTkvB9TPCXvFZvwf/WSTCc9GkenRFnRprb1/nWP+f/0p3E2Hq6hPH9a9TihVM6YPVIfLLm29e2b1uHTbRm0BvCgNwsX/BBPJ/usP4WkSn12g2W8SNPUxnwACzUAFZkc8BnGoXejYssZ/PDfv+9ItLPH3Zunz4/om2iGpfGNHsTaMJejVLdwZ2JBErgoLzOypTfi7NbBiAFXorlRggOx8BZfKhmTkKHpl0Brxk/7wm+b89aPzJLBNwuv3241V7XtW3qCnzIsAvYjd8ovabbW0NR94MJnjDDLCJMaHjSDwUicu3ThjsCpOiefBC7jSqV9RI+Th7FjefiQRwOp0bedhyYdQblvCjoO9/E/Dqh32J8eiKQ9ssdNkXgjv7rWuHY9YlcZ2thufqYLTVoLwOdzB5llZJWf0O9gIVnOgddmw6Z1KQDcaZEwdISwpqUUdFOG4r/Eey0UA0DQNkGCmfAXISI6smclgF0qCMKASORgJe4SmfW3pkXl3NS+3toUh7+zPi4cM1jTYSVokCO0MmrB4L+OemGe/49a/PfUPT094QA/CR/4uX9IVJjC7XKfq8lTao3KTYR58iAWbHANzCB18+6iJ4n09g22sl9JgxEX55+41I33x/pEqT8cKOiHWZZrB3awZdaVq0nscU4Bk+Ewi0EkqIDMUgxjBhW2hMErDGUUCwBZKgV3UwHG1IA/9SgCoYR2wFN8Ye4AI3uPyyhFnYNlEVSJ4gs2gQ7Ag/y8Mr0nMT0EkxQPb9eX2zKs4lkQ7I8wWFoOfaWpW937t9/m7+xI03vlyLsXshtMdqRq1Rj185MG+e2v3lNzD76A3hAC+fQLWChN6tm2izDmKfi1k8o8jNTNJk4zrQ+QSPg0u1Oyigh86sEh6755Lg8XYwOEOPJ2qHk/SsiTi7PK6xTapJwzw9wLrjgPTFoWEnoPP4ZwCQuf6QggZTJu6pkXFyTlCIJk0jcqTXUOv8ku0Fg8U2RNwdNwWfKIhn1pNAPIn93WPMHfSROaNRuy6lWk26SJpMlbZA3Xzwsr6MB+HjM8YwKxWAmvpOpe47ASN+B3peN+h8yKsOy3j+8Ji19JpN+7WawIE+QdAiK13iy2q1q+u1I4l3yYSGMa5NHTzIzBUrsIFOgt4QA8QM8ypKyEdTlK6RScYQmoama6B84nMrQPqiFh/ZFZbQt88IVO369oU47tx0xQJW3P7gYIp+eChFL+IjyEUQuIO4LyALB+f6hZcl234S0PveANIHf3R9XQLNgh4qcW0LgDcBOhSyZLxgdEI7J6GidQnVXp1U0ULTYIqjXtBsaSrwRbADkvnAAzg/ldTO93vIPBuTH9WGa3ffcvvcCUjS/9nPHvxDTY28XLLYHFWNcwlwUojhSauADYeMz+1Nsr9O2ewsF7/ARWE+yMMq2QCVjUCUCbOCvj9e7xJ2nCcFtlRfgcx2gGG2PDFepQviylcGje9HVLYMbCiXF7OxOV78iFdEDwZ9nt2/utw7gN4iun3reNXghLqgb8S6LBK3Lk2l6BngstXx93AMYZSZbTTFOER5KoNNGpz5Lm82cmhxKQjxCo/4+5ZG4Rc/+MHSHbxsbhuguD+YEsLV1147r/u885CO8UyG4STNWgJ8pouFNGIufmQUXQvw53whD8otRdnLWQk3nfTPtAuqktBhcPH+iAX60GACWdWAhX38sejCIwnr4p6kdbVEkVeRySsCowc9ovgKwuYBg7J+PeCJoGmIB3au34ZIaGKPM2AvDa2lh3hwp312jcepYyKU8se1buihPwLO8ApEt85QRPEssDjP0FW2APS1lIYA0i/PjUic1RV5VGkkEtAPoGYCqSS8ew8VP3vTa2FfVc32iy+uUZ99dnsCIg7m6OgAZNGIZkuzkgDtENV7MGGu1DDa3KWjzYxSL6EoN4GylAQodKMKXbtS8+/4yPcR0lHtwv/b6mb3r9oQeGn5ISTe+urEObVuvNaN2bKhJFsAGP1rXpG+Vi/jV9YEpCPfvDQwlq1ntoObA7GqMdP22SrzGabo64ym3GEiuDUEmD5EdzSbiNxuAaPQ8ojMAqzagji/WuWW1IDI4lhGySBKJH3Kgsg3NqFpZ/Zu3cqER48cb9IstCilk7PicWutbXMmQC3MQg0FkHamzYpD36iEBJh0gQFyBuwjAPCwbVr3y27hxepqd9+ddy40Hn30mHzFFQvN2UqAWTHAp0fZnOcH7MuPmPZ/QGeDN4IwKQJQZs4AmQbIpGc0M7vWYsnVYem/qrH5s/s2Bvffth2RARKbt33I/hS16VkeEY+9u0H5FbOM54IbgrH2zAu3twMEPX/IXQXQWr+d8GIaUPzMWAJhm2bIvhlids3DMRPsPVwDELDXsJmiW0jiQBCgibZHFHRFRJpm2GNVijAsYaEHTIo+GLn9MRUflmwzYvuZSq3W1Pqb0+pouva6+c7uBd3d9qVJ1bxSV+kF4GoGudeJ8ryeKQxQjB/kp8m0K0QdkEvA+0VZ+HF1gPxxyy3LB04WE5gVA6w6pH84SvHnenV2oZzxkfFsGCDPZy5mAMty7iWW+MgDNYR86axLvCNXDSAFwNqqW1+K/cJkrBsCLn84q1X/03fPbChwe/iI/+KLSDk2GDlHN+zzNJOeA17BGUmNzgf8AMMoxFzagOuXxuup4x6m/fjMHH8HYIKvQoYZ0+Fk5Mz1Aw+kN6CQw16Z7PJLwo4Gl+t595ZQvH2Go23TVzqWADp6bSRifhEihdUg0AVH99Cpoz3nLpZkgEnbiQNIIL66q6rEBzZ/quXf3/OeYAc6CZoxA1zZYb5nT4rdOGGia6DjPSTfV0fTM0A+ylYoAQALgU4A0d4TAFdvrlu+Zf0Gd/+ZnZHAE0PimjGNXa5abD+y0F/6jED/1VcjLdvw739+xE8n0CLTQBvHVHR5JOl0eAjqBxg/UzAf3HnlkDzsISuGSYYBcoGf4sZnznQxC3Q5+BlMA2whJiPWVRcQn3a55WckJXnol59ZOFyp7a64+RGXT2z1Wkg4Q9eFv1dTbLVp2C1i1nNiDBVPRi00nvOM5azBmAaRbFEgAz4f3rlibdXNppkca29fMSt3cEYMcPtxVnWPQb8I+vS6lI1WiqwIrClggHzxNr0KYGmELxYQ0BNNMnr43Zf4fx0+hoSdA8YCxqw2kA01po13aoFEz8PrmlKbQM8qVUNKV0w6M24Bvm+xM0B1rIDAzjLTZCFgAAnTyXl4qISUytkcGQbI2SMIoXIrg/KWiUEACscAxz8KKQ5DJHK/B+yQBXXCK6Y0J3bPTaVFMVdRI3JfqKdPe49h2hdaJt0I3sJyktXxRe1WngFQDkBKz2zGmkhYHxjEd2GB/P43D6zsnc10shl5ATsJWj1u2ZdoCC8k2aFSRNkrOPdv5TqwbCqQvB4J4t4CeuzaBvbwF4Cvf6KjQEzXwyZGE6vC4ivfPsvbz2Hav4YRPzwRa+hMSgsA7fuAZpLzDcueb9ppiZQW2ZAvR1Wyo7ospeuYrcd0Vea+eQbDF23KwkmLrYfOWw2G0LkqIzs7h3CtIJw49NFvdvX8+tbWaLExlvEwxrZs2f07LeDtimtiPGJZYHrSRbz0mbZbQf2d6BJVDJ3NYQDG1dbirjtu6+XqcXyGmcyMAbos+1M6IgttKEyqUMH0S1R4AZbt+HQa3iLQUMZiH/71u8Pin764wj3eDLEFHenhc0PC8dF6T+TbLVjNPq4Z0mID0WsTGvtEwkBzQHc4awc45IsJKjCkJuvESlek6A/O/c1+K/1cpqdQxv11AfMtMU17kW2w9/sU8lsNWf/7xTt6uZ+ulsgA3XPPOi4hXtz0hde768Jiz9CIfiejmKOIJ4XJONPOBazomr1acbs+FE+ZnAGemPHzlW5uGWGNxLaW/fcIepJb/A7uTUtYr5zyDZoCXVYY1MkCIDy4A1Y4+kCj9BWJue+79xzcw425bb1IebEHcAAd5WbwfHFnbPHz/dbnx1R2ecqki3IjvUTeuCjUXKAC7CI9WnytKB80Td4FMQw7bTyCaugPeITnzl2i/Mc/3dj0HJqGvn5H9+adexNf0jW6DN6FZKeOl1YBk+UjWlxvUJYQkAn4xd8vX+n5z298b/GMmKC8BIDOeOqwNQ+G12ZwPx3Gd8CMjNzO0TRSi+UAkMnEjrWNcLzFTV6nAt7Kos5cufTdZqQfagaRCV9vfjleC1bzsoc6zX8EXb8EmKZezFRhSpll68FmloblJWLTiGFW9J2lRyL/QHCpJhKzNj69NzH/w1/r+rYL4b0//5fW4+WyEmT7sblNkmdw0Lo+lrAvYs6amHIVzb+eUQF5yQS+MlWz1x/al4r96Ptdxz/7xbnTegZloetvjaJGsDDPHjTxu7KzZWZGlUMhGYa1Ad3qm6Og+369Run+2UacnuECMobrTm7lb3hcX7Czz77m+QHzc5rFLgSvh0+ndud08bSU31DTJCm+WLYAPKkvii7n/jIsU4prDQOdNRI1PjkUM695/5c6VpXLsf1z8wYXNbke93uE+71u8hQw0DTshwuqmk8k7ebW65p13r6dsY/s3r1bYs4GKOWp5E0uivtNNB8YamWSsrkEZ62ULMflvTGbppLFeacrChFk2nlOjfhwKYv1K4eZH6K062Imu3pURdeDxPDyEC3Bk/mflMLMq0PhhVK5lSsBV/6Ztkf4SwkpjV6u2/QaatkX3fqjrlCZDNFXbmk9XhNUnqqtlh6EnxE+SspxQR5bl6walC9C2LolOmFt2vOcp+aX3x1yowpUkgG2wfUnVfqeMYouLVVIOZo0AkvXnl/leE+VSPasrhLu++Yy5UipdDSlvm9EpzePg2HF1R1fdzfjDs8X5dkLrPB2nnpPl5dRSyzL3JWG4AwMdZz9wD8p1X6XZqKbTJN8qtIzd/5b64FQUPz1mpXe/wCgL0IryIFKxTtrFDHzTIyZZw50ks929I0vQZXSl7q4bQCd12+xdaOUtYhTJGh+B0/TEmiyMTjxRq6SSCfAmE+3SvhPxWm/Am5e+wH9w9s6jfaoyVY707imzb38paxDYEFjmvDFTkt3KgtYc4s4BkDMCKiUYUXCEfikeEwgHYJOf2w2vTlQuXaYz2VAqkoXvfRq6vNf/n7319rv7q/hErZU+h+0z4sQQbojHJQfgDr22VNwRpaeYIKyDmwJYmmXVZYxenVX/JN9XcaGf7/9eCsqQ1OMwHbGxG2d9DoL4aXQGNyuKFi/MSkuM8owzxAppR6z11G6RVBIZNvciO1Yi3wF8eurntUW7bWsdSdOaJ/XgfHgIY9QMNpmxnQ00+s8rgCInSaLwqhLoH2SQPogLNerG2xUIiglCywZTRHVBIDPrwgQeUZuaiK34CKAJLImgKabAL5tsUxWYwDAlNsSJvuG+dWpUCXunkIDKuAh1L36uvZhv4KTH/7CsWeBCfaWUn93tDdPfPYrXb/oSllh27bD8B7uyTadbJBK2IUz6IDxAGyqjUetyw/tVke3bj143/XXT0UJCxhgy24mmeOoYdRiF5gM15W0touJVb6eYwoYVArGI1Wy8HiNVzl405mTiBmU27hnPHpx0iZXj2v0fL4AE5cVteVlMB8wwDSaCJ0uITRIKH0dpE1vSBE7Qwrqb3BLveMqHZ1fJWnLq039xY6k0duL0OVrJbFn3OUanIi6Ai53YEK35kxEraYJlc1NItYoM7wcOn4ugE81wC8+XLkaU2ucfsAVT9krqEWu93iJ8uUfdvGJHSdKpGabrmC77v7V4ecSMdSiqtYagnHp95+mfeCbaOpsbXxC7xs6FH4JLh0uTl3AAN56eAChpeMUz4XR75t+dkulikxSRpJZQZm8Nq7bB587Hxdg5xbSFsQtfMmYRq/mIrN4jX3xi6ESYI2DjMI/IMbjQRc+uigoPBaUyO/A4Ri568rqihMnt6X/xDM/+Qzj1/iXzfeeUCiRvHoEv0fV6fvGE+j8JEQSOWgjoFkS7w0QpwnVPleRsSaZYj8qyQAIbdyIE19t7/pLx/H40ngCrRFzvcQKMyzb8Ol7HFQAlDAsSWhZImmei0owQIHEvugoq2UK/cHOJLoGRJSX5KykSWCiEHgpBILKzQfI4OhDl4bFG3Gta/u2PHTvvm5twdcP6D9KmODqURD7rASAxIpAprxynCieDXCygGI1buG/ghJ6oDYRe/ln6fV4byq9/5s9C3XTvlzV2c2JpDUfjH1nPkG6jpk6Fcz8mQro8Ou2xagksH0f2Bj6h7+9semxUmVxO+HGv3n9vTZmf9/Xq18KjO3sNYAy758PDhUCc4VgEf8IGCddLrz/PZurr9i8uS2WD1PnBjmf7OH1oPARC59tQwR0Zmb3VPOw+AevnwgVqJHw8aBkvby1GWnZF+Sziu86Yf5d0mZLoPMVUrFMNqVkmkZNojVu9FKrn3zBS/AvqBcdaOv6+UlNkJyOXC7UJ8vyQ26FfC4ckH4pS0JHxZADm/rdAdScmeW49fEXol/Y+sR41TPPsCm2GLcPAl7peG2N6x74bmc9w0mjemb6B55FELtwJRO0KdXLLr2rfacv/36u4A4/qk6m0NKIjeYU6F82MxesXBo+2xmsmME5ivCXy1a6RrPq7JodyOdypxb3ptjlFp8BixGZSTnZRuAWOuj34zDyX/CI6PHVtcpT3jrvePsKbDyKTg1t+2KLumnT1r6Fm84b6XzdplDlYQ2xjbpBVwFDKzONwTlTvGwWiCfp2bt2xy8Tmb4dpVcOF9CKFe6+iGElQ93i/njMWsjtj2xDz9gtTvcl9DMNd7yWeJ/L432uvb09kV1ompMAALg0GwStNSjzoPQWPTO1caYjEHdoYLnbfu56zHfFwmwreBdUjDWMpOgHogZbCNfc0/d+YVgHKt4fcOHHG93ivTcsrNn6nY2+wfaTnBo9G+IbRtxxfYt6/9fbnl7aJPzG58a/FwjaAy1mpDeenZ5wGiQQIYQdGhwxPzqcVOfdeedRV3G6m25qSn315tb+1lblUfDvwSt3hHw2FzRjIg7TuYb7jA2ahhvmez/tzruVpiGMWmMWW1v8bJ7TUZ7KiEHOYgpBJuiurkUhvCt7vWvfkDKqoYXdKbR5xsM++zejver9wr0BRH78+F+FnrnpTVonN1u669PNr4Kl/PP6oHiHS8QRHgpAM5YCCElgFHb1aVenEtaamKTUlEu7bp3vPnC/B0Ar0Bna3YVlIQeTkAAdbAsEyJlxK9GYfw/9YpB5x0w6f8Rmq/I7e3p9wwqRniLiwwHE/7hPIL3eZnfO8n846TkzZotXjpuoXpixfmHZVVTH51aJ/xoU2d3uQOgoeptpBWobRWziqZYa+dOgpfeDKtBYFjjBhZhBPh+jzG0Y1SSZpNfvP5RYXw4gEuno4YY6aYfbLZywM+jQbE20jI2KYmPWZQNHzKXZ6w4DHCKo0cBoThyRmuxuaKUyyctq8mYFTySjp4f9Mhm6CadHKcf5R1W8KmnSC0AyiBX4p4BMyEsRyfFqN/mTQul9xkRs5NEr8du+/Wp7O7ZWo0jCH5R2NNW4fioDzM3XfLKiZsqPSeW/r8BN9JR9pprCa777w6G2UmVwAKepQXoBPIFjLA8Ym4UScNJyVG9s2Dh7bFhbuPshUPUoYwT2U9QGoehGAwwZUvAIO3lDIPMcIG7dDTLtzl7u11OLQFGvUhlbPNNVNA4jETLmldCLc33CHx68ouoAegdRe/tGPm9h+Gs/G3p8r27XxxJojq7bbekVPlPT58AxlI7gWRaqBgxjVe+Ivg6VwQaqq137CVaPAMO8C356ivOZlnBa7aQSdjMhZN6h17vqeVlOHwxiNB/qWs9y1Zsmp2komwNkTiEe3rVAER0G4PPiJnS8Ee4vNyhE+HJRkwr5MGfSKA0qeH+1jB7/+uWBGc92eavpXzbXH5/b4HpiTrX4BISEda4K8gZs/p8CcoJTNloyMaFfvhvQ2FJ5NzfHuomEj4AaGOCTaE9mAhF3CQEZ9FCbto4O2Qv4tTQDGGgRBEuaiqpVKSs0HXFN5RFxEhCfIzLVOhz9dhVSDsftK1MWWj7T0c/zcUsYfH32kw1t0p/W4bfH4Jsp/fUFjTtlIt7bVCO+YjmzhKZ/hvAlzLq9YHDU3HCse3Qe30CqOA1XAzUh8TWvF73I90eYkWAuw23MYm19Pcl1Ttlbh5lvlKJWlaFwyUwq2gClq8E5n0fgGiR0NEBQr2vQH73tEJLGFW19wmYLQNUECS6RXVFxLBOZa/YKd8tMernR9E2gdzitXYusUKPUMa9B+g68TQq8Xovljf5SQye9vxASTJP6XtqXuPzEif2+Unm3tnq6PIr8iiAgG880FFt8CXxWEwJd0XFr6UN393vIn2VUm6SozkDYi6d7uuL1Scr2aVjCh30SHuNz+w6qyN2toQtA9FdxyB5P71ly31XzwvMNXvxAGBm9b5e7NxviCN4FVaMTa5cFn6vykn0Ekwk6E62anuPiGx0zLxolPrmUR9DUpI9Q2zomu4TRNAh+EvUDbrNMVKUlrJaunlg9iRloDrRqALBGGc9erRRmXvQ7JJEjVciO8pdJ0qR7yKDrIZUy5aEid4WTM28QYid1bnzgjI2BvYuuCM9qeffbSVxc3/Be/3Brg/ykLKKe7CSvSs2bnklExGjMXm3FzNBddx2Ti9McO7YwkdLNAa+XdIENYJ6Mge5A6AANmyYKJyJsLgE1NQeuKlPzquD7z6AQLtb8BHcEJG/itu1IGKOif1hnZ/ApSzPhM84AEiGdS6qER9oxNtpnuejxnUAXrvE8BEzcl55PnaayXnMa65ATSbvNG5ZakqLsKU7D1xZ4PELc7yVHGAOlMZvJq/mXnQAGVnSVzicdFpoHv/NGJZ5pPqjAuUV56hzeBtxb5JXR6y4ZReVFqGqOCy2esJyJHhUZIAtBKwLWod1e90rSVnSaUtfO6j0eBe/2uyFolJ2GXiJdvqdgmEwUTLzGSpCSyGA4HIqDS7gHMaKflArIFUV9qTg9k7gEVO2soZvmobKdxgqzdgwdwPwVjLSQSCONBBnHY5rPpHazs9cSngTIcg+wwp804/f7BKGPaMop3Sv3VFJ7O2LBgKtHllEvpeWd7EkTIP0veAQtYxHbXyrPYFDVAc4dIJjSN6KxQXi4dM2qJeM2qoVuyXM78uGrWWWZ/8OWCIr7qWuiTURGyiA+A5GWmcpw3lYekfVWK6zrRxvxaaP7pxJmc2qcOZCduSv8nxJx83x4mDNAPGmU9AR8vrAuKYTveWzkxGVhmWjaWqWTSLrOakifhUJgmUsFtShBZW9lKpFfLGGOmxI/0ovij+xCZkKz/YZFWxibGVtxRuErbFp9uA+d5jSnURkEdTjEF38VzPgv2aDppWe6gep1jXhKpbCslKmqZAgQQQO8pDKewAyYAExOXbWDYgNBVSkwzLSsk8qmTreqSEXPOZ2MkR2WUPzeC5CD1a99AXsMShvJDIUKDxCJBHc3uoQedJqTrOA4JTgKkT/K+E7jU4iHuTO4Hl/0wuHalOVlxCyHCNogBSL7XiYxLUVh7DKlwrSckpTeg4oS0yQS0TEKsPRSuykVy8+ydN+xvG/5ooyZXpGM4/RKH+YWqAI+ZngmU6x5PnyrbtVGo0lETlv9nyV9RFUNgyUxny8wzch0prhBI8kydgcVmWMBU/pl06bl5rFjiRi4ceOQ2JiaY+UyslFBqA9xydhDNBvJfGpLYZKZZjn1joNqQS9OmOmpX3yNYdIGfVMwvblCBR33D5siYqrXZb8jD1ucDXkDXq4OTQHz46dYWSMw+8WZ7WRj0bKYeM89pZdFPPfcQksE2wrlZkfMnHLxF8YIlCMQDfQ/nb3Fl5fj5B/H/09rAjpmU6fzNm1DJGGLEqCNSsnYfwkXgx/vAu5CqtYyT38GCJqWgLhLWxS6LnrnXKgYGtC0qKjaVDigH5vCAFyibtuGqCQjizhnnxenmClCDHraQgKxCJ9syqZlgJlmm/nKXOnpgOjQCiTo1JR0Z27o9JzmRKwoMydsqr1mq6d8itcpp5ERI56yUtRmyZKQZxGlJQCMTquSl4eZLAkWxuik4OBsNSilhOD8KwVUIX6Zn4aVeopPRc6/Q3hUrLwZURQM4vs1g8qg+w0+E+D0pm89qTIdwtngtVOcPyOk0kjgb82HT6X5TngyXF4+zfSCnXMALVtCyV/5tc/8ZYXoAZ+5mLTS4FLtckRdIG1k7JzhNa3bylkaXECpVhHlj9Q2l7SETyf66ua1YlVAcEsy8bBpFnxmDTQID1NAwtiiRSXSMT4zlGHLQPxIG4wrxdUrLjFO7/hBZH5454x9vkrEcnM2QY/hKjHNABvgkiLYlltAell5VcQEMF744Qju8WhcRqc5GZFxSUKCCzrNmfVbCWhPDx7GVxDxhS6socEo2WLbtm0jpmGJYABU9qynEQAClEPAiazMALgUKsCmpMndSYM9JCxjp/N4EMcjSTpAu2oZ7KOAOENbDEtgB3iihuhCpzkN96dE07JliAVIuWYq0RBZhJA5EpDYsgvbE/OnNtltt92G+TF0ppU+YbdUmdNq7XTAhgoisUkgvZe+PfNsKvKKQwQ5+/PlJphEdEtLWnScoLIAWEEmoP8FiFGEQx4hiE5z8oYUl8uF3GAEyAUDqSiGkk8g5FXLRtqWtWut4nsXX/wNEgo1ukWJ+MEWlCr2UgVO4N4EeBEa6aMoahKUV9C0djoqsvgLvnC7g+++OmKgAF9tzJd/zXETrdZFRmm57IqIqwqAkOb0auYcdJqTYDMv+FgB6FDB2SiaXyzxzizzHycwzFT4lDw+du/eXmn37pFqw6AArGF5hp514X3sLKujps50UoVRFBS3nalF6QcqZFbM0hk2ECzG/MuqkZdv9BwUaMIjoj7KyuSFp2ZqMtw4rNImdJpTf9yoZRTX8O1qc5OEWaFSzW927tiDizequISS28zViZrk87nDpsVcNmXCyUzi4aFpMNNsrx8YrU5wDi/Om2r1xu1BwIFE6ED/ENKCLy1HUpiJSQ8mvaRIWmQSTyGuKkBltPSnWFv7MycUdBpTz4jdYlLUUngVl/3FecPtwv1uLy15bvCg4ZUNlTUwHsCbAX5TsqA0F1pevzROggSNwHWjIEERVXZesn9wvjAgBmOeCUOosg/GXGHFSoBl2ysUxJnKMwGfT69ZqDZi2k1yQ7UXncY0FrWaDMNuIlMs7TL+AA+Fu4Xe2mp/vFR+um5IkbjdgBib9RYF+cVCMRYR8RgB07QLfpRfS8+y0xSmzzT7lb+IQcHFxGwBIbJfk70T4yn0ml/EI4gvdS7hV+QTbyyAQgOgmpZpSXIVOk3pjt8MtMUi9KykSpcSAU/q5jJKmotzvomEINC94fDU1cKc+vtVf2TcOgvG/vQucnEZmWbPBPcS9c3KfhIiqBdMDb1sVAkjxGakFgpNeR756lDZ/NcsEqheiExVtCN1Mnmdcd6Y1tDMQKJgB7w4Yp22DDA4Zl+BBLYIUF25QPqWoKxrBqN/CIZm58KGRMldTaJR2x2NmouBnVx4WgOgtJTJrE7WPFViBwkBU0H4NS6kN9OaRTbT06iBFk1otp9jAWHLTFZLaBc3PvPNxXLEpYBu0YYTCXrO3z6vLdmyu9+DThPiJ4e0bx32Hek1Lgd/fQ73uLL3sv5+sfHM0qFgw+8TDqi6OMJP/yjO9+67+z2CINTHE9YCfubAdPXAZS4IAjYBBIp4/MJx0lqNhhSCRsGcTM2sW4uc9jKijL9x1GZLJ3RWzY94c1HDDLvQc1BOlKSX+1UkknYnvRETtRyLGVdPJEP1W09W773F9Ehfp7/3mLZmaMI6F9y/2hmtgHZkJjbCIfF5ihLRUke/jIykqsE9XKBprAGl591Om+eUK/ywDAklPB7c7w/4e8kXMR4HNLALbIHx6R6eDfEOjJlsGRVJPVqBlLMuqEm+K+TeHpTICIA8Kp1BHAs7s4sRPp60/jaaNJZWDaHTwiPQx605MZXebJqsztk5pLLTkxbLhPBgUbSl1f3w6mahZBQ0EmHNtk1XQr5KunUqU6lIMbUpkmUyGKyRX//AjaGII5paCepQGBuZWUZFFkwJRCs7LyBhsmr4Mf+1oUQLVwOfaUXRRT7haS/BR+2pj00hfovPIR/VWUPCsrf854HYRegdTu33ji61RfH9HQPa+6TMuTRFMnNqAIwfkSej/mBQ3OO1kgduKXFEPA8ADQzoi1XNXkcyCoXNmgNyzNYVCAvOCmsnqwYBdUCmQ2jWlB/ImDrhyeSBLYramI2dnSq5WKt3oz8B1Hm4QA1UYgLMZwghsS/Jzu2J0fd8+pn4SvQOpR//frDu1Y7UhvEovRJcWQ+f3FG838LUd8bpCCAmR8JB8YlSnc/phz/sadRNtljjizkILsxspkE2PttKIiYRWG91i+Rs0+swQIsXnRAQHhRRibV3DM1qSljRo7zQeaOWOC97rZZY+yXGDnhEPESziaYhrkMNmzVENHbxoah51aaHR+dsuXv3OyZU3N7eTr6wlbn/9Ip+8UTCuCyp2muFmSl+5MydEPAEcMD+2iryQrlUPT3mMtDfCw0ThQuYaqaamqW9OcmFh8GQPLFmkdtZsu8wwCof6oNMwcRkcXsWeTqUx4ysqEAuAVXKGscobsxuW/6dFb7BBg/aV+MiL1s0N3+kfL0z9/h0ItViq07E6MdiTLq4b85a3zuBCfieB2Phj0ljXb2LRqPWdbrBLqQoM/+xhFtVzBZ8xxe3Qo7IEnvlPed3HihThjg4pq8DOHkho1mPgpXJtLzBwWcl+gPSK6KEj51/fYtj8zmZ3YhxxC+g4zUEvTa73q+MbXFO1WxWkzBo0096US6yd4aCdwqE/dZFkEbRDBgukwDcKQkKWXoibv4waUy8d7Rmbg16m6m/cY8yHBGWjkxYd1uUXQm2be1sAHpulYeDwh9XLnTv3Lhxo1UqzfK1Y/XRKN1gmGypsxs4Kml65VFpx50b3k1tytPL1wZez17P+ad1IGUCiO0qldfUuQCs8OfUr+lJAZwBKFM0GzXtS2pnZm/p1BepF/HBlX7ygD6TzQ4yznNm/0IB8vN3Runfdur4Ex96fPxtswn+/n9iNYMD4Uv7o6x9ImEvBxHrmWnfc+HAd/rwecW/AN6xo4oo3eXSvrwn9gHLpHMtO9+jmAWTpf+hsoKHdZ3u8gip3HqLHANUyahHFsgrHBDCeKa7pONp79pORNRuPZJA67PX71mHzfkhT/c8N77PTfAYqAerolfIJvNzDgyhSLQROytuseuOjdCPXvm74Xc5oWfQxegtopv/c2z5wSPj10cSbLNpo/MhigfjJ7vwNa/CpSg9KYPP+tRrQuJvfbJ49MtfLjwMkxPfKeRXvxoLdHVq7wdmaUDOqT2zPywjvZss08M18kspqnYtQCM5lDG3KHQpRkPdOjrkJWhMtVA1jDcxBxyjYievdG+VjE073ETru1R6wU9GmN9fg1J8w8iLl6JI7Yjn6b+Mx3eO6ng9ZbSa5CYsl8ud5dwogK9lw2Lrk4RVj+k4PPHasPXq4s8c37T1GxPbrj81G0ZyXXzE1e3XsdzUF01el0ixa6HzlwEDu0l2e1VWDIkX4p7ZcDD8Tilu0nHOau+DPrt+5N4S5Q0ke/32EF02Pm7zweMlzkbaaFaURhgRnzuWap4r/ynutcY2tk+qmtyI+XYtjls+1N0m4f2oxIaHFbU9K5UmTdwQ1BmpGTHY6lTMXDJ4LM10nAk21uHEB1vkH0iE9fAuLbvKoQza6JzIYbGFfQm6OUXx96iNLx5BI2F0iqi/ccJrisIahqzbugatW1XDPgtGvnu2I5LH48HyH1y/xvfTm29oOHHjjbhkMG6kW1syPKrfoOt2gDEklIN2C6nYHHe2fTUlURhad2Hooff5Vulls/jSIPMmMLr2JxP0B8DVNdmTNxErt1s4KjxurcRu4emzDfkBDjgB3sY2UbK/sn1doGDJ1w07E/9n9zj9P/0pupEvdCu3W/hkPbLlTu5Wzs/ShfpqVTI+0OglTzV6yB9+enX4efQm0D8/OLLkaJ9xWc+I+d5Ywlpv27iGc7GzA2feEbMVdwvPXAddjtwy3l/lF7b+7geL/rXcKZ///K2+Ja8ejN0wNmZ8VSZYKD45FM1gt3D+2zIAT/cIBxYud9/3L/+5/F+LyynYF0CPI8sdRq/4ABRKUuTjG0cQjCqIHTZl9JdUA8gZrVKPxs5ZKQtzv3GUGbctwjk95KHCszKymkIydkc0eq4LF+AkFVTq5E3nXCGKpZRB53WZ7OruiLlqzd1DL4YUNtCgKJ01QTroV1i0Iyqpcwm1W7yG+Qe11kTHjqGPLPGL/UQWe+Ki6BV0l6Uin2bSmpEYa5lIWk2P7Uuttw2AYS06F2A0Hz/5OdvhJdsk97VQXYIRB0CMcEyUyFOiBz9TrvP5VnHf+/Hhc3XDXl9+4jebfP0y/ZORNCkIRR+pDsnbS6UpYIA7FyLjjl7UUSugXSbDwRRic0i5wmdBGZ9YjhoMooPokt2AEYKEeTnbAD8+V+k6/0n6mEwsjVASSJh0AdxwFYHOk3mVKYNHyEAQVJs2qxYYWo4Ftjiq4QFN17q6Y2wQRklUNfREj4ANAL30iWSvRg0P/e9DfD+LlMu2iUxggEqE+mEE1VgWa4VgTqOm02U2X+dAMXHQXcxQeTM50yt48msa8GIWD/XKBN2viPRP567xvFxu65P/efDE8kSSbQSLfQ3BDJdj/eIii39wner2Cgd8VcJzbYuFg6XKKmCATIeon+xnDz4Qs9tUDAAOLZ57Xmjk5J8ZhKfWJjv5wLkBlgcwAfq4ZevqbZ0Sr5CWV+7eT74Q7bKqiP/JPnuLTXENKA7X5Bhh5aVMXpUcieWsUMVIM9kClbEFIDIv5B0ngjUKYtEwMbEID0sziICC6ZEwkAKi00WZLTILyZRSgdnMMUr4IQ0Cm8w3dxhDRcrrBOTwigVGYqy5Vt7eUM1+NO+isb6b1i0puePZd74z6D3QOfEhy2TnWRYKi85hgKhUe5YlZ6aYY1HhhC8gPbnqrMATH7hxbqRU2pJbw/yVCz39JxFfYgLyFue7vc2g0EKa6ilwg80F/3Rp9IwmF94wkdD58SUFu37+5PyqcZAM//yh5xPS3jH7gzGNLZ2UAuW9j7K1yISls74zoG4E1IRiM5rV2yHewcAoaR2K0vraOXk8K/qcxpxduennMmWCHww6f7ixWnrm//xV1ec3rA7GMJ5XkoV45+vEuKq717oR+r3OOY6Elc26TJ8wZ3EJSCzU1CTdz0T62Of/aW7J0c+ppIS/IowSG13s6WYB/Xnqrh75gpmhkjHHsh3lHF+CEha64Klx+0M/6mJTDlPk0sDrRXeCaf0LiBfspWyW7Z9XPJ6ad857yNglucilY0NgVDnIWurVSumpDIEK4WcYHRMF4Ve1tewf051ferez9m8PNxwaVC98+oXYv4CkqcW4dN/g/CJLMYcjIrAmyaS/tc39zZqFwYr7KpcuBCrZINiH4e9+D0ETUzuhMg9WIs7UMOCqIpp9xh/71EtLpZm7xjcGkbSn3AJ90C/h59IHPc5sYlplmvTJ8xtw9m8xJcuCn7y9bPgn4BMOuhX0qCzaT1y7an5/uc7/4c97q4/2jF84Pq5/EDymOU7nn2Sl+KES8Ox4MCQ9HF4U7Jk3PlJxj6Wyu4Ndocsn7qf2K2HCXu230YbJhNN1Q6GoLhggGXgYYD8FkszvSVof/4fX2NNjSRS7J7MLKF9I8g2ewZ7A7mfPTSShQfq7TBoGi3YORdgH4i1vmzlWuviZVDMv2YzbupwWynpCaQlBQYipoLsHa0PC/3qJ/EefDx/YmDkJvZi+9ZMR/5ETyfWJBPtASqVXANjj4Ap4GrFXqt6OzUJYVJbwvqWrvL/63Ofqpt1gqywDbJyHtU09bB/AuD//fZRtKF+NUlRZX3NEAwCUmk4NXZ3SU+dJXvtFuDzmHB9/CIm3DafPvHrmcj/XXQc/9ef4+AtDxmcTOjoLpEcQ55UyHc0kjdOYMxUvFTKkad/bdMmkY2mT/PN7vtr6PTQNydhY1Nmr3ZzS2PmmwQKO3p/Rvh9T25irHJ9fONA8R77/1n9dMCMMpGL78A7ZDv31t8fs545pbDnE5ANSRg8WnHGPUOYos0KwYuqxaWzSf6bpUGiAoL5FVehzWxqs7Zvmh2J7gCmf2K+1KLYy/nerUTTrKv79blazp2/i8jGNfQSwgivgeUxY2mDLB4ucMjK+Vz4o47wsnTx+LtvIfJI6KfUeWf+NFb6Xk5/N8o6wS59Syq+FfGR3lUfY2lwj3H/H51qOVWrbr95+vIpSceUrh1PbdM2uhjrI2XUTBW2bK7cIZMoBY5m25COjSnze4xZ//N9bl/8WO+czTU/TbhDJ1dl8Gf3ouMq+Cpku47tLlRbBrPDvNEY7t7X4C4NBWDOQxB+/q8tl1c5Hj28ARt7pt1O7+pNt1z6J7C2MHb4HYxO8kaiA5CfcmB53ecwnEpp9JcQCzgRvrY6Xkzvi3il3Ug9UFPFs6teZqgPOvJxxYMAmZBl3+iXh90SgzyFmH4GA8EilZ7/87e4Fg6PGJf2j6icMk1YLhIhZRK+kxVvK+MzeSjMIFUU8IinsV8E6vAPNYu+gigzAEQ/eIP+3j23fL6GLxizqT1LcKpayfCYfQsU4QPbqlOydmjJXRGfng/wcvGtHIrXxQv8zD/Wz2Cso2eASUNOJx2It194/8cKROEpsv8Y3tPkZFtW0yMAhC/Uyaq+TCD4DOmIxxMrncuALc+iblrBuKzBj2nAuqmyJV2SZUcnzVmTSJyB2FGPhAIAH+2p8wov1svvEd0tE9TI54Lvv3iO+NBA+73iffmEyab3XNNnZmB9xnA1yVfCeyhPfJ4hOeLzibzxuacdHblzWXw5hLEXiTBL96xzcs6nH2r4ziubHGZ7DineAmVqp6Sqdu88tOpWyJtnGF4yaWPvYX9ie9zfh2O0H1fGj47QlbqCzIwQPC3b8BIR8ubHIwaNO/rn8wZH9ako8R6X2eyKWIx2rIW8ZuNYFclnIySSMciK7gCHzuDI98Jyp2UU1T3cOmOWgYSlfsZuE9jU8Mtnjk+nTQTd5oa1a2N9+Y2vZ1VU8ihgN9ErPD9c0UM26KpmyLkmq7CzndHScLjHnbuck2HRGoPMyfHpQTJDx8fpG9FvBcveum+WW+jNiAE5faBbu/2QSgzvL5kFkb75zwHP2ZoVKF7rJpYcZPzwAYOI1Ec2a66tO9gMT/OTWFbj78WNM0yRr/J/3Jn7g0egDHUMTj0Py/dncHrumls9seX3T1oO/neNuXJw07CsSOr0wqaNVqoXnGpRinG978BIz3x2VwbK1SIMn2UW7LKtjafoaB8JkCY26JeGQT8IvLJvjetRtpV5un+HxtHLrYIhF8TmREfOfxiesM4EZXQ7ClxH7k2qqXMdPvc7NA7CBNH9I2nHNteE7P/zxOX9BJ0Ez9oC4QXhDF1r6ctL68BGNfV2A344Rlnd2cMH5vmyq8Zc1WPLPAM7eYxljCobt+Pm14j83uYQHa85ReuZ2IvHoqH7Rto7kFnCPWVDGu88Ji4/i5MCRu66cnEHLJ4SoY0juHB4NeGwSRgJtA5fqTMO05vLVOQCt1qkW87gJclMbiYaFBNtmDuQL4WgbmNCG+IAFARjVIxENMPsxEdMBBWJEYGG9ChBxh21JI3EtntowV07MpPP/4afxWi0SX9szrF8xOKRfC+1TjzNbxZCMTpk0+FBOz+RH9goifU478cgnRRAh7Jdl8stwQHzg/R8K7nv/+5tS6CRoVnBD+8Fh3w5X6MxOFX2hW6PvAwZQcnK2DAOU8wLyQ5b5ljkPHfsEtK/RjX+5Lkwe/vezA6//vJdVf/eFyEoF7BCB0rOGElSSRbwzBGK4RaH7tl5VPan3gDG33INE71zkH4mN1o4aVsAykdc0BXdSN6WATFy2hUUN8H7boIRDtaLAKDjfVBZEK66aukfCJoRBNbeAUl6JJlyiNRJ0eRJdD/9Z4yeHVmqjL/1i0NvXqbcZOl41EdPfDe88l5poHuj7efCOhWHdgs5GFRkgc9YPgkhkLOATO5DFfgqttcMdCHT87GfzIrt375bWrl1rzUb/z5oBOF27lwVNn/2uF+P0n2BELYWKeYUMA5Q7PTyfEUoyQF5avpcY5/KQRF6skfHvA8h85NErqw/x5WX7tNiaCZ1e0ROz3wejW4Z+OyJj9JIbS6+2VOPOkJHsb3r5Hi17Lm4puhskRch9CB96yUM6UZtzzV+PWHUCsYtrEd24AdloFo3IJeNNwHBidKQ6bulzodPbNIMtw5Scp6nWeSBlFHjP9BqRItcOTYnfo/IMQJ2JHcMyIXsbG+THFY99XzDIxhBaDncPKZddFrDPO69Zx7M8WGPGNkCWHliDeVTpodWHjMs6EqxaZcg74ynw09s2GSyegU1gQ+MhUuUT+fSuQ+1pJG3XdY+MDfiqpcjhMfMbSZutNjHeoMj2XmSQ+2I2wBZXfaMPVWCAU3HuEAgIl4H1pZTQK0CjXKxqdIVpWj4x8z5OYClvEQQug1ZO2gKFlAaYMHN7yJH6GvmBjRsX/df116dZpr39oC8ex9WUKnya96ynwp00DM5PG/vmoPHVERN9dDhjFJJM0KCsCiiY5YNKgkVZuyANsEAcFQTumSHh3yD/nz5yRVVHVsTd+FTkrFcGrU9FdXalatBWvgWXV8Q90OqvhmX80tIa+SVio10WDSTvehNPGG1/5hkxFVvpVkesZYmUvTYWp+dE4/Y5sYS9nM/y5dFFkfsSLP/dUJ66K5YARSogz17i0pDPdAKXs6c6JP57uMb1h3//9vzclO5vfatjiSIooDG10c9/aX4XOgmatQTIUS1Sa8bxgxO2bSkC2gKx66ZCiz9NBW4XQxVBjXzKRuYkGD3Ho/bH/RKqufDhiQe+8vzI89++sDZueKuOCWTknpAi7IEOv2o0Ra+EsG4N6Nrzoipe0R1RP+jC6IQoqoMbfjrY65NIX62b9IzHraFar5JorhKSCZRMxjrrjabFiC0fSdfqyQlEXC3HyEppoTIaG/UcHLLdDSHcMD6h18VSQtPOF2hrSk0uME06F4zJED8GHjrS72zuIPDOxlMwsWJcBJcE0CYbKmcQEzwUCov7wCj9oUs0D6qR5ABXOfeAytm54/ULx4Ytsbou0evuxYPoJOmkJQCn9n7muW9IXT1qkA+mbLqZMOwHzhVJJRsgC8EWSQBEiz2DSeiTjwSwejvBKHshIOAn2jxo+1Il2Nvv34NHhxY0RZLorIGEeaVt0wssG7dSm3q5cQr2QRzqEgVfe1xkbBzgtnHDRBMuglUJswR4AjFmURWALQ5vOmvPDQMLMOxEt0vygvjx6wYfgDQM6ijAbARBKVYDRl0tlBFgzvyCSbcSFUPhDqSclWio4D0L5lLm2UN8oSi4iDGo/6uyJDxfFUC7V8yTn9K07mRj4xL52IFk48CovpqPjVCVcDRc7zvR3t4yjk6S3hADcFpxkPlikdQyVcBfMyhaB43CoVmRlHEDy6mASgzA73HvQMY44iH4gJfQbRA0fLreR/rOfl9VdPvPOmVfVXBJX8z+kGbR82yLL6GivKPSy8kz2D43UvkHwCdbgJg5XE9hSnURXEDCwQCIpdr8UAfOxJgo0MngMlKJWtC/mU7kHU3SPniB+5Y/SbUkA2TSZmMO+WkycQs+W4kvER8ABPSg3yduCwTNZ+/5zhnHefpbb+0KTSSsBUbSPAPeZUUiqT5mmube++9fP4beAL1hBuDUfpDJ1dXGku932/8SMdBFwAghxwCaBQMU2wClZgVnRCMFPWs2edCPgyL+zXmLq19pX5FeB/Clx5m3Kzm2HuyCqwZi9gfiKmtzOgwyEdDkSMwxG5u0N7JlEcYK9TNCFYNBuXozhPBJMAB37fioh/qpEA0aaaiRtrbWi/8t1o33tN+0Lufb/+M/Hb+k45j2QUOz2959cfDnAUN++IaysPPM6U1hAE67GZM+vc9Y0p1if63Z9KMgMuslNns3sBIDpKOITnoedY96RHQ0LJOnl4bI//70suBurh9v/Bly6a4B3wgljRISPxRJ2esBHVwJ9kEDy0z3EopEcE4so6I6ziAaONtp4VnjlmXe3Q22SU2VuN0l4ud0095b5VWObjyrNXboEGJe75B7LDlR29eNvzo2Zq4Dm+hlCbHfXXdd7Y4bbnjjnc/pTWMATmt3M8+Aqa6BUfd+MIaujxiAxhWIyxIMUKQTSzJAvgTJpOENCWhkAgylAQnhAyEX/qOkkKfagpHBeze06Tdu73SpQ+6FAxpu0k28yDbtlfDMWt1kiwAV9IDF7mzcJGQmfk5KhGw5rEQ4OJPORhUYoPDdspY92A9OO4A9YoCIH5NEfAyQxsOQbkeVV+wMeITO2lZlpP2mptSWLUxSwt2rRoa1iyei+jpFFFZDmz7CbLodwpAv3X//mcPoTaI3lQE4Xc2ZQDLmWyb9aFeCfgx82BpoLA95UxlgEj7O6GXdK6JdYIQ+RQ1rV9Dnfu3SJVWD7etwahOgb+JDwzVGSmgbS5jrUhpaydfZwacZcgnbut0A2fJZwSR/oQkp5ZrRSb1fIEFY2i5g+fXOSBtoYAMkTgqCSaOY0WGwPwBeFro8Cjka9gv75s1XXp2r1Gt8xKPGAWV4INXUe9hYIgp4o2mz803dbvV6yDMQh/h1bch66Y47Vp60wVeK3nQG4MRRu0gb8v1+QP+matrngDpYDo3jgkbFBauHZsoA+f5ypkNyhldGtHI9ClhBxEXQLreAn2mpIk9GE1pHg+A2vUvD6qUdiF5/Pbbbn+mvGY1JbbEkWzEcs9eOxOz14D3UgfHngepxqFaGsvi6SEyoIxx48J/wjb4In4WSx5RZdcQ7XuAoCKXUUU42RA4Ys0GvG5JIIopAur0KPhD04F0t1egV5EOD39jcFr3tNt7+h8SDquL2J02v5JVrDYO9e6Bf/aCu0oVwM+JxkSPXX11zi6LUD0L9VfQm0ylhgCxt2sqEsfnGdX2q/Yl+jV4pUCakIdF8GyDbwbNhAISys2EKrPDMzByQCCZgE9FmiJEHACeocaNXsS70/Md1gSkW89/dPxEkOpqboPY8Q7daVIBx45rdktJZlWVRD7Kx5BaRBzpGtGxGePDIWfIMsQNwJ22BgBlHkW4YVFNEHJUFNA5/B6u90onqoLjPRey+Kldq4JaPL4oVt83criHFSqqLIgn77ETc3qip9tnxmL2Qv2NVQHwm5Ee/Wdoqb7311gVRdIro5IGgGdC2TYi+d4/8vEgTYw0S2aVR9KmkgUDkMmlyvzeGTobKTTBB6Sgrj/ZVnYhY1xFkvhtUQwSQwtFLfzq8P+hie6sIPlFXq3R/89LAWDAYTAyPjBwH378PmMgNnPQ4hSAXtYkgAsPaGBOPS3CBEufbGhGWOfhFAmsMAks2SAE7YVLLORWQYgu7BFNGxBAp0ixTTy5Y1qp6R5DJDdTb/6c72N/N2hJJuiD5wrEVBxN0maGZCyBu4LctGgIp5hdEFAkFxF97XeSPWCC7uf+PTiGdUgmQpQuehxdTjLahpHllXKdXmRQvAL++EecZYLOVAAWLQ4vSoIyhllYV3FjEfGVOUiF0AJjhOLz0EKA9vS4kdLWGhI6gSxirklnEVy0kThw6lrhny1ors/7LyW77diT85gjCEwOH4NHlzjutWH4INc5fzgbi2xl6dgPlJ3vz6w5StweJ/YfH3Sd69aBXsIORCbM+nqSNyLbnWwZqgyzrQZI0g4SZQw0WpE5IGo9BhLNHFsnjTXWuB6pI/PXbb181gU4xvSUMwImLPO+iiP8v4+QTKRufo1O0HkRnIzSEr9jCn4kNMCXiWIpJ8qxwJ9JopQEhAeL+MmJxRSS9QQXvAVCol1B70OaHVSbxgOJGSWrbBjJtq7nOYzUokvny8ZQdVykl4NvyLUtHwUNvcOsk5BeE+qBPOng8KXpdgqinQPsIxAsdGlY1qxnUQZMNsRJNpwtsky0AVQKIIiPp6J6z7EwHPhuAEf9KuEp8Yflyz2+/uqWxd7ZRvZOlt4wB8unKndriUd1877iGPjmm0TPFrKvIb07LAHnuWZEbhguQxXwAJq1mclB0xg93Pny9GOOwMbbAQjdEggZDbjIEo3MYgJnxOq+QagyKI6926tHxmGWAHcNAz9NI3BLmBEW5MSz5wYevOdpjVPFTTiyLgSFH68DVrIG/AeeorIxHwFd7CHnGLoh9BB3fW+WX7gXk7/6f3N62F73F9LYwACfunin7kNIdTd7SHafXJU26FNrDJzpATSkGmARjKqqADOybxgoQKsTdJ5kkf1p4vmeRhZ2FjLvK19jxiJwLrL5sTD+DQTh7/PAPVzd8TjfLAEQkU8+0G8jyEMj09G24rrsk1AWo38Pnrqv6PquKjN1y5aK35ZDMU2oEVqJt0BwbxpHOXNIfZEE9DiPwPGisVQkDrTct5IEGxBk/OkOF260wVIl7iwLuOTuznMHJcgakE793/jInssfXg2fLSq/YyTzB0hM6nV27cDpGwNJ7FKDcppmMZbdocZgDVI1ZHRRegRT7gal2ATvskb1mJJRYaKG3id42CZBPG7YO+6RaeSkI4xV9CfZuPqPGpGw++NdVfEOobCAHFQRgipG4fAmAClVAPiRNUQkJMAkAFasaXAAE5f8uDwVny3IkAqQGHorzcxmAAY7NqXVtlyXzQKDOd/C7n2l40xC9k6V3BANkiQNI7ma14dET9lV9SfN9molWAUATgIHmxfzYtXw1UNwB+Wgdz2wmDMCK7A2EUPEE1sK8pzJAvkGaFw4GMAhQIRsnAVlKAZjzWkuN+MTKtsDDzZ7w0etP0SZWJ0PvKAbIp0/viNcNqfaZuo3X9ybph6MabTMt5kUsHcxJu49sKlx8EgxA8iVCJQbIjwXkymE5t5NlbBUwBzSPTAabw8JWnxv/pdEj7f7a5+b0oHcgvW02wHTUcL5vtG8P2iH3dO4KiqFf1/roiiQVzjQMtC5lslW6hVoAmZPSu3hkY/TpZ/O5uiKHT8P+U2c3Zebyo3S/Z9FIvrei4sLDioT3KaK4F1zAPTKRD3okc8iNXMbi2j/PaP3A20HvWAmQT1w1HBNStUNxc05cZ60pA7WCgl3McQRqO6BKHTBDLVjkHrAbxMloIcqsncssIs26gWxSlWRtgFxMn7Lc7B6UD05lniGMWOAFqtDJ4yLDI+DLD4MEGQDD7pgs0G5FEbtCHrv3zOXzBm95E+cinio6LRggn9r5ptOHkJiaiM/rjFsLxlN4AUCxc1Xdnm9YrJ5ym4ESF6O2GzSxC6dPGeFMAYY9D+qARWFTMokd5LmGaSmSDujQNFKAObzLmAHpVAgE6ISQGHT4UECWurwu1hlyoY66gO+4rFudy2trVR5wQqcRnXYMUIr4jt3qBRN+QOzn9sVwWyJF54E3Nrc/arUqBFVBWNUX05jsIYhvOuWiHOPngR2aPsOMe3KADlIw2KgEgaSkZmtemRgugI8hbazayxeCohNhN+maE0Kd3UPGsfrPtEbb3yK07lTS/wPharTpJAKLsAAAAABJRU5ErkJggg==\""],"mappings":";mBAAA"}
|
|
1
|
+
{"version":3,"file":"x2y2-45WDooeh.js","names":[],"sources":["../src/react/ui/images/marketplaces/x2y2.png"],"sourcesContent":["\"data:image/png;base64,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\""],"mappings":";mBAAA"}
|