@transcend-io/cli 6.18.0 → 6.19.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/README.md +7 -0
- package/build/oneTrust/helpers/oneTrustAssessmentToJson.d.ts +1 -1
- package/build/oneTrust/helpers/oneTrustAssessmentToJson.d.ts.map +1 -1
- package/build/oneTrust/helpers/oneTrustAssessmentToJson.js +2 -2
- package/build/oneTrust/helpers/oneTrustAssessmentToJson.js.map +1 -1
- package/build/oneTrust/helpers/syncOneTrustAssessmentToTranscend.d.ts +1 -1
- package/build/oneTrust/helpers/syncOneTrustAssessmentToTranscend.d.ts.map +1 -1
- package/build/oneTrust/helpers/syncOneTrustAssessmentToTranscend.js +2 -2
- package/build/oneTrust/helpers/syncOneTrustAssessmentToTranscend.js.map +1 -1
- package/build/oneTrust/helpers/syncOneTrustAssessmentsFromFile.d.ts.map +1 -1
- package/build/oneTrust/helpers/syncOneTrustAssessmentsFromFile.js +44 -51
- package/build/oneTrust/helpers/syncOneTrustAssessmentsFromFile.js.map +1 -1
- package/build/tsbuildinfo +1 -1
- package/package.json +3 -1
package/README.md
CHANGED
|
@@ -645,6 +645,13 @@ You can also sync to disk in json format:
|
|
|
645
645
|
tr-sync-ot --hostname=trial.onetrust.com --oneTrustAuth=$ONE_TRUST_OAUTH_TOKEN --dryRun=true --fileFormat=json --file=./oneTrustAssessments.json
|
|
646
646
|
```
|
|
647
647
|
|
|
648
|
+
Once you save the assessments into disk, you can sync them to Transcend by reading from the file instead:
|
|
649
|
+
|
|
650
|
+
```sh
|
|
651
|
+
# Syncs to Transcend by reading from file ./oneTrustAssessments.json
|
|
652
|
+
tr-sync-ot --source=file --file=./oneTrustAssessments.json --transcendAuth=$TRANSCEND_API_KEY
|
|
653
|
+
```
|
|
654
|
+
|
|
648
655
|
### tr-push
|
|
649
656
|
|
|
650
657
|
Given a transcend.yml file, sync the contents up to your connected services view (https://app.transcend.io/privacy-requests/connected-services).
|
|
@@ -11,7 +11,7 @@ export declare const oneTrustAssessmentToJson: ({ assessment, index, total, wrap
|
|
|
11
11
|
/** The position of the assessment in the final Json object */
|
|
12
12
|
index: number;
|
|
13
13
|
/** The total amount of the assessments in the final Json object */
|
|
14
|
-
total
|
|
14
|
+
total?: number | undefined;
|
|
15
15
|
/** Whether to wrap every entry in brackets */
|
|
16
16
|
wrap?: boolean | undefined;
|
|
17
17
|
}) => string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oneTrustAssessmentToJson.d.ts","sourceRoot":"","sources":["../../../src/oneTrust/helpers/oneTrustAssessmentToJson.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AAEzE;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB;IAMnC,gCAAgC;gBACpB,0BAA0B;IACtC,8DAA8D;WACvD,MAAM;IACb,mEAAmE
|
|
1
|
+
{"version":3,"file":"oneTrustAssessmentToJson.d.ts","sourceRoot":"","sources":["../../../src/oneTrust/helpers/oneTrustAssessmentToJson.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AAEzE;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB;IAMnC,gCAAgC;gBACpB,0BAA0B;IACtC,8DAA8D;WACvD,MAAM;IACb,mEAAmE;;IAEnE,8CAA8C;;MAE5C,MAqBH,CAAC"}
|
|
@@ -15,11 +15,11 @@ const oneTrustAssessmentToJson = ({ assessment, index, total, wrap = true, }) =>
|
|
|
15
15
|
}
|
|
16
16
|
const stringifiedAssessment = JSON.stringify(assessment);
|
|
17
17
|
// Add comma for all items except the last one
|
|
18
|
-
const comma = index < total - 1 && !wrap ? ',' : '';
|
|
18
|
+
const comma = total && index < total - 1 && !wrap ? ',' : '';
|
|
19
19
|
// write to file
|
|
20
20
|
jsonEntry = `${jsonEntry + stringifiedAssessment + comma}\n`;
|
|
21
21
|
// end with closing bracket
|
|
22
|
-
if (index === total - 1 || wrap) {
|
|
22
|
+
if ((total && index === total - 1) || wrap) {
|
|
23
23
|
jsonEntry += '\n]';
|
|
24
24
|
}
|
|
25
25
|
return jsonEntry;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oneTrustAssessmentToJson.js","sourceRoot":"","sources":["../../../src/oneTrust/helpers/oneTrustAssessmentToJson.ts"],"names":[],"mappings":";;;AAEA;;;;;GAKG;AACI,MAAM,wBAAwB,GAAG,CAAC,EACvC,UAAU,EACV,KAAK,EACL,KAAK,EACL,IAAI,GAAG,IAAI,GAUZ,EAAU,EAAE;IACX,IAAI,SAAS,GAAG,EAAE,CAAC;IACnB,gCAAgC;IAChC,IAAI,KAAK,KAAK,CAAC,IAAI,IAAI,EAAE;QACvB,SAAS,GAAG,KAAK,CAAC;KACnB;IAED,MAAM,qBAAqB,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAEzD,8CAA8C;IAC9C,MAAM,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"oneTrustAssessmentToJson.js","sourceRoot":"","sources":["../../../src/oneTrust/helpers/oneTrustAssessmentToJson.ts"],"names":[],"mappings":";;;AAEA;;;;;GAKG;AACI,MAAM,wBAAwB,GAAG,CAAC,EACvC,UAAU,EACV,KAAK,EACL,KAAK,EACL,IAAI,GAAG,IAAI,GAUZ,EAAU,EAAE;IACX,IAAI,SAAS,GAAG,EAAE,CAAC;IACnB,gCAAgC;IAChC,IAAI,KAAK,KAAK,CAAC,IAAI,IAAI,EAAE;QACvB,SAAS,GAAG,KAAK,CAAC;KACnB;IAED,MAAM,qBAAqB,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAEzD,8CAA8C;IAC9C,MAAM,KAAK,GAAG,KAAK,IAAI,KAAK,GAAG,KAAK,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAE7D,gBAAgB;IAChB,SAAS,GAAG,GAAG,SAAS,GAAG,qBAAqB,GAAG,KAAK,IAAI,CAAC;IAE7D,2BAA2B;IAC3B,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,KAAK,GAAG,CAAC,CAAC,IAAI,IAAI,EAAE;QAC1C,SAAS,IAAI,KAAK,CAAC;KACpB;IAED,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAnCW,QAAA,wBAAwB,4BAmCnC"}
|
|
@@ -20,6 +20,6 @@ export declare const syncOneTrustAssessmentToTranscend: ({ transcend, assessment
|
|
|
20
20
|
/** The index of the assessment being written to the file */
|
|
21
21
|
index: number;
|
|
22
22
|
/** The total amount of assessments that we will write */
|
|
23
|
-
total
|
|
23
|
+
total?: number | undefined;
|
|
24
24
|
}) => Promise<void>;
|
|
25
25
|
//# sourceMappingURL=syncOneTrustAssessmentToTranscend.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"syncOneTrustAssessmentToTranscend.d.ts","sourceRoot":"","sources":["../../../src/oneTrust/helpers/syncOneTrustAssessmentToTranscend.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAMhD,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AAGzE,MAAM,WAAW,cAAc;IAC7B,4BAA4B;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,+BAA+B;IAC/B,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;GAKG;AACH,eAAO,MAAM,iCAAiC;IAM5C,oCAAoC;eACzB,aAAa;IACxB,0CAA0C;gBAC9B,0BAA0B;IACtC,4DAA4D;WACrD,MAAM;IACb,yDAAyD
|
|
1
|
+
{"version":3,"file":"syncOneTrustAssessmentToTranscend.d.ts","sourceRoot":"","sources":["../../../src/oneTrust/helpers/syncOneTrustAssessmentToTranscend.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAMhD,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AAGzE,MAAM,WAAW,cAAc;IAC7B,4BAA4B;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,+BAA+B;IAC/B,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;GAKG;AACH,eAAO,MAAM,iCAAiC;IAM5C,oCAAoC;eACzB,aAAa;IACxB,0CAA0C;gBAC9B,0BAA0B;IACtC,4DAA4D;WACrD,MAAM;IACb,yDAAyD;;MAEvD,QAAQ,IAAI,CAyCf,CAAC"}
|
|
@@ -15,7 +15,7 @@ const oneTrustAssessmentToJson_1 = require("./oneTrustAssessmentToJson");
|
|
|
15
15
|
* @param param - information about the assessment and Transcend instance to write to
|
|
16
16
|
*/
|
|
17
17
|
const syncOneTrustAssessmentToTranscend = async ({ transcend, assessment, total, index, }) => {
|
|
18
|
-
logger_1.logger.info(colors_1.default.magenta(`Writing enriched assessment ${index + 1} of ${total} to Transcend...`));
|
|
18
|
+
logger_1.logger.info(colors_1.default.magenta(`Writing enriched assessment ${index + 1} ${total ? `of ${total} ` : ' '}to Transcend...`));
|
|
19
19
|
// convert the OneTrust assessment object into a json record
|
|
20
20
|
const json = (0, oneTrustAssessmentToJson_1.oneTrustAssessmentToJson)({
|
|
21
21
|
assessment,
|
|
@@ -32,7 +32,7 @@ const syncOneTrustAssessmentToTranscend = async ({ transcend, assessment, total,
|
|
|
32
32
|
});
|
|
33
33
|
}
|
|
34
34
|
catch (e) {
|
|
35
|
-
logger_1.logger.error(colors_1.default.red(`Failed to sync assessment ${index + 1} of ${total} to Transcend.\n` +
|
|
35
|
+
logger_1.logger.error(colors_1.default.red(`Failed to sync assessment ${index + 1} ${total ? `of ${total} ` : ' '}to Transcend.\n` +
|
|
36
36
|
`\tAssessment Title: ${assessment.name}. Template Title: ${assessment.template.name}\n`));
|
|
37
37
|
}
|
|
38
38
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"syncOneTrustAssessmentToTranscend.js","sourceRoot":"","sources":["../../../src/oneTrust/helpers/syncOneTrustAssessmentToTranscend.ts"],"names":[],"mappings":";;;;;;AAAA,yCAAsC;AACtC,oDAA4B;AAE5B,2CAGuB;AAGvB,yEAAsE;AAStE;;;;;GAKG;AACI,MAAM,iCAAiC,GAAG,KAAK,EAAE,EACtD,SAAS,EACT,UAAU,EACV,KAAK,EACL,KAAK,GAUN,EAAiB,EAAE;IAClB,eAAM,CAAC,IAAI,CACT,gBAAM,CAAC,OAAO,CACZ,+BAA+B,KAAK,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"syncOneTrustAssessmentToTranscend.js","sourceRoot":"","sources":["../../../src/oneTrust/helpers/syncOneTrustAssessmentToTranscend.ts"],"names":[],"mappings":";;;;;;AAAA,yCAAsC;AACtC,oDAA4B;AAE5B,2CAGuB;AAGvB,yEAAsE;AAStE;;;;;GAKG;AACI,MAAM,iCAAiC,GAAG,KAAK,EAAE,EACtD,SAAS,EACT,UAAU,EACV,KAAK,EACL,KAAK,GAUN,EAAiB,EAAE;IAClB,eAAM,CAAC,IAAI,CACT,gBAAM,CAAC,OAAO,CACZ,+BAA+B,KAAK,GAAG,CAAC,IACtC,KAAK,CAAC,CAAC,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,GAC3B,iBAAiB,CAClB,CACF,CAAC;IAEF,4DAA4D;IAC5D,MAAM,IAAI,GAAG,IAAA,mDAAwB,EAAC;QACpC,UAAU;QACV,KAAK;QACL,KAAK;KACN,CAAC,CAAC;IAEH,+DAA+D;IAC/D,MAAM,KAAK,GAAmC;QAC5C,IAAI;KACL,CAAC;IAEF,IAAI;QACF,MAAM,IAAA,4BAAkB,EAMrB,SAAS,EAAE,2CAAiC,EAAE;YAC/C,KAAK;SACN,CAAC,CAAC;KACJ;IAAC,OAAO,CAAC,EAAE;QACV,eAAM,CAAC,KAAK,CACV,gBAAM,CAAC,GAAG,CACR,6BAA6B,KAAK,GAAG,CAAC,IACpC,KAAK,CAAC,CAAC,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,GAC3B,iBAAiB;YACf,uBAAuB,UAAU,CAAC,IAAI,qBAAqB,UAAU,CAAC,QAAQ,CAAC,IAAI,IAAI,CAC1F,CACF,CAAC;KACH;AACH,CAAC,CAAC;AAvDW,QAAA,iCAAiC,qCAuD5C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"syncOneTrustAssessmentsFromFile.d.ts","sourceRoot":"","sources":["../../../src/oneTrust/helpers/syncOneTrustAssessmentsFromFile.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD;;;;GAIG;AACH,eAAO,MAAM,+BAA+B;IAI1C,oCAAoC;eACzB,aAAa;IACxB,uEAAuE;UACjE,MAAM;MACV,QAAQ,IAAI,
|
|
1
|
+
{"version":3,"file":"syncOneTrustAssessmentsFromFile.d.ts","sourceRoot":"","sources":["../../../src/oneTrust/helpers/syncOneTrustAssessmentsFromFile.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD;;;;GAIG;AACH,eAAO,MAAM,+BAA+B;IAI1C,oCAAoC;eACzB,aAAa;IACxB,uEAAuE;UACjE,MAAM;MACV,QAAQ,IAAI,CAwEf,CAAC"}
|
|
@@ -1,27 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
4
|
};
|
|
@@ -30,8 +7,8 @@ exports.syncOneTrustAssessmentsFromFile = void 0;
|
|
|
30
7
|
const type_utils_1 = require("@transcend-io/type-utils");
|
|
31
8
|
const colors_1 = __importDefault(require("colors"));
|
|
32
9
|
const logger_1 = require("../../logger");
|
|
10
|
+
const JSONStream_1 = __importDefault(require("JSONStream"));
|
|
33
11
|
const fs_1 = require("fs");
|
|
34
|
-
const readline = __importStar(require("readline"));
|
|
35
12
|
const privacy_types_1 = require("@transcend-io/privacy-types");
|
|
36
13
|
const syncOneTrustAssessmentToTranscend_1 = require("./syncOneTrustAssessmentToTranscend");
|
|
37
14
|
/**
|
|
@@ -39,40 +16,56 @@ const syncOneTrustAssessmentToTranscend_1 = require("./syncOneTrustAssessmentToT
|
|
|
39
16
|
*
|
|
40
17
|
* @param param - the information about the source file and Transcend instance to write them to.
|
|
41
18
|
*/
|
|
42
|
-
const syncOneTrustAssessmentsFromFile =
|
|
19
|
+
const syncOneTrustAssessmentsFromFile = ({ transcend, file, }) => {
|
|
43
20
|
logger_1.logger.info(`Getting list of all assessments from file ${file}...`);
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
const parsedAssessment = (0, type_utils_1.decodeCodec)(privacy_types_1.OneTrustEnrichedAssessment,
|
|
21
|
+
return new Promise((resolve, reject) => {
|
|
22
|
+
// Create a readable stream from the file
|
|
23
|
+
const fileStream = (0, fs_1.createReadStream)(file, {
|
|
24
|
+
encoding: 'utf-8',
|
|
25
|
+
highWaterMark: 64 * 1024, // 64KB chunks
|
|
26
|
+
});
|
|
27
|
+
// Create a JSONStream parser to parse the array of OneTrust assessments from the file
|
|
28
|
+
const parser = JSONStream_1.default.parse('*'); // '*' matches each element in the root array
|
|
29
|
+
let index = 0;
|
|
30
|
+
// Pipe the file stream into the JSON parser
|
|
31
|
+
fileStream.pipe(parser);
|
|
32
|
+
// Handle each parsed assessment object
|
|
33
|
+
parser.on('data', async (assessment) => {
|
|
34
|
+
try {
|
|
35
|
+
// Pause the stream while processing to avoid overwhelming memory
|
|
36
|
+
parser.pause();
|
|
37
|
+
// Decode and validate the assessment
|
|
38
|
+
const parsedAssessment = (0, type_utils_1.decodeCodec)(privacy_types_1.OneTrustEnrichedAssessment, assessment);
|
|
39
|
+
// Sync the assessment to transcend
|
|
62
40
|
await (0, syncOneTrustAssessmentToTranscend_1.syncOneTrustAssessmentToTranscend)({
|
|
63
41
|
assessment: parsedAssessment,
|
|
64
42
|
transcend,
|
|
65
|
-
total: 2178,
|
|
66
43
|
index,
|
|
67
44
|
});
|
|
45
|
+
index += 1;
|
|
46
|
+
// Resume the stream after processing
|
|
47
|
+
parser.resume();
|
|
68
48
|
}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
49
|
+
catch (e) {
|
|
50
|
+
// if failed to parse a line, report error and continue
|
|
51
|
+
logger_1.logger.error(colors_1.default.red(`Failed to parse the assessment ${index} from file '${file}': ${e.message}.`));
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
// Handle completion
|
|
55
|
+
parser.on('end', () => {
|
|
56
|
+
logger_1.logger.info(`Finished processing ${index} assessments from file ${file}`);
|
|
57
|
+
resolve();
|
|
58
|
+
});
|
|
59
|
+
// Handle stream or parsing errors
|
|
60
|
+
parser.on('error', (error) => {
|
|
61
|
+
logger_1.logger.error(colors_1.default.red(`Error parsing file '${file}': ${error.message}`));
|
|
62
|
+
reject(error);
|
|
63
|
+
});
|
|
64
|
+
fileStream.on('error', (error) => {
|
|
65
|
+
logger_1.logger.error(colors_1.default.red(`Error reading file '${file}': ${error.message}`));
|
|
66
|
+
reject(error);
|
|
67
|
+
});
|
|
68
|
+
});
|
|
76
69
|
};
|
|
77
70
|
exports.syncOneTrustAssessmentsFromFile = syncOneTrustAssessmentsFromFile;
|
|
78
71
|
//# sourceMappingURL=syncOneTrustAssessmentsFromFile.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"syncOneTrustAssessmentsFromFile.js","sourceRoot":"","sources":["../../../src/oneTrust/helpers/syncOneTrustAssessmentsFromFile.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"syncOneTrustAssessmentsFromFile.js","sourceRoot":"","sources":["../../../src/oneTrust/helpers/syncOneTrustAssessmentsFromFile.ts"],"names":[],"mappings":";;;;;;AAAA,yDAAuD;AACvD,oDAA4B;AAC5B,yCAAsC;AACtC,4DAAoC;AAEpC,2BAAsC;AACtC,+DAAyE;AACzE,2FAAwF;AAGxF;;;;GAIG;AACI,MAAM,+BAA+B,GAAG,CAAC,EAC9C,SAAS,EACT,IAAI,GAML,EAAiB,EAAE;IAClB,eAAM,CAAC,IAAI,CAAC,6CAA6C,IAAI,KAAK,CAAC,CAAC;IAEpE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,yCAAyC;QACzC,MAAM,UAAU,GAAG,IAAA,qBAAgB,EAAC,IAAI,EAAE;YACxC,QAAQ,EAAE,OAAO;YACjB,aAAa,EAAE,EAAE,GAAG,IAAI,EAAE,cAAc;SACzC,CAAC,CAAC;QAEH,sFAAsF;QACtF,MAAM,MAAM,GAAG,oBAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,6CAA6C;QAEnF,IAAI,KAAK,GAAG,CAAC,CAAC;QAEd,4CAA4C;QAC5C,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAExB,uCAAuC;QACvC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE;YACrC,IAAI;gBACF,iEAAiE;gBACjE,MAAM,CAAC,KAAK,EAAE,CAAC;gBAEf,qCAAqC;gBACrC,MAAM,gBAAgB,GAAG,IAAA,wBAAW,EAClC,0CAA0B,EAC1B,UAAU,CACX,CAAC;gBAEF,mCAAmC;gBACnC,MAAM,IAAA,qEAAiC,EAAC;oBACtC,UAAU,EAAE,gBAAgB;oBAC5B,SAAS;oBACT,KAAK;iBACN,CAAC,CAAC;gBAEH,KAAK,IAAI,CAAC,CAAC;gBAEX,qCAAqC;gBACrC,MAAM,CAAC,MAAM,EAAE,CAAC;aACjB;YAAC,OAAO,CAAC,EAAE;gBACV,uDAAuD;gBACvD,eAAM,CAAC,KAAK,CACV,gBAAM,CAAC,GAAG,CACR,kCAAkC,KAAK,eAAe,IAAI,MAAM,CAAC,CAAC,OAAO,GAAG,CAC7E,CACF,CAAC;aACH;QACH,CAAC,CAAC,CAAC;QAEH,oBAAoB;QACpB,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;YACpB,eAAM,CAAC,IAAI,CAAC,uBAAuB,KAAK,0BAA0B,IAAI,EAAE,CAAC,CAAC;YAC1E,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC;QAEH,kCAAkC;QAClC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YAC3B,eAAM,CAAC,KAAK,CACV,gBAAM,CAAC,GAAG,CAAC,uBAAuB,IAAI,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC,CAC7D,CAAC;YACF,MAAM,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;QAEH,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YAC/B,eAAM,CAAC,KAAK,CACV,gBAAM,CAAC,GAAG,CAAC,uBAAuB,IAAI,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC,CAC7D,CAAC;YACF,MAAM,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAhFW,QAAA,+BAA+B,mCAgF1C"}
|