@iam-brain/opencode-codex-auth 0.1.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 (165) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +111 -0
  3. package/dist/bin/opencode-codex-auth.d.ts +3 -0
  4. package/dist/bin/opencode-codex-auth.d.ts.map +1 -0
  5. package/dist/bin/opencode-codex-auth.js +13 -0
  6. package/dist/bin/opencode-codex-auth.js.map +1 -0
  7. package/dist/bin/opencode-openai-multi.d.ts +3 -0
  8. package/dist/bin/opencode-openai-multi.d.ts.map +1 -0
  9. package/dist/bin/opencode-openai-multi.js +13 -0
  10. package/dist/bin/opencode-openai-multi.js.map +1 -0
  11. package/dist/index.d.ts +4 -0
  12. package/dist/index.d.ts.map +1 -0
  13. package/dist/index.js +137 -0
  14. package/dist/index.js.map +1 -0
  15. package/dist/lib/accounts-tools.d.ts +14 -0
  16. package/dist/lib/accounts-tools.d.ts.map +1 -0
  17. package/dist/lib/accounts-tools.js +100 -0
  18. package/dist/lib/accounts-tools.js.map +1 -0
  19. package/dist/lib/claims.d.ts +20 -0
  20. package/dist/lib/claims.d.ts.map +1 -0
  21. package/dist/lib/claims.js +37 -0
  22. package/dist/lib/claims.js.map +1 -0
  23. package/dist/lib/codex-native.d.ts +74 -0
  24. package/dist/lib/codex-native.d.ts.map +1 -0
  25. package/dist/lib/codex-native.js +2404 -0
  26. package/dist/lib/codex-native.js.map +1 -0
  27. package/dist/lib/codex-quota-fetch.d.ts +11 -0
  28. package/dist/lib/codex-quota-fetch.d.ts.map +1 -0
  29. package/dist/lib/codex-quota-fetch.js +149 -0
  30. package/dist/lib/codex-quota-fetch.js.map +1 -0
  31. package/dist/lib/codex-status-storage.d.ts +5 -0
  32. package/dist/lib/codex-status-storage.d.ts.map +1 -0
  33. package/dist/lib/codex-status-storage.js +58 -0
  34. package/dist/lib/codex-status-storage.js.map +1 -0
  35. package/dist/lib/codex-status-tool.d.ts +6 -0
  36. package/dist/lib/codex-status-tool.d.ts.map +1 -0
  37. package/dist/lib/codex-status-tool.js +37 -0
  38. package/dist/lib/codex-status-tool.js.map +1 -0
  39. package/dist/lib/codex-status-ui.d.ts +7 -0
  40. package/dist/lib/codex-status-ui.d.ts.map +1 -0
  41. package/dist/lib/codex-status-ui.js +109 -0
  42. package/dist/lib/codex-status-ui.js.map +1 -0
  43. package/dist/lib/codex-status.d.ts +14 -0
  44. package/dist/lib/codex-status.d.ts.map +1 -0
  45. package/dist/lib/codex-status.js +31 -0
  46. package/dist/lib/codex-status.js.map +1 -0
  47. package/dist/lib/compat-sanitizer.d.ts +7 -0
  48. package/dist/lib/compat-sanitizer.d.ts.map +1 -0
  49. package/dist/lib/compat-sanitizer.js +101 -0
  50. package/dist/lib/compat-sanitizer.js.map +1 -0
  51. package/dist/lib/config.d.ts +94 -0
  52. package/dist/lib/config.d.ts.map +1 -0
  53. package/dist/lib/config.js +495 -0
  54. package/dist/lib/config.js.map +1 -0
  55. package/dist/lib/constants.d.ts +2 -0
  56. package/dist/lib/constants.d.ts.map +1 -0
  57. package/dist/lib/constants.js +2 -0
  58. package/dist/lib/constants.js.map +1 -0
  59. package/dist/lib/fatal-errors.d.ts +17 -0
  60. package/dist/lib/fatal-errors.d.ts.map +1 -0
  61. package/dist/lib/fatal-errors.js +42 -0
  62. package/dist/lib/fatal-errors.js.map +1 -0
  63. package/dist/lib/fetch-orchestrator.d.ts +56 -0
  64. package/dist/lib/fetch-orchestrator.d.ts.map +1 -0
  65. package/dist/lib/fetch-orchestrator.js +240 -0
  66. package/dist/lib/fetch-orchestrator.js.map +1 -0
  67. package/dist/lib/identity.d.ts +10 -0
  68. package/dist/lib/identity.d.ts.map +1 -0
  69. package/dist/lib/identity.js +31 -0
  70. package/dist/lib/identity.js.map +1 -0
  71. package/dist/lib/installer-cli.d.ts +7 -0
  72. package/dist/lib/installer-cli.d.ts.map +1 -0
  73. package/dist/lib/installer-cli.js +115 -0
  74. package/dist/lib/installer-cli.js.map +1 -0
  75. package/dist/lib/logger.d.ts +11 -0
  76. package/dist/lib/logger.d.ts.map +1 -0
  77. package/dist/lib/logger.js +25 -0
  78. package/dist/lib/logger.js.map +1 -0
  79. package/dist/lib/model-catalog.d.ts +66 -0
  80. package/dist/lib/model-catalog.d.ts.map +1 -0
  81. package/dist/lib/model-catalog.js +532 -0
  82. package/dist/lib/model-catalog.js.map +1 -0
  83. package/dist/lib/oauth-pages.d.ts +2 -0
  84. package/dist/lib/oauth-pages.d.ts.map +1 -0
  85. package/dist/lib/oauth-pages.js +199 -0
  86. package/dist/lib/oauth-pages.js.map +1 -0
  87. package/dist/lib/opencode-install.d.ts +15 -0
  88. package/dist/lib/opencode-install.d.ts.map +1 -0
  89. package/dist/lib/opencode-install.js +53 -0
  90. package/dist/lib/opencode-install.js.map +1 -0
  91. package/dist/lib/orchestrator-agents.d.ts +29 -0
  92. package/dist/lib/orchestrator-agents.d.ts.map +1 -0
  93. package/dist/lib/orchestrator-agents.js +212 -0
  94. package/dist/lib/orchestrator-agents.js.map +1 -0
  95. package/dist/lib/paths.d.ts +7 -0
  96. package/dist/lib/paths.d.ts.map +1 -0
  97. package/dist/lib/paths.js +18 -0
  98. package/dist/lib/paths.js.map +1 -0
  99. package/dist/lib/personalities.d.ts +5 -0
  100. package/dist/lib/personalities.d.ts.map +1 -0
  101. package/dist/lib/personalities.js +69 -0
  102. package/dist/lib/personalities.js.map +1 -0
  103. package/dist/lib/proactive-refresh.d.ts +11 -0
  104. package/dist/lib/proactive-refresh.d.ts.map +1 -0
  105. package/dist/lib/proactive-refresh.js +110 -0
  106. package/dist/lib/proactive-refresh.js.map +1 -0
  107. package/dist/lib/quarantine.d.ts +9 -0
  108. package/dist/lib/quarantine.d.ts.map +1 -0
  109. package/dist/lib/quarantine.js +39 -0
  110. package/dist/lib/quarantine.js.map +1 -0
  111. package/dist/lib/rate-limit.d.ts +9 -0
  112. package/dist/lib/rate-limit.d.ts.map +1 -0
  113. package/dist/lib/rate-limit.js +32 -0
  114. package/dist/lib/rate-limit.js.map +1 -0
  115. package/dist/lib/refresh-queue.d.ts +30 -0
  116. package/dist/lib/refresh-queue.d.ts.map +1 -0
  117. package/dist/lib/refresh-queue.js +67 -0
  118. package/dist/lib/refresh-queue.js.map +1 -0
  119. package/dist/lib/request-snapshots.d.ts +14 -0
  120. package/dist/lib/request-snapshots.d.ts.map +1 -0
  121. package/dist/lib/request-snapshots.js +148 -0
  122. package/dist/lib/request-snapshots.js.map +1 -0
  123. package/dist/lib/rotation.d.ts +29 -0
  124. package/dist/lib/rotation.d.ts.map +1 -0
  125. package/dist/lib/rotation.js +252 -0
  126. package/dist/lib/rotation.js.map +1 -0
  127. package/dist/lib/storage.d.ts +27 -0
  128. package/dist/lib/storage.d.ts.map +1 -0
  129. package/dist/lib/storage.js +610 -0
  130. package/dist/lib/storage.js.map +1 -0
  131. package/dist/lib/toast.d.ts +2 -0
  132. package/dist/lib/toast.d.ts.map +1 -0
  133. package/dist/lib/toast.js +47 -0
  134. package/dist/lib/toast.js.map +1 -0
  135. package/dist/lib/tools-output.d.ts +6 -0
  136. package/dist/lib/tools-output.d.ts.map +1 -0
  137. package/dist/lib/tools-output.js +6 -0
  138. package/dist/lib/tools-output.js.map +1 -0
  139. package/dist/lib/types.d.ts +62 -0
  140. package/dist/lib/types.d.ts.map +1 -0
  141. package/dist/lib/types.js +2 -0
  142. package/dist/lib/types.js.map +1 -0
  143. package/dist/lib/ui/auth-menu-runner.d.ts +19 -0
  144. package/dist/lib/ui/auth-menu-runner.d.ts.map +1 -0
  145. package/dist/lib/ui/auth-menu-runner.js +79 -0
  146. package/dist/lib/ui/auth-menu-runner.js.map +1 -0
  147. package/dist/lib/ui/auth-menu.d.ts +80 -0
  148. package/dist/lib/ui/auth-menu.d.ts.map +1 -0
  149. package/dist/lib/ui/auth-menu.js +321 -0
  150. package/dist/lib/ui/auth-menu.js.map +1 -0
  151. package/dist/lib/ui/tty/ansi.d.ts +18 -0
  152. package/dist/lib/ui/tty/ansi.d.ts.map +1 -0
  153. package/dist/lib/ui/tty/ansi.js +37 -0
  154. package/dist/lib/ui/tty/ansi.js.map +1 -0
  155. package/dist/lib/ui/tty/confirm.d.ts +7 -0
  156. package/dist/lib/ui/tty/confirm.d.ts.map +1 -0
  157. package/dist/lib/ui/tty/confirm.js +20 -0
  158. package/dist/lib/ui/tty/confirm.js.map +1 -0
  159. package/dist/lib/ui/tty/select.d.ts +17 -0
  160. package/dist/lib/ui/tty/select.d.ts.map +1 -0
  161. package/dist/lib/ui/tty/select.js +223 -0
  162. package/dist/lib/ui/tty/select.js.map +1 -0
  163. package/package.json +68 -0
  164. package/schemas/codex-config.schema.json +146 -0
  165. package/schemas/opencode.schema.json +23 -0
