@hyperttp/core 1.3.1 → 1.4.0

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 (46) hide show
  1. package/Core/HyperCore.d.ts +135 -77
  2. package/Core/HyperCore.d.ts.map +1 -1
  3. package/Core/HyperCore.js +280 -246
  4. package/Core/HyperCore.js.map +1 -1
  5. package/README.md +169 -96
  6. package/package.json +14 -8
  7. package/transports/browser.d.ts +228 -0
  8. package/transports/browser.d.ts.map +1 -0
  9. package/transports/browser.js +451 -0
  10. package/transports/browser.js.map +1 -0
  11. package/transports/manager.d.ts +9 -85
  12. package/transports/manager.d.ts.map +1 -1
  13. package/transports/manager.js +152 -222
  14. package/transports/manager.js.map +1 -1
  15. package/transports/node.d.ts +4 -36
  16. package/transports/node.d.ts.map +1 -1
  17. package/transports/node.js +119 -159
  18. package/transports/node.js.map +1 -1
  19. package/utils/decompress.d.ts +16 -20
  20. package/utils/decompress.d.ts.map +1 -1
  21. package/utils/decompress.js +151 -60
  22. package/utils/decompress.js.map +1 -1
  23. package/utils/errors.d.ts +0 -10
  24. package/utils/errors.d.ts.map +1 -1
  25. package/utils/errors.js +1 -11
  26. package/utils/errors.js.map +1 -1
  27. package/utils/merge.d.ts +0 -3
  28. package/utils/merge.d.ts.map +1 -1
  29. package/utils/merge.js +12 -22
  30. package/utils/merge.js.map +1 -1
  31. package/utils/normalize.d.ts +40 -21
  32. package/utils/normalize.d.ts.map +1 -1
  33. package/utils/normalize.js +217 -138
  34. package/utils/normalize.js.map +1 -1
  35. package/utils/pipeline.d.ts +10 -30
  36. package/utils/pipeline.d.ts.map +1 -1
  37. package/utils/pipeline.js +44 -44
  38. package/utils/pipeline.js.map +1 -1
  39. package/utils/response.d.ts +105 -23
  40. package/utils/response.d.ts.map +1 -1
  41. package/utils/response.js +308 -38
  42. package/utils/response.js.map +1 -1
  43. package/utils/retryUtils.d.ts +2 -10
  44. package/utils/retryUtils.d.ts.map +1 -1
  45. package/utils/retryUtils.js +17 -21
  46. package/utils/retryUtils.js.map +1 -1
package/utils/pipeline.js CHANGED
@@ -27,12 +27,8 @@ export function insertHookSorted(list, hook) {
27
27
  list.splice(i, 0, hook);
28
28
  }
29
29
  /**
30
- * @ru Выполняет конвейер пред-запроса. Поддерживает short-circuit (ранний возврат ответа). Использует Fast-Path для синхронных хуков без аллокации микротасок.
31
- * @en Executes the pre-request pipeline. Supports short-circuiting with fast-path for sync hooks.
32
- * @param hooks - Array of request hooks.
33
- * @param req - Internal request object.
34
- * @param ctx - Plugin context.
35
- * @returns A response if short-circuited, null otherwise, or a promise.
30
+ * @ru Выполняет конвейер пред-запроса. Поддерживает short-circuit.
31
+ * @en Executes the pre-request pipeline. Supports short-circuiting.
36
32
  */
