@nmshd/consumption 2.0.0-alpha.15 → 2.0.0-alpha.18
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/dist/buildInformation.js +5 -5
- package/dist/consumption/ConsumptionController.d.ts +6 -1
- package/dist/consumption/ConsumptionController.js +10 -6
- package/dist/consumption/ConsumptionController.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/modules/attributes/ConsumptionAttributesController.d.ts +5 -1
- package/dist/modules/attributes/ConsumptionAttributesController.js +17 -2
- package/dist/modules/attributes/ConsumptionAttributesController.js.map +1 -1
- package/dist/modules/attributes/CreateConsumptionAttributeParams.d.ts +5 -2
- package/dist/modules/attributes/CreateConsumptionAttributeParams.js.map +1 -1
- package/dist/modules/attributes/CreatePeerConsumptionAttributeParams.d.ts +8 -2
- package/dist/modules/attributes/CreatePeerConsumptionAttributeParams.js.map +1 -1
- package/dist/modules/attributes/CreateSharedConsumptionAttributeCopyParams.d.ts +6 -1
- package/dist/modules/attributes/CreateSharedConsumptionAttributeCopyParams.js.map +1 -1
- package/dist/modules/attributes/GetIdentityAttributesParams.d.ts +12 -0
- package/dist/modules/attributes/GetIdentityAttributesParams.js +26 -0
- package/dist/modules/attributes/GetIdentityAttributesParams.js.map +1 -0
- package/dist/modules/attributes/GetRelationshipAttributesParams.d.ts +12 -0
- package/dist/modules/attributes/GetRelationshipAttributesParams.js +26 -0
- package/dist/modules/attributes/GetRelationshipAttributesParams.js.map +1 -0
- package/dist/modules/attributes/{SuccedConsumptionAttributeParams.d.ts → SucceedConsumptionAttributeParams.d.ts} +6 -2
- package/dist/modules/attributes/{SuccedConsumptionAttributeParams.js → SucceedConsumptionAttributeParams.js} +1 -1
- package/dist/modules/attributes/SucceedConsumptionAttributeParams.js.map +1 -0
- package/dist/modules/attributes/UpdateConsumptionAttributeParams.d.ts +6 -2
- package/dist/modules/attributes/UpdateConsumptionAttributeParams.js.map +1 -1
- package/dist/modules/attributes/local/QueryTranslator.d.ts +3 -0
- package/dist/modules/attributes/local/QueryTranslator.js +110 -0
- package/dist/modules/attributes/local/QueryTranslator.js.map +1 -0
- package/dist/modules/index.d.ts +8 -3
- package/dist/modules/index.js +8 -3
- package/dist/modules/index.js.map +1 -1
- package/lib-web/nmshd.consumption.js +9031 -138
- package/lib-web/nmshd.consumption.js.map +1 -1
- package/lib-web/nmshd.consumption.min.js +1 -1
- package/lib-web/nmshd.consumption.min.js.map +1 -1
- package/package.json +13 -10
- package/dist/modules/attributes/SuccedConsumptionAttributeParams.js.map +0 -1
- package/dist/modules/signatures/Signature.d.ts +0 -16
- package/dist/modules/signatures/Signature.js +0 -56
- package/dist/modules/signatures/Signature.js.map +0 -1
- package/dist/modules/signatures/SignatureContent.d.ts +0 -21
- package/dist/modules/signatures/SignatureContent.js +0 -59
- package/dist/modules/signatures/SignatureContent.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nmshd/consumption",
|
|
3
|
-
"version": "2.0.0-alpha.
|
|
3
|
+
"version": "2.0.0-alpha.18",
|
|
4
4
|
"description": "The consumption library extends the transport library.",
|
|
5
5
|
"homepage": "https://enmeshed.eu",
|
|
6
6
|
"repository": "github:nmshd/cns-consumption",
|
|
@@ -17,10 +17,6 @@
|
|
|
17
17
|
"ui5.yaml"
|
|
18
18
|
],
|
|
19
19
|
"scripts": {
|
|
20
|
-
"lint": "npm run lint:prettier && npm run lint:eslint && npm run lint:tsc",
|
|
21
|
-
"lint:prettier": "prettier --check .",
|
|
22
|
-
"lint:eslint": "eslint --ext ts ./src ./test",
|
|
23
|
-
"lint:tsc": "tsc --noEmit && tsc -p test/tsconfig.json --noEmit",
|
|
24
20
|
"bt": "npm run test:node && npm run build:node && npm run build:test && npm run bundle && npm run test:web",
|
|
25
21
|
"build": "npm run build:node && npm run build:test && npm run bundle",
|
|
26
22
|
"build:ci": "npm run build:node && .ci/writeBuildInformation.sh && npm run build:test && npm run bundle",
|
|
@@ -31,19 +27,26 @@
|
|
|
31
27
|
"bundle:min": "webpack --stats-all --config webpack.min.config.js",
|
|
32
28
|
"bundle:test": "webpack --stats-all --config webpack.test.config.js",
|
|
33
29
|
"cdep": "tsc && madge --circular dist",
|
|
30
|
+
"lint": "npm run lint:prettier && npm run lint:eslint && npm run lint:tsc",
|
|
31
|
+
"lint:eslint": "eslint --ext ts ./src ./test",
|
|
32
|
+
"lint:prettier": "prettier --check .",
|
|
33
|
+
"lint:tsc": "tsc --noEmit && tsc -p test/tsconfig.json --noEmit",
|
|
34
34
|
"test": "npm run test:node && npm run test:web",
|
|
35
35
|
"test:ci": "npm run test",
|
|
36
36
|
"test:local": "npm run build && npm run test:local:node && npm run test:web",
|
|
37
37
|
"test:local:node": ". ./scripts/testSetup.sh && npm run test:node",
|
|
38
|
-
"test:local:node:mongodb": ". ./scripts/testSetup.sh && npm run test:node:mongodb",
|
|
39
38
|
"test:local:node:lokijs": "npm run test:node:lokijs",
|
|
39
|
+
"test:local:node:mongodb": ". ./scripts/testSetup.sh && npm run test:node:mongodb",
|
|
40
40
|
"test:local:teardown": "docker-compose -f test/docker-compose.yml rm -fsv",
|
|
41
41
|
"test:node": "mocha -r ts-node/register -r tsconfig-paths/register ./test/index.node.ts --project ./test/tsconfig.json --exit",
|
|
42
|
-
"test:node:mongodb": "mocha -r ts-node/register -r tsconfig-paths/register ./test/index.node.mongo.ts --project ./test/tsconfig.json --exit",
|
|
43
42
|
"test:node:lokijs": "mocha -r ts-node/register -r tsconfig-paths/register ./test/index.node.loki.ts --project ./test/tsconfig.json --exit",
|
|
43
|
+
"test:node:mongodb": "mocha -r ts-node/register -r tsconfig-paths/register ./test/index.node.mongo.ts --project ./test/tsconfig.json --exit",
|
|
44
44
|
"test:web": "browsertest-runner",
|
|
45
45
|
"test:web:debug": "browsertest-runner-debug"
|
|
46
46
|
},
|
|
47
|
+
"dependencies": {
|
|
48
|
+
"@js-soft/docdb-querytranslator": "^1.0.1"
|
|
49
|
+
},
|
|
47
50
|
"devDependencies": {
|
|
48
51
|
"@js-soft/docdb-access-loki": "1.0.2",
|
|
49
52
|
"@js-soft/docdb-access-mongo": "1.0.5",
|
|
@@ -53,14 +56,14 @@
|
|
|
53
56
|
"@js-soft/ts-serval": "2.0.3",
|
|
54
57
|
"@js-soft/ts-utils": "1.1.2",
|
|
55
58
|
"@js-soft/web-logger": "1.0.1",
|
|
56
|
-
"@nmshd/content": "2.0.0-alpha.
|
|
59
|
+
"@nmshd/content": "2.0.0-alpha.24",
|
|
57
60
|
"@nmshd/crypto": "2.0.1",
|
|
58
61
|
"@nmshd/transport": "2.0.0-alpha.1",
|
|
59
62
|
"@types/chai": "^4.3.1",
|
|
60
63
|
"@types/glob": "^7.2.0",
|
|
61
64
|
"@types/luxon": "^2.3.2",
|
|
62
65
|
"@types/mocha": "^9.1.1",
|
|
63
|
-
"@types/node": "^17.0.
|
|
66
|
+
"@types/node": "^17.0.36",
|
|
64
67
|
"bt-runner": "^2.0.5",
|
|
65
68
|
"chai": "^4.3.6",
|
|
66
69
|
"copy-webpack-plugin": "^11.0.0",
|
|
@@ -72,7 +75,7 @@
|
|
|
72
75
|
"terser-webpack-plugin": "5.3.1",
|
|
73
76
|
"ts-node": "^10.8.0",
|
|
74
77
|
"tsconfig-paths": "^4.0.0",
|
|
75
|
-
"typescript": "^4.
|
|
78
|
+
"typescript": "^4.7.2",
|
|
76
79
|
"webpack": "^5.72.1",
|
|
77
80
|
"webpack-cli": "^4.9.2"
|
|
78
81
|
},
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SuccedConsumptionAttributeParams.js","sourceRoot":"","sources":["../../../src/modules/attributes/SuccedConsumptionAttributeParams.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,kDAAqF;AACrF,4CAAqH;AACrH,gDAAkD;AAOlD,MAAa,iCAAkC,SAAQ,wBAAY;IASxD,MAAM,CAAC,IAAI,CAAC,KAAyC;QACxD,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IAC9B,CAAC;CACJ;AATG;IAFC,IAAA,qBAAS,EAAC,EAAE,UAAU,EAAE,CAAC,2BAAiB,EAAE,+BAAqB,CAAC,EAAE,CAAC;IACrE,IAAA,oBAAQ,GAAE;;2EACuD;AAIlE;IAFC,IAAA,qBAAS,GAAE;IACX,IAAA,oBAAQ,GAAE;8BACM,kBAAM;mEAAA;AAP3B,8EAYC"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { CryptoSignature, CryptoSignaturePublicKey } from "@nmshd/crypto";
|
|
2
|
-
import { CoreSerializable, ICoreSerializable } from "@nmshd/transport";
|
|
3
|
-
import { ISignatureContent, SignatureContent } from "./SignatureContent";
|
|
4
|
-
export interface ISignature extends ICoreSerializable {
|
|
5
|
-
content: ISignatureContent;
|
|
6
|
-
signature: string;
|
|
7
|
-
}
|
|
8
|
-
export declare class Signature extends CoreSerializable {
|
|
9
|
-
content: SignatureContent;
|
|
10
|
-
signature: CryptoSignature;
|
|
11
|
-
protected static preFrom(value: any): any;
|
|
12
|
-
static from(value: ISignature): Signature;
|
|
13
|
-
verify(content: string, publicKey: CryptoSignaturePublicKey): Promise<boolean>;
|
|
14
|
-
toJSON(): object;
|
|
15
|
-
serialize(): string;
|
|
16
|
-
}
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
-
};
|
|
8
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.Signature = void 0;
|
|
13
|
-
const ts_serval_1 = require("@js-soft/ts-serval");
|
|
14
|
-
const crypto_1 = require("@nmshd/crypto");
|
|
15
|
-
const transport_1 = require("@nmshd/transport");
|
|
16
|
-
const SignatureContent_1 = require("./SignatureContent");
|
|
17
|
-
let Signature = class Signature extends transport_1.CoreSerializable {
|
|
18
|
-
static preFrom(value) {
|
|
19
|
-
if (value.signature instanceof crypto_1.CryptoSignature) {
|
|
20
|
-
value.signature = crypto_1.CryptoSignature.fromBase64(value.signature);
|
|
21
|
-
}
|
|
22
|
-
return value;
|
|
23
|
-
}
|
|
24
|
-
static from(value) {
|
|
25
|
-
return this.fromAny(value);
|
|
26
|
-
}
|
|
27
|
-
async verify(content, publicKey) {
|
|
28
|
-
const hash = await crypto_1.CryptoHash.hash(crypto_1.CoreBuffer.fromUtf8(content), this.content.hashAlgorithm);
|
|
29
|
-
if (hash.toBase64() !== this.content.hash.hash)
|
|
30
|
-
return false;
|
|
31
|
-
const str = this.content.serialize();
|
|
32
|
-
const correct = await transport_1.CoreCrypto.verify(crypto_1.CoreBuffer.fromUtf8(str), this.signature, publicKey);
|
|
33
|
-
return correct;
|
|
34
|
-
}
|
|
35
|
-
toJSON() {
|
|
36
|
-
return { content: this.content.toJSON(), signature: this.signature.toBase64() };
|
|
37
|
-
}
|
|
38
|
-
serialize() {
|
|
39
|
-
return JSON.stringify(this.toJSON());
|
|
40
|
-
}
|
|
41
|
-
};
|
|
42
|
-
__decorate([
|
|
43
|
-
(0, ts_serval_1.validate)(),
|
|
44
|
-
(0, ts_serval_1.serialize)(),
|
|
45
|
-
__metadata("design:type", SignatureContent_1.SignatureContent)
|
|
46
|
-
], Signature.prototype, "content", void 0);
|
|
47
|
-
__decorate([
|
|
48
|
-
(0, ts_serval_1.validate)(),
|
|
49
|
-
(0, ts_serval_1.serialize)(),
|
|
50
|
-
__metadata("design:type", crypto_1.CryptoSignature)
|
|
51
|
-
], Signature.prototype, "signature", void 0);
|
|
52
|
-
Signature = __decorate([
|
|
53
|
-
(0, ts_serval_1.type)("Signature")
|
|
54
|
-
], Signature);
|
|
55
|
-
exports.Signature = Signature;
|
|
56
|
-
//# sourceMappingURL=Signature.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Signature.js","sourceRoot":"","sources":["../../../src/modules/signatures/Signature.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,kDAA8D;AAC9D,0CAAiG;AACjG,gDAAkF;AAClF,yDAAwE;AAQxE,IAAa,SAAS,GAAtB,MAAa,SAAU,SAAQ,4BAAgB;IASjC,MAAM,CAAU,OAAO,CAAC,KAAU;QACxC,IAAI,KAAK,CAAC,SAAS,YAAY,wBAAe,EAAE;YAC5C,KAAK,CAAC,SAAS,GAAG,wBAAe,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;SAChE;QAED,OAAO,KAAK,CAAA;IAChB,CAAC;IAEM,MAAM,CAAC,IAAI,CAAC,KAAiB;QAChC,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IAC9B,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,OAAe,EAAE,SAAmC;QACpE,MAAM,IAAI,GAAG,MAAM,mBAAU,CAAC,IAAI,CAAC,mBAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA;QAC5F,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI;YAAE,OAAO,KAAK,CAAA;QAC5D,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAA;QACpC,MAAM,OAAO,GAAG,MAAM,sBAAU,CAAC,MAAM,CAAC,mBAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;QAC5F,OAAO,OAAO,CAAA;IAClB,CAAC;IAEe,MAAM;QAClB,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,CAAA;IACnF,CAAC;IAEe,SAAS;QACrB,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;IACxC,CAAC;CACJ,CAAA;AAjCG;IAFC,IAAA,oBAAQ,GAAE;IACV,IAAA,qBAAS,GAAE;8BACI,mCAAgB;0CAAA;AAIhC;IAFC,IAAA,oBAAQ,GAAE;IACV,IAAA,qBAAS,GAAE;8BACM,wBAAe;4CAAA;AAPxB,SAAS;IADrB,IAAA,gBAAI,EAAC,WAAW,CAAC;GACL,SAAS,CAoCrB;AApCY,8BAAS"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { CryptoHashAlgorithm, CryptoSignatureAlgorithm } from "@nmshd/crypto";
|
|
2
|
-
import { CoreAddress, CoreDate, CoreHash, CoreId, CoreSerializable, ICoreSerializable } from "@nmshd/transport";
|
|
3
|
-
export interface ISignatureContent extends ICoreSerializable {
|
|
4
|
-
version: number;
|
|
5
|
-
signatureAlgorithm: CryptoSignatureAlgorithm;
|
|
6
|
-
hashAlgorithm: CryptoHashAlgorithm;
|
|
7
|
-
signedAt: string;
|
|
8
|
-
signer: string;
|
|
9
|
-
keyId: string;
|
|
10
|
-
hash: string;
|
|
11
|
-
}
|
|
12
|
-
export declare class SignatureContent extends CoreSerializable {
|
|
13
|
-
version: number;
|
|
14
|
-
signatureAlgorithm: CryptoSignatureAlgorithm;
|
|
15
|
-
hashAlgorithm: CryptoHashAlgorithm;
|
|
16
|
-
signedAt: CoreDate;
|
|
17
|
-
signer: CoreAddress;
|
|
18
|
-
keyId: CoreId;
|
|
19
|
-
hash: CoreHash;
|
|
20
|
-
static from(value: ISignatureContent): SignatureContent;
|
|
21
|
-
}
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
-
};
|
|
8
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.SignatureContent = void 0;
|
|
13
|
-
const ts_serval_1 = require("@js-soft/ts-serval");
|
|
14
|
-
const transport_1 = require("@nmshd/transport");
|
|
15
|
-
let SignatureContent = class SignatureContent extends transport_1.CoreSerializable {
|
|
16
|
-
static from(value) {
|
|
17
|
-
return this.fromAny(value);
|
|
18
|
-
}
|
|
19
|
-
};
|
|
20
|
-
__decorate([
|
|
21
|
-
(0, ts_serval_1.validate)(),
|
|
22
|
-
(0, ts_serval_1.serialize)(),
|
|
23
|
-
__metadata("design:type", Number)
|
|
24
|
-
], SignatureContent.prototype, "version", void 0);
|
|
25
|
-
__decorate([
|
|
26
|
-
(0, ts_serval_1.validate)(),
|
|
27
|
-
(0, ts_serval_1.serialize)(),
|
|
28
|
-
__metadata("design:type", Number)
|
|
29
|
-
], SignatureContent.prototype, "signatureAlgorithm", void 0);
|
|
30
|
-
__decorate([
|
|
31
|
-
(0, ts_serval_1.validate)(),
|
|
32
|
-
(0, ts_serval_1.serialize)(),
|
|
33
|
-
__metadata("design:type", Number)
|
|
34
|
-
], SignatureContent.prototype, "hashAlgorithm", void 0);
|
|
35
|
-
__decorate([
|
|
36
|
-
(0, ts_serval_1.validate)(),
|
|
37
|
-
(0, ts_serval_1.serialize)(),
|
|
38
|
-
__metadata("design:type", transport_1.CoreDate)
|
|
39
|
-
], SignatureContent.prototype, "signedAt", void 0);
|
|
40
|
-
__decorate([
|
|
41
|
-
(0, ts_serval_1.validate)(),
|
|
42
|
-
(0, ts_serval_1.serialize)(),
|
|
43
|
-
__metadata("design:type", transport_1.CoreAddress)
|
|
44
|
-
], SignatureContent.prototype, "signer", void 0);
|
|
45
|
-
__decorate([
|
|
46
|
-
(0, ts_serval_1.validate)(),
|
|
47
|
-
(0, ts_serval_1.serialize)(),
|
|
48
|
-
__metadata("design:type", transport_1.CoreId)
|
|
49
|
-
], SignatureContent.prototype, "keyId", void 0);
|
|
50
|
-
__decorate([
|
|
51
|
-
(0, ts_serval_1.validate)(),
|
|
52
|
-
(0, ts_serval_1.serialize)(),
|
|
53
|
-
__metadata("design:type", transport_1.CoreHash)
|
|
54
|
-
], SignatureContent.prototype, "hash", void 0);
|
|
55
|
-
SignatureContent = __decorate([
|
|
56
|
-
(0, ts_serval_1.type)("SignatureContent")
|
|
57
|
-
], SignatureContent);
|
|
58
|
-
exports.SignatureContent = SignatureContent;
|
|
59
|
-
//# sourceMappingURL=SignatureContent.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SignatureContent.js","sourceRoot":"","sources":["../../../src/modules/signatures/SignatureContent.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,kDAA8D;AAE9D,gDAA+G;AAa/G,IAAa,gBAAgB,GAA7B,MAAa,gBAAiB,SAAQ,4BAAgB;IA6B3C,MAAM,CAAC,IAAI,CAAC,KAAwB;QACvC,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IAC9B,CAAC;CACJ,CAAA;AA7BG;IAFC,IAAA,oBAAQ,GAAE;IACV,IAAA,qBAAS,GAAE;;iDACU;AAItB;IAFC,IAAA,oBAAQ,GAAE;IACV,IAAA,qBAAS,GAAE;;4DACuC;AAInD;IAFC,IAAA,oBAAQ,GAAE;IACV,IAAA,qBAAS,GAAE;;uDAC6B;AAIzC;IAFC,IAAA,oBAAQ,GAAE;IACV,IAAA,qBAAS,GAAE;8BACK,oBAAQ;kDAAA;AAIzB;IAFC,IAAA,oBAAQ,GAAE;IACV,IAAA,qBAAS,GAAE;8BACG,uBAAW;gDAAA;AAI1B;IAFC,IAAA,oBAAQ,GAAE;IACV,IAAA,qBAAS,GAAE;8BACE,kBAAM;+CAAA;AAIpB;IAFC,IAAA,oBAAQ,GAAE;IACV,IAAA,qBAAS,GAAE;8BACC,oBAAQ;8CAAA;AA3BZ,gBAAgB;IAD5B,IAAA,gBAAI,EAAC,kBAAkB,CAAC;GACZ,gBAAgB,CAgC5B;AAhCY,4CAAgB"}
|