@awiki/dsh-plugin 0.3.7-dsh-test.20260831.2 → 0.3.7

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 (99) hide show
  1. package/README.md +60 -58
  2. package/README.zh.md +51 -45
  3. package/THIRD_PARTY_NOTICES.md +1 -1
  4. package/cordis.patch.yml +8 -7
  5. package/lib/client.js +1119 -1340
  6. package/lib/client.js.map +1 -1
  7. package/lib/index.js +809 -1085
  8. package/lib/provider.js +17 -70
  9. package/lib/{sdk-adapter-FGaOi8It.mjs → sdk-adapter--trNlr-T.mjs} +84 -168
  10. package/lib/typert.host.js +178 -406
  11. package/lib/typert.remote-client.d.ts +7 -19
  12. package/lib/typert.remote-client.d.ts.map +1 -1
  13. package/lib/typert.remote-client.js +178 -406
  14. package/lib/types/base64.d.ts +4 -0
  15. package/lib/types/base64.d.ts.map +1 -0
  16. package/lib/types/base64.js +28 -0
  17. package/lib/types/base64.js.map +1 -0
  18. package/lib/types/client/AwikiIdentityAccess.d.ts +5 -6
  19. package/lib/types/client/AwikiIdentityAccess.d.ts.map +1 -1
  20. package/lib/types/client/AwikiIdentityAccess.js +27 -88
  21. package/lib/types/client/AwikiIdentityAccess.js.map +1 -1
  22. package/lib/types/client/AwikiMail.d.ts +1 -1
  23. package/lib/types/client/AwikiMail.d.ts.map +1 -1
  24. package/lib/types/client/AwikiMail.js +130 -6
  25. package/lib/types/client/AwikiMail.js.map +1 -1
  26. package/lib/types/client/AwikiOverlay.d.ts.map +1 -1
  27. package/lib/types/client/AwikiOverlay.js +12 -5
  28. package/lib/types/client/AwikiOverlay.js.map +1 -1
  29. package/lib/types/client/AwikiRecoveryForm.d.ts.map +1 -1
  30. package/lib/types/client/AwikiRecoveryForm.js +1 -1
  31. package/lib/types/client/AwikiRecoveryForm.js.map +1 -1
  32. package/lib/types/client/controller.d.ts +34 -20
  33. package/lib/types/client/controller.d.ts.map +1 -1
  34. package/lib/types/client/controller.js +203 -56
  35. package/lib/types/client/controller.js.map +1 -1
  36. package/lib/types/client/index.d.ts.map +1 -1
  37. package/lib/types/client/index.js +4 -8
  38. package/lib/types/client/index.js.map +1 -1
  39. package/lib/types/client/mail-attachment.d.ts +40 -0
  40. package/lib/types/client/mail-attachment.d.ts.map +1 -0
  41. package/lib/types/client/mail-attachment.js +187 -0
  42. package/lib/types/client/mail-attachment.js.map +1 -0
  43. package/lib/types/client/settings-locales.js +8 -8
  44. package/lib/types/client/settings-locales.js.map +1 -1
  45. package/lib/types/client/slots.d.ts +10 -10
  46. package/lib/types/client/slots.d.ts.map +1 -1
  47. package/lib/types/conversation-preferences.d.ts.map +1 -1
  48. package/lib/types/conversation-preferences.js +17 -0
  49. package/lib/types/conversation-preferences.js.map +1 -1
  50. package/lib/types/index.d.ts +30 -59
  51. package/lib/types/index.d.ts.map +1 -1
  52. package/lib/types/index.js +464 -805
  53. package/lib/types/index.js.map +1 -1
  54. package/lib/types/listener-state.d.ts +3 -5
  55. package/lib/types/listener-state.d.ts.map +1 -1
  56. package/lib/types/listener-state.js +13 -28
  57. package/lib/types/listener-state.js.map +1 -1
  58. package/lib/types/listener.d.ts +32 -9
  59. package/lib/types/listener.d.ts.map +1 -1
  60. package/lib/types/listener.js +127 -11
  61. package/lib/types/listener.js.map +1 -1
  62. package/lib/types/mail.d.ts +28 -2
  63. package/lib/types/mail.d.ts.map +1 -1
  64. package/lib/types/mail.js +79 -2
  65. package/lib/types/mail.js.map +1 -1
  66. package/lib/types/profile-state.d.ts +17 -0
  67. package/lib/types/profile-state.d.ts.map +1 -0
  68. package/lib/types/profile-state.js +58 -0
  69. package/lib/types/profile-state.js.map +1 -0
  70. package/lib/types/provider-api.d.ts +38 -102
  71. package/lib/types/provider-api.d.ts.map +1 -1
  72. package/lib/types/provider.d.ts +2 -8
  73. package/lib/types/provider.d.ts.map +1 -1
  74. package/lib/types/provider.js +16 -73
  75. package/lib/types/provider.js.map +1 -1
  76. package/lib/types/sdk-adapter.d.ts +7 -32
  77. package/lib/types/sdk-adapter.d.ts.map +1 -1
  78. package/lib/types/sdk-adapter.js +104 -163
  79. package/lib/types/sdk-adapter.js.map +1 -1
  80. package/lib/types/sent-mail-store.d.ts +7 -2
  81. package/lib/types/sent-mail-store.d.ts.map +1 -1
  82. package/lib/types/sent-mail-store.js +125 -23
  83. package/lib/types/sent-mail-store.js.map +1 -1
  84. package/lib/types/tools.d.ts +1 -1
  85. package/lib/types/tools.d.ts.map +1 -1
  86. package/lib/types/tools.js +20 -4
  87. package/lib/types/tools.js.map +1 -1
  88. package/lib/types/types.d.ts +66 -77
  89. package/lib/types/types.d.ts.map +1 -1
  90. package/lib/types/types.js.map +1 -1
  91. package/package.json +15 -20
  92. package/lib/types/client/AwikiDevices.d.ts +0 -28
  93. package/lib/types/client/AwikiDevices.d.ts.map +0 -1
  94. package/lib/types/client/AwikiDevices.js +0 -85
  95. package/lib/types/client/AwikiDevices.js.map +0 -1
  96. package/lib/types/realtime-supervisor.d.ts +0 -54
  97. package/lib/types/realtime-supervisor.d.ts.map +0 -1
  98. package/lib/types/realtime-supervisor.js +0 -242
  99. package/lib/types/realtime-supervisor.js.map +0 -1
