@xylabs/threads 4.7.1 → 4.7.3

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.
Files changed (235) hide show
  1. package/dist/browser/master/implementation.browser.mjs +89 -0
  2. package/dist/browser/master/implementation.browser.mjs.map +1 -0
  3. package/dist/browser/master/index-browser.mjs +988 -0
  4. package/dist/browser/master/index-browser.mjs.map +1 -0
  5. package/dist/browser/worker/worker.browser.mjs +291 -0
  6. package/dist/browser/worker/worker.browser.mjs.map +1 -0
  7. package/dist/neutral/index.mjs +1022 -0
  8. package/dist/neutral/index.mjs.map +1 -0
  9. package/dist/neutral/master/implementation.mjs +264 -0
  10. package/dist/neutral/master/implementation.mjs.map +1 -0
  11. package/dist/neutral/master/pool.mjs +579 -0
  12. package/dist/neutral/master/pool.mjs.map +1 -0
  13. package/dist/neutral/master/register.mjs +162 -0
  14. package/dist/neutral/master/register.mjs.map +1 -0
  15. package/dist/neutral/master/spawn.mjs +412 -0
  16. package/dist/neutral/master/spawn.mjs.map +1 -0
  17. package/dist/neutral/master/thread.mjs +29 -0
  18. package/dist/neutral/master/thread.mjs.map +1 -0
  19. package/dist/neutral/observable-promise.mjs +132 -0
  20. package/dist/neutral/observable-promise.mjs.map +1 -0
  21. package/dist/neutral/observable.mjs +31 -0
  22. package/dist/neutral/observable.mjs.map +1 -0
  23. package/dist/node/master/implementation.node.mjs +154 -0
  24. package/dist/node/master/implementation.node.mjs.map +1 -0
  25. package/dist/node/master/index-node.mjs +988 -0
  26. package/dist/node/master/index-node.mjs.map +1 -0
  27. package/dist/node/worker/worker.node.mjs +304 -0
  28. package/dist/node/worker/worker.node.mjs.map +1 -0
  29. package/dist/{common.d.ts → types/common.d.ts} +5 -1
  30. package/dist/types/common.d.ts.map +1 -0
  31. package/dist/types/index.d.ts +9 -0
  32. package/dist/types/index.d.ts.map +1 -0
  33. package/dist/{master → types/master}/get-bundle-url.browser.d.ts +1 -0
  34. package/dist/types/master/get-bundle-url.browser.d.ts.map +1 -0
  35. package/dist/{master → types/master}/implementation.browser.d.ts +2 -1
  36. package/dist/types/master/implementation.browser.d.ts.map +1 -0
  37. package/dist/{master → types/master}/implementation.d.ts +4 -1
  38. package/dist/types/master/implementation.d.ts.map +1 -0
  39. package/dist/{master → types/master}/implementation.node.d.ts +2 -1
  40. package/dist/types/master/implementation.node.d.ts.map +1 -0
  41. package/dist/types/master/index-browser.d.ts +13 -0
  42. package/dist/types/master/index-browser.d.ts.map +1 -0
  43. package/dist/types/master/index-node.d.ts +13 -0
  44. package/dist/types/master/index-node.d.ts.map +1 -0
  45. package/dist/{master → types/master}/invocation-proxy.d.ts +2 -1
  46. package/dist/types/master/invocation-proxy.d.ts.map +1 -0
  47. package/dist/{master → types/master}/pool-types.d.ts +16 -1
  48. package/dist/types/master/pool-types.d.ts.map +1 -0
  49. package/dist/types/master/pool.d.ts +93 -0
  50. package/dist/types/master/pool.d.ts.map +1 -0
  51. package/dist/types/master/register.d.ts +2 -0
  52. package/dist/types/master/register.d.ts.map +1 -0
  53. package/dist/{master → types/master}/spawn.d.ts +12 -2
  54. package/dist/types/master/spawn.d.ts.map +1 -0
  55. package/dist/types/master/thread.d.ts +13 -0
  56. package/dist/types/master/thread.d.ts.map +1 -0
  57. package/dist/{observable-promise.d.ts → types/observable-promise.d.ts} +14 -0
  58. package/dist/types/observable-promise.d.ts.map +1 -0
  59. package/dist/types/observable.d.ts +21 -0
  60. package/dist/types/observable.d.ts.map +1 -0
  61. package/dist/{ponyfills.d.ts → types/ponyfills.d.ts} +1 -0
  62. package/dist/types/ponyfills.d.ts.map +1 -0
  63. package/dist/types/promise.d.ts +6 -0
  64. package/dist/types/promise.d.ts.map +1 -0
  65. package/dist/{serializers.d.ts → types/serializers.d.ts} +1 -0
  66. package/dist/types/serializers.d.ts.map +1 -0
  67. package/dist/{symbols.d.ts → types/symbols.d.ts} +1 -0
  68. package/dist/types/symbols.d.ts.map +1 -0
  69. package/{src/transferable.ts → dist/types/transferable.d.ts} +8 -33
  70. package/dist/types/transferable.d.ts.map +1 -0
  71. package/dist/types/{master.d.ts → types/master.d.ts} +17 -3
  72. package/dist/types/types/master.d.ts.map +1 -0
  73. package/dist/types/{messages.d.ts → types/messages.d.ts} +1 -0
  74. package/dist/types/types/messages.d.ts.map +1 -0
  75. package/dist/types/{worker.d.ts → types/worker.d.ts} +1 -0
  76. package/dist/types/types/worker.d.ts.map +1 -0
  77. package/dist/types/worker/WorkerGlobalScope.d.ts +6 -0
  78. package/dist/types/worker/WorkerGlobalScope.d.ts.map +1 -0
  79. package/dist/types/worker/expose.d.ts +4 -0
  80. package/dist/types/worker/expose.d.ts.map +1 -0
  81. package/dist/types/worker/worker.browser.d.ts +14 -0
  82. package/dist/types/worker/worker.browser.d.ts.map +1 -0
  83. package/dist/types/worker/worker.node.d.ts +25 -0
  84. package/dist/types/worker/worker.node.d.ts.map +1 -0
  85. package/package.json +55 -92
  86. package/dist/common.js +0 -16
  87. package/dist/esm/common.js +0 -16
  88. package/dist/esm/index.js +0 -26
  89. package/dist/esm/master/get-bundle-url.browser.js +0 -25
  90. package/dist/esm/master/implementation.browser.js +0 -65
  91. package/dist/esm/master/implementation.js +0 -43
  92. package/dist/esm/master/implementation.node.js +0 -205
  93. package/dist/esm/master/index.js +0 -14
  94. package/dist/esm/master/invocation-proxy.js +0 -121
  95. package/dist/esm/master/pool-types.js +0 -14
  96. package/dist/esm/master/pool.js +0 -262
  97. package/dist/esm/master/register.js +0 -11
  98. package/dist/esm/master/spawn.js +0 -114
  99. package/dist/esm/master/thread.js +0 -18
  100. package/dist/esm/observable-promise.js +0 -132
  101. package/dist/esm/observable.js +0 -33
  102. package/dist/esm/ponyfills.js +0 -20
  103. package/dist/esm/promise.js +0 -23
  104. package/dist/esm/serializers.js +0 -41
  105. package/dist/esm/symbols.js +0 -8
  106. package/dist/esm/transferable.js +0 -25
  107. package/dist/esm/types/master.js +0 -9
  108. package/dist/esm/types/messages.js +0 -16
  109. package/dist/esm/types/worker.js +0 -2
  110. package/dist/esm/worker/bundle-entry.js +0 -26
  111. package/dist/esm/worker/implementation.browser.js +0 -24
  112. package/dist/esm/worker/implementation.js +0 -19
  113. package/dist/esm/worker/implementation.tiny-worker.js +0 -37
  114. package/dist/esm/worker/implementation.worker_threads.js +0 -41
  115. package/dist/esm/worker/index.js +0 -174
  116. package/dist/esm/worker_threads.js +0 -13
  117. package/dist/index.d.ts +0 -7
  118. package/dist/index.js +0 -26
  119. package/dist/master/get-bundle-url.browser.js +0 -25
  120. package/dist/master/implementation.browser.js +0 -65
  121. package/dist/master/implementation.js +0 -43
  122. package/dist/master/implementation.node.js +0 -205
  123. package/dist/master/index.d.ts +0 -10
  124. package/dist/master/index.js +0 -14
  125. package/dist/master/invocation-proxy.js +0 -121
  126. package/dist/master/pool-types.js +0 -14
  127. package/dist/master/pool.d.ts +0 -50
  128. package/dist/master/pool.js +0 -262
  129. package/dist/master/register.d.ts +0 -1
  130. package/dist/master/register.js +0 -11
  131. package/dist/master/spawn.js +0 -114
  132. package/dist/master/thread.d.ts +0 -8
  133. package/dist/master/thread.js +0 -18
  134. package/dist/observable-promise.js +0 -132
  135. package/dist/observable.d.ts +0 -11
  136. package/dist/observable.js +0 -33
  137. package/dist/ponyfills.js +0 -20
  138. package/dist/promise.d.ts +0 -1
  139. package/dist/promise.js +0 -23
  140. package/dist/serializers.js +0 -41
  141. package/dist/symbols.js +0 -8
  142. package/dist/transferable.d.ts +0 -9
  143. package/dist/transferable.js +0 -25
  144. package/dist/types/master.js +0 -9
  145. package/dist/types/messages.js +0 -16
  146. package/dist/types/worker.js +0 -2
  147. package/dist/worker/bundle-entry.d.ts +0 -1
  148. package/dist/worker/bundle-entry.js +0 -26
  149. package/dist/worker/implementation.browser.d.ts +0 -6
  150. package/dist/worker/implementation.browser.js +0 -24
  151. package/dist/worker/implementation.d.ts +0 -3
  152. package/dist/worker/implementation.js +0 -19
  153. package/dist/worker/implementation.tiny-worker.d.ts +0 -6
  154. package/dist/worker/implementation.tiny-worker.js +0 -37
  155. package/dist/worker/implementation.worker_threads.d.ts +0 -8
  156. package/dist/worker/implementation.worker_threads.js +0 -41
  157. package/dist/worker/index.d.ts +0 -5
  158. package/dist/worker/index.js +0 -174
  159. package/dist/worker_threads.d.ts +0 -8
  160. package/dist/worker_threads.js +0 -13
  161. package/eslint.config.mjs +0 -35
  162. package/index.mjs +0 -10
  163. package/observable.d.ts +0 -2
  164. package/observable.js +0 -2
  165. package/observable.mjs +0 -4
  166. package/register.d.ts +0 -2
  167. package/register.js +0 -2
  168. package/register.mjs +0 -1
  169. package/rollup.config.js +0 -16
  170. package/src/common.ts +0 -19
  171. package/src/index.ts +0 -10
  172. package/src/master/get-bundle-url.browser.ts +0 -31
  173. package/src/master/implementation.browser.ts +0 -82
  174. package/src/master/implementation.node.ts +0 -285
  175. package/src/master/implementation.ts +0 -21
  176. package/src/master/index.ts +0 -19
  177. package/src/master/invocation-proxy.ts +0 -151
  178. package/src/master/pool-types.ts +0 -83
  179. package/src/master/pool.ts +0 -399
  180. package/src/master/register.ts +0 -10
  181. package/src/master/spawn.ts +0 -172
  182. package/src/master/thread.ts +0 -29
  183. package/src/observable-promise.ts +0 -183
  184. package/src/observable.ts +0 -44
  185. package/src/ponyfills.ts +0 -31
  186. package/src/promise.ts +0 -26
  187. package/src/serializers.ts +0 -68
  188. package/src/symbols.ts +0 -5
  189. package/src/types/master.ts +0 -132
  190. package/src/types/messages.ts +0 -72
  191. package/src/types/worker.ts +0 -14
  192. package/src/worker/bundle-entry.ts +0 -10
  193. package/src/worker/implementation.browser.ts +0 -40
  194. package/src/worker/implementation.tiny-worker.ts +0 -55
  195. package/src/worker/implementation.ts +0 -23
  196. package/src/worker/implementation.worker_threads.ts +0 -50
  197. package/src/worker/index.ts +0 -230
  198. package/src/worker_threads.ts +0 -27
  199. package/test/lib/index.ts +0 -1
  200. package/test/lib/serialization.ts +0 -38
  201. package/test/observable-promise.test.ts +0 -205
  202. package/test/observable.test.ts +0 -87
  203. package/test/pool.test.ts +0 -183
  204. package/test/serialization.test.ts +0 -23
  205. package/test/spawn.chromium.mocha.ts +0 -53
  206. package/test/spawn.test.ts +0 -87
  207. package/test/streaming.test.ts +0 -29
  208. package/test/transferables.test.ts +0 -71
  209. package/test/workers/arraybuffer-xor.ts +0 -10
  210. package/test/workers/count-to-five.ts +0 -12
  211. package/test/workers/counter.ts +0 -19
  212. package/test/workers/faulty-function.ts +0 -5
  213. package/test/workers/hello-world.ts +0 -5
  214. package/test/workers/increment.ts +0 -8
  215. package/test/workers/minmax.ts +0 -25
  216. package/test/workers/serialization.ts +0 -13
  217. package/test/workers/top-level-throw.ts +0 -1
  218. package/test-tooling/rollup/app.js +0 -21
  219. package/test-tooling/rollup/rollup.config.ts +0 -14
  220. package/test-tooling/rollup/worker.js +0 -7
  221. package/test-tooling/tsconfig/minimal.ts +0 -12
  222. package/test-tooling/webpack/addition-worker.ts +0 -9
  223. package/test-tooling/webpack/app-with-inlined-worker.ts +0 -28
  224. package/test-tooling/webpack/app.ts +0 -61
  225. package/test-tooling/webpack/pool-worker.ts +0 -5
  226. package/test-tooling/webpack/raw-loader.d.ts +0 -4
  227. package/test-tooling/webpack/webpack.chromium.mocha.ts +0 -21
  228. package/test-tooling/webpack/webpack.node.config.js +0 -29
  229. package/test-tooling/webpack/webpack.web.config.js +0 -28
  230. package/types/is-observable.d.ts +0 -7
  231. package/types/tiny-worker.d.ts +0 -4
  232. package/types/webworker.d.ts +0 -9
  233. package/worker.d.ts +0 -2
  234. package/worker.js +0 -2
  235. package/worker.mjs +0 -6
