@xemahq/biomes-platform-imap 0.5.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/SECURITY-BOUNDS.md +85 -0
- package/dist/THIRD-PARTY-NOTICES.txt +657 -0
- package/dist/connector-adapters/imap-client.factory.d.ts +14 -2
- package/dist/connector-adapters/imap-fetch.d.ts +95 -15
- package/dist/connector-adapters/imap-message-parts.d.ts +8 -1
- package/dist/connector-adapters/index.js +76264 -127
- package/dist/connector-adapters/mail-dial-guard.d.ts +108 -0
- package/package.json +36 -10
- package/xema-biome.json +2 -2
- package/dist/connector-adapters/imap-client.factory.d.ts.map +0 -1
- package/dist/connector-adapters/imap-client.factory.js +0 -48
- package/dist/connector-adapters/imap-client.factory.js.map +0 -1
- package/dist/connector-adapters/imap-fetch.d.ts.map +0 -1
- package/dist/connector-adapters/imap-fetch.js +0 -547
- package/dist/connector-adapters/imap-fetch.js.map +0 -1
- package/dist/connector-adapters/imap-message-parts.d.ts.map +0 -1
- package/dist/connector-adapters/imap-message-parts.js +0 -103
- package/dist/connector-adapters/imap-message-parts.js.map +0 -1
- package/dist/connector-adapters/index.d.ts.map +0 -1
- package/dist/connector-adapters/index.js.map +0 -1
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { type ConnectionOptions } from 'node:tls';
|
|
2
|
+
export declare const MAIL_DIAL_REFUSED: "MAIL_DIAL_REFUSED";
|
|
3
|
+
export declare const MAIL_TLS_REQUIRED: "MAIL_TLS_REQUIRED";
|
|
4
|
+
export declare const MAIL_DIAL_REFUSED_MESSAGE = "mail server refused: the host must resolve only to public addresses and use a supported mail port";
|
|
5
|
+
export declare class MailDialRefusedError extends Error {
|
|
6
|
+
readonly code: "MAIL_DIAL_REFUSED";
|
|
7
|
+
constructor();
|
|
8
|
+
}
|
|
9
|
+
export declare class MailTlsRequiredError extends Error {
|
|
10
|
+
readonly code: "MAIL_TLS_REQUIRED";
|
|
11
|
+
constructor();
|
|
12
|
+
}
|
|
13
|
+
export declare const MAIL_OPERATION_TIMEOUT: "MAIL_OPERATION_TIMEOUT";
|
|
14
|
+
export declare class MailOperationTimeoutError extends Error {
|
|
15
|
+
readonly limitMs: number;
|
|
16
|
+
readonly code: "MAIL_OPERATION_TIMEOUT";
|
|
17
|
+
constructor(limitMs: number);
|
|
18
|
+
}
|
|
19
|
+
export declare const MAIL_INBOUND_TOO_LARGE: "MAIL_INBOUND_TOO_LARGE";
|
|
20
|
+
export declare class MailInboundTooLargeError extends Error {
|
|
21
|
+
readonly limit: number;
|
|
22
|
+
readonly code: "MAIL_INBOUND_TOO_LARGE";
|
|
23
|
+
constructor(limit: number);
|
|
24
|
+
}
|
|
25
|
+
export declare function hasMailHostUserinfo(host: string): boolean;
|
|
26
|
+
export declare function mailHostProblem(host: string): 'userinfo' | 'trailing-dot' | 'invalid' | undefined;
|
|
27
|
+
export declare function normalizeMailHost(host: string): string | undefined;
|
|
28
|
+
export declare function loggableMailHost(host: string): string;
|
|
29
|
+
export declare function isTlsFailure(cause: unknown): boolean;
|
|
30
|
+
export declare function isPublicAddress(ip: string): boolean;
|
|
31
|
+
export type MailProtocol = 'imap' | 'smtp';
|
|
32
|
+
export type MailTlsMode = 'implicit' | 'starttls';
|
|
33
|
+
export declare function mailTlsModeForPort(protocol: MailProtocol, port: number): MailTlsMode | undefined;
|
|
34
|
+
export interface MailTimeouts {
|
|
35
|
+
readonly dnsLookupMs: number;
|
|
36
|
+
readonly connectMs: number;
|
|
37
|
+
readonly greetingMs: number;
|
|
38
|
+
readonly socketIdleMs: number;
|
|
39
|
+
}
|
|
40
|
+
export declare const DEFAULT_MAIL_TIMEOUTS: MailTimeouts;
|
|
41
|
+
export declare const MAIL_TIMEOUT_MIN_MS = 1000;
|
|
42
|
+
export declare const MAIL_TIMEOUT_MAX_MS = 120000;
|
|
43
|
+
export declare const DEFAULT_MAIL_OPERATION_MS = 600000;
|
|
44
|
+
export declare const MAIL_OPERATION_MIN_MS = 10000;
|
|
45
|
+
export declare const MAIL_OPERATION_MAX_MS = 1800000;
|
|
46
|
+
export declare function resolveMailOperationMs(value?: number): number;
|
|
47
|
+
export declare function resolveMailTimeouts(overrides?: {
|
|
48
|
+
readonly [K in keyof MailTimeouts]?: number | undefined;
|
|
49
|
+
}): MailTimeouts;
|
|
50
|
+
export type MailRefusalCause = 'port-not-allowed' | 'invalid-host' | 'blocked-range' | 'nxdomain' | 'dns-timeout' | 'dns-error' | 'tls';
|
|
51
|
+
export interface MailRefusalEvent {
|
|
52
|
+
readonly event: 'mail.dial.refused';
|
|
53
|
+
readonly protocol: MailProtocol;
|
|
54
|
+
readonly cause: MailRefusalCause;
|
|
55
|
+
readonly host: string;
|
|
56
|
+
readonly port: number;
|
|
57
|
+
readonly address?: string;
|
|
58
|
+
readonly code?: string;
|
|
59
|
+
}
|
|
60
|
+
export interface MailTimeoutEvent {
|
|
61
|
+
readonly event: 'mail.timeout';
|
|
62
|
+
readonly protocol: MailProtocol;
|
|
63
|
+
readonly host: string;
|
|
64
|
+
readonly port: number;
|
|
65
|
+
readonly code: string;
|
|
66
|
+
}
|
|
67
|
+
export interface MailResponseRefusedEvent {
|
|
68
|
+
readonly event: 'mail.response.refused';
|
|
69
|
+
readonly protocol: MailProtocol;
|
|
70
|
+
readonly host: string;
|
|
71
|
+
readonly port: number;
|
|
72
|
+
readonly code: string;
|
|
73
|
+
}
|
|
74
|
+
export type MailConnectorEvent = MailRefusalEvent | MailTimeoutEvent | MailResponseRefusedEvent;
|
|
75
|
+
export type MailEventLog = (event: MailConnectorEvent) => void;
|
|
76
|
+
export declare const defaultMailEventLog: MailEventLog;
|
|
77
|
+
export declare function errorCode(cause: unknown): string | undefined;
|
|
78
|
+
export declare function isMailTimeout(cause: unknown): boolean;
|
|
79
|
+
export interface MailOperationDeadline {
|
|
80
|
+
readonly expired: boolean;
|
|
81
|
+
readonly error: MailOperationTimeoutError;
|
|
82
|
+
clear(): void;
|
|
83
|
+
}
|
|
84
|
+
export declare function startMailOperationDeadline(target: {
|
|
85
|
+
readonly protocol: MailProtocol;
|
|
86
|
+
readonly host: string;
|
|
87
|
+
readonly port: number;
|
|
88
|
+
}, ms: number, log: MailEventLog, onExpire: () => void): MailOperationDeadline;
|
|
89
|
+
export interface ResolvedAddress {
|
|
90
|
+
readonly address: string;
|
|
91
|
+
readonly family: number;
|
|
92
|
+
}
|
|
93
|
+
export type MailHostResolver = (host: string) => Promise<readonly ResolvedAddress[]>;
|
|
94
|
+
export interface MailDialTarget {
|
|
95
|
+
readonly hostname: string;
|
|
96
|
+
readonly address: string;
|
|
97
|
+
readonly port: number;
|
|
98
|
+
readonly tlsMode: MailTlsMode;
|
|
99
|
+
}
|
|
100
|
+
export interface MailDialOptions {
|
|
101
|
+
readonly resolve?: MailHostResolver;
|
|
102
|
+
readonly dnsLookupMs?: number;
|
|
103
|
+
readonly log?: MailEventLog;
|
|
104
|
+
}
|
|
105
|
+
export declare function resolveMailDialTarget(protocol: MailProtocol, host: string, port: number, options?: MailDialOptions): Promise<MailDialTarget>;
|
|
106
|
+
export declare function refuseMailTls(log: MailEventLog, protocol: MailProtocol, host: string, port: number, cause: unknown): MailTlsRequiredError;
|
|
107
|
+
export declare function mailTlsOptions(target: MailDialTarget, extra?: Pick<ConnectionOptions, 'ca'>): ConnectionOptions;
|
|
108
|
+
//# sourceMappingURL=mail-dial-guard.d.ts.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xemahq/biomes-platform-imap",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "git+https://github.com/xema-dev/xema-connectors.git",
|
|
@@ -14,9 +14,12 @@
|
|
|
14
14
|
},
|
|
15
15
|
"main": "dist/connector-adapters/index.js",
|
|
16
16
|
"files": [
|
|
17
|
-
"dist",
|
|
17
|
+
"dist/connector-adapters/index.js",
|
|
18
|
+
"dist/**/*.d.ts",
|
|
19
|
+
"dist/THIRD-PARTY-NOTICES.txt",
|
|
18
20
|
"xema-biome.json",
|
|
19
|
-
"contributions"
|
|
21
|
+
"contributions",
|
|
22
|
+
"SECURITY-BOUNDS.md"
|
|
20
23
|
],
|
|
21
24
|
"exports": {
|
|
22
25
|
"./connector-adapters": {
|
|
@@ -25,21 +28,44 @@
|
|
|
25
28
|
},
|
|
26
29
|
"./package.json": "./package.json"
|
|
27
30
|
},
|
|
28
|
-
"dependencies": {
|
|
29
|
-
"@xemahq/biome-sdk": "^20.0.0",
|
|
30
|
-
"@xemahq/contracts": "^0.60.0",
|
|
31
|
-
"imapflow": "^1.0.180"
|
|
32
|
-
},
|
|
33
31
|
"devDependencies": {
|
|
34
32
|
"@types/node": "25.2.3",
|
|
33
|
+
"@xemahq/biome-sdk": "^20.0.0",
|
|
34
|
+
"@xemahq/contracts": "^0.77.0",
|
|
35
|
+
"imapflow": "1.7.8",
|
|
35
36
|
"typescript": "5.9.3"
|
|
36
37
|
},
|
|
38
|
+
"xemaBundled": {
|
|
39
|
+
"@pinojs/redact": "0.4.0",
|
|
40
|
+
"@xemahq/biome-sdk": "20.0.0",
|
|
41
|
+
"@xemahq/contracts": "0.77.0",
|
|
42
|
+
"@zone-eu/mailsplit": "5.4.16",
|
|
43
|
+
"atomic-sleep": "1.0.0",
|
|
44
|
+
"encoding-japanese": "2.3.0",
|
|
45
|
+
"iconv-lite": "0.7.3",
|
|
46
|
+
"imapflow": "1.7.8",
|
|
47
|
+
"ip-address": "10.7.0",
|
|
48
|
+
"libbase64": "1.3.0",
|
|
49
|
+
"libmime": "5.4.3",
|
|
50
|
+
"libqp": "2.1.1",
|
|
51
|
+
"on-exit-leak-free": "2.1.2",
|
|
52
|
+
"pino": "10.3.1",
|
|
53
|
+
"pino-std-serializers": "7.1.0",
|
|
54
|
+
"quick-format-unescaped": "4.0.4",
|
|
55
|
+
"safe-stable-stringify": "2.5.0",
|
|
56
|
+
"safer-buffer": "2.1.2",
|
|
57
|
+
"smart-buffer": "4.2.0",
|
|
58
|
+
"socks": "2.8.9",
|
|
59
|
+
"sonic-boom": "4.2.1",
|
|
60
|
+
"thread-stream": "4.2.0",
|
|
61
|
+
"zod": "4.6.5"
|
|
62
|
+
},
|
|
37
63
|
"scripts": {
|
|
38
|
-
"build": "tsc -p tsconfig.json",
|
|
64
|
+
"build": "tsc -p tsconfig.json && node ../../tooling/bundle/bundle-adapter.mjs",
|
|
39
65
|
"typecheck": "tsc --noEmit",
|
|
40
66
|
"test": "node --test ./tests/**/*.test.mjs"
|
|
41
67
|
},
|
|
42
68
|
"xemaRelease": {
|
|
43
|
-
"sourceDigest": "sha256:
|
|
69
|
+
"sourceDigest": "sha256:81565a7f370c458c2d00640097126903053ec1b6f38eebe996d468afd8f52170"
|
|
44
70
|
}
|
|
45
71
|
}
|
package/xema-biome.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xemahq/biomes-platform-imap",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0",
|
|
4
4
|
"xema": {
|
|
5
5
|
"id": "connector-imap",
|
|
6
6
|
"displayName": "IMAP Connector",
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"bundleSource": {
|
|
18
18
|
"kind": "npm",
|
|
19
19
|
"name": "@xemahq/biomes-platform-imap",
|
|
20
|
-
"version": "0.
|
|
20
|
+
"version": "0.7.0"
|
|
21
21
|
},
|
|
22
22
|
"trustTier": "first-party",
|
|
23
23
|
"connectorRequirements": [
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"imap-client.factory.d.ts","sourceRoot":"","sources":["../../src/connector-adapters/imap-client.factory.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EACV,cAAc,EAId,mBAAmB,EACpB,MAAM,iBAAiB,CAAC;AAGzB,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,mBAAmB,GAAG,cAAc,CAqE5E"}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import { ImapFlow } from 'imapflow';
|
|
2
|
-
export function createImapClient(config) {
|
|
3
|
-
const client = new ImapFlow({
|
|
4
|
-
host: config.host,
|
|
5
|
-
port: config.port,
|
|
6
|
-
secure: config.secure,
|
|
7
|
-
auth: { user: config.username, pass: config.password },
|
|
8
|
-
logger: false,
|
|
9
|
-
});
|
|
10
|
-
return {
|
|
11
|
-
connect() {
|
|
12
|
-
return client.connect();
|
|
13
|
-
},
|
|
14
|
-
logout() {
|
|
15
|
-
return client.logout();
|
|
16
|
-
},
|
|
17
|
-
close() {
|
|
18
|
-
client.close();
|
|
19
|
-
},
|
|
20
|
-
async getMailboxLock(mailbox) {
|
|
21
|
-
const lock = await client.getMailboxLock(mailbox);
|
|
22
|
-
return { release: () => lock.release() };
|
|
23
|
-
},
|
|
24
|
-
get mailbox() {
|
|
25
|
-
return client.mailbox === false
|
|
26
|
-
? false
|
|
27
|
-
: { uidValidity: client.mailbox.uidValidity };
|
|
28
|
-
},
|
|
29
|
-
async search(query, options) {
|
|
30
|
-
return client.search(query, options);
|
|
31
|
-
},
|
|
32
|
-
fetch(range, query, options) {
|
|
33
|
-
return client.fetch(range, query, options);
|
|
34
|
-
},
|
|
35
|
-
async fetchOne(range, query, options) {
|
|
36
|
-
const msg = await client.fetchOne(range, query, options);
|
|
37
|
-
return msg === false ? false : msg;
|
|
38
|
-
},
|
|
39
|
-
async download(range, part, options) {
|
|
40
|
-
const downloaded = await client.download(range, part, options);
|
|
41
|
-
return { content: downloaded.content };
|
|
42
|
-
},
|
|
43
|
-
messageFlagsAdd(range, flags, options) {
|
|
44
|
-
return client.messageFlagsAdd(range, [...flags], options);
|
|
45
|
-
},
|
|
46
|
-
};
|
|
47
|
-
}
|
|
48
|
-
//# sourceMappingURL=imap-client.factory.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"imap-client.factory.js","sourceRoot":"","sources":["../../src/connector-adapters/imap-client.factory.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAWpC,MAAM,UAAU,gBAAgB,CAAC,MAA2B;IAC1D,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC;QAC1B,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,QAAQ,EAAE;QACtD,MAAM,EAAE,KAAK;KACd,CAAC,CAAC;IAEH,OAAO;QACL,OAAO;YACL,OAAO,MAAM,CAAC,OAAO,EAAE,CAAC;QAC1B,CAAC;QACD,MAAM;YACJ,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC;QACzB,CAAC;QACD,KAAK;YACH,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,CAAC;QACD,KAAK,CAAC,cAAc,CAAC,OAAe;YAClC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YAClD,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;QAC3C,CAAC;QACD,IAAI,OAAO;YACT,OAAO,MAAM,CAAC,OAAO,KAAK,KAAK;gBAC7B,CAAC,CAAC,KAAK;gBACP,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QAClD,CAAC;QACD,KAAK,CAAC,MAAM,CACV,KAAwC,EACxC,OAAsB;YAEtB,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACvC,CAAC;QACD,KAAK,CACH,KAAa,EACb,KAAwC,EACxC,OAAsB;YAEtB,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAA+B,CAAC;QAC3E,CAAC;QACD,KAAK,CAAC,QAAQ,CACZ,KAAa,EACb,KAAwC,EACxC,OAAsB;YAEtB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,QAAQ,CAC/B,KAAK,EACL,KAA4C,EAC5C,OAAO,CACR,CAAC;YACF,OAAO,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAE,GAA8B,CAAC;QACjE,CAAC;QACD,KAAK,CAAC,QAAQ,CACZ,KAAa,EACb,IAAwB,EACxB,OAAsB;YAEtB,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;YAC/D,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,OAAoC,EAAE,CAAC;QACtE,CAAC;QACD,eAAe,CACb,KAAa,EACb,KAAwB,EACxB,OAAsB;YAEtB,OAAO,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;QAC5D,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"imap-fetch.d.ts","sourceRoot":"","sources":["../../src/connector-adapters/imap-fetch.ts"],"names":[],"mappings":"AA2CA,OAAO,EAIL,KAAK,qBAAqB,EAI3B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAE3D,OAAO,EAGL,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,YAAY,EAElB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,6BAA6B,EAC7B,KAAK,cAAc,EACnB,KAAK,WAAW,GACjB,MAAM,yBAAyB,CAAC;AAEjC,eAAO,MAAM,iBAAiB,UAAU,CAAC;AACzC,eAAO,MAAM,wBAAwB,iBAAiB,CAAC;AACvD,eAAO,MAAM,kBAAkB,WAAW,CAAC;AAC3C,eAAO,MAAM,gBAAgB,SAAS,CAAC;AASvC,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,QAAQ,CAAC,EAAE,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAKD,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAGD,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,SAAS,MAAM,EAAE,CAAC;IACzD,QAAQ,CAAC,QAAQ,CAAC,EAAE;QAClB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;QAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,WAAW,EAAE,CAAC;QACvC,QAAQ,CAAC,EAAE,CAAC,EAAE,SAAS,WAAW,EAAE,CAAC;QACrC,QAAQ,CAAC,EAAE,CAAC,EAAE,SAAS,WAAW,EAAE,CAAC;KACtC,CAAC;IAEF,QAAQ,CAAC,aAAa,CAAC,EAAE,YAAY,CAAC;CACvC;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,IAAI,IAAI,CAAC;CACjB;AAGD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;CAC7C;AAGD,MAAM,WAAW,cAAc;IAC7B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAMxB,KAAK,IAAI,IAAI,CAAC;IACd,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAE1D,QAAQ,CAAC,OAAO,EAAE;QAAE,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;KAAE,GAAG,KAAK,CAAC;IAC7E,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE;QAAE,GAAG,EAAE,IAAI,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC;IACpG,KAAK,CACH,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACxC,OAAO,EAAE;QAAE,GAAG,EAAE,IAAI,CAAA;KAAE,GACrB,aAAa,CAAC,WAAW,CAAC,CAAC;IAE9B,QAAQ,CACN,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACxC,OAAO,EAAE;QAAE,GAAG,EAAE,IAAI,CAAA;KAAE,GACrB,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC,CAAC;IAEhC,QAAQ,CACN,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,OAAO,EAAE;QAAE,GAAG,EAAE,IAAI,CAAA;KAAE,GACrB,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC/B,eAAe,CACb,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,OAAO,EAAE;QAAE,GAAG,EAAE,IAAI,CAAA;KAAE,GACrB,OAAO,CAAC,OAAO,CAAC,CAAC;CACrB;AAED,MAAM,MAAM,iBAAiB,GAAG,CAAC,MAAM,EAAE,mBAAmB,KAAK,cAAc,CAAC;AAiBhF,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAQ9E;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAErC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,mBAAmB,CAAA;CAAE,GACzC;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAajC;AAGD,wBAAgB,YAAY,CAAC,QAAQ,EAAE,kBAAkB,GAAG,MAAM,CAOjE;AAGD,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,kBAAkB,GAC3B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA8BzB;AAoBD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,WAAW,GAAG,eAAe,CAuBnE;AAiED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAC;IACrC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;CACtC;AA0GD,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,eAAe,GAAG,WAAW,CAAC,EAAE,CAAC;IAC9D,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAEhC,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;CAClD;AAaD,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE;IACN,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC;IACtC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;CACjC,GACA,OAAO,CAAC,sBAAsB,CAAC,CAkDjC;AAID,MAAM,WAAW,gBAAiB,SAAQ,eAAe,EAAE,WAAW;IACpE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;CAClD;AAOD,MAAM,MAAM,iBAAiB,GACzB;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAA;CAAE,GAChE;IAAE,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAC;IAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GACtE;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAA;CAAE,CAAC;AAQnC,wBAAsB,UAAU,CAC9B,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE;IACN,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAC;IACrC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;CACtC,GACA,OAAO,CAAC,iBAAiB,CAAC,CAwC5B;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,SAAS,eAAe,EAAE,CAAC;CAC9C;AAGD,wBAAsB,YAAY,CAChC,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE;IACN,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC;IACtC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAC;CACpC,GACA,OAAO,CAAC,YAAY,CAAC,CAgBvB;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AAGD,wBAAsB,YAAY,CAChC,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE;IACN,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC,GACA,OAAO,CAAC,UAAU,CAAC,CAUrB;AA+ED,wBAAgB,eAAe,CAAC,OAAO,EAAE,iBAAiB,GAAG,qBAAqB,CAkDjF;AAOD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,iBAAiB,GAAG,qBAAqB,CAkEtF;AAGD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,GAAG,qBAAqB,CA4ClF;AAGD,wBAAgB,cAAc,CAAC,OAAO,EAAE,iBAAiB,GAAG,qBAAqB,CAqChF"}
|