@haskou/value-objects 2.7.0 → 2.7.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.
- package/README.md +2 -0
- package/dist/value-objects/crypto/PrivateKey.d.ts +10 -0
- package/dist/value-objects/crypto/PrivateKey.d.ts.map +1 -1
- package/dist/value-objects/crypto/PrivateKey.js +37 -6
- package/dist/value-objects/crypto/PrivateKey.js.map +1 -1
- package/dist/value-objects/crypto/PublicKey.d.ts +1 -0
- package/dist/value-objects/crypto/PublicKey.d.ts.map +1 -1
- package/dist/value-objects/crypto/PublicKey.js +2 -0
- package/dist/value-objects/crypto/PublicKey.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -210,6 +210,8 @@ to choose the npm version bump:
|
|
|
210
210
|
|
|
211
211
|
Branches without one of these prefixes still run CI, but they do not publish
|
|
212
212
|
to npm. Publishing uses npm Trusted Publishing from the `ci.yml` workflow.
|
|
213
|
+
After a successful publish, CI commits the release version to the default
|
|
214
|
+
branch and creates the matching `vX.Y.Z` Git tag.
|
|
213
215
|
|
|
214
216
|
## 🤝 Contributing
|
|
215
217
|
|
|
@@ -7,7 +7,17 @@ import { PublicKey } from './PublicKey';
|
|
|
7
7
|
import { Signature } from './Signature';
|
|
8
8
|
export declare class PrivateKey extends Key {
|
|
9
9
|
private static readonly LENGTH;
|
|
10
|
+
private static readonly ENCRYPTED_PAYLOAD_PARTS;
|
|
11
|
+
private static readonly EPHEMERAL_PUBLIC_KEY_LENGTH;
|
|
12
|
+
private static readonly IV_LENGTH;
|
|
13
|
+
private static readonly TAG_LENGTH;
|
|
14
|
+
private static readonly MAX_CIPHERTEXT_LENGTH;
|
|
15
|
+
private static readonly BASE64_PATTERN;
|
|
10
16
|
private static readonly PATTERN;
|
|
17
|
+
private static getBase64DecodedLength;
|
|
18
|
+
private static ensureIsBase64;
|
|
19
|
+
private static ensureBase64DecodedLength;
|
|
20
|
+
private static decodeBase64;
|
|
11
21
|
static fromPEM(pem: string | StringValueObject): PrivateKey;
|
|
12
22
|
static generate(): PrivateKey;
|
|
13
23
|
constructor(value: string | StringValueObject);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PrivateKey.d.ts","sourceRoot":"","sources":["../../../src/value-objects/crypto/PrivateKey.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAMhC,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,qBAAa,UAAW,SAAQ,GAAG;IACjC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAO;IACrC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CACiD;
|
|
1
|
+
{"version":3,"file":"PrivateKey.d.ts","sourceRoot":"","sources":["../../../src/value-objects/crypto/PrivateKey.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAMhC,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,qBAAa,UAAW,SAAQ,GAAG;IACjC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAO;IACrC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,uBAAuB,CAAK;IACpD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,2BAA2B,CAAM;IACzD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAM;IACvC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAM;IACxC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAAe;IAC5D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAC+B;IAErE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CACiD;IAEhF,OAAO,CAAC,MAAM,CAAC,sBAAsB;IAMrC,OAAO,CAAC,MAAM,CAAC,cAAc;IAa7B,OAAO,CAAC,MAAM,CAAC,yBAAyB;IAYxC,OAAO,CAAC,MAAM,CAAC,YAAY;WASb,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,GAAG,UAAU;WAIpD,QAAQ,IAAI,UAAU;gBAIxB,KAAK,EAAE,MAAM,GAAG,iBAAiB;IAU7C,OAAO,CAAC,uBAAuB;IAQxB,YAAY,IAAI,SAAS;IAIzB,IAAI,CAAC,OAAO,EAAE,aAAa,GAAG,SAAS;IAOvC,OAAO,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,MAAM;CAsD3D"}
|
|
@@ -12,7 +12,30 @@ const PublicKey_1 = require("./PublicKey");
|
|
|
12
12
|
const Signature_1 = require("./Signature");
|
|
13
13
|
class PrivateKey extends Key_1.Key {
|
|
14
14
|
static LENGTH = 119;
|
|
15
|
+
static ENCRYPTED_PAYLOAD_PARTS = 4;
|
|
16
|
+
static EPHEMERAL_PUBLIC_KEY_LENGTH = 32;
|
|
17
|
+
static IV_LENGTH = 12;
|
|
18
|
+
static TAG_LENGTH = 16;
|
|
19
|
+
static MAX_CIPHERTEXT_LENGTH = 1024 * 1024;
|
|
20
|
+
static BASE64_PATTERN = /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/;
|
|
15
21
|
static PATTERN = /^-----BEGIN PRIVATE KEY-----\n[A-Za-z0-9+/=]+\n-----END PRIVATE KEY-----\n$/;
|
|
22
|
+
static getBase64DecodedLength(value) {
|
|
23
|
+
const padding = value.endsWith('==') ? 2 : value.endsWith('=') ? 1 : 0;
|
|
24
|
+
return (value.length / 4) * 3 - padding;
|
|
25
|
+
}
|
|
26
|
+
static ensureIsBase64(value, encryptedPayload, options = { allowEmpty: false }) {
|
|
27
|
+
(0, patterns_1.assert)((options.allowEmpty || value.length > 0) &&
|
|
28
|
+
value.length % 4 === 0 &&
|
|
29
|
+
PrivateKey.BASE64_PATTERN.test(value), new InvalidFormatError_1.InvalidFormatError(encryptedPayload.valueOf()));
|
|
30
|
+
}
|
|
31
|
+
static ensureBase64DecodedLength(value, encryptedPayload, length) {
|
|
32
|
+
PrivateKey.ensureIsBase64(value, encryptedPayload);
|
|
33
|
+
(0, patterns_1.assert)(PrivateKey.getBase64DecodedLength(value) === length, new InvalidFormatError_1.InvalidFormatError(encryptedPayload.valueOf()));
|
|
34
|
+
}
|
|
35
|
+
static decodeBase64(value, encryptedPayload) {
|
|
36
|
+
PrivateKey.ensureIsBase64(value, encryptedPayload);
|
|
37
|
+
return buffer_1.Buffer.from(value, 'base64');
|
|
38
|
+
}
|
|
16
39
|
static fromPEM(pem) {
|
|
17
40
|
return new PrivateKey(pem.valueOf());
|
|
18
41
|
}
|
|
@@ -39,13 +62,21 @@ class PrivateKey extends Key_1.Key {
|
|
|
39
62
|
return Signature_1.Signature.fromBuffer(signatureBuffer);
|
|
40
63
|
}
|
|
41
64
|
decrypt(encryptedPayload) {
|
|
42
|
-
const
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
65
|
+
const parts = encryptedPayload.valueOf().split('.');
|
|
66
|
+
(0, patterns_1.assert)(parts.length === PrivateKey.ENCRYPTED_PAYLOAD_PARTS, new InvalidFormatError_1.InvalidFormatError(encryptedPayload.valueOf()));
|
|
67
|
+
const [ephPubB64, ivB64, cipherTextB64, tagB64] = parts;
|
|
68
|
+
PrivateKey.ensureIsBase64(cipherTextB64, encryptedPayload, {
|
|
69
|
+
allowEmpty: true,
|
|
70
|
+
});
|
|
71
|
+
const cipherTextLength = PrivateKey.getBase64DecodedLength(cipherTextB64);
|
|
72
|
+
(0, patterns_1.assert)(cipherTextLength <= PrivateKey.MAX_CIPHERTEXT_LENGTH, new InvalidLengthError_1.InvalidLengthError(cipherTextLength, PrivateKey.MAX_CIPHERTEXT_LENGTH));
|
|
73
|
+
PrivateKey.ensureBase64DecodedLength(ephPubB64, encryptedPayload, PrivateKey.EPHEMERAL_PUBLIC_KEY_LENGTH);
|
|
74
|
+
PrivateKey.ensureBase64DecodedLength(ivB64, encryptedPayload, PrivateKey.IV_LENGTH);
|
|
75
|
+
PrivateKey.ensureBase64DecodedLength(tagB64, encryptedPayload, PrivateKey.TAG_LENGTH);
|
|
76
|
+
const ephemeralPub = PrivateKey.decodeBase64(ephPubB64, encryptedPayload);
|
|
77
|
+
const iv = PrivateKey.decodeBase64(ivB64, encryptedPayload);
|
|
47
78
|
const cipherText = buffer_1.Buffer.from(cipherTextB64, 'base64');
|
|
48
|
-
const tag =
|
|
79
|
+
const tag = PrivateKey.decodeBase64(tagB64, encryptedPayload);
|
|
49
80
|
const x25519Priv = CryptoAdapter_1.CryptoAdapter.privateKeyToX25519(this.valueOf());
|
|
50
81
|
const sharedSecret = CryptoAdapter_1.CryptoAdapter.x25519SharedSecret(x25519Priv, ephemeralPub);
|
|
51
82
|
const aesKey = CryptoAdapter_1.CryptoAdapter.deriveEncryptionKey(sharedSecret, ephemeralPub);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PrivateKey.js","sourceRoot":"","sources":["../../../src/value-objects/crypto/PrivateKey.ts"],"names":[],"mappings":";;;AAAA,mCAAgC;AAEhC,wEAAqE;AACrE,wEAAqE;AACrE,6CAAwC;AACxC,8CAA2C;AAE3C,mDAAgD;AAGhD,+BAA4B;AAC5B,2CAAwC;AACxC,2CAAwC;AAExC,MAAa,UAAW,SAAQ,SAAG;IACzB,MAAM,CAAU,MAAM,GAAG,GAAG,CAAC;IAC7B,MAAM,CAAU,OAAO,GAC7B,6EAA6E,CAAC;
|
|
1
|
+
{"version":3,"file":"PrivateKey.js","sourceRoot":"","sources":["../../../src/value-objects/crypto/PrivateKey.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,7 @@ import { Key } from './Key';
|
|
|
5
5
|
import { Signature } from './Signature';
|
|
6
6
|
export declare class PublicKey extends Key {
|
|
7
7
|
private static readonly LENGTH;
|
|
8
|
+
private static readonly MAX_PAYLOAD_LENGTH;
|
|
8
9
|
private static readonly PATTERN;
|
|
9
10
|
static fromPEM(pem: string | StringValueObject): PublicKey;
|
|
10
11
|
constructor(value: string | StringValueObject);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PublicKey.d.ts","sourceRoot":"","sources":["../../../src/value-objects/crypto/PublicKey.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,qBAAa,SAAU,SAAQ,GAAG;IAChC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAO;IACrC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAC+C;WAEhE,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;gBAIrD,KAAK,EAAE,MAAM,GAAG,iBAAiB;IAU7C,OAAO,CAAC,sBAAsB;IAQvB,gBAAgB,CACrB,OAAO,EAAE,aAAa,EACtB,SAAS,EAAE,SAAS,GACnB,OAAO;IAYH,OAAO,CAAC,OAAO,EAAE,aAAa,GAAG,gBAAgB;
|
|
1
|
+
{"version":3,"file":"PublicKey.d.ts","sourceRoot":"","sources":["../../../src/value-objects/crypto/PublicKey.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,qBAAa,SAAU,SAAQ,GAAG;IAChC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAO;IACrC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAe;IACzD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAC+C;WAEhE,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;gBAIrD,KAAK,EAAE,MAAM,GAAG,iBAAiB;IAU7C,OAAO,CAAC,sBAAsB;IAQvB,gBAAgB,CACrB,OAAO,EAAE,aAAa,EACtB,SAAS,EAAE,SAAS,GACnB,OAAO;IAYH,OAAO,CAAC,OAAO,EAAE,aAAa,GAAG,gBAAgB;CAwCzD"}
|
|
@@ -11,6 +11,7 @@ const EncryptedPayload_1 = require("./EncryptedPayload");
|
|
|
11
11
|
const Key_1 = require("./Key");
|
|
12
12
|
class PublicKey extends Key_1.Key {
|
|
13
13
|
static LENGTH = 113;
|
|
14
|
+
static MAX_PAYLOAD_LENGTH = 1024 * 1024;
|
|
14
15
|
static PATTERN = /^-----BEGIN PUBLIC KEY-----\n[A-Za-z0-9+/=]+\n-----END PUBLIC KEY-----\n$/;
|
|
15
16
|
static fromPEM(pem) {
|
|
16
17
|
return new PublicKey(pem.valueOf());
|
|
@@ -34,6 +35,7 @@ class PublicKey extends Key_1.Key {
|
|
|
34
35
|
}
|
|
35
36
|
encrypt(payload) {
|
|
36
37
|
const messageBuffer = buffer_1.Buffer.from(payload.valueOf());
|
|
38
|
+
(0, patterns_1.assert)(messageBuffer.length <= PublicKey.MAX_PAYLOAD_LENGTH, new InvalidLengthError_1.InvalidLengthError(messageBuffer.length, PublicKey.MAX_PAYLOAD_LENGTH));
|
|
37
39
|
const x25519Pub = CryptoAdapter_1.CryptoAdapter.publicKeyToX25519(this.valueOf());
|
|
38
40
|
const ephemeralPriv = CryptoAdapter_1.CryptoAdapter.x25519RandomPrivateKey();
|
|
39
41
|
const ephemeralPub = CryptoAdapter_1.CryptoAdapter.x25519PublicKey(ephemeralPriv);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PublicKey.js","sourceRoot":"","sources":["../../../src/value-objects/crypto/PublicKey.ts"],"names":[],"mappings":";;;AAAA,mCAAgC;AAEhC,wEAAqE;AACrE,wEAAqE;AACrE,6CAAwC;AACxC,8CAA2C;AAE3C,mDAAgD;AAEhD,yDAAsD;AACtD,+BAA4B;AAG5B,MAAa,SAAU,SAAQ,SAAG;IACxB,MAAM,CAAU,MAAM,GAAG,GAAG,CAAC;IAC7B,MAAM,CAAU,OAAO,GAC7B,2EAA2E,CAAC;IAEvE,MAAM,CAAC,OAAO,CAAC,GAA+B;QACnD,OAAO,IAAI,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IACtC,CAAC;IAED,YAAY,KAAiC;QAC3C,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAExB,IAAI,uBAAU,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC;IAEO,sBAAsB,CAAC,KAAa;QAC1C,IAAA,iBAAM,EACJ,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM,EACjC,IAAI,uCAAkB,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,CAChD,CAAC;QACF,IAAA,iBAAM,EAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,uCAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;IACvE,CAAC;IAEM,gBAAgB,CACrB,OAAsB,EACtB,SAAoB;QAEpB,MAAM,aAAa,GAAG,eAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QACrD,MAAM,eAAe,GAAG,eAAM,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC;QACnE,MAAM,KAAK,GAAG,6BAAa,CAAC,MAAM,CAChC,eAAe,EACf,aAAa,EACb,IAAI,CAAC,OAAO,EAAE,CACf,CAAC;QAEF,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,OAAO,CAAC,OAAsB;QACnC,MAAM,aAAa,GAAG,eAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"PublicKey.js","sourceRoot":"","sources":["../../../src/value-objects/crypto/PublicKey.ts"],"names":[],"mappings":";;;AAAA,mCAAgC;AAEhC,wEAAqE;AACrE,wEAAqE;AACrE,6CAAwC;AACxC,8CAA2C;AAE3C,mDAAgD;AAEhD,yDAAsD;AACtD,+BAA4B;AAG5B,MAAa,SAAU,SAAQ,SAAG;IACxB,MAAM,CAAU,MAAM,GAAG,GAAG,CAAC;IAC7B,MAAM,CAAU,kBAAkB,GAAG,IAAI,GAAG,IAAI,CAAC;IACjD,MAAM,CAAU,OAAO,GAC7B,2EAA2E,CAAC;IAEvE,MAAM,CAAC,OAAO,CAAC,GAA+B;QACnD,OAAO,IAAI,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IACtC,CAAC;IAED,YAAY,KAAiC;QAC3C,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAExB,IAAI,uBAAU,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC;IAEO,sBAAsB,CAAC,KAAa;QAC1C,IAAA,iBAAM,EACJ,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM,EACjC,IAAI,uCAAkB,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,CAChD,CAAC;QACF,IAAA,iBAAM,EAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,uCAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;IACvE,CAAC;IAEM,gBAAgB,CACrB,OAAsB,EACtB,SAAoB;QAEpB,MAAM,aAAa,GAAG,eAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QACrD,MAAM,eAAe,GAAG,eAAM,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC;QACnE,MAAM,KAAK,GAAG,6BAAa,CAAC,MAAM,CAChC,eAAe,EACf,aAAa,EACb,IAAI,CAAC,OAAO,EAAE,CACf,CAAC;QAEF,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,OAAO,CAAC,OAAsB;QACnC,MAAM,aAAa,GAAG,eAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QACrD,IAAA,iBAAM,EACJ,aAAa,CAAC,MAAM,IAAI,SAAS,CAAC,kBAAkB,EACpD,IAAI,uCAAkB,CACpB,aAAa,CAAC,MAAM,EACpB,SAAS,CAAC,kBAAkB,CAC7B,CACF,CAAC;QAEF,MAAM,SAAS,GAAG,6BAAa,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAElE,MAAM,aAAa,GAAG,6BAAa,CAAC,sBAAsB,EAAE,CAAC;QAC7D,MAAM,YAAY,GAAG,6BAAa,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;QAClE,MAAM,YAAY,GAAG,6BAAa,CAAC,kBAAkB,CACnD,aAAa,EACb,SAAS,CACV,CAAC;QAEF,MAAM,MAAM,GAAG,6BAAa,CAAC,mBAAmB,CAC9C,YAAY,EACZ,YAAY,CACb,CAAC;QAEF,MAAM,EAAE,GAAG,6BAAa,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACzC,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,6BAAa,CAAC,gBAAgB,CACxD,MAAM,EACN,EAAE,EACF,aAAa,CACd,CAAC;QAEF,MAAM,MAAM,GAAG;YACb,eAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAC5C,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC;YACrB,eAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAC1C,eAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;SACpC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEZ,OAAO,IAAI,mCAAgB,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;;AAlFH,8BAmFC"}
|