@shin1ohno/sage 0.1.0 → 0.2.1

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 (72) hide show
  1. package/README.md +79 -114
  2. package/dist/config/storage/storage-factory.d.ts +5 -1
  3. package/dist/config/storage/storage-factory.d.ts.map +1 -1
  4. package/dist/config/storage/storage-factory.js +12 -19
  5. package/dist/config/storage/storage-factory.js.map +1 -1
  6. package/dist/core/sage-core.d.ts +10 -5
  7. package/dist/core/sage-core.d.ts.map +1 -1
  8. package/dist/core/sage-core.js +28 -51
  9. package/dist/core/sage-core.js.map +1 -1
  10. package/dist/index.js +335 -0
  11. package/dist/index.js.map +1 -1
  12. package/dist/integrations/apple-reminders.d.ts +49 -0
  13. package/dist/integrations/apple-reminders.d.ts.map +1 -1
  14. package/dist/integrations/apple-reminders.js +229 -0
  15. package/dist/integrations/apple-reminders.js.map +1 -1
  16. package/dist/integrations/notion-mcp.d.ts +136 -1
  17. package/dist/integrations/notion-mcp.d.ts.map +1 -1
  18. package/dist/integrations/notion-mcp.js +449 -1
  19. package/dist/integrations/notion-mcp.js.map +1 -1
  20. package/dist/integrations/task-synchronizer.d.ts +124 -0
  21. package/dist/integrations/task-synchronizer.d.ts.map +1 -0
  22. package/dist/integrations/task-synchronizer.js +363 -0
  23. package/dist/integrations/task-synchronizer.js.map +1 -0
  24. package/dist/integrations/todo-list-manager.d.ts +185 -0
  25. package/dist/integrations/todo-list-manager.d.ts.map +1 -0
  26. package/dist/integrations/todo-list-manager.js +581 -0
  27. package/dist/integrations/todo-list-manager.js.map +1 -0
  28. package/dist/platform/adapter-factory.d.ts.map +1 -1
  29. package/dist/platform/adapter-factory.js +4 -8
  30. package/dist/platform/adapter-factory.js.map +1 -1
  31. package/dist/platform/adapters/mcp-adapter.js +1 -1
  32. package/dist/platform/adapters/mcp-adapter.js.map +1 -1
  33. package/dist/platform/adapters/remote-mcp-adapter.d.ts +34 -0
  34. package/dist/platform/adapters/remote-mcp-adapter.d.ts.map +1 -0
  35. package/dist/platform/adapters/remote-mcp-adapter.js +54 -0
  36. package/dist/platform/adapters/remote-mcp-adapter.js.map +1 -0
  37. package/dist/platform/detector.d.ts +5 -16
  38. package/dist/platform/detector.d.ts.map +1 -1
  39. package/dist/platform/detector.js +52 -108
  40. package/dist/platform/detector.js.map +1 -1
  41. package/dist/platform/index.d.ts +0 -2
  42. package/dist/platform/index.d.ts.map +1 -1
  43. package/dist/platform/index.js +0 -2
  44. package/dist/platform/index.js.map +1 -1
  45. package/dist/platform/types.d.ts +20 -62
  46. package/dist/platform/types.d.ts.map +1 -1
  47. package/dist/platform/types.js +6 -11
  48. package/dist/platform/types.js.map +1 -1
  49. package/dist/remote/cloud-config.d.ts +139 -0
  50. package/dist/remote/cloud-config.d.ts.map +1 -0
  51. package/dist/remote/cloud-config.js +229 -0
  52. package/dist/remote/cloud-config.js.map +1 -0
  53. package/dist/remote/hybrid-integration.d.ts +109 -0
  54. package/dist/remote/hybrid-integration.d.ts.map +1 -0
  55. package/dist/remote/hybrid-integration.js +230 -0
  56. package/dist/remote/hybrid-integration.js.map +1 -0
  57. package/dist/remote/remote-mcp-server.d.ts +244 -0
  58. package/dist/remote/remote-mcp-server.d.ts.map +1 -0
  59. package/dist/remote/remote-mcp-server.js +507 -0
  60. package/dist/remote/remote-mcp-server.js.map +1 -0
  61. package/dist/utils/priority.d.ts.map +1 -1
  62. package/dist/utils/priority.js +18 -5
  63. package/dist/utils/priority.js.map +1 -1
  64. package/dist/utils/stakeholders.d.ts +4 -0
  65. package/dist/utils/stakeholders.d.ts.map +1 -1
  66. package/dist/utils/stakeholders.js +45 -4
  67. package/dist/utils/stakeholders.js.map +1 -1
  68. package/dist/utils/task-splitter.d.ts.map +1 -1
  69. package/dist/utils/task-splitter.js +62 -11
  70. package/dist/utils/task-splitter.js.map +1 -1
  71. package/manifest.json +74 -0
  72. package/package.json +2 -1