37
33
  export function executeRequestPipeline(hooks, req, ctx) {
38
34
  const len = hooks.length;
@@ -49,12 +45,8 @@ export function executeRequestPipeline(hooks, req, ctx) {
49
45
  return null;
50
46
  }
51
47
  /**
52
- * @ru Выполняет низкоуровневый конвейер трансформации сырых данных транспорта (фаза DATA). Если хук возвращает измененный TransportResponse, он передается дальше по цепочке.
53
- * @en Executes low-level transport data transformation pipeline (DATA phase). If a hook returns a modified TransportResponse, it is passed along the chain.
54
- * @param hooks - Array of response data hooks.
55
- * @param res - Current transport response.
56
- * @param ctx - Plugin context.
57
- * @returns The (possibly transformed) transport response, either directly or wrapped in a promise.
48
+ * @ru Выполняет низкоуровневый конвейер трансформации сырых данных транспорта (фаза DATA).
49
+ * @en Executes low-level transport data transformation pipeline (DATA phase).
58
50
  */
59
51
  export function executeResponseDataPipeline(hooks, res, ctx) {
60
52
  const len = hooks.length;
@@ -73,15 +65,8 @@ export function executeResponseDataPipeline(hooks, res, ctx) {
73
65
  return currentRes;
74
66
  }
75
67
  /**
76
- * @ru Выполняет конвейер пост-ответа. Разделен на мутаторы (последовательно) и сайд-эффекты (в фоне). Оптимизирован для минимизации выделения памяти под замыкания логгера.
77
- * @en Executes the post-response pipeline. Split into mutators (sequential) and side-effects (background). Optimized to minimize memory allocations for logger closures.
78
- * @param mutators - Hooks that mutate the response (executed sequentially).
79
- * @param sideEffects - Hooks that run in background, errors are logged but do not break the main flow.
80
- * @param res - HTTP response object.
81
- * @param req - Internal request object.
82
- * @param ctx - Plugin context.
83
- * @param logger - Optional logger for side-effect errors.
84
- * @returns A promise if any mutator returns a promise, otherwise void.
68
+ * @ru Выполняет конвейер пост-ответа. Разделен на мутаторы и сайд-эффекты.
69
+ * @en Executes the post-response pipeline. Split into mutators and side-effects.
85
70
  */
86
71
  export function executeResponsePipeline(mutators, sideEffects, res, req, ctx, logger) {
87
72
  const seLen = sideEffects.length;
@@ -91,7 +76,7 @@ export function executeResponsePipeline(mutators, sideEffects, res, req, ctx, lo
91
76
  try {
92
77
  const promise = effect.run(res, req, ctx);
93
78
  if (promise instanceof Promise) {
94
- promise.catch((err) => handleSideEffectError(err, effect.name, logger));
79
+ safelyAttachSideEffectCatch(promise, effect.name, logger);
95
80
  }
96
81
  }
97
82
  catch (err) {
@@ -110,13 +95,8 @@ export function executeResponsePipeline(mutators, sideEffects, res, req, ctx, lo
110
95
  }
111
96
  }
112
97
  /**
113
- * @ru Выполняет конвейер перехвата ошибок. Первый вернувший HttpResponse плагин прерывает панику.
114
- * @en Executes the error interception pipeline. The first plugin that returns HttpResponse stops the panic.
115
- * @param hooks - Array of error hooks.
116
- * @param error - The error that occurred.
117
- * @param req - Internal request object.
118
- * @param ctx - Plugin context.
119
- * @returns A response if recovered, null otherwise, or a promise.
98
+ * @ru Выполняет конвейер перехвата ошибок.
99
+ * @en Executes the error interception pipeline.
120
100
  */
121
101
  export function executeErrorPipeline(hooks, error, req, ctx) {
122
102
  const len = hooks.length;
@@ -138,9 +118,15 @@ async function executeRequestPipelineAsync(hooks, req, ctx, startIndex, initialP
138
118
  return shortCircuit;
139
119
  const len = hooks.length;
140
120
  for (let i = startIndex + 1; i < len; i++) {
141
- const res = await hooks[i].run(req, ctx);
142
- if (res != null)
121
+ const res = hooks[i].run(req, ctx);
122
+ if (res instanceof Promise) {
123
+ const asyncRes = await res;
124
+ if (asyncRes != null)
125
+ return asyncRes;
126
+ }
127
+ else if (res != null) {
143
128
  return res;
129
+ }
144
130
  }
145
131
  return null;
146
132
  }
@@ -152,8 +138,14 @@ async function executeResponseDataPipelineAsync(hooks, ctx, startIndex, initialP
152
138
  }
153
139
  const len = hooks.length;
154
140
  for (let i = startIndex + 1; i < len; i++) {
155
- const result = await hooks[i].run(currentRes, ctx);
156
- if (result != null) {
141
+ const result = hooks[i].run(currentRes, ctx);
142
+ if (result instanceof Promise) {
143
+ const asyncResult = await result;
144
+ if (asyncResult != null) {
145
+ currentRes = asyncResult;
146
+ }
147
+ }
148
+ else if (result != null) {
157
149
  currentRes = result;
158
150
  }
159
151
  }
@@ -163,7 +155,10 @@ async function executeMutatorsAsync(mutators, res, req, ctx, startIndex, initial
163
155
  await initialPromise;
164
156
  const len = mutators.length;
165
157
  for (let i = startIndex + 1; i < len; i++) {
166
- await mutators[i].run(res, req, ctx);
158
+ const result = mutators[i].run(res, req, ctx);
159
+ if (result instanceof Promise) {
160
+ await result;
161
+ }
167
162
  }
168
163
  }
169
164
  async function executeErrorPipelineAsync(hooks, error, req, ctx, startIndex, initialPromise) {
@@ -172,20 +167,25 @@ async function executeErrorPipelineAsync(hooks, error, req, ctx, startIndex, ini
172
167
  return recovered;
173
168
  const len = hooks.length;
174
169
  for (let i = startIndex + 1; i < len; i++) {
175
- const res = await hooks[i].run(error, req, ctx);
176
- if (res != null)
170
+ const res = hooks[i].run(error, req, ctx);
171
+ if (res instanceof Promise) {
172
+ const asyncRes = await res;
173
+ if (asyncRes != null)
174
+ return asyncRes;
175
+ }
176
+ else if (res != null) {
177
177
  return res;
178
+ }
178
179
  }
179
180
  return null;
180
181
  }
181
- /**
182
- * @ru Статический обработчик падений фоновых хуков. Изолирован для предотвращения регенерации замыканий.
183
- * @en Static handler for background hook crashes. Isolated to prevent closure regeneration.
184
- * @param err - Caught error.
185
- * @param hookName - Name of the hook that failed.
186
- * @param logger - Optional logger.
187
- */
182
+ function safelyAttachSideEffectCatch(promise, hookName, logger) {
183
+ promise.catch((err) => handleSideEffectError(err, hookName, logger));
184
+ }
188
185
  function handleSideEffectError(err, hookName, logger) {
189
- logger?.("warn", `Background hook ${hookName} crashed: ${err instanceof Error ? err.message : String(err)}`);
186
+ if (!logger)
187
+ return;
188
+ const errorObject = err instanceof Error ? err : new Error(String(err));
189
+ logger("warn", `Background hook "${hookName}" crashed: ${errorObject.message}`, errorObject);
190
190
  }
191
191
  //# sourceMappingURL=pipeline.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/utils/pipeline.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/utils/pipeline.ts"],"names":[],"mappings":"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"}
@@ -1,40 +1,122 @@
1
- import type { HttpResponse, HyperTransport, StreamResponse } from "@hyperttp/types";
1
+ import type { HttpResponse, HyperTransport, HyperBody } from "@hyperttp/types";
2
2
  type TransportResponse = Awaited<ReturnType<HyperTransport["execute"]>>;
3
3
  /**
4
- * @ru Высокопроизводительный глубокий клон тела ответа. Безопасно пропускает стримы и буферы без мутации рантайма.
5
- * @en High-performance deep clone for response payloads. Safely bypasses streams and buffers to prevent runtime state mutations.
6
- * @param body - Targeted data or stream context to clone.
4
+ * @ru Символы для скрытого кэширования распарсенных данных тела ответа.
5
+ * Использование Symbol предотвращает коллизии имен и сохраняет мономорфизм в V8.
6
+ * @en Symbols for hidden caching of parsed response body data.
7
+ * Using Symbol prevents name collisions and preserves monomorphism in V8.
8
+ */
9
+ declare const TEXT_CACHE: unique symbol;
10
+ declare const JSON_CACHE: unique symbol;
11
+ declare const ARRAY_BUFFER_CACHE: unique symbol;
12
+ /**
13
+ * @ru Интерфейс объекта, поддерживающего скрытое кэширование данных.
14
+ * @en Interface for an object supporting hidden data caching.
15
+ */
16
+ type CacheHolder = {
17
+ [TEXT_CACHE]?: string;
18
+ [JSON_CACHE]?: unknown;
19
+ [ARRAY_BUFFER_CACHE]?: ArrayBuffer | SharedArrayBuffer;
20
+ };
21
+ /**
22
+ * @ru Высокопроизводительное глубокое клонирование тела ответа.
23
+ * Избегает накладных расходов structuredClone для стримов и буферов, возвращая ссылки.
24
+ * @en High-performance deep cloning of the response body.
25
+ * Avoids structuredClone overhead for streams and buffers by returning references.
26
+ * @template T - The type of the body.
27
+ * @param body - The body to clone.
28
+ * @returns The cloned body.
7
29
  */
8
30
  export declare const cloneBodyFast: <T>(body: T) => T;
9
31
  /**
10
- * @ru Контекстный обработчик для создания независимого изолированного клона объекта HttpResponse.
11
- * @en Contextual execution handler to generate an isolated deep clone of the HttpResponse instance.
32
+ * @ru Высокопроизводительный контейнер HTTP-ответа с ленивым парсингом и кэшированием.
33
+ * Гарантирует идентичный API чтения тела ответа во всех рантаймах.
34
+ * @en High-performance HTTP response container with lazy parsing and caching.
35
+ * Guarantees identical response body reading API across all runtimes.
36
+ * @template T - Expected type of the parsed response body.
37
+ */
38
+ export declare class HyperHttpResponse<T = unknown> implements HttpResponse<T>, CacheHolder {
39
+ status: number;
40
+ headers: Record<string, string | string[]>;
41
+ body: HyperBody;
42
+ url: string;
43
+ data: T | null;
44
+ [TEXT_CACHE]: string | undefined;
45
+ [JSON_CACHE]: unknown | undefined;
46
+ [ARRAY_BUFFER_CACHE]: ArrayBuffer | SharedArrayBuffer | undefined;
47
+ private _bodyConsumed;
48
+ /**
49
+ * @ru Создаёт экземпляр ответа из сырых данных транспорта.
50
+ * @en Creates a response instance from raw transport data.
51
+ * @param rawResponse - The raw response from the transport layer.
52
+ */
53
+ constructor(rawResponse: TransportResponse);
54
+ /**
55
+ * @ru Лениво вычитывает и кэширует тело ответа в виде ArrayBuffer и текста.
56
+ * @en Lazily consumes and caches the response body as ArrayBuffer and text.
57
+ */
58
+ private _consumeBody;
59
+ /**
60
+ * @ru Возвращает тело ответа как ArrayBuffer. Результат кэшируется.
61
+ * @en Returns the response body as an ArrayBuffer. Result is cached.
62
+ * @returns Promise resolving to the ArrayBuffer or SharedArrayBuffer.
63
+ */
64
+ arrayBuffer(): Promise<ArrayBuffer | SharedArrayBuffer>;
65
+ /**
66
+ * @ru Возвращает тело ответа как текст. Результат кэшируется.
67
+ * @en Returns the response body as text. Result is cached.
68
+ * @returns Promise resolving to the text string.
69
+ */
70
+ text(): Promise<string>;
71
+ /**
72
+ * @ru Парсит тело ответа как JSON. Результат кэшируется.
73
+ * @en Parses the response body as JSON. Result is cached.
74
+ * @template TJson - Expected type of the parsed JSON.
75
+ * @returns Promise resolving to the parsed JSON object.
76
+ */
77
+ json<TJson = T>(): Promise<TJson>;
78
+ /**
79
+ * @ru Отбрасывает тело ответа для освобождения ресурсов (сокета).
80
+ * @en Discards the response body to free up resources (socket).
81
+ * @returns Promise that resolves when the body is drained.
82
+ */
83
+ dump(): Promise<void>;
84
+ /**
85
+ * @ru Создаёт глубокую изолированную копию ответа.
86
+ * Для стримов использует tee() для безопасного раздвоения потока.
87
+ * @en Creates a deep isolated copy of the response.
88
+ * Uses tee() for streams to safely duplicate the flow.
89
+ * @returns A new HttpResponse instance with cloned data.
90
+ */
91
+ clone(): HttpResponse<T>;
92
+ }
93
+ /**
94
+ * @ru Быстрое создание экземпляра HyperHttpResponse из сырого ответа транспорта.
95
+ * @en Fast creation of a HyperHttpResponse instance from a raw transport response.
96
+ * @param rawResponse - The raw transport response.
97
+ * @returns A new HyperHttpResponse instance.
12
98
  */
13
- export declare function responseCloneHandler<T>(this: HttpResponse<T>): HttpResponse<T>;
99
+ export declare const mapResponseFast: (rawResponse: TransportResponse) => HttpResponse<unknown>;
14
100
  /**
15
- * @ru Быстрый маппинг сырого низкоуровневого ответа сетевого транспорта в плоский объект Hyperttp.
16
- * @en Fast mapping from raw low-level network transport response into flat Hyperttp object layouts.
17
- * @param rawResponse - Target instance returned by a transport executor.
101
+ * @ru Быстрое создание объекта StreamResponse без overhead-а классов.
102
+ * @en Fast creation of a StreamResponse object without class overhead.
103
+ * @param rawResponse - The raw transport response.
104
+ * @returns A lightweight StreamResponse object.
18
105
  */
19
- export declare const mapResponseFast: (rawResponse: TransportResponse) => {
106
+ export declare const mapStreamFast: (rawResponse: TransportResponse) => {
20
107
  status: number;
21
108
  headers: Record<string, string | string[]>;
22
109
  body: import("@hyperttp/types").TransportResponsePayload;
23
110
  url: string;
24
- clone: typeof responseCloneHandler;
25
- data: null;
26
111
  };
27
112
  /**
28
- * @ru Быстрый маппинг сырого ответа транспорта в специализированный объект потокового ответа StreamResponse.
29
- * @en Fast mapping from raw transport context into a specialized streaming response StreamResponse layout.
30
- * @param rawResponse - Target instance returned by a transport executor.
31
- */
32
- export declare const mapStreamFast: (rawResponse: TransportResponse) => StreamResponse<unknown>;
33
- /**
34
- * @ru Zero-allocation слияние заголовков. Полностью избегает вызовов `Object.keys()` и выделения массивов в куче.
35
- * @en Zero-allocation headers merging layout. Completely avoids `Object.keys()` overhead and heavy heap array operations.
36
- * @param base - Primary dictionary containing foundational header values.
37
- * @param override - High-priority map containing overrides or additions.
113
+ * @ru Оптимизированное слияние заголовков.
114
+ * Использует ранний возврат при первой итерации цикла, что быстрее, чем Object.keys().length > 0.
115
+ * @en Optimized headers merging.
116
+ * Uses early return on the first loop iteration, which is faster than Object.keys().length > 0.
117
+ * @param base - Base headers object.
118
+ * @param override - Headers to override or add.
119
+ * @returns Merged headers object.
38
120
  */
39
121
  export declare const mergeHeadersFast: (base: Record<string, string | string[]>, override?: Record<string, string | string[]>) => Record<string, string | string[]>;
40
122
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"response.d.ts","sourceRoot":"","sources":["../../src/utils/response.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,cAAc,EACd,cAAc,EACf,MAAM,iBAAiB,CAAC;AAEzB,KAAK,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAExE;;;;GAIG;AACH,eAAO,MAAM,aAAa,GAAI,CAAC,EAAE,MAAM,CAAC,KAAG,CAsB1C,CAAC;AAEF;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EACpC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,GACpB,YAAY,CAAC,CAAC,CAAC,CAWjB;AAED;;;;GAIG;AACH,eAAO,MAAM,eAAe,GAAI,aAAa,iBAAiB;;;;;;;CAO5D,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,aAAa,GACxB,aAAa,iBAAiB,KAC7B,cAAc,CAAC,OAAO,CAKvB,CAAC;AAEH;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,GAC3B,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,EACvC,WAAW,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,KAC3C,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CASlC,CAAC"}
1
+ {"version":3,"file":"response.d.ts","sourceRoot":"","sources":["../../src/utils/response.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG/E,KAAK,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAgDxE;;;;;GAKG;AACH,QAAA,MAAM,UAAU,eAA+B,CAAC;AAChD,QAAA,MAAM,UAAU,eAA+B,CAAC;AAChD,QAAA,MAAM,kBAAkB,eAAsC,CAAC;AAE/D;;;GAGG;AACH,KAAK,WAAW,GAAG;IACjB,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC;IACtB,CAAC,UAAU,CAAC,CAAC,EAAE,OAAO,CAAC;IACvB,CAAC,kBAAkB,CAAC,CAAC,EAAE,WAAW,GAAG,iBAAiB,CAAC;CACxD,CAAC;AA2BF;;;;;;;;GAQG;AACH,eAAO,MAAM,aAAa,GAAI,CAAC,EAAE,MAAM,CAAC,KAAG,CAqB1C,CAAC;AAEF;;;;;;GAMG;AACH,qBAAa,iBAAiB,CAAC,CAAC,GAAG,OAAO,CAAE,YAAW,YAAY,CAAC,CAAC,CAAC,EAAE,WAAW;IAC1E,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;IAC3C,IAAI,EAAE,SAAS,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,CAAC,GAAG,IAAI,CAAQ;IAEtB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAa;IAC7C,CAAC,UAAU,CAAC,EAAE,OAAO,GAAG,SAAS,CAAa;IAC9C,CAAC,kBAAkB,CAAC,EAAE,WAAW,GAAG,iBAAiB,GAAG,SAAS,CAAa;IAErF,OAAO,CAAC,aAAa,CAAS;IAE9B;;;;OAIG;gBACS,WAAW,EAAE,iBAAiB;IAO1C;;;OAGG;YACW,YAAY;IA8C1B;;;;OAIG;IACU,WAAW,IAAI,OAAO,CAAC,WAAW,GAAG,iBAAiB,CAAC;IA2BpE;;;;OAIG;IACU,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IAiCpC;;;;;OAKG;IACU,IAAI,CAAC,KAAK,GAAG,CAAC,KAAK,OAAO,CAAC,KAAK,CAAC;IA2B9C;;;;OAIG;IACU,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAYlC;;;;;;OAMG;IACI,KAAK,IAAI,YAAY,CAAC,CAAC,CAAC;CA2BhC;AAED;;;;;GAKG;AACH,eAAO,MAAM,eAAe,GAAI,aAAa,iBAAiB,KAAG,YAAY,CAAC,OAAO,CAEpF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,aAAa,GAAI,aAAa,iBAAiB;;;;;CAK1D,CAAC;AAEH;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB,GAC3B,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,EACvC,WAAW,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,KAC3C,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAMlC,CAAC"}