@@ -0,0 +1,89 @@
1
+ // src/master/get-bundle-url.browser.ts
2
+ var bundleURL;
3
+ function getBundleURLCached() {
4
+ if (!bundleURL) {
5
+ bundleURL = getBundleURL();
6
+ }
7
+ return bundleURL;
8
+ }
9
+ function getBundleURL() {
10
+ try {
11
+ throw new Error("getBundleURL failed");
12
+ } catch (ex) {
13
+ const err = ex;
14
+ const matches = ("" + err.stack).match(/(https?|file|ftp|chrome-extension|moz-extension):\/\/[^\n)]+/g);
15
+ if (matches) {
16
+ return getBaseURL(matches[0]);
17
+ }
18
+ }
19
+ return "/";
20
+ }
21
+ function getBaseURL(url) {
22
+ return ("" + url).replace(/^((?:https?|file|ftp|chrome-extension|moz-extension):\/\/.+)?\/[^/]+(?:\?.*)?$/, "$1") + "/";
23
+ }
24
+
25
+ // src/master/implementation.browser.ts
26
+ var defaultPoolSize = typeof navigator !== "undefined" && navigator.hardwareConcurrency ? navigator.hardwareConcurrency : 4;
27
+ var isAbsoluteURL = (value) => /^[A-Za-z][\d+.A-Za-z\-]*:/.test(value);
28
+ function createSourceBlobURL(code) {
29
+ const blob = new Blob([code], { type: "application/javascript" });
30
+ return URL.createObjectURL(blob);
31
+ }
32
+ function selectWorkerImplementation() {
33
+ if (typeof Worker === "undefined") {
34
+ return class NoWebWorker {
35
+ constructor() {
36
+ throw new Error(
37
+ "No web worker implementation available. You might have tried to spawn a worker within a worker in a browser that doesn't support workers in workers."
38
+ );
39
+ }
40
+ };
41
+ }
42
+ class WebWorker extends Worker {
43
+ constructor(url, options) {
44
+ if (typeof url === "string" && options && options._baseURL) {
45
+ url = new URL(url, options._baseURL);
46
+ } else if (typeof url === "string" && !isAbsoluteURL(url) && /^file:\/\//i.test(getBundleURLCached())) {
47
+ url = new URL(url, getBundleURLCached().replace(/\/[^/]+$/, "/"));
48
+ if (options?.CORSWorkaround ?? true) {
49
+ url = createSourceBlobURL(`importScripts(${JSON.stringify(url)});`);
50
+ }
51
+ }
52
+ if (typeof url === "string" && isAbsoluteURL(url) && (options?.CORSWorkaround ?? true)) {
53
+ url = createSourceBlobURL(`importScripts(${JSON.stringify(url)});`);
54
+ }
55
+ super(url, options);
56
+ }
57
+ }
58
+ class BlobWorker extends WebWorker {
59
+ constructor(blob, options) {
60
+ const url = globalThis.URL.createObjectURL(blob);
61
+ super(url, options);
62
+ }
63
+ static fromText(source, options) {
64
+ const blob = new globalThis.Blob([source], { type: "text/javascript" });
65
+ return new BlobWorker(blob, options);
66
+ }
67
+ }
68
+ return {
69
+ blob: BlobWorker,
70
+ default: WebWorker
71
+ };
72
+ }
73
+ var implementation;
74
+ function getWorkerImplementation() {
75
+ if (!implementation) {
76
+ implementation = selectWorkerImplementation();
77
+ }
78
+ return implementation;
79
+ }
80
+ function isWorkerRuntime() {
81
+ const isWindowContext = typeof globalThis !== "undefined" && typeof Window !== "undefined" && globalThis instanceof Window;
82
+ return typeof globalThis !== "undefined" && self["postMessage"] && !isWindowContext ? true : false;
83
+ }
84
+ export {
85
+ defaultPoolSize,
86
+ getWorkerImplementation,
87
+ isWorkerRuntime
88
+ };
89
+ //# sourceMappingURL=implementation.browser.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/master/get-bundle-url.browser.ts","../../../src/master/implementation.browser.ts"],"sourcesContent":["// Source: <https://github.com/parcel-bundler/parcel/blob/master/packages/core/parcel-bundler/src/builtins/bundle-url.js>\n\nlet bundleURL: string | undefined\n\nfunction getBundleURLCached(): string {\n if (!bundleURL) {\n bundleURL = getBundleURL()\n }\n\n return bundleURL\n}\n\nfunction getBundleURL(): string {\n // Attempt to find the URL of the current script and use that as the base URL\n try {\n throw new Error('getBundleURL failed')\n } catch (ex) {\n const err = ex as Error\n const matches = ('' + err.stack).match(/(https?|file|ftp|chrome-extension|moz-extension):\\/\\/[^\\n)]+/g)\n if (matches) {\n return getBaseURL(matches[0])\n }\n }\n\n return '/'\n}\n\nfunction getBaseURL(url: string): string {\n return ('' + url).replace(/^((?:https?|file|ftp|chrome-extension|moz-extension):\\/\\/.+)?\\/[^/]+(?:\\?.*)?$/, '$1') + '/'\n}\n\nexport { getBundleURLCached as getBundleURL }\n","/* eslint-disable @stylistic/max-len */\n/* eslint-disable import-x/no-internal-modules */\n// tslint:disable max-classes-per-file\n\nimport type { ImplementationExport, ThreadsWorkerOptions } from '../types/master.ts'\nimport { getBundleURL } from './get-bundle-url.browser.ts'\n\nexport const defaultPoolSize = typeof navigator !== 'undefined' && navigator.hardwareConcurrency ? navigator.hardwareConcurrency : 4\n\nconst isAbsoluteURL = (value: string) => /^[A-Za-z][\\d+.A-Za-z\\-]*:/.test(value)\n\nfunction createSourceBlobURL(code: string): string {\n const blob = new Blob([code], { type: 'application/javascript' })\n return URL.createObjectURL(blob)\n}\n\nfunction selectWorkerImplementation(): ImplementationExport {\n if (typeof Worker === 'undefined') {\n // Might happen on Safari, for instance\n // The idea is to only fail if the constructor is actually used\n return class NoWebWorker {\n constructor() {\n throw new Error(\n \"No web worker implementation available. You might have tried to spawn a worker within a worker in a browser that doesn't support workers in workers.\",\n )\n }\n } as unknown as ImplementationExport\n }\n\n class WebWorker extends Worker {\n constructor(url: string | URL, options?: ThreadsWorkerOptions) {\n if (typeof url === 'string' && options && options._baseURL) {\n url = new URL(url, options._baseURL)\n } else if (typeof url === 'string' && !isAbsoluteURL(url) && /^file:\\/\\//i.test(getBundleURL())) {\n url = new URL(url, getBundleURL().replace(/\\/[^/]+$/, '/'))\n if (options?.CORSWorkaround ?? true) {\n url = createSourceBlobURL(`importScripts(${JSON.stringify(url)});`)\n }\n }\n if (\n typeof url === 'string'\n && isAbsoluteURL(url) // Create source code blob loading JS file via `importScripts()`\n // to circumvent worker CORS restrictions\n && (options?.CORSWorkaround ?? true)\n ) {\n url = createSourceBlobURL(`importScripts(${JSON.stringify(url)});`)\n }\n super(url, options)\n }\n }\n\n class BlobWorker extends WebWorker {\n constructor(blob: Blob, options?: ThreadsWorkerOptions) {\n const url = globalThis.URL.createObjectURL(blob)\n super(url, options)\n }\n\n static fromText(source: string, options?: ThreadsWorkerOptions): WebWorker {\n const blob = new globalThis.Blob([source], { type: 'text/javascript' })\n return new BlobWorker(blob, options)\n }\n }\n\n return {\n blob: BlobWorker,\n default: WebWorker,\n }\n}\n\nlet implementation: ImplementationExport\n\nexport function getWorkerImplementation(): ImplementationExport {\n if (!implementation) {\n implementation = selectWorkerImplementation()\n }\n return implementation\n}\n\nexport function isWorkerRuntime() {\n const isWindowContext = typeof globalThis !== 'undefined' && typeof Window !== 'undefined' && globalThis instanceof Window\n return typeof globalThis !== 'undefined' && self['postMessage'] && !isWindowContext ? true : false\n}\n"],"mappings":";AAEA,IAAI;AAEJ,SAAS,qBAA6B;AACpC,MAAI,CAAC,WAAW;AACd,gBAAY,aAAa;AAAA,EAC3B;AAEA,SAAO;AACT;AAEA,SAAS,eAAuB;AAE9B,MAAI;AACF,UAAM,IAAI,MAAM,qBAAqB;AAAA,EACvC,SAAS,IAAI;AACX,UAAM,MAAM;AACZ,UAAM,WAAW,KAAK,IAAI,OAAO,MAAM,+DAA+D;AACtG,QAAI,SAAS;AACX,aAAO,WAAW,QAAQ,CAAC,CAAC;AAAA,IAC9B;AAAA,EACF;AAEA,SAAO;AACT;AAEA,SAAS,WAAW,KAAqB;AACvC,UAAQ,KAAK,KAAK,QAAQ,kFAAkF,IAAI,IAAI;AACtH;;;ACtBO,IAAM,kBAAkB,OAAO,cAAc,eAAe,UAAU,sBAAsB,UAAU,sBAAsB;AAEnI,IAAM,gBAAgB,CAAC,UAAkB,4BAA4B,KAAK,KAAK;AAE/E,SAAS,oBAAoB,MAAsB;AACjD,QAAM,OAAO,IAAI,KAAK,CAAC,IAAI,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAChE,SAAO,IAAI,gBAAgB,IAAI;AACjC;AAEA,SAAS,6BAAmD;AAC1D,MAAI,OAAO,WAAW,aAAa;AAGjC,WAAO,MAAM,YAAY;AAAA,MACvB,cAAc;AACZ,cAAM,IAAI;AAAA,UACR;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,kBAAkB,OAAO;AAAA,IAC7B,YAAY,KAAmB,SAAgC;AAC7D,UAAI,OAAO,QAAQ,YAAY,WAAW,QAAQ,UAAU;AAC1D,cAAM,IAAI,IAAI,KAAK,QAAQ,QAAQ;AAAA,MACrC,WAAW,OAAO,QAAQ,YAAY,CAAC,cAAc,GAAG,KAAK,cAAc,KAAK,mBAAa,CAAC,GAAG;AAC/F,cAAM,IAAI,IAAI,KAAK,mBAAa,EAAE,QAAQ,YAAY,GAAG,CAAC;AAC1D,YAAI,SAAS,kBAAkB,MAAM;AACnC,gBAAM,oBAAoB,iBAAiB,KAAK,UAAU,GAAG,CAAC,IAAI;AAAA,QACpE;AAAA,MACF;AACA,UACE,OAAO,QAAQ,YACZ,cAAc,GAAG,MAEhB,SAAS,kBAAkB,OAC/B;AACA,cAAM,oBAAoB,iBAAiB,KAAK,UAAU,GAAG,CAAC,IAAI;AAAA,MACpE;AACA,YAAM,KAAK,OAAO;AAAA,IACpB;AAAA,EACF;AAAA,EAEA,MAAM,mBAAmB,UAAU;AAAA,IACjC,YAAY,MAAY,SAAgC;AACtD,YAAM,MAAM,WAAW,IAAI,gBAAgB,IAAI;AAC/C,YAAM,KAAK,OAAO;AAAA,IACpB;AAAA,IAEA,OAAO,SAAS,QAAgB,SAA2C;AACzE,YAAM,OAAO,IAAI,WAAW,KAAK,CAAC,MAAM,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACtE,aAAO,IAAI,WAAW,MAAM,OAAO;AAAA,IACrC;AAAA,EACF;AAEA,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,EACX;AACF;AAEA,IAAI;AAEG,SAAS,0BAAgD;AAC9D,MAAI,CAAC,gBAAgB;AACnB,qBAAiB,2BAA2B;AAAA,EAC9C;AACA,SAAO;AACT;AAEO,SAAS,kBAAkB;AAChC,QAAM,kBAAkB,OAAO,eAAe,eAAe,OAAO,WAAW,eAAe,sBAAsB;AACpH,SAAO,OAAO,eAAe,eAAe,KAAK,aAAa,KAAK,CAAC,kBAAkB,OAAO;AAC/F;","names":[]}