@kodiak-finance/orderly-ui-scaffold 2.8.19-rc.0 → 2.8.19

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/icons/communtiyIcons.tsx","../src/components/icons/orderlyNetworkTextIcon.tsx","../src/components/icons/signal.tsx","../src/components/icons/infoIcon.tsx","../src/components/icons/closeIcon.tsx","../src/components/icons/orderlyLogo.tsx","../src/components/icons/index.ts","../src/components/restrictedInfo/restrictedInfo.ui.tsx","../src/components/restrictedInfo/restrictedInfo.script.tsx","../src/components/restrictedInfo/restrictedInfo.widget.tsx","../src/components/restrictedInfo/index.ts","../src/components/bottomNav/bottomNav.ui.mobile.tsx","../src/components/bottomNav/bottomNav.widget.tsx","../src/components/bottomNav/tradingMenu.ui.tsx","../src/components/bottomNav/index.ts","../src/components/accountMenu/menu.widget.tsx","../src/components/accountMenu/menu.ui.tsx","../src/components/accountMenu/useWidgetBuilder.script.tsx","../src/components/main/mainNav.script.ts","../src/components/scaffold/scaffold.mobile.ui.tsx","../src/components/main/mainNav.ui.mobile.tsx","../src/components/chainMenu/chainMenu.widget.tsx","../src/components/chainMenu/chainMenu.script.ts","../src/components/chainMenu/chainMenu.ui.tsx","../src/components/chainMenu/chainMenu.ui.mobile.tsx","../src/components/languageSwitcher/languageSwitcher.script.ts","../src/components/languageSwitcher/languageSwitcher.ui.tsx","../src/components/languageSwitcher/widget.tsx","../src/components/leftNav/leftNav.script.ts","../src/components/leftNav/leftNav.ui.tsx","../src/components/main/mainLogo.tsx","../src/components/subAccount/subAccount.script.ts","../src/components/subAccount/useAccountValue.tsx","../src/components/subAccount/subAccount.ui.tsx","../src/components/subAccount/components/accountItem.tsx","../src/components/subAccount/icons.tsx","../src/components/subAccount/components/createSubAccountModal.tsx","../src/components/subAccount/components/common.tsx","../src/components/subAccount/components/editNickNameModal.tsx","../src/components/subAccount/subAccount.widget.tsx","../src/components/leftNav/communityIcon.tsx","../src/components/leftNav/leftNav.widget.tsx","../src/components/scanQRCode/scanQRCode.script.ts","../src/components/scanQRCode/scanQRCode.ui.tsx","../src/components/scanQRCode/scanner.tsx","../src/components/scanQRCode/scanQRCode.widget.tsx","../src/components/main/linkDevice/widget.tsx","../src/components/main/linkDevice/linkDevice.script.tsx","../src/components/main/linkDevice/linkDevice.ui.tsx","../src/components/main/linkDevice/linkDevice.ui.mobile.tsx","../src/components/scaffold/scaffoldContext.ts","../src/components/notification/notification.ui.tsx","../../ui-notification/src/components/announcementCenter/announcementCenter.ui.tsx","../../ui-notification/src/components/announcementCenter/announcementItem.tsx","../../ui-notification/src/components/announcementCenter/icons.tsx","../../ui-notification/src/components/notification/notification.ui.tsx","../../ui-notification/src/components/notification/contentCard.tsx","../../ui-notification/src/pages/announcementCenter.widget.tsx","../../ui-notification/src/pages/announcementCenter.script.tsx","../../ui-notification/src/hooks/useAnnouncement.ts","../src/components/notification/notification.widget.tsx","../src/components/scaffold/scaffold.script.ts","../src/components/scaffold/scaffold.ui.tsx","../src/components/footer/footer.ui.tsx","../src/components/footer/footer.script.tsx","../src/components/footer/footer.widget.tsx","../src/components/sidebar/sidebar.ui.tsx","../src/components/sidebar/useSideNavBuilder.script.tsx","../src/components/sidebar/sidebar.widget.tsx","../src/components/scaffold/scaffoldProvider.tsx","../src/utils/chain.ts","../src/components/scaffold/scaffold.widget.tsx","../src/components/main/mainNav.ui.tsx","../src/components/accountSummary/accountSummary.ui.tsx","../src/components/accountSummary/useWidgetBuilder.script.ts","../src/components/accountSummary/accountSummary.widget.tsx","../src/components/messageCenter/msgCenter.ui.tsx","../src/components/messageCenter/msgCenter.widget.tsx","../src/components/main/campaignButton.tsx","../src/components/main/mainMenus/navItem.tsx","../src/components/main/mainMenus/mainNavMenus.widget.tsx","../src/components/main/mainMenus/mainNavMenus.ui.tsx","../src/components/main/mainNav.widget.tsx","../src/index.ts","../src/components/maintenanceTips/ui.tsx","../src/components/maintenanceTips/script.tsx","../src/components/maintenanceTips/widget.tsx"],"names":["jsx","React","jsxs","useTranslation","cn","Flex","SimpleDialog","useRef","useState","useConfig","useLocalStorage","useAppContext","useMemo","Text","useScreen","PopoverRoot","PopoverContent","Fragment","open","AccountStatusEnum","useAccount","useWalletConnector","Box","Button","modal","DropdownMenuContent","DropdownMenuPortal","DropdownMenuRoot","DropdownMenuTrigger","ChainSelectorDialogId","WalletConnectorModalId","ModalTitle","r","ChainIcon","toast","ChainSelectorSheetId","useCallback","Spinner","Tooltip","context","Divider","useEffect","Decimal","subAccount","holding","forwardRef","nickName","invalid","useChains","useTrack","TrackerEventName","url","Trans","CopyIcon","LinkDeviceIcon","ExtensionSlot","ExtensionPositionEnum","ChevronLeftIcon","EMPTY_LIST","ScrollArea","AnnouncementType","ChevronDownIcon","format","brokerName","NotificationUI","useObserverElement","useContext","CampaignPositionEnum","item","current","Dot","Popover","PopoverAnchor","NavItem","installExtension","Dialog","DialogBody","DialogContent","DialogHeader","DialogTitle","useMaintenanceStatus","UTCDateMini","getTimeString"],"mappings":"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","sourcesContent":["import { BaseIconProps } from \"@kodiak-finance/orderly-ui\";\nimport React from \"react\";\n\nexport const CommuntiyTelegramIcon = React.forwardRef<\n SVGSVGElement,\n BaseIconProps\n>((props, ref) => {\n const { size = 20, ...rest } = props;\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 20 20\"\n ref={ref}\n fill=\"#fff\"\n fillOpacity=\".54\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...rest}\n >\n <path d=\"M4.108 9.464S9.645 7.13 11.565 6.31c.736-.328 3.233-1.38 3.233-1.38s1.152-.46 1.056.658c-.032.46-.288 2.069-.544 3.81-.384 2.463-.8 5.157-.8 5.157s-.064.755-.608.887c-.544.13-1.44-.46-1.6-.592-.129-.098-2.401-1.576-3.233-2.299-.224-.197-.48-.591.032-1.051a124 124 0 0 0 3.36-3.285c.384-.394.768-1.313-.832-.197-2.272 1.61-4.513 3.12-4.513 3.12s-.512.33-1.472.034-2.08-.69-2.08-.69-.768-.493.544-1.018\" />\n </svg>\n );\n});\nexport const CommuntiyDiscordIcon = React.forwardRef<\n SVGSVGElement,\n BaseIconProps\n>((props, ref) => {\n const { size = 20, ...rest } = props;\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 20 20\"\n ref={ref}\n fill=\"#fff\"\n fillOpacity=\".54\"\n {...rest}\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M14.956 5.522c1.604 2.374 2.396 5.053 2.1 8.136a.05.05 0 0 1-.02.033 11.7 11.7 0 0 1-3.55 1.805.045.045 0 0 1-.05-.017 9.6 9.6 0 0 1-.725-1.188.046.046 0 0 1 .024-.063 7 7 0 0 0 1.108-.531.046.046 0 0 0 .004-.076 6 6 0 0 1-.22-.174.04.04 0 0 0-.047-.006c-2.296 1.068-4.812 1.068-7.136 0a.04.04 0 0 0-.046.006 6 6 0 0 1-.22.174.046.046 0 0 0 .005.076c.353.204.721.384 1.107.531.025.01.037.039.025.063a8.5 8.5 0 0 1-.725 1.188.05.05 0 0 1-.05.017 11.7 11.7 0 0 1-3.546-1.805.05.05 0 0 1-.018-.033c-.248-2.667.257-5.368 2.097-8.137a.04.04 0 0 1 .02-.016 11.6 11.6 0 0 1 2.89-.903.05.05 0 0 1 .046.022c.125.224.269.51.366.744a10.7 10.7 0 0 1 3.246 0 8 8 0 0 1 .36-.744.044.044 0 0 1 .046-.022 11.7 11.7 0 0 1 2.89.903q.012.005.019.017m-6.018 5.07c.011-.788-.56-1.44-1.276-1.44-.71 0-1.276.647-1.276 1.44 0 .795.576 1.442 1.276 1.442.71 0 1.276-.647 1.276-1.441m4.718 0c.011-.788-.56-1.44-1.276-1.44-.71 0-1.276.647-1.276 1.44 0 .795.577 1.442 1.276 1.442.717 0 1.276-.647 1.276-1.441\" />\n </svg>\n );\n});\nexport const CommuntiyXIcon = React.forwardRef<\n SVGSVGElement,\n BaseIconProps\n>((props, ref) => {\n const { size = 20, ...rest } = props;\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 20 20\"\n ref={ref}\n fill=\"#fff\"\n fillOpacity=\".54\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...rest}\n >\n <path d=\"m4.42 4.73 4.633 6.194-4.662 5.037H5.44l4.082-4.41 3.298 4.41h3.57l-4.893-6.543 4.34-4.689h-1.05l-3.759 4.062-3.037-4.062zm1.543.772h1.64l7.244 9.686h-1.64z\" />\n </svg>\n );\n});\n\nCommuntiyXIcon.displayName = \"CommuntiyXIcon\";\nCommuntiyTelegramIcon.displayName = \"CommuntiyTelegramIcon\";\nCommuntiyDiscordIcon.displayName = \"CommuntiyDiscordIcon\";\n","import React from \"react\";\nimport { BaseIconProps } from \"@kodiak-finance/orderly-ui\";\n\nexport const OrderlyTextIcon = React.forwardRef<SVGSVGElement, BaseIconProps>(\n (props, ref) => {\n const { opacity = 1, ...rest } = props;\n return (\n <svg\n ref={ref}\n width=\"45\"\n height=\"14\"\n viewBox=\"0 0 45 14\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...rest}\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M8.352 2.558a.063.063 0 0 1-.04.112H2.419a.063.063 0 0 1-.04-.112A4.73 4.73 0 0 1 5.365 1.5c1.132 0 2.171.396 2.987 1.058M3.518 7.546a.18.18 0 0 0-.148-.08H.886a.085.085 0 0 0-.083.11 4.75 4.75 0 0 0 4.562 3.429 4.75 4.75 0 0 0 4.562-3.43.085.085 0 0 0-.082-.108H7.36a.18.18 0 0 0-.148.079 2.252 2.252 0 0 1-3.694 0m3.518-2.812a.18.18 0 0 0 .134.061h2.598c.06 0 .101-.057.082-.113a4.8 4.8 0 0 0-.801-1.432.17.17 0 0 0-.132-.062H1.814a.17.17 0 0 0-.132.062A4.8 4.8 0 0 0 .88 4.682a.085.085 0 0 0 .081.113h2.6c.05 0 .099-.023.133-.06a2.25 2.25 0 0 1 1.67-.742c.663 0 1.258.286 1.67.741M7.6 6.95a.067.067 0 0 1-.063-.086 2.26 2.26 0 0 0-.079-1.45.067.067 0 0 1 .061-.093h2.45c.03 0 .058.022.063.052a4.8 4.8 0 0 1 .04 1.52.064.064 0 0 1-.065.057zm-4.407-.086a.067.067 0 0 1-.063.086H.723a.064.064 0 0 1-.064-.056 4.8 4.8 0 0 1 .039-1.52.065.065 0 0 1 .063-.053h2.45c.047 0 .079.049.061.093a2.25 2.25 0 0 0-.079 1.45\"\n fill=\"#fff\"\n fillOpacity={opacity}\n />\n <path\n d=\"M11.272 4.438h1.685v1.61l-.275-.312q.237-.511.662-.874.425-.361.949-.487.524-.124 1.073.038v1.585q-.661-.224-1.223-.125-.55.1-.874.475-.312.375-.312.923v3.608h-1.685zm4.148 3.22q0-.923.4-1.697.41-.774 1.123-1.211a2.95 2.95 0 0 1 1.573-.437 2.7 2.7 0 0 1 1.523.437 2.8 2.8 0 0 1 1.01 1.198q.363.762.363 1.71 0 .95-.362 1.71-.35.762-1.011 1.199a2.7 2.7 0 0 1-1.523.437 2.95 2.95 0 0 1-1.573-.437 3.1 3.1 0 0 1-1.124-1.198 3.7 3.7 0 0 1-.4-1.71m1.748 0q0 .5.224.924.225.412.612.65.387.236.861.236.475 0 .862-.237.386-.237.611-.649.225-.424.225-.924 0-.498-.225-.91-.225-.425-.611-.65a1.6 1.6 0 0 0-.862-.237q-.474 0-.861.237a1.6 1.6 0 0 0-.612.65q-.224.412-.224.91m3.395-6.016h1.685v9.237h-1.685zm4.192 5.329h3.97l-.387.537a2 2 0 0 0-.25-.9 1.63 1.63 0 0 0-.612-.623 1.64 1.64 0 0 0-.861-.225q-.487 0-.886.25a1.6 1.6 0 0 0-.625.686 2.1 2.1 0 0 0-.224.961q0 .537.224.974.239.436.662.687.425.25.961.25.525 0 .937-.238.423-.25.661-.674l1.386.624q-.45.787-1.236 1.26-.786.463-1.798.463-.96 0-1.747-.437a3.3 3.3 0 0 1-1.248-1.198 3.34 3.34 0 0 1-.45-1.71q0-.924.437-1.686.45-.775 1.223-1.21.774-.45 1.723-.45 1.061 0 1.885.537.825.536 1.21 1.448.4.898.226 1.96h-5.181zm6.221-2.534h1.685v1.61l-.274-.312q.237-.511.661-.874.425-.361.949-.487.525-.124 1.073.038v1.585q-.661-.224-1.223-.125-.549.1-.874.475-.312.375-.312.923v3.608h-1.685zm4.885-2.796h1.686v9.237H35.86zm4.359 9.324q.224.487.587.737.362.262.836.262.711 0 1.186-.5.487-.486.487-1.26V9.08l.262.35a2.43 2.43 0 0 1-.911 1.011q-.6.362-1.373.362-.8 0-1.386-.337a2.3 2.3 0 0 1-.886-.936q-.312-.6-.312-1.386V4.438h1.685v3.408q0 .436.162.761.162.312.462.5.312.174.761.174.45 0 .8-.175a1.3 1.3 0 0 0 .549-.511q.187-.338.187-.75V4.439H45v5.767q0 .936-.45 1.685a3.07 3.07 0 0 1-1.21 1.186 3.4 3.4 0 0 1-1.698.424q-.973 0-1.735-.474a3.3 3.3 0 0 1-1.186-1.26z\"\n fill=\"#fff\"\n fillOpacity={opacity}\n />\n </svg>\n );\n }\n);\n","import { BaseIconProps } from \"@kodiak-finance/orderly-ui\";\nimport React from \"react\";\n// import { BaseIcon, BaseIconProps } from \"./baseIcon\";\n\nexport const SignalIcon = React.forwardRef<SVGSVGElement, BaseIconProps>(\n (props, ref) => {\n const { size = 18, ...rest } = props;\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 18 18\"\n ref={ref}\n className=\"oui-fill-success-light\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...rest}\n >\n <path d=\"M9.02092 2.92969C6.18562 2.92969 3.51037 4.13854 1.68502 6.18754C1.40947 6.49676 1.446 6.96671 1.75537 7.24218C2.0646 7.51743 2.53447 7.48143 2.81002 7.17183C4.35112 5.44196 6.6141 4.42969 9.02092 4.42969C11.4205 4.42969 13.6369 5.43123 15.185 7.17183C15.4603 7.48143 15.9301 7.51743 16.2397 7.24218C16.5492 6.96694 16.5853 6.49699 16.31 6.18754C14.4787 4.12856 11.8512 2.92969 9.02092 2.92969ZM9.02092 5.92969C7.04092 5.92969 5.20867 6.78461 3.93502 8.25019C3.6633 8.56294 3.6927 9.03318 4.00537 9.30468C4.31797 9.57618 4.7883 9.54693 5.06002 9.23418C6.05175 8.09343 7.47982 7.42968 9.02092 7.42968C10.5348 7.42968 11.9446 8.08144 12.935 9.18769C13.2113 9.49593 13.681 9.51093 13.9897 9.23418C14.2983 8.95818 14.3364 8.48793 14.06 8.17968C12.7879 6.75896 10.9659 5.92969 9.02092 5.92969ZM9.02092 8.92968C7.91917 8.92968 6.89242 9.40218 6.18502 10.2189C5.91375 10.5317 5.94225 11.0019 6.25537 11.2734C6.56835 11.5449 7.03875 11.5164 7.31002 11.2029C7.73542 10.7124 8.3589 10.4297 9.02092 10.4297C9.6684 10.4297 10.2604 10.7072 10.685 11.1797C10.962 11.4879 11.4552 11.5037 11.7631 11.2262C12.0712 10.9494 12.087 10.4799 11.81 10.1717C11.1037 9.38643 10.0983 8.92968 9.02092 8.92968ZM8.99752 11.9297C8.81609 11.9297 8.64374 12.0047 8.50537 12.1404C8.50537 12.1404 7.3935 13.2362 6.95842 13.6637C6.52342 14.0919 6.7968 14.9319 7.49752 14.9297H9.63037H10.4975C11.1864 14.9319 11.477 14.0739 11.0366 13.6404C10.5961 13.2069 9.51322 12.1404 9.51314 12.1404C9.37469 12.0047 9.17894 11.9297 8.99752 11.9297Z\" />\n </svg>\n );\n }\n);\n\nSignalIcon.displayName = \"SignalIcon\";\n","import React, { FC } from \"react\";\nimport { SVGProps } from \"react\";\n\nexport interface IconProps extends SVGProps<SVGSVGElement> {\n size: number;\n}\n\nexport const InfoIcon: FC<IconProps> = (props) => {\n const { size = 20, viewBox, ...rest } = props;\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={`${size}px`}\n height={`${size}px`}\n fill=\"none\"\n viewBox={`0 0 20 20`}\n {...rest}\n >\n <path\n d=\"M10.012 1.66602C5.40954 1.66602 1.67871 5.39685 1.67871 9.99935C1.67871 14.6018 5.40954 18.3327 10.012 18.3327C14.6145 18.3327 18.3454 14.6018 18.3454 9.99935C18.3454 5.39685 14.6145 1.66602 10.012 1.66602ZM10.012 5.83268C10.472 5.83268 10.8454 6.20602 10.8454 6.66602V10.8327C10.8454 11.2927 10.472 11.666 10.012 11.666C9.55204 11.666 9.17871 11.2927 9.17871 10.8327V6.66602C9.17871 6.20602 9.55204 5.83268 10.012 5.83268ZM10.012 12.4993C10.472 12.4993 10.8454 12.8727 10.8454 13.3327C10.8454 13.7927 10.472 14.166 10.012 14.166C9.55204 14.166 9.17871 13.7927 9.17871 13.3327C9.17871 12.8727 9.55204 12.4993 10.012 12.4993Z\"\n fill=\"#FF7D00\"\n />\n </svg>\n );\n};\n","import React from \"react\";\nimport { SVGProps } from \"react\";\n\nexport interface IconProps extends SVGProps<SVGSVGElement> {\n size: number;\n}\n\nexport const CloseIcon: React.FC<IconProps> = (props) => {\n const { size = 16, ...rest } = props;\n return (\n <svg\n width={`${size}px`}\n height={`${size}px`}\n viewBox=\"0 0 16 16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...rest}\n >\n <path\n d=\"M3.32972 2.60449C3.15912 2.60449 2.98072 2.66183 2.85052 2.79183C2.59019 3.0525 2.59019 3.48982 2.85052 3.75049L7.03806 7.93782L2.85052 12.1252C2.59019 12.3858 2.59019 12.8232 2.85052 13.0838C3.11092 13.3438 3.54852 13.3438 3.80892 13.0838L7.99639 8.89649L12.1839 13.0838C12.4443 13.3438 12.8819 13.3438 13.1423 13.0838C13.4026 12.8232 13.4026 12.3858 13.1423 12.1252L8.95472 7.93782L13.1423 3.75049C13.4026 3.48982 13.4026 3.0525 13.1423 2.79183C13.0121 2.66183 12.8336 2.60449 12.6631 2.60449C12.4925 2.60449 12.3141 2.66183 12.1839 2.79183L7.99639 6.97916L3.80892 2.79183C3.67872 2.66183 3.50032 2.60449 3.32972 2.60449Z\"\n fill=\"currentColor\"\n />\n </svg>\n );\n};\n","import { FC } from \"react\";\nimport { SVGProps } from \"react\";\n\nexport const OrderlyLogo: FC<SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg\n width=\"200\"\n height=\"24\"\n viewBox=\"0 0 200 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path\n d=\"M22.2637 18.5152H26.1444V13.3629C26.1444 10.2669 27.9664 9.39239 29.6701 9.39239C29.9777 9.39239 30.2617 9.41602 30.6639 9.46329V6.20176C30.2853 6.10722 29.9777 6.08359 29.7174 6.08359C27.8481 6.08359 26.6886 7.3362 26.2153 9.27421H26.1444V6.22539H22.2637V18.5152Z\"\n fill=\"white\"\n />\n <path\n d=\"M37.3191 18.7516C39.1411 18.7516 40.3952 17.7826 40.7265 16.8608V18.5152H44.6072V1.97122H40.7265V7.87979C40.3952 6.95806 39.1411 5.98905 37.3191 5.98905C34.8108 5.98905 31.9713 7.83252 31.9713 12.3703C31.9713 16.9317 34.8108 18.7516 37.3191 18.7516ZM35.6153 12.3703C35.6153 10.196 36.9168 9.20331 38.2892 9.20331C39.638 9.20331 40.8921 10.196 40.8921 12.3703C40.8921 14.5447 39.638 15.5373 38.2892 15.5373C36.9168 15.5373 35.6153 14.5447 35.6153 12.3703Z\"\n fill=\"white\"\n />\n <path\n d=\"M53.418 18.7516C56.4468 18.7516 58.6475 17.1917 59.2154 14.3556H55.8079C55.595 15.1592 55.0744 15.8209 53.489 15.8209C51.9746 15.8209 51.0281 15.1355 50.8151 13.3393H59.31C59.3573 13.0557 59.381 12.8194 59.381 12.3703C59.381 7.57255 56.5888 5.98905 53.418 5.98905C50.1289 5.98905 47.1474 7.73799 47.1474 12.323C47.1474 17.0972 50.3655 18.7516 53.418 18.7516ZM50.8388 11.0941C51.0754 9.676 51.8799 8.9197 53.3234 8.9197C55.0981 8.9197 55.6423 10.0305 55.7133 11.0941H50.8388Z\"\n fill=\"white\"\n />\n <path\n d=\"M61.8978 18.5152H65.7784V13.3629C65.7784 10.2669 67.6005 9.39239 69.3042 9.39239C69.6118 9.39239 69.8957 9.41602 70.298 9.46329V6.20176C69.9194 6.10722 69.6118 6.08359 69.3515 6.08359C67.4821 6.08359 66.3227 7.3362 65.8494 9.27421H65.7784V6.22539H61.8978V18.5152Z\"\n fill=\"white\"\n />\n <path\n d=\"M72.5672 18.5152H76.4479V1.97122H72.5672V18.5152Z\"\n fill=\"white\"\n />\n <path\n d=\"M79.8261 20.0278V23.2893C83.6358 23.6911 85.2212 22.4149 86.8776 18.3734L91.8468 6.22539H87.8714L85.1739 13.5757L82.5473 6.22539H78.5957L83.0679 17.2626C83.3755 17.9953 83.3992 18.3734 83.1389 18.9643C82.9259 19.437 82.3817 20.3587 79.8261 20.0278Z\"\n fill=\"white\"\n />\n <path\n d=\"M100.278 18.5152H104.229V8.63609H104.324L110.287 18.5152H114.546V1.97122H110.571V12.1103H110.476L104.371 1.97122H100.278V18.5152Z\"\n fill=\"white\"\n />\n <path\n d=\"M123.327 18.7516C126.356 18.7516 128.557 17.1917 129.125 14.3556H125.717C125.504 15.1592 124.984 15.8209 123.398 15.8209C121.884 15.8209 120.937 15.1355 120.724 13.3393H129.219C129.267 13.0557 129.29 12.8194 129.29 12.3703C129.29 7.57255 126.498 5.98905 123.327 5.98905C120.038 5.98905 117.057 7.73799 117.057 12.323C117.057 17.0972 120.275 18.7516 123.327 18.7516ZM120.748 11.0941C120.985 9.676 121.789 8.9197 123.233 8.9197C125.007 8.9197 125.552 10.0305 125.623 11.0941H120.748Z\"\n fill=\"white\"\n />\n <path\n d=\"M137.439 18.6807C138.172 18.6807 138.882 18.5861 139.474 18.4207V15.5609C138.93 15.6082 138.717 15.6082 138.456 15.6082C137.202 15.6082 136.966 14.9228 136.966 14.072V9.22695H139.379V6.22539H136.966V3.01113H133.085V6.22539H130.979V9.22695H133.085V14.6156C133.085 17.4753 134.789 18.6807 137.439 18.6807Z\"\n fill=\"white\"\n />\n <path\n d=\"M144.456 18.5152H148.833L150.797 11.3777L152.761 18.5152H157.115L160.333 6.22539H156.666L154.749 14.781H154.654L152.454 6.22539H149.117L146.917 14.781H146.822L144.905 6.22539H141.261L144.456 18.5152Z\"\n fill=\"white\"\n />\n <path\n d=\"M167.796 18.7516C170.896 18.7516 174.043 16.8845 174.043 12.3703C174.043 7.85616 170.896 5.98905 167.796 5.98905C164.673 5.98905 161.549 7.85616 161.549 12.3703C161.549 16.8845 164.673 18.7516 167.796 18.7516ZM165.169 12.3703C165.169 10.196 166.282 9.20331 167.796 9.20331C169.287 9.20331 170.399 10.196 170.399 12.3703C170.399 14.5447 169.287 15.5373 167.796 15.5373C166.282 15.5373 165.169 14.5447 165.169 12.3703Z\"\n fill=\"white\"\n />\n <path\n d=\"M176.554 18.5152H180.434V13.3629C180.434 10.2669 182.256 9.39239 183.96 9.39239C184.268 9.39239 184.552 9.41602 184.954 9.46329V6.20176C184.575 6.10722 184.268 6.08359 184.007 6.08359C182.138 6.08359 180.979 7.3362 180.505 9.27421H180.434V6.22539H176.554V18.5152Z\"\n fill=\"white\"\n />\n <path\n d=\"M187.223 18.5152H191.104V14.9701L192.074 13.9302L195.742 18.5152H200.001L194.44 11.4249L199.362 6.22539H195.126L191.104 10.8104V1.97122H187.223V18.5152Z\"\n fill=\"white\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M9.66235 0.640167L9.70838 0.640167C12.1367 0.64581 14.355 1.54403 16.052 3.02375C16.1722 3.1286 16.0961 3.32102 15.9365 3.32102L3.43427 3.32102C3.27465 3.32102 3.1985 3.1286 3.31874 3.02375C5.01571 1.54403 7.23406 0.645809 9.66235 0.640167Z\"\n fill=\"white\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M5.9175 12.9472C5.84821 12.8485 5.73663 12.7865 5.61594 12.7865L0.606422 12.7865C0.461299 12.7865 0.355489 12.924 0.39667 13.063C1.58273 17.0661 5.29234 19.9869 9.68495 19.9869C14.0776 19.9869 17.7872 17.0661 18.9732 13.063C19.0144 12.924 18.9086 12.7865 18.7635 12.7865L13.754 12.7865C13.6333 12.7865 13.5218 12.8485 13.4525 12.9472C12.6208 14.1317 11.2434 14.9061 9.68499 14.9061C8.12654 14.9061 6.74917 14.1317 5.9175 12.9472Z\"\n fill=\"white\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M13.3322 7.51577C13.4208 7.63078 13.5556 7.7029 13.7009 7.7029L18.7216 7.7029C18.868 7.7029 18.9741 7.56325 18.9304 7.42361C18.551 6.2113 17.9392 5.10154 17.147 4.14637C17.0811 4.06686 16.9826 4.02197 16.8792 4.02197L2.4903 4.02197C2.38694 4.02197 2.28845 4.06686 2.22251 4.14637C1.43037 5.10153 0.818541 6.2113 0.439134 7.42361C0.395431 7.56325 0.501494 7.7029 0.647976 7.7029L5.66868 7.7029C5.81394 7.7029 5.9488 7.63078 6.03735 7.51577C6.87801 6.42387 8.19911 5.72017 9.68478 5.72017C11.1704 5.72017 12.4916 6.42387 13.3322 7.51577Z\"\n fill=\"white\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M14.1283 12.0868C14.0334 12.0868 13.969 11.9902 14.0018 11.9013C14.184 11.4069 14.2835 10.8724 14.2835 10.3148C14.2835 9.70687 14.1652 9.12653 13.9505 8.59547C13.9142 8.50592 13.9788 8.40582 14.0755 8.40582L19.0003 8.40582C19.1057 8.40582 19.1968 8.48012 19.2156 8.58377C19.3172 9.14546 19.3702 9.72401 19.3702 10.3149C19.3702 10.8567 19.3256 11.3881 19.2399 11.9057C19.2225 12.0108 19.1307 12.0868 19.0241 12.0868L14.1283 12.0868ZM5.36846 11.9013C5.40122 11.9902 5.33678 12.0868 5.24195 12.0868L0.346163 12.0868C0.239492 12.0868 0.147732 12.0108 0.130321 11.9057C0.0445957 11.3881 0 10.8567 0 10.3149C0 9.72401 0.0530502 9.14546 0.154653 8.58377C0.173403 8.48011 0.264481 8.40582 0.369941 8.40582L5.29476 8.40582C5.39146 8.40582 5.45599 8.50592 5.41977 8.59547C5.20498 9.12653 5.08673 9.70687 5.08673 10.3148C5.08673 10.8724 5.18623 11.4069 5.36846 11.9013Z\"\n fill=\"white\"\n />\n </svg>\n );\n};\n","export {\n CommuntiyXIcon,\n CommuntiyTelegramIcon,\n CommuntiyDiscordIcon,\n} from \"./communtiyIcons\";\nexport { OrderlyTextIcon } from \"./orderlyNetworkTextIcon\";\nexport { SignalIcon } from \"./signal\";\nexport { InfoIcon } from \"./infoIcon\";\nexport { CloseIcon } from \"./closeIcon\";\nexport { OrderlyLogo } from \"./orderlyLogo\";\n","import { FC } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { Checkbox, cn, Flex, SimpleDialog } from \"@kodiak-finance/orderly-ui\";\nimport { InfoIcon } from \"../icons\";\nimport type { UseRestrictedInfoScriptReturn } from \"./restrictedInfo.script\";\n\nexport type RestrictedInfoProps = UseRestrictedInfoScriptReturn & {\n className?: string;\n};\n\nexport const RestrictedInfo: FC<RestrictedInfoProps> = (props) => {\n const { brokerName, agree, setAgree } = props;\n const {\n ip,\n content,\n restrictedOpen,\n canUnblock,\n accessRestricted,\n setAccessRestricted,\n } = props.restrictedInfo || {};\n const { t } = useTranslation();\n\n // if user region is in the canUnblock regions and accessRestricted is not set, show the dialog\n if (restrictedOpen && canUnblock && accessRestricted === undefined) {\n return (\n <SimpleDialog\n open={canUnblock}\n title={t(\"restrictedInfo.accessRestricted\")}\n size=\"sm\"\n closable={false}\n actions={{\n secondary: {\n label: t(\"common.cancel\"),\n onClick: () => {\n setAccessRestricted(true);\n },\n size: \"md\",\n },\n primary: {\n label: t(\"common.confirm\"),\n onClick: async () => {\n setAccessRestricted(false);\n },\n size: \"md\",\n disabled: !agree,\n },\n }}\n >\n {t(\"restrictedInfo.accessRestricted.description\")}\n\n <Flex gapX={1} pt={2}>\n <Checkbox\n id=\"orderConfirm\"\n color={\"white\"}\n checked={agree}\n onCheckedChange={(checked) => {\n setAgree(!!checked);\n }}\n />\n <label htmlFor=\"orderConfirm\" className=\"oui-cursor-pointer\">\n {t(\"restrictedInfo.accessRestricted.agree\")}\n </label>\n </Flex>\n </SimpleDialog>\n );\n }\n\n if (!restrictedOpen) {\n return;\n }\n\n const renderContent = () => {\n if (typeof content === \"function\") {\n return <span>{content({ ip: ip!, brokerName })}</span>;\n }\n return (\n content || (\n <span>\n {t(\"restrictedInfo.description.default\", {\n brokerName,\n ip,\n })}\n </span>\n )\n );\n };\n\n return (\n <Flex\n ref={props.container}\n justify=\"center\"\n className={cn(\n \"oui-restricted-info\",\n \"oui-rounded-xl oui-p-[7px]\",\n \"oui-text-warning-darken\",\n props.className,\n )}\n >\n <Flex\n className={cn(\n \"oui-min-h-[20px] oui-gap-1\",\n \"oui-text-2xs oui-leading-4 md:oui-text-sm\",\n \"oui-items-start lg:oui-justify-center\",\n props.mutiLine ? \"lg:oui-items-start\" : \"lg:oui-items-center\",\n )}\n >\n <InfoIcon size={20} className=\"oui-size-4 oui-shrink-0 lg:oui-size-5\" />\n {renderContent()}\n </Flex>\n </Flex>\n );\n};\n","import { useRef, useState } from \"react\";\nimport { useConfig, useLocalStorage } from \"@kodiak-finance/orderly-hooks\";\nimport { useAppContext } from \"@kodiak-finance/orderly-react-app\";\nimport { useObserverElement } from \"@kodiak-finance/orderly-ui\";\n\nexport type UseRestrictedInfoScriptReturn = ReturnType<\n typeof useRestrictedInfoScript\n> & {\n brokerName?: string;\n};\n\nexport const useRestrictedInfoScript = () => {\n const { restrictedInfo } = useAppContext();\n const brokerName = useConfig(\"brokerName\");\n const container = useRef<HTMLDivElement>(null);\n const [mutiLine, setMutiLine] = useState(false);\n const [agree, setAgree] = useState(false);\n\n const [canUnblock, setCanUnblock] = useLocalStorage(\n \"orderly_unblock_restricted\",\n true,\n );\n\n useObserverElement(container.current, (entry) => {\n setMutiLine(entry.contentRect.height > 28);\n });\n\n return {\n restrictedInfo,\n brokerName,\n container,\n mutiLine,\n agree,\n setAgree,\n };\n};\n","import { FC } from \"react\";\nimport { useRestrictedInfoScript } from \"./restrictedInfo.script\";\nimport { RestrictedInfo, RestrictedInfoProps } from \"./restrictedInfo.ui\";\n\nexport type RestrictedInfoWidgetProps = Pick<RestrictedInfoProps, \"className\">;\n\nexport const RestrictedInfoWidget: FC<RestrictedInfoWidgetProps> = (props) => {\n const state = useRestrictedInfoScript();\n return <RestrictedInfo {...props} {...state} />;\n};\n","export { RestrictedInfo } from \"./restrictedInfo.ui\";\nexport { RestrictedInfoWidget } from \"./restrictedInfo.widget\";\nexport { useRestrictedInfoScript } from \"./restrictedInfo.script\";\n","import React, { useMemo } from \"react\";\nimport type { RouterAdapter } from \"@kodiak-finance/orderly-types\";\nimport { Flex, Text } from \"@kodiak-finance/orderly-ui\";\nimport { BottomNavItem } from \"./bottomNav.widget\";\n\nexport type BottomNavProps = {\n mainMenus?: BottomNavItem[];\n current?: string | string[];\n onRouteChange?: RouterAdapter[\"onRouteChange\"];\n};\n\nexport const BottomNav: React.FC<BottomNavProps> = (props) => {\n const { mainMenus, current, onRouteChange } = props;\n\n const isSubmenu = useMemo(() => {\n return mainMenus?.every((menu) => menu.href !== current);\n }, [mainMenus, current]);\n\n const menus = useMemo(() => {\n return mainMenus?.map((menu) => {\n const isActive = current === menu.href;\n const isExternalLink =\n menu.href.startsWith(\"http://\") || menu.href.startsWith(\"https://\");\n // const isTrading = menu.href === \"/\" || /trading/i.test(menu.name);\n return (\n <Flex\n key={menu.name}\n direction={\"column\"}\n itemAlign={\"center\"}\n justify={\"center\"}\n className=\"oui-flex-1\"\n onClick={() => {\n if (isExternalLink) {\n window.location.href = menu.href;\n } else {\n onRouteChange?.({ href: menu.href, name: menu.name });\n }\n }}\n >\n {/* TODO: add new trading menu when ai is ready */}\n {/* {isTrading ? (\n <BottomNavTradingMenu\n label={menu.name}\n active={!!isActive}\n activeIcon={menu.activeIcon}\n inactiveIcon={menu.inactiveIcon}\n onNavigate={() =>\n onRouteChange?.({ href: menu.href, name: menu.name })\n }\n />\n ) : (\n <Text>{isActive ? menu.activeIcon : menu.inactiveIcon}</Text>\n )} */}\n <Text>{isActive ? menu.activeIcon : menu.inactiveIcon}</Text>\n <Text size=\"2xs\" intensity={isActive ? 98 : 36}>\n {menu.name}\n </Text>\n </Flex>\n );\n });\n }, [mainMenus, current, onRouteChange]);\n\n if (isSubmenu || !mainMenus) {\n return null;\n }\n\n return (\n <Flex\n width={\"100%\"}\n height={64}\n px={3}\n itemAlign={\"center\"}\n justify={\"between\"}\n className=\"oui-border-t oui-border-line-4 oui-bg-base-9\"\n >\n {menus}\n </Flex>\n );\n};\n","import React, { ReactNode } from \"react\";\nimport { type RouterAdapter } from \"@kodiak-finance/orderly-types\";\nimport { useScreen } from \"@kodiak-finance/orderly-ui\";\nimport { BottomNav } from \"./bottomNav.ui.mobile\";\n\nexport type BottomNavItem = {\n name: string;\n href: string;\n activeIcon: ReactNode;\n inactiveIcon: ReactNode;\n};\n\nexport type BottomNavProps = {\n mainMenus?: BottomNavItem[];\n current?: string;\n onRouteChange?: RouterAdapter[\"onRouteChange\"];\n};\n\nexport const BottomNavWidget: React.FC<BottomNavProps> = (props) => {\n const { isMobile } = useScreen();\n const { mainMenus, ...rest } = props;\n return isMobile ? <BottomNav mainMenus={mainMenus} {...rest} /> : null;\n};\n","import React, { useState } from \"react\";\nimport {\n Flex,\n PopoverRoot,\n PopoverTrigger,\n PopoverContent,\n Text,\n SpotIcon,\n PerpsIcon,\n SelectedChoicesFillIcon,\n PopupUnionIcon,\n CloseRoundFillIcon,\n} from \"@kodiak-finance/orderly-ui\";\nimport { cn } from \"@kodiak-finance/orderly-ui\";\n\ntype TradingMenuChoiceProps = {\n icon: React.ReactNode;\n label: string;\n selected?: boolean;\n onClick?: () => void;\n className?: string;\n};\n\nconst TradingMenuChoice: React.FC<TradingMenuChoiceProps> = (props) => {\n const { icon, label, selected, onClick, className } = props;\n return (\n <Flex\n itemAlign=\"center\"\n className={cn(\n \"oui-w-full oui-px-2 oui-py-3\",\n \"oui-rounded-md\",\n \"oui-cursor-pointer\",\n className,\n )}\n onClick={onClick}\n >\n <Flex gap={2} itemAlign=\"center\">\n {icon}\n <Text size=\"sm\" intensity={80} weight=\"semibold\">\n {label}\n </Text>\n </Flex>\n <Flex className=\"oui-ml-auto\">\n {selected ? <SelectedChoicesFillIcon size={14} /> : null}\n </Flex>\n </Flex>\n );\n};\n\nexport type BottomNavTradingMenuProps = {\n active: boolean;\n activeIcon: React.ReactNode;\n inactiveIcon: React.ReactNode;\n label: string;\n onNavigate: () => void;\n};\n\nexport const BottomNavTradingMenu: React.FC<BottomNavTradingMenuProps> = (\n props,\n) => {\n const { active, activeIcon, inactiveIcon, onNavigate, label } = props;\n const [open, setOpen] = useState(false);\n\n const onClickTrigger = () => {\n if (!active) {\n onNavigate();\n return;\n }\n setOpen((v) => !v);\n };\n\n return (\n <PopoverRoot open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n {!open ? (\n <>\n <Flex\n width={48}\n height={48}\n r=\"full\"\n itemAlign={\"center\"}\n justify={\"center\"}\n className=\"oui-bg-base-7 oui--mt-6\"\n onClick={onClickTrigger}\n >\n {active ? activeIcon : inactiveIcon}\n </Flex>\n <Text\n size=\"2xs\"\n intensity={active ? 98 : 36}\n className=\"oui-text-center\"\n >\n {label}\n </Text>\n </>\n ) : (\n <Flex\n width={48}\n height={48}\n r=\"full\"\n itemAlign={\"center\"}\n justify={\"center\"}\n className=\"oui-relative oui--mt-12\"\n onClick={(e) => {\n e.stopPropagation?.();\n setOpen(false);\n }}\n >\n <PopupUnionIcon\n size={78}\n className=\"oui-text-base-8 oui-absolute oui-left-1/2 oui-top-1/2 -oui-translate-x-1/2 -oui-translate-y-1/2\"\n />\n <Flex\n className=\"oui-absolute oui-left-1/2 oui-top-1/2 -oui-translate-x-1/2 -oui-translate-y-1/2\"\n itemAlign=\"center\"\n justify=\"center\"\n >\n <CloseRoundFillIcon size={28} />\n </Flex>\n </Flex>\n )}\n </PopoverTrigger>\n <PopoverContent\n sideOffset={12}\n align=\"center\"\n side=\"top\"\n className=\"!oui-w-[180px] !oui-bg-base-8 !oui-p-1 oui-border-none oui--mb-[22px]\"\n >\n <Flex direction=\"column\" className=\"oui-gap-1 oui-w-full\">\n <TradingMenuChoice\n icon={<SpotIcon size={20} />}\n label=\"Spot\"\n onClick={() => {\n window.location.href = \"https://woofi.com/swap\";\n setOpen(false);\n }}\n className=\"\"\n />\n <TradingMenuChoice\n icon={<PerpsIcon size={20} />}\n label=\"Perps\"\n selected={true}\n onClick={() => setOpen(false)}\n className=\"oui-bg-base-6\"\n />\n </Flex>\n </PopoverContent>\n </PopoverRoot>\n );\n};\n","export { BottomNavWidget, type BottomNavProps } from \"./bottomNav.widget\";\nexport { BottomNav } from \"./bottomNav.ui.mobile\";\nexport { BottomNavTradingMenu } from \"./tradingMenu.ui\";\n","import {\n ExtensionPositionEnum,\n ExtensionSlot,\n installExtension,\n} from \"@kodiak-finance/orderly-ui\";\nimport { AccountMenu, AccountMenuProps } from \"./menu.ui\";\nimport { useAccountMenu } from \"./useWidgetBuilder.script\";\nimport { FC } from \"react\";\n\nexport const AccountMenuWidget = () => {\n const state = useAccountMenu();\n return <AccountMenu {...state} />;\n};\n\ninstallExtension<AccountMenuProps>({\n name: \"account-menu\",\n scope: [\"*\"],\n positions: [ExtensionPositionEnum.AccountMenu],\n builder: useAccountMenu,\n __isInternal: true,\n})((props: AccountMenuProps) => {\n return <AccountMenu {...props} />;\n});\n\nexport const WalletConnectButtonExtension = () => {\n return <ExtensionSlot position={ExtensionPositionEnum.AccountMenu} />;\n};\n","import { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { AccountStatusEnum } from \"@kodiak-finance/orderly-types\";\nimport {\n Button,\n Divider,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuPortal,\n DropdownMenuRoot,\n DropdownMenuTrigger,\n EVMAvatar,\n Flex,\n Text,\n} from \"@kodiak-finance/orderly-ui\";\n\nexport type AccountMenuProps = {\n accountState: AccountState;\n address?: string;\n onDisconnect: () => void;\n connect: () => Promise<void>;\n onCrateAccount: () => Promise<void>;\n onCreateOrderlyKey: () => Promise<void>;\n onOpenExplorer: () => void;\n onSwitchNetwork: () => void;\n wrongNetwork: boolean;\n disabledConnect?: boolean;\n isMobile: boolean;\n};\n\nexport const AccountMenu = (props: AccountMenuProps) => {\n const { t } = useTranslation();\n const {\n accountState: state,\n onDisconnect,\n onOpenExplorer,\n wrongNetwork,\n onSwitchNetwork,\n isMobile,\n } = props;\n const disabled = state.validating || props.disabledConnect;\n\n if (!disabled && wrongNetwork) {\n return (\n <Button\n data-testid=\"oui-testid-nav-bar-wrongNetwork-btn\"\n size=\"md\"\n color=\"warning\"\n onClick={onSwitchNetwork}\n >\n {t(\"connector.wrongNetwork\")}\n </Button>\n );\n }\n\n if (\n !disabled &&\n (state.status === AccountStatusEnum.EnableTrading ||\n state.status === AccountStatusEnum.EnableTradingWithoutConnected)\n ) {\n return (\n <WalletMenu\n address={state.address!}\n onDisconnect={onDisconnect}\n onOpenExplorer={onOpenExplorer}\n />\n );\n }\n\n if (state.status <= AccountStatusEnum.NotConnected || disabled) {\n return (\n <Button\n data-testid=\"oui-testid-nav-bar-connectWallet-btn\"\n size=\"md\"\n variant={disabled ? undefined : \"gradient\"}\n angle={45}\n className=\"wallet-connect-button\"\n loading={state.validating}\n disabled={disabled}\n onClick={() => {\n props\n .connect()\n .then((r) => {\n console.log(\"*****\", r);\n })\n .catch((e) => console.error(e));\n }}\n >\n {isMobile ? t(\"connector.connect\") : t(\"connector.connectWallet\")}\n </Button>\n );\n // return (\n // <Tooltip\n // open\n // content={\"Please connect wallet before starting to trade\"}\n // align={\"end\"}\n // className=\"oui-bg-base-5\"\n // arrow={{ className: \"oui-fill-base-5\" }}\n // >\n\n // </Tooltip>\n // );\n }\n\n if (state.status <= AccountStatusEnum.NotSignedIn) {\n return (\n <Button size=\"md\" onClick={() => props.onCrateAccount()}>\n {t(\"connector.createAccount\")}\n </Button>\n );\n // return (\n // <Tooltip\n // open\n // content={\"Please sign in before starting to trade\"}\n // align={\"end\"}\n // className=\"oui-bg-base-5\"\n // arrow={{ className: \"oui-fill-base-5\" }}\n // >\n\n // </Tooltip>\n // );\n }\n\n if (state.status <= AccountStatusEnum.DisabledTrading) {\n return (\n <Button\n size=\"md\"\n onClick={() => {\n props\n .onCreateOrderlyKey()\n .then((r) => console.log(r))\n .catch((e) => console.error(e));\n }}\n >\n {t(\"connector.enableTrading\")}\n </Button>\n );\n // return (\n // <Tooltip\n // open\n // className=\"oui-bg-base-5\"\n // arrow={{ className: \"oui-fill-base-5\" }}\n // content={\"Please enable trading before starting to trade\"}\n // align={\"end\"}\n // >\n\n // </Tooltip>\n // );\n }\n};\n\nexport type AccountState = {\n status: AccountStatusEnum;\n\n /**\n * whether the account is validating\n */\n validating: boolean;\n chainNamespace?: string;\n\n accountId?: string;\n userId?: string;\n address?: string;\n isNew?: boolean;\n\n connectWallet?: {\n name: string;\n chainId: number;\n };\n};\n\nconst WalletMenu = (props: {\n address: string;\n onDisconnect: () => void;\n onOpenExplorer: () => void;\n}) => {\n const { address, onDisconnect } = props;\n const { t } = useTranslation();\n\n return (\n <DropdownMenuRoot>\n <DropdownMenuTrigger asChild>\n <Button\n size=\"md\"\n variant=\"gradient\"\n angle={45}\n data-testid=\"oui-testid-nav-bar-address-btn\"\n >\n <Text.formatted rule=\"address\" className=\"oui-text-[rgba(0,0,0,.88)]\">\n {address}\n </Text.formatted>\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuPortal>\n <DropdownMenuContent\n size={\"xl\"}\n align={\"end\"}\n onCloseAutoFocus={(e) => e.preventDefault()}\n style={{ width: \"280px\" }}\n className={\"oui-py-5 oui-font-semibold\"}\n sideOffset={12}\n >\n <DropdownMenuGroup>\n <Flex px={4}>\n <Flex gap={2} className={\"oui-flex-1\"}>\n <EVMAvatar address={address} size={\"md\"} />\n <Text.formatted rule={\"address\"} size={\"base\"}>\n {address}\n </Text.formatted>\n </Flex>\n <Flex gap={2}>\n <button\n data-testid=\"oui-testid-nav-bar-dropDownMenuItem-copyAddress\"\n onClick={async () => {\n // copy\n await navigator.clipboard.writeText(address);\n }}\n >\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 className=\"oui-fill-[rgba(255,255,255,0.36)] hover:oui-fill-primary-darken\"\n >\n <path\n d=\"M5.249 2.243a3 3 0 0 0-3 3v4.5a3 3 0 0 0 3 3 3 3 0 0 0 3 3h4.5a3 3 0 0 0 3-3v-4.5a3 3 0 0 0-3-3 3 3 0 0 0-3-3zm7.5 4.5a1.5 1.5 0 0 1 1.5 1.5v4.5a1.5 1.5 0 0 1-1.5 1.5h-4.5a1.5 1.5 0 0 1-1.5-1.5h3a3 3 0 0 0 3-3z\"\n // fill=\"currentcolor\"\n // fillOpacity=\".36\"\n\n // className={''}\n />\n </svg>\n </button>\n <button onClick={() => props.onOpenExplorer()}>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 18 18\"\n className=\"oui-fill-[rgba(255,255,255,0.36)] hover:oui-fill-primary-darken\"\n >\n <path d=\"M12.7432 15.7432C14.3999 15.7432 15.7432 14.3999 15.7432 12.7432V5.24316C15.7432 3.58641 14.3999 2.24316 12.7432 2.24316H5.24316C3.58641 2.24316 2.24316 3.58641 2.24316 5.24316V12.7432C2.24316 14.3999 3.58641 15.7432 5.24316 15.7432H12.7432ZM6.74316 11.9932C6.55116 11.9932 6.35092 11.9287 6.20392 11.7824C5.91142 11.4892 5.91142 10.9972 6.20392 10.7039L9.20392 7.70392L7.49316 5.99316H11.9932V10.4932L10.2824 8.78241L7.28241 11.7824C7.13616 11.9287 6.93516 11.9932 6.74316 11.9932Z\" />\n </svg>\n </button>\n </Flex>\n </Flex>\n </DropdownMenuGroup>\n <Divider className={\"oui-mx-4 oui-my-3\"} intensity={8} />\n {/* <DropdownMenuGroup>\n <DropdownMenuItem size={\"xl\"}>\n <Flex gap={2}>\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 opacity=\".998\"\n d=\"M5.243 2.197a3 3 0 0 0-3 3v7.5a3 3 0 0 0 3 3h7.5a3 3 0 0 0 3-3v-7.5a3 3 0 0 0-3-3zm0 1.5h7.5a1.5 1.5 0 0 1 1.5 1.5v7.5a1.52 1.52 0 0 1-.754 1.298c-.144-1.771-2.046-2.798-4.496-2.798S4.603 12.251 4.486 14a1.52 1.52 0 0 1-.743-1.303v-7.5a1.5 1.5 0 0 1 1.5-1.5m3.75 1.5a2.625 2.625 0 1 0 0 5.25 2.625 2.625 0 0 0 0-5.25\"\n fill=\"#fff\"\n fillOpacity=\".8\"\n />\n </svg>\n <span>Overview</span>\n </Flex>\n </DropdownMenuItem>\n <DropdownMenuItem size={\"xl\"}>\n <Flex gap={2}>\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=\"M5.693 1.499c-1.463 0-2.672 1.11-2.672 2.508v9.984c0 1.398 1.209 2.508 2.672 2.508h6.657c1.463 0 2.672-1.11 2.672-2.508V6.726c0-2.672-2.58-5.227-5.25-5.227zm4.829 1.594c1.329.352 2.562 1.58 2.906 2.906h-1.735c-.667 0-1.171-.472-1.171-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 fill=\"#fff\"\n fillOpacity=\".8\"\n />\n </svg>\n <span>Orders</span>\n </Flex>\n </DropdownMenuItem>\n </DropdownMenuGroup>\n <Divider className={\"oui-mx-4 oui-my-3\"} intensity={8} /> */}\n <DropdownMenuGroup>\n <DropdownMenuItem\n size={\"xl\"}\n onSelect={(event) => {\n event.preventDefault();\n onDisconnect();\n }}\n data-testid=\"oui-testid-nav-bar-dropDownMenuItem-disconnect\"\n >\n <Flex gap={2} className={\"oui-text-danger-light\"}>\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 fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M3.97 14.03a.75.75 0 0 1 0-1.06l.262-.263C2.594 12.354 1.5 11.108 1.5 9.06c0-2.447 1.563-3.75 3.75-3.75H6a.75.75 0 0 1 0 1.5h-.75C3.837 6.81 3 7.508 3 9.06s.837 2.25 2.25 2.25h.38l1.188-1.188a.75.75 0 0 1-.068-.312v-.75c0-1.162.381-2.19 1.172-2.883.645-.565 1.512-.867 2.578-.867h1.13l1.34-1.34a.75.75 0 0 1 1.061 1.06l-9 9a.75.75 0 0 1-1.06 0m6.14-7.2L8.27 8.668c.065-.583.281-1.056.635-1.367.289-.253.684-.419 1.205-.473M7.825 12.8l3.414-3.415c-.126 2.12-1.496 3.297-3.414 3.415m7.705-6.58a.75.75 0 0 0-1.06 1.06c.508.509.53 1.202.53 1.72 0 .739-.014 1.203-.53 1.72-.165.164-.455.307-.825.405a3.8 3.8 0 0 1-.895.125H12a.75.75 0 0 0 0 1.5h.75c.31 0 .787-.045 1.28-.175.48-.127 1.065-.36 1.5-.795.97-.97.97-1.991.97-2.75v-.06c0-.51.002-1.778-.97-2.75\"\n fill=\"currentcolor\"\n />\n </svg>\n <span>{t(\"connector.disconnect\")}</span>\n </Flex>\n </DropdownMenuItem>\n </DropdownMenuGroup>\n </DropdownMenuContent>\n </DropdownMenuPortal>\n </DropdownMenuRoot>\n );\n};\n","import { useCallback } from \"react\";\nimport {\n useAccount,\n useChains,\n useWalletConnector,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { useAppContext } from \"@kodiak-finance/orderly-react-app\";\nimport { AccountStatusEnum } from \"@kodiak-finance/orderly-types\";\nimport { modal, toast, useScreen, Text } from \"@kodiak-finance/orderly-ui\";\nimport {\n ChainSelectorDialogId,\n ChainSelectorSheetId,\n} from \"@kodiak-finance/orderly-ui-chain-selector\";\nimport {\n WalletConnectorModalId,\n WalletConnectorSheetId,\n} from \"@kodiak-finance/orderly-ui-connector\";\n\nconst ModalTitle = () => {\n const { t } = useTranslation();\n const { state } = useAccount();\n if (state.status < AccountStatusEnum.SignedIn) {\n return <Text>{t(\"connector.createAccount\")}</Text>;\n }\n if (state.status < AccountStatusEnum.EnableTrading) {\n return <Text>{t(\"connector.enableTrading\")}</Text>;\n }\n return <Text>{t(\"connector.connectWallet\")}</Text>;\n};\n\nexport const useAccountMenu = (): any => {\n const { t } = useTranslation();\n const { disconnect, connectedChain } = useWalletConnector();\n const { account, state } = useAccount();\n const { connectWallet, disabledConnect, wrongNetwork, setCurrentChainId } =\n useAppContext();\n\n const [, { findByChainId }] = useChains();\n\n const { isMobile } = useScreen();\n\n const onCrateAccount = async () => {\n const modalId = isMobile ? WalletConnectorSheetId : WalletConnectorModalId;\n modal\n .show(modalId, {\n title: <ModalTitle />,\n })\n .then(\n (res) => console.log(\"return ::\", res),\n (err) => console.log(\"error:::\", err),\n );\n };\n\n const onCreateOrderlyKey = async () => {\n const modalId = isMobile ? WalletConnectorSheetId : WalletConnectorModalId;\n modal\n .show(modalId, {\n title: <ModalTitle />,\n })\n .then(\n (res) => console.log(\"return ::\", res),\n (err) => console.log(\"error:::\", err),\n );\n };\n\n const switchChain = () => {\n account.once(\"validate:end\", (status) => {\n if (status < AccountStatusEnum.EnableTrading) {\n statusChangeHandler({ status });\n } else {\n toast.success(t(\"connector.walletConnected\"));\n }\n });\n\n modal.show<{ wrongNetwork: boolean }>(ChainSelectorDialogId).then(\n (r) => {\n if (!r.wrongNetwork) {\n if (state.status < AccountStatusEnum.EnableTrading) {\n statusChangeHandler(state);\n } else {\n toast.success(t(\"connector.walletConnected\"));\n }\n }\n },\n (error) => {\n console.log(\"[switchChain error]\", error);\n },\n );\n };\n\n const connect = async () => {\n const res = await connectWallet();\n\n if (!res) {\n return;\n }\n\n if (res.wrongNetwork) {\n switchChain();\n } else {\n statusChangeHandler(res);\n }\n };\n\n const statusChangeHandler = (nextState: any) => {\n if (\n nextState.validating ||\n nextState.status <= AccountStatusEnum.Connected\n ) {\n return;\n }\n\n if (nextState.status < AccountStatusEnum.SignedIn) {\n onCrateAccount();\n }\n if (nextState.status < AccountStatusEnum.EnableTrading) {\n onCreateOrderlyKey();\n }\n };\n\n const onOpenExplorer = useCallback(() => {\n if (!connectedChain) {\n return;\n }\n const chainInfo = findByChainId(\n connectedChain!.id as number,\n \"network_infos\",\n );\n\n if (chainInfo) {\n // @ts-ignore\n const { explorer_base_url } = chainInfo;\n if (explorer_base_url) {\n if (explorer_base_url.endsWith(\"/\")) {\n window.open(`${explorer_base_url}address/${account.address}`);\n } else {\n window.open(`${explorer_base_url}/address/${account.address}`);\n }\n }\n }\n }, [state, connectedChain]);\n\n const onDisconnect = async () => {\n localStorage.removeItem(\"orderly_link_device\");\n await disconnect({\n label: state.connectWallet?.name,\n });\n await account.disconnect();\n };\n\n const onSwitchNetwork = () => {\n const modalId = isMobile ? ChainSelectorSheetId : ChainSelectorDialogId;\n modal\n .show<{\n wrongNetwork: boolean;\n }>(modalId, {\n bridgeLessOnly: false,\n isWrongNetwork: wrongNetwork,\n })\n .then(\n (r: any) => {\n console.log(r?.chainId);\n if (r?.chainId) {\n setCurrentChainId(r?.chainId);\n }\n toast.success(t(\"connector.networkSwitched\"));\n },\n (error) => console.log(\"[switchChain error]\", error),\n );\n };\n\n return {\n address: state.address,\n accountState: state,\n connect,\n onCrateAccount,\n onCreateOrderlyKey,\n onOpenExplorer,\n onDisconnect,\n onSwitchNetwork,\n wrongNetwork,\n disabledConnect,\n isMobile,\n } as const;\n};\n\nexport type AccountMenuProps = ReturnType<typeof useAccountMenu>;\n","import { useMemo, useState } from \"react\";\nimport { useAccount, useWalletConnector } from \"@kodiak-finance/orderly-hooks\";\nimport { useAppContext } from \"@kodiak-finance/orderly-react-app\";\nimport { useScaffoldContext } from \"../scaffold\";\nimport { CampaignProps } from \"./campaignButton\";\nimport { MainNavItemsProps } from \"./mainMenus/mainNavMenus.ui\";\nimport type { MainNavItem } from \"./mainMenus/navItem\";\nimport { MainNavWidgetProps } from \"./mainNav.widget\";\n\n// Hrefs here will NOT trigger routing when clicked (top-level item)\nconst NON_ROUTING_HREFS: string[] = [\"/vaults\"];\n\n// export type CampaignPosition = \"menuLeading\" | \"menuTailing\" | \"navTailing\";\nexport enum CampaignPositionEnum {\n menuLeading = \"menuLeading\",\n menuTailing = \"menuTailing\",\n navTailing = \"navTailing\",\n}\n\nexport type MainNavScriptReturn = ReturnType<typeof useMainNavScript>;\n\nexport const useMainNavScript = (props: MainNavWidgetProps) => {\n const { onItemClick, campaignPosition = CampaignPositionEnum.navTailing } =\n props;\n const { state } = useAccount();\n const { routerAdapter } = useScaffoldContext();\n const { connectedChain } = useWalletConnector();\n const { wrongNetwork, disabledConnect } = useAppContext();\n const [current, setCurrent] = useState(() => {\n if (typeof props.initialMenu === \"undefined\") return [];\n\n return !Array.isArray(props.initialMenu)\n ? [props.initialMenu]\n : props.initialMenu;\n });\n\n const onItemClickHandler = (scope: string) => (item: MainNavItem[]) => {\n const lastItem = item[item.length - 1];\n\n if (!lastItem) return;\n\n /**\n * If the target is not _blank, we should update the current state\n */\n if (lastItem.target !== \"_blank\") {\n setCurrent(item.map((item) => item.href));\n }\n\n const current = item[item.length - 1];\n const isExternalLink =\n typeof current.href === \"string\" &&\n (current.href.startsWith(\"http://\") ||\n current.href.startsWith(\"https://\"));\n\n // Hard-coded non-routing list\n if (NON_ROUTING_HREFS.includes(current.href)) {\n return;\n }\n\n if (current.target) {\n window.open(current.href, current.target);\n return;\n } else if (isExternalLink) {\n window.location.href = current.href;\n return;\n }\n const args = {\n href: current.href,\n name: current.name,\n scope,\n target: current.target,\n };\n\n if (typeof onItemClick === \"function\") {\n onItemClick(args);\n return;\n }\n\n routerAdapter?.onRouteChange(args);\n };\n\n const mainNavConfig = useMemo(() => {\n const config = {\n leading: null,\n trailing: null,\n logo: {},\n mainMenus: [\n // { name: \"Trading\", href: \"/trading\" },\n // { name: \"Portfolio\", href: \"/portfolio\" },\n // { name: \"Markets\", href: \"/markets\" },\n // { name: \"Rewards\", href: \"/rewards\" },\n ],\n ...props,\n campaignPosition,\n };\n if (props.leading) {\n config.leading = props.leading;\n }\n\n if (props.trailing) {\n config.trailing = props.trailing;\n }\n\n if (props.campaigns) {\n if (campaignPosition === CampaignPositionEnum.menuTailing) {\n config.mainMenus = [...config.mainMenus, props.campaigns];\n } else if (campaignPosition === CampaignPositionEnum.menuLeading) {\n config.mainMenus = [props.campaigns, ...config.mainMenus];\n } else {\n config.campaigns = props.campaigns;\n }\n }\n\n return config;\n }, [props]);\n\n const { mainMenus, campaigns } = useMemo(() => {\n const converted: {\n campaigns?: CampaignProps;\n mainMenus?: MainNavItemsProps;\n } = {};\n\n if (mainNavConfig.mainMenus && mainNavConfig.mainMenus.length) {\n converted.mainMenus = {\n items: mainNavConfig.mainMenus,\n /**\n * @type string\n * The current item of the router\n */\n current,\n onItemClick: onItemClickHandler(\"mainMenu\"),\n // onItemClick: (item: MainNavItem[]) => {\n // const lastItem = item[item.length - 1];\n\n // if (!lastItem) return;\n\n // /**\n // * If the target is not _blank, we should update the current state\n // */\n // if (lastItem.target !== \"_blank\") {\n // setCurrent(item.map((item) => item.href));\n // }\n\n // const current = item[item.length - 1];\n // const args = {\n // href: current.href,\n // name: current.name,\n // scope: \"mainMenu\",\n // target: current.target,\n // };\n\n // if (typeof onItemClick === \"function\") {\n // onItemClick(args);\n // return;\n // }\n\n // routerAdapter?.onRouteChange(args);\n // },\n };\n }\n\n if (mainNavConfig.campaigns && mainNavConfig.campaigns.children?.length) {\n converted.campaigns = {\n item: mainNavConfig.campaigns,\n current,\n onItemClick: onItemClickHandler(\"campaign\"),\n // onItemClick: (item: MainNavItem[]) => {\n // const lastItem = item[item.length - 1];\n\n // if (!lastItem) return;\n\n // /**\n // * If the target is not _blank, we should update the current state\n // */\n // if (lastItem.target !== \"_blank\") {\n // setCurrent(item.map((item) => item.href));\n // }\n\n // const current = item[item.length - 1];\n // const args = {\n // href: current.href,\n // name: current.name,\n // scope: \"campaign\",\n // target: current.target,\n // };\n\n // if (typeof onItemClick === \"function\") {\n // onItemClick(args);\n // return;\n // }\n\n // routerAdapter?.onRouteChange(args);\n // },\n };\n }\n\n return converted;\n }, [mainNavConfig]);\n\n return {\n // currentProduct,\n // logo: mainNavConfig.logo,\n ...mainNavConfig,\n mainMenus,\n campaigns,\n isConnected: !!connectedChain,\n wrongNetwork,\n status: state.status,\n disabledConnect,\n };\n};\n","import React from \"react\";\nimport { Box, cn } from \"@kodiak-finance/orderly-ui\";\nimport { MainNavMobile } from \"../main/mainNav.ui.mobile\";\nimport { NotificationWidget } from \"../notification/notification.widget\";\nimport type { ScaffoldScriptReturn } from \"./scaffold.script\";\nimport type { ScaffoldProps } from \"./scaffold.widget\";\n\nconst LazyRestrictedInfoWidget = React.lazy(() =>\n import(\"../restrictedInfo\").then((mod) => {\n return { default: mod.RestrictedInfoWidget };\n }),\n);\n\nconst LazyBottomNav = React.lazy(() =>\n import(\"../bottomNav\").then((mod) => {\n return { default: mod.BottomNav };\n }),\n);\n\nexport const MobileScaffold: React.FC<\n React.PropsWithChildren<ScaffoldScriptReturn & ScaffoldProps>\n> = (props) => {\n const {\n classNames,\n topNavbarRef,\n bottomNavHeight,\n topBar,\n mainNavProps,\n routerAdapter,\n bottomNavRef,\n bottomNavProps,\n bottomNav,\n children,\n } = props;\n\n return (\n <div\n style={{\n paddingBottom: `calc(${bottomNavHeight}px + 12px + env(safe-area-inset-bottom))`,\n }}\n className={cn(\n \"oui-scaffold-root oui-w-full oui-bg-base-10 oui-pt-2\",\n classNames?.root,\n )}\n >\n <header\n ref={topNavbarRef}\n className={cn(\n \"oui-scaffold-topNavbar\",\n \"oui-sticky oui-top-0 oui-z-10 oui-w-full oui-bg-base-10\",\n classNames?.topNavbar,\n )}\n >\n {topBar ?? (\n <MainNavMobile {...mainNavProps} routerAdapter={routerAdapter} />\n )}\n </header>\n\n <Box\n className={cn(\n \"oui-scaffold-container oui-overflow-hidden\",\n // \"oui-relative\",\n // \"oui-custom-scrollbar oui-overflow-y-auto\",\n classNames?.container,\n )}\n >\n <React.Suspense fallback={null}>\n <LazyRestrictedInfoWidget className=\"oui-mx-1 oui-mb-1 oui-bg-base-6\" />\n </React.Suspense>\n\n <Box\n height=\"100%\"\n width=\"100%\"\n className={cn(\"oui-scaffold-content\", classNames?.content)}\n >\n {children}\n </Box>\n </Box>\n <footer\n ref={bottomNavRef}\n className={cn(\n \"oui-scaffold-bottomNav\",\n \"oui-fixed oui-bottom-0 oui-z-10\",\n \"oui-w-full oui-bg-base-9\",\n // only effective on real device\n \"oui-pb-[calc(env(safe-area-inset-bottom))]\",\n classNames?.bottomNav,\n )}\n >\n {bottomNav ?? (\n <React.Suspense fallback={null}>\n <LazyBottomNav\n mainMenus={bottomNavProps?.mainMenus}\n current={bottomNavProps?.current || mainNavProps?.initialMenu}\n onRouteChange={routerAdapter?.onRouteChange}\n />\n </React.Suspense>\n )}\n </footer>\n\n <NotificationWidget />\n </div>\n );\n};\n","import { FC, useMemo } from \"react\";\nimport { useAccount } from \"@kodiak-finance/orderly-hooks\";\nimport { useAppContext } from \"@kodiak-finance/orderly-react-app\";\nimport {\n AccountStatusEnum,\n type RouterAdapter,\n} from \"@kodiak-finance/orderly-types\";\nimport { Flex, Text, ChevronLeftIcon, cn } from \"@kodiak-finance/orderly-ui\";\nimport { WalletConnectButtonExtension } from \"../accountMenu/menu.widget\";\nimport { ChainMenuWidget } from \"../chainMenu\";\nimport { LanguageSwitcherWidget } from \"../languageSwitcher\";\nimport { LeftNavWidget } from \"../leftNav\";\nimport { ScanQRCodeWidget } from \"../scanQRCode\";\nimport { SubAccountWidget } from \"../subAccount\";\nimport { LinkDeviceWidget } from \"./linkDevice\";\nimport { MainLogo } from \"./mainLogo\";\nimport { MainNavWidgetProps } from \"./mainNav.widget\";\n\ntype MainNavMobileProps = {\n current?: string;\n subItems?: {\n name: string;\n href: string;\n }[];\n routerAdapter?: RouterAdapter;\n} & MainNavWidgetProps;\n\nexport const MainNavMobile: FC<MainNavMobileProps> = (props) => {\n const { wrongNetwork, disabledConnect } = useAppContext();\n const { state } = useAccount();\n const currentMenu = useMemo(() => {\n if (Array.isArray(props?.initialMenu)) {\n return props?.campaigns;\n }\n return props?.mainMenus?.find((menu) => {\n if (!props.current) {\n return menu.href === props?.initialMenu;\n } else {\n return menu.href === props.current;\n }\n });\n }, [props?.mainMenus, props?.initialMenu, props?.current]);\n\n const title = useMemo(() => {\n if (currentMenu?.isHomePageInMobile) {\n return <MainLogo {...props?.logo} />;\n }\n return (\n <Text className=\"oui-text-2xl oui-font-bold oui-text-base-contrast\">\n {currentMenu?.name}\n </Text>\n );\n }, [currentMenu, props?.logo]);\n\n const isSub = useMemo(() => {\n return Boolean(!currentMenu || currentMenu.isSubMenuInMobile);\n }, [currentMenu]);\n\n const subTitle = useMemo(() => {\n if (currentMenu?.isSubMenuInMobile) {\n return currentMenu?.name;\n }\n if (props?.subItems?.some((item) => item.href === props?.current)) {\n return props?.subItems?.find((item) => item.href === props?.current)\n ?.name;\n }\n return null;\n }, [props?.subItems, props?.current, currentMenu]);\n\n const onBack = () => {\n let target = props.mainMenus?.find(\n (item) => item.href === props.initialMenu,\n );\n if (currentMenu?.isSubMenuInMobile) {\n target = currentMenu?.subMenuBackNav;\n }\n\n if (target && typeof window !== \"undefined\") {\n const url = new URL(window.location.href);\n const cleanUrl = `${url.pathname}`;\n window.history.replaceState({}, \"\", cleanUrl);\n }\n\n props?.routerAdapter?.onRouteChange(target as any);\n };\n\n const showLinkDevice =\n state.status === AccountStatusEnum.EnableTradingWithoutConnected;\n\n const showChainMenu = !showLinkDevice && !wrongNetwork;\n\n const showQrcode = state.status === AccountStatusEnum.NotConnected;\n\n const showSubAccount = useMemo(\n () => state.status >= AccountStatusEnum.EnableTrading,\n [state.status],\n );\n\n if (isSub) {\n return (\n <Flex\n width={\"100%\"}\n height={44}\n px={3}\n direction={\"row\"}\n itemAlign={\"center\"}\n justify={\"center\"}\n className=\"oui-relative\"\n >\n <ChevronLeftIcon\n className=\"oui-absolute oui-left-6 oui-text-base-contrast-54\"\n onClick={onBack}\n />\n <Text className=\"oui-text-base oui-font-bold oui-text-base-contrast\">\n {subTitle}\n </Text>\n </Flex>\n );\n }\n\n const renderContent = () => {\n const languageSwitcher = <LanguageSwitcherWidget />;\n const scanQRCode = showQrcode && <ScanQRCodeWidget />;\n const subAccount = showSubAccount && <SubAccountWidget />;\n const linkDevice = showLinkDevice && <LinkDeviceWidget />;\n const chainMenu = showChainMenu && <ChainMenuWidget />;\n const walletConnect = <WalletConnectButtonExtension />;\n\n const leftNav = props.leftNav && (\n <LeftNavWidget\n {...props.leftNav}\n logo={props?.logo}\n routerAdapter={props?.routerAdapter}\n />\n );\n\n if (typeof props.customRender === \"function\") {\n return props.customRender?.({\n leftNav,\n title,\n languageSwitcher,\n scanQRCode,\n subAccount,\n linkDevice,\n chainMenu,\n walletConnect,\n });\n }\n\n return (\n <Flex width=\"100%\" justify=\"between\">\n <Flex gapX={2}>\n {props?.customLeftNav || leftNav}\n {title}\n </Flex>\n\n <Flex gapX={2}>\n {props.leading}\n {languageSwitcher}\n {scanQRCode}\n {/* {subAccount} */}\n {/* {linkDevice} */}\n {chainMenu}\n {walletConnect}\n {props.trailing}\n </Flex>\n </Flex>\n );\n };\n\n return (\n <Flex\n width={\"100%\"}\n height={44}\n px={3}\n itemAlign={\"center\"}\n className={cn(props.className, props.classNames?.root)}\n >\n {renderContent()}\n </Flex>\n );\n};\n","import { useScreen } from \"@kodiak-finance/orderly-ui\";\nimport { useChainMenuScript } from \"./chainMenu.script\";\nimport { ChainMenu } from \"./chainMenu.ui\";\nimport { ChainMenuUiMobile } from \"./chainMenu.ui.mobile\";\n\nexport const ChainMenuWidget = () => {\n const state = useChainMenuScript();\n const { isMobile } = useScreen();\n if (isMobile) {\n return <ChainMenuUiMobile {...state} />;\n }\n return <ChainMenu {...state} />;\n};\n","import { useEffect, useState } from \"react\";\nimport {\n useChains,\n useConfig,\n useAccount,\n useWalletConnector,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { useAppContext } from \"@kodiak-finance/orderly-react-app\";\nimport { API, Chain, NetworkId } from \"@kodiak-finance/orderly-types\";\n\nexport type UseChainMenuScriptReturn = ReturnType<typeof useChainMenuScript>;\n\nexport const useChainMenuScript = () => {\n const [open, setOpen] = useState(false);\n const [loading, setLoading] = useState(false);\n const { state } = useAccount();\n const { connectedChain } = useWalletConnector();\n const { currentChainId, wrongNetwork, disabledConnect, setCurrentChainId } =\n useAppContext();\n const networkId = useConfig(\"networkId\") as NetworkId;\n\n const hide = () => {\n setOpen(false);\n };\n\n const onChainChangeBefore = () => {\n setLoading(true);\n hide();\n };\n\n const onChainChangeAfter = () => {\n setLoading(false);\n };\n\n return {\n isConnected: !!connectedChain,\n currentChainId,\n wrongNetwork,\n disabledConnect,\n accountStatus: state.status,\n networkId,\n open,\n onOpenChange: setOpen,\n hide,\n onChainChangeBefore,\n onChainChangeAfter,\n loading,\n setCurrentChainId,\n };\n};\n\nexport type UseChainMenuBuilderScript = ReturnType<typeof useChainMenuScript>;\n","import { useAccount } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { AccountStatusEnum } from \"@kodiak-finance/orderly-types\";\nimport {\n Button,\n ChainIcon,\n cn,\n Flex,\n modal,\n Tooltip,\n DropdownMenuContent,\n DropdownMenuPortal,\n DropdownMenuRoot,\n DropdownMenuTrigger,\n Spinner,\n Text,\n} from \"@kodiak-finance/orderly-ui\";\nimport {\n ChainSelectorDialogId,\n ChainSelectorWidget,\n} from \"@kodiak-finance/orderly-ui-chain-selector\";\nimport { WalletConnectorModalId } from \"@kodiak-finance/orderly-ui-connector\";\nimport { UseChainMenuScriptReturn } from \"./chainMenu.script\";\n\nconst ModalTitle = () => {\n const { t } = useTranslation();\n const { state } = useAccount();\n if (state.status < AccountStatusEnum.SignedIn) {\n return <Text>{t(\"connector.createAccount\")}</Text>;\n }\n if (state.status < AccountStatusEnum.EnableTrading) {\n return <Text>{t(\"connector.enableTrading\")}</Text>;\n }\n return <Text>{t(\"connector.connectWallet\")}</Text>;\n};\n\nexport const ChainMenu = (props: UseChainMenuScriptReturn) => {\n const { t } = useTranslation();\n\n if (props.wrongNetwork && props.isConnected && !props.disabledConnect) {\n return (\n <Tooltip\n open\n hideWhenDetached\n content={t(\"connector.wrongNetwork.tooltip\")}\n className=\"oui-bg-base-5\"\n arrow={{ className: \"oui-fill-base-5\" }}\n >\n <Button\n color=\"warning\"\n size=\"md\"\n onClick={() => {\n modal\n .show<{ wrongNetwork: boolean }>(ChainSelectorDialogId, {\n networkId: props.networkId,\n })\n .then(\n (r) => {\n if (\n !r.wrongNetwork &&\n props.accountStatus < AccountStatusEnum.EnableTrading\n ) {\n modal\n .show(WalletConnectorModalId, {\n title: <ModalTitle />,\n })\n .then(\n (r) => console.log(r),\n (error) => console.log(error),\n );\n }\n },\n (error) => console.log(error),\n );\n }}\n >\n {t(\"connector.wrongNetwork\")}\n </Button>\n </Tooltip>\n );\n }\n\n const renderIcon = () => {\n if (props.loading) {\n return <Spinner className=\"oui-w-[18px] oui-h-[18px]\" />;\n }\n\n if (props.currentChainId) {\n return <ChainIcon chainId={props.currentChainId} size=\"xs\" />;\n }\n };\n\n const trigger = (\n <Flex\n intensity={500}\n justify=\"center\"\n className={cn(\n \"oui-relative oui-cursor-pointer\",\n \"oui-w-11 oui-h-8\",\n \"oui-rounded-t-[6px] oui-rounded-bl-[6px] oui-rounded-br-[3px]\",\n )}\n >\n {renderIcon()}\n <svg\n width=\"10\"\n height=\"10\"\n viewBox=\"0 0 10 10\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"oui-absolute oui-right-0 oui-bottom-0\"\n >\n <defs>\n <linearGradient\n id=\"paint0_linear_490_5080\"\n x1=\"10\"\n y1=\"5\"\n x2=\"-5.79673e-08\"\n y2=\"5\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"rgb(var(--oui-gradient-brand-end))\" />\n <stop offset=\"1\" stopColor=\"rgb(var(--oui-gradient-brand-start))\" />\n </linearGradient>\n </defs>\n <path\n d=\"M10 7V0L0 10H7C8.65685 10 10 8.65685 10 7Z\"\n fill=\"url(#paint0_linear_490_5080)\"\n />\n </svg>\n </Flex>\n );\n\n return (\n <DropdownMenuRoot open={props.open} onOpenChange={props.onOpenChange}>\n <DropdownMenuTrigger asChild>{trigger}</DropdownMenuTrigger>\n <DropdownMenuPortal>\n <DropdownMenuContent\n onCloseAutoFocus={(e) => e.preventDefault()}\n onClick={(e) => e.stopPropagation()}\n sideOffset={4}\n collisionPadding={{ right: 16 }}\n className={cn(\n \"oui-bg-base-8 oui-w-[456px] oui-p-4 oui-rounded-xl\",\n \"oui-border oui-border-line-6\",\n \"oui-font-semibold\",\n )}\n >\n <ChainSelectorWidget\n close={props.hide}\n onChainChangeBefore={props.onChainChangeBefore}\n onChainChangeAfter={props.onChainChangeAfter}\n />\n </DropdownMenuContent>\n </DropdownMenuPortal>\n </DropdownMenuRoot>\n );\n};\n","import { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { Box, ChainIcon, modal, toast } from \"@kodiak-finance/orderly-ui\";\nimport { ChainSelectorSheetId } from \"@kodiak-finance/orderly-ui-chain-selector\";\nimport { UseChainMenuScriptReturn } from \"./chainMenu.script\";\n\nexport const ChainMenuUiMobile = (props: UseChainMenuScriptReturn) => {\n const { t } = useTranslation();\n\n return (\n <button\n onClick={(e) => {\n modal\n .show<{\n wrongNetwork: boolean;\n }>(ChainSelectorSheetId, {\n // networkId: props.networkId,\n bridgeLessOnly: false,\n isWrongNetwork: props.wrongNetwork,\n })\n .then(\n (r: any) => {\n console.log(r?.chainId, props);\n if (r?.chainId) {\n props.setCurrentChainId(r?.chainId);\n }\n toast.success(t(\"connector.networkSwitched\"));\n },\n (error) => console.log(\"[switchChain error]\", error),\n );\n }}\n >\n <Box className=\"oui-relative oui-rounded-t-[6px] oui-rounded-bl-[6px] oui-rounded-br-[3px] oui-bg-base-5 oui-px-2 oui-h-8 oui-w-8 oui-flex oui-items-center oui-justify-center\">\n <ChainIcon\n chainId={props.currentChainId!}\n size=\"xs\"\n className=\"oui-h-[18px] oui-w-[18px]\"\n />\n <div className=\"oui-absolute oui-right-0 oui-bottom-0\">\n <svg\n width=\"9\"\n height=\"9\"\n viewBox=\"0 0 9 9\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M9 6V0L0 9h6a3 3 0 0 0 3-3\" fill=\"url(#a)\" />\n <defs>\n <linearGradient\n id=\"a\"\n x1=\"9\"\n y1=\"4.5\"\n x2=\"0\"\n y2=\"4.5\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"rgb(var(--oui-gradient-brand-end))\" />\n <stop\n offset=\"1\"\n stopColor=\"rgb(var(--oui-gradient-brand-start))\"\n />\n </linearGradient>\n </defs>\n </svg>\n </div>\n </Box>\n </button>\n );\n};\n","import { useCallback, useMemo, useState } from \"react\";\nimport { useTrack } from \"@kodiak-finance/orderly-hooks\";\nimport {\n i18n,\n LocaleContextState,\n useLocaleContext,\n} from \"@kodiak-finance/orderly-i18n\";\nimport { TrackerEventName } from \"@kodiak-finance/orderly-types\";\nimport { useScreen } from \"@kodiak-finance/orderly-ui\";\n\nexport type LanguageSwitcherScriptReturn = ReturnType<\n typeof useLanguageSwitcherScript\n>;\n\nexport type LanguageSwitcherScriptOptions = Pick<\n LocaleContextState,\n \"popup\"\n> & { open?: boolean; onOpenChange?: (open: boolean) => void };\n\nexport const useLanguageSwitcherScript = (\n options?: LanguageSwitcherScriptOptions,\n) => {\n const [open, setOpen] = useState(false);\n const [loading, setLoading] = useState(false);\n const [selectedLang, setSelectedLang] = useState(i18n.language);\n const { languages, onLanguageBeforeChanged, onLanguageChanged, popup } =\n useLocaleContext();\n\n const { track, setIdentify } = useTrack();\n\n const { isMobile } = useScreen();\n\n const onOpenChange = useCallback(\n (open: boolean) => {\n if (typeof options?.onOpenChange === \"function\") {\n options.onOpenChange(open);\n } else {\n setOpen(open);\n }\n },\n [options?.onOpenChange, setOpen],\n );\n\n const onLangChange = async (lang: string, displayName: string) => {\n setLoading(true);\n setSelectedLang(lang);\n await onLanguageBeforeChanged(lang);\n await i18n.changeLanguage(lang);\n await onLanguageChanged(lang);\n onOpenChange(false);\n setLoading(false);\n track(TrackerEventName.switchLanguage, {\n language: displayName,\n language_code: lang,\n });\n\n setIdentify({\n language_code: lang,\n });\n };\n\n const _popup = useMemo(\n () => ({\n ...popup,\n ...options?.popup,\n mode:\n options?.popup?.mode || popup?.mode || (isMobile ? \"sheet\" : \"modal\"),\n }),\n [popup, options?.popup, isMobile],\n );\n\n const _open = useMemo(() => {\n if (typeof options?.open === \"boolean\") {\n return options.open;\n }\n return open;\n }, [options?.open, open]);\n\n return {\n open: _open,\n onOpenChange,\n languages,\n selectedLang,\n onLangChange,\n loading,\n popup: _popup,\n };\n};\n","import { FC, SVGProps, forwardRef } from \"react\";\nimport { useTranslation, Language } from \"@kodiak-finance/orderly-i18n\";\nimport {\n cn,\n Flex,\n DropdownMenuContent,\n DropdownMenuPortal,\n DropdownMenuRoot,\n DropdownMenuTrigger,\n Text,\n Box,\n Spinner,\n SimpleDialog,\n useScreen,\n SimpleSheet,\n Tooltip,\n} from \"@kodiak-finance/orderly-ui\";\nimport { LanguageSwitcherScriptReturn } from \"./languageSwitcher.script\";\n\nexport type LanguageSwitcherProps = LanguageSwitcherScriptReturn;\n\nexport const LanguageSwitcher: FC<LanguageSwitcherProps> = (props) => {\n const { languages, popup } = props;\n const { t } = useTranslation();\n const { isMobile } = useScreen();\n\n if (languages.length <= 1) {\n return null;\n }\n\n const trigger = (\n <Tooltip content={t(\"languageSwitcher.tooltip\")}>\n <LanguageIcon\n className={cn(\n \"oui-size-6 lg:oui-size-5\",\n \"oui-cursor-pointer oui-text-base-contrast-80\",\n \"oui-transition-colors hover:oui-fill-base-contrast\",\n isMobile && \"oui-size-[18px]\",\n )}\n id=\"language-switcher-icon\"\n onClick={() => props.onOpenChange(true)}\n />\n </Tooltip>\n );\n\n const header = (\n <Text weight=\"semibold\">{t(\"languageSwitcher.language\")}</Text>\n );\n\n const languageList = languages.map((item) => {\n const selected = props.selectedLang === item.localCode;\n return (\n <LanguageItem\n className={cn(\n [\"modal\", \"sheet\"].includes(popup.mode ?? \"\") &&\n \"oui-w-[calc((100%_-_4px)/2)] lg:oui-w-[calc((100%_-_8px)/3)]\",\n )}\n key={item.localCode}\n selected={selected}\n item={item}\n onClick={() => props.onLangChange(item.localCode, item.displayName)}\n loading={props.loading}\n />\n );\n });\n\n const context = (\n <Flex gap={1} className=\"oui-flex-wrap\">\n {languageList}\n </Flex>\n );\n\n const footer = (\n <Box mt={4}>\n <Text\n size=\"2xs\"\n intensity={54}\n weight=\"regular\"\n className=\"oui-text-warning-darken\"\n >\n {t(\"languageSwitcher.tips\")}\n </Text>\n </Box>\n );\n\n if (popup?.mode === \"sheet\" && isMobile) {\n return (\n <>\n {trigger}\n <SimpleSheet\n open={props.open}\n onOpenChange={props.onOpenChange}\n classNames={{\n content: cn(\"oui-px-5 oui-pb-5\", popup?.className),\n body: \"oui-pb-[env(safe-area-inset-bottom)]\",\n }}\n contentProps={{\n style: popup?.style,\n }}\n title={header}\n >\n {context}\n {footer}\n </SimpleSheet>\n </>\n );\n }\n\n if (popup?.mode === \"dropdown\") {\n const context = (\n <Box\n mt={4}\n className={cn(\n //40 * 8 + 4 * 7 = 348px, more than 8 will show scrollbars\n \"oui-custom-scrollbar oui-max-h-[348px] oui-overflow-y-auto\",\n \"oui-grid oui-gap-1 oui-pr-[6px]\",\n )}\n >\n {languageList}\n </Box>\n );\n\n return (\n <DropdownMenuRoot open={props.open} onOpenChange={props.onOpenChange}>\n <DropdownMenuTrigger asChild>{trigger}</DropdownMenuTrigger>\n <DropdownMenuPortal>\n <DropdownMenuContent\n onCloseAutoFocus={(e) => e.preventDefault()}\n onClick={(e) => e.stopPropagation()}\n sideOffset={10}\n align=\"start\"\n collisionPadding={{ right: 16 }}\n className={cn(\n \"oui-w-[320px] lg:oui-w-[360px]\",\n \"oui-rounded-xl oui-bg-base-8 oui-p-5\",\n \"oui-border oui-border-line-6\",\n \"oui-font-semibold\",\n )}\n >\n {header}\n {context}\n {footer}\n </DropdownMenuContent>\n </DropdownMenuPortal>\n </DropdownMenuRoot>\n );\n }\n\n return (\n <>\n {trigger}\n <SimpleDialog\n title={header}\n open={props.open}\n onOpenChange={props.onOpenChange}\n size={isMobile ? \"sm\" : \"xl\"}\n classNames={{\n content: popup?.className,\n }}\n contentProps={{\n style: popup?.style,\n }}\n >\n {context}\n {footer}\n </SimpleDialog>\n </>\n );\n};\n\ntype LanguageItemProps = {\n selected: boolean;\n item: Language;\n onClick?: () => void;\n loading?: boolean;\n className?: string;\n};\n\nconst LanguageItem: FC<LanguageItemProps> = (props) => {\n const { item } = props;\n\n const renderTrailing = () => {\n if (props.loading && props.selected) {\n return <Spinner size=\"sm\" />;\n }\n if (props.selected) {\n return <Box gradient=\"brand\" r=\"full\" width={4} height={4} />;\n }\n return null;\n };\n\n return (\n <button\n className={cn(\n \"oui-group oui-rounded-md hover:oui-bg-base-5\",\n props.selected && \"oui-bg-base-5\",\n props.className,\n )}\n onClick={props.onClick}\n >\n <Flex justify=\"between\" className=\"oui-h-10\" px={3}>\n <Flex itemAlign=\"center\" width=\"100%\" className=\"oui-gap-x-[6px]\">\n <Text\n size=\"2xs\"\n className={cn(\n \"oui-text-base-contrast-36 group-hover:oui-text-base-contrast-80\",\n props.selected && \"oui-text-base-contrast-80\",\n )}\n >\n {item.displayName}\n </Text>\n </Flex>\n {renderTrailing()}\n </Flex>\n </button>\n );\n};\n\ninterface IconProps extends SVGProps<SVGSVGElement> {\n size?: number;\n}\n\nconst LanguageIcon = forwardRef<SVGSVGElement, IconProps>((props, ref) => {\n const { size = 20, ...rest } = props;\n\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n ref={ref}\n {...rest}\n >\n <path d=\"M10 1.678a8.333 8.333 0 1 0 0 16.667 8.333 8.333 0 1 0 0-16.667m0 1.667c1.1 0 2.308 2.527 2.492 5.831l-4.975.01c.183-3.304 1.382-5.84 2.482-5.84m-2.943.67c-.717 1.393-1.1 3.242-1.193 5.165L3.38 9.174c.248-2.271 1.778-4.176 3.676-5.159m5.889.003c1.898.983 3.388 2.835 3.676 5.168l-2.483-.008c-.078-2-.52-3.758-1.193-5.16m-9.56 6.83 2.483-.02c.092 1.923.478 3.803 1.191 5.182a6.79 6.79 0 0 1-3.674-5.162m4.118.007 4.975-.01c-.184 3.303-1.38 5.833-2.48 5.833s-2.312-2.519-2.495-5.823m6.64-.008 2.471-.008c-.287 2.208-1.68 4.18-3.672 5.162.74-1.53 1.108-3.23 1.2-5.154\" />\n </svg>\n );\n});\n","import {\n LanguageSwitcherScriptOptions,\n useLanguageSwitcherScript,\n} from \"./languageSwitcher.script\";\nimport { LanguageSwitcher } from \"./languageSwitcher.ui\";\n\nexport type LanguageSwitcherWidgetProps = LanguageSwitcherScriptOptions;\n\nexport const LanguageSwitcherWidget = (props: LanguageSwitcherWidgetProps) => {\n const state = useLanguageSwitcherScript(props);\n return <LanguageSwitcher {...state} />;\n};\n","import { useCallback, useState } from \"react\";\n\nexport const useLeftNavScript = () => {\n const [open, setOpen] = useState(false);\n\n const showSheet = useCallback(() => {\n setOpen(true);\n }, []);\n\n const hideSheet = useCallback(() => {\n setOpen(false);\n }, []);\n\n return {\n open,\n onOpenChange: setOpen,\n showSheet,\n hideSheet,\n };\n};\n\nexport type LeftNavScriptReturn = ReturnType<typeof useLeftNavScript>;\n","import { FC, useMemo } from \"react\";\nimport { useAccount } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n AccountStatusEnum,\n type RouterAdapter,\n type RouteOption,\n} from \"@kodiak-finance/orderly-types\";\nimport {\n Sheet,\n SheetContent,\n VectorIcon,\n SwapHorizIcon,\n PeopleIcon,\n Text,\n Divider,\n} from \"@kodiak-finance/orderly-ui\";\nimport { MainLogo } from \"../main/mainLogo\";\nimport { SubAccountWidget } from \"../subAccount\";\nimport {\n CommunityDiscord,\n CommunityDune,\n CommunityTG,\n CommunityX,\n} from \"./communityIcon\";\nimport { LeftNavScriptReturn } from \"./leftNav.script\";\nimport { LeftNavItem, LeftNavProps } from \"./leftNav.type\";\n\nexport type LeftNavUIProps = LeftNavProps &\n Partial<LeftNavScriptReturn> & {\n className?: string;\n logo?: {\n src: string;\n alt: string;\n };\n routerAdapter?: RouterAdapter;\n showSubAccount?: boolean;\n };\n\nexport const LeftNavUI: FC<LeftNavUIProps> = (props) => {\n return (\n <>\n <div onClick={props.showSheet} className={props?.className}>\n <VectorIcon />\n </div>\n <LeftNavSheet {...props} />\n </>\n );\n};\n\nconst LeftNavSheet: FC<LeftNavUIProps> = (props) => {\n const { state } = useAccount();\n const { t } = useTranslation();\n\n const { primaryMenus, secondaryMenus } = useMemo(() => {\n const primary = (props?.menus || []).filter((m) => !m.isSecondary);\n const secondary = (props?.menus || []).filter((m) => m.isSecondary);\n return { primaryMenus: primary, secondaryMenus: secondary };\n }, [props.menus]);\n\n const showSubAccount = useMemo(\n () => state.status >= AccountStatusEnum.EnableTrading,\n [state.status],\n );\n\n const onRouteChange = (option: RouteOption) => {\n props.routerAdapter?.onRouteChange?.(option);\n props.hideSheet?.();\n };\n\n const subAccountTrigger = useMemo(() => {\n const name =\n state.accountId === state.mainAccountId\n ? state.address\n : state.subAccounts?.find((item) => item.id === state.accountId)\n ?.description || \"\";\n return (\n <div className=\"oui-flex oui-w-full oui-cursor-pointer oui-items-center oui-gap-2 oui-rounded-xl oui-bg-base-5 oui-p-3\">\n <div>\n <PeopleIcon />\n </div>\n <div className=\"oui-flex oui-flex-col oui-gap-1 oui-font-semibold\">\n <Text.formatted\n rule=\"address\"\n className=\"oui-text-sm oui-text-base-contrast\"\n >\n {name}\n </Text.formatted>\n <Text.formatted\n rule=\"address\"\n className=\"oui-text-2xs oui-text-base-contrast-36\"\n >{`ID: ${state.accountId}`}</Text.formatted>\n </div>\n <div className=\"oui-ml-auto\">\n <SwapHorizIcon />\n </div>\n </div>\n );\n }, [state, t]);\n\n const openExternalLink = (url: string) => {\n window.open(url, \"_blank\");\n };\n\n return (\n <Sheet open={props.open} onOpenChange={props.onOpenChange}>\n <SheetContent\n side=\"left\"\n className=\"oui-w-[276px] oui-bg-base-8\"\n closeable\n closeableSize={24}\n closeOpacity={0.54}\n >\n <div className=\"oui-relative oui-flex oui-h-full oui-flex-col oui-gap-3\">\n <div className=\"oui-mt-[6px] oui-flex oui-h-[44px] oui-items-center [&_img]:!oui-h-[18px]\">\n <MainLogo {...props?.logo} />\n </div>\n {props?.leading}\n {showSubAccount && (\n <SubAccountWidget customTrigger={subAccountTrigger} />\n )}\n {(primaryMenus.length > 0 || secondaryMenus.length > 0) && (\n <div className=\"oui-flex oui-h-[calc(100vh-260px)] oui-flex-col oui-items-start oui-overflow-y-auto\">\n {primaryMenus.map((item) => (\n <NavItem\n item={item}\n key={`item-${item.name}`}\n onClick={onRouteChange}\n />\n ))}\n {secondaryMenus.length > 0 && primaryMenus.length > 0 && (\n <Divider className=\"oui-my-1 oui-w-full\" intensity={8} />\n )}\n {secondaryMenus.map((item) => (\n <NavItem\n item={item}\n key={`item-${item.name}`}\n onClick={onRouteChange}\n />\n ))}\n </div>\n )}\n <div className=\"oui-z-60 oui-absolute oui-bottom-6 oui-flex oui-w-full oui-flex-col oui-gap-4 oui-bg-base-8\">\n <div className=\"oui-flex oui-items-center oui-justify-around\">\n {props.telegramUrl && (\n <div\n onClick={() => openExternalLink(props.telegramUrl as string)}\n >\n <CommunityTG width={24} height={24} />\n </div>\n )}\n {props.twitterUrl && (\n <div\n onClick={() => openExternalLink(props.twitterUrl as string)}\n >\n <CommunityX width={24} height={24} />\n </div>\n )}\n {props.discordUrl && (\n <div\n onClick={() => openExternalLink(props.discordUrl as string)}\n >\n <CommunityDiscord width={24} height={24} />\n </div>\n )}\n {props.duneUrl && (\n <div\n onClick={() => openExternalLink(props.duneUrl as string)}\n className=\"oui-mb-1\"\n >\n <CommunityDune />\n </div>\n )}\n </div>\n {props.feedbackUrl && (\n <div\n className=\"oui-text-center oui-text-2xs oui-font-semibold oui-text-primary oui-underline\"\n onClick={() => openExternalLink(props.feedbackUrl as string)}\n >\n {t(\"leftNav.feedback\")}\n </div>\n )}\n </div>\n </div>\n </SheetContent>\n </Sheet>\n );\n};\n\ntype NavItemProps = {\n item: LeftNavItem;\n onClick?: (option: RouteOption) => void;\n};\n\nconst NavItem: FC<NavItemProps> = ({ item, onClick }) => {\n const {\n href,\n name,\n icon,\n trailing,\n onlyInMainAccount,\n customRender,\n target,\n } = item;\n const { isMainAccount } = useAccount();\n const onItemClick = () => {\n // Check if href is a full URL (external link)\n const isExternalLink =\n href.startsWith(\"http://\") || href.startsWith(\"https://\");\n\n if (target) {\n window.open(href, target);\n } else if (isExternalLink) {\n window.location.href = href;\n } else {\n onClick?.({ href: href, name: name, scope: \"leftNav\" });\n }\n };\n if (typeof customRender === \"function\") {\n return (\n <div\n className=\"oui-flex oui-w-full oui-items-center oui-p-3\"\n onClick={onItemClick}\n >\n {customRender({ name: name, href: href })}\n </div>\n );\n }\n if (onlyInMainAccount && !isMainAccount) {\n return null;\n }\n const isSecondary = !!item.isSecondary;\n const textClassName = isSecondary\n ? \"oui-text-xs oui-font-normal oui-text-base-contrast-54\"\n : \"oui-text-base oui-font-semibold oui-text-base-contrast-80\";\n return (\n <div\n className={`oui-flex oui-w-full oui-items-center oui-gap-2 oui-p-3 ${isSecondary ? \"oui-py-2\" : \"\"}`}\n onClick={onItemClick}\n >\n <div>{icon}</div>\n <div className={textClassName}>{name}</div>\n {trailing}\n </div>\n );\n};\n","import { FC } from \"react\";\nimport { useAppConfig } from \"@kodiak-finance/orderly-react-app\";\nimport { OrderlyLogo } from \"../icons\";\nimport { Logo } from \"@kodiak-finance/orderly-ui\";\n\ntype MainLogoProps = {\n src?: string;\n alt?: string;\n};\n\nexport const MainLogo: FC<MainLogoProps> = (props) => {\n const { appIcons } = useAppConfig();\n\n if (props.src) {\n return <Logo src={props.src} alt={props.alt} />;\n }\n\n const { main } = appIcons || {};\n\n if (main?.img) {\n return <img src={main?.img} />;\n }\n\n if (main?.component) {\n return main.component;\n }\n\n return <OrderlyLogo />;\n};\n","import { useCallback, useEffect, useMemo, useState, useRef } from \"react\";\nimport {\n useAccount,\n useIndexPricesStream,\n useWalletConnector,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n ABSTRACT_CHAIN_ID_MAP,\n API,\n EMPTY_LIST,\n EMPTY_OBJECT,\n} from \"@kodiak-finance/orderly-types\";\nimport { toast, useScreen } from \"@kodiak-finance/orderly-ui\";\nimport { Decimal } from \"@kodiak-finance/orderly-utils\";\nimport { useAccountValue } from \"./useAccountValue\";\n\nexport type SubAccountScriptReturn = ReturnType<typeof SubAccountScript>;\n\ntype AccountValueInfo = {\n id: string;\n userAddress?: string;\n description?: string;\n holding: API.Holding[];\n accountValue?: number;\n};\n\nexport const SubAccountScript = () => {\n const [open, setOpen] = useState(false);\n const [mainAccountHolding, setMainAccountHolding] = useState<API.Holding[]>(\n [],\n );\n const { wallet, connectedChain } = useWalletConnector();\n const { data: indexPrices } = useIndexPricesStream();\n const { isMobile } = useScreen();\n const { state, account, subAccount, switchAccount } = useAccount();\n const { t } = useTranslation();\n const mainAccountId = state.mainAccountId;\n\n const { accountValue } = useAccountValue(mainAccountId);\n\n const currentAccountId = state.accountId;\n\n const hasRefreshedRef = useRef(false);\n\n const userAddress = useMemo(() => {\n let address = state.address;\n if (\n connectedChain?.id &&\n ABSTRACT_CHAIN_ID_MAP.has(parseInt(connectedChain?.id as string))\n ) {\n address = account.getAdditionalInfo()?.AGWAddress;\n }\n\n return address;\n }, [wallet, state, account, connectedChain]);\n\n const subAccounts = useMemo(() => {\n if (!state.subAccounts || !state.subAccounts.length) {\n return [];\n }\n\n const currentSubAccount = state.subAccounts.find(\n (subAccount) => subAccount.id === currentAccountId,\n );\n\n if (currentSubAccount) {\n return [\n currentSubAccount,\n ...state.subAccounts.filter(\n (subAccount) => subAccount.id !== currentAccountId,\n ),\n ];\n }\n\n return [...state.subAccounts];\n }, [state.subAccounts, currentAccountId]);\n\n const _popup = useMemo(\n () => ({ mode: isMobile ? \"sheet\" : \"modal\" }),\n [isMobile],\n );\n\n const doCreatSubAccount = useCallback(\n (nickName: string) => {\n return subAccount.create(nickName);\n },\n [subAccount],\n );\n\n const onSwitch = useCallback(\n (accountId: string) => {\n return switchAccount(accountId)\n .catch((error) => {\n console.error(error);\n })\n .then((res) => {\n toast.success(t(\"subAccount.modal.switch.success.description\"));\n });\n },\n [switchAccount],\n );\n\n const accountsWithValues = useMemo(() => {\n const mainAccountUnsettlePnl = accountValue[mainAccountId!] ?? 0;\n\n const mainAccount =\n mainAccountId && state.address\n ? {\n id: mainAccountId,\n userAddress: state.address,\n holding: mainAccountHolding,\n accountValue: calculateAccountValue(\n mainAccountHolding,\n mainAccountUnsettlePnl,\n indexPrices || EMPTY_OBJECT,\n ),\n }\n : undefined;\n\n const updatedSubAccounts = subAccounts.map((subAccount) => {\n const subAccountUnsettlePnl = accountValue[subAccount.id] ?? 0;\n return {\n ...subAccount,\n accountValue: calculateAccountValue(\n subAccount.holding || EMPTY_LIST,\n subAccountUnsettlePnl,\n indexPrices || EMPTY_OBJECT,\n ),\n };\n });\n\n return {\n mainAccount,\n subAccounts: updatedSubAccounts,\n };\n }, [\n mainAccountId,\n state.address,\n mainAccountHolding,\n subAccounts,\n accountValue,\n indexPrices,\n ]);\n\n useEffect(() => {\n if (!open) {\n hasRefreshedRef.current = false;\n return;\n }\n\n if (!hasRefreshedRef.current && mainAccountId) {\n hasRefreshedRef.current = true;\n subAccount.refresh().then((res) => {\n setMainAccountHolding(res[mainAccountId] || []);\n });\n }\n }, [open, mainAccountId, subAccount]);\n\n return {\n userAddress,\n mainAccount: accountsWithValues.mainAccount,\n currentAccountId,\n open,\n onOpenChange: setOpen,\n popup: _popup,\n createSubAccount: doCreatSubAccount,\n subAccounts: accountsWithValues.subAccounts,\n onSwitch,\n };\n};\n\nconst calculateAccountValue = (\n holdings: API.Holding[],\n unsettlePnl: number,\n indexPrices: Record<string, number>,\n) => {\n const holding = holdings.reduce((acc, holding) => {\n const price = getTokenIndexPrice(holding.token, indexPrices);\n if (!price) {\n return acc;\n }\n return acc + new Decimal(holding.holding).times(price).toNumber();\n }, 0);\n return holding + unsettlePnl;\n};\n\nconst getTokenIndexPrice = (\n token: string,\n indexPrices: Record<string, number>,\n) => {\n if (token === \"USDC\") {\n return 1;\n }\n const symbol = `PERP_${token}_USDC`;\n return indexPrices[symbol] ?? 0;\n};\n","import { useEffect, useMemo, useState } from \"react\";\nimport { useSubAccountQuery } from \"@kodiak-finance/orderly-hooks\";\nimport { API } from \"@kodiak-finance/orderly-types\";\nimport { Decimal } from \"@kodiak-finance/orderly-utils\";\n\nexport const useAccountValue = (mainAccountId?: string) => {\n const [accountValue, setAccountValue] = useState<Record<string, number>>({});\n const {\n data: newPositions = [],\n isLoading: isPositionLoading,\n mutate: mutatePositions,\n } = useSubAccountQuery<API.PositionExt[]>(\"/v1/client/aggregate/positions\", {\n // formatter: (data) => data,\n errorRetryCount: 3,\n accountId: mainAccountId,\n });\n\n useEffect(() => {\n if (isPositionLoading) {\n return;\n }\n if (!newPositions || newPositions.length === 0) {\n setAccountValue({});\n return;\n }\n const value = newPositions.reduce(\n (acc, position) => {\n const accountId = position.account_id!;\n if (acc[accountId]) {\n acc[accountId] = new Decimal(acc[accountId])\n .plus(position.unsettled_pnl)\n .toNumber();\n } else {\n acc[accountId] = new Decimal(position.unsettled_pnl).toNumber();\n }\n return acc;\n },\n {} as Record<string, number>,\n );\n setAccountValue(value);\n }, [newPositions, isPositionLoading]);\n return {\n accountValue,\n };\n};\n","import { useCallback, useRef, useMemo, useState, ReactNode } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n SimpleDialog,\n useScreen,\n Text,\n Flex,\n ScrollArea,\n modal,\n cn,\n DropdownMenuRoot,\n DropdownMenuTrigger,\n DropdownMenuPortal,\n DropdownMenuContent,\n PopoverRoot,\n PopoverContent,\n PopoverAnchor,\n} from \"@kodiak-finance/orderly-ui\";\nimport { AccountItem } from \"./components/accountItem\";\nimport { CreateSubAccount } from \"./components/createSubAccountModal\";\nimport { EditNickNameDialog } from \"./components/editNickNameModal\";\nimport { SubAccountIcon, SwapIcon } from \"./icons\";\nimport { SubAccountScriptReturn } from \"./subAccount.script\";\n\nexport function SubAccountUI(\n props: SubAccountScriptReturn & { customTrigger?: ReactNode },\n) {\n const { t } = useTranslation();\n const { isMobile } = useScreen();\n const timer = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const onMouseEnter = useCallback(() => {\n if (timer.current) {\n clearTimeout(timer.current);\n timer.current = null;\n }\n // setOpen(true);\n }, []);\n const header = <Text weight=\"semibold\">{t(\"subAccount.modal.title\")}</Text>;\n const trigger = useMemo(() => {\n if (props.customTrigger && isMobile) {\n return (\n <div onClick={() => props.onOpenChange(true)}>\n {props.customTrigger}\n </div>\n );\n }\n if (isMobile) {\n return (\n <Flex\n className=\"oui-size-8 oui-rounded-md oui-bg-base-6\"\n itemAlign=\"center\"\n justify=\"center\"\n >\n <SubAccountIcon\n className={cn(\"oui-cursor-pointer\")}\n onClick={() => props.onOpenChange(true)}\n />\n </Flex>\n );\n }\n return <SubAccountIcon className={cn(\"oui-cursor-pointer\")} />;\n }, [isMobile, props.customTrigger]);\n\n const [editDialogOpen, setEditDialogOpen] = useState(false);\n const [editAccountItem, setEditAccountItem] = useState<\n | {\n accountId: string;\n description: string;\n }\n | undefined\n >(undefined);\n\n const noSubAccount = (\n <Flex\n direction=\"column\"\n itemAlign=\"start\"\n justify=\"center\"\n px={5}\n width=\"100%\"\n className=\"oui-h-[120px]\"\n >\n <Text className=\"oui-text-center oui-text-xs oui-font-semibold oui-text-base-contrast-36\">\n {t(\"subAccount.modal.noAccount.description\")}\n </Text>\n </Flex>\n );\n\n const renderSubAccount = () => {\n if (!props.subAccounts?.length) {\n return noSubAccount;\n }\n return (\n <ScrollArea className=\"oui-custom-scrollbar oui-max-h-[200px] oui-w-full oui-overflow-y-auto\">\n <Flex direction=\"column\" gap={2} itemAlign=\"start\" width=\"100%\">\n {props.subAccounts.map((subAccount) => (\n <AccountItem\n key={subAccount.id}\n accountId={subAccount.id}\n description={subAccount.description}\n isMainAccount={false}\n isCurrent={subAccount.id === props.currentAccountId}\n onSwitch={(accountId) => {\n props.onSwitch?.(accountId);\n }}\n accountValue={subAccount.accountValue ?? 0}\n onEdit={() => {\n setEditAccountItem({\n accountId: subAccount.id,\n description: subAccount.description ?? \"\",\n });\n setEditDialogOpen(true);\n }}\n />\n ))}\n </Flex>\n </ScrollArea>\n );\n };\n\n const content = (\n <>\n <Flex direction=\"column\" gap={5} itemAlign=\"start\" width=\"100%\">\n {!isMobile && header}\n <Flex direction=\"column\" gap={5} itemAlign=\"start\" width=\"100%\">\n <Flex direction=\"column\" gap={2} itemAlign=\"start\" width=\"100%\">\n <Text className=\"oui-text-xs oui-leading-3 oui-text-base-contrast-54\">\n {t(\"subAccount.modal.mainAccount.title\")}\n </Text>\n <AccountItem\n accountId={props.mainAccount?.id ?? \"\"}\n isMainAccount={true}\n userAddress={props.userAddress ?? \"\"}\n isCurrent={props.currentAccountId === props.mainAccount?.id}\n onSwitch={(accountId) => {\n props.onSwitch?.(accountId);\n }}\n accountValue={props.mainAccount?.accountValue ?? 0}\n />\n </Flex>\n\n <Flex direction=\"column\" gap={2} itemAlign=\"start\" width=\"100%\">\n <Flex justify=\"between\" itemAlign=\"center\" width=\"100%\" gap={2}>\n <Text className=\"oui-text-xs oui-leading-3 oui-text-base-contrast-54\">\n {t(\"subAccount.modal.subAccounts.title\")}\n </Text>\n <Flex justify=\"end\" gap={2}>\n {props.subAccounts.length > 0 && (\n <SwapIcon\n className=\"oui-cursor-pointer oui-fill-base-contrast-54 hover:oui-fill-base-contrast\"\n onClick={() => {\n // todo need show transfer modal\n let dialogId = \"TransferDialogId\";\n if (isMobile) {\n dialogId = \"TransferSheetId\";\n }\n modal.show(dialogId);\n }}\n />\n )}\n <CreateSubAccount create={props.createSubAccount} />\n </Flex>\n </Flex>\n {renderSubAccount()}\n </Flex>\n </Flex>\n </Flex>\n <EditNickNameDialog\n accountId={editAccountItem?.accountId ?? \"\"}\n nickName={editAccountItem?.description ?? \"\"}\n open={editDialogOpen}\n onOpenChange={setEditDialogOpen}\n />\n </>\n );\n if (isMobile) {\n return (\n <>\n {trigger}\n <SimpleDialog\n title={header}\n open={props.open}\n onOpenChange={props.onOpenChange}\n size=\"xs\"\n classNames={{\n content: \"oui-w-[300px]\",\n }}\n >\n {content}\n </SimpleDialog>\n </>\n );\n }\n\n return (\n <PopoverRoot open={props.open} onOpenChange={props.onOpenChange}>\n <PopoverAnchor>\n <div\n onMouseEnter={() => {\n props.onOpenChange(true);\n }}\n onMouseLeave={() => {\n timer.current = setTimeout(() => {\n props.onOpenChange(false);\n }, 150);\n }}\n >\n {trigger}\n </div>\n </PopoverAnchor>\n <PopoverContent\n align=\"start\"\n side=\"bottom\"\n sideOffset={16}\n collisionPadding={{ right: 16 }}\n onMouseEnter={onMouseEnter}\n onMouseLeave={() => {\n props.onOpenChange(false);\n timer.current ? clearTimeout(timer.current) : void 0;\n }}\n className={cn(\n \"oui-w-[300px] oui-space-y-[2px] oui-border oui-border-line-6 oui-p-5\",\n )}\n >\n {content}\n </PopoverContent>\n </PopoverRoot>\n );\n}\n","import { useCallback, useEffect, useMemo } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n CopyIcon,\n formatAddress,\n toast,\n Tooltip,\n} from \"@kodiak-finance/orderly-ui\";\nimport { cn, Flex, Text } from \"@kodiak-finance/orderly-ui\";\nimport { EditIcon } from \"../icons\";\n\ninterface AccountItemProps {\n isMainAccount?: boolean;\n accountId: string;\n description?: string;\n userAddress?: string;\n balance?: string;\n isCurrent?: boolean;\n onSwitch?: (accountId: string) => void;\n accountValue?: number;\n onEdit?: (accountItem: { accountId: string; description: string }) => void;\n}\n\nconst AccountIdForCopy = (props: { accountId: string }) => {\n const { t } = useTranslation();\n const info = useMemo(() => {\n return {\n leading: props.accountId.slice(0, 6),\n middle: props.accountId.slice(6, -4),\n trailing: props.accountId.slice(-4),\n };\n }, [props.accountId]);\n const copy = useCallback(() => {\n navigator.clipboard.writeText(props.accountId);\n toast.success(t(\"common.copy.copied\"));\n }, [props.accountId]);\n return (\n <Flex\n className=\"oui-min-h-[50px] oui-w-[180px]\"\n gap={2}\n justify=\"between\"\n itemAlign=\"center\"\n >\n <Text className=\"oui-w-full oui-break-all oui-text-2xs oui-text-base-contrast-36\">\n <Text className=\"oui-text-base-contrast\">{info.leading}</Text>\n <Text>{info.middle}</Text>\n <Text className=\"oui-text-base-contrast\">{info.trailing}</Text>\n </Text>\n <CopyIcon\n onClick={copy}\n className=\"oui-cursor-pointer oui-text-base-contrast-36 hover:oui-text-base-contrast\"\n />\n </Flex>\n );\n};\n\nexport const AccountItem = (props: AccountItemProps) => {\n const { t } = useTranslation();\n\n return (\n <>\n <Flex\n justify=\"between\"\n itemAlign=\"center\"\n width=\"100%\"\n className={cn(\n \"oui-relative oui-cursor-pointer oui-rounded-[6px] oui-bg-base-6 oui-px-3 oui-py-4\",\n \"oui-border oui-border-base-6\",\n props.isCurrent && \" oui-border-[#38E2FE] \",\n !props.isCurrent && \"hover:oui-border-base-contrast-16\",\n )}\n >\n <div\n className=\"oui-absolute oui-inset-0 oui-z-0 \"\n onClick={() => {\n if (props.isCurrent) {\n return;\n }\n props.onSwitch?.(props.accountId);\n }}\n />\n {props.isCurrent && (\n <div\n className={cn(\n \"oui-absolute -oui-right-[1px] -oui-top-[1px] oui-leading-3 oui-text-base-contrast-54\",\n \"oui-text-[10px] oui-font-semibold oui-text-black\",\n \"oui-rounded-[6px] oui-rounded-br-none oui-rounded-tl-none oui-bg-[#38E2FE] oui-py-0.5 oui-pl-1 oui-pr-[5px]\",\n )}\n >\n {t(\"subAccount.modal.current\")}\n </div>\n )}\n <Flex\n key={props.accountId}\n direction=\"column\"\n itemAlign=\"start\"\n gap={1}\n className=\"oui-z-[2]\"\n >\n {props.isMainAccount ? (\n <Text className=\"oui-text-xs oui-leading-3 oui-text-base-contrast\">\n {formatAddress(props.userAddress ?? \"\")}\n </Text>\n ) : (\n <Flex\n justify=\"start\"\n itemAlign=\"center\"\n className=\"oui-cursor-pointer oui-gap-[2px] oui-fill-base-contrast-54 hover:oui-fill-base-contrast\"\n onClick={(event) => {\n props.onEdit?.({\n accountId: props.accountId,\n description: props.description ?? \"\",\n });\n event.stopPropagation();\n event.preventDefault();\n }}\n >\n <Text className=\"oui-text-xs oui-leading-3 oui-text-base-contrast\">\n {props.description}\n </Text>\n <EditIcon className=\"oui-fill-base-contrast-54 hover:oui-fill-base-contrast\" />\n </Flex>\n )}\n <Tooltip content={<AccountIdForCopy accountId={props.accountId} />}>\n <Text className=\"oui-text-2xs oui-leading-3 oui-text-base-contrast-36 hover:oui-text-base-contrast\">\n ID: {formatAddress(props.accountId)}\n </Text>\n </Tooltip>\n </Flex>\n <Flex\n className=\"oui-text-xs oui-text-base-contrast\"\n itemAlign=\"end\"\n gap={1}\n >\n <Text.numeral rule=\"price\" dp={2}>\n {props.accountValue ?? 0}\n </Text.numeral>\n <Text>USDC</Text>\n </Flex>\n </Flex>\n </>\n );\n};\n","import { FC, forwardRef, SVGProps } from \"react\";\n\ninterface IconProps extends SVGProps<SVGSVGElement> {\n size?: number;\n}\nexport const SubAccountIcon = forwardRef<SVGSVGElement, IconProps>(\n (props, ref) => {\n const { size = 20, ...rest } = props;\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n ref={ref}\n {...rest}\n >\n <path\n d=\"M10 2.5C8.16892 2.5 6.66667 4.00225 6.66667 5.83333C6.66667 7.66441 8.16892 9.16667 10 9.16667C11.8311 9.16667 13.3333 7.66441 13.3333 5.83333C13.3333 4.00225 11.8311 2.5 10 2.5ZM10 4.16667C10.9303 4.16667 11.6667 4.90299 11.6667 5.83333C11.6667 6.76368 10.9303 7.5 10 7.5C9.06965 7.5 8.33333 6.76368 8.33333 5.83333C8.33333 4.90299 9.06965 4.16667 10 4.16667ZM10 11.6667C8.54587 11.6667 6.82264 12.0082 5.37435 12.5798C4.65021 12.8656 3.99558 13.205 3.47168 13.641C2.94778 14.0769 2.5 14.6662 2.5 15.4167V17.5H17.5V16.6667V15.4167C17.5 14.6662 17.0522 14.0769 16.5283 13.641C16.0044 13.205 15.3498 12.8656 14.6257 12.5798C13.1774 12.0082 11.4541 11.6667 10 11.6667ZM10 13.3333C11.1784 13.3333 12.7884 13.645 14.0153 14.1292C14.6288 14.3713 15.1475 14.66 15.4622 14.9219C15.777 15.1838 15.8333 15.3622 15.8333 15.4167V15.8333H4.16667V15.4167C4.16667 15.3622 4.22299 15.1838 4.53776 14.9219C4.85253 14.66 5.37124 14.3713 5.9847 14.1292C7.21162 13.645 8.82163 13.3333 10 13.3333Z\"\n fill=\"white\"\n fillOpacity=\"0.98\"\n />\n </svg>\n );\n },\n);\n\nexport const SwapIcon = forwardRef<SVGSVGElement, IconProps>((props, ref) => {\n const { size = 20, ...rest } = props;\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n ref={ref}\n {...rest}\n >\n <path d=\"M6 16L2 12L6 8L7.0625 9.0625L4.875 11.25H11V12.75H4.875L7.0625 14.9375L6 16ZM14 11L12.9375 9.9375L15.125 7.75H9V6.25H15.125L12.9375 4.0625L14 3L18 7L14 11Z\" />\n </svg>\n );\n});\n\nexport const AddIcon = forwardRef<SVGSVGElement, IconProps>((props, ref) => {\n const { size = 20, ...rest } = props;\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n ref={ref}\n {...rest}\n >\n <path d=\"M9.25 14H10.75V10.75H14V9.25H10.75V6H9.25V9.25H6V10.75H9.25V14ZM4.5 17C4.0875 17 3.73437 16.8531 3.44062 16.5594C3.14687 16.2656 3 15.9125 3 15.5V4.5C3 4.0875 3.14687 3.73438 3.44062 3.44063C3.73437 3.14688 4.0875 3 4.5 3H15.5C15.9125 3 16.2656 3.14688 16.5594 3.44063C16.8531 3.73438 17 4.0875 17 4.5V15.5C17 15.9125 16.8531 16.2656 16.5594 16.5594C16.2656 16.8531 15.9125 17 15.5 17H4.5ZM4.5 15.5H15.5V4.5H4.5V15.5Z\" />\n </svg>\n );\n});\n\nexport const EditIcon = forwardRef<SVGSVGElement, IconProps>((props, ref) => {\n const { size = 12, ...rest } = props;\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 12 12\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n ref={ref}\n {...rest}\n >\n <path d=\"M9.95551 2.00049C9.81619 2.00049 9.67686 2.05318 9.57074 2.15918L5.43256 6.29785L5.24945 7.25049L6.20209 7.06738L10.3403 2.9292C10.443 2.82645 10.4999 2.68968 10.4999 2.54443C10.4999 2.39918 10.443 2.26218 10.3403 2.15918C10.2341 2.05318 10.0948 2.00049 9.95551 2.00049ZM3.12494 2.25C2.37147 2.25 1.74994 2.87153 1.74994 3.625V9.375C1.74994 10.1285 2.37147 10.75 3.12494 10.75H8.87494C9.62841 10.75 10.2499 10.1285 10.2499 9.375V5.25C10.2509 5.18374 10.2386 5.11796 10.2139 5.05648C10.1892 4.99499 10.1525 4.93903 10.106 4.89185C10.0595 4.84466 10.0041 4.8072 9.94293 4.78162C9.8818 4.75605 9.8162 4.74288 9.74994 4.74288C9.68368 4.74288 9.61807 4.75605 9.55695 4.78162C9.49582 4.8072 9.44038 4.84466 9.39386 4.89185C9.34734 4.93903 9.31066 4.99499 9.28595 5.05648C9.26124 5.11796 9.249 5.18374 9.24994 5.25V9.375C9.24994 9.58803 9.08797 9.75 8.87494 9.75H3.12494C2.91191 9.75 2.74994 9.58803 2.74994 9.375V3.625C2.74994 3.41197 2.91191 3.25 3.12494 3.25H7.24994C7.3162 3.25094 7.38198 3.2387 7.44346 3.21399C7.50494 3.18928 7.5609 3.1526 7.60809 3.10608C7.65527 3.05956 7.69274 3.00412 7.71832 2.94299C7.74389 2.88186 7.75706 2.81626 7.75706 2.75C7.75706 2.68374 7.74389 2.61814 7.71832 2.55701C7.69274 2.49588 7.65527 2.44044 7.60809 2.39392C7.5609 2.3474 7.50494 2.31072 7.44346 2.28601C7.38198 2.2613 7.3162 2.24906 7.24994 2.25H3.12494Z\" />\n </svg>\n );\n});\n","import { useState, useMemo } from \"react\";\nimport { useAccount } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { useAppContext } from \"@kodiak-finance/orderly-react-app\";\nimport {\n Flex,\n SimpleDialog,\n toast,\n Text,\n useScreen,\n cn,\n Tooltip,\n} from \"@kodiak-finance/orderly-ui\";\nimport { AddIcon } from \"../icons\";\nimport { NickNameTextField } from \"./common\";\n\nconst MAX_SUB_ACCOUNT_COUNT = 10;\ntype CreateSubAccountProps = {\n create: (nickName: string) => Promise<void>;\n};\n\nexport const CreateSubAccount = (props: CreateSubAccountProps) => {\n const { t } = useTranslation();\n const { isMobile } = useScreen();\n const [open, setOpen] = useState(false);\n const [nickName, setNickName] = useState<string | undefined>(undefined);\n const { state } = useAccount();\n const [invalid, setInvalid] = useState(false);\n const [loading, setLoading] = useState(false);\n\n const { widgetConfigs } = useAppContext();\n\n const maxSubAccountCount = useMemo(() => {\n return (\n widgetConfigs?.subAccount?.maxSubAccountCount ?? MAX_SUB_ACCOUNT_COUNT\n );\n }, [widgetConfigs]);\n\n const subAccountCount = useMemo(() => {\n return state.subAccounts?.length ?? 0;\n }, [state]);\n\n const trigger = useMemo(() => {\n return subAccountCount >= maxSubAccountCount ? (\n <Tooltip\n className=\"oui-max-w-[188px]\"\n content={t(\"subAccount.modal.create.max.description\")}\n >\n <AddIcon\n className={cn(\"oui-cursor-not-allowed oui-fill-base-contrast-20\")}\n />\n </Tooltip>\n ) : (\n <AddIcon\n className={cn(\n \"oui-cursor-pointer oui-fill-base-contrast-54 hover:oui-fill-base-contrast\",\n )}\n onClick={() => {\n setOpen(true);\n }}\n />\n );\n }, [subAccountCount, maxSubAccountCount]);\n\n const header = (\n <Flex\n py={3}\n direction=\"column\"\n justify=\"between\"\n itemAlign=\"start\"\n width=\"100%\"\n >\n <Text weight=\"semibold\">{t(\"subAccount.modal.create.title\")}</Text>\n <Text className=\"oui-text-2xs oui-text-base-contrast-36\">\n {t(\"subAccount.modal.create.description\", {\n subAccountCount,\n remainingCount: maxSubAccountCount - subAccountCount,\n })}\n </Text>\n </Flex>\n );\n\n const reset = () => {\n setNickName(\"\");\n setInvalid(false);\n setLoading(false);\n };\n\n const validateNickName = (nickName: string | undefined) => {\n if (!nickName || !(nickName.length >= 1 && nickName.length <= 20)) {\n setInvalid(true);\n return true;\n }\n setInvalid(false);\n return false;\n };\n\n const doCreatSubAccount = (nickName: string | undefined) => {\n let _nickName = `Sub-account ${subAccountCount + 1}`;\n if (nickName) {\n _nickName = nickName.trim();\n }\n\n setLoading(true);\n props\n .create(_nickName)\n .then((res) => {\n console.log(\"res\", res);\n reset();\n toast.success(t(\"subAccount.modal.create.success.description\"));\n\n setOpen(false);\n })\n .catch((e: any) => {\n toast.error(t(\"subAccount.modal.create.failed.description\"));\n })\n .finally(() => {\n setLoading(false);\n });\n };\n return (\n <>\n {trigger}\n <SimpleDialog\n title={header}\n open={open}\n onOpenChange={(open) => {\n reset();\n setOpen(open);\n }}\n size={isMobile ? \"sm\" : \"xl\"}\n actions={{\n primary: {\n label: t(\"common.confirm\"),\n disabled: invalid || loading,\n loading: loading,\n onClick: () => {\n const invalid = validateNickName(nickName);\n if (invalid) {\n return;\n }\n doCreatSubAccount(nickName);\n },\n },\n }}\n classNames={{\n content: \"oui-w-[360px]\",\n }}\n >\n <NickNameTextField\n nickName={nickName}\n setNickName={(nickName) => {\n validateNickName(nickName);\n setNickName(nickName);\n }}\n subAccountCount={subAccountCount}\n invalid={invalid}\n />\n </SimpleDialog>\n </>\n );\n};\n","import { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { inputFormatter, TextField } from \"@kodiak-finance/orderly-ui\";\n\nexport const NickNameDescriptionText = \"\";\n\nexport const NickNameTextField = (props: {\n nickName: string | undefined;\n setNickName: (nickName: string | undefined) => void;\n subAccountCount?: number;\n invalid?: boolean;\n}) => {\n const { t } = useTranslation();\n return (\n <TextField\n placeholder={`Sub-account ${(props.subAccountCount ?? 0) + 1}`}\n fullWidth\n label={t(\"subAccount.modal.nickName.label\")}\n value={props.nickName}\n onChange={(e) => {\n const _value = e.target.value.replace(/[^a-zA-Z0-9@,\\s_-]/g, \"\");\n props.setNickName(_value);\n }}\n formatters={[\n inputFormatter.createRegexInputFormatter(/[^a-zA-Z0-9@,\\s_-]/g),\n ]}\n classNames={{\n label: \"oui-text-base-contrast-54 oui-text-xs\",\n input: \"placeholder:oui-text-base-contrast-20 placeholder:oui-text-sm\",\n }}\n maxLength={20}\n minLength={1}\n autoComplete=\"off\"\n helpText={t(\"subAccount.modal.create.nickname.role\")}\n className=\"oui-mb-4\"\n color={props.invalid ? \"danger\" : undefined}\n />\n );\n};\n","import { useEffect, useState } from \"react\";\nimport { useAccount } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { SimpleDialog, toast, Text, TextField } from \"@kodiak-finance/orderly-ui\";\nimport { NickNameDescriptionText, NickNameTextField } from \"./common\";\n\nexport const EditNickNameDialog = (props: {\n nickName: string;\n open: boolean;\n accountId: string;\n onOpenChange: (open: boolean) => void;\n}) => {\n const { subAccount } = useAccount();\n const [loading, setLoading] = useState(false);\n const { t } = useTranslation();\n const [newNickName, setNewNickName] = useState<string | undefined>(undefined);\n const [invalid, setInvalid] = useState(false);\n\n const validateNickName = (nickName: string | undefined) => {\n if (!nickName || !(nickName.length >= 1 && nickName.length <= 20)) {\n setInvalid(true);\n return true;\n }\n setInvalid(false);\n };\n useEffect(() => {\n setNewNickName(props.nickName);\n setInvalid(false);\n setLoading(false);\n }, [props.nickName, props.open]);\n return (\n <SimpleDialog\n title={<Text>{t(\"subAccount.modal.edit.title\")}</Text>}\n open={props.open}\n onOpenChange={props.onOpenChange}\n classNames={{\n content: \"oui-w-[360px]\",\n }}\n actions={{\n primary: {\n label: t(\"common.confirm\"),\n disabled: loading || invalid,\n loading: loading,\n onClick: () => {\n if (validateNickName(newNickName)) {\n return;\n }\n setLoading(true);\n subAccount\n ?.update({\n subAccountId: props.accountId,\n description: newNickName,\n })\n .catch((e) => {\n console.log(\"e\", e);\n toast.error(t(\"subAccount.modal.edit.failed.description\"));\n })\n .then((res) => {\n toast.success(t(\"subAccount.modal.edit.success.description\"));\n props.onOpenChange(false);\n })\n .finally(() => {\n setLoading(false);\n });\n },\n },\n secondary: {\n label: t(\"common.cancel\"),\n onClick: () => props.onOpenChange(false),\n },\n }}\n >\n <NickNameTextField\n nickName={newNickName}\n setNickName={(nickName) => {\n validateNickName(nickName);\n setNewNickName(nickName ?? \"\");\n }}\n invalid={invalid}\n />\n </SimpleDialog>\n );\n};\n","import { FC, ReactNode } from \"react\";\nimport { SubAccountScript } from \"./subAccount.script\";\nimport { SubAccountUI } from \"./subAccount.ui\";\n\ntype SubAccountWidgetProps = {\n customTrigger?: ReactNode;\n};\n\nexport const SubAccountWidget: FC<SubAccountWidgetProps> = (props) => {\n const state = SubAccountScript();\n return <SubAccountUI {...state} customTrigger={props?.customTrigger} />;\n};\n","import { FC } from \"react\";\n\nexport interface CommunityProps {\n width?: number;\n height?: number;\n className?: string | undefined;\n}\n\nexport const CommunityDiscord: FC<CommunityProps> = (props) => {\n const { width = 20, height = 20, className } = props;\n\n return (\n <div className=\"orderly-fill-base-contrast-54 hover:orderly-fill-base-contrast\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"white\"\n fillOpacity={1}\n className={`${className}`}\n >\n <path d=\"M14.9559 5.5217C16.5596 7.89629 17.3515 10.5748 17.0555 13.6583C17.0542 13.6714 17.0475 13.6833 17.0368 13.6912C15.8224 14.5893 14.6458 15.1343 13.4857 15.4958C13.4767 15.4985 13.467 15.4984 13.4581 15.4953C13.4491 15.4923 13.4413 15.4865 13.4358 15.4788C13.1678 15.1032 12.9243 14.7073 12.7109 14.2915C12.6987 14.267 12.7099 14.2375 12.7351 14.2278C13.1218 14.0811 13.4896 13.9052 13.8434 13.6969C13.8712 13.6805 13.873 13.6403 13.8473 13.621C13.7722 13.5648 13.6978 13.5058 13.6266 13.4468C13.6133 13.4359 13.5954 13.4338 13.5803 13.4411C11.2837 14.5092 8.76789 14.5092 6.44412 13.4411C6.42903 13.4343 6.41111 13.4367 6.39815 13.4474C6.32715 13.5064 6.2526 13.5648 6.17823 13.621C6.1525 13.6403 6.15463 13.6805 6.18267 13.6969C6.53642 13.9012 6.90419 14.0811 7.29042 14.2285C7.31544 14.2382 7.32734 14.267 7.31491 14.2915C7.10618 14.7078 6.86265 15.1037 6.58967 15.4793C6.57777 15.4945 6.55825 15.5015 6.53979 15.4958C5.38518 15.1343 4.20857 14.5893 2.99415 13.6912C2.98403 13.6833 2.97676 13.6708 2.97569 13.6578C2.72826 10.9906 3.23253 8.28992 5.07333 5.52116C5.07776 5.51383 5.08451 5.50811 5.09232 5.50472C5.99808 5.08607 6.96844 4.77807 7.98265 4.60218C8.00111 4.59932 8.01957 4.6079 8.02915 4.62434C8.15446 4.84779 8.2977 5.13434 8.39461 5.36851C9.46367 5.20405 10.5494 5.20405 11.6408 5.36851C11.7377 5.13934 11.876 4.84779 12.0008 4.62434C12.0052 4.61619 12.0121 4.60965 12.0205 4.60567C12.0288 4.60169 12.0382 4.60047 12.0473 4.60218C13.062 4.77861 14.0324 5.08661 14.9374 5.50472C14.9454 5.50811 14.952 5.51383 14.9559 5.5217V5.5217ZM8.9381 10.593C8.94929 9.80452 8.37846 9.15206 7.66191 9.15206C6.95122 9.15206 6.3859 9.7988 6.3859 10.593C6.3859 11.387 6.96241 12.0338 7.66191 12.0338C8.37278 12.0338 8.9381 11.387 8.9381 10.593V10.593ZM13.6563 10.593C13.6675 9.80452 13.0966 9.15206 12.3803 9.15206C11.6694 9.15206 11.1041 9.7988 11.1041 10.593C11.1041 11.387 11.6806 12.0338 12.3803 12.0338C13.0966 12.0338 13.6563 11.387 13.6563 10.593V10.593Z\" />\n </svg>\n </div>\n );\n};\n\nexport const CommunityTG: FC<CommunityProps> = (props) => {\n const { width = 20, height = 20, className } = props;\n\n return (\n <div className=\"orderly-fill-base-contrast-54 hover:orderly-fill-base-contrast\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n // stroke=\"currentColor\"\n fill=\"white\"\n fillOpacity={1}\n className={`${className}`}\n >\n <path d=\"M4.10787 9.4635C4.10787 9.4635 9.64487 7.13143 11.5652 6.31025C12.3013 5.98181 14.7978 4.93069 14.7978 4.93069C14.7978 4.93069 15.95 4.47087 15.854 5.58763C15.822 6.0475 15.5659 7.65694 15.3099 9.39781C14.9258 11.8613 14.5097 14.5547 14.5097 14.5547C14.5097 14.5547 14.4457 15.3102 13.9016 15.4416C13.3575 15.5729 12.4613 14.9817 12.3013 14.8503C12.1733 14.7518 9.9009 13.2737 9.06876 12.5511C8.84471 12.354 8.58868 11.9599 9.10074 11.5C10.253 10.4161 11.6292 9.06937 12.4613 8.21537C12.8454 7.82119 13.2295 6.9015 11.6292 8.01825C9.35681 9.62774 7.11641 11.1387 7.11641 11.1387C7.11641 11.1387 6.60431 11.4671 5.64415 11.1715C4.68394 10.8759 3.56374 10.4817 3.56374 10.4817C3.56374 10.4817 2.79565 9.98906 4.10787 9.4635Z\" />\n </svg>\n </div>\n );\n};\n\nexport const CommunityX: FC<CommunityProps> = (props) => {\n const { width = 20, height = 20, className } = props;\n\n return (\n <div className=\"orderly-fill-base-contrast-54 hover:orderly-fill-base-contrast\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n // stroke=\"currentColor\"\n fill=\"white\"\n fillOpacity={1}\n className={`${className}`}\n >\n <path d=\"M4.41988 4.72946L9.05295 10.9243L4.39062 15.961H5.43993L9.52178 11.5513L12.8198 15.961H16.3906L11.4969 9.41769L15.8365 4.72946H14.7872L11.028 8.7907L7.9907 4.72946H4.41988ZM5.96296 5.50238H7.6034L14.8473 15.188H13.2069L5.96296 5.50238Z\" />\n </svg>\n </div>\n );\n};\n\nexport const CommunityDune: FC<CommunityProps> = (props) => {\n const { width = 20, height = 20, className } = props;\n\n return (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M11.9957 19.1899C15.9699 19.1899 19.1916 15.9686 19.1916 11.995C19.1916 8.02132 15.9699 4.80005 11.9957 4.80005C8.02152 4.80005 4.7998 8.02132 4.7998 11.995C4.7998 15.9686 8.02152 19.1899 11.9957 19.1899Z\"\n fill=\"white\"\n fillOpacity={0.54}\n />\n <path\n d=\"M6.05127 16.0536C6.05127 16.0536 10.8064 14.496 19.1871 11.7634C19.1871 11.7634 19.6461 16.2385 15.0068 18.5726C15.0068 18.5726 12.7191 19.6691 10.2092 18.9658C10.2092 18.9658 7.70999 18.494 6.05127 16.0536Z\"\n fill=\"white\"\n fillOpacity={0.54}\n />\n </svg>\n );\n};\n","import { FC } from \"react\";\nimport { useLeftNavScript } from \"./leftNav.script\";\nimport { LeftNavUI, LeftNavUIProps } from \"./leftNav.ui\";\n\nexport const LeftNavWidget: FC<LeftNavUIProps> = (props) => {\n const state = useLeftNavScript();\n return <LeftNavUI {...props} {...state} />;\n};\n","import { useEffect, useRef, useState } from \"react\";\nimport { useLocalStorage } from \"@kodiak-finance/orderly-hooks\";\nimport { useAppContext } from \"@kodiak-finance/orderly-react-app\";\n\nexport type UseScanQRCodeScriptReturn = ReturnType<typeof useScanQRCodeScript>;\n\nexport const useScanQRCodeScript = () => {\n const [open, setOpen] = useState(false);\n const { widgetConfigs } = useAppContext();\n const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const [showScanTooltip, setShowScanTooltip] = useLocalStorage(\n \"orderly_qr_code_scan_tooltip_open\",\n true,\n );\n\n const showDialog = () => {\n setOpen(true);\n };\n\n const hideDialog = () => {\n setOpen(false);\n };\n\n const onScanSuccess = (url: string) => {\n if (!isValidURL(url)) {\n return;\n }\n const { onSuccess } = widgetConfigs?.scanQRCode || {};\n if (typeof onSuccess === \"function\") {\n onSuccess(url);\n } else {\n window.location.href = url;\n }\n };\n\n useEffect(() => {\n if (showScanTooltip) {\n timerRef.current = setTimeout(() => {\n setShowScanTooltip(false);\n }, 8000);\n }\n return () => {\n if (timerRef.current) {\n clearTimeout(timerRef.current);\n }\n };\n }, [showScanTooltip]);\n\n return {\n open,\n onOpenChange: setOpen,\n showDialog,\n hideDialog,\n onScanSuccess,\n showScanTooltip,\n };\n};\n\nfunction isValidURL(str: string) {\n try {\n const url = new URL(str);\n return [\"http:\", \"https:\"].includes(url.protocol);\n } catch {\n return false;\n }\n}\n","import { FC, SVGProps } from \"react\";\nimport { useTranslation, Trans } from \"@kodiak-finance/orderly-i18n\";\nimport {\n Box,\n cn,\n Flex,\n SimpleDialog,\n Text,\n Tooltip,\n} from \"@kodiak-finance/orderly-ui\";\nimport { MainLogo } from \"../main/mainLogo\";\nimport { UseScanQRCodeScriptReturn } from \"./scanQRCode.script\";\nimport { QRCodeScanner, QRCODE_WIDTH, QRCODE_HEIGHT } from \"./scanner\";\n\ntype ScanQRCodeProps = UseScanQRCodeScriptReturn;\n\nexport const ScanQRCode: FC<ScanQRCodeProps> = (props) => {\n const { t } = useTranslation();\n return (\n <>\n <Tooltip\n open={props.showScanTooltip}\n content={t(\"linkDevice.scanQRCode.tooltip\")}\n className=\"oui-bg-base-6 oui-text-2xs oui-font-semibold oui-text-warning-darken\"\n arrow={{ className: \"!oui-fill-base-6\" }}\n >\n <Flex\n className=\"oui-h-8 oui-w-8 oui-cursor-pointer oui-items-center oui-justify-center oui-rounded-md oui-bg-base-5 oui-px-[6px]\"\n onClick={props.showDialog}\n >\n <ScanIcon className=\"oui-text-base-contrast-80\" />\n </Flex>\n </Tooltip>\n <SimpleDialog\n title={<MainLogo />}\n open={props.open}\n onOpenChange={props.onOpenChange}\n size=\"sm\"\n >\n <ScanQRCodeContent {...props} />\n </SimpleDialog>\n </>\n );\n};\n\nconst ScanQRCodeContent: FC<ScanQRCodeProps> = (props) => {\n const { t } = useTranslation();\n\n return (\n <Flex justify=\"center\" direction=\"column\" gapY={5}>\n <Box width={QRCODE_WIDTH} height={QRCODE_HEIGHT} className=\"oui-relative\">\n <QRCodeScanner onSuccess={props.onScanSuccess} />\n <>\n <LineGradient />\n <RadiusGradient className=\"oui-absolute oui-left-[-1.5px] oui-top-[-1.5px]\" />\n <RadiusGradient className=\"oui-absolute oui-right-[-1.5px] oui-top-[-1.5px] oui-rotate-90\" />\n <RadiusGradient className=\"oui-absolute oui-bottom-[-1.5px] oui-left-[-1.5px] -oui-rotate-90\" />\n <RadiusGradient className=\"oui-absolute oui-bottom-[-1.5px] oui-right-[-1.5px] -oui-rotate-180\" />\n </>\n </Box>\n\n {/* </Box> */}\n <Text size=\"sm\" intensity={98} weight=\"semibold\">\n {t(\"linkDevice.scanQRCode\")}\n </Text>\n <span className=\"oui-px-3 oui-text-center\">\n <Text\n size=\"2xs\"\n intensity={54}\n weight=\"regular\"\n className=\"oui-break-words\"\n >\n {/* @ts-ignore */}\n <Trans\n i18nKey=\"linkDevice.scanQRCode.description\"\n components={[\n <LinkDeviceIcon\n key=\"0\"\n className=\"oui-mx-1 oui-inline-block oui-text-base-contrast-80\"\n />,\n ]}\n />\n </Text>\n </span>\n </Flex>\n );\n};\n\nconst ScanIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 18 18\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path d=\"M5.249 2.243a3 3 0 0 0-3 3v.75a.75.75 0 0 0 1.5 0v-.75a1.5 1.5 0 0 1 1.5-1.5h2.25a.75.75 0 0 0 0-1.5zm5.25 0a.75.75 0 0 0 0 1.5h2.25a1.5 1.5 0 0 1 1.5 1.5v.75a.75.75 0 0 0 1.5 0v-.75a3 3 0 0 0-3-3zm-7.5 9a.75.75 0 0 0-.75.75v.75a3 3 0 0 0 3 3h2.25a.75.75 0 0 0 0-1.5h-2.25a1.5 1.5 0 0 1-1.5-1.5v-.75a.75.75 0 0 0-.75-.75m12 0a.75.75 0 0 0-.75.75v.75a1.5 1.5 0 0 1-1.5 1.5h-2.25a.75.75 0 0 0 0 1.5h2.25a3 3 0 0 0 3-3v-.75a.75.75 0 0 0-.75-.75M5.25 8.999a.75.75 0 0 1 .75-.75h6a.75.75 0 0 1 0 1.5H6a.75.75 0 0 1-.75-.75\" />\n </svg>\n);\n\nexport interface LinkDeviceIconProps extends SVGProps<SVGSVGElement> {\n size?: number;\n}\n\nexport const LinkDeviceIcon: FC<LinkDeviceIconProps> = (props) => {\n const { size = 20, ...rest } = props;\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...rest}\n >\n <path d=\"M19.167 7.583a1.74 1.74 0 0 0-1.731-1.75h-4.038a1.74 1.74 0 0 0-1.731 1.75v8.167c0 .967.775 1.75 1.73 1.75h4.039a1.74 1.74 0 0 0 1.73-1.75zm-1.154 0v7.584H12.82V7.583A.58.58 0 0 1 13.398 7h4.038a.58.58 0 0 1 .577.583m-2.02 8.75a.58.58 0 0 1-.576.584.58.58 0 0 1-.577-.584.58.58 0 0 1 .577-.583.58.58 0 0 1 .577.583\" />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M1.666 5a2.5 2.5 0 0 1 2.5-2.5h10a2.5 2.5 0 0 1 2.5 2.5.08.08 0 0 1-.078.078h-1.51a.08.08 0 0 1-.08-.078.834.834 0 0 0-.833-.833h-10A.834.834 0 0 0 3.333 5v5.633c0 .11.09.2.2.2h7.1c.11 0 .2.09.2.2V12.3a.2.2 0 0 1-.2.2H2.7a.2.2 0 0 0-.2.2v.633c0 .511.308.834.834.834h7.3c.11 0 .2.09.2.2v1.266a.2.2 0 0 1-.2.2h-7.3c-1.465 0-2.5-1.086-2.5-2.5v-1.666c0-.392.27-.72.635-.81.107-.026.198-.113.198-.224z\"\n />\n </svg>\n );\n};\n\nconst LineGradient: FC<SVGProps<SVGSVGElement>> = () => {\n return (\n <div\n className={cn(\n \"oui-absolute oui-left-[30px] oui-top-0\",\n \"oui-h-[2px] oui-w-[calc(100%-60px)] oui-rounded-full\",\n \"oui-bg-[linear-gradient(270deg,rgb(var(--oui-gradient-brand-end))_0%,rgb(var(--oui-gradient-brand-start))_100%)]\",\n \"oui-shadow-[0_0_8px_4px_rgba(var(--oui-gradient-brand-start)/0.12)]\",\n \"oui-animate-scan-qr-code\",\n )}\n />\n );\n};\n\nconst RadiusGradient: FC<SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"64\"\n height=\"64\"\n viewBox=\"0 0 64 64\"\n fill=\"none\"\n {...props}\n >\n <path\n d=\"M62 2H18C9.16344 2 2 9.16344 2 18V62\"\n stroke=\"url(#paint0_linear_136_6227)\"\n strokeWidth=\"3\"\n strokeLinecap=\"round\"\n />\n <defs>\n <linearGradient\n id=\"paint0_linear_136_6227\"\n x1=\"2\"\n y1=\"32\"\n x2=\"62\"\n y2=\"32\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"rgb(var(--oui-gradient-brand-end))\" />\n <stop offset=\"1\" stopColor=\"rgb(var(--oui-gradient-brand-start))\" />\n </linearGradient>\n </defs>\n </svg>\n );\n};\n","import { FC, useEffect, useRef } from \"react\";\nimport jsQR from \"jsqr\";\n\ntype ScannerProps = {\n onSuccess?: (data: string) => void;\n};\n\nexport const QRCODE_WIDTH = 320;\nexport const QRCODE_HEIGHT = 320;\nconst RATIO = 2;\n\n/**\n * QR Code Scanner\n * reference https://github.com/cozmo/jsQR/blob/master/docs/index.html\n */\nexport const QRCodeScanner: FC<ScannerProps> = (props) => {\n const videoRef = useRef<HTMLVideoElement>(null);\n const canvasRef = useRef<HTMLCanvasElement>(null);\n\n const tick = () => {\n const video = videoRef.current;\n const canvas = canvasRef.current;\n if (!video || !canvas) return;\n\n const ctx = canvas.getContext(\"2d\")!;\n\n if (video.readyState === video.HAVE_ENOUGH_DATA) {\n const videoWidth = video.videoWidth;\n const videoHeight = video.videoHeight;\n\n const canvasAspectRatio = canvas.width / canvas.height;\n const videoAspectRatio = videoWidth / videoHeight;\n\n let sx, sy, sWidth, sHeight;\n\n if (videoAspectRatio > canvasAspectRatio) {\n // The video is wide. Crop the left and right sides\n sHeight = videoHeight;\n sWidth = videoHeight * canvasAspectRatio;\n sx = (videoWidth - sWidth) / 2;\n sy = 0;\n } else {\n // The video is high. Crop the top and bottom sides\n sWidth = videoWidth;\n sHeight = videoWidth / canvasAspectRatio;\n sx = 0;\n sy = (videoHeight - sHeight) / 2;\n }\n\n ctx.drawImage(\n video,\n sx,\n sy,\n sWidth,\n sHeight,\n 0,\n 0,\n canvas.width,\n canvas.height,\n );\n\n // ctx.drawImage(video, 0, 0, canvas.width, canvas.height);\n const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);\n const res = jsQR(imageData.data, imageData.width, imageData.height, {\n inversionAttempts: \"dontInvert\",\n });\n\n if (res?.data) {\n console.log(\"scan result\", res.data);\n props.onSuccess?.(res.data);\n }\n }\n requestAnimationFrame(tick);\n };\n\n useEffect(() => {\n const video = videoRef.current;\n if (!open || !video) return;\n\n // Use facingMode: environment to attemt to get the front camera on phones\n navigator?.mediaDevices\n ?.getUserMedia({\n video: {\n facingMode: \"environment\",\n width: { ideal: QRCODE_WIDTH * RATIO },\n height: { ideal: QRCODE_HEIGHT * RATIO },\n },\n })\n .then((stream) => {\n video.srcObject = stream;\n // required to tell iOS safari we don't want fullscreen\n video.setAttribute(\"playsinline\", \"true\");\n video.play();\n\n video.onloadeddata = () => {\n console.log(\"Video data loaded.\");\n // const videoTrack = stream.getVideoTracks()[0];\n // const settings = videoTrack.getSettings();\n // console.log(\"video size\", `${settings.width}x${settings.height}`);\n\n requestAnimationFrame(tick);\n };\n })\n .catch((err) => {\n console.error(\"Error accessing camera:\", err);\n });\n\n return () => {\n // Cleanup: stop video stream when component unmounts\n const stream = video.srcObject as MediaStream;\n if (stream) {\n const tracks = stream.getTracks();\n tracks.forEach((track: any) => track.stop());\n }\n video.srcObject = null;\n };\n }, [videoRef, canvasRef]);\n\n return (\n <>\n <video\n ref={videoRef}\n width={QRCODE_WIDTH}\n height={QRCODE_HEIGHT}\n className=\"oui-hidden oui-rounded-2xl oui-bg-base-10\"\n />\n <canvas\n ref={canvasRef}\n width={QRCODE_WIDTH * RATIO}\n height={QRCODE_HEIGHT * RATIO}\n style={{ width: QRCODE_WIDTH, height: QRCODE_HEIGHT }}\n className=\"oui-rounded-2xl oui-bg-base-10\"\n />\n </>\n );\n};\n","import React from \"react\";\nimport { useScanQRCodeScript } from \"./scanQRCode.script\";\nimport { ScanQRCode } from \"./scanQRCode.ui\";\n\nexport const ScanQRCodeWidget: React.FC = () => {\n const state = useScanQRCodeScript();\n return <ScanQRCode {...state} />;\n};\n","import React from \"react\";\nimport { useScreen } from \"@kodiak-finance/orderly-ui\";\nimport { useLinkDeviceScript } from \"./linkDevice.script\";\nimport { LinkDevice } from \"./linkDevice.ui\";\nimport { LinkDeviceMobile } from \"./linkDevice.ui.mobile\";\n\nexport const LinkDeviceWidget: React.FC = () => {\n const { isMobile } = useScreen();\n const state = useLinkDeviceScript();\n if (isMobile) {\n return <LinkDeviceMobile {...state} />;\n }\n return <LinkDevice {...state} />;\n};\n","import { useCallback, useEffect, useState } from \"react\";\nimport {\n useAccount,\n useChains,\n useEventEmitter,\n useTrack,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { TrackerEventName } from \"@kodiak-finance/orderly-types\";\n\nexport type UseLinkDeviceScriptReturn = ReturnType<typeof useLinkDeviceScript>;\n\nconst ExpireSeconds = 60;\n\nexport function useLinkDeviceScript() {\n const [open, setOpen] = useState(false);\n const [loading, setLoading] = useState(true);\n const [confirm, setConfirm] = useState(false);\n const [seconds, setSeconds] = useState(ExpireSeconds);\n const [secretKey, setSecretKey] = useState(\"\");\n const [url, setUrl] = useState(\"\");\n const ee = useEventEmitter();\n const { track } = useTrack();\n\n const { state, account } = useAccount();\n\n const [_, { findByChainId }] = useChains(undefined, {\n pick: \"network_infos\",\n filter: (chain: any) =>\n chain.network_infos?.bridge_enable || chain.network_infos?.bridgeless,\n });\n\n const createTrackParams = () => {\n const chain = findByChainId(account.chainId as number);\n return {\n wallet: state?.connectWallet?.name,\n network: chain?.network_infos.name,\n };\n };\n\n const getOrderlyKey = useCallback(async () => {\n try {\n const res = await account.createApiKey(30);\n setSecretKey(res.secretKey);\n setLoading(false);\n\n track(TrackerEventName.signLinkDeviceMessageSuccess, createTrackParams());\n } catch (e) {\n console.error(\"getOrderlyKey\", e);\n\n if (e instanceof Error) {\n if (\n e.message.indexOf(\n \"Signing off chain messages with Ledger is not yet supported\",\n ) !== -1\n ) {\n ee.emit(\"wallet:sign-message-with-ledger-error\", {\n message: e.message,\n userAddress: account.address,\n });\n }\n }\n hideDialog();\n }\n }, [account]);\n\n const showDialog = useCallback(() => {\n setOpen(true);\n getOrderlyKey();\n track(TrackerEventName.clickLinkDeviceButton, createTrackParams());\n }, [account]);\n\n const hideDialog = useCallback(() => {\n setOpen(false);\n }, []);\n\n const onConfirm = useCallback(() => {\n setConfirm(true);\n track(TrackerEventName.linkDeviceModalClickConfirm, {});\n }, []);\n\n const copyUrl = useCallback(() => {\n navigator.clipboard.writeText(url);\n }, [url]);\n\n useEffect(() => {\n // when hide dialog, reset data\n if (!open) {\n setConfirm(false);\n setLoading(true);\n setSeconds(ExpireSeconds);\n setSecretKey(\"\");\n setUrl(\"\");\n }\n }, [open]);\n\n useEffect(() => {\n if (seconds === 0) {\n hideDialog();\n return;\n }\n\n if (!confirm) {\n return;\n }\n\n const timer = setTimeout(() => {\n setSeconds(seconds - 1);\n }, 1000);\n\n return () => clearTimeout(timer);\n }, [seconds, confirm]);\n\n useEffect(() => {\n if (confirm && secretKey) {\n const timestamp = Math.floor(Date.now() / 1000) + ExpireSeconds;\n const params = {\n k: secretKey,\n t: timestamp,\n a: account.address,\n i: account.chainId,\n n: account.walletAdapter?.chainNamespace,\n };\n const url = createUrl(params);\n setUrl(url);\n }\n }, [confirm, secretKey]);\n\n return {\n open,\n onOpenChange: setOpen,\n showDialog,\n hideDialog,\n loading,\n seconds,\n confirm,\n onConfirm,\n url,\n copyUrl,\n };\n}\n\nfunction createUrl(params: Record<string, any>) {\n const str = JSON.stringify(params);\n const base64 = window.btoa(str);\n console.log(\"str\", str.length, str);\n console.log(\"base64\", base64.length, base64);\n return `${window.location.origin}?link=${base64}`;\n}\n","import { FC, SVGProps, forwardRef, useEffect, useRef } from \"react\";\nimport { qrcode as qr } from \"@akamfoad/qr\";\nimport { Trans, useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n cn,\n CopyIcon,\n Flex,\n SimpleDialog,\n SimpleDialogFooter,\n SimpleDialogFooterProps,\n Text,\n Tooltip,\n} from \"@kodiak-finance/orderly-ui\";\nimport { MainLogo } from \"../mainLogo\";\nimport { UseLinkDeviceScriptReturn } from \"./linkDevice.script\";\n\nexport type LinkDeviceProps = UseLinkDeviceScriptReturn;\n\nexport const LinkDevice: FC<LinkDeviceProps> = (props) => {\n const { t } = useTranslation();\n\n return (\n <>\n <Tooltip content={t(\"linkDevice.tooltip\")}>\n <LinkDeviceIcon\n className=\"oui-text-base-contrast-80 oui-cursor-pointer hover:oui-fill-base-contrast oui-transition-colors\"\n onClick={props.showDialog}\n />\n </Tooltip>\n\n <SimpleDialog\n title={<Text weight=\"semibold\">{t(\"common.confirm\")}</Text>}\n open={props.open}\n onOpenChange={props.onOpenChange}\n size=\"sm\"\n contentProps={{\n onInteractOutside: (e) => {\n const el = document.querySelector(\"#privy-dialog\");\n if (el) {\n e.preventDefault();\n }\n },\n }}\n >\n <LinkDeviceContent {...props} />\n </SimpleDialog>\n </>\n );\n};\n\nexport const LinkDeviceContent: FC<LinkDeviceProps> = (props) => {\n if (props.loading) {\n return <Loading />;\n }\n\n if (props.confirm) {\n return (\n <QRCode\n hideDialog={props.hideDialog}\n seconds={props.seconds}\n url={props.url}\n copyUrl={props.copyUrl}\n />\n );\n }\n\n return (\n <LinkDeviceConfirm\n hideDialog={props.hideDialog}\n onConfirm={props.onConfirm}\n />\n );\n};\n\ntype QRCodeProps = Pick<\n LinkDeviceProps,\n \"seconds\" | \"hideDialog\" | \"copyUrl\"\n> & {\n url?: string;\n};\n\nconst QRCode: FC<QRCodeProps> = (props) => {\n const { t } = useTranslation();\n const actions: SimpleDialogFooterProps[\"actions\"] = {\n primary: {\n label: t(\"common.ok\"),\n onClick: props.hideDialog,\n size: \"md\",\n },\n };\n\n return (\n <Flex direction=\"column\" gapY={3}>\n <Text size=\"base\" intensity={98}>\n {t(\"linkDevice.scanQRCode\")}\n </Text>\n <Text\n size=\"2xs\"\n intensity={54}\n weight=\"regular\"\n className=\"oui-text-center\"\n >\n {/* @ts-ignore */}\n <Trans i18nKey=\"linkDevice.createQRCode.success.description\" />\n </Text>\n\n <Text size=\"sm\" intensity={54}>\n {`${t(\"common.countdown\")}: `}\n <Text.gradient color=\"brand\" className=\"oui-tabular-nums\">\n {props.seconds}s\n </Text.gradient>\n </Text>\n\n <Flex\n className={cn(\n \"oui-w-[240px] oui-h-[240px] \",\n \"oui-border oui-border-base-contrast-20 oui-rounded-2xl\",\n )}\n justify=\"center\"\n itemAlign=\"center\"\n >\n <Flex\n className=\"oui-w-[220px] oui-h-[220px] oui-rounded-lg oui-bg-white\"\n justify=\"center\"\n itemAlign=\"center\"\n >\n <QRCodeCanvas width={196} height={196} content={props.url} />\n </Flex>\n </Flex>\n\n <Flex\n direction=\"row\"\n gap={1}\n className={cn(\n \"oui-cursor-pointer\",\n \"oui-group oui-text-base-contrast-54 hover:oui-text-base-contrast\",\n )}\n onClick={props.copyUrl}\n >\n <CopyIcon\n size={16}\n opacity={1}\n className=\"oui-text-base-contrast-54 group-hover:oui-text-base-contrast\"\n />\n <Text size=\"2xs\" weight=\"regular\">\n {t(\"linkDevice.createQRCode.success.copyUrl\")}\n </Text>\n </Flex>\n\n <SimpleDialogFooter\n actions={actions}\n className=\"oui-w-full oui-p-0 !oui-pt-8\"\n />\n </Flex>\n );\n};\n\ntype QRCodeCanvasProps = {\n width: number;\n height: number;\n content?: string;\n};\n\nconst QRCodeCanvas: FC<QRCodeCanvasProps> = (props) => {\n const canvasRef = useRef<HTMLCanvasElement>(null);\n\n useEffect(() => {\n if (!canvasRef.current || !props.content) return;\n\n const qrcode = qr(props.content);\n const width = props.width;\n const height = props.height;\n\n const ctx = canvasRef.current.getContext(\"2d\")!;\n\n const cells = qrcode.modules!;\n\n const tileW = width / cells.length;\n const tileH = height / cells.length;\n\n for (let r = 0; r < cells.length; ++r) {\n const row = cells[r];\n for (let c = 0; c < row.length; ++c) {\n ctx.fillStyle = row[c] ? \"#000\" : \"#fff\";\n const w = Math.ceil((c + 1) * tileW) - Math.floor(c * tileW);\n const h = Math.ceil((r + 1) * tileH) - Math.floor(r * tileH);\n ctx.fillRect(Math.round(c * tileW), Math.round(r * tileH), w, h);\n }\n }\n }, [canvasRef, props.content]);\n\n return <canvas width={props.width} height={props.height} ref={canvasRef} />;\n};\n\ntype LinkDeviceConfirmProps = Pick<LinkDeviceProps, \"hideDialog\" | \"onConfirm\">;\n\nconst LinkDeviceConfirm: FC<LinkDeviceConfirmProps> = (props) => {\n const { t } = useTranslation();\n\n const actions: SimpleDialogFooterProps[\"actions\"] = {\n secondary: {\n label: t(\"common.cancel\"),\n onClick: props.hideDialog,\n className: \"oui-flex-1\",\n size: \"md\",\n },\n primary: {\n label: t(\"common.confirm\"),\n onClick: props.onConfirm,\n className: \"oui-flex-1\",\n size: \"md\",\n },\n };\n\n return (\n <Flex direction=\"column\">\n <MainLogo />\n <Text size=\"base\" intensity={98} className=\"oui-mt-5\">\n {t(\"linkDevice.createQRCode.linkMobileDevice\")}\n </Text>\n <Text\n size=\"2xs\"\n intensity={54}\n weight=\"regular\"\n className=\"oui-text-center oui-mt-3\"\n >\n {/* @ts-ignore */}\n <Trans\n i18nKey=\"linkDevice.createQRCode.linkMobileDevice.description\"\n values={{\n hostname: window.location.hostname,\n }}\n />\n </Text>\n <SimpleDialogFooter\n actions={actions}\n className=\"oui-w-full oui-p-0 !oui-pt-8\"\n />\n </Flex>\n );\n};\n\nconst Loading = () => {\n const { t } = useTranslation();\n\n return (\n <Flex direction=\"column\" gap={5}>\n <Spinner />\n <Text size=\"sm\" intensity={98}>\n {t(\"linkDevice.createQRCode.loading.description\")}\n </Text>\n </Flex>\n );\n};\n\nconst Spinner = () => {\n return (\n <svg\n width=\"80\"\n height=\"80\"\n viewBox=\"0 0 80 80\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"oui-animate-spin\"\n >\n <path\n d=\"M11.4858 52.1631C10.4698 52.5965 9.28872 52.1259 8.91766 51.0855C7.68926 47.6412 7.04029 44.0121 7.00182 40.3463C6.95634 36.0129 7.76483 31.713 9.38113 27.6921C10.9974 23.6712 13.3899 20.0079 16.4219 16.9116C18.9868 14.2923 21.967 12.122 25.2375 10.4861C26.2253 9.99202 27.4035 10.4698 27.8369 11.4858L28.8571 13.8773C29.2904 14.8933 28.8139 16.0615 27.8336 16.5706C25.3569 17.8567 23.0959 19.5294 21.1375 21.5293C18.7119 24.0064 16.7979 26.9369 15.5049 30.1537C14.2119 33.3704 13.5651 36.8103 13.6015 40.277C13.6308 43.076 14.1051 45.8482 15.0026 48.4906C15.3579 49.5365 14.8933 50.7096 13.8773 51.143L11.4858 52.1631Z\"\n fill=\"url(#paint0_linear_177_6754)\"\n />\n <path\n d=\"M73 40C73 58.2254 58.2254 73 40 73C21.7746 73 7 58.2254 7 40C7 21.7746 21.7746 7 40 7C58.2254 7 73 21.7746 73 40ZM13.6 40C13.6 54.5803 25.4197 66.4 40 66.4C54.5803 66.4 66.4 54.5803 66.4 40C66.4 25.4197 54.5803 13.6 40 13.6C25.4197 13.6 13.6 25.4197 13.6 40Z\"\n fill=\"white\"\n fillOpacity=\"0.06\"\n />\n <defs>\n <linearGradient\n id=\"paint0_linear_177_6754\"\n x1=\"73\"\n y1=\"40\"\n x2=\"7\"\n y2=\"40\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"rgb(var(--oui-gradient-brand-end))\" />\n <stop offset=\"1\" stopColor=\"rgb(var(--oui-gradient-brand-start))\" />\n </linearGradient>\n </defs>\n </svg>\n );\n};\n\nexport interface IconProps extends SVGProps<SVGSVGElement> {\n size?: number;\n}\n\nexport const LinkDeviceIcon = forwardRef<SVGSVGElement, IconProps>(\n (props, ref) => {\n const { size = 20, viewBox, ...rest } = props;\n return (\n <svg\n ref={ref}\n width={size}\n height={size}\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...rest}\n >\n <path d=\"M19.167 7.583a1.74 1.74 0 0 0-1.731-1.75h-4.038a1.74 1.74 0 0 0-1.731 1.75v8.167c0 .967.775 1.75 1.73 1.75h4.039a1.74 1.74 0 0 0 1.73-1.75zm-1.154 0v7.584H12.82V7.583A.58.58 0 0 1 13.398 7h4.038a.58.58 0 0 1 .577.583m-2.02 8.75a.58.58 0 0 1-.576.584.58.58 0 0 1-.577-.584.58.58 0 0 1 .577-.583.58.58 0 0 1 .577.583\" />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M1.666 5a2.5 2.5 0 0 1 2.5-2.5h10a2.5 2.5 0 0 1 2.5 2.5.08.08 0 0 1-.078.078h-1.51a.08.08 0 0 1-.08-.078.834.834 0 0 0-.833-.833h-10A.834.834 0 0 0 3.333 5v5.633c0 .11.09.2.2.2h7.1c.11 0 .2.09.2.2V12.3a.2.2 0 0 1-.2.2H2.7a.2.2 0 0 0-.2.2v.633c0 .511.308.834.834.834h7.3c.11 0 .2.09.2.2v1.266a.2.2 0 0 1-.2.2h-7.3c-1.465 0-2.5-1.086-2.5-2.5v-1.666c0-.392.27-.72.635-.81.107-.026.198-.113.198-.224z\"\n />\n </svg>\n );\n },\n);\n","import { FC, SVGProps, useState } from \"react\";\nimport { useAccount } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { SimpleDialog } from \"@kodiak-finance/orderly-ui\";\nimport { Flex, Text } from \"@kodiak-finance/orderly-ui\";\nimport { LinkDeviceProps } from \"./linkDevice.ui\";\n\nexport const LinkDeviceMobile: FC<LinkDeviceProps> = (props) => {\n const [open, setOpen] = useState(false);\n const { account } = useAccount();\n const { t } = useTranslation();\n const onDisconnect = async () => {\n localStorage.removeItem(\"orderly_link_device\");\n await account.disconnect();\n };\n\n const showDialog = () => {\n setOpen(true);\n };\n\n const hideDialog = () => {\n setOpen(false);\n };\n\n return (\n <>\n <SimpleDialog\n open={open}\n onOpenChange={setOpen}\n title={t(\"common.tips\")}\n size=\"xs\"\n actions={{\n secondary: {\n label: t(\"common.cancel\"),\n onClick: hideDialog,\n size: \"md\",\n fullWidth: true,\n },\n primary: {\n label: t(\"connector.disconnect\"),\n onClick: async () => {\n await onDisconnect();\n hideDialog();\n },\n size: \"md\",\n variant: \"outlined\",\n color: \"danger\",\n },\n }}\n >\n <Text intensity={54} size=\"sm\">\n {t(\"linkDevice.scanQRCode.connected.description\")}\n </Text>\n </SimpleDialog>\n <Flex\n className=\"oui-text-base-contrast oui-px-[6px]\"\n intensity={500}\n height={28}\n r=\"md\"\n onClick={showDialog}\n >\n <DesktopIcon />\n <Dot />\n <LinkIcon />\n <Dot />\n <MobileIcon />\n </Flex>\n </>\n );\n};\n\nconst Dot = () => {\n return (\n <Flex className=\"oui-gap-x-px oui-px-px\">\n <DotIcon />\n <DotIcon />\n <DotIcon />\n </Flex>\n );\n};\n\nconst DesktopIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 18 18\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path d=\"M4.5 2.93a2.25 2.25 0 0 0-2.25 2.25v5.25a.75.75 0 0 0-.75.75v1.5c0 1.272.93 2.25 2.25 2.25h10.5c1.318 0 2.25-.978 2.25-2.25v-1.5a.75.75 0 0 0-.75-.75V5.18a2.25 2.25 0 0 0-2.25-2.25zm0 1.5h9a.75.75 0 0 1 .75.75v5.25H3.75V5.18a.75.75 0 0 1 .75-.75M3 11.93h12v.75c0 .46-.277.75-.75.75H3.75c-.474 0-.75-.29-.75-.75z\" />\n </svg>\n);\n\nconst MobileIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 18 18\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path d=\"M13.498 3.715a2.25 2.25 0 0 0-2.25-2.25h-4.5a2.25 2.25 0 0 0-2.25 2.25v10.5a2.25 2.25 0 0 0 2.25 2.25h4.5a2.25 2.25 0 0 0 2.25-2.25zm-1.5 0v9.75h-6v-9.75a.75.75 0 0 1 .75-.75h4.5a.75.75 0 0 1 .75.75m-2.25 11.25a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0\" />\n </svg>\n);\n\nconst LinkIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M1.007 6a5 5 0 1 1 10 0 5 5 0 0 1-10 0m7.486-2.344A.6.6 0 0 1 8.91 3.5c.15 0 .305.048.418.156a.55.55 0 0 1 0 .798L5.254 8.337a.62.62 0 0 1-.837 0L2.67 6.673a.55.55 0 0 1 0-.798.62.62 0 0 1 .837 0l1.329 1.266z\"\n fill=\"url(#a)\"\n />\n <defs>\n <linearGradient\n id=\"a\"\n x1=\"11.007\"\n y1=\"5.999\"\n x2=\"1.007\"\n y2=\"5.999\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"rgb(var(--oui-gradient-brand-end))\" />\n <stop offset=\"1\" stopColor=\"rgb(var(--oui-gradient-brand-start))\" />\n </linearGradient>\n </defs>\n </svg>\n);\n\nconst DotIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"2\"\n height=\"2\"\n viewBox=\"0 0 2 2\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M.667.334a.667.667 0 1 1 0 1.333.667.667 0 0 1 0-1.333\"\n fill=\"url(#a)\"\n />\n <defs>\n <linearGradient\n id=\"a\"\n x1=\"1.333\"\n y1=\"1.001\"\n x2=\"0\"\n y2=\"1.001\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"rgb(var(--oui-gradient-brand-end))\" />\n <stop offset=\"1\" stopColor=\"rgb(var(--oui-gradient-brand-start))\" />\n </linearGradient>\n </defs>\n </svg>\n);\n","import { createContext, useContext } from \"react\";\nimport type { RouterAdapter } from \"@kodiak-finance/orderly-types\";\nimport { useAnnouncement } from \"@kodiak-finance/orderly-ui-notification\";\n\nexport type ScaffoldState = {\n routerAdapter?: RouterAdapter;\n expanded?: boolean;\n setExpand: (expand: boolean) => void;\n checkChainSupport: (chainId: number | string) => boolean;\n topNavbarHeight: number;\n footerHeight: number;\n announcementHeight: number;\n announcementState: ReturnType<typeof useAnnouncement>;\n};\n\nexport const ScaffoldContext = createContext<ScaffoldState>(\n {} as ScaffoldState,\n);\n\nexport const useScaffoldContext = () => {\n return useContext(ScaffoldContext);\n};\n","import { FC, useCallback, useEffect, useMemo, useRef } from \"react\";\nimport { API } from \"@kodiak-finance/orderly-types\";\nimport { cn } from \"@kodiak-finance/orderly-ui\";\nimport { NotificationUI as NotificationUIComponent } from \"@kodiak-finance/orderly-ui-notification\";\nimport { windowGuard } from \"@kodiak-finance/orderly-utils\";\nimport { useScaffoldContext } from \"../scaffold\";\n\nexport const NotificationUI: FC<{\n dataSource: API.AnnouncementRow[];\n onClose: () => void;\n showAnnouncement: boolean;\n}> = (props) => {\n const { dataSource, showAnnouncement } = props;\n const { routerAdapter } = useScaffoldContext();\n const onItemClick = (url: string) => {\n if (!url) return;\n routerAdapter?.onRouteChange({\n href: url,\n name: url,\n target: \"_blank\",\n });\n };\n\n const notificationRef = useRef<HTMLDivElement>(null);\n const len = useMemo(() => dataSource?.length ?? 0, [dataSource]);\n\n const onClose = useCallback(() => {\n if (len === 0) {\n return;\n }\n windowGuard(() => {\n if (notificationRef.current) {\n const animationendHandler = () => {\n props.onClose();\n notificationRef.current!.removeEventListener(\n \"transitionend\",\n animationendHandler,\n );\n };\n\n notificationRef.current.addEventListener(\n \"transitionend\",\n animationendHandler,\n );\n requestAnimationFrame(() => {\n notificationRef.current!.style.transform = \"translateY(120%)\";\n });\n }\n });\n }, [props.onClose, len]);\n\n useEffect(() => {\n if (len === 0) {\n return;\n }\n if (showAnnouncement) {\n // open the notification`\n windowGuard(() => {\n if (notificationRef.current) {\n requestAnimationFrame(() => {\n notificationRef.current!.style.transform = \"translateY(0)\";\n });\n }\n });\n }\n }, [showAnnouncement, len]);\n\n if (len === 0) {\n return null;\n }\n\n return (\n <div\n ref={notificationRef}\n data-state={showAnnouncement ? \"open\" : \"closed\"}\n className={cn(\n \"oui-fixed oui-bottom-[calc(env(safe-area-inset-bottom)+8px)] oui-left-2 oui-z-50 oui-w-[calc(100%_-_16px)] oui-translate-y-[120%] oui-rounded-lg oui-border oui-border-line-6 oui-bg-base-8 md:oui-bottom-10 md:oui-left-auto md:oui-right-3 md:oui-w-[420px]\",\n \"oui-transition-all oui-duration-300 oui-ease-in-out\",\n showAnnouncement ? \"oui-visible\" : \"oui-invisible\",\n )}\n >\n <NotificationUIComponent\n dataSource={dataSource}\n onClose={onClose}\n onItemClick={onItemClick}\n />\n </div>\n );\n};\n","import { FC, useState } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { type API } from \"@kodiak-finance/orderly-types\";\nimport {\n ExtensionPositionEnum,\n ExtensionSlot,\n ScrollArea,\n Text,\n} from \"@kodiak-finance/orderly-ui\";\nimport { cn } from \"@kodiak-finance/orderly-ui\";\nimport { AnnouncementItem } from \"./announcementItem\";\n\nexport const AnnouncementContent: FC<{\n dataSource: API.AnnouncementRow[];\n current: string | number | null;\n onExpandToggle: (id: string | number | null) => void;\n onItemClick: (url: string) => void;\n showDivider?: boolean;\n}> = (props) => {\n const { dataSource, current, onExpandToggle, onItemClick } = props;\n const { t } = useTranslation();\n\n if (!Array.isArray(dataSource) || dataSource.length === 0) {\n return (\n <div className=\"oui-flex oui-h-[160px] oui-items-center oui-justify-center\">\n <ExtensionSlot\n position={ExtensionPositionEnum.EmptyDataIdentifier}\n title={t(\"notification.empty\")}\n />\n </div>\n );\n }\n\n return (\n <div\n className={cn(\n \"oui-flex oui-flex-col oui-space-y-1\",\n props.showDivider &&\n \"[&>*:not(:first-child)]:oui-border-t [&>*:not(:first-child)]:oui-border-line-12 [&>*:not(:first-child)]:oui-pt-1\",\n )}\n >\n {dataSource.map((item) => (\n <AnnouncementItem\n url={item.url}\n onItemClick={onItemClick}\n key={item.announcement_id}\n message={item.message}\n updatedTime={item.updated_time ?? 0}\n expanded={current === item.announcement_id}\n type={item.type}\n showDivider={props.showDivider}\n onExpandToggle={() => {\n if (current === item.announcement_id) {\n onExpandToggle(null);\n } else {\n onExpandToggle(item.announcement_id);\n }\n }}\n />\n ))}\n </div>\n );\n};\n\nexport const AnnouncementCenterUI: FC<{\n dataSource: API.AnnouncementRow[];\n onItemClick: (url: string) => void;\n}> = (props) => {\n const { t } = useTranslation();\n const [expanded, setExpanded] = useState<string | number | null>(null);\n\n return (\n <>\n <div className=\"oui-px-5 oui-pt-4\">\n <Text intensity={80} weight=\"bold\">\n {t(\"notification.title\")}\n </Text>\n </div>\n\n <ScrollArea className=\"oui-flex oui-h-[300px] oui-flex-col oui-space-y-1 oui-p-3\">\n <AnnouncementContent\n dataSource={props.dataSource}\n current={expanded}\n onExpandToggle={setExpanded}\n onItemClick={props.onItemClick}\n />\n </ScrollArea>\n </>\n );\n};\n","import { FC, useMemo } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { AnnouncementType } from \"@kodiak-finance/orderly-types\";\nimport { Flex, Text, ChevronDownIcon, cn } from \"@kodiak-finance/orderly-ui\";\nimport {\n AnnouncementIcon,\n ArrowRightShortIcon,\n CampaignIcon,\n FundIcon,\n SecurityIcon,\n} from \"./icons\";\n\nexport const AnnouncementItem: FC<{\n // title: string;\n expanded: boolean;\n url?: string | null;\n onItemClick: (url: string) => void;\n onExpandToggle?: () => void;\n type: AnnouncementType | undefined | null;\n message: string;\n updatedTime: number;\n className?: string;\n showDivider?: boolean;\n}> = (props) => {\n const { t } = useTranslation();\n const Icon = useMemo(() => {\n switch (props.type) {\n case AnnouncementType.Campaign:\n return CampaignIcon;\n\n case AnnouncementType.Listing:\n return FundIcon;\n case AnnouncementType.Maintenance:\n return SecurityIcon;\n case AnnouncementType.Delisting:\n default:\n return AnnouncementIcon;\n }\n }, [props.type]);\n\n const title = useMemo(() => {\n switch (props.type) {\n case AnnouncementType.Campaign:\n return t(\"notification.campaign\");\n case AnnouncementType.Delisting:\n return t(\"notification.delisting\");\n case AnnouncementType.Listing:\n return t(\"notification.listing\");\n case AnnouncementType.Maintenance:\n return t(\"notification.maintenance\");\n default:\n return t(\"notification.general\");\n }\n }, [props.type, t]);\n\n const action = useMemo(() => {\n if (\n props.type === AnnouncementType.Campaign &&\n typeof props.url === \"string\" &&\n props.url !== \"\" &&\n typeof props.onItemClick === \"function\"\n ) {\n return (\n <Flex\n gap={1}\n itemAlign=\"center\"\n className=\"oui-cursor-pointer\"\n onClick={(event) => {\n event.stopPropagation();\n props.onItemClick(props.url!);\n }}\n >\n <Text\n size=\"xs\"\n color=\"buy\"\n className=\"oui-bg-clip-text oui-text-transparent oui-gradient-brand\"\n >\n {t(\"notification.joinNow\")}\n </Text>\n <ArrowRightShortIcon size={18} />\n </Flex>\n );\n }\n return null;\n }, [props.type, props.url, t]);\n\n const updateTime = useMemo(() => {\n if (props.type === AnnouncementType.Maintenance) {\n return (\n <Text size=\"2xs\" intensity={36}>\n {t(\"notification.recentlyUpdated\")}\n </Text>\n );\n }\n return (\n <Text.formatted\n size=\"2xs\"\n intensity={36}\n rule=\"date\"\n formatString=\"yyyy-MM-dd HH:mm:ss\"\n >\n {props.updatedTime}\n </Text.formatted>\n );\n }, [props.updatedTime, props.type, t]);\n\n return (\n <Flex\n gap={2}\n itemAlign=\"start\"\n className={cn(\n \"oui-px-2 oui-py-[6px] oui-text-base-contrast-80\",\n !props.showDivider && \"oui-rounded-md hover:oui-bg-base-6\",\n !props.showDivider && props.expanded && \"oui-bg-base-6\",\n props.className,\n )}\n onClick={() => {\n props.onExpandToggle?.();\n }}\n >\n <Icon color=\"white\" className=\"oui-mt-3 oui-shrink-0\" />\n\n <Flex direction=\"column\" itemAlign=\"start\" grow>\n <Text size=\"xs\" intensity={80} weight=\"bold\">\n {title}\n </Text>\n {updateTime}\n {/* Expandable content with animation */}\n <div\n className=\"oui-grid oui-transition-all oui-duration-300 oui-ease-in-out\"\n style={{\n gridTemplateRows: props.expanded ? \"1fr\" : \"0fr\",\n }}\n >\n <div className=\"oui-flex oui-flex-col oui-gap-2 oui-overflow-hidden\">\n <Text size=\"2xs\" intensity={80} as=\"div\" className=\"oui-pt-2\">\n {props.message}\n </Text>\n {action}\n </div>\n </div>\n </Flex>\n <div className=\"oui-pt-3\">\n {/* Chevron icon with rotation animation */}\n <ChevronDownIcon\n color=\"white\"\n size={18}\n className={`oui-transition-transform oui-duration-300 oui-ease-in-out ${\n props.expanded ? \"oui-rotate-180\" : \"oui-rotate-0\"\n }`}\n />\n </div>\n </Flex>\n );\n};\n","import { FC } from \"react\";\nimport type { BaseIconProps } from \"@kodiak-finance/orderly-ui\";\nimport { Icon } from \"@kodiak-finance/orderly-ui\";\n\nexport const BattleIcon: FC<BaseIconProps> = (props) => {\n return (\n <Icon size={18} viewBox=\"0 0 18 18\" {...props}>\n <defs>\n <linearGradient\n id=\"paint0_linear_555_7374\"\n x1=\"17.0157\"\n y1=\"9.26513\"\n x2=\"0.969849\"\n y2=\"9.26513\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"rgb(var(--oui-gradient-brand-end))\" />\n <stop offset=\"1\" stopColor=\"rgb(var(--oui-gradient-brand-start))\" />\n </linearGradient>\n </defs>\n <path\n fill=\"url(#paint0_linear_555_7374)\"\n fillOpacity={1}\n d=\"m1.5 1.5.75 3 4.843 4.56-1.808 1.919-.63-.633-1.06 1.06.665.665-1.88 1.996-.35-.346-1.06 1.06 2.25 2.25 1.06-1.06-.348-.349 1.998-1.878.665.662 1.06-1.06-.63-.63L9 10.852l1.969 1.854-.639.639 1.06 1.06.672-.67 1.998 1.877-.358.358 1.064 1.06 2.25-2.25-1.06-1.06-.34.34-1.881-1.998.656-.657-1.06-1.06-.625.624-1.799-1.91.003-.003L9 7.03 4.5 2.25zm15 0-3 .75-3.636 3.861 2.022 2.025L15.75 4.5z\"\n />\n </Icon>\n );\n};\n\nexport const CampaignIcon: FC<BaseIconProps> = (props) => {\n return (\n <Icon size={18} viewBox=\"0 0 18 18\" {...props}>\n <path\n fill=\"currentcolor\"\n fillOpacity={1}\n d=\"m1.5 1.5.75 3 4.843 4.56-1.808 1.919-.63-.633-1.06 1.06.665.665-1.88 1.996-.35-.346-1.06 1.06 2.25 2.25 1.06-1.06-.348-.349 1.998-1.878.665.662 1.06-1.06-.63-.63L9 10.852l1.969 1.854-.639.639 1.06 1.06.672-.67 1.998 1.877-.358.358 1.064 1.06 2.25-2.25-1.06-1.06-.34.34-1.881-1.998.656-.657-1.06-1.06-.625.624-1.799-1.91.003-.003L9 7.03 4.5 2.25zm15 0-3 .75-3.636 3.861 2.022 2.025L15.75 4.5z\"\n />\n </Icon>\n );\n};\n\nexport const ArrowRightShortIcon: FC<BaseIconProps> = (props) => {\n return (\n <Icon size={18} viewBox=\"0 0 18 18\" {...props}>\n <defs>\n <linearGradient\n id=\"paint0_linear_555_7374\"\n x1=\"17.0157\"\n y1=\"9.26513\"\n x2=\"0.969849\"\n y2=\"9.26513\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"rgb(var(--oui-gradient-brand-end))\" />\n <stop offset=\"1\" stopColor=\"rgb(var(--oui-gradient-brand-start))\" />\n </linearGradient>\n </defs>\n <path\n fill=\"url(#paint0_linear_555_7374)\"\n fillOpacity={1}\n d=\"M4.509 8.995a.75.75 0 0 1 .75-.75h5.666L8.7 5.998l1.054-1.054 3.535 3.512c.147.146.22.343.22.54a.76.76 0 0 1-.22.537l-3.535 3.512L8.7 11.992l2.225-2.248H5.258a.75.75 0 0 1-.749-.75\"\n />\n </Icon>\n );\n};\n\nexport const FundIcon: FC<BaseIconProps> = (props) => {\n return (\n <Icon size={18} viewBox=\"0 0 18 18\" {...props}>\n <path\n fill=\"currentcolor\"\n fillOpacity={0.8}\n d=\"M15.694 7.087c-.788-.393-1.857-.618-2.925-.618-1.125 0-2.138.225-2.925.618-.056 0-.113.057-.113.057V3.769c0-.9-.731-1.575-1.462-1.913-.788-.394-1.857-.619-2.925-.619-1.069 0-2.25.225-3.038.62C1.575 2.193.844 2.868.844 3.768v10.519c0 .9.731 1.575 1.462 1.912.788.394 1.856.619 2.925.619s2.138-.225 2.925-.619c.281-.169.563-.337.788-.562.225.225.506.393.787.562.788.394 1.857.619 2.925.619 1.125 0 2.138-.225 2.925-.619.732-.394 1.463-1.012 1.463-1.912V9c.112-.9-.619-1.519-1.35-1.913m-7.369 7.144c0 .113-.112.45-.731.732-.563.28-1.407.506-2.363.506s-1.8-.169-2.362-.506c-.619-.282-.731-.62-.731-.732V13.5c.056 0 .112 0 .168.056.788.394 1.856.619 2.925.619s2.138-.225 2.925-.619c.056 0 .113-.056.113-.056v.731zm0-2.587c0 .112-.112.45-.731.731-.563.281-1.407.506-2.363.506s-1.8-.168-2.362-.506c-.619-.281-.731-.619-.731-.731v-.788c.056 0 .112.056.112.056.788.394 1.856.62 2.925.62s2.138-.226 2.925-.62c.056 0 .113-.056.113-.056v.788zm0-2.644c0 .112-.112.45-.731.731-.563.281-1.407.507-2.363.507s-1.8-.17-2.362-.507C2.25 9.45 2.138 9.112 2.138 9v-.788c.056 0 .112.057.112.057.788.393 1.856.618 2.925.618S7.313 8.662 8.1 8.27c.056 0 .113-.057.113-.057V9zm0-2.644c0 .113-.112.45-.731.731-.563.282-1.407.507-2.363.507s-1.8-.169-2.362-.507c-.619-.28-.731-.618-.731-.73v-.732c.056 0 .112 0 .168.056.788.394 1.856.619 2.925.619s2.138-.225 2.925-.619c.056 0 .113-.056.113-.056v.731zM7.594 4.5c-.563.281-1.407.506-2.363.506S3.488 4.781 2.925 4.5c-.619-.338-.731-.619-.731-.731 0-.113.112-.45.731-.732.563-.28 1.406-.506 2.363-.506.956 0 1.8.169 2.362.506.619.282.731.62.731.732-.056.112-.168.393-.787.731m8.212 9.731c0 .113-.112.45-.731.732-.562.28-1.406.506-2.362.506s-1.8-.169-2.363-.506c-.619-.282-.731-.62-.731-.732V13.5c.056 0 .112.056.112.056.788.394 1.857.619 2.925.619 1.125 0 2.138-.225 2.925-.619.056 0 .113-.056.113-.056v.731zm0-2.587c0 .112-.112.45-.731.731-.562.281-1.406.506-2.362.506s-1.8-.168-2.363-.506c-.619-.281-.731-.619-.731-.731v-.788c.056 0 .112.056.112.056.788.394 1.857.62 2.925.62 1.125 0 2.138-.226 2.925-.62.056 0 .113-.056.113-.056v.788zm-.675-1.913c-.562.281-1.406.507-2.362.507s-1.8-.17-2.363-.507c-.619-.281-.731-.619-.731-.731 0-.113.112-.45.731-.731.563-.282 1.406-.507 2.363-.507.956 0 1.8.17 2.362.507.619.281.732.618.732.731-.057.112-.17.45-.732.731\"\n />\n </Icon>\n );\n};\n\nexport const AnnouncementIcon: FC<BaseIconProps> = (props) => {\n return (\n <Icon size={18} viewBox=\"0 0 18 18\" {...props}>\n <path\n fill=\"currentcolor\"\n fillOpacity={0.8}\n d=\"M11.53 2.255a.745.745 0 0 0-.82.165c-.525.524-1.188.959-1.947 1.284-.77.33-2.353.757-3.508.75-2.248-.015-3.756 1.259-3.756 3.726 0 2.163 1.228 3.42 2.994 3.703l.006 1.565a2.25 2.25 0 0 0 2.25 2.247c1.142 0 2.083-.883 2.228-1.988.007-.053.022-.26.022-1.01.674.315 1.232.812 1.711 1.29.473.472 1.29.13 1.29-.538 0-.678-.004-1.906-.004-3.13.884-.327 1.503-1.165 1.503-2.115s-.585-1.81-1.496-2.129c0-1.225-.004-2.439-.004-3.117a.76.76 0 0 0-.469-.703m1.805 1.335a.73.73 0 0 0-.445.351.75.75 0 0 0 .258 1.03 3.74 3.74 0 0 1 1.851 3.233 3.74 3.74 0 0 1-1.851 3.231.76.76 0 0 0-.282 1.03.754.754 0 0 0 1.032.258 5.24 5.24 0 0 0 2.601-4.52 5.24 5.24 0 0 0-2.601-4.519.74.74 0 0 0-.563-.094m-2.832.884c0 .694-.004 1.417-.004 2.231v2.997c0 .815.003 1.508.003 2.202-1.52-.896-3.085-1.294-4.501-1.421 0-1.144-.004-3.406-.004-4.584.147-.007.318-.026.565-.06a11.2 11.2 0 0 0 2.812-.773c.43-.184.75-.35 1.129-.592m-6.005 1.55-.001 4.34c-.976-.27-1.498-.959-1.498-2.184 0-1.21.47-1.928 1.499-2.155M6 11.998c.238.008 1.098.161 1.493.261l.007 1.19a.75.75 0 0 1-1.5 0z\"\n />\n </Icon>\n );\n};\n\nexport const SecurityIcon: FC<BaseIconProps> = (props) => {\n return (\n <Icon size={18} viewBox=\"0 0 18 18\" {...props}>\n <path\n d=\"M6.563 7.678V6.603c0-1.153 1.09-2.088 2.437-2.088s2.438.935 2.438 2.088v1.075c.448 0 .812.311.812.696v3.479c0 .384-.364.696-.812.696H6.563c-.449 0-.813-.312-.813-.696v-3.48c0-.384.364-.695.813-.695m1.187-.006 1.431.006h1.07V6.564c0-.64-.504-1.104-1.25-1.104-.748 0-1.25.465-1.25 1.104zm1.956 2.14c0-.335-.317-.605-.706-.605-.39 0-.706.27-.706.604v.77c0 .335.316.605.706.605s.706-.27.706-.604z\"\n fill=\"currentcolor\"\n fillOpacity=\".8\"\n />\n <path\n d=\"M2 3.607c.003 5.606.146 11.651 6.879 13.378.078.02.164.02.242 0C15.854 15.258 15.997 9.213 16 3.607c0-.217-.14-.41-.345-.477L9.31 1.05a1 1 0 0 0-.62 0L2.345 3.13A.5.5 0 0 0 2 3.607m2.326 7.63c-.707-1.954-.81-4.33-.824-6.902L9 2.532l5.498 1.803c-.014 2.573-.117 4.948-.824 6.901-.697 1.93-1.987 3.463-4.674 4.222-2.687-.759-3.977-2.293-4.674-4.222\"\n fill=\"currentcolor\"\n fillOpacity=\".8\"\n />\n </Icon>\n );\n};\n","import { FC, useMemo, useState } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { AnnouncementType, type API } from \"@kodiak-finance/orderly-types\";\nimport {\n ChevronDownIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n Divider,\n Flex,\n Text,\n} from \"@kodiak-finance/orderly-ui\";\nimport {\n AnnouncementIcon,\n BattleIcon,\n FundIcon,\n SecurityIcon,\n} from \"../announcementCenter/icons\";\nimport {\n CampaignContentCard,\n DelistingContentCard,\n ListingContentCard,\n MaintenanceContentCard,\n} from \"./contentCard\";\n\nexport interface NotificationProps {\n // Define your notification props here\n className?: string;\n // children?: React.ReactNode;\n dataSource: API.AnnouncementRow[];\n onClose?: () => void;\n}\n\nexport interface NotificationItemProps {\n id: string;\n type?: \"success\" | \"error\" | \"warning\" | \"info\";\n title?: string;\n message: string;\n onClose?: () => void;\n}\n\nexport interface NotificationListProps {\n notifications: NotificationItemProps[];\n onRemove?: (id: string) => void;\n}\n\nconst NotificationHeader: FC<{\n // type: AnnouncementType;\n dataSource: API.AnnouncementRow[];\n current: number;\n expanded?: boolean;\n onExpandToggle?: () => void;\n // onClose?: () => void;\n}> = (props) => {\n const { t } = useTranslation();\n const { expanded } = props;\n const { type } = props.dataSource[props.current];\n\n const title = useMemo(() => {\n switch (type) {\n case AnnouncementType.Campaign:\n return (\n <Text\n size=\"sm\"\n className=\"oui-text-transparent oui-bg-clip-text oui-gradient-brand\"\n >\n {t(\"notification.campaign\")}\n </Text>\n );\n case AnnouncementType.Delisting:\n return <Text size=\"sm\">{t(\"notification.delistingTitle\")}</Text>;\n case AnnouncementType.Listing:\n return (\n <Text size=\"sm\" color=\"buy\">\n {t(\"notification.listing\")}\n </Text>\n );\n case AnnouncementType.Maintenance:\n return (\n <Text size=\"sm\" color=\"warning\">\n {t(\"notification.maintenanceTitle\")}\n </Text>\n );\n default:\n return (\n <Text size=\"sm\" color=\"inherit\">\n {t(\"notification.generalTitle\")}\n </Text>\n );\n }\n }, [type, t]);\n const icon = useMemo(() => {\n switch (type) {\n case AnnouncementType.Campaign:\n return <BattleIcon color=\"white\" />;\n\n case AnnouncementType.Listing:\n return <FundIcon color=\"success\" />;\n case AnnouncementType.Maintenance:\n return <SecurityIcon color=\"warning\" />;\n case AnnouncementType.Delisting:\n default:\n return <AnnouncementIcon color=\"white\" />;\n }\n }, [type]);\n return (\n <Flex itemAlign=\"center\" justify=\"between\" className=\"oui-px-4 oui-py-3\">\n <div className=\"orderly-notification-header oui-flex oui-items-center oui-gap-2\">\n {icon}\n {title}\n </div>\n <button\n onClick={props.onExpandToggle}\n className=\"oui-transition-transform oui-duration-300\"\n style={{\n transform: !expanded ? \"rotate(180deg)\" : \"rotate(0deg)\",\n }}\n >\n <ChevronDownIcon size={18} color=\"white\" />\n </button>\n </Flex>\n );\n};\n\nconst NotificationFooter: FC<{\n total: number;\n current: number;\n onCloseAll: () => void;\n onPrev: () => void;\n onNext: () => void;\n}> = (props) => {\n const { total, current, onCloseAll, onPrev, onNext } = props;\n const { t } = useTranslation();\n return (\n <Flex\n className=\"orderly-notification-footer oui-px-4 oui-py-2\"\n itemAlign=\"center\"\n justify=\"between\"\n >\n <Flex gap={2}>\n <button\n disabled={current - 1 < 0}\n onClick={onPrev}\n className=\"oui-flex oui-size-[18px] oui-items-center oui-justify-center oui-rounded-full oui-bg-base-6 hover:oui-bg-base-5 disabled:oui-opacity-50\"\n >\n <ChevronLeftIcon size={14} color=\"white\" />\n </button>\n <Text intensity={54} size=\"sm\">\n {current + 1}/{total}\n </Text>\n <button\n disabled={current + 1 >= total}\n onClick={onNext}\n className=\"oui-flex oui-size-[18px] oui-items-center oui-justify-center oui-rounded-full oui-bg-base-6 hover:oui-bg-base-5 disabled:oui-opacity-50\"\n >\n <ChevronRightIcon size={14} color=\"white\" />\n </button>\n </Flex>\n <button onClick={onCloseAll}>\n <Text size=\"xs\" color=\"primary\">\n {t(\"notification.closeAll\", { total })}\n </Text>\n </button>\n </Flex>\n );\n};\n\nconst NotificationContent: FC<{\n dataSource: (API.AnnouncementRow & {\n startTime?: number;\n endTime?: number;\n })[];\n current: number;\n onItemClick: (url: string) => void;\n}> = (props) => {\n const elements = useMemo(() => {\n return props.dataSource.map((message) => {\n const { type } = message;\n switch (type) {\n case AnnouncementType.Campaign:\n return (\n <CampaignContentCard\n message={message.message}\n coverImage={message.coverImage ?? \"\"}\n updateTime={message.updated_time ?? 0}\n url={message.url ?? \"\"}\n onItemClick={props.onItemClick}\n />\n );\n case AnnouncementType.Maintenance:\n return (\n <MaintenanceContentCard\n message={message.message}\n startTime={message.startTime ?? 0}\n endTime={message.endTime ?? 0}\n />\n );\n case AnnouncementType.Delisting:\n return (\n <DelistingContentCard\n message={message.message}\n updateTime={message.updated_time ?? 0}\n />\n );\n default:\n return (\n <ListingContentCard\n message={message.message}\n updateTime={message.updated_time ?? 0}\n />\n );\n }\n });\n }, [props.dataSource]);\n return <>{elements[props.current]}</>;\n};\n\nexport const NotificationUI: FC<\n NotificationProps & {\n maintenanceMessage?: string;\n onItemClick: (url: string) => void;\n }\n> = (props) => {\n const [expanded, setExpanded] = useState(true);\n\n const [current, setCurrent] = useState(0);\n const len = useMemo(() => props.dataSource?.length ?? 0, [props.dataSource]);\n\n if (len === 0) {\n return null;\n }\n\n return (\n <div className=\"orderly-notification oui-w-full \">\n <NotificationHeader\n dataSource={props.dataSource ?? []}\n current={current}\n expanded={expanded}\n onExpandToggle={() => {\n setExpanded(!expanded);\n }}\n />\n <Divider className=\"oui-mx-4\" />\n <div\n className=\"oui-grid oui-transition-all oui-duration-300 oui-ease-in-out\"\n style={{\n gridTemplateRows: expanded ? \"1fr\" : \"0fr\",\n }}\n >\n {/* Inner div needs overflow-hidden and min-height-0 for grid animation to work */}\n <div className=\"oui-min-h-0 oui-overflow-hidden \">\n <div className=\"oui-px-4 oui-py-3\">\n <NotificationContent\n dataSource={props.dataSource ?? []}\n current={current}\n onItemClick={props.onItemClick}\n />\n </div>\n </div>\n </div>\n\n <NotificationFooter\n total={len}\n current={current}\n onCloseAll={props.onClose ?? (() => {})}\n onPrev={() => {\n if (current - 1 < 0) {\n return;\n }\n setCurrent(current - 1);\n }}\n onNext={() => {\n if (current + 1 >= len) {\n return;\n }\n setCurrent(current + 1);\n }}\n />\n </div>\n );\n};\n","import { FC, useMemo } from \"react\";\nimport { UTCDate } from \"@date-fns/utc\";\nimport { format, differenceInHours, differenceInMinutes } from \"date-fns\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { Flex, Text } from \"@kodiak-finance/orderly-ui\";\nimport { ArrowRightShortIcon } from \"../announcementCenter/icons\";\n\nexport const CampaignContentCard: FC<{\n message: string;\n coverImage: string;\n updateTime: number;\n url?: string | null;\n onItemClick: (url: string) => void;\n}> = ({ message, coverImage, url, onItemClick }) => {\n const { t } = useTranslation();\n return (\n <div className=\"oui-flex oui-flex-col oui-gap-5\">\n <Text size=\"sm\" weight=\"bold\">\n {message}\n </Text>\n <div\n className=\"oui-rounded-xl oui-bg-base-9 oui-bg-cover oui-bg-center oui-bg-no-repeat\"\n style={{\n backgroundImage: `url(${coverImage})`,\n height: \"100px\",\n }}\n ></div>\n {typeof url === \"string\" &&\n url !== \"\" &&\n typeof onItemClick === \"function\" && (\n <button\n className=\"oui-flex oui-items-center oui-gap-1\"\n onClick={() => onItemClick(url)}\n >\n <Text\n size=\"xs\"\n color=\"buy\"\n className=\"oui-bg-clip-text oui-text-transparent oui-gradient-brand\"\n >\n {t(\"notification.joinNow\")}\n </Text>\n <ArrowRightShortIcon size={18} color=\"success\" />\n </button>\n )}\n </div>\n );\n};\n\nexport const MaintenanceContentCard: FC<{\n message: string;\n startTime: number;\n endTime: number;\n}> = ({ message, startTime, endTime }) => {\n const { t } = useTranslation();\n const formattedMessage = useMemo(() => {\n // Calculate duration in hours\n const hours = differenceInHours(endTime, startTime);\n\n const minutes = differenceInMinutes(endTime, startTime) - hours * 60;\n\n // Convert timestamps to UTC dates\n const startUtc = new UTCDate(startTime);\n const endUtc = new UTCDate(endTime);\n\n // Format start time as HH:mm (24-hour format) in UTC\n const startTimeFormatted = format(startUtc, \"HH:mm\");\n\n // Format end time as hh:mm a (12-hour format with AM/PM) in UTC\n const endTimeFormatted = format(endUtc, \"hh:mm a\");\n\n if (hours > 0) {\n return t(\"notification.maintenanceDuration.hours\", {\n hours: minutes > 0 ? (hours + minutes / 60).toFixed(1) : hours,\n startTimeFormatted,\n endTimeFormatted,\n });\n }\n\n return t(\"notification.maintenanceDuration.minutes\", {\n minutes,\n startTimeFormatted,\n endTimeFormatted,\n });\n }, [startTime, endTime, t]);\n\n return (\n <div className=\"oui-flex oui-flex-col oui-gap-1\">\n <Text size=\"xs\" intensity={54}>\n {t(\"notification.recentlyUpdated\")}\n </Text>\n <Flex itemAlign={\"center\"}>\n <Text size=\"xs\" weight=\"bold\">\n {formattedMessage}\n </Text>\n </Flex>\n {message && (\n <Text size=\"2xs\" intensity={80} as=\"div\" className=\"oui-mt-2\">\n {message}\n </Text>\n )}\n </div>\n );\n};\n\nexport const DelistingContentCard: FC<{\n message: string;\n updateTime: number;\n}> = ({ message, updateTime }) => {\n return (\n <div className=\"oui-flex oui-flex-col oui-gap-1\">\n <Text.formatted\n rule=\"date\"\n intensity={54}\n formatString=\"yyyy-MM-dd HH:mm:ss\"\n size=\"xs\"\n >\n {updateTime}\n </Text.formatted>\n <Text size=\"sm\" weight=\"bold\">\n {message}\n </Text>\n </div>\n );\n};\n\nexport const ListingContentCard: FC<{\n message: string;\n updateTime: number;\n}> = ({ message, updateTime }) => {\n return (\n <div className=\"oui-flex oui-flex-col oui-gap-1\">\n <Text.formatted\n rule=\"date\"\n intensity={54}\n formatString=\"yyyy-MM-dd HH:mm:ss\"\n size=\"xs\"\n >\n {updateTime}\n </Text.formatted>\n <Text size=\"sm\" weight=\"bold\">\n {message}\n </Text>\n </div>\n );\n};\n","import { FC, useCallback } from \"react\";\nimport { useAnnouncementCenterScript } from \"./announcementCenter.script\";\nimport { AnnouncementCenterUI } from \"./announcementCenter.ui\";\n\nexport const AnnouncementCenterWidget: FC<{\n onRouteChange: (url: string) => void;\n}> = (props) => {\n const { dataSource, current, setCurrent } = useAnnouncementCenterScript();\n const onItemClick = useCallback(\n (url: string) => {\n if (!url) return;\n props.onRouteChange(url);\n },\n [props.onRouteChange],\n );\n return (\n <AnnouncementCenterUI\n dataSource={dataSource}\n current={current}\n setCurrent={setCurrent}\n onItemClick={onItemClick}\n />\n );\n};\n","import { useState } from \"react\";\nimport { useAnnouncement } from \"../hooks/useAnnouncement\";\n\nexport const useAnnouncementCenterScript = () => {\n const { tips } = useAnnouncement();\n const [current, setCurrent] = useState<string | number | null>(null);\n\n return {\n dataSource: tips,\n current,\n setCurrent,\n };\n};\n","import { useEffect, useMemo, useState } from \"react\";\nimport { UTCDateMini } from \"@date-fns/utc\";\nimport { format } from \"date-fns\";\nimport { produce } from \"immer\";\nimport {\n MaintenanceStatus,\n useLocalStorage,\n useMaintenanceStatus,\n useOrderlyContext,\n useQuery,\n useWS,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { useAppContext } from \"@kodiak-finance/orderly-react-app\";\nimport {\n AnnouncementType,\n API,\n EMPTY_LIST,\n WSMessage,\n} from \"@kodiak-finance/orderly-types\";\nimport { getTimestamp } from \"@kodiak-finance/orderly-utils\";\n\nconst oneDay = 1000 * 60 * 60 * 24;\n\nconst maintentanceId = \"-1\";\n\nexport type AnnouncementOptions = {\n hideTips?: boolean;\n};\n\ninterface AnnouncementStore {\n show?: boolean;\n lastUpdateTime?: number | null;\n}\n\nconst ORDERLY_ANNOUNCEMENT_KEY = \"orderly_announcement\";\n\nconst getTimeString = (timestamp: number) => {\n const date = format(new UTCDateMini(timestamp), \"MMM dd\");\n const time = format(new UTCDateMini(timestamp), \"h:mm aa\");\n return `${time} (UTC) on ${date}`;\n};\n\nconst sortDataByUpdatedTime = (ori: API.Announcement) => {\n return produce<API.Announcement>(ori, (draft) => {\n if (Array.isArray(draft.rows)) {\n draft.rows.sort((a, b) => {\n if (a.updated_time && b.updated_time) {\n return b.updated_time - a.updated_time;\n }\n return 0;\n });\n }\n });\n};\n\nconst useAnnouncementData = () => {\n const ws = useWS();\n\n const [announcementStore, setStore] = useLocalStorage<AnnouncementStore>(\n ORDERLY_ANNOUNCEMENT_KEY,\n {},\n );\n\n const [tips, setTips] = useState<API.Announcement>({});\n\n const [maintenanceDialogInfo, setMaintenanceDialogInfo] = useState<string>();\n\n const { startTime, endTime, status, brokerName } = useMaintenanceStatus();\n\n const { t } = useTranslation();\n\n const { data: announcements } = useQuery<API.Announcement>(\n `/v2/public/announcement`,\n {\n revalidateOnFocus: false,\n refreshInterval: 60 * 60 * 1000, // refresh every 1 hour\n formatter: (data) => data,\n },\n );\n\n const getMaintentTipsContent = (\n brokerName: string,\n startDate: string,\n endDate: string,\n ) => t(\"maintenance.tips.description\", { brokerName, startDate, endDate });\n\n const getMaintentDialogContent = (brokerName: string, endDate: string) =>\n t(\"maintenance.dialog.description\", { brokerName, endDate });\n\n useEffect(() => {\n const unsubscribe = ws.subscribe(\"announcement\", {\n onMessage(message: WSMessage.Announcement) {\n if (message) {\n setTips((prev) => {\n return produce(prev, (draft) => {\n // Make sure draft.rows is an array\n if (!Array.isArray(draft.rows)) {\n draft.rows = [];\n }\n const idx = draft.rows.findIndex(\n (tip) => tip.announcement_id === message.announcement_id,\n );\n // Filter out old tips with the same id\n if (idx !== -1) {\n draft.rows.splice(idx, 1);\n }\n // Add the latest tip\n draft.rows.push({\n announcement_id: message.announcement_id,\n message: message.message,\n url: message.url,\n i18n: message.i18n,\n type: message.type,\n updated_time: message.updated_time,\n });\n });\n });\n // @ts-ignore\n setStore((prev) => ({ ...prev, show: true }));\n }\n },\n onError(err) {\n if (err instanceof Error) {\n console.error(\"Error receiving announcement:\", err.message);\n }\n },\n });\n return () => {\n unsubscribe?.();\n };\n }, [ws]);\n\n useEffect(() => {\n if (!announcements?.rows) {\n return;\n }\n const apiTime = announcements.last_updated_time ?? 0;\n const cachedTime = announcementStore.lastUpdateTime ?? 0;\n if (cachedTime < apiTime) {\n setTips((prev) => ({ ...prev, rows: announcements?.rows }));\n setStore({ show: true, lastUpdateTime: apiTime });\n } else {\n setTips((prev) => {\n return produce<API.Announcement>(prev, (draft) => {\n if (announcements?.rows?.length) {\n // If there are announcement rows available, create a Set to store IDs of existing tips\n const existingIds = new Set<string | number>(\n prev.rows?.map((tip) => tip.announcement_id),\n );\n // Find the maintenance tip in previous tips (if any)\n const maintenanceTip = prev.rows?.find(\n (tip) => tip.announcement_id === maintentanceId,\n );\n // Clear the draft’s rows array to refill it\n draft.rows = [];\n announcements.rows.forEach((item) => {\n if (!existingIds.has(item.announcement_id)) {\n // If the item’s ID is not in existingIds, push it into the draft\n draft.rows?.push(item);\n }\n });\n if (maintenanceTip) {\n // If a maintenance tip existed before, unshift it to the front\n draft.rows.unshift(maintenanceTip);\n }\n } else {\n // Find the index of the maintenance tip in draft rows\n const idx = draft.rows?.findIndex(\n (tip) => tip.announcement_id === maintentanceId,\n );\n if (idx !== undefined && idx !== -1) {\n // Remove the maintenance tip from draft rows\n draft.rows?.splice(idx, 1);\n }\n }\n });\n });\n }\n }, [announcements]);\n\n useEffect(() => {\n const startDate = startTime ? getTimeString(startTime) : \"-\";\n const endDate = endTime ? getTimeString(endTime) : \"-\";\n if (status === MaintenanceStatus.Maintenance) {\n setMaintenanceDialogInfo(getMaintentDialogContent(brokerName, endDate));\n return;\n }\n setMaintenanceDialogInfo(undefined);\n\n if (startTime && endTime) {\n // if (startTime < getTimestamp() + oneDay) {\n setTips((prev) =>\n produce<API.Announcement>(prev, (draft) => {\n // Make sure draft.rows is an array\n if (!Array.isArray(draft.rows)) {\n draft.rows = [];\n }\n // Rebuild rows: insert the latest maintenance tip first, then put the old non-maintenance ones at the end\n draft.rows = [\n {\n announcement_id: maintentanceId,\n type: AnnouncementType.Maintenance,\n /** @ts-ignore */\n startTime: startTime,\n /** @ts-ignore */\n endTime: endTime,\n message: getMaintentTipsContent(brokerName, startDate, endDate),\n },\n ...draft.rows.filter(\n (tip) => tip.type !== AnnouncementType.Maintenance,\n ),\n ];\n }),\n );\n } else {\n setTips((prev) => {\n return produce<API.Announcement>(prev, (draft) => {\n const index = draft.rows?.findIndex(\n (tip) => tip.announcement_id === maintentanceId,\n );\n if (index !== undefined && index !== -1) {\n draft.rows?.splice(index, 1);\n }\n });\n });\n }\n }, [startTime, endTime, status, brokerName, t]);\n\n const { customAnnouncements } = useAppContext();\n\n // Merge custom announcements with API announcements\n const mergedTips = useMemo(() => {\n const tipsCopy = { ...tips };\n if (customAnnouncements && customAnnouncements.length > 0) {\n // Custom announcements appear first (higher priority)\n tipsCopy.rows = [...customAnnouncements, ...(tips.rows || [])];\n }\n return sortDataByUpdatedTime(tipsCopy);\n }, [tips, customAnnouncements]);\n\n return {\n tips: mergedTips,\n maintenanceDialogInfo: maintenanceDialogInfo,\n };\n};\n\nexport type AnnouncementReturn = ReturnType<typeof useAnnouncement>;\n\nexport const useAnnouncement = (options?: AnnouncementOptions) => {\n const { showAnnouncement, setShowAnnouncement } = useAppContext();\n const { dataAdapter } = useOrderlyContext();\n\n const { tips: mergedTips, maintenanceDialogInfo } = useAnnouncementData();\n\n const memoizedTips = useMemo<API.AnnouncementRow[]>(() => {\n if (typeof dataAdapter?.announcementList === \"function\") {\n return dataAdapter.announcementList(\n mergedTips?.rows ?? (EMPTY_LIST as API.AnnouncementRow[]),\n );\n }\n return mergedTips?.rows ?? (EMPTY_LIST as API.AnnouncementRow[]);\n }, [dataAdapter?.announcementList, mergedTips?.rows]);\n\n const [announcementStore, setStore] = useLocalStorage<AnnouncementStore>(\n ORDERLY_ANNOUNCEMENT_KEY,\n {},\n );\n\n const closeTips = () => {\n // @ts-ignore\n setStore((prev) => ({ ...prev, show: false }));\n };\n\n useEffect(() => {\n const len = memoizedTips.length;\n setShowAnnouncement(\n Boolean(len) && announcementStore.show && !options?.hideTips,\n );\n }, [\n memoizedTips,\n announcementStore.show,\n options?.hideTips,\n setShowAnnouncement,\n ]);\n\n return {\n maintenanceDialogInfo,\n tips: memoizedTips,\n closeTips: closeTips,\n showAnnouncement: showAnnouncement,\n };\n};\n","import { useScaffoldContext } from \"../scaffold/scaffoldContext\";\nimport { NotificationUI } from \"./notification.ui\";\n\nexport const NotificationWidget = () => {\n const { announcementState } = useScaffoldContext();\n\n return (\n <NotificationUI\n dataSource={announcementState.tips}\n onClose={announcementState.closeTips}\n showAnnouncement={announcementState.showAnnouncement}\n />\n );\n};\n","import { useEffect, useRef, useState } from \"react\";\nimport { useLocalStorage } from \"@kodiak-finance/orderly-hooks\";\nimport { useAppContext } from \"@kodiak-finance/orderly-react-app\";\nimport { useObserverElement, useScreen } from \"@kodiak-finance/orderly-ui\";\nimport { type ScaffoldProps } from \"./scaffold.widget\";\n\nexport type ScaffoldScriptReturn = ReturnType<typeof useScaffoldScript>;\n\ntype ScaffoldScriptOptions = ScaffoldProps;\n\nexport const useScaffoldScript = (options: ScaffoldScriptOptions) => {\n const { restrictedInfo, showAnnouncement } = useAppContext();\n\n const [topNavbarRef, topNavbarHeight] = useRefAndHeight(48);\n const [footerRef, footerHeight] = useRefAndHeight(29);\n const [bottomNavRef, bottomNavHeight] = useRefAndHeight(64);\n const [announcementRef, announcementHeight] = useRefAndHeight(0, [\n showAnnouncement,\n ]);\n\n const [expand, setExpand] = useLocalStorage(\n \"orderly_scaffold_expanded\",\n true,\n );\n\n const { isMobile } = useScreen();\n\n const sideBarExpandWidth = options.leftSideProps?.maxWidth || 185;\n const sideBarCollaspedWidth = options.leftSideProps?.minWidth || 98;\n const hasLeftSidebar = !!options.leftSidebar;\n\n return {\n topNavbarRef,\n footerRef,\n topNavbarHeight,\n footerHeight,\n announcementRef,\n announcementHeight,\n restrictedInfo,\n expand,\n setExpand,\n isMobile,\n sideBarExpandWidth,\n sideBarCollaspedWidth,\n hasLeftSidebar,\n footerProps: options.footerProps,\n routerAdapter: options.routerAdapter,\n mainNavProps: options.mainNavProps,\n bottomNavProps: options.bottomNavProps,\n bottomNavRef,\n bottomNavHeight,\n };\n};\n\nconst useRefAndHeight = (\n defaultHeight: number,\n deps: React.DependencyList = [],\n) => {\n const ref = useRef<HTMLDivElement>(null);\n const [height, setHeight] = useState(defaultHeight);\n\n useObserverElement(ref.current, (entry) => {\n setHeight(entry.contentRect.height);\n });\n\n useEffect(() => {\n if (!ref.current) {\n return;\n }\n const rect = ref.current?.getBoundingClientRect();\n setHeight(rect.height);\n }, [ref, ...deps]);\n\n return [ref, height] as const;\n};\n","import React from \"react\";\nimport { isValidElement } from \"react\";\nimport { Box, cn, Grid } from \"@kodiak-finance/orderly-ui\";\nimport { FooterWidget } from \"../footer\";\nimport { MainNavWidget } from \"../main/mainNav.widget\";\nimport { NotificationWidget } from \"../notification/notification.widget\";\nimport { RestrictedInfoWidget } from \"../restrictedInfo\";\nimport { SideNavbarWidget } from \"../sidebar\";\nimport type { ScaffoldScriptReturn } from \"./scaffold.script\";\nimport type { ScaffoldProps } from \"./scaffold.widget\";\n\nexport type DesktopScaffoldProps = React.PropsWithChildren<\n ScaffoldProps & ScaffoldScriptReturn\n>;\n\nexport const DesktopScaffold: React.FC<DesktopScaffoldProps> = (props) => {\n const {\n classNames,\n footerHeight,\n topNavbarRef,\n mainNavProps,\n topBar,\n announcementRef,\n // restrictedInfo,\n hasLeftSidebar,\n expand,\n leftSideProps,\n leftSidebar,\n footer,\n footerRef,\n sideBarCollaspedWidth,\n sideBarExpandWidth,\n footerProps,\n children,\n } = props;\n return (\n <div\n style={{\n height: `calc(100vh - ${footerHeight}px)`,\n }}\n className={cn(\n \"oui-scaffold-root oui-font-semibold\",\n // default text and background color\n \"oui-bg-base-10 oui-text-base-contrast\",\n \"oui-flex oui-flex-col\",\n \"oui-custom-scrollbar oui-overflow-auto\",\n classNames?.root,\n )}\n >\n {/* topNavbar */}\n <Box\n ref={topNavbarRef}\n className={cn(\n \"oui-scaffold-topNavbar oui-bg-base-9\",\n classNames?.topNavbar,\n )}\n >\n {topBar ?? <MainNavWidget {...mainNavProps} />}\n </Box>\n <div\n className={cn(\n \"oui-scaffold-container\",\n \"oui-relative oui-h-full\",\n // 1024px - 6px (scrollbar widt) = 1018px\n \"oui-min-w-[1018px]\",\n classNames?.container,\n )}\n >\n <Box px={2} ref={announcementRef}>\n <RestrictedInfoWidget\n className={cn(\n \"oui-scaffold-restricted-info\",\n \"oui-relative oui-z-[1]\",\n \"oui-mt-2\",\n \"oui-bg-base-9\",\n \"oui-min-w-[994px]\",\n )}\n />\n {/* <AnnouncementWidget\n className={\"oui-mx-auto oui-mt-2\"}\n hideTips={restrictedInfo?.restrictedOpen}\n /> */}\n </Box>\n {/*--------- body start ------ */}\n {!hasLeftSidebar ? (\n // ----------No leftSidebar layout start ---------\n <Box height=\"100%\" className={cn(classNames?.content)}>\n {children}\n </Box>\n ) : (\n // ----------No leftSidebar layout end ---------\n // ---------- left & body layout start ---------\n <Grid\n className={cn(\n \"oui-box-content oui-flex oui-transition-all xl:oui-grid\",\n \"oui-min-h-full oui-flex-1\",\n classNames?.body,\n )}\n style={{\n gridTemplateColumns: `${\n expand\n ? `${sideBarExpandWidth}px`\n : `${sideBarCollaspedWidth}px`\n } 1fr`,\n // gridTemplateRows: \"auto 1fr\",\n // gridTemplateAreas: `\"left main\" \"left main\"`,\n }}\n >\n <div className={cn(classNames?.leftSidebar)}>\n {isValidElement<any>(leftSidebar) ? (\n leftSidebar\n ) : (\n <SideNavbarWidget {...leftSideProps} />\n )}\n </div>\n <Box\n width={\"100%\"}\n className={cn(\"oui-overflow-hidden\", classNames?.content)}\n >\n {children}\n </Box>\n </Grid>\n // ---------- left & body layout end ---------\n )}\n </div>\n\n {/* footer */}\n <Box\n ref={footerRef}\n className={cn(\n \"oui-scaffold-footer oui-w-full oui-bg-base-10\",\n \"oui-fixed oui-bottom-0 oui-z-50\",\n \"oui-border-t oui-border-line-12\",\n classNames?.footer,\n )}\n >\n {footer || <FooterWidget {...footerProps} />}\n </Box>\n <NotificationWidget />\n </div>\n );\n};\n","import { FC, useMemo } from \"react\";\nimport { WsNetworkStatus } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { Divider, Flex, Text } from \"@kodiak-finance/orderly-ui\";\nimport {\n CommuntiyDiscordIcon,\n CommuntiyTelegramIcon,\n CommuntiyXIcon,\n OrderlyTextIcon,\n SignalIcon,\n} from \"../icons/index\";\nimport type { FooterReturns } from \"./footer.script\";\nimport type { FooterProps } from \"./footer.widget\";\n\nexport const Footer: FC<FooterReturns & FooterProps> = (props) => {\n const { t } = useTranslation();\n\n const signalClsName = useMemo(() => {\n switch (props.wsStatus) {\n case WsNetworkStatus.Connected:\n return \"oui-fill-success-light oui-text-success-light\";\n case WsNetworkStatus.Disconnected:\n return \"oui-fill-danger-light oui-text-danger-light\";\n case WsNetworkStatus.Unstable:\n return \"oui-fill-warning-light oui-text-warning-light\";\n }\n }, [props.wsStatus]);\n\n const openUrl = (url?: string) => {\n window.open(url, \"_blank\");\n };\n\n return (\n <Flex\n direction={\"row\"}\n justify={\"between\"}\n height={28}\n px={3}\n width={\"100%\"}\n >\n <Flex>\n <Flex\n direction={\"row\"}\n itemAlign={\"center\"}\n gap={1}\n className={signalClsName}\n >\n <SignalIcon\n // className={cn(signalClsName, \"oui-fill-success-light\")}\n fillOpacity={1}\n fill=\"currentColor\"\n />\n <Text size=\"2xs\">{t(\"scaffold.footer.operational\")}</Text>\n </Flex>\n <Divider\n direction=\"vertical\"\n className=\"oui-h-[18px] oui-px-1 oui-ml-2 oui-border-line-12\"\n />\n <Flex gap={2}>\n <Text intensity={54} size=\"2xs\">\n {t(\"scaffold.footer.joinCommunity\")}\n </Text>\n <Flex direction={\"row\"} gap={1}>\n {typeof props.telegramUrl !== \"undefined\" && (\n <CommuntiyTelegramIcon\n className=\"oui-fill-white/[.54] hover:oui-fill-white/[.98] oui-cursor-pointer\"\n fill=\"currentColor\"\n fillOpacity={1}\n onClick={(e) => openUrl(props.telegramUrl)}\n />\n )}\n {typeof props.discordUrl !== \"undefined\" && (\n <CommuntiyDiscordIcon\n className=\"oui-fill-white/[.54] hover:oui-fill-white/[.98] oui-cursor-pointer\"\n fill=\"currentColor\"\n fillOpacity={1}\n onClick={(e) => openUrl(props.discordUrl)}\n />\n )}\n {typeof props.twitterUrl !== \"undefined\" && (\n <CommuntiyXIcon\n className=\"oui-fill-white/[.54] hover:oui-fill-white/[.98] oui-cursor-pointer\"\n fill=\"currentColor\"\n fillOpacity={1}\n onClick={(e) => openUrl(props.twitterUrl)}\n />\n )}\n </Flex>\n {typeof props?.trailing !== \"undefined\" && (\n <>\n <Divider\n direction=\"vertical\"\n className=\"oui-h-[18px] oui-border-line-12\"\n />\n {props?.trailing}\n </>\n )}\n </Flex>\n </Flex>\n <Flex\n direction={\"row\"}\n gap={1}\n className=\"oui-scaffold-footer-powered-by\"\n >\n <Text intensity={54} size=\"2xs\">\n {t(\"scaffold.footer.poweredBy\")}\n </Text>\n <OrderlyTextIcon />\n </Flex>\n </Flex>\n );\n};\n","import { useWsStatus, WsNetworkStatus } from \"@kodiak-finance/orderly-hooks\";\n\nexport type FooterReturns = {\n wsStatus: WsNetworkStatus;\n};\n\nexport const useFooterScript = (): FooterReturns => {\n const wsStatus = useWsStatus();\n\n return {\n wsStatus,\n };\n};\n","import React, { ReactNode } from \"react\";\nimport { useFooterScript } from \"./footer.script\";\nimport { Footer } from \"./footer.ui\";\n\nexport type FooterProps = {\n telegramUrl?: string;\n twitterUrl?: string;\n discordUrl?: string;\n trailing?: ReactNode;\n};\n\nexport const FooterWidget: React.FC<FooterProps> = (props) => {\n const state = useFooterScript();\n return <Footer {...state} {...props} />;\n};\n","import React from \"react\";\nimport {\n Box,\n Flex,\n tv,\n VariantProps,\n Text,\n cn,\n Tooltip,\n} from \"@kodiak-finance/orderly-ui\";\n\ntype SideMenuItem = {\n name: string;\n icon?: React.ReactNode;\n href?: string;\n disabled?: boolean;\n onClick?: () => void;\n hide?: boolean;\n};\n\nconst menuItemVariants = tv({\n slots: {\n button: [\n \"oui-min-h-10\",\n \"oui-px-3\",\n \"oui-py-2\",\n \"oui-rounded-md\",\n \"oui-w-full\",\n \"oui-text-left\",\n \"oui-text-base\",\n \"oui-text-base-contrast-36\",\n // \"oui-flex\",\n \"oui-group\",\n // \"oui-space-x-2\",\n // \"oui-items-center\",\n \"hover:oui-bg-base-8\",\n \"oui-transition-colors\",\n \"group-data-[state=closed]/bar:oui-w-[42px]\",\n \"oui-overflow-hidden\",\n ],\n icon: [],\n },\n variants: {\n mode: {\n \"icon-only\": {\n button: \"oui-w-10\",\n icon: \"w-6 h-6\",\n },\n full: {\n button: \"oui-full\",\n icon: \"w-6 h-6\",\n },\n },\n active: {\n true: {\n button: \"oui-bg-base-5 hover:oui-bg-base-5\",\n },\n },\n open: {\n true: {\n button: \"\",\n },\n },\n },\n});\n\nconst MenuItem = React.memo<\n {\n item: SideMenuItem;\n active?: boolean;\n open?: boolean;\n onClick?: (item: SideMenuItem) => void;\n } & VariantProps<typeof menuItemVariants>\n>((props) => {\n const { item, mode, open, onClick, active, ...rest } = props;\n const { button } = menuItemVariants({\n mode,\n active: props.active,\n open: props.open,\n });\n const children = (\n <button\n data-actived={props.active}\n disabled={item.disabled}\n className={button()}\n onClick={() => {\n props.onClick?.(item);\n }}\n >\n <Flex itemAlign={\"center\"} gap={2} as=\"span\">\n <div>{item.icon}</div>\n {props.open && (\n <Text.gradient\n color={props.active ? \"brand\" : \"inherit\"}\n angle={45}\n size=\"base\"\n className=\"oui-break-all oui-animate-in oui-fade-in\"\n >\n {item.name}\n </Text.gradient>\n )}\n </Flex>\n </button>\n );\n\n if (props.open) {\n return <li className=\"oui-min-w-[120px]\">{children}</li>;\n }\n\n return (\n <li>\n <Tooltip content={item.name} side=\"right\" align=\"center\" sideOffset={20}>\n {children}\n </Tooltip>\n </li>\n );\n});\n\nMenuItem.displayName = \"LeftMenuItem\";\n\nconst SideMenus: React.FC<{\n menus?: SideMenuItem[];\n current?: string;\n open?: boolean;\n onItemSelect?: (item: SideMenuItem) => void;\n}> = (props) => {\n return (\n <Box py={6}>\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 className=\"oui-pointer-events-none oui-invisible oui-absolute\"\n >\n <defs>\n <linearGradient\n id=\"side-menu-gradient\"\n x1=\"15.7432\"\n y1=\"8.94726\"\n x2=\"2.24316\"\n y2=\"8.94726\"\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 <ul className=\"oui-space-y-4\">\n {props.menus?.map((item, index) => {\n if (item?.hide) {\n return null;\n }\n return (\n <MenuItem\n key={index}\n item={item}\n open={props.open}\n active={item.href === props.current}\n onClick={props.onItemSelect}\n />\n );\n })}\n </ul>\n </Box>\n );\n};\n\ntype SideBarHeaderProps = {\n onToggle?: () => void;\n open?: boolean;\n title?: React.ReactNode;\n};\n\nconst SideBarHeader: React.FC<SideBarHeaderProps> = (props) => {\n const { title } = props;\n\n const titleElemet =\n typeof title === \"string\" ? (\n <Text intensity={54} size=\"xs\">\n {title}\n </Text>\n ) : (\n title\n );\n\n const iconProps = {\n className:\n \"oui-text-base-contrast-36 hover:oui-text-base-contrast-80 oui-cursor-pointer\",\n onClick: props.onToggle,\n };\n\n return (\n <Flex\n justify={props.open ? \"between\" : \"center\"}\n itemAlign=\"center\"\n className=\"oui-h-6\"\n >\n {props.open ? titleElemet : null}\n\n {props.open ? (\n <CollapseIcon {...iconProps} />\n ) : (\n <ExpandIcon {...iconProps} />\n )}\n </Flex>\n );\n};\n\ntype SideBarProps = {\n title?: React.ReactNode;\n items?: SideMenuItem[];\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n onItemSelect?: (item: SideMenuItem) => void;\n current?: string;\n className?: string;\n maxWidth?: number;\n minWidth?: number;\n style?: React.CSSProperties;\n};\n\nconst SideBar: React.FC<SideBarProps> = (props) => {\n const { open = true, items, current, onItemSelect } = props;\n\n return (\n <Box\n data-state={open ? \"opened\" : \"closed\"}\n className={cn(\"oui-group/bar\", props.className)}\n style={props.style}\n >\n <SideBarHeader\n open={open}\n title={props.title}\n onToggle={() => {\n props.onOpenChange?.(!open);\n }}\n />\n <SideMenus\n menus={items}\n current={current}\n onItemSelect={onItemSelect}\n open={open}\n />\n </Box>\n );\n};\n\nSideBar.displayName = \"SideBar\";\n\nconst ExpandIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (\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 {...props}\n >\n <path d=\"M6.326 8.826a.84.84 0 0 0-.6.234L2.16 12.627v-2.135H.492v4.167c0 .46.373.833.834.833h4.166v-1.667H3.357l3.567-3.567a.857.857 0 0 0 0-1.198.84.84 0 0 0-.598-.234M10.502.492V2.16h2.135L9.07 5.726a.857.857 0 0 0 0 1.199.86.86 0 0 0 1.197 0l3.568-3.568v2.135h1.667V1.326a.834.834 0 0 0-.834-.834z\" />\n </svg>\n);\n\nconst CollapseIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (\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 {...props}\n >\n <path d=\"M14.668.492a.85.85 0 0 0-.599.234l-3.567 3.568V2.159H8.835v4.167c0 .46.373.833.833.833h4.167V5.492H11.7l3.569-3.567a.86.86 0 0 0 0-1.199.85.85 0 0 0-.6-.234m-12.5 8.334v1.666h2.135L.736 14.06a.86.86 0 0 0 0 1.198.86.86 0 0 0 1.198 0l3.568-3.567v2.134h1.666V9.66a.834.834 0 0 0-.833-.833z\" />\n </svg>\n);\n\nexport { SideBar };\n\nexport type { SideBarProps, SideMenuItem };\n","import { useState } from \"react\";\nimport { SideBarProps } from \"./sidebar.ui\";\nimport { useScaffoldContext } from \"../scaffold\";\n\nexport const useSideNavBuilder = (\n props?: Partial<SideBarProps>\n): SideBarProps => {\n const [current, setCurrent] = useState(props?.items?.[0].href || \"/\");\n const { expanded, setExpand } = useScaffoldContext();\n\n if (typeof setExpand === \"undefined\") {\n console.warn(\"SideBar component must be used within a Scaffold component\");\n }\n\n return {\n items: [],\n current,\n open: expanded,\n onOpenChange: (open) => {\n setExpand?.(open);\n },\n onItemSelect: (item) => {\n if (item.href) {\n setCurrent(item.href);\n }\n },\n ...props,\n };\n};\n","import React from \"react\";\nimport { SideBar, SideBarProps } from \"./sidebar.ui\";\nimport { useSideNavBuilder } from \"./useSideNavBuilder.script\";\n\nexport const SideNavbarWidget: React.FC<Partial<SideBarProps>> = (props) => {\n const state = useSideNavBuilder(props);\n return <SideBar {...state} />;\n};\n","import React, { useContext, useMemo } from \"react\";\nimport {\n OrderlyContext,\n useChains,\n useMemoizedFn,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { useAnnouncement } from \"@kodiak-finance/orderly-ui-notification\";\nimport { checkChainSupport } from \"../../utils/chain\";\nimport { ScaffoldContext, ScaffoldState } from \"./scaffoldContext\";\n\nexport type ScaffoldProviderProps = Omit<\n ScaffoldState,\n \"checkChainSupport\" | \"announcementState\"\n>;\n\nexport const ScaffoldProvider: React.FC<\n React.PropsWithChildren<ScaffoldProviderProps>\n> = (props) => {\n const {\n routerAdapter,\n expanded,\n setExpand,\n topNavbarHeight,\n footerHeight,\n announcementHeight,\n children,\n } = props;\n\n const [chains] = useChains();\n\n const { networkId } = useContext<any>(OrderlyContext);\n\n const announcementState = useAnnouncement();\n\n // console.log(\"announcementState\", announcementState);\n\n const checkChainSupportHandle = useMemoizedFn((chainId: number | string) => {\n return checkChainSupport(\n chainId,\n networkId === \"testnet\" ? chains.testnet : chains.mainnet,\n );\n });\n\n const memoizedValue = useMemo<ScaffoldState>(() => {\n return {\n routerAdapter: routerAdapter,\n expanded: expanded,\n setExpand: setExpand,\n checkChainSupport: checkChainSupportHandle,\n topNavbarHeight: topNavbarHeight,\n footerHeight: footerHeight,\n announcementHeight: announcementHeight,\n announcementState: announcementState,\n };\n }, [\n routerAdapter,\n expanded,\n setExpand,\n checkChainSupportHandle,\n topNavbarHeight,\n footerHeight,\n announcementHeight,\n announcementState,\n ]);\n\n return (\n <ScaffoldContext.Provider value={memoizedValue}>\n {children}\n </ScaffoldContext.Provider>\n );\n};\n","import { API } from \"@kodiak-finance/orderly-types\";\n\nexport function checkChainSupport(\n chainId: number | string,\n chains: API.Chain[]\n) {\n if (typeof chainId === \"string\") {\n chainId = parseInt(chainId);\n }\n return chains.some((chain) => {\n return chain.network_infos.chain_id === chainId;\n });\n}\n","import React, { PropsWithChildren, ReactNode } from \"react\";\nimport type { RouterAdapter } from \"@kodiak-finance/orderly-types\";\nimport { BottomNavProps } from \"../bottomNav/bottomNav.widget\";\nimport { FooterProps } from \"../footer\";\nimport { LeftNavProps } from \"../leftNav\";\nimport { MainNavWidgetProps } from \"../main/mainNav.widget\";\nimport { SideBarProps } from \"../sidebar\";\nimport { MobileScaffold } from \"./scaffold.mobile.ui\";\nimport { useScaffoldScript } from \"./scaffold.script\";\nimport { DesktopScaffold } from \"./scaffold.ui\";\nimport { ScaffoldProvider } from \"./scaffoldProvider\";\n\nexport type ScaffoldProps = {\n /**\n * custom left sidebar component, only works on desktop\n * if provided, the layout will use this component over the default sidebar component\n */\n leftSidebar?: ReactNode;\n /**\n * custom left sidebar props, only works on desktop\n */\n leftSideProps?: SideBarProps;\n /**\n * custom left nav props, only works on mobile\n */\n leftNavProps?: LeftNavProps;\n /**\n * custom top bar component\n */\n topBar?: ReactNode;\n /**\n * custom top nav props\n */\n mainNavProps?: MainNavWidgetProps;\n /**\n * custom bottom nav component, only works on mobile\n */\n bottomNav?: ReactNode;\n /**\n * custom bottom nav component, only works on mobile\n */\n bottomNavProps?: BottomNavProps;\n /**\n * custom footer component, only works on desktop\n */\n footer?: ReactNode;\n /**\n * custom footer props, only works on desktop\n */\n footerProps?: FooterProps;\n routerAdapter?: RouterAdapter;\n classNames?: {\n // root = topNavbar + container + footer\n root?: string;\n container?: string;\n content?: string;\n // body = leftSidebar + content\n body?: string;\n leftSidebar?: string;\n topNavbar?: string;\n footer?: string;\n bottomNav?: string;\n };\n};\n\nexport const Scaffold: React.FC<PropsWithChildren<ScaffoldProps>> = (props) => {\n const state = useScaffoldScript(props);\n\n const renderContent = () => {\n if (state.isMobile) {\n return (\n <MobileScaffold {...props} {...state}>\n {props.children}\n </MobileScaffold>\n );\n }\n\n return (\n <DesktopScaffold {...props} {...state}>\n {props.children}\n </DesktopScaffold>\n );\n };\n\n return (\n <ScaffoldProvider\n routerAdapter={props.routerAdapter}\n expanded={state.expand}\n setExpand={state.setExpand}\n topNavbarHeight={state.topNavbarHeight}\n footerHeight={state.footerHeight}\n announcementHeight={state.announcementHeight}\n >\n {renderContent()}\n </ScaffoldProvider>\n );\n};\n","import { FC, PropsWithChildren, useMemo } from \"react\";\nimport { AccountStatusEnum } from \"@kodiak-finance/orderly-types\";\nimport { cn, Divider, Flex, useScreen } from \"@kodiak-finance/orderly-ui\";\nimport { WalletConnectButtonExtension } from \"../accountMenu/menu.widget\";\nimport { AccountSummaryWidget } from \"../accountSummary\";\nimport { ChainMenuWidget } from \"../chainMenu\";\nimport { LanguageSwitcherWidget } from \"../languageSwitcher\";\nimport { MessageCenterWidget } from \"../messageCenter/msgCenter.widget\";\nimport { SubAccountWidget } from \"../subAccount\";\nimport { CampaignButton } from \"./campaignButton\";\nimport { LinkDeviceWidget } from \"./linkDevice\";\nimport { MainLogo } from \"./mainLogo\";\nimport { MainNavMenusExtension } from \"./mainMenus/mainNavMenus.widget\";\nimport { CampaignPositionEnum, MainNavScriptReturn } from \"./mainNav.script\";\n\nexport const MainNav: FC<PropsWithChildren<MainNavScriptReturn>> = (props) => {\n const { className, classNames, campaigns, campaignPosition } = props;\n\n const showCampaignButton =\n campaignPosition === CampaignPositionEnum.navTailing && campaigns;\n\n const showLinkIcon =\n !props.wrongNetwork &&\n !props.disabledConnect &&\n props.status! >= AccountStatusEnum.SignedIn;\n\n const showSubAccount = props.status! >= AccountStatusEnum.EnableTrading;\n\n const hideWalletConnectButton =\n !props.disabledConnect && props.wrongNetwork && props.isConnected;\n\n const { isDesktop } = useScreen();\n\n const children = useMemo(() => {\n if (typeof props.children === \"undefined\") {\n return null;\n }\n return <Flex grow>{props.children}</Flex>;\n }, [props.children]);\n\n const showChainMenu = isDesktop;\n\n const renderContent = () => {\n const title = <MainLogo {...props.logo} />;\n const accountSummary = <AccountSummaryWidget />;\n const linkDevice = showLinkIcon && <LinkDeviceWidget />;\n const languageSwitcher = <LanguageSwitcherWidget />;\n const subAccount = showSubAccount && <SubAccountWidget />;\n const chainMenu = showChainMenu && <ChainMenuWidget />;\n const notify = <MessageCenterWidget />;\n const walletConnect = !hideWalletConnectButton && (\n <WalletConnectButtonExtension />\n );\n\n const mainNav = (\n <>\n <MainNavMenusExtension\n {...props.mainMenus}\n classNames={classNames?.mainNav}\n />\n {!!showCampaignButton && (\n <CampaignButton\n {...campaigns}\n className={classNames?.campaignButton}\n />\n )}\n </>\n );\n\n if (typeof props.customRender === \"function\") {\n return props.customRender?.({\n title,\n mainNav,\n accountSummary,\n linkDevice,\n languageSwitcher,\n subAccount,\n chainMenu,\n notify,\n walletConnect,\n });\n }\n\n return (\n <>\n <Flex\n itemAlign={\"center\"}\n className={cn(\n \"oui-gap-3\",\n // let the left and right views show spacing when overlapping\n \"oui-overflow-hidden\",\n )}\n >\n {title}\n {props.leading}\n {mainNav}\n {props.trailing}\n </Flex>\n\n {children}\n\n <Flex itemAlign={\"center\"} className=\"oui-gap-2\">\n {accountSummary}\n {showLinkIcon && (\n <>\n <Divider direction=\"vertical\" className=\"oui-h-8\" intensity={8} />\n {linkDevice}\n </>\n )}\n {notify}\n {languageSwitcher}\n {subAccount}\n {chainMenu}\n {walletConnect}\n </Flex>\n </>\n );\n };\n\n return (\n <Flex\n width=\"100%\"\n as=\"header\"\n itemAlign={\"center\"}\n height={\"48px\"}\n justify={\"between\"}\n px={3}\n gapX={3}\n className={cn(\n \"oui-main-nav oui-font-semibold oui-border-0 lg:oui-border-b-white/[0.12] lg:oui-border-b\",\n className,\n classNames?.root,\n )}\n >\n {renderContent()}\n </Flex>\n );\n};\n\nMainNav.displayName = \"MainNav\";\n","import React, { FC, PropsWithChildren, useEffect } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n Box,\n EyeCloseIcon,\n EyeIcon,\n Flex,\n Popover,\n Text,\n} from \"@kodiak-finance/orderly-ui\";\n\ntype AccountSummaryUi = {\n totalValue: number | null;\n freeCollateral: number | null;\n maxLeverage?: number | null;\n currentLeverage: number | null;\n unrealized_pnl_ROI: number | null;\n unrealPnL: number | null;\n visible?: boolean;\n onToggleVisibility?: () => void;\n // type: AccountSummaryType;\n keys: AccountSummaryList;\n elementKeys: AccountSummaryList;\n onToggleItemByKey: (key: string) => void;\n onKeyToTop: (key: string) => void;\n};\n\n//----------------- TotalValue -----------------\nconst TotalValue: FC<{\n totalValue: number | null;\n visible?: boolean;\n onToggleVisibility?: () => void;\n visibleAvailable?: boolean;\n}> = (props) => {\n const {\n totalValue = 0,\n visible = true,\n onToggleVisibility,\n visibleAvailable = true,\n } = props;\n const { t } = useTranslation();\n\n return (\n <Flex\n direction={\"column\"}\n gap={0}\n className=\"oui-text-2xs\"\n itemAlign={\"start\"}\n >\n <Flex gap={1} itemAlign={\"center\"}>\n <Text intensity={54} className=\"oui-whitespace-nowrap\">\n {t(\"common.totalValue\")}\n </Text>\n {visibleAvailable && (\n <button onClick={() => onToggleVisibility?.()}>\n {visible ? (\n <EyeIcon\n size={12}\n className=\"oui-text-primary-light\"\n opacity={1}\n />\n ) : (\n <EyeCloseIcon\n size={12}\n className=\"oui-text-primary-light\"\n opacity={1}\n />\n )}\n </button>\n )}\n\n <Text intensity={54}>≈</Text>\n </Flex>\n <Text.numeral\n visible={props.visible}\n unit=\"USDC\"\n unitClassName=\"oui-text-base-contrast-20 oui-ml-1\"\n as=\"div\"\n >\n {totalValue ?? \"-\"}\n </Text.numeral>\n </Flex>\n );\n};\n\n//----------------- FreeCollateral -----------------\nconst FreeCollateral: FC<{\n freeCollateral?: number | null;\n visible?: boolean;\n onToggleVisibility?: () => void;\n visibleAvailable?: boolean;\n}> = (props) => {\n const {\n freeCollateral,\n visible,\n onToggleVisibility,\n visibleAvailable = true,\n } = props;\n const { t } = useTranslation();\n\n return (\n <Flex\n direction={\"column\"}\n gap={0}\n className=\"oui-text-2xs\"\n itemAlign={\"start\"}\n >\n <Flex gap={1} itemAlign={\"center\"}>\n <Text intensity={54} className=\"oui-whitespace-nowrap\">\n {t(\"trading.asset.freeCollateral\")}\n </Text>\n {visibleAvailable && (\n <button onClick={() => onToggleVisibility?.()}>\n {visible ? (\n <EyeIcon\n size={12}\n className=\"oui-text-primary-light\"\n opacity={1}\n />\n ) : (\n <EyeCloseIcon\n size={12}\n className=\"oui-text-primary-light\"\n opacity={1}\n />\n )}\n </button>\n )}\n </Flex>\n {/* <Box>\n <Text intensity={54} className=\"oui-whitespace-nowrap\">\n Free collateral\n </Text>\n </Box> */}\n <Text.numeral\n unit=\"USDC\"\n unitClassName=\"oui-text-base-contrast-20 oui-ml-1\"\n visible={visible}\n as=\"div\"\n >\n {freeCollateral ?? \"-\"}\n </Text.numeral>\n </Flex>\n );\n};\n\n//----------------- CurrentLeverage -----------------\nconst CurrentLeverage: FC<{\n currentLeverage: number | null;\n}> = (props) => {\n const { currentLeverage } = props;\n const { t } = useTranslation();\n\n return (\n <Flex\n direction={\"column\"}\n gap={0}\n className=\"oui-text-2xs\"\n itemAlign={\"start\"}\n >\n <Box>\n <Text intensity={54} className=\"oui-whitespace-nowrap\">\n {t(\"leverage.currentLeverage\")}\n </Text>\n </Box>\n <Text.numeral as={\"div\"} unit=\"x\">\n {currentLeverage ?? 0}\n </Text.numeral>\n </Flex>\n );\n};\n\n//----------------- UnrealPnL -----------------\nconst UnrealPnL: FC<{\n unrealized_pnl_ROI: number | null;\n unrealPnL: number | null;\n visible?: boolean;\n onToggleVisibility?: () => void;\n visibleAvailable?: boolean;\n}> = (props) => {\n const { visible, onToggleVisibility, visibleAvailable = true } = props;\n const { t } = useTranslation();\n\n return (\n <Flex\n direction={\"column\"}\n gap={0}\n className=\"oui-text-2xs\"\n itemAlign={\"start\"}\n >\n <Flex gap={1} itemAlign={\"center\"}>\n <Text intensity={54} className=\"oui-whitespace-nowrap\">\n {t(\"common.unrealizedPnl\")}\n </Text>\n {visibleAvailable && (\n <button onClick={() => onToggleVisibility?.()}>\n {visible ? (\n <EyeIcon\n size={12}\n className=\"oui-text-primary-light\"\n opacity={1}\n />\n ) : (\n <EyeCloseIcon\n size={12}\n className=\"oui-text-primary-light\"\n opacity={1}\n />\n )}\n </button>\n )}\n </Flex>\n <Text.numeral\n as={\"div\"}\n coloring\n showIdentifier\n weight={\"semibold\"}\n visible={visible}\n suffix={\n <Text.numeral coloring prefix={\"(\"} suffix={\")\"} rule={\"percentages\"}>\n {props.unrealized_pnl_ROI ?? \"-\"}\n </Text.numeral>\n }\n >\n {props.unrealPnL ?? \"-\"}\n </Text.numeral>\n </Flex>\n );\n};\n\n//----------------- AccountInfoPopover -----------------\nconst AccountInfoPopover = (props: {\n totalValue: number | null;\n freeCollateral: number | null;\n // maxLeverage?: number | null;\n currentLeverage: number | null;\n unrealPnL: number | null;\n unrealized_pnl_ROI: number | null;\n // type: AccountSummaryType;\n keys: AccountSummaryList;\n elementKeys: AccountSummaryList;\n onToggleItemByKey: (key: string) => void;\n visible?: boolean;\n onKeyToTop: (key: string) => void;\n}) => {\n const { totalValue, keys, elementKeys } = props;\n const { t } = useTranslation();\n\n const onSetToTop = (key: SummaryKey) => (event: React.MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n props.onKeyToTop(key);\n };\n\n const elements = elementKeys.map((key) => {\n switch (key) {\n case \"totalValue\":\n return (\n <DropdownMenu onSetTop={onSetToTop(\"totalValue\")} key={key}>\n <Flex className={\"oui-text-base-contrast-54\"} gapX={2}>\n <IdentityButton\n active={keys.includes(\"totalValue\")}\n onClick={() => props.onToggleItemByKey(\"totalValue\")}\n />\n <span>{t(\"common.totalValue\")}</span>\n </Flex>\n <Text.numeral\n visible={props.visible}\n unit=\"USDC\"\n className=\"group-hover:-oui-translate-x-5 oui-transition-transform\"\n unitClassName={\"oui-text-base-contrast-36 oui-ml-1\"}\n >\n {totalValue ?? \"-\"}\n </Text.numeral>\n </DropdownMenu>\n );\n case \"freeCollateral\":\n return (\n <DropdownMenu onSetTop={onSetToTop(\"freeCollateral\")} key={key}>\n <Flex className={\"oui-text-base-contrast-54\"} gapX={2}>\n <IdentityButton\n active={keys.includes(\"freeCollateral\")}\n onClick={() => props.onToggleItemByKey(\"freeCollateral\")}\n />\n <span>{t(\"trading.asset.freeCollateral\")}</span>\n </Flex>\n <Text.numeral\n unit=\"USDC\"\n visible={props.visible}\n className=\"group-hover:-oui-translate-x-5 oui-transition-transform\"\n unitClassName={\"oui-text-base-contrast-36 oui-ml-1\"}\n >\n {props.freeCollateral ?? \"-\"}\n </Text.numeral>\n </DropdownMenu>\n );\n case \"unrealPnL\":\n return (\n <DropdownMenu onSetTop={onSetToTop(\"unrealPnL\")} key={key}>\n <Flex className={\"oui-text-base-contrast-54\"} gapX={2}>\n <IdentityButton\n active={keys.includes(\"unrealPnL\")}\n onClick={() => props.onToggleItemByKey(\"unrealPnL\")}\n />\n <span>{t(\"common.unrealizedPnl\")}</span>\n </Flex>\n <Text.pnl\n coloring\n showIdentifier\n visible={props.visible}\n className=\"group-hover:-oui-translate-x-5 oui-transition-transform\"\n suffix={\n <Text.roi\n coloring\n prefix={\"(\"}\n visible={props.visible}\n suffix={\")\"}\n rule={\"percentages\"}\n >\n {props.unrealized_pnl_ROI ?? \"-\"}\n </Text.roi>\n }\n >\n {props.unrealPnL ?? \"-\"}\n </Text.pnl>\n </DropdownMenu>\n );\n case \"currentLeverage\":\n return (\n <DropdownMenu onSetTop={onSetToTop(\"currentLeverage\")} key={key}>\n <Flex className={\"oui-text-base-contrast-54\"} gapX={2}>\n <IdentityButton\n active={keys.includes(\"currentLeverage\")}\n onClick={() => props.onToggleItemByKey(\"currentLeverage\")}\n />\n <span>{t(\"leverage.currentLeverage\")}</span>\n </Flex>\n <Text.numeral\n className=\"group-hover:-oui-translate-x-5 oui-transition-transform\"\n unit=\"x\"\n >\n {props.currentLeverage ?? \"-\"}\n </Text.numeral>\n </DropdownMenu>\n );\n\n default:\n return null;\n }\n });\n\n return (\n <Flex\n className={\"oui-text-2xs oui-font-semibold\"}\n direction={\"column\"}\n gapY={1}\n >\n {elements}\n </Flex>\n );\n};\n\nconst DropdownMenu: FC<\n PropsWithChildren<{\n onSetTop: (event: React.MouseEvent) => void;\n }>\n> = (props) => {\n return (\n <div className=\"oui-group oui-relative oui-w-full oui-rounded oui-px-[6px] oui-py-1 hover:oui-bg-base-6\">\n <Flex justify={\"between\"} width={\"100%\"}>\n {props.children}\n </Flex>\n <button\n className=\"oui-absolute oui-right-1 oui-top-1\"\n onClick={props.onSetTop}\n >\n <svg\n className=\"oui-translate-x-3 oui-cursor-pointer oui-opacity-0 oui-transition-all group-hover:oui-translate-x-0 group-hover:oui-opacity-100 oui-group/icon\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <rect\n width=\"16\"\n height=\"16\"\n rx=\"2\"\n // fill=\"rgb(var(--oui-color-primary-darken))\"\n className=\"oui-fill-primary-darken\"\n />\n <path\n // fill=\"rgb(var(--oui-color-primary-contrast))\"\n className=\"oui-fill-primary-contrast/50 group-hover/icon:oui-fill-primary-contrast\"\n d=\"M3.507 3.999a.5.5 0 1 0 0 1h9a.5.5 0 0 0 0-1zm4 8.006a.5.5 0 0 0 1 0V7.724l1.5 1.484.703-.703-2.343-2.36a.515.515 0 0 0-.72 0l-2.343 2.36.703.703 1.5-1.484z\"\n />\n </svg>\n </button>\n </div>\n );\n};\n\nconst IdentityButton = (props: {\n active: boolean;\n onClick: React.MouseEventHandler;\n}) => {\n return (\n <button onClick={props.onClick}>\n {props.active ? (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n >\n <path\n d=\"M7.506.977a.56.56 0 0 0-.365.16C6.367 1.88 6.13 2.5 6.413 3.348c-.661.506-1.078.63-1.903.63-1.127 0-1.863.137-2.364.637v.016a1.187 1.187 0 0 0 0 1.686l1.4 1.411-2.385 2.385a.513.513 0 0 0-.015.717.514.514 0 0 0 .719 0l2.394-2.395 1.403 1.396a1.19 1.19 0 0 0 1.687 0h.016c.501-.5.64-1.142.64-2.358 0-.773.16-1.319.64-1.893.924.271 1.462.012 2.22-.746a.5.5 0 0 0 .14-.36c0-.175-.044-.445-.156-.78a4 4 0 0 0-.984-1.577 4 4 0 0 0-1.578-.984C7.95 1.02 7.682.977 7.506.977\"\n fill=\"currentcolor\"\n className={\"oui-text-primary-light\"}\n />\n </svg>\n ) : (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n >\n <path\n d=\"M7.506.977a.56.56 0 0 0-.365.16C6.367 1.88 6.13 2.5 6.413 3.348c-.661.506-1.078.63-1.903.63-1.127 0-1.863.137-2.364.637v.016a1.187 1.187 0 0 0 0 1.686l1.4 1.411-2.385 2.385a.513.513 0 0 0-.015.717.514.514 0 0 0 .719 0l2.394-2.395 1.403 1.396a1.19 1.19 0 0 0 1.687 0h.016c.501-.5.64-1.142.64-2.358 0-.773.16-1.319.64-1.893.924.271 1.462.012 2.22-.746a.5.5 0 0 0 .14-.36c0-.175-.044-.445-.156-.78a4 4 0 0 0-.984-1.577 4 4 0 0 0-1.578-.984C7.95 1.02 7.682.977 7.506.977m.193 1.027c.531.098 1.066.45 1.447.83.381.382.706.848.84 1.459-.477.458-.77.494-1.247.243a.5.5 0 0 0-.583.087c-.91.91-1.15 1.736-1.15 2.85 0 .97-.057 1.33-.36 1.655-.085.092-.203.078-.281 0L2.849 5.615a.18.18 0 0 1-.012-.255c.178-.217.576-.386 1.669-.386 1.306.001 2-.335 2.859-1.14a.5.5 0 0 0 .094-.578c-.257-.513-.217-.784.24-1.252\"\n fill=\"currentcolor\"\n />\n </svg>\n )}\n </button>\n );\n};\n\ntype SummaryKey =\n | \"totalValue\"\n | \"freeCollateral\"\n | \"unrealPnL\"\n | \"currentLeverage\";\n\nexport type AccountSummaryList = Array<SummaryKey>;\nconst AccountSummaryItems: Record<SummaryKey, JSX.ElementType> = {\n totalValue: TotalValue,\n freeCollateral: FreeCollateral,\n unrealPnL: UnrealPnL,\n currentLeverage: CurrentLeverage,\n};\n\nexport const AccountSummary: React.FC<AccountSummaryUi> = (props) => {\n const { keys, ...rest } = props;\n let canToggleIndex = 0;\n const sizeRef = React.useRef(0);\n\n useEffect(() => {\n const resizeObserver = new ResizeObserver((entries) => {\n if (Array.isArray(entries) && entries.length > 0) {\n const width = entries[0].contentRect.width;\n if (width > 1556) {\n sizeRef.current = 5;\n } else if (width > 1480) {\n sizeRef.current = 4;\n } else if (width > 1366) {\n sizeRef.current = 3;\n } else if (width > 1280) {\n sizeRef.current = 2;\n } else if (width > 1180) {\n sizeRef.current = 1;\n } else {\n sizeRef.current = 0;\n }\n }\n });\n\n resizeObserver.observe(document.body);\n\n return () => {\n resizeObserver.disconnect();\n };\n }, []);\n\n const elements = keys.slice(0, sizeRef.current).map((key, index) => {\n switch (key) {\n case \"freeCollateral\": {\n return (\n <FreeCollateral\n freeCollateral={props.freeCollateral}\n visible={props.visible}\n onToggleVisibility={props.onToggleVisibility}\n visibleAvailable={index === canToggleIndex}\n />\n );\n }\n\n case \"unrealPnL\":\n return (\n <UnrealPnL\n unrealPnL={props.unrealPnL}\n unrealized_pnl_ROI={props.unrealized_pnl_ROI}\n visible={props.visible}\n onToggleVisibility={props.onToggleVisibility}\n visibleAvailable={index === canToggleIndex}\n />\n );\n case \"currentLeverage\": {\n canToggleIndex++;\n return <CurrentLeverage currentLeverage={props.currentLeverage} />;\n }\n case \"totalValue\":\n default:\n return (\n <TotalValue\n totalValue={props.totalValue}\n onToggleVisibility={props.onToggleVisibility}\n visible={props.visible}\n visibleAvailable={index === canToggleIndex}\n />\n );\n }\n });\n\n return (\n <div className=\"oui-flex oui-items-center oui-gap-6\">\n <Items elements={elements} />\n <Popover\n content={\n <AccountInfoPopover\n totalValue={rest.totalValue}\n freeCollateral={props.freeCollateral}\n currentLeverage={props.currentLeverage}\n unrealized_pnl_ROI={props.unrealized_pnl_ROI}\n unrealPnL={props.unrealPnL}\n keys={keys}\n elementKeys={props.elementKeys}\n onToggleItemByKey={props.onToggleItemByKey}\n onKeyToTop={props.onKeyToTop}\n visible={props.visible}\n />\n }\n contentProps={{\n onOpenAutoFocus: (event) => event.preventDefault(),\n sideOffset: 12,\n className: \"oui-p-1\",\n }}\n arrow\n >\n <div className=\"oui-cursor-pointer oui-group\">\n <Dot />\n </div>\n </Popover>\n </div>\n );\n};\n\nconst Items: FC<{\n elements: JSX.Element[];\n}> = (props) => {\n return (\n <div className=\"oui-flex oui-gap-6\">\n {props.elements.map((Element, index) => (\n <div key={index}>{Element}</div>\n ))}\n </div>\n );\n};\n\nconst Dot = () => {\n return (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"oui-fill-base-contrast-36 hover:oui-fill-primary-light group-data-[state=open]:oui-fill-primary-light\"\n >\n <path d=\"M10.007 8.335a1.666 1.666 0 1 1 0 3.333 1.666 1.666 0 0 1 0-3.333m-5.84 0a1.666 1.666 0 1 1 0 3.333 1.666 1.666 0 0 1 0-3.333m11.666 0a1.666 1.666 0 1 1 0 3.333 1.666 1.666 0 0 1 0-3.333\" />\n </svg>\n );\n};\n","import { useState } from \"react\";\nimport {\n useLeverage,\n useLocalStorage,\n useMarginRatio,\n usePositionStream,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { useCollateral, useAccount } from \"@kodiak-finance/orderly-hooks\";\nimport { useAppContext } from \"@kodiak-finance/orderly-react-app\";\nimport { AccountStatusEnum } from \"@kodiak-finance/orderly-types\";\n\nexport type AccountSummaryType =\n | \"totalValue\"\n | \"freeCollateral\"\n | \"unrealPnL\"\n | \"currentLeverage\"\n | \"maxLeverage\";\n\nexport const useTotalValueBuilderScript = () => {\n const [keys, setKeys] = useLocalStorage<string[]>(\"accountSummaryTypes\", [\n \"totalValue\",\n ]);\n\n const [elementKeys, setElementKeys] = useState<string[]>([\n \"totalValue\",\n \"freeCollateral\",\n \"unrealPnL\",\n \"currentLeverage\",\n \"maxLeverage\",\n ]);\n\n const { freeCollateral, totalValue } = useCollateral({ dp: 2 });\n\n const { state } = useAccount();\n\n const [visible, setVisible] = useLocalStorage(\"orderly_assets_visible\", true);\n\n const [{ aggregated, totalUnrealizedROI }] = usePositionStream();\n const { wrongNetwork, disabledConnect } = useAppContext();\n\n const { currentLeverage } = useMarginRatio();\n\n const { maxLeverage } = useLeverage();\n\n const onToggleItemByKey = (key: string) => {\n if (keys.includes(key)) {\n setKeys(keys.filter((k: string) => k !== key));\n } else {\n setKeys([...keys, key]);\n }\n };\n\n const onKeyToTop = (key: string) => {\n if (!keys.includes(key)) {\n setKeys([key, ...keys]);\n setElementKeys([key, ...elementKeys.filter((k: string) => k !== key)]);\n return;\n }\n\n setKeys([key, ...keys.filter((k: string) => k !== key)]);\n setElementKeys([key, ...elementKeys.filter((k: string) => k !== key)]);\n };\n\n const unavailable =\n wrongNetwork ||\n disabledConnect ||\n (state.status < AccountStatusEnum.EnableTrading &&\n state.status !== AccountStatusEnum.EnableTradingWithoutConnected);\n\n return {\n totalValue: unavailable ? null : totalValue,\n freeCollateral: unavailable ? null : freeCollateral,\n maxLeverage: unavailable ? null : maxLeverage,\n currentLeverage: unavailable ? null : currentLeverage,\n unrealPnL: unavailable ? null : aggregated?.total_unreal_pnl,\n unrealized_pnl_ROI: unavailable ? null : totalUnrealizedROI,\n // type,\n keys,\n elementKeys,\n // onTypeChange,\n visible,\n wrongNetwork,\n onToggleItemByKey,\n onKeyToTop,\n onToggleVisibility: () => setVisible(!visible),\n };\n};\n\nexport type UseTotalValueBuilderScript = ReturnType<\n typeof useTotalValueBuilderScript\n>;\n","import React from \"react\";\nimport { AccountSummary } from \"./accountSummary.ui\";\nimport type { AccountSummaryList } from \"./accountSummary.ui\";\nimport { useTotalValueBuilderScript } from \"./useWidgetBuilder.script\";\n\nexport const AccountSummaryWidget: React.FC = () => {\n const state = useTotalValueBuilderScript();\n return (\n <AccountSummary\n {...state}\n elementKeys={state.elementKeys as AccountSummaryList}\n />\n );\n};\n","import { FC, useMemo, useState } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { API } from \"@kodiak-finance/orderly-types\";\nimport {\n BellIcon,\n DialogHeader,\n DialogBody,\n DialogContent,\n Dialog,\n Popover,\n Divider,\n DialogTitle,\n TooltipProvider,\n TooltipRoot,\n TooltipTrigger,\n TooltipContent,\n} from \"@kodiak-finance/orderly-ui\";\nimport { AnnouncementCenterUI } from \"@kodiak-finance/orderly-ui-notification\";\nimport { useScaffoldContext } from \"../scaffold\";\n\n/**\n * Notify bell with Popover (click) + Tooltip (hover) coexisting.\n * - We control Popover open state; when Popover is open, we disable Tooltip to prevent hover/click conflicts.\n * - Both triggers use `asChild` and stack on the same real DOM element to avoid extra wrappers.\n */\nexport const MessageCenter: FC<{\n maintenanceDialogInfo?: string;\n messages: API.AnnouncementRow[];\n showAnnouncement: boolean;\n closeTips: () => void;\n}> = (props) => {\n const { maintenanceDialogInfo, messages, showAnnouncement, closeTips } =\n props;\n const { routerAdapter } = useScaffoldContext();\n const { t } = useTranslation();\n const messageSize = useMemo(() => messages.length, [messages]);\n // Track Popover open to suppress Tooltip while the popover is visible\n const [popoverOpen, setPopoverOpen] = useState(false);\n\n const onItemClick = (url: string) => {\n if (!url) return;\n routerAdapter?.onRouteChange({\n href: url,\n name: url,\n target: \"_blank\",\n });\n };\n\n return (\n <>\n {!!maintenanceDialogInfo && (\n <Dialog open>\n <DialogContent\n closable={false}\n onOpenAutoFocus={(event) => event.preventDefault()}\n className=\"oui-w-[320px] lg:oui-w-auto\"\n >\n <DialogHeader>\n <DialogTitle>{t(\"maintenance.dialog.title\")}</DialogTitle>\n </DialogHeader>\n <Divider />\n <DialogBody className=\"oui-text-2xs lg:oui-text-xs\">\n {maintenanceDialogInfo}\n </DialogBody>\n </DialogContent>\n </Dialog>\n )}\n <TooltipProvider delayDuration={250}>\n {/* When the Popover is open, force Tooltip closed to avoid dual overlays */}\n <TooltipRoot open={popoverOpen ? false : undefined}>\n <Popover\n open={popoverOpen}\n onOpenChange={(open) => {\n setPopoverOpen(open);\n if (open) {\n closeTips();\n }\n }}\n arrow\n content={\n <AnnouncementCenterUI\n dataSource={messages}\n onItemClick={onItemClick}\n />\n }\n contentProps={{\n align: \"end\",\n className: \"oui-w-[360px] oui-shadow-xl oui-p-0\",\n }}\n >\n {/* Stack TooltipTrigger and PopoverTrigger (via Popover's asChild) on the same element */}\n <TooltipTrigger asChild>\n <div className=\"oui-relative oui-flex oui-cursor-pointer oui-items-center oui-justify-center\">\n <BellIcon\n color=\"white\"\n opacity={0.8}\n size={20}\n viewBox=\"0 0 20 20\"\n className=\"hover:oui-opacity-100\"\n />\n {messageSize > 0 && showAnnouncement && (\n <div className=\"oui-absolute -oui-right-[6px] -oui-top-[6px] oui-flex oui-size-4 oui-items-center oui-justify-center oui-rounded-full oui-bg-primary-darken oui-text-[10px] oui-leading-none\">\n {messageSize}\n </div>\n )}\n </div>\n </TooltipTrigger>\n </Popover>\n <TooltipContent side=\"bottom\">\n {t(\"ui.messageCenter.tooltip\")}\n </TooltipContent>\n </TooltipRoot>\n </TooltipProvider>\n </>\n );\n};\n","import { useScaffoldContext } from \"../scaffold/scaffoldContext\";\nimport { MessageCenter } from \"./msgCenter.ui\";\n\nexport const MessageCenterWidget = () => {\n const { announcementState } = useScaffoldContext();\n\n return (\n <MessageCenter\n messages={announcementState.tips}\n maintenanceDialogInfo={announcementState.maintenanceDialogInfo}\n showAnnouncement={announcementState.showAnnouncement}\n closeTips={announcementState.closeTips}\n />\n );\n};\n","import { cn } from \"@kodiak-finance/orderly-ui\";\nimport { MainNavItem, NavItem } from \"./mainMenus/navItem\";\n\nexport type CampaignProps = {\n item: MainNavItem;\n className?: string;\n onItemClick?: (item: MainNavItem[]) => void;\n current?: string[];\n // classNames?: MainNavClassNames;\n};\n\nexport const CampaignButton = (props: CampaignProps) => {\n return (\n <>\n <NavItem\n item={props.item}\n onClick={props.onItemClick}\n classNames={{\n navItem: cn(\"oui-text-base-contrast-54 -oui-ml-2\", props.className),\n }}\n />\n </>\n );\n};\n","import React, {\n cloneElement,\n FC,\n HTMLAttributeAnchorTarget,\n PropsWithChildren,\n ReactElement,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { useAccount, useLocalStorage } from \"@kodiak-finance/orderly-hooks\";\nimport {\n ChevronDownIcon,\n PopoverContent,\n Tooltip,\n} from \"@kodiak-finance/orderly-ui\";\nimport { Flex } from \"@kodiak-finance/orderly-ui\";\nimport {\n Box,\n cn,\n PopoverAnchor,\n PopoverRoot,\n Text,\n} from \"@kodiak-finance/orderly-ui\";\n\nconst ActiveIcon: React.FC = () => (\n <svg\n width={12}\n height={12}\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n focusable={false}\n >\n <path\n d=\"M2.913 4.515a.5.5 0 0 0-.328.202.51.51 0 0 0 .14.701L5.722 7.41a.51.51 0 0 0 .562 0l2.995-1.992a.51.51 0 0 0 .14-.7.51.51 0 0 0-.701-.14L6.002 6.382 3.287 4.577a.5.5 0 0 0-.374-.062\"\n fill=\"url(#mainNavDropDownIcon)\"\n />\n <defs>\n <linearGradient\n id=\"mainNavDropDownIcon\"\n x1=\"9.502\"\n y1=\"5.994\"\n x2=\"2.502\"\n y2=\"5.994\"\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\nexport type MainNavItem = {\n id?: string;\n testid?: string;\n name: string;\n label?: string;\n href: string;\n target?: HTMLAttributeAnchorTarget;\n icon?: string | React.ReactElement;\n activeIcon?: string | React.ReactElement;\n tag?: string;\n description?: string;\n disabled?: boolean;\n children?: MainNavItem[];\n className?: string;\n asChild?: boolean;\n\n /**\n * if true, the item will be shown as a submenu in mobile\n */\n isSubMenuInMobile?: boolean;\n /**\n * if provided, the item is a submenu in mobile, and this will be the a back nav\n */\n subMenuBackNav?: {\n name: string;\n href: string;\n };\n /**\n * if true, the item will be shown as a home page in mobile\n */\n isHomePageInMobile?: boolean;\n customRender?: (option: {\n name: string;\n href: string;\n isActive?: boolean;\n }) => React.ReactNode;\n /**\n * Custom submenu renderer - provides full control over submenu content\n * Renders as a free-form component without any predefined structure\n * @returns React node to render as submenu content\n */\n customSubMenuRender?: () => React.ReactNode;\n /**\n * if true, this item will only be shown in the main account\n * @default false\n **/\n onlyInMainAccount?: boolean;\n tooltipConfig?: {\n /**\n * if true, the tooltip will be shown on first visit\n */\n showOnFirstVisit?: boolean;\n /**\n * the text to show in the tooltip\n */\n text?: string;\n };\n};\n\nconst isObject = (value: any): value is object => {\n return !!value && value.constructor === Object;\n};\n\nconst ORDERLY_NAV_BUTTON_TOOLTIP_OPEN = \"ORDERLY_NAV_BUTTON_TOOLTIP_OPEN\";\n\nexport const NavItem: FC<\n Omit<React.HTMLAttributes<HTMLButtonElement>, \"onClick\"> & {\n item: MainNavItem;\n onClick?: (item: MainNavItem[]) => void;\n // active?: boolean;\n currentPath?: string[];\n classNames?: {\n navItem?: string;\n subMenu?: string;\n };\n }\n> = (props) => {\n const { classNames, currentPath, item, onClick, ...buttonProps } = props;\n\n const { customRender, tooltipConfig, onlyInMainAccount } = item;\n\n const { isMainAccount } = useAccount();\n\n const [showButtonTooltip, setShowButtonTooltip] = useLocalStorage(\n ORDERLY_NAV_BUTTON_TOOLTIP_OPEN,\n true,\n );\n\n const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n useEffect(() => {\n if (showButtonTooltip) {\n timerRef.current = setTimeout(() => {\n setShowButtonTooltip(false);\n }, 8000);\n }\n return () => {\n if (timerRef.current) {\n clearTimeout(timerRef.current);\n }\n };\n }, [showButtonTooltip]);\n\n const isActive = useMemo(\n () => currentPath?.[0] === item.href,\n [currentPath, item.href],\n );\n\n const hasSubMenu =\n Array.isArray(item.children) ||\n typeof item.customSubMenuRender === \"function\";\n const hasCustomSubMenuRender = typeof item.customSubMenuRender === \"function\";\n\n const onClickHandler = useCallback(() => {\n if (hasSubMenu && !hasCustomSubMenuRender) {\n return;\n }\n onClick?.([item]);\n }, [hasSubMenu, hasCustomSubMenuRender, item, onClick]);\n\n const buttonRender = () => {\n if (typeof customRender === \"function\") {\n return customRender({\n name: item.name,\n href: item.href,\n isActive,\n });\n }\n const button = (\n <button\n id={item.id}\n data-testid={item.testid}\n {...buttonProps}\n disabled={item.disabled}\n data-actived={isActive}\n className={cn(\n \"oui-group oui-relative oui-h-[32px] oui-rounded oui-px-3 oui-py-1 oui-text-sm oui-text-base-contrast-36 hover:oui-bg-base-7\",\n item.className,\n classNames?.navItem,\n )}\n onClick={onClickHandler}\n >\n <span className={\"oui-flex oui-items-center\"}>\n <ItemIcon isActive={isActive} item={item} />\n <Text.gradient\n color={isActive ? \"brand\" : \"inherit\"}\n angle={45}\n className=\"oui-whitespace-nowrap oui-break-normal\"\n >\n {item.label ?? item.name}\n </Text.gradient>\n {hasSubMenu && (\n <span className={\"oui-ml-1 group-data-[open=true]:oui-rotate-180\"}>\n {isActive ? (\n <ActiveIcon />\n ) : (\n <ChevronDownIcon size={12} color={\"white\"} />\n )}\n </span>\n )}\n </span>\n <Box\n invisible={!isActive}\n position=\"absolute\"\n bottom={0}\n left={\"50%\"}\n height={\"3px\"}\n r=\"full\"\n width={\"calc(100% - 24px)\"} // oui-px-3 * 2\n gradient=\"brand\"\n angle={45}\n className=\"-oui-translate-x-1/2 \"\n />\n </button>\n );\n\n if (isObject(tooltipConfig) && tooltipConfig.showOnFirstVisit) {\n return (\n <Tooltip\n open={showButtonTooltip}\n content={tooltipConfig.text}\n className={\n \"oui-w-64 oui-max-w-64 oui-bg-base-6 oui-text-2xs oui-font-semibold\"\n }\n >\n {button}\n </Tooltip>\n );\n }\n return button;\n };\n\n if (onlyInMainAccount && !isMainAccount) {\n return null;\n }\n\n if (!hasSubMenu) {\n return buttonRender();\n }\n\n return (\n <SubMenus\n items={item.children || []}\n className={classNames?.subMenu}\n current={currentPath?.[1]}\n onItemClick={(subItem: MainNavItem) => {\n onClick?.([item, subItem]);\n }}\n customSubMenuRender={item.customSubMenuRender}\n >\n {buttonRender()}\n </SubMenus>\n );\n};\n\nconst SubMenus: React.FC<\n PropsWithChildren<{\n items: MainNavItem[];\n className?: string;\n current?: string;\n onItemClick: (item: MainNavItem) => void;\n customSubMenuRender?: () => React.ReactNode;\n }>\n> = (props) => {\n const {\n children,\n items,\n className,\n current,\n onItemClick,\n customSubMenuRender,\n } = props;\n const [open, setOpen] = useState(false);\n const timer = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const onMouseEnter = useCallback(() => {\n if (timer.current) {\n clearTimeout(timer.current);\n timer.current = null;\n }\n // setOpen(true);\n }, []);\n\n useEffect(() => {\n return () => {\n if (timer.current) {\n clearTimeout(timer.current);\n }\n };\n }, []);\n\n const classNames = (children as ReactElement).props?.className;\n\n return (\n <PopoverRoot open={open}>\n <PopoverAnchor>\n <div\n className={\"oui-group\"}\n data-open={open}\n onMouseEnter={() => {\n setOpen(true);\n }}\n onMouseLeave={() => {\n timer.current = setTimeout(() => {\n setOpen(false);\n }, 150);\n }}\n >\n {cloneElement(children as React.ReactElement<any>, {\n className: cn(classNames, open && \"oui-bg-base-7\"),\n })}\n </div>\n </PopoverAnchor>\n <PopoverContent\n align=\"start\"\n onMouseEnter={onMouseEnter}\n onMouseLeave={() => {\n setOpen(false);\n if (timer.current) {\n clearTimeout(timer.current);\n }\n }}\n className={cn(\n customSubMenuRender\n ? \"oui-w-auto oui-p-0 oui-border-0 oui-rounded-lg\"\n : \"oui-w-[200px] oui-space-y-[2px] oui-border oui-border-line-6 oui-p-1\",\n className,\n )}\n >\n {customSubMenuRender\n ? customSubMenuRender()\n : items.map((item, index) => {\n return (\n <SubMenu\n key={index}\n item={item}\n onClick={onItemClick}\n active={item.href === current}\n />\n );\n })}\n </PopoverContent>\n </PopoverRoot>\n );\n};\n\nconst SubMenu: React.FC<{\n item: MainNavItem;\n active?: boolean;\n onClick: (item: MainNavItem) => void;\n}> = (props) => {\n const { item, active, onClick } = props;\n const hasDescription = typeof item.description !== \"undefined\";\n const hasIcon = typeof item.icon !== \"undefined\" && item.icon !== null;\n return (\n <Flex\n px={2}\n py={3}\n gapX={2}\n data-active={active ?? false}\n itemAlign={hasDescription ? \"start\" : \"center\"}\n className={cn(\n \"oui-group oui-w-full oui-cursor-pointer oui-text-base-contrast-80 hover:oui-bg-base-6 data-[active=true]:oui-bg-base-5\",\n // props.active && \"oui-bg-base-5\"\n )}\n r={\"md\"}\n onClick={() => {\n onClick(item);\n }}\n data-testid={item.testid}\n >\n {hasIcon && (\n <div\n className={cn(\n \"oui-relative oui-size-6\",\n hasDescription && \"oui-translate-y-1\",\n )}\n >\n <ItemIcon isActive={active ?? false} item={item} />\n </div>\n )}\n <div className=\"oui-flex-1\">\n <SubMenuTitle item={item} isActive={active} />\n {hasDescription && (\n <Text size={\"2xs\"} as={\"div\"} intensity={36}>\n {item.description}\n </Text>\n )}\n </div>\n </Flex>\n );\n};\n\nconst SubMenuTitle: React.FC<{ item: MainNavItem; isActive?: boolean }> = (\n props,\n) => {\n const { item, isActive } = props;\n return (\n <Flex itemAlign={\"center\"} width={\"100%\"} position=\"relative\">\n <div className=\"oui-flex oui-flex-1\">\n <Text.gradient\n color={isActive ? \"brand\" : \"inherit\"}\n size={\"xs\"}\n as={\"div\"}\n intensity={80}\n weight={\"semibold\"}\n className=\"oui-whitespace-nowrap oui-break-normal\"\n >\n {item.name}\n </Text.gradient>\n {typeof item.tag !== \"undefined\" && <Tag item={item} />}\n </div>\n {/* {item.target === \"_blank\" && <OutlinkIcon />} */}\n </Flex>\n );\n};\n\nconst Tag: React.FC<{ item: MainNavItem }> = (props) => {\n return (\n <div\n className={\n \"oui-ml-1 oui-inline-flex 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-2 oui-py-1\"\n }\n >\n <Text.gradient\n color={\"brand\"}\n size={\"3xs\"}\n className=\"oui-whitespace-nowrap oui-break-normal\"\n >\n {props.item.tag}\n </Text.gradient>\n </div>\n );\n};\n\nconst ICON_CLASSNAME =\n \"oui-flex oui-border oui-border-line oui-w-6 oui-h-6 oui-rounded-md oui-justify-center oui-items-center oui-absolute oui-left-0 oui-top-0\";\n\nconst ItemIcon: React.FC<{ item: MainNavItem; isActive: boolean }> = (\n props,\n) => {\n const { isActive } = props;\n if (!props.item.icon) {\n return null;\n }\n if (typeof props.item.icon === \"string\") {\n return (\n <span className={\"oui-mr-1 oui-size-[20px]\"}>\n {\n <img\n src={\n isActive\n ? (props.item.activeIcon as string) || props.item.icon\n : props.item.icon\n }\n className={\"oui-max-h-full oui-max-w-full\"}\n />\n }\n </span>\n );\n }\n // return isActive ? props.item.activeIcon || props.item.icon : props.item.icon;\n return (\n <>\n <div\n className={cn(\n ICON_CLASSNAME,\n \"group-hover:oui-invisible group-data-[active=true]:oui-invisible\",\n )}\n >\n {props.item.icon}\n </div>\n <div\n className={cn(\n ICON_CLASSNAME,\n \"oui-invisible group-hover:oui-visible group-data-[active=true]:oui-visible\",\n )}\n >\n {props.item.activeIcon || props.item.icon}\n </div>\n </>\n );\n};\n\nconst OutlinkIcon: React.FC = () => {\n return (\n <>\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"oui-absolute oui-right-0 oui-top-0 group-hover:oui-invisible\"\n >\n <path\n d=\"M14.159 17.492a3.333 3.333 0 0 0 3.333-3.333V5.826a3.333 3.333 0 0 0-3.333-3.334H5.826a3.333 3.333 0 0 0-3.334 3.334v8.333a3.333 3.333 0 0 0 3.334 3.333zm-6.667-4.166a.85.85 0 0 1-.599-.235.86.86 0 0 1 0-1.198l3.333-3.333-1.9-1.901h5v5l-1.901-1.9L8.09 13.09a.84.84 0 0 1-.599.235\"\n fill=\"#fff\"\n fillOpacity=\".2\"\n />\n </svg>\n\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"oui-invisible oui-absolute oui-right-0 oui-top-0 group-hover:oui-visible\"\n >\n <path\n d=\"M14.159 17.492a3.333 3.333 0 0 0 3.333-3.333V5.826a3.333 3.333 0 0 0-3.333-3.334H5.826a3.333 3.333 0 0 0-3.334 3.334v8.333a3.333 3.333 0 0 0 3.334 3.333zm-6.667-4.166a.85.85 0 0 1-.599-.235.86.86 0 0 1 0-1.198l3.333-3.333-1.9-1.901h5v5l-1.901-1.9L8.09 13.09a.84.84 0 0 1-.599.235\"\n fill=\"url(#outlineIcon)\"\n />\n <defs>\n <linearGradient\n id=\"outlineIcon\"\n x1=\"17.492\"\n y1=\"9.992\"\n x2=\"2.492\"\n y2=\"9.992\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"rgb(var(--oui-gradient-brand-end))\" />\n <stop offset=\"1\" stopColor=\"rgb(var(--oui-gradient-brand-start))\" />\n </linearGradient>\n </defs>\n </svg>\n </>\n );\n};\n","import { FC } from \"react\";\nimport {\n ExtensionPositionEnum,\n ExtensionSlot,\n installExtension,\n} from \"@kodiak-finance/orderly-ui\";\nimport { MainNavMenus, type MainNavItemsProps } from \"./mainNavMenus.ui\";\n\nexport const MainNavMenusWidget: FC<MainNavItemsProps> = (props) => {\n return <MainNavMenus {...props} />;\n};\n\ninstallExtension<MainNavItemsProps>({\n name: \"default-main-nav-menus\",\n scope: [\"*\"],\n positions: [ExtensionPositionEnum.MainMenus],\n __isInternal: true,\n})((props: MainNavItemsProps) => {\n return <MainNavMenus {...props} />;\n});\n\nexport const MainNavMenusExtension: FC<MainNavItemsProps> = (props) => {\n return (\n <ExtensionSlot position={ExtensionPositionEnum.MainMenus} {...props} />\n );\n};\n","import { FC } from \"react\";\nimport { cn, Flex } from \"@kodiak-finance/orderly-ui\";\nimport { MainNavItem, NavItem } from \"./navItem\";\n\nexport type MainNavClassNames = {\n root?: string;\n navItem?: string;\n subMenu?: string;\n};\n\nexport type MainNavItemsProps = {\n items?: MainNavItem[];\n current?: string[];\n classNames?: MainNavClassNames;\n onItemClick?: (item: MainNavItem[]) => void;\n};\n\nexport const MainNavMenus: FC<MainNavItemsProps> = (props) => {\n const { items, classNames } = props;\n\n if (!Array.isArray(items) || items.length === 0) {\n return null;\n }\n\n return (\n <Flex className={cn(\"oui-gap-1\", classNames?.root)}>\n {items?.map((item, index) => (\n <NavItem\n key={index}\n item={item}\n // active={item.href === props.current?.[0]}\n currentPath={props.current}\n onClick={props.onItemClick}\n classNames={classNames}\n />\n ))}\n </Flex>\n );\n};\n","import React, { PropsWithChildren, ReactNode } from \"react\";\nimport { LeftNavProps } from \"../leftNav/leftNav.type\";\nimport { MainNavClassNames } from \"./mainMenus/mainNavMenus.ui\";\nimport { MainNavItem } from \"./mainMenus/navItem\";\nimport { CampaignPositionEnum, useMainNavScript } from \"./mainNav.script\";\nimport { MainNav } from \"./mainNav.ui\";\n\nexport type MainNavWidgetProps = {\n leading?: ReactNode;\n trailing?: ReactNode;\n logo?: {\n src: string;\n alt: string;\n };\n mainMenus?: MainNavItem[];\n /** @deprecated use mainMenus instead */\n campaigns?: MainNavItem;\n /** @deprecated use mainMenus instead */\n campaignPosition?: CampaignPositionEnum;\n /**\n * initial menu path, if it has submenus, use array\n * @type string | string[]\n */\n initialMenu?: string | string[];\n\n onItemClick?: (options: {\n href: string;\n name: string;\n scope?: string;\n }) => void;\n\n /** only works on mobile */\n leftNav?: LeftNavProps;\n customLeftNav?: ReactNode;\n className?: string;\n classNames?: {\n root?: string;\n mainNav?: MainNavClassNames;\n // subNav?: string;\n logo?: string;\n account?: string;\n chains?: string;\n campaignButton?: string;\n };\n\n /** custom render main nav */\n customRender?: (components: {\n /** Logo or title component (desktop & mobile) */\n title?: ReactNode;\n /** Language selection component (desktop & mobile) */\n languageSwitcher?: ReactNode;\n /** Sub-account component (desktop & mobile) */\n subAccount?: ReactNode;\n /** Device linking component (desktop & mobile) */\n linkDevice?: ReactNode;\n /** Chain selection menu (desktop & mobile) */\n chainMenu?: ReactNode;\n /** Wallet connection component (desktop & mobile) */\n walletConnect?: ReactNode;\n\n notify?: ReactNode;\n\n /** Main navigation menu (desktop & mobile) */\n mainNav?: ReactNode;\n /** Account summary component (desktop only) */\n accountSummary?: ReactNode;\n\n /** Left navigation component (mobile only) */\n leftNav?: ReactNode;\n /** QR code scanner component (mobile only) */\n scanQRCode?: ReactNode;\n }) => ReactNode;\n};\n\nexport const MainNavWidget: React.FC<PropsWithChildren<MainNavWidgetProps>> = (\n props,\n) => {\n const { children, classNames, ...rest } = props;\n const state = useMainNavScript(rest);\n return (\n <MainNav classNames={classNames} {...state}>\n {children}\n </MainNav>\n );\n};\n","export { AccountMenuWidget } from \"./components/accountMenu\";\nexport {\n MainNavWidget,\n type MainNavWidgetProps,\n} from \"./components/main/mainNav.widget\";\nexport { MainNavMobile } from \"./components/main/mainNav.ui.mobile\";\nexport { type MainNavItem } from \"./components/main/mainMenus/navItem\";\nexport {\n BottomNavWidget,\n BottomNav,\n type BottomNavProps,\n} from \"./components/bottomNav\";\nexport { AccountSummaryWidget } from \"./components/accountSummary\";\nexport { ChainMenuWidget, ChainMenu } from \"./components/chainMenu\";\nexport { SideNavbarWidget, SideBar } from \"./components/sidebar\";\nexport { CampaignPositionEnum } from \"./components/main/mainNav.script\";\n\nexport * from \"./components/subAccount\";\n\nexport * from \"./components/footer\";\nexport * from \"./components/maintenanceTips\";\n\nexport * from \"./components/restrictedInfo\";\n\nexport type { SideBarProps, SideMenuItem } from \"./components/sidebar\";\n\n// ----------------- Main layout component -----------------\nexport {\n Scaffold,\n type ScaffoldProps,\n useScaffoldContext,\n ScaffoldContext,\n} from \"./components/scaffold\";\n\nexport { MainLogo } from \"./components/main/mainLogo\";\nexport * from \"./components/languageSwitcher\";\nexport * from \"./components/scanQRCode\";\nexport * from \"./components/leftNav\";\n","import {\n Box,\n cn,\n Dialog,\n DialogBody,\n DialogContent,\n DialogHeader,\n DialogTitle,\n Divider,\n Flex,\n} from \"@kodiak-finance/orderly-ui\";\nimport { CloseIcon, InfoIcon } from \"../icons\";\nimport { MaintenanceTipInterface } from \"./script\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\n\nexport const MaintenanceTipsUI = (props: MaintenanceTipInterface) => {\n const { showTips, showDialog, tipsContent, closeTips, dialogContent } = props;\n const { t } = useTranslation();\n\n if (showDialog) {\n return (\n <Dialog open={true}>\n <DialogContent\n closable={false}\n onOpenAutoFocus={(event) => event.preventDefault()}\n className=\"oui-w-[320px] md:oui-w-auto\"\n >\n <DialogHeader>\n <DialogTitle>{t(\"maintenance.dialog.title\")}</DialogTitle>\n </DialogHeader>\n <Divider />\n <DialogBody className=\"oui-text-2xs md:oui-text-xs\">\n {dialogContent}\n </DialogBody>\n </DialogContent>\n </Dialog>\n );\n }\n if (!showTips) {\n return <></>;\n }\n return (\n <Flex\n className={cn(\n \"oui-bg-warning-darken/10 oui-text-warning-darken oui-text-2xs md:oui-text-sm oui-relative oui-gap-1\",\n \"oui-mx-1 md:oui-mx-0 md:oui-w-full oui-pl-2 md:oui-pl-4 oui-pr-9 md:oui-pr-[60px] oui-py-2 md:oui-py-3\",\n \"oui-leading-4\",\n \"oui-rounded-xl md:oui-rounded-none\",\n \"oui-min-h-[48px]\",\n \"oui-justify-start oui-items-start\",\n \"xl:oui-justify-center xl:oui-items-center xl:oui-px-4\"\n )}\n >\n <div className=\"oui-flex oui-items-start oui-justify-start oui-gap-1 \">\n <InfoIcon\n size={20}\n className=\"oui-flex-shrink-0 oui-w-4 md:oui-w-5 oui-h-4 md:oui-h-5 \"\n />\n <Box className=\"oui-font-semibold oui-leading-4\">{tipsContent}</Box>\n </div>\n <CloseIcon\n size={16}\n className=\"oui-absolute oui-right-2 md:oui-right-4 oui-text-secondary/[0.36] hover:oui-text-secondary/80 oui-cursor-pointer -oui-translate-y-2/4 oui-top-2/4\"\n onClick={closeTips}\n />\n </Flex>\n );\n};\n","import { useMaintenanceStatus } from \"@kodiak-finance/orderly-hooks\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport { format } from \"date-fns\";\nimport { UTCDateMini } from \"@date-fns/utc\";\nimport { getTimestamp } from \"@kodiak-finance/orderly-utils\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\n\nfunction getTimeString(timestamp: number) {\n const date = format(new UTCDateMini(timestamp), \"MMM dd\");\n const time = format(new UTCDateMini(timestamp), \"h:mm aa\");\n return `${time} (UTC) on ${date}`;\n}\n\nconst oneDay = 1000 * 60 * 60 * 24;\n\nexport interface MaintenanceTipInterface {\n tipsContent: string;\n showTips: boolean;\n closeTips: () => void;\n showDialog: boolean;\n dialogContent?: string;\n}\n\nexport const useMaintenanceScript = (): MaintenanceTipInterface => {\n const { t } = useTranslation();\n const [showTips, setShowTips] = useState(false);\n const [showDialog, setShowDialog] = useState(false);\n const { startTime, endTime, status, brokerName } = useMaintenanceStatus();\n const startDate = useMemo(() => {\n if (!startTime) {\n return \"-\";\n }\n return getTimeString(startTime);\n }, [startTime]);\n\n const endDate = useMemo(() => {\n if (!endTime) {\n return \"-\";\n }\n return getTimeString(endTime);\n }, [endTime]);\n\n const closeTips = () => {\n window.localStorage.setItem(`Maintenance_${startTime}`, \"1\");\n setShowTips(false);\n };\n\n useEffect(() => {\n console.log(\"-- start time\", {\n startTime,\n status,\n });\n if (status === 2) {\n setShowTips(false);\n setShowDialog(true);\n return;\n }\n setShowDialog(false);\n if (startTime) {\n if (startTime < getTimestamp() + oneDay) {\n // check localstorage\n if (!window.localStorage.getItem(`Maintenance_${startTime}`)) {\n setShowTips(true);\n }\n }\n }\n }, [startTime, status]);\n\n const tipsContent = t(\"maintenance.tips.description\", {\n brokerName,\n startDate,\n endDate,\n });\n\n const dialogContent = t(\"maintenance.dialog.description\", {\n brokerName,\n endDate,\n });\n\n return {\n tipsContent,\n showTips,\n closeTips,\n showDialog,\n dialogContent,\n };\n};\n","import { MaintenanceTipsUI } from \"./ui\";\nimport { useMaintenanceScript } from \"./script\";\n\nexport const MaintenanceTipsWidget = () => {\n const props = useMaintenanceScript();\n return <MaintenanceTipsUI {...props} />;\n};\n"]}
1
+ {"version":3,"sources":["../src/components/icons/communtiyIcons.tsx","../src/components/icons/orderlyNetworkTextIcon.tsx","../src/components/icons/signal.tsx","../src/components/icons/infoIcon.tsx","../src/components/icons/closeIcon.tsx","../src/components/icons/orderlyLogo.tsx","../src/components/icons/index.ts","../src/components/restrictedInfo/restrictedInfo.ui.tsx","../src/components/restrictedInfo/restrictedInfo.script.tsx","../src/components/restrictedInfo/restrictedInfo.widget.tsx","../src/components/restrictedInfo/index.ts","../src/components/bottomNav/bottomNav.ui.mobile.tsx","../src/components/bottomNav/bottomNav.widget.tsx","../src/components/bottomNav/tradingMenu.ui.tsx","../src/components/bottomNav/index.ts","../src/components/accountMenu/menu.widget.tsx","../src/components/accountMenu/menu.ui.tsx","../src/components/accountMenu/useWidgetBuilder.script.tsx","../src/components/main/mainNav.script.ts","../src/components/scaffold/scaffold.mobile.ui.tsx","../src/components/main/mainNav.ui.mobile.tsx","../src/components/chainMenu/chainMenu.widget.tsx","../src/components/chainMenu/chainMenu.script.ts","../src/components/chainMenu/chainMenu.ui.tsx","../src/components/chainMenu/chainMenu.ui.mobile.tsx","../src/components/languageSwitcher/languageSwitcher.script.ts","../src/components/languageSwitcher/languageSwitcher.ui.tsx","../src/components/languageSwitcher/widget.tsx","../src/components/leftNav/leftNav.script.ts","../src/components/leftNav/leftNav.ui.tsx","../src/components/main/mainLogo.tsx","../src/components/subAccount/subAccount.script.ts","../src/components/subAccount/useAccountValue.tsx","../src/components/subAccount/subAccount.ui.tsx","../src/components/subAccount/components/accountItem.tsx","../src/components/subAccount/icons.tsx","../src/components/subAccount/components/createSubAccountModal.tsx","../src/components/subAccount/components/common.tsx","../src/components/subAccount/components/editNickNameModal.tsx","../src/components/subAccount/subAccount.widget.tsx","../src/components/leftNav/communityIcon.tsx","../src/components/leftNav/leftNav.widget.tsx","../src/components/scanQRCode/scanQRCode.script.ts","../src/components/scanQRCode/scanQRCode.ui.tsx","../src/components/scanQRCode/scanner.tsx","../src/components/scanQRCode/scanQRCode.widget.tsx","../src/components/main/linkDevice/widget.tsx","../src/components/main/linkDevice/linkDevice.script.tsx","../src/components/main/linkDevice/linkDevice.ui.tsx","../src/components/main/linkDevice/linkDevice.ui.mobile.tsx","../src/components/scaffold/scaffoldContext.ts","../src/components/notification/notification.ui.tsx","../src/components/notification/notification.widget.tsx","../src/components/scaffold/scaffold.script.ts","../src/components/scaffold/scaffold.ui.tsx","../src/components/footer/footer.ui.tsx","../src/components/footer/footer.script.tsx","../src/components/footer/footer.widget.tsx","../src/components/sidebar/sidebar.ui.tsx","../src/components/sidebar/useSideNavBuilder.script.tsx","../src/components/sidebar/sidebar.widget.tsx","../src/components/scaffold/scaffoldProvider.tsx","../src/utils/chain.ts","../src/components/scaffold/scaffold.widget.tsx","../src/components/main/mainNav.ui.tsx","../src/components/accountSummary/accountSummary.ui.tsx","../src/components/accountSummary/useWidgetBuilder.script.ts","../src/components/accountSummary/accountSummary.widget.tsx","../src/components/messageCenter/msgCenter.ui.tsx","../src/components/messageCenter/msgCenter.widget.tsx","../src/components/main/campaignButton.tsx","../src/components/main/mainMenus/navItem.tsx","../src/components/main/mainMenus/mainNavMenus.widget.tsx","../src/components/main/mainMenus/mainNavMenus.ui.tsx","../src/components/main/mainNav.widget.tsx","../src/index.ts","../src/components/maintenanceTips/ui.tsx","../src/components/maintenanceTips/script.tsx","../src/components/maintenanceTips/widget.tsx"],"names":["jsx","React","jsxs","useTranslation","cn","Flex","SimpleDialog","useRef","useState","useConfig","useLocalStorage","useAppContext","useMemo","Text","useScreen","PopoverRoot","PopoverContent","Fragment","open","AccountStatusEnum","useAccount","useWalletConnector","Box","Button","modal","DropdownMenuContent","DropdownMenuPortal","DropdownMenuRoot","DropdownMenuTrigger","ChainSelectorDialogId","WalletConnectorModalId","ModalTitle","r","ChainIcon","toast","ChainSelectorSheetId","useCallback","Spinner","Tooltip","context","Divider","useEffect","Decimal","subAccount","holding","forwardRef","nickName","invalid","useChains","useTrack","TrackerEventName","url","Trans","CopyIcon","LinkDeviceIcon","useObserverElement","useContext","CampaignPositionEnum","item","current","Dot","Popover","PopoverAnchor","NavItem","ExtensionPositionEnum","ExtensionSlot","installExtension","Dialog","DialogBody","DialogContent","DialogHeader","DialogTitle"],"mappings":";;;;;;;;;;;AACA,OAAO,WAAW;AAkBZ,gBAAAA,YAAA;AAnBN,IAGa,uBAoBA,sBAoBA;AA3Cb;AAAA;AAAA;AAGO,IAAM,wBAAwB,MAAM,WAGzC,CAAC,OAAO,QAAQ;AAChB,YAAM,EAAE,OAAO,IAAI,GAAG,KAAK,IAAI;AAC/B,aACE,gBAAAA;AAAA,QAAC;AAAA;AAAA,UACC,OAAO;AAAA,UACP,QAAQ;AAAA,UACR,SAAQ;AAAA,UACR;AAAA,UACA,MAAK;AAAA,UACL,aAAY;AAAA,UACZ,OAAM;AAAA,UACL,GAAG;AAAA,UAEJ,0BAAAA,KAAC,UAAK,GAAE,oZAAmZ;AAAA;AAAA,MAC7Z;AAAA,IAEJ,CAAC;AACM,IAAM,uBAAuB,MAAM,WAGxC,CAAC,OAAO,QAAQ;AAChB,YAAM,EAAE,OAAO,IAAI,GAAG,KAAK,IAAI;AAC/B,aACE,gBAAAA;AAAA,QAAC;AAAA;AAAA,UACC,OAAO;AAAA,UACP,QAAQ;AAAA,UACR,SAAQ;AAAA,UACR;AAAA,UACA,MAAK;AAAA,UACL,aAAY;AAAA,UACX,GAAG;AAAA,UACJ,OAAM;AAAA,UAEN,0BAAAA,KAAC,UAAK,GAAE,u9BAAs9B;AAAA;AAAA,MACh+B;AAAA,IAEJ,CAAC;AACM,IAAM,iBAAiB,MAAM,WAGlC,CAAC,OAAO,QAAQ;AAChB,YAAM,EAAE,OAAO,IAAI,GAAG,KAAK,IAAI;AAC/B,aACE,gBAAAA;AAAA,QAAC;AAAA;AAAA,UACC,OAAO;AAAA,UACP,QAAQ;AAAA,UACR,SAAQ;AAAA,UACR;AAAA,UACA,MAAK;AAAA,UACL,aAAY;AAAA,UACZ,OAAM;AAAA,UACL,GAAG;AAAA,UAEJ,0BAAAA,KAAC,UAAK,GAAE,gKAA+J;AAAA;AAAA,MACzK;AAAA,IAEJ,CAAC;AAED,mBAAe,cAAc;AAC7B,0BAAsB,cAAc;AACpC,yBAAqB,cAAc;AAAA;AAAA;;;AClEnC,OAAOC,YAAW;AAOZ,SASE,OAAAD,OATF,QAAAE,aAAA;AAPN,IAGa;AAHb;AAAA;AAAA;AAGO,IAAM,kBAAkBD,OAAM;AAAA,MACnC,CAAC,OAAO,QAAQ;AACd,cAAM,EAAE,UAAU,GAAG,GAAG,KAAK,IAAI;AACjC,eACE,gBAAAC;AAAA,UAAC;AAAA;AAAA,YACC;AAAA,YACA,OAAM;AAAA,YACN,QAAO;AAAA,YACP,SAAQ;AAAA,YACR,MAAK;AAAA,YACL,OAAM;AAAA,YACL,GAAG;AAAA,YAEJ;AAAA,8BAAAF;AAAA,gBAAC;AAAA;AAAA,kBACC,UAAS;AAAA,kBACT,UAAS;AAAA,kBACT,GAAE;AAAA,kBACF,MAAK;AAAA,kBACL,aAAa;AAAA;AAAA,cACf;AAAA,cACA,gBAAAA;AAAA,gBAAC;AAAA;AAAA,kBACC,GAAE;AAAA,kBACF,MAAK;AAAA,kBACL,aAAa;AAAA;AAAA,cACf;AAAA;AAAA;AAAA,QACF;AAAA,MAEJ;AAAA,IACF;AAAA;AAAA;;;AC9BA,OAAOC,YAAW;AAgBV,gBAAAD,aAAA;AAjBR,IAIa;AAJb;AAAA;AAAA;AAIO,IAAM,aAAaC,OAAM;AAAA,MAC9B,CAAC,OAAO,QAAQ;AACd,cAAM,EAAE,OAAO,IAAI,GAAG,KAAK,IAAI;AAC/B,eACE,gBAAAD;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,YACP,QAAQ;AAAA,YACR,SAAQ;AAAA,YACR;AAAA,YACA,WAAU;AAAA,YACV,OAAM;AAAA,YACL,GAAG;AAAA,YAEJ,0BAAAA,MAAC,UAAK,GAAE,g+CAA+9C;AAAA;AAAA,QACz+C;AAAA,MAEJ;AAAA,IACF;AAEA,eAAW,cAAc;AAAA;AAAA;;;ACLnB,gBAAAA,aAAA;AAlBN,IAOa;AAPb;AAAA;AAAA;AAOO,IAAM,WAA0B,CAAC,UAAU;AAChD,YAAM,EAAE,OAAO,IAAI,SAAS,GAAG,KAAK,IAAI;AACxC,aACE,gBAAAA;AAAA,QAAC;AAAA;AAAA,UACC,OAAM;AAAA,UACN,OAAO,GAAG,IAAI;AAAA,UACd,QAAQ,GAAG,IAAI;AAAA,UACf,MAAK;AAAA,UACL,SAAS;AAAA,UACR,GAAG;AAAA,UAEJ,0BAAAA;AAAA,YAAC;AAAA;AAAA,cACC,GAAE;AAAA,cACF,MAAK;AAAA;AAAA,UACP;AAAA;AAAA,MACF;AAAA,IAEJ;AAAA;AAAA;;;ACPM,gBAAAA,aAAA;AAjBN,IAOa;AAPb;AAAA;AAAA;AAOO,IAAM,YAAiC,CAAC,UAAU;AACvD,YAAM,EAAE,OAAO,IAAI,GAAG,KAAK,IAAI;AAC/B,aACE,gBAAAA;AAAA,QAAC;AAAA;AAAA,UACC,OAAO,GAAG,IAAI;AAAA,UACd,QAAQ,GAAG,IAAI;AAAA,UACf,SAAQ;AAAA,UACR,OAAM;AAAA,UACL,GAAG;AAAA,UAEJ,0BAAAA;AAAA,YAAC;AAAA;AAAA,cACC,GAAE;AAAA,cACF,MAAK;AAAA;AAAA,UACP;AAAA;AAAA,MACF;AAAA,IAEJ;AAAA;AAAA;;;AClBI,SAQE,OAAAA,OARF,QAAAE,aAAA;AALJ,IAGa;AAHb;AAAA;AAAA;AAGO,IAAM,cAA2C,CAAC,UAAU;AACjE,aACE,gBAAAA;AAAA,QAAC;AAAA;AAAA,UACC,OAAM;AAAA,UACN,QAAO;AAAA,UACP,SAAQ;AAAA,UACR,MAAK;AAAA,UACL,OAAM;AAAA,UACL,GAAG;AAAA,UAEJ;AAAA,4BAAAF;AAAA,cAAC;AAAA;AAAA,gBACC,GAAE;AAAA,gBACF,MAAK;AAAA;AAAA,YACP;AAAA,YACA,gBAAAA;AAAA,cAAC;AAAA;AAAA,gBACC,GAAE;AAAA,gBACF,MAAK;AAAA;AAAA,YACP;AAAA,YACA,gBAAAA;AAAA,cAAC;AAAA;AAAA,gBACC,GAAE;AAAA,gBACF,MAAK;AAAA;AAAA,YACP;AAAA,YACA,gBAAAA;AAAA,cAAC;AAAA;AAAA,gBACC,GAAE;AAAA,gBACF,MAAK;AAAA;AAAA,YACP;AAAA,YACA,gBAAAA;AAAA,cAAC;AAAA;AAAA,gBACC,GAAE;AAAA,gBACF,MAAK;AAAA;AAAA,YACP;AAAA,YACA,gBAAAA;AAAA,cAAC;AAAA;AAAA,gBACC,GAAE;AAAA,gBACF,MAAK;AAAA;AAAA,YACP;AAAA,YACA,gBAAAA;AAAA,cAAC;AAAA;AAAA,gBACC,GAAE;AAAA,gBACF,MAAK;AAAA;AAAA,YACP;AAAA,YACA,gBAAAA;AAAA,cAAC;AAAA;AAAA,gBACC,GAAE;AAAA,gBACF,MAAK;AAAA;AAAA,YACP;AAAA,YACA,gBAAAA;AAAA,cAAC;AAAA;AAAA,gBACC,GAAE;AAAA,gBACF,MAAK;AAAA;AAAA,YACP;AAAA,YACA,gBAAAA;AAAA,cAAC;AAAA;AAAA,gBACC,GAAE;AAAA,gBACF,MAAK;AAAA;AAAA,YACP;AAAA,YACA,gBAAAA;AAAA,cAAC;AAAA;AAAA,gBACC,GAAE;AAAA,gBACF,MAAK;AAAA;AAAA,YACP;AAAA,YACA,gBAAAA;AAAA,cAAC;AAAA;AAAA,gBACC,GAAE;AAAA,gBACF,MAAK;AAAA;AAAA,YACP;AAAA,YACA,gBAAAA;AAAA,cAAC;AAAA;AAAA,gBACC,GAAE;AAAA,gBACF,MAAK;AAAA;AAAA,YACP;AAAA,YACA,gBAAAA;AAAA,cAAC;AAAA;AAAA,gBACC,UAAS;AAAA,gBACT,UAAS;AAAA,gBACT,GAAE;AAAA,gBACF,MAAK;AAAA;AAAA,YACP;AAAA,YACA,gBAAAA;AAAA,cAAC;AAAA;AAAA,gBACC,UAAS;AAAA,gBACT,UAAS;AAAA,gBACT,GAAE;AAAA,gBACF,MAAK;AAAA;AAAA,YACP;AAAA,YACA,gBAAAA;AAAA,cAAC;AAAA;AAAA,gBACC,UAAS;AAAA,gBACT,UAAS;AAAA,gBACT,GAAE;AAAA,gBACF,MAAK;AAAA;AAAA,YACP;AAAA,YACA,gBAAAA;AAAA,cAAC;AAAA;AAAA,gBACC,UAAS;AAAA,gBACT,UAAS;AAAA,gBACT,GAAE;AAAA,gBACF,MAAK;AAAA;AAAA,YACP;AAAA;AAAA;AAAA,MACF;AAAA,IAEJ;AAAA;AAAA;;;AC3FA;AAAA;AAAA;AAAA;AAKA;AACA;AACA;AACA;AACA;AAAA;AAAA;;;ACRA,SAAS,kBAAAG,wBAAsB;AAC/B,SAAS,UAAU,MAAAC,MAAI,QAAAC,QAAM,gBAAAC,qBAAoB;AAgDzC,SACE,OAAAN,OADF,QAAAE,cAAA;AAlDR,IAUa;AAVb;AAAA;AAAA;AAGA;AAOO,IAAM,iBAA0C,CAAC,UAAU;AAChE,YAAM,EAAE,YAAY,OAAO,SAAS,IAAI;AACxC,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,IAAI,MAAM,kBAAkB,CAAC;AAC7B,YAAM,EAAE,EAAE,IAAIC,iBAAe;AAG7B,UAAI,kBAAkB,cAAc,qBAAqB,QAAW;AAClE,eACE,gBAAAD;AAAA,UAACI;AAAA,UAAA;AAAA,YACC,MAAM;AAAA,YACN,OAAO,EAAE,iCAAiC;AAAA,YAC1C,MAAK;AAAA,YACL,UAAU;AAAA,YACV,SAAS;AAAA,cACP,WAAW;AAAA,gBACT,OAAO,EAAE,eAAe;AAAA,gBACxB,SAAS,MAAM;AACb,sCAAoB,IAAI;AAAA,gBAC1B;AAAA,gBACA,MAAM;AAAA,cACR;AAAA,cACA,SAAS;AAAA,gBACP,OAAO,EAAE,gBAAgB;AAAA,gBACzB,SAAS,YAAY;AACnB,sCAAoB,KAAK;AAAA,gBAC3B;AAAA,gBACA,MAAM;AAAA,gBACN,UAAU,CAAC;AAAA,cACb;AAAA,YACF;AAAA,YAEC;AAAA,gBAAE,6CAA6C;AAAA,cAEhD,gBAAAJ,OAACG,QAAA,EAAK,MAAM,GAAG,IAAI,GACjB;AAAA,gCAAAL;AAAA,kBAAC;AAAA;AAAA,oBACC,IAAG;AAAA,oBACH,OAAO;AAAA,oBACP,SAAS;AAAA,oBACT,iBAAiB,CAAC,YAAY;AAC5B,+BAAS,CAAC,CAAC,OAAO;AAAA,oBACpB;AAAA;AAAA,gBACF;AAAA,gBACA,gBAAAA,MAAC,WAAM,SAAQ,gBAAe,WAAU,sBACrC,YAAE,uCAAuC,GAC5C;AAAA,iBACF;AAAA;AAAA;AAAA,QACF;AAAA,MAEJ;AAEA,UAAI,CAAC,gBAAgB;AACnB;AAAA,MACF;AAEA,YAAM,gBAAgB,MAAM;AAC1B,YAAI,OAAO,YAAY,YAAY;AACjC,iBAAO,gBAAAA,MAAC,UAAM,kBAAQ,EAAE,IAAS,WAAW,CAAC,GAAE;AAAA,QACjD;AACA,eACE,WACE,gBAAAA,MAAC,UACE,YAAE,sCAAsC;AAAA,UACvC;AAAA,UACA;AAAA,QACF,CAAC,GACH;AAAA,MAGN;AAEA,aACE,gBAAAA;AAAA,QAACK;AAAA,QAAA;AAAA,UACC,KAAK,MAAM;AAAA,UACX,SAAQ;AAAA,UACR,WAAWD;AAAA,YACT;AAAA,YACA;AAAA,YACA;AAAA,YACA,MAAM;AAAA,UACR;AAAA,UAEA,0BAAAF;AAAA,YAACG;AAAA,YAAA;AAAA,cACC,WAAWD;AAAA,gBACT;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA,MAAM,WAAW,uBAAuB;AAAA,cAC1C;AAAA,cAEA;AAAA,gCAAAJ,MAAC,YAAS,MAAM,IAAI,WAAU,yCAAwC;AAAA,gBACrE,cAAc;AAAA;AAAA;AAAA,UACjB;AAAA;AAAA,MACF;AAAA,IAEJ;AAAA;AAAA;;;AC/GA,SAAS,UAAAO,SAAQ,YAAAC,kBAAgB;AACjC,SAAS,aAAAC,YAAW,mBAAAC,wBAAuB;AAC3C,SAAS,iBAAAC,sBAAqB;AAC9B,SAAS,0BAA0B;AAHnC,IAWa;AAXb;AAAA;AAAA;AAWO,IAAM,0BAA0B,MAAM;AAC3C,YAAM,EAAE,eAAe,IAAIA,eAAc;AACzC,YAAM,aAAaF,WAAU,YAAY;AACzC,YAAM,YAAYF,QAAuB,IAAI;AAC7C,YAAM,CAAC,UAAU,WAAW,IAAIC,WAAS,KAAK;AAC9C,YAAM,CAAC,OAAO,QAAQ,IAAIA,WAAS,KAAK;AAExC,YAAM,CAAC,YAAY,aAAa,IAAIE;AAAA,QAClC;AAAA,QACA;AAAA,MACF;AAEA,yBAAmB,UAAU,SAAS,CAAC,UAAU;AAC/C,oBAAY,MAAM,YAAY,SAAS,EAAE;AAAA,MAC3C,CAAC;AAED,aAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA;AAAA;;;AC3BS,gBAAAV,aAAA;AART,IAMa;AANb;AAAA;AAAA;AACA;AACA;AAIO,IAAM,uBAAsD,CAAC,UAAU;AAC5E,YAAM,QAAQ,wBAAwB;AACtC,aAAO,gBAAAA,MAAC,kBAAgB,GAAG,OAAQ,GAAG,OAAO;AAAA,IAC/C;AAAA;AAAA;;;ACTA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;;;ACFA,SAAgB,WAAAY,iBAAe;AAE/B,SAAS,QAAAP,QAAM,QAAAQ,cAAY;AAuBnB,SA4BE,OAAAb,OA5BF,QAAAE,cAAA;AAzBR,IAWa;AAXb;AAAA;AAAA;AAWO,IAAM,YAAsC,CAAC,UAAU;AAC5D,YAAM,EAAE,WAAW,SAAS,cAAc,IAAI;AAE9C,YAAM,YAAYU,UAAQ,MAAM;AAC9B,eAAO,WAAW,MAAM,CAAC,SAAS,KAAK,SAAS,OAAO;AAAA,MACzD,GAAG,CAAC,WAAW,OAAO,CAAC;AAEvB,YAAM,QAAQA,UAAQ,MAAM;AAC1B,eAAO,WAAW,IAAI,CAAC,SAAS;AAC9B,gBAAM,WAAW,YAAY,KAAK;AAClC,gBAAM,iBACJ,KAAK,KAAK,WAAW,SAAS,KAAK,KAAK,KAAK,WAAW,UAAU;AAEpE,iBACE,gBAAAV;AAAA,YAACG;AAAA,YAAA;AAAA,cAEC,WAAW;AAAA,cACX,WAAW;AAAA,cACX,SAAS;AAAA,cACT,WAAU;AAAA,cACV,SAAS,MAAM;AACb,oBAAI,gBAAgB;AAClB,yBAAO,SAAS,OAAO,KAAK;AAAA,gBAC9B,OAAO;AACL,kCAAgB,EAAE,MAAM,KAAK,MAAM,MAAM,KAAK,KAAK,CAAC;AAAA,gBACtD;AAAA,cACF;AAAA,cAgBA;AAAA,gCAAAL,MAACa,QAAA,EAAM,qBAAW,KAAK,aAAa,KAAK,cAAa;AAAA,gBACtD,gBAAAb,MAACa,QAAA,EAAK,MAAK,OAAM,WAAW,WAAW,KAAK,IACzC,eAAK,MACR;AAAA;AAAA;AAAA,YA9BK,KAAK;AAAA,UA+BZ;AAAA,QAEJ,CAAC;AAAA,MACH,GAAG,CAAC,WAAW,SAAS,aAAa,CAAC;AAEtC,UAAI,aAAa,CAAC,WAAW;AAC3B,eAAO;AAAA,MACT;AAEA,aACE,gBAAAb;AAAA,QAACK;AAAA,QAAA;AAAA,UACC,OAAO;AAAA,UACP,QAAQ;AAAA,UACR,IAAI;AAAA,UACJ,WAAW;AAAA,UACX,SAAS;AAAA,UACT,WAAU;AAAA,UAET;AAAA;AAAA,MACH;AAAA,IAEJ;AAAA;AAAA;;;AC5EA,SAAS,aAAAS,kBAAiB;AAmBN,gBAAAd,aAAA;AArBpB,IAkBa;AAlBb;AAAA;AAAA;AAGA;AAeO,IAAM,kBAA4C,CAAC,UAAU;AAClE,YAAM,EAAE,SAAS,IAAIc,WAAU;AAC/B,YAAM,EAAE,WAAW,GAAG,KAAK,IAAI;AAC/B,aAAO,WAAW,gBAAAd,MAAC,aAAU,WAAuB,GAAG,MAAM,IAAK;AAAA,IACpE;AAAA;AAAA;;;ACtBA,SAAgB,YAAAQ,kBAAgB;AAChC;AAAA,EACE,QAAAH;AAAA,EACA,eAAAU;AAAA,EACA;AAAA,EACA,kBAAAC;AAAA,EACA,QAAAH;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,MAAAT,YAAU;AAuBb,SAuCI,YAAAa,YArCF,OAAAjB,OAFF,QAAAE,cAAA;AApCN,IAuBM,mBAkCO;AAzDb;AAAA;AAAA;AAuBA,IAAM,oBAAsD,CAAC,UAAU;AACrE,YAAM,EAAE,MAAM,OAAO,UAAU,SAAS,UAAU,IAAI;AACtD,aACE,gBAAAA;AAAA,QAACG;AAAA,QAAA;AAAA,UACC,WAAU;AAAA,UACV,WAAWD;AAAA,YACT;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,UAEA;AAAA,4BAAAF,OAACG,QAAA,EAAK,KAAK,GAAG,WAAU,UACrB;AAAA;AAAA,cACD,gBAAAL,MAACa,QAAA,EAAK,MAAK,MAAK,WAAW,IAAI,QAAO,YACnC,iBACH;AAAA,eACF;AAAA,YACA,gBAAAb,MAACK,QAAA,EAAK,WAAU,eACb,qBAAW,gBAAAL,MAAC,2BAAwB,MAAM,IAAI,IAAK,MACtD;AAAA;AAAA;AAAA,MACF;AAAA,IAEJ;AAUO,IAAM,uBAA4D,CACvE,UACG;AACH,YAAM,EAAE,QAAQ,YAAY,cAAc,YAAY,MAAM,IAAI;AAChE,YAAM,CAACkB,OAAM,OAAO,IAAIV,WAAS,KAAK;AAEtC,YAAM,iBAAiB,MAAM;AAC3B,YAAI,CAAC,QAAQ;AACX,qBAAW;AACX;AAAA,QACF;AACA,gBAAQ,CAAC,MAAM,CAAC,CAAC;AAAA,MACnB;AAEA,aACE,gBAAAN,OAACa,cAAA,EAAY,MAAMG,OAAM,cAAc,SACrC;AAAA,wBAAAlB,MAAC,kBAAe,SAAO,MACpB,WAACkB,QACA,gBAAAhB,OAAAe,YAAA,EACE;AAAA,0BAAAjB;AAAA,YAACK;AAAA,YAAA;AAAA,cACC,OAAO;AAAA,cACP,QAAQ;AAAA,cACR,GAAE;AAAA,cACF,WAAW;AAAA,cACX,SAAS;AAAA,cACT,WAAU;AAAA,cACV,SAAS;AAAA,cAER,mBAAS,aAAa;AAAA;AAAA,UACzB;AAAA,UACA,gBAAAL;AAAA,YAACa;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,WAAW,SAAS,KAAK;AAAA,cACzB,WAAU;AAAA,cAET;AAAA;AAAA,UACH;AAAA,WACF,IAEA,gBAAAX;AAAA,UAACG;AAAA,UAAA;AAAA,YACC,OAAO;AAAA,YACP,QAAQ;AAAA,YACR,GAAE;AAAA,YACF,WAAW;AAAA,YACX,SAAS;AAAA,YACT,WAAU;AAAA,YACV,SAAS,CAAC,MAAM;AACd,gBAAE,kBAAkB;AACpB,sBAAQ,KAAK;AAAA,YACf;AAAA,YAEA;AAAA,8BAAAL;AAAA,gBAAC;AAAA;AAAA,kBACC,MAAM;AAAA,kBACN,WAAU;AAAA;AAAA,cACZ;AAAA,cACA,gBAAAA;AAAA,gBAACK;AAAA,gBAAA;AAAA,kBACC,WAAU;AAAA,kBACV,WAAU;AAAA,kBACV,SAAQ;AAAA,kBAER,0BAAAL,MAAC,sBAAmB,MAAM,IAAI;AAAA;AAAA,cAChC;AAAA;AAAA;AAAA,QACF,GAEJ;AAAA,QACA,gBAAAA;AAAA,UAACgB;AAAA,UAAA;AAAA,YACC,YAAY;AAAA,YACZ,OAAM;AAAA,YACN,MAAK;AAAA,YACL,WAAU;AAAA,YAEV,0BAAAd,OAACG,QAAA,EAAK,WAAU,UAAS,WAAU,wBACjC;AAAA,8BAAAL;AAAA,gBAAC;AAAA;AAAA,kBACC,MAAM,gBAAAA,MAAC,YAAS,MAAM,IAAI;AAAA,kBAC1B,OAAM;AAAA,kBACN,SAAS,MAAM;AACb,2BAAO,SAAS,OAAO;AACvB,4BAAQ,KAAK;AAAA,kBACf;AAAA,kBACA,WAAU;AAAA;AAAA,cACZ;AAAA,cACA,gBAAAA;AAAA,gBAAC;AAAA;AAAA,kBACC,MAAM,gBAAAA,MAAC,aAAU,MAAM,IAAI;AAAA,kBAC3B,OAAM;AAAA,kBACN,UAAU;AAAA,kBACV,SAAS,MAAM,QAAQ,KAAK;AAAA,kBAC5B,WAAU;AAAA;AAAA,cACZ;AAAA,eACF;AAAA;AAAA,QACF;AAAA,SACF;AAAA,IAEJ;AAAA;AAAA;;;ACrJA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;;;ACFA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;;;ACJP,SAAS,sBAAsB;AAC/B,SAAS,yBAAyB;AAClC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AA8BD,cAgKQ,YAhKR;AAdC,IAAM,cAAc,CAAC,UAA4B;AACtD,QAAM,EAAE,EAAE,IAAI,eAAe;AAC7B,QAAM;AAAA,IACJ,cAAc;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,QAAM,WAAW,MAAM,cAAc,MAAM;AAE3C,MAAI,CAAC,YAAY,cAAc;AAC7B,WACE;AAAA,MAAC;AAAA;AAAA,QACC,eAAY;AAAA,QACZ,MAAK;AAAA,QACL,OAAM;AAAA,QACN,SAAS;AAAA,QAER,YAAE,wBAAwB;AAAA;AAAA,IAC7B;AAAA,EAEJ;AAEA,MACE,CAAC,aACA,MAAM,WAAW,kBAAkB,iBAClC,MAAM,WAAW,kBAAkB,gCACrC;AACA,WACE;AAAA,MAAC;AAAA;AAAA,QACC,SAAS,MAAM;AAAA,QACf;AAAA,QACA;AAAA;AAAA,IACF;AAAA,EAEJ;AAEA,MAAI,MAAM,UAAU,kBAAkB,gBAAgB,UAAU;AAC9D,WACE;AAAA,MAAC;AAAA;AAAA,QACC,eAAY;AAAA,QACZ,MAAK;AAAA,QACL,SAAS,WAAW,SAAY;AAAA,QAChC,OAAO;AAAA,QACP,WAAU;AAAA,QACV,SAAS,MAAM;AAAA,QACf;AAAA,QACA,SAAS,MAAM;AACb,gBACG,QAAQ,EACR,KAAK,CAAC,MAAM;AAAA,UAEb,CAAC,EACA,MAAM,CAAC,MAAM,MAAgB;AAAA,QAClC;AAAA,QAEC,qBAAW,EAAE,mBAAmB,IAAI,EAAE,yBAAyB;AAAA;AAAA,IAClE;AAAA,EAaJ;AAEA,MAAI,MAAM,UAAU,kBAAkB,aAAa;AACjD,WACE,oBAAC,UAAO,MAAK,MAAK,SAAS,MAAM,MAAM,eAAe,GACnD,YAAE,yBAAyB,GAC9B;AAAA,EAaJ;AAEA,MAAI,MAAM,UAAU,kBAAkB,iBAAiB;AACrD,WACE;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,SAAS,MAAM;AACb,gBACG,mBAAmB,EACnB,KAAK,CAAC,MAAM,MAAc,EAC1B,MAAM,CAAC,MAAM,MAAgB;AAAA,QAClC;AAAA,QAEC,YAAE,yBAAyB;AAAA;AAAA,IAC9B;AAAA,EAaJ;AACF;AAsBA,IAAM,aAAa,CAAC,UAId;AACJ,QAAM,EAAE,SAAS,aAAa,IAAI;AAClC,QAAM,EAAE,EAAE,IAAI,eAAe;AAE7B,SACE,qBAAC,oBACC;AAAA,wBAAC,uBAAoB,SAAO,MAC1B;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,SAAQ;AAAA,QACR,OAAO;AAAA,QACP,eAAY;AAAA,QAEZ,8BAAC,KAAK,WAAL,EAAe,MAAK,WAAU,WAAU,8BACtC,mBACH;AAAA;AAAA,IACF,GACF;AAAA,IACA,oBAAC,sBACC;AAAA,MAAC;AAAA;AAAA,QACC,MAAM;AAAA,QACN,OAAO;AAAA,QACP,kBAAkB,CAAC,MAAM,EAAE,eAAe;AAAA,QAC1C,OAAO,EAAE,OAAO,QAAQ;AAAA,QACxB,WAAW;AAAA,QACX,YAAY;AAAA,QAEZ;AAAA,8BAAC,qBACC,+BAAC,QAAK,IAAI,GACR;AAAA,iCAAC,QAAK,KAAK,GAAG,WAAW,cACvB;AAAA,kCAAC,aAAU,SAAkB,MAAM,MAAM;AAAA,cACzC,oBAAC,KAAK,WAAL,EAAe,MAAM,WAAW,MAAM,QACpC,mBACH;AAAA,eACF;AAAA,YACA,qBAAC,QAAK,KAAK,GACT;AAAA;AAAA,gBAAC;AAAA;AAAA,kBACC,eAAY;AAAA,kBACZ,SAAS,YAAY;AAEnB,0BAAM,UAAU,UAAU,UAAU,OAAO;AAAA,kBAC7C;AAAA,kBAEA;AAAA,oBAAC;AAAA;AAAA,sBACC,OAAM;AAAA,sBACN,OAAM;AAAA,sBACN,QAAO;AAAA,sBACP,SAAQ;AAAA,sBAER,WAAU;AAAA,sBAEV;AAAA,wBAAC;AAAA;AAAA,0BACC,GAAE;AAAA;AAAA,sBAKJ;AAAA;AAAA,kBACF;AAAA;AAAA,cACF;AAAA,cACA,oBAAC,YAAO,SAAS,MAAM,MAAM,eAAe,GAC1C;AAAA,gBAAC;AAAA;AAAA,kBACC,OAAM;AAAA,kBACN,OAAM;AAAA,kBACN,QAAO;AAAA,kBACP,SAAQ;AAAA,kBACR,WAAU;AAAA,kBAEV,8BAAC,UAAK,GAAE,seAAqe;AAAA;AAAA,cAC/e,GACF;AAAA,eACF;AAAA,aACF,GACF;AAAA,UACA,oBAAC,WAAQ,WAAW,qBAAqB,WAAW,GAAG;AAAA,UAyCvD,oBAAC,qBACC;AAAA,YAAC;AAAA;AAAA,cACC,MAAM;AAAA,cACN,UAAU,CAAC,UAAU;AACnB,sBAAM,eAAe;AACrB,6BAAa;AAAA,cACf;AAAA,cACA,eAAY;AAAA,cAEZ,+BAAC,QAAK,KAAK,GAAG,WAAW,yBACvB;AAAA;AAAA,kBAAC;AAAA;AAAA,oBACC,OAAM;AAAA,oBACN,OAAM;AAAA,oBACN,QAAO;AAAA,oBACP,SAAQ;AAAA,oBACR,MAAK;AAAA,oBAEL;AAAA,sBAAC;AAAA;AAAA,wBACC,UAAS;AAAA,wBACT,UAAS;AAAA,wBACT,GAAE;AAAA,wBACF,MAAK;AAAA;AAAA,oBACP;AAAA;AAAA,gBACF;AAAA,gBACA,oBAAC,UAAM,YAAE,sBAAsB,GAAE;AAAA,iBACnC;AAAA;AAAA,UACF,GACF;AAAA;AAAA;AAAA,IACF,GACF;AAAA,KACF;AAEJ;;;AClUA,SAAS,mBAAmB;AAC5B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,kBAAAG,uBAAsB;AAC/B,SAAS,qBAAqB;AAC9B,SAAS,qBAAAgB,0BAAyB;AAClC,SAAS,OAAO,OAAO,WAAW,QAAAN,aAAY;AAC9C;AAAA,EACE;AAAA,EACA;AAAA,OACK;AACP;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAMI,gBAAAb,YAAA;AAJX,IAAM,aAAa,MAAM;AACvB,QAAM,EAAE,EAAE,IAAIG,gBAAe;AAC7B,QAAM,EAAE,MAAM,IAAI,WAAW;AAC7B,MAAI,MAAM,SAASgB,mBAAkB,UAAU;AAC7C,WAAO,gBAAAnB,KAACa,OAAA,EAAM,YAAE,yBAAyB,GAAE;AAAA,EAC7C;AACA,MAAI,MAAM,SAASM,mBAAkB,eAAe;AAClD,WAAO,gBAAAnB,KAACa,OAAA,EAAM,YAAE,yBAAyB,GAAE;AAAA,EAC7C;AACA,SAAO,gBAAAb,KAACa,OAAA,EAAM,YAAE,yBAAyB,GAAE;AAC7C;AAEO,IAAM,iBAAiB,MAAW;AACvC,QAAM,EAAE,EAAE,IAAIV,gBAAe;AAC7B,QAAM,EAAE,YAAY,eAAe,IAAI,mBAAmB;AAC1D,QAAM,EAAE,SAAS,MAAM,IAAI,WAAW;AACtC,QAAM,EAAE,eAAe,iBAAiB,cAAc,kBAAkB,IACtE,cAAc;AAEhB,QAAM,CAAC,EAAE,EAAE,cAAc,CAAC,IAAI,UAAU;AAExC,QAAM,EAAE,SAAS,IAAI,UAAU;AAE/B,QAAM,iBAAiB,YAAY;AACjC,UAAM,UAAU,WAAW,yBAAyB;AACpD,UACG,KAAK,SAAS;AAAA,MACb,OAAO,gBAAAH,KAAC,cAAW;AAAA,IACrB,CAAC,EACA;AAAA,MACC,CAAC,QAAQ;AAAA,MACT,CAAC,QAAQ;AAAA,IACX;AAAA,EACJ;AAEA,QAAM,qBAAqB,YAAY;AACrC,UAAM,UAAU,WAAW,yBAAyB;AACpD,UACG,KAAK,SAAS;AAAA,MACb,OAAO,gBAAAA,KAAC,cAAW;AAAA,IACrB,CAAC,EACA;AAAA,MACC,CAAC,QAAQ;AAAA,MACT,CAAC,QAAQ;AAAA,IACX;AAAA,EACJ;AAEA,QAAM,cAAc,MAAM;AACxB,YAAQ,KAAK,gBAAgB,CAAC,WAAW;AACvC,UAAI,SAASmB,mBAAkB,eAAe;AAC5C,4BAAoB,EAAE,OAAO,CAAC;AAAA,MAChC,OAAO;AACL,cAAM,QAAQ,EAAE,2BAA2B,CAAC;AAAA,MAC9C;AAAA,IACF,CAAC;AAED,UAAM,KAAgC,qBAAqB,EAAE;AAAA,MAC3D,CAAC,MAAM;AACL,YAAI,CAAC,EAAE,cAAc;AACnB,cAAI,MAAM,SAASA,mBAAkB,eAAe;AAClD,gCAAoB,KAAK;AAAA,UAC3B,OAAO;AACL,kBAAM,QAAQ,EAAE,2BAA2B,CAAC;AAAA,UAC9C;AAAA,QACF;AAAA,MACF;AAAA,MACA,CAAC,UAAU;AAAA,MAEX;AAAA,IACF;AAAA,EACF;AAEA,QAAM,UAAU,YAAY;AAC1B,UAAM,MAAM,MAAM,cAAc;AAEhC,QAAI,CAAC,KAAK;AACR;AAAA,IACF;AAEA,QAAI,IAAI,cAAc;AACpB,kBAAY;AAAA,IACd,OAAO;AACL,0BAAoB,GAAG;AAAA,IACzB;AAAA,EACF;AAEA,QAAM,sBAAsB,CAAC,cAAmB;AAC9C,QACE,UAAU,cACV,UAAU,UAAUA,mBAAkB,WACtC;AACA;AAAA,IACF;AAEA,QAAI,UAAU,SAASA,mBAAkB,UAAU;AACjD,qBAAe;AAAA,IACjB;AACA,QAAI,UAAU,SAASA,mBAAkB,eAAe;AACtD,yBAAmB;AAAA,IACrB;AAAA,EACF;AAEA,QAAM,iBAAiB,YAAY,MAAM;AACvC,QAAI,CAAC,gBAAgB;AACnB;AAAA,IACF;AACA,UAAM,YAAY;AAAA,MAChB,eAAgB;AAAA,MAChB;AAAA,IACF;AAEA,QAAI,WAAW;AAEb,YAAM,EAAE,kBAAkB,IAAI;AAC9B,UAAI,mBAAmB;AACrB,YAAI,kBAAkB,SAAS,GAAG,GAAG;AACnC,iBAAO,KAAK,GAAG,iBAAiB,WAAW,QAAQ,OAAO,EAAE;AAAA,QAC9D,OAAO;AACL,iBAAO,KAAK,GAAG,iBAAiB,YAAY,QAAQ,OAAO,EAAE;AAAA,QAC/D;AAAA,MACF;AAAA,IACF;AAAA,EACF,GAAG,CAAC,OAAO,cAAc,CAAC;AAE1B,QAAM,eAAe,YAAY;AAC/B,iBAAa,WAAW,qBAAqB;AAC7C,UAAM,WAAW;AAAA,MACf,OAAO,MAAM,eAAe;AAAA,IAC9B,CAAC;AACD,UAAM,QAAQ,WAAW;AAAA,EAC3B;AAEA,QAAM,kBAAkB,MAAM;AAC5B,UAAM,UAAU,WAAW,uBAAuB;AAClD,UACG,KAEE,SAAS;AAAA,MACV,gBAAgB;AAAA,MAChB,gBAAgB;AAAA,IAClB,CAAC,EACA;AAAA,MACC,CAAC,MAAW;AAEV,YAAI,GAAG,SAAS;AACd,4BAAkB,GAAG,OAAO;AAAA,QAC9B;AACA,cAAM,QAAQ,EAAE,2BAA2B,CAAC;AAAA,MAC9C;AAAA,MACA,CAAC,UAAU;AAAA,IACb;AAAA,EACJ;AAEA,SAAO;AAAA,IACL,SAAS,MAAM;AAAA,IACf,cAAc;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;;;AF9KS,gBAAAnB,YAAA;AAFF,IAAM,oBAAoB,MAAM;AACrC,QAAM,QAAQ,eAAe;AAC7B,SAAO,gBAAAA,KAAC,eAAa,GAAG,OAAO;AACjC;AAEA,iBAAmC;AAAA,EACjC,MAAM;AAAA,EACN,OAAO,CAAC,GAAG;AAAA,EACX,WAAW,CAAC,sBAAsB,WAAW;AAAA,EAC7C,SAAS;AAAA,EACT,cAAc;AAChB,CAAC,EAAE,CAAC,UAA4B;AAC9B,SAAO,gBAAAA,KAAC,eAAa,GAAG,OAAO;AACjC,CAAC;AAEM,IAAM,+BAA+B,MAAM;AAChD,SAAO,gBAAAA,KAAC,iBAAc,UAAU,sBAAsB,aAAa;AACrE;;;AG1BA,SAAS,WAAAY,WAAS,YAAAJ,kBAAgB;AAClC,SAAS,cAAAY,cAAY,sBAAAC,2BAA0B;AAC/C,SAAS,iBAAAV,sBAAqB;;;ACF9B,OAAOV,YAAW;AAClB,SAAS,OAAAqB,MAAK,MAAAlB,YAAU;;;ACDxB,SAAa,WAAAQ,gBAAe;AAC5B,SAAS,cAAAQ,oBAAkB;AAC3B,SAAS,iBAAAT,sBAAqB;AAC9B;AAAA,EACE,qBAAAQ;AAAA,OAEK;AACP,SAAS,QAAAd,QAAM,QAAAQ,QAAM,iBAAiB,MAAAT,WAAU;;;ACPhD,SAAS,aAAAU,kBAAiB;;;ACA1B,SAAoB,gBAAgB;AACpC;AAAA,EAEE;AAAA,EACA,cAAAM;AAAA,EACA,sBAAAC;AAAA,OACK;AACP,SAAS,iBAAAV,sBAAqB;AAKvB,IAAM,qBAAqB,MAAM;AACtC,QAAM,CAACO,OAAM,OAAO,IAAI,SAAS,KAAK;AACtC,QAAM,CAAC,SAAS,UAAU,IAAI,SAAS,KAAK;AAC5C,QAAM,EAAE,MAAM,IAAIE,YAAW;AAC7B,QAAM,EAAE,eAAe,IAAIC,oBAAmB;AAC9C,QAAM,EAAE,gBAAgB,cAAc,iBAAiB,kBAAkB,IACvEV,eAAc;AAChB,QAAM,YAAY,UAAU,WAAW;AAEvC,QAAM,OAAO,MAAM;AACjB,YAAQ,KAAK;AAAA,EACf;AAEA,QAAM,sBAAsB,MAAM;AAChC,eAAW,IAAI;AACf,SAAK;AAAA,EACP;AAEA,QAAM,qBAAqB,MAAM;AAC/B,eAAW,KAAK;AAAA,EAClB;AAEA,SAAO;AAAA,IACL,aAAa,CAAC,CAAC;AAAA,IACf;AAAA,IACA;AAAA,IACA;AAAA,IACA,eAAe,MAAM;AAAA,IACrB;AAAA,IACA,MAAAO;AAAA,IACA,cAAc;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;;;ACjDA,SAAS,cAAAE,mBAAkB;AAC3B,SAAS,kBAAAjB,uBAAsB;AAC/B,SAAS,qBAAAgB,0BAAyB;AAClC;AAAA,EACE,UAAAI;AAAA,EACA;AAAA,EACA;AAAA,EACA,QAAAlB;AAAA,EACA,SAAAmB;AAAA,EACA;AAAA,EACA,uBAAAC;AAAA,EACA,sBAAAC;AAAA,EACA,oBAAAC;AAAA,EACA,uBAAAC;AAAA,EACA;AAAA,EACA,QAAAf;AAAA,OACK;AACP;AAAA,EACE,yBAAAgB;AAAA,EACA;AAAA,OACK;AACP,SAAS,0BAAAC,+BAA8B;AAO5B,gBAAA9B,MAmFD,QAAAE,aAnFC;AAJX,IAAM6B,cAAa,MAAM;AACvB,QAAM,EAAE,EAAE,IAAI5B,gBAAe;AAC7B,QAAM,EAAE,MAAM,IAAIiB,YAAW;AAC7B,MAAI,MAAM,SAASD,mBAAkB,UAAU;AAC7C,WAAO,gBAAAnB,KAACa,OAAA,EAAM,YAAE,yBAAyB,GAAE;AAAA,EAC7C;AACA,MAAI,MAAM,SAASM,mBAAkB,eAAe;AAClD,WAAO,gBAAAnB,KAACa,OAAA,EAAM,YAAE,yBAAyB,GAAE;AAAA,EAC7C;AACA,SAAO,gBAAAb,KAACa,OAAA,EAAM,YAAE,yBAAyB,GAAE;AAC7C;AAEO,IAAM,YAAY,CAAC,UAAoC;AAC5D,QAAM,EAAE,EAAE,IAAIV,gBAAe;AAE7B,MAAI,MAAM,gBAAgB,MAAM,eAAe,CAAC,MAAM,iBAAiB;AACrE,WACE,gBAAAH;AAAA,MAAC;AAAA;AAAA,QACC,MAAI;AAAA,QACJ,kBAAgB;AAAA,QAChB,SAAS,EAAE,gCAAgC;AAAA,QAC3C,WAAU;AAAA,QACV,OAAO,EAAE,WAAW,kBAAkB;AAAA,QAEtC,0BAAAA;AAAA,UAACuB;AAAA,UAAA;AAAA,YACC,OAAM;AAAA,YACN,MAAK;AAAA,YACL,SAAS,MAAM;AACb,cAAAC,OACG,KAAgCK,wBAAuB;AAAA,gBACtD,WAAW,MAAM;AAAA,cACnB,CAAC,EACA;AAAA,gBACC,CAAC,MAAM;AACL,sBACE,CAAC,EAAE,gBACH,MAAM,gBAAgBV,mBAAkB,eACxC;AACA,oBAAAK,OACG,KAAKM,yBAAwB;AAAA,sBAC5B,OAAO,gBAAA9B,KAAC+B,aAAA,EAAW;AAAA,oBACrB,CAAC,EACA;AAAA,sBACC,CAACC,OAAM;AAAA,sBACP,CAAC,UAAU;AAAA,oBACb;AAAA,kBACJ;AAAA,gBACF;AAAA,gBACA,CAAC,UAAU;AAAA,cACb;AAAA,YACJ;AAAA,YAEC,YAAE,wBAAwB;AAAA;AAAA,QAC7B;AAAA;AAAA,IACF;AAAA,EAEJ;AAEA,QAAM,aAAa,MAAM;AACvB,QAAI,MAAM,SAAS;AACjB,aAAO,gBAAAhC,KAAC,WAAQ,WAAU,6BAA4B;AAAA,IACxD;AAEA,QAAI,MAAM,gBAAgB;AACxB,aAAO,gBAAAA,KAAC,aAAU,SAAS,MAAM,gBAAgB,MAAK,MAAK;AAAA,IAC7D;AAAA,EACF;AAEA,QAAM,UACJ,gBAAAE;AAAA,IAACG;AAAA,IAAA;AAAA,MACC,WAAW;AAAA,MACX,SAAQ;AAAA,MACR,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MAEC;AAAA,mBAAW;AAAA,QACZ,gBAAAH;AAAA,UAAC;AAAA;AAAA,YACC,OAAM;AAAA,YACN,QAAO;AAAA,YACP,SAAQ;AAAA,YACR,OAAM;AAAA,YACN,WAAU;AAAA,YAEV;AAAA,8BAAAF,KAAC,UACC,0BAAAE;AAAA,gBAAC;AAAA;AAAA,kBACC,IAAG;AAAA,kBACH,IAAG;AAAA,kBACH,IAAG;AAAA,kBACH,IAAG;AAAA,kBACH,IAAG;AAAA,kBACH,eAAc;AAAA,kBAEd;AAAA,oCAAAF,KAAC,UAAK,WAAU,sCAAqC;AAAA,oBACrD,gBAAAA,KAAC,UAAK,QAAO,KAAI,WAAU,wCAAuC;AAAA;AAAA;AAAA,cACpE,GACF;AAAA,cACA,gBAAAA;AAAA,gBAAC;AAAA;AAAA,kBACC,GAAE;AAAA,kBACF,MAAK;AAAA;AAAA,cACP;AAAA;AAAA;AAAA,QACF;AAAA;AAAA;AAAA,EACF;AAGF,SACE,gBAAAE,MAACyB,mBAAA,EAAiB,MAAM,MAAM,MAAM,cAAc,MAAM,cACtD;AAAA,oBAAA3B,KAAC4B,sBAAA,EAAoB,SAAO,MAAE,mBAAQ;AAAA,IACtC,gBAAA5B,KAAC0B,qBAAA,EACC,0BAAA1B;AAAA,MAACyB;AAAA,MAAA;AAAA,QACC,kBAAkB,CAAC,MAAM,EAAE,eAAe;AAAA,QAC1C,SAAS,CAAC,MAAM,EAAE,gBAAgB;AAAA,QAClC,YAAY;AAAA,QACZ,kBAAkB,EAAE,OAAO,GAAG;AAAA,QAC9B,WAAW;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QAEA,0BAAAzB;AAAA,UAAC;AAAA;AAAA,YACC,OAAO,MAAM;AAAA,YACb,qBAAqB,MAAM;AAAA,YAC3B,oBAAoB,MAAM;AAAA;AAAA,QAC5B;AAAA;AAAA,IACF,GACF;AAAA,KACF;AAEJ;;;AC3JA,SAAS,kBAAAG,uBAAsB;AAC/B,SAAS,KAAK,aAAA8B,YAAW,SAAAT,QAAO,SAAAU,cAAa;AAC7C,SAAS,wBAAAC,6BAA4B;AA8B7B,gBAAAnC,MAeM,QAAAE,aAfN;AA3BD,IAAM,oBAAoB,CAAC,UAAoC;AACpE,QAAM,EAAE,EAAE,IAAIC,gBAAe;AAE7B,SACE,gBAAAH;AAAA,IAAC;AAAA;AAAA,MACC,SAAS,CAAC,MAAM;AACd,QAAAwB,OACG,KAEEW,uBAAsB;AAAA;AAAA,UAEvB,gBAAgB;AAAA,UAChB,gBAAgB,MAAM;AAAA,QACxB,CAAC,EACA;AAAA,UACC,CAAC,MAAW;AAEV,gBAAI,GAAG,SAAS;AACd,oBAAM,kBAAkB,GAAG,OAAO;AAAA,YACpC;AACA,YAAAD,OAAM,QAAQ,EAAE,2BAA2B,CAAC;AAAA,UAC9C;AAAA,UACA,CAAC,UAAU;AAAA,QACb;AAAA,MACJ;AAAA,MAEA,0BAAAhC,MAAC,OAAI,WAAU,kKACb;AAAA,wBAAAF;AAAA,UAACiC;AAAA,UAAA;AAAA,YACC,SAAS,MAAM;AAAA,YACf,MAAK;AAAA,YACL,WAAU;AAAA;AAAA,QACZ;AAAA,QACA,gBAAAjC,KAAC,SAAI,WAAU,yCACb,0BAAAE;AAAA,UAAC;AAAA;AAAA,YACC,OAAM;AAAA,YACN,QAAO;AAAA,YACP,SAAQ;AAAA,YACR,MAAK;AAAA,YACL,OAAM;AAAA,YAEN;AAAA,8BAAAF,KAAC,UAAK,GAAE,8BAA6B,MAAK,WAAU;AAAA,cACpD,gBAAAA,KAAC,UACC,0BAAAE;AAAA,gBAAC;AAAA;AAAA,kBACC,IAAG;AAAA,kBACH,IAAG;AAAA,kBACH,IAAG;AAAA,kBACH,IAAG;AAAA,kBACH,IAAG;AAAA,kBACH,eAAc;AAAA,kBAEd;AAAA,oCAAAF,KAAC,UAAK,WAAU,sCAAqC;AAAA,oBACrD,gBAAAA;AAAA,sBAAC;AAAA;AAAA,wBACC,QAAO;AAAA,wBACP,WAAU;AAAA;AAAA,oBACZ;AAAA;AAAA;AAAA,cACF,GACF;AAAA;AAAA;AAAA,QACF,GACF;AAAA,SACF;AAAA;AAAA,EACF;AAEJ;;;AH1DW,gBAAAA,YAAA;AAJJ,IAAM,kBAAkB,MAAM;AACnC,QAAM,QAAQ,mBAAmB;AACjC,QAAM,EAAE,SAAS,IAAIc,WAAU;AAC/B,MAAI,UAAU;AACZ,WAAO,gBAAAd,KAAC,qBAAmB,GAAG,OAAO;AAAA,EACvC;AACA,SAAO,gBAAAA,KAAC,aAAW,GAAG,OAAO;AAC/B;;;AIZA,SAAS,eAAAoC,cAAa,SAAS,YAAA5B,iBAAgB;AAC/C,SAAS,gBAAgB;AACzB;AAAA,EACE;AAAA,EAEA;AAAA,OACK;AACP,SAAS,wBAAwB;AACjC,SAAS,aAAAM,kBAAiB;AAWnB,IAAM,4BAA4B,CACvC,YACG;AACH,QAAM,CAACI,OAAM,OAAO,IAAIV,UAAS,KAAK;AACtC,QAAM,CAAC,SAAS,UAAU,IAAIA,UAAS,KAAK;AAC5C,QAAM,CAAC,cAAc,eAAe,IAAIA,UAAS,KAAK,QAAQ;AAC9D,QAAM,EAAE,WAAW,yBAAyB,mBAAmB,MAAM,IACnE,iBAAiB;AAEnB,QAAM,EAAE,OAAO,YAAY,IAAI,SAAS;AAExC,QAAM,EAAE,SAAS,IAAIM,WAAU;AAE/B,QAAM,eAAesB;AAAA,IACnB,CAAClB,UAAkB;AACjB,UAAI,OAAO,SAAS,iBAAiB,YAAY;AAC/C,gBAAQ,aAAaA,KAAI;AAAA,MAC3B,OAAO;AACL,gBAAQA,KAAI;AAAA,MACd;AAAA,IACF;AAAA,IACA,CAAC,SAAS,cAAc,OAAO;AAAA,EACjC;AAEA,QAAM,eAAe,OAAO,MAAc,gBAAwB;AAChE,eAAW,IAAI;AACf,oBAAgB,IAAI;AACpB,UAAM,wBAAwB,IAAI;AAClC,UAAM,KAAK,eAAe,IAAI;AAC9B,UAAM,kBAAkB,IAAI;AAC5B,iBAAa,KAAK;AAClB,eAAW,KAAK;AAChB,UAAM,iBAAiB,gBAAgB;AAAA,MACrC,UAAU;AAAA,MACV,eAAe;AAAA,IACjB,CAAC;AAED,gBAAY;AAAA,MACV,eAAe;AAAA,IACjB,CAAC;AAAA,EACH;AAEA,QAAM,SAAS;AAAA,IACb,OAAO;AAAA,MACL,GAAG;AAAA,MACH,GAAG,SAAS;AAAA,MACZ,MACE,SAAS,OAAO,QAAQ,OAAO,SAAS,WAAW,UAAU;AAAA,IACjE;AAAA,IACA,CAAC,OAAO,SAAS,OAAO,QAAQ;AAAA,EAClC;AAEA,QAAM,QAAQ,QAAQ,MAAM;AAC1B,QAAI,OAAO,SAAS,SAAS,WAAW;AACtC,aAAO,QAAQ;AAAA,IACjB;AACA,WAAOA;AAAA,EACT,GAAG,CAAC,SAAS,MAAMA,KAAI,CAAC;AAExB,SAAO;AAAA,IACL,MAAM;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO;AAAA,EACT;AACF;;;ACvFA,SAAuB,kBAAkB;AACzC,SAAS,kBAAAf,uBAAgC;AACzC;AAAA,EACE,MAAAC;AAAA,EACA,QAAAC;AAAA,EACA,uBAAAoB;AAAA,EACA,sBAAAC;AAAA,EACA,oBAAAC;AAAA,EACA,uBAAAC;AAAA,EACA,QAAAf;AAAA,EACA,OAAAS;AAAA,EACA,WAAAe;AAAA,EACA;AAAA,EACA,aAAAvB;AAAA,EACA;AAAA,EACA,WAAAwB;AAAA,OACK;AAgBD,SAuDA,UAvDA,OAAAtC,MAyDE,QAAAE,aAzDF;AAXC,IAAM,mBAA8C,CAAC,UAAU;AACpE,QAAM,EAAE,WAAW,MAAM,IAAI;AAC7B,QAAM,EAAE,EAAE,IAAIC,gBAAe;AAC7B,QAAM,EAAE,SAAS,IAAIW,WAAU;AAE/B,MAAI,UAAU,UAAU,GAAG;AACzB,WAAO;AAAA,EACT;AAEA,QAAM,UACJ,gBAAAd,KAACsC,UAAA,EAAQ,SAAS,EAAE,0BAA0B,GAC5C,0BAAAtC;AAAA,IAAC;AAAA;AAAA,MACC,WAAWI;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA,YAAY;AAAA,MACd;AAAA,MACA,IAAG;AAAA,MACH,SAAS,MAAM,MAAM,aAAa,IAAI;AAAA;AAAA,EACxC,GACF;AAGF,QAAM,SACJ,gBAAAJ,KAACa,OAAA,EAAK,QAAO,YAAY,YAAE,2BAA2B,GAAE;AAG1D,QAAM,eAAe,UAAU,IAAI,CAAC,SAAS;AAC3C,UAAM,WAAW,MAAM,iBAAiB,KAAK;AAC7C,WACE,gBAAAb;AAAA,MAAC;AAAA;AAAA,QACC,WAAWI;AAAA,UACT,CAAC,SAAS,OAAO,EAAE,SAAS,MAAM,QAAQ,EAAE,KAC1C;AAAA,QACJ;AAAA,QAEA;AAAA,QACA;AAAA,QACA,SAAS,MAAM,MAAM,aAAa,KAAK,WAAW,KAAK,WAAW;AAAA,QAClE,SAAS,MAAM;AAAA;AAAA,MAJV,KAAK;AAAA,IAKZ;AAAA,EAEJ,CAAC;AAED,QAAM,UACJ,gBAAAJ,KAACK,OAAA,EAAK,KAAK,GAAG,WAAU,iBACrB,wBACH;AAGF,QAAM,SACJ,gBAAAL,KAACsB,MAAA,EAAI,IAAI,GACP,0BAAAtB;AAAA,IAACa;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,WAAW;AAAA,MACX,QAAO;AAAA,MACP,WAAU;AAAA,MAET,YAAE,uBAAuB;AAAA;AAAA,EAC5B,GACF;AAGF,MAAI,OAAO,SAAS,WAAW,UAAU;AACvC,WACE,gBAAAX,MAAA,YACG;AAAA;AAAA,MACD,gBAAAA;AAAA,QAAC;AAAA;AAAA,UACC,MAAM,MAAM;AAAA,UACZ,cAAc,MAAM;AAAA,UACpB,YAAY;AAAA,YACV,SAASE,IAAG,qBAAqB,OAAO,SAAS;AAAA,YACjD,MAAM;AAAA,UACR;AAAA,UACA,cAAc;AAAA,YACZ,OAAO,OAAO;AAAA,UAChB;AAAA,UACA,OAAO;AAAA,UAEN;AAAA;AAAA,YACA;AAAA;AAAA;AAAA,MACH;AAAA,OACF;AAAA,EAEJ;AAEA,MAAI,OAAO,SAAS,YAAY;AAC9B,UAAMmC,WACJ,gBAAAvC;AAAA,MAACsB;AAAA,MAAA;AAAA,QACC,IAAI;AAAA,QACJ,WAAWlB;AAAA;AAAA,UAET;AAAA,UACA;AAAA,QACF;AAAA,QAEC;AAAA;AAAA,IACH;AAGF,WACE,gBAAAF,MAACyB,mBAAA,EAAiB,MAAM,MAAM,MAAM,cAAc,MAAM,cACtD;AAAA,sBAAA3B,KAAC4B,sBAAA,EAAoB,SAAO,MAAE,mBAAQ;AAAA,MACtC,gBAAA5B,KAAC0B,qBAAA,EACC,0BAAAxB;AAAA,QAACuB;AAAA,QAAA;AAAA,UACC,kBAAkB,CAAC,MAAM,EAAE,eAAe;AAAA,UAC1C,SAAS,CAAC,MAAM,EAAE,gBAAgB;AAAA,UAClC,YAAY;AAAA,UACZ,OAAM;AAAA,UACN,kBAAkB,EAAE,OAAO,GAAG;AAAA,UAC9B,WAAWrB;AAAA,YACT;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAAA,UAEC;AAAA;AAAA,YACAmC;AAAA,YACA;AAAA;AAAA;AAAA,MACH,GACF;AAAA,OACF;AAAA,EAEJ;AAEA,SACE,gBAAArC,MAAA,YACG;AAAA;AAAA,IACD,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,OAAO;AAAA,QACP,MAAM,MAAM;AAAA,QACZ,cAAc,MAAM;AAAA,QACpB,MAAM,WAAW,OAAO;AAAA,QACxB,YAAY;AAAA,UACV,SAAS,OAAO;AAAA,QAClB;AAAA,QACA,cAAc;AAAA,UACZ,OAAO,OAAO;AAAA,QAChB;AAAA,QAEC;AAAA;AAAA,UACA;AAAA;AAAA;AAAA,IACH;AAAA,KACF;AAEJ;AAUA,IAAM,eAAsC,CAAC,UAAU;AACrD,QAAM,EAAE,KAAK,IAAI;AAEjB,QAAM,iBAAiB,MAAM;AAC3B,QAAI,MAAM,WAAW,MAAM,UAAU;AACnC,aAAO,gBAAAF,KAACqC,UAAA,EAAQ,MAAK,MAAK;AAAA,IAC5B;AACA,QAAI,MAAM,UAAU;AAClB,aAAO,gBAAArC,KAACsB,MAAA,EAAI,UAAS,SAAQ,GAAE,QAAO,OAAO,GAAG,QAAQ,GAAG;AAAA,IAC7D;AACA,WAAO;AAAA,EACT;AAEA,SACE,gBAAAtB;AAAA,IAAC;AAAA;AAAA,MACC,WAAWI;AAAA,QACT;AAAA,QACA,MAAM,YAAY;AAAA,QAClB,MAAM;AAAA,MACR;AAAA,MACA,SAAS,MAAM;AAAA,MAEf,0BAAAF,MAACG,OAAA,EAAK,SAAQ,WAAU,WAAU,YAAW,IAAI,GAC/C;AAAA,wBAAAL,KAACK,OAAA,EAAK,WAAU,UAAS,OAAM,QAAO,WAAU,mBAC9C,0BAAAL;AAAA,UAACa;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,WAAWT;AAAA,cACT;AAAA,cACA,MAAM,YAAY;AAAA,YACpB;AAAA,YAEC,eAAK;AAAA;AAAA,QACR,GACF;AAAA,QACC,eAAe;AAAA,SAClB;AAAA;AAAA,EACF;AAEJ;AAMA,IAAM,eAAe,WAAqC,CAAC,OAAO,QAAQ;AACxE,QAAM,EAAE,OAAO,IAAI,GAAG,KAAK,IAAI;AAE/B,SACE,gBAAAJ;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,OAAM;AAAA,MACN;AAAA,MACC,GAAG;AAAA,MAEJ,0BAAAA,KAAC,UAAK,GAAE,wjBAAujB;AAAA;AAAA,EACjkB;AAEJ,CAAC;;;ACpOQ,gBAAAA,YAAA;AAFF,IAAM,yBAAyB,CAAC,UAAuC;AAC5E,QAAM,QAAQ,0BAA0B,KAAK;AAC7C,SAAO,gBAAAA,KAAC,oBAAkB,GAAG,OAAO;AACtC;;;ACXA,SAAS,eAAAoC,cAAa,YAAA5B,iBAAgB;AAE/B,IAAM,mBAAmB,MAAM;AACpC,QAAM,CAACU,OAAM,OAAO,IAAIV,UAAS,KAAK;AAEtC,QAAM,YAAY4B,aAAY,MAAM;AAClC,YAAQ,IAAI;AAAA,EACd,GAAG,CAAC,CAAC;AAEL,QAAM,YAAYA,aAAY,MAAM;AAClC,YAAQ,KAAK;AAAA,EACf,GAAG,CAAC,CAAC;AAEL,SAAO;AAAA,IACL,MAAAlB;AAAA,IACA,cAAc;AAAA,IACd;AAAA,IACA;AAAA,EACF;AACF;;;ACnBA,SAAa,WAAAN,gBAAe;AAC5B,SAAS,cAAAQ,mBAAkB;AAC3B,SAAS,kBAAAjB,wBAAsB;AAC/B;AAAA,EACE,qBAAAgB;AAAA,OAGK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,QAAAN;AAAA,EACA,WAAA2B;AAAA,OACK;;;ACdP;AADA,SAAS,oBAAoB;AAE7B,SAAS,YAAY;AAWV,gBAAAxC,aAAA;AAJJ,IAAM,WAA8B,CAAC,UAAU;AACpD,QAAM,EAAE,SAAS,IAAI,aAAa;AAElC,MAAI,MAAM,KAAK;AACb,WAAO,gBAAAA,MAAC,QAAK,KAAK,MAAM,KAAK,KAAK,MAAM,KAAK;AAAA,EAC/C;AAEA,QAAM,EAAE,KAAK,IAAI,YAAY,CAAC;AAE9B,MAAI,MAAM,KAAK;AACb,WAAO,gBAAAA,MAAC,SAAI,KAAK,MAAM,KAAK;AAAA,EAC9B;AAEA,MAAI,MAAM,WAAW;AACnB,WAAO,KAAK;AAAA,EACd;AAEA,SAAO,gBAAAA,MAAC,eAAY;AACtB;;;AC5BA,SAAS,eAAAoC,cAAa,aAAAK,YAAW,WAAA7B,UAAS,YAAAJ,WAAU,cAAc;AAClE;AAAA,EACE,cAAAY;AAAA,EACA;AAAA,EACA,sBAAAC;AAAA,OACK;AACP,SAAS,kBAAAlB,uBAAsB;AAC/B;AAAA,EACE;AAAA,EAEA;AAAA,EACA;AAAA,OACK;AACP,SAAS,SAAA+B,QAAO,aAAApB,kBAAiB;AACjC,SAAS,WAAA4B,gBAAe;;;ACdxB,SAAS,aAAAD,YAAoB,YAAAjC,iBAAgB;AAC7C,SAAS,0BAA0B;AAEnC,SAAS,eAAe;AAEjB,IAAM,kBAAkB,CAAC,kBAA2B;AACzD,QAAM,CAAC,cAAc,eAAe,IAAIA,UAAiC,CAAC,CAAC;AAC3E,QAAM;AAAA,IACJ,MAAM,eAAe,CAAC;AAAA,IACtB,WAAW;AAAA,IACX,QAAQ;AAAA,EACV,IAAI,mBAAsC,kCAAkC;AAAA;AAAA,IAE1E,iBAAiB;AAAA,IACjB,WAAW;AAAA,EACb,CAAC;AAED,EAAAiC,WAAU,MAAM;AACd,QAAI,mBAAmB;AACrB;AAAA,IACF;AACA,QAAI,CAAC,gBAAgB,aAAa,WAAW,GAAG;AAC9C,sBAAgB,CAAC,CAAC;AAClB;AAAA,IACF;AACA,UAAM,QAAQ,aAAa;AAAA,MACzB,CAAC,KAAK,aAAa;AACjB,cAAM,YAAY,SAAS;AAC3B,YAAI,IAAI,SAAS,GAAG;AAClB,cAAI,SAAS,IAAI,IAAI,QAAQ,IAAI,SAAS,CAAC,EACxC,KAAK,SAAS,aAAa,EAC3B,SAAS;AAAA,QACd,OAAO;AACL,cAAI,SAAS,IAAI,IAAI,QAAQ,SAAS,aAAa,EAAE,SAAS;AAAA,QAChE;AACA,eAAO;AAAA,MACT;AAAA,MACA,CAAC;AAAA,IACH;AACA,oBAAgB,KAAK;AAAA,EACvB,GAAG,CAAC,cAAc,iBAAiB,CAAC;AACpC,SAAO;AAAA,IACL;AAAA,EACF;AACF;;;ADjBO,IAAM,mBAAmB,MAAM;AACpC,QAAM,CAACvB,OAAM,OAAO,IAAIV,UAAS,KAAK;AACtC,QAAM,CAAC,oBAAoB,qBAAqB,IAAIA;AAAA,IAClD,CAAC;AAAA,EACH;AACA,QAAM,EAAE,QAAQ,eAAe,IAAIa,oBAAmB;AACtD,QAAM,EAAE,MAAM,YAAY,IAAI,qBAAqB;AACnD,QAAM,EAAE,SAAS,IAAIP,WAAU;AAC/B,QAAM,EAAE,OAAO,SAAS,YAAY,cAAc,IAAIM,YAAW;AACjE,QAAM,EAAE,EAAE,IAAIjB,gBAAe;AAC7B,QAAM,gBAAgB,MAAM;AAE5B,QAAM,EAAE,aAAa,IAAI,gBAAgB,aAAa;AAEtD,QAAM,mBAAmB,MAAM;AAE/B,QAAM,kBAAkB,OAAO,KAAK;AAEpC,QAAM,cAAcS,SAAQ,MAAM;AAChC,QAAI,UAAU,MAAM;AACpB,QACE,gBAAgB,MAChB,sBAAsB,IAAI,SAAS,gBAAgB,EAAY,CAAC,GAChE;AACA,gBAAU,QAAQ,kBAAkB,GAAG;AAAA,IACzC;AAEA,WAAO;AAAA,EACT,GAAG,CAAC,QAAQ,OAAO,SAAS,cAAc,CAAC;AAE3C,QAAM,cAAcA,SAAQ,MAAM;AAChC,QAAI,CAAC,MAAM,eAAe,CAAC,MAAM,YAAY,QAAQ;AACnD,aAAO,CAAC;AAAA,IACV;AAEA,UAAM,oBAAoB,MAAM,YAAY;AAAA,MAC1C,CAAC+B,gBAAeA,YAAW,OAAO;AAAA,IACpC;AAEA,QAAI,mBAAmB;AACrB,aAAO;AAAA,QACL;AAAA,QACA,GAAG,MAAM,YAAY;AAAA,UACnB,CAACA,gBAAeA,YAAW,OAAO;AAAA,QACpC;AAAA,MACF;AAAA,IACF;AAEA,WAAO,CAAC,GAAG,MAAM,WAAW;AAAA,EAC9B,GAAG,CAAC,MAAM,aAAa,gBAAgB,CAAC;AAExC,QAAM,SAAS/B;AAAA,IACb,OAAO,EAAE,MAAM,WAAW,UAAU,QAAQ;AAAA,IAC5C,CAAC,QAAQ;AAAA,EACX;AAEA,QAAM,oBAAoBwB;AAAA,IACxB,CAAC,aAAqB;AACpB,aAAO,WAAW,OAAO,QAAQ;AAAA,IACnC;AAAA,IACA,CAAC,UAAU;AAAA,EACb;AAEA,QAAM,WAAWA;AAAA,IACf,CAAC,cAAsB;AACrB,aAAO,cAAc,SAAS,EAC3B,MAAM,CAAC,UAAU;AAAA,MAElB,CAAC,EACA,KAAK,CAAC,QAAQ;AACb,QAAAF,OAAM,QAAQ,EAAE,6CAA6C,CAAC;AAAA,MAChE,CAAC;AAAA,IACL;AAAA,IACA,CAAC,aAAa;AAAA,EAChB;AAEA,QAAM,qBAAqBtB,SAAQ,MAAM;AACvC,UAAM,yBAAyB,aAAa,aAAc,KAAK;AAE/D,UAAM,cACJ,iBAAiB,MAAM,UACnB;AAAA,MACE,IAAI;AAAA,MACJ,aAAa,MAAM;AAAA,MACnB,SAAS;AAAA,MACT,cAAc;AAAA,QACZ;AAAA,QACA;AAAA,QACA,eAAe;AAAA,MACjB;AAAA,IACF,IACA;AAEN,UAAM,qBAAqB,YAAY,IAAI,CAAC+B,gBAAe;AACzD,YAAM,wBAAwB,aAAaA,YAAW,EAAE,KAAK;AAC7D,aAAO;AAAA,QACL,GAAGA;AAAA,QACH,cAAc;AAAA,UACZA,YAAW,WAAW;AAAA,UACtB;AAAA,UACA,eAAe;AAAA,QACjB;AAAA,MACF;AAAA,IACF,CAAC;AAED,WAAO;AAAA,MACL;AAAA,MACA,aAAa;AAAA,IACf;AAAA,EACF,GAAG;AAAA,IACD;AAAA,IACA,MAAM;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,EAAAF,WAAU,MAAM;AACd,QAAI,CAACvB,OAAM;AACT,sBAAgB,UAAU;AAC1B;AAAA,IACF;AAEA,QAAI,CAAC,gBAAgB,WAAW,eAAe;AAC7C,sBAAgB,UAAU;AAC1B,iBAAW,QAAQ,EAAE,KAAK,CAAC,QAAQ;AACjC,8BAAsB,IAAI,aAAa,KAAK,CAAC,CAAC;AAAA,MAChD,CAAC;AAAA,IACH;AAAA,EACF,GAAG,CAACA,OAAM,eAAe,UAAU,CAAC;AAEpC,SAAO;AAAA,IACL;AAAA,IACA,aAAa,mBAAmB;AAAA,IAChC;AAAA,IACA,MAAAA;AAAA,IACA,cAAc;AAAA,IACd,OAAO;AAAA,IACP,kBAAkB;AAAA,IAClB,aAAa,mBAAmB;AAAA,IAChC;AAAA,EACF;AACF;AAEA,IAAM,wBAAwB,CAC5B,UACA,aACA,gBACG;AACH,QAAM,UAAU,SAAS,OAAO,CAAC,KAAK0B,aAAY;AAChD,UAAM,QAAQ,mBAAmBA,SAAQ,OAAO,WAAW;AAC3D,QAAI,CAAC,OAAO;AACV,aAAO;AAAA,IACT;AACA,WAAO,MAAM,IAAIF,SAAQE,SAAQ,OAAO,EAAE,MAAM,KAAK,EAAE,SAAS;AAAA,EAClE,GAAG,CAAC;AACJ,SAAO,UAAU;AACnB;AAEA,IAAM,qBAAqB,CACzB,OACA,gBACG;AACH,MAAI,UAAU,QAAQ;AACpB,WAAO;AAAA,EACT;AACA,QAAM,SAAS,QAAQ,KAAK;AAC5B,SAAO,YAAY,MAAM,KAAK;AAChC;;;AEpMA,SAAS,eAAAR,cAAa,UAAA7B,SAAQ,WAAAK,UAAS,YAAAJ,iBAA2B;AAClE,SAAS,kBAAAL,wBAAsB;AAC/B;AAAA,EACE,gBAAAG;AAAA,EACA,aAAAQ;AAAA,EACA,QAAAD;AAAA,EACA,QAAAR;AAAA,EACA;AAAA,EACA,SAAAmB;AAAA,EACA,MAAApB;AAAA,EAKA;AAAA,EACA;AAAA,EACA;AAAA,OACK;;;ACjBP,SAAS,eAAAgC,cAAwB,WAAAxB,gBAAe;AAChD,SAAS,kBAAAT,uBAAsB;AAC/B;AAAA,EACE;AAAA,EACA;AAAA,EACA,SAAA+B;AAAA,EACA,WAAAI;AAAA,OACK;AACP,SAAS,MAAAlC,KAAI,QAAAC,OAAM,QAAAQ,aAAY;;;ACR/B,SAAa,cAAAgC,mBAA4B;AAkBjC,gBAAA7C,aAAA;AAbD,IAAM,iBAAiB6C;AAAA,EAC5B,CAAC,OAAO,QAAQ;AACd,UAAM,EAAE,OAAO,IAAI,GAAG,KAAK,IAAI;AAC/B,WACE,gBAAA7C;AAAA,MAAC;AAAA;AAAA,QACC,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,SAAQ;AAAA,QACR,MAAK;AAAA,QACL,OAAM;AAAA,QACN;AAAA,QACC,GAAG;AAAA,QAEJ,0BAAAA;AAAA,UAAC;AAAA;AAAA,YACC,GAAE;AAAA,YACF,MAAK;AAAA,YACL,aAAY;AAAA;AAAA,QACd;AAAA;AAAA,IACF;AAAA,EAEJ;AACF;AAEO,IAAM,WAAW6C,YAAqC,CAAC,OAAO,QAAQ;AAC3E,QAAM,EAAE,OAAO,IAAI,GAAG,KAAK,IAAI;AAC/B,SACE,gBAAA7C;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,OAAM;AAAA,MACN;AAAA,MACC,GAAG;AAAA,MAEJ,0BAAAA,MAAC,UAAK,GAAE,+JAA8J;AAAA;AAAA,EACxK;AAEJ,CAAC;AAEM,IAAM,UAAU6C,YAAqC,CAAC,OAAO,QAAQ;AAC1E,QAAM,EAAE,OAAO,IAAI,GAAG,KAAK,IAAI;AAC/B,SACE,gBAAA7C;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,OAAM;AAAA,MACN;AAAA,MACC,GAAG;AAAA,MAEJ,0BAAAA,MAAC,UAAK,GAAE,qaAAoa;AAAA;AAAA,EAC9a;AAEJ,CAAC;AAEM,IAAM,WAAW6C,YAAqC,CAAC,OAAO,QAAQ;AAC3E,QAAM,EAAE,OAAO,IAAI,GAAG,KAAK,IAAI;AAC/B,SACE,gBAAA7C;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,OAAM;AAAA,MACN;AAAA,MACC,GAAG;AAAA,MAEJ,0BAAAA,MAAC,UAAK,GAAE,i0CAAg0C;AAAA;AAAA,EAC10C;AAEJ,CAAC;;;ADlCK,SAiBF,YAAAiB,WAhBI,OAAAjB,OADF,QAAAE,aAAA;AApBN,IAAM,mBAAmB,CAAC,UAAiC;AACzD,QAAM,EAAE,EAAE,IAAIC,gBAAe;AAC7B,QAAM,OAAOS,SAAQ,MAAM;AACzB,WAAO;AAAA,MACL,SAAS,MAAM,UAAU,MAAM,GAAG,CAAC;AAAA,MACnC,QAAQ,MAAM,UAAU,MAAM,GAAG,EAAE;AAAA,MACnC,UAAU,MAAM,UAAU,MAAM,EAAE;AAAA,IACpC;AAAA,EACF,GAAG,CAAC,MAAM,SAAS,CAAC;AACpB,QAAM,OAAOwB,aAAY,MAAM;AAC7B,cAAU,UAAU,UAAU,MAAM,SAAS;AAC7C,IAAAF,OAAM,QAAQ,EAAE,oBAAoB,CAAC;AAAA,EACvC,GAAG,CAAC,MAAM,SAAS,CAAC;AACpB,SACE,gBAAAhC;AAAA,IAACG;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,KAAK;AAAA,MACL,SAAQ;AAAA,MACR,WAAU;AAAA,MAEV;AAAA,wBAAAH,MAACW,OAAA,EAAK,WAAU,mEACd;AAAA,0BAAAb,MAACa,OAAA,EAAK,WAAU,0BAA0B,eAAK,SAAQ;AAAA,UACvD,gBAAAb,MAACa,OAAA,EAAM,eAAK,QAAO;AAAA,UACnB,gBAAAb,MAACa,OAAA,EAAK,WAAU,0BAA0B,eAAK,UAAS;AAAA,WAC1D;AAAA,QACA,gBAAAb;AAAA,UAAC;AAAA;AAAA,YACC,SAAS;AAAA,YACT,WAAU;AAAA;AAAA,QACZ;AAAA;AAAA;AAAA,EACF;AAEJ;AAEO,IAAM,cAAc,CAAC,UAA4B;AACtD,QAAM,EAAE,EAAE,IAAIG,gBAAe;AAE7B,SACE,gBAAAH,MAAAiB,WAAA,EACE,0BAAAf;AAAA,IAACG;AAAA,IAAA;AAAA,MACC,SAAQ;AAAA,MACR,WAAU;AAAA,MACV,OAAM;AAAA,MACN,WAAWD;AAAA,QACT;AAAA,QACA;AAAA,QACA,MAAM,aAAa;AAAA,QACnB,CAAC,MAAM,aAAa;AAAA,MACtB;AAAA,MAEA;AAAA,wBAAAJ;AAAA,UAAC;AAAA;AAAA,YACC,WAAU;AAAA,YACV,SAAS,MAAM;AACb,kBAAI,MAAM,WAAW;AACnB;AAAA,cACF;AACA,oBAAM,WAAW,MAAM,SAAS;AAAA,YAClC;AAAA;AAAA,QACF;AAAA,QACC,MAAM,aACL,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,WAAWI;AAAA,cACT;AAAA,cACA;AAAA,cACA;AAAA,YACF;AAAA,YAEC,YAAE,0BAA0B;AAAA;AAAA,QAC/B;AAAA,QAEF,gBAAAF;AAAA,UAACG;AAAA,UAAA;AAAA,YAEC,WAAU;AAAA,YACV,WAAU;AAAA,YACV,KAAK;AAAA,YACL,WAAU;AAAA,YAET;AAAA,oBAAM,gBACL,gBAAAL,MAACa,OAAA,EAAK,WAAU,oDACb,wBAAc,MAAM,eAAe,EAAE,GACxC,IAEA,gBAAAX;AAAA,gBAACG;AAAA,gBAAA;AAAA,kBACC,SAAQ;AAAA,kBACR,WAAU;AAAA,kBACV,WAAU;AAAA,kBACV,SAAS,CAAC,UAAU;AAClB,0BAAM,SAAS;AAAA,sBACb,WAAW,MAAM;AAAA,sBACjB,aAAa,MAAM,eAAe;AAAA,oBACpC,CAAC;AACD,0BAAM,gBAAgB;AACtB,0BAAM,eAAe;AAAA,kBACvB;AAAA,kBAEA;AAAA,oCAAAL,MAACa,OAAA,EAAK,WAAU,oDACb,gBAAM,aACT;AAAA,oBACA,gBAAAb,MAAC,YAAS,WAAU,0DAAyD;AAAA;AAAA;AAAA,cAC/E;AAAA,cAEF,gBAAAA,MAACsC,UAAA,EAAQ,SAAS,gBAAAtC,MAAC,oBAAiB,WAAW,MAAM,WAAW,GAC9D,0BAAAE,MAACW,OAAA,EAAK,WAAU,qFAAoF;AAAA;AAAA,gBAC7F,cAAc,MAAM,SAAS;AAAA,iBACpC,GACF;AAAA;AAAA;AAAA,UAlCK,MAAM;AAAA,QAmCb;AAAA,QACA,gBAAAX;AAAA,UAACG;AAAA,UAAA;AAAA,YACC,WAAU;AAAA,YACV,WAAU;AAAA,YACV,KAAK;AAAA,YAEL;AAAA,8BAAAL,MAACa,MAAK,SAAL,EAAa,MAAK,SAAQ,IAAI,GAC5B,gBAAM,gBAAgB,GACzB;AAAA,cACA,gBAAAb,MAACa,OAAA,EAAK,kBAAI;AAAA;AAAA;AAAA,QACZ;AAAA;AAAA;AAAA,EACF,GACF;AAEJ;;;AE9IA,SAAS,YAAAL,WAAU,WAAAI,gBAAe;AAClC,SAAS,cAAAQ,mBAAkB;AAC3B,SAAS,kBAAAjB,uBAAsB;AAC/B,SAAS,iBAAAQ,sBAAqB;AAC9B;AAAA,EACE,QAAAN;AAAA,EACA,gBAAAC;AAAA,EACA,SAAA4B;AAAA,EACA,QAAArB;AAAA,EACA,aAAAC;AAAA,EACA,MAAAV;AAAA,EACA,WAAAkC;AAAA,OACK;;;ACZP,SAAS,kBAAAnC,uBAAsB;AAC/B,SAAS,gBAAgB,iBAAiB;AAYtC,gBAAAH,aAAA;AARG,IAAM,oBAAoB,CAAC,UAK5B;AACJ,QAAM,EAAE,EAAE,IAAIG,gBAAe;AAC7B,SACE,gBAAAH;AAAA,IAAC;AAAA;AAAA,MACC,aAAa,gBAAgB,MAAM,mBAAmB,KAAK,CAAC;AAAA,MAC5D,WAAS;AAAA,MACT,OAAO,EAAE,iCAAiC;AAAA,MAC1C,OAAO,MAAM;AAAA,MACb,UAAU,CAAC,MAAM;AACf,cAAM,SAAS,EAAE,OAAO,MAAM,QAAQ,uBAAuB,EAAE;AAC/D,cAAM,YAAY,MAAM;AAAA,MAC1B;AAAA,MACA,YAAY;AAAA,QACV,eAAe,0BAA0B,qBAAqB;AAAA,MAChE;AAAA,MACA,YAAY;AAAA,QACV,OAAO;AAAA,QACP,OAAO;AAAA,MACT;AAAA,MACA,WAAW;AAAA,MACX,WAAW;AAAA,MACX,cAAa;AAAA,MACb,UAAU,EAAE,uCAAuC;AAAA,MACnD,WAAU;AAAA,MACV,OAAO,MAAM,UAAU,WAAW;AAAA;AAAA,EACpC;AAEJ;;;ADWQ,SAyEJ,YAAAiB,WAzEI,OAAAjB,OAiBJ,QAAAE,aAjBI;AAhCR,IAAM,wBAAwB;AAKvB,IAAM,mBAAmB,CAAC,UAAiC;AAChE,QAAM,EAAE,EAAE,IAAIC,gBAAe;AAC7B,QAAM,EAAE,SAAS,IAAIW,WAAU;AAC/B,QAAM,CAACI,OAAM,OAAO,IAAIV,UAAS,KAAK;AACtC,QAAM,CAAC,UAAU,WAAW,IAAIA,UAA6B,MAAS;AACtE,QAAM,EAAE,MAAM,IAAIY,YAAW;AAC7B,QAAM,CAAC,SAAS,UAAU,IAAIZ,UAAS,KAAK;AAC5C,QAAM,CAAC,SAAS,UAAU,IAAIA,UAAS,KAAK;AAE5C,QAAM,EAAE,cAAc,IAAIG,eAAc;AAExC,QAAM,qBAAqBC,SAAQ,MAAM;AACvC,WACE,eAAe,YAAY,sBAAsB;AAAA,EAErD,GAAG,CAAC,aAAa,CAAC;AAElB,QAAM,kBAAkBA,SAAQ,MAAM;AACpC,WAAO,MAAM,aAAa,UAAU;AAAA,EACtC,GAAG,CAAC,KAAK,CAAC;AAEV,QAAM,UAAUA,SAAQ,MAAM;AAC5B,WAAO,mBAAmB,qBACxB,gBAAAZ;AAAA,MAACsC;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,SAAS,EAAE,yCAAyC;AAAA,QAEpD,0BAAAtC;AAAA,UAAC;AAAA;AAAA,YACC,WAAWI,IAAG,kDAAkD;AAAA;AAAA,QAClE;AAAA;AAAA,IACF,IAEA,gBAAAJ;AAAA,MAAC;AAAA;AAAA,QACC,WAAWI;AAAA,UACT;AAAA,QACF;AAAA,QACA,SAAS,MAAM;AACb,kBAAQ,IAAI;AAAA,QACd;AAAA;AAAA,IACF;AAAA,EAEJ,GAAG,CAAC,iBAAiB,kBAAkB,CAAC;AAExC,QAAM,SACJ,gBAAAF;AAAA,IAACG;AAAA,IAAA;AAAA,MACC,IAAI;AAAA,MACJ,WAAU;AAAA,MACV,SAAQ;AAAA,MACR,WAAU;AAAA,MACV,OAAM;AAAA,MAEN;AAAA,wBAAAL,MAACa,OAAA,EAAK,QAAO,YAAY,YAAE,+BAA+B,GAAE;AAAA,QAC5D,gBAAAb,MAACa,OAAA,EAAK,WAAU,0CACb,YAAE,uCAAuC;AAAA,UACxC;AAAA,UACA,gBAAgB,qBAAqB;AAAA,QACvC,CAAC,GACH;AAAA;AAAA;AAAA,EACF;AAGF,QAAM,QAAQ,MAAM;AAClB,gBAAY,EAAE;AACd,eAAW,KAAK;AAChB,eAAW,KAAK;AAAA,EAClB;AAEA,QAAM,mBAAmB,CAACiC,cAAiC;AACzD,QAAI,CAACA,aAAY,EAAEA,UAAS,UAAU,KAAKA,UAAS,UAAU,KAAK;AACjE,iBAAW,IAAI;AACf,aAAO;AAAA,IACT;AACA,eAAW,KAAK;AAChB,WAAO;AAAA,EACT;AAEA,QAAM,oBAAoB,CAACA,cAAiC;AAC1D,QAAI,YAAY,eAAe,kBAAkB,CAAC;AAClD,QAAIA,WAAU;AACZ,kBAAYA,UAAS,KAAK;AAAA,IAC5B;AAEA,eAAW,IAAI;AACf,UACG,OAAO,SAAS,EAChB,KAAK,CAAC,QAAQ;AAEb,YAAM;AACN,MAAAZ,OAAM,QAAQ,EAAE,6CAA6C,CAAC;AAE9D,cAAQ,KAAK;AAAA,IACf,CAAC,EACA,MAAM,CAAC,MAAW;AACjB,MAAAA,OAAM,MAAM,EAAE,4CAA4C,CAAC;AAAA,IAC7D,CAAC,EACA,QAAQ,MAAM;AACb,iBAAW,KAAK;AAAA,IAClB,CAAC;AAAA,EACL;AACA,SACE,gBAAAhC,MAAAe,WAAA,EACG;AAAA;AAAA,IACD,gBAAAjB;AAAA,MAACM;AAAA,MAAA;AAAA,QACC,OAAO;AAAA,QACP,MAAMY;AAAA,QACN,cAAc,CAACA,UAAS;AACtB,gBAAM;AACN,kBAAQA,KAAI;AAAA,QACd;AAAA,QACA,MAAM,WAAW,OAAO;AAAA,QACxB,SAAS;AAAA,UACP,SAAS;AAAA,YACP,OAAO,EAAE,gBAAgB;AAAA,YACzB,UAAU,WAAW;AAAA,YACrB;AAAA,YACA,SAAS,MAAM;AACb,oBAAM6B,WAAU,iBAAiB,QAAQ;AACzC,kBAAIA,UAAS;AACX;AAAA,cACF;AACA,gCAAkB,QAAQ;AAAA,YAC5B;AAAA,UACF;AAAA,QACF;AAAA,QACA,YAAY;AAAA,UACV,SAAS;AAAA,QACX;AAAA,QAEA,0BAAA/C;AAAA,UAAC;AAAA;AAAA,YACC;AAAA,YACA,aAAa,CAAC8C,cAAa;AACzB,+BAAiBA,SAAQ;AACzB,0BAAYA,SAAQ;AAAA,YACtB;AAAA,YACA;AAAA,YACA;AAAA;AAAA,QACF;AAAA;AAAA,IACF;AAAA,KACF;AAEJ;;;AEjKA,SAAS,aAAAL,YAAW,YAAAjC,iBAAgB;AACpC,SAAS,cAAAY,mBAAkB;AAC3B,SAAS,kBAAAjB,wBAAsB;AAC/B,SAAS,gBAAAG,eAAc,SAAA4B,QAAO,QAAArB,aAAuB;AA6BxC,gBAAAb,aAAA;AA1BN,IAAM,qBAAqB,CAAC,UAK7B;AACJ,QAAM,EAAE,WAAW,IAAIoB,YAAW;AAClC,QAAM,CAAC,SAAS,UAAU,IAAIZ,UAAS,KAAK;AAC5C,QAAM,EAAE,EAAE,IAAIL,iBAAe;AAC7B,QAAM,CAAC,aAAa,cAAc,IAAIK,UAA6B,MAAS;AAC5E,QAAM,CAAC,SAAS,UAAU,IAAIA,UAAS,KAAK;AAE5C,QAAM,mBAAmB,CAAC,aAAiC;AACzD,QAAI,CAAC,YAAY,EAAE,SAAS,UAAU,KAAK,SAAS,UAAU,KAAK;AACjE,iBAAW,IAAI;AACf,aAAO;AAAA,IACT;AACA,eAAW,KAAK;AAAA,EAClB;AACA,EAAAiC,WAAU,MAAM;AACd,mBAAe,MAAM,QAAQ;AAC7B,eAAW,KAAK;AAChB,eAAW,KAAK;AAAA,EAClB,GAAG,CAAC,MAAM,UAAU,MAAM,IAAI,CAAC;AAC/B,SACE,gBAAAzC;AAAA,IAACM;AAAA,IAAA;AAAA,MACC,OAAO,gBAAAN,MAACa,OAAA,EAAM,YAAE,6BAA6B,GAAE;AAAA,MAC/C,MAAM,MAAM;AAAA,MACZ,cAAc,MAAM;AAAA,MACpB,YAAY;AAAA,QACV,SAAS;AAAA,MACX;AAAA,MACA,SAAS;AAAA,QACP,SAAS;AAAA,UACP,OAAO,EAAE,gBAAgB;AAAA,UACzB,UAAU,WAAW;AAAA,UACrB;AAAA,UACA,SAAS,MAAM;AACb,gBAAI,iBAAiB,WAAW,GAAG;AACjC;AAAA,YACF;AACA,uBAAW,IAAI;AACf,wBACI,OAAO;AAAA,cACP,cAAc,MAAM;AAAA,cACpB,aAAa;AAAA,YACf,CAAC,EACA,MAAM,CAAC,MAAM;AAEZ,cAAAqB,OAAM,MAAM,EAAE,0CAA0C,CAAC;AAAA,YAC3D,CAAC,EACA,KAAK,CAAC,QAAQ;AACb,cAAAA,OAAM,QAAQ,EAAE,2CAA2C,CAAC;AAC5D,oBAAM,aAAa,KAAK;AAAA,YAC1B,CAAC,EACA,QAAQ,MAAM;AACb,yBAAW,KAAK;AAAA,YAClB,CAAC;AAAA,UACL;AAAA,QACF;AAAA,QACA,WAAW;AAAA,UACT,OAAO,EAAE,eAAe;AAAA,UACxB,SAAS,MAAM,MAAM,aAAa,KAAK;AAAA,QACzC;AAAA,MACF;AAAA,MAEA,0BAAAlC;AAAA,QAAC;AAAA;AAAA,UACC,UAAU;AAAA,UACV,aAAa,CAAC,aAAa;AACzB,6BAAiB,QAAQ;AACzB,2BAAe,YAAY,EAAE;AAAA,UAC/B;AAAA,UACA;AAAA;AAAA,MACF;AAAA;AAAA,EACF;AAEJ;;;AL5CiB,SAmFb,YAAAiB,WAnFa,OAAAjB,OAuFP,QAAAE,aAvFO;AAdV,SAAS,aACd,OACA;AACA,QAAM,EAAE,EAAE,IAAIC,iBAAe;AAC7B,QAAM,EAAE,SAAS,IAAIW,WAAU;AAC/B,QAAM,QAAQP,QAA6C,IAAI;AAE/D,QAAM,eAAe6B,aAAY,MAAM;AACrC,QAAI,MAAM,SAAS;AACjB,mBAAa,MAAM,OAAO;AAC1B,YAAM,UAAU;AAAA,IAClB;AAAA,EAEF,GAAG,CAAC,CAAC;AACL,QAAM,SAAS,gBAAApC,MAACa,OAAA,EAAK,QAAO,YAAY,YAAE,wBAAwB,GAAE;AACpE,QAAM,UAAUD,SAAQ,MAAM;AAC5B,QAAI,MAAM,iBAAiB,UAAU;AACnC,aACE,gBAAAZ,MAAC,SAAI,SAAS,MAAM,MAAM,aAAa,IAAI,GACxC,gBAAM,eACT;AAAA,IAEJ;AACA,QAAI,UAAU;AACZ,aACE,gBAAAA;AAAA,QAACK;AAAA,QAAA;AAAA,UACC,WAAU;AAAA,UACV,WAAU;AAAA,UACV,SAAQ;AAAA,UAER,0BAAAL;AAAA,YAAC;AAAA;AAAA,cACC,WAAWI,IAAG,oBAAoB;AAAA,cAClC,SAAS,MAAM,MAAM,aAAa,IAAI;AAAA;AAAA,UACxC;AAAA;AAAA,MACF;AAAA,IAEJ;AACA,WAAO,gBAAAJ,MAAC,kBAAe,WAAWI,IAAG,oBAAoB,GAAG;AAAA,EAC9D,GAAG,CAAC,UAAU,MAAM,aAAa,CAAC;AAElC,QAAM,CAAC,gBAAgB,iBAAiB,IAAII,UAAS,KAAK;AAC1D,QAAM,CAAC,iBAAiB,kBAAkB,IAAIA,UAM5C,MAAS;AAEX,QAAM,eACJ,gBAAAR;AAAA,IAACK;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,WAAU;AAAA,MACV,SAAQ;AAAA,MACR,IAAI;AAAA,MACJ,OAAM;AAAA,MACN,WAAU;AAAA,MAEV,0BAAAL,MAACa,OAAA,EAAK,WAAU,2EACb,YAAE,wCAAwC,GAC7C;AAAA;AAAA,EACF;AAGF,QAAM,mBAAmB,MAAM;AAC7B,QAAI,CAAC,MAAM,aAAa,QAAQ;AAC9B,aAAO;AAAA,IACT;AACA,WACE,gBAAAb,MAAC,cAAW,WAAU,yEACpB,0BAAAA,MAACK,OAAA,EAAK,WAAU,UAAS,KAAK,GAAG,WAAU,SAAQ,OAAM,QACtD,gBAAM,YAAY,IAAI,CAAC,eACtB,gBAAAL;AAAA,MAAC;AAAA;AAAA,QAEC,WAAW,WAAW;AAAA,QACtB,aAAa,WAAW;AAAA,QACxB,eAAe;AAAA,QACf,WAAW,WAAW,OAAO,MAAM;AAAA,QACnC,UAAU,CAAC,cAAc;AACvB,gBAAM,WAAW,SAAS;AAAA,QAC5B;AAAA,QACA,cAAc,WAAW,gBAAgB;AAAA,QACzC,QAAQ,MAAM;AACZ,6BAAmB;AAAA,YACjB,WAAW,WAAW;AAAA,YACtB,aAAa,WAAW,eAAe;AAAA,UACzC,CAAC;AACD,4BAAkB,IAAI;AAAA,QACxB;AAAA;AAAA,MAfK,WAAW;AAAA,IAgBlB,CACD,GACH,GACF;AAAA,EAEJ;AAEA,QAAM,UACJ,gBAAAE,MAAAe,WAAA,EACE;AAAA,oBAAAf,MAACG,OAAA,EAAK,WAAU,UAAS,KAAK,GAAG,WAAU,SAAQ,OAAM,QACtD;AAAA,OAAC,YAAY;AAAA,MACd,gBAAAH,MAACG,OAAA,EAAK,WAAU,UAAS,KAAK,GAAG,WAAU,SAAQ,OAAM,QACvD;AAAA,wBAAAH,MAACG,OAAA,EAAK,WAAU,UAAS,KAAK,GAAG,WAAU,SAAQ,OAAM,QACvD;AAAA,0BAAAL,MAACa,OAAA,EAAK,WAAU,uDACb,YAAE,oCAAoC,GACzC;AAAA,UACA,gBAAAb;AAAA,YAAC;AAAA;AAAA,cACC,WAAW,MAAM,aAAa,MAAM;AAAA,cACpC,eAAe;AAAA,cACf,aAAa,MAAM,eAAe;AAAA,cAClC,WAAW,MAAM,qBAAqB,MAAM,aAAa;AAAA,cACzD,UAAU,CAAC,cAAc;AACvB,sBAAM,WAAW,SAAS;AAAA,cAC5B;AAAA,cACA,cAAc,MAAM,aAAa,gBAAgB;AAAA;AAAA,UACnD;AAAA,WACF;AAAA,QAEA,gBAAAE,MAACG,OAAA,EAAK,WAAU,UAAS,KAAK,GAAG,WAAU,SAAQ,OAAM,QACvD;AAAA,0BAAAH,MAACG,OAAA,EAAK,SAAQ,WAAU,WAAU,UAAS,OAAM,QAAO,KAAK,GAC3D;AAAA,4BAAAL,MAACa,OAAA,EAAK,WAAU,uDACb,YAAE,oCAAoC,GACzC;AAAA,YACA,gBAAAX,MAACG,OAAA,EAAK,SAAQ,OAAM,KAAK,GACtB;AAAA,oBAAM,YAAY,SAAS,KAC1B,gBAAAL;AAAA,gBAAC;AAAA;AAAA,kBACC,WAAU;AAAA,kBACV,SAAS,MAAM;AAEb,wBAAI,WAAW;AACf,wBAAI,UAAU;AACZ,iCAAW;AAAA,oBACb;AACA,oBAAAwB,OAAM,KAAK,QAAQ;AAAA,kBACrB;AAAA;AAAA,cACF;AAAA,cAEF,gBAAAxB,MAAC,oBAAiB,QAAQ,MAAM,kBAAkB;AAAA,eACpD;AAAA,aACF;AAAA,UACC,iBAAiB;AAAA,WACpB;AAAA,SACF;AAAA,OACF;AAAA,IACA,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,WAAW,iBAAiB,aAAa;AAAA,QACzC,UAAU,iBAAiB,eAAe;AAAA,QAC1C,MAAM;AAAA,QACN,cAAc;AAAA;AAAA,IAChB;AAAA,KACF;AAEF,MAAI,UAAU;AACZ,WACE,gBAAAE,MAAAe,WAAA,EACG;AAAA;AAAA,MACD,gBAAAjB;AAAA,QAACM;AAAA,QAAA;AAAA,UACC,OAAO;AAAA,UACP,MAAM,MAAM;AAAA,UACZ,cAAc,MAAM;AAAA,UACpB,MAAK;AAAA,UACL,YAAY;AAAA,YACV,SAAS;AAAA,UACX;AAAA,UAEC;AAAA;AAAA,MACH;AAAA,OACF;AAAA,EAEJ;AAEA,SACE,gBAAAJ,MAAC,eAAY,MAAM,MAAM,MAAM,cAAc,MAAM,cACjD;AAAA,oBAAAF,MAAC,iBACC,0BAAAA;AAAA,MAAC;AAAA;AAAA,QACC,cAAc,MAAM;AAClB,gBAAM,aAAa,IAAI;AAAA,QACzB;AAAA,QACA,cAAc,MAAM;AAClB,gBAAM,UAAU,WAAW,MAAM;AAC/B,kBAAM,aAAa,KAAK;AAAA,UAC1B,GAAG,GAAG;AAAA,QACR;AAAA,QAEC;AAAA;AAAA,IACH,GACF;AAAA,IACA,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,OAAM;AAAA,QACN,MAAK;AAAA,QACL,YAAY;AAAA,QACZ,kBAAkB,EAAE,OAAO,GAAG;AAAA,QAC9B;AAAA,QACA,cAAc,MAAM;AAClB,gBAAM,aAAa,KAAK;AACxB,gBAAM,UAAU,aAAa,MAAM,OAAO,IAAI;AAAA,QAChD;AAAA,QACA,WAAWI;AAAA,UACT;AAAA,QACF;AAAA,QAEC;AAAA;AAAA,IACH;AAAA,KACF;AAEJ;;;AM1NS,gBAAAJ,aAAA;AAFF,IAAM,mBAA8C,CAAC,UAAU;AACpE,QAAM,QAAQ,iBAAiB;AAC/B,SAAO,gBAAAA,MAAC,gBAAc,GAAG,OAAO,eAAe,OAAO,eAAe;AACvE;;;ACWQ,gBAAAA,OAoDJ,QAAAE,cApDI;AAdD,IAAM,mBAAuC,CAAC,UAAU;AAC7D,QAAM,EAAE,QAAQ,IAAI,SAAS,IAAI,UAAU,IAAI;AAE/C,SACE,gBAAAF,MAAC,SAAI,WAAU,kEACb,0BAAAA;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,OAAM;AAAA,MACN,QAAO;AAAA,MACP,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,aAAa;AAAA,MACb,WAAW,GAAG,SAAS;AAAA,MAEvB,0BAAAA,MAAC,UAAK,GAAE,26DAA06D;AAAA;AAAA,EACp7D,GACF;AAEJ;AAEO,IAAM,cAAkC,CAAC,UAAU;AACxD,QAAM,EAAE,QAAQ,IAAI,SAAS,IAAI,UAAU,IAAI;AAE/C,SACE,gBAAAA,MAAC,SAAI,WAAU,kEACb,0BAAAA;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,OAAM;AAAA,MACN,QAAO;AAAA,MACP,SAAQ;AAAA,MAER,MAAK;AAAA,MACL,aAAa;AAAA,MACb,WAAW,GAAG,SAAS;AAAA,MAEvB,0BAAAA,MAAC,UAAK,GAAE,stBAAqtB;AAAA;AAAA,EAC/tB,GACF;AAEJ;AAEO,IAAM,aAAiC,CAAC,UAAU;AACvD,QAAM,EAAE,QAAQ,IAAI,SAAS,IAAI,UAAU,IAAI;AAE/C,SACE,gBAAAA,MAAC,SAAI,WAAU,kEACb,0BAAAA;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,OAAM;AAAA,MACN,QAAO;AAAA,MACP,SAAQ;AAAA,MAER,MAAK;AAAA,MACL,aAAa;AAAA,MACb,WAAW,GAAG,SAAS;AAAA,MAEvB,0BAAAA,MAAC,UAAK,GAAE,+OAA8O;AAAA;AAAA,EACxP,GACF;AAEJ;AAEO,IAAM,gBAAoC,CAAC,UAAU;AAC1D,QAAM,EAAE,QAAQ,IAAI,SAAS,IAAI,UAAU,IAAI;AAE/C,SACE,gBAAAE;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,QAAO;AAAA,MACP,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,OAAM;AAAA,MAEN;AAAA,wBAAAF;AAAA,UAAC;AAAA;AAAA,YACC,GAAE;AAAA,YACF,MAAK;AAAA,YACL,aAAa;AAAA;AAAA,QACf;AAAA,QACA,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,GAAE;AAAA,YACF,MAAK;AAAA,YACL,aAAa;AAAA;AAAA,QACf;AAAA;AAAA;AAAA,EACF;AAEJ;;;AXpDI,qBAAAiB,WAEI,OAAAjB,OAFJ,QAAAE,cAAA;AAFG,IAAM,YAAgC,CAAC,UAAU;AACtD,SACE,gBAAAA,OAAAe,WAAA,EACE;AAAA,oBAAAjB,MAAC,SAAI,SAAS,MAAM,WAAW,WAAW,OAAO,WAC/C,0BAAAA,MAAC,cAAW,GACd;AAAA,IACA,gBAAAA,MAAC,gBAAc,GAAG,OAAO;AAAA,KAC3B;AAEJ;AAEA,IAAM,eAAmC,CAAC,UAAU;AAClD,QAAM,EAAE,MAAM,IAAIoB,YAAW;AAC7B,QAAM,EAAE,EAAE,IAAIjB,iBAAe;AAE7B,QAAM,EAAE,cAAc,eAAe,IAAIS,SAAQ,MAAM;AACrD,UAAM,WAAW,OAAO,SAAS,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,WAAW;AACjE,UAAM,aAAa,OAAO,SAAS,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,WAAW;AAClE,WAAO,EAAE,cAAc,SAAS,gBAAgB,UAAU;AAAA,EAC5D,GAAG,CAAC,MAAM,KAAK,CAAC;AAEhB,QAAM,iBAAiBA;AAAA,IACrB,MAAM,MAAM,UAAUO,mBAAkB;AAAA,IACxC,CAAC,MAAM,MAAM;AAAA,EACf;AAEA,QAAM,gBAAgB,CAAC,WAAwB;AAC7C,UAAM,eAAe,gBAAgB,MAAM;AAC3C,UAAM,YAAY;AAAA,EACpB;AAEA,QAAM,oBAAoBP,SAAQ,MAAM;AACtC,UAAM,OACJ,MAAM,cAAc,MAAM,gBACtB,MAAM,UACN,MAAM,aAAa,KAAK,CAAC,SAAS,KAAK,OAAO,MAAM,SAAS,GACzD,eAAe;AACzB,WACE,gBAAAV,OAAC,SAAI,WAAU,0GACb;AAAA,sBAAAF,MAAC,SACC,0BAAAA,MAAC,cAAW,GACd;AAAA,MACA,gBAAAE,OAAC,SAAI,WAAU,qDACb;AAAA,wBAAAF;AAAA,UAACa,MAAK;AAAA,UAAL;AAAA,YACC,MAAK;AAAA,YACL,WAAU;AAAA,YAET;AAAA;AAAA,QACH;AAAA,QACA,gBAAAb;AAAA,UAACa,MAAK;AAAA,UAAL;AAAA,YACC,MAAK;AAAA,YACL,WAAU;AAAA,YACV,iBAAO,MAAM,SAAS;AAAA;AAAA,QAAG;AAAA,SAC7B;AAAA,MACA,gBAAAb,MAAC,SAAI,WAAU,eACb,0BAAAA,MAAC,iBAAc,GACjB;AAAA,OACF;AAAA,EAEJ,GAAG,CAAC,OAAO,CAAC,CAAC;AAEb,QAAM,mBAAmB,CAAC,QAAgB;AACxC,WAAO,KAAK,KAAK,QAAQ;AAAA,EAC3B;AAEA,SACE,gBAAAA,MAAC,SAAM,MAAM,MAAM,MAAM,cAAc,MAAM,cAC3C,0BAAAA;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,WAAU;AAAA,MACV,WAAS;AAAA,MACT,eAAe;AAAA,MACf,cAAc;AAAA,MAEd,0BAAAE,OAAC,SAAI,WAAU,2DACb;AAAA,wBAAAF,MAAC,SAAI,WAAU,6EACb,0BAAAA,MAAC,YAAU,GAAG,OAAO,MAAM,GAC7B;AAAA,QACC,OAAO;AAAA,QACP,kBACC,gBAAAA,MAAC,oBAAiB,eAAe,mBAAmB;AAAA,SAEpD,aAAa,SAAS,KAAK,eAAe,SAAS,MACnD,gBAAAE,OAAC,SAAI,WAAU,uFACZ;AAAA,uBAAa,IAAI,CAAC,SACjB,gBAAAF;AAAA,YAAC;AAAA;AAAA,cACC;AAAA,cAEA,SAAS;AAAA;AAAA,YADJ,QAAQ,KAAK,IAAI;AAAA,UAExB,CACD;AAAA,UACA,eAAe,SAAS,KAAK,aAAa,SAAS,KAClD,gBAAAA,MAACwC,UAAA,EAAQ,WAAU,uBAAsB,WAAW,GAAG;AAAA,UAExD,eAAe,IAAI,CAAC,SACnB,gBAAAxC;AAAA,YAAC;AAAA;AAAA,cACC;AAAA,cAEA,SAAS;AAAA;AAAA,YADJ,QAAQ,KAAK,IAAI;AAAA,UAExB,CACD;AAAA,WACH;AAAA,QAEF,gBAAAE,OAAC,SAAI,WAAU,+FACb;AAAA,0BAAAA,OAAC,SAAI,WAAU,gDACZ;AAAA,kBAAM,eACL,gBAAAF;AAAA,cAAC;AAAA;AAAA,gBACC,SAAS,MAAM,iBAAiB,MAAM,WAAqB;AAAA,gBAE3D,0BAAAA,MAAC,eAAY,OAAO,IAAI,QAAQ,IAAI;AAAA;AAAA,YACtC;AAAA,YAED,MAAM,cACL,gBAAAA;AAAA,cAAC;AAAA;AAAA,gBACC,SAAS,MAAM,iBAAiB,MAAM,UAAoB;AAAA,gBAE1D,0BAAAA,MAAC,cAAW,OAAO,IAAI,QAAQ,IAAI;AAAA;AAAA,YACrC;AAAA,YAED,MAAM,cACL,gBAAAA;AAAA,cAAC;AAAA;AAAA,gBACC,SAAS,MAAM,iBAAiB,MAAM,UAAoB;AAAA,gBAE1D,0BAAAA,MAAC,oBAAiB,OAAO,IAAI,QAAQ,IAAI;AAAA;AAAA,YAC3C;AAAA,YAED,MAAM,WACL,gBAAAA;AAAA,cAAC;AAAA;AAAA,gBACC,SAAS,MAAM,iBAAiB,MAAM,OAAiB;AAAA,gBACvD,WAAU;AAAA,gBAEV,0BAAAA,MAAC,iBAAc;AAAA;AAAA,YACjB;AAAA,aAEJ;AAAA,UACC,MAAM,eACL,gBAAAA;AAAA,YAAC;AAAA;AAAA,cACC,WAAU;AAAA,cACV,SAAS,MAAM,iBAAiB,MAAM,WAAqB;AAAA,cAE1D,YAAE,kBAAkB;AAAA;AAAA,UACvB;AAAA,WAEJ;AAAA,SACF;AAAA;AAAA,EACF,GACF;AAEJ;AAOA,IAAM,UAA4B,CAAC,EAAE,MAAM,QAAQ,MAAM;AACvD,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,QAAM,EAAE,cAAc,IAAIoB,YAAW;AACrC,QAAM,cAAc,MAAM;AAExB,UAAM,iBACJ,KAAK,WAAW,SAAS,KAAK,KAAK,WAAW,UAAU;AAE1D,QAAI,QAAQ;AACV,aAAO,KAAK,MAAM,MAAM;AAAA,IAC1B,WAAW,gBAAgB;AACzB,aAAO,SAAS,OAAO;AAAA,IACzB,OAAO;AACL,gBAAU,EAAE,MAAY,MAAY,OAAO,UAAU,CAAC;AAAA,IACxD;AAAA,EACF;AACA,MAAI,OAAO,iBAAiB,YAAY;AACtC,WACE,gBAAApB;AAAA,MAAC;AAAA;AAAA,QACC,WAAU;AAAA,QACV,SAAS;AAAA,QAER,uBAAa,EAAE,MAAY,KAAW,CAAC;AAAA;AAAA,IAC1C;AAAA,EAEJ;AACA,MAAI,qBAAqB,CAAC,eAAe;AACvC,WAAO;AAAA,EACT;AACA,QAAM,cAAc,CAAC,CAAC,KAAK;AAC3B,QAAM,gBAAgB,cAClB,0DACA;AACJ,SACE,gBAAAE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,0DAA0D,cAAc,aAAa,EAAE;AAAA,MAClG,SAAS;AAAA,MAET;AAAA,wBAAAF,MAAC,SAAK,gBAAK;AAAA,QACX,gBAAAA,MAAC,SAAI,WAAW,eAAgB,gBAAK;AAAA,QACpC;AAAA;AAAA;AAAA,EACH;AAEJ;;;AY/OS,gBAAAA,aAAA;AAFF,IAAM,gBAAoC,CAAC,UAAU;AAC1D,QAAM,QAAQ,iBAAiB;AAC/B,SAAO,gBAAAA,MAAC,aAAW,GAAG,OAAQ,GAAG,OAAO;AAC1C;;;ACPA,SAAS,aAAAyC,YAAW,UAAAlC,SAAQ,YAAAC,iBAAgB;AAC5C,SAAS,uBAAuB;AAChC,SAAS,iBAAAG,sBAAqB;AAIvB,IAAM,sBAAsB,MAAM;AACvC,QAAM,CAACO,OAAM,OAAO,IAAIV,UAAS,KAAK;AACtC,QAAM,EAAE,cAAc,IAAIG,eAAc;AACxC,QAAM,WAAWJ,QAA6C,IAAI;AAElE,QAAM,CAAC,iBAAiB,kBAAkB,IAAI;AAAA,IAC5C;AAAA,IACA;AAAA,EACF;AAEA,QAAM,aAAa,MAAM;AACvB,YAAQ,IAAI;AAAA,EACd;AAEA,QAAM,aAAa,MAAM;AACvB,YAAQ,KAAK;AAAA,EACf;AAEA,QAAM,gBAAgB,CAAC,QAAgB;AACrC,QAAI,CAAC,WAAW,GAAG,GAAG;AACpB;AAAA,IACF;AACA,UAAM,EAAE,UAAU,IAAI,eAAe,cAAc,CAAC;AACpD,QAAI,OAAO,cAAc,YAAY;AACnC,gBAAU,GAAG;AAAA,IACf,OAAO;AACL,aAAO,SAAS,OAAO;AAAA,IACzB;AAAA,EACF;AAEA,EAAAkC,WAAU,MAAM;AACd,QAAI,iBAAiB;AACnB,eAAS,UAAU,WAAW,MAAM;AAClC,2BAAmB,KAAK;AAAA,MAC1B,GAAG,GAAI;AAAA,IACT;AACA,WAAO,MAAM;AACX,UAAI,SAAS,SAAS;AACpB,qBAAa,SAAS,OAAO;AAAA,MAC/B;AAAA,IACF;AAAA,EACF,GAAG,CAAC,eAAe,CAAC;AAEpB,SAAO;AAAA,IACL,MAAAvB;AAAA,IACA,cAAc;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,WAAW,KAAa;AAC/B,MAAI;AACF,UAAM,MAAM,IAAI,IAAI,GAAG;AACvB,WAAO,CAAC,SAAS,QAAQ,EAAE,SAAS,IAAI,QAAQ;AAAA,EAClD,QAAQ;AACN,WAAO;AAAA,EACT;AACF;;;ACjEA,SAAS,kBAAAf,kBAAgB,aAAa;AACtC;AAAA,EACE,OAAAmB;AAAA,EACA,MAAAlB;AAAA,EACA,QAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,QAAAO;AAAA,EACA,WAAAyB;AAAA,OACK;;;ACTP,SAAa,aAAAG,YAAW,UAAAlC,eAAc;AACtC,OAAO,UAAU;AAsHb,qBAAAU,WACE,OAAAjB,OADF,QAAAE,cAAA;AAhHG,IAAM,eAAe;AACrB,IAAM,gBAAgB;AAC7B,IAAM,QAAQ;AAMP,IAAM,gBAAkC,CAAC,UAAU;AACxD,QAAM,WAAWK,QAAyB,IAAI;AAC9C,QAAM,YAAYA,QAA0B,IAAI;AAEhD,QAAM,OAAO,MAAM;AACjB,UAAM,QAAQ,SAAS;AACvB,UAAM,SAAS,UAAU;AACzB,QAAI,CAAC,SAAS,CAAC;AAAQ;AAEvB,UAAM,MAAM,OAAO,WAAW,IAAI;AAElC,QAAI,MAAM,eAAe,MAAM,kBAAkB;AAC/C,YAAM,aAAa,MAAM;AACzB,YAAM,cAAc,MAAM;AAE1B,YAAM,oBAAoB,OAAO,QAAQ,OAAO;AAChD,YAAM,mBAAmB,aAAa;AAEtC,UAAI,IAAI,IAAI,QAAQ;AAEpB,UAAI,mBAAmB,mBAAmB;AAExC,kBAAU;AACV,iBAAS,cAAc;AACvB,cAAM,aAAa,UAAU;AAC7B,aAAK;AAAA,MACP,OAAO;AAEL,iBAAS;AACT,kBAAU,aAAa;AACvB,aAAK;AACL,cAAM,cAAc,WAAW;AAAA,MACjC;AAEA,UAAI;AAAA,QACF;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,OAAO;AAAA,QACP,OAAO;AAAA,MACT;AAGA,YAAM,YAAY,IAAI,aAAa,GAAG,GAAG,OAAO,OAAO,OAAO,MAAM;AACpE,YAAM,MAAM,KAAK,UAAU,MAAM,UAAU,OAAO,UAAU,QAAQ;AAAA,QAClE,mBAAmB;AAAA,MACrB,CAAC;AAED,UAAI,KAAK,MAAM;AAEb,cAAM,YAAY,IAAI,IAAI;AAAA,MAC5B;AAAA,IACF;AACA,0BAAsB,IAAI;AAAA,EAC5B;AAEA,EAAAkC,WAAU,MAAM;AACd,UAAM,QAAQ,SAAS;AACvB,QAAI,CAAC,QAAQ,CAAC;AAAO;AAGrB,eAAW,cACP,aAAa;AAAA,MACb,OAAO;AAAA,QACL,YAAY;AAAA,QACZ,OAAO,EAAE,OAAO,eAAe,MAAM;AAAA,QACrC,QAAQ,EAAE,OAAO,gBAAgB,MAAM;AAAA,MACzC;AAAA,IACF,CAAC,EACA,KAAK,CAAC,WAAW;AAChB,YAAM,YAAY;AAElB,YAAM,aAAa,eAAe,MAAM;AACxC,YAAM,KAAK;AAEX,YAAM,eAAe,MAAM;AAMzB,8BAAsB,IAAI;AAAA,MAC5B;AAAA,IACF,CAAC,EACA,MAAM,CAAC,QAAQ;AAAA,IAEhB,CAAC;AAEH,WAAO,MAAM;AAEX,YAAM,SAAS,MAAM;AACrB,UAAI,QAAQ;AACV,cAAM,SAAS,OAAO,UAAU;AAChC,eAAO,QAAQ,CAAC,UAAe,MAAM,KAAK,CAAC;AAAA,MAC7C;AACA,YAAM,YAAY;AAAA,IACpB;AAAA,EACF,GAAG,CAAC,UAAU,SAAS,CAAC;AAExB,SACE,gBAAAvC,OAAAe,WAAA,EACE;AAAA,oBAAAjB;AAAA,MAAC;AAAA;AAAA,QACC,KAAK;AAAA,QACL,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,WAAU;AAAA;AAAA,IACZ;AAAA,IACA,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,KAAK;AAAA,QACL,OAAO,eAAe;AAAA,QACtB,QAAQ,gBAAgB;AAAA,QACxB,OAAO,EAAE,OAAO,cAAc,QAAQ,cAAc;AAAA,QACpD,WAAU;AAAA;AAAA,IACZ;AAAA,KACF;AAEJ;;;ADpHI,qBAAAiB,WAWM,OAAAjB,OAXN,QAAAE,cAAA;AAHG,IAAM,aAAkC,CAAC,UAAU;AACxD,QAAM,EAAE,EAAE,IAAIC,iBAAe;AAC7B,SACE,gBAAAD,OAAAe,WAAA,EACE;AAAA,oBAAAjB;AAAA,MAACsC;AAAA,MAAA;AAAA,QACC,MAAM,MAAM;AAAA,QACZ,SAAS,EAAE,+BAA+B;AAAA,QAC1C,WAAU;AAAA,QACV,OAAO,EAAE,WAAW,mBAAmB;AAAA,QAEvC,0BAAAtC;AAAA,UAACK;AAAA,UAAA;AAAA,YACC,WAAU;AAAA,YACV,SAAS,MAAM;AAAA,YAEf,0BAAAL,MAAC,YAAS,WAAU,6BAA4B;AAAA;AAAA,QAClD;AAAA;AAAA,IACF;AAAA,IACA,gBAAAA;AAAA,MAACM;AAAA,MAAA;AAAA,QACC,OAAO,gBAAAN,MAAC,YAAS;AAAA,QACjB,MAAM,MAAM;AAAA,QACZ,cAAc,MAAM;AAAA,QACpB,MAAK;AAAA,QAEL,0BAAAA,MAAC,qBAAmB,GAAG,OAAO;AAAA;AAAA,IAChC;AAAA,KACF;AAEJ;AAEA,IAAM,oBAAyC,CAAC,UAAU;AACxD,QAAM,EAAE,EAAE,IAAIG,iBAAe;AAE7B,SACE,gBAAAD,OAACG,OAAA,EAAK,SAAQ,UAAS,WAAU,UAAS,MAAM,GAC9C;AAAA,oBAAAH,OAACoB,MAAA,EAAI,OAAO,cAAc,QAAQ,eAAe,WAAU,gBACzD;AAAA,sBAAAtB,MAAC,iBAAc,WAAW,MAAM,eAAe;AAAA,MAC/C,gBAAAE,OAAAe,WAAA,EACE;AAAA,wBAAAjB,MAAC,gBAAa;AAAA,QACd,gBAAAA,MAAC,kBAAe,WAAU,mDAAkD;AAAA,QAC5E,gBAAAA,MAAC,kBAAe,WAAU,kEAAiE;AAAA,QAC3F,gBAAAA,MAAC,kBAAe,WAAU,qEAAoE;AAAA,QAC9F,gBAAAA,MAAC,kBAAe,WAAU,uEAAsE;AAAA,SAClG;AAAA,OACF;AAAA,IAGA,gBAAAA,MAACa,QAAA,EAAK,MAAK,MAAK,WAAW,IAAI,QAAO,YACnC,YAAE,uBAAuB,GAC5B;AAAA,IACA,gBAAAb,MAAC,UAAK,WAAU,4BACd,0BAAAA;AAAA,MAACa;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,WAAW;AAAA,QACX,QAAO;AAAA,QACP,WAAU;AAAA,QAGV,0BAAAb;AAAA,UAAC;AAAA;AAAA,YACC,SAAQ;AAAA,YACR,YAAY;AAAA,cACV,gBAAAA;AAAA,gBAAC;AAAA;AAAA,kBAEC,WAAU;AAAA;AAAA,gBADN;AAAA,cAEN;AAAA,YACF;AAAA;AAAA,QACF;AAAA;AAAA,IACF,GACF;AAAA,KACF;AAEJ;AAEA,IAAM,WAAwC,CAAC,UAC7C,gBAAAA;AAAA,EAAC;AAAA;AAAA,IACC,OAAM;AAAA,IACN,QAAO;AAAA,IACP,SAAQ;AAAA,IACR,MAAK;AAAA,IACL,OAAM;AAAA,IACL,GAAG;AAAA,IAEJ,0BAAAA,MAAC,UAAK,GAAE,ygBAAwgB;AAAA;AAClhB;AAOK,IAAM,iBAA0C,CAAC,UAAU;AAChE,QAAM,EAAE,OAAO,IAAI,GAAG,KAAK,IAAI;AAC/B,SACE,gBAAAE;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,OAAM;AAAA,MACL,GAAG;AAAA,MAEJ;AAAA,wBAAAF,MAAC,UAAK,GAAE,8TAA6T;AAAA,QACrU,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,UAAS;AAAA,YACT,UAAS;AAAA,YACT,GAAE;AAAA;AAAA,QACJ;AAAA;AAAA;AAAA,EACF;AAEJ;AAEA,IAAM,eAA4C,MAAM;AACtD,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,WAAWI;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA;AAAA,EACF;AAEJ;AAEA,IAAM,iBAA8C,CAAC,UAAU;AAC7D,SACE,gBAAAF;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,OAAM;AAAA,MACN,QAAO;AAAA,MACP,SAAQ;AAAA,MACR,MAAK;AAAA,MACJ,GAAG;AAAA,MAEJ;AAAA,wBAAAF;AAAA,UAAC;AAAA;AAAA,YACC,GAAE;AAAA,YACF,QAAO;AAAA,YACP,aAAY;AAAA,YACZ,eAAc;AAAA;AAAA,QAChB;AAAA,QACA,gBAAAA,MAAC,UACC,0BAAAE;AAAA,UAAC;AAAA;AAAA,YACC,IAAG;AAAA,YACH,IAAG;AAAA,YACH,IAAG;AAAA,YACH,IAAG;AAAA,YACH,IAAG;AAAA,YACH,eAAc;AAAA,YAEd;AAAA,8BAAAF,MAAC,UAAK,WAAU,sCAAqC;AAAA,cACrD,gBAAAA,MAAC,UAAK,QAAO,KAAI,WAAU,wCAAuC;AAAA;AAAA;AAAA,QACpE,GACF;AAAA;AAAA;AAAA,EACF;AAEJ;;;AErKS,gBAAAA,aAAA;AAFF,IAAM,mBAA6B,MAAM;AAC9C,QAAM,QAAQ,oBAAoB;AAClC,SAAO,gBAAAA,MAAC,cAAY,GAAG,OAAO;AAChC;;;ACNA,SAAS,aAAAc,kBAAiB;;;ACD1B,SAAS,eAAAsB,cAAa,aAAAK,YAAW,YAAAjC,kBAAgB;AACjD;AAAA,EACE,cAAAY;AAAA,EACA,aAAA4B;AAAA,EACA;AAAA,EACA,YAAAC;AAAA,OACK;AACP,SAAS,oBAAAC,yBAAwB;AAIjC,IAAM,gBAAgB;AAEf,SAAS,sBAAsB;AACpC,QAAM,CAAChC,OAAM,OAAO,IAAIV,WAAS,KAAK;AACtC,QAAM,CAAC,SAAS,UAAU,IAAIA,WAAS,IAAI;AAC3C,QAAM,CAAC,SAAS,UAAU,IAAIA,WAAS,KAAK;AAC5C,QAAM,CAAC,SAAS,UAAU,IAAIA,WAAS,aAAa;AACpD,QAAM,CAAC,WAAW,YAAY,IAAIA,WAAS,EAAE;AAC7C,QAAM,CAAC,KAAK,MAAM,IAAIA,WAAS,EAAE;AACjC,QAAM,KAAK,gBAAgB;AAC3B,QAAM,EAAE,MAAM,IAAIyC,UAAS;AAE3B,QAAM,EAAE,OAAO,QAAQ,IAAI7B,YAAW;AAEtC,QAAM,CAAC,GAAG,EAAE,cAAc,CAAC,IAAI4B,WAAU,QAAW;AAAA,IAClD,MAAM;AAAA,IACN,QAAQ,CAAC,UACP,MAAM,eAAe,iBAAiB,MAAM,eAAe;AAAA,EAC/D,CAAC;AAED,QAAM,oBAAoB,MAAM;AAC9B,UAAM,QAAQ,cAAc,QAAQ,OAAiB;AACrD,WAAO;AAAA,MACL,QAAQ,OAAO,eAAe;AAAA,MAC9B,SAAS,OAAO,cAAc;AAAA,IAChC;AAAA,EACF;AAEA,QAAM,gBAAgBZ,aAAY,YAAY;AAC5C,QAAI;AACF,YAAM,MAAM,MAAM,QAAQ,aAAa,EAAE;AACzC,mBAAa,IAAI,SAAS;AAC1B,iBAAW,KAAK;AAEhB,YAAMc,kBAAiB,8BAA8B,kBAAkB,CAAC;AAAA,IAC1E,SAAS,GAAG;AAGV,UAAI,aAAa,OAAO;AACtB,YACE,EAAE,QAAQ;AAAA,UACR;AAAA,QACF,MAAM,IACN;AACA,aAAG,KAAK,yCAAyC;AAAA,YAC/C,SAAS,EAAE;AAAA,YACX,aAAa,QAAQ;AAAA,UACvB,CAAC;AAAA,QACH;AAAA,MACF;AACA,iBAAW;AAAA,IACb;AAAA,EACF,GAAG,CAAC,OAAO,CAAC;AAEZ,QAAM,aAAad,aAAY,MAAM;AACnC,YAAQ,IAAI;AACZ,kBAAc;AACd,UAAMc,kBAAiB,uBAAuB,kBAAkB,CAAC;AAAA,EACnE,GAAG,CAAC,OAAO,CAAC;AAEZ,QAAM,aAAad,aAAY,MAAM;AACnC,YAAQ,KAAK;AAAA,EACf,GAAG,CAAC,CAAC;AAEL,QAAM,YAAYA,aAAY,MAAM;AAClC,eAAW,IAAI;AACf,UAAMc,kBAAiB,6BAA6B,CAAC,CAAC;AAAA,EACxD,GAAG,CAAC,CAAC;AAEL,QAAM,UAAUd,aAAY,MAAM;AAChC,cAAU,UAAU,UAAU,GAAG;AAAA,EACnC,GAAG,CAAC,GAAG,CAAC;AAER,EAAAK,WAAU,MAAM;AAEd,QAAI,CAACvB,OAAM;AACT,iBAAW,KAAK;AAChB,iBAAW,IAAI;AACf,iBAAW,aAAa;AACxB,mBAAa,EAAE;AACf,aAAO,EAAE;AAAA,IACX;AAAA,EACF,GAAG,CAACA,KAAI,CAAC;AAET,EAAAuB,WAAU,MAAM;AACd,QAAI,YAAY,GAAG;AACjB,iBAAW;AACX;AAAA,IACF;AAEA,QAAI,CAAC,SAAS;AACZ;AAAA,IACF;AAEA,UAAM,QAAQ,WAAW,MAAM;AAC7B,iBAAW,UAAU,CAAC;AAAA,IACxB,GAAG,GAAI;AAEP,WAAO,MAAM,aAAa,KAAK;AAAA,EACjC,GAAG,CAAC,SAAS,OAAO,CAAC;AAErB,EAAAA,WAAU,MAAM;AACd,QAAI,WAAW,WAAW;AACxB,YAAM,YAAY,KAAK,MAAM,KAAK,IAAI,IAAI,GAAI,IAAI;AAClD,YAAM,SAAS;AAAA,QACb,GAAG;AAAA,QACH,GAAG;AAAA,QACH,GAAG,QAAQ;AAAA,QACX,GAAG,QAAQ;AAAA,QACX,GAAG,QAAQ,eAAe;AAAA,MAC5B;AACA,YAAMU,OAAM,UAAU,MAAM;AAC5B,aAAOA,IAAG;AAAA,IACZ;AAAA,EACF,GAAG,CAAC,SAAS,SAAS,CAAC;AAEvB,SAAO;AAAA,IACL,MAAAjC;AAAA,IACA,cAAc;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,UAAU,QAA6B;AAC9C,QAAM,MAAM,KAAK,UAAU,MAAM;AACjC,QAAM,SAAS,OAAO,KAAK,GAAG;AAG9B,SAAO,GAAG,OAAO,SAAS,MAAM,SAAS,MAAM;AACjD;;;ACnJA,SAAuB,cAAA2B,aAAY,aAAAJ,YAAW,UAAAlC,eAAc;AAC5D,SAAS,UAAU,UAAU;AAC7B,SAAS,SAAA6C,QAAO,kBAAAjD,wBAAsB;AACtC;AAAA,EACE,MAAAC;AAAA,EACA,YAAAiD;AAAA,EACA,QAAAhD;AAAA,EACA,gBAAAC;AAAA,EACA;AAAA,EAEA,QAAAO;AAAA,EACA,WAAAyB;AAAA,OACK;AAUH,qBAAArB,WAEI,OAAAjB,OAFJ,QAAAE,cAAA;AAJG,IAAM,aAAkC,CAAC,UAAU;AACxD,QAAM,EAAE,EAAE,IAAIC,iBAAe;AAE7B,SACE,gBAAAD,OAAAe,WAAA,EACE;AAAA,oBAAAjB,MAACsC,UAAA,EAAQ,SAAS,EAAE,oBAAoB,GACtC,0BAAAtC;AAAA,MAACsD;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,SAAS,MAAM;AAAA;AAAA,IACjB,GACF;AAAA,IAEA,gBAAAtD;AAAA,MAACM;AAAA,MAAA;AAAA,QACC,OAAO,gBAAAN,MAACa,QAAA,EAAK,QAAO,YAAY,YAAE,gBAAgB,GAAE;AAAA,QACpD,MAAM,MAAM;AAAA,QACZ,cAAc,MAAM;AAAA,QACpB,MAAK;AAAA,QACL,cAAc;AAAA,UACZ,mBAAmB,CAAC,MAAM;AACxB,kBAAM,KAAK,SAAS,cAAc,eAAe;AACjD,gBAAI,IAAI;AACN,gBAAE,eAAe;AAAA,YACnB;AAAA,UACF;AAAA,QACF;AAAA,QAEA,0BAAAb,MAAC,qBAAmB,GAAG,OAAO;AAAA;AAAA,IAChC;AAAA,KACF;AAEJ;AAEO,IAAM,oBAAyC,CAAC,UAAU;AAC/D,MAAI,MAAM,SAAS;AACjB,WAAO,gBAAAA,MAAC,WAAQ;AAAA,EAClB;AAEA,MAAI,MAAM,SAAS;AACjB,WACE,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,YAAY,MAAM;AAAA,QAClB,SAAS,MAAM;AAAA,QACf,KAAK,MAAM;AAAA,QACX,SAAS,MAAM;AAAA;AAAA,IACjB;AAAA,EAEJ;AAEA,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,YAAY,MAAM;AAAA,MAClB,WAAW,MAAM;AAAA;AAAA,EACnB;AAEJ;AASA,IAAM,SAA0B,CAAC,UAAU;AACzC,QAAM,EAAE,EAAE,IAAIG,iBAAe;AAC7B,QAAM,UAA8C;AAAA,IAClD,SAAS;AAAA,MACP,OAAO,EAAE,WAAW;AAAA,MACpB,SAAS,MAAM;AAAA,MACf,MAAM;AAAA,IACR;AAAA,EACF;AAEA,SACE,gBAAAD,OAACG,OAAA,EAAK,WAAU,UAAS,MAAM,GAC7B;AAAA,oBAAAL,MAACa,QAAA,EAAK,MAAK,QAAO,WAAW,IAC1B,YAAE,uBAAuB,GAC5B;AAAA,IACA,gBAAAb;AAAA,MAACa;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,WAAW;AAAA,QACX,QAAO;AAAA,QACP,WAAU;AAAA,QAGV,0BAAAb,MAACoD,QAAA,EAAM,SAAQ,+CAA8C;AAAA;AAAA,IAC/D;AAAA,IAEA,gBAAAlD,OAACW,QAAA,EAAK,MAAK,MAAK,WAAW,IACxB;AAAA,SAAG,EAAE,kBAAkB,CAAC;AAAA,MACzB,gBAAAX,OAACW,OAAK,UAAL,EAAc,OAAM,SAAQ,WAAU,oBACpC;AAAA,cAAM;AAAA,QAAQ;AAAA,SACjB;AAAA,OACF;AAAA,IAEA,gBAAAb;AAAA,MAACK;AAAA,MAAA;AAAA,QACC,WAAWD;AAAA,UACT;AAAA,UACA;AAAA,QACF;AAAA,QACA,SAAQ;AAAA,QACR,WAAU;AAAA,QAEV,0BAAAJ;AAAA,UAACK;AAAA,UAAA;AAAA,YACC,WAAU;AAAA,YACV,SAAQ;AAAA,YACR,WAAU;AAAA,YAEV,0BAAAL,MAAC,gBAAa,OAAO,KAAK,QAAQ,KAAK,SAAS,MAAM,KAAK;AAAA;AAAA,QAC7D;AAAA;AAAA,IACF;AAAA,IAEA,gBAAAE;AAAA,MAACG;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,KAAK;AAAA,QACL,WAAWD;AAAA,UACT;AAAA,UACA;AAAA,QACF;AAAA,QACA,SAAS,MAAM;AAAA,QAEf;AAAA,0BAAAJ;AAAA,YAACqD;AAAA,YAAA;AAAA,cACC,MAAM;AAAA,cACN,SAAS;AAAA,cACT,WAAU;AAAA;AAAA,UACZ;AAAA,UACA,gBAAArD,MAACa,QAAA,EAAK,MAAK,OAAM,QAAO,WACrB,YAAE,yCAAyC,GAC9C;AAAA;AAAA;AAAA,IACF;AAAA,IAEA,gBAAAb;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,WAAU;AAAA;AAAA,IACZ;AAAA,KACF;AAEJ;AAQA,IAAM,eAAsC,CAAC,UAAU;AACrD,QAAM,YAAYO,QAA0B,IAAI;AAEhD,EAAAkC,WAAU,MAAM;AACd,QAAI,CAAC,UAAU,WAAW,CAAC,MAAM;AAAS;AAE1C,UAAM,SAAS,GAAG,MAAM,OAAO;AAC/B,UAAM,QAAQ,MAAM;AACpB,UAAM,SAAS,MAAM;AAErB,UAAM,MAAM,UAAU,QAAQ,WAAW,IAAI;AAE7C,UAAM,QAAQ,OAAO;AAErB,UAAM,QAAQ,QAAQ,MAAM;AAC5B,UAAM,QAAQ,SAAS,MAAM;AAE7B,aAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,EAAE,GAAG;AACrC,YAAM,MAAM,MAAM,CAAC;AACnB,eAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,EAAE,GAAG;AACnC,YAAI,YAAY,IAAI,CAAC,IAAI,SAAS;AAClC,cAAM,IAAI,KAAK,MAAM,IAAI,KAAK,KAAK,IAAI,KAAK,MAAM,IAAI,KAAK;AAC3D,cAAM,IAAI,KAAK,MAAM,IAAI,KAAK,KAAK,IAAI,KAAK,MAAM,IAAI,KAAK;AAC3D,YAAI,SAAS,KAAK,MAAM,IAAI,KAAK,GAAG,KAAK,MAAM,IAAI,KAAK,GAAG,GAAG,CAAC;AAAA,MACjE;AAAA,IACF;AAAA,EACF,GAAG,CAAC,WAAW,MAAM,OAAO,CAAC;AAE7B,SAAO,gBAAAzC,MAAC,YAAO,OAAO,MAAM,OAAO,QAAQ,MAAM,QAAQ,KAAK,WAAW;AAC3E;AAIA,IAAM,oBAAgD,CAAC,UAAU;AAC/D,QAAM,EAAE,EAAE,IAAIG,iBAAe;AAE7B,QAAM,UAA8C;AAAA,IAClD,WAAW;AAAA,MACT,OAAO,EAAE,eAAe;AAAA,MACxB,SAAS,MAAM;AAAA,MACf,WAAW;AAAA,MACX,MAAM;AAAA,IACR;AAAA,IACA,SAAS;AAAA,MACP,OAAO,EAAE,gBAAgB;AAAA,MACzB,SAAS,MAAM;AAAA,MACf,WAAW;AAAA,MACX,MAAM;AAAA,IACR;AAAA,EACF;AAEA,SACE,gBAAAD,OAACG,OAAA,EAAK,WAAU,UACd;AAAA,oBAAAL,MAAC,YAAS;AAAA,IACV,gBAAAA,MAACa,QAAA,EAAK,MAAK,QAAO,WAAW,IAAI,WAAU,YACxC,YAAE,0CAA0C,GAC/C;AAAA,IACA,gBAAAb;AAAA,MAACa;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,WAAW;AAAA,QACX,QAAO;AAAA,QACP,WAAU;AAAA,QAGV,0BAAAb;AAAA,UAACoD;AAAA,UAAA;AAAA,YACC,SAAQ;AAAA,YACR,QAAQ;AAAA,cACN,UAAU,OAAO,SAAS;AAAA,YAC5B;AAAA;AAAA,QACF;AAAA;AAAA,IACF;AAAA,IACA,gBAAApD;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,WAAU;AAAA;AAAA,IACZ;AAAA,KACF;AAEJ;AAEA,IAAM,UAAU,MAAM;AACpB,QAAM,EAAE,EAAE,IAAIG,iBAAe;AAE7B,SACE,gBAAAD,OAACG,OAAA,EAAK,WAAU,UAAS,KAAK,GAC5B;AAAA,oBAAAL,MAACqC,UAAA,EAAQ;AAAA,IACT,gBAAArC,MAACa,QAAA,EAAK,MAAK,MAAK,WAAW,IACxB,YAAE,6CAA6C,GAClD;AAAA,KACF;AAEJ;AAEA,IAAMwB,WAAU,MAAM;AACpB,SACE,gBAAAnC;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,QAAO;AAAA,MACP,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,OAAM;AAAA,MACN,WAAU;AAAA,MAEV;AAAA,wBAAAF;AAAA,UAAC;AAAA;AAAA,YACC,GAAE;AAAA,YACF,MAAK;AAAA;AAAA,QACP;AAAA,QACA,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,GAAE;AAAA,YACF,MAAK;AAAA,YACL,aAAY;AAAA;AAAA,QACd;AAAA,QACA,gBAAAA,MAAC,UACC,0BAAAE;AAAA,UAAC;AAAA;AAAA,YACC,IAAG;AAAA,YACH,IAAG;AAAA,YACH,IAAG;AAAA,YACH,IAAG;AAAA,YACH,IAAG;AAAA,YACH,eAAc;AAAA,YAEd;AAAA,8BAAAF,MAAC,UAAK,WAAU,sCAAqC;AAAA,cACrD,gBAAAA,MAAC,UAAK,QAAO,KAAI,WAAU,wCAAuC;AAAA;AAAA;AAAA,QACpE,GACF;AAAA;AAAA;AAAA,EACF;AAEJ;AAMO,IAAMsD,kBAAiBT;AAAA,EAC5B,CAAC,OAAO,QAAQ;AACd,UAAM,EAAE,OAAO,IAAI,SAAS,GAAG,KAAK,IAAI;AACxC,WACE,gBAAA3C;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,SAAQ;AAAA,QACR,MAAK;AAAA,QACL,OAAM;AAAA,QACL,GAAG;AAAA,QAEJ;AAAA,0BAAAF,MAAC,UAAK,GAAE,8TAA6T;AAAA,UACrU,gBAAAA;AAAA,YAAC;AAAA;AAAA,cACC,UAAS;AAAA,cACT,UAAS;AAAA,cACT,GAAE;AAAA;AAAA,UACJ;AAAA;AAAA;AAAA,IACF;AAAA,EAEJ;AACF;;;AC7TA,SAAuB,YAAAQ,kBAAgB;AACvC,SAAS,cAAAY,mBAAkB;AAC3B,SAAS,kBAAAjB,wBAAsB;AAC/B,SAAS,gBAAAG,qBAAoB;AAC7B,SAAS,QAAAD,OAAM,QAAAQ,cAAY;AAqBvB,qBAAAI,WAyBI,OAAAjB,OAIF,QAAAE,cA7BF;AAlBG,IAAM,mBAAwC,CAAC,UAAU;AAC9D,QAAM,CAACgB,OAAM,OAAO,IAAIV,WAAS,KAAK;AACtC,QAAM,EAAE,QAAQ,IAAIY,YAAW;AAC/B,QAAM,EAAE,EAAE,IAAIjB,iBAAe;AAC7B,QAAM,eAAe,YAAY;AAC/B,iBAAa,WAAW,qBAAqB;AAC7C,UAAM,QAAQ,WAAW;AAAA,EAC3B;AAEA,QAAM,aAAa,MAAM;AACvB,YAAQ,IAAI;AAAA,EACd;AAEA,QAAM,aAAa,MAAM;AACvB,YAAQ,KAAK;AAAA,EACf;AAEA,SACE,gBAAAD,OAAAe,WAAA,EACE;AAAA,oBAAAjB;AAAA,MAACM;AAAA,MAAA;AAAA,QACC,MAAMY;AAAA,QACN,cAAc;AAAA,QACd,OAAO,EAAE,aAAa;AAAA,QACtB,MAAK;AAAA,QACL,SAAS;AAAA,UACP,WAAW;AAAA,YACT,OAAO,EAAE,eAAe;AAAA,YACxB,SAAS;AAAA,YACT,MAAM;AAAA,YACN,WAAW;AAAA,UACb;AAAA,UACA,SAAS;AAAA,YACP,OAAO,EAAE,sBAAsB;AAAA,YAC/B,SAAS,YAAY;AACnB,oBAAM,aAAa;AACnB,yBAAW;AAAA,YACb;AAAA,YACA,MAAM;AAAA,YACN,SAAS;AAAA,YACT,OAAO;AAAA,UACT;AAAA,QACF;AAAA,QAEA,0BAAAlB,MAACa,QAAA,EAAK,WAAW,IAAI,MAAK,MACvB,YAAE,6CAA6C,GAClD;AAAA;AAAA,IACF;AAAA,IACA,gBAAAX;AAAA,MAACG;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,WAAW;AAAA,QACX,QAAQ;AAAA,QACR,GAAE;AAAA,QACF,SAAS;AAAA,QAET;AAAA,0BAAAL,MAAC,eAAY;AAAA,UACb,gBAAAA,MAAC,OAAI;AAAA,UACL,gBAAAA,MAAC,YAAS;AAAA,UACV,gBAAAA,MAAC,OAAI;AAAA,UACL,gBAAAA,MAAC,cAAW;AAAA;AAAA;AAAA,IACd;AAAA,KACF;AAEJ;AAEA,IAAM,MAAM,MAAM;AAChB,SACE,gBAAAE,OAACG,OAAA,EAAK,WAAU,0BACd;AAAA,oBAAAL,MAAC,WAAQ;AAAA,IACT,gBAAAA,MAAC,WAAQ;AAAA,IACT,gBAAAA,MAAC,WAAQ;AAAA,KACX;AAEJ;AAEA,IAAM,cAA2C,CAAC,UAChD,gBAAAA;AAAA,EAAC;AAAA;AAAA,IACC,OAAM;AAAA,IACN,QAAO;AAAA,IACP,SAAQ;AAAA,IACR,MAAK;AAAA,IACL,OAAM;AAAA,IACL,GAAG;AAAA,IAEJ,0BAAAA,MAAC,UAAK,GAAE,2TAA0T;AAAA;AACpU;AAGF,IAAM,aAA0C,CAAC,UAC/C,gBAAAA;AAAA,EAAC;AAAA;AAAA,IACC,OAAM;AAAA,IACN,QAAO;AAAA,IACP,SAAQ;AAAA,IACR,MAAK;AAAA,IACL,OAAM;AAAA,IACL,GAAG;AAAA,IAEJ,0BAAAA,MAAC,UAAK,GAAE,4PAA2P;AAAA;AACrQ;AAGF,IAAM,WAAwC,CAAC,UAC7C,gBAAAE;AAAA,EAAC;AAAA;AAAA,IACC,OAAM;AAAA,IACN,QAAO;AAAA,IACP,SAAQ;AAAA,IACR,MAAK;AAAA,IACL,OAAM;AAAA,IAEN;AAAA,sBAAAF;AAAA,QAAC;AAAA;AAAA,UACC,UAAS;AAAA,UACT,UAAS;AAAA,UACT,GAAE;AAAA,UACF,MAAK;AAAA;AAAA,MACP;AAAA,MACA,gBAAAA,MAAC,UACC,0BAAAE;AAAA,QAAC;AAAA;AAAA,UACC,IAAG;AAAA,UACH,IAAG;AAAA,UACH,IAAG;AAAA,UACH,IAAG;AAAA,UACH,IAAG;AAAA,UACH,eAAc;AAAA,UAEd;AAAA,4BAAAF,MAAC,UAAK,WAAU,sCAAqC;AAAA,YACrD,gBAAAA,MAAC,UAAK,QAAO,KAAI,WAAU,wCAAuC;AAAA;AAAA;AAAA,MACpE,GACF;AAAA;AAAA;AACF;AAGF,IAAM,UAAuC,CAAC,UAC5C,gBAAAE;AAAA,EAAC;AAAA;AAAA,IACC,OAAM;AAAA,IACN,QAAO;AAAA,IACP,SAAQ;AAAA,IACR,MAAK;AAAA,IACL,OAAM;AAAA,IAEN;AAAA,sBAAAF;AAAA,QAAC;AAAA;AAAA,UACC,GAAE;AAAA,UACF,MAAK;AAAA;AAAA,MACP;AAAA,MACA,gBAAAA,MAAC,UACC,0BAAAE;AAAA,QAAC;AAAA;AAAA,UACC,IAAG;AAAA,UACH,IAAG;AAAA,UACH,IAAG;AAAA,UACH,IAAG;AAAA,UACH,IAAG;AAAA,UACH,eAAc;AAAA,UAEd;AAAA,4BAAAF,MAAC,UAAK,WAAU,sCAAqC;AAAA,YACrD,gBAAAA,MAAC,UAAK,QAAO,KAAI,WAAU,wCAAuC;AAAA;AAAA;AAAA,MACpE,GACF;AAAA;AAAA;AACF;;;AHxJS,gBAAAA,aAAA;AAJJ,IAAM,mBAA6B,MAAM;AAC9C,QAAM,EAAE,SAAS,IAAIc,WAAU;AAC/B,QAAM,QAAQ,oBAAoB;AAClC,MAAI,UAAU;AACZ,WAAO,gBAAAd,MAAC,oBAAkB,GAAG,OAAO;AAAA,EACtC;AACA,SAAO,gBAAAA,MAAC,cAAY,GAAG,OAAO;AAChC;;;A1BgCa,gBAAAA,OAuDP,QAAAE,cAvDO;AAlBN,IAAM,gBAAwC,CAAC,UAAU;AAC9D,QAAM,EAAE,cAAc,gBAAgB,IAAIS,eAAc;AACxD,QAAM,EAAE,MAAM,IAAIS,aAAW;AAC7B,QAAM,cAAcR,SAAQ,MAAM;AAChC,QAAI,MAAM,QAAQ,OAAO,WAAW,GAAG;AACrC,aAAO,OAAO;AAAA,IAChB;AACA,WAAO,OAAO,WAAW,KAAK,CAAC,SAAS;AACtC,UAAI,CAAC,MAAM,SAAS;AAClB,eAAO,KAAK,SAAS,OAAO;AAAA,MAC9B,OAAO;AACL,eAAO,KAAK,SAAS,MAAM;AAAA,MAC7B;AAAA,IACF,CAAC;AAAA,EACH,GAAG,CAAC,OAAO,WAAW,OAAO,aAAa,OAAO,OAAO,CAAC;AAEzD,QAAM,QAAQA,SAAQ,MAAM;AAC1B,QAAI,aAAa,oBAAoB;AACnC,aAAO,gBAAAZ,MAAC,YAAU,GAAG,OAAO,MAAM;AAAA,IACpC;AACA,WACE,gBAAAA,MAACa,QAAA,EAAK,WAAU,qDACb,uBAAa,MAChB;AAAA,EAEJ,GAAG,CAAC,aAAa,OAAO,IAAI,CAAC;AAE7B,QAAM,QAAQD,SAAQ,MAAM;AAC1B,WAAO,QAAQ,CAAC,eAAe,YAAY,iBAAiB;AAAA,EAC9D,GAAG,CAAC,WAAW,CAAC;AAEhB,QAAM,WAAWA,SAAQ,MAAM;AAC7B,QAAI,aAAa,mBAAmB;AAClC,aAAO,aAAa;AAAA,IACtB;AACA,QAAI,OAAO,UAAU,KAAK,CAAC,SAAS,KAAK,SAAS,OAAO,OAAO,GAAG;AACjE,aAAO,OAAO,UAAU,KAAK,CAAC,SAAS,KAAK,SAAS,OAAO,OAAO,GAC/D;AAAA,IACN;AACA,WAAO;AAAA,EACT,GAAG,CAAC,OAAO,UAAU,OAAO,SAAS,WAAW,CAAC;AAEjD,QAAM,SAAS,MAAM;AACnB,QAAI,SAAS,MAAM,WAAW;AAAA,MAC5B,CAAC,SAAS,KAAK,SAAS,MAAM;AAAA,IAChC;AACA,QAAI,aAAa,mBAAmB;AAClC,eAAS,aAAa;AAAA,IACxB;AAEA,QAAI,UAAU,OAAO,WAAW,aAAa;AAC3C,YAAM,MAAM,IAAI,IAAI,OAAO,SAAS,IAAI;AACxC,YAAM,WAAW,GAAG,IAAI,QAAQ;AAChC,aAAO,QAAQ,aAAa,CAAC,GAAG,IAAI,QAAQ;AAAA,IAC9C;AAEA,WAAO,eAAe,cAAc,MAAa;AAAA,EACnD;AAEA,QAAM,iBACJ,MAAM,WAAWO,mBAAkB;AAErC,QAAM,gBAAgB,CAAC,kBAAkB,CAAC;AAE1C,QAAM,aAAa,MAAM,WAAWA,mBAAkB;AAEtD,QAAM,iBAAiBP;AAAA,IACrB,MAAM,MAAM,UAAUO,mBAAkB;AAAA,IACxC,CAAC,MAAM,MAAM;AAAA,EACf;AAEA,MAAI,OAAO;AACT,WACE,gBAAAjB;AAAA,MAACG;AAAA,MAAA;AAAA,QACC,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,IAAI;AAAA,QACJ,WAAW;AAAA,QACX,WAAW;AAAA,QACX,SAAS;AAAA,QACT,WAAU;AAAA,QAEV;AAAA,0BAAAL;AAAA,YAAC;AAAA;AAAA,cACC,WAAU;AAAA,cACV,SAAS;AAAA;AAAA,UACX;AAAA,UACA,gBAAAA,MAACa,QAAA,EAAK,WAAU,sDACb,oBACH;AAAA;AAAA;AAAA,IACF;AAAA,EAEJ;AAEA,QAAM,gBAAgB,MAAM;AAC1B,UAAM,mBAAmB,gBAAAb,MAAC,0BAAuB;AACjD,UAAM,aAAa,cAAc,gBAAAA,MAAC,oBAAiB;AACnD,UAAM,aAAa,kBAAkB,gBAAAA,MAAC,oBAAiB;AACvD,UAAM,aAAa,kBAAkB,gBAAAA,MAAC,oBAAiB;AACvD,UAAM,YAAY,iBAAiB,gBAAAA,MAAC,mBAAgB;AACpD,UAAM,gBAAgB,gBAAAA,MAAC,gCAA6B;AAEpD,UAAM,UAAU,MAAM,WACpB,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACE,GAAG,MAAM;AAAA,QACV,MAAM,OAAO;AAAA,QACb,eAAe,OAAO;AAAA;AAAA,IACxB;AAGF,QAAI,OAAO,MAAM,iBAAiB,YAAY;AAC5C,aAAO,MAAM,eAAe;AAAA,QAC1B;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC;AAAA,IACH;AAEA,WACE,gBAAAE,OAACG,QAAA,EAAK,OAAM,QAAO,SAAQ,WACzB;AAAA,sBAAAH,OAACG,QAAA,EAAK,MAAM,GACT;AAAA,eAAO,iBAAiB;AAAA,QACxB;AAAA,SACH;AAAA,MAEA,gBAAAH,OAACG,QAAA,EAAK,MAAM,GACT;AAAA,cAAM;AAAA,QACN;AAAA,QACA;AAAA,QAGA;AAAA,QACA;AAAA,QACA,MAAM;AAAA,SACT;AAAA,OACF;AAAA,EAEJ;AAEA,SACE,gBAAAL;AAAA,IAACK;AAAA,IAAA;AAAA,MACC,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,IAAI;AAAA,MACJ,WAAW;AAAA,MACX,WAAWD,IAAG,MAAM,WAAW,MAAM,YAAY,IAAI;AAAA,MAEpD,wBAAc;AAAA;AAAA,EACjB;AAEJ;;;A8BrLA,SAAS,eAAe,kBAAkB;AAenC,IAAM,kBAAkB;AAAA,EAC7B,CAAC;AACH;AAEO,IAAM,qBAAqB,MAAM;AACtC,SAAO,WAAW,eAAe;AACnC;;;ACrBA,SAAa,eAAAgC,cAAa,aAAAK,aAAW,WAAA7B,UAAS,UAAAL,eAAc;AAE5D,SAAS,MAAAH,WAAU;AACnB,SAAS,kBAAkB,+BAA+B;AAC1D,SAAS,mBAAmB;AA6EtB,gBAAAJ,aAAA;AA1EC,IAAM,iBAIR,CAAC,UAAU;AACd,QAAM,EAAE,YAAY,iBAAiB,IAAI;AACzC,QAAM,EAAE,cAAc,IAAI,mBAAmB;AAC7C,QAAM,cAAc,CAAC,QAAgB;AACnC,QAAI,CAAC;AAAK;AACV,mBAAe,cAAc;AAAA,MAC3B,MAAM;AAAA,MACN,MAAM;AAAA,MACN,QAAQ;AAAA,IACV,CAAC;AAAA,EACH;AAEA,QAAM,kBAAkBO,QAAuB,IAAI;AACnD,QAAM,MAAMK,SAAQ,MAAM,YAAY,UAAU,GAAG,CAAC,UAAU,CAAC;AAE/D,QAAM,UAAUwB,aAAY,MAAM;AAChC,QAAI,QAAQ,GAAG;AACb;AAAA,IACF;AACA,gBAAY,MAAM;AAChB,UAAI,gBAAgB,SAAS;AAC3B,cAAM,sBAAsB,MAAM;AAChC,gBAAM,QAAQ;AACd,0BAAgB,QAAS;AAAA,YACvB;AAAA,YACA;AAAA,UACF;AAAA,QACF;AAEA,wBAAgB,QAAQ;AAAA,UACtB;AAAA,UACA;AAAA,QACF;AACA,8BAAsB,MAAM;AAC1B,0BAAgB,QAAS,MAAM,YAAY;AAAA,QAC7C,CAAC;AAAA,MACH;AAAA,IACF,CAAC;AAAA,EACH,GAAG,CAAC,MAAM,SAAS,GAAG,CAAC;AAEvB,EAAAK,YAAU,MAAM;AACd,QAAI,QAAQ,GAAG;AACb;AAAA,IACF;AACA,QAAI,kBAAkB;AAEpB,kBAAY,MAAM;AAChB,YAAI,gBAAgB,SAAS;AAC3B,gCAAsB,MAAM;AAC1B,4BAAgB,QAAS,MAAM,YAAY;AAAA,UAC7C,CAAC;AAAA,QACH;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF,GAAG,CAAC,kBAAkB,GAAG,CAAC;AAE1B,MAAI,QAAQ,GAAG;AACb,WAAO;AAAA,EACT;AAEA,SACE,gBAAAzC;AAAA,IAAC;AAAA;AAAA,MACC,KAAK;AAAA,MACL,cAAY,mBAAmB,SAAS;AAAA,MACxC,WAAWI;AAAA,QACT;AAAA,QACA;AAAA,QACA,mBAAmB,gBAAgB;AAAA,MACrC;AAAA,MAEA,0BAAAJ;AAAA,QAAC;AAAA;AAAA,UACC;AAAA,UACA;AAAA,UACA;AAAA;AAAA,MACF;AAAA;AAAA,EACF;AAEJ;;;ACjFI,gBAAAA,aAAA;AAJG,IAAM,qBAAqB,MAAM;AACtC,QAAM,EAAE,kBAAkB,IAAI,mBAAmB;AAEjD,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,YAAY,kBAAkB;AAAA,MAC9B,SAAS,kBAAkB;AAAA,MAC3B,kBAAkB,kBAAkB;AAAA;AAAA,EACtC;AAEJ;;;AjCyCU,gBAAAA,OAIJ,QAAAE,cAJI;AA/CV,IAAM,2BAA2BD,OAAM;AAAA,EAAK,MAC1C,8EAA4B,KAAK,CAAC,QAAQ;AACxC,WAAO,EAAE,SAAS,IAAI,qBAAqB;AAAA,EAC7C,CAAC;AACH;AAEA,IAAM,gBAAgBA,OAAM;AAAA,EAAK,MAC/B,oEAAuB,KAAK,CAAC,QAAQ;AACnC,WAAO,EAAE,SAAS,IAAI,UAAU;AAAA,EAClC,CAAC;AACH;AAEO,IAAM,iBAET,CAAC,UAAU;AACb,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AAEJ,SACE,gBAAAC;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,QACL,eAAe,QAAQ,eAAe;AAAA,MACxC;AAAA,MACA,WAAWE;AAAA,QACT;AAAA,QACA,YAAY;AAAA,MACd;AAAA,MAEA;AAAA,wBAAAJ;AAAA,UAAC;AAAA;AAAA,YACC,KAAK;AAAA,YACL,WAAWI;AAAA,cACT;AAAA,cACA;AAAA,cACA,YAAY;AAAA,YACd;AAAA,YAEC,oBACC,gBAAAJ,MAAC,iBAAe,GAAG,cAAc,eAA8B;AAAA;AAAA,QAEnE;AAAA,QAEA,gBAAAE;AAAA,UAACoB;AAAA,UAAA;AAAA,YACC,WAAWlB;AAAA,cACT;AAAA;AAAA;AAAA,cAGA,YAAY;AAAA,YACd;AAAA,YAEA;AAAA,8BAAAJ,MAACC,OAAM,UAAN,EAAe,UAAU,MACxB,0BAAAD,MAAC,4BAAyB,WAAU,mCAAkC,GACxE;AAAA,cAEA,gBAAAA;AAAA,gBAACsB;AAAA,gBAAA;AAAA,kBACC,QAAO;AAAA,kBACP,OAAM;AAAA,kBACN,WAAWlB,KAAG,wBAAwB,YAAY,OAAO;AAAA,kBAExD;AAAA;AAAA,cACH;AAAA;AAAA;AAAA,QACF;AAAA,QACA,gBAAAJ;AAAA,UAAC;AAAA;AAAA,YACC,KAAK;AAAA,YACL,WAAWI;AAAA,cACT;AAAA,cACA;AAAA,cACA;AAAA;AAAA,cAEA;AAAA,cACA,YAAY;AAAA,YACd;AAAA,YAEC,uBACC,gBAAAJ,MAACC,OAAM,UAAN,EAAe,UAAU,MACxB,0BAAAD;AAAA,cAAC;AAAA;AAAA,gBACC,WAAW,gBAAgB;AAAA,gBAC3B,SAAS,gBAAgB,WAAW,cAAc;AAAA,gBAClD,eAAe,eAAe;AAAA;AAAA,YAChC,GACF;AAAA;AAAA,QAEJ;AAAA,QAEA,gBAAAA,MAAC,sBAAmB;AAAA;AAAA;AAAA,EACtB;AAEJ;;;AkCvGA,SAAS,aAAAyC,aAAW,UAAAlC,SAAQ,YAAAC,kBAAgB;AAC5C,SAAS,mBAAAE,wBAAuB;AAChC,SAAS,iBAAAC,sBAAqB;AAC9B,SAAS,sBAAA4C,qBAAoB,aAAAzC,mBAAiB;AAOvC,IAAM,oBAAoB,CAAC,YAAmC;AACnE,QAAM,EAAE,gBAAgB,iBAAiB,IAAIH,eAAc;AAE3D,QAAM,CAAC,cAAc,eAAe,IAAI,gBAAgB,EAAE;AAC1D,QAAM,CAAC,WAAW,YAAY,IAAI,gBAAgB,EAAE;AACpD,QAAM,CAAC,cAAc,eAAe,IAAI,gBAAgB,EAAE;AAC1D,QAAM,CAAC,iBAAiB,kBAAkB,IAAI,gBAAgB,GAAG;AAAA,IAC/D;AAAA,EACF,CAAC;AAED,QAAM,CAAC,QAAQ,SAAS,IAAID;AAAA,IAC1B;AAAA,IACA;AAAA,EACF;AAEA,QAAM,EAAE,SAAS,IAAII,YAAU;AAE/B,QAAM,qBAAqB,QAAQ,eAAe,YAAY;AAC9D,QAAM,wBAAwB,QAAQ,eAAe,YAAY;AACjE,QAAM,iBAAiB,CAAC,CAAC,QAAQ;AAEjC,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,aAAa,QAAQ;AAAA,IACrB,eAAe,QAAQ;AAAA,IACvB,cAAc,QAAQ;AAAA,IACtB,gBAAgB,QAAQ;AAAA,IACxB;AAAA,IACA;AAAA,EACF;AACF;AAEA,IAAM,kBAAkB,CACtB,eACA,OAA6B,CAAC,MAC3B;AACH,QAAM,MAAMP,QAAuB,IAAI;AACvC,QAAM,CAAC,QAAQ,SAAS,IAAIC,WAAS,aAAa;AAElD,EAAA+C,oBAAmB,IAAI,SAAS,CAAC,UAAU;AACzC,cAAU,MAAM,YAAY,MAAM;AAAA,EACpC,CAAC;AAED,EAAAd,YAAU,MAAM;AACd,QAAI,CAAC,IAAI,SAAS;AAChB;AAAA,IACF;AACA,UAAM,OAAO,IAAI,SAAS,sBAAsB;AAChD,cAAU,KAAK,MAAM;AAAA,EACvB,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC;AAEjB,SAAO,CAAC,KAAK,MAAM;AACrB;;;ACzEA,SAAS,sBAAsB;AAC/B,SAAS,OAAAnB,MAAK,MAAAlB,MAAI,YAAY;;;ACE9B;AAJA,SAAa,WAAAQ,iBAAe;AAC5B,SAAS,uBAAuB;AAChC,SAAS,kBAAAT,wBAAsB;AAC/B,SAAS,WAAAqC,UAAS,QAAAnC,QAAM,QAAAQ,cAAY;AAsC5B,SAgDI,YAAAI,YA1CF,OAAAjB,OANF,QAAAE,cAAA;AA3BD,IAAM,SAA0C,CAAC,UAAU;AAChE,QAAM,EAAE,EAAE,IAAIC,iBAAe;AAE7B,QAAM,gBAAgBS,UAAQ,MAAM;AAClC,YAAQ,MAAM,UAAU;AAAA,MACtB,KAAK,gBAAgB;AACnB,eAAO;AAAA,MACT,KAAK,gBAAgB;AACnB,eAAO;AAAA,MACT,KAAK,gBAAgB;AACnB,eAAO;AAAA,IACX;AAAA,EACF,GAAG,CAAC,MAAM,QAAQ,CAAC;AAEnB,QAAM,UAAU,CAAC,QAAiB;AAChC,WAAO,KAAK,KAAK,QAAQ;AAAA,EAC3B;AAEA,SACE,gBAAAV;AAAA,IAACG;AAAA,IAAA;AAAA,MACC,WAAW;AAAA,MACX,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,IAAI;AAAA,MACJ,OAAO;AAAA,MAEP;AAAA,wBAAAH,OAACG,QAAA,EACC;AAAA,0BAAAH;AAAA,YAACG;AAAA,YAAA;AAAA,cACC,WAAW;AAAA,cACX,WAAW;AAAA,cACX,KAAK;AAAA,cACL,WAAW;AAAA,cAEX;AAAA,gCAAAL;AAAA,kBAAC;AAAA;AAAA,oBAEC,aAAa;AAAA,oBACb,MAAK;AAAA;AAAA,gBACP;AAAA,gBACA,gBAAAA,MAACa,QAAA,EAAK,MAAK,OAAO,YAAE,6BAA6B,GAAE;AAAA;AAAA;AAAA,UACrD;AAAA,UACA,gBAAAb;AAAA,YAACwC;AAAA,YAAA;AAAA,cACC,WAAU;AAAA,cACV,WAAU;AAAA;AAAA,UACZ;AAAA,UACA,gBAAAtC,OAACG,QAAA,EAAK,KAAK,GACT;AAAA,4BAAAL,MAACa,QAAA,EAAK,WAAW,IAAI,MAAK,OACvB,YAAE,+BAA+B,GACpC;AAAA,YACA,gBAAAX,OAACG,QAAA,EAAK,WAAW,OAAO,KAAK,GAC1B;AAAA,qBAAO,MAAM,gBAAgB,eAC5B,gBAAAL;AAAA,gBAAC;AAAA;AAAA,kBACC,WAAU;AAAA,kBACV,MAAK;AAAA,kBACL,aAAa;AAAA,kBACb,SAAS,CAAC,MAAM,QAAQ,MAAM,WAAW;AAAA;AAAA,cAC3C;AAAA,cAED,OAAO,MAAM,eAAe,eAC3B,gBAAAA;AAAA,gBAAC;AAAA;AAAA,kBACC,WAAU;AAAA,kBACV,MAAK;AAAA,kBACL,aAAa;AAAA,kBACb,SAAS,CAAC,MAAM,QAAQ,MAAM,UAAU;AAAA;AAAA,cAC1C;AAAA,cAED,OAAO,MAAM,eAAe,eAC3B,gBAAAA;AAAA,gBAAC;AAAA;AAAA,kBACC,WAAU;AAAA,kBACV,MAAK;AAAA,kBACL,aAAa;AAAA,kBACb,SAAS,CAAC,MAAM,QAAQ,MAAM,UAAU;AAAA;AAAA,cAC1C;AAAA,eAEJ;AAAA,YACC,OAAO,OAAO,aAAa,eAC1B,gBAAAE,OAAAe,YAAA,EACE;AAAA,8BAAAjB;AAAA,gBAACwC;AAAA,gBAAA;AAAA,kBACC,WAAU;AAAA,kBACV,WAAU;AAAA;AAAA,cACZ;AAAA,cACC,OAAO;AAAA,eACV;AAAA,aAEJ;AAAA,WACF;AAAA,QACA,gBAAAtC;AAAA,UAACG;AAAA,UAAA;AAAA,YACC,WAAW;AAAA,YACX,KAAK;AAAA,YACL,WAAU;AAAA,YAEV;AAAA,8BAAAL,MAACa,QAAA,EAAK,WAAW,IAAI,MAAK,OACvB,YAAE,2BAA2B,GAChC;AAAA,cACA,gBAAAb,MAAC,mBAAgB;AAAA;AAAA;AAAA,QACnB;AAAA;AAAA;AAAA,EACF;AAEJ;;;AC/GA,SAAS,mBAAoC;AAMtC,IAAM,kBAAkB,MAAqB;AAClD,QAAM,WAAW,YAAY;AAE7B,SAAO;AAAA,IACL;AAAA,EACF;AACF;;;ACCS,gBAAAA,aAAA;AAFF,IAAM,eAAsC,CAAC,UAAU;AAC5D,QAAM,QAAQ,gBAAgB;AAC9B,SAAO,gBAAAA,MAAC,UAAQ,GAAG,OAAQ,GAAG,OAAO;AACvC;;;AHRA;;;AINA,OAAOC,YAAW;AAClB;AAAA,EACE,OAAAqB;AAAA,EACA,QAAAjB;AAAA,EACA;AAAA,EAEA,QAAAQ;AAAA,EACA,MAAAT;AAAA,EACA,WAAAkC;AAAA,OACK;AAgFD,SACE,OAAAtC,OADF,QAAAE,cAAA;AArEN,IAAM,mBAAmB,GAAG;AAAA,EAC1B,OAAO;AAAA,IACL,QAAQ;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA,MAEA;AAAA;AAAA;AAAA,MAGA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,MAAM,CAAC;AAAA,EACT;AAAA,EACA,UAAU;AAAA,IACR,MAAM;AAAA,MACJ,aAAa;AAAA,QACX,QAAQ;AAAA,QACR,MAAM;AAAA,MACR;AAAA,MACA,MAAM;AAAA,QACJ,QAAQ;AAAA,QACR,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,QAAQ;AAAA,MACN,MAAM;AAAA,QACJ,QAAQ;AAAA,MACV;AAAA,IACF;AAAA,IACA,MAAM;AAAA,MACJ,MAAM;AAAA,QACJ,QAAQ;AAAA,MACV;AAAA,IACF;AAAA,EACF;AACF,CAAC;AAED,IAAM,WAAWD,OAAM,KAOrB,CAAC,UAAU;AACX,QAAM,EAAE,MAAM,MAAM,MAAAiB,OAAM,SAAS,QAAQ,GAAG,KAAK,IAAI;AACvD,QAAM,EAAE,OAAO,IAAI,iBAAiB;AAAA,IAClC;AAAA,IACA,QAAQ,MAAM;AAAA,IACd,MAAM,MAAM;AAAA,EACd,CAAC;AACD,QAAM,WACJ,gBAAAlB;AAAA,IAAC;AAAA;AAAA,MACC,gBAAc,MAAM;AAAA,MACpB,UAAU,KAAK;AAAA,MACf,WAAW,OAAO;AAAA,MAClB,SAAS,MAAM;AACb,cAAM,UAAU,IAAI;AAAA,MACtB;AAAA,MAEA,0BAAAE,OAACG,QAAA,EAAK,WAAW,UAAU,KAAK,GAAG,IAAG,QACpC;AAAA,wBAAAL,MAAC,SAAK,eAAK,MAAK;AAAA,QACf,MAAM,QACL,gBAAAA;AAAA,UAACa,OAAK;AAAA,UAAL;AAAA,YACC,OAAO,MAAM,SAAS,UAAU;AAAA,YAChC,OAAO;AAAA,YACP,MAAK;AAAA,YACL,WAAU;AAAA,YAET,eAAK;AAAA;AAAA,QACR;AAAA,SAEJ;AAAA;AAAA,EACF;AAGF,MAAI,MAAM,MAAM;AACd,WAAO,gBAAAb,MAAC,QAAG,WAAU,qBAAqB,UAAS;AAAA,EACrD;AAEA,SACE,gBAAAA,MAAC,QACC,0BAAAA,MAACsC,UAAA,EAAQ,SAAS,KAAK,MAAM,MAAK,SAAQ,OAAM,UAAS,YAAY,IAClE,UACH,GACF;AAEJ,CAAC;AAED,SAAS,cAAc;AAEvB,IAAM,YAKD,CAAC,UAAU;AACd,SACE,gBAAApC,OAACoB,MAAA,EAAI,IAAI,GACP;AAAA,oBAAAtB;AAAA,MAAC;AAAA;AAAA,QACC,OAAM;AAAA,QACN,QAAO;AAAA,QACP,SAAQ;AAAA,QACR,MAAK;AAAA,QACL,OAAM;AAAA,QACN,WAAU;AAAA,QAEV,0BAAAA,MAAC,UACC,0BAAAE;AAAA,UAAC;AAAA;AAAA,YACC,IAAG;AAAA,YACH,IAAG;AAAA,YACH,IAAG;AAAA,YACH,IAAG;AAAA,YACH,IAAG;AAAA,YACH,eAAc;AAAA,YAEd;AAAA,8BAAAF,MAAC,UAAK,WAAU,sCAAqC;AAAA,cACrD,gBAAAA,MAAC,UAAK,WAAU,wCAAuC,QAAO,KAAI;AAAA;AAAA;AAAA,QACpE,GACF;AAAA;AAAA,IACF;AAAA,IACA,gBAAAA,MAAC,QAAG,WAAU,iBACX,gBAAM,OAAO,IAAI,CAAC,MAAM,UAAU;AACjC,UAAI,MAAM,MAAM;AACd,eAAO;AAAA,MACT;AACA,aACE,gBAAAA;AAAA,QAAC;AAAA;AAAA,UAEC;AAAA,UACA,MAAM,MAAM;AAAA,UACZ,QAAQ,KAAK,SAAS,MAAM;AAAA,UAC5B,SAAS,MAAM;AAAA;AAAA,QAJV;AAAA,MAKP;AAAA,IAEJ,CAAC,GACH;AAAA,KACF;AAEJ;AAQA,IAAM,gBAA8C,CAAC,UAAU;AAC7D,QAAM,EAAE,MAAM,IAAI;AAElB,QAAM,cACJ,OAAO,UAAU,WACf,gBAAAA,MAACa,QAAA,EAAK,WAAW,IAAI,MAAK,MACvB,iBACH,IAEA;AAGJ,QAAM,YAAY;AAAA,IAChB,WACE;AAAA,IACF,SAAS,MAAM;AAAA,EACjB;AAEA,SACE,gBAAAX;AAAA,IAACG;AAAA,IAAA;AAAA,MACC,SAAS,MAAM,OAAO,YAAY;AAAA,MAClC,WAAU;AAAA,MACV,WAAU;AAAA,MAET;AAAA,cAAM,OAAO,cAAc;AAAA,QAE3B,MAAM,OACL,gBAAAL,MAAC,gBAAc,GAAG,WAAW,IAE7B,gBAAAA,MAAC,cAAY,GAAG,WAAW;AAAA;AAAA;AAAA,EAE/B;AAEJ;AAeA,IAAM,UAAkC,CAAC,UAAU;AACjD,QAAM,EAAE,MAAAkB,QAAO,MAAM,OAAO,SAAS,aAAa,IAAI;AAEtD,SACE,gBAAAhB;AAAA,IAACoB;AAAA,IAAA;AAAA,MACC,cAAYJ,QAAO,WAAW;AAAA,MAC9B,WAAWd,KAAG,iBAAiB,MAAM,SAAS;AAAA,MAC9C,OAAO,MAAM;AAAA,MAEb;AAAA,wBAAAJ;AAAA,UAAC;AAAA;AAAA,YACC,MAAMkB;AAAA,YACN,OAAO,MAAM;AAAA,YACb,UAAU,MAAM;AACd,oBAAM,eAAe,CAACA,KAAI;AAAA,YAC5B;AAAA;AAAA,QACF;AAAA,QACA,gBAAAlB;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,YACP;AAAA,YACA;AAAA,YACA,MAAMkB;AAAA;AAAA,QACR;AAAA;AAAA;AAAA,EACF;AAEJ;AAEA,QAAQ,cAAc;AAEtB,IAAM,aAAsD,CAAC,UAC3D,gBAAAlB;AAAA,EAAC;AAAA;AAAA,IACC,OAAM;AAAA,IACN,QAAO;AAAA,IACP,SAAQ;AAAA,IACR,MAAK;AAAA,IACL,OAAM;AAAA,IACL,GAAG;AAAA,IAEJ,0BAAAA,MAAC,UAAK,GAAE,wSAAuS;AAAA;AACjT;AAGF,IAAM,eAAwD,CAAC,UAC7D,gBAAAA;AAAA,EAAC;AAAA;AAAA,IACC,OAAM;AAAA,IACN,QAAO;AAAA,IACP,SAAQ;AAAA,IACR,MAAK;AAAA,IACL,OAAM;AAAA,IACL,GAAG;AAAA,IAEJ,0BAAAA,MAAC,UAAK,GAAE,mSAAkS;AAAA;AAC5S;;;ACnRF,SAAS,YAAAQ,kBAAgB;AAIlB,IAAM,oBAAoB,CAC/B,UACiB;AACjB,QAAM,CAAC,SAAS,UAAU,IAAIA,WAAS,OAAO,QAAQ,CAAC,EAAE,QAAQ,GAAG;AACpE,QAAM,EAAE,UAAU,UAAU,IAAI,mBAAmB;AAEnD,MAAI,OAAO,cAAc,aAAa;AAAA,EAEtC;AAEA,SAAO;AAAA,IACL,OAAO,CAAC;AAAA,IACR;AAAA,IACA,MAAM;AAAA,IACN,cAAc,CAACU,UAAS;AACtB,kBAAYA,KAAI;AAAA,IAClB;AAAA,IACA,cAAc,CAAC,SAAS;AACtB,UAAI,KAAK,MAAM;AACb,mBAAW,KAAK,IAAI;AAAA,MACtB;AAAA,IACF;AAAA,IACA,GAAG;AAAA,EACL;AACF;;;ACtBS,gBAAAlB,aAAA;AAFF,IAAM,mBAAoD,CAAC,UAAU;AAC1E,QAAM,QAAQ,kBAAkB,KAAK;AACrC,SAAO,gBAAAA,MAAC,WAAS,GAAG,OAAO;AAC7B;;;ANkDmB,gBAAAA,OAmCT,QAAAE,cAnCS;AA1CZ,IAAM,kBAAkD,CAAC,UAAU;AACxE,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,QACL,QAAQ,gBAAgB,YAAY;AAAA,MACtC;AAAA,MACA,WAAWE;AAAA,QACT;AAAA;AAAA,QAEA;AAAA,QACA;AAAA,QACA;AAAA,QACA,YAAY;AAAA,MACd;AAAA,MAGA;AAAA,wBAAAJ;AAAA,UAACsB;AAAA,UAAA;AAAA,YACC,KAAK;AAAA,YACL,WAAWlB;AAAA,cACT;AAAA,cACA,YAAY;AAAA,YACd;AAAA,YAEC,oBAAU,gBAAAJ,MAAC,iBAAe,GAAG,cAAc;AAAA;AAAA,QAC9C;AAAA,QACA,gBAAAE;AAAA,UAAC;AAAA;AAAA,YACC,WAAWE;AAAA,cACT;AAAA,cACA;AAAA;AAAA,cAEA;AAAA,cACA,YAAY;AAAA,YACd;AAAA,YAEA;AAAA,8BAAAJ,MAACsB,MAAA,EAAI,IAAI,GAAG,KAAK,iBACf,0BAAAtB;AAAA,gBAAC;AAAA;AAAA,kBACC,WAAWI;AAAA,oBACT;AAAA,oBACA;AAAA,oBACA;AAAA,oBACA;AAAA,oBACA;AAAA,kBACF;AAAA;AAAA,cACF,GAKF;AAAA,cAEC,CAAC;AAAA;AAAA,gBAEA,gBAAAJ,MAACsB,MAAA,EAAI,QAAO,QAAO,WAAWlB,KAAG,YAAY,OAAO,GACjD,UACH;AAAA;AAAA;AAAA;AAAA,gBAIA,gBAAAF;AAAA,kBAAC;AAAA;AAAA,oBACC,WAAWE;AAAA,sBACT;AAAA,sBACA;AAAA,sBACA,YAAY;AAAA,oBACd;AAAA,oBACA,OAAO;AAAA,sBACL,qBAAqB,GACnB,SACI,GAAG,kBAAkB,OACrB,GAAG,qBAAqB,IAC9B;AAAA;AAAA;AAAA,oBAGF;AAAA,oBAEA;AAAA,sCAAAJ,MAAC,SAAI,WAAWI,KAAG,YAAY,WAAW,GACvC,yBAAoB,WAAW,IAC9B,cAEA,gBAAAJ,MAAC,oBAAkB,GAAG,eAAe,GAEzC;AAAA,sBACA,gBAAAA;AAAA,wBAACsB;AAAA,wBAAA;AAAA,0BACC,OAAO;AAAA,0BACP,WAAWlB,KAAG,uBAAuB,YAAY,OAAO;AAAA,0BAEvD;AAAA;AAAA,sBACH;AAAA;AAAA;AAAA,gBACF;AAAA;AAAA;AAAA;AAAA,QAGJ;AAAA,QAGA,gBAAAJ;AAAA,UAACsB;AAAA,UAAA;AAAA,YACC,KAAK;AAAA,YACL,WAAWlB;AAAA,cACT;AAAA,cACA;AAAA,cACA;AAAA,cACA,YAAY;AAAA,YACd;AAAA,YAEC,oBAAU,gBAAAJ,MAAC,gBAAc,GAAG,aAAa;AAAA;AAAA,QAC5C;AAAA,QACA,gBAAAA,MAAC,sBAAmB;AAAA;AAAA;AAAA,EACtB;AAEJ;;;AO7IA,SAAgB,cAAAwD,aAAY,WAAA5C,iBAAe;AAC3C;AAAA,EACE;AAAA,EACA,aAAAoC;AAAA,EACA;AAAA,OACK;AACP,SAAS,uBAAuB;;;ACJzB,SAAS,kBACd,SACA,QACA;AACA,MAAI,OAAO,YAAY,UAAU;AAC/B,cAAU,SAAS,OAAO;AAAA,EAC5B;AACA,SAAO,OAAO,KAAK,CAAC,UAAU;AAC5B,WAAO,MAAM,cAAc,aAAa;AAAA,EAC1C,CAAC;AACH;;;ADsDI,gBAAAhD,aAAA;AAnDG,IAAM,mBAET,CAAC,UAAU;AACb,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AAEJ,QAAM,CAAC,MAAM,IAAIgD,WAAU;AAE3B,QAAM,EAAE,UAAU,IAAIQ,YAAgB,cAAc;AAEpD,QAAM,oBAAoB,gBAAgB;AAI1C,QAAM,0BAA0B,cAAc,CAAC,YAA6B;AAC1E,WAAO;AAAA,MACL;AAAA,MACA,cAAc,YAAY,OAAO,UAAU,OAAO;AAAA,IACpD;AAAA,EACF,CAAC;AAED,QAAM,gBAAgB5C,UAAuB,MAAM;AACjD,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA,mBAAmB;AAAA,MACnB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF,GAAG;AAAA,IACD;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,SACE,gBAAAZ,MAAC,gBAAgB,UAAhB,EAAyB,OAAO,eAC9B,UACH;AAEJ;;;AECQ,gBAAAA,aAAA;AAND,IAAM,WAAuD,CAAC,UAAU;AAC7E,QAAM,QAAQ,kBAAkB,KAAK;AAErC,QAAM,gBAAgB,MAAM;AAC1B,QAAI,MAAM,UAAU;AAClB,aACE,gBAAAA,MAAC,kBAAgB,GAAG,OAAQ,GAAG,OAC5B,gBAAM,UACT;AAAA,IAEJ;AAEA,WACE,gBAAAA,MAAC,mBAAiB,GAAG,OAAQ,GAAG,OAC7B,gBAAM,UACT;AAAA,EAEJ;AAEA,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,eAAe,MAAM;AAAA,MACrB,UAAU,MAAM;AAAA,MAChB,WAAW,MAAM;AAAA,MACjB,iBAAiB,MAAM;AAAA,MACvB,cAAc,MAAM;AAAA,MACpB,oBAAoB,MAAM;AAAA,MAEzB,wBAAc;AAAA;AAAA,EACjB;AAEJ;;;A7CtFA,IAAM,oBAA8B,CAAC,SAAS;AAGvC,IAAK,uBAAL,kBAAKyD,0BAAL;AACL,EAAAA,sBAAA,iBAAc;AACd,EAAAA,sBAAA,iBAAc;AACd,EAAAA,sBAAA,gBAAa;AAHH,SAAAA;AAAA,GAAA;AAQL,IAAM,mBAAmB,CAAC,UAA8B;AAC7D,QAAM,EAAE,aAAa,mBAAmB,8BAAgC,IACtE;AACF,QAAM,EAAE,MAAM,IAAIrC,aAAW;AAC7B,QAAM,EAAE,cAAc,IAAI,mBAAmB;AAC7C,QAAM,EAAE,eAAe,IAAIC,oBAAmB;AAC9C,QAAM,EAAE,cAAc,gBAAgB,IAAIV,eAAc;AACxD,QAAM,CAAC,SAAS,UAAU,IAAIH,WAAS,MAAM;AAC3C,QAAI,OAAO,MAAM,gBAAgB;AAAa,aAAO,CAAC;AAEtD,WAAO,CAAC,MAAM,QAAQ,MAAM,WAAW,IACnC,CAAC,MAAM,WAAW,IAClB,MAAM;AAAA,EACZ,CAAC;AAED,QAAM,qBAAqB,CAAC,UAAkB,CAAC,SAAwB;AACrE,UAAM,WAAW,KAAK,KAAK,SAAS,CAAC;AAErC,QAAI,CAAC;AAAU;AAKf,QAAI,SAAS,WAAW,UAAU;AAChC,iBAAW,KAAK,IAAI,CAACkD,UAASA,MAAK,IAAI,CAAC;AAAA,IAC1C;AAEA,UAAMC,WAAU,KAAK,KAAK,SAAS,CAAC;AACpC,UAAM,iBACJ,OAAOA,SAAQ,SAAS,aACvBA,SAAQ,KAAK,WAAW,SAAS,KAChCA,SAAQ,KAAK,WAAW,UAAU;AAGtC,QAAI,kBAAkB,SAASA,SAAQ,IAAI,GAAG;AAC5C;AAAA,IACF;AAEA,QAAIA,SAAQ,QAAQ;AAClB,aAAO,KAAKA,SAAQ,MAAMA,SAAQ,MAAM;AACxC;AAAA,IACF,WAAW,gBAAgB;AACzB,aAAO,SAAS,OAAOA,SAAQ;AAC/B;AAAA,IACF;AACA,UAAM,OAAO;AAAA,MACX,MAAMA,SAAQ;AAAA,MACd,MAAMA,SAAQ;AAAA,MACd;AAAA,MACA,QAAQA,SAAQ;AAAA,IAClB;AAEA,QAAI,OAAO,gBAAgB,YAAY;AACrC,kBAAY,IAAI;AAChB;AAAA,IACF;AAEA,mBAAe,cAAc,IAAI;AAAA,EACnC;AAEA,QAAM,gBAAgB/C,UAAQ,MAAM;AAClC,UAAM,SAAS;AAAA,MACb,SAAS;AAAA,MACT,UAAU;AAAA,MACV,MAAM,CAAC;AAAA,MACP,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA,MAKX;AAAA,MACA,GAAG;AAAA,MACH;AAAA,IACF;AACA,QAAI,MAAM,SAAS;AACjB,aAAO,UAAU,MAAM;AAAA,IACzB;AAEA,QAAI,MAAM,UAAU;AAClB,aAAO,WAAW,MAAM;AAAA,IAC1B;AAEA,QAAI,MAAM,WAAW;AACnB,UAAI,qBAAqB,iCAAkC;AACzD,eAAO,YAAY,CAAC,GAAG,OAAO,WAAW,MAAM,SAAS;AAAA,MAC1D,WAAW,qBAAqB,iCAAkC;AAChE,eAAO,YAAY,CAAC,MAAM,WAAW,GAAG,OAAO,SAAS;AAAA,MAC1D,OAAO;AACL,eAAO,YAAY,MAAM;AAAA,MAC3B;AAAA,IACF;AAEA,WAAO;AAAA,EACT,GAAG,CAAC,KAAK,CAAC;AAEV,QAAM,EAAE,WAAW,UAAU,IAAIA,UAAQ,MAAM;AAC7C,UAAM,YAGF,CAAC;AAEL,QAAI,cAAc,aAAa,cAAc,UAAU,QAAQ;AAC7D,gBAAU,YAAY;AAAA,QACpB,OAAO,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA,QAKrB;AAAA,QACA,aAAa,mBAAmB,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MA4B5C;AAAA,IACF;AAEA,QAAI,cAAc,aAAa,cAAc,UAAU,UAAU,QAAQ;AACvE,gBAAU,YAAY;AAAA,QACpB,MAAM,cAAc;AAAA,QACpB;AAAA,QACA,aAAa,mBAAmB,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MA4B5C;AAAA,IACF;AAEA,WAAO;AAAA,EACT,GAAG,CAAC,aAAa,CAAC;AAElB,SAAO;AAAA;AAAA;AAAA,IAGL,GAAG;AAAA,IACH;AAAA,IACA;AAAA,IACA,aAAa,CAAC,CAAC;AAAA,IACf;AAAA,IACA,QAAQ,MAAM;AAAA,IACd;AAAA,EACF;AACF;;;A8ClNA,SAAgC,WAAAA,iBAAe;AAC/C,SAAS,qBAAAO,0BAAyB;AAClC,SAAS,MAAAf,MAAI,WAAAoC,UAAS,QAAAnC,QAAM,aAAAS,mBAAiB;;;ACF7C,OAAOb,UAAgC,aAAAwC,mBAAiB;AACxD,SAAS,kBAAAtC,wBAAsB;AAC/B;AAAA,EACE,OAAAmB;AAAA,EACA;AAAA,EACA;AAAA,EACA,QAAAjB;AAAA,EACA;AAAA,EACA,QAAAQ;AAAA,OACK;AAwCD,SACE,OAAAb,OADF,QAAAE,cAAA;AArBN,IAAM,aAKD,CAAC,UAAU;AACd,QAAM;AAAA,IACJ,aAAa;AAAA,IACb,UAAU;AAAA,IACV;AAAA,IACA,mBAAmB;AAAA,EACrB,IAAI;AACJ,QAAM,EAAE,EAAE,IAAIC,iBAAe;AAE7B,SACE,gBAAAD;AAAA,IAACG;AAAA,IAAA;AAAA,MACC,WAAW;AAAA,MACX,KAAK;AAAA,MACL,WAAU;AAAA,MACV,WAAW;AAAA,MAEX;AAAA,wBAAAH,OAACG,QAAA,EAAK,KAAK,GAAG,WAAW,UACvB;AAAA,0BAAAL,MAACa,QAAA,EAAK,WAAW,IAAI,WAAU,yBAC5B,YAAE,mBAAmB,GACxB;AAAA,UACC,oBACC,gBAAAb,MAAC,YAAO,SAAS,MAAM,qBAAqB,GACzC,oBACC,gBAAAA;AAAA,YAAC;AAAA;AAAA,cACC,MAAM;AAAA,cACN,WAAU;AAAA,cACV,SAAS;AAAA;AAAA,UACX,IAEA,gBAAAA;AAAA,YAAC;AAAA;AAAA,cACC,MAAM;AAAA,cACN,WAAU;AAAA,cACV,SAAS;AAAA;AAAA,UACX,GAEJ;AAAA,UAGF,gBAAAA,MAACa,QAAA,EAAK,WAAW,IAAI,oBAAC;AAAA,WACxB;AAAA,QACA,gBAAAb;AAAA,UAACa,OAAK;AAAA,UAAL;AAAA,YACC,SAAS,MAAM;AAAA,YACf,MAAK;AAAA,YACL,eAAc;AAAA,YACd,IAAG;AAAA,YAEF,wBAAc;AAAA;AAAA,QACjB;AAAA;AAAA;AAAA,EACF;AAEJ;AAGA,IAAM,iBAKD,CAAC,UAAU;AACd,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA,mBAAmB;AAAA,EACrB,IAAI;AACJ,QAAM,EAAE,EAAE,IAAIV,iBAAe;AAE7B,SACE,gBAAAD;AAAA,IAACG;AAAA,IAAA;AAAA,MACC,WAAW;AAAA,MACX,KAAK;AAAA,MACL,WAAU;AAAA,MACV,WAAW;AAAA,MAEX;AAAA,wBAAAH,OAACG,QAAA,EAAK,KAAK,GAAG,WAAW,UACvB;AAAA,0BAAAL,MAACa,QAAA,EAAK,WAAW,IAAI,WAAU,yBAC5B,YAAE,8BAA8B,GACnC;AAAA,UACC,oBACC,gBAAAb,MAAC,YAAO,SAAS,MAAM,qBAAqB,GACzC,oBACC,gBAAAA;AAAA,YAAC;AAAA;AAAA,cACC,MAAM;AAAA,cACN,WAAU;AAAA,cACV,SAAS;AAAA;AAAA,UACX,IAEA,gBAAAA;AAAA,YAAC;AAAA;AAAA,cACC,MAAM;AAAA,cACN,WAAU;AAAA,cACV,SAAS;AAAA;AAAA,UACX,GAEJ;AAAA,WAEJ;AAAA,QAMA,gBAAAA;AAAA,UAACa,OAAK;AAAA,UAAL;AAAA,YACC,MAAK;AAAA,YACL,eAAc;AAAA,YACd;AAAA,YACA,IAAG;AAAA,YAEF,4BAAkB;AAAA;AAAA,QACrB;AAAA;AAAA;AAAA,EACF;AAEJ;AAGA,IAAM,kBAED,CAAC,UAAU;AACd,QAAM,EAAE,gBAAgB,IAAI;AAC5B,QAAM,EAAE,EAAE,IAAIV,iBAAe;AAE7B,SACE,gBAAAD;AAAA,IAACG;AAAA,IAAA;AAAA,MACC,WAAW;AAAA,MACX,KAAK;AAAA,MACL,WAAU;AAAA,MACV,WAAW;AAAA,MAEX;AAAA,wBAAAL,MAACsB,MAAA,EACC,0BAAAtB,MAACa,QAAA,EAAK,WAAW,IAAI,WAAU,yBAC5B,YAAE,0BAA0B,GAC/B,GACF;AAAA,QACA,gBAAAb,MAACa,OAAK,SAAL,EAAa,IAAI,OAAO,MAAK,KAC3B,6BAAmB,GACtB;AAAA;AAAA;AAAA,EACF;AAEJ;AAGA,IAAM,YAMD,CAAC,UAAU;AACd,QAAM,EAAE,SAAS,oBAAoB,mBAAmB,KAAK,IAAI;AACjE,QAAM,EAAE,EAAE,IAAIV,iBAAe;AAE7B,SACE,gBAAAD;AAAA,IAACG;AAAA,IAAA;AAAA,MACC,WAAW;AAAA,MACX,KAAK;AAAA,MACL,WAAU;AAAA,MACV,WAAW;AAAA,MAEX;AAAA,wBAAAH,OAACG,QAAA,EAAK,KAAK,GAAG,WAAW,UACvB;AAAA,0BAAAL,MAACa,QAAA,EAAK,WAAW,IAAI,WAAU,yBAC5B,YAAE,sBAAsB,GAC3B;AAAA,UACC,oBACC,gBAAAb,MAAC,YAAO,SAAS,MAAM,qBAAqB,GACzC,oBACC,gBAAAA;AAAA,YAAC;AAAA;AAAA,cACC,MAAM;AAAA,cACN,WAAU;AAAA,cACV,SAAS;AAAA;AAAA,UACX,IAEA,gBAAAA;AAAA,YAAC;AAAA;AAAA,cACC,MAAM;AAAA,cACN,WAAU;AAAA,cACV,SAAS;AAAA;AAAA,UACX,GAEJ;AAAA,WAEJ;AAAA,QACA,gBAAAA;AAAA,UAACa,OAAK;AAAA,UAAL;AAAA,YACC,IAAI;AAAA,YACJ,UAAQ;AAAA,YACR,gBAAc;AAAA,YACd,QAAQ;AAAA,YACR;AAAA,YACA,QACE,gBAAAb,MAACa,OAAK,SAAL,EAAa,UAAQ,MAAC,QAAQ,KAAK,QAAQ,KAAK,MAAM,eACpD,gBAAM,sBAAsB,KAC/B;AAAA,YAGD,gBAAM,aAAa;AAAA;AAAA,QACtB;AAAA;AAAA;AAAA,EACF;AAEJ;AAGA,IAAM,qBAAqB,CAAC,UAatB;AACJ,QAAM,EAAE,YAAY,MAAM,YAAY,IAAI;AAC1C,QAAM,EAAE,EAAE,IAAIV,iBAAe;AAE7B,QAAM,aAAa,CAAC,QAAoB,CAAC,UAA4B;AACnE,UAAM,eAAe;AACrB,UAAM,gBAAgB;AACtB,UAAM,WAAW,GAAG;AAAA,EACtB;AAEA,QAAM,WAAW,YAAY,IAAI,CAAC,QAAQ;AACxC,YAAQ,KAAK;AAAA,MACX,KAAK;AACH,eACE,gBAAAD,OAAC,gBAAa,UAAU,WAAW,YAAY,GAC7C;AAAA,0BAAAA,OAACG,QAAA,EAAK,WAAW,6BAA6B,MAAM,GAClD;AAAA,4BAAAL;AAAA,cAAC;AAAA;AAAA,gBACC,QAAQ,KAAK,SAAS,YAAY;AAAA,gBAClC,SAAS,MAAM,MAAM,kBAAkB,YAAY;AAAA;AAAA,YACrD;AAAA,YACA,gBAAAA,MAAC,UAAM,YAAE,mBAAmB,GAAE;AAAA,aAChC;AAAA,UACA,gBAAAA;AAAA,YAACa,OAAK;AAAA,YAAL;AAAA,cACC,SAAS,MAAM;AAAA,cACf,MAAK;AAAA,cACL,WAAU;AAAA,cACV,eAAe;AAAA,cAEd,wBAAc;AAAA;AAAA,UACjB;AAAA,aAfqD,GAgBvD;AAAA,MAEJ,KAAK;AACH,eACE,gBAAAX,OAAC,gBAAa,UAAU,WAAW,gBAAgB,GACjD;AAAA,0BAAAA,OAACG,QAAA,EAAK,WAAW,6BAA6B,MAAM,GAClD;AAAA,4BAAAL;AAAA,cAAC;AAAA;AAAA,gBACC,QAAQ,KAAK,SAAS,gBAAgB;AAAA,gBACtC,SAAS,MAAM,MAAM,kBAAkB,gBAAgB;AAAA;AAAA,YACzD;AAAA,YACA,gBAAAA,MAAC,UAAM,YAAE,8BAA8B,GAAE;AAAA,aAC3C;AAAA,UACA,gBAAAA;AAAA,YAACa,OAAK;AAAA,YAAL;AAAA,cACC,MAAK;AAAA,cACL,SAAS,MAAM;AAAA,cACf,WAAU;AAAA,cACV,eAAe;AAAA,cAEd,gBAAM,kBAAkB;AAAA;AAAA,UAC3B;AAAA,aAfyD,GAgB3D;AAAA,MAEJ,KAAK;AACH,eACE,gBAAAX,OAAC,gBAAa,UAAU,WAAW,WAAW,GAC5C;AAAA,0BAAAA,OAACG,QAAA,EAAK,WAAW,6BAA6B,MAAM,GAClD;AAAA,4BAAAL;AAAA,cAAC;AAAA;AAAA,gBACC,QAAQ,KAAK,SAAS,WAAW;AAAA,gBACjC,SAAS,MAAM,MAAM,kBAAkB,WAAW;AAAA;AAAA,YACpD;AAAA,YACA,gBAAAA,MAAC,UAAM,YAAE,sBAAsB,GAAE;AAAA,aACnC;AAAA,UACA,gBAAAA;AAAA,YAACa,OAAK;AAAA,YAAL;AAAA,cACC,UAAQ;AAAA,cACR,gBAAc;AAAA,cACd,SAAS,MAAM;AAAA,cACf,WAAU;AAAA,cACV,QACE,gBAAAb;AAAA,gBAACa,OAAK;AAAA,gBAAL;AAAA,kBACC,UAAQ;AAAA,kBACR,QAAQ;AAAA,kBACR,SAAS,MAAM;AAAA,kBACf,QAAQ;AAAA,kBACR,MAAM;AAAA,kBAEL,gBAAM,sBAAsB;AAAA;AAAA,cAC/B;AAAA,cAGD,gBAAM,aAAa;AAAA;AAAA,UACtB;AAAA,aA1BoD,GA2BtD;AAAA,MAEJ,KAAK;AACH,eACE,gBAAAX,OAAC,gBAAa,UAAU,WAAW,iBAAiB,GAClD;AAAA,0BAAAA,OAACG,QAAA,EAAK,WAAW,6BAA6B,MAAM,GAClD;AAAA,4BAAAL;AAAA,cAAC;AAAA;AAAA,gBACC,QAAQ,KAAK,SAAS,iBAAiB;AAAA,gBACvC,SAAS,MAAM,MAAM,kBAAkB,iBAAiB;AAAA;AAAA,YAC1D;AAAA,YACA,gBAAAA,MAAC,UAAM,YAAE,0BAA0B,GAAE;AAAA,aACvC;AAAA,UACA,gBAAAA;AAAA,YAACa,OAAK;AAAA,YAAL;AAAA,cACC,WAAU;AAAA,cACV,MAAK;AAAA,cAEJ,gBAAM,mBAAmB;AAAA;AAAA,UAC5B;AAAA,aAb0D,GAc5D;AAAA,MAGJ;AACE,eAAO;AAAA,IACX;AAAA,EACF,CAAC;AAED,SACE,gBAAAb;AAAA,IAACK;AAAA,IAAA;AAAA,MACC,WAAW;AAAA,MACX,WAAW;AAAA,MACX,MAAM;AAAA,MAEL;AAAA;AAAA,EACH;AAEJ;AAEA,IAAM,eAIF,CAAC,UAAU;AACb,SACE,gBAAAH,OAAC,SAAI,WAAU,2FACb;AAAA,oBAAAF,MAACK,QAAA,EAAK,SAAS,WAAW,OAAO,QAC9B,gBAAM,UACT;AAAA,IACA,gBAAAL;AAAA,MAAC;AAAA;AAAA,QACC,WAAU;AAAA,QACV,SAAS,MAAM;AAAA,QAEf,0BAAAE;AAAA,UAAC;AAAA;AAAA,YACC,WAAU;AAAA,YACV,OAAM;AAAA,YACN,QAAO;AAAA,YACP,SAAQ;AAAA,YACR,MAAK;AAAA,YACL,OAAM;AAAA,YAEN;AAAA,8BAAAF;AAAA,gBAAC;AAAA;AAAA,kBACC,OAAM;AAAA,kBACN,QAAO;AAAA,kBACP,IAAG;AAAA,kBAEH,WAAU;AAAA;AAAA,cACZ;AAAA,cACA,gBAAAA;AAAA,gBAAC;AAAA;AAAA,kBAEC,WAAU;AAAA,kBACV,GAAE;AAAA;AAAA,cACJ;AAAA;AAAA;AAAA,QACF;AAAA;AAAA,IACF;AAAA,KACF;AAEJ;AAEA,IAAM,iBAAiB,CAAC,UAGlB;AACJ,SACE,gBAAAA,MAAC,YAAO,SAAS,MAAM,SACpB,gBAAM,SACL,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,OAAM;AAAA,MACN,QAAO;AAAA,MACP,SAAQ;AAAA,MACR,MAAK;AAAA,MAEL,0BAAAA;AAAA,QAAC;AAAA;AAAA,UACC,GAAE;AAAA,UACF,MAAK;AAAA,UACL,WAAW;AAAA;AAAA,MACb;AAAA;AAAA,EACF,IAEA,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,OAAM;AAAA,MACN,QAAO;AAAA,MACP,SAAQ;AAAA,MACR,MAAK;AAAA,MAEL,0BAAAA;AAAA,QAAC;AAAA;AAAA,UACC,GAAE;AAAA,UACF,MAAK;AAAA;AAAA,MACP;AAAA;AAAA,EACF,GAEJ;AAEJ;AAgBO,IAAM,iBAA6C,CAAC,UAAU;AACnE,QAAM,EAAE,MAAM,GAAG,KAAK,IAAI;AAC1B,MAAI,iBAAiB;AACrB,QAAM,UAAUC,OAAM,OAAO,CAAC;AAE9B,EAAAwC,YAAU,MAAM;AACd,UAAM,iBAAiB,IAAI,eAAe,CAAC,YAAY;AACrD,UAAI,MAAM,QAAQ,OAAO,KAAK,QAAQ,SAAS,GAAG;AAChD,cAAM,QAAQ,QAAQ,CAAC,EAAE,YAAY;AACrC,YAAI,QAAQ,MAAM;AAChB,kBAAQ,UAAU;AAAA,QACpB,WAAW,QAAQ,MAAM;AACvB,kBAAQ,UAAU;AAAA,QACpB,WAAW,QAAQ,MAAM;AACvB,kBAAQ,UAAU;AAAA,QACpB,WAAW,QAAQ,MAAM;AACvB,kBAAQ,UAAU;AAAA,QACpB,WAAW,QAAQ,MAAM;AACvB,kBAAQ,UAAU;AAAA,QACpB,OAAO;AACL,kBAAQ,UAAU;AAAA,QACpB;AAAA,MACF;AAAA,IACF,CAAC;AAED,mBAAe,QAAQ,SAAS,IAAI;AAEpC,WAAO,MAAM;AACX,qBAAe,WAAW;AAAA,IAC5B;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,QAAM,WAAW,KAAK,MAAM,GAAG,QAAQ,OAAO,EAAE,IAAI,CAAC,KAAK,UAAU;AAClE,YAAQ,KAAK;AAAA,MACX,KAAK,kBAAkB;AACrB,eACE,gBAAAzC;AAAA,UAAC;AAAA;AAAA,YACC,gBAAgB,MAAM;AAAA,YACtB,SAAS,MAAM;AAAA,YACf,oBAAoB,MAAM;AAAA,YAC1B,kBAAkB,UAAU;AAAA;AAAA,QAC9B;AAAA,MAEJ;AAAA,MAEA,KAAK;AACH,eACE,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,WAAW,MAAM;AAAA,YACjB,oBAAoB,MAAM;AAAA,YAC1B,SAAS,MAAM;AAAA,YACf,oBAAoB,MAAM;AAAA,YAC1B,kBAAkB,UAAU;AAAA;AAAA,QAC9B;AAAA,MAEJ,KAAK,mBAAmB;AACtB;AACA,eAAO,gBAAAA,MAAC,mBAAgB,iBAAiB,MAAM,iBAAiB;AAAA,MAClE;AAAA,MACA,KAAK;AAAA,MACL;AACE,eACE,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,YAAY,MAAM;AAAA,YAClB,oBAAoB,MAAM;AAAA,YAC1B,SAAS,MAAM;AAAA,YACf,kBAAkB,UAAU;AAAA;AAAA,QAC9B;AAAA,IAEN;AAAA,EACF,CAAC;AAED,SACE,gBAAAE,OAAC,SAAI,WAAU,uCACb;AAAA,oBAAAF,MAAC,SAAM,UAAoB;AAAA,IAC3B,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,SACE,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,YAAY,KAAK;AAAA,YACjB,gBAAgB,MAAM;AAAA,YACtB,iBAAiB,MAAM;AAAA,YACvB,oBAAoB,MAAM;AAAA,YAC1B,WAAW,MAAM;AAAA,YACjB;AAAA,YACA,aAAa,MAAM;AAAA,YACnB,mBAAmB,MAAM;AAAA,YACzB,YAAY,MAAM;AAAA,YAClB,SAAS,MAAM;AAAA;AAAA,QACjB;AAAA,QAEF,cAAc;AAAA,UACZ,iBAAiB,CAAC,UAAU,MAAM,eAAe;AAAA,UACjD,YAAY;AAAA,UACZ,WAAW;AAAA,QACb;AAAA,QACA,OAAK;AAAA,QAEL,0BAAAA,MAAC,SAAI,WAAU,gCACb,0BAAAA,MAAC4D,MAAA,EAAI,GACP;AAAA;AAAA,IACF;AAAA,KACF;AAEJ;AAEA,IAAM,QAED,CAAC,UAAU;AACd,SACE,gBAAA5D,MAAC,SAAI,WAAU,sBACZ,gBAAM,SAAS,IAAI,CAAC,SAAS,UAC5B,gBAAAA,MAAC,SAAiB,qBAAR,KAAgB,CAC3B,GACH;AAEJ;AAEA,IAAM4D,OAAM,MAAM;AAChB,SACE,gBAAA5D;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,QAAO;AAAA,MACP,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,OAAM;AAAA,MACN,WAAU;AAAA,MAEV,0BAAAA,MAAC,UAAK,GAAE,8LAA6L;AAAA;AAAA,EACvM;AAEJ;;;ACxkBA,SAAS,YAAAQ,kBAAgB;AACzB;AAAA,EACE;AAAA,EACA,mBAAAE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,eAAe,cAAAU,oBAAkB;AAC1C,SAAS,iBAAAT,sBAAqB;AAC9B,SAAS,qBAAAQ,0BAAyB;AAS3B,IAAM,6BAA6B,MAAM;AAC9C,QAAM,CAAC,MAAM,OAAO,IAAIT,iBAA0B,uBAAuB;AAAA,IACvE;AAAA,EACF,CAAC;AAED,QAAM,CAAC,aAAa,cAAc,IAAIF,WAAmB;AAAA,IACvD;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,QAAM,EAAE,gBAAgB,WAAW,IAAI,cAAc,EAAE,IAAI,EAAE,CAAC;AAE9D,QAAM,EAAE,MAAM,IAAIY,aAAW;AAE7B,QAAM,CAAC,SAAS,UAAU,IAAIV,iBAAgB,0BAA0B,IAAI;AAE5E,QAAM,CAAC,EAAE,YAAY,mBAAmB,CAAC,IAAI,kBAAkB;AAC/D,QAAM,EAAE,cAAc,gBAAgB,IAAIC,eAAc;AAExD,QAAM,EAAE,gBAAgB,IAAI,eAAe;AAE3C,QAAM,EAAE,YAAY,IAAI,YAAY;AAEpC,QAAM,oBAAoB,CAAC,QAAgB;AACzC,QAAI,KAAK,SAAS,GAAG,GAAG;AACtB,cAAQ,KAAK,OAAO,CAAC,MAAc,MAAM,GAAG,CAAC;AAAA,IAC/C,OAAO;AACL,cAAQ,CAAC,GAAG,MAAM,GAAG,CAAC;AAAA,IACxB;AAAA,EACF;AAEA,QAAM,aAAa,CAAC,QAAgB;AAClC,QAAI,CAAC,KAAK,SAAS,GAAG,GAAG;AACvB,cAAQ,CAAC,KAAK,GAAG,IAAI,CAAC;AACtB,qBAAe,CAAC,KAAK,GAAG,YAAY,OAAO,CAAC,MAAc,MAAM,GAAG,CAAC,CAAC;AACrE;AAAA,IACF;AAEA,YAAQ,CAAC,KAAK,GAAG,KAAK,OAAO,CAAC,MAAc,MAAM,GAAG,CAAC,CAAC;AACvD,mBAAe,CAAC,KAAK,GAAG,YAAY,OAAO,CAAC,MAAc,MAAM,GAAG,CAAC,CAAC;AAAA,EACvE;AAEA,QAAM,cACJ,gBACA,mBACC,MAAM,SAASQ,mBAAkB,iBAChC,MAAM,WAAWA,mBAAkB;AAEvC,SAAO;AAAA,IACL,YAAY,cAAc,OAAO;AAAA,IACjC,gBAAgB,cAAc,OAAO;AAAA,IACrC,aAAa,cAAc,OAAO;AAAA,IAClC,iBAAiB,cAAc,OAAO;AAAA,IACtC,WAAW,cAAc,OAAO,YAAY;AAAA,IAC5C,oBAAoB,cAAc,OAAO;AAAA;AAAA,IAEzC;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,oBAAoB,MAAM,WAAW,CAAC,OAAO;AAAA,EAC/C;AACF;;;AC9EI,gBAAAnB,aAAA;AAHG,IAAM,uBAAiC,MAAM;AAClD,QAAM,QAAQ,2BAA2B;AACzC,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MACJ,aAAa,MAAM;AAAA;AAAA,EACrB;AAEJ;;;ACbA,SAAa,WAAAY,WAAS,YAAAJ,kBAAgB;AACtC,SAAS,kBAAAL,wBAAsB;AAE/B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAA0D;AAAA,EACA,WAAArB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,4BAA4B;AAgCjC,qBAAAvB,YASU,OAAAjB,OANJ,QAAAE,cAHN;AAxBG,IAAM,gBAKR,CAAC,UAAU;AACd,QAAM,EAAE,uBAAuB,UAAU,kBAAkB,UAAU,IACnE;AACF,QAAM,EAAE,cAAc,IAAI,mBAAmB;AAC7C,QAAM,EAAE,EAAE,IAAIC,iBAAe;AAC7B,QAAM,cAAcS,UAAQ,MAAM,SAAS,QAAQ,CAAC,QAAQ,CAAC;AAE7D,QAAM,CAAC,aAAa,cAAc,IAAIJ,WAAS,KAAK;AAEpD,QAAM,cAAc,CAAC,QAAgB;AACnC,QAAI,CAAC;AAAK;AACV,mBAAe,cAAc;AAAA,MAC3B,MAAM;AAAA,MACN,MAAM;AAAA,MACN,QAAQ;AAAA,IACV,CAAC;AAAA,EACH;AAEA,SACE,gBAAAN,OAAAe,YAAA,EACG;AAAA,KAAC,CAAC,yBACD,gBAAAjB,MAAC,UAAO,MAAI,MACV,0BAAAE;AAAA,MAAC;AAAA;AAAA,QACC,UAAU;AAAA,QACV,iBAAiB,CAAC,UAAU,MAAM,eAAe;AAAA,QACjD,WAAU;AAAA,QAEV;AAAA,0BAAAF,MAAC,gBACC,0BAAAA,MAAC,eAAa,YAAE,0BAA0B,GAAE,GAC9C;AAAA,UACA,gBAAAA,MAACwC,UAAA,EAAQ;AAAA,UACT,gBAAAxC,MAAC,cAAW,WAAU,+BACnB,iCACH;AAAA;AAAA;AAAA,IACF,GACF;AAAA,IAEF,gBAAAA,MAAC,mBAAgB,eAAe,KAE9B,0BAAAE,OAAC,eAAY,MAAM,cAAc,QAAQ,QACvC;AAAA,sBAAAF;AAAA,QAAC6D;AAAA,QAAA;AAAA,UACC,MAAM;AAAA,UACN,cAAc,CAAC3C,UAAS;AACtB,2BAAeA,KAAI;AACnB,gBAAIA,OAAM;AACR,wBAAU;AAAA,YACZ;AAAA,UACF;AAAA,UACA,OAAK;AAAA,UACL,SACE,gBAAAlB;AAAA,YAAC;AAAA;AAAA,cACC,YAAY;AAAA,cACZ;AAAA;AAAA,UACF;AAAA,UAEF,cAAc;AAAA,YACZ,OAAO;AAAA,YACP,WAAW;AAAA,UACb;AAAA,UAGA,0BAAAA,MAAC,kBAAe,SAAO,MACrB,0BAAAE,OAAC,SAAI,WAAU,gFACb;AAAA,4BAAAF;AAAA,cAAC;AAAA;AAAA,gBACC,OAAM;AAAA,gBACN,SAAS;AAAA,gBACT,MAAM;AAAA,gBACN,SAAQ;AAAA,gBACR,WAAU;AAAA;AAAA,YACZ;AAAA,YACC,cAAc,KAAK,oBAClB,gBAAAA,MAAC,SAAI,WAAU,gLACZ,uBACH;AAAA,aAEJ,GACF;AAAA;AAAA,MACF;AAAA,MACA,gBAAAA,MAAC,kBAAe,MAAK,UAClB,YAAE,0BAA0B,GAC/B;AAAA,OACF,GACF;AAAA,KACF;AAEJ;;;AC5GI,gBAAAA,aAAA;AAJG,IAAM,sBAAsB,MAAM;AACvC,QAAM,EAAE,kBAAkB,IAAI,mBAAmB;AAEjD,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,UAAU,kBAAkB;AAAA,MAC5B,uBAAuB,kBAAkB;AAAA,MACzC,kBAAkB,kBAAkB;AAAA,MACpC,WAAW,kBAAkB;AAAA;AAAA,EAC/B;AAEJ;;;ACdA,SAAS,MAAAI,YAAU;;;ACAnB;AAAA,EACE;AAAA,EAKA,eAAAgC;AAAA,EACA,aAAAK;AAAA,EACA,WAAA7B;AAAA,EACA,UAAAL;AAAA,EACA,YAAAC;AAAA,OACK;AACP,SAAS,cAAAY,cAAY,mBAAAV,wBAAuB;AAC5C;AAAA,EACE;AAAA,EACA,kBAAAM;AAAA,EACA,WAAAsB;AAAA,OACK;AACP,SAAS,QAAAjC,cAAY;AACrB;AAAA,EACE,OAAAiB;AAAA,EACA,MAAAlB;AAAA,EACA,iBAAA0D;AAAA,EACA,eAAA/C;AAAA,EACA,QAAAF;AAAA,OACK;AAWH,SA2bA,YAAAI,YA3bA,OAAAjB,OAKE,QAAAE,cALF;AATJ,IAAM,aAAuB,MAC3B,gBAAAA;AAAA,EAAC;AAAA;AAAA,IACC,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,SAAQ;AAAA,IACR,MAAK;AAAA,IACL,OAAM;AAAA,IACN,WAAW;AAAA,IAEX;AAAA,sBAAAF;AAAA,QAAC;AAAA;AAAA,UACC,GAAE;AAAA,UACF,MAAK;AAAA;AAAA,MACP;AAAA,MACA,gBAAAA,MAAC,UACC,0BAAAE;AAAA,QAAC;AAAA;AAAA,UACC,IAAG;AAAA,UACH,IAAG;AAAA,UACH,IAAG;AAAA,UACH,IAAG;AAAA,UACH,IAAG;AAAA,UACH,eAAc;AAAA,UAEd;AAAA,4BAAAF,MAAC,UAAK,WAAU,sCAAqC;AAAA,YACrD,gBAAAA,MAAC,UAAK,WAAU,wCAAuC,QAAQ,GAAG;AAAA;AAAA;AAAA,MACpE,GACF;AAAA;AAAA;AACF;AA8DF,IAAM,WAAW,CAAC,UAAgC;AAChD,SAAO,CAAC,CAAC,SAAS,MAAM,gBAAgB;AAC1C;AAEA,IAAM,kCAAkC;AAEjC,IAAM+D,WAWT,CAAC,UAAU;AACb,QAAM,EAAE,YAAY,aAAa,MAAM,SAAS,GAAG,YAAY,IAAI;AAEnE,QAAM,EAAE,cAAc,eAAe,kBAAkB,IAAI;AAE3D,QAAM,EAAE,cAAc,IAAI3C,aAAW;AAErC,QAAM,CAAC,mBAAmB,oBAAoB,IAAIV;AAAA,IAChD;AAAA,IACA;AAAA,EACF;AAEA,QAAM,WAAWH,QAA6C,IAAI;AAElE,EAAAkC,YAAU,MAAM;AACd,QAAI,mBAAmB;AACrB,eAAS,UAAU,WAAW,MAAM;AAClC,6BAAqB,KAAK;AAAA,MAC5B,GAAG,GAAI;AAAA,IACT;AACA,WAAO,MAAM;AACX,UAAI,SAAS,SAAS;AACpB,qBAAa,SAAS,OAAO;AAAA,MAC/B;AAAA,IACF;AAAA,EACF,GAAG,CAAC,iBAAiB,CAAC;AAEtB,QAAM,WAAW7B;AAAA,IACf,MAAM,cAAc,CAAC,MAAM,KAAK;AAAA,IAChC,CAAC,aAAa,KAAK,IAAI;AAAA,EACzB;AAEA,QAAM,aACJ,MAAM,QAAQ,KAAK,QAAQ,KAC3B,OAAO,KAAK,wBAAwB;AACtC,QAAM,yBAAyB,OAAO,KAAK,wBAAwB;AAEnE,QAAM,iBAAiBwB,aAAY,MAAM;AACvC,QAAI,cAAc,CAAC,wBAAwB;AACzC;AAAA,IACF;AACA,cAAU,CAAC,IAAI,CAAC;AAAA,EAClB,GAAG,CAAC,YAAY,wBAAwB,MAAM,OAAO,CAAC;AAEtD,QAAM,eAAe,MAAM;AACzB,QAAI,OAAO,iBAAiB,YAAY;AACtC,aAAO,aAAa;AAAA,QAClB,MAAM,KAAK;AAAA,QACX,MAAM,KAAK;AAAA,QACX;AAAA,MACF,CAAC;AAAA,IACH;AACA,UAAM,SACJ,gBAAAlC;AAAA,MAAC;AAAA;AAAA,QACC,IAAI,KAAK;AAAA,QACT,eAAa,KAAK;AAAA,QACjB,GAAG;AAAA,QACJ,UAAU,KAAK;AAAA,QACf,gBAAc;AAAA,QACd,WAAWE;AAAA,UACT;AAAA,UACA,KAAK;AAAA,UACL,YAAY;AAAA,QACd;AAAA,QACA,SAAS;AAAA,QAET;AAAA,0BAAAF,OAAC,UAAK,WAAW,6BACf;AAAA,4BAAAF,MAAC,YAAS,UAAoB,MAAY;AAAA,YAC1C,gBAAAA;AAAA,cAACa,OAAK;AAAA,cAAL;AAAA,gBACC,OAAO,WAAW,UAAU;AAAA,gBAC5B,OAAO;AAAA,gBACP,WAAU;AAAA,gBAET,eAAK,SAAS,KAAK;AAAA;AAAA,YACtB;AAAA,YACC,cACC,gBAAAb,MAAC,UAAK,WAAW,kDACd,qBACC,gBAAAA,MAAC,cAAW,IAEZ,gBAAAA,MAAC,mBAAgB,MAAM,IAAI,OAAO,SAAS,GAE/C;AAAA,aAEJ;AAAA,UACA,gBAAAA;AAAA,YAACsB;AAAA,YAAA;AAAA,cACC,WAAW,CAAC;AAAA,cACZ,UAAS;AAAA,cACT,QAAQ;AAAA,cACR,MAAM;AAAA,cACN,QAAQ;AAAA,cACR,GAAE;AAAA,cACF,OAAO;AAAA,cACP,UAAS;AAAA,cACT,OAAO;AAAA,cACP,WAAU;AAAA;AAAA,UACZ;AAAA;AAAA;AAAA,IACF;AAGF,QAAI,SAAS,aAAa,KAAK,cAAc,kBAAkB;AAC7D,aACE,gBAAAtB;AAAA,QAACsC;AAAA,QAAA;AAAA,UACC,MAAM;AAAA,UACN,SAAS,cAAc;AAAA,UACvB,WACE;AAAA,UAGD;AAAA;AAAA,MACH;AAAA,IAEJ;AACA,WAAO;AAAA,EACT;AAEA,MAAI,qBAAqB,CAAC,eAAe;AACvC,WAAO;AAAA,EACT;AAEA,MAAI,CAAC,YAAY;AACf,WAAO,aAAa;AAAA,EACtB;AAEA,SACE,gBAAAtC;AAAA,IAAC;AAAA;AAAA,MACC,OAAO,KAAK,YAAY,CAAC;AAAA,MACzB,WAAW,YAAY;AAAA,MACvB,SAAS,cAAc,CAAC;AAAA,MACxB,aAAa,CAAC,YAAyB;AACrC,kBAAU,CAAC,MAAM,OAAO,CAAC;AAAA,MAC3B;AAAA,MACA,qBAAqB,KAAK;AAAA,MAEzB,uBAAa;AAAA;AAAA,EAChB;AAEJ;AAEA,IAAM,WAQF,CAAC,UAAU;AACb,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,QAAM,CAACkB,OAAM,OAAO,IAAIV,WAAS,KAAK;AACtC,QAAM,QAAQD,QAA6C,IAAI;AAE/D,QAAM,eAAe6B,aAAY,MAAM;AACrC,QAAI,MAAM,SAAS;AACjB,mBAAa,MAAM,OAAO;AAC1B,YAAM,UAAU;AAAA,IAClB;AAAA,EAEF,GAAG,CAAC,CAAC;AAEL,EAAAK,YAAU,MAAM;AACd,WAAO,MAAM;AACX,UAAI,MAAM,SAAS;AACjB,qBAAa,MAAM,OAAO;AAAA,MAC5B;AAAA,IACF;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,QAAM,aAAc,SAA0B,OAAO;AAErD,SACE,gBAAAvC,OAACa,cAAA,EAAY,MAAMG,OACjB;AAAA,oBAAAlB,MAAC8D,gBAAA,EACC,0BAAA9D;AAAA,MAAC;AAAA;AAAA,QACC,WAAW;AAAA,QACX,aAAWkB;AAAA,QACX,cAAc,MAAM;AAClB,kBAAQ,IAAI;AAAA,QACd;AAAA,QACA,cAAc,MAAM;AAClB,gBAAM,UAAU,WAAW,MAAM;AAC/B,oBAAQ,KAAK;AAAA,UACf,GAAG,GAAG;AAAA,QACR;AAAA,QAEC,uBAAa,UAAqC;AAAA,UACjD,WAAWd,KAAG,YAAYc,SAAQ,eAAe;AAAA,QACnD,CAAC;AAAA;AAAA,IACH,GACF;AAAA,IACA,gBAAAlB;AAAA,MAACgB;AAAA,MAAA;AAAA,QACC,OAAM;AAAA,QACN;AAAA,QACA,cAAc,MAAM;AAClB,kBAAQ,KAAK;AACb,cAAI,MAAM,SAAS;AACjB,yBAAa,MAAM,OAAO;AAAA,UAC5B;AAAA,QACF;AAAA,QACA,WAAWZ;AAAA,UACT,sBACI,mDACA;AAAA,UACJ;AAAA,QACF;AAAA,QAEC,gCACG,oBAAoB,IACpB,MAAM,IAAI,CAAC,MAAM,UAAU;AACzB,iBACE,gBAAAJ;AAAA,YAAC;AAAA;AAAA,cAEC;AAAA,cACA,SAAS;AAAA,cACT,QAAQ,KAAK,SAAS;AAAA;AAAA,YAHjB;AAAA,UAIP;AAAA,QAEJ,CAAC;AAAA;AAAA,IACP;AAAA,KACF;AAEJ;AAEA,IAAM,UAID,CAAC,UAAU;AACd,QAAM,EAAE,MAAM,QAAQ,QAAQ,IAAI;AAClC,QAAM,iBAAiB,OAAO,KAAK,gBAAgB;AACnD,QAAM,UAAU,OAAO,KAAK,SAAS,eAAe,KAAK,SAAS;AAClE,SACE,gBAAAE;AAAA,IAACG;AAAA,IAAA;AAAA,MACC,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,MAAM;AAAA,MACN,eAAa,UAAU;AAAA,MACvB,WAAW,iBAAiB,UAAU;AAAA,MACtC,WAAWD;AAAA,QACT;AAAA;AAAA,MAEF;AAAA,MACA,GAAG;AAAA,MACH,SAAS,MAAM;AACb,gBAAQ,IAAI;AAAA,MACd;AAAA,MACA,eAAa,KAAK;AAAA,MAEjB;AAAA,mBACC,gBAAAJ;AAAA,UAAC;AAAA;AAAA,YACC,WAAWI;AAAA,cACT;AAAA,cACA,kBAAkB;AAAA,YACpB;AAAA,YAEA,0BAAAJ,MAAC,YAAS,UAAU,UAAU,OAAO,MAAY;AAAA;AAAA,QACnD;AAAA,QAEF,gBAAAE,OAAC,SAAI,WAAU,cACb;AAAA,0BAAAF,MAAC,gBAAa,MAAY,UAAU,QAAQ;AAAA,UAC3C,kBACC,gBAAAA,MAACa,QAAA,EAAK,MAAM,OAAO,IAAI,OAAO,WAAW,IACtC,eAAK,aACR;AAAA,WAEJ;AAAA;AAAA;AAAA,EACF;AAEJ;AAEA,IAAM,eAAoE,CACxE,UACG;AACH,QAAM,EAAE,MAAM,SAAS,IAAI;AAC3B,SACE,gBAAAb,MAACK,QAAA,EAAK,WAAW,UAAU,OAAO,QAAQ,UAAS,YACjD,0BAAAH,OAAC,SAAI,WAAU,uBACb;AAAA,oBAAAF;AAAA,MAACa,OAAK;AAAA,MAAL;AAAA,QACC,OAAO,WAAW,UAAU;AAAA,QAC5B,MAAM;AAAA,QACN,IAAI;AAAA,QACJ,WAAW;AAAA,QACX,QAAQ;AAAA,QACR,WAAU;AAAA,QAET,eAAK;AAAA;AAAA,IACR;AAAA,IACC,OAAO,KAAK,QAAQ,eAAe,gBAAAb,MAAC,OAAI,MAAY;AAAA,KACvD,GAEF;AAEJ;AAEA,IAAM,MAAuC,CAAC,UAAU;AACtD,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,WACE;AAAA,MAGF,0BAAAA;AAAA,QAACa,OAAK;AAAA,QAAL;AAAA,UACC,OAAO;AAAA,UACP,MAAM;AAAA,UACN,WAAU;AAAA,UAET,gBAAM,KAAK;AAAA;AAAA,MACd;AAAA;AAAA,EACF;AAEJ;AAEA,IAAM,iBACJ;AAEF,IAAM,WAA+D,CACnE,UACG;AACH,QAAM,EAAE,SAAS,IAAI;AACrB,MAAI,CAAC,MAAM,KAAK,MAAM;AACpB,WAAO;AAAA,EACT;AACA,MAAI,OAAO,MAAM,KAAK,SAAS,UAAU;AACvC,WACE,gBAAAb,MAAC,UAAK,WAAW,4BAEb,0BAAAA;AAAA,MAAC;AAAA;AAAA,QACC,KACE,WACK,MAAM,KAAK,cAAyB,MAAM,KAAK,OAChD,MAAM,KAAK;AAAA,QAEjB,WAAW;AAAA;AAAA,IACb,GAEJ;AAAA,EAEJ;AAEA,SACE,gBAAAE,OAAAe,YAAA,EACE;AAAA,oBAAAjB;AAAA,MAAC;AAAA;AAAA,QACC,WAAWI;AAAA,UACT;AAAA,UACA;AAAA,QACF;AAAA,QAEC,gBAAM,KAAK;AAAA;AAAA,IACd;AAAA,IACA,gBAAAJ;AAAA,MAAC;AAAA;AAAA,QACC,WAAWI;AAAA,UACT;AAAA,UACA;AAAA,QACF;AAAA,QAEC,gBAAM,KAAK,cAAc,MAAM,KAAK;AAAA;AAAA,IACvC;AAAA,KACF;AAEJ;;;ADreI,qBAAAa,YACE,OAAAjB,aADF;AAFG,IAAM,iBAAiB,CAAC,UAAyB;AACtD,SACE,gBAAAA,MAAAiB,YAAA,EACE,0BAAAjB;AAAA,IAAC+D;AAAA,IAAA;AAAA,MACC,MAAM,MAAM;AAAA,MACZ,SAAS,MAAM;AAAA,MACf,YAAY;AAAA,QACV,SAAS3D,KAAG,uCAAuC,MAAM,SAAS;AAAA,MACpE;AAAA;AAAA,EACF,GACF;AAEJ;;;AEtBA;AAAA,EACE,yBAAA4D;AAAA,EACA,iBAAAC;AAAA,EACA,oBAAAC;AAAA,OACK;;;ACJP,SAAS,MAAA9D,MAAI,QAAAC,cAAY;AA0BjB,gBAAAL,aAAA;AAVD,IAAM,eAAsC,CAAC,UAAU;AAC5D,QAAM,EAAE,OAAO,WAAW,IAAI;AAE9B,MAAI,CAAC,MAAM,QAAQ,KAAK,KAAK,MAAM,WAAW,GAAG;AAC/C,WAAO;AAAA,EACT;AAEA,SACE,gBAAAA,MAACK,QAAA,EAAK,WAAWD,KAAG,aAAa,YAAY,IAAI,GAC9C,iBAAO,IAAI,CAAC,MAAM,UACjB,gBAAAJ;AAAA,IAAC+D;AAAA,IAAA;AAAA,MAEC;AAAA,MAEA,aAAa,MAAM;AAAA,MACnB,SAAS,MAAM;AAAA,MACf;AAAA;AAAA,IALK;AAAA,EAMP,CACD,GACH;AAEJ;;;AD7BS,gBAAA/D,aAAA;AAGTkE,kBAAoC;AAAA,EAClC,MAAM;AAAA,EACN,OAAO,CAAC,GAAG;AAAA,EACX,WAAW,CAACF,uBAAsB,SAAS;AAAA,EAC3C,cAAc;AAChB,CAAC,EAAE,CAAC,UAA6B;AAC/B,SAAO,gBAAAhE,MAAC,gBAAc,GAAG,OAAO;AAClC,CAAC;AAEM,IAAM,wBAA+C,CAAC,UAAU;AACrE,SACE,gBAAAA,MAACiE,gBAAA,EAAc,UAAUD,uBAAsB,WAAY,GAAG,OAAO;AAEzE;;;ARYW,SAkBL,YAAA/C,YAlBK,OAAAjB,OAkBL,QAAAE,cAlBK;AAtBJ,IAAM,UAAsD,CAAC,UAAU;AAC5E,QAAM,EAAE,WAAW,YAAY,WAAW,iBAAiB,IAAI;AAE/D,QAAM,qBACJ,sDAAwD;AAE1D,QAAM,eACJ,CAAC,MAAM,gBACP,CAAC,MAAM,mBACP,MAAM,UAAWiB,mBAAkB;AAErC,QAAM,iBAAiB,MAAM,UAAWA,mBAAkB;AAE1D,QAAM,0BACJ,CAAC,MAAM,mBAAmB,MAAM,gBAAgB,MAAM;AAExD,QAAM,EAAE,UAAU,IAAIL,YAAU;AAEhC,QAAM,WAAWF,UAAQ,MAAM;AAC7B,QAAI,OAAO,MAAM,aAAa,aAAa;AACzC,aAAO;AAAA,IACT;AACA,WAAO,gBAAAZ,MAACK,QAAA,EAAK,MAAI,MAAE,gBAAM,UAAS;AAAA,EACpC,GAAG,CAAC,MAAM,QAAQ,CAAC;AAEnB,QAAM,gBAAgB;AAEtB,QAAM,gBAAgB,MAAM;AAC1B,UAAM,QAAQ,gBAAAL,MAAC,YAAU,GAAG,MAAM,MAAM;AACxC,UAAM,iBAAiB,gBAAAA,MAAC,wBAAqB;AAC7C,UAAM,aAAa,gBAAgB,gBAAAA,MAAC,oBAAiB;AACrD,UAAM,mBAAmB,gBAAAA,MAAC,0BAAuB;AACjD,UAAM,aAAa,kBAAkB,gBAAAA,MAAC,oBAAiB;AACvD,UAAM,YAAY,iBAAiB,gBAAAA,MAAC,mBAAgB;AACpD,UAAM,SAAS,gBAAAA,MAAC,uBAAoB;AACpC,UAAM,gBAAgB,CAAC,2BACrB,gBAAAA,MAAC,gCAA6B;AAGhC,UAAM,UACJ,gBAAAE,OAAAe,YAAA,EACE;AAAA,sBAAAjB;AAAA,QAAC;AAAA;AAAA,UACE,GAAG,MAAM;AAAA,UACV,YAAY,YAAY;AAAA;AAAA,MAC1B;AAAA,MACC,CAAC,CAAC,sBACD,gBAAAA;AAAA,QAAC;AAAA;AAAA,UACE,GAAG;AAAA,UACJ,WAAW,YAAY;AAAA;AAAA,MACzB;AAAA,OAEJ;AAGF,QAAI,OAAO,MAAM,iBAAiB,YAAY;AAC5C,aAAO,MAAM,eAAe;AAAA,QAC1B;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC;AAAA,IACH;AAEA,WACE,gBAAAE,OAAAe,YAAA,EACE;AAAA,sBAAAf;AAAA,QAACG;AAAA,QAAA;AAAA,UACC,WAAW;AAAA,UACX,WAAWD;AAAA,YACT;AAAA;AAAA,YAEA;AAAA,UACF;AAAA,UAEC;AAAA;AAAA,YACA,MAAM;AAAA,YACN;AAAA,YACA,MAAM;AAAA;AAAA;AAAA,MACT;AAAA,MAEC;AAAA,MAED,gBAAAF,OAACG,QAAA,EAAK,WAAW,UAAU,WAAU,aAClC;AAAA;AAAA,QACA,gBACC,gBAAAH,OAAAe,YAAA,EACE;AAAA,0BAAAjB,MAACwC,UAAA,EAAQ,WAAU,YAAW,WAAU,WAAU,WAAW,GAAG;AAAA,UAC/D;AAAA,WACH;AAAA,QAED;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,SACH;AAAA,OACF;AAAA,EAEJ;AAEA,SACE,gBAAAxC;AAAA,IAACK;AAAA,IAAA;AAAA,MACC,OAAM;AAAA,MACN,IAAG;AAAA,MACH,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,IAAI;AAAA,MACJ,MAAM;AAAA,MACN,WAAWD;AAAA,QACT;AAAA,QACA;AAAA,QACA,YAAY;AAAA,MACd;AAAA,MAEC,wBAAc;AAAA;AAAA,EACjB;AAEJ;AAEA,QAAQ,cAAc;;;AU3DlB,gBAAAJ,aAAA;AANG,IAAM,gBAAiE,CAC5E,UACG;AACH,QAAM,EAAE,UAAU,YAAY,GAAG,KAAK,IAAI;AAC1C,QAAM,QAAQ,iBAAiB,IAAI;AACnC,SACE,gBAAAA,MAAC,WAAQ,YAAyB,GAAG,OAClC,UACH;AAEJ;;;AC7EA;;;ACIA;AAXA;AAAA,EACE,OAAAsB;AAAA,EACA,MAAAlB;AAAA,EACA,UAAA+D;AAAA,EACA,cAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,eAAAC;AAAA,EACA,WAAA/B;AAAA,EACA,QAAAnC;AAAA,OACK;AAGP,SAAS,kBAAAF,wBAAsB;AASvB,SAiBG,YAAAc,YAXC,OAAAjB,OANJ,QAAAE,cAAA;AAPD,IAAM,oBAAoB,CAAC,UAAmC;AACnE,QAAM,EAAE,UAAU,YAAY,aAAa,WAAW,cAAc,IAAI;AACxE,QAAM,EAAE,EAAE,IAAIC,iBAAe;AAE7B,MAAI,YAAY;AACd,WACE,gBAAAH,MAACmE,SAAA,EAAO,MAAM,MACZ,0BAAAjE;AAAA,MAACmE;AAAA,MAAA;AAAA,QACC,UAAU;AAAA,QACV,iBAAiB,CAAC,UAAU,MAAM,eAAe;AAAA,QACjD,WAAU;AAAA,QAEV;AAAA,0BAAArE,MAACsE,eAAA,EACC,0BAAAtE,MAACuE,cAAA,EAAa,YAAE,0BAA0B,GAAE,GAC9C;AAAA,UACA,gBAAAvE,MAACwC,UAAA,EAAQ;AAAA,UACT,gBAAAxC,MAACoE,aAAA,EAAW,WAAU,+BACnB,yBACH;AAAA;AAAA;AAAA,IACF,GACF;AAAA,EAEJ;AACA,MAAI,CAAC,UAAU;AACb,WAAO,gBAAApE,MAAAiB,YAAA,EAAE;AAAA,EACX;AACA,SACE,gBAAAf;AAAA,IAACG;AAAA,IAAA;AAAA,MACC,WAAWD;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MAEA;AAAA,wBAAAF,OAAC,SAAI,WAAU,yDACb;AAAA,0BAAAF;AAAA,YAAC;AAAA;AAAA,cACC,MAAM;AAAA,cACN,WAAU;AAAA;AAAA,UACZ;AAAA,UACA,gBAAAA,MAACsB,MAAA,EAAI,WAAU,mCAAmC,uBAAY;AAAA,WAChE;AAAA,QACA,gBAAAtB;AAAA,UAAC;AAAA;AAAA,YACC,MAAM;AAAA,YACN,WAAU;AAAA,YACV,SAAS;AAAA;AAAA,QACX;AAAA;AAAA;AAAA,EACF;AAEJ;;;ACnEA,SAAS,4BAA4B;AACrC,SAAS,aAAAyC,aAAW,WAAA7B,WAAS,YAAAJ,kBAAgB;AAC7C,SAAS,cAAc;AACvB,SAAS,mBAAmB;AAC5B,SAAS,oBAAoB;AAC7B,SAAS,kBAAAL,wBAAsB;AAE/B,SAAS,cAAc,WAAmB;AACxC,QAAM,OAAO,OAAO,IAAI,YAAY,SAAS,GAAG,QAAQ;AACxD,QAAM,OAAO,OAAO,IAAI,YAAY,SAAS,GAAG,SAAS;AACzD,SAAO,GAAG,IAAI,aAAa,IAAI;AACjC;AAEA,IAAM,SAAS,MAAO,KAAK,KAAK;AAUzB,IAAM,uBAAuB,MAA+B;AACjE,QAAM,EAAE,EAAE,IAAIA,iBAAe;AAC7B,QAAM,CAAC,UAAU,WAAW,IAAIK,WAAS,KAAK;AAC9C,QAAM,CAAC,YAAY,aAAa,IAAIA,WAAS,KAAK;AAClD,QAAM,EAAE,WAAW,SAAS,QAAQ,WAAW,IAAI,qBAAqB;AACxE,QAAM,YAAYI,UAAQ,MAAM;AAC9B,QAAI,CAAC,WAAW;AACd,aAAO;AAAA,IACT;AACA,WAAO,cAAc,SAAS;AAAA,EAChC,GAAG,CAAC,SAAS,CAAC;AAEd,QAAM,UAAUA,UAAQ,MAAM;AAC5B,QAAI,CAAC,SAAS;AACZ,aAAO;AAAA,IACT;AACA,WAAO,cAAc,OAAO;AAAA,EAC9B,GAAG,CAAC,OAAO,CAAC;AAEZ,QAAM,YAAY,MAAM;AACtB,WAAO,aAAa,QAAQ,eAAe,SAAS,IAAI,GAAG;AAC3D,gBAAY,KAAK;AAAA,EACnB;AAEA,EAAA6B,YAAU,MAAM;AAKd,QAAI,WAAW,GAAG;AAChB,kBAAY,KAAK;AACjB,oBAAc,IAAI;AAClB;AAAA,IACF;AACA,kBAAc,KAAK;AACnB,QAAI,WAAW;AACb,UAAI,YAAY,aAAa,IAAI,QAAQ;AAEvC,YAAI,CAAC,OAAO,aAAa,QAAQ,eAAe,SAAS,EAAE,GAAG;AAC5D,sBAAY,IAAI;AAAA,QAClB;AAAA,MACF;AAAA,IACF;AAAA,EACF,GAAG,CAAC,WAAW,MAAM,CAAC;AAEtB,QAAM,cAAc,EAAE,gCAAgC;AAAA,IACpD;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,QAAM,gBAAgB,EAAE,kCAAkC;AAAA,IACxD;AAAA,IACA;AAAA,EACF,CAAC;AAED,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;;;ACjFS,gBAAAzC,aAAA;AAFF,IAAM,wBAAwB,MAAM;AACzC,QAAM,QAAQ,qBAAqB;AACnC,SAAO,gBAAAA,MAAC,qBAAmB,GAAG,OAAO;AACvC;;;AHgBA","sourcesContent":["import { BaseIconProps } from \"@kodiak-finance/orderly-ui\";\nimport React from \"react\";\n\nexport const CommuntiyTelegramIcon = React.forwardRef<\n SVGSVGElement,\n BaseIconProps\n>((props, ref) => {\n const { size = 20, ...rest } = props;\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 20 20\"\n ref={ref}\n fill=\"#fff\"\n fillOpacity=\".54\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...rest}\n >\n <path d=\"M4.108 9.464S9.645 7.13 11.565 6.31c.736-.328 3.233-1.38 3.233-1.38s1.152-.46 1.056.658c-.032.46-.288 2.069-.544 3.81-.384 2.463-.8 5.157-.8 5.157s-.064.755-.608.887c-.544.13-1.44-.46-1.6-.592-.129-.098-2.401-1.576-3.233-2.299-.224-.197-.48-.591.032-1.051a124 124 0 0 0 3.36-3.285c.384-.394.768-1.313-.832-.197-2.272 1.61-4.513 3.12-4.513 3.12s-.512.33-1.472.034-2.08-.69-2.08-.69-.768-.493.544-1.018\" />\n </svg>\n );\n});\nexport const CommuntiyDiscordIcon = React.forwardRef<\n SVGSVGElement,\n BaseIconProps\n>((props, ref) => {\n const { size = 20, ...rest } = props;\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 20 20\"\n ref={ref}\n fill=\"#fff\"\n fillOpacity=\".54\"\n {...rest}\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M14.956 5.522c1.604 2.374 2.396 5.053 2.1 8.136a.05.05 0 0 1-.02.033 11.7 11.7 0 0 1-3.55 1.805.045.045 0 0 1-.05-.017 9.6 9.6 0 0 1-.725-1.188.046.046 0 0 1 .024-.063 7 7 0 0 0 1.108-.531.046.046 0 0 0 .004-.076 6 6 0 0 1-.22-.174.04.04 0 0 0-.047-.006c-2.296 1.068-4.812 1.068-7.136 0a.04.04 0 0 0-.046.006 6 6 0 0 1-.22.174.046.046 0 0 0 .005.076c.353.204.721.384 1.107.531.025.01.037.039.025.063a8.5 8.5 0 0 1-.725 1.188.05.05 0 0 1-.05.017 11.7 11.7 0 0 1-3.546-1.805.05.05 0 0 1-.018-.033c-.248-2.667.257-5.368 2.097-8.137a.04.04 0 0 1 .02-.016 11.6 11.6 0 0 1 2.89-.903.05.05 0 0 1 .046.022c.125.224.269.51.366.744a10.7 10.7 0 0 1 3.246 0 8 8 0 0 1 .36-.744.044.044 0 0 1 .046-.022 11.7 11.7 0 0 1 2.89.903q.012.005.019.017m-6.018 5.07c.011-.788-.56-1.44-1.276-1.44-.71 0-1.276.647-1.276 1.44 0 .795.576 1.442 1.276 1.442.71 0 1.276-.647 1.276-1.441m4.718 0c.011-.788-.56-1.44-1.276-1.44-.71 0-1.276.647-1.276 1.44 0 .795.577 1.442 1.276 1.442.717 0 1.276-.647 1.276-1.441\" />\n </svg>\n );\n});\nexport const CommuntiyXIcon = React.forwardRef<\n SVGSVGElement,\n BaseIconProps\n>((props, ref) => {\n const { size = 20, ...rest } = props;\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 20 20\"\n ref={ref}\n fill=\"#fff\"\n fillOpacity=\".54\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...rest}\n >\n <path d=\"m4.42 4.73 4.633 6.194-4.662 5.037H5.44l4.082-4.41 3.298 4.41h3.57l-4.893-6.543 4.34-4.689h-1.05l-3.759 4.062-3.037-4.062zm1.543.772h1.64l7.244 9.686h-1.64z\" />\n </svg>\n );\n});\n\nCommuntiyXIcon.displayName = \"CommuntiyXIcon\";\nCommuntiyTelegramIcon.displayName = \"CommuntiyTelegramIcon\";\nCommuntiyDiscordIcon.displayName = \"CommuntiyDiscordIcon\";\n","import React from \"react\";\nimport { BaseIconProps } from \"@kodiak-finance/orderly-ui\";\n\nexport const OrderlyTextIcon = React.forwardRef<SVGSVGElement, BaseIconProps>(\n (props, ref) => {\n const { opacity = 1, ...rest } = props;\n return (\n <svg\n ref={ref}\n width=\"45\"\n height=\"14\"\n viewBox=\"0 0 45 14\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...rest}\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M8.352 2.558a.063.063 0 0 1-.04.112H2.419a.063.063 0 0 1-.04-.112A4.73 4.73 0 0 1 5.365 1.5c1.132 0 2.171.396 2.987 1.058M3.518 7.546a.18.18 0 0 0-.148-.08H.886a.085.085 0 0 0-.083.11 4.75 4.75 0 0 0 4.562 3.429 4.75 4.75 0 0 0 4.562-3.43.085.085 0 0 0-.082-.108H7.36a.18.18 0 0 0-.148.079 2.252 2.252 0 0 1-3.694 0m3.518-2.812a.18.18 0 0 0 .134.061h2.598c.06 0 .101-.057.082-.113a4.8 4.8 0 0 0-.801-1.432.17.17 0 0 0-.132-.062H1.814a.17.17 0 0 0-.132.062A4.8 4.8 0 0 0 .88 4.682a.085.085 0 0 0 .081.113h2.6c.05 0 .099-.023.133-.06a2.25 2.25 0 0 1 1.67-.742c.663 0 1.258.286 1.67.741M7.6 6.95a.067.067 0 0 1-.063-.086 2.26 2.26 0 0 0-.079-1.45.067.067 0 0 1 .061-.093h2.45c.03 0 .058.022.063.052a4.8 4.8 0 0 1 .04 1.52.064.064 0 0 1-.065.057zm-4.407-.086a.067.067 0 0 1-.063.086H.723a.064.064 0 0 1-.064-.056 4.8 4.8 0 0 1 .039-1.52.065.065 0 0 1 .063-.053h2.45c.047 0 .079.049.061.093a2.25 2.25 0 0 0-.079 1.45\"\n fill=\"#fff\"\n fillOpacity={opacity}\n />\n <path\n d=\"M11.272 4.438h1.685v1.61l-.275-.312q.237-.511.662-.874.425-.361.949-.487.524-.124 1.073.038v1.585q-.661-.224-1.223-.125-.55.1-.874.475-.312.375-.312.923v3.608h-1.685zm4.148 3.22q0-.923.4-1.697.41-.774 1.123-1.211a2.95 2.95 0 0 1 1.573-.437 2.7 2.7 0 0 1 1.523.437 2.8 2.8 0 0 1 1.01 1.198q.363.762.363 1.71 0 .95-.362 1.71-.35.762-1.011 1.199a2.7 2.7 0 0 1-1.523.437 2.95 2.95 0 0 1-1.573-.437 3.1 3.1 0 0 1-1.124-1.198 3.7 3.7 0 0 1-.4-1.71m1.748 0q0 .5.224.924.225.412.612.65.387.236.861.236.475 0 .862-.237.386-.237.611-.649.225-.424.225-.924 0-.498-.225-.91-.225-.425-.611-.65a1.6 1.6 0 0 0-.862-.237q-.474 0-.861.237a1.6 1.6 0 0 0-.612.65q-.224.412-.224.91m3.395-6.016h1.685v9.237h-1.685zm4.192 5.329h3.97l-.387.537a2 2 0 0 0-.25-.9 1.63 1.63 0 0 0-.612-.623 1.64 1.64 0 0 0-.861-.225q-.487 0-.886.25a1.6 1.6 0 0 0-.625.686 2.1 2.1 0 0 0-.224.961q0 .537.224.974.239.436.662.687.425.25.961.25.525 0 .937-.238.423-.25.661-.674l1.386.624q-.45.787-1.236 1.26-.786.463-1.798.463-.96 0-1.747-.437a3.3 3.3 0 0 1-1.248-1.198 3.34 3.34 0 0 1-.45-1.71q0-.924.437-1.686.45-.775 1.223-1.21.774-.45 1.723-.45 1.061 0 1.885.537.825.536 1.21 1.448.4.898.226 1.96h-5.181zm6.221-2.534h1.685v1.61l-.274-.312q.237-.511.661-.874.425-.361.949-.487.525-.124 1.073.038v1.585q-.661-.224-1.223-.125-.549.1-.874.475-.312.375-.312.923v3.608h-1.685zm4.885-2.796h1.686v9.237H35.86zm4.359 9.324q.224.487.587.737.362.262.836.262.711 0 1.186-.5.487-.486.487-1.26V9.08l.262.35a2.43 2.43 0 0 1-.911 1.011q-.6.362-1.373.362-.8 0-1.386-.337a2.3 2.3 0 0 1-.886-.936q-.312-.6-.312-1.386V4.438h1.685v3.408q0 .436.162.761.162.312.462.5.312.174.761.174.45 0 .8-.175a1.3 1.3 0 0 0 .549-.511q.187-.338.187-.75V4.439H45v5.767q0 .936-.45 1.685a3.07 3.07 0 0 1-1.21 1.186 3.4 3.4 0 0 1-1.698.424q-.973 0-1.735-.474a3.3 3.3 0 0 1-1.186-1.26z\"\n fill=\"#fff\"\n fillOpacity={opacity}\n />\n </svg>\n );\n }\n);\n","import { BaseIconProps } from \"@kodiak-finance/orderly-ui\";\nimport React from \"react\";\n// import { BaseIcon, BaseIconProps } from \"./baseIcon\";\n\nexport const SignalIcon = React.forwardRef<SVGSVGElement, BaseIconProps>(\n (props, ref) => {\n const { size = 18, ...rest } = props;\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 18 18\"\n ref={ref}\n className=\"oui-fill-success-light\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...rest}\n >\n <path d=\"M9.02092 2.92969C6.18562 2.92969 3.51037 4.13854 1.68502 6.18754C1.40947 6.49676 1.446 6.96671 1.75537 7.24218C2.0646 7.51743 2.53447 7.48143 2.81002 7.17183C4.35112 5.44196 6.6141 4.42969 9.02092 4.42969C11.4205 4.42969 13.6369 5.43123 15.185 7.17183C15.4603 7.48143 15.9301 7.51743 16.2397 7.24218C16.5492 6.96694 16.5853 6.49699 16.31 6.18754C14.4787 4.12856 11.8512 2.92969 9.02092 2.92969ZM9.02092 5.92969C7.04092 5.92969 5.20867 6.78461 3.93502 8.25019C3.6633 8.56294 3.6927 9.03318 4.00537 9.30468C4.31797 9.57618 4.7883 9.54693 5.06002 9.23418C6.05175 8.09343 7.47982 7.42968 9.02092 7.42968C10.5348 7.42968 11.9446 8.08144 12.935 9.18769C13.2113 9.49593 13.681 9.51093 13.9897 9.23418C14.2983 8.95818 14.3364 8.48793 14.06 8.17968C12.7879 6.75896 10.9659 5.92969 9.02092 5.92969ZM9.02092 8.92968C7.91917 8.92968 6.89242 9.40218 6.18502 10.2189C5.91375 10.5317 5.94225 11.0019 6.25537 11.2734C6.56835 11.5449 7.03875 11.5164 7.31002 11.2029C7.73542 10.7124 8.3589 10.4297 9.02092 10.4297C9.6684 10.4297 10.2604 10.7072 10.685 11.1797C10.962 11.4879 11.4552 11.5037 11.7631 11.2262C12.0712 10.9494 12.087 10.4799 11.81 10.1717C11.1037 9.38643 10.0983 8.92968 9.02092 8.92968ZM8.99752 11.9297C8.81609 11.9297 8.64374 12.0047 8.50537 12.1404C8.50537 12.1404 7.3935 13.2362 6.95842 13.6637C6.52342 14.0919 6.7968 14.9319 7.49752 14.9297H9.63037H10.4975C11.1864 14.9319 11.477 14.0739 11.0366 13.6404C10.5961 13.2069 9.51322 12.1404 9.51314 12.1404C9.37469 12.0047 9.17894 11.9297 8.99752 11.9297Z\" />\n </svg>\n );\n }\n);\n\nSignalIcon.displayName = \"SignalIcon\";\n","import React, { FC } from \"react\";\nimport { SVGProps } from \"react\";\n\nexport interface IconProps extends SVGProps<SVGSVGElement> {\n size: number;\n}\n\nexport const InfoIcon: FC<IconProps> = (props) => {\n const { size = 20, viewBox, ...rest } = props;\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={`${size}px`}\n height={`${size}px`}\n fill=\"none\"\n viewBox={`0 0 20 20`}\n {...rest}\n >\n <path\n d=\"M10.012 1.66602C5.40954 1.66602 1.67871 5.39685 1.67871 9.99935C1.67871 14.6018 5.40954 18.3327 10.012 18.3327C14.6145 18.3327 18.3454 14.6018 18.3454 9.99935C18.3454 5.39685 14.6145 1.66602 10.012 1.66602ZM10.012 5.83268C10.472 5.83268 10.8454 6.20602 10.8454 6.66602V10.8327C10.8454 11.2927 10.472 11.666 10.012 11.666C9.55204 11.666 9.17871 11.2927 9.17871 10.8327V6.66602C9.17871 6.20602 9.55204 5.83268 10.012 5.83268ZM10.012 12.4993C10.472 12.4993 10.8454 12.8727 10.8454 13.3327C10.8454 13.7927 10.472 14.166 10.012 14.166C9.55204 14.166 9.17871 13.7927 9.17871 13.3327C9.17871 12.8727 9.55204 12.4993 10.012 12.4993Z\"\n fill=\"#FF7D00\"\n />\n </svg>\n );\n};\n","import React from \"react\";\nimport { SVGProps } from \"react\";\n\nexport interface IconProps extends SVGProps<SVGSVGElement> {\n size: number;\n}\n\nexport const CloseIcon: React.FC<IconProps> = (props) => {\n const { size = 16, ...rest } = props;\n return (\n <svg\n width={`${size}px`}\n height={`${size}px`}\n viewBox=\"0 0 16 16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...rest}\n >\n <path\n d=\"M3.32972 2.60449C3.15912 2.60449 2.98072 2.66183 2.85052 2.79183C2.59019 3.0525 2.59019 3.48982 2.85052 3.75049L7.03806 7.93782L2.85052 12.1252C2.59019 12.3858 2.59019 12.8232 2.85052 13.0838C3.11092 13.3438 3.54852 13.3438 3.80892 13.0838L7.99639 8.89649L12.1839 13.0838C12.4443 13.3438 12.8819 13.3438 13.1423 13.0838C13.4026 12.8232 13.4026 12.3858 13.1423 12.1252L8.95472 7.93782L13.1423 3.75049C13.4026 3.48982 13.4026 3.0525 13.1423 2.79183C13.0121 2.66183 12.8336 2.60449 12.6631 2.60449C12.4925 2.60449 12.3141 2.66183 12.1839 2.79183L7.99639 6.97916L3.80892 2.79183C3.67872 2.66183 3.50032 2.60449 3.32972 2.60449Z\"\n fill=\"currentColor\"\n />\n </svg>\n );\n};\n","import { FC } from \"react\";\nimport { SVGProps } from \"react\";\n\nexport const OrderlyLogo: FC<SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg\n width=\"200\"\n height=\"24\"\n viewBox=\"0 0 200 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path\n d=\"M22.2637 18.5152H26.1444V13.3629C26.1444 10.2669 27.9664 9.39239 29.6701 9.39239C29.9777 9.39239 30.2617 9.41602 30.6639 9.46329V6.20176C30.2853 6.10722 29.9777 6.08359 29.7174 6.08359C27.8481 6.08359 26.6886 7.3362 26.2153 9.27421H26.1444V6.22539H22.2637V18.5152Z\"\n fill=\"white\"\n />\n <path\n d=\"M37.3191 18.7516C39.1411 18.7516 40.3952 17.7826 40.7265 16.8608V18.5152H44.6072V1.97122H40.7265V7.87979C40.3952 6.95806 39.1411 5.98905 37.3191 5.98905C34.8108 5.98905 31.9713 7.83252 31.9713 12.3703C31.9713 16.9317 34.8108 18.7516 37.3191 18.7516ZM35.6153 12.3703C35.6153 10.196 36.9168 9.20331 38.2892 9.20331C39.638 9.20331 40.8921 10.196 40.8921 12.3703C40.8921 14.5447 39.638 15.5373 38.2892 15.5373C36.9168 15.5373 35.6153 14.5447 35.6153 12.3703Z\"\n fill=\"white\"\n />\n <path\n d=\"M53.418 18.7516C56.4468 18.7516 58.6475 17.1917 59.2154 14.3556H55.8079C55.595 15.1592 55.0744 15.8209 53.489 15.8209C51.9746 15.8209 51.0281 15.1355 50.8151 13.3393H59.31C59.3573 13.0557 59.381 12.8194 59.381 12.3703C59.381 7.57255 56.5888 5.98905 53.418 5.98905C50.1289 5.98905 47.1474 7.73799 47.1474 12.323C47.1474 17.0972 50.3655 18.7516 53.418 18.7516ZM50.8388 11.0941C51.0754 9.676 51.8799 8.9197 53.3234 8.9197C55.0981 8.9197 55.6423 10.0305 55.7133 11.0941H50.8388Z\"\n fill=\"white\"\n />\n <path\n d=\"M61.8978 18.5152H65.7784V13.3629C65.7784 10.2669 67.6005 9.39239 69.3042 9.39239C69.6118 9.39239 69.8957 9.41602 70.298 9.46329V6.20176C69.9194 6.10722 69.6118 6.08359 69.3515 6.08359C67.4821 6.08359 66.3227 7.3362 65.8494 9.27421H65.7784V6.22539H61.8978V18.5152Z\"\n fill=\"white\"\n />\n <path\n d=\"M72.5672 18.5152H76.4479V1.97122H72.5672V18.5152Z\"\n fill=\"white\"\n />\n <path\n d=\"M79.8261 20.0278V23.2893C83.6358 23.6911 85.2212 22.4149 86.8776 18.3734L91.8468 6.22539H87.8714L85.1739 13.5757L82.5473 6.22539H78.5957L83.0679 17.2626C83.3755 17.9953 83.3992 18.3734 83.1389 18.9643C82.9259 19.437 82.3817 20.3587 79.8261 20.0278Z\"\n fill=\"white\"\n />\n <path\n d=\"M100.278 18.5152H104.229V8.63609H104.324L110.287 18.5152H114.546V1.97122H110.571V12.1103H110.476L104.371 1.97122H100.278V18.5152Z\"\n fill=\"white\"\n />\n <path\n d=\"M123.327 18.7516C126.356 18.7516 128.557 17.1917 129.125 14.3556H125.717C125.504 15.1592 124.984 15.8209 123.398 15.8209C121.884 15.8209 120.937 15.1355 120.724 13.3393H129.219C129.267 13.0557 129.29 12.8194 129.29 12.3703C129.29 7.57255 126.498 5.98905 123.327 5.98905C120.038 5.98905 117.057 7.73799 117.057 12.323C117.057 17.0972 120.275 18.7516 123.327 18.7516ZM120.748 11.0941C120.985 9.676 121.789 8.9197 123.233 8.9197C125.007 8.9197 125.552 10.0305 125.623 11.0941H120.748Z\"\n fill=\"white\"\n />\n <path\n d=\"M137.439 18.6807C138.172 18.6807 138.882 18.5861 139.474 18.4207V15.5609C138.93 15.6082 138.717 15.6082 138.456 15.6082C137.202 15.6082 136.966 14.9228 136.966 14.072V9.22695H139.379V6.22539H136.966V3.01113H133.085V6.22539H130.979V9.22695H133.085V14.6156C133.085 17.4753 134.789 18.6807 137.439 18.6807Z\"\n fill=\"white\"\n />\n <path\n d=\"M144.456 18.5152H148.833L150.797 11.3777L152.761 18.5152H157.115L160.333 6.22539H156.666L154.749 14.781H154.654L152.454 6.22539H149.117L146.917 14.781H146.822L144.905 6.22539H141.261L144.456 18.5152Z\"\n fill=\"white\"\n />\n <path\n d=\"M167.796 18.7516C170.896 18.7516 174.043 16.8845 174.043 12.3703C174.043 7.85616 170.896 5.98905 167.796 5.98905C164.673 5.98905 161.549 7.85616 161.549 12.3703C161.549 16.8845 164.673 18.7516 167.796 18.7516ZM165.169 12.3703C165.169 10.196 166.282 9.20331 167.796 9.20331C169.287 9.20331 170.399 10.196 170.399 12.3703C170.399 14.5447 169.287 15.5373 167.796 15.5373C166.282 15.5373 165.169 14.5447 165.169 12.3703Z\"\n fill=\"white\"\n />\n <path\n d=\"M176.554 18.5152H180.434V13.3629C180.434 10.2669 182.256 9.39239 183.96 9.39239C184.268 9.39239 184.552 9.41602 184.954 9.46329V6.20176C184.575 6.10722 184.268 6.08359 184.007 6.08359C182.138 6.08359 180.979 7.3362 180.505 9.27421H180.434V6.22539H176.554V18.5152Z\"\n fill=\"white\"\n />\n <path\n d=\"M187.223 18.5152H191.104V14.9701L192.074 13.9302L195.742 18.5152H200.001L194.44 11.4249L199.362 6.22539H195.126L191.104 10.8104V1.97122H187.223V18.5152Z\"\n fill=\"white\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M9.66235 0.640167L9.70838 0.640167C12.1367 0.64581 14.355 1.54403 16.052 3.02375C16.1722 3.1286 16.0961 3.32102 15.9365 3.32102L3.43427 3.32102C3.27465 3.32102 3.1985 3.1286 3.31874 3.02375C5.01571 1.54403 7.23406 0.645809 9.66235 0.640167Z\"\n fill=\"white\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M5.9175 12.9472C5.84821 12.8485 5.73663 12.7865 5.61594 12.7865L0.606422 12.7865C0.461299 12.7865 0.355489 12.924 0.39667 13.063C1.58273 17.0661 5.29234 19.9869 9.68495 19.9869C14.0776 19.9869 17.7872 17.0661 18.9732 13.063C19.0144 12.924 18.9086 12.7865 18.7635 12.7865L13.754 12.7865C13.6333 12.7865 13.5218 12.8485 13.4525 12.9472C12.6208 14.1317 11.2434 14.9061 9.68499 14.9061C8.12654 14.9061 6.74917 14.1317 5.9175 12.9472Z\"\n fill=\"white\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M13.3322 7.51577C13.4208 7.63078 13.5556 7.7029 13.7009 7.7029L18.7216 7.7029C18.868 7.7029 18.9741 7.56325 18.9304 7.42361C18.551 6.2113 17.9392 5.10154 17.147 4.14637C17.0811 4.06686 16.9826 4.02197 16.8792 4.02197L2.4903 4.02197C2.38694 4.02197 2.28845 4.06686 2.22251 4.14637C1.43037 5.10153 0.818541 6.2113 0.439134 7.42361C0.395431 7.56325 0.501494 7.7029 0.647976 7.7029L5.66868 7.7029C5.81394 7.7029 5.9488 7.63078 6.03735 7.51577C6.87801 6.42387 8.19911 5.72017 9.68478 5.72017C11.1704 5.72017 12.4916 6.42387 13.3322 7.51577Z\"\n fill=\"white\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M14.1283 12.0868C14.0334 12.0868 13.969 11.9902 14.0018 11.9013C14.184 11.4069 14.2835 10.8724 14.2835 10.3148C14.2835 9.70687 14.1652 9.12653 13.9505 8.59547C13.9142 8.50592 13.9788 8.40582 14.0755 8.40582L19.0003 8.40582C19.1057 8.40582 19.1968 8.48012 19.2156 8.58377C19.3172 9.14546 19.3702 9.72401 19.3702 10.3149C19.3702 10.8567 19.3256 11.3881 19.2399 11.9057C19.2225 12.0108 19.1307 12.0868 19.0241 12.0868L14.1283 12.0868ZM5.36846 11.9013C5.40122 11.9902 5.33678 12.0868 5.24195 12.0868L0.346163 12.0868C0.239492 12.0868 0.147732 12.0108 0.130321 11.9057C0.0445957 11.3881 0 10.8567 0 10.3149C0 9.72401 0.0530502 9.14546 0.154653 8.58377C0.173403 8.48011 0.264481 8.40582 0.369941 8.40582L5.29476 8.40582C5.39146 8.40582 5.45599 8.50592 5.41977 8.59547C5.20498 9.12653 5.08673 9.70687 5.08673 10.3148C5.08673 10.8724 5.18623 11.4069 5.36846 11.9013Z\"\n fill=\"white\"\n />\n </svg>\n );\n};\n","export {\n CommuntiyXIcon,\n CommuntiyTelegramIcon,\n CommuntiyDiscordIcon,\n} from \"./communtiyIcons\";\nexport { OrderlyTextIcon } from \"./orderlyNetworkTextIcon\";\nexport { SignalIcon } from \"./signal\";\nexport { InfoIcon } from \"./infoIcon\";\nexport { CloseIcon } from \"./closeIcon\";\nexport { OrderlyLogo } from \"./orderlyLogo\";\n","import { FC } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { Checkbox, cn, Flex, SimpleDialog } from \"@kodiak-finance/orderly-ui\";\nimport { InfoIcon } from \"../icons\";\nimport type { UseRestrictedInfoScriptReturn } from \"./restrictedInfo.script\";\n\nexport type RestrictedInfoProps = UseRestrictedInfoScriptReturn & {\n className?: string;\n};\n\nexport const RestrictedInfo: FC<RestrictedInfoProps> = (props) => {\n const { brokerName, agree, setAgree } = props;\n const {\n ip,\n content,\n restrictedOpen,\n canUnblock,\n accessRestricted,\n setAccessRestricted,\n } = props.restrictedInfo || {};\n const { t } = useTranslation();\n\n // if user region is in the canUnblock regions and accessRestricted is not set, show the dialog\n if (restrictedOpen && canUnblock && accessRestricted === undefined) {\n return (\n <SimpleDialog\n open={canUnblock}\n title={t(\"restrictedInfo.accessRestricted\")}\n size=\"sm\"\n closable={false}\n actions={{\n secondary: {\n label: t(\"common.cancel\"),\n onClick: () => {\n setAccessRestricted(true);\n },\n size: \"md\",\n },\n primary: {\n label: t(\"common.confirm\"),\n onClick: async () => {\n setAccessRestricted(false);\n },\n size: \"md\",\n disabled: !agree,\n },\n }}\n >\n {t(\"restrictedInfo.accessRestricted.description\")}\n\n <Flex gapX={1} pt={2}>\n <Checkbox\n id=\"orderConfirm\"\n color={\"white\"}\n checked={agree}\n onCheckedChange={(checked) => {\n setAgree(!!checked);\n }}\n />\n <label htmlFor=\"orderConfirm\" className=\"oui-cursor-pointer\">\n {t(\"restrictedInfo.accessRestricted.agree\")}\n </label>\n </Flex>\n </SimpleDialog>\n );\n }\n\n if (!restrictedOpen) {\n return;\n }\n\n const renderContent = () => {\n if (typeof content === \"function\") {\n return <span>{content({ ip: ip!, brokerName })}</span>;\n }\n return (\n content || (\n <span>\n {t(\"restrictedInfo.description.default\", {\n brokerName,\n ip,\n })}\n </span>\n )\n );\n };\n\n return (\n <Flex\n ref={props.container}\n justify=\"center\"\n className={cn(\n \"oui-restricted-info\",\n \"oui-rounded-xl oui-p-[7px]\",\n \"oui-text-warning-darken\",\n props.className,\n )}\n >\n <Flex\n className={cn(\n \"oui-min-h-[20px] oui-gap-1\",\n \"oui-text-2xs oui-leading-4 md:oui-text-sm\",\n \"oui-items-start lg:oui-justify-center\",\n props.mutiLine ? \"lg:oui-items-start\" : \"lg:oui-items-center\",\n )}\n >\n <InfoIcon size={20} className=\"oui-size-4 oui-shrink-0 lg:oui-size-5\" />\n {renderContent()}\n </Flex>\n </Flex>\n );\n};\n","import { useRef, useState } from \"react\";\nimport { useConfig, useLocalStorage } from \"@kodiak-finance/orderly-hooks\";\nimport { useAppContext } from \"@kodiak-finance/orderly-react-app\";\nimport { useObserverElement } from \"@kodiak-finance/orderly-ui\";\n\nexport type UseRestrictedInfoScriptReturn = ReturnType<\n typeof useRestrictedInfoScript\n> & {\n brokerName?: string;\n};\n\nexport const useRestrictedInfoScript = () => {\n const { restrictedInfo } = useAppContext();\n const brokerName = useConfig(\"brokerName\");\n const container = useRef<HTMLDivElement>(null);\n const [mutiLine, setMutiLine] = useState(false);\n const [agree, setAgree] = useState(false);\n\n const [canUnblock, setCanUnblock] = useLocalStorage(\n \"orderly_unblock_restricted\",\n true,\n );\n\n useObserverElement(container.current, (entry) => {\n setMutiLine(entry.contentRect.height > 28);\n });\n\n return {\n restrictedInfo,\n brokerName,\n container,\n mutiLine,\n agree,\n setAgree,\n };\n};\n","import { FC } from \"react\";\nimport { useRestrictedInfoScript } from \"./restrictedInfo.script\";\nimport { RestrictedInfo, RestrictedInfoProps } from \"./restrictedInfo.ui\";\n\nexport type RestrictedInfoWidgetProps = Pick<RestrictedInfoProps, \"className\">;\n\nexport const RestrictedInfoWidget: FC<RestrictedInfoWidgetProps> = (props) => {\n const state = useRestrictedInfoScript();\n return <RestrictedInfo {...props} {...state} />;\n};\n","export { RestrictedInfo } from \"./restrictedInfo.ui\";\nexport { RestrictedInfoWidget } from \"./restrictedInfo.widget\";\nexport { useRestrictedInfoScript } from \"./restrictedInfo.script\";\n","import React, { useMemo } from \"react\";\nimport type { RouterAdapter } from \"@kodiak-finance/orderly-types\";\nimport { Flex, Text } from \"@kodiak-finance/orderly-ui\";\nimport { BottomNavItem } from \"./bottomNav.widget\";\n\nexport type BottomNavProps = {\n mainMenus?: BottomNavItem[];\n current?: string | string[];\n onRouteChange?: RouterAdapter[\"onRouteChange\"];\n};\n\nexport const BottomNav: React.FC<BottomNavProps> = (props) => {\n const { mainMenus, current, onRouteChange } = props;\n\n const isSubmenu = useMemo(() => {\n return mainMenus?.every((menu) => menu.href !== current);\n }, [mainMenus, current]);\n\n const menus = useMemo(() => {\n return mainMenus?.map((menu) => {\n const isActive = current === menu.href;\n const isExternalLink =\n menu.href.startsWith(\"http://\") || menu.href.startsWith(\"https://\");\n // const isTrading = menu.href === \"/\" || /trading/i.test(menu.name);\n return (\n <Flex\n key={menu.name}\n direction={\"column\"}\n itemAlign={\"center\"}\n justify={\"center\"}\n className=\"oui-flex-1\"\n onClick={() => {\n if (isExternalLink) {\n window.location.href = menu.href;\n } else {\n onRouteChange?.({ href: menu.href, name: menu.name });\n }\n }}\n >\n {/* TODO: add new trading menu when ai is ready */}\n {/* {isTrading ? (\n <BottomNavTradingMenu\n label={menu.name}\n active={!!isActive}\n activeIcon={menu.activeIcon}\n inactiveIcon={menu.inactiveIcon}\n onNavigate={() =>\n onRouteChange?.({ href: menu.href, name: menu.name })\n }\n />\n ) : (\n <Text>{isActive ? menu.activeIcon : menu.inactiveIcon}</Text>\n )} */}\n <Text>{isActive ? menu.activeIcon : menu.inactiveIcon}</Text>\n <Text size=\"2xs\" intensity={isActive ? 98 : 36}>\n {menu.name}\n </Text>\n </Flex>\n );\n });\n }, [mainMenus, current, onRouteChange]);\n\n if (isSubmenu || !mainMenus) {\n return null;\n }\n\n return (\n <Flex\n width={\"100%\"}\n height={64}\n px={3}\n itemAlign={\"center\"}\n justify={\"between\"}\n className=\"oui-border-t oui-border-line-4 oui-bg-base-9\"\n >\n {menus}\n </Flex>\n );\n};\n","import React, { ReactNode } from \"react\";\nimport { type RouterAdapter } from \"@kodiak-finance/orderly-types\";\nimport { useScreen } from \"@kodiak-finance/orderly-ui\";\nimport { BottomNav } from \"./bottomNav.ui.mobile\";\n\nexport type BottomNavItem = {\n name: string;\n href: string;\n activeIcon: ReactNode;\n inactiveIcon: ReactNode;\n};\n\nexport type BottomNavProps = {\n mainMenus?: BottomNavItem[];\n current?: string;\n onRouteChange?: RouterAdapter[\"onRouteChange\"];\n};\n\nexport const BottomNavWidget: React.FC<BottomNavProps> = (props) => {\n const { isMobile } = useScreen();\n const { mainMenus, ...rest } = props;\n return isMobile ? <BottomNav mainMenus={mainMenus} {...rest} /> : null;\n};\n","import React, { useState } from \"react\";\nimport {\n Flex,\n PopoverRoot,\n PopoverTrigger,\n PopoverContent,\n Text,\n SpotIcon,\n PerpsIcon,\n SelectedChoicesFillIcon,\n PopupUnionIcon,\n CloseRoundFillIcon,\n} from \"@kodiak-finance/orderly-ui\";\nimport { cn } from \"@kodiak-finance/orderly-ui\";\n\ntype TradingMenuChoiceProps = {\n icon: React.ReactNode;\n label: string;\n selected?: boolean;\n onClick?: () => void;\n className?: string;\n};\n\nconst TradingMenuChoice: React.FC<TradingMenuChoiceProps> = (props) => {\n const { icon, label, selected, onClick, className } = props;\n return (\n <Flex\n itemAlign=\"center\"\n className={cn(\n \"oui-w-full oui-px-2 oui-py-3\",\n \"oui-rounded-md\",\n \"oui-cursor-pointer\",\n className,\n )}\n onClick={onClick}\n >\n <Flex gap={2} itemAlign=\"center\">\n {icon}\n <Text size=\"sm\" intensity={80} weight=\"semibold\">\n {label}\n </Text>\n </Flex>\n <Flex className=\"oui-ml-auto\">\n {selected ? <SelectedChoicesFillIcon size={14} /> : null}\n </Flex>\n </Flex>\n );\n};\n\nexport type BottomNavTradingMenuProps = {\n active: boolean;\n activeIcon: React.ReactNode;\n inactiveIcon: React.ReactNode;\n label: string;\n onNavigate: () => void;\n};\n\nexport const BottomNavTradingMenu: React.FC<BottomNavTradingMenuProps> = (\n props,\n) => {\n const { active, activeIcon, inactiveIcon, onNavigate, label } = props;\n const [open, setOpen] = useState(false);\n\n const onClickTrigger = () => {\n if (!active) {\n onNavigate();\n return;\n }\n setOpen((v) => !v);\n };\n\n return (\n <PopoverRoot open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n {!open ? (\n <>\n <Flex\n width={48}\n height={48}\n r=\"full\"\n itemAlign={\"center\"}\n justify={\"center\"}\n className=\"oui-bg-base-7 oui--mt-6\"\n onClick={onClickTrigger}\n >\n {active ? activeIcon : inactiveIcon}\n </Flex>\n <Text\n size=\"2xs\"\n intensity={active ? 98 : 36}\n className=\"oui-text-center\"\n >\n {label}\n </Text>\n </>\n ) : (\n <Flex\n width={48}\n height={48}\n r=\"full\"\n itemAlign={\"center\"}\n justify={\"center\"}\n className=\"oui-relative oui--mt-12\"\n onClick={(e) => {\n e.stopPropagation?.();\n setOpen(false);\n }}\n >\n <PopupUnionIcon\n size={78}\n className=\"oui-text-base-8 oui-absolute oui-left-1/2 oui-top-1/2 -oui-translate-x-1/2 -oui-translate-y-1/2\"\n />\n <Flex\n className=\"oui-absolute oui-left-1/2 oui-top-1/2 -oui-translate-x-1/2 -oui-translate-y-1/2\"\n itemAlign=\"center\"\n justify=\"center\"\n >\n <CloseRoundFillIcon size={28} />\n </Flex>\n </Flex>\n )}\n </PopoverTrigger>\n <PopoverContent\n sideOffset={12}\n align=\"center\"\n side=\"top\"\n className=\"!oui-w-[180px] !oui-bg-base-8 !oui-p-1 oui-border-none oui--mb-[22px]\"\n >\n <Flex direction=\"column\" className=\"oui-gap-1 oui-w-full\">\n <TradingMenuChoice\n icon={<SpotIcon size={20} />}\n label=\"Spot\"\n onClick={() => {\n window.location.href = \"https://woofi.com/swap\";\n setOpen(false);\n }}\n className=\"\"\n />\n <TradingMenuChoice\n icon={<PerpsIcon size={20} />}\n label=\"Perps\"\n selected={true}\n onClick={() => setOpen(false)}\n className=\"oui-bg-base-6\"\n />\n </Flex>\n </PopoverContent>\n </PopoverRoot>\n );\n};\n","export { BottomNavWidget, type BottomNavProps } from \"./bottomNav.widget\";\nexport { BottomNav } from \"./bottomNav.ui.mobile\";\nexport { BottomNavTradingMenu } from \"./tradingMenu.ui\";\n","import {\n ExtensionPositionEnum,\n ExtensionSlot,\n installExtension,\n} from \"@kodiak-finance/orderly-ui\";\nimport { AccountMenu, AccountMenuProps } from \"./menu.ui\";\nimport { useAccountMenu } from \"./useWidgetBuilder.script\";\nimport { FC } from \"react\";\n\nexport const AccountMenuWidget = () => {\n const state = useAccountMenu();\n return <AccountMenu {...state} />;\n};\n\ninstallExtension<AccountMenuProps>({\n name: \"account-menu\",\n scope: [\"*\"],\n positions: [ExtensionPositionEnum.AccountMenu],\n builder: useAccountMenu,\n __isInternal: true,\n})((props: AccountMenuProps) => {\n return <AccountMenu {...props} />;\n});\n\nexport const WalletConnectButtonExtension = () => {\n return <ExtensionSlot position={ExtensionPositionEnum.AccountMenu} />;\n};\n","import { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { AccountStatusEnum } from \"@kodiak-finance/orderly-types\";\nimport {\n Button,\n Divider,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuPortal,\n DropdownMenuRoot,\n DropdownMenuTrigger,\n EVMAvatar,\n Flex,\n Text,\n} from \"@kodiak-finance/orderly-ui\";\n\nexport type AccountMenuProps = {\n accountState: AccountState;\n address?: string;\n onDisconnect: () => void;\n connect: () => Promise<void>;\n onCrateAccount: () => Promise<void>;\n onCreateOrderlyKey: () => Promise<void>;\n onOpenExplorer: () => void;\n onSwitchNetwork: () => void;\n wrongNetwork: boolean;\n disabledConnect?: boolean;\n isMobile: boolean;\n};\n\nexport const AccountMenu = (props: AccountMenuProps) => {\n const { t } = useTranslation();\n const {\n accountState: state,\n onDisconnect,\n onOpenExplorer,\n wrongNetwork,\n onSwitchNetwork,\n isMobile,\n } = props;\n const disabled = state.validating || props.disabledConnect;\n\n if (!disabled && wrongNetwork) {\n return (\n <Button\n data-testid=\"oui-testid-nav-bar-wrongNetwork-btn\"\n size=\"md\"\n color=\"warning\"\n onClick={onSwitchNetwork}\n >\n {t(\"connector.wrongNetwork\")}\n </Button>\n );\n }\n\n if (\n !disabled &&\n (state.status === AccountStatusEnum.EnableTrading ||\n state.status === AccountStatusEnum.EnableTradingWithoutConnected)\n ) {\n return (\n <WalletMenu\n address={state.address!}\n onDisconnect={onDisconnect}\n onOpenExplorer={onOpenExplorer}\n />\n );\n }\n\n if (state.status <= AccountStatusEnum.NotConnected || disabled) {\n return (\n <Button\n data-testid=\"oui-testid-nav-bar-connectWallet-btn\"\n size=\"md\"\n variant={disabled ? undefined : \"gradient\"}\n angle={45}\n className=\"wallet-connect-button\"\n loading={state.validating}\n disabled={disabled}\n onClick={() => {\n props\n .connect()\n .then((r) => {\n console.log(\"*****\", r);\n })\n .catch((e) => console.error(e));\n }}\n >\n {isMobile ? t(\"connector.connect\") : t(\"connector.connectWallet\")}\n </Button>\n );\n // return (\n // <Tooltip\n // open\n // content={\"Please connect wallet before starting to trade\"}\n // align={\"end\"}\n // className=\"oui-bg-base-5\"\n // arrow={{ className: \"oui-fill-base-5\" }}\n // >\n\n // </Tooltip>\n // );\n }\n\n if (state.status <= AccountStatusEnum.NotSignedIn) {\n return (\n <Button size=\"md\" onClick={() => props.onCrateAccount()}>\n {t(\"connector.createAccount\")}\n </Button>\n );\n // return (\n // <Tooltip\n // open\n // content={\"Please sign in before starting to trade\"}\n // align={\"end\"}\n // className=\"oui-bg-base-5\"\n // arrow={{ className: \"oui-fill-base-5\" }}\n // >\n\n // </Tooltip>\n // );\n }\n\n if (state.status <= AccountStatusEnum.DisabledTrading) {\n return (\n <Button\n size=\"md\"\n onClick={() => {\n props\n .onCreateOrderlyKey()\n .then((r) => console.log(r))\n .catch((e) => console.error(e));\n }}\n >\n {t(\"connector.enableTrading\")}\n </Button>\n );\n // return (\n // <Tooltip\n // open\n // className=\"oui-bg-base-5\"\n // arrow={{ className: \"oui-fill-base-5\" }}\n // content={\"Please enable trading before starting to trade\"}\n // align={\"end\"}\n // >\n\n // </Tooltip>\n // );\n }\n};\n\nexport type AccountState = {\n status: AccountStatusEnum;\n\n /**\n * whether the account is validating\n */\n validating: boolean;\n chainNamespace?: string;\n\n accountId?: string;\n userId?: string;\n address?: string;\n isNew?: boolean;\n\n connectWallet?: {\n name: string;\n chainId: number;\n };\n};\n\nconst WalletMenu = (props: {\n address: string;\n onDisconnect: () => void;\n onOpenExplorer: () => void;\n}) => {\n const { address, onDisconnect } = props;\n const { t } = useTranslation();\n\n return (\n <DropdownMenuRoot>\n <DropdownMenuTrigger asChild>\n <Button\n size=\"md\"\n variant=\"gradient\"\n angle={45}\n data-testid=\"oui-testid-nav-bar-address-btn\"\n >\n <Text.formatted rule=\"address\" className=\"oui-text-[rgba(0,0,0,.88)]\">\n {address}\n </Text.formatted>\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuPortal>\n <DropdownMenuContent\n size={\"xl\"}\n align={\"end\"}\n onCloseAutoFocus={(e) => e.preventDefault()}\n style={{ width: \"280px\" }}\n className={\"oui-py-5 oui-font-semibold\"}\n sideOffset={12}\n >\n <DropdownMenuGroup>\n <Flex px={4}>\n <Flex gap={2} className={\"oui-flex-1\"}>\n <EVMAvatar address={address} size={\"md\"} />\n <Text.formatted rule={\"address\"} size={\"base\"}>\n {address}\n </Text.formatted>\n </Flex>\n <Flex gap={2}>\n <button\n data-testid=\"oui-testid-nav-bar-dropDownMenuItem-copyAddress\"\n onClick={async () => {\n // copy\n await navigator.clipboard.writeText(address);\n }}\n >\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 className=\"oui-fill-[rgba(255,255,255,0.36)] hover:oui-fill-primary-darken\"\n >\n <path\n d=\"M5.249 2.243a3 3 0 0 0-3 3v4.5a3 3 0 0 0 3 3 3 3 0 0 0 3 3h4.5a3 3 0 0 0 3-3v-4.5a3 3 0 0 0-3-3 3 3 0 0 0-3-3zm7.5 4.5a1.5 1.5 0 0 1 1.5 1.5v4.5a1.5 1.5 0 0 1-1.5 1.5h-4.5a1.5 1.5 0 0 1-1.5-1.5h3a3 3 0 0 0 3-3z\"\n // fill=\"currentcolor\"\n // fillOpacity=\".36\"\n\n // className={''}\n />\n </svg>\n </button>\n <button onClick={() => props.onOpenExplorer()}>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 18 18\"\n className=\"oui-fill-[rgba(255,255,255,0.36)] hover:oui-fill-primary-darken\"\n >\n <path d=\"M12.7432 15.7432C14.3999 15.7432 15.7432 14.3999 15.7432 12.7432V5.24316C15.7432 3.58641 14.3999 2.24316 12.7432 2.24316H5.24316C3.58641 2.24316 2.24316 3.58641 2.24316 5.24316V12.7432C2.24316 14.3999 3.58641 15.7432 5.24316 15.7432H12.7432ZM6.74316 11.9932C6.55116 11.9932 6.35092 11.9287 6.20392 11.7824C5.91142 11.4892 5.91142 10.9972 6.20392 10.7039L9.20392 7.70392L7.49316 5.99316H11.9932V10.4932L10.2824 8.78241L7.28241 11.7824C7.13616 11.9287 6.93516 11.9932 6.74316 11.9932Z\" />\n </svg>\n </button>\n </Flex>\n </Flex>\n </DropdownMenuGroup>\n <Divider className={\"oui-mx-4 oui-my-3\"} intensity={8} />\n {/* <DropdownMenuGroup>\n <DropdownMenuItem size={\"xl\"}>\n <Flex gap={2}>\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 opacity=\".998\"\n d=\"M5.243 2.197a3 3 0 0 0-3 3v7.5a3 3 0 0 0 3 3h7.5a3 3 0 0 0 3-3v-7.5a3 3 0 0 0-3-3zm0 1.5h7.5a1.5 1.5 0 0 1 1.5 1.5v7.5a1.52 1.52 0 0 1-.754 1.298c-.144-1.771-2.046-2.798-4.496-2.798S4.603 12.251 4.486 14a1.52 1.52 0 0 1-.743-1.303v-7.5a1.5 1.5 0 0 1 1.5-1.5m3.75 1.5a2.625 2.625 0 1 0 0 5.25 2.625 2.625 0 0 0 0-5.25\"\n fill=\"#fff\"\n fillOpacity=\".8\"\n />\n </svg>\n <span>Overview</span>\n </Flex>\n </DropdownMenuItem>\n <DropdownMenuItem size={\"xl\"}>\n <Flex gap={2}>\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=\"M5.693 1.499c-1.463 0-2.672 1.11-2.672 2.508v9.984c0 1.398 1.209 2.508 2.672 2.508h6.657c1.463 0 2.672-1.11 2.672-2.508V6.726c0-2.672-2.58-5.227-5.25-5.227zm4.829 1.594c1.329.352 2.562 1.58 2.906 2.906h-1.735c-.667 0-1.171-.472-1.171-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 fill=\"#fff\"\n fillOpacity=\".8\"\n />\n </svg>\n <span>Orders</span>\n </Flex>\n </DropdownMenuItem>\n </DropdownMenuGroup>\n <Divider className={\"oui-mx-4 oui-my-3\"} intensity={8} /> */}\n <DropdownMenuGroup>\n <DropdownMenuItem\n size={\"xl\"}\n onSelect={(event) => {\n event.preventDefault();\n onDisconnect();\n }}\n data-testid=\"oui-testid-nav-bar-dropDownMenuItem-disconnect\"\n >\n <Flex gap={2} className={\"oui-text-danger-light\"}>\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 fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M3.97 14.03a.75.75 0 0 1 0-1.06l.262-.263C2.594 12.354 1.5 11.108 1.5 9.06c0-2.447 1.563-3.75 3.75-3.75H6a.75.75 0 0 1 0 1.5h-.75C3.837 6.81 3 7.508 3 9.06s.837 2.25 2.25 2.25h.38l1.188-1.188a.75.75 0 0 1-.068-.312v-.75c0-1.162.381-2.19 1.172-2.883.645-.565 1.512-.867 2.578-.867h1.13l1.34-1.34a.75.75 0 0 1 1.061 1.06l-9 9a.75.75 0 0 1-1.06 0m6.14-7.2L8.27 8.668c.065-.583.281-1.056.635-1.367.289-.253.684-.419 1.205-.473M7.825 12.8l3.414-3.415c-.126 2.12-1.496 3.297-3.414 3.415m7.705-6.58a.75.75 0 0 0-1.06 1.06c.508.509.53 1.202.53 1.72 0 .739-.014 1.203-.53 1.72-.165.164-.455.307-.825.405a3.8 3.8 0 0 1-.895.125H12a.75.75 0 0 0 0 1.5h.75c.31 0 .787-.045 1.28-.175.48-.127 1.065-.36 1.5-.795.97-.97.97-1.991.97-2.75v-.06c0-.51.002-1.778-.97-2.75\"\n fill=\"currentcolor\"\n />\n </svg>\n <span>{t(\"connector.disconnect\")}</span>\n </Flex>\n </DropdownMenuItem>\n </DropdownMenuGroup>\n </DropdownMenuContent>\n </DropdownMenuPortal>\n </DropdownMenuRoot>\n );\n};\n","import { useCallback } from \"react\";\nimport {\n useAccount,\n useChains,\n useWalletConnector,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { useAppContext } from \"@kodiak-finance/orderly-react-app\";\nimport { AccountStatusEnum } from \"@kodiak-finance/orderly-types\";\nimport { modal, toast, useScreen, Text } from \"@kodiak-finance/orderly-ui\";\nimport {\n ChainSelectorDialogId,\n ChainSelectorSheetId,\n} from \"@kodiak-finance/orderly-ui-chain-selector\";\nimport {\n WalletConnectorModalId,\n WalletConnectorSheetId,\n} from \"@kodiak-finance/orderly-ui-connector\";\n\nconst ModalTitle = () => {\n const { t } = useTranslation();\n const { state } = useAccount();\n if (state.status < AccountStatusEnum.SignedIn) {\n return <Text>{t(\"connector.createAccount\")}</Text>;\n }\n if (state.status < AccountStatusEnum.EnableTrading) {\n return <Text>{t(\"connector.enableTrading\")}</Text>;\n }\n return <Text>{t(\"connector.connectWallet\")}</Text>;\n};\n\nexport const useAccountMenu = (): any => {\n const { t } = useTranslation();\n const { disconnect, connectedChain } = useWalletConnector();\n const { account, state } = useAccount();\n const { connectWallet, disabledConnect, wrongNetwork, setCurrentChainId } =\n useAppContext();\n\n const [, { findByChainId }] = useChains();\n\n const { isMobile } = useScreen();\n\n const onCrateAccount = async () => {\n const modalId = isMobile ? WalletConnectorSheetId : WalletConnectorModalId;\n modal\n .show(modalId, {\n title: <ModalTitle />,\n })\n .then(\n (res) => console.log(\"return ::\", res),\n (err) => console.log(\"error:::\", err),\n );\n };\n\n const onCreateOrderlyKey = async () => {\n const modalId = isMobile ? WalletConnectorSheetId : WalletConnectorModalId;\n modal\n .show(modalId, {\n title: <ModalTitle />,\n })\n .then(\n (res) => console.log(\"return ::\", res),\n (err) => console.log(\"error:::\", err),\n );\n };\n\n const switchChain = () => {\n account.once(\"validate:end\", (status) => {\n if (status < AccountStatusEnum.EnableTrading) {\n statusChangeHandler({ status });\n } else {\n toast.success(t(\"connector.walletConnected\"));\n }\n });\n\n modal.show<{ wrongNetwork: boolean }>(ChainSelectorDialogId).then(\n (r) => {\n if (!r.wrongNetwork) {\n if (state.status < AccountStatusEnum.EnableTrading) {\n statusChangeHandler(state);\n } else {\n toast.success(t(\"connector.walletConnected\"));\n }\n }\n },\n (error) => {\n console.log(\"[switchChain error]\", error);\n },\n );\n };\n\n const connect = async () => {\n const res = await connectWallet();\n\n if (!res) {\n return;\n }\n\n if (res.wrongNetwork) {\n switchChain();\n } else {\n statusChangeHandler(res);\n }\n };\n\n const statusChangeHandler = (nextState: any) => {\n if (\n nextState.validating ||\n nextState.status <= AccountStatusEnum.Connected\n ) {\n return;\n }\n\n if (nextState.status < AccountStatusEnum.SignedIn) {\n onCrateAccount();\n }\n if (nextState.status < AccountStatusEnum.EnableTrading) {\n onCreateOrderlyKey();\n }\n };\n\n const onOpenExplorer = useCallback(() => {\n if (!connectedChain) {\n return;\n }\n const chainInfo = findByChainId(\n connectedChain!.id as number,\n \"network_infos\",\n );\n\n if (chainInfo) {\n // @ts-ignore\n const { explorer_base_url } = chainInfo;\n if (explorer_base_url) {\n if (explorer_base_url.endsWith(\"/\")) {\n window.open(`${explorer_base_url}address/${account.address}`);\n } else {\n window.open(`${explorer_base_url}/address/${account.address}`);\n }\n }\n }\n }, [state, connectedChain]);\n\n const onDisconnect = async () => {\n localStorage.removeItem(\"orderly_link_device\");\n await disconnect({\n label: state.connectWallet?.name,\n });\n await account.disconnect();\n };\n\n const onSwitchNetwork = () => {\n const modalId = isMobile ? ChainSelectorSheetId : ChainSelectorDialogId;\n modal\n .show<{\n wrongNetwork: boolean;\n }>(modalId, {\n bridgeLessOnly: false,\n isWrongNetwork: wrongNetwork,\n })\n .then(\n (r: any) => {\n console.log(r?.chainId);\n if (r?.chainId) {\n setCurrentChainId(r?.chainId);\n }\n toast.success(t(\"connector.networkSwitched\"));\n },\n (error) => console.log(\"[switchChain error]\", error),\n );\n };\n\n return {\n address: state.address,\n accountState: state,\n connect,\n onCrateAccount,\n onCreateOrderlyKey,\n onOpenExplorer,\n onDisconnect,\n onSwitchNetwork,\n wrongNetwork,\n disabledConnect,\n isMobile,\n } as const;\n};\n\nexport type AccountMenuProps = ReturnType<typeof useAccountMenu>;\n","import { useMemo, useState } from \"react\";\nimport { useAccount, useWalletConnector } from \"@kodiak-finance/orderly-hooks\";\nimport { useAppContext } from \"@kodiak-finance/orderly-react-app\";\nimport { useScaffoldContext } from \"../scaffold\";\nimport { CampaignProps } from \"./campaignButton\";\nimport { MainNavItemsProps } from \"./mainMenus/mainNavMenus.ui\";\nimport type { MainNavItem } from \"./mainMenus/navItem\";\nimport { MainNavWidgetProps } from \"./mainNav.widget\";\n\n// Hrefs here will NOT trigger routing when clicked (top-level item)\nconst NON_ROUTING_HREFS: string[] = [\"/vaults\"];\n\n// export type CampaignPosition = \"menuLeading\" | \"menuTailing\" | \"navTailing\";\nexport enum CampaignPositionEnum {\n menuLeading = \"menuLeading\",\n menuTailing = \"menuTailing\",\n navTailing = \"navTailing\",\n}\n\nexport type MainNavScriptReturn = ReturnType<typeof useMainNavScript>;\n\nexport const useMainNavScript = (props: MainNavWidgetProps) => {\n const { onItemClick, campaignPosition = CampaignPositionEnum.navTailing } =\n props;\n const { state } = useAccount();\n const { routerAdapter } = useScaffoldContext();\n const { connectedChain } = useWalletConnector();\n const { wrongNetwork, disabledConnect } = useAppContext();\n const [current, setCurrent] = useState(() => {\n if (typeof props.initialMenu === \"undefined\") return [];\n\n return !Array.isArray(props.initialMenu)\n ? [props.initialMenu]\n : props.initialMenu;\n });\n\n const onItemClickHandler = (scope: string) => (item: MainNavItem[]) => {\n const lastItem = item[item.length - 1];\n\n if (!lastItem) return;\n\n /**\n * If the target is not _blank, we should update the current state\n */\n if (lastItem.target !== \"_blank\") {\n setCurrent(item.map((item) => item.href));\n }\n\n const current = item[item.length - 1];\n const isExternalLink =\n typeof current.href === \"string\" &&\n (current.href.startsWith(\"http://\") ||\n current.href.startsWith(\"https://\"));\n\n // Hard-coded non-routing list\n if (NON_ROUTING_HREFS.includes(current.href)) {\n return;\n }\n\n if (current.target) {\n window.open(current.href, current.target);\n return;\n } else if (isExternalLink) {\n window.location.href = current.href;\n return;\n }\n const args = {\n href: current.href,\n name: current.name,\n scope,\n target: current.target,\n };\n\n if (typeof onItemClick === \"function\") {\n onItemClick(args);\n return;\n }\n\n routerAdapter?.onRouteChange(args);\n };\n\n const mainNavConfig = useMemo(() => {\n const config = {\n leading: null,\n trailing: null,\n logo: {},\n mainMenus: [\n // { name: \"Trading\", href: \"/trading\" },\n // { name: \"Portfolio\", href: \"/portfolio\" },\n // { name: \"Markets\", href: \"/markets\" },\n // { name: \"Rewards\", href: \"/rewards\" },\n ],\n ...props,\n campaignPosition,\n };\n if (props.leading) {\n config.leading = props.leading;\n }\n\n if (props.trailing) {\n config.trailing = props.trailing;\n }\n\n if (props.campaigns) {\n if (campaignPosition === CampaignPositionEnum.menuTailing) {\n config.mainMenus = [...config.mainMenus, props.campaigns];\n } else if (campaignPosition === CampaignPositionEnum.menuLeading) {\n config.mainMenus = [props.campaigns, ...config.mainMenus];\n } else {\n config.campaigns = props.campaigns;\n }\n }\n\n return config;\n }, [props]);\n\n const { mainMenus, campaigns } = useMemo(() => {\n const converted: {\n campaigns?: CampaignProps;\n mainMenus?: MainNavItemsProps;\n } = {};\n\n if (mainNavConfig.mainMenus && mainNavConfig.mainMenus.length) {\n converted.mainMenus = {\n items: mainNavConfig.mainMenus,\n /**\n * @type string\n * The current item of the router\n */\n current,\n onItemClick: onItemClickHandler(\"mainMenu\"),\n // onItemClick: (item: MainNavItem[]) => {\n // const lastItem = item[item.length - 1];\n\n // if (!lastItem) return;\n\n // /**\n // * If the target is not _blank, we should update the current state\n // */\n // if (lastItem.target !== \"_blank\") {\n // setCurrent(item.map((item) => item.href));\n // }\n\n // const current = item[item.length - 1];\n // const args = {\n // href: current.href,\n // name: current.name,\n // scope: \"mainMenu\",\n // target: current.target,\n // };\n\n // if (typeof onItemClick === \"function\") {\n // onItemClick(args);\n // return;\n // }\n\n // routerAdapter?.onRouteChange(args);\n // },\n };\n }\n\n if (mainNavConfig.campaigns && mainNavConfig.campaigns.children?.length) {\n converted.campaigns = {\n item: mainNavConfig.campaigns,\n current,\n onItemClick: onItemClickHandler(\"campaign\"),\n // onItemClick: (item: MainNavItem[]) => {\n // const lastItem = item[item.length - 1];\n\n // if (!lastItem) return;\n\n // /**\n // * If the target is not _blank, we should update the current state\n // */\n // if (lastItem.target !== \"_blank\") {\n // setCurrent(item.map((item) => item.href));\n // }\n\n // const current = item[item.length - 1];\n // const args = {\n // href: current.href,\n // name: current.name,\n // scope: \"campaign\",\n // target: current.target,\n // };\n\n // if (typeof onItemClick === \"function\") {\n // onItemClick(args);\n // return;\n // }\n\n // routerAdapter?.onRouteChange(args);\n // },\n };\n }\n\n return converted;\n }, [mainNavConfig]);\n\n return {\n // currentProduct,\n // logo: mainNavConfig.logo,\n ...mainNavConfig,\n mainMenus,\n campaigns,\n isConnected: !!connectedChain,\n wrongNetwork,\n status: state.status,\n disabledConnect,\n };\n};\n","import React from \"react\";\nimport { Box, cn } from \"@kodiak-finance/orderly-ui\";\nimport { MainNavMobile } from \"../main/mainNav.ui.mobile\";\nimport { NotificationWidget } from \"../notification/notification.widget\";\nimport type { ScaffoldScriptReturn } from \"./scaffold.script\";\nimport type { ScaffoldProps } from \"./scaffold.widget\";\n\nconst LazyRestrictedInfoWidget = React.lazy(() =>\n import(\"../restrictedInfo\").then((mod) => {\n return { default: mod.RestrictedInfoWidget };\n }),\n);\n\nconst LazyBottomNav = React.lazy(() =>\n import(\"../bottomNav\").then((mod) => {\n return { default: mod.BottomNav };\n }),\n);\n\nexport const MobileScaffold: React.FC<\n React.PropsWithChildren<ScaffoldScriptReturn & ScaffoldProps>\n> = (props) => {\n const {\n classNames,\n topNavbarRef,\n bottomNavHeight,\n topBar,\n mainNavProps,\n routerAdapter,\n bottomNavRef,\n bottomNavProps,\n bottomNav,\n children,\n } = props;\n\n return (\n <div\n style={{\n paddingBottom: `calc(${bottomNavHeight}px + 12px + env(safe-area-inset-bottom))`,\n }}\n className={cn(\n \"oui-scaffold-root oui-w-full oui-bg-base-10 oui-pt-2\",\n classNames?.root,\n )}\n >\n <header\n ref={topNavbarRef}\n className={cn(\n \"oui-scaffold-topNavbar\",\n \"oui-sticky oui-top-0 oui-z-10 oui-w-full oui-bg-base-10\",\n classNames?.topNavbar,\n )}\n >\n {topBar ?? (\n <MainNavMobile {...mainNavProps} routerAdapter={routerAdapter} />\n )}\n </header>\n\n <Box\n className={cn(\n \"oui-scaffold-container oui-overflow-hidden\",\n // \"oui-relative\",\n // \"oui-custom-scrollbar oui-overflow-y-auto\",\n classNames?.container,\n )}\n >\n <React.Suspense fallback={null}>\n <LazyRestrictedInfoWidget className=\"oui-mx-1 oui-mb-1 oui-bg-base-6\" />\n </React.Suspense>\n\n <Box\n height=\"100%\"\n width=\"100%\"\n className={cn(\"oui-scaffold-content\", classNames?.content)}\n >\n {children}\n </Box>\n </Box>\n <footer\n ref={bottomNavRef}\n className={cn(\n \"oui-scaffold-bottomNav\",\n \"oui-fixed oui-bottom-0 oui-z-10\",\n \"oui-w-full oui-bg-base-9\",\n // only effective on real device\n \"oui-pb-[calc(env(safe-area-inset-bottom))]\",\n classNames?.bottomNav,\n )}\n >\n {bottomNav ?? (\n <React.Suspense fallback={null}>\n <LazyBottomNav\n mainMenus={bottomNavProps?.mainMenus}\n current={bottomNavProps?.current || mainNavProps?.initialMenu}\n onRouteChange={routerAdapter?.onRouteChange}\n />\n </React.Suspense>\n )}\n </footer>\n\n <NotificationWidget />\n </div>\n );\n};\n","import { FC, useMemo } from \"react\";\nimport { useAccount } from \"@kodiak-finance/orderly-hooks\";\nimport { useAppContext } from \"@kodiak-finance/orderly-react-app\";\nimport {\n AccountStatusEnum,\n type RouterAdapter,\n} from \"@kodiak-finance/orderly-types\";\nimport { Flex, Text, ChevronLeftIcon, cn } from \"@kodiak-finance/orderly-ui\";\nimport { WalletConnectButtonExtension } from \"../accountMenu/menu.widget\";\nimport { ChainMenuWidget } from \"../chainMenu\";\nimport { LanguageSwitcherWidget } from \"../languageSwitcher\";\nimport { LeftNavWidget } from \"../leftNav\";\nimport { ScanQRCodeWidget } from \"../scanQRCode\";\nimport { SubAccountWidget } from \"../subAccount\";\nimport { LinkDeviceWidget } from \"./linkDevice\";\nimport { MainLogo } from \"./mainLogo\";\nimport { MainNavWidgetProps } from \"./mainNav.widget\";\n\ntype MainNavMobileProps = {\n current?: string;\n subItems?: {\n name: string;\n href: string;\n }[];\n routerAdapter?: RouterAdapter;\n} & MainNavWidgetProps;\n\nexport const MainNavMobile: FC<MainNavMobileProps> = (props) => {\n const { wrongNetwork, disabledConnect } = useAppContext();\n const { state } = useAccount();\n const currentMenu = useMemo(() => {\n if (Array.isArray(props?.initialMenu)) {\n return props?.campaigns;\n }\n return props?.mainMenus?.find((menu) => {\n if (!props.current) {\n return menu.href === props?.initialMenu;\n } else {\n return menu.href === props.current;\n }\n });\n }, [props?.mainMenus, props?.initialMenu, props?.current]);\n\n const title = useMemo(() => {\n if (currentMenu?.isHomePageInMobile) {\n return <MainLogo {...props?.logo} />;\n }\n return (\n <Text className=\"oui-text-2xl oui-font-bold oui-text-base-contrast\">\n {currentMenu?.name}\n </Text>\n );\n }, [currentMenu, props?.logo]);\n\n const isSub = useMemo(() => {\n return Boolean(!currentMenu || currentMenu.isSubMenuInMobile);\n }, [currentMenu]);\n\n const subTitle = useMemo(() => {\n if (currentMenu?.isSubMenuInMobile) {\n return currentMenu?.name;\n }\n if (props?.subItems?.some((item) => item.href === props?.current)) {\n return props?.subItems?.find((item) => item.href === props?.current)\n ?.name;\n }\n return null;\n }, [props?.subItems, props?.current, currentMenu]);\n\n const onBack = () => {\n let target = props.mainMenus?.find(\n (item) => item.href === props.initialMenu,\n );\n if (currentMenu?.isSubMenuInMobile) {\n target = currentMenu?.subMenuBackNav;\n }\n\n if (target && typeof window !== \"undefined\") {\n const url = new URL(window.location.href);\n const cleanUrl = `${url.pathname}`;\n window.history.replaceState({}, \"\", cleanUrl);\n }\n\n props?.routerAdapter?.onRouteChange(target as any);\n };\n\n const showLinkDevice =\n state.status === AccountStatusEnum.EnableTradingWithoutConnected;\n\n const showChainMenu = !showLinkDevice && !wrongNetwork;\n\n const showQrcode = state.status === AccountStatusEnum.NotConnected;\n\n const showSubAccount = useMemo(\n () => state.status >= AccountStatusEnum.EnableTrading,\n [state.status],\n );\n\n if (isSub) {\n return (\n <Flex\n width={\"100%\"}\n height={44}\n px={3}\n direction={\"row\"}\n itemAlign={\"center\"}\n justify={\"center\"}\n className=\"oui-relative\"\n >\n <ChevronLeftIcon\n className=\"oui-absolute oui-left-6 oui-text-base-contrast-54\"\n onClick={onBack}\n />\n <Text className=\"oui-text-base oui-font-bold oui-text-base-contrast\">\n {subTitle}\n </Text>\n </Flex>\n );\n }\n\n const renderContent = () => {\n const languageSwitcher = <LanguageSwitcherWidget />;\n const scanQRCode = showQrcode && <ScanQRCodeWidget />;\n const subAccount = showSubAccount && <SubAccountWidget />;\n const linkDevice = showLinkDevice && <LinkDeviceWidget />;\n const chainMenu = showChainMenu && <ChainMenuWidget />;\n const walletConnect = <WalletConnectButtonExtension />;\n\n const leftNav = props.leftNav && (\n <LeftNavWidget\n {...props.leftNav}\n logo={props?.logo}\n routerAdapter={props?.routerAdapter}\n />\n );\n\n if (typeof props.customRender === \"function\") {\n return props.customRender?.({\n leftNav,\n title,\n languageSwitcher,\n scanQRCode,\n subAccount,\n linkDevice,\n chainMenu,\n walletConnect,\n });\n }\n\n return (\n <Flex width=\"100%\" justify=\"between\">\n <Flex gapX={2}>\n {props?.customLeftNav || leftNav}\n {title}\n </Flex>\n\n <Flex gapX={2}>\n {props.leading}\n {languageSwitcher}\n {scanQRCode}\n {/* {subAccount} */}\n {/* {linkDevice} */}\n {chainMenu}\n {walletConnect}\n {props.trailing}\n </Flex>\n </Flex>\n );\n };\n\n return (\n <Flex\n width={\"100%\"}\n height={44}\n px={3}\n itemAlign={\"center\"}\n className={cn(props.className, props.classNames?.root)}\n >\n {renderContent()}\n </Flex>\n );\n};\n","import { useScreen } from \"@kodiak-finance/orderly-ui\";\nimport { useChainMenuScript } from \"./chainMenu.script\";\nimport { ChainMenu } from \"./chainMenu.ui\";\nimport { ChainMenuUiMobile } from \"./chainMenu.ui.mobile\";\n\nexport const ChainMenuWidget = () => {\n const state = useChainMenuScript();\n const { isMobile } = useScreen();\n if (isMobile) {\n return <ChainMenuUiMobile {...state} />;\n }\n return <ChainMenu {...state} />;\n};\n","import { useEffect, useState } from \"react\";\nimport {\n useChains,\n useConfig,\n useAccount,\n useWalletConnector,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { useAppContext } from \"@kodiak-finance/orderly-react-app\";\nimport { API, Chain, NetworkId } from \"@kodiak-finance/orderly-types\";\n\nexport type UseChainMenuScriptReturn = ReturnType<typeof useChainMenuScript>;\n\nexport const useChainMenuScript = () => {\n const [open, setOpen] = useState(false);\n const [loading, setLoading] = useState(false);\n const { state } = useAccount();\n const { connectedChain } = useWalletConnector();\n const { currentChainId, wrongNetwork, disabledConnect, setCurrentChainId } =\n useAppContext();\n const networkId = useConfig(\"networkId\") as NetworkId;\n\n const hide = () => {\n setOpen(false);\n };\n\n const onChainChangeBefore = () => {\n setLoading(true);\n hide();\n };\n\n const onChainChangeAfter = () => {\n setLoading(false);\n };\n\n return {\n isConnected: !!connectedChain,\n currentChainId,\n wrongNetwork,\n disabledConnect,\n accountStatus: state.status,\n networkId,\n open,\n onOpenChange: setOpen,\n hide,\n onChainChangeBefore,\n onChainChangeAfter,\n loading,\n setCurrentChainId,\n };\n};\n\nexport type UseChainMenuBuilderScript = ReturnType<typeof useChainMenuScript>;\n","import { useAccount } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { AccountStatusEnum } from \"@kodiak-finance/orderly-types\";\nimport {\n Button,\n ChainIcon,\n cn,\n Flex,\n modal,\n Tooltip,\n DropdownMenuContent,\n DropdownMenuPortal,\n DropdownMenuRoot,\n DropdownMenuTrigger,\n Spinner,\n Text,\n} from \"@kodiak-finance/orderly-ui\";\nimport {\n ChainSelectorDialogId,\n ChainSelectorWidget,\n} from \"@kodiak-finance/orderly-ui-chain-selector\";\nimport { WalletConnectorModalId } from \"@kodiak-finance/orderly-ui-connector\";\nimport { UseChainMenuScriptReturn } from \"./chainMenu.script\";\n\nconst ModalTitle = () => {\n const { t } = useTranslation();\n const { state } = useAccount();\n if (state.status < AccountStatusEnum.SignedIn) {\n return <Text>{t(\"connector.createAccount\")}</Text>;\n }\n if (state.status < AccountStatusEnum.EnableTrading) {\n return <Text>{t(\"connector.enableTrading\")}</Text>;\n }\n return <Text>{t(\"connector.connectWallet\")}</Text>;\n};\n\nexport const ChainMenu = (props: UseChainMenuScriptReturn) => {\n const { t } = useTranslation();\n\n if (props.wrongNetwork && props.isConnected && !props.disabledConnect) {\n return (\n <Tooltip\n open\n hideWhenDetached\n content={t(\"connector.wrongNetwork.tooltip\")}\n className=\"oui-bg-base-5\"\n arrow={{ className: \"oui-fill-base-5\" }}\n >\n <Button\n color=\"warning\"\n size=\"md\"\n onClick={() => {\n modal\n .show<{ wrongNetwork: boolean }>(ChainSelectorDialogId, {\n networkId: props.networkId,\n })\n .then(\n (r) => {\n if (\n !r.wrongNetwork &&\n props.accountStatus < AccountStatusEnum.EnableTrading\n ) {\n modal\n .show(WalletConnectorModalId, {\n title: <ModalTitle />,\n })\n .then(\n (r) => console.log(r),\n (error) => console.log(error),\n );\n }\n },\n (error) => console.log(error),\n );\n }}\n >\n {t(\"connector.wrongNetwork\")}\n </Button>\n </Tooltip>\n );\n }\n\n const renderIcon = () => {\n if (props.loading) {\n return <Spinner className=\"oui-w-[18px] oui-h-[18px]\" />;\n }\n\n if (props.currentChainId) {\n return <ChainIcon chainId={props.currentChainId} size=\"xs\" />;\n }\n };\n\n const trigger = (\n <Flex\n intensity={500}\n justify=\"center\"\n className={cn(\n \"oui-relative oui-cursor-pointer\",\n \"oui-w-11 oui-h-8\",\n \"oui-rounded-t-[6px] oui-rounded-bl-[6px] oui-rounded-br-[3px]\",\n )}\n >\n {renderIcon()}\n <svg\n width=\"10\"\n height=\"10\"\n viewBox=\"0 0 10 10\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"oui-absolute oui-right-0 oui-bottom-0\"\n >\n <defs>\n <linearGradient\n id=\"paint0_linear_490_5080\"\n x1=\"10\"\n y1=\"5\"\n x2=\"-5.79673e-08\"\n y2=\"5\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"rgb(var(--oui-gradient-brand-end))\" />\n <stop offset=\"1\" stopColor=\"rgb(var(--oui-gradient-brand-start))\" />\n </linearGradient>\n </defs>\n <path\n d=\"M10 7V0L0 10H7C8.65685 10 10 8.65685 10 7Z\"\n fill=\"url(#paint0_linear_490_5080)\"\n />\n </svg>\n </Flex>\n );\n\n return (\n <DropdownMenuRoot open={props.open} onOpenChange={props.onOpenChange}>\n <DropdownMenuTrigger asChild>{trigger}</DropdownMenuTrigger>\n <DropdownMenuPortal>\n <DropdownMenuContent\n onCloseAutoFocus={(e) => e.preventDefault()}\n onClick={(e) => e.stopPropagation()}\n sideOffset={4}\n collisionPadding={{ right: 16 }}\n className={cn(\n \"oui-bg-base-8 oui-w-[456px] oui-p-4 oui-rounded-xl\",\n \"oui-border oui-border-line-6\",\n \"oui-font-semibold\",\n )}\n >\n <ChainSelectorWidget\n close={props.hide}\n onChainChangeBefore={props.onChainChangeBefore}\n onChainChangeAfter={props.onChainChangeAfter}\n />\n </DropdownMenuContent>\n </DropdownMenuPortal>\n </DropdownMenuRoot>\n );\n};\n","import { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { Box, ChainIcon, modal, toast } from \"@kodiak-finance/orderly-ui\";\nimport { ChainSelectorSheetId } from \"@kodiak-finance/orderly-ui-chain-selector\";\nimport { UseChainMenuScriptReturn } from \"./chainMenu.script\";\n\nexport const ChainMenuUiMobile = (props: UseChainMenuScriptReturn) => {\n const { t } = useTranslation();\n\n return (\n <button\n onClick={(e) => {\n modal\n .show<{\n wrongNetwork: boolean;\n }>(ChainSelectorSheetId, {\n // networkId: props.networkId,\n bridgeLessOnly: false,\n isWrongNetwork: props.wrongNetwork,\n })\n .then(\n (r: any) => {\n console.log(r?.chainId, props);\n if (r?.chainId) {\n props.setCurrentChainId(r?.chainId);\n }\n toast.success(t(\"connector.networkSwitched\"));\n },\n (error) => console.log(\"[switchChain error]\", error),\n );\n }}\n >\n <Box className=\"oui-relative oui-rounded-t-[6px] oui-rounded-bl-[6px] oui-rounded-br-[3px] oui-bg-base-5 oui-px-2 oui-h-8 oui-w-8 oui-flex oui-items-center oui-justify-center\">\n <ChainIcon\n chainId={props.currentChainId!}\n size=\"xs\"\n className=\"oui-h-[18px] oui-w-[18px]\"\n />\n <div className=\"oui-absolute oui-right-0 oui-bottom-0\">\n <svg\n width=\"9\"\n height=\"9\"\n viewBox=\"0 0 9 9\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M9 6V0L0 9h6a3 3 0 0 0 3-3\" fill=\"url(#a)\" />\n <defs>\n <linearGradient\n id=\"a\"\n x1=\"9\"\n y1=\"4.5\"\n x2=\"0\"\n y2=\"4.5\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"rgb(var(--oui-gradient-brand-end))\" />\n <stop\n offset=\"1\"\n stopColor=\"rgb(var(--oui-gradient-brand-start))\"\n />\n </linearGradient>\n </defs>\n </svg>\n </div>\n </Box>\n </button>\n );\n};\n","import { useCallback, useMemo, useState } from \"react\";\nimport { useTrack } from \"@kodiak-finance/orderly-hooks\";\nimport {\n i18n,\n LocaleContextState,\n useLocaleContext,\n} from \"@kodiak-finance/orderly-i18n\";\nimport { TrackerEventName } from \"@kodiak-finance/orderly-types\";\nimport { useScreen } from \"@kodiak-finance/orderly-ui\";\n\nexport type LanguageSwitcherScriptReturn = ReturnType<\n typeof useLanguageSwitcherScript\n>;\n\nexport type LanguageSwitcherScriptOptions = Pick<\n LocaleContextState,\n \"popup\"\n> & { open?: boolean; onOpenChange?: (open: boolean) => void };\n\nexport const useLanguageSwitcherScript = (\n options?: LanguageSwitcherScriptOptions,\n) => {\n const [open, setOpen] = useState(false);\n const [loading, setLoading] = useState(false);\n const [selectedLang, setSelectedLang] = useState(i18n.language);\n const { languages, onLanguageBeforeChanged, onLanguageChanged, popup } =\n useLocaleContext();\n\n const { track, setIdentify } = useTrack();\n\n const { isMobile } = useScreen();\n\n const onOpenChange = useCallback(\n (open: boolean) => {\n if (typeof options?.onOpenChange === \"function\") {\n options.onOpenChange(open);\n } else {\n setOpen(open);\n }\n },\n [options?.onOpenChange, setOpen],\n );\n\n const onLangChange = async (lang: string, displayName: string) => {\n setLoading(true);\n setSelectedLang(lang);\n await onLanguageBeforeChanged(lang);\n await i18n.changeLanguage(lang);\n await onLanguageChanged(lang);\n onOpenChange(false);\n setLoading(false);\n track(TrackerEventName.switchLanguage, {\n language: displayName,\n language_code: lang,\n });\n\n setIdentify({\n language_code: lang,\n });\n };\n\n const _popup = useMemo(\n () => ({\n ...popup,\n ...options?.popup,\n mode:\n options?.popup?.mode || popup?.mode || (isMobile ? \"sheet\" : \"modal\"),\n }),\n [popup, options?.popup, isMobile],\n );\n\n const _open = useMemo(() => {\n if (typeof options?.open === \"boolean\") {\n return options.open;\n }\n return open;\n }, [options?.open, open]);\n\n return {\n open: _open,\n onOpenChange,\n languages,\n selectedLang,\n onLangChange,\n loading,\n popup: _popup,\n };\n};\n","import { FC, SVGProps, forwardRef } from \"react\";\nimport { useTranslation, Language } from \"@kodiak-finance/orderly-i18n\";\nimport {\n cn,\n Flex,\n DropdownMenuContent,\n DropdownMenuPortal,\n DropdownMenuRoot,\n DropdownMenuTrigger,\n Text,\n Box,\n Spinner,\n SimpleDialog,\n useScreen,\n SimpleSheet,\n Tooltip,\n} from \"@kodiak-finance/orderly-ui\";\nimport { LanguageSwitcherScriptReturn } from \"./languageSwitcher.script\";\n\nexport type LanguageSwitcherProps = LanguageSwitcherScriptReturn;\n\nexport const LanguageSwitcher: FC<LanguageSwitcherProps> = (props) => {\n const { languages, popup } = props;\n const { t } = useTranslation();\n const { isMobile } = useScreen();\n\n if (languages.length <= 1) {\n return null;\n }\n\n const trigger = (\n <Tooltip content={t(\"languageSwitcher.tooltip\")}>\n <LanguageIcon\n className={cn(\n \"oui-size-6 lg:oui-size-5\",\n \"oui-cursor-pointer oui-text-base-contrast-80\",\n \"oui-transition-colors hover:oui-fill-base-contrast\",\n isMobile && \"oui-size-[18px]\",\n )}\n id=\"language-switcher-icon\"\n onClick={() => props.onOpenChange(true)}\n />\n </Tooltip>\n );\n\n const header = (\n <Text weight=\"semibold\">{t(\"languageSwitcher.language\")}</Text>\n );\n\n const languageList = languages.map((item) => {\n const selected = props.selectedLang === item.localCode;\n return (\n <LanguageItem\n className={cn(\n [\"modal\", \"sheet\"].includes(popup.mode ?? \"\") &&\n \"oui-w-[calc((100%_-_4px)/2)] lg:oui-w-[calc((100%_-_8px)/3)]\",\n )}\n key={item.localCode}\n selected={selected}\n item={item}\n onClick={() => props.onLangChange(item.localCode, item.displayName)}\n loading={props.loading}\n />\n );\n });\n\n const context = (\n <Flex gap={1} className=\"oui-flex-wrap\">\n {languageList}\n </Flex>\n );\n\n const footer = (\n <Box mt={4}>\n <Text\n size=\"2xs\"\n intensity={54}\n weight=\"regular\"\n className=\"oui-text-warning-darken\"\n >\n {t(\"languageSwitcher.tips\")}\n </Text>\n </Box>\n );\n\n if (popup?.mode === \"sheet\" && isMobile) {\n return (\n <>\n {trigger}\n <SimpleSheet\n open={props.open}\n onOpenChange={props.onOpenChange}\n classNames={{\n content: cn(\"oui-px-5 oui-pb-5\", popup?.className),\n body: \"oui-pb-[env(safe-area-inset-bottom)]\",\n }}\n contentProps={{\n style: popup?.style,\n }}\n title={header}\n >\n {context}\n {footer}\n </SimpleSheet>\n </>\n );\n }\n\n if (popup?.mode === \"dropdown\") {\n const context = (\n <Box\n mt={4}\n className={cn(\n //40 * 8 + 4 * 7 = 348px, more than 8 will show scrollbars\n \"oui-custom-scrollbar oui-max-h-[348px] oui-overflow-y-auto\",\n \"oui-grid oui-gap-1 oui-pr-[6px]\",\n )}\n >\n {languageList}\n </Box>\n );\n\n return (\n <DropdownMenuRoot open={props.open} onOpenChange={props.onOpenChange}>\n <DropdownMenuTrigger asChild>{trigger}</DropdownMenuTrigger>\n <DropdownMenuPortal>\n <DropdownMenuContent\n onCloseAutoFocus={(e) => e.preventDefault()}\n onClick={(e) => e.stopPropagation()}\n sideOffset={10}\n align=\"start\"\n collisionPadding={{ right: 16 }}\n className={cn(\n \"oui-w-[320px] lg:oui-w-[360px]\",\n \"oui-rounded-xl oui-bg-base-8 oui-p-5\",\n \"oui-border oui-border-line-6\",\n \"oui-font-semibold\",\n )}\n >\n {header}\n {context}\n {footer}\n </DropdownMenuContent>\n </DropdownMenuPortal>\n </DropdownMenuRoot>\n );\n }\n\n return (\n <>\n {trigger}\n <SimpleDialog\n title={header}\n open={props.open}\n onOpenChange={props.onOpenChange}\n size={isMobile ? \"sm\" : \"xl\"}\n classNames={{\n content: popup?.className,\n }}\n contentProps={{\n style: popup?.style,\n }}\n >\n {context}\n {footer}\n </SimpleDialog>\n </>\n );\n};\n\ntype LanguageItemProps = {\n selected: boolean;\n item: Language;\n onClick?: () => void;\n loading?: boolean;\n className?: string;\n};\n\nconst LanguageItem: FC<LanguageItemProps> = (props) => {\n const { item } = props;\n\n const renderTrailing = () => {\n if (props.loading && props.selected) {\n return <Spinner size=\"sm\" />;\n }\n if (props.selected) {\n return <Box gradient=\"brand\" r=\"full\" width={4} height={4} />;\n }\n return null;\n };\n\n return (\n <button\n className={cn(\n \"oui-group oui-rounded-md hover:oui-bg-base-5\",\n props.selected && \"oui-bg-base-5\",\n props.className,\n )}\n onClick={props.onClick}\n >\n <Flex justify=\"between\" className=\"oui-h-10\" px={3}>\n <Flex itemAlign=\"center\" width=\"100%\" className=\"oui-gap-x-[6px]\">\n <Text\n size=\"2xs\"\n className={cn(\n \"oui-text-base-contrast-36 group-hover:oui-text-base-contrast-80\",\n props.selected && \"oui-text-base-contrast-80\",\n )}\n >\n {item.displayName}\n </Text>\n </Flex>\n {renderTrailing()}\n </Flex>\n </button>\n );\n};\n\ninterface IconProps extends SVGProps<SVGSVGElement> {\n size?: number;\n}\n\nconst LanguageIcon = forwardRef<SVGSVGElement, IconProps>((props, ref) => {\n const { size = 20, ...rest } = props;\n\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n ref={ref}\n {...rest}\n >\n <path d=\"M10 1.678a8.333 8.333 0 1 0 0 16.667 8.333 8.333 0 1 0 0-16.667m0 1.667c1.1 0 2.308 2.527 2.492 5.831l-4.975.01c.183-3.304 1.382-5.84 2.482-5.84m-2.943.67c-.717 1.393-1.1 3.242-1.193 5.165L3.38 9.174c.248-2.271 1.778-4.176 3.676-5.159m5.889.003c1.898.983 3.388 2.835 3.676 5.168l-2.483-.008c-.078-2-.52-3.758-1.193-5.16m-9.56 6.83 2.483-.02c.092 1.923.478 3.803 1.191 5.182a6.79 6.79 0 0 1-3.674-5.162m4.118.007 4.975-.01c-.184 3.303-1.38 5.833-2.48 5.833s-2.312-2.519-2.495-5.823m6.64-.008 2.471-.008c-.287 2.208-1.68 4.18-3.672 5.162.74-1.53 1.108-3.23 1.2-5.154\" />\n </svg>\n );\n});\n","import {\n LanguageSwitcherScriptOptions,\n useLanguageSwitcherScript,\n} from \"./languageSwitcher.script\";\nimport { LanguageSwitcher } from \"./languageSwitcher.ui\";\n\nexport type LanguageSwitcherWidgetProps = LanguageSwitcherScriptOptions;\n\nexport const LanguageSwitcherWidget = (props: LanguageSwitcherWidgetProps) => {\n const state = useLanguageSwitcherScript(props);\n return <LanguageSwitcher {...state} />;\n};\n","import { useCallback, useState } from \"react\";\n\nexport const useLeftNavScript = () => {\n const [open, setOpen] = useState(false);\n\n const showSheet = useCallback(() => {\n setOpen(true);\n }, []);\n\n const hideSheet = useCallback(() => {\n setOpen(false);\n }, []);\n\n return {\n open,\n onOpenChange: setOpen,\n showSheet,\n hideSheet,\n };\n};\n\nexport type LeftNavScriptReturn = ReturnType<typeof useLeftNavScript>;\n","import { FC, useMemo } from \"react\";\nimport { useAccount } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n AccountStatusEnum,\n type RouterAdapter,\n type RouteOption,\n} from \"@kodiak-finance/orderly-types\";\nimport {\n Sheet,\n SheetContent,\n VectorIcon,\n SwapHorizIcon,\n PeopleIcon,\n Text,\n Divider,\n} from \"@kodiak-finance/orderly-ui\";\nimport { MainLogo } from \"../main/mainLogo\";\nimport { SubAccountWidget } from \"../subAccount\";\nimport {\n CommunityDiscord,\n CommunityDune,\n CommunityTG,\n CommunityX,\n} from \"./communityIcon\";\nimport { LeftNavScriptReturn } from \"./leftNav.script\";\nimport { LeftNavItem, LeftNavProps } from \"./leftNav.type\";\n\nexport type LeftNavUIProps = LeftNavProps &\n Partial<LeftNavScriptReturn> & {\n className?: string;\n logo?: {\n src: string;\n alt: string;\n };\n routerAdapter?: RouterAdapter;\n showSubAccount?: boolean;\n };\n\nexport const LeftNavUI: FC<LeftNavUIProps> = (props) => {\n return (\n <>\n <div onClick={props.showSheet} className={props?.className}>\n <VectorIcon />\n </div>\n <LeftNavSheet {...props} />\n </>\n );\n};\n\nconst LeftNavSheet: FC<LeftNavUIProps> = (props) => {\n const { state } = useAccount();\n const { t } = useTranslation();\n\n const { primaryMenus, secondaryMenus } = useMemo(() => {\n const primary = (props?.menus || []).filter((m) => !m.isSecondary);\n const secondary = (props?.menus || []).filter((m) => m.isSecondary);\n return { primaryMenus: primary, secondaryMenus: secondary };\n }, [props.menus]);\n\n const showSubAccount = useMemo(\n () => state.status >= AccountStatusEnum.EnableTrading,\n [state.status],\n );\n\n const onRouteChange = (option: RouteOption) => {\n props.routerAdapter?.onRouteChange?.(option);\n props.hideSheet?.();\n };\n\n const subAccountTrigger = useMemo(() => {\n const name =\n state.accountId === state.mainAccountId\n ? state.address\n : state.subAccounts?.find((item) => item.id === state.accountId)\n ?.description || \"\";\n return (\n <div className=\"oui-flex oui-w-full oui-cursor-pointer oui-items-center oui-gap-2 oui-rounded-xl oui-bg-base-5 oui-p-3\">\n <div>\n <PeopleIcon />\n </div>\n <div className=\"oui-flex oui-flex-col oui-gap-1 oui-font-semibold\">\n <Text.formatted\n rule=\"address\"\n className=\"oui-text-sm oui-text-base-contrast\"\n >\n {name}\n </Text.formatted>\n <Text.formatted\n rule=\"address\"\n className=\"oui-text-2xs oui-text-base-contrast-36\"\n >{`ID: ${state.accountId}`}</Text.formatted>\n </div>\n <div className=\"oui-ml-auto\">\n <SwapHorizIcon />\n </div>\n </div>\n );\n }, [state, t]);\n\n const openExternalLink = (url: string) => {\n window.open(url, \"_blank\");\n };\n\n return (\n <Sheet open={props.open} onOpenChange={props.onOpenChange}>\n <SheetContent\n side=\"left\"\n className=\"oui-w-[276px] oui-bg-base-8\"\n closeable\n closeableSize={24}\n closeOpacity={0.54}\n >\n <div className=\"oui-relative oui-flex oui-h-full oui-flex-col oui-gap-3\">\n <div className=\"oui-mt-[6px] oui-flex oui-h-[44px] oui-items-center [&_img]:!oui-h-[18px]\">\n <MainLogo {...props?.logo} />\n </div>\n {props?.leading}\n {showSubAccount && (\n <SubAccountWidget customTrigger={subAccountTrigger} />\n )}\n {(primaryMenus.length > 0 || secondaryMenus.length > 0) && (\n <div className=\"oui-flex oui-h-[calc(100vh-260px)] oui-flex-col oui-items-start oui-overflow-y-auto\">\n {primaryMenus.map((item) => (\n <NavItem\n item={item}\n key={`item-${item.name}`}\n onClick={onRouteChange}\n />\n ))}\n {secondaryMenus.length > 0 && primaryMenus.length > 0 && (\n <Divider className=\"oui-my-1 oui-w-full\" intensity={8} />\n )}\n {secondaryMenus.map((item) => (\n <NavItem\n item={item}\n key={`item-${item.name}`}\n onClick={onRouteChange}\n />\n ))}\n </div>\n )}\n <div className=\"oui-z-60 oui-absolute oui-bottom-6 oui-flex oui-w-full oui-flex-col oui-gap-4 oui-bg-base-8\">\n <div className=\"oui-flex oui-items-center oui-justify-around\">\n {props.telegramUrl && (\n <div\n onClick={() => openExternalLink(props.telegramUrl as string)}\n >\n <CommunityTG width={24} height={24} />\n </div>\n )}\n {props.twitterUrl && (\n <div\n onClick={() => openExternalLink(props.twitterUrl as string)}\n >\n <CommunityX width={24} height={24} />\n </div>\n )}\n {props.discordUrl && (\n <div\n onClick={() => openExternalLink(props.discordUrl as string)}\n >\n <CommunityDiscord width={24} height={24} />\n </div>\n )}\n {props.duneUrl && (\n <div\n onClick={() => openExternalLink(props.duneUrl as string)}\n className=\"oui-mb-1\"\n >\n <CommunityDune />\n </div>\n )}\n </div>\n {props.feedbackUrl && (\n <div\n className=\"oui-text-center oui-text-2xs oui-font-semibold oui-text-primary oui-underline\"\n onClick={() => openExternalLink(props.feedbackUrl as string)}\n >\n {t(\"leftNav.feedback\")}\n </div>\n )}\n </div>\n </div>\n </SheetContent>\n </Sheet>\n );\n};\n\ntype NavItemProps = {\n item: LeftNavItem;\n onClick?: (option: RouteOption) => void;\n};\n\nconst NavItem: FC<NavItemProps> = ({ item, onClick }) => {\n const {\n href,\n name,\n icon,\n trailing,\n onlyInMainAccount,\n customRender,\n target,\n } = item;\n const { isMainAccount } = useAccount();\n const onItemClick = () => {\n // Check if href is a full URL (external link)\n const isExternalLink =\n href.startsWith(\"http://\") || href.startsWith(\"https://\");\n\n if (target) {\n window.open(href, target);\n } else if (isExternalLink) {\n window.location.href = href;\n } else {\n onClick?.({ href: href, name: name, scope: \"leftNav\" });\n }\n };\n if (typeof customRender === \"function\") {\n return (\n <div\n className=\"oui-flex oui-w-full oui-items-center oui-p-3\"\n onClick={onItemClick}\n >\n {customRender({ name: name, href: href })}\n </div>\n );\n }\n if (onlyInMainAccount && !isMainAccount) {\n return null;\n }\n const isSecondary = !!item.isSecondary;\n const textClassName = isSecondary\n ? \"oui-text-xs oui-font-normal oui-text-base-contrast-54\"\n : \"oui-text-base oui-font-semibold oui-text-base-contrast-80\";\n return (\n <div\n className={`oui-flex oui-w-full oui-items-center oui-gap-2 oui-p-3 ${isSecondary ? \"oui-py-2\" : \"\"}`}\n onClick={onItemClick}\n >\n <div>{icon}</div>\n <div className={textClassName}>{name}</div>\n {trailing}\n </div>\n );\n};\n","import { FC } from \"react\";\nimport { useAppConfig } from \"@kodiak-finance/orderly-react-app\";\nimport { OrderlyLogo } from \"../icons\";\nimport { Logo } from \"@kodiak-finance/orderly-ui\";\n\ntype MainLogoProps = {\n src?: string;\n alt?: string;\n};\n\nexport const MainLogo: FC<MainLogoProps> = (props) => {\n const { appIcons } = useAppConfig();\n\n if (props.src) {\n return <Logo src={props.src} alt={props.alt} />;\n }\n\n const { main } = appIcons || {};\n\n if (main?.img) {\n return <img src={main?.img} />;\n }\n\n if (main?.component) {\n return main.component;\n }\n\n return <OrderlyLogo />;\n};\n","import { useCallback, useEffect, useMemo, useState, useRef } from \"react\";\nimport {\n useAccount,\n useIndexPricesStream,\n useWalletConnector,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n ABSTRACT_CHAIN_ID_MAP,\n API,\n EMPTY_LIST,\n EMPTY_OBJECT,\n} from \"@kodiak-finance/orderly-types\";\nimport { toast, useScreen } from \"@kodiak-finance/orderly-ui\";\nimport { Decimal } from \"@kodiak-finance/orderly-utils\";\nimport { useAccountValue } from \"./useAccountValue\";\n\nexport type SubAccountScriptReturn = ReturnType<typeof SubAccountScript>;\n\ntype AccountValueInfo = {\n id: string;\n userAddress?: string;\n description?: string;\n holding: API.Holding[];\n accountValue?: number;\n};\n\nexport const SubAccountScript = () => {\n const [open, setOpen] = useState(false);\n const [mainAccountHolding, setMainAccountHolding] = useState<API.Holding[]>(\n [],\n );\n const { wallet, connectedChain } = useWalletConnector();\n const { data: indexPrices } = useIndexPricesStream();\n const { isMobile } = useScreen();\n const { state, account, subAccount, switchAccount } = useAccount();\n const { t } = useTranslation();\n const mainAccountId = state.mainAccountId;\n\n const { accountValue } = useAccountValue(mainAccountId);\n\n const currentAccountId = state.accountId;\n\n const hasRefreshedRef = useRef(false);\n\n const userAddress = useMemo(() => {\n let address = state.address;\n if (\n connectedChain?.id &&\n ABSTRACT_CHAIN_ID_MAP.has(parseInt(connectedChain?.id as string))\n ) {\n address = account.getAdditionalInfo()?.AGWAddress;\n }\n\n return address;\n }, [wallet, state, account, connectedChain]);\n\n const subAccounts = useMemo(() => {\n if (!state.subAccounts || !state.subAccounts.length) {\n return [];\n }\n\n const currentSubAccount = state.subAccounts.find(\n (subAccount) => subAccount.id === currentAccountId,\n );\n\n if (currentSubAccount) {\n return [\n currentSubAccount,\n ...state.subAccounts.filter(\n (subAccount) => subAccount.id !== currentAccountId,\n ),\n ];\n }\n\n return [...state.subAccounts];\n }, [state.subAccounts, currentAccountId]);\n\n const _popup = useMemo(\n () => ({ mode: isMobile ? \"sheet\" : \"modal\" }),\n [isMobile],\n );\n\n const doCreatSubAccount = useCallback(\n (nickName: string) => {\n return subAccount.create(nickName);\n },\n [subAccount],\n );\n\n const onSwitch = useCallback(\n (accountId: string) => {\n return switchAccount(accountId)\n .catch((error) => {\n console.error(error);\n })\n .then((res) => {\n toast.success(t(\"subAccount.modal.switch.success.description\"));\n });\n },\n [switchAccount],\n );\n\n const accountsWithValues = useMemo(() => {\n const mainAccountUnsettlePnl = accountValue[mainAccountId!] ?? 0;\n\n const mainAccount =\n mainAccountId && state.address\n ? {\n id: mainAccountId,\n userAddress: state.address,\n holding: mainAccountHolding,\n accountValue: calculateAccountValue(\n mainAccountHolding,\n mainAccountUnsettlePnl,\n indexPrices || EMPTY_OBJECT,\n ),\n }\n : undefined;\n\n const updatedSubAccounts = subAccounts.map((subAccount) => {\n const subAccountUnsettlePnl = accountValue[subAccount.id] ?? 0;\n return {\n ...subAccount,\n accountValue: calculateAccountValue(\n subAccount.holding || EMPTY_LIST,\n subAccountUnsettlePnl,\n indexPrices || EMPTY_OBJECT,\n ),\n };\n });\n\n return {\n mainAccount,\n subAccounts: updatedSubAccounts,\n };\n }, [\n mainAccountId,\n state.address,\n mainAccountHolding,\n subAccounts,\n accountValue,\n indexPrices,\n ]);\n\n useEffect(() => {\n if (!open) {\n hasRefreshedRef.current = false;\n return;\n }\n\n if (!hasRefreshedRef.current && mainAccountId) {\n hasRefreshedRef.current = true;\n subAccount.refresh().then((res) => {\n setMainAccountHolding(res[mainAccountId] || []);\n });\n }\n }, [open, mainAccountId, subAccount]);\n\n return {\n userAddress,\n mainAccount: accountsWithValues.mainAccount,\n currentAccountId,\n open,\n onOpenChange: setOpen,\n popup: _popup,\n createSubAccount: doCreatSubAccount,\n subAccounts: accountsWithValues.subAccounts,\n onSwitch,\n };\n};\n\nconst calculateAccountValue = (\n holdings: API.Holding[],\n unsettlePnl: number,\n indexPrices: Record<string, number>,\n) => {\n const holding = holdings.reduce((acc, holding) => {\n const price = getTokenIndexPrice(holding.token, indexPrices);\n if (!price) {\n return acc;\n }\n return acc + new Decimal(holding.holding).times(price).toNumber();\n }, 0);\n return holding + unsettlePnl;\n};\n\nconst getTokenIndexPrice = (\n token: string,\n indexPrices: Record<string, number>,\n) => {\n if (token === \"USDC\") {\n return 1;\n }\n const symbol = `PERP_${token}_USDC`;\n return indexPrices[symbol] ?? 0;\n};\n","import { useEffect, useMemo, useState } from \"react\";\nimport { useSubAccountQuery } from \"@kodiak-finance/orderly-hooks\";\nimport { API } from \"@kodiak-finance/orderly-types\";\nimport { Decimal } from \"@kodiak-finance/orderly-utils\";\n\nexport const useAccountValue = (mainAccountId?: string) => {\n const [accountValue, setAccountValue] = useState<Record<string, number>>({});\n const {\n data: newPositions = [],\n isLoading: isPositionLoading,\n mutate: mutatePositions,\n } = useSubAccountQuery<API.PositionExt[]>(\"/v1/client/aggregate/positions\", {\n // formatter: (data) => data,\n errorRetryCount: 3,\n accountId: mainAccountId,\n });\n\n useEffect(() => {\n if (isPositionLoading) {\n return;\n }\n if (!newPositions || newPositions.length === 0) {\n setAccountValue({});\n return;\n }\n const value = newPositions.reduce(\n (acc, position) => {\n const accountId = position.account_id!;\n if (acc[accountId]) {\n acc[accountId] = new Decimal(acc[accountId])\n .plus(position.unsettled_pnl)\n .toNumber();\n } else {\n acc[accountId] = new Decimal(position.unsettled_pnl).toNumber();\n }\n return acc;\n },\n {} as Record<string, number>,\n );\n setAccountValue(value);\n }, [newPositions, isPositionLoading]);\n return {\n accountValue,\n };\n};\n","import { useCallback, useRef, useMemo, useState, ReactNode } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n SimpleDialog,\n useScreen,\n Text,\n Flex,\n ScrollArea,\n modal,\n cn,\n DropdownMenuRoot,\n DropdownMenuTrigger,\n DropdownMenuPortal,\n DropdownMenuContent,\n PopoverRoot,\n PopoverContent,\n PopoverAnchor,\n} from \"@kodiak-finance/orderly-ui\";\nimport { AccountItem } from \"./components/accountItem\";\nimport { CreateSubAccount } from \"./components/createSubAccountModal\";\nimport { EditNickNameDialog } from \"./components/editNickNameModal\";\nimport { SubAccountIcon, SwapIcon } from \"./icons\";\nimport { SubAccountScriptReturn } from \"./subAccount.script\";\n\nexport function SubAccountUI(\n props: SubAccountScriptReturn & { customTrigger?: ReactNode },\n) {\n const { t } = useTranslation();\n const { isMobile } = useScreen();\n const timer = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const onMouseEnter = useCallback(() => {\n if (timer.current) {\n clearTimeout(timer.current);\n timer.current = null;\n }\n // setOpen(true);\n }, []);\n const header = <Text weight=\"semibold\">{t(\"subAccount.modal.title\")}</Text>;\n const trigger = useMemo(() => {\n if (props.customTrigger && isMobile) {\n return (\n <div onClick={() => props.onOpenChange(true)}>\n {props.customTrigger}\n </div>\n );\n }\n if (isMobile) {\n return (\n <Flex\n className=\"oui-size-8 oui-rounded-md oui-bg-base-6\"\n itemAlign=\"center\"\n justify=\"center\"\n >\n <SubAccountIcon\n className={cn(\"oui-cursor-pointer\")}\n onClick={() => props.onOpenChange(true)}\n />\n </Flex>\n );\n }\n return <SubAccountIcon className={cn(\"oui-cursor-pointer\")} />;\n }, [isMobile, props.customTrigger]);\n\n const [editDialogOpen, setEditDialogOpen] = useState(false);\n const [editAccountItem, setEditAccountItem] = useState<\n | {\n accountId: string;\n description: string;\n }\n | undefined\n >(undefined);\n\n const noSubAccount = (\n <Flex\n direction=\"column\"\n itemAlign=\"start\"\n justify=\"center\"\n px={5}\n width=\"100%\"\n className=\"oui-h-[120px]\"\n >\n <Text className=\"oui-text-center oui-text-xs oui-font-semibold oui-text-base-contrast-36\">\n {t(\"subAccount.modal.noAccount.description\")}\n </Text>\n </Flex>\n );\n\n const renderSubAccount = () => {\n if (!props.subAccounts?.length) {\n return noSubAccount;\n }\n return (\n <ScrollArea className=\"oui-custom-scrollbar oui-max-h-[200px] oui-w-full oui-overflow-y-auto\">\n <Flex direction=\"column\" gap={2} itemAlign=\"start\" width=\"100%\">\n {props.subAccounts.map((subAccount) => (\n <AccountItem\n key={subAccount.id}\n accountId={subAccount.id}\n description={subAccount.description}\n isMainAccount={false}\n isCurrent={subAccount.id === props.currentAccountId}\n onSwitch={(accountId) => {\n props.onSwitch?.(accountId);\n }}\n accountValue={subAccount.accountValue ?? 0}\n onEdit={() => {\n setEditAccountItem({\n accountId: subAccount.id,\n description: subAccount.description ?? \"\",\n });\n setEditDialogOpen(true);\n }}\n />\n ))}\n </Flex>\n </ScrollArea>\n );\n };\n\n const content = (\n <>\n <Flex direction=\"column\" gap={5} itemAlign=\"start\" width=\"100%\">\n {!isMobile && header}\n <Flex direction=\"column\" gap={5} itemAlign=\"start\" width=\"100%\">\n <Flex direction=\"column\" gap={2} itemAlign=\"start\" width=\"100%\">\n <Text className=\"oui-text-xs oui-leading-3 oui-text-base-contrast-54\">\n {t(\"subAccount.modal.mainAccount.title\")}\n </Text>\n <AccountItem\n accountId={props.mainAccount?.id ?? \"\"}\n isMainAccount={true}\n userAddress={props.userAddress ?? \"\"}\n isCurrent={props.currentAccountId === props.mainAccount?.id}\n onSwitch={(accountId) => {\n props.onSwitch?.(accountId);\n }}\n accountValue={props.mainAccount?.accountValue ?? 0}\n />\n </Flex>\n\n <Flex direction=\"column\" gap={2} itemAlign=\"start\" width=\"100%\">\n <Flex justify=\"between\" itemAlign=\"center\" width=\"100%\" gap={2}>\n <Text className=\"oui-text-xs oui-leading-3 oui-text-base-contrast-54\">\n {t(\"subAccount.modal.subAccounts.title\")}\n </Text>\n <Flex justify=\"end\" gap={2}>\n {props.subAccounts.length > 0 && (\n <SwapIcon\n className=\"oui-cursor-pointer oui-fill-base-contrast-54 hover:oui-fill-base-contrast\"\n onClick={() => {\n // todo need show transfer modal\n let dialogId = \"TransferDialogId\";\n if (isMobile) {\n dialogId = \"TransferSheetId\";\n }\n modal.show(dialogId);\n }}\n />\n )}\n <CreateSubAccount create={props.createSubAccount} />\n </Flex>\n </Flex>\n {renderSubAccount()}\n </Flex>\n </Flex>\n </Flex>\n <EditNickNameDialog\n accountId={editAccountItem?.accountId ?? \"\"}\n nickName={editAccountItem?.description ?? \"\"}\n open={editDialogOpen}\n onOpenChange={setEditDialogOpen}\n />\n </>\n );\n if (isMobile) {\n return (\n <>\n {trigger}\n <SimpleDialog\n title={header}\n open={props.open}\n onOpenChange={props.onOpenChange}\n size=\"xs\"\n classNames={{\n content: \"oui-w-[300px]\",\n }}\n >\n {content}\n </SimpleDialog>\n </>\n );\n }\n\n return (\n <PopoverRoot open={props.open} onOpenChange={props.onOpenChange}>\n <PopoverAnchor>\n <div\n onMouseEnter={() => {\n props.onOpenChange(true);\n }}\n onMouseLeave={() => {\n timer.current = setTimeout(() => {\n props.onOpenChange(false);\n }, 150);\n }}\n >\n {trigger}\n </div>\n </PopoverAnchor>\n <PopoverContent\n align=\"start\"\n side=\"bottom\"\n sideOffset={16}\n collisionPadding={{ right: 16 }}\n onMouseEnter={onMouseEnter}\n onMouseLeave={() => {\n props.onOpenChange(false);\n timer.current ? clearTimeout(timer.current) : void 0;\n }}\n className={cn(\n \"oui-w-[300px] oui-space-y-[2px] oui-border oui-border-line-6 oui-p-5\",\n )}\n >\n {content}\n </PopoverContent>\n </PopoverRoot>\n );\n}\n","import { useCallback, useEffect, useMemo } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n CopyIcon,\n formatAddress,\n toast,\n Tooltip,\n} from \"@kodiak-finance/orderly-ui\";\nimport { cn, Flex, Text } from \"@kodiak-finance/orderly-ui\";\nimport { EditIcon } from \"../icons\";\n\ninterface AccountItemProps {\n isMainAccount?: boolean;\n accountId: string;\n description?: string;\n userAddress?: string;\n balance?: string;\n isCurrent?: boolean;\n onSwitch?: (accountId: string) => void;\n accountValue?: number;\n onEdit?: (accountItem: { accountId: string; description: string }) => void;\n}\n\nconst AccountIdForCopy = (props: { accountId: string }) => {\n const { t } = useTranslation();\n const info = useMemo(() => {\n return {\n leading: props.accountId.slice(0, 6),\n middle: props.accountId.slice(6, -4),\n trailing: props.accountId.slice(-4),\n };\n }, [props.accountId]);\n const copy = useCallback(() => {\n navigator.clipboard.writeText(props.accountId);\n toast.success(t(\"common.copy.copied\"));\n }, [props.accountId]);\n return (\n <Flex\n className=\"oui-min-h-[50px] oui-w-[180px]\"\n gap={2}\n justify=\"between\"\n itemAlign=\"center\"\n >\n <Text className=\"oui-w-full oui-break-all oui-text-2xs oui-text-base-contrast-36\">\n <Text className=\"oui-text-base-contrast\">{info.leading}</Text>\n <Text>{info.middle}</Text>\n <Text className=\"oui-text-base-contrast\">{info.trailing}</Text>\n </Text>\n <CopyIcon\n onClick={copy}\n className=\"oui-cursor-pointer oui-text-base-contrast-36 hover:oui-text-base-contrast\"\n />\n </Flex>\n );\n};\n\nexport const AccountItem = (props: AccountItemProps) => {\n const { t } = useTranslation();\n\n return (\n <>\n <Flex\n justify=\"between\"\n itemAlign=\"center\"\n width=\"100%\"\n className={cn(\n \"oui-relative oui-cursor-pointer oui-rounded-[6px] oui-bg-base-6 oui-px-3 oui-py-4\",\n \"oui-border oui-border-base-6\",\n props.isCurrent && \" oui-border-[#38E2FE] \",\n !props.isCurrent && \"hover:oui-border-base-contrast-16\",\n )}\n >\n <div\n className=\"oui-absolute oui-inset-0 oui-z-0 \"\n onClick={() => {\n if (props.isCurrent) {\n return;\n }\n props.onSwitch?.(props.accountId);\n }}\n />\n {props.isCurrent && (\n <div\n className={cn(\n \"oui-absolute -oui-right-[1px] -oui-top-[1px] oui-leading-3 oui-text-base-contrast-54\",\n \"oui-text-[10px] oui-font-semibold oui-text-black\",\n \"oui-rounded-[6px] oui-rounded-br-none oui-rounded-tl-none oui-bg-[#38E2FE] oui-py-0.5 oui-pl-1 oui-pr-[5px]\",\n )}\n >\n {t(\"subAccount.modal.current\")}\n </div>\n )}\n <Flex\n key={props.accountId}\n direction=\"column\"\n itemAlign=\"start\"\n gap={1}\n className=\"oui-z-[2]\"\n >\n {props.isMainAccount ? (\n <Text className=\"oui-text-xs oui-leading-3 oui-text-base-contrast\">\n {formatAddress(props.userAddress ?? \"\")}\n </Text>\n ) : (\n <Flex\n justify=\"start\"\n itemAlign=\"center\"\n className=\"oui-cursor-pointer oui-gap-[2px] oui-fill-base-contrast-54 hover:oui-fill-base-contrast\"\n onClick={(event) => {\n props.onEdit?.({\n accountId: props.accountId,\n description: props.description ?? \"\",\n });\n event.stopPropagation();\n event.preventDefault();\n }}\n >\n <Text className=\"oui-text-xs oui-leading-3 oui-text-base-contrast\">\n {props.description}\n </Text>\n <EditIcon className=\"oui-fill-base-contrast-54 hover:oui-fill-base-contrast\" />\n </Flex>\n )}\n <Tooltip content={<AccountIdForCopy accountId={props.accountId} />}>\n <Text className=\"oui-text-2xs oui-leading-3 oui-text-base-contrast-36 hover:oui-text-base-contrast\">\n ID: {formatAddress(props.accountId)}\n </Text>\n </Tooltip>\n </Flex>\n <Flex\n className=\"oui-text-xs oui-text-base-contrast\"\n itemAlign=\"end\"\n gap={1}\n >\n <Text.numeral rule=\"price\" dp={2}>\n {props.accountValue ?? 0}\n </Text.numeral>\n <Text>USDC</Text>\n </Flex>\n </Flex>\n </>\n );\n};\n","import { FC, forwardRef, SVGProps } from \"react\";\n\ninterface IconProps extends SVGProps<SVGSVGElement> {\n size?: number;\n}\nexport const SubAccountIcon = forwardRef<SVGSVGElement, IconProps>(\n (props, ref) => {\n const { size = 20, ...rest } = props;\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n ref={ref}\n {...rest}\n >\n <path\n d=\"M10 2.5C8.16892 2.5 6.66667 4.00225 6.66667 5.83333C6.66667 7.66441 8.16892 9.16667 10 9.16667C11.8311 9.16667 13.3333 7.66441 13.3333 5.83333C13.3333 4.00225 11.8311 2.5 10 2.5ZM10 4.16667C10.9303 4.16667 11.6667 4.90299 11.6667 5.83333C11.6667 6.76368 10.9303 7.5 10 7.5C9.06965 7.5 8.33333 6.76368 8.33333 5.83333C8.33333 4.90299 9.06965 4.16667 10 4.16667ZM10 11.6667C8.54587 11.6667 6.82264 12.0082 5.37435 12.5798C4.65021 12.8656 3.99558 13.205 3.47168 13.641C2.94778 14.0769 2.5 14.6662 2.5 15.4167V17.5H17.5V16.6667V15.4167C17.5 14.6662 17.0522 14.0769 16.5283 13.641C16.0044 13.205 15.3498 12.8656 14.6257 12.5798C13.1774 12.0082 11.4541 11.6667 10 11.6667ZM10 13.3333C11.1784 13.3333 12.7884 13.645 14.0153 14.1292C14.6288 14.3713 15.1475 14.66 15.4622 14.9219C15.777 15.1838 15.8333 15.3622 15.8333 15.4167V15.8333H4.16667V15.4167C4.16667 15.3622 4.22299 15.1838 4.53776 14.9219C4.85253 14.66 5.37124 14.3713 5.9847 14.1292C7.21162 13.645 8.82163 13.3333 10 13.3333Z\"\n fill=\"white\"\n fillOpacity=\"0.98\"\n />\n </svg>\n );\n },\n);\n\nexport const SwapIcon = forwardRef<SVGSVGElement, IconProps>((props, ref) => {\n const { size = 20, ...rest } = props;\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n ref={ref}\n {...rest}\n >\n <path d=\"M6 16L2 12L6 8L7.0625 9.0625L4.875 11.25H11V12.75H4.875L7.0625 14.9375L6 16ZM14 11L12.9375 9.9375L15.125 7.75H9V6.25H15.125L12.9375 4.0625L14 3L18 7L14 11Z\" />\n </svg>\n );\n});\n\nexport const AddIcon = forwardRef<SVGSVGElement, IconProps>((props, ref) => {\n const { size = 20, ...rest } = props;\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n ref={ref}\n {...rest}\n >\n <path d=\"M9.25 14H10.75V10.75H14V9.25H10.75V6H9.25V9.25H6V10.75H9.25V14ZM4.5 17C4.0875 17 3.73437 16.8531 3.44062 16.5594C3.14687 16.2656 3 15.9125 3 15.5V4.5C3 4.0875 3.14687 3.73438 3.44062 3.44063C3.73437 3.14688 4.0875 3 4.5 3H15.5C15.9125 3 16.2656 3.14688 16.5594 3.44063C16.8531 3.73438 17 4.0875 17 4.5V15.5C17 15.9125 16.8531 16.2656 16.5594 16.5594C16.2656 16.8531 15.9125 17 15.5 17H4.5ZM4.5 15.5H15.5V4.5H4.5V15.5Z\" />\n </svg>\n );\n});\n\nexport const EditIcon = forwardRef<SVGSVGElement, IconProps>((props, ref) => {\n const { size = 12, ...rest } = props;\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 12 12\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n ref={ref}\n {...rest}\n >\n <path d=\"M9.95551 2.00049C9.81619 2.00049 9.67686 2.05318 9.57074 2.15918L5.43256 6.29785L5.24945 7.25049L6.20209 7.06738L10.3403 2.9292C10.443 2.82645 10.4999 2.68968 10.4999 2.54443C10.4999 2.39918 10.443 2.26218 10.3403 2.15918C10.2341 2.05318 10.0948 2.00049 9.95551 2.00049ZM3.12494 2.25C2.37147 2.25 1.74994 2.87153 1.74994 3.625V9.375C1.74994 10.1285 2.37147 10.75 3.12494 10.75H8.87494C9.62841 10.75 10.2499 10.1285 10.2499 9.375V5.25C10.2509 5.18374 10.2386 5.11796 10.2139 5.05648C10.1892 4.99499 10.1525 4.93903 10.106 4.89185C10.0595 4.84466 10.0041 4.8072 9.94293 4.78162C9.8818 4.75605 9.8162 4.74288 9.74994 4.74288C9.68368 4.74288 9.61807 4.75605 9.55695 4.78162C9.49582 4.8072 9.44038 4.84466 9.39386 4.89185C9.34734 4.93903 9.31066 4.99499 9.28595 5.05648C9.26124 5.11796 9.249 5.18374 9.24994 5.25V9.375C9.24994 9.58803 9.08797 9.75 8.87494 9.75H3.12494C2.91191 9.75 2.74994 9.58803 2.74994 9.375V3.625C2.74994 3.41197 2.91191 3.25 3.12494 3.25H7.24994C7.3162 3.25094 7.38198 3.2387 7.44346 3.21399C7.50494 3.18928 7.5609 3.1526 7.60809 3.10608C7.65527 3.05956 7.69274 3.00412 7.71832 2.94299C7.74389 2.88186 7.75706 2.81626 7.75706 2.75C7.75706 2.68374 7.74389 2.61814 7.71832 2.55701C7.69274 2.49588 7.65527 2.44044 7.60809 2.39392C7.5609 2.3474 7.50494 2.31072 7.44346 2.28601C7.38198 2.2613 7.3162 2.24906 7.24994 2.25H3.12494Z\" />\n </svg>\n );\n});\n","import { useState, useMemo } from \"react\";\nimport { useAccount } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { useAppContext } from \"@kodiak-finance/orderly-react-app\";\nimport {\n Flex,\n SimpleDialog,\n toast,\n Text,\n useScreen,\n cn,\n Tooltip,\n} from \"@kodiak-finance/orderly-ui\";\nimport { AddIcon } from \"../icons\";\nimport { NickNameTextField } from \"./common\";\n\nconst MAX_SUB_ACCOUNT_COUNT = 10;\ntype CreateSubAccountProps = {\n create: (nickName: string) => Promise<void>;\n};\n\nexport const CreateSubAccount = (props: CreateSubAccountProps) => {\n const { t } = useTranslation();\n const { isMobile } = useScreen();\n const [open, setOpen] = useState(false);\n const [nickName, setNickName] = useState<string | undefined>(undefined);\n const { state } = useAccount();\n const [invalid, setInvalid] = useState(false);\n const [loading, setLoading] = useState(false);\n\n const { widgetConfigs } = useAppContext();\n\n const maxSubAccountCount = useMemo(() => {\n return (\n widgetConfigs?.subAccount?.maxSubAccountCount ?? MAX_SUB_ACCOUNT_COUNT\n );\n }, [widgetConfigs]);\n\n const subAccountCount = useMemo(() => {\n return state.subAccounts?.length ?? 0;\n }, [state]);\n\n const trigger = useMemo(() => {\n return subAccountCount >= maxSubAccountCount ? (\n <Tooltip\n className=\"oui-max-w-[188px]\"\n content={t(\"subAccount.modal.create.max.description\")}\n >\n <AddIcon\n className={cn(\"oui-cursor-not-allowed oui-fill-base-contrast-20\")}\n />\n </Tooltip>\n ) : (\n <AddIcon\n className={cn(\n \"oui-cursor-pointer oui-fill-base-contrast-54 hover:oui-fill-base-contrast\",\n )}\n onClick={() => {\n setOpen(true);\n }}\n />\n );\n }, [subAccountCount, maxSubAccountCount]);\n\n const header = (\n <Flex\n py={3}\n direction=\"column\"\n justify=\"between\"\n itemAlign=\"start\"\n width=\"100%\"\n >\n <Text weight=\"semibold\">{t(\"subAccount.modal.create.title\")}</Text>\n <Text className=\"oui-text-2xs oui-text-base-contrast-36\">\n {t(\"subAccount.modal.create.description\", {\n subAccountCount,\n remainingCount: maxSubAccountCount - subAccountCount,\n })}\n </Text>\n </Flex>\n );\n\n const reset = () => {\n setNickName(\"\");\n setInvalid(false);\n setLoading(false);\n };\n\n const validateNickName = (nickName: string | undefined) => {\n if (!nickName || !(nickName.length >= 1 && nickName.length <= 20)) {\n setInvalid(true);\n return true;\n }\n setInvalid(false);\n return false;\n };\n\n const doCreatSubAccount = (nickName: string | undefined) => {\n let _nickName = `Sub-account ${subAccountCount + 1}`;\n if (nickName) {\n _nickName = nickName.trim();\n }\n\n setLoading(true);\n props\n .create(_nickName)\n .then((res) => {\n console.log(\"res\", res);\n reset();\n toast.success(t(\"subAccount.modal.create.success.description\"));\n\n setOpen(false);\n })\n .catch((e: any) => {\n toast.error(t(\"subAccount.modal.create.failed.description\"));\n })\n .finally(() => {\n setLoading(false);\n });\n };\n return (\n <>\n {trigger}\n <SimpleDialog\n title={header}\n open={open}\n onOpenChange={(open) => {\n reset();\n setOpen(open);\n }}\n size={isMobile ? \"sm\" : \"xl\"}\n actions={{\n primary: {\n label: t(\"common.confirm\"),\n disabled: invalid || loading,\n loading: loading,\n onClick: () => {\n const invalid = validateNickName(nickName);\n if (invalid) {\n return;\n }\n doCreatSubAccount(nickName);\n },\n },\n }}\n classNames={{\n content: \"oui-w-[360px]\",\n }}\n >\n <NickNameTextField\n nickName={nickName}\n setNickName={(nickName) => {\n validateNickName(nickName);\n setNickName(nickName);\n }}\n subAccountCount={subAccountCount}\n invalid={invalid}\n />\n </SimpleDialog>\n </>\n );\n};\n","import { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { inputFormatter, TextField } from \"@kodiak-finance/orderly-ui\";\n\nexport const NickNameDescriptionText = \"\";\n\nexport const NickNameTextField = (props: {\n nickName: string | undefined;\n setNickName: (nickName: string | undefined) => void;\n subAccountCount?: number;\n invalid?: boolean;\n}) => {\n const { t } = useTranslation();\n return (\n <TextField\n placeholder={`Sub-account ${(props.subAccountCount ?? 0) + 1}`}\n fullWidth\n label={t(\"subAccount.modal.nickName.label\")}\n value={props.nickName}\n onChange={(e) => {\n const _value = e.target.value.replace(/[^a-zA-Z0-9@,\\s_-]/g, \"\");\n props.setNickName(_value);\n }}\n formatters={[\n inputFormatter.createRegexInputFormatter(/[^a-zA-Z0-9@,\\s_-]/g),\n ]}\n classNames={{\n label: \"oui-text-base-contrast-54 oui-text-xs\",\n input: \"placeholder:oui-text-base-contrast-20 placeholder:oui-text-sm\",\n }}\n maxLength={20}\n minLength={1}\n autoComplete=\"off\"\n helpText={t(\"subAccount.modal.create.nickname.role\")}\n className=\"oui-mb-4\"\n color={props.invalid ? \"danger\" : undefined}\n />\n );\n};\n","import { useEffect, useState } from \"react\";\nimport { useAccount } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { SimpleDialog, toast, Text, TextField } from \"@kodiak-finance/orderly-ui\";\nimport { NickNameDescriptionText, NickNameTextField } from \"./common\";\n\nexport const EditNickNameDialog = (props: {\n nickName: string;\n open: boolean;\n accountId: string;\n onOpenChange: (open: boolean) => void;\n}) => {\n const { subAccount } = useAccount();\n const [loading, setLoading] = useState(false);\n const { t } = useTranslation();\n const [newNickName, setNewNickName] = useState<string | undefined>(undefined);\n const [invalid, setInvalid] = useState(false);\n\n const validateNickName = (nickName: string | undefined) => {\n if (!nickName || !(nickName.length >= 1 && nickName.length <= 20)) {\n setInvalid(true);\n return true;\n }\n setInvalid(false);\n };\n useEffect(() => {\n setNewNickName(props.nickName);\n setInvalid(false);\n setLoading(false);\n }, [props.nickName, props.open]);\n return (\n <SimpleDialog\n title={<Text>{t(\"subAccount.modal.edit.title\")}</Text>}\n open={props.open}\n onOpenChange={props.onOpenChange}\n classNames={{\n content: \"oui-w-[360px]\",\n }}\n actions={{\n primary: {\n label: t(\"common.confirm\"),\n disabled: loading || invalid,\n loading: loading,\n onClick: () => {\n if (validateNickName(newNickName)) {\n return;\n }\n setLoading(true);\n subAccount\n ?.update({\n subAccountId: props.accountId,\n description: newNickName,\n })\n .catch((e) => {\n console.log(\"e\", e);\n toast.error(t(\"subAccount.modal.edit.failed.description\"));\n })\n .then((res) => {\n toast.success(t(\"subAccount.modal.edit.success.description\"));\n props.onOpenChange(false);\n })\n .finally(() => {\n setLoading(false);\n });\n },\n },\n secondary: {\n label: t(\"common.cancel\"),\n onClick: () => props.onOpenChange(false),\n },\n }}\n >\n <NickNameTextField\n nickName={newNickName}\n setNickName={(nickName) => {\n validateNickName(nickName);\n setNewNickName(nickName ?? \"\");\n }}\n invalid={invalid}\n />\n </SimpleDialog>\n );\n};\n","import { FC, ReactNode } from \"react\";\nimport { SubAccountScript } from \"./subAccount.script\";\nimport { SubAccountUI } from \"./subAccount.ui\";\n\ntype SubAccountWidgetProps = {\n customTrigger?: ReactNode;\n};\n\nexport const SubAccountWidget: FC<SubAccountWidgetProps> = (props) => {\n const state = SubAccountScript();\n return <SubAccountUI {...state} customTrigger={props?.customTrigger} />;\n};\n","import { FC } from \"react\";\n\nexport interface CommunityProps {\n width?: number;\n height?: number;\n className?: string | undefined;\n}\n\nexport const CommunityDiscord: FC<CommunityProps> = (props) => {\n const { width = 20, height = 20, className } = props;\n\n return (\n <div className=\"orderly-fill-base-contrast-54 hover:orderly-fill-base-contrast\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"white\"\n fillOpacity={1}\n className={`${className}`}\n >\n <path d=\"M14.9559 5.5217C16.5596 7.89629 17.3515 10.5748 17.0555 13.6583C17.0542 13.6714 17.0475 13.6833 17.0368 13.6912C15.8224 14.5893 14.6458 15.1343 13.4857 15.4958C13.4767 15.4985 13.467 15.4984 13.4581 15.4953C13.4491 15.4923 13.4413 15.4865 13.4358 15.4788C13.1678 15.1032 12.9243 14.7073 12.7109 14.2915C12.6987 14.267 12.7099 14.2375 12.7351 14.2278C13.1218 14.0811 13.4896 13.9052 13.8434 13.6969C13.8712 13.6805 13.873 13.6403 13.8473 13.621C13.7722 13.5648 13.6978 13.5058 13.6266 13.4468C13.6133 13.4359 13.5954 13.4338 13.5803 13.4411C11.2837 14.5092 8.76789 14.5092 6.44412 13.4411C6.42903 13.4343 6.41111 13.4367 6.39815 13.4474C6.32715 13.5064 6.2526 13.5648 6.17823 13.621C6.1525 13.6403 6.15463 13.6805 6.18267 13.6969C6.53642 13.9012 6.90419 14.0811 7.29042 14.2285C7.31544 14.2382 7.32734 14.267 7.31491 14.2915C7.10618 14.7078 6.86265 15.1037 6.58967 15.4793C6.57777 15.4945 6.55825 15.5015 6.53979 15.4958C5.38518 15.1343 4.20857 14.5893 2.99415 13.6912C2.98403 13.6833 2.97676 13.6708 2.97569 13.6578C2.72826 10.9906 3.23253 8.28992 5.07333 5.52116C5.07776 5.51383 5.08451 5.50811 5.09232 5.50472C5.99808 5.08607 6.96844 4.77807 7.98265 4.60218C8.00111 4.59932 8.01957 4.6079 8.02915 4.62434C8.15446 4.84779 8.2977 5.13434 8.39461 5.36851C9.46367 5.20405 10.5494 5.20405 11.6408 5.36851C11.7377 5.13934 11.876 4.84779 12.0008 4.62434C12.0052 4.61619 12.0121 4.60965 12.0205 4.60567C12.0288 4.60169 12.0382 4.60047 12.0473 4.60218C13.062 4.77861 14.0324 5.08661 14.9374 5.50472C14.9454 5.50811 14.952 5.51383 14.9559 5.5217V5.5217ZM8.9381 10.593C8.94929 9.80452 8.37846 9.15206 7.66191 9.15206C6.95122 9.15206 6.3859 9.7988 6.3859 10.593C6.3859 11.387 6.96241 12.0338 7.66191 12.0338C8.37278 12.0338 8.9381 11.387 8.9381 10.593V10.593ZM13.6563 10.593C13.6675 9.80452 13.0966 9.15206 12.3803 9.15206C11.6694 9.15206 11.1041 9.7988 11.1041 10.593C11.1041 11.387 11.6806 12.0338 12.3803 12.0338C13.0966 12.0338 13.6563 11.387 13.6563 10.593V10.593Z\" />\n </svg>\n </div>\n );\n};\n\nexport const CommunityTG: FC<CommunityProps> = (props) => {\n const { width = 20, height = 20, className } = props;\n\n return (\n <div className=\"orderly-fill-base-contrast-54 hover:orderly-fill-base-contrast\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n // stroke=\"currentColor\"\n fill=\"white\"\n fillOpacity={1}\n className={`${className}`}\n >\n <path d=\"M4.10787 9.4635C4.10787 9.4635 9.64487 7.13143 11.5652 6.31025C12.3013 5.98181 14.7978 4.93069 14.7978 4.93069C14.7978 4.93069 15.95 4.47087 15.854 5.58763C15.822 6.0475 15.5659 7.65694 15.3099 9.39781C14.9258 11.8613 14.5097 14.5547 14.5097 14.5547C14.5097 14.5547 14.4457 15.3102 13.9016 15.4416C13.3575 15.5729 12.4613 14.9817 12.3013 14.8503C12.1733 14.7518 9.9009 13.2737 9.06876 12.5511C8.84471 12.354 8.58868 11.9599 9.10074 11.5C10.253 10.4161 11.6292 9.06937 12.4613 8.21537C12.8454 7.82119 13.2295 6.9015 11.6292 8.01825C9.35681 9.62774 7.11641 11.1387 7.11641 11.1387C7.11641 11.1387 6.60431 11.4671 5.64415 11.1715C4.68394 10.8759 3.56374 10.4817 3.56374 10.4817C3.56374 10.4817 2.79565 9.98906 4.10787 9.4635Z\" />\n </svg>\n </div>\n );\n};\n\nexport const CommunityX: FC<CommunityProps> = (props) => {\n const { width = 20, height = 20, className } = props;\n\n return (\n <div className=\"orderly-fill-base-contrast-54 hover:orderly-fill-base-contrast\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n // stroke=\"currentColor\"\n fill=\"white\"\n fillOpacity={1}\n className={`${className}`}\n >\n <path d=\"M4.41988 4.72946L9.05295 10.9243L4.39062 15.961H5.43993L9.52178 11.5513L12.8198 15.961H16.3906L11.4969 9.41769L15.8365 4.72946H14.7872L11.028 8.7907L7.9907 4.72946H4.41988ZM5.96296 5.50238H7.6034L14.8473 15.188H13.2069L5.96296 5.50238Z\" />\n </svg>\n </div>\n );\n};\n\nexport const CommunityDune: FC<CommunityProps> = (props) => {\n const { width = 20, height = 20, className } = props;\n\n return (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M11.9957 19.1899C15.9699 19.1899 19.1916 15.9686 19.1916 11.995C19.1916 8.02132 15.9699 4.80005 11.9957 4.80005C8.02152 4.80005 4.7998 8.02132 4.7998 11.995C4.7998 15.9686 8.02152 19.1899 11.9957 19.1899Z\"\n fill=\"white\"\n fillOpacity={0.54}\n />\n <path\n d=\"M6.05127 16.0536C6.05127 16.0536 10.8064 14.496 19.1871 11.7634C19.1871 11.7634 19.6461 16.2385 15.0068 18.5726C15.0068 18.5726 12.7191 19.6691 10.2092 18.9658C10.2092 18.9658 7.70999 18.494 6.05127 16.0536Z\"\n fill=\"white\"\n fillOpacity={0.54}\n />\n </svg>\n );\n};\n","import { FC } from \"react\";\nimport { useLeftNavScript } from \"./leftNav.script\";\nimport { LeftNavUI, LeftNavUIProps } from \"./leftNav.ui\";\n\nexport const LeftNavWidget: FC<LeftNavUIProps> = (props) => {\n const state = useLeftNavScript();\n return <LeftNavUI {...props} {...state} />;\n};\n","import { useEffect, useRef, useState } from \"react\";\nimport { useLocalStorage } from \"@kodiak-finance/orderly-hooks\";\nimport { useAppContext } from \"@kodiak-finance/orderly-react-app\";\n\nexport type UseScanQRCodeScriptReturn = ReturnType<typeof useScanQRCodeScript>;\n\nexport const useScanQRCodeScript = () => {\n const [open, setOpen] = useState(false);\n const { widgetConfigs } = useAppContext();\n const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const [showScanTooltip, setShowScanTooltip] = useLocalStorage(\n \"orderly_qr_code_scan_tooltip_open\",\n true,\n );\n\n const showDialog = () => {\n setOpen(true);\n };\n\n const hideDialog = () => {\n setOpen(false);\n };\n\n const onScanSuccess = (url: string) => {\n if (!isValidURL(url)) {\n return;\n }\n const { onSuccess } = widgetConfigs?.scanQRCode || {};\n if (typeof onSuccess === \"function\") {\n onSuccess(url);\n } else {\n window.location.href = url;\n }\n };\n\n useEffect(() => {\n if (showScanTooltip) {\n timerRef.current = setTimeout(() => {\n setShowScanTooltip(false);\n }, 8000);\n }\n return () => {\n if (timerRef.current) {\n clearTimeout(timerRef.current);\n }\n };\n }, [showScanTooltip]);\n\n return {\n open,\n onOpenChange: setOpen,\n showDialog,\n hideDialog,\n onScanSuccess,\n showScanTooltip,\n };\n};\n\nfunction isValidURL(str: string) {\n try {\n const url = new URL(str);\n return [\"http:\", \"https:\"].includes(url.protocol);\n } catch {\n return false;\n }\n}\n","import { FC, SVGProps } from \"react\";\nimport { useTranslation, Trans } from \"@kodiak-finance/orderly-i18n\";\nimport {\n Box,\n cn,\n Flex,\n SimpleDialog,\n Text,\n Tooltip,\n} from \"@kodiak-finance/orderly-ui\";\nimport { MainLogo } from \"../main/mainLogo\";\nimport { UseScanQRCodeScriptReturn } from \"./scanQRCode.script\";\nimport { QRCodeScanner, QRCODE_WIDTH, QRCODE_HEIGHT } from \"./scanner\";\n\ntype ScanQRCodeProps = UseScanQRCodeScriptReturn;\n\nexport const ScanQRCode: FC<ScanQRCodeProps> = (props) => {\n const { t } = useTranslation();\n return (\n <>\n <Tooltip\n open={props.showScanTooltip}\n content={t(\"linkDevice.scanQRCode.tooltip\")}\n className=\"oui-bg-base-6 oui-text-2xs oui-font-semibold oui-text-warning-darken\"\n arrow={{ className: \"!oui-fill-base-6\" }}\n >\n <Flex\n className=\"oui-h-8 oui-w-8 oui-cursor-pointer oui-items-center oui-justify-center oui-rounded-md oui-bg-base-5 oui-px-[6px]\"\n onClick={props.showDialog}\n >\n <ScanIcon className=\"oui-text-base-contrast-80\" />\n </Flex>\n </Tooltip>\n <SimpleDialog\n title={<MainLogo />}\n open={props.open}\n onOpenChange={props.onOpenChange}\n size=\"sm\"\n >\n <ScanQRCodeContent {...props} />\n </SimpleDialog>\n </>\n );\n};\n\nconst ScanQRCodeContent: FC<ScanQRCodeProps> = (props) => {\n const { t } = useTranslation();\n\n return (\n <Flex justify=\"center\" direction=\"column\" gapY={5}>\n <Box width={QRCODE_WIDTH} height={QRCODE_HEIGHT} className=\"oui-relative\">\n <QRCodeScanner onSuccess={props.onScanSuccess} />\n <>\n <LineGradient />\n <RadiusGradient className=\"oui-absolute oui-left-[-1.5px] oui-top-[-1.5px]\" />\n <RadiusGradient className=\"oui-absolute oui-right-[-1.5px] oui-top-[-1.5px] oui-rotate-90\" />\n <RadiusGradient className=\"oui-absolute oui-bottom-[-1.5px] oui-left-[-1.5px] -oui-rotate-90\" />\n <RadiusGradient className=\"oui-absolute oui-bottom-[-1.5px] oui-right-[-1.5px] -oui-rotate-180\" />\n </>\n </Box>\n\n {/* </Box> */}\n <Text size=\"sm\" intensity={98} weight=\"semibold\">\n {t(\"linkDevice.scanQRCode\")}\n </Text>\n <span className=\"oui-px-3 oui-text-center\">\n <Text\n size=\"2xs\"\n intensity={54}\n weight=\"regular\"\n className=\"oui-break-words\"\n >\n {/* @ts-ignore */}\n <Trans\n i18nKey=\"linkDevice.scanQRCode.description\"\n components={[\n <LinkDeviceIcon\n key=\"0\"\n className=\"oui-mx-1 oui-inline-block oui-text-base-contrast-80\"\n />,\n ]}\n />\n </Text>\n </span>\n </Flex>\n );\n};\n\nconst ScanIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 18 18\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path d=\"M5.249 2.243a3 3 0 0 0-3 3v.75a.75.75 0 0 0 1.5 0v-.75a1.5 1.5 0 0 1 1.5-1.5h2.25a.75.75 0 0 0 0-1.5zm5.25 0a.75.75 0 0 0 0 1.5h2.25a1.5 1.5 0 0 1 1.5 1.5v.75a.75.75 0 0 0 1.5 0v-.75a3 3 0 0 0-3-3zm-7.5 9a.75.75 0 0 0-.75.75v.75a3 3 0 0 0 3 3h2.25a.75.75 0 0 0 0-1.5h-2.25a1.5 1.5 0 0 1-1.5-1.5v-.75a.75.75 0 0 0-.75-.75m12 0a.75.75 0 0 0-.75.75v.75a1.5 1.5 0 0 1-1.5 1.5h-2.25a.75.75 0 0 0 0 1.5h2.25a3 3 0 0 0 3-3v-.75a.75.75 0 0 0-.75-.75M5.25 8.999a.75.75 0 0 1 .75-.75h6a.75.75 0 0 1 0 1.5H6a.75.75 0 0 1-.75-.75\" />\n </svg>\n);\n\nexport interface LinkDeviceIconProps extends SVGProps<SVGSVGElement> {\n size?: number;\n}\n\nexport const LinkDeviceIcon: FC<LinkDeviceIconProps> = (props) => {\n const { size = 20, ...rest } = props;\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...rest}\n >\n <path d=\"M19.167 7.583a1.74 1.74 0 0 0-1.731-1.75h-4.038a1.74 1.74 0 0 0-1.731 1.75v8.167c0 .967.775 1.75 1.73 1.75h4.039a1.74 1.74 0 0 0 1.73-1.75zm-1.154 0v7.584H12.82V7.583A.58.58 0 0 1 13.398 7h4.038a.58.58 0 0 1 .577.583m-2.02 8.75a.58.58 0 0 1-.576.584.58.58 0 0 1-.577-.584.58.58 0 0 1 .577-.583.58.58 0 0 1 .577.583\" />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M1.666 5a2.5 2.5 0 0 1 2.5-2.5h10a2.5 2.5 0 0 1 2.5 2.5.08.08 0 0 1-.078.078h-1.51a.08.08 0 0 1-.08-.078.834.834 0 0 0-.833-.833h-10A.834.834 0 0 0 3.333 5v5.633c0 .11.09.2.2.2h7.1c.11 0 .2.09.2.2V12.3a.2.2 0 0 1-.2.2H2.7a.2.2 0 0 0-.2.2v.633c0 .511.308.834.834.834h7.3c.11 0 .2.09.2.2v1.266a.2.2 0 0 1-.2.2h-7.3c-1.465 0-2.5-1.086-2.5-2.5v-1.666c0-.392.27-.72.635-.81.107-.026.198-.113.198-.224z\"\n />\n </svg>\n );\n};\n\nconst LineGradient: FC<SVGProps<SVGSVGElement>> = () => {\n return (\n <div\n className={cn(\n \"oui-absolute oui-left-[30px] oui-top-0\",\n \"oui-h-[2px] oui-w-[calc(100%-60px)] oui-rounded-full\",\n \"oui-bg-[linear-gradient(270deg,rgb(var(--oui-gradient-brand-end))_0%,rgb(var(--oui-gradient-brand-start))_100%)]\",\n \"oui-shadow-[0_0_8px_4px_rgba(var(--oui-gradient-brand-start)/0.12)]\",\n \"oui-animate-scan-qr-code\",\n )}\n />\n );\n};\n\nconst RadiusGradient: FC<SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"64\"\n height=\"64\"\n viewBox=\"0 0 64 64\"\n fill=\"none\"\n {...props}\n >\n <path\n d=\"M62 2H18C9.16344 2 2 9.16344 2 18V62\"\n stroke=\"url(#paint0_linear_136_6227)\"\n strokeWidth=\"3\"\n strokeLinecap=\"round\"\n />\n <defs>\n <linearGradient\n id=\"paint0_linear_136_6227\"\n x1=\"2\"\n y1=\"32\"\n x2=\"62\"\n y2=\"32\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"rgb(var(--oui-gradient-brand-end))\" />\n <stop offset=\"1\" stopColor=\"rgb(var(--oui-gradient-brand-start))\" />\n </linearGradient>\n </defs>\n </svg>\n );\n};\n","import { FC, useEffect, useRef } from \"react\";\nimport jsQR from \"jsqr\";\n\ntype ScannerProps = {\n onSuccess?: (data: string) => void;\n};\n\nexport const QRCODE_WIDTH = 320;\nexport const QRCODE_HEIGHT = 320;\nconst RATIO = 2;\n\n/**\n * QR Code Scanner\n * reference https://github.com/cozmo/jsQR/blob/master/docs/index.html\n */\nexport const QRCodeScanner: FC<ScannerProps> = (props) => {\n const videoRef = useRef<HTMLVideoElement>(null);\n const canvasRef = useRef<HTMLCanvasElement>(null);\n\n const tick = () => {\n const video = videoRef.current;\n const canvas = canvasRef.current;\n if (!video || !canvas) return;\n\n const ctx = canvas.getContext(\"2d\")!;\n\n if (video.readyState === video.HAVE_ENOUGH_DATA) {\n const videoWidth = video.videoWidth;\n const videoHeight = video.videoHeight;\n\n const canvasAspectRatio = canvas.width / canvas.height;\n const videoAspectRatio = videoWidth / videoHeight;\n\n let sx, sy, sWidth, sHeight;\n\n if (videoAspectRatio > canvasAspectRatio) {\n // The video is wide. Crop the left and right sides\n sHeight = videoHeight;\n sWidth = videoHeight * canvasAspectRatio;\n sx = (videoWidth - sWidth) / 2;\n sy = 0;\n } else {\n // The video is high. Crop the top and bottom sides\n sWidth = videoWidth;\n sHeight = videoWidth / canvasAspectRatio;\n sx = 0;\n sy = (videoHeight - sHeight) / 2;\n }\n\n ctx.drawImage(\n video,\n sx,\n sy,\n sWidth,\n sHeight,\n 0,\n 0,\n canvas.width,\n canvas.height,\n );\n\n // ctx.drawImage(video, 0, 0, canvas.width, canvas.height);\n const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);\n const res = jsQR(imageData.data, imageData.width, imageData.height, {\n inversionAttempts: \"dontInvert\",\n });\n\n if (res?.data) {\n console.log(\"scan result\", res.data);\n props.onSuccess?.(res.data);\n }\n }\n requestAnimationFrame(tick);\n };\n\n useEffect(() => {\n const video = videoRef.current;\n if (!open || !video) return;\n\n // Use facingMode: environment to attemt to get the front camera on phones\n navigator?.mediaDevices\n ?.getUserMedia({\n video: {\n facingMode: \"environment\",\n width: { ideal: QRCODE_WIDTH * RATIO },\n height: { ideal: QRCODE_HEIGHT * RATIO },\n },\n })\n .then((stream) => {\n video.srcObject = stream;\n // required to tell iOS safari we don't want fullscreen\n video.setAttribute(\"playsinline\", \"true\");\n video.play();\n\n video.onloadeddata = () => {\n console.log(\"Video data loaded.\");\n // const videoTrack = stream.getVideoTracks()[0];\n // const settings = videoTrack.getSettings();\n // console.log(\"video size\", `${settings.width}x${settings.height}`);\n\n requestAnimationFrame(tick);\n };\n })\n .catch((err) => {\n console.error(\"Error accessing camera:\", err);\n });\n\n return () => {\n // Cleanup: stop video stream when component unmounts\n const stream = video.srcObject as MediaStream;\n if (stream) {\n const tracks = stream.getTracks();\n tracks.forEach((track: any) => track.stop());\n }\n video.srcObject = null;\n };\n }, [videoRef, canvasRef]);\n\n return (\n <>\n <video\n ref={videoRef}\n width={QRCODE_WIDTH}\n height={QRCODE_HEIGHT}\n className=\"oui-hidden oui-rounded-2xl oui-bg-base-10\"\n />\n <canvas\n ref={canvasRef}\n width={QRCODE_WIDTH * RATIO}\n height={QRCODE_HEIGHT * RATIO}\n style={{ width: QRCODE_WIDTH, height: QRCODE_HEIGHT }}\n className=\"oui-rounded-2xl oui-bg-base-10\"\n />\n </>\n );\n};\n","import React from \"react\";\nimport { useScanQRCodeScript } from \"./scanQRCode.script\";\nimport { ScanQRCode } from \"./scanQRCode.ui\";\n\nexport const ScanQRCodeWidget: React.FC = () => {\n const state = useScanQRCodeScript();\n return <ScanQRCode {...state} />;\n};\n","import React from \"react\";\nimport { useScreen } from \"@kodiak-finance/orderly-ui\";\nimport { useLinkDeviceScript } from \"./linkDevice.script\";\nimport { LinkDevice } from \"./linkDevice.ui\";\nimport { LinkDeviceMobile } from \"./linkDevice.ui.mobile\";\n\nexport const LinkDeviceWidget: React.FC = () => {\n const { isMobile } = useScreen();\n const state = useLinkDeviceScript();\n if (isMobile) {\n return <LinkDeviceMobile {...state} />;\n }\n return <LinkDevice {...state} />;\n};\n","import { useCallback, useEffect, useState } from \"react\";\nimport {\n useAccount,\n useChains,\n useEventEmitter,\n useTrack,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { TrackerEventName } from \"@kodiak-finance/orderly-types\";\n\nexport type UseLinkDeviceScriptReturn = ReturnType<typeof useLinkDeviceScript>;\n\nconst ExpireSeconds = 60;\n\nexport function useLinkDeviceScript() {\n const [open, setOpen] = useState(false);\n const [loading, setLoading] = useState(true);\n const [confirm, setConfirm] = useState(false);\n const [seconds, setSeconds] = useState(ExpireSeconds);\n const [secretKey, setSecretKey] = useState(\"\");\n const [url, setUrl] = useState(\"\");\n const ee = useEventEmitter();\n const { track } = useTrack();\n\n const { state, account } = useAccount();\n\n const [_, { findByChainId }] = useChains(undefined, {\n pick: \"network_infos\",\n filter: (chain: any) =>\n chain.network_infos?.bridge_enable || chain.network_infos?.bridgeless,\n });\n\n const createTrackParams = () => {\n const chain = findByChainId(account.chainId as number);\n return {\n wallet: state?.connectWallet?.name,\n network: chain?.network_infos.name,\n };\n };\n\n const getOrderlyKey = useCallback(async () => {\n try {\n const res = await account.createApiKey(30);\n setSecretKey(res.secretKey);\n setLoading(false);\n\n track(TrackerEventName.signLinkDeviceMessageSuccess, createTrackParams());\n } catch (e) {\n console.error(\"getOrderlyKey\", e);\n\n if (e instanceof Error) {\n if (\n e.message.indexOf(\n \"Signing off chain messages with Ledger is not yet supported\",\n ) !== -1\n ) {\n ee.emit(\"wallet:sign-message-with-ledger-error\", {\n message: e.message,\n userAddress: account.address,\n });\n }\n }\n hideDialog();\n }\n }, [account]);\n\n const showDialog = useCallback(() => {\n setOpen(true);\n getOrderlyKey();\n track(TrackerEventName.clickLinkDeviceButton, createTrackParams());\n }, [account]);\n\n const hideDialog = useCallback(() => {\n setOpen(false);\n }, []);\n\n const onConfirm = useCallback(() => {\n setConfirm(true);\n track(TrackerEventName.linkDeviceModalClickConfirm, {});\n }, []);\n\n const copyUrl = useCallback(() => {\n navigator.clipboard.writeText(url);\n }, [url]);\n\n useEffect(() => {\n // when hide dialog, reset data\n if (!open) {\n setConfirm(false);\n setLoading(true);\n setSeconds(ExpireSeconds);\n setSecretKey(\"\");\n setUrl(\"\");\n }\n }, [open]);\n\n useEffect(() => {\n if (seconds === 0) {\n hideDialog();\n return;\n }\n\n if (!confirm) {\n return;\n }\n\n const timer = setTimeout(() => {\n setSeconds(seconds - 1);\n }, 1000);\n\n return () => clearTimeout(timer);\n }, [seconds, confirm]);\n\n useEffect(() => {\n if (confirm && secretKey) {\n const timestamp = Math.floor(Date.now() / 1000) + ExpireSeconds;\n const params = {\n k: secretKey,\n t: timestamp,\n a: account.address,\n i: account.chainId,\n n: account.walletAdapter?.chainNamespace,\n };\n const url = createUrl(params);\n setUrl(url);\n }\n }, [confirm, secretKey]);\n\n return {\n open,\n onOpenChange: setOpen,\n showDialog,\n hideDialog,\n loading,\n seconds,\n confirm,\n onConfirm,\n url,\n copyUrl,\n };\n}\n\nfunction createUrl(params: Record<string, any>) {\n const str = JSON.stringify(params);\n const base64 = window.btoa(str);\n console.log(\"str\", str.length, str);\n console.log(\"base64\", base64.length, base64);\n return `${window.location.origin}?link=${base64}`;\n}\n","import { FC, SVGProps, forwardRef, useEffect, useRef } from \"react\";\nimport { qrcode as qr } from \"@akamfoad/qr\";\nimport { Trans, useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n cn,\n CopyIcon,\n Flex,\n SimpleDialog,\n SimpleDialogFooter,\n SimpleDialogFooterProps,\n Text,\n Tooltip,\n} from \"@kodiak-finance/orderly-ui\";\nimport { MainLogo } from \"../mainLogo\";\nimport { UseLinkDeviceScriptReturn } from \"./linkDevice.script\";\n\nexport type LinkDeviceProps = UseLinkDeviceScriptReturn;\n\nexport const LinkDevice: FC<LinkDeviceProps> = (props) => {\n const { t } = useTranslation();\n\n return (\n <>\n <Tooltip content={t(\"linkDevice.tooltip\")}>\n <LinkDeviceIcon\n className=\"oui-text-base-contrast-80 oui-cursor-pointer hover:oui-fill-base-contrast oui-transition-colors\"\n onClick={props.showDialog}\n />\n </Tooltip>\n\n <SimpleDialog\n title={<Text weight=\"semibold\">{t(\"common.confirm\")}</Text>}\n open={props.open}\n onOpenChange={props.onOpenChange}\n size=\"sm\"\n contentProps={{\n onInteractOutside: (e) => {\n const el = document.querySelector(\"#privy-dialog\");\n if (el) {\n e.preventDefault();\n }\n },\n }}\n >\n <LinkDeviceContent {...props} />\n </SimpleDialog>\n </>\n );\n};\n\nexport const LinkDeviceContent: FC<LinkDeviceProps> = (props) => {\n if (props.loading) {\n return <Loading />;\n }\n\n if (props.confirm) {\n return (\n <QRCode\n hideDialog={props.hideDialog}\n seconds={props.seconds}\n url={props.url}\n copyUrl={props.copyUrl}\n />\n );\n }\n\n return (\n <LinkDeviceConfirm\n hideDialog={props.hideDialog}\n onConfirm={props.onConfirm}\n />\n );\n};\n\ntype QRCodeProps = Pick<\n LinkDeviceProps,\n \"seconds\" | \"hideDialog\" | \"copyUrl\"\n> & {\n url?: string;\n};\n\nconst QRCode: FC<QRCodeProps> = (props) => {\n const { t } = useTranslation();\n const actions: SimpleDialogFooterProps[\"actions\"] = {\n primary: {\n label: t(\"common.ok\"),\n onClick: props.hideDialog,\n size: \"md\",\n },\n };\n\n return (\n <Flex direction=\"column\" gapY={3}>\n <Text size=\"base\" intensity={98}>\n {t(\"linkDevice.scanQRCode\")}\n </Text>\n <Text\n size=\"2xs\"\n intensity={54}\n weight=\"regular\"\n className=\"oui-text-center\"\n >\n {/* @ts-ignore */}\n <Trans i18nKey=\"linkDevice.createQRCode.success.description\" />\n </Text>\n\n <Text size=\"sm\" intensity={54}>\n {`${t(\"common.countdown\")}: `}\n <Text.gradient color=\"brand\" className=\"oui-tabular-nums\">\n {props.seconds}s\n </Text.gradient>\n </Text>\n\n <Flex\n className={cn(\n \"oui-w-[240px] oui-h-[240px] \",\n \"oui-border oui-border-base-contrast-20 oui-rounded-2xl\",\n )}\n justify=\"center\"\n itemAlign=\"center\"\n >\n <Flex\n className=\"oui-w-[220px] oui-h-[220px] oui-rounded-lg oui-bg-white\"\n justify=\"center\"\n itemAlign=\"center\"\n >\n <QRCodeCanvas width={196} height={196} content={props.url} />\n </Flex>\n </Flex>\n\n <Flex\n direction=\"row\"\n gap={1}\n className={cn(\n \"oui-cursor-pointer\",\n \"oui-group oui-text-base-contrast-54 hover:oui-text-base-contrast\",\n )}\n onClick={props.copyUrl}\n >\n <CopyIcon\n size={16}\n opacity={1}\n className=\"oui-text-base-contrast-54 group-hover:oui-text-base-contrast\"\n />\n <Text size=\"2xs\" weight=\"regular\">\n {t(\"linkDevice.createQRCode.success.copyUrl\")}\n </Text>\n </Flex>\n\n <SimpleDialogFooter\n actions={actions}\n className=\"oui-w-full oui-p-0 !oui-pt-8\"\n />\n </Flex>\n );\n};\n\ntype QRCodeCanvasProps = {\n width: number;\n height: number;\n content?: string;\n};\n\nconst QRCodeCanvas: FC<QRCodeCanvasProps> = (props) => {\n const canvasRef = useRef<HTMLCanvasElement>(null);\n\n useEffect(() => {\n if (!canvasRef.current || !props.content) return;\n\n const qrcode = qr(props.content);\n const width = props.width;\n const height = props.height;\n\n const ctx = canvasRef.current.getContext(\"2d\")!;\n\n const cells = qrcode.modules!;\n\n const tileW = width / cells.length;\n const tileH = height / cells.length;\n\n for (let r = 0; r < cells.length; ++r) {\n const row = cells[r];\n for (let c = 0; c < row.length; ++c) {\n ctx.fillStyle = row[c] ? \"#000\" : \"#fff\";\n const w = Math.ceil((c + 1) * tileW) - Math.floor(c * tileW);\n const h = Math.ceil((r + 1) * tileH) - Math.floor(r * tileH);\n ctx.fillRect(Math.round(c * tileW), Math.round(r * tileH), w, h);\n }\n }\n }, [canvasRef, props.content]);\n\n return <canvas width={props.width} height={props.height} ref={canvasRef} />;\n};\n\ntype LinkDeviceConfirmProps = Pick<LinkDeviceProps, \"hideDialog\" | \"onConfirm\">;\n\nconst LinkDeviceConfirm: FC<LinkDeviceConfirmProps> = (props) => {\n const { t } = useTranslation();\n\n const actions: SimpleDialogFooterProps[\"actions\"] = {\n secondary: {\n label: t(\"common.cancel\"),\n onClick: props.hideDialog,\n className: \"oui-flex-1\",\n size: \"md\",\n },\n primary: {\n label: t(\"common.confirm\"),\n onClick: props.onConfirm,\n className: \"oui-flex-1\",\n size: \"md\",\n },\n };\n\n return (\n <Flex direction=\"column\">\n <MainLogo />\n <Text size=\"base\" intensity={98} className=\"oui-mt-5\">\n {t(\"linkDevice.createQRCode.linkMobileDevice\")}\n </Text>\n <Text\n size=\"2xs\"\n intensity={54}\n weight=\"regular\"\n className=\"oui-text-center oui-mt-3\"\n >\n {/* @ts-ignore */}\n <Trans\n i18nKey=\"linkDevice.createQRCode.linkMobileDevice.description\"\n values={{\n hostname: window.location.hostname,\n }}\n />\n </Text>\n <SimpleDialogFooter\n actions={actions}\n className=\"oui-w-full oui-p-0 !oui-pt-8\"\n />\n </Flex>\n );\n};\n\nconst Loading = () => {\n const { t } = useTranslation();\n\n return (\n <Flex direction=\"column\" gap={5}>\n <Spinner />\n <Text size=\"sm\" intensity={98}>\n {t(\"linkDevice.createQRCode.loading.description\")}\n </Text>\n </Flex>\n );\n};\n\nconst Spinner = () => {\n return (\n <svg\n width=\"80\"\n height=\"80\"\n viewBox=\"0 0 80 80\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"oui-animate-spin\"\n >\n <path\n d=\"M11.4858 52.1631C10.4698 52.5965 9.28872 52.1259 8.91766 51.0855C7.68926 47.6412 7.04029 44.0121 7.00182 40.3463C6.95634 36.0129 7.76483 31.713 9.38113 27.6921C10.9974 23.6712 13.3899 20.0079 16.4219 16.9116C18.9868 14.2923 21.967 12.122 25.2375 10.4861C26.2253 9.99202 27.4035 10.4698 27.8369 11.4858L28.8571 13.8773C29.2904 14.8933 28.8139 16.0615 27.8336 16.5706C25.3569 17.8567 23.0959 19.5294 21.1375 21.5293C18.7119 24.0064 16.7979 26.9369 15.5049 30.1537C14.2119 33.3704 13.5651 36.8103 13.6015 40.277C13.6308 43.076 14.1051 45.8482 15.0026 48.4906C15.3579 49.5365 14.8933 50.7096 13.8773 51.143L11.4858 52.1631Z\"\n fill=\"url(#paint0_linear_177_6754)\"\n />\n <path\n d=\"M73 40C73 58.2254 58.2254 73 40 73C21.7746 73 7 58.2254 7 40C7 21.7746 21.7746 7 40 7C58.2254 7 73 21.7746 73 40ZM13.6 40C13.6 54.5803 25.4197 66.4 40 66.4C54.5803 66.4 66.4 54.5803 66.4 40C66.4 25.4197 54.5803 13.6 40 13.6C25.4197 13.6 13.6 25.4197 13.6 40Z\"\n fill=\"white\"\n fillOpacity=\"0.06\"\n />\n <defs>\n <linearGradient\n id=\"paint0_linear_177_6754\"\n x1=\"73\"\n y1=\"40\"\n x2=\"7\"\n y2=\"40\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"rgb(var(--oui-gradient-brand-end))\" />\n <stop offset=\"1\" stopColor=\"rgb(var(--oui-gradient-brand-start))\" />\n </linearGradient>\n </defs>\n </svg>\n );\n};\n\nexport interface IconProps extends SVGProps<SVGSVGElement> {\n size?: number;\n}\n\nexport const LinkDeviceIcon = forwardRef<SVGSVGElement, IconProps>(\n (props, ref) => {\n const { size = 20, viewBox, ...rest } = props;\n return (\n <svg\n ref={ref}\n width={size}\n height={size}\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...rest}\n >\n <path d=\"M19.167 7.583a1.74 1.74 0 0 0-1.731-1.75h-4.038a1.74 1.74 0 0 0-1.731 1.75v8.167c0 .967.775 1.75 1.73 1.75h4.039a1.74 1.74 0 0 0 1.73-1.75zm-1.154 0v7.584H12.82V7.583A.58.58 0 0 1 13.398 7h4.038a.58.58 0 0 1 .577.583m-2.02 8.75a.58.58 0 0 1-.576.584.58.58 0 0 1-.577-.584.58.58 0 0 1 .577-.583.58.58 0 0 1 .577.583\" />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M1.666 5a2.5 2.5 0 0 1 2.5-2.5h10a2.5 2.5 0 0 1 2.5 2.5.08.08 0 0 1-.078.078h-1.51a.08.08 0 0 1-.08-.078.834.834 0 0 0-.833-.833h-10A.834.834 0 0 0 3.333 5v5.633c0 .11.09.2.2.2h7.1c.11 0 .2.09.2.2V12.3a.2.2 0 0 1-.2.2H2.7a.2.2 0 0 0-.2.2v.633c0 .511.308.834.834.834h7.3c.11 0 .2.09.2.2v1.266a.2.2 0 0 1-.2.2h-7.3c-1.465 0-2.5-1.086-2.5-2.5v-1.666c0-.392.27-.72.635-.81.107-.026.198-.113.198-.224z\"\n />\n </svg>\n );\n },\n);\n","import { FC, SVGProps, useState } from \"react\";\nimport { useAccount } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { SimpleDialog } from \"@kodiak-finance/orderly-ui\";\nimport { Flex, Text } from \"@kodiak-finance/orderly-ui\";\nimport { LinkDeviceProps } from \"./linkDevice.ui\";\n\nexport const LinkDeviceMobile: FC<LinkDeviceProps> = (props) => {\n const [open, setOpen] = useState(false);\n const { account } = useAccount();\n const { t } = useTranslation();\n const onDisconnect = async () => {\n localStorage.removeItem(\"orderly_link_device\");\n await account.disconnect();\n };\n\n const showDialog = () => {\n setOpen(true);\n };\n\n const hideDialog = () => {\n setOpen(false);\n };\n\n return (\n <>\n <SimpleDialog\n open={open}\n onOpenChange={setOpen}\n title={t(\"common.tips\")}\n size=\"xs\"\n actions={{\n secondary: {\n label: t(\"common.cancel\"),\n onClick: hideDialog,\n size: \"md\",\n fullWidth: true,\n },\n primary: {\n label: t(\"connector.disconnect\"),\n onClick: async () => {\n await onDisconnect();\n hideDialog();\n },\n size: \"md\",\n variant: \"outlined\",\n color: \"danger\",\n },\n }}\n >\n <Text intensity={54} size=\"sm\">\n {t(\"linkDevice.scanQRCode.connected.description\")}\n </Text>\n </SimpleDialog>\n <Flex\n className=\"oui-text-base-contrast oui-px-[6px]\"\n intensity={500}\n height={28}\n r=\"md\"\n onClick={showDialog}\n >\n <DesktopIcon />\n <Dot />\n <LinkIcon />\n <Dot />\n <MobileIcon />\n </Flex>\n </>\n );\n};\n\nconst Dot = () => {\n return (\n <Flex className=\"oui-gap-x-px oui-px-px\">\n <DotIcon />\n <DotIcon />\n <DotIcon />\n </Flex>\n );\n};\n\nconst DesktopIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 18 18\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path d=\"M4.5 2.93a2.25 2.25 0 0 0-2.25 2.25v5.25a.75.75 0 0 0-.75.75v1.5c0 1.272.93 2.25 2.25 2.25h10.5c1.318 0 2.25-.978 2.25-2.25v-1.5a.75.75 0 0 0-.75-.75V5.18a2.25 2.25 0 0 0-2.25-2.25zm0 1.5h9a.75.75 0 0 1 .75.75v5.25H3.75V5.18a.75.75 0 0 1 .75-.75M3 11.93h12v.75c0 .46-.277.75-.75.75H3.75c-.474 0-.75-.29-.75-.75z\" />\n </svg>\n);\n\nconst MobileIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 18 18\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path d=\"M13.498 3.715a2.25 2.25 0 0 0-2.25-2.25h-4.5a2.25 2.25 0 0 0-2.25 2.25v10.5a2.25 2.25 0 0 0 2.25 2.25h4.5a2.25 2.25 0 0 0 2.25-2.25zm-1.5 0v9.75h-6v-9.75a.75.75 0 0 1 .75-.75h4.5a.75.75 0 0 1 .75.75m-2.25 11.25a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0\" />\n </svg>\n);\n\nconst LinkIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M1.007 6a5 5 0 1 1 10 0 5 5 0 0 1-10 0m7.486-2.344A.6.6 0 0 1 8.91 3.5c.15 0 .305.048.418.156a.55.55 0 0 1 0 .798L5.254 8.337a.62.62 0 0 1-.837 0L2.67 6.673a.55.55 0 0 1 0-.798.62.62 0 0 1 .837 0l1.329 1.266z\"\n fill=\"url(#a)\"\n />\n <defs>\n <linearGradient\n id=\"a\"\n x1=\"11.007\"\n y1=\"5.999\"\n x2=\"1.007\"\n y2=\"5.999\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"rgb(var(--oui-gradient-brand-end))\" />\n <stop offset=\"1\" stopColor=\"rgb(var(--oui-gradient-brand-start))\" />\n </linearGradient>\n </defs>\n </svg>\n);\n\nconst DotIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"2\"\n height=\"2\"\n viewBox=\"0 0 2 2\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M.667.334a.667.667 0 1 1 0 1.333.667.667 0 0 1 0-1.333\"\n fill=\"url(#a)\"\n />\n <defs>\n <linearGradient\n id=\"a\"\n x1=\"1.333\"\n y1=\"1.001\"\n x2=\"0\"\n y2=\"1.001\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"rgb(var(--oui-gradient-brand-end))\" />\n <stop offset=\"1\" stopColor=\"rgb(var(--oui-gradient-brand-start))\" />\n </linearGradient>\n </defs>\n </svg>\n);\n","import { createContext, useContext } from \"react\";\nimport type { RouterAdapter } from \"@kodiak-finance/orderly-types\";\nimport { useAnnouncement } from \"@kodiak-finance/orderly-ui-notification\";\n\nexport type ScaffoldState = {\n routerAdapter?: RouterAdapter;\n expanded?: boolean;\n setExpand: (expand: boolean) => void;\n checkChainSupport: (chainId: number | string) => boolean;\n topNavbarHeight: number;\n footerHeight: number;\n announcementHeight: number;\n announcementState: ReturnType<typeof useAnnouncement>;\n};\n\nexport const ScaffoldContext = createContext<ScaffoldState>(\n {} as ScaffoldState,\n);\n\nexport const useScaffoldContext = () => {\n return useContext(ScaffoldContext);\n};\n","import { FC, useCallback, useEffect, useMemo, useRef } from \"react\";\nimport { API } from \"@kodiak-finance/orderly-types\";\nimport { cn } from \"@kodiak-finance/orderly-ui\";\nimport { NotificationUI as NotificationUIComponent } from \"@kodiak-finance/orderly-ui-notification\";\nimport { windowGuard } from \"@kodiak-finance/orderly-utils\";\nimport { useScaffoldContext } from \"../scaffold\";\n\nexport const NotificationUI: FC<{\n dataSource: API.AnnouncementRow[];\n onClose: () => void;\n showAnnouncement: boolean;\n}> = (props) => {\n const { dataSource, showAnnouncement } = props;\n const { routerAdapter } = useScaffoldContext();\n const onItemClick = (url: string) => {\n if (!url) return;\n routerAdapter?.onRouteChange({\n href: url,\n name: url,\n target: \"_blank\",\n });\n };\n\n const notificationRef = useRef<HTMLDivElement>(null);\n const len = useMemo(() => dataSource?.length ?? 0, [dataSource]);\n\n const onClose = useCallback(() => {\n if (len === 0) {\n return;\n }\n windowGuard(() => {\n if (notificationRef.current) {\n const animationendHandler = () => {\n props.onClose();\n notificationRef.current!.removeEventListener(\n \"transitionend\",\n animationendHandler,\n );\n };\n\n notificationRef.current.addEventListener(\n \"transitionend\",\n animationendHandler,\n );\n requestAnimationFrame(() => {\n notificationRef.current!.style.transform = \"translateY(120%)\";\n });\n }\n });\n }, [props.onClose, len]);\n\n useEffect(() => {\n if (len === 0) {\n return;\n }\n if (showAnnouncement) {\n // open the notification`\n windowGuard(() => {\n if (notificationRef.current) {\n requestAnimationFrame(() => {\n notificationRef.current!.style.transform = \"translateY(0)\";\n });\n }\n });\n }\n }, [showAnnouncement, len]);\n\n if (len === 0) {\n return null;\n }\n\n return (\n <div\n ref={notificationRef}\n data-state={showAnnouncement ? \"open\" : \"closed\"}\n className={cn(\n \"oui-fixed oui-bottom-[calc(env(safe-area-inset-bottom)+8px)] oui-left-2 oui-z-50 oui-w-[calc(100%_-_16px)] oui-translate-y-[120%] oui-rounded-lg oui-border oui-border-line-6 oui-bg-base-8 md:oui-bottom-10 md:oui-left-auto md:oui-right-3 md:oui-w-[420px]\",\n \"oui-transition-all oui-duration-300 oui-ease-in-out\",\n showAnnouncement ? \"oui-visible\" : \"oui-invisible\",\n )}\n >\n <NotificationUIComponent\n dataSource={dataSource}\n onClose={onClose}\n onItemClick={onItemClick}\n />\n </div>\n );\n};\n","import { useScaffoldContext } from \"../scaffold/scaffoldContext\";\nimport { NotificationUI } from \"./notification.ui\";\n\nexport const NotificationWidget = () => {\n const { announcementState } = useScaffoldContext();\n\n return (\n <NotificationUI\n dataSource={announcementState.tips}\n onClose={announcementState.closeTips}\n showAnnouncement={announcementState.showAnnouncement}\n />\n );\n};\n","import { useEffect, useRef, useState } from \"react\";\nimport { useLocalStorage } from \"@kodiak-finance/orderly-hooks\";\nimport { useAppContext } from \"@kodiak-finance/orderly-react-app\";\nimport { useObserverElement, useScreen } from \"@kodiak-finance/orderly-ui\";\nimport { type ScaffoldProps } from \"./scaffold.widget\";\n\nexport type ScaffoldScriptReturn = ReturnType<typeof useScaffoldScript>;\n\ntype ScaffoldScriptOptions = ScaffoldProps;\n\nexport const useScaffoldScript = (options: ScaffoldScriptOptions) => {\n const { restrictedInfo, showAnnouncement } = useAppContext();\n\n const [topNavbarRef, topNavbarHeight] = useRefAndHeight(48);\n const [footerRef, footerHeight] = useRefAndHeight(29);\n const [bottomNavRef, bottomNavHeight] = useRefAndHeight(64);\n const [announcementRef, announcementHeight] = useRefAndHeight(0, [\n showAnnouncement,\n ]);\n\n const [expand, setExpand] = useLocalStorage(\n \"orderly_scaffold_expanded\",\n true,\n );\n\n const { isMobile } = useScreen();\n\n const sideBarExpandWidth = options.leftSideProps?.maxWidth || 185;\n const sideBarCollaspedWidth = options.leftSideProps?.minWidth || 98;\n const hasLeftSidebar = !!options.leftSidebar;\n\n return {\n topNavbarRef,\n footerRef,\n topNavbarHeight,\n footerHeight,\n announcementRef,\n announcementHeight,\n restrictedInfo,\n expand,\n setExpand,\n isMobile,\n sideBarExpandWidth,\n sideBarCollaspedWidth,\n hasLeftSidebar,\n footerProps: options.footerProps,\n routerAdapter: options.routerAdapter,\n mainNavProps: options.mainNavProps,\n bottomNavProps: options.bottomNavProps,\n bottomNavRef,\n bottomNavHeight,\n };\n};\n\nconst useRefAndHeight = (\n defaultHeight: number,\n deps: React.DependencyList = [],\n) => {\n const ref = useRef<HTMLDivElement>(null);\n const [height, setHeight] = useState(defaultHeight);\n\n useObserverElement(ref.current, (entry) => {\n setHeight(entry.contentRect.height);\n });\n\n useEffect(() => {\n if (!ref.current) {\n return;\n }\n const rect = ref.current?.getBoundingClientRect();\n setHeight(rect.height);\n }, [ref, ...deps]);\n\n return [ref, height] as const;\n};\n","import React from \"react\";\nimport { isValidElement } from \"react\";\nimport { Box, cn, Grid } from \"@kodiak-finance/orderly-ui\";\nimport { FooterWidget } from \"../footer\";\nimport { MainNavWidget } from \"../main/mainNav.widget\";\nimport { NotificationWidget } from \"../notification/notification.widget\";\nimport { RestrictedInfoWidget } from \"../restrictedInfo\";\nimport { SideNavbarWidget } from \"../sidebar\";\nimport type { ScaffoldScriptReturn } from \"./scaffold.script\";\nimport type { ScaffoldProps } from \"./scaffold.widget\";\n\nexport type DesktopScaffoldProps = React.PropsWithChildren<\n ScaffoldProps & ScaffoldScriptReturn\n>;\n\nexport const DesktopScaffold: React.FC<DesktopScaffoldProps> = (props) => {\n const {\n classNames,\n footerHeight,\n topNavbarRef,\n mainNavProps,\n topBar,\n announcementRef,\n // restrictedInfo,\n hasLeftSidebar,\n expand,\n leftSideProps,\n leftSidebar,\n footer,\n footerRef,\n sideBarCollaspedWidth,\n sideBarExpandWidth,\n footerProps,\n children,\n } = props;\n return (\n <div\n style={{\n height: `calc(100vh - ${footerHeight}px)`,\n }}\n className={cn(\n \"oui-scaffold-root oui-font-semibold\",\n // default text and background color\n \"oui-bg-base-10 oui-text-base-contrast\",\n \"oui-flex oui-flex-col\",\n \"oui-custom-scrollbar oui-overflow-auto\",\n classNames?.root,\n )}\n >\n {/* topNavbar */}\n <Box\n ref={topNavbarRef}\n className={cn(\n \"oui-scaffold-topNavbar oui-bg-base-9\",\n classNames?.topNavbar,\n )}\n >\n {topBar ?? <MainNavWidget {...mainNavProps} />}\n </Box>\n <div\n className={cn(\n \"oui-scaffold-container\",\n \"oui-relative oui-h-full\",\n // 1024px - 6px (scrollbar widt) = 1018px\n \"oui-min-w-[1018px]\",\n classNames?.container,\n )}\n >\n <Box px={2} ref={announcementRef}>\n <RestrictedInfoWidget\n className={cn(\n \"oui-scaffold-restricted-info\",\n \"oui-relative oui-z-[1]\",\n \"oui-mt-2\",\n \"oui-bg-base-9\",\n \"oui-min-w-[994px]\",\n )}\n />\n {/* <AnnouncementWidget\n className={\"oui-mx-auto oui-mt-2\"}\n hideTips={restrictedInfo?.restrictedOpen}\n /> */}\n </Box>\n {/*--------- body start ------ */}\n {!hasLeftSidebar ? (\n // ----------No leftSidebar layout start ---------\n <Box height=\"100%\" className={cn(classNames?.content)}>\n {children}\n </Box>\n ) : (\n // ----------No leftSidebar layout end ---------\n // ---------- left & body layout start ---------\n <Grid\n className={cn(\n \"oui-box-content oui-flex oui-transition-all xl:oui-grid\",\n \"oui-min-h-full oui-flex-1\",\n classNames?.body,\n )}\n style={{\n gridTemplateColumns: `${\n expand\n ? `${sideBarExpandWidth}px`\n : `${sideBarCollaspedWidth}px`\n } 1fr`,\n // gridTemplateRows: \"auto 1fr\",\n // gridTemplateAreas: `\"left main\" \"left main\"`,\n }}\n >\n <div className={cn(classNames?.leftSidebar)}>\n {isValidElement<any>(leftSidebar) ? (\n leftSidebar\n ) : (\n <SideNavbarWidget {...leftSideProps} />\n )}\n </div>\n <Box\n width={\"100%\"}\n className={cn(\"oui-overflow-hidden\", classNames?.content)}\n >\n {children}\n </Box>\n </Grid>\n // ---------- left & body layout end ---------\n )}\n </div>\n\n {/* footer */}\n <Box\n ref={footerRef}\n className={cn(\n \"oui-scaffold-footer oui-w-full oui-bg-base-10\",\n \"oui-fixed oui-bottom-0 oui-z-50\",\n \"oui-border-t oui-border-line-12\",\n classNames?.footer,\n )}\n >\n {footer || <FooterWidget {...footerProps} />}\n </Box>\n <NotificationWidget />\n </div>\n );\n};\n","import { FC, useMemo } from \"react\";\nimport { WsNetworkStatus } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { Divider, Flex, Text } from \"@kodiak-finance/orderly-ui\";\nimport {\n CommuntiyDiscordIcon,\n CommuntiyTelegramIcon,\n CommuntiyXIcon,\n OrderlyTextIcon,\n SignalIcon,\n} from \"../icons/index\";\nimport type { FooterReturns } from \"./footer.script\";\nimport type { FooterProps } from \"./footer.widget\";\n\nexport const Footer: FC<FooterReturns & FooterProps> = (props) => {\n const { t } = useTranslation();\n\n const signalClsName = useMemo(() => {\n switch (props.wsStatus) {\n case WsNetworkStatus.Connected:\n return \"oui-fill-success-light oui-text-success-light\";\n case WsNetworkStatus.Disconnected:\n return \"oui-fill-danger-light oui-text-danger-light\";\n case WsNetworkStatus.Unstable:\n return \"oui-fill-warning-light oui-text-warning-light\";\n }\n }, [props.wsStatus]);\n\n const openUrl = (url?: string) => {\n window.open(url, \"_blank\");\n };\n\n return (\n <Flex\n direction={\"row\"}\n justify={\"between\"}\n height={28}\n px={3}\n width={\"100%\"}\n >\n <Flex>\n <Flex\n direction={\"row\"}\n itemAlign={\"center\"}\n gap={1}\n className={signalClsName}\n >\n <SignalIcon\n // className={cn(signalClsName, \"oui-fill-success-light\")}\n fillOpacity={1}\n fill=\"currentColor\"\n />\n <Text size=\"2xs\">{t(\"scaffold.footer.operational\")}</Text>\n </Flex>\n <Divider\n direction=\"vertical\"\n className=\"oui-h-[18px] oui-px-1 oui-ml-2 oui-border-line-12\"\n />\n <Flex gap={2}>\n <Text intensity={54} size=\"2xs\">\n {t(\"scaffold.footer.joinCommunity\")}\n </Text>\n <Flex direction={\"row\"} gap={1}>\n {typeof props.telegramUrl !== \"undefined\" && (\n <CommuntiyTelegramIcon\n className=\"oui-fill-white/[.54] hover:oui-fill-white/[.98] oui-cursor-pointer\"\n fill=\"currentColor\"\n fillOpacity={1}\n onClick={(e) => openUrl(props.telegramUrl)}\n />\n )}\n {typeof props.discordUrl !== \"undefined\" && (\n <CommuntiyDiscordIcon\n className=\"oui-fill-white/[.54] hover:oui-fill-white/[.98] oui-cursor-pointer\"\n fill=\"currentColor\"\n fillOpacity={1}\n onClick={(e) => openUrl(props.discordUrl)}\n />\n )}\n {typeof props.twitterUrl !== \"undefined\" && (\n <CommuntiyXIcon\n className=\"oui-fill-white/[.54] hover:oui-fill-white/[.98] oui-cursor-pointer\"\n fill=\"currentColor\"\n fillOpacity={1}\n onClick={(e) => openUrl(props.twitterUrl)}\n />\n )}\n </Flex>\n {typeof props?.trailing !== \"undefined\" && (\n <>\n <Divider\n direction=\"vertical\"\n className=\"oui-h-[18px] oui-border-line-12\"\n />\n {props?.trailing}\n </>\n )}\n </Flex>\n </Flex>\n <Flex\n direction={\"row\"}\n gap={1}\n className=\"oui-scaffold-footer-powered-by\"\n >\n <Text intensity={54} size=\"2xs\">\n {t(\"scaffold.footer.poweredBy\")}\n </Text>\n <OrderlyTextIcon />\n </Flex>\n </Flex>\n );\n};\n","import { useWsStatus, WsNetworkStatus } from \"@kodiak-finance/orderly-hooks\";\n\nexport type FooterReturns = {\n wsStatus: WsNetworkStatus;\n};\n\nexport const useFooterScript = (): FooterReturns => {\n const wsStatus = useWsStatus();\n\n return {\n wsStatus,\n };\n};\n","import React, { ReactNode } from \"react\";\nimport { useFooterScript } from \"./footer.script\";\nimport { Footer } from \"./footer.ui\";\n\nexport type FooterProps = {\n telegramUrl?: string;\n twitterUrl?: string;\n discordUrl?: string;\n trailing?: ReactNode;\n};\n\nexport const FooterWidget: React.FC<FooterProps> = (props) => {\n const state = useFooterScript();\n return <Footer {...state} {...props} />;\n};\n","import React from \"react\";\nimport {\n Box,\n Flex,\n tv,\n VariantProps,\n Text,\n cn,\n Tooltip,\n} from \"@kodiak-finance/orderly-ui\";\n\ntype SideMenuItem = {\n name: string;\n icon?: React.ReactNode;\n href?: string;\n disabled?: boolean;\n onClick?: () => void;\n hide?: boolean;\n};\n\nconst menuItemVariants = tv({\n slots: {\n button: [\n \"oui-min-h-10\",\n \"oui-px-3\",\n \"oui-py-2\",\n \"oui-rounded-md\",\n \"oui-w-full\",\n \"oui-text-left\",\n \"oui-text-base\",\n \"oui-text-base-contrast-36\",\n // \"oui-flex\",\n \"oui-group\",\n // \"oui-space-x-2\",\n // \"oui-items-center\",\n \"hover:oui-bg-base-8\",\n \"oui-transition-colors\",\n \"group-data-[state=closed]/bar:oui-w-[42px]\",\n \"oui-overflow-hidden\",\n ],\n icon: [],\n },\n variants: {\n mode: {\n \"icon-only\": {\n button: \"oui-w-10\",\n icon: \"w-6 h-6\",\n },\n full: {\n button: \"oui-full\",\n icon: \"w-6 h-6\",\n },\n },\n active: {\n true: {\n button: \"oui-bg-base-5 hover:oui-bg-base-5\",\n },\n },\n open: {\n true: {\n button: \"\",\n },\n },\n },\n});\n\nconst MenuItem = React.memo<\n {\n item: SideMenuItem;\n active?: boolean;\n open?: boolean;\n onClick?: (item: SideMenuItem) => void;\n } & VariantProps<typeof menuItemVariants>\n>((props) => {\n const { item, mode, open, onClick, active, ...rest } = props;\n const { button } = menuItemVariants({\n mode,\n active: props.active,\n open: props.open,\n });\n const children = (\n <button\n data-actived={props.active}\n disabled={item.disabled}\n className={button()}\n onClick={() => {\n props.onClick?.(item);\n }}\n >\n <Flex itemAlign={\"center\"} gap={2} as=\"span\">\n <div>{item.icon}</div>\n {props.open && (\n <Text.gradient\n color={props.active ? \"brand\" : \"inherit\"}\n angle={45}\n size=\"base\"\n className=\"oui-break-all oui-animate-in oui-fade-in\"\n >\n {item.name}\n </Text.gradient>\n )}\n </Flex>\n </button>\n );\n\n if (props.open) {\n return <li className=\"oui-min-w-[120px]\">{children}</li>;\n }\n\n return (\n <li>\n <Tooltip content={item.name} side=\"right\" align=\"center\" sideOffset={20}>\n {children}\n </Tooltip>\n </li>\n );\n});\n\nMenuItem.displayName = \"LeftMenuItem\";\n\nconst SideMenus: React.FC<{\n menus?: SideMenuItem[];\n current?: string;\n open?: boolean;\n onItemSelect?: (item: SideMenuItem) => void;\n}> = (props) => {\n return (\n <Box py={6}>\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 className=\"oui-pointer-events-none oui-invisible oui-absolute\"\n >\n <defs>\n <linearGradient\n id=\"side-menu-gradient\"\n x1=\"15.7432\"\n y1=\"8.94726\"\n x2=\"2.24316\"\n y2=\"8.94726\"\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 <ul className=\"oui-space-y-4\">\n {props.menus?.map((item, index) => {\n if (item?.hide) {\n return null;\n }\n return (\n <MenuItem\n key={index}\n item={item}\n open={props.open}\n active={item.href === props.current}\n onClick={props.onItemSelect}\n />\n );\n })}\n </ul>\n </Box>\n );\n};\n\ntype SideBarHeaderProps = {\n onToggle?: () => void;\n open?: boolean;\n title?: React.ReactNode;\n};\n\nconst SideBarHeader: React.FC<SideBarHeaderProps> = (props) => {\n const { title } = props;\n\n const titleElemet =\n typeof title === \"string\" ? (\n <Text intensity={54} size=\"xs\">\n {title}\n </Text>\n ) : (\n title\n );\n\n const iconProps = {\n className:\n \"oui-text-base-contrast-36 hover:oui-text-base-contrast-80 oui-cursor-pointer\",\n onClick: props.onToggle,\n };\n\n return (\n <Flex\n justify={props.open ? \"between\" : \"center\"}\n itemAlign=\"center\"\n className=\"oui-h-6\"\n >\n {props.open ? titleElemet : null}\n\n {props.open ? (\n <CollapseIcon {...iconProps} />\n ) : (\n <ExpandIcon {...iconProps} />\n )}\n </Flex>\n );\n};\n\ntype SideBarProps = {\n title?: React.ReactNode;\n items?: SideMenuItem[];\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n onItemSelect?: (item: SideMenuItem) => void;\n current?: string;\n className?: string;\n maxWidth?: number;\n minWidth?: number;\n style?: React.CSSProperties;\n};\n\nconst SideBar: React.FC<SideBarProps> = (props) => {\n const { open = true, items, current, onItemSelect } = props;\n\n return (\n <Box\n data-state={open ? \"opened\" : \"closed\"}\n className={cn(\"oui-group/bar\", props.className)}\n style={props.style}\n >\n <SideBarHeader\n open={open}\n title={props.title}\n onToggle={() => {\n props.onOpenChange?.(!open);\n }}\n />\n <SideMenus\n menus={items}\n current={current}\n onItemSelect={onItemSelect}\n open={open}\n />\n </Box>\n );\n};\n\nSideBar.displayName = \"SideBar\";\n\nconst ExpandIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (\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 {...props}\n >\n <path d=\"M6.326 8.826a.84.84 0 0 0-.6.234L2.16 12.627v-2.135H.492v4.167c0 .46.373.833.834.833h4.166v-1.667H3.357l3.567-3.567a.857.857 0 0 0 0-1.198.84.84 0 0 0-.598-.234M10.502.492V2.16h2.135L9.07 5.726a.857.857 0 0 0 0 1.199.86.86 0 0 0 1.197 0l3.568-3.568v2.135h1.667V1.326a.834.834 0 0 0-.834-.834z\" />\n </svg>\n);\n\nconst CollapseIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (\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 {...props}\n >\n <path d=\"M14.668.492a.85.85 0 0 0-.599.234l-3.567 3.568V2.159H8.835v4.167c0 .46.373.833.833.833h4.167V5.492H11.7l3.569-3.567a.86.86 0 0 0 0-1.199.85.85 0 0 0-.6-.234m-12.5 8.334v1.666h2.135L.736 14.06a.86.86 0 0 0 0 1.198.86.86 0 0 0 1.198 0l3.568-3.567v2.134h1.666V9.66a.834.834 0 0 0-.833-.833z\" />\n </svg>\n);\n\nexport { SideBar };\n\nexport type { SideBarProps, SideMenuItem };\n","import { useState } from \"react\";\nimport { SideBarProps } from \"./sidebar.ui\";\nimport { useScaffoldContext } from \"../scaffold\";\n\nexport const useSideNavBuilder = (\n props?: Partial<SideBarProps>\n): SideBarProps => {\n const [current, setCurrent] = useState(props?.items?.[0].href || \"/\");\n const { expanded, setExpand } = useScaffoldContext();\n\n if (typeof setExpand === \"undefined\") {\n console.warn(\"SideBar component must be used within a Scaffold component\");\n }\n\n return {\n items: [],\n current,\n open: expanded,\n onOpenChange: (open) => {\n setExpand?.(open);\n },\n onItemSelect: (item) => {\n if (item.href) {\n setCurrent(item.href);\n }\n },\n ...props,\n };\n};\n","import React from \"react\";\nimport { SideBar, SideBarProps } from \"./sidebar.ui\";\nimport { useSideNavBuilder } from \"./useSideNavBuilder.script\";\n\nexport const SideNavbarWidget: React.FC<Partial<SideBarProps>> = (props) => {\n const state = useSideNavBuilder(props);\n return <SideBar {...state} />;\n};\n","import React, { useContext, useMemo } from \"react\";\nimport {\n OrderlyContext,\n useChains,\n useMemoizedFn,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { useAnnouncement } from \"@kodiak-finance/orderly-ui-notification\";\nimport { checkChainSupport } from \"../../utils/chain\";\nimport { ScaffoldContext, ScaffoldState } from \"./scaffoldContext\";\n\nexport type ScaffoldProviderProps = Omit<\n ScaffoldState,\n \"checkChainSupport\" | \"announcementState\"\n>;\n\nexport const ScaffoldProvider: React.FC<\n React.PropsWithChildren<ScaffoldProviderProps>\n> = (props) => {\n const {\n routerAdapter,\n expanded,\n setExpand,\n topNavbarHeight,\n footerHeight,\n announcementHeight,\n children,\n } = props;\n\n const [chains] = useChains();\n\n const { networkId } = useContext<any>(OrderlyContext);\n\n const announcementState = useAnnouncement();\n\n // console.log(\"announcementState\", announcementState);\n\n const checkChainSupportHandle = useMemoizedFn((chainId: number | string) => {\n return checkChainSupport(\n chainId,\n networkId === \"testnet\" ? chains.testnet : chains.mainnet,\n );\n });\n\n const memoizedValue = useMemo<ScaffoldState>(() => {\n return {\n routerAdapter: routerAdapter,\n expanded: expanded,\n setExpand: setExpand,\n checkChainSupport: checkChainSupportHandle,\n topNavbarHeight: topNavbarHeight,\n footerHeight: footerHeight,\n announcementHeight: announcementHeight,\n announcementState: announcementState,\n };\n }, [\n routerAdapter,\n expanded,\n setExpand,\n checkChainSupportHandle,\n topNavbarHeight,\n footerHeight,\n announcementHeight,\n announcementState,\n ]);\n\n return (\n <ScaffoldContext.Provider value={memoizedValue}>\n {children}\n </ScaffoldContext.Provider>\n );\n};\n","import { API } from \"@kodiak-finance/orderly-types\";\n\nexport function checkChainSupport(\n chainId: number | string,\n chains: API.Chain[]\n) {\n if (typeof chainId === \"string\") {\n chainId = parseInt(chainId);\n }\n return chains.some((chain) => {\n return chain.network_infos.chain_id === chainId;\n });\n}\n","import React, { PropsWithChildren, ReactNode } from \"react\";\nimport type { RouterAdapter } from \"@kodiak-finance/orderly-types\";\nimport { BottomNavProps } from \"../bottomNav/bottomNav.widget\";\nimport { FooterProps } from \"../footer\";\nimport { LeftNavProps } from \"../leftNav\";\nimport { MainNavWidgetProps } from \"../main/mainNav.widget\";\nimport { SideBarProps } from \"../sidebar\";\nimport { MobileScaffold } from \"./scaffold.mobile.ui\";\nimport { useScaffoldScript } from \"./scaffold.script\";\nimport { DesktopScaffold } from \"./scaffold.ui\";\nimport { ScaffoldProvider } from \"./scaffoldProvider\";\n\nexport type ScaffoldProps = {\n /**\n * custom left sidebar component, only works on desktop\n * if provided, the layout will use this component over the default sidebar component\n */\n leftSidebar?: ReactNode;\n /**\n * custom left sidebar props, only works on desktop\n */\n leftSideProps?: SideBarProps;\n /**\n * custom left nav props, only works on mobile\n */\n leftNavProps?: LeftNavProps;\n /**\n * custom top bar component\n */\n topBar?: ReactNode;\n /**\n * custom top nav props\n */\n mainNavProps?: MainNavWidgetProps;\n /**\n * custom bottom nav component, only works on mobile\n */\n bottomNav?: ReactNode;\n /**\n * custom bottom nav component, only works on mobile\n */\n bottomNavProps?: BottomNavProps;\n /**\n * custom footer component, only works on desktop\n */\n footer?: ReactNode;\n /**\n * custom footer props, only works on desktop\n */\n footerProps?: FooterProps;\n routerAdapter?: RouterAdapter;\n classNames?: {\n // root = topNavbar + container + footer\n root?: string;\n container?: string;\n content?: string;\n // body = leftSidebar + content\n body?: string;\n leftSidebar?: string;\n topNavbar?: string;\n footer?: string;\n bottomNav?: string;\n };\n};\n\nexport const Scaffold: React.FC<PropsWithChildren<ScaffoldProps>> = (props) => {\n const state = useScaffoldScript(props);\n\n const renderContent = () => {\n if (state.isMobile) {\n return (\n <MobileScaffold {...props} {...state}>\n {props.children}\n </MobileScaffold>\n );\n }\n\n return (\n <DesktopScaffold {...props} {...state}>\n {props.children}\n </DesktopScaffold>\n );\n };\n\n return (\n <ScaffoldProvider\n routerAdapter={props.routerAdapter}\n expanded={state.expand}\n setExpand={state.setExpand}\n topNavbarHeight={state.topNavbarHeight}\n footerHeight={state.footerHeight}\n announcementHeight={state.announcementHeight}\n >\n {renderContent()}\n </ScaffoldProvider>\n );\n};\n","import { FC, PropsWithChildren, useMemo } from \"react\";\nimport { AccountStatusEnum } from \"@kodiak-finance/orderly-types\";\nimport { cn, Divider, Flex, useScreen } from \"@kodiak-finance/orderly-ui\";\nimport { WalletConnectButtonExtension } from \"../accountMenu/menu.widget\";\nimport { AccountSummaryWidget } from \"../accountSummary\";\nimport { ChainMenuWidget } from \"../chainMenu\";\nimport { LanguageSwitcherWidget } from \"../languageSwitcher\";\nimport { MessageCenterWidget } from \"../messageCenter/msgCenter.widget\";\nimport { SubAccountWidget } from \"../subAccount\";\nimport { CampaignButton } from \"./campaignButton\";\nimport { LinkDeviceWidget } from \"./linkDevice\";\nimport { MainLogo } from \"./mainLogo\";\nimport { MainNavMenusExtension } from \"./mainMenus/mainNavMenus.widget\";\nimport { CampaignPositionEnum, MainNavScriptReturn } from \"./mainNav.script\";\n\nexport const MainNav: FC<PropsWithChildren<MainNavScriptReturn>> = (props) => {\n const { className, classNames, campaigns, campaignPosition } = props;\n\n const showCampaignButton =\n campaignPosition === CampaignPositionEnum.navTailing && campaigns;\n\n const showLinkIcon =\n !props.wrongNetwork &&\n !props.disabledConnect &&\n props.status! >= AccountStatusEnum.SignedIn;\n\n const showSubAccount = props.status! >= AccountStatusEnum.EnableTrading;\n\n const hideWalletConnectButton =\n !props.disabledConnect && props.wrongNetwork && props.isConnected;\n\n const { isDesktop } = useScreen();\n\n const children = useMemo(() => {\n if (typeof props.children === \"undefined\") {\n return null;\n }\n return <Flex grow>{props.children}</Flex>;\n }, [props.children]);\n\n const showChainMenu = isDesktop;\n\n const renderContent = () => {\n const title = <MainLogo {...props.logo} />;\n const accountSummary = <AccountSummaryWidget />;\n const linkDevice = showLinkIcon && <LinkDeviceWidget />;\n const languageSwitcher = <LanguageSwitcherWidget />;\n const subAccount = showSubAccount && <SubAccountWidget />;\n const chainMenu = showChainMenu && <ChainMenuWidget />;\n const notify = <MessageCenterWidget />;\n const walletConnect = !hideWalletConnectButton && (\n <WalletConnectButtonExtension />\n );\n\n const mainNav = (\n <>\n <MainNavMenusExtension\n {...props.mainMenus}\n classNames={classNames?.mainNav}\n />\n {!!showCampaignButton && (\n <CampaignButton\n {...campaigns}\n className={classNames?.campaignButton}\n />\n )}\n </>\n );\n\n if (typeof props.customRender === \"function\") {\n return props.customRender?.({\n title,\n mainNav,\n accountSummary,\n linkDevice,\n languageSwitcher,\n subAccount,\n chainMenu,\n notify,\n walletConnect,\n });\n }\n\n return (\n <>\n <Flex\n itemAlign={\"center\"}\n className={cn(\n \"oui-gap-3\",\n // let the left and right views show spacing when overlapping\n \"oui-overflow-hidden\",\n )}\n >\n {title}\n {props.leading}\n {mainNav}\n {props.trailing}\n </Flex>\n\n {children}\n\n <Flex itemAlign={\"center\"} className=\"oui-gap-2\">\n {accountSummary}\n {showLinkIcon && (\n <>\n <Divider direction=\"vertical\" className=\"oui-h-8\" intensity={8} />\n {linkDevice}\n </>\n )}\n {notify}\n {languageSwitcher}\n {subAccount}\n {chainMenu}\n {walletConnect}\n </Flex>\n </>\n );\n };\n\n return (\n <Flex\n width=\"100%\"\n as=\"header\"\n itemAlign={\"center\"}\n height={\"48px\"}\n justify={\"between\"}\n px={3}\n gapX={3}\n className={cn(\n \"oui-main-nav oui-font-semibold oui-border-0 lg:oui-border-b-white/[0.12] lg:oui-border-b\",\n className,\n classNames?.root,\n )}\n >\n {renderContent()}\n </Flex>\n );\n};\n\nMainNav.displayName = \"MainNav\";\n","import React, { FC, PropsWithChildren, useEffect } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n Box,\n EyeCloseIcon,\n EyeIcon,\n Flex,\n Popover,\n Text,\n} from \"@kodiak-finance/orderly-ui\";\n\ntype AccountSummaryUi = {\n totalValue: number | null;\n freeCollateral: number | null;\n maxLeverage?: number | null;\n currentLeverage: number | null;\n unrealized_pnl_ROI: number | null;\n unrealPnL: number | null;\n visible?: boolean;\n onToggleVisibility?: () => void;\n // type: AccountSummaryType;\n keys: AccountSummaryList;\n elementKeys: AccountSummaryList;\n onToggleItemByKey: (key: string) => void;\n onKeyToTop: (key: string) => void;\n};\n\n//----------------- TotalValue -----------------\nconst TotalValue: FC<{\n totalValue: number | null;\n visible?: boolean;\n onToggleVisibility?: () => void;\n visibleAvailable?: boolean;\n}> = (props) => {\n const {\n totalValue = 0,\n visible = true,\n onToggleVisibility,\n visibleAvailable = true,\n } = props;\n const { t } = useTranslation();\n\n return (\n <Flex\n direction={\"column\"}\n gap={0}\n className=\"oui-text-2xs\"\n itemAlign={\"start\"}\n >\n <Flex gap={1} itemAlign={\"center\"}>\n <Text intensity={54} className=\"oui-whitespace-nowrap\">\n {t(\"common.totalValue\")}\n </Text>\n {visibleAvailable && (\n <button onClick={() => onToggleVisibility?.()}>\n {visible ? (\n <EyeIcon\n size={12}\n className=\"oui-text-primary-light\"\n opacity={1}\n />\n ) : (\n <EyeCloseIcon\n size={12}\n className=\"oui-text-primary-light\"\n opacity={1}\n />\n )}\n </button>\n )}\n\n <Text intensity={54}>≈</Text>\n </Flex>\n <Text.numeral\n visible={props.visible}\n unit=\"USDC\"\n unitClassName=\"oui-text-base-contrast-20 oui-ml-1\"\n as=\"div\"\n >\n {totalValue ?? \"-\"}\n </Text.numeral>\n </Flex>\n );\n};\n\n//----------------- FreeCollateral -----------------\nconst FreeCollateral: FC<{\n freeCollateral?: number | null;\n visible?: boolean;\n onToggleVisibility?: () => void;\n visibleAvailable?: boolean;\n}> = (props) => {\n const {\n freeCollateral,\n visible,\n onToggleVisibility,\n visibleAvailable = true,\n } = props;\n const { t } = useTranslation();\n\n return (\n <Flex\n direction={\"column\"}\n gap={0}\n className=\"oui-text-2xs\"\n itemAlign={\"start\"}\n >\n <Flex gap={1} itemAlign={\"center\"}>\n <Text intensity={54} className=\"oui-whitespace-nowrap\">\n {t(\"trading.asset.freeCollateral\")}\n </Text>\n {visibleAvailable && (\n <button onClick={() => onToggleVisibility?.()}>\n {visible ? (\n <EyeIcon\n size={12}\n className=\"oui-text-primary-light\"\n opacity={1}\n />\n ) : (\n <EyeCloseIcon\n size={12}\n className=\"oui-text-primary-light\"\n opacity={1}\n />\n )}\n </button>\n )}\n </Flex>\n {/* <Box>\n <Text intensity={54} className=\"oui-whitespace-nowrap\">\n Free collateral\n </Text>\n </Box> */}\n <Text.numeral\n unit=\"USDC\"\n unitClassName=\"oui-text-base-contrast-20 oui-ml-1\"\n visible={visible}\n as=\"div\"\n >\n {freeCollateral ?? \"-\"}\n </Text.numeral>\n </Flex>\n );\n};\n\n//----------------- CurrentLeverage -----------------\nconst CurrentLeverage: FC<{\n currentLeverage: number | null;\n}> = (props) => {\n const { currentLeverage } = props;\n const { t } = useTranslation();\n\n return (\n <Flex\n direction={\"column\"}\n gap={0}\n className=\"oui-text-2xs\"\n itemAlign={\"start\"}\n >\n <Box>\n <Text intensity={54} className=\"oui-whitespace-nowrap\">\n {t(\"leverage.currentLeverage\")}\n </Text>\n </Box>\n <Text.numeral as={\"div\"} unit=\"x\">\n {currentLeverage ?? 0}\n </Text.numeral>\n </Flex>\n );\n};\n\n//----------------- UnrealPnL -----------------\nconst UnrealPnL: FC<{\n unrealized_pnl_ROI: number | null;\n unrealPnL: number | null;\n visible?: boolean;\n onToggleVisibility?: () => void;\n visibleAvailable?: boolean;\n}> = (props) => {\n const { visible, onToggleVisibility, visibleAvailable = true } = props;\n const { t } = useTranslation();\n\n return (\n <Flex\n direction={\"column\"}\n gap={0}\n className=\"oui-text-2xs\"\n itemAlign={\"start\"}\n >\n <Flex gap={1} itemAlign={\"center\"}>\n <Text intensity={54} className=\"oui-whitespace-nowrap\">\n {t(\"common.unrealizedPnl\")}\n </Text>\n {visibleAvailable && (\n <button onClick={() => onToggleVisibility?.()}>\n {visible ? (\n <EyeIcon\n size={12}\n className=\"oui-text-primary-light\"\n opacity={1}\n />\n ) : (\n <EyeCloseIcon\n size={12}\n className=\"oui-text-primary-light\"\n opacity={1}\n />\n )}\n </button>\n )}\n </Flex>\n <Text.numeral\n as={\"div\"}\n coloring\n showIdentifier\n weight={\"semibold\"}\n visible={visible}\n suffix={\n <Text.numeral coloring prefix={\"(\"} suffix={\")\"} rule={\"percentages\"}>\n {props.unrealized_pnl_ROI ?? \"-\"}\n </Text.numeral>\n }\n >\n {props.unrealPnL ?? \"-\"}\n </Text.numeral>\n </Flex>\n );\n};\n\n//----------------- AccountInfoPopover -----------------\nconst AccountInfoPopover = (props: {\n totalValue: number | null;\n freeCollateral: number | null;\n // maxLeverage?: number | null;\n currentLeverage: number | null;\n unrealPnL: number | null;\n unrealized_pnl_ROI: number | null;\n // type: AccountSummaryType;\n keys: AccountSummaryList;\n elementKeys: AccountSummaryList;\n onToggleItemByKey: (key: string) => void;\n visible?: boolean;\n onKeyToTop: (key: string) => void;\n}) => {\n const { totalValue, keys, elementKeys } = props;\n const { t } = useTranslation();\n\n const onSetToTop = (key: SummaryKey) => (event: React.MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n props.onKeyToTop(key);\n };\n\n const elements = elementKeys.map((key) => {\n switch (key) {\n case \"totalValue\":\n return (\n <DropdownMenu onSetTop={onSetToTop(\"totalValue\")} key={key}>\n <Flex className={\"oui-text-base-contrast-54\"} gapX={2}>\n <IdentityButton\n active={keys.includes(\"totalValue\")}\n onClick={() => props.onToggleItemByKey(\"totalValue\")}\n />\n <span>{t(\"common.totalValue\")}</span>\n </Flex>\n <Text.numeral\n visible={props.visible}\n unit=\"USDC\"\n className=\"group-hover:-oui-translate-x-5 oui-transition-transform\"\n unitClassName={\"oui-text-base-contrast-36 oui-ml-1\"}\n >\n {totalValue ?? \"-\"}\n </Text.numeral>\n </DropdownMenu>\n );\n case \"freeCollateral\":\n return (\n <DropdownMenu onSetTop={onSetToTop(\"freeCollateral\")} key={key}>\n <Flex className={\"oui-text-base-contrast-54\"} gapX={2}>\n <IdentityButton\n active={keys.includes(\"freeCollateral\")}\n onClick={() => props.onToggleItemByKey(\"freeCollateral\")}\n />\n <span>{t(\"trading.asset.freeCollateral\")}</span>\n </Flex>\n <Text.numeral\n unit=\"USDC\"\n visible={props.visible}\n className=\"group-hover:-oui-translate-x-5 oui-transition-transform\"\n unitClassName={\"oui-text-base-contrast-36 oui-ml-1\"}\n >\n {props.freeCollateral ?? \"-\"}\n </Text.numeral>\n </DropdownMenu>\n );\n case \"unrealPnL\":\n return (\n <DropdownMenu onSetTop={onSetToTop(\"unrealPnL\")} key={key}>\n <Flex className={\"oui-text-base-contrast-54\"} gapX={2}>\n <IdentityButton\n active={keys.includes(\"unrealPnL\")}\n onClick={() => props.onToggleItemByKey(\"unrealPnL\")}\n />\n <span>{t(\"common.unrealizedPnl\")}</span>\n </Flex>\n <Text.pnl\n coloring\n showIdentifier\n visible={props.visible}\n className=\"group-hover:-oui-translate-x-5 oui-transition-transform\"\n suffix={\n <Text.roi\n coloring\n prefix={\"(\"}\n visible={props.visible}\n suffix={\")\"}\n rule={\"percentages\"}\n >\n {props.unrealized_pnl_ROI ?? \"-\"}\n </Text.roi>\n }\n >\n {props.unrealPnL ?? \"-\"}\n </Text.pnl>\n </DropdownMenu>\n );\n case \"currentLeverage\":\n return (\n <DropdownMenu onSetTop={onSetToTop(\"currentLeverage\")} key={key}>\n <Flex className={\"oui-text-base-contrast-54\"} gapX={2}>\n <IdentityButton\n active={keys.includes(\"currentLeverage\")}\n onClick={() => props.onToggleItemByKey(\"currentLeverage\")}\n />\n <span>{t(\"leverage.currentLeverage\")}</span>\n </Flex>\n <Text.numeral\n className=\"group-hover:-oui-translate-x-5 oui-transition-transform\"\n unit=\"x\"\n >\n {props.currentLeverage ?? \"-\"}\n </Text.numeral>\n </DropdownMenu>\n );\n\n default:\n return null;\n }\n });\n\n return (\n <Flex\n className={\"oui-text-2xs oui-font-semibold\"}\n direction={\"column\"}\n gapY={1}\n >\n {elements}\n </Flex>\n );\n};\n\nconst DropdownMenu: FC<\n PropsWithChildren<{\n onSetTop: (event: React.MouseEvent) => void;\n }>\n> = (props) => {\n return (\n <div className=\"oui-group oui-relative oui-w-full oui-rounded oui-px-[6px] oui-py-1 hover:oui-bg-base-6\">\n <Flex justify={\"between\"} width={\"100%\"}>\n {props.children}\n </Flex>\n <button\n className=\"oui-absolute oui-right-1 oui-top-1\"\n onClick={props.onSetTop}\n >\n <svg\n className=\"oui-translate-x-3 oui-cursor-pointer oui-opacity-0 oui-transition-all group-hover:oui-translate-x-0 group-hover:oui-opacity-100 oui-group/icon\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <rect\n width=\"16\"\n height=\"16\"\n rx=\"2\"\n // fill=\"rgb(var(--oui-color-primary-darken))\"\n className=\"oui-fill-primary-darken\"\n />\n <path\n // fill=\"rgb(var(--oui-color-primary-contrast))\"\n className=\"oui-fill-primary-contrast/50 group-hover/icon:oui-fill-primary-contrast\"\n d=\"M3.507 3.999a.5.5 0 1 0 0 1h9a.5.5 0 0 0 0-1zm4 8.006a.5.5 0 0 0 1 0V7.724l1.5 1.484.703-.703-2.343-2.36a.515.515 0 0 0-.72 0l-2.343 2.36.703.703 1.5-1.484z\"\n />\n </svg>\n </button>\n </div>\n );\n};\n\nconst IdentityButton = (props: {\n active: boolean;\n onClick: React.MouseEventHandler;\n}) => {\n return (\n <button onClick={props.onClick}>\n {props.active ? (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n >\n <path\n d=\"M7.506.977a.56.56 0 0 0-.365.16C6.367 1.88 6.13 2.5 6.413 3.348c-.661.506-1.078.63-1.903.63-1.127 0-1.863.137-2.364.637v.016a1.187 1.187 0 0 0 0 1.686l1.4 1.411-2.385 2.385a.513.513 0 0 0-.015.717.514.514 0 0 0 .719 0l2.394-2.395 1.403 1.396a1.19 1.19 0 0 0 1.687 0h.016c.501-.5.64-1.142.64-2.358 0-.773.16-1.319.64-1.893.924.271 1.462.012 2.22-.746a.5.5 0 0 0 .14-.36c0-.175-.044-.445-.156-.78a4 4 0 0 0-.984-1.577 4 4 0 0 0-1.578-.984C7.95 1.02 7.682.977 7.506.977\"\n fill=\"currentcolor\"\n className={\"oui-text-primary-light\"}\n />\n </svg>\n ) : (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n >\n <path\n d=\"M7.506.977a.56.56 0 0 0-.365.16C6.367 1.88 6.13 2.5 6.413 3.348c-.661.506-1.078.63-1.903.63-1.127 0-1.863.137-2.364.637v.016a1.187 1.187 0 0 0 0 1.686l1.4 1.411-2.385 2.385a.513.513 0 0 0-.015.717.514.514 0 0 0 .719 0l2.394-2.395 1.403 1.396a1.19 1.19 0 0 0 1.687 0h.016c.501-.5.64-1.142.64-2.358 0-.773.16-1.319.64-1.893.924.271 1.462.012 2.22-.746a.5.5 0 0 0 .14-.36c0-.175-.044-.445-.156-.78a4 4 0 0 0-.984-1.577 4 4 0 0 0-1.578-.984C7.95 1.02 7.682.977 7.506.977m.193 1.027c.531.098 1.066.45 1.447.83.381.382.706.848.84 1.459-.477.458-.77.494-1.247.243a.5.5 0 0 0-.583.087c-.91.91-1.15 1.736-1.15 2.85 0 .97-.057 1.33-.36 1.655-.085.092-.203.078-.281 0L2.849 5.615a.18.18 0 0 1-.012-.255c.178-.217.576-.386 1.669-.386 1.306.001 2-.335 2.859-1.14a.5.5 0 0 0 .094-.578c-.257-.513-.217-.784.24-1.252\"\n fill=\"currentcolor\"\n />\n </svg>\n )}\n </button>\n );\n};\n\ntype SummaryKey =\n | \"totalValue\"\n | \"freeCollateral\"\n | \"unrealPnL\"\n | \"currentLeverage\";\n\nexport type AccountSummaryList = Array<SummaryKey>;\nconst AccountSummaryItems: Record<SummaryKey, JSX.ElementType> = {\n totalValue: TotalValue,\n freeCollateral: FreeCollateral,\n unrealPnL: UnrealPnL,\n currentLeverage: CurrentLeverage,\n};\n\nexport const AccountSummary: React.FC<AccountSummaryUi> = (props) => {\n const { keys, ...rest } = props;\n let canToggleIndex = 0;\n const sizeRef = React.useRef(0);\n\n useEffect(() => {\n const resizeObserver = new ResizeObserver((entries) => {\n if (Array.isArray(entries) && entries.length > 0) {\n const width = entries[0].contentRect.width;\n if (width > 1556) {\n sizeRef.current = 5;\n } else if (width > 1480) {\n sizeRef.current = 4;\n } else if (width > 1366) {\n sizeRef.current = 3;\n } else if (width > 1280) {\n sizeRef.current = 2;\n } else if (width > 1180) {\n sizeRef.current = 1;\n } else {\n sizeRef.current = 0;\n }\n }\n });\n\n resizeObserver.observe(document.body);\n\n return () => {\n resizeObserver.disconnect();\n };\n }, []);\n\n const elements = keys.slice(0, sizeRef.current).map((key, index) => {\n switch (key) {\n case \"freeCollateral\": {\n return (\n <FreeCollateral\n freeCollateral={props.freeCollateral}\n visible={props.visible}\n onToggleVisibility={props.onToggleVisibility}\n visibleAvailable={index === canToggleIndex}\n />\n );\n }\n\n case \"unrealPnL\":\n return (\n <UnrealPnL\n unrealPnL={props.unrealPnL}\n unrealized_pnl_ROI={props.unrealized_pnl_ROI}\n visible={props.visible}\n onToggleVisibility={props.onToggleVisibility}\n visibleAvailable={index === canToggleIndex}\n />\n );\n case \"currentLeverage\": {\n canToggleIndex++;\n return <CurrentLeverage currentLeverage={props.currentLeverage} />;\n }\n case \"totalValue\":\n default:\n return (\n <TotalValue\n totalValue={props.totalValue}\n onToggleVisibility={props.onToggleVisibility}\n visible={props.visible}\n visibleAvailable={index === canToggleIndex}\n />\n );\n }\n });\n\n return (\n <div className=\"oui-flex oui-items-center oui-gap-6\">\n <Items elements={elements} />\n <Popover\n content={\n <AccountInfoPopover\n totalValue={rest.totalValue}\n freeCollateral={props.freeCollateral}\n currentLeverage={props.currentLeverage}\n unrealized_pnl_ROI={props.unrealized_pnl_ROI}\n unrealPnL={props.unrealPnL}\n keys={keys}\n elementKeys={props.elementKeys}\n onToggleItemByKey={props.onToggleItemByKey}\n onKeyToTop={props.onKeyToTop}\n visible={props.visible}\n />\n }\n contentProps={{\n onOpenAutoFocus: (event) => event.preventDefault(),\n sideOffset: 12,\n className: \"oui-p-1\",\n }}\n arrow\n >\n <div className=\"oui-cursor-pointer oui-group\">\n <Dot />\n </div>\n </Popover>\n </div>\n );\n};\n\nconst Items: FC<{\n elements: JSX.Element[];\n}> = (props) => {\n return (\n <div className=\"oui-flex oui-gap-6\">\n {props.elements.map((Element, index) => (\n <div key={index}>{Element}</div>\n ))}\n </div>\n );\n};\n\nconst Dot = () => {\n return (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"oui-fill-base-contrast-36 hover:oui-fill-primary-light group-data-[state=open]:oui-fill-primary-light\"\n >\n <path d=\"M10.007 8.335a1.666 1.666 0 1 1 0 3.333 1.666 1.666 0 0 1 0-3.333m-5.84 0a1.666 1.666 0 1 1 0 3.333 1.666 1.666 0 0 1 0-3.333m11.666 0a1.666 1.666 0 1 1 0 3.333 1.666 1.666 0 0 1 0-3.333\" />\n </svg>\n );\n};\n","import { useState } from \"react\";\nimport {\n useLeverage,\n useLocalStorage,\n useMarginRatio,\n usePositionStream,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { useCollateral, useAccount } from \"@kodiak-finance/orderly-hooks\";\nimport { useAppContext } from \"@kodiak-finance/orderly-react-app\";\nimport { AccountStatusEnum } from \"@kodiak-finance/orderly-types\";\n\nexport type AccountSummaryType =\n | \"totalValue\"\n | \"freeCollateral\"\n | \"unrealPnL\"\n | \"currentLeverage\"\n | \"maxLeverage\";\n\nexport const useTotalValueBuilderScript = () => {\n const [keys, setKeys] = useLocalStorage<string[]>(\"accountSummaryTypes\", [\n \"totalValue\",\n ]);\n\n const [elementKeys, setElementKeys] = useState<string[]>([\n \"totalValue\",\n \"freeCollateral\",\n \"unrealPnL\",\n \"currentLeverage\",\n \"maxLeverage\",\n ]);\n\n const { freeCollateral, totalValue } = useCollateral({ dp: 2 });\n\n const { state } = useAccount();\n\n const [visible, setVisible] = useLocalStorage(\"orderly_assets_visible\", true);\n\n const [{ aggregated, totalUnrealizedROI }] = usePositionStream();\n const { wrongNetwork, disabledConnect } = useAppContext();\n\n const { currentLeverage } = useMarginRatio();\n\n const { maxLeverage } = useLeverage();\n\n const onToggleItemByKey = (key: string) => {\n if (keys.includes(key)) {\n setKeys(keys.filter((k: string) => k !== key));\n } else {\n setKeys([...keys, key]);\n }\n };\n\n const onKeyToTop = (key: string) => {\n if (!keys.includes(key)) {\n setKeys([key, ...keys]);\n setElementKeys([key, ...elementKeys.filter((k: string) => k !== key)]);\n return;\n }\n\n setKeys([key, ...keys.filter((k: string) => k !== key)]);\n setElementKeys([key, ...elementKeys.filter((k: string) => k !== key)]);\n };\n\n const unavailable =\n wrongNetwork ||\n disabledConnect ||\n (state.status < AccountStatusEnum.EnableTrading &&\n state.status !== AccountStatusEnum.EnableTradingWithoutConnected);\n\n return {\n totalValue: unavailable ? null : totalValue,\n freeCollateral: unavailable ? null : freeCollateral,\n maxLeverage: unavailable ? null : maxLeverage,\n currentLeverage: unavailable ? null : currentLeverage,\n unrealPnL: unavailable ? null : aggregated?.total_unreal_pnl,\n unrealized_pnl_ROI: unavailable ? null : totalUnrealizedROI,\n // type,\n keys,\n elementKeys,\n // onTypeChange,\n visible,\n wrongNetwork,\n onToggleItemByKey,\n onKeyToTop,\n onToggleVisibility: () => setVisible(!visible),\n };\n};\n\nexport type UseTotalValueBuilderScript = ReturnType<\n typeof useTotalValueBuilderScript\n>;\n","import React from \"react\";\nimport { AccountSummary } from \"./accountSummary.ui\";\nimport type { AccountSummaryList } from \"./accountSummary.ui\";\nimport { useTotalValueBuilderScript } from \"./useWidgetBuilder.script\";\n\nexport const AccountSummaryWidget: React.FC = () => {\n const state = useTotalValueBuilderScript();\n return (\n <AccountSummary\n {...state}\n elementKeys={state.elementKeys as AccountSummaryList}\n />\n );\n};\n","import { FC, useMemo, useState } from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { API } from \"@kodiak-finance/orderly-types\";\nimport {\n BellIcon,\n DialogHeader,\n DialogBody,\n DialogContent,\n Dialog,\n Popover,\n Divider,\n DialogTitle,\n TooltipProvider,\n TooltipRoot,\n TooltipTrigger,\n TooltipContent,\n} from \"@kodiak-finance/orderly-ui\";\nimport { AnnouncementCenterUI } from \"@kodiak-finance/orderly-ui-notification\";\nimport { useScaffoldContext } from \"../scaffold\";\n\n/**\n * Notify bell with Popover (click) + Tooltip (hover) coexisting.\n * - We control Popover open state; when Popover is open, we disable Tooltip to prevent hover/click conflicts.\n * - Both triggers use `asChild` and stack on the same real DOM element to avoid extra wrappers.\n */\nexport const MessageCenter: FC<{\n maintenanceDialogInfo?: string;\n messages: API.AnnouncementRow[];\n showAnnouncement: boolean;\n closeTips: () => void;\n}> = (props) => {\n const { maintenanceDialogInfo, messages, showAnnouncement, closeTips } =\n props;\n const { routerAdapter } = useScaffoldContext();\n const { t } = useTranslation();\n const messageSize = useMemo(() => messages.length, [messages]);\n // Track Popover open to suppress Tooltip while the popover is visible\n const [popoverOpen, setPopoverOpen] = useState(false);\n\n const onItemClick = (url: string) => {\n if (!url) return;\n routerAdapter?.onRouteChange({\n href: url,\n name: url,\n target: \"_blank\",\n });\n };\n\n return (\n <>\n {!!maintenanceDialogInfo && (\n <Dialog open>\n <DialogContent\n closable={false}\n onOpenAutoFocus={(event) => event.preventDefault()}\n className=\"oui-w-[320px] lg:oui-w-auto\"\n >\n <DialogHeader>\n <DialogTitle>{t(\"maintenance.dialog.title\")}</DialogTitle>\n </DialogHeader>\n <Divider />\n <DialogBody className=\"oui-text-2xs lg:oui-text-xs\">\n {maintenanceDialogInfo}\n </DialogBody>\n </DialogContent>\n </Dialog>\n )}\n <TooltipProvider delayDuration={250}>\n {/* When the Popover is open, force Tooltip closed to avoid dual overlays */}\n <TooltipRoot open={popoverOpen ? false : undefined}>\n <Popover\n open={popoverOpen}\n onOpenChange={(open) => {\n setPopoverOpen(open);\n if (open) {\n closeTips();\n }\n }}\n arrow\n content={\n <AnnouncementCenterUI\n dataSource={messages}\n onItemClick={onItemClick}\n />\n }\n contentProps={{\n align: \"end\",\n className: \"oui-w-[360px] oui-shadow-xl oui-p-0\",\n }}\n >\n {/* Stack TooltipTrigger and PopoverTrigger (via Popover's asChild) on the same element */}\n <TooltipTrigger asChild>\n <div className=\"oui-relative oui-flex oui-cursor-pointer oui-items-center oui-justify-center\">\n <BellIcon\n color=\"white\"\n opacity={0.8}\n size={20}\n viewBox=\"0 0 20 20\"\n className=\"hover:oui-opacity-100\"\n />\n {messageSize > 0 && showAnnouncement && (\n <div className=\"oui-absolute -oui-right-[6px] -oui-top-[6px] oui-flex oui-size-4 oui-items-center oui-justify-center oui-rounded-full oui-bg-primary-darken oui-text-[10px] oui-leading-none\">\n {messageSize}\n </div>\n )}\n </div>\n </TooltipTrigger>\n </Popover>\n <TooltipContent side=\"bottom\">\n {t(\"ui.messageCenter.tooltip\")}\n </TooltipContent>\n </TooltipRoot>\n </TooltipProvider>\n </>\n );\n};\n","import { useScaffoldContext } from \"../scaffold/scaffoldContext\";\nimport { MessageCenter } from \"./msgCenter.ui\";\n\nexport const MessageCenterWidget = () => {\n const { announcementState } = useScaffoldContext();\n\n return (\n <MessageCenter\n messages={announcementState.tips}\n maintenanceDialogInfo={announcementState.maintenanceDialogInfo}\n showAnnouncement={announcementState.showAnnouncement}\n closeTips={announcementState.closeTips}\n />\n );\n};\n","import { cn } from \"@kodiak-finance/orderly-ui\";\nimport { MainNavItem, NavItem } from \"./mainMenus/navItem\";\n\nexport type CampaignProps = {\n item: MainNavItem;\n className?: string;\n onItemClick?: (item: MainNavItem[]) => void;\n current?: string[];\n // classNames?: MainNavClassNames;\n};\n\nexport const CampaignButton = (props: CampaignProps) => {\n return (\n <>\n <NavItem\n item={props.item}\n onClick={props.onItemClick}\n classNames={{\n navItem: cn(\"oui-text-base-contrast-54 -oui-ml-2\", props.className),\n }}\n />\n </>\n );\n};\n","import React, {\n cloneElement,\n FC,\n HTMLAttributeAnchorTarget,\n PropsWithChildren,\n ReactElement,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { useAccount, useLocalStorage } from \"@kodiak-finance/orderly-hooks\";\nimport {\n ChevronDownIcon,\n PopoverContent,\n Tooltip,\n} from \"@kodiak-finance/orderly-ui\";\nimport { Flex } from \"@kodiak-finance/orderly-ui\";\nimport {\n Box,\n cn,\n PopoverAnchor,\n PopoverRoot,\n Text,\n} from \"@kodiak-finance/orderly-ui\";\n\nconst ActiveIcon: React.FC = () => (\n <svg\n width={12}\n height={12}\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n focusable={false}\n >\n <path\n d=\"M2.913 4.515a.5.5 0 0 0-.328.202.51.51 0 0 0 .14.701L5.722 7.41a.51.51 0 0 0 .562 0l2.995-1.992a.51.51 0 0 0 .14-.7.51.51 0 0 0-.701-.14L6.002 6.382 3.287 4.577a.5.5 0 0 0-.374-.062\"\n fill=\"url(#mainNavDropDownIcon)\"\n />\n <defs>\n <linearGradient\n id=\"mainNavDropDownIcon\"\n x1=\"9.502\"\n y1=\"5.994\"\n x2=\"2.502\"\n y2=\"5.994\"\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\nexport type MainNavItem = {\n id?: string;\n testid?: string;\n name: string;\n label?: string;\n href: string;\n target?: HTMLAttributeAnchorTarget;\n icon?: string | React.ReactElement;\n activeIcon?: string | React.ReactElement;\n tag?: string;\n description?: string;\n disabled?: boolean;\n children?: MainNavItem[];\n className?: string;\n asChild?: boolean;\n\n /**\n * if true, the item will be shown as a submenu in mobile\n */\n isSubMenuInMobile?: boolean;\n /**\n * if provided, the item is a submenu in mobile, and this will be the a back nav\n */\n subMenuBackNav?: {\n name: string;\n href: string;\n };\n /**\n * if true, the item will be shown as a home page in mobile\n */\n isHomePageInMobile?: boolean;\n customRender?: (option: {\n name: string;\n href: string;\n isActive?: boolean;\n }) => React.ReactNode;\n /**\n * Custom submenu renderer - provides full control over submenu content\n * Renders as a free-form component without any predefined structure\n * @returns React node to render as submenu content\n */\n customSubMenuRender?: () => React.ReactNode;\n /**\n * if true, this item will only be shown in the main account\n * @default false\n **/\n onlyInMainAccount?: boolean;\n tooltipConfig?: {\n /**\n * if true, the tooltip will be shown on first visit\n */\n showOnFirstVisit?: boolean;\n /**\n * the text to show in the tooltip\n */\n text?: string;\n };\n};\n\nconst isObject = (value: any): value is object => {\n return !!value && value.constructor === Object;\n};\n\nconst ORDERLY_NAV_BUTTON_TOOLTIP_OPEN = \"ORDERLY_NAV_BUTTON_TOOLTIP_OPEN\";\n\nexport const NavItem: FC<\n Omit<React.HTMLAttributes<HTMLButtonElement>, \"onClick\"> & {\n item: MainNavItem;\n onClick?: (item: MainNavItem[]) => void;\n // active?: boolean;\n currentPath?: string[];\n classNames?: {\n navItem?: string;\n subMenu?: string;\n };\n }\n> = (props) => {\n const { classNames, currentPath, item, onClick, ...buttonProps } = props;\n\n const { customRender, tooltipConfig, onlyInMainAccount } = item;\n\n const { isMainAccount } = useAccount();\n\n const [showButtonTooltip, setShowButtonTooltip] = useLocalStorage(\n ORDERLY_NAV_BUTTON_TOOLTIP_OPEN,\n true,\n );\n\n const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n useEffect(() => {\n if (showButtonTooltip) {\n timerRef.current = setTimeout(() => {\n setShowButtonTooltip(false);\n }, 8000);\n }\n return () => {\n if (timerRef.current) {\n clearTimeout(timerRef.current);\n }\n };\n }, [showButtonTooltip]);\n\n const isActive = useMemo(\n () => currentPath?.[0] === item.href,\n [currentPath, item.href],\n );\n\n const hasSubMenu =\n Array.isArray(item.children) ||\n typeof item.customSubMenuRender === \"function\";\n const hasCustomSubMenuRender = typeof item.customSubMenuRender === \"function\";\n\n const onClickHandler = useCallback(() => {\n if (hasSubMenu && !hasCustomSubMenuRender) {\n return;\n }\n onClick?.([item]);\n }, [hasSubMenu, hasCustomSubMenuRender, item, onClick]);\n\n const buttonRender = () => {\n if (typeof customRender === \"function\") {\n return customRender({\n name: item.name,\n href: item.href,\n isActive,\n });\n }\n const button = (\n <button\n id={item.id}\n data-testid={item.testid}\n {...buttonProps}\n disabled={item.disabled}\n data-actived={isActive}\n className={cn(\n \"oui-group oui-relative oui-h-[32px] oui-rounded oui-px-3 oui-py-1 oui-text-sm oui-text-base-contrast-36 hover:oui-bg-base-7\",\n item.className,\n classNames?.navItem,\n )}\n onClick={onClickHandler}\n >\n <span className={\"oui-flex oui-items-center\"}>\n <ItemIcon isActive={isActive} item={item} />\n <Text.gradient\n color={isActive ? \"brand\" : \"inherit\"}\n angle={45}\n className=\"oui-whitespace-nowrap oui-break-normal\"\n >\n {item.label ?? item.name}\n </Text.gradient>\n {hasSubMenu && (\n <span className={\"oui-ml-1 group-data-[open=true]:oui-rotate-180\"}>\n {isActive ? (\n <ActiveIcon />\n ) : (\n <ChevronDownIcon size={12} color={\"white\"} />\n )}\n </span>\n )}\n </span>\n <Box\n invisible={!isActive}\n position=\"absolute\"\n bottom={0}\n left={\"50%\"}\n height={\"3px\"}\n r=\"full\"\n width={\"calc(100% - 24px)\"} // oui-px-3 * 2\n gradient=\"brand\"\n angle={45}\n className=\"-oui-translate-x-1/2 \"\n />\n </button>\n );\n\n if (isObject(tooltipConfig) && tooltipConfig.showOnFirstVisit) {\n return (\n <Tooltip\n open={showButtonTooltip}\n content={tooltipConfig.text}\n className={\n \"oui-w-64 oui-max-w-64 oui-bg-base-6 oui-text-2xs oui-font-semibold\"\n }\n >\n {button}\n </Tooltip>\n );\n }\n return button;\n };\n\n if (onlyInMainAccount && !isMainAccount) {\n return null;\n }\n\n if (!hasSubMenu) {\n return buttonRender();\n }\n\n return (\n <SubMenus\n items={item.children || []}\n className={classNames?.subMenu}\n current={currentPath?.[1]}\n onItemClick={(subItem: MainNavItem) => {\n onClick?.([item, subItem]);\n }}\n customSubMenuRender={item.customSubMenuRender}\n >\n {buttonRender()}\n </SubMenus>\n );\n};\n\nconst SubMenus: React.FC<\n PropsWithChildren<{\n items: MainNavItem[];\n className?: string;\n current?: string;\n onItemClick: (item: MainNavItem) => void;\n customSubMenuRender?: () => React.ReactNode;\n }>\n> = (props) => {\n const {\n children,\n items,\n className,\n current,\n onItemClick,\n customSubMenuRender,\n } = props;\n const [open, setOpen] = useState(false);\n const timer = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const onMouseEnter = useCallback(() => {\n if (timer.current) {\n clearTimeout(timer.current);\n timer.current = null;\n }\n // setOpen(true);\n }, []);\n\n useEffect(() => {\n return () => {\n if (timer.current) {\n clearTimeout(timer.current);\n }\n };\n }, []);\n\n const classNames = (children as ReactElement).props?.className;\n\n return (\n <PopoverRoot open={open}>\n <PopoverAnchor>\n <div\n className={\"oui-group\"}\n data-open={open}\n onMouseEnter={() => {\n setOpen(true);\n }}\n onMouseLeave={() => {\n timer.current = setTimeout(() => {\n setOpen(false);\n }, 150);\n }}\n >\n {cloneElement(children as React.ReactElement<any>, {\n className: cn(classNames, open && \"oui-bg-base-7\"),\n })}\n </div>\n </PopoverAnchor>\n <PopoverContent\n align=\"start\"\n onMouseEnter={onMouseEnter}\n onMouseLeave={() => {\n setOpen(false);\n if (timer.current) {\n clearTimeout(timer.current);\n }\n }}\n className={cn(\n customSubMenuRender\n ? \"oui-w-auto oui-p-0 oui-border-0 oui-rounded-lg\"\n : \"oui-w-[200px] oui-space-y-[2px] oui-border oui-border-line-6 oui-p-1\",\n className,\n )}\n >\n {customSubMenuRender\n ? customSubMenuRender()\n : items.map((item, index) => {\n return (\n <SubMenu\n key={index}\n item={item}\n onClick={onItemClick}\n active={item.href === current}\n />\n );\n })}\n </PopoverContent>\n </PopoverRoot>\n );\n};\n\nconst SubMenu: React.FC<{\n item: MainNavItem;\n active?: boolean;\n onClick: (item: MainNavItem) => void;\n}> = (props) => {\n const { item, active, onClick } = props;\n const hasDescription = typeof item.description !== \"undefined\";\n const hasIcon = typeof item.icon !== \"undefined\" && item.icon !== null;\n return (\n <Flex\n px={2}\n py={3}\n gapX={2}\n data-active={active ?? false}\n itemAlign={hasDescription ? \"start\" : \"center\"}\n className={cn(\n \"oui-group oui-w-full oui-cursor-pointer oui-text-base-contrast-80 hover:oui-bg-base-6 data-[active=true]:oui-bg-base-5\",\n // props.active && \"oui-bg-base-5\"\n )}\n r={\"md\"}\n onClick={() => {\n onClick(item);\n }}\n data-testid={item.testid}\n >\n {hasIcon && (\n <div\n className={cn(\n \"oui-relative oui-size-6\",\n hasDescription && \"oui-translate-y-1\",\n )}\n >\n <ItemIcon isActive={active ?? false} item={item} />\n </div>\n )}\n <div className=\"oui-flex-1\">\n <SubMenuTitle item={item} isActive={active} />\n {hasDescription && (\n <Text size={\"2xs\"} as={\"div\"} intensity={36}>\n {item.description}\n </Text>\n )}\n </div>\n </Flex>\n );\n};\n\nconst SubMenuTitle: React.FC<{ item: MainNavItem; isActive?: boolean }> = (\n props,\n) => {\n const { item, isActive } = props;\n return (\n <Flex itemAlign={\"center\"} width={\"100%\"} position=\"relative\">\n <div className=\"oui-flex oui-flex-1\">\n <Text.gradient\n color={isActive ? \"brand\" : \"inherit\"}\n size={\"xs\"}\n as={\"div\"}\n intensity={80}\n weight={\"semibold\"}\n className=\"oui-whitespace-nowrap oui-break-normal\"\n >\n {item.name}\n </Text.gradient>\n {typeof item.tag !== \"undefined\" && <Tag item={item} />}\n </div>\n {/* {item.target === \"_blank\" && <OutlinkIcon />} */}\n </Flex>\n );\n};\n\nconst Tag: React.FC<{ item: MainNavItem }> = (props) => {\n return (\n <div\n className={\n \"oui-ml-1 oui-inline-flex 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-2 oui-py-1\"\n }\n >\n <Text.gradient\n color={\"brand\"}\n size={\"3xs\"}\n className=\"oui-whitespace-nowrap oui-break-normal\"\n >\n {props.item.tag}\n </Text.gradient>\n </div>\n );\n};\n\nconst ICON_CLASSNAME =\n \"oui-flex oui-border oui-border-line oui-w-6 oui-h-6 oui-rounded-md oui-justify-center oui-items-center oui-absolute oui-left-0 oui-top-0\";\n\nconst ItemIcon: React.FC<{ item: MainNavItem; isActive: boolean }> = (\n props,\n) => {\n const { isActive } = props;\n if (!props.item.icon) {\n return null;\n }\n if (typeof props.item.icon === \"string\") {\n return (\n <span className={\"oui-mr-1 oui-size-[20px]\"}>\n {\n <img\n src={\n isActive\n ? (props.item.activeIcon as string) || props.item.icon\n : props.item.icon\n }\n className={\"oui-max-h-full oui-max-w-full\"}\n />\n }\n </span>\n );\n }\n // return isActive ? props.item.activeIcon || props.item.icon : props.item.icon;\n return (\n <>\n <div\n className={cn(\n ICON_CLASSNAME,\n \"group-hover:oui-invisible group-data-[active=true]:oui-invisible\",\n )}\n >\n {props.item.icon}\n </div>\n <div\n className={cn(\n ICON_CLASSNAME,\n \"oui-invisible group-hover:oui-visible group-data-[active=true]:oui-visible\",\n )}\n >\n {props.item.activeIcon || props.item.icon}\n </div>\n </>\n );\n};\n\nconst OutlinkIcon: React.FC = () => {\n return (\n <>\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"oui-absolute oui-right-0 oui-top-0 group-hover:oui-invisible\"\n >\n <path\n d=\"M14.159 17.492a3.333 3.333 0 0 0 3.333-3.333V5.826a3.333 3.333 0 0 0-3.333-3.334H5.826a3.333 3.333 0 0 0-3.334 3.334v8.333a3.333 3.333 0 0 0 3.334 3.333zm-6.667-4.166a.85.85 0 0 1-.599-.235.86.86 0 0 1 0-1.198l3.333-3.333-1.9-1.901h5v5l-1.901-1.9L8.09 13.09a.84.84 0 0 1-.599.235\"\n fill=\"#fff\"\n fillOpacity=\".2\"\n />\n </svg>\n\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"oui-invisible oui-absolute oui-right-0 oui-top-0 group-hover:oui-visible\"\n >\n <path\n d=\"M14.159 17.492a3.333 3.333 0 0 0 3.333-3.333V5.826a3.333 3.333 0 0 0-3.333-3.334H5.826a3.333 3.333 0 0 0-3.334 3.334v8.333a3.333 3.333 0 0 0 3.334 3.333zm-6.667-4.166a.85.85 0 0 1-.599-.235.86.86 0 0 1 0-1.198l3.333-3.333-1.9-1.901h5v5l-1.901-1.9L8.09 13.09a.84.84 0 0 1-.599.235\"\n fill=\"url(#outlineIcon)\"\n />\n <defs>\n <linearGradient\n id=\"outlineIcon\"\n x1=\"17.492\"\n y1=\"9.992\"\n x2=\"2.492\"\n y2=\"9.992\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"rgb(var(--oui-gradient-brand-end))\" />\n <stop offset=\"1\" stopColor=\"rgb(var(--oui-gradient-brand-start))\" />\n </linearGradient>\n </defs>\n </svg>\n </>\n );\n};\n","import { FC } from \"react\";\nimport {\n ExtensionPositionEnum,\n ExtensionSlot,\n installExtension,\n} from \"@kodiak-finance/orderly-ui\";\nimport { MainNavMenus, type MainNavItemsProps } from \"./mainNavMenus.ui\";\n\nexport const MainNavMenusWidget: FC<MainNavItemsProps> = (props) => {\n return <MainNavMenus {...props} />;\n};\n\ninstallExtension<MainNavItemsProps>({\n name: \"default-main-nav-menus\",\n scope: [\"*\"],\n positions: [ExtensionPositionEnum.MainMenus],\n __isInternal: true,\n})((props: MainNavItemsProps) => {\n return <MainNavMenus {...props} />;\n});\n\nexport const MainNavMenusExtension: FC<MainNavItemsProps> = (props) => {\n return (\n <ExtensionSlot position={ExtensionPositionEnum.MainMenus} {...props} />\n );\n};\n","import { FC } from \"react\";\nimport { cn, Flex } from \"@kodiak-finance/orderly-ui\";\nimport { MainNavItem, NavItem } from \"./navItem\";\n\nexport type MainNavClassNames = {\n root?: string;\n navItem?: string;\n subMenu?: string;\n};\n\nexport type MainNavItemsProps = {\n items?: MainNavItem[];\n current?: string[];\n classNames?: MainNavClassNames;\n onItemClick?: (item: MainNavItem[]) => void;\n};\n\nexport const MainNavMenus: FC<MainNavItemsProps> = (props) => {\n const { items, classNames } = props;\n\n if (!Array.isArray(items) || items.length === 0) {\n return null;\n }\n\n return (\n <Flex className={cn(\"oui-gap-1\", classNames?.root)}>\n {items?.map((item, index) => (\n <NavItem\n key={index}\n item={item}\n // active={item.href === props.current?.[0]}\n currentPath={props.current}\n onClick={props.onItemClick}\n classNames={classNames}\n />\n ))}\n </Flex>\n );\n};\n","import React, { PropsWithChildren, ReactNode } from \"react\";\nimport { LeftNavProps } from \"../leftNav/leftNav.type\";\nimport { MainNavClassNames } from \"./mainMenus/mainNavMenus.ui\";\nimport { MainNavItem } from \"./mainMenus/navItem\";\nimport { CampaignPositionEnum, useMainNavScript } from \"./mainNav.script\";\nimport { MainNav } from \"./mainNav.ui\";\n\nexport type MainNavWidgetProps = {\n leading?: ReactNode;\n trailing?: ReactNode;\n logo?: {\n src: string;\n alt: string;\n };\n mainMenus?: MainNavItem[];\n /** @deprecated use mainMenus instead */\n campaigns?: MainNavItem;\n /** @deprecated use mainMenus instead */\n campaignPosition?: CampaignPositionEnum;\n /**\n * initial menu path, if it has submenus, use array\n * @type string | string[]\n */\n initialMenu?: string | string[];\n\n onItemClick?: (options: {\n href: string;\n name: string;\n scope?: string;\n }) => void;\n\n /** only works on mobile */\n leftNav?: LeftNavProps;\n customLeftNav?: ReactNode;\n className?: string;\n classNames?: {\n root?: string;\n mainNav?: MainNavClassNames;\n // subNav?: string;\n logo?: string;\n account?: string;\n chains?: string;\n campaignButton?: string;\n };\n\n /** custom render main nav */\n customRender?: (components: {\n /** Logo or title component (desktop & mobile) */\n title?: ReactNode;\n /** Language selection component (desktop & mobile) */\n languageSwitcher?: ReactNode;\n /** Sub-account component (desktop & mobile) */\n subAccount?: ReactNode;\n /** Device linking component (desktop & mobile) */\n linkDevice?: ReactNode;\n /** Chain selection menu (desktop & mobile) */\n chainMenu?: ReactNode;\n /** Wallet connection component (desktop & mobile) */\n walletConnect?: ReactNode;\n\n notify?: ReactNode;\n\n /** Main navigation menu (desktop & mobile) */\n mainNav?: ReactNode;\n /** Account summary component (desktop only) */\n accountSummary?: ReactNode;\n\n /** Left navigation component (mobile only) */\n leftNav?: ReactNode;\n /** QR code scanner component (mobile only) */\n scanQRCode?: ReactNode;\n }) => ReactNode;\n};\n\nexport const MainNavWidget: React.FC<PropsWithChildren<MainNavWidgetProps>> = (\n props,\n) => {\n const { children, classNames, ...rest } = props;\n const state = useMainNavScript(rest);\n return (\n <MainNav classNames={classNames} {...state}>\n {children}\n </MainNav>\n );\n};\n","export { AccountMenuWidget } from \"./components/accountMenu\";\nexport {\n MainNavWidget,\n type MainNavWidgetProps,\n} from \"./components/main/mainNav.widget\";\nexport { MainNavMobile } from \"./components/main/mainNav.ui.mobile\";\nexport { type MainNavItem } from \"./components/main/mainMenus/navItem\";\nexport {\n BottomNavWidget,\n BottomNav,\n type BottomNavProps,\n} from \"./components/bottomNav\";\nexport { AccountSummaryWidget } from \"./components/accountSummary\";\nexport { ChainMenuWidget, ChainMenu } from \"./components/chainMenu\";\nexport { SideNavbarWidget, SideBar } from \"./components/sidebar\";\nexport { CampaignPositionEnum } from \"./components/main/mainNav.script\";\n\nexport * from \"./components/subAccount\";\n\nexport * from \"./components/footer\";\nexport * from \"./components/maintenanceTips\";\n\nexport * from \"./components/restrictedInfo\";\n\nexport type { SideBarProps, SideMenuItem } from \"./components/sidebar\";\n\n// ----------------- Main layout component -----------------\nexport {\n Scaffold,\n type ScaffoldProps,\n useScaffoldContext,\n ScaffoldContext,\n} from \"./components/scaffold\";\n\nexport { MainLogo } from \"./components/main/mainLogo\";\nexport * from \"./components/languageSwitcher\";\nexport * from \"./components/scanQRCode\";\nexport * from \"./components/leftNav\";\n","import {\n Box,\n cn,\n Dialog,\n DialogBody,\n DialogContent,\n DialogHeader,\n DialogTitle,\n Divider,\n Flex,\n} from \"@kodiak-finance/orderly-ui\";\nimport { CloseIcon, InfoIcon } from \"../icons\";\nimport { MaintenanceTipInterface } from \"./script\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\n\nexport const MaintenanceTipsUI = (props: MaintenanceTipInterface) => {\n const { showTips, showDialog, tipsContent, closeTips, dialogContent } = props;\n const { t } = useTranslation();\n\n if (showDialog) {\n return (\n <Dialog open={true}>\n <DialogContent\n closable={false}\n onOpenAutoFocus={(event) => event.preventDefault()}\n className=\"oui-w-[320px] md:oui-w-auto\"\n >\n <DialogHeader>\n <DialogTitle>{t(\"maintenance.dialog.title\")}</DialogTitle>\n </DialogHeader>\n <Divider />\n <DialogBody className=\"oui-text-2xs md:oui-text-xs\">\n {dialogContent}\n </DialogBody>\n </DialogContent>\n </Dialog>\n );\n }\n if (!showTips) {\n return <></>;\n }\n return (\n <Flex\n className={cn(\n \"oui-bg-warning-darken/10 oui-text-warning-darken oui-text-2xs md:oui-text-sm oui-relative oui-gap-1\",\n \"oui-mx-1 md:oui-mx-0 md:oui-w-full oui-pl-2 md:oui-pl-4 oui-pr-9 md:oui-pr-[60px] oui-py-2 md:oui-py-3\",\n \"oui-leading-4\",\n \"oui-rounded-xl md:oui-rounded-none\",\n \"oui-min-h-[48px]\",\n \"oui-justify-start oui-items-start\",\n \"xl:oui-justify-center xl:oui-items-center xl:oui-px-4\"\n )}\n >\n <div className=\"oui-flex oui-items-start oui-justify-start oui-gap-1 \">\n <InfoIcon\n size={20}\n className=\"oui-flex-shrink-0 oui-w-4 md:oui-w-5 oui-h-4 md:oui-h-5 \"\n />\n <Box className=\"oui-font-semibold oui-leading-4\">{tipsContent}</Box>\n </div>\n <CloseIcon\n size={16}\n className=\"oui-absolute oui-right-2 md:oui-right-4 oui-text-secondary/[0.36] hover:oui-text-secondary/80 oui-cursor-pointer -oui-translate-y-2/4 oui-top-2/4\"\n onClick={closeTips}\n />\n </Flex>\n );\n};\n","import { useMaintenanceStatus } from \"@kodiak-finance/orderly-hooks\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport { format } from \"date-fns\";\nimport { UTCDateMini } from \"@date-fns/utc\";\nimport { getTimestamp } from \"@kodiak-finance/orderly-utils\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\n\nfunction getTimeString(timestamp: number) {\n const date = format(new UTCDateMini(timestamp), \"MMM dd\");\n const time = format(new UTCDateMini(timestamp), \"h:mm aa\");\n return `${time} (UTC) on ${date}`;\n}\n\nconst oneDay = 1000 * 60 * 60 * 24;\n\nexport interface MaintenanceTipInterface {\n tipsContent: string;\n showTips: boolean;\n closeTips: () => void;\n showDialog: boolean;\n dialogContent?: string;\n}\n\nexport const useMaintenanceScript = (): MaintenanceTipInterface => {\n const { t } = useTranslation();\n const [showTips, setShowTips] = useState(false);\n const [showDialog, setShowDialog] = useState(false);\n const { startTime, endTime, status, brokerName } = useMaintenanceStatus();\n const startDate = useMemo(() => {\n if (!startTime) {\n return \"-\";\n }\n return getTimeString(startTime);\n }, [startTime]);\n\n const endDate = useMemo(() => {\n if (!endTime) {\n return \"-\";\n }\n return getTimeString(endTime);\n }, [endTime]);\n\n const closeTips = () => {\n window.localStorage.setItem(`Maintenance_${startTime}`, \"1\");\n setShowTips(false);\n };\n\n useEffect(() => {\n console.log(\"-- start time\", {\n startTime,\n status,\n });\n if (status === 2) {\n setShowTips(false);\n setShowDialog(true);\n return;\n }\n setShowDialog(false);\n if (startTime) {\n if (startTime < getTimestamp() + oneDay) {\n // check localstorage\n if (!window.localStorage.getItem(`Maintenance_${startTime}`)) {\n setShowTips(true);\n }\n }\n }\n }, [startTime, status]);\n\n const tipsContent = t(\"maintenance.tips.description\", {\n brokerName,\n startDate,\n endDate,\n });\n\n const dialogContent = t(\"maintenance.dialog.description\", {\n brokerName,\n endDate,\n });\n\n return {\n tipsContent,\n showTips,\n closeTips,\n showDialog,\n dialogContent,\n };\n};\n","import { MaintenanceTipsUI } from \"./ui\";\nimport { useMaintenanceScript } from \"./script\";\n\nexport const MaintenanceTipsWidget = () => {\n const props = useMaintenanceScript();\n return <MaintenanceTipsUI {...props} />;\n};\n"]}