@moneko/core 2.0.0-beta.46 → 2.0.0-beta.47
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/router/index.d.ts +4 -6
- package/lib/router/index.js.map +1 -1
- package/package.json +1 -1
package/lib/router/index.d.ts
CHANGED
|
@@ -25,12 +25,10 @@ export interface ExampleModule {
|
|
|
25
25
|
hideSource?: boolean;
|
|
26
26
|
}
|
|
27
27
|
export type MyPkg = RouterProps & {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
icon?: string;
|
|
33
|
-
};
|
|
28
|
+
type: string;
|
|
29
|
+
title: string;
|
|
30
|
+
subtitle?: string;
|
|
31
|
+
icon?: string;
|
|
34
32
|
};
|
|
35
33
|
export declare const myPkgs: MyPkg[];
|
|
36
34
|
export declare const myDemoKv: Record<string, ExampleModule[]>;
|
package/lib/router/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/router/index.ts"],"sourcesContent":["import { pathToRegexp } from 'path-to-regexp';\nimport { createElement, lazy, type ReactNode, type ReactElement } from 'react';\nimport type { KeepAliveProps } from 'react-activation';\n\nexport interface RouterProps {\n key: string;\n alive?: KeepAliveProps | boolean;\n icon?: ReactElement;\n dynamicTitle?: string;\n i18n?: string | null;\n hideMenu?: boolean;\n hideTabs?: boolean;\n onlyLogin?: boolean;\n root?: boolean;\n path?: string;\n element?: ReactElement;\n fallback?: ReactElement;\n /** 可否关闭标签 */\n closable?: boolean;\n children?: RouterProps[];\n}\nexport const lazyImport = (filePath: string) => {\n return lazy(\n () =>\n import(\n /* webpackChunkName: \"[request]\" */\n '@/pages/' + filePath.replace(/^\\//, '')\n )\n );\n};\n\nexport interface ExampleModule {\n default: () => ReactNode;\n codeSoucre: string;\n title?: string;\n hideSource?: boolean;\n}\nexport type MyPkg = RouterProps & {\n basic: {\n type: string;\n title: string;\n subtitle?: string;\n icon?: string;\n };\n};\nexport const myPkgs: MyPkg[] = [];\nexport const myDemoKv: Record<string, ExampleModule[]> = {};\nif (APPTYPE === 'library') {\n const models = require.context('@pkg/', true, /README\\.mdx?$/);\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const Code = require('@/components/code').default;\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const Box = require('@/components/box').default;\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const Snapshot = require('@/components/snapshot').default;\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const pkgs = require('@pkg');\n\n models.keys()?.forEach((item: string) => {\n const key = item.substring(2).split('/').slice(0, -1).join('/');\n const { basic, default: child } = models(item);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n type Any = any;\n const heading = (p: Any, level: number) =>\n createElement(`h${level}`, {\n 'data-prefix': '# ',\n role: 'heading',\n 'aria-level': level,\n ...p,\n });\n\n myPkgs.push({\n key: key,\n path: key,\n element: createElement(child, {\n components: {\n h1: (p: Any) => heading(p, 1),\n h2: (p: Any) => heading(p, 2),\n h3: (p: Any) => heading(p, 3),\n h4: (p: Any) => heading(p, 4),\n h5: (p: Any) => heading(p, 5),\n h6: (p: Any) => heading(p, 6),\n code: (p: Any) => {\n const c = createElement('code', p);\n\n if (p.className) {\n const lang = p.className.replace('language-', '').replace(/ .*$/, '');\n\n return createElement(Code, { lang }, c);\n }\n return c;\n },\n Box,\n Code,\n Snapshot,\n ...pkgs,\n },\n }),\n ...basic,\n });\n });\n\n const allDemo = require.context('@pkg/', true, /\\/examples\\/(.+)\\.(t|j)sx$/);\n\n allDemo.keys()?.forEach((e: string) => {\n const k = e.substring(2),\n arr = k.split('/'),\n name = arr[0];\n\n if (!Array.isArray(myDemoKv[name])) {\n myDemoKv[name] = [];\n }\n allDemo(e).codeSoucre = require('@pkg/' + k + '?raw');\n const curr = { ...allDemo(e) };\n\n myDemoKv[name].push(\n Object.assign(curr, {\n title: curr.title || arr.pop()?.replace(/\\.(t|j)sx?$/, ''),\n })\n );\n });\n}\n\nlet list: RouterProps[] = [];\n\ntry {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n list = require('@/router').default;\n} catch (error) {\n // eslint-disable-next-line no-console\n console.info('自定义路由请在 router 目录下新建 index.ts, 类型: RouterProps[]', error);\n}\nconst predixKey = (path?: string, prev?: string) =>\n // eslint-disable-next-line no-undefined\n [prev === '*' && path !== '*' ? undefined : prev, path].filter(Boolean).join('/');\n\nconst models = require.context('@/pages/', true, /\\.(t|j)sx$/, 'lazy');\n\nconst pathToTree = (input: string[]) => {\n const root: RouterProps[] = [];\n\n for (let i = 0; i < input.length; i++) {\n const chain = input[i].split('/').slice(0, -1);\n let curr = root;\n\n for (let j = 0; j < chain.length; j++) {\n let pathRule = chain[j];\n\n if (pathRule === '') continue;\n if (pathRule === '.') pathRule = '*';\n const lastHierarchy = curr;\n\n // 遍历root是否已有该层级\n if (Array.isArray(curr)) {\n for (let k = 0; k < curr.length; k++) {\n if (curr[k].path === pathRule) {\n curr = curr[k].children as RouterProps[];\n break;\n }\n }\n }\n\n if (lastHierarchy === curr) {\n let key: string = j === chain.length - 1 ? input[i] : chain.slice(0, j + 1).join('/') + '/';\n\n // 截取最后一个 / 前面的数据\n key = key.substring(2, key.lastIndexOf('/'));\n\n const node: RouterProps = {\n key: key,\n path: pathRule,\n i18n: 'route-' + key,\n children: [],\n alive: false,\n element: createElement(lazyImport(key.replace(/:/g, '$'))),\n hideMenu: key.includes(':'),\n };\n\n // 文件,最后一个字符不是\"/“符号\n // if (j === chain.length - 1) delete node.children;\n if (Array.isArray(curr)) curr.push(node);\n curr = node.children as RouterProps[];\n }\n }\n }\n\n return root;\n};\nconst routers: RouterProps[] = pathToTree(\n models.keys().map((item: string) => item.replace(/\\$/g, ':'))\n);\n\nfunction merge(source: RouterProps[], child: RouterProps, prev?: string) {\n const _ = source.find((item) => item.path === child.path);\n\n if (!_) {\n source.push(child);\n } else {\n // 处理key\n _.key = predixKey(_.path, prev);\n if (typeof _.i18n === 'undefined') {\n _.i18n = 'route-' + _.key;\n }\n if (typeof _.alive === 'undefined') {\n _.alive = false;\n }\n if (typeof _.element === 'undefined' && child.element) {\n _.element = child.element;\n }\n if (typeof _.hideMenu === 'undefined') {\n _.hideMenu = _.path === '*' ? true : _.key.includes(':');\n }\n\n Object.assign(_, {\n ...child,\n ..._,\n });\n if (child.children) {\n if (!_.children && Array.isArray(child.children)) {\n _.children = child.children;\n }\n child.children?.forEach((childData) => {\n merge(_?.children as RouterProps[], childData, _?.key);\n });\n }\n }\n}\nconst findLogin = (rs: RouterProps[] = [], onlyLogin: boolean, prevKey?: string): RouterProps[] => {\n return rs\n .map((e) => {\n const _ = { ...e };\n\n if (typeof _.key === 'undefined') {\n _.key = predixKey(e.path, prevKey);\n }\n if (typeof _.i18n === 'undefined') {\n _.i18n = 'route-' + _.key;\n }\n if (typeof _.alive === 'undefined') {\n _.alive = false;\n }\n if (_.path === '*' && typeof _.hideMenu === 'undefined') {\n _.hideMenu = true;\n }\n if (Array.isArray(_.children)) {\n // eslint-disable-next-line no-undefined\n _.children = _.children.length ? findLogin(_.children, onlyLogin, _.key) : undefined;\n }\n if (!_.element) {\n _.element = createElement(lazyImport(_.key.replace(/:/g, '$')));\n }\n return !!_.onlyLogin === onlyLogin && !_.root ? null : _;\n })\n .filter(Boolean) as RouterProps[];\n};\nconst _router: RouterProps[] = [...list];\n\nrouters.forEach((item: RouterProps) => merge(_router, item));\n\n/* 登录前注册的路由 */\nexport const onlyLoginRouter = findLogin(_router, false);\n/* 登录后注册的路由 */\nexport const router = findLogin(_router, true);\n\nexport const matchUtil = (pathname: string) => {\n let p: RouterProps = { key: '' };\n const findPath = (rs: RouterProps[]): void => {\n rs.forEach((item) => {\n if (item.path && item.path !== '*' && item.key) {\n try {\n if (pathToRegexp(item.key).exec(pathname.substring(1) as string)) {\n p = item;\n return;\n }\n // eslint-disable-next-line no-empty\n } catch (error) {}\n }\n if (Array.isArray(item.children)) findPath(item.children);\n });\n };\n\n findPath(router);\n return p;\n};\n"],"names":["pathToRegexp","createElement","lazy","lazyImport","filePath","replace","myPkgs","myDemoKv","APPTYPE","models","allDemo","require","context","Code","default","Box","Snapshot","pkgs","keys","forEach","item","key","substring","split","slice","join","basic","child","heading","p","level","role","push","path","element","components","h1","h2","h3","h4","h5","h6","code","c","className","lang","e","arr","k","name","Array","isArray","codeSoucre","curr","Object","assign","title","pop","list","error","console","info","predixKey","prev","undefined","filter","Boolean","pathToTree","input","root","i","length","chain","j","pathRule","lastHierarchy","children","lastIndexOf","node","i18n","alive","hideMenu","includes","routers","map","merge","source","_","find","childData","findLogin","rs","onlyLogin","prevKey","_router","onlyLoginRouter","router","matchUtil","pathname","findPath","exec"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../src/router/index.ts"],"sourcesContent":["import { pathToRegexp } from 'path-to-regexp';\nimport { createElement, lazy, type ReactNode, type ReactElement } from 'react';\nimport type { KeepAliveProps } from 'react-activation';\n\nexport interface RouterProps {\n key: string;\n alive?: KeepAliveProps | boolean;\n icon?: ReactElement;\n dynamicTitle?: string;\n i18n?: string | null;\n hideMenu?: boolean;\n hideTabs?: boolean;\n onlyLogin?: boolean;\n root?: boolean;\n path?: string;\n element?: ReactElement;\n fallback?: ReactElement;\n /** 可否关闭标签 */\n closable?: boolean;\n children?: RouterProps[];\n}\nexport const lazyImport = (filePath: string) => {\n return lazy(\n () =>\n import(\n /* webpackChunkName: \"[request]\" */\n '@/pages/' + filePath.replace(/^\\//, '')\n )\n );\n};\n\nexport interface ExampleModule {\n default: () => ReactNode;\n codeSoucre: string;\n title?: string;\n hideSource?: boolean;\n}\nexport type MyPkg = RouterProps & {\n type: string;\n title: string;\n subtitle?: string;\n icon?: string;\n};\nexport const myPkgs: MyPkg[] = [];\nexport const myDemoKv: Record<string, ExampleModule[]> = {};\nif (APPTYPE === 'library') {\n const models = require.context('@pkg/', true, /README\\.mdx?$/);\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const Code = require('@/components/code').default;\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const Box = require('@/components/box').default;\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const Snapshot = require('@/components/snapshot').default;\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const pkgs = require('@pkg');\n\n models.keys()?.forEach((item: string) => {\n const key = item.substring(2).split('/').slice(0, -1).join('/');\n const { basic, default: child } = models(item);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n type Any = any;\n const heading = (p: Any, level: number) =>\n createElement(`h${level}`, {\n 'data-prefix': '# ',\n role: 'heading',\n 'aria-level': level,\n ...p,\n });\n\n myPkgs.push({\n key: key,\n path: key,\n element: createElement(child, {\n components: {\n h1: (p: Any) => heading(p, 1),\n h2: (p: Any) => heading(p, 2),\n h3: (p: Any) => heading(p, 3),\n h4: (p: Any) => heading(p, 4),\n h5: (p: Any) => heading(p, 5),\n h6: (p: Any) => heading(p, 6),\n code: (p: Any) => {\n const c = createElement('code', p);\n\n if (p.className) {\n const lang = p.className.replace('language-', '').replace(/ .*$/, '');\n\n return createElement(Code, { lang }, c);\n }\n return c;\n },\n Box,\n Code,\n Snapshot,\n ...pkgs,\n },\n }),\n ...basic,\n });\n });\n\n const allDemo = require.context('@pkg/', true, /\\/examples\\/(.+)\\.(t|j)sx$/);\n\n allDemo.keys()?.forEach((e: string) => {\n const k = e.substring(2),\n arr = k.split('/'),\n name = arr[0];\n\n if (!Array.isArray(myDemoKv[name])) {\n myDemoKv[name] = [];\n }\n allDemo(e).codeSoucre = require('@pkg/' + k + '?raw');\n const curr = { ...allDemo(e) };\n\n myDemoKv[name].push(\n Object.assign(curr, {\n title: curr.title || arr.pop()?.replace(/\\.(t|j)sx?$/, ''),\n })\n );\n });\n}\n\nlet list: RouterProps[] = [];\n\ntry {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n list = require('@/router').default;\n} catch (error) {\n // eslint-disable-next-line no-console\n console.info('自定义路由请在 router 目录下新建 index.ts, 类型: RouterProps[]', error);\n}\nconst predixKey = (path?: string, prev?: string) =>\n // eslint-disable-next-line no-undefined\n [prev === '*' && path !== '*' ? undefined : prev, path].filter(Boolean).join('/');\n\nconst models = require.context('@/pages/', true, /\\.(t|j)sx$/, 'lazy');\n\nconst pathToTree = (input: string[]) => {\n const root: RouterProps[] = [];\n\n for (let i = 0; i < input.length; i++) {\n const chain = input[i].split('/').slice(0, -1);\n let curr = root;\n\n for (let j = 0; j < chain.length; j++) {\n let pathRule = chain[j];\n\n if (pathRule === '') continue;\n if (pathRule === '.') pathRule = '*';\n const lastHierarchy = curr;\n\n // 遍历root是否已有该层级\n if (Array.isArray(curr)) {\n for (let k = 0; k < curr.length; k++) {\n if (curr[k].path === pathRule) {\n curr = curr[k].children as RouterProps[];\n break;\n }\n }\n }\n\n if (lastHierarchy === curr) {\n let key: string = j === chain.length - 1 ? input[i] : chain.slice(0, j + 1).join('/') + '/';\n\n // 截取最后一个 / 前面的数据\n key = key.substring(2, key.lastIndexOf('/'));\n\n const node: RouterProps = {\n key: key,\n path: pathRule,\n i18n: 'route-' + key,\n children: [],\n alive: false,\n element: createElement(lazyImport(key.replace(/:/g, '$'))),\n hideMenu: key.includes(':'),\n };\n\n // 文件,最后一个字符不是\"/“符号\n // if (j === chain.length - 1) delete node.children;\n if (Array.isArray(curr)) curr.push(node);\n curr = node.children as RouterProps[];\n }\n }\n }\n\n return root;\n};\nconst routers: RouterProps[] = pathToTree(\n models.keys().map((item: string) => item.replace(/\\$/g, ':'))\n);\n\nfunction merge(source: RouterProps[], child: RouterProps, prev?: string) {\n const _ = source.find((item) => item.path === child.path);\n\n if (!_) {\n source.push(child);\n } else {\n // 处理key\n _.key = predixKey(_.path, prev);\n if (typeof _.i18n === 'undefined') {\n _.i18n = 'route-' + _.key;\n }\n if (typeof _.alive === 'undefined') {\n _.alive = false;\n }\n if (typeof _.element === 'undefined' && child.element) {\n _.element = child.element;\n }\n if (typeof _.hideMenu === 'undefined') {\n _.hideMenu = _.path === '*' ? true : _.key.includes(':');\n }\n\n Object.assign(_, {\n ...child,\n ..._,\n });\n if (child.children) {\n if (!_.children && Array.isArray(child.children)) {\n _.children = child.children;\n }\n child.children?.forEach((childData) => {\n merge(_?.children as RouterProps[], childData, _?.key);\n });\n }\n }\n}\nconst findLogin = (rs: RouterProps[] = [], onlyLogin: boolean, prevKey?: string): RouterProps[] => {\n return rs\n .map((e) => {\n const _ = { ...e };\n\n if (typeof _.key === 'undefined') {\n _.key = predixKey(e.path, prevKey);\n }\n if (typeof _.i18n === 'undefined') {\n _.i18n = 'route-' + _.key;\n }\n if (typeof _.alive === 'undefined') {\n _.alive = false;\n }\n if (_.path === '*' && typeof _.hideMenu === 'undefined') {\n _.hideMenu = true;\n }\n if (Array.isArray(_.children)) {\n // eslint-disable-next-line no-undefined\n _.children = _.children.length ? findLogin(_.children, onlyLogin, _.key) : undefined;\n }\n if (!_.element) {\n _.element = createElement(lazyImport(_.key.replace(/:/g, '$')));\n }\n return !!_.onlyLogin === onlyLogin && !_.root ? null : _;\n })\n .filter(Boolean) as RouterProps[];\n};\nconst _router: RouterProps[] = [...list];\n\nrouters.forEach((item: RouterProps) => merge(_router, item));\n\n/* 登录前注册的路由 */\nexport const onlyLoginRouter = findLogin(_router, false);\n/* 登录后注册的路由 */\nexport const router = findLogin(_router, true);\n\nexport const matchUtil = (pathname: string) => {\n let p: RouterProps = { key: '' };\n const findPath = (rs: RouterProps[]): void => {\n rs.forEach((item) => {\n if (item.path && item.path !== '*' && item.key) {\n try {\n if (pathToRegexp(item.key).exec(pathname.substring(1) as string)) {\n p = item;\n return;\n }\n // eslint-disable-next-line no-empty\n } catch (error) {}\n }\n if (Array.isArray(item.children)) findPath(item.children);\n });\n };\n\n findPath(router);\n return p;\n};\n"],"names":["pathToRegexp","createElement","lazy","lazyImport","filePath","replace","myPkgs","myDemoKv","APPTYPE","models","allDemo","require","context","Code","default","Box","Snapshot","pkgs","keys","forEach","item","key","substring","split","slice","join","basic","child","heading","p","level","role","push","path","element","components","h1","h2","h3","h4","h5","h6","code","c","className","lang","e","arr","k","name","Array","isArray","codeSoucre","curr","Object","assign","title","pop","list","error","console","info","predixKey","prev","undefined","filter","Boolean","pathToTree","input","root","i","length","chain","j","pathRule","lastHierarchy","children","lastIndexOf","node","i18n","alive","hideMenu","includes","routers","map","merge","source","_","find","childData","findLogin","rs","onlyLogin","prevKey","_router","onlyLoginRouter","router","matchUtil","pathname","findPath","exec"],"mappings":"wpDAAA,OAASA,YAAY,KAAQ,gBAAiB,AAC9C,QAASC,aAAa,CAAEC,IAAI,KAA2C,OAAQ,AAoB/E,QAAO,IAAMC,WAAa,SAACC,SAAqB,CAC9C,OAAOF,KACL,kBACE,MAAM,CAEJ,WAAaE,SAASC,OAAO,CAAC,MAAO,MAG7C,CAAE,AAcF,QAAO,IAAMC,OAAkB,EAAE,AAAC,AAClC,QAAO,IAAMC,SAA4C,CAAC,CAAE,CAC5D,GAAIC,UAAY,UAAW,KAWzBC,aA+CAC,cAzDA,IAAMD,OAASE,QAAQC,OAAO,CAAC,QAAS,IAAI,CAAE,iBAE9C,IAAMC,KAAOF,QAAQ,qBAAqBG,OAAO,CAEjD,IAAMC,IAAMJ,QAAQ,oBAAoBG,OAAO,CAE/C,IAAME,SAAWL,QAAQ,yBAAyBG,OAAO,CAEzD,IAAMG,KAAON,QAAQ,OAErBF,EAAAA,aAAAA,OAAOS,IAAI,YAAXT,sBAAAA,KAAAA,EAAAA,aAAeU,QAAQ,SAACC,KAAiB,CACvC,IAAMC,IAAMD,KAAKE,SAAS,CAAC,GAAGC,KAAK,CAAC,KAAKC,KAAK,CAAC,EAAG,CAAC,GAAGC,IAAI,CAAC,KAC3D,IAAkChB,QAAAA,OAAOW,MAAjCM,MAA0BjB,QAA1BiB,MAAOZ,AAASa,MAAUlB,QAAnBK,QAIf,IAAMc,QAAU,SAACC,EAAQC,cACvB7B,cAAc,AAAC,IAAS,OAAN6B,OAAS,eACzB,cAAe,KACfC,KAAM,UACN,aAAcD,OACXD,KAGPvB,OAAO0B,IAAI,CAAC,eACVX,IAAKA,IACLY,KAAMZ,IACNa,QAASjC,cAAc0B,MAAO,CAC5BQ,WAAY,eACVC,GAAI,SAACP,UAAWD,QAAQC,EAAG,IAC3BQ,GAAI,SAACR,UAAWD,QAAQC,EAAG,IAC3BS,GAAI,SAACT,UAAWD,QAAQC,EAAG,IAC3BU,GAAI,SAACV,UAAWD,QAAQC,EAAG,IAC3BW,GAAI,SAACX,UAAWD,QAAQC,EAAG,IAC3BY,GAAI,SAACZ,UAAWD,QAAQC,EAAG,IAC3Ba,KAAM,SAACb,EAAW,CAChB,IAAMc,EAAI1C,cAAc,OAAQ4B,GAEhC,GAAIA,EAAEe,SAAS,CAAE,CACf,IAAMC,KAAOhB,EAAEe,SAAS,CAACvC,OAAO,CAAC,YAAa,IAAIA,OAAO,CAAC,OAAQ,IAElE,OAAOJ,cAAcY,KAAM,CAAEgC,KAAAA,IAAK,EAAGF,EACvC,CAAC,AACD,OAAOA,CACT,EACA5B,IAAAA,IACAF,KAAAA,KACAG,SAAAA,UACGC,KAEP,IACGS,OAEP,GAEA,IAAMhB,QAAUC,QAAQC,OAAO,CAAC,QAAS,IAAI,CAAE,6BAE/CF,EAAAA,cAAAA,QAAQQ,IAAI,YAAZR,uBAAAA,KAAAA,EAAAA,cAAgBS,QAAQ,SAAC2B,EAAc,KAaZC,SAZzB,IAAMC,EAAIF,EAAExB,SAAS,CAAC,GACpByB,IAAMC,EAAEzB,KAAK,CAAC,KACd0B,KAAOF,GAAG,CAAC,EAAE,CAEf,GAAI,CAACG,MAAMC,OAAO,CAAC5C,QAAQ,CAAC0C,KAAK,EAAG,CAClC1C,QAAQ,CAAC0C,KAAK,CAAG,EAAE,AACrB,CAAC,AACDvC,QAAQoC,GAAGM,UAAU,CAAGzC,QAAQ,QAAUqC,EAAI,QAC9C,IAAMK,KAAO,iBAAK3C,QAAQoC,IAE1BvC,QAAQ,CAAC0C,KAAK,CAACjB,IAAI,CACjBsB,OAAOC,MAAM,CAACF,KAAM,CAClBG,MAAOH,KAAKG,KAAK,GAAIT,CAAAA,SAAAA,IAAIU,GAAG,YAAPV,kBAAAA,KAAAA,EAAAA,SAAW1C,QAAQ,cAAe,IACzD,GAEJ,EACF,CAAC,AAED,IAAIqD,KAAsB,EAAE,CAE5B,GAAI,CAEFA,KAAO/C,QAAQ,YAAYG,OAAO,AACpC,CAAE,MAAO6C,MAAO,CAEdC,QAAQC,IAAI,CAAC,mDAAoDF,MACnE,CACA,IAAMG,UAAY,SAAC7B,KAAe8B,YAEhC,CAACA,OAAS,KAAO9B,OAAS,IAAM+B,UAAYD,IAAI,CAAE9B,KAAK,CAACgC,MAAM,CAACC,SAASzC,IAAI,CAAC,MAE/E,IAAMhB,QAASE,QAAQC,OAAO,CAAC,WAAY,IAAI,CAAE,aAAc,QAE/D,IAAMuD,WAAa,SAACC,MAAoB,CACtC,IAAMC,KAAsB,EAAE,CAE9B,IAAK,IAAIC,EAAI,EAAGA,EAAIF,MAAMG,MAAM,CAAED,IAAK,CACrC,IAAME,MAAQJ,KAAK,CAACE,EAAE,CAAC/C,KAAK,CAAC,KAAKC,KAAK,CAAC,EAAG,CAAC,GAC5C,IAAI6B,KAAOgB,KAEX,IAAK,IAAII,EAAI,EAAGA,EAAID,MAAMD,MAAM,CAAEE,IAAK,CACrC,IAAIC,SAAWF,KAAK,CAACC,EAAE,CAEvB,GAAIC,WAAa,GAAI,QAAS,CAC9B,GAAIA,WAAa,IAAKA,SAAW,GAAI,CACrC,IAAMC,cAAgBtB,KAGtB,GAAIH,MAAMC,OAAO,CAACE,MAAO,CACvB,IAAK,IAAIL,EAAI,EAAGA,EAAIK,KAAKkB,MAAM,CAAEvB,IAAK,CACpC,GAAIK,IAAI,CAACL,EAAE,CAACf,IAAI,GAAKyC,SAAU,CAC7BrB,KAAOA,IAAI,CAACL,EAAE,CAAC4B,QAAQ,CACvB,KAAM,AACR,CAAC,AACH,CACF,CAAC,AAED,GAAID,gBAAkBtB,KAAM,CAC1B,IAAIhC,IAAcoD,IAAMD,MAAMD,MAAM,CAAG,EAAIH,KAAK,CAACE,EAAE,CAAGE,MAAMhD,KAAK,CAAC,EAAGiD,EAAI,GAAGhD,IAAI,CAAC,KAAO,GAAG,CAG3FJ,IAAMA,IAAIC,SAAS,CAAC,EAAGD,IAAIwD,WAAW,CAAC,MAEvC,IAAMC,KAAoB,CACxBzD,IAAKA,IACLY,KAAMyC,SACNK,KAAM,SAAW1D,IACjBuD,SAAU,EAAE,CACZI,MAAO,KAAK,CACZ9C,QAASjC,cAAcE,WAAWkB,IAAIhB,OAAO,CAAC,KAAM,OACpD4E,SAAU5D,IAAI6D,QAAQ,CAAC,IACzB,EAIA,GAAIhC,MAAMC,OAAO,CAACE,MAAOA,KAAKrB,IAAI,CAAC8C,KAAM,CACzCzB,KAAOyB,KAAKF,QAAQ,AACtB,CAAC,AACH,CACF,CAEA,OAAOP,IACT,EACA,IAAMc,QAAyBhB,WAC7B1D,QAAOS,IAAI,GAAGkE,GAAG,CAAC,SAAChE,aAAiBA,KAAKf,OAAO,CAAC,MAAO,QAG1D,SAASgF,MAAMC,MAAqB,CAAE3D,KAAkB,CAAEoC,IAAa,CAAE,CACvE,IAAMwB,EAAID,OAAOE,IAAI,CAAC,SAACpE,aAASA,KAAKa,IAAI,GAAKN,MAAMM,IAAI,GAExD,GAAI,CAACsD,EAAG,CACND,OAAOtD,IAAI,CAACL,MACd,KAAO,CAEL4D,EAAElE,GAAG,CAAGyC,UAAUyB,EAAEtD,IAAI,CAAE8B,MAC1B,GAAI,OAAOwB,EAAER,IAAI,GAAK,YAAa,CACjCQ,EAAER,IAAI,CAAG,SAAWQ,EAAElE,GAAG,AAC3B,CAAC,AACD,GAAI,OAAOkE,EAAEP,KAAK,GAAK,YAAa,CAClCO,EAAEP,KAAK,CAAG,KAAK,AACjB,CAAC,AACD,GAAI,OAAOO,EAAErD,OAAO,GAAK,aAAeP,MAAMO,OAAO,CAAE,CACrDqD,EAAErD,OAAO,CAAGP,MAAMO,OAAO,AAC3B,CAAC,AACD,GAAI,OAAOqD,EAAEN,QAAQ,GAAK,YAAa,CACrCM,EAAEN,QAAQ,CAAGM,EAAEtD,IAAI,GAAK,IAAM,IAAI,CAAGsD,EAAElE,GAAG,CAAC6D,QAAQ,CAAC,IAAI,AAC1D,CAAC,AAED5B,OAAOC,MAAM,CAACgC,EAAG,iBACZ5D,MACA4D,IAEL,GAAI5D,MAAMiD,QAAQ,CAAE,KAIlBjD,gBAHA,GAAI,CAAC4D,EAAEX,QAAQ,EAAI1B,MAAMC,OAAO,CAACxB,MAAMiD,QAAQ,EAAG,CAChDW,EAAEX,QAAQ,CAAGjD,MAAMiD,QAAQ,AAC7B,CAAC,AACDjD,CAAAA,gBAAAA,MAAMiD,QAAQ,UAAdjD,yBAAAA,KAAAA,EAAAA,gBAAgBR,QAAQ,SAACsE,UAAc,CACrCJ,MAAME,UAAAA,WAAAA,KAAAA,EAAAA,EAAGX,QAAQ,CAAmBa,UAAWF,UAAAA,WAAAA,KAAAA,EAAAA,EAAGlE,GAAG,CACvD,EACF,CAAC,AACH,CAAC,AACH,CACA,IAAMqE,UAAY,UAAiF,KAAhFC,0DAAoB,EAAE,CAAEC,iDAAoBC,+CAC7D,OAAOF,GACJP,GAAG,CAAC,SAACtC,EAAM,CACV,IAAMyC,EAAI,iBAAKzC,GAEf,GAAI,OAAOyC,EAAElE,GAAG,GAAK,YAAa,CAChCkE,EAAElE,GAAG,CAAGyC,UAAUhB,EAAEb,IAAI,CAAE4D,QAC5B,CAAC,AACD,GAAI,OAAON,EAAER,IAAI,GAAK,YAAa,CACjCQ,EAAER,IAAI,CAAG,SAAWQ,EAAElE,GAAG,AAC3B,CAAC,AACD,GAAI,OAAOkE,EAAEP,KAAK,GAAK,YAAa,CAClCO,EAAEP,KAAK,CAAG,KAAK,AACjB,CAAC,AACD,GAAIO,EAAEtD,IAAI,GAAK,KAAO,OAAOsD,EAAEN,QAAQ,GAAK,YAAa,CACvDM,EAAEN,QAAQ,CAAG,IAAI,AACnB,CAAC,AACD,GAAI/B,MAAMC,OAAO,CAACoC,EAAEX,QAAQ,EAAG,CAE7BW,EAAEX,QAAQ,CAAGW,EAAEX,QAAQ,CAACL,MAAM,CAAGmB,UAAUH,EAAEX,QAAQ,CAAEgB,UAAWL,EAAElE,GAAG,EAAI2C,SAAS,AACtF,CAAC,AACD,GAAI,CAACuB,EAAErD,OAAO,CAAE,CACdqD,EAAErD,OAAO,CAAGjC,cAAcE,WAAWoF,EAAElE,GAAG,CAAChB,OAAO,CAAC,KAAM,MAC3D,CAAC,AACD,MAAO,CAAC,CAACkF,EAAEK,SAAS,GAAKA,WAAa,CAACL,EAAElB,IAAI,CAAG,IAAI,CAAGkB,CAAC,AAC1D,GACCtB,MAAM,CAACC,QACZ,EACA,IAAM4B,QAA0B,mBAAGpC,MAEnCyB,QAAQhE,OAAO,CAAC,SAACC,aAAsBiE,MAAMS,QAAS1E,OAGtD,QAAO,IAAM2E,gBAAkBL,UAAUI,QAAS,KAAK,CAAE,AAEzD,QAAO,IAAME,OAASN,UAAUI,QAAS,IAAI,CAAE,AAE/C,QAAO,IAAMG,UAAY,SAACC,SAAqB,CAC7C,IAAIrE,EAAiB,CAAER,IAAK,EAAG,EAC/B,IAAM8E,SAAW,SAACR,GAA4B,CAC5CA,GAAGxE,OAAO,CAAC,SAACC,KAAS,CACnB,GAAIA,KAAKa,IAAI,EAAIb,KAAKa,IAAI,GAAK,KAAOb,KAAKC,GAAG,CAAE,CAC9C,GAAI,CACF,GAAIrB,aAAaoB,KAAKC,GAAG,EAAE+E,IAAI,CAACF,SAAS5E,SAAS,CAAC,IAAe,CAChEO,EAAIT,KACJ,MACF,CAAC,AAEH,CAAE,MAAOuC,MAAO,CAAC,CACnB,CAAC,AACD,GAAIT,MAAMC,OAAO,CAAC/B,KAAKwD,QAAQ,EAAGuB,SAAS/E,KAAKwD,QAAQ,CAAE,AAC5D,EACF,EAEAuB,SAASH,QACT,OAAOnE,CACT,CAAE"}
|