@kodiak-finance/orderly-portfolio 2.9.2-alpha.0 → 2.9.2
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/dist/index.js.map +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +18 -18
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/layout/context.tsx","../src/pages/overview/assets/assets.script.ts","../src/pages/overview/assets/assetsHeader.tsx","../src/pages/overview/assets/assets.ui.tsx","../src/pages/overview/assets/assets.widget.tsx","../src/pages/overview/assets/index.ts","../src/pages/overview/historyDataGroup/historyDataGroup.script.ts","../src/pages/overview/assetHistory/column.tsx","../src/pages/overview/helper/date.ts","../src/pages/overview/assetHistory/assetHistory.script.ts","../src/pages/overview/assetHistory/assetHistory.ui.tsx","../src/pages/overview/assetHistory/assetHistory.ui.mobile.tsx","../src/pages/overview/assetHistory/assetHistory.widget.tsx","../src/pages/overview/assetHistory/index.tsx","../src/pages/overview/funding/column.tsx","../src/pages/overview/funding/fundingHistory.ui.tsx","../src/pages/overview/funding/fundingHistory.ui.mobile.tsx","../src/pages/overview/funding/useDataSource.script.ts","../src/pages/overview/funding/fundingHistory.widget.tsx","../src/pages/overview/funding/index.tsx","../src/pages/overview/distribution/column.tsx","../src/pages/overview/distribution/distribution.ui.tsx","../src/pages/overview/distribution/distribution.ui.mobile.tsx","../src/pages/overview/distribution/useDataSource.script.ts","../src/pages/overview/distribution/distribution.widget.tsx","../src/pages/overview/distribution/index.tsx","../src/pages/overview/TransferHistory/transfer.mobile.ui.tsx","../src/pages/overview/TransferHistory/column.tsx","../src/pages/overview/TransferHistory/transfer.ui.tsx","../src/pages/overview/TransferHistory/useDataSource.script.ts","../src/pages/overview/TransferHistory/transfer.widget.tsx","../src/pages/overview/TransferHistory/index.tsx","../src/hooks/useAccountsData.ts","../src/hooks/useAssetTotalValue.ts","../src/pages/assets/assetsPage/assets.ui.desktop.tsx","../src/hooks/useAccountFilter.ts","../src/hooks/useAssetsAccountFilter.ts","../src/hooks/index.ts","../src/pages/assets/convertPage/convert.script.ts","../src/pages/assets/convertPage/convert.column.tsx","../src/pages/assets/convertPage/convert.ui.desktop.tsx","../src/pages/assets/convertPage/convert.ui.mobile.tsx","../src/pages/assets/convertPage/convert.widget.tsx","../src/pages/overview/VaultsHistory/column.tsx","../src/pages/overview/VaultsHistory/transfer.ui.tsx","../src/pages/overview/VaultsHistory/useDataSource.script.ts","../src/pages/overview/VaultsHistory/vaults.ui.mobile.tsx","../src/pages/overview/VaultsHistory/transfer.widget.tsx","../src/pages/overview/VaultsHistory/index.tsx","../src/pages/overview/historyDataGroup/historyDataGroup.ui.desktop.tsx","../src/pages/overview/historyDataGroup/historyDataGroup.ui.mobile.tsx","../src/pages/overview/historyDataGroup/historyDataGroup.widget.tsx","../src/pages/overview/historyDataGroup/index.ts","../src/pages/overview/provider/overviewContext.tsx","../src/pages/overview/assetChart/assetsChart.script.ts","../src/pages/overview/shared/useAssetHistory.ts","../src/pages/overview/shared/periodHeader.tsx","../src/pages/overview/assetChart/assetsChart.ui.tsx","../src/pages/overview/assetChart/assetsChart.widget.tsx","../src/pages/overview/assetChart/index.ts","../src/pages/overview/performance/performance.ui.tsx","../src/pages/assets/type.ts","../src/pages/overview/performance/performance.script.ts","../src/pages/overview/performance/performance.widget.tsx","../src/pages/overview/performance/index.ts","../src/pages/feeTier/icons/effectiveFee.tsx","../src/pages/feeTier/icons/index.ts","../src/pages/feeTier/feeTierHeader.tsx","../src/pages/api/apiManager.script.tsx","../src/pages/api/dialog/createApiKey.tsx","../src/pages/api/dialog/createdApiKey.tsx","../src/pages/api/dialog/deleteApiKey.tsx","../src/pages/api/dialog/editApiKey.tsx","../src/pages/api/apiManager.ui.tsx","../src/layout/layout.script.tsx","../src/layout/layout.ui.tsx","../src/layout/layout.ui.mobile.tsx","../src/layout/layout.widget.tsx","../src/pages/overview/index.tsx","../src/pages/overview/performanceMobileDialog/performance.ui.tsx","../src/pages/overview/mobile/useRewardsData.script.ts","../src/pages/overview/provider/overviewProvider.tsx","../src/pages/overview/performanceMobileDialog/performance.widget.tsx","../src/pages/overview/mobile/mobile.widget.tsx","../src/pages/overview/portfolioChartsMobile/portfolioChartsMobile.widget.tsx","../src/pages/overview/portfolioChartsMobile/portfolioChartsMobile.script.ts","../src/pages/overview/portfolioChartsMobile/portfolioChartsMobile.ui.tsx","../src/pages/overview/mobile/accountStatus.ui.mobile.tsx","../src/pages/overview/mobile/affiliateCard.ui.mobile.tsx","../src/pages/overview/mobile/portfolioHandle.ui.mobile.tsx","../src/pages/overview/mobile/portfolioVaule.ui.mobile.tsx","../src/pages/overview/mobile/settingRouter.ui.mobile.tsx","../src/pages/overview/mobile/traderCard.ui.mobile.tsx","../src/pages/overview/main.tsx","../src/pages/feeTier/index.tsx","../src/pages/feeTier/feeTier.ui.tsx","../src/pages/feeTier/feeTier.widget.tsx","../src/pages/feeTier/page.tsx","../src/pages/feeTier/column.tsx","../src/pages/feeTier/dataSource.ts","../src/pages/feeTier/feeTier.script.ts","../src/pages/positions/page.tsx","../src/pages/orders/page.tsx","../src/pages/api/index.ts","../src/pages/api/apiManager.widget.tsx","../src/pages/api/apiManager.page.tsx","../src/pages/setting/index.ts","../src/pages/setting/setting.script.tsx","../src/pages/setting/components/soundRadioButton.tsx","../src/pages/setting/components/themeSettingCard.tsx","../src/pages/setting/setting.ui.desktop.tsx","../src/pages/setting/setting.ui.mobile.tsx","../src/pages/setting/setting.ui.tsx","../src/pages/setting/setting.widget.tsx","../src/pages/setting/setting.page.tsx","../src/pages/assets/index.tsx","../src/pages/assets/assetsPage/assets.script.ts","../src/pages/assets/assetsPage/assets.column.tsx","../src/pages/assets/assetsPage/assets.widget.tsx","../src/pages/assets/assetsPage/assets.ui.mobile.tsx","../src/pages/assets/page.tsx","../src/pages/history/index.tsx","../src/pages/history/history.page.tsx","../src/pages/symbolPerformance/index.tsx","../src/pages/symbolPerformance/useSymbolPerformanceData.ts","../src/pages/symbolPerformance/useTrades.ts","../src/pages/symbolPerformance/symbolPerformance.script.ts","../src/pages/symbolPerformance/dateUtils.ts","../src/pages/symbolPerformance/pnlRankingChart.tsx","../src/pages/symbolPerformance/symbolSelector.tsx","../src/pages/symbolPerformance/useKlineData.ts","../src/pages/symbolPerformance/symbolPerformance.ui.tsx","../src/pages/symbolPerformance/pnlRankingChartMobile.tsx","../src/pages/symbolPerformance/symbolPerformance.ui.mobile.tsx","../src/pages/symbolPerformance/symbolPerformance.widget.tsx","../src/pages/symbolPerformance/page.tsx"],"names":["createContext","useContext","useState","useMemo","jsx","useWalletConnector","useAccount","useCollateral","useAppContext","usePositionStream","useLeverage","useLocalStorage","useScreen","DepositAndWithdrawWithSheetId","DepositAndWithdrawWithDialogId","AccountStatusEnum","modal","LeverageWidgetWithDialogId","useCallback","TransferSheetId","TransferDialogId","useMaxWithdrawal","useTranslation","jsxs","Flex","CardTitle","Button","ArrowDownSquareFillIcon","ArrowLeftRightIcon","ArrowUpSquareFillIcon","Card","Fragment","Statistic","Text","EyeIcon","EyeCloseIcon","Either","gradientTextVariants","Divider","AuthGuard","Grid","Tooltip","toast","TokenIcon","AssetHistoryStatusEnum","capitalizeFirstLetter","Decimal","differenceInDays","setHours","AssetHistorySideEnum","getYear","getMonth","getDate","useAppStore","subtractDaysFromCurrentDate","usePagination","startTime","endTime","set","useAssetsHistory","useTransferHistory","useChainInfo","dataSource","DataFilter","AuthGuardDataTable","Badge","ListView","EmptyDataState","ArrowRightShortIcon","init_column","useBadgeBySymbol","useSymbolsInfo","symbol","useFundingFeeHistory","type","init_useDataSource_script","useDistributionHistory","formatAddress","capitalizeString","produce","useColumns","React","useIndexPricesStream","cn","ArrowDownShortIcon","pick","Tabs","TabPanel","account","state","useSubAccountQuery","data","EMPTY_LIST","useModal","SimpleDialog","DataTable","ScrollIndicator","SimpleSheet","item","init_transfer_ui","useVaultsHistory","init_transfer_widget","LazyConvertHistoryWidget","useEffect","FeeTierIcon","ServerFillIcon","ArrowLeftRightSquareFill","VaultsIcon","LazyTransferHistoryWidget","useDataTap","PeriodType","localKey","formatDateRange","format","subDays","useRef","zero","usePrivateQuery","useStatisticsDaily","useUserStatistics","useBalanceTopic","totalValue","totalTransferIn","totalTransferOut","lastItem","Box","AssetAreaChart","LazyPeriodTitle","PnLBarChart","PnlAreaChart","VolBarChart","useId","numberToHumanStyle","useScaffoldContext","useFeeState","createElement","useApiKeyManager","res","hint","CopyIcon","Trans","AuthGuardTooltip","PlusIcon","AuthGuardEmpty","PortfolioLeftSidebarPath","Scaffold","SideBar","MainNavMobile","BottomNav","AssetLineChart","TWType","useGetClaimed","DistributionId","useCurEpochEstimate","useAllBrokers","noCacheConfig","useEpochInfo","useConfig","registerSimpleSheet","i18n","registerSimpleDialog","ChevronRightIcon","AreaChart","Area","useChains","ChainIcon","ChainNamespace","parseJSON","isNumber","AffiliateIcon","CalendarMinusIcon","getLinkDeviceStorage","SettingFillIcon","TraderMobileIcon","commifyOptional","useGetEnv","DepositStatusWidget","formatDiscountRate","ArrowRightUpSquareFillIcon","useAccountInfo","useSWR","exportToCSVFile","getPositionExportColumns","getPositionHistoryExportColumns","getLiquidationExportColumns","CombinePositionsWidget","PositionsWidget","PositionHistoryWidget","LiquidationWidget","InfoCircleIcon","page_exports","OrdersWidget","useMutation","useOrderlyContext","useOrderlyTheme","useDebouncedCallback","Select","Switch","LanguageSwitcherWidget","assets_exports","visible","holding","useCanTrade","addDays","usePrivateInfiniteQuery","AggregationWindow","window","parseISO","DropdownMenuRoot","DropdownMenuTrigger","CaretDownIcon","DropdownMenuPortal","DropdownMenuContent","Input","endOfDay","CombinedPnLChart","CombinedVolumeChart","CombinedPriceChart","CombinedFeesChart","formatCurrency","MakerTakerShare"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IASM,eAIO,gBAAA,EAIA,cAAA;AAjBb,IAAA,YAAA,GAAA,KAAA,CAAA;AAAA,EAAA,wBAAA,GAAA;AASA,IAAM,gBAAgBA,qBAAA,CAAkC;AAAA,MACtD,QAAA,EAAU;AAAA,KACW,CAAA;AAEhB,IAAM,mBAAmB,MAAM;AACpC,MAAA,OAAOC,mBAAW,aAAa,CAAA;AAAA,IACjC,CAAA;AAEO,IAAM,cAAA,GAET,CAAC,KAAA,KAAU;AACb,MAAA,MAAM,EAAE,aAAA,EAAe,QAAA,EAAS,GAAI,KAAA;AACpC,MAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIC,iBAAS,IAAI,CAAA;AAC7C,MAAA,MAAM,aAAA,GAAgBC,eAAAA;AAAA,QACpB,OAAO;AAAA,UACL,QAAA;AAAA,UACA,gBAAA,EAAkB,WAAA;AAAA,UAClB;AAAA,SACF,CAAA;AAAA,QACA,CAAC,QAAA,EAAU,WAAA,EAAa,aAAa;AAAA,OACvC;AACA,MAAA,uBACEC,cAAAA,CAAC,aAAA,CAAc,UAAd,EAAuB,KAAA,EAAO,eAC5B,QAAA,EACH,CAAA;AAAA,IAEJ,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;ACnCA,IAqBa,cAAA;AArBb,IAAA,kBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,4CAAA,GAAA;AAqBO,IAAM,iBAAiB,MAAM;AAClC,MAAA,MAAM,EAAE,OAAA,EAAS,SAAA,EAAU,GAAIC,+BAAA,EAAmB;AAClD,MAAA,MAAM,EAAE,KAAA,EAAO,aAAA,EAAc,GAAIC,uBAAA,EAAW;AAC5C,MAAA,MAAM,EAAE,UAAA,EAAY,cAAA,EAAe,GAAIC,0BAAA,EAAc;AACrD,MAAA,MAAM,EAAE,YAAA,EAAc,eAAA,EAAgB,GAAIC,6BAAA,EAAc;AACxD,MAAA,MAAM,CAAC,IAAI,CAAA,GAAIC,8BAAA,EAAkB;AACjC,MAAA,MAAM,EAAE,WAAA,EAAY,GAAIC,wBAAA,EAAY;AACpC,MAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIC,4BAAA,CAAgB,0BAA0B,IAAI,CAAA;AAC5E,MAAA,MAAM,EAAE,QAAA,EAAS,GAAIC,mBAAAA,EAAU;AAC/B,MAAA,MAAM,WAAA,GAAc,WAChBC,+CAAA,GACAC,gDAAA;AACJ,MAAA,MAAM,WAAA,GAAc,KAAA,CAAM,WAAA,IAAe,EAAC;AAE1C,MAAA,MAAM,QAAA,GAAWX,gBAAQ,MAAM;AAC7B,QAAA,OACE,CAAC,YAAA,IACD,CAAC,eAAA,KACA,KAAA,CAAM,WAAWY,8BAAA,CAAkB,aAAA,IAClC,KAAA,CAAM,MAAA,KAAWA,8BAAA,CAAkB,6BAAA,CAAA;AAAA,MAEzC,GAAG,CAAC,KAAA,CAAM,MAAA,EAAQ,YAAA,EAAc,eAAe,CAAC,CAAA;AAEhD,MAAA,MAAM,iBAAiB,MAAM;AAC3B,QAAAC,eAAA,CAAM,KAAKC,4CAA0B,CAAA;AAAA,MACvC,CAAA;AAEA,MAAA,MAAM,SAAA,GAAYC,oBAAY,MAAM;AAClC,QAAAF,eAAA,CAAM,IAAA,CAAK,WAAA,EAAa,EAAE,SAAA,EAAW,WAAW,CAAA;AAAA,MAClD,CAAA,EAAG,CAAC,WAAW,CAAC,CAAA;AAEhB,MAAA,MAAM,UAAA,GAAaE,oBAAY,MAAM;AACnC,QAAAF,eAAA,CAAM,IAAA,CAAK,WAAA,EAAa,EAAE,SAAA,EAAW,YAAY,CAAA;AAAA,MACnD,CAAA,EAAG,CAAC,WAAW,CAAC,CAAA;AAEhB,MAAA,MAAM,UAAA,GAAaE,oBAAY,MAAM;AACnC,QAAA,IAAI,QAAA,EAAU;AACZ,UAAAF,eAAA,CAAM,KAAKG,iCAAe,CAAA;AAAA,QAC5B,CAAA,MAAO;AACL,UAAAH,eAAA,CAAM,KAAKI,kCAAgB,CAAA;AAAA,QAC7B;AAAA,MACF,CAAA,EAAG,CAAC,QAAQ,CAAC,CAAA;AAEb,MAAA,MAAM,iBAAA,GAAoBC,8BAAiB,MAAM,CAAA;AAEjD,MAAA,OAAO;AAAA,QACL,QAAA;AAAA,QACA,OAAA;AAAA,QACA,cAAA,EAAgB,UAAA;AAAA,QAChB,cAAA;AAAA,QACA,iBAAA;AAAA,QACA,SAAA,EAAW,KAAK,UAAA,CAAW,gBAAA;AAAA,QAC3B,WAAW,IAAA,CAAK,kBAAA;AAAA,QAChB,eAAA,EAAiB,WAAA;AAAA,QACjB,cAAA;AAAA,QACA,OAAA;AAAA,QACA,YAAA;AAAA,QACA,aAAA,EAAe,MAAM,UAAA,CAAW,CAAC,OAAO,CAAA;AAAA,QACxC,SAAA;AAAA,QACA,UAAA;AAAA,QACA,UAAA;AAAA,QACA,SAAA;AAAA,QACA,aAAA;AAAA,QACA,aAAA,EAAe,aAAa,MAAA,GAAS;AAAA,OACvC;AAAA,IACF,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;ACtFA,IAoBa,YAAA;AApBb,IAAA,iBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,4CAAA,GAAA;AAoBO,IAAM,YAAA,GAA0B,CAAC,KAAA,KAAU;AAChD,MAAA,MAAM,EAAE,CAAA,EAAE,GAAIC,0BAAAA,EAAe;AAE7B,MAAA,uBACEC,eAAAA,CAACC,cAAAA,EAAA,EAAK,SAAS,SAAA,EACb,QAAA,EAAA;AAAA,wBAAApB,cAAAA,CAACqB,mBAAA,EAAA,EAAW,QAAA,EAAA,CAAA,CAAE,iBAAiB,CAAA,EAAE,CAAA;AAAA,wBACjCF,eAAAA,CAACC,cAAAA,EAAA,EAAK,KAAK,CAAA,EACR,QAAA,EAAA;AAAA,UAAA,KAAA,CAAM,iCACLpB,cAAAA;AAAA,YAACsB,gBAAA;AAAA,YAAA;AAAA,cACC,UAAU,KAAA,CAAM,QAAA;AAAA,cAChB,IAAA,EAAK,IAAA;AAAA,cACL,OAAA,EAAS,MAAM,KAAA,CAAM,SAAA,IAAY;AAAA,cACjC,IAAA,kBACEtB,cAAAA,CAACuB,iCAAA,EAAA,EAAwB,WAAU,2BAAA,EAA4B,CAAA;AAAA,cAEjE,aAAA,EAAY,yCAAA;AAAA,cAEX,YAAE,gBAAgB;AAAA;AAAA,WACrB;AAAA,UAED,KAAA,CAAM,iCACLvB,cAAAA;AAAA,YAACsB,gBAAA;AAAA,YAAA;AAAA,cACC,UAAU,KAAA,CAAM,QAAA;AAAA,cAChB,IAAA,EAAK,IAAA;AAAA,cACL,KAAA,EAAM,WAAA;AAAA,cACN,OAAA,EAAS,MAAM,KAAA,CAAM,UAAA,IAAa;AAAA,cAClC,IAAA,kBAAMtB,cAAAA,CAACwB,4BAAA,EAAA,EAAmB,WAAU,wBAAA,EAAyB,CAAA;AAAA,cAE5D,YAAE,iBAAiB;AAAA;AAAA,WACtB;AAAA,UAED,KAAA,CAAM,iCACLxB,cAAAA;AAAA,YAACsB,gBAAA;AAAA,YAAA;AAAA,cACC,UAAU,KAAA,CAAM,QAAA;AAAA,cAChB,IAAA,EAAK,IAAA;AAAA,cACL,KAAA,EAAM,WAAA;AAAA,cACN,OAAA,EAAS,MAAM,KAAA,CAAM,UAAA,IAAa;AAAA,cAClC,IAAA,kBAAMtB,cAAAA,CAACyB,+BAAA,EAAA,EAAsB,WAAU,wBAAA,EAAyB,CAAA;AAAA,cAChE,aAAA,EAAY,0CAAA;AAAA,cAEX,YAAE,iBAAiB;AAAA;AAAA;AACtB,SAAA,EAEJ;AAAA,OAAA,EACF,CAAA;AAAA,IAEJ,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;AClEA,IAoBa,UAuEP,OAAA,EAsBO,cAAA;AAjHb,IAAA,cAAA,GAAA,KAAA,CAAA;AAAA,EAAA,yCAAA,GAAA;AAkBA,IAAA,iBAAA,EAAA;AAEO,IAAM,QAAA,GAET,CAAC,KAAA,KAAU;AACb,MAAA,MAAM,EAAE,CAAA,EAAE,GAAIP,0BAAAA,EAAe;AAC7B,MAAA,uBACElB,cAAAA;AAAA,QAAC0B,cAAA;AAAA,QAAA;AAAA,UACC,UAAA,EAAY,EAAE,MAAA,EAAQ,cAAA,EAAgB,MAAM,eAAA,EAAgB;AAAA,UAC5D,uBACE1B,cAAAA;AAAA,YAAC,YAAA;AAAA,YAAA;AAAA,cACC,QAAA,EAAU,CAAC,KAAA,CAAM,QAAA;AAAA,cACjB,eAAe,KAAA,CAAM,aAAA;AAAA,cACrB,WAAW,KAAA,CAAM,SAAA;AAAA,cACjB,YAAY,KAAA,CAAM,UAAA;AAAA,cAClB,YAAY,KAAA,CAAM,UAAA;AAAA,cAClB,eAAe,KAAA,CAAM;AAAA;AAAA,WACvB;AAAA,UAGF,QAAA,kBAAAmB,eAAAA,CAAAQ,mBAAAA,EAAA,EACE,QAAA,EAAA;AAAA,4BAAA3B,cAAAA;AAAA,cAAC4B,mBAAA;AAAA,cAAA;AAAA,gBACC,uBACET,eAAAA,CAACC,cAAAA,EAAA,EAAK,KAAK,CAAA,EACT,QAAA,EAAA;AAAA,kCAAApB,eAAC6B,cAAA,EAAA,EAAK,SAAA,EAAW,EAAA,EAAK,QAAA,EAAA,CAAA,CAAE,mBAAmB,CAAA,EAAE,CAAA;AAAA,kCAC7C7B,cAAAA;AAAA,oBAAC,QAAA;AAAA,oBAAA;AAAA,sBACC,SAAS,MAAM;AACb,wBAAA,KAAA,CAAM,aAAA,EAAc;AAAA,sBACtB,CAAA;AAAA,sBACA,aAAA,EAAY,qCAAA;AAAA,sBAEX,gBAAM,OAAA,mBACLA,cAAAA,CAAC8B,iBAAA,EAAA,EAAQ,MAAM,EAAA,EAAI,KAAA,EAAO,OAAA,EAAS,CAAA,mBAEnC9B,cAAAA,CAAC+B,sBAAA,EAAA,EAAa,IAAA,EAAM,EAAA,EAAI,OAAO,OAAA,EAAS;AAAA;AAAA;AAE5C,iBAAA,EACF,CAAA;AAAA,gBAGF,QAAA,kBAAA/B,cAAAA,CAACgC,gBAAA,EAAA,EAAO,KAAA,EAAO,KAAA,CAAM,QAAA,EAAW,IAAA,kBAAMhC,cAAAA,CAAC,OAAA,EAAA,EAAQ,CAAA,EAC7C,QAAA,kBAAAA,cAAAA;AAAA,kBAAC6B,cAAA,CAAK,OAAA;AAAA,kBAAL;AAAA,oBACC,SAAS,KAAA,CAAM,OAAA;AAAA,oBACf,IAAA,EAAK,MAAA;AAAA,oBAEL,KAAA,EAAO,EAAE,sBAAA,EAAwB,OAAA,EAAQ;AAAA,oBACzC,aAAA,EAAc,0DAAA;AAAA,oBACd,WAAWI,8BAAA,CAAqB;AAAA,sBAC9B,SAAA,EAAW,4BAAA;AAAA,sBACX,KAAA,EAAO;AAAA,qBACR,CAAA;AAAA,oBAEA,gBAAM,cAAA,IAAkB;AAAA;AAAA,iBAC3B,EACF;AAAA;AAAA,aACF;AAAA,4BACAjC,cAAAA,CAACkC,iBAAA,EAAA,EAAQ,SAAA,EAAU,UAAA,EAAW,WAAW,CAAA,EAAG,CAAA;AAAA,4BAC5ClC,cAAAA,CAACmC,4BAAA,EAAA,EAAU,WAAA,EAAa,EAAE,MAAM,IAAA,EAAM,SAAA,EAAW,IAAA,EAAK,EACpD,QAAA,kBAAAnC,cAAAA;AAAA,cAAC,cAAA;AAAA,cAAA;AAAA,gBACC,WAAW,KAAA,CAAM,SAAA;AAAA,gBACjB,WAAW,KAAA,CAAM,SAAA;AAAA,gBACjB,gBAAgB,KAAA,CAAM,cAAA;AAAA,gBACtB,mBAAmB,KAAA,CAAM,iBAAA;AAAA,gBACzB,iBAAiB,KAAA,CAAM,eAAA;AAAA,gBACvB,gBAAgB,KAAA,CAAM,cAAA;AAAA,gBACtB,SAAS,KAAA,CAAM;AAAA;AAAA,aACjB,EACF;AAAA,WAAA,EACF;AAAA;AAAA,OACF;AAAA,IAEJ,CAAA;AAEA,IAAM,UAAc,MAAM;AACxB,MAAA,uBACEmB,eAAAA,CAACC,cAAAA,EAAA,EAAK,GAAA,EAAK,CAAA,EAAG,WAAW,SAAA,EACvB,QAAA,EAAA;AAAA,wBAAApB,cAAAA,CAAC6B,eAAK,QAAA,EAAL,EAAc,OAAM,OAAA,EAAQ,MAAA,EAAO,QAAO,QAAA,EAAA,IAAA,EAE3C,CAAA;AAAA,wBACA7B,cAAAA,CAAC6B,cAAA,EAAA,EAAK,QAAA,EAAA,MAAA,EAAI;AAAA,OAAA,EACZ,CAAA;AAAA,IAEJ,CAAA;AAaO,IAAM,cAAA,GAAiB,CAAC,KAAA,KAA+B;AAC5D,MAAA,MAAM,EAAE,CAAA,EAAE,GAAIX,0BAAAA,EAAe;AAE7B,MAAA,MAAM,qBAAA,GACJ,KAAA,CAAM,iBAAA,KAAsB,MAAA,IAAa,KAAA,CAAM,sBAAsB,IAAA,GACjE,IAAA,GACA,KAAA,CAAM,iBAAA,CAAkB,QAAA,EAAS;AAEvC,MAAA,uBACEC,eAAAA,CAACiB,cAAA,EAAA,EAAK,IAAA,EAAM,CAAA,EAAG,WAAU,UAAA,EACvB,QAAA,EAAA;AAAA,wBAAApC,cAAAA,CAAC4B,uBAAU,KAAA,EAAO,CAAA,CAAE,sBAAsB,CAAA,EACxC,QAAA,kBAAAT,eAAAA,CAACC,cAAAA,EAAA,EACC,QAAA,EAAA;AAAA,0BAAApB,cAAAA;AAAA,YAAC6B,cAAA,CAAK,GAAA;AAAA,YAAL;AAAA,cACC,QAAA,EAAQ,IAAA;AAAA,cACR,IAAA,EAAK,IAAA;AAAA,cACL,MAAA,EAAO,UAAA;AAAA,cACP,SAAS,KAAA,CAAM,OAAA;AAAA,cAEd,QAAA,EAAA,KAAA,CAAM;AAAA;AAAA,WACT;AAAA,0BACA7B,cAAAA;AAAA,YAAC6B,cAAA,CAAK,GAAA;AAAA,YAAL;AAAA,cACC,QAAA,EAAQ,IAAA;AAAA,cACR,IAAA,EAAK,aAAA;AAAA,cACL,IAAA,EAAK,IAAA;AAAA,cACL,MAAA,EAAO,UAAA;AAAA,cACP,MAAA,EAAQ,GAAA;AAAA,cACR,MAAA,EAAQ,GAAA;AAAA,cACR,SAAS,KAAA,CAAM,OAAA;AAAA,cAEd,QAAA,EAAA,KAAA,CAAM;AAAA;AAAA;AACT,SAAA,EACF,CAAA,EACF,CAAA;AAAA,wBACA7B,cAAAA;AAAA,UAAC4B,mBAAA;AAAA,UAAA;AAAA,YACC,uBACE5B,cAAAA;AAAA,cAACqC,iBAAA;AAAA,cAAA;AAAA,gBACC,OAAA,EAAS,EAAE,qCAAA,EAAuC;AAAA,kBAChD,MAAA,EAAQ;AAAA,iBACT,CAAA;AAAA,gBACD,SAAA,EAAU,mBAAA;AAAA,gBACV,aAAA,EAAe,GAAA;AAAA,gBAEf,QAAA,kBAAArC,cAAAA;AAAA,kBAAC6B,cAAA;AAAA,kBAAA;AAAA,oBACC,IAAA,EAAK,IAAA;AAAA,oBACL,SAAA,EAAW,EAAA;AAAA,oBACX,SAAA,EAAU,sEAAA;AAAA,oBAET,YAAE,sCAAsC;AAAA;AAAA;AAC3C;AAAA,aACF;AAAA,YAGF,KAAA,EAAM,OAAA;AAAA,YAEN,YAAY,EAAE,IAAA,EAAM,IAAA,EAAM,OAAA,EAAS,MAAM,OAAA,EAAQ;AAAA,YAEhD,QAAA,EAAA,KAAA,CAAM;AAAA;AAAA;AACT,OAAA,EACF,CAAA;AAAA,IAEJ,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;AC7KA,IAIa,WAAA;AAJb,IAAA,kBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,6CAAA,GAAA;AACA,IAAA,kBAAA,EAAA;AACA,IAAA,cAAA,EAAA;AAEO,IAAM,cAAwB,MAAM;AACzC,MAAA,MAAM,EAAE,OAAA,EAAS,aAAA,EAAe,GAAG,IAAA,KAAS,cAAA,EAAe;AAC3D,MAAA,uBACE7B,cAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UAEC,eAAA,EAAiB,aAAA;AAAA,UACjB,OAAA,EAAS,aAAA;AAAA,UACR,GAAG;AAAA;AAAA,OACN;AAAA,IAEJ,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACdA,IAAA,cAAA,GAAA,EAAA;AAAA,QAAA,CAAA,cAAA,EAAA;AAAA,EAAA,WAAA,EAAA,MAAA,WAAA;AAAA,EAAA,QAAA,EAAA,MAAA,QAAA;AAAA,EAAA,cAAA,EAAA,MAAA;AAAA,CAAA,CAAA;AAAA,IAAA,WAAA,GAAA,KAAA,CAAA;AAAA,EAAA,oCAAA,GAAA;AAAA,IAAA,kBAAA,EAAA;AACA,IAAA,cAAA,EAAA;AACA,IAAA,kBAAA,EAAA;AAAA,EAAA;AAAA,CAAA,CAAA;ACFA,IAUa,yBAAA;AAVb,IAAA,4BAAA,GAAA,KAAA,CAAA;AAAA,EAAA,gEAAA,GAAA;AAUO,IAAM,4BAA4B,MAAM;AAC7C,MAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIF,iBAAkB,SAAS,CAAA;AACvD,MAAA,OAAO;AAAA,QACL,MAAA;AAAA,QACA,WAAA,EAAa;AAAA,OACf;AAAA,IACF,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;AChBA,IAoBa,sBAAA;AApBb,IAAA,WAAA,GAAA,KAAA,CAAA;AAAA,EAAA,4CAAA,GAAA;AAoBO,IAAM,sBAAA,GAAyB,CAAC,OAAA,KAAqB;AAC1D,MAAA,MAAM,EAAE,UAAA,EAAY,SAAA,EAAW,YAAA,EAAa,GAAI,OAAA;AAChD,MAAA,MAAM,EAAE,CAAA,EAAE,GAAIoB,0BAAAA,EAAe;AAE7B,MAAA,MAAM,MAAA,GAAS,CAAC,CAAA,KAAW;AACzB,QAAA,CAAA,CAAE,cAAA,EAAe;AACjB,QAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,QAAAoB,eAAA,CAAM,OAAA,CAAQ,CAAA,CAAE,oBAAoB,CAAC,CAAA;AAAA,MACvC,CAAA;AAEA,MAAA,MAAM,OAAA,GAAUvC,gBAAkB,MAAM;AACtC,QAAA,MAAM,UAAA,GAAqB;AAAA,UACzB,KAAA,EAAO,EAAE,aAAa,CAAA;AAAA,UACtB,SAAA,EAAW,OAAA;AAAA,UACX,KAAA,EAAO,GAAA;AAAA,UACP,MAAA,EAAQ,CAAC,KAAA,EAAO,MAAA,KAAW;AACzB,YAAA,IAAI,CAAC,KAAA,EAAO;AACV,cAAA,uBAAOC,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,6BAA4B,QAAA,EAAA,GAAA,EAAC,CAAA;AAAA,YACrD;AACA,YAAA,MAAM,YAAY,UAAA,EAAY,IAAA;AAAA,cAC5B,CAAC,SAAS,QAAA,CAAS,MAAA,CAAO,QAAQ,CAAA,KAAM,QAAA,CAAS,KAAK,QAAQ;AAAA,aAChE;AACA,YAAA,MAAM,oBAAoB,SAAA,EAAW,iBAAA;AACrC,YAAA,MAAM,IAAA,GAAO,CAAA,EAAG,iBAAiB,CAAA,IAAA,EAAO,KAAK,CAAA,CAAA;AAC7C,YAAA,uBACEA,eAAC,GAAA,EAAA,EAAE,IAAA,EAAY,QAAO,QAAA,EAAS,GAAA,EAAI,cAEjC,QAAA,kBAAAA,cAAAA;AAAA,cAAC6B,cAAAA,CAAK,SAAA;AAAA,cAAL;AAAA,gBACC,QAAA,EAAU,CAAC,CAAC,KAAA;AAAA,gBACZ,IAAA,EAAK,MAAA;AAAA,gBACL,SAAA,EAAU,mFAAA;AAAA,gBACV,MAAA;AAAA,gBAEC,QAAA,EAAA;AAAA;AAAA,aACH,EAEF,CAAA;AAAA,UAEJ;AAAA,SACF;AAEA,QAAA,MAAM,eAAA,GAA0B;AAAA,UAC9B,KAAA,EAAO,EAAE,kBAAkB,CAAA;AAAA,UAC3B,SAAA,EAAW,YAAA;AAAA,UACX,KAAA,EAAO,GAAA;AAAA,UACP,MAAA,EAAQ,CAAC,KAAA,EAAO,MAAA,KAAW;AACzB,YAAA,MAAM,SAAA,GAAY,SAAA,GACd,MAAA,CAAO,eAAA,GACP,MAAA,CAAO,aAAA;AAEX,YAAA,uBACE7B,cAAAA,CAAC6B,cAAAA,CAAK,SAAA,EAAL,EAAe,IAAA,EAAK,SAAA,EAAU,QAAA,EAAU,CAAC,CAAC,SAAA,EAAW,MAAA,EACnD,QAAA,EAAA,SAAA,EACH,CAAA;AAAA,UAEJ;AAAA,SACF;AAEA,QAAA,OAAO;AAAA,UACL;AAAA,YACE,KAAA,EAAO,EAAE,cAAc,CAAA;AAAA,YACvB,SAAA,EAAW,OAAA;AAAA,YACX,KAAA,EAAO,EAAA;AAAA,YACP,MAAA,EAAQ,CAAC,KAAA,KAAU;AACjB,cAAA,uBACEV,eAAAA,CAACC,cAAAA,EAAA,EAAK,MAAM,CAAA,EACV,QAAA,EAAA;AAAA,gCAAApB,cAAAA,CAACuC,mBAAA,EAAA,EAAU,IAAA,EAAM,KAAA,EAAO,MAAK,IAAA,EAAK,CAAA;AAAA,gCAClCvC,cAAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,KAAA,EAAM;AAAA,eAAA,EACf,CAAA;AAAA,YAEJ;AAAA,WACF;AAAA,UACA;AAAA,YACE,KAAA,EAAO,EAAE,aAAa,CAAA;AAAA,YACtB,SAAA,EAAW,cAAA;AAAA,YACX,KAAA,EAAO,EAAA;AAAA,YACP,IAAA,EAAM;AAAA,WACR;AAAA,UACA,eAAe,UAAA,GAAa,eAAA;AAAA,UAC5B;AAAA,YACE,KAAA,EAAO,EAAE,eAAe,CAAA;AAAA,YACxB,SAAA,EAAW,cAAA;AAAA,YACX,KAAA,EAAO,GAAA;AAAA,YACP,MAAA,EAAQ,CAAC,KAAA,EAAO,MAAA,KAAW;AACzB,cAAA,KAAA,GAAQ,YAAA,GAAe,QAAQ,MAAA,CAAO,MAAA;AACtC,cAAA,MAAM,SAAA,GAAY;AAAA,gBAChB,CAACwC,mCAAA,CAAuB,GAAG,GAAG,EAAE,6BAA6B,CAAA;AAAA,gBAC7D,CAACA,mCAAA,CAAuB,OAAO,GAAG,EAAE,6BAA6B,CAAA;AAAA,gBACjE,CAACA,mCAAA,CAAuB,OAAO,GAAG,EAAE,6BAA6B,CAAA;AAAA,gBACjE,CAACA,mCAAA,CAAuB,UAAU,GAAG,CAAA;AAAA,kBACnC;AAAA,iBACF;AAAA,gBACA,CAACA,mCAAA,CAAuB,SAAS,GAAG,CAAA;AAAA,kBAClC;AAAA,iBACF;AAAA,gBACA,CAACA,mCAAA,CAAuB,MAAM,GAAG,EAAE,4BAA4B;AAAA,eACjE;AACA,cAAA,OACE,UAAU,KAA+B,CAAA,IACzCC,+BAAA,CAAsB,KAAA,EAAO,aAAa,CAAA;AAAA,YAE9C;AAAA,WACF;AAAA,UACA;AAAA,YACE,KAAA,EAAO,EAAE,eAAe,CAAA;AAAA,YACxB,SAAA,EAAW,QAAA;AAAA,YACX,KAAA,EAAO,GAAA;AAAA,YACP,IAAA,EAAM,OAAA;AAAA,YACN,MAAA,EAAQ,CAAC,KAAA,EAAO,MAAA,KAAW;AACzB,cAAA,MAAM,SAAA,GAAY,IAAIC,oBAAA,CAAQ,KAAK,EAAE,KAAA,CAAM,MAAA,CAAO,OAAO,CAAC,CAAA;AAC1D,cAAA,uBACE1C,cAAAA;AAAA,gBAAC6B,cAAAA,CAAK,OAAA;AAAA,gBAAL;AAAA,kBACC,IAAI,MAAA,CAAO,QAAA;AAAA,kBACX,IAAA,EAAK,OAAA;AAAA,kBACL,QAAA,EAAQ,IAAA;AAAA,kBACR,cAAA,EAAc,IAAA;AAAA,kBACd,OAAA,EAAS,KAAA;AAAA,kBAER,sBAAY,SAAA,CAAU,QAAA,KAAa,SAAA,CAAU,GAAA,GAAM,QAAA;AAAS;AAAA,eAC/D;AAAA,YAEJ;AAAA;AACF,SACF;AAAA,MACF,GAAG,CAAC,CAAA,EAAG,UAAA,EAAY,SAAA,EAAW,YAAY,CAAC,CAAA;AAE3C,MAAA,OAAO,OAAA;AAAA,IACT,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;ACnJA,IAEa,uBAAA;AAFb,IAAA,SAAA,GAAA,KAAA,CAAA;AAAA,EAAA,mCAAA,GAAA;AAEO,IAAM,uBAAA,GAA0B,CAAC,SAAA,KAGlC;AACJ,MAAA,MAAM,EAAE,IAAA,EAAM,EAAA,mBAAK,IAAI,IAAA,IAAO,GAAI,SAAA;AAElC,MAAA,MAAM,IAAA,GAAOc,wBAAA,CAAiB,IAAA,EAAM,EAAE,CAAA;AAEtC,MAAA,IAAI,SAAS,CAAA,EAAG;AACd,QAAA,OAAO,CAAC,IAAA,EAAMC,gBAAA,CAAS,EAAA,EAAI,EAAE,CAAC,CAAA;AAAA,MAChC;AAEA,MAAA,OAAO,CAAC,MAAM,EAAE,CAAA;AAAA,IAClB,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;ACfA,IAyBa,qBAAA;AAzBb,IAAA,wBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,wDAAA,GAAA;AAYA,IAAA,SAAA,EAAA;AAaO,IAAM,qBAAA,GAAwB,CAAC,OAAA,KAAuC;AAC3E,MAAA,MAAM,EAAE,MAAK,GAAI,OAAA;AACjB,MAAA,MAAM,SAAA,GAAY,SAASC,iCAAA,CAAqB,OAAA;AAEhD,MAAA,MAAM,CAAC,KAAK,CAAA,GAAI/C,gBAAAA,CAAS,MAAM;AAC7B,QAAA,MAAM,CAAA,uBAAQ,IAAA,EAAK;AACnB,QAAA,OAAO,IAAI,IAAA,CAAKgD,eAAA,CAAQ,CAAC,CAAA,EAAGC,gBAAA,CAAS,CAAC,CAAA,EAAGC,eAAA,CAAQ,CAAC,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA,MAC9D,CAAC,CAAA;AAED,MAAA,MAAM,UAAA,GAAaC,wBAAA,CAAY,CAAC,KAAA,KAAU,MAAM,UAAU,CAAA;AAE1D,MAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAInD,iBAAsB,YAAA,kBAAsB;AAExE,MAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIA,gBAAAA,CAAiB;AAAA,QACjDoD,wCAAA,CAA4B,IAAI,KAAK,CAAA;AAAA,QACrC;AAAA,OACD,CAAA;AACD,MAAA,MAAM,EAAE,IAAA,EAAM,QAAA,EAAU,OAAA,EAAS,eAAA,KAAoBC,uBAAA,EAAc;AAEnE,MAAA,MAAM,EAAE,SAAA,EAAW,OAAA,EAAQ,GAAIpD,gBAAQ,MAAM;AAC3C,QAAA,MAAMqD,UAAAA,GAAY,SAAA,CAAU,CAAC,CAAA,CAAE,OAAA,EAAQ;AACvC,QAAA,MAAMC,QAAAA,GAAUC,WAAA,CAAI,SAAA,CAAU,CAAC,CAAA,EAAG;AAAA,UAChC,KAAA,EAAO,EAAA;AAAA,UACP,OAAA,EAAS,EAAA;AAAA,UACT,OAAA,EAAS,EAAA;AAAA,UACT,YAAA,EAAc;AAAA,SACf,EAAE,OAAA,EAAQ;AAEX,QAAA,OAAO,EAAE,SAAA,EAAAF,UAAAA,EAAW,OAAA,EAAAC,QAAAA,EAAQ;AAAA,MAC9B,CAAA,EAAG,CAAC,SAAS,CAAC,CAAA;AAEd,MAAA,MAAM,CAAC,WAAW,EAAE,IAAA,EAAM,WAAW,SAAA,EAAW,YAAA,EAAc,CAAA,GAC5DE,6BAAA;AAAA,QACE;AAAA,UACE,SAAA;AAAA,UACA,OAAA;AAAA,UACA,IAAA;AAAA,UACA,QAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA;AAAA,UACE,2BAAA,EAA6B,CAAC,IAAA,KAAS,IAAA,CAAK,IAAA,KAAS;AAAA;AACvD,OACF;AAEF,MAAA,MAAM,CAAC,cAAc,EAAE,SAAA,EAAW,iBAAiB,IAAA,EAAM,YAAA,EAAc,CAAA,GACrEC,+BAAA,CAAmB;AAAA,QACjB,SAAA,EAAW,CAAC,SAAA,EAAW,OAAO,CAAA;AAAA,QAC9B,IAAA,EAAM,YAAY,IAAA,GAAO,KAAA;AAAA,QACzB,IAAA,EAAM,QAAA;AAAA,QACN,IAAA;AAAA,QACA,aAAA,EAAe;AAAA,OAChB,CAAA;AAEH,MAAA,MAAM,EAAE,IAAA,EAAM,UAAA,EAAW,GAAIC,yBAAA,EAAa;AAE1C,MAAA,MAAM,QAAA,GAAW,CAAC,MAAA,KAAyC;AACzD,QAAA,IAAI,MAAA,CAAO,SAAS,WAAA,EAAa;AAC/B,UAAA,YAAA,CAAa,uBAAA,CAAwB,MAAA,CAAO,KAAK,CAAC,CAAA;AAClD,UAAA,OAAA,CAAQ,CAAC,CAAA;AAAA,QACX,CAAA,MAAA,IAAW,MAAA,CAAO,IAAA,KAAS,QAAA,EAAU;AACnC,UAAA,SAAA,CAAU,OAAO,KAAK,CAAA;AACtB,UAAA,OAAA,CAAQ,CAAC,CAAA;AAAA,QACX;AAAA,MACF,CAAA;AAEA,MAAA,MAAM,SAAA,GAAY1D,gBAAQ,MAAM;AAC9B,QAAA,IAAI,WAAW,YAAA,mBAAwB;AACrC,UAAA,OAAO,YAAA;AAAA,QACT;AACA,QAAA,OAAO,eAAA;AAAA,MACT,CAAA,EAAG,CAAC,MAAA,EAAQ,YAAA,EAAc,eAAe,CAAC,CAAA;AAE1C,MAAA,MAAM,IAAA,GAAOA,gBAAQ,MAAM;AACzB,QAAA,IAAI,WAAW,YAAA,mBAAwB;AACrC,UAAA,OAAO,SAAA;AAAA,QACT;AACA,QAAA,OAAO,YAAA;AAAA,MACT,CAAA,EAAG,CAAC,MAAA,EAAQ,SAAA,EAAW,YAAY,CAAC,CAAA;AAEpC,MAAA,MAAM,UAAA,GAAaA,eAAAA;AAAA,QACjB,MAAM,gBAAgB,IAAI,CAAA;AAAA,QAC1B,CAAC,iBAAiB,IAAI;AAAA,OACxB;AAEA,MAAA,MAAM2D,WAAAA,GAAa3D,gBAAQ,MAAM;AAC/B,QAAA,OAAA,CAAQ,MAAA,KAAW,YAAA,oBAAyB,SAAA,GAAY,YAAA,EAAc,GAAA;AAAA,UACpE,CAAC,IAAA,KAAS;AACR,YAAA,MAAM,SAAA,GAAY,YAAY,IAAA,CAAK,CAAC,EAAE,KAAA,EAAM,KAAM,KAAA,KAAU,IAAA,CAAK,KAAK,CAAA;AACtE,YAAA,OAAO;AAAA,cACL,GAAG,IAAA;AAAA,cACH,QAAA,EAAU,WAAW,QAAA,IAAY;AAAA,aACnC;AAAA,UACF;AAAA,SACF;AAAA,MACF,GAAG,CAAC,MAAA,EAAQ,SAAA,EAAW,YAAA,EAAc,UAAU,CAAC,CAAA;AAEhD,MAAA,MAAM,SAAA,GAAYe,oBAAY,MAAM;AAClC,QAAAF,gBAAM,IAAA,CAAKH,+CAAAA,EAA+B,EAAE,SAAA,EAAW,WAAW,CAAA;AAAA,MACpE,CAAA,EAAG,EAAE,CAAA;AAEL,MAAA,MAAM,eAAe,MAAA,KAAW,YAAA;AAEhC,MAAA,OAAO;AAAA,QACL,UAAA,EAAAiD,WAAAA;AAAA,QACA,OAAO,IAAA,EAAM,KAAA;AAAA,QACb,SAAA;AAAA,QACA,cAAA,EAAgB;AAAA,UACd,MAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,QAAA;AAAA,QACA,UAAA;AAAA,QACA,SAAA;AAAA,QACA,UAAA;AAAA,QACA,SAAA;AAAA,QACA;AAAA,OACF;AAAA,IACF,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;AC/IA,IAYa,YAAA;AAZb,IAAA,oBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,qDAAA,GAAA;AAIA,IAAA,wBAAA,EAAA;AAIA,IAAA,WAAA,EAAA;AAIO,IAAM,YAAA,GAAsC,CAAC,KAAA,KAAU;AAC5D,MAAA,MAAM,EAAE,UAAA,EAAAA,WAAAA,EAAY,cAAA,EAAgB,QAAA,EAAU,WAAU,GAAI,KAAA;AAC5D,MAAA,MAAM,EAAE,SAAA,EAAW,MAAA,EAAO,GAAI,cAAA;AAC9B,MAAA,MAAM,UAAU,sBAAA,CAAuB;AAAA,QACrC,YAAY,KAAA,CAAM,UAAA;AAAA,QAClB,WAAW,KAAA,CAAM,SAAA;AAAA,QACjB,cAAc,KAAA,CAAM;AAAA,OACrB,CAAA;AACD,MAAA,MAAM,EAAE,CAAA,EAAE,GAAIxC,0BAAAA,EAAe;AAE7B,MAAA,MAAM,OAAA,GAAUnB,gBAAQ,MAAM;AAC5B,QAAA,OAAO;AAAA,UACL,EAAE,KAAA,EAAO,CAAA,CAAE,mBAAmB,GAAG,KAAA,EAAA,YAAA,mBAA8B;AAAA,UAC/D,EAAE,KAAA,EAAO,CAAA,CAAE,kBAAkB,GAAG,KAAA,EAAA,WAAA;AAA6B,SAC/D;AAAA,MACF,CAAA,EAAG,CAAC,CAAC,CAAC,CAAA;AAEN,MAAA,uBACEoB,eAAAA,CAAAQ,mBAAAA,EAAA,EACE,QAAA,EAAA;AAAA,wBAAA3B,cAAAA;AAAA,UAAC2D,oBAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO;AAAA,cACL;AAAA,gBACE,IAAA,EAAM,QAAA;AAAA,gBACN,IAAA,EAAM,QAAA;AAAA,gBACN,OAAA;AAAA,gBACA,KAAA,EAAO;AAAA,eACT;AAAA,cACA;AAAA,gBACE,IAAA,EAAM,OAAA;AAAA,gBACN,IAAA,EAAM,WAAA;AAAA,gBACN,KAAA,EAAO;AAAA,kBACL,IAAA,EAAM,UAAU,CAAC,CAAA;AAAA,kBACjB,EAAA,EAAI,UAAU,CAAC;AAAA;AACjB;AACF,aACF;AAAA,YACA,QAAA,EAAU,CAAC,KAAA,KAAU;AACnB,cAAA,QAAA,CAAS,KAAK,CAAA;AAAA,YAChB;AAAA;AAAA,SACF;AAAA,wBAEA3D,cAAAA;AAAA,UAAC4D,qCAAA;AAAA,UAAA;AAAA,YACC,QAAA,EAAQ,IAAA;AAAA,YACR,OAAA,EAAS,SAAA;AAAA,YACT,UAAA,EAAY;AAAA,cACV,IAAA,EAAM,2BAAA;AAAA,cACN,MAAA,EAAQ;AAAA,aACV;AAAA,YACA,OAAA;AAAA,YACA,UAAA,EAAYF,WAAAA;AAAA,YACZ,YAAY,KAAA,CAAM;AAAA;AAAA;AACpB,OAAA,EACF,CAAA;AAAA,IAEJ,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;AClEA,IAqBa,kBAAA;AArBb,IAAA,2BAAA,GAAA,KAAA,CAAA;AAAA,EAAA,4DAAA,GAAA;AAcA,IAAA,wBAAA,EAAA;AAOO,IAAM,kBAAA,GAAkD,CAAC,KAAA,KAAU;AACxE,MAAA,MAAM;AAAA,QACJ,UAAA,EAAAA,WAAAA;AAAA,QACA,cAAA;AAAA,QACA,QAAA;AAAA,QACA,SAAA;AAAA,QACA,UAAA;AAAA,QACA,SAAA;AAAA,QACA,UAAA;AAAA,QACA,SAAA;AAAA,QACA;AAAA,OACF,GAAI,KAAA;AACJ,MAAA,MAAM,EAAE,SAAA,EAAW,MAAA,EAAO,GAAI,cAAA;AAC9B,MAAA,MAAM,EAAE,CAAA,EAAE,GAAIxC,0BAAAA,EAAe;AAE7B,MAAA,MAAM,OAAA,GAAUnB,gBAAQ,MAAM;AAC5B,QAAA,OAAO;AAAA,UACL,EAAE,KAAA,EAAO,CAAA,CAAE,mBAAmB,GAAG,KAAA,EAAA,YAAA,mBAA8B;AAAA,UAC/D,EAAE,KAAA,EAAO,CAAA,CAAE,kBAAkB,GAAG,KAAA,EAAA,WAAA;AAA6B,SAC/D;AAAA,MACF,CAAA,EAAG,CAAC,CAAC,CAAC,CAAA;AAEN,MAAA,MAAM,WAAW,MAAM;AACrB,QAAA,IAAI2D,WAAAA,CAAW,MAAA,IAAU,UAAA,EAAY,KAAA,IAAS,CAAA,CAAA,EAAI;AAChD,UAAA,UAAA,EAAY,gBAAA,GAAmB,UAAA,EAAY,QAAA,GAAW,EAAE,CAAA;AAAA,QAC1D;AAAA,MACF,CAAA;AAEA,MAAA,MAAM,aAAA,GAAgB,CAAC,IAAA,KAAc;AACnC,QAAA,MAAM,MAAA,GAAS,KAAA,CAAM,YAAA,GAAe,IAAA,CAAK,eAAe,IAAA,CAAK,MAAA;AAC7D,QAAA,MAAM,SAAA,GAAY;AAAA,UAChB,CAAClB,mCAAAA,CAAuB,GAAG,GAAG,EAAE,6BAA6B,CAAA;AAAA,UAC7D,CAACA,mCAAAA,CAAuB,OAAO,GAAG,EAAE,6BAA6B,CAAA;AAAA,UACjE,CAACA,mCAAAA,CAAuB,OAAO,GAAG,EAAE,6BAA6B,CAAA;AAAA,UACjE,CAACA,mCAAAA,CAAuB,UAAU,GAAG,EAAE,gCAAgC,CAAA;AAAA,UACvE,CAACA,mCAAAA,CAAuB,SAAS,GAAG,EAAE,+BAA+B,CAAA;AAAA,UACrE,CAACA,mCAAAA,CAAuB,MAAM,GAAG,EAAE,4BAA4B;AAAA,SACjE;AACA,QAAA,OACE,UAAU,MAAgC,CAAA,IAC1CC,+BAAAA,CAAsB,MAAA,EAAQ,aAAa,CAAA;AAAA,MAE/C,CAAA;AAEA,MAAA,MAAM,iBAAA,GAAoB,CAAC,IAAA,KAAc;AAEvC,QAAA,MAAM,eAAA,GAAkB,SAAA,GACpB,CAAA,CAAA,EAAI,IAAA,CAAK,MAAA,IAAU,IAAA,CAAK,GAAA,IAAO,CAAA,CAAE,CAAA,CAAA,GACjC,EAAE,IAAA,CAAK,MAAA,IAAU,KAAK,GAAA,IAAO,CAAA,CAAA,CAAA;AAGjC,QAAA,MAAM,YAAY,MAAM;AACtB,UAAA,IAAI,CAAC,KAAK,KAAA,EAAO;AACf,YAAA,OAAO,MAAA;AAAA,UACT;AAEA,UAAA,MAAM,YACJ,UAAA,IAAc,KAAA,CAAM,OAAA,CAAQ,UAAU,IAClC,UAAA,CAAW,IAAA;AAAA,YACT,CAAC,UACC,QAAA,CAAS,IAAA,CAAK,QAAQ,CAAA,KAAM,QAAA,CAAS,MAAM,QAAQ;AAAA,WACvD,GACA,MAAA;AAEN,UAAA,IAAI,WAAW,iBAAA,EAAmB;AAChC,YAAA,OAAO,CAAA,EAAG,SAAA,CAAU,iBAAiB,CAAA,IAAA,EAAO,KAAK,KAAK,CAAA,CAAA;AAAA,UACxD;AAEA,UAAA,OAAO,MAAA;AAAA,QACT,CAAA;AAEA,QAAA,MAAM,MAAA,GAAS,CAAC,CAAA,KAAW;AACzB,UAAA,CAAA,CAAE,cAAA,EAAe;AACjB,UAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,UAAAH,eAAAA,CAAM,OAAA,CAAQ,CAAA,CAAE,oBAAoB,CAAC,CAAA;AAAA,QACvC,CAAA;AAEA,QAAA,MAAM,SAAA,GAAY,YAAY,KAAA,GAAQ,MAAA;AAEtC,QAAA,MAAM,6BACJnB,eAAAA,CAACC,cAAAA,EAAA,EAAK,WAAU,aAAA,EACd,QAAA,EAAA;AAAA,0BAAApB,cAAAA,CAAC6B,cAAAA,EAAA,EAAK,KAAA,EAAO,WAAY,QAAA,EAAA,eAAA,EAAgB,CAAA;AAAA,0BACzC7B,eAAC6B,cAAAA,EAAA,EAAK,WAAU,UAAA,EAAW,SAAA,EAAW,EAAA,EACnC,QAAA,EAAA,IAAA,CAAK,KAAA,EACR,CAAA;AAAA,UACC,YAAA,oBACC7B,cAAAA,CAAC6D,eAAA,EAAA,EAAM,OAAO,SAAA,EAAW,SAAA,EAAU,UAAA,EAChC,QAAA,EAAA,SAAA,GAAY,CAAA,CAAE,gBAAgB,CAAA,GAAI,CAAA,CAAE,iBAAiB,CAAA,EACxD;AAAA,SAAA,EAEJ,CAAA;AAGF,QAAA,MAAM,UAAA,mBACJ7D,cAAAA,CAAC6B,cAAAA,EAAA,EAAK,SAAA,EAAW,YAAA,GAAe,EAAA,GAAK,EAAA,EAAI,IAAA,EAAK,IAAA,EAC3C,QAAA,EAAA,aAAA,CAAc,IAAI,CAAA,EACrB,CAAA;AAGF,QAAA,MAAM,QAAA,mBACJ7B,cAAAA,CAAC6B,cAAAA,CAAK,SAAA,EAAL,EAAe,IAAA,EAAK,MAAA,EAAO,SAAA,EAAW,EAAA,EAAI,IAAA,EAAK,KAAA,EAC7C,eAAK,YAAA,EACR,CAAA;AAGF,QAAA,MAAM,QAAA,GAAW,IAAA,CAAK,KAAA,mBACpB7B,cAAAA,CAAC,GAAA,EAAA,EAAE,IAAA,EAAM,SAAA,EAAU,EAAG,MAAA,EAAO,QAAA,EAAS,GAAA,EAAI,cACxC,QAAA,kBAAAA,cAAAA;AAAA,UAAC6B,cAAAA,CAAK,SAAA;AAAA,UAAL;AAAA,YACC,QAAA,EAAU,CAAC,CAAC,IAAA,CAAK,KAAA;AAAA,YACjB,SAAA,EAAU,mFAAA;AAAA,YACV,IAAA,EAAK,MAAA;AAAA,YACL,MAAA;AAAA,YACA,SAAA,EAAW,EAAA;AAAA,YACX,IAAA,EAAK,IAAA;AAAA,YAEJ,QAAA,EAAA,IAAA,CAAK;AAAA;AAAA,SACR,EACF,oBAEA7B,cAAAA,CAAC6B,gBAAA,EAAK,SAAA,EAAW,IAAI,QAAA,EAAA,GAAA,EAAC,CAAA;AAGxB,QAAA,MAAM,SAAA,GAAY,SAAA,GAAY,IAAA,CAAK,eAAA,GAAkB,IAAA,CAAK,aAAA;AAE1D,QAAA,MAAM,gCACJV,eAAAA,CAACC,cAAAA,EAAA,EAAK,MAAM,CAAA,EACV,QAAA,EAAA;AAAA,0BAAApB,cAAAA,CAAC6B,cAAAA,EAAA,EAAK,SAAA,EAAW,EAAA,EAAI,IAAA,EAAK,IAAA,EACvB,QAAA,EAAA,SAAA,GACG,CAAA,CAAE,gCAAgC,CAAA,GAClC,CAAA,CAAE,8BAA8B,CAAA,EACtC,CAAA;AAAA,0BACA7B,cAAAA;AAAA,YAAC6B,cAAAA,CAAK,SAAA;AAAA,YAAL;AAAA,cACC,IAAA,EAAK,SAAA;AAAA,cACL,QAAA,EAAU,CAAC,CAAC,SAAA;AAAA,cACZ,MAAA;AAAA,cACA,SAAA,EAAW,EAAA;AAAA,cACX,IAAA,EAAK,IAAA;AAAA,cAEJ,QAAA,EAAA;AAAA;AAAA;AACH,SAAA,EACF,CAAA;AAGF,QAAA,uBACEV,eAAAA;AAAA,UAACC,cAAAA;AAAA,UAAA;AAAA,YACC,CAAA,EAAG,CAAA;AAAA,YACH,SAAA,EAAU,QAAA;AAAA,YACV,IAAA,EAAM,CAAA;AAAA,YACN,SAAA,EAAW,GAAA;AAAA,YACX,CAAA,EAAE,IAAA;AAAA,YACF,SAAA,EAAU,mBAAA;AAAA,YAEV,QAAA,EAAA;AAAA,8BAAApB,cAAAA,CAACoB,cAAAA,EAAA,EAAK,OAAA,EAAQ,SAAA,EAAU,KAAA,EAAM,MAAA,EAAO,MAAA,EAAO,MAAA,EACzC,QAAA,EAAA,YAAA,mBACCD,eAAAA,CAAAQ,qBAAA,EACG,QAAA,EAAA;AAAA,gBAAA,UAAA;AAAA,gBACA;AAAA,eAAA,EACH,CAAA,mBAEAR,eAAAA,CAAAQ,mBAAAA,EAAA,EACG,QAAA,EAAA;AAAA,gBAAA,aAAA;AAAA,gBACA;AAAA,eAAA,EACH,CAAA,EAEJ,CAAA;AAAA,8BAEAR,gBAACC,cAAAA,EAAA,EAAK,SAAQ,SAAA,EAAU,KAAA,EAAM,MAAA,EAAO,MAAA,EAAO,MAAA,EACzC,QAAA,EAAA;AAAA,gBAAA,QAAA;AAAA,gBACA,eAAe,QAAA,GAAW;AAAA,eAAA,EAC7B;AAAA;AAAA;AAAA,SACF;AAAA,MAEJ,CAAA;AAEA,MAAA,uBACED,eAAAA,CAAAQ,mBAAAA,EAAA,EACE,QAAA,EAAA;AAAA,wBAAA3B,cAAAA;AAAA,UAAC2D,oBAAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO;AAAA,cACL;AAAA,gBACE,IAAA,EAAM,QAAA;AAAA,gBACN,IAAA,EAAM,QAAA;AAAA,gBACN,OAAA;AAAA,gBACA,KAAA,EAAO,MAAA;AAAA,gBACP,IAAA,EAAM;AAAA,eACR;AAAA,cACA;AAAA,gBACE,IAAA,EAAM,OAAA;AAAA,gBACN,IAAA,EAAM,WAAA;AAAA,gBACN,KAAA,EAAO;AAAA,kBACL,IAAA,EAAM,UAAU,CAAC,CAAA;AAAA,kBACjB,EAAA,EAAI,UAAU,CAAC;AAAA;AACjB;AACF,aACF;AAAA,YACA,QAAA,EAAU,CAAC,KAAA,KAAU;AACnB,cAAA,QAAA,CAAS,KAAK,CAAA;AAAA,YAChB,CAAA;AAAA,YACA,SAAA,EAAU;AAAA;AAAA,SACZ;AAAA,wBAEA3D,cAAAA;AAAA,UAAC8D,kBAAA;AAAA,UAAA;AAAA,YACC,UAAA,EAAYJ,WAAAA;AAAA,YACZ,UAAA,EAAY,iBAAA;AAAA,YACZ,gBAAA,EAAiB,gBAAA;AAAA,YACjB,QAAA;AAAA,YACA,SAAA;AAAA,YACA,SAAA,EAAU,UAAA;AAAA,YACV,2BACEvC,eAAAA;AAAA,cAACC,cAAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAW,QAAA;AAAA,gBACX,MAAA,EAAQ,MAAA;AAAA,gBACR,SAAA,EAAW,QAAA;AAAA,gBACX,OAAA,EAAS,QAAA;AAAA,gBACT,EAAA,EAAI,CAAA;AAAA,gBAEJ,QAAA,EAAA;AAAA,kCAAApB,eAAC+D,wBAAA,EAAA,EAAe,CAAA;AAAA,kBACfL,WAAAA,EAAY,MAAA,IAAU,CAAA,oBACrBvC,eAAAA;AAAA,oBAACC,cAAAA;AAAA,oBAAA;AAAA,sBACC,SAAA,EAAU,KAAA;AAAA,sBACV,SAAA,EAAU,QAAA;AAAA,sBACV,OAAA,EAAQ,QAAA;AAAA,sBACR,OAAA,EAAS,SAAA;AAAA,sBACT,SAAA,EAAU,gDAAA;AAAA,sBAEV,QAAA,EAAA;AAAA,wCAAApB,cAAAA,CAAC6B,gBAAA,EAAK,KAAA,EAAM,WAAU,IAAA,EAAK,KAAA,EACxB,QAAA,EAAA,CAAA,CAAE,gBAAgB,CAAA,EACrB,CAAA;AAAA,wCACA7B,cAAAA;AAAA,0BAACgE,6BAAA;AAAA,0BAAA;AAAA,4BACC,SAAA,EAAU,wDAAA;AAAA,4BACV,KAAA,EAAM,SAAA;AAAA,4BACN,IAAA,EAAM,EAAA;AAAA,4BACN,OAAA,EAAS;AAAA;AAAA;AACX;AAAA;AAAA;AACF;AAAA;AAAA;AAEJ;AAAA;AAEJ,OAAA,EACF,CAAA;AAAA,IAEJ,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;ACrQA,IAWa,kBAAA;AAXb,IAAA,wBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,yDAAA,GAAA;AAGA,IAAA,wBAAA,EAAA;AACA,IAAA,oBAAA,EAAA;AACA,IAAA,2BAAA,EAAA;AAMO,IAAM,kBAAA,GAAwD,CACnE,KAAA,KACG;AACH,MAAA,MAAM,QAAQ,qBAAA,CAAsB,EAAE,IAAA,EAAM,KAAA,CAAM,MAAM,CAAA;AACxD,MAAA,MAAM,EAAE,QAAA,EAAS,GAAIxD,mBAAAA,EAAU;AAC/B,MAAA,IAAI,QAAA,EAAU;AACZ,QAAA,uBAAOR,cAAAA,CAAC,kBAAA,EAAA,EAAoB,GAAG,KAAA,EAAO,CAAA;AAAA,MACxC;AACA,MAAA,uBAAOA,cAAAA,CAAC,YAAA,EAAA,EAAc,GAAG,KAAA,EAAO,CAAA;AAAA,IAClC,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACpBA,IAAA,oBAAA,GAAA,EAAA;AAAA,QAAA,CAAA,oBAAA,EAAA;AAAA,EAAA,YAAA,EAAA,MAAA,YAAA;AAAA,EAAA,kBAAA,EAAA,MAAA,kBAAA;AAAA,EAAA,sBAAA,EAAA,MAAA,sBAAA;AAAA,EAAA,qBAAA,EAAA,MAAA;AAAA,CAAA,CAAA;AAAA,IAAA,iBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,2CAAA,GAAA;AAAA,IAAA,WAAA,EAAA;AACA,IAAA,wBAAA,EAAA;AACA,IAAA,oBAAA,EAAA;AACA,IAAA,wBAAA,EAAA;AAAA,EAAA;AAAA,CAAA,CAAA;ACHA,IAMM,WAAA,EAiBO,wBAAA;AAvBb,IAAAiE,YAAAA,GAAA,KAAA,CAAA;AAAA,EAAA,uCAAA,GAAA;AAMA,IAAM,WAAA,GAAc,CAAC,KAAA,KAA8B;AACjD,MAAA,MAAM,EAAE,QAAA,EAAU,UAAA,EAAY,aAAA,EAAc,GAAIC,6BAAA;AAAA,QAC9C,KAAA,CAAM;AAAA,OACR;AAEA,MAAA,uBACElE,cAAAA;AAAA,QAAC6B,cAAAA,CAAK,WAAA;AAAA,QAAL;AAAA,UACC,KAAA,EAAO,cAAc,QAAA,IAAY,MAAA;AAAA,UACjC,QAAA,EAAU,aAAA;AAAA,UACV,SAAA,EAAU,oBAAA;AAAA,UACV,QAAA,EAAQ,IAAA;AAAA,UAEP,QAAA,EAAA,KAAA,CAAM;AAAA;AAAA,OACT;AAAA,IAEJ,CAAA;AAEO,IAAM,2BAA2B,MAAM;AAC5C,MAAA,MAAM,EAAE,CAAA,EAAE,GAAIX,0BAAAA,EAAe;AAE7B,MAAA,MAAM,OAAA,GAAUnB,gBAAQ,MAAM;AAC5B,QAAA,OAAO;AAAA,UACL;AAAA,YACE,KAAA,EAAO,EAAE,eAAe,CAAA;AAAA,YACxB,SAAA,EAAW,QAAA;AAAA,YACX,KAAA,EAAO,EAAA;AAAA,YACP,QAAQ,CAAC,KAAA,qBAAkBC,cAAAA,CAAC,WAAA,EAAA,EAAY,QAAQ,KAAA,EAAO;AAAA,WACzD;AAAA,UACA;AAAA,YACE,KAAA,EAAO,EAAE,aAAa,CAAA;AAAA,YACtB,SAAA,EAAW,cAAA;AAAA,YACX,KAAA,EAAO,GAAA;AAAA,YACP,IAAA,EAAM;AAAA,WACR;AAAA,UACA;AAAA,YACE,KAAA,EAAO,GAAG,CAAA,CAAE,qBAAqB,CAAC,CAAA,GAAA,EAAM,CAAA,CAAE,oBAAoB,CAAC,CAAA,CAAA;AAAA,YAC/D,SAAA,EAAW,cAAA;AAAA,YACX,KAAA,EAAO,EAAA;AAAA,YACP,MAAA,EAAQ,CAAC,KAAA,EAAY,MAAA,KAAW;AAC9B,cAAA,uBACEmB,eAAAA,CAACC,cAAAA,EAAA,EAAK,KAAK,CAAA,EAET,QAAA,EAAA;AAAA,gCAAApB,cAAAA,CAAC6B,eAAK,OAAA,EAAL,EAAa,MAAM,aAAA,EAAe,EAAA,EAAI,CAAA,EACpC,QAAA,EAAA,MAAA,CAAO,YAAA,EACV,CAAA;AAAA,gCACA7B,cAAAA,CAAC,MAAA,EAAA,EAAK,QAAA,EAAA,GAAA,EAAC,CAAA;AAAA,gCAEPA,cAAAA,CAAC6B,cAAAA,CAAK,OAAA,EAAL,EAAa,MAAM,aAAA,EAAe,EAAA,EAAI,CAAA,EACpC,QAAA,EAAA,MAAA,CAAO,WAAA,EACV;AAAA,eAAA,EACF,CAAA;AAAA,YAEJ;AAAA,WACF;AAAA,UACA;AAAA,YACE,KAAA,EAAO,EAAE,qBAAqB,CAAA;AAAA,YAC9B,SAAA,EAAW,cAAA;AAAA,YACX,KAAA,EAAO,EAAA;AAAA,YACP,MAAA,EAAQ,CAAC,KAAA,KAAe;AACtB,cAAA,QAAQ,KAAA;AAAO,gBACb,KAAK,KAAA;AAAA,gBACL,KAAK,MAAA;AACH,kBAAA,OAAO,EAAE,0BAA0B,CAAA;AAAA,gBACrC,KAAK,SAAA;AAAA,gBACL,KAAK,UAAA;AACH,kBAAA,OAAO,EAAE,8BAA8B,CAAA;AAAA,gBACzC;AACE,kBAAA,OAAO,KAAA;AAAA;AACX,YACF;AAAA,WACF;AAAA,UACA;AAAA,YACE,KAAA,EAAO,CAAA,EAAG,CAAA,CAAE,oBAAoB,CAAC,CAAA,OAAA,CAAA;AAAA,YACjC,SAAA,EAAW,aAAA;AAAA,YACX,KAAA,EAAO,EAAA;AAAA,YACP,IAAA,EAAM,OAAA;AAAA,YACN,SAAA,CAAU,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAO;AAC9B,cAAA,OAAO,MAAA,CAAO,KAAK,CAAA,GAAI,EAAA;AAAA,YACzB,CAAA;AAAA,YACA,YAAA,EAAc;AAAA,cACZ,QAAA,EAAU,IAAA;AAAA,cACV,cAAA,EAAgB,IAAA;AAAA,cAChB,QAAA,EAAU;AAAA;AACZ;AACF,SACF;AAAA,MACF,CAAA,EAAG,CAAC,CAAC,CAAC,CAAA;AAEN,MAAA,OAAO,OAAA;AAAA,IACT,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;AC/FA,IAUa,qBAAA;AAVb,IAAA,sBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,kDAAA,GAAA;AAKA,IAAAoC,YAAAA,EAAAA;AAKO,IAAM,qBAAA,GAAiD,CAAC,KAAA,KAAU;AACvE,MAAA,MAAM,EAAE,UAAA,EAAAP,WAAAA,EAAY,cAAA,EAAgB,QAAA,EAAU,WAAU,GAAI,KAAA;AAC5D,MAAA,MAAM,UAAU,wBAAA,EAAyB;AACzC,MAAA,MAAM,UAAUS,2BAAA,EAAe;AAC/B,MAAA,MAAM,EAAE,MAAA,EAAQ,SAAA,EAAU,GAAI,cAAA;AAC9B,MAAA,MAAM,EAAE,CAAA,EAAE,GAAIjD,0BAAAA,EAAe;AAE7B,MAAA,MAAM,OAAA,GAAUnB,gBAAQ,MAAM;AAC5B,QAAA,OAAO;AAAA,UACL;AAAA,YACE,KAAA,EAAO,EAAE,YAAY,CAAA;AAAA,YACrB,KAAA,EAAO;AAAA,WACT;AAAA,UACA,GAAG,MAAA,CAAO,IAAA,CAAK,OAAO,CAAA,CAAE,GAAA,CAAI,CAACqE,OAAAA,KAAW;AACtC,YAAA,MAAM,CAAA,GAAIA,OAAAA,CAAO,KAAA,CAAM,GAAG,EAAE,CAAC,CAAA;AAC7B,YAAA,OAAO;AAAA,cACL,KAAA,EAAO,CAAA;AAAA,cACP,KAAA,EAAOA;AAAA,aACT;AAAA,UACF,CAAC;AAAA,SACH;AAAA,MACF,CAAA,EAAG,CAAC,CAAA,EAAG,OAAO,CAAC,CAAA;AAEf,MAAA,uBACEjD,eAAAA,CAAAQ,mBAAAA,EAAA,EACE,QAAA,EAAA;AAAA,wBAAA3B,cAAAA;AAAA,UAAC2D,oBAAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO;AAAA,cACL;AAAA,gBACE,IAAA,EAAM,QAAA;AAAA,gBACN,IAAA,EAAM,QAAA;AAAA,gBACN,SAAA,EAAW,IAAA;AAAA,gBACX,OAAA;AAAA,gBACA,KAAA,EAAO,MAAA;AAAA,gBACP,cAAA,EAAgB,CAAC,KAAA,KAAU;AACzB,kBAAA,MAAM,SAAS,OAAA,CAAQ,IAAA,CAAK,CAAC,IAAA,KAAS,IAAA,CAAK,UAAU,KAAK,CAAA;AAC1D,kBAAA,OAAO,QAAQ,KAAA,IAAS,KAAA;AAAA,gBAC1B;AAAA,eACF;AAAA,cACA;AAAA,gBACE,IAAA,EAAM,OAAA;AAAA,gBACN,IAAA,EAAM,WAAA;AAAA,gBACN,KAAA,EAAO;AAAA,kBACL,IAAA,EAAM,UAAU,CAAC,CAAA;AAAA,kBACjB,EAAA,EAAI,UAAU,CAAC;AAAA;AACjB;AACF,aACF;AAAA,YACA,QAAA,EAAU,CAAC,KAAA,KAAU;AACnB,cAAA,QAAA,CAAS,KAAK,CAAA;AAAA,YAChB;AAAA;AAAA,SACF;AAAA,wBACA3D,cAAAA;AAAA,UAAC4D,qCAAAA;AAAA,UAAA;AAAA,YACC,QAAA,EAAQ,IAAA;AAAA,YACR,OAAA;AAAA,YACA,UAAA,EAAYF,WAAAA;AAAA,YACZ,OAAA,EAAS,SAAA;AAAA,YACT,eAAA,EAAiB,CAAC,MAAA,KAAW,CAAA,EAAG,OAAO,YAAY,CAAA,CAAA;AAAA,YACnD,UAAA,EAAY,EAAE,IAAA,EAAM,2BAAA,EAA4B;AAAA,YAChD,YAAY,KAAA,CAAM;AAAA;AAAA;AACpB,OAAA,EACF,CAAA;AAAA,IAEJ,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;ACxEA,IAea,oBAAA;AAfb,IAAA,6BAAA,GAAA,KAAA,CAAA;AAAA,EAAA,yDAAA,GAAA;AAeO,IAAM,oBAAA,GAAgD,CAAC,KAAA,KAAU;AACtE,MAAA,MAAM,EAAE,UAAA,EAAAA,WAAAA,EAAY,gBAAgB,QAAA,EAAU,SAAA,EAAW,YAAW,GAAI,KAAA;AACxE,MAAA,MAAM,UAAUS,2BAAAA,EAAe;AAC/B,MAAA,MAAM,EAAE,MAAA,EAAQ,SAAA,EAAU,GAAI,cAAA;AAC9B,MAAA,MAAM,EAAE,CAAA,EAAE,GAAIjD,0BAAAA,EAAe;AAE7B,MAAA,MAAM,iBAAA,GAAoB,CAAC,WAAA,KAAwB;AACjD,QAAA,QAAQ,WAAA;AAAa,UACnB,KAAK,KAAA;AAAA,UACL,KAAK,MAAA;AACH,YAAA,OAAO,EAAE,0BAA0B,CAAA;AAAA,UACrC,KAAK,SAAA;AAAA,UACL,KAAK,UAAA;AACH,YAAA,OAAO,EAAE,8BAA8B,CAAA;AAAA,UACzC;AACE,YAAA,OAAO,WAAA;AAAA;AACX,MACF,CAAA;AAEA,MAAA,MAAM,WAAW,MAAM;AACrB,QAAA,IAAIwC,WAAAA,IAAcA,WAAAA,CAAW,MAAA,IAAU,UAAA,EAAY,SAAS,CAAA,CAAA,EAAI;AAC9D,UAAA,UAAA,EAAY,gBAAA,GAAmB,UAAA,EAAY,QAAA,GAAW,EAAE,CAAA;AAAA,QAC1D;AAAA,MACF,CAAA;AAEA,MAAA,MAAM,iBAAA,GAAoB,CAAC,IAAA,KAAc;AACvC,QAAA,uBACEvC,eAAAA;AAAA,UAACC,cAAAA;AAAA,UAAA;AAAA,YACC,CAAA,EAAG,CAAA;AAAA,YACH,SAAA,EAAU,QAAA;AAAA,YACV,IAAA,EAAM,CAAA;AAAA,YACN,SAAA,EAAU,gDAAA;AAAA,YAEV,QAAA,EAAA;AAAA,8BAAAD,eAAAA,CAACC,cAAAA,EAAA,EAAK,SAAA,EAAU,KAAA,EAAM,SAAQ,SAAA,EAAU,KAAA,EAAM,MAAA,EAAO,MAAA,EAAO,MAAA,EAC1D,QAAA,EAAA;AAAA,gCAAApB,cAAAA;AAAA,kBAAC6B,cAAAA,CAAK,SAAA;AAAA,kBAAL;AAAA,oBACC,IAAA,EAAK,QAAA;AAAA,oBACL,SAAA,EAAU,6CAAA;AAAA,oBAET,QAAA,EAAA,IAAA,CAAK;AAAA;AAAA,iBACR;AAAA,gCACA7B,cAAAA,CAAC6D,eAAAA,EAAA,EAAM,KAAA,EAAM,SAAA,EAAU,IAAA,EAAK,IAAA,EACzB,QAAA,EAAA,iBAAA,CAAkB,IAAA,CAAK,YAAY,CAAA,EACtC,CAAA;AAAA,gCACA7D,cAAAA;AAAA,kBAAC6B,cAAAA,CAAK,SAAA;AAAA,kBAAL;AAAA,oBACC,IAAA,EAAK,MAAA;AAAA,oBACL,SAAA,EAAU,oDAAA;AAAA,oBAET,QAAA,EAAA,IAAA,CAAK;AAAA;AAAA;AACR,eAAA,EACF,CAAA;AAAA,8BACA7B,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,sCAAA,EAAuC,CAAA;AAAA,8BACtDmB,gBAACC,cAAAA,EAAA,EAAK,WAAU,KAAA,EAAM,OAAA,EAAQ,SAAA,EAAU,KAAA,EAAM,MAAA,EAC5C,QAAA,EAAA;AAAA,gCAAAD,eAAAA,CAACC,cAAAA,EAAA,EAAK,SAAA,EAAU,QAAA,EACd,QAAA,EAAA;AAAA,kCAAApB,eAAC6B,cAAAA,EAAA,EAAK,WAAU,wCAAA,EACb,QAAA,EAAA,CAAA,CAAE,qBAAqB,CAAA,EAC1B,CAAA;AAAA,kCACA7B,cAAAA;AAAA,oBAAC6B,cAAAA,CAAK,OAAA;AAAA,oBAAL;AAAA,sBACC,IAAA,EAAM,aAAA;AAAA,sBACN,EAAA,EAAI,CAAA;AAAA,sBACJ,SAAA,EAAU,uCAAA;AAAA,sBAET,QAAA,EAAA,IAAA,CAAK;AAAA;AAAA;AACR,iBAAA,EACF,CAAA;AAAA,gCACAV,eAAAA,CAACC,cAAAA,EAAA,EAAK,WAAU,QAAA,EACd,QAAA,EAAA;AAAA,kCAAApB,eAAC6B,cAAAA,EAAA,EAAK,WAAU,wCAAA,EACb,QAAA,EAAA,CAAA,CAAE,oBAAoB,CAAA,EACzB,CAAA;AAAA,kCACA7B,cAAAA;AAAA,oBAAC6B,cAAAA,CAAK,OAAA;AAAA,oBAAL;AAAA,sBACC,IAAA,EAAM,aAAA;AAAA,sBACN,EAAA,EAAI,CAAA;AAAA,sBACJ,SAAA,EAAU,uCAAA;AAAA,sBAET,QAAA,EAAA,IAAA,CAAK;AAAA;AAAA;AACR,iBAAA,EACF,CAAA;AAAA,gCACAV,eAAAA,CAACC,cAAAA,EAAA,EAAK,WAAU,QAAA,EACd,QAAA,EAAA;AAAA,kCAAAD,eAAAA,CAACU,cAAAA,EAAA,EAAK,SAAA,EAAU,wCAAA,EACb,QAAA,EAAA;AAAA,oBAAA,CAAA,CAAE,oBAAoB,CAAA;AAAA,oBAAG,GAAA;AAAA,oCAC1B7B,cAAAA,CAAC6B,cAAAA,EAAA,EAAK,SAAA,EAAU,6BAA4B,QAAA,EAAA,QAAA,EAAM;AAAA,mBAAA,EACpD,CAAA;AAAA,kCACA7B,cAAAA;AAAA,oBAAC6B,cAAAA,CAAK,OAAA;AAAA,oBAAL;AAAA,sBACC,EAAA,EAAI,CAAA;AAAA,sBACJ,QAAA,EAAU,IAAA;AAAA,sBACV,QAAA,EAAU,IAAA;AAAA,sBACV,cAAA,EAAgB,IAAA;AAAA,sBAChB,SAAA,EAAU,0BAAA;AAAA,sBAET,QAAA,EAAA,MAAA,CAAO,IAAA,CAAK,WAAW,CAAA,GAAI;AAAA;AAAA;AAC9B,iBAAA,EACF;AAAA,eAAA,EACF;AAAA;AAAA;AAAA,SACF;AAAA,MAEJ,CAAA;AAEA,MAAA,MAAM,OAAA,GAAU9B,gBAAQ,MAAM;AAC5B,QAAA,OAAO;AAAA,UACL;AAAA,YACE,KAAA,EAAO,EAAE,YAAY,CAAA;AAAA,YACrB,KAAA,EAAO;AAAA,WACT;AAAA,UACA,GAAG,MAAA,CAAO,IAAA,CAAK,OAAO,CAAA,CAAE,GAAA,CAAI,CAACqE,OAAAA,KAAW;AACtC,YAAA,MAAM,CAAA,GAAIA,OAAAA,CAAO,KAAA,CAAM,GAAG,EAAE,CAAC,CAAA;AAC7B,YAAA,OAAO;AAAA,cACL,KAAA,EAAO,CAAA;AAAA,cACP,KAAA,EAAOA;AAAA,aACT;AAAA,UACF,CAAC;AAAA,SACH;AAAA,MACF,CAAA,EAAG,CAAC,CAAA,EAAG,OAAO,CAAC,CAAA;AAEf,MAAA,uBACEjD,eAAAA,CAAAQ,mBAAAA,EAAA,EACE,QAAA,EAAA;AAAA,wBAAA3B,cAAAA;AAAA,UAAC2D,oBAAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO;AAAA,cACL;AAAA,gBACE,IAAA,EAAM,QAAA;AAAA,gBACN,IAAA,EAAM,QAAA;AAAA,gBACN,SAAA,EAAW,IAAA;AAAA,gBACX,OAAA;AAAA,gBACA,KAAA,EAAO,MAAA;AAAA,gBACP,cAAA,EAAgB,CAAC,KAAA,KAAU;AACzB,kBAAA,MAAM,SAAS,OAAA,CAAQ,IAAA,CAAK,CAAC,IAAA,KAAS,IAAA,CAAK,UAAU,KAAK,CAAA;AAC1D,kBAAA,OAAO,QAAQ,KAAA,IAAS,KAAA;AAAA,gBAC1B;AAAA,eACF;AAAA,cACA;AAAA,gBACE,IAAA,EAAM,OAAA;AAAA,gBACN,IAAA,EAAM,WAAA;AAAA,gBACN,KAAA,EAAO;AAAA,kBACL,IAAA,EAAM,UAAU,CAAC,CAAA;AAAA,kBACjB,EAAA,EAAI,UAAU,CAAC;AAAA;AACjB;AACF,aACF;AAAA,YACA,QAAA,EAAU,CAAC,KAAA,KAAU;AACnB,cAAA,QAAA,CAAS,KAAK,CAAA;AAAA,YAChB,CAAA;AAAA,YACA,SAAA,EAAU;AAAA;AAAA,SACZ;AAAA,wBACA3D,cAAAA;AAAA,UAAC8D,kBAAAA;AAAA,UAAA;AAAA,YACC,UAAA,EAAYJ,WAAAA;AAAA,YACZ,UAAA,EAAY,iBAAA;AAAA,YACZ,gBAAA,EAAiB,gBAAA;AAAA,YACjB,QAAA;AAAA,YACA,SAAA;AAAA,YACA,SAAA,EAAU;AAAA;AAAA;AACZ,OAAA,EACF,CAAA;AAAA,IAEJ,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;ACtKA,IAOa,qBAAA;AAPb,IAAA,yBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,oDAAA,GAAA;AAIA,IAAA,SAAA,EAAA;AAGO,IAAM,wBAAwB,MAAM;AAGzC,MAAA,MAAM,CAAC,KAAK,CAAA,GAAI5D,gBAAAA,CAAS,MAAM;AAC7B,QAAA,MAAM,CAAA,uBAAQ,IAAA,EAAK;AAEnB,QAAA,OAAO,IAAI,IAAA,CAAKgD,eAAAA,CAAQ,CAAC,CAAA,EAAGC,gBAAAA,CAAS,CAAC,CAAA,EAAGC,eAAAA,CAAQ,CAAC,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA,MAC9D,CAAC,CAAA;AAED,MAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIlD,gBAAAA,CAAiB;AAAA,QACjDoD,wCAAAA,CAA4B,IAAI,KAAK,CAAA;AAAA,QACrC;AAAA,OACD,CAAA;AAED,MAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIpD,iBAAiB,KAAK,CAAA;AAClD,MAAA,MAAM,EAAE,IAAA,EAAM,QAAA,EAAU,OAAA,EAAS,eAAA,KAAoBqD,uBAAAA,EAAc;AAEnE,MAAA,MAAM,CAAC,IAAA,EAAM,EAAE,WAAW,IAAA,EAAM,YAAA,EAAc,CAAA,GAAIkB,iCAAA;AAAA,QAChD;AAAA;AAAA,UAEE,SAAA,EAAW;AAAA,YACT,SAAA,CAAU,CAAC,CAAA,CAAE,OAAA,EAAQ;AAAA,YACrBf,WAAAA,CAAI,SAAA,CAAU,CAAC,CAAA,EAAG;AAAA,cAChB,KAAA,EAAO,EAAA;AAAA,cACP,OAAA,EAAS,EAAA;AAAA,cACT,OAAA,EAAS,EAAA;AAAA,cACT,YAAA,EAAc;AAAA,aACf,EAEE,OAAA;AAAQ,WACb;AAAA,UACA,MAAA;AAAA,UACA,IAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA;AAAA,UACE,gBAAA,EAAkB;AAAA;AACpB,OACF;AAEA,MAAA,MAAM,QAAA,GAAW,CAAC,MAAA,KAAyC;AACzD,QAAA,IAAI,MAAA,CAAO,SAAS,QAAA,EAAU;AAC5B,UAAA,SAAA,CAAU,OAAO,KAAK,CAAA;AACtB,UAAA,OAAA,CAAQ,CAAC,CAAA;AAAA,QACX;AAEA,QAAA,IAAI,MAAA,CAAO,SAAS,WAAA,EAAa;AAE/B,UAAA,YAAA,CAAa,uBAAA,CAAwB,MAAA,CAAO,KAAK,CAAC,CAAA;AAClD,UAAA,OAAA,CAAQ,CAAC,CAAA;AAAA,QACX;AAAA,MACF,CAAA;AAEA,MAAA,MAAM,UAAA,GAAavD,eAAAA;AAAA,QACjB,MAAM,gBAAgB,IAAI,CAAA;AAAA,QAC1B,CAAC,iBAAiB,IAAI;AAAA,OACxB;AAEA,MAAA,OAAO;AAAA,QACL,UAAA,EAAY,IAAA;AAAA,QACZ,SAAA;AAAA,QACA,YAAA;AAAA;AAAA,QAEA,cAAA,EAAgB;AAAA,UACd,MAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,QAAA;AAAA,QACA;AAAA,OACF;AAAA,IACF,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;AC7EA,IAMa,oBAAA;AANb,IAAA,0BAAA,GAAA,KAAA,CAAA;AAAA,EAAA,sDAAA,GAAA;AAEA,IAAA,sBAAA,EAAA;AACA,IAAA,6BAAA,EAAA;AACA,IAAA,yBAAA,EAAA;AAEO,IAAM,uBAAiC,MAAM;AAClD,MAAA,MAAM,QAAQ,qBAAA,EAAsB;AACpC,MAAA,MAAM,EAAE,QAAA,EAAS,GAAIS,mBAAAA,EAAU;AAC/B,MAAA,IAAI,QAAA,EAAU;AACZ,QAAA,uBAAOR,cAAAA,CAAC,oBAAA,EAAA,EAAsB,GAAG,KAAA,EAAO,CAAA;AAAA,MAC1C;AACA,MAAA,uBAAOA,cAAAA,CAAC,qBAAA,EAAA,EAAuB,GAAG,KAAA,EAAO,CAAA;AAAA,IAC3C,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACbA,IAAA,eAAA,GAAA,EAAA;AAAA,QAAA,CAAA,eAAA,EAAA;AAAA,EAAA,qBAAA,EAAA,MAAA,qBAAA;AAAA,EAAA,oBAAA,EAAA,MAAA,oBAAA;AAAA,EAAA,oBAAA,EAAA,MAAA,oBAAA;AAAA,EAAA,wBAAA,EAAA,MAAA,wBAAA;AAAA,EAAA,qBAAA,EAAA,MAAA;AAAA,CAAA,CAAA;AAAA,IAAA,YAAA,GAAA,KAAA,CAAA;AAAA,EAAA,sCAAA,GAAA;AAAA,IAAA,0BAAA,EAAA;AACA,IAAA,sBAAA,EAAA;AACA,IAAA,6BAAA,EAAA;AACA,IAAAiE,YAAAA,EAAAA;AACA,IAAA,yBAAA,EAAA;AAAA,EAAA;AAAA,CAAA,CAAA;ACJA,IAKa,UAAA;AALb,IAAAA,YAAAA,GAAA,KAAA,CAAA;AAAA,EAAA,4CAAA,GAAA;AAKO,IAAM,aAAa,MAAM;AAC9B,MAAA,MAAM,EAAE,CAAA,EAAE,GAAI/C,0BAAAA,EAAe;AAE7B,MAAA,MAAM,OAAA,GAAUnB,gBAAQ,MAAM;AAC5B,QAAA,OAAO;AAAA,UACL;AAAA,YACE,KAAA,EAAO,EAAE,cAAc,CAAA;AAAA,YACvB,SAAA,EAAW,OAAA;AAAA,YACX,KAAA,EAAO,EAAA;AAAA;AAAA,YAEP,MAAA,EAAQ,CAAC,KAAA,EAAO,MAAA,KAAW;AACzB,cAAA,uBACEoB,eAAAA,CAACC,cAAAA,EAAA,EAAK,MAAM,CAAA,EACV,QAAA,EAAA;AAAA,gCAAApB,eAACuC,mBAAAA,EAAA,EAAU,IAAA,EAAM,KAAA,EAAO,MAAK,IAAA,EAAK,CAAA;AAAA,gCAClCvC,cAAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,KAAA,EAAM;AAAA,eAAA,EACf,CAAA;AAAA,YAEJ;AAAA,WACF;AAAA,UACA;AAAA,YACE,KAAA,EAAO,EAAE,aAAa,CAAA;AAAA,YACtB,SAAA,EAAW,cAAA;AAAA,YACX,KAAA,EAAO,GAAA;AAAA,YACP,IAAA,EAAM;AAAA,WACR;AAAA,UACA;AAAA,YACE,KAAA,EAAO,EAAE,eAAe,CAAA;AAAA,YACxB,SAAA,EAAW,QAAA;AAAA,YACX,KAAA,EAAO,GAAA;AAAA,YACP,SAAA,CAAU,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAO;AAC9B,cAAA,QAAQ,KAAA;AAAO,gBACb,KAAK,SAAA;AAAA,gBACL,KAAK,OAAA;AACH,kBAAA,OAAO,EAAE,gCAAgC,CAAA;AAAA,gBAC3C,KAAK,WAAA;AAAA,gBACL;AACE,kBAAA,OAAO,EAAE,+BAA+B,CAAA;AAAA;AAC5C,YACF;AAAA,WACF;AAAA,UAEA;AAAA,YACE,KAAA,EAAO,EAAE,aAAa,CAAA;AAAA,YACtB,SAAA,EAAW,MAAA;AAAA,YACX,KAAA,EAAO,EAAA;AAAA,YACP,SAAA,EAAW,CAAC,KAAA,KAAe;AACzB,cAAA,QAAQ,KAAA;AAAO,gBACb,KAAK,iBAAA;AACH,kBAAA,OAAO,CAAA;AAAA,oBACL;AAAA,mBACF;AAAA,gBACF,KAAK,gBAAA;AACH,kBAAA,OAAO,EAAE,oDAAoD,CAAA;AAAA,gBAC/D,KAAK,YAAA;AACH,kBAAA,OAAO,EAAE,gDAAgD,CAAA;AAAA,gBAC3D;AACE,kBAAA,OAAO,GAAA;AAAA;AACX,YACF;AAAA,WACF;AAAA,UACA;AAAA,YACE,KAAA,EAAO,EAAE,eAAe,CAAA;AAAA,YACxB,SAAA,EAAW,QAAA;AAAA,YACX,KAAA,EAAO;AAAA;AAAA;AAET,SACF;AAAA,MACF,CAAA,EAAG,CAAC,CAAC,CAAC,CAAA;AAEN,MAAA,OAAO,OAAA;AAAA,IACT,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;AC3EA,IASa,0BAAA;AATb,IAAA,oBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,qDAAA,GAAA;AAIA,IAAAiE,YAAAA,EAAAA;AAKO,IAAM,0BAAA,GAAsD,CAAC,KAAA,KAAU;AAC5E,MAAA,MAAM,EAAE,UAAA,EAAAP,WAAAA,EAAY,gBAAgB,QAAA,EAAU,SAAA,EAAW,cAAa,GACpE,KAAA;AACF,MAAA,MAAM,UAAU,UAAA,EAAW;AAC3B,MAAA,MAAM,EAAE,IAAA,EAAM,SAAA,EAAU,GAAI,cAAA;AAC5B,MAAA,MAAM,EAAE,CAAA,EAAE,GAAIxC,0BAAAA,EAAe;AAE7B,MAAA,MAAM,KAAA,GAAQnB,gBAAQ,MAAM;AAC1B,QAAA,OAAO;AAAA,UACL,EAAE,KAAA,EAAO,CAAA,CAAE,YAAY,CAAA,EAAG,OAAO,KAAA,EAAM;AAAA,UACvC;AAAA,YACE,KAAA,EAAO,EAAE,yDAAyD,CAAA;AAAA,YAClE,KAAA,EAAO;AAAA,WACT;AAAA,UACA;AAAA,YACE,KAAA,EAAO,EAAE,oDAAoD,CAAA;AAAA,YAC7D,KAAA,EAAO;AAAA,WACT;AAAA,UACA;AAAA,YACE,KAAA,EAAO,EAAE,gDAAgD,CAAA;AAAA,YACzD,KAAA,EAAO;AAAA;AACT,SACF;AAAA,MACF,CAAA,EAAG,CAAC,CAAC,CAAC,CAAA;AAEN,MAAA,uBACEoB,eAAAA,CAAAQ,mBAAAA,EAAA,EACE,QAAA,EAAA;AAAA,wBAAA3B,cAAAA;AAAA,UAAC2D,oBAAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO;AAAA,cACL;AAAA,gBACE,IAAA,EAAM,QAAA;AAAA,gBACN,IAAA,EAAM,MAAA;AAAA,gBACN,OAAA,EAAS,KAAA;AAAA,gBACT,KAAA,EAAO;AAAA,eACT;AAAA,cACA;AAAA,gBACE,IAAA,EAAM,OAAA;AAAA,gBACN,IAAA,EAAM,WAAA;AAAA,gBACN,KAAA,EAAO;AAAA,kBACL,IAAA,EAAM,UAAU,CAAC,CAAA;AAAA,kBACjB,EAAA,EAAI,UAAU,CAAC;AAAA;AACjB;AACF,aACF;AAAA,YACA,QAAA,EAAU,CAAC,KAAA,KAAU;AACnB,cAAA,QAAA,CAAS,KAAK,CAAA;AAAA,YAChB;AAAA;AAAA,SACF;AAAA,wBACA3D,cAAAA;AAAA,UAAC4D,qCAAAA;AAAA,UAAA;AAAA,YACC,QAAA,EAAQ,IAAA;AAAA,YACR,OAAA;AAAA,YACA,UAAA,EAAYF,WAAAA;AAAA,YACZ,OAAA,EAAS,SAAA;AAAA,YAET,SAAA,EAAU,mBAAA;AAAA,YACV,UAAA,EAAY;AAAA,cACV,IAAA,EAAM;AAAA,aACR;AAAA,YACA,YAAY,KAAA,CAAM;AAAA;AAAA;AACpB,OAAA,EACF,CAAA;AAAA,IAEJ,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;ACvEA,IAQa,yBAAA;AARb,IAAA,2BAAA,GAAA,KAAA,CAAA;AAAA,EAAA,4DAAA,GAAA;AAQO,IAAM,yBAAA,GAAqD,CAAC,KAAA,KAAU;AAC3E,MAAA,MAAM,EAAE,UAAA,EAAAA,WAAAA,EAAY,gBAAgB,QAAA,EAAU,SAAA,EAAW,YAAW,GAAI,KAAA;AACxE,MAAA,MAAM,EAAE,IAAA,EAAM,SAAA,EAAU,GAAI,cAAA;AAC5B,MAAA,MAAM,EAAE,CAAA,EAAE,GAAIxC,0BAAAA,EAAe;AAE7B,MAAA,MAAM,KAAA,GAAQnB,gBAAQ,MAAM;AAC1B,QAAA,OAAO;AAAA,UACL,EAAE,KAAA,EAAO,CAAA,CAAE,YAAY,CAAA,EAAG,OAAO,KAAA,EAAM;AAAA,UACvC;AAAA,YACE,KAAA,EAAO,EAAE,yDAAyD,CAAA;AAAA,YAClE,KAAA,EAAO;AAAA,WACT;AAAA,UACA;AAAA,YACE,KAAA,EAAO,EAAE,oDAAoD,CAAA;AAAA,YAC7D,KAAA,EAAO;AAAA,WACT;AAAA,UACA;AAAA,YACE,KAAA,EAAO,EAAE,gDAAgD,CAAA;AAAA,YACzD,KAAA,EAAO;AAAA;AACT,SACF;AAAA,MACF,CAAA,EAAG,CAAC,CAAC,CAAC,CAAA;AAEN,MAAA,MAAM,aAAA,GAAgB,CAAC,MAAA,KAAmB;AACxC,QAAA,QAAQ,MAAA;AAAQ,UACd,KAAK,SAAA;AAAA,UACL,KAAK,OAAA;AACH,YAAA,OAAO,EAAE,gCAAgC,CAAA;AAAA,UAC3C,KAAK,WAAA;AAAA,UACL;AACE,YAAA,OAAO,EAAE,+BAA+B,CAAA;AAAA;AAC5C,MACF,CAAA;AAEA,MAAA,MAAM,WAAA,GAAc,CAACuE,KAAAA,KAAiB;AACpC,QAAA,QAAQA,KAAAA;AAAM,UACZ,KAAK,iBAAA;AACH,YAAA,OAAO,EAAE,yDAAyD,CAAA;AAAA,UACpE,KAAK,gBAAA;AACH,YAAA,OAAO,EAAE,oDAAoD,CAAA;AAAA,UAC/D,KAAK,YAAA;AACH,YAAA,OAAO,EAAE,gDAAgD,CAAA;AAAA,UAC3D;AACE,YAAA,OAAO,GAAA;AAAA;AACX,MACF,CAAA;AAEA,MAAA,MAAM,UAAA,GAAa,CAAC,IAAA,KAAc;AAChC,QAAA,uBACEnD,eAAAA;AAAA,UAACC,cAAAA;AAAA,UAAA;AAAA,YACC,CAAA,EAAG,CAAA;AAAA,YACH,SAAA,EAAU,QAAA;AAAA,YACV,IAAA,EAAM,CAAA;AAAA,YACN,SAAA,EAAU,gDAAA;AAAA,YAEV,QAAA,EAAA;AAAA,8BAAAD,eAAAA,CAACC,cAAAA,EAAA,EAAK,SAAA,EAAU,KAAA,EAAM,SAAQ,SAAA,EAAU,KAAA,EAAM,MAAA,EAAO,MAAA,EAAO,MAAA,EAC1D,QAAA,EAAA;AAAA,gCAAApB,cAAAA;AAAA,kBAAC6B,cAAAA,CAAK,SAAA;AAAA,kBAAL;AAAA,oBACC,IAAA,EAAK,MAAA;AAAA,oBACL,SAAA,EAAU,wCAAA;AAAA,oBAET,QAAA,EAAA,IAAA,CAAK;AAAA;AAAA,iBACR;AAAA,gCACA7B,eAAC6B,cAAAA,EAAA,EAAK,WAAU,uCAAA,EACb,QAAA,EAAA,aAAA,CAAc,IAAA,CAAK,MAAM,CAAA,EAC5B;AAAA,eAAA,EACF,CAAA;AAAA,8BACA7B,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,mCAAA,EAAoC,CAAA;AAAA,8BACnDmB,gBAACC,cAAAA,EAAA,EAAK,WAAU,KAAA,EAAM,OAAA,EAAQ,SAAA,EAAU,KAAA,EAAM,MAAA,EAC5C,QAAA,EAAA;AAAA,gCAAAD,eAAAA,CAACC,cAAAA,EAAA,EAAK,SAAA,EAAU,QAAA,EACd,QAAA,EAAA;AAAA,kCAAApB,eAAC6B,cAAAA,EAAA,EAAK,WAAU,wCAAA,EACb,QAAA,EAAA,CAAA,CAAE,cAAc,CAAA,EACnB,CAAA;AAAA,kCACAV,eAAAA,CAACC,cAAAA,EAAA,EAAK,MAAM,CAAA,EACV,QAAA,EAAA;AAAA,oCAAApB,eAACuC,mBAAAA,EAAA,EAAU,MAAM,IAAA,CAAK,KAAA,EAAO,MAAK,IAAA,EAAK,CAAA;AAAA,oCACvCvC,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,uCAAA,EACb,eAAK,KAAA,EACR;AAAA,mBAAA,EACF;AAAA,iBAAA,EACF,CAAA;AAAA,gCACAmB,eAAAA,CAACC,cAAAA,EAAA,EAAK,WAAU,QAAA,EACd,QAAA,EAAA;AAAA,kCAAApB,eAAC6B,cAAAA,EAAA,EAAK,WAAU,wCAAA,EACb,QAAA,EAAA,CAAA,CAAE,aAAa,CAAA,EAClB,CAAA;AAAA,kCACA7B,eAAC6B,cAAAA,EAAA,EAAK,WAAU,uCAAA,EACb,QAAA,EAAA,WAAA,CAAY,IAAA,CAAK,IAAI,CAAA,EACxB;AAAA,iBAAA,EACF,CAAA;AAAA,gCACAV,eAAAA,CAACC,cAAAA,EAAA,EAAK,WAAU,QAAA,EACd,QAAA,EAAA;AAAA,kCAAApB,eAAC6B,cAAAA,EAAA,EAAK,WAAU,wCAAA,EACb,QAAA,EAAA,CAAA,CAAE,eAAe,CAAA,EACpB,CAAA;AAAA,kCACA7B,cAAAA,CAAC6B,cAAAA,EAAA,EAAK,SAAA,EAAU,uCAAA,EACb,eAAK,MAAA,EACR;AAAA,iBAAA,EACF;AAAA,eAAA,EACF;AAAA;AAAA;AAAA,SACF;AAAA,MAEJ,CAAA;AAEA,MAAA,MAAM,WAAW,MAAM;AACrB,QAAA,IAAI6B,WAAAA,CAAW,MAAA,IAAU,UAAA,EAAY,KAAA,IAAS,CAAA,CAAA,EAAI;AAChD,UAAA,UAAA,EAAY,gBAAA,IACV,UAAA,CAAW,gBAAA,CAAiB,UAAA,EAAY,WAAW,EAAE,CAAA;AAAA,QACzD;AAAA,MACF,CAAA;AAEA,MAAA,uBACEvC,eAAAA,CAAAQ,mBAAAA,EAAA,EACE,QAAA,EAAA;AAAA,wBAAA3B,cAAAA;AAAA,UAAC2D,oBAAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO;AAAA,cACL;AAAA,gBACE,IAAA,EAAM,QAAA;AAAA,gBACN,IAAA,EAAM,MAAA;AAAA,gBACN,OAAA,EAAS,KAAA;AAAA,gBACT,KAAA,EAAO,IAAA;AAAA,gBACP,IAAA,EAAM;AAAA,eACR;AAAA,cACA;AAAA,gBACE,IAAA,EAAM,OAAA;AAAA,gBACN,IAAA,EAAM,WAAA;AAAA,gBACN,KAAA,EAAO;AAAA,kBACL,IAAA,EAAM,UAAU,CAAC,CAAA;AAAA,kBACjB,EAAA,EAAI,UAAU,CAAC;AAAA;AACjB;AACF,aACF;AAAA,YACA,QAAA,EAAU,CAAC,KAAA,KAAU;AACnB,cAAA,QAAA,CAAS,KAAK,CAAA;AAAA,YAChB,CAAA;AAAA,YACA,SAAA,EAAU;AAAA;AAAA,SACZ;AAAA,wBACA3D,cAAAA;AAAA,UAAC8D,kBAAAA;AAAA,UAAA;AAAA,YACC,UAAA,EAAYJ,WAAAA;AAAA,YACZ,UAAA;AAAA,YACA,gBAAA,EAAiB,eAAA;AAAA,YACjB,QAAA;AAAA,YACA,SAAA;AAAA,YACA,SAAA,EAAU;AAAA;AAAA;AACZ,OAAA,EACF,CAAA;AAAA,IAEJ,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;ACtJA,IAOa,0BAAA;AAPb,IAAAa,0BAAAA,GAAA,KAAA,CAAA;AAAA,EAAA,yDAAA,GAAA;AAIA,IAAA,SAAA,EAAA;AAGO,IAAM,6BAA6B,MAAM;AAG9C,MAAA,MAAM,CAAC,KAAK,CAAA,GAAIzE,gBAAAA,CAAS,MAAM;AAC7B,QAAA,MAAM,CAAA,uBAAQ,IAAA,EAAK;AAEnB,QAAA,OAAO,IAAI,IAAA,CAAKgD,eAAAA,CAAQ,CAAC,CAAA,EAAGC,gBAAAA,CAAS,CAAC,CAAA,EAAGC,eAAAA,CAAQ,CAAC,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA,MAC9D,CAAC,CAAA;AAED,MAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIlD,gBAAAA,CAAiB;AAAA,QACjDoD,wCAAAA,CAA4B,IAAI,KAAK,CAAA;AAAA,QACrC;AAAA,OACD,CAAA;AACD,MAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIpD,iBAAiB,KAAK,CAAA;AAC9C,MAAA,MAAM,EAAE,IAAA,EAAM,QAAA,EAAU,OAAA,EAAS,eAAA,KAAoBqD,uBAAAA,EAAc;AAEnE,MAAA,MAAM,CAAC,MAAM,EAAE,SAAA,EAAW,MAAM,YAAA,EAAc,IAAIqB,mCAAA,CAAuB;AAAA;AAAA,QAEvE,SAAA,EAAW;AAAA,UACT,SAAA,CAAU,CAAC,CAAA,CAAE,OAAA,EAAQ;AAAA,UACrBlB,WAAAA,CAAI,SAAA,CAAU,CAAC,CAAA,EAAG;AAAA,YAChB,KAAA,EAAO,EAAA;AAAA,YACP,OAAA,EAAS,EAAA;AAAA,YACT,OAAA,EAAS,EAAA;AAAA,YACT,YAAA,EAAc;AAAA,WACf,EAAE,OAAA;AAAQ,SACb;AAAA,QACA,IAAA;AAAA,QACA,QAAA;AAAA,QACA;AAAA,OACD,CAAA;AAMD,MAAA,MAAM,QAAA,GAAW,CAAC,MAAA,KAAyC;AACzD,QAAA,IAAI,MAAA,CAAO,SAAS,MAAA,EAAQ;AAC1B,UAAA,OAAA,CAAQ,OAAO,KAAK,CAAA;AACpB,UAAA,OAAA,CAAQ,CAAC,CAAA;AAAA,QACX;AAEA,QAAA,IAAI,MAAA,CAAO,SAAS,WAAA,EAAa;AAE/B,UAAA,YAAA,CAAa,uBAAA,CAAwB,MAAA,CAAO,KAAK,CAAC,CAAA;AAClD,UAAA,OAAA,CAAQ,CAAC,CAAA;AAAA,QACX;AAAA,MACF,CAAA;AAEA,MAAA,MAAM,UAAA,GAAavD,eAAAA;AAAA,QACjB,MAAM,gBAAgB,IAAI,CAAA;AAAA,QAC1B,CAAC,iBAAiB,IAAI;AAAA,OACxB;AAEA,MAAA,OAAO;AAAA,QACL,UAAA,EAAY,IAAA;AAAA,QACZ,SAAA;AAAA,QACA,YAAA;AAAA;AAAA,QAEA,cAAA,EAAgB;AAAA,UACd,IAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,QAAA;AAAA,QACA;AAAA,OACF;AAAA,IACF,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;ACzEA,IAMa,yBAAA;AANb,IAAA,wBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,yDAAA,GAAA;AAEA,IAAA,oBAAA,EAAA;AACA,IAAA,2BAAA,EAAA;AACA,IAAAwE,0BAAAA,EAAAA;AAEO,IAAM,4BAAsC,MAAM;AACvD,MAAA,MAAM,QAAQ,0BAAA,EAA2B;AACzC,MAAA,MAAM,EAAE,QAAA,EAAS,GAAI/D,mBAAAA,EAAU;AAC/B,MAAA,IAAI,QAAA,EAAU;AACZ,QAAA,uBAAOR,cAAAA,CAAC,yBAAA,EAAA,EAA2B,GAAG,KAAA,EAAO,CAAA;AAAA,MAC/C;AACA,MAAA,uBAAOA,cAAAA,CAAC,0BAAA,EAAA,EAA4B,GAAG,KAAA,EAAO,CAAA;AAAA,IAChD,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACbA,IAAA,oBAAA,GAAA,EAAA;AAAA,QAAA,CAAA,oBAAA,EAAA;AAAA,EAAA,0BAAA,EAAA,MAAA,0BAAA;AAAA,EAAA,yBAAA,EAAA,MAAA,yBAAA;AAAA,EAAA,yBAAA,EAAA,MAAA;AAAA,CAAA,CAAA;AAAA,IAAA,iBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,2CAAA,GAAA;AAAA,IAAA,wBAAA,EAAA;AACA,IAAA,2BAAA,EAAA;AACA,IAAA,oBAAA,EAAA;AAAA,EAAA;AAAA,CAAA,CAAA;ACFA,IA2Ba,uBAAA;AA3Bb,IAAA,uBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,2DAAA,GAAA;AA2BO,IAAM,uBAAA,GAET,CAAC,KAAA,KAAU;AACb,MAAA,MAAM;AAAA,QACJ,UAAA,EAAA0D,WAAAA;AAAA,QACA,cAAA;AAAA,QACA,KAAA;AAAA,QACA,aAAA;AAAA,QACA,SAAA;AAAA,QACA,eAAA;AAAA,QACA,QAAA;AAAA,QACA;AAAA,OACF,GAAI,KAAA;AACJ,MAAA,MAAM,EAAE,IAAA,EAAM,SAAA,EAAU,GAAI,cAAA;AAE5B,MAAA,MAAM,EAAE,CAAA,EAAE,GAAIxC,0BAAAA,EAAe;AAE7B,MAAA,MAAM,YAAA,GAA6B;AAAA,QACjC,KAAA,EAAO,EAAE,mBAAmB,CAAA;AAAA,QAC5B,KAAA,EAAO,cAAA;AAAA,OACT;AAEA,MAAA,MAAM,YAAA,GAA6B;AAAA,QACjC,KAAA,EAAO,EAAE,oBAAoB,CAAA;AAAA,QAC7B,KAAA,EAAO,eAAA;AAAA,OACT;AAEA,MAAA,MAAM,WAAA,GAAc,KAAA,CAAM,WAAA,IAAe,EAAC;AAE1C,MAAA,MAAM,eAAA,GAAkBnB,gBAAQ,MAAM;AACpC,QAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,WAAW,CAAA,IAAK,YAAY,MAAA,EAAQ;AACpD,UAAA,OAAO;AAAA,YACL,YAAA;AAAA,YACA,YAAA;AAAA,YACA,GAAG,WAAA,CAAY,GAAA,CAAkB,CAAC,KAAA,MAAW;AAAA,cAC3C,OAAO,KAAA,CAAM,EAAA;AAAA,cACb,KAAA,EAAO,KAAA,EAAO,WAAA,IAAe0E,uBAAA,CAAc,OAAO,EAAE;AAAA,aACtD,CAAE;AAAA,WACJ;AAAA,QACF;AACA,QAAA,OAAO,CAAC,cAAc,YAAY,CAAA;AAAA,MACpC,CAAA,EAAG,CAAC,WAAW,CAAC,CAAA;AAEhB,MAAA,MAAM,WAAW,MAAM;AACrB,QAAA,IAAIf,WAAAA,IAAcA,WAAAA,CAAW,MAAA,IAAU,UAAA,EAAY,SAAS,CAAA,CAAA,EAAI;AAC9D,UAAA,UAAA,EAAY,gBAAA,GAAmB,UAAA,EAAY,QAAA,GAAW,EAAE,CAAA;AAAA,QAC1D;AAAA,MACF,CAAA;AAEA,MAAA,MAAM,SAAS,MAAM;AACnB,QAAApB,eAAAA,CAAM,OAAA,CAAQ,CAAA,CAAE,oBAAoB,CAAC,CAAA;AAAA,MACvC,CAAA;AAEA,MAAA,MAAM,iBAAA,GAAoB,CAAC,IAAA,KAAiC;AAC1D,QAAA,MAAM,iBAAA,GAAoB,IAAA,CAAK,eAAA,KAAoB,KAAA,CAAM,aAAA;AACzD,QAAA,MAAM,eAAA,GAAkB,IAAA,CAAK,aAAA,KAAkB,KAAA,CAAM,aAAA;AACrD,QAAA,MAAM,iBAAiB,WAAA,CAAY,IAAA;AAAA,UACjC,CAAC,GAAA,KAAQ,GAAA,CAAI,EAAA,KAAO,IAAA,CAAK;AAAA,SAC3B;AACA,QAAA,MAAM,eAAe,WAAA,CAAY,IAAA;AAAA,UAC/B,CAAC,GAAA,KAAQ,GAAA,CAAI,EAAA,KAAO,IAAA,CAAK;AAAA,SAC3B;AAEA,QAAA,uBACEnB,eAAAA;AAAA,UAACC,cAAAA;AAAA,UAAA;AAAA,YACC,CAAA,EAAG,CAAA;AAAA,YACH,SAAA,EAAU,QAAA;AAAA,YACV,IAAA,EAAM,CAAA;AAAA,YACN,SAAA,EAAU,gDAAA;AAAA,YAGV,QAAA,EAAA;AAAA,8BAAAD,eAAAA,CAACC,gBAAA,EAAK,SAAA,EAAU,OAAM,OAAA,EAAQ,SAAA,EAAU,OAAM,MAAA,EAC5C,QAAA,EAAA;AAAA,gCAAApB,cAAAA;AAAA,kBAAC6B,cAAAA,CAAK,SAAA;AAAA,kBAAL;AAAA,oBACC,IAAA,EAAK,MAAA;AAAA,oBACL,SAAA,EAAU,wCAAA;AAAA,oBAET,QAAA,EAAA,IAAA,CAAK;AAAA;AAAA,iBACR;AAAA,gCACA7B,cAAAA,CAAC6B,cAAAA,EAAA,EAAK,IAAA,EAAK,IAAA,EAAK,SAAA,EAAU,2BAAA,EACvB,QAAA,EAAA6C,6BAAA,CAAiB,IAAA,CAAK,MAAM,CAAA,EAC/B;AAAA,eAAA,EACF,CAAA;AAAA,8BAGA1E,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,sCAAA,EAAuC,CAAA;AAAA,8BAGtDmB,gBAACC,cAAAA,EAAA,EAAK,WAAU,KAAA,EAAM,OAAA,EAAQ,SAAA,EAAU,KAAA,EAAM,MAAA,EAC5C,QAAA,EAAA;AAAA,gCAAAD,gBAACC,cAAAA,EAAA,EAAK,SAAA,EAAU,QAAA,EAAS,WAAW,OAAA,EAClC,QAAA,EAAA;AAAA,kCAAApB,eAAC6B,cAAAA,EAAA,EAAK,WAAU,wCAAA,EACb,QAAA,EAAA,CAAA,CAAE,cAAc,CAAA,EACnB,CAAA;AAAA,kCACAV,gBAACC,cAAAA,EAAA,EAAK,WAAU,KAAA,EAAM,SAAA,EAAU,QAAA,EAAS,GAAA,EAAK,CAAA,EAC5C,QAAA,EAAA;AAAA,oCAAApB,eAACuC,mBAAAA,EAAA,EAAU,MAAM,IAAA,CAAK,KAAA,EAAO,MAAK,KAAA,EAAM,CAAA;AAAA,oCACxCvC,eAAC6B,cAAAA,EAAA,EAAK,MAAK,IAAA,EAAK,SAAA,EAAU,2BAAA,EACvB,QAAA,EAAA,IAAA,CAAK,KAAA,EACR;AAAA,mBAAA,EACF;AAAA,iBAAA,EACF,CAAA;AAAA,gCACAV,eAAAA,CAACC,cAAAA,EAAA,EAAK,SAAA,EAAU,QAAA,EAAS,WAAU,KAAA,EACjC,QAAA,EAAA;AAAA,kCAAApB,eAAC6B,cAAAA,EAAA,EAAK,WAAU,wCAAA,EACb,QAAA,EAAA,CAAA,CAAE,eAAe,CAAA,EACpB,CAAA;AAAA,kCACA7B,cAAAA;AAAA,oBAAC6B,cAAAA,CAAK,OAAA;AAAA,oBAAL;AAAA,sBACC,EAAA,EAAI,CAAA;AAAA,sBACJ,SAAA,EAAU,uCAAA;AAAA,sBAET,QAAA,EAAA,IAAA,CAAK;AAAA;AAAA;AACR,iBAAA,EACF;AAAA,eAAA,EACF,CAAA;AAAA,8BAGAV,gBAACC,cAAAA,EAAA,EAAK,WAAU,KAAA,EAAM,OAAA,EAAQ,SAAA,EAAU,KAAA,EAAM,MAAA,EAC5C,QAAA,EAAA;AAAA,gCAAAD,gBAACC,cAAAA,EAAA,EAAK,SAAA,EAAU,QAAA,EAAS,KAAK,CAAA,EAC5B,QAAA,EAAA;AAAA,kCAAAD,eAAAA,CAACU,cAAAA,EAAA,EAAK,SAAA,EAAU,wCAAA,EACb,QAAA,EAAA;AAAA,oBAAA,CAAA,CAAE,gCAAgC,CAAA;AAAA,oBAAE,IAAA;AAAA,oBAAG,EAAE,kBAAkB,CAAA;AAAA,oBAAE;AAAA,mBAAA,EAChE,CAAA;AAAA,kCACAV,gBAACC,cAAAA,EAAA,EAAK,WAAU,QAAA,EAAS,GAAA,EAAK,CAAA,EAAG,SAAA,EAAW,OAAA,EAC1C,QAAA,EAAA;AAAA,oCAAApB,cAAAA,CAACoB,gBAAA,EAAK,SAAA,EAAU,OAAM,SAAA,EAAU,QAAA,EAAS,GAAA,EAAK,CAAA,EAC5C,QAAA,kBAAApB,cAAAA;AAAA,sBAAC6B,cAAAA,CAAK,SAAA;AAAA,sBAAL;AAAA,wBACC,IAAA,EAAK,SAAA;AAAA,wBACL,QAAA,EAAQ,IAAA;AAAA,wBACR,MAAA;AAAA,wBACA,SAAA,EAAU,uCAAA;AAAA,wBAET,QAAA,EAAA,IAAA,CAAK;AAAA;AAAA,qBACR,EACF,CAAA;AAAA,oCACA7B,cAAAA,CAAC6D,eAAAA,EAAA,EAAM,KAAA,EAAM,WAAU,IAAA,EAAK,IAAA,EACzB,QAAA,EAAA,iBAAA,GACG,CAAA,CAAE,oBAAoB,CAAA,GACtB,cAAA,EAAgB,WAAA,IAAe,CAAA,CAAE,mBAAmB,CAAA,EAC1D;AAAA,mBAAA,EACF;AAAA,iBAAA,EACF,CAAA;AAAA,gCACA1C,gBAACC,cAAAA,EAAA,EAAK,WAAU,QAAA,EAAS,SAAA,EAAU,KAAA,EAAM,GAAA,EAAK,CAAA,EAC5C,QAAA,EAAA;AAAA,kCAAAD,eAAAA,CAACU,cAAAA,EAAA,EAAK,SAAA,EAAU,wCAAA,EACb,QAAA,EAAA;AAAA,oBAAA,CAAA,CAAE,8BAA8B,CAAA;AAAA,oBAAE,IAAA;AAAA,oBAAG,EAAE,kBAAkB,CAAA;AAAA,oBAAE;AAAA,mBAAA,EAC9D,CAAA;AAAA,kCACAV,gBAACC,cAAAA,EAAA,EAAK,WAAU,QAAA,EAAS,SAAA,EAAU,KAAA,EAAM,GAAA,EAAK,CAAA,EAC5C,QAAA,EAAA;AAAA,oCAAApB,cAAAA,CAACoB,gBAAA,EAAK,SAAA,EAAU,OAAM,SAAA,EAAU,QAAA,EAAS,GAAA,EAAK,CAAA,EAC5C,QAAA,kBAAApB,cAAAA;AAAA,sBAAC6B,cAAAA,CAAK,SAAA;AAAA,sBAAL;AAAA,wBACC,IAAA,EAAK,SAAA;AAAA,wBACL,QAAA,EAAQ,IAAA;AAAA,wBACR,MAAA;AAAA,wBACA,SAAA,EAAU,uCAAA;AAAA,wBAET,QAAA,EAAA,IAAA,CAAK;AAAA;AAAA,qBACR,EACF,CAAA;AAAA,oCACA7B,cAAAA,CAAC6D,eAAAA,EAAA,EAAM,KAAA,EAAM,WAAU,IAAA,EAAK,IAAA,EACzB,QAAA,EAAA,eAAA,GACG,CAAA,CAAE,oBAAoB,CAAA,GACtB,YAAA,EAAc,WAAA,IAAe,CAAA,CAAE,mBAAmB,CAAA,EACxD;AAAA,mBAAA,EACF;AAAA,iBAAA,EACF;AAAA,eAAA,EACF;AAAA;AAAA;AAAA,SACF;AAAA,MAEJ,CAAA;AAEA,MAAA,uBACE1C,eAAAA,CAAAQ,mBAAAA,EAAA,EACE,QAAA,EAAA;AAAA,wBAAA3B,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,UAAA,EACb,QAAA,kBAAAA,cAAAA;AAAA,UAAC2D,oBAAAA;AAAA,UAAA;AAAA,YACC,QAAA;AAAA,YACA,KAAA,EAAOgB,aAAA;AAAA,cACL;AAAA,gBACE;AAAA,kBACE,IAAA,EAAM,QAAA;AAAA,kBACN,IAAA,EAAM,MAAA;AAAA,kBACN,KAAA,EAAO,IAAA;AAAA,kBACP,OAAA,EAAS;AAAA,oBACP,EAAE,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,CAAA,CAAE,gBAAgB,CAAA,EAAE;AAAA,oBAC3C,EAAE,KAAA,EAAO,IAAA,EAAM,KAAA,EAAO,CAAA,CAAE,eAAe,CAAA;AAAE;AAC3C,iBACF;AAAA,gBACA;AAAA,kBACE,IAAA,EAAM,OAAA;AAAA,kBACN,IAAA,EAAM,WAAA;AAAA,kBACN,KAAA,EAAO;AAAA,oBACL,IAAA,EAAM,UAAU,CAAC,CAAA;AAAA,oBACjB,EAAA,EAAI,UAAU,CAAC;AAAA;AACjB;AACF,eACF;AAAA,cACA,CAAC,KAAA,KAAU;AACT,gBAAA,IAAI,aAAA,EAAe;AACjB,kBAAA,KAAA,CAAM,OAAA,CAAQ;AAAA,oBACZ,IAAA,EAAM,QAAA;AAAA,oBACN,IAAA,EAAM,SAAA;AAAA,oBACN,KAAA,EAAO,eAAA;AAAA,oBACP,OAAA,EAAS;AAAA,mBACV,CAAA;AAAA,gBACH;AAAA,cACF;AAAA;AACF;AAAA,SACF,EACF,CAAA;AAAA,wBACA3E,cAAAA;AAAA,UAAC8D,kBAAAA;AAAA,UAAA;AAAA,YACC,UAAA,EAAYJ,WAAAA;AAAA,YACZ,UAAA,EAAY,iBAAA;AAAA,YACZ,gBAAA,EAAiB,gBAAA;AAAA,YACjB,QAAA;AAAA,YACA,SAAA;AAAA,YACA,SAAA,EAAU;AAAA;AAAA;AACZ,OAAA,EACF,CAAA;AAAA,IAEJ,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;AC9OA,IAcakB,WAAAA;AAdb,IAAAX,YAAAA,GAAA,KAAA,CAAA;AAAA,EAAA,+CAAA,GAAA;AAcO,IAAMW,cAAa,MAAM;AAC9B,MAAA,MAAM,EAAE,CAAA,EAAE,GAAI1D,0BAAAA,EAAe;AAC7B,MAAA,MAAM,SAAS,MAAM;AACnB,QAAAoB,eAAAA,CAAM,OAAA,CAAQ,CAAA,CAAE,oBAAoB,CAAC,CAAA;AAAA,MACvC,CAAA;AACA,MAAA,MAAM,EAAE,KAAA,EAAM,GAAIpC,uBAAAA,EAAW;AAC7B,MAAA,MAAM,GAAA,GAAM,KAAA,CAAM,WAAA,IAAe,EAAC;AAClC,MAAA,MAAM,OAAA,GAAU2E,wBAAAA,CAAM,OAAA,CAA0C,MAAM;AACpE,QAAA,OAAO;AAAA,UACL;AAAA,YACE,KAAA,EAAO,EAAE,cAAc,CAAA;AAAA,YACvB,SAAA,EAAW,OAAA;AAAA,YACX,KAAA,EAAO,EAAA;AAAA,YACP,OAAO,GAAA,EAAa;AAClB,cAAA,uBACE1D,eAAAA,CAACC,cAAAA,EAAA,EAAK,MAAM,CAAA,EACV,QAAA,EAAA;AAAA,gCAAApB,eAACuC,mBAAAA,EAAA,EAAU,IAAA,EAAM,GAAA,EAAK,MAAK,IAAA,EAAK,CAAA;AAAA,gCAChCvC,cAAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,GAAA,EAAI;AAAA,eAAA,EACb,CAAA;AAAA,YAEJ;AAAA,WACF;AAAA,UACA;AAAA,YACE,KAAA,EAAO,EAAE,aAAa,CAAA;AAAA,YACtB,SAAA,EAAW,cAAA;AAAA,YACX,KAAA,EAAO,GAAA;AAAA,YACP,IAAA,EAAM;AAAA,WACR;AAAA,UACA;AAAA,YACE,KAAA,EAAO,GAAG,CAAA,CAAE,gCAAgC,CAAC,CAAA,EAAA,EAAK,CAAA,CAAE,kBAAkB,CAAC,CAAA,CAAA,CAAA;AAAA,YACvE,SAAA,EAAW,iBAAA;AAAA,YACX,OAAO,GAAA,EAAa;AAClB,cAAA,MAAM,aAAA,GAAgB,QAAQ,KAAA,CAAM,aAAA;AACpC,cAAA,MAAM,aAAa,GAAA,CAAI,IAAA,CAAK,CAAC,IAAA,KAAS,IAAA,CAAK,OAAO,GAAG,CAAA;AACrD,cAAA,uBACEmB,eAAAA,CAACC,cAAAA,EAAA,EAAK,SAAA,EAAU,OAAA,EAAQ,EAAA,EAAI,CAAA,EAAG,GAAA,EAAK,CAAA,EAAG,SAAA,EAAU,QAAA,EAC/C,QAAA,EAAA;AAAA,gCAAApB,cAAAA,CAAC6B,eAAK,SAAA,EAAL,EAAe,QAAgB,QAAA,EAAQ,IAAA,EAAC,IAAA,EAAK,SAAA,EAC3C,QAAA,EAAA,GAAA,EACH,CAAA;AAAA,gCACA7B,cAAAA,CAAC6D,eAAAA,EAAA,EAAM,SAAA,EAAU,iBAAA,EAAkB,OAAM,SAAA,EAAU,IAAA,EAAK,IAAA,EACrD,QAAA,EAAA,aAAA,GACG,EAAE,oBAAoB,CAAA,GACtB,YAAY,WAAA,IAAe,CAAA,CAAE,mBAAmB,CAAA,EACtD;AAAA,eAAA,EACF,CAAA;AAAA,YAEJ;AAAA,WACF;AAAA,UACA;AAAA,YACE,KAAA,EAAO,GAAG,CAAA,CAAE,8BAA8B,CAAC,CAAA,EAAA,EAAK,CAAA,CAAE,kBAAkB,CAAC,CAAA,CAAA,CAAA;AAAA,YACrE,SAAA,EAAW,eAAA;AAAA,YACX,OAAO,GAAA,EAAa;AAClB,cAAA,MAAM,aAAA,GAAgB,QAAQ,KAAA,CAAM,aAAA;AACpC,cAAA,MAAM,aAAa,GAAA,CAAI,IAAA,CAAK,CAAC,IAAA,KAAS,IAAA,CAAK,OAAO,GAAG,CAAA;AACrD,cAAA,uBACE1C,eAAAA,CAACC,cAAAA,EAAA,EAAK,SAAA,EAAU,OAAA,EAAQ,EAAA,EAAI,CAAA,EAAG,GAAA,EAAK,CAAA,EAAG,SAAA,EAAU,QAAA,EAC/C,QAAA,EAAA;AAAA,gCAAApB,cAAAA,CAAC6B,eAAK,SAAA,EAAL,EAAe,QAAgB,QAAA,EAAQ,IAAA,EAAC,IAAA,EAAK,SAAA,EAC3C,QAAA,EAAA,GAAA,EACH,CAAA;AAAA,gCACA7B,cAAAA,CAAC6D,eAAAA,EAAA,EAAM,SAAA,EAAU,iBAAA,EAAkB,OAAM,SAAA,EAAU,IAAA,EAAK,IAAA,EACrD,QAAA,EAAA,aAAA,GACG,EAAE,oBAAoB,CAAA,GACtB,YAAY,WAAA,IAAe,CAAA,CAAE,mBAAmB,CAAA,EACtD;AAAA,eAAA,EACF,CAAA;AAAA,YAEJ;AAAA,WACF;AAAA,UACA;AAAA,YACE,KAAA,EAAO,EAAE,eAAe,CAAA;AAAA,YACxB,SAAA,EAAW,QAAA;AAAA,YACX,KAAA,EAAO,GAAA;AAAA,YACP,OAAO,GAAA,EAAa;AAClB,cAAA,OAAOa,8BAAiB,GAAG,CAAA;AAAA,YAC7B;AAAA,WACF;AAAA,UACA;AAAA,YACE,KAAA,EAAO,EAAE,eAAe,CAAA;AAAA,YACxB,SAAA,EAAW,QAAA;AAAA,YACX,KAAA,EAAO;AAAA;AACT,SACF;AAAA,MACF,GAAG,CAAC,CAAA,EAAG,KAAA,CAAM,aAAA,EAAe,GAAG,CAAC,CAAA;AAChC,MAAA,OAAO,OAAA;AAAA,IACT,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;AClGA,IAkBa,iBAAA;AAlBb,IAAA,gBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,oDAAA,GAAA;AAQA,IAAAT,YAAAA,EAAAA;AAUO,IAAM,iBAAA,GAET,CAAC,KAAA,KAAU;AACb,MAAA,MAAM;AAAA,QACJ,UAAA,EAAAP,WAAAA;AAAA,QACA,cAAA;AAAA,QACA,KAAA;AAAA,QACA,aAAA;AAAA,QACA,SAAA;AAAA,QACA,eAAA;AAAA,QACA;AAAA,OACF,GAAI,KAAA;AACJ,MAAA,MAAM,EAAE,IAAA,EAAM,SAAA,EAAU,GAAI,cAAA;AAE5B,MAAA,MAAM,EAAE,CAAA,EAAE,GAAIxC,0BAAAA,EAAe;AAE7B,MAAA,MAAM,YAAA,GAA6B;AAAA,QACjC,KAAA,EAAO,EAAE,mBAAmB,CAAA;AAAA,QAC5B,KAAA,EAAO,cAAA;AAAA,OACT;AAEA,MAAA,MAAM,YAAA,GAA6B;AAAA,QACjC,KAAA,EAAO,EAAE,oBAAoB,CAAA;AAAA,QAC7B,KAAA,EAAO,eAAA;AAAA,OACT;AAEA,MAAA,MAAM,WAAA,GAAc,KAAA,CAAM,WAAA,IAAe,EAAC;AAE1C,MAAA,MAAM,eAAA,GAAkBnB,gBAAQ,MAAM;AACpC,QAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,WAAW,CAAA,IAAK,YAAY,MAAA,EAAQ;AACpD,UAAA,OAAO;AAAA,YACL,YAAA;AAAA,YACA,YAAA;AAAA,YACA,GAAG,WAAA,CAAY,GAAA,CAAkB,CAAC,KAAA,MAAW;AAAA,cAC3C,OAAO,KAAA,CAAM,EAAA;AAAA,cACb,KAAA,EAAO,KAAA,EAAO,WAAA,IAAe0E,uBAAAA,CAAc,OAAO,EAAE;AAAA,aACtD,CAAE;AAAA,WACJ;AAAA,QACF;AACA,QAAA,OAAO,CAAC,cAAc,YAAY,CAAA;AAAA,MACpC,CAAA,EAAG,CAAC,WAAW,CAAC,CAAA;AAEhB,MAAA,MAAM,UAAUG,WAAAA,EAAW;AAE3B,MAAA,uBACEzD,eAAAA,CAAAQ,mBAAAA,EAAA,EACE,QAAA,EAAA;AAAA,wBAAA3B,cAAAA;AAAA,UAAC2D,oBAAAA;AAAA,UAAA;AAAA,YACC,QAAA;AAAA,YACA,KAAA,EAAOgB,aAAAA;AAAA,cACL;AAAA,gBACE;AAAA,kBACE,IAAA,EAAM,QAAA;AAAA,kBACN,IAAA,EAAM,MAAA;AAAA,kBACN,KAAA,EAAO,IAAA;AAAA,kBACP,OAAA,EAAS;AAAA,oBACP,EAAE,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,CAAA,CAAE,gBAAgB,CAAA,EAAE;AAAA,oBAC3C,EAAE,KAAA,EAAO,IAAA,EAAM,KAAA,EAAO,CAAA,CAAE,eAAe,CAAA;AAAE;AAC3C,iBACF;AAAA,gBACA;AAAA,kBACE,IAAA,EAAM,OAAA;AAAA,kBACN,IAAA,EAAM,WAAA;AAAA,kBACN,KAAA,EAAO;AAAA,oBACL,IAAA,EAAM,UAAU,CAAC,CAAA;AAAA,oBACjB,EAAA,EAAI,UAAU,CAAC;AAAA;AACjB;AACF,eACF;AAAA,cACA,CAAC,KAAA,KAAU;AACT,gBAAA,IAAI,aAAA,EAAe;AACjB,kBAAA,KAAA,CAAM,OAAA,CAAQ;AAAA,oBACZ,IAAA,EAAM,QAAA;AAAA,oBACN,IAAA,EAAM,SAAA;AAAA,oBACN,KAAA,EAAO,eAAA;AAAA,oBACP,OAAA,EAAS;AAAA,mBACV,CAAA;AAAA,gBACH;AAAA,cACF;AAAA;AACF;AAAA,SACF;AAAA,wBACA3E,cAAAA;AAAA,UAAC4D,qCAAAA;AAAA,UAAA;AAAA,YACC,QAAA,EAAQ,IAAA;AAAA,YACR,OAAA;AAAA,YACA,UAAA,EAAYF,WAAAA;AAAA,YACZ,OAAA,EAAS,SAAA;AAAA,YAET,SAAA,EAAU,mBAAA;AAAA,YACV,UAAA,EAAY,EAAE,IAAA,EAAM,2BAAA,EAA4B;AAAA,YAChD,YAAY,KAAA,CAAM,UAAA;AAAA,YAClB,eAAA,EAAiB,CAAC,GAAA,KAAQ,GAAA,CAAI;AAAA;AAAA;AAChC,OAAA,EACF,CAAA;AAAA,IAEJ,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;AC/GA,IASa,sBAAA;AATb,IAAAa,0BAAAA,GAAA,KAAA,CAAA;AAAA,EAAA,4DAAA,GAAA;AAMA,IAAA,SAAA,EAAA;AACA,IAAA,gBAAA,EAAA;AAEO,IAAM,yBAAyB,MAAM;AAG1C,MAAA,MAAM,KAAA,GAAQM,wBAAAA,CAAM,OAAA,CAAc,MAAM;AACtC,QAAA,MAAM,IAAA,uBAAW,IAAA,EAAK;AACtB,QAAA,OAAO,IAAI,IAAA,CAAK/B,eAAAA,CAAQ,IAAI,CAAA,EAAGC,gBAAAA,CAAS,IAAI,CAAA,EAAGC,eAAAA,CAAQ,IAAI,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA,MACvE,CAAA,EAAG,EAAE,CAAA;AAEL,MAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI6B,yBAAM,QAAA,CAAiB;AAAA,QACvD3B,wCAAAA,CAA4B,IAAI,KAAK,CAAA;AAAA,QACrC;AAAA,OACD,CAAA;AAED,MAAA,MAAM,EAAE,IAAA,EAAM,QAAA,EAAU,OAAA,EAAS,eAAA,KAAoBC,uBAAAA,EAAc;AAEnE,MAAA,MAAM,EAAE,KAAA,EAAM,GAAIjD,uBAAAA,EAAW;AAE7B,MAAA,MAAM,CAAC,eAAA,EAAiB,UAAU,CAAA,GAAI2E,yBAAM,QAAA,CAAA,cAAA,WAAgC;AAE5E,MAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIA,wBAAAA,CAAM,SAAuB,KAAK,CAAA;AAE1D,MAAA,MAAM,CAAC,IAAA,EAAM,EAAE,WAAW,IAAA,EAAM,IAAIrB,+BAAAA,CAAmB;AAAA,QACrD,SAAA,EAAW;AAAA,UACT,SAAA,CAAU,CAAC,CAAA,EAAG,OAAA,EAAQ;AAAA,UACtBF,WAAAA,CAAI,SAAA,CAAU,CAAC,CAAA,EAAG;AAAA,YAChB,KAAA,EAAO,EAAA;AAAA,YACP,OAAA,EAAS,EAAA;AAAA,YACT,OAAA,EAAS,EAAA;AAAA,YACT,YAAA,EAAc;AAAA,WACf,GAAG,OAAA;AAAQ,SACd;AAAA,QACA,IAAA;AAAA,QACA,IAAA,EAAM,QAAA;AAAA,QACN,IAAA;AAAA,QACA,aAAA,EAAe;AAAA,OAChB,CAAA;AAED,MAAA,MAAM,YAAA,GAAeuB,wBAAAA,CAAM,OAAA,CAAQ,MAAM;AACvC,QAAA,OAAO,IAAA,CAAK,MAAA,CAAO,CAAC,IAAA,KAAS;AAC3B,UAAA,IAAI,CAAC,mBAAmB,eAAA,KAAA,cAAA,YAAqC;AAC3D,YAAA,OAAO,IAAA;AAAA,UACT;AACA,UAAA,IAAI,eAAA,KAAA,eAAA,aAAsC;AACxC,YAAA,OACE,KAAK,eAAA,KAAoB,KAAA,CAAM,aAAA,IAC/B,IAAA,CAAK,kBAAkB,KAAA,CAAM,aAAA;AAAA,UAEjC,CAAA,MAAO;AACL,YAAA,OACE,IAAA,CAAK,eAAA,KAAoB,eAAA,IACzB,IAAA,CAAK,aAAA,KAAkB,eAAA;AAAA,UAE3B;AAAA,QACF,CAAC,CAAA;AAAA,MACH,CAAA,EAAG,CAAC,IAAA,EAAM,eAAe,CAAC,CAAA;AAE1B,MAAA,MAAM,kBAAkBA,wBAAAA,CAAM,WAAA;AAAA,QAC5B,CAAC,MAAA,KAA4C;AAC3C,UAAA,IAAI,MAAA,CAAO,SAAS,SAAA,EAAW;AAC7B,YAAA,UAAA,CAAW,OAAO,KAAK,CAAA;AAAA,UACzB;AACA,UAAA,IAAI,MAAA,CAAO,SAAS,MAAA,EAAQ;AAC1B,YAAA,OAAA,CAAQ,OAAO,KAAqB,CAAA;AAAA,UACtC;AACA,UAAA,IAAI,MAAA,CAAO,SAAS,WAAA,EAAa;AAC/B,YAAA,YAAA,CAAa,uBAAA,CAAwB,MAAA,CAAO,KAAY,CAAC,CAAA;AAAA,UAC3D;AACA,UAAA,OAAA,CAAQ,CAAC,CAAA;AAAA,QACX,CAAA;AAAA,QACA,CAAC,OAAO;AAAA,OACV;AAEA,MAAA,MAAM,aAAaA,wBAAAA,CAAM,OAAA;AAAA,QACvB,MAAM,gBAAgB,IAAI,CAAA;AAAA,QAC1B,CAAC,iBAAiB,IAAI;AAAA,OACxB;AAEA,MAAA,OAAO;AAAA,QACL,UAAA,EAAY,YAAA;AAAA,QACZ,SAAA;AAAA;AAAA,QAEA,cAAA,EAAgB;AAAA,UACd,IAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,eAAA;AAAA,QACA,QAAA,EAAU,eAAA;AAAA,QACV;AAAA,OACF;AAAA,IACF,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;AClGA,IAOa,qBAAA;AAPb,IAAA,oBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,wDAAA,GAAA;AAGA,IAAA,uBAAA,EAAA;AACA,IAAA,gBAAA,EAAA;AACA,IAAAN,0BAAAA,EAAAA;AAEO,IAAM,wBAAkC,MAAM;AACnD,MAAA,MAAM,QAAQ,sBAAA,EAAuB;AACrC,MAAA,MAAM,eAAerE,uBAAAA,EAAW;AAChC,MAAA,MAAM,EAAE,QAAA,EAAS,GAAIM,mBAAAA,EAAU;AAC/B,MAAA,IAAI,QAAA,EAAU;AACZ,QAAA,uBAAOR,cAAAA,CAAC,uBAAA,EAAA,EAAyB,GAAG,KAAA,EAAQ,GAAG,YAAA,EAAc,CAAA;AAAA,MAC/D;AACA,MAAA,uBAAOA,cAAAA,CAAC,iBAAA,EAAA,EAAmB,GAAG,KAAA,EAAQ,GAAG,YAAA,EAAc,CAAA;AAAA,IACzD,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACfA,IAAA,uBAAA,GAAA,EAAA;AAAA,QAAA,CAAA,uBAAA,EAAA;AAAA,EAAA,iBAAA,EAAA,MAAA,iBAAA;AAAA,EAAA,qBAAA,EAAA,MAAA;AAAA,CAAA,CAAA;AAAA,IAAA,oBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,8CAAA,GAAA;AAAA,IAAA,oBAAA,EAAA;AACA,IAAA,gBAAA,EAAA;AAAA,EAAA;AAAA,CAAA,CAAA;ACDA,IAOM,aAAA,EAeO,eAAA;AAtBb,IAAA,oBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,8BAAA,GAAA;AAOA,IAAM,aAAA,GAAsC;AAAA,MAC1C,KAAA,EAAO,MAAA;AAAA,MACP,OAAA,EAAS,CAAA;AAAA,MACT,MAAA,EAAQ;AAAA,KACV;AAWO,IAAM,kBAAkB,MAA6B;AAC1D,MAAA,MAAM,EAAE,CAAA,EAAE,GAAIkB,0BAAAA,EAAe;AAC7B,MAAA,MAAM,EAAE,KAAA,EAAO,aAAA,EAAc,GAAIhB,uBAAAA,EAAW;AAC5C,MAAA,MAAM,EAAE,OAAA,GAAU,EAAC,KAAMC,0BAAAA,EAAc;AACvC,MAAA,MAAM,WAAA,GAAc,KAAA,CAAM,WAAA,IAAe,EAAC;AAE1C,MAAA,OAAOJ,gBAAQ,MAAM;AACnB,QAAA,OAAO4E,aAAAA,CAAe,WAAA,EAAa,CAAC,KAAA,KAAU;AAE5C,UAAA,KAAA,MAAW,OAAO,KAAA,EAAO;AACvB,YAAA,GAAA,CAAI,aAAa,GAAA,CAAI,EAAA;AACrB,YAAA,IAAI,MAAM,OAAA,CAAQ,GAAA,CAAI,OAAO,CAAA,IAAK,GAAA,CAAI,QAAQ,MAAA,EAAQ;AACpD,cAAA,GAAA,CAAI,QAAA,GAAW,GAAA,CAAI,OAAA,CAAQ,GAAA,CAAI,CAAC,IAAA,MAAuB;AAAA,gBACrD,GAAG,IAAA;AAAA,gBACH,YAAY,GAAA,CAAI;AAAA,eAClB,CAAE,CAAA;AAAA,YACJ,CAAA,MAAO;AACL,cAAA,GAAA,CAAI,QAAA,GAAW,CAAC,EAAE,GAAG,eAAe,UAAA,EAAY,GAAA,CAAI,IAAI,CAAA;AAAA,YAC1D;AAEA,YAAA,OAAA,CAAQ,cAAA,CAAe,KAAK,SAAS,CAAA;AAAA,UACvC;AAGA,UAAA,IAAI,aAAA,EAAe;AACjB,YAAA,KAAA,CAAM,OAAA,CAAQ;AAAA,cACZ,YAAY,KAAA,CAAM,aAAA;AAAA,cAClB,WAAA,EAAa,EAAE,oBAAoB,CAAA;AAAA,cACnC,QAAA,EACE,KAAA,CAAM,OAAA,CAAQ,OAAO,CAAA,IAAK,QAAQ,MAAA,GAC9B,OAAA,CAAQ,GAAA,CAAI,CAAC,IAAA,MAAuB;AAAA,gBAClC,GAAG,IAAA;AAAA,gBACH,YAAY,KAAA,CAAM;AAAA,gBAClB,CAAA,GACF;AAAA,gBACE;AAAA,kBACE,GAAG,aAAA;AAAA,kBACH,YAAY,KAAA,CAAM;AAAA;AACpB;AACF,aACP,CAAA;AAAA,UACH;AAAA,QACF,CAAC,CAAA;AAAA,MACH,CAAA,EAAG,CAAC,OAAA,EAAS,WAAA,EAAa,eAAe,KAAA,CAAM,aAAA,EAAe,CAAC,CAAC,CAAA;AAAA,IAClE,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;AClEA,IAUM,UAIO,qBAAA,EAqBA,kBAAA;AAnCb,IAAA,uBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,iCAAA,GAAA;AAQA,IAAA,oBAAA,EAAA;AAEA,IAAM,QAAA,GAAW,CAAC,GAAA,KAAgC;AAChD,MAAA,OAAO,OAAO,GAAA,KAAQ,QAAA,IAAY,CAAC,MAAA,CAAO,MAAM,GAAG,CAAA;AAAA,IACrD,CAAA;AAEO,IAAM,qBAAA,GAAwB,CACnC,IAAA,EACA,aAAA,KACG;AACH,MAAA,IAAI,KAAA,GAAQ,IAAIjC,oBAAAA,CAAQ,CAAC,CAAA;AACzB,MAAA,KAAA,MAAW,QAAQ,IAAA,EAAM;AACvB,QAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,IAAA,CAAK,OAAO,CAAA,EAAG;AAC/B,UAAA,KAAA,MAAW,GAAA,IAAO,KAAK,OAAA,EAAS;AAC9B,YAAA,IAAI,QAAA,CAAS,GAAA,CAAI,OAAO,CAAA,EAAG;AACzB,cAAA,MAAM,UAAA,GAAa,aAAA,CAAc,GAAA,CAAI,KAAK,CAAA;AAC1C,cAAA,KAAA,GAAQ,KAAA,CAAM,KAAK,IAAIA,oBAAAA,CAAQ,IAAI,OAAO,CAAA,CAAE,GAAA,CAAI,UAAU,CAAC,CAAA;AAAA,YAC7D;AAAA,UACF;AAAA,QACF,WAAW,QAAA,CAAS,IAAA,CAAK,OAAO,CAAA,IAAK,WAAW,IAAA,EAAM;AACpD,UAAA,MAAM,UAAA,GAAa,aAAA,CAAc,IAAA,CAAK,KAAK,CAAA;AAC3C,UAAA,KAAA,GAAQ,KAAA,CAAM,KAAK,IAAIA,oBAAAA,CAAQ,KAAK,OAAO,CAAA,CAAE,GAAA,CAAI,UAAU,CAAC,CAAA;AAAA,QAC9D;AAAA,MACF;AACA,MAAA,OAAO,KAAA;AAAA,IACT,CAAA;AAEO,IAAM,qBAAqB,MAAM;AACtC,MAAA,MAAM,EAAE,KAAA,EAAO,aAAA,EAAc,GAAIxC,uBAAAA,EAAW;AAC5C,MAAA,MAAM,EAAE,OAAA,GAAU,EAAC,KAAMC,0BAAAA,EAAc;AACvC,MAAA,MAAM,EAAE,aAAA,EAAc,GAAI2E,iCAAA,EAAqB;AAC/C,MAAA,MAAM,cAAc,eAAA,EAAgB;AAEpC,MAAA,MAAM,WAAA,GAAc,KAAA,CAAM,WAAA,IAAe,EAAC;AAG1C,MAAA,MAAM,cAAA,GAAiB/E,eAAAA;AAAA,QACrB,MAAM,qBAAA,CAAsB,OAAA,EAAS,aAAa,CAAA;AAAA,QAClD,CAAC,SAAS,aAAa;AAAA,OACzB;AAGA,MAAA,MAAM,aAAA,GAAgBA,eAAAA;AAAA,QACpB,MAAM,qBAAA,CAAsB,WAAA,EAAa,aAAa,CAAA;AAAA,QACtD,CAAC,aAAa,aAAa;AAAA,OAC7B;AAGA,MAAA,MAAM,UAAA,GAAaA,gBAAgB,MAAM;AACvC,QAAA,IAAI,aAAA,EAAe;AACjB,UAAA,OAAO,cAAA,CAAe,IAAA,CAAK,aAAa,CAAA,CAAE,QAAA,EAAS;AAAA,QACrD,CAAA,MAAO;AACL,UAAA,MAAM,IAAA,GAAO,YAAY,IAAA,CAAK,CAAC,SAAS,IAAA,CAAK,EAAA,KAAO,MAAM,SAAS,CAAA;AACnE,UAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,IAAA,EAAM,QAAQ,CAAA,EAAG;AACjC,YAAA,OAAO,qBAAA,CAAsB,IAAA,CAAK,QAAA,EAAU,aAAa,EAAE,QAAA,EAAS;AAAA,UACtE;AACA,UAAA,OAAO,CAAA;AAAA,QACT;AAAA,MACF,CAAA,EAAG;AAAA,QACD,aAAA;AAAA,QACA,cAAA;AAAA,QACA,aAAA;AAAA,QACA,WAAA;AAAA,QACA,KAAA,CAAM,SAAA;AAAA,QACN;AAAA,OACD,CAAA;AAED,MAAA,OAAO,UAAA;AAAA,IACT,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;AC5EA,IA6BM,wBAAA,EAaA,cAAA,EAsCA,wBAAA,EAmDA,iBAAA,EAoFO,eAAA,EAqFA,WAAA;AA5Sb,IAAA,sBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,mDAAA,GAAA;AA6BA,IAAM,2BAA2B8E,wBAAAA,CAAM,IAAA;AAAA,MAAK,MAC1C,OAAA,CAAA,OAAA,EAAA,CAAA,IAAA,CAAA,OAAA,mBAAA,EAAA,EAAA,sBAAA,CAAA,CAAA,CAAwC,IAAA,CAAK,CAAC,GAAA,KAAQ;AACpD,QAAA,OAAO,EAAE,OAAA,EAAS,GAAA,CAAI,oBAAA,EAAqB;AAAA,MAC7C,CAAC;AAAA,KACH;AASA,IAAM,cAAA,GAIF,CAAC,KAAA,KAAU;AACb,MAAA,MAAM,EAAE,UAAA,EAAY,OAAA,EAAS,kBAAA,EAAmB,GAAI,KAAA;AACpD,MAAA,MAAM,EAAE,CAAA,EAAE,GAAI3D,0BAAAA,EAAe;AAC7B,MAAA,MAAM,IAAA,GAAO,UAAUY,iBAAAA,GAAUC,sBAAAA;AACjC,MAAA,uBACEZ,eAAAA,CAACC,cAAAA,EAAA,EAAK,SAAA,EAAU,QAAA,EAAS,GAAA,EAAK,CAAA,EAAG,SAAA,EAAU,cAAA,EAAe,SAAA,EAAU,OAAA,EAClE,QAAA,EAAA;AAAA,wBAAAD,eAAAA,CAACC,gBAAA,EAAK,GAAA,EAAK,GAAG,OAAA,EAAQ,OAAA,EAAQ,WAAU,QAAA,EACtC,QAAA,EAAA;AAAA,0BAAApB,cAAAA,CAAC6B,cAAAA,EAAA,EAAK,IAAA,EAAK,KAAA,EAAM,KAAA,EAAM,SAAA,EAAU,MAAA,EAAO,UAAA,EACrC,QAAA,EAAA,CAAA,CAAE,mBAAmB,CAAA,EACxB,CAAA;AAAA,0BACA7B,cAAAA,CAAC,QAAA,EAAA,EAAO,OAAA,EAAS,oBACf,QAAA,kBAAAA,cAAAA,CAAC,IAAA,EAAA,EAAK,IAAA,EAAM,EAAA,EAAI,SAAA,EAAW+E,YAAAA,CAAG,2BAA2B,GAAG,CAAA,EAC9D;AAAA,SAAA,EACF,CAAA;AAAA,wBACA5D,gBAACC,cAAAA,EAAA,EAAK,SAAS,OAAA,EAAS,SAAA,EAAU,KAAA,EAAM,GAAA,EAAK,CAAA,EAC3C,QAAA,EAAA;AAAA,0BAAApB,cAAAA;AAAA,YAAC6B,cAAAA,CAAK,OAAA;AAAA,YAAL;AAAA,cACC,OAAA;AAAA,cACA,MAAA,EAAO,MAAA;AAAA,cACP,IAAA,EAAK,KAAA;AAAA,cACL,SAAA,EAAWI,8BAAAA,CAAqB,EAAE,KAAA,EAAO,SAAS,CAAA;AAAA,cAClD,EAAA,EAAG,KAAA;AAAA,cACH,OAAA,EAAS,KAAA;AAAA,cACT,EAAA,EAAI,CAAA;AAAA,cAEH,QAAA,EAAA,UAAA,IAAc;AAAA;AAAA,WACjB;AAAA,0BACAjC,cAAAA,CAAC6B,cAAAA,EAAA,EAAK,EAAA,EAAG,OAAM,MAAA,EAAO,MAAA,EAAO,SAAA,EAAU,eAAA,EAAgB,QAAA,EAAA,MAAA,EAEvD;AAAA,SAAA,EACF;AAAA,OAAA,EACF,CAAA;AAAA,IAEJ,CAAA;AAEA,IAAM,wBAAA,GAIF,CAAC,KAAA,KAAU;AACb,MAAA,MAAM,EAAE,CAAA,EAAE,GAAIX,0BAAAA,EAAe;AAC7B,MAAA,MAAM,EAAE,aAAA,EAAe,UAAA,EAAY,SAAA,EAAU,GAAI,KAAA;AACjD,MAAA,MAAM,EAAE,YAAA,EAAc,eAAA,EAAgB,GAAId,6BAAAA,EAAc;AACxD,MAAA,IAAI,CAAC,aAAA,EAAe;AAClB,QAAA,OAAO,IAAA;AAAA,MACT;AACA,MAAA,MAAM,iBAAiB,YAAA,IAAgB,eAAA;AACvC,MAAA,uBACEe,eAAAA;AAAA,QAACC,cAAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAU,wCAAA;AAAA,UACV,SAAA,EAAU,QAAA;AAAA,UACV,GAAA,EAAK,CAAA;AAAA,UAEL,QAAA,EAAA;AAAA,4BAAAD,eAAAA;AAAA,cAACG,gBAAAA;AAAA,cAAA;AAAA,gBACC,QAAA,EAAU,cAAA;AAAA,gBACV,aAAA,EAAY,qCAAA;AAAA,gBACZ,SAAA,EAAS,IAAA;AAAA,gBACT,IAAA,EAAK,IAAA;AAAA,gBACL,OAAA,EAAS,SAAA;AAAA,gBAET,QAAA,EAAA;AAAA,kCAAAtB,cAAAA;AAAA,oBAACgF,4BAAA;AAAA,oBAAA;AAAA,sBACC,KAAA,EAAM,OAAA;AAAA,sBACN,OAAA,EAAS,iBAAiB,GAAA,GAAM,CAAA;AAAA,sBAChC,SAAA,EAAU;AAAA;AAAA,mBACZ;AAAA,kCACAhF,cAAAA,CAAC6B,cAAAA,EAAA,EAAM,QAAA,EAAA,CAAA,CAAE,gBAAgB,CAAA,EAAE;AAAA;AAAA;AAAA,aAC7B;AAAA,4BACAV,eAAAA;AAAA,cAACG,gBAAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAS,IAAA;AAAA,gBACT,QAAA,EAAU,cAAA;AAAA,gBACV,KAAA,EAAM,WAAA;AAAA,gBACN,IAAA,EAAK,IAAA;AAAA,gBACL,OAAA,EAAS,UAAA;AAAA,gBACT,aAAA,EAAY,sCAAA;AAAA,gBAEZ,QAAA,EAAA;AAAA,kCAAAtB,cAAAA;AAAA,oBAACgF,4BAAA;AAAA,oBAAA;AAAA,sBACC,KAAA,EAAM,OAAA;AAAA,sBACN,OAAA,EAAS,iBAAiB,GAAA,GAAM,CAAA;AAAA,sBAChC,SAAA,EAAU;AAAA;AAAA,mBACZ;AAAA,kCACAhF,cAAAA,CAAC6B,cAAAA,EAAA,EAAM,QAAA,EAAA,CAAA,CAAE,iBAAiB,CAAA,EAAE;AAAA;AAAA;AAAA;AAC9B;AAAA;AAAA,OACF;AAAA,IAEJ,CAAA;AAEA,IAAM,iBAAA,GAUF,CAAC,KAAA,KAAU;AACb,MAAA,MAAM,EAAE,CAAA,EAAE,GAAIX,0BAAAA,EAAe;AAC7B,MAAA,MAAM;AAAA,QACJ,aAAA;AAAA,QACA,QAAA;AAAA,QACA,eAAA;AAAA,QACA,aAAA;AAAA,QACA,aAAA;AAAA,QACA;AAAA,OACF,GAAI,KAAA;AAEJ,MAAA,MAAM,YAAA,GAA6B;AAAA,QACjC,KAAA,EAAO,EAAE,mBAAmB,CAAA;AAAA,QAC5B,KAAA,EAAO,cAAA;AAAA,OACT;AAEA,MAAA,MAAM,YAAA,GAA6B;AAAA,QACjC,KAAA,EAAO,EAAE,oBAAoB,CAAA;AAAA,QAC7B,KAAA,EAAO,eAAA;AAAA,OACT;AAEA,MAAA,MAAM,UAAA,GAA2B;AAAA,QAC/B,KAAA,EAAO,CAAA,CAAE,kBAAA,EAAoB,YAAY,CAAA;AAAA,QACzC,KAAA,EAAO;AAAA,OACT;AAEA,MAAA,MAAM,WAAA,GAAcnB,gBAAsB,MAAM;AAC9C,QAAA,OAAO,KAAA,CAAM,eAAe,EAAC;AAAA,MAC/B,CAAA,EAAG,CAAC,KAAA,CAAM,WAAW,CAAC,CAAA;AAEtB,MAAA,MAAM,eAAA,GAAkBA,gBAAQ,MAAM;AACpC,QAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,WAAW,CAAA,IAAK,YAAY,MAAA,EAAQ;AACpD,UAAA,OAAO;AAAA,YACL,YAAA;AAAA,YACA,YAAA;AAAA,YACA,GAAG,WAAA,CAAY,GAAA,CAAkB,CAAC,KAAA,MAAW;AAAA,cAC3C,OAAO,KAAA,EAAO,EAAA;AAAA,cACd,KAAA,EAAO,KAAA,EAAO,WAAA,IAAe0E,uBAAAA,CAAc,OAAO,EAAE;AAAA,aACtD,CAAE;AAAA,WACJ;AAAA,QACF;AACA,QAAA,OAAO,CAAC,cAAc,YAAY,CAAA;AAAA,MACpC,CAAA,EAAG,CAAC,YAAA,EAAc,YAAA,EAAc,WAAW,CAAC,CAAA;AAE5C,MAAA,MAAM,oBAAA,GAAuB1E,gBAAQ,MAAM;AACzC,QAAA,OAAO,CAAC,UAAA,EAAY,GAAG,aAAa,CAAA;AAAA,MACtC,CAAA,EAAG,CAAC,UAAA,EAAY,aAAa,CAAC,CAAA;AAE9B,MAAA,IAAI,CAAC,aAAA,EAAe;AAClB,QAAA,OAAO,IAAA;AAAA,MACT;AAEA,MAAA,uBACEC,cAAAA;AAAA,QAAC2D,oBAAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAU,0BAAA;AAAA,UACV,QAAA;AAAA,UACA,KAAA,EAAO;AAAA,YACL;AAAA,cACE,IAAA,EAAM,QAAA;AAAA,cACN,IAAA,EAAM,SAAA;AAAA,cACN,KAAA,EAAO,eAAA;AAAA,cACP,OAAA,EAAS;AAAA,aACX;AAAA,YACA;AAAA,cACE,IAAA,EAAM,QAAA;AAAA,cACN,IAAA,EAAM,OAAA;AAAA,cACN,KAAA,EAAO,aAAA;AAAA,cACP,OAAA,EAAS;AAAA;AACX;AACF;AAAA,OACF;AAAA,IAEJ,CAAA;AAEO,IAAM,eAAA,GAcT,CAAC,KAAA,KAAU;AACb,MAAA,MAAM,EAAE,OAAA,EAAS,UAAA,EAAAD,WAAAA,EAAY,mBAAA,EAAqB,YAAW,GAAI,KAAA;AACjE,MAAA,MAAM,EAAE,IAAA,EAAM,UAAA,EAAY,IAAA,EAAK,GAAI,cAAc,EAAC;AAElD,MAAA,IAAI,CAAC,MAAM,QAAA,EAAU;AAEnB,QAAA,uBACE1D,cAAAA;AAAA,UAAC4D,qCAAAA;AAAA,UAAA;AAAA,YACC,UAAA,EAAY;AAAA,cACV,IAAA,EAAM;AAAA,aACR;AAAA,YACA,SAAS,KAAA,CAAM,QAAA;AAAA,YACf,SAAS,EAAC;AAAA,YACV,YAAY;AAAC;AAAA,SACf;AAAA,MAEJ;AAEA,MAAA,uBACEzC,gBAACC,cAAAA,EAAA,EAAK,OAAM,MAAA,EAAO,SAAA,EAAW,QAAA,EAAU,SAAA,EAAW,IAAA,EACjD,QAAA,EAAA;AAAA,wBAAApB,cAAAA;AAAA,UAAC,iBAAA;AAAA,UAAA;AAAA,YACE,GAAGiF,qBAAA;AAAA,cACF;AAAA,gBACE,eAAA;AAAA,gBACA,UAAA;AAAA,gBACA,iBAAA;AAAA,gBACA,eAAA;AAAA,gBACA,eAAA;AAAA,gBACA;AAAA,eACF;AAAA,cACA;AAAA;AACF;AAAA,SACF;AAAA,QACCvB,WAAAA,EAAY,GAAA,CAAI,CAAC,IAAA,EAAM,KAAA,KAAU;AAChC,UAAA,uBACEvC,eAAAA;AAAA,YAACC,cAAAA;AAAA,YAAA;AAAA,cAEC,SAAA,EAAW2D,YAAAA,CAAG,sCAAA,EAAwC,UAAU,CAAA;AAAA,cAChE,SAAA,EAAW,QAAA;AAAA,cACX,SAAA,EAAW,OAAA;AAAA,cACX,OAAA,EAAS,SAAA;AAAA,cACT,EAAA,EAAI,CAAA;AAAA,cAEJ,QAAA,EAAA;AAAA,gCAAA/E,cAAAA;AAAA,kBAAC6B,cAAAA;AAAA,kBAAA;AAAA,oBACC,SAAA,EAAWkD,YAAAA,CAAG,UAAA,EAAY,IAAI,CAAA;AAAA,oBAC9B,SAAA,EAAW,EAAA;AAAA,oBACX,MAAA,EAAO,UAAA;AAAA,oBACP,IAAA,EAAK,IAAA;AAAA,oBAEJ,QAAA,EAAA,IAAA,EAAM,WAAA,IAAeN,uBAAAA,CAAc,IAAA,EAAM,MAAM,EAAE;AAAA;AAAA,iBACpD;AAAA,gCACAzE,cAAAA;AAAA,kBAAC4D,qCAAAA;AAAA,kBAAA;AAAA,oBACC,QAAA,EAAQ,IAAA;AAAA,oBACR,SAAA,EAAU,mBAAA;AAAA,oBACV,UAAA,EAAY;AAAA,sBACV,MAAA,EAAQmB,YAAAA;AAAA,wBACN,mEAAA;AAAA,wBACA,mBAAA,EAAqB;AAAA,uBACvB;AAAA,sBACA,GAAG;AAAA,qBACL;AAAA,oBACA,OAAA;AAAA,oBACA,YAAY,IAAA,CAAK;AAAA;AAAA;AACnB;AAAA,aAAA;AAAA,YA3BK,QAAQ,KAAK,CAAA;AAAA,WA4BpB;AAAA,QAEJ,CAAC;AAAA,OAAA,EACH,CAAA;AAAA,IAEJ,CAAA;AAEO,IAAM,WAAA,GAA2C,CAAC,KAAA,KAAU;AACjE,MAAA,MAAM,EAAE,CAAA,EAAE,GAAI7D,0BAAAA,EAAe;AAC7B,MAAA,uBACElB,cAAAA;AAAA,QAAC0B,cAAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAU,4DAAA;AAAA,UACV,UAAA,EAAY,EAAE,OAAA,EAAS,WAAA,EAAY;AAAA,UAEnC,QAAA,kBAAAP,eAAAA;AAAA,YAAC+D,cAAA;AAAA,YAAA;AAAA,cACC,YAAA,EAAa,QAAA;AAAA,cACb,OAAA,EAAQ,WAAA;AAAA,cACR,UAAA,EAAY,EAAE,QAAA,EAAU,EAAA,EAAG;AAAA,cAC3B,IAAA,EAAK,IAAA;AAAA,cAEL,QAAA,EAAA;AAAA,gCAAA/D,eAAAA,CAACgE,sBAAS,KAAA,EAAM,QAAA,EAAS,WAAU,EAAA,EAAG,KAAA,EAAO,CAAA,CAAE,eAAe,CAAA,EAC5D,QAAA,EAAA;AAAA,kCAAAhE,eAAAA;AAAA,oBAACC,cAAAA;AAAA,oBAAA;AAAA,sBACC,SAAA,EAAU,sCAAA;AAAA,sBACV,SAAA,EAAW,KAAA;AAAA,sBACX,SAAA,EAAW,QAAA;AAAA,sBACX,OAAA,EAAS,SAAA;AAAA,sBACT,EAAA,EAAI,CAAA;AAAA,sBAEJ,QAAA,EAAA;AAAA,wCAAApB,cAAAA;AAAA,0BAAC,cAAA;AAAA,0BAAA;AAAA,4BACE,GAAGiF,qBAAA,CAAK,CAAC,cAAc,SAAA,EAAW,oBAAoB,GAAG,KAAK;AAAA;AAAA,yBACjE;AAAA,wCACAjF,cAAAA;AAAA,0BAAC,wBAAA;AAAA,0BAAA;AAAA,4BACE,GAAGiF,qBAAA,CAAK,CAAC,iBAAiB,WAAA,EAAa,YAAY,GAAG,KAAK;AAAA;AAAA;AAC9D;AAAA;AAAA,mBACF;AAAA,kCACAjF,cAAAA;AAAA,oBAAC,eAAA;AAAA,oBAAA;AAAA,sBACE,GAAGiF,qBAAA;AAAA,wBACF;AAAA,0BACE,SAAA;AAAA,0BACA,YAAA;AAAA,0BACA,eAAA;AAAA,0BACA,UAAA;AAAA,0BACA,iBAAA;AAAA,0BACA,eAAA;AAAA,0BACA,eAAA;AAAA,0BACA,OAAA;AAAA,0BACA;AAAA,yBACF;AAAA,wBACA;AAAA,uBACF;AAAA,sBACA,UAAA,EAAY;AAAA,wBACV,UAAA,EACE;AAAA;AACJ;AAAA;AACF,iBAAA,EACF,CAAA;AAAA,gCACAjF,cAAAA;AAAA,kBAACmF,kBAAA;AAAA,kBAAA;AAAA,oBACC,KAAA,EAAM,gBAAA;AAAA,oBACN,SAAA,EAAU,uCAAA;AAAA,oBACV,KAAA,EAAO,EAAE,wCAAwC,CAAA;AAAA,oBAEjD,0BAAAnF,cAAAA,CAAC6E,wBAAAA,CAAM,UAAN,EAAe,QAAA,EAAU,MACxB,QAAA,kBAAA1D,eAAAA;AAAA,sBAACC,cAAAA;AAAA,sBAAA;AAAA,wBACC,SAAA,EAAU,QAAA;AAAA,wBACV,EAAA,EAAI,CAAA;AAAA,wBACJ,SAAA,EAAU,QAAA;AAAA,wBACV,SAAA,EAAU,YAAA;AAAA,wBAEV,QAAA,EAAA;AAAA,0CAAApB,cAAAA,CAACkC,iBAAAA,EAAA,EAAQ,SAAA,EAAU,oDAAA,EAAqD,CAAA;AAAA,0CACxElC,eAAC,wBAAA,EAAA,EAAyB;AAAA;AAAA;AAAA,qBAC5B,EACF;AAAA;AAAA;AACF;AAAA;AAAA;AACF;AAAA,OACF;AAAA,IAEJ,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;ACjXA,IAAA,qBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,+BAAA,GAAA;AAEA,IAAA,sBAAA,EAAA;AAAA,EAAA;AAAA,CAAA,CAAA;ACFA,IAKa,sBAAA,EA8CA,oBAAA;AAnDb,IAAA,2BAAA,GAAA,KAAA,CAAA;AAAA,EAAA,qCAAA,GAAA;AAEA,IAAA,sBAAA,EAAA;AAGO,IAAM,sBAAA,GAAyB,CACpC,IAAA,KACG;AACH,MAAA,MAAM,EAAE,KAAA,EAAO,aAAA,EAAc,GAAIE,uBAAAA,EAAW;AAC5C,MAAA,MAAM,CAAC,eAAA,EAAiB,kBAAkB,CAAA,GAAI2E,wBAAAA,CAAM,QAAA;AAAA,QAAA,cAAA;AAAA,OAEpD;AAGA,MAAA,MAAM,YAAA,GAAe9E,gBAAQ,MAAM;AACjC,QAAA,OAAO,IAAA,CAAK,MAAA,CAAO,CAAC,IAAA,KAAS;AAC3B,UAAA,IAAI,aAAA,EAAe;AACjB,YAAA,IAAI,CAAC,mBAAmB,eAAA,KAAA,cAAA,YAAqC;AAC3D,cAAA,OAAO,IAAA;AAAA,YACT;AACA,YAAA,IAAI,eAAA,KAAA,eAAA,aAAsC;AACxC,cAAA,OAAO,IAAA,CAAK,eAAe,KAAA,CAAM,aAAA;AAAA,YACnC,CAAA,MAAO;AACL,cAAA,OAAO,KAAK,UAAA,KAAe,eAAA;AAAA,YAC7B;AAAA,UACF,CAAA,MAAO;AACL,YAAA,OAAO,IAAA,CAAK,eAAe,KAAA,CAAM,SAAA;AAAA,UACnC;AAAA,QACF,CAAC,CAAA;AAAA,MACH,GAAG,CAAC,IAAA,EAAM,eAAA,EAAiB,aAAA,EAAe,KAAK,CAAC,CAAA;AAGhD,MAAA,MAAM,kBAAkB8E,wBAAAA,CAAM,WAAA;AAAA,QAC5B,CAAC,MAAA,KAA4C;AAC3C,UAAA,MAAM,EAAE,IAAA,EAAM,KAAA,EAAM,GAAI,MAAA;AACxB,UAAA,IAAI,SAAS,SAAA,EAAW;AACtB,YAAA,kBAAA,CAAmB,KAAK,CAAA;AAAA,UAC1B;AAAA,QACF,CAAA;AAAA,QACA;AAAC,OACH;AAEA,MAAA,OAAO;AAAA,QACL,eAAA;AAAA,QACA,YAAA;AAAA,QACA,eAAA;AAAA,QACA;AAAA,OACF;AAAA,IACF,CAAA;AAGO,IAAM,oBAAA,GAAuB,CAMlC,IAAA,KACG;AACH,MAAA,MAAM,EAAE,KAAA,EAAO,aAAA,EAAc,GAAI3E,uBAAAA,EAAW;AAC5C,MAAA,MAAM,CAAC,eAAA,EAAiB,kBAAkB,CAAA,GAAI2E,wBAAAA,CAAM,QAAA;AAAA,QAAA,cAAA;AAAA,OAEpD;AACA,MAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAIA,wBAAAA,CAAM,SAAiB,KAAK,CAAA;AAGtE,MAAA,MAAM,YAAA,GAAe9E,gBAAQ,MAAM;AACjC,QAAA,IAAI,eAAA,GAAkB,IAAA;AAGtB,QAAA,IAAI,aAAA,EAAe;AACjB,UAAA,IAAI,mBAAmB,eAAA,KAAA,cAAA,YAAqC;AAC1D,YAAA,IAAI,eAAA,KAAA,eAAA,aAAsC;AACxC,cAAA,eAAA,GAAkB,IAAA,CAAK,MAAA;AAAA,gBACrB,CAAC,IAAA,KAAS,IAAA,CAAK,UAAA,KAAe,KAAA,CAAM;AAAA,eACtC;AAAA,YACF,CAAA,MAAO;AACL,cAAA,eAAA,GAAkB,IAAA,CAAK,MAAA;AAAA,gBACrB,CAAC,IAAA,KAAS,IAAA,CAAK,UAAA,KAAe;AAAA,eAChC;AAAA,YACF;AAAA,UACF;AAAA,QACF,CAAA,MAAO;AACL,UAAA,eAAA,GAAkB,IAAA,CAAK,MAAA;AAAA,YACrB,CAAC,IAAA,KAAS,IAAA,CAAK,UAAA,KAAe,KAAA,CAAM;AAAA,WACtC;AAAA,QACF;AAGA,QAAA,IAAI,aAAA,IAAiB,kBAAkB,KAAA,EAAO;AAC5C,UAAA,eAAA,GAAkB,eAAA,CACf,GAAA,CAAI,CAACqF,QAAAA,KAAY;AAChB,YAAA,IAAIA,SAAQ,QAAA,EAAU;AACpB,cAAA,MAAM,gBAAA,GAAmBA,SAAQ,QAAA,CAAS,MAAA;AAAA,gBACxC,CAAC,KAAA,KAAU,KAAA,CAAM,KAAA,KAAU;AAAA,eAC7B;AAEA,cAAA,OAAO,gBAAA,CAAiB,SAAS,CAAA,GAC7B,EAAE,GAAGA,QAAAA,EAAS,QAAA,EAAU,kBAAiB,GACzC,IAAA;AAAA,YACN;AACA,YAAA,OAAOA,QAAAA;AAAA,UACT,CAAC,CAAA,CACA,MAAA,CAAO,OAAO,CAAA;AAAA,QACnB;AAEA,QAAA,OAAO,eAAA;AAAA,MACT,GAAG,CAAC,IAAA,EAAM,iBAAiB,aAAA,EAAe,aAAA,EAAe,KAAK,CAAC,CAAA;AAG/D,MAAA,MAAM,WAAWP,wBAAAA,CAAM,WAAA;AAAA,QACrB,CAAC,MAAA,KAA4C;AAC3C,UAAA,MAAM,EAAE,IAAA,EAAM,KAAA,EAAM,GAAI,MAAA;AACxB,UAAA,IAAI,SAAS,SAAA,EAAW;AACtB,YAAA,kBAAA,CAAmB,KAAK,CAAA;AAAA,UAC1B,CAAA,MAAA,IAAW,SAAS,OAAA,EAAS;AAC3B,YAAA,gBAAA,CAAiB,KAAK,CAAA;AAAA,UACxB;AAAA,QACF,CAAA;AAAA,QACA;AAAC,OACH;AAEA,MAAA,OAAO;AAAA,QACL,eAAA;AAAA,QACA,aAAA;AAAA,QACA,YAAA;AAAA,QACA,QAAA;AAAA,QACA,kBAAA;AAAA,QACA;AAAA,OACF;AAAA,IACF,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;AClIA,IAAA,UAAA,GAAA,KAAA,CAAA;AAAA,EAAA,oBAAA,GAAA;AAAA,IAAA,uBAAA,EAAA;AACA,IAAA,qBAAA,EAAA;AACA,IAAA,2BAAA,EAAA;AACA,IAAA,oBAAA,EAAA;AAAA,EAAA;AAAA,CAAA,CAAA;ACHA,IAkBa,gBAAA;AAlBb,IAAA,mBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,gDAAA,GAAA;AAcA,IAAA,UAAA,EAAA;AACA,IAAA,SAAA,EAAA;AAGO,IAAM,mBAAmB,MAAM;AACpC,MAAA,MAAM,EAAE,CAAA,EAAE,GAAI3D,0BAAAA,EAAe;AAC7B,MAAA,MAAM,EAAE,aAAA,EAAe,KAAA,EAAM,GAAIhB,uBAAAA,EAAW;AAC5C,MAAA,MAAM,EAAE,OAAA,GAAU,EAAC,KAAMC,0BAAAA,EAAc;AACvC,MAAA,MAAM,EAAE,IAAA,EAAM,WAAA,EAAY,GAAI2E,iCAAAA,EAAqB;AAEnD,MAAA,MAAM,EAAE,IAAA,EAAM,UAAA,EAAW,GAAIrB,yBAAAA,EAAa;AAG1C,MAAA,MAAM,EAAE,IAAA,EAAM,QAAA,EAAU,OAAA,EAAS,eAAA,KAAoBN,uBAAAA,CAAc;AAAA,QACjE,IAAA,EAAM,CAAA;AAAA,QACN,QAAA,EAAU;AAAA,OACX,CAAA;AAGD,MAAA,MAAM,cAAc,eAAA,EAAgB;AAEpC,MAAA,MAAM,UAAA,GAAaF,wBAAAA,CAAY,CAACoC,MAAAA,KAAUA,OAAM,UAAU,CAAA;AAG1D,MAAA,MAAM,EAAE,eAAA,EAAiB,eAAA,EAAgB,GACvC,uBAAuB,WAAW,CAAA;AAGpC,MAAA,MAAM,CAAC,KAAK,CAAA,GAAIvF,gBAAAA,CAAS,MAAM;AAC7B,QAAA,MAAM,CAAA,uBAAQ,IAAA,EAAK;AACnB,QAAA,OAAO,IAAI,IAAA,CAAKgD,eAAAA,CAAQ,CAAC,CAAA,EAAGC,gBAAAA,CAAS,CAAC,CAAA,EAAGC,eAAAA,CAAQ,CAAC,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA,MAC9D,CAAC,CAAA;AAED,MAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIlD,gBAAAA,CAAiB;AAAA,QACjDoD,wCAAAA,CAA4B,IAAI,KAAK,CAAA;AAAA,QACrC;AAAA,OACD,CAAA;AAGD,MAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIpD,iBAAiB,KAAK,CAAA;AAC9D,MAAA,MAAM,CAAC,oBAAA,EAAsB,uBAAuB,CAAA,GAClDA,iBAAiB,KAAK,CAAA;AAGxB,MAAA,MAAM,qBAAA,GAAwBC,gBAAQ,MAAM;AAE1C,QAAA,MAAM,YAAA,GACJ,UAAA,EAAY,GAAA,CAAI,CAAC,IAAA,MAAU;AAAA,UACzB,OAAO,IAAA,CAAK,KAAA;AAAA,UACZ,OAAO,IAAA,CAAK;AAAA,SACd,CAAE,KAAK,EAAC;AAEV,QAAA,OAAO,CAAC,EAAE,KAAA,EAAO,CAAA,CAAE,kBAAkB,GAAG,KAAA,EAAO,KAAA,EAAM,EAAG,GAAG,YAAY,CAAA;AAAA,MACzE,CAAA,EAAG,CAAC,UAAA,EAAY,CAAC,CAAC,CAAA;AAGlB,MAAA,MAAM,WAAW8E,wBAAAA,CAAM,WAAA;AAAA,QACrB,CAAC,MAAA,KAAuE;AACtE,UAAA,MAAM,EAAE,IAAA,EAAM,KAAA,EAAM,GAAI,MAAA;AAGxB,UAAA,IAAI,SAAS,SAAA,EAAW;AACtB,YAAA,eAAA,CAAgB,MAAyC,CAAA;AAAA,UAC3D,CAAA,MAAA,IAAW,SAAS,QAAA,EAAU;AAC5B,YAAA,eAAA,CAAgB,KAAe,CAAA;AAC/B,YAAA,OAAA,CAAQ,CAAC,CAAA;AAAA,UACX,CAAA,MAAA,IAAW,SAAS,iBAAA,EAAmB;AACrC,YAAA,uBAAA,CAAwB,KAAe,CAAA;AACvC,YAAA,OAAA,CAAQ,CAAC,CAAA;AAAA,UACX,CAAA,MAAA,IAAW,IAAA,KAAS,MAAA,IAAU,IAAA,KAAS,WAAA,EAAa;AAClD,YAAA,YAAA;AAAA,cACE,wBAAwB,KAAiC;AAAA,aAC3D;AACA,YAAA,OAAA,CAAQ,CAAC,CAAA;AAAA,UACX;AAAA,QACF,CAAA;AAAA,QACA,CAAC,iBAAiB,OAAO;AAAA,OAC3B;AAGA,MAAA,MAAM,QAAA,GAAWA,wBAAAA,CAAM,OAAA,CAAQ,MAAM;AACnC,QAAA,MAAM,MAAA,GAAS,IAAI,eAAA,EAAgB;AAGnC,QAAA,MAAA,CAAO,GAAA,CAAI,MAAA,EAAQ,IAAA,CAAK,QAAA,EAAU,CAAA;AAClC,QAAA,MAAA,CAAO,GAAA,CAAI,MAAA,EAAQ,QAAA,CAAS,QAAA,EAAU,CAAA;AAGtC,QAAA,IAAI,SAAA,CAAU,CAAC,CAAA,EAAG;AAChB,UAAA,MAAA,CAAO,GAAA,CAAI,WAAW,SAAA,CAAU,CAAC,EAAE,OAAA,EAAQ,CAAE,UAAU,CAAA;AAAA,QACzD;AACA,QAAA,IAAI,SAAA,CAAU,CAAC,CAAA,EAAG;AAChB,UAAA,MAAA,CAAO,GAAA;AAAA,YACL,OAAA;AAAA,YACAvB,WAAAA,CAAI,SAAA,CAAU,CAAC,CAAA,EAAG;AAAA,cAChB,KAAA,EAAO,EAAA;AAAA,cACP,OAAA,EAAS,EAAA;AAAA,cACT,OAAA,EAAS,EAAA;AAAA,cACT,YAAA,EAAc;AAAA,aACf,CAAA,CACE,OAAA,EAAQ,CACR,QAAA;AAAS,WACd;AAAA,QACF;AAGA,QAAA,IAAI,iBAAiB,KAAA,EAAO;AAC1B,UAAA,MAAA,CAAO,GAAA,CAAI,UAAU,YAAY,CAAA;AAAA,QACnC;AAEA,QAAA,IAAI,yBAAyB,KAAA,EAAO;AAClC,UAAA,MAAA,CAAO,GAAA,CAAI,mBAAmB,oBAAoB,CAAA;AAAA,QACpD;AAEA,QAAA,OAAO,CAAA,0BAAA,EAA6B,MAAA,CAAO,QAAA,EAAU,CAAA,CAAA;AAAA,MACvD,GAAG,CAAC,IAAA,EAAM,UAAU,SAAA,EAAW,YAAA,EAAc,oBAAoB,CAAC,CAAA;AAGlE,MAAA,MAAM,EAAE,IAAA,EAAM,SAAA,EAAU,GAAIgC,gCAOzB,QAAA,EAAU;AAAA,QACX,SAAA,EAAW,aAAA,GAAgB,KAAA,CAAM,aAAA,GAAgB,KAAA,CAAM,SAAA;AAAA,QACvD,SAAA,EAAW,CAACC,KAAAA,KAAS;AACnB,UAAA,OAAOA,KAAAA;AAAA,QACT;AAAA,OACD,CAAA;AAGD,MAAA,MAAM,UAAA,GAAaxF,gBAAQ,MAAM;AAC/B,QAAA,IAAI,MAAM,IAAA,EAAM;AACd,UAAA,OAAO,eAAA,CAAgB,KAAK,IAAI,CAAA;AAAA,QAClC;AACA,QAAA,OAAO;AAAA,UACL,IAAA;AAAA,UACA,QAAA;AAAA,UACA,YAAA,EAAc,OAAA;AAAA,UACd,kBAAkB,MAAM;AAAA,UAExB;AAAA,SACF;AAAA,MACF,CAAA,EAAG,CAAC,IAAA,EAAM,IAAA,EAAM,iBAAiB,IAAA,EAAM,QAAA,EAAU,OAAO,CAAC,CAAA;AAGzD,MAAA,MAAM,OAAA,GAAUA,gBAAQ,MAAM;AAC5B,QAAA,MAAM,QAAA,GAAW,IAAA,EAAM,IAAA,IAAQ,EAAC;AAEhC,QAAA,MAAM,mBAAmB,QAAA,CAAS,MAAA;AAClC,QAAA,MAAM,oBAAoB,QAAA,CAAS,MAAA;AAAA,UACjC,CAAC,GAAA,EAAK,MAAA,KAAW,GAAA,GAAM,MAAA,CAAO,YAAA;AAAA,UAC9B;AAAA,SACF;AACA,QAAA,MAAM,YAAY,QAAA,CAAS,MAAA;AAAA,UACzB,CAAC,GAAA,EAAK,MAAA,KACJ,GAAA,GACA,OAAO,OAAA,CAAQ,MAAA;AAAA,YACb,CAAC,SAAA,EAAW,MAAA,KAAW,SAAA,GAAY,MAAA,CAAO,OAAA;AAAA,YAC1C;AAAA,WACF;AAAA,UACF;AAAA,SACF;AAEA,QAAA,OAAO;AAAA,UACL,gBAAA;AAAA,UACA,iBAAA;AAAA,UACA;AAAA,SACF;AAAA,MACF,CAAA,EAAG,CAAC,IAAI,CAAC,CAAA;AAET,MAAA,OAAO;AAAA;AAAA,QAEL,UAAA,EAAY,MAAM,IAAA,IAAQyF,uBAAA;AAAA,QAC1B,OAAA;AAAA,QACA,UAAA;AAAA;AAAA,QAGA,eAAA;AAAA,QACA,QAAA;AAAA;AAAA,QAGA,SAAA;AAAA;AAAA,QAGA,YAAA;AAAA,QACA,oBAAA;AAAA,QACA,qBAAA;AAAA;AAAA,QAGA,aAAA;AAAA,QACA,SAAA;AAAA,QACA,OAAA;AAAA;AAAA,QAGA,WAAA;AAAA,QACA;AAAA,OACF;AAAA,IACF,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;ACtNA,IAwBa,sBAuEA,iBAAA,EAoHA,uBAAA;AAnNb,IAAA,mBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,iDAAA,GAAA;AAwBO,IAAM,uBAAuB,CAAC;AAAA,MACnC;AAAA,KACF,KAEM;AACJ,MAAA,MAAM,EAAE,CAAA,EAAE,GAAItE,0BAAAA,EAAe;AAC7B,MAAA,MAAM,MAAA,GAASnB,gBAAQ,MAAM;AAC3B,QAAA,OAAO,MAAA,CAAO,KAAK,eAAe,CAAA;AAAA,MACpC,CAAA,EAAG,CAAC,eAAe,CAAC,CAAA;AAEpB,MAAA,MAAM,cAAA,GAAiBA,gBAAQ,MAAM;AACnC,QAAA,uBACEoB,eAAAA;AAAA,UAACC,cAAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,QAAA;AAAA,YACV,GAAA,EAAK,CAAA;AAAA,YACL,SAAA,EAAU,2DAAA;AAAA,YAEV,QAAA,EAAA;AAAA,8BAAAD,eAAAA;AAAA,gBAACC,cAAAA;AAAA,gBAAA;AAAA,kBACC,SAAA,EAAU,QAAA;AAAA,kBACV,OAAA,EAAQ,SAAA;AAAA,kBACR,SAAA,EAAU,mDAAA;AAAA,kBAEV,QAAA,EAAA;AAAA,oCAAApB,cAAAA,CAAC,KAAA,EAAA,EAAK,QAAA,EAAA,CAAA,CAAE,eAAe,CAAA,EAAE,CAAA;AAAA,oCACzBA,cAAAA,CAAC,KAAA,EAAA,EAAK,QAAA,EAAA,CAAA,CAAE,YAAY,CAAA,EAAE;AAAA;AAAA;AAAA,eACxB;AAAA,cACC,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,qBACXmB,eAAAA;AAAA,gBAACC,cAAAA;AAAA,gBAAA;AAAA,kBAEC,SAAA,EAAU,QAAA;AAAA,kBACV,OAAA,EAAQ,SAAA;AAAA,kBACR,SAAA,EAAU,YAAA;AAAA,kBAEV,QAAA,EAAA;AAAA,oCAAAD,gBAACC,cAAAA,EAAA,EAAK,SAAA,EAAU,QAAA,EAAS,KAAK,CAAA,EAC5B,QAAA,EAAA;AAAA,sCAAApB,eAACuC,mBAAAA,EAAA,EAAU,IAAA,EAAK,IAAA,EAAK,MAAM,KAAA,EAAO,CAAA;AAAA,sCAClCvC,cAAAA,CAAC6B,cAAAA,CAAK,SAAA,EAAL,EAAgB,QAAA,EAAA,KAAA,EAAM;AAAA,qBAAA,EACzB,CAAA;AAAA,oCACA7B,cAAAA,CAAC,KAAA,EAAA,EACC,QAAA,kBAAAA,cAAAA,CAAC6B,cAAAA,CAAK,SAAA,EAAL,EAAgB,QAAA,EAAA,eAAA,CAAgB,KAAK,CAAA,EAAE,CAAA,EAC1C;AAAA;AAAA,iBAAA;AAAA,gBAXK;AAAA,eAaR;AAAA;AAAA;AAAA,SACH;AAAA,MAEJ,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAEX,MAAA,uBACEV,eAAAA,CAACC,cAAAA,EAAA,EAAK,SAAA,EAAU,QAAA,EAAS,KAAK,CAAA,EAC5B,QAAA,EAAA;AAAA,wBAAApB,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uBAAA,EACZ,QAAA,EAAA,MAAA,CAAO,KAAA,CAAM,CAAA,EAAG,CAAC,CAAA,CAAE,GAAA,CAAI,CAAC,KAAA,EAAO,0BAC9BA,cAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YAEC,SAAA,EAAU,cAAA;AAAA,YACV,KAAA,EAAO;AAAA,cACL,UAAA,EAAY,KAAA,GAAQ,CAAA,GAAI,MAAA,GAAS,GAAA;AAAA,cACjC,MAAA,EAAQ,OAAO,MAAA,GAAS;AAAA,aAC1B;AAAA,YAEA,0BAAAA,cAAAA,CAACuC,mBAAAA,EAAA,EAAU,IAAA,EAAK,IAAA,EAAK,MAAM,KAAA,EAAO;AAAA,WAAA;AAAA,UAP7B;AAAA,SASR,CAAA,EACH,CAAA;AAAA,wBACAvC,cAAAA,CAACqC,iBAAAA,EAAA,EAAQ,OAAA,EAAS,cAAA,EAChB,QAAA,kBAAAlB,eAAAA,CAACU,cAAAA,CAAK,SAAA,EAAL,EAAe,SAAA,EAAU,sGAAA,EACvB,QAAA,EAAA;AAAA,UAAA,MAAA,CAAO,KAAA,CAAM,CAAA,EAAG,CAAC,CAAA,CAAE,KAAK,IAAI,CAAA;AAAA,UAAG,GAAA;AAAA,UAC/B,OAAO,MAAA,GAAS,CAAA,IAAK,CAAA,CAAA,EAAI,MAAA,CAAO,SAAS,CAAC,CAAA;AAAA,SAAA,EAC7C,CAAA,EACF;AAAA,OAAA,EACF,CAAA;AAAA,IAEJ,CAAA;AAEO,IAAM,iBAAA,GAAoB,CAAC,OAAA,KAAmC;AACnE,MAAA,MAAM,EAAE,gBAAe,GAAI,OAAA;AAC3B,MAAA,MAAM,EAAE,CAAA,EAAE,GAAIX,0BAAAA,EAAe;AAC7B,MAAA,MAAM,MAAA,GAAS,CAAC,CAAA,KAAW;AACzB,QAAA,CAAA,CAAE,cAAA,EAAe;AACjB,QAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,QAAAoB,eAAAA,CAAM,OAAA,CAAQ,CAAA,CAAE,oBAAoB,CAAC,CAAA;AAAA,MACvC,CAAA;AAEA,MAAA,MAAM,OAAA,GAAUuC,wBAAAA,CAAM,OAAA,CAAkB,MAAM;AAC5C,QAAA,OAAO;AAAA,UACL;AAAA,YACE,KAAA,EAAO,EAAE,kDAAkD,CAAA;AAAA,YAC3D,SAAA,EAAW,iBAAA;AAAA,YACX,KAAA,EAAO,MAAA;AAAA,YACP,KAAA,EAAO,GAAA;AAAA,YACP,QAAA,EAAU,GAAA;AAAA,YACV,OAAO,eAAA,EAAyC;AAC9C,cAAA,uBAAO7E,cAAAA,CAAC,oBAAA,EAAA,EAAqB,eAAA,EAAkC,CAAA;AAAA,YACjE;AAAA,WACF;AAAA,UACA;AAAA,YACE,KAAA,EAAO,EAAE,8CAA8C,CAAA;AAAA,YACvD,SAAA,EAAW,cAAA;AAAA,YACX,KAAA,EAAO,MAAA;AAAA,YACP,KAAA,EAAO,GAAA;AAAA,YACP,OAAO,GAAA,EAAa;AAClB,cAAA,uBACEA,eAAC6B,cAAAA,CAAK,OAAA,EAAL,EAAa,EAAA,EAAI,CAAA,EAAG,OAAA,EAAS,KAAA,EAC3B,QAAA,EAAA,GAAA,EACH,CAAA;AAAA,YAEJ;AAAA,WACF;AAAA,UACA;AAAA,YACE,KAAA,EAAO,EAAE,YAAY,CAAA;AAAA,YACrB,SAAA,EAAW,SAAA;AAAA,YACX,KAAA,EAAO,MAAA;AAAA,YACP,KAAA,EAAO,GAAA;AAAA,YACP,OAAO,OAAA,EAAmC;AACxC,cAAA,MAAM,eAAe,OAAA,CAAQ,MAAA;AAAA,gBAC3B,CAAC,GAAA,EAAK,MAAA,KAAW,GAAA,GAAM,MAAA,CAAO,OAAA;AAAA,gBAC9B;AAAA,eACF;AACA,cAAA,uBACE7B,eAAC6B,cAAAA,CAAK,OAAA,EAAL,EAAa,EAAA,EAAI,CAAA,EAAG,OAAA,EAAS,KAAA,EAC3B,QAAA,EAAA,YAAA,EACH,CAAA;AAAA,YAEJ;AAAA,WACF;AAAA,UACA;AAAA,YACE,KAAA,EAAO,EAAE,aAAa,CAAA;AAAA,YACtB,SAAA,EAAW,MAAA;AAAA,YACX,KAAA,EAAO,MAAA;AAAA,YACP,KAAA,EAAO,GAAA;AAAA,YACP,OAAO,IAAA,EAAc;AACnB,cAAA,uBAAO7B,cAAAA,CAAC6B,cAAAA,EAAA,EAAM,QAAA,EAAA,IAAA,CAAK,MAAA,CAAO,CAAC,CAAA,CAAE,WAAA,EAAY,GAAI,IAAA,CAAK,KAAA,CAAM,CAAC,CAAA,EAAE,CAAA;AAAA,YAC7D;AAAA,WACF;AAAA,UACA;AAAA,YACE,KAAA,EAAO,EAAE,6CAA6C,CAAA;AAAA,YACtD,SAAA,EAAW,YAAA;AAAA,YACX,KAAA,EAAO,MAAA;AAAA,YACP,KAAA,EAAO,GAAA;AAAA,YACP,OAAO,SAAA,EAAmB;AACxB,cAAA,uBACE7B,eAAC6B,cAAAA,CAAK,SAAA,EAAL,EAAe,MAAA,EAAgB,QAAA,EAAQ,MACrC,QAAA,EAAA,SAAA,EACH,CAAA;AAAA,YAEJ;AAAA,WACF;AAAA,UACA;AAAA,YACE,KAAA,EAAO,EAAE,aAAa,CAAA;AAAA,YACtB,SAAA,EAAW,cAAA;AAAA,YACX,KAAA,EAAO,MAAA;AAAA,YACP,KAAA,EAAO,GAAA;AAAA,YACP,IAAA,EAAM;AAAA,WACR;AAAA,UACA;AAAA,YACE,KAAA,EAAO,EAAE,eAAe,CAAA;AAAA,YACxB,SAAA,EAAW,QAAA;AAAA,YACX,KAAA,EAAO,MAAA;AAAA,YACP,KAAA,EAAO,GAAA;AAAA,YACP,OAAO,MAAA,EAAgB;AACrB,cAAA,uBACE7B,cAAAA,CAAC6B,cAAAA,EAAA,EAAM,QAAA,EAAA,MAAA,CAAO,MAAA,CAAO,CAAC,CAAA,CAAE,WAAA,EAAY,GAAI,MAAA,CAAO,KAAA,CAAM,CAAC,CAAA,EAAE,CAAA;AAAA,YAE5D;AAAA,WACF;AAAA,UACA;AAAA,YACE,KAAA,EAAO,EAAA;AAAA,YACP,SAAA,EAAW,cAAA;AAAA,YACX,KAAA,EAAO,QAAA;AAAA,YACP,KAAA,EAAO,EAAA;AAAA,YACP,MAAA,CAAO,WAAmB,MAAA,EAAuB;AAC/C,cAAA,uBACE7B,cAAAA;AAAA,gBAACsB,gBAAAA;AAAA,gBAAA;AAAA,kBACC,IAAA,EAAK,IAAA;AAAA,kBACL,OAAA,EAAQ,MAAA;AAAA,kBACR,SAAA,EAAU,kBAAA;AAAA,kBACV,OAAA,EAAS,MAAM,cAAA,GAAiB,MAAA,CAAO,UAAU,CAAA;AAAA,kBAEhD,YAAE,2CAA2C;AAAA;AAAA,eAChD;AAAA,YAEJ;AAAA;AACF,SACF;AAAA,MACF,CAAA,EAAG,CAAC,cAAc,CAAC,CAAA;AAEnB,MAAA,OAAO,OAAA;AAAA,IACT,CAAA;AAGO,IAAM,uBAAA,GAA0B,CACrC,OAAA,KACG;AACH,MAAA,MAAM,EAAE,CAAA,EAAE,GAAIJ,0BAAAA,EAAe;AAC7B,MAAA,MAAM,MAAA,GAAS,CAAC,CAAA,KAAW;AACzB,QAAA,CAAA,CAAE,cAAA,EAAe;AACjB,QAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,QAAAoB,eAAAA,CAAM,OAAA,CAAQ,CAAA,CAAE,oBAAoB,CAAC,CAAA;AAAA,MACvC,CAAA;AACA,MAAA,MAAM,OAAA,GAAUuC,wBAAAA,CAAM,OAAA,CAAkB,MAAM;AAC5C,QAAA,OAAO;AAAA,UACL;AAAA,YACE,KAAA,EAAO,EAAE,kDAAkD,CAAA;AAAA,YAC3D,SAAA,EAAW,iBAAA;AAAA,YACX,KAAA,EAAO,MAAA;AAAA,YACP,KAAA,EAAO,GAAA;AAAA,YACP,OAAO,KAAA,EAAe;AACpB,cAAA,uBACE1D,eAAAA,CAACC,cAAAA,EAAA,EAAK,SAAA,EAAU,QAAA,EAAS,KAAK,CAAA,EAC5B,QAAA,EAAA;AAAA,gCAAApB,cAAAA,CAACuC,mBAAAA,EAAA,EAAU,IAAA,EAAM,KAAA,EAAO,CAAA;AAAA,gBACvB;AAAA,eAAA,EACH,CAAA;AAAA,YAEJ;AAAA,WACF;AAAA,UACA;AAAA,YACE,KAAA,EAAO,EAAE,YAAY,CAAA;AAAA,YACrB,SAAA,EAAW,eAAA;AAAA,YACX,KAAA,EAAO,MAAA;AAAA,YACP,KAAA,EAAO,GAAA;AAAA,YACP,OAAO,GAAA,EAAa;AAClB,cAAA,uBACEvC,eAAC6B,cAAAA,CAAK,OAAA,EAAL,EAAa,EAAA,EAAI,CAAA,EAAG,OAAA,EAAS,KAAA,EAC3B,QAAA,EAAA,GAAA,EACH,CAAA;AAAA,YAEJ;AAAA,WACF;AAAA,UACA;AAAA,YACE,KAAA,EAAO,EAAE,8CAA8C,CAAA;AAAA,YACvD,SAAA,EAAW,cAAA;AAAA,YACX,KAAA,EAAO,MAAA;AAAA,YACP,KAAA,EAAO,GAAA;AAAA,YACP,OAAO,GAAA,EAAa;AAClB,cAAA,uBACE7B,eAAC6B,cAAAA,CAAK,OAAA,EAAL,EAAa,EAAA,EAAI,CAAA,EAAG,OAAA,EAAS,KAAA,EAC3B,QAAA,EAAA,GAAA,EACH,CAAA;AAAA,YAEJ;AAAA,WACF;AAAA,UACA;AAAA,YACE,KAAA,EAAO,EAAE,YAAY,CAAA;AAAA,YACrB,SAAA,EAAW,SAAA;AAAA,YACX,KAAA,EAAO,MAAA;AAAA,YACP,KAAA,EAAO,GAAA;AAAA,YACP,OAAO,OAAA,EAAiB;AACtB,cAAA,uBACE7B,eAAC6B,cAAAA,CAAK,OAAA,EAAL,EAAa,EAAA,EAAI,CAAA,EAAG,OAAA,EAAS,KAAA,EAC3B,QAAA,EAAA,OAAA,EACH,CAAA;AAAA,YAEJ;AAAA,WACF;AAAA,UACA;AAAA,YACE,KAAA,EAAO,EAAE,aAAa,CAAA;AAAA,YACtB,SAAA,EAAW,OAAA;AAAA,YACX,KAAA,EAAO,MAAA;AAAA,YACP,KAAA,EAAO,GAAA;AAAA,YACP,MAAA,CAAO,MAAc,MAAA,EAA4B;AAC/C,cAAA,IAAI,CAAC,MAAM,uBAAO7B,eAAC6B,cAAAA,EAAA,EAAK,SAAA,EAAW,EAAA,EAAI,QAAA,EAAA,GAAA,EAAC,CAAA;AACxC,cAAA,MAAM,SAAA,GAAa,QAAQ,UAAA,EAAsB,IAAA;AAAA,gBAC/C,CAAC,IAAA,KAAS,MAAA,CAAO,QAAA,KAAa,QAAA,CAAS,KAAK,QAAQ;AAAA,eACtD;AACA,cAAA,MAAM,oBAAoB,SAAA,EAAW,iBAAA;AACrC,cAAA,MAAM,IAAA,GAAO,CAAA,EAAG,iBAAiB,CAAA,IAAA,EAAO,IAAI,CAAA,CAAA;AAC5C,cAAA,uBACE7B,eAAC,GAAA,EAAA,EAAE,IAAA,EAAY,QAAO,QAAA,EAAS,GAAA,EAAI,cACjC,QAAA,kBAAAA,cAAAA;AAAA,gBAAC6B,cAAAA,CAAK,SAAA;AAAA,gBAAL;AAAA,kBACC,MAAA;AAAA,kBACA,IAAA,EAAK,MAAA;AAAA,kBACL,QAAA,EAAU,CAAC,CAAC,IAAA;AAAA,kBACZ,SAAA,EAAU,sGAAA;AAAA,kBAET,QAAA,EAAA;AAAA;AAAA,eACH,EACF,CAAA;AAAA,YAEJ;AAAA,WACF;AAAA,UACA;AAAA,YACE,KAAA,EAAO,EAAE,kBAAkB,CAAA;AAAA,YAC3B,SAAA,EAAW,UAAA;AAAA,YACX,KAAA,EAAO,MAAA;AAAA,YACP,KAAA,EAAO,GAAA;AAAA,YACP,MAAA,CAAO,OAAe,MAAA,EAA4B;AAChD,cAAA,uBACE7B,cAAAA,CAAC6B,cAAAA,EAAA,EACE,kBAAQ,UAAA,CAAW,IAAA;AAAA,gBAClB,CAAC,IAAA,KAAS,IAAA,CAAK,QAAA,IAAY,MAAA,CAAO;AAAA,eACpC,EAAG,QAAQ,GAAA,EACb,CAAA;AAAA,YAEJ;AAAA,WACF;AAAA,UACA;AAAA,YACE,KAAA,EAAO,EAAE,eAAe,CAAA;AAAA,YACxB,SAAA,EAAW,QAAA;AAAA,YACX,KAAA,EAAO,MAAA;AAAA,YACP,KAAA,EAAO,GAAA;AAAA,YACP,OAAO,MAAA,EAAgB;AACrB,cAAA,uBACE7B,cAAAA,CAAC6B,cAAAA,EAAA,EAAM,QAAA,EAAA,MAAA,EAAQ,MAAA,CAAO,CAAC,CAAA,CAAE,WAAA,EAAY,GAAI,MAAA,EAAQ,KAAA,CAAM,CAAC,CAAA,EAAE,CAAA;AAAA,YAE9D;AAAA;AACF,SACF;AAAA,MACF,CAAA,EAAG,EAAE,CAAA;AAEL,MAAA,OAAO,OAAA;AAAA,IACT,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;AC3UA,IAqBM,mBAAA,EA6CO,gBAAA;AAlEb,IAAA,uBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,qDAAA,GAAA;AAaA,IAAA,mBAAA,EAAA;AAQA,IAAM,mBAAA,GAAsBjB,eAAAA,CAAM,MAAA,CAI/B,CAAC,KAAA,KAAU;AACZ,MAAA,MAAM,EAAE,CAAA,EAAE,GAAIM,0BAAAA,EAAe;AAC7B,MAAA,MAAM,EAAE,OAAA,EAAS,YAAA,EAAa,GAAIuE,kBAAA,EAAS;AAG3C,MAAA,MAAM,gBAAgB,uBAAA,CAAwB;AAAA,QAC5C,aAAa,KAAA,CAAM,WAAA;AAAA,QACnB,YAAY,KAAA,CAAM;AAAA,OACnB,CAAA;AAED,MAAA,uBACEzF,cAAAA;AAAA,QAAC0F,sBAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAM,OAAA;AAAA,UACN,YAAA;AAAA,UACA,KAAA,EAAO,EAAE,iDAAiD,CAAA;AAAA,UAC1D,IAAA,EAAK,IAAA;AAAA,UACL,QAAA,EAAQ,IAAA;AAAA,UACR,UAAA,EAAY;AAAA,YACV,OAAA,EAAS;AAAA,WACX;AAAA,UAEA,QAAA,kBAAA1F,cAAAA;AAAA,YAAC2F,mBAAA;AAAA,YAAA;AAAA,cACC,OAAA,EAAS,aAAA;AAAA,cACT,UAAA,EAAY,MAAM,MAAA,CAAO,OAAA;AAAA,cACzB,QAAA,EAAQ,IAAA;AAAA,cACR,SAAA,EAAU,YAAA;AAAA,cACV,UAAA,EAAY;AAAA,gBACV,MAAA,EAAQ,UAAA;AAAA,gBACR,IAAA,EAAM;AAAA,eACR;AAAA,cACA,OAAO,OAAO;AAAA,gBACZ,SAAA,EAAW;AAAA,eACb,CAAA;AAAA,cACA,eAAA,EAAiB,CAAC,MAAA,KAChB,MAAA,CAAO,kBAAkB,IAAA,CAAK,MAAA,GAAS,QAAA;AAAS;AAAA;AAEpD;AAAA,OACF;AAAA,IAEJ,CAAC,CAAA;AAEM,IAAM,mBAAoD,CAAC;AAAA,MAChE;AAAA,KACF,KAAM;AACJ,MAAA,MAAM,EAAE,CAAA,EAAE,GAAIzE,0BAAAA,EAAe;AAE7B,MAAA,MAAM,kBAAA,GAAqB,CAAC,SAAA,KAAsB;AAEhD,QAAA,MAAM,MAAA,GAAS,aAAa,UAAA,CAAW,IAAA;AAAA,UACrC,CAAC,IAAA,KAAS,IAAA,CAAK,UAAA,KAAe;AAAA,SAChC;AACA,QAAA,IAAI,MAAA,EAAQ;AACV,UAAAN,eAAAA,CAAM,KAAK,mBAAA,EAAqB;AAAA,YAC9B,MAAA;AAAA,YACA,aAAa,YAAA,CAAa,WAAA;AAAA,YAC1B,YAAY,YAAA,CAAa;AAAA,WAC1B,CAAA;AAAA,QACH;AAAA,MACF,CAAA;AAEA,MAAA,MAAM,UAAU,iBAAA,CAAkB;AAAA,QAChC,cAAA,EAAgB;AAAA,OACjB,CAAA;AAED,MAAA,MAAM;AAAA,QACJ,oBAAA;AAAA,QACA,YAAA;AAAA,QACA,SAAA;AAAA,QACA,QAAA;AAAA,QACA;AAAA,OACF,GAAI,YAAA;AAEJ,MAAA,MAAM,aAAA,GAAgBb,eAAAA;AAAA,QACpB,MAAM;AAAA,UACJ,EAAE,KAAA,EAAO,CAAA,CAAE,mBAAmB,CAAA,EAAG,OAAO,KAAA,EAAM;AAAA,UAC9C,EAAE,KAAA,EAAO,CAAA,CAAE,yBAAyB,CAAA,EAAG,OAAO,WAAA,EAAY;AAAA,UAC1D,EAAE,KAAA,EAAO,CAAA,CAAE,uBAAuB,CAAA,EAAG,OAAO,SAAA;AAAU,SACxD;AAAA,QACA,CAAC,CAAC;AAAA,OACJ;AAEA,MAAA,MAAM,UAAA,GAAaA,gBAAQ,MAAM;AAC/B,QAAA,uBACEC,cAAAA;AAAA,UAAC2D,oBAAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,EAAA;AAAA,YACV,QAAA;AAAA,YACA,KAAA,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAOL;AAAA,gBACE,IAAA,EAAM,QAAA;AAAA,gBACN,IAAA,EAAM,iBAAA;AAAA,gBACN,KAAA,EAAO,oBAAA;AAAA,gBACP,OAAA,EAAS;AAAA,eACX;AAAA,cACA;AAAA,gBACE,IAAA,EAAM,QAAA;AAAA,gBACN,IAAA,EAAM,QAAA;AAAA,gBACN,KAAA,EAAO,YAAA;AAAA,gBACP,OAAA,EAAS;AAAA,eACX;AAAA,cACA;AAAA,gBACE,IAAA,EAAM,OAAA;AAAA,gBACN,IAAA,EAAM,MAAA;AAAA,gBACN,KAAA,EAAO;AAAA,kBACL,IAAA,EAAM,YAAY,CAAC,CAAA;AAAA,kBACnB,EAAA,EAAI,YAAY,CAAC;AAAA;AACnB;AACF;AACF;AAAA,SACF;AAAA,MAEJ,CAAA,EAAG;AAAA,QACD,oBAAA;AAAA,QACA,YAAA;AAAA,QACA,SAAA;AAAA,QACA,QAAA;AAAA,QACA,qBAAA;AAAA,QACA;AAAA,OACD,CAAA;AAED,MAAA,uBACExC,eAAAA,CAAAQ,mBAAAA,EAAA,EACG,QAAA,EAAA;AAAA,QAAA,UAAA;AAAA,wBAED3B,cAAAA;AAAA,UAAC4D,qCAAAA;AAAA,UAAA;AAAA,YACC,QAAA,EAAQ,IAAA;AAAA,YACR,OAAA;AAAA,YACA,YAAY,YAAA,CAAa,UAAA;AAAA,YACzB,SAAS,YAAA,CAAa,SAAA;AAAA,YACtB,YAAY,YAAA,CAAa,UAAA;AAAA,YACzB,gBAAA,EAAgB,IAAA;AAAA,YAChB,SAAA,EAAU,qBAAA;AAAA,YACV,UAAA,EAAY;AAAA,cACV,IAAA,EAAM;AAAA,aACR;AAAA,YACA,OAAO,OAAO;AAAA,cACZ,SAAA,EAAW;AAAA,aACb,CAAA;AAAA,YACA,eAAA,EAAiB,CAAC,MAAA,KAAW;AAC3B,cAAA,OAAO,MAAA,CAAO,WAAW,QAAA,EAAS;AAAA,YACpC;AAAA;AAAA;AACF,OAAA,EACF,CAAA;AAAA,IAEJ,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;AC9KA,IAoCa,eAAA,EAsFP,oBA2BA,iBAAA,EAoEA,8BAAA;AAzNN,IAAA,sBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,oDAAA,GAAA;AAeA,IAAA,mBAAA,EAAA;AAqBO,IAAM,kBAAkD,CAAC;AAAA,MAC9D;AAAA,KACF,KAAM;AACJ,MAAA,MAAM,EAAE,CAAA,EAAE,GAAI1C,0BAAAA,EAAe;AAE7B,MAAA,MAAM;AAAA,QACJ,oBAAA;AAAA,QACA,YAAA;AAAA,QACA,SAAA;AAAA,QACA,QAAA;AAAA,QACA;AAAA,OACF,GAAI,YAAA;AAEJ,MAAA,MAAM,aAAA,GAAgBnB,eAAAA;AAAA,QACpB,MAAM;AAAA,UACJ,EAAE,KAAA,EAAO,CAAA,CAAE,mBAAmB,CAAA,EAAG,OAAO,KAAA,EAAM;AAAA,UAC9C,EAAE,KAAA,EAAO,CAAA,CAAE,yBAAyB,CAAA,EAAG,OAAO,WAAA,EAAY;AAAA,UAC1D,EAAE,KAAA,EAAO,CAAA,CAAE,uBAAuB,CAAA,EAAG,OAAO,SAAA;AAAU,SACxD;AAAA,QACA,CAAC,CAAC;AAAA,OACJ;AAEA,MAAA,MAAM,UAAA,GAAaA,gBAAQ,MAAM;AAC/B,QAAA,uBACEC,cAAAA;AAAA,UAAC2D,oBAAAA;AAAA,UAAA;AAAA,YACC,QAAA;AAAA,YACA,KAAA,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAQL;AAAA,gBACE,IAAA,EAAM,IAAA;AAAA,gBACN,IAAA,EAAM,QAAA;AAAA,gBACN,IAAA,EAAM,iBAAA;AAAA,gBACN,KAAA,EAAO,oBAAA;AAAA,gBACP,OAAA,EAAS,qBAAA;AAAA,gBACT,SAAA,EAAW;AAAA,eACb;AAAA,cACA;AAAA,gBACE,IAAA,EAAM,IAAA;AAAA,gBACN,IAAA,EAAM,QAAA;AAAA,gBACN,IAAA,EAAM,QAAA;AAAA,gBACN,KAAA,EAAO,YAAA;AAAA,gBACP,OAAA,EAAS,aAAA;AAAA,gBACT,SAAA,EAAW;AAAA,eACb;AAAA,cACA;AAAA,gBACE,IAAA,EAAM,OAAA;AAAA,gBACN,IAAA,EAAM,MAAA;AAAA,gBACN,KAAA,EAAO;AAAA,kBACL,IAAA,EAAM,YAAY,CAAC,CAAA;AAAA,kBACnB,EAAA,EAAI,YAAY,CAAC;AAAA;AACnB;AACF;AACF;AAAA,SACF;AAAA,MAEJ,CAAA,EAAG;AAAA,QACD,oBAAA;AAAA,QACA,YAAA;AAAA,QACA,SAAA;AAAA,QACA,QAAA;AAAA,QACA,qBAAA;AAAA,QACA;AAAA,OACD,CAAA;AAED,MAAA,uBACExC,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,0CAAA,EACb,QAAA,EAAA;AAAA,wBAAAnB,cAAAA,CAAC4F,yBAAA,EAAA,EAAgB,SAAA,EAAU,UAAA,EACzB,QAAA,kBAAA5F,cAAAA,CAACoB,cAAAA,EAAA,EAAK,SAAA,EAAU,KAAA,EAAO,QAAA,EAAA,UAAA,EAAW,CAAA,EACpC,CAAA;AAAA,QACC,YAAA,CAAa,UAAA,CAAW,GAAA,CAAI,CAAC,yBAC5BpB,cAAAA;AAAA,UAAC,iBAAA;AAAA,UAAA;AAAA,YAEC,IAAA;AAAA,YACA,YAAY,YAAA,CAAa;AAAA,WAAA;AAAA,UAFpB,IAAA,CAAK;AAAA,SAIb;AAAA,OAAA,EACH,CAAA;AAAA,IAEJ,CAAA;AAEA,IAAM,qBAAwD,CAAC;AAAA,MAC7D,KAAA;AAAA,MACA,KAAA;AAAA,MACA,IAAA;AAAA,MACA,QAAA,GAAW,KAAA;AAAA,MACX,SAAA,GAAY,EAAA;AAAA,MACZ;AAAA,KACF,KAAM;AACJ,MAAA,MAAM,EAAE,CAAA,EAAE,GAAIkB,0BAAAA,EAAe;AAC7B,MAAA,MAAM,MAAA,GAAS,CAAC,CAAA,KAAW;AACzB,QAAA,CAAA,CAAE,cAAA,EAAe;AACjB,QAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,QAAAoB,eAAAA,CAAM,OAAA,CAAQ,CAAA,CAAE,oBAAoB,CAAC,CAAA;AAAA,MACvC,CAAA;AACA,MAAA,uBACEnB,eAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAW,4FAA4F,SAAS,CAAA,CAAA;AAAA,UAChH,OAAA;AAAA,UAEA,QAAA,EAAA;AAAA,4BAAAnB,cAAAA,CAAC,OAAG,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,4BACVA,eAAC6B,cAAAA,CAAK,SAAA,EAAL,EAAe,IAAA,EAAY,QAAA,EAAoB,MAAA,EAC7C,QAAA,EAAA,KAAA,IAAS,GAAA,EACZ;AAAA;AAAA;AAAA,OACF;AAAA,IAEJ,CAAA;AAEA,IAAM,iBAAA,GAAsD,CAAC,KAAA,KAAU;AACrE,MAAA,MAAM,EAAE,MAAK,GAAI,KAAA;AACjB,MAAA,MAAM,EAAE,CAAA,EAAE,GAAIX,0BAAAA,EAAe;AAE7B,MAAA,IAAI,CAAC,IAAA,EAAM;AACT,QAAA,OAAO,IAAA;AAAA,MACT;AAEA,MAAA,MAAM,YAAA,GAAe,KAAK,OAAA,CAAQ,MAAA;AAAA,QAChC,CAAC,GAAA,EAAa,MAAA,KAA+B,GAAA,GAAM,MAAA,CAAO,OAAA;AAAA,QAC1D;AAAA,OACF;AAEA,MAAA,uBACEC,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,sEAAA,EACb,QAAA,EAAA;AAAA,wBAAAA,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,8BAAA,EACb,QAAA,EAAA;AAAA,0BAAAA,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,mFAAA,EACb,QAAA,EAAA;AAAA,4BAAAnB,cAAAA,CAAC,oBAAA,EAAA,EAAqB,eAAA,EAAiB,IAAA,CAAK,eAAA,EAAiB,CAAA;AAAA,4BAC7DA,cAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAU,2BAAA;AAAA,gBACV,SAAS,MAAM;AACb,kBAAAY,eAAAA,CAAM,KAAK,8BAAA,EAAgC;AAAA,oBACzC,IAAA;AAAA,oBACA,YAAY,KAAA,CAAM;AAAA,mBACnB,CAAA;AAAA,gBACH,CAAA;AAAA,gBAEC,YAAE,2CAA2C;AAAA;AAAA;AAChD,WAAA,EACF,CAAA;AAAA,0BACAZ,cAAAA;AAAA,YAAC6B,cAAAA,CAAK,SAAA;AAAA,YAAL;AAAA,cACC,SAAA,EAAU,wCAAA;AAAA,cACV,IAAA,EAAK,MAAA;AAAA,cAEJ,QAAA,EAAA,IAAA,CAAK;AAAA;AAAA;AACR,SAAA,EACF,CAAA;AAAA,wBAGAV,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,oCAAA,EACb,QAAA,EAAA;AAAA,0BAAAnB,cAAAA;AAAA,YAAC,kBAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO,EAAE,8CAA8C,CAAA;AAAA,cACvD,OAAO,IAAA,CAAK;AAAA;AAAA,WACd;AAAA,0BACAA,eAAC,kBAAA,EAAA,EAAmB,KAAA,EAAO,EAAE,YAAY,CAAA,EAAG,OAAO,YAAA,EAAc,CAAA;AAAA,0BACjEA,cAAAA;AAAA,YAAC,kBAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO,EAAE,6CAA6C,CAAA;AAAA,cACtD,OAAO,IAAA,CAAK,UAAA;AAAA,cACZ,QAAA,EAAU;AAAA;AAAA,WACZ;AAAA,0BACAA,cAAAA;AAAA,YAAC,kBAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO,EAAE,aAAa,CAAA;AAAA,cACtB,KAAA,EAAO,IAAA,CAAK,IAAA,EAAM,MAAA,CAAO,CAAC,CAAA,CAAE,WAAA,EAAY,GAAI,IAAA,CAAK,IAAA,EAAM,KAAA,CAAM,CAAC;AAAA;AAAA,WAChE;AAAA,0BACAA,cAAAA;AAAA,YAAC,kBAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO,EAAE,eAAe,CAAA;AAAA,cACxB,KAAA,EAAO,IAAA,CAAK,MAAA,EAAQ,MAAA,CAAO,CAAC,CAAA,CAAE,WAAA,EAAY,GAAI,IAAA,CAAK,MAAA,EAAQ,KAAA,CAAM,CAAC;AAAA;AAAA;AACpE,SAAA,EACF;AAAA,OAAA,EACF,CAAA;AAAA,IAEJ,CAAA;AAOA,IAAM,8BAAA,GACJY,eAAAA,CAAM,MAAA,CAA6C,CAAC,KAAA,KAAU;AAC5D,MAAA,MAAM,EAAE,IAAA,EAAM,UAAA,EAAW,GAAI,KAAA;AAC7B,MAAA,MAAM,EAAE,CAAA,EAAE,GAAIM,0BAAAA,EAAe;AAC7B,MAAA,MAAM,EAAE,OAAA,EAAS,IAAA,EAAM,SAAS,MAAA,EAAQ,YAAA,KAAiBuE,kBAAAA,EAAS;AAElE,MAAA,uBACEzF,cAAAA;AAAA,QAAC6F,qBAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAO,EAAE,iDAAiD,CAAA;AAAA,UAC1D,IAAA,EAAM,OAAA;AAAA,UACN,YAAA;AAAA,UAEA,QAAA,kBAAA7F,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,0GACZ,QAAA,EAAA,IAAA,CAAK,OAAA,CAAQ,GAAA,CAAI,CAAC,MAAA,EAAQ,KAAA,qBACzBmB,eAAAA,CAAAQ,qBAAA,EACE,QAAA,EAAA;AAAA,4BAAAR,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iCAAA,EACb,QAAA,EAAA;AAAA,8BAAAA,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,qCAAA,EACb,QAAA,EAAA;AAAA,gCAAAnB,eAACuC,mBAAAA,EAAA,EAAU,MAAM,MAAA,CAAO,eAAA,EAAiB,MAAK,IAAA,EAAK,CAAA;AAAA,gCACnDvC,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uCAAA,EACZ,iBAAO,eAAA,EACV;AAAA,eAAA,EACF,CAAA;AAAA,8BACAmB,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,oCAAA,EACb,QAAA,EAAA;AAAA,gCAAAnB,cAAAA;AAAA,kBAAC,kBAAA;AAAA,kBAAA;AAAA,oBACC,KAAA,EAAO,EAAE,YAAY,CAAA;AAAA,oBACrB,OAAO,MAAA,CAAO;AAAA;AAAA,iBAChB;AAAA,gCACAA,cAAAA;AAAA,kBAAC,kBAAA;AAAA,kBAAA;AAAA,oBACC,KAAA,EAAO,EAAE,8CAA8C,CAAA;AAAA,oBACvD,OAAO,MAAA,CAAO;AAAA;AAAA,iBAChB;AAAA,gCACAA,cAAAA,CAAC,kBAAA,EAAA,EAAmB,OAAM,KAAA,EAAM,KAAA,EAAO,OAAO,OAAA,EAAS,CAAA;AAAA,gCACvDA,cAAAA;AAAA,kBAAC,kBAAA;AAAA,kBAAA;AAAA,oBACC,KAAA,EAAO,EAAE,aAAa,CAAA;AAAA,oBACtB,QAAA,EAAU,CAAC,CAAC,MAAA,CAAO,KAAA;AAAA,oBACnB,IAAA,EAAK,MAAA;AAAA,oBACL,OAAO,MAAA,CAAO,KAAA;AAAA,oBACd,SAAS,MAAM;AACb,sBAAA,IAAI,OAAO,KAAA,EAAO;AAChB,wBAAA,MAAM,YAAY,UAAA,CAAW,IAAA;AAAA,0BAC3B,CAAC8F,KAAAA,KAASA,KAAAA,CAAK,QAAA,IAAY,MAAA,CAAO;AAAA,yBACpC;AACA,wBAAA,IAAI,WAAW,iBAAA,EAAmB;AAChC,0BAAA,MAAA,CAAO,IAAA;AAAA,4BACL,CAAA,EAAG,SAAA,CAAU,iBAAiB,CAAA,IAAA,EAAO,OAAO,KAAK,CAAA,CAAA;AAAA,4BACjD;AAAA,2BACF;AAAA,wBACF;AAAA,sBACF;AAAA,oBACF;AAAA;AAAA,iBACF;AAAA,gCACA9F,cAAAA;AAAA,kBAAC,kBAAA;AAAA,kBAAA;AAAA,oBACC,KAAA,EAAO,EAAE,kBAAkB,CAAA;AAAA,oBAC3B,OACE,UAAA,CAAW,IAAA;AAAA,sBACT,CAAC8F,KAAAA,KAASA,KAAAA,CAAK,QAAA,IAAY,MAAA,CAAO;AAAA,uBACjC,IAAA,IAAQ;AAAA;AAAA,iBAEf;AAAA,gCACA9F,cAAAA;AAAA,kBAAC,kBAAA;AAAA,kBAAA;AAAA,oBACC,KAAA,EAAO,EAAE,eAAe,CAAA;AAAA,oBACxB,KAAA,EACE,MAAA,CAAO,MAAA,GACH,MAAA,CAAO,OAAO,MAAA,CAAO,CAAC,CAAA,CAAE,WAAA,EAAY,GACpC,MAAA,CAAO,MAAA,CAAO,KAAA,CAAM,CAAC,CAAA,GACrB;AAAA;AAAA;AAER,eAAA,EACF;AAAA,aAAA,EACF,CAAA;AAAA,YACC,KAAA,GAAQ,KAAK,OAAA,CAAQ,MAAA,GAAS,qBAAKA,cAAAA,CAACkC,mBAAA,EAAQ;AAAA,WAAA,EAC/C,CACD,CAAA,EACH;AAAA;AAAA,OACF;AAAA,IAEJ,CAAC,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACrSH,IAAA,sBAAA,GAAA,EAAA;AAAA,QAAA,CAAA,sBAAA,EAAA;AAAA,EAAA,oBAAA,EAAA,MAAA;AAAA,CAAA,CAAA;AAAA,IAMa,oBAAA;AANb,IAAA,mBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,iDAAA,GAAA;AAEA,IAAA,mBAAA,EAAA;AACA,IAAA,uBAAA,EAAA;AACA,IAAA,sBAAA,EAAA;AAEO,IAAM,uBAAiC,MAAM;AAClD,MAAA,MAAM,eAAe,gBAAA,EAAiB;AACtC,MAAA,MAAM,EAAE,QAAA,EAAS,GAAI1B,mBAAAA,EAAU;AAC/B,MAAA,IAAI,QAAA,EAAU;AACZ,QAAA,uBAAOR,cAAAA,CAAC,eAAA,EAAA,EAAgB,YAAA,EAA4B,CAAA;AAAA,MACtD;AACA,MAAA,uBAAOA,cAAAA,CAAC,gBAAA,EAAA,EAAiB,YAAA,EAA4B,CAAA;AAAA,IACvD,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;ACbA,IAOa4E,WAAAA;AAPb,IAAAX,YAAAA,GAAA,KAAA,CAAA;AAAA,EAAA,6CAAA,GAAA;AAOO,IAAMW,cAAa,MAAM;AAC9B,MAAA,MAAM,EAAE,CAAA,EAAE,GAAI1D,0BAAAA,EAAe;AAC7B,MAAA,MAAM,OAAA,GAAU2D,wBAAAA,CAAM,OAAA,CAA+C,MAAM;AACzE,QAAA,OAAO;AAAA,UACL;AAAA,YACE,KAAA,EAAO,EAAE,aAAa,CAAA;AAAA,YACtB,SAAA,EAAW,MAAA;AAAA,YACX,SAAA,EAAW,CAAC,MAAA,KAAW;AACrB,cAAA,IAAI,MAAA,EAAQ,SAAS,SAAA,EAAW;AAC9B,gBAAA,OAAO,kBAAA;AAAA,cACT;AACA,cAAA,IAAI,MAAA,EAAQ,SAAS,YAAA,EAAc;AACjC,gBAAA,OAAO,iBAAA;AAAA,cACT;AACA,cAAA,OAAO,EAAA;AAAA,YACT,CAAA;AAAA,YACA,OAAO,GAAA,EAAa;AAClB,cAAA,IAAI,QAAQ,SAAA,EAAW;AACrB,gBAAA,OAAO,EAAE,gBAAgB,CAAA;AAAA,cAC3B;AACA,cAAA,IAAI,QAAQ,YAAA,EAAc;AACxB,gBAAA,OAAO,EAAE,iBAAiB,CAAA;AAAA,cAC5B;AACA,cAAA,OAAO,IAAA;AAAA,YACT;AAAA,WACF;AAAA,UACA;AAAA,YACE,KAAA,EAAO,EAAE,8BAA8B,CAAA;AAAA,YACvC,SAAA,EAAW;AAAA,WACb;AAAA,UACA;AAAA,YACE,KAAA,EAAO,EAAE,cAAc,CAAA;AAAA,YACvB,SAAA,EAAW,OAAA;AAAA,YACX,OAAO,GAAA,EAAa;AAClB,cAAA,uBACE1D,gBAACC,cAAAA,EAAA,EAAK,SAAQ,OAAA,EAAQ,SAAA,EAAU,QAAA,EAAS,GAAA,EAAK,CAAA,EAC5C,QAAA,EAAA;AAAA,gCAAApB,cAAAA,CAACuC,mBAAAA,EAAA,EAAU,IAAA,EAAM,GAAA,EAAK,CAAA;AAAA,gBACrB;AAAA,eAAA,EACH,CAAA;AAAA,YAEJ;AAAA,WACF;AAAA,UACA;AAAA,YACE,KAAA,EAAO,EAAE,aAAa,CAAA;AAAA,YACtB,SAAA,EAAW,cAAA;AAAA,YACX,IAAA,EAAM;AAAA,WACR;AAAA,UACA;AAAA,YACE,KAAA,EAAO,EAAE,eAAe,CAAA;AAAA,YACxB,SAAA,EAAW,QAAA;AAAA,YACX,OAAO,GAAA,EAAa;AAClB,cAAA,OAAOmC,8BAAiB,GAAG,CAAA;AAAA,YAC7B;AAAA,WACF;AAAA,UACA;AAAA,YACE,KAAA,EAAO,EAAE,eAAe,CAAA;AAAA,YACxB,SAAA,EAAW,eAAA;AAAA,YACX,OAAO,GAAA,EAAa;AAClB,cAAA,uBACE1E,cAAAA;AAAA,gBAAC6B,cAAAA,CAAK,OAAA;AAAA,gBAAL;AAAA,kBACC,cAAA,EAAc,IAAA;AAAA,kBACd,SAAA,EAAWkD,YAAAA;AAAA,oBACT,iBAAA;AAAA,oBACA,GAAA,IAAO,IAAI,kBAAA,GAAqB;AAAA,mBAClC;AAAA,kBAEC,QAAA,EAAA;AAAA;AAAA,eACH;AAAA,YAEJ;AAAA;AACF,SACF;AAAA,MACF,CAAA,EAAG,CAAC,CAAC,CAAC,CAAA;AACN,MAAA,OAAO,OAAA;AAAA,IACT,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;ACjFA,IASa,eAAA;AATb,IAAAgB,iBAAAA,GAAA,KAAA,CAAA;AAAA,EAAA,kDAAA,GAAA;AAIA,IAAA9B,YAAAA,EAAAA;AAKO,IAAM,eAAA,GAAoD,CAAC,KAAA,KAAU;AAC1E,MAAA,MAAM,EAAE,UAAA,EAAAP,WAAAA,EAAY,SAAA,EAAW,SAAA,EAAW,UAAS,GAAI,KAAA;AAEvD,MAAA,MAAM,UAAUkB,WAAAA,EAAW;AAE3B,MAAA,uBACEzD,eAAAA,CAAAQ,mBAAAA,EAAA,EACE,QAAA,EAAA;AAAA,wBAAA3B,cAAAA;AAAA,UAAC2D,oBAAAA;AAAA,UAAA;AAAA,YACC,QAAA;AAAA,YACA,KAAA,EAAO;AAAA,cACL;AAAA,gBACE,IAAA,EAAM,OAAA;AAAA,gBACN,IAAA,EAAM,WAAA;AAAA,gBACN,KAAA,EAAO;AAAA,kBACL,IAAA,EAAM,UAAU,CAAC,CAAA;AAAA,kBACjB,EAAA,EAAI,UAAU,CAAC;AAAA;AACjB;AACF;AACF;AAAA,SACF;AAAA,wBACA3D,cAAAA;AAAA,UAAC4D,qCAAAA;AAAA,UAAA;AAAA,YACC,QAAA,EAAQ,IAAA;AAAA,YACR,OAAA;AAAA,YACA,UAAA,EAAYF,WAAAA;AAAA,YACZ,OAAA,EAAS,SAAA;AAAA,YACT,SAAA,EAAU,mBAAA;AAAA,YACV,UAAA,EAAY,EAAE,IAAA,EAAM,2BAAA,EAA4B;AAAA,YAChD,YAAY,KAAA,CAAM,UAAA;AAAA,YAClB,eAAA,EAAiB,CAAC,GAAA,KAAQ,GAAA,CAAI;AAAA;AAAA;AAChC,OAAA,EACF,CAAA;AAAA,IAEJ,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;ACzCA,IASa,oBAAA;AATb,IAAAa,0BAAAA,GAAA,KAAA,CAAA;AAAA,EAAA,0DAAA,GAAA;AAOA,IAAA,SAAA,EAAA;AAEO,IAAM,uBAAuB,MAAM;AACxC,MAAA,MAAM,KAAA,GAAQM,wBAAAA,CAAM,OAAA,CAAc,MAAM;AACtC,QAAA,MAAM,IAAA,uBAAW,IAAA,EAAK;AACtB,QAAA,OAAO,IAAI,IAAA,CAAK/B,eAAAA,CAAQ,IAAI,CAAA,EAAGC,gBAAAA,CAAS,IAAI,CAAA,EAAGC,eAAAA,CAAQ,IAAI,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA,MACvE,CAAA,EAAG,EAAE,CAAA;AAEL,MAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI6B,yBAAM,QAAA,CAAiB;AAAA,QACvD3B,wCAAAA,CAA4B,IAAI,KAAK,CAAA;AAAA,QACrC;AAAA,OACD,CAAA;AAED,MAAA,MAAM,EAAE,IAAA,EAAM,QAAA,EAAU,OAAA,EAAS,eAAA,KAAoBC,uBAAAA,EAAc;AAEnE,MAAA,MAAM,CAAC,IAAA,EAAM,EAAE,WAAW,IAAA,EAAM,IAAI6C,6BAAA,CAAiB;AAAA,QACnD,SAAA,EAAW;AAAA,UACT,SAAA,CAAU,CAAC,CAAA,EAAG,OAAA,EAAQ;AAAA,UACtB1C,WAAAA,CAAI,SAAA,CAAU,CAAC,CAAA,EAAG;AAAA,YAChB,KAAA,EAAO,EAAA;AAAA,YACP,OAAA,EAAS,EAAA;AAAA,YACT,OAAA,EAAS,EAAA;AAAA,YACT,YAAA,EAAc;AAAA,WACf,GAAG,OAAA;AAAQ,SACd;AAAA,QACA,IAAA,EAAM,QAAA;AAAA,QACN;AAAA,OACD,CAAA;AAED,MAAA,MAAMI,WAAAA,GAAamB,wBAAAA,CAAM,OAAA,CAAQ,MAAM;AACrC,QAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,IAAI,CAAA,IAAK,CAAC,KAAK,MAAA,EAAQ;AACxC,UAAA,OAAO,EAAC;AAAA,QACV;AACA,QAAA,OAAO,IAAA,CAAK,GAAA,CAAiC,CAAC,IAAA,MAAU;AAAA,UACtD,GAAG,IAAA;AAAA,UACH,KAAA,EAAO,MAAA;AAAA;AAAA,UACP,SAAA,EAAW,mBAAA;AAAA,UACX,eACE,IAAA,CAAK,IAAA,KAAS,eAAe,CAAC,IAAA,CAAK,gBAAgB,IAAA,CAAK;AAAA,SAC5D,CAAE,CAAA;AAAA,MACJ,CAAA,EAAG,CAAC,IAAI,CAAC,CAAA;AAET,MAAA,MAAM,oBAAoBA,wBAAAA,CAAM,WAAA;AAAA,QAC9B,CAAC,MAAA,KAA4C;AAC3C,UAAA,IAAI,MAAA,CAAO,SAAS,WAAA,EAAa;AAC/B,YAAA,YAAA,CAAa,uBAAA,CAAwB,MAAA,CAAO,KAAY,CAAC,CAAA;AAAA,UAC3D;AACA,UAAA,OAAA,CAAQ,CAAC,CAAA;AAAA,QACX,CAAA;AAAA,QACA,CAAC,OAAO;AAAA,OACV;AAEA,MAAA,MAAM,aAAaA,wBAAAA,CAAM,OAAA;AAAA,QACvB,MAAM,gBAAgB,IAAI,CAAA;AAAA,QAC1B,CAAC,iBAAiB,IAAI;AAAA,OACxB;AAEA,MAAA,OAAO;AAAA,QACL,UAAA,EAAYnB,WAAAA;AAAA,QACZ,SAAA;AAAA,QACA,SAAA;AAAA,QACA,QAAA,EAAU,iBAAA;AAAA,QACV;AAAA,OACF;AAAA,IACF,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;ACvEA,IAKa,mBAAA;AALb,IAAA,qBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,uDAAA,GAAA;AAKO,IAAM,mBAAA,GAAsB,CAAC,KAAA,KAAsC;AACxE,MAAA,MAAM,EAAE,SAAA,EAAW,QAAA,EAAU,YAAAA,WAAAA,EAAY,SAAA,EAAW,YAAW,GAAI,KAAA;AACnE,MAAA,MAAM,EAAE,CAAA,EAAE,GAAIxC,0BAAAA,EAAe;AAE7B,MAAA,MAAM,WAAW,MAAM;AACrB,QAAA,IAAIwC,WAAAA,CAAW,MAAA,IAAU,UAAA,EAAY,KAAA,IAAS,CAAA,CAAA,EAAI;AAChD,UAAA,UAAA,EAAY,gBAAA,GAAmB,UAAA,EAAY,QAAA,GAAW,EAAE,CAAA;AAAA,QAC1D;AAAA,MACF,CAAA;AAEA,MAAA,MAAM,iBAAA,GAAoB,CAAC,IAAA,KAAc;AACvC,QAAA,MAAM,SAAA,GAAY,IAAA,CAAK,IAAA,KAAS,SAAA,GAAY,KAAA,GAAQ,MAAA;AACpD,QAAA,MAAM,QAAA,GACJ,KAAK,IAAA,KAAS,SAAA,GAAY,EAAE,gBAAgB,CAAA,GAAI,EAAE,iBAAiB,CAAA;AACrE,QAAA,MAAM,aAAa,IAAA,CAAK,aAAA,GAAgB,KAAK,GAAA,CAAI,IAAA,CAAK,aAAa,CAAA,GAAI,GAAA;AACvE,QAAA,uBACEvC,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,8EAAA,EACb,QAAA,EAAA;AAAA,0BAAAA,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,qFAAA,EACb,QAAA,EAAA;AAAA,4BAAAnB,cAAAA,CAAC,KAAA,EAAA,EAAK,QAAA,EAAA,IAAA,CAAK,SAAA,EAAU,CAAA;AAAA,4BACrBA,cAAAA,CAAC,KAAA,EAAA,EACE,QAAA,EAAA,IAAA,CAAK,QAAQ,KAAA,CAAM,CAAA,EAAG,CAAC,CAAA,CAAE,aAAY,GAAI,IAAA,CAAK,MAAA,EAAQ,KAAA,CAAM,CAAC,CAAA,EAChE;AAAA,WAAA,EACF,CAAA;AAAA,0BACAA,cAAAA,CAAC6B,cAAAA,CAAK,SAAA,EAAL,EAAe,IAAA,EAAK,MAAA,EAAO,SAAA,EAAW,EAAA,EAAI,IAAA,EAAK,KAAA,EAC7C,QAAA,EAAA,IAAA,CAAK,YAAA,EACR,CAAA;AAAA,0BACA7B,cAAAA,CAACkC,iBAAAA,EAAA,EAAQ,WAAU,UAAA,EAAW,CAAA;AAAA,0BAC9Bf,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,qGAAA,EACb,QAAA,EAAA;AAAA,4BAAAA,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,8BAAAnB,cAAAA,CAAC,KAAA,EAAA,EAAK,QAAA,EAAA,CAAA,CAAE,cAAc,CAAA,EAAE,CAAA;AAAA,8BACxBmB,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2EAAA,EACb,QAAA,EAAA;AAAA,gCAAAnB,eAACuC,mBAAAA,EAAA,EAAU,IAAA,EAAM,MAAA,EAAQ,MAAK,KAAA,EAAM,CAAA;AAAA,gCACpCvC,cAAAA,CAAC6B,cAAAA,EAAA,EAAK,QAAA,EAAA,MAAA,EAAI;AAAA,eAAA,EACZ;AAAA,aAAA,EACF,CAAA;AAAA,4BACAV,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,8BAAAnB,cAAAA,CAAC,KAAA,EAAA,EAAK,QAAA,EAAA,CAAA,CAAE,aAAa,CAAA,EAAE,CAAA;AAAA,8BACvBA,eAAC6B,cAAAA,EAAA,EAAK,OAAO,SAAA,EAAW,SAAA,EAAU,eAC/B,QAAA,EAAA,QAAA,EACH;AAAA,aAAA,EACF,CAAA;AAAA,4BACAV,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EACb,QAAA,EAAA;AAAA,8BAAAnB,cAAAA,CAAC,KAAA,EAAA,EAAK,QAAA,EAAA,CAAA,CAAE,eAAe,CAAA,EAAE,CAAA;AAAA,8BACzBA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yCACZ,QAAA,EAAA,UAAA,EACH;AAAA,aAAA,EACF;AAAA,WAAA,EACF;AAAA,SAAA,EACF,CAAA;AAAA,MAEJ,CAAA;AAEA,MAAA,uBACEmB,eAAAA,CAAAQ,mBAAAA,EAAA,EACE,QAAA,EAAA;AAAA,wBAAA3B,cAAAA;AAAA,UAAC2D,oBAAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO;AAAA,cACL;AAAA,gBACE,IAAA,EAAM,OAAA;AAAA,gBACN,IAAA,EAAM,WAAA;AAAA,gBACN,KAAA,EAAO;AAAA,kBACL,IAAA,EAAM,UAAU,CAAC,CAAA;AAAA,kBACjB,EAAA,EAAI,UAAU,CAAC;AAAA;AACjB;AACF,aACF;AAAA,YACA,QAAA,EAAU,CAAC,KAAA,KAAU;AACnB,cAAA,QAAA,CAAS,KAAK,CAAA;AAAA,YAChB,CAAA;AAAA,YACA,SAAA,EAAU;AAAA;AAAA,SACZ;AAAA,wBACA3D,cAAAA;AAAA,UAAC8D,kBAAAA;AAAA,UAAA;AAAA,YACC,UAAA,EAAYJ,WAAAA;AAAA,YACZ,UAAA,EAAY,iBAAA;AAAA,YACZ,gBAAA,EAAiB,gBAAA;AAAA,YACjB,QAAA;AAAA,YACA,SAAA;AAAA,YACA,SAAA,EAAU;AAAA;AAAA;AACZ,OAAA,EACF,CAAA;AAAA,IAEJ,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;ACrFA,IAMa,mBAAA;AANb,IAAAuC,qBAAAA,GAAA,KAAA,CAAA;AAAA,EAAA,sDAAA,GAAA;AAEA,IAAAF,iBAAAA,EAAAA;AACA,IAAAxB,0BAAAA,EAAAA;AACA,IAAA,qBAAA,EAAA;AAEO,IAAM,sBAAgC,MAAM;AACjD,MAAA,MAAM,QAAQ,oBAAA,EAAqB;AACnC,MAAA,MAAM,EAAE,QAAA,EAAS,GAAI/D,mBAAAA,EAAU;AAC/B,MAAA,IAAI,QAAA,EAAU;AACZ,QAAA,uBAAOR,cAAAA,CAAC,mBAAA,EAAA,EAAqB,GAAG,KAAA,EAAO,CAAA;AAAA,MACzC;AACA,MAAA,uBAAOA,cAAAA,CAAC,eAAA,EAAA,EAAiB,GAAG,KAAA,EAAO,CAAA;AAAA,IACrC,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACbA,IAAA,qBAAA,GAAA,EAAA;AAAA,QAAA,CAAA,qBAAA,EAAA;AAAA,EAAA,eAAA,EAAA,MAAA,eAAA;AAAA,EAAA,mBAAA,EAAA,MAAA;AAAA,CAAA,CAAA;AAAA,IAAA,kBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,4CAAA,GAAA;AAAA,IAAAiG,qBAAAA,EAAAA;AACA,IAAAF,iBAAAA,EAAAA;AAAA,EAAA;AAAA,CAAA,CAAA;ACDA,IAiBM,sBAAA,EAMA,wBAAA,EAMA,6BAAA,EAMA,yBAAA,EAMAG,2BAMA,uBAAA,EAMO,uBAAA;AArDb,IAAA,gCAAA,GAAA,KAAA,CAAA;AAAA,EAAA,qEAAA,GAAA;AAiBA,IAAM,yBAAyBrB,wBAAAA,CAAM,IAAA;AAAA,MAAK,MACxC,OAAA,CAAA,OAAA,EAAA,CAAA,IAAA,CAAA,OAAA,iBAAA,EAAA,EAAA,oBAAA,CAAA,CAAA,CAA0B,IAAA,CAAK,CAAC,GAAA,KAAQ;AACtC,QAAA,OAAO,EAAE,OAAA,EAAS,GAAA,CAAI,kBAAA,EAAmB;AAAA,MAC3C,CAAC;AAAA,KACH;AAEA,IAAM,2BAA2BA,wBAAAA,CAAM,IAAA;AAAA,MAAK,MAC1C,OAAA,CAAA,OAAA,EAAA,CAAA,IAAA,CAAA,OAAA,YAAA,EAAA,EAAA,eAAA,CAAA,CAAA,CAAqB,IAAA,CAAK,CAAC,GAAA,KAAQ;AACjC,QAAA,OAAO,EAAE,OAAA,EAAS,GAAA,CAAI,oBAAA,EAAqB;AAAA,MAC7C,CAAC;AAAA,KACH;AAEA,IAAM,gCAAgCA,wBAAAA,CAAM,IAAA;AAAA,MAAK,MAC/C,OAAA,CAAA,OAAA,EAAA,CAAA,IAAA,CAAA,OAAA,iBAAA,EAAA,EAAA,oBAAA,CAAA,CAAA,CAA0B,IAAA,CAAK,CAAC,GAAA,KAAQ;AACtC,QAAA,OAAO,EAAE,OAAA,EAAS,GAAA,CAAI,yBAAA,EAA0B;AAAA,MAClD,CAAC;AAAA,KACH;AAEA,IAAM,4BAA4BA,wBAAAA,CAAM,IAAA;AAAA,MAAK,MAC3C,OAAA,CAAA,OAAA,EAAA,CAAA,IAAA,CAAA,OAAA,oBAAA,EAAA,EAAA,uBAAA,CAAA,CAAA,CAA6B,IAAA,CAAK,CAAC,GAAA,KAAQ;AACzC,QAAA,OAAO,EAAE,OAAA,EAAS,GAAA,CAAI,qBAAA,EAAsB;AAAA,MAC9C,CAAC;AAAA,KACH;AAEA,IAAMqB,4BAA2BrB,wBAAAA,CAAM,IAAA;AAAA,MAAK,MAC1C,OAAA,CAAA,OAAA,EAAA,CAAA,IAAA,CAAA,OAAA,mBAAA,EAAA,EAAA,sBAAA,CAAA,CAAA,CAAkD,IAAA,CAAK,CAAC,GAAA,KAAQ;AAC9D,QAAA,OAAO,EAAE,OAAA,EAAS,GAAA,CAAI,oBAAA,EAAqB;AAAA,MAC7C,CAAC;AAAA,KACH;AAEA,IAAM,0BAA0BA,wBAAAA,CAAM,IAAA;AAAA,MAAK,MACzC,OAAA,CAAA,OAAA,EAAA,CAAA,IAAA,CAAA,OAAA,kBAAA,EAAA,EAAA,qBAAA,CAAA,CAAA,CAA2B,IAAA,CAAK,CAAC,GAAA,KAAQ;AACvC,QAAA,OAAO,EAAE,OAAA,EAAS,GAAA,CAAI,mBAAA,EAAoB;AAAA,MAC5C,CAAC;AAAA,KACH;AAEO,IAAM,uBAAA,GAGR,CAAC,KAAA,KAAU;AACd,MAAA,MAAM,EAAE,MAAA,GAAS,SAAA,EAAW,WAAA,EAAY,GAAI,KAAA;AAC5C,MAAA,MAAM,EAAE,CAAA,EAAE,GAAI3D,0BAAAA,EAAe;AAC7B,MAAA,MAAM,EAAE,aAAA,EAAc,GAAIhB,uBAAAA,EAAW;AACrC,MAAAiG,kBAAU,MAAM;AACd,QAAA,IAAI,MAAA,KAAW,QAAA,IAAY,CAAC,aAAA,EAAe;AACzC,UAAA,WAAA,CAAY,SAAS,CAAA;AAAA,QACvB;AAAA,MACF,CAAA,EAAG,CAAC,MAAA,EAAQ,aAAa,CAAC,CAAA;AAC1B,MAAA,uBACEnG,cAAAA,CAAC0B,cAAAA,EAAA,EACC,QAAA,kBAAAP,eAAAA;AAAA,QAAC+D,cAAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAO,MAAA;AAAA,UACP,aAAA,EAAe,WAAA;AAAA,UACf,OAAA,EAAQ,WAAA;AAAA,UACR,IAAA,EAAK,IAAA;AAAA,UAEL,QAAA,EAAA;AAAA,4BAAAlF,cAAAA;AAAA,cAACmF,kBAAAA;AAAA,cAAA;AAAA,gBACC,KAAA,EAAO,EAAE,iBAAiB,CAAA;AAAA,gBAC1B,IAAA,kBAAMnF,cAAAA,CAACuB,iCAAAA,EAAA,EAAwB,CAAA;AAAA,gBAC/B,KAAA,EAAO,SAAA;AAAA,gBAEP,QAAA,kBAAAvB,cAAAA,CAAC6E,wBAAAA,CAAM,QAAA,EAAN,EAAe,QAAA,EAAU,IAAA,EACxB,QAAA,kBAAA7E,cAAAA,CAAC,sBAAA,EAAA,EAAuB,IAAA,EAAM6C,iCAAAA,CAAqB,SAAS,CAAA,EAC9D;AAAA;AAAA,aACF;AAAA,4BACA7C,cAAAA;AAAA,cAACmF,kBAAAA;AAAA,cAAA;AAAA,gBACC,KAAA,EAAO,EAAE,oBAAoB,CAAA;AAAA,gBAC7B,IAAA,kBAAMnF,cAAAA,CAACyB,+BAAAA,EAAA,EAAsB,CAAA;AAAA,gBAC7B,KAAA,EAAO,UAAA;AAAA,gBAEP,QAAA,kBAAAzB,cAAAA,CAAC6E,wBAAAA,CAAM,QAAA,EAAN,EAAe,QAAA,EAAU,IAAA,EACxB,QAAA,kBAAA7E,cAAAA,CAAC,sBAAA,EAAA,EAAuB,IAAA,EAAM6C,iCAAAA,CAAqB,UAAU,CAAA,EAC/D;AAAA;AAAA,aACF;AAAA,4BACA7C,cAAAA;AAAA,cAACmF,kBAAAA;AAAA,cAAA;AAAA,gBACC,KAAA,EAAO,EAAE,gBAAgB,CAAA;AAAA,gBACzB,IAAA,kBAAMnF,cAAAA,CAACoG,qBAAA,EAAA,EAAY,CAAA;AAAA,gBACnB,KAAA,EAAO,SAAA;AAAA,gBAEP,QAAA,kBAAApG,cAAAA,CAAC6E,wBAAAA,CAAM,QAAA,EAAN,EAAe,UAAU,IAAA,EACxB,QAAA,kBAAA7E,cAAAA,CAAC,wBAAA,EAAA,EAAyB,CAAA,EAC5B;AAAA;AAAA,aACF;AAAA,4BACAA,cAAAA;AAAA,cAACmF,kBAAAA;AAAA,cAAA;AAAA,gBACC,KAAA,EAAO,EAAE,iCAAiC,CAAA;AAAA,gBAC1C,IAAA,kBAAMnF,cAAAA,CAACqG,wBAAA,EAAA,EAAe,CAAA;AAAA,gBACtB,KAAA,EAAO,cAAA;AAAA,gBAEP,QAAA,kBAAArG,cAAAA,CAAC6E,wBAAAA,CAAM,QAAA,EAAN,EAAe,UAAU,IAAA,EACxB,QAAA,kBAAA7E,cAAAA,CAAC,6BAAA,EAAA,EAA8B,CAAA,EACjC;AAAA;AAAA,aACF;AAAA,4BACAA,cAAAA;AAAA,cAACmF,kBAAAA;AAAA,cAAA;AAAA,gBACC,KAAA,EAAO,EAAE,oCAAoC,CAAA;AAAA,gBAC7C,IAAA,kBAAMnF,cAAAA,CAACsG,kCAAA,EAAA,EAAyB,CAAA;AAAA,gBAChC,KAAA,EAAO,UAAA;AAAA,gBAEP,QAAA,kBAAAtG,cAAAA,CAAC6E,wBAAAA,CAAM,QAAA,EAAN,EAAe,UAAU,IAAA,EACxB,QAAA,kBAAA7E,cAAAA,CAAC,yBAAA,EAAA,EAA0B,CAAA,EAC7B;AAAA;AAAA,aACF;AAAA,4BACAA,cAAAA;AAAA,cAACmF,kBAAAA;AAAA,cAAA;AAAA,gBACC,KAAA,EAAO,EAAE,wCAAwC,CAAA;AAAA,gBACjD,KAAA,EAAO,SAAA;AAAA,gBAEP,QAAA,kBAAAnF,cAAAA,CAAC6E,wBAAAA,CAAM,QAAA,EAAN,EAAe,QAAA,EAAU,IAAA,EACxB,QAAA,kBAAA7E,cAAAA,CAACkG,yBAAAA,EAAA,EAAyB,CAAA,EAC5B;AAAA;AAAA,aACF;AAAA,YACC,iCACClG,cAAAA;AAAA,cAACmF,kBAAAA;AAAA,cAAA;AAAA,gBACC,KAAA,EAAO,QAAA;AAAA,gBACP,IAAA,kBAAMnF,cAAAA,CAACuG,oBAAA,EAAA,EAAW,CAAA;AAAA,gBAClB,KAAA,EAAO,EAAE,2BAA2B,CAAA;AAAA,gBAEpC,QAAA,kBAAAvG,cAAAA,CAAC6E,wBAAAA,CAAM,QAAA,EAAN,EAAe,UAAU,IAAA,EACxB,QAAA,kBAAA7E,cAAAA,CAAC,uBAAA,EAAA,EAAwB,CAAA,EAC3B;AAAA;AAAA;AACF;AAAA;AAAA,OAEJ,EACF,CAAA;AAAA,IAEJ,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;AC5IA,IAWMwG,0BAAAA,EAMO,sBAAA;AAjBb,IAAA,+BAAA,GAAA,KAAA,CAAA;AAAA,EAAA,oEAAA,GAAA;AAIA,IAAA,mBAAA,EAAA;AACA,IAAAP,qBAAAA,EAAAA;AACA,IAAA,iBAAA,EAAA;AACA,IAAA,iBAAA,EAAA;AACA,IAAA,YAAA,EAAA;AAGA,IAAMO,6BAA4B3B,wBAAAA,CAAM,IAAA;AAAA,MAAK,MAC3C,OAAA,CAAA,OAAA,EAAA,CAAA,IAAA,CAAA,OAAA,oBAAA,EAAA,EAAA,uBAAA,CAAA,CAAA,CAA6B,IAAA,CAAK,CAAC,GAAA,KAAQ;AACzC,QAAA,OAAO,EAAE,OAAA,EAAS,GAAA,CAAI,qBAAA,EAAsB;AAAA,MAC9C,CAAC;AAAA,KACH;AAEO,IAAM,sBAAA,GAGR,CAAC,KAAA,KAAU;AACd,MAAA,MAAM,EAAE,MAAA,GAAS,SAAA,EAAW,WAAA,EAAY,GAAI,KAAA;AAC5C,MAAA,MAAM,EAAE,CAAA,EAAE,GAAI3D,0BAAAA,EAAe;AAE7B,MAAA,uBACEC,eAAAA;AAAA,QAAC+D,cAAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAO,MAAA;AAAA,UACP,aAAA,EAAe,WAAA;AAAA,UACf,OAAA,EAAQ,WAAA;AAAA,UACR,IAAA,EAAK,IAAA;AAAA,UACL,UAAA,EAAY;AAAA,YACV,QAAA,EAAU,mBAAA;AAAA,YACV,eAAA,EAAiB;AAAA,WACnB;AAAA,UACA,mBAAA,EAAmB,IAAA;AAAA,UAEnB,QAAA,EAAA;AAAA,4BAAAlF,cAAAA,CAACmF,kBAAAA,EAAA,EAAS,KAAA,EAAO,EAAE,iBAAiB,CAAA,EAAG,KAAA,EAAO,SAAA,EAC5C,0BAAAnF,cAAAA,CAAC,kBAAA,EAAA,EAAmB,IAAA,EAAM6C,iCAAAA,CAAqB,SAAS,CAAA,EAC1D,CAAA;AAAA,4BACA7C,cAAAA,CAACmF,kBAAAA,EAAA,EAAS,KAAA,EAAO,EAAE,oBAAoB,CAAA,EAAG,KAAA,EAAO,UAAA,EAC/C,0BAAAnF,cAAAA,CAAC,kBAAA,EAAA,EAAmB,IAAA,EAAM6C,iCAAAA,CAAqB,UAAU,CAAA,EAC3D,CAAA;AAAA,4BACA7C,cAAAA,CAACmF,kBAAAA,EAAA,EAAS,KAAA,EAAO,CAAA,CAAE,gBAAgB,CAAA,EAAG,KAAA,EAAO,SAAA,EAC3C,QAAA,kBAAAnF,cAAAA,CAAC,wBAAqB,CAAA,EACxB,CAAA;AAAA,4BACAA,cAAAA;AAAA,cAACmF,kBAAAA;AAAA,cAAA;AAAA,gBACC,KAAA,EAAO,EAAE,iCAAiC,CAAA;AAAA,gBAC1C,KAAA,EAAO,cAAA;AAAA,gBAEP,QAAA,kBAAAnF,eAAC,yBAAA,EAAA,EAA0B;AAAA;AAAA,aAC7B;AAAA,4BACAA,cAAAA;AAAA,cAACmF,kBAAAA;AAAA,cAAA;AAAA,gBACC,KAAA,EAAO,EAAE,oCAAoC,CAAA;AAAA,gBAC7C,KAAA,EAAO,UAAA;AAAA,gBAEP,QAAA,kBAAAnF,cAAAA,CAAC6E,wBAAAA,CAAM,QAAA,EAAN,EAAe,QAAA,EAAU,IAAA,EACxB,QAAA,kBAAA7E,cAAAA,CAACwG,0BAAAA,EAAA,EAA0B,CAAA,EAC7B;AAAA;AAAA,aACF;AAAA,4BACAxG,cAAAA;AAAA,cAACmF,kBAAAA;AAAA,cAAA;AAAA,gBACC,KAAA,EAAO,EAAE,wCAAwC,CAAA;AAAA,gBACjD,KAAA,EAAO,SAAA;AAAA,gBAEP,QAAA,kBAAAnF,eAAC,oBAAA,EAAA,EAAqB;AAAA;AAAA,aACxB;AAAA,4BACAA,cAAAA,CAACmF,kBAAAA,EAAA,EAAS,KAAA,EAAO,CAAA,CAAE,eAAe,CAAA,EAAG,KAAA,EAAO,QAAA,EAC1C,QAAA,kBAAAnF,cAAAA,CAAC,uBAAoB,CAAA,EACvB;AAAA;AAAA;AAAA,OACF;AAAA,IAEJ,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;ACtEA,IAKa,sBAAA;AALb,IAAA,4BAAA,GAAA,KAAA,CAAA;AAAA,EAAA,iEAAA,GAAA;AACA,IAAA,4BAAA,EAAA;AACA,IAAA,gCAAA,EAAA;AACA,IAAA,+BAAA,EAAA;AAEO,IAAM,yBAAmC,MAAM;AACpD,MAAA,MAAM,QAAQ,yBAAA,EAA0B;AACxC,MAAA,MAAM,EAAE,QAAA,EAAS,GAAIQ,mBAAAA,EAAU;AAC/B,MAAA,IAAI,QAAA,EAAU;AACZ,QAAA,uBAAOR,cAAAA,CAAC,sBAAA,EAAA,EAAwB,GAAG,KAAA,EAAO,CAAA;AAAA,MAC5C;AACA,MAAA,uBAAOA,cAAAA,CAAC,uBAAA,EAAA,EAAyB,GAAG,KAAA,EAAO,CAAA;AAAA,IAC7C,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACZA,IAAA,wBAAA,GAAA,EAAA;AAAA,QAAA,CAAA,wBAAA,EAAA;AAAA,EAAA,sBAAA,EAAA,MAAA;AAAA,CAAA,CAAA;AAAA,IAAA,qBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,8CAAA,GAAA;AAAA,IAAA,4BAAA,EAAA;AAAA,EAAA;AAAA,CAAA,CAAA;ACAA,IAWa,eAAA,EAIA,kBAAA;AAfb,IAAA,oBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,iDAAA,GAAA;AAWO,IAAM,eAAA,GAAkBJ,qBAAAA;AAAA,MAC7B;AAAC,KACH;AAEO,IAAM,qBAAqB,MAAM;AACtC,MAAA,OAAOC,mBAAW,eAAe,CAAA;AAAA,IACnC,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;ACjBA,IAMa,oBAAA;AANb,IAAA,uBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,qDAAA,GAAA;AAIA,IAAA,oBAAA,EAAA;AAEO,IAAM,uBAAuB,MAAM;AACxC,MAAA,MAAM,eAAe,kBAAA,EAAmB;AAExC,MAAA,MAAM,EAAE,YAAA,EAAc,eAAA,EAAgB,GAAIO,6BAAAA,EAAc;AACxD,MAAA,MAAM,EAAE,KAAA,EAAM,GAAIF,uBAAAA,EAAW;AAE7B,MAAA,MAAM,YAAA,GAAeuG,0BAAA,CAAW,YAAA,CAAa,IAAA,EAAM;AAAA,QACjD,eACE,KAAA,CAAM,MAAA,KAAW9F,+BAAkB,6BAAA,GAC/BA,8BAAAA,CAAkB,gCAClBA,8BAAAA,CAAkB,aAAA;AAAA,QACxB,cAAc,YAAA,CAAa,cAAA;AAAA,UACzB,EAAE,eAAe,CAAA,EAAE;AAAA,UACnB,EAAE,eAAe,GAAA;AAAI;AACvB,OACD,CAAA;AAED,MAAA,MAAM,KAAA,GAAQZ,gBAAQ,MAAM;AAC1B,QAAA,IAAI,cAAc,MAAA,EAAQ;AACxB,UAAA,OAAO,YAAA;AAAA,QACT;AACA,QAAA,OAAO,YAAA,CAAa,cAAA;AAAA,UAClB,EAAE,eAAe,CAAA,EAAE;AAAA,UACnB,EAAE,eAAe,GAAA;AAAI,SACvB;AAAA,MACF,CAAA,EAAG,CAAC,YAAA,EAAc,YAAY,CAAC,CAAA;AAE/B,MAAA,MAAM,SAAA,GACJ,YAAA,IAAgB,eAAA,IAAmB,CAAC,aAAa,IAAA,CAAK,MAAA;AAExD,MAAA,OAAO;AAAA,QACL,GAAG,YAAA;AAAA,QACH,IAAA,EAAM,KAAA;AAAA,QACN;AAAA,OACF;AAAA,IACF,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;AC+lBA,SAAS,UAAU,IAAA,EAAY;AAC7B,EAAA,MAAM,IAAA,GAAO,KAAK,cAAA,EAAe;AACjC,EAAA,MAAM,KAAA,GAAQ,IAAI,IAAA,CAAK,WAAA,KAAgB,CAAC,CAAA,CAAA,CAAG,MAAM,EAAE,CAAA;AACnD,EAAA,MAAM,MAAM,CAAA,CAAA,EAAI,IAAA,CAAK,YAAY,CAAA,CAAA,CAAG,MAAM,EAAE,CAAA;AAE5C,EAAA,OAAO,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,KAAK,IAAI,GAAG,CAAA,CAAA;AAChC;AA9oBA,IAgBY,UAAA,EAOC,oBAAA;AAvBb,IAAA,oBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,8CAAA,GAAA;AAgBO,IAAK,UAAA,qBAAA2G,WAAAA,KAAL;AACL,MAAAA,YAAA,KAAA,CAAA,GAAM,IAAA;AACN,MAAAA,YAAA,MAAA,CAAA,GAAO,IAAA;AACP,MAAAA,YAAA,OAAA,CAAA,GAAQ,KAAA;AACR,MAAAA,YAAA,SAAA,CAAA,GAAU,KAAA;AAJA,MAAA,OAAAA,WAAAA;AAAA,IAAA,CAAA,EAAA,UAAA,IAAA,EAAA,CAAA;AAOL,IAAM,oBAAA,GAAuB,CAClCC,SAAAA,EACA,OAAA,KACG;AACH,MAAA,MAAM,CAAC,KAAK,CAAA,GAAI7G,iBAAS,sBAAM,IAAI,MAAM,CAAA;AAEzC,MAAA,MAAM,EAAE,aAAA,EAAc,GAAIgF,iCAAAA,EAAqB;AAG/C,MAAA,MAAM,EAAE,CAAA,EAAE,GAAI5D,0BAAAA,EAAe;AAE7B,MAAA,MAAM,EAAE,UAAA,GAAa,KAAA,EAAM,GAAI,WAAW,EAAC;AAC3C,MAAA,MAAM,WAAA,GAAc,MAAA,CAAO,MAAA,CAAO,UAAU,CAAA;AAE5C,MAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIX,4BAAAA;AAAA,QAC1BoG,SAAAA;AAAA,QACA,KAAA;AAAA,OACF;AAEA,MAAA,MAAM,uBAAA,GAA0B7F,mBAAAA;AAAA,QAC9B,CAAC,MAAA,KAKc;AACb,UAAA,MAAM,EAAE,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAO,EAAA,GAAK,OAAM,GAAI,MAAA;AAC7C,UAAA,IAAI,KAAA,CAAM,WAAA,EAAY,KAAM,MAAA,EAAQ;AAClC,YAAA,OAAO,EAAA,KAAO,QAAQ,KAAA,CAAM,GAAA,CAAI,MAAM,CAAA,GAAI,KAAA,CAAM,IAAI,MAAM,CAAA;AAAA,UAC5D,CAAA,MAAO;AACL,YAAA,MAAM,UAAA,GAAa,cAAc,KAAK,CAAA;AACtC,YAAA,IAAI,UAAA,EAAY;AACd,cAAA,MAAM,QAAQ,IAAI4B,oBAAAA,CAAQ,MAAM,CAAA,CAAE,IAAI,UAAU,CAAA;AAChD,cAAA,OAAO,EAAA,KAAO,QAAQ,KAAA,CAAM,GAAA,CAAI,KAAK,CAAA,GAAI,KAAA,CAAM,IAAI,KAAK,CAAA;AAAA,YAC1D;AACA,YAAA,OAAO,KAAA;AAAA,UACT;AAAA,QACF,CAAA;AAAA,QACA,CAAC,aAAa;AAAA,OAChB;AAEA,MAAA,MAAM,WAAA,GAAc3C,gBAAoC,MAAM;AAC5D,QAAA,OAAO;AAAA,UACL,CAAC,IAAA,aAAiB,CAAA,CAAE,kBAAkB,CAAA;AAAA,UACtC,CAAC,IAAA,cAAkB,CAAA,CAAE,kBAAkB,CAAA;AAAA,UACvC,CAAC,KAAA,eAAmB,CAAA,CAAE,mBAAmB,CAAA;AAAA,UACzC,CAAC,KAAA,iBAAqB,CAAA,CAAE,mBAAmB;AAAA,SAC7C;AAAA,MACF,CAAA,EAAG,CAAC,CAAC,CAAC,CAAA;AAEN,MAAA,MAAM6G,gBAAAA,GAAkB,CAAC,IAAA,KAAuB;AAC9C,QAAA,OAAOC,cAAA,CAAO,MAAM,YAAY,CAAA;AAAA,MAClC,CAAA;AAEA,MAAA,MAAM,oBAAA,GAAuB,CAAC,SAAA,KAAsB;AAClD,QAAA,OAAO;AAAA,UACL,MAAMC,eAAA,iBAAQ,IAAI,IAAA,EAAK,EAAG,YAAY,CAAC,CAAA;AAAA,UACvC,EAAA,sBAAQ,IAAA;AAAK,SACf;AAAA,MACF,CAAA;AAEA,MAAA,MAAM,qBAAA,GAAwB,CAAC,IAAA,EAAY,EAAA,KAAgC;AAEzE,QAAA,MAAM,YAAY,IAAA,CAAK,GAAA,CAAInE,yBAAiB,IAAA,EAAM,EAAE,CAAC,CAAA,GAAI,CAAA;AAGzD,QAAA,MAAM,UAAA,GAAa,CAAC,CAAA,EAAG,CAAA,EAAG,IAAI,EAAE,CAAA;AAChC,QAAA,IAAI,CAAC,UAAA,CAAW,QAAA,CAAS,SAAgB,CAAA,EAAG;AAC1C,UAAA,OAAO,IAAA;AAAA,QACT;AAGA,QAAA,MAAM,aAAA,GAAgB,qBAAqB,SAAS,CAAA;AACpD,QAAA,IACEiE,gBAAAA,CAAgB,aAAA,CAAc,IAAI,CAAA,KAAMA,gBAAAA,CAAgB,IAAI,CAAA,IAC5DA,gBAAAA,CAAgB,aAAA,CAAc,EAAE,CAAA,KAAMA,gBAAAA,CAAgB,EAAE,CAAA,EACxD;AACA,UAAA,QAAQ,SAAA;AAAW,YACjB,KAAK,CAAA;AACH,cAAA,OAAO,IAAA;AAAA,YACT,KAAK,CAAA;AACH,cAAA,OAAO,IAAA;AAAA,YACT,KAAK,EAAA;AACH,cAAA,OAAO,KAAA;AAAA,YACT,KAAK,EAAA;AACH,cAAA,OAAO,KAAA;AAAA;AACX,QACF;AAEA,QAAA,OAAO,IAAA;AAAA,MACT,CAAA;AAEA,MAAA,MAAM,uBAAA,GAA0B,CAAC,IAAA,EAAY,EAAA,KAAqB;AAEhE,QAAA,MAAM,YAAY,IAAA,CAAK,GAAA,CAAIjE,yBAAiB,IAAA,EAAM,EAAE,CAAC,CAAA,GAAI,CAAA;AACzD,QAAA,OAAO,GAAG,SAAS,CAAA,CAAA,CAAA;AAAA,MACrB,CAAA;AAEA,MAAA,MAAM,EAAE,UAAA,EAAW,GAAIxC,0BAAAA,EAAc;AAErC,MAAA,MAAM,YAAA,GAAe,CAAC,KAAA,KAAsB;AAC1C,QAAA,QAAQ,KAAA;AAAO,UACb,KAAK,IAAA;AACH,YAAA,OAAO2G,eAAA,CAAQ,OAAO,CAAC,CAAA;AAAA,UACzB,KAAK,IAAA;AACH,YAAA,OAAOA,eAAA,CAAQ,OAAO,CAAC,CAAA;AAAA,UACzB,KAAK,KAAA;AACH,YAAA,OAAOA,eAAA,CAAQ,OAAO,EAAE,CAAA;AAAA,UAC1B,KAAK,KAAA;AACH,YAAA,OAAOA,eAAA,CAAQ,OAAO,EAAE,CAAA;AAAA,UAC1B;AACE,YAAA,OAAOA,eAAA,CAAQ,OAAO,CAAC,CAAA;AAAA;AAC3B,MACF,CAAA;AAEA,MAAA,MAAM,CAAC,SAAA,EAAW,YAAY,IAAIhH,gBAAAA,CAAS,YAAA,CAAa,MAAM,CAAC,CAAA;AAC/D,MAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIA,iBAAS,KAAK,CAAA;AAE5C,MAAA,MAAM,WAAA,GAAcC,gBAAQ,MAAM;AAChC,QAAA,IAAI,MAAA,EAAQ;AACV,UAAA,QAAQ,MAAA;AAAQ,YACd,KAAK,IAAA;AACH,cAAA,OAAO,CAAA;AAAA,YACT,KAAK,IAAA;AACH,cAAA,OAAO,CAAA;AAAA,YACT,KAAK,KAAA;AACH,cAAA,OAAO,EAAA;AAAA,YACT,KAAK,KAAA;AACH,cAAA,OAAO,EAAA;AAAA;AACX,QACF;AAEA,QAAA,OAAO,KAAK,GAAA,CAAI4C,wBAAAA,CAAiB,SAAA,EAAW,OAAO,CAAC,CAAA,GAAI,CAAA;AAAA,MAC1D,CAAA,EAAG,CAAC,MAAA,EAAQ,SAAA,EAAW,OAAO,CAAC,CAAA;AAM/B,MAAA,MAAM,YAAA,GAAeoE,eAAgBC,iBAAI,CAAA;AAGzC,MAAA,MAAM,EAAE,IAAA,EAAM,kBAAA,EAAoB,MAAA,EAAQ,mBAAkB,GAC1DC,4BAAA;AAAA,QACE,kEAAkE,SAAA,CAAU,OAAA,EAAS,CAAA,OAAA,EAAU,OAAA,CAAQ,SAAS,CAAA,CAAA;AAAA,QAChH;AAAA,UACE,iBAAA,EAAmB;AAAA;AACrB,OACF;AACF,MAAA,MAAM,EAAE,IAAA,EAAM,iBAAA,EAAmB,MAAA,EAAQ,kBAAiB,GACxDA,4BAAA;AAAA,QACE,iEAAiE,SAAA,CAAU,OAAA,EAAS,CAAA,OAAA,EAAU,OAAA,CAAQ,SAAS,CAAA,CAAA;AAAA,QAC/G;AAAA,UACE,iBAAA,EAAmB;AAAA;AACrB,OACF;AAEF,MAAA,MAAM,CAAC,IAAI,CAAA,GAAIC,+BAAA;AAAA,QACb;AAAA,UACE,WAAW,SAAA,CAAU,WAAA,GAAc,KAAA,CAAM,GAAG,EAAE,CAAC,CAAA;AAAA,UAC/C,SAAS,OAAA,CAAQ,WAAA,GAAc,KAAA,CAAM,GAAG,EAAE,CAAC;AAAA,SAC7C;AAAA,QACA;AAAA,UACE,iBAAA,EAAmB;AAAA;AACrB,OACF;AAEA,MAAA,MAAM,CAAC,cAAc,CAAA,GAAIC,8BAAA,EAAkB;AAE3C,MAAA,MAAM,WAAA,GAAcpH,eAAAA;AAAA,QAClB,MAAM,gBAAgB,yBAAA,IAA6B,CAAA;AAAA,QACnD,CAAC,cAAc;AAAA,OACjB;AAGA,MAAA,MAAM,mBAAA,GAAsBgH,eAAe,CAAC,CAAA;AAC5C,MAAA,MAAM,sBAAA,GAAyBjG,oBAAY,MAAM;AAC/C,QAAA,MAAM,GAAA,GAAM,KAAK,GAAA,EAAI;AACrB,QAAA,IAAI,GAAA,GAAM,mBAAA,CAAoB,OAAA,GAAU,IAAA,EAAO;AAC7C,UAAA;AAAA,QACF;AACA,QAAA,mBAAA,CAAoB,OAAA,GAAU,GAAA;AAC9B,QAAA,iBAAA,GAAoB,QAAW,IAAI,CAAA;AACnC,QAAA,gBAAA,GAAmB,QAAW,IAAI,CAAA;AAAA,MACpC,CAAA,EAAG,CAAC,iBAAA,EAAmB,gBAAgB,CAAC,CAAA;AAExC,MAAAsG,4BAAA,CAAgB;AAAA,QACd,WAAW,MAAM;AACf,UAAA,sBAAA,EAAuB;AAAA,QACzB;AAAA,OACD,CAAA;AAGD,MAAA,MAAM,CAAC,YAAY,CAAA,GAAI7D,6BAAAA,CAAiB;AAAA,QACtC,SAAA,EAAWuD,eAAA,CAAQ,KAAA,EAAO,CAAC,EAAE,OAAA,EAAQ;AAAA,QACrC,OAAA,EAAS,QAAQ,OAAA,EAAQ;AAAA,QACzB,QAAA,EAAU;AAAA,OACX,CAAA;AAGD,MAAA,MAAM,CAAC,iBAAiB,CAAA,GAAIvD,6BAAAA,CAAiB;AAAA,QAC3C,IAAA,EAAM,SAAA;AAAA,QACN,SAAA,EAAWuD,eAAA,CAAQ,KAAA,EAAO,WAAW,EAAE,OAAA,EAAQ;AAAA,QAC/C,OAAA,EAAS,QAAQ,OAAA,EAAQ;AAAA,QACzB,QAAA,EAAU;AAAA,OACX,CAAA;AAED,MAAA,MAAM,kBAAA,GAAqB/G,gBAAQ,MAAM;AACvC,QAAA,OAAO,iBAAA,EACH,MAAA,CAAO,CAAC,IAAA,KAAS,IAAA,CAAK,YAAA,KAAiB,WAAW,CAAA,CACnD,MAAA,CAAO,CAAC,GAAA,EAAK,IAAA,KAAS;AACrB,UAAA,OAAO,GAAA,CAAI,GAAA;AAAA;AAAA,YAET,uBAAA,CAAwB;AAAA,cACtB,OAAO,IAAA,CAAK,KAAA;AAAA,cACZ,QAAQ,IAAA,CAAK,MAAA;AAAA,cACb,KAAA,EAAOiH,iBAAA;AAAA,cACP,EAAA,EAAI;AAAA,aACL;AAAA,WACH;AAAA,QACF,GAAGA,iBAAI,CAAA;AAAA,MACX,CAAA,EAAG,CAAC,iBAAA,EAAmB,uBAAuB,CAAC,CAAA;AAE/C,MAAA,MAAM,qBAAA,GAAwBjH,gBAAQ,MAAM;AAC1C,QAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,iBAAiB,CAAA,EAAG;AACrC,UAAA,OAAOiH,iBAAA;AAAA,QACT;AACA,QAAA,OAAO,iBAAA,EACH,MAAA,CAAO,CAAC,IAAA,KAAS,IAAA,CAAK,MAAA,KAAW,WAAW,CAAA,CAC7C,MAAA,CAAO,CAAC,GAAA,EAAK,IAAA,KAAS;AACrB,UAAA,OAAO,GAAA,CAAI,GAAA;AAAA,YACT,uBAAA,CAAwB;AAAA,cACtB,OAAO,IAAA,CAAK,KAAA;AAAA,cACZ,QAAQ,IAAA,CAAK,MAAA;AAAA,cACb,KAAA,EAAOA,iBAAA;AAAA,cACP,EAAA,EAAI;AAAA,aACL;AAAA,WACH;AAAA,QACF,GAAGA,iBAAI,CAAA;AAAA,MACX,CAAA,EAAG,CAAC,iBAAA,EAAmB,uBAAuB,CAAC,CAAA;AAE/C,MAAA,MAAM,SAAA,GAAYjH,eAAAA;AAAA,QAChB,OAAO;AAAA,UACL,IAAA,EAAM,SAAA;AAAA,UACN,EAAA,EAAI;AAAA,SACN,CAAA;AAAA,QACA,CAAC,WAAW,OAAO;AAAA,OACrB;AAEA,MAAA,MAAM,cAAA,GAAiB,CAAC,KAAA,KAAsB;AAC5C,QAAA,MAAM,YAAA,GAAe,aAAa,KAAK,CAAA;AACvC,QAAA,YAAA,CAAa,YAAY,CAAA;AACzB,QAAA,UAAA,CAAW,KAAK,CAAA;AAChB,QAAA,SAAA,CAAU,KAAK,CAAA;AAAA,MACjB,CAAA;AAEA,MAAA,MAAM,YAAA,GAAe,CAAC,QAAA,KAGhB;AACJ,QAAA,MAAM,QAAA,GACJ,SAAS,IAAA,YAAgB,IAAA,GAAO,SAAS,IAAA,GAAO,IAAI,IAAA,CAAK,QAAA,CAAS,IAAI,CAAA;AACxE,QAAA,MAAM,MAAA,GACJ,SAAS,EAAA,YAAc,IAAA,GAAO,SAAS,EAAA,GAAK,IAAI,IAAA,CAAK,QAAA,CAAS,EAAE,CAAA;AAClE,QAAA,YAAA,CAAa,QAAQ,CAAA;AACrB,QAAA,UAAA,CAAW,MAAM,CAAA;AAGjB,QAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,QAAA,EAAU,MAAM,CAAA;AAC7D,QAAA,IAAI,cAAA,EAAgB;AAClB,UAAA,SAAA,CAAU,cAAc,CAAA;AAAA,QAC1B,CAAA,MAAO;AAEL,UAAA,SAAA,CAAU,IAAI,CAAA;AAAA,QAChB;AAAA,MACF,CAAA;AAEA,MAAA,MAAM,QAAA,GAAW,CAAC,MAAA,KAAyC;AACzD,QAAA,IAAI,MAAA,CAAO,SAAS,WAAA,EAAa;AAC/B,UAAA,YAAA,CAAa,OAAO,KAAK,CAAA;AAAA,QAC3B;AAAA,MACF,CAAA;AAEA,MAAA,MAAM,WAAA,GAAcA,gBAAQ,MAAM;AAChC,QAAA,MAAM,eAAA,GAAkB;AAAA,UACtB,IAAA,EAAM,OAAA;AAAA,UACN,IAAA,EAAM,WAAA;AAAA,UACN,KAAA,EAAO,SAAA;AAAA,UACP,GAAA,EAAK;AAAA,SACP;AACA,QAAA,OAAO,CAAC,eAAe,CAAA;AAAA,MACzB,CAAA,EAAG,CAAC,SAAS,CAAC,CAAA;AAId,MAAA,MAAM,QAAA,GAAWA,gBAAQ,MAAM;AAC7B,QAAA,OAAO,KAAK,MAAA,GAAS,CAAA,GAAI,KAAK,IAAA,CAAK,MAAA,GAAS,CAAC,CAAA,GAAI,IAAA;AAAA,MACnD,CAAA,EAAG,CAAC,IAAI,CAAC,CAAA;AAET,MAAA,MAAM,eAAA,GAAkBA,gBAAQ,MAAM;AACpC,QAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,iBAAiB,CAAA,EAAG;AACrC,UAAA,OAAO,IAAA;AAAA,QACT;AACA,QAAA,IACE,QAAA,IAAY,QACZ,iBAAA,EAAmB,MAAA,KAAW,KAC9B,OAAO,QAAA,CAAS,kBAAkB,WAAA,EAClC;AACA,UAAA,OAAOiH,iBAAA;AAAA,QACT;AACA,QAAA,MAAM,IAAA,GAAO,iBAAA,EAAmB,MAAA,CAAO,CAAC,IAAA,KAAS;AAC/C,UAAA,OACE,IAAA,CAAK,MAAA,KAAW,WAAA,IAChB,IAAA,CAAK,eAAe,QAAA,EAAU,aAAA;AAAA,QAElC,CAAC,CAAA;AACD,QAAA,OAAO,IAAA,EAAM,MAAA,CAAO,CAAC,GAAA,EAAK,IAAA,KAAS;AACjC,UAAA,OAAO,GAAA,CAAI,GAAA;AAAA,YACT,uBAAA,CAAwB;AAAA,cACtB,OAAO,IAAA,CAAK,KAAA;AAAA,cACZ,QAAQ,IAAA,CAAK,MAAA;AAAA,cACb,KAAA,EAAOA,iBAAA;AAAA,cACP,EAAA,EAAI;AAAA,aACL;AAAA,WACH;AAAA,QACF,GAAGA,iBAAI,CAAA;AAAA,MACT,CAAA,EAAG,CAAC,iBAAA,EAAmB,QAAA,EAAU,uBAAuB,CAAC,CAAA;AAEzD,MAAA,MAAM,gBAAA,GAAmBjH,gBAAQ,MAAM;AACrC,QAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,kBAAkB,CAAA,EAAG;AACtC,UAAA,OAAO,IAAA;AAAA,QACT;AACA,QAAA,IACE,QAAA,IAAY,QACZ,kBAAA,EAAoB,MAAA,KAAW,KAC/B,OAAO,QAAA,CAAS,kBAAkB,WAAA,EAClC;AACA,UAAA,OAAOiH,iBAAA;AAAA,QACT;AACA,QAAA,MAAM,IAAA,GAAO,kBAAA,EAAoB,MAAA,CAAO,CAAC,IAAA,KAAS;AAChD,UAAA,OACE,IAAA,CAAK,MAAA,KAAW,WAAA,IAChB,IAAA,CAAK,eAAe,QAAA,EAAU,aAAA;AAAA,QAElC,CAAC,CAAA;AACD,QAAA,OAAO,IAAA,EAAM,MAAA,CAAO,CAAC,GAAA,EAAK,IAAA,KAAS;AACjC,UAAA,OAAO,GAAA,CAAI,GAAA;AAAA,YACT,uBAAA,CAAwB;AAAA,cACtB,OAAO,IAAA,CAAK,KAAA;AAAA,cACZ,QAAQ,IAAA,CAAK,MAAA;AAAA,cACb,KAAA,EAAOA,iBAAA;AAAA,cACP,EAAA,EAAI;AAAA,aACL;AAAA,WACH;AAAA,QACF,GAAGA,iBAAI,CAAA;AAAA,MACT,CAAA,EAAG,CAAC,kBAAA,EAAoB,QAAA,EAAU,uBAAuB,CAAC,CAAA;AAE1D,MAAA,MAAM,gBAAA,GAAmB,CAAC,MAAA,KAQpB;AACJ,QAAA,IAAI,cAAc,IAAA,EAAM;AACtB,UAAA,OAAO,IAAA;AAAA,QACT;AAEA,QAAA,IAAI,KAAA,GAAQ,IAAItE,oBAAAA,CAAQ,UAAU,EAAE,GAAA,CAAI,MAAA,CAAO,SAAS,aAAa,CAAA;AAGrE,QAAA,IACE,KAAA,CAAM,OAAA,CAAQ,MAAA,CAAO,YAAY,CAAA,IACjC,MAAA,CAAO,YAAA,CAAa,MAAA,GAAS,CAAA,IAC7B,OAAO,MAAA,CAAO,QAAA,CAAS,kBAAkB,WAAA,EACzC;AAEA,UAAA,MAAM,OAAO,EAAC;AAEd,UAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,MAAA,CAAO,YAAA,CAAa,QAAQ,CAAA,EAAA,EAAK;AACnD,YAAA,MAAM,IAAA,GAAO,MAAA,CAAO,YAAA,CAAa,CAAC,CAAA;AAClC,YAAA,IAAI,IAAA,CAAK,YAAA,GAAe,MAAA,CAAO,QAAA,CAAS,aAAA,EAAe;AACrD,cAAA,IAAA,CAAK,KAAK,IAAI,CAAA;AAAA,YAChB;AAAA,UACF;AAGA,UAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,QAAQ,CAAA,EAAA,EAAK;AACpC,YAAA,MAAM,IAAA,GAAO,KAAK,CAAC,CAAA;AACnB,YAAA,IAAI,IAAA,CAAK,SAAS,SAAA,EAAW;AAC3B,cAAA,IAAI,IAAA,CAAK,iBAAiB,WAAA,EAAa;AACrC,gBAAA,KAAA,GAAQ,uBAAA,CAAwB;AAAA,kBAC9B,OAAO,IAAA,CAAK,KAAA;AAAA,kBACZ,QAAQ,IAAA,CAAK,MAAA;AAAA,kBACb,KAAA;AAAA,kBACA,EAAA,EAAI;AAAA,iBACL,CAAA;AAED,gBAAA,YAAA,CAAa,UAAU,uBAAA,CAAwB;AAAA,kBAC7C,OAAO,IAAA,CAAK,KAAA;AAAA,kBACZ,QAAQ,IAAA,CAAK,MAAA;AAAA,kBACb,OAAO,YAAA,CAAa,OAAA;AAAA,kBACpB,EAAA,EAAI;AAAA,iBACL,CAAA;AAAA,cACH;AAAA,YACF,CAAA,MAAA,IAAW,IAAA,CAAK,IAAA,KAAS,UAAA,EAAY;AACnC,cAAA,IAAI,IAAA,CAAK,iBAAiB,QAAA,EAAU;AAClC,gBAAA,KAAA,GAAQ,uBAAA,CAAwB;AAAA,kBAC9B,OAAO,IAAA,CAAK,KAAA;AAAA,kBACZ,QAAQ,IAAA,CAAK,MAAA;AAAA,kBACb,KAAA;AAAA,kBACA,EAAA,EAAI;AAAA,iBACL,CAAA;AAAA,cACH;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAEA,QAAA,KAAA,GAAQ,KAAA,CACL,IAAI,MAAA,CAAO,eAAA,CAAgB,EAAE,CAAA,CAC7B,GAAA,CAAI,MAAA,CAAO,eAAA,CAAgB,GAAG,CAAA;AAEjC,QAAA,OAAO,MAAM,QAAA,EAAS;AAAA,MACxB,CAAA;AAEA,MAAA,MAAM,YAAY,CAChB6C,KAAAA,EACA8B,WAAAA,EACAC,gBAAAA,EACAC,mBACA,QAAA,KACG;AACH,QAAA,MAAMC,SAAAA,GAAWjC,KAAAA,CAAKA,KAAAA,CAAK,MAAA,GAAS,CAAC,CAAA;AAErC,QAAA,OAAO;AAAA,UACL,GAAGiC,SAAAA;AAAA,UACH,IAAA,EAAM,UAAU,KAAK,CAAA;AAAA,UACrB,WAAA,EAAa,QAAA;AAAA,UACb,aAAA,EACEH,WAAAA,KAAe,IAAA,GAAOA,WAAAA,GAAcG,WAAU,aAAA,IAAiB,CAAA;AAAA,UACjE,KACE,gBAAA,CAAiB;AAAA,YACf,QAAA,EAAAA,SAAAA;AAAA,YACA,YAAA;AAAA,YAEA,eAAA,EAAiB;AAAA,cACf,GAAA,EAAKD,iBAAAA;AAAA,cACL,EAAA,EAAID;AAAA;AACN,WACD,CAAA,IAAK,CAAA;AAAA,UACR,cAAA,EAAgB;AAAA,SAClB;AAAA,MACF,CAAA;AAEA,MAAA,MAAM,YAAY,CAChB/B,KAAAA,EACA8B,WAAAA,EACAC,gBAAAA,EACAC,mBACA,QAAA,KACG;AACH,QAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQhC,KAAI,CAAA,IAAKA,KAAAA,CAAK,WAAW,CAAA,EAAG;AAC7C,UAAA,OAAOA,KAAAA;AAAA,QACT;AAEA,QAAA,IAAIA,KAAAA,CAAKA,MAAK,MAAA,GAAS,CAAC,EAAE,IAAA,KAAS,SAAA,CAAU,KAAK,CAAA,EAAG;AACnD,UAAA,OAAOA,KAAAA;AAAA,QACT;AAEA,QAAA,OAAOA,MAAK,MAAA,CAAO;AAAA,UACjB,SAAA,CAAUA,KAAAA,EAAM8B,WAAAA,EAAYC,gBAAAA,EAAiBC,mBAAkB,QAAQ;AAAA,SACxE,CAAA;AAAA,MACH,CAAA;AAEA,MAAA,MAAM,gBAAgB,CACpBhC,KAAAA,EACA,UACA8B,WAAAA,EACAC,gBAAAA,EACAC,mBACA,QAAA,KACG;AACH,QAAA,MAAM,KAAA,GAAQ,CAAC,QAAA,GACXhC,KAAAA,GACA,SAAA;AAAA,UACEA,KAAAA;AAAA,UACA8B,WAAAA;AAAA,UACAC,gBAAAA;AAAA,UACAC,iBAAAA;AAAA,UACA;AAAA,SACF;AAEJ,QAAA,OAAO,KAAA,CAAM,MAAM,IAAA,CAAK,GAAA,CAAI,GAAG,KAAA,CAAM,MAAA,GAAS,WAAW,CAAC,CAAA;AAAA,MAC5D,CAAA;AAEA,MAAA,MAAM,cAAA,GAAiBxH,gBAAQ,MAAM;AAInC,QAAA,IAAI,eAAe,IAAA,EAAM;AACvB,UAAA,OAAO,EAAC;AAAA,QACV;AAGA,QAAA,IAAI,gBAAA,KAAqB,IAAA,IAAQ,eAAA,KAAoB,IAAA,EAAM;AACzD,UAAA,OAAO,EAAC;AAAA,QACV;AACA,QAAA,OAAO,aAAA;AAAA,UACL,IAAA;AAAA,UACA,UAAA;AAAA,UACA,UAAA;AAAA,UACA,eAAA;AAAA,UACA,gBAAA;AAAA,UACA;AAAA,SACF;AAAA,MACF,CAAA,EAAG;AAAA,QACD,IAAA;AAAA,QACA,UAAA;AAAA,QACA,YAAA;AAAA,QACA,UAAA;AAAA,QACA,aAAA;AAAA,QACA,eAAA;AAAA,QACA,gBAAA;AAAA,QACA;AAAA,OACD,CAAA;AAED,MAAA,MAAM,gBAAA,GAAmBA,gBAAQ,MAAM;AACrC,QAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,cAAc,CAAA,IAAK,cAAA,CAAe,WAAW,CAAA,EAAG;AACjE,UAAA,OAAO,IAAA;AAAA,QACT;AAEA,QAAA,MAAM,QAAA,GAAW,cAAA,CACf,cAAA,CAAe,MAAA,GAAS,CAC1B,CAAA;AAKA,QAAA,IAAI,CAAC,SAAS,cAAA,EAAgB;AAC5B,UAAA,OAAO,IAAA;AAAA,QACT;AAEA,QAAA,MAAM,gBAAA,GACJ,OAAO,QAAA,CAAS,kBAAA,KAAuB,WACnC,QAAA,CAAS,kBAAA,GACR,SAAS,aAAA,IAAiB,CAAA;AAEjC,QAAA,IAAI,GAAA,GAAMiH,iBAAA;AACV,QAAA,IAAI,gBAAA,EAAkB;AACpB,UAAA,GAAA,GAAM,IAAItE,oBAAAA,CAAQ,QAAA,CAAS,GAAG,CAAA,CAAE,IAAI,gBAAgB,CAAA;AAAA,QACtD;AAEA,QAAA,OAAO;AAAA,UACL,KAAK,QAAA,CAAS,GAAA;AAAA,UACd,GAAA,EAAK,IAAI,QAAA,EAAS;AAAA,UAClB,GAAA,EAAK,SAAS,WAAA,IAAe;AAAA,SAC/B;AAAA,MACF,CAAA,EAAG,CAAC,cAAc,CAAC,CAAA;AAEnB,MAAA,MAAM,cAAA,GAAiB3C,gBAAQ,MAAM;AACnC,QAAA,IAAI,GAAA,GAAMiH,iBAAA;AACV,QAAA,IAAI,GAAA,GAAMA,iBAAA;AACV,QAAA,IAAI,GAAA,GAAMA,iBAAA;AAEV,QAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,cAAc,CAAA,IAAK,eAAe,MAAA,EAAQ;AAC1D,UAAA,cAAA,CAAe,OAAA,CAAQ,CAAC,CAAA,KAAM;AAC5B,YAAA,GAAA,GAAM,GAAA,CAAI,GAAA,CAAI,CAAA,CAAE,WAAA,IAAe,CAAC,CAAA;AAChC,YAAA,GAAA,GAAM,GAAA,CAAI,GAAA,CAAI,CAAA,CAAE,GAAG,CAAA;AAAA,UACrB,CAAC,CAAA;AAED,UAAA,MAAM,IAAA,GAAO,eAAe,CAAC,CAAA;AAE7B,UAAA,MAAM,aAAA,GAAgB,KAAK,SAAA,CAAU,CAAC,MAAM,CAAA,CAAE,IAAA,KAAS,KAAK,IAAI,CAAA;AAEhE,UAAA,MAAM,gBAAA,GAAmB,IAAA,CAAK,aAAA,GAAgB,CAAC,CAAA,EAAG,aAAA;AAElD,UAAA,IAAI,OAAO,gBAAA,KAAqB,WAAA,IAAe,gBAAA,KAAqB,CAAA,EAAG;AACrE,YAAA,GAAA,GAAMA,iBAAA;AAAA,UACR,CAAA,MAAO;AACL,YAAA,GAAA,GAAM,GAAA,CAAI,GAAA;AAAA,cACR,qBAAA,CAAsB,GAAA,CAAI,gBAAgB,CAAA,CAAE,IAAI,kBAAkB;AAAA,aACpE;AAAA,UACF;AAAA,QACF;AAEA,QAAA,OAAO,EAAE,GAAA,EAAK,GAAA,CAAI,QAAA,EAAS,EAAG,GAAA,EAAK,GAAA,CAAI,QAAA,EAAS,EAAG,GAAA,EAAK,GAAA,CAAI,QAAA,EAAS,EAAE;AAAA,MACzE,GAAG,CAAC,cAAA,EAAgB,IAAA,EAAM,qBAAA,EAAuB,kBAAkB,CAAC,CAAA;AAEpE,MAAA,MAAM,cAAA,GAAiB,CACrB,KAAA,EACA,GAAA,KACG;AACH,QAAA,OAAO,KAAA,CAAM,KAAK,EAAE,MAAA,EAAQ,GAAE,EAAG,CAAC,GAAG,CAAA,KAAM;AACzC,UAAA,MAAM,IAAA,GAAOH,eAAO,CAAA,KAAM,CAAA,GAAI,4BAAY,IAAI,IAAA,IAAQ,YAAY,CAAA;AAClE,UAAA,OAAO,EAAE,IAAA,EAAM,GAAI,CAAA,KAAM,CAAA,GAAI,QAAQ,GAAA,EAAK;AAAA,QAC5C,CAAC,CAAA;AAAA,MACH,CAAA;AAEA,MAAA,OAAO;AAAA,QACL,WAAA;AAAA,QACA,MAAA;AAAA,QACA,cAAA;AAAA,QACA,WAAA;AAAA,QACA,WAAW,MAAA,GACP,WAAA,CAAY,MAAoB,CAAA,GAChC,uBAAA,CAAwB,WAAW,OAAO,CAAA;AAAA;AAAA,QAE9C,IAAA,EAAM,cAAA;AAAA;AAAA,QACN,cAAA;AAAA,QACA,cAAA;AAAA,QACA,kBAAkB,IAAA,GAAO,IAAA,CAAK,MAAA,GAAS,CAAC,GAAG,IAAA,IAAQ,EAAA;AAAA,QACnD,gBAAA;AAAA,QACA,WAAA;AAAA,QACA,QAAA;AAAA,QACA,SAAA;AAAA,QACA;AAAA,OACF;AAAA,IACF,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACloBA,IAAA,oBAAA,GAAA,EAAA;AAAA,QAAA,CAAA,oBAAA,EAAA;AAAA,EAAA,WAAA,EAAA,MAAA;AAAA,CAAA,CAAA;AAAA,IAKa,WAAA;AALb,IAAA,iBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,4CAAA,GAAA;AAGA,IAAA,oBAAA,EAAA;AAEO,IAAM,WAAA,GAOR,CAAC,KAAA,KAAU;AACd,MAAA,MAAM,EAAE,CAAA,EAAE,GAAI3F,0BAAAA,EAAe;AAE7B,MAAA,MAAM,WAAA,GAAcnB,gBAAQ,MAAM;AAChC,QAAA,OAAO;AAAA,UACL,CAAA,IAAA,aAAkB,CAAA,CAAE,kBAAkB,CAAA;AAAA,UACtC,CAAA,IAAA,cAAmB,CAAA,CAAE,kBAAkB,CAAA;AAAA,UACvC,CAAA,KAAA,eAAoB,CAAA,CAAE,mBAAmB,CAAA;AAAA,UACzC,CAAA,KAAA,iBAAsB,CAAA,CAAE,mBAAmB;AAAA,SAC7C;AAAA,MACF,CAAA,EAAG,CAAC,CAAC,CAAC,CAAA;AAEN,MAAA,MAAM,WAAA,GAAc;AAAA,QAAA,IAAA;AAAA,QAAA,IAAA;AAAA,QAAA,KAAA;AAAA,QAAA,KAAA;AAAA,OAKpB;AAEA,MAAA,uBACEoB,eAAAA,CAACC,cAAAA,EAAA,EAAK,SAAA,EAAW,QAAA,EAAU,SAAS,SAAA,EAClC,QAAA,EAAA;AAAA,wBAAApB,cAAAA,CAACqB,mBAAAA,EAAA,EAAW,QAAA,EAAA,KAAA,CAAM,KAAA,EAAM,CAAA;AAAA,wBACxBF,eAAAA,CAACC,cAAAA,EAAA,EAAK,GAAA,EAAK,CAAA,EAAG,WAAU,QAAA,EACrB,QAAA,EAAA;AAAA,UAAA,KAAA,CAAM,WAAA,IAAe,KAAA,CAAM,WAAA,CAAY,MAAA,GAAS,qBAC/CpB,cAAAA;AAAA,YAAC2D,oBAAAA;AAAA,YAAA;AAAA,cACC,OAAO,KAAA,CAAM,WAAA;AAAA,cACb,QAAA,EAAU,KAAA,CAAM,QAAA,KAAa,MAAM;AAAA,cAAC,CAAA,CAAA;AAAA,cACpC,SAAA,EAAU;AAAA;AAAA,WACZ;AAAA,UAED,WAAA,CAAY,GAAA,CAAI,CAAC,UAAA,qBAChB3D,cAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cAEC,WAAW,CAAA,uEAAA,EACT,KAAA,CAAM,MAAA,KAAW,UAAA,GACb,kCACA,0FACN,CAAA,CAAA;AAAA,cACA,OAAA,EAAS,MAAM,KAAA,CAAM,cAAA,CAAe,UAAU,CAAA;AAAA,cAE7C,sBAAY,UAAU;AAAA,aAAA;AAAA,YARlB;AAAA,WAUR;AAAA,SAAA,EACH;AAAA,OAAA,EACF,CAAA;AAAA,IAEJ,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;AC1DA,IAOM,eAAA,EAQO,WAAA;AAfb,IAAA,mBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,kDAAA,GAAA;AAOA,IAAM,kBAAkB6E,wBAAAA,CAAM,IAAA;AAAA,MAAK,MACjC,OAAA,CAAA,OAAA,EAAA,CAAA,IAAA,CAAA,OAAA,iBAAA,EAAA,EAAA,oBAAA,CAAA,CAAA,CAAiC,IAAA,CAAK,CAAC,GAAA,KAAQ;AAC7C,QAAA,OAAO,EAAE,OAAA,EAAS,GAAA,CAAI,WAAA,EAAY;AAAA,MACpC,CAAC;AAAA,KACH;AAIO,IAAM,WAAA,GAA8C,CAAC,KAAA,KAAU;AACpE,MAAA,MAAM,EAAE,cAAA,EAAgB,IAAA,EAAM,aAAa,MAAA,EAAQ,WAAA,EAAa,UAAS,GACvE,KAAA;AACF,MAAA,MAAM,EAAE,CAAA,EAAE,GAAI3D,0BAAAA,EAAe;AAC7B,MAAA,uBACElB,cAAAA;AAAA,QAAC0B,cAAAA;AAAA,QAAA;AAAA,UACC,KAAA,kBACE1B,cAAAA,CAACyH,aAAAA,EAAA,EACC,QAAA,kBAAAzH,cAAAA,CAAC6E,wBAAAA,CAAM,QAAA,EAAN,EAAe,QAAA,EAAU,IAAA,EACxB,QAAA,kBAAA7E,cAAAA;AAAA,YAAC,eAAA;AAAA,YAAA;AAAA,cACC,cAAA;AAAA,cACA,WAAA;AAAA,cACA,MAAA;AAAA,cACA,KAAA,EAAO,EAAE,eAAe,CAAA;AAAA,cACxB,WAAA;AAAA,cACA;AAAA;AAAA,aAEJ,CAAA,EACF,CAAA;AAAA,UAEF,EAAA,EAAG,iCAAA;AAAA,UACH,UAAA,EAAY,EAAE,OAAA,EAAS,wBAAA,EAAyB;AAAA,UAEhD,QAAA,kBAAAA,cAAAA,CAAC6E,wBAAAA,CAAM,QAAA,EAAN,EAAe,QAAA,EAAU,IAAA,EACxB,QAAA,kBAAA7E,cAAAA,CAAC0H,2BAAA,EAAA,EAAe,IAAA,EAAmB,SAAA,EAAW,KAAA,CAAM,WAAW,CAAA,EACjE;AAAA;AAAA,OACF;AAAA,IAEJ,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;AC3CA,IAIa,iBAAA;AAJb,IAAA,uBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,sDAAA,GAAA;AACA,IAAA,uBAAA,EAAA;AACA,IAAA,mBAAA,EAAA;AAEO,IAAM,oBAA8B,MAAM;AAC/C,MAAA,MAAM,QAAQ,oBAAA,EAAqB;AACnC,MAAA,uBAAO1H,cAAAA,CAAC,WAAA,EAAA,EAAa,GAAG,KAAA,EAAO,CAAA;AAAA,IACjC,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACPA,IAAA,kBAAA,GAAA,EAAA;AAAA,QAAA,CAAA,kBAAA,EAAA;AAAA,EAAA,WAAA,EAAA,MAAA,WAAA;AAAA,EAAA,iBAAA,EAAA,MAAA,iBAAA;AAAA,EAAA,oBAAA,EAAA,MAAA;AAAA,CAAA,CAAA;AAAA,IAAA,eAAA,GAAA,KAAA,CAAA;AAAA,EAAA,wCAAA,GAAA;AAAA,IAAA,uBAAA,EAAA;AACA,IAAA,uBAAA,EAAA;AACA,IAAA,mBAAA,EAAA;AAAA,EAAA;AAAA,CAAA,CAAA;ACFA,IAwBM2H,gBAAAA,EAuBA,aAAA,EAyEO,kBAAA,EA2CA,WAAA,EAmCA,aAAA;AAtMb,IAAA,mBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,mDAAA,GAAA;AAwBA,IAAMA,mBAAkB9C,wBAAAA,CAAM,IAAA;AAAA,MAAK,MACjC,OAAA,CAAA,OAAA,EAAA,CAAA,IAAA,CAAA,OAAA,iBAAA,EAAA,EAAA,oBAAA,CAAA,CAAA,CAAiC,IAAA,CAAK,CAAC,GAAA,KAAQ;AAC7C,QAAA,OAAO,EAAE,OAAA,EAAS,GAAA,CAAI,WAAA,EAAY;AAAA,MACpC,CAAC;AAAA,KACH;AAmBA,IAAM,aAAA,GAA8C,CAAC,KAAA,KAAU;AAC7D,MAAA,MAAM,EAAE,KAAA,EAAO,IAAA,EAAK,GAAI,KAAA;AACxB,MAAA,uBACE7E,cAAAA;AAAA,QAACqC,iBAAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAM,OAAO,MAAA,GAAY,KAAA;AAAA,UACzB,OAAA,EAAS,IAAA;AAAA,UACT,SAAA,EAAU,kCAAA;AAAA,UACV,KAAA,EAAO,EAAE,SAAA,EAAW,iBAAA,EAAkB;AAAA,UACtC,aAAA,EAAe,GAAA;AAAA,UAEf,QAAA,kBAAArC,cAAAA;AAAA,YAAC6B,cAAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,IAAA;AAAA,cACL,SAAA,EAAW,EAAA;AAAA,cACX,SAAA,EAAWkD,YAAAA;AAAA,gBACT,IAAA,IACE;AAAA,eACJ;AAAA,cAEC,QAAA,EAAA;AAAA;AAAA;AACH;AAAA,OACF;AAAA,IAEJ,CAAA;AAmDO,IAAM,kBAAA,GAGR,CAAC,KAAA,KAAU;AACd,MAAA,MAAM,EAAE,CAAA,EAAE,GAAI7D,0BAAAA,EAAe;AAC7B,MAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIpB,iBAAS,OAAO,CAAA;AAElD,MAAA,uBACEE,cAAAA,CAACyH,aAAAA,EAAA,EAAI,IAAI,CAAA,EACP,QAAA,kBAAAtG,eAAAA,CAAC+D,cAAAA,EAAA,EAAK,KAAA,EAAO,SAAA,EAAW,aAAA,EAAe,YAAA,EAAc,SAAQ,WAAA,EAC3D,QAAA,EAAA;AAAA,wBAAAlF,cAAAA;AAAA,UAACmF,kBAAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAM,OAAA;AAAA,YACN,KAAA,EAAO,EAAE,yCAAyC,CAAA;AAAA,YAElD,QAAA,kBAAAnF,cAAAA;AAAA,cAACyH,aAAAA;AAAA,cAAA;AAAA,gBACC,CAAA,EAAE,IAAA;AAAA,gBACF,SAAA,EAAU,qDAAA;AAAA,gBAEV,QAAA,kBAAAzH,cAAAA;AAAA,kBAAC4H,wBAAA;AAAA,kBAAA;AAAA,oBACC,MAAM,KAAA,CAAM,IAAA;AAAA,oBACZ,WAAW,KAAA,CAAM,SAAA,IAAA,CAAc,KAAA,CAAM,IAAA,EAAM,UAAU,CAAA,KAAM;AAAA;AAAA;AAC7D;AAAA;AACF;AAAA,SACF;AAAA,wBACA5H,cAAAA;AAAA,UAACmF,kBAAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAM,YAAA;AAAA,YACN,KAAA,EAAO,EAAE,8CAA8C,CAAA;AAAA,YAEvD,QAAA,kBAAAnF,cAAAA;AAAA,cAACyH,aAAAA;AAAA,cAAA;AAAA,gBACC,CAAA,EAAE,IAAA;AAAA,gBACF,SAAA,EAAU,qDAAA;AAAA,gBAEV,QAAA,kBAAAzH,cAAAA;AAAA,kBAAC6H,yBAAA;AAAA,kBAAA;AAAA,oBACC,MAAM,KAAA,CAAM,IAAA;AAAA,oBACZ,WAAW,KAAA,CAAM,SAAA,IAAA,CAAc,KAAA,CAAM,IAAA,EAAM,UAAU,CAAA,KAAM;AAAA;AAAA;AAC7D;AAAA;AACF;AAAA;AACF,OAAA,EACF,CAAA,EACF,CAAA;AAAA,IAEJ,CAAA;AAEO,IAAM,WAAA,GAIR,CAAC,KAAA,KAAU;AACd,MAAA,MAAM,EAAE,CAAA,EAAE,GAAI3G,0BAAAA,EAAe;AAE7B,MAAA,MAAM,cAAc,KAAA,CAAM,IAAA,IAAQ,EAAC,EAAG,GAAA,CAAI,CAAC,IAAA,MAAe;AAAA,QACxD,MAAM,IAAA,CAAK,IAAA;AAAA,QACX,MAAA,EAAQ,KAAK,WAAA,IAAe,CAAA;AAAA,QAC5B,OAAA,EAAA,CAAU,IAAA,CAAK,WAAA,IAAe,CAAA,IAAK,IAAI,CAAA,GAAI;AAAA,OAC7C,CAAE,CAAA;AAEF,MAAA,MAAM,aAAa,KAAA,CAAM,SAAA,IAAA,CAAc,KAAA,CAAM,IAAA,EAAM,UAAU,CAAA,KAAM,CAAA;AAEnE,MAAA,uBACEC,eAAAA,CAACsG,aAAAA,EAAA,EAAI,IAAI,CAAA,EACP,QAAA,EAAA;AAAA,wBAAAzH,cAAAA,CAAC6B,cAAAA,EAAA,EAAK,EAAA,EAAG,KAAA,EAAM,MAAK,IAAA,EAAK,SAAA,EAAU,UAAA,EAChC,QAAA,EAAA,CAAA,CAAE,uCAAA,EAAyC;AAAA,UAC1C,MAAA,EAAQ,MAAM,SAAA,IAAa;AAAA,SAC5B,CAAA,EACH,CAAA;AAAA,wBACA7B,cAAAA;AAAA,UAACyH,aAAAA;AAAA,UAAA;AAAA,YACC,CAAA,EAAE,IAAA;AAAA,YACF,SAAA,EAAW1C,YAAAA;AAAA,cACT,qDAAA;AAAA,cACA,UAAA,IAAc;AAAA,aAChB;AAAA,YAEA,0BAAA/E,cAAAA,CAAC8H,wBAAA,EAAA,EAAY,IAAA,EAAM,UAAA,EAAY,WAAU,eAAA,EAAgB;AAAA;AAAA;AAC3D,OAAA,EACF,CAAA;AAAA,IAEJ,CAAA;AAEO,IAAM,aAAA,GAA8C,CAAC,KAAA,KAAU;AACpE,MAAA,MAAM;AAAA,QACJ,WAAA;AAAA,QACA,MAAA;AAAA,QACA,cAAA;AAAA,QACA,cAAA;AAAA,QACA,SAAA;AAAA,QACA,OAAA;AAAA,QACA,SAAA;AAAA,QACA,WAAA;AAAA,QACA;AAAA,OACF,GAAI,KAAA;AACJ,MAAA,MAAM,EAAE,CAAA,EAAE,GAAI5G,0BAAAA,EAAe;AAE7B,MAAA,uBACElB,cAAAA;AAAA,QAAC0B,cAAAA;AAAA,QAAA;AAAA,UACC,KAAA,kBACE1B,cAAAA,CAACyH,aAAAA,EAAA,EAAI,EAAA,EAAI,CAAA,EACP,QAAA,kBAAAzH,cAAAA,CAAC6E,wBAAAA,CAAM,QAAA,EAAN,EAAe,QAAA,EAAU,MACxB,QAAA,kBAAA7E,cAAAA;AAAA,YAAC2H,gBAAAA;AAAA,YAAA;AAAA,cACC,cAAA;AAAA,cACA,WAAA;AAAA,cACA,MAAA;AAAA,cACA,KAAA,EAAO,EAAE,gCAAgC,CAAA;AAAA,cACzC,WAAA;AAAA,cACA;AAAA;AAAA,aAEJ,CAAA,EACF,CAAA;AAAA,UAEF,EAAA,EAAG,gCAAA;AAAA,UAEH,QAAA,kBAAAxG,eAAAA,CAACsG,aAAAA,EAAA,EAAI,IAAI,CAAA,EACP,QAAA,EAAA;AAAA,4BAAAtG,gBAACiB,cAAAA,EAAA,EAAK,IAAA,EAAM,CAAA,EAAG,KAAK,CAAA,EAClB,QAAA,EAAA;AAAA,8BAAApC,cAAAA;AAAA,gBAACyH,aAAAA;AAAA,gBAAA;AAAA,kBACC,QAAA,EAAS,SAAA;AAAA,kBACT,CAAA,EAAE,IAAA;AAAA,kBACF,EAAA,EAAI,CAAA;AAAA,kBACJ,EAAA,EAAI,CAAA;AAAA,kBACJ,KAAA,EAAO,GAAA;AAAA,kBACP,MAAA,EAAM,IAAA;AAAA,kBACN,WAAA,EAAa,CAAA;AAAA,kBAEb,QAAA,kBAAAzH,cAAAA;AAAA,oBAAC4B,mBAAAA;AAAA,oBAAA;AAAA,sBACC,uBACE5B,cAAAA;AAAA,wBAAC,aAAA;AAAA,wBAAA;AAAA,0BACC,KAAA,EAAO,EAAE,oCAAA,EAAsC;AAAA,4BAC7C,MAAA,EAAQ;AAAA,2BACT,CAAA;AAAA,0BACD,IAAA,EAAM,EAAE,4CAA4C;AAAA;AAAA,uBACtD;AAAA,sBAEF,YAAY,EAAE,IAAA,EAAM,aAAA,EAAe,QAAA,EAAU,MAAM,OAAA,EAAQ;AAAA,sBAE1D,QAAA,EAAA,SAAA,GAAY,OAAO,cAAA,CAAe;AAAA;AAAA;AACrC;AAAA,eACF;AAAA,8BACAA,cAAAA;AAAA,gBAACyH,aAAAA;AAAA,gBAAA;AAAA,kBACC,QAAA,EAAS,SAAA;AAAA,kBACT,CAAA,EAAE,IAAA;AAAA,kBACF,EAAA,EAAI,CAAA;AAAA,kBACJ,EAAA,EAAI,CAAA;AAAA,kBACJ,KAAA,EAAO,GAAA;AAAA,kBACP,MAAA,EAAM,IAAA;AAAA,kBACN,WAAA,EAAa,CAAA;AAAA,kBAEb,QAAA,kBAAAzH,cAAAA;AAAA,oBAAC4B,mBAAAA;AAAA,oBAAA;AAAA,sBACC,uBACE5B,cAAAA;AAAA,wBAAC,aAAA;AAAA,wBAAA;AAAA,0BACC,KAAA,EAAO,EAAE,oCAAA,EAAsC;AAAA,4BAC7C,MAAA,EAAQ;AAAA,2BACT,CAAA;AAAA,0BACD,IAAA,EAAM,EAAE,4CAA4C;AAAA;AAAA,uBACtD;AAAA,sBAEF,YAAY,EAAE,QAAA,EAAU,IAAA,EAAM,cAAA,EAAgB,MAAM,OAAA,EAAQ;AAAA,sBAE3D,QAAA,EAAA,SAAA,GAAY,OAAO,cAAA,CAAe;AAAA;AAAA;AACrC;AAAA,eACF;AAAA,8BACAA,cAAAA;AAAA,gBAACyH,aAAAA;AAAA,gBAAA;AAAA,kBACC,QAAA,EAAS,SAAA;AAAA,kBACT,CAAA,EAAE,IAAA;AAAA,kBACF,EAAA,EAAI,CAAA;AAAA,kBACJ,EAAA,EAAI,CAAA;AAAA,kBACJ,KAAA,EAAO,GAAA;AAAA,kBACP,MAAA,EAAM,IAAA;AAAA,kBACN,WAAA,EAAa,CAAA;AAAA,kBAEb,QAAA,kBAAAzH,cAAAA;AAAA,oBAAC4B,mBAAAA;AAAA,oBAAA;AAAA,sBACC,UAAA,EAAY;AAAA,wBACV,KAAA,EAAO;AAAA,uBACT;AAAA,sBACA,uBACE5B,cAAAA;AAAA,wBAAC,aAAA;AAAA,wBAAA;AAAA,0BACC,KAAA,EAAO,EAAE,uCAAA,EAAyC;AAAA,4BAChD,MAAA,EAAQ;AAAA,2BACT,CAAA;AAAA,0BACD,IAAA,EAAM,EAAE,+CAA+C;AAAA;AAAA,uBACzD;AAAA,sBAEF,UAAA,EAAY,EAAE,OAAA,EAAQ;AAAA,sBAErB,QAAA,EAAA,SAAA,GAAY,OAAO,cAAA,CAAe;AAAA;AAAA;AACrC;AAAA;AACF,aAAA,EACF,CAAA;AAAA,4BACAmB,gBAACiB,cAAAA,EAAA,EAAK,MAAM,CAAA,EAAG,GAAA,EAAK,CAAA,EAAG,EAAA,EAAI,CAAA,EACzB,QAAA,EAAA;AAAA,8BAAApC,cAAAA;AAAA,gBAAC,kBAAA;AAAA,gBAAA;AAAA,kBACC,IAAA,EAAM,MAAM,IAAA,IAAQwF,uBAAAA;AAAA,kBACpB,WAAW,KAAA,CAAM;AAAA;AAAA,eACnB;AAAA,8BACAxF,cAAAA;AAAA,gBAAC,WAAA;AAAA,gBAAA;AAAA,kBACC,IAAA,EAAM,MAAM,IAAA,IAAQwF,uBAAAA;AAAA,kBACpB,WAAW,KAAA,CAAM,SAAA;AAAA,kBACjB,WAAW,KAAA,CAAM;AAAA;AAAA;AACnB,aAAA,EACF;AAAA,WAAA,EACF;AAAA;AAAA,OACF;AAAA,IAEJ,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC/TA,IAqCa,0BAAA;AArCb,IAAA,SAAA,GAAA,KAAA,CAAA;AAAA,EAAA,0BAAA,GAAA;AAqCO,IAAM,0BAAA,GAA6B,wBAAA;AAAA,EAAA;AAAA,CAAA,CAAA;ACrC1C,IAOa,oBAAA;AAPb,IAAA,uBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,sDAAA,GAAA;AAIA,IAAA,SAAA,EAAA;AACA,IAAA,oBAAA,EAAA;AAEO,IAAM,uBAAuB,MAAM;AACxC,MAAA,MAAM,MAAM,kBAAA,EAAmB;AAC/B,MAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIjF,4BAAAA;AAAA,QAC5B,0BAAA;AAAA,QACA;AAAA,OACF;AAEA,MAAA,MAAM,EAAE,YAAA,EAAc,eAAA,EAAgB,GAAIH,6BAAAA,EAAc;AACxD,MAAA,MAAM,EAAE,KAAA,EAAM,GAAIF,uBAAAA,EAAW;AAC7B,MAAA,MAAM,YAAA,GAAeuG,0BAAAA,CAAW,GAAA,EAAK,IAAA,EAAM;AAAA,QACzC,eACE,KAAA,CAAM,MAAA,KAAW9F,+BAAkB,6BAAA,GAC/BA,8BAAAA,CAAkB,gCAClBA,8BAAAA,CAAkB,aAAA;AAAA,QACxB,cAAc,GAAA,EAAK,cAAA;AAAA,UACjB,EAAE,aAAA,EAAe,CAAA,EAAG,GAAA,EAAK,CAAA,EAAE;AAAA,UAC3B,EAAE,aAAA,EAAe,GAAA,EAAK,GAAA,EAAK,GAAA;AAAI;AACjC,OACD,CAAA;AAED,MAAA,MAAM,KAAA,GAAQZ,gBAAQ,MAAM;AAC1B,QAAA,IAAI,cAAc,MAAA,EAAQ;AACxB,UAAA,OAAO,YAAA;AAAA,QACT;AACA,QAAA,OAAO,GAAA,EAAK,cAAA;AAAA,UACV,EAAE,aAAA,EAAe,CAAA,EAAG,GAAA,EAAK,CAAA,EAAE;AAAA,UAC3B,EAAE,aAAA,EAAe,GAAA,EAAK,GAAA,EAAK,GAAA;AAAI,SACjC;AAAA,MACF,CAAA,EAAG,CAAC,GAAA,EAAK,YAAY,CAAC,CAAA;AAEtB,MAAA,MAAM,SAAA,GACJ,gBACA,eAAA,IACC,KAAA,CAAM,SAASY,8BAAAA,CAAkB,aAAA,IAChC,KAAA,CAAM,MAAA,KAAWA,8BAAAA,CAAkB,6BAAA;AAEvC,MAAA,OAAO;AAAA,QACL,GAAG,GAAA;AAAA,QACH,IAAA,EAAM,KAAA;AAAA,QACN,SAAA;AAAA,QACA,OAAA;AAAA,QACA;AAAA,OACF;AAAA,IACF,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;AClDA,IAIa,iBAAA;AAJb,IAAA,uBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,uDAAA,GAAA;AACA,IAAA,uBAAA,EAAA;AACA,IAAA,mBAAA,EAAA;AAEO,IAAM,oBAA8B,MAAM;AAC/C,MAAA,MAAM,QAAQ,oBAAA,EAAqB;AACnC,MAAA,uBAAOX,cAAAA,CAAC,aAAA,EAAA,EAAe,GAAG,KAAA,EAAO,CAAA;AAAA,IACnC,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACPA,IAAA,mBAAA,GAAA,EAAA;AAAA,QAAA,CAAA,mBAAA,EAAA;AAAA,EAAA,aAAA,EAAA,MAAA,aAAA;AAAA,EAAA,iBAAA,EAAA,MAAA,iBAAA;AAAA,EAAA,oBAAA,EAAA,MAAA;AAAA,CAAA,CAAA;AAAA,IAAA,gBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,yCAAA,GAAA;AAAA,IAAA,mBAAA,EAAA;AACA,IAAA,uBAAA,EAAA;AACA,IAAA,uBAAA,EAAA;AAAA,EAAA;AAAA,CAAA,CAAA;ACFA,IAEa,YAAA;AAFb,IAAA,iBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,0CAAA,GAAA;AAEO,IAAM,YAAA,GAAe6E,wBAAAA,CAAM,UAAA,CAGhC,CAAC,OAAO,GAAA,KAAQ;AAChB,MAAA,MAAM,WAAWkD,aAAAA,EAAM;AACvB,MAAA,uBACE5G,eAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAM,4BAAA;AAAA,UACN,KAAA,EAAO,EAAA;AAAA,UACP,MAAA,EAAQ,EAAA;AAAA,UACR,OAAA,EAAQ,WAAA;AAAA,UACR,IAAA,EAAK,cAAA;AAAA,UACL,GAAA;AAAA,UACA,SAAA,EAAW,KAAA;AAAA,UACV,GAAG,KAAA;AAAA,UAEJ,QAAA,EAAA;AAAA,4BAAAnB,cAAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,CAAA,EAAE,k5EAAA;AAAA,gBACF,IAAA,EAAM,QAAQ,QAAQ,CAAA,CAAA;AAAA;AAAA,aACxB;AAAA,4BACAA,cAAAA,CAAC,MAAA,EAAA,EACC,QAAA,kBAAAmB,eAAAA;AAAA,cAAC,gBAAA;AAAA,cAAA;AAAA,gBACC,EAAA,EAAI,QAAA;AAAA,gBACJ,EAAA,EAAG,SAAA;AAAA,gBACH,EAAA,EAAG,SAAA;AAAA,gBACH,EAAA,EAAG,QAAA;AAAA,gBACH,EAAA,EAAG,SAAA;AAAA,gBACH,aAAA,EAAc,gBAAA;AAAA,gBAEd,QAAA,EAAA;AAAA,kCAAAnB,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,oCAAA,EAAqC,CAAA;AAAA,kCACrDA,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,sCAAA,EAAuC,QAAQ,CAAA,EAAG;AAAA;AAAA;AAAA,aACpE,EACF;AAAA;AAAA;AAAA,OACF;AAAA,IAEJ,CAAC,CAAA;AAED,IAAA,IAAI,OAAA,CAAQ,GAAA,CAAI,QAAA,KAAa,YAAA,EAAc;AACzC,MAAA,YAAA,CAAa,WAAA,GAAc,cAAA;AAAA,IAC7B;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACzCA,IAAA,UAAA,GAAA,KAAA,CAAA;AAAA,EAAA,kCAAA,GAAA;AAAA,IAAA,iBAAA,EAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACAA,IAAA,qBAAA,GAAA,EAAA;AAAA,QAAA,CAAA,qBAAA,EAAA;AAAA,EAAA,iBAAA,EAAA,MAAA,iBAAA;AAAA,EAAA,aAAA,EAAA,MAAA,aAAA;AAAA,EAAA,gBAAA,EAAA,MAAA;AAAA,CAAA,CAAA;AAAA,IAqDM,WAAA,EAGA,kBAAA,EAMA,eAAA,EAIA,iBAAA,EAOA,QAAA,EAYA,cAmCA,YAAA,EAwBA,YAAA,EAwFA,kBAAA,EA2BO,gBAAA,EAmEA,iBAAA,EAiFA,aAAA;AAvZb,IAAA,kBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,qCAAA,GAAA;AAgBA,IAAA,YAAA,EAAA;AAEA,IAAA,UAAA,EAAA;AAmCA,IAAM,cAAc,CAAC,GAAA,KACnB,OAAO,GAAA,KAAQ,eAAe,GAAA,KAAQ,IAAA;AAExC,IAAM,kBAAA,GAAqB,CAAC,IAAA,KAAkB;AAC5C,MAAA,IAAI,IAAA,KAAS,MAAA,IAAa,IAAA,KAAS,IAAA,EAAM,OAAO,IAAA;AAChD,MAAA,MAAM,UAAA,GAAa,IAAA,IAAQ,CAAA,GAAI,IAAI0C,oBAAAA,CAAQ,IAAI,CAAA,CAAE,GAAA,CAAI,GAAG,CAAA,GAAI,IAAIA,oBAAAA,CAAQ,IAAI,CAAA;AAC5E,MAAA,OAAO,CAAA,EAAG,UAAA,CAAW,OAAA,CAAQ,CAAC,CAAC,CAAA,CAAA,CAAA;AAAA,IACjC,CAAA;AAEA,IAAM,eAAA,GAAkB,CAAC,OAAA,KAAgC;AACvD,MAAA,OAAO,OAAA,EAAS,IAAA,IAAQ,OAAA,EAAS,IAAA,IAAQ,IAAA;AAAA,IAC3C,CAAA;AAEA,IAAM,iBAAA,GAAoB,CAAC,KAAA,KAA4B;AACrD,MAAA,IAAI,UAAU,MAAA,IAAa,KAAA,KAAU,IAAA,IAAQ,KAAA,KAAU,IAAI,OAAO,IAAA;AAClE,MAAA,MAAM,UAAU,OAAO,KAAA,KAAU,QAAA,GAAW,MAAA,CAAO,KAAK,CAAA,GAAI,KAAA;AAC5D,MAAA,IAAI,CAAC,MAAA,CAAO,QAAA,CAAS,OAAO,CAAA,EAAG,OAAO,OAAO,KAAK,CAAA;AAClD,MAAA,OAAOsF,+BAAA,CAAmB,SAAS,CAAC,CAAA;AAAA,IACtC,CAAA;AAEA,IAAM,QAAA,GAAW,CACf,IAAA,EACA,KAAA,EACA,aAAA,KACG;AACH,MAAA,IAAI,IAAA,CAAK,UAAA,CAAW,GAAG,CAAA,IAAK,aAAA,EAAe;AACzC,QAAA,aAAA,CAAc,aAAA,CAAc,EAAE,IAAA,EAAM,IAAA,EAAM,OAAO,CAAA;AACjD,QAAA;AAAA,MACF;AACA,MAAA,MAAA,CAAO,IAAA,CAAK,IAAA,EAAM,QAAA,EAAU,qBAAqB,CAAA;AAAA,IACnD,CAAA;AAEA,IAAM,YAAA,GAED,CAAC,KAAA,KAAU;AACd,MAAA,MAAM,EAAE,SAAQ,GAAI,KAAA;AACpB,MAAA,MAAM,EAAE,CAAA,EAAE,GAAI9G,0BAAAA,EAAe;AAC7B,MAAA,MAAM,EAAE,QAAA,EAAS,GAAIV,mBAAAA,EAAU;AAC/B,MAAA,MAAM,QAAA,GAAW,kBAAA,CAAmB,OAAA,EAAS,YAAY,CAAA;AACzD,MAAA,MAAM,KAAA,GAAQ,gBAAgB,OAAO,CAAA;AAErC,MAAA,uBACEW,eAAAA;AAAA,QAACC,cAAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAU,QAAA;AAAA,UACV,SAAA,EAAW,CAAA,EAAG,QAAA,GAAW,WAAA,GAAc,WAAW,CAAA,cAAA,CAAA;AAAA,UAEjD,QAAA,EAAA;AAAA,YAAA,OAAA,EAAS,iCACRpB,cAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,KAAK,OAAA,CAAQ,aAAA;AAAA,gBACb,GAAA,EAAK,GAAG,KAAK,CAAA,MAAA,CAAA;AAAA,gBACb,SAAA,EAAU;AAAA;AAAA,aACZ;AAAA,4BAEFA,cAAAA,CAAC6B,cAAAA,CAAK,QAAA,EAAL,EAAc,KAAA,EAAO,OAAA,EAAS,IAAA,EAAM,QAAA,GAAW,IAAA,GAAO,MAAA,EACpD,QAAA,EAAA,KAAA,EACH,CAAA;AAAA,YACC,QAAA,oBACC7B,cAAAA,CAACyH,aAAAA,EAAA,EAAI,SAAA,EAAU,oDAAA,EACb,0BAAAzH,cAAAA,CAAC6B,cAAAA,EAAA,EAAK,IAAA,EAAK,KAAA,EAAM,WAAW,EAAA,EACzB,QAAA,EAAA,CAAA,CAAE,kCAAkC,EAAE,QAAA,EAAU,CAAA,EACnD,CAAA,EACF;AAAA;AAAA;AAAA,OAEJ;AAAA,IAEJ,CAAA;AAEA,IAAM,YAAA,GAGD,CAAC,KAAA,KAAU;AACd,MAAA,MAAM,EAAE,CAAA,EAAE,GAAIX,0BAAAA,EAAe;AAC7B,MAAA,MAAM,QAAA,GAAW,kBAAA,CAAmB,KAAA,CAAM,YAAY,CAAA;AACtD,MAAA,uBACElB,cAAAA,CAACoB,cAAAA,EAAA,EAAK,SAAA,EAAU,UAAS,SAAA,EAAU,WAAA,EACjC,QAAA,kBAAAD,eAAAA,CAACC,gBAAA,EAAK,SAAA,EAAU,UAAS,GAAA,EAAK,CAAA,EAAG,WAAU,eAAA,EACzC,QAAA,EAAA;AAAA,wBAAApB,cAAAA,CAAC6B,eAAK,QAAA,EAAL,EAAc,OAAO,OAAA,EAAS,IAAA,EAAK,MAAA,EACjC,QAAA,EAAA,KAAA,CAAM,IAAA,EACT,CAAA;AAAA,QACC,QAAA,oBACC7B,cAAAA,CAACyH,aAAAA,EAAA,EAAI,SAAA,EAAU,oDAAA,EACb,0BAAAzH,cAAAA,CAAC6B,cAAAA,EAAA,EAAK,IAAA,EAAK,KAAA,EAAM,WAAW,EAAA,EACzB,QAAA,EAAA,CAAA,CAAE,kCAAkC,EAAE,QAAA,EAAU,CAAA,EACnD,CAAA,EACF;AAAA,OAAA,EAEJ,CAAA,EACF,CAAA;AAAA,IAEJ,CAAA;AAEA,IAAM,YAAA,GAMD,CAAC,KAAA,KAAU;AACd,MAAA,MAAM;AAAA,QACJ,QAAA;AAAA,QACA,WAAA;AAAA,QACA,aAAA;AAAA,QACA,gBAAA;AAAA,QACA,IAAA,GAAO;AAAA,OACT,GAAI,KAAA;AACJ,MAAA,MAAM,EAAE,QAAA,EAAS,GAAIrB,mBAAAA,EAAU;AAE/B,MAAA,IAAI,UAAA,GAAa,KAAA;AACjB,MAAA,IAAI,aAAA,GAAgB,KAAA;AACpB,MAAA,MAAM,aAAA,GAAgB,CAAC,KAAA,KAAmB;AACxC,QAAA,IAAI,CAAC,KAAA,IAAS,KAAA,KAAU,GAAA,IAAO,KAAA,KAAU,MAAM,OAAO,IAAA;AACtD,QAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,KAAA,CAAM,iBAAiB,CAAA;AAC3C,QAAA,IAAI,CAAC,OAAO,OAAO,IAAA;AACnB,QAAA,MAAM,GAAA,GAAM,IAAIkC,oBAAAA,CAAQ,KAAA,CAAM,CAAC,CAAC,CAAA;AAChC,QAAA,IAAI,KAAA,CAAM,QAAA,CAAS,GAAG,CAAA,EAAG;AACvB,UAAA,OAAO,EAAE,QAAA,EAAU,GAAA,CAAI,IAAI,GAAG,CAAA,EAAG,SAAS,KAAA,EAAM;AAAA,QAClD;AACA,QAAA,OAAO,EAAE,QAAA,EAAU,GAAA,EAAK,OAAA,EAAS,CAAA,EAAG,GAAA,CAAI,GAAA,CAAI,GAAG,CAAA,CAAE,QAAA,EAAU,CAAA,CAAA,CAAA,EAAI;AAAA,MACjE,CAAA;AAEA,MAAA,MAAM,kBAAA,GAAqB,cAAc,aAAa,CAAA;AACtD,MAAA,MAAM,aAAA,GAAgB,cAAc,QAAQ,CAAA;AAC5C,MAAA,IAAI,sBAAsB,aAAA,EAAe;AACvC,QAAA,UAAA,GAAa,kBAAA,CAAmB,QAAA,CAAS,EAAA,CAAG,aAAA,CAAc,QAAQ,CAAA;AAAA,MACpE;AAEA,MAAA,MAAM,qBAAA,GAAwB,cAAc,gBAAgB,CAAA;AAC5D,MAAA,MAAM,gBAAA,GAAmB,cAAc,WAAW,CAAA;AAClD,MAAA,IAAI,yBAAyB,gBAAA,EAAkB;AAC7C,QAAA,aAAA,GAAgB,sBAAsB,QAAA,CAAS,EAAA;AAAA,UAC7C,gBAAA,CAAiB;AAAA,SACnB;AAAA,MACF;AAEA,MAAA,uBACEvB,eAAAA;AAAA,QAACC,cAAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAU,QAAA;AAAA,UACV,SAAA,EAAU,WAAA;AAAA,UACV,SAAA,EAAW,WAAW,KAAA,GAAQ,OAAA;AAAA,UAE9B,QAAA,EAAA;AAAA,4BAAApB,cAAAA,CAACoB,cAAAA,EAAA,EAAK,SAAA,EAAU,QAAA,EAAS,GAAA,EAAK,CAAA,EAC3B,QAAA,EAAA,UAAA,mBACCD,eAAAA,CAAAQ,mBAAAA,EAAA,EACE,QAAA,EAAA;AAAA,8BAAA3B,cAAAA,CAAC6B,cAAAA,EAAA,EAAK,IAAA,EAAY,SAAA,EAAW,IAAI,SAAA,EAAU,kBAAA,EACxC,QAAA,EAAA,aAAA,EAAe,OAAA,IAAW,IAAA,EAC7B,CAAA;AAAA,8BACA7B,eAAC6B,cAAAA,CAAK,QAAA,EAAL,EAAc,KAAA,EAAO,OAAA,EAAS,MAC5B,QAAA,EAAA,aAAA,EACH;AAAA,aAAA,EACF,CAAA,mBAEA7B,cAAAA,CAAC6B,cAAAA,CAAK,QAAA,EAAL,EAAc,KAAA,EAAO,OAAA,EAAS,IAAA,EAC5B,QAAA,EAAA,aAAA,IAAiB,IAAA,EACpB,CAAA,EAEJ,CAAA;AAAA,4BACAV,eAAAA,CAACC,cAAAA,EAAA,EAAK,SAAA,EAAU,QAAA,EAAS,KAAK,CAAA,EAC5B,QAAA,EAAA;AAAA,8BAAApB,eAAC6B,cAAAA,EAAA,EAAK,MAAK,KAAA,EAAM,SAAA,EAAW,IAAI,QAAA,EAAA,MAAA,EAEhC,CAAA;AAAA,cACC,aAAA,mBACCV,eAAAA,CAAAQ,mBAAAA,EAAA,EACE,QAAA,EAAA;AAAA,gCAAA3B,cAAAA,CAAC6B,cAAAA,EAAA,EAAK,IAAA,EAAK,KAAA,EAAM,SAAA,EAAW,EAAA,EAAI,SAAA,EAAU,kBAAA,EACvC,QAAA,EAAA,gBAAA,EAAkB,OAAA,IAAW,IAAA,EAChC,CAAA;AAAA,gCACA7B,eAAC6B,cAAAA,EAAA,EAAK,MAAK,KAAA,EAAM,SAAA,EAAW,IACzB,QAAA,EAAA,gBAAA,EACH;AAAA,eAAA,EACF,CAAA,mBAEA7B,cAAAA,CAAC6B,cAAAA,EAAA,EAAK,MAAK,KAAA,EAAM,SAAA,EAAW,EAAA,EACzB,QAAA,EAAA,gBAAA,IAAoB,IAAA,EACvB;AAAA,aAAA,EAEJ;AAAA;AAAA;AAAA,OACF;AAAA,IAEJ,CAAA;AAEA,IAAM,kBAAA,GAED,CAAC,KAAA,KAAU;AACd,MAAA,MAAM,EAAE,eAAc,GAAI,KAAA;AAC1B,MAAA,MAAM,EAAE,CAAA,EAAE,GAAIX,0BAAAA,EAAe;AAC7B,MAAA,MAAM,EAAE,IAAA,EAAK,GAAIuE,kBAAAA,EAAS;AAC1B,MAAA,uBACEtE,eAAAA,CAACU,cAAAA,EAAA,EAAK,IAAA,EAAK,KAAA,EAAM,WAAU,uCAAA,EACxB,QAAA,EAAA;AAAA,QAAA,CAAA,CAAE,wCAAwC,CAAA;AAAA,QAAG,GAAA;AAAA,wBAC9C7B,cAAAA;AAAA,UAAC,GAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,oBAAA;AAAA,YACL,OAAA,EAAS,CAAC,CAAA,KAAM;AACd,cAAA,CAAA,CAAE,cAAA,EAAe;AACjB,cAAA,aAAA,EAAe,aAAA,CAAc;AAAA,gBAC3B,IAAA,EAAM,oBAAA;AAAA,gBACN,IAAA,EAAM,EAAE,4CAA4C;AAAA,eACrD,CAAA;AACD,cAAA,IAAA,EAAK;AAAA,YACP,CAAA;AAAA,YACA,SAAA,EAAU,0HAAA;AAAA,YAET,YAAE,4CAA4C;AAAA;AAAA;AACjD,OAAA,EACF,CAAA;AAAA,IAEJ,CAAA;AAEO,IAAM,gBAAA,GAAqD,CAAC,KAAA,KAAU;AAC3E,MAAA,MAAM,EAAE,KAAA,EAAO,KAAA,EAAO,WAAA,EAAa,MAAK,GAAI,KAAA;AAC5C,MAAA,MAAM,EAAE,CAAA,EAAE,GAAIkB,0BAAAA,EAAe;AAC7B,MAAA,MAAM,EAAE,aAAA,EAAc,GAAI,gBAAA,EAAiB;AAC3C,MAAA,MAAM,cACJ,OAAO,KAAA,KAAU,YAAY,OAAO,KAAA,KAAU,YAAY,KAAA,KAAU,IAAA;AACtE,MAAA,MAAM,SAAA,GAAY,WAAA,mBAChBlB,cAAAA,CAAC6B,cAAAA,EAAA,EAAK,IAAA,EAAK,IAAA,EAAK,SAAA,EAAW,EAAA,EAAI,SAAA,EAAU,oBAAA,EACtC,iBACH,CAAA,GAEA,KAAA;AAEF,MAAA,uBACEV,eAAAA;AAAA,QAACC,cAAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAQ,SAAA;AAAA,UACR,SAAA,EAAW,cAAc,QAAA,GAAW,OAAA;AAAA,UACpC,KAAA,EAAM,MAAA;AAAA,UACN,SAAA,EAAW,CAAA,SAAA,EAAY,WAAA,GAAc,EAAA,GAAK,WAAW,CAAA,CAAA;AAAA,UAErD,QAAA,EAAA;AAAA,4BAAApB,cAAAA;AAAA,cAAC6B,cAAAA;AAAA,cAAA;AAAA,gBACC,EAAA,EAAG,KAAA;AAAA,gBACH,SAAA,EAAW,EAAA;AAAA,gBACX,IAAA,EAAK,KAAA;AAAA,gBACL,MAAA,EAAO,UAAA;AAAA,gBACP,SAAA,EAAU,sCAAA;AAAA,gBAET,QAAA,EAAA;AAAA;AAAA,aACH;AAAA,4BACAV,eAAAA;AAAA,cAACC,cAAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAU,wBAAA;AAAA,gBACV,SAAA,EAAW,cAAc,QAAA,GAAW,KAAA;AAAA,gBACpC,OAAA,EAAQ,KAAA;AAAA,gBACR,SAAA,EAAW,cAAc,KAAA,GAAQ,QAAA;AAAA,gBAEhC,QAAA,EAAA;AAAA,kBAAA,IAAA;AAAA,kBACA,SAAA;AAAA,kBACA,+BACCD,eAAAA;AAAA,oBAACC,cAAAA;AAAA,oBAAA;AAAA,sBACC,GAAA,EAAK,CAAA;AAAA,sBACL,OAAA,EAAQ,QAAA;AAAA,sBACR,SAAA,EAAU,QAAA;AAAA,sBACV,SAAA,EAAU,qLAAA;AAAA,sBACV,SAAS,MAAM;AACb,wBAAAR,gBAAM,MAAA,CAAO;AAAA,0BACX,IAAA,EAAM,IAAA;AAAA,0BACN,KAAA,EAAO,EAAE,aAAa,CAAA;AAAA,0BACtB,OAAA,kBAASZ,cAAAA,CAAC,kBAAA,EAAA,EAAmB,aAAA,EAA8B;AAAA,yBAC5D,CAAA;AAAA,sBACH,CAAA;AAAA,sBAEA,QAAA,EAAA;AAAA,wCAAAA,eAAC,YAAA,EAAA,EAAa,CAAA;AAAA,wCACdA,cAAAA;AAAA,0BAAC6B,cAAAA,CAAK,QAAA;AAAA,0BAAL;AAAA,4BACC,SAAA,EAAU,iBAAA;AAAA,4BACV,KAAA,EAAO,OAAA;AAAA,4BACP,IAAA,EAAK,KAAA;AAAA,4BACL,MAAA,EAAO,SAAA;AAAA,4BAEN,YAAE,qBAAqB;AAAA;AAAA;AAC1B;AAAA;AAAA;AACF;AAAA;AAAA;AAEJ;AAAA;AAAA,OACF;AAAA,IAEJ,CAAA;AAEO,IAAM,iBAAA,GAAsD,CAAC,KAAA,KAAU;AAC5E,MAAA,MAAM,EAAE,KAAA,EAAO,KAAA,EAAO,WAAA,EAAa,MAAK,GAAI,KAAA;AAC5C,MAAA,MAAM,EAAE,CAAA,EAAE,GAAIX,0BAAAA,EAAe;AAC7B,MAAA,MAAM,EAAE,aAAA,EAAc,GAAI+G,oCAAAA,EAAmB;AAC7C,MAAA,uBACE9G,eAAAA;AAAA,QAACsG,aAAAA;AAAA,QAAA;AAAA,UACC,QAAA,EAAS,SAAA;AAAA,UACT,CAAA,EAAE,IAAA;AAAA,UACF,EAAA,EAAI,CAAA;AAAA,UACJ,EAAA,EAAI,CAAA;AAAA,UACJ,KAAA,EAAO,GAAA;AAAA,UACP,MAAA,EAAM,IAAA;AAAA,UACN,WAAA,EAAa,CAAA;AAAA,UACb,SAAA,EAAU,8BAAA;AAAA,UAEV,QAAA,EAAA;AAAA,4BAAAtG,gBAACC,cAAAA,EAAA,EAAK,SAAA,EAAU,QAAA,EAAS,SAAQ,SAAA,EAC/B,QAAA,EAAA;AAAA,8BAAApB,cAAAA;AAAA,gBAAC6B,cAAAA;AAAA,gBAAA;AAAA,kBACC,EAAA,EAAG,KAAA;AAAA,kBACH,SAAA,EAAW,EAAA;AAAA,kBACX,IAAA,EAAK,KAAA;AAAA,kBACL,MAAA,EAAO,UAAA;AAAA,kBACP,SAAA,EAAU,oBAAA;AAAA,kBAET,QAAA,EAAA;AAAA;AAAA,eACH;AAAA,8BACAV,eAAAA,CAACC,cAAAA,EAAA,EAAK,SAAA,EAAU,QAAA,EAAS,KAAK,CAAA,EAC3B,QAAA,EAAA;AAAA,gBAAA,IAAA;AAAA,gBACA,+BACCpB,cAAAA;AAAA,kBAACqC,iBAAAA;AAAA,kBAAA;AAAA,oBACC,yBACElB,eAAAA;AAAA,sBAACU,cAAAA;AAAA,sBAAA;AAAA,wBACC,IAAA,EAAK,KAAA;AAAA,wBACL,SAAA,EAAU,uCAAA;AAAA,wBAET,QAAA,EAAA;AAAA,0BAAA,CAAA,CAAE,wCAAwC,CAAA;AAAA,0BAAG,GAAA;AAAA,0CAC9C7B,cAAAA;AAAA,4BAAC,GAAA;AAAA,4BAAA;AAAA,8BACC,IAAA,EAAK,oBAAA;AAAA,8BACL,OAAA,EAAS,CAAC,CAAA,KAAM;AACd,gCAAA,CAAA,CAAE,cAAA,EAAe;AACjB,gCAAA,aAAA,EAAe,aAAA,CAAc;AAAA,kCAC3B,IAAA,EAAM,oBAAA;AAAA,kCACN,IAAA,EAAM,EAAE,4CAA4C;AAAA,iCACrD,CAAA;AAAA,8BACH,CAAA;AAAA,8BACA,SAAA,EAAU,0HAAA;AAAA,8BAET,YAAE,4CAA4C;AAAA;AAAA;AACjD;AAAA;AAAA,qBACF;AAAA,oBAEF,SAAA,EAAU,qCAAA;AAAA,oBAEV,QAAA,kBAAAmB,eAAAA;AAAA,sBAACC,cAAAA;AAAA,sBAAA;AAAA,wBACC,GAAA,EAAK,CAAA;AAAA,wBACL,OAAA,EAAQ,QAAA;AAAA,wBACR,SAAA,EAAU,QAAA;AAAA,wBACV,SAAA,EAAU,wKAAA;AAAA,wBAEV,QAAA,EAAA;AAAA,0CAAApB,eAAC,YAAA,EAAA,EAAa,CAAA;AAAA,0CACdA,cAAAA;AAAA,4BAAC6B,cAAAA,CAAK,QAAA;AAAA,4BAAL;AAAA,8BACC,SAAA,EAAU,iBAAA;AAAA,8BACV,KAAA,EAAO,OAAA;AAAA,8BACP,IAAA,EAAK,IAAA;AAAA,8BACL,MAAA,EAAO,SAAA;AAAA,8BAEN,YAAE,qBAAqB;AAAA;AAAA;AAC1B;AAAA;AAAA;AACF;AAAA;AACF,eAAA,EAEJ;AAAA,aAAA,EACF,CAAA;AAAA,4BACA7B,cAAAA,CAACoB,cAAAA,EAAA,EAAK,SAAA,EAAU,uBACd,QAAA,kBAAApB,cAAAA,CAAC6B,cAAAA,EAAA,EAAK,MAAK,MAAA,EAAO,SAAA,EAAW,IAAI,SAAA,EAAU,oBAAA,EACxC,iBACH,CAAA,EACF;AAAA;AAAA;AAAA,OACF;AAAA,IAEJ,CAAA;AAEO,IAAM,aAAA,GAA8C,CAAC,KAAA,KAAU;AACpE,MAAA,MAAM,EAAE,CAAA,EAAE,GAAIX,0BAAAA,EAAe;AAC7B,MAAA,MAAM;AAAA,QACJ,IAAA;AAAA,QACA,GAAA;AAAA,QACA,iBAAA;AAAA,QACA,OAAA;AAAA,QACA,cAAA;AAAA,QACA,mBAAA;AAAA,QACA;AAAA,OACF,GAAI,KAAA;AAEJ,MAAA,MAAM,EAAE,QAAA,EAAS,GAAIV,mBAAAA,EAAU;AAC/B,MAAA,MAAM,EAAE,aAAA,EAAe,WAAA,EAAa,GAAG,MAAA,KAAW0H,wBAAA,EAAY;AAC9D,MAAA,MAAM,UAAU,WAAA,IAAe,IAAA;AAC/B,MAAA,MAAM,cAAA,GAAiB,YAAY,aAAa,CAAA;AAChD,MAAA,MAAM,EAAE,aAAA,EAAe,mBAAA,EAAoB,GAAI,gBAAA,EAAiB;AAChE,MAAA,MAAM,EAAE,aAAA,EAAe,oBAAA,EAAqB,GAAID,oCAAAA,EAAmB;AACnE,MAAA,MAAM,gBAAgB,oBAAA,IAAwB,mBAAA;AAE9C,MAAA,MAAM,KAAA,GAAkC;AAAA,QACtC;AAAA,UACE,KAAA,EAAO,CAAA,EAAG,CAAA,CAAE,oCAAoC,CAAC,CAAA,OAAA,CAAA;AAAA,UACjD,WAAA,EAAa,KAAA;AAAA,UACb,uBACEjI,cAAAA;AAAA,YAAC6B,cAAAA,CAAK,OAAA;AAAA,YAAL;AAAA,cACC,IAAA,EAAK,OAAA;AAAA,cACL,EAAA,EAAI,CAAA;AAAA,cACJ,IAAIa,oBAAAA,CAAQ,UAAA;AAAA,cACZ,IAAA,EAAM,WAAW,IAAA,GAAO,MAAA;AAAA,cAEvB,kBAAQ,MAAA,IAAa,GAAA,KAAQ,IAAA,GAAO,CAAA,EAAG,GAAG,CAAA,CAAA,GAAK;AAAA;AAAA;AAClD,SAEJ;AAAA,QACA,GAAI,cAAA,GACA;AAAA,UACE;AAAA,YACE,KAAA,EAAO,EAAE,kCAAkC,CAAA;AAAA,YAC3C,WAAA,EAAa,KAAA;AAAA,YACb,IAAA,EAAM,kCACJ1C,cAAAA;AAAA,cAAC,GAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAU,8BAAA;AAAA,gBACV,IAAA,EAAM,eAAA;AAAA,gBACN,OAAA,EAAS,CAAC,KAAA,KAAU;AAClB,kBAAA,KAAA,CAAM,cAAA,EAAe;AACrB,kBAAA,QAAA;AAAA,oBACE,eAAA;AAAA,oBACA,EAAE,gCAAgC,CAAA;AAAA,oBAClC;AAAA,mBACF;AAAA,gBACF,CAAA;AAAA,gBAEA,QAAA,kBAAAmB,eAAAA;AAAA,kBAACU,cAAAA;AAAA,kBAAA;AAAA,oBACC,IAAA,EAAK,KAAA;AAAA,oBACL,SAAA,EAAW,EAAA;AAAA,oBACX,SAAA,EAAU,2FAAA;AAAA,oBAET,QAAA,EAAA;AAAA,sBAAA,CAAA,CAAE,8BAA8B,CAAA;AAAA,sBAAE,GAAA;AAAA,sBAAE,GAAA;AAAA,sBACpC,iBAAA;AAAA,wBACC,OAAA,EAAS,0BAAA,IACP,OAAA,EAAS,eAAA,IACT,SAAS,WAAA,IACT;AAAA;AACJ;AAAA;AAAA;AACF;AAAA,aACF,mBAEAV,eAAAA,CAACU,cAAAA,EAAA,EAAK,MAAK,KAAA,EAAM,SAAA,EAAW,EAAA,EAAI,SAAA,EAAU,uBAAA,EACvC,QAAA,EAAA;AAAA,cAAA,CAAA,CAAE,8BAA8B,CAAA;AAAA,cAAE,GAAA;AAAA,cAAE,GAAA;AAAA,cACpC,iBAAA;AAAA,gBACC,OAAA,EAAS,0BAAA,IACP,OAAA,EAAS,eAAA,IACT,SAAS,WAAA,IACT;AAAA;AACJ,aAAA,EACF,CAAA;AAAA,YAEF,KAAA,kBAAO7B,cAAAA,CAAC,YAAA,EAAA,EAAa,OAAA,EAAkB;AAAA;AACzC,YAEF,EAAC;AAAA,QACL;AAAA,UACE,KAAA,EAAO,EAAE,kCAAkC,CAAA;AAAA,UAC3C,WAAA,EAAa,KAAA;AAAA,UACb,uBAAOA,cAAAA,CAAC,gBAAa,IAAA,EAAM,OAAA,EAAS,cAAc,aAAA,EAAe;AAAA,SACnE;AAAA,QACA;AAAA,UACE,KAAA,EAAO,EAAE,uCAAuC,CAAA;AAAA,UAChD,WAAA,EAAa,cAAA;AAAA,UACb,uBACEA,cAAAA;AAAA,YAAC,YAAA;AAAA,YAAA;AAAA,cACC,UAAU,mBAAA,EAAqB,YAAA;AAAA,cAC/B,aAAa,mBAAA,EAAqB,eAAA;AAAA,cAClC,aAAA,EACE,cAAA,GAAiB,MAAA,CAAO,iBAAA,GAAoB,MAAA,CAAO,QAAA;AAAA,cAErD,gBAAA,EACE,cAAA,GAAiB,MAAA,CAAO,oBAAA,GAAuB,MAAA,CAAO,WAAA;AAAA,cAExD,IAAA,EAAM,WAAW,IAAA,GAAO;AAAA;AAAA;AAC1B,SAEJ;AAAA,QACA;AAAA,UACE,KAAA,EAAO,EAAE,uCAAuC,CAAA;AAAA,UAChD,WAAA,EAAa,cAAA;AAAA,UACb,uBACEA,cAAAA;AAAA,YAAC,YAAA;AAAA,YAAA;AAAA,cACC,UAAU,mBAAA,EAAqB,YAAA;AAAA,cAC/B,aAAa,mBAAA,EAAqB,eAAA;AAAA,cAClC,aAAA,EACE,cAAA,GAAiB,MAAA,CAAO,iBAAA,GAAoB,MAAA,CAAO,QAAA;AAAA,cAErD,gBAAA,EACE,cAAA,GAAiB,MAAA,CAAO,oBAAA,GAAuB,MAAA,CAAO,WAAA;AAAA,cAExD,IAAA,EAAM,WAAW,IAAA,GAAO;AAAA;AAAA;AAC1B;AAEJ,OACF;AAEA,MAAA,MAAM,UAAA,GAAaD,gBAAkC,MAAM;AACzD,QAAA,IAAI,OAAO,sBAAsB,UAAA,EAAY;AAC3C,UAAA,OAAO,kBAAkB,KAAK,CAAA;AAAA,QAChC;AACA,QAAA,OAAO,KAAA;AAAA,MACT,CAAA,EAAG,CAAC,iBAAA,EAAmB,KAAK,CAAC,CAAA;AAE7B,MAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,UAAU,CAAA,EAAG;AAC9B,QAAA,OAAO,IAAA;AAAA,MACT;AAEA,MAAA,IAAI,QAAA,EAAU;AACZ,QAAA,uBACEC,cAAAA;AAAA,UAACoB,cAAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,qEAAA;AAAA,YACV,SAAA,EAAU,QAAA;AAAA,YACV,SAAA,EAAW,SAAA;AAAA,YAEV,QAAA,EAAA,UAAA,CAAW,GAAA,CAAI,CAAC,IAAA,EAAM,KAAA,qBACrB+G,qBAAA,CAAC,gBAAA,EAAA,EAAkB,GAAG,IAAA,EAAM,GAAA,EAAK,CAAA,YAAA,EAAe,KAAK,IAAI,CAC1D;AAAA;AAAA,SACH;AAAA,MAEJ;AAEA,MAAA,uBACEnI,cAAAA;AAAA,QAACoB,cAAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAU,KAAA;AAAA,UACV,GAAA,EAAK,CAAA;AAAA,UACL,EAAA,EAAI,CAAA;AAAA,UACJ,SAAA,EAAW,SAAA;AAAA,UACX,SAAA,EAAU,eAAA;AAAA,UAET,QAAA,EAAA,UAAA,CAAW,GAAA,CAAI,CAAC,IAAA,EAAM,KAAA,qBACrB+G,qBAAA,CAAC,iBAAA,EAAA,EAAmB,GAAG,IAAA,EAAM,GAAA,EAAK,CAAA,aAAA,EAAgB,KAAK,IAAI,CAC5D;AAAA;AAAA,OACH;AAAA,IAEJ,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;ACpTO,SAAS,oBAAoB,GAAA,EAAqB;AACvD,EAAA,OAAO,GAAA,CAAI,OAAO,CAAC,CAAA,CAAE,aAAY,GAAI,GAAA,CAAI,MAAM,CAAC,CAAA;AAClD;AAtQA,IAmBa,mBAAA;AAnBb,IAAA,sBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,qCAAA,GAAA;AAmBO,IAAM,mBAAA,GAAsB,CAAC,KAAA,KAG9B;AACJ,MAAA,MAAM,EAAE,UAAA,EAAY,SAAA,EAAU,GAAI,SAAS,EAAC;AAC5C,MAAA,MAAM,CAAC,gBAAA,EAAkB,mBAAmB,CAAA,GAAIrI,iBAAS,KAAK,CAAA;AAC9D,MAAA,MAAM,CAAC,iBAAA,EAAmB,oBAAoB,CAAA,GAAIA,iBAAS,KAAK,CAAA;AAChE,MAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIA,gBAAAA,EAAsC;AAC5E,MAAA,MAAM,EAAE,YAAA,EAAc,eAAA,EAAgB,GAAIM,6BAAAA,EAAc;AACxD,MAAA,MAAM,EAAE,KAAA,EAAO,OAAA,EAAAgF,QAAAA,KAAYlF,uBAAAA,EAAW;AACtC,MAAA,MAAM,EAAE,CAAA,EAAE,GAAIgB,0BAAAA,EAAe;AAE7B,MAAA,MAAM,eAAA,GACJ,CAAC,YAAA,IACD,CAAC,eAAA,KACA,KAAA,CAAM,MAAA,KAAWP,8BAAAA,CAAkB,aAAA,IAClC,KAAA,CAAM,MAAA,KAAWA,8BAAAA,CAAkB,6BAAA,CAAA;AAEvC,MAAA,MAAM;AAAA,QACJ,IAAA;AAAA,QACA;AAAA,UACE,kBAAA;AAAA,UACA,gBAAA;AAAA,UACA,gBAAA;AAAA,UACA,4BAAA;AAAA,UACA,OAAA;AAAA,UACA,SAAA;AAAA,UACA;AAAA;AACF,UACEyH,6BAAA,CAAiB;AAAA,QACnB,OAAA,EAAS,EAAE,UAAA,EAAY,SAAA;AAAU,OAClC,CAAA;AAED,MAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAItI,iBAA6B,MAAS,CAAA;AAExE,MAAAqG,kBAAU,MAAM;AACd,QAAAf,QAAAA,CAAQ,SACL,aAAA,EAAc,EACb,cAAa,CACd,IAAA,CAAK,CAAC,MAAA,KAAW;AAChB,UAAA,YAAA,CAAa,MAAM,CAAA;AAAA,QACrB,CAAC,CAAA;AAAA,MACL,CAAA,EAAG,CAACA,QAAAA,EAAS,KAAK,CAAC,CAAA;AAEnB,MAAA,MAAM,iBAAiB,MAAM;AAC3B,QAAA,mBAAA,CAAoB,IAAI,CAAA;AAAA,MAC1B,CAAA;AACA,MAAA,MAAM,iBAAiB,MAAM;AAC3B,QAAA,MAAA,CAAO,IAAA;AAAA,UACL,+FAAA;AAAA,UACA;AAAA,SACF;AAAA,MACF,CAAA;AAEA,MAAA,MAAM,mBAAmB,MAAM;AAC7B,QAAA,mBAAA,CAAoB,KAAK,CAAA;AAAA,MAC3B,CAAA;AAEA,MAAA,MAAM,QAAA,GAAW,OACf,aAAA,EACA,KAAA,KACoB;AACpB,QAAA,IAAI;AACF,UAAA,MAAM,cAAA,GAAiB,CACrBiD,IAAAA,EAIA,EAAA,KACG;AACH,YAAA,MAAM,EAAE,GAAA,EAAK,SAAA,EAAU,GAAIA,IAAAA;AAC3B,YAAA,gBAAA,EAAiB;AACjB,YAAA,cAAA,CAAe;AAAA,cACb,GAAA;AAAA,cACA,SAAA;AAAA,cACA,EAAA;AAAA,cACA,WAAA,EAAa,KAAA,EACT,KAAA,CAAM,GAAG,CAAA,EACT,GAAA,CAAI,CAAC,CAAA,KAAM,mBAAA,CAAoB,CAAC,CAAC,CAAA,CAClC,KAAK,IAAI;AAAA,aACb,CAAA;AACD,YAAA,oBAAA,CAAqB,IAAI,CAAA;AAAA,UAC3B,CAAA;AAEA,UAAA,MAAM,GAAA,GAAM,MAAM,kBAAA,CAAmB,KAAK,CAAA;AAE1C,UAAA,MAAM,cAAA,GAAiB;AAAA,YACrB,GAAG,GAAA;AAAA,YACH,GAAA,EAAK,CAAA,QAAA,EAAW,GAAA,CAAI,GAAG,CAAA,CAAA;AAAA,YACvB,SAAA,EAAW,CAAA,QAAA,EAAW,GAAA,CAAI,SAAS,CAAA;AAAA,WACrC;AACA,UAAA/F,eAAAA,CAAM,OAAA,CAAQ,CAAA,CAAE,0BAA0B,CAAC,CAAA;AAE3C,UAAA,IAAA,CAAK,aAAA,EAAe,MAAA,IAAU,CAAA,IAAK,CAAA,EAAG;AACpC,YAAA,MAAM,MAAM,cAAA,CAAe,GAAA;AAC3B,YAAA,MAAM+F,IAAAA,GAAM,MAAM,gBAAA,CAAiB,GAAA,EAAK,aAAc,CAAA;AACtD,YAAA,IAAIA,KAAI,OAAA,EAAS;AACf,cAAA,cAAA;AAAA,gBACE,cAAA;AAAA,gBACAA,IAAAA,CAAI,IAAA,CAAK,mBAAA,EAAqB,IAAA,CAAK,GAAG;AAAA,eACxC;AAAA,YACF;AAAA,UACF,CAAA,MAAO;AACL,YAAA,cAAA,CAAe,gBAAgB,KAAA,CAAS,CAAA;AAAA,UAC1C;AAAA,QACF,SAAS,GAAA,EAAU;AACjB,UAAA,IAAI,KAAK,OAAA,EAAS/F,eAAAA,CAAM,KAAA,CAAM,KAAK,OAAO,CAAA;AAAA,QAC5C;AAEA,QAAA,OAAO,OAAA,CAAQ,QAAQ,CAAC,CAAA;AAAA,MAC1B,CAAA;AAEA,MAAA,MAAM,oBAAoB,MAAM;AAC9B,QAAA,oBAAA,CAAqB,KAAK,CAAA;AAC1B,QAAA,OAAA,EAAQ;AAAA,MACV,CAAA;AAEA,MAAA,MAAM,mBAAmB,MAAM;AAC7B,QAAA,SAAA,CAAU,SAAA,CAAU,SAAA,CAAU,IAAA,CAAK,SAAA,CAAU,WAAW,CAAC,CAAA;AACzD,QAAAA,eAAAA,CAAM,OAAA,CAAQ,CAAA,CAAE,iCAAiC,CAAC,CAAA;AAAA,MACpD,CAAA;AACA,MAAA,MAAM,YAAY,MAAM;AACtB,QAAA,iBAAA,EAAkB;AAAA,MACpB,CAAA;AAEA,MAAA,MAAM,QAAA,GAAW,CAAC,IAAA,KAAmC;AACnD,QAAA,OAAO,IAAI,OAAA,CAAQ,OAAO,OAAA,KAAY;AACpC,UAAA,MAAM,gBAAA,CAAiB,IAAA,CAAK,WAAW,CAAA,CACpC,IAAA;AAAA,YACC,OAAO,IAAA,KAAS;AACd,cAAA,IAAI,MAAM,OAAA,EAAS;AACjB,gBAAAA,eAAAA,CAAM,OAAA,CAAQ,CAAA,CAAE,0BAA0B,CAAC,CAAA;AAC3C,gBAAA,OAAA,EAAQ;AAER,gBAAA,MAAM,SAAS,MAAM8C,QAAAA,CAAQ,QAAA,CAC1B,aAAA,IACC,YAAA,EAAa;AACjB,gBAAA,IAAI,IAAA,CAAK,gBAAgB,MAAA,EAAQ;AAC/B,kBAAAA,SAAQ,iBAAA,EAAkB;AAAA,gBAC5B;AAAA,cACF;AACA,cAAA,OAAA,CAAQ,CAAC,CAAA;AAAA,YACX,CAAA;AAAA,YACA,CAAC,MAAA,KAAW;AAAA,YAAC;AAAA,WACf,CACC,KAAA,CAAM,CAAC,GAAA,KAAQ;AAAA,UAAC,CAAC,CAAA;AAAA,QACtB,CAAC,CAAA;AAAA,MACH,CAAA;AAEA,MAAA,MAAM,MAAA,GAAS,OAAO,IAAA,EAAkB,EAAA,KAA+B;AACrE,QAAA,IAAI,MAAA;AACJ,QAAA,IAAA,CAAK,EAAA,EAAI,MAAA,IAAU,CAAA,MAAO,CAAA,EAAG;AAC3B,UAAA,MAAA,GAAS,4BAAA,CAA6B,IAAA,CAAK,WAAA,EAAa,eAAe,CAAA;AAAA,QACzE,CAAA,MAAO;AACL,UAAA,MAAA,GAAS,gBAAA,CAAiB,IAAA,CAAK,WAAA,EAAa,EAAG,CAAA;AAAA,QACjD;AAEA,QAAA,MAAM,OAAO,MAAM,MAAA;AAEnB,QAAA,IAAI,KAAK,OAAA,EAAS;AAChB,UAAA9C,eAAAA,CAAM,OAAA,CAAQ,CAAA,CAAE,0BAA0B,CAAC,CAAA;AAC3C,UAAA,OAAA,EAAQ;AACR,UAAA,OAAO,QAAQ,OAAA,EAAQ;AAAA,QACzB,CAAA,MAAO;AACL,UAAAA,eAAAA,CAAM,KAAA,CAAM,IAAA,CAAK,OAAO,CAAA;AAAA,QAC1B;AACA,QAAA,OAAO,QAAQ,MAAA,EAAO;AAAA,MACxB,CAAA;AAEA,MAAA,MAAM,kBAAkB,MACtBA,eAAAA,CAAM,OAAA,CAAQ,CAAA,CAAE,mCAAmC,CAAC,CAAA;AACtD,MAAA,MAAM,YAAA,GAAe,CAAC,GAAA,KAAiB;AACrC,QAAAA,eAAAA,CAAM,OAAA,CAAQ,CAAA,CAAE,qCAAqC,CAAC,CAAA;AAAA,MACxD,CAAA;AACA,MAAA,MAAM,qBAAqB,MACzBA,eAAAA,CAAM,OAAA,CAAQ,CAAA,CAAE,mCAAmC,CAAC,CAAA;AACtD,MAAA,MAAM,WAAW,MACfA,eAAAA,CAAM,OAAA,CAAQ,CAAA,CAAE,2CAA2C,CAAC,CAAA;AAE9D,MAAA,MAAM,OAAA,GAAUvC,gBAAQ,MAAM;AAC5B,QAAA,OAAO,IAAA,EAAM,MAAA,CAAO,CAAC,CAAA,KAAM;AACzB,UAAA,MAAM,YAAY,UAAA,GAAa,UAAA,EAAY,QAAA,CAAS,CAAA,CAAE,GAAG,CAAA,GAAI,IAAA;AAC7D,UAAA,MAAM,eAAe,SAAA,GACjB,CAAC,EAAE,WAAA,CAAY,QAAA,CAAS,SAAS,CAAA,GACjC,IAAA;AACJ,UAAA,OAAO,SAAA,IAAa,YAAA;AAAA,QACtB,CAAC,CAAA;AAAA,MACH,CAAA,EAAG,CAAC,IAAA,EAAM,UAAA,EAAY,SAAS,CAAC,CAAA;AAEhC,MAAA,MAAM,QAAA,GAAW,CAAC,EAAA,KAAe;AAC/B,QAAA,MAAM,OAAA,GACJ,kMAAA;AACF,QAAA,OAAO,OAAA,CAAQ,IAAA,CAAK,EAAE,CAAA,GAClB,EAAA,GACA,uGAAA;AAAA,MACN,CAAA;AAEA,MAAA,MAAM,gBACJ,KAAA,CAAM,MAAA,KAAWY,+BAAkB,6BAAA,GAC/BA,8BAAAA,CAAkB,gCAClBA,8BAAAA,CAAkB,aAAA;AAExB,MAAA,MAAM,SAAA,GAAY8F,0BAAAA,CAAW,KAAA,CAAM,SAAA,EAAW;AAAA,QAC5C;AAAA,OACD,CAAA;AAED,MAAA,MAAM,MAAA,GAASA,0BAAAA,CAAW,KAAA,CAAM,MAAA,EAAQ;AAAA,QACtC;AAAA,OACD,CAAA;AAED,MAAA,MAAM,EAAE,UAAA,EAAW,GAAItD,uBAAAA,EAAc;AAErC,MAAA,OAAO;AAAA,QACL,WAAW,SAAA,IAAa,IAAA;AAAA,QACxB,QAAQ,MAAA,IAAU,IAAA;AAAA,QAClB,cAAA;AAAA,QACA,cAAA;AAAA,QACA,gBAAA;AAAA,QACA,gBAAA;AAAA,QACA,QAAA;AAAA,QACA,iBAAA;AAAA,QACA,iBAAA;AAAA,QACA,gBAAA;AAAA,QACA,SAAA;AAAA,QACA,QAAA;AAAA,QACA,MAAA;AAAA,QACA,eAAA;AAAA,QACA,QAAQ,KAAA,CAAM,MAAA;AAAA,QACd,IAAA,EAAM,OAAA;AAAA,QACN,WAAA;AAAA,QACA,eAAA;AAAA,QACA,YAAA;AAAA,QACA,YAAA;AAAA,QACA,kBAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,SAAA;AAAA,QACA;AAAA,OACF;AAAA,IACF,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;AClQA,IAAA,oBAAA,GAAA,EAAA;AAAA,QAAA,CAAA,oBAAA,EAAA;AAAA,EAAA,QAAA,EAAA,MAAA,QAAA;AAAA,EAAA,kBAAA,EAAA,MAAA;AAAA,CAAA,CAAA;AAAA,IAYa,kBAAA,EAqIA,QAAA;AAjJb,IAAA,iBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,uCAAA,GAAA;AAYO,IAAM,kBAAA,GAAkD,CAAC,KAAA,KAAU;AACxE,MAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIrD,iBAAS,EAAE,CAAA;AACvC,MAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIA,iBAAS,IAAI,CAAA;AACrC,MAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIA,iBAAS,IAAI,CAAA;AACvC,MAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIA,iBAAS,EAAE,CAAA;AACnC,MAAA,MAAM,EAAE,CAAA,EAAE,GAAIoB,0BAAAA,EAAe;AAE7B,MAAAiF,kBAAU,MAAM;AACd,QAAA,IAAI,CAAC,MAAM,gBAAA,EAAkB;AAC3B,UAAA,SAAA,CAAU,EAAE,CAAA;AACZ,UAAA,OAAA,CAAQ,IAAI,CAAA;AACZ,UAAA,QAAA,CAAS,IAAI,CAAA;AACb,UAAA,OAAA,CAAQ,EAAE,CAAA;AAAA,QACZ;AAAA,MACF,CAAA,EAAG,CAAC,KAAA,CAAM,gBAAgB,CAAC,CAAA;AAE3B,MAAAA,kBAAU,MAAM;AACd,QAAA,IAAI,MAAA,CAAO,MAAA,KAAW,CAAA,EAAG,OAAA,CAAQ,EAAE,CAAA;AAAA,MACrC,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAEX,MAAA,uBACEnG,cAAAA;AAAA,QAAC0F,sBAAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,IAAA;AAAA,UACL,MAAM,KAAA,CAAM,gBAAA;AAAA,UACZ,YAAA,EAAc,CAAC,IAAA,KAAS;AACtB,YAAA,KAAA,CAAM,gBAAA,IAAmB;AAAA,UAC3B,CAAA;AAAA,UACA,KAAA,EAAO,EAAE,sCAAsC,CAAA;AAAA,UAC/C,OAAA,EAAS;AAAA,YACP,OAAA,EAAS;AAAA,cACP,KAAA,EAAO,EAAE,gBAAgB,CAAA;AAAA,cACzB,SAAA,EAAW,gCAAA;AAAA,cACX,aAAA,EAAe,mDAAA;AAAA,cACf,SAAS,YAAY;AACnB,gBAAA,IAAI,MAAA,CAAO,SAAS,CAAA,EAAG;AACrB,kBAAA,MAAM4C,KAAAA,GAAO,KAAA,CAAM,QAAA,CAAS,MAAM,CAAA;AAClC,kBAAA,OAAA,CAAQA,KAAI,CAAA;AACZ,kBAAA,IAAIA,KAAAA,CAAK,SAAS,CAAA,EAAG;AACnB,oBAAA;AAAA,kBACF;AAAA,gBACF;AAEA,gBAAA,MAAM,SAAmB,EAAC;AAC1B,gBAAA,IAAI,IAAA,EAAM;AACR,kBAAA,MAAA,CAAO,KAAK,MAAM,CAAA;AAAA,gBACpB;AACA,gBAAA,IAAI,KAAA,EAAO;AACT,kBAAA,MAAA,CAAO,KAAK,SAAS,CAAA;AAAA,gBACvB;AACA,gBAAA,MAAM,MAAM,QAAA,CAAS,MAAA,EAAQ,MAAA,CAAO,IAAA,CAAK,GAAG,CAAc,CAAA;AAAA,cAC5D,CAAA;AAAA,cACA,QAAA,EAAU,CAAC,KAAA,IAAS,CAAC,IAAA;AAAA,cACrB,IAAA,EAAM;AAAA;AACR,WACF;AAAA,UACA,UAAA,EAAY;AAAA,YACV,MAAA,EAAQ,oBAAA;AAAA,YACR,OAAA,EACE;AAAA,WACJ;AAAA,UAEA,0BAAAnH,eAAAA,CAACC,cAAAA,EAAA,EAAK,SAAA,EAAW,QAAA,EAAU,KAAK,CAAA,EAC9B,QAAA,EAAA;AAAA,4BAAAD,eAAAA,CAACC,cAAAA,EAAA,EAAK,SAAA,EAAW,QAAA,EAAU,KAAK,CAAA,EAAG,KAAA,EAAO,MAAA,EAAQ,SAAA,EAAW,OAAA,EAC3D,QAAA,EAAA;AAAA,8BAAApB,cAAAA,CAAC6B,gBAAA,EAAK,SAAA,EAAW,IAAI,IAAA,EAAK,KAAA,EACvB,QAAA,EAAA,CAAA,CAAE,uCAAuC,CAAA,EAC5C,CAAA;AAAA,8BACA7B,cAAAA;AAAA,gBAAC,UAAA;AAAA,gBAAA;AAAA,kBACC,aAAA,EAAY,gDAAA;AAAA,kBACZ,WAAA,EAAa,EAAE,mDAAmD,CAAA;AAAA,kBAClE,SAAA,EAAW+E,YAAAA;AAAA,oBACT,qGAAA;AAAA,oBACA,kFAAA;AAAA,oBACA,kCAAA;AAAA,oBACA,IAAA,CAAK,SAAS,CAAA,IACZ;AAAA,mBACJ;AAAA,kBACA,KAAA,EAAO,MAAA;AAAA,kBACP,QAAA,EAAU,CAAC,CAAA,KAAM;AACf,oBAAA,SAAA,CAAU,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,kBAC1B,CAAA;AAAA,kBACA,KAAA,EAAO;AAAA,oBACL,MAAA,EAAQ;AAAA;AACV;AAAA,eACF;AAAA,cACC,IAAA,CAAK,MAAA,GAAS,CAAA,oBACb5D,eAAAA,CAACC,gBAAA,EAAK,GAAA,EAAK,CAAA,EAAG,SAAA,EAAU,cAAA,EACtB,QAAA,EAAA;AAAA,gCAAApB,cAAAA;AAAA,kBAAC,KAAA;AAAA,kBAAA;AAAA,oBACC,SAAA,EAAW+E,YAAAA;AAAA,sBACT,6BAAA;AAAA,sBACA;AAAA;AACF;AAAA,iBACF;AAAA,gCACA/E,cAAAA,CAAC6B,cAAAA,EAAA,EAAK,KAAA,EAAM,UAAS,IAAA,EAAK,IAAA,EAAK,SAAA,EAAU,UAAA,EACtC,QAAA,EAAA,IAAA,EACH;AAAA,eAAA,EACF;AAAA,aAAA,EAEJ,CAAA;AAAA,4BACA7B,cAAAA;AAAA,cAAC4B,mBAAAA;AAAA,cAAA;AAAA,gBACC,KAAA,kBACE5B,cAAAA,CAAC6B,cAAAA,EAAA,EAAK,IAAA,EAAK,IAAA,EAAK,SAAA,EAAW,EAAA,EACxB,QAAA,EAAA,CAAA,CAAE,8BAA8B,CAAA,EACnC,CAAA;AAAA,gBAEF,SAAA,EAAU,YAAA;AAAA,gBAEV,QAAA,kBAAAV,eAAAA;AAAA,kBAACC,cAAAA;AAAA,kBAAA;AAAA,oBACC,SAAA,EAAW,KAAA;AAAA,oBACX,GAAA,EAAK,CAAA;AAAA,oBACL,SAAA,EAAW,OAAA;AAAA,oBACX,SAAA,EAAU,UAAA;AAAA,oBAEV,QAAA,EAAA;AAAA,sCAAApB,cAAAA;AAAA,wBAAC,QAAA;AAAA,wBAAA;AAAA,0BACC,IAAA,EAAM,EAAA;AAAA,0BACN,OAAA,EAAS,IAAA;AAAA,0BACT,eAAA,EAAiB,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAY,CAAA;AAAA,0BAC5C,KAAA,EAAO,EAAE,mCAAmC,CAAA;AAAA,0BAC5C,MAAA,EAAO;AAAA;AAAA,uBACT;AAAA,sCACAA,cAAAA;AAAA,wBAAC,QAAA;AAAA,wBAAA;AAAA,0BACC,IAAA,EAAM,EAAA;AAAA,0BACN,OAAA,EAAS,KAAA;AAAA,0BACT,eAAA,EAAiB,CAAC,CAAA,KAAM,QAAA,CAAS,CAAY,CAAA;AAAA,0BAC7C,KAAA,EAAO,EAAE,sCAAsC,CAAA;AAAA,0BAC/C,MAAA,EAAO;AAAA;AAAA;AACT;AAAA;AAAA;AACF;AAAA;AACF,WAAA,EACF;AAAA;AAAA,OACF;AAAA,IAEJ,CAAA;AAEO,IAAM,QAAA,GAOR,CAAC,KAAA,KAAU;AACd,MAAA,uBACEmB,eAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,UAAU,KAAA,CAAM,QAAA;AAAA,UAChB,OAAA,EAAS,CAAC,CAAA,KAAM;AACd,YAAA,KAAA,CAAM,eAAA,CAAgB,CAAC,KAAA,CAAM,OAAO,CAAA;AAAA,UACtC,CAAA;AAAA,UACA,SAAA,EACE,6FAAA;AAAA,UAEF,eAAa,KAAA,CAAM,MAAA;AAAA,UAElB,QAAA,EAAA;AAAA,YAAA,KAAA,CAAM,0BACLnB,cAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,KAAA,EAAO,YAAA;AAAA,gBACP,QAAQ,KAAA,CAAM,IAAA;AAAA,gBACd,OAAA,EAAQ,WAAA;AAAA,gBACR,IAAA,EAAK,MAAA;AAAA,gBACL,KAAA,EAAM,4BAAA;AAAA,gBAEN,QAAA,kBAAAA,cAAAA;AAAA,kBAAC,MAAA;AAAA,kBAAA;AAAA,oBACC,QAAA,EAAS,SAAA;AAAA,oBACT,QAAA,EAAS,SAAA;AAAA,oBACT,CAAA,EAAE,+kBAAA;AAAA,oBACF,SAAA,EAAU;AAAA;AAAA;AACZ;AAAA,gCAGFA,cAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,OAAO,KAAA,CAAM,IAAA;AAAA,gBACb,QAAQ,KAAA,CAAM,IAAA;AAAA,gBACd,OAAA,EAAQ,WAAA;AAAA,gBACR,IAAA,EAAK,MAAA;AAAA,gBACL,KAAA,EAAM,4BAAA;AAAA,gBAEN,QAAA,kBAAAA,cAAAA;AAAA,kBAAC,MAAA;AAAA,kBAAA;AAAA,oBACC,CAAA,EAAE,oeAAA;AAAA,oBACF,SAAA,EAAU;AAAA;AAAA;AACZ;AAAA,aACF;AAAA,4BAGFA,cAAAA;AAAA,cAAC6B,cAAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAW,EAAA;AAAA,gBACX,IAAA,EAAK,IAAA;AAAA,gBACL,SAAA,EAAU,wCAAA;AAAA,gBAET,QAAA,EAAA,KAAA,CAAM;AAAA;AAAA;AACT;AAAA;AAAA,OACF;AAAA,IAEJ,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC3MA,IAAA,qBAAA,GAAA,EAAA;AAAA,QAAA,CAAA,qBAAA,EAAA;AAAA,EAAA,mBAAA,EAAA,MAAA;AAAA,CAAA,CAAA;AAAA,IAYa,mBAAA;AAZb,IAAA,kBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,wCAAA,GAAA;AAYO,IAAM,mBAAA,GAAmD,CAAC,KAAA,KAAU;AACzE,MAAA,MAAM,EAAA,GAAK,KAAA,CAAM,WAAA,EAAa,EAAA,IAAM,IAAA;AACpC,MAAA,MAAM,EAAE,CAAA,EAAE,GAAIX,0BAAAA,EAAe;AAC7B,MAAA,uBACElB,cAAAA;AAAA,QAAC0F,sBAAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,IAAA;AAAA,UACL,MAAM,KAAA,CAAM,iBAAA;AAAA,UACZ,YAAA,EAAc,CAAC,IAAA,KAAS;AACtB,YAAA,KAAA,CAAM,iBAAA,IAAoB;AAAA,UAC5B,CAAA;AAAA,UACA,KAAA,EAAO,EAAE,0BAA0B,CAAA;AAAA,UACnC,OAAA,EAAS;AAAA,YACP,OAAA,EAAS;AAAA,cACP,KAAA,EAAO,EAAE,WAAW,CAAA;AAAA,cACpB,aAAA,EAAe,+CAAA;AAAA,cACf,SAAA,EACE,kEAAA;AAAA,cACF,IAAA,EAAM,IAAA;AAAA,cACN,SAAS,YAAY;AACnB,gBAAA,OAAO,MAAM,SAAA,EAAU;AAAA,cACzB;AAAA,aACF;AAAA,YACA,SAAA,EAAW;AAAA,cACT,KAAA,EAAO,EAAE,6CAA6C,CAAA;AAAA,cACtD,aAAA,EAAe,iDAAA;AAAA,cACf,SAAA,EACE,2EAAA;AAAA,cACF,IAAA,EAAM,IAAA;AAAA,cACN,SAAS,YAAY;AACnB,gBAAA,OAAO,MAAM,gBAAA,EAAiB;AAAA,cAChC;AAAA;AACF,WACF;AAAA,UACA,UAAA,EAAY;AAAA,YACV,MAAA,EAAQ,oBAAA;AAAA,YACR,OAAA,EACE,gEAAA;AAAA,YACF,IAAA,EAAM;AAAA,WACR;AAAA,UAEA,QAAA,kBAAAvE,gBAACC,cAAAA,EAAA,EAAK,WAAW,QAAA,EAAU,GAAA,EAAK,CAAA,EAAG,SAAA,EAAW,OAAA,EAC5C,QAAA,EAAA;AAAA,4BAAApB,eAAC4B,mBAAAA,EAAA,EAAU,OAAO,CAAA,CAAE,kBAAkB,GACpC,QAAA,kBAAA5B,cAAAA;AAAA,cAAC6B,cAAAA,CAAK,SAAA;AAAA,cAAL;AAAA,gBACC,IAAA,EAAK,IAAA;AAAA,gBACL,SAAA,EAAW,EAAA;AAAA,gBACX,QAAA,EAAQ,IAAA;AAAA,gBACR,YAAA,EAAc,EAAA;AAAA,gBACd,SAAA,EAAU,eAAA;AAAA,gBACV,QAAQ,KAAA,CAAM,eAAA;AAAA,gBACd,aAAA,EAAY,iDAAA;AAAA,gBAEX,QAAA,EAAA,KAAA,CAAM;AAAA;AAAA,aACT,EACF,CAAA;AAAA,4BACA7B,eAAC4B,mBAAAA,EAAA,EAAU,OAAO,CAAA,CAAE,gCAAgC,GAClD,QAAA,kBAAA5B,cAAAA;AAAA,cAAC6B,cAAAA,CAAK,SAAA;AAAA,cAAL;AAAA,gBACC,IAAA,EAAK,IAAA;AAAA,gBACL,SAAA,EAAW,EAAA;AAAA,gBACX,QAAA,EAAQ,IAAA;AAAA,gBACR,YAAA,EAAc,EAAA;AAAA,gBACd,SAAA,EAAU,eAAA;AAAA,gBACV,QAAQ,MAAM,KAAA,CAAM,YAAA,CAAa,KAAA,CAAM,aAAa,GAAG,CAAA;AAAA,gBACvD,aAAA,EAAY,iDAAA;AAAA,gBAEX,gBAAM,WAAA,EAAa;AAAA;AAAA,aACtB,EACF,CAAA;AAAA,4BACAV,eAAAA,CAACS,mBAAAA,EAAA,EAAU,KAAA,EAAO,CAAA,CAAE,4BAA4B,CAAA,EAC9C,QAAA,EAAA;AAAA,8BAAA5B,cAAAA;AAAA,gBAAC6B,cAAAA,CAAK,SAAA;AAAA,gBAAL;AAAA,kBACC,IAAA,EAAK,IAAA;AAAA,kBACL,SAAA,EAAW,EAAA;AAAA,kBACX,QAAA,EAAQ,IAAA;AAAA,kBACR,YAAA,EAAc,EAAA;AAAA,kBACd,SAAA,EAAU,eAAA;AAAA,kBACV,QAAQ,KAAA,CAAM,kBAAA;AAAA,kBAEb,gBAAM,WAAA,EAAa;AAAA;AAAA,eACtB;AAAA,cAAkB;AAAA,aAAA,EACpB,CAAA;AAAA,4BACA7B,eAAC4B,mBAAAA,EAAA,EAAU,OAAO,CAAA,CAAE,qBAAqB,GACvC,QAAA,kBAAAT,eAAAA;AAAA,cAACC,cAAAA;AAAA,cAAA;AAAA,gBACC,KAAA,EAAO,GAAA;AAAA,gBACP,GAAA,EAAK,CAAA;AAAA,gBACL,SAAA,EAAW,QAAA;AAAA,gBACX,SAAA,EAAU,uCAAA;AAAA,gBAEV,QAAA,EAAA;AAAA,kCAAApB,cAAAA,CAACyH,aAAAA,EAAA,EAAI,SAAA,EAAU,qGACZ,QAAA,EAAA,EAAA,EACH,CAAA;AAAA,kBACC,EAAA,KAAO,wBACNzH,cAAAA;AAAA,oBAACyH,aAAAA;AAAA,oBAAA;AAAA,sBACC,KAAA,EAAO,EAAA;AAAA,sBACP,MAAA,EAAQ,EAAA;AAAA,sBACR,SAAA,EAAU,sCAAA;AAAA,sBAEV,QAAA,kBAAAzH,cAAAA;AAAA,wBAACuI,kBAAAA;AAAA,wBAAA;AAAA,0BACC,KAAA,EAAM,OAAA;AAAA,0BACN,OAAA,EAAS,IAAA;AAAA,0BACT,IAAA,EAAM,EAAA;AAAA,0BACN,OAAA,EAAS,CAAC,CAAA,KAAM;AACd,4BAAA,IAAI,MAAM,WAAA,EAAa,EAAA;AACrB,8BAAA,SAAA,CAAU,SAAA,CAAU,SAAA,CAAU,KAAA,CAAM,WAAA,EAAa,EAAE,CAAA;AACrD,4BAAA,KAAA,EAAO,QAAA,EAAS;AAAA,0BAClB;AAAA;AAAA;AACF;AAAA;AACF;AAAA;AAAA,aAEJ,EACF,CAAA;AAAA,4BACAvI,eAAC4B,mBAAAA,EAAA,EAAU,OAAO,CAAA,CAAE,8BAA8B,GAChD,QAAA,kBAAA5B,cAAAA;AAAA,cAAC6B,cAAAA;AAAA,cAAA;AAAA,gBACC,IAAA,EAAK,IAAA;AAAA,gBACL,SAAA,EAAW,EAAA;AAAA,gBACX,aAAA,EAAY,yDAAA;AAAA,gBAEX,gBAAM,WAAA,EAAa;AAAA;AAAA,aACtB,EACF,CAAA;AAAA,4BACA7B,eAAC,KAAA,EAAA,EAAI,CAAA;AAAA,4BACLA,cAAAA,CAAC6B,cAAAA,EAAA,EAAK,KAAA,EAAM,SAAA,EAAU,IAAA,EAAK,IAAA,EAAK,SAAA,EAAU,iBAAA,EACvC,QAAA,EAAA,CAAA,CAAE,kCAAkC,CAAA,EACvC;AAAA,WAAA,EACF;AAAA;AAAA,OACF;AAAA,IAEJ,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACzIA,IAAA,oBAAA,GAAA,EAAA;AAAA,QAAA,CAAA,oBAAA,EAAA;AAAA,EAAA,kBAAA,EAAA,MAAA;AAAA,CAAA,CAAA;AAAA,IAMa,kBAAA;AANb,IAAA,iBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,uCAAA,GAAA;AAGA,IAAA,kBAAA,EAAA;AAGO,IAAM,kBAAA,GAKR,CAAC,KAAA,KAAU;AACd,MAAA,MAAM,EAAE,IAAA,EAAM,IAAA,EAAM,OAAA,EAAS,UAAS,GAAI,KAAA;AAC1C,MAAA,MAAM,EAAE,CAAA,EAAE,GAAIX,0BAAAA,EAAe;AAC7B,MAAA,uBACElB,cAAAA;AAAA,QAAC0F,sBAAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,IAAA;AAAA,UACL,IAAA;AAAA,UACA,YAAA,EAAc,OAAA;AAAA,UACd,KAAA,EAAO,EAAE,sCAAsC,CAAA;AAAA,UAC/C,OAAA,EAAS;AAAA,YACP,OAAA,EAAS;AAAA,cACP,KAAA,EAAO,EAAE,gBAAgB,CAAA;AAAA,cACzB,aAAA,EAAe,mDAAA;AAAA,cACf,SAAA,EAAW,gCAAA;AAAA,cACX,IAAA,EAAM,IAAA;AAAA,cACN,SAAS,YAAY;AACnB,gBAAA,MAAM,KAAA,CAAM,WAAW,IAAI,CAAA;AAC3B,gBAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,cACf;AAAA,aACF;AAAA,YACA,SAAA,EAAW;AAAA,cACT,KAAA,EAAO,EAAE,eAAe,CAAA;AAAA,cACxB,SAAA,EAAW,gCAAA;AAAA,cACX,IAAA,EAAM,IAAA;AAAA,cACN,SAAS,YAAY;AACnB,gBAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,cACf;AAAA;AACF,WACF;AAAA,UACA,UAAA,EAAY;AAAA,YACV,MAAA,EAAQ,oBAAA;AAAA,YACR,OAAA,EACE;AAAA,WACJ;AAAA,UAEA,0BAAA1F,cAAAA,CAACoB,cAAAA,EAAA,EAAK,SAAA,EAAU,eAEd,QAAA,kBAAApB,cAAAA;AAAA,YAACwI,iBAAA;AAAA,YAAA;AAAA,cACC,OAAA,EAAQ,4CAAA;AAAA,cACR,QAAQ,EAAE,MAAA,EAAQ,SAAA,CAAU,IAAA,EAAM,WAAW,CAAA,EAAE;AAAA,cAC/C,UAAA,EAAY,iBAACxI,cAAAA,CAAC6B,cAAAA,EAAA,EAAK,KAAA,EAAM,SAAA,EAAU,SAAA,EAAU,UAAA,EAAW,CAAE;AAAA;AAAA,WAC5D,EACF;AAAA;AAAA,OACF;AAAA,IAEJ,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACxDA,IAAA,kBAAA,GAAA,EAAA;AAAA,QAAA,CAAA,kBAAA,EAAA;AAAA,EAAA,gBAAA,EAAA,MAAA;AAAA,CAAA,CAAA;AAAA,IAMa,gBAAA;AANb,IAAA,eAAA,GAAA,KAAA,CAAA;AAAA,EAAA,qCAAA,GAAA;AAIA,IAAA,iBAAA,EAAA;AAEO,IAAM,gBAAA,GAMR,CAAC,KAAA,KAAU;AACd,MAAA,MAAM,EAAE,IAAA,EAAM,IAAA,EAAM,OAAA,EAAS,UAAS,GAAI,KAAA;AAC1C,MAAA,MAAM,CAAC,QAAQ,SAAS,CAAA,GAAI/B,iBAAS,IAAA,CAAK,mBAAA,EAAqB,IAAA,CAAK,GAAG,CAAC,CAAA;AACxE,MAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIA,iBAAS,IAAI,CAAA;AACrC,MAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIA,iBAAS,IAAI,CAAA;AACvC,MAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIA,iBAAS,EAAE,CAAA;AACnC,MAAA,MAAM,EAAE,CAAA,EAAE,GAAIoB,0BAAAA,EAAe;AAE7B,MAAAiF,kBAAU,MAAM;AACd,QAAA,SAAA,CAAU,IAAA,CAAK,mBAAA,CAAoB,IAAA,CAAK,GAAG,CAAC,CAAA;AAC5C,QAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,KAAA,EAAO,iBAAA,EAAkB,IAAK,EAAA;AAEjD,QAAA,OAAA,CAAQ,KAAA,CAAM,QAAA,CAAS,MAAM,CAAC,CAAA;AAC9B,QAAA,QAAA,CAAS,KAAA,CAAM,QAAA,CAAS,SAAS,CAAC,CAAA;AAAA,MACpC,CAAA,EAAG,CAAC,IAAI,CAAC,CAAA;AAET,MAAAA,kBAAU,MAAM;AACd,QAAA,IAAI,MAAA,CAAO,MAAA,KAAW,CAAA,EAAG,OAAA,CAAQ,EAAE,CAAA;AAAA,MACrC,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAEX,MAAA,uBACEnG,cAAAA;AAAA,QAAC0F,sBAAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,IAAA;AAAA,UACL,IAAA;AAAA,UACA,YAAA,EAAc,OAAA;AAAA,UACd,KAAA,EAAO,EAAE,oCAAoC,CAAA;AAAA,UAC7C,OAAA,EAAS;AAAA,YACP,OAAA,EAAS;AAAA,cACP,KAAA,EAAO,EAAE,gBAAgB,CAAA;AAAA,cACzB,aAAA,EAAe,iDAAA;AAAA,cACf,SAAA,EAAW,gCAAA;AAAA,cACX,SAAS,YAAY;AACnB,gBAAA,IAAI,MAAA,CAAO,SAAS,CAAA,EAAG;AACrB,kBAAA,MAAM4C,KAAAA,GAAO,KAAA,CAAM,QAAA,CAAS,MAAM,CAAA;AAClC,kBAAA,OAAA,CAAQA,KAAI,CAAA;AACZ,kBAAA,IAAIA,KAAAA,CAAK,SAAS,CAAA,EAAG;AACnB,oBAAA;AAAA,kBACF;AAAA,gBACF;AACA,gBAAA,MAAM,KAAA,CAAM,QAAA,GAAW,IAAA,EAAM,MAAM,CAAA;AACnC,gBAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,cACf,CAAA;AAAA,cACA,QAAA,EAAU,IAAA,CAAK,mBAAA,CAAoB,IAAA,CAAK,GAAG,CAAA,KAAM,MAAA;AAAA,cACjD,IAAA,EAAM,IAAA;AAAA,cACN,SAAA,EAAW;AAAA;AACb,WACF;AAAA,UACA,UAAA,EAAY;AAAA,YACV,MAAA,EAAQ,oBAAA;AAAA,YACR,OAAA,EACE;AAAA,WACJ;AAAA,UAEA,0BAAAnH,eAAAA,CAACC,cAAAA,EAAA,EAAK,SAAA,EAAW,QAAA,EAAU,KAAK,CAAA,EAK9B,QAAA,EAAA;AAAA,4BAAAD,eAAAA,CAACC,cAAAA,EAAA,EAAK,SAAA,EAAW,QAAA,EAAU,KAAK,CAAA,EAAG,KAAA,EAAO,MAAA,EAAQ,SAAA,EAAW,OAAA,EAC3D,QAAA,EAAA;AAAA,8BAAApB,cAAAA,CAAC6B,gBAAA,EAAK,SAAA,EAAW,IAAI,IAAA,EAAK,KAAA,EACvB,QAAA,EAAA,CAAA,CAAE,uCAAuC,CAAA,EAC5C,CAAA;AAAA,8BACA7B,cAAAA;AAAA,gBAAC,UAAA;AAAA,gBAAA;AAAA,kBACC,aAAA,EAAY,8CAAA;AAAA,kBACZ,WAAA,EAAa,EAAE,mDAAmD,CAAA;AAAA,kBAClE,SAAA,EAAW+E,YAAAA;AAAA,oBACT,qGAAA;AAAA,oBACA,kFAAA;AAAA,oBACA,kCAAA;AAAA,oBACA,IAAA,CAAK,SAAS,CAAA,IACZ;AAAA,mBACJ;AAAA,kBACA,KAAA,EAAO,MAAA;AAAA,kBACP,QAAA,EAAU,CAAC,CAAA,KAAM;AACf,oBAAA,SAAA,CAAU,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,kBAC1B,CAAA;AAAA,kBACA,KAAA,EAAO;AAAA,oBACL,MAAA,EAAQ;AAAA;AACV;AAAA,eACF;AAAA,cACC,IAAA,CAAK,MAAA,GAAS,CAAA,oBACb5D,eAAAA,CAACC,gBAAA,EAAK,GAAA,EAAK,CAAA,EAAG,SAAA,EAAU,cAAA,EACtB,QAAA,EAAA;AAAA,gCAAApB,cAAAA;AAAA,kBAAC,KAAA;AAAA,kBAAA;AAAA,oBACC,SAAA,EAAW+E,YAAAA;AAAA,sBACT,6BAAA;AAAA,sBACA;AAAA;AACF;AAAA,iBACF;AAAA,gCACA/E,cAAAA,CAAC6B,cAAAA,EAAA,EAAK,KAAA,EAAM,UAAS,IAAA,EAAK,IAAA,EAAK,SAAA,EAAU,UAAA,EACtC,QAAA,EAAA,IAAA,EACH;AAAA,eAAA,EACF;AAAA,aAAA,EAEJ,CAAA;AAAA,4BACA7B,cAAAA;AAAA,cAAC4B,mBAAAA;AAAA,cAAA;AAAA,gBACC,KAAA,kBACE5B,cAAAA,CAAC6B,cAAAA,EAAA,EAAK,IAAA,EAAK,IAAA,EAAK,SAAA,EAAW,EAAA,EACxB,QAAA,EAAA,CAAA,CAAE,8BAA8B,CAAA,EACnC,CAAA;AAAA,gBAEF,SAAA,EAAU,YAAA;AAAA,gBAEV,QAAA,kBAAAV,eAAAA;AAAA,kBAACC,cAAAA;AAAA,kBAAA;AAAA,oBACC,SAAA,EAAW,KAAA;AAAA,oBACX,GAAA,EAAK,CAAA;AAAA,oBACL,SAAA,EAAW,OAAA;AAAA,oBACX,SAAA,EAAU,UAAA;AAAA,oBAEV,QAAA,EAAA;AAAA,sCAAApB,cAAAA;AAAA,wBAAC,QAAA;AAAA,wBAAA;AAAA,0BACC,QAAA,EAAQ,IAAA;AAAA,0BACR,IAAA,EAAM,EAAA;AAAA,0BACN,OAAA,EAAS,IAAA;AAAA,0BACT,eAAA,EAAiB,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAY,CAAA;AAAA,0BAC5C,KAAA,EAAO,EAAE,mCAAmC;AAAA;AAAA,uBAC9C;AAAA,sCACAA,cAAAA;AAAA,wBAAC,QAAA;AAAA,wBAAA;AAAA,0BACC,QAAA,EAAQ,IAAA;AAAA,0BACR,IAAA,EAAM,EAAA;AAAA,0BACN,OAAA,EAAS,KAAA;AAAA,0BACT,eAAA,EAAiB,CAAC,CAAA,KAAM,QAAA,CAAS,CAAY,CAAA;AAAA,0BAC7C,KAAA,EAAO,EAAE,sCAAsC;AAAA;AAAA;AACjD;AAAA;AAAA;AACF;AAAA;AACF,WAAA,EACF;AAAA;AAAA,OACF;AAAA,IAEJ,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;AC6OO,SAAS,UAAU,KAAA,EAAuB;AAC/C,EAAA,IAAI,OAAO,UAAU,WAAA,EAAa;AAChC,IAAA,OAAO,GAAA;AAAA,EACT;AACA,EAAA,MAAM,GAAA,GAAM,CAAA,EAAG,KAAK,CAAA,CAAA,CAAG,KAAA,CAAM,CAAA,EAAG,IAAA,CAAK,GAAA,CAAI,KAAA,CAAM,MAAA,EAAQ,EAAE,CAAC,CAAA;AAC1D,EAAA,OAAO,GAAG,GAAG,CAAA,GAAA,CAAA;AACf;AA9XA,IAwBM,sBAAA,EAMA,yBAMA,sBAAA,EAMA,oBAAA,EAMO,YA8BP,WAAA,EAwDA,QAAA,EAqDA,SAoHA,UAAA,EAsCA,YAAA;AArVN,IAAA,kBAAA,GAAA,KAAA,CAAA;AAAA,EAAA,iCAAA,GAAA;AAmBA,IAAA,sBAAA,EAAA;AAKA,IAAM,yBAAyB6E,wBAAAA,CAAM,IAAA;AAAA,MAAK,MACxC,OAAA,CAAA,OAAA,EAAA,CAAA,IAAA,CAAA,OAAA,iBAAA,EAAA,EAAA,oBAAA,CAAA,CAAA,CAAgC,IAAA,CAAK,CAAC,GAAA,KAAQ;AAC5C,QAAA,OAAO,EAAE,OAAA,EAAS,GAAA,CAAI,kBAAA,EAAmB;AAAA,MAC3C,CAAC;AAAA,KACH;AAEA,IAAM,0BAA0BA,wBAAAA,CAAM,IAAA;AAAA,MAAK,MACzC,OAAA,CAAA,OAAA,EAAA,CAAA,IAAA,CAAA,OAAA,kBAAA,EAAA,EAAA,qBAAA,CAAA,CAAA,CAAiC,IAAA,CAAK,CAAC,GAAA,KAAQ;AAC7C,QAAA,OAAO,EAAE,OAAA,EAAS,GAAA,CAAI,mBAAA,EAAoB;AAAA,MAC5C,CAAC;AAAA,KACH;AAEA,IAAM,yBAAyBA,wBAAAA,CAAM,IAAA;AAAA,MAAK,MACxC,OAAA,CAAA,OAAA,EAAA,CAAA,IAAA,CAAA,OAAA,iBAAA,EAAA,EAAA,oBAAA,CAAA,CAAA,CAAgC,IAAA,CAAK,CAAC,GAAA,KAAQ;AAC5C,QAAA,OAAO,EAAE,OAAA,EAAS,GAAA,CAAI,kBAAA,EAAmB;AAAA,MAC3C,CAAC;AAAA,KACH;AAEA,IAAM,uBAAuBA,wBAAAA,CAAM,IAAA;AAAA,MAAK,MACtC,OAAA,CAAA,OAAA,EAAA,CAAA,IAAA,CAAA,OAAA,eAAA,EAAA,EAAA,kBAAA,CAAA,CAAA,CAA8B,IAAA,CAAK,CAAC,GAAA,KAAQ;AAC1C,QAAA,OAAO,EAAE,OAAA,EAAS,GAAA,CAAI,gBAAA,EAAiB;AAAA,MACzC,CAAC;AAAA,KACH;AAEO,IAAM,UAAA,GAAgD,CAAC,KAAA,KAAU;AACtE,MAAA,MAAM,EAAE,CAAA,EAAE,GAAI3D,0BAAAA,EAAe;AAC7B,MAAA,uBACEC,eAAAA;AAAA,QAACO,cAAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAO,EAAE,mBAAmB,CAAA;AAAA,UAC5B,EAAA,EAAG,0BAAA;AAAA,UACH,SAAA,EAAU,iCAAA;AAAA,UAEV,QAAA,EAAA;AAAA,4BAAAP,eAAAA;AAAA,cAACC,cAAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAW,QAAA;AAAA,gBACX,GAAA,EAAK,CAAA;AAAA,gBACL,KAAA,EAAO,MAAA;AAAA,gBACP,SAAA,EAAU,mBAAA;AAAA,gBAEV,QAAA,EAAA;AAAA,kCAAApB,cAAAA,CAAC,WAAA,EAAA,EAAa,GAAG,KAAA,EAAO,CAAA;AAAA,kCACxBA,cAAAA,CAAC,QAAA,EAAA,EAAU,GAAG,KAAA,EAAO;AAAA;AAAA;AAAA,aACvB;AAAA,4BACAmB,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,8BAAAnB,cAAAA,CAAC,OAAA,EAAA,EAAS,GAAG,KAAA,EAAO,CAAA;AAAA,8BACpBA,cAAAA,CAAC6E,wBAAAA,CAAM,QAAA,EAAN,EAAe,QAAA,EAAU,IAAA,EACxB,QAAA,kBAAA7E,cAAAA,CAAC,sBAAA,EAAA,EAAwB,GAAG,KAAA,EAAO,CAAA,EACrC,CAAA;AAAA,8BACAA,cAAAA,CAAC6E,wBAAAA,CAAM,QAAA,EAAN,EAAe,QAAA,EAAU,IAAA,EACxB,QAAA,kBAAA7E,cAAAA,CAAC,uBAAA,EAAA,EAAyB,GAAG,KAAA,EAAO,CAAA,EACtC;AAAA,aAAA,EACF;AAAA;AAAA;AAAA,OACF;AAAA,IAEJ,CAAA;AAEA,IAAM,WAAA,GAAiD,CAAC,KAAA,KAAU;AAChE,MAAA,MAAM,EAAE,CAAA,EAAE,GAAIkB,0BAAAA,EAAe;AAC7B,MAAA,uBACEC,eAAAA;AAAA,QAACC,cAAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAO,MAAA;AAAA,UACP,GAAA,EAAK,CAAA;AAAA,UACL,SAAA,EAAU,2CAAA;AAAA,UAEV,QAAA,EAAA;AAAA,4BAAAD,eAAAA;AAAA,cAACC,cAAAA;AAAA,cAAA;AAAA,gBACC,EAAA,EAAI,CAAA;AAAA,gBACJ,EAAA,EAAI,CAAA;AAAA,gBACJ,SAAA,EAAW,QAAA;AAAA,gBACX,SAAA,EAAW,OAAA;AAAA,gBACX,CAAA,EAAE,IAAA;AAAA,gBACF,QAAA,EAAS,SAAA;AAAA,gBACT,KAAA,EAAO,EAAA;AAAA,gBACP,MAAA,EAAM,IAAA;AAAA,gBACN,SAAA,EAAU,WAAA;AAAA,gBAEV,QAAA,EAAA;AAAA,kCAAApB,cAAAA,CAAC6B,gBAAA,EAAK,IAAA,EAAK,MAAK,SAAA,EAAW,EAAA,EACxB,QAAA,EAAA,CAAA,CAAE,kBAAkB,CAAA,EACvB,CAAA;AAAA,kCACA7B,cAAAA;AAAA,oBAAC6B,cAAAA,CAAK,SAAA;AAAA,oBAAL;AAAA,sBACC,IAAA,EAAK,MAAA;AAAA,sBACL,MAAA,EAAQ,EAAA;AAAA,sBACR,IAAA,EAAM,SAAA;AAAA,sBACN,QAAA,EAAU,MAAM,SAAA,KAAc,IAAA;AAAA,sBAC9B,YAAA,EAAc,EAAA;AAAA,sBACd,QAAQ,KAAA,CAAM,eAAA;AAAA,sBACd,cAAA,EAAe,kDAAA;AAAA,sBAEd,QAAA,EAAA,KAAA,CAAM;AAAA;AAAA;AACT;AAAA;AAAA,aACF;AAAA,4BACAV,eAAAA;AAAA,cAACC,cAAAA;AAAA,cAAA;AAAA,gBACC,EAAA,EAAI,CAAA;AAAA,gBACJ,EAAA,EAAI,CAAA;AAAA,gBACJ,SAAA,EAAW,QAAA;AAAA,gBACX,SAAA,EAAW,OAAA;AAAA,gBACX,CAAA,EAAE,IAAA;AAAA,gBACF,QAAA,EAAS,SAAA;AAAA,gBACT,KAAA,EAAO,EAAA;AAAA,gBACP,MAAA,EAAM,IAAA;AAAA,gBACN,SAAA,EAAU,WAAA;AAAA,gBAEV,QAAA,EAAA;AAAA,kCAAApB,cAAAA,CAAC6B,gBAAA,EAAK,IAAA,EAAK,MAAK,SAAA,EAAW,EAAA,EACxB,QAAA,EAAA,CAAA,CAAE,sBAAsB,CAAA,EAC3B,CAAA;AAAA,kCACA7B,eAAC6B,cAAAA,EAAA,EAAK,MAAK,MAAA,EAAO,MAAA,EAAQ,EAAA,EACvB,QAAA,EAAA,KAAA,CAAM,MAAA,EACT;AAAA;AAAA;AAAA;AACF;AAAA;AAAA,OACF;AAAA,IAEJ,CAAA;AAEA,IAAM,QAAA,GAA8C,CAAC,KAAA,KAAU;AAC7D,MAAA,MAAM,EAAE,CAAA,EAAE,GAAIX,0BAAAA,EAAe;AAC7B,MAAA,uBACEC,eAAAA;AAAA,QAACC,cAAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAO,MAAA;AAAA,UACP,SAAA,EAAW,KAAA;AAAA,UACX,SAAA,EAAU,uDAAA;AAAA,UAEV,QAAA,EAAA;AAAA,4BAAAD,eAAAA,CAACC,cAAAA,EAAA,EAAK,SAAA,EAAW,QAAA,EAAU,WAAW,OAAA,EAAS,KAAA,EAAO,MAAA,EAAQ,GAAA,EAAK,CAAA,EACjE,QAAA,EAAA;AAAA,8BAAApB,eAAC6B,cAAAA,EAAA,EAAK,WAAW,EAAA,EAAK,QAAA,EAAA,CAAA,CAAE,8BAA8B,CAAA,EAAE,CAAA;AAAA,8BACxDV,eAAAA;AAAA,gBAACC,cAAAA;AAAA,gBAAA;AAAA,kBACC,SAAA,EAAW,QAAA;AAAA,kBACX,SAAA,EAAU,2IAAA;AAAA,kBACV,SAAS,KAAA,CAAM,cAAA;AAAA,kBAEf,QAAA,EAAA;AAAA,oCAAApB,cAAAA,CAAC6B,cAAAA,EAAA,EAAM,QAAA,EAAA,CAAA,CAAE,+BAA+B,CAAA,EAAE,CAAA;AAAA,oCAC1C7B,cAAAA;AAAA,sBAAC,KAAA;AAAA,sBAAA;AAAA,wBACC,KAAA,EAAM,IAAA;AAAA,wBACN,MAAA,EAAO,IAAA;AAAA,wBACP,OAAA,EAAQ,WAAA;AAAA,wBACR,IAAA,EAAK,cAAA;AAAA,wBACL,KAAA,EAAM,4BAAA;AAAA,wBAEN,QAAA,kBAAAA,cAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,6LAAA,EAA8L;AAAA;AAAA;AACxM;AAAA;AAAA;AACF,aAAA,EACF,CAAA;AAAA,4BACAA,cAAAA;AAAA,cAACyI,mCAAA;AAAA,cAAA;AAAA,gBACC,IAAA,EAAK,KAAA;AAAA,gBACL,OAAA,EAAS;AAAA,kBACP,aAAA,EAAe,EAAE,+CAA+C,CAAA;AAAA,kBAChE,MAAA,EAAQ,EAAE,+CAA+C,CAAA;AAAA,kBACzD,aAAA,EAAe,EAAE,+CAA+C,CAAA;AAAA,kBAChE,YAAA,EAAc,EAAE,8CAA8C;AAAA,iBAChE;AAAA,gBAEA,QAAA,kBAAAzI,cAAAA;AAAA,kBAACsB,gBAAAA;AAAA,kBAAA;AAAA,oBACC,IAAA,EAAK,IAAA;AAAA,oBACL,IAAA,kBAAMtB,cAAAA,CAAC0I,kBAAA,EAAA,EAAS,CAAA;AAAA,oBAChB,OAAA,EAAQ,WAAA;AAAA,oBACR,KAAA,EAAM,SAAA;AAAA,oBACN,SAAS,KAAA,CAAM,cAAA;AAAA,oBACf,QAAA,EAAU,CAAC,KAAA,CAAM,eAAA;AAAA,oBAEjB,aAAA,EAAY,oCAAA;AAAA,oBAEX,YAAE,sCAAsC;AAAA;AAAA;AAC3C;AAAA;AACF;AAAA;AAAA,OACF;AAAA,IAEJ,CAAA;AAEA,IAAM,OAAA,GAA6C,CAAC,KAAA,KAAU;AAC5D,MAAA,MAAM,EAAE,CAAA,EAAE,GAAIxH,0BAAAA,EAAe;AAC7B,MAAA,MAAM,OAAA,GAAgC;AAAA,QACpC;AAAA,UACE,KAAA,EAAO,EAAE,gCAAgC,CAAA;AAAA,UACzC,SAAA,EAAW,aAAA;AAAA,UACX,KAAA,EAAO,GAAA;AAAA,UACP,MAAA,EAAQ,CAAC,KAAA,KAAU;AACjB,YAAA,MAAM,UAAU,OAAO,KAAA,KAAU,WAAW,KAAA,GAAQ,CAAA,EAAG,SAAS,EAAE,CAAA,CAAA;AAClE,YAAA,MAAM,UAAA,GAAa,UAAU,OAAO,CAAA;AACpC,YAAA,uBACEC,eAAAA,CAACC,cAAAA,EAAA,EAAK,GAAA,EAAK,CAAA,EAAG,WAAW,QAAA,EACvB,QAAA,EAAA;AAAA,8BAAApB,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2CAAA,EACb,QAAA,kBAAAA,cAAAA,CAAC6B,cAAAA,CAAK,SAAA,EAAL,EAAe,IAAA,EAAM,EAAA,EAAK,QAAA,EAAA,UAAA,EAAW,CAAA,EACxC,CAAA;AAAA,cACC,CAAC,CAAC,OAAA,oBACD7B,cAAAA,CAACyH,aAAAA,EAAA,EAAI,KAAA,EAAO,EAAA,EAAI,MAAA,EAAQ,EAAA,EAAI,SAAA,EAAU,sBACpC,QAAA,kBAAAzH,cAAAA;AAAA,gBAACuI,kBAAAA;AAAA,gBAAA;AAAA,kBACC,KAAA,EAAM,OAAA;AAAA,kBACN,OAAA,EAAS,IAAA;AAAA,kBACT,IAAA,EAAM,EAAA;AAAA,kBACN,OAAA,EAAS,CAAC,CAAA,KAAM;AACd,oBAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,oBAAA,SAAA,CAAU,SAAA,CAAU,UAAU,OAAO,CAAA;AACrC,oBAAA,KAAA,CAAM,eAAe,OAAO,CAAA;AAAA,kBAC9B;AAAA;AAAA,eACF,EACF;AAAA,aAAA,EAEJ,CAAA;AAAA,UAEJ;AAAA,SACF;AAAA,QACA;AAAA,UACE,KAAA,EAAO,EAAE,wCAAwC,CAAA;AAAA,UACjD,SAAA,EAAW,OAAA;AAAA,UACX,QAAQ,CAAC,KAAA,KACP,KAAA,EACI,KAAA,CAAM,GAAG,CAAA,CACV,GAAA,CAAI,CAAC,CAAA,KAAW,oBAAoB,CAAA,EAAG,CAAC,EAAE,CAAC,CAAA,CAC3C,KAAK,IAAI;AAAA,SAChB;AAAA,QACA;AAAA,UACE,KAAA,EAAO,EAAE,sCAAsC,CAAA;AAAA,UAC/C,SAAA,EAAW,qBAAA;AAAA,UACX,MAAA,EAAQ,CAAC,KAAA,KAAU;AACjB,YAAA,IAAI,EAAA,GAAK,KAAA,CAAM,IAAA,CAAK,GAAG,CAAA;AACvB,YAAA,IAAI,EAAA,CAAG,WAAW,CAAA,EAAG;AACnB,cAAA,EAAA,GAAK,IAAA;AAAA,YACP;AACA,YAAA,uBACEvI,cAAAA,CAACqC,iBAAAA,EAAA,EAAQ,OAAA,EAAS,EAAA,EAAI,SAAA,EAAU,iCAAA,EAC9B,QAAA,kBAAAlB,eAAAA,CAACC,cAAAA,EAAA,EAAK,KAAK,CAAA,EACT,QAAA,EAAA;AAAA,8BAAApB,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,4CAAA,EACZ,QAAA,EAAA,EAAA,EACH,CAAA;AAAA,cACC,EAAA,KAAO,IAAA,oBACNA,cAAAA,CAACyH,aAAAA,EAAA,EAAI,KAAA,EAAO,EAAA,EAAI,MAAA,EAAQ,EAAA,EAAI,SAAA,EAAU,oBAAA,EACpC,QAAA,kBAAAzH,cAAAA;AAAA,gBAACuI,kBAAAA;AAAA,gBAAA;AAAA,kBACC,KAAA,EAAM,OAAA;AAAA,kBACN,OAAA,EAAS,IAAA;AAAA,kBACT,IAAA,EAAM,EAAA;AAAA,kBACN,OAAA,EAAS,CAAC,CAAA,KAAM;AACd,oBAAA,SAAA,CAAU,SAAA,CAAU,UAAU,EAAE,CAAA;AAChC,oBAAA,KAAA,EAAO,QAAA,EAAS;AAAA,kBAClB;AAAA;AAAA,eACF,EACF;AAAA,aAAA,EAEJ,CAAA,EACF,CAAA;AAAA,UAEJ;AAAA,SACF;AAAA,QACA;AAAA,UACE,KAAA,EAAO,EAAE,wCAAwC,CAAA;AAAA,UACjD,SAAA,EAAW,YAAA;AAAA,UACX,MAAA,EAAQ,CAAC,KAAA,qBACPvI,cAAAA,CAAC6B,cAAAA,CAAK,SAAA,EAAL,EAAe,IAAA,EAAM,MAAA,EAAQ,YAAA,EAAa,YAAA,EACxC,QAAA,EAAA,KAAA,EACH;AAAA,SAEJ;AAAA,QACA;AAAA,UACE,KAAA,EAAO,EAAA;AAAA,UACP,IAAA,EAAM,QAAA;AAAA,UACN,SAAA,EAAW,QAAA;AAAA,UACX,KAAA,EAAO,GAAA;AAAA,UACP,MAAA,EAAQ,CAAC,CAAA,EAAG,IAAA,KAAS;AACnB,YAAA,uBACEV,eAAAA,CAACC,cAAAA,EAAA,EAAK,SAAA,EAAW,KAAA,EAAO,KAAK,CAAA,EAC3B,QAAA,EAAA;AAAA,8BAAApB,cAAAA;AAAA,gBAAC,UAAA;AAAA,gBAAA;AAAA,kBACC,IAAA;AAAA,kBACA,UAAU,KAAA,CAAM,MAAA;AAAA,kBAChB,UAAU,KAAA,CAAM;AAAA;AAAA,eAClB;AAAA,8BACAA,cAAAA,CAAC,YAAA,EAAA,EAAa,IAAA,EAAY,QAAA,EAAU,MAAM,QAAA,EAAU;AAAA,aAAA,EACtD,CAAA;AAAA,UAEJ;AAAA;AACF,OACF;AAEA,MAAA,uBACEA,cAAAA;AAAA,QAAC4D,qCAAAA;AAAA,QAAA;AAAA,UACC,QAAA,EAAQ,IAAA;AAAA,UACR,OAAA;AAAA,UACA,SAAS,KAAA,CAAM,SAAA;AAAA,UACf,YAAY,KAAA,CAAM,IAAA;AAAA,UAClB,SAAA,kBAAW5D,cAAAA,CAAC2I,iCAAA,EAAA,EAAe,CAAA;AAAA,UAC3B,YAAY,KAAA,CAAM,UAAA;AAAA,UAClB,gBAAA,EAAkB;AAAA;AAAA,OACpB;AAAA,IAEJ,CAAA;AAEA,IAAM,UAAA,GAID,CAAC,KAAA,KAAU;AACd,MAAA,MAAM,EAAE,IAAA,EAAM,QAAA,EAAU,QAAA,EAAS,GAAI,KAAA;AACrC,MAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAI7I,iBAAS,KAAK,CAAA;AACtC,MAAA,MAAM,EAAE,CAAA,EAAE,GAAIoB,0BAAAA,EAAe;AAE7B,MAAA,uBACEC,eAAAA,CAAAQ,mBAAAA,EAAA,EACE,QAAA,EAAA;AAAA,wBAAA3B,cAAAA;AAAA,UAACsB,gBAAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,IAAA;AAAA,YACL,KAAA,EAAM,SAAA;AAAA,YACN,OAAA,EAAQ,WAAA;AAAA,YACR,OAAA,EAAS,CAAC,CAAA,KAAM;AACd,cAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,cAAA,OAAA,CAAQ,IAAI,CAAA;AAAA,YACd,CAAA;AAAA,YACA,aAAA,EAAY,oCAAA;AAAA,YAEX,YAAE,aAAa;AAAA;AAAA,SAClB;AAAA,QACC,IAAA,oBACCtB,cAAAA,CAAC6E,wBAAAA,CAAM,UAAN,EAAe,QAAA,EAAU,MACxB,QAAA,kBAAA7E,cAAAA;AAAA,UAAC,oBAAA;AAAA,UAAA;AAAA,YACC,IAAA;AAAA,YACA,IAAA;AAAA,YACA,OAAA;AAAA,YACA,QAAA;AAAA,YACA;AAAA;AAAA,SACF,EACF;AAAA,OAAA,EAEJ,CAAA;AAAA,IAEJ,CAAA;AAEA,IAAM,YAAA,GAGD,CAAC,KAAA,KAAU;AACd,MAAA,MAAM,EAAE,IAAA,EAAM,QAAA,EAAS,GAAI,KAAA;AAC3B,MAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIF,iBAAS,KAAK,CAAA;AACtC,MAAA,MAAM,EAAE,CAAA,EAAE,GAAIoB,0BAAAA,EAAe;AAC7B,MAAA,uBACEC,eAAAA,CAAAQ,mBAAAA,EAAA,EACE,QAAA,EAAA;AAAA,wBAAA3B,cAAAA;AAAA,UAACsB,gBAAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,IAAA;AAAA,YACL,KAAA,EAAM,MAAA;AAAA,YACN,OAAA,EAAQ,WAAA;AAAA,YACR,OAAA,EAAS,CAAC,CAAA,KAAM;AACd,cAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,cAAA,OAAA,CAAQ,IAAI,CAAA;AAAA,YACd,CAAA;AAAA,YACA,aAAA,EAAY,sCAAA;AAAA,YAEX,YAAE,eAAe;AAAA;AAAA,SACpB;AAAA,QACC,IAAA,oBACCtB,cAAAA,CAAC6E,wBAAAA,CAAM,UAAN,EAAe,QAAA,EAAU,MACxB,QAAA,kBAAA7E,cAAAA;AAAA,UAAC,sBAAA;AAAA,UAAA;AAAA,YACC,IAAA;AAAA,YACA,IAAA;AAAA,YACA,OAAA;AAAA,YACA;AAAA;AAAA,SACF,EACF;AAAA,OAAA,EAEJ,CAAA;AAAA,IAEJ,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;ACjXO,IAAK,wBAAA,qBAAA4I,yBAAAA,KAAL;AACL,EAAAA,0BAAA,UAAA,CAAA,GAAW,YAAA;AACX,EAAAA,0BAAA,WAAA,CAAA,GAAY,sBAAA;AACZ,EAAAA,0BAAA,QAAA,CAAA,GAAS,mBAAA;AACT,EAAAA,0BAAA,QAAA,CAAA,GAAS,mBAAA;AACT,EAAAA,0BAAA,SAAA,CAAA,GAAU,oBAAA;AACV,EAAAA,0BAAA,QAAA,CAAA,GAAS,mBAAA;AACT,EAAAA,0BAAA,SAAA,CAAA,GAAU,oBAAA;AACV,EAAAA,0BAAA,SAAA,CAAA,GAAU,oBAAA;AACV,EAAAA,0BAAA,mBAAA,CAAA,GAAoB,+BAAA;AATV,EAAA,OAAAA,yBAAAA;AAAA,CAAA,EAAA,wBAAA,IAAA,EAAA;AAgBL,IAAM,wBAAA,GAA2B,CAAC,KAAA,KAAmC;AAC1E,EAAA,MAAM,EAAE,aAAA,EAAc,GAAIX,oCAAA,EAAmB;AAC7C,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAInI,gBAAA;AAAA,IAC5B,KAAA,CAAM,OAAA,IAAW,aAAA,EAAe,WAAA,IAAe;AAAA,GACjD;AACA,EAAA,MAAM,EAAE,CAAA,EAAE,GAAIoB,0BAAA,EAAe;AAE7B,EAAAiF,iBAAA,CAAU,MAAM;AACd,IAAA,IAAI,KAAA,CAAM,OAAA,IAAW,aAAA,EAAe,WAAA,EAAa;AAC/C,MAAA,UAAA,CAAW,KAAA,CAAM,OAAA,IAAW,aAAA,EAAe,WAAA,IAAe,YAAY,CAAA;AAAA,IACxE;AAAA,EACF,GAAG,CAAC,KAAA,CAAM,OAAA,EAAS,aAAA,EAAe,WAAW,CAAC,CAAA;AAE9C,EAAA,MAAM,KAAA,GAAQpG,gBAAQ,MAAM;AAC1B,IAAA,OAAO;AAAA,MACL;AAAA,QACE,IAAA,EAAM,EAAE,iBAAiB,CAAA;AAAA,QACzB,IAAA,EAAM,YAAA;AAAA,QACN,IAAA,kBACEC,cAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAM,IAAA;AAAA,YACN,MAAA,EAAO,IAAA;AAAA,YACP,OAAA,EAAQ,WAAA;AAAA,YACR,IAAA,EAAK,MAAA;AAAA,YACL,KAAA,EAAM,4BAAA;AAAA,YAEN,QAAA,kBAAAA,cAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,CAAA,EAAE,0wBAAA;AAAA,gBACF,SAAA,EAAU;AAAA;AAAA;AACZ;AAAA;AACF,OAEJ;AAAA,MACA;AAAA,QACE,IAAA,EAAM,EAAE,kBAAkB,CAAA;AAAA,QAC1B,IAAA,EAAM,sBAAA;AAAA,QACN,IAAA,kBACEA,cAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAM,IAAA;AAAA,YACN,MAAA,EAAO,IAAA;AAAA,YACP,OAAA,EAAQ,WAAA;AAAA,YACR,IAAA,EAAK,MAAA;AAAA,YACL,KAAA,EAAM,4BAAA;AAAA,YAEN,QAAA,kBAAAA,cAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,CAAA,EAAE,icAAA;AAAA,gBACF,SAAA,EAAU;AAAA;AAAA;AACZ;AAAA;AACF,OAEJ;AAAA,MACA;AAAA,QACE,IAAA,EAAM,EAAE,eAAe,CAAA;AAAA,QACvB,IAAA,EAAM,mBAAA;AAAA,QACN,IAAA,kBACEA,cAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAM,IAAA;AAAA,YACN,MAAA,EAAO,IAAA;AAAA,YACP,OAAA,EAAQ,WAAA;AAAA,YACR,IAAA,EAAK,MAAA;AAAA,YACL,KAAA,EAAM,4BAAA;AAAA,YAEN,QAAA,kBAAAA,cAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,CAAA,EAAE,gZAAA;AAAA,gBACF,SAAA,EAAU;AAAA;AAAA;AACZ;AAAA;AACF,OAEJ;AAAA,MACA;AAAA,QACE,IAAA,EAAM,EAAE,eAAe,CAAA;AAAA,QACvB,IAAA,EAAM,mBAAA;AAAA,QACN,IAAA,kBACEA,cAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAM,4BAAA;AAAA,YACN,KAAA,EAAM,IAAA;AAAA,YACN,MAAA,EAAO,IAAA;AAAA,YACP,OAAA,EAAQ,WAAA;AAAA,YACR,IAAA,EAAK,MAAA;AAAA,YAEL,QAAA,kBAAAA,cAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,CAAA,EAAE,ilEAAA;AAAA,gBACF,SAAA,EAAU;AAAA;AAAA;AACZ;AAAA;AACF,OAEJ;AAAA,MACA;AAAA,QACE,IAAA,EAAM,EAAE,mBAAmB,CAAA;AAAA,QAC3B,IAAA,EAAM,oBAAA;AAAA,QACN,IAAA,kBACEA,cAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAM,IAAA;AAAA,YACN,MAAA,EAAO,IAAA;AAAA,YACP,OAAA,EAAQ,WAAA;AAAA,YACR,IAAA,EAAK,MAAA;AAAA,YACL,KAAA,EAAM,4BAAA;AAAA,YAEN,QAAA,kBAAAA,cAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,CAAA,EAAE,0nEAAA;AAAA,gBACF,SAAA,EAAU;AAAA;AAAA;AACZ;AAAA;AACF,OAEJ;AAAA,MACA;AAAA,QACE,IAAA,EAAM,EAAE,mBAAmB,CAAA;AAAA,QAC3B,IAAA,EAAM,mBAAA;AAAA,QACN,IAAA,kBACEA,cAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAM,IAAA;AAAA,YACN,MAAA,EAAO,IAAA;AAAA,YACP,OAAA,EAAQ,WAAA;AAAA,YACR,IAAA,EAAK,MAAA;AAAA,YACL,KAAA,EAAM,4BAAA;AAAA,YAEN,QAAA,kBAAAA,cAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,CAAA,EAAE,6yBAAA;AAAA,gBACF,SAAA,EAAU;AAAA;AAAA;AACZ;AAAA;AACF,OAEJ;AAAA,MACA;AAAA,QACE,IAAA,EAAM,EAAE,6BAA6B,CAAA;AAAA,QACrC,IAAA,EAAM,+BAAA;AAAA,QACN,IAAA,kBACEA,cAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAM,IAAA;AAAA,YACN,MAAA,EAAO,IAAA;AAAA,YACP,OAAA,EAAQ,WAAA;AAAA,YACR,IAAA,EAAK,MAAA;AAAA,YACL,KAAA,EAAM,4BAAA;AAAA,YAEN,QAAA,kBAAAA,cAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,CAAA,EAAE,opBAAA;AAAA,gBACF,SAAA,EAAU;AAAA;AAAA;AACZ;AAAA;AACF,OAEJ;AAAA,MACA;AAAA,QACE,IAAA,EAAM,EAAE,mBAAmB,CAAA;AAAA,QAC3B,IAAA,EAAM,oBAAA;AAAA,QACN,IAAA,kBACEA,cAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAM,IAAA;AAAA,YACN,MAAA,EAAO,IAAA;AAAA,YACP,OAAA,EAAQ,WAAA;AAAA,YACR,IAAA,EAAK,MAAA;AAAA,YACL,KAAA,EAAM,4BAAA;AAAA,YAEN,QAAA,kBAAAA,cAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,CAAA,EAAE,s7CAAA;AAAA,gBACF,SAAA,EAAU;AAAA;AAAA;AACZ;AAAA;AACF,OAEJ;AAAA,MACA;AAAA,QACE,IAAA,EAAM,EAAE,iBAAiB,CAAA;AAAA,QACzB,IAAA,EAAM,oBAAA;AAAA,QACN,IAAA,EAAM;AAAA;AACR,KACF;AAAA,EACF,CAAA,EAAG,CAAC,CAAC,CAAC,CAAA;AAEN,EAAA,MAAM,EAAE,QAAA,EAAU,WAAA,EAAY,GAAIQ,mBAAA,EAAU;AAE5C,EAAA,OAAO;AAAA,IACL,KAAA;AAAA,IACA,OAAA;AAAA,IACA,WAAA;AAAA,IACA,YAAA,EAAc,CAAC,IAAA,KAAuB;AACpC,MAAA,IAAI,OAAO,IAAA,CAAK,IAAA,KAAS,WAAA,EAAa;AAEpC,QAAA;AAAA,MACF;AACA,MAAA,UAAA,CAAW,KAAK,IAAK,CAAA;AACrB,MAAA,aAAA,EAAe,aAAA,CAAc;AAAA,QAC3B,MAAM,IAAA,CAAK,IAAA;AAAA,QACX,MAAM,IAAA,CAAK;AAAA,OACZ,CAAA;AAAA,IACH;AAAA,GACF;AACF;AC7LO,IAAM,eAAA,GAA+D,CAC1E,KAAA,KACG;AACH,EAAA,MAAM,EAAE,QAAA,EAAU,aAAA,EAAe,UAAA,EAAY,GAAG,MAAK,GAAI,KAAA;AAEzD,EAAA,uBACER,cAAAA;AAAA,IAAC6I,0BAAA;AAAA,IAAA;AAAA,MACC,WAAA,EACE,KAAA,CAAM,WAAA,GAAc,IAAA,mBAClB7I,cAAAA;AAAA,QAAC,WAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAS,MAAM,aAAA,EAAe,WAAA;AAAA,UAC9B,eAAe,KAAA,CAAM,aAAA;AAAA,UACrB,OAAO,KAAA,CAAM,KAAA;AAAA,UACZ,GAAG;AAAA;AAAA,OACN;AAAA,MAGJ,eAAe,KAAA,CAAM,aAAA;AAAA,MACrB,UAAA,EAAY;AAAA,QACV,GAAG,UAAA;AAAA,QACH,OAAA,EAAS+E,YAAA,CAAG,mBAAA,EAAqB,UAAA,EAAY,OAAO,CAAA;AAAA,QACpD,SAAA,EAAWA,YAAA,CAAG,eAAA,EAAiB,UAAA,EAAY,SAAS,CAAA;AAAA,QACpD,WAAA,EAAaA,YAAA;AAAA,UACX,8BAAA;AAAA,UACA,iBAAA;AAAA,UACA,4BAAA;AAAA,UACA,UAAA,EAAY;AAAA;AACd,OACF;AAAA,MACC,GAAG,IAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ;AAMA,IAAM,WAAA,GAAoC,CAAC,KAAA,KAAU;AACnD,EAAA,MAAM,EAAE,QAAA,EAAU,SAAA,EAAU,GAAIkD,oCAAAA,EAAmB;AACnD,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI/G,0BAAAA,EAAe;AAC7B,EAAA,uBACElB,cAAAA;AAAA,IAAC8I,yBAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO,EAAE,kBAAkB,CAAA;AAAA,MAC1B,GAAG,KAAA;AAAA,MACJ,IAAA,EAAM,QAAA;AAAA,MACN,YAAA,EAAc,CAAC,IAAA,KAAS,SAAA,CAAU,IAAI,CAAA;AAAA,MACtC,YAAA,EAAc,CAAC,CAAA,KAAM;AACnB,QAAA,KAAA,CAAM,eAAe,CAAC,CAAA;AACtB,QAAA,KAAA,CAAM,eAAe,aAAA,GAAgB;AAAA,UACnC,IAAA,EAAM,EAAE,IAAA,IAAQ,EAAA;AAAA,UAChB,MAAM,CAAA,CAAE;AAAA,SACT,CAAA;AAAA,MACH;AAAA;AAAA,GACF;AAEJ,CAAA;;;ACpEA,YAAA,EAAA;AAGO,IAAM,qBAAA,GAIT,CAAC,KAAA,KAAU;AACb,EAAA,uBACE9I,cAAAA,CAAC,cAAA,EAAA,EAAgB,GAAG,KAAA,EAClB,QAAA,kBAAAmB,eAAA;AAAA,IAACC,cAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,QAAA;AAAA,MACX,KAAA,EAAO,MAAA;AAAA,MACP,MAAA,EAAQ,MAAA;AAAA,MACR,SAAA,EAAU,kCAAA;AAAA,MAEV,QAAA,EAAA;AAAA,wBAAApB,cAAAA,CAAC,QAAA,EAAA,EAAO,SAAA,EAAU,gFAAA,EAChB,QAAA,kBAAAA,cAAAA;AAAA,UAAC+I,+BAAA;AAAA,UAAA;AAAA,YACE,GAAG,KAAA,CAAM,YAAA;AAAA,YACV,SAAS,KAAA,EAAO,OAAA;AAAA,YAChB,UAAU,KAAA,EAAO,KAAA;AAAA,YACjB,OAAA,EAAS;AAAA,cACP,GAAG,MAAM,YAAA,EAAc,OAAA;AAAA,cACvB,KAAA,EAAO;AAAA,gBACL,GAAI,KAAA,CAAM,YAAA,EAAc,OAAA,EAAS,SAAS,EAAC;AAAA,gBAC3C,GAAI,KAAA,EAAO,KAAA,IAAS;AAAC;AACvB,aACF;AAAA,YACA,eAAe,KAAA,CAAM;AAAA;AAAA,SACvB,EACF,CAAA;AAAA,wBACA/I,cAAAA,CAACyH,aAAA,EAAA,EAAI,SAAA,EAAU,iGAAA,EACZ,gBAAM,QAAA,EACT,CAAA;AAAA,wBACAzH,cAAAA,CAAC,QAAA,EAAA,EAAO,SAAA,EAAU,8HAChB,QAAA,kBAAAA,cAAAA;AAAA,UAACgJ,2BAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAW,MAAM,cAAA,EAAgB,SAAA;AAAA,YACjC,SAAS,KAAA,EAAO,OAAA;AAAA,YAChB,aAAA,EAAe,MAAM,aAAA,EAAe;AAAA;AAAA,SACtC,EACF;AAAA;AAAA;AAAA,GACF,EACF,CAAA;AAEJ,CAAA;AC3CO,IAAM,qBAAA,GAET,CAAC,KAAA,KAAU;AACb,EAAA,MAAM,QAAQ,wBAAA,CAAyB;AAAA,IACrC,OAAA,EAAS,MAAM,aAAA,EAAe;AAAA,GAC/B,CAAA;AACD,EAAA,MAAM,EAAE,QAAA,EAAS,GAAIxI,mBAAAA,EAAU;AAE/B,EAAA,uBACER,eAAA2B,mBAAA,EAAA,EACG,QAAA,EAAA,QAAA;AAAA;AAAA,oBAEC3B,cAAAA,CAAC,qBAAA,EAAA,EAAuB,GAAG,KAAA,EAAQ,GAAG,KAAA,EAAO;AAAA,sBAE7CA,cAAAA,CAAC,eAAA,EAAA,EAAiB,GAAG,KAAA,EAAQ,GAAG,OAAO,CAAA,EAE3C,CAAA;AAEJ;;;AC1BA,IAAA,gBAAA,GAAA;AAAA,QAAA,CAAA,gBAAA,EAAA;AAAA,EAAA,YAAA,EAAA,MAAA,YAAA;AAAA,EAAA,kBAAA,EAAA,MAAA,kBAAA;AAAA,EAAA,WAAA,EAAA,MAAA,WAAA;AAAA,EAAA,WAAA,EAAA,MAAA,WAAA;AAAA,EAAA,iBAAA,EAAA,MAAA,iBAAA;AAAA,EAAA,QAAA,EAAA,MAAA,QAAA;AAAA,EAAA,0BAAA,EAAA,MAAA,0BAAA;AAAA,EAAA,yBAAA,EAAA,MAAA,yBAAA;AAAA,EAAA,yBAAA,EAAA,MAAA,yBAAA;AAAA,EAAA,oBAAA,EAAA,MAAA,oBAAA;AAAA,EAAA,sBAAA,EAAA,MAAA,sBAAA;AAAA,EAAA,YAAA,EAAA,MAAA,YAAA;AAAA,EAAA,gBAAA,EAAA,MAAA,gBAAA;AAAA,EAAA,yBAAA,EAAA,MAAA,yBAAA;AAAA,EAAA,wBAAA,EAAA,MAAA,wBAAA;AAAA,EAAA,mBAAA,EAAA,MAAA,mBAAA;AAAA,EAAA,uBAAA,EAAA,MAAA,uBAAA;AAAA,EAAA,aAAA,EAAA,MAAA,aAAA;AAAA,EAAA,iBAAA,EAAA,MAAA,iBAAA;AAAA,EAAA,sBAAA,EAAA,MAAA,sBAAA;AAAA,EAAA,qBAAA,EAAA,MAAA,qBAAA;AAAA,EAAA,oBAAA,EAAA,MAAA,oBAAA;AAAA,EAAA,wBAAA,EAAA,MAAA,wBAAA;AAAA,EAAA,qBAAA,EAAA,MAAA,qBAAA;AAAA,EAAA,oBAAA,EAAA,MAAA;AAAA,CAAA,CAAA;AAAA,WAAA,EAAA;AACA,qBAAA,EAAA;AAEA,eAAA,EAAA;AACA,iBAAA,EAAA;AAEA,gBAAA,EAAA;;;ACcA,oBAAA,EAAA;AAKA,IAAM,eAAA,GAAiE;AAAA,EACrE,KAAA,EAAO,MAAA;AAAA,EACP,SAAA,EAAW,GAAA;AAAA,EACX,MAAA,EAAQ;AACV,CAAA;AAEO,IAAM,mBAAA,GAcT,CAAC,KAAA,KAAU;AACb,EAAA,MAAM,EAAE,CAAA,EAAE,GAAIkB,0BAAAA,EAAe;AAC7B,EAAA,MAAM;AAAA,IACJ,IAAA;AAAA,IACA,cAAA;AAAA,IACA,OAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAA;AAAA,IACA,MAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,WAAA;AAAA,IACA;AAAA,GACF,GAAI,KAAA;AAEJ,EAAA,MAAM,UAAA,GAAa,IAAA,CAAK,MAAA,GACpB,IAAA,GACC,cAAA;AAAA,IACC,EAAE,aAAA,EAAe,CAAA,EAAG,GAAA,EAAK,CAAA,EAAE;AAAA,IAC3B,EAAE,aAAA,EAAe,GAAA,EAAK,GAAA,EAAK,GAAA;AAAI,GACjC;AAEJ,EAAmB2D,wBAAAA,CAAM,OAAA;AAAA,IACvB,OACG,UAAA,IAAc,EAAC,EAAG,GAAA,CAAI,CAAC,CAAA,MAAO;AAAA,MAC7B,GAAG,CAAA;AAAA,MACH,MAAA,EAAQ,EAAE,WAAA,IAAe;AAAA,KAC3B,CAAE,CAAA;AAAA,IACJ,CAAC,UAAU;AAAA;AAGb,EAAA,uBACE1D,gBAAC,KAAA,EAAA,EACE,QAAA,EAAA;AAAA,IAAA,WAAA,IAAe,WAAA,CAAY,SAAS,CAAA,oBACnCnB,eAACyH,aAAAA,EAAA,EAAI,EAAA,EAAI,CAAA,EACP,QAAA,kBAAAzH,cAAAA;AAAA,MAAC2D,oBAAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO,WAAA;AAAA,QACP,QAAA,EAAU,aAAa,MAAM;AAAA,QAAC,CAAA,CAAA;AAAA,QAC9B,SAAA,EAAU;AAAA;AAAA,KACZ,EACF,CAAA;AAAA,oBAEFxC,eAAAA;AAAA,MAAC+D,cAAAA;AAAA,MAAA;AAAA,QACC,OAAO,MAAA,IAAU,EAAA;AAAA,QACjB,YAAA,EAAA,KAAA;AAAA,QACA,UAAA,EAAY,EAAE,QAAA,EAAU,qBAAA,EAAuB,SAAS,WAAA,EAAY;AAAA,QACpE,aAAA,EAAe,CAAC,KAAA,KAAU,cAAA,CAAe,KAAmB,CAAA;AAAA,QAE5D,QAAA,EAAA;AAAA,0BAAAlF,cAAAA;AAAA,YAACmF,kBAAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO,EAAE,kBAAkB,CAAA;AAAA,cAC3B,KAAA,EAAA,IAAA;AAAA,cACA,SAAA,EAAU,cAAA;AAAA,cAEV,QAAA,kBAAAnF,cAAAA;AAAA,gBAACiJ,2BAAA;AAAA,gBAAA;AAAA,kBACC,IAAA,EAAM,UAAA;AAAA,kBACN,SAAA,EAAW,SAAA,IAAA,CAAc,IAAA,EAAM,MAAA,IAAU,CAAA,KAAM,CAAA;AAAA,kBAC/C,wBAAA,EAA0B;AAAA;AAAA;AAC5B;AAAA,WACF;AAAA,0BACAjJ,cAAAA;AAAA,YAACmF,kBAAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO,EAAE,kBAAkB,CAAA;AAAA,cAC3B,KAAA,EAAA,IAAA;AAAA,cACA,SAAA,EAAU,cAAA;AAAA,cAEV,QAAA,kBAAAnF,cAAAA;AAAA,gBAACiJ,2BAAA;AAAA,gBAAA;AAAA,kBACC,IAAA,EAAM,UAAA;AAAA,kBACN,SAAA,EAAW,SAAA,IAAA,CAAc,IAAA,EAAM,MAAA,IAAU,CAAA,KAAM,CAAA;AAAA,kBAC/C,wBAAA,EAA0B;AAAA;AAAA;AAC5B;AAAA,WACF;AAAA,0BACAjJ,cAAAA;AAAA,YAACmF,kBAAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO,EAAE,mBAAmB,CAAA;AAAA,cAC5B,KAAA,EAAA,KAAA;AAAA,cACA,SAAA,EAAU,cAAA;AAAA,cAEV,QAAA,kBAAAnF,cAAAA;AAAA,gBAACiJ,2BAAA;AAAA,gBAAA;AAAA,kBACC,IAAA,EAAM,UAAA;AAAA,kBACN,SAAA,EAAW,SAAA,IAAA,CAAc,IAAA,EAAM,MAAA,IAAU,CAAA,KAAM,CAAA;AAAA,kBAC/C,wBAAA,EAA0B;AAAA;AAAA;AAC5B;AAAA,WACF;AAAA,0BACAjJ,cAAAA;AAAA,YAACmF,kBAAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO,EAAE,mBAAmB,CAAA;AAAA,cAC5B,KAAA,EAAA,KAAA;AAAA,cACA,SAAA,EAAU,cAAA;AAAA,cAEV,QAAA,kBAAAnF,cAAAA;AAAA,gBAACiJ,2BAAA;AAAA,gBAAA;AAAA,kBACC,IAAA,EAAM,UAAA;AAAA,kBACN,SAAA,EAAW,SAAA,IAAA,CAAc,UAAA,EAAY,MAAA,IAAU,CAAA,KAAM,CAAA;AAAA,kBACrD,wBAAA,EAA0B;AAAA;AAAA;AAC5B;AAAA;AACF;AAAA;AAAA,KACF;AAAA,oBACA9H,eAAAA,CAACC,cAAAA,EAAA,EAAK,OAAA,EAAQ,SAAA,EAAU,SAAA,EAAU,QAAA,EAAS,GAAA,EAAK,CAAA,EAAG,EAAA,EAAI,CAAA,EACrD,QAAA,EAAA;AAAA,sBAAAD,eAAAA;AAAA,QAACC,cAAAA;AAAA,QAAA;AAAA,UACC,GAAA,EAAK,CAAA;AAAA,UACL,SAAA,EAAU,QAAA;AAAA,UACV,SAAA,EAAU,OAAA;AAAA,UACV,SAAA,EAAU,4DAAA;AAAA,UAEV,QAAA,EAAA;AAAA,4BAAApB,cAAAA,CAAC6B,cAAAA,EAAA,EAAK,SAAA,EAAU,gBAAe,SAAA,EAAW,EAAA,EAAI,IAAA,EAAK,KAAA,EAChD,YAAE,oCAAA,EAAsC,EAAE,MAAA,EAAQ,SAAA,EAAW,CAAA,EAChE,CAAA;AAAA,4BACA7B,cAAAA,CAAC6B,cAAAA,CAAK,OAAA,EAAL,EAAa,IAAA,EAAK,IAAA,EAAK,OAAA,EAAkB,IAAA,EAAK,eAAc,QAAA,EAAQ,IAAA,EAClE,QAAA,EAAA,SAAA,GAAY,IAAA,GAAO,eAAe,GAAA,EACrC;AAAA;AAAA;AAAA,OACF;AAAA,sBACAV,eAAAA;AAAA,QAACC,cAAAA;AAAA,QAAA;AAAA,UACC,GAAA,EAAK,CAAA;AAAA,UACL,SAAA,EAAU,QAAA;AAAA,UACV,SAAA,EAAU,OAAA;AAAA,UACV,SAAA,EAAU,4DAAA;AAAA,UAEV,QAAA,EAAA;AAAA,4BAAApB,cAAAA,CAAC6B,cAAAA,EAAA,EAAK,SAAA,EAAU,gBAAe,SAAA,EAAW,EAAA,EAAI,IAAA,EAAK,KAAA,EAChD,YAAE,oCAAA,EAAsC,EAAE,MAAA,EAAQ,SAAA,EAAW,CAAA,EAChE,CAAA;AAAA,4BACA7B,cAAAA,CAAC6B,cAAAA,CAAK,OAAA,EAAL,EAAa,IAAA,EAAK,IAAA,EAAK,OAAA,EAAkB,QAAA,EAAQ,MAAC,cAAA,EAAc,IAAA,EAC9D,QAAA,EAAA,SAAA,GAAY,IAAA,GAAO,eAAe,GAAA,EACrC;AAAA;AAAA;AAAA,OACF;AAAA,sBACAV,eAAAA;AAAA,QAACC,cAAAA;AAAA,QAAA;AAAA,UACC,GAAA,EAAK,CAAA;AAAA,UACL,SAAA,EAAU,QAAA;AAAA,UACV,SAAA,EAAU,OAAA;AAAA,UACV,SAAA,EAAU,4DAAA;AAAA,UAEV,QAAA,EAAA;AAAA,4BAAApB,cAAAA,CAAC6B,cAAAA,EAAA,EAAK,SAAA,EAAU,gBAAe,SAAA,EAAW,EAAA,EAAI,IAAA,EAAK,KAAA,EAChD,YAAE,uCAAA,EAAyC,EAAE,MAAA,EAAQ,SAAA,EAAW,CAAA,EACnE,CAAA;AAAA,4BACA7B,cAAAA,CAAC6B,cAAAA,CAAK,OAAA,EAAL,EAAa,IAAA,EAAK,IAAA,EAAK,OAAA,EAAkB,QAAA,EAAU,KAAA,EACjD,QAAA,EAAA,SAAA,GAAY,IAAA,GAAO,eAAe,GAAA,EACrC;AAAA;AAAA;AAAA;AACF,KAAA,EACF,CAAA;AAAA,oBACAV,eAAAA,CAAC+D,cAAAA,EAAA,EAAK,cAAc,UAAA,EAClB,QAAA,EAAA;AAAA,sBAAAlF,cAAAA;AAAA,QAACmF,kBAAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAO,UAAA;AAAA,UACP,KAAA,EAAO,EAAE,yCAAyC,CAAA;AAAA,UAClD,SAAA,EAAU,cAAA;AAAA,UAEV,QAAA,kBAAAnF,cAAAA;AAAA,YAAC4H,wBAAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAM,UAAA;AAAA,cACN,SAAA,EAAW,SAAA,IAAA,CAAc,UAAA,EAAY,MAAA,IAAU,CAAA,KAAM,CAAA;AAAA,cACrD,wBAAA,EAA0B;AAAA;AAAA;AAC5B;AAAA,OACF;AAAA,sBACA5H,cAAAA;AAAA,QAACmF,kBAAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAO,eAAA;AAAA,UACP,KAAA,EAAO,EAAE,8CAA8C,CAAA;AAAA,UACvD,SAAA,EAAU,cAAA;AAAA,UAEV,QAAA,kBAAAnF,cAAAA;AAAA,YAAC6H,yBAAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAM,UAAA;AAAA,cACN,SAAA,EAAW,SAAA,IAAA,CAAc,UAAA,EAAY,MAAA,IAAU,CAAA,KAAM,CAAA;AAAA,cACrD,wBAAA,EAA0B;AAAA;AAAA;AAC5B;AAAA,OACF;AAAA,sBACA7H,cAAAA;AAAA,QAACmF,kBAAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAO,QAAA;AAAA,UACP,OAAO,CAAA,CAAE,uCAAA,EAAyC,EAAE,MAAA,EAAQ,IAAI,CAAA;AAAA,UAChE,SAAA,EAAU,cAAA;AAAA,UAEV,QAAA,kBAAAnF,cAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAW+E,YAAAA;AAAA,gBACT,0BAAA;AAAA,gBAAA,CACC,SAAA,IAAA,CAAc,UAAA,EAAY,MAAA,IAAU,CAAA,KAAM,CAAA,KACzC;AAAA,eACJ;AAAA,cAEA,QAAA,kBAAA/E,cAAAA;AAAA,gBAAC8H,wBAAAA;AAAA,gBAAA;AAAA,kBACC,OAAO,UAAA,IAAc,EAAC,EAAG,GAAA,CAAI,CAAC,IAAA,MAAe;AAAA,oBAC3C,MAAM,IAAA,CAAK,IAAA;AAAA,oBACX,MAAA,EAAQ,KAAK,WAAA,IAAe,CAAA;AAAA,oBAC5B,OAAA,EAAA,CAAU,IAAA,CAAK,WAAA,IAAe,CAAA,IAAK,IAAI,CAAA,GAAI;AAAA,mBAC7C,CAAE,CAAA;AAAA,kBACF,SAAA,EAAU;AAAA;AAAA;AACZ;AAAA;AACF;AAAA;AACF,KAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ,CAAA;;;ACpNA,oBAAA,EAAA;AAEO,IAAM,iBAAiB,CAAC,EAAE,IAAA,GAAOoB,mBAAA,CAAO,QAAO,KAAyB;AAC7E,EAAA,MAAM,uBAAA,GAA0BC,0BAAA;AAAA,IAC9B,IAAA,KAASD,mBAAA,CAAO,EAAA,GAAKE,2BAAA,CAAe,UAAUA,2BAAA,CAAe;AAAA,GAC/D;AACA,EAAA,MAAM,CAAC,gBAAgB,CAAA,GAAIC,gCAAA,CAAoB,IAAI,CAAA;AACnD,EAAA,MAAM,CAAC,OAAO,CAAA,GAAIC,0BAAA,EAAc;AAChC,EAAA,MAAM,EAAE,KAAA,EAAM,GAAIpJ,uBAAAA,EAAW;AAC7B,EAAA,MAAM,EAAE,IAAA,EAAM,MAAA,EAAO,GAAI+G,4BAAAA;AAAA,IACvB,mBAAA;AAAA,IACA,EAAE,iBAAA,EAAmB,IAAA,EAAM,eAAA,EAAiB,CAAA,EAAG,GAAGsC,0BAAA;AAAc,GAClE;AAEA,EAAA,MAAM,SAAA,GAAYC,0BAAa,IAAc,CAAA;AAC7C,EAAA,MAAM,QAAA,GAAWC,uBAAU,UAAU,CAAA;AAErC,EAAA,MAAM,UAAA,GAAa1J,gBAAQ,MAAM;AAC/B,IAAA,OAAO,UAAU,QAAQ,CAAA;AAAA,EAC3B,CAAA,EAAG,CAAC,QAAA,EAAU,OAAO,CAAC,CAAA;AAEtB,EAAA,MAAM,SAAA,GAAYgH,cAAAA,CAA0BpG,8BAAAA,CAAkB,YAAY,CAAA;AAE1E,EAAA,MAAM,QAAA,GAAWoG,eAA6C,IAAI,CAAA;AAElE,EAAAZ,kBAAU,MAAM;AACd,IAAA,IAAI,SAAA,CAAU,OAAA,KAAY,KAAA,CAAM,MAAA,EAAQ;AACtC,MAAA,SAAA,CAAU,UAAU,KAAA,CAAM,MAAA;AAC1B,MAAA,QAAA,CAAS,OAAA,GAAU,WAAW,MAAM;AAClC,QAAA,MAAA,EAAO;AAAA,MACT,GAAG,GAAI,CAAA;AAAA,IACT;AACA,IAAA,OAAO,MAAM;AACX,MAAA,IAAI,SAAS,OAAA,EAAS;AACpB,QAAA,YAAA,CAAa,SAAS,OAAO,CAAA;AAAA,MAC/B;AAAA,IACF,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,KAAA,CAAM,MAAM,CAAC,CAAA;AAEjB,EAAA,OAAO;AAAA,IACL,uBAAA;AAAA,IACA,gBAAA;AAAA,IACA,SAAA;AAAA,IACA,UAAA;AAAA,IACA,YAAA,EAAc;AAAA,GAChB;AACF,CAAA;AAEO,IAAM,uBAAuB,MAAM;AACxC,EAAA,MAAM;AAAA,IACJ,uBAAA;AAAA,IACA,gBAAA;AAAA,IACA,SAAA;AAAA,IACA,UAAA;AAAA,IACA;AAAA,MACE,kBAAA,EAAmB;AACvB,EAAA,MAAM,EAAE,KAAA,EAAM,GAAIjG,uBAAAA,EAAW;AAC7B,EAAA,MAAM,EAAE,YAAA,EAAa,GAAIE,6BAAAA,EAAc;AACvC,EAAA,MAAM,WACJ,KAAA,CAAM,MAAA,KAAWO,+BAAkB,aAAA,IACnC,KAAA,CAAM,WAAWA,8BAAAA,CAAkB,6BAAA;AAErC,EAAA,OAAO;AAAA,IACL,uBAAA;AAAA,IACA,gBAAA;AAAA,IACA,SAAA;AAAA,IACA,UAAA;AAAA,IACA,QAAA;AAAA,IACA,YAAA;AAAA,IACA;AAAA,GACF;AACF,CAAA;;;ACnFA,oBAAA,EAAA;AACA,oBAAA,EAAA;AAEO,IAAM,QAAA,GAAW,8BAAA;AAEjB,IAAM,gBAAA,GAA6D,CACxE,KAAA,KACG;AACH,EAAA,MAAM,EAAE,IAAA,EAAM,QAAA,EAAS,GAAI,KAAA;AAC3B,EAAA,MAAM,QAAQ,oBAAA,CAAqB,QAAA,EAAU,EAAE,UAAA,EAAY,MAAM,CAAA;AACjE,EAAA,MAAM,WAAA,GAAc,cAAA,CAAe,EAAE,IAAA,EAAY,CAAA;AAEjD,EAAA,MAAM,aAAA,GAAgBZ,gBAA8B,MAAM;AACxD,IAAA,OAAO;AAAA,MACL,GAAG,KAAA;AAAA,MACH,IAAA;AAAA,MACA,GAAG;AAAA,KACL;AAAA,EACF,CAAA,EAAG,CAAC,KAAA,EAAO,IAAA,EAAM,WAAW,CAAC,CAAA;AAE7B,EAAA,uBACEC,cAAAA,CAAC,eAAA,CAAgB,UAAhB,EAAyB,KAAA,EAAO,eAC9B,QAAA,EACH,CAAA;AAEJ,CAAA;;;ACnBA,oBAAA,EAAA;AAGO,IAAM,0BAAoC,MAAM;AACrD,EAAA,MAAM,QAAQ,oBAAA,CAAqB,QAAA,EAAU,EAAE,UAAA,EAAY,MAAM,CAAA;AACjE,EAAA,MAAM,EAAE,OAAA,EAAS,SAAA,EAAU,GAAI,oBAAA,EAAqB;AACpD,EAAA,uBACEA,cAAAA;AAAA,IAAC,mBAAA;AAAA,IAAA;AAAA,MACE,GAAGiF,UAAAA;AAAA,QACF;AAAA,UACE,MAAA;AAAA,UACA,WAAA;AAAA,UACA,gBAAA;AAAA,UACA,gBAAA;AAAA,UACA,gBAAA;AAAA,UACA,QAAA;AAAA,UACA,aAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA;AAAA,OACF;AAAA,MACA,OAAA;AAAA,MACA;AAAA;AAAA,GACF;AAEJ,CAAA;AAEO,IAAM,wBAAA,GAA2B,0BAAA;AAEjC,IAAM,yBAAA,GAA4B,2BAAA;AAEzCyE,6BAAA,CAAoB,0BAA0B,uBAAA,EAAyB;AAAA,EACrE,KAAA,EAAO,MAAMC,gBAAAA,CAAK,CAAA,CAAE,gCAAgC;AACtD,CAAC,CAAA;AAEDC,8BAAA,CAAqB,2BAA2B,uBAAA,EAAyB;AAAA,EACvE,KAAA,EAAO,MAAMD,gBAAAA,CAAK,CAAA,CAAE,gCAAgC,CAAA;AAAA,EACpD,UAAA,EAAY;AAAA,IACV,OAAA,EAAS;AAAA;AAEb,CAAC,CAAA;;;AJnCD,YAAA,EAAA;AAMA,iBAAA,EAAA;;;AKdA,YAAA,EAAA;AACA,WAAA,EAAA;;;ACLA,eAAA,EAAA;;;ACIA,SAAA,EAAA;AAEA,oBAAA,EAAA;AAEO,IAAM,0BAA0B,MAAM;AAC3C,EAAA,MAAM,CAAC,IAAI,CAAA,GAAItJ,8BAAAA,EAAkB;AACjC,EAAA,MAAM,WAAW,kBAAA,EAAmB;AACpC,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIE,4BAAAA;AAAA,IAC5B,0BAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,MAAM,kBAAA,GAAqBO,oBAAY,MAAM;AAC3C,IAAA,OAAOF,eAAAA,CAAM,KAAK,wBAAwB,CAAA;AAAA,EAC5C,CAAA,EAAG,EAAE,CAAA;AACL,EAAA,OAAO;AAAA,IACL,SAAA,EAAW,QAAA,EAAU,gBAAA,EAAkB,GAAA,IAAO,IAAA;AAAA,IAC9C,SAAA,EAAW,QAAA,EAAU,gBAAA,EAAkB,GAAA,IAAO,IAAA;AAAA,IAC9C,SAAA,EAAW,QAAA,EAAU,gBAAA,EAAkB,GAAA,IAAO,IAAA;AAAA,IAC9C,SAAA,EAAW,MAAM,UAAA,CAAW,gBAAA;AAAA,IAC5B,WAAW,IAAA,EAAM,kBAAA;AAAA,IACjB,OAAA;AAAA,IACA,UAAA;AAAA,IACA;AAAA,GACF;AACF,CAAA;AClBO,IAAM,uBAAA,GAKT,CAAC,KAAA,KAAU;AACb,EAAA,MAAM,EAAE,IAAA,EAAM,SAAA,EAAW,WAAW,SAAA,EAAW,OAAA,EAAS,oBAAmB,GACzE,KAAA;AACF,EAAA,MAAM,EAAE,CAAA,EAAE,GAAIM,0BAAAA,EAAe;AAC7B,EAAA,MAAM,UAAU6G,aAAA,EAAM;AACtB,EAAA,uBACE5G,eAAAA;AAAA,IAACC,cAAAA;AAAA,IAAA;AAAA,MACC,CAAA,EAAG,CAAA;AAAA,MACH,KAAA,EAAO,MAAA;AAAA,MACP,SAAA,EAAU,QAAA;AAAA,MACV,OAAA,EAAQ,SAAA;AAAA,MACR,SAAA,EAAW2D,YAAAA;AAAA,QACT;AAAA,OACF;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAA5D,eAAAA;AAAA,UAACC,cAAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO,MAAA;AAAA,YACP,OAAA,EAAS,QAAA;AAAA,YACT,SAAA,EAAW,OAAA;AAAA,YACX,SAAA,EAAW,QAAA;AAAA,YACX,GAAA,EAAK,CAAA;AAAA,YAEL,QAAA,EAAA;AAAA,8BAAApB,cAAAA,CAAC6B,gBAAA,EAAK,IAAA,EAAK,MAAK,SAAA,EAAW,EAAA,EACxB,QAAA,EAAA,CAAA,CAAE,sBAAsB,CAAA,EAC3B,CAAA;AAAA,8BACAV,eAAAA,CAACC,cAAAA,EAAA,EAAK,OAAA,EAAS,OAAA,EAAS,WAAW,QAAA,EACjC,QAAA,EAAA;AAAA,gCAAApB,cAAAA,CAAC6B,cAAAA,CAAK,GAAA,EAAL,EAAS,QAAA,EAAQ,IAAA,EAAC,IAAA,EAAK,MAAA,EAAO,MAAA,EAAO,UAAA,EAAW,OAAA,EAC9C,QAAA,EAAA,SAAA,EACH,CAAA;AAAA,gCACA7B,cAAAA;AAAA,kBAAC6B,cAAAA,CAAK,GAAA;AAAA,kBAAL;AAAA,oBACC,QAAA,EAAQ,IAAA;AAAA,oBACR,IAAA,EAAK,aAAA;AAAA,oBACL,IAAA,EAAK,IAAA;AAAA,oBACL,MAAA,EAAO,UAAA;AAAA,oBACP,MAAA,EAAQ,GAAA;AAAA,oBACR,MAAA,EAAQ,GAAA;AAAA,oBACR,OAAA;AAAA,oBAEC,QAAA,EAAA;AAAA;AAAA;AACH,eAAA,EACF,CAAA;AAAA,8BACAV,eAAAA;AAAA,gBAACU,cAAAA;AAAA,gBAAA;AAAA,kBACC,IAAA,EAAK,IAAA;AAAA,kBACL,SAAA,EAAW,EAAA;AAAA,kBACX,SAAA,EAAU,uDAAA;AAAA,kBACV,OAAA,EAAS,kBAAA;AAAA,kBAER,QAAA,EAAA;AAAA,oBAAA,CAAA,CAAE,gCAAgC,CAAA;AAAA,oCACnC7B,cAAAA,CAAC6J,0BAAA,EAAA,EAAiB,SAAA,EAAU,2BAAA,EAA4B;AAAA;AAAA;AAAA;AAC1D;AAAA;AAAA,SACF;AAAA,wBACA7J,cAAAA;AAAA,UAACoB,cAAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO,MAAA;AAAA,YACP,OAAA,EAAS,QAAA;AAAA,YACT,SAAA,EAAW,QAAA;AAAA,YACX,SAAA,EAAW,QAAA;AAAA,YAEX,QAAA,kBAAApB,cAAAA,CAAC8J,sBAAA,EAAA,EAAU,IAAA,EAAM,QAAQtE,uBAAAA,EAAY,KAAA,EAAO,GAAA,EAAK,MAAA,EAAQ,IACtD,QAAA,EAAA,CAAC,SAAA,oBACArE,eAAAA,CAAAQ,qBAAA,EACE,QAAA,EAAA;AAAA,8BAAA3B,cAAAA,CAAC,MAAA,EAAA,EACC,QAAA,kBAAAmB,eAAAA,CAAC,oBAAe,EAAA,EAAI,OAAA,EAAS,EAAA,EAAG,GAAA,EAAI,EAAA,EAAG,GAAA,EAAI,EAAA,EAAG,GAAA,EAAI,IAAG,GAAA,EACnD,QAAA,EAAA;AAAA,gCAAAnB,cAAAA;AAAA,kBAAC,MAAA;AAAA,kBAAA;AAAA,oBACC,SAAA,EAAU,+BAAA;AAAA,oBACV,MAAA,EAAO,IAAA;AAAA,oBACP,WAAA,EAAa;AAAA;AAAA,iBACf;AAAA,gCACAA,cAAAA;AAAA,kBAAC,MAAA;AAAA,kBAAA;AAAA,oBACC,SAAA,EAAU,+BAAA;AAAA,oBACV,MAAA,EAAO,MAAA;AAAA,oBACP,WAAA,EAAa;AAAA;AAAA;AACf,eAAA,EACF,CAAA,EACF,CAAA;AAAA,8BACAA,cAAAA;AAAA,gBAAC+J,iBAAA;AAAA,gBAAA;AAAA,kBACC,IAAA,EAAK,SAAA;AAAA,kBACL,OAAA,EAAQ,eAAA;AAAA,kBACR,MAAA,EAAQ,mBAAA;AAAA,kBACR,WAAA,EAAa,GAAA;AAAA,kBACb,GAAA,EAAK,KAAA;AAAA,kBACL,iBAAA,EAAmB,KAAA;AAAA,kBACnB,IAAA,EAAM,QAAQ,OAAO,CAAA,CAAA;AAAA;AAAA;AACvB,aAAA,EACF,CAAA,EAEJ;AAAA;AAAA;AACF;AAAA;AAAA,GACF;AAEJ,CAAA;AFpGO,IAAM,8BAAwC,MAAM;AACzD,EAAA,MAAM,EAAE,IAAA,EAAM,SAAA,EAAU,GAAI,oBAAA,EAAqB;AACjD,EAAA,MAAM,QAAQ,uBAAA,EAAwB;AACtC,EAAA,uBACE/J,cAAAA;AAAA,IAAC,uBAAA;AAAA,IAAA;AAAA,MACC,MAAM,IAAA,IAAQwF,uBAAAA;AAAA,MACd,SAAA;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ,CAAA;AGeA,IAAM,mBAAmB,MAAM;AAC7B,EAAA,MAAM,EAAE,KAAA,EAAO,OAAA,EAAAJ,QAAAA,KAAYlF,uBAAAA,EAAW;AACtC,EAAA,MAAM,EAAE,YAAA,EAAc,eAAA,EAAiB,aAAA,KAAkBE,6BAAAA,EAAc;AACvE,EAAA,MAAM,EAAE,CAAA,EAAE,GAAIc,0BAAAA,EAAe;AAE7B,EAAA,MAAM,UAAA,GAAa;AAAA,IACjB,YAAA,EAAc;AAAA,MACZ,WAAA,EAAa,EAAE,gCAAgC,CAAA;AAAA,MAC/C,SAAA,EACE;AAAA,KACJ;AAAA,IACA,aAAA,EAAe;AAAA,MACb,WAAA,EAAa,EAAE,uCAAuC,CAAA;AAAA,MACtD,SAAA,EACE;AAAA,KACJ;AAAA,IACA,WAAA,EAAa;AAAA,MACX,WAAA,EAAa,EAAE,uCAAuC,CAAA;AAAA,MACtD,SAAA,EACE;AAAA,KACJ;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,WAAA,EAAa,EAAE,uCAAuC,CAAA;AAAA,MACtD,SAAA,EACE;AAAA,KACJ;AAAA,IACA,OAAA,EAAS;AAAA,MACP,WAAA,EAAa,EAAA;AAAA,MACb,SAAA,EAAW,EAAA;AAAA,MACX,cAAA,EAAgB,EAAA;AAAA,MAChB,SAAA,EAAW;AAAA;AACb,GACF;AAEA,EAAA,OAAOnB,gBAAQ,MAAM;AACnB,IAAA,IAAI,eAAA,EAAiB;AACnB,MAAA,OAAO,UAAA,CAAW,aAAA;AAAA,IACpB;AAEA,IAAA,IAAI,YAAA,EAAc;AAChB,MAAA,OAAO,UAAA,CAAW,YAAA;AAAA,IACpB;AAEA,IAAA,QAAQ,MAAM,MAAA;AAAQ,MACpB,KAAKY,8BAAAA,CAAkB,YAAA;AACrB,QAAA,OAAO,UAAA,CAAW,aAAA;AAAA,MACpB,KAAKA,8BAAAA,CAAkB,WAAA;AACrB,QAAA,OAAO,UAAA,CAAW,WAAA;AAAA,MACpB,KAAKA,8BAAAA,CAAkB,eAAA;AACrB,QAAA,OAAO,UAAA,CAAW,eAAA;AAAA,MACpB;AACE,QAAA,OAAO,UAAA,CAAW,OAAA;AAAA;AACtB,EACF,CAAA,EAAG,CAAC,KAAA,CAAM,MAAA,EAAQ,YAAY,CAAC,CAAA;AACjC,CAAA;AAEO,SAAS,eAAA,CAAgB,EAAE,QAAA,EAAS,EAAkC;AAE3E,EAAA,MAAM,CAAC,MAAM,CAAA,GAAIqJ,sBAAA,CAAU,SAAA,EAAW;AAAA,IACpC,IAAA,EAAM;AAAA,GACP,CAAA;AACD,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI9I,0BAAAA,EAAe;AAE7B,EAAA,MAAM,aAAa,MAAM;AACvB,IAAAN,gBAAM,MAAA,CAAO;AAAA,MACX,KAAA,EAAO,EAAE,mCAAmC,CAAA;AAAA,MAC5C,IAAA,EAAM,IAAA;AAAA,MACN,OAAA,kBACEZ,cAAAA,CAAC,KAAA,EAAA,EACC,0BAAAA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iGAAA,EACZ,QAAA,EAAA,MAAA,CAAO,GAAA,CAAI,CAAC,IAAA,EAAM,wBACjBmB,eAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UAEC,SAAA,EAAU,uDAAA;AAAA,UAEV,QAAA,EAAA;AAAA,4BAAAnB,eAACiK,mBAAA,EAAA,EAAU,OAAA,EAAS,IAAA,CAAK,QAAA,EAAU,MAAK,KAAA,EAAM,CAAA;AAAA,4BAC9CjK,cAAAA,CAAC,KAAA,EAAA,EAAK,QAAA,EAAA,IAAA,CAAK,IAAA,EAAK;AAAA;AAAA,SAAA;AAAA,QAJX;AAAA,OAMR,GACH,CAAA,EACF;AAAA,KAEH,CAAA;AAAA,EACH,CAAA;AAEA,EAAA,uBAAOA,cAAAA,CAAC,QAAA,EAAA,EAAO,OAAA,EAAS,YAAa,QAAA,EAAS,CAAA;AAChD;AAEO,IAAM,QAAA,GAAwC,CAAC,KAAA,qBACpDmB,eAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,KAAA,EAAM,4BAAA;AAAA,IACN,KAAA,EAAM,IAAA;AAAA,IACN,MAAA,EAAO,IAAA;AAAA,IACP,OAAA,EAAQ,WAAA;AAAA,IACR,IAAA,EAAK,cAAA;AAAA,IACJ,GAAG,KAAA;AAAA,IAEJ,QAAA,EAAA;AAAA,sBAAAnB,cAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,iNAAA,EAAkN,CAAA;AAAA,sBAC1NA,cAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,+LAAA,EAAgM,CAAA;AAAA,sBACxMA,cAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,gMAAA,EAAiM;AAAA;AAAA;AAC3M,CAAA;AAGF,IAAM,YAAY,MAAM;AACtB,EAAA,uBACEmB,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2DAAA,EACb,QAAA,EAAA;AAAA,oBAAAnB,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,4DAAA,EACb,QAAA,kBAAAA,cAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAI,6DAAA;AAAA,QACJ,SAAA,EAAU;AAAA;AAAA,KACZ,EACF,CAAA;AAAA,oBACAmB,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,qFAAA,EACb,QAAA,EAAA;AAAA,sBAAAnB,eAAC,KAAA,EAAA,EAAI,SAAA,EAAU,+FACb,QAAA,kBAAAA,cAAAA,CAAC,mBACC,QAAA,kBAAAA,cAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAU,yFAAA;AAAA,UACV,KAAA,EAAO,EAAE,MAAA,EAAQ,CAAA;AAAE;AAAA,SAEvB,CAAA,EACF,CAAA;AAAA,sBACAA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yDAAwD,QAAA,EAAA,KAAA,EAEvE;AAAA,KAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ,CAAA;AAEA,IAAM,cAAkB,MAAM;AAC5B,EAAA,MAAM,EAAE,KAAA,EAAO,OAAA,EAAAoF,QAAAA,KAAYlF,uBAAAA,EAAW;AACtC,EAAA,MAAM,EAAE,SAAA,EAAU,GAAID,+BAAAA,EAAmB;AACzC,EAAA,MAAM,EAAE,CAAA,EAAE,GAAIiB,0BAAAA,EAAe;AAC7B,EAAA,MAAM,gBAAgB,MAAM;AAC1B,IAAA,SAAA,CAAU,SAAA,CAAU,SAAA,CAAU,KAAA,CAAM,OAAA,IAAW,EAAE,CAAA;AACjD,IAAAoB,eAAAA,CAAM,OAAA,CAAQ,CAAA,CAAE,oBAAoB,CAAC,CAAA;AAAA,EACvC,CAAA;AAEA,EAAA,MAAM,gBAAA,GAAmBvC,gBAAQ,MAAM;AACrC,IAAA,IAAI,SAAA,EAAW;AACb,MAAA,OAAO,SAAA;AAAA,IACT;AACA,IAAA,IAAI,KAAA,CAAM,MAAA,KAAWY,8BAAAA,CAAkB,6BAAA,EAA+B;AACpE,MAAA,OAAO,sBAAqB,EAAG,cAAA;AAAA,IACjC;AACA,IAAA,OAAO,IAAA;AAAA,EACT,CAAA,EAAG,CAAC,SAAA,EAAW,KAAA,CAAM,MAAM,CAAC,CAAA;AAE5B,EAAA,MAAM,QAAA,GAAWZ,gBAAQ,MAAM;AAC7B,IAAA,IAAI,CAAC,MAAM,OAAA,EAAS;AAClB,MAAA;AAAA,IACF;AACA,IAAA,uBACEoB,eAAAA,CAACC,cAAAA,EAAA,EAAK,SAAA,EAAU,sCAAA,EAAuC,MAAM,CAAA,EAC1D,QAAA,EAAA;AAAA,MAAAqD,uBAAAA,CAAc,KAAA,CAAM,OAAA,IAAW,EAAE,CAAA;AAAA,sBAClCzE,cAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAU,oBAAA;AAAA,UACV,SAAS,MAAM;AACb,YAAA,aAAA,EAAc;AAAA,UAChB,CAAA;AAAA,UAEA,QAAA,kBAAAA,cAAAA;AAAA,YAACuI,kBAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAM,EAAA;AAAA,cACN,SAAA,EAAU,2BAAA;AAAA,cACV,OAAA,EAAS;AAAA;AAAA;AACX;AAAA;AACF,KAAA,EACF,CAAA;AAAA,EAEJ,CAAA,EAAG,CAAC,KAAA,CAAM,OAAO,CAAC,CAAA;AAClB,EAAA,MAAM,SAAA,GAAYxI,gBAAQ,MAAM;AAC9B,IAAA,IAAI,gBAAA,KAAqBmK,4BAAe,GAAA,EAAK;AAC3C,MAAA,uBAAOlK,eAAC,SAAA,EAAA,EAAU,CAAA;AAAA,IACpB;AAEA,IAAA,uBACEmB,gBAACC,cAAAA,EAAA,EAAK,MAAM,CAAA,EAAG,SAAA,EAAW,QAAA,EAAU,SAAA,EAAU,cAAA,EAC5C,QAAA,EAAA;AAAA,sBAAApB,cAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,GAAA,EAAI,wDAAA;AAAA,UACJ,SAAA,EAAU;AAAA;AAAA,OACZ;AAAA,MAAE;AAAA,KAAA,EAEJ,CAAA;AAAA,EAEJ,CAAA,EAAG,CAAC,gBAAgB,CAAC,CAAA;AAErB,EAAA,MAAM,OAAA,GAAUD,gBAAQ,MAAM;AAC5B,IAAA,IAAI,EAAA,GAAK,EAAA;AACT,IAAA,IAAI,gBAAA,IAAoBmK,4BAAe,GAAA,EAAK;AAC1C,MAAA,EAAA,GACE,6IAAA;AAAA,IACJ,CAAA,MAAA,IAAW,gBAAA,IAAoBA,2BAAA,CAAe,MAAA,EAAQ;AACpD,MAAA,EAAA,GACE,oIAAA;AAAA,IACJ;AACA,IAAA,OAAO,EAAA;AAAA,EACT,CAAA,EAAG,CAAC,gBAAgB,CAAC,CAAA;AACrB,EAAA,uBACE/I,eAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAW4D,YAAAA,CAAG;AAAA,QACZ,iHAAA;AAAA,QACA;AAAA,OACD,CAAA;AAAA,MAEA,QAAA,EAAA;AAAA,QAAA,QAAA;AAAA,QACA;AAAA;AAAA;AAAA,GACH;AAEJ,CAAA;AAEO,IAAM,sBAA0B,MAAM;AAC3C,EAAA,MAAM,EAAE,KAAA,EAAM,GAAI7E,uBAAAA,EAAW;AAC7B,EAAA,MAAM,EAAE,YAAA,EAAa,GAAIE,6BAAAA,EAAc;AACvC,EAAA,MAAM,EAAE,WAAA,EAAa,SAAA,EAAU,GAAI,gBAAA,EAAiB;AAEpD,EAAA,MAAM,kBAAA,GAAqBL,gBAAQ,MAAM;AACvC,IAAA,IAAI,KAAA,CAAM,MAAA,KAAWY,8BAAAA,CAAkB,6BAAA,EAA+B;AACpE,MAAA,OAAO,IAAA;AAAA,IACT;AACA,IAAA,IAAI,YAAA,EAAc;AAChB,MAAA,OAAO,KAAA;AAAA,IACT;AACA,IAAA,OAAO,KAAA,CAAM,UAAUA,8BAAAA,CAAkB,aAAA;AAAA,EAC3C,CAAA,EAAG,CAAC,KAAA,CAAM,MAAA,EAAQ,YAAY,CAAC,CAAA;AAE/B,EAAA,IAAI,kBAAA,EAAoB;AACtB,IAAA,uBAAOX,eAAC,WAAA,EAAA,EAAY,CAAA;AAAA,EACtB;AAEA,EAAA,uBACEA,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAW+E,YAAAA,CAAG;AAAA,QACZ,gHAAA;AAAA,QACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OAMD,CAAA;AAAA,MAED,QAAA,kBAAA/E,cAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAW+E,YAAAA;AAAA,YACT,4FAAA;AAAA,YACA;AAAA,WACF;AAAA,UAEC,QAAA,EAAA;AAAA;AAAA;AACH;AAAA,GACF;AAEJ,CAAA;AAGA,SAAS,oBAAA,GAAuB;AAC9B,EAAA,IAAI;AACF,IAAA,MAAM,iBAAA,GAAoB,YAAA,CAAa,OAAA,CAAQ,qBAAqB,CAAA;AACpE,IAAA,MAAM,IAAA,GAAO,iBAAA,GAAoBoF,sBAAA,CAAU,iBAAiB,CAAA,GAAI,IAAA;AAChE,IAAA,OAAO,IAAA;AAAA,EACT,SAAS,GAAA,EAAK;AAAA,EAEd;AACF;ACxRA,IAAMC,SAAAA,GAAW,CAAC,GAAA,KAAgC;AAChD,EAAA,OAAO,OAAO,GAAA,KAAQ,QAAA,IAAY,CAAC,MAAA,CAAO,MAAM,GAAG,CAAA;AACrD,CAAA;AAOO,IAAM,mBAAA,GAAoD,CAAC,KAAA,KAAU;AAC1E,EAAA,MAAM,EAAE,CAAA,EAAE,GAAIlJ,0BAAAA,EAAe;AAC7B,EAAA,MAAM,EAAE,YAAA,EAAc,aAAA,EAAc,GAAI,KAAA;AACxC,EAAA,MAAM,MAAA,GAAS,YAAA,EAAc,aAAA,GAAgB,qBAAqB,CAAA;AAClE,EAAA,uBACEC,eAAAA;AAAA,IAACC,cAAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAU,ghBAAA;AAAA,MAmBV,QAAA,EAAA;AAAA,wBAAAD,eAAAA,CAACC,cAAAA,EAAA,EAAK,SAAA,EAAU,8DAAA,EACd,QAAA,EAAA;AAAA,0BAAAD,eAAAA,CAACC,cAAAA,EAAA,EAAK,SAAA,EAAU,8BAAA,EACd,QAAA,EAAA;AAAA,4BAAApB,eAAC6B,cAAAA,EAAA,EAAK,WAAU,wDAAA,EACb,QAAA,EAAA,CAAA,CAAE,iCAAiC,CAAA,EACtC,CAAA;AAAA,4BACA7B,eAAC6B,cAAAA,EAAA,EAAK,WAAU,wDAAA,EACb,QAAA,EAAA,CAAA,CAAE,sBAAsB,CAAA,EAC3B;AAAA,WAAA,EACF,CAAA;AAAA,0BACA7B,eAACqK,uBAAA,EAAA,EAAc;AAAA,SAAA,EACjB,CAAA;AAAA,wBACAlJ,eAAAA,CAACC,cAAAA,EAAA,EAAK,WAAU,gEAAA,EACd,QAAA,EAAA;AAAA,0BAAApB,cAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,GAAA,EAAI,yDAAA;AAAA,cACJ,GAAA,EAAI,MAAA;AAAA,cACJ,SAAA,EAAU;AAAA;AAAA,WACZ;AAAA,0BACAA,cAAAA;AAAA,YAAC6B,cAAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAWkD,YAAAA;AAAA,gBACT,+BAAA;AAAA,gBACAqF,SAAAA,CAAS,MAAM,CAAA,IAAK,MAAA,KAAW,IAC3B,wBAAA,GACA;AAAA,eACN;AAAA,cAEC,uCAAgB,MAAA,EAAQ,EAAE,KAAK,CAAA,EAAG,QAAA,EAAU,MAAM;AAAA;AAAA,WACrD;AAAA,0BACApK,cAAAA,CAAC6B,cAAAA,EAAA,EAAK,SAAA,EAAU,2DAA0D,QAAA,EAAA,OAAA,EAE1E,CAAA;AAAA,0BACA7B,cAAAA;AAAA,YAAC6J,0BAAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAM,EAAA;AAAA,cACN,KAAA,EAAM,OAAA;AAAA,cACN,SAAA,EAAU,aAAA;AAAA,cACV,SAAS,MAAM;AACb,gBAAA,aAAA,EAAe,aAAA,CAAc;AAAA,kBAC3B,IAAA,EAAM,kCAAA;AAAA,kBACN,IAAA,EAAM,EAAE,wBAAwB;AAAA,iBACjC,CAAA;AAAA,cACH;AAAA;AAAA;AACF,SAAA,EACF;AAAA;AAAA;AAAA,GACF;AAEJ,CAAA;ACpEO,IAAM,qBAAA,GAAmC,CAAC,KAAA,KAAU;AACzD,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI3I,0BAAAA,EAAe;AAE7B,EAAA,MAAM,gBAAgB,MAAM;AAC1B,IAAA,KAAA,CAAM,eAAe,aAAA,CAAc;AAAA,MACjC,IAAA,EAAA,oBAAA;AAAA,MACA,IAAA,EAAM,EAAE,iBAAiB;AAAA,KAC1B,CAAA;AAAA,EACH,CAAA;AAEA,EAAA,MAAM,0BAA0B,MAAM;AACpC,IAAA,KAAA,CAAM,eAAe,aAAA,CAAc;AAAA,MACjC,IAAA,EAAA,+BAAA;AAAA,MACA,IAAA,EAAM,EAAE,6BAA6B;AAAA,KACtC,CAAA;AAAA,EACH,CAAA;AAEA,EAAA,uBACEC,eAAAA;AAAA,IAACC,cAAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,KAAA;AAAA,MACX,KAAA,EAAO,MAAA;AAAA,MACP,MAAA,EAAQ,MAAA;AAAA,MACR,SAAA,EAAU,8BAAA;AAAA,MAET,QAAA,EAAA;AAAA,QAAA,KAAA,CAAM,iCACLD,eAAAA;AAAA,UAACC,cAAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,QAAA;AAAA,YACV,IAAA,EAAM,CAAA;AAAA,YACN,SAAA,EAAW,QAAA;AAAA,YACX,SAAA,EAAU,+BAAA;AAAA,YACV,SAAS,KAAA,EAAO,SAAA;AAAA,YAEhB,QAAA,EAAA;AAAA,8BAAApB,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2FAAA,EACb,0BAAAA,cAAAA,CAACuB,iCAAAA,EAAA,EAAwB,IAAA,EAAM,EAAA,EAAI,KAAA,EAAM,OAAA,EAAQ,OAAA,EAAS,GAAG,CAAA,EAC/D,CAAA;AAAA,8BACAvB,eAAC6B,cAAAA,EAAA,EAAK,WAAU,+BAAA,EACb,QAAA,EAAA,CAAA,CAAE,gBAAgB,CAAA,EACrB;AAAA;AAAA;AAAA,SACF;AAAA,QAED,KAAA,CAAM,iCACLV,eAAAA;AAAA,UAACC,cAAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,QAAA;AAAA,YACV,IAAA,EAAM,CAAA;AAAA,YACN,SAAA,EAAW,QAAA;AAAA,YACX,SAAA,EAAU,+BAAA;AAAA,YACV,SAAS,KAAA,EAAO,UAAA;AAAA,YAEhB,QAAA,EAAA;AAAA,8BAAApB,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2FAAA,EACb,0BAAAA,cAAAA,CAACwB,4BAAAA,EAAA,EAAmB,IAAA,EAAM,EAAA,EAAI,KAAA,EAAM,OAAA,EAAQ,OAAA,EAAS,GAAG,CAAA,EAC1D,CAAA;AAAA,8BACAxB,eAAC6B,cAAAA,EAAA,EAAK,WAAU,+BAAA,EACb,QAAA,EAAA,CAAA,CAAE,iBAAiB,CAAA,EACtB;AAAA;AAAA;AAAA,SACF;AAAA,QAED,KAAA,CAAM,iCACLV,eAAAA;AAAA,UAACC,cAAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,QAAA;AAAA,YACV,IAAA,EAAM,CAAA;AAAA,YACN,SAAA,EAAW,QAAA;AAAA,YACX,SAAA,EAAU,+BAAA;AAAA,YACV,SAAS,KAAA,EAAO,UAAA;AAAA,YAEhB,QAAA,EAAA;AAAA,8BAAApB,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2FAAA,EACb,0BAAAA,cAAAA,CAACyB,+BAAAA,EAAA,EAAsB,IAAA,EAAM,EAAA,EAAI,KAAA,EAAM,OAAA,EAAQ,OAAA,EAAS,GAAG,CAAA,EAC7D,CAAA;AAAA,8BACAzB,eAAC6B,cAAAA,EAAA,EAAK,WAAU,+BAAA,EACb,QAAA,EAAA,CAAA,CAAE,iBAAiB,CAAA,EACtB;AAAA;AAAA;AAAA,SACF;AAAA,wBAEFV,eAAAA;AAAA,UAACC,cAAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,QAAA;AAAA,YACV,IAAA,EAAM,CAAA;AAAA,YACN,SAAA,EAAW,QAAA;AAAA,YACX,SAAA,EAAU,+BAAA;AAAA,YAEV,QAAA,EAAA;AAAA,8BAAApB,cAAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBACC,SAAA,EAAU,2FAAA;AAAA,kBACV,OAAA,EAAS,aAAA;AAAA,kBAET,QAAA,kBAAAA,cAAAA;AAAA,oBAACsK,2BAAA;AAAA,oBAAA;AAAA,sBACC,IAAA,EAAM,EAAA;AAAA,sBACN,KAAA,EAAM,OAAA;AAAA,sBACN,OAAA,EAAS,CAAA;AAAA,sBACT,OAAA,EAAQ,WAAA;AAAA,sBACR,SAAA,EAAU;AAAA;AAAA;AACZ;AAAA,eACF;AAAA,8BACAtK,eAAC6B,cAAAA,EAAA,EAAK,WAAU,+BAAA,EACb,QAAA,EAAA,CAAA,CAAE,iBAAiB,CAAA,EACtB;AAAA;AAAA;AAAA,SACF;AAAA,wBACAV,eAAAA;AAAA,UAACC,cAAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,QAAA;AAAA,YACV,IAAA,EAAM,CAAA;AAAA,YACN,SAAA,EAAW,QAAA;AAAA,YACX,SAAA,EAAU,+BAAA;AAAA,YACV,OAAA,EAAS,uBAAA;AAAA,YAET,QAAA,EAAA;AAAA,8BAAApB,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2FAAA,EACb,QAAA,kBAAAA,cAAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBACC,KAAA,EAAM,IAAA;AAAA,kBACN,MAAA,EAAO,IAAA;AAAA,kBACP,OAAA,EAAQ,WAAA;AAAA,kBACR,IAAA,EAAK,MAAA;AAAA,kBACL,KAAA,EAAM,4BAAA;AAAA,kBACN,SAAA,EAAU,gBAAA;AAAA,kBAEV,QAAA,kBAAAA,cAAAA;AAAA,oBAAC,MAAA;AAAA,oBAAA;AAAA,sBACC,CAAA,EAAE,opBAAA;AAAA,sBACF,IAAA,EAAK;AAAA;AAAA;AACP;AAAA,eACF,EACF,CAAA;AAAA,8BACAA,eAAC6B,cAAAA,EAAA,EAAK,WAAU,+BAAA,EACb,QAAA,EAAA,CAAA,CAAE,6BAA6B,CAAA,EAClC;AAAA;AAAA;AAAA;AACF;AAAA;AAAA,GACF;AAEJ,CAAA;ACrHO,IAAM,oBAAA,GAAkC,CAAC,KAAA,KAAU;AACxD,EAAA,MAAM,EAAE,CAAA,EAAE,GAAIX,0BAAAA,EAAe;AAC7B,EAAA,MAAM,EAAE,KAAA,EAAM,GAAIhB,uBAAAA,EAAW;AAE7B,EAAA,MAAM,gBAAA,GAAmBH,gBAAQ,MAAM;AACrC,IAAA,IAAI,MAAM,SAAA,EAAW;AACnB,MAAA,OAAO,KAAA,CAAM,SAAA;AAAA,IACf;AACA,IAAA,IAAI,KAAA,CAAM,MAAA,KAAWY,8BAAAA,CAAkB,6BAAA,EAA+B;AACpE,MAAA,OAAO4J,uBAAqB,EAAG,cAAA;AAAA,IACjC;AACA,IAAA,OAAO,IAAA;AAAA,EACT,GAAG,CAAC,KAAA,CAAM,SAAA,EAAW,KAAA,CAAM,MAAM,CAAC,CAAA;AAClC,EAAA,uBACEpJ,eAAAA;AAAA,IAACC,cAAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,QAAA;AAAA,MACX,KAAA,EAAO,MAAA;AAAA,MACP,MAAA,EAAQ,MAAA;AAAA,MACR,WAAW2D,YAAAA,CAAG;AAAA,QACZ,gFAAA;AAAA,QACA,gBAAA,KAAqBmF,4BAAe,GAAA,IAAO,kBAAA;AAAA,QAC3C,gBAAA,KAAqBA,4BAAe,MAAA,IAAU;AAAA,OAC/C,CAAA;AAAA,MACD,CAAA,EAAG,CAAA;AAAA,MAEH,QAAA,EAAA;AAAA,wBAAA/I,eAAAA,CAACC,gBAAA,EAAK,SAAA,EAAU,OAAM,IAAA,EAAM,CAAA,EAAG,WAAW,QAAA,EACxC,QAAA,EAAA;AAAA,0BAAApB,eAAC6B,cAAAA,EAAA,EAAK,WAAU,qCAAA,EACb,QAAA,EAAA,CAAA,CAAE,iCAAiC,CAAA,EACtC,CAAA;AAAA,0BACA7B,cAAAA;AAAA,YAAC8B,iBAAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAM,EAAA;AAAA,cACN,SAAA,EAAWiD,YAAAA;AAAA,gBACT,KAAA,CAAM,WAAW,yBAAA,GAA4B;AAAA,eAC/C;AAAA,cACA,SAAS,KAAA,CAAM;AAAA;AAAA;AACjB,SAAA,EACF,CAAA;AAAA,wBACA5D,eAAAA;AAAA,UAACC,cAAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,KAAA;AAAA,YACV,IAAA,EAAM,CAAA;AAAA,YACN,SAAA,EAAW,UAAA;AAAA,YACX,SAAA,EAAU,UAAA;AAAA,YAEV,QAAA,EAAA;AAAA,8BAAApB,cAAAA;AAAA,gBAAC6B,cAAAA,CAAK,OAAA;AAAA,gBAAL;AAAA,kBACC,SAAS,KAAA,CAAM,OAAA;AAAA,kBACf,SAAA,EAAU,iDAAA;AAAA,kBAET,gBAAM,cAAA,IAAkB;AAAA;AAAA,eAC3B;AAAA,8BACA7B,cAAAA,CAAC6B,cAAAA,EAAA,EAAK,SAAA,EAAU,uDAAsD,QAAA,EAAA,MAAA,EAEtE;AAAA;AAAA;AAAA,SACF;AAAA,wBACAV,eAAAA;AAAA,UAACC,cAAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,KAAA;AAAA,YACV,IAAA,EAAM,CAAA;AAAA,YACN,SAAA,EAAW,QAAA;AAAA,YACX,SAAA,EAAU,kCAAA;AAAA,YAEV,QAAA,EAAA;AAAA,8BAAApB,cAAAA,CAAC6B,eAAK,GAAA,EAAL,EAAS,SAAS,KAAA,CAAM,OAAA,EAAU,QAAA,EAAA,KAAA,CAAM,SAAA,IAAa,IAAA,EAAK,CAAA;AAAA,8BAC3D7B,cAAAA;AAAA,gBAAC6B,cAAAA,CAAK,GAAA;AAAA,gBAAL;AAAA,kBACC,SAAS,KAAA,CAAM,OAAA;AAAA,kBACf,IAAA,EAAK,aAAA;AAAA,kBACL,MAAA,EAAQ,GAAA;AAAA,kBACR,MAAA,EAAQ,GAAA;AAAA,kBAEP,gBAAM,SAAA,IAAa;AAAA;AAAA;AACtB;AAAA;AAAA,SACF;AAAA,wBACA7B,cAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,qGAAA;AAAA,YACV,OAAA,EAAS,MACP,KAAA,CAAM,aAAA,EAAe,aAAA,CAAc;AAAA,cACjC,IAAA,EAAA,mBAAA;AAAA,cACA,IAAA,EAAM;AAAA,aACP,CAAA;AAAA,YAGH,QAAA,kBAAAA,cAAAA;AAAA,cAACgE,6BAAAA;AAAA,cAAA;AAAA,gBACC,IAAA,EAAM,EAAA;AAAA,gBACN,OAAA,EAAS,IAAA;AAAA,gBACT,SAAA,EAAU;AAAA;AAAA;AACZ;AAAA;AACF;AAAA;AAAA,GACF;AAEJ,CAAA;AAIA,SAASuG,qBAAAA,GAAuB;AAC9B,EAAA,IAAI;AACF,IAAA,MAAM,iBAAA,GAAoB,YAAA,CAAa,OAAA,CAAQ,qBAAqB,CAAA;AACpE,IAAA,MAAM,IAAA,GAAO,iBAAA,GAAoBJ,sBAAAA,CAAU,iBAAiB,CAAA,GAAI,IAAA;AAChE,IAAA,OAAO,IAAA;AAAA,EACT,SAAS,GAAA,EAAK;AAAA,EAEd;AACF;AC/GO,IAAM,mBAAA,GAAiC,CAAC,KAAA,KAAU;AACvD,EAAA,MAAM,EAAE,CAAA,EAAE,GAAIjJ,0BAAAA,EAAe;AAC7B,EAAA,uBACEC,eAAAA;AAAA,IAACC,cAAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,KAAA;AAAA,MACX,KAAA,EAAO,MAAA;AAAA,MACP,SAAA,EAAU,6FAAA;AAAA,MACV,OAAA,EAAS,MACP,KAAA,EAAO,aAAA,EAAe,aAAA,CAAc;AAAA,QAClC,IAAA,EAAA,oBAAA;AAAA,QACA,IAAA,EAAM,EAAE,mBAAmB;AAAA,OAC5B,CAAA;AAAA,MAGH,QAAA,EAAA;AAAA,wBAAApB,eAACwK,yBAAA,EAAA,EAAgB,IAAA,EAAM,IAAI,OAAA,EAAS,IAAA,EAAM,OAAM,OAAA,EAAQ,CAAA;AAAA,wBACxDxK,eAAC6B,cAAAA,EAAA,EAAK,WAAU,2DAAA,EACb,QAAA,EAAA,CAAA,CAAE,mBAAmB,CAAA,EACxB,CAAA;AAAA,wBACA7B,cAAAA;AAAA,UAAC6J,0BAAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,aAAA;AAAA,YACV,IAAA,EAAM,EAAA;AAAA,YACN,OAAA,EAAS,IAAA;AAAA,YACT,KAAA,EAAM;AAAA;AAAA;AACR;AAAA;AAAA,GACF;AAEJ,CAAA;AC5BA,IAAMO,SAAAA,GAAW,CAAC,GAAA,KAAgC;AAChD,EAAA,OAAO,OAAO,GAAA,KAAQ,QAAA,IAAY,CAAC,MAAA,CAAO,MAAM,GAAG,CAAA;AACrD,CAAA;AAOO,IAAM,gBAAA,GAA8C,CAAC,KAAA,KAAU;AACpE,EAAA,MAAM,EAAE,CAAA,EAAE,GAAIlJ,0BAAAA,EAAe;AAC7B,EAAA,MAAM,EAAE,YAAA,EAAc,aAAA,EAAc,GAAI,KAAA;AACxC,EAAA,MAAM,MAAA,GAAS,YAAA,EAAc,YAAA,GAAe,oBAAoB,CAAA;AAChE,EAAA,uBACEC,eAAAA;AAAA,IAACC,cAAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAU,2gBAAA;AAAA,MAmBV,QAAA,EAAA;AAAA,wBAAAD,eAAAA,CAACC,cAAAA,EAAA,EAAK,SAAA,EAAU,8DAAA,EACd,QAAA,EAAA;AAAA,0BAAAD,eAAAA,CAACC,cAAAA,EAAA,EAAK,SAAA,EAAU,8BAAA,EACd,QAAA,EAAA;AAAA,4BAAApB,eAAC6B,cAAAA,EAAA,EAAK,WAAU,wDAAA,EACb,QAAA,EAAA,CAAA,CAAE,0BAA0B,CAAA,EAC/B,CAAA;AAAA,4BACA7B,eAAC6B,cAAAA,EAAA,EAAK,WAAU,wDAAA,EACb,QAAA,EAAA,CAAA,CAAE,iCAAiC,CAAA,EACtC;AAAA,WAAA,EACF,CAAA;AAAA,0BACA7B,eAACyK,0BAAA,EAAA,EAAiB;AAAA,SAAA,EACpB,CAAA;AAAA,wBAEAtJ,eAAAA;AAAA,UAACC,cAAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAW2D,YAAAA;AAAA,cACT;AAAA,aACF;AAAA,YAEA,QAAA,EAAA;AAAA,8BAAA/E,cAAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBACC,GAAA,EAAI,yDAAA;AAAA,kBACJ,GAAA,EAAI,MAAA;AAAA,kBACJ,SAAA,EAAU;AAAA;AAAA,eACZ;AAAA,8BACAA,cAAAA;AAAA,gBAAC6B,cAAAA;AAAA,gBAAA;AAAA,kBACC,SAAA,EAAWkD,YAAAA;AAAA,oBACT,+BAAA;AAAA,oBACAqF,SAAAA,CAAS,MAAM,CAAA,IAAK,MAAA,KAAW,IAC3B,wBAAA,GACA;AAAA,mBACN;AAAA,kBAEC,QAAA,EAAAM,6BAAgB,MAAA,EAAQ,EAAE,KAAK,CAAA,EAAG,QAAA,EAAU,MAAM;AAAA;AAAA,eACrD;AAAA,8BACA1K,cAAAA,CAAC6B,cAAAA,EAAA,EAAK,SAAA,EAAU,2DAA0D,QAAA,EAAA,OAAA,EAE1E,CAAA;AAAA,8BACA7B,cAAAA;AAAA,gBAAC6J,0BAAAA;AAAA,gBAAA;AAAA,kBACC,IAAA,EAAM,EAAA;AAAA,kBACN,KAAA,EAAM,OAAA;AAAA,kBACN,SAAA,EAAU,aAAA;AAAA,kBACV,SAAS,MAAM;AACb,oBAAA,aAAA,EAAe,aAAA,CAAc;AAAA,sBAC3B,IAAA,EAAM,+BAAA;AAAA,sBACN,IAAA,EAAM,EAAE,wBAAwB;AAAA,qBACjC,CAAA;AAAA,kBACH;AAAA;AAAA;AACF;AAAA;AAAA;AACF;AAAA;AAAA,GACF;AAEJ,CAAA;ATvEO,IAAM,cAAA,GAA0C,CAAC,KAAA,KAAU;AAChE,EAAA,MAAM,EAAE,iBAAA,EAAmB,cAAA,EAAe,GAAI,KAAA;AAC9C,EAAA,MAAM;AAAA,IACJ,QAAA;AAAA,IACA,UAAA;AAAA,IACA,SAAA;AAAA,IACA,cAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAA;AAAA,IACA,OAAA;AAAA,IACA,SAAA;AAAA,IACA,aAAA;AAAA,IACA,UAAA;AAAA,IACA,aAAA;AAAA,IACA;AAAA,MACE,cAAA,EAAe;AACnB,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI3I,0BAAAA,EAAe;AAC7B,EAAA,MAAM,cAAc,oBAAA,EAAqB;AACzC,EAAA,MAAM,gBAAgB,gBAAA,EAAiB;AACvC,EAAA,MAAM,EAAE,aAAA,EAAc,GAAId,6BAAAA,EAAc;AACxC,EAAYuK,sBAAA;AASZ,EAAA,MAAM,0BAAA,GACJ,OAAO,aAAA,KAAkB,UAAA,GACrB,MAAM;AACJ,IAAA,aAAA,CAAc;AAAA,MACZ,IAAA,EAAM,oBAAA;AAAA,MACN,IAAA,EAAM,EAAE,iBAAiB;AAAA,KAC1B,CAAA;AAAA,EACH,CAAA,GACA,MAAA;AAIN,EAAA,uBACExJ,eAAAA,CAAAQ,mBAAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA3B,eAAC,KAAA,EAAA,EAAI,SAAA,EAAU,qBACb,QAAA,kBAAAA,cAAAA,CAAC,uBAAoB,CAAA,EACvB,CAAA;AAAA,oBACAmB,eAAAA;AAAA,MAACC,cAAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,QAAA;AAAA,QACX,KAAA,EAAO,MAAA;AAAA,QACP,MAAA,EAAQ,MAAA;AAAA,QACR,SAAA,EAAU,oBAAA;AAAA,QAEV,QAAA,EAAA;AAAA,0BAAAD,eAAAA,CAACC,gBAAA,EAAK,SAAA,EAAU,UAAS,KAAA,EAAM,MAAA,EAAO,MAAM,CAAA,EAC1C,QAAA,EAAA;AAAA,4BAAApB,cAAAA;AAAA,cAAC,oBAAA;AAAA,cAAA;AAAA,gBACC,aAAA;AAAA,gBACA,cAAA;AAAA,gBACA,SAAA;AAAA,gBACA,SAAA;AAAA,gBACA,OAAA;AAAA,gBACA,QAAA;AAAA,gBACA,SAAA;AAAA,gBACA,eAAe,aAAA,EAAe;AAAA;AAAA,aAChC;AAAA,4BACAA,cAAAA,CAAC4K,qCAAA,EAAA,EAAoB,OAAA,EAAS,0BAAA,EAA4B,CAAA;AAAA,4BAC1D5K,eAAC,2BAAA,EAAA,EAA4B;AAAA,WAAA,EAC/B,CAAA;AAAA,0BACAA,cAAAA;AAAA,YAAC,qBAAA;AAAA,YAAA;AAAA,cACC,UAAU,CAAC,QAAA;AAAA,cACX,UAAA;AAAA,cACA,SAAA;AAAA,cACA,UAAA;AAAA,cACA,aAAA;AAAA,cACA,eAAe,aAAA,EAAe,aAAA;AAAA,cAC9B;AAAA;AAAA,WACF;AAAA,UAAA,CACE,CAAC,iBAAA,IAAqB,CAAC,cAAA,qBACvBA,cAAAA;AAAA,YAACoB,cAAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAW,KAAA;AAAA,cACX,KAAA,EAAO,MAAA;AAAA,cACP,MAAA,EAAQ,MAAA;AAAA,cACR,SAAA,EAAU,WAAA;AAAA,cAEV,0BAAAD,eAAAA,CAACC,cAAAA,EAAA,EAAK,SAAA,EAAU,KAAA,EAAM,WAAU,sBAAA,EAC7B,QAAA,EAAA;AAAA,gBAAA,CAAC,qCACApB,cAAAA;AAAA,kBAAC,mBAAA;AAAA,kBAAA;AAAA,oBACC,cAAc,WAAA,CAAY,YAAA;AAAA,oBAC1B,eAAe,aAAA,EAAe;AAAA;AAAA,iBAChC;AAAA,gBAED,CAAC,kCACAA,cAAAA;AAAA,kBAAC,gBAAA;AAAA,kBAAA;AAAA,oBACC,cAAc,WAAA,CAAY,YAAA;AAAA,oBAC1B,eAAe,aAAA,EAAe;AAAA;AAAA;AAChC,eAAA,EAEJ;AAAA;AAAA,WAKF;AAAA,0BAEFA,cAAAA,CAAC,mBAAA,EAAA,EAAoB,aAAA,EAAe,eAAe,aAAA,EAAe;AAAA;AAAA;AAAA;AACpE,GAAA,EACF,CAAA;AAEJ,CAAA;AU7HA,IAAM,kBAAkB6E,wBAAAA,CAAM,IAAA;AAAA,EAAK,MACjC,OAAA,CAAA,OAAA,EAAA,CAAA,IAAA,CAAA,OAAA,WAAA,EAAA,EAAA,cAAA,CAAA,CAAA,CAAmB,IAAA,CAAK,CAAC,GAAA,KAAQ;AAC/B,IAAA,OAAO,EAAE,OAAA,EAAS,GAAA,CAAI,WAAA,EAAY;AAAA,EACpC,CAAC;AACH,CAAA;AAEA,IAAM,wBAAwBA,wBAAAA,CAAM,IAAA;AAAA,EAAK,MACvC,OAAA,CAAA,OAAA,EAAA,CAAA,IAAA,CAAA,OAAA,eAAA,EAAA,EAAA,kBAAA,CAAA,CAAA,CAAuB,IAAA,CAAK,CAAC,GAAA,KAAQ;AACnC,IAAA,OAAO,EAAE,OAAA,EAAS,GAAA,CAAI,iBAAA,EAAkB;AAAA,EAC1C,CAAC;AACH,CAAA;AAEA,IAAM,wBAAwBA,wBAAAA,CAAM,IAAA;AAAA,EAAK,MACvC,OAAA,CAAA,OAAA,EAAA,CAAA,IAAA,CAAA,OAAA,gBAAA,EAAA,EAAA,mBAAA,CAAA,CAAA,CAAwB,IAAA,CAAK,CAAC,GAAA,KAAQ;AACpC,IAAA,OAAO,EAAE,OAAA,EAAS,GAAA,CAAI,iBAAA,EAAkB;AAAA,EAC1C,CAAC;AACH,CAAA;AAEA,IAAM,6BAA6BA,wBAAAA,CAAM,IAAA;AAAA,EAAK,MAC5C,OAAA,CAAA,OAAA,EAAA,CAAA,IAAA,CAAA,OAAA,qBAAA,EAAA,EAAA,wBAAA,CAAA,CAAA,CAA6B,IAAA,CAAK,CAAC,GAAA,KAAQ;AACzC,IAAA,OAAO,EAAE,OAAA,EAAS,GAAA,CAAI,sBAAA,EAAuB;AAAA,EAC/C,CAAC;AACH,CAAA;AAIO,IAAM,YAAA,GAAsC,CAAC,KAAA,KAAU;AAC5D,EAAA,MAAM,EAAE,QAAA,EAAS,GAAIrE,mBAAAA,EAAU;AAC/B,EAAA,uBACER,cAAAA,CAAC,gBAAA,EAAA,EACE,QAAA,EAAA,QAAA,mBACCA,cAAAA;AAAA,IAAC,cAAA;AAAA,IAAA;AAAA,MACC,mBAAmB,KAAA,CAAM,iBAAA;AAAA,MACzB,gBAAgB,KAAA,CAAM;AAAA;AAAA,GACxB,mBAEAmB,eAAAA,CAACiB,cAAAA,EAAA,EAAK,IAAA,EAAM,CAAA,EAAG,KAAK,CAAA,EAClB,QAAA,EAAA;AAAA,oBAAApC,cAAAA,CAAC6E,yBAAM,QAAA,EAAN,EAAe,UAAU,IAAA,EACxB,QAAA,kBAAA7E,cAAAA,CAAC,eAAA,EAAA,EAAgB,CAAA,EACnB,CAAA;AAAA,oBACAA,cAAAA,CAAC6E,wBAAAA,CAAM,QAAA,EAAN,EAAe,UAAU,IAAA,EACxB,QAAA,kBAAA7E,cAAAA,CAAC,qBAAA,EAAA,EAAsB,CAAA,EACzB,CAAA;AAAA,oBACAA,cAAAA,CAACoC,cAAAA,CAAK,MAAL,EAAU,OAAA,EAAS,GAClB,QAAA,kBAAApC,cAAAA,CAAC6E,wBAAAA,CAAM,QAAA,EAAN,EAAe,QAAA,EAAU,IAAA,EACxB,0BAAA7E,cAAAA,CAAC,qBAAA,EAAA,EAAsB,GACzB,CAAA,EACF,CAAA;AAAA,oBACAA,cAAAA,CAACoC,cAAAA,CAAK,MAAL,EAAU,OAAA,EAAS,GAClB,QAAA,kBAAApC,cAAAA,CAAC6E,wBAAAA,CAAM,QAAA,EAAN,EAAe,QAAA,EAAU,IAAA,EACxB,0BAAA7E,cAAAA,CAAC,0BAAA,EAAA,EAA2B,GAC9B,CAAA,EACF;AAAA,GAAA,EACF,CAAA,EAEJ,CAAA;AAEJ,CAAA;;;AC/DA,IAAA,eAAA,GAAA;AAAA,QAAA,CAAA,eAAA,EAAA;AAAA,EAAA,WAAA,EAAA,MAAA,WAAA;AAAA,EAAA,gBAAA,EAAA,MAAA;AAAA,CAAA,CAAA;ACoBA,IAAM,oBAAoB6E,wBAAAA,CAAM,IAAA;AAAA,EAAK,MACnC,OAAA,CAAA,OAAA,EAAA,CAAA,IAAA,CAAA,OAAA,kBAAA,EAAA,EAAA,qBAAA,CAAA,CAAA,CAA0B,IAAA,CAAK,CAAC,GAAA,KAAQ;AACtC,IAAA,OAAO,EAAE,OAAA,EAAS,GAAA,CAAI,aAAA,EAAc;AAAA,EACtC,CAAC;AACH,CAAA;AAkDA,IAAMgG,mBAAAA,GAAqB,CAAC,IAAA,KAAkB;AAC5C,EAAA,IAAI,IAAA,KAAS,MAAA,IAAa,IAAA,KAAS,IAAA,EAAM,OAAO,IAAA;AAChD,EAAA,MAAM,UAAA,GAAa,IAAA,IAAQ,CAAA,GAAI,IAAInI,oBAAAA,CAAQ,IAAI,CAAA,CAAE,GAAA,CAAI,GAAG,CAAA,GAAI,IAAIA,oBAAAA,CAAQ,IAAI,CAAA;AAC5E,EAAA,OAAO,CAAA,EAAG,UAAA,CAAW,OAAA,CAAQ,CAAC,CAAC,CAAA,CAAA,CAAA;AACjC,CAAA;AAEA,IAAM,YAAA,GAUD,CAAC,KAAA,KAAU;AACd,EAAA,MAAM,EAAE,KAAA,EAAO,WAAA,EAAa,YAAA,EAAc,SAAQ,GAAI,KAAA;AACtD,EAAA,MAAM,EAAE,CAAA,EAAE,GAAIxB,0BAAAA,EAAe;AAC7B,EAAA,MAAM,EAAE,QAAA,EAAS,GAAIV,mBAAAA,EAAU;AAC/B,EAAA,IAAI,CAAC,KAAA,CAAM,MAAA,EAAQ,OAAO,IAAA;AAE1B,EAAA,MAAM,aAAA,GAAgB,CAAC,IAAA,KAA2B;AAChD,IAAA,IAAI,IAAA,KAAS,MAAA,IAAa,IAAA,KAAS,IAAA,EAAM,OAAO,IAAA;AAChD,IAAA,MAAM,KAAA,GACJ,OAAO,IAAA,KAAS,QAAA,GAAW,IAAIkC,qBAAQ,IAAI,CAAA,GAAI,IAAIA,oBAAAA,CAAQ,IAAI,CAAA;AACjE,IAAA,OAAO,GAAG,KAAA,CAAM,GAAA,CAAI,GAAG,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAC,CAAA,CAAA,CAAA;AAAA,EACrC,CAAA;AAEA,EAAA,MAAM,OAAA,GAAuC;AAAA,IAC3C;AAAA,MACE,KAAA,EAAO,EAAE,mCAAmC,CAAA;AAAA,MAC5C,SAAA,EAAW,MAAA;AAAA,MACX,MAAA,EAAQ,CAAC,MAAA,EAAQ,GAAA,KAAQ;AACvB,QAAA,MAAM,QAAA,GACJ,GAAA,CAAI,IAAA,IAAQ,WAAA,GACR,GAAA,CAAI,KAAK,WAAA,EAAY,KAAM,WAAA,CAAY,WAAA,EAAY,GACnD,KAAA;AACN,QAAA,MAAM,SAAA,GAAY,IAAI,IAAA,KAAS,CAAA;AAC/B,QAAA,uBACEvB,eAAAA,CAACC,cAAAA,EAAA,EAAK,SAAA,EAAU,QAAA,EAAS,KAAK,CAAA,EAC3B,QAAA,EAAA;AAAA,UAAA,CAAC,SAAA,IAAa,GAAA,CAAI,aAAA,oBACjBpB,cAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,KAAK,GAAA,CAAI,aAAA;AAAA,cACT,GAAA,EAAK,CAAA,EAAG,GAAA,CAAI,IAAA,IAAQ,KAAK,CAAA,MAAA,CAAA;AAAA,cACzB,SAAA,EAAU;AAAA;AAAA,WACZ;AAAA,0BAEFA,cAAAA;AAAA,YAAC6B,cAAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,IAAA;AAAA,cACL,SAAA,EAAW,WAAW,EAAA,GAAK,EAAA;AAAA,cAC3B,SAAA,EAAW,WAAW,mBAAA,GAAsB,MAAA;AAAA,cAE3C,cAAI,IAAA,IAAQ;AAAA;AAAA;AACf,SAAA,EACF,CAAA;AAAA,MAEJ;AAAA,KACF;AAAA,IACA;AAAA,MACE,KAAA,EAAO,EAAE,qCAAqC,CAAA;AAAA,MAC9C,SAAA,EAAW,oBAAA;AAAA,MACX,KAAA,EAAO,QAAA;AAAA,MACP,MAAA,EAAQ,CAAC,KAAA,KAAkB;AACzB,QAAA,IAAI,KAAA,KAAU,MAAA,IAAa,KAAA,KAAU,IAAA,EAAM,OAAO,IAAA;AAClD,QAAA,OAAO,CAAA,CAAA,EAAImG,+BAAAA,CAAmB,KAAA,EAAO,CAAC,CAAC,CAAA,CAAA;AAAA,MACzC;AAAA,KACF;AAAA,IACA;AAAA,MACE,KAAA,EAAO,CAAA,EAAG,CAAA,CAAE,uCAAuC,CAAC,CAAA,CAAA,CAAA;AAAA,MACpD,SAAA,EAAW,cAAA;AAAA,MACX,KAAA,EAAO,QAAA;AAAA,MACP,MAAA,EAAQ,CAAC,KAAA,KAAkB6C,mBAAAA,CAAmB,KAAK,CAAA,IAAK;AAAA;AAC1D,GACF;AACA,EAAA,IAAI,CAAC,QAAA,EAAU;AACb,IAAA,OAAA,CAAQ,IAAA;AAAA,MACN;AAAA,QACE,KAAA,EAAO,EAAE,gCAAgC,CAAA;AAAA,QACzC,SAAA,EAAW,cAAA;AAAA,QACX,KAAA,EAAO,QAAA;AAAA,QACP,QAAQ,CAAC,MAAA,EAAiB,QACxB,aAAA,CAAc,GAAA,CAAI,mBAAmB,YAAY;AAAA,OACrD;AAAA,MACA;AAAA,QACE,KAAA,EAAO,EAAE,gCAAgC,CAAA;AAAA,QACzC,SAAA,EAAW,cAAA;AAAA,QACX,KAAA,EAAO,QAAA;AAAA,QACP,QAAQ,CAAC,MAAA,EAAiB,QACxB,aAAA,CAAc,GAAA,CAAI,mBAAmB,YAAY;AAAA;AACrD,KACF;AAAA,EACF;AAEA,EAAA,MAAM,OAAA,GAA6B;AAAA,IACjC,IAAA,EAAM,CAAA;AAAA,IACN,IAAA,EAAM,GAAA;AAAA,IACN,YAAA,EAAc,CAAA;AAAA,IACd,kBAAA,EAAoB,MAAA;AAAA,IACpB,iBAAA,EAAmB;AAAA,MACjB,cAAc,YAAA,EAAc,YAAA,GACxB,MAAA,CAAO,YAAA,CAAa,YAAY,CAAA,GAChC,MAAA;AAAA,MACJ,cAAc,YAAA,EAAc,YAAA,GACxB,MAAA,CAAO,YAAA,CAAa,YAAY,CAAA,GAChC;AAAA;AACN,GACF;AAEA,EAAA,uBACE1J,eAAAA,CAACsG,aAAAA,EAAA,EAAI,WAAU,mBAAA,EACb,QAAA,EAAA;AAAA,oBAAAtG,eAAAA;AAAA,MAACC,cAAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,WAAW,QAAA,GAAW,KAAA;AAAA,QACjC,SAAA,EAAW,WAAW,OAAA,GAAU,QAAA;AAAA,QAChC,GAAA,EAAK,WAAW,CAAA,GAAI,CAAA;AAAA,QACpB,SAAA,EAAU,kDAAA;AAAA,QAEV,QAAA,EAAA;AAAA,0BAAApB,cAAAA,CAAC6B,cAAAA,EAAA,EAAK,IAAA,EAAK,MAAA,EAAO,SAAA,EAAW,EAAA,EAAI,MAAA,EAAO,UAAA,EACrC,QAAA,EAAA,CAAA,CAAE,kCAAkC,CAAA,EACvC,CAAA;AAAA,0BACAV,eAAAA,CAACU,cAAAA,EAAA,EAAK,IAAA,EAAK,IAAA,EAAK,WAAW,EAAA,EAAI,QAAA,EAAA;AAAA,YAAA,GAAA;AAAA,YAC3B,EAAE,qCAAqC,CAAA;AAAA,YAAE;AAAA,WAAA,EAC7C;AAAA;AAAA;AAAA,KACF;AAAA,oBACA7B,cAAAA;AAAA,MAAC2F,mBAAAA;AAAA,MAAA;AAAA,QACC,QAAA,EAAQ,IAAA;AAAA,QACR,SAAA,EAAU,mBAAA;AAAA,QACV,UAAA,EAAY;AAAA,UACV,IAAA,EAAM;AAAA,SACR;AAAA,QACA,OAAA;AAAA,QACA,UAAA,EAAY,CAAC,OAAA,EAAS,GAAG,KAAK;AAAA;AAAA,KAChC;AAAA,oBACAxE,eAAAA,CAACC,cAAAA,EAAA,EAAK,WAAU,mDAAA,EACd,QAAA,EAAA;AAAA,sBAAApB,cAAAA,CAAC6B,gBAAA,EAAK,IAAA,EAAK,OAAM,SAAA,EAAW,EAAA,EACzB,QAAA,EAAA,CAAA,CAAE,oCAAoC,CAAA,EACzC,CAAA;AAAA,MACC,OAAA,oBACCV,eAAAA,CAAAQ,mBAAAA,EAAA,EACE,QAAA,EAAA;AAAA,wBAAA3B,eAAC6B,cAAAA,EAAA,EAAK,MAAK,KAAA,EAAM,SAAA,EAAW,IAAI,QAAA,EAAA,QAAA,EAEhC,CAAA;AAAA,wBACAV,eAAAA;AAAA,UAAC,GAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,iIAAA;AAAA,YACV,IAAA,EAAM,OAAA;AAAA,YACN,MAAA,EAAO,QAAA;AAAA,YACP,GAAA,EAAI,qBAAA;AAAA,YAEH,QAAA,EAAA;AAAA,cAAA,CAAA,CAAE,iCAAiC,CAAA;AAAA,8BACpCnB,cAAAA;AAAA,gBAAC8K,oCAAA;AAAA,gBAAA;AAAA,kBACC,IAAA,EAAM,EAAA;AAAA,kBACN,KAAA,EAAM,SAAA;AAAA,kBACN,SAAA,EAAU;AAAA;AAAA;AACZ;AAAA;AAAA;AACF,OAAA,EACF;AAAA,KAAA,EAEJ;AAAA,GAAA,EACF,CAAA;AAEJ,CAAA;AAEO,IAAM,YAAA,GAA4C,CAAC,KAAA,KAAU;AAClE,EAAA,MAAM,EAAE,QAAA,EAAS,GAAItK,mBAAAA,EAAU;AAE/B,EAAA,MAAM,EAAE,IAAA,EAAM,OAAA,EAAS,YAAAkD,WAAAA,EAAY,KAAA,EAAO,QAAO,GAAI,KAAA;AAErD,EAAA,MAAM,aAAA,GAAgB5C,mBAAAA;AAAA,IACpB,CAAC,QAAqB,KAAA,KAAkB;AACtC,MAAA,MAAM,MAAA,GACJ,OAAO,KAAA,KAAU,UAAA,GACb,KAAA,CAAM,MAAA,EAAQ,KAAK,CAAA,GACnB,EAAE,MAAA,EAAQ,MAAA,EAAW,MAAA,EAAQ,MAAA,EAAU;AAC7C,MAAA,MAAM,SAAS,IAAA,KAAS,MAAA,IAAa,IAAA,KAAS,IAAA,IAAQ,SAAS,KAAA,GAAQ,CAAA;AACvE,MAAA,IAAI,MAAA,EAAQ;AACV,QAAA,OAAO;AAAA,UACL,YAAA,EAAc,QAAA;AAAA,UACd,SAAA,EAAWiE,YAAAA;AAAA,YACT;AAAA,WACF;AAAA,UACA,GAAG,MAAA,CAAO;AAAA,SACZ;AAAA,MACF,CAAA,MAAO;AACL,QAAA,OAAO;AAAA,UACL,YAAA,EAAc,MAAA;AAAA,UACd,SAAA,EAAWA,aAAG,cAAc,CAAA;AAAA,UAC5B,GAAG,MAAA,CAAO;AAAA,SACZ;AAAA,MACF;AAAA,IACF,CAAA;AAAA,IACA,CAAC,MAAM,KAAK;AAAA,GACd;AAEA,EAAA,MAAM,cAAA,GAAiBjE,mBAAAA;AAAA,IACrB,CACE,MAAA,EACA,MAAA,EACA,KAAA,KACG;AACH,MAAA,MAAM,MAAA,GACJ,OAAO,MAAA,KAAW,UAAA,GACd,MAAA,CAAO,MAAA,EAAQ,MAAA,EAAQ,KAAK,CAAA,GAC5B,EAAE,MAAA,EAAQ,MAAA,EAAW,QAAQ,MAAA,EAAU;AAC7C,MAAA,MAAM,SAAS,IAAA,KAAS,MAAA,IAAa,IAAA,KAAS,IAAA,IAAQ,SAAS,KAAA,GAAQ,CAAA;AACvE,MAAA,MAAM,aAAA,GAAgB,OAAO,gBAAA,EAAiB;AAC9C,MAAA,MAAM,YAAA,GAAe,OAAO,eAAA,EAAgB;AAC5C,MAAA,IAAI,MAAA,EAAQ;AACV,QAAA,OAAO;AAAA,UACL,SAAA,EAAWiE,YAAAA;AAAA,YACT,aAAA,IAAiB,kBAAA;AAAA,YACjB,YAAA,IAAgB;AAAA,WAClB;AAAA,UACA,GAAG,MAAA,CAAO;AAAA,SACZ;AAAA,MACF,CAAA,MAAO;AACL,QAAA,OAAO;AAAA,UACL,SAAA,EAAW,EAAA;AAAA,UACX,GAAG,MAAA,CAAO;AAAA,SACZ;AAAA,MACF;AAAA,IACF,CAAA;AAAA,IACA,CAAC,MAAM,MAAM;AAAA,GACf;AAEA,EAAA,uBACE/E,cAAAA;AAAA,IAACyH,aAAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW1C,YAAAA;AAAA,QACT,6CAAA;AAAA,QACA,WAAW,uCAAA,GAA0C;AAAA,OACvD;AAAA,MAEA,QAAA,kBAAA/E,cAAAA;AAAA,QAAC2F,mBAAAA;AAAA,QAAA;AAAA,UACC,QAAA,EAAQ,IAAA;AAAA,UACR,SAAA,EAAU,mBAAA;AAAA,UACV,UAAA,EAAY,EAAE,IAAA,EAAM,oBAAA,EAAqB;AAAA,UACzC,KAAA,EAAO,aAAA;AAAA,UACP,MAAA,EAAQ,cAAA;AAAA,UACR,OAAA;AAAA,UACA,UAAA,EAAYjC;AAAA;AAAA;AACd;AAAA,GACF;AAEJ,CAAA;AAEA,IAAMrC,UAAAA,GAAoD,CAAC,EAAE,QAAA,EAAS,KAAM;AAC1E,EAAA,MAAM,EAAE,CAAA,EAAE,GAAIH,0BAAAA,EAAe;AAC7B,EAAA,MAAM,EAAE,QAAA,EAAS,GAAIV,mBAAAA,EAAU;AAE/B,EAAA,MAAM,gBAAgB,QAAA,GAClB,IAAI,KAAK,QAAQ,CAAA,CAAE,eAAe,OAAA,EAAS;AAAA,IACzC,KAAA,EAAO,OAAA;AAAA,IACP,GAAA,EAAK,SAAA;AAAA,IACL,IAAA,EAAM,SAAA;AAAA,IACN,MAAA,EAAQ,SAAA;AAAA,IACR,QAAA,EAAU,KAAA;AAAA,IACV,YAAA,EAAc;AAAA,GACf,CAAA,GACD,IAAA;AAEJ,EAAA,IAAI,QAAA,EAAU;AACZ,IAAA,uBACER,cAAAA,CAACoB,cAAAA,EAAA,EAAK,WAAW,QAAA,EAAU,OAAA,EAAS,QAAA,EAAU,GAAA,EAAK,CAAA,EAChD,QAAA,EAAA,aAAA,oBACCD,eAAAA,CAAAQ,qBAAA,EACE,QAAA,EAAA;AAAA,sBAAA3B,cAAAA,CAAC6B,gBAAA,EAAK,IAAA,EAAK,MAAK,SAAA,EAAW,EAAA,EACxB,QAAA,EAAA,CAAA,CAAE,mCAAmC,CAAA,EACxC,CAAA;AAAA,sBACA7B,eAAC6B,cAAAA,EAAA,EAAK,MAAK,IAAA,EAAK,SAAA,EAAW,IACxB,QAAA,EAAA,aAAA,EACH;AAAA,KAAA,EACF,CAAA,EAEJ,CAAA;AAAA,EAEJ;AACA,EAAA,uBACEV,eAAAA,CAACC,cAAAA,EAAA,EAAK,SAAA,EAAW,QAAA,EAAU,SAAS,SAAA,EAClC,QAAA,EAAA;AAAA,oBAAApB,eAAC6B,cAAAA,EAAA,EAAK,MAAM,IAAA,EAAO,QAAA,EAAA,CAAA,CAAE,mBAAmB,CAAA,EAAE,CAAA;AAAA,IACzC,aAAA,oBACCV,eAAAA,CAACC,cAAAA,EAAA,EAAK,WAAW,QAAA,EAAU,OAAA,EAAS,QAAA,EAAU,GAAA,EAAK,CAAA,EACjD,QAAA,EAAA;AAAA,sBAAApB,cAAAA,CAAC6B,gBAAA,EAAK,IAAA,EAAK,MAAK,SAAA,EAAW,EAAA,EACxB,QAAA,EAAA,CAAA,CAAE,mCAAmC,CAAA,EACxC,CAAA;AAAA,sBACA7B,eAAC6B,cAAAA,EAAA,EAAK,MAAK,IAAA,EAAK,SAAA,EAAW,IACxB,QAAA,EAAA,aAAA,EACH;AAAA,KAAA,EACF;AAAA,GAAA,EAEJ,CAAA;AAEJ,CAAA;AAEO,IAAM,OAAA,GAAkC,CAAC,KAAA,KAAU;AACxD,EAAA,MAAM;AAAA,IACJ,OAAA;AAAA,IACA,UAAA,EAAA6B,WAAAA;AAAA,IACA,IAAA;AAAA,IACA,GAAA;AAAA,IACA,iBAAA;AAAA,IACA,KAAA;AAAA,IACA,MAAA;AAAA,IACA,OAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAc,EAAC;AAAA,IACf,mBAAA;AAAA,IACA,cAAA;AAAA,IACA;AAAA,GACF,GAAI,KAAA;AACJ,EAAA,MAAM,EAAE,QAAA,EAAS,GAAIlD,mBAAAA,EAAU;AAC/B,EAAA,uBACEW,eAAAA;AAAA,IAACO,cAAAA;AAAA,IAAA;AAAA,MACC,uBAAO1B,cAAAA,CAACqB,YAAA,EAAU,QAAA,EAAU,SAAS,QAAA,EAAU,CAAA;AAAA,MAC/C,EAAA,EAAG,wBAAA;AAAA,MACH,SAAA,EAAU,QAAA;AAAA,MACV,UAAA,EAAY;AAAA,QACV,IAAA,EAAM,WAAW,4BAAA,GAA+B;AAAA,OAClD;AAAA,MAEC,QAAA,EAAA;AAAA,QAAA,CAAC,QAAA,oBAAYrB,cAAAA,CAACkC,iBAAAA,EAAA,EAAQ,CAAA;AAAA,wBACvBlC,cAAAA,CAAC6E,wBAAAA,CAAM,UAAN,EAAe,QAAA,EAAU,MACxB,QAAA,kBAAA7E,cAAAA;AAAA,UAAC,iBAAA;AAAA,UAAA;AAAA,YACC,GAAA;AAAA,YACA,IAAA;AAAA,YACA,iBAAA;AAAA,YACA,OAAA;AAAA,YACA,cAAA;AAAA,YACA,mBAAA;AAAA,YACA,cAAA;AAAA,YACA;AAAA;AAAA,SACF,EACF,CAAA;AAAA,QACC,WAAA,EAAa,MAAA,GAAS,CAAA,oBACrBA,cAAAA;AAAA,UAAC,YAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO,WAAA;AAAA,YACP,aAAa,OAAA,EAAS,IAAA;AAAA,YACtB,YAAA,EAAc,mBAAA;AAAA,YACd,OAAA,EAAS;AAAA;AAAA,SACX;AAAA,QAED,CAAC,kCACAA,cAAAA;AAAA,UAAC,YAAA;AAAA,UAAA;AAAA,YACC,UAAA,EAAY0D,WAAAA;AAAA,YACZ,OAAA;AAAA,YACA,GAAA;AAAA,YACA,IAAA;AAAA,YACA,KAAA;AAAA,YACA;AAAA;AAAA;AACF;AAAA;AAAA,GAEJ;AAEJ,CAAA;ACnaO,IAAM,aAAA,GAA8C,CAAC,KAAA,KAAU;AACpE,EAAA,MAAM,KAAA,GAAQ,iBAAiB,KAAK,CAAA;AACpC,EAAA,uBAAO1D,cAAAA,CAAC,OAAA,EAAA,EAAS,GAAG,KAAA,EAAO,CAAA;AAC7B,CAAA;ACJO,IAAM,WAAA,GAA0C,CAAC,KAAA,KAAU;AAChE,EAAA,uBAAOA,cAAAA,CAAC,aAAA,EAAA,EAAe,GAAG,KAAA,EAAO,CAAA;AACnC,CAAA;ACDA,IAAM,SAAA,GAAiC;AAAA,EACrC,oBAAA,EAAsB;AACxB,CAAA;AAEO,IAAM,oBAAoB,MAAM;AACrC,EAAA,MAAM,EAAE,CAAA,EAAE,GAAIkB,0BAAAA,EAAe;AAC7B,EAAA,OAAOnB,gBAA+B,MAAM;AAC1C,IAAA,OAAO;AAAA,MACL;AAAA,QACE,KAAA,EAAO,EAAE,+BAA+B,CAAA;AAAA,QACxC,SAAA,EAAW,MAAA;AAAA,QACX,KAAA,EAAO,MAAA;AAAA,QACP,KAAA,EAAO;AAAA,OACT;AAAA,MACA;AAAA,QACE,KAAA,EAAO,CAAA,EAAG,CAAA,CAAE,oCAAoC,CAAC,CAAA,OAAA,CAAA;AAAA,QACjD,SAAA,EAAW,QAAA;AAAA,QACX,KAAA,EAAO,QAAA;AAAA,QACP,KAAA,EAAO,GAAA;AAAA,QACP,MAAA,EAAQ,CAAC,GAAA,EAAK,MAAA,KAAW;AACvB,UAAA,MAAM,EAAE,UAAA,EAAY,UAAA,EAAY,WAAA,EAAY,GAAI,MAAA;AAChD,UAAA,IAAI,WAAA,EAAa;AACf,YAAA,OAAO,WAAA;AAAA,UACT;AACA,UAAA,IAAI,CAAC,UAAA,IAAc,CAAC,UAAA,EAAY;AAC9B,YAAA,uBAAOC,cAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,WAAW,QAAA,EAAA,IAAA,EAAE,CAAA;AAAA,UAClC;AACA,UAAA,IAAI,UAAA,IAAc,CAAC,UAAA,EAAY;AAC7B,YAAA,OAAO,EAAE,0CAAA,EAA4C;AAAA,cACnD,MAAA,EAAQgI,+BAAAA;AAAA,gBACN,UAAA;AAAA,gBACA,UAAA,KAAe,OAAU,CAAA,GAAI;AAAA;AAC/B,aACD,CAAA;AAAA,UACH;AACA,UAAA,uBACE7G,gBAAC,KAAA,EAAA,EACE,QAAA,EAAA;AAAA,YAAA,UAAA,IACC6G,+BAAAA,CAAmB,UAAA,EAAY,UAAA,KAAe,IAAA,GAAU,IAAI,CAAC,CAAA;AAAA,YAC9D,CAAA,GAAA,CAAA;AAAA,YACA,cACCA,+BAAAA,CAAmB,UAAA,EAAY,UAAA,KAAe,IAAA,GAAU,IAAI,CAAC;AAAA,WAAA,EACjE,CAAA;AAAA,QAEJ;AAAA,OACF;AAAA,MACA;AAAA,QACE,KAAA,EAAO,EAAE,gCAAgC,CAAA;AAAA,QACzC,SAAA,EAAW,WAAA;AAAA,QACX,KAAA,EAAO,OAAA;AAAA,QACP,KAAA,EAAO;AAAA,OACT;AAAA,MACA;AAAA,QACE,KAAA,EAAO,EAAE,gCAAgC,CAAA;AAAA,QACzC,SAAA,EAAW,WAAA;AAAA,QACX,KAAA,EAAO,OAAA;AAAA,QACP,KAAA,EAAO;AAAA;AACT,KACF;AAAA,EACF,CAAA,EAAG,CAAC,CAAC,CAAC,CAAA;AACR,CAAA;;;AChEO,IAAM,UAAA,GAA4B;AAAA,EACvC;AAAA,IACE,IAAA,EAAM,CAAA;AAAA,IACN,UAAA,EAAY,CAAA;AAAA,IACZ,UAAA,EAAY,GAAA;AAAA,IACZ,SAAA,EAAW,aAAA;AAAA,IACX,SAAA,EAAW;AAAA,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAM,CAAA;AAAA,IACN,UAAA,EAAY,GAAA;AAAA,IACZ,UAAA,EAAY,GAAA;AAAA,IACZ,SAAA,EAAW,YAAA;AAAA,IACX,SAAA,EAAW;AAAA,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAM,CAAA;AAAA,IACN,UAAA,EAAY,GAAA;AAAA,IACZ,UAAA,EAAY,GAAA;AAAA,IACZ,SAAA,EAAW,aAAA;AAAA,IACX,SAAA,EAAW;AAAA,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAM,CAAA;AAAA,IACN,UAAA,EAAY,GAAA;AAAA,IACZ,UAAA,EAAY,GAAA;AAAA,IACZ,SAAA,EAAW,aAAA;AAAA,IACX,SAAA,EAAW;AAAA,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAM,CAAA;AAAA,IACN,UAAA,EAAY,GAAA;AAAA,IACZ,UAAA,EAAY,GAAA;AAAA,IACZ,EAAA,EAAI,GAAA;AAAA,IACJ,SAAA,EAAW,aAAA;AAAA,IACX,SAAA,EAAW;AAAA,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAM,CAAA;AAAA,IACN,UAAA,EAAY,GAAA;AAAA,IACZ,UAAA,EAAY,GAAA;AAAA,IACZ,EAAA,EAAI,GAAA;AAAA,IACJ,SAAA,EAAW,aAAA;AAAA,IACX,SAAA,EAAW;AAAA,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAM,CAAA;AAAA,IACN,UAAA,EAAY,GAAA;AAAA,IACZ,UAAA,EAAY,MAAA;AAAA,IACZ,EAAA,EAAI,GAAA;AAAA,IACJ,SAAA,EAAW,SAAA;AAAA,IACX,SAAA,EAAW;AAAA;AAEf,CAAA;;;AC6CA,IAAM,cAAA,GAAiB,OAAO,GAAA,KAAgB;AAC5C,EAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,GAAG,CAAA;AAChC,EAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,IAAA,MAAM,IAAI,MAAM,CAAA,KAAA,EAAQ,QAAA,CAAS,MAAM,CAAA,EAAA,EAAK,QAAA,CAAS,UAAU,CAAA,CAAE,CAAA;AAAA,EACnE;AACA,EAAA,OAAO,SAAS,IAAA,EAAK;AACvB,CAAA;AAEA,IAAM,wBAAA,GAA2B,CAAC,OAAA,KAAwC;AACxE,EAAA,IAAI,CAAC,SAAS,OAAO,IAAA;AACrB,EAAA,IAAI,MAAM,OAAA,CAAQ,OAAO,GAAG,OAAQ,OAAA,CAAQ,CAAC,CAAA,IAAK,IAAA;AAElD,EAAA,MAAM,MAAA,GAAS,OAAA;AACf,EAAA,MAAM,IAAA,GAAA,CACH,MAAM,OAAA,CAAQ,MAAA,CAAO,IAAI,CAAA,GAAI,MAAA,CAAO,IAAA,CAAK,CAAC,CAAA,GAAI,MAAA,CAAO,UACrD,KAAA,CAAM,OAAA,CAAQ,OAAO,IAAI,CAAA,GAAI,OAAO,IAAA,CAAK,CAAC,CAAA,GAAI,MAAA,CAAO,IAAA,CAAA,IACtD,OAAA;AAEF,EAAA,MAAM,IAAA,GAAO,IAAA;AACb,EAAA,MAAM,MAAA,GAAU,MAAM,OAAA,IAAuC,MAAA;AAE7D,EAAA,IAAI,MAAA,EAAQ;AACV,IAAA,OAAO;AAAA,MACL,aAAa,IAAA,CAAK,WAAA;AAAA,MAClB,MAAM,MAAA,CAAO,IAAA;AAAA,MACb,MAAM,MAAA,CAAO,IAAA;AAAA,MACb,cAAc,MAAA,CAAO,YAAA;AAAA,MACrB,eAAe,MAAA,CAAO,aAAA;AAAA,MACtB,mBAAmB,IAAA,CAAK,iBAAA;AAAA,MAKxB,4BAA4B,IAAA,CAAK,0BAAA;AAAA,MAKjC,kBAAkB,IAAA,CAAK,gBAAA;AAAA,MACvB,aAAa,IAAA,CAAK,WAAA;AAAA,MAClB,UAAU,IAAA,CAAK;AAAA,KACjB;AAAA,EACF;AAEA,EAAA,OAAO,IAAA;AACT,CAAA;AAEA,IAAM,4BAAA,GAA+B,CACnC,OAAA,KACwB;AACxB,EAAA,IAAI,CAAC,OAAA,EAAS,OAAO,EAAE,KAAA,EAAO,EAAC,EAAE;AACjC,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,OAAO,CAAA,EAAG;AAC1B,IAAA,OAAO;AAAA,MACL,OAAO,OAAA,CAAQ,GAAA;AAAA,QAAI,CAAC,IAAA,KAClB,0BAAA,CAA2B,IAA+B;AAAA;AAC5D,KACF;AAAA,EACF;AAEA,EAAA,MAAM,MAAA,GAAS,OAAA;AACf,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,MAAA,CAAO,IAAI,CAAA,EAAG;AAC9B,IAAA,OAAO;AAAA,MACL,KAAA,EAAO,OAAO,IAAA,CAAK,GAAA;AAAA,QAAI,CAAC,IAAA,KACtB,0BAAA,CAA2B,IAA+B;AAAA;AAC5D,KACF;AAAA,EACF;AACA,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,MAAA,CAAO,IAAI,CAAA,EAAG;AAC9B,IAAA,OAAO;AAAA,MACL,KAAA,EAAO,OAAO,IAAA,CAAK,GAAA;AAAA,QAAI,CAAC,IAAA,KACtB,0BAAA,CAA2B,IAA+B;AAAA;AAC5D,KACF;AAAA,EACF;AAEA,EAAA,MAAM,aAAa,MAAA,CAAO,IAAA;AAC1B,EAAA,MAAM,aAAa,MAAA,CAAO,IAAA;AAC1B,EAAA,MAAM,SAAS,UAAA,IAAc,UAAA;AAC7B,EAAA,IAAI,MAAA,IAAU,OAAO,MAAA,KAAW,QAAA,EAAU;AACxC,IAAA,MAAM,KAAA,GAAS,MAAA,CAAO,KAAA,IAAuB,EAAC;AAC9C,IAAA,OAAO;AAAA,MACL,YAAA,EAAc,qBAAA;AAAA,QACZ,MAAA,CAAO,gBAAgB,MAAA,CAAO;AAAA,OAChC;AAAA,MACA,KAAA,EAAO,KAAA,CAAM,OAAA,CAAQ,KAAK,IACtB,KAAA,CAAM,GAAA;AAAA,QAAI,CAAC,IAAA,KACT,0BAAA,CAA2B,IAA+B;AAAA,UAE5D;AAAC,KACP;AAAA,EACF;AAEA,EAAA,MAAM,QAAA,GAAW,OAAA;AACjB,EAAA,OAAO;AAAA,IACL,YAAA,EAAc,qBAAA;AAAA,MACX,QAAA,CAAgD,gBAC9C,QAAA,CAAgD;AAAA,KACrD;AAAA,IACA,OAAO,KAAA,CAAM,OAAA,CAAQ,SAAS,KAAK,CAAA,GAC/B,SAAS,KAAA,CAAM,GAAA;AAAA,MAAI,CAAC,IAAA,KAClB,0BAAA,CAA2B,IAA+B;AAAA,QAE5D;AAAC,GACP;AACF,CAAA;AAEA,SAAS,sBACP,KAAA,EACqC;AACrC,EAAA,IAAI,CAAC,KAAA,IAAS,OAAO,KAAA,KAAU,UAAU,OAAO,MAAA;AAChD,EAAA,MAAM,KAAA,GAAQ,KAAA;AACd,EAAA,MAAM,MAAA,GAAS,CAAC,KAAA,KACd,KAAA,KAAU,UAAa,KAAA,KAAU,IAAA,GAAO,MAAA,GAAY,MAAA,CAAO,KAAK,CAAA;AAClE,EAAA,OAAO;AAAA,IACL,YAAA,EAAc,MAAA,CAAO,KAAA,CAAM,YAAA,IAAgB,MAAM,cAAc,CAAA;AAAA,IAC/D,YAAA,EAAc,MAAA,CAAO,KAAA,CAAM,YAAA,IAAgB,MAAM,cAAc,CAAA;AAAA,IAC/D,eAAA,EAAiB,MAAA,CAAO,KAAA,CAAM,eAAA,IAAmB,MAAM,kBAAkB,CAAA;AAAA,IACzE,eAAA,EAAiB,MAAA,CAAO,KAAA,CAAM,eAAA,IAAmB,MAAM,kBAAkB;AAAA,GAC3E;AACF;AAEA,SAAS,2BACP,IAAA,EACmB;AACnB,EAAA,MAAM,iBAAA,GAAoB,0BAAA;AAAA,IACxB,IAAA,CAAK,qBAAqB,IAAA,CAAK;AAAA,GACjC;AACA,EAAA,OAAO;AAAA,IACL,IAAI,IAAA,CAAK,EAAA;AAAA,IACT,MAAM,IAAA,CAAK,IAAA;AAAA,IACX,MAAM,IAAA,CAAK,IAAA;AAAA,IACX,aAAa,IAAA,CAAK,WAAA;AAAA,IAClB,YAAA,EAAe,IAAA,CAAK,YAAA,IAAgB,IAAA,CAAK,aAAA;AAAA,IAGzC,kBAAA,EAAqB,IAAA,CAAK,kBAAA,IACxB,IAAA,CAAK,qBAAA;AAAA,IACP,aAAA,EAAgB,IAAA,CAAK,aAAA,IAAiB,IAAA,CAAK,eAAA;AAAA,IAG3C,SAAA,EAAY,IAAA,CAAK,SAAA,IAAa,IAAA,CAAK,UAAA;AAAA,IACnC,SAAA,EAAY,IAAA,CAAK,SAAA,IAAa,IAAA,CAAK,UAAA;AAAA,IACnC;AAAA,GACF;AACF;AAEA,SAAS,2BACP,KAAA,EACwC;AACxC,EAAA,IAAI,CAAC,KAAA,IAAS,OAAO,KAAA,KAAU,UAAU,OAAO,MAAA;AAChD,EAAA,MAAM,KAAA,GAAQ,KAAA;AACd,EAAA,MAAM,QAAA,GAAW,CAAC,KAAA,KAChB,KAAA,KAAU,UAAa,KAAA,KAAU,IAAA,GAAO,MAAA,GAAY,MAAA,CAAO,KAAK,CAAA;AAClE,EAAA,OAAO;AAAA,IACL,YAAA,EAAc,QAAA,CAAS,KAAA,CAAM,YAAA,IAAgB,MAAM,cAAc,CAAA;AAAA,IACjE,YAAA,EAAc,QAAA,CAAS,KAAA,CAAM,YAAA,IAAgB,MAAM,cAAc,CAAA;AAAA,IACjE,eAAA,EAAiB,QAAA;AAAA,MACf,KAAA,CAAM,mBAAmB,KAAA,CAAM;AAAA,KACjC;AAAA,IACA,eAAA,EAAiB,QAAA;AAAA,MACf,KAAA,CAAM,mBAAmB,KAAA,CAAM;AAAA;AACjC,GACF;AACF;AAGA,IAAM,eAAA,GAAkB,CAAC,QAAA,EAAkB,OAAA,KAAoB;AAC7D,EAAA,IAAI,CAAC,UAAU,OAAO,IAAA;AACtB,EAAA,IAAI,CAAC,SAAS,OAAO,IAAA;AACrB,EAAA,OAAO,CAAA,EAAG,QAAQ,CAAA,MAAA,EAAS,OAAO,CAAA,CAAA;AACpC,CAAA;AAGA,IAAM,mBAAA,GAAsB,CAAC,QAAA,KAAsB;AACjD,EAAA,IAAI,CAAC,UAAU,OAAO,IAAA;AACtB,EAAA,OAAO,GAAG,QAAQ,CAAA,oBAAA,CAAA;AACpB,CAAA;AAEA,IAAM,eAAA,GAAkB,CAAC,OAAA,EAAwB,IAAA,KAA0B;AACzE,EAAA,MAAM,EAAE,sBAAA,GAAyB,CAAA,EAAG,sBAAA,GAAyB,GAAE,GAAI,IAAA;AACnE,EAAA,MAAM,YAAY,IAAItF,oBAAAA,CAAQ,sBAAsB,CAAA,CAAE,IAAI,IAAI,CAAA;AAC9D,EAAA,MAAM,YAAY,IAAIA,oBAAAA,CAAQ,sBAAsB,CAAA,CAAE,IAAI,IAAI,CAAA;AAC9D,EAAA,MAAM,QAAA,GAAW,OAAA,CAAQ,IAAA,CAAK,CAAC,IAAA,KAAS;AACtC,IAAA,MAAM,aAAA,GAAgB,KAAK,SAAA,CAAU,KAAA,CAAM,GAAG,CAAA,GAAI,CAAC,EAAE,IAAA,EAAK;AAC1D,IAAA,MAAM,aAAA,GAAgB,KAAK,SAAA,CAAU,KAAA,CAAM,GAAG,CAAA,GAAI,CAAC,EAAE,IAAA,EAAK;AAC1D,IAAA,OACE,aAAA,KAAkB,CAAA,EAAG,SAAA,CAAU,QAAA,EAAU,OACzC,aAAA,KAAkB,CAAA,EAAG,SAAA,CAAU,QAAA,EAAU,CAAA,CAAA,CAAA;AAAA,EAE7C,CAAC,CAAA;AACD,EAAA,OAAO,QAAA,EAAU,IAAA;AACnB,CAAA;AAEO,IAAM,gBAAA,GAAmB,CAAC,OAAA,KAAsC;AACrE,EAAA,MAAM,EAAE,aAAa,iBAAA,EAAmB,KAAA,EAAO,QAAQ,SAAA,EAAU,GAC/D,WAAW,EAAC;AACd,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAI5C,gBAAAA,EAAwB;AAChD,EAAA,MAAM,EAAE,IAAA,EAAM,SAAA,EAAU,GAAIiL,2BAAA,EAAe;AAC3C,EAAA,MAAM,EAAE,KAAA,EAAM,GAAI7K,uBAAAA,EAAW;AAC7B,EAAA,MAAM,eAAA,GAAkBuJ,uBAAU,iBAAiB,CAAA;AACnD,EAAA,MAAM,cAAA,GAAiBA,uBAAU,gBAAgB,CAAA;AACjD,EAAA,MAAM,eAAA,GAAkBA,uBAAU,iBAAiB,CAAA;AAEnD,EAAA,MAAM,OAAO,iBAAA,EAAkB;AAE/B,EAAA,MAAM,EAAE,IAAA,EAAM,gBAAA,EAAiB,GAAIxC,6BAEhC,uBAAuB,CAAA;AAE1B,EAAA,MAAM,EAAE,OAAA,EAAS,UAAA,EAAAvD,WAAAA,EAAW,GAAI3D,gBAAQ,MAAM;AAC5C,IAAA,OAAO,OAAO,WAAA,KAAgB,UAAA,GAC1B,WAAA,CAAY,MAAM,UAAA,EAAmB,EAAE,IAAA,EAAM,IAAA,IAAQ,QAAW,CAAA,GAChE,EAAE,OAAA,EAAS,MAAM,UAAA,EAA8B;AAAA,EACrD,CAAA,EAAG,CAAC,WAAA,EAAa,IAAA,EAAM,IAAI,CAAC,CAAA;AAE5B,EAAAoG,kBAAU,MAAM;AACd,IAAA,IAAI,CAAC,QAAQ,SAAA,EAAW;AACtB,MAAA;AAAA,IACF;AACA,IAAA,OAAA,CAAQ,eAAA,CAAgBzC,WAAAA,EAAY,IAAI,CAAC,CAAA;AAAA,EAC3C,CAAA,EAAG,CAAC,IAAA,EAAM,SAAA,EAAWA,WAAU,CAAC,CAAA;AAEhC,EAAA,MAAM,UAAA,GAAa3D,gBAAQ,MAAM;AAC/B,IAAA,IAAI,CAAC,eAAA,IAAmB,CAAC,KAAA,CAAM,SAAS,OAAO,IAAA;AAC/C,IAAA,OAAO,eAAA,CAAgB,eAAA,EAAiB,KAAA,CAAM,OAAO,CAAA;AAAA,EACvD,CAAA,EAAG,CAAC,eAAA,EAAiB,KAAA,CAAM,OAAO,CAAC,CAAA;AAEnC,EAAA,MAAM,EAAE,IAAA,EAAM,UAAA,EAAW,GAAIiL,uBAAA,CAAO,YAAY,cAAA,EAAgB;AAAA,IAC9D,iBAAA,EAAmB;AAAA,GACpB,CAAA;AACD,EAAA,MAAM,OAAA,GAAUjL,eAAAA;AAAA,IACd,MAAM,yBAAyB,UAAU,CAAA;AAAA,IACzC,CAAC,UAAU;AAAA,GACb;AAEA,EAAA,MAAM,cAAA,GAAiBA,eAAAA;AAAA,IACrB,MAAM,oBAAoB,eAAe,CAAA;AAAA,IACzC,CAAC,eAAe;AAAA,GAClB;AAEA,EAAA,MAAM,EAAE,IAAA,EAAM,cAAA,EAAe,GAAIiL,uBAAA,CAAO,gBAAgB,cAAA,EAAgB;AAAA,IACtE,iBAAA,EAAmB;AAAA,GACpB,CAAA;AACD,EAAA,MAAM,mBAAA,GAAsBjL,eAAAA;AAAA,IAC1B,MAAM,6BAA6B,cAAc,CAAA;AAAA,IACjD,CAAC,cAAc;AAAA,GACjB;AACA,EAAA,MAAM,WAAA,GAAc,mBAAA,CAAoB,KAAA,IAAS,EAAC;AAClD,EAAA,MAAM,sBAAsB,mBAAA,CAAoB,YAAA;AAEhD,EAAA,MAAM,iBAAA,GAAoBA,gBAAQ,MAAM;AACtC,IAAA,IAAI,CAAC,WAAA,EAAa,MAAA,EAAQ,OAAO,EAAC;AAClC,IAAA,OAAO,CAAC,GAAG,WAAW,CAAA,CAAE,IAAA;AAAA,MACtB,CAAC,CAAA,EAAG,CAAA,KAAA,CAAO,EAAE,kBAAA,IAAsB,CAAA,KAAM,EAAE,kBAAA,IAAsB,CAAA;AAAA,KACnE;AAAA,EACF,CAAA,EAAG,CAAC,WAAW,CAAC,CAAA;AAEhB,EAAA,MAAM,cAAA,GAAiB,QAAQ,eAAe,CAAA;AAC9C,EAAA,MAAM,cAAA,GAAiB;AAAA,IACrB,IAAA;AAAA,IACA,KAAK,gBAAA,EAAkB;AAAA,GACzB;AAEA,EAAA,MAAM,QAAA,GAAW0G,2BAAW,cAAA,EAAgB;AAAA,IAC1C,eACE,KAAA,CAAM,MAAA,KAAW9F,+BAAkB,6BAAA,GAC/BA,8BAAAA,CAAkB,gCAClBA,8BAAAA,CAAkB,aAAA;AAAA,IACxB,YAAA,EAAc;AAAA,MACZ,GAAG,cAAA;AAAA,MACH,IAAA,EAAM,MAAA;AAAA,MACN,GAAA,EAAK;AAAA;AACP,GACD,CAAA;AACD,EAAA,MAAM,WAAA,GAAc8F,2BAAW,OAAA,EAAS;AAAA,IACtC,eAAe9F,8BAAAA,CAAkB,SAAA;AAAA,IACjC,YAAA,EAAc;AAAA,GACf,CAAA;AAED,EAAA,OAAO;AAAA,IACL,GAAG,QAAA;AAAA,IACH,OAAA,EAAS,WAAA;AAAA,IACT,cAAA;AAAA,IACA,WAAA,EAAa,iBAAA;AAAA,IACb,mBAAA;AAAA,IACA,cAAA;AAAA,IACA,eAAA;AAAA,IACA,OAAA;AAAA,IACA,UAAA,EAAY+C,WAAAA;AAAA,IACZ,KAAA;AAAA,IACA,MAAA;AAAA,IACA;AAAA,GACF;AACF,CAAA;;;ACzYA,IAAA,YAAA,GAAA;AAAA,QAAA,CAAA,YAAA,EAAA;AAAA,EAAA,aAAA,EAAA,MAAA;AAAA,CAAA,CAAA;AAkCA,sBAAA,EAAA;AAQO,IAAM,aAAA,GAA0C,CAAC,KAAA,KAAU;AAChE,EAAA,MAAM,CAAC,GAAA,EAAK,MAAM,CAAA,GAAI5D,iBAAS,WAAA,iBAAkB;AACjD,EAAA,MAAM,EAAE,CAAA,EAAE,GAAIoB,0BAAAA,EAAe;AAC7B,EAAA,MAAM,EAAE,KAAA,EAAO,aAAA,EAAc,GAAIhB,uBAAAA,EAAW;AAE5C,EAAA,MAAM,WAAA,GAAc,KAAA,CAAM,WAAA,IAAe,EAAC;AAE1C,EAAA,MAAM,CAAC,eAAA,EAAiB,UAAU,CAAA,GAAI2E,yBAAM,QAAA,CAAA,cAAA,WAAgC;AAE5E,EAAA,MAAM,YAAA,GAAekC,eAA0B,IAAI,CAAA;AACnD,EAAA,MAAM,kBAAA,GAAqBA,eAAgC,IAAI,CAAA;AAC/D,EAAA,MAAM,cAAA,GAAiBA,eAA4B,IAAI,CAAA;AAEvD,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIjH,iBAAS,KAAK,CAAA;AAEhD,EAAAqG,kBAAU,MAAM;AACd,IAAA,MAAM,aAAa,MAAM;AACvB,MAAA,QAAQ,GAAA;AAAK,QACX,KAAK,WAAA,kBAAoB;AACvB,UAAA,MAAM,IAAA,GAAO,YAAA,CAAa,OAAA,EAAS,aAAA,IAAgB;AACnD,UAAA,OAAO,CAAC,EAAE,IAAA,IAAQ,IAAA,CAAK,MAAA,GAAS,CAAA,CAAA;AAAA,QAClC;AAAA,QACA,KAAK,kBAAA,wBAA0B;AAC7B,UAAA,MAAM,IAAA,GAAO,kBAAA,CAAmB,OAAA,EAAS,aAAA,IAAgB;AACzD,UAAA,OAAO,CAAC,EAAE,IAAA,IAAQ,IAAA,CAAK,MAAA,GAAS,CAAA,CAAA;AAAA,QAClC;AAAA,QACA,KAAK,aAAA,oBAAsB;AACzB,UAAA,MAAM,IAAA,GAAO,cAAA,CAAe,OAAA,EAAS,aAAA,IAAgB;AACrD,UAAA,OAAO,CAAC,EAAE,IAAA,IAAQ,IAAA,CAAK,MAAA,GAAS,CAAA,CAAA;AAAA,QAClC;AAAA,QACA;AACE,UAAA,OAAO,KAAA;AAAA;AACX,IACF,CAAA;AAEA,IAAA,YAAA,CAAa,YAAY,CAAA;AACzB,IAAA,MAAM,WAAW,WAAA,CAAY,MAAM,aAAa,UAAA,EAAY,GAAG,GAAG,CAAA;AAClE,IAAA,OAAO,MAAM,cAAc,QAAQ,CAAA;AAAA,EACrC,CAAA,EAAG,CAAC,GAAG,CAAC,CAAA;AAER,EAAA,MAAM,YAAA,GAAerF,oBAAY,MAAM;AACrC,IAAA,QAAQ,GAAA;AAAK,MACX,KAAK,WAAA,kBAAoB;AACvB,QAAA,MAAM,IAAA,GAAO,YAAA,CAAa,OAAA,EAAS,aAAA,IAAgB;AACnD,QAAA,IAAI,IAAA,IAAQ,IAAA,CAAK,MAAA,GAAS,CAAA,EAAG;AAC3B,UAAAmK,4BAAA,CAAgB;AAAA,YACd,UAAU,CAAA,UAAA,EAAA,iBAAa,IAAI,IAAA,EAAK,EAAE,SAAS,CAAA,CAAA;AAAA,YAC3C,SAASC,qCAAA,EAAyB;AAAA,YAClC;AAAA,WACD,CAAA;AAAA,QACH;AACA,QAAA;AAAA,MACF;AAAA,MACA,KAAK,kBAAA,wBAA0B;AAC7B,QAAA,MAAM,IAAA,GAAO,kBAAA,CAAmB,OAAA,EAAS,aAAA,IAAgB;AACzD,QAAA,IAAI,IAAA,IAAQ,IAAA,CAAK,MAAA,GAAS,CAAA,EAAG;AAC3B,UAAAD,4BAAA,CAAgB;AAAA,YACd,UAAU,CAAA,iBAAA,EAAA,iBAAoB,IAAI,IAAA,EAAK,EAAE,SAAS,CAAA,CAAA;AAAA,YAClD,SAASE,4CAAA,EAAgC;AAAA,YACzC;AAAA,WACD,CAAA;AAAA,QACH;AACA,QAAA;AAAA,MACF;AAAA,MACA,KAAK,aAAA,oBAAsB;AACzB,QAAA,MAAM,IAAA,GAAO,cAAA,CAAe,OAAA,EAAS,aAAA,IAAgB;AACrD,QAAA,IAAI,IAAA,IAAQ,IAAA,CAAK,MAAA,GAAS,CAAA,EAAG;AAC3B,UAAAF,4BAAA,CAAgB;AAAA,YACd,UAAU,CAAA,YAAA,EAAA,iBAAe,IAAI,IAAA,EAAK,EAAE,SAAS,CAAA,CAAA;AAAA,YAC7C,SAASG,wCAAA,EAA4B;AAAA,YACrC;AAAA,WACD,CAAA;AAAA,QACH;AACA,QAAA;AAAA,MACF;AAEE;AACJ,EACF,CAAA,EAAG,CAAC,GAAG,CAAC,CAAA;AAER,EAAA,MAAM,kBAAkBvG,wBAAAA,CAAM,WAAA;AAAA,IAC5B,CAAC,MAAA,KAA4C;AAC3C,MAAA,MAAM,EAAE,IAAA,EAAM,KAAA,EAAM,GAAI,MAAA;AACxB,MAAA,IAAI,SAAS,SAAA,EAAW;AACtB,QAAA,UAAA,CAAW,KAAK,CAAA;AAAA,MAClB;AAAA,IACF,CAAA;AAAA,IACA;AAAC,GACH;AAEA,EAAA,MAAM,YAAA,GAA6B;AAAA,IACjC,KAAA,EAAO,EAAE,mBAAmB,CAAA;AAAA,IAC5B,KAAA,EAAA,cAAA;AAAA,GACF;AAEA,EAAA,MAAM,YAAA,GAA6B;AAAA,IACjC,KAAA,EAAO,EAAE,oBAAoB,CAAA;AAAA,IAC7B,KAAA,EAAA,eAAA;AAAA,GACF;AAEA,EAAA,MAAM,eAAA,GAAkB9E,gBAAQ,MAAM;AACpC,IAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,WAAW,CAAA,IAAK,YAAY,MAAA,EAAQ;AACpD,MAAA,OAAO;AAAA,QACL,YAAA;AAAA,QACA,YAAA;AAAA,QACA,GAAG,WAAA,CAAY,GAAA,CAAkB,CAAC,KAAA,MAAW;AAAA,UAC3C,OAAO,KAAA,CAAM,EAAA;AAAA,UACb,KAAA,EAAO,KAAA,EAAO,WAAA,IAAe0E,uBAAAA,CAAc,OAAO,EAAE;AAAA,SACtD,CAAE;AAAA,OACJ;AAAA,IACF;AACA,IAAA,OAAO,CAAC,cAAc,YAAY,CAAA;AAAA,EACpC,CAAA,EAAG,CAAC,WAAW,CAAC,CAAA;AAEhB,EAAA,uBACEtD,eAAAA;AAAA,IAACC,cAAAA;AAAA,IAAA;AAAA,MAEC,SAAA,EAAW,QAAA;AAAA,MACX,SAAA,EAAW,OAAA;AAAA,MACX,GAAA,EAAK,CAAA;AAAA,MACL,KAAA,EAAM,MAAA;AAAA,MACN,MAAA,EAAO,MAAA;AAAA,MAEP,QAAA,EAAA;AAAA,wBAAAD,gBAACC,cAAAA,EAAA,EAAK,KAAA,EAAM,MAAA,EAAO,SAAQ,SAAA,EACzB,QAAA,EAAA;AAAA,0BAAApB,eAAC6B,cAAAA,EAAA,EAAK,MAAK,IAAA,EAAM,QAAA,EAAA,CAAA,CAAE,kBAAkB,CAAA,EAAE,CAAA;AAAA,0BACvC7B,cAAAA;AAAA,YAACsB,gBAAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAM,MAAA;AAAA,cACN,IAAA,EAAK,IAAA;AAAA,cACL,SAAA,EAAU,eAAA;AAAA,cACV,UAAU,CAAC,SAAA;AAAA,cACX,OAAA,EAAS,YAAA;AAAA,cACV,QAAA,EAAA;AAAA;AAAA;AAED,SAAA,EACF,CAAA;AAAA,wBACAtB,cAAAA,CAACkC,iBAAAA,EAAA,EAAQ,WAAU,YAAA,EAAa,CAAA;AAAA,wBAEhClC,eAACyH,aAAAA,EAAA,EAAI,OAAM,MAAA,EAAO,SAAA,EAAU,6BAC1B,QAAA,kBAAAtG,eAAAA;AAAA,UAAC+D,cAAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO,GAAA;AAAA,YACP,aAAA,EAAe,CAAC,CAAA,KAAM,MAAA,CAAO,CAAQ,CAAA;AAAA,YACrC,UAAA,EAAY;AAAA,cACV,QAAA,EAAU,2BAAA;AAAA,cACV,WAAA,EAAa,2BAAA;AAAA,cACb,OAAA,EAAS;AAAA,aACX;AAAA,YACA,SAAA,EAAU,YAAA;AAAA,YAEV,QAAA,EAAA;AAAA,8BAAAlF,cAAAA,CAACmF,kBAAAA,EAAA,EAAS,KAAA,EAAO,WAAA,kBAAoB,OAAO,CAAA,CAAE,kBAAkB,CAAA,EAC9D,QAAA,kBAAAnF,cAAAA,CAACoB,cAAAA,EAAA,EAAK,SAAA,EAAU,QAAA,EAAS,GAAA,EAAK,CAAA,EAAG,KAAA,EAAM,MAAA,EAAO,MAAA,EAAO,MAAA,EAClD,QAAA,EAAA,aAAA,mBACCD,eAAAA,CAAAQ,mBAAAA,EAAA,EACE,QAAA,EAAA;AAAA,gCAAA3B,cAAAA;AAAA,kBAAC2D,oBAAAA;AAAA,kBAAA;AAAA,oBACC,QAAA,EAAU,eAAA;AAAA,oBACV,KAAA,EAAO;AAAA,sBACL;AAAA,wBACE,IAAA,EAAM,QAAA;AAAA,wBACN,IAAA,EAAM,SAAA;AAAA,wBACN,KAAA,EAAO,eAAA;AAAA,wBACP,OAAA,EAAS;AAAA;AACX;AACF;AAAA,iBACF;AAAA,gCACA3D,cAAAA;AAAA,kBAACqL,yCAAA;AAAA,kBAAA;AAAA,oBACC,GAAA,EAAK,YAAA;AAAA,oBACL,eAAA;AAAA,oBACC,GAAG;AAAA;AAAA;AACN,eAAA,EACF,oBAEArL,cAAAA;AAAA,gBAACsL,kCAAA;AAAA,gBAAA;AAAA,kBACC,GAAA,EAAK,YAAA;AAAA,kBACJ,GAAG,KAAA;AAAA,kBACJ,oBAAA,EAAsB;AAAA;AAAA,iBAG5B,CAAA,EACF,CAAA;AAAA,8BACAtL,cAAAA;AAAA,gBAACmF,kBAAAA;AAAA,gBAAA;AAAA,kBACC,KAAA,EAAO,kBAAA;AAAA,kBACP,KAAA,EAAO,EAAE,2BAA2B,CAAA;AAAA,kBAEpC,QAAA,kBAAAnF,cAAAA,CAACoB,cAAAA,EAAA,EAAK,SAAA,EAAU,QAAA,EAAS,GAAA,EAAK,CAAA,EAAG,KAAA,EAAM,MAAA,EAAO,MAAA,EAAO,MAAA,EACnD,QAAA,kBAAApB,cAAAA;AAAA,oBAACuL,wCAAA;AAAA,oBAAA;AAAA,sBACC,GAAA,EAAK,kBAAA;AAAA,sBACJ,GAAG,KAAA;AAAA,sBACJ,oBAAA,EAAsB;AAAA;AAAA,mBACxB,EACF;AAAA;AAAA,eACF;AAAA,8BACAvL,cAAAA,CAACmF,kBAAAA,EAAA,EAAS,KAAA,EAAO,iCAAsB,KAAA,kBAAOnF,cAAAA,CAAC,cAAA,EAAA,EAAe,GAC5D,QAAA,kBAAAA,cAAAA,CAACwL,oCAAA,EAAA,EAAkB,GAAA,EAAK,gBAAgB,CAAA,EAC1C;AAAA;AAAA;AAAA,SACF,EACF;AAAA;AAAA;AAAA,GACF;AAEJ,CAAA;AAEA,IAAM,iBAA2B,MAAM;AACrC,EAAA,MAAM,EAAE,CAAA,EAAE,GAAItK,0BAAAA,EAAe;AAC7B,EAAA,uBACEC,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wBAAA,EACb,QAAA,EAAA;AAAA,oBAAAnB,cAAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,CAAA,CAAE,uBAAuB,CAAA,EAAE,CAAA;AAAA,oBAClCA,cAAAA;AAAA,MAACqC,iBAAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAU,iCAAA;AAAA,QACV,OAAA,kBACElB,eAAAA,CAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,0BAAAnB,eAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iBAAA,EACZ,QAAA,EAAA,CAAA,CAAE,2CAA2C,CAAA,EAChD,CAAA;AAAA,0BACAA,cAAAA,CAAC,KAAA,EAAA,EACC,QAAA,kBAAAA,cAAAA;AAAA,YAAC,GAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,2FAAA;AAAA,cACL,MAAA,EAAO,QAAA;AAAA,cACP,GAAA,EAAI,qBAAA;AAAA,cACJ,SAAA,EAAU,kBAAA;AAAA,cAET,YAAE,wCAAwC;AAAA;AAAA,WAC7C,EACF;AAAA,SAAA,EACF,CAAA;AAAA,QAEF,KAAA,EAAO;AAAA,UACL,SAAA,EAAW;AAAA,SACb;AAAA,QAEA,QAAA,kBAAAA,eAAC,QAAA,EAAA,EAAO,SAAA,EAAU,kDAChB,QAAA,kBAAAA,cAAAA,CAACyL,4BAAe,CAAA,EAClB;AAAA;AAAA;AACF,GAAA,EACF,CAAA;AAEJ,CAAA;;;ACnRA,IAAAC,aAAAA,GAAA;AAAA,QAAA,CAAAA,aAAAA,EAAA;AAAA,EAAA,UAAA,EAAA,MAAA;AAAA,CAAA,CAAA;AAiBO,IAAM,UAAA,GAA4D,CACvE,KAAA,KACG;AACH,EAAA,MAAM,EAAE,gBAAe,GAAI,KAAA;AAC3B,EAAA,MAAM,EAAE,CAAA,EAAE,GAAIxK,0BAAAA,EAAe;AAE7B,EAAA,MAAM,SAAA,GAAY6F,eAA0B,IAAI,CAAA;AAEhD,EAAA,uBACE5F,eAAAA;AAAA,IAACC,cAAAA;AAAA,IAAA;AAAA,MAEC,SAAA,EAAW,QAAA;AAAA,MACX,SAAA,EAAW,OAAA;AAAA,MACX,GAAA,EAAK,CAAA;AAAA,MACL,KAAA,EAAM,MAAA;AAAA,MACN,MAAA,EAAO,MAAA;AAAA,MAEP,QAAA,EAAA;AAAA,wBAAAD,gBAACC,cAAAA,EAAA,EAAK,KAAA,EAAM,MAAA,EAAO,SAAQ,SAAA,EACzB,QAAA,EAAA;AAAA,0BAAApB,eAAC6B,cAAAA,EAAA,EAAK,MAAK,IAAA,EAAM,QAAA,EAAA,CAAA,CAAE,eAAe,CAAA,EAAE,CAAA;AAAA,0BACpC7B,cAAAA,CAACqC,iBAAAA,EAAA,EAAQ,OAAA,EAAS,CAAA,CAAE,yBAAyB,CAAA,EAC3C,QAAA,kBAAAlB,gBAACG,gBAAAA,EAAA,EAAO,OAAM,MAAA,EAAO,IAAA,EAAK,MAAK,SAAA,EAAU,eAAA,EAAgB,UAAQ,IAAA,EAC9D,QAAA,EAAA;AAAA,YAAA,CAAA,CAAE,iBAAiB,CAAA;AAAA,4BACpBtB,cAAAA,CAAC,WAAA,EAAA,EAAY,SAAA,EAAU,wCAAA,EAAyC;AAAA,WAAA,EAClE,CAAA,EACF;AAAA,SAAA,EACF,CAAA;AAAA,wBACAA,cAAAA,CAACkC,iBAAAA,EAAA,EAAQ,WAAU,YAAA,EAAa,CAAA;AAAA,wBAEhClC,cAAAA,CAACyH,aAAAA,EAAA,EAAI,OAAM,MAAA,EAAO,SAAA,EAAU,2BAAA,EAC1B,QAAA,kBAAAzH,cAAAA,CAAC2L,4BAAA,EAAA,EAAa,GAAA,EAAK,SAAA,EAAW,gBAAgC,CAAA,EAChE;AAAA;AAAA;AAAA,GACF;AAEJ,CAAA;AAEA,IAAM,cAAc9G,wBAAAA,CAAM,UAAA;AAAA,EACxB,CAAC,OAAO,GAAA,KAAQ;AACd,IAAA,uBACE7E,cAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAM,IAAA;AAAA,QACN,MAAA,EAAO,IAAA;AAAA,QACP,OAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAK,cAAA;AAAA,QACL,KAAA,EAAM,4BAAA;AAAA,QACN,GAAA;AAAA,QACC,GAAG,KAAA;AAAA,QAEJ,QAAA,kBAAAA,cAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,+IAAA,EAAgJ;AAAA;AAAA,KAC1J;AAAA,EAEJ;AACF,CAAA;;;ACpEA,IAAA,WAAA,GAAA;AAAA,QAAA,CAAA,WAAA,EAAA;AAAA,EAAA,cAAA,EAAA,MAAA,cAAA;AAAA,EAAA,gBAAA,EAAA,MAAA;AAAA,CAAA,CAAA;;;ACAA,kBAAA,EAAA;AACA,sBAAA,EAAA;AAGO,IAAM,gBAAA,GAAmB,CAAC,KAAA,KAG3B;AACJ,EAAA,MAAM,KAAA,GAAQ,oBAAoB,KAAK,CAAA;AACvC,EAAA,uBAAOA,cAAAA,CAAC,UAAA,EAAA,EAAY,GAAG,KAAA,EAAO,CAAA;AAChC,CAAA;ACFO,IAAM,cAAA,GAAiB,CAAC,KAAA,KAGzB;AACJ,EAAA,MAAM,EAAE,UAAA,EAAY,SAAA,GAAY,QAAA,EAAS,GAAI,KAAA;AAC7C,EAAA,uBAAOA,cAAAA,CAAC,gBAAA,EAAA,EAAiB,UAAA,EAAwB,SAAA,EAAqB,CAAA;AACxE,CAAA;;;ACdA,IAAA,eAAA,GAAA;AAAA,QAAA,CAAA,eAAA,EAAA;AAAA,EAAA,WAAA,EAAA,MAAA,WAAA;AAAA,EAAA,aAAA,EAAA,MAAA;AAAA,CAAA,CAAA;ACaA,IAAM,6BAAA,GAAgC,2BAAA;AACtC,IAAM,8BAAA,GAAiC,4BAAA;AAEvC,IAAM,+BAAA,GAAkC,6BAAA;AAExC,IAAM,4CAAA,GACJ,8CAAA;AAMK,IAAM,mBAAmB,MAAM;AACpC,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI+K,2BAAAA,EAAe;AAChC,EAAA,MAAM,EAAE,YAAA,EAAc,eAAA,EAAgB,GAAI3K,6BAAAA,EAAc;AACxD,EAAA,MAAM,CAAC,MAAM,CAAA,GAAIwL,wBAAA,CAAY,+BAA+B,CAAA;AAC5D,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI9L,iBAAS,KAAK,CAAA;AAC5C,EAAA,MAAM,EAAE,YAAA,EAAa,GAAI+L,8BAAA,EAAkB;AAC3C,EAAA,MAAM,EAAE,MAAA,EAAQ,cAAA,EAAgB,iBAAA,KAAsBC,yBAAA,EAAgB;AAEtE,EAAA,MAAM,YAAA,GAAe,cAAc,WAAA,EAAa,YAAA;AAChD,EAAA,MAAM,eAAA,GAAkB,OAAA,CAAQ,YAAA,IAAgB,YAAA,CAAa,SAAS,CAAC,CAAA;AACvE,EAAA,MAAM,oBACJ,YAAA,EAAc,WAAA,EAAa,iBAAA,IAAqB,YAAA,GAAe,CAAC,CAAA,EAAG,KAAA;AAErE,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAIvL,4BAAAA;AAAA,IAClC,6BAAA;AAAA,IACA,YAAA,EAAc,aAAa,WAAA,IAAe;AAAA,GAC5C;AAEA,EAAA,MAAM,CAAC,kBAAA,EAAoB,qBAAqB,IAAIA,4BAAAA,CAElD,8BAAA,EAAgC,qBAAqB,IAAI,CAAA;AAG3D,EAAA,MAAM,CAAC,iBAAA,EAAmB,oBAAoB,CAAA,GAAIA,4BAAAA;AAAA,IAChD,+BAAA;AAAA,IACA;AAAA,GACF;AAEA,EAAA,MAAM,CAAC,gBAAA,EAAkB,mBAAmB,CAAA,GAC1CA,4BAAAA;AAAA,IACE,4CAAA;AAAA,IACA;AAAA,GACF;AAEF,EAAA4F,kBAAU,MAAM;AACd,IAAA,UAAA,CAAW,IAAA,EAAM,6BAA6B,KAAK,CAAA;AAAA,EACrD,CAAA,EAAG,CAAC,IAAI,CAAC,CAAA;AAET,EAAA,MAAM,gBAAA,GAAmB4F,iCAAA,CAAqB,CAAC,KAAA,KAAmB;AAEhE,IAAA,MAAA,CAAO;AAAA,MACL,6BAAA,EAA+B;AAAA,KAChC,CAAA,CAAE,IAAA,CAAK,CAACxG,KAAAA,KAAS;AAChB,MAAA,IAAIA,MAAK,OAAA,EAAS;AAChB,QAAAjD,eAAAA,CAAM,OAAA,CAAQ,KAAA,GAAQ,QAAA,GAAW,QAAQ,CAAA;AAAA,MAC3C,CAAA,MAAO;AACL,QAAA,UAAA,CAAW,CAAC,KAAK,CAAA;AAAA,MACnB;AAAA,IACF,CAAC,CAAA;AAAA,EACH,GAAG,GAAG,CAAA;AAEN,EAAA,MAAM,iBAAA,GAAoB,CAAC,6BAAA,KAA2C;AACpE,IAAA,UAAA,CAAW,6BAA6B,CAAA;AACxC,IAAA,gBAAA,CAAiB,6BAA6B,CAAA;AAAA,EAChD,CAAA;AACA,EAAA,MAAM,EAAE,KAAA,EAAM,GAAIpC,uBAAAA,EAAW;AAE7B,EAAA,MAAM,QAAA,GACJ,CAAC,YAAA,IACD,CAAC,eAAA,KACA,KAAA,CAAM,MAAA,KAAWS,8BAAAA,CAAkB,aAAA,IAClC,KAAA,CAAM,MAAA,KAAWA,8BAAAA,CAAkB,6BAAA,CAAA;AAEvC,EAAA,OAAO;AAAA,IACL,yBAAA,EAA2B,OAAA;AAAA;AAAA,IAC3B,iBAAA;AAAA,IACA,SAAA,EAAW,KAAA;AAAA,IACX,QAAA;AAAA,IACA,UAAA;AAAA,IACA,aAAA;AAAA,IACA,mBAAA,EAAqB,OAAA,CAAQ,YAAA,EAAc,WAAA,EAAa,KAAK,CAAA;AAAA,IAC7D,YAAA;AAAA,IACA,eAAA;AAAA,IACA,kBAAA;AAAA,IACA,qBAAA;AAAA;AAAA,IAEA,iBAAA;AAAA,IACA,oBAAA;AAAA,IACA,gBAAA;AAAA,IACA,mBAAA;AAAA,IACA,MAAA;AAAA,IACA,cAAA;AAAA,IACA;AAAA,GACF;AACF,CAAA;ACpGO,IAAM,mBAA8C,CAAC;AAAA,EAC1D,GAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAAA,KAAM;AACJ,EAAA,uBACEQ,eAAAA;AAAA,IAACC,cAAAA;AAAA,IAAA;AAAA,MACC,OAAA,EAAS,CAAC,CAAA,KAAM;AACd,QAAA,aAAA,EAAc;AACd,QAAA,CAAA,CAAE,eAAA,EAAgB;AAAA,MACpB,CAAA;AAAA,MACA,GAAA,EAAK,CAAA;AAAA,MACL,SAAA,EAAU,oBAAA;AAAA,MAET,QAAA,EAAA;AAAA,QAAA,GAAA,mBACCpB,cAAAA,CAAC,YAAA,EAAA,EAAa,SAAA,EAAU,wBAAA,EAAyB,oBAEjDA,cAAAA,CAAC,cAAA,EAAA,EAAe,SAAA,EAAU,2BAAA,EAA4B,CAAA;AAAA,wBAExDA,cAAAA,CAAC6B,cAAAA,EAAA,EAAK,IAAA,EAAK,OAAM,SAAA,EAAW,GAAA,GAAM,EAAA,GAAK,EAAA,EACpC,QAAA,EAAA,KAAA,EACH;AAAA;AAAA;AAAA,GACF;AAEJ,CAAA;AAEO,IAAM,YAAA,GAAe,CAAC,KAAA,KAAiC;AAC5D,EAAA,uBACEV,eAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAM,IAAA;AAAA,MACN,MAAA,EAAO,IAAA;AAAA,MACP,OAAA,EAAQ,WAAA;AAAA,MACR,IAAA,EAAK,cAAA;AAAA,MACL,KAAA,EAAM,4BAAA;AAAA,MACN,WAAW,KAAA,CAAM,SAAA;AAAA,MAEjB,QAAA,EAAA;AAAA,wBAAAnB,cAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,oIAAA,EAAqI,CAAA;AAAA,wBAC7IA,eAAC,QAAA,EAAA,EAAO,EAAA,EAAG,KAAI,EAAA,EAAG,GAAA,EAAI,GAAE,OAAA,EAAQ;AAAA;AAAA;AAAA,GAClC;AAEJ,CAAA;AAEO,IAAM,cAAA,GAAiB,CAAC,KAAA,KAAiC;AAC9D,EAAA,uBACEA,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAM,IAAA;AAAA,MACN,MAAA,EAAO,IAAA;AAAA,MACP,OAAA,EAAQ,WAAA;AAAA,MACR,IAAA,EAAK,cAAA;AAAA,MACL,KAAA,EAAM,4BAAA;AAAA,MACN,WAAW,KAAA,CAAM,SAAA;AAAA,MAEjB,QAAA,kBAAAA,cAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,oIAAA,EAAqI;AAAA;AAAA,GAC/I;AAEJ,CAAA;ACjDO,IAAM,gBAAA,GAA8C,CAAC,KAAA,KAAU;AACpE,EAAA,MAAM,EAAE,CAAA,EAAE,GAAIkB,0BAAAA,EAAe;AAE7B,EAAA,MAAM,EAAE,MAAA,EAAQ,cAAA,EAAgB,iBAAA,EAAmB,YAAW,GAAI,KAAA;AAElE,EAAA,IAAI,CAAC,MAAA,IAAU,MAAA,CAAO,MAAA,IAAU,CAAA,EAAG;AACjC,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,uBACElB,cAAAA;AAAA,IAAC0B,cAAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO,EAAE,yBAAyB,CAAA;AAAA,MAClC,EAAA,EAAG,yBAAA;AAAA,MACH,UAAA,EAAY,EAAE,IAAA,EAAM,UAAA,EAAY,IAAA,EAAK;AAAA,MAErC,QAAA,kBAAA1B,cAAAA;AAAA,QAACoB,cAAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAW,KAAA;AAAA,UACX,GAAA,EAAK,CAAA;AAAA,UACL,KAAA,EAAO,MAAA;AAAA,UACP,SAAA,EAAW,QAAA;AAAA,UACX,SAAA,EAAW2D,YAAAA;AAAA,YACT,oDAAA;AAAA,YACA,UAAA,EAAY;AAAA,WACd;AAAA,UAEC,iBAAO,MAAA,KAAW,CAAA,mBACjB/E,cAAAA,CAACoB,gBAAA,EAAK,SAAA,EAAU,KAAA,EAAM,SAAA,EAAU,UAAS,GAAA,EAAK,CAAA,EAC3C,iBAAO,GAAA,CAAI,CAAC,0BACXpB,cAAAA;AAAA,YAACsB,gBAAAA;AAAA,YAAA;AAAA,cACC,OAAA,EAAS,KAAA,CAAM,EAAA,KAAO,cAAA,GAAiB,WAAA,GAAc,UAAA;AAAA,cACrD,IAAA,EAAK,IAAA;AAAA,cAEL,OAAA,EAAS,MAAM,iBAAA,GAAoB,KAAA,CAAM,EAAE,CAAA;AAAA,cAE1C,QAAA,EAAA,KAAA,CAAM;AAAA,aAAA;AAAA,YAHF,KAAA,CAAM;AAAA,WAKd,CAAA,EACH,CAAA,mBAEAtB,cAAAA,CAACoB,cAAAA,EAAA,EACC,QAAA,kBAAApB,cAAAA;AAAA,YAACgM,gBAAA,CAAO,OAAA;AAAA,YAAP;AAAA,cACC,KAAA,EAAO,cAAA;AAAA,cACP,aAAA,EAAe,CAAC,KAAA,KAAU;AACxB,gBAAA,iBAAA,GAAoB,KAAK,CAAA;AAAA,cAC3B,CAAA;AAAA,cACA,OAAA,EAAS,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,MAAW;AAAA,gBAC9B,OAAO,KAAA,CAAM,EAAA;AAAA,gBACb,OAAO,KAAA,CAAM;AAAA,eACf,CAAE,CAAA;AAAA,cACF,IAAA,EAAK,IAAA;AAAA,cACL,MAAA,EAAO,iCAAA;AAAA,cACP,UAAA,EAAY,EAAE,OAAA,EAAS,mBAAA;AAAoB;AAAA,WAC7C,EACF;AAAA;AAAA;AAEJ;AAAA,GACF;AAEJ,CAAA;ACjEO,IAAM,cAAA,GAA2C,CAAC,KAAA,KAAU;AACjE,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI9K,0BAAAA,EAAe;AAG7B,EAAA,MAAM,gBAAA,GAAA,CACH,KAAA,CAAM,mBAAA,IAAuB,KAAA,CAAM,oBACpC,KAAA,CAAM,iBAAA;AAER,EAAA,MAAM,QAAA,GAAW6F,eAAgC,IAAI,CAAA;AACrD,EAAA,MAAM,WAAA,GAAcjG,mBAAAA,CAAY,CAAC,KAAA,KAAmB;AAClD,IAAA,IAAI,CAAC,KAAA,EAAO;AACZ,IAAA,IAAI;AACF,MAAA,IAAI,CAAC,SAAS,OAAA,EAAS;AACrB,QAAA,QAAA,CAAS,OAAA,GAAU,IAAI,KAAA,EAAM;AAAA,MAC/B;AACA,MAAA,MAAM,QAAQ,QAAA,CAAS,OAAA;AACvB,MAAA,KAAA,CAAM,KAAA,EAAM;AACZ,MAAA,KAAA,CAAM,WAAA,GAAc,CAAA;AACpB,MAAA,KAAA,CAAM,GAAA,GAAM,KAAA;AAEZ,MAAA,KAAK,KAAA,CAAM,IAAA,EAAK,CAAE,KAAA,CAAM,MAAM,KAAA,CAAS,CAAA;AAAA,IACzC,CAAA,CAAA,MAAQ;AAAA,IAER;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,uBACEK,eAAAA,CAAAQ,mBAAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA3B,cAAAA;AAAA,MAAC0B,cAAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO,EAAE,iCAAiC,CAAA;AAAA,QAC1C,EAAA,EAAG,0BAAA;AAAA,QACH,SAAA,EAAU,iCAAA;AAAA,QAEV,QAAA,kBAAAP,eAAAA;AAAA,UAACC,cAAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAW,KAAA;AAAA,YACX,GAAA,EAAK,CAAA;AAAA,YACL,KAAA,EAAO,MAAA;AAAA,YACP,SAAA,EAAW,QAAA;AAAA,YACX,EAAA,EAAI,CAAA;AAAA,YACJ,SAAA,EAAU,oDAAA;AAAA,YAEV,QAAA,EAAA;AAAA,8BAAAD,eAAAA,CAACC,gBAAA,EAAK,SAAA,EAAW,UAAU,SAAA,EAAW,OAAA,EAAS,WAAU,YAAA,EACvD,QAAA,EAAA;AAAA,gCAAApB,cAAAA,CAAC6B,gBAAA,EAAK,SAAA,EAAW,IAAI,IAAA,EAAK,MAAA,EACvB,QAAA,EAAA,CAAA,CAAE,oCAAoC,CAAA,EACzC,CAAA;AAAA,gCACA7B,cAAAA,CAAC6B,cAAAA,EAAA,EAAK,SAAA,EAAW,IAAI,IAAA,EAAK,IAAA,EACvB,QAAA,EAAA,CAAA,CAAE,gDAAgD,CAAA,EACrD;AAAA,eAAA,EACF,CAAA;AAAA,8BAEA7B,cAAAA,CAACyI,mCAAAA,EAAA,EAAiB,KAAA,EAAM,OACtB,QAAA,kBAAAzI,cAAAA;AAAA,gBAACiM,gBAAA;AAAA,gBAAA;AAAA,kBACC,SAAS,KAAA,CAAM,yBAAA;AAAA,kBACf,eAAA,EAAiB,CAAC,CAAA,KAAM;AACtB,oBAAA,KAAA,CAAM,kBAAkB,CAAC,CAAA;AAAA,kBAC3B,CAAA;AAAA,kBACA,QAAA,EAAU,KAAA,CAAM,SAAA,IAAa,CAAC,KAAA,CAAM,QAAA;AAAA,kBACpC,aAAA,EAAY;AAAA;AAAA,eACd,EACF;AAAA;AAAA;AAAA;AACF;AAAA,KACF;AAAA,oBAGAjM,cAAAA;AAAA,MAAC0B,cAAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO,EAAE,wCAAwC,CAAA;AAAA,QACjD,EAAA,EAAG,wCAAA;AAAA,QACH,SAAA,EAAU,0CAAA;AAAA,QAEV,QAAA,kBAAAP,eAAAA;AAAA,UAACC,cAAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAW,KAAA;AAAA,YACX,GAAA,EAAK,CAAA;AAAA,YACL,KAAA,EAAO,MAAA;AAAA,YACP,SAAA,EAAW,QAAA;AAAA,YACX,EAAA,EAAI,CAAA;AAAA,YACJ,SAAA,EAAU,oDAAA;AAAA,YAEV,QAAA,EAAA;AAAA,8BAAApB,cAAAA,CAACoB,gBAAA,EAAK,SAAA,EAAW,UAAU,SAAA,EAAW,OAAA,EAAS,WAAU,YAAA,EACvD,QAAA,kBAAApB,eAAC6B,cAAAA,EAAA,EAAK,WAAW,EAAA,EAAI,IAAA,EAAK,MACvB,QAAA,EAAA,CAAA,CAAE,oDAAoD,GACzD,CAAA,EACF,CAAA;AAAA,8BAEA7B,cAAAA,CAACyI,mCAAAA,EAAA,EAAiB,KAAA,EAAM,OACtB,QAAA,kBAAAzI,cAAAA;AAAA,gBAACiM,gBAAA;AAAA,gBAAA;AAAA,kBACC,SAAS,KAAA,CAAM,iBAAA;AAAA,kBACf,eAAA,EAAiB,CAAC,OAAA,KAAY,KAAA,CAAM,qBAAqB,OAAO,CAAA;AAAA,kBAChE,QAAA,EAAU,CAAC,KAAA,CAAM,QAAA;AAAA,kBACjB,aAAA,EAAY;AAAA;AAAA,eACd,EACF;AAAA;AAAA;AAAA;AACF;AAAA,KACF;AAAA,IAEC,oCACCjM,cAAAA;AAAA,MAAC0B,cAAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO,EAAE,+BAA+B,CAAA;AAAA,QACxC,EAAA,EAAG,+BAAA;AAAA,QACH,SAAA,EAAU,0CAAA;AAAA,QAEV,QAAA,kBAAAP,eAAAA;AAAA,UAACC,cAAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAW,QAAA;AAAA,YACX,GAAA,EAAK,CAAA;AAAA,YACL,KAAA,EAAO,MAAA;AAAA,YACP,EAAA,EAAI,CAAA;AAAA,YACJ,SAAA,EAAW,OAAA;AAAA,YACX,SAAA,EAAU,oDAAA;AAAA,YAEV,QAAA,EAAA;AAAA,8BAAAD,eAAAA,CAACC,cAAAA,EAAA,EAAK,SAAA,EAAW,KAAA,EAAO,KAAK,CAAA,EAAG,KAAA,EAAO,MAAA,EAAQ,SAAA,EAAW,QAAA,EACxD,QAAA,EAAA;AAAA,gCAAApB,cAAAA;AAAA,kBAACoB,cAAAA;AAAA,kBAAA;AAAA,oBACC,SAAA,EAAW,QAAA;AAAA,oBACX,SAAA,EAAW,OAAA;AAAA,oBACX,SAAA,EAAU,YAAA;AAAA,oBAEV,QAAA,kBAAApB,cAAAA,CAAC6B,cAAAA,EAAA,EAAK,SAAA,EAAW,IAAI,IAAA,EAAK,IAAA,EACvB,QAAA,EAAA,CAAA,CAAE,2CAA2C,CAAA,EAChD;AAAA;AAAA,iBACF;AAAA,gCAEA7B,cAAAA,CAACyI,mCAAAA,EAAA,EAAiB,KAAA,EAAM,OACtB,QAAA,kBAAAzI,cAAAA;AAAA,kBAACiM,gBAAA;AAAA,kBAAA;AAAA,oBACC,SAAS,KAAA,CAAM,UAAA;AAAA,oBACf,eAAA,EAAiB,CAAC,OAAA,KAAY,KAAA,CAAM,cAAc,OAAO,CAAA;AAAA,oBACzD,QAAA,EAAU,CAAC,KAAA,CAAM,QAAA;AAAA,oBACjB,aAAA,EAAY;AAAA;AAAA,iBACd,EACF;AAAA,eAAA,EACF,CAAA;AAAA,cAEC,KAAA,CAAM,eAAA,IACL,KAAA,CAAM,YAAA,EAAc,MAAA,IACpB,KAAA,CAAM,UAAA,oBACJjM,cAAAA,CAACyI,mCAAAA,EAAA,EAAiB,KAAA,EAAM,KAAA,EACtB,QAAA,kBAAAzI,cAAAA,CAACoB,cAAAA,EAAA,EAAK,SAAA,EAAU,KAAA,EAAM,GAAA,EAAK,CAAA,EAAG,SAAA,EAAU,oBAAA,EACrC,QAAA,EAAA,KAAA,CAAM,YAAA,CAAa,GAAA,CAAI,CAAC,MAAA,KAAW;AAClC,gBAAA,MAAM,GAAA,GAAM,KAAA,CAAM,kBAAA,KAAuB,MAAA,CAAO,KAAA;AAChD,gBAAA,uBACEpB,cAAAA;AAAA,kBAAC,gBAAA;AAAA,kBAAA;AAAA,oBAEC,GAAA;AAAA,oBACA,OAAO,MAAA,CAAO,KAAA;AAAA,oBACd,eAAe,MAAM;AACnB,sBAAA,KAAA,CAAM,qBAAA,CAAsB,OAAO,KAAK,CAAA;AACxC,sBAAA,KAAA,CAAM,aAAA,CAAc,OAAA,CAAQ,MAAA,CAAO,KAAK,CAAC,CAAA;AACzC,sBAAA,WAAA,CAAY,OAAO,KAAK,CAAA;AAAA,oBAC1B;AAAA,mBAAA;AAAA,kBAPK,MAAA,CAAO;AAAA,iBAQd;AAAA,cAEJ,CAAC,GACH,CAAA,EACF;AAAA;AAAA;AAAA;AAEN;AAAA,KACF;AAAA,oBAGFA,cAAAA;AAAA,MAAC,gBAAA;AAAA,MAAA;AAAA,QACC,QAAQ,KAAA,CAAM,MAAA;AAAA,QACd,gBAAgB,KAAA,CAAM,cAAA;AAAA,QACtB,mBAAmB,KAAA,CAAM,iBAAA;AAAA,QACzB,UAAA,EAAY;AAAA,UACV,IAAA,EAAM,0CAAA;AAAA,UACN,OAAA,EAAS;AAAA;AACX;AAAA;AACF,GAAA,EACF,CAAA;AAEJ,CAAA;AC7JO,IAAM,aAAA,GAA0C,CAAC,KAAA,KAAU;AAChE,EAAA,MAAM,EAAE,CAAA,EAAE,GAAIkB,0BAAAA,EAAe;AAC7B,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIpB,iBAAkB,KAAK,CAAA;AAC/C,EAAA,MAAM,mBAAmB,MAAM;AAC7B,IAAA,OAAA,CAAQ,IAAI,CAAA;AAAA,EACd,CAAA;AAGA,EAAA,MAAM,gBAAA,GAAA,CACH,KAAA,CAAM,mBAAA,IAAuB,KAAA,CAAM,oBACpC,KAAA,CAAM,iBAAA;AAER,EAAA,MAAM,QAAA,GAAWiH,eAAgC,IAAI,CAAA;AACrD,EAAA,MAAM,WAAA,GAAcjG,mBAAAA,CAAY,CAAC,KAAA,KAAmB;AAClD,IAAA,IAAI,CAAC,KAAA,EAAO;AACZ,IAAA,IAAI;AACF,MAAA,IAAI,CAAC,SAAS,OAAA,EAAS;AACrB,QAAA,QAAA,CAAS,OAAA,GAAU,IAAI,KAAA,EAAM;AAAA,MAC/B;AACA,MAAA,MAAM,QAAQ,QAAA,CAAS,OAAA;AACvB,MAAA,KAAA,CAAM,KAAA,EAAM;AACZ,MAAA,KAAA,CAAM,WAAA,GAAc,CAAA;AACpB,MAAA,KAAA,CAAM,GAAA,GAAM,KAAA;AACZ,MAAA,KAAK,KAAA,CAAM,IAAA,EAAK,CAAE,KAAA,CAAM,MAAM,KAAA,CAAS,CAAA;AAAA,IACzC,CAAA,CAAA,MAAQ;AAAA,IAER;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,UAAA,GAAa,CAAC,QAAA,KAAiC;AACnD,IAAA,MAAM,UAAA,GAAa,MAAM,gBAAA,KAAqB,QAAA;AAC9C,IAAA,MAAM,WAAA,GAAc,MAAM,KAAA,CAAM,mBAAA,CAAoB,QAAQ,CAAA;AAC5D,IAAA,MAAM,aAAA,GAAgB,CAAC,CAAA,KAA2B;AAChD,MAAA,IAAI,CAAA,CAAE,GAAA,KAAQ,OAAA,IAAW,CAAA,CAAE,QAAQ,GAAA,EAAK;AACtC,QAAA,CAAA,CAAE,cAAA,EAAe;AACjB,QAAA,WAAA,EAAY;AAAA,MACd;AAAA,IACF,CAAA;AACA,IAAA,uBACEK,eAAAA;AAAA,MAACC,cAAAA;AAAA,MAAA;AAAA,QAEC,SAAA,EAAU,QAAA;AAAA,QACV,IAAA,EAAM,CAAA;AAAA,QACN,SAAA,EAAU,yCAAA;AAAA,QACV,OAAA,EAAS,WAAA;AAAA,QACT,SAAA,EAAW,aAAA;AAAA,QACX,IAAA,EAAK,QAAA;AAAA,QACL,QAAA,EAAU,CAAA;AAAA,QACV,cAAA,EAAc,UAAA;AAAA,QACd,YAAA,EAAY,UAAU,QAAQ,CAAA,CAAA;AAAA,QAE9B,QAAA,EAAA;AAAA,0BAAAD,eAAAA;AAAA,YAACC,cAAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAU,QAAA;AAAA,cACV,SAAA,EAAW2D,YAAAA;AAAA,gBACT,yIAAA;AAAA,gBACA,+BAAA;AAAA,gBACA,UAAA,IAAc;AAAA,eAChB;AAAA,cAEA,QAAA,EAAA;AAAA,gCAAA/E,cAAAA;AAAA,kBAACoB,cAAAA;AAAA,kBAAA;AAAA,oBACC,SAAA,EAAU,KAAA;AAAA,oBACV,SAAA,EAAU,SAAA;AAAA,oBACV,SAAA,EAAU,wCAAA;AAAA,oBAET,QAAA,EAAA,QAAA,KAAa,MAAA,mBACZD,eAAAA,CAAAQ,qBAAA,EACE,QAAA,EAAA;AAAA,sCAAA3B,eAAC,mBAAA,EAAA,EAAoB,CAAA;AAAA,sCACrBA,eAAC,cAAA,EAAA,EAAe;AAAA,qBAAA,EAClB,CAAA,mBAEAmB,eAAAA,CAAAQ,mBAAAA,EAAA,EACE,QAAA,EAAA;AAAA,sCAAA3B,eAAC,cAAA,EAAA,EAAe,CAAA;AAAA,sCAChBA,eAAC,mBAAA,EAAA,EAAoB;AAAA,qBAAA,EACvB;AAAA;AAAA,iBAEJ;AAAA,gCACAA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2CAAA,EAA4C;AAAA;AAAA;AAAA,WAC7D;AAAA,0BACAA,cAAAA;AAAA,YAAC6B,cAAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,KAAA;AAAA,cACL,SAAA,EAAW,EAAA;AAAA,cACX,SAAA,EAAWkD,YAAAA;AAAA,gBACT,iFAAA;AAAA,gBACA,UAAA,IAAc;AAAA,eAChB;AAAA,cAEC,uBAAa,MAAA,GACV,CAAA,CAAE,8BAA8B,CAAA,GAChC,EAAE,+BAA+B;AAAA;AAAA;AACvC;AAAA,OAAA;AAAA,MAjDK;AAAA,KAkDP;AAAA,EAEJ,CAAA;AAEA,EAAA,uBACE5D,eAAAA,CAAAQ,mBAAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAAR,eAAAA,CAACC,cAAAA,EAAA,EAAK,EAAA,EAAI,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,SAAA,EAAW,GAAA,EAAK,CAAA,EAAE,IAAA,EAAK,SAAA,EAAU,QAAA,EAClD,QAAA,EAAA;AAAA,sBAAApB,cAAAA,CAACkM,wCAAA,EAAA,EAAuB,IAAA,EAAY,YAAA,EAAc,OAAA,EAAS,CAAA;AAAA,sBAC3D/K,eAAAA;AAAA,QAACC,cAAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAU,oBAAA;AAAA,UACV,SAAA,EAAU,QAAA;AAAA,UACV,KAAA,EAAM,MAAA;AAAA,UACN,OAAA,EAAS,gBAAA;AAAA,UAET,QAAA,EAAA;AAAA,4BAAApB,cAAAA;AAAA,cAAC6B,cAAAA;AAAA,cAAA;AAAA,gBACC,IAAA,EAAK,MAAA;AAAA,gBACL,MAAA,EAAO,UAAA;AAAA,gBACP,SAAA,EAAW,EAAA;AAAA,gBACX,SAAA,EAAU,UAAA;AAAA,gBAET,YAAE,2BAA2B;AAAA;AAAA,aAChC;AAAA,4BACA7B,cAAAA;AAAA,cAAC6J,0BAAAA;AAAA,cAAA;AAAA,gBACC,IAAA,EAAM,EAAA;AAAA,gBACN,SAAA,EAAU;AAAA;AAAA;AACZ;AAAA;AAAA;AACF,KAAA,EACF,CAAA;AAAA,oBAEA7J,cAAAA;AAAA,MAAC0B,cAAAA;AAAA,MAAA;AAAA,QAEC,KAAA,kBACE1B,cAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,aAAA,EACZ,QAAA,EAAA,CAAA,CAAE,iCAAiC,CAAA,EACtC,CAAA;AAAA,QAEF,EAAA,EAAG,0BAAA;AAAA,QACH,SAAA,EAAU,0CAAA;AAAA,QACV,UAAA,EAAY,EAAE,IAAA,EAAM,SAAA,EAAW,SAAS,WAAA,EAAY;AAAA,QAEpD,QAAA,kBAAAA,cAAAA;AAAA,UAACoB,cAAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAW,KAAA;AAAA,YACX,GAAA,EAAK,CAAA;AAAA,YACL,KAAA,EAAO,MAAA;AAAA,YACP,SAAA,EAAW,QAAA;AAAA,YACX,EAAA,EAAI,CAAA;AAAA,YACJ,SAAA,EAAU,oDAAA;AAAA,YAEV,QAAA,kBAAAD,eAAAA;AAAA,cAACC,cAAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAW,QAAA;AAAA,gBACX,SAAA,EAAW,OAAA;AAAA,gBACX,SAAA,EAAU,sBAAA;AAAA,gBAEV,QAAA,EAAA;AAAA,kCAAApB,cAAAA,CAAC6B,gBAAA,EAAK,SAAA,EAAW,IAAI,IAAA,EAAK,IAAA,EACvB,QAAA,EAAA,CAAA,CAAE,oCAAoC,CAAA,EACzC,CAAA;AAAA,kCACA7B,cAAAA,CAAC6B,cAAAA,EAAA,EAAK,SAAA,EAAW,EAAA,EAAI,IAAA,EAAK,KAAA,EAAM,SAAA,EAAU,iBAAA,EACvC,QAAA,EAAA,CAAA,CAAE,gDAAgD,CAAA,EACrD,CAAA;AAAA,kCACA7B,cAAAA,CAACyI,mCAAAA,EAAA,EACC,QAAA,kBAAAzI,cAAAA;AAAA,oBAACiM,gBAAAA;AAAA,oBAAA;AAAA,sBACC,SAAA,EAAU,UAAA;AAAA,sBACV,SAAS,KAAA,CAAM,yBAAA;AAAA,sBACf,eAAA,EAAiB,CAAC,CAAA,KAAM;AACtB,wBAAA,KAAA,CAAM,kBAAkB,CAAC,CAAA;AAAA,sBAC3B,CAAA;AAAA,sBACA,QAAA,EAAU,KAAA,CAAM,SAAA,IAAa,CAAC,KAAA,CAAM,QAAA;AAAA,sBACpC,aAAA,EAAY;AAAA;AAAA,mBACd,EACF;AAAA;AAAA;AAAA;AACF;AAAA;AACF;AAAA,KACF;AAAA,oBAGAjM,cAAAA;AAAA,MAAC0B,cAAAA;AAAA,MAAA;AAAA,QAEC,KAAA,kBACE1B,cAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,aAAA,EACZ,QAAA,EAAA,CAAA,CAAE,wCAAwC,CAAA,EAC7C,CAAA;AAAA,QAEF,EAAA,EAAG,wCAAA;AAAA,QACH,SAAA,EAAU,0CAAA;AAAA,QACV,UAAA,EAAY,EAAE,IAAA,EAAM,SAAA,EAAW,SAAS,WAAA,EAAY;AAAA,QAEpD,QAAA,kBAAAA,cAAAA;AAAA,UAACoB,cAAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAW,KAAA;AAAA,YACX,GAAA,EAAK,CAAA;AAAA,YACL,KAAA,EAAO,MAAA;AAAA,YACP,SAAA,EAAW,QAAA;AAAA,YACX,EAAA,EAAI,CAAA;AAAA,YACJ,SAAA,EAAU,oDAAA;AAAA,YAEV,QAAA,kBAAAD,eAAAA;AAAA,cAACC,cAAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAW,QAAA;AAAA,gBACX,SAAA,EAAW,OAAA;AAAA,gBACX,SAAA,EAAU,sBAAA;AAAA,gBAEV,QAAA,EAAA;AAAA,kCAAApB,cAAAA,CAAC6B,cAAAA,EAAA,EAAK,SAAA,EAAW,EAAA,EAAI,IAAA,EAAK,KAAA,EAAM,SAAA,EAAU,iBAAA,EACvC,QAAA,EAAA,CAAA,CAAE,oDAAoD,CAAA,EACzD,CAAA;AAAA,kCACA7B,cAAAA,CAACyI,mCAAAA,EAAA,EACC,QAAA,kBAAAzI,cAAAA;AAAA,oBAACiM,gBAAAA;AAAA,oBAAA;AAAA,sBACC,SAAA,EAAU,UAAA;AAAA,sBACV,SAAS,KAAA,CAAM,iBAAA;AAAA,sBACf,eAAA,EAAiB,CAAC,OAAA,KAAY;AAC5B,wBAAA,KAAA,CAAM,qBAAqB,OAAO,CAAA;AAAA,sBACpC,CAAA;AAAA,sBACA,QAAA,EAAU,CAAC,KAAA,CAAM,QAAA;AAAA,sBACjB,aAAA,EAAY;AAAA;AAAA,mBACd,EACF;AAAA;AAAA;AAAA;AACF;AAAA;AACF;AAAA,KACF;AAAA,IAEC,oCACCjM,cAAAA;AAAA,MAAC0B,cAAAA;AAAA,MAAA;AAAA,QAEC,KAAA,kBACE1B,cAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,aAAA,EACZ,QAAA,EAAA,CAAA,CAAE,+BAA+B,CAAA,EACpC,CAAA;AAAA,QAEF,EAAA,EAAG,+BAAA;AAAA,QACH,SAAA,EAAU,0CAAA;AAAA,QACV,UAAA,EAAY,EAAE,IAAA,EAAM,SAAA,EAAW,SAAS,WAAA,EAAY;AAAA,QAEpD,QAAA,kBAAAA,cAAAA;AAAA,UAACoB,cAAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAW,KAAA;AAAA,YACX,GAAA,EAAK,CAAA;AAAA,YACL,KAAA,EAAO,MAAA;AAAA,YACP,SAAA,EAAW,QAAA;AAAA,YACX,EAAA,EAAI,CAAA;AAAA,YACJ,SAAA,EAAU,oDAAA;AAAA,YAEV,QAAA,kBAAAD,eAAAA;AAAA,cAACC,cAAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAW,QAAA;AAAA,gBACX,SAAA,EAAW,OAAA;AAAA,gBACX,SAAA,EAAU,sBAAA;AAAA,gBAEV,QAAA,EAAA;AAAA,kCAAApB,cAAAA,CAAC6B,cAAAA,EAAA,EAAK,SAAA,EAAW,EAAA,EAAI,IAAA,EAAK,KAAA,EAAM,SAAA,EAAU,iBAAA,EACvC,QAAA,EAAA,CAAA,CAAE,2CAA2C,CAAA,EAChD,CAAA;AAAA,kCACA7B,cAAAA,CAACyI,mCAAAA,EAAA,EACC,QAAA,kBAAAzI,cAAAA;AAAA,oBAACiM,gBAAAA;AAAA,oBAAA;AAAA,sBACC,SAAA,EAAU,UAAA;AAAA,sBACV,SAAS,KAAA,CAAM,UAAA;AAAA,sBACf,eAAA,EAAiB,CAAC,CAAA,KAAM;AACtB,wBAAA,KAAA,CAAM,cAAc,CAAC,CAAA;AAAA,sBACvB,CAAA;AAAA,sBACA,QAAA,EAAU,CAAC,KAAA,CAAM,QAAA;AAAA,sBACjB,aAAA,EAAY;AAAA;AAAA,mBACd,EACF,CAAA;AAAA,kBAEC,KAAA,CAAM,mBACL,KAAA,CAAM,YAAA,EAAc,UACpB,KAAA,CAAM,UAAA,oBACJjM,cAAAA,CAACoB,cAAAA,EAAA,EAAK,SAAA,EAAU,KAAA,EAAM,KAAK,CAAA,EAAG,IAAA,EAAK,QAChC,QAAA,EAAA,KAAA,CAAM,YAAA,CAAa,GAAA,CAAI,CAAC,MAAA,KAAW;AAClC,oBAAA,MAAM,GAAA,GAAM,KAAA,CAAM,kBAAA,KAAuB,MAAA,CAAO,KAAA;AAChD,oBAAA,uBACEpB,cAAAA;AAAA,sBAAC,gBAAA;AAAA,sBAAA;AAAA,wBAEC,GAAA;AAAA,wBACA,OAAO,MAAA,CAAO,KAAA;AAAA,wBACd,eAAe,MAAM;AACnB,0BAAA,KAAA,CAAM,qBAAA,CAAsB,OAAO,KAAK,CAAA;AACxC,0BAAA,KAAA,CAAM,aAAA,CAAc,OAAA,CAAQ,MAAA,CAAO,KAAK,CAAC,CAAA;AACzC,0BAAA,WAAA,CAAY,OAAO,KAAK,CAAA;AAAA,wBAC1B;AAAA,uBAAA;AAAA,sBAPK,MAAA,CAAO;AAAA,qBAQd;AAAA,kBAEJ,CAAC,CAAA,EACH;AAAA;AAAA;AAAA;AAEN;AAAA;AACF;AAAA,KACF;AAAA,oBAGFA,cAAAA;AAAA,MAAC,gBAAA;AAAA,MAAA;AAAA,QACC,QAAQ,KAAA,CAAM,MAAA;AAAA,QACd,gBAAgB,KAAA,CAAM,cAAA;AAAA,QACtB,mBAAmB,KAAA,CAAM,iBAAA;AAAA,QACzB,UAAA,EAAY;AAAA,UACV,IAAA,EAAM,kDAAA;AAAA,UACN,OAAA,EAAS;AAAA;AACX;AAAA,KACF;AAAA,oBAEAA,cAAAA;AAAA,MAAC0B,cAAAA;AAAA,MAAA;AAAA,QAEC,KAAA,kBAAO1B,cAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,aAAA,EAAe,QAAA,EAAA,CAAA,CAAE,gBAAgB,CAAA,EAAE,CAAA;AAAA,QACzD,EAAA,EAAG,+BAAA;AAAA,QACH,SAAA,EAAU,0CAAA;AAAA,QACV,UAAA,EAAY,EAAE,IAAA,EAAM,SAAA,EAAW,SAAS,WAAA,EAAY;AAAA,QAEpD,QAAA,kBAAAmB,eAAAA;AAAA,UAACC,cAAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,KAAA;AAAA,YACV,GAAA,EAAK,CAAA;AAAA,YACL,KAAA,EAAM,MAAA;AAAA,YACN,SAAA,EAAU,QAAA;AAAA,YACV,EAAA,EAAI,CAAA;AAAA,YACJ,SAAA,EAAU,oDAAA;AAAA,YAET,QAAA,EAAA;AAAA,cAAA,UAAA,CAAW,MAAM,CAAA;AAAA,cACjB,WAAW,OAAO;AAAA;AAAA;AAAA;AACrB;AAAA;AACF,GAAA,EACF,CAAA;AAEJ,CAAA;AAEA,IAAM,cAAA,GAA8C,CAAC,KAAA,qBACnDpB,cAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,KAAA,EAAM,IAAA;AAAA,IACN,MAAA,EAAO,IAAA;AAAA,IACP,OAAA,EAAQ,WAAA;AAAA,IACR,IAAA,EAAK,cAAA;AAAA,IACL,SAAA,EAAU,iBAAA;AAAA,IACV,KAAA,EAAM,4BAAA;AAAA,IACL,GAAG,KAAA;AAAA,IAEJ,QAAA,kBAAAA,eAAC,MAAA,EAAA,EAAK,KAAA,EAAM,MAAK,MAAA,EAAO,IAAA,EAAK,IAAG,GAAA,EAAI;AAAA;AACtC,CAAA;AAGF,IAAM,mBAAA,GAAmD,CAAC,KAAA,qBACxDmB,eAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,KAAA,EAAM,IAAA;AAAA,IACN,MAAA,EAAO,IAAA;AAAA,IACP,OAAA,EAAQ,WAAA;AAAA,IACR,IAAA,EAAK,MAAA;AAAA,IACL,KAAA,EAAM,4BAAA;AAAA,IACL,GAAG,KAAA;AAAA,IAEJ,QAAA,EAAA;AAAA,sBAAAnB,cAAAA,CAAC,UAAK,KAAA,EAAM,IAAA,EAAK,QAAO,IAAA,EAAK,EAAA,EAAG,GAAA,EAAI,IAAA,EAAK,8BAAA,EAA+B,CAAA;AAAA,sBACxEA,cAAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,CAAA,EAAE,GAAA;AAAA,UACF,CAAA,EAAE,GAAA;AAAA,UACF,KAAA,EAAM,IAAA;AAAA,UACN,MAAA,EAAO,IAAA;AAAA,UACP,EAAA,EAAG,GAAA;AAAA,UACH,IAAA,EAAK;AAAA;AAAA,OACP;AAAA,sBACAA,cAAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,CAAA,EAAE,IAAA;AAAA,UACF,CAAA,EAAE,GAAA;AAAA,UACF,KAAA,EAAM,IAAA;AAAA,UACN,MAAA,EAAO,IAAA;AAAA,UACP,EAAA,EAAG,GAAA;AAAA,UACH,IAAA,EAAK;AAAA;AAAA,OACP;AAAA,sBACAA,cAAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,CAAA,EAAE,GAAA;AAAA,UACF,CAAA,EAAE,IAAA;AAAA,UACF,KAAA,EAAM,IAAA;AAAA,UACN,MAAA,EAAO,GAAA;AAAA,UACP,EAAA,EAAG,GAAA;AAAA,UACH,IAAA,EAAK;AAAA;AAAA;AACP;AAAA;AACF,CAAA;AC9WK,IAAM,OAAA,GAAoC,CAAC,KAAA,KAAU;AAC1D,EAAA,MAAM,EAAE,QAAA,EAAS,GAAIQ,mBAAAA,EAAU;AAC/B,EAAA,IAAI,QAAA,EAAU;AACZ,IAAA,uBACER,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,UAAA,EACb,0BAAAA,cAAAA,CAAC,aAAA,EAAA,EAAe,GAAG,KAAA,EAAO,CAAA,EAC5B,CAAA;AAAA,EAEJ;AACA,EAAA,uBAAOA,cAAAA,CAAC,cAAA,EAAA,EAAgB,GAAG,KAAA,EAAO,CAAA;AACpC,CAAA;ACZO,IAAM,gBAA0B,MAAM;AAC3C,EAAA,MAAM,QAAQ,gBAAA,EAAiB;AAC/B,EAAA,uBAAOA,cAAAA,CAAC,OAAA,EAAA,EAAS,GAAG,KAAA,EAAO,CAAA;AAC7B,CAAA;ACJO,IAAM,cAAwB,MAAM;AACzC,EAAA,uBAAOA,eAAC,aAAA,EAAA,EAAc,CAAA;AACxB,CAAA;;;ACLA,IAAAmM,eAAAA,GAAA;AAAA,QAAA,CAAAA,eAAAA,EAAA;AAAA,EAAA,eAAA,EAAA,MAAA,eAAA;AAAA,EAAA,qBAAA,EAAA,MAAA,qBAAA;AAAA,EAAA,UAAA,EAAA,MAAA,UAAA;AAAA,EAAA,WAAA,EAAA,MAAA,WAAA;AAAA,EAAA,iBAAA,EAAA,MAAA,iBAAA;AAAA,EAAA,YAAA,EAAA,MAAA;AAAA,CAAA,CAAA;;;ACiBA,UAAA,EAAA;AACA,uBAAA,EAAA;AACA,SAAA,EAAA;ACKO,IAAM,gBAAA,GAAmB,CAAC,OAAA,KAA4B;AAC3D,EAAA,MAAM,EAAE,CAAA,EAAE,GAAIjL,0BAAAA,EAAe;AAC7B,EAAA,MAAM,UAAA,GAAa+B,wBAAAA,CAAY,CAAC,KAAA,KAAU,MAAM,UAAU,CAAA;AAC1D,EAAA,MAAM,EAAE,SAAA,EAAU,GAAIhD,+BAAAA,EAAmB;AACzC,EAAA,MAAM,EAAE,UAAA,EAAY,SAAA,EAAU,GAAI,OAAA;AAClC,EAAA,MAAM,OAAA,GAAU4E,wBAAAA,CAAM,OAAA,CAAkB,MAAM;AAC5C,IAAA,OAAO;AAAA,MACL;AAAA,QACE,KAAA,EAAO,EAAE,iCAAiC,CAAA;AAAA,QAC1C,SAAA,EAAW,OAAA;AAAA,QACX,KAAA,EAAO,MAAA;AAAA,QACP,KAAA,EAAO,GAAA;AAAA,QACP,OAAO,GAAA,EAAa;AAClB,UAAA,uBACE1D,eAAAA,CAACC,cAAAA,EAAA,EAAK,SAAA,EAAU,QAAA,EAAS,KAAK,CAAA,EAC5B,QAAA,EAAA;AAAA,4BAAApB,cAAAA,CAACuC,mBAAAA,EAAA,EAAU,IAAA,EAAM,GAAA,EAAK,CAAA;AAAA,YACrB;AAAA,WAAA,EACH,CAAA;AAAA,QAEJ;AAAA,OACF;AAAA,MACA;AAAA,QACE,KAAA,EAAO,EAAE,+BAA+B,CAAA;AAAA,QACxC,SAAA,EAAW,SAAA;AAAA,QACX,KAAA,EAAO,MAAA;AAAA,QACP,KAAA,EAAO,GAAA;AAAA,QACP,MAAA,CAAO,KAAa,MAAA,EAAQ;AAC1B,UAAA,MAAM,YAAY,UAAA,EAAY,IAAA;AAAA,YAC5B,CAAC,EAAE,KAAA,EAAM,KAAM,UAAU,MAAA,CAAO;AAAA,WAClC;AACA,UAAA,uBACEvC,cAAAA,CAAC6B,cAAAA,CAAK,OAAA,EAAL,EAAa,EAAA,EAAI,SAAA,EAAW,QAAA,IAAY,CAAA,EAAG,OAAA,EAAS,KAAA,EAClD,QAAA,EAAA,GAAA,EACH,CAAA;AAAA,QAEJ;AAAA,OACF;AAAA,MACA;AAAA,QACE,KAAA,EAAO,EAAE,sCAAsC,CAAA;AAAA,QAC/C,SAAA,EAAW,YAAA;AAAA,QACX,KAAA,EAAO,MAAA;AAAA,QACP,KAAA,EAAO,GAAA;AAAA,QACP,OAAO,GAAA,EAAa;AAClB,UAAA,uBACE7B,cAAAA,CAAC6B,cAAAA,CAAK,OAAA,EAAL,EAAa,IAAA,EAAK,OAAA,EAAQ,EAAA,EAAI,CAAA,EAAG,QAAA,EAAS,GAAA,EAAI,OAAA,EAAS,OACrD,QAAA,EAAA,GAAA,EACH,CAAA;AAAA,QAEJ;AAAA,OACF;AAAA,MACA;AAAA,QACE,KAAA,EAAO,EAAE,sCAAsC,CAAA;AAAA,QAC/C,SAAA,EAAW,YAAA;AAAA,QACX,KAAA,EAAO,MAAA;AAAA,QACP,KAAA,EAAO,GAAA;AAAA,QACP,OAAO,GAAA,EAAa;AAClB,UAAA,uBACE7B,cAAAA,CAAC6B,cAAAA,CAAK,UAAA,EAAL,EAAgB,IAAA,EAAK,OAAA,EAAQ,EAAA,EAAI,CAAA,EAAG,QAAA,EAAS,GAAA,EAAI,OAAA,EAAS,OACxD,QAAA,EAAA,GAAA,EACH,CAAA;AAAA,QAEJ;AAAA,OACF;AAAA,MACA;AAAA,QACE,KAAA,EAAO,EAAE,2CAA2C,CAAA;AAAA,QACpD,SAAA,EAAW,iBAAA;AAAA,QACX,KAAA,EAAO,MAAA;AAAA,QACP,KAAA,EAAO,GAAA;AAAA,QACP,OAAO,GAAA,EAAa;AAClB,UAAA,uBACE7B,cAAAA,CAAC6B,cAAAA,CAAK,OAAA,EAAL,EAAa,IAAI,CAAA,EAAG,MAAA,EAAO,GAAA,EACzB,QAAA,EAAA,GAAA,GAAM,GAAA,EACT,CAAA;AAAA,QAEJ;AAAA,OACF;AAAA,MACA;AAAA,QACE,KAAA,EAAO,EAAE,yCAAyC,CAAA;AAAA,QAClD,SAAA,EAAW,wBAAA;AAAA,QACX,KAAA,EAAO,MAAA;AAAA,QACP,KAAA,EAAO,GAAA;AAAA,QACP,OAAO,GAAA,EAAa;AAClB,UAAA,uBACE7B,cAAAA,CAAC6B,cAAAA,CAAK,UAAA,EAAL,EAAgB,IAAA,EAAK,OAAA,EAAQ,EAAA,EAAI,CAAA,EAAG,QAAA,EAAS,GAAA,EAAI,OAAA,EAAS,OACxD,QAAA,EAAA,GAAA,EACH,CAAA;AAAA,QAEJ;AAAA,OACF;AAAA,MACA;AAAA,QACE,KAAA,EAAO,IAAA;AAAA,QACP,SAAA,EAAW,YAAA;AAAA,QACX,KAAA,EAAO,QAAA;AAAA,QACP,KAAA,EAAO,GAAA;AAAA,QACP,MAAA,CAAO,IAAY,MAAA,EAAyB;AAC1C,UAAA,MAAM,EAAE,OAAM,GAAI,MAAA;AAClB,UAAA,uBACEV,gBAACC,cAAAA,EAAA,EAAK,WAAU,QAAA,EAAS,OAAA,EAAQ,KAAA,EAAM,GAAA,EAAK,CAAA,EACzC,QAAA,EAAA;AAAA,YAAA,KAAA,KAAU,UACT,SAAA,KAAc8I,2BAAAA,CAAe,UAC7B,OAAO,SAAA,KAAc,8BACnBlK,cAAAA;AAAA,cAACsB,gBAAAA;AAAA,cAAA;AAAA,gBACC,IAAA,EAAM,IAAA;AAAA,gBACN,OAAA,EAAS,UAAA;AAAA,gBACT,KAAA,EAAO,WAAA;AAAA,gBACP,OAAA,EAAS,MAAM,SAAA,GAAY,EAAA,EAAI,KAAK,CAAA;AAAA,gBAEnC,YAAE,kBAAkB;AAAA;AAAA,aACvB;AAAA,YAEH,OAAO,UAAA,KAAe,UAAA,oBACrBtB,cAAAA;AAAA,cAACsB,gBAAAA;AAAA,cAAA;AAAA,gBACC,IAAA,EAAM,IAAA;AAAA,gBACN,OAAA,EAAS,UAAA;AAAA,gBACT,KAAA,EAAO,WAAA;AAAA,gBACP,OAAA,EAAS,MAAM,UAAA,GAAa,EAAA,EAAI,KAAK,CAAA;AAAA,gBAEpC,YAAE,iBAAiB;AAAA;AAAA;AACtB,WAAA,EAEJ,CAAA;AAAA,QAEJ;AAAA;AACF,KACF;AAAA,EACF,GAAG,CAAC,CAAA,EAAG,YAAY,UAAA,EAAY,SAAA,EAAW,SAAS,CAAC,CAAA;AACpD,EAAA,OAAO,OAAA;AACT,CAAA;;;ADjIO,IAAM,kBAAkB,MAAM;AACnC,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIf,4BAAAA;AAAA,IAC5B,0BAAA;AAAA,IACA;AAAA,GACF;AAEA,EAAA,MAAM,EAAE,KAAA,EAAO,UAAA,EAAY,aAAA,KAAkBL,uBAAAA,EAAW;AACxD,EAAA,MAAM,EAAE,OAAA,GAAU,EAAC,KAAMC,0BAAAA,EAAc;AACvC,EAAA,MAAM,EAAE,aAAA,EAAc,GAAI2E,iCAAAA,EAAqB;AAE/C,EAAA,MAAM,UAAA,GAAa7B,wBAAAA,CAAY,CAACoC,MAAAA,KAAUA,OAAM,UAAU,CAAA;AAE1D,EAAA,MAAM,WAAA,GAAc,KAAA,CAAM,WAAA,IAAe,EAAC;AAE1C,EAAAc,kBAAU,MAAM;AACd,IAAA,IAAI,OAAA,CAAQ,SAAS,CAAA,EAAG;AACtB,MAAA,UAAA,CAAW,OAAA,EAAQ;AAAA,IACrB;AAAA,EACF,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AAGZ,EAAA,MAAM,aAAa,kBAAA,EAAmB;AAEtC,EAAA,MAAM,gBAAgB,MAAM;AAE1B,IAAA,UAAA,CAAW,CAACiG,QAAAA,KAAqB,CAACA,QAAO,CAAA;AAAA,EAC3C,CAAA;AAEA,EAAA,MAAM,aAAA,GAAgBrM,gBAAQ,MAAM;AAClC,IAAA,OAAO,UAAA,EAAY,GAAA,CAAI,CAAC,IAAA,MAAU;AAAA,MAChC,OAAO,IAAA,CAAK,KAAA;AAAA,MACZ,OAAO,IAAA,CAAK;AAAA,KACd,CAAE,CAAA;AAAA,EACJ,CAAA,EAAG,CAAC,UAAU,CAAC,CAAA;AAGf,EAAA,MAAM,cAAc,eAAA,EAAgB;AAGpC,EAAA,MAAM;AAAA,IACJ,eAAA;AAAA,IACA,aAAA;AAAA,IACA,YAAA,EAAc,QAAA;AAAA,IACd;AAAA,GACF,GAAI,qBAAqB,WAAW,CAAA;AAGpC,EAAA,MAAM,gBAAA,GAAmBA,gBAAQ,MAAM;AACrC,IAAA,OAAO,QAAA,CAAS,GAAA,CAAI,CAAC,WAAA,KAAgB;AAEnC,MAAA,MAAM,gBAAA,GACJ,WAAA,CAAY,QAAA,EAAU,GAAA,CAAI,CAACsM,QAAAA,KAAY;AACrC,QAAA,MAAM,YAAY,UAAA,EAAY,IAAA;AAAA,UAC5B,CAAC,IAAA,KAAS,IAAA,CAAK,KAAA,KAAUA,QAAAA,CAAQ;AAAA,SACnC;AAGA,QAAA,MAAM,UAAA,GAAa,aAAA,CAAcA,QAAAA,CAAQ,KAAK,CAAA;AAG9C,QAAA,MAAM,UAAA,GAAa,IAAI3J,oBAAAA,CAAQ2J,QAAAA,CAAQ,OAAO,CAAA,CAC3C,GAAA,CAAI,UAAU,CAAA,CACd,QAAA,EAAS;AAGZ,QAAA,MAAM,eAAA,GAAkB,SAAA,GACpBjH,mBAAA,CAAQ,eAAA,CAAgB;AAAA,UACtB,UAAA,EAAY,UAAU,WAAA,IAAe,CAAA;AAAA,UACrC,cAAA,EAAgB,UAAU,eAAA,IAAmB,CAAA;AAAA,UAC7C,eAAeiH,QAAAA,CAAQ,OAAA;AAAA,UACvB,aAAA,EAAe,SAAA,EAAW,YAAA,IAAgBA,QAAAA,CAAQ,OAAA;AAAA,UAClD;AAAA,SACD,CAAA,GACDrF,iBAAAA;AAGJ,QAAA,MAAM,sBAAA,GAAyB5B,oBAAQ,sBAAA,CAAuB;AAAA,UAC5D,eAAeiH,QAAAA,CAAQ,OAAA;AAAA,UACvB,aAAA,EAAe,SAAA,EAAW,YAAA,IAAgBA,QAAAA,CAAQ,OAAA;AAAA,UAClD,eAAA,EAAiB,gBAAgB,QAAA,EAAS;AAAA,UAC1C;AAAA,SACD,CAAA;AAED,QAAA,OAAO;AAAA,UACL,GAAGA,QAAAA;AAAA,UACH,UAAA;AAAA,UACA,UAAA;AAAA,UACA,eAAA;AAAA,UACA;AAAA,SACF;AAAA,MACF,CAAC,KAAK,EAAC;AAET,MAAA,OAAO;AAAA,QACL,GAAG,WAAA;AAAA,QACH,QAAA,EAAU;AAAA,OACZ;AAAA,IACF,CAAC,CAAA;AAAA,EACH,CAAA,EAAG,CAAC,QAAA,EAAU,aAAA,EAAe,UAAU,CAAC,CAAA;AAExC,EAAA,MAAM,cAAA,GAAiBvL,mBAAAA,CAAY,CAAC,SAAA,EAAmB,KAAA,KAAkB;AACvE,IAAA,IAAI,CAAC,SAAA,EAAW;AACd,MAAA;AAAA,IACF;AACA,IAAAF,eAAAA,CAAM,KAAKI,kCAAAA,EAAkB;AAAA,MAC3B,WAAA,EAAa,SAAA;AAAA,MACb;AAAA,KACD,CAAA;AAAA,EACH,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,aAAA,GAAgB,CAAC,SAAA,EAAmB,KAAA,KAAkB;AAC1D,IAAAJ,eAAAA,CAAM,KAAK,iBAAA,EAAmB;AAAA,MAC5B,SAAA;AAAA,MACA;AAAA,KACD,CAAA;AAAA,EACH,CAAA;AAEA,EAAA,MAAM,YAAA,GAAe,aAAA,GAAgB,WAAA,CAAY,MAAA,GAAS,CAAA,GAAI,IAAA;AAE9D,EAAA,MAAM,gBAAgB,gBAAA,CAAiB;AAAA,IACrC,UAAA,EAAY,eAAe,cAAA,GAAiB,MAAA;AAAA,IAC5C,SAAA,EAAW;AAAA,GACZ,CAAA;AAED,EAAA,MAAM,sBAAA,GAAyBE,mBAAAA;AAAA,IAC7B,CAAC,QAAA,KAAqC;AACpC,MAAAF,eAAAA,CAAM,KAAKF,gDAAAA,EAAgC;AAAA,QACzC,SAAA,EAAW;AAAA,OACZ,CAAA;AAAA,IACH,CAAA;AAAA,IACA;AAAC,GACH;AAEA,EAAA,MAAM,SAAA,GAAYI,oBAAY,MAAM;AAClC,IAAA,sBAAA,CAAuB,SAAS,CAAA;AAAA,EAClC,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,UAAA,GAAaA,oBAAY,MAAM;AACnC,IAAA,sBAAA,CAAuB,UAAU,CAAA;AAAA,EACnC,CAAA,EAAG,EAAE,CAAA;AAGL,EAAA,MAAM4C,WAAAA,GAAa+C,2BAAW,gBAAA,EAAkB;AAAA,IAC9C,eACE,KAAA,CAAM,MAAA,KAAW9F,+BAAkB,6BAAA,GAC/BA,8BAAAA,CAAkB,gCAClBA,8BAAAA,CAAkB;AAAA,GACzB,CAAA;AAED,EAAA,MAAM,WAAW2L,2BAAA,EAAY;AAE7B,EAAA,OAAO;AAAA,IACL,OAAA,EAAS,aAAA;AAAA,IACT,UAAA,EAAA5I,WAAAA;AAAA,IACA,OAAA;AAAA,IACA,kBAAA,EAAoB,aAAA;AAAA,IACpB,eAAA;AAAA,IACA,aAAA;AAAA,IACA,QAAA;AAAA,IACA,UAAA;AAAA,IACA,aAAA,EAAe,YAAY,MAAA,GAAS,CAAA;AAAA,IACpC,SAAA;AAAA,IACA,UAAA;AAAA,IACA,OAAA;AAAA,IACA,eAAe,aAAA,IAAiB8B,uBAAAA;AAAA,IAChC;AAAA,GACF;AACF,CAAA;;;AEvLA,sBAAA,EAAA;;;ACaA,sBAAA,EAAA;AAEA,IAAM,UAAA,GAAyC,CAAC,EAAE,IAAA,EAAK,KAAM;AAC3D,EAAA,uBACExF,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,kKACZ,QAAA,EAAA,IAAA,EACH,CAAA;AAEJ,CAAA;AAMA,IAAM,eAAA,GAAkD,CAAC,KAAA,KAAU;AACjE,EAAA,MAAM,EAAE,MAAK,GAAI,KAAA;AACjB,EAAA,MAAM,EAAE,CAAA,EAAE,GAAIkB,0BAAAA,EAAe;AAC7B,EAAA,MAAM,EAAE,SAAA,EAAU,GAAIjB,+BAAAA,EAAmB;AACzC,EAAA,uBACEkB,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,sEAAA,EACb,QAAA,EAAA;AAAA,oBAAAA,eAAAA;AAAA,MAACC,cAAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO,MAAA;AAAA,QACP,OAAA,EAAS,SAAA;AAAA,QACT,SAAA,EAAW,QAAA;AAAA,QACX,SAAA,EAAU,eAAA;AAAA,QAEV,QAAA,EAAA;AAAA,0BAAAD,eAAAA;AAAA,YAACC,cAAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAU,wBAAA;AAAA,cACV,SAAA,EAAW,OAAA;AAAA,cACX,SAAA,EAAW,QAAA;AAAA,cAEX,QAAA,EAAA;AAAA,gCAAApB,eAAC,KAAA,EAAA,EAAI,SAAA,EAAU,0DAAA,EACZ,QAAA,EAAA,CAAA,CAAE,cAAc,CAAA,EACnB,CAAA;AAAA,gCACAmB,eAAAA;AAAA,kBAACC,cAAAA;AAAA,kBAAA;AAAA,oBACC,GAAA,EAAK,CAAA;AAAA,oBACL,OAAA,EAAS,OAAA;AAAA,oBACT,SAAA,EAAW,QAAA;AAAA,oBACX,SAAA,EAAU,yDAAA;AAAA,oBAEV,QAAA,EAAA;AAAA,sCAAApB,eAACuC,mBAAAA,EAAA,EAAU,MAAM,IAAA,CAAK,KAAA,EAAO,MAAK,KAAA,EAAM,CAAA;AAAA,sBACvC,IAAA,CAAK;AAAA;AAAA;AAAA;AACR;AAAA;AAAA,WACF;AAAA,0BACApB,eAAAA;AAAA,YAACC,cAAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAU,wBAAA;AAAA,cACV,SAAA,EAAW,OAAA;AAAA,cACX,SAAA,EAAW,QAAA;AAAA,cAEX,QAAA,EAAA;AAAA,gCAAApB,eAAC,KAAA,EAAA,EAAI,SAAA,EAAU,0DAAA,EACZ,QAAA,EAAA,CAAA,CAAE,YAAY,CAAA,EACjB,CAAA;AAAA,gCACAA,cAAAA;AAAA,kBAAC6B,cAAAA,CAAK,OAAA;AAAA,kBAAL;AAAA,oBACC,SAAA,EAAU,cAAA;AAAA,oBACV,IAAA,EAAK,IAAA;AAAA,oBACL,EAAA,EAAI,CAAA;AAAA,oBACJ,OAAA,EAAS,KAAA;AAAA,oBAER,QAAA,EAAA,IAAA,CAAK;AAAA;AAAA;AACR;AAAA;AAAA,WACF;AAAA,0BACAV,eAAAA;AAAA,YAACC,cAAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAU,wBAAA;AAAA,cACV,SAAA,EAAW,OAAA;AAAA,cACX,SAAA,EAAW,QAAA;AAAA,cAEX,QAAA,EAAA;AAAA,gCAAApB,eAAC,KAAA,EAAA,EAAI,SAAA,EAAU,kFAAA,EACZ,QAAA,EAAA,CAAA,CAAE,mBAAmB,CAAA,EACxB,CAAA;AAAA,gCACAmB,eAAAA;AAAA,kBAACC,cAAAA;AAAA,kBAAA;AAAA,oBACC,GAAA,EAAK,CAAA;AAAA,oBACL,KAAA,EAAO,MAAA;AAAA,oBACP,OAAA,EAAS,KAAA;AAAA,oBACT,SAAA,EAAW,QAAA;AAAA,oBACX,SAAA,EAAU,0DAAA;AAAA,oBAEV,QAAA,EAAA;AAAA,sCAAApB,cAAAA;AAAA,wBAAC6B,cAAAA,CAAK,OAAA;AAAA,wBAAL;AAAA,0BACC,IAAA,EAAK,IAAA;AAAA,0BACL,IAAA,EAAK,OAAA;AAAA,0BACL,EAAA,EAAI,CAAA;AAAA,0BACJ,QAAA,EAAS,GAAA;AAAA,0BACT,OAAA,EAAS,KAAA;AAAA,0BAER,QAAA,EAAA,IAAA,CAAK;AAAA;AAAA,uBACR;AAAA,sCACA7B,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uDAAsD,QAAA,EAAA,MAAA,EAErE;AAAA;AAAA;AAAA;AACF;AAAA;AAAA;AACF;AAAA;AAAA,KACF;AAAA,oBACAmB,eAAAA;AAAA,MAACC,cAAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO,MAAA;AAAA,QACP,OAAA,EAAS,SAAA;AAAA,QACT,SAAA,EAAW,QAAA;AAAA,QACX,SAAA,EAAU,eAAA;AAAA,QAEV,QAAA,EAAA;AAAA,0BAAAD,eAAAA;AAAA,YAACC,cAAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAU,wBAAA;AAAA,cACV,SAAA,EAAW,OAAA;AAAA,cACX,SAAA,EAAW,QAAA;AAAA,cAEX,QAAA,EAAA;AAAA,gCAAApB,eAAC,KAAA,EAAA,EAAI,SAAA,EAAU,0DAAA,EACZ,QAAA,EAAA,CAAA,CAAE,sCAAsC,CAAA,EAC3C,CAAA;AAAA,gCACAA,cAAAA;AAAA,kBAAC6B,cAAAA,CAAK,UAAA;AAAA,kBAAL;AAAA,oBACC,IAAA,EAAK,IAAA;AAAA,oBACL,SAAA,EAAW,EAAA;AAAA,oBACX,SAAA,EAAU,gCAAA;AAAA,oBACV,IAAA,EAAK,OAAA;AAAA,oBACL,EAAA,EAAI,CAAA;AAAA,oBACJ,QAAA,EAAS,GAAA;AAAA,oBACT,OAAA,EAAS,KAAA;AAAA,oBAER,QAAA,EAAA,IAAA,CAAK;AAAA;AAAA;AACR;AAAA;AAAA,WACF;AAAA,0BACAV,eAAAA;AAAA,YAACC,cAAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAU,wBAAA;AAAA,cACV,SAAA,EAAW,OAAA;AAAA,cACX,SAAA,EAAW,QAAA;AAAA,cAEX,QAAA,EAAA;AAAA,gCAAApB,eAAC,KAAA,EAAA,EAAI,SAAA,EAAU,0DAAA,EACZ,QAAA,EAAA,CAAA,CAAE,2CAA2C,CAAA,EAChD,CAAA;AAAA,gCACAA,cAAAA,CAAC6B,cAAAA,CAAK,OAAA,EAAL,EAAa,IAAA,EAAK,IAAA,EAAK,EAAA,EAAI,CAAA,EAAG,MAAA,EAAO,GAAA,EACnC,QAAA,EAAA,IAAA,CAAK,kBAAkB,GAAA,EAC1B;AAAA;AAAA;AAAA,WACF;AAAA,0BACAV,eAAAA;AAAA,YAACC,cAAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAU,wBAAA;AAAA,cACV,SAAA,EAAW,OAAA;AAAA,cACX,SAAA,EAAW,QAAA;AAAA,cAEX,QAAA,EAAA;AAAA,gCAAApB,eAAC,KAAA,EAAA,EAAI,SAAA,EAAU,kFAAA,EACZ,QAAA,EAAA,CAAA,CAAE,yCAAyC,CAAA,EAC9C,CAAA;AAAA,gCACAmB,eAAAA;AAAA,kBAACC,cAAAA;AAAA,kBAAA;AAAA,oBACC,GAAA,EAAK,CAAA;AAAA,oBACL,KAAA,EAAO,MAAA;AAAA,oBACP,OAAA,EAAS,KAAA;AAAA,oBACT,SAAA,EAAW,QAAA;AAAA,oBACX,SAAA,EAAU,0DAAA;AAAA,oBAEV,QAAA,EAAA;AAAA,sCAAApB,cAAAA;AAAA,wBAAC6B,cAAAA,CAAK,UAAA;AAAA,wBAAL;AAAA,0BACC,IAAA,EAAK,IAAA;AAAA,0BACL,IAAA,EAAK,OAAA;AAAA,0BACL,EAAA,EAAI,CAAA;AAAA,0BACJ,QAAA,EAAS,GAAA;AAAA,0BACT,OAAA,EAAS,KAAA;AAAA,0BAER,QAAA,EAAA,IAAA,CAAK;AAAA;AAAA,uBACR;AAAA,sCACA7B,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uDAAsD,QAAA,EAAA,MAAA,EAErE;AAAA;AAAA;AAAA;AACF;AAAA;AAAA;AACF;AAAA;AAAA,KACF;AAAA,oBACAmB,gBAACC,cAAAA,EAAA,EAAK,SAAS,SAAA,EAAW,SAAA,EAAW,QAAA,EAAU,GAAA,EAAK,CAAA,EACjD,QAAA,EAAA;AAAA,MAAA,IAAA,CAAK,KAAA,KAAU,MAAA,IAAU,SAAA,KAAc8I,2BAAAA,CAAe,0BACrDlK,cAAAA;AAAA,QAACsB,gBAAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAS,IAAA;AAAA,UACT,OAAA,EAAQ,UAAA;AAAA,UACR,IAAA,EAAK,IAAA;AAAA,UACL,KAAA,EAAM,MAAA;AAAA,UACN,SAAS,MAAM;AACb,YAAAV,eAAAA,CAAM,KAAK,gBAAA,EAAkB;AAAA,cAC3B,WAAW,IAAA,CAAK,UAAA;AAAA,cAChB,OAAO,IAAA,CAAK;AAAA,aACb,CAAA;AAAA,UACH,CAAA;AAAA,UACA,SAAA,EAAWmE,YAAAA;AAAA,YACT;AAAA,WACF;AAAA,UAEC,YAAE,kBAAkB;AAAA;AAAA,OACvB;AAAA,sBAEF/E,cAAAA;AAAA,QAACsB,gBAAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAS,IAAA;AAAA,UACT,OAAA,EAAQ,UAAA;AAAA,UACR,IAAA,EAAK,IAAA;AAAA,UACL,KAAA,EAAM,MAAA;AAAA,UACN,SAAS,MAAM;AACb,YAAAV,eAAAA,CAAM,KAAK,iBAAA,EAAmB;AAAA,cAC5B,WAAW,IAAA,CAAK,UAAA;AAAA,cAChB,OAAO,IAAA,CAAK;AAAA,aACb,CAAA;AAAA,UACH,CAAA;AAAA,UACA,SAAA,EAAWmE,YAAAA;AAAA,YACT;AAAA,WACF;AAAA,UAEC,YAAE,iBAAiB;AAAA;AAAA;AACtB,KAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ,CAAA;AAEO,IAAM,iBAAA,GAAqD,CAAC,KAAA,KAAU;AAC3E,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI7D,0BAAAA,EAAe;AAE7B,EAAA,MAAM;AAAA,IACJ,aAAA;AAAA,IACA,KAAA;AAAA,IACA,aAAA;AAAA,IACA,UAAA,EAAAwC,WAAAA;AAAA,IACA,eAAA;AAAA,IACA,aAAA;AAAA,IACA;AAAA,GACF,GAAI,KAAA;AAEJ,EAAA,MAAM,WAAA,GAAc,KAAA,CAAM,WAAA,IAAe,EAAC;AAE1C,EAAA,MAAM,YAAA,GAA6B;AAAA,IACjC,KAAA,EAAO,EAAE,mBAAmB,CAAA;AAAA,IAC5B,KAAA,EAAA,cAAA;AAAA,GACF;AAEA,EAAA,MAAM,YAAA,GAA6B;AAAA,IACjC,KAAA,EAAO,EAAE,oBAAoB,CAAA;AAAA,IAC7B,KAAA,EAAA,eAAA;AAAA,GACF;AAEA,EAAA,MAAM,UAAA,GAA2B;AAAA,IAC/B,KAAA,EAAO,EAAE,kBAAkB,CAAA;AAAA,IAC3B,KAAA,EAAO;AAAA,GACT;AAEA,EAAA,MAAM,eAAA,GAAkB3D,gBAAQ,MAAM;AACpC,IAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,WAAW,CAAA,IAAK,YAAY,MAAA,EAAQ;AACpD,MAAA,OAAO;AAAA,QACL,YAAA;AAAA,QACA,YAAA;AAAA,QACA,GAAG,WAAA,CAAY,GAAA,CAAkB,CAAC,KAAA,MAAW;AAAA,UAC3C,OAAO,KAAA,CAAM,EAAA;AAAA,UACb,KAAA,EAAO,KAAA,EAAO,WAAA,IAAe0E,uBAAAA,CAAc,OAAO,EAAE;AAAA,SACtD,CAAE;AAAA,OACJ;AAAA,IACF;AACA,IAAA,OAAO,CAAC,cAAc,YAAY,CAAA;AAAA,EACpC,CAAA,EAAG,CAAC,WAAW,CAAC,CAAA;AAGhB,EAAA,MAAM,cAAA,GAAiB1E,gBAAQ,MAAM;AACnC,IAAA,OAAO,CAAC,UAAA,EAAY,GAAG,aAAa,CAAA;AAAA,EACtC,CAAA,EAAG,CAAC,aAAa,CAAC,CAAA;AAElB,EAAA,IAAI,CAAC,MAAM,QAAA,EAAU;AACnB,IAAA,uBACEC,cAAAA;AAAA,MAACoB,cAAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,QAAA;AAAA,QACX,MAAA,EAAQ,MAAA;AAAA,QACR,SAAA,EAAW,QAAA;AAAA,QACX,OAAA,EAAS,QAAA;AAAA,QACT,EAAA,EAAI,EAAA;AAAA,QAEJ,QAAA,kBAAApB,cAAAA,CAAC+D,wBAAAA,EAAA,EAAe;AAAA;AAAA,KAClB;AAAA,EAEJ;AAEA,EAAA,uBACE5C,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW4D,YAAAA,CAAG,mDAAmD,CAAA,EACnE,QAAA,EAAA;AAAA,IAAA,aAAA,oBACC/E,cAAAA;AAAA,MAAC2D,oBAAAA;AAAA,MAAA;AAAA,QACC,QAAA;AAAA,QACA,SAAA,EAAU,0BAAA;AAAA,QACV,KAAA,EAAO;AAAA,UACL;AAAA,YACE,IAAA,EAAM,IAAA;AAAA,YACN,IAAA,EAAM,QAAA;AAAA,YACN,IAAA,EAAM,SAAA;AAAA,YACN,KAAA,EAAO,eAAA;AAAA,YACP,OAAA,EAAS;AAAA,WACX;AAAA,UACA;AAAA,YACE,IAAA,EAAM,IAAA;AAAA,YACN,IAAA,EAAM,QAAA;AAAA,YACN,IAAA,EAAM,OAAA;AAAA,YACN,KAAA,EAAO,aAAA;AAAA,YACP,OAAA,EAAS;AAAA;AACX;AACF;AAAA,KACF;AAAA,oBAEF3D,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iCAAA,EACZ,UAAA0D,WAAAA,EAAY,GAAA,CAAI,CAAC,MAAA,EAAQ,KAAA,KAAU;AAClC,MAAA,uBACEvC,eAAAA,CAAC0D,wBAAAA,CAAM,QAAA,EAAN,EACC,QAAA,EAAA;AAAA,wBAAA7E,cAAAA,CAAC,UAAA,EAAA,EAAW,IAAA,EAAM,MAAA,CAAO,eAAe,aAAA,EAAe,CAAA;AAAA,QACtD,KAAA,CAAM,OAAA,CAAQ,MAAA,CAAO,QAAQ,CAAA,IAC5B,OAAO,QAAA,CAAS,GAAA,CAAI,CAAC,KAAA,qBACnBA,cAAAA;AAAA,UAAC,eAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAM;AAAA,WAAA;AAAA,UACD,CAAA,EAAG,KAAA,CAAM,KAAK,CAAA,CAAA,EAAI,MAAM,UAAU,CAAA;AAAA,SAE1C;AAAA,OAAA,EAAA,EARgB,CAAA,KAAA,EAAQ,KAAK,CAAA,CASlC,CAAA;AAAA,IAEJ,CAAC,CAAA,EACH;AAAA,GAAA,EACF,CAAA;AAEJ,CAAA;ADhTO,IAAM,qBAAA,GAA8D,CACzE,KAAA,KACG;AACH,EAAA,MAAM,cAAc,eAAA,EAAgB;AACpC,EAAA,MAAM,eAAeE,uBAAAA,EAAW;AAChC,EAAA,uBAAOF,eAAC,eAAA,EAAA,EAAiB,GAAG,aAAc,GAAG,YAAA,EAAe,GAAG,KAAA,EAAO,CAAA;AACxE,CAAA;AAEO,IAAM,eAAyB,MAAM;AAC1C,EAAA,MAAM,cAAc,eAAA,EAAgB;AACpC,EAAA,MAAM,eAAeE,uBAAAA,EAAW;AAChC,EAAA,MAAM,EAAE,QAAA,EAAS,GAAIM,mBAAAA,EAAU;AAC/B,EAAA,IAAI,QAAA,EAAU;AACZ,IAAA,uBAAOR,cAAAA,CAAC,iBAAA,EAAA,EAAmB,GAAG,WAAA,EAAc,GAAG,YAAA,EAAc,CAAA;AAAA,EAC/D;AACA,EAAA,uBAAOA,cAAAA,CAAC,WAAA,EAAA,EAAa,GAAG,WAAA,EAAc,GAAG,YAAA,EAAc,CAAA;AACzD,CAAA;AE9BO,IAAM,aAAuB,MAAM;AACxC,EAAA,uBAAOA,eAAC,YAAA,EAAA,EAAa,CAAA;AACvB,CAAA;;;ALFA,sBAAA,EAAA;;;AMNA,IAAA,eAAA,GAAA;AAAA,QAAA,CAAA,eAAA,EAAA;AAAA,EAAA,WAAA,EAAA,MAAA,WAAA;AAAA,EAAA,aAAA,EAAA,MAAA;AAAA,CAAA,CAAA;;;ACCA,qBAAA,EAAA;AAEO,IAAM,gBAA0B,MAAM;AAC3C,EAAA,uBAAOA,eAAC,sBAAA,EAAA,EAAuB,CAAA;AACjC,CAAA;AAEO,IAAM,cAAwB,MAAM;AACzC,EAAA,uBAAOA,eAAC,sBAAA,EAAA,EAAuB,CAAA;AACjC,CAAA;;;ACTA,IAAA,yBAAA,GAAA;AAAA,QAAA,CAAA,yBAAA,EAAA;AAAA,EAAA,qBAAA,EAAA,MAAA,qBAAA;AAAA,EAAA,mBAAA,EAAA,MAAA,mBAAA;AAAA,EAAA,uBAAA,EAAA,MAAA,uBAAA;AAAA,EAAA,0BAAA,EAAA,MAAA;AAAA,CAAA,CAAA;AC4DA,IAAM,qBAAqB,CACzB,OAAA,EAIA,SAAA,EACA,OAAA,EACA,aACA,QAAA,KACG;AACH,EAAA,MAAM,aAMD,EAAC;AAEN,EAAA,MAAM,OAAA,GAAU,IAAI,IAAA,CAAK,SAAS,CAAA;AAClC,EAAA,OAAA,CAAQ,WAAA,CAAY,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAC,CAAA;AAE9B,EAAA,OAAO,WAAW,OAAA,EAAS;AACzB,IAAA,MAAM,GAAA,GAAM,SAAS,OAAO,CAAA;AAC5B,IAAA,MAAM,IAAA,GAAO,OAAA,CAAQ,GAAA,CAAI,GAAG,CAAA,IAAK;AAAA,MAC/B,GAAA,EAAK,CAAA;AAAA,MACL,QAAA,EAAU,CAAA;AAAA,MACV,MAAA,EAAQ,CAAA;AAAA,MACR,IAAA,EAAM;AAAA,KACR;AACA,IAAA,UAAA,CAAW,KAAK,EAAE,IAAA,EAAM,GAAA,EAAK,GAAG,MAAM,CAAA;AACtC,IAAA,WAAA,CAAY,OAAO,CAAA;AAAA,EACrB;AAEA,EAAA,OAAO,UAAA;AACT,CAAA;AAGA,IAAM,aAAA,GAAgB,CACpB,QAAA,EAIA,SAAA,EACA,OAAA,KACG;AACH,EAAA,OAAO,kBAAA;AAAA,IACL,QAAA;AAAA,IACA,SAAA;AAAA,IACA,OAAA;AAAA,IACA,CAAC,IAAA,KAAS,IAAA,CAAK,WAAW,IAAA,CAAK,UAAA,KAAe,CAAC,CAAA;AAAA,IAC/C,CAAC,SAAS,IAAA,CAAK,WAAA,GAAc,KAAA,CAAM,GAAG,EAAE,CAAC;AAAA,GAC3C;AACF,CAAA;AAGA,IAAM,cAAA,GAAiB,CACrB,SAAA,EAIA,SAAA,EACA,OAAA,KACG;AACH,EAAA,OAAO,kBAAA;AAAA,IACL,SAAA;AAAA,IACA,SAAA;AAAA,IACA,OAAA;AAAA,IACA,CAAC,IAAA,KAAS,IAAA,CAAK,YAAY,IAAA,CAAK,WAAA,KAAgB,CAAC,CAAA;AAAA,IACjD,CAAC,IAAA,KAAS,IAAA,CAAK,WAAA;AAAY,GAC7B;AACF,CAAA;AAGA,IAAM,qBAAA,GAAwB,CAC5B,aAAA,EAIA,SAAA,EACA,OAAA,KACG;AACH,EAAA,OAAO,kBAAA;AAAA,IACL,aAAA;AAAA,IACA,SAAA;AAAA,IACA,OAAA;AAAA,IACA,CAAC,IAAA,KAAS,IAAA,CAAK,cAAc,IAAA,CAAK,aAAA,KAAkB,EAAE,CAAA;AAAA,IACtD,CAAC,IAAA,KAAS,IAAA,CAAK,WAAA;AAAY,GAC7B;AACF,CAAA;AAEO,IAAM,wBAAA,GAA2B,CACtC,UAAA,EACA,eAAA,EACA,aAAA,KACoC;AACpC,EAAA,OAAOD,gBAAQ,MAAM;AACnB,IAAA,IAAI,CAAC,UAAA,IAAc,UAAA,CAAW,MAAA,KAAW,CAAA,EAAG;AAC1C,MAAA,OAAO,IAAA;AAAA,IACT;AAGA,IAAA,MAAM,aAAA,GAAgB,UAAA,CAAW,GAAA,CAAI,CAAC,KAAA,KAAU;AAC9C,MAAA,MAAM,SAAS,IAAA,CAAK,GAAA,CAAI,KAAA,CAAM,iBAAA,GAAoB,MAAM,cAAc,CAAA;AACtE,MAAA,MAAM,IAAA,GAAO,MAAM,GAAA,IAAO,CAAA;AAC1B,MAAA,MAAM,QAAA,GAAW,MAAM,YAAA,IAAgB,CAAA;AACvC,MAAA,MAAM,SAAS,QAAA,GAAW,IAAA;AAE1B,MAAA,OAAO;AAAA,QACL,GAAG,KAAA;AAAA,QACH,GAAA,EAAK,MAAA;AAAA,QACL,QAAA;AAAA,QACA,MAAA;AAAA,QACA,IAAA;AAAA,QACA,IAAA,EAAM,IAAI,IAAA,CAAK,KAAA,CAAM,kBAAkB;AAAA,OACzC;AAAA,IACF,CAAC,CAAA;AAGD,IAAA,MAAM,QAAA,GAAW,cAAc,MAAA,CAAO,CAAC,KAAK,KAAA,KAAU,GAAA,GAAM,KAAA,CAAM,GAAA,EAAK,CAAC,CAAA;AACxE,IAAA,MAAM,cAAc,aAAA,CAAc,MAAA;AAAA,MAChC,CAAC,GAAA,EAAK,KAAA,KAAU,GAAA,GAAM,KAAA,CAAM,MAAA;AAAA,MAC5B;AAAA,KACF;AACA,IAAA,MAAM,SAAA,GAAY,cAAc,MAAA,CAAO,CAAC,KAAK,KAAA,KAAU,GAAA,GAAM,KAAA,CAAM,IAAA,EAAM,CAAC,CAAA;AAC1E,IAAA,MAAM,cAAc,aAAA,CAAc,MAAA;AAClC,IAAA,MAAM,WAAW,aAAA,CAAc,MAAA;AAAA,MAC7B,CAAC,GAAA,EAAK,KAAA,KAAU,GAAA,GAAM,KAAA,CAAM,QAAA;AAAA,MAC5B;AAAA,KACF;AAGA,IAAA,MAAM,YAAA,GAAe,CAAC,GAAG,aAAa,CAAA,CAAE,IAAA;AAAA,MACtC,CAAC,GAAG,CAAA,KAAM,CAAA,CAAE,KAAK,OAAA,EAAQ,GAAI,CAAA,CAAE,IAAA,CAAK,OAAA;AAAQ,KAC9C;AACA,IAAA,MAAM,SAAA,GAAY,eAAA,IAAmB,YAAA,CAAa,CAAC,CAAA,CAAE,IAAA;AACrD,IAAA,MAAM,UAAU,aAAA,IAAiB,YAAA,CAAa,YAAA,CAAa,MAAA,GAAS,CAAC,CAAA,CAAE,IAAA;AAGvE,IAAA,MAAM,WAAA,GAAc,WACjB,MAAA,CAAO,CAAC,UAAU,KAAA,CAAM,QAAA,KAAa,CAAC,CAAA,CACtC,MAAA;AAAA,MACC,CAAC,KAAK,KAAA,KACJ,GAAA,GAAM,KAAK,GAAA,CAAI,KAAA,CAAM,iBAAA,GAAoB,KAAA,CAAM,cAAc,CAAA;AAAA,MAC/D;AAAA,KACF;AACF,IAAA,MAAM,UAAA,GAAa,WAAA,GAAc,CAAA,GAAK,WAAA,GAAc,cAAe,GAAA,GAAM,CAAA;AAGzE,IAAA,MAAM,WAAA,uBAAkB,GAAA,EAGtB;AACF,IAAA,aAAA,CAAc,OAAA,CAAQ,CAAC,KAAA,KAAU;AAC/B,MAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,WAAA,GAAc,KAAA,CAAM,GAAG,EAAE,CAAC,CAAA;AACrD,MAAA,MAAM,QAAA,GAAW,WAAA,CAAY,GAAA,CAAI,OAAO,CAAA,IAAK;AAAA,QAC3C,GAAA,EAAK,CAAA;AAAA,QACL,QAAA,EAAU,CAAA;AAAA,QACV,MAAA,EAAQ,CAAA;AAAA,QACR,IAAA,EAAM;AAAA,OACR;AACA,MAAA,WAAA,CAAY,IAAI,OAAA,EAAS;AAAA,QACvB,GAAA,EAAK,QAAA,CAAS,GAAA,GAAM,KAAA,CAAM,GAAA;AAAA,QAC1B,QAAA,EAAU,QAAA,CAAS,QAAA,GAAW,KAAA,CAAM,QAAA;AAAA,QACpC,MAAA,EAAQ,QAAA,CAAS,MAAA,GAAS,KAAA,CAAM,MAAA;AAAA,QAChC,IAAA,EAAM,QAAA,CAAS,IAAA,GAAO,KAAA,CAAM;AAAA,OAC7B,CAAA;AAAA,IACH,CAAC,CAAA;AAGD,IAAA,MAAM,SAAA,GAAY,aAAA,CAAc,WAAA,EAAa,SAAA,EAAW,OAAO,CAAA;AAG/D,IAAA,MAAM,aAAA,uBAAoB,GAAA,EAGxB;AACF,IAAA,aAAA,CAAc,OAAA,CAAQ,CAAC,KAAA,KAAU;AAI/B,MAAA,MAAM,IAAA,GAAO,IAAI,IAAA,CAAK,KAAA,CAAM,IAAI,CAAA;AAChC,MAAA,IAAA,CAAK,aAAA,CAAc,CAAA,EAAG,CAAA,EAAG,CAAC,CAAA;AAC1B,MAAA,MAAM,OAAA,GAAU,KAAK,WAAA,EAAY;AACjC,MAAA,MAAM,QAAA,GAAW,aAAA,CAAc,GAAA,CAAI,OAAO,CAAA,IAAK;AAAA,QAC7C,GAAA,EAAK,CAAA;AAAA,QACL,QAAA,EAAU,CAAA;AAAA,QACV,IAAA,EAAM,CAAA;AAAA,QACN,MAAA,EAAQ;AAAA,OACV;AACA,MAAA,aAAA,CAAc,IAAI,OAAA,EAAS;AAAA,QACzB,GAAA,EAAK,QAAA,CAAS,GAAA,GAAM,KAAA,CAAM,GAAA;AAAA,QAC1B,QAAA,EAAU,QAAA,CAAS,QAAA,GAAW,KAAA,CAAM,QAAA;AAAA,QACpC,IAAA,EAAM,QAAA,CAAS,IAAA,GAAO,KAAA,CAAM,IAAA;AAAA,QAC5B,MAAA,EAAQ,QAAA,CAAS,MAAA,GAAS,KAAA,CAAM;AAAA,OACjC,CAAA;AAAA,IACH,CAAC,CAAA;AAGD,IAAA,MAAM,WAAA,GAAc,SAAA,CAAU,OAAA,EAAQ,KAAM,QAAQ,OAAA,EAAQ;AAG5D,IAAA,MAAM,WAAA,GAAcwM,eAAA,CAAQ,SAAA,EAAW,CAAC,CAAA;AACxC,IAAA,MAAM,mBAAmB,IAAI,IAAA;AAAA,MAC3B,YAAY,cAAA,EAAe;AAAA,MAC3B,YAAY,WAAA,EAAY;AAAA,MACxB,YAAY,UAAA,EAAW;AAAA,MACvB,CAAA;AAAA,MACA,CAAA;AAAA,MACA,CAAA;AAAA,MACA;AAAA,MACA,OAAA,EAAQ;AAIV,IAAA,MAAM,aAAA,GAAgB,WAAA,GAAcA,eAAA,CAAQ,SAAA,EAAW,CAAC,CAAA,GAAI,OAAA;AAG5D,IAAA,IAAI,UAAA,GAAa,cAAA,CAAe,aAAA,EAAe,SAAA,EAAW,aAAa,CAAA;AAEvE,IAAA,IAAI,WAAA,EAAa;AACf,MAAA,UAAA,GAAa,UAAA,CAAW,MAAA;AAAA,QACtB,CAAC,SAAS,IAAI,IAAA,CAAK,KAAK,IAAI,CAAA,CAAE,SAAQ,GAAI;AAAA,OAC5C;AAAA,IACF;AAGA,IAAA,MAAM,oBAAA,uBAA2B,GAAA,EAG/B;AACF,IAAA,aAAA,CAAc,OAAA,CAAQ,CAAC,KAAA,KAAU;AAC/B,MAAA,MAAM,IAAA,GAAO,IAAI,IAAA,CAAK,KAAA,CAAM,IAAI,CAAA;AAEhC,MAAA,MAAM,OAAA,GAAU,KAAK,aAAA,EAAc;AACnC,MAAA,MAAM,cAAA,GAAiB,IAAA,CAAK,KAAA,CAAM,OAAA,GAAU,EAAE,CAAA,GAAI,EAAA;AAGlD,MAAA,IAAA,CAAK,aAAA,CAAc,cAAA,EAAgB,CAAA,EAAG,CAAC,CAAA;AACvC,MAAA,MAAM,aAAA,GAAgB,KAAK,WAAA,EAAY;AACvC,MAAA,MAAM,QAAA,GAAW,oBAAA,CAAqB,GAAA,CAAI,aAAa,CAAA,IAAK;AAAA,QAC1D,GAAA,EAAK,CAAA;AAAA,QACL,QAAA,EAAU,CAAA;AAAA,QACV,IAAA,EAAM,CAAA;AAAA,QACN,MAAA,EAAQ;AAAA,OACV;AACA,MAAA,oBAAA,CAAqB,IAAI,aAAA,EAAe;AAAA,QACtC,GAAA,EAAK,QAAA,CAAS,GAAA,GAAM,KAAA,CAAM,GAAA;AAAA,QAC1B,QAAA,EAAU,QAAA,CAAS,QAAA,GAAW,KAAA,CAAM,QAAA;AAAA,QACpC,IAAA,EAAM,QAAA,CAAS,IAAA,GAAO,KAAA,CAAM,IAAA;AAAA,QAC5B,MAAA,EAAQ,QAAA,CAAS,MAAA,GAAS,KAAA,CAAM;AAAA,OACjC,CAAA;AAAA,IACH,CAAC,CAAA;AAGD,IAAA,IAAI,iBAAA,GAAoB,qBAAA;AAAA,MACtB,oBAAA;AAAA,MACA,SAAA;AAAA,MACA;AAAA,KACF;AAEA,IAAA,IAAI,WAAA,EAAa;AACf,MAAA,iBAAA,GAAoB,iBAAA,CAAkB,MAAA;AAAA,QACpC,CAAC,SAAS,IAAI,IAAA,CAAK,KAAK,IAAI,CAAA,CAAE,SAAQ,GAAI;AAAA,OAC5C;AAAA,IACF;AAGA,IAAA,IAAI,IAAA,GAAO,CAAA;AACX,IAAA,MAAM,kBAAA,GAAqB,SAAA,CAAU,GAAA,CAAI,CAAC,GAAA,KAAQ;AAChD,MAAA,IAAA,IAAQ,GAAA,CAAI,GAAA;AACZ,MAAA,OAAO;AAAA,QACL,MAAM,GAAA,CAAI,IAAA;AAAA,QACV,aAAA,EAAe;AAAA,OACjB;AAAA,IACF,CAAC,CAAA;AAED,IAAA,IAAI,KAAA,GAAQ,CAAA;AACZ,IAAA,MAAM,mBAAA,GAAsB,SAAA,CAAU,GAAA,CAAI,CAAC,GAAA,KAAQ;AACjD,MAAA,KAAA,IAAS,GAAA,CAAI,IAAA;AACb,MAAA,OAAO;AAAA,QACL,MAAM,GAAA,CAAI,IAAA;AAAA,QACV,cAAA,EAAgB;AAAA,OAClB;AAAA,IACF,CAAC,CAAA;AACD,IAAA,IAAI,OAAA,GAAU,CAAA;AACd,IAAA,MAAM,qBAAA,GAAwB,SAAA,CAAU,GAAA,CAAI,CAAC,GAAA,KAAQ;AACnD,MAAA,OAAA,IAAW,GAAA,CAAI,MAAA;AACf,MAAA,OAAO;AAAA,QACL,MAAM,GAAA,CAAI,IAAA;AAAA,QACV,gBAAA,EAAkB;AAAA,OACpB;AAAA,IACF,CAAC,CAAA;AACD,IAAA,IAAA,GAAO,CAAA;AACP,IAAA,MAAM,mBAAA,GAAsB,UAAA,CAAW,GAAA,CAAI,CAAC,IAAA,KAAS;AACnD,MAAA,IAAA,IAAQ,IAAA,CAAK,GAAA;AACb,MAAA,OAAO;AAAA,QACL,MAAM,IAAA,CAAK,IAAA;AAAA,QACX,aAAA,EAAe;AAAA,OACjB;AAAA,IACF,CAAC,CAAA;AACD,IAAA,KAAA,GAAQ,CAAA;AACR,IAAA,MAAM,oBAAA,GAAuB,UAAA,CAAW,GAAA,CAAI,CAAC,IAAA,KAAS;AACpD,MAAA,KAAA,IAAS,IAAA,CAAK,IAAA;AACd,MAAA,OAAO;AAAA,QACL,MAAM,IAAA,CAAK,IAAA;AAAA,QACX,cAAA,EAAgB;AAAA,OAClB;AAAA,IACF,CAAC,CAAA;AACD,IAAA,OAAA,GAAU,CAAA;AACV,IAAA,MAAM,sBAAA,GAAyB,UAAA,CAAW,GAAA,CAAI,CAAC,IAAA,KAAS;AACtD,MAAA,OAAA,IAAW,IAAA,CAAK,MAAA;AAChB,MAAA,OAAO;AAAA,QACL,MAAM,IAAA,CAAK,IAAA;AAAA,QACX,gBAAA,EAAkB;AAAA,OACpB;AAAA,IACF,CAAC,CAAA;AAGD,IAAA,IAAA,GAAO,CAAA;AACP,IAAA,MAAM,0BAAA,GAA6B,iBAAA,CAAkB,GAAA,CAAI,CAAC,UAAA,KAAe;AACvE,MAAA,IAAA,IAAQ,UAAA,CAAW,GAAA;AACnB,MAAA,OAAO;AAAA,QACL,MAAM,UAAA,CAAW,IAAA;AAAA,QACjB,aAAA,EAAe;AAAA,OACjB;AAAA,IACF,CAAC,CAAA;AAED,IAAA,KAAA,GAAQ,CAAA;AACR,IAAA,MAAM,2BAAA,GAA8B,iBAAA,CAAkB,GAAA,CAAI,CAAC,UAAA,KAAe;AACxE,MAAA,KAAA,IAAS,UAAA,CAAW,IAAA;AACpB,MAAA,OAAO;AAAA,QACL,MAAM,UAAA,CAAW,IAAA;AAAA,QACjB,cAAA,EAAgB;AAAA,OAClB;AAAA,IACF,CAAC,CAAA;AAED,IAAA,OAAA,GAAU,CAAA;AACV,IAAA,MAAM,gCAAgC,iBAAA,CAAkB,GAAA;AAAA,MACtD,CAAC,UAAA,KAAe;AACd,QAAA,OAAA,IAAW,UAAA,CAAW,MAAA;AACtB,QAAA,OAAO;AAAA,UACL,MAAM,UAAA,CAAW,IAAA;AAAA,UACjB,gBAAA,EAAkB;AAAA,SACpB;AAAA,MACF;AAAA,KACF;AAEA,IAAA,OAAO;AAAA,MACL,QAAA;AAAA,MACA,QAAA;AAAA,MACA,WAAA;AAAA,MACA,SAAA;AAAA,MACA,WAAA;AAAA,MACA,UAAA;AAAA;AAAA,MAGA,SAAA;AAAA,MACA,kBAAA;AAAA,MACA,mBAAA;AAAA,MACA,qBAAA;AAAA;AAAA,MAGA,UAAA;AAAA,MACA,mBAAA;AAAA,MACA,oBAAA;AAAA,MACA,sBAAA;AAAA;AAAA,MAGA,iBAAA;AAAA,MACA,0BAAA;AAAA,MACA,2BAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF,CAAA,EAAG,CAAC,UAAA,EAAY,eAAA,EAAiB,aAAa,CAAC,CAAA;AACjD,CAAA;ACvZO,IAAM,SAAA,GAAY,CAAC,MAAA,KAKpB;AACJ,EAAA,MAAM,EAAE,MAAA,EAAQ,OAAA,EAAS,KAAA,EAAO,IAAA,GAAO,KAAI,GAAI,MAAA;AAE/C,EAAA,MAAM,MAAA,GAASxM,gBAAQ,MAAM;AAC3B,IAAA,OAAO,CAAC,WAAmB,gBAAA,KAAyC;AAClE,MAAA,IAAI,gBAAA,EAAkB;AAEpB,QAAA,MAAM,KAAA,GAAQ,gBAAA,CAAiB,IAAA,EAAM,KAAA,IAAS,CAAA;AAC9C,QAAA,MAAM,iBAAiB,SAAA,GAAY,IAAA;AAGnC,QAAA,IAAI,kBAAkB,KAAA,EAAO;AAC3B,UAAA,OAAO,IAAA;AAAA,QACT;AAGA,QAAA,IAAI,gBAAA,CAAiB,IAAA,CAAK,MAAA,GAAS,IAAA,EAAM;AACvC,UAAA,OAAO,IAAA;AAAA,QACT;AAAA,MACF;AAEA,MAAA,MAAM,MAAA,GAAS,IAAI,eAAA,EAAgB;AACnC,MAAA,MAAA,CAAO,GAAA,CAAI,MAAA,EAAQ,IAAA,CAAK,QAAA,EAAU,CAAA;AAClC,MAAA,MAAA,CAAO,GAAA,CAAI,MAAA,EAAQ,CAAA,EAAG,SAAA,GAAY,CAAC,CAAA,CAAE,CAAA;AACrC,MAAA,IAAI,MAAA,EAAQ;AACV,QAAA,MAAA,CAAO,GAAA,CAAI,UAAU,MAAM,CAAA;AAAA,MAC7B;AACA,MAAA,IAAI,OAAA,EAAS;AACX,QAAA,MAAA,CAAO,GAAA,CAAI,SAAA,EAAW,OAAA,CAAQ,QAAA,EAAU,CAAA;AAAA,MAC1C;AACA,MAAA,IAAI,KAAA,EAAO;AACT,QAAA,MAAA,CAAO,GAAA,CAAI,OAAA,EAAS,KAAA,CAAM,QAAA,EAAU,CAAA;AAAA,MACtC;AACA,MAAA,MAAM,GAAA,GAAM,CAAA,WAAA,EAAc,MAAA,CAAO,QAAA,EAAU,CAAA,CAAA;AAC3C,MAAA,OAAO,GAAA;AAAA,IACT,CAAA;AAAA,EACF,GAAG,CAAC,MAAA,EAAQ,OAAA,EAAS,KAAA,EAAO,IAAI,CAAC,CAAA;AAEjC,EAAA,MAAM,MAAA,GAASyM,qCAAwC,MAAA,EAAQ;AAAA,IAC7D,SAAA,EAAW,CAAC,IAAA,KAAS,IAAA;AAAA,IACrB,iBAAA,EAAmB,IAAA;AAAA,IACnB,gBAAA,EAAkB;AAAA,GACnB,CAAA;AAED,EAAA,MAAM,aAAazF,cAAAA,EAAuB;AAG1C,EAAAZ,kBAAU,MAAM;AACd,IAAA,IAAI,CAAC,OAAO,IAAA,EAAM;AAElB,IAAA,MAAM,WAAW,MAAA,CAAO,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,SAAS,CAAC,CAAA;AAGnD,IAAA,IAAI,QAAA,IAAY,QAAA,CAAS,IAAA,CAAK,MAAA,KAAW,IAAA,EAAM;AAE7C,MAAA,MAAM,YAAA,GAAe,MAAA,CAAO,IAAA,CAAK,MAAA,GAAS,CAAA;AAG1C,MAAA,UAAA,CAAW,OAAA,GAAU,WAAW,MAAM;AACpC,QAAA,MAAA,CAAO,QAAQ,YAAY,CAAA;AAAA,MAC7B,GAAG,GAAG,CAAA;AAAA,IACR;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,IAAI,WAAW,OAAA,EAAS;AACtB,QAAA,YAAA,CAAa,WAAW,OAAO,CAAA;AAAA,MACjC;AAAA,IACF,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,MAAA,CAAO,IAAA,EAAM,IAAI,CAAC,CAAA;AAGtB,EAAAA,kBAAU,MAAM;AACd,IAAA,OAAO,MAAM;AACX,MAAA,IAAI,WAAW,OAAA,EAAS;AACtB,QAAA,YAAA,CAAa,WAAW,OAAO,CAAA;AAAA,MACjC;AAAA,IACF,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,MAAA,EAAQ,OAAA,EAAS,KAAK,CAAC,CAAA;AAG3B,EAAA,MAAM,MAAA,GAASpG,gBAAQ,MAAM;AAC3B,IAAA,IAAI,CAAC,MAAA,CAAO,IAAA,EAAM,OAAO,EAAC;AAC1B,IAAA,OAAO,MAAA,CAAO,IAAA,CACX,GAAA,CAAI,CAAC,SAAS,IAAA,CAAK,IAAI,CAAA,CACvB,IAAA,EAAK,CACL,MAAA,CAAO,CAAC,KAAA,KAA8B,UAAU,MAAS,CAAA;AAAA,EAC9D,CAAA,EAAG,CAAC,MAAA,CAAO,IAAI,CAAC,CAAA;AAEhB,EAAA,OAAO;AAAA,IACL,MAAA;AAAA,IACA,WAAW,MAAA,CAAO,SAAA;AAAA,IAClB,OAAO,MAAA,CAAO,KAAA;AAAA,IACd,QAAQ,MAAA,CAAO;AAAA,GACjB;AACF,CAAA;;;ACtHO,IAAK2G,WAAAA,qBAAAA,WAAAA,KAAL;AACL,EAAAA,YAAA,KAAA,CAAA,GAAM,IAAA;AACN,EAAAA,YAAA,MAAA,CAAA,GAAO,IAAA;AACP,EAAAA,YAAA,OAAA,CAAA,GAAQ,KAAA;AACR,EAAAA,YAAA,SAAA,CAAA,GAAU,KAAA;AAJA,EAAA,OAAAA,WAAAA;AAAA,CAAA,EAAA,WAAA,IAAA,EAAA,CAAA;AAOL,IAAK,iBAAA,qBAAA+F,kBAAAA,KAAL;AACL,EAAAA,mBAAA,aAAA,CAAA,GAAc,KAAA;AACd,EAAAA,mBAAA,QAAA,CAAA,GAAS,IAAA;AACT,EAAAA,mBAAA,OAAA,CAAA,GAAQ,IAAA;AAHE,EAAA,OAAAA,kBAAAA;AAAA,CAAA,EAAA,iBAAA,IAAA,EAAA,CAAA;AAYZ,IAAM,WAAA,GAAc;AAAA,EAClB,CAAC,iBAAiB,CAAA;AAAA,EAClB,CAAC,kBAAkB,CAAA;AAAA,EACnB,CAAC,oBAAmB,EAAA;AAAA,EACpB,CAAC,sBAAqB;AACxB,CAAA;AAEA,IAAM,YAAA,GAAe,CAAC,MAAA,EAA6B,KAAA,KAAgB;AACjE,EAAA,MAAM,YAAY,OAAO,MAAA,KAAW,QAAA,GAAW,MAAA,GAAS,YAAY,MAAM,CAAA;AAC1E,EAAA,OAAO;AAAA,IACL,IAAA,EAAM3F,eAAAA,CAAQ,KAAA,EAAO,SAAA,GAAY,CAAC,CAAA;AAAA,IAClC,EAAA,EAAI;AAAA,GACN;AACF,CAAA;AAEA,IAAM,eAAA,GAAkB,CAAC,IAAA,KAAgB;AACvC,EAAA,IAAI,OAAO,IAAA,KAAS,WAAA,EAAa,OAAO,MAAA;AACxC,EAAA,OAAOD,cAAAA,CAAO,MAAM,YAAY,CAAA;AAClC,CAAA;AAEA,IAAM,gBAAA,GAAmB,CAAC,IAAA,KAAqB;AAC7C,EAAA,OAAO,IAAI,IAAA;AAAA,IACT,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,WAAA,EAAY,EAAG,KAAK,QAAA,EAAS,EAAG,IAAA,CAAK,OAAA,EAAS;AAAA,GAC9D;AACF,CAAA;AAEA,IAAM,cAAA,GAAiB,CAAC,IAAA,KAAqB;AAC3C,EAAA,OAAO,IAAI,IAAA;AAAA,IACT,IAAA,CAAK,GAAA;AAAA,MACH,KAAK,WAAA,EAAY;AAAA,MACjB,KAAK,QAAA,EAAS;AAAA,MACd,KAAK,OAAA,EAAQ;AAAA,MACb,EAAA;AAAA,MACA,EAAA;AAAA,MACA,EAAA;AAAA,MACA;AAAA;AACF,GACF;AACF,CAAA;AAEO,IAAM,0BAAA,GAA6B,CAAC,MAAA,KAAoB;AAC7D,EAAA,MAAM,EAAE,YAAA,EAAc,eAAA,EAAgB,GAAIzG,6BAAAA,EAAc;AACxD,EAAA,MAAM,EAAE,KAAA,EAAM,GAAIF,uBAAAA,EAAW;AAC7B,EAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAIJ,gBAAAA;AAAA,IAC1C,MAAA,IAAU;AAAA,GACZ;AACA,EAAA,MAAM,CAAC,iBAAA,EAAmB,oBAAoB,CAAA,GAAIA,gBAAAA;AAAA,IAChD,IAAA;AAAA,GACF;AACA,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIA,iBAAS,KAAK,CAAA;AAC9C,EAAA,MAAM,CAAC,KAAK,CAAA,GAAIA,iBAAS,sBAAM,IAAI,MAAM,CAAA;AACzC,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIA,iBAA4B,IAAA,YAAe;AAEvE,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIA,iBAAmC,MAAM;AACzE,IAAA,MAAM,KAAA,GAAQ,YAAA,CAAa,IAAA,aAAiB,KAAK,CAAA;AACjD,IAAA,OAAO;AAAA,MACL,MAAM,KAAA,CAAM,IAAA;AAAA,MACZ,IAAI,KAAA,CAAM;AAAA,KACZ;AAAA,EACF,CAAC,CAAA;AAED,EAAA,MAAM,cAAA,GAAiB,CAAC,KAAA,KAAsB;AAC5C,IAAA,MAAM,QAAA,GAAW,YAAA,CAAa,KAAA,EAAO,KAAK,CAAA;AAC1C,IAAA,SAAA,CAAU,KAAK,CAAA;AACf,IAAA,YAAA,CAAa;AAAA,MACX,MAAM,QAAA,CAAS,IAAA;AAAA,MACf,IAAI,QAAA,CAAS;AAAA,KACd,CAAA;AAAA,EACH,CAAA;AAEA,EAAA,MAAM,QAAA,GAAW,CAAC,MAAA,KAAyC;AACzD,IAAA,IAAI,MAAA,CAAO,SAAS,WAAA,EAAa;AAC/B,MAAA,MAAM,eAAe,MAAA,CAAO,KAAA;AAE5B,MAAA,YAAA,CAAa,YAAY,CAAA;AAEzB,MAAA,IAAI,YAAA,CAAa,IAAA,IAAQ,YAAA,CAAa,EAAA,EAAI;AACxC,QAAA,MAAM,SAAA,GACJ,KAAK,GAAA,CAAI6C,wBAAAA,CAAiB,aAAa,IAAA,EAAM,YAAA,CAAa,EAAE,CAAC,CAAA,GAAI,CAAA;AAEnE,QAAA,MAAM,KAAA,GAAQ,YAAA,CAAa,SAAA,EAAW,KAAK,CAAA;AAE3C,QAAA,IACE,eAAA,CAAgB,KAAA,CAAM,IAAI,CAAA,KAAM,gBAAgB,YAAA,CAAa,IAAI,CAAA,IACjE,eAAA,CAAgB,MAAM,EAAE,CAAA,KAAM,eAAA,CAAgB,YAAA,CAAa,EAAE,CAAA,EAC7D;AACA,UAAA,SAAA;AAAA,YACG,MAAA,CAAO,IAAA,CAAK,WAAW,CAAA,CAAmB,IAAA;AAAA,cACzC,CAAC,GAAA,KAAQ,WAAA,CAAY,GAAG,CAAA,KAAM;AAAA,aAChC,IAAK;AAAA,WACP;AAAA,QACF,CAAA,MAAO;AACL,UAAA,SAAA,CAAU,IAAI,CAAA;AAAA,QAChB;AAAA,MACF;AAAA,IACF;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,YAAY,SAAA,CAAU,IAAA;AAC5B,EAAA,MAAM,UAAU,SAAA,CAAU,EAAA;AAE1B,EAAA,MAAM,eAAA,GAAkB5C,gBAAQ,MAAM;AACpC,IAAA,IAAI,CAAC,WAAW,OAAO,SAAA;AACvB,IAAA,OAAO,iBAAiB,SAAS,CAAA;AAAA,EACnC,CAAA,EAAG,CAAC,SAAS,CAAC,CAAA;AAGd,EAAA,MAAM,aAAA,GAAgBA,gBAAQ,MAAM;AAClC,IAAA,IAAI,CAAC,SAAS,OAAO,OAAA;AACrB,IAAA,OAAO,eAAe,OAAO,CAAA;AAAA,EAC/B,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AAEZ,EAAA,MAAM,WAAA,GAAcA,gBAAQ,MAAM;AAChC,IAAA,OAAO;AAAA,MACL;AAAA,QACE,IAAA,EAAM,OAAA;AAAA,QACN,IAAA,EAAM,WAAA;AAAA,QACN,KAAA,EAAO,SAAA;AAAA,QACP,GAAA,EAAK;AAAA;AACP,KACF;AAAA,EACF,CAAA,EAAG,CAAC,SAAS,CAAC,CAAA;AAEd,EAAA,MAAM,EAAE,MAAA,EAAQ,SAAA,EAAW,KAAA,KAAU,SAAA,CAAU;AAAA,IAC7C,MAAA,EAAQ,cAAA,KAAmB,aAAA,GAAgB,MAAA,GAAY,cAAA;AAAA,IACvD,OAAA,EAAS,eAAA,GAAkB,eAAA,CAAgB,OAAA,EAAQ,GAAI,MAAA;AAAA,IACvD,KAAA,EAAO,aAAA,GAAgB,aAAA,CAAc,OAAA,EAAQ,GAAI;AAAA,GAClD,CAAA;AAKD,EAAA,MAAM,eAAA,GAAkB,wBAAA;AAAA,IACtB,MAAA;AAAA,IACA,eAAA;AAAA,IACA;AAAA,GACF;AAEA,EAAA,MAAM,SAAA,GACJ,gBACA,eAAA,IACC,KAAA,CAAM,SAASY,8BAAAA,CAAkB,aAAA,IAChC,KAAA,CAAM,MAAA,KAAWA,8BAAAA,CAAkB,6BAAA;AAEvC,EAAA,MAAM,WAAA,GAAc,MAAA,CAAO,MAAA,CAAO+F,WAAU,CAAA;AAC5C,EAAA,MAAM,sBAAA,GAAyB,MAAA,CAAO,MAAA,CAAO,iBAAiB,CAAA;AAE9D,EAAA,MAAM,oBAAoB,MAAM;AAC9B,IAAA,IAAI,CAAC,iBAAiB,OAAO,IAAA;AAE7B,IAAA,IAAI,MAAA;AACJ,IAAA,QAAQ,iBAAA;AAAmB,MACzB,KAAK,KAAA;AACH,QAAA,MAAA,GAAS;AAAA,UACP,YAAY,eAAA,CAAgB,iBAAA;AAAA,UAC5B,eAAe,eAAA,CAAgB,0BAAA;AAAA,UAC/B,gBAAgB,eAAA,CAAgB,2BAAA;AAAA,UAChC,kBAAkB,eAAA,CAAgB;AAAA,SACpC;AACA,QAAA;AAAA,MACF,KAAK,IAAA;AACH,QAAA,MAAA,GAAS;AAAA,UACP,YAAY,eAAA,CAAgB,UAAA;AAAA,UAC5B,eAAe,eAAA,CAAgB,mBAAA;AAAA,UAC/B,gBAAgB,eAAA,CAAgB,oBAAA;AAAA,UAChC,kBAAkB,eAAA,CAAgB;AAAA,SACpC;AACA,QAAA;AAAA,MACF,KAAK,IAAA;AAAA,MACL;AACE,QAAA,MAAA,GAAS;AAAA,UACP,YAAY,eAAA,CAAgB,SAAA;AAAA,UAC5B,eAAe,eAAA,CAAgB,kBAAA;AAAA,UAC/B,gBAAgB,eAAA,CAAgB,mBAAA;AAAA,UAChC,kBAAkB,eAAA,CAAgB;AAAA,SACpC;AAAA;AAGJ,IAAA,OAAO,MAAA;AAAA,EACT,CAAA;AAEA,EAAA,OAAO;AAAA,IACL,cAAA;AAAA,IACA,iBAAA;AAAA,IACA,MAAA;AAAA,IACA,cAAA;AAAA,IACA,WAAA;AAAA,IACA,iBAAA;AAAA,IACA,oBAAA;AAAA,IACA,sBAAA;AAAA,IACA,QAAA;AAAA,IACA,WAAA;AAAA,IACA,SAAA;AAAA,IACA,WAAA;AAAA,IACA,QAAA;AAAA,IACA,MAAA;AAAA,IACA,SAAA;AAAA,IACA,KAAA;AAAA,IACA,eAAA;AAAA,IACA,gBAAgB,iBAAA,EAAkB;AAAA,IAClC;AAAA,GACF;AACF,CAAA;AC5NO,IAAM,mBAAA,GAAsB,CAACgG,OAAAA,KAAsC;AACxE,EAAA,QAAQA,OAAAA;AAAQ,IACd,KAAA,KAAA;AACE,MAAA,OAAO,QAAA;AAAA,IACT,KAAA,IAAA;AACE,MAAA,OAAO,QAAA;AAAA,IACT,KAAA,IAAA;AACE,MAAA,OAAO,OAAA;AAAA,IACT;AACE,MAAA,OAAO,OAAA;AAAA;AAEb,CAAA;AAUO,IAAM,kBAAA,GAAqB,CAChC,UAAA,EACAA,OAAAA,KACW;AACX,EAAA,IAAI;AACF,IAAA,MAAM,IAAA,GAAOC,iBAAS,UAAU,CAAA;AAEhC,IAAA,QAAQD,OAAAA;AAAQ,MACd,KAAA,KAAA;AAAA,MACA,KAAA,IAAA;AAEE,QAAA,OAAO7F,cAAAA,CAAO,MAAM,eAAe,CAAA;AAAA,MACrC,KAAA,IAAA;AAAA,MACA;AAEE,QAAA,OAAOA,cAAAA,CAAO,MAAM,OAAO,CAAA;AAAA;AAC/B,EACF,CAAA,CAAA,MAAQ;AAEN,IAAA,OAAO,UAAA;AAAA,EACT;AACF,CAAA;ACnCA,IAAM,cAAA,GAAiB,CAAC,KAAA,KAA0B;AAChD,EAAA,IAAI,KAAA,IAAS,KAAK,OAAO,CAAA,CAAA,EAAA,CAAK,QAAQ,GAAA,EAAK,OAAA,CAAQ,CAAC,CAAC,CAAA,CAAA,CAAA;AACrD,EAAA,IAAI,KAAA,IAAS,KAAK,OAAO,CAAA,CAAA,EAAA,CAAK,QAAQ,GAAA,EAAK,OAAA,CAAQ,CAAC,CAAC,CAAA,CAAA,CAAA;AACrD,EAAA,IAAI,KAAA,IAAS,KAAK,OAAO,CAAA,CAAA,EAAA,CAAK,QAAQ,GAAA,EAAK,OAAA,CAAQ,CAAC,CAAC,CAAA,CAAA,CAAA;AACrD,EAAA,OAAO,CAAA,CAAA,EAAI,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAC,CAAA,CAAA;AAC7B,CAAA;AAEO,IAAM,kBAAkD,CAAC;AAAA,EAC9D,IAAA;AAAA,EACA;AACF,CAAA,KAAM;AACJ,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI3F,0BAAAA,EAAe;AAE7B,EAAA,MAAM,WAAA,GAAcnB,eAAAA;AAAA,IAClB,MAAM,IAAA,CAAK,GAAA,CAAI,GAAG,KAAK,GAAA,CAAI,CAAC,IAAA,KAAS,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,GAAG,CAAC,GAAG,CAAC,CAAA;AAAA,IAC3D,CAAC,IAAI;AAAA,GACP;AAEA,EAAA,uBACEoB,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,YAAA,EAEb,QAAA,EAAA;AAAA,oBAAAnB,cAAAA,CAAC,SAAI,SAAA,EAAU,8EAAA,EACb,0BAAAmB,eAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,sDAAA,EACb,QAAA,EAAA;AAAA,sBAAAnB,eAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EACb,QAAA,kBAAAA,eAAC6B,cAAAA,EAAA,EAAK,IAAA,EAAK,IAAA,EAAK,WAAW,EAAA,EAAI,MAAA,EAAO,YACnC,QAAA,EAAA,CAAA,CAAE,gDAAgD,GACrD,CAAA,EACF,CAAA;AAAA,sBACA7B,cAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,gBAAA,EACb,QAAA,kBAAAA,eAAC6B,cAAAA,EAAA,EAAK,IAAA,EAAK,IAAA,EAAK,WAAW,EAAA,EAAI,MAAA,EAAO,YACnC,QAAA,EAAA,CAAA,CAAE,4CAA4C,GACjD,CAAA,EACF,CAAA;AAAA,sBACA7B,cAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,+BAAA,EACb,QAAA,kBAAAA,eAAC6B,cAAAA,EAAA,EAAK,IAAA,EAAK,IAAA,EAAK,WAAW,EAAA,EAAI,MAAA,EAAO,YACnC,QAAA,EAAA,CAAA,CAAE,+CAA+C,GACpD,CAAA,EACF,CAAA;AAAA,sBACA7B,cAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,+BAAA,EACb,QAAA,kBAAAA,eAAC6B,cAAAA,EAAA,EAAK,IAAA,EAAK,IAAA,EAAK,WAAW,EAAA,EAAI,MAAA,EAAO,YACnC,QAAA,EAAA,CAAA,CAAE,6CAA6C,GAClD,CAAA,EACF;AAAA,KAAA,EACF,CAAA,EACF,CAAA;AAAA,oBAGA7B,eAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iBACZ,QAAA,EAAA,IAAA,CAAK,GAAA,CAAI,CAAC,IAAA,KAAS;AAClB,MAAA,MAAM,UAAA,GAAa,KAAK,GAAA,IAAO,CAAA;AAC/B,MAAA,MAAM,WAAY,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,GAAG,IAAI,WAAA,GAAe,GAAA;AAEtD,MAAA,uBACEA,cAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UAEC,OAAA,EAAS,MAAM,cAAA,GAAiB,IAAA,CAAK,MAAM,CAAA;AAAA,UAC3C,SAAA,EAAU,gIAAA;AAAA,UAEV,QAAA,kBAAAmB,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,sDAAA,EAEb,QAAA,EAAA;AAAA,4BAAAnB,eAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EACb,QAAA,kBAAAA,eAAC6B,cAAAA,EAAA,EAAK,IAAA,EAAK,IAAA,EAAK,QAAO,UAAA,EAAW,SAAA,EAAU,cAAA,EACzC,QAAA,EAAA,IAAA,CAAK,QACR,CAAA,EACF,CAAA;AAAA,4BAGA7B,eAAC,KAAA,EAAA,EAAI,SAAA,EAAU,kBACb,QAAA,kBAAAmB,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yGAAA,EACb,QAAA,EAAA;AAAA,8BAAAnB,cAAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBACC,SAAA,EAAU,wDAAA;AAAA,kBACV,KAAA,EAAO;AAAA,oBACL,KAAA,EAAO,GAAG,QAAQ,CAAA,CAAA,CAAA;AAAA,oBAClB,eAAA,EAAiB,aAAa,SAAA,GAAY;AAAA;AAC5C;AAAA,eACF;AAAA,8BACAmB,eAAAA;AAAA,gBAACU,cAAAA;AAAA,gBAAA;AAAA,kBACC,IAAA,EAAK,IAAA;AAAA,kBACL,MAAA,EAAO,UAAA;AAAA,kBACP,SAAA,EAAWkD,YAAAA;AAAA,oBACT,gCAAA;AAAA,oBACA,aACI,qBAAA,GACA;AAAA,mBACN;AAAA,kBAEC,QAAA,EAAA;AAAA,oBAAA,UAAA,GAAa,GAAA,GAAM,EAAA;AAAA,oBACnB,IAAA,CAAK,GAAA,CAAI,OAAA,CAAQ,CAAC;AAAA;AAAA;AAAA;AACrB,aAAA,EACF,CAAA,EACF,CAAA;AAAA,4BAGA/E,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,+BAAA,EACb,0BAAAA,cAAAA,CAAC6B,cAAAA,EAAA,EAAK,IAAA,EAAK,MAAK,MAAA,EAAO,UAAA,EACpB,yBAAe,IAAA,CAAK,MAAM,GAC7B,CAAA,EACF,CAAA;AAAA,4BAGA7B,cAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,+BAAA,EACb,QAAA,kBAAAA,eAAC6B,cAAAA,EAAA,EAAK,MAAK,IAAA,EAAK,MAAA,EAAO,YAAW,SAAA,EAAW,EAAA,EAC1C,yBAAe,IAAA,CAAK,IAAI,GAC3B,CAAA,EACF;AAAA,WAAA,EACF;AAAA,SAAA;AAAA,QAnDK,IAAA,CAAK;AAAA,OAoDZ;AAAA,IAEJ,CAAC,CAAA,EACH,CAAA;AAAA,IAGC,KAAK,MAAA,KAAW,CAAA,oBACf7B,cAAAA,CAAC,SAAI,SAAA,EAAU,uDAAA,EACb,QAAA,kBAAAA,cAAAA,CAAC6B,gBAAA,EAAK,SAAA,EAAW,IAAK,QAAA,EAAA,CAAA,CAAE,oCAAoC,GAAE,CAAA,EAChE;AAAA,GAAA,EAEJ,CAAA;AAEJ,CAAA;AC5GO,IAAM,iBAAgD,CAAC;AAAA,EAC5D,KAAA;AAAA,EACA,aAAA;AAAA,EACA,OAAA;AAAA,EACA,WAAA,GAAc;AAChB,CAAA,KAAM;AACJ,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAI/B,iBAAS,KAAK,CAAA;AACtC,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIA,iBAAS,EAAE,CAAA;AAEvC,EAAA,MAAM,eAAA,GAAkBC,gBAAQ,MAAM;AACpC,IAAA,IAAI,CAAC,QAAQ,OAAO,OAAA;AACpB,IAAA,OAAO,OAAA,CAAQ,MAAA;AAAA,MACb,CAAC,GAAA,KACC,GAAA,CAAI,MAAM,WAAA,EAAY,CAAE,SAAS,MAAA,CAAO,WAAA,EAAa,CAAA,IACrD,IAAI,KAAA,CAAM,WAAA,GAAc,QAAA,CAAS,MAAA,CAAO,aAAa;AAAA,KACzD;AAAA,EACF,CAAA,EAAG,CAAC,MAAA,EAAQ,OAAO,CAAC,CAAA;AAEpB,EAAA,MAAM,iBAAiB,OAAA,CAAQ,IAAA,CAAK,CAAC,GAAA,KAAQ,GAAA,CAAI,UAAU,KAAK,CAAA;AAChE,EAAA,MAAM,YAAA,GACJ,KAAA,KAAU,aAAA,GACN,aAAA,GACA,gBAAgB,KAAA,IAAS,WAAA;AAC/B,EAAA,MAAM,eAAe,KAAA,KAAU,aAAA;AAE/B,EAAA,uBACEoB,eAAAA,CAACyL,0BAAA,EAAA,EAAiB,IAAA,EAAY,cAAc,OAAA,EAC1C,QAAA,EAAA;AAAA,oBAAA5M,cAAAA,CAAC6M,iCAAoB,OAAA,EAAO,IAAA,EAC1B,0BAAA1L,eAAAA,CAAC,QAAA,EAAA,EAAO,WAAU,qKAAA,EAChB,QAAA,EAAA;AAAA,sBAAAA,gBAACC,cAAAA,EAAA,EAAK,GAAA,EAAK,CAAA,EAAG,WAAU,QAAA,EACrB,QAAA,EAAA;AAAA,QAAA,CAAC,YAAA,IAAgB,YAAA,KAAiB,WAAA,oBACjCpB,cAAAA,CAACuC,qBAAA,EAAU,IAAA,EAAM,YAAA,EAAc,IAAA,EAAK,KAAA,EAAM,CAAA;AAAA,wBAE5CvC,eAAC6B,cAAAA,EAAA,EAAK,MAAK,IAAA,EAAK,SAAA,EAAU,6BACvB,QAAA,EAAA,YAAA,EACH;AAAA,OAAA,EACF,CAAA;AAAA,sBAEA7B,cAAAA;AAAA,QAAC8M,uBAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAM,EAAA;AAAA,UACN,SAAA,EAAW/H,YAAAA;AAAA,YACT,oDAAA;AAAA,YACA,IAAA,IAAQ;AAAA;AACV;AAAA;AACF,KAAA,EACF,CAAA,EACF,CAAA;AAAA,oBACA/E,cAAAA,CAAC+M,4BAAA,EAAA,EACC,QAAA,kBAAA5L,eAAAA;AAAA,MAAC6L,6BAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAM,OAAA;AAAA,QACN,IAAA,EAAK,QAAA;AAAA,QACL,UAAA,EAAY,CAAA;AAAA,QACZ,SAAA,EAAU,0HAAA;AAAA,QACV,gBAAA,EAAkB,CAAC,CAAA,KAAM,CAAA,CAAE,cAAA,EAAe;AAAA,QAG1C,QAAA,EAAA;AAAA,0BAAAhN,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2DAAA,EACb,QAAA,kBAAAA,cAAAA;AAAA,YAACiN,eAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAS,IAAA;AAAA,cACT,WAAA,EAAY,mBAAA;AAAA,cACZ,KAAA,EAAO,MAAA;AAAA,cACP,aAAA,EAAe,SAAA;AAAA,cACf,IAAA,EAAK;AAAA;AAAA,WACP,EACF,CAAA;AAAA,0BAGAjN,cAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,uCAAA,EACZ,QAAA,EAAA,eAAA,CAAgB,WAAW,CAAA,mBAC1BA,cAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,yEAAA,EAA0E,QAAA,EAAA,kBAAA,EAEzF,IAEA,eAAA,CAAgB,GAAA,CAAI,CAAC,MAAA,KAAW;AAC9B,YAAA,MAAM,UAAA,GAAa,UAAU,MAAA,CAAO,KAAA;AACpC,YAAA,MAAM,UAAA,GACJ,MAAA,CAAO,KAAA,KAAU,aAAA,GAAgB,gBAAgB,MAAA,CAAO,KAAA;AAE1D,YAAA,uBACEmB,eAAAA;AAAA,cAAC,QAAA;AAAA,cAAA;AAAA,gBAEC,SAAS,MAAM;AACb,kBAAA,aAAA,CAAc,OAAO,KAAK,CAAA;AAC1B,kBAAA,OAAA,CAAQ,KAAK,CAAA;AACb,kBAAA,SAAA,CAAU,EAAE,CAAA;AAAA,gBACd,CAAA;AAAA,gBACA,SAAA,EAAW4D,YAAAA;AAAA,kBACT,kHAAA;AAAA,kBACA,aAAa,eAAA,GAAkB;AAAA,iBACjC;AAAA,gBAEC,QAAA,EAAA;AAAA,kBAAA,MAAA,CAAO,KAAA,KAAU,iCAChB/E,cAAAA,CAACuC,qBAAA,EAAU,IAAA,EAAM,UAAA,EAAY,IAAA,EAAK,KAAA,EAAM,CAAA;AAAA,kCAE1CvC,eAAC6B,cAAAA,EAAA,EAAK,MAAK,IAAA,EAAK,SAAA,EAAU,6BACvB,QAAA,EAAA,UAAA,EACH;AAAA;AAAA,eAAA;AAAA,cAhBK,MAAA,CAAO;AAAA,aAiBd;AAAA,UAEJ,CAAC,CAAA,EAEL;AAAA;AAAA;AAAA,KACF,EACF;AAAA,GAAA,EACF,CAAA;AAEJ,CAAA;AC5GA,IAAM,OAAA,GAAU,CAAC,GAAA,KACf,KAAA,CAAM,CAAA,uBAAA,EAA0B,GAAG,CAAA,CAAE,CAAA,CAAE,IAAA,CAAK,CAAC,GAAA,KAAQ,GAAA,CAAI,MAAM,CAAA;AAE1D,IAAM,YAAA,GAAe,CAAC,MAAA,KAMvB;AACJ,EAAA,MAAM,EAAE,MAAA,EAAQ,UAAA,EAAY,MAAM,EAAA,EAAI,KAAA,GAAQ,KAAK,GAAI,MAAA;AAEvD,EAAA,MAAM,MAAA,GAAS9B,gBAAQ,MAAM;AAC3B,IAAA,IAAI,CAAC,MAAA,IAAU,CAAC,UAAA,EAAY,OAAO,IAAA;AAGnC,IAAA,MAAM,MAAM,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,GAAA,KAAQ,GAAI,CAAA;AAGxC,IAAA,IAAI,aAAA,GAAgB,IAAA;AACpB,IAAA,MAAM,cAAc,EAAA,IAAM,GAAA;AAE1B,IAAA,IAAI,CAAC,aAAA,EAAe;AAElB,MAAA,MAAM,gBAAA,GAAmB;AAAA,QACvB,KAAA,EAAO,GAAA;AAAA,QACP,IAAA,EAAM,IAAA;AAAA,QACN,IAAA,EAAM;AAAA,QACN,UAAU,CAAA;AAEZ,MAAA,aAAA,GAAgB,MAAM,KAAA,GAAQ,gBAAA;AAAA,IAChC;AAEA,IAAA,MAAM,MAAA,GAAS,IAAI,eAAA,EAAgB;AACnC,IAAA,MAAA,CAAO,GAAA,CAAI,UAAU,MAAM,CAAA;AAC3B,IAAA,MAAA,CAAO,GAAA,CAAI,cAAc,UAAU,CAAA;AACnC,IAAA,MAAA,CAAO,GAAA,CAAI,MAAA,EAAQ,aAAA,CAAc,QAAA,EAAU,CAAA;AAC3C,IAAA,MAAA,CAAO,GAAA,CAAI,IAAA,EAAM,WAAA,CAAY,QAAA,EAAU,CAAA;AAEvC,IAAA,OAAO,CAAA,qBAAA,EAAwB,MAAA,CAAO,QAAA,EAAU,CAAA,CAAA;AAAA,EAClD,GAAG,CAAC,MAAA,EAAQ,YAAY,IAAA,EAAM,EAAA,EAAI,KAAK,CAAC,CAAA;AAExC,EAAA,MAAM,EAAE,IAAA,EAAM,SAAA,EAAW,OAAM,GAAIiL,mBAAAA,CAAsB,QAAQ,OAAA,EAAS;AAAA,IACxE,iBAAA,EAAmB,KAAA;AAAA,IACnB,gBAAA,EAAkB;AAAA;AAAA,GACnB,CAAA;AAGD,EAAA,MAAM,MAAA,GAASjL,gBAAQ,MAAM;AAC3B,IAAA,IAAI,CAAC,IAAA,EAAM,CAAA,IAAK,CAAC,KAAA,CAAM,QAAQ,IAAA,CAAK,CAAC,CAAA,EAAG,OAAO,EAAC;AAEhD,IAAA,MAAM,EAAE,CAAA,EAAG,CAAA,EAAG,GAAG,CAAA,EAAG,CAAA,EAAG,GAAE,GAAI,IAAA;AAE7B,IAAA,OAAO,CAAA,CAAE,GAAA,CAAI,CAAC,SAAA,EAAW,KAAA,MAAW;AAAA,MAClC,QAAQ,MAAA,IAAU,EAAA;AAAA,MAClB,YAAY,UAAA,IAAc,EAAA;AAAA,MAC1B,SAAA;AAAA,MACA,IAAA,EAAM,EAAE,KAAK,CAAA;AAAA,MACb,IAAA,EAAM,EAAE,KAAK,CAAA;AAAA,MACb,GAAA,EAAK,EAAE,KAAK,CAAA;AAAA,MACZ,KAAA,EAAO,EAAE,KAAK,CAAA;AAAA,MACd,MAAA,EAAQ,EAAE,KAAK;AAAA,KACjB,CAAE,CAAA;AAAA,EACJ,CAAA,EAAG,CAAC,IAAA,EAAM,MAAA,EAAQ,UAAU,CAAC,CAAA;AAE7B,EAAA,OAAO;AAAA,IACL,MAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,GACF;AACF,CAAA;AC9DA,IAAM4H,mBAAkB9C,wBAAAA,CAAM,IAAA;AAAA,EAAK,MACjC,OAAA,CAAA,OAAA,EAAA,CAAA,IAAA,CAAA,OAAA,iBAAA,EAAA,EAAA,oBAAA,CAAA,CAAA,CAA0C,IAAA,CAAK,CAAC,GAAA,KAAQ;AACtD,IAAA,OAAO,EAAE,OAAA,EAAS,GAAA,CAAI,WAAA,EAAY;AAAA,EACpC,CAAC;AACH,CAAA;AAIA,IAAM,eAAA,GAAoD,CAAC,EAAE,UAAA,EAAW,KAAM;AAC5E,EAAA,MAAM,aAAa,GAAA,GAAM,UAAA;AACzB,EAAA,uBACE1D,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wDAAA,EACb,QAAA,EAAA;AAAA,oBAAAA,eAAAA,CAACU,cAAAA,EAAA,EAAK,MAAA,EAAO,UAAA,EAAY,QAAA,EAAA;AAAA,MAAA,UAAA,CAAW,QAAQ,CAAC,CAAA;AAAA,MAAE;AAAA,KAAA,EAAC,CAAA;AAAA,oBAChD7B,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,6BAA4B,QAAA,EAAA,GAAA,EAAC,CAAA;AAAA,oBAC7CmB,eAAAA,CAACU,cAAAA,EAAA,EAAK,QAAO,UAAA,EAAY,QAAA,EAAA;AAAA,MAAA,UAAA,CAAW,QAAQ,CAAC,CAAA;AAAA,MAAE;AAAA,KAAA,EAAC;AAAA,GAAA,EAClD,CAAA;AAEJ,CAAA;AAeO,IAAM,mBAAA,GAA0D,CACrE,KAAA,KACG;AACH,EAAA,MAAM;AAAA,IACJ,cAAA;AAAA,IACA,iBAAA;AAAA,IACA,MAAA;AAAA,IACA,cAAA;AAAA,IACA,WAAA;AAAA,IACA,eAAA;AAAA,IACA,WAAA;AAAA,IACA,QAAA;AAAA,IACA,iBAAA;AAAA,IACA,oBAAA;AAAA,IACA,sBAAA;AAAA,IACA,cAAA;AAAA,IACA,MAAA;AAAA,IACA,SAAA;AAAA,IACA,QAAA;AAAA,IACA;AAAA,GACF,GAAI,KAAA;AACJ,EAAA,MAAM,EAAE,CAAA,EAAE,GAAIX,0BAAAA,EAAe;AAC7B,EAAA,MAAM,cAAciD,2BAAAA,EAAe;AACnC,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIrE,iBAAmB,OAAA,aAAc;AACjE,EAAA,MAAM,CAAC,iBAAA,EAAmB,oBAAoB,CAAA,GAAIA,iBAAS,IAAI,CAAA;AAC/D,EAAA,MAAM,CAAC,oBAAA,EAAsB,uBAAuB,CAAA,GAAIA,iBAAS,KAAK,CAAA;AACtE,EAAA,MAAM,CAAC,kBAAA,EAAoB,qBAAqB,CAAA,GAAIA,iBAAS,KAAK,CAAA;AAIlE,EAAA,MAAM,mBAAA,GAAsB,CAAC,IAAA,KAAgB;AAC3C,IAAA,IAAI,CAAC,IAAA,IAAQ,IAAA,CAAK,MAAA,KAAW,CAAA,SAAU,EAAE,KAAA,EAAO,CAAA,EAAG,GAAA,EAAK,CAAA,EAAE;AAG1D,IAAA,MAAM,aAAa,IAAA,CAAK,SAAA;AAAA,MACtB,CAAC,IAAA,KAAS,IAAA,CAAK,MAAA,IAAU,KAAK,MAAA,KAAW;AAAA,KAC3C;AAGA,IAAA,MAAM,WAAW,IAAA,CAAK,MAAA;AAAA,MACpB,CAAC,SAAS,IAAA,EAAM,GAAA,KACd,KAAK,MAAA,IAAU,IAAA,CAAK,MAAA,KAAW,CAAA,GAAI,GAAA,GAAM,OAAA;AAAA,MAC3C;AAAA,KACF;AAEA,IAAA,OAAO;AAAA,MACL,KAAA,EAAO,UAAA,KAAe,EAAA,GAAK,CAAA,GAAI,UAAA;AAAA,MAC/B,GAAA,EAAK,QAAA,KAAa,EAAA,GAAK,IAAA,CAAK,SAAS,QAAA,GAAW;AAAA,KAClD;AAAA,EACF,CAAA;AAGA,EAAA,MAAM,gBAAA,GAAmBC,gBAAQ,MAAM;AACrC,IAAA,MAAM,OAAA,GAAU,MAAA,CAAO,IAAA,CAAK,WAAW,CAAA;AACvC,IAAA,OAAO;AAAA,MACL,EAAE,KAAA,EAAO,aAAA,EAAe,KAAA,EAAO,aAAA,EAAc;AAAA,MAC7C,GAAG,OAAA,CAAQ,GAAA,CAAI,CAAC,MAAA,MAAY;AAAA,QAC1B,KAAA,EAAO,MAAA;AAAA,QACP,KAAA,EAAO,OAAO,OAAA,CAAQ,OAAA,EAAS,EAAE,CAAA,CAAE,OAAA,CAAQ,SAAS,EAAE;AAAA,OACxD,CAAE;AAAA,KACJ;AAAA,EACF,CAAA,EAAG,CAAC,WAAW,CAAC,CAAA;AAIhB,EAAA,MAAM,eAAA,GAAkBA,gBAAQ,MAAM;AACpC,IAAA,IAAI,CAAC,cAAA,IAAkB,CAAC,cAAA,CAAe,UAAA,SAAmB,EAAC;AAC3D,IAAA,MAAM,EAAE,KAAA,EAAO,GAAA,EAAI,GAAI,mBAAA,CAAoB,eAAe,UAAU,CAAA;AACpE,IAAA,MAAM,WAAA,GAAc,cAAA,CAAe,UAAA,CAAW,KAAA,CAAM,OAAO,GAAG,CAAA;AAC9D,IAAA,OAAO,WAAA,CAAY,GAAA,CAAI,CAAC,IAAA,MAAU;AAAA,MAChC,IAAA,EAAM,kBAAA,CAAmB,IAAA,CAAK,IAAA,EAAM,iBAAiB,CAAA;AAAA,MACrD,GAAA,EAAK,QAAA,GAAW,IAAA,CAAK,GAAA,GAAM,IAAA,CAAK;AAAA,KAClC,CAAE,CAAA;AAAA,EACJ,CAAA,EAAG,CAAC,cAAA,EAAgB,iBAAA,EAAmB,QAAQ,CAAC,CAAA;AAGhD,EAAA,MAAM,kBAAA,GAAqBA,gBAAQ,MAAM;AACvC,IAAA,IAAI,CAAC,cAAA,IAAkB,CAAC,cAAA,CAAe,UAAA,SAAmB,EAAC;AAC3D,IAAA,MAAM,EAAE,KAAA,EAAO,GAAA,EAAI,GAAI,mBAAA,CAAoB,eAAe,UAAU,CAAA;AACpE,IAAA,MAAM,WAAA,GAAc,cAAA,CAAe,UAAA,CAAW,KAAA,CAAM,OAAO,GAAG,CAAA;AAC9D,IAAA,OAAO,WAAA,CAAY,GAAA,CAAI,CAAC,IAAA,MAAU;AAAA,MAChC,IAAA,EAAM,kBAAA,CAAmB,IAAA,CAAK,IAAA,EAAM,iBAAiB,CAAA;AAAA,MACrD,MAAA,EAAQ,KAAK,MAAA,IAAU;AAAA,KACzB,CAAE,CAAA;AAAA,EACJ,CAAA,EAAG,CAAC,cAAA,EAAgB,iBAAiB,CAAC,CAAA;AAItC,EAAA,MAAM,gBAAA,GAAmBA,gBAAQ,MAAM;AACrC,IAAA,IAAI,CAAC,cAAA,IAAkB,CAAC,cAAA,CAAe,UAAA,SAAmB,EAAC;AAC3D,IAAA,MAAM,EAAE,KAAA,EAAO,GAAA,EAAI,GAAI,mBAAA,CAAoB,eAAe,UAAU,CAAA;AACpE,IAAA,MAAM,WAAA,GAAc,cAAA,CAAe,UAAA,CAAW,KAAA,CAAM,OAAO,GAAG,CAAA;AAC9D,IAAA,OAAO,WAAA,CAAY,GAAA,CAAI,CAAC,IAAA,MAAU;AAAA,MAChC,IAAA,EAAM,kBAAA,CAAmB,IAAA,CAAK,IAAA,EAAM,iBAAiB,CAAA;AAAA,MACrD,IAAA,EAAM,EAAE,IAAA,CAAK,IAAA,IAAQ,CAAA;AAAA,KACvB,CAAE,CAAA;AAAA,EACJ,CAAA,EAAG,CAAC,cAAA,EAAgB,iBAAiB,CAAC,CAAA;AAGtC,EAAA,MAAM,eAAA,GAAkBA,gBAAQ,MAAM;AACpC,IAAA,QAAQ,iBAAA;AAAmB,MACzB,KAAK,KAAA;AACH,QAAA,OAAO,KAAA;AAAA,MACT,KAAK,IAAA;AACH,QAAA,OAAO,IAAA;AAAA,MACT,KAAK,IAAA;AACH,QAAA,OAAO,IAAA;AAAA,MACT;AACE,QAAA,OAAO,IAAA;AAAA;AACX,EACF,CAAA,EAAG,CAAC,iBAAiB,CAAC,CAAA;AAGtB,EAAA,MAAM,eAAe,cAAA,KAAmB,aAAA;AACxC,EAAA,MAAM,YAAA,GAAeA,gBAAQ,MAAM;AACjC,IAAA,IAAI,CAAC,SAAA,EAAW,EAAA,EAAI,OAAO,MAAA;AAE3B,IAAA,OAAOmN,gBAAA,CAAS,UAAU,EAAE,CAAA;AAAA,EAC9B,CAAA,EAAG,CAAC,SAAA,EAAW,EAAE,CAAC,CAAA;AAElB,EAAA,MAAM,EAAE,MAAA,EAAO,GAAI,YAAA,CAAa;AAAA,IAC9B,MAAA,EAAQ,CAAC,YAAA,IAAgB,cAAA,GAAiB,cAAA,GAAiB,MAAA;AAAA,IAC3D,UAAA,EAAY,eAAA;AAAA,IACZ,IAAA,EAAM,YAAY,IAAA,CAAK,KAAA,CAAM,UAAU,IAAA,CAAK,OAAA,EAAQ,GAAI,GAAI,CAAA,GAAI,MAAA;AAAA,IAChE,EAAA,EAAI,eAAe,IAAA,CAAK,KAAA,CAAM,aAAa,OAAA,EAAQ,GAAI,GAAI,CAAA,GAAI;AAAA,GAChE,CAAA;AAKD,EAAA,MAAM,iBAAA,GAAoBnN,gBAAQ,MAAM;AACtC,IAAA,IAAI,CAAC,cAAA,IAAkB,CAAC,cAAA,CAAe,UAAA,EAAY;AACjD,MAAA,OAAO,EAAC;AAAA,IACV;AAGA,IAAA,MAAM,EAAE,KAAA,EAAO,GAAA,EAAI,GAAI,mBAAA,CAAoB,eAAe,UAAU,CAAA;AACpE,IAAA,MAAM,kBAAA,GAAqB,cAAA,CAAe,UAAA,CAAW,KAAA,CAAM,OAAO,GAAG,CAAA;AAErE,IAAA,IAAI,kBAAA,CAAmB,MAAA,KAAW,CAAA,IAAK,MAAA,CAAO,WAAW,CAAA,EAAG;AAC1D,MAAA,OAAO,EAAC;AAAA,IACV;AAGA,IAAA,MAAM,QAAA,uBAAe,GAAA,EAAgC;AACrD,IAAA,MAAA,CAAO,OAAA,CAAQ,CAAC,CAAA,KAAM;AACpB,MAAA,MAAM,IAAA,GAAO,IAAI,IAAA,CAAK,CAAA,CAAE,YAAY,GAAI,CAAA;AACxC,MAAA,MAAM,aAAA,GAAgB,kBAAA;AAAA,QACpB,KAAK,WAAA,EAAY;AAAA,QACjB;AAAA,OACF;AACA,MAAA,QAAA,CAAS,GAAA,CAAI,eAAe,CAAC,CAAA;AAAA,IAC/B,CAAC,CAAA;AAGD,IAAA,MAAM,MAAA,GAAS,kBAAA,CAAmB,GAAA,CAAI,CAAC,WAAA,KAAgB;AACrD,MAAA,MAAM,aAAA,GAAgB,kBAAA;AAAA,QACpB,WAAA,CAAY,IAAA;AAAA,QACZ;AAAA,OACF;AACA,MAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,GAAA,CAAI,aAAa,CAAA;AAExC,MAAA,OAAO;AAAA,QACL,IAAA,EAAM,aAAA;AAAA,QACN,IAAA,EAAM,OAAO,IAAA,IAAQ,IAAA;AAAA,QACrB,IAAA,EAAM,OAAO,IAAA,IAAQ,IAAA;AAAA,QACrB,GAAA,EAAK,OAAO,GAAA,IAAO,IAAA;AAAA,QACnB,KAAA,EAAO,OAAO,KAAA,IAAS;AAAA,OACzB;AAAA,IACF,CAAC,CAAA;AAED,IAAA,OAAO,MAAA;AAAA,EACT,CAAA,EAAG,CAAC,MAAA,EAAQ,cAAA,EAAgB,iBAAiB,CAAC,CAAA;AAG9C,EAAA,MAAM,SAAA,GAAYA,gBAAQ,MAAM;AAC9B,IAAA,IAAI,CAAC,cAAA,IAAkB,CAAC,cAAA,CAAe,UAAA,SAAmB,EAAC;AAC3D,IAAA,MAAM,EAAE,KAAA,EAAO,GAAA,EAAI,GAAI,mBAAA,CAAoB,eAAe,UAAU,CAAA;AACpE,IAAA,MAAM,WAAA,GAAc,cAAA,CAAe,UAAA,CAAW,KAAA,CAAM,OAAO,GAAG,CAAA;AAC9D,IAAA,OAAO,WAAA,CAAY,GAAA,CAAI,CAAC,IAAA,MAAU;AAAA,MAChC,IAAA,EAAM,kBAAA,CAAmB,IAAA,CAAK,IAAA,EAAM,iBAAiB,CAAA;AAAA,MACrD,KAAK,IAAA,CAAK,GAAA;AAAA,MACV,UAAU,IAAA,CAAK,QAAA;AAAA,MACf,MAAA,EAAQ,KAAK,MAAA,IAAU,CAAA;AAAA,MACvB,IAAA,EAAM,KAAK,IAAA,IAAQ;AAAA,KACrB,CAAE,CAAA;AAAA,EACJ,CAAA,EAAG,CAAC,cAAA,EAAgB,iBAAiB,CAAC,CAAA;AAEtC,EAAA,MAAM,cAAA,GAAiB,CAAC,KAAA,KAAkB;AACxC,IAAA,MAAM,aAAa,KAAA,IAAS,CAAA;AAC5B,IAAA,uBACEoB,eAAAA;AAAA,MAACU,cAAAA;AAAA,MAAA;AAAA,QACC,EAAA,EAAG,MAAA;AAAA,QACH,MAAA,EAAO,UAAA;AAAA,QACP,SAAA,EAAW,aAAa,qBAAA,GAAwB,mBAAA;AAAA,QAE/C,QAAA,EAAA;AAAA,UAAA,KAAA,CAAM,QAAQ,CAAC,CAAA;AAAA,UAAE;AAAA;AAAA;AAAA,KACpB;AAAA,EAEJ,CAAA;AAGA,EAAA,MAAM,YAAA,GAA8C9B,eAAAA;AAAA,IAClD,MAAM;AAAA,MACJ;AAAA,QACE,KAAA,EAAO,EAAE,aAAa,CAAA;AAAA,QACtB,SAAA,EAAW,MAAA;AAAA,QACX,KAAA,EAAO,GAAA;AAAA,QACP,KAAA,EAAO;AAAA,OACT;AAAA,MACA;AAAA,QACE,KAAA,EAAO,EAAE,oCAAoC,CAAA;AAAA,QAC7C,SAAA,EAAW,KAAA;AAAA,QACX,KAAA,EAAO,OAAA;AAAA,QACP,KAAA,EAAO,GAAA;AAAA,QACP,MAAA,EAAQ;AAAA,OACV;AAAA,MACA;AAAA,QACE,KAAA,EAAO,EAAE,sCAAsC,CAAA;AAAA,QAC/C,SAAA,EAAW,UAAA;AAAA,QACX,KAAA,EAAO,OAAA;AAAA,QACP,KAAA,EAAO,GAAA;AAAA,QACP,MAAA,EAAQ;AAAA,OACV;AAAA,MACA;AAAA,QACE,KAAA,EAAO,EAAE,oCAAoC,CAAA;AAAA,QAC7C,SAAA,EAAW,QAAA;AAAA,QACX,KAAA,EAAO,OAAA;AAAA,QACP,KAAA,EAAO,GAAA;AAAA,QACP,MAAA,EAAQ,CAAC,KAAA,KAAkB;AACzB,UAAA,uBAAOC,eAAC6B,cAAAA,EAAA,EAAK,IAAG,MAAA,EAAQ,QAAA,EAAA,iBAAA,CAAkB,KAAK,CAAA,EAAE,CAAA;AAAA,QACnD;AAAA,OACF;AAAA,MACA;AAAA,QACE,KAAA,EAAO,EAAE,kCAAkC,CAAA;AAAA,QAC3C,SAAA,EAAW,MAAA;AAAA,QACX,KAAA,EAAO,OAAA;AAAA,QACP,KAAA,EAAO,GAAA;AAAA,QACP,MAAA,EAAQ,CAAC,KAAA,KAAkB;AACzB,UAAA,uBAAO7B,eAAC6B,cAAAA,EAAA,EAAK,IAAG,MAAA,EAAQ,QAAA,EAAA,iBAAA,CAAkB,KAAK,CAAA,EAAE,CAAA;AAAA,QACnD;AAAA;AACF,KACF;AAAA,IACA,CAAC,CAAC;AAAA,GACJ;AAGA,EAAA,MAAM,iBAAA,GAAoB,CAAC,KAAA,KAA0B;AACnD,IAAA,MAAM,gBAAgB,CAAC,EAAA,EAAI,GAAA,EAAK,GAAA,EAAK,KAAK,GAAG,CAAA;AAC7C,IAAA,IAAI,KAAA,GAAQ,CAAA;AACZ,IAAA,IAAI,GAAA,GAAM,KAAA;AACV,IAAA,OAAO,GAAA,IAAO,GAAA,IAAQ,KAAA,GAAQ,aAAA,CAAc,SAAS,CAAA,EAAG;AACtD,MAAA,GAAA,IAAO,GAAA;AACP,MAAA,KAAA,EAAA;AAAA,IACF;AACA,IAAA,MAAM,gBAAgB,GAAA,IAAO,EAAA,GAAK,CAAA,GAAI,GAAA,IAAO,MAAM,CAAA,GAAI,CAAA;AACvD,IAAA,MAAM,OAAA,GAAU,UAAA,CAAW,GAAA,CAAI,OAAA,CAAQ,aAAa,CAAC,CAAA;AACrD,IAAA,OAAO,CAAA,EAAG,OAAO,CAAA,EAAG,aAAA,CAAc,KAAK,CAAC,CAAA,CAAA;AAAA,EAC1C,CAAA;AAGA,EAAA,MAAM,iBAAA,GAAoB9B,gBAAQ,MAAM;AACtC,IAAA,IAAI,CAAC,MAAA,IAAU,MAAA,CAAO,MAAA,KAAW,CAAA,SAAU,EAAC;AAE5C,IAAA,MAAM,SAAA,uBAAgB,GAAA,EAGpB;AAEF,IAAA,MAAA,CAAO,OAAA,CAAQ,CAAC,KAAA,KAAqB;AACnC,MAAA,MAAM,SAAS,KAAA,CAAM,MAAA;AACrB,MAAA,IAAI,CAAC,SAAA,CAAU,GAAA,CAAI,MAAM,CAAA,EAAG;AAC1B,QAAA,SAAA,CAAU,GAAA,CAAI,MAAA,EAAQ,EAAE,GAAA,EAAK,CAAA,EAAG,MAAA,EAAQ,CAAA,EAAG,IAAA,EAAM,CAAA,EAAG,MAAA,EAAQ,CAAA,EAAG,CAAA;AAAA,MACjE;AAEA,MAAA,MAAM,OAAA,GAAU,SAAA,CAAU,GAAA,CAAI,MAAM,CAAA;AACpC,MAAA,MAAM,WAAA,GAAc,KAAA,CAAM,iBAAA,GAAoB,KAAA,CAAM,cAAA;AAEpD,MAAA,OAAA,CAAQ,GAAA,IAAO,MAAM,YAAA,IAAgB,CAAA;AACrC,MAAA,OAAA,CAAQ,MAAA,IAAU,WAAA;AAClB,MAAA,OAAA,CAAQ,IAAA,IAAQ,MAAM,GAAA,IAAO,CAAA;AAC7B,MAAA,OAAA,CAAQ,MAAA,IAAU,CAAA;AAAA,IACpB,CAAC,CAAA;AAGD,IAAA,OAAO,KAAA,CAAM,IAAA,CAAK,SAAA,CAAU,OAAA,EAAS,CAAA,CAClC,GAAA,CAAI,CAAC,CAAC,MAAA,EAAQ,IAAI,CAAA,MAAO;AAAA,MACxB,MAAA;AAAA,MACA,GAAG;AAAA,KACL,CAAE,CAAA,CACD,IAAA,CAAK,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,CAAE,GAAA,GAAM,CAAA,CAAE,GAAG,CAAA,CAC5B,KAAA,CAAM,GAAG,EAAE,CAAA;AAAA,EAChB,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAEX,EAAA,uBACEC,cAAAA;AAAA,IAAC0B,cAAAA;AAAA,IAAA;AAAA,MACC,KAAA,kBACE1B,cAAAA,CAACyH,aAAAA,EAAA,EACC,QAAA,kBAAAzH,cAAAA,CAAC6E,wBAAAA,CAAM,QAAA,EAAN,EAAe,QAAA,EAAU,IAAA,EACxB,QAAA,kBAAA7E,cAAAA;AAAA,QAAC2H,gBAAAA;AAAA,QAAA;AAAA,UACC,cAAA;AAAA,UACA,WAAA;AAAA,UACA,MAAA;AAAA,UACA,KAAA,EAAO,EAAE,6BAA6B,CAAA;AAAA,UACtC,WAAA;AAAA,UACA;AAAA;AAAA,SAEJ,CAAA,EACF,CAAA;AAAA,MAGF,0BAAAxG,eAAAA,CAACiB,cAAAA,EAAA,EAAK,IAAA,EAAM,CAAA,EAAG,KAAK,CAAA,EAClB,QAAA,EAAA;AAAA,wBAAAjB,gBAACC,cAAAA,EAAA,EAAK,GAAA,EAAK,CAAA,EAAG,WAAU,KAAA,EAEtB,QAAA,EAAA;AAAA,0BAAAD,eAAAA,CAACsG,aAAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EACb,QAAA,EAAA;AAAA,4BAAAzH,cAAAA,CAAC6B,cAAAA,EAAA,EAAK,IAAA,EAAK,IAAA,EAAK,SAAA,EAAW,EAAA,EAAI,SAAA,EAAU,UAAA,EACtC,QAAA,EAAA,CAAA,CAAE,eAAe,CAAA,EACpB,CAAA;AAAA,4BACA7B,cAAAA;AAAA,cAAC,cAAA;AAAA,cAAA;AAAA,gBACC,OAAO,cAAA,IAAkB,EAAA;AAAA,gBACzB,aAAA,EAAe,CAAC,KAAA,KAAkB,iBAAA,CAAkB,KAAK,CAAA;AAAA,gBACzD,OAAA,EAAS,gBAAA;AAAA,gBACT,WAAA,EAAa,EAAE,eAAe;AAAA;AAAA;AAChC,WAAA,EACF,CAAA;AAAA,0BAGAmB,eAAAA,CAACsG,aAAAA,EAAA,EAAI,WAAU,cAAA,EACb,QAAA,EAAA;AAAA,4BAAAzH,cAAAA,CAAC6B,cAAAA,EAAA,EAAK,IAAA,EAAK,IAAA,EAAK,SAAA,EAAW,EAAA,EAAI,SAAA,EAAU,UAAA,EACtC,QAAA,EAAA,CAAA,CAAE,yCAAyC,CAAA,EAC9C,CAAA;AAAA,4BACA7B,cAAAA;AAAA,cAACgM,gBAAAA,CAAO,OAAA;AAAA,cAAP;AAAA,gBACC,KAAA,EAAO,iBAAA;AAAA,gBACP,aAAA,EAAe,CAAC,KAAA,KACd,oBAAA,CAAqB,KAA0B,CAAA;AAAA,gBAEjD,OAAA,EAAS,sBAAA,CAAuB,GAAA,CAAI,CAAC,IAAA,MAAU;AAAA,kBAC7C,OACE,IAAA,KAAS,KAAA,GACL,QAAA,GACA,IAAA,KAAS,OACP,QAAA,GACA,OAAA;AAAA,kBACR,KAAA,EAAO;AAAA,iBACT,CAAE,CAAA;AAAA,gBACF,UAAA,EAAY,EAAE,OAAA,EAASjH,YAAAA,CAAG,gBAAgB,CAAA;AAAE;AAAA;AAC9C,WAAA,EACF;AAAA,SAAA,EACF,CAAA;AAAA,wBAEA/E,cAAAA,CAACkC,iBAAAA,EAAA,EAAQ,SAAA,EAAU,yBAAA,EAA0B,WAAW,CAAA,EAAG,CAAA;AAAA,wBAE3Df,eAAAA,CAACsG,aAAAA,EAAA,EAAI,IAAI,CAAA,EAEP,QAAA,EAAA;AAAA,0BAAAtG,eAAAA,CAACiB,gBAAA,EAAK,IAAA,EAAM,GAAG,GAAA,EAAK,CAAA,EAAG,IAAI,CAAA,EACzB,QAAA,EAAA;AAAA,4BAAApC,cAAAA;AAAA,cAACyH,aAAAA;AAAA,cAAA;AAAA,gBACC,QAAA,EAAS,SAAA;AAAA,gBACT,CAAA,EAAE,IAAA;AAAA,gBACF,EAAA,EAAI,CAAA;AAAA,gBACJ,EAAA,EAAI,CAAA;AAAA,gBACJ,KAAA,EAAO,GAAA;AAAA,gBACP,MAAA,EAAM,IAAA;AAAA,gBACN,WAAA,EAAa,CAAA;AAAA,gBAGb,QAAA,kBAAAzH,cAAAA;AAAA,kBAAC4B,mBAAAA;AAAA,kBAAA;AAAA,oBACC,KAAA,EAAM,mBAAA;AAAA,oBACN,UAAA,EAAY,EAAE,QAAA,EAAU,IAAA,EAAM,gBAAgB,IAAA,EAAK;AAAA,oBAElD,QAAA,EAAA,eAAA,GAAkB,eAAA,CAAgB,QAAA,CAAS,OAAA,CAAQ,CAAC,CAAA,GAAI;AAAA;AAAA;AAC3D;AAAA,aACF;AAAA,4BACA5B,cAAAA;AAAA,cAACyH,aAAAA;AAAA,cAAA;AAAA,gBACC,QAAA,EAAS,SAAA;AAAA,gBACT,CAAA,EAAE,IAAA;AAAA,gBACF,EAAA,EAAI,CAAA;AAAA,gBACJ,EAAA,EAAI,CAAA;AAAA,gBACJ,KAAA,EAAO,GAAA;AAAA,gBACP,MAAA,EAAM,IAAA;AAAA,gBACN,WAAA,EAAa,CAAA;AAAA,gBAGb,QAAA,kBAAAzH,cAAAA;AAAA,kBAAC4B,mBAAAA;AAAA,kBAAA;AAAA,oBACC,KAAA,EAAO,EAAE,uCAAuC,CAAA;AAAA,oBAChD,UAAA,EAAY,EAAE,cAAA,EAAgB,KAAA,EAAM;AAAA,oBAEnC,QAAA,EAAA,eAAA,GAAkB,eAAA,CAAgB,SAAA,CAAU,OAAA,CAAQ,CAAC,CAAA,GAAI;AAAA;AAAA;AAC5D;AAAA,aACF;AAAA,4BACA5B,cAAAA;AAAA,cAACyH,aAAAA;AAAA,cAAA;AAAA,gBACC,QAAA,EAAS,SAAA;AAAA,gBACT,CAAA,EAAE,IAAA;AAAA,gBACF,EAAA,EAAI,CAAA;AAAA,gBACJ,EAAA,EAAI,CAAA;AAAA,gBACJ,KAAA,EAAO,GAAA;AAAA,gBACP,MAAA,EAAM,IAAA;AAAA,gBACN,WAAA,EAAa,CAAA;AAAA,gBAGb,QAAA,kBAAAzH,cAAAA;AAAA,kBAAC4B,mBAAAA;AAAA,kBAAA;AAAA,oBACC,KAAA,EAAM,iBAAA;AAAA,oBACN,UAAA,EAAY,EAAE,QAAA,EAAU,IAAA,EAAM,gBAAgB,IAAA,EAAK;AAAA,oBAElD,QAAA,EAAA,eAAA,GAAkB,eAAA,CAAgB,QAAA,CAAS,OAAA,CAAQ,CAAC,CAAA,GAAI;AAAA;AAAA;AAC3D;AAAA,aACF;AAAA,4BACA5B,cAAAA;AAAA,cAACyH,aAAAA;AAAA,cAAA;AAAA,gBACC,QAAA,EAAS,SAAA;AAAA,gBACT,CAAA,EAAE,IAAA;AAAA,gBACF,EAAA,EAAI,CAAA;AAAA,gBACJ,EAAA,EAAI,CAAA;AAAA,gBACJ,KAAA,EAAO,GAAA;AAAA,gBACP,MAAA,EAAM,IAAA;AAAA,gBACN,WAAA,EAAa,CAAA;AAAA,gBAGb,QAAA,kBAAAzH,cAAAA,CAAC4B,mBAAAA,EAAA,EAAU,OAAO,CAAA,CAAE,yCAAyC,CAAA,EAC1D,QAAA,EAAA,eAAA,GACG,eAAA,CAAgB,WAAA,CAAY,OAAA,CAAQ,CAAC,IACrC,IAAA,EACN;AAAA;AAAA,aACF;AAAA,4BACA5B,cAAAA;AAAA,cAACyH,aAAAA;AAAA,cAAA;AAAA,gBACC,QAAA,EAAS,SAAA;AAAA,gBACT,CAAA,EAAE,IAAA;AAAA,gBACF,EAAA,EAAI,CAAA;AAAA,gBACJ,EAAA,EAAI,CAAA;AAAA,gBACJ,KAAA,EAAO,GAAA;AAAA,gBACP,MAAA,EAAM,IAAA;AAAA,gBACN,WAAA,EAAa,CAAA;AAAA,gBAGb,QAAA,kBAAAzH,eAAC4B,mBAAAA,EAAA,EAAU,OAAM,eAAA,EACd,QAAA,EAAA,eAAA,mBACC5B,cAAAA,CAAC,eAAA,EAAA,EAAgB,YAAY,eAAA,CAAgB,UAAA,EAAY,oBAEzDA,cAAAA,CAAC,SAAI,SAAA,EAAU,iBAAA,EAAkB,gBAAE,CAAA,EAEvC;AAAA;AAAA;AACF,WAAA,EACF,CAAA;AAAA,0BAGAmB,eAAAA,CAACC,cAAAA,EAAA,EAAK,GAAA,EAAK,CAAA,EAAG,IAAI,CAAA,EAChB,QAAA,EAAA;AAAA,4BAAApB,cAAAA;AAAA,cAAC,QAAA;AAAA,cAAA;AAAA,gBACC,OAAA,EAAS,MAAM,WAAA,CAAY,OAAA,aAAc;AAAA,gBACzC,SAAA,EAAW+E,YAAAA;AAAA,kBACT,gFAAA;AAAA,kBACA,QAAA,KAAa,sBACT,sCAAA,GACA;AAAA,iBACN;AAAA,gBACD,QAAA,EAAA;AAAA;AAAA,aAED;AAAA,4BACA/E,cAAAA;AAAA,cAAC,QAAA;AAAA,cAAA;AAAA,gBACC,OAAA,EAAS,MAAM,WAAA,CAAY,OAAA,aAAc;AAAA,gBACzC,SAAA,EAAW+E,YAAAA;AAAA,kBACT,gFAAA;AAAA,kBACA,QAAA,KAAa,sBACT,sCAAA,GACA;AAAA,iBACN;AAAA,gBACD,QAAA,EAAA;AAAA;AAAA;AAED,WAAA,EACF,CAAA;AAAA,UAGC,QAAA,KAAa,uCACZ5D,eAAAA,CAACiB,gBAAA,EAAK,IAAA,EAAM,CAAA,EAAG,GAAA,EAAK,CAAA,EAElB,QAAA,EAAA;AAAA,4BAAAjB,eAAAA,CAACsG,eAAA,EACC,QAAA,EAAA;AAAA,8BAAAtG,eAAAA,CAACU,gBAAA,EAAK,EAAA,EAAG,OAAM,IAAA,EAAK,IAAA,EAAK,WAAU,UAAA,EAChC,QAAA,EAAA;AAAA,gBAAA,mBAAA,CAAoB,iBAAiB,CAAA;AAAA,gBAAG,GAAA;AAAA,gBACxC,EAAE,yCAAyC;AAAA,eAAA,EAC9C,CAAA;AAAA,8BACAV,gBAACC,cAAAA,EAAA,EAAK,SAAQ,SAAA,EAAU,SAAA,EAAU,QAAA,EAAS,SAAA,EAAU,UAAA,EACnD,QAAA,EAAA;AAAA,gCAAAD,eAAAA,CAACC,cAAAA,EAAA,EAAK,GAAA,EAAK,CAAA,EACT,QAAA,EAAA;AAAA,kCAAApB,cAAAA;AAAA,oBAAC,QAAA;AAAA,oBAAA;AAAA,sBACC,OAAA,EAAS,MAAM,WAAA,CAAY,KAAK,CAAA;AAAA,sBAChC,SAAA,EAAW+E,YAAAA;AAAA,wBACT,gFAAA;AAAA,wBACA,CAAC,WACG,sCAAA,GACA;AAAA,uBACN;AAAA,sBACD,QAAA,EAAA;AAAA;AAAA,mBAED;AAAA,kCACA/E,cAAAA;AAAA,oBAAC,QAAA;AAAA,oBAAA;AAAA,sBACC,OAAA,EAAS,MAAM,WAAA,CAAY,IAAI,CAAA;AAAA,sBAC/B,SAAA,EAAW+E,YAAAA;AAAA,wBACT,gFAAA;AAAA,wBACA,WACI,sCAAA,GACA;AAAA,uBACN;AAAA,sBACD,QAAA,EAAA;AAAA;AAAA;AAED,iBAAA,EACF,CAAA;AAAA,gCACA5D,eAAAA,CAACC,cAAAA,EAAA,EAAK,SAAA,EAAU,QAAA,EAAS,KAAK,CAAA,EAC5B,QAAA,EAAA;AAAA,kCAAApB,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,uCAAA,EAAwC,QAAA,EAAA,YAAA,EAEzD,CAAA;AAAA,kCACAA,cAAAA;AAAA,oBAACiM,gBAAAA;AAAA,oBAAA;AAAA,sBACC,OAAA,EAAS,iBAAA;AAAA,sBACT,eAAA,EAAiB;AAAA;AAAA;AACnB,iBAAA,EACF;AAAA,eAAA,EACF,CAAA;AAAA,8BACAjM,cAAAA;AAAA,gBAACyH,aAAAA;AAAA,gBAAA;AAAA,kBACC,CAAA,EAAE,IAAA;AAAA,kBACF,SAAA,EAAU,4CAAA;AAAA,kBAEV,QAAA,kBAAAzH,cAAAA;AAAA,oBAACmN,6BAAA;AAAA,oBAAA;AAAA,sBAEC,IAAA,EAAM,eAAA;AAAA,sBACN,iBAAA;AAAA,sBACA,SAAA,EACE,CAAC,cAAA,IACD,CAAC,eAAe,UAAA,IAChB,cAAA,CAAe,WAAW,MAAA,KAAW,CAAA;AAAA,sBAEvC,cAAA,EAAgB;AAAA,qBAAA;AAAA,oBARX,gBAAgB,iBAAiB,CAAA;AAAA;AASxC;AAAA;AACF,aAAA,EACF,CAAA;AAAA,4BAGAhM,eAAAA,CAACsG,aAAAA,EAAA,EACC,QAAA,EAAA;AAAA,8BAAAtG,eAAAA,CAACC,gBAAA,EAAK,OAAA,EAAQ,WAAU,SAAA,EAAU,QAAA,EAAS,WAAU,UAAA,EACnD,QAAA,EAAA;AAAA,gCAAAD,gBAACU,cAAAA,EAAA,EAAK,EAAA,EAAG,KAAA,EAAM,MAAK,IAAA,EACjB,QAAA,EAAA;AAAA,kBAAA,mBAAA,CAAoB,iBAAiB,CAAA;AAAA,kBAAG,GAAA;AAAA,kBACxC,EAAE,oCAAoC;AAAA,iBAAA,EACzC,CAAA;AAAA,gCACAV,eAAAA,CAACC,cAAAA,EAAA,EAAK,SAAA,EAAU,QAAA,EAAS,KAAK,CAAA,EAC5B,QAAA,EAAA;AAAA,kCAAApB,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,uCAAA,EAAwC,QAAA,EAAA,YAAA,EAEzD,CAAA;AAAA,kCACAA,cAAAA;AAAA,oBAACiM,gBAAAA;AAAA,oBAAA;AAAA,sBACC,OAAA,EAAS,oBAAA;AAAA,sBACT,eAAA,EAAiB;AAAA;AAAA;AACnB,iBAAA,EACF;AAAA,eAAA,EACF,CAAA;AAAA,8BACAjM,cAAAA;AAAA,gBAACyH,aAAAA;AAAA,gBAAA;AAAA,kBACC,CAAA,EAAE,IAAA;AAAA,kBACF,SAAA,EAAU,4CAAA;AAAA,kBAEV,QAAA,kBAAAzH,cAAAA;AAAA,oBAACoN,gCAAA;AAAA,oBAAA;AAAA,sBAEC,IAAA,EAAM,kBAAA;AAAA,sBACN,iBAAA;AAAA,sBACA,SAAA,EACE,CAAC,cAAA,IACD,CAAC,eAAe,UAAA,IAChB,cAAA,CAAe,WAAW,MAAA,KAAW,CAAA;AAAA,sBAEvC,cAAA,EAAgB;AAAA,qBAAA;AAAA,oBARX,gBAAgB,iBAAiB,CAAA;AAAA;AASxC;AAAA;AACF,aAAA,EACF,CAAA;AAAA,YAGC,CAAC,YAAA,oBACAjM,eAAAA,CAACsG,eAAA,EACC,QAAA,EAAA;AAAA,8BAAAtG,eAAAA,CAACU,gBAAA,EAAK,EAAA,EAAG,OAAM,IAAA,EAAK,IAAA,EAAK,WAAU,UAAA,EAChC,QAAA,EAAA;AAAA,gBAAA,mBAAA,CAAoB,iBAAiB,CAAA;AAAA,gBAAE;AAAA,eAAA,EAC1C,CAAA;AAAA,8BACA7B,cAAAA;AAAA,gBAACyH,aAAAA;AAAA,gBAAA;AAAA,kBACC,CAAA,EAAE,IAAA;AAAA,kBACF,SAAA,EAAU,4CAAA;AAAA,kBAEV,QAAA,kBAAAzH,cAAAA;AAAA,oBAACqN,+BAAA;AAAA,oBAAA;AAAA,sBAEC,IAAA,EAAM,iBAAA;AAAA,sBACN,iBAAA;AAAA,sBAGA,SAAA,EAAW,kBAAkB,MAAA,KAAW;AAAA,qBAAA;AAAA,oBALnC,CAAA,eAAA,EAAkB,iBAAiB,CAAA,CAAA,EAAI,cAAc,CAAA;AAAA;AAM5D;AAAA;AACF,aAAA,EACF,CAAA;AAAA,4BAIFlM,eAAAA,CAACsG,aAAAA,EAAA,EACC,QAAA,EAAA;AAAA,8BAAAtG,eAAAA,CAACC,gBAAA,EAAK,OAAA,EAAQ,WAAU,SAAA,EAAU,QAAA,EAAS,WAAU,UAAA,EACnD,QAAA,EAAA;AAAA,gCAAAD,gBAACU,cAAAA,EAAA,EAAK,EAAA,EAAG,KAAA,EAAM,MAAK,IAAA,EACjB,QAAA,EAAA;AAAA,kBAAA,mBAAA,CAAoB,iBAAiB,CAAA;AAAA,kBAAG,GAAA;AAAA,kBACxC,EAAE,kCAAkC;AAAA,iBAAA,EACvC,CAAA;AAAA,gCACAV,eAAAA,CAACC,cAAAA,EAAA,EAAK,SAAA,EAAU,QAAA,EAAS,KAAK,CAAA,EAC5B,QAAA,EAAA;AAAA,kCAAApB,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,uCAAA,EAAwC,QAAA,EAAA,YAAA,EAEzD,CAAA;AAAA,kCACAA,cAAAA;AAAA,oBAACiM,gBAAAA;AAAA,oBAAA;AAAA,sBACC,OAAA,EAAS,kBAAA;AAAA,sBACT,eAAA,EAAiB;AAAA;AAAA;AACnB,iBAAA,EACF;AAAA,eAAA,EACF,CAAA;AAAA,8BACAjM,cAAAA;AAAA,gBAACyH,aAAAA;AAAA,gBAAA;AAAA,kBACC,CAAA,EAAE,IAAA;AAAA,kBACF,SAAA,EAAU,4CAAA;AAAA,kBAEV,QAAA,kBAAAzH,cAAAA;AAAA,oBAACsN,8BAAA;AAAA,oBAAA;AAAA,sBAEC,IAAA,EAAM,gBAAA;AAAA,sBACN,iBAAA;AAAA,sBACA,SAAA,EACE,CAAC,cAAA,IACD,CAAC,eAAe,UAAA,IAChB,cAAA,CAAe,WAAW,MAAA,KAAW,CAAA;AAAA,sBAEvC,cAAA,EAAgB;AAAA,qBAAA;AAAA,oBARX,iBAAiB,iBAAiB,CAAA;AAAA;AASzC;AAAA;AACF,aAAA,EACF;AAAA,WAAA,EACF,CAAA;AAAA,UAID,QAAA,KAAa,uCACZtN,cAAAA,CAACyH,eAAA,EAAI,SAAA,EAAU,iBACb,QAAA,kBAAAzH,cAAAA;AAAA,YAAC2F,mBAAAA;AAAA,YAAA;AAAA,cACC,QAAA,EAAQ,IAAA;AAAA,cACR,OAAA,EAAS,YAAA;AAAA,cACT,UAAA,EAAY,SAAA;AAAA,cACZ,SAAA,kBACE3F,cAAAA,CAACyH,aAAAA,EAAA,EAAI,SAAA,EAAU,0BAAA,EACb,QAAA,kBAAAzH,cAAAA,CAAC6B,cAAAA,EAAA,EAAM,QAAA,EAAA,CAAA,CAAE,oCAAoC,GAAE,CAAA,EACjD;AAAA;AAAA,WAEJ,EACF,CAAA;AAAA,UAID,iBAAA,CAAkB,SAAS,CAAA,oBAC1BV,gBAACsG,aAAAA,EAAA,EAAI,IAAI,CAAA,EACP,QAAA,EAAA;AAAA,4BAAAzH,eAACkC,iBAAAA,EAAA,EAAQ,SAAA,EAAU,yBAAA,EAA0B,WAAW,CAAA,EAAG,CAAA;AAAA,4BAC3DlC,cAAAA,CAAC6B,cAAAA,EAAA,EAAK,IAAG,KAAA,EAAM,IAAA,EAAK,IAAA,EAAK,MAAA,EAAO,UAAA,EAAW,SAAA,EAAU,UAAA,EAClD,QAAA,EAAA,CAAA,CAAE,wCAAwC,CAAA,EAC7C,CAAA;AAAA,4BACA7B,cAAAA,CAACyH,aAAAA,EAAA,EAAI,SAAA,EAAU,uDACb,QAAA,kBAAAzH,cAAAA;AAAA,cAAC,eAAA;AAAA,cAAA;AAAA,gBACC,IAAA,EAAM,iBAAA;AAAA,gBACN,cAAA,EAAgB;AAAA;AAAA,aAClB,EACF;AAAA,WAAA,EACF;AAAA,SAAA,EAEJ;AAAA,OAAA,EACF;AAAA;AAAA,GACF;AAEJ,CAAA;ACpsBA,IAAMuN,eAAAA,GAAiB,CAAC,KAAA,KAA0B;AAChD,EAAA,IAAI,KAAA,IAAS,KAAK,OAAO,CAAA,CAAA,EAAA,CAAK,QAAQ,GAAA,EAAK,OAAA,CAAQ,CAAC,CAAC,CAAA,CAAA,CAAA;AACrD,EAAA,IAAI,KAAA,IAAS,KAAK,OAAO,CAAA,CAAA,EAAA,CAAK,QAAQ,GAAA,EAAK,OAAA,CAAQ,CAAC,CAAC,CAAA,CAAA,CAAA;AACrD,EAAA,IAAI,KAAA,IAAS,KAAK,OAAO,CAAA,CAAA,EAAA,CAAK,QAAQ,GAAA,EAAK,OAAA,CAAQ,CAAC,CAAC,CAAA,CAAA,CAAA;AACrD,EAAA,OAAO,CAAA,CAAA,EAAI,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAC,CAAA,CAAA;AAC7B,CAAA;AAEO,IAAM,wBAA8D,CAAC;AAAA,EAC1E,IAAA;AAAA,EACA;AACF,CAAA,KAAM;AACJ,EAAA,MAAM,EAAE,CAAA,EAAE,GAAIrM,0BAAAA,EAAe;AAE7B,EAAA,MAAM,WAAA,GAAcnB,eAAAA;AAAA,IAClB,MAAM,IAAA,CAAK,GAAA,CAAI,GAAG,KAAK,GAAA,CAAI,CAAC,IAAA,KAAS,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,GAAG,CAAC,GAAG,CAAC,CAAA;AAAA,IAC3D,CAAC,IAAI;AAAA,GACP;AAEA,EAAA,uBACEoB,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,0BAAA,EAEb,QAAA,EAAA;AAAA,oBAAAnB,cAAAA,CAAC,SAAI,SAAA,EAAU,2DAAA,EACb,0BAAAmB,eAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,+CAAA,EACb,QAAA,EAAA;AAAA,sBAAAnB,cAAAA,CAAC6B,cAAAA,EAAA,EAAK,IAAA,EAAK,IAAA,EAAK,SAAA,EAAW,EAAA,EAAI,MAAA,EAAO,UAAA,EACnC,QAAA,EAAA,CAAA,CAAE,gDAAgD,CAAA,EACrD,CAAA;AAAA,sBACA7B,cAAAA;AAAA,QAAC6B,cAAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,IAAA;AAAA,UACL,SAAA,EAAW,EAAA;AAAA,UACX,MAAA,EAAO,UAAA;AAAA,UACP,SAAA,EAAU,gBAAA;AAAA,UAET,YAAE,4CAA4C;AAAA;AAAA;AACjD,KAAA,EACF,CAAA,EACF,CAAA;AAAA,IAGC,IAAA,CAAK,GAAA,CAAI,CAAC,IAAA,KAAS;AAClB,MAAA,MAAM,UAAA,GAAa,KAAK,GAAA,IAAO,CAAA;AAC/B,MAAA,MAAM,WAAY,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,GAAG,IAAI,WAAA,GAAe,GAAA;AAEtD,MAAA,uBACEV,eAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UAEC,OAAA,EAAS,MAAM,cAAA,GAAiB,IAAA,CAAK,MAAM,CAAA;AAAA,UAC3C,SAAA,EAAU,6HAAA;AAAA,UAGV,QAAA,EAAA;AAAA,4BAAAnB,cAAAA,CAAC6B,cAAAA,EAAA,EAAK,IAAA,EAAK,IAAA,EAAK,QAAO,UAAA,EAAW,SAAA,EAAU,UAAA,EACzC,QAAA,EAAA,IAAA,CAAK,MAAA,EACR,CAAA;AAAA,4BAGAV,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,kHAAA,EACb,QAAA,EAAA;AAAA,8BAAAnB,cAAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBACC,SAAA,EAAU,wDAAA;AAAA,kBACV,KAAA,EAAO;AAAA,oBACL,KAAA,EAAO,GAAG,QAAQ,CAAA,CAAA,CAAA;AAAA,oBAClB,eAAA,EAAiB,aAAa,SAAA,GAAY;AAAA;AAC5C;AAAA,eACF;AAAA,8BACAmB,eAAAA;AAAA,gBAACU,cAAAA;AAAA,gBAAA;AAAA,kBACC,IAAA,EAAK,IAAA;AAAA,kBACL,MAAA,EAAO,UAAA;AAAA,kBACP,SAAA,EAAWkD,YAAAA;AAAA,oBACT,gCAAA;AAAA,oBACA,aAAa,qBAAA,GAAwB;AAAA,mBACvC;AAAA,kBAEC,QAAA,EAAA;AAAA,oBAAA,UAAA,GAAa,GAAA,GAAM,EAAA;AAAA,oBACnB,IAAA,CAAK,GAAA,CAAI,OAAA,CAAQ,CAAC;AAAA;AAAA;AAAA;AACrB,aAAA,EACF,CAAA;AAAA,4BAGA5D,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gFAAA,EACb,QAAA,EAAA;AAAA,8BAAAA,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iCAAA,EACb,QAAA,EAAA;AAAA,gCAAAnB,cAAAA,CAAC6B,gBAAA,EAAK,IAAA,EAAK,OAAM,SAAA,EAAW,EAAA,EACzB,QAAA,EAAA,CAAA,CAAE,+CAA+C,CAAA,EACpD,CAAA;AAAA,gCACA7B,cAAAA,CAAC6B,cAAAA,EAAA,EAAK,IAAA,EAAK,IAAA,EAAK,MAAA,EAAO,UAAA,EACpB,QAAA,EAAA0L,eAAAA,CAAe,IAAA,CAAK,MAAM,CAAA,EAC7B;AAAA,eAAA,EACF,CAAA;AAAA,8BACApM,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gDAAA,EACb,QAAA,EAAA;AAAA,gCAAAnB,cAAAA,CAAC6B,gBAAA,EAAK,IAAA,EAAK,OAAM,SAAA,EAAW,EAAA,EACzB,QAAA,EAAA,CAAA,CAAE,6CAA6C,CAAA,EAClD,CAAA;AAAA,gCACA7B,cAAAA,CAAC6B,cAAAA,EAAA,EAAK,MAAK,IAAA,EAAK,MAAA,EAAO,UAAA,EAAW,SAAA,EAAW,EAAA,EAC1C,QAAA,EAAA0L,eAAAA,CAAe,IAAA,CAAK,IAAI,CAAA,EAC3B;AAAA,eAAA,EACF;AAAA,aAAA,EACF;AAAA;AAAA,SAAA;AAAA,QAjDK,IAAA,CAAK;AAAA,OAkDZ;AAAA,IAEJ,CAAC,CAAA;AAAA,IAGA,KAAK,MAAA,KAAW,CAAA,oBACfvN,cAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,uDAAA,EACb,QAAA,kBAAAA,eAAC6B,cAAAA,EAAA,EAAK,MAAK,IAAA,EAAK,SAAA,EAAW,IACxB,QAAA,EAAA,CAAA,CAAE,oCAAoC,GACzC,CAAA,EACF;AAAA,GAAA,EAEJ,CAAA;AAEJ,CAAA;AC1FA,IAAM2L,gBAAAA,GAAoD,CAAC,EAAE,UAAA,EAAW,KAAM;AAC5E,EAAA,MAAM,aAAa,GAAA,GAAM,UAAA;AACzB,EAAA,uBACErM,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wDAAA,EACb,QAAA,EAAA;AAAA,oBAAAA,eAAAA,CAACU,cAAAA,EAAA,EAAK,MAAA,EAAO,UAAA,EAAY,QAAA,EAAA;AAAA,MAAA,UAAA,CAAW,QAAQ,CAAC,CAAA;AAAA,MAAE;AAAA,KAAA,EAAC,CAAA;AAAA,oBAChD7B,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,6BAA4B,QAAA,EAAA,GAAA,EAAC,CAAA;AAAA,oBAC7CmB,eAAAA,CAACU,cAAAA,EAAA,EAAK,QAAO,UAAA,EAAY,QAAA,EAAA;AAAA,MAAA,UAAA,CAAW,QAAQ,CAAC,CAAA;AAAA,MAAE;AAAA,KAAA,EAAC;AAAA,GAAA,EAClD,CAAA;AAEJ,CAAA;AAEO,IAAM,yBAAA,GAET,CAAC,KAAA,KAAU;AACb,EAAA,MAAM;AAAA,IACJ,cAAA;AAAA,IACA,iBAAA;AAAA,IACA,MAAA;AAAA,IACA,cAAA;AAAA,IACA,eAAA;AAAA,IACA,WAAA;AAAA,IACA,QAAA;AAAA,IACA,iBAAA;AAAA,IACA,oBAAA;AAAA,IACA,sBAAA;AAAA,IACA,cAAA;AAAA,IACA,MAAA;AAAA,IACA,SAAA;AAAA,IACA,QAAA;AAAA,IACA;AAAA,GACF,GAAI,KAAA;AACJ,EAAA,MAAM,EAAE,CAAA,EAAE,GAAIX,0BAAAA,EAAe;AAC7B,EAAA,MAAM,cAAciD,2BAAAA,EAAe;AACnC,EAAA,MAAM,CAAC,iBAAA,EAAmB,oBAAoB,CAAA,GAAIrE,iBAAS,IAAI,CAAA;AAC/D,EAAA,MAAM,CAAC,oBAAA,EAAsB,uBAAuB,CAAA,GAAIA,iBAAS,KAAK,CAAA;AACtE,EAAA,MAAM,CAAC,kBAAA,EAAoB,qBAAqB,CAAA,GAAIA,iBAAS,KAAK,CAAA;AAGlE,EAAA,MAAM,0BAAA,GAA6B,CAAC,IAAA,KAAgB;AAClD,IAAA,IAAI,CAAC,IAAA,IAAQ,IAAA,CAAK,MAAA,KAAW,GAAG,OAAO,CAAA;AACvC,IAAA,MAAM,KAAA,GAAQ,KAAK,SAAA,CAAU,CAAC,SAAS,IAAA,CAAK,MAAA,IAAU,IAAA,CAAK,MAAA,KAAW,CAAC,CAAA;AACvE,IAAA,OAAO,KAAA,KAAU,KAAK,CAAA,GAAI,KAAA;AAAA,EAC5B,CAAA;AAGA,EAAA,MAAM,gBAAA,GAAmBC,gBAAQ,MAAM;AACrC,IAAA,MAAM,OAAA,GAAU,MAAA,CAAO,IAAA,CAAK,WAAW,CAAA;AACvC,IAAA,OAAO;AAAA,MACL,EAAE,KAAA,EAAO,aAAA,EAAe,KAAA,EAAO,aAAA,EAAc;AAAA,MAC7C,GAAG,OAAA,CAAQ,GAAA,CAAI,CAAC,MAAA,MAAY;AAAA,QAC1B,KAAA,EAAO,MAAA;AAAA,QACP,KAAA,EAAO,OAAO,OAAA,CAAQ,OAAA,EAAS,EAAE,CAAA,CAAE,OAAA,CAAQ,SAAS,EAAE;AAAA,OACxD,CAAE;AAAA,KACJ;AAAA,EACF,CAAA,EAAG,CAAC,WAAW,CAAC,CAAA;AAIhB,EAAA,MAAM,eAAA,GAAkBA,gBAAQ,MAAM;AACpC,IAAA,IAAI,CAAC,cAAA,IAAkB,CAAC,cAAA,CAAe,UAAA,SAAmB,EAAC;AAC3D,IAAA,MAAM,SAAA,GAAY,0BAAA,CAA2B,cAAA,CAAe,UAAU,CAAA;AACtE,IAAA,MAAM,WAAA,GAAc,cAAA,CAAe,UAAA,CAAW,KAAA,CAAM,SAAS,CAAA;AAC7D,IAAA,OAAO,WAAA,CAAY,GAAA,CAAI,CAAC,IAAA,MAAU;AAAA,MAChC,IAAA,EAAM,kBAAA,CAAmB,IAAA,CAAK,IAAA,EAAM,iBAAiB,CAAA;AAAA,MACrD,GAAA,EAAK,QAAA,GAAW,IAAA,CAAK,GAAA,GAAM,IAAA,CAAK;AAAA,KAClC,CAAE,CAAA;AAAA,EACJ,CAAA,EAAG,CAAC,cAAA,EAAgB,iBAAA,EAAmB,QAAQ,CAAC,CAAA;AAGhD,EAAA,MAAM,kBAAA,GAAqBA,gBAAQ,MAAM;AACvC,IAAA,IAAI,CAAC,cAAA,IAAkB,CAAC,cAAA,CAAe,UAAA,SAAmB,EAAC;AAC3D,IAAA,MAAM,SAAA,GAAY,0BAAA,CAA2B,cAAA,CAAe,UAAU,CAAA;AACtE,IAAA,MAAM,WAAA,GAAc,cAAA,CAAe,UAAA,CAAW,KAAA,CAAM,SAAS,CAAA;AAC7D,IAAA,OAAO,WAAA,CAAY,GAAA,CAAI,CAAC,IAAA,MAAU;AAAA,MAChC,IAAA,EAAM,kBAAA,CAAmB,IAAA,CAAK,IAAA,EAAM,iBAAiB,CAAA;AAAA,MACrD,MAAA,EAAQ,KAAK,MAAA,IAAU;AAAA,KACzB,CAAE,CAAA;AAAA,EACJ,CAAA,EAAG,CAAC,cAAA,EAAgB,iBAAiB,CAAC,CAAA;AAItC,EAAA,MAAM,gBAAA,GAAmBA,gBAAQ,MAAM;AACrC,IAAA,IAAI,CAAC,cAAA,IAAkB,CAAC,cAAA,CAAe,UAAA,SAAmB,EAAC;AAC3D,IAAA,MAAM,SAAA,GAAY,0BAAA,CAA2B,cAAA,CAAe,UAAU,CAAA;AACtE,IAAA,MAAM,WAAA,GAAc,cAAA,CAAe,UAAA,CAAW,KAAA,CAAM,SAAS,CAAA;AAC7D,IAAA,OAAO,WAAA,CAAY,GAAA,CAAI,CAAC,IAAA,MAAU;AAAA,MAChC,IAAA,EAAM,kBAAA,CAAmB,IAAA,CAAK,IAAA,EAAM,iBAAiB,CAAA;AAAA,MACrD,IAAA,EAAM,EAAE,IAAA,CAAK,IAAA,IAAQ,CAAA;AAAA,KACvB,CAAE,CAAA;AAAA,EACJ,CAAA,EAAG,CAAC,cAAA,EAAgB,iBAAiB,CAAC,CAAA;AAGtC,EAAA,MAAM,eAAA,GAAkBA,gBAAQ,MAAM;AACpC,IAAA,QAAQ,iBAAA;AAAmB,MACzB,KAAK,KAAA;AACH,QAAA,OAAO,KAAA;AAAA,MACT,KAAK,IAAA;AACH,QAAA,OAAO,IAAA;AAAA,MACT,KAAK,IAAA;AACH,QAAA,OAAO,IAAA;AAAA,MACT;AACE,QAAA,OAAO,IAAA;AAAA;AACX,EACF,CAAA,EAAG,CAAC,iBAAiB,CAAC,CAAA;AAGtB,EAAA,MAAM,eAAe,cAAA,KAAmB,aAAA;AACxC,EAAA,MAAM,EAAE,MAAA,EAAO,GAAI,YAAA,CAAa;AAAA,IAC9B,MAAA,EAAQ,CAAC,YAAA,IAAgB,cAAA,GAAiB,cAAA,GAAiB,MAAA;AAAA,IAC3D,UAAA,EAAY,eAAA;AAAA,IACZ,IAAA,EAAM,YAAY,IAAA,CAAK,KAAA,CAAM,UAAU,IAAA,CAAK,OAAA,EAAQ,GAAI,GAAI,CAAA,GAAI,MAAA;AAAA,IAChE,EAAA,EAAI,YAAY,IAAA,CAAK,KAAA,CAAM,UAAU,EAAA,CAAG,OAAA,EAAQ,GAAI,GAAI,CAAA,GAAI;AAAA,GAC7D,CAAA;AAID,EAAA,MAAM,iBAAA,GAAoBA,gBAAQ,MAAM;AACtC,IAAA,IAAI,OAAO,MAAA,KAAW,CAAA,IAAK,CAAC,cAAA,IAAkB,CAAC,eAAe,UAAA,EAAY;AACxE,MAAA,OAAO,EAAC;AAAA,IACV;AAGA,IAAA,MAAM,SAAA,GAAY,0BAAA,CAA2B,cAAA,CAAe,UAAU,CAAA;AACtE,IAAA,MAAM,iBAAA,GAAoB,cAAA,CAAe,UAAA,CAAW,SAAS,CAAA;AAE7D,IAAA,IAAI,CAAC,iBAAA,EAAmB;AACtB,MAAA,OAAO,EAAC;AAAA,IACV;AAGA,IAAA,MAAM,gBAAA,GAAmB,IAAI,IAAA,CAAK,iBAAA,CAAkB,IAAI,CAAA;AAExD,IAAA,OAAO,MAAA,CACJ,MAAA,CAAO,CAAC,CAAA,KAAM;AACb,MAAA,MAAM,SAAA,GAAY,IAAI,IAAA,CAAK,CAAA,CAAE,YAAY,GAAI,CAAA;AAC7C,MAAA,OAAO,SAAA,IAAa,gBAAA;AAAA,IACtB,CAAC,CAAA,CACA,GAAA,CAAI,CAAC,CAAA,KAAM;AACV,MAAA,MAAM,IAAA,GAAO,IAAI,IAAA,CAAK,CAAA,CAAE,YAAY,GAAI,CAAA;AACxC,MAAA,MAAM,aAAA,GAAgB,kBAAA;AAAA,QACpB,KAAK,WAAA,EAAY;AAAA,QACjB;AAAA,OACF;AAEA,MAAA,OAAO;AAAA,QACL,IAAA,EAAM,aAAA;AAAA,QACN,MAAM,CAAA,CAAE,IAAA;AAAA,QACR,MAAM,CAAA,CAAE,IAAA;AAAA,QACR,KAAK,CAAA,CAAE,GAAA;AAAA,QACP,OAAO,CAAA,CAAE;AAAA,OACX;AAAA,IACF,CAAC,CAAA;AAAA,EACL,CAAA,EAAG,CAAC,MAAA,EAAQ,cAAA,EAAgB,iBAAiB,CAAC,CAAA;AAE9C,EAAA,MAAM,WAAA,GACJ,CAAC,cAAA,IACD,CAAC,eAAe,UAAA,IAChB,cAAA,CAAe,WAAW,MAAA,KAAW,CAAA;AAGvC,EAAA,MAAM,eAAA,GAAkBA,gBAAQ,MAAM;AACpC,IAAA,MAAM,QAA4D,EAAC;AAGnE,IAAA,IAAI,WAAA,IAAe,WAAA,CAAY,MAAA,GAAS,CAAA,EAAG;AACzC,MAAA,MAAM,kBAAkB,WAAA,CAAY,IAAA;AAAA,QAClC,CAAC,IAAA,KAAS,IAAA,CAAK,IAAA,KAAS;AAAA,OAC1B;AACA,MAAA,IAAI,eAAA,EAAiB;AACnB,QAAA,KAAA,CAAM,IAAA,CAAK;AAAA,UACT,IAAA,EAAM,OAAA;AAAA,UACN,IAAA,EAAM,WAAA;AAAA,UACN,OAAO,eAAA,CAAgB;AAAA,SACxB,CAAA;AAAA,MACH;AAAA,IACF;AAEA,IAAA,OAAO,KAAA;AAAA,EACT,CAAA,EAAG,CAAC,WAAW,CAAC,CAAA;AAEhB,EAAA,MAAM,YAAA,GAAe,CAAC,MAAA,KAAyC;AAC7D,IAAA,IAAI,MAAA,CAAO,IAAA,KAAS,WAAA,IAAe,QAAA,EAAU;AAC3C,MAAA,QAAA,CAAS,MAAM,CAAA;AAAA,IACjB;AAAA,EACF,CAAA;AAGA,EAAA,MAAM,iBAAA,GAAoBA,gBAAQ,MAAM;AACtC,IAAA,IAAI,CAAC,MAAA,IAAU,MAAA,CAAO,MAAA,KAAW,CAAA,SAAU,EAAC;AAE5C,IAAA,MAAM,SAAA,uBAAgB,GAAA,EAGpB;AAEF,IAAA,MAAA,CAAO,OAAA,CAAQ,CAAC,KAAA,KAAqB;AACnC,MAAA,MAAM,SAAS,KAAA,CAAM,MAAA;AACrB,MAAA,IAAI,CAAC,SAAA,CAAU,GAAA,CAAI,MAAM,CAAA,EAAG;AAC1B,QAAA,SAAA,CAAU,GAAA,CAAI,MAAA,EAAQ,EAAE,GAAA,EAAK,CAAA,EAAG,MAAA,EAAQ,CAAA,EAAG,IAAA,EAAM,CAAA,EAAG,MAAA,EAAQ,CAAA,EAAG,CAAA;AAAA,MACjE;AAEA,MAAA,MAAM,OAAA,GAAU,SAAA,CAAU,GAAA,CAAI,MAAM,CAAA;AACpC,MAAA,MAAM,WAAA,GAAc,KAAA,CAAM,iBAAA,GAAoB,KAAA,CAAM,cAAA;AAEpD,MAAA,OAAA,CAAQ,GAAA,IAAO,MAAM,YAAA,IAAgB,CAAA;AACrC,MAAA,OAAA,CAAQ,MAAA,IAAU,WAAA;AAClB,MAAA,OAAA,CAAQ,IAAA,IAAQ,MAAM,GAAA,IAAO,CAAA;AAC7B,MAAA,OAAA,CAAQ,MAAA,IAAU,CAAA;AAAA,IACpB,CAAC,CAAA;AAGD,IAAA,OAAO,KAAA,CAAM,IAAA,CAAK,SAAA,CAAU,OAAA,EAAS,CAAA,CAClC,GAAA,CAAI,CAAC,CAAC,MAAA,EAAQ,IAAI,CAAA,MAAO;AAAA,MACxB,MAAA;AAAA,MACA,GAAG;AAAA,KACL,CAAE,CAAA,CACD,IAAA,CAAK,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,CAAE,GAAA,GAAM,CAAA,CAAE,GAAG,CAAA,CAC5B,KAAA,CAAM,GAAG,EAAE,CAAA;AAAA,EAChB,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAEX,EAAA,uBACEoB,gBAAC,KAAA,EAAA,EAEC,QAAA,EAAA;AAAA,oBAAAA,eAAAA,CAACC,gBAAA,EAAK,GAAA,EAAK,GAAG,SAAA,EAAU,KAAA,EAAM,IAAI,CAAA,EAChC,QAAA,EAAA;AAAA,sBAAAD,eAAAA,CAACsG,aAAAA,EAAA,EAAI,SAAA,EAAU,YAAA,EACb,QAAA,EAAA;AAAA,wBAAAzH,cAAAA,CAAC6B,cAAAA,EAAA,EAAK,IAAA,EAAK,IAAA,EAAK,SAAA,EAAW,EAAA,EAAI,SAAA,EAAU,UAAA,EACtC,QAAA,EAAA,CAAA,CAAE,eAAe,CAAA,EACpB,CAAA;AAAA,wBACA7B,cAAAA;AAAA,UAAC,cAAA;AAAA,UAAA;AAAA,YACC,OAAO,cAAA,IAAkB,EAAA;AAAA,YACzB,aAAA,EAAe,CAAC,KAAA,KAAkB,iBAAA,CAAkB,KAAK,CAAA;AAAA,YACzD,OAAA,EAAS,gBAAA;AAAA,YACT,WAAA,EAAa,EAAE,eAAe;AAAA;AAAA;AAChC,OAAA,EACF,CAAA;AAAA,sBAEAmB,eAAAA,CAACsG,aAAAA,EAAA,EAAI,WAAU,YAAA,EACb,QAAA,EAAA;AAAA,wBAAAzH,cAAAA,CAAC6B,cAAAA,EAAA,EAAK,IAAA,EAAK,IAAA,EAAK,SAAA,EAAW,EAAA,EAAI,SAAA,EAAU,UAAA,EACtC,QAAA,EAAA,CAAA,CAAE,yCAAyC,CAAA,EAC9C,CAAA;AAAA,wBACA7B,cAAAA;AAAA,UAACgM,gBAAAA,CAAO,OAAA;AAAA,UAAP;AAAA,YACC,KAAA,EAAO,iBAAA;AAAA,YACP,aAAA,EAAe,CAAC,KAAA,KACd,oBAAA,CAAqB,KAA0B,CAAA;AAAA,YAEjD,OAAA,EAAS,sBAAA,CAAuB,GAAA,CAAI,CAAC,IAAA,MAAU;AAAA,cAC7C,OACE,IAAA,KAAS,KAAA,GAAQ,QAAA,GAAW,IAAA,KAAS,OAAO,QAAA,GAAW,OAAA;AAAA,cACzD,KAAA,EAAO;AAAA,aACT,CAAE;AAAA;AAAA;AACJ,OAAA,EACF;AAAA,KAAA,EACF,CAAA;AAAA,IAGC,eAAA,IAAmB,eAAA,CAAgB,MAAA,GAAS,CAAA,oBAC3ChM,eAACyH,aAAAA,EAAA,EAAI,EAAA,EAAI,CAAA,EACP,QAAA,kBAAAzH,cAAAA;AAAA,MAAC2D,oBAAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO,eAAA;AAAA,QACP,QAAA,EAAU,YAAA;AAAA,QACV,SAAA,EAAU;AAAA;AAAA,KACZ,EACF,CAAA;AAAA,oBAIF3D,cAAAA,CAACyH,aAAAA,EAAA,EAAI,EAAA,EAAI,GACP,QAAA,kBAAAtG,eAAAA;AAAA,MAAC+D,cAAAA;AAAA,MAAA;AAAA,QACC,OAAO,MAAA,IAAU,EAAA;AAAA,QACjB,YAAA,EAAA,IAAA;AAAA,QACA,UAAA,EAAY,EAAE,QAAA,EAAU,qBAAA,EAAuB,SAAS,WAAA,EAAY;AAAA,QACpE,aAAA,EAAe,CAAC,KAAA,KAAU,cAAA,CAAe,KAAmB,CAAA;AAAA,QAE5D,QAAA,EAAA;AAAA,0BAAAlF,cAAAA;AAAA,YAACmF,kBAAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO,EAAE,kBAAkB,CAAA;AAAA,cAC3B,KAAA,EAAA,IAAA;AAAA,cACA,SAAA,EAAU;AAAA;AAAA,WACZ;AAAA,0BACAnF,cAAAA;AAAA,YAACmF,kBAAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO,EAAE,kBAAkB,CAAA;AAAA,cAC3B,KAAA,EAAA,IAAA;AAAA,cACA,SAAA,EAAU;AAAA;AAAA,WACZ;AAAA,0BACAnF,cAAAA;AAAA,YAACmF,kBAAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO,EAAE,mBAAmB,CAAA;AAAA,cAC5B,KAAA,EAAA,KAAA;AAAA,cACA,SAAA,EAAU;AAAA;AAAA,WACZ;AAAA,0BACAnF,cAAAA;AAAA,YAACmF,kBAAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO,EAAE,mBAAmB,CAAA;AAAA,cAC5B,KAAA,EAAA,KAAA;AAAA,cACA,SAAA,EAAU;AAAA;AAAA;AACZ;AAAA;AAAA,KACF,EACF,CAAA;AAAA,oBAGAhE,gBAACiB,cAAAA,EAAA,EAAK,MAAM,CAAA,EAAG,GAAA,EAAK,CAAA,EAAG,EAAA,EAAI,CAAA,EACzB,QAAA,EAAA;AAAA,sBAAApC,cAAAA,CAAC0B,cAAAA,EAAA,EAAK,SAAA,EAAU,wDACd,QAAA,kBAAA1B,cAAAA;AAAA,QAAC4B,mBAAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAO,CAAA,EAAG,CAAA,CAAE,sCAAsC,CAAC,CAAA,QAAA,CAAA;AAAA,UACnD,YAAY,EAAE,QAAA,EAAU,MAAM,cAAA,EAAgB,IAAA,EAAM,IAAI,CAAA,EAAE;AAAA,UAC1D,UAAA,EAAY,EAAE,KAAA,EAAO,+BAAA,EAAgC;AAAA,UAEpD,2BAAiB,QAAA,IAAY;AAAA;AAAA,OAChC,EACF,CAAA;AAAA,sBACA5B,cAAAA,CAAC0B,cAAAA,EAAA,EAAK,SAAA,EAAU,wDACd,QAAA,kBAAA1B,cAAAA;AAAA,QAAC4B,mBAAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAO,EAAE,uCAAuC,CAAA;AAAA,UAChD,UAAA,EAAY,EAAE,EAAA,EAAI,CAAA,EAAE;AAAA,UACpB,UAAA,EAAY,EAAE,KAAA,EAAO,aAAA,EAAc;AAAA,UAElC,2BAAiB,SAAA,IAAa;AAAA;AAAA,OACjC,EACF,CAAA;AAAA,sBACA5B,cAAAA,CAAC0B,cAAAA,EAAA,EAAK,SAAA,EAAU,wDACd,QAAA,kBAAA1B,cAAAA;AAAA,QAAC4B,mBAAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAO,CAAA,EAAG,CAAA,CAAE,sCAAsC,CAAC,CAAA,MAAA,CAAA;AAAA,UACnD,YAAY,EAAE,QAAA,EAAU,MAAM,cAAA,EAAgB,IAAA,EAAM,IAAI,CAAA,EAAE;AAAA,UAC1D,UAAA,EAAY,EAAE,KAAA,EAAO,+BAAA,EAAgC;AAAA,UAEpD,2BAAiB,QAAA,IAAY;AAAA;AAAA,OAChC,EACF,CAAA;AAAA,sBACA5B,cAAAA,CAAC0B,cAAAA,EAAA,EAAK,SAAA,EAAU,wDACd,QAAA,kBAAA1B,cAAAA;AAAA,QAAC4B,mBAAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAO,EAAE,yCAAyC,CAAA;AAAA,UAClD,UAAA,EAAY,EAAE,EAAA,EAAI,CAAA,EAAE;AAAA,UACpB,UAAA,EAAY,EAAE,KAAA,EAAO,aAAA,EAAc;AAAA,UAElC,2BAAiB,WAAA,IAAe;AAAA;AAAA,OACnC,EACF,CAAA;AAAA,sBACA5B,cAAAA,CAAC0B,cAAAA,EAAA,EAAK,SAAA,EAAU,uEACd,QAAA,kBAAA1B,cAAAA;AAAA,QAAC4B,mBAAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAM,eAAA;AAAA,UACN,UAAA,EAAY,EAAE,KAAA,EAAO,+BAAA,EAAgC;AAAA,UAEpD,QAAA,EAAA,eAAA,mBACC5B,cAAAA,CAACwN,gBAAAA,EAAA,EAAgB,UAAA,EAAY,eAAA,CAAgB,YAAY,CAAA,GAEzD;AAAA;AAAA,OAEJ,EACF;AAAA,KAAA,EACF,CAAA;AAAA,oBAGArM,gBAACiB,cAAAA,EAAA,EAAK,MAAM,CAAA,EAAG,GAAA,EAAK,CAAA,EAAG,EAAA,EAAI,CAAA,EAEzB,QAAA,EAAA;AAAA,sBAAAjB,eAAAA,CAACsG,eAAA,EACC,QAAA,EAAA;AAAA,wBAAAtG,eAAAA,CAACC,gBAAA,EAAK,OAAA,EAAQ,WAAU,SAAA,EAAU,QAAA,EAAS,WAAU,UAAA,EACnD,QAAA,EAAA;AAAA,0BAAAD,gBAACU,cAAAA,EAAA,EAAK,EAAA,EAAG,KAAA,EAAM,MAAK,IAAA,EACjB,QAAA,EAAA;AAAA,YAAA,mBAAA,CAAoB,iBAAiB,CAAA;AAAA,YAAG,GAAA;AAAA,YACxC,EAAE,yCAAyC;AAAA,WAAA,EAC9C,CAAA;AAAA,0BACAV,eAAAA,CAACC,cAAAA,EAAA,EAAK,KAAK,CAAA,EACT,QAAA,EAAA;AAAA,4BAAApB,cAAAA;AAAA,cAAC,QAAA;AAAA,cAAA;AAAA,gBACC,OAAA,EAAS,MAAM,WAAA,CAAY,KAAK,CAAA;AAAA,gBAChC,SAAA,EAAW+E,YAAAA;AAAA,kBACT,mFAAA;AAAA,kBACA,CAAC,WACG,sCAAA,GACA;AAAA,iBACN;AAAA,gBACD,QAAA,EAAA;AAAA;AAAA,aAED;AAAA,4BACA/E,cAAAA;AAAA,cAAC,QAAA;AAAA,cAAA;AAAA,gBACC,OAAA,EAAS,MAAM,WAAA,CAAY,IAAI,CAAA;AAAA,gBAC/B,SAAA,EAAW+E,YAAAA;AAAA,kBACT,mFAAA;AAAA,kBACA,WACI,sCAAA,GACA;AAAA,iBACN;AAAA,gBACD,QAAA,EAAA;AAAA;AAAA,aAED;AAAA,4BACA/E,cAAAA,CAACkC,iBAAAA,EAAA,EAAQ,WAAU,UAAA,EAAW,CAAA;AAAA,4BAC9Bf,eAAAA,CAACC,cAAAA,EAAA,EAAK,SAAA,EAAU,QAAA,EAAS,KAAK,CAAA,EAC5B,QAAA,EAAA;AAAA,8BAAApB,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,wCAAA,EAAyC,QAAA,EAAA,MAAA,EAE1D,CAAA;AAAA,8BACAA,cAAAA;AAAA,gBAACiM,gBAAAA;AAAA,gBAAA;AAAA,kBACC,OAAA,EAAS,iBAAA;AAAA,kBACT,eAAA,EAAiB;AAAA;AAAA;AACnB,aAAA,EACF;AAAA,WAAA,EACF;AAAA,SAAA,EACF,CAAA;AAAA,wBACAjM,eAACyH,aAAAA,EAAA,EAAI,GAAE,IAAA,EAAK,SAAA,EAAU,8CACpB,QAAA,kBAAAzH,cAAAA;AAAA,UAACmN,6BAAAA;AAAA,UAAA;AAAA,YAEC,IAAA,EAAM,eAAA;AAAA,YACN,iBAAA;AAAA,YACA,QAAA,EAAU,IAAA;AAAA,YACV,SAAA,EAAW,WAAA;AAAA,YACX,cAAA,EAAgB;AAAA,WAAA;AAAA,UALX,cAAc,iBAAiB,CAAA;AAAA,SAMtC,EACF;AAAA,OAAA,EACF,CAAA;AAAA,sBAGAhM,eAAAA,CAACsG,aAAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAAtG,eAAAA,CAACC,gBAAA,EAAK,OAAA,EAAQ,WAAU,SAAA,EAAU,QAAA,EAAS,WAAU,UAAA,EACnD,QAAA,EAAA;AAAA,0BAAAD,gBAACU,cAAAA,EAAA,EAAK,EAAA,EAAG,KAAA,EAAM,MAAK,IAAA,EACjB,QAAA,EAAA;AAAA,YAAA,mBAAA,CAAoB,iBAAiB,CAAA;AAAA,YAAG,GAAA;AAAA,YACxC,EAAE,oCAAoC;AAAA,WAAA,EACzC,CAAA;AAAA,0BACAV,eAAAA,CAACC,cAAAA,EAAA,EAAK,SAAA,EAAU,QAAA,EAAS,KAAK,CAAA,EAC5B,QAAA,EAAA;AAAA,4BAAApB,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,wCAAA,EAAyC,QAAA,EAAA,MAAA,EAE1D,CAAA;AAAA,4BACAA,cAAAA;AAAA,cAACiM,gBAAAA;AAAA,cAAA;AAAA,gBACC,OAAA,EAAS,oBAAA;AAAA,gBACT,eAAA,EAAiB;AAAA;AAAA;AACnB,WAAA,EACF;AAAA,SAAA,EACF,CAAA;AAAA,wBACAjM,eAACyH,aAAAA,EAAA,EAAI,GAAE,IAAA,EAAK,SAAA,EAAU,8CACpB,QAAA,kBAAAzH,cAAAA;AAAA,UAACoN,gCAAAA;AAAA,UAAA;AAAA,YAEC,IAAA,EAAM,kBAAA;AAAA,YACN,iBAAA;AAAA,YACA,QAAA,EAAU,IAAA;AAAA,YACV,SAAA,EAAW,WAAA;AAAA,YACX,cAAA,EAAgB;AAAA,WAAA;AAAA,UALX,iBAAiB,iBAAiB,CAAA;AAAA,SAMzC,EACF;AAAA,OAAA,EACF,CAAA;AAAA,MAGC,CAAC,YAAA,oBACAjM,eAAAA,CAACsG,eAAA,EACC,QAAA,EAAA;AAAA,wBAAAtG,eAAAA,CAACU,gBAAA,EAAK,EAAA,EAAG,OAAM,IAAA,EAAK,IAAA,EAAK,WAAU,UAAA,EAChC,QAAA,EAAA;AAAA,UAAA,mBAAA,CAAoB,iBAAiB,CAAA;AAAA,UAAE;AAAA,SAAA,EAC1C,CAAA;AAAA,wBACA7B,eAACyH,aAAAA,EAAA,EAAI,GAAE,IAAA,EAAK,SAAA,EAAU,8CACpB,QAAA,kBAAAzH,cAAAA;AAAA,UAACqN,+BAAAA;AAAA,UAAA;AAAA,YAEC,IAAA,EAAM,iBAAA;AAAA,YACN,iBAAA;AAAA,YACA,QAAA,EAAU,IAAA;AAAA,YACV,SAAA,EAAW,kBAAkB,MAAA,KAAW;AAAA,WAAA;AAAA,UAJnC,CAAA,aAAA,EAAgB,iBAAiB,CAAA,CAAA,EAAI,cAAc,CAAA;AAAA,SAK1D,EACF;AAAA,OAAA,EACF,CAAA;AAAA,sBAIFlM,eAAAA,CAACsG,aAAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAAtG,eAAAA,CAACC,gBAAA,EAAK,OAAA,EAAQ,WAAU,SAAA,EAAU,QAAA,EAAS,WAAU,UAAA,EACnD,QAAA,EAAA;AAAA,0BAAAD,gBAACU,cAAAA,EAAA,EAAK,EAAA,EAAG,KAAA,EAAM,MAAK,IAAA,EACjB,QAAA,EAAA;AAAA,YAAA,mBAAA,CAAoB,iBAAiB,CAAA;AAAA,YAAG,GAAA;AAAA,YACxC,EAAE,kCAAkC;AAAA,WAAA,EACvC,CAAA;AAAA,0BACAV,eAAAA,CAACC,cAAAA,EAAA,EAAK,SAAA,EAAU,QAAA,EAAS,KAAK,CAAA,EAC5B,QAAA,EAAA;AAAA,4BAAApB,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,wCAAA,EAAyC,QAAA,EAAA,MAAA,EAE1D,CAAA;AAAA,4BACAA,cAAAA;AAAA,cAACiM,gBAAAA;AAAA,cAAA;AAAA,gBACC,OAAA,EAAS,kBAAA;AAAA,gBACT,eAAA,EAAiB;AAAA;AAAA;AACnB,WAAA,EACF;AAAA,SAAA,EACF,CAAA;AAAA,wBACAjM,eAACyH,aAAAA,EAAA,EAAI,GAAE,IAAA,EAAK,SAAA,EAAU,8CACpB,QAAA,kBAAAzH,cAAAA;AAAA,UAACsN,8BAAAA;AAAA,UAAA;AAAA,YAEC,IAAA,EAAM,gBAAA;AAAA,YACN,iBAAA;AAAA,YACA,QAAA,EAAU,IAAA;AAAA,YACV,SAAA,EAAW,WAAA;AAAA,YACX,cAAA,EAAgB;AAAA,WAAA;AAAA,UALX,eAAe,iBAAiB,CAAA;AAAA,SAMvC,EACF;AAAA,OAAA,EACF;AAAA,KAAA,EACF,CAAA;AAAA,IAGC,iBAAA,CAAkB,MAAA,GAAS,CAAA,oBAC1BnM,eAAAA,CAACsG,eAAA,EAAI,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,CAAA,EACd,QAAA,EAAA;AAAA,sBAAAzH,eAACkC,iBAAAA,EAAA,EAAQ,SAAA,EAAU,yBAAA,EAA0B,WAAW,CAAA,EAAG,CAAA;AAAA,sBAC3DlC,cAAAA,CAAC6B,cAAAA,EAAA,EAAK,IAAG,KAAA,EAAM,IAAA,EAAK,IAAA,EAAK,MAAA,EAAO,UAAA,EAAW,SAAA,EAAU,UAAA,EAClD,QAAA,EAAA,CAAA,CAAE,wCAAwC,CAAA,EAC7C,CAAA;AAAA,sBACA7B,cAAAA,CAACyH,aAAAA,EAAA,EAAI,SAAA,EAAU,uDACb,QAAA,kBAAAzH,cAAAA;AAAA,QAAC,qBAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAM,iBAAA;AAAA,UACN,cAAA,EAAgB;AAAA;AAAA,OAClB,EACF;AAAA,KAAA,EACF;AAAA,GAAA,EAEJ,CAAA;AAEJ,CAAA;AC9gBO,IAAM,0BAAyD,CAAC;AAAA,EACrE;AACF,CAAA,KAAM;AACJ,EAAA,MAAM,EAAE,QAAA,EAAS,GAAIQ,mBAAAA,EAAU;AAC/B,EAAA,MAAM,KAAA,GAAQ,2BAA2B,MAAM,CAAA;AAE/C,EAAA,IAAI,QAAA,EAAU;AACZ,IAAA,uBAAOR,cAAAA,CAAC,yBAAA,EAAA,EAA2B,GAAG,KAAA,EAAO,CAAA;AAAA,EAC/C;AAEA,EAAA,uBAAOA,cAAAA,CAAC,mBAAA,EAAA,EAAqB,GAAG,KAAA,EAAO,CAAA;AACzC,CAAA;ACbO,IAAM,wBAAkC,MAAM;AACnD,EAAA,uBACEA,cAAAA;AAAA,IAACyH,aAAAA;AAAA,IAAA;AAAA,MACC,CAAA,EAAG,CAAA;AAAA,MACH,EAAA,EAAI,CAAA;AAAA,MACJ,SAAA,EAAW,GAAA;AAAA,MACX,CAAA,EAAE,IAAA;AAAA,MACF,KAAA,EAAM,MAAA;AAAA,MACN,KAAA,EAAO;AAAA,QACL,SAAA,EAAW,GAAA;AAAA,QACX,SAAA,EAAW,IAAA;AAAA,QACX,QAAA,EAAU;AAAA,OACZ;AAAA,MAEA,QAAA,kBAAAzH,eAAC,uBAAA,EAAA,EAAwB;AAAA;AAAA,GAC3B;AAEJ,CAAA","file":"index.js","sourcesContent":["import React, { createContext, useContext, useState, useMemo } from \"react\";\nimport type { RouterAdapter } from \"@kodiak-finance/orderly-types\";\n\ntype LayoutContextValue = {\n sideOpen: boolean;\n onSideOpenChange: (open: boolean) => void;\n routerAdapter?: RouterAdapter;\n};\n\nconst LayoutContext = createContext<LayoutContextValue>({\n sideOpen: true,\n} as LayoutContextValue);\n\nexport const useLayoutContext = () => {\n return useContext(LayoutContext);\n};\n\nexport const LayoutProvider: React.FC<\n React.PropsWithChildren<{ routerAdapter?: RouterAdapter }>\n> = (props) => {\n const { routerAdapter, children } = props;\n const [sideOpen, setSideOpen] = useState(true);\n const memoizedValue = useMemo<LayoutContextValue>(\n () => ({\n sideOpen: sideOpen,\n onSideOpenChange: setSideOpen,\n routerAdapter: routerAdapter,\n }),\n [sideOpen, setSideOpen, routerAdapter],\n );\n return (\n <LayoutContext.Provider value={memoizedValue}>\n {children}\n </LayoutContext.Provider>\n );\n};\n","import { useCallback, useMemo } from \"react\";\nimport {\n useAccount,\n useCollateral,\n useLeverage,\n useLocalStorage,\n usePositionStream,\n useWalletConnector,\n useMaxWithdrawal,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { useAppContext } from \"@kodiak-finance/orderly-react-app\";\nimport { AccountStatusEnum } from \"@kodiak-finance/orderly-types\";\nimport { modal, useScreen } from \"@kodiak-finance/orderly-ui\";\nimport { LeverageWidgetWithDialogId } from \"@kodiak-finance/orderly-ui-leverage\";\nimport {\n DepositAndWithdrawWithDialogId,\n DepositAndWithdrawWithSheetId,\n TransferDialogId,\n TransferSheetId,\n} from \"@kodiak-finance/orderly-ui-transfer\";\n\nexport const useAssetScript = () => {\n const { connect, namespace } = useWalletConnector();\n const { state, isMainAccount } = useAccount();\n const { totalValue, freeCollateral } = useCollateral();\n const { wrongNetwork, disabledConnect } = useAppContext();\n const [data] = usePositionStream();\n const { curLeverage } = useLeverage();\n const [visible, setVisible] = useLocalStorage(\"orderly_assets_visible\", true);\n const { isMobile } = useScreen();\n const handleDomId = isMobile\n ? DepositAndWithdrawWithSheetId\n : DepositAndWithdrawWithDialogId;\n const subAccounts = state.subAccounts ?? [];\n\n const canTrade = useMemo(() => {\n return (\n !wrongNetwork &&\n !disabledConnect &&\n (state.status === AccountStatusEnum.EnableTrading ||\n state.status === AccountStatusEnum.EnableTradingWithoutConnected)\n );\n }, [state.status, wrongNetwork, disabledConnect]);\n\n const onLeverageEdit = () => {\n modal.show(LeverageWidgetWithDialogId);\n };\n\n const onDeposit = useCallback(() => {\n modal.show(handleDomId, { activeTab: \"deposit\" });\n }, [handleDomId]);\n\n const onWithdraw = useCallback(() => {\n modal.show(handleDomId, { activeTab: \"withdraw\" });\n }, [handleDomId]);\n\n const onTransfer = useCallback(() => {\n if (isMobile) {\n modal.show(TransferSheetId);\n } else {\n modal.show(TransferDialogId);\n }\n }, [isMobile]);\n\n const maxWithdrawAmount = useMaxWithdrawal(\"USDC\");\n\n return {\n canTrade,\n connect,\n portfolioValue: totalValue,\n freeCollateral,\n maxWithdrawAmount,\n unrealPnL: data.aggregated.total_unreal_pnl,\n unrealROI: data.totalUnrealizedROI,\n currentLeverage: curLeverage,\n onLeverageEdit,\n visible,\n wrongNetwork,\n toggleVisible: () => setVisible(!visible),\n onDeposit,\n onWithdraw,\n onTransfer,\n namespace,\n isMainAccount,\n hasSubAccount: subAccounts?.length > 0,\n } as const;\n};\n\nexport type AssetScriptReturn = ReturnType<typeof useAssetScript>;\n","import { FC } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n ArrowDownSquareFillIcon,\n ArrowLeftRightIcon,\n ArrowUpSquareFillIcon,\n Button,\n CardTitle,\n Flex,\n} from \"@kodiak-finance/orderly-ui\";\n\ntype Props = {\n disabled: boolean;\n onWithdraw?: () => void;\n onDeposit?: () => void;\n onTransfer?: () => void;\n isMainAccount?: boolean;\n hasSubAccount?: boolean;\n};\n\nexport const AssetsHeader: FC<Props> = (props) => {\n const { t } = useTranslation();\n\n return (\n <Flex justify={\"between\"}>\n <CardTitle>{t(\"common.overview\")}</CardTitle>\n <Flex gap={3}>\n {props.isMainAccount && (\n <Button\n disabled={props.disabled}\n size=\"md\"\n onClick={() => props.onDeposit?.()}\n icon={\n <ArrowDownSquareFillIcon className=\"oui-text-primary-contrast\" />\n }\n data-testid=\"oui-testid-portfolio-assets-deposit-btn\"\n >\n {t(\"common.deposit\")}\n </Button>\n )}\n {props.hasSubAccount && (\n <Button\n disabled={props.disabled}\n size=\"md\"\n color=\"secondary\"\n onClick={() => props.onTransfer?.()}\n icon={<ArrowLeftRightIcon className=\"oui-text-base-contrast\" />}\n >\n {t(\"common.transfer\")}\n </Button>\n )}\n {props.isMainAccount && (\n <Button\n disabled={props.disabled}\n size=\"md\"\n color=\"secondary\"\n onClick={() => props.onWithdraw?.()}\n icon={<ArrowUpSquareFillIcon className=\"oui-text-base-contrast\" />}\n data-testid=\"oui-testid-portfolio-assets-withdraw-btn\"\n >\n {t(\"common.withdraw\")}\n </Button>\n )}\n </Flex>\n </Flex>\n );\n};\n","import React, { FC } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n Card,\n Divider,\n Flex,\n Grid,\n Either,\n Statistic,\n Text,\n EyeIcon,\n gradientTextVariants,\n EditIcon,\n EyeCloseIcon,\n Tooltip,\n} from \"@kodiak-finance/orderly-ui\";\nimport { AuthGuard } from \"@kodiak-finance/orderly-ui-connector\";\nimport { AssetScriptReturn } from \"./assets.script\";\nimport { AssetsHeader } from \"./assetsHeader\";\n\nexport const AssetsUI: React.FC<\n AssetScriptReturn & { onConnectWallet?: () => void }\n> = (props) => {\n const { t } = useTranslation();\n return (\n <Card\n classNames={{ footer: \"oui-h-[48px]\", root: \"oui-h-[240px]\" }}\n title={\n <AssetsHeader\n disabled={!props.canTrade}\n isMainAccount={props.isMainAccount}\n onDeposit={props.onDeposit}\n onWithdraw={props.onWithdraw}\n onTransfer={props.onTransfer}\n hasSubAccount={props.hasSubAccount}\n />\n }\n >\n <>\n <Statistic\n label={\n <Flex gap={1}>\n <Text intensity={54}>{t(\"common.totalValue\")}</Text>\n <button\n onClick={() => {\n props.toggleVisible();\n }}\n data-testid=\"oui-testid-portfolio-assets-eye-btn\"\n >\n {props.visible ? (\n <EyeIcon size={16} color={\"white\"} />\n ) : (\n <EyeCloseIcon size={16} color={\"white\"} />\n )}\n </button>\n </Flex>\n }\n >\n <Either value={props.canTrade!} left={<NoValue />}>\n <Text.numeral\n visible={props.visible}\n unit=\"USDC\"\n // @ts-ignore\n style={{ \"--oui-gradient-angle\": \"45deg\" }}\n unitClassName=\"oui-text-base oui-text-base-contrast-80 oui-h-9 oui-ml-1\"\n className={gradientTextVariants({\n className: \"oui-font-bold oui-text-3xl\",\n color: \"brand\",\n })}\n >\n {props.portfolioValue ?? \"--\"}\n </Text.numeral>\n </Either>\n </Statistic>\n <Divider className=\"oui-my-4\" intensity={8} />\n <AuthGuard buttonProps={{ size: \"lg\", fullWidth: true }}>\n <AssetStatistic\n unrealROI={props.unrealROI}\n unrealPnL={props.unrealPnL}\n freeCollateral={props.freeCollateral}\n maxWithdrawAmount={props.maxWithdrawAmount}\n currentLeverage={props.currentLeverage}\n onLeverageEdit={props.onLeverageEdit}\n visible={props.visible}\n />\n </AuthGuard>\n </>\n </Card>\n );\n};\n\nconst NoValue: FC = () => {\n return (\n <Flex gap={1} className={\"oui-h-9\"}>\n <Text.gradient color=\"brand\" weight=\"bold\">\n --\n </Text.gradient>\n <Text>USDC</Text>\n </Flex>\n );\n};\n\ntype AssetStatisticProps = Pick<\n AssetScriptReturn,\n | \"currentLeverage\"\n | \"unrealPnL\"\n | \"unrealROI\"\n | \"freeCollateral\"\n | \"onLeverageEdit\"\n | \"visible\"\n | \"maxWithdrawAmount\"\n>;\n\nexport const AssetStatistic = (props: AssetStatisticProps) => {\n const { t } = useTranslation();\n\n const maxWithdrawAmountText =\n props.maxWithdrawAmount === undefined || props.maxWithdrawAmount === null\n ? \"--\"\n : props.maxWithdrawAmount.toString();\n\n return (\n <Grid cols={2} className=\"oui-h-12\">\n <Statistic label={t(\"common.unrealizedPnl\")}>\n <Flex>\n <Text.pnl\n coloring\n size=\"lg\"\n weight=\"semibold\"\n visible={props.visible}\n >\n {props.unrealPnL}\n </Text.pnl>\n <Text.roi\n coloring\n rule=\"percentages\"\n size=\"sm\"\n weight=\"semibold\"\n prefix={\"(\"}\n suffix={\")\"}\n visible={props.visible}\n >\n {props.unrealROI}\n </Text.roi>\n </Flex>\n </Statistic>\n <Statistic\n label={\n <Tooltip\n content={t(\"transfer.withdraw.available.tooltip\", {\n amount: maxWithdrawAmountText,\n })}\n className=\"oui-max-w-[274px]\"\n delayDuration={300}\n >\n <Text\n size=\"xs\"\n intensity={36}\n className=\"oui-cursor-pointer oui-border-b oui-border-dashed oui-border-line-12\"\n >\n {t(\"portfolio.overview.availableWithdraw\")}\n </Text>\n </Tooltip>\n }\n // @ts-ignore\n align=\"right\"\n // @ts-ignore\n valueProps={{ size: \"lg\", visible: props.visible }}\n >\n {props.freeCollateral}\n </Statistic>\n </Grid>\n );\n};\n","import React from \"react\";\nimport { useAssetScript } from \"./assets.script\";\nimport { AssetsUI } from \"./assets.ui\";\n\nexport const AssetWidget: React.FC = () => {\n const { connect: connectWallet, ...rest } = useAssetScript();\n return (\n <AssetsUI\n // TODO: remove duplicate props\n onConnectWallet={connectWallet}\n connect={connectWallet}\n {...rest}\n />\n );\n};\n","export { useAssetScript } from \"./assets.script\";\nexport { AssetsUI } from \"./assets.ui\";\nexport { AssetWidget } from \"./assets.widget\";\n","import { useState } from \"react\";\n\nexport type TabName =\n | \"deposit\"\n | \"withdraw\"\n | \"funding\"\n | \"distribution\"\n | \"transfer\"\n | \"vaults\";\n\nexport const useHistoryDataGroupScript = () => {\n const [active, setActive] = useState<TabName>(\"deposit\");\n return {\n active,\n onTabChange: setActive as React.Dispatch<React.SetStateAction<string>>,\n } as const;\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useMemo } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { AssetHistoryStatusEnum } from \"@kodiak-finance/orderly-types\";\nimport {\n capitalizeFirstLetter,\n Text,\n Flex,\n TokenIcon,\n toast,\n type Column,\n} from \"@kodiak-finance/orderly-ui\";\nimport { Decimal } from \"@kodiak-finance/orderly-utils\";\n\ntype Options = {\n chainsInfo: any[];\n isDeposit: boolean;\n isWeb3Wallet: boolean;\n};\n\nexport const useAssetHistoryColumns = (options: Options) => {\n const { chainsInfo, isDeposit, isWeb3Wallet } = options;\n const { t } = useTranslation();\n\n const onCopy = (e: any) => {\n e.preventDefault();\n e.stopPropagation();\n toast.success(t(\"common.copy.copied\"));\n };\n\n const columns = useMemo<Column[]>(() => {\n const txIdColumn: Column = {\n title: t(\"common.txId\"),\n dataIndex: \"tx_id\",\n width: 120,\n render: (value, record) => {\n if (!value) {\n return <div className=\"oui-text-base-contrast-54\">-</div>;\n }\n const chainInfo = chainsInfo?.find(\n (item) => parseInt(record.chain_id) === parseInt(item.chain_id),\n );\n const explorer_base_url = chainInfo?.explorer_base_url;\n const href = `${explorer_base_url}/tx/${value}`;\n return (\n <a href={href} target=\"_blank\" rel=\"noreferrer\">\n {/* <Tooltip content={value} delayDuration={0}> */}\n <Text.formatted\n copyable={!!value}\n rule=\"txId\"\n className=\"oui-underline oui-decoration-line-16 oui-decoration-dashed oui-underline-offset-4\"\n onCopy={onCopy}\n >\n {value}\n </Text.formatted>\n {/* </Tooltip> */}\n </a>\n );\n },\n };\n\n const accountIdColumn: Column = {\n title: t(\"common.accountId\"),\n dataIndex: \"account_id\",\n width: 120,\n render: (value, record) => {\n const accountId = isDeposit\n ? record.from_account_id\n : record.to_account_id;\n\n return (\n <Text.formatted rule=\"address\" copyable={!!accountId} onCopy={onCopy}>\n {accountId}\n </Text.formatted>\n );\n },\n };\n\n return [\n {\n title: t(\"common.token\"),\n dataIndex: \"token\",\n width: 80,\n render: (value) => {\n return (\n <Flex gapX={1}>\n <TokenIcon name={value} size=\"xs\" />\n <span>{value}</span>\n </Flex>\n );\n },\n },\n {\n title: t(\"common.time\"),\n dataIndex: \"created_time\",\n width: 80,\n rule: \"date\",\n },\n isWeb3Wallet ? txIdColumn : accountIdColumn,\n {\n title: t(\"common.status\"),\n dataIndex: \"trans_status\",\n width: 100,\n render: (value, recoed) => {\n value = isWeb3Wallet ? value : recoed.status;\n const statusMap = {\n [AssetHistoryStatusEnum.NEW]: t(\"assetHistory.status.pending\"),\n [AssetHistoryStatusEnum.PENDING]: t(\"assetHistory.status.pending\"),\n [AssetHistoryStatusEnum.CONFIRM]: t(\"assetHistory.status.confirm\"),\n [AssetHistoryStatusEnum.PROCESSING]: t(\n \"assetHistory.status.processing\",\n ),\n [AssetHistoryStatusEnum.COMPLETED]: t(\n \"assetHistory.status.completed\",\n ),\n [AssetHistoryStatusEnum.FAILED]: t(\"assetHistory.status.failed\"),\n };\n return (\n statusMap[value as keyof typeof statusMap] ||\n capitalizeFirstLetter(value?.toLowerCase())\n );\n },\n },\n {\n title: t(\"common.amount\"),\n dataIndex: \"amount\",\n width: 100,\n rule: \"price\",\n render: (value, record) => {\n const netAmount = new Decimal(value).minus(record.fee ?? 0);\n return (\n <Text.numeral\n dp={record.decimals}\n rule=\"price\"\n coloring\n showIdentifier\n padding={false}\n >\n {isDeposit ? netAmount.toNumber() : netAmount.neg().toNumber()}\n </Text.numeral>\n );\n },\n },\n ];\n }, [t, chainsInfo, isDeposit, isWeb3Wallet]);\n\n return columns;\n};\n","import { differenceInDays, setHours } from \"date-fns\";\n\nexport const parseDateRangeForFilter = (dateRange: {\n from: Date;\n to?: Date;\n}) => {\n const { from, to = new Date() } = dateRange;\n\n const diff = differenceInDays(from, to);\n\n if (diff === 0) {\n return [from, setHours(to, 23)];\n }\n\n return [from, to];\n};\n","import { useCallback, useMemo, useState } from \"react\";\nimport { getDate, getMonth, getYear, set } from \"date-fns\";\nimport {\n useAssetsHistory,\n useChainInfo,\n useAppStore,\n useTransferHistory,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { AssetHistorySideEnum } from \"@kodiak-finance/orderly-types\";\nimport { modal, usePagination } from \"@kodiak-finance/orderly-ui\";\nimport { DepositAndWithdrawWithSheetId } from \"@kodiak-finance/orderly-ui-transfer\";\nimport { subtractDaysFromCurrentDate } from \"@kodiak-finance/orderly-utils\";\nimport { parseDateRangeForFilter } from \"../helper/date\";\n\nexport enum AssetTarget {\n Web3Wallet = \"Web3Wallet\",\n AccountId = \"AccountId\",\n}\n\nexport type AssetHistoryScriptOptions = {\n side: AssetHistorySideEnum;\n};\n\nexport type AssetHistoryScriptReturn = ReturnType<typeof useAssetHistoryScript>;\n\nexport const useAssetHistoryScript = (options: AssetHistoryScriptOptions) => {\n const { side } = options;\n const isDeposit = side === AssetHistorySideEnum.DEPOSIT;\n\n const [today] = useState(() => {\n const d = new Date();\n return new Date(getYear(d), getMonth(d), getDate(d), 0, 0, 0);\n });\n\n const tokensInfo = useAppStore((state) => state.tokensInfo);\n\n const [target, setTarget] = useState<AssetTarget>(AssetTarget.Web3Wallet);\n\n const [dateRange, setDateRange] = useState<Date[]>([\n subtractDaysFromCurrentDate(90, today),\n today,\n ]);\n const { page, pageSize, setPage, parsePagination } = usePagination();\n\n const { startTime, endTime } = useMemo(() => {\n const startTime = dateRange[0].getTime();\n const endTime = set(dateRange[1], {\n hours: 23,\n minutes: 59,\n seconds: 59,\n milliseconds: 0,\n }).getTime();\n\n return { startTime, endTime };\n }, [dateRange]);\n\n const [assetData, { meta: assetMeta, isLoading: assetLoading }] =\n useAssetsHistory(\n {\n startTime,\n endTime,\n page,\n pageSize,\n side,\n },\n {\n shouldUpdateOnWalletChanged: (data) => data.side === side,\n },\n );\n\n const [transferData, { isLoading: transferLoading, meta: transferMeta }] =\n useTransferHistory({\n dataRange: [startTime, endTime],\n side: isDeposit ? \"IN\" : \"OUT\",\n size: pageSize,\n page: page,\n main_sub_only: false,\n });\n\n const { data: chainsInfo } = useChainInfo();\n\n const onFilter = (filter: { name: string; value: any }) => {\n if (filter.name === \"dateRange\") {\n setDateRange(parseDateRangeForFilter(filter.value));\n setPage(1);\n } else if (filter.name === \"target\") {\n setTarget(filter.value);\n setPage(1);\n }\n };\n\n const isLoading = useMemo(() => {\n if (target === AssetTarget.Web3Wallet) {\n return assetLoading;\n }\n return transferLoading;\n }, [target, assetLoading, transferLoading]);\n\n const meta = useMemo(() => {\n if (target === AssetTarget.Web3Wallet) {\n return assetMeta;\n }\n return transferMeta;\n }, [target, assetMeta, transferMeta]);\n\n const pagination = useMemo(\n () => parsePagination(meta),\n [parsePagination, meta],\n );\n\n const dataSource = useMemo(() => {\n return (target === AssetTarget.Web3Wallet ? assetData : transferData).map(\n (item) => {\n const findToken = tokensInfo?.find(({ token }) => token === item.token);\n return {\n ...item,\n decimals: findToken?.decimals ?? 2,\n };\n },\n );\n }, [target, assetData, transferData, tokensInfo]);\n\n const onDeposit = useCallback(() => {\n modal.show(DepositAndWithdrawWithSheetId, { activeTab: \"deposit\" });\n }, []);\n\n const isWeb3Wallet = target === AssetTarget.Web3Wallet;\n\n return {\n dataSource,\n total: meta?.total,\n isLoading,\n queryParameter: {\n target,\n dateRange,\n },\n onFilter,\n pagination,\n onDeposit,\n chainsInfo: chainsInfo as any[],\n isDeposit,\n isWeb3Wallet,\n };\n};\n","import { FC, useMemo } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { DataFilter } from \"@kodiak-finance/orderly-ui\";\nimport { AuthGuardDataTable } from \"@kodiak-finance/orderly-ui-connector\";\nimport {\n AssetTarget,\n type AssetHistoryScriptReturn,\n} from \"./assetHistory.script\";\nimport { useAssetHistoryColumns } from \"./column\";\n\ntype AssetHistoryProps = AssetHistoryScriptReturn;\n\nexport const AssetHistory: FC<AssetHistoryProps> = (props) => {\n const { dataSource, queryParameter, onFilter, isLoading } = props;\n const { dateRange, target } = queryParameter;\n const columns = useAssetHistoryColumns({\n chainsInfo: props.chainsInfo,\n isDeposit: props.isDeposit,\n isWeb3Wallet: props.isWeb3Wallet,\n });\n const { t } = useTranslation();\n\n const options = useMemo(() => {\n return [\n { label: t(\"common.web3Wallet\"), value: AssetTarget.Web3Wallet },\n { label: t(\"common.accountId\"), value: AssetTarget.AccountId },\n ];\n }, [t]);\n\n return (\n <>\n <DataFilter\n items={[\n {\n type: \"select\",\n name: \"target\",\n options: options,\n value: target,\n },\n {\n type: \"range\",\n name: \"dateRange\",\n value: {\n from: dateRange[0],\n to: dateRange[1],\n },\n },\n ]}\n onFilter={(value) => {\n onFilter(value);\n }}\n />\n\n <AuthGuardDataTable\n bordered\n loading={isLoading}\n classNames={{\n root: \"oui-h-[calc(100%_-_49px)]\",\n scroll: \"oui-min-h-[400px]\",\n }}\n columns={columns}\n dataSource={dataSource}\n pagination={props.pagination}\n />\n </>\n );\n};\n","import { FC, useMemo } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { AssetHistoryStatusEnum } from \"@kodiak-finance/orderly-types\";\nimport {\n Badge,\n DataFilter,\n Flex,\n ListView,\n Text,\n capitalizeFirstLetter,\n toast,\n ArrowRightShortIcon,\n EmptyDataState,\n} from \"@kodiak-finance/orderly-ui\";\nimport {\n AssetTarget,\n type AssetHistoryScriptReturn,\n} from \"./assetHistory.script\";\n\ntype AssetHistoryMobileProps = AssetHistoryScriptReturn;\n\nexport const AssetHistoryMobile: FC<AssetHistoryMobileProps> = (props) => {\n const {\n dataSource,\n queryParameter,\n onFilter,\n isLoading,\n pagination,\n onDeposit,\n chainsInfo,\n isDeposit,\n isWeb3Wallet,\n } = props;\n const { dateRange, target } = queryParameter;\n const { t } = useTranslation();\n\n const options = useMemo(() => {\n return [\n { label: t(\"common.web3Wallet\"), value: AssetTarget.Web3Wallet },\n { label: t(\"common.accountId\"), value: AssetTarget.AccountId },\n ];\n }, [t]);\n\n const loadMore = () => {\n if (dataSource.length < (pagination?.count || 0)) {\n pagination?.onPageSizeChange?.(pagination?.pageSize + 50);\n }\n };\n\n const getStatusText = (item: any) => {\n const status = props.isWeb3Wallet ? item.trans_status : item.status;\n const statusMap = {\n [AssetHistoryStatusEnum.NEW]: t(\"assetHistory.status.pending\"),\n [AssetHistoryStatusEnum.PENDING]: t(\"assetHistory.status.pending\"),\n [AssetHistoryStatusEnum.CONFIRM]: t(\"assetHistory.status.confirm\"),\n [AssetHistoryStatusEnum.PROCESSING]: t(\"assetHistory.status.processing\"),\n [AssetHistoryStatusEnum.COMPLETED]: t(\"assetHistory.status.completed\"),\n [AssetHistoryStatusEnum.FAILED]: t(\"assetHistory.status.failed\"),\n };\n return (\n statusMap[status as keyof typeof statusMap] ||\n capitalizeFirstLetter(status?.toLowerCase())\n );\n };\n\n const renderHistoryItem = (item: any) => {\n // Amount formatting\n const formattedAmount = isDeposit\n ? `+${item.amount - (item.fee ?? 0)}`\n : -(item.amount - (item.fee ?? 0));\n\n // Get tx link\n const getTxLink = () => {\n if (!item.tx_id) {\n return undefined;\n }\n\n const chainInfo =\n chainsInfo && Array.isArray(chainsInfo)\n ? chainsInfo.find(\n (chain: any) =>\n parseInt(item.chain_id) === parseInt(chain.chain_id),\n )\n : undefined;\n\n if (chainInfo?.explorer_base_url) {\n return `${chainInfo.explorer_base_url}/tx/${item.tx_id}`;\n }\n\n return undefined;\n };\n\n const onCopy = (e: any) => {\n e.preventDefault();\n e.stopPropagation();\n toast.success(t(\"common.copy.copied\"));\n };\n\n const itemColor = isDeposit ? \"buy\" : \"sell\";\n\n const amountView = (\n <Flex className=\"oui-text-xs\">\n <Text color={itemColor}>{formattedAmount}</Text>\n <Text className=\"oui-ml-1\" intensity={80}>\n {item.token}\n </Text>\n {isWeb3Wallet && (\n <Badge color={itemColor} className=\"oui-ml-2\">\n {isDeposit ? t(\"common.deposit\") : t(\"common.withdraw\")}\n </Badge>\n )}\n </Flex>\n );\n\n const statusView = (\n <Text intensity={isWeb3Wallet ? 80 : 36} size=\"xs\">\n {getStatusText(item)}\n </Text>\n );\n\n const timeView = (\n <Text.formatted rule=\"date\" intensity={36} size=\"2xs\">\n {item.created_time}\n </Text.formatted>\n );\n\n const txIdView = item.tx_id ? (\n <a href={getTxLink()} target=\"_blank\" rel=\"noreferrer\">\n <Text.formatted\n copyable={!!item.tx_id}\n className=\"oui-underline oui-decoration-line-16 oui-decoration-dashed oui-underline-offset-4\"\n rule=\"txId\"\n onCopy={onCopy}\n intensity={36}\n size=\"xs\"\n >\n {item.tx_id}\n </Text.formatted>\n </a>\n ) : (\n <Text intensity={54}>-</Text>\n );\n\n const accountId = isDeposit ? item.from_account_id : item.to_account_id;\n\n const accountIdView = (\n <Flex gapX={1}>\n <Text intensity={36} size=\"xs\">\n {isDeposit\n ? t(\"transfer.internalTransfer.from\")\n : t(\"transfer.internalTransfer.to\")}\n </Text>\n <Text.formatted\n rule=\"address\"\n copyable={!!accountId}\n onCopy={onCopy}\n intensity={80}\n size=\"xs\"\n >\n {accountId}\n </Text.formatted>\n </Flex>\n );\n\n return (\n <Flex\n p={2}\n direction=\"column\"\n gapY={1}\n intensity={900}\n r=\"xl\"\n className=\"oui-font-semibold\"\n >\n <Flex justify=\"between\" width=\"100%\" height=\"18px\">\n {isWeb3Wallet ? (\n <>\n {amountView}\n {statusView}\n </>\n ) : (\n <>\n {accountIdView}\n {amountView}\n </>\n )}\n </Flex>\n\n <Flex justify=\"between\" width=\"100%\" height=\"18px\">\n {timeView}\n {isWeb3Wallet ? txIdView : statusView}\n </Flex>\n </Flex>\n );\n };\n\n return (\n <>\n <DataFilter\n items={[\n {\n type: \"picker\",\n name: \"target\",\n options: options,\n value: target,\n size: \"md\",\n },\n {\n type: \"range\",\n name: \"dateRange\",\n value: {\n from: dateRange[0],\n to: dateRange[1],\n },\n },\n ]}\n onFilter={(value) => {\n onFilter(value);\n }}\n className=\"oui-sticky oui-top-[44px] oui-z-10 oui-border-none oui-bg-base-10 oui-px-3 oui-py-2\"\n />\n\n <ListView\n dataSource={dataSource}\n renderItem={renderHistoryItem}\n contentClassName=\"!oui-space-y-1\"\n loadMore={loadMore}\n isLoading={isLoading}\n className=\"oui-px-1\"\n emptyView={\n <Flex\n direction={\"column\"}\n height={\"100%\"}\n itemAlign={\"center\"}\n justify={\"center\"}\n mt={3}\n >\n <EmptyDataState />\n {dataSource?.length == 0 && (\n <Flex\n direction=\"row\"\n itemAlign=\"center\"\n justify=\"center\"\n onClick={onDeposit}\n className=\"oui-mt-2 oui-h-4 oui-w-full oui-text-secondary\"\n >\n <Text color=\"primary\" size=\"2xs\">\n {t(\"common.deposit\")}\n </Text>\n <ArrowRightShortIcon\n className=\"oui-ml-0.5 oui-size-4 oui-text-primary oui-opacity-100\"\n color=\"primary\"\n size={16}\n opacity={100}\n />\n </Flex>\n )}\n </Flex>\n }\n />\n </>\n );\n};\n","import React from \"react\";\nimport { AssetHistorySideEnum } from \"@kodiak-finance/orderly-types\";\nimport { useScreen } from \"@kodiak-finance/orderly-ui\";\nimport { useAssetHistoryScript } from \"./assetHistory.script\";\nimport { AssetHistory } from \"./assetHistory.ui\";\nimport { AssetHistoryMobile } from \"./assetHistory.ui.mobile\";\n\ntype AssetHistoryWidgetProps = {\n side: AssetHistorySideEnum;\n};\n\nexport const AssetHistoryWidget: React.FC<AssetHistoryWidgetProps> = (\n props,\n) => {\n const state = useAssetHistoryScript({ side: props.side });\n const { isMobile } = useScreen();\n if (isMobile) {\n return <AssetHistoryMobile {...state} />;\n }\n return <AssetHistory {...state} />;\n};\n","export { useAssetHistoryColumns } from \"./column\";\nexport { useAssetHistoryScript } from \"./assetHistory.script\";\nexport { AssetHistory } from \"./assetHistory.ui\";\nexport { AssetHistoryWidget } from \"./assetHistory.widget\";\n","import { useMemo } from \"react\";\nimport { useBadgeBySymbol } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { API } from \"@kodiak-finance/orderly-types\";\nimport { Flex, Text, type Column } from \"@kodiak-finance/orderly-ui\";\n\nconst SymbolBadge = (props: { symbol: string }) => {\n const { brokerId, brokerName, brokerNameRaw } = useBadgeBySymbol(\n props.symbol,\n );\n\n return (\n <Text.symbolBadge\n badge={brokerName ?? brokerId ?? undefined}\n fullName={brokerNameRaw}\n className=\"oui-cursor-pointer\"\n showIcon\n >\n {props.symbol}\n </Text.symbolBadge>\n );\n};\n\nexport const useFundingHistoryColumns = () => {\n const { t } = useTranslation();\n\n const columns = useMemo(() => {\n return [\n {\n title: t(\"common.symbol\"),\n dataIndex: \"symbol\",\n width: 80,\n render: (value: string) => <SymbolBadge symbol={value} />,\n },\n {\n title: t(\"common.time\"),\n dataIndex: \"created_time\",\n width: 120,\n rule: \"date\",\n },\n {\n title: `${t(\"funding.fundingRate\")} / ${t(\"funding.annualRate\")}`,\n dataIndex: \"funding_rate\",\n width: 80,\n render: (value: any, record) => {\n return (\n <Flex gap={1}>\n {/* <span>{`${record.funding_rate * 100}%`}</span> */}\n <Text.numeral rule={\"percentages\"} dp={6}>\n {record.funding_rate}\n </Text.numeral>\n <span>/</span>\n {/* <span>{`${record.annual_rate * 10}%`}</span> */}\n <Text.numeral rule={\"percentages\"} dp={6}>\n {record.annual_rate}\n </Text.numeral>\n </Flex>\n );\n },\n },\n {\n title: t(\"funding.paymentType\"),\n dataIndex: \"payment_type\",\n width: 80,\n render: (value: any) => {\n switch (value) {\n case \"Pay\":\n case \"Paid\":\n return t(\"funding.paymentType.paid\");\n case \"Receive\":\n case \"Received\":\n return t(\"funding.paymentType.received\");\n default:\n return value;\n }\n },\n },\n {\n title: `${t(\"funding.fundingFee\")} (USDC)`,\n dataIndex: \"funding_fee\",\n width: 80,\n rule: \"price\",\n formatter(value, record, index) {\n return Number(value) * -1;\n },\n numeralProps: {\n coloring: true,\n showIdentifier: true,\n ignoreDP: true,\n },\n },\n ] as Column<API.FundingFeeRow & { annual_rate: number }>[];\n }, [t]);\n\n return columns;\n};\n","import { FC, useMemo } from \"react\";\nimport { useSymbolsInfo } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { DataFilter } from \"@kodiak-finance/orderly-ui\";\nimport { AuthGuardDataTable } from \"@kodiak-finance/orderly-ui-connector\";\nimport { useFundingHistoryColumns } from \"./column\";\nimport { type UseFundingHistoryReturn } from \"./useDataSource.script\";\n\ntype FundingHistoryProps = {} & UseFundingHistoryReturn;\n\nexport const FundingHistoryDesktop: FC<FundingHistoryProps> = (props) => {\n const { dataSource, queryParameter, onFilter, isLoading } = props;\n const columns = useFundingHistoryColumns();\n const symbols = useSymbolsInfo();\n const { symbol, dateRange } = queryParameter;\n const { t } = useTranslation();\n\n const options = useMemo(() => {\n return [\n {\n label: t(\"common.all\"),\n value: \"All\",\n },\n ...Object.keys(symbols).map((symbol) => {\n const s = symbol.split(\"_\")[1];\n return {\n label: s,\n value: symbol,\n };\n }),\n ];\n }, [t, symbols]);\n\n return (\n <>\n <DataFilter\n items={[\n {\n type: \"select\",\n name: \"symbol\",\n isCombine: true,\n options,\n value: symbol,\n valueFormatter: (value) => {\n const option = options.find((item) => item.value === value);\n return option?.label || value;\n },\n },\n {\n type: \"range\",\n name: \"dateRange\",\n value: {\n from: dateRange[0],\n to: dateRange[1],\n },\n },\n ]}\n onFilter={(value) => {\n onFilter(value);\n }}\n />\n <AuthGuardDataTable\n bordered\n columns={columns}\n dataSource={dataSource}\n loading={isLoading}\n generatedRowKey={(record) => `${record.updated_time}`}\n classNames={{ root: \"oui-h-[calc(100%_-_49px)]\" }}\n pagination={props.pagination}\n />\n </>\n );\n};\n","import { FC, useMemo } from \"react\";\nimport { useSymbolsInfo } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n DataFilter,\n Flex,\n ListView,\n Text,\n Badge,\n} from \"@kodiak-finance/orderly-ui\";\nimport { SymbolBadge } from \"./symbolBadge\";\nimport { type UseFundingHistoryReturn } from \"./useDataSource.script\";\n\ntype FundingHistoryProps = {} & UseFundingHistoryReturn;\n\nexport const FundingHistoryMobile: FC<FundingHistoryProps> = (props) => {\n const { dataSource, queryParameter, onFilter, isLoading, pagination } = props;\n const symbols = useSymbolsInfo();\n const { symbol, dateRange } = queryParameter;\n const { t } = useTranslation();\n\n const switchPaymentType = (paymentType: string) => {\n switch (paymentType) {\n case \"Pay\":\n case \"Paid\":\n return t(\"funding.paymentType.paid\");\n case \"Receive\":\n case \"Received\":\n return t(\"funding.paymentType.received\");\n default:\n return paymentType;\n }\n };\n\n const loadMore = () => {\n if (dataSource && dataSource.length < (pagination?.count || 0)) {\n pagination?.onPageSizeChange?.(pagination?.pageSize + 50);\n }\n };\n\n const renderHistoryItem = (item: any) => {\n return (\n <Flex\n p={2}\n direction=\"column\"\n gapY={2}\n className=\"oui-rounded-xl oui-bg-base-9 oui-font-semibold\"\n >\n <Flex direction=\"row\" justify=\"between\" width=\"100%\" height=\"20px\">\n <Text.formatted\n rule=\"symbol\"\n className=\"oui-text-base-contrast oui-mr-1 oui-text-sm\"\n >\n {item.symbol}\n </Text.formatted>\n <Badge color=\"neutral\" size=\"xs\">\n {switchPaymentType(item.payment_type)}\n </Badge>\n <Text.formatted\n rule=\"date\"\n className=\"oui-text-base-contrast-36 oui-text-2xs oui-ml-auto\"\n >\n {item.created_time}\n </Text.formatted>\n </Flex>\n <div className=\"oui-w-full oui-h-[1px] oui-bg-base-6\" />\n <Flex direction=\"row\" justify=\"between\" width=\"100%\">\n <Flex direction=\"column\">\n <Text className=\"oui-text-base-contrast-36 oui-text-2xs\">\n {t(\"funding.fundingRate\")}\n </Text>\n <Text.numeral\n rule={\"percentages\"}\n dp={6}\n className=\"oui-text-base-contrast-80 oui-text-xs\"\n >\n {item.funding_rate}\n </Text.numeral>\n </Flex>\n <Flex direction=\"column\">\n <Text className=\"oui-text-base-contrast-36 oui-text-2xs\">\n {t(\"funding.annualRate\")}\n </Text>\n <Text.numeral\n rule={\"percentages\"}\n dp={6}\n className=\"oui-text-base-contrast-80 oui-text-xs\"\n >\n {item.annual_rate}\n </Text.numeral>\n </Flex>\n <Flex direction=\"column\">\n <Text className=\"oui-text-base-contrast-36 oui-text-2xs\">\n {t(\"funding.fundingFee\")}{\" \"}\n <Text className=\"oui-text-base-contrast-20\">(USDC)</Text>\n </Text>\n <Text.numeral\n dp={6}\n ignoreDP={true}\n coloring={true}\n showIdentifier={true}\n className=\"oui-text-xs oui-self-end\"\n >\n {Number(item.funding_fee) * -1}\n </Text.numeral>\n </Flex>\n </Flex>\n </Flex>\n );\n };\n\n const options = useMemo(() => {\n return [\n {\n label: t(\"common.all\"),\n value: \"All\",\n },\n ...Object.keys(symbols).map((symbol) => {\n const s = symbol.split(\"_\")[1];\n return {\n label: s,\n value: symbol,\n };\n }),\n ];\n }, [t, symbols]);\n\n return (\n <>\n <DataFilter\n items={[\n {\n type: \"select\",\n name: \"symbol\",\n isCombine: true,\n options,\n value: symbol,\n valueFormatter: (value) => {\n const option = options.find((item) => item.value === value);\n return option?.label || value;\n },\n },\n {\n type: \"range\",\n name: \"dateRange\",\n value: {\n from: dateRange[0],\n to: dateRange[1],\n },\n },\n ]}\n onFilter={(value) => {\n onFilter(value);\n }}\n className=\"oui-px-3 oui-py-2 oui-sticky oui-top-[44px] oui-z-10 oui-bg-base-10\"\n />\n <ListView\n dataSource={dataSource}\n renderItem={renderHistoryItem}\n contentClassName=\"!oui-space-y-1\"\n loadMore={loadMore}\n isLoading={isLoading}\n className=\"oui-px-1\"\n />\n </>\n );\n};\n","import { useFundingFeeHistory } from \"@kodiak-finance/orderly-hooks\";\nimport { usePagination } from \"@kodiak-finance/orderly-ui\";\nimport { subtractDaysFromCurrentDate } from \"@kodiak-finance/orderly-utils\";\nimport { useMemo, useState } from \"react\";\nimport { parseDateRangeForFilter } from \"../helper/date\";\nimport { getDate, getMonth, getYear, set } from \"date-fns\";\n\nexport const useFundingHistoryHook = () => {\n // const today = useRef(setMinutes(setHours(new Date(), 23), 59));\n\n const [today] = useState(() => {\n const d = new Date();\n\n return new Date(getYear(d), getMonth(d), getDate(d), 0, 0, 0);\n });\n\n const [dateRange, setDateRange] = useState<Date[]>([\n subtractDaysFromCurrentDate(90, today),\n today,\n ]);\n\n const [symbol, setSymbol] = useState<string>(\"All\");\n const { page, pageSize, setPage, parsePagination } = usePagination();\n\n const [data, { isLoading, meta, isValidating }] = useFundingFeeHistory(\n {\n // dataRange: dateRange.map((date) => date.getTime()),\n dataRange: [\n dateRange[0].getTime(),\n set(dateRange[1], {\n hours: 23,\n minutes: 59,\n seconds: 59,\n milliseconds: 0,\n })\n // addDays(dateRange[1], 1)\n .getTime(),\n ],\n symbol,\n page,\n pageSize,\n },\n {\n keepPreviousData: true,\n }\n );\n\n const onFilter = (filter: { name: string; value: any }) => {\n if (filter.name === \"symbol\") {\n setSymbol(filter.value);\n setPage(1);\n }\n\n if (filter.name === \"dateRange\") {\n // setDateRange([filter.value.from, filter.value.to]);\n setDateRange(parseDateRangeForFilter(filter.value));\n setPage(1);\n }\n };\n\n const pagination = useMemo(\n () => parsePagination(meta),\n [parsePagination, meta]\n );\n\n return {\n dataSource: data,\n isLoading,\n isValidating,\n // onDateRangeChange,\n queryParameter: {\n symbol,\n dateRange,\n },\n onFilter,\n pagination,\n } as const;\n};\n\nexport type UseFundingHistoryReturn = ReturnType<typeof useFundingHistoryHook>;\n","import React from \"react\";\nimport { useScreen } from \"@kodiak-finance/orderly-ui\";\nimport { FundingHistoryDesktop } from \"./fundingHistory.ui\";\nimport { FundingHistoryMobile } from \"./fundingHistory.ui.mobile\";\nimport { useFundingHistoryHook } from \"./useDataSource.script\";\n\nexport const FundingHistoryWidget: React.FC = () => {\n const state = useFundingHistoryHook();\n const { isMobile } = useScreen();\n if (isMobile) {\n return <FundingHistoryMobile {...state} />;\n }\n return <FundingHistoryDesktop {...state} />;\n};\n","export { FundingHistoryWidget } from \"./fundingHistory.widget\";\nexport { FundingHistoryDesktop } from \"./fundingHistory.ui\";\nexport { FundingHistoryMobile } from \"./fundingHistory.ui.mobile\";\nexport { useFundingHistoryColumns } from \"./column\";\nexport { useFundingHistoryHook } from \"./useDataSource.script\";\n","import { useMemo } from \"react\";\nimport { useTranslation, i18n } from \"@kodiak-finance/orderly-i18n\";\nimport { API } from \"@kodiak-finance/orderly-types\";\nimport { Flex, type Column, TokenIcon } from \"@kodiak-finance/orderly-ui\";\n\nexport const useColumns = () => {\n const { t } = useTranslation();\n\n const columns = useMemo(() => {\n return [\n {\n title: t(\"common.token\"),\n dataIndex: \"token\",\n width: 80,\n // rule: \"symbol\",\n render: (value, record) => {\n return (\n <Flex gapX={2}>\n <TokenIcon name={value} size=\"xs\" />\n <span>{value}</span>\n </Flex>\n );\n },\n },\n {\n title: t(\"common.time\"),\n dataIndex: \"updated_time\",\n width: 120,\n rule: \"date\",\n },\n {\n title: t(\"common.status\"),\n dataIndex: \"status\",\n width: 120,\n formatter(value, record, index) {\n switch (value) {\n case \"CREATED\":\n case \"SPLIT\":\n return t(\"assetHistory.status.processing\");\n case \"COMPLETED\":\n default:\n return t(\"assetHistory.status.completed\");\n }\n },\n },\n\n {\n title: t(\"common.type\"),\n dataIndex: \"type\",\n width: 80,\n formatter: (value: any) => {\n switch (value) {\n case \"REFERRER_REBATE\":\n return t(\n \"portfolio.overview.distribution.type.referralCommission\",\n );\n case \"REFEREE_REBATE\":\n return t(\"portfolio.overview.distribution.type.refereeRebate\");\n case \"BROKER_FEE\":\n return t(\"portfolio.overview.distribution.type.brokerFee\");\n default:\n return \"-\";\n }\n },\n },\n {\n title: t(\"common.amount\"),\n dataIndex: \"amount\",\n width: 80,\n // rule: \"price\",\n },\n ] as Column<API.FundingFeeRow & { annual_rate: number }>[];\n }, [t]);\n\n return columns;\n};\n","import { FC, useMemo } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { DataFilter } from \"@kodiak-finance/orderly-ui\";\nimport { AuthGuardDataTable } from \"@kodiak-finance/orderly-ui-connector\";\nimport { useColumns } from \"./column\";\nimport { type useDistributionHistoryHookReturn } from \"./useDataSource.script\";\n\ntype FundingHistoryProps = {} & useDistributionHistoryHookReturn;\n\nexport const DistributionHistoryDesktop: FC<FundingHistoryProps> = (props) => {\n const { dataSource, queryParameter, onFilter, isLoading, isValidating } =\n props;\n const columns = useColumns();\n const { type, dateRange } = queryParameter;\n const { t } = useTranslation();\n\n const TYPES = useMemo(() => {\n return [\n { label: t(\"common.all\"), value: \"All\" },\n {\n label: t(\"portfolio.overview.distribution.type.referralCommission\"),\n value: \"REFERRER_REBATE\",\n },\n {\n label: t(\"portfolio.overview.distribution.type.refereeRebate\"),\n value: \"REFEREE_REBATE\",\n },\n {\n label: t(\"portfolio.overview.distribution.type.brokerFee\"),\n value: \"BROKER_FEE\",\n },\n ];\n }, [t]);\n\n return (\n <>\n <DataFilter\n items={[\n {\n type: \"select\",\n name: \"type\",\n options: TYPES,\n value: type,\n },\n {\n type: \"range\",\n name: \"dateRange\",\n value: {\n from: dateRange[0],\n to: dateRange[1],\n },\n },\n ]}\n onFilter={(value) => {\n onFilter(value);\n }}\n />\n <AuthGuardDataTable\n bordered\n columns={columns}\n dataSource={dataSource}\n loading={isLoading}\n // isValidating={isValidating}\n className=\"oui-font-semibold\"\n classNames={{\n root: \"oui-h-[calc(100%_-_49px)]\",\n }}\n pagination={props.pagination}\n />\n </>\n );\n};\n","import { FC, useMemo } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { DataFilter, Flex, Text, TokenIcon } from \"@kodiak-finance/orderly-ui\";\nimport { ListView } from \"@kodiak-finance/orderly-ui\";\nimport { type useDistributionHistoryHookReturn } from \"./useDataSource.script\";\n\ntype FundingHistoryProps = {} & useDistributionHistoryHookReturn;\n\nexport const DistributionHistoryMobile: FC<FundingHistoryProps> = (props) => {\n const { dataSource, queryParameter, onFilter, isLoading, pagination } = props;\n const { type, dateRange } = queryParameter;\n const { t } = useTranslation();\n\n const TYPES = useMemo(() => {\n return [\n { label: t(\"common.all\"), value: \"All\" },\n {\n label: t(\"portfolio.overview.distribution.type.referralCommission\"),\n value: \"REFERRER_REBATE\",\n },\n {\n label: t(\"portfolio.overview.distribution.type.refereeRebate\"),\n value: \"REFEREE_REBATE\",\n },\n {\n label: t(\"portfolio.overview.distribution.type.brokerFee\"),\n value: \"BROKER_FEE\",\n },\n ];\n }, [t]);\n\n const getStatusText = (status: string) => {\n switch (status) {\n case \"CREATED\":\n case \"SPLIT\":\n return t(\"assetHistory.status.processing\") as string;\n case \"COMPLETED\":\n default:\n return t(\"assetHistory.status.completed\") as string;\n }\n };\n\n const getTypeText = (type: string) => {\n switch (type) {\n case \"REFERRER_REBATE\":\n return t(\"portfolio.overview.distribution.type.referralCommission\");\n case \"REFEREE_REBATE\":\n return t(\"portfolio.overview.distribution.type.refereeRebate\");\n case \"BROKER_FEE\":\n return t(\"portfolio.overview.distribution.type.brokerFee\");\n default:\n return \"-\";\n }\n };\n\n const renderItem = (item: any) => {\n return (\n <Flex\n p={2}\n direction=\"column\"\n gapY={2}\n className=\"oui-rounded-xl oui-bg-base-9 oui-font-semibold\"\n >\n <Flex direction=\"row\" justify=\"between\" width=\"100%\" height=\"20px\">\n <Text.formatted\n rule=\"date\"\n className=\"oui-text-2xs oui-text-base-contrast-36\"\n >\n {item.created_time}\n </Text.formatted>\n <Text className=\"oui-text-sm oui-text-base-contrast-80\">\n {getStatusText(item.status)}\n </Text>\n </Flex>\n <div className=\"oui-h-px oui-w-full oui-bg-base-6\" />\n <Flex direction=\"row\" justify=\"between\" width=\"100%\">\n <Flex direction=\"column\">\n <Text className=\"oui-text-2xs oui-text-base-contrast-36\">\n {t(\"common.token\")}\n </Text>\n <Flex gapX={2}>\n <TokenIcon name={item.token} size=\"xs\" />\n <span className=\"oui-text-xs oui-text-base-contrast-80\">\n {item.token}\n </span>\n </Flex>\n </Flex>\n <Flex direction=\"column\">\n <Text className=\"oui-text-2xs oui-text-base-contrast-36\">\n {t(\"common.type\")}\n </Text>\n <Text className=\"oui-text-xs oui-text-base-contrast-80\">\n {getTypeText(item.type)}\n </Text>\n </Flex>\n <Flex direction=\"column\">\n <Text className=\"oui-text-2xs oui-text-base-contrast-36\">\n {t(\"common.amount\")}\n </Text>\n <Text className=\"oui-text-xs oui-text-base-contrast-80\">\n {item.amount}\n </Text>\n </Flex>\n </Flex>\n </Flex>\n );\n };\n\n const loadMore = () => {\n if (dataSource.length < (pagination?.count || 0)) {\n pagination?.onPageSizeChange &&\n pagination.onPageSizeChange(pagination?.pageSize + 50);\n }\n };\n\n return (\n <>\n <DataFilter\n items={[\n {\n type: \"picker\",\n name: \"type\",\n options: TYPES,\n value: type,\n size: \"md\",\n },\n {\n type: \"range\",\n name: \"dateRange\",\n value: {\n from: dateRange[0],\n to: dateRange[1],\n },\n },\n ]}\n onFilter={(value) => {\n onFilter(value);\n }}\n className=\"oui-px-3 oui-py-2 oui-sticky oui-top-[44px] oui-z-10 oui-bg-base-10\"\n />\n <ListView\n dataSource={dataSource}\n renderItem={renderItem}\n contentClassName=\"oui-space-y-1\"\n loadMore={loadMore}\n isLoading={isLoading}\n className=\"oui-px-1\"\n />\n </>\n );\n};\n","import { useDistributionHistory } from \"@kodiak-finance/orderly-hooks\";\nimport { subtractDaysFromCurrentDate } from \"@kodiak-finance/orderly-utils\";\nimport { useMemo, useState } from \"react\";\nimport { usePagination } from \"@kodiak-finance/orderly-ui\";\nimport { parseDateRangeForFilter } from \"../helper/date\";\nimport { getDate, getMonth, getYear, set } from \"date-fns\";\n\nexport const useDistributionHistoryHook = () => {\n // const today = useRef(setMinutes(setHours(new Date(), 23), 59));\n\n const [today] = useState(() => {\n const d = new Date();\n\n return new Date(getYear(d), getMonth(d), getDate(d), 0, 0, 0);\n });\n\n const [dateRange, setDateRange] = useState<Date[]>([\n subtractDaysFromCurrentDate(90, today),\n today,\n ]);\n const [type, setType] = useState<string>(\"All\");\n const { page, pageSize, setPage, parsePagination } = usePagination();\n\n const [data, { isLoading, meta, isValidating }] = useDistributionHistory({\n // dataRange: dateRange.map((date) => date.getTime()),\n dataRange: [\n dateRange[0].getTime(),\n set(dateRange[1], {\n hours: 23,\n minutes: 59,\n seconds: 59,\n milliseconds: 0,\n }).getTime(),\n ],\n type,\n pageSize,\n page,\n });\n\n // console.log(\"----\", isLoading, isValidating);\n\n // const res = useQuery(\"v1/public/info/funding_period\");\n\n const onFilter = (filter: { name: string; value: any }) => {\n if (filter.name === \"type\") {\n setType(filter.value);\n setPage(1);\n }\n\n if (filter.name === \"dateRange\") {\n // setDateRange([filter.value.from, filter.value.to]);\n setDateRange(parseDateRangeForFilter(filter.value));\n setPage(1);\n }\n };\n\n const pagination = useMemo(\n () => parsePagination(meta),\n [parsePagination, meta]\n );\n\n return {\n dataSource: data,\n isLoading,\n isValidating,\n // onDateRangeChange,\n queryParameter: {\n type,\n dateRange,\n },\n onFilter,\n pagination,\n } as const;\n};\n\nexport type useDistributionHistoryHookReturn = ReturnType<\n typeof useDistributionHistoryHook\n>;\n","import React from \"react\";\nimport { useScreen } from \"@kodiak-finance/orderly-ui\";\nimport { DistributionHistoryDesktop } from \"./distribution.ui\";\nimport { DistributionHistoryMobile } from \"./distribution.ui.mobile\";\nimport { useDistributionHistoryHook } from \"./useDataSource.script\";\n\nexport const DistributionHistoryWidget: React.FC = () => {\n const state = useDistributionHistoryHook();\n const { isMobile } = useScreen();\n if (isMobile) {\n return <DistributionHistoryMobile {...state} />;\n }\n return <DistributionHistoryDesktop {...state} />;\n};\n","export { DistributionHistoryWidget } from \"./distribution.widget\";\nexport { DistributionHistoryMobile } from \"./distribution.ui.mobile\";\nexport { DistributionHistoryDesktop } from \"./distribution.ui\";\n","import React, { useMemo } from \"react\";\nimport { produce } from \"immer\";\nimport { useAccount } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport type { API } from \"@kodiak-finance/orderly-types\";\nimport {\n DataFilter,\n formatAddress,\n ListView,\n Flex,\n Text,\n Badge,\n TokenIcon,\n toast,\n Statistic,\n} from \"@kodiak-finance/orderly-ui\";\nimport type { SelectOption } from \"@kodiak-finance/orderly-ui/src/select/withOptions\";\nimport { capitalizeString } from \"@kodiak-finance/orderly-utils\";\nimport type { useTransferHistoryHookReturn } from \"./useDataSource.script\";\n\ntype TransferHistoryMobileProps = useTransferHistoryHookReturn;\n\nexport enum AccountType {\n ALL = \"All accounts\",\n MAIN = \"Main accounts\",\n}\n\nexport const TransferHistoryMobileUI: React.FC<\n Readonly<TransferHistoryMobileProps & ReturnType<typeof useAccount>>\n> = (props) => {\n const {\n dataSource,\n queryParameter,\n state,\n isMainAccount,\n isLoading,\n selectedAccount,\n onFilter,\n pagination,\n } = props;\n const { side, dateRange } = queryParameter;\n\n const { t } = useTranslation();\n\n const ALL_ACCOUNTS: SelectOption = {\n label: t(\"common.allAccount\"),\n value: AccountType.ALL,\n };\n\n const MAIN_ACCOUNT: SelectOption = {\n label: t(\"common.mainAccount\"),\n value: AccountType.MAIN,\n };\n\n const subAccounts = state.subAccounts ?? [];\n\n const memoizedOptions = useMemo(() => {\n if (Array.isArray(subAccounts) && subAccounts.length) {\n return [\n ALL_ACCOUNTS,\n MAIN_ACCOUNT,\n ...subAccounts.map<SelectOption>((value) => ({\n value: value.id,\n label: value?.description || formatAddress(value?.id),\n })),\n ];\n }\n return [ALL_ACCOUNTS, MAIN_ACCOUNT];\n }, [subAccounts]);\n\n const loadMore = () => {\n if (dataSource && dataSource.length < (pagination?.count || 0)) {\n pagination?.onPageSizeChange?.(pagination?.pageSize + 50);\n }\n };\n\n const onCopy = () => {\n toast.success(t(\"common.copy.copied\"));\n };\n\n const renderHistoryItem = (item: API.TransferHistoryRow) => {\n const isFromMainAccount = item.from_account_id === state.mainAccountId;\n const isToMainAccount = item.to_account_id === state.mainAccountId;\n const fromSubAccount = subAccounts.find(\n (acc) => acc.id === item.from_account_id,\n );\n const toSubAccount = subAccounts.find(\n (acc) => acc.id === item.to_account_id,\n );\n\n return (\n <Flex\n p={2}\n direction=\"column\"\n gapY={2}\n className=\"oui-rounded-xl oui-bg-base-9 oui-font-semibold\"\n >\n {/* Header: Date and Status */}\n <Flex direction=\"row\" justify=\"between\" width=\"100%\">\n <Text.formatted\n rule=\"date\"\n className=\"oui-text-base-contrast-36 oui-text-2xs\"\n >\n {item.updated_time}\n </Text.formatted>\n <Text size=\"sm\" className=\"oui-text-base-contrast-80\">\n {capitalizeString(item.status)}\n </Text>\n </Flex>\n\n {/* Divider */}\n <div className=\"oui-w-full oui-h-[1px] oui-bg-base-6\" />\n\n {/* Token and Amount */}\n <Flex direction=\"row\" justify=\"between\" width=\"100%\">\n <Flex direction=\"column\" itemAlign={\"start\"}>\n <Text className=\"oui-text-base-contrast-36 oui-text-2xs\">\n {t(\"common.token\")}\n </Text>\n <Flex direction=\"row\" itemAlign=\"center\" gap={1}>\n <TokenIcon name={item.token} size=\"2xs\" />\n <Text size=\"xs\" className=\"oui-text-base-contrast-80\">\n {item.token}\n </Text>\n </Flex>\n </Flex>\n <Flex direction=\"column\" itemAlign=\"end\">\n <Text className=\"oui-text-base-contrast-36 oui-text-2xs\">\n {t(\"common.amount\")}\n </Text>\n <Text.numeral\n dp={6}\n className=\"oui-text-base-contrast-80 oui-text-xs\"\n >\n {item.amount}\n </Text.numeral>\n </Flex>\n </Flex>\n\n {/* From and To Account IDs */}\n <Flex direction=\"row\" justify=\"between\" width=\"100%\">\n <Flex direction=\"column\" gap={1}>\n <Text className=\"oui-text-base-contrast-36 oui-text-2xs\">\n {t(\"transfer.internalTransfer.from\")} ({t(\"common.accountId\")})\n </Text>\n <Flex direction=\"column\" gap={1} itemAlign={\"start\"}>\n <Flex direction=\"row\" itemAlign=\"center\" gap={1}>\n <Text.formatted\n rule=\"address\"\n copyable\n onCopy={onCopy}\n className=\"oui-text-base-contrast-80 oui-text-xs\"\n >\n {item.from_account_id}\n </Text.formatted>\n </Flex>\n <Badge color=\"neutral\" size=\"xs\">\n {isFromMainAccount\n ? t(\"common.mainAccount\")\n : fromSubAccount?.description || t(\"common.subAccount\")}\n </Badge>\n </Flex>\n </Flex>\n <Flex direction=\"column\" itemAlign=\"end\" gap={1}>\n <Text className=\"oui-text-base-contrast-36 oui-text-2xs\">\n {t(\"transfer.internalTransfer.to\")} ({t(\"common.accountId\")})\n </Text>\n <Flex direction=\"column\" itemAlign=\"end\" gap={1}>\n <Flex direction=\"row\" itemAlign=\"center\" gap={1}>\n <Text.formatted\n rule=\"address\"\n copyable\n onCopy={onCopy}\n className=\"oui-text-base-contrast-80 oui-text-xs\"\n >\n {item.to_account_id}\n </Text.formatted>\n </Flex>\n <Badge color=\"neutral\" size=\"xs\">\n {isToMainAccount\n ? t(\"common.mainAccount\")\n : toSubAccount?.description || t(\"common.subAccount\")}\n </Badge>\n </Flex>\n </Flex>\n </Flex>\n </Flex>\n );\n };\n\n return (\n <>\n <div className=\"oui-px-3\">\n <DataFilter\n onFilter={onFilter}\n items={produce(\n [\n {\n type: \"select\",\n name: \"side\",\n value: side,\n options: [\n { value: \"OUT\", label: t(\"common.outflow\") },\n { value: \"IN\", label: t(\"common.inflow\") },\n ],\n },\n {\n type: \"range\",\n name: \"dateRange\",\n value: {\n from: dateRange[0],\n to: dateRange[1],\n },\n },\n ],\n (draft) => {\n if (isMainAccount) {\n draft.unshift({\n type: \"select\",\n name: \"account\",\n value: selectedAccount as any,\n options: memoizedOptions,\n });\n }\n },\n )}\n />\n </div>\n <ListView\n dataSource={dataSource}\n renderItem={renderHistoryItem}\n contentClassName=\"!oui-space-y-1\"\n loadMore={loadMore}\n isLoading={isLoading}\n className=\"oui-px-1\"\n />\n </>\n );\n};\n","import React from \"react\";\nimport { useAccount } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { API, EMPTY_LIST } from \"@kodiak-finance/orderly-types\";\nimport {\n Flex,\n TokenIcon,\n Text,\n toast,\n Badge,\n} from \"@kodiak-finance/orderly-ui\";\nimport type { Column } from \"@kodiak-finance/orderly-ui\";\nimport { capitalizeString } from \"@kodiak-finance/orderly-utils\";\n\nexport const useColumns = () => {\n const { t } = useTranslation();\n const onCopy = () => {\n toast.success(t(\"common.copy.copied\"));\n };\n const { state } = useAccount();\n const sub = state.subAccounts ?? [];\n const columns = React.useMemo<Column<API.TransferHistoryRow>[]>(() => {\n return [\n {\n title: t(\"common.token\"),\n dataIndex: \"token\",\n width: 80,\n render(val: string) {\n return (\n <Flex gapX={2}>\n <TokenIcon name={val} size=\"xs\" />\n <span>{val}</span>\n </Flex>\n );\n },\n },\n {\n title: t(\"common.time\"),\n dataIndex: \"updated_time\",\n width: 120,\n rule: \"date\",\n },\n {\n title: `${t(\"transfer.internalTransfer.from\")} (${t(\"common.accountId\")})`,\n dataIndex: \"from_account_id\",\n render(val: string) {\n const isMainAccount = val === state.mainAccountId;\n const subAccount = sub.find((item) => item.id === val);\n return (\n <Flex itemAlign=\"start\" py={2} gap={1} direction=\"column\">\n <Text.formatted onCopy={onCopy} copyable rule=\"address\">\n {val}\n </Text.formatted>\n <Badge className=\"oui-select-none\" color=\"neutral\" size=\"xs\">\n {isMainAccount\n ? t(\"common.mainAccount\")\n : subAccount?.description || t(\"common.subAccount\")}\n </Badge>\n </Flex>\n );\n },\n },\n {\n title: `${t(\"transfer.internalTransfer.to\")} (${t(\"common.accountId\")})`,\n dataIndex: \"to_account_id\",\n render(val: string) {\n const isMainAccount = val === state.mainAccountId;\n const subAccount = sub.find((item) => item.id === val);\n return (\n <Flex itemAlign=\"start\" py={2} gap={1} direction=\"column\">\n <Text.formatted onCopy={onCopy} copyable rule=\"address\">\n {val}\n </Text.formatted>\n <Badge className=\"oui-select-none\" color=\"neutral\" size=\"xs\">\n {isMainAccount\n ? t(\"common.mainAccount\")\n : subAccount?.description || t(\"common.subAccount\")}\n </Badge>\n </Flex>\n );\n },\n },\n {\n title: t(\"common.status\"),\n dataIndex: \"status\",\n width: 120,\n render(val: string) {\n return capitalizeString(val);\n },\n },\n {\n title: t(\"common.amount\"),\n dataIndex: \"amount\",\n width: 80,\n },\n ];\n }, [t, state.mainAccountId, sub]);\n return columns;\n};\n","import React, { useMemo } from \"react\";\nimport { produce } from \"immer\";\nimport { useAccount } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport type { API } from \"@kodiak-finance/orderly-types\";\nimport { DataFilter, formatAddress } from \"@kodiak-finance/orderly-ui\";\nimport { AuthGuardDataTable } from \"@kodiak-finance/orderly-ui-connector\";\nimport type { SelectOption } from \"@kodiak-finance/orderly-ui/src/select/withOptions\";\nimport { useColumns } from \"./column\";\nimport type { useTransferHistoryHookReturn } from \"./useDataSource.script\";\n\ntype HistoryProps = useTransferHistoryHookReturn;\n\nexport enum AccountType {\n ALL = \"All accounts\",\n MAIN = \"Main accounts\",\n}\n\nexport const TransferHistoryUI: React.FC<\n Readonly<HistoryProps & ReturnType<typeof useAccount>>\n> = (props) => {\n const {\n dataSource,\n queryParameter,\n state,\n isMainAccount,\n isLoading,\n selectedAccount,\n onFilter,\n } = props;\n const { side, dateRange } = queryParameter;\n\n const { t } = useTranslation();\n\n const ALL_ACCOUNTS: SelectOption = {\n label: t(\"common.allAccount\"),\n value: AccountType.ALL,\n };\n\n const MAIN_ACCOUNT: SelectOption = {\n label: t(\"common.mainAccount\"),\n value: AccountType.MAIN,\n };\n\n const subAccounts = state.subAccounts ?? [];\n\n const memoizedOptions = useMemo(() => {\n if (Array.isArray(subAccounts) && subAccounts.length) {\n return [\n ALL_ACCOUNTS,\n MAIN_ACCOUNT,\n ...subAccounts.map<SelectOption>((value) => ({\n value: value.id,\n label: value?.description || formatAddress(value?.id),\n })),\n ];\n }\n return [ALL_ACCOUNTS, MAIN_ACCOUNT];\n }, [subAccounts]);\n\n const columns = useColumns();\n\n return (\n <>\n <DataFilter\n onFilter={onFilter}\n items={produce(\n [\n {\n type: \"select\",\n name: \"side\",\n value: side,\n options: [\n { value: \"OUT\", label: t(\"common.outflow\") },\n { value: \"IN\", label: t(\"common.inflow\") },\n ],\n },\n {\n type: \"range\",\n name: \"dateRange\",\n value: {\n from: dateRange[0],\n to: dateRange[1],\n },\n },\n ],\n (draft) => {\n if (isMainAccount) {\n draft.unshift({\n type: \"select\",\n name: \"account\",\n value: selectedAccount as any,\n options: memoizedOptions,\n });\n }\n },\n )}\n />\n <AuthGuardDataTable<API.TransferHistoryRow>\n bordered\n columns={columns}\n dataSource={dataSource}\n loading={isLoading}\n // isValidating={isValidating}\n className=\"oui-font-semibold\"\n classNames={{ root: \"oui-h-[calc(100%_-_49px)]\" }}\n pagination={props.pagination}\n generatedRowKey={(row) => row.id}\n />\n </>\n );\n};\n","import React from \"react\";\nimport { getDate, getMonth, getYear, set } from \"date-fns\";\nimport { useAccount, useTransferHistory } from \"@kodiak-finance/orderly-hooks\";\nimport { usePagination } from \"@kodiak-finance/orderly-ui\";\nimport type { PaginationMeta } from \"@kodiak-finance/orderly-ui\";\nimport { subtractDaysFromCurrentDate } from \"@kodiak-finance/orderly-utils\";\nimport { parseDateRangeForFilter } from \"../helper/date\";\nimport { AccountType } from \"./transfer.ui\";\n\nexport const useTransferHistoryHook = () => {\n // const today = useRef(setMinutes(setHours(new Date(), 23), 59));\n\n const today = React.useMemo<Date>(() => {\n const date = new Date();\n return new Date(getYear(date), getMonth(date), getDate(date), 0, 0, 0);\n }, []);\n\n const [dateRange, setDateRange] = React.useState<Date[]>([\n subtractDaysFromCurrentDate(90, today),\n today,\n ]);\n\n const { page, pageSize, setPage, parsePagination } = usePagination();\n\n const { state } = useAccount();\n\n const [selectedAccount, setAccount] = React.useState<string>(AccountType.ALL);\n\n const [side, setSide] = React.useState<\"IN\" | \"OUT\">(\"OUT\");\n\n const [data, { isLoading, meta }] = useTransferHistory({\n dataRange: [\n dateRange[0]?.getTime(),\n set(dateRange[1], {\n hours: 23,\n minutes: 59,\n seconds: 59,\n milliseconds: 0,\n })?.getTime(),\n ],\n side: side,\n size: pageSize,\n page: page,\n main_sub_only: true,\n });\n\n const filteredData = React.useMemo(() => {\n return data.filter((item) => {\n if (!selectedAccount || selectedAccount === AccountType.ALL) {\n return true;\n }\n if (selectedAccount === AccountType.MAIN) {\n return (\n item.from_account_id === state.mainAccountId ||\n item.to_account_id === state.mainAccountId\n );\n } else {\n return (\n item.from_account_id === selectedAccount ||\n item.to_account_id === selectedAccount\n );\n }\n });\n }, [data, selectedAccount]);\n\n const onAccountFilter = React.useCallback(\n (filter: { value: string; name: string }) => {\n if (filter.name === \"account\") {\n setAccount(filter.value);\n }\n if (filter.name === \"side\") {\n setSide(filter.value as \"IN\" | \"OUT\");\n }\n if (filter.name === \"dateRange\") {\n setDateRange(parseDateRangeForFilter(filter.value as any));\n }\n setPage(1);\n },\n [setPage],\n );\n\n const pagination = React.useMemo<PaginationMeta>(\n () => parsePagination(meta),\n [parsePagination, meta],\n );\n\n return {\n dataSource: filteredData,\n isLoading,\n // onDateRangeChange,\n queryParameter: {\n side,\n dateRange,\n },\n selectedAccount,\n onFilter: onAccountFilter,\n pagination,\n } as const;\n};\n\nexport type useTransferHistoryHookReturn = ReturnType<\n typeof useTransferHistoryHook\n>;\n","import React from \"react\";\nimport { useAccount } from \"@kodiak-finance/orderly-hooks\";\nimport { useScreen } from \"@kodiak-finance/orderly-ui\";\nimport { TransferHistoryMobileUI } from \"./transfer.mobile.ui\";\nimport { TransferHistoryUI } from \"./transfer.ui\";\nimport { useTransferHistoryHook } from \"./useDataSource.script\";\n\nexport const TransferHistoryWidget: React.FC = () => {\n const state = useTransferHistoryHook();\n const accountState = useAccount();\n const { isMobile } = useScreen();\n if (isMobile) {\n return <TransferHistoryMobileUI {...state} {...accountState} />;\n }\n return <TransferHistoryUI {...state} {...accountState} />;\n};\n","export { TransferHistoryWidget } from \"./transfer.widget\";\nexport { TransferHistoryUI } from \"./transfer.ui\";\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useMemo } from \"react\";\nimport { produce } from \"immer\";\nimport { useAccount, useCollateral } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport type { API } from \"@kodiak-finance/orderly-types\";\n\nconst EMPTY_HOLDING: Partial<API.Holding> = {\n token: \"USDC\",\n holding: 0,\n frozen: 0,\n};\n\n// Account data structure used in assets display\nexport interface AccountWithChildren {\n account_id: string;\n id?: string;\n description?: string;\n children: Array<API.Holding & { account_id: string }>;\n}\n\n// Hook to transform raw account data into display format\nexport const useAccountsData = (): AccountWithChildren[] => {\n const { t } = useTranslation();\n const { state, isMainAccount } = useAccount();\n const { holding = [] } = useCollateral();\n const subAccounts = state.subAccounts ?? [];\n\n return useMemo(() => {\n return produce<any[]>(subAccounts, (draft) => {\n // Process sub accounts\n for (const sub of draft) {\n sub.account_id = sub.id;\n if (Array.isArray(sub.holding) && sub.holding.length) {\n sub.children = sub.holding.map((item: API.Holding) => ({\n ...item,\n account_id: sub.id,\n }));\n } else {\n sub.children = [{ ...EMPTY_HOLDING, account_id: sub.id }];\n }\n // Remove original holding to avoid confusion\n Reflect.deleteProperty(sub, \"holding\");\n }\n\n // Add main account at the beginning if user is main account\n if (isMainAccount) {\n draft.unshift({\n account_id: state.mainAccountId!,\n description: t(\"common.mainAccount\"),\n children:\n Array.isArray(holding) && holding.length\n ? holding.map((item: API.Holding) => ({\n ...item,\n account_id: state.mainAccountId!,\n }))\n : [\n {\n ...EMPTY_HOLDING,\n account_id: state.mainAccountId!,\n },\n ],\n });\n }\n });\n }, [holding, subAccounts, isMainAccount, state.mainAccountId, t]);\n};\n","import { useMemo } from \"react\";\nimport {\n useAccount,\n useCollateral,\n useIndexPricesStream,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { SubAccount } from \"@kodiak-finance/orderly-hooks\";\nimport { Decimal } from \"@kodiak-finance/orderly-utils\";\nimport { useAccountsData } from \"./useAccountsData\";\n\nconst isNumber = (val: unknown): val is number => {\n return typeof val === \"number\" && !Number.isNaN(val);\n};\n\nexport const calculateTotalHolding = (\n data: SubAccount[] | SubAccount[\"holding\"],\n getIndexPrice: (token: string) => number,\n) => {\n let total = new Decimal(0);\n for (const item of data) {\n if (Array.isArray(item.holding)) {\n for (const hol of item.holding) {\n if (isNumber(hol.holding)) {\n const indexPrice = getIndexPrice(hol.token);\n total = total.plus(new Decimal(hol.holding).mul(indexPrice));\n }\n }\n } else if (isNumber(item.holding) && \"token\" in item) {\n const indexPrice = getIndexPrice(item.token);\n total = total.plus(new Decimal(item.holding).mul(indexPrice));\n }\n }\n return total;\n};\n\nexport const useAssetTotalValue = () => {\n const { state, isMainAccount } = useAccount();\n const { holding = [] } = useCollateral();\n const { getIndexPrice } = useIndexPricesStream();\n const allAccounts = useAccountsData();\n\n const subAccounts = state.subAccounts ?? [];\n\n // Calculate main account total value\n const mainTotalValue = useMemo<Decimal>(\n () => calculateTotalHolding(holding, getIndexPrice),\n [holding, getIndexPrice],\n );\n\n // Calculate sub accounts total value\n const subTotalValue = useMemo<Decimal>(\n () => calculateTotalHolding(subAccounts, getIndexPrice),\n [subAccounts, getIndexPrice],\n );\n\n // Calculate final total value\n const totalValue = useMemo<number>(() => {\n if (isMainAccount) {\n return mainTotalValue.plus(subTotalValue).toNumber();\n } else {\n const find = allAccounts.find((item) => item.id === state.accountId);\n if (Array.isArray(find?.children)) {\n return calculateTotalHolding(find.children, getIndexPrice).toNumber();\n }\n return 0;\n }\n }, [\n isMainAccount,\n mainTotalValue,\n subTotalValue,\n allAccounts,\n state.accountId,\n getIndexPrice,\n ]);\n\n return totalValue;\n};\n","import React, { useMemo } from \"react\";\nimport { SubAccount } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { useAppContext } from \"@kodiak-finance/orderly-react-app\";\nimport {\n Text,\n Card,\n Flex,\n gradientTextVariants,\n EyeIcon,\n EyeCloseIcon,\n cn,\n DataFilter,\n formatAddress,\n Tabs,\n TabPanel,\n ArrowDownShortIcon,\n Button,\n Divider,\n} from \"@kodiak-finance/orderly-ui\";\nimport { AuthGuardDataTable } from \"@kodiak-finance/orderly-ui-connector\";\nimport type { SelectOption } from \"@kodiak-finance/orderly-ui/src/select/withOptions\";\nimport pick from \"ramda/es/pick\";\nimport type { useAssetsScriptReturn } from \"./assets.script\";\nimport type {\n AssetsDataTableWidgetProps,\n AssetsWidgetProps,\n} from \"./assets.widget\";\n\nconst LazyConvertHistoryWidget = React.lazy(() =>\n import(\"../convertPage/convert.widget\").then((mod) => {\n return { default: mod.ConvertHistoryWidget };\n }),\n);\n\nexport type AssetsProps = useAssetsScriptReturn;\n\nexport enum AccountType {\n ALL = \"All accounts\",\n MAIN = \"Main accounts\",\n}\n\nconst TotalValueInfo: React.FC<\n Readonly<\n Pick<AssetsWidgetProps, \"totalValue\" | \"visible\" | \"onToggleVisibility\">\n >\n> = (props) => {\n const { totalValue, visible, onToggleVisibility } = props;\n const { t } = useTranslation();\n const Icon = visible ? EyeIcon : EyeCloseIcon;\n return (\n <Flex direction=\"column\" gap={1} className=\"oui-text-2xs\" itemAlign=\"start\">\n <Flex gap={1} justify=\"start\" itemAlign=\"center\">\n <Text size=\"2xs\" color=\"neutral\" weight=\"semibold\">\n {t(\"common.totalValue\")}\n </Text>\n <button onClick={onToggleVisibility}>\n <Icon size={18} className={cn(\"oui-text-base-contrast-54\")} />\n </button>\n </Flex>\n <Flex justify={\"start\"} itemAlign=\"end\" gap={1}>\n <Text.numeral\n visible={visible}\n weight=\"bold\"\n size=\"2xl\"\n className={gradientTextVariants({ color: \"brand\" })}\n as=\"div\"\n padding={false}\n dp={2}\n >\n {totalValue ?? \"--\"}\n </Text.numeral>\n <Text as=\"div\" weight=\"bold\" className=\"oui-leading-6\">\n USDC\n </Text>\n </Flex>\n </Flex>\n );\n};\n\nconst DepositAndWithdrawButton: React.FC<\n Readonly<\n Pick<AssetsWidgetProps, \"isMainAccount\" | \"onWithdraw\" | \"onDeposit\">\n >\n> = (props) => {\n const { t } = useTranslation();\n const { isMainAccount, onWithdraw, onDeposit } = props;\n const { wrongNetwork, disabledConnect } = useAppContext();\n if (!isMainAccount) {\n return null;\n }\n const mergedDisabled = wrongNetwork || disabledConnect;\n return (\n <Flex\n className=\"oui-text-2xs oui-text-base-contrast-54\"\n itemAlign=\"center\"\n gap={3}\n >\n <Button\n disabled={mergedDisabled}\n data-testid=\"oui-testid-assetView-deposit-button\"\n fullWidth\n size=\"md\"\n onClick={onDeposit}\n >\n <ArrowDownShortIcon\n color=\"white\"\n opacity={mergedDisabled ? 0.4 : 1}\n className=\"oui-rotate-0 oui-text-primary-contrast\"\n />\n <Text>{t(\"common.deposit\")}</Text>\n </Button>\n <Button\n fullWidth\n disabled={mergedDisabled}\n color=\"secondary\"\n size=\"md\"\n onClick={onWithdraw}\n data-testid=\"oui-testid-assetView-withdraw-button\"\n >\n <ArrowDownShortIcon\n color=\"white\"\n opacity={mergedDisabled ? 0.4 : 1}\n className=\"oui-rotate-180 oui-text-base-contrast\"\n />\n <Text>{t(\"common.withdraw\")}</Text>\n </Button>\n </Flex>\n );\n};\n\nconst DataFilterSection: React.FC<\n Pick<\n AssetsWidgetProps,\n | \"isMainAccount\"\n | \"onFilter\"\n | \"selectedAccount\"\n | \"selectedAsset\"\n | \"assetsOptions\"\n | \"state\"\n >\n> = (props) => {\n const { t } = useTranslation();\n const {\n isMainAccount,\n onFilter,\n selectedAccount,\n selectedAsset,\n assetsOptions,\n state,\n } = props;\n\n const ALL_ACCOUNTS: SelectOption = {\n label: t(\"common.allAccount\"),\n value: AccountType.ALL,\n };\n\n const MAIN_ACCOUNT: SelectOption = {\n label: t(\"common.mainAccount\"),\n value: AccountType.MAIN,\n };\n\n const ALL_ASSETS: SelectOption = {\n label: t(\"common.allAssets\", \"All assets\"),\n value: \"all\",\n };\n\n const subAccounts = useMemo<SubAccount[]>(() => {\n return state.subAccounts ?? [];\n }, [state.subAccounts]);\n\n const memoizedOptions = useMemo(() => {\n if (Array.isArray(subAccounts) && subAccounts.length) {\n return [\n ALL_ACCOUNTS,\n MAIN_ACCOUNT,\n ...subAccounts.map<SelectOption>((value) => ({\n value: value?.id,\n label: value?.description || formatAddress(value?.id),\n })),\n ];\n }\n return [ALL_ACCOUNTS, MAIN_ACCOUNT];\n }, [ALL_ACCOUNTS, MAIN_ACCOUNT, subAccounts]);\n\n const memoizedAssetOptions = useMemo(() => {\n return [ALL_ASSETS, ...assetsOptions];\n }, [ALL_ASSETS, assetsOptions]);\n\n if (!isMainAccount) {\n return null;\n }\n\n return (\n <DataFilter\n className=\"oui-border-none oui-py-0\"\n onFilter={onFilter}\n items={[\n {\n type: \"select\",\n name: \"account\",\n value: selectedAccount,\n options: memoizedOptions,\n },\n {\n type: \"select\",\n name: \"asset\",\n value: selectedAsset,\n options: memoizedAssetOptions,\n },\n ]}\n />\n );\n};\n\nexport const AssetsDataTable: React.FC<\n Pick<\n AssetsWidgetProps,\n | \"columns\"\n | \"dataSource\"\n | \"isMainAccount\"\n | \"onFilter\"\n | \"selectedAccount\"\n | \"selectedAsset\"\n | \"assetsOptions\"\n | \"state\"\n | \"canTrade\"\n > &\n AssetsDataTableWidgetProps\n> = (props) => {\n const { columns, dataSource, dataTableClassNames, classNames } = props;\n const { root, scrollRoot, desc } = classNames ?? {};\n\n if (!props.canTrade) {\n // show auth button when not can trade\n return (\n <AuthGuardDataTable\n classNames={{\n root: \"oui-rounded-xl oui-font-semibold\",\n }}\n loading={props.canTrade}\n columns={[]}\n dataSource={[]}\n />\n );\n }\n\n return (\n <Flex width=\"100%\" direction={\"column\"} className={root}>\n <DataFilterSection\n {...pick(\n [\n \"isMainAccount\",\n \"onFilter\",\n \"selectedAccount\",\n \"selectedAsset\",\n \"assetsOptions\",\n \"state\",\n ],\n props,\n )}\n />\n {dataSource?.map((item, index) => {\n return (\n <Flex\n key={`item-${index}`}\n className={cn(\"oui-rounded-xl oui-bg-base-9 oui-p-6\", scrollRoot)}\n direction={\"column\"}\n itemAlign={\"start\"}\n justify={\"between\"}\n my={4}\n >\n <Text\n className={cn(\"oui-mb-4\", desc)}\n intensity={98}\n weight=\"semibold\"\n size=\"lg\"\n >\n {item?.description || formatAddress(item?.id ?? \"\")}\n </Text>\n <AuthGuardDataTable\n bordered\n className=\"oui-font-semibold\"\n classNames={{\n scroll: cn(\n \"oui-h-auto oui-min-h-0 oui-overflow-x-auto oui-overflow-y-visible\",\n dataTableClassNames?.scroll,\n ),\n ...dataTableClassNames,\n }}\n columns={columns}\n dataSource={item.children}\n />\n </Flex>\n );\n })}\n </Flex>\n );\n};\n\nexport const AssetsTable: React.FC<AssetsWidgetProps> = (props) => {\n const { t } = useTranslation();\n return (\n <Card\n className=\"oui-border-none oui-bg-transparent oui-p-0 oui-shadow-none\"\n classNames={{ content: \"!oui-pt-0\" }}\n >\n <Tabs\n defaultValue=\"assets\"\n variant=\"contained\"\n classNames={{ tabsList: \"\" }}\n size=\"lg\"\n >\n <TabPanel value=\"assets\" className=\"\" title={t(\"common.assets\")}>\n <Flex\n className=\"oui-rounded-xl oui-bg-base-9 oui-p-6\"\n direction={\"row\"}\n itemAlign={\"center\"}\n justify={\"between\"}\n my={4}\n >\n <TotalValueInfo\n {...pick([\"totalValue\", \"visible\", \"onToggleVisibility\"], props)}\n />\n <DepositAndWithdrawButton\n {...pick([\"isMainAccount\", \"onDeposit\", \"onWithdraw\"], props)}\n />\n </Flex>\n <AssetsDataTable\n {...pick(\n [\n \"columns\",\n \"dataSource\",\n \"isMainAccount\",\n \"onFilter\",\n \"selectedAccount\",\n \"selectedAsset\",\n \"assetsOptions\",\n \"state\",\n \"canTrade\",\n ],\n props,\n )}\n classNames={{\n scrollRoot:\n \"oui-max-h-[700px] oui-overflow-y-auto oui-custom-scrollbar oui-w-full\",\n }}\n />\n </TabPanel>\n <TabPanel\n value=\"convertHistory\"\n className=\"oui-rounded-xl oui-bg-base-9 oui-px-6\"\n title={t(\"portfolio.overview.tab.convert.history\")}\n >\n <React.Suspense fallback={null}>\n <Flex\n direction=\"column\"\n mt={4}\n itemAlign=\"center\"\n className=\"oui-w-full\"\n >\n <Divider className=\"oui-w-full oui-border-b oui-border-line-4 oui-pt-6\" />\n <LazyConvertHistoryWidget />\n </Flex>\n </React.Suspense>\n </TabPanel>\n </Tabs>\n </Card>\n );\n};\n","import { useMemo } from \"react\";\nimport { useAccount } from \"@kodiak-finance/orderly-hooks\";\nimport { AccountType } from \"../pages/assets/assetsPage/assets.ui.desktop\";\n\n// Account filter function type\nexport type AccountFilterFunction<T = any> = (\n data: T[],\n selectedAccount: string,\n accountState: ReturnType<typeof useAccount>,\n) => T[];\n\n// Generic account filter utility\nexport const createAccountFilter = <T extends { account_id?: string }>(\n getAccountId?: (item: T) => string | undefined,\n): AccountFilterFunction<T> => {\n return (data, selectedAccount, accountState) => {\n const { state, isMainAccount } = accountState;\n\n return data.filter((item) => {\n const accountId = getAccountId ? getAccountId(item) : item.account_id;\n\n if (isMainAccount) {\n if (!selectedAccount || selectedAccount === AccountType.ALL) {\n return true;\n }\n if (selectedAccount === AccountType.MAIN) {\n return accountId === state.mainAccountId;\n } else {\n return accountId === selectedAccount;\n }\n } else {\n return accountId === state.accountId;\n }\n });\n };\n};\n\n// Hook for standard account-based data filtering\nexport const useAccountFilter = <T extends { account_id?: string }>(\n data: T[],\n selectedAccount: string,\n getAccountId?: (item: T) => string | undefined,\n): T[] => {\n const accountState = useAccount();\n\n return useMemo(() => {\n const { state, isMainAccount } = accountState;\n\n return data.filter((item) => {\n const accountId = getAccountId ? getAccountId(item) : item.account_id;\n\n if (isMainAccount) {\n if (!selectedAccount || selectedAccount === AccountType.ALL) {\n return true;\n }\n if (selectedAccount === AccountType.MAIN) {\n return accountId === state.mainAccountId;\n } else {\n return accountId === selectedAccount;\n }\n } else {\n return accountId === state.accountId;\n }\n });\n }, [data, selectedAccount, accountState, getAccountId]);\n};\n\n// Hook specifically for transfer history filtering\nexport const useTransferHistoryAccountFilter = <\n T extends { from_account_id?: string; to_account_id?: string },\n>(\n data: T[],\n selectedAccount: string,\n): T[] => {\n const accountState = useAccount();\n\n return useMemo(() => {\n const { state, isMainAccount } = accountState;\n\n return data.filter((item) => {\n if (isMainAccount) {\n if (!selectedAccount || selectedAccount === AccountType.ALL) {\n return true;\n }\n if (selectedAccount === AccountType.MAIN) {\n return (\n item.from_account_id === state.mainAccountId ||\n item.to_account_id === state.mainAccountId\n );\n } else {\n return (\n item.from_account_id === selectedAccount ||\n item.to_account_id === selectedAccount\n );\n }\n } else {\n return (\n item.from_account_id === state.accountId ||\n item.to_account_id === state.accountId\n );\n }\n });\n }, [data, selectedAccount, accountState]);\n};\n\n// Pre-defined account filters for common use cases\nexport const AccountFilters = {\n // Standard account filter factory\n standard: <T extends { account_id?: string }>() => createAccountFilter<T>(),\n\n // Transfer history filter factory\n transferHistory:\n <T extends { from_account_id?: string; to_account_id?: string }>() =>\n (\n data: T[],\n selectedAccount: string,\n accountState: ReturnType<typeof useAccount>,\n ): T[] => {\n const { state, isMainAccount } = accountState;\n\n return data.filter((item) => {\n if (isMainAccount) {\n if (!selectedAccount || selectedAccount === AccountType.ALL) {\n return true;\n }\n if (selectedAccount === AccountType.MAIN) {\n return (\n item.from_account_id === state.mainAccountId ||\n item.to_account_id === state.mainAccountId\n );\n } else {\n return (\n item.from_account_id === selectedAccount ||\n item.to_account_id === selectedAccount\n );\n }\n } else {\n return (\n item.from_account_id === state.accountId ||\n item.to_account_id === state.accountId\n );\n }\n });\n },\n\n // Custom account ID filter factory\n customAccountId: <T extends Record<string, any>>(accountIdKey: keyof T) =>\n createAccountFilter<T>((item) => item[accountIdKey] as string),\n};\n","import React, { useMemo } from \"react\";\nimport { useAccount } from \"@kodiak-finance/orderly-hooks\";\nimport { AccountType } from \"../pages/assets/assetsPage/assets.ui.desktop\";\n\n// Account filter hook for assets-like data structures\nexport const useAssetsAccountFilter = <T extends { account_id?: string }>(\n data: T[],\n) => {\n const { state, isMainAccount } = useAccount();\n const [selectedAccount, setSelectedAccount] = React.useState<string>(\n AccountType.ALL,\n );\n\n // Filter data based on selected account\n const filteredData = useMemo(() => {\n return data.filter((item) => {\n if (isMainAccount) {\n if (!selectedAccount || selectedAccount === AccountType.ALL) {\n return true;\n }\n if (selectedAccount === AccountType.MAIN) {\n return item.account_id === state.mainAccountId;\n } else {\n return item.account_id === selectedAccount;\n }\n } else {\n return item.account_id === state.accountId;\n }\n });\n }, [data, selectedAccount, isMainAccount, state]);\n\n // Handle filter changes\n const onAccountFilter = React.useCallback(\n (filter: { name: string; value: string }) => {\n const { name, value } = filter;\n if (name === \"account\") {\n setSelectedAccount(value);\n }\n },\n [],\n );\n\n return {\n selectedAccount,\n filteredData,\n onAccountFilter,\n setSelectedAccount,\n };\n};\n\n// Enhanced account and asset combined filter hook\nexport const useAssetsMultiFilter = <\n T extends {\n account_id?: string;\n children?: Array<{ token: string; [key: string]: any }>;\n },\n>(\n data: T[],\n) => {\n const { state, isMainAccount } = useAccount();\n const [selectedAccount, setSelectedAccount] = React.useState<string>(\n AccountType.ALL,\n );\n const [selectedAsset, setSelectedAsset] = React.useState<string>(\"all\");\n\n // Filter data based on both account and asset\n const filteredData = useMemo(() => {\n let accountFiltered = data;\n\n // First apply account filter\n if (isMainAccount) {\n if (selectedAccount && selectedAccount !== AccountType.ALL) {\n if (selectedAccount === AccountType.MAIN) {\n accountFiltered = data.filter(\n (item) => item.account_id === state.mainAccountId,\n );\n } else {\n accountFiltered = data.filter(\n (item) => item.account_id === selectedAccount,\n );\n }\n }\n } else {\n accountFiltered = data.filter(\n (item) => item.account_id === state.accountId,\n );\n }\n\n // Then apply asset filter\n if (selectedAsset && selectedAsset !== \"all\") {\n accountFiltered = accountFiltered\n .map((account) => {\n if (account.children) {\n const filteredChildren = account.children.filter(\n (child) => child.token === selectedAsset,\n );\n // Only include accounts that have the selected asset\n return filteredChildren.length > 0\n ? { ...account, children: filteredChildren }\n : null;\n }\n return account;\n })\n .filter(Boolean) as T[];\n }\n\n return accountFiltered;\n }, [data, selectedAccount, selectedAsset, isMainAccount, state]);\n\n // Handle combined filter changes\n const onFilter = React.useCallback(\n (filter: { name: string; value: string }) => {\n const { name, value } = filter;\n if (name === \"account\") {\n setSelectedAccount(value);\n } else if (name === \"asset\") {\n setSelectedAsset(value);\n }\n },\n [],\n );\n\n return {\n selectedAccount,\n selectedAsset,\n filteredData,\n onFilter,\n setSelectedAccount,\n setSelectedAsset,\n };\n};\n\n// Generic account filter function that can be used standalone\nexport const filterByAccount = <T extends { account_id?: string }>(\n data: T[],\n selectedAccount: string,\n accountState: {\n isMainAccount: boolean;\n state: {\n mainAccountId?: string;\n accountId?: string;\n };\n },\n): T[] => {\n const { isMainAccount, state } = accountState;\n\n return data.filter((item) => {\n if (isMainAccount) {\n if (!selectedAccount || selectedAccount === AccountType.ALL) {\n return true;\n }\n if (selectedAccount === AccountType.MAIN) {\n return item.account_id === state.mainAccountId;\n } else {\n return item.account_id === selectedAccount;\n }\n } else {\n return item.account_id === state.accountId;\n }\n });\n};\n","export * from \"./useAssetTotalValue\";\nexport * from \"./useAccountFilter\";\nexport * from \"./useAssetsAccountFilter\";\nexport * from \"./useAccountsData\";\n","import React, { useMemo, useState } from \"react\";\nimport { getDate, getMonth, getYear, set } from \"date-fns\";\nimport {\n useAccount,\n useCollateral,\n useIndexPricesStream,\n useSubAccountQuery,\n useAppStore,\n useChainInfo,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { EMPTY_LIST } from \"@kodiak-finance/orderly-types\";\nimport { usePagination } from \"@kodiak-finance/orderly-ui\";\nimport { subtractDaysFromCurrentDate } from \"@kodiak-finance/orderly-utils\";\nimport { useAccountsData, useAssetsAccountFilter } from \"../../../hooks\";\nimport { parseDateRangeForFilter } from \"../../overview/helper/date\";\nimport type { ConvertRecord } from \"../type\";\n\nexport const useConvertScript = () => {\n const { t } = useTranslation();\n const { isMainAccount, state } = useAccount();\n const { holding = [] } = useCollateral();\n const { data: indexPrices } = useIndexPricesStream();\n\n const { data: chainsInfo } = useChainInfo();\n\n // Pagination\n const { page, pageSize, setPage, parsePagination } = usePagination({\n page: 1,\n pageSize: 20,\n });\n\n // Use the same account data structure as assets\n const allAccounts = useAccountsData();\n\n const tokensInfo = useAppStore((state) => state.tokensInfo);\n\n // Use the same account filter logic as assets\n const { selectedAccount, onAccountFilter } =\n useAssetsAccountFilter(allAccounts);\n\n // Simple date range handling like other scripts\n const [today] = useState(() => {\n const d = new Date();\n return new Date(getYear(d), getMonth(d), getDate(d), 0, 0, 0);\n });\n\n const [dateRange, setDateRange] = useState<Date[]>([\n subtractDaysFromCurrentDate(90, today),\n today,\n ]);\n\n // Filter states (matching API fields)\n const [statusFilter, setStatusFilter] = useState<string>(\"all\");\n const [convertedAssetFilter, setConvertedAssetFilter] =\n useState<string>(\"all\");\n\n // Create asset options from holding data - similar to assets script\n const convertedAssetOptions = useMemo(() => {\n // Create options array\n const assetOptions =\n tokensInfo?.map((item) => ({\n value: item.token,\n label: item.token,\n })) || [];\n\n return [{ label: t(\"common.allAssets\"), value: \"all\" }, ...assetOptions];\n }, [tokensInfo, t]);\n\n // Handle all filters (including account filter and date range)\n const onFilter = React.useCallback(\n (filter: { name: string; value: string | { from: Date; to: Date } }) => {\n const { name, value } = filter;\n\n // Delegate account filter to the hook\n if (name === \"account\") {\n onAccountFilter(filter as { name: string; value: string });\n } else if (name === \"status\") {\n setStatusFilter(value as string);\n setPage(1); // Reset to first page when filter changes\n } else if (name === \"converted_asset\") {\n setConvertedAssetFilter(value as string);\n setPage(1);\n } else if (name === \"time\" || name === \"dateRange\") {\n setDateRange(\n parseDateRangeForFilter(value as { from: Date; to: Date }),\n );\n setPage(1);\n }\n },\n [onAccountFilter, setPage],\n );\n\n // Build query URL with parameters\n const queryUrl = React.useMemo(() => {\n const params = new URLSearchParams();\n\n // Add pagination parameters\n params.set(\"page\", page.toString());\n params.set(\"size\", pageSize.toString());\n\n // Add date range parameters\n if (dateRange[0]) {\n params.set(\"start_t\", dateRange[0].getTime().toString());\n }\n if (dateRange[1]) {\n params.set(\n \"end_t\",\n set(dateRange[1], {\n hours: 23,\n minutes: 59,\n seconds: 59,\n milliseconds: 0,\n })\n .getTime()\n .toString(),\n );\n }\n\n // Add filter parameters (only if not \"all\")\n if (statusFilter !== \"all\") {\n params.set(\"status\", statusFilter);\n }\n\n if (convertedAssetFilter !== \"all\") {\n params.set(\"converted_asset\", convertedAssetFilter);\n }\n\n return `/v1/asset/convert_history?${params.toString()}`;\n }, [page, pageSize, dateRange, statusFilter, convertedAssetFilter]);\n\n // Query convert history with all parameters\n const { data, isLoading } = useSubAccountQuery<{\n rows: ConvertRecord[];\n meta: {\n total: number;\n current_page: number;\n records_per_page: number;\n };\n }>(queryUrl, {\n accountId: isMainAccount ? state.mainAccountId : state.accountId,\n formatter: (data) => {\n return data;\n },\n });\n\n // Parse pagination from API response meta\n const pagination = useMemo(() => {\n if (data?.meta) {\n return parsePagination(data.meta);\n }\n return {\n page,\n pageSize,\n onPageChange: setPage,\n onPageSizeChange: () => {\n // Handle page size change if needed\n },\n };\n }, [data?.meta, parsePagination, page, pageSize, setPage]);\n\n // Calculate summary\n const summary = useMemo(() => {\n const dataRows = data?.rows || [];\n\n const totalConversions = dataRows.length;\n const totalUSDCReceived = dataRows.reduce(\n (sum, record) => sum + record.received_qty,\n 0,\n );\n const totalFees = dataRows.reduce(\n (sum, record) =>\n sum +\n record.details.reduce(\n (detailSum, detail) => detailSum + detail.haircut,\n 0,\n ),\n 0,\n );\n\n return {\n totalConversions,\n totalUSDCReceived,\n totalFees,\n };\n }, [data]);\n\n return {\n // Data\n dataSource: data?.rows || EMPTY_LIST,\n summary,\n pagination,\n\n // Filter state and handlers (compatible with assets)\n selectedAccount,\n onFilter,\n\n // Query parameters (consistent with other scripts)\n dateRange,\n\n // Filter states\n statusFilter,\n convertedAssetFilter,\n convertedAssetOptions,\n\n // State\n isMainAccount,\n isLoading,\n holding,\n\n // Index prices\n indexPrices,\n chainsInfo,\n };\n};\n\nexport type UseConvertScriptReturn = ReturnType<typeof useConvertScript>;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useMemo } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n Button,\n Flex,\n Text,\n TokenIcon,\n Tooltip,\n toast,\n} from \"@kodiak-finance/orderly-ui\";\nimport type { Column } from \"@kodiak-finance/orderly-ui\";\nimport type { ConvertRecord, ConvertTransaction } from \"../type\";\n\nexport interface ConvertColumnsOptions {\n onDetailsClick?: (convertId: number) => void;\n}\n\nexport interface ConvertDetailColumnsOptions {\n onTxClick?: (txId: string) => void;\n indexPrices: Record<string, number>;\n chainsInfo: any[];\n}\n\nexport const ConvertedAssetColumn = ({\n convertedAssets,\n}: {\n convertedAssets: Record<string, number>;\n}) => {\n const { t } = useTranslation();\n const assets = useMemo(() => {\n return Object.keys(convertedAssets);\n }, [convertedAssets]);\n\n const tooltipContent = useMemo(() => {\n return (\n <Flex\n direction=\"column\"\n gap={2}\n className=\"oui-w-[275px] oui-font-semibold oui-text-base-contrast-80\"\n >\n <Flex\n itemAlign=\"center\"\n justify=\"between\"\n className=\"oui-w-full oui-text-2xs oui-text-base-contrast-36\"\n >\n <div>{t(\"common.assets\")}</div>\n <div>{t(\"common.qty\")}</div>\n </Flex>\n {assets.map((asset) => (\n <Flex\n key={asset}\n itemAlign=\"center\"\n justify=\"between\"\n className=\"oui-w-full\"\n >\n <Flex itemAlign=\"center\" gap={1}>\n <TokenIcon size=\"xs\" name={asset} />\n <Text.formatted>{asset}</Text.formatted>\n </Flex>\n <div>\n <Text.formatted>{convertedAssets[asset]}</Text.formatted>\n </div>\n </Flex>\n ))}\n </Flex>\n );\n }, [assets]);\n\n return (\n <Flex itemAlign=\"center\" gap={2}>\n <div className=\"oui-relative oui-flex\">\n {assets.slice(0, 3).map((asset, index) => (\n <div\n key={asset}\n className=\"oui-relative\"\n style={{\n marginLeft: index > 0 ? \"-8px\" : \"0\",\n zIndex: assets.length + index,\n }}\n >\n <TokenIcon size=\"xs\" name={asset} />\n </div>\n ))}\n </div>\n <Tooltip content={tooltipContent}>\n <Text.formatted className=\"oui-cursor-pointer oui-underline oui-decoration-line-16 oui-decoration-dashed oui-underline-offset-4\">\n {assets.slice(0, 3).join(\", \")}{\" \"}\n {assets.length > 3 && `+${assets.length - 3}`}\n </Text.formatted>\n </Tooltip>\n </Flex>\n );\n};\n\nexport const useConvertColumns = (options: ConvertColumnsOptions) => {\n const { onDetailsClick } = options;\n const { t } = useTranslation();\n const onCopy = (e: any) => {\n e.preventDefault();\n e.stopPropagation();\n toast.success(t(\"common.copy.copied\"));\n };\n\n const columns = React.useMemo<Column[]>(() => {\n return [\n {\n title: t(\"portfolio.overview.column.convert.convertedAsset\"),\n dataIndex: \"converted_asset\",\n align: \"left\",\n width: 200,\n maxWidth: 200,\n render(convertedAssets: Record<string, number>) {\n return <ConvertedAssetColumn convertedAssets={convertedAssets} />;\n },\n },\n {\n title: t(\"portfolio.overview.column.convert.usdcAmount\"),\n dataIndex: \"received_qty\",\n align: \"left\",\n width: 150,\n render(qty: number) {\n return (\n <Text.numeral dp={6} padding={false}>\n {qty}\n </Text.numeral>\n );\n },\n },\n {\n title: t(\"common.fee\"),\n dataIndex: \"details\",\n align: \"left\",\n width: 120,\n render(details: ConvertRecord[\"details\"]) {\n const totalHaircut = details.reduce(\n (sum, detail) => sum + detail.haircut,\n 0,\n );\n return (\n <Text.numeral dp={6} padding={false}>\n {totalHaircut}\n </Text.numeral>\n );\n },\n },\n {\n title: t(\"common.type\"),\n dataIndex: \"type\",\n align: \"left\",\n width: 150,\n render(type: string) {\n return <Text>{type.charAt(0).toUpperCase() + type.slice(1)}</Text>;\n },\n },\n {\n title: t(\"portfolio.overview.column.convert.convertId\"),\n dataIndex: \"convert_id\",\n align: \"left\",\n width: 150,\n render(convertId: number) {\n return (\n <Text.formatted onCopy={onCopy} copyable>\n {convertId}\n </Text.formatted>\n );\n },\n },\n {\n title: t(\"common.time\"),\n dataIndex: \"created_time\",\n align: \"left\",\n width: 160,\n rule: \"date\",\n },\n {\n title: t(\"common.status\"),\n dataIndex: \"status\",\n align: \"left\",\n width: 150,\n render(status: string) {\n return (\n <Text>{status.charAt(0).toUpperCase() + status.slice(1)}</Text>\n );\n },\n },\n {\n title: \"\",\n dataIndex: \"updated_time\",\n align: \"center\",\n width: 80,\n render(convertId: number, record: ConvertRecord) {\n return (\n <Button\n size=\"sm\"\n variant=\"text\"\n className=\"oui-text-primary\"\n onClick={() => onDetailsClick?.(record.convert_id)}\n >\n {t(\"portfolio.overview.column.convert.details\")}\n </Button>\n );\n },\n },\n ];\n }, [onDetailsClick]);\n\n return columns;\n};\n\n// Converted asset, Qty., USDC amount, Fee, TxID, Network, Status\nexport const useConvertDetailColumns = (\n options: ConvertDetailColumnsOptions,\n) => {\n const { t } = useTranslation();\n const onCopy = (e: any) => {\n e.preventDefault();\n e.stopPropagation();\n toast.success(t(\"common.copy.copied\"));\n };\n const columns = React.useMemo<Column[]>(() => {\n return [\n {\n title: t(\"portfolio.overview.column.convert.convertedAsset\"),\n dataIndex: \"converted_asset\",\n align: \"left\",\n width: 150,\n render(asset: string) {\n return (\n <Flex itemAlign=\"center\" gap={2}>\n <TokenIcon name={asset} />\n {asset}\n </Flex>\n );\n },\n },\n {\n title: t(\"common.qty\"),\n dataIndex: \"converted_qty\",\n align: \"left\",\n width: 100,\n render(qty: number) {\n return (\n <Text.numeral dp={6} padding={false}>\n {qty}\n </Text.numeral>\n );\n },\n },\n {\n title: t(\"portfolio.overview.column.convert.usdcAmount\"),\n dataIndex: \"received_qty\",\n align: \"left\",\n width: 100,\n render(qty: number) {\n return (\n <Text.numeral dp={6} padding={false}>\n {qty}\n </Text.numeral>\n );\n },\n },\n {\n title: t(\"common.fee\"),\n dataIndex: \"haircut\",\n align: \"left\",\n width: 100,\n render(haircut: number) {\n return (\n <Text.numeral dp={6} padding={false}>\n {haircut}\n </Text.numeral>\n );\n },\n },\n {\n title: t(\"common.txId\"),\n dataIndex: \"tx_id\",\n align: \"left\",\n width: 150,\n render(txId: string, record: ConvertTransaction) {\n if (!txId) return <Text intensity={54}>-</Text>;\n const chainInfo = (options.chainsInfo as any[])?.find(\n (item) => record.chain_id === parseInt(item.chain_id),\n );\n const explorer_base_url = chainInfo?.explorer_base_url;\n const href = `${explorer_base_url}/tx/${txId}`;\n return (\n <a href={href} target=\"_blank\" rel=\"noreferrer\">\n <Text.formatted\n onCopy={onCopy}\n rule=\"txId\"\n copyable={!!txId}\n className=\"oui-cursor-pointer oui-underline oui-decoration-line-16 oui-decoration-dashed oui-underline-offset-4\"\n >\n {txId}\n </Text.formatted>\n </a>\n );\n },\n },\n {\n title: t(\"transfer.network\"),\n dataIndex: \"chain_id\",\n align: \"left\",\n width: 150,\n render(venue: string, record: ConvertTransaction) {\n return (\n <Text>\n {options.chainsInfo.find(\n (item) => item.chain_id == record.chain_id,\n )?.name || \"-\"}\n </Text>\n );\n },\n },\n {\n title: t(\"common.result\"),\n dataIndex: \"result\",\n align: \"left\",\n width: 100,\n render(result: string) {\n return (\n <Text>{result?.charAt(0).toUpperCase() + result?.slice(1)}</Text>\n );\n },\n },\n ];\n }, []);\n\n return columns;\n};\n","import { useMemo } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n DataFilter,\n Flex,\n DataTable,\n modal,\n SimpleDialog,\n Divider,\n} from \"@kodiak-finance/orderly-ui\";\nimport { useModal } from \"@kodiak-finance/orderly-ui\";\nimport { AuthGuardDataTable } from \"@kodiak-finance/orderly-ui-connector\";\nimport type { ConvertRecord } from \"../type\";\nimport { useConvertColumns, useConvertDetailColumns } from \"./convert.column\";\nimport { useConvertScript } from \"./convert.script\";\n\ntype ConvertDesktopUIProps = {\n convertState: ReturnType<typeof useConvertScript>;\n};\n\n// Convert Details Modal Component\nconst ConvertDetailsModal = modal.create<{\n record: ConvertRecord;\n indexPrices: Record<string, number>;\n chainsInfo: any[];\n}>((props) => {\n const { t } = useTranslation();\n const { visible, onOpenChange } = useModal();\n // console.log(props);\n\n const detailColumns = useConvertDetailColumns({\n indexPrices: props.indexPrices,\n chainsInfo: props.chainsInfo,\n });\n\n return (\n <SimpleDialog\n open={visible}\n onOpenChange={onOpenChange}\n title={t(\"portfolio.overview.convert.dialog.title.details\")}\n size=\"lg\"\n closable\n classNames={{\n content: \"oui-max-w-4xl\",\n }}\n >\n <DataTable\n columns={detailColumns}\n dataSource={props.record.details}\n bordered\n className=\"oui-w-full\"\n classNames={{\n header: \"oui-h-10\",\n root: \"oui-bg-base-8 oui-max-h-[60vh] oui-overflow-y-scroll oui-custom-scrollbar\",\n }}\n onRow={() => ({\n className: \"oui-h-[40px]\",\n })}\n generatedRowKey={(record) =>\n record.transaction_id || Math.random().toString()\n }\n />\n </SimpleDialog>\n );\n});\n\nexport const ConvertDesktopUI: React.FC<ConvertDesktopUIProps> = ({\n convertState,\n}) => {\n const { t } = useTranslation();\n\n const handleDetailsClick = (convertId: number) => {\n // Find the convert record by ID\n const record = convertState.dataSource.find(\n (item) => item.convert_id === convertId,\n );\n if (record) {\n modal.show(ConvertDetailsModal, {\n record,\n indexPrices: convertState.indexPrices,\n chainsInfo: convertState.chainsInfo as any,\n });\n }\n };\n\n const columns = useConvertColumns({\n onDetailsClick: handleDetailsClick,\n });\n\n const {\n convertedAssetFilter,\n statusFilter,\n dateRange,\n onFilter,\n convertedAssetOptions,\n } = convertState;\n\n const statusOptions = useMemo(\n () => [\n { label: t(\"common.status.all\"), value: \"all\" },\n { label: t(\"orders.status.completed\"), value: \"completed\" },\n { label: t(\"orders.status.pending\"), value: \"pending\" },\n ],\n [t],\n );\n\n const dataFilter = useMemo(() => {\n return (\n <DataFilter\n className=\"\"\n onFilter={onFilter}\n items={[\n // {\n // type: \"select\",\n // name: \"account\",\n // value: selectedAccount,\n // options: memoizedOptions,\n // },\n {\n type: \"select\",\n name: \"converted_asset\",\n value: convertedAssetFilter,\n options: convertedAssetOptions,\n },\n {\n type: \"select\",\n name: \"status\",\n value: statusFilter,\n options: statusOptions,\n },\n {\n type: \"range\",\n name: \"time\",\n value: {\n from: dateRange?.[0],\n to: dateRange?.[1],\n },\n },\n ]}\n />\n );\n }, [\n convertedAssetFilter,\n statusFilter,\n dateRange,\n onFilter,\n convertedAssetOptions,\n statusOptions,\n ]);\n\n return (\n <>\n {dataFilter}\n\n <AuthGuardDataTable\n bordered\n columns={columns}\n dataSource={convertState.dataSource}\n loading={convertState.isLoading}\n pagination={convertState.pagination}\n manualPagination\n className=\"oui-mt-4 oui-w-full\"\n classNames={{\n root: \"oui-h-[calc(100%_-_49px)]\",\n }}\n onRow={() => ({\n className: \"oui-h-[48px] oui-cursor-pointer\",\n })}\n generatedRowKey={(record) => {\n return record.convert_id.toString();\n }}\n />\n </>\n );\n};\n","import { useMemo } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n useModal,\n modal,\n Text,\n Divider,\n TokenIcon,\n Flex,\n DataFilter,\n SimpleSheet,\n toast,\n ScrollIndicator,\n} from \"@kodiak-finance/orderly-ui\";\nimport { ConvertRecord, ConvertTransaction } from \"../type\";\nimport { ConvertedAssetColumn } from \"./convert.column\";\nimport { useConvertScript } from \"./convert.script\";\n\ntype ConvertMobileUIProps = {\n convertState: ReturnType<typeof useConvertScript>;\n};\n\ntype ConvertMobileItemProps = {\n item?: any;\n chainsInfo: any[];\n};\n\ntype ConvertMobileFieldProps = {\n label: string;\n value?: string | number;\n className?: string;\n copyable?: boolean;\n rule?: \"address\" | \"txId\";\n onClick?: () => void;\n};\n\nexport const ConvertMobileUI: React.FC<ConvertMobileUIProps> = ({\n convertState,\n}) => {\n const { t } = useTranslation();\n\n const {\n convertedAssetFilter,\n statusFilter,\n dateRange,\n onFilter,\n convertedAssetOptions,\n } = convertState;\n\n const statusOptions = useMemo(\n () => [\n { label: t(\"common.status.all\"), value: \"all\" },\n { label: t(\"orders.status.completed\"), value: \"completed\" },\n { label: t(\"orders.status.pending\"), value: \"pending\" },\n ],\n [t],\n );\n\n const dataFilter = useMemo(() => {\n return (\n <DataFilter\n onFilter={onFilter}\n items={[\n // {\n // size: \"sm\",\n // type: \"picker\",\n // name: \"account\",\n // value: selectedAccount,\n // options: memoizedOptions,\n // },\n {\n size: \"md\",\n type: \"picker\",\n name: \"converted_asset\",\n value: convertedAssetFilter,\n options: convertedAssetOptions,\n className: \"oui-whitespace-nowrap\",\n },\n {\n size: \"md\",\n type: \"picker\",\n name: \"status\",\n value: statusFilter,\n options: statusOptions,\n className: \"oui-whitespace-nowrap\",\n },\n {\n type: \"range\",\n name: \"time\",\n value: {\n from: dateRange?.[0],\n to: dateRange?.[1],\n },\n },\n ]}\n />\n );\n }, [\n convertedAssetFilter,\n statusFilter,\n dateRange,\n onFilter,\n convertedAssetOptions,\n statusOptions,\n ]);\n\n return (\n <div className=\"oui-flex oui-flex-col oui-gap-1 oui-px-3\">\n <ScrollIndicator className=\"oui-pr-5\">\n <Flex direction=\"row\">{dataFilter}</Flex>\n </ScrollIndicator>\n {convertState.dataSource.map((item) => (\n <ConvertMobileItem\n key={item.convert_id}\n item={item}\n chainsInfo={convertState.chainsInfo as any}\n />\n ))}\n </div>\n );\n};\n\nconst ConvertMobileField: React.FC<ConvertMobileFieldProps> = ({\n label,\n value,\n rule,\n copyable = false,\n className = \"\",\n onClick,\n}) => {\n const { t } = useTranslation();\n const onCopy = (e: any) => {\n e.preventDefault();\n e.stopPropagation();\n toast.success(t(\"common.copy.copied\"));\n };\n return (\n <div\n className={`oui-text-2xs oui-font-semibold oui-text-base-contrast-80 [&_p]:oui-text-base-contrast-36 ${className}`}\n onClick={onClick}\n >\n <p>{label}</p>\n <Text.formatted rule={rule} copyable={copyable} onCopy={onCopy}>\n {value || \"-\"}\n </Text.formatted>\n </div>\n );\n};\n\nconst ConvertMobileItem: React.FC<ConvertMobileItemProps> = (props) => {\n const { item } = props;\n const { t } = useTranslation();\n\n if (!item) {\n return null;\n }\n\n const totalHaircut = item.details.reduce(\n (sum: number, detail: ConvertTransaction) => sum + detail.haircut,\n 0,\n );\n\n return (\n <div className=\"oui-flex oui-flex-col oui-gap-2 oui-rounded-xl oui-bg-base-9 oui-p-2\">\n <div className=\"oui-flex oui-justify-between\">\n <div className=\"oui-flex oui-items-center oui-text-xs oui-font-semibold oui-text-base-contrast-80\">\n <ConvertedAssetColumn convertedAssets={item.converted_asset} />\n <div\n className=\"oui-ml-2 oui-text-primary\"\n onClick={() => {\n modal.show(ConverHistoryItemDetailsDialog, {\n item,\n chainsInfo: props.chainsInfo,\n });\n }}\n >\n {t(\"portfolio.overview.column.convert.details\")}\n </div>\n </div>\n <Text.formatted\n className=\"oui-text-2xs oui-text-base-contrast-36\"\n rule=\"date\"\n >\n {item.created_time}\n </Text.formatted>\n </div>\n\n {/* 5 fields in grid container: 3 per row, wrap to next line */}\n <div className=\"oui-grid oui-grid-cols-3 oui-gap-2\">\n <ConvertMobileField\n label={t(\"portfolio.overview.column.convert.usdcAmount\")}\n value={item.received_qty}\n />\n <ConvertMobileField label={t(\"common.fee\")} value={totalHaircut} />\n <ConvertMobileField\n label={t(\"portfolio.overview.column.convert.convertId\")}\n value={item.convert_id}\n copyable={true}\n />\n <ConvertMobileField\n label={t(\"common.type\")}\n value={item.type?.charAt(0).toUpperCase() + item.type?.slice(1)}\n />\n <ConvertMobileField\n label={t(\"common.status\")}\n value={item.status?.charAt(0).toUpperCase() + item.status?.slice(1)}\n />\n </div>\n </div>\n );\n};\n\ntype ConvertHistoryItemDetailsDialogProps = {\n item: ConvertRecord;\n chainsInfo: any[];\n};\n\nconst ConverHistoryItemDetailsDialog =\n modal.create<ConvertHistoryItemDetailsDialogProps>((props) => {\n const { item, chainsInfo } = props;\n const { t } = useTranslation();\n const { visible, hide, resolve, reject, onOpenChange } = useModal();\n\n return (\n <SimpleSheet\n title={t(\"portfolio.overview.convert.dialog.title.details\")}\n open={visible}\n onOpenChange={onOpenChange}\n >\n <div className=\"oui-flex oui-h-[300px] oui-flex-col oui-gap-3 oui-overflow-y-auto oui-rounded-lg oui-bg-base-7 oui-p-2\">\n {item.details.map((detail, index) => (\n <>\n <div className=\"oui-flex oui-flex-col oui-gap-2\">\n <div className=\"oui-flex oui-items-center oui-gap-1\">\n <TokenIcon name={detail.converted_asset} size=\"xs\" />\n <div className=\"oui-text-xs oui-text-base-contrast-80\">\n {detail.converted_asset}\n </div>\n </div>\n <div className=\"oui-grid oui-grid-cols-3 oui-gap-2\">\n <ConvertMobileField\n label={t(\"common.qty\")}\n value={detail.converted_qty}\n />\n <ConvertMobileField\n label={t(\"portfolio.overview.column.convert.usdcAmount\")}\n value={detail.received_qty}\n />\n <ConvertMobileField label=\"Fee\" value={detail.haircut} />\n <ConvertMobileField\n label={t(\"common.txId\")}\n copyable={!!detail.tx_id}\n rule=\"txId\"\n value={detail.tx_id}\n onClick={() => {\n if (detail.tx_id) {\n const chainInfo = chainsInfo.find(\n (item) => item.chain_id == detail.chain_id,\n );\n if (chainInfo?.explorer_base_url) {\n window.open(\n `${chainInfo.explorer_base_url}/tx/${detail.tx_id}`,\n \"_blank\",\n );\n }\n }\n }}\n />\n <ConvertMobileField\n label={t(\"transfer.network\")}\n value={\n chainsInfo.find(\n (item) => item.chain_id == detail.chain_id,\n )?.name || \"-\"\n }\n />\n <ConvertMobileField\n label={t(\"common.result\")}\n value={\n detail.result\n ? detail.result.charAt(0).toUpperCase() +\n detail.result.slice(1)\n : \"-\"\n }\n />\n </div>\n </div>\n {index < item.details.length - 1 && <Divider />}\n </>\n ))}\n </div>\n </SimpleSheet>\n );\n });\n","import React from \"react\";\nimport { useScreen } from \"@kodiak-finance/orderly-ui\";\nimport { useConvertScript } from \"./convert.script\";\nimport { ConvertDesktopUI } from \"./convert.ui.desktop\";\nimport { ConvertMobileUI } from \"./convert.ui.mobile\";\n\nexport const ConvertHistoryWidget: React.FC = () => {\n const convertState = useConvertScript();\n const { isMobile } = useScreen();\n if (isMobile) {\n return <ConvertMobileUI convertState={convertState} />;\n }\n return <ConvertDesktopUI convertState={convertState} />;\n};\n","import React from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport type { API } from \"@kodiak-finance/orderly-types\";\nimport { Flex, TokenIcon, Text, cn } from \"@kodiak-finance/orderly-ui\";\nimport type { Column } from \"@kodiak-finance/orderly-ui\";\nimport { capitalizeString } from \"@kodiak-finance/orderly-utils\";\n\nexport const useColumns = () => {\n const { t } = useTranslation();\n const columns = React.useMemo<Column<API.StrategyVaultHistoryRow>[]>(() => {\n return [\n {\n title: t(\"common.type\"),\n dataIndex: \"type\",\n className: (record) => {\n if (record?.type === \"deposit\") {\n return \"oui-text-success\";\n }\n if (record?.type === \"withdrawal\") {\n return \"oui-text-danger\";\n }\n return \"\";\n },\n render(val: string) {\n if (val === \"deposit\") {\n return t(\"common.deposit\");\n }\n if (val === \"withdrawal\") {\n return t(\"common.withdraw\");\n }\n return null;\n },\n },\n {\n title: t(\"portfolio.overview.vaultName\"),\n dataIndex: \"vaultName\",\n },\n {\n title: t(\"common.token\"),\n dataIndex: \"token\",\n render(val: string) {\n return (\n <Flex justify=\"start\" itemAlign=\"center\" gap={2}>\n <TokenIcon name={val} />\n {val}\n </Flex>\n );\n },\n },\n {\n title: t(\"common.time\"),\n dataIndex: \"created_time\",\n rule: \"date\",\n },\n {\n title: t(\"common.status\"),\n dataIndex: \"status\",\n render(val: string) {\n return capitalizeString(val);\n },\n },\n {\n title: t(\"common.amount\"),\n dataIndex: \"amount_change\",\n render(val: number) {\n return (\n <Text.numeral\n showIdentifier\n className={cn(\n \"oui-select-none\",\n val >= 0 ? \"oui-text-success\" : \"oui-text-danger\",\n )}\n >\n {val}\n </Text.numeral>\n );\n },\n },\n ];\n }, [t]);\n return columns;\n};\n","import React from \"react\";\nimport type { API } from \"@kodiak-finance/orderly-types\";\nimport { DataFilter } from \"@kodiak-finance/orderly-ui\";\nimport { AuthGuardDataTable } from \"@kodiak-finance/orderly-ui-connector\";\nimport { useColumns } from \"./column\";\nimport type { useVaultsHistoryHookReturn } from \"./useDataSource.script\";\n\ntype HistoryProps = useVaultsHistoryHookReturn;\n\nexport const VaultsHistoryUI: React.FC<Readonly<HistoryProps>> = (props) => {\n const { dataSource, dateRange, isLoading, onFilter } = props;\n\n const columns = useColumns();\n\n return (\n <>\n <DataFilter\n onFilter={onFilter}\n items={[\n {\n type: \"range\",\n name: \"dateRange\",\n value: {\n from: dateRange[0],\n to: dateRange[1],\n },\n },\n ]}\n />\n <AuthGuardDataTable<API.StrategyVaultHistoryRow>\n bordered\n columns={columns}\n dataSource={dataSource}\n loading={isLoading}\n className=\"oui-font-semibold\"\n classNames={{ root: \"oui-h-[calc(100%_-_49px)]\" }}\n pagination={props.pagination}\n generatedRowKey={(row) => row.id}\n />\n </>\n );\n};\n","import React from \"react\";\nimport { getDate, getMonth, getYear, set } from \"date-fns\";\nimport { useVaultsHistory } from \"@kodiak-finance/orderly-hooks\";\nimport type { API } from \"@kodiak-finance/orderly-types\";\nimport { usePagination } from \"@kodiak-finance/orderly-ui\";\nimport type { PaginationMeta } from \"@kodiak-finance/orderly-ui\";\nimport { subtractDaysFromCurrentDate } from \"@kodiak-finance/orderly-utils\";\nimport { parseDateRangeForFilter } from \"../helper/date\";\n\nexport const useVaultsHistoryHook = () => {\n const today = React.useMemo<Date>(() => {\n const date = new Date();\n return new Date(getYear(date), getMonth(date), getDate(date), 0, 0, 0);\n }, []);\n\n const [dateRange, setDateRange] = React.useState<Date[]>([\n subtractDaysFromCurrentDate(90, today),\n today,\n ]);\n\n const { page, pageSize, setPage, parsePagination } = usePagination();\n\n const [data, { isLoading, meta }] = useVaultsHistory({\n dataRange: [\n dateRange[0]?.getTime(),\n set(dateRange[1], {\n hours: 23,\n minutes: 59,\n seconds: 59,\n milliseconds: 0,\n })?.getTime(),\n ],\n size: pageSize,\n page: page,\n });\n\n const dataSource = React.useMemo(() => {\n if (!Array.isArray(data) || !data.length) {\n return [];\n }\n return data.map<API.StrategyVaultHistoryRow>((item) => ({\n ...item,\n token: \"USDC\", // need to hard code for now\n vaultName: \"Orderly OmniVault\",\n amount_change:\n item.type === \"withdrawal\" ? -item.amount_change : item.amount_change,\n }));\n }, [data]);\n\n const onDateRangeFilter = React.useCallback(\n (filter: { value: string; name: string }) => {\n if (filter.name === \"dateRange\") {\n setDateRange(parseDateRangeForFilter(filter.value as any));\n }\n setPage(1);\n },\n [setPage],\n );\n\n const pagination = React.useMemo<PaginationMeta>(\n () => parsePagination(meta),\n [parsePagination, meta],\n );\n\n return {\n dataSource: dataSource,\n isLoading,\n dateRange,\n onFilter: onDateRangeFilter,\n pagination,\n } as const;\n};\n\nexport type useVaultsHistoryHookReturn = ReturnType<\n typeof useVaultsHistoryHook\n>;\n","import { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { Divider } from \"@kodiak-finance/orderly-ui\";\nimport { DataFilter, TokenIcon, ListView, Text } from \"@kodiak-finance/orderly-ui\";\nimport { useVaultsHistoryHookReturn } from \"./useDataSource.script\";\n\nexport const VaultsHistoryMobile = (props: useVaultsHistoryHookReturn) => {\n const { dateRange, onFilter, dataSource, isLoading, pagination } = props;\n const { t } = useTranslation();\n\n const loadMore = () => {\n if (dataSource.length < (pagination?.count || 0)) {\n pagination?.onPageSizeChange?.(pagination?.pageSize + 50);\n }\n };\n\n const renderHistoryItem = (item: any) => {\n const typeColor = item.type === \"deposit\" ? \"buy\" : \"sell\";\n const typeText =\n item.type === \"deposit\" ? t(\"common.deposit\") : t(\"common.withdraw\");\n const amountText = item.amount_change ? Math.abs(item.amount_change) : \"-\";\n return (\n <div className=\"oui-flex oui-flex-col oui-rounded-xl oui-bg-base-9 oui-p-2 oui-font-semibold\">\n <div className=\"oui-flex oui-items-center oui-justify-between oui-text-sm oui-text-base-contrast-80\">\n <div>{item.vaultName}</div>\n <div>\n {item.status?.slice(0, 1).toUpperCase() + item.status?.slice(1)}\n </div>\n </div>\n <Text.formatted rule=\"date\" intensity={36} size=\"2xs\">\n {item.created_time}\n </Text.formatted>\n <Divider className=\"oui-my-2\" />\n <div className=\"oui-flex oui-items-center [&>div]:oui-flex-1 [&>div]:oui-text-2xs [&>div]:oui-text-base-contrast-36\">\n <div>\n <div>{t(\"common.token\")}</div>\n <div className=\"oui-flex oui-items-center oui-gap-1 oui-text-xs oui-text-base-contrast-80\">\n <TokenIcon name={\"USDC\"} size=\"2xs\" />\n <Text>USDC</Text>\n </div>\n </div>\n <div>\n <div>{t(\"common.type\")}</div>\n <Text color={typeColor} className=\"oui-text-xs\">\n {typeText}\n </Text>\n </div>\n <div className=\"oui-text-right\">\n <div>{t(\"common.amount\")}</div>\n <div className=\"oui-text-xs oui-text-base-contrast-80\">\n {amountText}\n </div>\n </div>\n </div>\n </div>\n );\n };\n\n return (\n <>\n <DataFilter\n items={[\n {\n type: \"range\",\n name: \"dateRange\",\n value: {\n from: dateRange[0],\n to: dateRange[1],\n },\n },\n ]}\n onFilter={(value) => {\n onFilter(value);\n }}\n className=\"oui-sticky oui-top-[44px] oui-z-10 oui-border-none oui-bg-base-10 oui-px-3 oui-py-2\"\n />\n <ListView\n dataSource={dataSource}\n renderItem={renderHistoryItem}\n contentClassName=\"!oui-space-y-1\"\n loadMore={loadMore}\n isLoading={isLoading}\n className=\"oui-px-1\"\n />\n </>\n );\n};\n","import React from \"react\";\nimport { useScreen } from \"@kodiak-finance/orderly-ui\";\nimport { VaultsHistoryUI } from \"./transfer.ui\";\nimport { useVaultsHistoryHook } from \"./useDataSource.script\";\nimport { VaultsHistoryMobile } from \"./vaults.ui.mobile\";\n\nexport const VaultsHistoryWidget: React.FC = () => {\n const state = useVaultsHistoryHook();\n const { isMobile } = useScreen();\n if (isMobile) {\n return <VaultsHistoryMobile {...state} />;\n }\n return <VaultsHistoryUI {...state} />;\n};\n","export { VaultsHistoryWidget } from \"./transfer.widget\";\nexport { VaultsHistoryUI } from \"./transfer.ui\";\n","import React, { useEffect } from \"react\";\nimport { useAccount } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { AssetHistorySideEnum } from \"@kodiak-finance/orderly-types\";\nimport {\n ArrowDownSquareFillIcon,\n ArrowLeftRightSquareFill,\n ArrowUpSquareFillIcon,\n Card,\n FeeTierIcon,\n ServerFillIcon,\n TabPanel,\n Tabs,\n VaultsIcon,\n} from \"@kodiak-finance/orderly-ui\";\nimport type { TabName } from \"./historyDataGroup.script\";\n\nconst LazyAssetHistoryWidget = React.lazy(() =>\n import(\"../assetHistory\").then((mod) => {\n return { default: mod.AssetHistoryWidget };\n }),\n);\n\nconst LazyFundingHistoryWidget = React.lazy(() =>\n import(\"../funding\").then((mod) => {\n return { default: mod.FundingHistoryWidget };\n }),\n);\n\nconst LazyDistributionHistoryWidget = React.lazy(() =>\n import(\"../distribution\").then((mod) => {\n return { default: mod.DistributionHistoryWidget };\n }),\n);\n\nconst LazyTransferHistoryWidget = React.lazy(() =>\n import(\"../TransferHistory\").then((mod) => {\n return { default: mod.TransferHistoryWidget };\n }),\n);\n\nconst LazyConvertHistoryWidget = React.lazy(() =>\n import(\"../../assets/convertPage/convert.widget\").then((mod) => {\n return { default: mod.ConvertHistoryWidget };\n }),\n);\n\nconst LazyVaultsHistoryWidget = React.lazy(() =>\n import(\"../VaultsHistory\").then((mod) => {\n return { default: mod.VaultsHistoryWidget };\n }),\n);\n\nexport const HistoryDataGroupDesktop: React.FC<{\n active?: TabName;\n onTabChange: (tab: string) => void;\n}> = (props) => {\n const { active = \"deposit\", onTabChange } = props;\n const { t } = useTranslation();\n const { isMainAccount } = useAccount();\n useEffect(() => {\n if (active === \"vaults\" && !isMainAccount) {\n onTabChange(\"deposit\");\n }\n }, [active, isMainAccount]);\n return (\n <Card>\n <Tabs\n value={active}\n onValueChange={onTabChange}\n variant=\"contained\"\n size=\"xl\"\n >\n <TabPanel\n title={t(\"common.deposits\")}\n icon={<ArrowDownSquareFillIcon />}\n value={\"deposit\"}\n >\n <React.Suspense fallback={null}>\n <LazyAssetHistoryWidget side={AssetHistorySideEnum.DEPOSIT} />\n </React.Suspense>\n </TabPanel>\n <TabPanel\n title={t(\"common.withdrawals\")}\n icon={<ArrowUpSquareFillIcon />}\n value={\"withdraw\"}\n >\n <React.Suspense fallback={null}>\n <LazyAssetHistoryWidget side={AssetHistorySideEnum.WITHDRAW} />\n </React.Suspense>\n </TabPanel>\n <TabPanel\n title={t(\"common.funding\")}\n icon={<FeeTierIcon />}\n value={\"funding\"}\n >\n <React.Suspense fallback={null}>\n <LazyFundingHistoryWidget />\n </React.Suspense>\n </TabPanel>\n <TabPanel\n title={t(\"portfolio.overview.distribution\")}\n icon={<ServerFillIcon />}\n value={\"distribution\"}\n >\n <React.Suspense fallback={null}>\n <LazyDistributionHistoryWidget />\n </React.Suspense>\n </TabPanel>\n <TabPanel\n title={t(\"portfolio.overview.transferHistory\")}\n icon={<ArrowLeftRightSquareFill />}\n value={\"transfer\"}\n >\n <React.Suspense fallback={null}>\n <LazyTransferHistoryWidget />\n </React.Suspense>\n </TabPanel>\n <TabPanel\n title={t(\"portfolio.overview.tab.convert.history\")}\n value={\"convert\"}\n >\n <React.Suspense fallback={null}>\n <LazyConvertHistoryWidget />\n </React.Suspense>\n </TabPanel>\n {isMainAccount && (\n <TabPanel\n value={\"vaults\"}\n icon={<VaultsIcon />}\n title={t(\"portfolio.overview.vaults\")}\n >\n <React.Suspense fallback={null}>\n <LazyVaultsHistoryWidget />\n </React.Suspense>\n </TabPanel>\n )}\n </Tabs>\n </Card>\n );\n};\n","import React from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { AssetHistorySideEnum } from \"@kodiak-finance/orderly-types\";\nimport { TabPanel, Tabs } from \"@kodiak-finance/orderly-ui\";\nimport { ConvertHistoryWidget } from \"../../assets/convertPage/convert.widget\";\nimport { VaultsHistoryWidget } from \"../VaultsHistory/transfer.widget\";\nimport { AssetHistoryWidget } from \"../assetHistory\";\nimport { DistributionHistoryWidget } from \"../distribution\";\nimport { FundingHistoryWidget } from \"../funding\";\nimport { TabName } from \"./historyDataGroup.script\";\n\nconst LazyTransferHistoryWidget = React.lazy(() =>\n import(\"../TransferHistory\").then((mod) => {\n return { default: mod.TransferHistoryWidget };\n }),\n);\n\nexport const HistoryDataGroupMobile: React.FC<{\n active?: TabName;\n onTabChange: (tab: string) => void;\n}> = (props) => {\n const { active = \"deposit\", onTabChange } = props;\n const { t } = useTranslation();\n\n return (\n <Tabs\n value={active}\n onValueChange={onTabChange}\n variant=\"contained\"\n size=\"lg\"\n classNames={{\n tabsList: \"oui-px-3 oui-py-2\",\n scrollIndicator: \"oui-pr-3\",\n }}\n showScrollIndicator\n >\n <TabPanel title={t(\"common.deposits\")} value={\"deposit\"}>\n <AssetHistoryWidget side={AssetHistorySideEnum.DEPOSIT} />\n </TabPanel>\n <TabPanel title={t(\"common.withdrawals\")} value={\"withdraw\"}>\n <AssetHistoryWidget side={AssetHistorySideEnum.WITHDRAW} />\n </TabPanel>\n <TabPanel title={t(\"common.funding\")} value={\"funding\"}>\n <FundingHistoryWidget />\n </TabPanel>\n <TabPanel\n title={t(\"portfolio.overview.distribution\")}\n value={\"distribution\"}\n >\n <DistributionHistoryWidget />\n </TabPanel>\n <TabPanel\n title={t(\"portfolio.overview.transferHistory\")}\n value={\"transfer\"}\n >\n <React.Suspense fallback={null}>\n <LazyTransferHistoryWidget />\n </React.Suspense>\n </TabPanel>\n <TabPanel\n title={t(\"portfolio.overview.tab.convert.history\")}\n value={\"convert\"}\n >\n <ConvertHistoryWidget />\n </TabPanel>\n <TabPanel title={t(\"common.vaults\")} value={\"vaults\"}>\n <VaultsHistoryWidget />\n </TabPanel>\n </Tabs>\n );\n};\n","import { useScreen } from \"@kodiak-finance/orderly-ui\";\nimport { useHistoryDataGroupScript } from \"./historyDataGroup.script\";\nimport { HistoryDataGroupDesktop } from \"./historyDataGroup.ui.desktop\";\nimport { HistoryDataGroupMobile } from \"./historyDataGroup.ui.mobile\";\n\nexport const HistoryDataGroupWidget: React.FC = () => {\n const state = useHistoryDataGroupScript();\n const { isMobile } = useScreen();\n if (isMobile) {\n return <HistoryDataGroupMobile {...state} />;\n }\n return <HistoryDataGroupDesktop {...state} />;\n};\n","export { HistoryDataGroupWidget } from \"./historyDataGroup.widget\";\n","import { createContext, useContext } from \"react\";\nimport { TWType } from \"@kodiak-finance/orderly-hooks\";\nimport { UseRewardsDataReturn } from \"../mobile/useRewardsData.script\";\nimport { useAssetsHistoryDataReturn } from \"../shared/useAssetHistory\";\n\nexport type OverviewContextState = {\n // period: PeriodType;\n type?: TWType;\n} & useAssetsHistoryDataReturn &\n UseRewardsDataReturn;\n\nexport const OverviewContext = createContext<OverviewContextState>(\n {} as OverviewContextState,\n);\n\nexport const useOverviewContext = () => {\n return useContext(OverviewContext);\n};\n","import { useMemo } from \"react\";\nimport { useAccount } from \"@kodiak-finance/orderly-hooks\";\nimport { useAppContext, useDataTap } from \"@kodiak-finance/orderly-react-app\";\nimport { AccountStatusEnum } from \"@kodiak-finance/orderly-types\";\nimport { useOverviewContext } from \"../provider/overviewContext\";\n\nexport const useAssetsChartScript = () => {\n const assetHistory = useOverviewContext();\n\n const { wrongNetwork, disabledConnect } = useAppContext();\n const { state } = useAccount();\n\n const filteredData = useDataTap(assetHistory.data, {\n accountStatus:\n state.status === AccountStatusEnum.EnableTradingWithoutConnected\n ? AccountStatusEnum.EnableTradingWithoutConnected\n : AccountStatusEnum.EnableTrading,\n fallbackData: assetHistory.createFakeData(\n { account_value: 0 },\n { account_value: 500 },\n ),\n });\n\n const _data = useMemo(() => {\n if (filteredData?.length) {\n return filteredData;\n }\n return assetHistory.createFakeData(\n { account_value: 0 },\n { account_value: 500 },\n );\n }, [filteredData, assetHistory]);\n\n const invisible =\n wrongNetwork || disabledConnect || !assetHistory.data.length;\n\n return {\n ...assetHistory,\n data: _data,\n invisible,\n } as const;\n};\n\nexport type useAssetsChartScriptReturn = ReturnType<\n typeof useAssetsChartScript\n>;\n","import { useCallback, useMemo, useRef, useState } from \"react\";\nimport {\n useAssetsHistory,\n useCollateral,\n useIndexPricesStream,\n useLocalStorage,\n usePrivateQuery,\n useStatisticsDaily,\n useUserStatistics,\n useBalanceTopic,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { API } from \"@kodiak-finance/orderly-types\";\nimport { Decimal, zero } from \"@kodiak-finance/orderly-utils\";\nimport { subDays, format, differenceInDays } from \"date-fns\";\n\nexport enum PeriodType {\n DAY = \"1D\",\n WEEK = \"7D\",\n MONTH = \"30D\",\n QUARTER = \"90D\",\n}\n\nexport const useAssetsHistoryData = (\n localKey: string,\n options?: { isRealtime?: boolean },\n) => {\n const [today] = useState(() => new Date());\n\n const { getIndexPrice } = useIndexPricesStream();\n // const { account } = useAccount();\n\n const { t } = useTranslation();\n\n const { isRealtime = false } = options || {};\n const periodTypes = Object.values(PeriodType);\n\n const [period, setPeriod] = useLocalStorage<PeriodType | null>(\n localKey,\n PeriodType.MONTH,\n );\n\n const convertToUSDCAndOperate = useCallback(\n (inputs: {\n token: string;\n amount: string | number;\n value: Decimal;\n op?: \"add\" | \"sub\";\n }): Decimal => {\n const { token, amount, value, op = \"sub\" } = inputs;\n if (token.toUpperCase() === \"USDC\") {\n return op === \"add\" ? value.add(amount) : value.sub(amount);\n } else {\n const indexPrice = getIndexPrice(token);\n if (indexPrice) {\n const delta = new Decimal(amount).mul(indexPrice);\n return op === \"add\" ? value.add(delta) : value.sub(delta);\n }\n return value;\n }\n },\n [getIndexPrice],\n );\n\n const periodLabel = useMemo<Record<PeriodType, string>>(() => {\n return {\n [PeriodType.DAY]: t(\"common.select.1d\"),\n [PeriodType.WEEK]: t(\"common.select.7d\"),\n [PeriodType.MONTH]: t(\"common.select.30d\"),\n [PeriodType.QUARTER]: t(\"common.select.90d\"),\n };\n }, [t]);\n\n const formatDateRange = (date: Date): string => {\n return format(date, \"yyyy-MM-dd\");\n };\n\n const getExpectedDateRange = (offsetDay: number) => {\n return {\n from: subDays(new Date(), offsetDay - 1),\n to: new Date(),\n };\n };\n\n const getMatchingPeriodType = (from: Date, to: Date): PeriodType | null => {\n // Calculate days difference (inclusive - add 1 to include both start and end dates)\n const offsetDay = Math.abs(differenceInDays(from, to)) + 1;\n\n // Check against predefined periods\n const filterDays = [1, 7, 30, 90] as const;\n if (!filterDays.includes(offsetDay as any)) {\n return null;\n }\n\n // Validate that the date range matches the expected range for this period\n const expectedRange = getExpectedDateRange(offsetDay);\n if (\n formatDateRange(expectedRange.from) === formatDateRange(from) &&\n formatDateRange(expectedRange.to) === formatDateRange(to)\n ) {\n switch (offsetDay) {\n case 1:\n return PeriodType.DAY;\n case 7:\n return PeriodType.WEEK;\n case 30:\n return PeriodType.MONTH;\n case 90:\n return PeriodType.QUARTER;\n }\n }\n\n return null;\n };\n\n const getCustomDateRangeLabel = (from: Date, to: Date): string => {\n // Calculate days difference (inclusive - add 1 to include both start and end dates)\n const offsetDay = Math.abs(differenceInDays(from, to)) + 1;\n return `${offsetDay}D`;\n };\n\n const { totalValue } = useCollateral();\n\n const getStartDate = (value: PeriodType) => {\n switch (value) {\n case PeriodType.DAY:\n return subDays(today, 1);\n case PeriodType.WEEK:\n return subDays(today, 6);\n case PeriodType.MONTH:\n return subDays(today, 29);\n case PeriodType.QUARTER:\n return subDays(today, 89);\n default:\n return subDays(today, 6);\n }\n };\n\n const [startDate, setStartDate] = useState(getStartDate(period));\n const [endDate, setEndDate] = useState(today);\n\n const periodValue = useMemo(() => {\n if (period) {\n switch (period) {\n case PeriodType.DAY:\n return 1;\n case PeriodType.WEEK:\n return 7;\n case PeriodType.MONTH:\n return 30;\n case PeriodType.QUARTER:\n return 90;\n }\n }\n // For custom date ranges, calculate actual days\n return Math.abs(differenceInDays(startDate, endDate)) + 1;\n }, [period, startDate, endDate]);\n // const nowStamp = useRef(new Date().getTime().toString());\n // const now = useRef(new Date());\n\n // const endDate = useMemo(() => addDays(today, 1), [today]);\n\n const totalDeposit = useRef<Decimal>(zero);\n\n // get transfer history\n const { data: transferOutHistory, mutate: mutateTransferOut } =\n usePrivateQuery<API.TransferHistory>(\n `/v1/internal_transfer_history?page=1&size=200&side=OUT&start_t=${startDate.getTime()}&end_t=${endDate.getTime()}`,\n {\n revalidateOnFocus: false,\n },\n );\n const { data: transferInHistory, mutate: mutateTransferIn } =\n usePrivateQuery<API.TransferHistory>(\n `/v1/internal_transfer_history?page=1&size=200&side=IN&start_t=${startDate.getTime()}&end_t=${endDate.getTime()}`,\n {\n revalidateOnFocus: false,\n },\n );\n\n const [data] = useStatisticsDaily(\n {\n startDate: startDate.toISOString().split(\"T\")[0],\n endDate: endDate.toISOString().split(\"T\")[0],\n },\n {\n ignoreAggregation: true,\n },\n );\n\n const [userStatistics] = useUserStatistics();\n\n const todayVolume = useMemo(\n () => userStatistics?.perp_trading_volume_today ?? 0,\n [userStatistics],\n );\n\n // Refresh the transfer history once after the balance change event.\n const lastBalanceEventRef = useRef<number>(0);\n const refreshTransferHistory = useCallback(() => {\n const now = Date.now();\n if (now - lastBalanceEventRef.current < 15000) {\n return;\n }\n lastBalanceEventRef.current = now;\n mutateTransferOut?.(undefined, true);\n mutateTransferIn?.(undefined, true);\n }, [mutateTransferOut, mutateTransferIn]);\n\n useBalanceTopic({\n onMessage: () => {\n refreshTransferHistory();\n },\n });\n\n // get deposit & withdraw records to calculate the current PNL\n const [assetHistory] = useAssetsHistory({\n startTime: subDays(today, 2).getTime(),\n endTime: endDate.getTime(),\n pageSize: 50,\n });\n\n // get all deposit records to calculate the ROI\n const [allDepositHistory] = useAssetsHistory({\n side: \"DEPOSIT\",\n startTime: subDays(today, periodValue).getTime(),\n endTime: endDate.getTime(),\n pageSize: 200,\n });\n\n const totalDepositForROI = useMemo(() => {\n return allDepositHistory\n ?.filter((item) => item.trans_status === \"COMPLETED\")\n .reduce((acc, item) => {\n return acc.add(\n // item.amount\n convertToUSDCAndOperate({\n token: item.token,\n amount: item.amount,\n value: zero,\n op: \"add\",\n }),\n );\n }, zero);\n }, [allDepositHistory, convertToUSDCAndOperate]);\n\n const totalTransferInForROI = useMemo(() => {\n if (!Array.isArray(transferInHistory)) {\n return zero;\n }\n return transferInHistory\n ?.filter((item) => item.status === \"COMPLETED\")\n .reduce((acc, item) => {\n return acc.add(\n convertToUSDCAndOperate({\n token: item.token,\n amount: item.amount,\n value: zero,\n op: \"add\",\n }),\n );\n }, zero);\n }, [transferInHistory, convertToUSDCAndOperate]);\n\n const dateRange = useMemo(\n () => ({\n from: startDate,\n to: endDate,\n }),\n [startDate, endDate],\n );\n\n const onPeriodChange = (value: PeriodType) => {\n const newStartDate = getStartDate(value);\n setStartDate(newStartDate);\n setEndDate(today);\n setPeriod(value);\n };\n\n const setDateRange = (newRange: {\n from: Date | string;\n to: Date | string;\n }) => {\n const fromDate =\n newRange.from instanceof Date ? newRange.from : new Date(newRange.from);\n const toDate =\n newRange.to instanceof Date ? newRange.to : new Date(newRange.to);\n setStartDate(fromDate);\n setEndDate(toDate);\n\n // Check if the selected range matches a predefined period\n const matchingPeriod = getMatchingPeriodType(fromDate, toDate);\n if (matchingPeriod) {\n setPeriod(matchingPeriod);\n } else {\n // Reset period to null to indicate custom date range selection\n setPeriod(null);\n }\n };\n\n const onFilter = (filter: { name: string; value: any }) => {\n if (filter.name === \"dateRange\") {\n setDateRange(filter.value);\n }\n };\n\n const filterItems = useMemo(() => {\n const dateRangeFilter = {\n type: \"range\" as const,\n name: \"dateRange\",\n value: dateRange,\n max: 90,\n };\n return [dateRangeFilter] as any;\n }, [dateRange]);\n\n // const lastItem = data[data.length - 1];\n\n const lastItem = useMemo(() => {\n return data.length > 0 ? data[data.length - 1] : null;\n }, [data]);\n\n const totalTransferIn = useMemo(() => {\n if (!Array.isArray(transferInHistory)) {\n return null;\n }\n if (\n lastItem == null ||\n transferInHistory?.length === 0 ||\n typeof lastItem.snapshot_time === \"undefined\"\n ) {\n return zero;\n }\n const list = transferInHistory?.filter((item) => {\n return (\n item.status === \"COMPLETED\" &&\n item.created_time > lastItem?.snapshot_time\n );\n });\n return list?.reduce((acc, item) => {\n return acc.add(\n convertToUSDCAndOperate({\n token: item.token,\n amount: item.amount,\n value: zero,\n op: \"add\",\n }),\n );\n }, zero);\n }, [transferInHistory, lastItem, convertToUSDCAndOperate]);\n\n const totalTransferOut = useMemo(() => {\n if (!Array.isArray(transferOutHistory)) {\n return null;\n }\n if (\n lastItem == null ||\n transferOutHistory?.length === 0 ||\n typeof lastItem.snapshot_time === \"undefined\"\n ) {\n return zero;\n }\n const list = transferOutHistory?.filter((item) => {\n return (\n item.status === \"COMPLETED\" &&\n item.created_time > lastItem?.snapshot_time\n );\n });\n return list?.reduce((acc, item) => {\n return acc.add(\n convertToUSDCAndOperate({\n token: item.token,\n amount: item.amount,\n value: zero,\n op: \"add\",\n }),\n );\n }, zero);\n }, [transferOutHistory, lastItem, convertToUSDCAndOperate]);\n\n const calculateLastPnl = (inputs: {\n lastItem: API.DailyRow;\n assetHistory: ReadonlyArray<API.AssetHistoryRow> | API.AssetHistoryRow[];\n transferHistory: {\n OUT: Decimal;\n IN: Decimal;\n };\n totalValue: number | null;\n }) => {\n if (totalValue == null) {\n return null;\n }\n // today daily pnl = totalValue - lastItem.account_value - deposit + withdraw\n let value = new Decimal(totalValue).sub(inputs.lastItem.account_value);\n\n // subtraction of deposit and withdraw\n if (\n Array.isArray(inputs.assetHistory) &&\n inputs.assetHistory.length > 0 &&\n typeof inputs.lastItem.snapshot_time !== \"undefined\"\n ) {\n // find a list with the timestamp greater than the last item timestamp and trans_status = success;\n const list = [];\n\n for (let i = 0; i < inputs.assetHistory.length; i++) {\n const item = inputs.assetHistory[i];\n if (item.created_time > inputs.lastItem.snapshot_time) {\n list.push(item);\n }\n }\n\n // calculate the sum of deposit and withdraw\n for (let i = 0; i < list.length; i++) {\n const item = list[i];\n if (item.side === \"DEPOSIT\") {\n if (item.trans_status === \"COMPLETED\") {\n value = convertToUSDCAndOperate({\n token: item.token,\n amount: item.amount,\n value,\n op: \"sub\",\n });\n\n totalDeposit.current = convertToUSDCAndOperate({\n token: item.token,\n amount: item.amount,\n value: totalDeposit.current,\n op: \"add\",\n });\n }\n } else if (item.side === \"WITHDRAW\") {\n if (item.trans_status !== \"FAILED\") {\n value = convertToUSDCAndOperate({\n token: item.token,\n amount: item.amount,\n value,\n op: \"add\",\n });\n }\n }\n }\n }\n\n value = value\n .sub(inputs.transferHistory.IN)\n .add(inputs.transferHistory.OUT);\n\n return value.toNumber();\n };\n\n const calculate = (\n data: API.DailyRow[],\n totalValue: number | null,\n totalTransferIn: Decimal,\n totalTransferOut: Decimal,\n todayVol: number,\n ) => {\n const lastItem = data[data.length - 1];\n\n return {\n ...lastItem,\n date: getUTCStr(today),\n perp_volume: todayVol,\n account_value:\n totalValue !== null ? totalValue : (lastItem?.account_value ?? 0),\n pnl:\n calculateLastPnl({\n lastItem,\n assetHistory,\n totalValue,\n transferHistory: {\n OUT: totalTransferOut,\n IN: totalTransferIn,\n },\n }) ?? 0,\n __isCalculated: true,\n };\n };\n\n const mergeData = (\n data: ReadonlyArray<API.DailyRow> | API.DailyRow[],\n totalValue: number | null,\n totalTransferIn: Decimal,\n totalTransferOut: Decimal,\n todayVol: number,\n ) => {\n if (!Array.isArray(data) || data.length === 0) {\n return data;\n }\n\n if (data[data.length - 1].date === getUTCStr(today)) {\n return data;\n }\n\n return data.concat([\n calculate(data, totalValue, totalTransferIn, totalTransferOut, todayVol),\n ]);\n };\n\n const calculateData = (\n data: ReadonlyArray<API.DailyRow> | API.DailyRow[],\n realtime: boolean,\n totalValue: number | null,\n totalTransferIn: Decimal,\n totalTransferOut: Decimal,\n todayVol: number,\n ) => {\n const _data = !realtime\n ? data\n : mergeData(\n data,\n totalValue,\n totalTransferIn,\n totalTransferOut,\n todayVol,\n );\n\n return _data.slice(Math.max(0, _data.length - periodValue));\n };\n\n const calculatedData = useMemo(() => {\n /**\n * need the totalValue and data are all ready, else return null;\n */\n if (totalValue === null) {\n return [];\n }\n // if the transferOutHistory or transferInHistory is not ready, return null;\n\n if (totalTransferOut === null || totalTransferIn === null) {\n return [];\n }\n return calculateData(\n data,\n isRealtime,\n totalValue,\n totalTransferIn,\n totalTransferOut,\n todayVolume,\n );\n }, [\n data,\n totalValue,\n assetHistory,\n isRealtime,\n getIndexPrice,\n totalTransferIn,\n totalTransferOut,\n todayVolume,\n ]);\n\n const todayPerformance = useMemo(() => {\n if (!Array.isArray(calculatedData) || calculatedData.length === 0) {\n return null;\n }\n\n const todayRow = calculatedData[\n calculatedData.length - 1\n ] as API.DailyRow & {\n base_account_value?: number;\n __isCalculated?: boolean;\n };\n\n if (!todayRow.__isCalculated) {\n return null;\n }\n\n const baseAccountValue =\n typeof todayRow.base_account_value === \"number\"\n ? todayRow.base_account_value\n : (todayRow.account_value ?? 0);\n\n let roi = zero;\n if (baseAccountValue) {\n roi = new Decimal(todayRow.pnl).div(baseAccountValue);\n }\n\n return {\n pnl: todayRow.pnl,\n roi: roi.toNumber(),\n vol: todayRow.perp_volume ?? 0,\n };\n }, [calculatedData]);\n\n const aggregateValue = useMemo(() => {\n let vol = zero;\n let pnl = zero;\n let roi = zero;\n\n if (Array.isArray(calculatedData) && calculatedData.length) {\n calculatedData.forEach((d) => {\n vol = vol.add(d.perp_volume ?? 0);\n pnl = pnl.add(d.pnl);\n });\n\n const tail = calculatedData[0];\n\n const dataTailIndex = data.findIndex((d) => d.date === tail.date);\n\n const lastAccountValue = data[dataTailIndex - 1]?.account_value;\n\n if (typeof lastAccountValue === \"undefined\" || lastAccountValue === 0) {\n roi = zero;\n } else {\n roi = pnl.div(\n totalTransferInForROI.add(lastAccountValue).add(totalDepositForROI),\n );\n }\n }\n\n return { vol: vol.toNumber(), pnl: pnl.toNumber(), roi: roi.toNumber() };\n }, [calculatedData, data, totalTransferInForROI, totalDepositForROI]);\n\n const createFakeData = (\n start: Partial<API.DailyRow>,\n end: Partial<API.DailyRow>,\n ) => {\n return Array.from({ length: 2 }, (_, i) => {\n const date = format(i === 0 ? startDate : new Date(), \"yyyy-MM-dd\");\n return { date, ...(i === 0 ? start : end) };\n });\n };\n\n return {\n periodTypes,\n period: period as PeriodType | null,\n onPeriodChange: onPeriodChange,\n periodLabel: periodLabel,\n curPeriod: period\n ? periodLabel[period as PeriodType]\n : getCustomDateRangeLabel(startDate, endDate),\n // data: calculatedDataUpdateByIndexPrice, // calculatedData,\n data: calculatedData, // calculatedData,\n aggregateValue,\n createFakeData,\n volumeUpdateDate: data?.[data.length - 1]?.date ?? \"\",\n todayPerformance,\n filterItems,\n onFilter,\n dateRange,\n setDateRange,\n } as const;\n};\n\nexport type useAssetsHistoryDataReturn = ReturnType<\n typeof useAssetsHistoryData\n>;\n\nfunction getUTCStr(date: Date) {\n const year = date.getUTCFullYear();\n const month = `0${date.getUTCMonth() + 1}`.slice(-2);\n const day = `0${date.getUTCDate()}`.slice(-2);\n\n return `${year}-${month}-${day}`;\n}\n","import React, { useMemo } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { CardTitle, Flex, DataFilter } from \"@kodiak-finance/orderly-ui\";\nimport { PeriodType } from \"./useAssetHistory\";\n\nexport const PeriodTitle: React.FC<{\n onPeriodChange: (period: PeriodType) => void;\n periodTypes: string[];\n period: PeriodType | null;\n title: string;\n filterItems?: any[];\n onFilter?: (filter: { name: string; value: any }) => void;\n}> = (props) => {\n const { t } = useTranslation();\n\n const periodLabel = useMemo(() => {\n return {\n [PeriodType.DAY]: t(\"common.select.1d\"),\n [PeriodType.WEEK]: t(\"common.select.7d\"),\n [PeriodType.MONTH]: t(\"common.select.30d\"),\n [PeriodType.QUARTER]: t(\"common.select.90d\"),\n };\n }, [t]);\n\n const periodOrder = [\n PeriodType.DAY,\n PeriodType.WEEK,\n PeriodType.MONTH,\n PeriodType.QUARTER,\n ];\n\n return (\n <Flex itemAlign={\"center\"} justify={\"between\"}>\n <CardTitle>{props.title}</CardTitle>\n <Flex gap={2} itemAlign=\"center\">\n {props.filterItems && props.filterItems.length > 0 && (\n <DataFilter\n items={props.filterItems}\n onFilter={props.onFilter || (() => {})}\n className=\"oui-border-none oui-py-0\"\n />\n )}\n {periodOrder.map((periodType) => (\n <button\n key={periodType}\n className={`oui-px-3 oui-rounded oui-text-xs oui-font-medium oui-transition-colors ${\n props.period === periodType\n ? \"oui-bg-primary oui-text-white\"\n : \"oui-bg-base-6 oui-text-base-contrast-60 hover:oui-bg-base-4 hover:oui-text-base-contrast\"\n }`}\n onClick={() => props.onPeriodChange(periodType)}\n >\n {periodLabel[periodType]}\n </button>\n ))}\n </Flex>\n </Flex>\n );\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React from \"react\";\nimport { AssetAreaChart } from \"@kodiak-finance/orderly-chart\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { Card, Box } from \"@kodiak-finance/orderly-ui\";\nimport { useAssetsChartScriptReturn } from \"./assetsChart.script\";\n\nconst LazyPeriodTitle = React.lazy(() =>\n import(\"../shared/periodHeader\").then((mod) => {\n return { default: mod.PeriodTitle };\n }),\n);\n\nexport type AssetsLineChartProps = {} & useAssetsChartScriptReturn;\n\nexport const AssetsChart: React.FC<AssetsLineChartProps> = (props) => {\n const { onPeriodChange, data, periodTypes, period, filterItems, onFilter } =\n props;\n const { t } = useTranslation();\n return (\n <Card\n title={\n <Box>\n <React.Suspense fallback={null}>\n <LazyPeriodTitle\n onPeriodChange={onPeriodChange}\n periodTypes={periodTypes}\n period={period}\n title={t(\"common.assets\")}\n filterItems={filterItems}\n onFilter={onFilter}\n />\n </React.Suspense>\n </Box>\n }\n id=\"portfolio-overview-assets-chart\"\n classNames={{ content: \"oui-h-[168px] oui-pb-0\" }}\n >\n <React.Suspense fallback={null}>\n <AssetAreaChart data={data as any} invisible={props.invisible} />\n </React.Suspense>\n </Card>\n );\n};\n","import React from \"react\";\nimport { useAssetsChartScript } from \"./assetsChart.script\";\nimport { AssetsChart } from \"./assetsChart.ui\";\n\nexport const AssetsChartWidget: React.FC = () => {\n const state = useAssetsChartScript();\n return <AssetsChart {...state} />;\n};\n","export { AssetsChartWidget } from \"./assetsChart.widget\";\nexport { useAssetsChartScript } from \"./assetsChart.script\";\nexport { AssetsChart } from \"./assetsChart.ui\";\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useState } from \"react\";\nimport {\n PnlAreaChart,\n PnLBarChart,\n VolBarChart,\n} from \"@kodiak-finance/orderly-chart\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { EMPTY_LIST } from \"@kodiak-finance/orderly-types\";\nimport {\n Card,\n Grid,\n Box,\n Statistic,\n Text,\n Flex,\n Tooltip,\n cn,\n Tabs,\n TabPanel,\n} from \"@kodiak-finance/orderly-ui\";\nimport { Decimal } from \"@kodiak-finance/orderly-utils\";\nimport type { UsePerformanceScriptReturn } from \"./performance.script\";\n\nconst LazyPeriodTitle = React.lazy(() =>\n import(\"../shared/periodHeader\").then((mod) => {\n return { default: mod.PeriodTitle };\n }),\n);\n\nexport type PerformanceUIProps = {\n // periodTypes: string[];\n // period: string;\n // onPeriodChange: (period: string) => void;\n} & UsePerformanceScriptReturn;\n\nconst formatForChart = (value: number | null | undefined, dp: number = 2) => {\n if (value == null) return 0;\n const decimal = new Decimal(value);\n return Number(decimal.toFixed(dp, Decimal.ROUND_HALF_UP));\n};\n\ntype LabelWithHintProps = {\n label: string;\n hint?: React.ReactNode;\n};\n\nconst LabelWithHint: React.FC<LabelWithHintProps> = (props) => {\n const { label, hint } = props;\n return (\n <Tooltip\n open={hint ? undefined : false}\n content={hint}\n className=\"oui-max-w-[240px] oui-bg-base-6 \"\n arrow={{ className: \"oui-fill-base-6\" }}\n delayDuration={300}\n >\n <Text\n size=\"xs\"\n intensity={36}\n className={cn(\n hint &&\n \"oui-cursor-pointer oui-border-b oui-border-dashed oui-border-line-12\",\n )}\n >\n {label}\n </Text>\n </Tooltip>\n );\n};\n\nexport const PerformancePnL: React.FC<{\n data: ReadonlyArray<any> | any[];\n invisible: boolean;\n}> = (props) => {\n const { t } = useTranslation();\n const chartData = React.useMemo(\n () =>\n (props.data ?? []).map((d) => ({\n ...d,\n pnl: formatForChart(d.pnl),\n })),\n [props.data],\n );\n\n return (\n <Box mt={4} height={\"188px\"}>\n <Text as=\"div\" size=\"sm\" className=\"oui-mb-3\">\n {t(\"portfolio.overview.performance.dailyPnl\")}\n </Text>\n <Box r=\"md\" className=\"oui-h-[188px] oui-border oui-border-line-4\">\n <PnLBarChart\n data={chartData}\n invisible={props.invisible || (chartData?.length ?? 0) <= 2}\n />\n </Box>\n </Box>\n );\n};\n\nexport const CumulativePnlChart: React.FC<{\n data: ReadonlyArray<any> | any[];\n invisible: boolean;\n}> = (props) => {\n const { t } = useTranslation();\n return (\n <Box mt={4}>\n <Text as=\"div\" size=\"sm\" className=\"oui-mb-3\">\n {t(\"portfolio.overview.performance.cumulativePnl\")}\n </Text>\n <Box r=\"md\" className=\"oui-h-[188px] oui-border oui-border-line-4\">\n <PnlAreaChart\n data={props.data}\n invisible={props.invisible || (props.data?.length ?? 0) <= 2}\n />\n </Box>\n </Box>\n );\n};\n\nexport const PerformancePnLTabs: React.FC<{\n data: ReadonlyArray<any> | any[];\n invisible: boolean;\n}> = (props) => {\n const { t } = useTranslation();\n const [activeTab, setActiveTab] = useState(\"daily\");\n\n return (\n <Box mt={4}>\n <Tabs value={activeTab} onValueChange={setActiveTab} variant=\"contained\">\n <TabPanel\n value=\"daily\"\n title={t(\"portfolio.overview.performance.dailyPnl\")}\n >\n <Box\n r=\"md\"\n className=\"oui-mt-4 oui-h-[188px] oui-border oui-border-line-4\"\n >\n <PnLBarChart\n data={props.data}\n invisible={props.invisible || (props.data?.length ?? 0) <= 2}\n />\n </Box>\n </TabPanel>\n <TabPanel\n value=\"cumulative\"\n title={t(\"portfolio.overview.performance.cumulativePnl\")}\n >\n <Box\n r=\"md\"\n className=\"oui-mt-4 oui-h-[188px] oui-border oui-border-line-4\"\n >\n <PnlAreaChart\n data={props.data}\n invisible={props.invisible || (props.data?.length ?? 0) <= 2}\n />\n </Box>\n </TabPanel>\n </Tabs>\n </Box>\n );\n};\n\nexport const VolumeChart: React.FC<{\n data: ReadonlyArray<any> | any[];\n invisible: boolean;\n curPeriod?: string;\n}> = (props) => {\n const { t } = useTranslation();\n\n const volumeData = (props.data ?? []).map((item: any) => ({\n date: item.date,\n volume: item.perp_volume ?? 0,\n opacity: (item.perp_volume ?? 0) > 0 ? 1 : 0,\n }));\n\n const shouldHide = props.invisible || (props.data?.length ?? 0) <= 2;\n\n return (\n <Box mt={4}>\n <Text as=\"div\" size=\"sm\" className=\"oui-mb-3\">\n {t(\"portfolio.overview.performance.volume\", {\n period: props.curPeriod ?? \"\",\n })}\n </Text>\n <Box\n r=\"md\"\n className={cn(\n \"oui-mt-6 oui-h-[188px] oui-border oui-border-line-4\",\n shouldHide && \"chart-invisible\",\n )}\n >\n <VolBarChart data={volumeData} className=\"oui-size-full\" />\n </Box>\n </Box>\n );\n};\n\nexport const PerformanceUI: React.FC<PerformanceUIProps> = (props) => {\n const {\n periodTypes,\n period,\n onPeriodChange,\n aggregateValue,\n invisible,\n visible,\n curPeriod,\n filterItems,\n onFilter,\n } = props;\n const { t } = useTranslation();\n\n return (\n <Card\n title={\n <Box pt={6}>\n <React.Suspense fallback={null}>\n <LazyPeriodTitle\n onPeriodChange={onPeriodChange}\n periodTypes={periodTypes}\n period={period}\n title={t(\"portfolio.overview.performance\")}\n filterItems={filterItems}\n onFilter={onFilter}\n />\n </React.Suspense>\n </Box>\n }\n id=\"portfolio-overview-performance\"\n >\n <Box pb={4}>\n <Grid cols={3} gap={4}>\n <Box\n gradient=\"neutral\"\n r=\"md\"\n px={4}\n py={2}\n angle={184}\n border\n borderColor={6}\n >\n <Statistic\n label={\n <LabelWithHint\n label={t(\"portfolio.overview.performance.roi\", {\n period: curPeriod,\n })}\n hint={t(\"portfolio.overview.performance.roi.tooltip\")}\n />\n }\n valueProps={{ rule: \"percentages\", coloring: true, visible }}\n >\n {invisible ? \"--\" : aggregateValue.roi}\n </Statistic>\n </Box>\n <Box\n gradient=\"neutral\"\n r=\"md\"\n px={4}\n py={2}\n angle={184}\n border\n borderColor={6}\n >\n <Statistic\n label={\n <LabelWithHint\n label={t(\"portfolio.overview.performance.pnl\", {\n period: curPeriod,\n })}\n hint={t(\"portfolio.overview.performance.pnl.tooltip\")}\n />\n }\n valueProps={{ coloring: true, showIdentifier: true, visible }}\n >\n {invisible ? \"--\" : aggregateValue.pnl}\n </Statistic>\n </Box>\n <Box\n gradient=\"neutral\"\n r=\"md\"\n px={4}\n py={2}\n angle={184}\n border\n borderColor={6}\n >\n <Statistic\n classNames={{\n label: \"oui-w-full\",\n }}\n label={\n <LabelWithHint\n label={t(\"portfolio.overview.performance.volume\", {\n period: curPeriod,\n })}\n hint={t(\"portfolio.overview.performance.volume.tooltip\")}\n />\n }\n valueProps={{ visible }}\n >\n {invisible ? \"--\" : aggregateValue.vol}\n </Statistic>\n </Box>\n </Grid>\n <Grid cols={2} gap={4} mb={4}>\n <PerformancePnLTabs\n data={props.data ?? EMPTY_LIST}\n invisible={props.invisible}\n />\n <VolumeChart\n data={props.data ?? EMPTY_LIST}\n invisible={props.invisible}\n curPeriod={props.curPeriod}\n />\n </Grid>\n </Box>\n </Card>\n );\n};\n","// Asset conversion types\nexport interface ConvertedAssets {\n [asset: string]: number;\n}\n\nexport interface ConvertTransaction {\n transaction_id: number;\n venue: \"on_chain\" | \"internal_fund\";\n converted_asset: string;\n received_asset: string;\n converted_qty: number;\n received_qty: number;\n haircut: number;\n chain_id?: number; // Optional, only for on_chain venue\n tx_id?: string; // Optional, only for on_chain venue\n result?: string;\n}\n\nexport interface ConvertRecord {\n convert_id: number;\n converted_asset: ConvertedAssets;\n received_asset: string;\n received_qty: number;\n type: \"auto\" | \"manual\";\n status: \"completed\" | \"pending\" | \"failed\" | \"cancelled\";\n created_time: number;\n updated_time: number;\n details: ConvertTransaction[];\n}\n\n// Additional utility types\nexport type ConvertType = \"auto\" | \"manual\";\n\nexport type ConvertStatus = \"completed\" | \"pending\" | \"failed\" | \"cancelled\";\n\nexport type VenueType = \"on_chain\" | \"internal_fund\";\n\nexport const ORDERLY_ASSETS_VISIBLE_KEY = \"orderly_assets_visible\";\n","import { useMemo } from \"react\";\nimport { useAccount, useLocalStorage } from \"@kodiak-finance/orderly-hooks\";\nimport { useAppContext, useDataTap } from \"@kodiak-finance/orderly-react-app\";\nimport { AccountStatusEnum } from \"@kodiak-finance/orderly-types\";\nimport { ORDERLY_ASSETS_VISIBLE_KEY } from \"../../assets/type\";\nimport { useOverviewContext } from \"../provider/overviewContext\";\n\nexport const usePerformanceScript = () => {\n const ctx = useOverviewContext();\n const [visible, setVisible] = useLocalStorage<boolean>(\n ORDERLY_ASSETS_VISIBLE_KEY,\n true,\n );\n\n const { wrongNetwork, disabledConnect } = useAppContext();\n const { state } = useAccount();\n const filteredData = useDataTap(ctx?.data, {\n accountStatus:\n state.status === AccountStatusEnum.EnableTradingWithoutConnected\n ? AccountStatusEnum.EnableTradingWithoutConnected\n : AccountStatusEnum.EnableTrading,\n fallbackData: ctx?.createFakeData?.(\n { account_value: 0, pnl: 0 },\n { account_value: 500, pnl: 500 },\n ),\n });\n\n const _data = useMemo(() => {\n if (filteredData?.length) {\n return filteredData;\n }\n return ctx?.createFakeData?.(\n { account_value: 0, pnl: 0 },\n { account_value: 500, pnl: 500 },\n );\n }, [ctx, filteredData]);\n\n const invisible =\n wrongNetwork ||\n disabledConnect ||\n (state.status < AccountStatusEnum.EnableTrading &&\n state.status !== AccountStatusEnum.EnableTradingWithoutConnected);\n\n return {\n ...ctx,\n data: _data as ReadonlyArray<any>,\n invisible,\n visible: visible as boolean,\n setVisible: setVisible,\n };\n};\n\nexport type UsePerformanceScriptReturn = ReturnType<\n typeof usePerformanceScript\n>;\n","import React from \"react\";\nimport { usePerformanceScript } from \"./performance.script\";\nimport { PerformanceUI } from \"./performance.ui\";\n\nexport const PerformanceWidget: React.FC = () => {\n const state = usePerformanceScript();\n return <PerformanceUI {...state} />;\n};\n","export { PerformanceUI } from \"./performance.ui\";\nexport { PerformanceWidget } from \"./performance.widget\";\nexport { usePerformanceScript } from \"./performance.script\";\n","import React, { useId } from \"react\";\n\nexport const EffectiveFee = React.forwardRef<\n SVGSVGElement,\n React.SVGAttributes<SVGSVGElement>\n>((props, ref) => {\n const linearId = useId();\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={14}\n height={14}\n viewBox=\"0 0 14 14\"\n fill=\"currentColor\"\n ref={ref}\n focusable={false}\n {...props}\n >\n <path\n d=\"M6.16411 1.53106C6.61974 1.07566 7.35888 1.07551 7.81442 1.53106L8.48833 2.20496C8.6797 2.39624 8.93064 2.51452 9.19755 2.54106L9.3132 2.54676H10.2662C10.9104 2.54691 11.4328 3.06926 11.4329 3.71343V4.66647C11.4329 4.97589 11.5559 5.27312 11.7747 5.49191L12.4492 6.16582C12.9047 6.62142 12.9047 7.36054 12.4492 7.81613L11.7753 8.49004L11.6972 8.57549C11.5272 8.78302 11.433 9.04426 11.4329 9.31491V10.2685L11.4272 10.3876C11.3715 10.9366 10.9348 11.373 10.3859 11.4289L10.2662 11.4352H9.3132L9.19755 11.4409C8.93066 11.4674 8.67969 11.5857 8.48833 11.777L7.81442 12.4509L7.72555 12.5306C7.29789 12.8795 6.68066 12.8794 6.25297 12.5306L6.16411 12.4509L5.4902 11.777C5.29887 11.5857 5.04786 11.4675 4.78097 11.4409L4.66533 11.4352H3.71171L3.59265 11.4289C3.04358 11.3731 2.60705 10.9367 2.55131 10.3876L2.54505 10.2685V9.31491C2.54499 9.04416 2.45089 8.78306 2.28072 8.57549L2.20325 8.49004L1.52934 7.81613C1.10213 7.38905 1.07534 6.71297 1.44902 6.25469L1.52934 6.16582L2.20382 5.49191C2.42248 5.27314 2.54505 4.97579 2.54505 4.66647V3.71343C2.54513 3.10945 3.00442 2.61221 3.59265 2.55246L3.71171 2.54676H4.66533L4.78097 2.54106C5.00968 2.51826 5.22694 2.4281 5.40475 2.28244L5.4902 2.20496L6.16411 1.53106ZM6.31507 3.02983C5.87756 3.46727 5.28401 3.71336 4.66533 3.71343H3.71171V4.66647C3.71171 5.28521 3.46614 5.87922 3.02869 6.31678L2.35421 6.99069L3.02812 7.6646C3.46577 8.10214 3.71164 8.69607 3.71171 9.31491V10.2685H4.66533C5.28396 10.2686 5.87757 10.5142 6.31507 10.9515L6.98898 11.6255L7.66289 10.9515C8.10045 10.5141 8.69446 10.2685 9.3132 10.2685H10.2662V9.31491C10.2663 8.69604 10.5127 8.10214 10.9504 7.6646L11.6243 6.99069L10.9498 6.31678C10.5122 5.8792 10.2662 5.28531 10.2662 4.66647V3.71343H9.3132C8.69438 3.71343 8.10047 3.46739 7.66289 3.02983L6.98898 2.35592L6.31507 3.02983ZM8.52934 4.64255C8.7571 4.41479 9.12639 4.41489 9.35421 4.64255C9.58202 4.87035 9.58202 5.23961 9.35421 5.46742L5.4657 9.35593C5.2379 9.58372 4.86863 9.58373 4.64083 9.35593C4.41318 9.12811 4.41308 8.75881 4.64083 8.53106L8.52934 4.64255ZM8.66435 7.83265C9.1245 7.83272 9.49777 8.2059 9.49777 8.66607C9.49769 9.12616 9.12445 9.49941 8.66435 9.49948C8.20419 9.49948 7.83101 9.12621 7.83094 8.66607C7.83094 8.20586 8.20415 7.83265 8.66435 7.83265ZM5.33126 4.49956C5.79141 4.49963 6.16468 4.87282 6.16468 5.33298C6.1646 5.79307 5.79136 6.16575 5.33126 6.16582C4.87111 6.16582 4.49793 5.79311 4.49785 5.33298C4.49785 4.87277 4.87106 4.49956 5.33126 4.49956Z\"\n fill={`url(#${linearId})`}\n />\n <defs>\n <linearGradient\n id={linearId}\n x1=\"12.7908\"\n y1=\"6.99084\"\n x2=\"1.1875\"\n y2=\"6.99084\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"rgb(var(--oui-gradient-brand-end))\" />\n <stop stopColor=\"rgb(var(--oui-gradient-brand-start))\" offset={1} />\n </linearGradient>\n </defs>\n </svg>\n );\n});\n\nif (process.env.NODE_ENV !== \"production\") {\n EffectiveFee.displayName = \"EffectiveFee\";\n}\n","export * from \"./effectiveFee\";\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useMemo } from \"react\";\nimport { useFeeState } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport type { RouterAdapter } from \"@kodiak-finance/orderly-types\";\nimport {\n Box,\n Flex,\n modal,\n Text,\n Tooltip,\n useModal,\n useScreen,\n} from \"@kodiak-finance/orderly-ui\";\nimport { useScaffoldContext } from \"@kodiak-finance/orderly-ui-scaffold\";\nimport { Decimal, numberToHumanStyle } from \"@kodiak-finance/orderly-utils\";\nimport { useLayoutContext } from \"../../layout/context\";\nimport { FeeTierProps } from \"./feeTier.ui\";\nimport { EffectiveFee } from \"./icons\";\n\ntype VipTierRow = {\n userAddress?: string;\n tier?: number | string;\n name?: string;\n discountRate?: number;\n badgeImageUrl?: string;\n currentAllocation?: string | number | null;\n currentAllocationFormatted?: string | number | null;\n stakedValue?: number | string;\n xkdkStakedValue?: number | string;\n orderlyAccountId?: string | null;\n lastUpdated?: string | null;\n syncedAt?: string | null;\n};\n\nexport type FeeTierHeaderItemProps = {\n label: string;\n value: React.ReactNode;\n meta?: React.ReactNode;\n interactive?: boolean;\n};\n\nexport type FeeTierHeaderProps = {\n tier?: number | null;\n vol?: number | null;\n headerDataAdapter?: (original: any[]) => any[];\n vipTier?: VipTierRow | null;\n vipTierEnabled?: boolean;\n vipTierBaseFeeRates?: FeeTierProps[\"vipTierBaseFeeRates\"];\n vipTierDocsUrl?: string;\n vipTierStakeUrl?: string;\n};\n\nconst isEffective = (val?: unknown) =>\n typeof val !== \"undefined\" && val !== null;\n\nconst formatDiscountRate = (rate?: number) => {\n if (rate === undefined || rate === null) return null;\n const normalized = rate <= 1 ? new Decimal(rate).mul(100) : new Decimal(rate);\n return `${normalized.toFixed(0)}%`;\n};\n\nconst getVipTierLabel = (vipTier?: VipTierRow | null) => {\n return vipTier?.name || vipTier?.tier || \"--\";\n};\n\nconst formatStakedValue = (value?: number | string) => {\n if (value === undefined || value === null || value === \"\") return \"--\";\n const numeric = typeof value === \"string\" ? Number(value) : value;\n if (!Number.isFinite(numeric)) return String(value);\n return numberToHumanStyle(numeric, 0);\n};\n\nconst openLink = (\n href: string,\n label: string,\n routerAdapter?: RouterAdapter,\n) => {\n if (href.startsWith(\"/\") && routerAdapter) {\n routerAdapter.onRouteChange({ href, name: label });\n return;\n }\n window.open(href, \"_blank\", \"noopener,noreferrer\");\n};\n\nconst VipTierValue: React.FC<{\n vipTier?: VipTierRow | null;\n}> = (props) => {\n const { vipTier } = props;\n const { t } = useTranslation();\n const { isMobile } = useScreen();\n const discount = formatDiscountRate(vipTier?.discountRate);\n const label = getVipTierLabel(vipTier);\n\n return (\n <Flex\n itemAlign=\"center\"\n className={`${isMobile ? \"oui-gap-2\" : \"oui-gap-3\"} oui-flex-wrap`}\n >\n {vipTier?.badgeImageUrl && (\n <img\n src={vipTier.badgeImageUrl}\n alt={`${label} badge`}\n className=\"oui-size-5 oui-object-contain\"\n />\n )}\n <Text.gradient color={\"brand\"} size={isMobile ? \"xs\" : \"base\"}>\n {label}\n </Text.gradient>\n {discount && (\n <Box className=\"oui-rounded-full oui-bg-base-3 oui-px-2.5 oui-py-1\">\n <Text size=\"2xs\" intensity={80}>\n {t(\"portfolio.feeTier.vip.discount\", { discount })}\n </Text>\n </Box>\n )}\n </Flex>\n );\n};\n\nconst RefCodeValue: React.FC<{\n code: string;\n discountRate?: number;\n}> = (props) => {\n const { t } = useTranslation();\n const discount = formatDiscountRate(props.discountRate);\n return (\n <Flex direction=\"column\" className=\"oui-gap-2\">\n <Flex itemAlign=\"center\" gap={2} className=\"oui-flex-wrap\">\n <Text.gradient color={\"brand\"} size=\"base\">\n {props.code}\n </Text.gradient>\n {discount && (\n <Box className=\"oui-rounded-full oui-bg-base-3 oui-px-2.5 oui-py-1\">\n <Text size=\"2xs\" intensity={80}>\n {t(\"portfolio.feeTier.vip.discount\", { discount })}\n </Text>\n </Box>\n )}\n </Flex>\n </Flex>\n );\n};\n\nconst FeeRateValue: React.FC<{\n baseRate?: string;\n baseRwaRate?: string;\n effectiveRate?: string;\n effectiveRwaRate?: string;\n size?: \"xs\" | \"base\";\n}> = (props) => {\n const {\n baseRate,\n baseRwaRate,\n effectiveRate,\n effectiveRwaRate,\n size = \"base\",\n } = props;\n const { isMobile } = useScreen();\n\n let discounted = false;\n let rwaDiscounted = false;\n const normalizeRate = (value?: string) => {\n if (!value || value === \"-\" || value === \"--\") return null;\n const match = value.match(/-?\\d+(?:\\.\\d+)?/);\n if (!match) return null;\n const raw = new Decimal(match[0]);\n if (value.includes(\"%\")) {\n return { fraction: raw.div(100), display: value };\n }\n return { fraction: raw, display: `${raw.mul(100).toNumber()}%` };\n };\n\n const effectiveRateValue = normalizeRate(effectiveRate);\n const baseRateValue = normalizeRate(baseRate);\n if (effectiveRateValue && baseRateValue) {\n discounted = effectiveRateValue.fraction.lt(baseRateValue.fraction);\n }\n\n const effectiveRwaRateValue = normalizeRate(effectiveRwaRate);\n const baseRwaRateValue = normalizeRate(baseRwaRate);\n if (effectiveRwaRateValue && baseRwaRateValue) {\n rwaDiscounted = effectiveRwaRateValue.fraction.lt(\n baseRwaRateValue.fraction,\n );\n }\n\n return (\n <Flex\n direction=\"column\"\n className=\"oui-gap-1\"\n itemAlign={isMobile ? \"end\" : \"start\"}\n >\n <Flex itemAlign=\"center\" gap={2}>\n {discounted ? (\n <>\n <Text size={size} intensity={54} className=\"oui-line-through\">\n {baseRateValue?.display ?? \"--\"}\n </Text>\n <Text.gradient color={\"brand\"} size={size}>\n {effectiveRate}\n </Text.gradient>\n </>\n ) : (\n <Text.gradient color={\"brand\"} size={size}>\n {effectiveRate || \"--\"}\n </Text.gradient>\n )}\n </Flex>\n <Flex itemAlign=\"center\" gap={1}>\n <Text size=\"2xs\" intensity={54}>\n RWA:\n </Text>\n {rwaDiscounted ? (\n <>\n <Text size=\"2xs\" intensity={54} className=\"oui-line-through\">\n {baseRwaRateValue?.display ?? \"--\"}\n </Text>\n <Text size=\"2xs\" intensity={80}>\n {effectiveRwaRate}\n </Text>\n </>\n ) : (\n <Text size=\"2xs\" intensity={54}>\n {effectiveRwaRate || \"--\"}\n </Text>\n )}\n </Flex>\n </Flex>\n );\n};\n\nconst EffectiveFeeDialog: React.FC<{\n routerAdapter: RouterAdapter | undefined;\n}> = (props) => {\n const { routerAdapter } = props;\n const { t } = useTranslation();\n const { hide } = useModal();\n return (\n <Text size=\"2xs\" className=\"oui-whitespace-normal oui-break-words\">\n {t(\"portfolio.feeTier.effectiveFee.tooltip\")}{\" \"}\n <a\n href=\"/rewards/affiliate\"\n onClick={(e) => {\n e.preventDefault();\n routerAdapter?.onRouteChange({\n href: \"/rewards/affiliate\",\n name: t(\"portfolio.feeTier.effectiveFee.tooltipLink\"),\n });\n hide();\n }}\n className=\"oui-cursor-pointer oui-border-none oui-bg-transparent oui-p-0 oui-text-2xs oui-underline hover:oui-text-base-contrast-80\"\n >\n {t(\"portfolio.feeTier.effectiveFee.tooltipLink\")}\n </a>\n </Text>\n );\n};\n\nexport const MobileHeaderItem: React.FC<FeeTierHeaderItemProps> = (props) => {\n const { label, value, interactive, meta } = props;\n const { t } = useTranslation();\n const { routerAdapter } = useLayoutContext();\n const isPrimitive =\n typeof value === \"string\" || typeof value === \"number\" || value === null;\n const valueNode = isPrimitive ? (\n <Text size=\"xs\" intensity={80} className=\"oui-leading-[24px]\">\n {value}\n </Text>\n ) : (\n value\n );\n return (\n <Flex\n justify=\"between\"\n itemAlign={isPrimitive ? \"center\" : \"start\"}\n width=\"100%\"\n className={`oui-py-2 ${isPrimitive ? \"\" : \"oui-gap-3\"}`}\n >\n <Text\n as=\"div\"\n intensity={54}\n size=\"2xs\"\n weight=\"semibold\"\n className=\"oui-leading-[18px] oui-min-w-[100px]\"\n >\n {label}\n </Text>\n <Flex\n className=\"oui-gap-1.5 oui-flex-1\"\n itemAlign={isPrimitive ? \"center\" : \"end\"}\n justify=\"end\"\n direction={isPrimitive ? \"row\" : \"column\"}\n >\n {meta}\n {valueNode}\n {interactive && (\n <Flex\n gap={1}\n justify=\"center\"\n itemAlign=\"center\"\n className=\"oui-cursor-pointer oui-rounded oui-bg-gradient-to-r oui-from-[rgb(var(--oui-gradient-brand-start)_/_0.12)] oui-to-[rgb(var(--oui-gradient-brand-end)_/_0.12)] oui-px-1.5 oui-py-0.5\"\n onClick={() => {\n modal.dialog({\n size: \"sm\",\n title: t(\"common.tips\"),\n content: <EffectiveFeeDialog routerAdapter={routerAdapter} />,\n });\n }}\n >\n <EffectiveFee />\n <Text.gradient\n className=\"oui-select-none\"\n color={\"brand\"}\n size=\"3xs\"\n weight=\"regular\"\n >\n {t(\"common.effectiveFee\")}\n </Text.gradient>\n </Flex>\n )}\n </Flex>\n </Flex>\n );\n};\n\nexport const DesktopHeaderItem: React.FC<FeeTierHeaderItemProps> = (props) => {\n const { label, value, interactive, meta } = props;\n const { t } = useTranslation();\n const { routerAdapter } = useScaffoldContext();\n return (\n <Box\n gradient=\"neutral\"\n r=\"lg\"\n px={4}\n py={2}\n angle={184}\n border\n borderColor={6}\n className=\"oui-flex-1 oui-min-w-[200px]\"\n >\n <Flex itemAlign=\"center\" justify=\"between\">\n <Text\n as=\"div\"\n intensity={36}\n size=\"2xs\"\n weight=\"semibold\"\n className=\"oui-leading-[18px]\"\n >\n {label}\n </Text>\n <Flex itemAlign=\"center\" gap={2}>\n {meta}\n {interactive && (\n <Tooltip\n content={\n <Text\n size=\"2xs\"\n className=\"oui-whitespace-normal oui-break-words\"\n >\n {t(\"portfolio.feeTier.effectiveFee.tooltip\")}{\" \"}\n <a\n href=\"/rewards/affiliate\"\n onClick={(e) => {\n e.preventDefault();\n routerAdapter?.onRouteChange({\n href: \"/rewards/affiliate\",\n name: t(\"portfolio.feeTier.effectiveFee.tooltipLink\"),\n });\n }}\n className=\"oui-cursor-pointer oui-border-none oui-bg-transparent oui-p-0 oui-text-2xs oui-underline hover:oui-text-base-contrast-80\"\n >\n {t(\"portfolio.feeTier.effectiveFee.tooltipLink\")}\n </a>\n </Text>\n }\n className=\"oui-p-1.5 oui-text-base-contrast-54\"\n >\n <Flex\n gap={1}\n justify=\"center\"\n itemAlign=\"center\"\n className=\"oui-cursor-pointer oui-rounded oui-bg-gradient-to-r oui-from-[rgb(var(--oui-gradient-brand-start)_/_0.12)] oui-to-[rgb(var(--oui-gradient-brand-end)_/_0.12)] oui-px-1\"\n >\n <EffectiveFee />\n <Text.gradient\n className=\"oui-select-none\"\n color={\"brand\"}\n size=\"xs\"\n weight=\"regular\"\n >\n {t(\"common.effectiveFee\")}\n </Text.gradient>\n </Flex>\n </Tooltip>\n )}\n </Flex>\n </Flex>\n <Flex className=\"oui-mt-1 oui-w-full\">\n <Text size=\"base\" intensity={80} className=\"oui-leading-[24px]\">\n {value}\n </Text>\n </Flex>\n </Box>\n );\n};\n\nexport const FeeTierHeader: React.FC<FeeTierHeaderProps> = (props) => {\n const { t } = useTranslation();\n const {\n tier,\n vol,\n headerDataAdapter,\n vipTier,\n vipTierEnabled,\n vipTierBaseFeeRates,\n vipTierStakeUrl,\n } = props;\n\n const { isMobile } = useScreen();\n const { refereeRebate, refererCode, ...others } = useFeeState();\n const refCode = refererCode || \"--\";\n const isEffectiveFee = isEffective(refereeRebate);\n const { routerAdapter: mobileRouterAdapter } = useLayoutContext();\n const { routerAdapter: desktopRouterAdapter } = useScaffoldContext();\n const routerAdapter = desktopRouterAdapter ?? mobileRouterAdapter;\n\n const items: FeeTierHeaderItemProps[] = [\n {\n label: `${t(\"portfolio.feeTier.header.30dVolume\")} (USDC)`,\n interactive: false,\n value: (\n <Text.numeral\n rule=\"price\"\n dp={2}\n rm={Decimal.ROUND_DOWN}\n size={isMobile ? \"xs\" : \"base\"}\n >\n {vol !== undefined && vol !== null ? `${vol}` : \"-\"}\n </Text.numeral>\n ),\n },\n ...(vipTierEnabled\n ? [\n {\n label: t(\"portfolio.feeTier.header.vipTier\"),\n interactive: false,\n meta: vipTierStakeUrl ? (\n <a\n className=\"oui-group oui-cursor-pointer\"\n href={vipTierStakeUrl}\n onClick={(event) => {\n event.preventDefault();\n openLink(\n vipTierStakeUrl,\n t(\"portfolio.feeTier.vip.stakeNow\"),\n routerAdapter,\n );\n }}\n >\n <Text\n size=\"2xs\"\n intensity={54}\n className=\"oui-whitespace-nowrap oui-underline hover:oui-text-base-contrast-80 oui-transition-colors\"\n >\n {t(\"portfolio.feeTier.vip.staked\")}:{\" \"}\n {formatStakedValue(\n vipTier?.currentAllocationFormatted ??\n vipTier?.xkdkStakedValue ??\n vipTier?.stakedValue ??\n undefined,\n )}\n </Text>\n </a>\n ) : (\n <Text size=\"2xs\" intensity={54} className=\"oui-whitespace-nowrap\">\n {t(\"portfolio.feeTier.vip.staked\")}:{\" \"}\n {formatStakedValue(\n vipTier?.currentAllocationFormatted ??\n vipTier?.xkdkStakedValue ??\n vipTier?.stakedValue ??\n undefined,\n )}\n </Text>\n ),\n value: <VipTierValue vipTier={vipTier} />,\n },\n ]\n : []),\n {\n label: t(\"portfolio.feeTier.header.refCode\"),\n interactive: false,\n value: <RefCodeValue code={refCode} discountRate={refereeRebate} />,\n },\n {\n label: t(\"portfolio.feeTier.header.takerFeeRate\"),\n interactive: isEffectiveFee,\n value: (\n <FeeRateValue\n baseRate={vipTierBaseFeeRates?.takerFeeRate}\n baseRwaRate={vipTierBaseFeeRates?.rwaTakerFeeRate}\n effectiveRate={\n isEffectiveFee ? others.effectiveTakerFee : others.takerFee\n }\n effectiveRwaRate={\n isEffectiveFee ? others.rwaEffectiveTakerFee : others.rwaTakerFee\n }\n size={isMobile ? \"xs\" : \"base\"}\n />\n ),\n },\n {\n label: t(\"portfolio.feeTier.header.makerFeeRate\"),\n interactive: isEffectiveFee,\n value: (\n <FeeRateValue\n baseRate={vipTierBaseFeeRates?.makerFeeRate}\n baseRwaRate={vipTierBaseFeeRates?.rwaMakerFeeRate}\n effectiveRate={\n isEffectiveFee ? others.effectiveMakerFee : others.makerFee\n }\n effectiveRwaRate={\n isEffectiveFee ? others.rwaEffectiveMakerFee : others.rwaMakerFee\n }\n size={isMobile ? \"xs\" : \"base\"}\n />\n ),\n },\n ];\n\n const mergedData = useMemo<FeeTierHeaderItemProps[]>(() => {\n if (typeof headerDataAdapter === \"function\") {\n return headerDataAdapter(items);\n }\n return items;\n }, [headerDataAdapter, items]);\n\n if (!Array.isArray(mergedData)) {\n return null;\n }\n\n if (isMobile) {\n return (\n <Flex\n className=\"oui-rounded-xl oui-bg-base-9 oui-p-4 oui-divide-y oui-divide-line-6\"\n direction=\"column\"\n itemAlign={\"stretch\"}\n >\n {mergedData.map((item, index) => (\n <MobileHeaderItem {...item} key={`mobile-item-${index}`} />\n ))}\n </Flex>\n );\n }\n\n return (\n <Flex\n direction=\"row\"\n gap={4}\n my={4}\n itemAlign={\"stretch\"}\n className=\"oui-flex-wrap\"\n >\n {mergedData.map((item, index) => (\n <DesktopHeaderItem {...item} key={`desktop-item-${index}`} />\n ))}\n </Flex>\n );\n};\n","import { useEffect, useMemo, useState } from \"react\";\nimport {\n APIKeyItem,\n ScopeType,\n useAccount,\n useApiKeyManager,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { useAppContext, useDataTap } from \"@kodiak-finance/orderly-react-app\";\nimport { AccountStatusEnum } from \"@kodiak-finance/orderly-types\";\nimport { toast, usePagination } from \"@kodiak-finance/orderly-ui\";\n\nexport type GenerateKeyInfo = {\n key: string;\n secretKey: string;\n ip?: string;\n permissions?: string;\n};\n\nexport const useApiManagerScript = (props?: {\n filterTags?: [string];\n keyStatus?: string;\n}) => {\n const { filterTags, keyStatus } = props ?? {};\n const [showCreateDialog, setShowCreateDialog] = useState(false);\n const [showCreatedDialog, setShowCreatedDialog] = useState(false);\n const [generateKey, setGenerateKey] = useState<GenerateKeyInfo | undefined>();\n const { wrongNetwork, disabledConnect } = useAppContext();\n const { state, account } = useAccount();\n const { t } = useTranslation();\n\n const canCreateApiKey =\n !wrongNetwork &&\n !disabledConnect &&\n (state.status === AccountStatusEnum.EnableTrading ||\n state.status === AccountStatusEnum.EnableTradingWithoutConnected);\n\n const [\n keys,\n {\n generateOrderlyKey,\n setIPRestriction,\n removeOrderlyKey,\n resetOrderlyKeyIPRestriction,\n refresh,\n isLoading,\n error,\n },\n ] = useApiKeyManager({\n keyInfo: { key_status: keyStatus },\n });\n\n const [curPubKey, setCurPubKey] = useState<string | undefined>(undefined);\n\n useEffect(() => {\n account.keyStore\n .getOrderlyKey()\n ?.getPublicKey()\n .then((pubKey) => {\n setCurPubKey(pubKey);\n });\n }, [account, state]);\n\n const onCreateApiKey = () => {\n setShowCreateDialog(true);\n };\n const onReadApiGuide = () => {\n window.open(\n \"https://orderly.network/docs/build-on-omnichain/evm-api/api-authentication#api-authentication\",\n \"_blank\",\n );\n };\n\n const hideCreateDialog = () => {\n setShowCreateDialog(false);\n };\n\n const doCreate = async (\n ipRestriction?: string,\n scope?: ScopeType,\n ): Promise<number> => {\n try {\n const createdSuccess = (\n res: {\n key: string;\n secretKey: string;\n },\n ip?: string,\n ) => {\n const { key, secretKey } = res;\n hideCreateDialog();\n setGenerateKey({\n key: key,\n secretKey,\n ip: ip,\n permissions: scope\n ?.split(\",\")\n ?.map((e) => capitalizeFirstChar(e))\n .join(\", \"),\n });\n setShowCreatedDialog(true);\n };\n\n const res = await generateOrderlyKey(scope);\n /// add ed25519: prefix to the key\n const generateKeyRes = {\n ...res,\n key: `ed25519:${res.key}`,\n secretKey: `ed25519:${res.secretKey}`,\n };\n toast.success(t(\"portfolio.apiKey.created\"));\n\n if ((ipRestriction?.length || 0) > 0) {\n const key = generateKeyRes.key;\n const res = await setIPRestriction(key, ipRestriction!);\n if (res.success) {\n createdSuccess(\n generateKeyRes,\n res.data.ip_restriction_list?.join(\",\"),\n );\n }\n } else {\n createdSuccess(generateKeyRes, undefined);\n }\n } catch (err: any) {\n if (err?.message) toast.error(err?.message);\n }\n\n return Promise.resolve(0);\n };\n\n const hideCreatedDialog = () => {\n setShowCreatedDialog(false);\n refresh();\n };\n\n const onCopyApiKeyInfo = () => {\n navigator.clipboard.writeText(JSON.stringify(generateKey));\n toast.success(t(\"portfolio.apiKey.apiInfo.copied\"));\n };\n const doConfirm = () => {\n hideCreatedDialog();\n };\n\n const doDelete = (item: APIKeyItem): Promise<any> => {\n return new Promise(async (resolve) => {\n await removeOrderlyKey(item.orderly_key)\n .then(\n async (data) => {\n if (data?.success) {\n toast.success(t(\"portfolio.apiKey.deleted\"));\n refresh();\n // delete current api key, wiil disconnect\n const curKey = await account.keyStore\n .getOrderlyKey()\n ?.getPublicKey();\n if (item.orderly_key === curKey) {\n account.destroyOrderlyKey();\n }\n }\n resolve(1);\n },\n (reject) => {},\n )\n .catch((err) => {});\n });\n };\n\n const doEdit = async (item: APIKeyItem, ip?: string): Promise<void> => {\n let future;\n if ((ip?.length || 0) === 0) {\n future = resetOrderlyKeyIPRestriction(item.orderly_key, \"ALLOW_ALL_IPS\");\n } else {\n future = setIPRestriction(item.orderly_key, ip!);\n }\n\n const data = await future;\n\n if (data.success) {\n toast.success(t(\"portfolio.apiKey.updated\"));\n refresh();\n return Promise.resolve();\n } else {\n toast.error(data.message);\n }\n return Promise.reject();\n };\n\n const onCopyAccountId = () =>\n toast.success(t(\"portfolio.apiKey.accountId.copied\"));\n const onCopyApiKey = (key?: string) => {\n toast.success(t(\"portfolio.apiKey.column.apiKey.copy\"));\n };\n const onCopyApiSecretKey = () =>\n toast.success(t(\"portfolio.apiKey.secretKey.copied\"));\n const onCopyIP = () =>\n toast.success(t(\"portfolio.apiKey.column.restrictedIP.copy\"));\n\n const keyList = useMemo(() => {\n return keys?.filter((e) => {\n const filterTag = filterTags ? filterTags?.includes(e.tag) : true;\n const filterCurKey = curPubKey\n ? !e.orderly_key.includes(curPubKey)\n : true;\n return filterTag && filterCurKey;\n });\n }, [keys, filterTags, curPubKey]);\n\n const verifyIP = (ip: string) => {\n const ipRegex =\n /^((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])(,((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9]))*$/;\n return ipRegex.test(ip)\n ? \"\"\n : \"The IP restriction format is incorrect. Please use the correct format: [xx.xx.xxx.x],[xx.xxx.xxx.xxx]\";\n };\n\n const accountStatus =\n state.status === AccountStatusEnum.EnableTradingWithoutConnected\n ? AccountStatusEnum.EnableTradingWithoutConnected\n : AccountStatusEnum.EnableTrading;\n\n const accountId = useDataTap(state.accountId, {\n accountStatus,\n });\n\n const userId = useDataTap(state.userId, {\n accountStatus,\n });\n\n const { pagination } = usePagination();\n\n return {\n accountId: accountId ?? \"--\",\n userId: userId ?? \"--\",\n onCreateApiKey,\n onReadApiGuide,\n showCreateDialog,\n hideCreateDialog,\n doCreate,\n showCreatedDialog,\n hideCreatedDialog,\n onCopyApiKeyInfo,\n doConfirm,\n doDelete,\n doEdit,\n canCreateApiKey,\n status: state.status,\n keys: keyList,\n generateKey,\n onCopyAccountId,\n wrongNetwork,\n onCopyApiKey,\n onCopyApiSecretKey,\n onCopyIP,\n verifyIP,\n isLoading,\n pagination,\n };\n};\n\nexport function capitalizeFirstChar(str: string): string {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\n\nexport type ApiManagerScriptReturns = ReturnType<typeof useApiManagerScript>;\n","import { FC, useEffect, useState } from \"react\";\nimport { ScopeType } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n cn,\n Flex,\n SimpleDialog,\n Statistic,\n Text,\n} from \"@kodiak-finance/orderly-ui\";\nimport { ApiManagerScriptReturns } from \"../apiManager.script\";\n\nexport const CreateAPIKeyDialog: FC<ApiManagerScriptReturns> = (props) => {\n const [ipText, setIpText] = useState(\"\");\n const [read, setRead] = useState(true);\n const [trade, setTrade] = useState(true);\n const [hint, setHint] = useState(\"\");\n const { t } = useTranslation();\n\n useEffect(() => {\n if (!props.showCreateDialog) {\n setIpText(\"\");\n setRead(true);\n setTrade(true);\n setHint(\"\");\n }\n }, [props.showCreateDialog]);\n\n useEffect(() => {\n if (ipText.length === 0) setHint(\"\");\n }, [ipText]);\n\n return (\n <SimpleDialog\n size=\"sm\"\n open={props.showCreateDialog}\n onOpenChange={(open) => {\n props.hideCreateDialog?.();\n }}\n title={t(\"portfolio.apiKey.create.dialog.title\")}\n actions={{\n primary: {\n label: t(\"common.confirm\"),\n className: \"oui-w-[120px] lg:oui-w-[154px]\",\n \"data-testid\": \"oui-testid-apiKey-createApiKey-dialog-comfirm-btn\",\n onClick: async () => {\n if (ipText.length > 0) {\n const hint = props.verifyIP(ipText);\n setHint(hint);\n if (hint.length > 0) {\n return;\n }\n }\n\n const scopes: string[] = [];\n if (read) {\n scopes.push(\"read\");\n }\n if (trade) {\n scopes.push(\"trading\");\n }\n await props.doCreate(ipText, scopes.join(\",\") as ScopeType);\n },\n disabled: !trade && !read,\n size: \"md\",\n },\n }}\n classNames={{\n footer: \"oui-justify-center\",\n content:\n \"oui-bg-base-8 oui-w-[300px] lg:oui-w-[360px] oui-font-semibold\",\n }}\n >\n <Flex direction={\"column\"} gap={6}>\n <Flex direction={\"column\"} gap={1} width={\"100%\"} itemAlign={\"start\"}>\n <Text intensity={54} size=\"2xs\">\n {t(\"portfolio.apiKey.create.ipRestriction\")}\n </Text>\n <textarea\n data-testid=\"oui-testid-apiKey-createApiKey-dialog-textarea\"\n placeholder={t(\"portfolio.apiKey.create.ipRestriction.placeholder\")}\n className={cn(\n \"oui-h-[100px] oui-w-full oui-rounded-xl oui-bg-base-6 oui-p-3 oui-text-sm oui-text-base-contrast-80\",\n \"oui-border-0 oui-outline-none focus:oui-border-2 focus:oui-border-primary-darken\",\n \"oui-placeholder-base-contrast-20\",\n hint.length > 0 &&\n \"oui-outline-1 oui-outline-danger focus:oui-outline-none\",\n )}\n value={ipText}\n onChange={(e) => {\n setIpText(e.target.value);\n }}\n style={{\n resize: \"none\",\n }}\n />\n {hint.length > 0 && (\n <Flex gap={1} className=\"oui-relative\">\n <div\n className={cn(\n \"oui-absolute oui-top-[10px]\",\n \"oui-size-1 oui-rounded-full oui-bg-danger\",\n )}\n />\n <Text color=\"danger\" size=\"xs\" className=\"oui-ml-2\">\n {hint}\n </Text>\n </Flex>\n )}\n </Flex>\n <Statistic\n label={\n <Text size=\"xs\" intensity={54}>\n {t(\"portfolio.apiKey.permissions\")}\n </Text>\n }\n className=\"oui-w-full\"\n >\n <Flex\n direction={\"row\"}\n gap={6}\n itemAlign={\"start\"}\n className=\"oui-mt-2\"\n >\n <Checkbox\n size={18}\n checked={read}\n onCheckedChange={(e) => setRead(e as boolean)}\n label={t(\"portfolio.apiKey.permissions.read\")}\n testid=\"oui-testid-apiKey-createApiKey-dialog-read-checkbox\"\n />\n <Checkbox\n size={18}\n checked={trade}\n onCheckedChange={(e) => setTrade(e as boolean)}\n label={t(\"portfolio.apiKey.permissions.trading\")}\n testid=\"oui-testid-apiKey-createApiKey-dialog-trading-checkbox\"\n />\n </Flex>\n </Statistic>\n </Flex>\n </SimpleDialog>\n );\n};\n\nexport const Checkbox: FC<{\n size?: number;\n checked: boolean;\n onCheckedChange: (checked?: boolean) => void;\n disabled?: boolean;\n label: string;\n testid?: string;\n}> = (props) => {\n return (\n <button\n disabled={props.disabled}\n onClick={(e) => {\n props.onCheckedChange(!props.checked);\n }}\n className={\n \"oui-flex oui-items-center oui-gap-2 disabled:oui-cursor-not-allowed disabled:oui-opacity-50\"\n }\n data-testid={props.testid}\n >\n {props.checked ? (\n <svg\n width={\"props.size\"}\n height={props.size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M6.99072 2.92981C4.78172 2.92981 2.99072 4.72071 2.99072 6.92981V16.9298C2.99072 19.1389 4.78172 20.9298 6.99072 20.9298H16.9907C19.1997 20.9298 20.9907 19.1389 20.9907 16.9298V6.92981C20.9907 4.72071 19.1997 2.92981 16.9907 2.92981H6.99072ZM16.9853 7.31211C17.2125 7.09537 17.5236 7 17.8218 7C18.1201 7 18.4312 7.09537 18.6584 7.31211C19.1139 7.74546 19.1139 8.47384 18.6584 8.9072L10.5077 16.675C10.0534 17.1083 9.28909 17.1083 8.83472 16.675L5.34077 13.3459C4.88641 12.9126 4.88641 12.1841 5.34077 11.7508C5.79631 11.3175 6.56057 11.3175 7.01493 11.7508L9.67122 14.2822L16.9853 7.31211Z\"\n className=\"oui-fill-base-contrast-54\"\n />\n </svg>\n ) : (\n <svg\n width={props.size}\n height={props.size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M6.99072 2.92981C4.78172 2.92981 2.99072 4.72071 2.99072 6.92981V16.9298C2.99072 19.1389 4.78172 20.9298 6.99072 20.9298H16.9907C19.1997 20.9298 20.9907 19.1389 20.9907 16.9298V6.92981C20.9907 4.72071 19.1997 2.92981 16.9907 2.92981H6.99072ZM6.99072 4.92981H16.9907C18.0957 4.92981 18.9907 5.82521 18.9907 6.92981V16.9298C18.9907 18.0344 18.0957 18.9298 16.9907 18.9298H6.99072C5.88572 18.9298 4.99072 18.0344 4.99072 16.9298V6.92981C4.99072 5.82521 5.88572 4.92981 6.99072 4.92981Z\"\n className=\"oui-fill-base-contrast-54\"\n />\n </svg>\n )}\n\n <Text\n intensity={54}\n size=\"sm\"\n className=\"oui-whitespace-nowrap oui-break-normal\"\n >\n {props.label}\n </Text>\n </button>\n );\n};\n","import { FC } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n Box,\n CopyIcon,\n Flex,\n SimpleDialog,\n Statistic,\n Text,\n} from \"@kodiak-finance/orderly-ui\";\nimport { ApiManagerScriptReturns } from \"../apiManager.script\";\n\nexport const CreatedAPIKeyDialog: FC<ApiManagerScriptReturns> = (props) => {\n const ip = props.generateKey?.ip ?? \"--\";\n const { t } = useTranslation();\n return (\n <SimpleDialog\n size=\"sm\"\n open={props.showCreatedDialog}\n onOpenChange={(open) => {\n props.hideCreatedDialog?.();\n }}\n title={t(\"portfolio.apiKey.created\")}\n actions={{\n primary: {\n label: t(\"common.ok\"),\n \"data-testid\": \"oui-testid-apiKey-createdApiKey-dialog-ok-btn\",\n className:\n \"oui-w-[120px] lg:oui-w-[154px] oui-bg-base-2 hover:oui-bg-base-3\",\n size: \"md\",\n onClick: async () => {\n return props.doConfirm();\n },\n },\n secondary: {\n label: t(\"portfolio.apiKey.created.button.copyApiInfo\"),\n \"data-testid\": \"oui-testid-apiKey-createdApiKey-dialog-copy-btn\",\n className:\n \"oui-w-[120px] lg:oui-w-[154px] oui-bg-primary-darken hover:oui-opacity-80\",\n size: \"md\",\n onClick: async () => {\n return props.onCopyApiKeyInfo();\n },\n },\n }}\n classNames={{\n footer: \"oui-justify-center\",\n content:\n \"oui-bg-base-8 oui-w-[300px] lg:oui-w-[360px] oui-font-semibold\",\n body: \"oui-py-0 oui-pt-5\",\n }}\n >\n <Flex direction={\"column\"} gap={4} itemAlign={\"start\"}>\n <Statistic label={t(\"common.accountId\")}>\n <Text.formatted\n size=\"sm\"\n intensity={80}\n copyable\n copyIconSize={16}\n className=\"oui-break-all\"\n onCopy={props.onCopyAccountId}\n data-testid=\"oui-testid-apiKey-createdApiKey-dialog-key-span\"\n >\n {props.accountId}\n </Text.formatted>\n </Statistic>\n <Statistic label={t(\"portfolio.apiKey.column.apiKey\")}>\n <Text.formatted\n size=\"sm\"\n intensity={80}\n copyable\n copyIconSize={16}\n className=\"oui-break-all\"\n onCopy={() => props.onCopyApiKey(props.generateKey?.key)}\n data-testid=\"oui-testid-apiKey-createdApiKey-dialog-key-span\"\n >\n {props.generateKey?.key}\n </Text.formatted>\n </Statistic>\n <Statistic label={t(\"portfolio.apiKey.secretKey\")}>\n <Text.formatted\n size=\"sm\"\n intensity={80}\n copyable\n copyIconSize={16}\n className=\"oui-break-all\"\n onCopy={props.onCopyApiSecretKey}\n >\n {props.generateKey?.secretKey}\n </Text.formatted>{\" \"}\n </Statistic>\n <Statistic label={t(\"portfolio.apiKey.ip\")}>\n <Flex\n width={320}\n gap={1}\n itemAlign={\"center\"}\n className=\"oui-text-base-contrast-80 oui-text-sm\"\n >\n <Box className=\"oui-max-h-[100px] oui-flex-1 oui-overflow-hidden oui-text-ellipsis oui-line-clamp-5 oui-break-all\">\n {ip}\n </Box>\n {ip !== \"--\" && (\n <Box\n width={16}\n height={16}\n className=\"oui-cursor-pointer oui-flex-shrink-0\"\n >\n <CopyIcon\n color=\"white\"\n opacity={0.54}\n size={16}\n onClick={(e) => {\n if (props.generateKey?.ip)\n navigator.clipboard.writeText(props.generateKey?.ip);\n props?.onCopyIP();\n }}\n />\n </Box>\n )}\n </Flex>\n </Statistic>\n <Statistic label={t(\"portfolio.apiKey.permissions\")}>\n <Text\n size=\"sm\"\n intensity={80}\n data-testid=\"oui-testid-apiKey-createdApiKey-dialog-permissions-span\"\n >\n {props.generateKey?.permissions}\n </Text>\n </Statistic>\n <div></div>\n <Text color=\"warning\" size=\"xs\" className=\"oui-text-center\">\n {t(\"portfolio.apiKey.created.warning\")}\n </Text>\n </Flex>\n </SimpleDialog>\n );\n};\n","import { FC } from \"react\";\nimport { Flex, SimpleDialog, Text } from \"@kodiak-finance/orderly-ui\";\nimport { APIKeyItem } from \"@kodiak-finance/orderly-hooks\";\nimport { formatKey } from \"../apiManager.ui\";\nimport { useTranslation, Trans } from \"@kodiak-finance/orderly-i18n\";\n\nexport const DeleteAPIKeyDialog: FC<{\n item: APIKeyItem;\n open: boolean;\n setOpen?: any;\n onDelete?: (item: APIKeyItem) => Promise<void>;\n}> = (props) => {\n const { item, open, setOpen, onDelete } = props;\n const { t } = useTranslation();\n return (\n <SimpleDialog\n size=\"sm\"\n open={open}\n onOpenChange={setOpen}\n title={t(\"portfolio.apiKey.delete.dialog.title\")}\n actions={{\n primary: {\n label: t(\"common.confirm\"),\n \"data-testid\": \"oui-testid-apiKey-deleteApiKey-dialog-confirm-btn\",\n className: \"oui-w-[120px] lg:oui-w-[154px]\",\n size: \"md\",\n onClick: async () => {\n await props.onDelete?.(item);\n setOpen(false);\n },\n },\n secondary: {\n label: t(\"common.cancel\"),\n className: \"oui-w-[120px] lg:oui-w-[154px]\",\n size: \"md\",\n onClick: async () => {\n setOpen(false);\n },\n },\n }}\n classNames={{\n footer: \"oui-justify-center\",\n content:\n \"oui-bg-base-8 oui-w-[300px] lg:oui-w-[360px] oui-font-semibold\",\n }}\n >\n <Flex className=\"oui-text-xs\">\n {/* @ts-ignore */}\n <Trans\n i18nKey=\"portfolio.apiKey.delete.dialog.description\"\n values={{ apiKey: formatKey(item?.orderly_key) }}\n components={[<Text color=\"primary\" className=\"oui-px-1\" />]}\n />\n </Flex>\n </SimpleDialog>\n );\n};\n","import { FC, useEffect, useState } from \"react\";\nimport { APIKeyItem } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { cn, Flex, SimpleDialog, Statistic, Text } from \"@kodiak-finance/orderly-ui\";\nimport { Checkbox } from \"./createApiKey\";\n\nexport const EditAPIKeyDialog: FC<{\n item: APIKeyItem;\n open: boolean;\n setOpen?: any;\n onUpdate?: (item: APIKeyItem, ip?: string) => Promise<void>;\n verifyIP: (ip: string) => string;\n}> = (props) => {\n const { item, open, setOpen, onUpdate } = props;\n const [ipText, setIpText] = useState(item.ip_restriction_list?.join(\",\"));\n const [read, setRead] = useState(true);\n const [trade, setTrade] = useState(true);\n const [hint, setHint] = useState(\"\");\n const { t } = useTranslation();\n\n useEffect(() => {\n setIpText(item.ip_restriction_list.join(\",\"));\n const scope = item.scope?.toLocaleLowerCase() || \"\";\n\n setRead(scope.includes(\"read\"));\n setTrade(scope.includes(\"trading\"));\n }, [item]);\n\n useEffect(() => {\n if (ipText.length === 0) setHint(\"\");\n }, [ipText]);\n\n return (\n <SimpleDialog\n size=\"sm\"\n open={open}\n onOpenChange={setOpen}\n title={t(\"portfolio.apiKey.edit.dialog.title\")}\n actions={{\n primary: {\n label: t(\"common.confirm\"),\n \"data-testid\": \"oui-testid-apiKey-editApiKey-dialog-confirm-btn\",\n className: \"oui-w-[120px] lg:oui-w-[154px]\",\n onClick: async () => {\n if (ipText.length > 0) {\n const hint = props.verifyIP(ipText);\n setHint(hint);\n if (hint.length > 0) {\n return;\n }\n }\n await props.onUpdate?.(item, ipText);\n setOpen(false);\n },\n disabled: item.ip_restriction_list.join(\",\") === ipText,\n size: \"md\",\n fullWidth: true,\n },\n }}\n classNames={{\n footer: \"oui-justify-center\",\n content:\n \"oui-bg-base-8 oui-w-[300px] lg:oui-w-[360px] oui-font-semibold\",\n }}\n >\n <Flex direction={\"column\"} gap={6}>\n {/* <TextField label={\"IP restriction (optional)\"} rows={5} className=\"oui-w-full oui-h-auto\" classNames={{\n input: \"oui-h-[100px]\",\n root: \"oui-h-[100px]\"\n }}/> */}\n <Flex direction={\"column\"} gap={1} width={\"100%\"} itemAlign={\"start\"}>\n <Text intensity={54} size=\"2xs\">\n {t(\"portfolio.apiKey.create.ipRestriction\")}\n </Text>\n <textarea\n data-testid=\"oui-testid-apiKey-editApiKey-dialog-textarea\"\n placeholder={t(\"portfolio.apiKey.create.ipRestriction.placeholder\")}\n className={cn(\n \"oui-h-[100px] oui-w-full oui-rounded-xl oui-bg-base-6 oui-p-3 oui-text-sm oui-text-base-contrast-80\",\n \"oui-border-0 oui-outline-none focus:oui-border-2 focus:oui-border-primary-darken\",\n \"oui-placeholder-base-contrast-20\",\n hint.length > 0 &&\n \"oui-outline-1 oui-outline-danger focus:oui-outline-none\",\n )}\n value={ipText}\n onChange={(e) => {\n setIpText(e.target.value);\n }}\n style={{\n resize: \"none\",\n }}\n />\n {hint.length > 0 && (\n <Flex gap={1} className=\"oui-relative\">\n <div\n className={cn(\n \"oui-absolute oui-top-[10px]\",\n \"oui-size-1 oui-rounded-full oui-bg-danger\",\n )}\n />\n <Text color=\"danger\" size=\"xs\" className=\"oui-ml-2\">\n {hint}\n </Text>\n </Flex>\n )}\n </Flex>\n <Statistic\n label={\n <Text size=\"xs\" intensity={54}>\n {t(\"portfolio.apiKey.permissions\")}\n </Text>\n }\n className=\"oui-w-full\"\n >\n <Flex\n direction={\"row\"}\n gap={6}\n itemAlign={\"start\"}\n className=\"oui-mt-2\"\n >\n <Checkbox\n disabled\n size={18}\n checked={read}\n onCheckedChange={(e) => setRead(e as boolean)}\n label={t(\"portfolio.apiKey.permissions.read\")}\n />\n <Checkbox\n disabled\n size={18}\n checked={trade}\n onCheckedChange={(e) => setTrade(e as boolean)}\n label={t(\"portfolio.apiKey.permissions.trading\")}\n />\n </Flex>\n </Statistic>\n </Flex>\n </SimpleDialog>\n );\n};\n","import React, { useState } from \"react\";\nimport { APIKeyItem } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n Box,\n Button,\n Card,\n CopyIcon,\n Flex,\n PlusIcon,\n Column,\n Text,\n Tooltip,\n} from \"@kodiak-finance/orderly-ui\";\nimport {\n AuthGuardEmpty,\n AuthGuardDataTable,\n AuthGuardTooltip,\n} from \"@kodiak-finance/orderly-ui-connector\";\nimport {\n type ApiManagerScriptReturns,\n capitalizeFirstChar,\n} from \"./apiManager.script\";\n\nconst LazyCreateAPIKeyDialog = React.lazy(() =>\n import(\"./dialog/createApiKey\").then((mod) => {\n return { default: mod.CreateAPIKeyDialog };\n }),\n);\n\nconst LazyCreatedAPIKeyDialog = React.lazy(() =>\n import(\"./dialog/createdApiKey\").then((mod) => {\n return { default: mod.CreatedAPIKeyDialog };\n }),\n);\n\nconst LazyDeleteAPIKeyDialog = React.lazy(() =>\n import(\"./dialog/deleteApiKey\").then((mod) => {\n return { default: mod.DeleteAPIKeyDialog };\n }),\n);\n\nconst LazyEditAPIKeyDialog = React.lazy(() =>\n import(\"./dialog/editApiKey\").then((mod) => {\n return { default: mod.EditAPIKeyDialog };\n }),\n);\n\nexport const APIManager: React.FC<ApiManagerScriptReturns> = (props) => {\n const { t } = useTranslation();\n return (\n <Card\n title={t(\"portfolio.apiKeys\")}\n id=\"portfolio-apikey-manager\"\n className=\"oui-bg-base-9 oui-font-semibold\"\n >\n <Flex\n direction={\"column\"}\n gap={4}\n width={\"100%\"}\n className=\"oui-font-semibold\"\n >\n <AccountInfo {...props} />\n <Subtitle {...props} />\n </Flex>\n <div>\n <KeyList {...props} />\n <React.Suspense fallback={null}>\n <LazyCreateAPIKeyDialog {...props} />\n </React.Suspense>\n <React.Suspense fallback={null}>\n <LazyCreatedAPIKeyDialog {...props} />\n </React.Suspense>\n </div>\n </Card>\n );\n};\n\nconst AccountInfo: React.FC<ApiManagerScriptReturns> = (props) => {\n const { t } = useTranslation();\n return (\n <Flex\n width={\"100%\"}\n gap={4}\n className=\"oui-border-t-2 oui-border-line-6 oui-pt-4\"\n >\n <Flex\n py={2}\n px={4}\n direction={\"column\"}\n itemAlign={\"start\"}\n r=\"xl\"\n gradient=\"neutral\"\n angle={27}\n border\n className=\"oui-w-1/2\"\n >\n <Text size=\"xs\" intensity={36}>\n {t(\"common.accountId\")}\n </Text>\n <Text.formatted\n size=\"base\"\n inlist={80}\n rule={\"address\"}\n copyable={props.accountId !== \"--\"}\n copyIconSize={16}\n onCopy={props.onCopyAccountId}\n copyIconTestid=\"oui-testid-apiKey-accountInfo-accountId-copy-btn\"\n >\n {props.accountId}\n </Text.formatted>\n </Flex>\n <Flex\n py={2}\n px={4}\n direction={\"column\"}\n itemAlign={\"start\"}\n r=\"xl\"\n gradient=\"neutral\"\n angle={27}\n border\n className=\"oui-w-1/2\"\n >\n <Text size=\"xs\" intensity={36}>\n {t(\"portfolio.apiKey.uid\")}\n </Text>\n <Text size=\"base\" inlist={80}>\n {props.userId}\n </Text>\n </Flex>\n </Flex>\n );\n};\n\nconst Subtitle: React.FC<ApiManagerScriptReturns> = (props) => {\n const { t } = useTranslation();\n return (\n <Flex\n width={\"100%\"}\n direction={\"row\"}\n className=\"oui-text-sm oui-border-b-2 oui-border-line-6 oui-pb-4\"\n >\n <Flex direction={\"column\"} itemAlign={\"start\"} width={\"100%\"} gap={1}>\n <Text intensity={54}>{t(\"portfolio.apiKey.description\")}</Text>\n <Flex\n itemAlign={\"center\"}\n className=\"oui-text-primary-light oui-fill-primary-light hover:oui-text-primary-darken oui-cursor-pointer oui-text-2xs md:oui-text-xs xl:oui-text-sm\"\n onClick={props.onReadApiGuide}\n >\n <Text>{t(\"portfolio.apiKey.readApiGuide\")}</Text>\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M4.008 7.995c0-.368.298-.666.666-.666H9.71L7.733 5.331l.937-.936 3.143 3.122c.13.13.195.304.195.479a.67.67 0 0 1-.195.478L8.67 11.596l-.937-.937 1.978-1.998H4.674a.666.666 0 0 1-.666-.666\" />\n </svg>\n </Flex>\n </Flex>\n <AuthGuardTooltip\n side=\"top\"\n tooltip={{\n connectWallet: t(\"portfolio.apiKey.create.connectWallet.tooltip\"),\n signIn: t(\"portfolio.apiKey.create.createAccount.tooltip\"),\n enableTrading: t(\"portfolio.apiKey.create.enableTrading.tooltip\"),\n wrongNetwork: t(\"portfolio.apiKey.create.wrongNetwork.tooltip\"),\n }}\n >\n <Button\n size=\"md\"\n icon={<PlusIcon />}\n variant=\"contained\"\n color=\"primary\"\n onClick={props.onCreateApiKey}\n disabled={!props.canCreateApiKey}\n // className=\"disabled:oui-cursor-default\"\n data-testid=\"oui-testid-apiKey-createApiKey-btn\"\n >\n {t(\"portfolio.apiKey.create.dialog.title\")}\n </Button>\n </AuthGuardTooltip>\n </Flex>\n );\n};\n\nconst KeyList: React.FC<ApiManagerScriptReturns> = (props) => {\n const { t } = useTranslation();\n const columns: Column<APIKeyItem>[] = [\n {\n title: t(\"portfolio.apiKey.column.apiKey\"),\n dataIndex: \"orderly_key\",\n width: 150,\n render: (value) => {\n const fullKey = typeof value === \"string\" ? value : `${value ?? \"\"}`;\n const displayKey = formatKey(fullKey);\n return (\n <Flex gap={1} itemAlign={\"center\"}>\n <div className=\"oui-overflow-hidden oui-overflow-ellipsis\">\n <Text.formatted rule={\"\"}>{displayKey}</Text.formatted>\n </div>\n {!!fullKey && (\n <Box width={16} height={16} className=\"oui-cursor-pointer\">\n <CopyIcon\n color=\"white\"\n opacity={0.54}\n size={16}\n onClick={(e) => {\n e.stopPropagation();\n navigator.clipboard.writeText(fullKey);\n props.onCopyApiKey?.(fullKey);\n }}\n />\n </Box>\n )}\n </Flex>\n );\n },\n },\n {\n title: t(\"portfolio.apiKey.column.permissionType\"),\n dataIndex: \"scope\",\n render: (value) =>\n value\n ?.split(\",\")\n .map((e: any) => capitalizeFirstChar(`${e}`))\n .join(\", \"),\n },\n {\n title: t(\"portfolio.apiKey.column.restrictedIP\"),\n dataIndex: \"ip_restriction_list\",\n render: (value) => {\n let ip = value.join(\",\");\n if (ip.length === 0) {\n ip = \"--\";\n }\n return (\n <Tooltip content={ip} className=\"oui-max-w-[200px] oui-break-all\">\n <Flex gap={1}>\n <div className=\" oui-overflow-ellipsis oui-overflow-hidden\">\n {ip}\n </div>\n {ip !== \"--\" && (\n <Box width={16} height={16} className=\"oui-cursor-pointer\">\n <CopyIcon\n color=\"white\"\n opacity={0.54}\n size={16}\n onClick={(e) => {\n navigator.clipboard.writeText(ip);\n props?.onCopyIP();\n }}\n />\n </Box>\n )}\n </Flex>\n </Tooltip>\n );\n },\n },\n {\n title: t(\"portfolio.apiKey.column.expirationDate\"),\n dataIndex: \"expiration\",\n render: (value) => (\n <Text.formatted rule={\"date\"} formatString=\"yyyy-MM-dd\">\n {value}\n </Text.formatted>\n ),\n },\n {\n title: \"\",\n type: \"action\",\n dataIndex: \"action\",\n width: 120,\n render: (_, item) => {\n return (\n <Flex direction={\"row\"} gap={2}>\n <EditButton\n item={item}\n onUpdate={props.doEdit}\n verifyIP={props.verifyIP}\n />\n <DeleteButton item={item} onDelete={props.doDelete} />\n </Flex>\n );\n },\n },\n ];\n\n return (\n <AuthGuardDataTable\n bordered\n columns={columns}\n loading={props.isLoading}\n dataSource={props.keys}\n emptyView={<AuthGuardEmpty />}\n pagination={props.pagination}\n manualPagination={false}\n />\n );\n};\n\nconst EditButton: React.FC<{\n item: APIKeyItem;\n onUpdate: (item: APIKeyItem, ip?: string) => Promise<void>;\n verifyIP: (ip: string) => string;\n}> = (props) => {\n const { item, onUpdate, verifyIP } = props;\n const [open, setOpen] = useState(false);\n const { t } = useTranslation();\n\n return (\n <>\n <Button\n size=\"xs\"\n color=\"primary\"\n variant=\"contained\"\n onClick={(e) => {\n e.stopPropagation();\n setOpen(true);\n }}\n data-testid=\"oui-testid-apiKey-keyList-edit-btn\"\n >\n {t(\"common.edit\")}\n </Button>\n {open && (\n <React.Suspense fallback={null}>\n <LazyEditAPIKeyDialog\n item={item}\n open={open}\n setOpen={setOpen}\n onUpdate={onUpdate}\n verifyIP={verifyIP}\n />\n </React.Suspense>\n )}\n </>\n );\n};\n\nconst DeleteButton: React.FC<{\n item: APIKeyItem;\n onDelete: (item: APIKeyItem) => Promise<void>;\n}> = (props) => {\n const { item, onDelete } = props;\n const [open, setOpen] = useState(false);\n const { t } = useTranslation();\n return (\n <>\n <Button\n size=\"xs\"\n color=\"gray\"\n variant=\"contained\"\n onClick={(e) => {\n e.stopPropagation();\n setOpen(true);\n }}\n data-testid=\"oui-testid-apiKey-keyList-delete-btn\"\n >\n {t(\"common.delete\")}\n </Button>\n {open && (\n <React.Suspense fallback={null}>\n <LazyDeleteAPIKeyDialog\n item={item}\n open={open}\n setOpen={setOpen}\n onDelete={onDelete}\n />\n </React.Suspense>\n )}\n </>\n );\n};\n\nexport function formatKey(value: string): string {\n if (typeof value === \"undefined\") {\n return \"-\";\n }\n const key = `${value}`.slice(0, Math.min(value.length, 12));\n return `${key}***`;\n}\n","import { useEffect, useMemo, useState } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { useScreen } from \"@kodiak-finance/orderly-ui\";\nimport { SideMenuItem, useScaffoldContext } from \"@kodiak-finance/orderly-ui-scaffold\";\n\nexport enum PortfolioLeftSidebarPath {\n Overview = \"/portfolio\",\n Positions = \"/portfolio/positions\",\n Orders = \"/portfolio/orders\",\n Assets = \"/portfolio/assets\",\n FeeTier = \"/portfolio/feeTier\",\n ApiKey = \"/portfolio/apiKey\",\n Setting = \"/portfolio/setting\",\n History = \"/portfolio/history\",\n SymbolPerformance = \"/portfolio/symbol-performance\",\n}\n\nexport type UseLayoutBuilderOptions = {\n current?: string;\n};\n\nexport const usePortfolioLayoutScript = (props: UseLayoutBuilderOptions) => {\n const { routerAdapter } = useScaffoldContext();\n const [current, setCurrent] = useState(\n props.current ?? routerAdapter?.currentPath ?? \"/portfolio\",\n );\n const { t } = useTranslation();\n\n useEffect(() => {\n if (props.current || routerAdapter?.currentPath) {\n setCurrent(props.current || routerAdapter?.currentPath || \"/portfolio\");\n }\n }, [props.current, routerAdapter?.currentPath]);\n\n const items = useMemo(() => {\n return [\n {\n name: t(\"common.overview\"),\n href: PortfolioLeftSidebarPath.Overview,\n icon: (\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 18 18\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M5.24316 2.19727C3.58641 2.19727 2.24316 3.54044 2.24316 5.19727V12.6973C2.24316 14.3541 3.58641 15.6973 5.24316 15.6973H12.7432C14.3999 15.6973 15.7432 14.3541 15.7432 12.6973V5.19727C15.7432 3.54044 14.3999 2.19727 12.7432 2.19727H5.24316ZM5.24316 3.69727H12.7432C13.5719 3.69727 14.2432 4.36882 14.2432 5.19727V12.6973C14.2432 13.2484 13.9319 13.734 13.4894 13.9947C13.3454 12.2235 11.4427 11.1973 8.99316 11.1973C6.54366 11.1973 4.60341 12.251 4.48566 13.9997C4.04241 13.739 3.74316 13.2484 3.74316 12.6973V5.19727C3.74316 4.36882 4.41441 3.69727 5.24316 3.69727ZM8.99316 5.19727C7.54341 5.19727 6.36816 6.37252 6.36816 7.82227C6.36816 9.27202 7.54341 10.4473 8.99316 10.4473C10.4429 10.4473 11.6182 9.27202 11.6182 7.82227C11.6182 6.37252 10.4429 5.19727 8.99316 5.19727Z\"\n className=\"oui-fill-current group-data-[actived=true]:oui-fill-[url(#side-menu-gradient)]\"\n />\n </svg>\n ),\n },\n {\n name: t(\"common.positions\"),\n href: PortfolioLeftSidebarPath.Positions,\n icon: (\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 18 18\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M4.51 3.021a3 3 0 0 0-3 3v6a3 3 0 0 0 3 3h9a3 3 0 0 0 3-3v-6a3 3 0 0 0-3-3zm2.25 3a.76.76 0 0 1 .54.211.77.77 0 0 1 0 1.078l-.75.75a.77.77 0 0 1-.54.211h-.75a.75.75 0 0 1 0-1.5h.422l.54-.539a.76.76 0 0 1 .539-.21m3 .75h3a.75.75 0 0 1 0 1.5h-3a.75.75 0 0 1 0-1.5m-3 2.25a.76.76 0 0 1 .54.211.77.77 0 0 1 0 1.079l-.75.75a.77.77 0 0 1-.54.21h-.75a.75.75 0 0 1 0-1.5h.422l.54-.539a.76.76 0 0 1 .539-.21m3 .75h3a.75.75 0 0 1 0 1.5h-3a.75.75 0 0 1 0-1.5\"\n className=\"oui-fill-current group-data-[actived=true]:oui-fill-[url(#side-menu-gradient)]\"\n />\n </svg>\n ),\n },\n {\n name: t(\"common.orders\"),\n href: PortfolioLeftSidebarPath.Orders,\n icon: (\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 18 18\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M5.693 1.5C4.229 1.5 3.02 2.61 3.02 4.006v9.984c0 1.398 1.208 2.508 2.672 2.508h6.657c1.463 0 2.671-1.11 2.671-2.508V6.726c0-2.672-2.579-5.227-5.25-5.227zm4.828 1.593c1.33.352 2.562 1.58 2.906 2.906h-1.734c-.667 0-1.172-.472-1.172-1.008zm-3.75 2.906h.75a.75.75 0 0 1 0 1.5h-.75a.75.75 0 0 1 0-1.5m0 3h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1 0-1.5m0 3h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1 0-1.5\"\n className=\"oui-fill-current group-data-[actived=true]:oui-fill-[url(#side-menu-gradient)]\"\n />\n </svg>\n ),\n },\n {\n name: t(\"common.assets\"),\n href: PortfolioLeftSidebarPath.Assets,\n icon: (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 18 18\"\n fill=\"none\"\n >\n <path\n d=\"M9 1.5C4.85 1.5 1.5 4.85 1.5 9C1.5 13.15 4.85 16.5 9 16.5C13.15 16.5 16.5 13.15 16.5 9C16.5 4.85 13.15 1.5 9 1.5ZM8.17529 3.75H9.67529V4.94971L10.125 5.17529C10.35 5.32529 10.5756 5.47471 10.7256 5.69971C10.8756 5.92471 11.0256 6.14971 11.1006 6.44971C11.1756 6.74971 11.25 7.05029 11.25 7.42529H9.82471C9.82471 6.97529 9.75059 6.67471 9.60059 6.44971C9.45059 6.22471 9.3 6.14941 9 6.14941C8.85 6.14941 8.7 6.15059 8.625 6.22559L8.39941 6.44971C8.32441 6.52471 8.325 6.675 8.25 6.75C8.175 6.825 8.17529 6.975 8.17529 7.125C8.17529 7.275 8.25 7.35 8.25 7.5C8.25 7.65 8.32441 7.72529 8.39941 7.80029C8.47441 7.95029 8.54971 8.02559 8.69971 8.10059C8.77471 8.17559 8.92441 8.24971 9.14941 8.32471C9.44941 8.47471 9.75059 8.62441 9.97559 8.77441C10.2756 8.92441 10.4994 9.07529 10.6494 9.30029C10.8744 9.52529 11.0256 9.75059 11.1006 9.97559C11.1756 10.2006 11.25 10.5 11.25 10.875C11.25 11.25 11.1756 11.5494 11.1006 11.7744C11.0256 12.0744 10.8756 12.2247 10.7256 12.4497C10.5756 12.5997 10.35 12.7494 10.125 12.8994C9.975 12.9744 9.9 13.0503 9.75 13.0503V14.25H8.25V12.9756C8.1 12.9006 7.95029 12.8997 7.80029 12.8247C7.50029 12.7497 7.35 12.6 7.125 12.375C6.975 12.225 6.82529 11.925 6.67529 11.625C6.60029 11.25 6.52441 10.8753 6.52441 10.4253H8.02441C8.02441 10.6503 8.02559 10.8756 8.10059 11.1006C8.17559 11.3256 8.24971 11.4753 8.32471 11.5503C8.39971 11.6253 8.475 11.6994 8.625 11.7744C8.775 11.8494 8.85 11.8506 9 11.8506C9.15 11.8506 9.225 11.8494 9.375 11.7744C9.525 11.6994 9.60029 11.6253 9.67529 11.5503C9.75029 11.4753 9.74971 11.4 9.82471 11.25C9.89971 11.175 9.89941 11.025 9.89941 10.875C9.89941 10.725 9.82471 10.575 9.82471 10.5C9.82471 10.425 9.75029 10.2747 9.67529 10.1997C9.60029 10.0497 9.525 9.97441 9.375 9.89941L8.92529 9.67529C8.62529 9.52529 8.32559 9.37559 8.10059 9.22559C7.80059 9.07559 7.57529 8.92471 7.42529 8.69971C7.20029 8.54971 7.05059 8.32441 6.97559 8.02441C6.90059 7.79941 6.82471 7.5 6.82471 7.125C6.82471 6.825 6.82441 6.52529 6.89941 6.30029C7.04941 6.07529 7.12559 5.85 7.35059 5.625C7.50059 5.4 7.65029 5.25029 7.80029 5.17529C7.95029 5.10029 8.02529 5.02441 8.17529 5.02441V3.75Z\"\n className=\"oui-fill-current group-data-[actived=true]:oui-fill-[url(#side-menu-gradient)]\"\n />\n </svg>\n ),\n },\n {\n name: t(\"portfolio.feeTier\"),\n href: PortfolioLeftSidebarPath.FeeTier,\n icon: (\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 18 18\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M5.99829 1.51062C4.34154 1.51062 2.99829 2.85387 2.99829 4.51062V13.5106C2.99829 15.1674 4.34154 16.5106 5.99829 16.5106H11.9983C13.655 16.5106 14.9983 15.1674 14.9983 13.5106V4.51062C14.9983 2.85387 13.655 1.51062 11.9983 1.51062H5.99829ZM5.99829 3.76062H11.9983C12.4123 3.76062 12.7483 4.09662 12.7483 4.51062V6.01062C12.7483 6.42462 12.4123 6.76062 11.9983 6.76062H5.99829C5.58429 6.76062 5.24829 6.42462 5.24829 6.01062V4.51062C5.24829 4.09662 5.58429 3.76062 5.99829 3.76062ZM5.99829 8.26062C6.41229 8.26062 6.74829 8.59662 6.74829 9.01062C6.74829 9.42462 6.41229 9.76062 5.99829 9.76062C5.58429 9.76062 5.24829 9.42462 5.24829 9.01062C5.24829 8.59662 5.58429 8.26062 5.99829 8.26062ZM8.99829 8.26062C9.41229 8.26062 9.74829 8.59662 9.74829 9.01062C9.74829 9.42462 9.41229 9.76062 8.99829 9.76062C8.58429 9.76062 8.24829 9.42462 8.24829 9.01062C8.24829 8.59662 8.58429 8.26062 8.99829 8.26062ZM11.9983 8.26062C12.4123 8.26062 12.7483 8.59662 12.7483 9.01062C12.7483 9.42462 12.4123 9.76062 11.9983 9.76062C11.5843 9.76062 11.2483 9.42462 11.2483 9.01062C11.2483 8.59662 11.5843 8.26062 11.9983 8.26062ZM5.99829 10.5106C6.41229 10.5106 6.74829 10.8466 6.74829 11.2606C6.74829 11.6746 6.41229 12.0106 5.99829 12.0106C5.58429 12.0106 5.24829 11.6746 5.24829 11.2606C5.24829 10.8466 5.58429 10.5106 5.99829 10.5106ZM8.99829 10.5106C9.41229 10.5106 9.74829 10.8466 9.74829 11.2606C9.74829 11.6746 9.41229 12.0106 8.99829 12.0106C8.58429 12.0106 8.24829 11.6746 8.24829 11.2606C8.24829 10.8466 8.58429 10.5106 8.99829 10.5106ZM11.9983 10.5106C12.4123 10.5106 12.7483 10.8466 12.7483 11.2606V13.5106C12.7483 13.9246 12.4123 14.2606 11.9983 14.2606C11.5843 14.2606 11.2483 13.9246 11.2483 13.5106V11.2606C11.2483 10.8466 11.5843 10.5106 11.9983 10.5106ZM5.99829 12.7606C6.41229 12.7606 6.74829 13.0966 6.74829 13.5106C6.74829 13.9246 6.41229 14.2606 5.99829 14.2606C5.58429 14.2606 5.24829 13.9246 5.24829 13.5106C5.24829 13.0966 5.58429 12.7606 5.99829 12.7606ZM8.99829 12.7606C9.41229 12.7606 9.74829 13.0966 9.74829 13.5106C9.74829 13.9246 9.41229 14.2606 8.99829 14.2606C8.58429 14.2606 8.24829 13.9246 8.24829 13.5106C8.24829 13.0966 8.58429 12.7606 8.99829 12.7606Z\"\n className=\"oui-fill-current group-data-[actived=true]:oui-fill-[url(#side-menu-gradient)]\"\n />\n </svg>\n ),\n },\n {\n name: t(\"portfolio.apiKeys\"),\n href: PortfolioLeftSidebarPath.ApiKey,\n icon: (\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 18 18\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M9.02124 1.49915C7.77849 1.49915 6.77124 2.5064 6.77124 3.74915C6.77124 4.70015 7.40049 5.55517 8.26974 5.86942L8.27124 8.24915H5.27124C4.85724 8.24915 4.52124 8.58515 4.52124 8.99915L4.52048 12.1304C3.65723 12.4274 3.02124 13.2981 3.02124 14.2491C3.02124 15.4919 4.02849 16.4991 5.27124 16.4991C6.51399 16.4991 7.52124 15.4919 7.52124 14.2491C7.52124 13.2981 6.92499 12.4596 6.02949 12.1206L6.02124 9.74915H9.02124H12.0212L12.0265 12.1319C11.1257 12.4446 10.5212 13.2981 10.5212 14.2491C10.5212 15.4919 11.5285 16.4991 12.7712 16.4991C14.014 16.4991 15.0212 15.4919 15.0212 14.2491C15.0212 13.2981 14.407 12.4611 13.5272 12.1281L13.5212 8.99915C13.5212 8.58515 13.1852 8.24915 12.7712 8.24915H9.77124L9.76899 5.86639C10.642 5.55814 11.2712 4.70015 11.2712 3.74915C11.2712 2.5064 10.264 1.49915 9.02124 1.49915Z\"\n className=\"oui-fill-current group-data-[actived=true]:oui-fill-[url(#side-menu-gradient)]\"\n />\n </svg>\n ),\n },\n {\n name: t(\"portfolio.symbolPerformance\"),\n href: PortfolioLeftSidebarPath.SymbolPerformance,\n icon: (\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 18 18\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M13.5 3.75C12.8096 3.75 12.375 4.18467 12.375 4.875V12.375C12.375 13.0654 12.8096 13.5 13.5 13.5H14.625C15.3154 13.5 15.75 13.0654 15.75 12.375V4.875C15.75 4.18467 15.3154 3.75 14.625 3.75H13.5ZM13.5 5.25H14.625V12.375H13.5V5.25ZM8.25 6.75C7.55964 6.75 7.125 7.18467 7.125 7.875V12.375C7.125 13.0654 7.55964 13.5 8.25 13.5H9.375C10.0654 13.5 10.5 13.0654 10.5 12.375V7.875C10.5 7.18467 10.0654 6.75 9.375 6.75H8.25ZM8.25 8.25H9.375V12.375H8.25V8.25ZM3 9.75C2.30964 9.75 1.875 10.1847 1.875 10.875V12.375C1.875 13.0654 2.30964 13.5 3 13.5H4.125C4.81536 13.5 5.25 13.0654 5.25 12.375V10.875C5.25 10.1847 4.81536 9.75 4.125 9.75H3ZM3 11.25H4.125V12.375H3V11.25Z\"\n className=\"oui-fill-current group-data-[actived=true]:oui-fill-[url(#side-menu-gradient)]\"\n />\n </svg>\n ),\n },\n {\n name: t(\"portfolio.setting\"),\n href: PortfolioLeftSidebarPath.Setting,\n icon: (\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 18 18\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M6.72601 1.84159C5.66251 2.17834 4.74527 2.7296 3.93677 3.48185C3.68702 3.7151 3.61052 4.09534 3.77252 4.39609C4.37327 5.50684 3.74476 6.69484 2.39026 6.76309C2.05801 6.78034 1.76477 7.02559 1.68677 7.34884C1.55252 7.90759 1.49927 8.37559 1.49927 8.98984C1.49927 9.50509 1.55476 10.0878 1.66351 10.6068C1.73101 10.9308 2.01302 11.1641 2.34302 11.1933C3.70652 11.3111 4.38152 12.3506 3.77252 13.6773C3.63752 13.9721 3.69902 14.3246 3.93677 14.5443C4.73327 15.2816 5.64826 15.8006 6.72601 16.1381C7.03351 16.2348 7.38076 16.1186 7.56976 15.8568C8.40376 14.7033 9.61352 14.6988 10.4055 15.8568C10.5923 16.1298 10.9343 16.2611 11.2493 16.1613C12.2895 15.8343 13.2585 15.2771 14.0618 14.5443C14.3093 14.3193 14.3745 13.9541 14.226 13.6541C13.602 12.3948 14.3198 11.2383 15.6083 11.2166C15.9503 11.2106 16.2548 10.9856 16.335 10.6541C16.4648 10.1163 16.4993 9.64759 16.4993 8.98984C16.4993 8.42434 16.4325 7.86709 16.3118 7.32559C16.2353 6.98359 15.936 6.74059 15.585 6.73984C14.3168 6.73759 13.6058 5.49109 14.226 4.39609C14.3985 4.09084 14.3445 3.71735 14.085 3.48185C13.2675 2.73935 12.2708 2.15959 11.226 1.84159C10.905 1.74409 10.5638 1.86409 10.3823 2.14609C9.65776 3.27109 8.30477 3.29135 7.59302 2.16935C7.41077 1.8821 7.05001 1.73809 6.72601 1.84159ZM8.99927 5.98984C10.656 5.98984 11.9993 7.33309 11.9993 8.98984C11.9993 10.6466 10.656 11.9898 8.99927 11.9898C7.34252 11.9898 5.99927 10.6466 5.99927 8.98984C5.99927 7.33309 7.34252 5.98984 8.99927 5.98984Z\"\n className=\"oui-fill-current group-data-[actived=true]:oui-fill-[url(#side-menu-gradient)]\"\n />\n </svg>\n ),\n },\n {\n name: t(\"trading.history\"),\n href: PortfolioLeftSidebarPath.History,\n hide: true,\n },\n ];\n }, [t]);\n\n const { isMobile: hideSideBar } = useScreen();\n\n return {\n items,\n current,\n hideSideBar,\n onItemSelect: (item: SideMenuItem) => {\n if (typeof item.href === \"undefined\") {\n console.warn(\"Item href is not defined\");\n return;\n }\n setCurrent(item.href!);\n routerAdapter?.onRouteChange({\n href: item.href,\n name: item.name,\n });\n },\n };\n};\n\nexport const useCustomSidebarHook = () => {\n const { expanded, setExpand } = useScaffoldContext();\n\n return {\n open: expanded,\n onOpenChange: (open: boolean) => {\n setExpand(open);\n },\n };\n};\n\nexport type usePortfolioLayoutScriptType = ReturnType<\n typeof usePortfolioLayoutScript\n>;\n","import { FC, PropsWithChildren } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { RouterAdapter } from \"@kodiak-finance/orderly-types\";\nimport { cn } from \"@kodiak-finance/orderly-ui\";\nimport {\n ScaffoldProps,\n Scaffold,\n SideBar,\n SideBarProps,\n useScaffoldContext,\n} from \"@kodiak-finance/orderly-ui-scaffold\";\n\nexport type PortfolioLayoutProps = ScaffoldProps & {\n hideSideBar?: boolean;\n items?: SideBarProps[\"items\"];\n};\n\nexport const PortfolioLayout: FC<PropsWithChildren<PortfolioLayoutProps>> = (\n props,\n) => {\n const { children, leftSideProps, classNames, ...rest } = props;\n\n return (\n <Scaffold\n leftSidebar={\n props.hideSideBar ? null : (\n <LeftSidebar\n current={props.routerAdapter?.currentPath}\n routerAdapter={props.routerAdapter}\n items={props.items}\n {...leftSideProps}\n />\n )\n }\n routerAdapter={props.routerAdapter}\n classNames={{\n ...classNames,\n content: cn(\"oui-my-6 oui-px-3\", classNames?.content),\n topNavbar: cn(\"oui-bg-base-9\", classNames?.topNavbar),\n leftSidebar: cn(\n \"oui-rounded-xl oui-bg-base-9\",\n \"oui-m-3 oui-p-4\",\n \"oui-border oui-border-line\",\n classNames?.leftSidebar,\n ),\n }}\n {...rest}\n >\n {children}\n </Scaffold>\n );\n};\n\ntype LeftSidebarProps = SideBarProps & {\n routerAdapter?: RouterAdapter;\n};\n\nconst LeftSidebar: FC<LeftSidebarProps> = (props) => {\n const { expanded, setExpand } = useScaffoldContext();\n const { t } = useTranslation();\n return (\n <SideBar\n title={t(\"common.portfolio\")}\n {...props}\n open={expanded}\n onOpenChange={(open) => setExpand(open)}\n onItemSelect={(e) => {\n props.onItemSelect?.(e);\n props.routerAdapter?.onRouteChange?.({\n href: e.href || \"\",\n name: e.name,\n });\n }}\n />\n );\n};\n","import { FC, PropsWithChildren } from \"react\";\nimport { Flex, Box } from \"@kodiak-finance/orderly-ui\";\nimport {\n MainNavMobile,\n BottomNav,\n type ScaffoldProps,\n} from \"@kodiak-finance/orderly-ui-scaffold\";\nimport { LayoutProvider } from \"./context\";\nimport { usePortfolioLayoutScriptType } from \"./layout.script\";\n\nexport const PortfolioLayoutMobile: FC<\n PropsWithChildren<\n ScaffoldProps & usePortfolioLayoutScriptType & { current?: string }\n >\n> = (props) => {\n return (\n <LayoutProvider {...props}>\n <Flex\n direction={\"column\"}\n width={\"100%\"}\n height={\"100%\"}\n className=\"oui-h-full-screen oui-bg-base-10\"\n >\n <header className=\"oui-scaffold-topNavbar oui-sticky oui-top-0 oui-z-10 oui-w-full oui-bg-base-10\">\n <MainNavMobile\n {...props.mainNavProps}\n current={props?.current}\n subItems={props?.items}\n leftNav={{\n ...props.mainNavProps?.leftNav,\n menus: [\n ...(props.mainNavProps?.leftNav?.menus || []),\n ...(props?.items || []),\n ],\n }}\n routerAdapter={props.routerAdapter}\n />\n </header>\n <Box className=\"oui-scaffold-container oui-min-h-[calc(100vh-44px-64px-env(safe-area-inset-bottom))] oui-w-full\">\n {props.children}\n </Box>\n <footer className=\"oui-scaffold-bottomNav oui-fixed oui-bottom-0 oui-z-10 oui-w-full oui-bg-base-9 oui-pb-[calc(env(safe-area-inset-bottom))]\">\n <BottomNav\n mainMenus={props.bottomNavProps?.mainMenus}\n current={props?.current}\n onRouteChange={props.routerAdapter?.onRouteChange}\n />\n </footer>\n </Flex>\n </LayoutProvider>\n );\n};\n","import { FC, PropsWithChildren } from \"react\";\nimport { useScreen } from \"@kodiak-finance/orderly-ui\";\nimport { usePortfolioLayoutScript } from \"./layout.script\";\nimport { PortfolioLayout, PortfolioLayoutProps } from \"./layout.ui\";\nimport { PortfolioLayoutMobile } from \"./layout.ui.mobile\";\n\nexport type PortfolioLayoutWidgetProps = PortfolioLayoutProps;\n\nexport const PortfolioLayoutWidget: FC<\n PropsWithChildren<PortfolioLayoutWidgetProps>\n> = (props) => {\n const state = usePortfolioLayoutScript({\n current: props.leftSideProps?.current,\n });\n const { isMobile } = useScreen();\n\n return (\n <>\n {isMobile ? (\n // @ts-ignore\n <PortfolioLayoutMobile {...state} {...props} />\n ) : (\n <PortfolioLayout {...state} {...props} />\n )}\n </>\n );\n};\n","export { AssetWidget, AssetsUI } from \"./assets\";\nexport { HistoryDataGroupWidget } from \"./historyDataGroup\";\n\nexport * from \"./assetChart\";\nexport * from \"./assetHistory\";\n\nexport {\n PerformanceUI,\n PerformanceWidget,\n usePerformanceScript,\n} from \"./performance\";\n\nexport * from \"./performanceMobileDialog\";\n\nexport {\n FundingHistoryWidget,\n useFundingHistoryColumns,\n useFundingHistoryHook,\n} from \"./funding\";\n\nexport {\n DistributionHistoryWidget,\n DistributionHistoryMobile,\n DistributionHistoryDesktop,\n} from \"./distribution\";\n\nexport { OverviewPage } from \"./main\";\n\nexport { OverviewProvider } from \"./provider/overviewProvider\";\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React from \"react\";\nimport {\n AssetLineChart,\n PnlAreaChart,\n PnLBarChart,\n VolBarChart,\n PnlLineChartProps,\n} from \"@kodiak-finance/orderly-chart\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n Tabs,\n TabPanel,\n Flex,\n Text,\n DataFilter,\n Box,\n cn,\n} from \"@kodiak-finance/orderly-ui\";\nimport type { UsePerformanceScriptReturn } from \"../performance/performance.script\";\nimport {\n PeriodType,\n useAssetsHistoryDataReturn,\n} from \"../shared/useAssetHistory\";\n\nconst responsiveProps: PnlLineChartProps[\"responsiveContainerProps\"] = {\n width: \"100%\",\n minHeight: 144,\n aspect: 2.5,\n};\n\nexport const PerformanceMobileUI: React.FC<\n Pick<\n useAssetsHistoryDataReturn & UsePerformanceScriptReturn,\n | \"data\"\n | \"curPeriod\"\n | \"aggregateValue\"\n | \"onPeriodChange\"\n | \"invisible\"\n | \"visible\"\n | \"createFakeData\"\n | \"period\"\n | \"filterItems\"\n | \"onFilter\"\n >\n> = (props) => {\n const { t } = useTranslation();\n const {\n data,\n aggregateValue,\n visible,\n invisible,\n curPeriod,\n period,\n onPeriodChange,\n createFakeData,\n filterItems,\n onFilter,\n } = props;\n\n const mergedData = data.length\n ? data\n : (createFakeData?.(\n { account_value: 0, pnl: 0 },\n { account_value: 500, pnl: 500 },\n ) as any[]);\n\n const volumeData = React.useMemo(\n () =>\n (mergedData ?? []).map((d) => ({\n ...d,\n volume: d.perp_volume ?? 0,\n })),\n [mergedData],\n );\n\n return (\n <div>\n {filterItems && filterItems.length > 0 && (\n <Box mb={4}>\n <DataFilter\n items={filterItems}\n onFilter={onFilter || (() => {})}\n className=\"oui-border-none oui-py-0\"\n />\n </Box>\n )}\n <Tabs\n value={period || \"\"}\n defaultValue={PeriodType.MONTH}\n classNames={{ tabsList: \"oui-justify-between\", trigger: \"oui-w-1/4\" }}\n onValueChange={(value) => onPeriodChange(value as PeriodType)}\n >\n <TabPanel\n title={t(\"common.select.1d\")}\n value={PeriodType.DAY}\n className=\"oui-min-h-40\"\n >\n <AssetLineChart\n data={mergedData}\n invisible={invisible || (data?.length ?? 0) <= 2}\n responsiveContainerProps={responsiveProps}\n />\n </TabPanel>\n <TabPanel\n title={t(\"common.select.7d\")}\n value={PeriodType.WEEK}\n className=\"oui-min-h-40\"\n >\n <AssetLineChart\n data={mergedData}\n invisible={invisible || (data?.length ?? 0) <= 2}\n responsiveContainerProps={responsiveProps}\n />\n </TabPanel>\n <TabPanel\n title={t(\"common.select.30d\")}\n value={PeriodType.MONTH}\n className=\"oui-min-h-40\"\n >\n <AssetLineChart\n data={mergedData}\n invisible={invisible || (data?.length ?? 0) <= 2}\n responsiveContainerProps={responsiveProps}\n />\n </TabPanel>\n <TabPanel\n title={t(\"common.select.90d\")}\n value={PeriodType.QUARTER}\n className=\"oui-min-h-40\"\n >\n <AssetLineChart\n data={mergedData}\n invisible={invisible || (mergedData?.length ?? 0) <= 2}\n responsiveContainerProps={responsiveProps}\n />\n </TabPanel>\n </Tabs>\n <Flex justify=\"between\" itemAlign=\"center\" gap={2} my={4}>\n <Flex\n gap={1}\n direction=\"column\"\n itemAlign=\"start\"\n className=\"oui-w-1/3 oui-rounded-lg oui-bg-base-7 oui-px-2 oui-py-1.5\"\n >\n <Text className=\"oui-truncate\" intensity={36} size=\"2xs\">\n {t(\"portfolio.overview.performance.roi\", { period: curPeriod })}\n </Text>\n <Text.numeral size=\"sm\" visible={visible} rule=\"percentages\" coloring>\n {invisible ? \"--\" : aggregateValue.roi}\n </Text.numeral>\n </Flex>\n <Flex\n gap={1}\n direction=\"column\"\n itemAlign=\"start\"\n className=\"oui-w-1/3 oui-rounded-lg oui-bg-base-7 oui-px-2 oui-py-1.5\"\n >\n <Text className=\"oui-truncate\" intensity={36} size=\"2xs\">\n {t(\"portfolio.overview.performance.pnl\", { period: curPeriod })}\n </Text>\n <Text.numeral size=\"sm\" visible={visible} coloring showIdentifier>\n {invisible ? \"--\" : aggregateValue.pnl}\n </Text.numeral>\n </Flex>\n <Flex\n gap={1}\n direction=\"column\"\n itemAlign=\"start\"\n className=\"oui-w-1/3 oui-rounded-lg oui-bg-base-7 oui-px-2 oui-py-1.5\"\n >\n <Text className=\"oui-truncate\" intensity={36} size=\"2xs\">\n {t(\"portfolio.overview.performance.volume\", { period: curPeriod })}\n </Text>\n <Text.numeral size=\"sm\" visible={visible} coloring={false}>\n {invisible ? \"--\" : aggregateValue.vol}\n </Text.numeral>\n </Flex>\n </Flex>\n <Tabs defaultValue={\"dailyPnl\"}>\n <TabPanel\n value={\"dailyPnl\"}\n title={t(\"portfolio.overview.performance.dailyPnl\")}\n className=\"oui-min-h-40\"\n >\n <PnLBarChart\n data={mergedData}\n invisible={invisible || (mergedData?.length ?? 0) <= 2}\n responsiveContainerProps={responsiveProps}\n />\n </TabPanel>\n <TabPanel\n value={\"cumulativePnl\"}\n title={t(\"portfolio.overview.performance.cumulativePnl\")}\n className=\"oui-min-h-40\"\n >\n <PnlAreaChart\n data={mergedData}\n invisible={invisible || (mergedData?.length ?? 0) <= 2}\n responsiveContainerProps={responsiveProps}\n />\n </TabPanel>\n <TabPanel\n value={\"volume\"}\n title={t(\"portfolio.overview.performance.volume\", { period: \"\" })}\n className=\"oui-min-h-40\"\n >\n <div\n className={cn(\n \"oui-h-[144px] oui-w-full\",\n (invisible || (mergedData?.length ?? 0) <= 2) &&\n \"chart-invisible\",\n )}\n >\n <VolBarChart\n data={(mergedData ?? []).map((item: any) => ({\n date: item.date,\n volume: item.perp_volume ?? 0,\n opacity: (item.perp_volume ?? 0) > 0 ? 1 : 0,\n }))}\n className=\"oui-size-full\"\n />\n </div>\n </TabPanel>\n </Tabs>\n </div>\n );\n};\n","import { useMemo, useRef, useEffect } from \"react\";\nimport {\n useAllBrokers,\n useConfig,\n useCurEpochEstimate,\n useEpochInfo,\n useGetClaimed,\n useAccount,\n RefferalAPI,\n usePrivateQuery,\n noCacheConfig,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { DistributionId, TWType } from \"@kodiak-finance/orderly-hooks\";\nimport { useAppContext } from \"@kodiak-finance/orderly-react-app\";\nimport { AccountStatusEnum } from \"@kodiak-finance/orderly-types\";\nimport { useOverviewContext } from \"../provider/overviewContext\";\n\nexport const useRewardsData = ({ type = TWType.normal }: { type?: TWType }) => {\n const totalOrderClaimedReward = useGetClaimed(\n type === TWType.mm ? DistributionId.mmOrder : DistributionId.order,\n );\n const [curEpochEstimate] = useCurEpochEstimate(type);\n const [brokers] = useAllBrokers();\n const { state } = useAccount();\n const { data, mutate } = usePrivateQuery<RefferalAPI.ReferralInfo>(\n \"/v1/referral/info\",\n { revalidateOnFocus: true, errorRetryCount: 3, ...noCacheConfig },\n );\n\n const epochList = useEpochInfo(type as TWType);\n const brokerId = useConfig(\"brokerId\");\n\n const brokerName = useMemo(() => {\n return brokers?.[brokerId];\n }, [brokerId, brokers]);\n\n const lastStete = useRef<AccountStatusEnum>(AccountStatusEnum.NotConnected);\n\n const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n useEffect(() => {\n if (lastStete.current !== state.status) {\n lastStete.current = state.status;\n timerRef.current = setTimeout(() => {\n mutate();\n }, 1000);\n }\n return () => {\n if (timerRef.current) {\n clearTimeout(timerRef.current);\n }\n };\n }, [state.status]);\n\n return {\n totalOrderClaimedReward,\n curEpochEstimate,\n epochList,\n brokerName,\n referralInfo: data,\n };\n};\n\nexport const useRewardsDataScript = () => {\n const {\n totalOrderClaimedReward,\n curEpochEstimate,\n epochList,\n brokerName,\n referralInfo,\n } = useOverviewContext();\n const { state } = useAccount();\n const { wrongNetwork } = useAppContext();\n const isSignIn =\n state.status === AccountStatusEnum.EnableTrading ||\n state.status === AccountStatusEnum.EnableTradingWithoutConnected;\n\n return {\n totalOrderClaimedReward,\n curEpochEstimate,\n epochList,\n brokerName,\n isSignIn,\n referralInfo,\n wrongNetwork,\n };\n};\n\nexport type UseRewardsDataReturn = ReturnType<typeof useRewardsData>;\n","import { FC, PropsWithChildren, useMemo } from \"react\";\nimport { TWType } from \"@kodiak-finance/orderly-hooks\";\nimport { useRewardsData } from \"../mobile/useRewardsData.script\";\nimport { useAssetsHistoryData } from \"../shared/useAssetHistory\";\nimport { OverviewContext, OverviewContextState } from \"./overviewContext\";\n\nexport const localKey = \"portfolio_performance_period\";\n\nexport const OverviewProvider: FC<PropsWithChildren<{ type?: TWType }>> = (\n props,\n) => {\n const { type, children } = props;\n const state = useAssetsHistoryData(localKey, { isRealtime: true });\n const rewardsData = useRewardsData({ type: type });\n\n const memoizedValue = useMemo<OverviewContextState>(() => {\n return {\n ...state,\n type: type,\n ...rewardsData,\n };\n }, [state, type, rewardsData]);\n\n return (\n <OverviewContext.Provider value={memoizedValue}>\n {children}\n </OverviewContext.Provider>\n );\n};\n","import React from \"react\";\nimport { pick } from \"ramda\";\nimport { i18n } from \"@kodiak-finance/orderly-i18n\";\nimport {\n registerSimpleDialog,\n registerSimpleSheet,\n} from \"@kodiak-finance/orderly-ui\";\nimport { usePerformanceScript } from \"..\";\nimport { localKey } from \"../provider/overviewProvider\";\nimport { useAssetsHistoryData } from \"../shared/useAssetHistory\";\nimport { PerformanceMobileUI } from \"./performance.ui\";\n\nexport const PerformanceMobileWidget: React.FC = () => {\n const state = useAssetsHistoryData(localKey, { isRealtime: true });\n const { visible, invisible } = usePerformanceScript();\n return (\n <PerformanceMobileUI\n {...pick(\n [\n \"data\",\n \"curPeriod\",\n \"aggregateValue\",\n \"onPeriodChange\",\n \"createFakeData\",\n \"period\",\n \"filterItems\",\n \"onFilter\",\n ],\n state,\n )}\n visible={visible}\n invisible={invisible}\n />\n );\n};\n\nexport const PerformanceMobileSheetId = \"PerformanceMobileSheetId\";\n\nexport const PerformanceMobileDialogId = \"PerformanceMobileDialogId\";\n\nregisterSimpleSheet(PerformanceMobileSheetId, PerformanceMobileWidget, {\n title: () => i18n.t(\"portfolio.overview.performance\"),\n});\n\nregisterSimpleDialog(PerformanceMobileDialogId, PerformanceMobileWidget, {\n title: () => i18n.t(\"portfolio.overview.performance\"),\n classNames: {\n content: \"oui-w-[420px]\",\n },\n});\n","import { FC } from \"react\";\nimport { ENVType, useGetEnv } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { useAppContext } from \"@kodiak-finance/orderly-react-app\";\nimport { Flex } from \"@kodiak-finance/orderly-ui\";\nimport { DepositStatusWidget } from \"@kodiak-finance/orderly-ui-transfer\";\nimport { useLayoutContext } from \"../../../layout/context\";\nimport { useAssetScript } from \"../assets\";\nimport { PortfolioChartsMobileWidget } from \"../portfolioChartsMobile\";\nimport { AccountStatusMobile } from \"./accountStatus.ui.mobile\";\nimport { AffiliateCardMobile } from \"./affiliateCard.ui.mobile\";\nimport { PortfolioHandleMobile } from \"./portfolioHandle.ui.mobile\";\nimport { PortfolioValueMobile } from \"./portfolioVaule.ui.mobile\";\nimport { SettingRouterMobile } from \"./settingRouter.ui.mobile\";\nimport { TraderCardMobile } from \"./traderCard.ui.mobile\";\n// import { TradingRewardsCardMobile } from \"./tradingRewardsCard.ui.mobile\";\nimport { useRewardsDataScript } from \"./useRewardsData.script\";\n\nexport type MobileOverviewProps = {\n /** show affiliate card, mobile only */\n hideAffiliateCard?: boolean;\n /** show trader card, mobile only */\n hideTraderCard?: boolean;\n};\n\nexport const MobileOverview: FC<MobileOverviewProps> = (props) => {\n const { hideAffiliateCard, hideTraderCard } = props;\n const {\n canTrade,\n onWithdraw,\n onDeposit,\n portfolioValue,\n unrealPnL,\n unrealROI,\n visible,\n namespace,\n toggleVisible,\n onTransfer,\n isMainAccount,\n hasSubAccount,\n } = useAssetScript();\n const { t } = useTranslation();\n const rewardsData = useRewardsDataScript();\n const layoutContext = useLayoutContext();\n const { onRouteChange } = useAppContext();\n const env = useGetEnv();\n\n const goToClaim = () => {\n const url = `https://${\n env !== ENVType.prod ? `${env}-` : \"\"\n }app.orderly.network/tradingRewards`;\n window.open(url, \"_blank\");\n };\n\n const navigateToPortfolioHistory =\n typeof onRouteChange === \"function\"\n ? () => {\n onRouteChange({\n href: \"/portfolio/history\",\n name: t(\"trading.history\"),\n });\n }\n : undefined;\n\n // console.log('rewards data', rewardsData, layoutContext, props);\n\n return (\n <>\n <div className=\"oui-my-1 oui-px-3\">\n <AccountStatusMobile />\n </div>\n <Flex\n direction={\"column\"}\n width={\"100%\"}\n height={\"100%\"}\n className=\"oui-gap-5 oui-px-3\"\n >\n <Flex direction=\"column\" width=\"100%\" gapY={2}>\n <PortfolioValueMobile\n toggleVisible={toggleVisible}\n portfolioValue={portfolioValue}\n unrealPnL={unrealPnL}\n unrealROI={unrealROI}\n visible={visible}\n canTrade={canTrade}\n namespace={namespace}\n routerAdapter={layoutContext?.routerAdapter}\n />\n <DepositStatusWidget onClick={navigateToPortfolioHistory} />\n <PortfolioChartsMobileWidget />\n </Flex>\n <PortfolioHandleMobile\n disabled={!canTrade}\n onWithdraw={onWithdraw}\n onDeposit={onDeposit}\n onTransfer={onTransfer}\n isMainAccount={isMainAccount}\n routerAdapter={layoutContext?.routerAdapter}\n hasSubAccount={hasSubAccount}\n />\n {(!hideAffiliateCard || !hideTraderCard) && (\n <Flex\n direction={\"row\"}\n width={\"100%\"}\n height={\"100%\"}\n className=\"oui-gap-3\"\n >\n <Flex direction=\"row\" className=\"oui-flex-1 oui-gap-3\">\n {!hideAffiliateCard && (\n <AffiliateCardMobile\n referralInfo={rewardsData.referralInfo}\n routerAdapter={layoutContext?.routerAdapter}\n />\n )}\n {!hideTraderCard && (\n <TraderCardMobile\n referralInfo={rewardsData.referralInfo}\n routerAdapter={layoutContext?.routerAdapter}\n />\n )}\n </Flex>\n {/* Disable trading rewards card for now. Set to row */}\n {/* <Flex direction=\"column\" className=\"oui-flex-1\">\n <TradingRewardsCardMobile {...rewardsData} goToClaim={goToClaim} />\n </Flex> */}\n </Flex>\n )}\n <SettingRouterMobile routerAdapter={layoutContext?.routerAdapter} />\n </Flex>\n </>\n );\n};\n","import React from \"react\";\nimport { EMPTY_LIST } from \"@kodiak-finance/orderly-types\";\nimport { useAssetsChartScript } from \"../assetChart\";\nimport { usePortfolioChartsState } from \"./portfolioChartsMobile.script\";\nimport { PortfolioChartsMobileUI } from \"./portfolioChartsMobile.ui\";\n\nexport const PortfolioChartsMobileWidget: React.FC = () => {\n const { data, invisible } = useAssetsChartScript();\n const state = usePortfolioChartsState();\n return (\n <PortfolioChartsMobileUI\n data={data || EMPTY_LIST}\n invisible={invisible}\n {...state}\n />\n );\n};\n","import { useCallback } from \"react\";\nimport {\n useLocalStorage,\n usePositionStream,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { modal } from \"@kodiak-finance/orderly-ui\";\nimport { ORDERLY_ASSETS_VISIBLE_KEY } from \"../../assets/type\";\nimport { PerformanceMobileSheetId } from \"../performanceMobileDialog\";\nimport { useOverviewContext } from \"../provider/overviewContext\";\n\nexport const usePortfolioChartsState = () => {\n const [data] = usePositionStream();\n const overview = useOverviewContext();\n const [visible, setVisible] = useLocalStorage<boolean>(\n ORDERLY_ASSETS_VISIBLE_KEY,\n true,\n );\n const onPerformanceClick = useCallback(() => {\n return modal.show(PerformanceMobileSheetId);\n }, []);\n return {\n todaysPnl: overview?.todayPerformance?.pnl ?? null,\n todaysRoi: overview?.todayPerformance?.roi ?? null,\n todaysVol: overview?.todayPerformance?.vol ?? null,\n unrealPnL: data?.aggregated.total_unreal_pnl,\n unrealROI: data?.totalUnrealizedROI,\n visible: visible as boolean,\n setVisible: setVisible,\n onPerformanceClick: onPerformanceClick,\n } as const;\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useId } from \"react\";\nimport {\n Area,\n AreaChart,\n ResponsiveContainer,\n} from \"@kodiak-finance/orderly-chart\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { EMPTY_LIST } from \"@kodiak-finance/orderly-types\";\nimport { ChevronRightIcon, cn, Flex, Text } from \"@kodiak-finance/orderly-ui\";\nimport { usePortfolioChartsState } from \".\";\n\nexport const PortfolioChartsMobileUI: React.FC<\n ReturnType<typeof usePortfolioChartsState> & {\n data: any[];\n invisible?: boolean;\n }\n> = (props) => {\n const { data, invisible, unrealPnL, unrealROI, visible, onPerformanceClick } =\n props;\n const { t } = useTranslation();\n const colorId = useId();\n return (\n <Flex\n p={4}\n width={\"100%\"}\n itemAlign=\"center\"\n justify=\"between\"\n className={cn(\n \"oui-relative oui-overflow-hidden oui-rounded-2xl oui-border oui-border-solid oui-border-line-12 oui-bg-base-9\",\n )}\n >\n <Flex\n width={\"100%\"}\n justify={\"center\"}\n itemAlign={\"start\"}\n direction={\"column\"}\n gap={2}\n >\n <Text size=\"xs\" intensity={54}>\n {t(\"common.unrealizedPnl\")}\n </Text>\n <Flex justify={\"start\"} itemAlign={\"center\"}>\n <Text.pnl coloring size=\"base\" weight=\"semibold\" visible={visible}>\n {unrealPnL}\n </Text.pnl>\n <Text.roi\n coloring\n rule=\"percentages\"\n size=\"sm\"\n weight=\"semibold\"\n prefix={\"(\"}\n suffix={\")\"}\n visible={visible}\n >\n {unrealROI}\n </Text.roi>\n </Flex>\n <Text\n size=\"xs\"\n intensity={54}\n className=\"oui-flex oui-items-center oui-justify-start oui-gap-1\"\n onClick={onPerformanceClick}\n >\n {t(\"portfolio.overview.performance\")}\n <ChevronRightIcon className=\"oui-text-base-contrast-54\" />\n </Text>\n </Flex>\n <Flex\n width={\"100%\"}\n justify={\"center\"}\n itemAlign={\"center\"}\n direction={\"column\"}\n >\n <AreaChart data={data || EMPTY_LIST} width={160} height={52}>\n {!invisible && (\n <>\n <defs>\n <linearGradient id={colorId} x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop\n stopColor=\"rgb(var(--oui-color-success))\"\n offset=\"0%\"\n stopOpacity={0.5}\n />\n <stop\n stopColor=\"rgb(var(--oui-color-success))\"\n offset=\"100%\"\n stopOpacity={0}\n />\n </linearGradient>\n </defs>\n <Area\n type=\"natural\"\n dataKey=\"account_value\"\n stroke={\"rgb(41, 233, 169)\"}\n strokeWidth={1.5}\n dot={false}\n isAnimationActive={false}\n fill={`url(#${colorId})`}\n />\n </>\n )}\n </AreaChart>\n </Flex>\n </Flex>\n );\n};\n","import { FC, SVGProps, useCallback, useMemo } from \"react\";\nimport {\n parseJSON,\n useAccount,\n useChains,\n useLocalStorage,\n useWalletConnector,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { useAppContext } from \"@kodiak-finance/orderly-react-app\";\nimport {\n AccountStatusEnum,\n ChainNamespace,\n} from \"@kodiak-finance/orderly-types\";\nimport {\n cn,\n modal,\n toast,\n formatAddress,\n Flex,\n CopyIcon,\n ChainIcon,\n} from \"@kodiak-finance/orderly-ui\";\n\ninterface StatusInfo {\n title: string;\n description: string;\n titleColor?: any;\n titleClsName?: string;\n}\n\nconst useCurrentStatus = () => {\n const { state, account } = useAccount();\n const { wrongNetwork, disabledConnect, connectWallet } = useAppContext();\n const { t } = useTranslation();\n\n const statusText = {\n wrongNetwork: {\n description: t(\"connector.wrongNetwork.tooltip\"),\n rootClass:\n \"oui-bg-[linear-gradient(15deg,rgb(var(--oui-color-warning-darken))_0%,transparent_30%)]\",\n },\n connectWallet: {\n description: t(\"connector.trade.connectWallet.tooltip\"),\n rootClass:\n \"oui-bg-[linear-gradient(15deg,rgb(var(--oui-gradient-brand-start))_0%,transparent_30%)]\",\n },\n notSignedIn: {\n description: t(\"connector.trade.createAccount.tooltip\"),\n rootClass:\n \"oui-bg-[linear-gradient(15deg,rgb(var(--oui-color-primary-darken))_0%,transparent_30%)]\",\n },\n disabledTrading: {\n description: t(\"connector.trade.enableTrading.tooltip\"),\n rootClass:\n \"oui-bg-[linear-gradient(15deg,rgb(var(--oui-color-primary-darken))_0%,transparent_30%)]\",\n },\n default: {\n description: \"\",\n rootClass: \"\",\n arrowIconClass: \"\",\n textClass: \"\",\n },\n };\n\n return useMemo(() => {\n if (disabledConnect) {\n return statusText.connectWallet;\n }\n\n if (wrongNetwork) {\n return statusText.wrongNetwork;\n }\n\n switch (state.status) {\n case AccountStatusEnum.NotConnected:\n return statusText.connectWallet;\n case AccountStatusEnum.NotSignedIn:\n return statusText.notSignedIn;\n case AccountStatusEnum.DisabledTrading:\n return statusText.disabledTrading;\n default:\n return statusText.default;\n }\n }, [state.status, wrongNetwork]);\n};\n\nexport function EVMChainPopover({ children }: { children: React.ReactNode }) {\n // const [chains] = useState(getChainsByNetwork(\"mainnet\"));\n const [chains] = useChains(\"mainnet\", {\n pick: \"network_infos\",\n });\n const { t } = useTranslation();\n\n const showDialog = () => {\n modal.dialog({\n title: t(\"connector.privy.supportedEvmChain\"),\n size: \"xs\",\n content: (\n <div>\n <div className=\"oui-p-1 oui-grid oui-grid-cols-2 oui-gap-x-2 oui-gap-y-3 oui-text-2xs oui-text-base-contrast-54\">\n {chains.map((item, key) => (\n <div\n key={key}\n className=\"oui-flex oui-items-center oui-justify-start oui-gap-1\"\n >\n <ChainIcon chainId={item.chain_id} size=\"2xs\" />\n <div>{item.name}</div>\n </div>\n ))}\n </div>\n </div>\n ),\n });\n };\n\n return <button onClick={showDialog}>{children}</button>;\n}\n\nexport const MoreIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"currentColor\"\n {...props}\n >\n <path d=\"M8.00521 6.66797C8.74161 6.66797 9.33854 7.26464 9.33854 8.0013C9.33854 8.73797 8.74161 9.33464 8.00521 9.33464C7.26881 9.33464 6.67188 8.73797 6.67188 8.0013C6.67188 7.26464 7.26881 6.66797 8.00521 6.66797Z\" />\n <path d=\"M3.33333 6.66797C4.06973 6.66797 4.66667 7.26464 4.66667 8.0013C4.66667 8.73797 4.06973 9.33464 3.33333 9.33464C2.59693 9.33464 2 8.73797 2 8.0013C2 7.26464 2.59693 6.66797 3.33333 6.66797Z\" />\n <path d=\"M12.6666 6.66797C13.403 6.66797 14 7.26464 14 8.0013C14 8.73797 13.403 9.33464 12.6666 9.33464C11.9302 9.33464 11.3333 8.73797 11.3333 8.0013C11.3333 7.26464 11.9302 6.66797 12.6666 6.66797Z\" />\n </svg>\n);\n\nconst EVMChains = () => {\n return (\n <div className=\"oui-relative oui-flex oui-items-center oui-justify-center\">\n <div className=\"oui-flex oui-h-[18px] oui-items-center oui-justify-center \">\n <img\n src=\"https://oss.orderly.network/static/sdk/portfolio/chains.png\"\n className=\"oui-relative oui-z-0 oui-h-[18px] oui-w-[49px]\"\n />\n </div>\n <div className=\"oui-relative oui-left-[-9px] oui-flex oui-items-center oui-justify-center oui-gap-1\">\n <div className=\"oui-flex oui-size-[18px] oui-items-center oui-justify-center oui-rounded-full oui-bg-base-5\">\n <EVMChainPopover>\n <MoreIcon\n className=\"oui-relative oui-z-10 oui-size-3 oui-text-base-contrast-54 hover:oui-text-base-contrast\"\n style={{ zIndex: 1 }}\n />\n </EVMChainPopover>\n </div>\n <div className=\"oui-text-2xs oui-font-semibold oui-text-base-contrast\">\n Evm\n </div>\n </div>\n </div>\n );\n};\n\nconst ShowAccount: FC = () => {\n const { state, account } = useAccount();\n const { namespace } = useWalletConnector();\n const { t } = useTranslation();\n const onCopyAddress = () => {\n navigator.clipboard.writeText(state.address ?? \"\");\n toast.success(t(\"common.copy.copied\"));\n };\n\n const currentNamespace = useMemo(() => {\n if (namespace) {\n return namespace;\n }\n if (state.status === AccountStatusEnum.EnableTradingWithoutConnected) {\n return getLinkDeviceStorage()?.chainNamespace;\n }\n return null;\n }, [namespace, state.status]);\n\n const leftNode = useMemo(() => {\n if (!state.address) {\n return;\n }\n return (\n <Flex className=\"oui-text-base oui-text-base-contrast\" gapX={2}>\n {formatAddress(state.address ?? \"\")}\n <button\n className=\"oui-cursor-pointer\"\n onClick={() => {\n onCopyAddress();\n }}\n >\n <CopyIcon\n size={18}\n className=\"oui-text-base-contrast-80\"\n opacity={1}\n />\n </button>\n </Flex>\n );\n }, [state.address]);\n const rightNode = useMemo(() => {\n if (currentNamespace === ChainNamespace.evm) {\n return <EVMChains />;\n }\n\n return (\n <Flex gapX={1} itemAlign={\"center\"} className=\"oui-text-2xs\">\n <img\n src=\"https://oss.orderly.network/static/sdk/solana-logo.png\"\n className=\"oui-w-[15px]\"\n />\n Solana\n </Flex>\n );\n }, [currentNamespace]);\n\n const bgClass = useMemo(() => {\n let bg = \"\";\n if (currentNamespace == ChainNamespace.evm) {\n bg =\n \"oui-bg-[linear-gradient(15deg,rgb(var(--oui-color-primary))_-11%,transparent_30%,transparent_77%,rgb(var(--oui-color-danger-darken))_100%)]\";\n } else if (currentNamespace == ChainNamespace.solana) {\n bg =\n \"oui-bg-[linear-gradient(15deg,rgb(var(--oui-color-link))_-11%,transparent_30%,transparent_77%,rgb(var(--oui-color-success))_100%)]\";\n }\n return bg;\n }, [currentNamespace]);\n return (\n <div\n className={cn([\n \"oui-flex oui-h-[44px] oui-w-full oui-items-center oui-justify-between oui-rounded-[10px] oui-px-3 oui-py-[10px]\",\n bgClass,\n ])}\n >\n {leftNode}\n {rightNode}\n </div>\n );\n};\n\nexport const AccountStatusMobile: FC = () => {\n const { state } = useAccount();\n const { wrongNetwork } = useAppContext();\n const { description, rootClass } = useCurrentStatus();\n\n const alreadyShowAccount = useMemo(() => {\n if (state.status === AccountStatusEnum.EnableTradingWithoutConnected) {\n return true;\n }\n if (wrongNetwork) {\n return false;\n }\n return state.status >= AccountStatusEnum.EnableTrading;\n }, [state.status, wrongNetwork]);\n\n if (alreadyShowAccount) {\n return <ShowAccount />;\n }\n\n return (\n <div\n className={cn([\n \"oui-flex oui-h-[44px] oui-w-full oui-items-center oui-justify-center oui-rounded-[10px] oui-px-3 oui-py-[10px]\",\n rootClass,\n // \"oui-bg-linear-65\",\n // \"oui-from-[-20%]\",\n // \"oui-to-[40%]\",\n // \" oui-from-[#FF7B00]\",\n // \" oui-to-[#FFEA00]\",\n ])}\n >\n <div\n className={cn(\n \"oui-flex oui-items-center oui-justify-end oui-rounded-[10px] oui-text-xs oui-font-semibold\",\n \"oui-text-base-contrast-54\",\n )}\n >\n {description}\n </div>\n </div>\n );\n};\ntype LinkDeviceStorage = { chainId: number; chainNamespace: ChainNamespace };\n\nfunction getLinkDeviceStorage() {\n try {\n const linkDeviceStorage = localStorage.getItem(\"orderly_link_device\");\n const json = linkDeviceStorage ? parseJSON(linkDeviceStorage) : null;\n return json as LinkDeviceStorage;\n } catch (err) {\n console.error(\"getLinkDeviceStorage\", err);\n }\n}\n","import { FC } from \"react\";\nimport { RefferalAPI as API } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport type { RouterAdapter } from \"@kodiak-finance/orderly-types\";\nimport {\n Flex,\n Text,\n AffiliateIcon,\n ChevronRightIcon,\n cn,\n} from \"@kodiak-finance/orderly-ui\";\nimport { commifyOptional } from \"@kodiak-finance/orderly-utils\";\n\nconst isNumber = (val: unknown): val is number => {\n return typeof val === \"number\" && !Number.isNaN(val);\n};\n\ntype AffiliateCardMobileProps = {\n referralInfo?: API.ReferralInfo;\n routerAdapter?: RouterAdapter;\n};\n\nexport const AffiliateCardMobile: FC<AffiliateCardMobileProps> = (props) => {\n const { t } = useTranslation();\n const { referralInfo, routerAdapter } = props;\n const rebate = referralInfo?.referrer_info?.[\"30d_referrer_rebate\"];\n return (\n <Flex\n className=\"\n oui-portfolio-affiliate-card\n oui-via-21.6% \n oui-via-83.23% \n oui-relative \n oui-h-[112px] \n oui-w-full \n oui-flex-col \n oui-items-start \n oui-rounded-xl \n oui-border \n oui-border-solid \n oui-border-[rgba(var(--oui-gradient-primary-start)/0.36)] \n oui-bg-gradient-to-r\n oui-from-[rgba(var(--oui-gradient-primary-end)/0.12)]\n oui-to-[rgba(var(--oui-gradient-primary-start)/0.12)]\n oui-p-3\n \"\n >\n <Flex className=\"oui-w-full oui-flex-row oui-justify-between oui-items-center\">\n <Flex className=\"oui-flex-col oui-items-start\">\n <Text className=\"oui-text-base-contrast oui-text-base oui-font-semibold\">\n {t(\"affiliate.asAffiliate.affilates\")}\n </Text>\n <Text className=\"oui-text-2xs oui-font-normal oui-text-base-contrast-54\">\n {t(\"affiliate.commission\")}\n </Text>\n </Flex>\n <AffiliateIcon />\n </Flex>\n <Flex className=\"oui-mt-auto oui-w-full oui-flex-row oui-items-center oui-gap-1\">\n <img\n src=\"https://oss.orderly.network/static/symbol_logo/USDC.png\"\n alt=\"USDC\"\n className=\"oui-size-5\"\n />\n <Text\n className={cn(\n \"oui-text-xs oui-font-semibold\",\n isNumber(rebate) && rebate !== 0\n ? \"oui-text-base-contrast\"\n : \"oui-text-base-contrast-36\",\n )}\n >\n {commifyOptional(rebate, { fix: 2, fallback: \"--\" })}\n </Text>\n <Text className=\"oui-text-xs oui-font-semibold oui-text-base-contrast-36\">\n (30D)\n </Text>\n <ChevronRightIcon\n size={18}\n color=\"white\"\n className=\"oui-ml-auto\"\n onClick={() => {\n routerAdapter?.onRouteChange({\n href: \"/rewards/affiliate?tab=affiliate\",\n name: t(\"tradingRewards.rewards\"),\n });\n }}\n />\n </Flex>\n </Flex>\n );\n};\n","import { FC } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { RouterAdapter } from \"@kodiak-finance/orderly-types\";\nimport {\n Flex,\n Text,\n ArrowDownSquareFillIcon,\n ArrowUpSquareFillIcon,\n CalendarMinusIcon,\n ArrowLeftRightIcon,\n} from \"@kodiak-finance/orderly-ui\";\nimport { PortfolioLeftSidebarPath } from \"../../../layout\";\n\ntype Props = {\n disabled: boolean;\n onWithdraw?: () => void;\n onDeposit?: () => void;\n onTransfer?: () => void;\n isMainAccount?: boolean;\n routerAdapter?: RouterAdapter;\n hasSubAccount?: boolean;\n};\n\nexport const PortfolioHandleMobile: FC<Props> = (props) => {\n const { t } = useTranslation();\n\n const onGotoHistory = () => {\n props.routerAdapter?.onRouteChange({\n href: PortfolioLeftSidebarPath.History,\n name: t(\"trading.history\"),\n });\n };\n\n const onGotoSymbolPerformance = () => {\n props.routerAdapter?.onRouteChange({\n href: PortfolioLeftSidebarPath.SymbolPerformance,\n name: t(\"portfolio.symbolPerformance\"),\n });\n };\n\n return (\n <Flex\n direction={\"row\"}\n width={\"100%\"}\n height={\"71px\"}\n className=\"oui-gap-3 oui-bg-transparent\"\n >\n {props.isMainAccount && (\n <Flex\n direction=\"column\"\n gapY={2}\n itemAlign={\"center\"}\n className=\"oui-flex-1 oui-cursor-pointer\"\n onClick={props?.onDeposit}\n >\n <div className=\"oui-flex oui-size-[48px] oui-items-center oui-justify-center oui-rounded-xl oui-bg-base-9\">\n <ArrowDownSquareFillIcon size={28} color=\"white\" opacity={1} />\n </div>\n <Text className=\"oui-text-base-80 oui-text-2xs\">\n {t(\"common.deposit\")}\n </Text>\n </Flex>\n )}\n {props.hasSubAccount && (\n <Flex\n direction=\"column\"\n gapY={2}\n itemAlign={\"center\"}\n className=\"oui-flex-1 oui-cursor-pointer\"\n onClick={props?.onTransfer}\n >\n <div className=\"oui-flex oui-size-[48px] oui-items-center oui-justify-center oui-rounded-xl oui-bg-base-9\">\n <ArrowLeftRightIcon size={28} color=\"white\" opacity={1} />\n </div>\n <Text className=\"oui-text-base-80 oui-text-2xs\">\n {t(\"common.transfer\")}\n </Text>\n </Flex>\n )}\n {props.isMainAccount && (\n <Flex\n direction=\"column\"\n gapY={2}\n itemAlign={\"center\"}\n className=\"oui-flex-1 oui-cursor-pointer\"\n onClick={props?.onWithdraw}\n >\n <div className=\"oui-flex oui-size-[48px] oui-items-center oui-justify-center oui-rounded-xl oui-bg-base-9\">\n <ArrowUpSquareFillIcon size={28} color=\"white\" opacity={1} />\n </div>\n <Text className=\"oui-text-base-80 oui-text-2xs\">\n {t(\"common.withdraw\")}\n </Text>\n </Flex>\n )}\n <Flex\n direction=\"column\"\n gapY={2}\n itemAlign={\"center\"}\n className=\"oui-flex-1 oui-cursor-pointer\"\n >\n <div\n className=\"oui-flex oui-size-[48px] oui-items-center oui-justify-center oui-rounded-xl oui-bg-base-9\"\n onClick={onGotoHistory}\n >\n <CalendarMinusIcon\n size={28}\n color=\"white\"\n opacity={1}\n viewBox=\"0 0 28 28\"\n className=\"oui-w-[28px] oui-h-[28px]\"\n />\n </div>\n <Text className=\"oui-text-base-80 oui-text-2xs\">\n {t(\"trading.history\")}\n </Text>\n </Flex>\n <Flex\n direction=\"column\"\n gapY={2}\n itemAlign={\"center\"}\n className=\"oui-flex-1 oui-cursor-pointer\"\n onClick={onGotoSymbolPerformance}\n >\n <div className=\"oui-flex oui-size-[48px] oui-items-center oui-justify-center oui-rounded-xl oui-bg-base-9\">\n <svg\n width=\"28\"\n height=\"28\"\n viewBox=\"0 0 18 18\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"oui-text-white\"\n >\n <path\n d=\"M13.5 3.75C12.8096 3.75 12.375 4.18467 12.375 4.875V12.375C12.375 13.0654 12.8096 13.5 13.5 13.5H14.625C15.3154 13.5 15.75 13.0654 15.75 12.375V4.875C15.75 4.18467 15.3154 3.75 14.625 3.75H13.5ZM13.5 5.25H14.625V12.375H13.5V5.25ZM8.25 6.75C7.55964 6.75 7.125 7.18467 7.125 7.875V12.375C7.125 13.0654 7.55964 13.5 8.25 13.5H9.375C10.0654 13.5 10.5 13.0654 10.5 12.375V7.875C10.5 7.18467 10.0654 6.75 9.375 6.75H8.25ZM8.25 8.25H9.375V12.375H8.25V8.25ZM3 9.75C2.30964 9.75 1.875 10.1847 1.875 10.875V12.375C1.875 13.0654 2.30964 13.5 3 13.5H4.125C4.81536 13.5 5.25 13.0654 5.25 12.375V10.875C5.25 10.1847 4.81536 9.75 4.125 9.75H3ZM3 11.25H4.125V12.375H3V11.25Z\"\n fill=\"currentColor\"\n />\n </svg>\n </div>\n <Text className=\"oui-text-base-80 oui-text-2xs\">\n {t(\"portfolio.symbolPerformance\")}\n </Text>\n </Flex>\n </Flex>\n );\n};\n","import { FC, useMemo } from \"react\";\nimport { parseJSON, useAccount } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n AccountStatusEnum,\n ChainNamespace,\n} from \"@kodiak-finance/orderly-types\";\nimport { RouterAdapter } from \"@kodiak-finance/orderly-types\";\nimport {\n Flex,\n Text,\n cn,\n ArrowRightShortIcon,\n EyeIcon,\n} from \"@kodiak-finance/orderly-ui\";\nimport { PortfolioLeftSidebarPath } from \"../../../layout\";\n\ntype Props = {\n portfolioValue: number | null;\n unrealPnL: number;\n unrealROI: number;\n visible: boolean;\n namespace: string | null;\n toggleVisible: () => void;\n canTrade: boolean;\n routerAdapter?: RouterAdapter;\n};\n\nexport const PortfolioValueMobile: FC<Props> = (props) => {\n const { t } = useTranslation();\n const { state } = useAccount();\n\n const currentNamespace = useMemo(() => {\n if (props.namespace) {\n return props.namespace;\n }\n if (state.status === AccountStatusEnum.EnableTradingWithoutConnected) {\n return getLinkDeviceStorage()?.chainNamespace;\n }\n return null;\n }, [props.namespace, state.status]);\n return (\n <Flex\n direction={\"column\"}\n width={\"100%\"}\n height={\"100%\"}\n className={cn([\n \"oui-relative oui-items-start oui-overflow-hidden oui-rounded-2xl oui-bg-base-9\",\n currentNamespace === ChainNamespace.evm && \"oui-bg-[#283BEE]\",\n currentNamespace === ChainNamespace.solana && \"oui-bg-[#630EAD]\",\n ])}\n p={4}\n >\n <Flex direction=\"row\" gapX={1} itemAlign={\"center\"}>\n <Text className=\"oui-text-sm oui-text-base-static-54\">\n {t(\"portfolio.overview.handle.title\")}\n </Text>\n <EyeIcon\n size={16}\n className={cn(\n props.canTrade ? \"oui-text-base-static-54\" : \"oui-hidden\",\n )}\n onClick={props.toggleVisible}\n />\n </Flex>\n <Flex\n direction=\"row\"\n gapX={1}\n itemAlign={\"baseline\"}\n className=\"oui-mt-1\"\n >\n <Text.numeral\n visible={props.visible}\n className=\"oui-text-3xl oui-font-bold oui-text-base-static\"\n >\n {props.portfolioValue ?? \"--\"}\n </Text.numeral>\n <Text className=\"oui-text-base oui-font-bold oui-text-base-static-80\">\n USDC\n </Text>\n </Flex>\n <Flex\n direction=\"row\"\n gapX={1}\n itemAlign={\"center\"}\n className=\"oui-text-sm oui-text-base-static\"\n >\n <Text.pnl visible={props.visible}>{props.unrealPnL ?? \"--\"}</Text.pnl>\n <Text.roi\n visible={props.visible}\n rule=\"percentages\"\n prefix={\"(\"}\n suffix={\")\"}\n >\n {props.unrealROI ?? \"--\"}\n </Text.roi>\n </Flex>\n <div\n className=\"oui-absolute oui-right-0 oui-top-0 oui-flex oui-h-full oui-items-center oui-justify-center oui-px-4\"\n onClick={() =>\n props.routerAdapter?.onRouteChange({\n href: PortfolioLeftSidebarPath.Assets,\n name: \"Assets\",\n })\n }\n >\n <ArrowRightShortIcon\n size={18}\n opacity={0.99}\n className=\"oui-text-base-static\"\n />\n </div>\n </Flex>\n );\n};\n\ntype LinkDeviceStorage = { chainId: number; chainNamespace: ChainNamespace };\n\nfunction getLinkDeviceStorage() {\n try {\n const linkDeviceStorage = localStorage.getItem(\"orderly_link_device\");\n const json = linkDeviceStorage ? parseJSON(linkDeviceStorage) : null;\n return json as LinkDeviceStorage;\n } catch (err) {\n console.error(\"getLinkDeviceStorage\", err);\n }\n}\n","import { FC } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { RouterAdapter } from \"@kodiak-finance/orderly-types\";\nimport {\n Flex,\n Text,\n SettingFillIcon,\n ChevronRightIcon,\n} from \"@kodiak-finance/orderly-ui\";\nimport { PortfolioLeftSidebarPath } from \"../../../layout\";\n\ntype Props = {\n routerAdapter?: RouterAdapter;\n};\n\nexport const SettingRouterMobile: FC<Props> = (props) => {\n const { t } = useTranslation();\n return (\n <Flex\n direction={\"row\"}\n width={\"100%\"}\n className=\"oui-cursor-pointer oui-items-center oui-gap-2 oui-rounded-xl oui-bg-base-9 oui-p-4 oui-mb-3\"\n onClick={() =>\n props?.routerAdapter?.onRouteChange({\n href: PortfolioLeftSidebarPath.Setting,\n name: t(\"portfolio.setting\"),\n })\n }\n >\n <SettingFillIcon size={18} opacity={0.98} color=\"white\" />\n <Text className=\"oui-text-base oui-font-semibold oui-text-base-contrast-80\">\n {t(\"portfolio.setting\")}\n </Text>\n <ChevronRightIcon\n className=\"oui-ml-auto\"\n size={18}\n opacity={0.36}\n color=\"white\"\n />\n </Flex>\n );\n};\n","import { FC } from \"react\";\nimport { RefferalAPI as API } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { RouterAdapter } from \"@kodiak-finance/orderly-types\";\nimport {\n Flex,\n Text,\n TraderMobileIcon,\n ChevronRightIcon,\n cn,\n} from \"@kodiak-finance/orderly-ui\";\nimport { commifyOptional } from \"@kodiak-finance/orderly-utils\";\n\nconst isNumber = (val: unknown): val is number => {\n return typeof val === \"number\" && !Number.isNaN(val);\n};\n\ntype TraderCardMobileProps = {\n referralInfo?: API.ReferralInfo;\n routerAdapter?: RouterAdapter;\n};\n\nexport const TraderCardMobile: FC<TraderCardMobileProps> = (props) => {\n const { t } = useTranslation();\n const { referralInfo, routerAdapter } = props;\n const rebate = referralInfo?.referee_info?.[\"30d_referee_rebate\"];\n return (\n <Flex\n className=\"\n oui-portfolio-trader-card\n oui-via-21.6% \n oui-via-83.23% \n oui-relative \n oui-h-[112px] \n oui-w-full \n oui-flex-col \n oui-items-start \n oui-rounded-xl \n oui-border\n oui-border-solid \n oui-border-[rgba(var(--oui-gradient-success-start)/0.36)]\n oui-bg-gradient-to-r\n oui-from-[rgba(var(--oui-gradient-success-end)/0.12)]\n oui-to-[rgba(var(--oui-gradient-success-start)/0.12)]\n oui-p-3\n \"\n >\n <Flex className=\"oui-w-full oui-flex-row oui-justify-between oui-items-center\">\n <Flex className=\"oui-flex-col oui-items-start\">\n <Text className=\"oui-text-base-contrast oui-text-base oui-font-semibold\">\n {t(\"affiliate.trader.rebates\")}\n </Text>\n <Text className=\"oui-text-2xs oui-font-normal oui-text-base-contrast-54\">\n {t(\"affiliate.trader.tradingRebates\")}\n </Text>\n </Flex>\n <TraderMobileIcon />\n </Flex>\n\n <Flex\n className={cn(\n \"oui-mt-auto oui-w-full oui-flex-row oui-items-center oui-gap-1\",\n )}\n >\n <img\n src=\"https://oss.orderly.network/static/symbol_logo/USDC.png\"\n alt=\"USDC\"\n className=\"oui-size-5\"\n />\n <Text\n className={cn(\n \"oui-text-xs oui-font-semibold\",\n isNumber(rebate) && rebate !== 0\n ? \"oui-text-base-contrast\"\n : \"oui-text-base-contrast-36\",\n )}\n >\n {commifyOptional(rebate, { fix: 2, fallback: \"--\" })}\n </Text>\n <Text className=\"oui-text-xs oui-font-semibold oui-text-base-contrast-36\">\n (30D)\n </Text>\n <ChevronRightIcon\n size={18}\n color=\"white\"\n className=\"oui-ml-auto\"\n onClick={() => {\n routerAdapter?.onRouteChange({\n href: \"/rewards/affiliate?tab=trader\",\n name: t(\"tradingRewards.rewards\"),\n });\n }}\n />\n </Flex>\n </Flex>\n );\n};\n","import React, { FC } from \"react\";\nimport { Grid, useScreen } from \"@kodiak-finance/orderly-ui\";\nimport { MobileOverview } from \"./mobile\";\nimport { MobileOverviewProps } from \"./mobile/mobile.widget\";\nimport { OverviewProvider } from \"./provider/overviewProvider\";\n\nconst LazyAssetWidget = React.lazy(() =>\n import(\"./assets\").then((mod) => {\n return { default: mod.AssetWidget };\n }),\n);\n\nconst LazyAssetsChartWidget = React.lazy(() =>\n import(\"./assetChart\").then((mod) => {\n return { default: mod.AssetsChartWidget };\n }),\n);\n\nconst LazyPerformanceWidget = React.lazy(() =>\n import(\"./performance\").then((mod) => {\n return { default: mod.PerformanceWidget };\n }),\n);\n\nconst LazyHistoryDataGroupWidget = React.lazy(() =>\n import(\"./historyDataGroup\").then((mod) => {\n return { default: mod.HistoryDataGroupWidget };\n }),\n);\n\nexport type OverviewPageProps = MobileOverviewProps;\n\nexport const OverviewPage: FC<OverviewPageProps> = (props) => {\n const { isMobile } = useScreen();\n return (\n <OverviewProvider>\n {isMobile ? (\n <MobileOverview\n hideAffiliateCard={props.hideAffiliateCard}\n hideTraderCard={props.hideTraderCard}\n />\n ) : (\n <Grid cols={2} gap={4}>\n <React.Suspense fallback={null}>\n <LazyAssetWidget />\n </React.Suspense>\n <React.Suspense fallback={null}>\n <LazyAssetsChartWidget />\n </React.Suspense>\n <Grid.span colSpan={2}>\n <React.Suspense fallback={null}>\n <LazyPerformanceWidget />\n </React.Suspense>\n </Grid.span>\n <Grid.span colSpan={2}>\n <React.Suspense fallback={null}>\n <LazyHistoryDataGroupWidget />\n </React.Suspense>\n </Grid.span>\n </Grid>\n )}\n </OverviewProvider>\n );\n};\n","export { FeeTierPage } from \"./page\";\nexport { useFeeTierScript } from \"./feeTier.script\";\nexport type { FeeDataType, UseFeeTierScriptOptions } from \"./feeTier.script\";\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useCallback } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n Box,\n Flex,\n Text,\n Card,\n Divider,\n DataTable,\n Column,\n useScreen,\n cn,\n TanstackColumn,\n ScrollIndicator,\n ArrowRightUpSquareFillIcon,\n} from \"@kodiak-finance/orderly-ui\";\nimport { Decimal, numberToHumanStyle } from \"@kodiak-finance/orderly-utils\";\nimport type { FeeDataType, useFeeTierScriptReturn } from \"./feeTier.script\";\n\nconst LazyFeeTierHeader = React.lazy(() =>\n import(\"./feeTierHeader\").then((mod) => {\n return { default: mod.FeeTierHeader };\n }),\n);\n\nexport type FeeTierProps = useFeeTierScriptReturn;\n\nexport type FeeTierHeaderProps = {\n tier?: number;\n vol?: number;\n};\n\ntype FeeTierTableProps = {\n columns: Column<any>[];\n dataSource?: any[];\n page?: number;\n pageSize?: number;\n dataCount?: number;\n tier?: number | null;\n vol?: number | null;\n onRow?: (\n record: any,\n index: number,\n ) => {\n normal?: any;\n active?: any;\n };\n onCell?: (\n column: TanstackColumn<any>,\n record: any,\n index: number,\n ) => {\n normal?: any;\n active?: any;\n };\n};\n\ntype VipTierDefinition = {\n id?: number;\n tier?: number;\n name?: string;\n description?: string;\n discountRate?: number;\n minXKDKStakedValue?: number;\n badgeImageUrl?: string;\n effectiveFeeRates?: {\n makerFeeRate?: number;\n takerFeeRate?: number;\n rwaMakerFeeRate?: number;\n rwaTakerFeeRate?: number;\n };\n};\n\nconst formatDiscountRate = (rate?: number) => {\n if (rate === undefined || rate === null) return null;\n const normalized = rate <= 1 ? new Decimal(rate).mul(100) : new Decimal(rate);\n return `${normalized.toFixed(0)}%`;\n};\n\nconst VipTierTable: React.FC<{\n tiers: VipTierDefinition[];\n currentTier?: string | null;\n baseFeeRates?: {\n makerFeeRate?: string;\n takerFeeRate?: string;\n rwaMakerFeeRate?: string;\n rwaTakerFeeRate?: string;\n };\n docsUrl?: string;\n}> = (props) => {\n const { tiers, currentTier, baseFeeRates, docsUrl } = props;\n const { t } = useTranslation();\n const { isMobile } = useScreen();\n if (!tiers.length) return null;\n\n const formatFeeRate = (rate?: number | string) => {\n if (rate === undefined || rate === null) return \"--\";\n const value =\n typeof rate === \"string\" ? new Decimal(rate) : new Decimal(rate);\n return `${value.mul(100).toFixed(3)}%`;\n };\n\n const columns: Column<VipTierDefinition>[] = [\n {\n title: t(\"portfolio.feeTier.vip.column.tier\"),\n dataIndex: \"name\",\n render: (_value, row) => {\n const isActive =\n row.name && currentTier\n ? row.name.toLowerCase() === currentTier.toLowerCase()\n : false;\n const isBaseRow = row.tier === 0;\n return (\n <Flex itemAlign=\"center\" gap={2}>\n {!isBaseRow && row.badgeImageUrl && (\n <img\n src={row.badgeImageUrl}\n alt={`${row.name ?? \"VIP\"} badge`}\n className=\"oui-h-5 oui-w-5 oui-object-contain\"\n />\n )}\n <Text\n size=\"sm\"\n intensity={isActive ? 98 : 80}\n className={isActive ? \"oui-font-semibold\" : undefined}\n >\n {row.name ?? \"--\"}\n </Text>\n </Flex>\n );\n },\n },\n {\n title: t(\"portfolio.feeTier.vip.column.staked\"),\n dataIndex: \"minXKDKStakedValue\",\n align: \"center\",\n render: (value: number) => {\n if (value === undefined || value === null) return \"--\";\n return `>${numberToHumanStyle(value, 0)}`;\n },\n },\n {\n title: `${t(\"portfolio.feeTier.vip.column.discount\")}*`,\n dataIndex: \"discountRate\",\n align: \"center\",\n render: (value: number) => formatDiscountRate(value) || \"--\",\n },\n ];\n if (!isMobile) {\n columns.push(\n {\n title: t(\"portfolio.feeTier.column.maker\"),\n dataIndex: \"makerFeeRate\",\n align: \"center\",\n render: (_value: unknown, row: VipTierDefinition) =>\n formatFeeRate(row.effectiveFeeRates?.makerFeeRate),\n },\n {\n title: t(\"portfolio.feeTier.column.taker\"),\n dataIndex: \"takerFeeRate\",\n align: \"center\",\n render: (_value: unknown, row: VipTierDefinition) =>\n formatFeeRate(row.effectiveFeeRates?.takerFeeRate),\n },\n );\n }\n\n const baseRow: VipTierDefinition = {\n tier: 0,\n name: \"-\",\n discountRate: 0,\n minXKDKStakedValue: undefined,\n effectiveFeeRates: {\n makerFeeRate: baseFeeRates?.makerFeeRate\n ? Number(baseFeeRates.makerFeeRate)\n : undefined,\n takerFeeRate: baseFeeRates?.takerFeeRate\n ? Number(baseFeeRates.takerFeeRate)\n : undefined,\n },\n };\n\n return (\n <Box className=\"oui-mt-8 oui-mb-6\">\n <Flex\n direction={isMobile ? \"column\" : \"row\"}\n itemAlign={isMobile ? \"start\" : \"center\"}\n gap={isMobile ? 1 : 2}\n className=\"oui-mb-4 oui-pb-4 oui-border-b oui-border-line-6\"\n >\n <Text size=\"base\" intensity={98} weight=\"semibold\">\n {t(\"portfolio.feeTier.vip.tiersTitle\")}\n </Text>\n <Text size=\"xs\" intensity={54}>\n ({t(\"portfolio.feeTier.vip.tiersSubtitle\")})\n </Text>\n </Flex>\n <DataTable\n bordered\n className=\"oui-font-semibold\"\n classNames={{\n root: \"oui-bg-transparent\",\n }}\n columns={columns}\n dataSource={[baseRow, ...tiers]}\n />\n <Flex className=\"oui-mt-2 oui-gap-1 oui-flex-wrap oui-items-center\">\n <Text size=\"2xs\" intensity={54}>\n {t(\"portfolio.feeTier.vip.discountNote\")}\n </Text>\n {docsUrl && (\n <>\n <Text size=\"2xs\" intensity={36}>\n •\n </Text>\n <a\n className=\"oui-inline-flex oui-items-center oui-gap-1 oui-text-2xs oui-text-base-contrast-54 oui-underline hover:oui-text-base-contrast-80\"\n href={docsUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {t(\"portfolio.feeTier.vip.learnMore\")}\n <ArrowRightUpSquareFillIcon\n size={12}\n color=\"inherit\"\n className=\"oui-align-middle\"\n />\n </a>\n </>\n )}\n </Flex>\n </Box>\n );\n};\n\nexport const FeeTierTable: React.FC<FeeTierTableProps> = (props) => {\n const { isMobile } = useScreen();\n\n const { tier, columns, dataSource, onRow, onCell } = props;\n\n const internalOnRow = useCallback(\n (record: FeeDataType, index: number) => {\n const config =\n typeof onRow === \"function\"\n ? onRow(record, index)\n : { normal: undefined, active: undefined };\n const active = tier !== undefined && tier !== null && tier === index + 1;\n if (active) {\n return {\n \"data-state\": \"active\",\n className: cn(\n \"oui-pointer-events-none oui-h-[54px] oui-text-base-contrast-80 oui-gradient-brand\",\n ),\n ...config.active,\n };\n } else {\n return {\n \"data-state\": \"none\",\n className: cn(\"oui-h-[54px]\"),\n ...config.normal,\n };\n }\n },\n [tier, onRow],\n );\n\n const internalOnCell = useCallback(\n (\n column: TanstackColumn<FeeDataType>,\n record: FeeDataType,\n index: number,\n ) => {\n const config =\n typeof onCell === \"function\"\n ? onCell(column, record, index)\n : { normal: undefined, active: undefined };\n const active = tier !== undefined && tier !== null && tier === index + 1;\n const isFirstColumn = column.getIsFirstColumn();\n const isLastColumn = column.getIsLastColumn();\n if (active) {\n return {\n className: cn(\n isFirstColumn && \"oui-rounded-l-lg\",\n isLastColumn && \"oui-rounded-r-lg\",\n ),\n ...config.active,\n };\n } else {\n return {\n className: \"\",\n ...config.normal,\n };\n }\n },\n [tier, onCell],\n );\n\n return (\n <Box\n className={cn(\n \"oui-relative oui-border-b oui-border-line-4\",\n isMobile ? \"oui-mt-2 oui-rounded-xl oui-bg-base-9\" : undefined,\n )}\n >\n <DataTable\n bordered\n className=\"oui-font-semibold\"\n classNames={{ root: \"oui-bg-transparent\" }}\n onRow={internalOnRow}\n onCell={internalOnCell}\n columns={columns}\n dataSource={dataSource}\n />\n </Box>\n );\n};\n\nconst CardTitle: React.FC<{ syncedAt?: string | null }> = ({ syncedAt }) => {\n const { t } = useTranslation();\n const { isMobile } = useScreen();\n\n const formattedTime = syncedAt\n ? new Date(syncedAt).toLocaleString(\"en-US\", {\n month: \"short\",\n day: \"numeric\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n timeZone: \"UTC\",\n timeZoneName: \"short\",\n })\n : null;\n\n if (isMobile) {\n return (\n <Flex itemAlign={\"center\"} justify={\"center\"} gap={2}>\n {formattedTime && (\n <>\n <Text size=\"xs\" intensity={54}>\n {t(\"portfolio.feeTier.lastUpdatedTime\")}\n </Text>\n <Text size=\"xs\" intensity={80}>\n {formattedTime}\n </Text>\n </>\n )}\n </Flex>\n );\n }\n return (\n <Flex itemAlign={\"center\"} justify={\"between\"}>\n <Text size={\"lg\"}>{t(\"portfolio.feeTier\")}</Text>\n {formattedTime && (\n <Flex itemAlign={\"center\"} justify={\"center\"} gap={1}>\n <Text size=\"xs\" intensity={54}>\n {t(\"portfolio.feeTier.lastUpdatedTime\")}\n </Text>\n <Text size=\"xs\" intensity={80}>\n {formattedTime}\n </Text>\n </Flex>\n )}\n </Flex>\n );\n};\n\nexport const FeeTier: React.FC<FeeTierProps> = (props) => {\n const {\n columns,\n dataSource,\n tier,\n vol,\n headerDataAdapter,\n onRow,\n onCell,\n vipTier,\n vipTierEnabled,\n vipTierList = [],\n vipTierBaseFeeRates,\n vipTierDocsUrl,\n vipTierStakeUrl,\n } = props;\n const { isMobile } = useScreen();\n return (\n <Card\n title={<CardTitle syncedAt={vipTier?.syncedAt} />}\n id=\"oui-portfolio-fee-tier\"\n className=\"w-full\"\n classNames={{\n root: isMobile ? \"oui-bg-transparent oui-p-2\" : \"oui-bg-base-9\",\n }}\n >\n {!isMobile && <Divider />}\n <React.Suspense fallback={null}>\n <LazyFeeTierHeader\n vol={vol}\n tier={tier}\n headerDataAdapter={headerDataAdapter}\n vipTier={vipTier}\n vipTierEnabled={vipTierEnabled}\n vipTierBaseFeeRates={vipTierBaseFeeRates}\n vipTierDocsUrl={vipTierDocsUrl}\n vipTierStakeUrl={vipTierStakeUrl}\n />\n </React.Suspense>\n {vipTierList?.length > 0 && (\n <VipTierTable\n tiers={vipTierList}\n currentTier={vipTier?.name}\n baseFeeRates={vipTierBaseFeeRates}\n docsUrl={vipTierDocsUrl}\n />\n )}\n {!vipTierEnabled && (\n <FeeTierTable\n dataSource={dataSource}\n columns={columns}\n vol={vol}\n tier={tier}\n onRow={onRow}\n onCell={onCell}\n />\n )}\n </Card>\n );\n};\n","import React from \"react\";\nimport { useFeeTierScript, type UseFeeTierScriptOptions } from \".\";\nimport { FeeTier } from \"./feeTier.ui\";\n\nexport type FeeTierWidgetProps = UseFeeTierScriptOptions;\n\nexport const FeeTierWidget: React.FC<FeeTierWidgetProps> = (props) => {\n const state = useFeeTierScript(props);\n return <FeeTier {...state} />;\n};\n","import React from \"react\";\nimport { FeeTierWidget, FeeTierWidgetProps } from \"./feeTier.widget\";\n\nexport type FeeTierPageProps = FeeTierWidgetProps;\n\nexport const FeeTierPage: React.FC<FeeTierPageProps> = (props) => {\n return <FeeTierWidget {...props} />;\n};\n","import React, { useMemo } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport type { Column } from \"@kodiak-finance/orderly-ui\";\nimport { numberToHumanStyle } from \"@kodiak-finance/orderly-utils\";\nimport type { FeeDataType } from \"./feeTier.script\";\n\nconst textStyle: React.CSSProperties = {\n fontVariantLigatures: \"none\",\n};\n\nexport const useFeeTierColumns = () => {\n const { t } = useTranslation();\n return useMemo<Column<FeeDataType>[]>(() => {\n return [\n {\n title: t(\"portfolio.feeTier.column.tier\"),\n dataIndex: \"tier\",\n align: \"left\",\n width: 100,\n },\n {\n title: `${t(\"portfolio.feeTier.column.30dVolume\")} (USDC)`,\n dataIndex: \"volume\",\n align: \"center\",\n width: 180,\n render: (val, record) => {\n const { volume_min, volume_max, volume_node } = record;\n if (volume_node) {\n return volume_node;\n }\n if (!volume_min && !volume_max) {\n return <div style={textStyle}>--</div>;\n }\n if (volume_min && !volume_max) {\n return t(\"portfolio.feeTier.column.30dVolume.above\", {\n volume: numberToHumanStyle(\n volume_min,\n volume_min === 2500000 ? 1 : 0,\n ),\n });\n }\n return (\n <div>\n {volume_min &&\n numberToHumanStyle(volume_min, volume_min === 2500000 ? 1 : 0)}\n {` - `}\n {volume_max &&\n numberToHumanStyle(volume_max, volume_max === 2500000 ? 1 : 0)}\n </div>\n );\n },\n },\n {\n title: t(\"portfolio.feeTier.column.maker\"),\n dataIndex: \"maker_fee\",\n align: \"right\",\n width: 150,\n },\n {\n title: t(\"portfolio.feeTier.column.taker\"),\n dataIndex: \"taker_fee\",\n align: \"right\",\n width: 150,\n },\n ];\n }, [t]);\n};\n","import type { FeeDataType } from \"./feeTier.script\";\n\nexport const dataSource: FeeDataType[] = [\n {\n tier: 1,\n volume_min: 0,\n volume_max: 500000,\n maker_fee: \"0.025% / 0%\",\n taker_fee: \"0.04% / 0.05%\",\n },\n {\n tier: 2,\n volume_min: 500000,\n volume_max: 1000000,\n maker_fee: \"0.02% / 0%\",\n taker_fee: \"0.035% / 0.05%\",\n },\n {\n tier: 3,\n volume_min: 1000000,\n volume_max: 5000000,\n maker_fee: \"0.018% / 0%\",\n taker_fee: \"0.03% / 0.05%\",\n },\n {\n tier: 4,\n volume_min: 5000000,\n volume_max: 20000000,\n maker_fee: \"0.012% / 0%\",\n taker_fee: \"0.025% / 0.05%\",\n },\n {\n tier: 5,\n volume_min: 20000000,\n volume_max: 50000000,\n or: \"/\",\n maker_fee: \"0.009% / 0%\",\n taker_fee: \"0.022% / 0.05%\",\n },\n {\n tier: 6,\n volume_min: 50000000,\n volume_max: 100000000,\n or: \"/\",\n maker_fee: \"0.005% / 0%\",\n taker_fee: \"0.018% / 0.05%\",\n },\n {\n tier: 7,\n volume_min: 100000000,\n volume_max: undefined,\n or: \"/\",\n maker_fee: \"0% / 0%\",\n taker_fee: \"0.015% / 0.05%\",\n },\n];\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useEffect, useMemo, useState } from \"react\";\nimport useSWR from \"swr\";\nimport {\n useAccount,\n useAccountInfo,\n useConfig,\n usePrivateQuery,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { useDataTap } from \"@kodiak-finance/orderly-react-app\";\nimport { AccountStatusEnum, API } from \"@kodiak-finance/orderly-types\";\nimport type { Column, TanstackColumn } from \"@kodiak-finance/orderly-ui\";\nimport { Decimal } from \"@kodiak-finance/orderly-utils\";\nimport { useFeeTierColumns } from \"./column\";\nimport { dataSource as defaultDataSource } from \"./dataSource\";\n\nexport type useFeeTierScriptReturn = ReturnType<typeof useFeeTierScript>;\n\nexport type UseFeeTierScriptOptions = {\n hideTable?: boolean;\n dataAdapter?: (\n columns: Column<any>[],\n dataSource: any[],\n context?: {\n tier?: number;\n },\n ) => {\n columns: Column<any>[];\n dataSource: any[];\n };\n headerDataAdapter?: (original: any[]) => any[];\n onRow?: (\n record: any,\n index: number,\n ) => {\n normal?: any;\n active?: any;\n };\n onCell?: (\n column: TanstackColumn<any>,\n record: any,\n index: number,\n ) => {\n normal?: any;\n active?: any;\n };\n};\n\nexport interface FeeDataType {\n tier: number | null;\n volume_min?: number | null;\n volume_max?: number | null;\n volume_node?: React.ReactNode;\n or?: string | null;\n maker_fee: string;\n taker_fee: string;\n}\n\ntype VipTierRow = {\n userAddress?: string;\n tier?: number | string;\n name?: string;\n discountRate?: number;\n badgeImageUrl?: string;\n currentAllocation?: string | number | null;\n currentAllocationFormatted?: string | number | null;\n orderlyAccountId?: string | null;\n lastUpdated?: string | null;\n syncedAt?: string | null;\n};\n\ntype VipTierDefinition = {\n id?: number;\n tier?: number;\n name?: string;\n description?: string;\n discountRate?: number;\n minXKDKStakedValue?: number;\n badgeImageUrl?: string;\n createdAt?: string;\n updatedAt?: string;\n effectiveFeeRates?: {\n makerFeeRate?: number;\n takerFeeRate?: number;\n rwaMakerFeeRate?: number;\n rwaTakerFeeRate?: number;\n };\n};\n\ntype VipTierListResponse = {\n baseFeeRates?: {\n makerFeeRate?: string;\n takerFeeRate?: string;\n rwaMakerFeeRate?: string;\n rwaTakerFeeRate?: string;\n };\n tiers?: VipTierDefinition[];\n};\n\n// Custom fetcher for VIP tier endpoints that return raw data (not wrapped in Orderly format)\nconst vipTierFetcher = async (url: string) => {\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(`HTTP ${response.status}: ${response.statusText}`);\n }\n return response.json();\n};\n\nconst normalizeVipTierResponse = (payload: unknown): VipTierRow | null => {\n if (!payload) return null;\n if (Array.isArray(payload)) return (payload[0] ?? null) as VipTierRow | null;\n\n const record = payload as Record<string, unknown>;\n const data =\n (Array.isArray(record.data) ? record.data[0] : record.data) ??\n (Array.isArray(record.rows) ? record.rows[0] : record.rows) ??\n payload;\n\n const item = data as Record<string, unknown>;\n const nested = (item?.vipTier as Record<string, unknown>) || undefined;\n\n if (nested) {\n return {\n userAddress: item.userAddress as string | undefined,\n tier: nested.tier as number | string | undefined,\n name: nested.name as string | undefined,\n discountRate: nested.discountRate as number | undefined,\n badgeImageUrl: nested.badgeImageUrl as string | undefined,\n currentAllocation: item.currentAllocation as\n | string\n | number\n | null\n | undefined,\n currentAllocationFormatted: item.currentAllocationFormatted as\n | string\n | number\n | null\n | undefined,\n orderlyAccountId: item.orderlyAccountId as string | null | undefined,\n lastUpdated: item.lastUpdated as string | undefined,\n syncedAt: item.syncedAt as string | null | undefined,\n };\n }\n\n return item as VipTierRow;\n};\n\nconst normalizeVipTierListResponse = (\n payload: unknown,\n): VipTierListResponse => {\n if (!payload) return { tiers: [] };\n if (Array.isArray(payload)) {\n return {\n tiers: payload.map((item) =>\n normalizeVipTierDefinition(item as Record<string, unknown>),\n ),\n };\n }\n\n const record = payload as Record<string, unknown>;\n if (Array.isArray(record.data)) {\n return {\n tiers: record.data.map((item) =>\n normalizeVipTierDefinition(item as Record<string, unknown>),\n ),\n };\n }\n if (Array.isArray(record.rows)) {\n return {\n tiers: record.rows.map((item) =>\n normalizeVipTierDefinition(item as Record<string, unknown>),\n ),\n };\n }\n\n const nestedData = record.data as Record<string, unknown> | undefined;\n const nestedRows = record.rows as Record<string, unknown> | undefined;\n const nested = nestedData ?? nestedRows;\n if (nested && typeof nested === \"object\") {\n const tiers = (nested.tiers as unknown[]) ?? [];\n return {\n baseFeeRates: normalizeBaseFeeRates(\n nested.baseFeeRates ?? nested.base_fee_rates,\n ),\n tiers: Array.isArray(tiers)\n ? tiers.map((item) =>\n normalizeVipTierDefinition(item as Record<string, unknown>),\n )\n : [],\n };\n }\n\n const response = payload as VipTierListResponse;\n return {\n baseFeeRates: normalizeBaseFeeRates(\n (response as unknown as Record<string, unknown>).baseFeeRates ??\n (response as unknown as Record<string, unknown>).base_fee_rates,\n ),\n tiers: Array.isArray(response.tiers)\n ? response.tiers.map((item) =>\n normalizeVipTierDefinition(item as Record<string, unknown>),\n )\n : [],\n };\n};\n\nfunction normalizeBaseFeeRates(\n value: unknown,\n): VipTierListResponse[\"baseFeeRates\"] {\n if (!value || typeof value !== \"object\") return undefined;\n const rates = value as Record<string, unknown>;\n const toRate = (input?: unknown) =>\n input === undefined || input === null ? undefined : String(input);\n return {\n makerFeeRate: toRate(rates.makerFeeRate ?? rates.maker_fee_rate),\n takerFeeRate: toRate(rates.takerFeeRate ?? rates.taker_fee_rate),\n rwaMakerFeeRate: toRate(rates.rwaMakerFeeRate ?? rates.rwa_maker_fee_rate),\n rwaTakerFeeRate: toRate(rates.rwaTakerFeeRate ?? rates.rwa_taker_fee_rate),\n };\n}\n\nfunction normalizeVipTierDefinition(\n item: Record<string, unknown>,\n): VipTierDefinition {\n const effectiveFeeRates = normalizeEffectiveFeeRates(\n item.effectiveFeeRates ?? item.effective_fee_rates,\n );\n return {\n id: item.id as number | undefined,\n tier: item.tier as number | undefined,\n name: item.name as string | undefined,\n description: item.description as string | undefined,\n discountRate: (item.discountRate ?? item.discount_rate) as\n | number\n | undefined,\n minXKDKStakedValue: (item.minXKDKStakedValue ??\n item.min_xkdk_staked_value) as number | undefined,\n badgeImageUrl: (item.badgeImageUrl ?? item.badge_image_url) as\n | string\n | undefined,\n createdAt: (item.createdAt ?? item.created_at) as string | undefined,\n updatedAt: (item.updatedAt ?? item.updated_at) as string | undefined,\n effectiveFeeRates,\n };\n}\n\nfunction normalizeEffectiveFeeRates(\n value: unknown,\n): VipTierDefinition[\"effectiveFeeRates\"] {\n if (!value || typeof value !== \"object\") return undefined;\n const rates = value as Record<string, unknown>;\n const toNumber = (input?: unknown) =>\n input === undefined || input === null ? undefined : Number(input);\n return {\n makerFeeRate: toNumber(rates.makerFeeRate ?? rates.maker_fee_rate),\n takerFeeRate: toNumber(rates.takerFeeRate ?? rates.taker_fee_rate),\n rwaMakerFeeRate: toNumber(\n rates.rwaMakerFeeRate ?? rates.rwa_maker_fee_rate,\n ),\n rwaTakerFeeRate: toNumber(\n rates.rwaTakerFeeRate ?? rates.rwa_taker_fee_rate,\n ),\n };\n}\n\n// Build user-specific VIP tier URL: /vip-tiers/user/{address}\nconst buildVipTierUrl = (endpoint: string, address: string) => {\n if (!endpoint) return null;\n if (!address) return null;\n return `${endpoint}/user/${address}`;\n};\n\n// Build VIP tier list URL: /vip-tiers/effective-fee-rates\nconst buildVipTierListUrl = (endpoint?: string) => {\n if (!endpoint) return null;\n return `${endpoint}/effective-fee-rates`;\n};\n\nconst findCurrentTier = (feeList: FeeDataType[], data: API.AccountInfo) => {\n const { futures_taker_fee_rate = 0, futures_maker_fee_rate = 0 } = data;\n const takerRate = new Decimal(futures_taker_fee_rate).mul(0.01);\n const makerRate = new Decimal(futures_maker_fee_rate).mul(0.01);\n const findItem = feeList.find((item) => {\n const itemTakerRate = item.taker_fee.split(\"/\")?.[0].trim();\n const itemMakerRate = item.maker_fee.split(\"/\")?.[0].trim();\n return (\n itemTakerRate === `${takerRate.toNumber()}%` &&\n itemMakerRate === `${makerRate.toNumber()}%`\n );\n });\n return findItem?.tier;\n};\n\nexport const useFeeTierScript = (options?: UseFeeTierScriptOptions) => {\n const { dataAdapter, headerDataAdapter, onRow, onCell, hideTable } =\n options || {};\n const [tier, setTier] = useState<number | null>();\n const { data, isLoading } = useAccountInfo();\n const { state } = useAccount();\n const vipTierEndpoint = useConfig(\"vipTierEndpoint\") as string | undefined;\n const vipTierDocsUrl = useConfig(\"vipTierDocsUrl\") as string | undefined;\n const vipTierStakeUrl = useConfig(\"vipTierStakeUrl\") as string | undefined;\n\n const cols = useFeeTierColumns();\n\n const { data: volumeStatistics } = usePrivateQuery<{\n perp_volume_last_30_days: number;\n }>(\"/v1/volume/user/stats\");\n\n const { columns, dataSource } = useMemo(() => {\n return typeof dataAdapter === \"function\"\n ? dataAdapter(cols, defaultDataSource, { tier: tier ?? undefined })\n : { columns: cols, dataSource: defaultDataSource };\n }, [dataAdapter, cols, tier]);\n\n useEffect(() => {\n if (!data || isLoading) {\n return;\n }\n setTier(findCurrentTier(dataSource, data));\n }, [data, isLoading, dataSource]);\n\n const vipTierUrl = useMemo(() => {\n if (!vipTierEndpoint || !state.address) return null;\n return buildVipTierUrl(vipTierEndpoint, state.address);\n }, [vipTierEndpoint, state.address]);\n\n const { data: vipTierRaw } = useSWR(vipTierUrl, vipTierFetcher, {\n revalidateOnFocus: false,\n });\n const vipTier = useMemo(\n () => normalizeVipTierResponse(vipTierRaw),\n [vipTierRaw],\n );\n\n const vipTierListUrl = useMemo(\n () => buildVipTierListUrl(vipTierEndpoint),\n [vipTierEndpoint],\n );\n\n const { data: vipTierListRaw } = useSWR(vipTierListUrl, vipTierFetcher, {\n revalidateOnFocus: false,\n });\n const vipTierListResponse = useMemo(\n () => normalizeVipTierListResponse(vipTierListRaw),\n [vipTierListRaw],\n );\n const vipTierList = vipTierListResponse.tiers || [];\n const vipTierBaseFeeRates = vipTierListResponse.baseFeeRates;\n\n const sortedVipTierList = useMemo(() => {\n if (!vipTierList?.length) return [];\n return [...vipTierList].sort(\n (a, b) => (a.minXKDKStakedValue || 0) - (b.minXKDKStakedValue || 0),\n );\n }, [vipTierList]);\n\n const vipTierEnabled = Boolean(vipTierEndpoint);\n const dataTapPayload = {\n tier: tier,\n vol: volumeStatistics?.perp_volume_last_30_days,\n };\n\n const authData = useDataTap(dataTapPayload, {\n accountStatus:\n state.status === AccountStatusEnum.EnableTradingWithoutConnected\n ? AccountStatusEnum.EnableTradingWithoutConnected\n : AccountStatusEnum.EnableTrading,\n fallbackData: {\n ...dataTapPayload,\n tier: undefined,\n vol: undefined,\n },\n });\n const vipTierData = useDataTap(vipTier, {\n accountStatus: AccountStatusEnum.Connected,\n fallbackData: null,\n });\n\n return {\n ...authData,\n vipTier: vipTierData,\n vipTierEnabled,\n vipTierList: sortedVipTierList,\n vipTierBaseFeeRates,\n vipTierDocsUrl,\n vipTierStakeUrl,\n columns: columns,\n dataSource: dataSource,\n onRow: onRow,\n onCell: onCell,\n headerDataAdapter: headerDataAdapter,\n };\n};\n","import { useCallback, useEffect, useMemo, useState, useRef } from \"react\";\nimport React from \"react\";\nimport { useAccount } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n Flex,\n Text,\n Divider,\n Box,\n Tabs,\n TabPanel,\n DataFilter,\n formatAddress,\n Tooltip,\n InfoCircleIcon,\n Button,\n} from \"@kodiak-finance/orderly-ui\";\nimport type { SelectOption } from \"@kodiak-finance/orderly-ui\";\nimport {\n LiquidationWidget,\n PositionHistoryWidget,\n PositionHistoryInstance,\n LiquidationInstance,\n PositionsProps,\n CombinePositionsWidget,\n PositionsWidget,\n PositionsInstance,\n} from \"@kodiak-finance/orderly-ui-positions\";\nimport {\n exportToCSVFile,\n getPositionExportColumns,\n getPositionHistoryExportColumns,\n getLiquidationExportColumns,\n} from \"@kodiak-finance/orderly-utils\";\nimport { AccountType } from \"../assets/assetsPage/assets.ui.desktop\";\n\nenum TabsType {\n positions = \"Positions\",\n positionHistory = \"Position history\",\n liquidation = \"Liquidation\",\n}\n\nexport const PositionsPage: React.FC<PositionsProps> = (props) => {\n const [tab, setTab] = useState(TabsType.positions);\n const { t } = useTranslation();\n const { state, isMainAccount } = useAccount();\n\n const subAccounts = state.subAccounts ?? [];\n\n const [selectedAccount, setAccount] = React.useState<string>(AccountType.ALL);\n\n const positionsRef = useRef<PositionsInstance>(null);\n const positionHistoryRef = useRef<PositionHistoryInstance>(null);\n const liquidationRef = useRef<LiquidationInstance>(null);\n\n const [canExport, setCanExport] = useState(false);\n\n useEffect(() => {\n const getHasData = () => {\n switch (tab) {\n case TabsType.positions: {\n const data = positionsRef.current?.getDataSource?.();\n return !!(data && data.length > 0);\n }\n case TabsType.positionHistory: {\n const data = positionHistoryRef.current?.getDataSource?.();\n return !!(data && data.length > 0);\n }\n case TabsType.liquidation: {\n const data = liquidationRef.current?.getDataSource?.();\n return !!(data && data.length > 0);\n }\n default:\n return false;\n }\n };\n\n setCanExport(getHasData());\n const interval = setInterval(() => setCanExport(getHasData()), 500);\n return () => clearInterval(interval);\n }, [tab]);\n\n const handleExport = useCallback(() => {\n switch (tab) {\n case TabsType.positions: {\n const data = positionsRef.current?.getDataSource?.();\n if (data && data.length > 0) {\n exportToCSVFile({\n filename: `positions_${new Date().getTime()}`,\n columns: getPositionExportColumns(),\n data,\n });\n }\n break;\n }\n case TabsType.positionHistory: {\n const data = positionHistoryRef.current?.getDataSource?.();\n if (data && data.length > 0) {\n exportToCSVFile({\n filename: `position_history_${new Date().getTime()}`,\n columns: getPositionHistoryExportColumns(),\n data,\n });\n }\n break;\n }\n case TabsType.liquidation: {\n const data = liquidationRef.current?.getDataSource?.();\n if (data && data.length > 0) {\n exportToCSVFile({\n filename: `liquidation_${new Date().getTime()}`,\n columns: getLiquidationExportColumns(),\n data,\n });\n }\n break;\n }\n default:\n break;\n }\n }, [tab]);\n\n const onAccountFilter = React.useCallback(\n (filter: { name: string; value: string }) => {\n const { name, value } = filter;\n if (name === \"account\") {\n setAccount(value);\n }\n },\n [],\n );\n\n const ALL_ACCOUNTS: SelectOption = {\n label: t(\"common.allAccount\"),\n value: AccountType.ALL,\n };\n\n const MAIN_ACCOUNT: SelectOption = {\n label: t(\"common.mainAccount\"),\n value: AccountType.MAIN,\n };\n\n const memoizedOptions = useMemo(() => {\n if (Array.isArray(subAccounts) && subAccounts.length) {\n return [\n ALL_ACCOUNTS,\n MAIN_ACCOUNT,\n ...subAccounts.map<SelectOption>((value) => ({\n value: value.id,\n label: value?.description || formatAddress(value?.id),\n })),\n ];\n }\n return [ALL_ACCOUNTS, MAIN_ACCOUNT];\n }, [subAccounts]);\n\n return (\n <Flex\n // p={6}\n direction={\"column\"}\n itemAlign={\"start\"}\n gap={4}\n width=\"100%\"\n height=\"100%\"\n >\n <Flex width=\"100%\" justify=\"between\">\n <Text size=\"lg\">{t(\"common.positions\")}</Text>\n <Button\n color=\"gray\"\n size=\"sm\"\n className=\"oui-bg-base-4\"\n disabled={!canExport}\n onClick={handleExport}\n >\n Export to CSV\n </Button>\n </Flex>\n <Divider className=\"oui-w-full\" />\n {/* 26(title height) + 1(divider) + 32 (padding) */}\n <Box width=\"100%\" className=\"oui-h-[calc(100%_-_59px)]\">\n <Tabs\n value={tab}\n onValueChange={(e) => setTab(e as any)}\n classNames={{\n tabsList: \"!oui-border-none oui-pb-1\",\n tabsContent: \"oui-h-[calc(100%_-_28px)]\",\n trigger: \"oui-group\",\n }}\n className=\"oui-h-full\"\n >\n <TabPanel value={TabsType.positions} title={t(\"common.positions\")}>\n <Flex direction=\"column\" gap={3} width=\"100%\" height=\"100%\">\n {isMainAccount ? (\n <>\n <DataFilter\n onFilter={onAccountFilter}\n items={[\n {\n type: \"select\",\n name: \"account\",\n value: selectedAccount,\n options: memoizedOptions,\n },\n ]}\n />\n <CombinePositionsWidget\n ref={positionsRef}\n selectedAccount={selectedAccount}\n {...props}\n />\n </>\n ) : (\n <PositionsWidget\n ref={positionsRef}\n {...props}\n enableSortingStorage={false}\n />\n )}\n </Flex>\n </TabPanel>\n <TabPanel\n value={TabsType.positionHistory}\n title={t(\"positions.positionHistory\")}\n >\n <Flex direction=\"column\" gap={3} width=\"100%\" height=\"100%\">\n <PositionHistoryWidget\n ref={positionHistoryRef}\n {...props}\n enableSortingStorage={false}\n />\n </Flex>\n </TabPanel>\n <TabPanel value={TabsType.liquidation} title={<LiquidationTab />}>\n <LiquidationWidget ref={liquidationRef} />\n </TabPanel>\n </Tabs>\n </Box>\n </Flex>\n );\n};\n\nconst LiquidationTab: React.FC = () => {\n const { t } = useTranslation();\n return (\n <div className=\"oui-flex oui-space-x-1\">\n <span>{t(\"positions.liquidation\")}</span>\n <Tooltip\n className=\"oui-max-w-[275px] oui-bg-base-6\"\n content={\n <div>\n <div className=\"oui-text-pretty\">\n {t(\"positions.Liquidation.tooltip.liquidation\")}\n </div>\n <div>\n <a\n href=\"https://orderly.network/docs/introduction/trade-on-orderly/perpetual-futures/liquidations\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"oui-text-primary\"\n >\n {t(\"positions.Liquidation.tooltip.viewMore\")}\n </a>\n </div>\n </div>\n }\n arrow={{\n className: \"oui-fill-base-6\",\n }}\n >\n <button className=\"oui-hidden group-data-[state=active]:oui-block\">\n <InfoCircleIcon />\n </button>\n </Tooltip>\n </div>\n );\n};\n","import { FC, SVGProps, useRef } from \"react\";\nimport React from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n Box,\n Button,\n Divider,\n Flex,\n Text,\n Tooltip,\n} from \"@kodiak-finance/orderly-ui\";\nimport {\n OrderListInstance,\n OrdersWidget,\n} from \"@kodiak-finance/orderly-ui-orders\";\nimport { SharePnLConfig } from \"@kodiak-finance/orderly-ui-share\";\n\nexport const OrdersPage: React.FC<{ sharePnLConfig?: SharePnLConfig }> = (\n props,\n) => {\n const { sharePnLConfig } = props;\n const { t } = useTranslation();\n\n const ordersRef = useRef<OrderListInstance>(null);\n\n return (\n <Flex\n // p={6}\n direction={\"column\"}\n itemAlign={\"start\"}\n gap={4}\n width=\"100%\"\n height=\"100%\"\n >\n <Flex width=\"100%\" justify=\"between\">\n <Text size=\"lg\">{t(\"common.orders\")}</Text>\n <Tooltip content={t(\"orders.download.tooltip\")}>\n <Button color=\"gray\" size=\"sm\" className=\"oui-bg-base-4\" disabled>\n {t(\"common.download\")}\n <TooltipIcon className=\"oui-text-base-contrast-36 oui-ml-[5px]\" />\n </Button>\n </Tooltip>\n </Flex>\n <Divider className=\"oui-w-full\" />\n {/* 26(title height) + 1(divider) + 32 (padding) */}\n <Box width=\"100%\" className=\"oui-h-[calc(100%_-_59px)]\">\n <OrdersWidget ref={ordersRef} sharePnLConfig={sharePnLConfig} />\n </Box>\n </Flex>\n );\n};\n\nconst TooltipIcon = React.forwardRef<SVGSVGElement, SVGProps<SVGSVGElement>>(\n (props, ref) => {\n return (\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n ref={ref}\n {...props}\n >\n <path d=\"M5.999 1.007a5 5 0 1 0 0 10 5 5 0 0 0 0-10m0 2.5a.5.5 0 1 1 0 1 .5.5 0 0 1 0-1m0 1.5a.5.5 0 0 1 .5.5v2.5a.5.5 0 0 1-1 0v-2.5a.5.5 0 0 1 .5-.5\" />\n </svg>\n );\n },\n);\n","export { APIManagerWidget } from \"./apiManager.widget\";\nexport { APIManagerPage } from \"./apiManager.page\";\n","import { APIManager } from \"./apiManager.ui\";\nimport { useApiManagerScript } from \"./apiManager.script\";\n\n\nexport const APIManagerWidget = (props?: {\n filterTags?: [string];\n keyStatus?: string;\n}) => {\n const state = useApiManagerScript(props);\n return <APIManager {...state} />;\n};\n","import { APIManagerWidget } from \"./apiManager.widget\";\n\n/**\n * API key manager page\n * @param filterTags filterTags\n * @param keyStatus filterTags default is \"ACTIVE\"\n * @returns\n */\nexport const APIManagerPage = (props: {\n filterTags?: [string];\n keyStatus?: string;\n}) => {\n const { filterTags, keyStatus = \"ACTIVE\" } = props;\n return <APIManagerWidget filterTags={filterTags} keyStatus={keyStatus}/>;\n};\n","export { SettingWidget } from \"./setting.widget\";\nexport { SettingPage } from \"./setting.page\";\n","import { useEffect, useState } from \"react\";\nimport {\n useAccount,\n useAccountInfo,\n useDebouncedCallback,\n useMutation,\n useLocalStorage,\n useOrderlyContext,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { useAppContext } from \"@kodiak-finance/orderly-react-app\";\nimport { AccountStatusEnum } from \"@kodiak-finance/orderly-types\";\nimport { toast, useOrderlyTheme } from \"@kodiak-finance/orderly-ui\";\n\nconst ORDERLY_ORDER_SOUND_ALERT_KEY = \"orderly_order_sound_alert\";\nconst ORDERLY_ORDER_SOUND_OPTION_KEY = \"orderly_order_sound_option\";\n\nconst ORDERLY_TRADING_TOAST_ALERT_KEY = \"orderly_trading_toast_alert\";\n\nconst ORDERLY_MWEB_ORDER_ENTRY_SIDE_MARKETS_LAYOUT =\n \"orderly_mweb_order_entry_side_markets_layout\";\n\nexport type OrderPanelLayout = \"left\" | \"right\";\n\nexport type SettingScriptReturns = ReturnType<typeof useSettingScript>;\n\nexport const useSettingScript = () => {\n const { data } = useAccountInfo();\n const { wrongNetwork, disabledConnect } = useAppContext();\n const [update] = useMutation(\"/v1/client/maintenance_config\");\n const [checked, setChecked] = useState(false);\n const { notification } = useOrderlyContext();\n const { themes, currentThemeId, setCurrentThemeId } = useOrderlyTheme();\n\n const soundOptions = notification?.orderFilled?.soundOptions;\n const hasSoundOptions = Boolean(soundOptions && soundOptions.length > 0);\n const defaultSoundValue =\n notification?.orderFilled?.defaultSoundValue ?? soundOptions?.[0]?.value;\n\n const [soundAlert, setSoundAlert] = useLocalStorage<boolean>(\n ORDERLY_ORDER_SOUND_ALERT_KEY,\n notification?.orderFilled?.defaultOpen ?? false,\n );\n\n const [selectedSoundValue, setSelectedSoundValue] = useLocalStorage<\n string | null\n >(ORDERLY_ORDER_SOUND_OPTION_KEY, defaultSoundValue ?? null);\n\n // Kodiak custom: trading toast alert (master switch for toast + sound)\n const [tradingToastAlert, setTradingToastAlert] = useLocalStorage<boolean>(\n ORDERLY_TRADING_TOAST_ALERT_KEY,\n true,\n );\n\n const [orderPanelLayout, setOrderPanelLayout] =\n useLocalStorage<OrderPanelLayout>(\n ORDERLY_MWEB_ORDER_ENTRY_SIDE_MARKETS_LAYOUT,\n \"right\",\n );\n\n useEffect(() => {\n setChecked(data?.maintenance_cancel_orders || false);\n }, [data]);\n\n const updateCheckState = useDebouncedCallback((value: boolean) => {\n // if (value === data?.maintenance_cancel_orders) return;\n update({\n maintenance_cancel_order_flag: value,\n }).then((data) => {\n if (data.success) {\n toast.success(value ? \"Opened\" : \"Closed\");\n } else {\n setChecked(!value);\n }\n });\n }, 300);\n\n const setMaintainConfig = (maintenance_cancel_order_flag: boolean) => {\n setChecked(maintenance_cancel_order_flag);\n updateCheckState(maintenance_cancel_order_flag);\n };\n const { state } = useAccount();\n\n const canTouch =\n !wrongNetwork &&\n !disabledConnect &&\n (state.status === AccountStatusEnum.EnableTrading ||\n state.status === AccountStatusEnum.EnableTradingWithoutConnected);\n\n return {\n maintenance_cancel_orders: checked, //data?.maintenance_cancel_orders,\n setMaintainConfig,\n isSetting: false,\n canTouch,\n soundAlert,\n setSoundAlert,\n hasOrderFilledMedia: Boolean(notification?.orderFilled?.media),\n soundOptions,\n hasSoundOptions,\n selectedSoundValue,\n setSelectedSoundValue,\n // Kodiak custom: trading toast alert (master switch for toast + sound)\n tradingToastAlert,\n setTradingToastAlert,\n orderPanelLayout,\n setOrderPanelLayout,\n themes,\n currentThemeId,\n setCurrentThemeId,\n };\n};\n","import type { FC } from \"react\";\nimport { Flex, Text } from \"@kodiak-finance/orderly-ui\";\n\nexport type SoundRadioButtonProps = {\n sel: boolean;\n label: string;\n onCheckChange: () => void;\n};\n\nexport const SoundRadioButton: FC<SoundRadioButtonProps> = ({\n sel,\n label,\n onCheckChange,\n}) => {\n return (\n <Flex\n onClick={(e) => {\n onCheckChange();\n e.stopPropagation();\n }}\n gap={1}\n className=\"oui-cursor-pointer\"\n >\n {sel ? (\n <SoundSelIcon className=\"oui-fill-base-contrast\" />\n ) : (\n <SoundUnselIcon className=\"oui-fill-base-contrast-54\" />\n )}\n <Text size=\"2xs\" intensity={sel ? 98 : 54}>\n {label}\n </Text>\n </Flex>\n );\n};\n\nexport const SoundSelIcon = (props: { className: string }) => {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={props.className}\n >\n <path d=\"M8.01 1.333a6.667 6.667 0 1 0 0 13.333 6.667 6.667 0 0 0 0-13.333m0 1.333a5.334 5.334 0 1 1-.001 10.667 5.334 5.334 0 0 1 0-10.667\" />\n <circle cx=\"8\" cy=\"8\" r=\"3.333\" />\n </svg>\n );\n};\n\nexport const SoundUnselIcon = (props: { className: string }) => {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={props.className}\n >\n <path d=\"M8.01 1.333a6.667 6.667 0 1 0 0 13.333 6.667 6.667 0 0 0 0-13.333m0 1.333a5.334 5.334 0 1 1-.001 10.667 5.334 5.334 0 0 1 0-10.667\" />\n </svg>\n );\n};\n","import { FC } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { Card, Flex, Select, Button, cn } from \"@kodiak-finance/orderly-ui\";\nimport type { SettingScriptReturns } from \"../setting.script\";\n\ntype ThemeSettingCardProps = Pick<\n SettingScriptReturns,\n \"themes\" | \"currentThemeId\" | \"setCurrentThemeId\"\n> & {\n classNames?: {\n card?: string;\n content?: string;\n };\n};\n\nexport const ThemeSettingCard: FC<ThemeSettingCardProps> = (props) => {\n const { t } = useTranslation();\n\n const { themes, currentThemeId, setCurrentThemeId, classNames } = props;\n\n if (!themes || themes.length <= 1) {\n return null;\n }\n\n return (\n <Card\n title={t(\"portfolio.setting.theme\")}\n id=\"portfolio-theme-setting\"\n classNames={{ root: classNames?.card }}\n >\n <Flex\n direction={\"row\"}\n gap={4}\n width={\"100%\"}\n itemAlign={\"center\"}\n className={cn(\n \"oui-border-t-2 oui-border-line-6 oui-font-semibold\",\n classNames?.content,\n )}\n >\n {themes.length === 2 ? (\n <Flex direction=\"row\" itemAlign=\"center\" gap={2}>\n {themes.map((theme) => (\n <Button\n variant={theme.id === currentThemeId ? \"contained\" : \"outlined\"}\n size=\"sm\"\n key={theme.id}\n onClick={() => setCurrentThemeId?.(theme.id)}\n >\n {theme.displayName}\n </Button>\n ))}\n </Flex>\n ) : (\n <Flex>\n <Select.options\n value={currentThemeId}\n onValueChange={(value) => {\n setCurrentThemeId?.(value);\n }}\n options={themes.map((theme) => ({\n value: theme.id,\n label: theme.displayName,\n }))}\n size=\"sm\"\n testid=\"oui-testid-setting-theme-select\"\n classNames={{ trigger: \"oui-min-w-[100px]\" }}\n />\n </Flex>\n )}\n </Flex>\n </Card>\n );\n};\n","import { FC, useCallback, useRef } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { Card, Flex, Switch, Text } from \"@kodiak-finance/orderly-ui\";\nimport { AuthGuardTooltip } from \"@kodiak-finance/orderly-ui-connector\";\nimport { SoundRadioButton } from \"./components/soundRadioButton\";\nimport { ThemeSettingCard } from \"./components/themeSettingCard\";\nimport type { SettingScriptReturns } from \"./setting.script\";\n\nexport const SettingDesktop: FC<SettingScriptReturns> = (props) => {\n const { t } = useTranslation();\n\n // Kodiak custom: sound section only visible when trading toast is on\n const showSoundSetting =\n (props.hasOrderFilledMedia || props.hasSoundOptions) &&\n props.tradingToastAlert;\n\n const audioRef = useRef<HTMLAudioElement | null>(null);\n const playPreview = useCallback((media?: string) => {\n if (!media) return;\n try {\n if (!audioRef.current) {\n audioRef.current = new Audio();\n }\n const audio = audioRef.current;\n audio.pause();\n audio.currentTime = 0;\n audio.src = media;\n // ignore play promise rejection (e.g. autoplay policy)\n void audio.play().catch(() => undefined);\n } catch {\n // ignore runtime audio errors\n }\n }, []);\n\n return (\n <>\n <Card\n title={t(\"portfolio.setting.systemUpgrade\")}\n id=\"portfolio-apikey-manager\"\n className=\"oui-bg-base-9 oui-font-semibold\"\n >\n <Flex\n direction={\"row\"}\n gap={4}\n width={\"100%\"}\n itemAlign={\"center\"}\n pt={4}\n className=\"oui-border-t-2 oui-border-line-6 oui-font-semibold\"\n >\n <Flex direction={\"column\"} itemAlign={\"start\"} className=\"oui-flex-1\">\n <Text intensity={80} size=\"base\">\n {t(\"portfolio.setting.cancelOpenOrders\")}\n </Text>\n <Text intensity={54} size=\"sm\">\n {t(\"portfolio.setting.cancelOpenOrders.description\")}\n </Text>\n </Flex>\n\n <AuthGuardTooltip align=\"end\">\n <Switch\n checked={props.maintenance_cancel_orders}\n onCheckedChange={(e) => {\n props.setMaintainConfig(e);\n }}\n disabled={props.isSetting || !props.canTouch}\n data-testid=\"oui-testid-setting-switch-btn\"\n />\n </AuthGuardTooltip>\n </Flex>\n </Card>\n\n {/* Kodiak custom: Trading Notifications master switch (controls toast + sound) */}\n <Card\n title={t(\"portfolio.setting.tradingNotifications\")}\n id=\"portfolio-trading-notification-setting\"\n className=\"oui-bg-base-9 oui-font-semibold oui-mt-3\"\n >\n <Flex\n direction={\"row\"}\n gap={4}\n width={\"100%\"}\n itemAlign={\"center\"}\n pt={4}\n className=\"oui-border-t-2 oui-border-line-6 oui-font-semibold\"\n >\n <Flex direction={\"column\"} itemAlign={\"start\"} className=\"oui-flex-1\">\n <Text intensity={54} size=\"sm\">\n {t(\"portfolio.setting.tradingNotifications.description\")}\n </Text>\n </Flex>\n\n <AuthGuardTooltip align=\"end\">\n <Switch\n checked={props.tradingToastAlert}\n onCheckedChange={(checked) => props.setTradingToastAlert(checked)}\n disabled={!props.canTouch}\n data-testid=\"oui-testid-setting-trading-notification-switch-btn\"\n />\n </AuthGuardTooltip>\n </Flex>\n </Card>\n\n {showSoundSetting && (\n <Card\n title={t(\"portfolio.setting.soundAlerts\")}\n id=\"portfolio-sound-alert-setting\"\n className=\"oui-bg-base-9 oui-font-semibold oui-mt-3\"\n >\n <Flex\n direction={\"column\"}\n gap={3}\n width={\"100%\"}\n pt={4}\n itemAlign={\"start\"}\n className=\"oui-border-t-2 oui-border-line-6 oui-font-semibold\"\n >\n <Flex direction={\"row\"} gap={4} width={\"100%\"} itemAlign={\"center\"}>\n <Flex\n direction={\"column\"}\n itemAlign={\"start\"}\n className=\"oui-flex-1\"\n >\n <Text intensity={54} size=\"sm\">\n {t(\"portfolio.setting.soundAlerts.description\")}\n </Text>\n </Flex>\n\n <AuthGuardTooltip align=\"end\">\n <Switch\n checked={props.soundAlert}\n onCheckedChange={(checked) => props.setSoundAlert(checked)}\n disabled={!props.canTouch}\n data-testid=\"oui-testid-setting-sound-switch-btn\"\n />\n </AuthGuardTooltip>\n </Flex>\n\n {props.hasSoundOptions &&\n props.soundOptions?.length &&\n props.soundAlert && (\n <AuthGuardTooltip align=\"end\">\n <Flex direction=\"row\" gap={3} className=\"oui-cursor-pointer\">\n {props.soundOptions.map((option) => {\n const sel = props.selectedSoundValue === option.value;\n return (\n <SoundRadioButton\n key={option.value}\n sel={sel}\n label={option.label}\n onCheckChange={() => {\n props.setSelectedSoundValue(option.value);\n props.setSoundAlert(Boolean(option.media));\n playPreview(option.media);\n }}\n />\n );\n })}\n </Flex>\n </AuthGuardTooltip>\n )}\n </Flex>\n </Card>\n )}\n\n <ThemeSettingCard\n themes={props.themes}\n currentThemeId={props.currentThemeId}\n setCurrentThemeId={props.setCurrentThemeId}\n classNames={{\n card: \"oui-bg-base-9 oui-font-semibold oui-mt-3\",\n content: \"oui-pt-4\",\n }}\n />\n </>\n );\n};\n","import { FC, SVGProps, useCallback, useRef, useState } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n Card,\n cn,\n Flex,\n Switch,\n Text,\n ChevronRightIcon,\n} from \"@kodiak-finance/orderly-ui\";\nimport { AuthGuardTooltip } from \"@kodiak-finance/orderly-ui-connector\";\nimport { LanguageSwitcherWidget } from \"@kodiak-finance/orderly-ui-scaffold\";\nimport { SoundRadioButton } from \"./components/soundRadioButton\";\nimport { ThemeSettingCard } from \"./components/themeSettingCard\";\nimport type { SettingScriptReturns } from \"./setting.script\";\n\ntype OrderPanelPosition = \"left\" | \"right\";\n\nexport const SettingMobile: FC<SettingScriptReturns> = (props) => {\n const { t } = useTranslation();\n const [open, setOpen] = useState<boolean>(false);\n const onLanguageChange = () => {\n setOpen(true);\n };\n\n // Kodiak custom: sound section only visible when trading toast is on\n const showSoundSetting =\n (props.hasOrderFilledMedia || props.hasSoundOptions) &&\n props.tradingToastAlert;\n\n const audioRef = useRef<HTMLAudioElement | null>(null);\n const playPreview = useCallback((media?: string) => {\n if (!media) return;\n try {\n if (!audioRef.current) {\n audioRef.current = new Audio();\n }\n const audio = audioRef.current;\n audio.pause();\n audio.currentTime = 0;\n audio.src = media;\n void audio.play().catch(() => undefined);\n } catch {\n // ignore runtime audio errors\n }\n }, []);\n\n const renderItem = (position: OrderPanelPosition) => {\n const isSelected = props.orderPanelLayout === position;\n const handleClick = () => props.setOrderPanelLayout(position);\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n handleClick();\n }\n };\n return (\n <Flex\n key={position}\n direction=\"column\"\n gapY={2}\n className=\"oui-group oui-flex-1 oui-cursor-pointer\"\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n role=\"button\"\n tabIndex={0}\n aria-pressed={isSelected}\n aria-label={`Layout ${position}`}\n >\n <Flex\n direction=\"column\"\n className={cn(\n \"oui-h-[160px] oui-w-[120px] oui-shrink-0 oui-overflow-hidden oui-rounded-[10px] oui-border-4 oui-border-base-5 oui-bg-base-10 oui-p-0.5\",\n \"group-hover:oui-border-base-4\",\n isSelected && \"!oui-border-primary-light\",\n )}\n >\n <Flex\n direction=\"row\"\n itemAlign=\"stretch\"\n className=\"oui-h-[152px] oui-shrink-0 oui-gap-0.5\"\n >\n {position === \"left\" ? (\n <>\n <OrderEntryStripIcon />\n <EmptyBlockIcon />\n </>\n ) : (\n <>\n <EmptyBlockIcon />\n <OrderEntryStripIcon />\n </>\n )}\n </Flex>\n <div className=\"oui-min-h-[4px] oui-flex-1 oui-bg-base-10\" />\n </Flex>\n <Text\n size=\"2xs\"\n intensity={54}\n className={cn(\n \"oui-text-center oui-text-base-contrast-54 group-hover:oui-text-base-contrast-80\",\n isSelected && \"oui-text-base-contrast-80\",\n )}\n >\n {position === \"left\"\n ? t(\"trading.layout.advanced.left\")\n : t(\"trading.layout.advanced.right\")}\n </Text>\n </Flex>\n );\n };\n\n return (\n <>\n <Flex mt={1} p={4} intensity={900} r=\"xl\" itemAlign=\"center\">\n <LanguageSwitcherWidget open={open} onOpenChange={setOpen} />\n <Flex\n className=\"oui-cursor-pointer\"\n itemAlign=\"center\"\n width=\"100%\"\n onClick={onLanguageChange}\n >\n <Text\n size=\"base\"\n weight=\"semibold\"\n intensity={80}\n className=\"oui-ml-2\"\n >\n {t(\"languageSwitcher.language\")}\n </Text>\n <ChevronRightIcon\n size={18}\n className=\"oui-ml-auto oui-text-base-contrast-36\"\n />\n </Flex>\n </Flex>\n\n <Card\n // @ts-ignore\n title={\n <div className=\"oui-text-sm\">\n {t(\"portfolio.setting.systemUpgrade\")}\n </div>\n }\n id=\"portfolio-apikey-manager\"\n className=\"oui-mt-2 oui-bg-base-9 oui-font-semibold\"\n classNames={{ root: \"oui-p-4\", content: \"!oui-pt-3\" }}\n >\n <Flex\n direction={\"row\"}\n gap={4}\n width={\"100%\"}\n itemAlign={\"center\"}\n pt={3}\n className=\"oui-border-t-2 oui-border-line-6 oui-font-semibold\"\n >\n <Flex\n direction={\"column\"}\n itemAlign={\"start\"}\n className=\"oui-flex-1 oui-gap-2\"\n >\n <Text intensity={80} size=\"xs\">\n {t(\"portfolio.setting.cancelOpenOrders\")}\n </Text>\n <Text intensity={36} size=\"2xs\" className=\"oui-font-normal\">\n {t(\"portfolio.setting.cancelOpenOrders.description\")}\n </Text>\n <AuthGuardTooltip>\n <Switch\n className=\"oui-mt-1\"\n checked={props.maintenance_cancel_orders}\n onCheckedChange={(e) => {\n props.setMaintainConfig(e);\n }}\n disabled={props.isSetting || !props.canTouch}\n data-testid=\"oui-testid-setting-switch-btn\"\n />\n </AuthGuardTooltip>\n </Flex>\n </Flex>\n </Card>\n\n {/* Kodiak custom: Trading Notifications master switch (controls toast + sound) */}\n <Card\n // @ts-ignore\n title={\n <div className=\"oui-text-sm\">\n {t(\"portfolio.setting.tradingNotifications\")}\n </div>\n }\n id=\"portfolio-trading-notification-setting\"\n className=\"oui-mt-2 oui-bg-base-9 oui-font-semibold\"\n classNames={{ root: \"oui-p-4\", content: \"!oui-pt-3\" }}\n >\n <Flex\n direction={\"row\"}\n gap={4}\n width={\"100%\"}\n itemAlign={\"center\"}\n pt={3}\n className=\"oui-border-t-2 oui-border-line-6 oui-font-semibold\"\n >\n <Flex\n direction={\"column\"}\n itemAlign={\"start\"}\n className=\"oui-flex-1 oui-gap-2\"\n >\n <Text intensity={36} size=\"2xs\" className=\"oui-font-normal\">\n {t(\"portfolio.setting.tradingNotifications.description\")}\n </Text>\n <AuthGuardTooltip>\n <Switch\n className=\"oui-mt-1\"\n checked={props.tradingToastAlert}\n onCheckedChange={(checked) => {\n props.setTradingToastAlert(checked);\n }}\n disabled={!props.canTouch}\n data-testid=\"oui-testid-setting-trading-notification-switch-btn\"\n />\n </AuthGuardTooltip>\n </Flex>\n </Flex>\n </Card>\n\n {showSoundSetting && (\n <Card\n // @ts-ignore\n title={\n <div className=\"oui-text-sm\">\n {t(\"portfolio.setting.soundAlerts\")}\n </div>\n }\n id=\"portfolio-sound-alert-setting\"\n className=\"oui-mt-2 oui-bg-base-9 oui-font-semibold\"\n classNames={{ root: \"oui-p-4\", content: \"!oui-pt-3\" }}\n >\n <Flex\n direction={\"row\"}\n gap={4}\n width={\"100%\"}\n itemAlign={\"center\"}\n pt={3}\n className=\"oui-border-t-2 oui-border-line-6 oui-font-semibold\"\n >\n <Flex\n direction={\"column\"}\n itemAlign={\"start\"}\n className=\"oui-flex-1 oui-gap-2\"\n >\n <Text intensity={36} size=\"2xs\" className=\"oui-font-normal\">\n {t(\"portfolio.setting.soundAlerts.description\")}\n </Text>\n <AuthGuardTooltip>\n <Switch\n className=\"oui-mt-1\"\n checked={props.soundAlert}\n onCheckedChange={(e) => {\n props.setSoundAlert(e);\n }}\n disabled={!props.canTouch}\n data-testid=\"oui-testid-setting-sound-switch-btn\"\n />\n </AuthGuardTooltip>\n\n {props.hasSoundOptions &&\n props.soundOptions?.length &&\n props.soundAlert && (\n <Flex direction=\"row\" gap={3} wrap=\"wrap\">\n {props.soundOptions.map((option) => {\n const sel = props.selectedSoundValue === option.value;\n return (\n <SoundRadioButton\n key={option.value}\n sel={sel}\n label={option.label}\n onCheckChange={() => {\n props.setSelectedSoundValue(option.value);\n props.setSoundAlert(Boolean(option.media));\n playPreview(option.media);\n }}\n />\n );\n })}\n </Flex>\n )}\n </Flex>\n </Flex>\n </Card>\n )}\n\n <ThemeSettingCard\n themes={props.themes}\n currentThemeId={props.currentThemeId}\n setCurrentThemeId={props.setCurrentThemeId}\n classNames={{\n card: \"oui-mt-2 oui-bg-base-9 oui-font-semibold oui-p-3\",\n content: \"oui-pt-3\",\n }}\n />\n\n <Card\n // @ts-ignore\n title={<div className=\"oui-text-sm\">{t(\"trading.layout\")}</div>}\n id=\"portfolio-order-panel-setting\"\n className=\"oui-mt-2 oui-bg-base-9 oui-font-semibold\"\n classNames={{ root: \"oui-p-4\", content: \"!oui-pt-3\" }}\n >\n <Flex\n direction=\"row\"\n gap={4}\n width=\"100%\"\n itemAlign=\"center\"\n pt={3}\n className=\"oui-border-t-2 oui-border-line-6 oui-font-semibold\"\n >\n {renderItem(\"left\")}\n {renderItem(\"right\")}\n </Flex>\n </Card>\n </>\n );\n};\n\nconst EmptyBlockIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"50\"\n height=\"80\"\n viewBox=\"0 0 50 80\"\n fill=\"currentColor\"\n className=\"oui-fill-base-7\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <rect width=\"50\" height=\"80\" rx=\"2\" />\n </svg>\n);\n\nconst OrderEntryStripIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"50\"\n height=\"80\"\n viewBox=\"0 0 50 80\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <rect width=\"50\" height=\"80\" rx=\"2\" fill=\"rgb(var(--oui-color-base-7))\" />\n <rect\n x=\"3\"\n y=\"3\"\n width=\"21\"\n height=\"11\"\n rx=\"2\"\n fill=\"rgb(var(--oui-color-success-darken))\"\n />\n <rect\n x=\"26\"\n y=\"3\"\n width=\"21\"\n height=\"11\"\n rx=\"2\"\n fill=\"rgb(var(--oui-color-danger-darken))\"\n />\n <rect\n x=\"3\"\n y=\"69\"\n width=\"44\"\n height=\"8\"\n rx=\"2\"\n fill=\"rgb(var(--oui-color-success-darken))\"\n />\n </svg>\n);\n","import { FC } from \"react\";\nimport { useScreen } from \"@kodiak-finance/orderly-ui\";\nimport { SettingScriptReturns } from \"./setting.script\";\nimport { SettingDesktop } from \"./setting.ui.desktop\";\nimport { SettingMobile } from \"./setting.ui.mobile\";\n\nexport const Setting: FC<SettingScriptReturns> = (props) => {\n const { isMobile } = useScreen();\n if (isMobile) {\n return (\n <div className=\"oui-px-3\">\n <SettingMobile {...props} />\n </div>\n );\n }\n return <SettingDesktop {...props} />;\n};\n","import React from \"react\";\nimport { useSettingScript } from \"./setting.script\";\nimport { Setting } from \"./setting.ui\";\n\nexport const SettingWidget: React.FC = () => {\n const state = useSettingScript();\n return <Setting {...state} />;\n};\n","import React from \"react\";\nimport { SettingWidget } from \"./setting.widget\";\n\nexport const SettingPage: React.FC = () => {\n return <SettingWidget />;\n};\n","export { AssetsPage } from \"./page\";\nexport {\n AssetsWidget,\n AssetsDataTableWidget,\n} from \"./assetsPage/assets.widget\";\nexport type { AssetsWidgetProps } from \"./assetsPage/assets.widget\";\nexport { AssetsTable, AssetsDataTable } from \"./assetsPage/assets.ui.desktop\";\nexport { AssetsTableMobile } from \"./assetsPage/assets.ui.mobile\";\n","import { useCallback, useEffect, useMemo } from \"react\";\nimport {\n useAccount,\n useCollateral,\n useLocalStorage,\n useIndexPricesStream,\n useAppStore,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { account } from \"@kodiak-finance/orderly-perp\";\nimport { useCanTrade, useDataTap } from \"@kodiak-finance/orderly-react-app\";\nimport { AccountStatusEnum, EMPTY_LIST } from \"@kodiak-finance/orderly-types\";\nimport { modal } from \"@kodiak-finance/orderly-ui\";\nimport {\n DepositAndWithdrawWithDialogId,\n TransferDialogId,\n} from \"@kodiak-finance/orderly-ui-transfer\";\nimport { Decimal, zero } from \"@kodiak-finance/orderly-utils\";\nimport { useAccountsData, useAssetsMultiFilter } from \"../../../hooks\";\nimport { useAssetTotalValue } from \"../../../hooks/useAssetTotalValue\";\nimport { ORDERLY_ASSETS_VISIBLE_KEY } from \"../type\";\nimport { useAssetsColumns } from \"./assets.column\";\n\nexport const useAssetsScript = () => {\n const [visible, setVisible] = useLocalStorage<boolean>(\n ORDERLY_ASSETS_VISIBLE_KEY,\n true,\n );\n\n const { state, subAccount, isMainAccount } = useAccount();\n const { holding = [] } = useCollateral();\n const { getIndexPrice } = useIndexPricesStream();\n\n const tokensInfo = useAppStore((state) => state.tokensInfo);\n\n const subAccounts = state.subAccounts ?? [];\n\n useEffect(() => {\n if (holding.length > 0) {\n subAccount.refresh();\n }\n }, [holding]);\n\n // Use the extracted total value hook\n const totalValue = useAssetTotalValue();\n\n const toggleVisible = () => {\n // @ts-ignore\n setVisible((visible: boolean) => !visible);\n };\n\n const assetsOptions = useMemo(() => {\n return tokensInfo?.map((item) => ({\n label: item.token,\n value: item.token,\n }));\n }, [tokensInfo]);\n\n // Use the extracted accounts data hook\n const allAccounts = useAccountsData();\n\n // Use the extracted account and asset filter hook\n const {\n selectedAccount,\n selectedAsset,\n filteredData: filtered,\n onFilter,\n } = useAssetsMultiFilter(allAccounts);\n\n // Enhanced filtered data with additional calculations for children\n const enhancedFiltered = useMemo(() => {\n return filtered.map((accountData) => {\n // Enhance each child (holding) with calculated fields\n const enhancedChildren =\n accountData.children?.map((holding) => {\n const tokenInfo = tokensInfo?.find(\n (item) => item.token === holding.token,\n );\n\n // Use extracted function for index price calculation\n const indexPrice = getIndexPrice(holding.token);\n\n // Use extracted function for asset value calculation\n const assetValue = new Decimal(holding.holding)\n .mul(indexPrice)\n .toNumber();\n\n // Calculate collateral ratio for this token\n const collateralRatio = tokenInfo\n ? account.collateralRatio({\n baseWeight: tokenInfo.base_weight ?? 0,\n discountFactor: tokenInfo.discount_factor ?? 0,\n collateralQty: holding.holding,\n collateralCap: tokenInfo?.user_max_qty ?? holding.holding,\n indexPrice: indexPrice,\n })\n : zero;\n\n // Calculate collateral contribution for this token\n const collateralContribution = account.collateralContribution({\n collateralQty: holding.holding,\n collateralCap: tokenInfo?.user_max_qty ?? holding.holding,\n collateralRatio: collateralRatio.toNumber(),\n indexPrice: indexPrice,\n });\n\n return {\n ...holding,\n indexPrice,\n assetValue,\n collateralRatio,\n collateralContribution,\n };\n }) || [];\n\n return {\n ...accountData,\n children: enhancedChildren,\n };\n });\n }, [filtered, getIndexPrice, tokensInfo]);\n\n const handleTransfer = useCallback((accountId: string, token: string) => {\n if (!accountId) {\n return;\n }\n modal.show(TransferDialogId, {\n toAccountId: accountId,\n token,\n });\n }, []);\n\n const handleConvert = (accountId: string, token: string) => {\n modal.show(\"ConvertDialogId\", {\n accountId,\n token,\n });\n };\n\n const showTransfer = isMainAccount ? subAccounts.length > 0 : true;\n\n const assetsColumns = useAssetsColumns({\n onTransfer: showTransfer ? handleTransfer : undefined,\n onConvert: handleConvert,\n });\n\n const openDepositAndWithdraw = useCallback(\n (viewName: \"deposit\" | \"withdraw\") => {\n modal.show(DepositAndWithdrawWithDialogId, {\n activeTab: viewName,\n });\n },\n [],\n );\n\n const onDeposit = useCallback(() => {\n openDepositAndWithdraw(\"deposit\");\n }, []);\n\n const onWithdraw = useCallback(() => {\n openDepositAndWithdraw(\"withdraw\");\n }, []);\n\n // Use enhanced filtered data with calculated children\n const dataSource = useDataTap(enhancedFiltered, {\n accountStatus:\n state.status === AccountStatusEnum.EnableTradingWithoutConnected\n ? AccountStatusEnum.EnableTradingWithoutConnected\n : AccountStatusEnum.EnableTrading,\n });\n\n const canTrade = useCanTrade();\n\n return {\n columns: assetsColumns,\n dataSource,\n visible: visible as boolean,\n onToggleVisibility: toggleVisible,\n selectedAccount,\n selectedAsset,\n onFilter,\n totalValue,\n hasSubAccount: subAccounts.length > 0,\n onDeposit,\n onWithdraw,\n holding,\n assetsOptions: assetsOptions ?? EMPTY_LIST,\n canTrade,\n };\n};\n\nexport type useAssetsScriptReturn = ReturnType<typeof useAssetsScript> &\n ReturnType<typeof useAccount>;\n","import React from \"react\";\nimport { useAppStore } from \"@kodiak-finance/orderly-hooks\";\nimport { useWalletConnector } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { ChainNamespace } from \"@kodiak-finance/orderly-types\";\nimport { Button, Flex, Text, TokenIcon } from \"@kodiak-finance/orderly-ui\";\nimport type { Column } from \"@kodiak-finance/orderly-ui\";\n\nexport interface ColumnsOptions {\n onTransfer?: (accountId: string, token: string) => void;\n onConvert?: (accountId: string, token: string) => void;\n}\n\n// Define the enhanced holding interface with calculated fields\ninterface EnhancedHolding {\n token: string;\n holding: number;\n indexPrice: number;\n assetValue: number;\n collateralRatio: number;\n collateralContribution: number;\n account_id: string;\n}\n\nexport const useAssetsColumns = (options: ColumnsOptions) => {\n const { t } = useTranslation();\n const tokensInfo = useAppStore((state) => state.tokensInfo);\n const { namespace } = useWalletConnector();\n const { onTransfer, onConvert } = options;\n const columns = React.useMemo<Column[]>(() => {\n return [\n {\n title: t(\"portfolio.overview.column.token\"),\n dataIndex: \"token\",\n align: \"left\",\n width: 150,\n render(val: string) {\n return (\n <Flex itemAlign=\"center\" gap={2}>\n <TokenIcon name={val} />\n {val}\n </Flex>\n );\n },\n },\n {\n title: t(\"portfolio.overview.column.qty\"),\n dataIndex: \"holding\",\n align: \"left\",\n width: 140,\n render(val: number, record) {\n const findToken = tokensInfo?.find(\n ({ token }) => token === record.token,\n );\n return (\n <Text.numeral dp={findToken?.decimals ?? 6} padding={false}>\n {val}\n </Text.numeral>\n );\n },\n },\n {\n title: t(\"portfolio.overview.column.indexPrice\"),\n dataIndex: \"indexPrice\",\n align: \"left\",\n width: 140,\n render(val: number) {\n return (\n <Text.numeral rule=\"price\" dp={6} currency=\"$\" padding={false}>\n {val}\n </Text.numeral>\n );\n },\n },\n {\n title: t(\"portfolio.overview.column.assetValue\"),\n dataIndex: \"assetValue\",\n align: \"left\",\n width: 140,\n render(val: number) {\n return (\n <Text.assetValue rule=\"price\" dp={6} currency=\"$\" padding={false}>\n {val}\n </Text.assetValue>\n );\n },\n },\n {\n title: t(\"portfolio.overview.column.collateralRatio\"),\n dataIndex: \"collateralRatio\",\n align: \"left\",\n width: 140,\n render(val: number) {\n return (\n <Text.numeral dp={2} suffix=\"%\">\n {val * 100}\n </Text.numeral>\n );\n },\n },\n {\n title: t(\"transfer.deposit.collateralContribution\"),\n dataIndex: \"collateralContribution\",\n align: \"left\",\n width: 140,\n render(val: number) {\n return (\n <Text.collateral rule=\"price\" dp={6} currency=\"$\" padding={false}>\n {val}\n </Text.collateral>\n );\n },\n },\n {\n title: null,\n dataIndex: \"account_id\",\n align: \"center\",\n width: 180,\n render(id: string, record: EnhancedHolding) {\n const { token } = record;\n return (\n <Flex itemAlign=\"center\" justify=\"end\" gap={3}>\n {token !== \"USDC\" &&\n namespace !== ChainNamespace.solana &&\n typeof onConvert === \"function\" && (\n <Button\n size={\"sm\"}\n variant={\"outlined\"}\n color={\"secondary\"}\n onClick={() => onConvert?.(id, token)}\n >\n {t(\"transfer.convert\")}\n </Button>\n )}\n {typeof onTransfer === \"function\" && (\n <Button\n size={\"sm\"}\n variant={\"outlined\"}\n color={\"secondary\"}\n onClick={() => onTransfer?.(id, token)}\n >\n {t(\"common.transfer\")}\n </Button>\n )}\n </Flex>\n );\n },\n },\n ];\n }, [t, tokensInfo, onTransfer, onConvert, namespace]);\n return columns;\n};\n","import React from \"react\";\nimport { useAccount } from \"@kodiak-finance/orderly-hooks\";\nimport { DataTableClassNames, useScreen } from \"@kodiak-finance/orderly-ui\";\nimport { useAssetsScript } from \"./assets.script\";\nimport type { useAssetsScriptReturn } from \"./assets.script\";\nimport { AssetsDataTable, AssetsTable } from \"./assets.ui.desktop\";\nimport { AssetsTableMobile } from \"./assets.ui.mobile\";\n\nexport type AssetsWidgetProps = useAssetsScriptReturn;\n\nexport type AssetsDataTableWidgetProps = {\n classNames?: {\n root?: string;\n desc?: string;\n scrollRoot?: string;\n };\n tbClassName?: string;\n dataTableClassNames?: DataTableClassNames;\n};\n\nexport const AssetsDataTableWidget: React.FC<AssetsDataTableWidgetProps> = (\n props,\n) => {\n const assetsState = useAssetsScript();\n const accountState = useAccount();\n return <AssetsDataTable {...assetsState} {...accountState} {...props} />;\n};\n\nexport const AssetsWidget: React.FC = () => {\n const assetsState = useAssetsScript();\n const accountState = useAccount();\n const { isMobile } = useScreen();\n if (isMobile) {\n return <AssetsTableMobile {...assetsState} {...accountState} />;\n }\n return <AssetsTable {...assetsState} {...accountState} />;\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useMemo } from \"react\";\nimport { useWalletConnector } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { ChainNamespace } from \"@kodiak-finance/orderly-types\";\nimport {\n Button,\n cn,\n TokenIcon,\n Text,\n formatAddress,\n DataFilter,\n modal,\n Flex,\n EmptyDataState,\n} from \"@kodiak-finance/orderly-ui\";\nimport { SelectOption } from \"@kodiak-finance/orderly-ui/src/select/withOptions\";\nimport type { useAssetsScriptReturn } from \"./assets.script\";\nimport { AccountType } from \"./assets.ui.desktop\";\n\nconst AccountTag: React.FC<{ name: string }> = ({ name }) => {\n return (\n <div className=\"oui-mt-2 oui-flex oui-h-[18px] oui-w-fit oui-items-center oui-rounded oui-bg-base-contrast-6 oui-px-2 oui-text-2xs oui-font-semibold oui-text-base-contrast-36\">\n {name}\n </div>\n );\n};\n\ntype AssetMobileItemProps = {\n item: any;\n};\n\nconst AssetMobileItem: React.FC<AssetMobileItemProps> = (props) => {\n const { item } = props;\n const { t } = useTranslation();\n const { namespace } = useWalletConnector();\n return (\n <div className=\"oui-flex oui-flex-col oui-gap-2 oui-rounded-xl oui-bg-base-9 oui-p-2\">\n <Flex\n width={\"100%\"}\n justify={\"between\"}\n itemAlign={\"center\"}\n className=\"oui-gap-x-0.5\"\n >\n <Flex\n className=\"oui-w-1/3 oui-truncate\"\n itemAlign={\"start\"}\n direction={\"column\"}\n >\n <div className=\"oui-text-2xs oui-font-semibold oui-text-base-contrast-36\">\n {t(\"common.token\")}\n </div>\n <Flex\n gap={1}\n justify={\"start\"}\n itemAlign={\"center\"}\n className=\"oui-text-xs oui-font-semibold oui-text-base-contrast-80\"\n >\n <TokenIcon name={item.token} size=\"2xs\" />\n {item.token}\n </Flex>\n </Flex>\n <Flex\n className=\"oui-w-1/3 oui-truncate\"\n itemAlign={\"start\"}\n direction={\"column\"}\n >\n <div className=\"oui-text-2xs oui-font-semibold oui-text-base-contrast-36\">\n {t(\"common.qty\")}\n </div>\n <Text.numeral\n className=\"oui-truncate\"\n size=\"xs\"\n dp={6}\n padding={false}\n >\n {item.holding}\n </Text.numeral>\n </Flex>\n <Flex\n className=\"oui-w-1/3 oui-truncate\"\n itemAlign={\"start\"}\n direction={\"column\"}\n >\n <div className=\"oui-w-full oui-text-end oui-text-2xs oui-font-semibold oui-text-base-contrast-36\">\n {t(\"common.indexPrice\")}\n </div>\n <Flex\n gap={1}\n width={\"100%\"}\n justify={\"end\"}\n itemAlign={\"center\"}\n className=\"oui-text-end oui-font-semibold oui-text-base-contrast-80\"\n >\n <Text.numeral\n size=\"xs\"\n rule=\"price\"\n dp={6}\n currency=\"$\"\n padding={false}\n >\n {item.indexPrice}\n </Text.numeral>\n <div className=\"oui-text-end oui-text-2xs oui-text-base-contrast-36\">\n USDC\n </div>\n </Flex>\n </Flex>\n </Flex>\n <Flex\n width={\"100%\"}\n justify={\"between\"}\n itemAlign={\"center\"}\n className=\"oui-gap-x-0.5\"\n >\n <Flex\n className=\"oui-w-1/3 oui-truncate\"\n itemAlign={\"start\"}\n direction={\"column\"}\n >\n <div className=\"oui-text-2xs oui-font-semibold oui-text-base-contrast-36\">\n {t(\"portfolio.overview.column.assetValue\")}\n </div>\n <Text.assetValue\n size=\"xs\"\n intensity={80}\n className=\"oui-truncate oui-font-semibold\"\n rule=\"price\"\n dp={6}\n currency=\"$\"\n padding={false}\n >\n {item.assetValue}\n </Text.assetValue>\n </Flex>\n <Flex\n className=\"oui-w-1/3 oui-truncate\"\n itemAlign={\"start\"}\n direction={\"column\"}\n >\n <div className=\"oui-text-2xs oui-font-semibold oui-text-base-contrast-36\">\n {t(\"portfolio.overview.column.collateralRatio\")}\n </div>\n <Text.numeral size=\"xs\" dp={2} suffix=\"%\">\n {item.collateralRatio * 100}\n </Text.numeral>\n </Flex>\n <Flex\n className=\"oui-w-1/3 oui-truncate\"\n itemAlign={\"start\"}\n direction={\"column\"}\n >\n <div className=\"oui-w-full oui-text-end oui-text-2xs oui-font-semibold oui-text-base-contrast-36\">\n {t(\"transfer.deposit.collateralContribution\")}\n </div>\n <Flex\n gap={1}\n width={\"100%\"}\n justify={\"end\"}\n itemAlign={\"center\"}\n className=\"oui-text-end oui-font-semibold oui-text-base-contrast-80\"\n >\n <Text.collateral\n size=\"xs\"\n rule=\"price\"\n dp={6}\n currency=\"$\"\n padding={false}\n >\n {item.collateralContribution}\n </Text.collateral>\n <div className=\"oui-text-end oui-text-2xs oui-text-base-contrast-36\">\n USDC\n </div>\n </Flex>\n </Flex>\n </Flex>\n <Flex justify={\"between\"} itemAlign={\"center\"} gap={2}>\n {item.token !== \"USDC\" && namespace !== ChainNamespace.solana && (\n <Button\n fullWidth\n variant=\"outlined\"\n size=\"sm\"\n color=\"gray\"\n onClick={() => {\n modal.show(\"ConvertSheetId\", {\n accountId: item.account_id,\n token: item.token,\n });\n }}\n className={cn(\n \"oui-flex-1 oui-border-base-contrast-36 oui-text-base-contrast-54\",\n )}\n >\n {t(\"transfer.convert\")}\n </Button>\n )}\n <Button\n fullWidth\n variant=\"outlined\"\n size=\"sm\"\n color=\"gray\"\n onClick={() => {\n modal.show(\"TransferSheetId\", {\n accountId: item.account_id,\n token: item.token,\n });\n }}\n className={cn(\n \"oui-flex-1 oui-border-base-contrast-36 oui-text-base-contrast-54\",\n )}\n >\n {t(\"common.transfer\")}\n </Button>\n </Flex>\n </div>\n );\n};\n\nexport const AssetsTableMobile: React.FC<useAssetsScriptReturn> = (props) => {\n const { t } = useTranslation();\n\n const {\n assetsOptions,\n state,\n isMainAccount,\n dataSource,\n selectedAccount,\n selectedAsset,\n onFilter,\n } = props;\n\n const subAccounts = state.subAccounts ?? [];\n\n const ALL_ACCOUNTS: SelectOption = {\n label: t(\"common.allAccount\"),\n value: AccountType.ALL,\n };\n\n const MAIN_ACCOUNT: SelectOption = {\n label: t(\"common.mainAccount\"),\n value: AccountType.MAIN,\n };\n\n const ALL_ASSETS: SelectOption = {\n label: t(\"common.allAssets\"),\n value: \"all\",\n };\n\n const memoizedOptions = useMemo(() => {\n if (Array.isArray(subAccounts) && subAccounts.length) {\n return [\n ALL_ACCOUNTS,\n MAIN_ACCOUNT,\n ...subAccounts.map<SelectOption>((value) => ({\n value: value.id,\n label: value?.description || formatAddress(value?.id),\n })),\n ];\n }\n return [ALL_ACCOUNTS, MAIN_ACCOUNT];\n }, [subAccounts]);\n\n // Create asset options from holding data - optimized and consistent with desktop\n const memoizedAssets = useMemo(() => {\n return [ALL_ASSETS, ...assetsOptions];\n }, [assetsOptions]);\n\n if (!props.canTrade) {\n return (\n <Flex\n direction={\"column\"}\n height={\"100%\"}\n itemAlign={\"center\"}\n justify={\"center\"}\n mt={10}\n >\n <EmptyDataState />\n </Flex>\n );\n }\n\n return (\n <div className={cn(\"oui-flex oui-flex-col oui-gap-1 oui-px-1 oui-pb-4\")}>\n {isMainAccount && (\n <DataFilter\n onFilter={onFilter}\n className=\"oui-border-none oui-py-2\"\n items={[\n {\n size: \"sm\",\n type: \"picker\",\n name: \"account\",\n value: selectedAccount,\n options: memoizedOptions,\n },\n {\n size: \"sm\",\n type: \"picker\",\n name: \"asset\",\n value: selectedAsset,\n options: memoizedAssets,\n },\n ]}\n />\n )}\n <div className=\"oui-flex oui-flex-col oui-gap-1\">\n {dataSource?.map((assets, index) => {\n return (\n <React.Fragment key={`item-${index}`}>\n <AccountTag name={assets.description ?? \"sub account\"} />\n {Array.isArray(assets.children) &&\n assets.children.map((child) => (\n <AssetMobileItem\n item={child}\n key={`${child.token}-${child.account_id}`}\n />\n ))}\n </React.Fragment>\n );\n })}\n </div>\n </div>\n );\n};\n","import React from \"react\";\nimport { AssetsWidget } from \"./assetsPage/assets.widget\";\nimport type { AssetsWidgetProps } from \"./assetsPage/assets.widget\";\n\nexport type AssetsPageProps = AssetsWidgetProps;\n\nexport const AssetsPage: React.FC = () => {\n return <AssetsWidget />;\n};\n","export { HistoryPage } from \"./history.page\";\nexport { HistoryWidget } from \"./history.page\";\n","import React from \"react\";\nimport { HistoryDataGroupWidget } from \"../overview/historyDataGroup\";\n\nexport const HistoryWidget: React.FC = () => {\n return <HistoryDataGroupWidget />;\n};\n\nexport const HistoryPage: React.FC = () => {\n return <HistoryDataGroupWidget />;\n};\n","export { SymbolPerformancePage } from \"./page\";\nexport { SymbolPerformanceWidget } from \"./symbolPerformance.widget\";\nexport { SymbolPerformanceUI } from \"./symbolPerformance.ui\";\nexport { useSymbolPerformanceScript } from \"./symbolPerformance.script\";\nexport type {\n UseSymbolPerformanceScriptReturn,\n Timeframe,\n} from \"./symbolPerformance.script\";\n","import { useMemo } from \"react\";\nimport { addDays } from \"date-fns\";\nimport type { TradeData } from \"./useTrades\";\n\nexport interface SymbolPerformanceMetrics {\n totalPnL: number;\n grossPnL: number;\n totalVolume: number;\n totalFees: number;\n totalTrades: number;\n makerShare: number;\n // daily data\n dailyData: Array<{\n date: string;\n pnl: number;\n grossPnl: number;\n volume: number;\n fees: number;\n }>;\n cumulativeDailyPnL: Array<{ date: string; cumulativePnl: number }>;\n cumulativeDailyFees: Array<{ date: string; cumulativeFees: number }>;\n cumulativeDailyVolume: Array<{ date: string; cumulativeVolume: number }>;\n // hourly data\n hourlyData: Array<{\n date: string;\n pnl: number;\n grossPnl: number;\n fees: number;\n volume: number;\n }>;\n cumulativeHourlyPnL: Array<{ date: string; cumulativePnl: number }>;\n cumulativeHourlyFees: Array<{ date: string; cumulativeFees: number }>;\n cumulativeHourlyVolume: Array<{ date: string; cumulativeVolume: number }>;\n // 15-minute data\n fifteenMinuteData: Array<{\n date: string;\n pnl: number;\n grossPnl: number;\n fees: number;\n volume: number;\n }>;\n cumulativeFifteenMinutePnL: Array<{ date: string; cumulativePnl: number }>;\n cumulativeFifteenMinuteFees: Array<{ date: string; cumulativeFees: number }>;\n cumulativeFifteenMinuteVolume: Array<{\n date: string;\n cumulativeVolume: number;\n }>;\n}\n\n/**\n * Generic function to fill gaps in aggregated time-series data.\n * Ensures complete coverage of the date range with zero values for missing periods.\n *\n * @param dataMap - Map of aggregated data keyed by ISO datetime string\n * @param startDate - Start of the period\n * @param endDate - End of the period\n * @param incrementFn - Function to increment the current date\n * @param getKeyFn - Function to extract the key from current date\n * @returns Array of filled data points\n */\nconst fillTimeSeriesGaps = (\n dataMap: Map<\n string,\n { pnl: number; grossPnl: number; volume: number; fees: number }\n >,\n startDate: Date,\n endDate: Date,\n incrementFn: (date: Date) => void,\n getKeyFn: (date: Date) => string,\n) => {\n const filledData: Array<{\n date: string;\n pnl: number;\n grossPnl: number;\n volume: number;\n fees: number;\n }> = [];\n\n const current = new Date(startDate);\n current.setUTCHours(0, 0, 0, 0);\n\n while (current <= endDate) {\n const key = getKeyFn(current);\n const data = dataMap.get(key) || {\n pnl: 0,\n grossPnl: 0,\n volume: 0,\n fees: 0,\n };\n filledData.push({ date: key, ...data });\n incrementFn(current);\n }\n\n return filledData;\n};\n\n// Helper function to fill daily gaps\nconst fillDailyGaps = (\n dailyMap: Map<\n string,\n { pnl: number; grossPnl: number; volume: number; fees: number }\n >,\n startDate: Date,\n endDate: Date,\n) => {\n return fillTimeSeriesGaps(\n dailyMap,\n startDate,\n endDate,\n (date) => date.setUTCDate(date.getUTCDate() + 1),\n (date) => date.toISOString().split(\"T\")[0],\n );\n};\n\n// Helper function to fill hourly gaps\nconst fillHourlyGaps = (\n hourlyMap: Map<\n string,\n { pnl: number; grossPnl: number; volume: number; fees: number }\n >,\n startDate: Date,\n endDate: Date,\n) => {\n return fillTimeSeriesGaps(\n hourlyMap,\n startDate,\n endDate,\n (date) => date.setUTCHours(date.getUTCHours() + 1),\n (date) => date.toISOString(),\n );\n};\n\n// Helper function to fill 15-minute gaps\nconst fillFifteenMinuteGaps = (\n fifteenMinMap: Map<\n string,\n { pnl: number; grossPnl: number; volume: number; fees: number }\n >,\n startDate: Date,\n endDate: Date,\n) => {\n return fillTimeSeriesGaps(\n fifteenMinMap,\n startDate,\n endDate,\n (date) => date.setUTCMinutes(date.getUTCMinutes() + 15),\n (date) => date.toISOString(),\n );\n};\n\nexport const useSymbolPerformanceData = (\n tradesData: TradeData[] | null,\n periodStartDate?: Date,\n periodEndDate?: Date,\n): SymbolPerformanceMetrics | null => {\n return useMemo(() => {\n if (!tradesData || tradesData.length === 0) {\n return null;\n }\n\n // Process trades - realized_pnl from the API is gross (before fees)\n const tradesWithPnL = tradesData.map((trade) => {\n const volume = Math.abs(trade.executed_quantity * trade.executed_price);\n const fees = trade.fee || 0;\n const grossPnl = trade.realized_pnl || 0;\n const netPnl = grossPnl - fees;\n\n return {\n ...trade,\n pnl: netPnl,\n grossPnl,\n volume,\n fees,\n date: new Date(trade.executed_timestamp),\n };\n });\n\n // Calculate metrics\n const totalPnL = tradesWithPnL.reduce((sum, trade) => sum + trade.pnl, 0);\n const totalVolume = tradesWithPnL.reduce(\n (sum, trade) => sum + trade.volume,\n 0,\n );\n const totalFees = tradesWithPnL.reduce((sum, trade) => sum + trade.fees, 0);\n const totalTrades = tradesWithPnL.length;\n const grossPnL = tradesWithPnL.reduce(\n (sum, trade) => sum + trade.grossPnl,\n 0,\n );\n\n // Use provided period dates or fall back to trade dates\n const sortedByDate = [...tradesWithPnL].sort(\n (a, b) => a.date.getTime() - b.date.getTime(),\n );\n const startDate = periodStartDate || sortedByDate[0].date;\n const endDate = periodEndDate || sortedByDate[sortedByDate.length - 1].date;\n\n // Calculate maker volume share\n const makerVolume = tradesData\n .filter((trade) => trade.is_maker === 1)\n .reduce(\n (sum, trade) =>\n sum + Math.abs(trade.executed_quantity * trade.executed_price),\n 0,\n );\n const makerShare = totalVolume > 0 ? (makerVolume / totalVolume) * 100 : 0;\n\n // Group by day for daily PnL, Volume, and Fees\n const dailyPnLMap = new Map<\n string,\n { pnl: number; grossPnl: number; volume: number; fees: number }\n >();\n tradesWithPnL.forEach((trade) => {\n const dateKey = trade.date.toISOString().split(\"T\")[0];\n const existing = dailyPnLMap.get(dateKey) || {\n pnl: 0,\n grossPnl: 0,\n volume: 0,\n fees: 0,\n };\n dailyPnLMap.set(dateKey, {\n pnl: existing.pnl + trade.pnl,\n grossPnl: existing.grossPnl + trade.grossPnl,\n volume: existing.volume + trade.volume,\n fees: existing.fees + trade.fees,\n });\n });\n\n // Fill gaps in daily data\n const dailyData = fillDailyGaps(dailyPnLMap, startDate, endDate);\n\n // Group by hour for hourly PnL and Fees\n const hourlyDataMap = new Map<\n string,\n { pnl: number; grossPnl: number; fees: number; volume: number }\n >();\n tradesWithPnL.forEach((trade) => {\n // Format: YYYY-MM-DDTHH:00:00.000Z\n // setMinutes(0, 0, 0) normalizes minutes, seconds, and milliseconds to 0\n // This ensures all trades within the same hour share the same key regardless of seconds/milliseconds\n const date = new Date(trade.date);\n date.setUTCMinutes(0, 0, 0);\n const hourKey = date.toISOString();\n const existing = hourlyDataMap.get(hourKey) || {\n pnl: 0,\n grossPnl: 0,\n fees: 0,\n volume: 0,\n };\n hourlyDataMap.set(hourKey, {\n pnl: existing.pnl + trade.pnl,\n grossPnl: existing.grossPnl + trade.grossPnl,\n fees: existing.fees + trade.fees,\n volume: existing.volume + trade.volume,\n });\n });\n\n // Check if this is a single-day selection\n const isSingleDay = startDate.getTime() === endDate.getTime();\n\n // Calculate the next calendar day start time (00:00 UTC of the next day)\n const nextDayDate = addDays(startDate, 1);\n const nextDayStartTime = new Date(\n nextDayDate.getUTCFullYear(),\n nextDayDate.getUTCMonth(),\n nextDayDate.getUTCDate(),\n 0,\n 0,\n 0,\n 0,\n ).getTime();\n\n // For single-day: create buckets that span the full calendar day\n // For multi-day: use the provided date range as-is\n const bucketEndDate = isSingleDay ? addDays(startDate, 1) : endDate;\n\n // Fill gaps in hourly data\n let hourlyData = fillHourlyGaps(hourlyDataMap, startDate, bucketEndDate);\n // For single-day selections only, remove any entries from the next day\n if (isSingleDay) {\n hourlyData = hourlyData.filter(\n (item) => new Date(item.date).getTime() < nextDayStartTime,\n );\n }\n\n // Group by 15 minutes for 15-minute PnL, Fees, and Volume\n const fifteenMinuteDataMap = new Map<\n string,\n { pnl: number; grossPnl: number; fees: number; volume: number }\n >();\n tradesWithPnL.forEach((trade) => {\n const date = new Date(trade.date);\n // Round down to the nearest 15-minute interval (0, 15, 30, 45)\n const minutes = date.getUTCMinutes();\n const roundedMinutes = Math.floor(minutes / 15) * 15;\n // setMinutes(roundedMinutes, 0, 0) normalizes seconds and milliseconds to 0\n // This ensures all trades within the same 15-minute window share the same key regardless of seconds/milliseconds\n date.setUTCMinutes(roundedMinutes, 0, 0);\n const fifteenMinKey = date.toISOString();\n const existing = fifteenMinuteDataMap.get(fifteenMinKey) || {\n pnl: 0,\n grossPnl: 0,\n fees: 0,\n volume: 0,\n };\n fifteenMinuteDataMap.set(fifteenMinKey, {\n pnl: existing.pnl + trade.pnl,\n grossPnl: existing.grossPnl + trade.grossPnl,\n fees: existing.fees + trade.fees,\n volume: existing.volume + trade.volume,\n });\n });\n\n // Fill gaps in 15-minute data\n let fifteenMinuteData = fillFifteenMinuteGaps(\n fifteenMinuteDataMap,\n startDate,\n bucketEndDate,\n );\n // For single-day selections only, remove any entries from the next day\n if (isSingleDay) {\n fifteenMinuteData = fifteenMinuteData.filter(\n (item) => new Date(item.date).getTime() < nextDayStartTime,\n );\n }\n\n // Calculate cumulative PnL\n let _pnl = 0;\n const cumulativeDailyPnL = dailyData.map((day) => {\n _pnl += day.pnl;\n return {\n date: day.date,\n cumulativePnl: _pnl,\n };\n });\n\n let _fees = 0;\n const cumulativeDailyFees = dailyData.map((day) => {\n _fees += day.fees;\n return {\n date: day.date,\n cumulativeFees: _fees,\n };\n });\n let _volume = 0;\n const cumulativeDailyVolume = dailyData.map((day) => {\n _volume += day.volume;\n return {\n date: day.date,\n cumulativeVolume: _volume,\n };\n });\n _pnl = 0;\n const cumulativeHourlyPnL = hourlyData.map((hour) => {\n _pnl += hour.pnl;\n return {\n date: hour.date,\n cumulativePnl: _pnl,\n };\n });\n _fees = 0;\n const cumulativeHourlyFees = hourlyData.map((hour) => {\n _fees += hour.fees;\n return {\n date: hour.date,\n cumulativeFees: _fees,\n };\n });\n _volume = 0;\n const cumulativeHourlyVolume = hourlyData.map((hour) => {\n _volume += hour.volume;\n return {\n date: hour.date,\n cumulativeVolume: _volume,\n };\n });\n\n // Calculate cumulative 15-minute data\n _pnl = 0;\n const cumulativeFifteenMinutePnL = fifteenMinuteData.map((fifteenMin) => {\n _pnl += fifteenMin.pnl;\n return {\n date: fifteenMin.date,\n cumulativePnl: _pnl,\n };\n });\n\n _fees = 0;\n const cumulativeFifteenMinuteFees = fifteenMinuteData.map((fifteenMin) => {\n _fees += fifteenMin.fees;\n return {\n date: fifteenMin.date,\n cumulativeFees: _fees,\n };\n });\n\n _volume = 0;\n const cumulativeFifteenMinuteVolume = fifteenMinuteData.map(\n (fifteenMin) => {\n _volume += fifteenMin.volume;\n return {\n date: fifteenMin.date,\n cumulativeVolume: _volume,\n };\n },\n );\n\n return {\n totalPnL,\n grossPnL,\n totalVolume,\n totalFees,\n totalTrades,\n makerShare,\n\n // daily data\n dailyData,\n cumulativeDailyPnL,\n cumulativeDailyFees,\n cumulativeDailyVolume,\n\n // hourly data\n hourlyData,\n cumulativeHourlyPnL,\n cumulativeHourlyFees,\n cumulativeHourlyVolume,\n\n // 15-minute data\n fifteenMinuteData,\n cumulativeFifteenMinutePnL,\n cumulativeFifteenMinuteFees,\n cumulativeFifteenMinuteVolume,\n };\n }, [tradesData, periodStartDate, periodEndDate]);\n};\n","import { useMemo, useEffect, useRef } from \"react\";\nimport { usePrivateInfiniteQuery } from \"@kodiak-finance/orderly-hooks\";\n\nexport interface TradeData {\n id: number;\n symbol: string;\n fee: number;\n fee_asset: string;\n side: \"BUY\" | \"SELL\";\n order_id: number;\n executed_price: number;\n executed_quantity: number;\n executed_timestamp: number;\n is_maker: number;\n realized_pnl: number;\n match_id: string;\n}\n\nexport interface TradesResponse {\n rows: TradeData[];\n meta: {\n total: number;\n records_per_page: number;\n current_page: number;\n };\n}\n\nexport const useTrades = (params: {\n symbol?: string;\n start_t?: number;\n end_t?: number;\n size?: number;\n}) => {\n const { symbol, start_t, end_t, size = 500 } = params;\n\n const getKey = useMemo(() => {\n return (pageIndex: number, previousPageData: any): string | null => {\n if (previousPageData) {\n // Use meta.total from API to determine if there's more data to fetch\n const total = previousPageData.meta?.total ?? 0;\n const alreadyFetched = pageIndex * size;\n\n // Stop if we've already fetched all available trades according to the API\n if (alreadyFetched >= total) {\n return null;\n }\n\n // Fallback: stop if current page has fewer items than requested\n if (previousPageData.rows.length < size) {\n return null;\n }\n }\n\n const search = new URLSearchParams();\n search.set(\"size\", size.toString());\n search.set(\"page\", `${pageIndex + 1}`);\n if (symbol) {\n search.set(\"symbol\", symbol);\n }\n if (start_t) {\n search.set(\"start_t\", start_t.toString());\n }\n if (end_t) {\n search.set(\"end_t\", end_t.toString());\n }\n const url = `/v1/trades?${search.toString()}`;\n return url;\n };\n }, [symbol, start_t, end_t, size]);\n\n const result = usePrivateInfiniteQuery<TradesResponse>(getKey, {\n formatter: (data) => data,\n revalidateOnFocus: true,\n keepPreviousData: true,\n });\n\n const timeoutRef = useRef<NodeJS.Timeout>();\n\n // Auto-fetch all pages with rate limiting (10 requests per 1 second = 100ms minimum between requests)\n useEffect(() => {\n if (!result.data) return;\n\n const lastPage = result.data[result.data.length - 1];\n\n // Check if there's more data to fetch (when last page has full size)\n if (lastPage && lastPage.rows.length === size) {\n // Capture next page size before scheduling to avoid stale closure\n const nextPageSize = result.data.length + 1;\n\n // Schedule next fetch with 100ms delay to respect rate limit\n timeoutRef.current = setTimeout(() => {\n result.setSize(nextPageSize);\n }, 100);\n }\n\n return () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n };\n }, [result.data, size]);\n\n // Clear pending pagination fetch when filters change to prevent mixed data states\n useEffect(() => {\n return () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n };\n }, [symbol, start_t, end_t]);\n\n // Flatten all trades from paginated response\n const trades = useMemo(() => {\n if (!result.data) return [];\n return result.data\n .map((page) => page.rows)\n .flat()\n .filter((trade): trade is TradeData => trade !== undefined);\n }, [result.data]);\n\n return {\n trades,\n isLoading: result.isLoading,\n error: result.error,\n mutate: result.mutate,\n };\n};\n","import { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { differenceInDays, subDays, format } from \"date-fns\";\nimport { useAccount } from \"@kodiak-finance/orderly-hooks\";\nimport { useAppContext } from \"@kodiak-finance/orderly-react-app\";\nimport { AccountStatusEnum } from \"@kodiak-finance/orderly-types\";\nimport { useSymbolPerformanceData } from \"./useSymbolPerformanceData\";\nimport { useTrades } from \"./useTrades\";\n\nexport enum PeriodType {\n DAY = \"1D\",\n WEEK = \"7D\",\n MONTH = \"30D\",\n QUARTER = \"90D\",\n}\n\nexport enum AggregationWindow {\n FIFTEEN_MIN = \"15m\",\n HOURLY = \"1h\",\n DAILY = \"1d\",\n}\n\nexport type Timeframe = \"1D\" | \"7D\" | \"30D\" | \"90D\" | \"ALL\";\n\n/**\n * Number of days in each preset period.\n * DAY = 2 means \"today and yesterday\" (inclusive range)\n */\nconst PRESET_DAYS = {\n [PeriodType.DAY]: 2,\n [PeriodType.WEEK]: 7,\n [PeriodType.MONTH]: 30,\n [PeriodType.QUARTER]: 90,\n} as const;\n\nconst getDateRange = (period: PeriodType | number, today: Date) => {\n const offsetDay = typeof period === \"number\" ? period : PRESET_DAYS[period];\n return {\n from: subDays(today, offsetDay - 1),\n to: today,\n };\n};\n\nconst formatDateRange = (date?: Date) => {\n if (typeof date === \"undefined\") return undefined;\n return format(date, \"yyyy-MM-dd\");\n};\n\nconst getUtcStartOfDay = (date: Date): Date => {\n return new Date(\n Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()),\n );\n};\n\nconst getUtcEndOfDay = (date: Date): Date => {\n return new Date(\n Date.UTC(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n 23,\n 59,\n 59,\n 999,\n ),\n );\n};\n\nexport const useSymbolPerformanceScript = (symbol?: string) => {\n const { wrongNetwork, disabledConnect } = useAppContext();\n const { state } = useAccount();\n const [selectedSymbol, setSelectedSymbol] = useState<string>(\n symbol || \"ALL_SYMBOLS\",\n );\n const [aggregationWindow, setAggregationWindow] = useState<AggregationWindow>(\n AggregationWindow.DAILY,\n );\n const [isNetPnL, setIsNetPnL] = useState(false); // Toggle: Net P&L (fees deducted) vs Gross P&L (default)\n const [today] = useState(() => new Date());\n const [period, setPeriod] = useState<PeriodType | null>(PeriodType.WEEK);\n\n const [dateRange, setDateRange] = useState<{ from: Date; to: Date }>(() => {\n const range = getDateRange(PeriodType.WEEK, today);\n return {\n from: range.from,\n to: range.to,\n };\n });\n\n const onPeriodChange = (value: PeriodType) => {\n const newRange = getDateRange(value, today);\n setPeriod(value);\n setDateRange({\n from: newRange.from,\n to: newRange.to,\n });\n };\n\n const onFilter = (filter: { name: string; value: any }) => {\n if (filter.name === \"dateRange\") {\n const newDateRange = filter.value;\n\n setDateRange(newDateRange);\n\n if (newDateRange.from && newDateRange.to) {\n const offsetDay =\n Math.abs(differenceInDays(newDateRange.from, newDateRange.to)) + 1;\n\n const range = getDateRange(offsetDay, today);\n\n if (\n formatDateRange(range.from) === formatDateRange(newDateRange.from) &&\n formatDateRange(range.to) === formatDateRange(newDateRange.to)\n ) {\n setPeriod(\n (Object.keys(PRESET_DAYS) as PeriodType[]).find(\n (key) => PRESET_DAYS[key] === offsetDay,\n ) || null,\n );\n } else {\n setPeriod(null);\n }\n }\n }\n };\n\n const startDate = dateRange.from;\n const endDate = dateRange.to;\n\n const startDateForAPI = useMemo(() => {\n if (!startDate) return startDate;\n return getUtcStartOfDay(startDate);\n }, [startDate]);\n\n // Query full UTC day for the selected local end date.\n const endDateForAPI = useMemo(() => {\n if (!endDate) return endDate;\n return getUtcEndOfDay(endDate);\n }, [endDate]);\n\n const filterItems = useMemo(() => {\n return [\n {\n type: \"range\" as const,\n name: \"dateRange\",\n value: dateRange,\n max: 90,\n },\n ];\n }, [dateRange]);\n\n const { trades, isLoading, error } = useTrades({\n symbol: selectedSymbol === \"ALL_SYMBOLS\" ? undefined : selectedSymbol,\n start_t: startDateForAPI ? startDateForAPI.getTime() : undefined,\n end_t: endDateForAPI ? endDateForAPI.getTime() : undefined,\n });\n\n // Always calculate net performance (fees applied) for stats.\n // The net/gross toggle only affects chart visualization, not stats.\n // Use endDateForAPI to ensure all fetched trades are included in aggregation\n const performanceData = useSymbolPerformanceData(\n trades,\n startDateForAPI,\n endDateForAPI,\n );\n\n const invisible =\n wrongNetwork ||\n disabledConnect ||\n (state.status < AccountStatusEnum.EnableTrading &&\n state.status !== AccountStatusEnum.EnableTradingWithoutConnected);\n\n const periodTypes = Object.values(PeriodType);\n const aggregationWindowTypes = Object.values(AggregationWindow);\n\n const getAggregatedData = () => {\n if (!performanceData) return null;\n\n let result;\n switch (aggregationWindow) {\n case AggregationWindow.FIFTEEN_MIN:\n result = {\n periodData: performanceData.fifteenMinuteData,\n cumulativePnL: performanceData.cumulativeFifteenMinutePnL,\n cumulativeFees: performanceData.cumulativeFifteenMinuteFees,\n cumulativeVolume: performanceData.cumulativeFifteenMinuteVolume,\n };\n break;\n case AggregationWindow.HOURLY:\n result = {\n periodData: performanceData.hourlyData,\n cumulativePnL: performanceData.cumulativeHourlyPnL,\n cumulativeFees: performanceData.cumulativeHourlyFees,\n cumulativeVolume: performanceData.cumulativeHourlyVolume,\n };\n break;\n case AggregationWindow.DAILY:\n default:\n result = {\n periodData: performanceData.dailyData,\n cumulativePnL: performanceData.cumulativeDailyPnL,\n cumulativeFees: performanceData.cumulativeDailyFees,\n cumulativeVolume: performanceData.cumulativeDailyVolume,\n };\n }\n\n return result;\n };\n\n return {\n selectedSymbol,\n setSelectedSymbol,\n period,\n onPeriodChange,\n periodTypes,\n aggregationWindow,\n setAggregationWindow,\n aggregationWindowTypes,\n isNetPnL,\n setIsNetPnL,\n dateRange,\n filterItems,\n onFilter,\n trades,\n isLoading,\n error,\n performanceData,\n aggregatedData: getAggregatedData(),\n invisible,\n };\n};\n\nexport type UseSymbolPerformanceScriptReturn = ReturnType<\n typeof useSymbolPerformanceScript\n>;\n","import { format, parseISO } from \"date-fns\";\nimport { AggregationWindow } from \"./symbolPerformance.script\";\n\n/**\n * Get human-readable label for aggregation window type.\n *\n * @param window - Aggregation window (daily, hourly, 15-min)\n * @returns Display label (e.g., \"Daily\", \"Hourly\", \"15 min\")\n */\nexport const getAggregationLabel = (window: AggregationWindow): string => {\n switch (window) {\n case AggregationWindow.FIFTEEN_MIN:\n return \"15 min\";\n case AggregationWindow.HOURLY:\n return \"Hourly\";\n case AggregationWindow.DAILY:\n return \"Daily\";\n default:\n return \"Daily\";\n }\n};\n\n/**\n * Format a date string for display on charts based on aggregation window.\n * Handles different precision levels for different time intervals.\n *\n * @param dateString - ISO datetime string\n * @param window - Aggregation window (daily, hourly, 15-min)\n * @returns Human-readable formatted date string\n */\nexport const formatDateForChart = (\n dateString: string,\n window: AggregationWindow,\n): string => {\n try {\n const date = parseISO(dateString);\n\n switch (window) {\n case AggregationWindow.FIFTEEN_MIN:\n case AggregationWindow.HOURLY:\n // Show time for hourly/15-min: \"Nov 21, 3:00 AM\"\n return format(date, \"MMM d, h:mm a\");\n case AggregationWindow.DAILY:\n default:\n // Show date only for daily: \"Nov 21\"\n return format(date, \"MMM d\");\n }\n } catch {\n // Fallback if parsing fails\n return dateString;\n }\n};\n\n/**\n * Format a date string to \"yyyy-MM-dd\" format.\n * Used for API calls and date range display.\n *\n * @param dateString - ISO datetime string\n * @returns Date in \"yyyy-MM-dd\" format\n */\nexport const formatDateOnly = (dateString: string): string => {\n try {\n const date = parseISO(dateString);\n return format(date, \"yyyy-MM-dd\");\n } catch {\n return dateString;\n }\n};\n","import React, { useMemo } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { Text, cn } from \"@kodiak-finance/orderly-ui\";\n\nexport type PnLRankingDataItem = {\n symbol: string;\n pnl: number;\n volume: number;\n fees: number;\n};\n\ntype PnLRankingChartProps = {\n data: PnLRankingDataItem[];\n onSymbolSelect?: (symbol: string) => void;\n};\n\nconst formatCurrency = (value: number): string => {\n if (value >= 1e9) return `$${(value / 1e9).toFixed(2)}B`;\n if (value >= 1e6) return `$${(value / 1e6).toFixed(2)}M`;\n if (value >= 1e3) return `$${(value / 1e3).toFixed(2)}K`;\n return `$${value.toFixed(2)}`;\n};\n\nexport const PnLRankingChart: React.FC<PnLRankingChartProps> = ({\n data,\n onSymbolSelect,\n}) => {\n const { t } = useTranslation();\n\n const maxAbsValue = useMemo(\n () => Math.max(...data.map((item) => Math.abs(item.pnl)), 1),\n [data],\n );\n\n return (\n <div className=\"oui-w-full\">\n {/* Header Row */}\n <div className=\"oui-grid oui-gap-4 oui-border-b oui-border-line-4 oui-mb-2 oui-px-4 oui-py-3\">\n <div className=\"oui-grid oui-grid-cols-12 oui-gap-4 oui-items-center\">\n <div className=\"oui-col-span-2\">\n <Text size=\"sm\" intensity={54} weight=\"semibold\">\n {t(\"portfolio.symbolPerformance.pnlRanking.symbols\")}\n </Text>\n </div>\n <div className=\"oui-col-span-6\">\n <Text size=\"sm\" intensity={54} weight=\"semibold\">\n {t(\"portfolio.symbolPerformance.pnlRanking.pnl\")}\n </Text>\n </div>\n <div className=\"oui-col-span-2 oui-text-right\">\n <Text size=\"sm\" intensity={54} weight=\"semibold\">\n {t(\"portfolio.symbolPerformance.pnlRanking.volume\")}\n </Text>\n </div>\n <div className=\"oui-col-span-2 oui-text-right\">\n <Text size=\"sm\" intensity={54} weight=\"semibold\">\n {t(\"portfolio.symbolPerformance.pnlRanking.fees\")}\n </Text>\n </div>\n </div>\n </div>\n\n {/* Data Rows */}\n <div className=\"oui-space-y-3\">\n {data.map((item) => {\n const isPositive = item.pnl >= 0;\n const barWidth = (Math.abs(item.pnl) / maxAbsValue) * 100;\n\n return (\n <div\n key={item.symbol}\n onClick={() => onSymbolSelect?.(item.symbol)}\n className=\"oui-border oui-border-line-4 hover:oui-border-line-5 oui-rounded-md oui-transition-colors oui-px-4 oui-py-3 oui-cursor-pointer\"\n >\n <div className=\"oui-grid oui-grid-cols-12 oui-gap-4 oui-items-center\">\n {/* Symbol Column */}\n <div className=\"oui-col-span-2\">\n <Text size=\"sm\" weight=\"semibold\" className=\"oui-truncate\">\n {item.symbol}\n </Text>\n </div>\n\n {/* P&L Column with Inline Bar Chart */}\n <div className=\"oui-col-span-6\">\n <div className=\"oui-relative oui-w-full oui-h-8 oui-rounded oui-bg-base-8 oui-overflow-hidden oui-flex oui-items-center\">\n <div\n className=\"oui-absolute oui-h-full oui-rounded oui-transition-all\"\n style={{\n width: `${barWidth}%`,\n backgroundColor: isPositive ? \"#00B49E\" : \"#FF5959\",\n }}\n />\n <Text\n size=\"sm\"\n weight=\"semibold\"\n className={cn(\n \"oui-relative oui-z-10 oui-ml-2\",\n isPositive\n ? \"oui-text-profit-500\"\n : \"oui-text-loss-500\",\n )}\n >\n {isPositive ? \"+\" : \"\"}\n {item.pnl.toFixed(2)}\n </Text>\n </div>\n </div>\n\n {/* Volume Column */}\n <div className=\"oui-col-span-2 oui-text-right\">\n <Text size=\"sm\" weight=\"semibold\">\n {formatCurrency(item.volume)}\n </Text>\n </div>\n\n {/* Fees Column */}\n <div className=\"oui-col-span-2 oui-text-right\">\n <Text size=\"sm\" weight=\"semibold\" intensity={80}>\n {formatCurrency(item.fees)}\n </Text>\n </div>\n </div>\n </div>\n );\n })}\n </div>\n\n {/* Empty State */}\n {data.length === 0 && (\n <div className=\"oui-flex oui-items-center oui-justify-center oui-py-8\">\n <Text intensity={54}>{t(\"portfolio.symbolPerformance.noData\")}</Text>\n </div>\n )}\n </div>\n );\n};\n","import React, { useMemo, useState } from \"react\";\nimport {\n DropdownMenuRoot,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuPortal,\n Flex,\n Text,\n TokenIcon,\n Input,\n cn,\n CaretDownIcon,\n CaretUpIcon,\n} from \"@kodiak-finance/orderly-ui\";\n\nexport interface SymbolOption {\n value: string;\n label: string;\n}\n\nexport interface SymbolSelectorProps {\n value: string;\n onValueChange: (value: string) => void;\n options: SymbolOption[];\n placeholder?: string;\n}\n\nexport const SymbolSelector: React.FC<SymbolSelectorProps> = ({\n value,\n onValueChange,\n options,\n placeholder = \"Select symbol\",\n}) => {\n const [open, setOpen] = useState(false);\n const [search, setSearch] = useState(\"\");\n\n const filteredOptions = useMemo(() => {\n if (!search) return options;\n return options.filter(\n (opt) =>\n opt.label.toLowerCase().includes(search.toLowerCase()) ||\n opt.value.toLowerCase().includes(search.toLowerCase()),\n );\n }, [search, options]);\n\n const selectedOption = options.find((opt) => opt.value === value);\n const displayLabel =\n value === \"ALL_SYMBOLS\"\n ? \"All Symbols\"\n : selectedOption?.label || placeholder;\n const isAllSymbols = value === \"ALL_SYMBOLS\";\n\n return (\n <DropdownMenuRoot open={open} onOpenChange={setOpen}>\n <DropdownMenuTrigger asChild>\n <button className=\"oui-w-full oui-px-3 oui-py-2 oui-rounded oui-border oui-border-line-6 oui-bg-line-4 oui-text-left oui-flex oui-items-center oui-justify-between hover:oui-bg-line-5\">\n <Flex gap={1} itemAlign=\"center\">\n {!isAllSymbols && displayLabel !== placeholder && (\n <TokenIcon name={displayLabel} size=\"2xs\" />\n )}\n <Text size=\"xs\" className=\"oui-text-base-contrast-80\">\n {displayLabel}\n </Text>\n </Flex>\n\n <CaretDownIcon\n size={12}\n className={cn(\n \"oui-text-base-contrast-54 oui-transition-transform\",\n open && \"oui-rotate-180\",\n )}\n />\n </button>\n </DropdownMenuTrigger>\n <DropdownMenuPortal>\n <DropdownMenuContent\n align=\"start\"\n side=\"bottom\"\n sideOffset={4}\n className=\"oui-w-[var(--radix-dropdown-menu-trigger-width)] oui-bg-base-8 oui-border oui-border-line-6 oui-rounded oui-p-2 oui-z-50\"\n onCloseAutoFocus={(e) => e.preventDefault()}\n >\n {/* Search Input */}\n <div className=\"oui-px-2 oui-py-2 oui-border-b oui-border-base-4 oui-mb-2\">\n <Input\n autoFocus\n placeholder=\"Search symbols...\"\n value={search}\n onValueChange={setSearch}\n size=\"sm\"\n />\n </div>\n\n {/* Options List */}\n <div className=\"oui-max-h-[300px] oui-overflow-y-auto\">\n {filteredOptions.length === 0 ? (\n <div className=\"oui-px-3 oui-py-2 oui-text-center oui-text-base-contrast-54 oui-text-xs\">\n No symbols found\n </div>\n ) : (\n filteredOptions.map((option) => {\n const isSelected = value === option.value;\n const cleanLabel =\n option.value === \"ALL_SYMBOLS\" ? \"All Symbols\" : option.label;\n\n return (\n <button\n key={option.value}\n onClick={() => {\n onValueChange(option.value);\n setOpen(false);\n setSearch(\"\");\n }}\n className={cn(\n \"oui-w-full oui-px-3 oui-py-2 oui-rounded oui-flex oui-items-center oui-gap-2 oui-text-left oui-transition-colors\",\n isSelected ? \"oui-bg-base-7\" : \"hover:oui-bg-base-7\",\n )}\n >\n {option.value !== \"ALL_SYMBOLS\" && (\n <TokenIcon name={cleanLabel} size=\"2xs\" />\n )}\n <Text size=\"xs\" className=\"oui-text-base-contrast-80\">\n {cleanLabel}\n </Text>\n </button>\n );\n })\n )}\n </div>\n </DropdownMenuContent>\n </DropdownMenuPortal>\n </DropdownMenuRoot>\n );\n};\n","import { useMemo } from \"react\";\nimport { useSWR } from \"@kodiak-finance/orderly-hooks\";\n\nexport interface KlineData {\n symbol: string;\n resolution: string;\n timestamp: number;\n open: number;\n high: number;\n low: number;\n close: number;\n volume: number;\n}\n\ninterface KlineResponse {\n s: string; // status: \"ok\"\n o: number[]; // open\n h: number[]; // high\n l: number[]; // low\n c: number[]; // close\n v: number[]; // volume\n a: number[]; // notional\n t: number[]; // timestamps\n}\n\nconst fetcher = (url: string) =>\n fetch(`https://api.orderly.org${url}`).then((res) => res.json());\n\nexport const useKlineData = (params: {\n symbol?: string;\n resolution?: \"15m\" | \"1h\" | \"1d\";\n from?: number;\n to?: number;\n limit?: number;\n}) => {\n const { symbol, resolution, from, to, limit = 1000 } = params;\n\n const getKey = useMemo(() => {\n if (!symbol || !resolution) return null;\n\n // Calculate default from/to timestamps\n const now = Math.floor(Date.now() / 1000);\n\n // Use provided from/to timestamps, or calculate defaults\n let fromTimestamp = from;\n const toTimestamp = to || now;\n\n if (!fromTimestamp) {\n // If no from is provided, calculate based on resolution and limit\n const secondsPerCandle = {\n \"15m\": 900,\n \"1h\": 3600,\n \"1d\": 86400,\n }[resolution];\n\n fromTimestamp = now - limit * secondsPerCandle;\n }\n\n const search = new URLSearchParams();\n search.set(\"symbol\", symbol);\n search.set(\"resolution\", resolution);\n search.set(\"from\", fromTimestamp.toString());\n search.set(\"to\", toTimestamp.toString());\n\n return `/v1/tv/kline_history?${search.toString()}`;\n }, [symbol, resolution, from, to, limit]);\n\n const { data, isLoading, error } = useSWR<KlineResponse>(getKey, fetcher, {\n revalidateOnFocus: false,\n dedupingInterval: 60000, // Cache for 1 minute\n });\n\n // Transform API response to usable format\n const klines = useMemo(() => {\n if (!data?.t || !Array.isArray(data.t)) return [];\n\n const { o, h, l, c, v, t } = data as KlineResponse;\n\n return t.map((timestamp, index) => ({\n symbol: symbol || \"\",\n resolution: resolution || \"\",\n timestamp,\n open: o[index],\n high: h[index],\n low: l[index],\n close: c[index],\n volume: v[index],\n }));\n }, [data, symbol, resolution]);\n\n return {\n klines,\n isLoading,\n error,\n };\n};\n","import React, { useMemo, useState } from \"react\";\nimport { endOfDay } from \"date-fns\";\nimport {\n CombinedPnLChart,\n CombinedVolumeChart,\n CombinedFeesChart,\n CombinedPriceChart,\n AssetAreaChart,\n} from \"@kodiak-finance/orderly-chart\";\nimport { useSymbolsInfo } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n Card,\n Grid,\n Box,\n Statistic,\n Text,\n Divider,\n Flex,\n Select,\n Switch,\n cn,\n DataTable,\n type Column,\n} from \"@kodiak-finance/orderly-ui\";\nimport { formatDateForChart, getAggregationLabel } from \"./dateUtils\";\nimport { PnLRankingChart } from \"./pnlRankingChart\";\nimport type { UseSymbolPerformanceScriptReturn } from \"./symbolPerformance.script\";\nimport { AggregationWindow } from \"./symbolPerformance.script\";\nimport { SymbolSelector } from \"./symbolSelector\";\nimport { useKlineData } from \"./useKlineData\";\nimport type { TradeData } from \"./useTrades\";\n\nconst LazyPeriodTitle = React.lazy(() =>\n import(\"../overview/shared/periodHeader\").then((mod) => {\n return { default: mod.PeriodTitle };\n }),\n);\n\nexport type SymbolPerformanceUIProps = UseSymbolPerformanceScriptReturn;\n\nconst MakerTakerShare: React.FC<{ makerShare: number }> = ({ makerShare }) => {\n const takerShare = 100 - makerShare;\n return (\n <div className=\"oui-flex oui-items-center oui-justify-center oui-gap-4\">\n <Text weight=\"semibold\">{makerShare.toFixed(1)}%</Text>\n <span className=\"oui-text-base-contrast-54\">/</span>\n <Text weight=\"semibold\">{takerShare.toFixed(1)}%</Text>\n </div>\n );\n};\n\nenum ViewType {\n chart = \"chart\",\n table = \"table\",\n}\n\ntype PerformanceTableRow = {\n date: string;\n pnl: number;\n grossPnl: number;\n volume: number;\n fees: number;\n};\n\nexport const SymbolPerformanceUI: React.FC<SymbolPerformanceUIProps> = (\n props,\n) => {\n const {\n selectedSymbol,\n setSelectedSymbol,\n period,\n onPeriodChange,\n periodTypes,\n performanceData,\n filterItems,\n onFilter,\n aggregationWindow,\n setAggregationWindow,\n aggregationWindowTypes,\n aggregatedData,\n trades,\n dateRange,\n isNetPnL,\n setIsNetPnL,\n } = props;\n const { t } = useTranslation();\n const symbolsInfo = useSymbolsInfo();\n const [viewType, setViewType] = useState<ViewType>(ViewType.chart);\n const [showCumulativePnL, setShowCumulativePnL] = useState(true);\n const [showCumulativeVolume, setShowCumulativeVolume] = useState(false);\n const [showCumulativeFees, setShowCumulativeFees] = useState(false);\n\n // Trim all data based on first and last non-zero volume to keep all charts aligned\n // This removes leading empty buckets and trailing empty buckets\n const getTrimmedDataRange = (data: any[]) => {\n if (!data || data.length === 0) return { start: 0, end: 0 };\n\n // Find first non-zero volume\n const startIndex = data.findIndex(\n (item) => item.volume && item.volume !== 0,\n );\n\n // Find last non-zero volume\n const endIndex = data.reduce(\n (lastIdx, item, idx) =>\n item.volume && item.volume !== 0 ? idx : lastIdx,\n -1,\n );\n\n return {\n start: startIndex === -1 ? 0 : startIndex,\n end: endIndex === -1 ? data.length : endIndex + 1,\n };\n };\n\n // Get available symbols\n const availableSymbols = useMemo(() => {\n const symbols = Object.keys(symbolsInfo);\n return [\n { value: \"ALL_SYMBOLS\", label: \"All Symbols\" },\n ...symbols.map((symbol) => ({\n value: symbol,\n label: symbol.replace(\"PERP_\", \"\").replace(\"_USDC\", \"\"),\n })),\n ];\n }, [symbolsInfo]);\n\n // Transform period PnL data for CombinedPnLChart (combines bars + cumulative line)\n // aggregatedData.periodData contains NET PnL (after fees) and gross PnL values\n const combinedPnLData = useMemo(() => {\n if (!aggregatedData || !aggregatedData.periodData) return [];\n const { start, end } = getTrimmedDataRange(aggregatedData.periodData);\n const trimmedData = aggregatedData.periodData.slice(start, end);\n return trimmedData.map((item) => ({\n date: formatDateForChart(item.date, aggregationWindow),\n pnl: isNetPnL ? item.pnl : item.grossPnl,\n }));\n }, [aggregatedData, aggregationWindow, isNetPnL]);\n\n // Transform period volume data for CombinedVolumeChart (combines bars + cumulative line)\n const combinedVolumeData = useMemo(() => {\n if (!aggregatedData || !aggregatedData.periodData) return [];\n const { start, end } = getTrimmedDataRange(aggregatedData.periodData);\n const trimmedData = aggregatedData.periodData.slice(start, end);\n return trimmedData.map((item) => ({\n date: formatDateForChart(item.date, aggregationWindow),\n volume: item.volume ?? 0,\n }));\n }, [aggregatedData, aggregationWindow]);\n\n // Transform period fees data for CombinedFeesChart (combines bars + cumulative line)\n // Fees are shown as negative since they're a cost\n const combinedFeesData = useMemo(() => {\n if (!aggregatedData || !aggregatedData.periodData) return [];\n const { start, end } = getTrimmedDataRange(aggregatedData.periodData);\n const trimmedData = aggregatedData.periodData.slice(start, end);\n return trimmedData.map((item) => ({\n date: formatDateForChart(item.date, aggregationWindow),\n fees: -(item.fees ?? 0),\n }));\n }, [aggregatedData, aggregationWindow]);\n\n // Map aggregation window to K-line resolution\n const klineResolution = useMemo(() => {\n switch (aggregationWindow) {\n case \"15m\":\n return \"15m\" as const;\n case \"1h\":\n return \"1h\" as const;\n case \"1d\":\n return \"1d\" as const;\n default:\n return \"1d\" as const;\n }\n }, [aggregationWindow]);\n\n // Fetch K-line data (only if a specific symbol is selected, not \"ALL_SYMBOLS\")\n const isAllSymbols = selectedSymbol === \"ALL_SYMBOLS\";\n const klineEndDate = useMemo(() => {\n if (!dateRange?.to) return undefined;\n // Use endOfDay to capture klines through the full day, not just to midnight\n return endOfDay(dateRange.to);\n }, [dateRange?.to]);\n\n const { klines } = useKlineData({\n symbol: !isAllSymbols && selectedSymbol ? selectedSymbol : undefined,\n resolution: klineResolution,\n from: dateRange ? Math.floor(dateRange.from.getTime() / 1000) : undefined,\n to: klineEndDate ? Math.floor(klineEndDate.getTime() / 1000) : undefined,\n });\n\n // Combine price data - align with trading data range, fill gaps with null\n // This ensures price chart covers the full date range of PnL/Volume/Fees charts\n // Missing price data (due to 1k kline API limit) shows as null, maintaining tooltip sync\n const combinedPriceData = useMemo(() => {\n if (!aggregatedData || !aggregatedData.periodData) {\n return [];\n }\n\n // Apply same trim range as volume/fees/pnl to align x-axis\n const { start, end } = getTrimmedDataRange(aggregatedData.periodData);\n const trimmedTradingData = aggregatedData.periodData.slice(start, end);\n\n if (trimmedTradingData.length === 0 || klines.length === 0) {\n return [];\n }\n\n // Create a map of kline data by formatted date for O(1) lookup\n const klineMap = new Map<string, (typeof klines)[0]>();\n klines.forEach((k) => {\n const date = new Date(k.timestamp * 1000);\n const formattedDate = formatDateForChart(\n date.toISOString(),\n aggregationWindow,\n );\n klineMap.set(formattedDate, k);\n });\n\n // Create price data for all trading data buckets, using null where kline data is missing\n const result = trimmedTradingData.map((tradingItem) => {\n const formattedDate = formatDateForChart(\n tradingItem.date,\n aggregationWindow,\n );\n const kline = klineMap.get(formattedDate);\n\n return {\n date: formattedDate,\n open: kline?.open ?? null,\n high: kline?.high ?? null,\n low: kline?.low ?? null,\n close: kline?.close ?? null,\n };\n });\n\n return result;\n }, [klines, aggregatedData, aggregationWindow]);\n\n // Transform data for table view\n const tableData = useMemo(() => {\n if (!aggregatedData || !aggregatedData.periodData) return [];\n const { start, end } = getTrimmedDataRange(aggregatedData.periodData);\n const trimmedData = aggregatedData.periodData.slice(start, end);\n return trimmedData.map((item) => ({\n date: formatDateForChart(item.date, aggregationWindow),\n pnl: item.pnl,\n grossPnl: item.grossPnl,\n volume: item.volume ?? 0,\n fees: item.fees ?? 0,\n }));\n }, [aggregatedData, aggregationWindow]);\n\n const renderPnLValue = (value: number) => {\n const isPositive = value >= 0;\n return (\n <Text\n as=\"span\"\n weight=\"semibold\"\n className={isPositive ? \"oui-text-profit-500\" : \"oui-text-loss-500\"}\n >\n {value.toFixed(2)} USDC\n </Text>\n );\n };\n\n // Define table columns\n const tableColumns: Column<PerformanceTableRow>[] = useMemo(\n () => [\n {\n title: t(\"common.date\"),\n dataIndex: \"date\",\n width: 120,\n align: \"left\",\n },\n {\n title: t(\"portfolio.symbolPerformance.pnlNet\"),\n dataIndex: \"pnl\",\n align: \"right\",\n width: 150,\n render: renderPnLValue,\n },\n {\n title: t(\"portfolio.symbolPerformance.pnlGross\"),\n dataIndex: \"grossPnl\",\n align: \"right\",\n width: 150,\n render: renderPnLValue,\n },\n {\n title: t(\"portfolio.symbolPerformance.volume\"),\n dataIndex: \"volume\",\n align: \"right\",\n width: 150,\n render: (value: number) => {\n return <Text as=\"span\">{formatVolumeValue(value)}</Text>;\n },\n },\n {\n title: t(\"portfolio.symbolPerformance.fees\"),\n dataIndex: \"fees\",\n align: \"right\",\n width: 150,\n render: (value: number) => {\n return <Text as=\"span\">{formatVolumeValue(value)}</Text>;\n },\n },\n ],\n [t],\n );\n\n // Helper function to format volume/fees with K/M/B\n const formatVolumeValue = (value: number): string => {\n const abbreviations = [\"\", \"K\", \"M\", \"B\", \"T\"];\n let index = 0;\n let num = value;\n while (num >= 1000 && index < abbreviations.length - 1) {\n num /= 1000;\n index++;\n }\n const decimalPlaces = num <= 10 ? 2 : num <= 100 ? 1 : 0;\n const rounded = parseFloat(num.toFixed(decimalPlaces));\n return `${rounded}${abbreviations[index]}`;\n };\n\n // Aggregate trades by symbol\n const symbolSummaryData = useMemo(() => {\n if (!trades || trades.length === 0) return [];\n\n const symbolMap = new Map<\n string,\n { pnl: number; volume: number; fees: number; trades: number }\n >();\n\n trades.forEach((trade: TradeData) => {\n const symbol = trade.symbol;\n if (!symbolMap.has(symbol)) {\n symbolMap.set(symbol, { pnl: 0, volume: 0, fees: 0, trades: 0 });\n }\n\n const current = symbolMap.get(symbol)!;\n const tradeVolume = trade.executed_quantity * trade.executed_price;\n\n current.pnl += trade.realized_pnl || 0;\n current.volume += tradeVolume;\n current.fees += trade.fee || 0;\n current.trades += 1;\n });\n\n // Convert map to array and sort by PnL (highest first)\n return Array.from(symbolMap.entries())\n .map(([symbol, data]) => ({\n symbol,\n ...data,\n }))\n .sort((a, b) => b.pnl - a.pnl)\n .slice(0, 10); // Top 10 symbols\n }, [trades]);\n\n return (\n <Card\n title={\n <Box>\n <React.Suspense fallback={null}>\n <LazyPeriodTitle\n onPeriodChange={onPeriodChange}\n periodTypes={periodTypes}\n period={period}\n title={t(\"portfolio.symbolPerformance\")}\n filterItems={filterItems}\n onFilter={onFilter}\n />\n </React.Suspense>\n </Box>\n }\n >\n <Grid cols={1} gap={4}>\n <Flex gap={4} itemAlign=\"end\">\n {/* Symbol Selector - With Logo and Search */}\n <Box className=\"oui-max-w-xs oui-flex-1\">\n <Text size=\"xs\" intensity={54} className=\"oui-mb-2\">\n {t(\"common.symbol\")}\n </Text>\n <SymbolSelector\n value={selectedSymbol || \"\"}\n onValueChange={(value: string) => setSelectedSymbol(value)}\n options={availableSymbols}\n placeholder={t(\"common.symbol\")}\n />\n </Box>\n\n {/* Aggregation Window Selector */}\n <Box className=\"oui-max-w-xs\">\n <Text size=\"xs\" intensity={54} className=\"oui-mb-2\">\n {t(\"portfolio.symbolPerformance.aggregation\")}\n </Text>\n <Select.options\n value={aggregationWindow}\n onValueChange={(value) =>\n setAggregationWindow(value as AggregationWindow)\n }\n options={aggregationWindowTypes.map((type) => ({\n label:\n type === \"15m\"\n ? \"15 min\"\n : type === \"1h\"\n ? \"Hourly\"\n : \"Daily\",\n value: type,\n }))}\n classNames={{ trigger: cn(\"oui-h-[2.4rem]\") }}\n />\n </Box>\n </Flex>\n\n <Divider className=\"oui-my-6 oui-border-t-2\" intensity={8} />\n\n <Box pb={4}>\n {/* Key Metrics */}\n <Grid cols={5} gap={4} mb={4}>\n <Box\n gradient=\"neutral\"\n r=\"md\"\n px={3}\n py={2}\n angle={184}\n border\n borderColor={6}\n >\n {/* Total PnL (Gross) */}\n <Statistic\n label=\"Total PnL (Gross)\"\n valueProps={{ coloring: true, showIdentifier: true }}\n >\n {performanceData ? performanceData.grossPnL.toFixed(2) : \"--\"}\n </Statistic>\n </Box>\n <Box\n gradient=\"neutral\"\n r=\"md\"\n px={3}\n py={2}\n angle={184}\n border\n borderColor={6}\n >\n {/* Total Fees */}\n <Statistic\n label={t(\"portfolio.symbolPerformance.totalFees\")}\n valueProps={{ showIdentifier: false }}\n >\n {performanceData ? performanceData.totalFees.toFixed(2) : \"--\"}\n </Statistic>\n </Box>\n <Box\n gradient=\"neutral\"\n r=\"md\"\n px={3}\n py={2}\n angle={184}\n border\n borderColor={6}\n >\n {/* Total PnL (Net) */}\n <Statistic\n label=\"Total PnL (Net)\"\n valueProps={{ coloring: true, showIdentifier: true }}\n >\n {performanceData ? performanceData.totalPnL.toFixed(2) : \"--\"}\n </Statistic>\n </Box>\n <Box\n gradient=\"neutral\"\n r=\"md\"\n px={3}\n py={2}\n angle={184}\n border\n borderColor={6}\n >\n {/* Total Volume */}\n <Statistic label={t(\"portfolio.symbolPerformance.totalVolume\")}>\n {performanceData\n ? performanceData.totalVolume.toFixed(2)\n : \"--\"}\n </Statistic>\n </Box>\n <Box\n gradient=\"neutral\"\n r=\"md\"\n px={3}\n py={2}\n angle={184}\n border\n borderColor={6}\n >\n {/* Maker / Taker */}\n <Statistic label=\"Maker / Taker\">\n {performanceData ? (\n <MakerTakerShare makerShare={performanceData.makerShare} />\n ) : (\n <div className=\"oui-text-center\">--</div>\n )}\n </Statistic>\n </Box>\n </Grid>\n\n {/* Chart/Table View Toggle */}\n <Flex gap={2} mb={4}>\n <button\n onClick={() => setViewType(ViewType.chart)}\n className={cn(\n \"oui-px-4 oui-py-2 oui-rounded oui-text-sm oui-font-semibold oui-transition-all\",\n viewType === ViewType.chart\n ? \"oui-bg-primary-darken oui-text-white\"\n : \"oui-bg-base-5 oui-text-base-contrast-54 hover:oui-bg-base-4\",\n )}\n >\n Chart\n </button>\n <button\n onClick={() => setViewType(ViewType.table)}\n className={cn(\n \"oui-px-4 oui-py-2 oui-rounded oui-text-sm oui-font-semibold oui-transition-all\",\n viewType === ViewType.table\n ? \"oui-bg-primary-darken oui-text-white\"\n : \"oui-bg-base-5 oui-text-base-contrast-54 hover:oui-bg-base-4\",\n )}\n >\n Table\n </button>\n </Flex>\n\n {/* Charts - Conditional Rendering */}\n {viewType === ViewType.chart && (\n <Grid cols={1} gap={6}>\n {/* Combined PnL Chart (bars + cumulative line) */}\n <Box>\n <Text as=\"div\" size=\"sm\" className=\"oui-mb-3\">\n {getAggregationLabel(aggregationWindow)}{\" \"}\n {t(\"portfolio.symbolPerformance.realizedPnL\")}\n </Text>\n <Flex justify=\"between\" itemAlign=\"center\" className=\"oui-mb-3\">\n <Flex gap={2}>\n <button\n onClick={() => setIsNetPnL(false)}\n className={cn(\n \"oui-px-3 oui-py-1 oui-rounded oui-text-xs oui-font-semibold oui-transition-all\",\n !isNetPnL\n ? \"oui-bg-primary-darken oui-text-white\"\n : \"oui-bg-base-5 oui-text-base-contrast-54 hover:oui-bg-base-4\",\n )}\n >\n Gross P&L\n </button>\n <button\n onClick={() => setIsNetPnL(true)}\n className={cn(\n \"oui-px-3 oui-py-1 oui-rounded oui-text-xs oui-font-semibold oui-transition-all\",\n isNetPnL\n ? \"oui-bg-primary-darken oui-text-white\"\n : \"oui-bg-base-5 oui-text-base-contrast-54 hover:oui-bg-base-4\",\n )}\n >\n Net P&L\n </button>\n </Flex>\n <Flex itemAlign=\"center\" gap={2}>\n <label className=\"oui-text-xs oui-text-base-contrast-54\">\n Cumulative\n </label>\n <Switch\n checked={showCumulativePnL}\n onCheckedChange={setShowCumulativePnL}\n />\n </Flex>\n </Flex>\n <Box\n r=\"md\"\n className=\"oui-h-[300px] oui-border oui-border-line-4\"\n >\n <CombinedPnLChart\n key={`combined-pnl-${aggregationWindow}`}\n data={combinedPnLData}\n aggregationWindow={aggregationWindow as \"15m\" | \"1h\" | \"1d\"}\n invisible={\n !aggregatedData ||\n !aggregatedData.periodData ||\n aggregatedData.periodData.length === 0\n }\n showCumulative={showCumulativePnL}\n />\n </Box>\n </Box>\n\n {/* Combined Volume Chart (bars + cumulative line) */}\n <Box>\n <Flex justify=\"between\" itemAlign=\"center\" className=\"oui-mb-3\">\n <Text as=\"div\" size=\"sm\">\n {getAggregationLabel(aggregationWindow)}{\" \"}\n {t(\"portfolio.symbolPerformance.volume\")}\n </Text>\n <Flex itemAlign=\"center\" gap={2}>\n <label className=\"oui-text-xs oui-text-base-contrast-54\">\n Cumulative\n </label>\n <Switch\n checked={showCumulativeVolume}\n onCheckedChange={setShowCumulativeVolume}\n />\n </Flex>\n </Flex>\n <Box\n r=\"md\"\n className=\"oui-h-[300px] oui-border oui-border-line-4\"\n >\n <CombinedVolumeChart\n key={`combined-vol-${aggregationWindow}`}\n data={combinedVolumeData}\n aggregationWindow={aggregationWindow as \"15m\" | \"1h\" | \"1d\"}\n invisible={\n !aggregatedData ||\n !aggregatedData.periodData ||\n aggregatedData.periodData.length === 0\n }\n showCumulative={showCumulativeVolume}\n />\n </Box>\n </Box>\n\n {/* Combined Price Chart - Only show when specific symbol is selected */}\n {!isAllSymbols && (\n <Box>\n <Text as=\"div\" size=\"sm\" className=\"oui-mb-3\">\n {getAggregationLabel(aggregationWindow)} Price\n </Text>\n <Box\n r=\"md\"\n className=\"oui-h-[300px] oui-border oui-border-line-4\"\n >\n <CombinedPriceChart\n key={`combined-price-${aggregationWindow}-${selectedSymbol}`}\n data={combinedPriceData}\n aggregationWindow={\n aggregationWindow as \"15m\" | \"1h\" | \"1d\"\n }\n invisible={combinedPriceData.length === 0}\n />\n </Box>\n </Box>\n )}\n\n {/* Combined Fees Chart (bars + cumulative line) */}\n <Box>\n <Flex justify=\"between\" itemAlign=\"center\" className=\"oui-mb-3\">\n <Text as=\"div\" size=\"sm\">\n {getAggregationLabel(aggregationWindow)}{\" \"}\n {t(\"portfolio.symbolPerformance.fees\")}\n </Text>\n <Flex itemAlign=\"center\" gap={2}>\n <label className=\"oui-text-xs oui-text-base-contrast-54\">\n Cumulative\n </label>\n <Switch\n checked={showCumulativeFees}\n onCheckedChange={setShowCumulativeFees}\n />\n </Flex>\n </Flex>\n <Box\n r=\"md\"\n className=\"oui-h-[300px] oui-border oui-border-line-4\"\n >\n <CombinedFeesChart\n key={`combined-fees-${aggregationWindow}`}\n data={combinedFeesData}\n aggregationWindow={aggregationWindow as \"15m\" | \"1h\" | \"1d\"}\n invisible={\n !aggregatedData ||\n !aggregatedData.periodData ||\n aggregatedData.periodData.length === 0\n }\n showCumulative={showCumulativeFees}\n />\n </Box>\n </Box>\n </Grid>\n )}\n\n {/* Table View - Conditional Rendering */}\n {viewType === ViewType.table && (\n <Box className=\"oui-h-[600px]\">\n <DataTable<PerformanceTableRow>\n bordered\n columns={tableColumns}\n dataSource={tableData}\n emptyView={\n <Box className=\"oui-text-center oui-py-8\">\n <Text>{t(\"portfolio.symbolPerformance.noData\")}</Text>\n </Box>\n }\n />\n </Box>\n )}\n\n {/* Symbol Summary - Top Symbols by PnL */}\n {symbolSummaryData.length > 0 && (\n <Box mt={8}>\n <Divider className=\"oui-my-6 oui-border-t-2\" intensity={8} />\n <Text as=\"div\" size=\"lg\" weight=\"semibold\" className=\"oui-mb-4\">\n {t(\"portfolio.symbolPerformance.pnlRanking\")}\n </Text>\n <Box className=\"oui-border oui-border-line-4 oui-rounded-md oui-p-4\">\n <PnLRankingChart\n data={symbolSummaryData}\n onSymbolSelect={setSelectedSymbol}\n />\n </Box>\n </Box>\n )}\n </Box>\n </Grid>\n </Card>\n );\n};\n","import React, { useMemo } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { Text, cn } from \"@kodiak-finance/orderly-ui\";\n\nexport type PnLRankingDataItem = {\n symbol: string;\n pnl: number;\n volume: number;\n fees: number;\n};\n\ntype PnLRankingChartMobileProps = {\n data: PnLRankingDataItem[];\n onSymbolSelect?: (symbol: string) => void;\n};\n\nconst formatCurrency = (value: number): string => {\n if (value >= 1e9) return `$${(value / 1e9).toFixed(2)}B`;\n if (value >= 1e6) return `$${(value / 1e6).toFixed(2)}M`;\n if (value >= 1e3) return `$${(value / 1e3).toFixed(2)}K`;\n return `$${value.toFixed(2)}`;\n};\n\nexport const PnLRankingChartMobile: React.FC<PnLRankingChartMobileProps> = ({\n data,\n onSymbolSelect,\n}) => {\n const { t } = useTranslation();\n\n const maxAbsValue = useMemo(\n () => Math.max(...data.map((item) => Math.abs(item.pnl)), 1),\n [data],\n );\n\n return (\n <div className=\"oui-w-full oui-space-y-3\">\n {/* Header Row */}\n <div className=\"oui-border-b oui-border-line-4 oui-mb-2 oui-px-3 oui-py-2\">\n <div className=\"oui-flex oui-items-center oui-justify-between\">\n <Text size=\"xs\" intensity={54} weight=\"semibold\">\n {t(\"portfolio.symbolPerformance.pnlRanking.symbols\")}\n </Text>\n <Text\n size=\"xs\"\n intensity={54}\n weight=\"semibold\"\n className=\"oui-text-right\"\n >\n {t(\"portfolio.symbolPerformance.pnlRanking.pnl\")}\n </Text>\n </div>\n </div>\n\n {/* Data Rows */}\n {data.map((item) => {\n const isPositive = item.pnl >= 0;\n const barWidth = (Math.abs(item.pnl) / maxAbsValue) * 100;\n\n return (\n <div\n key={item.symbol}\n onClick={() => onSymbolSelect?.(item.symbol)}\n className=\"oui-border oui-border-line-4 hover:oui-border-line-5 oui-rounded oui-transition-colors oui-px-3 oui-py-3 oui-cursor-pointer\"\n >\n {/* Symbol - Full Width, No Truncation */}\n <Text size=\"xs\" weight=\"semibold\" className=\"oui-mb-2\">\n {item.symbol}\n </Text>\n\n {/* Bar with P&L Value - Full Width */}\n <div className=\"oui-relative oui-w-full oui-h-7 oui-rounded oui-bg-base-8 oui-overflow-hidden oui-flex oui-items-center oui-mb-3\">\n <div\n className=\"oui-absolute oui-h-full oui-rounded oui-transition-all\"\n style={{\n width: `${barWidth}%`,\n backgroundColor: isPositive ? \"#00B49E\" : \"#FF5959\",\n }}\n />\n <Text\n size=\"xs\"\n weight=\"semibold\"\n className={cn(\n \"oui-relative oui-z-10 oui-ml-2\",\n isPositive ? \"oui-text-profit-500\" : \"oui-text-loss-500\",\n )}\n >\n {isPositive ? \"+\" : \"\"}\n {item.pnl.toFixed(2)}\n </Text>\n </div>\n\n {/* Volume and Fees - Compact Secondary Info */}\n <div className=\"oui-flex oui-justify-between oui-gap-4 oui-border-t oui-border-line-4 oui-pt-3\">\n <div className=\"oui-flex oui-flex-col oui-gap-1\">\n <Text size=\"2xs\" intensity={54}>\n {t(\"portfolio.symbolPerformance.pnlRanking.volume\")}\n </Text>\n <Text size=\"xs\" weight=\"semibold\">\n {formatCurrency(item.volume)}\n </Text>\n </div>\n <div className=\"oui-text-right oui-flex oui-flex-col oui-gap-1\">\n <Text size=\"2xs\" intensity={54}>\n {t(\"portfolio.symbolPerformance.pnlRanking.fees\")}\n </Text>\n <Text size=\"xs\" weight=\"semibold\" intensity={80}>\n {formatCurrency(item.fees)}\n </Text>\n </div>\n </div>\n </div>\n );\n })}\n\n {/* Empty State */}\n {data.length === 0 && (\n <div className=\"oui-flex oui-items-center oui-justify-center oui-py-8\">\n <Text size=\"xs\" intensity={54}>\n {t(\"portfolio.symbolPerformance.noData\")}\n </Text>\n </div>\n )}\n </div>\n );\n};\n","import React, { useMemo, useState } from \"react\";\nimport {\n CombinedPnLChart,\n CombinedVolumeChart,\n CombinedFeesChart,\n CombinedPriceChart,\n} from \"@kodiak-finance/orderly-chart\";\nimport { useSymbolsInfo } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n Box,\n Card,\n Text,\n Flex,\n Tabs,\n TabPanel,\n DataFilter,\n Select,\n Grid,\n Divider,\n Switch,\n Statistic,\n cn,\n} from \"@kodiak-finance/orderly-ui\";\nimport { formatDateForChart, getAggregationLabel } from \"./dateUtils\";\nimport { PnLRankingChartMobile } from \"./pnlRankingChartMobile\";\nimport type { UseSymbolPerformanceScriptReturn } from \"./symbolPerformance.script\";\nimport { PeriodType, AggregationWindow } from \"./symbolPerformance.script\";\nimport { SymbolSelector } from \"./symbolSelector\";\nimport { useKlineData } from \"./useKlineData\";\nimport type { TradeData } from \"./useTrades\";\n\nexport type SymbolPerformanceUIMobileProps = UseSymbolPerformanceScriptReturn;\n\nconst MakerTakerShare: React.FC<{ makerShare: number }> = ({ makerShare }) => {\n const takerShare = 100 - makerShare;\n return (\n <div className=\"oui-flex oui-items-center oui-justify-center oui-gap-4\">\n <Text weight=\"semibold\">{makerShare.toFixed(1)}%</Text>\n <span className=\"oui-text-base-contrast-54\">/</span>\n <Text weight=\"semibold\">{takerShare.toFixed(1)}%</Text>\n </div>\n );\n};\n\nexport const SymbolPerformanceUIMobile: React.FC<\n SymbolPerformanceUIMobileProps\n> = (props) => {\n const {\n selectedSymbol,\n setSelectedSymbol,\n period,\n onPeriodChange,\n performanceData,\n filterItems,\n onFilter,\n aggregationWindow,\n setAggregationWindow,\n aggregationWindowTypes,\n aggregatedData,\n trades,\n dateRange,\n isNetPnL,\n setIsNetPnL,\n } = props;\n const { t } = useTranslation();\n const symbolsInfo = useSymbolsInfo();\n const [showCumulativePnL, setShowCumulativePnL] = useState(true);\n const [showCumulativeVolume, setShowCumulativeVolume] = useState(false);\n const [showCumulativeFees, setShowCumulativeFees] = useState(false);\n\n // Trim all data based on first non-zero volume to keep all charts aligned\n const getFirstNonZeroVolumeIndex = (data: any[]) => {\n if (!data || data.length === 0) return 0;\n const index = data.findIndex((item) => item.volume && item.volume !== 0);\n return index === -1 ? 0 : index;\n };\n\n // Get available symbols\n const availableSymbols = useMemo(() => {\n const symbols = Object.keys(symbolsInfo);\n return [\n { value: \"ALL_SYMBOLS\", label: \"All Symbols\" },\n ...symbols.map((symbol) => ({\n value: symbol,\n label: symbol.replace(\"PERP_\", \"\").replace(\"_USDC\", \"\"),\n })),\n ];\n }, [symbolsInfo]);\n\n // Combined PnL chart data with trim\n // aggregatedData.periodData contains NET PnL (after fees) and gross PnL values\n const combinedPnLData = useMemo(() => {\n if (!aggregatedData || !aggregatedData.periodData) return [];\n const trimIndex = getFirstNonZeroVolumeIndex(aggregatedData.periodData);\n const trimmedData = aggregatedData.periodData.slice(trimIndex);\n return trimmedData.map((item) => ({\n date: formatDateForChart(item.date, aggregationWindow),\n pnl: isNetPnL ? item.pnl : item.grossPnl,\n }));\n }, [aggregatedData, aggregationWindow, isNetPnL]);\n\n // Combined Volume chart data with trim\n const combinedVolumeData = useMemo(() => {\n if (!aggregatedData || !aggregatedData.periodData) return [];\n const trimIndex = getFirstNonZeroVolumeIndex(aggregatedData.periodData);\n const trimmedData = aggregatedData.periodData.slice(trimIndex);\n return trimmedData.map((item) => ({\n date: formatDateForChart(item.date, aggregationWindow),\n volume: item.volume ?? 0,\n }));\n }, [aggregatedData, aggregationWindow]);\n\n // Combined Fees chart data with trim\n // Fees are shown as negative since they're a cost\n const combinedFeesData = useMemo(() => {\n if (!aggregatedData || !aggregatedData.periodData) return [];\n const trimIndex = getFirstNonZeroVolumeIndex(aggregatedData.periodData);\n const trimmedData = aggregatedData.periodData.slice(trimIndex);\n return trimmedData.map((item) => ({\n date: formatDateForChart(item.date, aggregationWindow),\n fees: -(item.fees ?? 0),\n }));\n }, [aggregatedData, aggregationWindow]);\n\n // Map aggregation window to K-line resolution\n const klineResolution = useMemo(() => {\n switch (aggregationWindow) {\n case \"15m\":\n return \"15m\" as const;\n case \"1h\":\n return \"1h\" as const;\n case \"1d\":\n return \"1d\" as const;\n default:\n return \"1d\" as const;\n }\n }, [aggregationWindow]);\n\n // Fetch K-line data (only if a specific symbol is selected, not \"ALL_SYMBOLS\")\n const isAllSymbols = selectedSymbol === \"ALL_SYMBOLS\";\n const { klines } = useKlineData({\n symbol: !isAllSymbols && selectedSymbol ? selectedSymbol : undefined,\n resolution: klineResolution,\n from: dateRange ? Math.floor(dateRange.from.getTime() / 1000) : undefined,\n to: dateRange ? Math.floor(dateRange.to.getTime() / 1000) : undefined,\n });\n\n // Combine price data - trim to match the trading data range for cross-chart alignment\n // This ensures price chart X-axis aligns with PnL/Volume/Fees charts for easy tracing\n const combinedPriceData = useMemo(() => {\n if (klines.length === 0 || !aggregatedData || !aggregatedData.periodData) {\n return [];\n }\n\n // Get the same trim index as trading data\n const trimIndex = getFirstNonZeroVolumeIndex(aggregatedData.periodData);\n const firstTrimmedEntry = aggregatedData.periodData[trimIndex];\n\n if (!firstTrimmedEntry) {\n return [];\n }\n\n // Filter klines to only include those on or after the first trimmed trading date\n const firstTrimmedDate = new Date(firstTrimmedEntry.date);\n\n return klines\n .filter((k) => {\n const klineDate = new Date(k.timestamp * 1000);\n return klineDate >= firstTrimmedDate;\n })\n .map((k) => {\n const date = new Date(k.timestamp * 1000);\n const formattedDate = formatDateForChart(\n date.toISOString(),\n aggregationWindow,\n );\n\n return {\n date: formattedDate,\n open: k.open,\n high: k.high,\n low: k.low,\n close: k.close,\n };\n });\n }, [klines, aggregatedData, aggregationWindow]);\n\n const isEmptyData =\n !aggregatedData ||\n !aggregatedData.periodData ||\n aggregatedData.periodData.length === 0;\n\n // Build DataFilter items with only date range (symbol selector is separate)\n const dataFilterItems = useMemo(() => {\n const items: Array<{ type: \"range\"; name: string; value: any }> = [];\n\n // Add date range filter if available\n if (filterItems && filterItems.length > 0) {\n const dateRangeFilter = filterItems.find(\n (item) => item.name === \"dateRange\",\n );\n if (dateRangeFilter) {\n items.push({\n type: \"range\" as const,\n name: \"dateRange\",\n value: dateRangeFilter.value,\n });\n }\n }\n\n return items;\n }, [filterItems]);\n\n const handleFilter = (filter: { name: string; value: any }) => {\n if (filter.name === \"dateRange\" && onFilter) {\n onFilter(filter);\n }\n };\n\n // Aggregate trades by symbol\n const symbolSummaryData = useMemo(() => {\n if (!trades || trades.length === 0) return [];\n\n const symbolMap = new Map<\n string,\n { pnl: number; volume: number; fees: number; trades: number }\n >();\n\n trades.forEach((trade: TradeData) => {\n const symbol = trade.symbol;\n if (!symbolMap.has(symbol)) {\n symbolMap.set(symbol, { pnl: 0, volume: 0, fees: 0, trades: 0 });\n }\n\n const current = symbolMap.get(symbol)!;\n const tradeVolume = trade.executed_quantity * trade.executed_price;\n\n current.pnl += trade.realized_pnl || 0;\n current.volume += tradeVolume;\n current.fees += trade.fee || 0;\n current.trades += 1;\n });\n\n // Convert map to array and sort by PnL (highest first)\n return Array.from(symbolMap.entries())\n .map(([symbol, data]) => ({\n symbol,\n ...data,\n }))\n .sort((a, b) => b.pnl - a.pnl)\n .slice(0, 10); // Top 10 symbols\n }, [trades]);\n\n return (\n <div>\n {/* Symbol Selector & Aggregation Window */}\n <Flex gap={2} itemAlign=\"end\" mb={2}>\n <Box className=\"oui-flex-1\">\n <Text size=\"xs\" intensity={54} className=\"oui-mb-2\">\n {t(\"common.symbol\")}\n </Text>\n <SymbolSelector\n value={selectedSymbol || \"\"}\n onValueChange={(value: string) => setSelectedSymbol(value)}\n options={availableSymbols}\n placeholder={t(\"common.symbol\")}\n />\n </Box>\n\n <Box className=\"oui-flex-1\">\n <Text size=\"xs\" intensity={54} className=\"oui-mb-2\">\n {t(\"portfolio.symbolPerformance.aggregation\")}\n </Text>\n <Select.combine\n value={aggregationWindow}\n onValueChange={(value) =>\n setAggregationWindow(value as AggregationWindow)\n }\n options={aggregationWindowTypes.map((type) => ({\n label:\n type === \"15m\" ? \"15 min\" : type === \"1h\" ? \"Hourly\" : \"Daily\",\n value: type,\n }))}\n />\n </Box>\n </Flex>\n\n {/* Date Range Filter */}\n {dataFilterItems && dataFilterItems.length > 0 && (\n <Box mb={4}>\n <DataFilter\n items={dataFilterItems}\n onFilter={handleFilter}\n className=\"oui-border-none oui-py-0\"\n />\n </Box>\n )}\n\n {/* Period Buttons - Below Filters */}\n <Box mb={4}>\n <Tabs\n value={period || \"\"}\n defaultValue={PeriodType.WEEK}\n classNames={{ tabsList: \"oui-justify-between\", trigger: \"oui-w-1/4\" }}\n onValueChange={(value) => onPeriodChange(value as PeriodType)}\n >\n <TabPanel\n title={t(\"common.select.1d\")}\n value={PeriodType.DAY}\n className=\"oui-min-h-0 oui-p-0\"\n />\n <TabPanel\n title={t(\"common.select.7d\")}\n value={PeriodType.WEEK}\n className=\"oui-min-h-0 oui-p-0\"\n />\n <TabPanel\n title={t(\"common.select.30d\")}\n value={PeriodType.MONTH}\n className=\"oui-min-h-0 oui-p-0\"\n />\n <TabPanel\n title={t(\"common.select.90d\")}\n value={PeriodType.QUARTER}\n className=\"oui-min-h-0 oui-p-0\"\n />\n </Tabs>\n </Box>\n\n {/* Key Metrics - Above Charts (match desktop set) */}\n <Grid cols={2} gap={2} mb={2}>\n <Card className=\"oui-bg-base-7 oui-border oui-border-line-4 oui-p-1.5\">\n <Statistic\n label={`${t(\"portfolio.symbolPerformance.totalPnL\")} (Gross)`}\n valueProps={{ coloring: true, showIdentifier: true, dp: 2 }}\n classNames={{ value: \"oui-text-sm oui-font-semibold\" }}\n >\n {performanceData?.grossPnL ?? \"-\"}\n </Statistic>\n </Card>\n <Card className=\"oui-bg-base-7 oui-border oui-border-line-4 oui-p-1.5\">\n <Statistic\n label={t(\"portfolio.symbolPerformance.totalFees\")}\n valueProps={{ dp: 2 }}\n classNames={{ value: \"oui-text-sm\" }}\n >\n {performanceData?.totalFees ?? \"-\"}\n </Statistic>\n </Card>\n <Card className=\"oui-bg-base-7 oui-border oui-border-line-4 oui-p-1.5\">\n <Statistic\n label={`${t(\"portfolio.symbolPerformance.totalPnL\")} (Net)`}\n valueProps={{ coloring: true, showIdentifier: true, dp: 2 }}\n classNames={{ value: \"oui-text-sm oui-font-semibold\" }}\n >\n {performanceData?.totalPnL ?? \"-\"}\n </Statistic>\n </Card>\n <Card className=\"oui-bg-base-7 oui-border oui-border-line-4 oui-p-1.5\">\n <Statistic\n label={t(\"portfolio.symbolPerformance.totalVolume\")}\n valueProps={{ dp: 2 }}\n classNames={{ value: \"oui-text-sm\" }}\n >\n {performanceData?.totalVolume ?? \"-\"}\n </Statistic>\n </Card>\n <Card className=\"oui-bg-base-7 oui-border oui-border-line-4 oui-p-1.5 oui-col-span-2\">\n <Statistic\n label=\"Maker / Taker\"\n classNames={{ value: \"oui-text-sm oui-font-semibold\" }}\n >\n {performanceData ? (\n <MakerTakerShare makerShare={performanceData.makerShare} />\n ) : (\n \"--\"\n )}\n </Statistic>\n </Card>\n </Grid>\n\n {/* Charts - Combined visualization (bars + cumulative line) */}\n <Grid cols={1} gap={4} mb={4}>\n {/* PnL - Combined Bars + Cumulative Line */}\n <Box>\n <Flex justify=\"between\" itemAlign=\"center\" className=\"oui-mb-2\">\n <Text as=\"div\" size=\"xs\">\n {getAggregationLabel(aggregationWindow)}{\" \"}\n {t(\"portfolio.symbolPerformance.realizedPnL\")}\n </Text>\n <Flex gap={1}>\n <button\n onClick={() => setIsNetPnL(false)}\n className={cn(\n \"oui-px-2 oui-py-0.5 oui-rounded oui-text-2xs oui-font-semibold oui-transition-all\",\n !isNetPnL\n ? \"oui-bg-primary-darken oui-text-white\"\n : \"oui-bg-base-5 oui-text-base-contrast-54\",\n )}\n >\n Gross\n </button>\n <button\n onClick={() => setIsNetPnL(true)}\n className={cn(\n \"oui-px-2 oui-py-0.5 oui-rounded oui-text-2xs oui-font-semibold oui-transition-all\",\n isNetPnL\n ? \"oui-bg-primary-darken oui-text-white\"\n : \"oui-bg-base-5 oui-text-base-contrast-54\",\n )}\n >\n Net\n </button>\n <Divider direction=\"vertical\" />\n <Flex itemAlign=\"center\" gap={1}>\n <label className=\"oui-text-2xs oui-text-base-contrast-54\">\n Cum.\n </label>\n <Switch\n checked={showCumulativePnL}\n onCheckedChange={setShowCumulativePnL}\n />\n </Flex>\n </Flex>\n </Flex>\n <Box r=\"md\" className=\"oui-h-[144px] oui-border oui-border-line-4\">\n <CombinedPnLChart\n key={`mobile-pnl-${aggregationWindow}`}\n data={combinedPnLData}\n aggregationWindow={aggregationWindow as \"15m\" | \"1h\" | \"1d\"}\n isMobile={true}\n invisible={isEmptyData}\n showCumulative={showCumulativePnL}\n />\n </Box>\n </Box>\n\n {/* Volume - Combined Bars + Cumulative Line */}\n <Box>\n <Flex justify=\"between\" itemAlign=\"center\" className=\"oui-mb-2\">\n <Text as=\"div\" size=\"xs\">\n {getAggregationLabel(aggregationWindow)}{\" \"}\n {t(\"portfolio.symbolPerformance.volume\")}\n </Text>\n <Flex itemAlign=\"center\" gap={1}>\n <label className=\"oui-text-2xs oui-text-base-contrast-54\">\n Cum.\n </label>\n <Switch\n checked={showCumulativeVolume}\n onCheckedChange={setShowCumulativeVolume}\n />\n </Flex>\n </Flex>\n <Box r=\"md\" className=\"oui-h-[144px] oui-border oui-border-line-4\">\n <CombinedVolumeChart\n key={`mobile-volume-${aggregationWindow}`}\n data={combinedVolumeData}\n aggregationWindow={aggregationWindow as \"15m\" | \"1h\" | \"1d\"}\n isMobile={true}\n invisible={isEmptyData}\n showCumulative={showCumulativeVolume}\n />\n </Box>\n </Box>\n\n {/* Price Chart - Only show when specific symbol is selected */}\n {!isAllSymbols && (\n <Box>\n <Text as=\"div\" size=\"xs\" className=\"oui-mb-2\">\n {getAggregationLabel(aggregationWindow)} Price\n </Text>\n <Box r=\"md\" className=\"oui-h-[144px] oui-border oui-border-line-4\">\n <CombinedPriceChart\n key={`mobile-price-${aggregationWindow}-${selectedSymbol}`}\n data={combinedPriceData}\n aggregationWindow={aggregationWindow as \"15m\" | \"1h\" | \"1d\"}\n isMobile={true}\n invisible={combinedPriceData.length === 0}\n />\n </Box>\n </Box>\n )}\n\n {/* Fees - Combined Bars + Cumulative Line */}\n <Box>\n <Flex justify=\"between\" itemAlign=\"center\" className=\"oui-mb-2\">\n <Text as=\"div\" size=\"xs\">\n {getAggregationLabel(aggregationWindow)}{\" \"}\n {t(\"portfolio.symbolPerformance.fees\")}\n </Text>\n <Flex itemAlign=\"center\" gap={1}>\n <label className=\"oui-text-2xs oui-text-base-contrast-54\">\n Cum.\n </label>\n <Switch\n checked={showCumulativeFees}\n onCheckedChange={setShowCumulativeFees}\n />\n </Flex>\n </Flex>\n <Box r=\"md\" className=\"oui-h-[144px] oui-border oui-border-line-4\">\n <CombinedFeesChart\n key={`mobile-fees-${aggregationWindow}`}\n data={combinedFeesData}\n aggregationWindow={aggregationWindow as \"15m\" | \"1h\" | \"1d\"}\n isMobile={true}\n invisible={isEmptyData}\n showCumulative={showCumulativeFees}\n />\n </Box>\n </Box>\n </Grid>\n\n {/* Symbol Summary - Top Symbols by PnL */}\n {symbolSummaryData.length > 0 && (\n <Box mt={6} mb={4}>\n <Divider className=\"oui-my-6 oui-border-t-2\" intensity={8} />\n <Text as=\"div\" size=\"sm\" weight=\"semibold\" className=\"oui-mb-4\">\n {t(\"portfolio.symbolPerformance.pnlRanking\")}\n </Text>\n <Box className=\"oui-border oui-border-line-4 oui-rounded-md oui-p-3\">\n <PnLRankingChartMobile\n data={symbolSummaryData}\n onSymbolSelect={setSelectedSymbol}\n />\n </Box>\n </Box>\n )}\n </div>\n );\n};\n","import React from \"react\";\nimport { useScreen } from \"@kodiak-finance/orderly-ui\";\nimport { useSymbolPerformanceScript } from \"./symbolPerformance.script\";\nimport { SymbolPerformanceUI } from \"./symbolPerformance.ui\";\nimport { SymbolPerformanceUIMobile } from \"./symbolPerformance.ui.mobile\";\n\nexport const SymbolPerformanceWidget: React.FC<{ symbol?: string }> = ({\n symbol,\n}) => {\n const { isMobile } = useScreen();\n const state = useSymbolPerformanceScript(symbol);\n\n if (isMobile) {\n return <SymbolPerformanceUIMobile {...state} />;\n }\n\n return <SymbolPerformanceUI {...state} />;\n};\n","import React from \"react\";\nimport { Box } from \"@kodiak-finance/orderly-ui\";\nimport { SymbolPerformanceWidget } from \"./symbolPerformance.widget\";\n\nexport const SymbolPerformancePage: React.FC = () => {\n return (\n <Box\n p={6}\n pb={0}\n intensity={900}\n r=\"xl\"\n width=\"100%\"\n style={{\n minHeight: 379,\n maxHeight: 2560,\n overflow: \"auto\",\n }}\n >\n <SymbolPerformanceWidget />\n </Box>\n );\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/layout/context.tsx","../src/pages/overview/assets/assets.script.ts","../src/pages/overview/assets/assetsHeader.tsx","../src/pages/overview/assets/assets.ui.tsx","../src/pages/overview/assets/assets.widget.tsx","../src/pages/overview/assets/index.ts","../src/pages/overview/historyDataGroup/historyDataGroup.script.ts","../src/pages/overview/assetHistory/column.tsx","../src/pages/overview/helper/date.ts","../src/pages/overview/assetHistory/assetHistory.script.ts","../src/pages/overview/assetHistory/assetHistory.ui.tsx","../src/pages/overview/assetHistory/assetHistory.ui.mobile.tsx","../src/pages/overview/assetHistory/assetHistory.widget.tsx","../src/pages/overview/assetHistory/index.tsx","../src/pages/overview/funding/column.tsx","../src/pages/overview/funding/fundingHistory.ui.tsx","../src/pages/overview/funding/fundingHistory.ui.mobile.tsx","../src/pages/overview/funding/useDataSource.script.ts","../src/pages/overview/funding/fundingHistory.widget.tsx","../src/pages/overview/funding/index.tsx","../src/pages/overview/distribution/column.tsx","../src/pages/overview/distribution/distribution.ui.tsx","../src/pages/overview/distribution/distribution.ui.mobile.tsx","../src/pages/overview/distribution/useDataSource.script.ts","../src/pages/overview/distribution/distribution.widget.tsx","../src/pages/overview/distribution/index.tsx","../src/pages/overview/TransferHistory/transfer.mobile.ui.tsx","../src/pages/overview/TransferHistory/column.tsx","../src/pages/overview/TransferHistory/transfer.ui.tsx","../src/pages/overview/TransferHistory/useDataSource.script.ts","../src/pages/overview/TransferHistory/transfer.widget.tsx","../src/pages/overview/TransferHistory/index.tsx","../src/hooks/useAccountsData.ts","../src/hooks/useAssetTotalValue.ts","../src/pages/assets/assetsPage/assets.ui.desktop.tsx","../src/hooks/useAccountFilter.ts","../src/hooks/useAssetsAccountFilter.ts","../src/hooks/index.ts","../src/pages/assets/convertPage/convert.script.ts","../src/pages/assets/convertPage/convert.column.tsx","../src/pages/assets/convertPage/convert.ui.desktop.tsx","../src/pages/assets/convertPage/convert.ui.mobile.tsx","../src/pages/assets/convertPage/convert.widget.tsx","../src/pages/overview/VaultsHistory/column.tsx","../src/pages/overview/VaultsHistory/transfer.ui.tsx","../src/pages/overview/VaultsHistory/useDataSource.script.ts","../src/pages/overview/VaultsHistory/vaults.ui.mobile.tsx","../src/pages/overview/VaultsHistory/transfer.widget.tsx","../src/pages/overview/VaultsHistory/index.tsx","../src/pages/overview/historyDataGroup/historyDataGroup.ui.desktop.tsx","../src/pages/overview/historyDataGroup/historyDataGroup.ui.mobile.tsx","../src/pages/overview/historyDataGroup/historyDataGroup.widget.tsx","../src/pages/overview/historyDataGroup/index.ts","../src/pages/overview/provider/overviewContext.tsx","../src/pages/overview/assetChart/assetsChart.script.ts","../src/pages/overview/shared/useAssetHistory.ts","../src/pages/overview/shared/periodHeader.tsx","../src/pages/overview/assetChart/assetsChart.ui.tsx","../src/pages/overview/assetChart/assetsChart.widget.tsx","../src/pages/overview/assetChart/index.ts","../src/pages/overview/performance/performance.ui.tsx","../src/pages/assets/type.ts","../src/pages/overview/performance/performance.script.ts","../src/pages/overview/performance/performance.widget.tsx","../src/pages/overview/performance/index.ts","../src/pages/feeTier/icons/effectiveFee.tsx","../src/pages/feeTier/icons/index.ts","../src/pages/feeTier/feeTierHeader.tsx","../src/pages/api/apiManager.script.tsx","../src/pages/api/dialog/createApiKey.tsx","../src/pages/api/dialog/createdApiKey.tsx","../src/pages/api/dialog/deleteApiKey.tsx","../src/pages/api/dialog/editApiKey.tsx","../src/pages/api/apiManager.ui.tsx","../src/layout/layout.script.tsx","../src/layout/layout.ui.tsx","../src/layout/layout.ui.mobile.tsx","../src/layout/layout.widget.tsx","../src/pages/overview/index.tsx","../src/pages/overview/performanceMobileDialog/performance.ui.tsx","../src/pages/overview/mobile/useRewardsData.script.ts","../src/pages/overview/provider/overviewProvider.tsx","../src/pages/overview/performanceMobileDialog/performance.widget.tsx","../src/pages/overview/mobile/mobile.widget.tsx","../src/pages/overview/portfolioChartsMobile/portfolioChartsMobile.widget.tsx","../src/pages/overview/portfolioChartsMobile/portfolioChartsMobile.script.ts","../src/pages/overview/portfolioChartsMobile/portfolioChartsMobile.ui.tsx","../src/pages/overview/mobile/accountStatus.ui.mobile.tsx","../src/pages/overview/mobile/affiliateCard.ui.mobile.tsx","../src/pages/overview/mobile/portfolioHandle.ui.mobile.tsx","../src/pages/overview/mobile/portfolioVaule.ui.mobile.tsx","../src/pages/overview/mobile/settingRouter.ui.mobile.tsx","../src/pages/overview/mobile/traderCard.ui.mobile.tsx","../src/pages/overview/main.tsx","../src/pages/feeTier/index.tsx","../src/pages/feeTier/feeTier.ui.tsx","../src/pages/feeTier/feeTier.widget.tsx","../src/pages/feeTier/page.tsx","../src/pages/feeTier/column.tsx","../src/pages/feeTier/dataSource.ts","../src/pages/feeTier/feeTier.script.ts","../src/pages/positions/page.tsx","../src/pages/orders/page.tsx","../src/pages/api/index.ts","../src/pages/api/apiManager.widget.tsx","../src/pages/api/apiManager.page.tsx","../src/pages/setting/index.ts","../src/pages/setting/setting.script.tsx","../src/pages/setting/components/soundRadioButton.tsx","../src/pages/setting/components/themeSettingCard.tsx","../src/pages/setting/setting.ui.desktop.tsx","../src/pages/setting/setting.ui.mobile.tsx","../src/pages/setting/setting.ui.tsx","../src/pages/setting/setting.widget.tsx","../src/pages/setting/setting.page.tsx","../src/pages/assets/index.tsx","../src/pages/assets/assetsPage/assets.script.ts","../src/pages/assets/assetsPage/assets.column.tsx","../src/pages/assets/assetsPage/assets.widget.tsx","../src/pages/assets/assetsPage/assets.ui.mobile.tsx","../src/pages/assets/page.tsx","../src/pages/history/index.tsx","../src/pages/history/history.page.tsx","../src/pages/symbolPerformance/index.tsx","../src/pages/symbolPerformance/useSymbolPerformanceData.ts","../src/pages/symbolPerformance/useTrades.ts","../src/pages/symbolPerformance/symbolPerformance.script.ts","../src/pages/symbolPerformance/dateUtils.ts","../src/pages/symbolPerformance/pnlRankingChart.tsx","../src/pages/symbolPerformance/symbolSelector.tsx","../src/pages/symbolPerformance/useKlineData.ts","../src/pages/symbolPerformance/symbolPerformance.ui.tsx","../src/pages/symbolPerformance/pnlRankingChartMobile.tsx","../src/pages/symbolPerformance/symbolPerformance.ui.mobile.tsx","../src/pages/symbolPerformance/symbolPerformance.widget.tsx","../src/pages/symbolPerformance/page.tsx"],"names":["createContext","useContext","useState","useMemo","jsx","useWalletConnector","useAccount","useCollateral","useAppContext","usePositionStream","useLeverage","useLocalStorage","useScreen","DepositAndWithdrawWithSheetId","DepositAndWithdrawWithDialogId","AccountStatusEnum","modal","LeverageWidgetWithDialogId","useCallback","TransferSheetId","TransferDialogId","useMaxWithdrawal","useTranslation","jsxs","Flex","CardTitle","Button","ArrowDownSquareFillIcon","ArrowLeftRightIcon","ArrowUpSquareFillIcon","Card","Fragment","Statistic","Text","EyeIcon","EyeCloseIcon","Either","gradientTextVariants","Divider","AuthGuard","Grid","Tooltip","toast","TokenIcon","AssetHistoryStatusEnum","capitalizeFirstLetter","Decimal","differenceInDays","setHours","AssetHistorySideEnum","getYear","getMonth","getDate","useAppStore","subtractDaysFromCurrentDate","usePagination","startTime","endTime","set","useAssetsHistory","useTransferHistory","useChainInfo","dataSource","DataFilter","AuthGuardDataTable","Badge","ListView","EmptyDataState","ArrowRightShortIcon","init_column","useBadgeBySymbol","useSymbolsInfo","symbol","useFundingFeeHistory","type","init_useDataSource_script","useDistributionHistory","formatAddress","capitalizeString","produce","useColumns","React","useIndexPricesStream","cn","ArrowDownShortIcon","pick","Tabs","TabPanel","account","state","useSubAccountQuery","data","EMPTY_LIST","useModal","SimpleDialog","DataTable","ScrollIndicator","SimpleSheet","item","init_transfer_ui","useVaultsHistory","init_transfer_widget","LazyConvertHistoryWidget","useEffect","FeeTierIcon","ServerFillIcon","ArrowLeftRightSquareFill","VaultsIcon","LazyTransferHistoryWidget","useDataTap","PeriodType","localKey","formatDateRange","format","subDays","useRef","zero","usePrivateQuery","useStatisticsDaily","useUserStatistics","useBalanceTopic","totalValue","totalTransferIn","totalTransferOut","lastItem","Box","AssetAreaChart","LazyPeriodTitle","PnLBarChart","PnlAreaChart","VolBarChart","useId","numberToHumanStyle","useScaffoldContext","useFeeState","createElement","useApiKeyManager","res","hint","CopyIcon","Trans","AuthGuardTooltip","PlusIcon","AuthGuardEmpty","PortfolioLeftSidebarPath","Scaffold","SideBar","MainNavMobile","BottomNav","AssetLineChart","TWType","useGetClaimed","DistributionId","useCurEpochEstimate","useAllBrokers","noCacheConfig","useEpochInfo","useConfig","registerSimpleSheet","i18n","registerSimpleDialog","ChevronRightIcon","AreaChart","Area","useChains","ChainIcon","ChainNamespace","parseJSON","isNumber","AffiliateIcon","CalendarMinusIcon","getLinkDeviceStorage","SettingFillIcon","TraderMobileIcon","commifyOptional","useGetEnv","DepositStatusWidget","formatDiscountRate","ArrowRightUpSquareFillIcon","useAccountInfo","useSWR","exportToCSVFile","getPositionExportColumns","getPositionHistoryExportColumns","getLiquidationExportColumns","CombinePositionsWidget","PositionsWidget","PositionHistoryWidget","LiquidationWidget","InfoCircleIcon","page_exports","OrdersWidget","useMutation","useOrderlyContext","useOrderlyTheme","useDebouncedCallback","Select","Switch","LanguageSwitcherWidget","assets_exports","visible","holding","useCanTrade","addDays","usePrivateInfiniteQuery","AggregationWindow","window","parseISO","DropdownMenuRoot","DropdownMenuTrigger","CaretDownIcon","DropdownMenuPortal","DropdownMenuContent","Input","endOfDay","CombinedPnLChart","CombinedVolumeChart","CombinedPriceChart","CombinedFeesChart","formatCurrency","MakerTakerShare"],"mappings":"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","file":"index.js","sourcesContent":["import React, { createContext, useContext, useState, useMemo } from \"react\";\nimport type { RouterAdapter } from \"@kodiak-finance/orderly-types\";\n\ntype LayoutContextValue = {\n sideOpen: boolean;\n onSideOpenChange: (open: boolean) => void;\n routerAdapter?: RouterAdapter;\n};\n\nconst LayoutContext = createContext<LayoutContextValue>({\n sideOpen: true,\n} as LayoutContextValue);\n\nexport const useLayoutContext = () => {\n return useContext(LayoutContext);\n};\n\nexport const LayoutProvider: React.FC<\n React.PropsWithChildren<{ routerAdapter?: RouterAdapter }>\n> = (props) => {\n const { routerAdapter, children } = props;\n const [sideOpen, setSideOpen] = useState(true);\n const memoizedValue = useMemo<LayoutContextValue>(\n () => ({\n sideOpen: sideOpen,\n onSideOpenChange: setSideOpen,\n routerAdapter: routerAdapter,\n }),\n [sideOpen, setSideOpen, routerAdapter],\n );\n return (\n <LayoutContext.Provider value={memoizedValue}>\n {children}\n </LayoutContext.Provider>\n );\n};\n","import { useCallback, useMemo } from \"react\";\nimport {\n useAccount,\n useCollateral,\n useLeverage,\n useLocalStorage,\n usePositionStream,\n useWalletConnector,\n useMaxWithdrawal,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { useAppContext } from \"@kodiak-finance/orderly-react-app\";\nimport { AccountStatusEnum } from \"@kodiak-finance/orderly-types\";\nimport { modal, useScreen } from \"@kodiak-finance/orderly-ui\";\nimport { LeverageWidgetWithDialogId } from \"@kodiak-finance/orderly-ui-leverage\";\nimport {\n DepositAndWithdrawWithDialogId,\n DepositAndWithdrawWithSheetId,\n TransferDialogId,\n TransferSheetId,\n} from \"@kodiak-finance/orderly-ui-transfer\";\n\nexport const useAssetScript = () => {\n const { connect, namespace } = useWalletConnector();\n const { state, isMainAccount } = useAccount();\n const { totalValue, freeCollateral } = useCollateral();\n const { wrongNetwork, disabledConnect } = useAppContext();\n const [data] = usePositionStream();\n const { curLeverage } = useLeverage();\n const [visible, setVisible] = useLocalStorage(\"orderly_assets_visible\", true);\n const { isMobile } = useScreen();\n const handleDomId = isMobile\n ? DepositAndWithdrawWithSheetId\n : DepositAndWithdrawWithDialogId;\n const subAccounts = state.subAccounts ?? [];\n\n const canTrade = useMemo(() => {\n return (\n !wrongNetwork &&\n !disabledConnect &&\n (state.status === AccountStatusEnum.EnableTrading ||\n state.status === AccountStatusEnum.EnableTradingWithoutConnected)\n );\n }, [state.status, wrongNetwork, disabledConnect]);\n\n const onLeverageEdit = () => {\n modal.show(LeverageWidgetWithDialogId);\n };\n\n const onDeposit = useCallback(() => {\n modal.show(handleDomId, { activeTab: \"deposit\" });\n }, [handleDomId]);\n\n const onWithdraw = useCallback(() => {\n modal.show(handleDomId, { activeTab: \"withdraw\" });\n }, [handleDomId]);\n\n const onTransfer = useCallback(() => {\n if (isMobile) {\n modal.show(TransferSheetId);\n } else {\n modal.show(TransferDialogId);\n }\n }, [isMobile]);\n\n const maxWithdrawAmount = useMaxWithdrawal(\"USDC\");\n\n return {\n canTrade,\n connect,\n portfolioValue: totalValue,\n freeCollateral,\n maxWithdrawAmount,\n unrealPnL: data.aggregated.total_unreal_pnl,\n unrealROI: data.totalUnrealizedROI,\n currentLeverage: curLeverage,\n onLeverageEdit,\n visible,\n wrongNetwork,\n toggleVisible: () => setVisible(!visible),\n onDeposit,\n onWithdraw,\n onTransfer,\n namespace,\n isMainAccount,\n hasSubAccount: subAccounts?.length > 0,\n } as const;\n};\n\nexport type AssetScriptReturn = ReturnType<typeof useAssetScript>;\n","import { FC } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n ArrowDownSquareFillIcon,\n ArrowLeftRightIcon,\n ArrowUpSquareFillIcon,\n Button,\n CardTitle,\n Flex,\n} from \"@kodiak-finance/orderly-ui\";\n\ntype Props = {\n disabled: boolean;\n onWithdraw?: () => void;\n onDeposit?: () => void;\n onTransfer?: () => void;\n isMainAccount?: boolean;\n hasSubAccount?: boolean;\n};\n\nexport const AssetsHeader: FC<Props> = (props) => {\n const { t } = useTranslation();\n\n return (\n <Flex justify={\"between\"}>\n <CardTitle>{t(\"common.overview\")}</CardTitle>\n <Flex gap={3}>\n {props.isMainAccount && (\n <Button\n disabled={props.disabled}\n size=\"md\"\n onClick={() => props.onDeposit?.()}\n icon={\n <ArrowDownSquareFillIcon className=\"oui-text-primary-contrast\" />\n }\n data-testid=\"oui-testid-portfolio-assets-deposit-btn\"\n >\n {t(\"common.deposit\")}\n </Button>\n )}\n {props.hasSubAccount && (\n <Button\n disabled={props.disabled}\n size=\"md\"\n color=\"secondary\"\n onClick={() => props.onTransfer?.()}\n icon={<ArrowLeftRightIcon className=\"oui-text-base-contrast\" />}\n >\n {t(\"common.transfer\")}\n </Button>\n )}\n {props.isMainAccount && (\n <Button\n disabled={props.disabled}\n size=\"md\"\n color=\"secondary\"\n onClick={() => props.onWithdraw?.()}\n icon={<ArrowUpSquareFillIcon className=\"oui-text-base-contrast\" />}\n data-testid=\"oui-testid-portfolio-assets-withdraw-btn\"\n >\n {t(\"common.withdraw\")}\n </Button>\n )}\n </Flex>\n </Flex>\n );\n};\n","import React, { FC } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n Card,\n Divider,\n Flex,\n Grid,\n Either,\n Statistic,\n Text,\n EyeIcon,\n gradientTextVariants,\n EditIcon,\n EyeCloseIcon,\n Tooltip,\n} from \"@kodiak-finance/orderly-ui\";\nimport { AuthGuard } from \"@kodiak-finance/orderly-ui-connector\";\nimport { AssetScriptReturn } from \"./assets.script\";\nimport { AssetsHeader } from \"./assetsHeader\";\n\nexport const AssetsUI: React.FC<\n AssetScriptReturn & { onConnectWallet?: () => void }\n> = (props) => {\n const { t } = useTranslation();\n return (\n <Card\n classNames={{ footer: \"oui-h-[48px]\", root: \"oui-h-[240px]\" }}\n title={\n <AssetsHeader\n disabled={!props.canTrade}\n isMainAccount={props.isMainAccount}\n onDeposit={props.onDeposit}\n onWithdraw={props.onWithdraw}\n onTransfer={props.onTransfer}\n hasSubAccount={props.hasSubAccount}\n />\n }\n >\n <>\n <Statistic\n label={\n <Flex gap={1}>\n <Text intensity={54}>{t(\"common.totalValue\")}</Text>\n <button\n onClick={() => {\n props.toggleVisible();\n }}\n data-testid=\"oui-testid-portfolio-assets-eye-btn\"\n >\n {props.visible ? (\n <EyeIcon size={16} color={\"white\"} />\n ) : (\n <EyeCloseIcon size={16} color={\"white\"} />\n )}\n </button>\n </Flex>\n }\n >\n <Either value={props.canTrade!} left={<NoValue />}>\n <Text.numeral\n visible={props.visible}\n unit=\"USDC\"\n // @ts-ignore\n style={{ \"--oui-gradient-angle\": \"45deg\" }}\n unitClassName=\"oui-text-base oui-text-base-contrast-80 oui-h-9 oui-ml-1\"\n className={gradientTextVariants({\n className: \"oui-font-bold oui-text-3xl\",\n color: \"brand\",\n })}\n >\n {props.portfolioValue ?? \"--\"}\n </Text.numeral>\n </Either>\n </Statistic>\n <Divider className=\"oui-my-4\" intensity={8} />\n <AuthGuard buttonProps={{ size: \"lg\", fullWidth: true }}>\n <AssetStatistic\n unrealROI={props.unrealROI}\n unrealPnL={props.unrealPnL}\n freeCollateral={props.freeCollateral}\n maxWithdrawAmount={props.maxWithdrawAmount}\n currentLeverage={props.currentLeverage}\n onLeverageEdit={props.onLeverageEdit}\n visible={props.visible}\n />\n </AuthGuard>\n </>\n </Card>\n );\n};\n\nconst NoValue: FC = () => {\n return (\n <Flex gap={1} className={\"oui-h-9\"}>\n <Text.gradient color=\"brand\" weight=\"bold\">\n --\n </Text.gradient>\n <Text>USDC</Text>\n </Flex>\n );\n};\n\ntype AssetStatisticProps = Pick<\n AssetScriptReturn,\n | \"currentLeverage\"\n | \"unrealPnL\"\n | \"unrealROI\"\n | \"freeCollateral\"\n | \"onLeverageEdit\"\n | \"visible\"\n | \"maxWithdrawAmount\"\n>;\n\nexport const AssetStatistic = (props: AssetStatisticProps) => {\n const { t } = useTranslation();\n\n const maxWithdrawAmountText =\n props.maxWithdrawAmount === undefined || props.maxWithdrawAmount === null\n ? \"--\"\n : props.maxWithdrawAmount.toString();\n\n return (\n <Grid cols={2} className=\"oui-h-12\">\n <Statistic label={t(\"common.unrealizedPnl\")}>\n <Flex>\n <Text.pnl\n coloring\n size=\"lg\"\n weight=\"semibold\"\n visible={props.visible}\n >\n {props.unrealPnL}\n </Text.pnl>\n <Text.roi\n coloring\n rule=\"percentages\"\n size=\"sm\"\n weight=\"semibold\"\n prefix={\"(\"}\n suffix={\")\"}\n visible={props.visible}\n >\n {props.unrealROI}\n </Text.roi>\n </Flex>\n </Statistic>\n <Statistic\n label={\n <Tooltip\n content={t(\"transfer.withdraw.available.tooltip\", {\n amount: maxWithdrawAmountText,\n })}\n className=\"oui-max-w-[274px]\"\n delayDuration={300}\n >\n <Text\n size=\"xs\"\n intensity={36}\n className=\"oui-cursor-pointer oui-border-b oui-border-dashed oui-border-line-12\"\n >\n {t(\"portfolio.overview.availableWithdraw\")}\n </Text>\n </Tooltip>\n }\n // @ts-ignore\n align=\"right\"\n // @ts-ignore\n valueProps={{ size: \"lg\", visible: props.visible }}\n >\n {props.freeCollateral}\n </Statistic>\n </Grid>\n );\n};\n","import React from \"react\";\nimport { useAssetScript } from \"./assets.script\";\nimport { AssetsUI } from \"./assets.ui\";\n\nexport const AssetWidget: React.FC = () => {\n const { connect: connectWallet, ...rest } = useAssetScript();\n return (\n <AssetsUI\n // TODO: remove duplicate props\n onConnectWallet={connectWallet}\n connect={connectWallet}\n {...rest}\n />\n );\n};\n","export { useAssetScript } from \"./assets.script\";\nexport { AssetsUI } from \"./assets.ui\";\nexport { AssetWidget } from \"./assets.widget\";\n","import { useState } from \"react\";\n\nexport type TabName =\n | \"deposit\"\n | \"withdraw\"\n | \"funding\"\n | \"distribution\"\n | \"transfer\"\n | \"vaults\";\n\nexport const useHistoryDataGroupScript = () => {\n const [active, setActive] = useState<TabName>(\"deposit\");\n return {\n active,\n onTabChange: setActive as React.Dispatch<React.SetStateAction<string>>,\n } as const;\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useMemo } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { AssetHistoryStatusEnum } from \"@kodiak-finance/orderly-types\";\nimport {\n capitalizeFirstLetter,\n Text,\n Flex,\n TokenIcon,\n toast,\n type Column,\n} from \"@kodiak-finance/orderly-ui\";\nimport { Decimal } from \"@kodiak-finance/orderly-utils\";\n\ntype Options = {\n chainsInfo: any[];\n isDeposit: boolean;\n isWeb3Wallet: boolean;\n};\n\nexport const useAssetHistoryColumns = (options: Options) => {\n const { chainsInfo, isDeposit, isWeb3Wallet } = options;\n const { t } = useTranslation();\n\n const onCopy = (e: any) => {\n e.preventDefault();\n e.stopPropagation();\n toast.success(t(\"common.copy.copied\"));\n };\n\n const columns = useMemo<Column[]>(() => {\n const txIdColumn: Column = {\n title: t(\"common.txId\"),\n dataIndex: \"tx_id\",\n width: 120,\n render: (value, record) => {\n if (!value) {\n return <div className=\"oui-text-base-contrast-54\">-</div>;\n }\n const chainInfo = chainsInfo?.find(\n (item) => parseInt(record.chain_id) === parseInt(item.chain_id),\n );\n const explorer_base_url = chainInfo?.explorer_base_url;\n const href = `${explorer_base_url}/tx/${value}`;\n return (\n <a href={href} target=\"_blank\" rel=\"noreferrer\">\n {/* <Tooltip content={value} delayDuration={0}> */}\n <Text.formatted\n copyable={!!value}\n rule=\"txId\"\n className=\"oui-underline oui-decoration-line-16 oui-decoration-dashed oui-underline-offset-4\"\n onCopy={onCopy}\n >\n {value}\n </Text.formatted>\n {/* </Tooltip> */}\n </a>\n );\n },\n };\n\n const accountIdColumn: Column = {\n title: t(\"common.accountId\"),\n dataIndex: \"account_id\",\n width: 120,\n render: (value, record) => {\n const accountId = isDeposit\n ? record.from_account_id\n : record.to_account_id;\n\n return (\n <Text.formatted rule=\"address\" copyable={!!accountId} onCopy={onCopy}>\n {accountId}\n </Text.formatted>\n );\n },\n };\n\n return [\n {\n title: t(\"common.token\"),\n dataIndex: \"token\",\n width: 80,\n render: (value) => {\n return (\n <Flex gapX={1}>\n <TokenIcon name={value} size=\"xs\" />\n <span>{value}</span>\n </Flex>\n );\n },\n },\n {\n title: t(\"common.time\"),\n dataIndex: \"created_time\",\n width: 80,\n rule: \"date\",\n },\n isWeb3Wallet ? txIdColumn : accountIdColumn,\n {\n title: t(\"common.status\"),\n dataIndex: \"trans_status\",\n width: 100,\n render: (value, recoed) => {\n value = isWeb3Wallet ? value : recoed.status;\n const statusMap = {\n [AssetHistoryStatusEnum.NEW]: t(\"assetHistory.status.pending\"),\n [AssetHistoryStatusEnum.PENDING]: t(\"assetHistory.status.pending\"),\n [AssetHistoryStatusEnum.CONFIRM]: t(\"assetHistory.status.confirm\"),\n [AssetHistoryStatusEnum.PROCESSING]: t(\n \"assetHistory.status.processing\",\n ),\n [AssetHistoryStatusEnum.COMPLETED]: t(\n \"assetHistory.status.completed\",\n ),\n [AssetHistoryStatusEnum.FAILED]: t(\"assetHistory.status.failed\"),\n };\n return (\n statusMap[value as keyof typeof statusMap] ||\n capitalizeFirstLetter(value?.toLowerCase())\n );\n },\n },\n {\n title: t(\"common.amount\"),\n dataIndex: \"amount\",\n width: 100,\n rule: \"price\",\n render: (value, record) => {\n const netAmount = new Decimal(value).minus(record.fee ?? 0);\n return (\n <Text.numeral\n dp={record.decimals}\n rule=\"price\"\n coloring\n showIdentifier\n padding={false}\n >\n {isDeposit ? netAmount.toNumber() : netAmount.neg().toNumber()}\n </Text.numeral>\n );\n },\n },\n ];\n }, [t, chainsInfo, isDeposit, isWeb3Wallet]);\n\n return columns;\n};\n","import { differenceInDays, setHours } from \"date-fns\";\n\nexport const parseDateRangeForFilter = (dateRange: {\n from: Date;\n to?: Date;\n}) => {\n const { from, to = new Date() } = dateRange;\n\n const diff = differenceInDays(from, to);\n\n if (diff === 0) {\n return [from, setHours(to, 23)];\n }\n\n return [from, to];\n};\n","import { useCallback, useMemo, useState } from \"react\";\nimport { getDate, getMonth, getYear, set } from \"date-fns\";\nimport {\n useAssetsHistory,\n useChainInfo,\n useAppStore,\n useTransferHistory,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { AssetHistorySideEnum } from \"@kodiak-finance/orderly-types\";\nimport { modal, usePagination } from \"@kodiak-finance/orderly-ui\";\nimport { DepositAndWithdrawWithSheetId } from \"@kodiak-finance/orderly-ui-transfer\";\nimport { subtractDaysFromCurrentDate } from \"@kodiak-finance/orderly-utils\";\nimport { parseDateRangeForFilter } from \"../helper/date\";\n\nexport enum AssetTarget {\n Web3Wallet = \"Web3Wallet\",\n AccountId = \"AccountId\",\n}\n\nexport type AssetHistoryScriptOptions = {\n side: AssetHistorySideEnum;\n};\n\nexport type AssetHistoryScriptReturn = ReturnType<typeof useAssetHistoryScript>;\n\nexport const useAssetHistoryScript = (options: AssetHistoryScriptOptions) => {\n const { side } = options;\n const isDeposit = side === AssetHistorySideEnum.DEPOSIT;\n\n const [today] = useState(() => {\n const d = new Date();\n return new Date(getYear(d), getMonth(d), getDate(d), 0, 0, 0);\n });\n\n const tokensInfo = useAppStore((state) => state.tokensInfo);\n\n const [target, setTarget] = useState<AssetTarget>(AssetTarget.Web3Wallet);\n\n const [dateRange, setDateRange] = useState<Date[]>([\n subtractDaysFromCurrentDate(90, today),\n today,\n ]);\n const { page, pageSize, setPage, parsePagination } = usePagination();\n\n const { startTime, endTime } = useMemo(() => {\n const startTime = dateRange[0].getTime();\n const endTime = set(dateRange[1], {\n hours: 23,\n minutes: 59,\n seconds: 59,\n milliseconds: 0,\n }).getTime();\n\n return { startTime, endTime };\n }, [dateRange]);\n\n const [assetData, { meta: assetMeta, isLoading: assetLoading }] =\n useAssetsHistory(\n {\n startTime,\n endTime,\n page,\n pageSize,\n side,\n },\n {\n shouldUpdateOnWalletChanged: (data) => data.side === side,\n },\n );\n\n const [transferData, { isLoading: transferLoading, meta: transferMeta }] =\n useTransferHistory({\n dataRange: [startTime, endTime],\n side: isDeposit ? \"IN\" : \"OUT\",\n size: pageSize,\n page: page,\n main_sub_only: false,\n });\n\n const { data: chainsInfo } = useChainInfo();\n\n const onFilter = (filter: { name: string; value: any }) => {\n if (filter.name === \"dateRange\") {\n setDateRange(parseDateRangeForFilter(filter.value));\n setPage(1);\n } else if (filter.name === \"target\") {\n setTarget(filter.value);\n setPage(1);\n }\n };\n\n const isLoading = useMemo(() => {\n if (target === AssetTarget.Web3Wallet) {\n return assetLoading;\n }\n return transferLoading;\n }, [target, assetLoading, transferLoading]);\n\n const meta = useMemo(() => {\n if (target === AssetTarget.Web3Wallet) {\n return assetMeta;\n }\n return transferMeta;\n }, [target, assetMeta, transferMeta]);\n\n const pagination = useMemo(\n () => parsePagination(meta),\n [parsePagination, meta],\n );\n\n const dataSource = useMemo(() => {\n return (target === AssetTarget.Web3Wallet ? assetData : transferData).map(\n (item) => {\n const findToken = tokensInfo?.find(({ token }) => token === item.token);\n return {\n ...item,\n decimals: findToken?.decimals ?? 2,\n };\n },\n );\n }, [target, assetData, transferData, tokensInfo]);\n\n const onDeposit = useCallback(() => {\n modal.show(DepositAndWithdrawWithSheetId, { activeTab: \"deposit\" });\n }, []);\n\n const isWeb3Wallet = target === AssetTarget.Web3Wallet;\n\n return {\n dataSource,\n total: meta?.total,\n isLoading,\n queryParameter: {\n target,\n dateRange,\n },\n onFilter,\n pagination,\n onDeposit,\n chainsInfo: chainsInfo as any[],\n isDeposit,\n isWeb3Wallet,\n };\n};\n","import { FC, useMemo } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { DataFilter } from \"@kodiak-finance/orderly-ui\";\nimport { AuthGuardDataTable } from \"@kodiak-finance/orderly-ui-connector\";\nimport {\n AssetTarget,\n type AssetHistoryScriptReturn,\n} from \"./assetHistory.script\";\nimport { useAssetHistoryColumns } from \"./column\";\n\ntype AssetHistoryProps = AssetHistoryScriptReturn;\n\nexport const AssetHistory: FC<AssetHistoryProps> = (props) => {\n const { dataSource, queryParameter, onFilter, isLoading } = props;\n const { dateRange, target } = queryParameter;\n const columns = useAssetHistoryColumns({\n chainsInfo: props.chainsInfo,\n isDeposit: props.isDeposit,\n isWeb3Wallet: props.isWeb3Wallet,\n });\n const { t } = useTranslation();\n\n const options = useMemo(() => {\n return [\n { label: t(\"common.web3Wallet\"), value: AssetTarget.Web3Wallet },\n { label: t(\"common.accountId\"), value: AssetTarget.AccountId },\n ];\n }, [t]);\n\n return (\n <>\n <DataFilter\n items={[\n {\n type: \"select\",\n name: \"target\",\n options: options,\n value: target,\n },\n {\n type: \"range\",\n name: \"dateRange\",\n value: {\n from: dateRange[0],\n to: dateRange[1],\n },\n },\n ]}\n onFilter={(value) => {\n onFilter(value);\n }}\n />\n\n <AuthGuardDataTable\n bordered\n loading={isLoading}\n classNames={{\n root: \"oui-h-[calc(100%_-_49px)]\",\n scroll: \"oui-min-h-[400px]\",\n }}\n columns={columns}\n dataSource={dataSource}\n pagination={props.pagination}\n />\n </>\n );\n};\n","import { FC, useMemo } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { AssetHistoryStatusEnum } from \"@kodiak-finance/orderly-types\";\nimport {\n Badge,\n DataFilter,\n Flex,\n ListView,\n Text,\n capitalizeFirstLetter,\n toast,\n ArrowRightShortIcon,\n EmptyDataState,\n} from \"@kodiak-finance/orderly-ui\";\nimport {\n AssetTarget,\n type AssetHistoryScriptReturn,\n} from \"./assetHistory.script\";\n\ntype AssetHistoryMobileProps = AssetHistoryScriptReturn;\n\nexport const AssetHistoryMobile: FC<AssetHistoryMobileProps> = (props) => {\n const {\n dataSource,\n queryParameter,\n onFilter,\n isLoading,\n pagination,\n onDeposit,\n chainsInfo,\n isDeposit,\n isWeb3Wallet,\n } = props;\n const { dateRange, target } = queryParameter;\n const { t } = useTranslation();\n\n const options = useMemo(() => {\n return [\n { label: t(\"common.web3Wallet\"), value: AssetTarget.Web3Wallet },\n { label: t(\"common.accountId\"), value: AssetTarget.AccountId },\n ];\n }, [t]);\n\n const loadMore = () => {\n if (dataSource.length < (pagination?.count || 0)) {\n pagination?.onPageSizeChange?.(pagination?.pageSize + 50);\n }\n };\n\n const getStatusText = (item: any) => {\n const status = props.isWeb3Wallet ? item.trans_status : item.status;\n const statusMap = {\n [AssetHistoryStatusEnum.NEW]: t(\"assetHistory.status.pending\"),\n [AssetHistoryStatusEnum.PENDING]: t(\"assetHistory.status.pending\"),\n [AssetHistoryStatusEnum.CONFIRM]: t(\"assetHistory.status.confirm\"),\n [AssetHistoryStatusEnum.PROCESSING]: t(\"assetHistory.status.processing\"),\n [AssetHistoryStatusEnum.COMPLETED]: t(\"assetHistory.status.completed\"),\n [AssetHistoryStatusEnum.FAILED]: t(\"assetHistory.status.failed\"),\n };\n return (\n statusMap[status as keyof typeof statusMap] ||\n capitalizeFirstLetter(status?.toLowerCase())\n );\n };\n\n const renderHistoryItem = (item: any) => {\n // Amount formatting\n const formattedAmount = isDeposit\n ? `+${item.amount - (item.fee ?? 0)}`\n : -(item.amount - (item.fee ?? 0));\n\n // Get tx link\n const getTxLink = () => {\n if (!item.tx_id) {\n return undefined;\n }\n\n const chainInfo =\n chainsInfo && Array.isArray(chainsInfo)\n ? chainsInfo.find(\n (chain: any) =>\n parseInt(item.chain_id) === parseInt(chain.chain_id),\n )\n : undefined;\n\n if (chainInfo?.explorer_base_url) {\n return `${chainInfo.explorer_base_url}/tx/${item.tx_id}`;\n }\n\n return undefined;\n };\n\n const onCopy = (e: any) => {\n e.preventDefault();\n e.stopPropagation();\n toast.success(t(\"common.copy.copied\"));\n };\n\n const itemColor = isDeposit ? \"buy\" : \"sell\";\n\n const amountView = (\n <Flex className=\"oui-text-xs\">\n <Text color={itemColor}>{formattedAmount}</Text>\n <Text className=\"oui-ml-1\" intensity={80}>\n {item.token}\n </Text>\n {isWeb3Wallet && (\n <Badge color={itemColor} className=\"oui-ml-2\">\n {isDeposit ? t(\"common.deposit\") : t(\"common.withdraw\")}\n </Badge>\n )}\n </Flex>\n );\n\n const statusView = (\n <Text intensity={isWeb3Wallet ? 80 : 36} size=\"xs\">\n {getStatusText(item)}\n </Text>\n );\n\n const timeView = (\n <Text.formatted rule=\"date\" intensity={36} size=\"2xs\">\n {item.created_time}\n </Text.formatted>\n );\n\n const txIdView = item.tx_id ? (\n <a href={getTxLink()} target=\"_blank\" rel=\"noreferrer\">\n <Text.formatted\n copyable={!!item.tx_id}\n className=\"oui-underline oui-decoration-line-16 oui-decoration-dashed oui-underline-offset-4\"\n rule=\"txId\"\n onCopy={onCopy}\n intensity={36}\n size=\"xs\"\n >\n {item.tx_id}\n </Text.formatted>\n </a>\n ) : (\n <Text intensity={54}>-</Text>\n );\n\n const accountId = isDeposit ? item.from_account_id : item.to_account_id;\n\n const accountIdView = (\n <Flex gapX={1}>\n <Text intensity={36} size=\"xs\">\n {isDeposit\n ? t(\"transfer.internalTransfer.from\")\n : t(\"transfer.internalTransfer.to\")}\n </Text>\n <Text.formatted\n rule=\"address\"\n copyable={!!accountId}\n onCopy={onCopy}\n intensity={80}\n size=\"xs\"\n >\n {accountId}\n </Text.formatted>\n </Flex>\n );\n\n return (\n <Flex\n p={2}\n direction=\"column\"\n gapY={1}\n intensity={900}\n r=\"xl\"\n className=\"oui-font-semibold\"\n >\n <Flex justify=\"between\" width=\"100%\" height=\"18px\">\n {isWeb3Wallet ? (\n <>\n {amountView}\n {statusView}\n </>\n ) : (\n <>\n {accountIdView}\n {amountView}\n </>\n )}\n </Flex>\n\n <Flex justify=\"between\" width=\"100%\" height=\"18px\">\n {timeView}\n {isWeb3Wallet ? txIdView : statusView}\n </Flex>\n </Flex>\n );\n };\n\n return (\n <>\n <DataFilter\n items={[\n {\n type: \"picker\",\n name: \"target\",\n options: options,\n value: target,\n size: \"md\",\n },\n {\n type: \"range\",\n name: \"dateRange\",\n value: {\n from: dateRange[0],\n to: dateRange[1],\n },\n },\n ]}\n onFilter={(value) => {\n onFilter(value);\n }}\n className=\"oui-sticky oui-top-[44px] oui-z-10 oui-border-none oui-bg-base-10 oui-px-3 oui-py-2\"\n />\n\n <ListView\n dataSource={dataSource}\n renderItem={renderHistoryItem}\n contentClassName=\"!oui-space-y-1\"\n loadMore={loadMore}\n isLoading={isLoading}\n className=\"oui-px-1\"\n emptyView={\n <Flex\n direction={\"column\"}\n height={\"100%\"}\n itemAlign={\"center\"}\n justify={\"center\"}\n mt={3}\n >\n <EmptyDataState />\n {dataSource?.length == 0 && (\n <Flex\n direction=\"row\"\n itemAlign=\"center\"\n justify=\"center\"\n onClick={onDeposit}\n className=\"oui-mt-2 oui-h-4 oui-w-full oui-text-secondary\"\n >\n <Text color=\"primary\" size=\"2xs\">\n {t(\"common.deposit\")}\n </Text>\n <ArrowRightShortIcon\n className=\"oui-ml-0.5 oui-size-4 oui-text-primary oui-opacity-100\"\n color=\"primary\"\n size={16}\n opacity={100}\n />\n </Flex>\n )}\n </Flex>\n }\n />\n </>\n );\n};\n","import React from \"react\";\nimport { AssetHistorySideEnum } from \"@kodiak-finance/orderly-types\";\nimport { useScreen } from \"@kodiak-finance/orderly-ui\";\nimport { useAssetHistoryScript } from \"./assetHistory.script\";\nimport { AssetHistory } from \"./assetHistory.ui\";\nimport { AssetHistoryMobile } from \"./assetHistory.ui.mobile\";\n\ntype AssetHistoryWidgetProps = {\n side: AssetHistorySideEnum;\n};\n\nexport const AssetHistoryWidget: React.FC<AssetHistoryWidgetProps> = (\n props,\n) => {\n const state = useAssetHistoryScript({ side: props.side });\n const { isMobile } = useScreen();\n if (isMobile) {\n return <AssetHistoryMobile {...state} />;\n }\n return <AssetHistory {...state} />;\n};\n","export { useAssetHistoryColumns } from \"./column\";\nexport { useAssetHistoryScript } from \"./assetHistory.script\";\nexport { AssetHistory } from \"./assetHistory.ui\";\nexport { AssetHistoryWidget } from \"./assetHistory.widget\";\n","import { useMemo } from \"react\";\nimport { useBadgeBySymbol } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { API } from \"@kodiak-finance/orderly-types\";\nimport { Flex, Text, type Column } from \"@kodiak-finance/orderly-ui\";\n\nconst SymbolBadge = (props: { symbol: string }) => {\n const { brokerId, brokerName, brokerNameRaw } = useBadgeBySymbol(\n props.symbol,\n );\n\n return (\n <Text.symbolBadge\n badge={brokerName ?? brokerId ?? undefined}\n fullName={brokerNameRaw}\n className=\"oui-cursor-pointer\"\n showIcon\n >\n {props.symbol}\n </Text.symbolBadge>\n );\n};\n\nexport const useFundingHistoryColumns = () => {\n const { t } = useTranslation();\n\n const columns = useMemo(() => {\n return [\n {\n title: t(\"common.symbol\"),\n dataIndex: \"symbol\",\n width: 80,\n render: (value: string) => <SymbolBadge symbol={value} />,\n },\n {\n title: t(\"common.time\"),\n dataIndex: \"created_time\",\n width: 120,\n rule: \"date\",\n },\n {\n title: `${t(\"funding.fundingRate\")} / ${t(\"funding.annualRate\")}`,\n dataIndex: \"funding_rate\",\n width: 80,\n render: (value: any, record) => {\n return (\n <Flex gap={1}>\n {/* <span>{`${record.funding_rate * 100}%`}</span> */}\n <Text.numeral rule={\"percentages\"} dp={6}>\n {record.funding_rate}\n </Text.numeral>\n <span>/</span>\n {/* <span>{`${record.annual_rate * 10}%`}</span> */}\n <Text.numeral rule={\"percentages\"} dp={6}>\n {record.annual_rate}\n </Text.numeral>\n </Flex>\n );\n },\n },\n {\n title: t(\"funding.paymentType\"),\n dataIndex: \"payment_type\",\n width: 80,\n render: (value: any) => {\n switch (value) {\n case \"Pay\":\n case \"Paid\":\n return t(\"funding.paymentType.paid\");\n case \"Receive\":\n case \"Received\":\n return t(\"funding.paymentType.received\");\n default:\n return value;\n }\n },\n },\n {\n title: `${t(\"funding.fundingFee\")} (USDC)`,\n dataIndex: \"funding_fee\",\n width: 80,\n rule: \"price\",\n formatter(value, record, index) {\n return Number(value) * -1;\n },\n numeralProps: {\n coloring: true,\n showIdentifier: true,\n ignoreDP: true,\n },\n },\n ] as Column<API.FundingFeeRow & { annual_rate: number }>[];\n }, [t]);\n\n return columns;\n};\n","import { FC, useMemo } from \"react\";\nimport { useSymbolsInfo } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { DataFilter } from \"@kodiak-finance/orderly-ui\";\nimport { AuthGuardDataTable } from \"@kodiak-finance/orderly-ui-connector\";\nimport { useFundingHistoryColumns } from \"./column\";\nimport { type UseFundingHistoryReturn } from \"./useDataSource.script\";\n\ntype FundingHistoryProps = {} & UseFundingHistoryReturn;\n\nexport const FundingHistoryDesktop: FC<FundingHistoryProps> = (props) => {\n const { dataSource, queryParameter, onFilter, isLoading } = props;\n const columns = useFundingHistoryColumns();\n const symbols = useSymbolsInfo();\n const { symbol, dateRange } = queryParameter;\n const { t } = useTranslation();\n\n const options = useMemo(() => {\n return [\n {\n label: t(\"common.all\"),\n value: \"All\",\n },\n ...Object.keys(symbols).map((symbol) => {\n const s = symbol.split(\"_\")[1];\n return {\n label: s,\n value: symbol,\n };\n }),\n ];\n }, [t, symbols]);\n\n return (\n <>\n <DataFilter\n items={[\n {\n type: \"select\",\n name: \"symbol\",\n isCombine: true,\n options,\n value: symbol,\n valueFormatter: (value) => {\n const option = options.find((item) => item.value === value);\n return option?.label || value;\n },\n },\n {\n type: \"range\",\n name: \"dateRange\",\n value: {\n from: dateRange[0],\n to: dateRange[1],\n },\n },\n ]}\n onFilter={(value) => {\n onFilter(value);\n }}\n />\n <AuthGuardDataTable\n bordered\n columns={columns}\n dataSource={dataSource}\n loading={isLoading}\n generatedRowKey={(record) => `${record.updated_time}`}\n classNames={{ root: \"oui-h-[calc(100%_-_49px)]\" }}\n pagination={props.pagination}\n />\n </>\n );\n};\n","import { FC, useMemo } from \"react\";\nimport { useSymbolsInfo } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n DataFilter,\n Flex,\n ListView,\n Text,\n Badge,\n} from \"@kodiak-finance/orderly-ui\";\nimport { SymbolBadge } from \"./symbolBadge\";\nimport { type UseFundingHistoryReturn } from \"./useDataSource.script\";\n\ntype FundingHistoryProps = {} & UseFundingHistoryReturn;\n\nexport const FundingHistoryMobile: FC<FundingHistoryProps> = (props) => {\n const { dataSource, queryParameter, onFilter, isLoading, pagination } = props;\n const symbols = useSymbolsInfo();\n const { symbol, dateRange } = queryParameter;\n const { t } = useTranslation();\n\n const switchPaymentType = (paymentType: string) => {\n switch (paymentType) {\n case \"Pay\":\n case \"Paid\":\n return t(\"funding.paymentType.paid\");\n case \"Receive\":\n case \"Received\":\n return t(\"funding.paymentType.received\");\n default:\n return paymentType;\n }\n };\n\n const loadMore = () => {\n if (dataSource && dataSource.length < (pagination?.count || 0)) {\n pagination?.onPageSizeChange?.(pagination?.pageSize + 50);\n }\n };\n\n const renderHistoryItem = (item: any) => {\n return (\n <Flex\n p={2}\n direction=\"column\"\n gapY={2}\n className=\"oui-rounded-xl oui-bg-base-9 oui-font-semibold\"\n >\n <Flex direction=\"row\" justify=\"between\" width=\"100%\" height=\"20px\">\n <Text.formatted\n rule=\"symbol\"\n className=\"oui-text-base-contrast oui-mr-1 oui-text-sm\"\n >\n {item.symbol}\n </Text.formatted>\n <Badge color=\"neutral\" size=\"xs\">\n {switchPaymentType(item.payment_type)}\n </Badge>\n <Text.formatted\n rule=\"date\"\n className=\"oui-text-base-contrast-36 oui-text-2xs oui-ml-auto\"\n >\n {item.created_time}\n </Text.formatted>\n </Flex>\n <div className=\"oui-w-full oui-h-[1px] oui-bg-base-6\" />\n <Flex direction=\"row\" justify=\"between\" width=\"100%\">\n <Flex direction=\"column\">\n <Text className=\"oui-text-base-contrast-36 oui-text-2xs\">\n {t(\"funding.fundingRate\")}\n </Text>\n <Text.numeral\n rule={\"percentages\"}\n dp={6}\n className=\"oui-text-base-contrast-80 oui-text-xs\"\n >\n {item.funding_rate}\n </Text.numeral>\n </Flex>\n <Flex direction=\"column\">\n <Text className=\"oui-text-base-contrast-36 oui-text-2xs\">\n {t(\"funding.annualRate\")}\n </Text>\n <Text.numeral\n rule={\"percentages\"}\n dp={6}\n className=\"oui-text-base-contrast-80 oui-text-xs\"\n >\n {item.annual_rate}\n </Text.numeral>\n </Flex>\n <Flex direction=\"column\">\n <Text className=\"oui-text-base-contrast-36 oui-text-2xs\">\n {t(\"funding.fundingFee\")}{\" \"}\n <Text className=\"oui-text-base-contrast-20\">(USDC)</Text>\n </Text>\n <Text.numeral\n dp={6}\n ignoreDP={true}\n coloring={true}\n showIdentifier={true}\n className=\"oui-text-xs oui-self-end\"\n >\n {Number(item.funding_fee) * -1}\n </Text.numeral>\n </Flex>\n </Flex>\n </Flex>\n );\n };\n\n const options = useMemo(() => {\n return [\n {\n label: t(\"common.all\"),\n value: \"All\",\n },\n ...Object.keys(symbols).map((symbol) => {\n const s = symbol.split(\"_\")[1];\n return {\n label: s,\n value: symbol,\n };\n }),\n ];\n }, [t, symbols]);\n\n return (\n <>\n <DataFilter\n items={[\n {\n type: \"select\",\n name: \"symbol\",\n isCombine: true,\n options,\n value: symbol,\n valueFormatter: (value) => {\n const option = options.find((item) => item.value === value);\n return option?.label || value;\n },\n },\n {\n type: \"range\",\n name: \"dateRange\",\n value: {\n from: dateRange[0],\n to: dateRange[1],\n },\n },\n ]}\n onFilter={(value) => {\n onFilter(value);\n }}\n className=\"oui-px-3 oui-py-2 oui-sticky oui-top-[44px] oui-z-10 oui-bg-base-10\"\n />\n <ListView\n dataSource={dataSource}\n renderItem={renderHistoryItem}\n contentClassName=\"!oui-space-y-1\"\n loadMore={loadMore}\n isLoading={isLoading}\n className=\"oui-px-1\"\n />\n </>\n );\n};\n","import { useFundingFeeHistory } from \"@kodiak-finance/orderly-hooks\";\nimport { usePagination } from \"@kodiak-finance/orderly-ui\";\nimport { subtractDaysFromCurrentDate } from \"@kodiak-finance/orderly-utils\";\nimport { useMemo, useState } from \"react\";\nimport { parseDateRangeForFilter } from \"../helper/date\";\nimport { getDate, getMonth, getYear, set } from \"date-fns\";\n\nexport const useFundingHistoryHook = () => {\n // const today = useRef(setMinutes(setHours(new Date(), 23), 59));\n\n const [today] = useState(() => {\n const d = new Date();\n\n return new Date(getYear(d), getMonth(d), getDate(d), 0, 0, 0);\n });\n\n const [dateRange, setDateRange] = useState<Date[]>([\n subtractDaysFromCurrentDate(90, today),\n today,\n ]);\n\n const [symbol, setSymbol] = useState<string>(\"All\");\n const { page, pageSize, setPage, parsePagination } = usePagination();\n\n const [data, { isLoading, meta, isValidating }] = useFundingFeeHistory(\n {\n // dataRange: dateRange.map((date) => date.getTime()),\n dataRange: [\n dateRange[0].getTime(),\n set(dateRange[1], {\n hours: 23,\n minutes: 59,\n seconds: 59,\n milliseconds: 0,\n })\n // addDays(dateRange[1], 1)\n .getTime(),\n ],\n symbol,\n page,\n pageSize,\n },\n {\n keepPreviousData: true,\n }\n );\n\n const onFilter = (filter: { name: string; value: any }) => {\n if (filter.name === \"symbol\") {\n setSymbol(filter.value);\n setPage(1);\n }\n\n if (filter.name === \"dateRange\") {\n // setDateRange([filter.value.from, filter.value.to]);\n setDateRange(parseDateRangeForFilter(filter.value));\n setPage(1);\n }\n };\n\n const pagination = useMemo(\n () => parsePagination(meta),\n [parsePagination, meta]\n );\n\n return {\n dataSource: data,\n isLoading,\n isValidating,\n // onDateRangeChange,\n queryParameter: {\n symbol,\n dateRange,\n },\n onFilter,\n pagination,\n } as const;\n};\n\nexport type UseFundingHistoryReturn = ReturnType<typeof useFundingHistoryHook>;\n","import React from \"react\";\nimport { useScreen } from \"@kodiak-finance/orderly-ui\";\nimport { FundingHistoryDesktop } from \"./fundingHistory.ui\";\nimport { FundingHistoryMobile } from \"./fundingHistory.ui.mobile\";\nimport { useFundingHistoryHook } from \"./useDataSource.script\";\n\nexport const FundingHistoryWidget: React.FC = () => {\n const state = useFundingHistoryHook();\n const { isMobile } = useScreen();\n if (isMobile) {\n return <FundingHistoryMobile {...state} />;\n }\n return <FundingHistoryDesktop {...state} />;\n};\n","export { FundingHistoryWidget } from \"./fundingHistory.widget\";\nexport { FundingHistoryDesktop } from \"./fundingHistory.ui\";\nexport { FundingHistoryMobile } from \"./fundingHistory.ui.mobile\";\nexport { useFundingHistoryColumns } from \"./column\";\nexport { useFundingHistoryHook } from \"./useDataSource.script\";\n","import { useMemo } from \"react\";\nimport { useTranslation, i18n } from \"@kodiak-finance/orderly-i18n\";\nimport { API } from \"@kodiak-finance/orderly-types\";\nimport { Flex, type Column, TokenIcon } from \"@kodiak-finance/orderly-ui\";\n\nexport const useColumns = () => {\n const { t } = useTranslation();\n\n const columns = useMemo(() => {\n return [\n {\n title: t(\"common.token\"),\n dataIndex: \"token\",\n width: 80,\n // rule: \"symbol\",\n render: (value, record) => {\n return (\n <Flex gapX={2}>\n <TokenIcon name={value} size=\"xs\" />\n <span>{value}</span>\n </Flex>\n );\n },\n },\n {\n title: t(\"common.time\"),\n dataIndex: \"updated_time\",\n width: 120,\n rule: \"date\",\n },\n {\n title: t(\"common.status\"),\n dataIndex: \"status\",\n width: 120,\n formatter(value, record, index) {\n switch (value) {\n case \"CREATED\":\n case \"SPLIT\":\n return t(\"assetHistory.status.processing\");\n case \"COMPLETED\":\n default:\n return t(\"assetHistory.status.completed\");\n }\n },\n },\n\n {\n title: t(\"common.type\"),\n dataIndex: \"type\",\n width: 80,\n formatter: (value: any) => {\n switch (value) {\n case \"REFERRER_REBATE\":\n return t(\n \"portfolio.overview.distribution.type.referralCommission\",\n );\n case \"REFEREE_REBATE\":\n return t(\"portfolio.overview.distribution.type.refereeRebate\");\n case \"BROKER_FEE\":\n return t(\"portfolio.overview.distribution.type.brokerFee\");\n default:\n return \"-\";\n }\n },\n },\n {\n title: t(\"common.amount\"),\n dataIndex: \"amount\",\n width: 80,\n // rule: \"price\",\n },\n ] as Column<API.FundingFeeRow & { annual_rate: number }>[];\n }, [t]);\n\n return columns;\n};\n","import { FC, useMemo } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { DataFilter } from \"@kodiak-finance/orderly-ui\";\nimport { AuthGuardDataTable } from \"@kodiak-finance/orderly-ui-connector\";\nimport { useColumns } from \"./column\";\nimport { type useDistributionHistoryHookReturn } from \"./useDataSource.script\";\n\ntype FundingHistoryProps = {} & useDistributionHistoryHookReturn;\n\nexport const DistributionHistoryDesktop: FC<FundingHistoryProps> = (props) => {\n const { dataSource, queryParameter, onFilter, isLoading, isValidating } =\n props;\n const columns = useColumns();\n const { type, dateRange } = queryParameter;\n const { t } = useTranslation();\n\n const TYPES = useMemo(() => {\n return [\n { label: t(\"common.all\"), value: \"All\" },\n {\n label: t(\"portfolio.overview.distribution.type.referralCommission\"),\n value: \"REFERRER_REBATE\",\n },\n {\n label: t(\"portfolio.overview.distribution.type.refereeRebate\"),\n value: \"REFEREE_REBATE\",\n },\n {\n label: t(\"portfolio.overview.distribution.type.brokerFee\"),\n value: \"BROKER_FEE\",\n },\n ];\n }, [t]);\n\n return (\n <>\n <DataFilter\n items={[\n {\n type: \"select\",\n name: \"type\",\n options: TYPES,\n value: type,\n },\n {\n type: \"range\",\n name: \"dateRange\",\n value: {\n from: dateRange[0],\n to: dateRange[1],\n },\n },\n ]}\n onFilter={(value) => {\n onFilter(value);\n }}\n />\n <AuthGuardDataTable\n bordered\n columns={columns}\n dataSource={dataSource}\n loading={isLoading}\n // isValidating={isValidating}\n className=\"oui-font-semibold\"\n classNames={{\n root: \"oui-h-[calc(100%_-_49px)]\",\n }}\n pagination={props.pagination}\n />\n </>\n );\n};\n","import { FC, useMemo } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { DataFilter, Flex, Text, TokenIcon } from \"@kodiak-finance/orderly-ui\";\nimport { ListView } from \"@kodiak-finance/orderly-ui\";\nimport { type useDistributionHistoryHookReturn } from \"./useDataSource.script\";\n\ntype FundingHistoryProps = {} & useDistributionHistoryHookReturn;\n\nexport const DistributionHistoryMobile: FC<FundingHistoryProps> = (props) => {\n const { dataSource, queryParameter, onFilter, isLoading, pagination } = props;\n const { type, dateRange } = queryParameter;\n const { t } = useTranslation();\n\n const TYPES = useMemo(() => {\n return [\n { label: t(\"common.all\"), value: \"All\" },\n {\n label: t(\"portfolio.overview.distribution.type.referralCommission\"),\n value: \"REFERRER_REBATE\",\n },\n {\n label: t(\"portfolio.overview.distribution.type.refereeRebate\"),\n value: \"REFEREE_REBATE\",\n },\n {\n label: t(\"portfolio.overview.distribution.type.brokerFee\"),\n value: \"BROKER_FEE\",\n },\n ];\n }, [t]);\n\n const getStatusText = (status: string) => {\n switch (status) {\n case \"CREATED\":\n case \"SPLIT\":\n return t(\"assetHistory.status.processing\") as string;\n case \"COMPLETED\":\n default:\n return t(\"assetHistory.status.completed\") as string;\n }\n };\n\n const getTypeText = (type: string) => {\n switch (type) {\n case \"REFERRER_REBATE\":\n return t(\"portfolio.overview.distribution.type.referralCommission\");\n case \"REFEREE_REBATE\":\n return t(\"portfolio.overview.distribution.type.refereeRebate\");\n case \"BROKER_FEE\":\n return t(\"portfolio.overview.distribution.type.brokerFee\");\n default:\n return \"-\";\n }\n };\n\n const renderItem = (item: any) => {\n return (\n <Flex\n p={2}\n direction=\"column\"\n gapY={2}\n className=\"oui-rounded-xl oui-bg-base-9 oui-font-semibold\"\n >\n <Flex direction=\"row\" justify=\"between\" width=\"100%\" height=\"20px\">\n <Text.formatted\n rule=\"date\"\n className=\"oui-text-2xs oui-text-base-contrast-36\"\n >\n {item.created_time}\n </Text.formatted>\n <Text className=\"oui-text-sm oui-text-base-contrast-80\">\n {getStatusText(item.status)}\n </Text>\n </Flex>\n <div className=\"oui-h-px oui-w-full oui-bg-base-6\" />\n <Flex direction=\"row\" justify=\"between\" width=\"100%\">\n <Flex direction=\"column\">\n <Text className=\"oui-text-2xs oui-text-base-contrast-36\">\n {t(\"common.token\")}\n </Text>\n <Flex gapX={2}>\n <TokenIcon name={item.token} size=\"xs\" />\n <span className=\"oui-text-xs oui-text-base-contrast-80\">\n {item.token}\n </span>\n </Flex>\n </Flex>\n <Flex direction=\"column\">\n <Text className=\"oui-text-2xs oui-text-base-contrast-36\">\n {t(\"common.type\")}\n </Text>\n <Text className=\"oui-text-xs oui-text-base-contrast-80\">\n {getTypeText(item.type)}\n </Text>\n </Flex>\n <Flex direction=\"column\">\n <Text className=\"oui-text-2xs oui-text-base-contrast-36\">\n {t(\"common.amount\")}\n </Text>\n <Text className=\"oui-text-xs oui-text-base-contrast-80\">\n {item.amount}\n </Text>\n </Flex>\n </Flex>\n </Flex>\n );\n };\n\n const loadMore = () => {\n if (dataSource.length < (pagination?.count || 0)) {\n pagination?.onPageSizeChange &&\n pagination.onPageSizeChange(pagination?.pageSize + 50);\n }\n };\n\n return (\n <>\n <DataFilter\n items={[\n {\n type: \"picker\",\n name: \"type\",\n options: TYPES,\n value: type,\n size: \"md\",\n },\n {\n type: \"range\",\n name: \"dateRange\",\n value: {\n from: dateRange[0],\n to: dateRange[1],\n },\n },\n ]}\n onFilter={(value) => {\n onFilter(value);\n }}\n className=\"oui-px-3 oui-py-2 oui-sticky oui-top-[44px] oui-z-10 oui-bg-base-10\"\n />\n <ListView\n dataSource={dataSource}\n renderItem={renderItem}\n contentClassName=\"oui-space-y-1\"\n loadMore={loadMore}\n isLoading={isLoading}\n className=\"oui-px-1\"\n />\n </>\n );\n};\n","import { useDistributionHistory } from \"@kodiak-finance/orderly-hooks\";\nimport { subtractDaysFromCurrentDate } from \"@kodiak-finance/orderly-utils\";\nimport { useMemo, useState } from \"react\";\nimport { usePagination } from \"@kodiak-finance/orderly-ui\";\nimport { parseDateRangeForFilter } from \"../helper/date\";\nimport { getDate, getMonth, getYear, set } from \"date-fns\";\n\nexport const useDistributionHistoryHook = () => {\n // const today = useRef(setMinutes(setHours(new Date(), 23), 59));\n\n const [today] = useState(() => {\n const d = new Date();\n\n return new Date(getYear(d), getMonth(d), getDate(d), 0, 0, 0);\n });\n\n const [dateRange, setDateRange] = useState<Date[]>([\n subtractDaysFromCurrentDate(90, today),\n today,\n ]);\n const [type, setType] = useState<string>(\"All\");\n const { page, pageSize, setPage, parsePagination } = usePagination();\n\n const [data, { isLoading, meta, isValidating }] = useDistributionHistory({\n // dataRange: dateRange.map((date) => date.getTime()),\n dataRange: [\n dateRange[0].getTime(),\n set(dateRange[1], {\n hours: 23,\n minutes: 59,\n seconds: 59,\n milliseconds: 0,\n }).getTime(),\n ],\n type,\n pageSize,\n page,\n });\n\n // console.log(\"----\", isLoading, isValidating);\n\n // const res = useQuery(\"v1/public/info/funding_period\");\n\n const onFilter = (filter: { name: string; value: any }) => {\n if (filter.name === \"type\") {\n setType(filter.value);\n setPage(1);\n }\n\n if (filter.name === \"dateRange\") {\n // setDateRange([filter.value.from, filter.value.to]);\n setDateRange(parseDateRangeForFilter(filter.value));\n setPage(1);\n }\n };\n\n const pagination = useMemo(\n () => parsePagination(meta),\n [parsePagination, meta]\n );\n\n return {\n dataSource: data,\n isLoading,\n isValidating,\n // onDateRangeChange,\n queryParameter: {\n type,\n dateRange,\n },\n onFilter,\n pagination,\n } as const;\n};\n\nexport type useDistributionHistoryHookReturn = ReturnType<\n typeof useDistributionHistoryHook\n>;\n","import React from \"react\";\nimport { useScreen } from \"@kodiak-finance/orderly-ui\";\nimport { DistributionHistoryDesktop } from \"./distribution.ui\";\nimport { DistributionHistoryMobile } from \"./distribution.ui.mobile\";\nimport { useDistributionHistoryHook } from \"./useDataSource.script\";\n\nexport const DistributionHistoryWidget: React.FC = () => {\n const state = useDistributionHistoryHook();\n const { isMobile } = useScreen();\n if (isMobile) {\n return <DistributionHistoryMobile {...state} />;\n }\n return <DistributionHistoryDesktop {...state} />;\n};\n","export { DistributionHistoryWidget } from \"./distribution.widget\";\nexport { DistributionHistoryMobile } from \"./distribution.ui.mobile\";\nexport { DistributionHistoryDesktop } from \"./distribution.ui\";\n","import React, { useMemo } from \"react\";\nimport { produce } from \"immer\";\nimport { useAccount } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport type { API } from \"@kodiak-finance/orderly-types\";\nimport {\n DataFilter,\n formatAddress,\n ListView,\n Flex,\n Text,\n Badge,\n TokenIcon,\n toast,\n Statistic,\n} from \"@kodiak-finance/orderly-ui\";\nimport type { SelectOption } from \"@kodiak-finance/orderly-ui/src/select/withOptions\";\nimport { capitalizeString } from \"@kodiak-finance/orderly-utils\";\nimport type { useTransferHistoryHookReturn } from \"./useDataSource.script\";\n\ntype TransferHistoryMobileProps = useTransferHistoryHookReturn;\n\nexport enum AccountType {\n ALL = \"All accounts\",\n MAIN = \"Main accounts\",\n}\n\nexport const TransferHistoryMobileUI: React.FC<\n Readonly<TransferHistoryMobileProps & ReturnType<typeof useAccount>>\n> = (props) => {\n const {\n dataSource,\n queryParameter,\n state,\n isMainAccount,\n isLoading,\n selectedAccount,\n onFilter,\n pagination,\n } = props;\n const { side, dateRange } = queryParameter;\n\n const { t } = useTranslation();\n\n const ALL_ACCOUNTS: SelectOption = {\n label: t(\"common.allAccount\"),\n value: AccountType.ALL,\n };\n\n const MAIN_ACCOUNT: SelectOption = {\n label: t(\"common.mainAccount\"),\n value: AccountType.MAIN,\n };\n\n const subAccounts = state.subAccounts ?? [];\n\n const memoizedOptions = useMemo(() => {\n if (Array.isArray(subAccounts) && subAccounts.length) {\n return [\n ALL_ACCOUNTS,\n MAIN_ACCOUNT,\n ...subAccounts.map<SelectOption>((value) => ({\n value: value.id,\n label: value?.description || formatAddress(value?.id),\n })),\n ];\n }\n return [ALL_ACCOUNTS, MAIN_ACCOUNT];\n }, [subAccounts]);\n\n const loadMore = () => {\n if (dataSource && dataSource.length < (pagination?.count || 0)) {\n pagination?.onPageSizeChange?.(pagination?.pageSize + 50);\n }\n };\n\n const onCopy = () => {\n toast.success(t(\"common.copy.copied\"));\n };\n\n const renderHistoryItem = (item: API.TransferHistoryRow) => {\n const isFromMainAccount = item.from_account_id === state.mainAccountId;\n const isToMainAccount = item.to_account_id === state.mainAccountId;\n const fromSubAccount = subAccounts.find(\n (acc) => acc.id === item.from_account_id,\n );\n const toSubAccount = subAccounts.find(\n (acc) => acc.id === item.to_account_id,\n );\n\n return (\n <Flex\n p={2}\n direction=\"column\"\n gapY={2}\n className=\"oui-rounded-xl oui-bg-base-9 oui-font-semibold\"\n >\n {/* Header: Date and Status */}\n <Flex direction=\"row\" justify=\"between\" width=\"100%\">\n <Text.formatted\n rule=\"date\"\n className=\"oui-text-base-contrast-36 oui-text-2xs\"\n >\n {item.updated_time}\n </Text.formatted>\n <Text size=\"sm\" className=\"oui-text-base-contrast-80\">\n {capitalizeString(item.status)}\n </Text>\n </Flex>\n\n {/* Divider */}\n <div className=\"oui-w-full oui-h-[1px] oui-bg-base-6\" />\n\n {/* Token and Amount */}\n <Flex direction=\"row\" justify=\"between\" width=\"100%\">\n <Flex direction=\"column\" itemAlign={\"start\"}>\n <Text className=\"oui-text-base-contrast-36 oui-text-2xs\">\n {t(\"common.token\")}\n </Text>\n <Flex direction=\"row\" itemAlign=\"center\" gap={1}>\n <TokenIcon name={item.token} size=\"2xs\" />\n <Text size=\"xs\" className=\"oui-text-base-contrast-80\">\n {item.token}\n </Text>\n </Flex>\n </Flex>\n <Flex direction=\"column\" itemAlign=\"end\">\n <Text className=\"oui-text-base-contrast-36 oui-text-2xs\">\n {t(\"common.amount\")}\n </Text>\n <Text.numeral\n dp={6}\n className=\"oui-text-base-contrast-80 oui-text-xs\"\n >\n {item.amount}\n </Text.numeral>\n </Flex>\n </Flex>\n\n {/* From and To Account IDs */}\n <Flex direction=\"row\" justify=\"between\" width=\"100%\">\n <Flex direction=\"column\" gap={1}>\n <Text className=\"oui-text-base-contrast-36 oui-text-2xs\">\n {t(\"transfer.internalTransfer.from\")} ({t(\"common.accountId\")})\n </Text>\n <Flex direction=\"column\" gap={1} itemAlign={\"start\"}>\n <Flex direction=\"row\" itemAlign=\"center\" gap={1}>\n <Text.formatted\n rule=\"address\"\n copyable\n onCopy={onCopy}\n className=\"oui-text-base-contrast-80 oui-text-xs\"\n >\n {item.from_account_id}\n </Text.formatted>\n </Flex>\n <Badge color=\"neutral\" size=\"xs\">\n {isFromMainAccount\n ? t(\"common.mainAccount\")\n : fromSubAccount?.description || t(\"common.subAccount\")}\n </Badge>\n </Flex>\n </Flex>\n <Flex direction=\"column\" itemAlign=\"end\" gap={1}>\n <Text className=\"oui-text-base-contrast-36 oui-text-2xs\">\n {t(\"transfer.internalTransfer.to\")} ({t(\"common.accountId\")})\n </Text>\n <Flex direction=\"column\" itemAlign=\"end\" gap={1}>\n <Flex direction=\"row\" itemAlign=\"center\" gap={1}>\n <Text.formatted\n rule=\"address\"\n copyable\n onCopy={onCopy}\n className=\"oui-text-base-contrast-80 oui-text-xs\"\n >\n {item.to_account_id}\n </Text.formatted>\n </Flex>\n <Badge color=\"neutral\" size=\"xs\">\n {isToMainAccount\n ? t(\"common.mainAccount\")\n : toSubAccount?.description || t(\"common.subAccount\")}\n </Badge>\n </Flex>\n </Flex>\n </Flex>\n </Flex>\n );\n };\n\n return (\n <>\n <div className=\"oui-px-3\">\n <DataFilter\n onFilter={onFilter}\n items={produce(\n [\n {\n type: \"select\",\n name: \"side\",\n value: side,\n options: [\n { value: \"OUT\", label: t(\"common.outflow\") },\n { value: \"IN\", label: t(\"common.inflow\") },\n ],\n },\n {\n type: \"range\",\n name: \"dateRange\",\n value: {\n from: dateRange[0],\n to: dateRange[1],\n },\n },\n ],\n (draft) => {\n if (isMainAccount) {\n draft.unshift({\n type: \"select\",\n name: \"account\",\n value: selectedAccount as any,\n options: memoizedOptions,\n });\n }\n },\n )}\n />\n </div>\n <ListView\n dataSource={dataSource}\n renderItem={renderHistoryItem}\n contentClassName=\"!oui-space-y-1\"\n loadMore={loadMore}\n isLoading={isLoading}\n className=\"oui-px-1\"\n />\n </>\n );\n};\n","import React from \"react\";\nimport { useAccount } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { API, EMPTY_LIST } from \"@kodiak-finance/orderly-types\";\nimport {\n Flex,\n TokenIcon,\n Text,\n toast,\n Badge,\n} from \"@kodiak-finance/orderly-ui\";\nimport type { Column } from \"@kodiak-finance/orderly-ui\";\nimport { capitalizeString } from \"@kodiak-finance/orderly-utils\";\n\nexport const useColumns = () => {\n const { t } = useTranslation();\n const onCopy = () => {\n toast.success(t(\"common.copy.copied\"));\n };\n const { state } = useAccount();\n const sub = state.subAccounts ?? [];\n const columns = React.useMemo<Column<API.TransferHistoryRow>[]>(() => {\n return [\n {\n title: t(\"common.token\"),\n dataIndex: \"token\",\n width: 80,\n render(val: string) {\n return (\n <Flex gapX={2}>\n <TokenIcon name={val} size=\"xs\" />\n <span>{val}</span>\n </Flex>\n );\n },\n },\n {\n title: t(\"common.time\"),\n dataIndex: \"updated_time\",\n width: 120,\n rule: \"date\",\n },\n {\n title: `${t(\"transfer.internalTransfer.from\")} (${t(\"common.accountId\")})`,\n dataIndex: \"from_account_id\",\n render(val: string) {\n const isMainAccount = val === state.mainAccountId;\n const subAccount = sub.find((item) => item.id === val);\n return (\n <Flex itemAlign=\"start\" py={2} gap={1} direction=\"column\">\n <Text.formatted onCopy={onCopy} copyable rule=\"address\">\n {val}\n </Text.formatted>\n <Badge className=\"oui-select-none\" color=\"neutral\" size=\"xs\">\n {isMainAccount\n ? t(\"common.mainAccount\")\n : subAccount?.description || t(\"common.subAccount\")}\n </Badge>\n </Flex>\n );\n },\n },\n {\n title: `${t(\"transfer.internalTransfer.to\")} (${t(\"common.accountId\")})`,\n dataIndex: \"to_account_id\",\n render(val: string) {\n const isMainAccount = val === state.mainAccountId;\n const subAccount = sub.find((item) => item.id === val);\n return (\n <Flex itemAlign=\"start\" py={2} gap={1} direction=\"column\">\n <Text.formatted onCopy={onCopy} copyable rule=\"address\">\n {val}\n </Text.formatted>\n <Badge className=\"oui-select-none\" color=\"neutral\" size=\"xs\">\n {isMainAccount\n ? t(\"common.mainAccount\")\n : subAccount?.description || t(\"common.subAccount\")}\n </Badge>\n </Flex>\n );\n },\n },\n {\n title: t(\"common.status\"),\n dataIndex: \"status\",\n width: 120,\n render(val: string) {\n return capitalizeString(val);\n },\n },\n {\n title: t(\"common.amount\"),\n dataIndex: \"amount\",\n width: 80,\n },\n ];\n }, [t, state.mainAccountId, sub]);\n return columns;\n};\n","import React, { useMemo } from \"react\";\nimport { produce } from \"immer\";\nimport { useAccount } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport type { API } from \"@kodiak-finance/orderly-types\";\nimport { DataFilter, formatAddress } from \"@kodiak-finance/orderly-ui\";\nimport { AuthGuardDataTable } from \"@kodiak-finance/orderly-ui-connector\";\nimport type { SelectOption } from \"@kodiak-finance/orderly-ui/src/select/withOptions\";\nimport { useColumns } from \"./column\";\nimport type { useTransferHistoryHookReturn } from \"./useDataSource.script\";\n\ntype HistoryProps = useTransferHistoryHookReturn;\n\nexport enum AccountType {\n ALL = \"All accounts\",\n MAIN = \"Main accounts\",\n}\n\nexport const TransferHistoryUI: React.FC<\n Readonly<HistoryProps & ReturnType<typeof useAccount>>\n> = (props) => {\n const {\n dataSource,\n queryParameter,\n state,\n isMainAccount,\n isLoading,\n selectedAccount,\n onFilter,\n } = props;\n const { side, dateRange } = queryParameter;\n\n const { t } = useTranslation();\n\n const ALL_ACCOUNTS: SelectOption = {\n label: t(\"common.allAccount\"),\n value: AccountType.ALL,\n };\n\n const MAIN_ACCOUNT: SelectOption = {\n label: t(\"common.mainAccount\"),\n value: AccountType.MAIN,\n };\n\n const subAccounts = state.subAccounts ?? [];\n\n const memoizedOptions = useMemo(() => {\n if (Array.isArray(subAccounts) && subAccounts.length) {\n return [\n ALL_ACCOUNTS,\n MAIN_ACCOUNT,\n ...subAccounts.map<SelectOption>((value) => ({\n value: value.id,\n label: value?.description || formatAddress(value?.id),\n })),\n ];\n }\n return [ALL_ACCOUNTS, MAIN_ACCOUNT];\n }, [subAccounts]);\n\n const columns = useColumns();\n\n return (\n <>\n <DataFilter\n onFilter={onFilter}\n items={produce(\n [\n {\n type: \"select\",\n name: \"side\",\n value: side,\n options: [\n { value: \"OUT\", label: t(\"common.outflow\") },\n { value: \"IN\", label: t(\"common.inflow\") },\n ],\n },\n {\n type: \"range\",\n name: \"dateRange\",\n value: {\n from: dateRange[0],\n to: dateRange[1],\n },\n },\n ],\n (draft) => {\n if (isMainAccount) {\n draft.unshift({\n type: \"select\",\n name: \"account\",\n value: selectedAccount as any,\n options: memoizedOptions,\n });\n }\n },\n )}\n />\n <AuthGuardDataTable<API.TransferHistoryRow>\n bordered\n columns={columns}\n dataSource={dataSource}\n loading={isLoading}\n // isValidating={isValidating}\n className=\"oui-font-semibold\"\n classNames={{ root: \"oui-h-[calc(100%_-_49px)]\" }}\n pagination={props.pagination}\n generatedRowKey={(row) => row.id}\n />\n </>\n );\n};\n","import React from \"react\";\nimport { getDate, getMonth, getYear, set } from \"date-fns\";\nimport { useAccount, useTransferHistory } from \"@kodiak-finance/orderly-hooks\";\nimport { usePagination } from \"@kodiak-finance/orderly-ui\";\nimport type { PaginationMeta } from \"@kodiak-finance/orderly-ui\";\nimport { subtractDaysFromCurrentDate } from \"@kodiak-finance/orderly-utils\";\nimport { parseDateRangeForFilter } from \"../helper/date\";\nimport { AccountType } from \"./transfer.ui\";\n\nexport const useTransferHistoryHook = () => {\n // const today = useRef(setMinutes(setHours(new Date(), 23), 59));\n\n const today = React.useMemo<Date>(() => {\n const date = new Date();\n return new Date(getYear(date), getMonth(date), getDate(date), 0, 0, 0);\n }, []);\n\n const [dateRange, setDateRange] = React.useState<Date[]>([\n subtractDaysFromCurrentDate(90, today),\n today,\n ]);\n\n const { page, pageSize, setPage, parsePagination } = usePagination();\n\n const { state } = useAccount();\n\n const [selectedAccount, setAccount] = React.useState<string>(AccountType.ALL);\n\n const [side, setSide] = React.useState<\"IN\" | \"OUT\">(\"OUT\");\n\n const [data, { isLoading, meta }] = useTransferHistory({\n dataRange: [\n dateRange[0]?.getTime(),\n set(dateRange[1], {\n hours: 23,\n minutes: 59,\n seconds: 59,\n milliseconds: 0,\n })?.getTime(),\n ],\n side: side,\n size: pageSize,\n page: page,\n main_sub_only: true,\n });\n\n const filteredData = React.useMemo(() => {\n return data.filter((item) => {\n if (!selectedAccount || selectedAccount === AccountType.ALL) {\n return true;\n }\n if (selectedAccount === AccountType.MAIN) {\n return (\n item.from_account_id === state.mainAccountId ||\n item.to_account_id === state.mainAccountId\n );\n } else {\n return (\n item.from_account_id === selectedAccount ||\n item.to_account_id === selectedAccount\n );\n }\n });\n }, [data, selectedAccount]);\n\n const onAccountFilter = React.useCallback(\n (filter: { value: string; name: string }) => {\n if (filter.name === \"account\") {\n setAccount(filter.value);\n }\n if (filter.name === \"side\") {\n setSide(filter.value as \"IN\" | \"OUT\");\n }\n if (filter.name === \"dateRange\") {\n setDateRange(parseDateRangeForFilter(filter.value as any));\n }\n setPage(1);\n },\n [setPage],\n );\n\n const pagination = React.useMemo<PaginationMeta>(\n () => parsePagination(meta),\n [parsePagination, meta],\n );\n\n return {\n dataSource: filteredData,\n isLoading,\n // onDateRangeChange,\n queryParameter: {\n side,\n dateRange,\n },\n selectedAccount,\n onFilter: onAccountFilter,\n pagination,\n } as const;\n};\n\nexport type useTransferHistoryHookReturn = ReturnType<\n typeof useTransferHistoryHook\n>;\n","import React from \"react\";\nimport { useAccount } from \"@kodiak-finance/orderly-hooks\";\nimport { useScreen } from \"@kodiak-finance/orderly-ui\";\nimport { TransferHistoryMobileUI } from \"./transfer.mobile.ui\";\nimport { TransferHistoryUI } from \"./transfer.ui\";\nimport { useTransferHistoryHook } from \"./useDataSource.script\";\n\nexport const TransferHistoryWidget: React.FC = () => {\n const state = useTransferHistoryHook();\n const accountState = useAccount();\n const { isMobile } = useScreen();\n if (isMobile) {\n return <TransferHistoryMobileUI {...state} {...accountState} />;\n }\n return <TransferHistoryUI {...state} {...accountState} />;\n};\n","export { TransferHistoryWidget } from \"./transfer.widget\";\nexport { TransferHistoryUI } from \"./transfer.ui\";\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useMemo } from \"react\";\nimport { produce } from \"immer\";\nimport { useAccount, useCollateral } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport type { API } from \"@kodiak-finance/orderly-types\";\n\nconst EMPTY_HOLDING: Partial<API.Holding> = {\n token: \"USDC\",\n holding: 0,\n frozen: 0,\n};\n\n// Account data structure used in assets display\nexport interface AccountWithChildren {\n account_id: string;\n id?: string;\n description?: string;\n children: Array<API.Holding & { account_id: string }>;\n}\n\n// Hook to transform raw account data into display format\nexport const useAccountsData = (): AccountWithChildren[] => {\n const { t } = useTranslation();\n const { state, isMainAccount } = useAccount();\n const { holding = [] } = useCollateral();\n const subAccounts = state.subAccounts ?? [];\n\n return useMemo(() => {\n return produce<any[]>(subAccounts, (draft) => {\n // Process sub accounts\n for (const sub of draft) {\n sub.account_id = sub.id;\n if (Array.isArray(sub.holding) && sub.holding.length) {\n sub.children = sub.holding.map((item: API.Holding) => ({\n ...item,\n account_id: sub.id,\n }));\n } else {\n sub.children = [{ ...EMPTY_HOLDING, account_id: sub.id }];\n }\n // Remove original holding to avoid confusion\n Reflect.deleteProperty(sub, \"holding\");\n }\n\n // Add main account at the beginning if user is main account\n if (isMainAccount) {\n draft.unshift({\n account_id: state.mainAccountId!,\n description: t(\"common.mainAccount\"),\n children:\n Array.isArray(holding) && holding.length\n ? holding.map((item: API.Holding) => ({\n ...item,\n account_id: state.mainAccountId!,\n }))\n : [\n {\n ...EMPTY_HOLDING,\n account_id: state.mainAccountId!,\n },\n ],\n });\n }\n });\n }, [holding, subAccounts, isMainAccount, state.mainAccountId, t]);\n};\n","import { useMemo } from \"react\";\nimport {\n useAccount,\n useCollateral,\n useIndexPricesStream,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { SubAccount } from \"@kodiak-finance/orderly-hooks\";\nimport { Decimal } from \"@kodiak-finance/orderly-utils\";\nimport { useAccountsData } from \"./useAccountsData\";\n\nconst isNumber = (val: unknown): val is number => {\n return typeof val === \"number\" && !Number.isNaN(val);\n};\n\nexport const calculateTotalHolding = (\n data: SubAccount[] | SubAccount[\"holding\"],\n getIndexPrice: (token: string) => number,\n) => {\n let total = new Decimal(0);\n for (const item of data) {\n if (Array.isArray(item.holding)) {\n for (const hol of item.holding) {\n if (isNumber(hol.holding)) {\n const indexPrice = getIndexPrice(hol.token);\n total = total.plus(new Decimal(hol.holding).mul(indexPrice));\n }\n }\n } else if (isNumber(item.holding) && \"token\" in item) {\n const indexPrice = getIndexPrice(item.token);\n total = total.plus(new Decimal(item.holding).mul(indexPrice));\n }\n }\n return total;\n};\n\nexport const useAssetTotalValue = () => {\n const { state, isMainAccount } = useAccount();\n const { holding = [] } = useCollateral();\n const { getIndexPrice } = useIndexPricesStream();\n const allAccounts = useAccountsData();\n\n const subAccounts = state.subAccounts ?? [];\n\n // Calculate main account total value\n const mainTotalValue = useMemo<Decimal>(\n () => calculateTotalHolding(holding, getIndexPrice),\n [holding, getIndexPrice],\n );\n\n // Calculate sub accounts total value\n const subTotalValue = useMemo<Decimal>(\n () => calculateTotalHolding(subAccounts, getIndexPrice),\n [subAccounts, getIndexPrice],\n );\n\n // Calculate final total value\n const totalValue = useMemo<number>(() => {\n if (isMainAccount) {\n return mainTotalValue.plus(subTotalValue).toNumber();\n } else {\n const find = allAccounts.find((item) => item.id === state.accountId);\n if (Array.isArray(find?.children)) {\n return calculateTotalHolding(find.children, getIndexPrice).toNumber();\n }\n return 0;\n }\n }, [\n isMainAccount,\n mainTotalValue,\n subTotalValue,\n allAccounts,\n state.accountId,\n getIndexPrice,\n ]);\n\n return totalValue;\n};\n","import React, { useMemo } from \"react\";\nimport { SubAccount } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { useAppContext } from \"@kodiak-finance/orderly-react-app\";\nimport {\n Text,\n Card,\n Flex,\n gradientTextVariants,\n EyeIcon,\n EyeCloseIcon,\n cn,\n DataFilter,\n formatAddress,\n Tabs,\n TabPanel,\n ArrowDownShortIcon,\n Button,\n Divider,\n} from \"@kodiak-finance/orderly-ui\";\nimport { AuthGuardDataTable } from \"@kodiak-finance/orderly-ui-connector\";\nimport type { SelectOption } from \"@kodiak-finance/orderly-ui/src/select/withOptions\";\nimport pick from \"ramda/es/pick\";\nimport type { useAssetsScriptReturn } from \"./assets.script\";\nimport type {\n AssetsDataTableWidgetProps,\n AssetsWidgetProps,\n} from \"./assets.widget\";\n\nconst LazyConvertHistoryWidget = React.lazy(() =>\n import(\"../convertPage/convert.widget\").then((mod) => {\n return { default: mod.ConvertHistoryWidget };\n }),\n);\n\nexport type AssetsProps = useAssetsScriptReturn;\n\nexport enum AccountType {\n ALL = \"All accounts\",\n MAIN = \"Main accounts\",\n}\n\nconst TotalValueInfo: React.FC<\n Readonly<\n Pick<AssetsWidgetProps, \"totalValue\" | \"visible\" | \"onToggleVisibility\">\n >\n> = (props) => {\n const { totalValue, visible, onToggleVisibility } = props;\n const { t } = useTranslation();\n const Icon = visible ? EyeIcon : EyeCloseIcon;\n return (\n <Flex direction=\"column\" gap={1} className=\"oui-text-2xs\" itemAlign=\"start\">\n <Flex gap={1} justify=\"start\" itemAlign=\"center\">\n <Text size=\"2xs\" color=\"neutral\" weight=\"semibold\">\n {t(\"common.totalValue\")}\n </Text>\n <button onClick={onToggleVisibility}>\n <Icon size={18} className={cn(\"oui-text-base-contrast-54\")} />\n </button>\n </Flex>\n <Flex justify={\"start\"} itemAlign=\"end\" gap={1}>\n <Text.numeral\n visible={visible}\n weight=\"bold\"\n size=\"2xl\"\n className={gradientTextVariants({ color: \"brand\" })}\n as=\"div\"\n padding={false}\n dp={2}\n >\n {totalValue ?? \"--\"}\n </Text.numeral>\n <Text as=\"div\" weight=\"bold\" className=\"oui-leading-6\">\n USDC\n </Text>\n </Flex>\n </Flex>\n );\n};\n\nconst DepositAndWithdrawButton: React.FC<\n Readonly<\n Pick<AssetsWidgetProps, \"isMainAccount\" | \"onWithdraw\" | \"onDeposit\">\n >\n> = (props) => {\n const { t } = useTranslation();\n const { isMainAccount, onWithdraw, onDeposit } = props;\n const { wrongNetwork, disabledConnect } = useAppContext();\n if (!isMainAccount) {\n return null;\n }\n const mergedDisabled = wrongNetwork || disabledConnect;\n return (\n <Flex\n className=\"oui-text-2xs oui-text-base-contrast-54\"\n itemAlign=\"center\"\n gap={3}\n >\n <Button\n disabled={mergedDisabled}\n data-testid=\"oui-testid-assetView-deposit-button\"\n fullWidth\n size=\"md\"\n onClick={onDeposit}\n >\n <ArrowDownShortIcon\n color=\"white\"\n opacity={mergedDisabled ? 0.4 : 1}\n className=\"oui-rotate-0 oui-text-primary-contrast\"\n />\n <Text>{t(\"common.deposit\")}</Text>\n </Button>\n <Button\n fullWidth\n disabled={mergedDisabled}\n color=\"secondary\"\n size=\"md\"\n onClick={onWithdraw}\n data-testid=\"oui-testid-assetView-withdraw-button\"\n >\n <ArrowDownShortIcon\n color=\"white\"\n opacity={mergedDisabled ? 0.4 : 1}\n className=\"oui-rotate-180 oui-text-base-contrast\"\n />\n <Text>{t(\"common.withdraw\")}</Text>\n </Button>\n </Flex>\n );\n};\n\nconst DataFilterSection: React.FC<\n Pick<\n AssetsWidgetProps,\n | \"isMainAccount\"\n | \"onFilter\"\n | \"selectedAccount\"\n | \"selectedAsset\"\n | \"assetsOptions\"\n | \"state\"\n >\n> = (props) => {\n const { t } = useTranslation();\n const {\n isMainAccount,\n onFilter,\n selectedAccount,\n selectedAsset,\n assetsOptions,\n state,\n } = props;\n\n const ALL_ACCOUNTS: SelectOption = {\n label: t(\"common.allAccount\"),\n value: AccountType.ALL,\n };\n\n const MAIN_ACCOUNT: SelectOption = {\n label: t(\"common.mainAccount\"),\n value: AccountType.MAIN,\n };\n\n const ALL_ASSETS: SelectOption = {\n label: t(\"common.allAssets\", \"All assets\"),\n value: \"all\",\n };\n\n const subAccounts = useMemo<SubAccount[]>(() => {\n return state.subAccounts ?? [];\n }, [state.subAccounts]);\n\n const memoizedOptions = useMemo(() => {\n if (Array.isArray(subAccounts) && subAccounts.length) {\n return [\n ALL_ACCOUNTS,\n MAIN_ACCOUNT,\n ...subAccounts.map<SelectOption>((value) => ({\n value: value?.id,\n label: value?.description || formatAddress(value?.id),\n })),\n ];\n }\n return [ALL_ACCOUNTS, MAIN_ACCOUNT];\n }, [ALL_ACCOUNTS, MAIN_ACCOUNT, subAccounts]);\n\n const memoizedAssetOptions = useMemo(() => {\n return [ALL_ASSETS, ...assetsOptions];\n }, [ALL_ASSETS, assetsOptions]);\n\n if (!isMainAccount) {\n return null;\n }\n\n return (\n <DataFilter\n className=\"oui-border-none oui-py-0\"\n onFilter={onFilter}\n items={[\n {\n type: \"select\",\n name: \"account\",\n value: selectedAccount,\n options: memoizedOptions,\n },\n {\n type: \"select\",\n name: \"asset\",\n value: selectedAsset,\n options: memoizedAssetOptions,\n },\n ]}\n />\n );\n};\n\nexport const AssetsDataTable: React.FC<\n Pick<\n AssetsWidgetProps,\n | \"columns\"\n | \"dataSource\"\n | \"isMainAccount\"\n | \"onFilter\"\n | \"selectedAccount\"\n | \"selectedAsset\"\n | \"assetsOptions\"\n | \"state\"\n | \"canTrade\"\n > &\n AssetsDataTableWidgetProps\n> = (props) => {\n const { columns, dataSource, dataTableClassNames, classNames } = props;\n const { root, scrollRoot, desc } = classNames ?? {};\n\n if (!props.canTrade) {\n // show auth button when not can trade\n return (\n <AuthGuardDataTable\n classNames={{\n root: \"oui-rounded-xl oui-font-semibold\",\n }}\n loading={props.canTrade}\n columns={[]}\n dataSource={[]}\n />\n );\n }\n\n return (\n <Flex width=\"100%\" direction={\"column\"} className={root}>\n <DataFilterSection\n {...pick(\n [\n \"isMainAccount\",\n \"onFilter\",\n \"selectedAccount\",\n \"selectedAsset\",\n \"assetsOptions\",\n \"state\",\n ],\n props,\n )}\n />\n {dataSource?.map((item, index) => {\n return (\n <Flex\n key={`item-${index}`}\n className={cn(\"oui-rounded-xl oui-bg-base-9 oui-p-6\", scrollRoot)}\n direction={\"column\"}\n itemAlign={\"start\"}\n justify={\"between\"}\n my={4}\n >\n <Text\n className={cn(\"oui-mb-4\", desc)}\n intensity={98}\n weight=\"semibold\"\n size=\"lg\"\n >\n {item?.description || formatAddress(item?.id ?? \"\")}\n </Text>\n <AuthGuardDataTable\n bordered\n className=\"oui-font-semibold\"\n classNames={{\n scroll: cn(\n \"oui-h-auto oui-min-h-0 oui-overflow-x-auto oui-overflow-y-visible\",\n dataTableClassNames?.scroll,\n ),\n ...dataTableClassNames,\n }}\n columns={columns}\n dataSource={item.children}\n />\n </Flex>\n );\n })}\n </Flex>\n );\n};\n\nexport const AssetsTable: React.FC<AssetsWidgetProps> = (props) => {\n const { t } = useTranslation();\n return (\n <Card\n className=\"oui-border-none oui-bg-transparent oui-p-0 oui-shadow-none\"\n classNames={{ content: \"!oui-pt-0\" }}\n >\n <Tabs\n defaultValue=\"assets\"\n variant=\"contained\"\n classNames={{ tabsList: \"\" }}\n size=\"lg\"\n >\n <TabPanel value=\"assets\" className=\"\" title={t(\"common.assets\")}>\n <Flex\n className=\"oui-rounded-xl oui-bg-base-9 oui-p-6\"\n direction={\"row\"}\n itemAlign={\"center\"}\n justify={\"between\"}\n my={4}\n >\n <TotalValueInfo\n {...pick([\"totalValue\", \"visible\", \"onToggleVisibility\"], props)}\n />\n <DepositAndWithdrawButton\n {...pick([\"isMainAccount\", \"onDeposit\", \"onWithdraw\"], props)}\n />\n </Flex>\n <AssetsDataTable\n {...pick(\n [\n \"columns\",\n \"dataSource\",\n \"isMainAccount\",\n \"onFilter\",\n \"selectedAccount\",\n \"selectedAsset\",\n \"assetsOptions\",\n \"state\",\n \"canTrade\",\n ],\n props,\n )}\n classNames={{\n scrollRoot:\n \"oui-max-h-[700px] oui-overflow-y-auto oui-custom-scrollbar oui-w-full\",\n }}\n />\n </TabPanel>\n <TabPanel\n value=\"convertHistory\"\n className=\"oui-rounded-xl oui-bg-base-9 oui-px-6\"\n title={t(\"portfolio.overview.tab.convert.history\")}\n >\n <React.Suspense fallback={null}>\n <Flex\n direction=\"column\"\n mt={4}\n itemAlign=\"center\"\n className=\"oui-w-full\"\n >\n <Divider className=\"oui-w-full oui-border-b oui-border-line-4 oui-pt-6\" />\n <LazyConvertHistoryWidget />\n </Flex>\n </React.Suspense>\n </TabPanel>\n </Tabs>\n </Card>\n );\n};\n","import { useMemo } from \"react\";\nimport { useAccount } from \"@kodiak-finance/orderly-hooks\";\nimport { AccountType } from \"../pages/assets/assetsPage/assets.ui.desktop\";\n\n// Account filter function type\nexport type AccountFilterFunction<T = any> = (\n data: T[],\n selectedAccount: string,\n accountState: ReturnType<typeof useAccount>,\n) => T[];\n\n// Generic account filter utility\nexport const createAccountFilter = <T extends { account_id?: string }>(\n getAccountId?: (item: T) => string | undefined,\n): AccountFilterFunction<T> => {\n return (data, selectedAccount, accountState) => {\n const { state, isMainAccount } = accountState;\n\n return data.filter((item) => {\n const accountId = getAccountId ? getAccountId(item) : item.account_id;\n\n if (isMainAccount) {\n if (!selectedAccount || selectedAccount === AccountType.ALL) {\n return true;\n }\n if (selectedAccount === AccountType.MAIN) {\n return accountId === state.mainAccountId;\n } else {\n return accountId === selectedAccount;\n }\n } else {\n return accountId === state.accountId;\n }\n });\n };\n};\n\n// Hook for standard account-based data filtering\nexport const useAccountFilter = <T extends { account_id?: string }>(\n data: T[],\n selectedAccount: string,\n getAccountId?: (item: T) => string | undefined,\n): T[] => {\n const accountState = useAccount();\n\n return useMemo(() => {\n const { state, isMainAccount } = accountState;\n\n return data.filter((item) => {\n const accountId = getAccountId ? getAccountId(item) : item.account_id;\n\n if (isMainAccount) {\n if (!selectedAccount || selectedAccount === AccountType.ALL) {\n return true;\n }\n if (selectedAccount === AccountType.MAIN) {\n return accountId === state.mainAccountId;\n } else {\n return accountId === selectedAccount;\n }\n } else {\n return accountId === state.accountId;\n }\n });\n }, [data, selectedAccount, accountState, getAccountId]);\n};\n\n// Hook specifically for transfer history filtering\nexport const useTransferHistoryAccountFilter = <\n T extends { from_account_id?: string; to_account_id?: string },\n>(\n data: T[],\n selectedAccount: string,\n): T[] => {\n const accountState = useAccount();\n\n return useMemo(() => {\n const { state, isMainAccount } = accountState;\n\n return data.filter((item) => {\n if (isMainAccount) {\n if (!selectedAccount || selectedAccount === AccountType.ALL) {\n return true;\n }\n if (selectedAccount === AccountType.MAIN) {\n return (\n item.from_account_id === state.mainAccountId ||\n item.to_account_id === state.mainAccountId\n );\n } else {\n return (\n item.from_account_id === selectedAccount ||\n item.to_account_id === selectedAccount\n );\n }\n } else {\n return (\n item.from_account_id === state.accountId ||\n item.to_account_id === state.accountId\n );\n }\n });\n }, [data, selectedAccount, accountState]);\n};\n\n// Pre-defined account filters for common use cases\nexport const AccountFilters = {\n // Standard account filter factory\n standard: <T extends { account_id?: string }>() => createAccountFilter<T>(),\n\n // Transfer history filter factory\n transferHistory:\n <T extends { from_account_id?: string; to_account_id?: string }>() =>\n (\n data: T[],\n selectedAccount: string,\n accountState: ReturnType<typeof useAccount>,\n ): T[] => {\n const { state, isMainAccount } = accountState;\n\n return data.filter((item) => {\n if (isMainAccount) {\n if (!selectedAccount || selectedAccount === AccountType.ALL) {\n return true;\n }\n if (selectedAccount === AccountType.MAIN) {\n return (\n item.from_account_id === state.mainAccountId ||\n item.to_account_id === state.mainAccountId\n );\n } else {\n return (\n item.from_account_id === selectedAccount ||\n item.to_account_id === selectedAccount\n );\n }\n } else {\n return (\n item.from_account_id === state.accountId ||\n item.to_account_id === state.accountId\n );\n }\n });\n },\n\n // Custom account ID filter factory\n customAccountId: <T extends Record<string, any>>(accountIdKey: keyof T) =>\n createAccountFilter<T>((item) => item[accountIdKey] as string),\n};\n","import React, { useMemo } from \"react\";\nimport { useAccount } from \"@kodiak-finance/orderly-hooks\";\nimport { AccountType } from \"../pages/assets/assetsPage/assets.ui.desktop\";\n\n// Account filter hook for assets-like data structures\nexport const useAssetsAccountFilter = <T extends { account_id?: string }>(\n data: T[],\n) => {\n const { state, isMainAccount } = useAccount();\n const [selectedAccount, setSelectedAccount] = React.useState<string>(\n AccountType.ALL,\n );\n\n // Filter data based on selected account\n const filteredData = useMemo(() => {\n return data.filter((item) => {\n if (isMainAccount) {\n if (!selectedAccount || selectedAccount === AccountType.ALL) {\n return true;\n }\n if (selectedAccount === AccountType.MAIN) {\n return item.account_id === state.mainAccountId;\n } else {\n return item.account_id === selectedAccount;\n }\n } else {\n return item.account_id === state.accountId;\n }\n });\n }, [data, selectedAccount, isMainAccount, state]);\n\n // Handle filter changes\n const onAccountFilter = React.useCallback(\n (filter: { name: string; value: string }) => {\n const { name, value } = filter;\n if (name === \"account\") {\n setSelectedAccount(value);\n }\n },\n [],\n );\n\n return {\n selectedAccount,\n filteredData,\n onAccountFilter,\n setSelectedAccount,\n };\n};\n\n// Enhanced account and asset combined filter hook\nexport const useAssetsMultiFilter = <\n T extends {\n account_id?: string;\n children?: Array<{ token: string; [key: string]: any }>;\n },\n>(\n data: T[],\n) => {\n const { state, isMainAccount } = useAccount();\n const [selectedAccount, setSelectedAccount] = React.useState<string>(\n AccountType.ALL,\n );\n const [selectedAsset, setSelectedAsset] = React.useState<string>(\"all\");\n\n // Filter data based on both account and asset\n const filteredData = useMemo(() => {\n let accountFiltered = data;\n\n // First apply account filter\n if (isMainAccount) {\n if (selectedAccount && selectedAccount !== AccountType.ALL) {\n if (selectedAccount === AccountType.MAIN) {\n accountFiltered = data.filter(\n (item) => item.account_id === state.mainAccountId,\n );\n } else {\n accountFiltered = data.filter(\n (item) => item.account_id === selectedAccount,\n );\n }\n }\n } else {\n accountFiltered = data.filter(\n (item) => item.account_id === state.accountId,\n );\n }\n\n // Then apply asset filter\n if (selectedAsset && selectedAsset !== \"all\") {\n accountFiltered = accountFiltered\n .map((account) => {\n if (account.children) {\n const filteredChildren = account.children.filter(\n (child) => child.token === selectedAsset,\n );\n // Only include accounts that have the selected asset\n return filteredChildren.length > 0\n ? { ...account, children: filteredChildren }\n : null;\n }\n return account;\n })\n .filter(Boolean) as T[];\n }\n\n return accountFiltered;\n }, [data, selectedAccount, selectedAsset, isMainAccount, state]);\n\n // Handle combined filter changes\n const onFilter = React.useCallback(\n (filter: { name: string; value: string }) => {\n const { name, value } = filter;\n if (name === \"account\") {\n setSelectedAccount(value);\n } else if (name === \"asset\") {\n setSelectedAsset(value);\n }\n },\n [],\n );\n\n return {\n selectedAccount,\n selectedAsset,\n filteredData,\n onFilter,\n setSelectedAccount,\n setSelectedAsset,\n };\n};\n\n// Generic account filter function that can be used standalone\nexport const filterByAccount = <T extends { account_id?: string }>(\n data: T[],\n selectedAccount: string,\n accountState: {\n isMainAccount: boolean;\n state: {\n mainAccountId?: string;\n accountId?: string;\n };\n },\n): T[] => {\n const { isMainAccount, state } = accountState;\n\n return data.filter((item) => {\n if (isMainAccount) {\n if (!selectedAccount || selectedAccount === AccountType.ALL) {\n return true;\n }\n if (selectedAccount === AccountType.MAIN) {\n return item.account_id === state.mainAccountId;\n } else {\n return item.account_id === selectedAccount;\n }\n } else {\n return item.account_id === state.accountId;\n }\n });\n};\n","export * from \"./useAssetTotalValue\";\nexport * from \"./useAccountFilter\";\nexport * from \"./useAssetsAccountFilter\";\nexport * from \"./useAccountsData\";\n","import React, { useMemo, useState } from \"react\";\nimport { getDate, getMonth, getYear, set } from \"date-fns\";\nimport {\n useAccount,\n useCollateral,\n useIndexPricesStream,\n useSubAccountQuery,\n useAppStore,\n useChainInfo,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { EMPTY_LIST } from \"@kodiak-finance/orderly-types\";\nimport { usePagination } from \"@kodiak-finance/orderly-ui\";\nimport { subtractDaysFromCurrentDate } from \"@kodiak-finance/orderly-utils\";\nimport { useAccountsData, useAssetsAccountFilter } from \"../../../hooks\";\nimport { parseDateRangeForFilter } from \"../../overview/helper/date\";\nimport type { ConvertRecord } from \"../type\";\n\nexport const useConvertScript = () => {\n const { t } = useTranslation();\n const { isMainAccount, state } = useAccount();\n const { holding = [] } = useCollateral();\n const { data: indexPrices } = useIndexPricesStream();\n\n const { data: chainsInfo } = useChainInfo();\n\n // Pagination\n const { page, pageSize, setPage, parsePagination } = usePagination({\n page: 1,\n pageSize: 20,\n });\n\n // Use the same account data structure as assets\n const allAccounts = useAccountsData();\n\n const tokensInfo = useAppStore((state) => state.tokensInfo);\n\n // Use the same account filter logic as assets\n const { selectedAccount, onAccountFilter } =\n useAssetsAccountFilter(allAccounts);\n\n // Simple date range handling like other scripts\n const [today] = useState(() => {\n const d = new Date();\n return new Date(getYear(d), getMonth(d), getDate(d), 0, 0, 0);\n });\n\n const [dateRange, setDateRange] = useState<Date[]>([\n subtractDaysFromCurrentDate(90, today),\n today,\n ]);\n\n // Filter states (matching API fields)\n const [statusFilter, setStatusFilter] = useState<string>(\"all\");\n const [convertedAssetFilter, setConvertedAssetFilter] =\n useState<string>(\"all\");\n\n // Create asset options from holding data - similar to assets script\n const convertedAssetOptions = useMemo(() => {\n // Create options array\n const assetOptions =\n tokensInfo?.map((item) => ({\n value: item.token,\n label: item.token,\n })) || [];\n\n return [{ label: t(\"common.allAssets\"), value: \"all\" }, ...assetOptions];\n }, [tokensInfo, t]);\n\n // Handle all filters (including account filter and date range)\n const onFilter = React.useCallback(\n (filter: { name: string; value: string | { from: Date; to: Date } }) => {\n const { name, value } = filter;\n\n // Delegate account filter to the hook\n if (name === \"account\") {\n onAccountFilter(filter as { name: string; value: string });\n } else if (name === \"status\") {\n setStatusFilter(value as string);\n setPage(1); // Reset to first page when filter changes\n } else if (name === \"converted_asset\") {\n setConvertedAssetFilter(value as string);\n setPage(1);\n } else if (name === \"time\" || name === \"dateRange\") {\n setDateRange(\n parseDateRangeForFilter(value as { from: Date; to: Date }),\n );\n setPage(1);\n }\n },\n [onAccountFilter, setPage],\n );\n\n // Build query URL with parameters\n const queryUrl = React.useMemo(() => {\n const params = new URLSearchParams();\n\n // Add pagination parameters\n params.set(\"page\", page.toString());\n params.set(\"size\", pageSize.toString());\n\n // Add date range parameters\n if (dateRange[0]) {\n params.set(\"start_t\", dateRange[0].getTime().toString());\n }\n if (dateRange[1]) {\n params.set(\n \"end_t\",\n set(dateRange[1], {\n hours: 23,\n minutes: 59,\n seconds: 59,\n milliseconds: 0,\n })\n .getTime()\n .toString(),\n );\n }\n\n // Add filter parameters (only if not \"all\")\n if (statusFilter !== \"all\") {\n params.set(\"status\", statusFilter);\n }\n\n if (convertedAssetFilter !== \"all\") {\n params.set(\"converted_asset\", convertedAssetFilter);\n }\n\n return `/v1/asset/convert_history?${params.toString()}`;\n }, [page, pageSize, dateRange, statusFilter, convertedAssetFilter]);\n\n // Query convert history with all parameters\n const { data, isLoading } = useSubAccountQuery<{\n rows: ConvertRecord[];\n meta: {\n total: number;\n current_page: number;\n records_per_page: number;\n };\n }>(queryUrl, {\n accountId: isMainAccount ? state.mainAccountId : state.accountId,\n formatter: (data) => {\n return data;\n },\n });\n\n // Parse pagination from API response meta\n const pagination = useMemo(() => {\n if (data?.meta) {\n return parsePagination(data.meta);\n }\n return {\n page,\n pageSize,\n onPageChange: setPage,\n onPageSizeChange: () => {\n // Handle page size change if needed\n },\n };\n }, [data?.meta, parsePagination, page, pageSize, setPage]);\n\n // Calculate summary\n const summary = useMemo(() => {\n const dataRows = data?.rows || [];\n\n const totalConversions = dataRows.length;\n const totalUSDCReceived = dataRows.reduce(\n (sum, record) => sum + record.received_qty,\n 0,\n );\n const totalFees = dataRows.reduce(\n (sum, record) =>\n sum +\n record.details.reduce(\n (detailSum, detail) => detailSum + detail.haircut,\n 0,\n ),\n 0,\n );\n\n return {\n totalConversions,\n totalUSDCReceived,\n totalFees,\n };\n }, [data]);\n\n return {\n // Data\n dataSource: data?.rows || EMPTY_LIST,\n summary,\n pagination,\n\n // Filter state and handlers (compatible with assets)\n selectedAccount,\n onFilter,\n\n // Query parameters (consistent with other scripts)\n dateRange,\n\n // Filter states\n statusFilter,\n convertedAssetFilter,\n convertedAssetOptions,\n\n // State\n isMainAccount,\n isLoading,\n holding,\n\n // Index prices\n indexPrices,\n chainsInfo,\n };\n};\n\nexport type UseConvertScriptReturn = ReturnType<typeof useConvertScript>;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useMemo } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n Button,\n Flex,\n Text,\n TokenIcon,\n Tooltip,\n toast,\n} from \"@kodiak-finance/orderly-ui\";\nimport type { Column } from \"@kodiak-finance/orderly-ui\";\nimport type { ConvertRecord, ConvertTransaction } from \"../type\";\n\nexport interface ConvertColumnsOptions {\n onDetailsClick?: (convertId: number) => void;\n}\n\nexport interface ConvertDetailColumnsOptions {\n onTxClick?: (txId: string) => void;\n indexPrices: Record<string, number>;\n chainsInfo: any[];\n}\n\nexport const ConvertedAssetColumn = ({\n convertedAssets,\n}: {\n convertedAssets: Record<string, number>;\n}) => {\n const { t } = useTranslation();\n const assets = useMemo(() => {\n return Object.keys(convertedAssets);\n }, [convertedAssets]);\n\n const tooltipContent = useMemo(() => {\n return (\n <Flex\n direction=\"column\"\n gap={2}\n className=\"oui-w-[275px] oui-font-semibold oui-text-base-contrast-80\"\n >\n <Flex\n itemAlign=\"center\"\n justify=\"between\"\n className=\"oui-w-full oui-text-2xs oui-text-base-contrast-36\"\n >\n <div>{t(\"common.assets\")}</div>\n <div>{t(\"common.qty\")}</div>\n </Flex>\n {assets.map((asset) => (\n <Flex\n key={asset}\n itemAlign=\"center\"\n justify=\"between\"\n className=\"oui-w-full\"\n >\n <Flex itemAlign=\"center\" gap={1}>\n <TokenIcon size=\"xs\" name={asset} />\n <Text.formatted>{asset}</Text.formatted>\n </Flex>\n <div>\n <Text.formatted>{convertedAssets[asset]}</Text.formatted>\n </div>\n </Flex>\n ))}\n </Flex>\n );\n }, [assets]);\n\n return (\n <Flex itemAlign=\"center\" gap={2}>\n <div className=\"oui-relative oui-flex\">\n {assets.slice(0, 3).map((asset, index) => (\n <div\n key={asset}\n className=\"oui-relative\"\n style={{\n marginLeft: index > 0 ? \"-8px\" : \"0\",\n zIndex: assets.length + index,\n }}\n >\n <TokenIcon size=\"xs\" name={asset} />\n </div>\n ))}\n </div>\n <Tooltip content={tooltipContent}>\n <Text.formatted className=\"oui-cursor-pointer oui-underline oui-decoration-line-16 oui-decoration-dashed oui-underline-offset-4\">\n {assets.slice(0, 3).join(\", \")}{\" \"}\n {assets.length > 3 && `+${assets.length - 3}`}\n </Text.formatted>\n </Tooltip>\n </Flex>\n );\n};\n\nexport const useConvertColumns = (options: ConvertColumnsOptions) => {\n const { onDetailsClick } = options;\n const { t } = useTranslation();\n const onCopy = (e: any) => {\n e.preventDefault();\n e.stopPropagation();\n toast.success(t(\"common.copy.copied\"));\n };\n\n const columns = React.useMemo<Column[]>(() => {\n return [\n {\n title: t(\"portfolio.overview.column.convert.convertedAsset\"),\n dataIndex: \"converted_asset\",\n align: \"left\",\n width: 200,\n maxWidth: 200,\n render(convertedAssets: Record<string, number>) {\n return <ConvertedAssetColumn convertedAssets={convertedAssets} />;\n },\n },\n {\n title: t(\"portfolio.overview.column.convert.usdcAmount\"),\n dataIndex: \"received_qty\",\n align: \"left\",\n width: 150,\n render(qty: number) {\n return (\n <Text.numeral dp={6} padding={false}>\n {qty}\n </Text.numeral>\n );\n },\n },\n {\n title: t(\"common.fee\"),\n dataIndex: \"details\",\n align: \"left\",\n width: 120,\n render(details: ConvertRecord[\"details\"]) {\n const totalHaircut = details.reduce(\n (sum, detail) => sum + detail.haircut,\n 0,\n );\n return (\n <Text.numeral dp={6} padding={false}>\n {totalHaircut}\n </Text.numeral>\n );\n },\n },\n {\n title: t(\"common.type\"),\n dataIndex: \"type\",\n align: \"left\",\n width: 150,\n render(type: string) {\n return <Text>{type.charAt(0).toUpperCase() + type.slice(1)}</Text>;\n },\n },\n {\n title: t(\"portfolio.overview.column.convert.convertId\"),\n dataIndex: \"convert_id\",\n align: \"left\",\n width: 150,\n render(convertId: number) {\n return (\n <Text.formatted onCopy={onCopy} copyable>\n {convertId}\n </Text.formatted>\n );\n },\n },\n {\n title: t(\"common.time\"),\n dataIndex: \"created_time\",\n align: \"left\",\n width: 160,\n rule: \"date\",\n },\n {\n title: t(\"common.status\"),\n dataIndex: \"status\",\n align: \"left\",\n width: 150,\n render(status: string) {\n return (\n <Text>{status.charAt(0).toUpperCase() + status.slice(1)}</Text>\n );\n },\n },\n {\n title: \"\",\n dataIndex: \"updated_time\",\n align: \"center\",\n width: 80,\n render(convertId: number, record: ConvertRecord) {\n return (\n <Button\n size=\"sm\"\n variant=\"text\"\n className=\"oui-text-primary\"\n onClick={() => onDetailsClick?.(record.convert_id)}\n >\n {t(\"portfolio.overview.column.convert.details\")}\n </Button>\n );\n },\n },\n ];\n }, [onDetailsClick]);\n\n return columns;\n};\n\n// Converted asset, Qty., USDC amount, Fee, TxID, Network, Status\nexport const useConvertDetailColumns = (\n options: ConvertDetailColumnsOptions,\n) => {\n const { t } = useTranslation();\n const onCopy = (e: any) => {\n e.preventDefault();\n e.stopPropagation();\n toast.success(t(\"common.copy.copied\"));\n };\n const columns = React.useMemo<Column[]>(() => {\n return [\n {\n title: t(\"portfolio.overview.column.convert.convertedAsset\"),\n dataIndex: \"converted_asset\",\n align: \"left\",\n width: 150,\n render(asset: string) {\n return (\n <Flex itemAlign=\"center\" gap={2}>\n <TokenIcon name={asset} />\n {asset}\n </Flex>\n );\n },\n },\n {\n title: t(\"common.qty\"),\n dataIndex: \"converted_qty\",\n align: \"left\",\n width: 100,\n render(qty: number) {\n return (\n <Text.numeral dp={6} padding={false}>\n {qty}\n </Text.numeral>\n );\n },\n },\n {\n title: t(\"portfolio.overview.column.convert.usdcAmount\"),\n dataIndex: \"received_qty\",\n align: \"left\",\n width: 100,\n render(qty: number) {\n return (\n <Text.numeral dp={6} padding={false}>\n {qty}\n </Text.numeral>\n );\n },\n },\n {\n title: t(\"common.fee\"),\n dataIndex: \"haircut\",\n align: \"left\",\n width: 100,\n render(haircut: number) {\n return (\n <Text.numeral dp={6} padding={false}>\n {haircut}\n </Text.numeral>\n );\n },\n },\n {\n title: t(\"common.txId\"),\n dataIndex: \"tx_id\",\n align: \"left\",\n width: 150,\n render(txId: string, record: ConvertTransaction) {\n if (!txId) return <Text intensity={54}>-</Text>;\n const chainInfo = (options.chainsInfo as any[])?.find(\n (item) => record.chain_id === parseInt(item.chain_id),\n );\n const explorer_base_url = chainInfo?.explorer_base_url;\n const href = `${explorer_base_url}/tx/${txId}`;\n return (\n <a href={href} target=\"_blank\" rel=\"noreferrer\">\n <Text.formatted\n onCopy={onCopy}\n rule=\"txId\"\n copyable={!!txId}\n className=\"oui-cursor-pointer oui-underline oui-decoration-line-16 oui-decoration-dashed oui-underline-offset-4\"\n >\n {txId}\n </Text.formatted>\n </a>\n );\n },\n },\n {\n title: t(\"transfer.network\"),\n dataIndex: \"chain_id\",\n align: \"left\",\n width: 150,\n render(venue: string, record: ConvertTransaction) {\n return (\n <Text>\n {options.chainsInfo.find(\n (item) => item.chain_id == record.chain_id,\n )?.name || \"-\"}\n </Text>\n );\n },\n },\n {\n title: t(\"common.result\"),\n dataIndex: \"result\",\n align: \"left\",\n width: 100,\n render(result: string) {\n return (\n <Text>{result?.charAt(0).toUpperCase() + result?.slice(1)}</Text>\n );\n },\n },\n ];\n }, []);\n\n return columns;\n};\n","import { useMemo } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n DataFilter,\n Flex,\n DataTable,\n modal,\n SimpleDialog,\n Divider,\n} from \"@kodiak-finance/orderly-ui\";\nimport { useModal } from \"@kodiak-finance/orderly-ui\";\nimport { AuthGuardDataTable } from \"@kodiak-finance/orderly-ui-connector\";\nimport type { ConvertRecord } from \"../type\";\nimport { useConvertColumns, useConvertDetailColumns } from \"./convert.column\";\nimport { useConvertScript } from \"./convert.script\";\n\ntype ConvertDesktopUIProps = {\n convertState: ReturnType<typeof useConvertScript>;\n};\n\n// Convert Details Modal Component\nconst ConvertDetailsModal = modal.create<{\n record: ConvertRecord;\n indexPrices: Record<string, number>;\n chainsInfo: any[];\n}>((props) => {\n const { t } = useTranslation();\n const { visible, onOpenChange } = useModal();\n // console.log(props);\n\n const detailColumns = useConvertDetailColumns({\n indexPrices: props.indexPrices,\n chainsInfo: props.chainsInfo,\n });\n\n return (\n <SimpleDialog\n open={visible}\n onOpenChange={onOpenChange}\n title={t(\"portfolio.overview.convert.dialog.title.details\")}\n size=\"lg\"\n closable\n classNames={{\n content: \"oui-max-w-4xl\",\n }}\n >\n <DataTable\n columns={detailColumns}\n dataSource={props.record.details}\n bordered\n className=\"oui-w-full\"\n classNames={{\n header: \"oui-h-10\",\n root: \"oui-bg-base-8 oui-max-h-[60vh] oui-overflow-y-scroll oui-custom-scrollbar\",\n }}\n onRow={() => ({\n className: \"oui-h-[40px]\",\n })}\n generatedRowKey={(record) =>\n record.transaction_id || Math.random().toString()\n }\n />\n </SimpleDialog>\n );\n});\n\nexport const ConvertDesktopUI: React.FC<ConvertDesktopUIProps> = ({\n convertState,\n}) => {\n const { t } = useTranslation();\n\n const handleDetailsClick = (convertId: number) => {\n // Find the convert record by ID\n const record = convertState.dataSource.find(\n (item) => item.convert_id === convertId,\n );\n if (record) {\n modal.show(ConvertDetailsModal, {\n record,\n indexPrices: convertState.indexPrices,\n chainsInfo: convertState.chainsInfo as any,\n });\n }\n };\n\n const columns = useConvertColumns({\n onDetailsClick: handleDetailsClick,\n });\n\n const {\n convertedAssetFilter,\n statusFilter,\n dateRange,\n onFilter,\n convertedAssetOptions,\n } = convertState;\n\n const statusOptions = useMemo(\n () => [\n { label: t(\"common.status.all\"), value: \"all\" },\n { label: t(\"orders.status.completed\"), value: \"completed\" },\n { label: t(\"orders.status.pending\"), value: \"pending\" },\n ],\n [t],\n );\n\n const dataFilter = useMemo(() => {\n return (\n <DataFilter\n className=\"\"\n onFilter={onFilter}\n items={[\n // {\n // type: \"select\",\n // name: \"account\",\n // value: selectedAccount,\n // options: memoizedOptions,\n // },\n {\n type: \"select\",\n name: \"converted_asset\",\n value: convertedAssetFilter,\n options: convertedAssetOptions,\n },\n {\n type: \"select\",\n name: \"status\",\n value: statusFilter,\n options: statusOptions,\n },\n {\n type: \"range\",\n name: \"time\",\n value: {\n from: dateRange?.[0],\n to: dateRange?.[1],\n },\n },\n ]}\n />\n );\n }, [\n convertedAssetFilter,\n statusFilter,\n dateRange,\n onFilter,\n convertedAssetOptions,\n statusOptions,\n ]);\n\n return (\n <>\n {dataFilter}\n\n <AuthGuardDataTable\n bordered\n columns={columns}\n dataSource={convertState.dataSource}\n loading={convertState.isLoading}\n pagination={convertState.pagination}\n manualPagination\n className=\"oui-mt-4 oui-w-full\"\n classNames={{\n root: \"oui-h-[calc(100%_-_49px)]\",\n }}\n onRow={() => ({\n className: \"oui-h-[48px] oui-cursor-pointer\",\n })}\n generatedRowKey={(record) => {\n return record.convert_id.toString();\n }}\n />\n </>\n );\n};\n","import { useMemo } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n useModal,\n modal,\n Text,\n Divider,\n TokenIcon,\n Flex,\n DataFilter,\n SimpleSheet,\n toast,\n ScrollIndicator,\n} from \"@kodiak-finance/orderly-ui\";\nimport { ConvertRecord, ConvertTransaction } from \"../type\";\nimport { ConvertedAssetColumn } from \"./convert.column\";\nimport { useConvertScript } from \"./convert.script\";\n\ntype ConvertMobileUIProps = {\n convertState: ReturnType<typeof useConvertScript>;\n};\n\ntype ConvertMobileItemProps = {\n item?: any;\n chainsInfo: any[];\n};\n\ntype ConvertMobileFieldProps = {\n label: string;\n value?: string | number;\n className?: string;\n copyable?: boolean;\n rule?: \"address\" | \"txId\";\n onClick?: () => void;\n};\n\nexport const ConvertMobileUI: React.FC<ConvertMobileUIProps> = ({\n convertState,\n}) => {\n const { t } = useTranslation();\n\n const {\n convertedAssetFilter,\n statusFilter,\n dateRange,\n onFilter,\n convertedAssetOptions,\n } = convertState;\n\n const statusOptions = useMemo(\n () => [\n { label: t(\"common.status.all\"), value: \"all\" },\n { label: t(\"orders.status.completed\"), value: \"completed\" },\n { label: t(\"orders.status.pending\"), value: \"pending\" },\n ],\n [t],\n );\n\n const dataFilter = useMemo(() => {\n return (\n <DataFilter\n onFilter={onFilter}\n items={[\n // {\n // size: \"sm\",\n // type: \"picker\",\n // name: \"account\",\n // value: selectedAccount,\n // options: memoizedOptions,\n // },\n {\n size: \"md\",\n type: \"picker\",\n name: \"converted_asset\",\n value: convertedAssetFilter,\n options: convertedAssetOptions,\n className: \"oui-whitespace-nowrap\",\n },\n {\n size: \"md\",\n type: \"picker\",\n name: \"status\",\n value: statusFilter,\n options: statusOptions,\n className: \"oui-whitespace-nowrap\",\n },\n {\n type: \"range\",\n name: \"time\",\n value: {\n from: dateRange?.[0],\n to: dateRange?.[1],\n },\n },\n ]}\n />\n );\n }, [\n convertedAssetFilter,\n statusFilter,\n dateRange,\n onFilter,\n convertedAssetOptions,\n statusOptions,\n ]);\n\n return (\n <div className=\"oui-flex oui-flex-col oui-gap-1 oui-px-3\">\n <ScrollIndicator className=\"oui-pr-5\">\n <Flex direction=\"row\">{dataFilter}</Flex>\n </ScrollIndicator>\n {convertState.dataSource.map((item) => (\n <ConvertMobileItem\n key={item.convert_id}\n item={item}\n chainsInfo={convertState.chainsInfo as any}\n />\n ))}\n </div>\n );\n};\n\nconst ConvertMobileField: React.FC<ConvertMobileFieldProps> = ({\n label,\n value,\n rule,\n copyable = false,\n className = \"\",\n onClick,\n}) => {\n const { t } = useTranslation();\n const onCopy = (e: any) => {\n e.preventDefault();\n e.stopPropagation();\n toast.success(t(\"common.copy.copied\"));\n };\n return (\n <div\n className={`oui-text-2xs oui-font-semibold oui-text-base-contrast-80 [&_p]:oui-text-base-contrast-36 ${className}`}\n onClick={onClick}\n >\n <p>{label}</p>\n <Text.formatted rule={rule} copyable={copyable} onCopy={onCopy}>\n {value || \"-\"}\n </Text.formatted>\n </div>\n );\n};\n\nconst ConvertMobileItem: React.FC<ConvertMobileItemProps> = (props) => {\n const { item } = props;\n const { t } = useTranslation();\n\n if (!item) {\n return null;\n }\n\n const totalHaircut = item.details.reduce(\n (sum: number, detail: ConvertTransaction) => sum + detail.haircut,\n 0,\n );\n\n return (\n <div className=\"oui-flex oui-flex-col oui-gap-2 oui-rounded-xl oui-bg-base-9 oui-p-2\">\n <div className=\"oui-flex oui-justify-between\">\n <div className=\"oui-flex oui-items-center oui-text-xs oui-font-semibold oui-text-base-contrast-80\">\n <ConvertedAssetColumn convertedAssets={item.converted_asset} />\n <div\n className=\"oui-ml-2 oui-text-primary\"\n onClick={() => {\n modal.show(ConverHistoryItemDetailsDialog, {\n item,\n chainsInfo: props.chainsInfo,\n });\n }}\n >\n {t(\"portfolio.overview.column.convert.details\")}\n </div>\n </div>\n <Text.formatted\n className=\"oui-text-2xs oui-text-base-contrast-36\"\n rule=\"date\"\n >\n {item.created_time}\n </Text.formatted>\n </div>\n\n {/* 5 fields in grid container: 3 per row, wrap to next line */}\n <div className=\"oui-grid oui-grid-cols-3 oui-gap-2\">\n <ConvertMobileField\n label={t(\"portfolio.overview.column.convert.usdcAmount\")}\n value={item.received_qty}\n />\n <ConvertMobileField label={t(\"common.fee\")} value={totalHaircut} />\n <ConvertMobileField\n label={t(\"portfolio.overview.column.convert.convertId\")}\n value={item.convert_id}\n copyable={true}\n />\n <ConvertMobileField\n label={t(\"common.type\")}\n value={item.type?.charAt(0).toUpperCase() + item.type?.slice(1)}\n />\n <ConvertMobileField\n label={t(\"common.status\")}\n value={item.status?.charAt(0).toUpperCase() + item.status?.slice(1)}\n />\n </div>\n </div>\n );\n};\n\ntype ConvertHistoryItemDetailsDialogProps = {\n item: ConvertRecord;\n chainsInfo: any[];\n};\n\nconst ConverHistoryItemDetailsDialog =\n modal.create<ConvertHistoryItemDetailsDialogProps>((props) => {\n const { item, chainsInfo } = props;\n const { t } = useTranslation();\n const { visible, hide, resolve, reject, onOpenChange } = useModal();\n\n return (\n <SimpleSheet\n title={t(\"portfolio.overview.convert.dialog.title.details\")}\n open={visible}\n onOpenChange={onOpenChange}\n >\n <div className=\"oui-flex oui-h-[300px] oui-flex-col oui-gap-3 oui-overflow-y-auto oui-rounded-lg oui-bg-base-7 oui-p-2\">\n {item.details.map((detail, index) => (\n <>\n <div className=\"oui-flex oui-flex-col oui-gap-2\">\n <div className=\"oui-flex oui-items-center oui-gap-1\">\n <TokenIcon name={detail.converted_asset} size=\"xs\" />\n <div className=\"oui-text-xs oui-text-base-contrast-80\">\n {detail.converted_asset}\n </div>\n </div>\n <div className=\"oui-grid oui-grid-cols-3 oui-gap-2\">\n <ConvertMobileField\n label={t(\"common.qty\")}\n value={detail.converted_qty}\n />\n <ConvertMobileField\n label={t(\"portfolio.overview.column.convert.usdcAmount\")}\n value={detail.received_qty}\n />\n <ConvertMobileField label=\"Fee\" value={detail.haircut} />\n <ConvertMobileField\n label={t(\"common.txId\")}\n copyable={!!detail.tx_id}\n rule=\"txId\"\n value={detail.tx_id}\n onClick={() => {\n if (detail.tx_id) {\n const chainInfo = chainsInfo.find(\n (item) => item.chain_id == detail.chain_id,\n );\n if (chainInfo?.explorer_base_url) {\n window.open(\n `${chainInfo.explorer_base_url}/tx/${detail.tx_id}`,\n \"_blank\",\n );\n }\n }\n }}\n />\n <ConvertMobileField\n label={t(\"transfer.network\")}\n value={\n chainsInfo.find(\n (item) => item.chain_id == detail.chain_id,\n )?.name || \"-\"\n }\n />\n <ConvertMobileField\n label={t(\"common.result\")}\n value={\n detail.result\n ? detail.result.charAt(0).toUpperCase() +\n detail.result.slice(1)\n : \"-\"\n }\n />\n </div>\n </div>\n {index < item.details.length - 1 && <Divider />}\n </>\n ))}\n </div>\n </SimpleSheet>\n );\n });\n","import React from \"react\";\nimport { useScreen } from \"@kodiak-finance/orderly-ui\";\nimport { useConvertScript } from \"./convert.script\";\nimport { ConvertDesktopUI } from \"./convert.ui.desktop\";\nimport { ConvertMobileUI } from \"./convert.ui.mobile\";\n\nexport const ConvertHistoryWidget: React.FC = () => {\n const convertState = useConvertScript();\n const { isMobile } = useScreen();\n if (isMobile) {\n return <ConvertMobileUI convertState={convertState} />;\n }\n return <ConvertDesktopUI convertState={convertState} />;\n};\n","import React from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport type { API } from \"@kodiak-finance/orderly-types\";\nimport { Flex, TokenIcon, Text, cn } from \"@kodiak-finance/orderly-ui\";\nimport type { Column } from \"@kodiak-finance/orderly-ui\";\nimport { capitalizeString } from \"@kodiak-finance/orderly-utils\";\n\nexport const useColumns = () => {\n const { t } = useTranslation();\n const columns = React.useMemo<Column<API.StrategyVaultHistoryRow>[]>(() => {\n return [\n {\n title: t(\"common.type\"),\n dataIndex: \"type\",\n className: (record) => {\n if (record?.type === \"deposit\") {\n return \"oui-text-success\";\n }\n if (record?.type === \"withdrawal\") {\n return \"oui-text-danger\";\n }\n return \"\";\n },\n render(val: string) {\n if (val === \"deposit\") {\n return t(\"common.deposit\");\n }\n if (val === \"withdrawal\") {\n return t(\"common.withdraw\");\n }\n return null;\n },\n },\n {\n title: t(\"portfolio.overview.vaultName\"),\n dataIndex: \"vaultName\",\n },\n {\n title: t(\"common.token\"),\n dataIndex: \"token\",\n render(val: string) {\n return (\n <Flex justify=\"start\" itemAlign=\"center\" gap={2}>\n <TokenIcon name={val} />\n {val}\n </Flex>\n );\n },\n },\n {\n title: t(\"common.time\"),\n dataIndex: \"created_time\",\n rule: \"date\",\n },\n {\n title: t(\"common.status\"),\n dataIndex: \"status\",\n render(val: string) {\n return capitalizeString(val);\n },\n },\n {\n title: t(\"common.amount\"),\n dataIndex: \"amount_change\",\n render(val: number) {\n return (\n <Text.numeral\n showIdentifier\n className={cn(\n \"oui-select-none\",\n val >= 0 ? \"oui-text-success\" : \"oui-text-danger\",\n )}\n >\n {val}\n </Text.numeral>\n );\n },\n },\n ];\n }, [t]);\n return columns;\n};\n","import React from \"react\";\nimport type { API } from \"@kodiak-finance/orderly-types\";\nimport { DataFilter } from \"@kodiak-finance/orderly-ui\";\nimport { AuthGuardDataTable } from \"@kodiak-finance/orderly-ui-connector\";\nimport { useColumns } from \"./column\";\nimport type { useVaultsHistoryHookReturn } from \"./useDataSource.script\";\n\ntype HistoryProps = useVaultsHistoryHookReturn;\n\nexport const VaultsHistoryUI: React.FC<Readonly<HistoryProps>> = (props) => {\n const { dataSource, dateRange, isLoading, onFilter } = props;\n\n const columns = useColumns();\n\n return (\n <>\n <DataFilter\n onFilter={onFilter}\n items={[\n {\n type: \"range\",\n name: \"dateRange\",\n value: {\n from: dateRange[0],\n to: dateRange[1],\n },\n },\n ]}\n />\n <AuthGuardDataTable<API.StrategyVaultHistoryRow>\n bordered\n columns={columns}\n dataSource={dataSource}\n loading={isLoading}\n className=\"oui-font-semibold\"\n classNames={{ root: \"oui-h-[calc(100%_-_49px)]\" }}\n pagination={props.pagination}\n generatedRowKey={(row) => row.id}\n />\n </>\n );\n};\n","import React from \"react\";\nimport { getDate, getMonth, getYear, set } from \"date-fns\";\nimport { useVaultsHistory } from \"@kodiak-finance/orderly-hooks\";\nimport type { API } from \"@kodiak-finance/orderly-types\";\nimport { usePagination } from \"@kodiak-finance/orderly-ui\";\nimport type { PaginationMeta } from \"@kodiak-finance/orderly-ui\";\nimport { subtractDaysFromCurrentDate } from \"@kodiak-finance/orderly-utils\";\nimport { parseDateRangeForFilter } from \"../helper/date\";\n\nexport const useVaultsHistoryHook = () => {\n const today = React.useMemo<Date>(() => {\n const date = new Date();\n return new Date(getYear(date), getMonth(date), getDate(date), 0, 0, 0);\n }, []);\n\n const [dateRange, setDateRange] = React.useState<Date[]>([\n subtractDaysFromCurrentDate(90, today),\n today,\n ]);\n\n const { page, pageSize, setPage, parsePagination } = usePagination();\n\n const [data, { isLoading, meta }] = useVaultsHistory({\n dataRange: [\n dateRange[0]?.getTime(),\n set(dateRange[1], {\n hours: 23,\n minutes: 59,\n seconds: 59,\n milliseconds: 0,\n })?.getTime(),\n ],\n size: pageSize,\n page: page,\n });\n\n const dataSource = React.useMemo(() => {\n if (!Array.isArray(data) || !data.length) {\n return [];\n }\n return data.map<API.StrategyVaultHistoryRow>((item) => ({\n ...item,\n token: \"USDC\", // need to hard code for now\n vaultName: \"Orderly OmniVault\",\n amount_change:\n item.type === \"withdrawal\" ? -item.amount_change : item.amount_change,\n }));\n }, [data]);\n\n const onDateRangeFilter = React.useCallback(\n (filter: { value: string; name: string }) => {\n if (filter.name === \"dateRange\") {\n setDateRange(parseDateRangeForFilter(filter.value as any));\n }\n setPage(1);\n },\n [setPage],\n );\n\n const pagination = React.useMemo<PaginationMeta>(\n () => parsePagination(meta),\n [parsePagination, meta],\n );\n\n return {\n dataSource: dataSource,\n isLoading,\n dateRange,\n onFilter: onDateRangeFilter,\n pagination,\n } as const;\n};\n\nexport type useVaultsHistoryHookReturn = ReturnType<\n typeof useVaultsHistoryHook\n>;\n","import { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { Divider } from \"@kodiak-finance/orderly-ui\";\nimport { DataFilter, TokenIcon, ListView, Text } from \"@kodiak-finance/orderly-ui\";\nimport { useVaultsHistoryHookReturn } from \"./useDataSource.script\";\n\nexport const VaultsHistoryMobile = (props: useVaultsHistoryHookReturn) => {\n const { dateRange, onFilter, dataSource, isLoading, pagination } = props;\n const { t } = useTranslation();\n\n const loadMore = () => {\n if (dataSource.length < (pagination?.count || 0)) {\n pagination?.onPageSizeChange?.(pagination?.pageSize + 50);\n }\n };\n\n const renderHistoryItem = (item: any) => {\n const typeColor = item.type === \"deposit\" ? \"buy\" : \"sell\";\n const typeText =\n item.type === \"deposit\" ? t(\"common.deposit\") : t(\"common.withdraw\");\n const amountText = item.amount_change ? Math.abs(item.amount_change) : \"-\";\n return (\n <div className=\"oui-flex oui-flex-col oui-rounded-xl oui-bg-base-9 oui-p-2 oui-font-semibold\">\n <div className=\"oui-flex oui-items-center oui-justify-between oui-text-sm oui-text-base-contrast-80\">\n <div>{item.vaultName}</div>\n <div>\n {item.status?.slice(0, 1).toUpperCase() + item.status?.slice(1)}\n </div>\n </div>\n <Text.formatted rule=\"date\" intensity={36} size=\"2xs\">\n {item.created_time}\n </Text.formatted>\n <Divider className=\"oui-my-2\" />\n <div className=\"oui-flex oui-items-center [&>div]:oui-flex-1 [&>div]:oui-text-2xs [&>div]:oui-text-base-contrast-36\">\n <div>\n <div>{t(\"common.token\")}</div>\n <div className=\"oui-flex oui-items-center oui-gap-1 oui-text-xs oui-text-base-contrast-80\">\n <TokenIcon name={\"USDC\"} size=\"2xs\" />\n <Text>USDC</Text>\n </div>\n </div>\n <div>\n <div>{t(\"common.type\")}</div>\n <Text color={typeColor} className=\"oui-text-xs\">\n {typeText}\n </Text>\n </div>\n <div className=\"oui-text-right\">\n <div>{t(\"common.amount\")}</div>\n <div className=\"oui-text-xs oui-text-base-contrast-80\">\n {amountText}\n </div>\n </div>\n </div>\n </div>\n );\n };\n\n return (\n <>\n <DataFilter\n items={[\n {\n type: \"range\",\n name: \"dateRange\",\n value: {\n from: dateRange[0],\n to: dateRange[1],\n },\n },\n ]}\n onFilter={(value) => {\n onFilter(value);\n }}\n className=\"oui-sticky oui-top-[44px] oui-z-10 oui-border-none oui-bg-base-10 oui-px-3 oui-py-2\"\n />\n <ListView\n dataSource={dataSource}\n renderItem={renderHistoryItem}\n contentClassName=\"!oui-space-y-1\"\n loadMore={loadMore}\n isLoading={isLoading}\n className=\"oui-px-1\"\n />\n </>\n );\n};\n","import React from \"react\";\nimport { useScreen } from \"@kodiak-finance/orderly-ui\";\nimport { VaultsHistoryUI } from \"./transfer.ui\";\nimport { useVaultsHistoryHook } from \"./useDataSource.script\";\nimport { VaultsHistoryMobile } from \"./vaults.ui.mobile\";\n\nexport const VaultsHistoryWidget: React.FC = () => {\n const state = useVaultsHistoryHook();\n const { isMobile } = useScreen();\n if (isMobile) {\n return <VaultsHistoryMobile {...state} />;\n }\n return <VaultsHistoryUI {...state} />;\n};\n","export { VaultsHistoryWidget } from \"./transfer.widget\";\nexport { VaultsHistoryUI } from \"./transfer.ui\";\n","import React, { useEffect } from \"react\";\nimport { useAccount } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { AssetHistorySideEnum } from \"@kodiak-finance/orderly-types\";\nimport {\n ArrowDownSquareFillIcon,\n ArrowLeftRightSquareFill,\n ArrowUpSquareFillIcon,\n Card,\n FeeTierIcon,\n ServerFillIcon,\n TabPanel,\n Tabs,\n VaultsIcon,\n} from \"@kodiak-finance/orderly-ui\";\nimport type { TabName } from \"./historyDataGroup.script\";\n\nconst LazyAssetHistoryWidget = React.lazy(() =>\n import(\"../assetHistory\").then((mod) => {\n return { default: mod.AssetHistoryWidget };\n }),\n);\n\nconst LazyFundingHistoryWidget = React.lazy(() =>\n import(\"../funding\").then((mod) => {\n return { default: mod.FundingHistoryWidget };\n }),\n);\n\nconst LazyDistributionHistoryWidget = React.lazy(() =>\n import(\"../distribution\").then((mod) => {\n return { default: mod.DistributionHistoryWidget };\n }),\n);\n\nconst LazyTransferHistoryWidget = React.lazy(() =>\n import(\"../TransferHistory\").then((mod) => {\n return { default: mod.TransferHistoryWidget };\n }),\n);\n\nconst LazyConvertHistoryWidget = React.lazy(() =>\n import(\"../../assets/convertPage/convert.widget\").then((mod) => {\n return { default: mod.ConvertHistoryWidget };\n }),\n);\n\nconst LazyVaultsHistoryWidget = React.lazy(() =>\n import(\"../VaultsHistory\").then((mod) => {\n return { default: mod.VaultsHistoryWidget };\n }),\n);\n\nexport const HistoryDataGroupDesktop: React.FC<{\n active?: TabName;\n onTabChange: (tab: string) => void;\n}> = (props) => {\n const { active = \"deposit\", onTabChange } = props;\n const { t } = useTranslation();\n const { isMainAccount } = useAccount();\n useEffect(() => {\n if (active === \"vaults\" && !isMainAccount) {\n onTabChange(\"deposit\");\n }\n }, [active, isMainAccount]);\n return (\n <Card>\n <Tabs\n value={active}\n onValueChange={onTabChange}\n variant=\"contained\"\n size=\"xl\"\n >\n <TabPanel\n title={t(\"common.deposits\")}\n icon={<ArrowDownSquareFillIcon />}\n value={\"deposit\"}\n >\n <React.Suspense fallback={null}>\n <LazyAssetHistoryWidget side={AssetHistorySideEnum.DEPOSIT} />\n </React.Suspense>\n </TabPanel>\n <TabPanel\n title={t(\"common.withdrawals\")}\n icon={<ArrowUpSquareFillIcon />}\n value={\"withdraw\"}\n >\n <React.Suspense fallback={null}>\n <LazyAssetHistoryWidget side={AssetHistorySideEnum.WITHDRAW} />\n </React.Suspense>\n </TabPanel>\n <TabPanel\n title={t(\"common.funding\")}\n icon={<FeeTierIcon />}\n value={\"funding\"}\n >\n <React.Suspense fallback={null}>\n <LazyFundingHistoryWidget />\n </React.Suspense>\n </TabPanel>\n <TabPanel\n title={t(\"portfolio.overview.distribution\")}\n icon={<ServerFillIcon />}\n value={\"distribution\"}\n >\n <React.Suspense fallback={null}>\n <LazyDistributionHistoryWidget />\n </React.Suspense>\n </TabPanel>\n <TabPanel\n title={t(\"portfolio.overview.transferHistory\")}\n icon={<ArrowLeftRightSquareFill />}\n value={\"transfer\"}\n >\n <React.Suspense fallback={null}>\n <LazyTransferHistoryWidget />\n </React.Suspense>\n </TabPanel>\n <TabPanel\n title={t(\"portfolio.overview.tab.convert.history\")}\n value={\"convert\"}\n >\n <React.Suspense fallback={null}>\n <LazyConvertHistoryWidget />\n </React.Suspense>\n </TabPanel>\n {isMainAccount && (\n <TabPanel\n value={\"vaults\"}\n icon={<VaultsIcon />}\n title={t(\"portfolio.overview.vaults\")}\n >\n <React.Suspense fallback={null}>\n <LazyVaultsHistoryWidget />\n </React.Suspense>\n </TabPanel>\n )}\n </Tabs>\n </Card>\n );\n};\n","import React from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { AssetHistorySideEnum } from \"@kodiak-finance/orderly-types\";\nimport { TabPanel, Tabs } from \"@kodiak-finance/orderly-ui\";\nimport { ConvertHistoryWidget } from \"../../assets/convertPage/convert.widget\";\nimport { VaultsHistoryWidget } from \"../VaultsHistory/transfer.widget\";\nimport { AssetHistoryWidget } from \"../assetHistory\";\nimport { DistributionHistoryWidget } from \"../distribution\";\nimport { FundingHistoryWidget } from \"../funding\";\nimport { TabName } from \"./historyDataGroup.script\";\n\nconst LazyTransferHistoryWidget = React.lazy(() =>\n import(\"../TransferHistory\").then((mod) => {\n return { default: mod.TransferHistoryWidget };\n }),\n);\n\nexport const HistoryDataGroupMobile: React.FC<{\n active?: TabName;\n onTabChange: (tab: string) => void;\n}> = (props) => {\n const { active = \"deposit\", onTabChange } = props;\n const { t } = useTranslation();\n\n return (\n <Tabs\n value={active}\n onValueChange={onTabChange}\n variant=\"contained\"\n size=\"lg\"\n classNames={{\n tabsList: \"oui-px-3 oui-py-2\",\n scrollIndicator: \"oui-pr-3\",\n }}\n showScrollIndicator\n >\n <TabPanel title={t(\"common.deposits\")} value={\"deposit\"}>\n <AssetHistoryWidget side={AssetHistorySideEnum.DEPOSIT} />\n </TabPanel>\n <TabPanel title={t(\"common.withdrawals\")} value={\"withdraw\"}>\n <AssetHistoryWidget side={AssetHistorySideEnum.WITHDRAW} />\n </TabPanel>\n <TabPanel title={t(\"common.funding\")} value={\"funding\"}>\n <FundingHistoryWidget />\n </TabPanel>\n <TabPanel\n title={t(\"portfolio.overview.distribution\")}\n value={\"distribution\"}\n >\n <DistributionHistoryWidget />\n </TabPanel>\n <TabPanel\n title={t(\"portfolio.overview.transferHistory\")}\n value={\"transfer\"}\n >\n <React.Suspense fallback={null}>\n <LazyTransferHistoryWidget />\n </React.Suspense>\n </TabPanel>\n <TabPanel\n title={t(\"portfolio.overview.tab.convert.history\")}\n value={\"convert\"}\n >\n <ConvertHistoryWidget />\n </TabPanel>\n <TabPanel title={t(\"common.vaults\")} value={\"vaults\"}>\n <VaultsHistoryWidget />\n </TabPanel>\n </Tabs>\n );\n};\n","import { useScreen } from \"@kodiak-finance/orderly-ui\";\nimport { useHistoryDataGroupScript } from \"./historyDataGroup.script\";\nimport { HistoryDataGroupDesktop } from \"./historyDataGroup.ui.desktop\";\nimport { HistoryDataGroupMobile } from \"./historyDataGroup.ui.mobile\";\n\nexport const HistoryDataGroupWidget: React.FC = () => {\n const state = useHistoryDataGroupScript();\n const { isMobile } = useScreen();\n if (isMobile) {\n return <HistoryDataGroupMobile {...state} />;\n }\n return <HistoryDataGroupDesktop {...state} />;\n};\n","export { HistoryDataGroupWidget } from \"./historyDataGroup.widget\";\n","import { createContext, useContext } from \"react\";\nimport { TWType } from \"@kodiak-finance/orderly-hooks\";\nimport { UseRewardsDataReturn } from \"../mobile/useRewardsData.script\";\nimport { useAssetsHistoryDataReturn } from \"../shared/useAssetHistory\";\n\nexport type OverviewContextState = {\n // period: PeriodType;\n type?: TWType;\n} & useAssetsHistoryDataReturn &\n UseRewardsDataReturn;\n\nexport const OverviewContext = createContext<OverviewContextState>(\n {} as OverviewContextState,\n);\n\nexport const useOverviewContext = () => {\n return useContext(OverviewContext);\n};\n","import { useMemo } from \"react\";\nimport { useAccount } from \"@kodiak-finance/orderly-hooks\";\nimport { useAppContext, useDataTap } from \"@kodiak-finance/orderly-react-app\";\nimport { AccountStatusEnum } from \"@kodiak-finance/orderly-types\";\nimport { useOverviewContext } from \"../provider/overviewContext\";\n\nexport const useAssetsChartScript = () => {\n const assetHistory = useOverviewContext();\n\n const { wrongNetwork, disabledConnect } = useAppContext();\n const { state } = useAccount();\n\n const filteredData = useDataTap(assetHistory.data, {\n accountStatus:\n state.status === AccountStatusEnum.EnableTradingWithoutConnected\n ? AccountStatusEnum.EnableTradingWithoutConnected\n : AccountStatusEnum.EnableTrading,\n fallbackData: assetHistory.createFakeData(\n { account_value: 0 },\n { account_value: 500 },\n ),\n });\n\n const _data = useMemo(() => {\n if (filteredData?.length) {\n return filteredData;\n }\n return assetHistory.createFakeData(\n { account_value: 0 },\n { account_value: 500 },\n );\n }, [filteredData, assetHistory]);\n\n const invisible =\n wrongNetwork || disabledConnect || !assetHistory.data.length;\n\n return {\n ...assetHistory,\n data: _data,\n invisible,\n } as const;\n};\n\nexport type useAssetsChartScriptReturn = ReturnType<\n typeof useAssetsChartScript\n>;\n","import { useCallback, useMemo, useRef, useState } from \"react\";\nimport {\n useAssetsHistory,\n useCollateral,\n useIndexPricesStream,\n useLocalStorage,\n usePrivateQuery,\n useStatisticsDaily,\n useUserStatistics,\n useBalanceTopic,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { API } from \"@kodiak-finance/orderly-types\";\nimport { Decimal, zero } from \"@kodiak-finance/orderly-utils\";\nimport { subDays, format, differenceInDays } from \"date-fns\";\n\nexport enum PeriodType {\n DAY = \"1D\",\n WEEK = \"7D\",\n MONTH = \"30D\",\n QUARTER = \"90D\",\n}\n\nexport const useAssetsHistoryData = (\n localKey: string,\n options?: { isRealtime?: boolean },\n) => {\n const [today] = useState(() => new Date());\n\n const { getIndexPrice } = useIndexPricesStream();\n // const { account } = useAccount();\n\n const { t } = useTranslation();\n\n const { isRealtime = false } = options || {};\n const periodTypes = Object.values(PeriodType);\n\n const [period, setPeriod] = useLocalStorage<PeriodType | null>(\n localKey,\n PeriodType.MONTH,\n );\n\n const convertToUSDCAndOperate = useCallback(\n (inputs: {\n token: string;\n amount: string | number;\n value: Decimal;\n op?: \"add\" | \"sub\";\n }): Decimal => {\n const { token, amount, value, op = \"sub\" } = inputs;\n if (token.toUpperCase() === \"USDC\") {\n return op === \"add\" ? value.add(amount) : value.sub(amount);\n } else {\n const indexPrice = getIndexPrice(token);\n if (indexPrice) {\n const delta = new Decimal(amount).mul(indexPrice);\n return op === \"add\" ? value.add(delta) : value.sub(delta);\n }\n return value;\n }\n },\n [getIndexPrice],\n );\n\n const periodLabel = useMemo<Record<PeriodType, string>>(() => {\n return {\n [PeriodType.DAY]: t(\"common.select.1d\"),\n [PeriodType.WEEK]: t(\"common.select.7d\"),\n [PeriodType.MONTH]: t(\"common.select.30d\"),\n [PeriodType.QUARTER]: t(\"common.select.90d\"),\n };\n }, [t]);\n\n const formatDateRange = (date: Date): string => {\n return format(date, \"yyyy-MM-dd\");\n };\n\n const getExpectedDateRange = (offsetDay: number) => {\n return {\n from: subDays(new Date(), offsetDay - 1),\n to: new Date(),\n };\n };\n\n const getMatchingPeriodType = (from: Date, to: Date): PeriodType | null => {\n // Calculate days difference (inclusive - add 1 to include both start and end dates)\n const offsetDay = Math.abs(differenceInDays(from, to)) + 1;\n\n // Check against predefined periods\n const filterDays = [1, 7, 30, 90] as const;\n if (!filterDays.includes(offsetDay as any)) {\n return null;\n }\n\n // Validate that the date range matches the expected range for this period\n const expectedRange = getExpectedDateRange(offsetDay);\n if (\n formatDateRange(expectedRange.from) === formatDateRange(from) &&\n formatDateRange(expectedRange.to) === formatDateRange(to)\n ) {\n switch (offsetDay) {\n case 1:\n return PeriodType.DAY;\n case 7:\n return PeriodType.WEEK;\n case 30:\n return PeriodType.MONTH;\n case 90:\n return PeriodType.QUARTER;\n }\n }\n\n return null;\n };\n\n const getCustomDateRangeLabel = (from: Date, to: Date): string => {\n // Calculate days difference (inclusive - add 1 to include both start and end dates)\n const offsetDay = Math.abs(differenceInDays(from, to)) + 1;\n return `${offsetDay}D`;\n };\n\n const { totalValue } = useCollateral();\n\n const getStartDate = (value: PeriodType) => {\n switch (value) {\n case PeriodType.DAY:\n return subDays(today, 1);\n case PeriodType.WEEK:\n return subDays(today, 6);\n case PeriodType.MONTH:\n return subDays(today, 29);\n case PeriodType.QUARTER:\n return subDays(today, 89);\n default:\n return subDays(today, 6);\n }\n };\n\n const [startDate, setStartDate] = useState(getStartDate(period));\n const [endDate, setEndDate] = useState(today);\n\n const periodValue = useMemo(() => {\n if (period) {\n switch (period) {\n case PeriodType.DAY:\n return 1;\n case PeriodType.WEEK:\n return 7;\n case PeriodType.MONTH:\n return 30;\n case PeriodType.QUARTER:\n return 90;\n }\n }\n // For custom date ranges, calculate actual days\n return Math.abs(differenceInDays(startDate, endDate)) + 1;\n }, [period, startDate, endDate]);\n // const nowStamp = useRef(new Date().getTime().toString());\n // const now = useRef(new Date());\n\n // const endDate = useMemo(() => addDays(today, 1), [today]);\n\n const totalDeposit = useRef<Decimal>(zero);\n\n // get transfer history\n const { data: transferOutHistory, mutate: mutateTransferOut } =\n usePrivateQuery<API.TransferHistory>(\n `/v1/internal_transfer_history?page=1&size=200&side=OUT&start_t=${startDate.getTime()}&end_t=${endDate.getTime()}`,\n {\n revalidateOnFocus: false,\n },\n );\n const { data: transferInHistory, mutate: mutateTransferIn } =\n usePrivateQuery<API.TransferHistory>(\n `/v1/internal_transfer_history?page=1&size=200&side=IN&start_t=${startDate.getTime()}&end_t=${endDate.getTime()}`,\n {\n revalidateOnFocus: false,\n },\n );\n\n const [data] = useStatisticsDaily(\n {\n startDate: startDate.toISOString().split(\"T\")[0],\n endDate: endDate.toISOString().split(\"T\")[0],\n },\n {\n ignoreAggregation: true,\n },\n );\n\n const [userStatistics] = useUserStatistics();\n\n const todayVolume = useMemo(\n () => userStatistics?.perp_trading_volume_today ?? 0,\n [userStatistics],\n );\n\n // Refresh the transfer history once after the balance change event.\n const lastBalanceEventRef = useRef<number>(0);\n const refreshTransferHistory = useCallback(() => {\n const now = Date.now();\n if (now - lastBalanceEventRef.current < 15000) {\n return;\n }\n lastBalanceEventRef.current = now;\n mutateTransferOut?.(undefined, true);\n mutateTransferIn?.(undefined, true);\n }, [mutateTransferOut, mutateTransferIn]);\n\n useBalanceTopic({\n onMessage: () => {\n refreshTransferHistory();\n },\n });\n\n // get deposit & withdraw records to calculate the current PNL\n const [assetHistory] = useAssetsHistory({\n startTime: subDays(today, 2).getTime(),\n endTime: endDate.getTime(),\n pageSize: 50,\n });\n\n // get all deposit records to calculate the ROI\n const [allDepositHistory] = useAssetsHistory({\n side: \"DEPOSIT\",\n startTime: subDays(today, periodValue).getTime(),\n endTime: endDate.getTime(),\n pageSize: 200,\n });\n\n const totalDepositForROI = useMemo(() => {\n return allDepositHistory\n ?.filter((item) => item.trans_status === \"COMPLETED\")\n .reduce((acc, item) => {\n return acc.add(\n // item.amount\n convertToUSDCAndOperate({\n token: item.token,\n amount: item.amount,\n value: zero,\n op: \"add\",\n }),\n );\n }, zero);\n }, [allDepositHistory, convertToUSDCAndOperate]);\n\n const totalTransferInForROI = useMemo(() => {\n if (!Array.isArray(transferInHistory)) {\n return zero;\n }\n return transferInHistory\n ?.filter((item) => item.status === \"COMPLETED\")\n .reduce((acc, item) => {\n return acc.add(\n convertToUSDCAndOperate({\n token: item.token,\n amount: item.amount,\n value: zero,\n op: \"add\",\n }),\n );\n }, zero);\n }, [transferInHistory, convertToUSDCAndOperate]);\n\n const dateRange = useMemo(\n () => ({\n from: startDate,\n to: endDate,\n }),\n [startDate, endDate],\n );\n\n const onPeriodChange = (value: PeriodType) => {\n const newStartDate = getStartDate(value);\n setStartDate(newStartDate);\n setEndDate(today);\n setPeriod(value);\n };\n\n const setDateRange = (newRange: {\n from: Date | string;\n to: Date | string;\n }) => {\n const fromDate =\n newRange.from instanceof Date ? newRange.from : new Date(newRange.from);\n const toDate =\n newRange.to instanceof Date ? newRange.to : new Date(newRange.to);\n setStartDate(fromDate);\n setEndDate(toDate);\n\n // Check if the selected range matches a predefined period\n const matchingPeriod = getMatchingPeriodType(fromDate, toDate);\n if (matchingPeriod) {\n setPeriod(matchingPeriod);\n } else {\n // Reset period to null to indicate custom date range selection\n setPeriod(null);\n }\n };\n\n const onFilter = (filter: { name: string; value: any }) => {\n if (filter.name === \"dateRange\") {\n setDateRange(filter.value);\n }\n };\n\n const filterItems = useMemo(() => {\n const dateRangeFilter = {\n type: \"range\" as const,\n name: \"dateRange\",\n value: dateRange,\n max: 90,\n };\n return [dateRangeFilter] as any;\n }, [dateRange]);\n\n // const lastItem = data[data.length - 1];\n\n const lastItem = useMemo(() => {\n return data.length > 0 ? data[data.length - 1] : null;\n }, [data]);\n\n const totalTransferIn = useMemo(() => {\n if (!Array.isArray(transferInHistory)) {\n return null;\n }\n if (\n lastItem == null ||\n transferInHistory?.length === 0 ||\n typeof lastItem.snapshot_time === \"undefined\"\n ) {\n return zero;\n }\n const list = transferInHistory?.filter((item) => {\n return (\n item.status === \"COMPLETED\" &&\n item.created_time > lastItem?.snapshot_time\n );\n });\n return list?.reduce((acc, item) => {\n return acc.add(\n convertToUSDCAndOperate({\n token: item.token,\n amount: item.amount,\n value: zero,\n op: \"add\",\n }),\n );\n }, zero);\n }, [transferInHistory, lastItem, convertToUSDCAndOperate]);\n\n const totalTransferOut = useMemo(() => {\n if (!Array.isArray(transferOutHistory)) {\n return null;\n }\n if (\n lastItem == null ||\n transferOutHistory?.length === 0 ||\n typeof lastItem.snapshot_time === \"undefined\"\n ) {\n return zero;\n }\n const list = transferOutHistory?.filter((item) => {\n return (\n item.status === \"COMPLETED\" &&\n item.created_time > lastItem?.snapshot_time\n );\n });\n return list?.reduce((acc, item) => {\n return acc.add(\n convertToUSDCAndOperate({\n token: item.token,\n amount: item.amount,\n value: zero,\n op: \"add\",\n }),\n );\n }, zero);\n }, [transferOutHistory, lastItem, convertToUSDCAndOperate]);\n\n const calculateLastPnl = (inputs: {\n lastItem: API.DailyRow;\n assetHistory: ReadonlyArray<API.AssetHistoryRow> | API.AssetHistoryRow[];\n transferHistory: {\n OUT: Decimal;\n IN: Decimal;\n };\n totalValue: number | null;\n }) => {\n if (totalValue == null) {\n return null;\n }\n // today daily pnl = totalValue - lastItem.account_value - deposit + withdraw\n let value = new Decimal(totalValue).sub(inputs.lastItem.account_value);\n\n // subtraction of deposit and withdraw\n if (\n Array.isArray(inputs.assetHistory) &&\n inputs.assetHistory.length > 0 &&\n typeof inputs.lastItem.snapshot_time !== \"undefined\"\n ) {\n // find a list with the timestamp greater than the last item timestamp and trans_status = success;\n const list = [];\n\n for (let i = 0; i < inputs.assetHistory.length; i++) {\n const item = inputs.assetHistory[i];\n if (item.created_time > inputs.lastItem.snapshot_time) {\n list.push(item);\n }\n }\n\n // calculate the sum of deposit and withdraw\n for (let i = 0; i < list.length; i++) {\n const item = list[i];\n if (item.side === \"DEPOSIT\") {\n if (item.trans_status === \"COMPLETED\") {\n value = convertToUSDCAndOperate({\n token: item.token,\n amount: item.amount,\n value,\n op: \"sub\",\n });\n\n totalDeposit.current = convertToUSDCAndOperate({\n token: item.token,\n amount: item.amount,\n value: totalDeposit.current,\n op: \"add\",\n });\n }\n } else if (item.side === \"WITHDRAW\") {\n if (item.trans_status !== \"FAILED\") {\n value = convertToUSDCAndOperate({\n token: item.token,\n amount: item.amount,\n value,\n op: \"add\",\n });\n }\n }\n }\n }\n\n value = value\n .sub(inputs.transferHistory.IN)\n .add(inputs.transferHistory.OUT);\n\n return value.toNumber();\n };\n\n const calculate = (\n data: API.DailyRow[],\n totalValue: number | null,\n totalTransferIn: Decimal,\n totalTransferOut: Decimal,\n todayVol: number,\n ) => {\n const lastItem = data[data.length - 1];\n\n return {\n ...lastItem,\n date: getUTCStr(today),\n perp_volume: todayVol,\n account_value:\n totalValue !== null ? totalValue : (lastItem?.account_value ?? 0),\n pnl:\n calculateLastPnl({\n lastItem,\n assetHistory,\n totalValue,\n transferHistory: {\n OUT: totalTransferOut,\n IN: totalTransferIn,\n },\n }) ?? 0,\n __isCalculated: true,\n };\n };\n\n const mergeData = (\n data: ReadonlyArray<API.DailyRow> | API.DailyRow[],\n totalValue: number | null,\n totalTransferIn: Decimal,\n totalTransferOut: Decimal,\n todayVol: number,\n ) => {\n if (!Array.isArray(data) || data.length === 0) {\n return data;\n }\n\n if (data[data.length - 1].date === getUTCStr(today)) {\n return data;\n }\n\n return data.concat([\n calculate(data, totalValue, totalTransferIn, totalTransferOut, todayVol),\n ]);\n };\n\n const calculateData = (\n data: ReadonlyArray<API.DailyRow> | API.DailyRow[],\n realtime: boolean,\n totalValue: number | null,\n totalTransferIn: Decimal,\n totalTransferOut: Decimal,\n todayVol: number,\n ) => {\n const _data = !realtime\n ? data\n : mergeData(\n data,\n totalValue,\n totalTransferIn,\n totalTransferOut,\n todayVol,\n );\n\n return _data.slice(Math.max(0, _data.length - periodValue));\n };\n\n const calculatedData = useMemo(() => {\n /**\n * need the totalValue and data are all ready, else return null;\n */\n if (totalValue === null) {\n return [];\n }\n // if the transferOutHistory or transferInHistory is not ready, return null;\n\n if (totalTransferOut === null || totalTransferIn === null) {\n return [];\n }\n return calculateData(\n data,\n isRealtime,\n totalValue,\n totalTransferIn,\n totalTransferOut,\n todayVolume,\n );\n }, [\n data,\n totalValue,\n assetHistory,\n isRealtime,\n getIndexPrice,\n totalTransferIn,\n totalTransferOut,\n todayVolume,\n ]);\n\n const todayPerformance = useMemo(() => {\n if (!Array.isArray(calculatedData) || calculatedData.length === 0) {\n return null;\n }\n\n const todayRow = calculatedData[\n calculatedData.length - 1\n ] as API.DailyRow & {\n base_account_value?: number;\n __isCalculated?: boolean;\n };\n\n if (!todayRow.__isCalculated) {\n return null;\n }\n\n const baseAccountValue =\n typeof todayRow.base_account_value === \"number\"\n ? todayRow.base_account_value\n : (todayRow.account_value ?? 0);\n\n let roi = zero;\n if (baseAccountValue) {\n roi = new Decimal(todayRow.pnl).div(baseAccountValue);\n }\n\n return {\n pnl: todayRow.pnl,\n roi: roi.toNumber(),\n vol: todayRow.perp_volume ?? 0,\n };\n }, [calculatedData]);\n\n const aggregateValue = useMemo(() => {\n let vol = zero;\n let pnl = zero;\n let roi = zero;\n\n if (Array.isArray(calculatedData) && calculatedData.length) {\n calculatedData.forEach((d) => {\n vol = vol.add(d.perp_volume ?? 0);\n pnl = pnl.add(d.pnl);\n });\n\n const tail = calculatedData[0];\n\n const dataTailIndex = data.findIndex((d) => d.date === tail.date);\n\n const lastAccountValue = data[dataTailIndex - 1]?.account_value;\n\n if (typeof lastAccountValue === \"undefined\" || lastAccountValue === 0) {\n roi = zero;\n } else {\n roi = pnl.div(\n totalTransferInForROI.add(lastAccountValue).add(totalDepositForROI),\n );\n }\n }\n\n return { vol: vol.toNumber(), pnl: pnl.toNumber(), roi: roi.toNumber() };\n }, [calculatedData, data, totalTransferInForROI, totalDepositForROI]);\n\n const createFakeData = (\n start: Partial<API.DailyRow>,\n end: Partial<API.DailyRow>,\n ) => {\n return Array.from({ length: 2 }, (_, i) => {\n const date = format(i === 0 ? startDate : new Date(), \"yyyy-MM-dd\");\n return { date, ...(i === 0 ? start : end) };\n });\n };\n\n return {\n periodTypes,\n period: period as PeriodType | null,\n onPeriodChange: onPeriodChange,\n periodLabel: periodLabel,\n curPeriod: period\n ? periodLabel[period as PeriodType]\n : getCustomDateRangeLabel(startDate, endDate),\n // data: calculatedDataUpdateByIndexPrice, // calculatedData,\n data: calculatedData, // calculatedData,\n aggregateValue,\n createFakeData,\n volumeUpdateDate: data?.[data.length - 1]?.date ?? \"\",\n todayPerformance,\n filterItems,\n onFilter,\n dateRange,\n setDateRange,\n } as const;\n};\n\nexport type useAssetsHistoryDataReturn = ReturnType<\n typeof useAssetsHistoryData\n>;\n\nfunction getUTCStr(date: Date) {\n const year = date.getUTCFullYear();\n const month = `0${date.getUTCMonth() + 1}`.slice(-2);\n const day = `0${date.getUTCDate()}`.slice(-2);\n\n return `${year}-${month}-${day}`;\n}\n","import React, { useMemo } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { CardTitle, Flex, DataFilter } from \"@kodiak-finance/orderly-ui\";\nimport { PeriodType } from \"./useAssetHistory\";\n\nexport const PeriodTitle: React.FC<{\n onPeriodChange: (period: PeriodType) => void;\n periodTypes: string[];\n period: PeriodType | null;\n title: string;\n filterItems?: any[];\n onFilter?: (filter: { name: string; value: any }) => void;\n}> = (props) => {\n const { t } = useTranslation();\n\n const periodLabel = useMemo(() => {\n return {\n [PeriodType.DAY]: t(\"common.select.1d\"),\n [PeriodType.WEEK]: t(\"common.select.7d\"),\n [PeriodType.MONTH]: t(\"common.select.30d\"),\n [PeriodType.QUARTER]: t(\"common.select.90d\"),\n };\n }, [t]);\n\n const periodOrder = [\n PeriodType.DAY,\n PeriodType.WEEK,\n PeriodType.MONTH,\n PeriodType.QUARTER,\n ];\n\n return (\n <Flex itemAlign={\"center\"} justify={\"between\"}>\n <CardTitle>{props.title}</CardTitle>\n <Flex gap={2} itemAlign=\"center\">\n {props.filterItems && props.filterItems.length > 0 && (\n <DataFilter\n items={props.filterItems}\n onFilter={props.onFilter || (() => {})}\n className=\"oui-border-none oui-py-0\"\n />\n )}\n {periodOrder.map((periodType) => (\n <button\n key={periodType}\n className={`oui-px-3 oui-rounded oui-text-xs oui-font-medium oui-transition-colors ${\n props.period === periodType\n ? \"oui-bg-primary oui-text-white\"\n : \"oui-bg-base-6 oui-text-base-contrast-60 hover:oui-bg-base-4 hover:oui-text-base-contrast\"\n }`}\n onClick={() => props.onPeriodChange(periodType)}\n >\n {periodLabel[periodType]}\n </button>\n ))}\n </Flex>\n </Flex>\n );\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React from \"react\";\nimport { AssetAreaChart } from \"@kodiak-finance/orderly-chart\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { Card, Box } from \"@kodiak-finance/orderly-ui\";\nimport { useAssetsChartScriptReturn } from \"./assetsChart.script\";\n\nconst LazyPeriodTitle = React.lazy(() =>\n import(\"../shared/periodHeader\").then((mod) => {\n return { default: mod.PeriodTitle };\n }),\n);\n\nexport type AssetsLineChartProps = {} & useAssetsChartScriptReturn;\n\nexport const AssetsChart: React.FC<AssetsLineChartProps> = (props) => {\n const { onPeriodChange, data, periodTypes, period, filterItems, onFilter } =\n props;\n const { t } = useTranslation();\n return (\n <Card\n title={\n <Box>\n <React.Suspense fallback={null}>\n <LazyPeriodTitle\n onPeriodChange={onPeriodChange}\n periodTypes={periodTypes}\n period={period}\n title={t(\"common.assets\")}\n filterItems={filterItems}\n onFilter={onFilter}\n />\n </React.Suspense>\n </Box>\n }\n id=\"portfolio-overview-assets-chart\"\n classNames={{ content: \"oui-h-[168px] oui-pb-0\" }}\n >\n <React.Suspense fallback={null}>\n <AssetAreaChart data={data as any} invisible={props.invisible} />\n </React.Suspense>\n </Card>\n );\n};\n","import React from \"react\";\nimport { useAssetsChartScript } from \"./assetsChart.script\";\nimport { AssetsChart } from \"./assetsChart.ui\";\n\nexport const AssetsChartWidget: React.FC = () => {\n const state = useAssetsChartScript();\n return <AssetsChart {...state} />;\n};\n","export { AssetsChartWidget } from \"./assetsChart.widget\";\nexport { useAssetsChartScript } from \"./assetsChart.script\";\nexport { AssetsChart } from \"./assetsChart.ui\";\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useState } from \"react\";\nimport {\n PnlAreaChart,\n PnLBarChart,\n VolBarChart,\n} from \"@kodiak-finance/orderly-chart\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { EMPTY_LIST } from \"@kodiak-finance/orderly-types\";\nimport {\n Card,\n Grid,\n Box,\n Statistic,\n Text,\n Flex,\n Tooltip,\n cn,\n Tabs,\n TabPanel,\n} from \"@kodiak-finance/orderly-ui\";\nimport { Decimal } from \"@kodiak-finance/orderly-utils\";\nimport type { UsePerformanceScriptReturn } from \"./performance.script\";\n\nconst LazyPeriodTitle = React.lazy(() =>\n import(\"../shared/periodHeader\").then((mod) => {\n return { default: mod.PeriodTitle };\n }),\n);\n\nexport type PerformanceUIProps = {\n // periodTypes: string[];\n // period: string;\n // onPeriodChange: (period: string) => void;\n} & UsePerformanceScriptReturn;\n\nconst formatForChart = (value: number | null | undefined, dp: number = 2) => {\n if (value == null) return 0;\n const decimal = new Decimal(value);\n return Number(decimal.toFixed(dp, Decimal.ROUND_HALF_UP));\n};\n\ntype LabelWithHintProps = {\n label: string;\n hint?: React.ReactNode;\n};\n\nconst LabelWithHint: React.FC<LabelWithHintProps> = (props) => {\n const { label, hint } = props;\n return (\n <Tooltip\n open={hint ? undefined : false}\n content={hint}\n className=\"oui-max-w-[240px] oui-bg-base-6 \"\n arrow={{ className: \"oui-fill-base-6\" }}\n delayDuration={300}\n >\n <Text\n size=\"xs\"\n intensity={36}\n className={cn(\n hint &&\n \"oui-cursor-pointer oui-border-b oui-border-dashed oui-border-line-12\",\n )}\n >\n {label}\n </Text>\n </Tooltip>\n );\n};\n\nexport const PerformancePnL: React.FC<{\n data: ReadonlyArray<any> | any[];\n invisible: boolean;\n}> = (props) => {\n const { t } = useTranslation();\n const chartData = React.useMemo(\n () =>\n (props.data ?? []).map((d) => ({\n ...d,\n pnl: formatForChart(d.pnl),\n })),\n [props.data],\n );\n\n return (\n <Box mt={4} height={\"188px\"}>\n <Text as=\"div\" size=\"sm\" className=\"oui-mb-3\">\n {t(\"portfolio.overview.performance.dailyPnl\")}\n </Text>\n <Box r=\"md\" className=\"oui-h-[188px] oui-border oui-border-line-4\">\n <PnLBarChart\n data={chartData}\n invisible={props.invisible || (chartData?.length ?? 0) <= 2}\n />\n </Box>\n </Box>\n );\n};\n\nexport const CumulativePnlChart: React.FC<{\n data: ReadonlyArray<any> | any[];\n invisible: boolean;\n}> = (props) => {\n const { t } = useTranslation();\n return (\n <Box mt={4}>\n <Text as=\"div\" size=\"sm\" className=\"oui-mb-3\">\n {t(\"portfolio.overview.performance.cumulativePnl\")}\n </Text>\n <Box r=\"md\" className=\"oui-h-[188px] oui-border oui-border-line-4\">\n <PnlAreaChart\n data={props.data}\n invisible={props.invisible || (props.data?.length ?? 0) <= 2}\n />\n </Box>\n </Box>\n );\n};\n\nexport const PerformancePnLTabs: React.FC<{\n data: ReadonlyArray<any> | any[];\n invisible: boolean;\n}> = (props) => {\n const { t } = useTranslation();\n const [activeTab, setActiveTab] = useState(\"daily\");\n\n return (\n <Box mt={4}>\n <Tabs value={activeTab} onValueChange={setActiveTab} variant=\"contained\">\n <TabPanel\n value=\"daily\"\n title={t(\"portfolio.overview.performance.dailyPnl\")}\n >\n <Box\n r=\"md\"\n className=\"oui-mt-4 oui-h-[188px] oui-border oui-border-line-4\"\n >\n <PnLBarChart\n data={props.data}\n invisible={props.invisible || (props.data?.length ?? 0) <= 2}\n />\n </Box>\n </TabPanel>\n <TabPanel\n value=\"cumulative\"\n title={t(\"portfolio.overview.performance.cumulativePnl\")}\n >\n <Box\n r=\"md\"\n className=\"oui-mt-4 oui-h-[188px] oui-border oui-border-line-4\"\n >\n <PnlAreaChart\n data={props.data}\n invisible={props.invisible || (props.data?.length ?? 0) <= 2}\n />\n </Box>\n </TabPanel>\n </Tabs>\n </Box>\n );\n};\n\nexport const VolumeChart: React.FC<{\n data: ReadonlyArray<any> | any[];\n invisible: boolean;\n curPeriod?: string;\n}> = (props) => {\n const { t } = useTranslation();\n\n const volumeData = (props.data ?? []).map((item: any) => ({\n date: item.date,\n volume: item.perp_volume ?? 0,\n opacity: (item.perp_volume ?? 0) > 0 ? 1 : 0,\n }));\n\n const shouldHide = props.invisible || (props.data?.length ?? 0) <= 2;\n\n return (\n <Box mt={4}>\n <Text as=\"div\" size=\"sm\" className=\"oui-mb-3\">\n {t(\"portfolio.overview.performance.volume\", {\n period: props.curPeriod ?? \"\",\n })}\n </Text>\n <Box\n r=\"md\"\n className={cn(\n \"oui-mt-6 oui-h-[188px] oui-border oui-border-line-4\",\n shouldHide && \"chart-invisible\",\n )}\n >\n <VolBarChart data={volumeData} className=\"oui-size-full\" />\n </Box>\n </Box>\n );\n};\n\nexport const PerformanceUI: React.FC<PerformanceUIProps> = (props) => {\n const {\n periodTypes,\n period,\n onPeriodChange,\n aggregateValue,\n invisible,\n visible,\n curPeriod,\n filterItems,\n onFilter,\n } = props;\n const { t } = useTranslation();\n\n return (\n <Card\n title={\n <Box pt={6}>\n <React.Suspense fallback={null}>\n <LazyPeriodTitle\n onPeriodChange={onPeriodChange}\n periodTypes={periodTypes}\n period={period}\n title={t(\"portfolio.overview.performance\")}\n filterItems={filterItems}\n onFilter={onFilter}\n />\n </React.Suspense>\n </Box>\n }\n id=\"portfolio-overview-performance\"\n >\n <Box pb={4}>\n <Grid cols={3} gap={4}>\n <Box\n gradient=\"neutral\"\n r=\"md\"\n px={4}\n py={2}\n angle={184}\n border\n borderColor={6}\n >\n <Statistic\n label={\n <LabelWithHint\n label={t(\"portfolio.overview.performance.roi\", {\n period: curPeriod,\n })}\n hint={t(\"portfolio.overview.performance.roi.tooltip\")}\n />\n }\n valueProps={{ rule: \"percentages\", coloring: true, visible }}\n >\n {invisible ? \"--\" : aggregateValue.roi}\n </Statistic>\n </Box>\n <Box\n gradient=\"neutral\"\n r=\"md\"\n px={4}\n py={2}\n angle={184}\n border\n borderColor={6}\n >\n <Statistic\n label={\n <LabelWithHint\n label={t(\"portfolio.overview.performance.pnl\", {\n period: curPeriod,\n })}\n hint={t(\"portfolio.overview.performance.pnl.tooltip\")}\n />\n }\n valueProps={{ coloring: true, showIdentifier: true, visible }}\n >\n {invisible ? \"--\" : aggregateValue.pnl}\n </Statistic>\n </Box>\n <Box\n gradient=\"neutral\"\n r=\"md\"\n px={4}\n py={2}\n angle={184}\n border\n borderColor={6}\n >\n <Statistic\n classNames={{\n label: \"oui-w-full\",\n }}\n label={\n <LabelWithHint\n label={t(\"portfolio.overview.performance.volume\", {\n period: curPeriod,\n })}\n hint={t(\"portfolio.overview.performance.volume.tooltip\")}\n />\n }\n valueProps={{ visible }}\n >\n {invisible ? \"--\" : aggregateValue.vol}\n </Statistic>\n </Box>\n </Grid>\n <Grid cols={2} gap={4} mb={4}>\n <PerformancePnLTabs\n data={props.data ?? EMPTY_LIST}\n invisible={props.invisible}\n />\n <VolumeChart\n data={props.data ?? EMPTY_LIST}\n invisible={props.invisible}\n curPeriod={props.curPeriod}\n />\n </Grid>\n </Box>\n </Card>\n );\n};\n","// Asset conversion types\nexport interface ConvertedAssets {\n [asset: string]: number;\n}\n\nexport interface ConvertTransaction {\n transaction_id: number;\n venue: \"on_chain\" | \"internal_fund\";\n converted_asset: string;\n received_asset: string;\n converted_qty: number;\n received_qty: number;\n haircut: number;\n chain_id?: number; // Optional, only for on_chain venue\n tx_id?: string; // Optional, only for on_chain venue\n result?: string;\n}\n\nexport interface ConvertRecord {\n convert_id: number;\n converted_asset: ConvertedAssets;\n received_asset: string;\n received_qty: number;\n type: \"auto\" | \"manual\";\n status: \"completed\" | \"pending\" | \"failed\" | \"cancelled\";\n created_time: number;\n updated_time: number;\n details: ConvertTransaction[];\n}\n\n// Additional utility types\nexport type ConvertType = \"auto\" | \"manual\";\n\nexport type ConvertStatus = \"completed\" | \"pending\" | \"failed\" | \"cancelled\";\n\nexport type VenueType = \"on_chain\" | \"internal_fund\";\n\nexport const ORDERLY_ASSETS_VISIBLE_KEY = \"orderly_assets_visible\";\n","import { useMemo } from \"react\";\nimport { useAccount, useLocalStorage } from \"@kodiak-finance/orderly-hooks\";\nimport { useAppContext, useDataTap } from \"@kodiak-finance/orderly-react-app\";\nimport { AccountStatusEnum } from \"@kodiak-finance/orderly-types\";\nimport { ORDERLY_ASSETS_VISIBLE_KEY } from \"../../assets/type\";\nimport { useOverviewContext } from \"../provider/overviewContext\";\n\nexport const usePerformanceScript = () => {\n const ctx = useOverviewContext();\n const [visible, setVisible] = useLocalStorage<boolean>(\n ORDERLY_ASSETS_VISIBLE_KEY,\n true,\n );\n\n const { wrongNetwork, disabledConnect } = useAppContext();\n const { state } = useAccount();\n const filteredData = useDataTap(ctx?.data, {\n accountStatus:\n state.status === AccountStatusEnum.EnableTradingWithoutConnected\n ? AccountStatusEnum.EnableTradingWithoutConnected\n : AccountStatusEnum.EnableTrading,\n fallbackData: ctx?.createFakeData?.(\n { account_value: 0, pnl: 0 },\n { account_value: 500, pnl: 500 },\n ),\n });\n\n const _data = useMemo(() => {\n if (filteredData?.length) {\n return filteredData;\n }\n return ctx?.createFakeData?.(\n { account_value: 0, pnl: 0 },\n { account_value: 500, pnl: 500 },\n );\n }, [ctx, filteredData]);\n\n const invisible =\n wrongNetwork ||\n disabledConnect ||\n (state.status < AccountStatusEnum.EnableTrading &&\n state.status !== AccountStatusEnum.EnableTradingWithoutConnected);\n\n return {\n ...ctx,\n data: _data as ReadonlyArray<any>,\n invisible,\n visible: visible as boolean,\n setVisible: setVisible,\n };\n};\n\nexport type UsePerformanceScriptReturn = ReturnType<\n typeof usePerformanceScript\n>;\n","import React from \"react\";\nimport { usePerformanceScript } from \"./performance.script\";\nimport { PerformanceUI } from \"./performance.ui\";\n\nexport const PerformanceWidget: React.FC = () => {\n const state = usePerformanceScript();\n return <PerformanceUI {...state} />;\n};\n","export { PerformanceUI } from \"./performance.ui\";\nexport { PerformanceWidget } from \"./performance.widget\";\nexport { usePerformanceScript } from \"./performance.script\";\n","import React, { useId } from \"react\";\n\nexport const EffectiveFee = React.forwardRef<\n SVGSVGElement,\n React.SVGAttributes<SVGSVGElement>\n>((props, ref) => {\n const linearId = useId();\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={14}\n height={14}\n viewBox=\"0 0 14 14\"\n fill=\"currentColor\"\n ref={ref}\n focusable={false}\n {...props}\n >\n <path\n d=\"M6.16411 1.53106C6.61974 1.07566 7.35888 1.07551 7.81442 1.53106L8.48833 2.20496C8.6797 2.39624 8.93064 2.51452 9.19755 2.54106L9.3132 2.54676H10.2662C10.9104 2.54691 11.4328 3.06926 11.4329 3.71343V4.66647C11.4329 4.97589 11.5559 5.27312 11.7747 5.49191L12.4492 6.16582C12.9047 6.62142 12.9047 7.36054 12.4492 7.81613L11.7753 8.49004L11.6972 8.57549C11.5272 8.78302 11.433 9.04426 11.4329 9.31491V10.2685L11.4272 10.3876C11.3715 10.9366 10.9348 11.373 10.3859 11.4289L10.2662 11.4352H9.3132L9.19755 11.4409C8.93066 11.4674 8.67969 11.5857 8.48833 11.777L7.81442 12.4509L7.72555 12.5306C7.29789 12.8795 6.68066 12.8794 6.25297 12.5306L6.16411 12.4509L5.4902 11.777C5.29887 11.5857 5.04786 11.4675 4.78097 11.4409L4.66533 11.4352H3.71171L3.59265 11.4289C3.04358 11.3731 2.60705 10.9367 2.55131 10.3876L2.54505 10.2685V9.31491C2.54499 9.04416 2.45089 8.78306 2.28072 8.57549L2.20325 8.49004L1.52934 7.81613C1.10213 7.38905 1.07534 6.71297 1.44902 6.25469L1.52934 6.16582L2.20382 5.49191C2.42248 5.27314 2.54505 4.97579 2.54505 4.66647V3.71343C2.54513 3.10945 3.00442 2.61221 3.59265 2.55246L3.71171 2.54676H4.66533L4.78097 2.54106C5.00968 2.51826 5.22694 2.4281 5.40475 2.28244L5.4902 2.20496L6.16411 1.53106ZM6.31507 3.02983C5.87756 3.46727 5.28401 3.71336 4.66533 3.71343H3.71171V4.66647C3.71171 5.28521 3.46614 5.87922 3.02869 6.31678L2.35421 6.99069L3.02812 7.6646C3.46577 8.10214 3.71164 8.69607 3.71171 9.31491V10.2685H4.66533C5.28396 10.2686 5.87757 10.5142 6.31507 10.9515L6.98898 11.6255L7.66289 10.9515C8.10045 10.5141 8.69446 10.2685 9.3132 10.2685H10.2662V9.31491C10.2663 8.69604 10.5127 8.10214 10.9504 7.6646L11.6243 6.99069L10.9498 6.31678C10.5122 5.8792 10.2662 5.28531 10.2662 4.66647V3.71343H9.3132C8.69438 3.71343 8.10047 3.46739 7.66289 3.02983L6.98898 2.35592L6.31507 3.02983ZM8.52934 4.64255C8.7571 4.41479 9.12639 4.41489 9.35421 4.64255C9.58202 4.87035 9.58202 5.23961 9.35421 5.46742L5.4657 9.35593C5.2379 9.58372 4.86863 9.58373 4.64083 9.35593C4.41318 9.12811 4.41308 8.75881 4.64083 8.53106L8.52934 4.64255ZM8.66435 7.83265C9.1245 7.83272 9.49777 8.2059 9.49777 8.66607C9.49769 9.12616 9.12445 9.49941 8.66435 9.49948C8.20419 9.49948 7.83101 9.12621 7.83094 8.66607C7.83094 8.20586 8.20415 7.83265 8.66435 7.83265ZM5.33126 4.49956C5.79141 4.49963 6.16468 4.87282 6.16468 5.33298C6.1646 5.79307 5.79136 6.16575 5.33126 6.16582C4.87111 6.16582 4.49793 5.79311 4.49785 5.33298C4.49785 4.87277 4.87106 4.49956 5.33126 4.49956Z\"\n fill={`url(#${linearId})`}\n />\n <defs>\n <linearGradient\n id={linearId}\n x1=\"12.7908\"\n y1=\"6.99084\"\n x2=\"1.1875\"\n y2=\"6.99084\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"rgb(var(--oui-gradient-brand-end))\" />\n <stop stopColor=\"rgb(var(--oui-gradient-brand-start))\" offset={1} />\n </linearGradient>\n </defs>\n </svg>\n );\n});\n\nif (process.env.NODE_ENV !== \"production\") {\n EffectiveFee.displayName = \"EffectiveFee\";\n}\n","export * from \"./effectiveFee\";\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useMemo } from \"react\";\nimport { useFeeState } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport type { RouterAdapter } from \"@kodiak-finance/orderly-types\";\nimport {\n Box,\n Flex,\n modal,\n Text,\n Tooltip,\n useModal,\n useScreen,\n} from \"@kodiak-finance/orderly-ui\";\nimport { useScaffoldContext } from \"@kodiak-finance/orderly-ui-scaffold\";\nimport { Decimal, numberToHumanStyle } from \"@kodiak-finance/orderly-utils\";\nimport { useLayoutContext } from \"../../layout/context\";\nimport { FeeTierProps } from \"./feeTier.ui\";\nimport { EffectiveFee } from \"./icons\";\n\ntype VipTierRow = {\n userAddress?: string;\n tier?: number | string;\n name?: string;\n discountRate?: number;\n badgeImageUrl?: string;\n currentAllocation?: string | number | null;\n currentAllocationFormatted?: string | number | null;\n stakedValue?: number | string;\n xkdkStakedValue?: number | string;\n orderlyAccountId?: string | null;\n lastUpdated?: string | null;\n syncedAt?: string | null;\n};\n\nexport type FeeTierHeaderItemProps = {\n label: string;\n value: React.ReactNode;\n meta?: React.ReactNode;\n interactive?: boolean;\n};\n\nexport type FeeTierHeaderProps = {\n tier?: number | null;\n vol?: number | null;\n headerDataAdapter?: (original: any[]) => any[];\n vipTier?: VipTierRow | null;\n vipTierEnabled?: boolean;\n vipTierBaseFeeRates?: FeeTierProps[\"vipTierBaseFeeRates\"];\n vipTierDocsUrl?: string;\n vipTierStakeUrl?: string;\n};\n\nconst isEffective = (val?: unknown) =>\n typeof val !== \"undefined\" && val !== null;\n\nconst formatDiscountRate = (rate?: number) => {\n if (rate === undefined || rate === null) return null;\n const normalized = rate <= 1 ? new Decimal(rate).mul(100) : new Decimal(rate);\n return `${normalized.toFixed(0)}%`;\n};\n\nconst getVipTierLabel = (vipTier?: VipTierRow | null) => {\n return vipTier?.name || vipTier?.tier || \"--\";\n};\n\nconst formatStakedValue = (value?: number | string) => {\n if (value === undefined || value === null || value === \"\") return \"--\";\n const numeric = typeof value === \"string\" ? Number(value) : value;\n if (!Number.isFinite(numeric)) return String(value);\n return numberToHumanStyle(numeric, 0);\n};\n\nconst openLink = (\n href: string,\n label: string,\n routerAdapter?: RouterAdapter,\n) => {\n if (href.startsWith(\"/\") && routerAdapter) {\n routerAdapter.onRouteChange({ href, name: label });\n return;\n }\n window.open(href, \"_blank\", \"noopener,noreferrer\");\n};\n\nconst VipTierValue: React.FC<{\n vipTier?: VipTierRow | null;\n}> = (props) => {\n const { vipTier } = props;\n const { t } = useTranslation();\n const { isMobile } = useScreen();\n const discount = formatDiscountRate(vipTier?.discountRate);\n const label = getVipTierLabel(vipTier);\n\n return (\n <Flex\n itemAlign=\"center\"\n className={`${isMobile ? \"oui-gap-2\" : \"oui-gap-3\"} oui-flex-wrap`}\n >\n {vipTier?.badgeImageUrl && (\n <img\n src={vipTier.badgeImageUrl}\n alt={`${label} badge`}\n className=\"oui-size-5 oui-object-contain\"\n />\n )}\n <Text.gradient color={\"brand\"} size={isMobile ? \"xs\" : \"base\"}>\n {label}\n </Text.gradient>\n {discount && (\n <Box className=\"oui-rounded-full oui-bg-base-3 oui-px-2.5 oui-py-1\">\n <Text size=\"2xs\" intensity={80}>\n {t(\"portfolio.feeTier.vip.discount\", { discount })}\n </Text>\n </Box>\n )}\n </Flex>\n );\n};\n\nconst RefCodeValue: React.FC<{\n code: string;\n discountRate?: number;\n}> = (props) => {\n const { t } = useTranslation();\n const discount = formatDiscountRate(props.discountRate);\n return (\n <Flex direction=\"column\" className=\"oui-gap-2\">\n <Flex itemAlign=\"center\" gap={2} className=\"oui-flex-wrap\">\n <Text.gradient color={\"brand\"} size=\"base\">\n {props.code}\n </Text.gradient>\n {discount && (\n <Box className=\"oui-rounded-full oui-bg-base-3 oui-px-2.5 oui-py-1\">\n <Text size=\"2xs\" intensity={80}>\n {t(\"portfolio.feeTier.vip.discount\", { discount })}\n </Text>\n </Box>\n )}\n </Flex>\n </Flex>\n );\n};\n\nconst FeeRateValue: React.FC<{\n baseRate?: string;\n baseRwaRate?: string;\n effectiveRate?: string;\n effectiveRwaRate?: string;\n size?: \"xs\" | \"base\";\n}> = (props) => {\n const {\n baseRate,\n baseRwaRate,\n effectiveRate,\n effectiveRwaRate,\n size = \"base\",\n } = props;\n const { isMobile } = useScreen();\n\n let discounted = false;\n let rwaDiscounted = false;\n const normalizeRate = (value?: string) => {\n if (!value || value === \"-\" || value === \"--\") return null;\n const match = value.match(/-?\\d+(?:\\.\\d+)?/);\n if (!match) return null;\n const raw = new Decimal(match[0]);\n if (value.includes(\"%\")) {\n return { fraction: raw.div(100), display: value };\n }\n return { fraction: raw, display: `${raw.mul(100).toNumber()}%` };\n };\n\n const effectiveRateValue = normalizeRate(effectiveRate);\n const baseRateValue = normalizeRate(baseRate);\n if (effectiveRateValue && baseRateValue) {\n discounted = effectiveRateValue.fraction.lt(baseRateValue.fraction);\n }\n\n const effectiveRwaRateValue = normalizeRate(effectiveRwaRate);\n const baseRwaRateValue = normalizeRate(baseRwaRate);\n if (effectiveRwaRateValue && baseRwaRateValue) {\n rwaDiscounted = effectiveRwaRateValue.fraction.lt(\n baseRwaRateValue.fraction,\n );\n }\n\n return (\n <Flex\n direction=\"column\"\n className=\"oui-gap-1\"\n itemAlign={isMobile ? \"end\" : \"start\"}\n >\n <Flex itemAlign=\"center\" gap={2}>\n {discounted ? (\n <>\n <Text size={size} intensity={54} className=\"oui-line-through\">\n {baseRateValue?.display ?? \"--\"}\n </Text>\n <Text.gradient color={\"brand\"} size={size}>\n {effectiveRate}\n </Text.gradient>\n </>\n ) : (\n <Text.gradient color={\"brand\"} size={size}>\n {effectiveRate || \"--\"}\n </Text.gradient>\n )}\n </Flex>\n <Flex itemAlign=\"center\" gap={1}>\n <Text size=\"2xs\" intensity={54}>\n RWA:\n </Text>\n {rwaDiscounted ? (\n <>\n <Text size=\"2xs\" intensity={54} className=\"oui-line-through\">\n {baseRwaRateValue?.display ?? \"--\"}\n </Text>\n <Text size=\"2xs\" intensity={80}>\n {effectiveRwaRate}\n </Text>\n </>\n ) : (\n <Text size=\"2xs\" intensity={54}>\n {effectiveRwaRate || \"--\"}\n </Text>\n )}\n </Flex>\n </Flex>\n );\n};\n\nconst EffectiveFeeDialog: React.FC<{\n routerAdapter: RouterAdapter | undefined;\n}> = (props) => {\n const { routerAdapter } = props;\n const { t } = useTranslation();\n const { hide } = useModal();\n return (\n <Text size=\"2xs\" className=\"oui-whitespace-normal oui-break-words\">\n {t(\"portfolio.feeTier.effectiveFee.tooltip\")}{\" \"}\n <a\n href=\"/rewards/affiliate\"\n onClick={(e) => {\n e.preventDefault();\n routerAdapter?.onRouteChange({\n href: \"/rewards/affiliate\",\n name: t(\"portfolio.feeTier.effectiveFee.tooltipLink\"),\n });\n hide();\n }}\n className=\"oui-cursor-pointer oui-border-none oui-bg-transparent oui-p-0 oui-text-2xs oui-underline hover:oui-text-base-contrast-80\"\n >\n {t(\"portfolio.feeTier.effectiveFee.tooltipLink\")}\n </a>\n </Text>\n );\n};\n\nexport const MobileHeaderItem: React.FC<FeeTierHeaderItemProps> = (props) => {\n const { label, value, interactive, meta } = props;\n const { t } = useTranslation();\n const { routerAdapter } = useLayoutContext();\n const isPrimitive =\n typeof value === \"string\" || typeof value === \"number\" || value === null;\n const valueNode = isPrimitive ? (\n <Text size=\"xs\" intensity={80} className=\"oui-leading-[24px]\">\n {value}\n </Text>\n ) : (\n value\n );\n return (\n <Flex\n justify=\"between\"\n itemAlign={isPrimitive ? \"center\" : \"start\"}\n width=\"100%\"\n className={`oui-py-2 ${isPrimitive ? \"\" : \"oui-gap-3\"}`}\n >\n <Text\n as=\"div\"\n intensity={54}\n size=\"2xs\"\n weight=\"semibold\"\n className=\"oui-leading-[18px] oui-min-w-[100px]\"\n >\n {label}\n </Text>\n <Flex\n className=\"oui-gap-1.5 oui-flex-1\"\n itemAlign={isPrimitive ? \"center\" : \"end\"}\n justify=\"end\"\n direction={isPrimitive ? \"row\" : \"column\"}\n >\n {meta}\n {valueNode}\n {interactive && (\n <Flex\n gap={1}\n justify=\"center\"\n itemAlign=\"center\"\n className=\"oui-cursor-pointer oui-rounded oui-bg-gradient-to-r oui-from-[rgb(var(--oui-gradient-brand-start)_/_0.12)] oui-to-[rgb(var(--oui-gradient-brand-end)_/_0.12)] oui-px-1.5 oui-py-0.5\"\n onClick={() => {\n modal.dialog({\n size: \"sm\",\n title: t(\"common.tips\"),\n content: <EffectiveFeeDialog routerAdapter={routerAdapter} />,\n });\n }}\n >\n <EffectiveFee />\n <Text.gradient\n className=\"oui-select-none\"\n color={\"brand\"}\n size=\"3xs\"\n weight=\"regular\"\n >\n {t(\"common.effectiveFee\")}\n </Text.gradient>\n </Flex>\n )}\n </Flex>\n </Flex>\n );\n};\n\nexport const DesktopHeaderItem: React.FC<FeeTierHeaderItemProps> = (props) => {\n const { label, value, interactive, meta } = props;\n const { t } = useTranslation();\n const { routerAdapter } = useScaffoldContext();\n return (\n <Box\n gradient=\"neutral\"\n r=\"lg\"\n px={4}\n py={2}\n angle={184}\n border\n borderColor={6}\n className=\"oui-flex-1 oui-min-w-[200px]\"\n >\n <Flex itemAlign=\"center\" justify=\"between\">\n <Text\n as=\"div\"\n intensity={36}\n size=\"2xs\"\n weight=\"semibold\"\n className=\"oui-leading-[18px]\"\n >\n {label}\n </Text>\n <Flex itemAlign=\"center\" gap={2}>\n {meta}\n {interactive && (\n <Tooltip\n content={\n <Text\n size=\"2xs\"\n className=\"oui-whitespace-normal oui-break-words\"\n >\n {t(\"portfolio.feeTier.effectiveFee.tooltip\")}{\" \"}\n <a\n href=\"/rewards/affiliate\"\n onClick={(e) => {\n e.preventDefault();\n routerAdapter?.onRouteChange({\n href: \"/rewards/affiliate\",\n name: t(\"portfolio.feeTier.effectiveFee.tooltipLink\"),\n });\n }}\n className=\"oui-cursor-pointer oui-border-none oui-bg-transparent oui-p-0 oui-text-2xs oui-underline hover:oui-text-base-contrast-80\"\n >\n {t(\"portfolio.feeTier.effectiveFee.tooltipLink\")}\n </a>\n </Text>\n }\n className=\"oui-p-1.5 oui-text-base-contrast-54\"\n >\n <Flex\n gap={1}\n justify=\"center\"\n itemAlign=\"center\"\n className=\"oui-cursor-pointer oui-rounded oui-bg-gradient-to-r oui-from-[rgb(var(--oui-gradient-brand-start)_/_0.12)] oui-to-[rgb(var(--oui-gradient-brand-end)_/_0.12)] oui-px-1\"\n >\n <EffectiveFee />\n <Text.gradient\n className=\"oui-select-none\"\n color={\"brand\"}\n size=\"xs\"\n weight=\"regular\"\n >\n {t(\"common.effectiveFee\")}\n </Text.gradient>\n </Flex>\n </Tooltip>\n )}\n </Flex>\n </Flex>\n <Flex className=\"oui-mt-1 oui-w-full\">\n <Text size=\"base\" intensity={80} className=\"oui-leading-[24px]\">\n {value}\n </Text>\n </Flex>\n </Box>\n );\n};\n\nexport const FeeTierHeader: React.FC<FeeTierHeaderProps> = (props) => {\n const { t } = useTranslation();\n const {\n tier,\n vol,\n headerDataAdapter,\n vipTier,\n vipTierEnabled,\n vipTierBaseFeeRates,\n vipTierStakeUrl,\n } = props;\n\n const { isMobile } = useScreen();\n const { refereeRebate, refererCode, ...others } = useFeeState();\n const refCode = refererCode || \"--\";\n const isEffectiveFee = isEffective(refereeRebate);\n const { routerAdapter: mobileRouterAdapter } = useLayoutContext();\n const { routerAdapter: desktopRouterAdapter } = useScaffoldContext();\n const routerAdapter = desktopRouterAdapter ?? mobileRouterAdapter;\n\n const items: FeeTierHeaderItemProps[] = [\n {\n label: `${t(\"portfolio.feeTier.header.30dVolume\")} (USDC)`,\n interactive: false,\n value: (\n <Text.numeral\n rule=\"price\"\n dp={2}\n rm={Decimal.ROUND_DOWN}\n size={isMobile ? \"xs\" : \"base\"}\n >\n {vol !== undefined && vol !== null ? `${vol}` : \"-\"}\n </Text.numeral>\n ),\n },\n ...(vipTierEnabled\n ? [\n {\n label: t(\"portfolio.feeTier.header.vipTier\"),\n interactive: false,\n meta: vipTierStakeUrl ? (\n <a\n className=\"oui-group oui-cursor-pointer\"\n href={vipTierStakeUrl}\n onClick={(event) => {\n event.preventDefault();\n openLink(\n vipTierStakeUrl,\n t(\"portfolio.feeTier.vip.stakeNow\"),\n routerAdapter,\n );\n }}\n >\n <Text\n size=\"2xs\"\n intensity={54}\n className=\"oui-whitespace-nowrap oui-underline hover:oui-text-base-contrast-80 oui-transition-colors\"\n >\n {t(\"portfolio.feeTier.vip.staked\")}:{\" \"}\n {formatStakedValue(\n vipTier?.currentAllocationFormatted ??\n vipTier?.xkdkStakedValue ??\n vipTier?.stakedValue ??\n undefined,\n )}\n </Text>\n </a>\n ) : (\n <Text size=\"2xs\" intensity={54} className=\"oui-whitespace-nowrap\">\n {t(\"portfolio.feeTier.vip.staked\")}:{\" \"}\n {formatStakedValue(\n vipTier?.currentAllocationFormatted ??\n vipTier?.xkdkStakedValue ??\n vipTier?.stakedValue ??\n undefined,\n )}\n </Text>\n ),\n value: <VipTierValue vipTier={vipTier} />,\n },\n ]\n : []),\n {\n label: t(\"portfolio.feeTier.header.refCode\"),\n interactive: false,\n value: <RefCodeValue code={refCode} discountRate={refereeRebate} />,\n },\n {\n label: t(\"portfolio.feeTier.header.takerFeeRate\"),\n interactive: isEffectiveFee,\n value: (\n <FeeRateValue\n baseRate={vipTierBaseFeeRates?.takerFeeRate}\n baseRwaRate={vipTierBaseFeeRates?.rwaTakerFeeRate}\n effectiveRate={\n isEffectiveFee ? others.effectiveTakerFee : others.takerFee\n }\n effectiveRwaRate={\n isEffectiveFee ? others.rwaEffectiveTakerFee : others.rwaTakerFee\n }\n size={isMobile ? \"xs\" : \"base\"}\n />\n ),\n },\n {\n label: t(\"portfolio.feeTier.header.makerFeeRate\"),\n interactive: isEffectiveFee,\n value: (\n <FeeRateValue\n baseRate={vipTierBaseFeeRates?.makerFeeRate}\n baseRwaRate={vipTierBaseFeeRates?.rwaMakerFeeRate}\n effectiveRate={\n isEffectiveFee ? others.effectiveMakerFee : others.makerFee\n }\n effectiveRwaRate={\n isEffectiveFee ? others.rwaEffectiveMakerFee : others.rwaMakerFee\n }\n size={isMobile ? \"xs\" : \"base\"}\n />\n ),\n },\n ];\n\n const mergedData = useMemo<FeeTierHeaderItemProps[]>(() => {\n if (typeof headerDataAdapter === \"function\") {\n return headerDataAdapter(items);\n }\n return items;\n }, [headerDataAdapter, items]);\n\n if (!Array.isArray(mergedData)) {\n return null;\n }\n\n if (isMobile) {\n return (\n <Flex\n className=\"oui-rounded-xl oui-bg-base-9 oui-p-4 oui-divide-y oui-divide-line-6\"\n direction=\"column\"\n itemAlign={\"stretch\"}\n >\n {mergedData.map((item, index) => (\n <MobileHeaderItem {...item} key={`mobile-item-${index}`} />\n ))}\n </Flex>\n );\n }\n\n return (\n <Flex\n direction=\"row\"\n gap={4}\n my={4}\n itemAlign={\"stretch\"}\n className=\"oui-flex-wrap\"\n >\n {mergedData.map((item, index) => (\n <DesktopHeaderItem {...item} key={`desktop-item-${index}`} />\n ))}\n </Flex>\n );\n};\n","import { useEffect, useMemo, useState } from \"react\";\nimport {\n APIKeyItem,\n ScopeType,\n useAccount,\n useApiKeyManager,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { useAppContext, useDataTap } from \"@kodiak-finance/orderly-react-app\";\nimport { AccountStatusEnum } from \"@kodiak-finance/orderly-types\";\nimport { toast, usePagination } from \"@kodiak-finance/orderly-ui\";\n\nexport type GenerateKeyInfo = {\n key: string;\n secretKey: string;\n ip?: string;\n permissions?: string;\n};\n\nexport const useApiManagerScript = (props?: {\n filterTags?: [string];\n keyStatus?: string;\n}) => {\n const { filterTags, keyStatus } = props ?? {};\n const [showCreateDialog, setShowCreateDialog] = useState(false);\n const [showCreatedDialog, setShowCreatedDialog] = useState(false);\n const [generateKey, setGenerateKey] = useState<GenerateKeyInfo | undefined>();\n const { wrongNetwork, disabledConnect } = useAppContext();\n const { state, account } = useAccount();\n const { t } = useTranslation();\n\n const canCreateApiKey =\n !wrongNetwork &&\n !disabledConnect &&\n (state.status === AccountStatusEnum.EnableTrading ||\n state.status === AccountStatusEnum.EnableTradingWithoutConnected);\n\n const [\n keys,\n {\n generateOrderlyKey,\n setIPRestriction,\n removeOrderlyKey,\n resetOrderlyKeyIPRestriction,\n refresh,\n isLoading,\n error,\n },\n ] = useApiKeyManager({\n keyInfo: { key_status: keyStatus },\n });\n\n const [curPubKey, setCurPubKey] = useState<string | undefined>(undefined);\n\n useEffect(() => {\n account.keyStore\n .getOrderlyKey()\n ?.getPublicKey()\n .then((pubKey) => {\n setCurPubKey(pubKey);\n });\n }, [account, state]);\n\n const onCreateApiKey = () => {\n setShowCreateDialog(true);\n };\n const onReadApiGuide = () => {\n window.open(\n \"https://orderly.network/docs/build-on-omnichain/evm-api/api-authentication#api-authentication\",\n \"_blank\",\n );\n };\n\n const hideCreateDialog = () => {\n setShowCreateDialog(false);\n };\n\n const doCreate = async (\n ipRestriction?: string,\n scope?: ScopeType,\n ): Promise<number> => {\n try {\n const createdSuccess = (\n res: {\n key: string;\n secretKey: string;\n },\n ip?: string,\n ) => {\n const { key, secretKey } = res;\n hideCreateDialog();\n setGenerateKey({\n key: key,\n secretKey,\n ip: ip,\n permissions: scope\n ?.split(\",\")\n ?.map((e) => capitalizeFirstChar(e))\n .join(\", \"),\n });\n setShowCreatedDialog(true);\n };\n\n const res = await generateOrderlyKey(scope);\n /// add ed25519: prefix to the key\n const generateKeyRes = {\n ...res,\n key: `ed25519:${res.key}`,\n secretKey: `ed25519:${res.secretKey}`,\n };\n toast.success(t(\"portfolio.apiKey.created\"));\n\n if ((ipRestriction?.length || 0) > 0) {\n const key = generateKeyRes.key;\n const res = await setIPRestriction(key, ipRestriction!);\n if (res.success) {\n createdSuccess(\n generateKeyRes,\n res.data.ip_restriction_list?.join(\",\"),\n );\n }\n } else {\n createdSuccess(generateKeyRes, undefined);\n }\n } catch (err: any) {\n if (err?.message) toast.error(err?.message);\n }\n\n return Promise.resolve(0);\n };\n\n const hideCreatedDialog = () => {\n setShowCreatedDialog(false);\n refresh();\n };\n\n const onCopyApiKeyInfo = () => {\n navigator.clipboard.writeText(JSON.stringify(generateKey));\n toast.success(t(\"portfolio.apiKey.apiInfo.copied\"));\n };\n const doConfirm = () => {\n hideCreatedDialog();\n };\n\n const doDelete = (item: APIKeyItem): Promise<any> => {\n return new Promise(async (resolve) => {\n await removeOrderlyKey(item.orderly_key)\n .then(\n async (data) => {\n if (data?.success) {\n toast.success(t(\"portfolio.apiKey.deleted\"));\n refresh();\n // delete current api key, wiil disconnect\n const curKey = await account.keyStore\n .getOrderlyKey()\n ?.getPublicKey();\n if (item.orderly_key === curKey) {\n account.destroyOrderlyKey();\n }\n }\n resolve(1);\n },\n (reject) => {},\n )\n .catch((err) => {});\n });\n };\n\n const doEdit = async (item: APIKeyItem, ip?: string): Promise<void> => {\n let future;\n if ((ip?.length || 0) === 0) {\n future = resetOrderlyKeyIPRestriction(item.orderly_key, \"ALLOW_ALL_IPS\");\n } else {\n future = setIPRestriction(item.orderly_key, ip!);\n }\n\n const data = await future;\n\n if (data.success) {\n toast.success(t(\"portfolio.apiKey.updated\"));\n refresh();\n return Promise.resolve();\n } else {\n toast.error(data.message);\n }\n return Promise.reject();\n };\n\n const onCopyAccountId = () =>\n toast.success(t(\"portfolio.apiKey.accountId.copied\"));\n const onCopyApiKey = (key?: string) => {\n toast.success(t(\"portfolio.apiKey.column.apiKey.copy\"));\n };\n const onCopyApiSecretKey = () =>\n toast.success(t(\"portfolio.apiKey.secretKey.copied\"));\n const onCopyIP = () =>\n toast.success(t(\"portfolio.apiKey.column.restrictedIP.copy\"));\n\n const keyList = useMemo(() => {\n return keys?.filter((e) => {\n const filterTag = filterTags ? filterTags?.includes(e.tag) : true;\n const filterCurKey = curPubKey\n ? !e.orderly_key.includes(curPubKey)\n : true;\n return filterTag && filterCurKey;\n });\n }, [keys, filterTags, curPubKey]);\n\n const verifyIP = (ip: string) => {\n const ipRegex =\n /^((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])(,((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9]))*$/;\n return ipRegex.test(ip)\n ? \"\"\n : \"The IP restriction format is incorrect. Please use the correct format: [xx.xx.xxx.x],[xx.xxx.xxx.xxx]\";\n };\n\n const accountStatus =\n state.status === AccountStatusEnum.EnableTradingWithoutConnected\n ? AccountStatusEnum.EnableTradingWithoutConnected\n : AccountStatusEnum.EnableTrading;\n\n const accountId = useDataTap(state.accountId, {\n accountStatus,\n });\n\n const userId = useDataTap(state.userId, {\n accountStatus,\n });\n\n const { pagination } = usePagination();\n\n return {\n accountId: accountId ?? \"--\",\n userId: userId ?? \"--\",\n onCreateApiKey,\n onReadApiGuide,\n showCreateDialog,\n hideCreateDialog,\n doCreate,\n showCreatedDialog,\n hideCreatedDialog,\n onCopyApiKeyInfo,\n doConfirm,\n doDelete,\n doEdit,\n canCreateApiKey,\n status: state.status,\n keys: keyList,\n generateKey,\n onCopyAccountId,\n wrongNetwork,\n onCopyApiKey,\n onCopyApiSecretKey,\n onCopyIP,\n verifyIP,\n isLoading,\n pagination,\n };\n};\n\nexport function capitalizeFirstChar(str: string): string {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\n\nexport type ApiManagerScriptReturns = ReturnType<typeof useApiManagerScript>;\n","import { FC, useEffect, useState } from \"react\";\nimport { ScopeType } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n cn,\n Flex,\n SimpleDialog,\n Statistic,\n Text,\n} from \"@kodiak-finance/orderly-ui\";\nimport { ApiManagerScriptReturns } from \"../apiManager.script\";\n\nexport const CreateAPIKeyDialog: FC<ApiManagerScriptReturns> = (props) => {\n const [ipText, setIpText] = useState(\"\");\n const [read, setRead] = useState(true);\n const [trade, setTrade] = useState(true);\n const [hint, setHint] = useState(\"\");\n const { t } = useTranslation();\n\n useEffect(() => {\n if (!props.showCreateDialog) {\n setIpText(\"\");\n setRead(true);\n setTrade(true);\n setHint(\"\");\n }\n }, [props.showCreateDialog]);\n\n useEffect(() => {\n if (ipText.length === 0) setHint(\"\");\n }, [ipText]);\n\n return (\n <SimpleDialog\n size=\"sm\"\n open={props.showCreateDialog}\n onOpenChange={(open) => {\n props.hideCreateDialog?.();\n }}\n title={t(\"portfolio.apiKey.create.dialog.title\")}\n actions={{\n primary: {\n label: t(\"common.confirm\"),\n className: \"oui-w-[120px] lg:oui-w-[154px]\",\n \"data-testid\": \"oui-testid-apiKey-createApiKey-dialog-comfirm-btn\",\n onClick: async () => {\n if (ipText.length > 0) {\n const hint = props.verifyIP(ipText);\n setHint(hint);\n if (hint.length > 0) {\n return;\n }\n }\n\n const scopes: string[] = [];\n if (read) {\n scopes.push(\"read\");\n }\n if (trade) {\n scopes.push(\"trading\");\n }\n await props.doCreate(ipText, scopes.join(\",\") as ScopeType);\n },\n disabled: !trade && !read,\n size: \"md\",\n },\n }}\n classNames={{\n footer: \"oui-justify-center\",\n content:\n \"oui-bg-base-8 oui-w-[300px] lg:oui-w-[360px] oui-font-semibold\",\n }}\n >\n <Flex direction={\"column\"} gap={6}>\n <Flex direction={\"column\"} gap={1} width={\"100%\"} itemAlign={\"start\"}>\n <Text intensity={54} size=\"2xs\">\n {t(\"portfolio.apiKey.create.ipRestriction\")}\n </Text>\n <textarea\n data-testid=\"oui-testid-apiKey-createApiKey-dialog-textarea\"\n placeholder={t(\"portfolio.apiKey.create.ipRestriction.placeholder\")}\n className={cn(\n \"oui-h-[100px] oui-w-full oui-rounded-xl oui-bg-base-6 oui-p-3 oui-text-sm oui-text-base-contrast-80\",\n \"oui-border-0 oui-outline-none focus:oui-border-2 focus:oui-border-primary-darken\",\n \"oui-placeholder-base-contrast-20\",\n hint.length > 0 &&\n \"oui-outline-1 oui-outline-danger focus:oui-outline-none\",\n )}\n value={ipText}\n onChange={(e) => {\n setIpText(e.target.value);\n }}\n style={{\n resize: \"none\",\n }}\n />\n {hint.length > 0 && (\n <Flex gap={1} className=\"oui-relative\">\n <div\n className={cn(\n \"oui-absolute oui-top-[10px]\",\n \"oui-size-1 oui-rounded-full oui-bg-danger\",\n )}\n />\n <Text color=\"danger\" size=\"xs\" className=\"oui-ml-2\">\n {hint}\n </Text>\n </Flex>\n )}\n </Flex>\n <Statistic\n label={\n <Text size=\"xs\" intensity={54}>\n {t(\"portfolio.apiKey.permissions\")}\n </Text>\n }\n className=\"oui-w-full\"\n >\n <Flex\n direction={\"row\"}\n gap={6}\n itemAlign={\"start\"}\n className=\"oui-mt-2\"\n >\n <Checkbox\n size={18}\n checked={read}\n onCheckedChange={(e) => setRead(e as boolean)}\n label={t(\"portfolio.apiKey.permissions.read\")}\n testid=\"oui-testid-apiKey-createApiKey-dialog-read-checkbox\"\n />\n <Checkbox\n size={18}\n checked={trade}\n onCheckedChange={(e) => setTrade(e as boolean)}\n label={t(\"portfolio.apiKey.permissions.trading\")}\n testid=\"oui-testid-apiKey-createApiKey-dialog-trading-checkbox\"\n />\n </Flex>\n </Statistic>\n </Flex>\n </SimpleDialog>\n );\n};\n\nexport const Checkbox: FC<{\n size?: number;\n checked: boolean;\n onCheckedChange: (checked?: boolean) => void;\n disabled?: boolean;\n label: string;\n testid?: string;\n}> = (props) => {\n return (\n <button\n disabled={props.disabled}\n onClick={(e) => {\n props.onCheckedChange(!props.checked);\n }}\n className={\n \"oui-flex oui-items-center oui-gap-2 disabled:oui-cursor-not-allowed disabled:oui-opacity-50\"\n }\n data-testid={props.testid}\n >\n {props.checked ? (\n <svg\n width={\"props.size\"}\n height={props.size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M6.99072 2.92981C4.78172 2.92981 2.99072 4.72071 2.99072 6.92981V16.9298C2.99072 19.1389 4.78172 20.9298 6.99072 20.9298H16.9907C19.1997 20.9298 20.9907 19.1389 20.9907 16.9298V6.92981C20.9907 4.72071 19.1997 2.92981 16.9907 2.92981H6.99072ZM16.9853 7.31211C17.2125 7.09537 17.5236 7 17.8218 7C18.1201 7 18.4312 7.09537 18.6584 7.31211C19.1139 7.74546 19.1139 8.47384 18.6584 8.9072L10.5077 16.675C10.0534 17.1083 9.28909 17.1083 8.83472 16.675L5.34077 13.3459C4.88641 12.9126 4.88641 12.1841 5.34077 11.7508C5.79631 11.3175 6.56057 11.3175 7.01493 11.7508L9.67122 14.2822L16.9853 7.31211Z\"\n className=\"oui-fill-base-contrast-54\"\n />\n </svg>\n ) : (\n <svg\n width={props.size}\n height={props.size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M6.99072 2.92981C4.78172 2.92981 2.99072 4.72071 2.99072 6.92981V16.9298C2.99072 19.1389 4.78172 20.9298 6.99072 20.9298H16.9907C19.1997 20.9298 20.9907 19.1389 20.9907 16.9298V6.92981C20.9907 4.72071 19.1997 2.92981 16.9907 2.92981H6.99072ZM6.99072 4.92981H16.9907C18.0957 4.92981 18.9907 5.82521 18.9907 6.92981V16.9298C18.9907 18.0344 18.0957 18.9298 16.9907 18.9298H6.99072C5.88572 18.9298 4.99072 18.0344 4.99072 16.9298V6.92981C4.99072 5.82521 5.88572 4.92981 6.99072 4.92981Z\"\n className=\"oui-fill-base-contrast-54\"\n />\n </svg>\n )}\n\n <Text\n intensity={54}\n size=\"sm\"\n className=\"oui-whitespace-nowrap oui-break-normal\"\n >\n {props.label}\n </Text>\n </button>\n );\n};\n","import { FC } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n Box,\n CopyIcon,\n Flex,\n SimpleDialog,\n Statistic,\n Text,\n} from \"@kodiak-finance/orderly-ui\";\nimport { ApiManagerScriptReturns } from \"../apiManager.script\";\n\nexport const CreatedAPIKeyDialog: FC<ApiManagerScriptReturns> = (props) => {\n const ip = props.generateKey?.ip ?? \"--\";\n const { t } = useTranslation();\n return (\n <SimpleDialog\n size=\"sm\"\n open={props.showCreatedDialog}\n onOpenChange={(open) => {\n props.hideCreatedDialog?.();\n }}\n title={t(\"portfolio.apiKey.created\")}\n actions={{\n primary: {\n label: t(\"common.ok\"),\n \"data-testid\": \"oui-testid-apiKey-createdApiKey-dialog-ok-btn\",\n className:\n \"oui-w-[120px] lg:oui-w-[154px] oui-bg-base-2 hover:oui-bg-base-3\",\n size: \"md\",\n onClick: async () => {\n return props.doConfirm();\n },\n },\n secondary: {\n label: t(\"portfolio.apiKey.created.button.copyApiInfo\"),\n \"data-testid\": \"oui-testid-apiKey-createdApiKey-dialog-copy-btn\",\n className:\n \"oui-w-[120px] lg:oui-w-[154px] oui-bg-primary-darken hover:oui-opacity-80\",\n size: \"md\",\n onClick: async () => {\n return props.onCopyApiKeyInfo();\n },\n },\n }}\n classNames={{\n footer: \"oui-justify-center\",\n content:\n \"oui-bg-base-8 oui-w-[300px] lg:oui-w-[360px] oui-font-semibold\",\n body: \"oui-py-0 oui-pt-5\",\n }}\n >\n <Flex direction={\"column\"} gap={4} itemAlign={\"start\"}>\n <Statistic label={t(\"common.accountId\")}>\n <Text.formatted\n size=\"sm\"\n intensity={80}\n copyable\n copyIconSize={16}\n className=\"oui-break-all\"\n onCopy={props.onCopyAccountId}\n data-testid=\"oui-testid-apiKey-createdApiKey-dialog-key-span\"\n >\n {props.accountId}\n </Text.formatted>\n </Statistic>\n <Statistic label={t(\"portfolio.apiKey.column.apiKey\")}>\n <Text.formatted\n size=\"sm\"\n intensity={80}\n copyable\n copyIconSize={16}\n className=\"oui-break-all\"\n onCopy={() => props.onCopyApiKey(props.generateKey?.key)}\n data-testid=\"oui-testid-apiKey-createdApiKey-dialog-key-span\"\n >\n {props.generateKey?.key}\n </Text.formatted>\n </Statistic>\n <Statistic label={t(\"portfolio.apiKey.secretKey\")}>\n <Text.formatted\n size=\"sm\"\n intensity={80}\n copyable\n copyIconSize={16}\n className=\"oui-break-all\"\n onCopy={props.onCopyApiSecretKey}\n >\n {props.generateKey?.secretKey}\n </Text.formatted>{\" \"}\n </Statistic>\n <Statistic label={t(\"portfolio.apiKey.ip\")}>\n <Flex\n width={320}\n gap={1}\n itemAlign={\"center\"}\n className=\"oui-text-base-contrast-80 oui-text-sm\"\n >\n <Box className=\"oui-max-h-[100px] oui-flex-1 oui-overflow-hidden oui-text-ellipsis oui-line-clamp-5 oui-break-all\">\n {ip}\n </Box>\n {ip !== \"--\" && (\n <Box\n width={16}\n height={16}\n className=\"oui-cursor-pointer oui-flex-shrink-0\"\n >\n <CopyIcon\n color=\"white\"\n opacity={0.54}\n size={16}\n onClick={(e) => {\n if (props.generateKey?.ip)\n navigator.clipboard.writeText(props.generateKey?.ip);\n props?.onCopyIP();\n }}\n />\n </Box>\n )}\n </Flex>\n </Statistic>\n <Statistic label={t(\"portfolio.apiKey.permissions\")}>\n <Text\n size=\"sm\"\n intensity={80}\n data-testid=\"oui-testid-apiKey-createdApiKey-dialog-permissions-span\"\n >\n {props.generateKey?.permissions}\n </Text>\n </Statistic>\n <div></div>\n <Text color=\"warning\" size=\"xs\" className=\"oui-text-center\">\n {t(\"portfolio.apiKey.created.warning\")}\n </Text>\n </Flex>\n </SimpleDialog>\n );\n};\n","import { FC } from \"react\";\nimport { Flex, SimpleDialog, Text } from \"@kodiak-finance/orderly-ui\";\nimport { APIKeyItem } from \"@kodiak-finance/orderly-hooks\";\nimport { formatKey } from \"../apiManager.ui\";\nimport { useTranslation, Trans } from \"@kodiak-finance/orderly-i18n\";\n\nexport const DeleteAPIKeyDialog: FC<{\n item: APIKeyItem;\n open: boolean;\n setOpen?: any;\n onDelete?: (item: APIKeyItem) => Promise<void>;\n}> = (props) => {\n const { item, open, setOpen, onDelete } = props;\n const { t } = useTranslation();\n return (\n <SimpleDialog\n size=\"sm\"\n open={open}\n onOpenChange={setOpen}\n title={t(\"portfolio.apiKey.delete.dialog.title\")}\n actions={{\n primary: {\n label: t(\"common.confirm\"),\n \"data-testid\": \"oui-testid-apiKey-deleteApiKey-dialog-confirm-btn\",\n className: \"oui-w-[120px] lg:oui-w-[154px]\",\n size: \"md\",\n onClick: async () => {\n await props.onDelete?.(item);\n setOpen(false);\n },\n },\n secondary: {\n label: t(\"common.cancel\"),\n className: \"oui-w-[120px] lg:oui-w-[154px]\",\n size: \"md\",\n onClick: async () => {\n setOpen(false);\n },\n },\n }}\n classNames={{\n footer: \"oui-justify-center\",\n content:\n \"oui-bg-base-8 oui-w-[300px] lg:oui-w-[360px] oui-font-semibold\",\n }}\n >\n <Flex className=\"oui-text-xs\">\n {/* @ts-ignore */}\n <Trans\n i18nKey=\"portfolio.apiKey.delete.dialog.description\"\n values={{ apiKey: formatKey(item?.orderly_key) }}\n components={[<Text color=\"primary\" className=\"oui-px-1\" />]}\n />\n </Flex>\n </SimpleDialog>\n );\n};\n","import { FC, useEffect, useState } from \"react\";\nimport { APIKeyItem } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { cn, Flex, SimpleDialog, Statistic, Text } from \"@kodiak-finance/orderly-ui\";\nimport { Checkbox } from \"./createApiKey\";\n\nexport const EditAPIKeyDialog: FC<{\n item: APIKeyItem;\n open: boolean;\n setOpen?: any;\n onUpdate?: (item: APIKeyItem, ip?: string) => Promise<void>;\n verifyIP: (ip: string) => string;\n}> = (props) => {\n const { item, open, setOpen, onUpdate } = props;\n const [ipText, setIpText] = useState(item.ip_restriction_list?.join(\",\"));\n const [read, setRead] = useState(true);\n const [trade, setTrade] = useState(true);\n const [hint, setHint] = useState(\"\");\n const { t } = useTranslation();\n\n useEffect(() => {\n setIpText(item.ip_restriction_list.join(\",\"));\n const scope = item.scope?.toLocaleLowerCase() || \"\";\n\n setRead(scope.includes(\"read\"));\n setTrade(scope.includes(\"trading\"));\n }, [item]);\n\n useEffect(() => {\n if (ipText.length === 0) setHint(\"\");\n }, [ipText]);\n\n return (\n <SimpleDialog\n size=\"sm\"\n open={open}\n onOpenChange={setOpen}\n title={t(\"portfolio.apiKey.edit.dialog.title\")}\n actions={{\n primary: {\n label: t(\"common.confirm\"),\n \"data-testid\": \"oui-testid-apiKey-editApiKey-dialog-confirm-btn\",\n className: \"oui-w-[120px] lg:oui-w-[154px]\",\n onClick: async () => {\n if (ipText.length > 0) {\n const hint = props.verifyIP(ipText);\n setHint(hint);\n if (hint.length > 0) {\n return;\n }\n }\n await props.onUpdate?.(item, ipText);\n setOpen(false);\n },\n disabled: item.ip_restriction_list.join(\",\") === ipText,\n size: \"md\",\n fullWidth: true,\n },\n }}\n classNames={{\n footer: \"oui-justify-center\",\n content:\n \"oui-bg-base-8 oui-w-[300px] lg:oui-w-[360px] oui-font-semibold\",\n }}\n >\n <Flex direction={\"column\"} gap={6}>\n {/* <TextField label={\"IP restriction (optional)\"} rows={5} className=\"oui-w-full oui-h-auto\" classNames={{\n input: \"oui-h-[100px]\",\n root: \"oui-h-[100px]\"\n }}/> */}\n <Flex direction={\"column\"} gap={1} width={\"100%\"} itemAlign={\"start\"}>\n <Text intensity={54} size=\"2xs\">\n {t(\"portfolio.apiKey.create.ipRestriction\")}\n </Text>\n <textarea\n data-testid=\"oui-testid-apiKey-editApiKey-dialog-textarea\"\n placeholder={t(\"portfolio.apiKey.create.ipRestriction.placeholder\")}\n className={cn(\n \"oui-h-[100px] oui-w-full oui-rounded-xl oui-bg-base-6 oui-p-3 oui-text-sm oui-text-base-contrast-80\",\n \"oui-border-0 oui-outline-none focus:oui-border-2 focus:oui-border-primary-darken\",\n \"oui-placeholder-base-contrast-20\",\n hint.length > 0 &&\n \"oui-outline-1 oui-outline-danger focus:oui-outline-none\",\n )}\n value={ipText}\n onChange={(e) => {\n setIpText(e.target.value);\n }}\n style={{\n resize: \"none\",\n }}\n />\n {hint.length > 0 && (\n <Flex gap={1} className=\"oui-relative\">\n <div\n className={cn(\n \"oui-absolute oui-top-[10px]\",\n \"oui-size-1 oui-rounded-full oui-bg-danger\",\n )}\n />\n <Text color=\"danger\" size=\"xs\" className=\"oui-ml-2\">\n {hint}\n </Text>\n </Flex>\n )}\n </Flex>\n <Statistic\n label={\n <Text size=\"xs\" intensity={54}>\n {t(\"portfolio.apiKey.permissions\")}\n </Text>\n }\n className=\"oui-w-full\"\n >\n <Flex\n direction={\"row\"}\n gap={6}\n itemAlign={\"start\"}\n className=\"oui-mt-2\"\n >\n <Checkbox\n disabled\n size={18}\n checked={read}\n onCheckedChange={(e) => setRead(e as boolean)}\n label={t(\"portfolio.apiKey.permissions.read\")}\n />\n <Checkbox\n disabled\n size={18}\n checked={trade}\n onCheckedChange={(e) => setTrade(e as boolean)}\n label={t(\"portfolio.apiKey.permissions.trading\")}\n />\n </Flex>\n </Statistic>\n </Flex>\n </SimpleDialog>\n );\n};\n","import React, { useState } from \"react\";\nimport { APIKeyItem } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n Box,\n Button,\n Card,\n CopyIcon,\n Flex,\n PlusIcon,\n Column,\n Text,\n Tooltip,\n} from \"@kodiak-finance/orderly-ui\";\nimport {\n AuthGuardEmpty,\n AuthGuardDataTable,\n AuthGuardTooltip,\n} from \"@kodiak-finance/orderly-ui-connector\";\nimport {\n type ApiManagerScriptReturns,\n capitalizeFirstChar,\n} from \"./apiManager.script\";\n\nconst LazyCreateAPIKeyDialog = React.lazy(() =>\n import(\"./dialog/createApiKey\").then((mod) => {\n return { default: mod.CreateAPIKeyDialog };\n }),\n);\n\nconst LazyCreatedAPIKeyDialog = React.lazy(() =>\n import(\"./dialog/createdApiKey\").then((mod) => {\n return { default: mod.CreatedAPIKeyDialog };\n }),\n);\n\nconst LazyDeleteAPIKeyDialog = React.lazy(() =>\n import(\"./dialog/deleteApiKey\").then((mod) => {\n return { default: mod.DeleteAPIKeyDialog };\n }),\n);\n\nconst LazyEditAPIKeyDialog = React.lazy(() =>\n import(\"./dialog/editApiKey\").then((mod) => {\n return { default: mod.EditAPIKeyDialog };\n }),\n);\n\nexport const APIManager: React.FC<ApiManagerScriptReturns> = (props) => {\n const { t } = useTranslation();\n return (\n <Card\n title={t(\"portfolio.apiKeys\")}\n id=\"portfolio-apikey-manager\"\n className=\"oui-bg-base-9 oui-font-semibold\"\n >\n <Flex\n direction={\"column\"}\n gap={4}\n width={\"100%\"}\n className=\"oui-font-semibold\"\n >\n <AccountInfo {...props} />\n <Subtitle {...props} />\n </Flex>\n <div>\n <KeyList {...props} />\n <React.Suspense fallback={null}>\n <LazyCreateAPIKeyDialog {...props} />\n </React.Suspense>\n <React.Suspense fallback={null}>\n <LazyCreatedAPIKeyDialog {...props} />\n </React.Suspense>\n </div>\n </Card>\n );\n};\n\nconst AccountInfo: React.FC<ApiManagerScriptReturns> = (props) => {\n const { t } = useTranslation();\n return (\n <Flex\n width={\"100%\"}\n gap={4}\n className=\"oui-border-t-2 oui-border-line-6 oui-pt-4\"\n >\n <Flex\n py={2}\n px={4}\n direction={\"column\"}\n itemAlign={\"start\"}\n r=\"xl\"\n gradient=\"neutral\"\n angle={27}\n border\n className=\"oui-w-1/2\"\n >\n <Text size=\"xs\" intensity={36}>\n {t(\"common.accountId\")}\n </Text>\n <Text.formatted\n size=\"base\"\n inlist={80}\n rule={\"address\"}\n copyable={props.accountId !== \"--\"}\n copyIconSize={16}\n onCopy={props.onCopyAccountId}\n copyIconTestid=\"oui-testid-apiKey-accountInfo-accountId-copy-btn\"\n >\n {props.accountId}\n </Text.formatted>\n </Flex>\n <Flex\n py={2}\n px={4}\n direction={\"column\"}\n itemAlign={\"start\"}\n r=\"xl\"\n gradient=\"neutral\"\n angle={27}\n border\n className=\"oui-w-1/2\"\n >\n <Text size=\"xs\" intensity={36}>\n {t(\"portfolio.apiKey.uid\")}\n </Text>\n <Text size=\"base\" inlist={80}>\n {props.userId}\n </Text>\n </Flex>\n </Flex>\n );\n};\n\nconst Subtitle: React.FC<ApiManagerScriptReturns> = (props) => {\n const { t } = useTranslation();\n return (\n <Flex\n width={\"100%\"}\n direction={\"row\"}\n className=\"oui-text-sm oui-border-b-2 oui-border-line-6 oui-pb-4\"\n >\n <Flex direction={\"column\"} itemAlign={\"start\"} width={\"100%\"} gap={1}>\n <Text intensity={54}>{t(\"portfolio.apiKey.description\")}</Text>\n <Flex\n itemAlign={\"center\"}\n className=\"oui-text-primary-light oui-fill-primary-light hover:oui-text-primary-darken oui-cursor-pointer oui-text-2xs md:oui-text-xs xl:oui-text-sm\"\n onClick={props.onReadApiGuide}\n >\n <Text>{t(\"portfolio.apiKey.readApiGuide\")}</Text>\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M4.008 7.995c0-.368.298-.666.666-.666H9.71L7.733 5.331l.937-.936 3.143 3.122c.13.13.195.304.195.479a.67.67 0 0 1-.195.478L8.67 11.596l-.937-.937 1.978-1.998H4.674a.666.666 0 0 1-.666-.666\" />\n </svg>\n </Flex>\n </Flex>\n <AuthGuardTooltip\n side=\"top\"\n tooltip={{\n connectWallet: t(\"portfolio.apiKey.create.connectWallet.tooltip\"),\n signIn: t(\"portfolio.apiKey.create.createAccount.tooltip\"),\n enableTrading: t(\"portfolio.apiKey.create.enableTrading.tooltip\"),\n wrongNetwork: t(\"portfolio.apiKey.create.wrongNetwork.tooltip\"),\n }}\n >\n <Button\n size=\"md\"\n icon={<PlusIcon />}\n variant=\"contained\"\n color=\"primary\"\n onClick={props.onCreateApiKey}\n disabled={!props.canCreateApiKey}\n // className=\"disabled:oui-cursor-default\"\n data-testid=\"oui-testid-apiKey-createApiKey-btn\"\n >\n {t(\"portfolio.apiKey.create.dialog.title\")}\n </Button>\n </AuthGuardTooltip>\n </Flex>\n );\n};\n\nconst KeyList: React.FC<ApiManagerScriptReturns> = (props) => {\n const { t } = useTranslation();\n const columns: Column<APIKeyItem>[] = [\n {\n title: t(\"portfolio.apiKey.column.apiKey\"),\n dataIndex: \"orderly_key\",\n width: 150,\n render: (value) => {\n const fullKey = typeof value === \"string\" ? value : `${value ?? \"\"}`;\n const displayKey = formatKey(fullKey);\n return (\n <Flex gap={1} itemAlign={\"center\"}>\n <div className=\"oui-overflow-hidden oui-overflow-ellipsis\">\n <Text.formatted rule={\"\"}>{displayKey}</Text.formatted>\n </div>\n {!!fullKey && (\n <Box width={16} height={16} className=\"oui-cursor-pointer\">\n <CopyIcon\n color=\"white\"\n opacity={0.54}\n size={16}\n onClick={(e) => {\n e.stopPropagation();\n navigator.clipboard.writeText(fullKey);\n props.onCopyApiKey?.(fullKey);\n }}\n />\n </Box>\n )}\n </Flex>\n );\n },\n },\n {\n title: t(\"portfolio.apiKey.column.permissionType\"),\n dataIndex: \"scope\",\n render: (value) =>\n value\n ?.split(\",\")\n .map((e: any) => capitalizeFirstChar(`${e}`))\n .join(\", \"),\n },\n {\n title: t(\"portfolio.apiKey.column.restrictedIP\"),\n dataIndex: \"ip_restriction_list\",\n render: (value) => {\n let ip = value.join(\",\");\n if (ip.length === 0) {\n ip = \"--\";\n }\n return (\n <Tooltip content={ip} className=\"oui-max-w-[200px] oui-break-all\">\n <Flex gap={1}>\n <div className=\" oui-overflow-ellipsis oui-overflow-hidden\">\n {ip}\n </div>\n {ip !== \"--\" && (\n <Box width={16} height={16} className=\"oui-cursor-pointer\">\n <CopyIcon\n color=\"white\"\n opacity={0.54}\n size={16}\n onClick={(e) => {\n navigator.clipboard.writeText(ip);\n props?.onCopyIP();\n }}\n />\n </Box>\n )}\n </Flex>\n </Tooltip>\n );\n },\n },\n {\n title: t(\"portfolio.apiKey.column.expirationDate\"),\n dataIndex: \"expiration\",\n render: (value) => (\n <Text.formatted rule={\"date\"} formatString=\"yyyy-MM-dd\">\n {value}\n </Text.formatted>\n ),\n },\n {\n title: \"\",\n type: \"action\",\n dataIndex: \"action\",\n width: 120,\n render: (_, item) => {\n return (\n <Flex direction={\"row\"} gap={2}>\n <EditButton\n item={item}\n onUpdate={props.doEdit}\n verifyIP={props.verifyIP}\n />\n <DeleteButton item={item} onDelete={props.doDelete} />\n </Flex>\n );\n },\n },\n ];\n\n return (\n <AuthGuardDataTable\n bordered\n columns={columns}\n loading={props.isLoading}\n dataSource={props.keys}\n emptyView={<AuthGuardEmpty />}\n pagination={props.pagination}\n manualPagination={false}\n />\n );\n};\n\nconst EditButton: React.FC<{\n item: APIKeyItem;\n onUpdate: (item: APIKeyItem, ip?: string) => Promise<void>;\n verifyIP: (ip: string) => string;\n}> = (props) => {\n const { item, onUpdate, verifyIP } = props;\n const [open, setOpen] = useState(false);\n const { t } = useTranslation();\n\n return (\n <>\n <Button\n size=\"xs\"\n color=\"primary\"\n variant=\"contained\"\n onClick={(e) => {\n e.stopPropagation();\n setOpen(true);\n }}\n data-testid=\"oui-testid-apiKey-keyList-edit-btn\"\n >\n {t(\"common.edit\")}\n </Button>\n {open && (\n <React.Suspense fallback={null}>\n <LazyEditAPIKeyDialog\n item={item}\n open={open}\n setOpen={setOpen}\n onUpdate={onUpdate}\n verifyIP={verifyIP}\n />\n </React.Suspense>\n )}\n </>\n );\n};\n\nconst DeleteButton: React.FC<{\n item: APIKeyItem;\n onDelete: (item: APIKeyItem) => Promise<void>;\n}> = (props) => {\n const { item, onDelete } = props;\n const [open, setOpen] = useState(false);\n const { t } = useTranslation();\n return (\n <>\n <Button\n size=\"xs\"\n color=\"gray\"\n variant=\"contained\"\n onClick={(e) => {\n e.stopPropagation();\n setOpen(true);\n }}\n data-testid=\"oui-testid-apiKey-keyList-delete-btn\"\n >\n {t(\"common.delete\")}\n </Button>\n {open && (\n <React.Suspense fallback={null}>\n <LazyDeleteAPIKeyDialog\n item={item}\n open={open}\n setOpen={setOpen}\n onDelete={onDelete}\n />\n </React.Suspense>\n )}\n </>\n );\n};\n\nexport function formatKey(value: string): string {\n if (typeof value === \"undefined\") {\n return \"-\";\n }\n const key = `${value}`.slice(0, Math.min(value.length, 12));\n return `${key}***`;\n}\n","import { useEffect, useMemo, useState } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { useScreen } from \"@kodiak-finance/orderly-ui\";\nimport {\n SideMenuItem,\n useScaffoldContext,\n} from \"@kodiak-finance/orderly-ui-scaffold\";\n\nexport enum PortfolioLeftSidebarPath {\n Overview = \"/portfolio\",\n Positions = \"/portfolio/positions\",\n Orders = \"/portfolio/orders\",\n Assets = \"/portfolio/assets\",\n FeeTier = \"/portfolio/feeTier\",\n ApiKey = \"/portfolio/apiKey\",\n Setting = \"/portfolio/setting\",\n History = \"/portfolio/history\",\n SymbolPerformance = \"/portfolio/symbol-performance\",\n}\n\nexport type UseLayoutBuilderOptions = {\n current?: string;\n};\n\nexport const usePortfolioLayoutScript = (props: UseLayoutBuilderOptions) => {\n const { routerAdapter } = useScaffoldContext();\n const [current, setCurrent] = useState(\n props.current ?? routerAdapter?.currentPath ?? \"/portfolio\",\n );\n const { t } = useTranslation();\n\n useEffect(() => {\n if (props.current || routerAdapter?.currentPath) {\n setCurrent(props.current || routerAdapter?.currentPath || \"/portfolio\");\n }\n }, [props.current, routerAdapter?.currentPath]);\n\n const items = useMemo(() => {\n return [\n {\n name: t(\"common.overview\"),\n href: PortfolioLeftSidebarPath.Overview,\n icon: (\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 18 18\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M5.24316 2.19727C3.58641 2.19727 2.24316 3.54044 2.24316 5.19727V12.6973C2.24316 14.3541 3.58641 15.6973 5.24316 15.6973H12.7432C14.3999 15.6973 15.7432 14.3541 15.7432 12.6973V5.19727C15.7432 3.54044 14.3999 2.19727 12.7432 2.19727H5.24316ZM5.24316 3.69727H12.7432C13.5719 3.69727 14.2432 4.36882 14.2432 5.19727V12.6973C14.2432 13.2484 13.9319 13.734 13.4894 13.9947C13.3454 12.2235 11.4427 11.1973 8.99316 11.1973C6.54366 11.1973 4.60341 12.251 4.48566 13.9997C4.04241 13.739 3.74316 13.2484 3.74316 12.6973V5.19727C3.74316 4.36882 4.41441 3.69727 5.24316 3.69727ZM8.99316 5.19727C7.54341 5.19727 6.36816 6.37252 6.36816 7.82227C6.36816 9.27202 7.54341 10.4473 8.99316 10.4473C10.4429 10.4473 11.6182 9.27202 11.6182 7.82227C11.6182 6.37252 10.4429 5.19727 8.99316 5.19727Z\"\n className=\"oui-fill-current group-data-[actived=true]:oui-fill-[url(#side-menu-gradient)]\"\n />\n </svg>\n ),\n },\n {\n name: t(\"common.positions\"),\n href: PortfolioLeftSidebarPath.Positions,\n icon: (\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 18 18\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M4.51 3.021a3 3 0 0 0-3 3v6a3 3 0 0 0 3 3h9a3 3 0 0 0 3-3v-6a3 3 0 0 0-3-3zm2.25 3a.76.76 0 0 1 .54.211.77.77 0 0 1 0 1.078l-.75.75a.77.77 0 0 1-.54.211h-.75a.75.75 0 0 1 0-1.5h.422l.54-.539a.76.76 0 0 1 .539-.21m3 .75h3a.75.75 0 0 1 0 1.5h-3a.75.75 0 0 1 0-1.5m-3 2.25a.76.76 0 0 1 .54.211.77.77 0 0 1 0 1.079l-.75.75a.77.77 0 0 1-.54.21h-.75a.75.75 0 0 1 0-1.5h.422l.54-.539a.76.76 0 0 1 .539-.21m3 .75h3a.75.75 0 0 1 0 1.5h-3a.75.75 0 0 1 0-1.5\"\n className=\"oui-fill-current group-data-[actived=true]:oui-fill-[url(#side-menu-gradient)]\"\n />\n </svg>\n ),\n },\n {\n name: t(\"common.orders\"),\n href: PortfolioLeftSidebarPath.Orders,\n icon: (\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 18 18\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M5.693 1.5C4.229 1.5 3.02 2.61 3.02 4.006v9.984c0 1.398 1.208 2.508 2.672 2.508h6.657c1.463 0 2.671-1.11 2.671-2.508V6.726c0-2.672-2.579-5.227-5.25-5.227zm4.828 1.593c1.33.352 2.562 1.58 2.906 2.906h-1.734c-.667 0-1.172-.472-1.172-1.008zm-3.75 2.906h.75a.75.75 0 0 1 0 1.5h-.75a.75.75 0 0 1 0-1.5m0 3h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1 0-1.5m0 3h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1 0-1.5\"\n className=\"oui-fill-current group-data-[actived=true]:oui-fill-[url(#side-menu-gradient)]\"\n />\n </svg>\n ),\n },\n {\n name: t(\"common.assets\"),\n href: PortfolioLeftSidebarPath.Assets,\n icon: (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 18 18\"\n fill=\"none\"\n >\n <path\n d=\"M9 1.5C4.85 1.5 1.5 4.85 1.5 9C1.5 13.15 4.85 16.5 9 16.5C13.15 16.5 16.5 13.15 16.5 9C16.5 4.85 13.15 1.5 9 1.5ZM8.17529 3.75H9.67529V4.94971L10.125 5.17529C10.35 5.32529 10.5756 5.47471 10.7256 5.69971C10.8756 5.92471 11.0256 6.14971 11.1006 6.44971C11.1756 6.74971 11.25 7.05029 11.25 7.42529H9.82471C9.82471 6.97529 9.75059 6.67471 9.60059 6.44971C9.45059 6.22471 9.3 6.14941 9 6.14941C8.85 6.14941 8.7 6.15059 8.625 6.22559L8.39941 6.44971C8.32441 6.52471 8.325 6.675 8.25 6.75C8.175 6.825 8.17529 6.975 8.17529 7.125C8.17529 7.275 8.25 7.35 8.25 7.5C8.25 7.65 8.32441 7.72529 8.39941 7.80029C8.47441 7.95029 8.54971 8.02559 8.69971 8.10059C8.77471 8.17559 8.92441 8.24971 9.14941 8.32471C9.44941 8.47471 9.75059 8.62441 9.97559 8.77441C10.2756 8.92441 10.4994 9.07529 10.6494 9.30029C10.8744 9.52529 11.0256 9.75059 11.1006 9.97559C11.1756 10.2006 11.25 10.5 11.25 10.875C11.25 11.25 11.1756 11.5494 11.1006 11.7744C11.0256 12.0744 10.8756 12.2247 10.7256 12.4497C10.5756 12.5997 10.35 12.7494 10.125 12.8994C9.975 12.9744 9.9 13.0503 9.75 13.0503V14.25H8.25V12.9756C8.1 12.9006 7.95029 12.8997 7.80029 12.8247C7.50029 12.7497 7.35 12.6 7.125 12.375C6.975 12.225 6.82529 11.925 6.67529 11.625C6.60029 11.25 6.52441 10.8753 6.52441 10.4253H8.02441C8.02441 10.6503 8.02559 10.8756 8.10059 11.1006C8.17559 11.3256 8.24971 11.4753 8.32471 11.5503C8.39971 11.6253 8.475 11.6994 8.625 11.7744C8.775 11.8494 8.85 11.8506 9 11.8506C9.15 11.8506 9.225 11.8494 9.375 11.7744C9.525 11.6994 9.60029 11.6253 9.67529 11.5503C9.75029 11.4753 9.74971 11.4 9.82471 11.25C9.89971 11.175 9.89941 11.025 9.89941 10.875C9.89941 10.725 9.82471 10.575 9.82471 10.5C9.82471 10.425 9.75029 10.2747 9.67529 10.1997C9.60029 10.0497 9.525 9.97441 9.375 9.89941L8.92529 9.67529C8.62529 9.52529 8.32559 9.37559 8.10059 9.22559C7.80059 9.07559 7.57529 8.92471 7.42529 8.69971C7.20029 8.54971 7.05059 8.32441 6.97559 8.02441C6.90059 7.79941 6.82471 7.5 6.82471 7.125C6.82471 6.825 6.82441 6.52529 6.89941 6.30029C7.04941 6.07529 7.12559 5.85 7.35059 5.625C7.50059 5.4 7.65029 5.25029 7.80029 5.17529C7.95029 5.10029 8.02529 5.02441 8.17529 5.02441V3.75Z\"\n className=\"oui-fill-current group-data-[actived=true]:oui-fill-[url(#side-menu-gradient)]\"\n />\n </svg>\n ),\n },\n {\n name: t(\"portfolio.feeTier\"),\n href: PortfolioLeftSidebarPath.FeeTier,\n icon: (\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 18 18\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M5.99829 1.51062C4.34154 1.51062 2.99829 2.85387 2.99829 4.51062V13.5106C2.99829 15.1674 4.34154 16.5106 5.99829 16.5106H11.9983C13.655 16.5106 14.9983 15.1674 14.9983 13.5106V4.51062C14.9983 2.85387 13.655 1.51062 11.9983 1.51062H5.99829ZM5.99829 3.76062H11.9983C12.4123 3.76062 12.7483 4.09662 12.7483 4.51062V6.01062C12.7483 6.42462 12.4123 6.76062 11.9983 6.76062H5.99829C5.58429 6.76062 5.24829 6.42462 5.24829 6.01062V4.51062C5.24829 4.09662 5.58429 3.76062 5.99829 3.76062ZM5.99829 8.26062C6.41229 8.26062 6.74829 8.59662 6.74829 9.01062C6.74829 9.42462 6.41229 9.76062 5.99829 9.76062C5.58429 9.76062 5.24829 9.42462 5.24829 9.01062C5.24829 8.59662 5.58429 8.26062 5.99829 8.26062ZM8.99829 8.26062C9.41229 8.26062 9.74829 8.59662 9.74829 9.01062C9.74829 9.42462 9.41229 9.76062 8.99829 9.76062C8.58429 9.76062 8.24829 9.42462 8.24829 9.01062C8.24829 8.59662 8.58429 8.26062 8.99829 8.26062ZM11.9983 8.26062C12.4123 8.26062 12.7483 8.59662 12.7483 9.01062C12.7483 9.42462 12.4123 9.76062 11.9983 9.76062C11.5843 9.76062 11.2483 9.42462 11.2483 9.01062C11.2483 8.59662 11.5843 8.26062 11.9983 8.26062ZM5.99829 10.5106C6.41229 10.5106 6.74829 10.8466 6.74829 11.2606C6.74829 11.6746 6.41229 12.0106 5.99829 12.0106C5.58429 12.0106 5.24829 11.6746 5.24829 11.2606C5.24829 10.8466 5.58429 10.5106 5.99829 10.5106ZM8.99829 10.5106C9.41229 10.5106 9.74829 10.8466 9.74829 11.2606C9.74829 11.6746 9.41229 12.0106 8.99829 12.0106C8.58429 12.0106 8.24829 11.6746 8.24829 11.2606C8.24829 10.8466 8.58429 10.5106 8.99829 10.5106ZM11.9983 10.5106C12.4123 10.5106 12.7483 10.8466 12.7483 11.2606V13.5106C12.7483 13.9246 12.4123 14.2606 11.9983 14.2606C11.5843 14.2606 11.2483 13.9246 11.2483 13.5106V11.2606C11.2483 10.8466 11.5843 10.5106 11.9983 10.5106ZM5.99829 12.7606C6.41229 12.7606 6.74829 13.0966 6.74829 13.5106C6.74829 13.9246 6.41229 14.2606 5.99829 14.2606C5.58429 14.2606 5.24829 13.9246 5.24829 13.5106C5.24829 13.0966 5.58429 12.7606 5.99829 12.7606ZM8.99829 12.7606C9.41229 12.7606 9.74829 13.0966 9.74829 13.5106C9.74829 13.9246 9.41229 14.2606 8.99829 14.2606C8.58429 14.2606 8.24829 13.9246 8.24829 13.5106C8.24829 13.0966 8.58429 12.7606 8.99829 12.7606Z\"\n className=\"oui-fill-current group-data-[actived=true]:oui-fill-[url(#side-menu-gradient)]\"\n />\n </svg>\n ),\n },\n {\n name: t(\"portfolio.apiKeys\"),\n href: PortfolioLeftSidebarPath.ApiKey,\n icon: (\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 18 18\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M9.02124 1.49915C7.77849 1.49915 6.77124 2.5064 6.77124 3.74915C6.77124 4.70015 7.40049 5.55517 8.26974 5.86942L8.27124 8.24915H5.27124C4.85724 8.24915 4.52124 8.58515 4.52124 8.99915L4.52048 12.1304C3.65723 12.4274 3.02124 13.2981 3.02124 14.2491C3.02124 15.4919 4.02849 16.4991 5.27124 16.4991C6.51399 16.4991 7.52124 15.4919 7.52124 14.2491C7.52124 13.2981 6.92499 12.4596 6.02949 12.1206L6.02124 9.74915H9.02124H12.0212L12.0265 12.1319C11.1257 12.4446 10.5212 13.2981 10.5212 14.2491C10.5212 15.4919 11.5285 16.4991 12.7712 16.4991C14.014 16.4991 15.0212 15.4919 15.0212 14.2491C15.0212 13.2981 14.407 12.4611 13.5272 12.1281L13.5212 8.99915C13.5212 8.58515 13.1852 8.24915 12.7712 8.24915H9.77124L9.76899 5.86639C10.642 5.55814 11.2712 4.70015 11.2712 3.74915C11.2712 2.5064 10.264 1.49915 9.02124 1.49915Z\"\n className=\"oui-fill-current group-data-[actived=true]:oui-fill-[url(#side-menu-gradient)]\"\n />\n </svg>\n ),\n },\n {\n name: t(\"portfolio.symbolPerformance\"),\n href: PortfolioLeftSidebarPath.SymbolPerformance,\n icon: (\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 18 18\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M13.5 3.75C12.8096 3.75 12.375 4.18467 12.375 4.875V12.375C12.375 13.0654 12.8096 13.5 13.5 13.5H14.625C15.3154 13.5 15.75 13.0654 15.75 12.375V4.875C15.75 4.18467 15.3154 3.75 14.625 3.75H13.5ZM13.5 5.25H14.625V12.375H13.5V5.25ZM8.25 6.75C7.55964 6.75 7.125 7.18467 7.125 7.875V12.375C7.125 13.0654 7.55964 13.5 8.25 13.5H9.375C10.0654 13.5 10.5 13.0654 10.5 12.375V7.875C10.5 7.18467 10.0654 6.75 9.375 6.75H8.25ZM8.25 8.25H9.375V12.375H8.25V8.25ZM3 9.75C2.30964 9.75 1.875 10.1847 1.875 10.875V12.375C1.875 13.0654 2.30964 13.5 3 13.5H4.125C4.81536 13.5 5.25 13.0654 5.25 12.375V10.875C5.25 10.1847 4.81536 9.75 4.125 9.75H3ZM3 11.25H4.125V12.375H3V11.25Z\"\n className=\"oui-fill-current group-data-[actived=true]:oui-fill-[url(#side-menu-gradient)]\"\n />\n </svg>\n ),\n },\n {\n name: t(\"portfolio.setting\"),\n href: PortfolioLeftSidebarPath.Setting,\n icon: (\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 18 18\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M6.72601 1.84159C5.66251 2.17834 4.74527 2.7296 3.93677 3.48185C3.68702 3.7151 3.61052 4.09534 3.77252 4.39609C4.37327 5.50684 3.74476 6.69484 2.39026 6.76309C2.05801 6.78034 1.76477 7.02559 1.68677 7.34884C1.55252 7.90759 1.49927 8.37559 1.49927 8.98984C1.49927 9.50509 1.55476 10.0878 1.66351 10.6068C1.73101 10.9308 2.01302 11.1641 2.34302 11.1933C3.70652 11.3111 4.38152 12.3506 3.77252 13.6773C3.63752 13.9721 3.69902 14.3246 3.93677 14.5443C4.73327 15.2816 5.64826 15.8006 6.72601 16.1381C7.03351 16.2348 7.38076 16.1186 7.56976 15.8568C8.40376 14.7033 9.61352 14.6988 10.4055 15.8568C10.5923 16.1298 10.9343 16.2611 11.2493 16.1613C12.2895 15.8343 13.2585 15.2771 14.0618 14.5443C14.3093 14.3193 14.3745 13.9541 14.226 13.6541C13.602 12.3948 14.3198 11.2383 15.6083 11.2166C15.9503 11.2106 16.2548 10.9856 16.335 10.6541C16.4648 10.1163 16.4993 9.64759 16.4993 8.98984C16.4993 8.42434 16.4325 7.86709 16.3118 7.32559C16.2353 6.98359 15.936 6.74059 15.585 6.73984C14.3168 6.73759 13.6058 5.49109 14.226 4.39609C14.3985 4.09084 14.3445 3.71735 14.085 3.48185C13.2675 2.73935 12.2708 2.15959 11.226 1.84159C10.905 1.74409 10.5638 1.86409 10.3823 2.14609C9.65776 3.27109 8.30477 3.29135 7.59302 2.16935C7.41077 1.8821 7.05001 1.73809 6.72601 1.84159ZM8.99927 5.98984C10.656 5.98984 11.9993 7.33309 11.9993 8.98984C11.9993 10.6466 10.656 11.9898 8.99927 11.9898C7.34252 11.9898 5.99927 10.6466 5.99927 8.98984C5.99927 7.33309 7.34252 5.98984 8.99927 5.98984Z\"\n className=\"oui-fill-current group-data-[actived=true]:oui-fill-[url(#side-menu-gradient)]\"\n />\n </svg>\n ),\n },\n {\n name: t(\"trading.history\"),\n href: PortfolioLeftSidebarPath.History,\n hide: true,\n },\n ];\n }, [t]);\n\n const { isMobile: hideSideBar } = useScreen();\n\n return {\n items,\n current,\n hideSideBar,\n onItemSelect: (item: SideMenuItem) => {\n if (typeof item.href === \"undefined\") {\n console.warn(\"Item href is not defined\");\n return;\n }\n setCurrent(item.href!);\n routerAdapter?.onRouteChange({\n href: item.href,\n name: item.name,\n });\n },\n };\n};\n\nexport const useCustomSidebarHook = () => {\n const { expanded, setExpand } = useScaffoldContext();\n\n return {\n open: expanded,\n onOpenChange: (open: boolean) => {\n setExpand(open);\n },\n };\n};\n\nexport type usePortfolioLayoutScriptType = ReturnType<\n typeof usePortfolioLayoutScript\n>;\n","import { FC, PropsWithChildren } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { RouterAdapter } from \"@kodiak-finance/orderly-types\";\nimport { cn } from \"@kodiak-finance/orderly-ui\";\nimport {\n ScaffoldProps,\n Scaffold,\n SideBar,\n SideBarProps,\n useScaffoldContext,\n} from \"@kodiak-finance/orderly-ui-scaffold\";\n\nexport type PortfolioLayoutProps = ScaffoldProps & {\n hideSideBar?: boolean;\n items?: SideBarProps[\"items\"];\n};\n\nexport const PortfolioLayout: FC<PropsWithChildren<PortfolioLayoutProps>> = (\n props,\n) => {\n const { children, leftSideProps, classNames, ...rest } = props;\n\n return (\n <Scaffold\n leftSidebar={\n props.hideSideBar ? null : (\n <LeftSidebar\n current={props.routerAdapter?.currentPath}\n routerAdapter={props.routerAdapter}\n items={props.items}\n {...leftSideProps}\n />\n )\n }\n routerAdapter={props.routerAdapter}\n classNames={{\n ...classNames,\n content: cn(\"oui-my-6 oui-px-3\", classNames?.content),\n topNavbar: cn(\"oui-bg-base-9\", classNames?.topNavbar),\n leftSidebar: cn(\n \"oui-rounded-xl oui-bg-base-9\",\n \"oui-m-3 oui-p-4\",\n \"oui-border oui-border-line\",\n classNames?.leftSidebar,\n ),\n }}\n {...rest}\n >\n {children}\n </Scaffold>\n );\n};\n\ntype LeftSidebarProps = SideBarProps & {\n routerAdapter?: RouterAdapter;\n};\n\nconst LeftSidebar: FC<LeftSidebarProps> = (props) => {\n const { expanded, setExpand } = useScaffoldContext();\n const { t } = useTranslation();\n return (\n <SideBar\n title={t(\"common.portfolio\")}\n {...props}\n open={expanded}\n onOpenChange={(open) => setExpand(open)}\n onItemSelect={(e) => {\n props.onItemSelect?.(e);\n props.routerAdapter?.onRouteChange?.({\n href: e.href || \"\",\n name: e.name,\n });\n }}\n />\n );\n};\n","import { FC, PropsWithChildren } from \"react\";\nimport { Flex, Box } from \"@kodiak-finance/orderly-ui\";\nimport {\n MainNavMobile,\n BottomNav,\n type ScaffoldProps,\n} from \"@kodiak-finance/orderly-ui-scaffold\";\nimport { LayoutProvider } from \"./context\";\nimport { usePortfolioLayoutScriptType } from \"./layout.script\";\n\nexport const PortfolioLayoutMobile: FC<\n PropsWithChildren<\n ScaffoldProps & usePortfolioLayoutScriptType & { current?: string }\n >\n> = (props) => {\n return (\n <LayoutProvider {...props}>\n <Flex\n direction={\"column\"}\n width={\"100%\"}\n height={\"100%\"}\n className=\"oui-h-full-screen oui-bg-base-10\"\n >\n <header className=\"oui-scaffold-topNavbar oui-sticky oui-top-0 oui-z-10 oui-w-full oui-bg-base-10\">\n <MainNavMobile\n {...props.mainNavProps}\n current={props?.current}\n subItems={props?.items}\n leftNav={{\n ...props.mainNavProps?.leftNav,\n menus: [\n ...(props.mainNavProps?.leftNav?.menus || []),\n ...(props?.items || []),\n ],\n }}\n routerAdapter={props.routerAdapter}\n />\n </header>\n <Box className=\"oui-scaffold-container oui-min-h-[calc(100vh-44px-64px-env(safe-area-inset-bottom))] oui-w-full\">\n {props.children}\n </Box>\n <footer className=\"oui-scaffold-bottomNav oui-fixed oui-bottom-0 oui-z-10 oui-w-full oui-bg-base-9 oui-pb-[calc(env(safe-area-inset-bottom))]\">\n <BottomNav\n mainMenus={props.bottomNavProps?.mainMenus}\n current={props?.current}\n onRouteChange={props.routerAdapter?.onRouteChange}\n />\n </footer>\n </Flex>\n </LayoutProvider>\n );\n};\n","import { FC, PropsWithChildren } from \"react\";\nimport { useScreen } from \"@kodiak-finance/orderly-ui\";\nimport { usePortfolioLayoutScript } from \"./layout.script\";\nimport { PortfolioLayout, PortfolioLayoutProps } from \"./layout.ui\";\nimport { PortfolioLayoutMobile } from \"./layout.ui.mobile\";\n\nexport type PortfolioLayoutWidgetProps = PortfolioLayoutProps;\n\nexport const PortfolioLayoutWidget: FC<\n PropsWithChildren<PortfolioLayoutWidgetProps>\n> = (props) => {\n const state = usePortfolioLayoutScript({\n current: props.leftSideProps?.current,\n });\n const { isMobile } = useScreen();\n\n return (\n <>\n {isMobile ? (\n // @ts-ignore\n <PortfolioLayoutMobile {...state} {...props} />\n ) : (\n <PortfolioLayout {...state} {...props} />\n )}\n </>\n );\n};\n","export { AssetWidget, AssetsUI } from \"./assets\";\nexport { HistoryDataGroupWidget } from \"./historyDataGroup\";\n\nexport * from \"./assetChart\";\nexport * from \"./assetHistory\";\n\nexport {\n PerformanceUI,\n PerformanceWidget,\n usePerformanceScript,\n} from \"./performance\";\n\nexport * from \"./performanceMobileDialog\";\n\nexport {\n FundingHistoryWidget,\n useFundingHistoryColumns,\n useFundingHistoryHook,\n} from \"./funding\";\n\nexport {\n DistributionHistoryWidget,\n DistributionHistoryMobile,\n DistributionHistoryDesktop,\n} from \"./distribution\";\n\nexport { OverviewPage } from \"./main\";\n\nexport { OverviewProvider } from \"./provider/overviewProvider\";\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React from \"react\";\nimport {\n AssetLineChart,\n PnlAreaChart,\n PnLBarChart,\n VolBarChart,\n PnlLineChartProps,\n} from \"@kodiak-finance/orderly-chart\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n Tabs,\n TabPanel,\n Flex,\n Text,\n DataFilter,\n Box,\n cn,\n} from \"@kodiak-finance/orderly-ui\";\nimport type { UsePerformanceScriptReturn } from \"../performance/performance.script\";\nimport {\n PeriodType,\n useAssetsHistoryDataReturn,\n} from \"../shared/useAssetHistory\";\n\nconst responsiveProps: PnlLineChartProps[\"responsiveContainerProps\"] = {\n width: \"100%\",\n minHeight: 144,\n aspect: 2.5,\n};\n\nexport const PerformanceMobileUI: React.FC<\n Pick<\n useAssetsHistoryDataReturn & UsePerformanceScriptReturn,\n | \"data\"\n | \"curPeriod\"\n | \"aggregateValue\"\n | \"onPeriodChange\"\n | \"invisible\"\n | \"visible\"\n | \"createFakeData\"\n | \"period\"\n | \"filterItems\"\n | \"onFilter\"\n >\n> = (props) => {\n const { t } = useTranslation();\n const {\n data,\n aggregateValue,\n visible,\n invisible,\n curPeriod,\n period,\n onPeriodChange,\n createFakeData,\n filterItems,\n onFilter,\n } = props;\n\n const mergedData = data.length\n ? data\n : (createFakeData?.(\n { account_value: 0, pnl: 0 },\n { account_value: 500, pnl: 500 },\n ) as any[]);\n\n const volumeData = React.useMemo(\n () =>\n (mergedData ?? []).map((d) => ({\n ...d,\n volume: d.perp_volume ?? 0,\n })),\n [mergedData],\n );\n\n return (\n <div>\n {filterItems && filterItems.length > 0 && (\n <Box mb={4}>\n <DataFilter\n items={filterItems}\n onFilter={onFilter || (() => {})}\n className=\"oui-border-none oui-py-0\"\n />\n </Box>\n )}\n <Tabs\n value={period || \"\"}\n defaultValue={PeriodType.MONTH}\n classNames={{ tabsList: \"oui-justify-between\", trigger: \"oui-w-1/4\" }}\n onValueChange={(value) => onPeriodChange(value as PeriodType)}\n >\n <TabPanel\n title={t(\"common.select.1d\")}\n value={PeriodType.DAY}\n className=\"oui-min-h-40\"\n >\n <AssetLineChart\n data={mergedData}\n invisible={invisible || (data?.length ?? 0) <= 2}\n responsiveContainerProps={responsiveProps}\n />\n </TabPanel>\n <TabPanel\n title={t(\"common.select.7d\")}\n value={PeriodType.WEEK}\n className=\"oui-min-h-40\"\n >\n <AssetLineChart\n data={mergedData}\n invisible={invisible || (data?.length ?? 0) <= 2}\n responsiveContainerProps={responsiveProps}\n />\n </TabPanel>\n <TabPanel\n title={t(\"common.select.30d\")}\n value={PeriodType.MONTH}\n className=\"oui-min-h-40\"\n >\n <AssetLineChart\n data={mergedData}\n invisible={invisible || (data?.length ?? 0) <= 2}\n responsiveContainerProps={responsiveProps}\n />\n </TabPanel>\n <TabPanel\n title={t(\"common.select.90d\")}\n value={PeriodType.QUARTER}\n className=\"oui-min-h-40\"\n >\n <AssetLineChart\n data={mergedData}\n invisible={invisible || (mergedData?.length ?? 0) <= 2}\n responsiveContainerProps={responsiveProps}\n />\n </TabPanel>\n </Tabs>\n <Flex justify=\"between\" itemAlign=\"center\" gap={2} my={4}>\n <Flex\n gap={1}\n direction=\"column\"\n itemAlign=\"start\"\n className=\"oui-w-1/3 oui-rounded-lg oui-bg-base-7 oui-px-2 oui-py-1.5\"\n >\n <Text className=\"oui-truncate\" intensity={36} size=\"2xs\">\n {t(\"portfolio.overview.performance.roi\", { period: curPeriod })}\n </Text>\n <Text.numeral size=\"sm\" visible={visible} rule=\"percentages\" coloring>\n {invisible ? \"--\" : aggregateValue.roi}\n </Text.numeral>\n </Flex>\n <Flex\n gap={1}\n direction=\"column\"\n itemAlign=\"start\"\n className=\"oui-w-1/3 oui-rounded-lg oui-bg-base-7 oui-px-2 oui-py-1.5\"\n >\n <Text className=\"oui-truncate\" intensity={36} size=\"2xs\">\n {t(\"portfolio.overview.performance.pnl\", { period: curPeriod })}\n </Text>\n <Text.numeral size=\"sm\" visible={visible} coloring showIdentifier>\n {invisible ? \"--\" : aggregateValue.pnl}\n </Text.numeral>\n </Flex>\n <Flex\n gap={1}\n direction=\"column\"\n itemAlign=\"start\"\n className=\"oui-w-1/3 oui-rounded-lg oui-bg-base-7 oui-px-2 oui-py-1.5\"\n >\n <Text className=\"oui-truncate\" intensity={36} size=\"2xs\">\n {t(\"portfolio.overview.performance.volume\", { period: curPeriod })}\n </Text>\n <Text.numeral size=\"sm\" visible={visible} coloring={false}>\n {invisible ? \"--\" : aggregateValue.vol}\n </Text.numeral>\n </Flex>\n </Flex>\n <Tabs defaultValue={\"dailyPnl\"}>\n <TabPanel\n value={\"dailyPnl\"}\n title={t(\"portfolio.overview.performance.dailyPnl\")}\n className=\"oui-min-h-40\"\n >\n <PnLBarChart\n data={mergedData}\n invisible={invisible || (mergedData?.length ?? 0) <= 2}\n responsiveContainerProps={responsiveProps}\n />\n </TabPanel>\n <TabPanel\n value={\"cumulativePnl\"}\n title={t(\"portfolio.overview.performance.cumulativePnl\")}\n className=\"oui-min-h-40\"\n >\n <PnlAreaChart\n data={mergedData}\n invisible={invisible || (mergedData?.length ?? 0) <= 2}\n responsiveContainerProps={responsiveProps}\n />\n </TabPanel>\n <TabPanel\n value={\"volume\"}\n title={t(\"portfolio.overview.performance.volume\", { period: \"\" })}\n className=\"oui-min-h-40\"\n >\n <div\n className={cn(\n \"oui-h-[144px] oui-w-full\",\n (invisible || (mergedData?.length ?? 0) <= 2) &&\n \"chart-invisible\",\n )}\n >\n <VolBarChart\n data={(mergedData ?? []).map((item: any) => ({\n date: item.date,\n volume: item.perp_volume ?? 0,\n opacity: (item.perp_volume ?? 0) > 0 ? 1 : 0,\n }))}\n className=\"oui-size-full\"\n />\n </div>\n </TabPanel>\n </Tabs>\n </div>\n );\n};\n","import { useMemo, useRef, useEffect } from \"react\";\nimport {\n useAllBrokers,\n useConfig,\n useCurEpochEstimate,\n useEpochInfo,\n useGetClaimed,\n useAccount,\n RefferalAPI,\n usePrivateQuery,\n noCacheConfig,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { DistributionId, TWType } from \"@kodiak-finance/orderly-hooks\";\nimport { useAppContext } from \"@kodiak-finance/orderly-react-app\";\nimport { AccountStatusEnum } from \"@kodiak-finance/orderly-types\";\nimport { useOverviewContext } from \"../provider/overviewContext\";\n\nexport const useRewardsData = ({ type = TWType.normal }: { type?: TWType }) => {\n const totalOrderClaimedReward = useGetClaimed(\n type === TWType.mm ? DistributionId.mmOrder : DistributionId.order,\n );\n const [curEpochEstimate] = useCurEpochEstimate(type);\n const [brokers] = useAllBrokers();\n const { state } = useAccount();\n const { data, mutate } = usePrivateQuery<RefferalAPI.ReferralInfo>(\n \"/v1/referral/info\",\n { revalidateOnFocus: true, errorRetryCount: 3, ...noCacheConfig },\n );\n\n const epochList = useEpochInfo(type as TWType);\n const brokerId = useConfig(\"brokerId\");\n\n const brokerName = useMemo(() => {\n return brokers?.[brokerId];\n }, [brokerId, brokers]);\n\n const lastStete = useRef<AccountStatusEnum>(AccountStatusEnum.NotConnected);\n\n const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n useEffect(() => {\n if (lastStete.current !== state.status) {\n lastStete.current = state.status;\n timerRef.current = setTimeout(() => {\n mutate();\n }, 1000);\n }\n return () => {\n if (timerRef.current) {\n clearTimeout(timerRef.current);\n }\n };\n }, [state.status]);\n\n return {\n totalOrderClaimedReward,\n curEpochEstimate,\n epochList,\n brokerName,\n referralInfo: data,\n };\n};\n\nexport const useRewardsDataScript = () => {\n const {\n totalOrderClaimedReward,\n curEpochEstimate,\n epochList,\n brokerName,\n referralInfo,\n } = useOverviewContext();\n const { state } = useAccount();\n const { wrongNetwork } = useAppContext();\n const isSignIn =\n state.status === AccountStatusEnum.EnableTrading ||\n state.status === AccountStatusEnum.EnableTradingWithoutConnected;\n\n return {\n totalOrderClaimedReward,\n curEpochEstimate,\n epochList,\n brokerName,\n isSignIn,\n referralInfo,\n wrongNetwork,\n };\n};\n\nexport type UseRewardsDataReturn = ReturnType<typeof useRewardsData>;\n","import { FC, PropsWithChildren, useMemo } from \"react\";\nimport { TWType } from \"@kodiak-finance/orderly-hooks\";\nimport { useRewardsData } from \"../mobile/useRewardsData.script\";\nimport { useAssetsHistoryData } from \"../shared/useAssetHistory\";\nimport { OverviewContext, OverviewContextState } from \"./overviewContext\";\n\nexport const localKey = \"portfolio_performance_period\";\n\nexport const OverviewProvider: FC<PropsWithChildren<{ type?: TWType }>> = (\n props,\n) => {\n const { type, children } = props;\n const state = useAssetsHistoryData(localKey, { isRealtime: true });\n const rewardsData = useRewardsData({ type: type });\n\n const memoizedValue = useMemo<OverviewContextState>(() => {\n return {\n ...state,\n type: type,\n ...rewardsData,\n };\n }, [state, type, rewardsData]);\n\n return (\n <OverviewContext.Provider value={memoizedValue}>\n {children}\n </OverviewContext.Provider>\n );\n};\n","import React from \"react\";\nimport { pick } from \"ramda\";\nimport { i18n } from \"@kodiak-finance/orderly-i18n\";\nimport {\n registerSimpleDialog,\n registerSimpleSheet,\n} from \"@kodiak-finance/orderly-ui\";\nimport { usePerformanceScript } from \"..\";\nimport { localKey } from \"../provider/overviewProvider\";\nimport { useAssetsHistoryData } from \"../shared/useAssetHistory\";\nimport { PerformanceMobileUI } from \"./performance.ui\";\n\nexport const PerformanceMobileWidget: React.FC = () => {\n const state = useAssetsHistoryData(localKey, { isRealtime: true });\n const { visible, invisible } = usePerformanceScript();\n return (\n <PerformanceMobileUI\n {...pick(\n [\n \"data\",\n \"curPeriod\",\n \"aggregateValue\",\n \"onPeriodChange\",\n \"createFakeData\",\n \"period\",\n \"filterItems\",\n \"onFilter\",\n ],\n state,\n )}\n visible={visible}\n invisible={invisible}\n />\n );\n};\n\nexport const PerformanceMobileSheetId = \"PerformanceMobileSheetId\";\n\nexport const PerformanceMobileDialogId = \"PerformanceMobileDialogId\";\n\nregisterSimpleSheet(PerformanceMobileSheetId, PerformanceMobileWidget, {\n title: () => i18n.t(\"portfolio.overview.performance\"),\n});\n\nregisterSimpleDialog(PerformanceMobileDialogId, PerformanceMobileWidget, {\n title: () => i18n.t(\"portfolio.overview.performance\"),\n classNames: {\n content: \"oui-w-[420px]\",\n },\n});\n","import { FC } from \"react\";\nimport { ENVType, useGetEnv } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { useAppContext } from \"@kodiak-finance/orderly-react-app\";\nimport { Flex } from \"@kodiak-finance/orderly-ui\";\nimport { DepositStatusWidget } from \"@kodiak-finance/orderly-ui-transfer\";\nimport { useLayoutContext } from \"../../../layout/context\";\nimport { useAssetScript } from \"../assets\";\nimport { PortfolioChartsMobileWidget } from \"../portfolioChartsMobile\";\nimport { AccountStatusMobile } from \"./accountStatus.ui.mobile\";\nimport { AffiliateCardMobile } from \"./affiliateCard.ui.mobile\";\nimport { PortfolioHandleMobile } from \"./portfolioHandle.ui.mobile\";\nimport { PortfolioValueMobile } from \"./portfolioVaule.ui.mobile\";\nimport { SettingRouterMobile } from \"./settingRouter.ui.mobile\";\nimport { TraderCardMobile } from \"./traderCard.ui.mobile\";\n// import { TradingRewardsCardMobile } from \"./tradingRewardsCard.ui.mobile\";\nimport { useRewardsDataScript } from \"./useRewardsData.script\";\n\nexport type MobileOverviewProps = {\n /** show affiliate card, mobile only */\n hideAffiliateCard?: boolean;\n /** show trader card, mobile only */\n hideTraderCard?: boolean;\n};\n\nexport const MobileOverview: FC<MobileOverviewProps> = (props) => {\n const { hideAffiliateCard, hideTraderCard } = props;\n const {\n canTrade,\n onWithdraw,\n onDeposit,\n portfolioValue,\n unrealPnL,\n unrealROI,\n visible,\n namespace,\n toggleVisible,\n onTransfer,\n isMainAccount,\n hasSubAccount,\n } = useAssetScript();\n const { t } = useTranslation();\n const rewardsData = useRewardsDataScript();\n const layoutContext = useLayoutContext();\n const { onRouteChange } = useAppContext();\n const env = useGetEnv();\n\n const goToClaim = () => {\n const url = `https://${\n env !== ENVType.prod ? `${env}-` : \"\"\n }app.orderly.network/tradingRewards`;\n window.open(url, \"_blank\");\n };\n\n const navigateToPortfolioHistory =\n typeof onRouteChange === \"function\"\n ? () => {\n onRouteChange({\n href: \"/portfolio/history\",\n name: t(\"trading.history\"),\n });\n }\n : undefined;\n\n // console.log('rewards data', rewardsData, layoutContext, props);\n\n return (\n <>\n <div className=\"oui-my-1 oui-px-3\">\n <AccountStatusMobile />\n </div>\n <Flex\n direction={\"column\"}\n width={\"100%\"}\n height={\"100%\"}\n className=\"oui-gap-5 oui-px-3\"\n >\n <Flex direction=\"column\" width=\"100%\" gapY={2}>\n <PortfolioValueMobile\n toggleVisible={toggleVisible}\n portfolioValue={portfolioValue}\n unrealPnL={unrealPnL}\n unrealROI={unrealROI}\n visible={visible}\n canTrade={canTrade}\n namespace={namespace}\n routerAdapter={layoutContext?.routerAdapter}\n />\n <DepositStatusWidget onClick={navigateToPortfolioHistory} />\n <PortfolioChartsMobileWidget />\n </Flex>\n <PortfolioHandleMobile\n disabled={!canTrade}\n onWithdraw={onWithdraw}\n onDeposit={onDeposit}\n onTransfer={onTransfer}\n isMainAccount={isMainAccount}\n routerAdapter={layoutContext?.routerAdapter}\n hasSubAccount={hasSubAccount}\n />\n {(!hideAffiliateCard || !hideTraderCard) && (\n <Flex\n direction={\"row\"}\n width={\"100%\"}\n height={\"100%\"}\n className=\"oui-gap-3\"\n >\n <Flex direction=\"row\" className=\"oui-flex-1 oui-gap-3\">\n {!hideAffiliateCard && (\n <AffiliateCardMobile\n referralInfo={rewardsData.referralInfo}\n routerAdapter={layoutContext?.routerAdapter}\n />\n )}\n {!hideTraderCard && (\n <TraderCardMobile\n referralInfo={rewardsData.referralInfo}\n routerAdapter={layoutContext?.routerAdapter}\n />\n )}\n </Flex>\n {/* Disable trading rewards card for now. Set to row */}\n {/* <Flex direction=\"column\" className=\"oui-flex-1\">\n <TradingRewardsCardMobile {...rewardsData} goToClaim={goToClaim} />\n </Flex> */}\n </Flex>\n )}\n <SettingRouterMobile routerAdapter={layoutContext?.routerAdapter} />\n </Flex>\n </>\n );\n};\n","import React from \"react\";\nimport { EMPTY_LIST } from \"@kodiak-finance/orderly-types\";\nimport { useAssetsChartScript } from \"../assetChart\";\nimport { usePortfolioChartsState } from \"./portfolioChartsMobile.script\";\nimport { PortfolioChartsMobileUI } from \"./portfolioChartsMobile.ui\";\n\nexport const PortfolioChartsMobileWidget: React.FC = () => {\n const { data, invisible } = useAssetsChartScript();\n const state = usePortfolioChartsState();\n return (\n <PortfolioChartsMobileUI\n data={data || EMPTY_LIST}\n invisible={invisible}\n {...state}\n />\n );\n};\n","import { useCallback } from \"react\";\nimport {\n useLocalStorage,\n usePositionStream,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { modal } from \"@kodiak-finance/orderly-ui\";\nimport { ORDERLY_ASSETS_VISIBLE_KEY } from \"../../assets/type\";\nimport { PerformanceMobileSheetId } from \"../performanceMobileDialog\";\nimport { useOverviewContext } from \"../provider/overviewContext\";\n\nexport const usePortfolioChartsState = () => {\n const [data] = usePositionStream();\n const overview = useOverviewContext();\n const [visible, setVisible] = useLocalStorage<boolean>(\n ORDERLY_ASSETS_VISIBLE_KEY,\n true,\n );\n const onPerformanceClick = useCallback(() => {\n return modal.show(PerformanceMobileSheetId);\n }, []);\n return {\n todaysPnl: overview?.todayPerformance?.pnl ?? null,\n todaysRoi: overview?.todayPerformance?.roi ?? null,\n todaysVol: overview?.todayPerformance?.vol ?? null,\n unrealPnL: data?.aggregated.total_unreal_pnl,\n unrealROI: data?.totalUnrealizedROI,\n visible: visible as boolean,\n setVisible: setVisible,\n onPerformanceClick: onPerformanceClick,\n } as const;\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useId } from \"react\";\nimport {\n Area,\n AreaChart,\n ResponsiveContainer,\n} from \"@kodiak-finance/orderly-chart\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { EMPTY_LIST } from \"@kodiak-finance/orderly-types\";\nimport { ChevronRightIcon, cn, Flex, Text } from \"@kodiak-finance/orderly-ui\";\nimport { usePortfolioChartsState } from \".\";\n\nexport const PortfolioChartsMobileUI: React.FC<\n ReturnType<typeof usePortfolioChartsState> & {\n data: any[];\n invisible?: boolean;\n }\n> = (props) => {\n const { data, invisible, unrealPnL, unrealROI, visible, onPerformanceClick } =\n props;\n const { t } = useTranslation();\n const colorId = useId();\n return (\n <Flex\n p={4}\n width={\"100%\"}\n itemAlign=\"center\"\n justify=\"between\"\n className={cn(\n \"oui-relative oui-overflow-hidden oui-rounded-2xl oui-border oui-border-solid oui-border-line-12 oui-bg-base-9\",\n )}\n >\n <Flex\n width={\"100%\"}\n justify={\"center\"}\n itemAlign={\"start\"}\n direction={\"column\"}\n gap={2}\n >\n <Text size=\"xs\" intensity={54}>\n {t(\"common.unrealizedPnl\")}\n </Text>\n <Flex justify={\"start\"} itemAlign={\"center\"}>\n <Text.pnl coloring size=\"base\" weight=\"semibold\" visible={visible}>\n {unrealPnL}\n </Text.pnl>\n <Text.roi\n coloring\n rule=\"percentages\"\n size=\"sm\"\n weight=\"semibold\"\n prefix={\"(\"}\n suffix={\")\"}\n visible={visible}\n >\n {unrealROI}\n </Text.roi>\n </Flex>\n <Text\n size=\"xs\"\n intensity={54}\n className=\"oui-flex oui-items-center oui-justify-start oui-gap-1\"\n onClick={onPerformanceClick}\n >\n {t(\"portfolio.overview.performance\")}\n <ChevronRightIcon className=\"oui-text-base-contrast-54\" />\n </Text>\n </Flex>\n <Flex\n width={\"100%\"}\n justify={\"center\"}\n itemAlign={\"center\"}\n direction={\"column\"}\n >\n <AreaChart data={data || EMPTY_LIST} width={160} height={52}>\n {!invisible && (\n <>\n <defs>\n <linearGradient id={colorId} x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop\n stopColor=\"rgb(var(--oui-color-success))\"\n offset=\"0%\"\n stopOpacity={0.5}\n />\n <stop\n stopColor=\"rgb(var(--oui-color-success))\"\n offset=\"100%\"\n stopOpacity={0}\n />\n </linearGradient>\n </defs>\n <Area\n type=\"natural\"\n dataKey=\"account_value\"\n stroke={\"rgb(41, 233, 169)\"}\n strokeWidth={1.5}\n dot={false}\n isAnimationActive={false}\n fill={`url(#${colorId})`}\n />\n </>\n )}\n </AreaChart>\n </Flex>\n </Flex>\n );\n};\n","import { FC, SVGProps, useCallback, useMemo } from \"react\";\nimport {\n parseJSON,\n useAccount,\n useChains,\n useLocalStorage,\n useWalletConnector,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { useAppContext } from \"@kodiak-finance/orderly-react-app\";\nimport {\n AccountStatusEnum,\n ChainNamespace,\n} from \"@kodiak-finance/orderly-types\";\nimport {\n cn,\n modal,\n toast,\n formatAddress,\n Flex,\n CopyIcon,\n ChainIcon,\n} from \"@kodiak-finance/orderly-ui\";\n\ninterface StatusInfo {\n title: string;\n description: string;\n titleColor?: any;\n titleClsName?: string;\n}\n\nconst useCurrentStatus = () => {\n const { state, account } = useAccount();\n const { wrongNetwork, disabledConnect, connectWallet } = useAppContext();\n const { t } = useTranslation();\n\n const statusText = {\n wrongNetwork: {\n description: t(\"connector.wrongNetwork.tooltip\"),\n rootClass:\n \"oui-bg-[linear-gradient(15deg,rgb(var(--oui-color-warning-darken))_0%,transparent_30%)]\",\n },\n connectWallet: {\n description: t(\"connector.trade.connectWallet.tooltip\"),\n rootClass:\n \"oui-bg-[linear-gradient(15deg,rgb(var(--oui-gradient-brand-start))_0%,transparent_30%)]\",\n },\n notSignedIn: {\n description: t(\"connector.trade.createAccount.tooltip\"),\n rootClass:\n \"oui-bg-[linear-gradient(15deg,rgb(var(--oui-color-primary-darken))_0%,transparent_30%)]\",\n },\n disabledTrading: {\n description: t(\"connector.trade.enableTrading.tooltip\"),\n rootClass:\n \"oui-bg-[linear-gradient(15deg,rgb(var(--oui-color-primary-darken))_0%,transparent_30%)]\",\n },\n default: {\n description: \"\",\n rootClass: \"\",\n arrowIconClass: \"\",\n textClass: \"\",\n },\n };\n\n return useMemo(() => {\n if (disabledConnect) {\n return statusText.connectWallet;\n }\n\n if (wrongNetwork) {\n return statusText.wrongNetwork;\n }\n\n switch (state.status) {\n case AccountStatusEnum.NotConnected:\n return statusText.connectWallet;\n case AccountStatusEnum.NotSignedIn:\n return statusText.notSignedIn;\n case AccountStatusEnum.DisabledTrading:\n return statusText.disabledTrading;\n default:\n return statusText.default;\n }\n }, [state.status, wrongNetwork]);\n};\n\nexport function EVMChainPopover({ children }: { children: React.ReactNode }) {\n // const [chains] = useState(getChainsByNetwork(\"mainnet\"));\n const [chains] = useChains(\"mainnet\", {\n pick: \"network_infos\",\n });\n const { t } = useTranslation();\n\n const showDialog = () => {\n modal.dialog({\n title: t(\"connector.privy.supportedEvmChain\"),\n size: \"xs\",\n content: (\n <div>\n <div className=\"oui-p-1 oui-grid oui-grid-cols-2 oui-gap-x-2 oui-gap-y-3 oui-text-2xs oui-text-base-contrast-54\">\n {chains.map((item, key) => (\n <div\n key={key}\n className=\"oui-flex oui-items-center oui-justify-start oui-gap-1\"\n >\n <ChainIcon chainId={item.chain_id} size=\"2xs\" />\n <div>{item.name}</div>\n </div>\n ))}\n </div>\n </div>\n ),\n });\n };\n\n return <button onClick={showDialog}>{children}</button>;\n}\n\nexport const MoreIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"currentColor\"\n {...props}\n >\n <path d=\"M8.00521 6.66797C8.74161 6.66797 9.33854 7.26464 9.33854 8.0013C9.33854 8.73797 8.74161 9.33464 8.00521 9.33464C7.26881 9.33464 6.67188 8.73797 6.67188 8.0013C6.67188 7.26464 7.26881 6.66797 8.00521 6.66797Z\" />\n <path d=\"M3.33333 6.66797C4.06973 6.66797 4.66667 7.26464 4.66667 8.0013C4.66667 8.73797 4.06973 9.33464 3.33333 9.33464C2.59693 9.33464 2 8.73797 2 8.0013C2 7.26464 2.59693 6.66797 3.33333 6.66797Z\" />\n <path d=\"M12.6666 6.66797C13.403 6.66797 14 7.26464 14 8.0013C14 8.73797 13.403 9.33464 12.6666 9.33464C11.9302 9.33464 11.3333 8.73797 11.3333 8.0013C11.3333 7.26464 11.9302 6.66797 12.6666 6.66797Z\" />\n </svg>\n);\n\nconst EVMChains = () => {\n return (\n <div className=\"oui-relative oui-flex oui-items-center oui-justify-center\">\n <div className=\"oui-flex oui-h-[18px] oui-items-center oui-justify-center \">\n <img\n src=\"https://oss.orderly.network/static/sdk/portfolio/chains.png\"\n className=\"oui-relative oui-z-0 oui-h-[18px] oui-w-[49px]\"\n />\n </div>\n <div className=\"oui-relative oui-left-[-9px] oui-flex oui-items-center oui-justify-center oui-gap-1\">\n <div className=\"oui-flex oui-size-[18px] oui-items-center oui-justify-center oui-rounded-full oui-bg-base-5\">\n <EVMChainPopover>\n <MoreIcon\n className=\"oui-relative oui-z-10 oui-size-3 oui-text-base-contrast-54 hover:oui-text-base-contrast\"\n style={{ zIndex: 1 }}\n />\n </EVMChainPopover>\n </div>\n <div className=\"oui-text-2xs oui-font-semibold oui-text-base-contrast\">\n Evm\n </div>\n </div>\n </div>\n );\n};\n\nconst ShowAccount: FC = () => {\n const { state, account } = useAccount();\n const { namespace } = useWalletConnector();\n const { t } = useTranslation();\n const onCopyAddress = () => {\n navigator.clipboard.writeText(state.address ?? \"\");\n toast.success(t(\"common.copy.copied\"));\n };\n\n const currentNamespace = useMemo(() => {\n if (namespace) {\n return namespace;\n }\n if (state.status === AccountStatusEnum.EnableTradingWithoutConnected) {\n return getLinkDeviceStorage()?.chainNamespace;\n }\n return null;\n }, [namespace, state.status]);\n\n const leftNode = useMemo(() => {\n if (!state.address) {\n return;\n }\n return (\n <Flex className=\"oui-text-base oui-text-base-contrast\" gapX={2}>\n {formatAddress(state.address ?? \"\")}\n <button\n className=\"oui-cursor-pointer\"\n onClick={() => {\n onCopyAddress();\n }}\n >\n <CopyIcon\n size={18}\n className=\"oui-text-base-contrast-80\"\n opacity={1}\n />\n </button>\n </Flex>\n );\n }, [state.address]);\n const rightNode = useMemo(() => {\n if (currentNamespace === ChainNamespace.evm) {\n return <EVMChains />;\n }\n\n return (\n <Flex gapX={1} itemAlign={\"center\"} className=\"oui-text-2xs\">\n <img\n src=\"https://oss.orderly.network/static/sdk/solana-logo.png\"\n className=\"oui-w-[15px]\"\n />\n Solana\n </Flex>\n );\n }, [currentNamespace]);\n\n const bgClass = useMemo(() => {\n let bg = \"\";\n if (currentNamespace == ChainNamespace.evm) {\n bg =\n \"oui-bg-[linear-gradient(15deg,rgb(var(--oui-color-primary))_-11%,transparent_30%,transparent_77%,rgb(var(--oui-color-danger-darken))_100%)]\";\n } else if (currentNamespace == ChainNamespace.solana) {\n bg =\n \"oui-bg-[linear-gradient(15deg,rgb(var(--oui-color-link))_-11%,transparent_30%,transparent_77%,rgb(var(--oui-color-success))_100%)]\";\n }\n return bg;\n }, [currentNamespace]);\n return (\n <div\n className={cn([\n \"oui-flex oui-h-[44px] oui-w-full oui-items-center oui-justify-between oui-rounded-[10px] oui-px-3 oui-py-[10px]\",\n bgClass,\n ])}\n >\n {leftNode}\n {rightNode}\n </div>\n );\n};\n\nexport const AccountStatusMobile: FC = () => {\n const { state } = useAccount();\n const { wrongNetwork } = useAppContext();\n const { description, rootClass } = useCurrentStatus();\n\n const alreadyShowAccount = useMemo(() => {\n if (state.status === AccountStatusEnum.EnableTradingWithoutConnected) {\n return true;\n }\n if (wrongNetwork) {\n return false;\n }\n return state.status >= AccountStatusEnum.EnableTrading;\n }, [state.status, wrongNetwork]);\n\n if (alreadyShowAccount) {\n return <ShowAccount />;\n }\n\n return (\n <div\n className={cn([\n \"oui-flex oui-h-[44px] oui-w-full oui-items-center oui-justify-center oui-rounded-[10px] oui-px-3 oui-py-[10px]\",\n rootClass,\n // \"oui-bg-linear-65\",\n // \"oui-from-[-20%]\",\n // \"oui-to-[40%]\",\n // \" oui-from-[#FF7B00]\",\n // \" oui-to-[#FFEA00]\",\n ])}\n >\n <div\n className={cn(\n \"oui-flex oui-items-center oui-justify-end oui-rounded-[10px] oui-text-xs oui-font-semibold\",\n \"oui-text-base-contrast-54\",\n )}\n >\n {description}\n </div>\n </div>\n );\n};\ntype LinkDeviceStorage = { chainId: number; chainNamespace: ChainNamespace };\n\nfunction getLinkDeviceStorage() {\n try {\n const linkDeviceStorage = localStorage.getItem(\"orderly_link_device\");\n const json = linkDeviceStorage ? parseJSON(linkDeviceStorage) : null;\n return json as LinkDeviceStorage;\n } catch (err) {\n console.error(\"getLinkDeviceStorage\", err);\n }\n}\n","import { FC } from \"react\";\nimport { RefferalAPI as API } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport type { RouterAdapter } from \"@kodiak-finance/orderly-types\";\nimport {\n Flex,\n Text,\n AffiliateIcon,\n ChevronRightIcon,\n cn,\n} from \"@kodiak-finance/orderly-ui\";\nimport { commifyOptional } from \"@kodiak-finance/orderly-utils\";\n\nconst isNumber = (val: unknown): val is number => {\n return typeof val === \"number\" && !Number.isNaN(val);\n};\n\ntype AffiliateCardMobileProps = {\n referralInfo?: API.ReferralInfo;\n routerAdapter?: RouterAdapter;\n};\n\nexport const AffiliateCardMobile: FC<AffiliateCardMobileProps> = (props) => {\n const { t } = useTranslation();\n const { referralInfo, routerAdapter } = props;\n const rebate = referralInfo?.referrer_info?.[\"30d_referrer_rebate\"];\n return (\n <Flex\n className=\"\n oui-portfolio-affiliate-card\n oui-via-21.6% \n oui-via-83.23% \n oui-relative \n oui-h-[112px] \n oui-w-full \n oui-flex-col \n oui-items-start \n oui-rounded-xl \n oui-border \n oui-border-solid \n oui-border-[rgba(var(--oui-gradient-primary-start)/0.36)] \n oui-bg-gradient-to-r\n oui-from-[rgba(var(--oui-gradient-primary-end)/0.12)]\n oui-to-[rgba(var(--oui-gradient-primary-start)/0.12)]\n oui-p-3\n \"\n >\n <Flex className=\"oui-w-full oui-flex-row oui-justify-between oui-items-center\">\n <Flex className=\"oui-flex-col oui-items-start\">\n <Text className=\"oui-text-base-contrast oui-text-base oui-font-semibold\">\n {t(\"affiliate.asAffiliate.affilates\")}\n </Text>\n <Text className=\"oui-text-2xs oui-font-normal oui-text-base-contrast-54\">\n {t(\"affiliate.commission\")}\n </Text>\n </Flex>\n <AffiliateIcon />\n </Flex>\n <Flex className=\"oui-mt-auto oui-w-full oui-flex-row oui-items-center oui-gap-1\">\n <img\n src=\"https://oss.orderly.network/static/symbol_logo/USDC.png\"\n alt=\"USDC\"\n className=\"oui-size-5\"\n />\n <Text\n className={cn(\n \"oui-text-xs oui-font-semibold\",\n isNumber(rebate) && rebate !== 0\n ? \"oui-text-base-contrast\"\n : \"oui-text-base-contrast-36\",\n )}\n >\n {commifyOptional(rebate, { fix: 2, fallback: \"--\" })}\n </Text>\n <Text className=\"oui-text-xs oui-font-semibold oui-text-base-contrast-36\">\n (30D)\n </Text>\n <ChevronRightIcon\n size={18}\n color=\"white\"\n className=\"oui-ml-auto\"\n onClick={() => {\n routerAdapter?.onRouteChange({\n href: \"/rewards/affiliate?tab=affiliate\",\n name: t(\"tradingRewards.rewards\"),\n });\n }}\n />\n </Flex>\n </Flex>\n );\n};\n","import { FC } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { RouterAdapter } from \"@kodiak-finance/orderly-types\";\nimport {\n Flex,\n Text,\n ArrowDownSquareFillIcon,\n ArrowUpSquareFillIcon,\n CalendarMinusIcon,\n ArrowLeftRightIcon,\n} from \"@kodiak-finance/orderly-ui\";\nimport { PortfolioLeftSidebarPath } from \"../../../layout\";\n\ntype Props = {\n disabled: boolean;\n onWithdraw?: () => void;\n onDeposit?: () => void;\n onTransfer?: () => void;\n isMainAccount?: boolean;\n routerAdapter?: RouterAdapter;\n hasSubAccount?: boolean;\n};\n\nexport const PortfolioHandleMobile: FC<Props> = (props) => {\n const { t } = useTranslation();\n\n const onGotoHistory = () => {\n props.routerAdapter?.onRouteChange({\n href: PortfolioLeftSidebarPath.History,\n name: t(\"trading.history\"),\n });\n };\n\n const onGotoSymbolPerformance = () => {\n props.routerAdapter?.onRouteChange({\n href: PortfolioLeftSidebarPath.SymbolPerformance,\n name: t(\"portfolio.symbolPerformance\"),\n });\n };\n\n return (\n <Flex\n direction={\"row\"}\n width={\"100%\"}\n height={\"71px\"}\n className=\"oui-gap-3 oui-bg-transparent\"\n >\n {props.isMainAccount && (\n <Flex\n direction=\"column\"\n gapY={2}\n itemAlign={\"center\"}\n className=\"oui-flex-1 oui-cursor-pointer\"\n onClick={props?.onDeposit}\n >\n <div className=\"oui-flex oui-size-[48px] oui-items-center oui-justify-center oui-rounded-xl oui-bg-base-9\">\n <ArrowDownSquareFillIcon size={28} color=\"white\" opacity={1} />\n </div>\n <Text className=\"oui-text-base-80 oui-text-2xs\">\n {t(\"common.deposit\")}\n </Text>\n </Flex>\n )}\n {props.hasSubAccount && (\n <Flex\n direction=\"column\"\n gapY={2}\n itemAlign={\"center\"}\n className=\"oui-flex-1 oui-cursor-pointer\"\n onClick={props?.onTransfer}\n >\n <div className=\"oui-flex oui-size-[48px] oui-items-center oui-justify-center oui-rounded-xl oui-bg-base-9\">\n <ArrowLeftRightIcon size={28} color=\"white\" opacity={1} />\n </div>\n <Text className=\"oui-text-base-80 oui-text-2xs\">\n {t(\"common.transfer\")}\n </Text>\n </Flex>\n )}\n {props.isMainAccount && (\n <Flex\n direction=\"column\"\n gapY={2}\n itemAlign={\"center\"}\n className=\"oui-flex-1 oui-cursor-pointer\"\n onClick={props?.onWithdraw}\n >\n <div className=\"oui-flex oui-size-[48px] oui-items-center oui-justify-center oui-rounded-xl oui-bg-base-9\">\n <ArrowUpSquareFillIcon size={28} color=\"white\" opacity={1} />\n </div>\n <Text className=\"oui-text-base-80 oui-text-2xs\">\n {t(\"common.withdraw\")}\n </Text>\n </Flex>\n )}\n <Flex\n direction=\"column\"\n gapY={2}\n itemAlign={\"center\"}\n className=\"oui-flex-1 oui-cursor-pointer\"\n >\n <div\n className=\"oui-flex oui-size-[48px] oui-items-center oui-justify-center oui-rounded-xl oui-bg-base-9\"\n onClick={onGotoHistory}\n >\n <CalendarMinusIcon\n size={28}\n color=\"white\"\n opacity={1}\n viewBox=\"0 0 28 28\"\n className=\"oui-w-[28px] oui-h-[28px]\"\n />\n </div>\n <Text className=\"oui-text-base-80 oui-text-2xs\">\n {t(\"trading.history\")}\n </Text>\n </Flex>\n <Flex\n direction=\"column\"\n gapY={2}\n itemAlign={\"center\"}\n className=\"oui-flex-1 oui-cursor-pointer\"\n onClick={onGotoSymbolPerformance}\n >\n <div className=\"oui-flex oui-size-[48px] oui-items-center oui-justify-center oui-rounded-xl oui-bg-base-9\">\n <svg\n width=\"28\"\n height=\"28\"\n viewBox=\"0 0 18 18\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"oui-text-white\"\n >\n <path\n d=\"M13.5 3.75C12.8096 3.75 12.375 4.18467 12.375 4.875V12.375C12.375 13.0654 12.8096 13.5 13.5 13.5H14.625C15.3154 13.5 15.75 13.0654 15.75 12.375V4.875C15.75 4.18467 15.3154 3.75 14.625 3.75H13.5ZM13.5 5.25H14.625V12.375H13.5V5.25ZM8.25 6.75C7.55964 6.75 7.125 7.18467 7.125 7.875V12.375C7.125 13.0654 7.55964 13.5 8.25 13.5H9.375C10.0654 13.5 10.5 13.0654 10.5 12.375V7.875C10.5 7.18467 10.0654 6.75 9.375 6.75H8.25ZM8.25 8.25H9.375V12.375H8.25V8.25ZM3 9.75C2.30964 9.75 1.875 10.1847 1.875 10.875V12.375C1.875 13.0654 2.30964 13.5 3 13.5H4.125C4.81536 13.5 5.25 13.0654 5.25 12.375V10.875C5.25 10.1847 4.81536 9.75 4.125 9.75H3ZM3 11.25H4.125V12.375H3V11.25Z\"\n fill=\"currentColor\"\n />\n </svg>\n </div>\n <Text className=\"oui-text-base-80 oui-text-2xs\">\n {t(\"portfolio.symbolPerformance\")}\n </Text>\n </Flex>\n </Flex>\n );\n};\n","import { FC, useMemo } from \"react\";\nimport { parseJSON, useAccount } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n AccountStatusEnum,\n ChainNamespace,\n} from \"@kodiak-finance/orderly-types\";\nimport { RouterAdapter } from \"@kodiak-finance/orderly-types\";\nimport {\n Flex,\n Text,\n cn,\n ArrowRightShortIcon,\n EyeIcon,\n} from \"@kodiak-finance/orderly-ui\";\nimport { PortfolioLeftSidebarPath } from \"../../../layout\";\n\ntype Props = {\n portfolioValue: number | null;\n unrealPnL: number;\n unrealROI: number;\n visible: boolean;\n namespace: string | null;\n toggleVisible: () => void;\n canTrade: boolean;\n routerAdapter?: RouterAdapter;\n};\n\nexport const PortfolioValueMobile: FC<Props> = (props) => {\n const { t } = useTranslation();\n const { state } = useAccount();\n\n const currentNamespace = useMemo(() => {\n if (props.namespace) {\n return props.namespace;\n }\n if (state.status === AccountStatusEnum.EnableTradingWithoutConnected) {\n return getLinkDeviceStorage()?.chainNamespace;\n }\n return null;\n }, [props.namespace, state.status]);\n return (\n <Flex\n direction={\"column\"}\n width={\"100%\"}\n height={\"100%\"}\n className={cn([\n \"oui-relative oui-items-start oui-overflow-hidden oui-rounded-2xl oui-bg-base-9\",\n currentNamespace === ChainNamespace.evm && \"oui-bg-[#283BEE]\",\n currentNamespace === ChainNamespace.solana && \"oui-bg-[#630EAD]\",\n ])}\n p={4}\n >\n <Flex direction=\"row\" gapX={1} itemAlign={\"center\"}>\n <Text className=\"oui-text-sm oui-text-base-static-54\">\n {t(\"portfolio.overview.handle.title\")}\n </Text>\n <EyeIcon\n size={16}\n className={cn(\n props.canTrade ? \"oui-text-base-static-54\" : \"oui-hidden\",\n )}\n onClick={props.toggleVisible}\n />\n </Flex>\n <Flex\n direction=\"row\"\n gapX={1}\n itemAlign={\"baseline\"}\n className=\"oui-mt-1\"\n >\n <Text.numeral\n visible={props.visible}\n className=\"oui-text-3xl oui-font-bold oui-text-base-static\"\n >\n {props.portfolioValue ?? \"--\"}\n </Text.numeral>\n <Text className=\"oui-text-base oui-font-bold oui-text-base-static-80\">\n USDC\n </Text>\n </Flex>\n <Flex\n direction=\"row\"\n gapX={1}\n itemAlign={\"center\"}\n className=\"oui-text-sm oui-text-base-static\"\n >\n <Text.pnl visible={props.visible}>{props.unrealPnL ?? \"--\"}</Text.pnl>\n <Text.roi\n visible={props.visible}\n rule=\"percentages\"\n prefix={\"(\"}\n suffix={\")\"}\n >\n {props.unrealROI ?? \"--\"}\n </Text.roi>\n </Flex>\n <div\n className=\"oui-absolute oui-right-0 oui-top-0 oui-flex oui-h-full oui-items-center oui-justify-center oui-px-4\"\n onClick={() =>\n props.routerAdapter?.onRouteChange({\n href: PortfolioLeftSidebarPath.Assets,\n name: \"Assets\",\n })\n }\n >\n <ArrowRightShortIcon\n size={18}\n opacity={0.99}\n className=\"oui-text-base-static\"\n />\n </div>\n </Flex>\n );\n};\n\ntype LinkDeviceStorage = { chainId: number; chainNamespace: ChainNamespace };\n\nfunction getLinkDeviceStorage() {\n try {\n const linkDeviceStorage = localStorage.getItem(\"orderly_link_device\");\n const json = linkDeviceStorage ? parseJSON(linkDeviceStorage) : null;\n return json as LinkDeviceStorage;\n } catch (err) {\n console.error(\"getLinkDeviceStorage\", err);\n }\n}\n","import { FC } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { RouterAdapter } from \"@kodiak-finance/orderly-types\";\nimport {\n Flex,\n Text,\n SettingFillIcon,\n ChevronRightIcon,\n} from \"@kodiak-finance/orderly-ui\";\nimport { PortfolioLeftSidebarPath } from \"../../../layout\";\n\ntype Props = {\n routerAdapter?: RouterAdapter;\n};\n\nexport const SettingRouterMobile: FC<Props> = (props) => {\n const { t } = useTranslation();\n return (\n <Flex\n direction={\"row\"}\n width={\"100%\"}\n className=\"oui-cursor-pointer oui-items-center oui-gap-2 oui-rounded-xl oui-bg-base-9 oui-p-4 oui-mb-3\"\n onClick={() =>\n props?.routerAdapter?.onRouteChange({\n href: PortfolioLeftSidebarPath.Setting,\n name: t(\"portfolio.setting\"),\n })\n }\n >\n <SettingFillIcon size={18} opacity={0.98} color=\"white\" />\n <Text className=\"oui-text-base oui-font-semibold oui-text-base-contrast-80\">\n {t(\"portfolio.setting\")}\n </Text>\n <ChevronRightIcon\n className=\"oui-ml-auto\"\n size={18}\n opacity={0.36}\n color=\"white\"\n />\n </Flex>\n );\n};\n","import { FC } from \"react\";\nimport { RefferalAPI as API } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { RouterAdapter } from \"@kodiak-finance/orderly-types\";\nimport {\n Flex,\n Text,\n TraderMobileIcon,\n ChevronRightIcon,\n cn,\n} from \"@kodiak-finance/orderly-ui\";\nimport { commifyOptional } from \"@kodiak-finance/orderly-utils\";\n\nconst isNumber = (val: unknown): val is number => {\n return typeof val === \"number\" && !Number.isNaN(val);\n};\n\ntype TraderCardMobileProps = {\n referralInfo?: API.ReferralInfo;\n routerAdapter?: RouterAdapter;\n};\n\nexport const TraderCardMobile: FC<TraderCardMobileProps> = (props) => {\n const { t } = useTranslation();\n const { referralInfo, routerAdapter } = props;\n const rebate = referralInfo?.referee_info?.[\"30d_referee_rebate\"];\n return (\n <Flex\n className=\"\n oui-portfolio-trader-card\n oui-via-21.6% \n oui-via-83.23% \n oui-relative \n oui-h-[112px] \n oui-w-full \n oui-flex-col \n oui-items-start \n oui-rounded-xl \n oui-border\n oui-border-solid \n oui-border-[rgba(var(--oui-gradient-success-start)/0.36)]\n oui-bg-gradient-to-r\n oui-from-[rgba(var(--oui-gradient-success-end)/0.12)]\n oui-to-[rgba(var(--oui-gradient-success-start)/0.12)]\n oui-p-3\n \"\n >\n <Flex className=\"oui-w-full oui-flex-row oui-justify-between oui-items-center\">\n <Flex className=\"oui-flex-col oui-items-start\">\n <Text className=\"oui-text-base-contrast oui-text-base oui-font-semibold\">\n {t(\"affiliate.trader.rebates\")}\n </Text>\n <Text className=\"oui-text-2xs oui-font-normal oui-text-base-contrast-54\">\n {t(\"affiliate.trader.tradingRebates\")}\n </Text>\n </Flex>\n <TraderMobileIcon />\n </Flex>\n\n <Flex\n className={cn(\n \"oui-mt-auto oui-w-full oui-flex-row oui-items-center oui-gap-1\",\n )}\n >\n <img\n src=\"https://oss.orderly.network/static/symbol_logo/USDC.png\"\n alt=\"USDC\"\n className=\"oui-size-5\"\n />\n <Text\n className={cn(\n \"oui-text-xs oui-font-semibold\",\n isNumber(rebate) && rebate !== 0\n ? \"oui-text-base-contrast\"\n : \"oui-text-base-contrast-36\",\n )}\n >\n {commifyOptional(rebate, { fix: 2, fallback: \"--\" })}\n </Text>\n <Text className=\"oui-text-xs oui-font-semibold oui-text-base-contrast-36\">\n (30D)\n </Text>\n <ChevronRightIcon\n size={18}\n color=\"white\"\n className=\"oui-ml-auto\"\n onClick={() => {\n routerAdapter?.onRouteChange({\n href: \"/rewards/affiliate?tab=trader\",\n name: t(\"tradingRewards.rewards\"),\n });\n }}\n />\n </Flex>\n </Flex>\n );\n};\n","import React, { FC } from \"react\";\nimport { Grid, useScreen } from \"@kodiak-finance/orderly-ui\";\nimport { MobileOverview } from \"./mobile\";\nimport { MobileOverviewProps } from \"./mobile/mobile.widget\";\nimport { OverviewProvider } from \"./provider/overviewProvider\";\n\nconst LazyAssetWidget = React.lazy(() =>\n import(\"./assets\").then((mod) => {\n return { default: mod.AssetWidget };\n }),\n);\n\nconst LazyAssetsChartWidget = React.lazy(() =>\n import(\"./assetChart\").then((mod) => {\n return { default: mod.AssetsChartWidget };\n }),\n);\n\nconst LazyPerformanceWidget = React.lazy(() =>\n import(\"./performance\").then((mod) => {\n return { default: mod.PerformanceWidget };\n }),\n);\n\nconst LazyHistoryDataGroupWidget = React.lazy(() =>\n import(\"./historyDataGroup\").then((mod) => {\n return { default: mod.HistoryDataGroupWidget };\n }),\n);\n\nexport type OverviewPageProps = MobileOverviewProps;\n\nexport const OverviewPage: FC<OverviewPageProps> = (props) => {\n const { isMobile } = useScreen();\n return (\n <OverviewProvider>\n {isMobile ? (\n <MobileOverview\n hideAffiliateCard={props.hideAffiliateCard}\n hideTraderCard={props.hideTraderCard}\n />\n ) : (\n <Grid cols={2} gap={4}>\n <React.Suspense fallback={null}>\n <LazyAssetWidget />\n </React.Suspense>\n <React.Suspense fallback={null}>\n <LazyAssetsChartWidget />\n </React.Suspense>\n <Grid.span colSpan={2}>\n <React.Suspense fallback={null}>\n <LazyPerformanceWidget />\n </React.Suspense>\n </Grid.span>\n <Grid.span colSpan={2}>\n <React.Suspense fallback={null}>\n <LazyHistoryDataGroupWidget />\n </React.Suspense>\n </Grid.span>\n </Grid>\n )}\n </OverviewProvider>\n );\n};\n","export { FeeTierPage } from \"./page\";\nexport { useFeeTierScript } from \"./feeTier.script\";\nexport type { FeeDataType, UseFeeTierScriptOptions } from \"./feeTier.script\";\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useCallback } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n Box,\n Flex,\n Text,\n Card,\n Divider,\n DataTable,\n Column,\n useScreen,\n cn,\n TanstackColumn,\n ScrollIndicator,\n ArrowRightUpSquareFillIcon,\n} from \"@kodiak-finance/orderly-ui\";\nimport { Decimal, numberToHumanStyle } from \"@kodiak-finance/orderly-utils\";\nimport type { FeeDataType, useFeeTierScriptReturn } from \"./feeTier.script\";\n\nconst LazyFeeTierHeader = React.lazy(() =>\n import(\"./feeTierHeader\").then((mod) => {\n return { default: mod.FeeTierHeader };\n }),\n);\n\nexport type FeeTierProps = useFeeTierScriptReturn;\n\nexport type FeeTierHeaderProps = {\n tier?: number;\n vol?: number;\n};\n\ntype FeeTierTableProps = {\n columns: Column<any>[];\n dataSource?: any[];\n page?: number;\n pageSize?: number;\n dataCount?: number;\n tier?: number | null;\n vol?: number | null;\n onRow?: (\n record: any,\n index: number,\n ) => {\n normal?: any;\n active?: any;\n };\n onCell?: (\n column: TanstackColumn<any>,\n record: any,\n index: number,\n ) => {\n normal?: any;\n active?: any;\n };\n};\n\ntype VipTierDefinition = {\n id?: number;\n tier?: number;\n name?: string;\n description?: string;\n discountRate?: number;\n minXKDKStakedValue?: number;\n badgeImageUrl?: string;\n effectiveFeeRates?: {\n makerFeeRate?: number;\n takerFeeRate?: number;\n rwaMakerFeeRate?: number;\n rwaTakerFeeRate?: number;\n };\n};\n\nconst formatDiscountRate = (rate?: number) => {\n if (rate === undefined || rate === null) return null;\n const normalized = rate <= 1 ? new Decimal(rate).mul(100) : new Decimal(rate);\n return `${normalized.toFixed(0)}%`;\n};\n\nconst VipTierTable: React.FC<{\n tiers: VipTierDefinition[];\n currentTier?: string | null;\n baseFeeRates?: {\n makerFeeRate?: string;\n takerFeeRate?: string;\n rwaMakerFeeRate?: string;\n rwaTakerFeeRate?: string;\n };\n docsUrl?: string;\n}> = (props) => {\n const { tiers, currentTier, baseFeeRates, docsUrl } = props;\n const { t } = useTranslation();\n const { isMobile } = useScreen();\n if (!tiers.length) return null;\n\n const formatFeeRate = (rate?: number | string) => {\n if (rate === undefined || rate === null) return \"--\";\n const value =\n typeof rate === \"string\" ? new Decimal(rate) : new Decimal(rate);\n return `${value.mul(100).toFixed(3)}%`;\n };\n\n const columns: Column<VipTierDefinition>[] = [\n {\n title: t(\"portfolio.feeTier.vip.column.tier\"),\n dataIndex: \"name\",\n render: (_value, row) => {\n const isActive =\n row.name && currentTier\n ? row.name.toLowerCase() === currentTier.toLowerCase()\n : false;\n const isBaseRow = row.tier === 0;\n return (\n <Flex itemAlign=\"center\" gap={2}>\n {!isBaseRow && row.badgeImageUrl && (\n <img\n src={row.badgeImageUrl}\n alt={`${row.name ?? \"VIP\"} badge`}\n className=\"oui-h-5 oui-w-5 oui-object-contain\"\n />\n )}\n <Text\n size=\"sm\"\n intensity={isActive ? 98 : 80}\n className={isActive ? \"oui-font-semibold\" : undefined}\n >\n {row.name ?? \"--\"}\n </Text>\n </Flex>\n );\n },\n },\n {\n title: t(\"portfolio.feeTier.vip.column.staked\"),\n dataIndex: \"minXKDKStakedValue\",\n align: \"center\",\n render: (value: number) => {\n if (value === undefined || value === null) return \"--\";\n return `>${numberToHumanStyle(value, 0)}`;\n },\n },\n {\n title: `${t(\"portfolio.feeTier.vip.column.discount\")}*`,\n dataIndex: \"discountRate\",\n align: \"center\",\n render: (value: number) => formatDiscountRate(value) || \"--\",\n },\n ];\n if (!isMobile) {\n columns.push(\n {\n title: t(\"portfolio.feeTier.column.maker\"),\n dataIndex: \"makerFeeRate\",\n align: \"center\",\n render: (_value: unknown, row: VipTierDefinition) =>\n formatFeeRate(row.effectiveFeeRates?.makerFeeRate),\n },\n {\n title: t(\"portfolio.feeTier.column.taker\"),\n dataIndex: \"takerFeeRate\",\n align: \"center\",\n render: (_value: unknown, row: VipTierDefinition) =>\n formatFeeRate(row.effectiveFeeRates?.takerFeeRate),\n },\n );\n }\n\n const baseRow: VipTierDefinition = {\n tier: 0,\n name: \"-\",\n discountRate: 0,\n minXKDKStakedValue: undefined,\n effectiveFeeRates: {\n makerFeeRate: baseFeeRates?.makerFeeRate\n ? Number(baseFeeRates.makerFeeRate)\n : undefined,\n takerFeeRate: baseFeeRates?.takerFeeRate\n ? Number(baseFeeRates.takerFeeRate)\n : undefined,\n },\n };\n\n return (\n <Box className=\"oui-mt-8 oui-mb-6\">\n <Flex\n direction={isMobile ? \"column\" : \"row\"}\n itemAlign={isMobile ? \"start\" : \"center\"}\n gap={isMobile ? 1 : 2}\n className=\"oui-mb-4 oui-pb-4 oui-border-b oui-border-line-6\"\n >\n <Text size=\"base\" intensity={98} weight=\"semibold\">\n {t(\"portfolio.feeTier.vip.tiersTitle\")}\n </Text>\n <Text size=\"xs\" intensity={54}>\n ({t(\"portfolio.feeTier.vip.tiersSubtitle\")})\n </Text>\n </Flex>\n <DataTable\n bordered\n className=\"oui-font-semibold\"\n classNames={{\n root: \"oui-bg-transparent\",\n }}\n columns={columns}\n dataSource={[baseRow, ...tiers]}\n />\n <Flex className=\"oui-mt-2 oui-gap-1 oui-flex-wrap oui-items-center\">\n <Text size=\"2xs\" intensity={54}>\n {t(\"portfolio.feeTier.vip.discountNote\")}\n </Text>\n {docsUrl && (\n <>\n <Text size=\"2xs\" intensity={36}>\n •\n </Text>\n <a\n className=\"oui-inline-flex oui-items-center oui-gap-1 oui-text-2xs oui-text-base-contrast-54 oui-underline hover:oui-text-base-contrast-80\"\n href={docsUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {t(\"portfolio.feeTier.vip.learnMore\")}\n <ArrowRightUpSquareFillIcon\n size={12}\n color=\"inherit\"\n className=\"oui-align-middle\"\n />\n </a>\n </>\n )}\n </Flex>\n </Box>\n );\n};\n\nexport const FeeTierTable: React.FC<FeeTierTableProps> = (props) => {\n const { isMobile } = useScreen();\n\n const { tier, columns, dataSource, onRow, onCell } = props;\n\n const internalOnRow = useCallback(\n (record: FeeDataType, index: number) => {\n const config =\n typeof onRow === \"function\"\n ? onRow(record, index)\n : { normal: undefined, active: undefined };\n const active = tier !== undefined && tier !== null && tier === index + 1;\n if (active) {\n return {\n \"data-state\": \"active\",\n className: cn(\n \"oui-pointer-events-none oui-h-[54px] oui-text-base-contrast-80 oui-gradient-brand\",\n ),\n ...config.active,\n };\n } else {\n return {\n \"data-state\": \"none\",\n className: cn(\"oui-h-[54px]\"),\n ...config.normal,\n };\n }\n },\n [tier, onRow],\n );\n\n const internalOnCell = useCallback(\n (\n column: TanstackColumn<FeeDataType>,\n record: FeeDataType,\n index: number,\n ) => {\n const config =\n typeof onCell === \"function\"\n ? onCell(column, record, index)\n : { normal: undefined, active: undefined };\n const active = tier !== undefined && tier !== null && tier === index + 1;\n const isFirstColumn = column.getIsFirstColumn();\n const isLastColumn = column.getIsLastColumn();\n if (active) {\n return {\n className: cn(\n isFirstColumn && \"oui-rounded-l-lg\",\n isLastColumn && \"oui-rounded-r-lg\",\n ),\n ...config.active,\n };\n } else {\n return {\n className: \"\",\n ...config.normal,\n };\n }\n },\n [tier, onCell],\n );\n\n return (\n <Box\n className={cn(\n \"oui-relative oui-border-b oui-border-line-4\",\n isMobile ? \"oui-mt-2 oui-rounded-xl oui-bg-base-9\" : undefined,\n )}\n >\n <DataTable\n bordered\n className=\"oui-font-semibold\"\n classNames={{ root: \"oui-bg-transparent\" }}\n onRow={internalOnRow}\n onCell={internalOnCell}\n columns={columns}\n dataSource={dataSource}\n />\n </Box>\n );\n};\n\nconst CardTitle: React.FC<{ syncedAt?: string | null }> = ({ syncedAt }) => {\n const { t } = useTranslation();\n const { isMobile } = useScreen();\n\n const formattedTime = syncedAt\n ? new Date(syncedAt).toLocaleString(\"en-US\", {\n month: \"short\",\n day: \"numeric\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n timeZone: \"UTC\",\n timeZoneName: \"short\",\n })\n : null;\n\n if (isMobile) {\n return (\n <Flex itemAlign={\"center\"} justify={\"center\"} gap={2}>\n {formattedTime && (\n <>\n <Text size=\"xs\" intensity={54}>\n {t(\"portfolio.feeTier.lastUpdatedTime\")}\n </Text>\n <Text size=\"xs\" intensity={80}>\n {formattedTime}\n </Text>\n </>\n )}\n </Flex>\n );\n }\n return (\n <Flex itemAlign={\"center\"} justify={\"between\"}>\n <Text size={\"lg\"}>{t(\"portfolio.feeTier\")}</Text>\n {formattedTime && (\n <Flex itemAlign={\"center\"} justify={\"center\"} gap={1}>\n <Text size=\"xs\" intensity={54}>\n {t(\"portfolio.feeTier.lastUpdatedTime\")}\n </Text>\n <Text size=\"xs\" intensity={80}>\n {formattedTime}\n </Text>\n </Flex>\n )}\n </Flex>\n );\n};\n\nexport const FeeTier: React.FC<FeeTierProps> = (props) => {\n const {\n columns,\n dataSource,\n tier,\n vol,\n headerDataAdapter,\n onRow,\n onCell,\n vipTier,\n vipTierEnabled,\n vipTierList = [],\n vipTierBaseFeeRates,\n vipTierDocsUrl,\n vipTierStakeUrl,\n } = props;\n const { isMobile } = useScreen();\n return (\n <Card\n title={<CardTitle syncedAt={vipTier?.syncedAt} />}\n id=\"oui-portfolio-fee-tier\"\n className=\"w-full\"\n classNames={{\n root: isMobile ? \"oui-bg-transparent oui-p-2\" : \"oui-bg-base-9\",\n }}\n >\n {!isMobile && <Divider />}\n <React.Suspense fallback={null}>\n <LazyFeeTierHeader\n vol={vol}\n tier={tier}\n headerDataAdapter={headerDataAdapter}\n vipTier={vipTier}\n vipTierEnabled={vipTierEnabled}\n vipTierBaseFeeRates={vipTierBaseFeeRates}\n vipTierDocsUrl={vipTierDocsUrl}\n vipTierStakeUrl={vipTierStakeUrl}\n />\n </React.Suspense>\n {vipTierList?.length > 0 && (\n <VipTierTable\n tiers={vipTierList}\n currentTier={vipTier?.name}\n baseFeeRates={vipTierBaseFeeRates}\n docsUrl={vipTierDocsUrl}\n />\n )}\n {!vipTierEnabled && (\n <FeeTierTable\n dataSource={dataSource}\n columns={columns}\n vol={vol}\n tier={tier}\n onRow={onRow}\n onCell={onCell}\n />\n )}\n </Card>\n );\n};\n","import React from \"react\";\nimport { useFeeTierScript, type UseFeeTierScriptOptions } from \".\";\nimport { FeeTier } from \"./feeTier.ui\";\n\nexport type FeeTierWidgetProps = UseFeeTierScriptOptions;\n\nexport const FeeTierWidget: React.FC<FeeTierWidgetProps> = (props) => {\n const state = useFeeTierScript(props);\n return <FeeTier {...state} />;\n};\n","import React from \"react\";\nimport { FeeTierWidget, FeeTierWidgetProps } from \"./feeTier.widget\";\n\nexport type FeeTierPageProps = FeeTierWidgetProps;\n\nexport const FeeTierPage: React.FC<FeeTierPageProps> = (props) => {\n return <FeeTierWidget {...props} />;\n};\n","import React, { useMemo } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport type { Column } from \"@kodiak-finance/orderly-ui\";\nimport { numberToHumanStyle } from \"@kodiak-finance/orderly-utils\";\nimport type { FeeDataType } from \"./feeTier.script\";\n\nconst textStyle: React.CSSProperties = {\n fontVariantLigatures: \"none\",\n};\n\nexport const useFeeTierColumns = () => {\n const { t } = useTranslation();\n return useMemo<Column<FeeDataType>[]>(() => {\n return [\n {\n title: t(\"portfolio.feeTier.column.tier\"),\n dataIndex: \"tier\",\n align: \"left\",\n width: 100,\n },\n {\n title: `${t(\"portfolio.feeTier.column.30dVolume\")} (USDC)`,\n dataIndex: \"volume\",\n align: \"center\",\n width: 180,\n render: (val, record) => {\n const { volume_min, volume_max, volume_node } = record;\n if (volume_node) {\n return volume_node;\n }\n if (!volume_min && !volume_max) {\n return <div style={textStyle}>--</div>;\n }\n if (volume_min && !volume_max) {\n return t(\"portfolio.feeTier.column.30dVolume.above\", {\n volume: numberToHumanStyle(\n volume_min,\n volume_min === 2500000 ? 1 : 0,\n ),\n });\n }\n return (\n <div>\n {volume_min &&\n numberToHumanStyle(volume_min, volume_min === 2500000 ? 1 : 0)}\n {` - `}\n {volume_max &&\n numberToHumanStyle(volume_max, volume_max === 2500000 ? 1 : 0)}\n </div>\n );\n },\n },\n {\n title: t(\"portfolio.feeTier.column.maker\"),\n dataIndex: \"maker_fee\",\n align: \"right\",\n width: 150,\n },\n {\n title: t(\"portfolio.feeTier.column.taker\"),\n dataIndex: \"taker_fee\",\n align: \"right\",\n width: 150,\n },\n ];\n }, [t]);\n};\n","import type { FeeDataType } from \"./feeTier.script\";\n\nexport const dataSource: FeeDataType[] = [\n {\n tier: 1,\n volume_min: 0,\n volume_max: 500000,\n maker_fee: \"0.025% / 0%\",\n taker_fee: \"0.04% / 0.05%\",\n },\n {\n tier: 2,\n volume_min: 500000,\n volume_max: 1000000,\n maker_fee: \"0.02% / 0%\",\n taker_fee: \"0.035% / 0.05%\",\n },\n {\n tier: 3,\n volume_min: 1000000,\n volume_max: 5000000,\n maker_fee: \"0.018% / 0%\",\n taker_fee: \"0.03% / 0.05%\",\n },\n {\n tier: 4,\n volume_min: 5000000,\n volume_max: 20000000,\n maker_fee: \"0.012% / 0%\",\n taker_fee: \"0.025% / 0.05%\",\n },\n {\n tier: 5,\n volume_min: 20000000,\n volume_max: 50000000,\n or: \"/\",\n maker_fee: \"0.009% / 0%\",\n taker_fee: \"0.022% / 0.05%\",\n },\n {\n tier: 6,\n volume_min: 50000000,\n volume_max: 100000000,\n or: \"/\",\n maker_fee: \"0.005% / 0%\",\n taker_fee: \"0.018% / 0.05%\",\n },\n {\n tier: 7,\n volume_min: 100000000,\n volume_max: undefined,\n or: \"/\",\n maker_fee: \"0% / 0%\",\n taker_fee: \"0.015% / 0.05%\",\n },\n];\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useEffect, useMemo, useState } from \"react\";\nimport useSWR from \"swr\";\nimport {\n useAccount,\n useAccountInfo,\n useConfig,\n usePrivateQuery,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { useDataTap } from \"@kodiak-finance/orderly-react-app\";\nimport { AccountStatusEnum, API } from \"@kodiak-finance/orderly-types\";\nimport type { Column, TanstackColumn } from \"@kodiak-finance/orderly-ui\";\nimport { Decimal } from \"@kodiak-finance/orderly-utils\";\nimport { useFeeTierColumns } from \"./column\";\nimport { dataSource as defaultDataSource } from \"./dataSource\";\n\nexport type useFeeTierScriptReturn = ReturnType<typeof useFeeTierScript>;\n\nexport type UseFeeTierScriptOptions = {\n hideTable?: boolean;\n dataAdapter?: (\n columns: Column<any>[],\n dataSource: any[],\n context?: {\n tier?: number;\n },\n ) => {\n columns: Column<any>[];\n dataSource: any[];\n };\n headerDataAdapter?: (original: any[]) => any[];\n onRow?: (\n record: any,\n index: number,\n ) => {\n normal?: any;\n active?: any;\n };\n onCell?: (\n column: TanstackColumn<any>,\n record: any,\n index: number,\n ) => {\n normal?: any;\n active?: any;\n };\n};\n\nexport interface FeeDataType {\n tier: number | null;\n volume_min?: number | null;\n volume_max?: number | null;\n volume_node?: React.ReactNode;\n or?: string | null;\n maker_fee: string;\n taker_fee: string;\n}\n\ntype VipTierRow = {\n userAddress?: string;\n tier?: number | string;\n name?: string;\n discountRate?: number;\n badgeImageUrl?: string;\n currentAllocation?: string | number | null;\n currentAllocationFormatted?: string | number | null;\n orderlyAccountId?: string | null;\n lastUpdated?: string | null;\n syncedAt?: string | null;\n};\n\ntype VipTierDefinition = {\n id?: number;\n tier?: number;\n name?: string;\n description?: string;\n discountRate?: number;\n minXKDKStakedValue?: number;\n badgeImageUrl?: string;\n createdAt?: string;\n updatedAt?: string;\n effectiveFeeRates?: {\n makerFeeRate?: number;\n takerFeeRate?: number;\n rwaMakerFeeRate?: number;\n rwaTakerFeeRate?: number;\n };\n};\n\ntype VipTierListResponse = {\n baseFeeRates?: {\n makerFeeRate?: string;\n takerFeeRate?: string;\n rwaMakerFeeRate?: string;\n rwaTakerFeeRate?: string;\n };\n tiers?: VipTierDefinition[];\n};\n\n// Custom fetcher for VIP tier endpoints that return raw data (not wrapped in Orderly format)\nconst vipTierFetcher = async (url: string) => {\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(`HTTP ${response.status}: ${response.statusText}`);\n }\n return response.json();\n};\n\nconst normalizeVipTierResponse = (payload: unknown): VipTierRow | null => {\n if (!payload) return null;\n if (Array.isArray(payload)) return (payload[0] ?? null) as VipTierRow | null;\n\n const record = payload as Record<string, unknown>;\n const data =\n (Array.isArray(record.data) ? record.data[0] : record.data) ??\n (Array.isArray(record.rows) ? record.rows[0] : record.rows) ??\n payload;\n\n const item = data as Record<string, unknown>;\n const nested = (item?.vipTier as Record<string, unknown>) || undefined;\n\n if (nested) {\n return {\n userAddress: item.userAddress as string | undefined,\n tier: nested.tier as number | string | undefined,\n name: nested.name as string | undefined,\n discountRate: nested.discountRate as number | undefined,\n badgeImageUrl: nested.badgeImageUrl as string | undefined,\n currentAllocation: item.currentAllocation as\n | string\n | number\n | null\n | undefined,\n currentAllocationFormatted: item.currentAllocationFormatted as\n | string\n | number\n | null\n | undefined,\n orderlyAccountId: item.orderlyAccountId as string | null | undefined,\n lastUpdated: item.lastUpdated as string | undefined,\n syncedAt: item.syncedAt as string | null | undefined,\n };\n }\n\n return item as VipTierRow;\n};\n\nconst normalizeVipTierListResponse = (\n payload: unknown,\n): VipTierListResponse => {\n if (!payload) return { tiers: [] };\n if (Array.isArray(payload)) {\n return {\n tiers: payload.map((item) =>\n normalizeVipTierDefinition(item as Record<string, unknown>),\n ),\n };\n }\n\n const record = payload as Record<string, unknown>;\n if (Array.isArray(record.data)) {\n return {\n tiers: record.data.map((item) =>\n normalizeVipTierDefinition(item as Record<string, unknown>),\n ),\n };\n }\n if (Array.isArray(record.rows)) {\n return {\n tiers: record.rows.map((item) =>\n normalizeVipTierDefinition(item as Record<string, unknown>),\n ),\n };\n }\n\n const nestedData = record.data as Record<string, unknown> | undefined;\n const nestedRows = record.rows as Record<string, unknown> | undefined;\n const nested = nestedData ?? nestedRows;\n if (nested && typeof nested === \"object\") {\n const tiers = (nested.tiers as unknown[]) ?? [];\n return {\n baseFeeRates: normalizeBaseFeeRates(\n nested.baseFeeRates ?? nested.base_fee_rates,\n ),\n tiers: Array.isArray(tiers)\n ? tiers.map((item) =>\n normalizeVipTierDefinition(item as Record<string, unknown>),\n )\n : [],\n };\n }\n\n const response = payload as VipTierListResponse;\n return {\n baseFeeRates: normalizeBaseFeeRates(\n (response as unknown as Record<string, unknown>).baseFeeRates ??\n (response as unknown as Record<string, unknown>).base_fee_rates,\n ),\n tiers: Array.isArray(response.tiers)\n ? response.tiers.map((item) =>\n normalizeVipTierDefinition(item as Record<string, unknown>),\n )\n : [],\n };\n};\n\nfunction normalizeBaseFeeRates(\n value: unknown,\n): VipTierListResponse[\"baseFeeRates\"] {\n if (!value || typeof value !== \"object\") return undefined;\n const rates = value as Record<string, unknown>;\n const toRate = (input?: unknown) =>\n input === undefined || input === null ? undefined : String(input);\n return {\n makerFeeRate: toRate(rates.makerFeeRate ?? rates.maker_fee_rate),\n takerFeeRate: toRate(rates.takerFeeRate ?? rates.taker_fee_rate),\n rwaMakerFeeRate: toRate(rates.rwaMakerFeeRate ?? rates.rwa_maker_fee_rate),\n rwaTakerFeeRate: toRate(rates.rwaTakerFeeRate ?? rates.rwa_taker_fee_rate),\n };\n}\n\nfunction normalizeVipTierDefinition(\n item: Record<string, unknown>,\n): VipTierDefinition {\n const effectiveFeeRates = normalizeEffectiveFeeRates(\n item.effectiveFeeRates ?? item.effective_fee_rates,\n );\n return {\n id: item.id as number | undefined,\n tier: item.tier as number | undefined,\n name: item.name as string | undefined,\n description: item.description as string | undefined,\n discountRate: (item.discountRate ?? item.discount_rate) as\n | number\n | undefined,\n minXKDKStakedValue: (item.minXKDKStakedValue ??\n item.min_xkdk_staked_value) as number | undefined,\n badgeImageUrl: (item.badgeImageUrl ?? item.badge_image_url) as\n | string\n | undefined,\n createdAt: (item.createdAt ?? item.created_at) as string | undefined,\n updatedAt: (item.updatedAt ?? item.updated_at) as string | undefined,\n effectiveFeeRates,\n };\n}\n\nfunction normalizeEffectiveFeeRates(\n value: unknown,\n): VipTierDefinition[\"effectiveFeeRates\"] {\n if (!value || typeof value !== \"object\") return undefined;\n const rates = value as Record<string, unknown>;\n const toNumber = (input?: unknown) =>\n input === undefined || input === null ? undefined : Number(input);\n return {\n makerFeeRate: toNumber(rates.makerFeeRate ?? rates.maker_fee_rate),\n takerFeeRate: toNumber(rates.takerFeeRate ?? rates.taker_fee_rate),\n rwaMakerFeeRate: toNumber(\n rates.rwaMakerFeeRate ?? rates.rwa_maker_fee_rate,\n ),\n rwaTakerFeeRate: toNumber(\n rates.rwaTakerFeeRate ?? rates.rwa_taker_fee_rate,\n ),\n };\n}\n\n// Build user-specific VIP tier URL: /vip-tiers/user/{address}\nconst buildVipTierUrl = (endpoint: string, address: string) => {\n if (!endpoint) return null;\n if (!address) return null;\n return `${endpoint}/user/${address}`;\n};\n\n// Build VIP tier list URL: /vip-tiers/effective-fee-rates\nconst buildVipTierListUrl = (endpoint?: string) => {\n if (!endpoint) return null;\n return `${endpoint}/effective-fee-rates`;\n};\n\nconst findCurrentTier = (feeList: FeeDataType[], data: API.AccountInfo) => {\n const { futures_taker_fee_rate = 0, futures_maker_fee_rate = 0 } = data;\n const takerRate = new Decimal(futures_taker_fee_rate).mul(0.01);\n const makerRate = new Decimal(futures_maker_fee_rate).mul(0.01);\n const findItem = feeList.find((item) => {\n const itemTakerRate = item.taker_fee.split(\"/\")?.[0].trim();\n const itemMakerRate = item.maker_fee.split(\"/\")?.[0].trim();\n return (\n itemTakerRate === `${takerRate.toNumber()}%` &&\n itemMakerRate === `${makerRate.toNumber()}%`\n );\n });\n return findItem?.tier;\n};\n\nexport const useFeeTierScript = (options?: UseFeeTierScriptOptions) => {\n const { dataAdapter, headerDataAdapter, onRow, onCell, hideTable } =\n options || {};\n const [tier, setTier] = useState<number | null>();\n const { data, isLoading } = useAccountInfo();\n const { state } = useAccount();\n const vipTierEndpoint = useConfig(\"vipTierEndpoint\") as string | undefined;\n const vipTierDocsUrl = useConfig(\"vipTierDocsUrl\") as string | undefined;\n const vipTierStakeUrl = useConfig(\"vipTierStakeUrl\") as string | undefined;\n\n const cols = useFeeTierColumns();\n\n const { data: volumeStatistics } = usePrivateQuery<{\n perp_volume_last_30_days: number;\n }>(\"/v1/volume/user/stats\");\n\n const { columns, dataSource } = useMemo(() => {\n return typeof dataAdapter === \"function\"\n ? dataAdapter(cols, defaultDataSource, { tier: tier ?? undefined })\n : { columns: cols, dataSource: defaultDataSource };\n }, [dataAdapter, cols, tier]);\n\n useEffect(() => {\n if (!data || isLoading) {\n return;\n }\n setTier(findCurrentTier(dataSource, data));\n }, [data, isLoading, dataSource]);\n\n const vipTierUrl = useMemo(() => {\n if (!vipTierEndpoint || !state.address) return null;\n return buildVipTierUrl(vipTierEndpoint, state.address);\n }, [vipTierEndpoint, state.address]);\n\n const { data: vipTierRaw } = useSWR(vipTierUrl, vipTierFetcher, {\n revalidateOnFocus: false,\n });\n const vipTier = useMemo(\n () => normalizeVipTierResponse(vipTierRaw),\n [vipTierRaw],\n );\n\n const vipTierListUrl = useMemo(\n () => buildVipTierListUrl(vipTierEndpoint),\n [vipTierEndpoint],\n );\n\n const { data: vipTierListRaw } = useSWR(vipTierListUrl, vipTierFetcher, {\n revalidateOnFocus: false,\n });\n const vipTierListResponse = useMemo(\n () => normalizeVipTierListResponse(vipTierListRaw),\n [vipTierListRaw],\n );\n const vipTierList = vipTierListResponse.tiers || [];\n const vipTierBaseFeeRates = vipTierListResponse.baseFeeRates;\n\n const sortedVipTierList = useMemo(() => {\n if (!vipTierList?.length) return [];\n return [...vipTierList].sort(\n (a, b) => (a.minXKDKStakedValue || 0) - (b.minXKDKStakedValue || 0),\n );\n }, [vipTierList]);\n\n const vipTierEnabled = Boolean(vipTierEndpoint);\n const dataTapPayload = {\n tier: tier,\n vol: volumeStatistics?.perp_volume_last_30_days,\n };\n\n const authData = useDataTap(dataTapPayload, {\n accountStatus:\n state.status === AccountStatusEnum.EnableTradingWithoutConnected\n ? AccountStatusEnum.EnableTradingWithoutConnected\n : AccountStatusEnum.EnableTrading,\n fallbackData: {\n ...dataTapPayload,\n tier: undefined,\n vol: undefined,\n },\n });\n const vipTierData = useDataTap(vipTier, {\n accountStatus: AccountStatusEnum.Connected,\n fallbackData: null,\n });\n\n return {\n ...authData,\n vipTier: vipTierData,\n vipTierEnabled,\n vipTierList: sortedVipTierList,\n vipTierBaseFeeRates,\n vipTierDocsUrl,\n vipTierStakeUrl,\n columns: columns,\n dataSource: dataSource,\n onRow: onRow,\n onCell: onCell,\n headerDataAdapter: headerDataAdapter,\n };\n};\n","import { useCallback, useEffect, useMemo, useState, useRef } from \"react\";\nimport React from \"react\";\nimport { useAccount } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n Flex,\n Text,\n Divider,\n Box,\n Tabs,\n TabPanel,\n DataFilter,\n formatAddress,\n Tooltip,\n InfoCircleIcon,\n Button,\n} from \"@kodiak-finance/orderly-ui\";\nimport type { SelectOption } from \"@kodiak-finance/orderly-ui\";\nimport {\n LiquidationWidget,\n PositionHistoryWidget,\n PositionHistoryInstance,\n LiquidationInstance,\n PositionsProps,\n CombinePositionsWidget,\n PositionsWidget,\n PositionsInstance,\n} from \"@kodiak-finance/orderly-ui-positions\";\nimport {\n exportToCSVFile,\n getPositionExportColumns,\n getPositionHistoryExportColumns,\n getLiquidationExportColumns,\n} from \"@kodiak-finance/orderly-utils\";\nimport { AccountType } from \"../assets/assetsPage/assets.ui.desktop\";\n\nenum TabsType {\n positions = \"Positions\",\n positionHistory = \"Position history\",\n liquidation = \"Liquidation\",\n}\n\nexport const PositionsPage: React.FC<PositionsProps> = (props) => {\n const [tab, setTab] = useState(TabsType.positions);\n const { t } = useTranslation();\n const { state, isMainAccount } = useAccount();\n\n const subAccounts = state.subAccounts ?? [];\n\n const [selectedAccount, setAccount] = React.useState<string>(AccountType.ALL);\n\n const positionsRef = useRef<PositionsInstance>(null);\n const positionHistoryRef = useRef<PositionHistoryInstance>(null);\n const liquidationRef = useRef<LiquidationInstance>(null);\n\n const [canExport, setCanExport] = useState(false);\n\n useEffect(() => {\n const getHasData = () => {\n switch (tab) {\n case TabsType.positions: {\n const data = positionsRef.current?.getDataSource?.();\n return !!(data && data.length > 0);\n }\n case TabsType.positionHistory: {\n const data = positionHistoryRef.current?.getDataSource?.();\n return !!(data && data.length > 0);\n }\n case TabsType.liquidation: {\n const data = liquidationRef.current?.getDataSource?.();\n return !!(data && data.length > 0);\n }\n default:\n return false;\n }\n };\n\n setCanExport(getHasData());\n const interval = setInterval(() => setCanExport(getHasData()), 500);\n return () => clearInterval(interval);\n }, [tab]);\n\n const handleExport = useCallback(() => {\n switch (tab) {\n case TabsType.positions: {\n const data = positionsRef.current?.getDataSource?.();\n if (data && data.length > 0) {\n exportToCSVFile({\n filename: `positions_${new Date().getTime()}`,\n columns: getPositionExportColumns(),\n data,\n });\n }\n break;\n }\n case TabsType.positionHistory: {\n const data = positionHistoryRef.current?.getDataSource?.();\n if (data && data.length > 0) {\n exportToCSVFile({\n filename: `position_history_${new Date().getTime()}`,\n columns: getPositionHistoryExportColumns(),\n data,\n });\n }\n break;\n }\n case TabsType.liquidation: {\n const data = liquidationRef.current?.getDataSource?.();\n if (data && data.length > 0) {\n exportToCSVFile({\n filename: `liquidation_${new Date().getTime()}`,\n columns: getLiquidationExportColumns(),\n data,\n });\n }\n break;\n }\n default:\n break;\n }\n }, [tab]);\n\n const onAccountFilter = React.useCallback(\n (filter: { name: string; value: string }) => {\n const { name, value } = filter;\n if (name === \"account\") {\n setAccount(value);\n }\n },\n [],\n );\n\n const ALL_ACCOUNTS: SelectOption = {\n label: t(\"common.allAccount\"),\n value: AccountType.ALL,\n };\n\n const MAIN_ACCOUNT: SelectOption = {\n label: t(\"common.mainAccount\"),\n value: AccountType.MAIN,\n };\n\n const memoizedOptions = useMemo(() => {\n if (Array.isArray(subAccounts) && subAccounts.length) {\n return [\n ALL_ACCOUNTS,\n MAIN_ACCOUNT,\n ...subAccounts.map<SelectOption>((value) => ({\n value: value.id,\n label: value?.description || formatAddress(value?.id),\n })),\n ];\n }\n return [ALL_ACCOUNTS, MAIN_ACCOUNT];\n }, [subAccounts]);\n\n return (\n <Flex\n // p={6}\n direction={\"column\"}\n itemAlign={\"start\"}\n gap={4}\n width=\"100%\"\n height=\"100%\"\n >\n <Flex width=\"100%\" justify=\"between\">\n <Text size=\"lg\">{t(\"common.positions\")}</Text>\n <Button\n color=\"gray\"\n size=\"sm\"\n className=\"oui-bg-base-4\"\n disabled={!canExport}\n onClick={handleExport}\n >\n Export to CSV\n </Button>\n </Flex>\n <Divider className=\"oui-w-full\" />\n {/* 26(title height) + 1(divider) + 32 (padding) */}\n <Box width=\"100%\" className=\"oui-h-[calc(100%_-_59px)]\">\n <Tabs\n value={tab}\n onValueChange={(e) => setTab(e as any)}\n classNames={{\n tabsList: \"!oui-border-none oui-pb-1\",\n tabsContent: \"oui-h-[calc(100%_-_28px)]\",\n trigger: \"oui-group\",\n }}\n className=\"oui-h-full\"\n >\n <TabPanel value={TabsType.positions} title={t(\"common.positions\")}>\n <Flex direction=\"column\" gap={3} width=\"100%\" height=\"100%\">\n {isMainAccount ? (\n <>\n <DataFilter\n onFilter={onAccountFilter}\n items={[\n {\n type: \"select\",\n name: \"account\",\n value: selectedAccount,\n options: memoizedOptions,\n },\n ]}\n />\n <CombinePositionsWidget\n ref={positionsRef}\n selectedAccount={selectedAccount}\n {...props}\n />\n </>\n ) : (\n <PositionsWidget\n ref={positionsRef}\n {...props}\n enableSortingStorage={false}\n />\n )}\n </Flex>\n </TabPanel>\n <TabPanel\n value={TabsType.positionHistory}\n title={t(\"positions.positionHistory\")}\n >\n <Flex direction=\"column\" gap={3} width=\"100%\" height=\"100%\">\n <PositionHistoryWidget\n ref={positionHistoryRef}\n {...props}\n enableSortingStorage={false}\n />\n </Flex>\n </TabPanel>\n <TabPanel value={TabsType.liquidation} title={<LiquidationTab />}>\n <LiquidationWidget ref={liquidationRef} />\n </TabPanel>\n </Tabs>\n </Box>\n </Flex>\n );\n};\n\nconst LiquidationTab: React.FC = () => {\n const { t } = useTranslation();\n return (\n <div className=\"oui-flex oui-space-x-1\">\n <span>{t(\"positions.liquidation\")}</span>\n <Tooltip\n className=\"oui-max-w-[275px] oui-bg-base-6\"\n content={\n <div>\n <div className=\"oui-text-pretty\">\n {t(\"positions.Liquidation.tooltip.liquidation\")}\n </div>\n <div>\n <a\n href=\"https://orderly.network/docs/introduction/trade-on-orderly/perpetual-futures/liquidations\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"oui-text-primary\"\n >\n {t(\"positions.Liquidation.tooltip.viewMore\")}\n </a>\n </div>\n </div>\n }\n arrow={{\n className: \"oui-fill-base-6\",\n }}\n >\n <button className=\"oui-hidden group-data-[state=active]:oui-block\">\n <InfoCircleIcon />\n </button>\n </Tooltip>\n </div>\n );\n};\n","import { FC, SVGProps, useRef } from \"react\";\nimport React from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n Box,\n Button,\n Divider,\n Flex,\n Text,\n Tooltip,\n} from \"@kodiak-finance/orderly-ui\";\nimport {\n OrderListInstance,\n OrdersWidget,\n} from \"@kodiak-finance/orderly-ui-orders\";\nimport { SharePnLConfig } from \"@kodiak-finance/orderly-ui-share\";\n\nexport const OrdersPage: React.FC<{ sharePnLConfig?: SharePnLConfig }> = (\n props,\n) => {\n const { sharePnLConfig } = props;\n const { t } = useTranslation();\n\n const ordersRef = useRef<OrderListInstance>(null);\n\n return (\n <Flex\n // p={6}\n direction={\"column\"}\n itemAlign={\"start\"}\n gap={4}\n width=\"100%\"\n height=\"100%\"\n >\n <Flex width=\"100%\" justify=\"between\">\n <Text size=\"lg\">{t(\"common.orders\")}</Text>\n <Tooltip content={t(\"orders.download.tooltip\")}>\n <Button color=\"gray\" size=\"sm\" className=\"oui-bg-base-4\" disabled>\n {t(\"common.download\")}\n <TooltipIcon className=\"oui-text-base-contrast-36 oui-ml-[5px]\" />\n </Button>\n </Tooltip>\n </Flex>\n <Divider className=\"oui-w-full\" />\n {/* 26(title height) + 1(divider) + 32 (padding) */}\n <Box width=\"100%\" className=\"oui-h-[calc(100%_-_59px)]\">\n <OrdersWidget ref={ordersRef} sharePnLConfig={sharePnLConfig} />\n </Box>\n </Flex>\n );\n};\n\nconst TooltipIcon = React.forwardRef<SVGSVGElement, SVGProps<SVGSVGElement>>(\n (props, ref) => {\n return (\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n ref={ref}\n {...props}\n >\n <path d=\"M5.999 1.007a5 5 0 1 0 0 10 5 5 0 0 0 0-10m0 2.5a.5.5 0 1 1 0 1 .5.5 0 0 1 0-1m0 1.5a.5.5 0 0 1 .5.5v2.5a.5.5 0 0 1-1 0v-2.5a.5.5 0 0 1 .5-.5\" />\n </svg>\n );\n },\n);\n","export { APIManagerWidget } from \"./apiManager.widget\";\nexport { APIManagerPage } from \"./apiManager.page\";\n","import { APIManager } from \"./apiManager.ui\";\nimport { useApiManagerScript } from \"./apiManager.script\";\n\n\nexport const APIManagerWidget = (props?: {\n filterTags?: [string];\n keyStatus?: string;\n}) => {\n const state = useApiManagerScript(props);\n return <APIManager {...state} />;\n};\n","import { APIManagerWidget } from \"./apiManager.widget\";\n\n/**\n * API key manager page\n * @param filterTags filterTags\n * @param keyStatus filterTags default is \"ACTIVE\"\n * @returns\n */\nexport const APIManagerPage = (props: {\n filterTags?: [string];\n keyStatus?: string;\n}) => {\n const { filterTags, keyStatus = \"ACTIVE\" } = props;\n return <APIManagerWidget filterTags={filterTags} keyStatus={keyStatus}/>;\n};\n","export { SettingWidget } from \"./setting.widget\";\nexport { SettingPage } from \"./setting.page\";\n","import { useEffect, useState } from \"react\";\nimport {\n useAccount,\n useAccountInfo,\n useDebouncedCallback,\n useMutation,\n useLocalStorage,\n useOrderlyContext,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { useAppContext } from \"@kodiak-finance/orderly-react-app\";\nimport { AccountStatusEnum } from \"@kodiak-finance/orderly-types\";\nimport { toast, useOrderlyTheme } from \"@kodiak-finance/orderly-ui\";\n\nconst ORDERLY_ORDER_SOUND_ALERT_KEY = \"orderly_order_sound_alert\";\nconst ORDERLY_ORDER_SOUND_OPTION_KEY = \"orderly_order_sound_option\";\n\nconst ORDERLY_TRADING_TOAST_ALERT_KEY = \"orderly_trading_toast_alert\";\n\nconst ORDERLY_MWEB_ORDER_ENTRY_SIDE_MARKETS_LAYOUT =\n \"orderly_mweb_order_entry_side_markets_layout\";\n\nexport type OrderPanelLayout = \"left\" | \"right\";\n\nexport type SettingScriptReturns = ReturnType<typeof useSettingScript>;\n\nexport const useSettingScript = () => {\n const { data } = useAccountInfo();\n const { wrongNetwork, disabledConnect } = useAppContext();\n const [update] = useMutation(\"/v1/client/maintenance_config\");\n const [checked, setChecked] = useState(false);\n const { notification } = useOrderlyContext();\n const { themes, currentThemeId, setCurrentThemeId } = useOrderlyTheme();\n\n const soundOptions = notification?.orderFilled?.soundOptions;\n const hasSoundOptions = Boolean(soundOptions && soundOptions.length > 0);\n const defaultSoundValue =\n notification?.orderFilled?.defaultSoundValue ?? soundOptions?.[0]?.value;\n\n const [soundAlert, setSoundAlert] = useLocalStorage<boolean>(\n ORDERLY_ORDER_SOUND_ALERT_KEY,\n notification?.orderFilled?.defaultOpen ?? false,\n );\n\n const [selectedSoundValue, setSelectedSoundValue] = useLocalStorage<\n string | null\n >(ORDERLY_ORDER_SOUND_OPTION_KEY, defaultSoundValue ?? null);\n\n // Kodiak custom: trading toast alert (master switch for toast + sound)\n const [tradingToastAlert, setTradingToastAlert] = useLocalStorage<boolean>(\n ORDERLY_TRADING_TOAST_ALERT_KEY,\n true,\n );\n\n const [orderPanelLayout, setOrderPanelLayout] =\n useLocalStorage<OrderPanelLayout>(\n ORDERLY_MWEB_ORDER_ENTRY_SIDE_MARKETS_LAYOUT,\n \"right\",\n );\n\n useEffect(() => {\n setChecked(data?.maintenance_cancel_orders || false);\n }, [data]);\n\n const updateCheckState = useDebouncedCallback((value: boolean) => {\n // if (value === data?.maintenance_cancel_orders) return;\n update({\n maintenance_cancel_order_flag: value,\n }).then((data) => {\n if (data.success) {\n toast.success(value ? \"Opened\" : \"Closed\");\n } else {\n setChecked(!value);\n }\n });\n }, 300);\n\n const setMaintainConfig = (maintenance_cancel_order_flag: boolean) => {\n setChecked(maintenance_cancel_order_flag);\n updateCheckState(maintenance_cancel_order_flag);\n };\n const { state } = useAccount();\n\n const canTouch =\n !wrongNetwork &&\n !disabledConnect &&\n (state.status === AccountStatusEnum.EnableTrading ||\n state.status === AccountStatusEnum.EnableTradingWithoutConnected);\n\n return {\n maintenance_cancel_orders: checked, //data?.maintenance_cancel_orders,\n setMaintainConfig,\n isSetting: false,\n canTouch,\n soundAlert,\n setSoundAlert,\n hasOrderFilledMedia: Boolean(notification?.orderFilled?.media),\n soundOptions,\n hasSoundOptions,\n selectedSoundValue,\n setSelectedSoundValue,\n // Kodiak custom: trading toast alert (master switch for toast + sound)\n tradingToastAlert,\n setTradingToastAlert,\n orderPanelLayout,\n setOrderPanelLayout,\n themes,\n currentThemeId,\n setCurrentThemeId,\n };\n};\n","import type { FC } from \"react\";\nimport { Flex, Text } from \"@kodiak-finance/orderly-ui\";\n\nexport type SoundRadioButtonProps = {\n sel: boolean;\n label: string;\n onCheckChange: () => void;\n};\n\nexport const SoundRadioButton: FC<SoundRadioButtonProps> = ({\n sel,\n label,\n onCheckChange,\n}) => {\n return (\n <Flex\n onClick={(e) => {\n onCheckChange();\n e.stopPropagation();\n }}\n gap={1}\n className=\"oui-cursor-pointer\"\n >\n {sel ? (\n <SoundSelIcon className=\"oui-fill-base-contrast\" />\n ) : (\n <SoundUnselIcon className=\"oui-fill-base-contrast-54\" />\n )}\n <Text size=\"2xs\" intensity={sel ? 98 : 54}>\n {label}\n </Text>\n </Flex>\n );\n};\n\nexport const SoundSelIcon = (props: { className: string }) => {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={props.className}\n >\n <path d=\"M8.01 1.333a6.667 6.667 0 1 0 0 13.333 6.667 6.667 0 0 0 0-13.333m0 1.333a5.334 5.334 0 1 1-.001 10.667 5.334 5.334 0 0 1 0-10.667\" />\n <circle cx=\"8\" cy=\"8\" r=\"3.333\" />\n </svg>\n );\n};\n\nexport const SoundUnselIcon = (props: { className: string }) => {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={props.className}\n >\n <path d=\"M8.01 1.333a6.667 6.667 0 1 0 0 13.333 6.667 6.667 0 0 0 0-13.333m0 1.333a5.334 5.334 0 1 1-.001 10.667 5.334 5.334 0 0 1 0-10.667\" />\n </svg>\n );\n};\n","import { FC } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { Card, Flex, Select, Button, cn } from \"@kodiak-finance/orderly-ui\";\nimport type { SettingScriptReturns } from \"../setting.script\";\n\ntype ThemeSettingCardProps = Pick<\n SettingScriptReturns,\n \"themes\" | \"currentThemeId\" | \"setCurrentThemeId\"\n> & {\n classNames?: {\n card?: string;\n content?: string;\n };\n};\n\nexport const ThemeSettingCard: FC<ThemeSettingCardProps> = (props) => {\n const { t } = useTranslation();\n\n const { themes, currentThemeId, setCurrentThemeId, classNames } = props;\n\n if (!themes || themes.length <= 1) {\n return null;\n }\n\n return (\n <Card\n title={t(\"portfolio.setting.theme\")}\n id=\"portfolio-theme-setting\"\n classNames={{ root: classNames?.card }}\n >\n <Flex\n direction={\"row\"}\n gap={4}\n width={\"100%\"}\n itemAlign={\"center\"}\n className={cn(\n \"oui-border-t-2 oui-border-line-6 oui-font-semibold\",\n classNames?.content,\n )}\n >\n {themes.length === 2 ? (\n <Flex direction=\"row\" itemAlign=\"center\" gap={2}>\n {themes.map((theme) => (\n <Button\n variant={theme.id === currentThemeId ? \"contained\" : \"outlined\"}\n size=\"sm\"\n key={theme.id}\n onClick={() => setCurrentThemeId?.(theme.id)}\n >\n {theme.displayName}\n </Button>\n ))}\n </Flex>\n ) : (\n <Flex>\n <Select.options\n value={currentThemeId}\n onValueChange={(value) => {\n setCurrentThemeId?.(value);\n }}\n options={themes.map((theme) => ({\n value: theme.id,\n label: theme.displayName,\n }))}\n size=\"sm\"\n testid=\"oui-testid-setting-theme-select\"\n classNames={{ trigger: \"oui-min-w-[100px]\" }}\n />\n </Flex>\n )}\n </Flex>\n </Card>\n );\n};\n","import { FC, useCallback, useRef } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { Card, Flex, Switch, Text } from \"@kodiak-finance/orderly-ui\";\nimport { AuthGuardTooltip } from \"@kodiak-finance/orderly-ui-connector\";\nimport { SoundRadioButton } from \"./components/soundRadioButton\";\nimport { ThemeSettingCard } from \"./components/themeSettingCard\";\nimport type { SettingScriptReturns } from \"./setting.script\";\n\nexport const SettingDesktop: FC<SettingScriptReturns> = (props) => {\n const { t } = useTranslation();\n\n // Kodiak custom: sound section only visible when trading toast is on\n const showSoundSetting =\n (props.hasOrderFilledMedia || props.hasSoundOptions) &&\n props.tradingToastAlert;\n\n const audioRef = useRef<HTMLAudioElement | null>(null);\n const playPreview = useCallback((media?: string) => {\n if (!media) return;\n try {\n if (!audioRef.current) {\n audioRef.current = new Audio();\n }\n const audio = audioRef.current;\n audio.pause();\n audio.currentTime = 0;\n audio.src = media;\n // ignore play promise rejection (e.g. autoplay policy)\n void audio.play().catch(() => undefined);\n } catch {\n // ignore runtime audio errors\n }\n }, []);\n\n return (\n <>\n <Card\n title={t(\"portfolio.setting.systemUpgrade\")}\n id=\"portfolio-apikey-manager\"\n className=\"oui-bg-base-9 oui-font-semibold\"\n >\n <Flex\n direction={\"row\"}\n gap={4}\n width={\"100%\"}\n itemAlign={\"center\"}\n pt={4}\n className=\"oui-border-t-2 oui-border-line-6 oui-font-semibold\"\n >\n <Flex direction={\"column\"} itemAlign={\"start\"} className=\"oui-flex-1\">\n <Text intensity={80} size=\"base\">\n {t(\"portfolio.setting.cancelOpenOrders\")}\n </Text>\n <Text intensity={54} size=\"sm\">\n {t(\"portfolio.setting.cancelOpenOrders.description\")}\n </Text>\n </Flex>\n\n <AuthGuardTooltip align=\"end\">\n <Switch\n checked={props.maintenance_cancel_orders}\n onCheckedChange={(e) => {\n props.setMaintainConfig(e);\n }}\n disabled={props.isSetting || !props.canTouch}\n data-testid=\"oui-testid-setting-switch-btn\"\n />\n </AuthGuardTooltip>\n </Flex>\n </Card>\n\n {/* Kodiak custom: Trading Notifications master switch (controls toast + sound) */}\n <Card\n title={t(\"portfolio.setting.tradingNotifications\")}\n id=\"portfolio-trading-notification-setting\"\n className=\"oui-bg-base-9 oui-font-semibold oui-mt-3\"\n >\n <Flex\n direction={\"row\"}\n gap={4}\n width={\"100%\"}\n itemAlign={\"center\"}\n pt={4}\n className=\"oui-border-t-2 oui-border-line-6 oui-font-semibold\"\n >\n <Flex direction={\"column\"} itemAlign={\"start\"} className=\"oui-flex-1\">\n <Text intensity={54} size=\"sm\">\n {t(\"portfolio.setting.tradingNotifications.description\")}\n </Text>\n </Flex>\n\n <AuthGuardTooltip align=\"end\">\n <Switch\n checked={props.tradingToastAlert}\n onCheckedChange={(checked) => props.setTradingToastAlert(checked)}\n disabled={!props.canTouch}\n data-testid=\"oui-testid-setting-trading-notification-switch-btn\"\n />\n </AuthGuardTooltip>\n </Flex>\n </Card>\n\n {showSoundSetting && (\n <Card\n title={t(\"portfolio.setting.soundAlerts\")}\n id=\"portfolio-sound-alert-setting\"\n className=\"oui-bg-base-9 oui-font-semibold oui-mt-3\"\n >\n <Flex\n direction={\"column\"}\n gap={3}\n width={\"100%\"}\n pt={4}\n itemAlign={\"start\"}\n className=\"oui-border-t-2 oui-border-line-6 oui-font-semibold\"\n >\n <Flex direction={\"row\"} gap={4} width={\"100%\"} itemAlign={\"center\"}>\n <Flex\n direction={\"column\"}\n itemAlign={\"start\"}\n className=\"oui-flex-1\"\n >\n <Text intensity={54} size=\"sm\">\n {t(\"portfolio.setting.soundAlerts.description\")}\n </Text>\n </Flex>\n\n <AuthGuardTooltip align=\"end\">\n <Switch\n checked={props.soundAlert}\n onCheckedChange={(checked) => props.setSoundAlert(checked)}\n disabled={!props.canTouch}\n data-testid=\"oui-testid-setting-sound-switch-btn\"\n />\n </AuthGuardTooltip>\n </Flex>\n\n {props.hasSoundOptions &&\n props.soundOptions?.length &&\n props.soundAlert && (\n <AuthGuardTooltip align=\"end\">\n <Flex direction=\"row\" gap={3} className=\"oui-cursor-pointer\">\n {props.soundOptions.map((option) => {\n const sel = props.selectedSoundValue === option.value;\n return (\n <SoundRadioButton\n key={option.value}\n sel={sel}\n label={option.label}\n onCheckChange={() => {\n props.setSelectedSoundValue(option.value);\n props.setSoundAlert(Boolean(option.media));\n playPreview(option.media);\n }}\n />\n );\n })}\n </Flex>\n </AuthGuardTooltip>\n )}\n </Flex>\n </Card>\n )}\n\n <ThemeSettingCard\n themes={props.themes}\n currentThemeId={props.currentThemeId}\n setCurrentThemeId={props.setCurrentThemeId}\n classNames={{\n card: \"oui-bg-base-9 oui-font-semibold oui-mt-3\",\n content: \"oui-pt-4\",\n }}\n />\n </>\n );\n};\n","import { FC, SVGProps, useCallback, useRef, useState } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n Card,\n cn,\n Flex,\n Switch,\n Text,\n ChevronRightIcon,\n} from \"@kodiak-finance/orderly-ui\";\nimport { AuthGuardTooltip } from \"@kodiak-finance/orderly-ui-connector\";\nimport { LanguageSwitcherWidget } from \"@kodiak-finance/orderly-ui-scaffold\";\nimport { SoundRadioButton } from \"./components/soundRadioButton\";\nimport { ThemeSettingCard } from \"./components/themeSettingCard\";\nimport type { SettingScriptReturns } from \"./setting.script\";\n\ntype OrderPanelPosition = \"left\" | \"right\";\n\nexport const SettingMobile: FC<SettingScriptReturns> = (props) => {\n const { t } = useTranslation();\n const [open, setOpen] = useState<boolean>(false);\n const onLanguageChange = () => {\n setOpen(true);\n };\n\n // Kodiak custom: sound section only visible when trading toast is on\n const showSoundSetting =\n (props.hasOrderFilledMedia || props.hasSoundOptions) &&\n props.tradingToastAlert;\n\n const audioRef = useRef<HTMLAudioElement | null>(null);\n const playPreview = useCallback((media?: string) => {\n if (!media) return;\n try {\n if (!audioRef.current) {\n audioRef.current = new Audio();\n }\n const audio = audioRef.current;\n audio.pause();\n audio.currentTime = 0;\n audio.src = media;\n void audio.play().catch(() => undefined);\n } catch {\n // ignore runtime audio errors\n }\n }, []);\n\n const renderItem = (position: OrderPanelPosition) => {\n const isSelected = props.orderPanelLayout === position;\n const handleClick = () => props.setOrderPanelLayout(position);\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n handleClick();\n }\n };\n return (\n <Flex\n key={position}\n direction=\"column\"\n gapY={2}\n className=\"oui-group oui-flex-1 oui-cursor-pointer\"\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n role=\"button\"\n tabIndex={0}\n aria-pressed={isSelected}\n aria-label={`Layout ${position}`}\n >\n <Flex\n direction=\"column\"\n className={cn(\n \"oui-h-[160px] oui-w-[120px] oui-shrink-0 oui-overflow-hidden oui-rounded-[10px] oui-border-4 oui-border-base-5 oui-bg-base-10 oui-p-0.5\",\n \"group-hover:oui-border-base-4\",\n isSelected && \"!oui-border-primary-light\",\n )}\n >\n <Flex\n direction=\"row\"\n itemAlign=\"stretch\"\n className=\"oui-h-[152px] oui-shrink-0 oui-gap-0.5\"\n >\n {position === \"left\" ? (\n <>\n <OrderEntryStripIcon />\n <EmptyBlockIcon />\n </>\n ) : (\n <>\n <EmptyBlockIcon />\n <OrderEntryStripIcon />\n </>\n )}\n </Flex>\n <div className=\"oui-min-h-[4px] oui-flex-1 oui-bg-base-10\" />\n </Flex>\n <Text\n size=\"2xs\"\n intensity={54}\n className={cn(\n \"oui-text-center oui-text-base-contrast-54 group-hover:oui-text-base-contrast-80\",\n isSelected && \"oui-text-base-contrast-80\",\n )}\n >\n {position === \"left\"\n ? t(\"trading.layout.advanced.left\")\n : t(\"trading.layout.advanced.right\")}\n </Text>\n </Flex>\n );\n };\n\n return (\n <>\n <Flex mt={1} p={4} intensity={900} r=\"xl\" itemAlign=\"center\">\n <LanguageSwitcherWidget open={open} onOpenChange={setOpen} />\n <Flex\n className=\"oui-cursor-pointer\"\n itemAlign=\"center\"\n width=\"100%\"\n onClick={onLanguageChange}\n >\n <Text\n size=\"base\"\n weight=\"semibold\"\n intensity={80}\n className=\"oui-ml-2\"\n >\n {t(\"languageSwitcher.language\")}\n </Text>\n <ChevronRightIcon\n size={18}\n className=\"oui-ml-auto oui-text-base-contrast-36\"\n />\n </Flex>\n </Flex>\n\n <Card\n // @ts-ignore\n title={\n <div className=\"oui-text-sm\">\n {t(\"portfolio.setting.systemUpgrade\")}\n </div>\n }\n id=\"portfolio-apikey-manager\"\n className=\"oui-mt-2 oui-bg-base-9 oui-font-semibold\"\n classNames={{ root: \"oui-p-4\", content: \"!oui-pt-3\" }}\n >\n <Flex\n direction={\"row\"}\n gap={4}\n width={\"100%\"}\n itemAlign={\"center\"}\n pt={3}\n className=\"oui-border-t-2 oui-border-line-6 oui-font-semibold\"\n >\n <Flex\n direction={\"column\"}\n itemAlign={\"start\"}\n className=\"oui-flex-1 oui-gap-2\"\n >\n <Text intensity={80} size=\"xs\">\n {t(\"portfolio.setting.cancelOpenOrders\")}\n </Text>\n <Text intensity={36} size=\"2xs\" className=\"oui-font-normal\">\n {t(\"portfolio.setting.cancelOpenOrders.description\")}\n </Text>\n <AuthGuardTooltip>\n <Switch\n className=\"oui-mt-1\"\n checked={props.maintenance_cancel_orders}\n onCheckedChange={(e) => {\n props.setMaintainConfig(e);\n }}\n disabled={props.isSetting || !props.canTouch}\n data-testid=\"oui-testid-setting-switch-btn\"\n />\n </AuthGuardTooltip>\n </Flex>\n </Flex>\n </Card>\n\n {/* Kodiak custom: Trading Notifications master switch (controls toast + sound) */}\n <Card\n // @ts-ignore\n title={\n <div className=\"oui-text-sm\">\n {t(\"portfolio.setting.tradingNotifications\")}\n </div>\n }\n id=\"portfolio-trading-notification-setting\"\n className=\"oui-mt-2 oui-bg-base-9 oui-font-semibold\"\n classNames={{ root: \"oui-p-4\", content: \"!oui-pt-3\" }}\n >\n <Flex\n direction={\"row\"}\n gap={4}\n width={\"100%\"}\n itemAlign={\"center\"}\n pt={3}\n className=\"oui-border-t-2 oui-border-line-6 oui-font-semibold\"\n >\n <Flex\n direction={\"column\"}\n itemAlign={\"start\"}\n className=\"oui-flex-1 oui-gap-2\"\n >\n <Text intensity={36} size=\"2xs\" className=\"oui-font-normal\">\n {t(\"portfolio.setting.tradingNotifications.description\")}\n </Text>\n <AuthGuardTooltip>\n <Switch\n className=\"oui-mt-1\"\n checked={props.tradingToastAlert}\n onCheckedChange={(checked) => {\n props.setTradingToastAlert(checked);\n }}\n disabled={!props.canTouch}\n data-testid=\"oui-testid-setting-trading-notification-switch-btn\"\n />\n </AuthGuardTooltip>\n </Flex>\n </Flex>\n </Card>\n\n {showSoundSetting && (\n <Card\n // @ts-ignore\n title={\n <div className=\"oui-text-sm\">\n {t(\"portfolio.setting.soundAlerts\")}\n </div>\n }\n id=\"portfolio-sound-alert-setting\"\n className=\"oui-mt-2 oui-bg-base-9 oui-font-semibold\"\n classNames={{ root: \"oui-p-4\", content: \"!oui-pt-3\" }}\n >\n <Flex\n direction={\"row\"}\n gap={4}\n width={\"100%\"}\n itemAlign={\"center\"}\n pt={3}\n className=\"oui-border-t-2 oui-border-line-6 oui-font-semibold\"\n >\n <Flex\n direction={\"column\"}\n itemAlign={\"start\"}\n className=\"oui-flex-1 oui-gap-2\"\n >\n <Text intensity={36} size=\"2xs\" className=\"oui-font-normal\">\n {t(\"portfolio.setting.soundAlerts.description\")}\n </Text>\n <AuthGuardTooltip>\n <Switch\n className=\"oui-mt-1\"\n checked={props.soundAlert}\n onCheckedChange={(e) => {\n props.setSoundAlert(e);\n }}\n disabled={!props.canTouch}\n data-testid=\"oui-testid-setting-sound-switch-btn\"\n />\n </AuthGuardTooltip>\n\n {props.hasSoundOptions &&\n props.soundOptions?.length &&\n props.soundAlert && (\n <Flex direction=\"row\" gap={3} wrap=\"wrap\">\n {props.soundOptions.map((option) => {\n const sel = props.selectedSoundValue === option.value;\n return (\n <SoundRadioButton\n key={option.value}\n sel={sel}\n label={option.label}\n onCheckChange={() => {\n props.setSelectedSoundValue(option.value);\n props.setSoundAlert(Boolean(option.media));\n playPreview(option.media);\n }}\n />\n );\n })}\n </Flex>\n )}\n </Flex>\n </Flex>\n </Card>\n )}\n\n <ThemeSettingCard\n themes={props.themes}\n currentThemeId={props.currentThemeId}\n setCurrentThemeId={props.setCurrentThemeId}\n classNames={{\n card: \"oui-mt-2 oui-bg-base-9 oui-font-semibold oui-p-3\",\n content: \"oui-pt-3\",\n }}\n />\n\n <Card\n // @ts-ignore\n title={<div className=\"oui-text-sm\">{t(\"trading.layout\")}</div>}\n id=\"portfolio-order-panel-setting\"\n className=\"oui-mt-2 oui-bg-base-9 oui-font-semibold\"\n classNames={{ root: \"oui-p-4\", content: \"!oui-pt-3\" }}\n >\n <Flex\n direction=\"row\"\n gap={4}\n width=\"100%\"\n itemAlign=\"center\"\n pt={3}\n className=\"oui-border-t-2 oui-border-line-6 oui-font-semibold\"\n >\n {renderItem(\"left\")}\n {renderItem(\"right\")}\n </Flex>\n </Card>\n </>\n );\n};\n\nconst EmptyBlockIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"50\"\n height=\"80\"\n viewBox=\"0 0 50 80\"\n fill=\"currentColor\"\n className=\"oui-fill-base-7\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <rect width=\"50\" height=\"80\" rx=\"2\" />\n </svg>\n);\n\nconst OrderEntryStripIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"50\"\n height=\"80\"\n viewBox=\"0 0 50 80\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <rect width=\"50\" height=\"80\" rx=\"2\" fill=\"rgb(var(--oui-color-base-7))\" />\n <rect\n x=\"3\"\n y=\"3\"\n width=\"21\"\n height=\"11\"\n rx=\"2\"\n fill=\"rgb(var(--oui-color-success-darken))\"\n />\n <rect\n x=\"26\"\n y=\"3\"\n width=\"21\"\n height=\"11\"\n rx=\"2\"\n fill=\"rgb(var(--oui-color-danger-darken))\"\n />\n <rect\n x=\"3\"\n y=\"69\"\n width=\"44\"\n height=\"8\"\n rx=\"2\"\n fill=\"rgb(var(--oui-color-success-darken))\"\n />\n </svg>\n);\n","import { FC } from \"react\";\nimport { useScreen } from \"@kodiak-finance/orderly-ui\";\nimport { SettingScriptReturns } from \"./setting.script\";\nimport { SettingDesktop } from \"./setting.ui.desktop\";\nimport { SettingMobile } from \"./setting.ui.mobile\";\n\nexport const Setting: FC<SettingScriptReturns> = (props) => {\n const { isMobile } = useScreen();\n if (isMobile) {\n return (\n <div className=\"oui-px-3\">\n <SettingMobile {...props} />\n </div>\n );\n }\n return <SettingDesktop {...props} />;\n};\n","import React from \"react\";\nimport { useSettingScript } from \"./setting.script\";\nimport { Setting } from \"./setting.ui\";\n\nexport const SettingWidget: React.FC = () => {\n const state = useSettingScript();\n return <Setting {...state} />;\n};\n","import React from \"react\";\nimport { SettingWidget } from \"./setting.widget\";\n\nexport const SettingPage: React.FC = () => {\n return <SettingWidget />;\n};\n","export { AssetsPage } from \"./page\";\nexport {\n AssetsWidget,\n AssetsDataTableWidget,\n} from \"./assetsPage/assets.widget\";\nexport type { AssetsWidgetProps } from \"./assetsPage/assets.widget\";\nexport { AssetsTable, AssetsDataTable } from \"./assetsPage/assets.ui.desktop\";\nexport { AssetsTableMobile } from \"./assetsPage/assets.ui.mobile\";\n","import { useCallback, useEffect, useMemo } from \"react\";\nimport {\n useAccount,\n useCollateral,\n useLocalStorage,\n useIndexPricesStream,\n useAppStore,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { account } from \"@kodiak-finance/orderly-perp\";\nimport { useCanTrade, useDataTap } from \"@kodiak-finance/orderly-react-app\";\nimport { AccountStatusEnum, EMPTY_LIST } from \"@kodiak-finance/orderly-types\";\nimport { modal } from \"@kodiak-finance/orderly-ui\";\nimport {\n DepositAndWithdrawWithDialogId,\n TransferDialogId,\n} from \"@kodiak-finance/orderly-ui-transfer\";\nimport { Decimal, zero } from \"@kodiak-finance/orderly-utils\";\nimport { useAccountsData, useAssetsMultiFilter } from \"../../../hooks\";\nimport { useAssetTotalValue } from \"../../../hooks/useAssetTotalValue\";\nimport { ORDERLY_ASSETS_VISIBLE_KEY } from \"../type\";\nimport { useAssetsColumns } from \"./assets.column\";\n\nexport const useAssetsScript = () => {\n const [visible, setVisible] = useLocalStorage<boolean>(\n ORDERLY_ASSETS_VISIBLE_KEY,\n true,\n );\n\n const { state, subAccount, isMainAccount } = useAccount();\n const { holding = [] } = useCollateral();\n const { getIndexPrice } = useIndexPricesStream();\n\n const tokensInfo = useAppStore((state) => state.tokensInfo);\n\n const subAccounts = state.subAccounts ?? [];\n\n useEffect(() => {\n if (holding.length > 0) {\n subAccount.refresh();\n }\n }, [holding]);\n\n // Use the extracted total value hook\n const totalValue = useAssetTotalValue();\n\n const toggleVisible = () => {\n // @ts-ignore\n setVisible((visible: boolean) => !visible);\n };\n\n const assetsOptions = useMemo(() => {\n return tokensInfo?.map((item) => ({\n label: item.token,\n value: item.token,\n }));\n }, [tokensInfo]);\n\n // Use the extracted accounts data hook\n const allAccounts = useAccountsData();\n\n // Use the extracted account and asset filter hook\n const {\n selectedAccount,\n selectedAsset,\n filteredData: filtered,\n onFilter,\n } = useAssetsMultiFilter(allAccounts);\n\n // Enhanced filtered data with additional calculations for children\n const enhancedFiltered = useMemo(() => {\n return filtered.map((accountData) => {\n // Enhance each child (holding) with calculated fields\n const enhancedChildren =\n accountData.children?.map((holding) => {\n const tokenInfo = tokensInfo?.find(\n (item) => item.token === holding.token,\n );\n\n // Use extracted function for index price calculation\n const indexPrice = getIndexPrice(holding.token);\n\n // Use extracted function for asset value calculation\n const assetValue = new Decimal(holding.holding)\n .mul(indexPrice)\n .toNumber();\n\n // Calculate collateral ratio for this token\n const collateralRatio = tokenInfo\n ? account.collateralRatio({\n baseWeight: tokenInfo.base_weight ?? 0,\n discountFactor: tokenInfo.discount_factor ?? 0,\n collateralQty: holding.holding,\n collateralCap: tokenInfo?.user_max_qty ?? holding.holding,\n indexPrice: indexPrice,\n })\n : zero;\n\n // Calculate collateral contribution for this token\n const collateralContribution = account.collateralContribution({\n collateralQty: holding.holding,\n collateralCap: tokenInfo?.user_max_qty ?? holding.holding,\n collateralRatio: collateralRatio.toNumber(),\n indexPrice: indexPrice,\n });\n\n return {\n ...holding,\n indexPrice,\n assetValue,\n collateralRatio,\n collateralContribution,\n };\n }) || [];\n\n return {\n ...accountData,\n children: enhancedChildren,\n };\n });\n }, [filtered, getIndexPrice, tokensInfo]);\n\n const handleTransfer = useCallback((accountId: string, token: string) => {\n if (!accountId) {\n return;\n }\n modal.show(TransferDialogId, {\n toAccountId: accountId,\n token,\n });\n }, []);\n\n const handleConvert = (accountId: string, token: string) => {\n modal.show(\"ConvertDialogId\", {\n accountId,\n token,\n });\n };\n\n const showTransfer = isMainAccount ? subAccounts.length > 0 : true;\n\n const assetsColumns = useAssetsColumns({\n onTransfer: showTransfer ? handleTransfer : undefined,\n onConvert: handleConvert,\n });\n\n const openDepositAndWithdraw = useCallback(\n (viewName: \"deposit\" | \"withdraw\") => {\n modal.show(DepositAndWithdrawWithDialogId, {\n activeTab: viewName,\n });\n },\n [],\n );\n\n const onDeposit = useCallback(() => {\n openDepositAndWithdraw(\"deposit\");\n }, []);\n\n const onWithdraw = useCallback(() => {\n openDepositAndWithdraw(\"withdraw\");\n }, []);\n\n // Use enhanced filtered data with calculated children\n const dataSource = useDataTap(enhancedFiltered, {\n accountStatus:\n state.status === AccountStatusEnum.EnableTradingWithoutConnected\n ? AccountStatusEnum.EnableTradingWithoutConnected\n : AccountStatusEnum.EnableTrading,\n });\n\n const canTrade = useCanTrade();\n\n return {\n columns: assetsColumns,\n dataSource,\n visible: visible as boolean,\n onToggleVisibility: toggleVisible,\n selectedAccount,\n selectedAsset,\n onFilter,\n totalValue,\n hasSubAccount: subAccounts.length > 0,\n onDeposit,\n onWithdraw,\n holding,\n assetsOptions: assetsOptions ?? EMPTY_LIST,\n canTrade,\n };\n};\n\nexport type useAssetsScriptReturn = ReturnType<typeof useAssetsScript> &\n ReturnType<typeof useAccount>;\n","import React from \"react\";\nimport { useAppStore } from \"@kodiak-finance/orderly-hooks\";\nimport { useWalletConnector } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { ChainNamespace } from \"@kodiak-finance/orderly-types\";\nimport { Button, Flex, Text, TokenIcon } from \"@kodiak-finance/orderly-ui\";\nimport type { Column } from \"@kodiak-finance/orderly-ui\";\n\nexport interface ColumnsOptions {\n onTransfer?: (accountId: string, token: string) => void;\n onConvert?: (accountId: string, token: string) => void;\n}\n\n// Define the enhanced holding interface with calculated fields\ninterface EnhancedHolding {\n token: string;\n holding: number;\n indexPrice: number;\n assetValue: number;\n collateralRatio: number;\n collateralContribution: number;\n account_id: string;\n}\n\nexport const useAssetsColumns = (options: ColumnsOptions) => {\n const { t } = useTranslation();\n const tokensInfo = useAppStore((state) => state.tokensInfo);\n const { namespace } = useWalletConnector();\n const { onTransfer, onConvert } = options;\n const columns = React.useMemo<Column[]>(() => {\n return [\n {\n title: t(\"portfolio.overview.column.token\"),\n dataIndex: \"token\",\n align: \"left\",\n width: 150,\n render(val: string) {\n return (\n <Flex itemAlign=\"center\" gap={2}>\n <TokenIcon name={val} />\n {val}\n </Flex>\n );\n },\n },\n {\n title: t(\"portfolio.overview.column.qty\"),\n dataIndex: \"holding\",\n align: \"left\",\n width: 140,\n render(val: number, record) {\n const findToken = tokensInfo?.find(\n ({ token }) => token === record.token,\n );\n return (\n <Text.numeral dp={findToken?.decimals ?? 6} padding={false}>\n {val}\n </Text.numeral>\n );\n },\n },\n {\n title: t(\"portfolio.overview.column.indexPrice\"),\n dataIndex: \"indexPrice\",\n align: \"left\",\n width: 140,\n render(val: number) {\n return (\n <Text.numeral rule=\"price\" dp={6} currency=\"$\" padding={false}>\n {val}\n </Text.numeral>\n );\n },\n },\n {\n title: t(\"portfolio.overview.column.assetValue\"),\n dataIndex: \"assetValue\",\n align: \"left\",\n width: 140,\n render(val: number) {\n return (\n <Text.assetValue rule=\"price\" dp={6} currency=\"$\" padding={false}>\n {val}\n </Text.assetValue>\n );\n },\n },\n {\n title: t(\"portfolio.overview.column.collateralRatio\"),\n dataIndex: \"collateralRatio\",\n align: \"left\",\n width: 140,\n render(val: number) {\n return (\n <Text.numeral dp={2} suffix=\"%\">\n {val * 100}\n </Text.numeral>\n );\n },\n },\n {\n title: t(\"transfer.deposit.collateralContribution\"),\n dataIndex: \"collateralContribution\",\n align: \"left\",\n width: 140,\n render(val: number) {\n return (\n <Text.collateral rule=\"price\" dp={6} currency=\"$\" padding={false}>\n {val}\n </Text.collateral>\n );\n },\n },\n {\n title: null,\n dataIndex: \"account_id\",\n align: \"center\",\n width: 180,\n render(id: string, record: EnhancedHolding) {\n const { token } = record;\n return (\n <Flex itemAlign=\"center\" justify=\"end\" gap={3}>\n {token !== \"USDC\" &&\n namespace !== ChainNamespace.solana &&\n typeof onConvert === \"function\" && (\n <Button\n size={\"sm\"}\n variant={\"outlined\"}\n color={\"secondary\"}\n onClick={() => onConvert?.(id, token)}\n >\n {t(\"transfer.convert\")}\n </Button>\n )}\n {typeof onTransfer === \"function\" && (\n <Button\n size={\"sm\"}\n variant={\"outlined\"}\n color={\"secondary\"}\n onClick={() => onTransfer?.(id, token)}\n >\n {t(\"common.transfer\")}\n </Button>\n )}\n </Flex>\n );\n },\n },\n ];\n }, [t, tokensInfo, onTransfer, onConvert, namespace]);\n return columns;\n};\n","import React from \"react\";\nimport { useAccount } from \"@kodiak-finance/orderly-hooks\";\nimport { DataTableClassNames, useScreen } from \"@kodiak-finance/orderly-ui\";\nimport { useAssetsScript } from \"./assets.script\";\nimport type { useAssetsScriptReturn } from \"./assets.script\";\nimport { AssetsDataTable, AssetsTable } from \"./assets.ui.desktop\";\nimport { AssetsTableMobile } from \"./assets.ui.mobile\";\n\nexport type AssetsWidgetProps = useAssetsScriptReturn;\n\nexport type AssetsDataTableWidgetProps = {\n classNames?: {\n root?: string;\n desc?: string;\n scrollRoot?: string;\n };\n tbClassName?: string;\n dataTableClassNames?: DataTableClassNames;\n};\n\nexport const AssetsDataTableWidget: React.FC<AssetsDataTableWidgetProps> = (\n props,\n) => {\n const assetsState = useAssetsScript();\n const accountState = useAccount();\n return <AssetsDataTable {...assetsState} {...accountState} {...props} />;\n};\n\nexport const AssetsWidget: React.FC = () => {\n const assetsState = useAssetsScript();\n const accountState = useAccount();\n const { isMobile } = useScreen();\n if (isMobile) {\n return <AssetsTableMobile {...assetsState} {...accountState} />;\n }\n return <AssetsTable {...assetsState} {...accountState} />;\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useMemo } from \"react\";\nimport { useWalletConnector } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { ChainNamespace } from \"@kodiak-finance/orderly-types\";\nimport {\n Button,\n cn,\n TokenIcon,\n Text,\n formatAddress,\n DataFilter,\n modal,\n Flex,\n EmptyDataState,\n} from \"@kodiak-finance/orderly-ui\";\nimport { SelectOption } from \"@kodiak-finance/orderly-ui/src/select/withOptions\";\nimport type { useAssetsScriptReturn } from \"./assets.script\";\nimport { AccountType } from \"./assets.ui.desktop\";\n\nconst AccountTag: React.FC<{ name: string }> = ({ name }) => {\n return (\n <div className=\"oui-mt-2 oui-flex oui-h-[18px] oui-w-fit oui-items-center oui-rounded oui-bg-base-contrast-6 oui-px-2 oui-text-2xs oui-font-semibold oui-text-base-contrast-36\">\n {name}\n </div>\n );\n};\n\ntype AssetMobileItemProps = {\n item: any;\n};\n\nconst AssetMobileItem: React.FC<AssetMobileItemProps> = (props) => {\n const { item } = props;\n const { t } = useTranslation();\n const { namespace } = useWalletConnector();\n return (\n <div className=\"oui-flex oui-flex-col oui-gap-2 oui-rounded-xl oui-bg-base-9 oui-p-2\">\n <Flex\n width={\"100%\"}\n justify={\"between\"}\n itemAlign={\"center\"}\n className=\"oui-gap-x-0.5\"\n >\n <Flex\n className=\"oui-w-1/3 oui-truncate\"\n itemAlign={\"start\"}\n direction={\"column\"}\n >\n <div className=\"oui-text-2xs oui-font-semibold oui-text-base-contrast-36\">\n {t(\"common.token\")}\n </div>\n <Flex\n gap={1}\n justify={\"start\"}\n itemAlign={\"center\"}\n className=\"oui-text-xs oui-font-semibold oui-text-base-contrast-80\"\n >\n <TokenIcon name={item.token} size=\"2xs\" />\n {item.token}\n </Flex>\n </Flex>\n <Flex\n className=\"oui-w-1/3 oui-truncate\"\n itemAlign={\"start\"}\n direction={\"column\"}\n >\n <div className=\"oui-text-2xs oui-font-semibold oui-text-base-contrast-36\">\n {t(\"common.qty\")}\n </div>\n <Text.numeral\n className=\"oui-truncate\"\n size=\"xs\"\n dp={6}\n padding={false}\n >\n {item.holding}\n </Text.numeral>\n </Flex>\n <Flex\n className=\"oui-w-1/3 oui-truncate\"\n itemAlign={\"start\"}\n direction={\"column\"}\n >\n <div className=\"oui-w-full oui-text-end oui-text-2xs oui-font-semibold oui-text-base-contrast-36\">\n {t(\"common.indexPrice\")}\n </div>\n <Flex\n gap={1}\n width={\"100%\"}\n justify={\"end\"}\n itemAlign={\"center\"}\n className=\"oui-text-end oui-font-semibold oui-text-base-contrast-80\"\n >\n <Text.numeral\n size=\"xs\"\n rule=\"price\"\n dp={6}\n currency=\"$\"\n padding={false}\n >\n {item.indexPrice}\n </Text.numeral>\n <div className=\"oui-text-end oui-text-2xs oui-text-base-contrast-36\">\n USDC\n </div>\n </Flex>\n </Flex>\n </Flex>\n <Flex\n width={\"100%\"}\n justify={\"between\"}\n itemAlign={\"center\"}\n className=\"oui-gap-x-0.5\"\n >\n <Flex\n className=\"oui-w-1/3 oui-truncate\"\n itemAlign={\"start\"}\n direction={\"column\"}\n >\n <div className=\"oui-text-2xs oui-font-semibold oui-text-base-contrast-36\">\n {t(\"portfolio.overview.column.assetValue\")}\n </div>\n <Text.assetValue\n size=\"xs\"\n intensity={80}\n className=\"oui-truncate oui-font-semibold\"\n rule=\"price\"\n dp={6}\n currency=\"$\"\n padding={false}\n >\n {item.assetValue}\n </Text.assetValue>\n </Flex>\n <Flex\n className=\"oui-w-1/3 oui-truncate\"\n itemAlign={\"start\"}\n direction={\"column\"}\n >\n <div className=\"oui-text-2xs oui-font-semibold oui-text-base-contrast-36\">\n {t(\"portfolio.overview.column.collateralRatio\")}\n </div>\n <Text.numeral size=\"xs\" dp={2} suffix=\"%\">\n {item.collateralRatio * 100}\n </Text.numeral>\n </Flex>\n <Flex\n className=\"oui-w-1/3 oui-truncate\"\n itemAlign={\"start\"}\n direction={\"column\"}\n >\n <div className=\"oui-w-full oui-text-end oui-text-2xs oui-font-semibold oui-text-base-contrast-36\">\n {t(\"transfer.deposit.collateralContribution\")}\n </div>\n <Flex\n gap={1}\n width={\"100%\"}\n justify={\"end\"}\n itemAlign={\"center\"}\n className=\"oui-text-end oui-font-semibold oui-text-base-contrast-80\"\n >\n <Text.collateral\n size=\"xs\"\n rule=\"price\"\n dp={6}\n currency=\"$\"\n padding={false}\n >\n {item.collateralContribution}\n </Text.collateral>\n <div className=\"oui-text-end oui-text-2xs oui-text-base-contrast-36\">\n USDC\n </div>\n </Flex>\n </Flex>\n </Flex>\n <Flex justify={\"between\"} itemAlign={\"center\"} gap={2}>\n {item.token !== \"USDC\" && namespace !== ChainNamespace.solana && (\n <Button\n fullWidth\n variant=\"outlined\"\n size=\"sm\"\n color=\"gray\"\n onClick={() => {\n modal.show(\"ConvertSheetId\", {\n accountId: item.account_id,\n token: item.token,\n });\n }}\n className={cn(\n \"oui-flex-1 oui-border-base-contrast-36 oui-text-base-contrast-54\",\n )}\n >\n {t(\"transfer.convert\")}\n </Button>\n )}\n <Button\n fullWidth\n variant=\"outlined\"\n size=\"sm\"\n color=\"gray\"\n onClick={() => {\n modal.show(\"TransferSheetId\", {\n accountId: item.account_id,\n token: item.token,\n });\n }}\n className={cn(\n \"oui-flex-1 oui-border-base-contrast-36 oui-text-base-contrast-54\",\n )}\n >\n {t(\"common.transfer\")}\n </Button>\n </Flex>\n </div>\n );\n};\n\nexport const AssetsTableMobile: React.FC<useAssetsScriptReturn> = (props) => {\n const { t } = useTranslation();\n\n const {\n assetsOptions,\n state,\n isMainAccount,\n dataSource,\n selectedAccount,\n selectedAsset,\n onFilter,\n } = props;\n\n const subAccounts = state.subAccounts ?? [];\n\n const ALL_ACCOUNTS: SelectOption = {\n label: t(\"common.allAccount\"),\n value: AccountType.ALL,\n };\n\n const MAIN_ACCOUNT: SelectOption = {\n label: t(\"common.mainAccount\"),\n value: AccountType.MAIN,\n };\n\n const ALL_ASSETS: SelectOption = {\n label: t(\"common.allAssets\"),\n value: \"all\",\n };\n\n const memoizedOptions = useMemo(() => {\n if (Array.isArray(subAccounts) && subAccounts.length) {\n return [\n ALL_ACCOUNTS,\n MAIN_ACCOUNT,\n ...subAccounts.map<SelectOption>((value) => ({\n value: value.id,\n label: value?.description || formatAddress(value?.id),\n })),\n ];\n }\n return [ALL_ACCOUNTS, MAIN_ACCOUNT];\n }, [subAccounts]);\n\n // Create asset options from holding data - optimized and consistent with desktop\n const memoizedAssets = useMemo(() => {\n return [ALL_ASSETS, ...assetsOptions];\n }, [assetsOptions]);\n\n if (!props.canTrade) {\n return (\n <Flex\n direction={\"column\"}\n height={\"100%\"}\n itemAlign={\"center\"}\n justify={\"center\"}\n mt={10}\n >\n <EmptyDataState />\n </Flex>\n );\n }\n\n return (\n <div className={cn(\"oui-flex oui-flex-col oui-gap-1 oui-px-1 oui-pb-4\")}>\n {isMainAccount && (\n <DataFilter\n onFilter={onFilter}\n className=\"oui-border-none oui-py-2\"\n items={[\n {\n size: \"sm\",\n type: \"picker\",\n name: \"account\",\n value: selectedAccount,\n options: memoizedOptions,\n },\n {\n size: \"sm\",\n type: \"picker\",\n name: \"asset\",\n value: selectedAsset,\n options: memoizedAssets,\n },\n ]}\n />\n )}\n <div className=\"oui-flex oui-flex-col oui-gap-1\">\n {dataSource?.map((assets, index) => {\n return (\n <React.Fragment key={`item-${index}`}>\n <AccountTag name={assets.description ?? \"sub account\"} />\n {Array.isArray(assets.children) &&\n assets.children.map((child) => (\n <AssetMobileItem\n item={child}\n key={`${child.token}-${child.account_id}`}\n />\n ))}\n </React.Fragment>\n );\n })}\n </div>\n </div>\n );\n};\n","import React from \"react\";\nimport { AssetsWidget } from \"./assetsPage/assets.widget\";\nimport type { AssetsWidgetProps } from \"./assetsPage/assets.widget\";\n\nexport type AssetsPageProps = AssetsWidgetProps;\n\nexport const AssetsPage: React.FC = () => {\n return <AssetsWidget />;\n};\n","export { HistoryPage } from \"./history.page\";\nexport { HistoryWidget } from \"./history.page\";\n","import React from \"react\";\nimport { HistoryDataGroupWidget } from \"../overview/historyDataGroup\";\n\nexport const HistoryWidget: React.FC = () => {\n return <HistoryDataGroupWidget />;\n};\n\nexport const HistoryPage: React.FC = () => {\n return <HistoryDataGroupWidget />;\n};\n","export { SymbolPerformancePage } from \"./page\";\nexport { SymbolPerformanceWidget } from \"./symbolPerformance.widget\";\nexport { SymbolPerformanceUI } from \"./symbolPerformance.ui\";\nexport { useSymbolPerformanceScript } from \"./symbolPerformance.script\";\nexport type {\n UseSymbolPerformanceScriptReturn,\n Timeframe,\n} from \"./symbolPerformance.script\";\n","import { useMemo } from \"react\";\nimport { addDays } from \"date-fns\";\nimport type { TradeData } from \"./useTrades\";\n\nexport interface SymbolPerformanceMetrics {\n totalPnL: number;\n grossPnL: number;\n totalVolume: number;\n totalFees: number;\n totalTrades: number;\n makerShare: number;\n // daily data\n dailyData: Array<{\n date: string;\n pnl: number;\n grossPnl: number;\n volume: number;\n fees: number;\n }>;\n cumulativeDailyPnL: Array<{ date: string; cumulativePnl: number }>;\n cumulativeDailyFees: Array<{ date: string; cumulativeFees: number }>;\n cumulativeDailyVolume: Array<{ date: string; cumulativeVolume: number }>;\n // hourly data\n hourlyData: Array<{\n date: string;\n pnl: number;\n grossPnl: number;\n fees: number;\n volume: number;\n }>;\n cumulativeHourlyPnL: Array<{ date: string; cumulativePnl: number }>;\n cumulativeHourlyFees: Array<{ date: string; cumulativeFees: number }>;\n cumulativeHourlyVolume: Array<{ date: string; cumulativeVolume: number }>;\n // 15-minute data\n fifteenMinuteData: Array<{\n date: string;\n pnl: number;\n grossPnl: number;\n fees: number;\n volume: number;\n }>;\n cumulativeFifteenMinutePnL: Array<{ date: string; cumulativePnl: number }>;\n cumulativeFifteenMinuteFees: Array<{ date: string; cumulativeFees: number }>;\n cumulativeFifteenMinuteVolume: Array<{\n date: string;\n cumulativeVolume: number;\n }>;\n}\n\n/**\n * Generic function to fill gaps in aggregated time-series data.\n * Ensures complete coverage of the date range with zero values for missing periods.\n *\n * @param dataMap - Map of aggregated data keyed by ISO datetime string\n * @param startDate - Start of the period\n * @param endDate - End of the period\n * @param incrementFn - Function to increment the current date\n * @param getKeyFn - Function to extract the key from current date\n * @returns Array of filled data points\n */\nconst fillTimeSeriesGaps = (\n dataMap: Map<\n string,\n { pnl: number; grossPnl: number; volume: number; fees: number }\n >,\n startDate: Date,\n endDate: Date,\n incrementFn: (date: Date) => void,\n getKeyFn: (date: Date) => string,\n) => {\n const filledData: Array<{\n date: string;\n pnl: number;\n grossPnl: number;\n volume: number;\n fees: number;\n }> = [];\n\n const current = new Date(startDate);\n current.setUTCHours(0, 0, 0, 0);\n\n while (current <= endDate) {\n const key = getKeyFn(current);\n const data = dataMap.get(key) || {\n pnl: 0,\n grossPnl: 0,\n volume: 0,\n fees: 0,\n };\n filledData.push({ date: key, ...data });\n incrementFn(current);\n }\n\n return filledData;\n};\n\n// Helper function to fill daily gaps\nconst fillDailyGaps = (\n dailyMap: Map<\n string,\n { pnl: number; grossPnl: number; volume: number; fees: number }\n >,\n startDate: Date,\n endDate: Date,\n) => {\n return fillTimeSeriesGaps(\n dailyMap,\n startDate,\n endDate,\n (date) => date.setUTCDate(date.getUTCDate() + 1),\n (date) => date.toISOString().split(\"T\")[0],\n );\n};\n\n// Helper function to fill hourly gaps\nconst fillHourlyGaps = (\n hourlyMap: Map<\n string,\n { pnl: number; grossPnl: number; volume: number; fees: number }\n >,\n startDate: Date,\n endDate: Date,\n) => {\n return fillTimeSeriesGaps(\n hourlyMap,\n startDate,\n endDate,\n (date) => date.setUTCHours(date.getUTCHours() + 1),\n (date) => date.toISOString(),\n );\n};\n\n// Helper function to fill 15-minute gaps\nconst fillFifteenMinuteGaps = (\n fifteenMinMap: Map<\n string,\n { pnl: number; grossPnl: number; volume: number; fees: number }\n >,\n startDate: Date,\n endDate: Date,\n) => {\n return fillTimeSeriesGaps(\n fifteenMinMap,\n startDate,\n endDate,\n (date) => date.setUTCMinutes(date.getUTCMinutes() + 15),\n (date) => date.toISOString(),\n );\n};\n\nexport const useSymbolPerformanceData = (\n tradesData: TradeData[] | null,\n periodStartDate?: Date,\n periodEndDate?: Date,\n): SymbolPerformanceMetrics | null => {\n return useMemo(() => {\n if (!tradesData || tradesData.length === 0) {\n return null;\n }\n\n // Process trades - realized_pnl from the API is gross (before fees)\n const tradesWithPnL = tradesData.map((trade) => {\n const volume = Math.abs(trade.executed_quantity * trade.executed_price);\n const fees = trade.fee || 0;\n const grossPnl = trade.realized_pnl || 0;\n const netPnl = grossPnl - fees;\n\n return {\n ...trade,\n pnl: netPnl,\n grossPnl,\n volume,\n fees,\n date: new Date(trade.executed_timestamp),\n };\n });\n\n // Calculate metrics\n const totalPnL = tradesWithPnL.reduce((sum, trade) => sum + trade.pnl, 0);\n const totalVolume = tradesWithPnL.reduce(\n (sum, trade) => sum + trade.volume,\n 0,\n );\n const totalFees = tradesWithPnL.reduce((sum, trade) => sum + trade.fees, 0);\n const totalTrades = tradesWithPnL.length;\n const grossPnL = tradesWithPnL.reduce(\n (sum, trade) => sum + trade.grossPnl,\n 0,\n );\n\n // Use provided period dates or fall back to trade dates\n const sortedByDate = [...tradesWithPnL].sort(\n (a, b) => a.date.getTime() - b.date.getTime(),\n );\n const startDate = periodStartDate || sortedByDate[0].date;\n const endDate = periodEndDate || sortedByDate[sortedByDate.length - 1].date;\n\n // Calculate maker volume share\n const makerVolume = tradesData\n .filter((trade) => trade.is_maker === 1)\n .reduce(\n (sum, trade) =>\n sum + Math.abs(trade.executed_quantity * trade.executed_price),\n 0,\n );\n const makerShare = totalVolume > 0 ? (makerVolume / totalVolume) * 100 : 0;\n\n // Group by day for daily PnL, Volume, and Fees\n const dailyPnLMap = new Map<\n string,\n { pnl: number; grossPnl: number; volume: number; fees: number }\n >();\n tradesWithPnL.forEach((trade) => {\n const dateKey = trade.date.toISOString().split(\"T\")[0];\n const existing = dailyPnLMap.get(dateKey) || {\n pnl: 0,\n grossPnl: 0,\n volume: 0,\n fees: 0,\n };\n dailyPnLMap.set(dateKey, {\n pnl: existing.pnl + trade.pnl,\n grossPnl: existing.grossPnl + trade.grossPnl,\n volume: existing.volume + trade.volume,\n fees: existing.fees + trade.fees,\n });\n });\n\n // Fill gaps in daily data\n const dailyData = fillDailyGaps(dailyPnLMap, startDate, endDate);\n\n // Group by hour for hourly PnL and Fees\n const hourlyDataMap = new Map<\n string,\n { pnl: number; grossPnl: number; fees: number; volume: number }\n >();\n tradesWithPnL.forEach((trade) => {\n // Format: YYYY-MM-DDTHH:00:00.000Z\n // setMinutes(0, 0, 0) normalizes minutes, seconds, and milliseconds to 0\n // This ensures all trades within the same hour share the same key regardless of seconds/milliseconds\n const date = new Date(trade.date);\n date.setUTCMinutes(0, 0, 0);\n const hourKey = date.toISOString();\n const existing = hourlyDataMap.get(hourKey) || {\n pnl: 0,\n grossPnl: 0,\n fees: 0,\n volume: 0,\n };\n hourlyDataMap.set(hourKey, {\n pnl: existing.pnl + trade.pnl,\n grossPnl: existing.grossPnl + trade.grossPnl,\n fees: existing.fees + trade.fees,\n volume: existing.volume + trade.volume,\n });\n });\n\n // Check if this is a single-day selection\n const isSingleDay = startDate.getTime() === endDate.getTime();\n\n // Calculate the next calendar day start time (00:00 UTC of the next day)\n const nextDayDate = addDays(startDate, 1);\n const nextDayStartTime = new Date(\n nextDayDate.getUTCFullYear(),\n nextDayDate.getUTCMonth(),\n nextDayDate.getUTCDate(),\n 0,\n 0,\n 0,\n 0,\n ).getTime();\n\n // For single-day: create buckets that span the full calendar day\n // For multi-day: use the provided date range as-is\n const bucketEndDate = isSingleDay ? addDays(startDate, 1) : endDate;\n\n // Fill gaps in hourly data\n let hourlyData = fillHourlyGaps(hourlyDataMap, startDate, bucketEndDate);\n // For single-day selections only, remove any entries from the next day\n if (isSingleDay) {\n hourlyData = hourlyData.filter(\n (item) => new Date(item.date).getTime() < nextDayStartTime,\n );\n }\n\n // Group by 15 minutes for 15-minute PnL, Fees, and Volume\n const fifteenMinuteDataMap = new Map<\n string,\n { pnl: number; grossPnl: number; fees: number; volume: number }\n >();\n tradesWithPnL.forEach((trade) => {\n const date = new Date(trade.date);\n // Round down to the nearest 15-minute interval (0, 15, 30, 45)\n const minutes = date.getUTCMinutes();\n const roundedMinutes = Math.floor(minutes / 15) * 15;\n // setMinutes(roundedMinutes, 0, 0) normalizes seconds and milliseconds to 0\n // This ensures all trades within the same 15-minute window share the same key regardless of seconds/milliseconds\n date.setUTCMinutes(roundedMinutes, 0, 0);\n const fifteenMinKey = date.toISOString();\n const existing = fifteenMinuteDataMap.get(fifteenMinKey) || {\n pnl: 0,\n grossPnl: 0,\n fees: 0,\n volume: 0,\n };\n fifteenMinuteDataMap.set(fifteenMinKey, {\n pnl: existing.pnl + trade.pnl,\n grossPnl: existing.grossPnl + trade.grossPnl,\n fees: existing.fees + trade.fees,\n volume: existing.volume + trade.volume,\n });\n });\n\n // Fill gaps in 15-minute data\n let fifteenMinuteData = fillFifteenMinuteGaps(\n fifteenMinuteDataMap,\n startDate,\n bucketEndDate,\n );\n // For single-day selections only, remove any entries from the next day\n if (isSingleDay) {\n fifteenMinuteData = fifteenMinuteData.filter(\n (item) => new Date(item.date).getTime() < nextDayStartTime,\n );\n }\n\n // Calculate cumulative PnL\n let _pnl = 0;\n const cumulativeDailyPnL = dailyData.map((day) => {\n _pnl += day.pnl;\n return {\n date: day.date,\n cumulativePnl: _pnl,\n };\n });\n\n let _fees = 0;\n const cumulativeDailyFees = dailyData.map((day) => {\n _fees += day.fees;\n return {\n date: day.date,\n cumulativeFees: _fees,\n };\n });\n let _volume = 0;\n const cumulativeDailyVolume = dailyData.map((day) => {\n _volume += day.volume;\n return {\n date: day.date,\n cumulativeVolume: _volume,\n };\n });\n _pnl = 0;\n const cumulativeHourlyPnL = hourlyData.map((hour) => {\n _pnl += hour.pnl;\n return {\n date: hour.date,\n cumulativePnl: _pnl,\n };\n });\n _fees = 0;\n const cumulativeHourlyFees = hourlyData.map((hour) => {\n _fees += hour.fees;\n return {\n date: hour.date,\n cumulativeFees: _fees,\n };\n });\n _volume = 0;\n const cumulativeHourlyVolume = hourlyData.map((hour) => {\n _volume += hour.volume;\n return {\n date: hour.date,\n cumulativeVolume: _volume,\n };\n });\n\n // Calculate cumulative 15-minute data\n _pnl = 0;\n const cumulativeFifteenMinutePnL = fifteenMinuteData.map((fifteenMin) => {\n _pnl += fifteenMin.pnl;\n return {\n date: fifteenMin.date,\n cumulativePnl: _pnl,\n };\n });\n\n _fees = 0;\n const cumulativeFifteenMinuteFees = fifteenMinuteData.map((fifteenMin) => {\n _fees += fifteenMin.fees;\n return {\n date: fifteenMin.date,\n cumulativeFees: _fees,\n };\n });\n\n _volume = 0;\n const cumulativeFifteenMinuteVolume = fifteenMinuteData.map(\n (fifteenMin) => {\n _volume += fifteenMin.volume;\n return {\n date: fifteenMin.date,\n cumulativeVolume: _volume,\n };\n },\n );\n\n return {\n totalPnL,\n grossPnL,\n totalVolume,\n totalFees,\n totalTrades,\n makerShare,\n\n // daily data\n dailyData,\n cumulativeDailyPnL,\n cumulativeDailyFees,\n cumulativeDailyVolume,\n\n // hourly data\n hourlyData,\n cumulativeHourlyPnL,\n cumulativeHourlyFees,\n cumulativeHourlyVolume,\n\n // 15-minute data\n fifteenMinuteData,\n cumulativeFifteenMinutePnL,\n cumulativeFifteenMinuteFees,\n cumulativeFifteenMinuteVolume,\n };\n }, [tradesData, periodStartDate, periodEndDate]);\n};\n","import { useMemo, useEffect, useRef } from \"react\";\nimport { usePrivateInfiniteQuery } from \"@kodiak-finance/orderly-hooks\";\n\nexport interface TradeData {\n id: number;\n symbol: string;\n fee: number;\n fee_asset: string;\n side: \"BUY\" | \"SELL\";\n order_id: number;\n executed_price: number;\n executed_quantity: number;\n executed_timestamp: number;\n is_maker: number;\n realized_pnl: number;\n match_id: string;\n}\n\nexport interface TradesResponse {\n rows: TradeData[];\n meta: {\n total: number;\n records_per_page: number;\n current_page: number;\n };\n}\n\nexport const useTrades = (params: {\n symbol?: string;\n start_t?: number;\n end_t?: number;\n size?: number;\n}) => {\n const { symbol, start_t, end_t, size = 500 } = params;\n\n const getKey = useMemo(() => {\n return (pageIndex: number, previousPageData: any): string | null => {\n if (previousPageData) {\n // Use meta.total from API to determine if there's more data to fetch\n const total = previousPageData.meta?.total ?? 0;\n const alreadyFetched = pageIndex * size;\n\n // Stop if we've already fetched all available trades according to the API\n if (alreadyFetched >= total) {\n return null;\n }\n\n // Fallback: stop if current page has fewer items than requested\n if (previousPageData.rows.length < size) {\n return null;\n }\n }\n\n const search = new URLSearchParams();\n search.set(\"size\", size.toString());\n search.set(\"page\", `${pageIndex + 1}`);\n if (symbol) {\n search.set(\"symbol\", symbol);\n }\n if (start_t) {\n search.set(\"start_t\", start_t.toString());\n }\n if (end_t) {\n search.set(\"end_t\", end_t.toString());\n }\n const url = `/v1/trades?${search.toString()}`;\n return url;\n };\n }, [symbol, start_t, end_t, size]);\n\n const result = usePrivateInfiniteQuery<TradesResponse>(getKey, {\n formatter: (data) => data,\n revalidateOnFocus: true,\n keepPreviousData: true,\n });\n\n const timeoutRef = useRef<NodeJS.Timeout>();\n\n // Auto-fetch all pages with rate limiting (10 requests per 1 second = 100ms minimum between requests)\n useEffect(() => {\n if (!result.data) return;\n\n const lastPage = result.data[result.data.length - 1];\n\n // Check if there's more data to fetch (when last page has full size)\n if (lastPage && lastPage.rows.length === size) {\n // Capture next page size before scheduling to avoid stale closure\n const nextPageSize = result.data.length + 1;\n\n // Schedule next fetch with 100ms delay to respect rate limit\n timeoutRef.current = setTimeout(() => {\n result.setSize(nextPageSize);\n }, 100);\n }\n\n return () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n };\n }, [result.data, size]);\n\n // Clear pending pagination fetch when filters change to prevent mixed data states\n useEffect(() => {\n return () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n };\n }, [symbol, start_t, end_t]);\n\n // Flatten all trades from paginated response\n const trades = useMemo(() => {\n if (!result.data) return [];\n return result.data\n .map((page) => page.rows)\n .flat()\n .filter((trade): trade is TradeData => trade !== undefined);\n }, [result.data]);\n\n return {\n trades,\n isLoading: result.isLoading,\n error: result.error,\n mutate: result.mutate,\n };\n};\n","import { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { differenceInDays, subDays, format } from \"date-fns\";\nimport { useAccount } from \"@kodiak-finance/orderly-hooks\";\nimport { useAppContext } from \"@kodiak-finance/orderly-react-app\";\nimport { AccountStatusEnum } from \"@kodiak-finance/orderly-types\";\nimport { useSymbolPerformanceData } from \"./useSymbolPerformanceData\";\nimport { useTrades } from \"./useTrades\";\n\nexport enum PeriodType {\n DAY = \"1D\",\n WEEK = \"7D\",\n MONTH = \"30D\",\n QUARTER = \"90D\",\n}\n\nexport enum AggregationWindow {\n FIFTEEN_MIN = \"15m\",\n HOURLY = \"1h\",\n DAILY = \"1d\",\n}\n\nexport type Timeframe = \"1D\" | \"7D\" | \"30D\" | \"90D\" | \"ALL\";\n\n/**\n * Number of days in each preset period.\n * DAY = 2 means \"today and yesterday\" (inclusive range)\n */\nconst PRESET_DAYS = {\n [PeriodType.DAY]: 2,\n [PeriodType.WEEK]: 7,\n [PeriodType.MONTH]: 30,\n [PeriodType.QUARTER]: 90,\n} as const;\n\nconst getDateRange = (period: PeriodType | number, today: Date) => {\n const offsetDay = typeof period === \"number\" ? period : PRESET_DAYS[period];\n return {\n from: subDays(today, offsetDay - 1),\n to: today,\n };\n};\n\nconst formatDateRange = (date?: Date) => {\n if (typeof date === \"undefined\") return undefined;\n return format(date, \"yyyy-MM-dd\");\n};\n\nconst getUtcStartOfDay = (date: Date): Date => {\n return new Date(\n Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()),\n );\n};\n\nconst getUtcEndOfDay = (date: Date): Date => {\n return new Date(\n Date.UTC(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n 23,\n 59,\n 59,\n 999,\n ),\n );\n};\n\nexport const useSymbolPerformanceScript = (symbol?: string) => {\n const { wrongNetwork, disabledConnect } = useAppContext();\n const { state } = useAccount();\n const [selectedSymbol, setSelectedSymbol] = useState<string>(\n symbol || \"ALL_SYMBOLS\",\n );\n const [aggregationWindow, setAggregationWindow] = useState<AggregationWindow>(\n AggregationWindow.DAILY,\n );\n const [isNetPnL, setIsNetPnL] = useState(false); // Toggle: Net P&L (fees deducted) vs Gross P&L (default)\n const [today] = useState(() => new Date());\n const [period, setPeriod] = useState<PeriodType | null>(PeriodType.WEEK);\n\n const [dateRange, setDateRange] = useState<{ from: Date; to: Date }>(() => {\n const range = getDateRange(PeriodType.WEEK, today);\n return {\n from: range.from,\n to: range.to,\n };\n });\n\n const onPeriodChange = (value: PeriodType) => {\n const newRange = getDateRange(value, today);\n setPeriod(value);\n setDateRange({\n from: newRange.from,\n to: newRange.to,\n });\n };\n\n const onFilter = (filter: { name: string; value: any }) => {\n if (filter.name === \"dateRange\") {\n const newDateRange = filter.value;\n\n setDateRange(newDateRange);\n\n if (newDateRange.from && newDateRange.to) {\n const offsetDay =\n Math.abs(differenceInDays(newDateRange.from, newDateRange.to)) + 1;\n\n const range = getDateRange(offsetDay, today);\n\n if (\n formatDateRange(range.from) === formatDateRange(newDateRange.from) &&\n formatDateRange(range.to) === formatDateRange(newDateRange.to)\n ) {\n setPeriod(\n (Object.keys(PRESET_DAYS) as PeriodType[]).find(\n (key) => PRESET_DAYS[key] === offsetDay,\n ) || null,\n );\n } else {\n setPeriod(null);\n }\n }\n }\n };\n\n const startDate = dateRange.from;\n const endDate = dateRange.to;\n\n const startDateForAPI = useMemo(() => {\n if (!startDate) return startDate;\n return getUtcStartOfDay(startDate);\n }, [startDate]);\n\n // Query full UTC day for the selected local end date.\n const endDateForAPI = useMemo(() => {\n if (!endDate) return endDate;\n return getUtcEndOfDay(endDate);\n }, [endDate]);\n\n const filterItems = useMemo(() => {\n return [\n {\n type: \"range\" as const,\n name: \"dateRange\",\n value: dateRange,\n max: 90,\n },\n ];\n }, [dateRange]);\n\n const { trades, isLoading, error } = useTrades({\n symbol: selectedSymbol === \"ALL_SYMBOLS\" ? undefined : selectedSymbol,\n start_t: startDateForAPI ? startDateForAPI.getTime() : undefined,\n end_t: endDateForAPI ? endDateForAPI.getTime() : undefined,\n });\n\n // Always calculate net performance (fees applied) for stats.\n // The net/gross toggle only affects chart visualization, not stats.\n // Use endDateForAPI to ensure all fetched trades are included in aggregation\n const performanceData = useSymbolPerformanceData(\n trades,\n startDateForAPI,\n endDateForAPI,\n );\n\n const invisible =\n wrongNetwork ||\n disabledConnect ||\n (state.status < AccountStatusEnum.EnableTrading &&\n state.status !== AccountStatusEnum.EnableTradingWithoutConnected);\n\n const periodTypes = Object.values(PeriodType);\n const aggregationWindowTypes = Object.values(AggregationWindow);\n\n const getAggregatedData = () => {\n if (!performanceData) return null;\n\n let result;\n switch (aggregationWindow) {\n case AggregationWindow.FIFTEEN_MIN:\n result = {\n periodData: performanceData.fifteenMinuteData,\n cumulativePnL: performanceData.cumulativeFifteenMinutePnL,\n cumulativeFees: performanceData.cumulativeFifteenMinuteFees,\n cumulativeVolume: performanceData.cumulativeFifteenMinuteVolume,\n };\n break;\n case AggregationWindow.HOURLY:\n result = {\n periodData: performanceData.hourlyData,\n cumulativePnL: performanceData.cumulativeHourlyPnL,\n cumulativeFees: performanceData.cumulativeHourlyFees,\n cumulativeVolume: performanceData.cumulativeHourlyVolume,\n };\n break;\n case AggregationWindow.DAILY:\n default:\n result = {\n periodData: performanceData.dailyData,\n cumulativePnL: performanceData.cumulativeDailyPnL,\n cumulativeFees: performanceData.cumulativeDailyFees,\n cumulativeVolume: performanceData.cumulativeDailyVolume,\n };\n }\n\n return result;\n };\n\n return {\n selectedSymbol,\n setSelectedSymbol,\n period,\n onPeriodChange,\n periodTypes,\n aggregationWindow,\n setAggregationWindow,\n aggregationWindowTypes,\n isNetPnL,\n setIsNetPnL,\n dateRange,\n filterItems,\n onFilter,\n trades,\n isLoading,\n error,\n performanceData,\n aggregatedData: getAggregatedData(),\n invisible,\n };\n};\n\nexport type UseSymbolPerformanceScriptReturn = ReturnType<\n typeof useSymbolPerformanceScript\n>;\n","import { format, parseISO } from \"date-fns\";\nimport { AggregationWindow } from \"./symbolPerformance.script\";\n\n/**\n * Get human-readable label for aggregation window type.\n *\n * @param window - Aggregation window (daily, hourly, 15-min)\n * @returns Display label (e.g., \"Daily\", \"Hourly\", \"15 min\")\n */\nexport const getAggregationLabel = (window: AggregationWindow): string => {\n switch (window) {\n case AggregationWindow.FIFTEEN_MIN:\n return \"15 min\";\n case AggregationWindow.HOURLY:\n return \"Hourly\";\n case AggregationWindow.DAILY:\n return \"Daily\";\n default:\n return \"Daily\";\n }\n};\n\n/**\n * Format a date string for display on charts based on aggregation window.\n * Handles different precision levels for different time intervals.\n *\n * @param dateString - ISO datetime string\n * @param window - Aggregation window (daily, hourly, 15-min)\n * @returns Human-readable formatted date string\n */\nexport const formatDateForChart = (\n dateString: string,\n window: AggregationWindow,\n): string => {\n try {\n const date = parseISO(dateString);\n\n switch (window) {\n case AggregationWindow.FIFTEEN_MIN:\n case AggregationWindow.HOURLY:\n // Show time for hourly/15-min: \"Nov 21, 3:00 AM\"\n return format(date, \"MMM d, h:mm a\");\n case AggregationWindow.DAILY:\n default:\n // Show date only for daily: \"Nov 21\"\n return format(date, \"MMM d\");\n }\n } catch {\n // Fallback if parsing fails\n return dateString;\n }\n};\n\n/**\n * Format a date string to \"yyyy-MM-dd\" format.\n * Used for API calls and date range display.\n *\n * @param dateString - ISO datetime string\n * @returns Date in \"yyyy-MM-dd\" format\n */\nexport const formatDateOnly = (dateString: string): string => {\n try {\n const date = parseISO(dateString);\n return format(date, \"yyyy-MM-dd\");\n } catch {\n return dateString;\n }\n};\n","import React, { useMemo } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { Text, cn } from \"@kodiak-finance/orderly-ui\";\n\nexport type PnLRankingDataItem = {\n symbol: string;\n pnl: number;\n volume: number;\n fees: number;\n};\n\ntype PnLRankingChartProps = {\n data: PnLRankingDataItem[];\n onSymbolSelect?: (symbol: string) => void;\n};\n\nconst formatCurrency = (value: number): string => {\n if (value >= 1e9) return `$${(value / 1e9).toFixed(2)}B`;\n if (value >= 1e6) return `$${(value / 1e6).toFixed(2)}M`;\n if (value >= 1e3) return `$${(value / 1e3).toFixed(2)}K`;\n return `$${value.toFixed(2)}`;\n};\n\nexport const PnLRankingChart: React.FC<PnLRankingChartProps> = ({\n data,\n onSymbolSelect,\n}) => {\n const { t } = useTranslation();\n\n const maxAbsValue = useMemo(\n () => Math.max(...data.map((item) => Math.abs(item.pnl)), 1),\n [data],\n );\n\n return (\n <div className=\"oui-w-full\">\n {/* Header Row */}\n <div className=\"oui-grid oui-gap-4 oui-border-b oui-border-line-4 oui-mb-2 oui-px-4 oui-py-3\">\n <div className=\"oui-grid oui-grid-cols-12 oui-gap-4 oui-items-center\">\n <div className=\"oui-col-span-2\">\n <Text size=\"sm\" intensity={54} weight=\"semibold\">\n {t(\"portfolio.symbolPerformance.pnlRanking.symbols\")}\n </Text>\n </div>\n <div className=\"oui-col-span-6\">\n <Text size=\"sm\" intensity={54} weight=\"semibold\">\n {t(\"portfolio.symbolPerformance.pnlRanking.pnl\")}\n </Text>\n </div>\n <div className=\"oui-col-span-2 oui-text-right\">\n <Text size=\"sm\" intensity={54} weight=\"semibold\">\n {t(\"portfolio.symbolPerformance.pnlRanking.volume\")}\n </Text>\n </div>\n <div className=\"oui-col-span-2 oui-text-right\">\n <Text size=\"sm\" intensity={54} weight=\"semibold\">\n {t(\"portfolio.symbolPerformance.pnlRanking.fees\")}\n </Text>\n </div>\n </div>\n </div>\n\n {/* Data Rows */}\n <div className=\"oui-space-y-3\">\n {data.map((item) => {\n const isPositive = item.pnl >= 0;\n const barWidth = (Math.abs(item.pnl) / maxAbsValue) * 100;\n\n return (\n <div\n key={item.symbol}\n onClick={() => onSymbolSelect?.(item.symbol)}\n className=\"oui-border oui-border-line-4 hover:oui-border-line-5 oui-rounded-md oui-transition-colors oui-px-4 oui-py-3 oui-cursor-pointer\"\n >\n <div className=\"oui-grid oui-grid-cols-12 oui-gap-4 oui-items-center\">\n {/* Symbol Column */}\n <div className=\"oui-col-span-2\">\n <Text size=\"sm\" weight=\"semibold\" className=\"oui-truncate\">\n {item.symbol}\n </Text>\n </div>\n\n {/* P&L Column with Inline Bar Chart */}\n <div className=\"oui-col-span-6\">\n <div className=\"oui-relative oui-w-full oui-h-8 oui-rounded oui-bg-base-8 oui-overflow-hidden oui-flex oui-items-center\">\n <div\n className=\"oui-absolute oui-h-full oui-rounded oui-transition-all\"\n style={{\n width: `${barWidth}%`,\n backgroundColor: isPositive ? \"#00B49E\" : \"#FF5959\",\n }}\n />\n <Text\n size=\"sm\"\n weight=\"semibold\"\n className={cn(\n \"oui-relative oui-z-10 oui-ml-2\",\n isPositive\n ? \"oui-text-profit-500\"\n : \"oui-text-loss-500\",\n )}\n >\n {isPositive ? \"+\" : \"\"}\n {item.pnl.toFixed(2)}\n </Text>\n </div>\n </div>\n\n {/* Volume Column */}\n <div className=\"oui-col-span-2 oui-text-right\">\n <Text size=\"sm\" weight=\"semibold\">\n {formatCurrency(item.volume)}\n </Text>\n </div>\n\n {/* Fees Column */}\n <div className=\"oui-col-span-2 oui-text-right\">\n <Text size=\"sm\" weight=\"semibold\" intensity={80}>\n {formatCurrency(item.fees)}\n </Text>\n </div>\n </div>\n </div>\n );\n })}\n </div>\n\n {/* Empty State */}\n {data.length === 0 && (\n <div className=\"oui-flex oui-items-center oui-justify-center oui-py-8\">\n <Text intensity={54}>{t(\"portfolio.symbolPerformance.noData\")}</Text>\n </div>\n )}\n </div>\n );\n};\n","import React, { useMemo, useState } from \"react\";\nimport {\n DropdownMenuRoot,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuPortal,\n Flex,\n Text,\n TokenIcon,\n Input,\n cn,\n CaretDownIcon,\n CaretUpIcon,\n} from \"@kodiak-finance/orderly-ui\";\n\nexport interface SymbolOption {\n value: string;\n label: string;\n}\n\nexport interface SymbolSelectorProps {\n value: string;\n onValueChange: (value: string) => void;\n options: SymbolOption[];\n placeholder?: string;\n}\n\nexport const SymbolSelector: React.FC<SymbolSelectorProps> = ({\n value,\n onValueChange,\n options,\n placeholder = \"Select symbol\",\n}) => {\n const [open, setOpen] = useState(false);\n const [search, setSearch] = useState(\"\");\n\n const filteredOptions = useMemo(() => {\n if (!search) return options;\n return options.filter(\n (opt) =>\n opt.label.toLowerCase().includes(search.toLowerCase()) ||\n opt.value.toLowerCase().includes(search.toLowerCase()),\n );\n }, [search, options]);\n\n const selectedOption = options.find((opt) => opt.value === value);\n const displayLabel =\n value === \"ALL_SYMBOLS\"\n ? \"All Symbols\"\n : selectedOption?.label || placeholder;\n const isAllSymbols = value === \"ALL_SYMBOLS\";\n\n return (\n <DropdownMenuRoot open={open} onOpenChange={setOpen}>\n <DropdownMenuTrigger asChild>\n <button className=\"oui-w-full oui-px-3 oui-py-2 oui-rounded oui-border oui-border-line-6 oui-bg-line-4 oui-text-left oui-flex oui-items-center oui-justify-between hover:oui-bg-line-5\">\n <Flex gap={1} itemAlign=\"center\">\n {!isAllSymbols && displayLabel !== placeholder && (\n <TokenIcon name={displayLabel} size=\"2xs\" />\n )}\n <Text size=\"xs\" className=\"oui-text-base-contrast-80\">\n {displayLabel}\n </Text>\n </Flex>\n\n <CaretDownIcon\n size={12}\n className={cn(\n \"oui-text-base-contrast-54 oui-transition-transform\",\n open && \"oui-rotate-180\",\n )}\n />\n </button>\n </DropdownMenuTrigger>\n <DropdownMenuPortal>\n <DropdownMenuContent\n align=\"start\"\n side=\"bottom\"\n sideOffset={4}\n className=\"oui-w-[var(--radix-dropdown-menu-trigger-width)] oui-bg-base-8 oui-border oui-border-line-6 oui-rounded oui-p-2 oui-z-50\"\n onCloseAutoFocus={(e) => e.preventDefault()}\n >\n {/* Search Input */}\n <div className=\"oui-px-2 oui-py-2 oui-border-b oui-border-base-4 oui-mb-2\">\n <Input\n autoFocus\n placeholder=\"Search symbols...\"\n value={search}\n onValueChange={setSearch}\n size=\"sm\"\n />\n </div>\n\n {/* Options List */}\n <div className=\"oui-max-h-[300px] oui-overflow-y-auto\">\n {filteredOptions.length === 0 ? (\n <div className=\"oui-px-3 oui-py-2 oui-text-center oui-text-base-contrast-54 oui-text-xs\">\n No symbols found\n </div>\n ) : (\n filteredOptions.map((option) => {\n const isSelected = value === option.value;\n const cleanLabel =\n option.value === \"ALL_SYMBOLS\" ? \"All Symbols\" : option.label;\n\n return (\n <button\n key={option.value}\n onClick={() => {\n onValueChange(option.value);\n setOpen(false);\n setSearch(\"\");\n }}\n className={cn(\n \"oui-w-full oui-px-3 oui-py-2 oui-rounded oui-flex oui-items-center oui-gap-2 oui-text-left oui-transition-colors\",\n isSelected ? \"oui-bg-base-7\" : \"hover:oui-bg-base-7\",\n )}\n >\n {option.value !== \"ALL_SYMBOLS\" && (\n <TokenIcon name={cleanLabel} size=\"2xs\" />\n )}\n <Text size=\"xs\" className=\"oui-text-base-contrast-80\">\n {cleanLabel}\n </Text>\n </button>\n );\n })\n )}\n </div>\n </DropdownMenuContent>\n </DropdownMenuPortal>\n </DropdownMenuRoot>\n );\n};\n","import { useMemo } from \"react\";\nimport { useSWR } from \"@kodiak-finance/orderly-hooks\";\n\nexport interface KlineData {\n symbol: string;\n resolution: string;\n timestamp: number;\n open: number;\n high: number;\n low: number;\n close: number;\n volume: number;\n}\n\ninterface KlineResponse {\n s: string; // status: \"ok\"\n o: number[]; // open\n h: number[]; // high\n l: number[]; // low\n c: number[]; // close\n v: number[]; // volume\n a: number[]; // notional\n t: number[]; // timestamps\n}\n\nconst fetcher = (url: string) =>\n fetch(`https://api.orderly.org${url}`).then((res) => res.json());\n\nexport const useKlineData = (params: {\n symbol?: string;\n resolution?: \"15m\" | \"1h\" | \"1d\";\n from?: number;\n to?: number;\n limit?: number;\n}) => {\n const { symbol, resolution, from, to, limit = 1000 } = params;\n\n const getKey = useMemo(() => {\n if (!symbol || !resolution) return null;\n\n // Calculate default from/to timestamps\n const now = Math.floor(Date.now() / 1000);\n\n // Use provided from/to timestamps, or calculate defaults\n let fromTimestamp = from;\n const toTimestamp = to || now;\n\n if (!fromTimestamp) {\n // If no from is provided, calculate based on resolution and limit\n const secondsPerCandle = {\n \"15m\": 900,\n \"1h\": 3600,\n \"1d\": 86400,\n }[resolution];\n\n fromTimestamp = now - limit * secondsPerCandle;\n }\n\n const search = new URLSearchParams();\n search.set(\"symbol\", symbol);\n search.set(\"resolution\", resolution);\n search.set(\"from\", fromTimestamp.toString());\n search.set(\"to\", toTimestamp.toString());\n\n return `/v1/tv/kline_history?${search.toString()}`;\n }, [symbol, resolution, from, to, limit]);\n\n const { data, isLoading, error } = useSWR<KlineResponse>(getKey, fetcher, {\n revalidateOnFocus: false,\n dedupingInterval: 60000, // Cache for 1 minute\n });\n\n // Transform API response to usable format\n const klines = useMemo(() => {\n if (!data?.t || !Array.isArray(data.t)) return [];\n\n const { o, h, l, c, v, t } = data as KlineResponse;\n\n return t.map((timestamp, index) => ({\n symbol: symbol || \"\",\n resolution: resolution || \"\",\n timestamp,\n open: o[index],\n high: h[index],\n low: l[index],\n close: c[index],\n volume: v[index],\n }));\n }, [data, symbol, resolution]);\n\n return {\n klines,\n isLoading,\n error,\n };\n};\n","import React, { useMemo, useState } from \"react\";\nimport { endOfDay } from \"date-fns\";\nimport {\n CombinedPnLChart,\n CombinedVolumeChart,\n CombinedFeesChart,\n CombinedPriceChart,\n AssetAreaChart,\n} from \"@kodiak-finance/orderly-chart\";\nimport { useSymbolsInfo } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n Card,\n Grid,\n Box,\n Statistic,\n Text,\n Divider,\n Flex,\n Select,\n Switch,\n cn,\n DataTable,\n type Column,\n} from \"@kodiak-finance/orderly-ui\";\nimport { formatDateForChart, getAggregationLabel } from \"./dateUtils\";\nimport { PnLRankingChart } from \"./pnlRankingChart\";\nimport type { UseSymbolPerformanceScriptReturn } from \"./symbolPerformance.script\";\nimport { AggregationWindow } from \"./symbolPerformance.script\";\nimport { SymbolSelector } from \"./symbolSelector\";\nimport { useKlineData } from \"./useKlineData\";\nimport type { TradeData } from \"./useTrades\";\n\nconst LazyPeriodTitle = React.lazy(() =>\n import(\"../overview/shared/periodHeader\").then((mod) => {\n return { default: mod.PeriodTitle };\n }),\n);\n\nexport type SymbolPerformanceUIProps = UseSymbolPerformanceScriptReturn;\n\nconst MakerTakerShare: React.FC<{ makerShare: number }> = ({ makerShare }) => {\n const takerShare = 100 - makerShare;\n return (\n <div className=\"oui-flex oui-items-center oui-justify-center oui-gap-4\">\n <Text weight=\"semibold\">{makerShare.toFixed(1)}%</Text>\n <span className=\"oui-text-base-contrast-54\">/</span>\n <Text weight=\"semibold\">{takerShare.toFixed(1)}%</Text>\n </div>\n );\n};\n\nenum ViewType {\n chart = \"chart\",\n table = \"table\",\n}\n\ntype PerformanceTableRow = {\n date: string;\n pnl: number;\n grossPnl: number;\n volume: number;\n fees: number;\n};\n\nexport const SymbolPerformanceUI: React.FC<SymbolPerformanceUIProps> = (\n props,\n) => {\n const {\n selectedSymbol,\n setSelectedSymbol,\n period,\n onPeriodChange,\n periodTypes,\n performanceData,\n filterItems,\n onFilter,\n aggregationWindow,\n setAggregationWindow,\n aggregationWindowTypes,\n aggregatedData,\n trades,\n dateRange,\n isNetPnL,\n setIsNetPnL,\n } = props;\n const { t } = useTranslation();\n const symbolsInfo = useSymbolsInfo();\n const [viewType, setViewType] = useState<ViewType>(ViewType.chart);\n const [showCumulativePnL, setShowCumulativePnL] = useState(true);\n const [showCumulativeVolume, setShowCumulativeVolume] = useState(false);\n const [showCumulativeFees, setShowCumulativeFees] = useState(false);\n\n // Trim all data based on first and last non-zero volume to keep all charts aligned\n // This removes leading empty buckets and trailing empty buckets\n const getTrimmedDataRange = (data: any[]) => {\n if (!data || data.length === 0) return { start: 0, end: 0 };\n\n // Find first non-zero volume\n const startIndex = data.findIndex(\n (item) => item.volume && item.volume !== 0,\n );\n\n // Find last non-zero volume\n const endIndex = data.reduce(\n (lastIdx, item, idx) =>\n item.volume && item.volume !== 0 ? idx : lastIdx,\n -1,\n );\n\n return {\n start: startIndex === -1 ? 0 : startIndex,\n end: endIndex === -1 ? data.length : endIndex + 1,\n };\n };\n\n // Get available symbols\n const availableSymbols = useMemo(() => {\n const symbols = Object.keys(symbolsInfo);\n return [\n { value: \"ALL_SYMBOLS\", label: \"All Symbols\" },\n ...symbols.map((symbol) => ({\n value: symbol,\n label: symbol.replace(\"PERP_\", \"\").replace(\"_USDC\", \"\"),\n })),\n ];\n }, [symbolsInfo]);\n\n // Transform period PnL data for CombinedPnLChart (combines bars + cumulative line)\n // aggregatedData.periodData contains NET PnL (after fees) and gross PnL values\n const combinedPnLData = useMemo(() => {\n if (!aggregatedData || !aggregatedData.periodData) return [];\n const { start, end } = getTrimmedDataRange(aggregatedData.periodData);\n const trimmedData = aggregatedData.periodData.slice(start, end);\n return trimmedData.map((item) => ({\n date: formatDateForChart(item.date, aggregationWindow),\n pnl: isNetPnL ? item.pnl : item.grossPnl,\n }));\n }, [aggregatedData, aggregationWindow, isNetPnL]);\n\n // Transform period volume data for CombinedVolumeChart (combines bars + cumulative line)\n const combinedVolumeData = useMemo(() => {\n if (!aggregatedData || !aggregatedData.periodData) return [];\n const { start, end } = getTrimmedDataRange(aggregatedData.periodData);\n const trimmedData = aggregatedData.periodData.slice(start, end);\n return trimmedData.map((item) => ({\n date: formatDateForChart(item.date, aggregationWindow),\n volume: item.volume ?? 0,\n }));\n }, [aggregatedData, aggregationWindow]);\n\n // Transform period fees data for CombinedFeesChart (combines bars + cumulative line)\n // Fees are shown as negative since they're a cost\n const combinedFeesData = useMemo(() => {\n if (!aggregatedData || !aggregatedData.periodData) return [];\n const { start, end } = getTrimmedDataRange(aggregatedData.periodData);\n const trimmedData = aggregatedData.periodData.slice(start, end);\n return trimmedData.map((item) => ({\n date: formatDateForChart(item.date, aggregationWindow),\n fees: -(item.fees ?? 0),\n }));\n }, [aggregatedData, aggregationWindow]);\n\n // Map aggregation window to K-line resolution\n const klineResolution = useMemo(() => {\n switch (aggregationWindow) {\n case \"15m\":\n return \"15m\" as const;\n case \"1h\":\n return \"1h\" as const;\n case \"1d\":\n return \"1d\" as const;\n default:\n return \"1d\" as const;\n }\n }, [aggregationWindow]);\n\n // Fetch K-line data (only if a specific symbol is selected, not \"ALL_SYMBOLS\")\n const isAllSymbols = selectedSymbol === \"ALL_SYMBOLS\";\n const klineEndDate = useMemo(() => {\n if (!dateRange?.to) return undefined;\n // Use endOfDay to capture klines through the full day, not just to midnight\n return endOfDay(dateRange.to);\n }, [dateRange?.to]);\n\n const { klines } = useKlineData({\n symbol: !isAllSymbols && selectedSymbol ? selectedSymbol : undefined,\n resolution: klineResolution,\n from: dateRange ? Math.floor(dateRange.from.getTime() / 1000) : undefined,\n to: klineEndDate ? Math.floor(klineEndDate.getTime() / 1000) : undefined,\n });\n\n // Combine price data - align with trading data range, fill gaps with null\n // This ensures price chart covers the full date range of PnL/Volume/Fees charts\n // Missing price data (due to 1k kline API limit) shows as null, maintaining tooltip sync\n const combinedPriceData = useMemo(() => {\n if (!aggregatedData || !aggregatedData.periodData) {\n return [];\n }\n\n // Apply same trim range as volume/fees/pnl to align x-axis\n const { start, end } = getTrimmedDataRange(aggregatedData.periodData);\n const trimmedTradingData = aggregatedData.periodData.slice(start, end);\n\n if (trimmedTradingData.length === 0 || klines.length === 0) {\n return [];\n }\n\n // Create a map of kline data by formatted date for O(1) lookup\n const klineMap = new Map<string, (typeof klines)[0]>();\n klines.forEach((k) => {\n const date = new Date(k.timestamp * 1000);\n const formattedDate = formatDateForChart(\n date.toISOString(),\n aggregationWindow,\n );\n klineMap.set(formattedDate, k);\n });\n\n // Create price data for all trading data buckets, using null where kline data is missing\n const result = trimmedTradingData.map((tradingItem) => {\n const formattedDate = formatDateForChart(\n tradingItem.date,\n aggregationWindow,\n );\n const kline = klineMap.get(formattedDate);\n\n return {\n date: formattedDate,\n open: kline?.open ?? null,\n high: kline?.high ?? null,\n low: kline?.low ?? null,\n close: kline?.close ?? null,\n };\n });\n\n return result;\n }, [klines, aggregatedData, aggregationWindow]);\n\n // Transform data for table view\n const tableData = useMemo(() => {\n if (!aggregatedData || !aggregatedData.periodData) return [];\n const { start, end } = getTrimmedDataRange(aggregatedData.periodData);\n const trimmedData = aggregatedData.periodData.slice(start, end);\n return trimmedData.map((item) => ({\n date: formatDateForChart(item.date, aggregationWindow),\n pnl: item.pnl,\n grossPnl: item.grossPnl,\n volume: item.volume ?? 0,\n fees: item.fees ?? 0,\n }));\n }, [aggregatedData, aggregationWindow]);\n\n const renderPnLValue = (value: number) => {\n const isPositive = value >= 0;\n return (\n <Text\n as=\"span\"\n weight=\"semibold\"\n className={isPositive ? \"oui-text-profit-500\" : \"oui-text-loss-500\"}\n >\n {value.toFixed(2)} USDC\n </Text>\n );\n };\n\n // Define table columns\n const tableColumns: Column<PerformanceTableRow>[] = useMemo(\n () => [\n {\n title: t(\"common.date\"),\n dataIndex: \"date\",\n width: 120,\n align: \"left\",\n },\n {\n title: t(\"portfolio.symbolPerformance.pnlNet\"),\n dataIndex: \"pnl\",\n align: \"right\",\n width: 150,\n render: renderPnLValue,\n },\n {\n title: t(\"portfolio.symbolPerformance.pnlGross\"),\n dataIndex: \"grossPnl\",\n align: \"right\",\n width: 150,\n render: renderPnLValue,\n },\n {\n title: t(\"portfolio.symbolPerformance.volume\"),\n dataIndex: \"volume\",\n align: \"right\",\n width: 150,\n render: (value: number) => {\n return <Text as=\"span\">{formatVolumeValue(value)}</Text>;\n },\n },\n {\n title: t(\"portfolio.symbolPerformance.fees\"),\n dataIndex: \"fees\",\n align: \"right\",\n width: 150,\n render: (value: number) => {\n return <Text as=\"span\">{formatVolumeValue(value)}</Text>;\n },\n },\n ],\n [t],\n );\n\n // Helper function to format volume/fees with K/M/B\n const formatVolumeValue = (value: number): string => {\n const abbreviations = [\"\", \"K\", \"M\", \"B\", \"T\"];\n let index = 0;\n let num = value;\n while (num >= 1000 && index < abbreviations.length - 1) {\n num /= 1000;\n index++;\n }\n const decimalPlaces = num <= 10 ? 2 : num <= 100 ? 1 : 0;\n const rounded = parseFloat(num.toFixed(decimalPlaces));\n return `${rounded}${abbreviations[index]}`;\n };\n\n // Aggregate trades by symbol\n const symbolSummaryData = useMemo(() => {\n if (!trades || trades.length === 0) return [];\n\n const symbolMap = new Map<\n string,\n { pnl: number; volume: number; fees: number; trades: number }\n >();\n\n trades.forEach((trade: TradeData) => {\n const symbol = trade.symbol;\n if (!symbolMap.has(symbol)) {\n symbolMap.set(symbol, { pnl: 0, volume: 0, fees: 0, trades: 0 });\n }\n\n const current = symbolMap.get(symbol)!;\n const tradeVolume = trade.executed_quantity * trade.executed_price;\n\n current.pnl += trade.realized_pnl || 0;\n current.volume += tradeVolume;\n current.fees += trade.fee || 0;\n current.trades += 1;\n });\n\n // Convert map to array and sort by PnL (highest first)\n return Array.from(symbolMap.entries())\n .map(([symbol, data]) => ({\n symbol,\n ...data,\n }))\n .sort((a, b) => b.pnl - a.pnl)\n .slice(0, 10); // Top 10 symbols\n }, [trades]);\n\n return (\n <Card\n title={\n <Box>\n <React.Suspense fallback={null}>\n <LazyPeriodTitle\n onPeriodChange={onPeriodChange}\n periodTypes={periodTypes}\n period={period}\n title={t(\"portfolio.symbolPerformance\")}\n filterItems={filterItems}\n onFilter={onFilter}\n />\n </React.Suspense>\n </Box>\n }\n >\n <Grid cols={1} gap={4}>\n <Flex gap={4} itemAlign=\"end\">\n {/* Symbol Selector - With Logo and Search */}\n <Box className=\"oui-max-w-xs oui-flex-1\">\n <Text size=\"xs\" intensity={54} className=\"oui-mb-2\">\n {t(\"common.symbol\")}\n </Text>\n <SymbolSelector\n value={selectedSymbol || \"\"}\n onValueChange={(value: string) => setSelectedSymbol(value)}\n options={availableSymbols}\n placeholder={t(\"common.symbol\")}\n />\n </Box>\n\n {/* Aggregation Window Selector */}\n <Box className=\"oui-max-w-xs\">\n <Text size=\"xs\" intensity={54} className=\"oui-mb-2\">\n {t(\"portfolio.symbolPerformance.aggregation\")}\n </Text>\n <Select.options\n value={aggregationWindow}\n onValueChange={(value) =>\n setAggregationWindow(value as AggregationWindow)\n }\n options={aggregationWindowTypes.map((type) => ({\n label:\n type === \"15m\"\n ? \"15 min\"\n : type === \"1h\"\n ? \"Hourly\"\n : \"Daily\",\n value: type,\n }))}\n classNames={{ trigger: cn(\"oui-h-[2.4rem]\") }}\n />\n </Box>\n </Flex>\n\n <Divider className=\"oui-my-6 oui-border-t-2\" intensity={8} />\n\n <Box pb={4}>\n {/* Key Metrics */}\n <Grid cols={5} gap={4} mb={4}>\n <Box\n gradient=\"neutral\"\n r=\"md\"\n px={3}\n py={2}\n angle={184}\n border\n borderColor={6}\n >\n {/* Total PnL (Gross) */}\n <Statistic\n label=\"Total PnL (Gross)\"\n valueProps={{ coloring: true, showIdentifier: true }}\n >\n {performanceData ? performanceData.grossPnL.toFixed(2) : \"--\"}\n </Statistic>\n </Box>\n <Box\n gradient=\"neutral\"\n r=\"md\"\n px={3}\n py={2}\n angle={184}\n border\n borderColor={6}\n >\n {/* Total Fees */}\n <Statistic\n label={t(\"portfolio.symbolPerformance.totalFees\")}\n valueProps={{ showIdentifier: false }}\n >\n {performanceData ? performanceData.totalFees.toFixed(2) : \"--\"}\n </Statistic>\n </Box>\n <Box\n gradient=\"neutral\"\n r=\"md\"\n px={3}\n py={2}\n angle={184}\n border\n borderColor={6}\n >\n {/* Total PnL (Net) */}\n <Statistic\n label=\"Total PnL (Net)\"\n valueProps={{ coloring: true, showIdentifier: true }}\n >\n {performanceData ? performanceData.totalPnL.toFixed(2) : \"--\"}\n </Statistic>\n </Box>\n <Box\n gradient=\"neutral\"\n r=\"md\"\n px={3}\n py={2}\n angle={184}\n border\n borderColor={6}\n >\n {/* Total Volume */}\n <Statistic label={t(\"portfolio.symbolPerformance.totalVolume\")}>\n {performanceData\n ? performanceData.totalVolume.toFixed(2)\n : \"--\"}\n </Statistic>\n </Box>\n <Box\n gradient=\"neutral\"\n r=\"md\"\n px={3}\n py={2}\n angle={184}\n border\n borderColor={6}\n >\n {/* Maker / Taker */}\n <Statistic label=\"Maker / Taker\">\n {performanceData ? (\n <MakerTakerShare makerShare={performanceData.makerShare} />\n ) : (\n <div className=\"oui-text-center\">--</div>\n )}\n </Statistic>\n </Box>\n </Grid>\n\n {/* Chart/Table View Toggle */}\n <Flex gap={2} mb={4}>\n <button\n onClick={() => setViewType(ViewType.chart)}\n className={cn(\n \"oui-px-4 oui-py-2 oui-rounded oui-text-sm oui-font-semibold oui-transition-all\",\n viewType === ViewType.chart\n ? \"oui-bg-primary-darken oui-text-white\"\n : \"oui-bg-base-5 oui-text-base-contrast-54 hover:oui-bg-base-4\",\n )}\n >\n Chart\n </button>\n <button\n onClick={() => setViewType(ViewType.table)}\n className={cn(\n \"oui-px-4 oui-py-2 oui-rounded oui-text-sm oui-font-semibold oui-transition-all\",\n viewType === ViewType.table\n ? \"oui-bg-primary-darken oui-text-white\"\n : \"oui-bg-base-5 oui-text-base-contrast-54 hover:oui-bg-base-4\",\n )}\n >\n Table\n </button>\n </Flex>\n\n {/* Charts - Conditional Rendering */}\n {viewType === ViewType.chart && (\n <Grid cols={1} gap={6}>\n {/* Combined PnL Chart (bars + cumulative line) */}\n <Box>\n <Text as=\"div\" size=\"sm\" className=\"oui-mb-3\">\n {getAggregationLabel(aggregationWindow)}{\" \"}\n {t(\"portfolio.symbolPerformance.realizedPnL\")}\n </Text>\n <Flex justify=\"between\" itemAlign=\"center\" className=\"oui-mb-3\">\n <Flex gap={2}>\n <button\n onClick={() => setIsNetPnL(false)}\n className={cn(\n \"oui-px-3 oui-py-1 oui-rounded oui-text-xs oui-font-semibold oui-transition-all\",\n !isNetPnL\n ? \"oui-bg-primary-darken oui-text-white\"\n : \"oui-bg-base-5 oui-text-base-contrast-54 hover:oui-bg-base-4\",\n )}\n >\n Gross P&L\n </button>\n <button\n onClick={() => setIsNetPnL(true)}\n className={cn(\n \"oui-px-3 oui-py-1 oui-rounded oui-text-xs oui-font-semibold oui-transition-all\",\n isNetPnL\n ? \"oui-bg-primary-darken oui-text-white\"\n : \"oui-bg-base-5 oui-text-base-contrast-54 hover:oui-bg-base-4\",\n )}\n >\n Net P&L\n </button>\n </Flex>\n <Flex itemAlign=\"center\" gap={2}>\n <label className=\"oui-text-xs oui-text-base-contrast-54\">\n Cumulative\n </label>\n <Switch\n checked={showCumulativePnL}\n onCheckedChange={setShowCumulativePnL}\n />\n </Flex>\n </Flex>\n <Box\n r=\"md\"\n className=\"oui-h-[300px] oui-border oui-border-line-4\"\n >\n <CombinedPnLChart\n key={`combined-pnl-${aggregationWindow}`}\n data={combinedPnLData}\n aggregationWindow={aggregationWindow as \"15m\" | \"1h\" | \"1d\"}\n invisible={\n !aggregatedData ||\n !aggregatedData.periodData ||\n aggregatedData.periodData.length === 0\n }\n showCumulative={showCumulativePnL}\n />\n </Box>\n </Box>\n\n {/* Combined Volume Chart (bars + cumulative line) */}\n <Box>\n <Flex justify=\"between\" itemAlign=\"center\" className=\"oui-mb-3\">\n <Text as=\"div\" size=\"sm\">\n {getAggregationLabel(aggregationWindow)}{\" \"}\n {t(\"portfolio.symbolPerformance.volume\")}\n </Text>\n <Flex itemAlign=\"center\" gap={2}>\n <label className=\"oui-text-xs oui-text-base-contrast-54\">\n Cumulative\n </label>\n <Switch\n checked={showCumulativeVolume}\n onCheckedChange={setShowCumulativeVolume}\n />\n </Flex>\n </Flex>\n <Box\n r=\"md\"\n className=\"oui-h-[300px] oui-border oui-border-line-4\"\n >\n <CombinedVolumeChart\n key={`combined-vol-${aggregationWindow}`}\n data={combinedVolumeData}\n aggregationWindow={aggregationWindow as \"15m\" | \"1h\" | \"1d\"}\n invisible={\n !aggregatedData ||\n !aggregatedData.periodData ||\n aggregatedData.periodData.length === 0\n }\n showCumulative={showCumulativeVolume}\n />\n </Box>\n </Box>\n\n {/* Combined Price Chart - Only show when specific symbol is selected */}\n {!isAllSymbols && (\n <Box>\n <Text as=\"div\" size=\"sm\" className=\"oui-mb-3\">\n {getAggregationLabel(aggregationWindow)} Price\n </Text>\n <Box\n r=\"md\"\n className=\"oui-h-[300px] oui-border oui-border-line-4\"\n >\n <CombinedPriceChart\n key={`combined-price-${aggregationWindow}-${selectedSymbol}`}\n data={combinedPriceData}\n aggregationWindow={\n aggregationWindow as \"15m\" | \"1h\" | \"1d\"\n }\n invisible={combinedPriceData.length === 0}\n />\n </Box>\n </Box>\n )}\n\n {/* Combined Fees Chart (bars + cumulative line) */}\n <Box>\n <Flex justify=\"between\" itemAlign=\"center\" className=\"oui-mb-3\">\n <Text as=\"div\" size=\"sm\">\n {getAggregationLabel(aggregationWindow)}{\" \"}\n {t(\"portfolio.symbolPerformance.fees\")}\n </Text>\n <Flex itemAlign=\"center\" gap={2}>\n <label className=\"oui-text-xs oui-text-base-contrast-54\">\n Cumulative\n </label>\n <Switch\n checked={showCumulativeFees}\n onCheckedChange={setShowCumulativeFees}\n />\n </Flex>\n </Flex>\n <Box\n r=\"md\"\n className=\"oui-h-[300px] oui-border oui-border-line-4\"\n >\n <CombinedFeesChart\n key={`combined-fees-${aggregationWindow}`}\n data={combinedFeesData}\n aggregationWindow={aggregationWindow as \"15m\" | \"1h\" | \"1d\"}\n invisible={\n !aggregatedData ||\n !aggregatedData.periodData ||\n aggregatedData.periodData.length === 0\n }\n showCumulative={showCumulativeFees}\n />\n </Box>\n </Box>\n </Grid>\n )}\n\n {/* Table View - Conditional Rendering */}\n {viewType === ViewType.table && (\n <Box className=\"oui-h-[600px]\">\n <DataTable<PerformanceTableRow>\n bordered\n columns={tableColumns}\n dataSource={tableData}\n emptyView={\n <Box className=\"oui-text-center oui-py-8\">\n <Text>{t(\"portfolio.symbolPerformance.noData\")}</Text>\n </Box>\n }\n />\n </Box>\n )}\n\n {/* Symbol Summary - Top Symbols by PnL */}\n {symbolSummaryData.length > 0 && (\n <Box mt={8}>\n <Divider className=\"oui-my-6 oui-border-t-2\" intensity={8} />\n <Text as=\"div\" size=\"lg\" weight=\"semibold\" className=\"oui-mb-4\">\n {t(\"portfolio.symbolPerformance.pnlRanking\")}\n </Text>\n <Box className=\"oui-border oui-border-line-4 oui-rounded-md oui-p-4\">\n <PnLRankingChart\n data={symbolSummaryData}\n onSymbolSelect={setSelectedSymbol}\n />\n </Box>\n </Box>\n )}\n </Box>\n </Grid>\n </Card>\n );\n};\n","import React, { useMemo } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { Text, cn } from \"@kodiak-finance/orderly-ui\";\n\nexport type PnLRankingDataItem = {\n symbol: string;\n pnl: number;\n volume: number;\n fees: number;\n};\n\ntype PnLRankingChartMobileProps = {\n data: PnLRankingDataItem[];\n onSymbolSelect?: (symbol: string) => void;\n};\n\nconst formatCurrency = (value: number): string => {\n if (value >= 1e9) return `$${(value / 1e9).toFixed(2)}B`;\n if (value >= 1e6) return `$${(value / 1e6).toFixed(2)}M`;\n if (value >= 1e3) return `$${(value / 1e3).toFixed(2)}K`;\n return `$${value.toFixed(2)}`;\n};\n\nexport const PnLRankingChartMobile: React.FC<PnLRankingChartMobileProps> = ({\n data,\n onSymbolSelect,\n}) => {\n const { t } = useTranslation();\n\n const maxAbsValue = useMemo(\n () => Math.max(...data.map((item) => Math.abs(item.pnl)), 1),\n [data],\n );\n\n return (\n <div className=\"oui-w-full oui-space-y-3\">\n {/* Header Row */}\n <div className=\"oui-border-b oui-border-line-4 oui-mb-2 oui-px-3 oui-py-2\">\n <div className=\"oui-flex oui-items-center oui-justify-between\">\n <Text size=\"xs\" intensity={54} weight=\"semibold\">\n {t(\"portfolio.symbolPerformance.pnlRanking.symbols\")}\n </Text>\n <Text\n size=\"xs\"\n intensity={54}\n weight=\"semibold\"\n className=\"oui-text-right\"\n >\n {t(\"portfolio.symbolPerformance.pnlRanking.pnl\")}\n </Text>\n </div>\n </div>\n\n {/* Data Rows */}\n {data.map((item) => {\n const isPositive = item.pnl >= 0;\n const barWidth = (Math.abs(item.pnl) / maxAbsValue) * 100;\n\n return (\n <div\n key={item.symbol}\n onClick={() => onSymbolSelect?.(item.symbol)}\n className=\"oui-border oui-border-line-4 hover:oui-border-line-5 oui-rounded oui-transition-colors oui-px-3 oui-py-3 oui-cursor-pointer\"\n >\n {/* Symbol - Full Width, No Truncation */}\n <Text size=\"xs\" weight=\"semibold\" className=\"oui-mb-2\">\n {item.symbol}\n </Text>\n\n {/* Bar with P&L Value - Full Width */}\n <div className=\"oui-relative oui-w-full oui-h-7 oui-rounded oui-bg-base-8 oui-overflow-hidden oui-flex oui-items-center oui-mb-3\">\n <div\n className=\"oui-absolute oui-h-full oui-rounded oui-transition-all\"\n style={{\n width: `${barWidth}%`,\n backgroundColor: isPositive ? \"#00B49E\" : \"#FF5959\",\n }}\n />\n <Text\n size=\"xs\"\n weight=\"semibold\"\n className={cn(\n \"oui-relative oui-z-10 oui-ml-2\",\n isPositive ? \"oui-text-profit-500\" : \"oui-text-loss-500\",\n )}\n >\n {isPositive ? \"+\" : \"\"}\n {item.pnl.toFixed(2)}\n </Text>\n </div>\n\n {/* Volume and Fees - Compact Secondary Info */}\n <div className=\"oui-flex oui-justify-between oui-gap-4 oui-border-t oui-border-line-4 oui-pt-3\">\n <div className=\"oui-flex oui-flex-col oui-gap-1\">\n <Text size=\"2xs\" intensity={54}>\n {t(\"portfolio.symbolPerformance.pnlRanking.volume\")}\n </Text>\n <Text size=\"xs\" weight=\"semibold\">\n {formatCurrency(item.volume)}\n </Text>\n </div>\n <div className=\"oui-text-right oui-flex oui-flex-col oui-gap-1\">\n <Text size=\"2xs\" intensity={54}>\n {t(\"portfolio.symbolPerformance.pnlRanking.fees\")}\n </Text>\n <Text size=\"xs\" weight=\"semibold\" intensity={80}>\n {formatCurrency(item.fees)}\n </Text>\n </div>\n </div>\n </div>\n );\n })}\n\n {/* Empty State */}\n {data.length === 0 && (\n <div className=\"oui-flex oui-items-center oui-justify-center oui-py-8\">\n <Text size=\"xs\" intensity={54}>\n {t(\"portfolio.symbolPerformance.noData\")}\n </Text>\n </div>\n )}\n </div>\n );\n};\n","import React, { useMemo, useState } from \"react\";\nimport {\n CombinedPnLChart,\n CombinedVolumeChart,\n CombinedFeesChart,\n CombinedPriceChart,\n} from \"@kodiak-finance/orderly-chart\";\nimport { useSymbolsInfo } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n Box,\n Card,\n Text,\n Flex,\n Tabs,\n TabPanel,\n DataFilter,\n Select,\n Grid,\n Divider,\n Switch,\n Statistic,\n cn,\n} from \"@kodiak-finance/orderly-ui\";\nimport { formatDateForChart, getAggregationLabel } from \"./dateUtils\";\nimport { PnLRankingChartMobile } from \"./pnlRankingChartMobile\";\nimport type { UseSymbolPerformanceScriptReturn } from \"./symbolPerformance.script\";\nimport { PeriodType, AggregationWindow } from \"./symbolPerformance.script\";\nimport { SymbolSelector } from \"./symbolSelector\";\nimport { useKlineData } from \"./useKlineData\";\nimport type { TradeData } from \"./useTrades\";\n\nexport type SymbolPerformanceUIMobileProps = UseSymbolPerformanceScriptReturn;\n\nconst MakerTakerShare: React.FC<{ makerShare: number }> = ({ makerShare }) => {\n const takerShare = 100 - makerShare;\n return (\n <div className=\"oui-flex oui-items-center oui-justify-center oui-gap-4\">\n <Text weight=\"semibold\">{makerShare.toFixed(1)}%</Text>\n <span className=\"oui-text-base-contrast-54\">/</span>\n <Text weight=\"semibold\">{takerShare.toFixed(1)}%</Text>\n </div>\n );\n};\n\nexport const SymbolPerformanceUIMobile: React.FC<\n SymbolPerformanceUIMobileProps\n> = (props) => {\n const {\n selectedSymbol,\n setSelectedSymbol,\n period,\n onPeriodChange,\n performanceData,\n filterItems,\n onFilter,\n aggregationWindow,\n setAggregationWindow,\n aggregationWindowTypes,\n aggregatedData,\n trades,\n dateRange,\n isNetPnL,\n setIsNetPnL,\n } = props;\n const { t } = useTranslation();\n const symbolsInfo = useSymbolsInfo();\n const [showCumulativePnL, setShowCumulativePnL] = useState(true);\n const [showCumulativeVolume, setShowCumulativeVolume] = useState(false);\n const [showCumulativeFees, setShowCumulativeFees] = useState(false);\n\n // Trim all data based on first non-zero volume to keep all charts aligned\n const getFirstNonZeroVolumeIndex = (data: any[]) => {\n if (!data || data.length === 0) return 0;\n const index = data.findIndex((item) => item.volume && item.volume !== 0);\n return index === -1 ? 0 : index;\n };\n\n // Get available symbols\n const availableSymbols = useMemo(() => {\n const symbols = Object.keys(symbolsInfo);\n return [\n { value: \"ALL_SYMBOLS\", label: \"All Symbols\" },\n ...symbols.map((symbol) => ({\n value: symbol,\n label: symbol.replace(\"PERP_\", \"\").replace(\"_USDC\", \"\"),\n })),\n ];\n }, [symbolsInfo]);\n\n // Combined PnL chart data with trim\n // aggregatedData.periodData contains NET PnL (after fees) and gross PnL values\n const combinedPnLData = useMemo(() => {\n if (!aggregatedData || !aggregatedData.periodData) return [];\n const trimIndex = getFirstNonZeroVolumeIndex(aggregatedData.periodData);\n const trimmedData = aggregatedData.periodData.slice(trimIndex);\n return trimmedData.map((item) => ({\n date: formatDateForChart(item.date, aggregationWindow),\n pnl: isNetPnL ? item.pnl : item.grossPnl,\n }));\n }, [aggregatedData, aggregationWindow, isNetPnL]);\n\n // Combined Volume chart data with trim\n const combinedVolumeData = useMemo(() => {\n if (!aggregatedData || !aggregatedData.periodData) return [];\n const trimIndex = getFirstNonZeroVolumeIndex(aggregatedData.periodData);\n const trimmedData = aggregatedData.periodData.slice(trimIndex);\n return trimmedData.map((item) => ({\n date: formatDateForChart(item.date, aggregationWindow),\n volume: item.volume ?? 0,\n }));\n }, [aggregatedData, aggregationWindow]);\n\n // Combined Fees chart data with trim\n // Fees are shown as negative since they're a cost\n const combinedFeesData = useMemo(() => {\n if (!aggregatedData || !aggregatedData.periodData) return [];\n const trimIndex = getFirstNonZeroVolumeIndex(aggregatedData.periodData);\n const trimmedData = aggregatedData.periodData.slice(trimIndex);\n return trimmedData.map((item) => ({\n date: formatDateForChart(item.date, aggregationWindow),\n fees: -(item.fees ?? 0),\n }));\n }, [aggregatedData, aggregationWindow]);\n\n // Map aggregation window to K-line resolution\n const klineResolution = useMemo(() => {\n switch (aggregationWindow) {\n case \"15m\":\n return \"15m\" as const;\n case \"1h\":\n return \"1h\" as const;\n case \"1d\":\n return \"1d\" as const;\n default:\n return \"1d\" as const;\n }\n }, [aggregationWindow]);\n\n // Fetch K-line data (only if a specific symbol is selected, not \"ALL_SYMBOLS\")\n const isAllSymbols = selectedSymbol === \"ALL_SYMBOLS\";\n const { klines } = useKlineData({\n symbol: !isAllSymbols && selectedSymbol ? selectedSymbol : undefined,\n resolution: klineResolution,\n from: dateRange ? Math.floor(dateRange.from.getTime() / 1000) : undefined,\n to: dateRange ? Math.floor(dateRange.to.getTime() / 1000) : undefined,\n });\n\n // Combine price data - trim to match the trading data range for cross-chart alignment\n // This ensures price chart X-axis aligns with PnL/Volume/Fees charts for easy tracing\n const combinedPriceData = useMemo(() => {\n if (klines.length === 0 || !aggregatedData || !aggregatedData.periodData) {\n return [];\n }\n\n // Get the same trim index as trading data\n const trimIndex = getFirstNonZeroVolumeIndex(aggregatedData.periodData);\n const firstTrimmedEntry = aggregatedData.periodData[trimIndex];\n\n if (!firstTrimmedEntry) {\n return [];\n }\n\n // Filter klines to only include those on or after the first trimmed trading date\n const firstTrimmedDate = new Date(firstTrimmedEntry.date);\n\n return klines\n .filter((k) => {\n const klineDate = new Date(k.timestamp * 1000);\n return klineDate >= firstTrimmedDate;\n })\n .map((k) => {\n const date = new Date(k.timestamp * 1000);\n const formattedDate = formatDateForChart(\n date.toISOString(),\n aggregationWindow,\n );\n\n return {\n date: formattedDate,\n open: k.open,\n high: k.high,\n low: k.low,\n close: k.close,\n };\n });\n }, [klines, aggregatedData, aggregationWindow]);\n\n const isEmptyData =\n !aggregatedData ||\n !aggregatedData.periodData ||\n aggregatedData.periodData.length === 0;\n\n // Build DataFilter items with only date range (symbol selector is separate)\n const dataFilterItems = useMemo(() => {\n const items: Array<{ type: \"range\"; name: string; value: any }> = [];\n\n // Add date range filter if available\n if (filterItems && filterItems.length > 0) {\n const dateRangeFilter = filterItems.find(\n (item) => item.name === \"dateRange\",\n );\n if (dateRangeFilter) {\n items.push({\n type: \"range\" as const,\n name: \"dateRange\",\n value: dateRangeFilter.value,\n });\n }\n }\n\n return items;\n }, [filterItems]);\n\n const handleFilter = (filter: { name: string; value: any }) => {\n if (filter.name === \"dateRange\" && onFilter) {\n onFilter(filter);\n }\n };\n\n // Aggregate trades by symbol\n const symbolSummaryData = useMemo(() => {\n if (!trades || trades.length === 0) return [];\n\n const symbolMap = new Map<\n string,\n { pnl: number; volume: number; fees: number; trades: number }\n >();\n\n trades.forEach((trade: TradeData) => {\n const symbol = trade.symbol;\n if (!symbolMap.has(symbol)) {\n symbolMap.set(symbol, { pnl: 0, volume: 0, fees: 0, trades: 0 });\n }\n\n const current = symbolMap.get(symbol)!;\n const tradeVolume = trade.executed_quantity * trade.executed_price;\n\n current.pnl += trade.realized_pnl || 0;\n current.volume += tradeVolume;\n current.fees += trade.fee || 0;\n current.trades += 1;\n });\n\n // Convert map to array and sort by PnL (highest first)\n return Array.from(symbolMap.entries())\n .map(([symbol, data]) => ({\n symbol,\n ...data,\n }))\n .sort((a, b) => b.pnl - a.pnl)\n .slice(0, 10); // Top 10 symbols\n }, [trades]);\n\n return (\n <div>\n {/* Symbol Selector & Aggregation Window */}\n <Flex gap={2} itemAlign=\"end\" mb={2}>\n <Box className=\"oui-flex-1\">\n <Text size=\"xs\" intensity={54} className=\"oui-mb-2\">\n {t(\"common.symbol\")}\n </Text>\n <SymbolSelector\n value={selectedSymbol || \"\"}\n onValueChange={(value: string) => setSelectedSymbol(value)}\n options={availableSymbols}\n placeholder={t(\"common.symbol\")}\n />\n </Box>\n\n <Box className=\"oui-flex-1\">\n <Text size=\"xs\" intensity={54} className=\"oui-mb-2\">\n {t(\"portfolio.symbolPerformance.aggregation\")}\n </Text>\n <Select.combine\n value={aggregationWindow}\n onValueChange={(value) =>\n setAggregationWindow(value as AggregationWindow)\n }\n options={aggregationWindowTypes.map((type) => ({\n label:\n type === \"15m\" ? \"15 min\" : type === \"1h\" ? \"Hourly\" : \"Daily\",\n value: type,\n }))}\n />\n </Box>\n </Flex>\n\n {/* Date Range Filter */}\n {dataFilterItems && dataFilterItems.length > 0 && (\n <Box mb={4}>\n <DataFilter\n items={dataFilterItems}\n onFilter={handleFilter}\n className=\"oui-border-none oui-py-0\"\n />\n </Box>\n )}\n\n {/* Period Buttons - Below Filters */}\n <Box mb={4}>\n <Tabs\n value={period || \"\"}\n defaultValue={PeriodType.WEEK}\n classNames={{ tabsList: \"oui-justify-between\", trigger: \"oui-w-1/4\" }}\n onValueChange={(value) => onPeriodChange(value as PeriodType)}\n >\n <TabPanel\n title={t(\"common.select.1d\")}\n value={PeriodType.DAY}\n className=\"oui-min-h-0 oui-p-0\"\n />\n <TabPanel\n title={t(\"common.select.7d\")}\n value={PeriodType.WEEK}\n className=\"oui-min-h-0 oui-p-0\"\n />\n <TabPanel\n title={t(\"common.select.30d\")}\n value={PeriodType.MONTH}\n className=\"oui-min-h-0 oui-p-0\"\n />\n <TabPanel\n title={t(\"common.select.90d\")}\n value={PeriodType.QUARTER}\n className=\"oui-min-h-0 oui-p-0\"\n />\n </Tabs>\n </Box>\n\n {/* Key Metrics - Above Charts (match desktop set) */}\n <Grid cols={2} gap={2} mb={2}>\n <Card className=\"oui-bg-base-7 oui-border oui-border-line-4 oui-p-1.5\">\n <Statistic\n label={`${t(\"portfolio.symbolPerformance.totalPnL\")} (Gross)`}\n valueProps={{ coloring: true, showIdentifier: true, dp: 2 }}\n classNames={{ value: \"oui-text-sm oui-font-semibold\" }}\n >\n {performanceData?.grossPnL ?? \"-\"}\n </Statistic>\n </Card>\n <Card className=\"oui-bg-base-7 oui-border oui-border-line-4 oui-p-1.5\">\n <Statistic\n label={t(\"portfolio.symbolPerformance.totalFees\")}\n valueProps={{ dp: 2 }}\n classNames={{ value: \"oui-text-sm\" }}\n >\n {performanceData?.totalFees ?? \"-\"}\n </Statistic>\n </Card>\n <Card className=\"oui-bg-base-7 oui-border oui-border-line-4 oui-p-1.5\">\n <Statistic\n label={`${t(\"portfolio.symbolPerformance.totalPnL\")} (Net)`}\n valueProps={{ coloring: true, showIdentifier: true, dp: 2 }}\n classNames={{ value: \"oui-text-sm oui-font-semibold\" }}\n >\n {performanceData?.totalPnL ?? \"-\"}\n </Statistic>\n </Card>\n <Card className=\"oui-bg-base-7 oui-border oui-border-line-4 oui-p-1.5\">\n <Statistic\n label={t(\"portfolio.symbolPerformance.totalVolume\")}\n valueProps={{ dp: 2 }}\n classNames={{ value: \"oui-text-sm\" }}\n >\n {performanceData?.totalVolume ?? \"-\"}\n </Statistic>\n </Card>\n <Card className=\"oui-bg-base-7 oui-border oui-border-line-4 oui-p-1.5 oui-col-span-2\">\n <Statistic\n label=\"Maker / Taker\"\n classNames={{ value: \"oui-text-sm oui-font-semibold\" }}\n >\n {performanceData ? (\n <MakerTakerShare makerShare={performanceData.makerShare} />\n ) : (\n \"--\"\n )}\n </Statistic>\n </Card>\n </Grid>\n\n {/* Charts - Combined visualization (bars + cumulative line) */}\n <Grid cols={1} gap={4} mb={4}>\n {/* PnL - Combined Bars + Cumulative Line */}\n <Box>\n <Flex justify=\"between\" itemAlign=\"center\" className=\"oui-mb-2\">\n <Text as=\"div\" size=\"xs\">\n {getAggregationLabel(aggregationWindow)}{\" \"}\n {t(\"portfolio.symbolPerformance.realizedPnL\")}\n </Text>\n <Flex gap={1}>\n <button\n onClick={() => setIsNetPnL(false)}\n className={cn(\n \"oui-px-2 oui-py-0.5 oui-rounded oui-text-2xs oui-font-semibold oui-transition-all\",\n !isNetPnL\n ? \"oui-bg-primary-darken oui-text-white\"\n : \"oui-bg-base-5 oui-text-base-contrast-54\",\n )}\n >\n Gross\n </button>\n <button\n onClick={() => setIsNetPnL(true)}\n className={cn(\n \"oui-px-2 oui-py-0.5 oui-rounded oui-text-2xs oui-font-semibold oui-transition-all\",\n isNetPnL\n ? \"oui-bg-primary-darken oui-text-white\"\n : \"oui-bg-base-5 oui-text-base-contrast-54\",\n )}\n >\n Net\n </button>\n <Divider direction=\"vertical\" />\n <Flex itemAlign=\"center\" gap={1}>\n <label className=\"oui-text-2xs oui-text-base-contrast-54\">\n Cum.\n </label>\n <Switch\n checked={showCumulativePnL}\n onCheckedChange={setShowCumulativePnL}\n />\n </Flex>\n </Flex>\n </Flex>\n <Box r=\"md\" className=\"oui-h-[144px] oui-border oui-border-line-4\">\n <CombinedPnLChart\n key={`mobile-pnl-${aggregationWindow}`}\n data={combinedPnLData}\n aggregationWindow={aggregationWindow as \"15m\" | \"1h\" | \"1d\"}\n isMobile={true}\n invisible={isEmptyData}\n showCumulative={showCumulativePnL}\n />\n </Box>\n </Box>\n\n {/* Volume - Combined Bars + Cumulative Line */}\n <Box>\n <Flex justify=\"between\" itemAlign=\"center\" className=\"oui-mb-2\">\n <Text as=\"div\" size=\"xs\">\n {getAggregationLabel(aggregationWindow)}{\" \"}\n {t(\"portfolio.symbolPerformance.volume\")}\n </Text>\n <Flex itemAlign=\"center\" gap={1}>\n <label className=\"oui-text-2xs oui-text-base-contrast-54\">\n Cum.\n </label>\n <Switch\n checked={showCumulativeVolume}\n onCheckedChange={setShowCumulativeVolume}\n />\n </Flex>\n </Flex>\n <Box r=\"md\" className=\"oui-h-[144px] oui-border oui-border-line-4\">\n <CombinedVolumeChart\n key={`mobile-volume-${aggregationWindow}`}\n data={combinedVolumeData}\n aggregationWindow={aggregationWindow as \"15m\" | \"1h\" | \"1d\"}\n isMobile={true}\n invisible={isEmptyData}\n showCumulative={showCumulativeVolume}\n />\n </Box>\n </Box>\n\n {/* Price Chart - Only show when specific symbol is selected */}\n {!isAllSymbols && (\n <Box>\n <Text as=\"div\" size=\"xs\" className=\"oui-mb-2\">\n {getAggregationLabel(aggregationWindow)} Price\n </Text>\n <Box r=\"md\" className=\"oui-h-[144px] oui-border oui-border-line-4\">\n <CombinedPriceChart\n key={`mobile-price-${aggregationWindow}-${selectedSymbol}`}\n data={combinedPriceData}\n aggregationWindow={aggregationWindow as \"15m\" | \"1h\" | \"1d\"}\n isMobile={true}\n invisible={combinedPriceData.length === 0}\n />\n </Box>\n </Box>\n )}\n\n {/* Fees - Combined Bars + Cumulative Line */}\n <Box>\n <Flex justify=\"between\" itemAlign=\"center\" className=\"oui-mb-2\">\n <Text as=\"div\" size=\"xs\">\n {getAggregationLabel(aggregationWindow)}{\" \"}\n {t(\"portfolio.symbolPerformance.fees\")}\n </Text>\n <Flex itemAlign=\"center\" gap={1}>\n <label className=\"oui-text-2xs oui-text-base-contrast-54\">\n Cum.\n </label>\n <Switch\n checked={showCumulativeFees}\n onCheckedChange={setShowCumulativeFees}\n />\n </Flex>\n </Flex>\n <Box r=\"md\" className=\"oui-h-[144px] oui-border oui-border-line-4\">\n <CombinedFeesChart\n key={`mobile-fees-${aggregationWindow}`}\n data={combinedFeesData}\n aggregationWindow={aggregationWindow as \"15m\" | \"1h\" | \"1d\"}\n isMobile={true}\n invisible={isEmptyData}\n showCumulative={showCumulativeFees}\n />\n </Box>\n </Box>\n </Grid>\n\n {/* Symbol Summary - Top Symbols by PnL */}\n {symbolSummaryData.length > 0 && (\n <Box mt={6} mb={4}>\n <Divider className=\"oui-my-6 oui-border-t-2\" intensity={8} />\n <Text as=\"div\" size=\"sm\" weight=\"semibold\" className=\"oui-mb-4\">\n {t(\"portfolio.symbolPerformance.pnlRanking\")}\n </Text>\n <Box className=\"oui-border oui-border-line-4 oui-rounded-md oui-p-3\">\n <PnLRankingChartMobile\n data={symbolSummaryData}\n onSymbolSelect={setSelectedSymbol}\n />\n </Box>\n </Box>\n )}\n </div>\n );\n};\n","import React from \"react\";\nimport { useScreen } from \"@kodiak-finance/orderly-ui\";\nimport { useSymbolPerformanceScript } from \"./symbolPerformance.script\";\nimport { SymbolPerformanceUI } from \"./symbolPerformance.ui\";\nimport { SymbolPerformanceUIMobile } from \"./symbolPerformance.ui.mobile\";\n\nexport const SymbolPerformanceWidget: React.FC<{ symbol?: string }> = ({\n symbol,\n}) => {\n const { isMobile } = useScreen();\n const state = useSymbolPerformanceScript(symbol);\n\n if (isMobile) {\n return <SymbolPerformanceUIMobile {...state} />;\n }\n\n return <SymbolPerformanceUI {...state} />;\n};\n","import React from \"react\";\nimport { Box } from \"@kodiak-finance/orderly-ui\";\nimport { SymbolPerformanceWidget } from \"./symbolPerformance.widget\";\n\nexport const SymbolPerformancePage: React.FC = () => {\n return (\n <Box\n p={6}\n pb={0}\n intensity={900}\n r=\"xl\"\n width=\"100%\"\n style={{\n minHeight: 379,\n maxHeight: 2560,\n overflow: \"auto\",\n }}\n >\n <SymbolPerformanceWidget />\n </Box>\n );\n};\n"]}
|