@@ -0,0 +1,139 @@
1
+ /**
2
+ * Cloud Configuration Management System
3
+ * Handles secure cloud sync of user configurations
4
+ * Requirements: 12.3, 12.6
5
+ */
6
+ /**
7
+ * Cloud config manager options
8
+ */
9
+ export interface CloudConfigOptions {
10
+ encryptionKey: string;
11
+ syncEndpoint: string;
12
+ deviceName?: string;
13
+ }
14
+ /**
15
+ * Encrypted configuration structure
16
+ */
17
+ export interface EncryptedConfig {
18
+ data: string;
19
+ iv: string;
20
+ version: number;
21
+ timestamp: number;
22
+ deviceId?: string;
23
+ }
24
+ /**
25
+ * Configuration sync status
26
+ */
27
+ export interface ConfigSyncStatus {
28
+ syncState: 'idle' | 'syncing' | 'error' | 'conflict';
29
+ lastSyncTime: number;
30
+ hasPendingChanges: boolean;
31
+ error?: string;
32
+ conflictInfo?: ConflictInfo;
33
+ }
34
+ /**
35
+ * Conflict detection result
36
+ */
37
+ export interface ConflictInfo {
38
+ hasConflict: boolean;
39
+ newerVersion?: 'local' | 'remote';
40
+ localVersion?: number;
41
+ remoteVersion?: number;
42
+ }
43
+ /**
44
+ * Conflict resolution result
45
+ */
46
+ export interface ResolutionResult {
47
+ winner: 'local' | 'remote' | 'merged';
48
+ config?: Record<string, unknown>;
49
+ }
50
+ /**
51
+ * Known device info
52
+ */
53
+ export interface DeviceInfo {
54
+ id: string;
55
+ name: string;
56
+ lastSeen: number;
57
+ platform: string;
58
+ }
59
+ /**
60
+ * Cloud Configuration Manager
61
+ * Handles encrypted cloud sync of configurations
62
+ */
63
+ export declare class CloudConfigManager {
64
+ private options;
65
+ private currentVersion;
66
+ private hasPendingChanges;
67
+ private lastSyncTime;
68
+ private deviceId;
69
+ private localConfig;
70
+ private knownDevices;
71
+ constructor(options: CloudConfigOptions);
72
+ /**
73
+ * Encrypt configuration for cloud storage
74
+ */
75
+ encryptConfig(config: Record<string, unknown>): EncryptedConfig;
76
+ /**
77
+ * Decrypt configuration from cloud storage
78
+ */
79
+ decryptConfig(encrypted: EncryptedConfig): Record<string, unknown>;
80
+ /**
81
+ * Derive encryption key from password
82
+ */
83
+ private deriveKey;
84
+ /**
85
+ * Get current configuration version
86
+ */
87
+ getCurrentVersion(): number;
88
+ /**
89
+ * Save configuration locally
90
+ */
91
+ saveLocal(config: Record<string, unknown>): Promise<void>;
92
+ /**
93
+ * Detect conflict between local and remote configs
94
+ */
95
+ detectConflict(local: EncryptedConfig, remote: EncryptedConfig): ConflictInfo;
96
+ /**
97
+ * Get current sync status
98
+ */
99
+ getSyncStatus(): ConfigSyncStatus;
100
+ /**
101
+ * Get device ID
102
+ */
103
+ getDeviceId(): string;
104
+ /**
105
+ * Generate unique device ID
106
+ */
107
+ private generateDeviceId;
108
+ /**
109
+ * Get known devices
110
+ */
111
+ getKnownDevices(): DeviceInfo[];
112
+ /**
113
+ * Merge two configurations
114
+ */
115
+ mergeConfigs(local: Record<string, unknown>, remote: Record<string, unknown>): Record<string, unknown>;
116
+ /**
117
+ * Deep merge objects
118
+ */
119
+ private deepMerge;
120
+ /**
121
+ * Resolve conflict between local and remote
122
+ */
123
+ resolveConflict(local: {
124
+ version: number;
125
+ timestamp: number;
126
+ }, remote: {
127
+ version: number;
128
+ timestamp: number;
129
+ }, strategy: 'keep-newer' | 'keep-local' | 'keep-remote' | 'merge'): ResolutionResult;
130
+ /**
131
+ * Sync configuration to cloud
132
+ */
133
+ syncToCloud(): Promise<ConfigSyncStatus>;
134
+ /**
135
+ * Sync configuration from cloud
136
+ */
137
+ syncFromCloud(): Promise<Record<string, unknown> | null>;
138
+ }
139
+ //# sourceMappingURL=cloud-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloud-config.d.ts","sourceRoot":"","sources":["../../src/remote/cloud-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,229 @@
1
+ /**
2
+ * Cloud Configuration Management System
3
+ * Handles secure cloud sync of user configurations
4
+ * Requirements: 12.3, 12.6
5
+ */
6
+ import { createCipheriv, createDecipheriv, randomBytes, createHash } from 'crypto';
7
+ /**
8
+ * Cloud Configuration Manager
9
+ * Handles encrypted cloud sync of configurations
10
+ */
11
+ export class CloudConfigManager {
12
+ options;
13
+ currentVersion = 0;
14
+ hasPendingChanges = false;
15
+ lastSyncTime = 0;
16
+ deviceId;
17
+ localConfig = null;
18
+ knownDevices = [];
19
+ constructor(options) {
20
+ this.options = options;
21
+ this.deviceId = this.generateDeviceId();
22
+ }
23
+ /**
24
+ * Encrypt configuration for cloud storage
25
+ */
26
+ encryptConfig(config) {
27
+ const iv = randomBytes(16);
28
+ const key = this.deriveKey(this.options.encryptionKey);
29
+ const cipher = createCipheriv('aes-256-gcm', key, iv);
30
+ const jsonData = JSON.stringify(config);
31
+ let encrypted = cipher.update(jsonData, 'utf8', 'base64');
32
+ encrypted += cipher.final('base64');
33
+ const authTag = cipher.getAuthTag();
34
+ return {
35
+ data: encrypted + ':' + authTag.toString('base64'),
36
+ iv: iv.toString('base64'),
37
+ version: this.currentVersion + 1,
38
+ timestamp: Date.now(),
39
+ deviceId: this.deviceId,
40
+ };
41
+ }
42
+ /**
43
+ * Decrypt configuration from cloud storage
44
+ */
45
+ decryptConfig(encrypted) {
46
+ const [encryptedData, authTagBase64] = encrypted.data.split(':');
47
+ const iv = Buffer.from(encrypted.iv, 'base64');
48
+ const key = this.deriveKey(this.options.encryptionKey);
49
+ const authTag = Buffer.from(authTagBase64, 'base64');
50
+ const decipher = createDecipheriv('aes-256-gcm', key, iv);
51
+ decipher.setAuthTag(authTag);
52
+ let decrypted = decipher.update(encryptedData, 'base64', 'utf8');
53
+ decrypted += decipher.final('utf8');
54
+ return JSON.parse(decrypted);
55
+ }
56
+ /**
57
+ * Derive encryption key from password
58
+ */
59
+ deriveKey(password) {
60
+ const hash = createHash('sha256');
61
+ hash.update(password);
62
+ return hash.digest();
63
+ }
64
+ /**
65
+ * Get current configuration version
66
+ */
67
+ getCurrentVersion() {
68
+ return this.currentVersion;
69
+ }
70
+ /**
71
+ * Save configuration locally
72
+ */
73
+ async saveLocal(config) {
74
+ this.localConfig = config;
75
+ this.currentVersion++;
76
+ this.hasPendingChanges = true;
77
+ }
78
+ /**
79
+ * Detect conflict between local and remote configs
80
+ */
81
+ detectConflict(local, remote) {
82
+ if (local.version === remote.version) {
83
+ return {
84
+ hasConflict: false,
85
+ localVersion: local.version,
86
+ remoteVersion: remote.version,
87
+ };
88
+ }
89
+ const hasConflict = local.version !== remote.version;
90
+ const newerVersion = local.version > remote.version ? 'local' : 'remote';
91
+ return {
92
+ hasConflict,
93
+ newerVersion,
94
+ localVersion: local.version,
95
+ remoteVersion: remote.version,
96
+ };
97
+ }
98
+ /**
99
+ * Get current sync status
100
+ */
101
+ getSyncStatus() {
102
+ return {
103
+ syncState: 'idle',
104
+ lastSyncTime: this.lastSyncTime,
105
+ hasPendingChanges: this.hasPendingChanges,
106
+ };
107
+ }
108
+ /**
109
+ * Get device ID
110
+ */
111
+ getDeviceId() {
112
+ return this.deviceId;
113
+ }
114
+ /**
115
+ * Generate unique device ID
116
+ */
117
+ generateDeviceId() {
118
+ // In real implementation, this would be persisted
119
+ const hash = createHash('sha256');
120
+ hash.update(this.options.deviceName || 'default');
121
+ hash.update(Date.now().toString());
122
+ hash.update(randomBytes(16));
123
+ return hash.digest('hex').substring(0, 16);
124
+ }
125
+ /**
126
+ * Get known devices
127
+ */
128
+ getKnownDevices() {
129
+ return this.knownDevices;
130
+ }
131
+ /**
132
+ * Merge two configurations
133
+ */
134
+ mergeConfigs(local, remote) {
135
+ // Deep merge with remote taking precedence for conflicts
136
+ return this.deepMerge(local, remote);
137
+ }
138
+ /**
139
+ * Deep merge objects
140
+ */
141
+ deepMerge(target, source) {
142
+ const result = { ...target };
143
+ for (const key of Object.keys(source)) {
144
+ if (source[key] !== null &&
145
+ typeof source[key] === 'object' &&
146
+ !Array.isArray(source[key]) &&
147
+ target[key] !== null &&
148
+ typeof target[key] === 'object' &&
149
+ !Array.isArray(target[key])) {
150
+ result[key] = this.deepMerge(target[key], source[key]);
151
+ }
152
+ else {
153
+ result[key] = source[key];
154
+ }
155
+ }
156
+ return result;
157
+ }
158
+ /**
159
+ * Resolve conflict between local and remote
160
+ */
161
+ resolveConflict(local, remote, strategy) {
162
+ switch (strategy) {
163
+ case 'keep-local':
164
+ return { winner: 'local' };
165
+ case 'keep-remote':
166
+ return { winner: 'remote' };
167
+ case 'keep-newer':
168
+ if (local.timestamp > remote.timestamp || local.version > remote.version) {
169
+ return { winner: 'local' };
170
+ }
171
+ return { winner: 'remote' };
172
+ case 'merge':
173
+ return { winner: 'merged' };
174
+ default:
175
+ return { winner: 'local' };
176
+ }
177
+ }
178
+ /**
179
+ * Sync configuration to cloud
180
+ */
181
+ async syncToCloud() {
182
+ if (!this.localConfig) {
183
+ return this.getSyncStatus();
184
+ }
185
+ try {
186
+ // Encrypt config for transmission (currently a no-op for placeholder)
187
+ this.encryptConfig(this.localConfig);
188
+ // In real implementation, this would POST to the sync endpoint
189
+ // const encrypted = this.encryptConfig(this.localConfig);
190
+ // await fetch(this.options.syncEndpoint, {
191
+ // method: 'POST',
192
+ // body: JSON.stringify(encrypted),
193
+ // });
194
+ this.lastSyncTime = Date.now();
195
+ this.hasPendingChanges = false;
196
+ return {
197
+ syncState: 'idle',
198
+ lastSyncTime: this.lastSyncTime,
199
+ hasPendingChanges: false,
200
+ };
201
+ }
202
+ catch (error) {
203
+ return {
204
+ syncState: 'error',
205
+ lastSyncTime: this.lastSyncTime,
206
+ hasPendingChanges: true,
207
+ error: error.message,
208
+ };
209
+ }
210
+ }
211
+ /**
212
+ * Sync configuration from cloud
213
+ */
214
+ async syncFromCloud() {
215
+ try {
216
+ // In real implementation, this would GET from the sync endpoint
217
+ // const response = await fetch(this.options.syncEndpoint);
218
+ // const encrypted = await response.json();
219
+ // return this.decryptConfig(encrypted);
220
+ this.lastSyncTime = Date.now();
221
+ return this.localConfig;
222
+ }
223
+ catch (error) {
224
+ console.error('Failed to sync from cloud:', error);
225
+ return null;
226
+ }
227
+ }
228
+ }
229
+ //# sourceMappingURL=cloud-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloud-config.js","sourceRoot":"","sources":["../../src/remote/cloud-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,109 @@
1
+ /**
2
+ * Hybrid Integration System
3
+ * Coordinates Remote MCP and Native integrations across platforms
4
+ * Requirement: 12.5
5
+ */
6
+ export type Platform = 'macos' | 'ios' | 'ipados' | 'web' | 'unknown';
7
+ export type IntegrationType = 'native' | 'remote' | 'mcp' | 'unavailable';
8
+ export type ServiceType = 'reminders' | 'calendar' | 'notion';
9
+ /**
10
+ * Platform capabilities for each service
11
+ */
12
+ export interface PlatformCapabilities {
13
+ reminders: IntegrationType;
14
+ calendar: IntegrationType;
15
+ notion: IntegrationType;
16
+ }
17
+ /**
18
+ * Integration strategy for a service
19
+ */
20
+ export interface IntegrationStrategy {
21
+ primary: IntegrationType;
22
+ fallback?: IntegrationType;
23
+ options?: Record<string, unknown>;
24
+ }
25
+ /**
26
+ * Task execution request
27
+ */
28
+ export interface TaskExecutionRequest {
29
+ type: string;
30
+ platform: Platform;
31
+ payload: Record<string, unknown>;
32
+ }
33
+ /**
34
+ * Task execution result
35
+ */
36
+ export interface TaskExecutionResult {
37
+ success: boolean;
38
+ attempted: IntegrationType[];
39
+ result?: unknown;
40
+ error?: string;
41
+ }
42
+ /**
43
+ * Platform coordination plan
44
+ */
45
+ export interface CoordinationPlan {
46
+ platforms: Platform[];
47
+ syncStrategy: 'real-time' | 'eventual' | 'manual';
48
+ conflictResolution: 'last-write-wins' | 'merge' | 'manual';
49
+ syncInterval?: number;
50
+ }
51
+ /**
52
+ * Integration Capability class
53
+ * Represents a capability with priority
54
+ */
55
+ export declare class IntegrationCapability {
56
+ readonly type: IntegrationType;
57
+ readonly service: ServiceType;
58
+ readonly priority: number;
59
+ constructor(type: IntegrationType, service: ServiceType, priority: number);
60
+ /**
61
+ * Check if this capability is preferred over another
62
+ */
63
+ isPreferredOver(other: IntegrationCapability): boolean;
64
+ }
65
+ /**
66
+ * Hybrid Integration Manager
67
+ * Coordinates between native and remote integrations
68
+ */
69
+ export declare class HybridIntegrationManager {
70
+ private capabilityMap;
71
+ constructor();
72
+ /**
73
+ * Initialize capability map for all platforms
74
+ */
75
+ private initializeCapabilityMap;
76
+ /**
77
+ * Detect available capabilities for a platform
78
+ */
79
+ detectCapabilities(platform: Platform): PlatformCapabilities;
80
+ /**
81
+ * Select the best integration strategy for a service on a platform
82
+ */
83
+ selectStrategy(service: ServiceType, platform: Platform): IntegrationStrategy;
84
+ /**
85
+ * Execute a task using the hybrid integration system
86
+ */
87
+ executeTask(request: TaskExecutionRequest): Promise<TaskExecutionResult>;
88
+ /**
89
+ * Plan coordination between multiple platforms
90
+ */
91
+ planCoordination(platforms: Platform[]): CoordinationPlan;
92
+ /**
93
+ * Get service type from task type
94
+ */
95
+ private getServiceFromTaskType;
96
+ /**
97
+ * Execute task using native integration
98
+ */
99
+ private executeNative;
100
+ /**
101
+ * Execute task using remote MCP server
102
+ */
103
+ private executeRemote;
104
+ /**
105
+ * Execute task using MCP client
106
+ */
107
+ private executeMCP;
108
+ }
109
+ //# sourceMappingURL=hybrid-integration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hybrid-integration.d.ts","sourceRoot":"","sources":["../../src/remote/hybrid-integration.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,CAAC;AACtE,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,QAAQ,GAAG,KAAK,GAAG,aAAa,CAAC;AAC1E,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,UAAU,GAAG,QAAQ,CAAC;AAE9D;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,eAAe,CAAC;IAC3B,QAAQ,EAAE,eAAe,CAAC;IAC1B,MAAM,EAAE,eAAe,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,eAAe,CAAC;IACzB,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,QAAQ,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,eAAe,EAAE,CAAC;IAC7B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,YAAY,EAAE,WAAW,GAAG,UAAU,GAAG,QAAQ,CAAC;IAClD,kBAAkB,EAAE,iBAAiB,GAAG,OAAO,GAAG,QAAQ,CAAC;IAC3D,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,qBAAa,qBAAqB;aAEd,IAAI,EAAE,eAAe;aACrB,OAAO,EAAE,WAAW;aACpB,QAAQ,EAAE,MAAM;gBAFhB,IAAI,EAAE,eAAe,EACrB,OAAO,EAAE,WAAW,EACpB,QAAQ,EAAE,MAAM;IAGlC;;OAEG;IACH,eAAe,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO;CAGvD;AAED;;;GAGG;AACH,qBAAa,wBAAwB;IACnC,OAAO,CAAC,aAAa,CAAsC;;IAM3D;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAyC/B;;OAEG;IACH,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,GAAG,oBAAoB;IAU5D;;OAEG;IACH,cAAc,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,GAAG,mBAAmB;IAmB7E;;OAEG;IACG,WAAW,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAsD9E;;OAEG;IACH,gBAAgB,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,gBAAgB;IAsBzD;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAW9B;;OAEG;YACW,aAAa;IAa3B;;OAEG;YACW,aAAa;IAY3B;;OAEG;YACW,UAAU;CAWzB"}