@@ -1,242 +0,0 @@
1
- const RETRY_BASE_DELAY_MS = 1_000;
2
- const RETRY_MAX_DELAY_MS = 30_000;
3
- const SYNC_FAILURE_CODES = new Set([
4
- 'sync.retry.transport_unavailable',
5
- 'sync.retry.service_unavailable',
6
- 'sync.retry.local_state_unavailable',
7
- 'sync.retry.local_state.actor_closed',
8
- 'sync.retry.local_state.database_busy',
9
- 'sync.retry.local_state.constraint_failed',
10
- 'sync.retry.local_state.schema_unavailable',
11
- 'sync.retry.local_state.storage_unavailable',
12
- 'sync.retry.local_state.codec_unavailable',
13
- 'sync.retry.local_state.other',
14
- 'sync.retryable_failure',
15
- 'sync.recovery_required',
16
- 'sync.auth_revoked',
17
- 'sync.blocked',
18
- 'sync.unexpected_status',
19
- ]);
20
- function syncReason(cause) {
21
- if (cause === 'session_start')
22
- return 'session_start';
23
- return cause === 'reconnected' ? 'websocket_reconnect' : 'websocket_hint';
24
- }
25
- function syncFailureCode(error) {
26
- try {
27
- if (typeof error !== 'object' || error === null)
28
- return undefined;
29
- const value = error.realtimeFailureCode;
30
- if (typeof value !== 'string')
31
- return undefined;
32
- return SYNC_FAILURE_CODES.has(value)
33
- ? value
34
- : undefined;
35
- }
36
- catch {
37
- return undefined;
38
- }
39
- }
40
- /** Own the deployment identity's only WSS without knowing Workspace or Agent policy. */
41
- export class IdentityRealtimeSupervisor {
42
- realtime;
43
- config;
44
- logger;
45
- lifecycle;
46
- generation = 0;
47
- activeSession;
48
- stoppedSessions = new WeakSet();
49
- stopped = false;
50
- connected = false;
51
- startCount = 0;
52
- stopCount = 0;
53
- maxActiveSessionCount = 0;
54
- retryCount = 0;
55
- lifecyclePhase = 'idle';
56
- lastFailureCode;
57
- lastConnectedAtMs;
58
- lastCommittedSyncCause;
59
- retryTimer;
60
- resolveRetry;
61
- constructor(realtime, config = {}, logger = {
62
- debug() { }, info() { }, warn() { }, error() { }, name: 'awiki-realtime',
63
- }) {
64
- this.realtime = realtime;
65
- this.config = config;
66
- this.logger = logger;
67
- }
68
- /** Start in the background; identity activation must never await connectivity. */
69
- start() {
70
- if (this.lifecycle !== undefined || this.stopped)
71
- return;
72
- const generation = ++this.generation;
73
- this.lifecycle = this.run(generation).catch((error) => {
74
- if (!this.stopped) {
75
- this.logger.warn('AWiki realtime supervisor stopped unexpectedly: %s', error instanceof Error ? error.message : 'unknown failure');
76
- }
77
- });
78
- }
79
- diagnostics() {
80
- return {
81
- connected: this.connected,
82
- activeSessionCount: this.activeSession === undefined ? 0 : 1,
83
- startCount: this.startCount,
84
- stopCount: this.stopCount,
85
- maxActiveSessionCount: this.maxActiveSessionCount,
86
- generation: this.generation,
87
- retryCount: this.retryCount,
88
- lifecyclePhase: this.lifecyclePhase,
89
- ...(this.lastFailureCode === undefined ? {} : { lastFailureCode: this.lastFailureCode }),
90
- ...(this.lastConnectedAtMs === undefined ? {} : { lastConnectedAtMs: this.lastConnectedAtMs }),
91
- ...(this.lastCommittedSyncCause === undefined
92
- ? {}
93
- : { lastCommittedSyncCause: this.lastCommittedSyncCause }),
94
- };
95
- }
96
- /** Fence late events, wake retry sleep, stop the exact session, and join the lifecycle. */
97
- async dispose() {
98
- if (this.stopped)
99
- return;
100
- this.stopped = true;
101
- this.generation += 1;
102
- this.connected = false;
103
- this.lifecyclePhase = 'stopping';
104
- this.wakeRetry();
105
- const session = this.activeSession;
106
- if (session !== undefined)
107
- await this.stopSession(session).catch(() => undefined);
108
- await this.lifecycle;
109
- this.lifecyclePhase = 'stopped';
110
- }
111
- current(generation) {
112
- return !this.stopped && this.generation === generation;
113
- }
114
- async run(generation) {
115
- let cause = 'session_start';
116
- let failures = 0;
117
- while (this.current(generation)) {
118
- let session;
119
- try {
120
- this.lifecyclePhase = cause === 'session_start' ? 'initial_sync' : 'reconnect_sync';
121
- await this.synchronize(cause, generation);
122
- if (!this.current(generation))
123
- return;
124
- this.lifecyclePhase = 'starting';
125
- session = await this.realtime.startRealtime();
126
- if (!this.current(generation)) {
127
- await this.stopSession(session).catch(() => undefined);
128
- return;
129
- }
130
- this.activeSession = session;
131
- this.maxActiveSessionCount = 1;
132
- this.startCount += 1;
133
- this.connected = (await session.getStatus().catch(() => ({ connected: false }))).connected;
134
- this.lifecyclePhase = 'connected';
135
- if (this.connected)
136
- this.lastConnectedAtMs = Date.now();
137
- this.lastFailureCode = undefined;
138
- failures = 0;
139
- this.retryCount = 0;
140
- while (this.current(generation) && this.activeSession === session) {
141
- const event = await session.nextEvent();
142
- if (!this.current(generation) || this.activeSession !== session)
143
- return;
144
- if (event === null) {
145
- await this.stopSession(session);
146
- cause = 'reconnected';
147
- break;
148
- }
149
- this.observeConnection(event);
150
- if (event.kind !== 'sync_required')
151
- continue;
152
- await this.synchronize(event.cause, generation);
153
- }
154
- }
155
- catch (error) {
156
- const failedPhase = this.lifecyclePhase;
157
- const safeSyncFailureCode = syncFailureCode(error);
158
- this.connected = false;
159
- if (session !== undefined) {
160
- try {
161
- await this.stopSession(session);
162
- }
163
- catch {
164
- this.lastFailureCode = 'stop_failed';
165
- }
166
- }
167
- if (!this.current(generation))
168
- return;
169
- failures += 1;
170
- this.retryCount = failures;
171
- if (this.lastFailureCode !== 'stop_failed') {
172
- this.lastFailureCode = failedPhase === 'initial_sync' || failedPhase === 'reconnect_sync'
173
- ? safeSyncFailureCode ?? 'sync_failed'
174
- : failedPhase === 'starting'
175
- ? 'start_failed'
176
- : 'session_failed';
177
- }
178
- this.lifecyclePhase = 'backoff';
179
- this.logger.warn('AWiki realtime lifecycle failed; retrying: %s', error instanceof Error ? error.message : 'unknown failure');
180
- await this.waitForRetry(failures, generation);
181
- cause = cause === 'session_start' ? 'session_start' : 'reconnected';
182
- }
183
- }
184
- }
185
- async synchronize(cause, generation) {
186
- await this.realtime.syncNow(syncReason(cause));
187
- if (!this.current(generation))
188
- return;
189
- this.lastCommittedSyncCause = cause;
190
- try {
191
- await this.config.onSynchronized?.(cause);
192
- }
193
- catch (error) {
194
- this.logger.warn('AWiki realtime post-sync consumer failed: %s', error instanceof Error ? error.message : 'unknown failure');
195
- }
196
- }
197
- observeConnection(event) {
198
- if (event.kind !== 'connection_state_changed')
199
- return;
200
- this.connected = event.state === 'connected';
201
- if (this.connected) {
202
- this.lifecyclePhase = 'connected';
203
- this.lastConnectedAtMs = Date.now();
204
- this.lastFailureCode = undefined;
205
- }
206
- }
207
- async stopSession(session) {
208
- if (this.stoppedSessions.has(session))
209
- return;
210
- this.stoppedSessions.add(session);
211
- if (this.activeSession === session)
212
- this.activeSession = undefined;
213
- this.connected = false;
214
- this.lifecyclePhase = 'stopping';
215
- this.stopCount += 1;
216
- await session.stop();
217
- }
218
- waitForRetry(failures, generation) {
219
- if (!this.current(generation))
220
- return Promise.resolve();
221
- const delay = Math.min(RETRY_BASE_DELAY_MS * 2 ** Math.min(failures - 1, 10), RETRY_MAX_DELAY_MS);
222
- return new Promise(resolve => {
223
- const finish = () => {
224
- if (this.retryTimer === timer)
225
- this.retryTimer = undefined;
226
- if (this.resolveRetry === finish)
227
- this.resolveRetry = undefined;
228
- resolve();
229
- };
230
- const timer = setTimeout(finish, delay);
231
- this.retryTimer = timer;
232
- this.resolveRetry = finish;
233
- });
234
- }
235
- wakeRetry() {
236
- const timer = this.retryTimer;
237
- if (timer !== undefined)
238
- clearTimeout(timer);
239
- this.resolveRetry?.();
240
- }
241
- }
242
- //# sourceMappingURL=realtime-supervisor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"realtime-supervisor.js","sourceRoot":"","sources":["../../src/realtime-supervisor.ts"],"names":[],"mappings":"AAUA,MAAM,mBAAmB,GAAG,KAAK,CAAA;AACjC,MAAM,kBAAkB,GAAG,MAAM,CAAA;AACjC,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAA8B;IAC9D,kCAAkC;IAClC,gCAAgC;IAChC,oCAAoC;IACpC,qCAAqC;IACrC,sCAAsC;IACtC,0CAA0C;IAC1C,2CAA2C;IAC3C,4CAA4C;IAC5C,0CAA0C;IAC1C,8BAA8B;IAC9B,wBAAwB;IACxB,wBAAwB;IACxB,mBAAmB;IACnB,cAAc;IACd,wBAAwB;CACzB,CAAC,CAAA;AAmCF,SAAS,UAAU,CAAC,KAAkD;IACpE,IAAI,KAAK,KAAK,eAAe;QAAE,OAAO,eAAe,CAAA;IACrD,OAAO,KAAK,KAAK,aAAa,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,gBAAgB,CAAA;AAC3E,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,IAAI,CAAC;QACH,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO,SAAS,CAAA;QACjE,MAAM,KAAK,GAAI,KAAoD,CAAC,mBAAmB,CAAA;QACvF,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,SAAS,CAAA;QAC/C,OAAO,kBAAkB,CAAC,GAAG,CAAC,KAAoC,CAAC;YACjE,CAAC,CAAC,KAAoC;YACtC,CAAC,CAAC,SAAS,CAAA;IACf,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAA;IAClB,CAAC;AACH,CAAC;AAED,wFAAwF;AACxF,MAAM,OAAO,0BAA0B;IAmBlB;IACA;IACA;IApBX,SAAS,CAA2B;IACpC,UAAU,GAAG,CAAC,CAAA;IACd,aAAa,CAA6C;IACjD,eAAe,GAAG,IAAI,OAAO,EAAmC,CAAA;IACzE,OAAO,GAAG,KAAK,CAAA;IACf,SAAS,GAAG,KAAK,CAAA;IACjB,UAAU,GAAG,CAAC,CAAA;IACd,SAAS,GAAG,CAAC,CAAA;IACb,qBAAqB,GAAU,CAAC,CAAA;IAChC,UAAU,GAAG,CAAC,CAAA;IACd,cAAc,GAA+C,MAAM,CAAA;IACnE,eAAe,CAA6C;IAC5D,iBAAiB,CAAoB;IACrC,sBAAsB,CAAyD;IAC/E,UAAU,CAA2C;IACrD,YAAY,CAA0B;IAE9C,YACmB,QAAgC,EAChC,SAAwC,EAAE,EAC1C,SAAkB;QACjC,KAAK,KAAI,CAAC,EAAE,IAAI,KAAI,CAAC,EAAE,IAAI,KAAI,CAAC,EAAE,KAAK,KAAI,CAAC,EAAE,IAAI,EAAE,gBAAgB;KAC/C;QAJN,aAAQ,GAAR,QAAQ,CAAwB;QAChC,WAAM,GAAN,MAAM,CAAoC;QAC1C,WAAM,GAAN,MAAM,CAEA;IACtB,CAAC;IAEJ,kFAAkF;IAC3E,KAAK;QACV,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO;YAAE,OAAM;QACxD,MAAM,UAAU,GAAG,EAAE,IAAI,CAAC,UAAU,CAAA;QACpC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;YAC7D,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAClB,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,oDAAoD,EACpD,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAC3D,CAAA;YACH,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IAEM,WAAW;QAChB,OAAO;YACL,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,kBAAkB,EAAE,IAAI,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5D,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;YACjD,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,GAAG,CAAC,IAAI,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC;YACxF,GAAG,CAAC,IAAI,CAAC,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC9F,GAAG,CAAC,IAAI,CAAC,sBAAsB,KAAK,SAAS;gBAC3C,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,EAAE,sBAAsB,EAAE,IAAI,CAAC,sBAAsB,EAAE,CAAC;SAC7D,CAAA;IACH,CAAC;IAED,2FAA2F;IACpF,KAAK,CAAC,OAAO;QAClB,IAAI,IAAI,CAAC,OAAO;YAAE,OAAM;QACxB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;QACnB,IAAI,CAAC,UAAU,IAAI,CAAC,CAAA;QACpB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;QACtB,IAAI,CAAC,cAAc,GAAG,UAAU,CAAA;QAChC,IAAI,CAAC,SAAS,EAAE,CAAA;QAChB,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAA;QAClC,IAAI,OAAO,KAAK,SAAS;YAAE,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;QACjF,MAAM,IAAI,CAAC,SAAS,CAAA;QACpB,IAAI,CAAC,cAAc,GAAG,SAAS,CAAA;IACjC,CAAC;IAEO,OAAO,CAAC,UAAkB;QAChC,OAAO,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,KAAK,UAAU,CAAA;IACxD,CAAC;IAEO,KAAK,CAAC,GAAG,CAAC,UAAkB;QAClC,IAAI,KAAK,GAAgD,eAAe,CAAA;QACxE,IAAI,QAAQ,GAAG,CAAC,CAAA;QAChB,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YAChC,IAAI,OAAoD,CAAA;YACxD,IAAI,CAAC;gBACH,IAAI,CAAC,cAAc,GAAG,KAAK,KAAK,eAAe,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,gBAAgB,CAAA;gBACnF,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,UAAU,CAAC,CAAA;gBACzC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;oBAAE,OAAM;gBACrC,IAAI,CAAC,cAAc,GAAG,UAAU,CAAA;gBAChC,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAA;gBAC7C,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;oBAC9B,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;oBACtD,OAAM;gBACR,CAAC;gBACD,IAAI,CAAC,aAAa,GAAG,OAAO,CAAA;gBAC5B,IAAI,CAAC,qBAAqB,GAAG,CAAC,CAAA;gBAC9B,IAAI,CAAC,UAAU,IAAI,CAAC,CAAA;gBACpB,IAAI,CAAC,SAAS,GAAG,CAAC,MAAM,OAAO,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;gBAC1F,IAAI,CAAC,cAAc,GAAG,WAAW,CAAA;gBACjC,IAAI,IAAI,CAAC,SAAS;oBAAE,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;gBACvD,IAAI,CAAC,eAAe,GAAG,SAAS,CAAA;gBAChC,QAAQ,GAAG,CAAC,CAAA;gBACZ,IAAI,CAAC,UAAU,GAAG,CAAC,CAAA;gBACnB,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,aAAa,KAAK,OAAO,EAAE,CAAC;oBAClE,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,SAAS,EAAE,CAAA;oBACvC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,aAAa,KAAK,OAAO;wBAAE,OAAM;oBACvE,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;wBACnB,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;wBAC/B,KAAK,GAAG,aAAa,CAAA;wBACrB,MAAK;oBACP,CAAC;oBACD,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAA;oBAC7B,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe;wBAAE,SAAQ;oBAC5C,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,CAAA;gBACjD,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAA;gBACvC,MAAM,mBAAmB,GAAG,eAAe,CAAC,KAAK,CAAC,CAAA;gBAClD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;gBACtB,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;oBAC1B,IAAI,CAAC;wBACH,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;oBACjC,CAAC;oBAAC,MAAM,CAAC;wBACP,IAAI,CAAC,eAAe,GAAG,aAAa,CAAA;oBACtC,CAAC;gBACH,CAAC;gBACD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;oBAAE,OAAM;gBACrC,QAAQ,IAAI,CAAC,CAAA;gBACb,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAA;gBAC1B,IAAI,IAAI,CAAC,eAAe,KAAK,aAAa,EAAE,CAAC;oBAC3C,IAAI,CAAC,eAAe,GAAG,WAAW,KAAK,cAAc,IAAI,WAAW,KAAK,gBAAgB;wBACvF,CAAC,CAAC,mBAAmB,IAAI,aAAa;wBACtC,CAAC,CAAC,WAAW,KAAK,UAAU;4BAC1B,CAAC,CAAC,cAAc;4BAChB,CAAC,CAAC,gBAAgB,CAAA;gBACxB,CAAC;gBACD,IAAI,CAAC,cAAc,GAAG,SAAS,CAAA;gBAC/B,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,+CAA+C,EAC/C,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAC3D,CAAA;gBACD,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAA;gBAC7C,KAAK,GAAG,KAAK,KAAK,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,aAAa,CAAA;YACrE,CAAC;QACH,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,WAAW,CACvB,KAAkD,EAClD,UAAkB;QAElB,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAA;QAC9C,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;YAAE,OAAM;QACrC,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAA;QACnC,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,KAAK,CAAC,CAAA;QAC3C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,8CAA8C,EAC9C,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAC3D,CAAA;QACH,CAAC;IACH,CAAC;IAEO,iBAAiB,CAAC,KAAoC;QAC5D,IAAI,KAAK,CAAC,IAAI,KAAK,0BAA0B;YAAE,OAAM;QACrD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,KAAK,KAAK,WAAW,CAAA;QAC5C,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC,cAAc,GAAG,WAAW,CAAA;YACjC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;YACnC,IAAI,CAAC,eAAe,GAAG,SAAS,CAAA;QAClC,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,WAAW,CAAC,OAAwC;QAChE,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC;YAAE,OAAM;QAC7C,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QACjC,IAAI,IAAI,CAAC,aAAa,KAAK,OAAO;YAAE,IAAI,CAAC,aAAa,GAAG,SAAS,CAAA;QAClE,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;QACtB,IAAI,CAAC,cAAc,GAAG,UAAU,CAAA;QAChC,IAAI,CAAC,SAAS,IAAI,CAAC,CAAA;QACnB,MAAM,OAAO,CAAC,IAAI,EAAE,CAAA;IACtB,CAAC;IAEO,YAAY,CAAC,QAAgB,EAAE,UAAkB;QACvD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;YAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;QACvD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,mBAAmB,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,kBAAkB,CAAC,CAAA;QACjG,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;YAC3B,MAAM,MAAM,GAAG,GAAG,EAAE;gBAClB,IAAI,IAAI,CAAC,UAAU,KAAK,KAAK;oBAAE,IAAI,CAAC,UAAU,GAAG,SAAS,CAAA;gBAC1D,IAAI,IAAI,CAAC,YAAY,KAAK,MAAM;oBAAE,IAAI,CAAC,YAAY,GAAG,SAAS,CAAA;gBAC/D,OAAO,EAAE,CAAA;YACX,CAAC,CAAA;YACD,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;YACvC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAA;YACvB,IAAI,CAAC,YAAY,GAAG,MAAM,CAAA;QAC5B,CAAC,CAAC,CAAA;IACJ,CAAC;IAEO,SAAS;QACf,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAA;QAC7B,IAAI,KAAK,KAAK,SAAS;YAAE,YAAY,CAAC,KAAK,CAAC,CAAA;QAC5C,IAAI,CAAC,YAAY,EAAE,EAAE,CAAA;IACvB,CAAC;CACF"}