@aifabrix/miso-client 3.1.1 → 3.2.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 (84) hide show
  1. package/README.md +1 -1
  2. package/dist/express/client-token-endpoint.d.ts +76 -0
  3. package/dist/express/client-token-endpoint.d.ts.map +1 -0
  4. package/dist/express/client-token-endpoint.js +108 -0
  5. package/dist/express/client-token-endpoint.js.map +1 -0
  6. package/dist/express/index.d.ts +2 -1
  7. package/dist/express/index.d.ts.map +1 -1
  8. package/dist/express/index.js +8 -3
  9. package/dist/express/index.js.map +1 -1
  10. package/dist/express/response-middleware.d.ts.map +1 -1
  11. package/dist/express/response-middleware.js.map +1 -1
  12. package/dist/index.d.ts +8 -2
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +14 -1
  15. package/dist/index.js.map +1 -1
  16. package/dist/services/auth.service.js +5 -5
  17. package/dist/services/auth.service.js.map +1 -1
  18. package/dist/services/browser-permission.service.d.ts +60 -0
  19. package/dist/services/browser-permission.service.d.ts.map +1 -0
  20. package/dist/services/browser-permission.service.js +159 -0
  21. package/dist/services/browser-permission.service.js.map +1 -0
  22. package/dist/services/browser-role.service.d.ts +60 -0
  23. package/dist/services/browser-role.service.d.ts.map +1 -0
  24. package/dist/services/browser-role.service.js +159 -0
  25. package/dist/services/browser-role.service.js.map +1 -0
  26. package/dist/services/cache.service.d.ts.map +1 -1
  27. package/dist/services/cache.service.js +4 -0
  28. package/dist/services/cache.service.js.map +1 -1
  29. package/dist/services/logger.service.d.ts +4 -0
  30. package/dist/services/logger.service.d.ts.map +1 -1
  31. package/dist/services/logger.service.js +21 -0
  32. package/dist/services/logger.service.js.map +1 -1
  33. package/dist/types/data-client.types.d.ts +1 -0
  34. package/dist/types/data-client.types.d.ts.map +1 -1
  35. package/dist/types/data-client.types.js.map +1 -1
  36. package/dist/utils/audit-log-queue.d.ts +4 -0
  37. package/dist/utils/audit-log-queue.d.ts.map +1 -1
  38. package/dist/utils/audit-log-queue.js +22 -2
  39. package/dist/utils/audit-log-queue.js.map +1 -1
  40. package/dist/utils/auth-strategy.js +2 -2
  41. package/dist/utils/browser-jwt-decoder.d.ts +20 -0
  42. package/dist/utils/browser-jwt-decoder.d.ts.map +1 -0
  43. package/dist/utils/browser-jwt-decoder.js +75 -0
  44. package/dist/utils/browser-jwt-decoder.js.map +1 -0
  45. package/dist/utils/controller-url-resolver.d.ts +16 -0
  46. package/dist/utils/controller-url-resolver.d.ts.map +1 -1
  47. package/dist/utils/controller-url-resolver.js +12 -0
  48. package/dist/utils/controller-url-resolver.js.map +1 -1
  49. package/dist/utils/data-client-audit.d.ts +24 -0
  50. package/dist/utils/data-client-audit.d.ts.map +1 -0
  51. package/dist/utils/data-client-audit.js +138 -0
  52. package/dist/utils/data-client-audit.js.map +1 -0
  53. package/dist/utils/data-client-auth.d.ts +59 -0
  54. package/dist/utils/data-client-auth.d.ts.map +1 -0
  55. package/dist/utils/data-client-auth.js +427 -0
  56. package/dist/utils/data-client-auth.js.map +1 -0
  57. package/dist/utils/data-client-auto-init.d.ts +66 -0
  58. package/dist/utils/data-client-auto-init.d.ts.map +1 -0
  59. package/dist/utils/data-client-auto-init.js +215 -0
  60. package/dist/utils/data-client-auto-init.js.map +1 -0
  61. package/dist/utils/data-client-cache.d.ts +36 -0
  62. package/dist/utils/data-client-cache.d.ts.map +1 -0
  63. package/dist/utils/data-client-cache.js +55 -0
  64. package/dist/utils/data-client-cache.js.map +1 -0
  65. package/dist/utils/data-client-redirect.d.ts +22 -0
  66. package/dist/utils/data-client-redirect.d.ts.map +1 -0
  67. package/dist/utils/data-client-redirect.js +345 -0
  68. package/dist/utils/data-client-redirect.js.map +1 -0
  69. package/dist/utils/data-client-request.d.ts +32 -0
  70. package/dist/utils/data-client-request.d.ts.map +1 -0
  71. package/dist/utils/data-client-request.js +309 -0
  72. package/dist/utils/data-client-request.js.map +1 -0
  73. package/dist/utils/data-client-utils.d.ts +49 -0
  74. package/dist/utils/data-client-utils.d.ts.map +1 -0
  75. package/dist/utils/data-client-utils.js +139 -0
  76. package/dist/utils/data-client-utils.js.map +1 -0
  77. package/dist/utils/data-client.d.ts +103 -29
  78. package/dist/utils/data-client.d.ts.map +1 -1
  79. package/dist/utils/data-client.js +321 -774
  80. package/dist/utils/data-client.js.map +1 -1
  81. package/dist/utils/internal-http-client.d.ts.map +1 -1
  82. package/dist/utils/internal-http-client.js +7 -3
  83. package/dist/utils/internal-http-client.js.map +1 -1
  84. package/package.json +9 -2