@@ -0,0 +1,610 @@
1
+ import lockfile from "proper-lockfile";
2
+ import fs from "node:fs/promises";
3
+ import path from "node:path";
4
+ import { ensureIdentityKey, normalizeEmail, normalizePlan } from "./identity";
5
+ import { extractAccountIdFromClaims, extractEmailFromClaims, extractPlanFromClaims, parseJwtClaims } from "./claims";
6
+ import { quarantineFile } from "./quarantine";
7
+ import { defaultAuthPath, opencodeProviderAuthPath, legacyOpenAICodexAccountsPathFor } from "./paths";
8
+ function isObject(value) {
9
+ return typeof value === "object" && value !== null && !Array.isArray(value);
10
+ }
11
+ const ACCOUNT_AUTH_TYPE_ORDER = ["native", "codex"];
12
+ const OPENAI_AUTH_MODES = ["native", "codex"];
13
+ function normalizeAccountAuthTypes(input) {
14
+ const source = Array.isArray(input) ? input : ["native"];
15
+ const out = [];
16
+ const seen = new Set();
17
+ for (const rawType of source) {
18
+ const type = rawType === "codex" ? "codex" : rawType === "native" ? "native" : undefined;
19
+ if (!type || seen.has(type))
20
+ continue;
21
+ seen.add(type);
22
+ out.push(type);
23
+ }
24
+ if (out.length === 0)
25
+ out.push("native");
26
+ out.sort((a, b) => ACCOUNT_AUTH_TYPE_ORDER.indexOf(a) - ACCOUNT_AUTH_TYPE_ORDER.indexOf(b));
27
+ return out;
28
+ }
29
+ function ensureAccountAuthTypes(account) {
30
+ account.authTypes = normalizeAccountAuthTypes(account.authTypes);
31
+ }
32
+ function isOpenAIOAuthDomain(value) {
33
+ if (!isObject(value))
34
+ return false;
35
+ return Array.isArray(value.accounts);
36
+ }
37
+ function normalizeAccountRecord(account, authMode) {
38
+ const claims = typeof account.access === "string" && account.access.length > 0
39
+ ? parseJwtClaims(account.access)
40
+ : undefined;
41
+ if (!account.accountId)
42
+ account.accountId = extractAccountIdFromClaims(claims);
43
+ if (!account.email)
44
+ account.email = extractEmailFromClaims(claims);
45
+ if (!account.plan)
46
+ account.plan = extractPlanFromClaims(claims);
47
+ account.email = normalizeEmail(account.email);
48
+ account.plan = normalizePlan(account.plan);
49
+ if (account.accountId)
50
+ account.accountId = account.accountId.trim();
51
+ ensureIdentityKey(account);
52
+ if (authMode) {
53
+ account.authTypes = [authMode];
54
+ }
55
+ else {
56
+ ensureAccountAuthTypes(account);
57
+ }
58
+ }
59
+ function ensureDomainAccountHealth(domain, authMode) {
60
+ for (const account of domain.accounts) {
61
+ normalizeAccountRecord(account, authMode);
62
+ }
63
+ if (domain.activeIdentityKey &&
64
+ !domain.accounts.some((account) => account.identityKey === domain.activeIdentityKey)) {
65
+ const fallback = domain.accounts.find((account) => account.identityKey);
66
+ domain.activeIdentityKey = fallback?.identityKey;
67
+ }
68
+ }
69
+ function splitAccountsByAuthMode(accounts) {
70
+ const out = { native: [], codex: [] };
71
+ for (const account of accounts) {
72
+ const normalizedTypes = normalizeAccountAuthTypes(account.authTypes);
73
+ for (const authMode of normalizedTypes) {
74
+ const cloned = { ...account, authTypes: [authMode] };
75
+ normalizeAccountRecord(cloned, authMode);
76
+ out[authMode].push(cloned);
77
+ }
78
+ }
79
+ return out;
80
+ }
81
+ function mergeDomainAccounts(native, codex) {
82
+ const mergedByIdentity = new Map();
83
+ const fallbackAccounts = [];
84
+ const add = (authMode, account) => {
85
+ const identity = account.identityKey;
86
+ if (!identity) {
87
+ fallbackAccounts.push({ ...account, authTypes: [authMode] });
88
+ return;
89
+ }
90
+ const existing = mergedByIdentity.get(identity);
91
+ if (!existing) {
92
+ mergedByIdentity.set(identity, {
93
+ ...account,
94
+ authTypes: [authMode]
95
+ });
96
+ return;
97
+ }
98
+ const mergedTypes = normalizeAccountAuthTypes([...(existing.authTypes ?? []), authMode]);
99
+ const existingExpires = typeof existing.expires === "number" ? existing.expires : -Infinity;
100
+ const incomingExpires = typeof account.expires === "number" ? account.expires : -Infinity;
101
+ const preferIncoming = incomingExpires > existingExpires;
102
+ mergedByIdentity.set(identity, {
103
+ ...existing,
104
+ ...(preferIncoming ? account : {}),
105
+ authTypes: mergedTypes
106
+ });
107
+ };
108
+ for (const account of native?.accounts ?? [])
109
+ add("native", account);
110
+ for (const account of codex?.accounts ?? [])
111
+ add("codex", account);
112
+ const mergedAccounts = [...mergedByIdentity.values(), ...fallbackAccounts];
113
+ for (const account of mergedAccounts)
114
+ normalizeAccountRecord(account);
115
+ const mergedActiveIdentityKey = native?.activeIdentityKey && mergedByIdentity.has(native.activeIdentityKey)
116
+ ? native.activeIdentityKey
117
+ : codex?.activeIdentityKey && mergedByIdentity.has(codex.activeIdentityKey)
118
+ ? codex.activeIdentityKey
119
+ : mergedAccounts.find((account) => account.enabled !== false && account.identityKey)?.identityKey;
120
+ return {
121
+ strategy: native?.strategy ?? codex?.strategy,
122
+ accounts: mergedAccounts,
123
+ activeIdentityKey: mergedActiveIdentityKey
124
+ };
125
+ }
126
+ function normalizeOpenAIOAuthState(openai) {
127
+ const nativeDomain = isOpenAIOAuthDomain(openai.native)
128
+ ? {
129
+ strategy: openai.native.strategy,
130
+ accounts: [...openai.native.accounts],
131
+ activeIdentityKey: openai.native.activeIdentityKey
132
+ }
133
+ : undefined;
134
+ const codexDomain = isOpenAIOAuthDomain(openai.codex)
135
+ ? {
136
+ strategy: openai.codex.strategy,
137
+ accounts: [...openai.codex.accounts],
138
+ activeIdentityKey: openai.codex.activeIdentityKey
139
+ }
140
+ : undefined;
141
+ let normalizedNative = nativeDomain;
142
+ let normalizedCodex = codexDomain;
143
+ if (normalizedNative && normalizedNative.strategy === undefined && openai.strategy !== undefined) {
144
+ normalizedNative.strategy = openai.strategy;
145
+ }
146
+ if (normalizedCodex && normalizedCodex.strategy === undefined && openai.strategy !== undefined) {
147
+ normalizedCodex.strategy = openai.strategy;
148
+ }
149
+ if (!normalizedNative && !normalizedCodex) {
150
+ const split = splitAccountsByAuthMode(openai.accounts ?? []);
151
+ normalizedNative = {
152
+ strategy: openai.strategy,
153
+ accounts: split.native,
154
+ activeIdentityKey: openai.activeIdentityKey
155
+ };
156
+ normalizedCodex =
157
+ split.codex.length > 0
158
+ ? {
159
+ strategy: openai.strategy,
160
+ accounts: split.codex,
161
+ activeIdentityKey: openai.activeIdentityKey
162
+ }
163
+ : undefined;
164
+ }
165
+ if (normalizedNative)
166
+ ensureDomainAccountHealth(normalizedNative, "native");
167
+ if (normalizedCodex)
168
+ ensureDomainAccountHealth(normalizedCodex, "codex");
169
+ const merged = mergeDomainAccounts(normalizedNative, normalizedCodex);
170
+ return {
171
+ type: "oauth",
172
+ strategy: merged.strategy,
173
+ accounts: merged.accounts,
174
+ activeIdentityKey: merged.activeIdentityKey,
175
+ ...(normalizedNative ? { native: normalizedNative } : {}),
176
+ ...(normalizedCodex ? { codex: normalizedCodex } : {})
177
+ };
178
+ }
179
+ function isMultiOauthAuth(value) {
180
+ if (!isObject(value))
181
+ return false;
182
+ if (value.type !== "oauth")
183
+ return false;
184
+ return (Array.isArray(value.accounts) ||
185
+ isOpenAIOAuthDomain(value.native) ||
186
+ isOpenAIOAuthDomain(value.codex));
187
+ }
188
+ function isLegacyOauthAuth(value) {
189
+ if (!isObject(value))
190
+ return false;
191
+ if (value.type !== "oauth")
192
+ return false;
193
+ return (typeof value.refresh === "string" &&
194
+ typeof value.access === "string" &&
195
+ typeof value.expires === "number");
196
+ }
197
+ function sanitizeAuthFile(input) {
198
+ if (input.openai) {
199
+ return { openai: input.openai };
200
+ }
201
+ return {};
202
+ }
203
+ function hasUsableOpenAIOAuth(auth) {
204
+ const openai = auth.openai;
205
+ if (!openai || openai.type !== "oauth")
206
+ return false;
207
+ if (isMultiOauthAuth(openai)) {
208
+ const normalized = normalizeOpenAIOAuthState(openai);
209
+ return OPENAI_AUTH_MODES.some((authMode) => {
210
+ const domain = normalized[authMode];
211
+ if (!domain)
212
+ return false;
213
+ return domain.accounts.some((account) => typeof account.refresh === "string" && account.refresh.trim().length > 0);
214
+ });
215
+ }
216
+ return isLegacyOauthAuth(openai) && openai.refresh.trim().length > 0;
217
+ }
218
+ function migrateAuthFile(input) {
219
+ const auth = input ?? {};
220
+ const openai = auth.openai;
221
+ if (!openai || openai.type !== "oauth")
222
+ return auth;
223
+ if (isMultiOauthAuth(openai)) {
224
+ auth.openai = normalizeOpenAIOAuthState(openai);
225
+ return auth;
226
+ }
227
+ if (!isLegacyOauthAuth(openai))
228
+ return auth;
229
+ const claims = parseJwtClaims(openai.access);
230
+ const account = ensureIdentityKey({
231
+ access: openai.access,
232
+ refresh: openai.refresh,
233
+ expires: openai.expires,
234
+ accountId: openai.accountId || extractAccountIdFromClaims(claims),
235
+ email: openai.email || extractEmailFromClaims(claims),
236
+ plan: openai.plan || extractPlanFromClaims(claims),
237
+ authTypes: ["native"],
238
+ enabled: true
239
+ });
240
+ const migrated = {
241
+ type: "oauth",
242
+ accounts: [],
243
+ native: {
244
+ accounts: [account],
245
+ activeIdentityKey: account.identityKey
246
+ }
247
+ };
248
+ auth.openai = normalizeOpenAIOAuthState(migrated);
249
+ return auth;
250
+ }
251
+ function migrateLegacyCodexAccounts(input) {
252
+ if (isObject(input.openai))
253
+ return undefined;
254
+ const rawAccounts = Array.isArray(input.accounts) ? input.accounts : undefined;
255
+ if (!rawAccounts || rawAccounts.length === 0)
256
+ return undefined;
257
+ const mappedAccounts = [];
258
+ for (const raw of rawAccounts) {
259
+ if (!isObject(raw))
260
+ continue;
261
+ const source = raw;
262
+ const refreshToken = typeof source.refreshToken === "string" ? source.refreshToken.trim() : "";
263
+ if (!refreshToken)
264
+ continue;
265
+ const accessToken = typeof source.accessToken === "string"
266
+ ? source.accessToken
267
+ : typeof source.access === "string"
268
+ ? source.access
269
+ : undefined;
270
+ const claims = accessToken ? parseJwtClaims(accessToken) : undefined;
271
+ const account = ensureIdentityKey({
272
+ refresh: refreshToken,
273
+ access: accessToken,
274
+ expires: typeof source.expiresAt === "number"
275
+ ? source.expiresAt
276
+ : typeof source.expires === "number"
277
+ ? source.expires
278
+ : 0,
279
+ accountId: typeof source.accountId === "string" ? source.accountId : extractAccountIdFromClaims(claims),
280
+ email: typeof source.email === "string" ? source.email : extractEmailFromClaims(claims),
281
+ plan: typeof source.plan === "string" ? source.plan : extractPlanFromClaims(claims),
282
+ authTypes: normalizeAccountAuthTypes(source.authTypes),
283
+ enabled: typeof source.enabled === "boolean" ? source.enabled : true
284
+ });
285
+ ensureAccountAuthTypes(account);
286
+ if (typeof source.lastUsed === "number") {
287
+ account.lastUsed = source.lastUsed;
288
+ }
289
+ const cooldownUntil = typeof source.cooldownUntil === "number"
290
+ ? source.cooldownUntil
291
+ : typeof source.coolingDownUntil === "number"
292
+ ? source.coolingDownUntil
293
+ : undefined;
294
+ if (typeof cooldownUntil === "number") {
295
+ account.cooldownUntil = cooldownUntil;
296
+ }
297
+ mappedAccounts.push(account);
298
+ }
299
+ if (mappedAccounts.length === 0)
300
+ return undefined;
301
+ const activeIndex = typeof input.activeIndex === "number" ? Math.floor(input.activeIndex) : 0;
302
+ const safeActiveIndex = activeIndex >= 0 && activeIndex < mappedAccounts.length ? activeIndex : 0;
303
+ const activeIdentityKey = mappedAccounts[safeActiveIndex]?.identityKey;
304
+ const auth = {
305
+ openai: {
306
+ type: "oauth",
307
+ accounts: mappedAccounts,
308
+ ...(activeIdentityKey ? { activeIdentityKey } : {})
309
+ }
310
+ };
311
+ return migrateAuthFile(auth);
312
+ }
313
+ async function readAuthUnlocked(filePath, opts) {
314
+ let raw;
315
+ try {
316
+ raw = await fs.readFile(filePath, "utf8");
317
+ }
318
+ catch (error) {
319
+ if (error && typeof error === "object" && "code" in error && error.code === "ENOENT") {
320
+ return {};
321
+ }
322
+ throw error;
323
+ }
324
+ try {
325
+ const parsed = JSON.parse(raw);
326
+ if (!isObject(parsed))
327
+ return {};
328
+ const legacyMigrated = migrateLegacyCodexAccounts(parsed);
329
+ if (legacyMigrated)
330
+ return sanitizeAuthFile(legacyMigrated);
331
+ return sanitizeAuthFile(migrateAuthFile(parsed));
332
+ }
333
+ catch (error) {
334
+ if (opts?.quarantineDir && opts.now) {
335
+ await quarantineFile({
336
+ sourcePath: filePath,
337
+ quarantineDir: opts.quarantineDir,
338
+ now: opts.now,
339
+ keep: opts.keep
340
+ }).catch(() => { });
341
+ return {};
342
+ }
343
+ throw error;
344
+ }
345
+ }
346
+ export async function shouldOfferLegacyTransfer(filePath = defaultAuthPath()) {
347
+ try {
348
+ await fs.access(filePath);
349
+ return false;
350
+ }
351
+ catch {
352
+ // codex-accounts.json missing; check legacy/native sources
353
+ }
354
+ const legacyCandidates = [legacyOpenAICodexAccountsPathFor(filePath), opencodeProviderAuthPath()];
355
+ for (const legacyPath of legacyCandidates) {
356
+ try {
357
+ await fs.access(legacyPath);
358
+ const legacyAuth = await readAuthUnlocked(legacyPath);
359
+ if (hasUsableOpenAIOAuth(legacyAuth)) {
360
+ return true;
361
+ }
362
+ }
363
+ catch {
364
+ // check next source
365
+ }
366
+ }
367
+ return false;
368
+ }
369
+ function ensureMultiOauthState(auth) {
370
+ const openai = auth.openai;
371
+ if (!openai || openai.type !== "oauth") {
372
+ const created = {
373
+ type: "oauth",
374
+ accounts: [],
375
+ native: { accounts: [] }
376
+ };
377
+ auth.openai = normalizeOpenAIOAuthState(created);
378
+ return auth.openai;
379
+ }
380
+ if (!isMultiOauthAuth(openai)) {
381
+ const migrated = migrateAuthFile({ openai }).openai;
382
+ if (migrated && isMultiOauthAuth(migrated)) {
383
+ auth.openai = normalizeOpenAIOAuthState(migrated);
384
+ return auth.openai;
385
+ }
386
+ const created = {
387
+ type: "oauth",
388
+ accounts: [],
389
+ native: { accounts: [] }
390
+ };
391
+ auth.openai = normalizeOpenAIOAuthState(created);
392
+ return auth.openai;
393
+ }
394
+ auth.openai = normalizeOpenAIOAuthState(openai);
395
+ return auth.openai;
396
+ }
397
+ function upsertDomainAccount(domain, input, authMode) {
398
+ const incoming = { ...input, authTypes: [authMode] };
399
+ normalizeAccountRecord(incoming, authMode);
400
+ const incomingIdentity = incoming.identityKey;
401
+ const incomingRefresh = typeof incoming.refresh === "string" ? incoming.refresh : "";
402
+ const matchIndex = domain.accounts.findIndex((existing) => {
403
+ normalizeAccountRecord(existing, authMode);
404
+ if (incomingIdentity && existing.identityKey === incomingIdentity)
405
+ return true;
406
+ if (!incomingIdentity && incomingRefresh && existing.refresh === incomingRefresh)
407
+ return true;
408
+ return false;
409
+ });
410
+ if (matchIndex < 0) {
411
+ domain.accounts.push(incoming);
412
+ return true;
413
+ }
414
+ const existing = domain.accounts[matchIndex];
415
+ if (!existing)
416
+ return false;
417
+ const existingExpires = typeof existing.expires === "number" ? existing.expires : -Infinity;
418
+ const incomingExpires = typeof incoming.expires === "number" ? incoming.expires : -Infinity;
419
+ const preferIncoming = incomingExpires >= existingExpires;
420
+ domain.accounts[matchIndex] = preferIncoming
421
+ ? { ...existing, ...incoming, authTypes: [authMode] }
422
+ : { ...incoming, ...existing, authTypes: [authMode] };
423
+ normalizeAccountRecord(domain.accounts[matchIndex], authMode);
424
+ return false;
425
+ }
426
+ export async function importLegacyInstallData(filePath = defaultAuthPath()) {
427
+ return withFileLock(filePath, async () => {
428
+ const current = sanitizeAuthFile(migrateAuthFile(await readAuthUnlocked(filePath)));
429
+ const nextOpenAI = ensureMultiOauthState(current);
430
+ current.openai = nextOpenAI;
431
+ let imported = 0;
432
+ let sourcesUsed = 0;
433
+ const legacyCandidates = [legacyOpenAICodexAccountsPathFor(filePath), opencodeProviderAuthPath()];
434
+ for (const legacyPath of legacyCandidates) {
435
+ if (legacyPath === filePath)
436
+ continue;
437
+ try {
438
+ await fs.access(legacyPath);
439
+ }
440
+ catch {
441
+ continue;
442
+ }
443
+ const legacyAuth = await readAuthUnlocked(legacyPath);
444
+ if (!hasUsableOpenAIOAuth(legacyAuth))
445
+ continue;
446
+ sourcesUsed += 1;
447
+ const legacyOpenAI = legacyAuth.openai;
448
+ if (!legacyOpenAI || legacyOpenAI.type !== "oauth")
449
+ continue;
450
+ const normalizedLegacy = normalizeOpenAIOAuthState(isMultiOauthAuth(legacyOpenAI)
451
+ ? legacyOpenAI
452
+ : migrateAuthFile({ openai: legacyOpenAI }).openai);
453
+ for (const mode of OPENAI_AUTH_MODES) {
454
+ const sourceDomain = normalizedLegacy[mode];
455
+ if (!sourceDomain)
456
+ continue;
457
+ const targetDomain = ensureOpenAIOAuthDomain(current, mode);
458
+ if (targetDomain.strategy === undefined && sourceDomain.strategy !== undefined) {
459
+ targetDomain.strategy = sourceDomain.strategy;
460
+ }
461
+ for (const account of sourceDomain.accounts) {
462
+ if (upsertDomainAccount(targetDomain, account, mode)) {
463
+ imported += 1;
464
+ }
465
+ }
466
+ if (sourceDomain.activeIdentityKey &&
467
+ targetDomain.accounts.some((account) => account.identityKey === sourceDomain.activeIdentityKey)) {
468
+ targetDomain.activeIdentityKey = sourceDomain.activeIdentityKey;
469
+ }
470
+ }
471
+ }
472
+ current.openai = normalizeOpenAIOAuthState(current.openai);
473
+ await writeAuthUnlocked(filePath, current);
474
+ return { imported, sourcesUsed };
475
+ });
476
+ }
477
+ export function getOpenAIOAuthDomain(auth, authMode) {
478
+ const openai = auth.openai;
479
+ if (!openai || openai.type !== "oauth" || !isMultiOauthAuth(openai))
480
+ return undefined;
481
+ const normalized = normalizeOpenAIOAuthState(openai);
482
+ auth.openai = normalized;
483
+ return normalized[authMode];
484
+ }
485
+ export function ensureOpenAIOAuthDomain(auth, authMode) {
486
+ const openai = requireOpenAIMultiOauthAuth(auth);
487
+ const normalized = normalizeOpenAIOAuthState(openai);
488
+ auth.openai = normalized;
489
+ const existing = normalized[authMode];
490
+ if (existing)
491
+ return existing;
492
+ const created = {
493
+ strategy: normalized.strategy,
494
+ accounts: []
495
+ };
496
+ if (authMode === "native")
497
+ normalized.native = created;
498
+ else
499
+ normalized.codex = created;
500
+ auth.openai = normalizeOpenAIOAuthState(normalized);
501
+ return auth.openai[authMode];
502
+ }
503
+ export function listOpenAIOAuthDomains(auth) {
504
+ const out = [];
505
+ for (const mode of OPENAI_AUTH_MODES) {
506
+ const domain = getOpenAIOAuthDomain(auth, mode);
507
+ if (!domain)
508
+ continue;
509
+ out.push({ mode, domain });
510
+ }
511
+ return out;
512
+ }
513
+ async function writeAuthUnlocked(filePath, auth) {
514
+ const tmpPath = `${filePath}.tmp`;
515
+ const serialized = `${JSON.stringify(auth, null, 2)}\n`;
516
+ await fs.writeFile(tmpPath, serialized, { mode: 0o600 });
517
+ await fs.rename(tmpPath, filePath);
518
+ try {
519
+ await fs.chmod(filePath, 0o600);
520
+ }
521
+ catch {
522
+ // best-effort permissions
523
+ }
524
+ }
525
+ async function withFileLock(filePath, fn) {
526
+ await fs.mkdir(path.dirname(filePath), { recursive: true });
527
+ const release = await lockfile.lock(filePath, {
528
+ realpath: false,
529
+ retries: {
530
+ retries: 20,
531
+ minTimeout: 10,
532
+ maxTimeout: 100
533
+ }
534
+ });
535
+ try {
536
+ return await fn();
537
+ }
538
+ finally {
539
+ await release();
540
+ }
541
+ }
542
+ export async function loadAuthStorage(filePath = defaultAuthPath(), opts) {
543
+ return withFileLock(filePath, async () => readAuthUnlocked(filePath, opts));
544
+ }
545
+ export async function saveAuthStorage(filePath = defaultAuthPath(), update) {
546
+ return withFileLock(filePath, async () => {
547
+ const current = await readAuthUnlocked(filePath);
548
+ const result = await update(current);
549
+ const nextBase = result === undefined ? current : result;
550
+ const next = sanitizeAuthFile(migrateAuthFile(nextBase));
551
+ await writeAuthUnlocked(filePath, next);
552
+ return next;
553
+ });
554
+ }
555
+ export async function setAccountCooldown(filePath = defaultAuthPath(), identityKey, cooldownUntil, authMode = "native") {
556
+ return saveAuthStorage(filePath, (auth) => {
557
+ const domain = ensureOpenAIOAuthDomain(auth, authMode);
558
+ const acc = domain.accounts.find((a) => a.identityKey === identityKey);
559
+ if (acc && acc.enabled !== false) {
560
+ acc.cooldownUntil = cooldownUntil;
561
+ }
562
+ });
563
+ }
564
+ export async function updateAccountTokensByIdentityKey(filePath = defaultAuthPath(), identityKey, input, authMode = "native") {
565
+ return saveAuthStorage(filePath, (auth) => {
566
+ const domain = ensureOpenAIOAuthDomain(auth, authMode);
567
+ const acc = domain.accounts.find((a) => a.identityKey === identityKey);
568
+ if (acc && acc.enabled !== false) {
569
+ acc.access = input.access;
570
+ acc.refresh = input.refresh;
571
+ acc.expires = input.expires;
572
+ }
573
+ });
574
+ }
575
+ export function requireOpenAIMultiOauthAuth(auth) {
576
+ const openai = auth.openai;
577
+ if (!openai || openai.type !== "oauth") {
578
+ throw new Error("OpenAI OAuth not configured");
579
+ }
580
+ if (isMultiOauthAuth(openai)) {
581
+ const normalized = normalizeOpenAIOAuthState(openai);
582
+ auth.openai = normalized;
583
+ return normalized;
584
+ }
585
+ if (isLegacyOauthAuth(openai)) {
586
+ const account = ensureIdentityKey({
587
+ access: openai.access,
588
+ refresh: openai.refresh,
589
+ expires: openai.expires,
590
+ accountId: openai.accountId,
591
+ email: openai.email,
592
+ plan: openai.plan,
593
+ authTypes: ["native"],
594
+ enabled: true
595
+ });
596
+ const migrated = {
597
+ type: "oauth",
598
+ accounts: [],
599
+ native: {
600
+ accounts: [account],
601
+ activeIdentityKey: account.identityKey
602
+ }
603
+ };
604
+ const normalized = normalizeOpenAIOAuthState(migrated);
605
+ auth.openai = normalized;
606
+ return normalized;
607
+ }
608
+ throw new Error("Invalid OpenAI OAuth config");
609
+ }
610
+ //# sourceMappingURL=storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../lib/storage.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,iBAAiB,CAAA;AAEtC,OAAO,EAAE,MAAM,kBAAkB,CAAA;AACjC,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,aAAa,EACd,MAAM,YAAY,CAAA;AACnB,OAAO,EACL,0BAA0B,EAC1B,sBAAsB,EACtB,qBAAqB,EACrB,cAAc,EACf,MAAM,UAAU,CAAA;AACjB,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAEL,eAAe,EACf,wBAAwB,EACxB,gCAAgC,EACjC,MAAM,SAAS,CAAA;AAUhB,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;AAC7E,CAAC;AA4BD,MAAM,uBAAuB,GAAsB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;AACtE,MAAM,iBAAiB,GAAqB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;AAE/D,SAAS,yBAAyB,CAAC,KAAc;IAC/C,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAA;IACxD,MAAM,GAAG,GAAsB,EAAE,CAAA;IACjC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAmB,CAAA;IAEvC,KAAK,MAAM,OAAO,IAAI,MAAM,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAA;QACxF,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,SAAQ;QACrC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACd,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAChB,CAAC;IAED,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACxC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;IAC3F,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,SAAS,sBAAsB,CAAC,OAAsB;IACpD,OAAO,CAAC,SAAS,GAAG,yBAAyB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;AAClE,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAc;IACzC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IAClC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;AACtC,CAAC;AAED,SAAS,sBAAsB,CAAC,OAAsB,EAAE,QAAyB;IAC/E,MAAM,MAAM,GACV,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;QAC7D,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC;QAChC,CAAC,CAAC,SAAS,CAAA;IACf,IAAI,CAAC,OAAO,CAAC,SAAS;QAAE,OAAO,CAAC,SAAS,GAAG,0BAA0B,CAAC,MAAM,CAAC,CAAA;IAC9E,IAAI,CAAC,OAAO,CAAC,KAAK;QAAE,OAAO,CAAC,KAAK,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAA;IAClE,IAAI,CAAC,OAAO,CAAC,IAAI;QAAE,OAAO,CAAC,IAAI,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAA;IAC/D,OAAO,CAAC,KAAK,GAAG,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IAC7C,OAAO,CAAC,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IAC1C,IAAI,OAAO,CAAC,SAAS;QAAE,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,CAAA;IACnE,iBAAiB,CAAC,OAAO,CAAC,CAAA;IAC1B,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,CAAC,SAAS,GAAG,CAAC,QAAQ,CAAC,CAAA;IAChC,CAAC;SAAM,CAAC;QACN,sBAAsB,CAAC,OAAO,CAAC,CAAA;IACjC,CAAC;AACH,CAAC;AAED,SAAS,yBAAyB,CAAC,MAAyB,EAAE,QAAwB;IACpF,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACtC,sBAAsB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;IAC3C,CAAC;IAED,IACE,MAAM,CAAC,iBAAiB;QACxB,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW,KAAK,MAAM,CAAC,iBAAiB,CAAC,EACpF,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;QACvE,MAAM,CAAC,iBAAiB,GAAG,QAAQ,EAAE,WAAW,CAAA;IAClD,CAAC;AACH,CAAC;AAED,SAAS,uBAAuB,CAAC,QAAyB;IACxD,MAAM,GAAG,GAA4C,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAA;IAC9E,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,eAAe,GAAG,yBAAyB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;QACpE,KAAK,MAAM,QAAQ,IAAI,eAAe,EAAE,CAAC;YACvC,MAAM,MAAM,GAAkB,EAAE,GAAG,OAAO,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAA;YACnE,sBAAsB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;YACxC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC5B,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,SAAS,mBAAmB,CAAC,MAA0B,EAAE,KAAyB;IAChF,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAyB,CAAA;IACzD,MAAM,gBAAgB,GAAoB,EAAE,CAAA;IAE5C,MAAM,GAAG,GAAG,CAAC,QAAwB,EAAE,OAAsB,EAAE,EAAE;QAC/D,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAA;QACpC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,gBAAgB,CAAC,IAAI,CAAC,EAAE,GAAG,OAAO,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;YAC5D,OAAM;QACR,CAAC;QAED,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QAC/C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,gBAAgB,CAAC,GAAG,CAAC,QAAQ,EAAE;gBAC7B,GAAG,OAAO;gBACV,SAAS,EAAE,CAAC,QAAQ,CAAC;aACtB,CAAC,CAAA;YACF,OAAM;QACR,CAAC;QAED,MAAM,WAAW,GAAG,yBAAyB,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,IAAI,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAA;QACxF,MAAM,eAAe,GAAG,OAAO,QAAQ,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAA;QAC3F,MAAM,eAAe,GAAG,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAA;QACzF,MAAM,cAAc,GAAG,eAAe,GAAG,eAAe,CAAA;QAExD,gBAAgB,CAAC,GAAG,CAAC,QAAQ,EAAE;YAC7B,GAAG,QAAQ;YACX,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YAClC,SAAS,EAAE,WAAW;SACvB,CAAC,CAAA;IACJ,CAAC,CAAA;IAED,KAAK,MAAM,OAAO,IAAI,MAAM,EAAE,QAAQ,IAAI,EAAE;QAAE,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IACpE,KAAK,MAAM,OAAO,IAAI,KAAK,EAAE,QAAQ,IAAI,EAAE;QAAE,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IAElE,MAAM,cAAc,GAAG,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,EAAE,GAAG,gBAAgB,CAAC,CAAA;IAC1E,KAAK,MAAM,OAAO,IAAI,cAAc;QAAE,sBAAsB,CAAC,OAAO,CAAC,CAAA;IAErE,MAAM,uBAAuB,GAC3B,MAAM,EAAE,iBAAiB,IAAI,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,iBAAiB,CAAC;QACzE,CAAC,CAAC,MAAM,CAAC,iBAAiB;QAC1B,CAAC,CAAC,KAAK,EAAE,iBAAiB,IAAI,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC;YACzE,CAAC,CAAC,KAAK,CAAC,iBAAiB;YACzB,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,KAAK,KAAK,IAAI,OAAO,CAAC,WAAW,CAAC,EAAE,WAAW,CAAA;IAEvG,OAAO;QACL,QAAQ,EAAE,MAAM,EAAE,QAAQ,IAAI,KAAK,EAAE,QAAQ;QAC7C,QAAQ,EAAE,cAAc;QACxB,iBAAiB,EAAE,uBAAuB;KAC3C,CAAA;AACH,CAAC;AAED,SAAS,yBAAyB,CAAC,MAA4B;IAC7D,MAAM,YAAY,GAAG,mBAAmB,CAAC,MAAM,CAAC,MAAM,CAAC;QACrD,CAAC,CAAC;YACE,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ;YAChC,QAAQ,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;YACrC,iBAAiB,EAAE,MAAM,CAAC,MAAM,CAAC,iBAAiB;SACnD;QACH,CAAC,CAAC,SAAS,CAAA;IACb,MAAM,WAAW,GAAG,mBAAmB,CAAC,MAAM,CAAC,KAAK,CAAC;QACnD,CAAC,CAAC;YACE,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ;YAC/B,QAAQ,EAAE,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC;YACpC,iBAAiB,EAAE,MAAM,CAAC,KAAK,CAAC,iBAAiB;SAClD;QACH,CAAC,CAAC,SAAS,CAAA;IAEb,IAAI,gBAAgB,GAAG,YAAY,CAAA;IACnC,IAAI,eAAe,GAAG,WAAW,CAAA;IAEjC,IAAI,gBAAgB,IAAI,gBAAgB,CAAC,QAAQ,KAAK,SAAS,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACjG,gBAAgB,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAA;IAC7C,CAAC;IACD,IAAI,eAAe,IAAI,eAAe,CAAC,QAAQ,KAAK,SAAS,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC/F,eAAe,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAA;IAC5C,CAAC;IAED,IAAI,CAAC,gBAAgB,IAAI,CAAC,eAAe,EAAE,CAAC;QAC1C,MAAM,KAAK,GAAG,uBAAuB,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAA;QAC5D,gBAAgB,GAAG;YACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,QAAQ,EAAE,KAAK,CAAC,MAAM;YACtB,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;SAC5C,CAAA;QACD,eAAe;YACb,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;gBACpB,CAAC,CAAC;oBACE,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,QAAQ,EAAE,KAAK,CAAC,KAAK;oBACrB,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;iBAC5C;gBACH,CAAC,CAAC,SAAS,CAAA;IACjB,CAAC;IAED,IAAI,gBAAgB;QAAE,yBAAyB,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAA;IAC3E,IAAI,eAAe;QAAE,yBAAyB,CAAC,eAAe,EAAE,OAAO,CAAC,CAAA;IAExE,MAAM,MAAM,GAAG,mBAAmB,CAAC,gBAAgB,EAAE,eAAe,CAAC,CAAA;IACrE,OAAO;QACL,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;QAC3C,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzD,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACvD,CAAA;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc;IACtC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IAClC,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,KAAK,CAAA;IACxC,OAAO,CACL,KAAK,CAAC,OAAO,CAAE,KAAgC,CAAC,QAAQ,CAAC;QACzD,mBAAmB,CAAE,KAA8B,CAAC,MAAM,CAAC;QAC3D,mBAAmB,CAAE,KAA6B,CAAC,KAAK,CAAC,CAC1D,CAAA;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAc;IACvC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IAClC,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,KAAK,CAAA;IACxC,OAAO,CACL,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ;QACjC,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ;QAChC,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,CAClC,CAAA;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAe;IACvC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACjB,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAA;IACjC,CAAC;IACD,OAAO,EAAE,CAAA;AACX,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAc;IAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;IAC1B,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,KAAK,CAAA;IACpD,IAAI,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7B,MAAM,UAAU,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAA;QACpD,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;YACzC,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAA;YACnC,IAAI,CAAC,MAAM;gBAAE,OAAO,KAAK,CAAA;YACzB,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CACzB,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CACtF,CAAA;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IACD,OAAO,iBAAiB,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAA;AACtE,CAAC;AAED,SAAS,eAAe,CAAC,KAAe;IACtC,MAAM,IAAI,GAAa,KAAK,IAAI,EAAE,CAAA;IAClC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;IAC1B,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,IAAI,CAAA;IACnD,IAAI,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7B,IAAI,CAAC,MAAM,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAA;QAC/C,OAAO,IAAI,CAAA;IACb,CAAC;IACD,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAA;IAC3C,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IAE5C,MAAM,OAAO,GAAkB,iBAAiB,CAAC;QAC/C,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,0BAA0B,CAAC,MAAM,CAAC;QACjE,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,sBAAsB,CAAC,MAAM,CAAC;QACrD,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,qBAAqB,CAAC,MAAM,CAAC;QAClD,SAAS,EAAE,CAAC,QAAQ,CAAC;QACrB,OAAO,EAAE,IAAI;KACd,CAAC,CAAA;IAEF,MAAM,QAAQ,GAAyB;QACrC,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,EAAE;QACZ,MAAM,EAAE;YACN,QAAQ,EAAE,CAAC,OAAO,CAAC;YACnB,iBAAiB,EAAE,OAAO,CAAC,WAAW;SACvC;KACF,CAAA;IAED,IAAI,CAAC,MAAM,GAAG,yBAAyB,CAAC,QAAQ,CAAC,CAAA;IACjD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAS,0BAA0B,CAAC,KAA8B;IAChE,IAAI,QAAQ,CAAE,KAA8B,CAAC,MAAM,CAAC;QAAE,OAAO,SAAS,CAAA;IACtE,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAA;IAC9E,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAA;IAE9D,MAAM,cAAc,GAAoB,EAAE,CAAA;IAC1C,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAC9B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,SAAQ;QAC5B,MAAM,MAAM,GAAG,GAAgC,CAAA;QAC/C,MAAM,YAAY,GAAG,OAAO,MAAM,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;QAC9F,IAAI,CAAC,YAAY;YAAE,SAAQ;QAE3B,MAAM,WAAW,GACf,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ;YACpC,CAAC,CAAC,MAAM,CAAC,WAAW;YACpB,CAAC,CAAC,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ;gBACjC,CAAC,CAAC,MAAM,CAAC,MAAM;gBACf,CAAC,CAAC,SAAS,CAAA;QACjB,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;QACpE,MAAM,OAAO,GAAkB,iBAAiB,CAAC;YAC/C,OAAO,EAAE,YAAY;YACrB,MAAM,EAAE,WAAW;YACnB,OAAO,EACL,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ;gBAClC,CAAC,CAAC,MAAM,CAAC,SAAS;gBAClB,CAAC,CAAC,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ;oBAClC,CAAC,CAAC,MAAM,CAAC,OAAO;oBAChB,CAAC,CAAC,CAAC;YACT,SAAS,EACP,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,0BAA0B,CAAC,MAAM,CAAC;YAC9F,KAAK,EAAE,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,sBAAsB,CAAC,MAAM,CAAC;YACvF,IAAI,EAAE,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,qBAAqB,CAAC,MAAM,CAAC;YACnF,SAAS,EAAE,yBAAyB,CAAC,MAAM,CAAC,SAAS,CAAC;YACtD,OAAO,EAAE,OAAO,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;SACrE,CAAC,CAAA;QACF,sBAAsB,CAAC,OAAO,CAAC,CAAA;QAE/B,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACxC,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAA;QACpC,CAAC;QAED,MAAM,aAAa,GACjB,OAAO,MAAM,CAAC,aAAa,KAAK,QAAQ;YACtC,CAAC,CAAC,MAAM,CAAC,aAAa;YACtB,CAAC,CAAC,OAAO,MAAM,CAAC,gBAAgB,KAAK,QAAQ;gBAC3C,CAAC,CAAC,MAAM,CAAC,gBAAgB;gBACzB,CAAC,CAAC,SAAS,CAAA;QACjB,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE,CAAC;YACtC,OAAO,CAAC,aAAa,GAAG,aAAa,CAAA;QACvC,CAAC;QAED,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC9B,CAAC;IAED,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAA;IAEjD,MAAM,WAAW,GAAG,OAAO,KAAK,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAC7F,MAAM,eAAe,GACnB,WAAW,IAAI,CAAC,IAAI,WAAW,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAA;IAC3E,MAAM,iBAAiB,GAAG,cAAc,CAAC,eAAe,CAAC,EAAE,WAAW,CAAA;IAEtE,MAAM,IAAI,GAAa;QACrB,MAAM,EAAE;YACN,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,cAAc;YACxB,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACpD;KACF,CAAA;IACD,OAAO,eAAe,CAAC,IAAI,CAAC,CAAA;AAC9B,CAAC;AAED,KAAK,UAAU,gBAAgB,CAC7B,QAAgB,EAChB,IAAkE;IAElE,IAAI,GAAW,CAAA;IACf,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;IAC3C,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACrF,OAAO,EAAE,CAAA;QACX,CAAC;QACD,MAAM,KAAK,CAAA;IACb,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACvC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,EAAE,CAAA;QAChC,MAAM,cAAc,GAAG,0BAA0B,CAAC,MAAM,CAAC,CAAA;QACzD,IAAI,cAAc;YAAE,OAAO,gBAAgB,CAAC,cAAc,CAAC,CAAA;QAC3D,OAAO,gBAAgB,CAAC,eAAe,CAAC,MAAkB,CAAC,CAAC,CAAA;IAC9D,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,IAAI,IAAI,EAAE,aAAa,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YACpC,MAAM,cAAc,CAAC;gBACnB,UAAU,EAAE,QAAQ;gBACpB,aAAa,EAAE,IAAI,CAAC,aAAa;gBACjC,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,IAAI,EAAE,IAAI,CAAC,IAAI;aAChB,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;YAClB,OAAO,EAAE,CAAA;QACX,CAAC;QACD,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,WAAmB,eAAe,EAAE;IAClF,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QACzB,OAAO,KAAK,CAAA;IACd,CAAC;IAAC,MAAM,CAAC;QACP,2DAA2D;IAC7D,CAAC;IAED,MAAM,gBAAgB,GAAG,CAAC,gCAAgC,CAAC,QAAQ,CAAC,EAAE,wBAAwB,EAAE,CAAC,CAAA;IACjG,KAAK,MAAM,UAAU,IAAI,gBAAgB,EAAE,CAAC;QAC1C,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;YAC3B,MAAM,UAAU,GAAG,MAAM,gBAAgB,CAAC,UAAU,CAAC,CAAA;YACrD,IAAI,oBAAoB,CAAC,UAAU,CAAC,EAAE,CAAC;gBACrC,OAAO,IAAI,CAAA;YACb,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,oBAAoB;QACtB,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAc;IAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;IAC1B,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QACvC,MAAM,OAAO,GAAyB;YACpC,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,EAAE;YACZ,MAAM,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;SACzB,CAAA;QACD,IAAI,CAAC,MAAM,GAAG,yBAAyB,CAAC,OAAO,CAAC,CAAA;QAChD,OAAO,IAAI,CAAC,MAA8B,CAAA;IAC5C,CAAC;IACD,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9B,MAAM,QAAQ,GAAG,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAA;QACnD,IAAI,QAAQ,IAAI,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC3C,IAAI,CAAC,MAAM,GAAG,yBAAyB,CAAC,QAAQ,CAAC,CAAA;YACjD,OAAO,IAAI,CAAC,MAA8B,CAAA;QAC5C,CAAC;QACD,MAAM,OAAO,GAAyB;YACpC,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,EAAE;YACZ,MAAM,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;SACzB,CAAA;QACD,IAAI,CAAC,MAAM,GAAG,yBAAyB,CAAC,OAAO,CAAC,CAAA;QAChD,OAAO,IAAI,CAAC,MAA8B,CAAA;IAC5C,CAAC;IACD,IAAI,CAAC,MAAM,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAA;IAC/C,OAAO,IAAI,CAAC,MAA8B,CAAA;AAC5C,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAyB,EAAE,KAAoB,EAAE,QAAwB;IACpG,MAAM,QAAQ,GAAkB,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAA;IACnE,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;IAE1C,MAAM,gBAAgB,GAAG,QAAQ,CAAC,WAAW,CAAA;IAC7C,MAAM,eAAe,GAAG,OAAO,QAAQ,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAA;IACpF,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,EAAE;QACxD,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;QAC1C,IAAI,gBAAgB,IAAI,QAAQ,CAAC,WAAW,KAAK,gBAAgB;YAAE,OAAO,IAAI,CAAA;QAC9E,IAAI,CAAC,gBAAgB,IAAI,eAAe,IAAI,QAAQ,CAAC,OAAO,KAAK,eAAe;YAAE,OAAO,IAAI,CAAA;QAC7F,OAAO,KAAK,CAAA;IACd,CAAC,CAAC,CAAA;IAEF,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;QACnB,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC9B,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;IAC5C,IAAI,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAA;IAC3B,MAAM,eAAe,GAAG,OAAO,QAAQ,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAA;IAC3F,MAAM,eAAe,GAAG,OAAO,QAAQ,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAA;IAC3F,MAAM,cAAc,GAAG,eAAe,IAAI,eAAe,CAAA;IACzD,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,cAAc;QAC1C,CAAC,CAAC,EAAE,GAAG,QAAQ,EAAE,GAAG,QAAQ,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE;QACrD,CAAC,CAAC,EAAE,GAAG,QAAQ,EAAE,GAAG,QAAQ,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAA;IACvD,sBAAsB,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAA;IAC7D,OAAO,KAAK,CAAA;AACd,CAAC;AAOD,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,WAAmB,eAAe,EAAE;IAEpC,OAAO,YAAY,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;QACvC,MAAM,OAAO,GAAG,gBAAgB,CAAC,eAAe,CAAC,MAAM,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;QACnF,MAAM,UAAU,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAA;QACjD,OAAO,CAAC,MAAM,GAAG,UAAU,CAAA;QAE3B,IAAI,QAAQ,GAAG,CAAC,CAAA;QAChB,IAAI,WAAW,GAAG,CAAC,CAAA;QACnB,MAAM,gBAAgB,GAAG,CAAC,gCAAgC,CAAC,QAAQ,CAAC,EAAE,wBAAwB,EAAE,CAAC,CAAA;QAEjG,KAAK,MAAM,UAAU,IAAI,gBAAgB,EAAE,CAAC;YAC1C,IAAI,UAAU,KAAK,QAAQ;gBAAE,SAAQ;YACrC,IAAI,CAAC;gBACH,MAAM,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;YAC7B,CAAC;YAAC,MAAM,CAAC;gBACP,SAAQ;YACV,CAAC;YAED,MAAM,UAAU,GAAG,MAAM,gBAAgB,CAAC,UAAU,CAAC,CAAA;YACrD,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC;gBAAE,SAAQ;YAC/C,WAAW,IAAI,CAAC,CAAA;YAEhB,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,CAAA;YACtC,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,IAAI,KAAK,OAAO;gBAAE,SAAQ;YAC5D,MAAM,gBAAgB,GAAG,yBAAyB,CAChD,gBAAgB,CAAC,YAAY,CAAC;gBAC5B,CAAC,CAAC,YAAY;gBACd,CAAC,CAAE,eAAe,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,MAA+B,CAC/E,CAAA;YAED,KAAK,MAAM,IAAI,IAAI,iBAAiB,EAAE,CAAC;gBACrC,MAAM,YAAY,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAA;gBAC3C,IAAI,CAAC,YAAY;oBAAE,SAAQ;gBAC3B,MAAM,YAAY,GAAG,uBAAuB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;gBAC3D,IAAI,YAAY,CAAC,QAAQ,KAAK,SAAS,IAAI,YAAY,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;oBAC/E,YAAY,CAAC,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAA;gBAC/C,CAAC;gBACD,KAAK,MAAM,OAAO,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC;oBAC5C,IAAI,mBAAmB,CAAC,YAAY,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC;wBACrD,QAAQ,IAAI,CAAC,CAAA;oBACf,CAAC;gBACH,CAAC;gBACD,IACE,YAAY,CAAC,iBAAiB;oBAC9B,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW,KAAK,YAAY,CAAC,iBAAiB,CAAC,EAC/F,CAAC;oBACD,YAAY,CAAC,iBAAiB,GAAG,YAAY,CAAC,iBAAiB,CAAA;gBACjE,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,CAAC,MAAM,GAAG,yBAAyB,CAAC,OAAO,CAAC,MAA8B,CAAC,CAAA;QAClF,MAAM,iBAAiB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QAC1C,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAA;IAClC,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,IAAc,EACd,QAAwB;IAExB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;IAC1B,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;QAAE,OAAO,SAAS,CAAA;IACrF,MAAM,UAAU,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAA;IACpD,IAAI,CAAC,MAAM,GAAG,UAAU,CAAA;IACxB,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAA;AAC7B,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,IAAc,EACd,QAAwB;IAExB,MAAM,MAAM,GAAG,2BAA2B,CAAC,IAAI,CAAC,CAAA;IAChD,MAAM,UAAU,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAA;IACpD,IAAI,CAAC,MAAM,GAAG,UAAU,CAAA;IAExB,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAA;IACrC,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAA;IAE7B,MAAM,OAAO,GAAsB;QACjC,QAAQ,EAAE,UAAU,CAAC,QAAQ;QAC7B,QAAQ,EAAE,EAAE;KACb,CAAA;IACD,IAAI,QAAQ,KAAK,QAAQ;QAAE,UAAU,CAAC,MAAM,GAAG,OAAO,CAAA;;QACjD,UAAU,CAAC,KAAK,GAAG,OAAO,CAAA;IAC/B,IAAI,CAAC,MAAM,GAAG,yBAAyB,CAAC,UAAU,CAAC,CAAA;IACnD,OAAQ,IAAI,CAAC,MAA+B,CAAC,QAAQ,CAAsB,CAAA;AAC7E,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,IAAc;IACnD,MAAM,GAAG,GAA+D,EAAE,CAAA;IAC1E,KAAK,MAAM,IAAI,IAAI,iBAAiB,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QAC/C,IAAI,CAAC,MAAM;YAAE,SAAQ;QACrB,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;IAC5B,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,QAAgB,EAAE,IAAc;IAC/D,MAAM,OAAO,GAAG,GAAG,QAAQ,MAAM,CAAA;IACjC,MAAM,UAAU,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAA;IACvD,MAAM,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;IACxD,MAAM,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;IAClC,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,0BAA0B;IAC5B,CAAC;AACH,CAAC;AAED,KAAK,UAAU,YAAY,CAAI,QAAgB,EAAE,EAAoB;IACnE,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAC3D,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE;QAC5C,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE;YACP,OAAO,EAAE,EAAE;YACX,UAAU,EAAE,EAAE;YACd,UAAU,EAAE,GAAG;SAChB;KACF,CAAC,CAAA;IAEF,IAAI,CAAC;QACH,OAAO,MAAM,EAAE,EAAE,CAAA;IACnB,CAAC;YAAS,CAAC;QACT,MAAM,OAAO,EAAE,CAAA;IACjB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,WAAmB,eAAe,EAAE,EACpC,IAAkE;IAElE,OAAO,YAAY,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAA;AAC7E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,WAAmB,eAAe,EAAE,EACpC,MAAsE;IAEtE,OAAO,YAAY,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;QACvC,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,QAAQ,CAAC,CAAA;QAChD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,CAAA;QACpC,MAAM,QAAQ,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAA;QACxD,MAAM,IAAI,GAAG,gBAAgB,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAA;QACxD,MAAM,iBAAiB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;QACvC,OAAO,IAAI,CAAA;IACb,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,WAAmB,eAAe,EAAE,EACpC,WAAmB,EACnB,aAAqB,EACrB,WAA2B,QAAQ;IAEnC,OAAO,eAAe,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE;QACxC,MAAM,MAAM,GAAG,uBAAuB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;QACtD,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,WAAW,CAAC,CAAA;QACtE,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;YACjC,GAAG,CAAC,aAAa,GAAG,aAAa,CAAA;QACnC,CAAC;IACH,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gCAAgC,CACpD,WAAmB,eAAe,EAAE,EACpC,WAAmB,EACnB,KAA2D,EAC3D,WAA2B,QAAQ;IAEnC,OAAO,eAAe,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE;QACxC,MAAM,MAAM,GAAG,uBAAuB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;QACtD,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,WAAW,CAAC,CAAA;QACtE,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;YACjC,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAA;YACzB,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAA;YAC3B,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAA;QAC7B,CAAC;IACH,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,IAAc;IACxD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;IAC1B,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAA;IAChD,CAAC;IAED,IAAI,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7B,MAAM,UAAU,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAA;QACpD,IAAI,CAAC,MAAM,GAAG,UAAU,CAAA;QACxB,OAAO,UAAU,CAAA;IACnB,CAAC;IAED,IAAI,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAkB,iBAAiB,CAAC;YAC/C,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,SAAS,EAAE,CAAC,QAAQ,CAAC;YACrB,OAAO,EAAE,IAAI;SACd,CAAC,CAAA;QAEF,MAAM,QAAQ,GAAyB;YACrC,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,EAAE;YACZ,MAAM,EAAE;gBACN,QAAQ,EAAE,CAAC,OAAO,CAAC;gBACnB,iBAAiB,EAAE,OAAO,CAAC,WAAW;aACvC;SACF,CAAA;QAED,MAAM,UAAU,GAAG,yBAAyB,CAAC,QAAQ,CAAC,CAAA;QACtD,IAAI,CAAC,MAAM,GAAG,UAAU,CAAA;QACxB,OAAO,UAAU,CAAA;IACnB,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAA;AAChD,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function formatToastMessage(message: string): string;
2
+ //# sourceMappingURL=toast.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toast.d.ts","sourceRoot":"","sources":["../../lib/toast.ts"],"names":[],"mappings":"AAqCA,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAM1D"}