@@ -0,0 +1,215 @@
1
+ "use strict";
2
+ /**
3
+ * DataClient Auto-Initialization Helper
4
+ * Automatically fetches configuration from server and initializes DataClient
5
+ *
6
+ * Provides zero-config client-side setup for DataClient initialization
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.getCachedDataClientConfig = getCachedDataClientConfig;
10
+ exports.autoInitializeDataClient = autoInitializeDataClient;
11
+ const data_client_1 = require("./data-client");
12
+ const data_client_utils_1 = require("./data-client-utils");
13
+ const client_token_endpoint_1 = require("../express/client-token-endpoint");
14
+ /**
15
+ * Get cached config from localStorage
16
+ *
17
+ * @returns Cached config or null if not found or expired
18
+ */
19
+ function getCachedConfig() {
20
+ if (!(0, data_client_utils_1.isBrowser)()) {
21
+ return null;
22
+ }
23
+ try {
24
+ const cachedStr = (0, data_client_utils_1.getLocalStorage)("miso:dataclient-config");
25
+ if (!cachedStr) {
26
+ return null;
27
+ }
28
+ const cached = JSON.parse(cachedStr);
29
+ // Check if expired
30
+ if (cached.expiresAt && cached.expiresAt < Date.now()) {
31
+ (0, data_client_utils_1.removeLocalStorage)("miso:dataclient-config");
32
+ return null;
33
+ }
34
+ return cached;
35
+ }
36
+ catch {
37
+ // Invalid cache, remove it
38
+ (0, data_client_utils_1.removeLocalStorage)("miso:dataclient-config");
39
+ return null;
40
+ }
41
+ }
42
+ /**
43
+ * Get cached DataClient configuration from localStorage
44
+ *
45
+ * Returns the cached configuration that was stored by autoInitializeDataClient.
46
+ * Useful for reading configuration without re-initializing DataClient.
47
+ *
48
+ * @returns Cached config or null if not found or expired
49
+ *
50
+ * @example
51
+ * ```typescript
52
+ * import { getCachedDataClientConfig } from '@aifabrix/miso-client';
53
+ *
54
+ * const cachedConfig = getCachedDataClientConfig();
55
+ * if (cachedConfig) {
56
+ * console.log('Base URL:', cachedConfig.baseUrl);
57
+ * console.log('Controller URL:', cachedConfig.controllerUrl);
58
+ * console.log('Client ID:', cachedConfig.clientId);
59
+ * }
60
+ * ```
61
+ */
62
+ function getCachedDataClientConfig() {
63
+ const cached = getCachedConfig();
64
+ return cached?.config || null;
65
+ }
66
+ /**
67
+ * Cache config in localStorage
68
+ *
69
+ * @param config - Config to cache
70
+ * @param expiresIn - Expiration time in seconds
71
+ */
72
+ function cacheConfig(config, expiresIn) {
73
+ if (!(0, data_client_utils_1.isBrowser)()) {
74
+ return;
75
+ }
76
+ try {
77
+ const cached = {
78
+ config,
79
+ expiresAt: Date.now() + expiresIn * 1000,
80
+ };
81
+ (0, data_client_utils_1.setLocalStorage)("miso:dataclient-config", JSON.stringify(cached));
82
+ }
83
+ catch {
84
+ // Ignore localStorage errors (SSR, private browsing, etc.)
85
+ }
86
+ }
87
+ /**
88
+ * Fetch config from server endpoint
89
+ *
90
+ * @param baseUrl - Base URL for the API
91
+ * @param clientTokenUri - Client token endpoint URI
92
+ * @returns Config response
93
+ */
94
+ async function fetchConfig(baseUrl, clientTokenUri) {
95
+ // Build full URL
96
+ const fullUrl = /^https?:\/\//i.test(clientTokenUri)
97
+ ? clientTokenUri
98
+ : `${baseUrl}${clientTokenUri}`;
99
+ try {
100
+ // Try POST first (standard), fallback to GET
101
+ let response = await fetch(fullUrl, {
102
+ method: "POST",
103
+ headers: {
104
+ "Content-Type": "application/json",
105
+ },
106
+ credentials: "include",
107
+ });
108
+ // If POST fails with 405, try GET
109
+ if (response.status === 405) {
110
+ response = await fetch(fullUrl, {
111
+ method: "GET",
112
+ credentials: "include",
113
+ });
114
+ }
115
+ if (!response.ok) {
116
+ const errorText = await response.text();
117
+ throw new Error(`Failed to fetch config: ${response.status} ${response.statusText}. ${errorText}`);
118
+ }
119
+ const data = (await response.json());
120
+ // Check if response has config
121
+ if (!(0, client_token_endpoint_1.hasConfig)(data)) {
122
+ throw new Error("Invalid response format: config not found in response. " +
123
+ "Make sure your server endpoint uses createClientTokenEndpoint() helper.");
124
+ }
125
+ return data.config;
126
+ }
127
+ catch (error) {
128
+ if (error instanceof Error) {
129
+ throw error;
130
+ }
131
+ throw new Error(`Network error: ${String(error)}`);
132
+ }
133
+ }
134
+ /**
135
+ * Auto-initialize DataClient with server-provided configuration
136
+ *
137
+ * Automatically:
138
+ * 1. Detects if running in browser
139
+ * 2. Checks localStorage cache first
140
+ * 3. Fetches config from server endpoint if needed
141
+ * 4. Initializes DataClient with server-provided config
142
+ * 5. Caches config for future use
143
+ *
144
+ * @param options - Optional configuration
145
+ * @returns Initialized DataClient instance
146
+ * @throws Error if initialization fails
147
+ *
148
+ * @example
149
+ * ```typescript
150
+ * import { autoInitializeDataClient } from '@aifabrix/miso-client';
151
+ *
152
+ * // One line - everything is automatic
153
+ * const dataClient = await autoInitializeDataClient();
154
+ * ```
155
+ */
156
+ async function autoInitializeDataClient(options) {
157
+ // Check if running in browser
158
+ if (!(0, data_client_utils_1.isBrowser)()) {
159
+ throw new Error("autoInitializeDataClient() is only available in browser environment");
160
+ }
161
+ const opts = {
162
+ clientTokenUri: options?.clientTokenUri || "/api/v1/auth/client-token",
163
+ cacheConfig: options?.cacheConfig ?? true,
164
+ baseUrl: options?.baseUrl,
165
+ onError: options?.onError,
166
+ };
167
+ try {
168
+ // Auto-detect baseUrl from window.location if not provided
169
+ const baseUrl = opts.baseUrl ||
170
+ ((0, data_client_utils_1.isBrowser)()
171
+ ? globalThis.window.location.origin
172
+ : "");
173
+ if (!baseUrl) {
174
+ throw new Error("Unable to detect baseUrl. Please provide baseUrl option.");
175
+ }
176
+ let config = null;
177
+ // Check cache first if enabled
178
+ if (opts.cacheConfig) {
179
+ const cached = getCachedConfig();
180
+ if (cached) {
181
+ config = cached.config;
182
+ }
183
+ }
184
+ // Fetch from server if not cached
185
+ if (!config) {
186
+ config = await fetchConfig(baseUrl, opts.clientTokenUri);
187
+ // Cache config if enabled (use expiresIn from token response if available)
188
+ // Default to 30 minutes (1800 seconds) if not available
189
+ if (opts.cacheConfig) {
190
+ cacheConfig(config, 1800);
191
+ }
192
+ }
193
+ // Build DataClient config
194
+ const dataClientConfig = {
195
+ baseUrl: config.baseUrl,
196
+ misoConfig: {
197
+ clientId: config.clientId,
198
+ controllerUrl: config.controllerUrl,
199
+ controllerPublicUrl: config.controllerPublicUrl,
200
+ clientTokenUri: config.clientTokenUri,
201
+ },
202
+ };
203
+ // Initialize and return DataClient
204
+ return new data_client_1.DataClient(dataClientConfig);
205
+ }
206
+ catch (error) {
207
+ const err = error instanceof Error ? error : new Error(String(error));
208
+ // Call error callback if provided
209
+ if (opts.onError) {
210
+ opts.onError(err);
211
+ }
212
+ throw err;
213
+ }
214
+ }
215
+ //# sourceMappingURL=data-client-auto-init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-client-auto-init.js","sourceRoot":"","sources":["../../src/utils/data-client-auto-init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * DataClient cache management utilities
3
+ * Handles cache operations, size enforcement, and metrics tracking
4
+ */
5
+ import { CacheEntry, CacheConfig } from "../types/data-client.types";
6
+ import { ApiRequestOptions } from "../types/data-client.types";
7
+ /**
8
+ * Cache manager interface
9
+ */
10
+ export interface CacheManager {
11
+ cache: Map<string, CacheEntry>;
12
+ metrics: {
13
+ cacheHits: number;
14
+ cacheMisses: number;
15
+ };
16
+ }
17
+ /**
18
+ * Get cached entry if valid
19
+ */
20
+ export declare function getCachedEntry<T>(cache: Map<string, CacheEntry>, cacheKey: string, metrics: {
21
+ cacheHits: number;
22
+ cacheMisses: number;
23
+ }): T | null;
24
+ /**
25
+ * Set cache entry with TTL and enforce max size
26
+ */
27
+ export declare function setCacheEntry(cache: Map<string, CacheEntry>, cacheKey: string, data: unknown, ttl: number, maxSize: number): void;
28
+ /**
29
+ * Check if caching is enabled for request
30
+ */
31
+ export declare function isCacheEnabled(method: string, cacheConfig: CacheConfig | undefined, options?: ApiRequestOptions): boolean;
32
+ /**
33
+ * Generate cache key for request
34
+ */
35
+ export declare function getCacheKeyForRequest(endpoint: string, options?: ApiRequestOptions): string;
36
+ //# sourceMappingURL=data-client-cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-client-cache.d.ts","sourceRoot":"","sources":["../../src/utils/data-client-cache.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAErE,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAE/D;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC/B,OAAO,EAAE;QACP,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;CACH;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAC9B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,EAC9B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAClD,CAAC,GAAG,IAAI,CAQV;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,EAC9B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,OAAO,EACb,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,GACd,IAAI,CAYN;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,WAAW,GAAG,SAAS,EACpC,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAOT;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,MAAM,CAER"}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ /**
3
+ * DataClient cache management utilities
4
+ * Handles cache operations, size enforcement, and metrics tracking
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.getCachedEntry = getCachedEntry;
8
+ exports.setCacheEntry = setCacheEntry;
9
+ exports.isCacheEnabled = isCacheEnabled;
10
+ exports.getCacheKeyForRequest = getCacheKeyForRequest;
11
+ const data_client_utils_1 = require("./data-client-utils");
12
+ /**
13
+ * Get cached entry if valid
14
+ */
15
+ function getCachedEntry(cache, cacheKey, metrics) {
16
+ const cached = cache.get(cacheKey);
17
+ if (cached && cached.expiresAt > Date.now()) {
18
+ metrics.cacheHits++;
19
+ return cached.data;
20
+ }
21
+ metrics.cacheMisses++;
22
+ return null;
23
+ }
24
+ /**
25
+ * Set cache entry with TTL and enforce max size
26
+ */
27
+ function setCacheEntry(cache, cacheKey, data, ttl, maxSize) {
28
+ cache.set(cacheKey, {
29
+ data,
30
+ expiresAt: Date.now() + ttl * 1000,
31
+ key: cacheKey,
32
+ });
33
+ // Enforce max cache size
34
+ if (cache.size > maxSize) {
35
+ const firstKey = cache.keys().next().value;
36
+ if (firstKey)
37
+ cache.delete(firstKey);
38
+ }
39
+ }
40
+ /**
41
+ * Check if caching is enabled for request
42
+ */
43
+ function isCacheEnabled(method, cacheConfig, options) {
44
+ const isGetRequest = method.toUpperCase() === "GET";
45
+ return ((cacheConfig?.enabled !== false) &&
46
+ isGetRequest &&
47
+ (options?.cache?.enabled !== false));
48
+ }
49
+ /**
50
+ * Generate cache key for request
51
+ */
52
+ function getCacheKeyForRequest(endpoint, options) {
53
+ return options?.cache?.key || (0, data_client_utils_1.generateCacheKey)(endpoint, options);
54
+ }
55
+ //# sourceMappingURL=data-client-cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-client-cache.js","sourceRoot":"","sources":["../../src/utils/data-client-cache.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAoBH,wCAYC;AAKD,sCAkBC;AAKD,wCAWC;AAKD,sDAKC;AA9ED,2DAAuD;AAcvD;;GAEG;AACH,SAAgB,cAAc,CAC5B,KAA8B,EAC9B,QAAgB,EAChB,OAAmD;IAEnD,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACnC,IAAI,MAAM,IAAI,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;QAC5C,OAAO,CAAC,SAAS,EAAE,CAAC;QACpB,OAAO,MAAM,CAAC,IAAS,CAAC;IAC1B,CAAC;IACD,OAAO,CAAC,WAAW,EAAE,CAAC;IACtB,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAgB,aAAa,CAC3B,KAA8B,EAC9B,QAAgB,EAChB,IAAa,EACb,GAAW,EACX,OAAe;IAEf,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE;QAClB,IAAI;QACJ,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI;QAClC,GAAG,EAAE,QAAQ;KACd,CAAC,CAAC;IAEH,yBAAyB;IACzB,IAAI,KAAK,CAAC,IAAI,GAAG,OAAO,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;QAC3C,IAAI,QAAQ;YAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,cAAc,CAC5B,MAAc,EACd,WAAoC,EACpC,OAA2B;IAE3B,MAAM,YAAY,GAAG,MAAM,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC;IACpD,OAAO,CACL,CAAC,WAAW,EAAE,OAAO,KAAK,KAAK,CAAC;QAChC,YAAY;QACZ,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,KAAK,KAAK,CAAC,CACpC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,qBAAqB,CACnC,QAAgB,EAChB,OAA2B;IAE3B,OAAO,OAAO,EAAE,KAAK,EAAE,GAAG,IAAI,IAAA,oCAAgB,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AACpE,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * DataClient redirect to login utilities
3
+ * Handles redirect to login flow with proper error handling
4
+ */
5
+ import { DataClientConfig } from "../types/data-client.types";
6
+ /**
7
+ * Synchronously get and validate redirect URL
8
+ * Validates the URL before returning it
9
+ * @param url - URL to validate and return
10
+ * @param fallbackUrl - Optional fallback URL if primary is invalid
11
+ * @returns Validated URL string or null if both are invalid
12
+ */
13
+ export declare function getValidatedRedirectUrl(url: string | null, fallbackUrl?: string | null): string | null;
14
+ /**
15
+ * Redirect to login page via controller
16
+ * Calls the controller login endpoint with redirect parameter and x-client-token header
17
+ * @param config - DataClient configuration
18
+ * @param getClientTokenFn - Function to get client token
19
+ * @param redirectUrl - Optional redirect URL to return to after login (defaults to current page URL)
20
+ */
21
+ export declare function redirectToLogin(config: DataClientConfig, getClientTokenFn: () => Promise<string | null>, redirectUrl?: string): Promise<void>;
22
+ //# sourceMappingURL=data-client-redirect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-client-redirect.d.ts","sourceRoot":"","sources":["../../src/utils/data-client-redirect.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AA0P9D;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAiBtG;AAoGD;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,gBAAgB,EACxB,gBAAgB,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,EAC9C,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC,CA+Bf"}