@rockcarver/frodo-lib 0.19.0 → 0.19.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/CHANGELOG.md CHANGED
@@ -7,6 +7,27 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.19.1] - 2023-05-21
11
+
12
+ ### Added
13
+
14
+ - Support for authorization policies, policy sets, and resource types through new exported modules:
15
+ - ResourceType
16
+ - PolicySet
17
+ - Policy
18
+
19
+ ### Changed
20
+
21
+ - Updated dependencies
22
+ - rockcarver/frodo-cli#213: More debug logging for connection profile lookup by a unique substring. Use --debug to see the additional output. This is not yet a solution for rockcarver/frodo-cli#213 but should help identify the root cause.
23
+ - rockcarver/frodo-cli#216: More debug logging for the 2fa process and proper detection of unsupported webauthn factor.
24
+
25
+ ### Fixed
26
+
27
+ - \#236: Frodo now properly handles logging in as a tenant admin when admin federation is enabled.
28
+ - \#225: Always output original log event JSON in tailLogs function (`frodo logs tail` command in the cli)
29
+ - rockcarver/frodo-cli#218: Frodo now allows 3 errors when polling for status during a `frodo esv apply` before aborting.
30
+
10
31
  ## [0.19.0] - 2023-05-21
11
32
 
12
33
  ### Added
@@ -1122,7 +1143,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1122
1143
  - Fixed problem with adding connection profiles
1123
1144
  - Miscellaneous bug fixes
1124
1145
 
1125
- [Unreleased]: https://github.com/rockcarver/frodo-lib/compare/v0.19.0...HEAD
1146
+ [Unreleased]: https://github.com/rockcarver/frodo-lib/compare/v0.19.1...HEAD
1147
+
1148
+ [0.19.1]: https://github.com/rockcarver/frodo-lib/compare/v0.19.0...v0.19.1
1126
1149
 
1127
1150
  [0.19.0]: https://github.com/rockcarver/frodo-lib/compare/v0.18.9-7...v0.19.0
1128
1151
 
@@ -232,17 +232,18 @@ function _getScripts() {
232
232
  });
233
233
  return _getScripts.apply(this, arguments);
234
234
  }
235
- function exportPolicyDependencies(_x7, _x8, _x9) {
236
- return _exportPolicyDependencies.apply(this, arguments);
235
+ function exportPolicyPrerequisites(_x7, _x8) {
236
+ return _exportPolicyPrerequisites.apply(this, arguments);
237
237
  }
238
238
  /**
239
- * Export policy
240
- * @param {string} policyId policy id/name
241
- * @returns {Promise<PolicyExportInterface>} a promise that resolves to a PolicyExportInterface object
239
+ * Helper function to export dependencies of a policy set
240
+ * @param {unknown} policyData policy set data
241
+ * @param {PolicyExportOptions} options export options
242
+ * @param {PolicyExportInterface} exportData export data
242
243
  */
243
- function _exportPolicyDependencies() {
244
- _exportPolicyDependencies = _asyncToGenerator(function* (policyData, options, exportData) {
245
- (0, _Console.debugMessage)("PolicyOps.exportPolicyDependencies: start [policy=".concat(policyData['name'], "]"));
244
+ function _exportPolicyPrerequisites() {
245
+ _exportPolicyPrerequisites = _asyncToGenerator(function* (policyData, exportData) {
246
+ (0, _Console.debugMessage)("PolicyOps.exportPolicyPrerequisites: start [policy=".concat(policyData['name'], "]"));
246
247
  // resource types
247
248
  if (policyData.resourceTypeUuid) {
248
249
  var resourceType = yield (0, _ResourceTypesApi.getResourceType)(policyData.resourceTypeUuid);
@@ -253,6 +254,21 @@ function _exportPolicyDependencies() {
253
254
  var policySet = yield (0, _PolicySetOps.getPolicySet)(policyData.applicationName);
254
255
  exportData.policyset[policyData.applicationName] = policySet;
255
256
  }
257
+ (0, _Console.debugMessage)("PolicySetOps.exportPolicyPrerequisites: end");
258
+ });
259
+ return _exportPolicyPrerequisites.apply(this, arguments);
260
+ }
261
+ function exportPolicyDependencies(_x9, _x10, _x11) {
262
+ return _exportPolicyDependencies.apply(this, arguments);
263
+ }
264
+ /**
265
+ * Export policy
266
+ * @param {string} policyId policy id/name
267
+ * @returns {Promise<PolicyExportInterface>} a promise that resolves to a PolicyExportInterface object
268
+ */
269
+ function _exportPolicyDependencies() {
270
+ _exportPolicyDependencies = _asyncToGenerator(function* (policyData, options, exportData) {
271
+ (0, _Console.debugMessage)("PolicyOps.exportPolicyDependencies: start [policy=".concat(policyData['name'], "]"));
256
272
  // scripts
257
273
  var scripts = yield getScripts(policyData);
258
274
  for (var scriptData of scripts) {
@@ -265,7 +281,7 @@ function _exportPolicyDependencies() {
265
281
  });
266
282
  return _exportPolicyDependencies.apply(this, arguments);
267
283
  }
268
- function exportPolicy(_x10, _x11) {
284
+ function exportPolicy(_x12) {
269
285
  return _exportPolicy.apply(this, arguments);
270
286
  }
271
287
  /**
@@ -274,11 +290,19 @@ function exportPolicy(_x10, _x11) {
274
290
  * @returns {Promise<PolicyExportInterface>} a promise that resolves to an PolicyExportInterface object
275
291
  */
276
292
  function _exportPolicy() {
277
- _exportPolicy = _asyncToGenerator(function* (policyId, options) {
293
+ _exportPolicy = _asyncToGenerator(function* (policyId) {
294
+ var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
295
+ deps: true,
296
+ prereqs: false,
297
+ useStringArrays: true
298
+ };
278
299
  (0, _Console.debugMessage)("PolicyOps.exportPolicy: start");
279
300
  var policyData = yield getPolicy(policyId);
280
301
  var exportData = createPolicyExportTemplate();
281
302
  exportData.policy[policyData._id] = policyData;
303
+ if (options.prereqs) {
304
+ yield exportPolicyPrerequisites(policyData, exportData);
305
+ }
282
306
  if (options.deps) {
283
307
  yield exportPolicyDependencies(policyData, options, exportData);
284
308
  }
@@ -287,17 +311,22 @@ function _exportPolicy() {
287
311
  });
288
312
  return _exportPolicy.apply(this, arguments);
289
313
  }
290
- function exportPolicies(_x12) {
314
+ function exportPolicies() {
291
315
  return _exportPolicies.apply(this, arguments);
292
316
  }
293
317
  /**
294
318
  * Export policies by policy set
295
- * @param {string} policySetId policy set id/name
319
+ * @param {string} policySetName policy set id/name
296
320
  * @param {PolicyExportOptions} options export options
297
321
  * @returns {Promise<PolicyExportInterface>} a promise that resolves to an PolicyExportInterface object
298
322
  */
299
323
  function _exportPolicies() {
300
- _exportPolicies = _asyncToGenerator(function* (options) {
324
+ _exportPolicies = _asyncToGenerator(function* () {
325
+ var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
326
+ deps: true,
327
+ prereqs: false,
328
+ useStringArrays: true
329
+ };
301
330
  (0, _Console.debugMessage)("PolicyOps.exportPolicies: start");
302
331
  var exportData = createPolicyExportTemplate();
303
332
  var errors = [];
@@ -305,6 +334,13 @@ function _exportPolicies() {
305
334
  var policies = yield getPolicies();
306
335
  for (var policyData of policies) {
307
336
  exportData.policy[policyData._id] = policyData;
337
+ if (options.prereqs) {
338
+ try {
339
+ yield exportPolicyPrerequisites(policyData, exportData);
340
+ } catch (error) {
341
+ errors.push(error);
342
+ }
343
+ }
308
344
  if (options.deps) {
309
345
  try {
310
346
  yield exportPolicyDependencies(policyData, options, exportData);
@@ -325,7 +361,7 @@ function _exportPolicies() {
325
361
  });
326
362
  return _exportPolicies.apply(this, arguments);
327
363
  }
328
- function exportPoliciesByPolicySet(_x13, _x14) {
364
+ function exportPoliciesByPolicySet(_x13) {
329
365
  return _exportPoliciesByPolicySet.apply(this, arguments);
330
366
  }
331
367
  /**
@@ -334,14 +370,26 @@ function exportPoliciesByPolicySet(_x13, _x14) {
334
370
  * @param {PolicyExportInterface} exportData export data
335
371
  */
336
372
  function _exportPoliciesByPolicySet() {
337
- _exportPoliciesByPolicySet = _asyncToGenerator(function* (policySetId, options) {
373
+ _exportPoliciesByPolicySet = _asyncToGenerator(function* (policySetName) {
374
+ var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
375
+ deps: true,
376
+ prereqs: false,
377
+ useStringArrays: true
378
+ };
338
379
  (0, _Console.debugMessage)("PolicyOps.exportPolicies: start");
339
380
  var exportData = createPolicyExportTemplate();
340
381
  var errors = [];
341
382
  try {
342
- var policies = yield getPoliciesByPolicySet(policySetId);
383
+ var policies = yield getPoliciesByPolicySet(policySetName);
343
384
  for (var policyData of policies) {
344
385
  exportData.policy[policyData._id] = policyData;
386
+ if (options.prereqs) {
387
+ try {
388
+ yield exportPolicyPrerequisites(policyData, exportData);
389
+ } catch (error) {
390
+ errors.push(error);
391
+ }
392
+ }
345
393
  if (options.deps) {
346
394
  try {
347
395
  yield exportPolicyDependencies(policyData, options, exportData);
@@ -362,16 +410,16 @@ function _exportPoliciesByPolicySet() {
362
410
  });
363
411
  return _exportPoliciesByPolicySet.apply(this, arguments);
364
412
  }
365
- function importPolicyHardDependencies(_x15, _x16) {
366
- return _importPolicyHardDependencies.apply(this, arguments);
413
+ function importPolicyPrerequisites(_x14, _x15) {
414
+ return _importPolicyPrerequisites.apply(this, arguments);
367
415
  }
368
416
  /**
369
417
  * Helper function to import soft dependencies of a policy
370
418
  * @param {PolicySkeleton} policyData policy object
371
419
  * @param {PolicyExportInterface} exportData export data
372
420
  */
373
- function _importPolicyHardDependencies() {
374
- _importPolicyHardDependencies = _asyncToGenerator(function* (policyData, exportData) {
421
+ function _importPolicyPrerequisites() {
422
+ _importPolicyPrerequisites = _asyncToGenerator(function* (policyData, exportData) {
375
423
  (0, _Console.debugMessage)("PolicyOps.importPolicyHardDependencies: start [policy=".concat(policyData._id, "]"));
376
424
  var errors = [];
377
425
  try {
@@ -409,20 +457,20 @@ function _importPolicyHardDependencies() {
409
457
  }
410
458
  (0, _Console.debugMessage)("PolicyOps.importPolicyHardDependencies: end");
411
459
  });
412
- return _importPolicyHardDependencies.apply(this, arguments);
460
+ return _importPolicyPrerequisites.apply(this, arguments);
413
461
  }
414
- function importPolicySoftDependencies(_x17, _x18) {
415
- return _importPolicySoftDependencies.apply(this, arguments);
462
+ function importPolicyDependencies(_x16, _x17) {
463
+ return _importPolicyDependencies.apply(this, arguments);
416
464
  }
417
465
  /**
418
466
  * Import policy by id
419
- * @param {string} name client id
467
+ * @param {string} policyId policy id
420
468
  * @param {PolicyExportInterface} importData import data
421
469
  * @param {PolicyImportOptions} options import options
422
470
  * @returns {Promise<PolicySkeleton>} imported policy object
423
471
  */
424
- function _importPolicySoftDependencies() {
425
- _importPolicySoftDependencies = _asyncToGenerator(function* (policyData, exportData) {
472
+ function _importPolicyDependencies() {
473
+ _importPolicyDependencies = _asyncToGenerator(function* (policyData, exportData) {
426
474
  (0, _Console.debugMessage)("PolicyOps.importPolicySoftDependencies: start [policy=".concat(policyData._id, "]"));
427
475
  var errors = [];
428
476
  try {
@@ -454,9 +502,9 @@ function _importPolicySoftDependencies() {
454
502
  }
455
503
  (0, _Console.debugMessage)("PolicyOps.importPolicySoftDependencies: end");
456
504
  });
457
- return _importPolicySoftDependencies.apply(this, arguments);
505
+ return _importPolicyDependencies.apply(this, arguments);
458
506
  }
459
- function importPolicy(_x19, _x20) {
507
+ function importPolicy(_x18, _x19) {
460
508
  return _importPolicy.apply(this, arguments);
461
509
  }
462
510
  /**
@@ -466,22 +514,25 @@ function importPolicy(_x19, _x20) {
466
514
  * @returns {Promise<PolicySkeleton>} imported policy object
467
515
  */
468
516
  function _importPolicy() {
469
- _importPolicy = _asyncToGenerator(function* (name, importData) {
517
+ _importPolicy = _asyncToGenerator(function* (policyId, importData) {
470
518
  var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {
471
- deps: true
519
+ deps: true,
520
+ prereqs: false
472
521
  };
473
522
  var response = null;
474
523
  var errors = [];
475
524
  var imported = [];
476
525
  for (var id of Object.keys(importData.policy)) {
477
- if (id === name) {
526
+ if (id === policyId) {
478
527
  try {
479
528
  var policyData = importData.policy[id];
480
- delete policyData._provider;
481
529
  delete policyData._rev;
482
- if (options.deps) {
530
+ if (options.policySetName) {
531
+ policyData.applicationName = options.policySetName;
532
+ }
533
+ if (options.prereqs) {
483
534
  try {
484
- yield importPolicyHardDependencies(policyData, importData);
535
+ yield importPolicyPrerequisites(policyData, importData);
485
536
  } catch (error) {
486
537
  errors.push(error);
487
538
  }
@@ -494,7 +545,7 @@ function _importPolicy() {
494
545
  }
495
546
  if (options.deps) {
496
547
  try {
497
- yield importPolicySoftDependencies(policyData, importData);
548
+ yield importPolicyDependencies(policyData, importData);
498
549
  } catch (error) {
499
550
  errors.push(error);
500
551
  }
@@ -512,13 +563,13 @@ function _importPolicy() {
512
563
  throw new Error("Import error:\n".concat(errorMessages));
513
564
  }
514
565
  if (0 === imported.length) {
515
- throw new Error("Import error:\n".concat(name, " not found in import data!"));
566
+ throw new Error("Import error:\n".concat(policyId, " not found in import data!"));
516
567
  }
517
568
  return response;
518
569
  });
519
570
  return _importPolicy.apply(this, arguments);
520
571
  }
521
- function importFirstPolicy(_x21) {
572
+ function importFirstPolicy(_x20) {
522
573
  return _importFirstPolicy.apply(this, arguments);
523
574
  }
524
575
  /**
@@ -530,7 +581,8 @@ function importFirstPolicy(_x21) {
530
581
  function _importFirstPolicy() {
531
582
  _importFirstPolicy = _asyncToGenerator(function* (importData) {
532
583
  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
533
- deps: true
584
+ deps: true,
585
+ prereqs: false
534
586
  };
535
587
  var response = null;
536
588
  var errors = [];
@@ -538,11 +590,13 @@ function _importFirstPolicy() {
538
590
  for (var id of Object.keys(importData.policy)) {
539
591
  try {
540
592
  var policyData = importData.policy[id];
541
- delete policyData._provider;
542
593
  delete policyData._rev;
543
- if (options.deps) {
594
+ if (options.policySetName) {
595
+ policyData.applicationName = options.policySetName;
596
+ }
597
+ if (options.prereqs) {
544
598
  try {
545
- yield importPolicyHardDependencies(policyData, importData);
599
+ yield importPolicyPrerequisites(policyData, importData);
546
600
  } catch (error) {
547
601
  errors.push(error);
548
602
  }
@@ -555,7 +609,7 @@ function _importFirstPolicy() {
555
609
  }
556
610
  if (options.deps) {
557
611
  try {
558
- yield importPolicySoftDependencies(policyData, importData);
612
+ yield importPolicyDependencies(policyData, importData);
559
613
  } catch (error) {
560
614
  errors.push(error);
561
615
  }
@@ -579,13 +633,14 @@ function _importFirstPolicy() {
579
633
  });
580
634
  return _importFirstPolicy.apply(this, arguments);
581
635
  }
582
- function importPolicies(_x22) {
636
+ function importPolicies(_x21) {
583
637
  return _importPolicies.apply(this, arguments);
584
638
  }
585
639
  function _importPolicies() {
586
640
  _importPolicies = _asyncToGenerator(function* (importData) {
587
641
  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
588
- deps: true
642
+ deps: true,
643
+ prereqs: false
589
644
  };
590
645
  var response = [];
591
646
  var errors = [];
@@ -594,9 +649,12 @@ function _importPolicies() {
594
649
  try {
595
650
  var policyData = importData.policy[id];
596
651
  delete policyData._rev;
597
- if (options.deps) {
652
+ if (options.policySetName) {
653
+ policyData.applicationName = options.policySetName;
654
+ }
655
+ if (options.prereqs) {
598
656
  try {
599
- yield importPolicyHardDependencies(policyData, importData);
657
+ yield importPolicyPrerequisites(policyData, importData);
600
658
  } catch (error) {
601
659
  errors.push(error);
602
660
  }
@@ -609,7 +667,7 @@ function _importPolicies() {
609
667
  }
610
668
  if (options.deps) {
611
669
  try {
612
- yield importPolicySoftDependencies(policyData, importData);
670
+ yield importPolicyDependencies(policyData, importData);
613
671
  } catch (error) {
614
672
  errors.push(error);
615
673
  }
@@ -1 +1 @@
1
- {"version":3,"file":"PolicyOps.js","names":["_PoliciesApi","require","_ScriptOps","_ExportImportUtils","_ApiTypes","_Console","_ResourceTypesApi","_PolicySetOps","_ResourceTypeOps","asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","value","error","done","Promise","then","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","createPolicyExportTemplate","meta","getMetadata","script","policy","resourcetype","policyset","getPolicies","_getPolicies2","result","_getPolicies","getPoliciesByPolicySet","_x","_getPoliciesByPolicySet2","policySetId","data","_getPoliciesByPolicySet","getPolicy","_x2","_getPolicy2","policyId","_getPolicy","putPolicy","_x3","_x4","_putPolicy2","policyData","_putPolicy","deletePolicy","_x5","_deletePolicy2","_deletePolicy","findScriptUuids","condition","scriptUuids","type","PolicyConditionType","AND","toString","OR","NOT","push","conditions","cond","Script","scriptId","Set","getScripts","_x6","_getScripts","debugMessage","concat","errors","scripts","scriptUuid","getScript","message","length","errorMessages","map","join","Error","exportPolicyDependencies","_x7","_x8","_x9","_exportPolicyDependencies","options","exportData","resourceTypeUuid","resourceType","getResourceType","applicationName","policySet","getPolicySet","scriptData","useStringArrays","convertBase64TextToArray","_id","exportPolicy","_x10","_x11","_exportPolicy","deps","exportPolicies","_x12","_exportPolicies","policies","exportPoliciesByPolicySet","_x13","_x14","_exportPoliciesByPolicySet","importPolicyHardDependencies","_x15","_x16","_importPolicyHardDependencies","createResourceType","_error$response","response","status","updateResourceType","createPolicySet","_error$response2","updatePolicySet","_error$response3","_error$response3$data","_error$response4","_error$response4$data","importPolicySoftDependencies","_x17","_x18","_importPolicySoftDependencies","putScript","_error$response5","_error$response6","_error$response6$data","_error$response7","_error$response7$data","_error$response8","_error$response8$data","importPolicy","_x19","_x20","_importPolicy","name","importData","imported","id","Object","keys","_provider","_rev","_error$response9","_error$response9$data","importFirstPolicy","_x21","_importFirstPolicy","_error$response10","_error$response10$dat","importPolicies","_x22","_importPolicies","_error$response11","_error$response11$dat"],"sources":["ops/PolicyOps.ts"],"sourcesContent":["import {\n getPolicies as _getPolicies,\n getPoliciesByPolicySet as _getPoliciesByPolicySet,\n getPolicy as _getPolicy,\n putPolicy as _putPolicy,\n deletePolicy as _deletePolicy,\n} from '../api/PoliciesApi';\nimport { getScript, putScript } from './ScriptOps';\nimport { convertBase64TextToArray } from './utils/ExportImportUtils';\nimport { ExportMetaData } from './OpsTypes';\nimport {\n PolicyCondition,\n PolicyConditionType,\n PolicySetSkeleton,\n PolicySkeleton,\n ResourceTypeSkeleton,\n ScriptSkeleton,\n} from '../api/ApiTypes';\nimport { getMetadata } from './utils/ExportImportUtils';\nimport { debugMessage } from './utils/Console';\nimport { getResourceType } from '../api/ResourceTypesApi';\nimport { createPolicySet, getPolicySet, updatePolicySet } from './PolicySetOps';\nimport { createResourceType, updateResourceType } from './ResourceTypeOps';\n\nexport interface PolicyExportInterface {\n meta?: ExportMetaData;\n script: Record<string, ScriptSkeleton>;\n resourcetype: Record<string, ResourceTypeSkeleton>;\n policy: Record<string, PolicySkeleton>;\n policyset: Record<string, PolicySetSkeleton>;\n}\n\n/**\n * Policy export options\n */\nexport interface PolicyExportOptions {\n /**\n * Use string arrays to store multi-line text in scripts.\n */\n useStringArrays: boolean;\n /**\n * Include any dependencies (policy sets, scripts, resource types).\n */\n deps: boolean;\n}\n\n/**\n * Policy import options\n */\nexport interface PolicyImportOptions {\n /**\n * Include any dependencies (policy sets, scripts, resource types).\n */\n deps: boolean;\n}\n\n/**\n * Create an empty export template\n * @returns {PolicyExportInterface} an empty export template\n */\nfunction createPolicyExportTemplate(): PolicyExportInterface {\n return {\n meta: getMetadata(),\n script: {},\n policy: {},\n resourcetype: {},\n policyset: {},\n } as PolicyExportInterface;\n}\n\n/**\n * Get all policies\n * @returns {Promise<PolicySkeleton>} a promise that resolves to an array of policy set objects\n */\nexport async function getPolicies(): Promise<PolicySkeleton[]> {\n const { result } = await _getPolicies();\n return result;\n}\n\n/**\n * Get policies by policy set\n * @param {string} policySetId policy set id/name\n * @returns {Promise<PolicySkeleton[]>} a promise resolving to an array of policy objects\n */\nexport async function getPoliciesByPolicySet(\n policySetId: string\n): Promise<PolicySkeleton[]> {\n const data = await _getPoliciesByPolicySet(policySetId);\n return data.result;\n}\n\n/**\n * Get policy\n * @param {string} policyId policy id/name\n * @returns {Promise<PolicySkeleton>} a promise that resolves to a policy object\n */\nexport async function getPolicy(policyId: string): Promise<PolicySkeleton> {\n return _getPolicy(policyId);\n}\n\n/**\n * Put policy\n * @param {string} policyId policy id/name\n * @param {PolicySkeleton} policyData policy object\n * @returns {Promise<PolicySkeleton>} a promise that resolves to a policy object\n */\nexport async function putPolicy(\n policyId: string,\n policyData: PolicySkeleton\n): Promise<PolicySkeleton> {\n return _putPolicy(policyId, policyData);\n}\n\n/**\n * Delete policy\n * @param {string} policyId policy id/name\n * @returns {Promise<PolicySkeleton>} a promise that resolves to a policy object\n */\nexport async function deletePolicy(policyId: string): Promise<PolicySkeleton> {\n return _deletePolicy(policyId);\n}\n\n/**\n * Find all script references in a deeply-nested policy condition object\n * @param {PolicyCondition} condition condition object\n * @returns {string[]} array of script UUIDs\n * \n * Sample condition block:\n * \n \"condition\": {\n \"type\": \"AND\",\n \"conditions\": [\n {\n \"type\": \"Script\",\n \"scriptId\": \"62f18ede-e5e7-4a7b-8b73-1b02fcbd241a\"\n },\n {\n \"type\": \"AuthenticateToService\",\n \"authenticateToService\": \"TxAuthz\"\n },\n {\n \"type\": \"OR\",\n \"conditions\": [\n {\n \"type\": \"Session\",\n \"maxSessionTime\": 5,\n \"terminateSession\": false\n },\n {\n \"type\": \"OAuth2Scope\",\n \"requiredScopes\": [\n \"openid\"\n ]\n },\n {\n \"type\": \"NOT\",\n \"condition\": {\n \"type\": \"Script\",\n \"scriptId\": \"729ee140-a4e9-43af-b358-d60eeda13cc3\"\n }\n }\n ]\n }\n ]\n },\n*/\nexport function findScriptUuids(condition: PolicyCondition): string[] {\n let scriptUuids: string[] = [];\n if (!condition) return scriptUuids;\n if (\n condition.type === PolicyConditionType.AND.toString() ||\n condition.type === PolicyConditionType.OR.toString() ||\n condition.type === PolicyConditionType.NOT.toString()\n ) {\n // single condition\n if (condition.condition) {\n scriptUuids.push(...findScriptUuids(condition.condition));\n }\n // array of conditions\n if (condition.conditions) {\n for (const cond of condition.conditions) {\n scriptUuids.push(...findScriptUuids(cond));\n }\n }\n } else if (condition.type === PolicyConditionType.Script.toString()) {\n scriptUuids.push(condition.scriptId as string);\n }\n // de-duplicate\n scriptUuids = [...new Set(scriptUuids)];\n return scriptUuids;\n}\n\n/**\n * Get scripts for a policy object\n * @param {PolicySkeleton} policyData policy object\n * @returns {Promise<ScriptSkeleton[]>} a promise that resolves to an array of script objects\n */\nexport async function getScripts(\n policyData: PolicySkeleton\n): Promise<ScriptSkeleton[]> {\n debugMessage(`PolicyOps.getScripts: start [policy=${policyData['name']}]`);\n const errors = [];\n const scripts = [];\n try {\n const scriptUuids = findScriptUuids(policyData.condition);\n debugMessage(`found scripts: ${scriptUuids}`);\n for (const scriptUuid of scriptUuids) {\n try {\n const script = await getScript(scriptUuid);\n scripts.push(script);\n } catch (error) {\n error.message = `Error retrieving script ${scriptUuid} referenced in policy ${policyData['name']}: ${error.message}`;\n errors.push(error);\n }\n }\n } catch (error) {\n error.message = `Error finding scripts in policy ${policyData['name']}: ${error.message}`;\n errors.push(error);\n }\n if (errors.length) {\n const errorMessages = errors.map((error) => error.message).join('\\n');\n throw new Error(`Export error:\\n${errorMessages}`);\n }\n debugMessage(`PolicySetOps.getScripts: end`);\n return scripts;\n}\n\n/**\n * Helper function to export dependencies of a policy set\n * @param {unknown} policyData policy set data\n * @param {PolicyExportOptions} options export options\n * @param {PolicyExportInterface} exportData export data\n */\nasync function exportPolicyDependencies(\n policyData: PolicySkeleton,\n options: PolicyExportOptions,\n exportData: PolicyExportInterface\n) {\n debugMessage(\n `PolicyOps.exportPolicyDependencies: start [policy=${policyData['name']}]`\n );\n // resource types\n if (policyData.resourceTypeUuid) {\n const resourceType = await getResourceType(policyData.resourceTypeUuid);\n exportData.resourcetype[policyData.resourceTypeUuid] = resourceType;\n }\n // policy set\n if (policyData.applicationName) {\n const policySet = await getPolicySet(policyData.applicationName);\n exportData.policyset[policyData.applicationName] = policySet;\n }\n // scripts\n const scripts = await getScripts(policyData);\n for (const scriptData of scripts) {\n if (options.useStringArrays) {\n scriptData.script = convertBase64TextToArray(scriptData.script);\n }\n exportData.script[scriptData._id] = scriptData;\n }\n debugMessage(`PolicySetOps.exportPolicySetDependencies: end`);\n}\n\n/**\n * Export policy\n * @param {string} policyId policy id/name\n * @returns {Promise<PolicyExportInterface>} a promise that resolves to a PolicyExportInterface object\n */\nexport async function exportPolicy(\n policyId: string,\n options: PolicyExportOptions\n): Promise<PolicyExportInterface> {\n debugMessage(`PolicyOps.exportPolicy: start`);\n const policyData = await getPolicy(policyId);\n const exportData = createPolicyExportTemplate();\n exportData.policy[policyData._id] = policyData;\n if (options.deps) {\n await exportPolicyDependencies(policyData, options, exportData);\n }\n debugMessage(`PolicyOps.exportPolicy: end`);\n return exportData;\n}\n\n/**\n * Export policies\n * @param {PolicyExportOptions} options export options\n * @returns {Promise<PolicyExportInterface>} a promise that resolves to an PolicyExportInterface object\n */\nexport async function exportPolicies(\n options: PolicyExportOptions\n): Promise<PolicyExportInterface> {\n debugMessage(`PolicyOps.exportPolicies: start`);\n const exportData = createPolicyExportTemplate();\n const errors = [];\n try {\n const policies = await getPolicies();\n for (const policyData of policies) {\n exportData.policy[policyData._id] = policyData;\n if (options.deps) {\n try {\n await exportPolicyDependencies(policyData, options, exportData);\n } catch (error) {\n errors.push(error);\n }\n }\n }\n } catch (error) {\n errors.push(error);\n }\n if (errors.length) {\n const errorMessages = errors.map((error) => error.message).join('\\n');\n throw new Error(`Export error:\\n${errorMessages}`);\n }\n debugMessage(`PolicyOps.exportPolicies: end`);\n return exportData;\n}\n\n/**\n * Export policies by policy set\n * @param {string} policySetId policy set id/name\n * @param {PolicyExportOptions} options export options\n * @returns {Promise<PolicyExportInterface>} a promise that resolves to an PolicyExportInterface object\n */\nexport async function exportPoliciesByPolicySet(\n policySetId: string,\n options: PolicyExportOptions\n): Promise<PolicyExportInterface> {\n debugMessage(`PolicyOps.exportPolicies: start`);\n const exportData = createPolicyExportTemplate();\n const errors = [];\n try {\n const policies = await getPoliciesByPolicySet(policySetId);\n for (const policyData of policies) {\n exportData.policy[policyData._id] = policyData;\n if (options.deps) {\n try {\n await exportPolicyDependencies(policyData, options, exportData);\n } catch (error) {\n errors.push(error);\n }\n }\n }\n } catch (error) {\n errors.push(error);\n }\n if (errors.length) {\n const errorMessages = errors.map((error) => error.message).join('\\n');\n throw new Error(`Export error:\\n${errorMessages}`);\n }\n debugMessage(`PolicyOps.exportPolicies: end`);\n return exportData;\n}\n\n/**\n * Helper function to import hard dependencies of a policy\n * @param {PolicySkeleton} policyData policy object\n * @param {PolicyExportInterface} exportData export data\n */\nasync function importPolicyHardDependencies(\n policyData: PolicySkeleton,\n exportData: PolicyExportInterface\n) {\n debugMessage(\n `PolicyOps.importPolicyHardDependencies: start [policy=${policyData._id}]`\n );\n const errors = [];\n try {\n // resource type\n if (exportData.resourcetype[policyData.resourceTypeUuid]) {\n try {\n debugMessage(`Importing resource type ${policyData.resourceTypeUuid}`);\n await createResourceType(\n exportData.resourcetype[policyData.resourceTypeUuid]\n );\n } catch (error) {\n if (error.response?.status === 409)\n await updateResourceType(\n policyData.resourceTypeUuid,\n exportData.resourcetype[policyData.resourceTypeUuid]\n );\n else throw error;\n }\n }\n // policy set\n if (exportData.policyset[policyData.applicationName]) {\n try {\n debugMessage(`Importing policy set ${policyData.applicationName}`);\n await createPolicySet(exportData.policyset[policyData.applicationName]);\n } catch (error) {\n if (error.response?.status === 409)\n await updatePolicySet(\n exportData.policyset[policyData.applicationName]\n );\n else throw error;\n }\n }\n } catch (error) {\n error.message = `Error importing hard dependencies for policy ${\n policyData._id\n }: ${error.response?.data?.message || error.message}`;\n errors.push(error);\n }\n if (errors.length) {\n const errorMessages = errors\n .map((error) => error.response?.data?.message || error.message)\n .join('\\n');\n throw new Error(`Import hard dependencies error:\\n${errorMessages}`);\n }\n debugMessage(`PolicyOps.importPolicyHardDependencies: end`);\n}\n\n/**\n * Helper function to import soft dependencies of a policy\n * @param {PolicySkeleton} policyData policy object\n * @param {PolicyExportInterface} exportData export data\n */\nasync function importPolicySoftDependencies(\n policyData: PolicySkeleton,\n exportData: PolicyExportInterface\n) {\n debugMessage(\n `PolicyOps.importPolicySoftDependencies: start [policy=${policyData._id}]`\n );\n const errors = [];\n try {\n // scripts\n const scriptUuids = findScriptUuids(policyData.condition);\n for (const scriptUuid of scriptUuids) {\n try {\n const scriptData = exportData.script[scriptUuid];\n debugMessage(`Importing script ${scriptUuid}`);\n await putScript(scriptUuid, scriptData);\n } catch (error) {\n debugMessage(error.response?.data);\n error.message = `Error importing script ${scriptUuid} for policy ${\n policyData._id\n }: ${error.response?.data?.message || error.message}`;\n errors.push(error);\n }\n }\n } catch (error) {\n error.message = `Error importing soft dependencies for policy ${\n policyData._id\n }: ${error.response?.data?.message || error.message}`;\n errors.push(error);\n }\n if (errors.length) {\n const errorMessages = errors\n .map((error) => error.response?.data?.message || error.message)\n .join('\\n');\n throw new Error(`Import soft dependencies error:\\n${errorMessages}`);\n }\n debugMessage(`PolicyOps.importPolicySoftDependencies: end`);\n}\n\n/**\n * Import policy by id\n * @param {string} name client id\n * @param {PolicyExportInterface} importData import data\n * @param {PolicyImportOptions} options import options\n * @returns {Promise<PolicySkeleton>} imported policy object\n */\nexport async function importPolicy(\n name: string,\n importData: PolicyExportInterface,\n options: PolicyImportOptions = { deps: true }\n): Promise<PolicySkeleton> {\n let response = null;\n const errors = [];\n const imported = [];\n for (const id of Object.keys(importData.policy)) {\n if (id === name) {\n try {\n const policyData = importData.policy[id];\n delete policyData._provider;\n delete policyData._rev;\n if (options.deps) {\n try {\n await importPolicyHardDependencies(policyData, importData);\n } catch (error) {\n errors.push(error);\n }\n }\n try {\n response = await putPolicy(policyData._id, policyData);\n imported.push(id);\n } catch (error) {\n errors.push(error);\n }\n if (options.deps) {\n try {\n await importPolicySoftDependencies(policyData, importData);\n } catch (error) {\n errors.push(error);\n }\n }\n } catch (error) {\n errors.push(error);\n }\n }\n }\n if (errors.length) {\n const errorMessages = errors\n .map((error) => error.response?.data?.message || error.message)\n .join('\\n');\n throw new Error(`Import error:\\n${errorMessages}`);\n }\n if (0 === imported.length) {\n throw new Error(`Import error:\\n${name} not found in import data!`);\n }\n return response;\n}\n\n/**\n * Import first policy\n * @param {PolicyExportInterface} importData import data\n * @param {PolicyImportOptions} options import options\n * @returns {Promise<PolicySkeleton>} imported policy object\n */\nexport async function importFirstPolicy(\n importData: PolicyExportInterface,\n options: PolicyImportOptions = { deps: true }\n): Promise<PolicySkeleton> {\n let response = null;\n const errors = [];\n const imported = [];\n for (const id of Object.keys(importData.policy)) {\n try {\n const policyData = importData.policy[id];\n delete policyData._provider;\n delete policyData._rev;\n if (options.deps) {\n try {\n await importPolicyHardDependencies(policyData, importData);\n } catch (error) {\n errors.push(error);\n }\n }\n try {\n response = await putPolicy(policyData._id, policyData);\n imported.push(id);\n } catch (error) {\n errors.push(error);\n }\n if (options.deps) {\n try {\n await importPolicySoftDependencies(policyData, importData);\n } catch (error) {\n errors.push(error);\n }\n }\n } catch (error) {\n errors.push(error);\n }\n break;\n }\n if (errors.length) {\n const errorMessages = errors\n .map((error) => error.response?.data?.message || error.message)\n .join('\\n');\n throw new Error(`Import error:\\n${errorMessages}`);\n }\n if (0 === imported.length) {\n throw new Error(`Import error:\\nNo policy found in import data!`);\n }\n return response;\n}\n\n/**\n * Import policies\n * @param {PolicyExportInterface} importData import data\n * @param {PolicyImportOptions} options import options\n * @returns {Promise<PolicySkeleton[]>} array of imported policy objects\n */\nexport async function importPolicies(\n importData: PolicyExportInterface,\n options: PolicyImportOptions = { deps: true }\n): Promise<PolicySkeleton[]> {\n const response = [];\n const errors = [];\n const imported = [];\n for (const id of Object.keys(importData.policy)) {\n try {\n const policyData = importData.policy[id];\n delete policyData._rev;\n if (options.deps) {\n try {\n await importPolicyHardDependencies(policyData, importData);\n } catch (error) {\n errors.push(error);\n }\n }\n try {\n response.push(await putPolicy(policyData._id, policyData));\n imported.push(id);\n } catch (error) {\n errors.push(error);\n }\n if (options.deps) {\n try {\n await importPolicySoftDependencies(policyData, importData);\n } catch (error) {\n errors.push(error);\n }\n }\n } catch (error) {\n errors.push(error);\n }\n }\n if (errors.length) {\n const errorMessages = errors\n .map((error) => error.response?.data?.message || error.message)\n .join('\\n');\n throw new Error(`Import error:\\n${errorMessages}`);\n }\n if (0 === imported.length) {\n throw new Error(`Import error:\\nNo policies found in import data!`);\n }\n return response;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"PolicyOps.js","names":["_PoliciesApi","require","_ScriptOps","_ExportImportUtils","_ApiTypes","_Console","_ResourceTypesApi","_PolicySetOps","_ResourceTypeOps","asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","value","error","done","Promise","then","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","createPolicyExportTemplate","meta","getMetadata","script","policy","resourcetype","policyset","getPolicies","_getPolicies2","result","_getPolicies","getPoliciesByPolicySet","_x","_getPoliciesByPolicySet2","policySetId","data","_getPoliciesByPolicySet","getPolicy","_x2","_getPolicy2","policyId","_getPolicy","putPolicy","_x3","_x4","_putPolicy2","policyData","_putPolicy","deletePolicy","_x5","_deletePolicy2","_deletePolicy","findScriptUuids","condition","scriptUuids","type","PolicyConditionType","AND","toString","OR","NOT","push","conditions","cond","Script","scriptId","Set","getScripts","_x6","_getScripts","debugMessage","concat","errors","scripts","scriptUuid","getScript","message","length","errorMessages","map","join","Error","exportPolicyPrerequisites","_x7","_x8","_exportPolicyPrerequisites","exportData","resourceTypeUuid","resourceType","getResourceType","applicationName","policySet","getPolicySet","exportPolicyDependencies","_x9","_x10","_x11","_exportPolicyDependencies","options","scriptData","useStringArrays","convertBase64TextToArray","_id","exportPolicy","_x12","_exportPolicy","deps","prereqs","exportPolicies","_exportPolicies","policies","exportPoliciesByPolicySet","_x13","_exportPoliciesByPolicySet","policySetName","importPolicyPrerequisites","_x14","_x15","_importPolicyPrerequisites","createResourceType","_error$response","response","status","updateResourceType","createPolicySet","_error$response2","updatePolicySet","_error$response3","_error$response3$data","_error$response4","_error$response4$data","importPolicyDependencies","_x16","_x17","_importPolicyDependencies","putScript","_error$response5","_error$response6","_error$response6$data","_error$response7","_error$response7$data","_error$response8","_error$response8$data","importPolicy","_x18","_x19","_importPolicy","importData","imported","id","Object","keys","_rev","_error$response9","_error$response9$data","importFirstPolicy","_x20","_importFirstPolicy","_error$response10","_error$response10$dat","importPolicies","_x21","_importPolicies","_error$response11","_error$response11$dat"],"sources":["ops/PolicyOps.ts"],"sourcesContent":["import {\n getPolicies as _getPolicies,\n getPoliciesByPolicySet as _getPoliciesByPolicySet,\n getPolicy as _getPolicy,\n putPolicy as _putPolicy,\n deletePolicy as _deletePolicy,\n} from '../api/PoliciesApi';\nimport { getScript, putScript } from './ScriptOps';\nimport { convertBase64TextToArray } from './utils/ExportImportUtils';\nimport { ExportMetaData } from './OpsTypes';\nimport {\n PolicyCondition,\n PolicyConditionType,\n PolicySetSkeleton,\n PolicySkeleton,\n ResourceTypeSkeleton,\n ScriptSkeleton,\n} from '../api/ApiTypes';\nimport { getMetadata } from './utils/ExportImportUtils';\nimport { debugMessage } from './utils/Console';\nimport { getResourceType } from '../api/ResourceTypesApi';\nimport { createPolicySet, getPolicySet, updatePolicySet } from './PolicySetOps';\nimport { createResourceType, updateResourceType } from './ResourceTypeOps';\n\nexport interface PolicyExportInterface {\n meta?: ExportMetaData;\n script: Record<string, ScriptSkeleton>;\n resourcetype: Record<string, ResourceTypeSkeleton>;\n policy: Record<string, PolicySkeleton>;\n policyset: Record<string, PolicySetSkeleton>;\n}\n\n/**\n * Policy export options\n */\nexport interface PolicyExportOptions {\n /**\n * Include any dependencies (scripts).\n */\n deps: boolean;\n /**\n * Include any prerequisites (policy sets, resource types).\n */\n prereqs: boolean;\n /**\n * Use string arrays to store multi-line text in scripts.\n */\n useStringArrays: boolean;\n}\n\n/**\n * Policy import options\n */\nexport interface PolicyImportOptions {\n /**\n * Include any dependencies (scripts).\n */\n deps: boolean;\n /**\n * Include any prerequisites (policy sets, resource types).\n */\n prereqs: boolean;\n /**\n * Import policies into different policy set\n */\n policySetName?: string;\n}\n\n/**\n * Create an empty export template\n * @returns {PolicyExportInterface} an empty export template\n */\nfunction createPolicyExportTemplate(): PolicyExportInterface {\n return {\n meta: getMetadata(),\n script: {},\n policy: {},\n resourcetype: {},\n policyset: {},\n } as PolicyExportInterface;\n}\n\n/**\n * Get all policies\n * @returns {Promise<PolicySkeleton>} a promise that resolves to an array of policy set objects\n */\nexport async function getPolicies(): Promise<PolicySkeleton[]> {\n const { result } = await _getPolicies();\n return result;\n}\n\n/**\n * Get policies by policy set\n * @param {string} policySetId policy set id/name\n * @returns {Promise<PolicySkeleton[]>} a promise resolving to an array of policy objects\n */\nexport async function getPoliciesByPolicySet(\n policySetId: string\n): Promise<PolicySkeleton[]> {\n const data = await _getPoliciesByPolicySet(policySetId);\n return data.result;\n}\n\n/**\n * Get policy\n * @param {string} policyId policy id/name\n * @returns {Promise<PolicySkeleton>} a promise that resolves to a policy object\n */\nexport async function getPolicy(policyId: string): Promise<PolicySkeleton> {\n return _getPolicy(policyId);\n}\n\n/**\n * Put policy\n * @param {string} policyId policy id/name\n * @param {PolicySkeleton} policyData policy object\n * @returns {Promise<PolicySkeleton>} a promise that resolves to a policy object\n */\nexport async function putPolicy(\n policyId: string,\n policyData: PolicySkeleton\n): Promise<PolicySkeleton> {\n return _putPolicy(policyId, policyData);\n}\n\n/**\n * Delete policy\n * @param {string} policyId policy id/name\n * @returns {Promise<PolicySkeleton>} a promise that resolves to a policy object\n */\nexport async function deletePolicy(policyId: string): Promise<PolicySkeleton> {\n return _deletePolicy(policyId);\n}\n\n/**\n * Find all script references in a deeply-nested policy condition object\n * @param {PolicyCondition} condition condition object\n * @returns {string[]} array of script UUIDs\n * \n * Sample condition block:\n * \n \"condition\": {\n \"type\": \"AND\",\n \"conditions\": [\n {\n \"type\": \"Script\",\n \"scriptId\": \"62f18ede-e5e7-4a7b-8b73-1b02fcbd241a\"\n },\n {\n \"type\": \"AuthenticateToService\",\n \"authenticateToService\": \"TxAuthz\"\n },\n {\n \"type\": \"OR\",\n \"conditions\": [\n {\n \"type\": \"Session\",\n \"maxSessionTime\": 5,\n \"terminateSession\": false\n },\n {\n \"type\": \"OAuth2Scope\",\n \"requiredScopes\": [\n \"openid\"\n ]\n },\n {\n \"type\": \"NOT\",\n \"condition\": {\n \"type\": \"Script\",\n \"scriptId\": \"729ee140-a4e9-43af-b358-d60eeda13cc3\"\n }\n }\n ]\n }\n ]\n },\n*/\nexport function findScriptUuids(condition: PolicyCondition): string[] {\n let scriptUuids: string[] = [];\n if (!condition) return scriptUuids;\n if (\n condition.type === PolicyConditionType.AND.toString() ||\n condition.type === PolicyConditionType.OR.toString() ||\n condition.type === PolicyConditionType.NOT.toString()\n ) {\n // single condition\n if (condition.condition) {\n scriptUuids.push(...findScriptUuids(condition.condition));\n }\n // array of conditions\n if (condition.conditions) {\n for (const cond of condition.conditions) {\n scriptUuids.push(...findScriptUuids(cond));\n }\n }\n } else if (condition.type === PolicyConditionType.Script.toString()) {\n scriptUuids.push(condition.scriptId as string);\n }\n // de-duplicate\n scriptUuids = [...new Set(scriptUuids)];\n return scriptUuids;\n}\n\n/**\n * Get scripts for a policy object\n * @param {PolicySkeleton} policyData policy object\n * @returns {Promise<ScriptSkeleton[]>} a promise that resolves to an array of script objects\n */\nexport async function getScripts(\n policyData: PolicySkeleton\n): Promise<ScriptSkeleton[]> {\n debugMessage(`PolicyOps.getScripts: start [policy=${policyData['name']}]`);\n const errors = [];\n const scripts = [];\n try {\n const scriptUuids = findScriptUuids(policyData.condition);\n debugMessage(`found scripts: ${scriptUuids}`);\n for (const scriptUuid of scriptUuids) {\n try {\n const script = await getScript(scriptUuid);\n scripts.push(script);\n } catch (error) {\n error.message = `Error retrieving script ${scriptUuid} referenced in policy ${policyData['name']}: ${error.message}`;\n errors.push(error);\n }\n }\n } catch (error) {\n error.message = `Error finding scripts in policy ${policyData['name']}: ${error.message}`;\n errors.push(error);\n }\n if (errors.length) {\n const errorMessages = errors.map((error) => error.message).join('\\n');\n throw new Error(`Export error:\\n${errorMessages}`);\n }\n debugMessage(`PolicySetOps.getScripts: end`);\n return scripts;\n}\n\n/**\n * Helper function to export dependencies of a policy set\n * @param {unknown} policyData policy set data\n * @param {PolicyExportOptions} options export options\n * @param {PolicyExportInterface} exportData export data\n */\nasync function exportPolicyPrerequisites(\n policyData: PolicySkeleton,\n exportData: PolicyExportInterface\n) {\n debugMessage(\n `PolicyOps.exportPolicyPrerequisites: start [policy=${policyData['name']}]`\n );\n // resource types\n if (policyData.resourceTypeUuid) {\n const resourceType = await getResourceType(policyData.resourceTypeUuid);\n exportData.resourcetype[policyData.resourceTypeUuid] = resourceType;\n }\n // policy set\n if (policyData.applicationName) {\n const policySet = await getPolicySet(policyData.applicationName);\n exportData.policyset[policyData.applicationName] = policySet;\n }\n debugMessage(`PolicySetOps.exportPolicyPrerequisites: end`);\n}\n\n/**\n * Helper function to export dependencies of a policy set\n * @param {unknown} policyData policy set data\n * @param {PolicyExportOptions} options export options\n * @param {PolicyExportInterface} exportData export data\n */\nasync function exportPolicyDependencies(\n policyData: PolicySkeleton,\n options: PolicyExportOptions,\n exportData: PolicyExportInterface\n) {\n debugMessage(\n `PolicyOps.exportPolicyDependencies: start [policy=${policyData['name']}]`\n );\n // scripts\n const scripts = await getScripts(policyData);\n for (const scriptData of scripts) {\n if (options.useStringArrays) {\n scriptData.script = convertBase64TextToArray(scriptData.script);\n }\n exportData.script[scriptData._id] = scriptData;\n }\n debugMessage(`PolicySetOps.exportPolicySetDependencies: end`);\n}\n\n/**\n * Export policy\n * @param {string} policyId policy id/name\n * @returns {Promise<PolicyExportInterface>} a promise that resolves to a PolicyExportInterface object\n */\nexport async function exportPolicy(\n policyId: string,\n options: PolicyExportOptions = {\n deps: true,\n prereqs: false,\n useStringArrays: true,\n }\n): Promise<PolicyExportInterface> {\n debugMessage(`PolicyOps.exportPolicy: start`);\n const policyData = await getPolicy(policyId);\n const exportData = createPolicyExportTemplate();\n exportData.policy[policyData._id] = policyData;\n if (options.prereqs) {\n await exportPolicyPrerequisites(policyData, exportData);\n }\n if (options.deps) {\n await exportPolicyDependencies(policyData, options, exportData);\n }\n debugMessage(`PolicyOps.exportPolicy: end`);\n return exportData;\n}\n\n/**\n * Export policies\n * @param {PolicyExportOptions} options export options\n * @returns {Promise<PolicyExportInterface>} a promise that resolves to an PolicyExportInterface object\n */\nexport async function exportPolicies(\n options: PolicyExportOptions = {\n deps: true,\n prereqs: false,\n useStringArrays: true,\n }\n): Promise<PolicyExportInterface> {\n debugMessage(`PolicyOps.exportPolicies: start`);\n const exportData = createPolicyExportTemplate();\n const errors = [];\n try {\n const policies = await getPolicies();\n for (const policyData of policies) {\n exportData.policy[policyData._id] = policyData;\n if (options.prereqs) {\n try {\n await exportPolicyPrerequisites(policyData, exportData);\n } catch (error) {\n errors.push(error);\n }\n }\n if (options.deps) {\n try {\n await exportPolicyDependencies(policyData, options, exportData);\n } catch (error) {\n errors.push(error);\n }\n }\n }\n } catch (error) {\n errors.push(error);\n }\n if (errors.length) {\n const errorMessages = errors.map((error) => error.message).join('\\n');\n throw new Error(`Export error:\\n${errorMessages}`);\n }\n debugMessage(`PolicyOps.exportPolicies: end`);\n return exportData;\n}\n\n/**\n * Export policies by policy set\n * @param {string} policySetName policy set id/name\n * @param {PolicyExportOptions} options export options\n * @returns {Promise<PolicyExportInterface>} a promise that resolves to an PolicyExportInterface object\n */\nexport async function exportPoliciesByPolicySet(\n policySetName: string,\n options: PolicyExportOptions = {\n deps: true,\n prereqs: false,\n useStringArrays: true,\n }\n): Promise<PolicyExportInterface> {\n debugMessage(`PolicyOps.exportPolicies: start`);\n const exportData = createPolicyExportTemplate();\n const errors = [];\n try {\n const policies = await getPoliciesByPolicySet(policySetName);\n for (const policyData of policies) {\n exportData.policy[policyData._id] = policyData;\n if (options.prereqs) {\n try {\n await exportPolicyPrerequisites(policyData, exportData);\n } catch (error) {\n errors.push(error);\n }\n }\n if (options.deps) {\n try {\n await exportPolicyDependencies(policyData, options, exportData);\n } catch (error) {\n errors.push(error);\n }\n }\n }\n } catch (error) {\n errors.push(error);\n }\n if (errors.length) {\n const errorMessages = errors.map((error) => error.message).join('\\n');\n throw new Error(`Export error:\\n${errorMessages}`);\n }\n debugMessage(`PolicyOps.exportPolicies: end`);\n return exportData;\n}\n\n/**\n * Helper function to import hard dependencies of a policy\n * @param {PolicySkeleton} policyData policy object\n * @param {PolicyExportInterface} exportData export data\n */\nasync function importPolicyPrerequisites(\n policyData: PolicySkeleton,\n exportData: PolicyExportInterface\n) {\n debugMessage(\n `PolicyOps.importPolicyHardDependencies: start [policy=${policyData._id}]`\n );\n const errors = [];\n try {\n // resource type\n if (exportData.resourcetype[policyData.resourceTypeUuid]) {\n try {\n debugMessage(`Importing resource type ${policyData.resourceTypeUuid}`);\n await createResourceType(\n exportData.resourcetype[policyData.resourceTypeUuid]\n );\n } catch (error) {\n if (error.response?.status === 409)\n await updateResourceType(\n policyData.resourceTypeUuid,\n exportData.resourcetype[policyData.resourceTypeUuid]\n );\n else throw error;\n }\n }\n // policy set\n if (exportData.policyset[policyData.applicationName]) {\n try {\n debugMessage(`Importing policy set ${policyData.applicationName}`);\n await createPolicySet(exportData.policyset[policyData.applicationName]);\n } catch (error) {\n if (error.response?.status === 409)\n await updatePolicySet(\n exportData.policyset[policyData.applicationName]\n );\n else throw error;\n }\n }\n } catch (error) {\n error.message = `Error importing hard dependencies for policy ${\n policyData._id\n }: ${error.response?.data?.message || error.message}`;\n errors.push(error);\n }\n if (errors.length) {\n const errorMessages = errors\n .map((error) => error.response?.data?.message || error.message)\n .join('\\n');\n throw new Error(`Import hard dependencies error:\\n${errorMessages}`);\n }\n debugMessage(`PolicyOps.importPolicyHardDependencies: end`);\n}\n\n/**\n * Helper function to import soft dependencies of a policy\n * @param {PolicySkeleton} policyData policy object\n * @param {PolicyExportInterface} exportData export data\n */\nasync function importPolicyDependencies(\n policyData: PolicySkeleton,\n exportData: PolicyExportInterface\n) {\n debugMessage(\n `PolicyOps.importPolicySoftDependencies: start [policy=${policyData._id}]`\n );\n const errors = [];\n try {\n // scripts\n const scriptUuids = findScriptUuids(policyData.condition);\n for (const scriptUuid of scriptUuids) {\n try {\n const scriptData = exportData.script[scriptUuid];\n debugMessage(`Importing script ${scriptUuid}`);\n await putScript(scriptUuid, scriptData);\n } catch (error) {\n debugMessage(error.response?.data);\n error.message = `Error importing script ${scriptUuid} for policy ${\n policyData._id\n }: ${error.response?.data?.message || error.message}`;\n errors.push(error);\n }\n }\n } catch (error) {\n error.message = `Error importing soft dependencies for policy ${\n policyData._id\n }: ${error.response?.data?.message || error.message}`;\n errors.push(error);\n }\n if (errors.length) {\n const errorMessages = errors\n .map((error) => error.response?.data?.message || error.message)\n .join('\\n');\n throw new Error(`Import soft dependencies error:\\n${errorMessages}`);\n }\n debugMessage(`PolicyOps.importPolicySoftDependencies: end`);\n}\n\n/**\n * Import policy by id\n * @param {string} policyId policy id\n * @param {PolicyExportInterface} importData import data\n * @param {PolicyImportOptions} options import options\n * @returns {Promise<PolicySkeleton>} imported policy object\n */\nexport async function importPolicy(\n policyId: string,\n importData: PolicyExportInterface,\n options: PolicyImportOptions = { deps: true, prereqs: false }\n): Promise<PolicySkeleton> {\n let response = null;\n const errors = [];\n const imported = [];\n for (const id of Object.keys(importData.policy)) {\n if (id === policyId) {\n try {\n const policyData = importData.policy[id];\n delete policyData._rev;\n if (options.policySetName) {\n policyData.applicationName = options.policySetName;\n }\n if (options.prereqs) {\n try {\n await importPolicyPrerequisites(policyData, importData);\n } catch (error) {\n errors.push(error);\n }\n }\n try {\n response = await putPolicy(policyData._id, policyData);\n imported.push(id);\n } catch (error) {\n errors.push(error);\n }\n if (options.deps) {\n try {\n await importPolicyDependencies(policyData, importData);\n } catch (error) {\n errors.push(error);\n }\n }\n } catch (error) {\n errors.push(error);\n }\n }\n }\n if (errors.length) {\n const errorMessages = errors\n .map((error) => error.response?.data?.message || error.message)\n .join('\\n');\n throw new Error(`Import error:\\n${errorMessages}`);\n }\n if (0 === imported.length) {\n throw new Error(`Import error:\\n${policyId} not found in import data!`);\n }\n return response;\n}\n\n/**\n * Import first policy\n * @param {PolicyExportInterface} importData import data\n * @param {PolicyImportOptions} options import options\n * @returns {Promise<PolicySkeleton>} imported policy object\n */\nexport async function importFirstPolicy(\n importData: PolicyExportInterface,\n options: PolicyImportOptions = { deps: true, prereqs: false }\n): Promise<PolicySkeleton> {\n let response = null;\n const errors = [];\n const imported = [];\n for (const id of Object.keys(importData.policy)) {\n try {\n const policyData = importData.policy[id];\n delete policyData._rev;\n if (options.policySetName) {\n policyData.applicationName = options.policySetName;\n }\n if (options.prereqs) {\n try {\n await importPolicyPrerequisites(policyData, importData);\n } catch (error) {\n errors.push(error);\n }\n }\n try {\n response = await putPolicy(policyData._id, policyData);\n imported.push(id);\n } catch (error) {\n errors.push(error);\n }\n if (options.deps) {\n try {\n await importPolicyDependencies(policyData, importData);\n } catch (error) {\n errors.push(error);\n }\n }\n } catch (error) {\n errors.push(error);\n }\n break;\n }\n if (errors.length) {\n const errorMessages = errors\n .map((error) => error.response?.data?.message || error.message)\n .join('\\n');\n throw new Error(`Import error:\\n${errorMessages}`);\n }\n if (0 === imported.length) {\n throw new Error(`Import error:\\nNo policy found in import data!`);\n }\n return response;\n}\n\n/**\n * Import policies\n * @param {PolicyExportInterface} importData import data\n * @param {PolicyImportOptions} options import options\n * @returns {Promise<PolicySkeleton[]>} array of imported policy objects\n */\nexport async function importPolicies(\n importData: PolicyExportInterface,\n options: PolicyImportOptions = { deps: true, prereqs: false }\n): Promise<PolicySkeleton[]> {\n const response = [];\n const errors = [];\n const imported = [];\n for (const id of Object.keys(importData.policy)) {\n try {\n const policyData = importData.policy[id];\n delete policyData._rev;\n if (options.policySetName) {\n policyData.applicationName = options.policySetName;\n }\n if (options.prereqs) {\n try {\n await importPolicyPrerequisites(policyData, importData);\n } catch (error) {\n errors.push(error);\n }\n }\n try {\n response.push(await putPolicy(policyData._id, policyData));\n imported.push(id);\n } catch (error) {\n errors.push(error);\n }\n if (options.deps) {\n try {\n await importPolicyDependencies(policyData, importData);\n } catch (error) {\n errors.push(error);\n }\n }\n } catch (error) {\n errors.push(error);\n }\n }\n if (errors.length) {\n const errorMessages = errors\n .map((error) => error.response?.data?.message || error.message)\n .join('\\n');\n throw new Error(`Import error:\\n${errorMessages}`);\n }\n if (0 === imported.length) {\n throw new Error(`Import error:\\nNo policies found in import data!`);\n }\n return response;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAOA,IAAAC,UAAA,GAAAD,OAAA;AACA,IAAAE,kBAAA,GAAAF,OAAA;AAEA,IAAAG,SAAA,GAAAH,OAAA;AASA,IAAAI,QAAA,GAAAJ,OAAA;AACA,IAAAK,iBAAA,GAAAL,OAAA;AACA,IAAAM,aAAA,GAAAN,OAAA;AACA,IAAAO,gBAAA,GAAAP,OAAA;AAA2E,SAAAQ,mBAAAC,GAAA,EAAAC,OAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,MAAA,EAAAC,GAAA,EAAAC,GAAA,cAAAC,IAAA,GAAAP,GAAA,CAAAK,GAAA,EAAAC,GAAA,OAAAE,KAAA,GAAAD,IAAA,CAAAC,KAAA,WAAAC,KAAA,IAAAP,MAAA,CAAAO,KAAA,iBAAAF,IAAA,CAAAG,IAAA,IAAAT,OAAA,CAAAO,KAAA,YAAAG,OAAA,CAAAV,OAAA,CAAAO,KAAA,EAAAI,IAAA,CAAAT,KAAA,EAAAC,MAAA;AAAA,SAAAS,kBAAAC,EAAA,6BAAAC,IAAA,SAAAC,IAAA,GAAAC,SAAA,aAAAN,OAAA,WAAAV,OAAA,EAAAC,MAAA,QAAAF,GAAA,GAAAc,EAAA,CAAAI,KAAA,CAAAH,IAAA,EAAAC,IAAA,YAAAb,MAAAK,KAAA,IAAAT,kBAAA,CAAAC,GAAA,EAAAC,OAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,MAAA,UAAAI,KAAA,cAAAJ,OAAAe,GAAA,IAAApB,kBAAA,CAAAC,GAAA,EAAAC,OAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,MAAA,WAAAe,GAAA,KAAAhB,KAAA,CAAAiB,SAAA;AAU3E;AACA;AACA;;AAgBA;AACA;AACA;;AAgBA;AACA;AACA;AACA;AACA,SAASC,0BAA0BA,CAAA,EAA0B;EAC3D,OAAO;IACLC,IAAI,EAAE,IAAAC,8BAAW,EAAC,CAAC;IACnBC,MAAM,EAAE,CAAC,CAAC;IACVC,MAAM,EAAE,CAAC,CAAC;IACVC,YAAY,EAAE,CAAC,CAAC;IAChBC,SAAS,EAAE,CAAC;EACd,CAAC;AACH;;AAEA;AACA;AACA;AACA;AAHA,SAIsBC,WAAWA,CAAA;EAAA,OAAAC,aAAA,CAAAX,KAAA,OAAAD,SAAA;AAAA;AAKjC;AACA;AACA;AACA;AACA;AAJA,SAAAY,cAAA;EAAAA,aAAA,GAAAhB,iBAAA,CALO,aAAwD;IAC7D,IAAM;MAAEiB;IAAO,CAAC,SAAS,IAAAC,wBAAY,EAAC,CAAC;IACvC,OAAOD,MAAM;EACf,CAAC;EAAA,OAAAD,aAAA,CAAAX,KAAA,OAAAD,SAAA;AAAA;AAAA,SAOqBe,sBAAsBA,CAAAC,EAAA;EAAA,OAAAC,wBAAA,CAAAhB,KAAA,OAAAD,SAAA;AAAA;AAO5C;AACA;AACA;AACA;AACA;AAJA,SAAAiB,yBAAA;EAAAA,wBAAA,GAAArB,iBAAA,CAPO,WACLsB,WAAmB,EACQ;IAC3B,IAAMC,IAAI,SAAS,IAAAC,mCAAuB,EAACF,WAAW,CAAC;IACvD,OAAOC,IAAI,CAACN,MAAM;EACpB,CAAC;EAAA,OAAAI,wBAAA,CAAAhB,KAAA,OAAAD,SAAA;AAAA;AAAA,SAOqBqB,SAASA,CAAAC,GAAA;EAAA,OAAAC,WAAA,CAAAtB,KAAA,OAAAD,SAAA;AAAA;AAI/B;AACA;AACA;AACA;AACA;AACA;AALA,SAAAuB,YAAA;EAAAA,WAAA,GAAA3B,iBAAA,CAJO,WAAyB4B,QAAgB,EAA2B;IACzE,OAAO,IAAAC,sBAAU,EAACD,QAAQ,CAAC;EAC7B,CAAC;EAAA,OAAAD,WAAA,CAAAtB,KAAA,OAAAD,SAAA;AAAA;AAAA,SAQqB0B,SAASA,CAAAC,GAAA,EAAAC,GAAA;EAAA,OAAAC,WAAA,CAAA5B,KAAA,OAAAD,SAAA;AAAA;AAO/B;AACA;AACA;AACA;AACA;AAJA,SAAA6B,YAAA;EAAAA,WAAA,GAAAjC,iBAAA,CAPO,WACL4B,QAAgB,EAChBM,UAA0B,EACD;IACzB,OAAO,IAAAC,sBAAU,EAACP,QAAQ,EAAEM,UAAU,CAAC;EACzC,CAAC;EAAA,OAAAD,WAAA,CAAA5B,KAAA,OAAAD,SAAA;AAAA;AAAA,SAOqBgC,YAAYA,CAAAC,GAAA;EAAA,OAAAC,cAAA,CAAAjC,KAAA,OAAAD,SAAA;AAAA;AAIlC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA3CA,SAAAkC,eAAA;EAAAA,cAAA,GAAAtC,iBAAA,CAJO,WAA4B4B,QAAgB,EAA2B;IAC5E,OAAO,IAAAW,yBAAa,EAACX,QAAQ,CAAC;EAChC,CAAC;EAAA,OAAAU,cAAA,CAAAjC,KAAA,OAAAD,SAAA;AAAA;AA8CM,SAASoC,eAAeA,CAACC,SAA0B,EAAY;EACpE,IAAIC,WAAqB,GAAG,EAAE;EAC9B,IAAI,CAACD,SAAS,EAAE,OAAOC,WAAW;EAClC,IACED,SAAS,CAACE,IAAI,KAAKC,6BAAmB,CAACC,GAAG,CAACC,QAAQ,CAAC,CAAC,IACrDL,SAAS,CAACE,IAAI,KAAKC,6BAAmB,CAACG,EAAE,CAACD,QAAQ,CAAC,CAAC,IACpDL,SAAS,CAACE,IAAI,KAAKC,6BAAmB,CAACI,GAAG,CAACF,QAAQ,CAAC,CAAC,EACrD;IACA;IACA,IAAIL,SAAS,CAACA,SAAS,EAAE;MACvBC,WAAW,CAACO,IAAI,CAAC,GAAGT,eAAe,CAACC,SAAS,CAACA,SAAS,CAAC,CAAC;IAC3D;IACA;IACA,IAAIA,SAAS,CAACS,UAAU,EAAE;MACxB,KAAK,IAAMC,IAAI,IAAIV,SAAS,CAACS,UAAU,EAAE;QACvCR,WAAW,CAACO,IAAI,CAAC,GAAGT,eAAe,CAACW,IAAI,CAAC,CAAC;MAC5C;IACF;EACF,CAAC,MAAM,IAAIV,SAAS,CAACE,IAAI,KAAKC,6BAAmB,CAACQ,MAAM,CAACN,QAAQ,CAAC,CAAC,EAAE;IACnEJ,WAAW,CAACO,IAAI,CAACR,SAAS,CAACY,QAAkB,CAAC;EAChD;EACA;EACAX,WAAW,GAAG,CAAC,GAAG,IAAIY,GAAG,CAACZ,WAAW,CAAC,CAAC;EACvC,OAAOA,WAAW;AACpB;;AAEA;AACA;AACA;AACA;AACA;AAJA,SAKsBa,UAAUA,CAAAC,GAAA;EAAA,OAAAC,WAAA,CAAApD,KAAA,OAAAD,SAAA;AAAA;AA8BhC;AACA;AACA;AACA;AACA;AACA;AALA,SAAAqD,YAAA;EAAAA,WAAA,GAAAzD,iBAAA,CA9BO,WACLkC,UAA0B,EACC;IAC3B,IAAAwB,qBAAY,yCAAAC,MAAA,CAAwCzB,UAAU,CAAC,MAAM,CAAC,MAAG,CAAC;IAC1E,IAAM0B,MAAM,GAAG,EAAE;IACjB,IAAMC,OAAO,GAAG,EAAE;IAClB,IAAI;MACF,IAAMnB,WAAW,GAAGF,eAAe,CAACN,UAAU,CAACO,SAAS,CAAC;MACzD,IAAAiB,qBAAY,oBAAAC,MAAA,CAAmBjB,WAAW,CAAE,CAAC;MAC7C,KAAK,IAAMoB,UAAU,IAAIpB,WAAW,EAAE;QACpC,IAAI;UACF,IAAM/B,MAAM,SAAS,IAAAoD,oBAAS,EAACD,UAAU,CAAC;UAC1CD,OAAO,CAACZ,IAAI,CAACtC,MAAM,CAAC;QACtB,CAAC,CAAC,OAAOf,KAAK,EAAE;UACdA,KAAK,CAACoE,OAAO,8BAAAL,MAAA,CAA8BG,UAAU,4BAAAH,MAAA,CAAyBzB,UAAU,CAAC,MAAM,CAAC,QAAAyB,MAAA,CAAK/D,KAAK,CAACoE,OAAO,CAAE;UACpHJ,MAAM,CAACX,IAAI,CAACrD,KAAK,CAAC;QACpB;MACF;IACF,CAAC,CAAC,OAAOA,KAAK,EAAE;MACdA,KAAK,CAACoE,OAAO,sCAAAL,MAAA,CAAsCzB,UAAU,CAAC,MAAM,CAAC,QAAAyB,MAAA,CAAK/D,KAAK,CAACoE,OAAO,CAAE;MACzFJ,MAAM,CAACX,IAAI,CAACrD,KAAK,CAAC;IACpB;IACA,IAAIgE,MAAM,CAACK,MAAM,EAAE;MACjB,IAAMC,aAAa,GAAGN,MAAM,CAACO,GAAG,CAAEvE,KAAK,IAAKA,KAAK,CAACoE,OAAO,CAAC,CAACI,IAAI,CAAC,IAAI,CAAC;MACrE,MAAM,IAAIC,KAAK,mBAAAV,MAAA,CAAmBO,aAAa,CAAE,CAAC;IACpD;IACA,IAAAR,qBAAY,gCAA+B,CAAC;IAC5C,OAAOG,OAAO;EAChB,CAAC;EAAA,OAAAJ,WAAA,CAAApD,KAAA,OAAAD,SAAA;AAAA;AAAA,SAQckE,yBAAyBA,CAAAC,GAAA,EAAAC,GAAA;EAAA,OAAAC,0BAAA,CAAApE,KAAA,OAAAD,SAAA;AAAA;AAoBxC;AACA;AACA;AACA;AACA;AACA;AALA,SAAAqE,2BAAA;EAAAA,0BAAA,GAAAzE,iBAAA,CApBA,WACEkC,UAA0B,EAC1BwC,UAAiC,EACjC;IACA,IAAAhB,qBAAY,wDAAAC,MAAA,CAC4CzB,UAAU,CAAC,MAAM,CAAC,MAC1E,CAAC;IACD;IACA,IAAIA,UAAU,CAACyC,gBAAgB,EAAE;MAC/B,IAAMC,YAAY,SAAS,IAAAC,iCAAe,EAAC3C,UAAU,CAACyC,gBAAgB,CAAC;MACvED,UAAU,CAAC7D,YAAY,CAACqB,UAAU,CAACyC,gBAAgB,CAAC,GAAGC,YAAY;IACrE;IACA;IACA,IAAI1C,UAAU,CAAC4C,eAAe,EAAE;MAC9B,IAAMC,SAAS,SAAS,IAAAC,0BAAY,EAAC9C,UAAU,CAAC4C,eAAe,CAAC;MAChEJ,UAAU,CAAC5D,SAAS,CAACoB,UAAU,CAAC4C,eAAe,CAAC,GAAGC,SAAS;IAC9D;IACA,IAAArB,qBAAY,+CAA8C,CAAC;EAC7D,CAAC;EAAA,OAAAe,0BAAA,CAAApE,KAAA,OAAAD,SAAA;AAAA;AAAA,SAQc6E,wBAAwBA,CAAAC,GAAA,EAAAC,IAAA,EAAAC,IAAA;EAAA,OAAAC,yBAAA,CAAAhF,KAAA,OAAAD,SAAA;AAAA;AAmBvC;AACA;AACA;AACA;AACA;AAJA,SAAAiF,0BAAA;EAAAA,yBAAA,GAAArF,iBAAA,CAnBA,WACEkC,UAA0B,EAC1BoD,OAA4B,EAC5BZ,UAAiC,EACjC;IACA,IAAAhB,qBAAY,uDAAAC,MAAA,CAC2CzB,UAAU,CAAC,MAAM,CAAC,MACzE,CAAC;IACD;IACA,IAAM2B,OAAO,SAASN,UAAU,CAACrB,UAAU,CAAC;IAC5C,KAAK,IAAMqD,UAAU,IAAI1B,OAAO,EAAE;MAChC,IAAIyB,OAAO,CAACE,eAAe,EAAE;QAC3BD,UAAU,CAAC5E,MAAM,GAAG,IAAA8E,2CAAwB,EAACF,UAAU,CAAC5E,MAAM,CAAC;MACjE;MACA+D,UAAU,CAAC/D,MAAM,CAAC4E,UAAU,CAACG,GAAG,CAAC,GAAGH,UAAU;IAChD;IACA,IAAA7B,qBAAY,iDAAgD,CAAC;EAC/D,CAAC;EAAA,OAAA2B,yBAAA,CAAAhF,KAAA,OAAAD,SAAA;AAAA;AAAA,SAOqBuF,YAAYA,CAAAC,IAAA;EAAA,OAAAC,aAAA,CAAAxF,KAAA,OAAAD,SAAA;AAAA;AAsBlC;AACA;AACA;AACA;AACA;AAJA,SAAAyF,cAAA;EAAAA,aAAA,GAAA7F,iBAAA,CAtBO,WACL4B,QAAgB,EAMgB;IAAA,IALhC0D,OAA4B,GAAAlF,SAAA,CAAA6D,MAAA,QAAA7D,SAAA,QAAAG,SAAA,GAAAH,SAAA,MAAG;MAC7B0F,IAAI,EAAE,IAAI;MACVC,OAAO,EAAE,KAAK;MACdP,eAAe,EAAE;IACnB,CAAC;IAED,IAAA9B,qBAAY,iCAAgC,CAAC;IAC7C,IAAMxB,UAAU,SAAST,SAAS,CAACG,QAAQ,CAAC;IAC5C,IAAM8C,UAAU,GAAGlE,0BAA0B,CAAC,CAAC;IAC/CkE,UAAU,CAAC9D,MAAM,CAACsB,UAAU,CAACwD,GAAG,CAAC,GAAGxD,UAAU;IAC9C,IAAIoD,OAAO,CAACS,OAAO,EAAE;MACnB,MAAMzB,yBAAyB,CAACpC,UAAU,EAAEwC,UAAU,CAAC;IACzD;IACA,IAAIY,OAAO,CAACQ,IAAI,EAAE;MAChB,MAAMb,wBAAwB,CAAC/C,UAAU,EAAEoD,OAAO,EAAEZ,UAAU,CAAC;IACjE;IACA,IAAAhB,qBAAY,+BAA8B,CAAC;IAC3C,OAAOgB,UAAU;EACnB,CAAC;EAAA,OAAAmB,aAAA,CAAAxF,KAAA,OAAAD,SAAA;AAAA;AAAA,SAOqB4F,cAAcA,CAAA;EAAA,OAAAC,eAAA,CAAA5F,KAAA,OAAAD,SAAA;AAAA;AAwCpC;AACA;AACA;AACA;AACA;AACA;AALA,SAAA6F,gBAAA;EAAAA,eAAA,GAAAjG,iBAAA,CAxCO,aAM2B;IAAA,IALhCsF,OAA4B,GAAAlF,SAAA,CAAA6D,MAAA,QAAA7D,SAAA,QAAAG,SAAA,GAAAH,SAAA,MAAG;MAC7B0F,IAAI,EAAE,IAAI;MACVC,OAAO,EAAE,KAAK;MACdP,eAAe,EAAE;IACnB,CAAC;IAED,IAAA9B,qBAAY,mCAAkC,CAAC;IAC/C,IAAMgB,UAAU,GAAGlE,0BAA0B,CAAC,CAAC;IAC/C,IAAMoD,MAAM,GAAG,EAAE;IACjB,IAAI;MACF,IAAMsC,QAAQ,SAASnF,WAAW,CAAC,CAAC;MACpC,KAAK,IAAMmB,UAAU,IAAIgE,QAAQ,EAAE;QACjCxB,UAAU,CAAC9D,MAAM,CAACsB,UAAU,CAACwD,GAAG,CAAC,GAAGxD,UAAU;QAC9C,IAAIoD,OAAO,CAACS,OAAO,EAAE;UACnB,IAAI;YACF,MAAMzB,yBAAyB,CAACpC,UAAU,EAAEwC,UAAU,CAAC;UACzD,CAAC,CAAC,OAAO9E,KAAK,EAAE;YACdgE,MAAM,CAACX,IAAI,CAACrD,KAAK,CAAC;UACpB;QACF;QACA,IAAI0F,OAAO,CAACQ,IAAI,EAAE;UAChB,IAAI;YACF,MAAMb,wBAAwB,CAAC/C,UAAU,EAAEoD,OAAO,EAAEZ,UAAU,CAAC;UACjE,CAAC,CAAC,OAAO9E,KAAK,EAAE;YACdgE,MAAM,CAACX,IAAI,CAACrD,KAAK,CAAC;UACpB;QACF;MACF;IACF,CAAC,CAAC,OAAOA,KAAK,EAAE;MACdgE,MAAM,CAACX,IAAI,CAACrD,KAAK,CAAC;IACpB;IACA,IAAIgE,MAAM,CAACK,MAAM,EAAE;MACjB,IAAMC,aAAa,GAAGN,MAAM,CAACO,GAAG,CAAEvE,KAAK,IAAKA,KAAK,CAACoE,OAAO,CAAC,CAACI,IAAI,CAAC,IAAI,CAAC;MACrE,MAAM,IAAIC,KAAK,mBAAAV,MAAA,CAAmBO,aAAa,CAAE,CAAC;IACpD;IACA,IAAAR,qBAAY,iCAAgC,CAAC;IAC7C,OAAOgB,UAAU;EACnB,CAAC;EAAA,OAAAuB,eAAA,CAAA5F,KAAA,OAAAD,SAAA;AAAA;AAAA,SAQqB+F,yBAAyBA,CAAAC,IAAA;EAAA,OAAAC,0BAAA,CAAAhG,KAAA,OAAAD,SAAA;AAAA;AAyC/C;AACA;AACA;AACA;AACA;AAJA,SAAAiG,2BAAA;EAAAA,0BAAA,GAAArG,iBAAA,CAzCO,WACLsG,aAAqB,EAMW;IAAA,IALhChB,OAA4B,GAAAlF,SAAA,CAAA6D,MAAA,QAAA7D,SAAA,QAAAG,SAAA,GAAAH,SAAA,MAAG;MAC7B0F,IAAI,EAAE,IAAI;MACVC,OAAO,EAAE,KAAK;MACdP,eAAe,EAAE;IACnB,CAAC;IAED,IAAA9B,qBAAY,mCAAkC,CAAC;IAC/C,IAAMgB,UAAU,GAAGlE,0BAA0B,CAAC,CAAC;IAC/C,IAAMoD,MAAM,GAAG,EAAE;IACjB,IAAI;MACF,IAAMsC,QAAQ,SAAS/E,sBAAsB,CAACmF,aAAa,CAAC;MAC5D,KAAK,IAAMpE,UAAU,IAAIgE,QAAQ,EAAE;QACjCxB,UAAU,CAAC9D,MAAM,CAACsB,UAAU,CAACwD,GAAG,CAAC,GAAGxD,UAAU;QAC9C,IAAIoD,OAAO,CAACS,OAAO,EAAE;UACnB,IAAI;YACF,MAAMzB,yBAAyB,CAACpC,UAAU,EAAEwC,UAAU,CAAC;UACzD,CAAC,CAAC,OAAO9E,KAAK,EAAE;YACdgE,MAAM,CAACX,IAAI,CAACrD,KAAK,CAAC;UACpB;QACF;QACA,IAAI0F,OAAO,CAACQ,IAAI,EAAE;UAChB,IAAI;YACF,MAAMb,wBAAwB,CAAC/C,UAAU,EAAEoD,OAAO,EAAEZ,UAAU,CAAC;UACjE,CAAC,CAAC,OAAO9E,KAAK,EAAE;YACdgE,MAAM,CAACX,IAAI,CAACrD,KAAK,CAAC;UACpB;QACF;MACF;IACF,CAAC,CAAC,OAAOA,KAAK,EAAE;MACdgE,MAAM,CAACX,IAAI,CAACrD,KAAK,CAAC;IACpB;IACA,IAAIgE,MAAM,CAACK,MAAM,EAAE;MACjB,IAAMC,aAAa,GAAGN,MAAM,CAACO,GAAG,CAAEvE,KAAK,IAAKA,KAAK,CAACoE,OAAO,CAAC,CAACI,IAAI,CAAC,IAAI,CAAC;MACrE,MAAM,IAAIC,KAAK,mBAAAV,MAAA,CAAmBO,aAAa,CAAE,CAAC;IACpD;IACA,IAAAR,qBAAY,iCAAgC,CAAC;IAC7C,OAAOgB,UAAU;EACnB,CAAC;EAAA,OAAA2B,0BAAA,CAAAhG,KAAA,OAAAD,SAAA;AAAA;AAAA,SAOcmG,yBAAyBA,CAAAC,IAAA,EAAAC,IAAA;EAAA,OAAAC,0BAAA,CAAArG,KAAA,OAAAD,SAAA;AAAA;AAqDxC;AACA;AACA;AACA;AACA;AAJA,SAAAsG,2BAAA;EAAAA,0BAAA,GAAA1G,iBAAA,CArDA,WACEkC,UAA0B,EAC1BwC,UAAiC,EACjC;IACA,IAAAhB,qBAAY,2DAAAC,MAAA,CAC+CzB,UAAU,CAACwD,GAAG,MACzE,CAAC;IACD,IAAM9B,MAAM,GAAG,EAAE;IACjB,IAAI;MACF;MACA,IAAIc,UAAU,CAAC7D,YAAY,CAACqB,UAAU,CAACyC,gBAAgB,CAAC,EAAE;QACxD,IAAI;UACF,IAAAjB,qBAAY,6BAAAC,MAAA,CAA4BzB,UAAU,CAACyC,gBAAgB,CAAE,CAAC;UACtE,MAAM,IAAAgC,mCAAkB,EACtBjC,UAAU,CAAC7D,YAAY,CAACqB,UAAU,CAACyC,gBAAgB,CACrD,CAAC;QACH,CAAC,CAAC,OAAO/E,KAAK,EAAE;UAAA,IAAAgH,eAAA;UACd,IAAI,EAAAA,eAAA,GAAAhH,KAAK,CAACiH,QAAQ,cAAAD,eAAA,uBAAdA,eAAA,CAAgBE,MAAM,MAAK,GAAG,EAChC,MAAM,IAAAC,mCAAkB,EACtB7E,UAAU,CAACyC,gBAAgB,EAC3BD,UAAU,CAAC7D,YAAY,CAACqB,UAAU,CAACyC,gBAAgB,CACrD,CAAC,CAAC,KACC,MAAM/E,KAAK;QAClB;MACF;MACA;MACA,IAAI8E,UAAU,CAAC5D,SAAS,CAACoB,UAAU,CAAC4C,eAAe,CAAC,EAAE;QACpD,IAAI;UACF,IAAApB,qBAAY,0BAAAC,MAAA,CAAyBzB,UAAU,CAAC4C,eAAe,CAAE,CAAC;UAClE,MAAM,IAAAkC,6BAAe,EAACtC,UAAU,CAAC5D,SAAS,CAACoB,UAAU,CAAC4C,eAAe,CAAC,CAAC;QACzE,CAAC,CAAC,OAAOlF,KAAK,EAAE;UAAA,IAAAqH,gBAAA;UACd,IAAI,EAAAA,gBAAA,GAAArH,KAAK,CAACiH,QAAQ,cAAAI,gBAAA,uBAAdA,gBAAA,CAAgBH,MAAM,MAAK,GAAG,EAChC,MAAM,IAAAI,6BAAe,EACnBxC,UAAU,CAAC5D,SAAS,CAACoB,UAAU,CAAC4C,eAAe,CACjD,CAAC,CAAC,KACC,MAAMlF,KAAK;QAClB;MACF;IACF,CAAC,CAAC,OAAOA,KAAK,EAAE;MAAA,IAAAuH,gBAAA,EAAAC,qBAAA;MACdxH,KAAK,CAACoE,OAAO,mDAAAL,MAAA,CACXzB,UAAU,CAACwD,GAAG,QAAA/B,MAAA,CACX,EAAAwD,gBAAA,GAAAvH,KAAK,CAACiH,QAAQ,cAAAM,gBAAA,wBAAAC,qBAAA,GAAdD,gBAAA,CAAgB5F,IAAI,cAAA6F,qBAAA,uBAApBA,qBAAA,CAAsBpD,OAAO,KAAIpE,KAAK,CAACoE,OAAO,CAAE;MACrDJ,MAAM,CAACX,IAAI,CAACrD,KAAK,CAAC;IACpB;IACA,IAAIgE,MAAM,CAACK,MAAM,EAAE;MACjB,IAAMC,aAAa,GAAGN,MAAM,CACzBO,GAAG,CAAEvE,KAAK;QAAA,IAAAyH,gBAAA,EAAAC,qBAAA;QAAA,OAAK,EAAAD,gBAAA,GAAAzH,KAAK,CAACiH,QAAQ,cAAAQ,gBAAA,wBAAAC,qBAAA,GAAdD,gBAAA,CAAgB9F,IAAI,cAAA+F,qBAAA,uBAApBA,qBAAA,CAAsBtD,OAAO,KAAIpE,KAAK,CAACoE,OAAO;MAAA,EAAC,CAC9DI,IAAI,CAAC,IAAI,CAAC;MACb,MAAM,IAAIC,KAAK,qCAAAV,MAAA,CAAqCO,aAAa,CAAE,CAAC;IACtE;IACA,IAAAR,qBAAY,+CAA8C,CAAC;EAC7D,CAAC;EAAA,OAAAgD,0BAAA,CAAArG,KAAA,OAAAD,SAAA;AAAA;AAAA,SAOcmH,wBAAwBA,CAAAC,IAAA,EAAAC,IAAA;EAAA,OAAAC,yBAAA,CAAArH,KAAA,OAAAD,SAAA;AAAA;AAuCvC;AACA;AACA;AACA;AACA;AACA;AACA;AANA,SAAAsH,0BAAA;EAAAA,yBAAA,GAAA1H,iBAAA,CAvCA,WACEkC,UAA0B,EAC1BwC,UAAiC,EACjC;IACA,IAAAhB,qBAAY,2DAAAC,MAAA,CAC+CzB,UAAU,CAACwD,GAAG,MACzE,CAAC;IACD,IAAM9B,MAAM,GAAG,EAAE;IACjB,IAAI;MACF;MACA,IAAMlB,WAAW,GAAGF,eAAe,CAACN,UAAU,CAACO,SAAS,CAAC;MACzD,KAAK,IAAMqB,UAAU,IAAIpB,WAAW,EAAE;QACpC,IAAI;UACF,IAAM6C,UAAU,GAAGb,UAAU,CAAC/D,MAAM,CAACmD,UAAU,CAAC;UAChD,IAAAJ,qBAAY,sBAAAC,MAAA,CAAqBG,UAAU,CAAE,CAAC;UAC9C,MAAM,IAAA6D,oBAAS,EAAC7D,UAAU,EAAEyB,UAAU,CAAC;QACzC,CAAC,CAAC,OAAO3F,KAAK,EAAE;UAAA,IAAAgI,gBAAA,EAAAC,gBAAA,EAAAC,qBAAA;UACd,IAAApE,qBAAY,GAAAkE,gBAAA,GAAChI,KAAK,CAACiH,QAAQ,cAAAe,gBAAA,uBAAdA,gBAAA,CAAgBrG,IAAI,CAAC;UAClC3B,KAAK,CAACoE,OAAO,6BAAAL,MAAA,CAA6BG,UAAU,kBAAAH,MAAA,CAClDzB,UAAU,CAACwD,GAAG,QAAA/B,MAAA,CACX,EAAAkE,gBAAA,GAAAjI,KAAK,CAACiH,QAAQ,cAAAgB,gBAAA,wBAAAC,qBAAA,GAAdD,gBAAA,CAAgBtG,IAAI,cAAAuG,qBAAA,uBAApBA,qBAAA,CAAsB9D,OAAO,KAAIpE,KAAK,CAACoE,OAAO,CAAE;UACrDJ,MAAM,CAACX,IAAI,CAACrD,KAAK,CAAC;QACpB;MACF;IACF,CAAC,CAAC,OAAOA,KAAK,EAAE;MAAA,IAAAmI,gBAAA,EAAAC,qBAAA;MACdpI,KAAK,CAACoE,OAAO,mDAAAL,MAAA,CACXzB,UAAU,CAACwD,GAAG,QAAA/B,MAAA,CACX,EAAAoE,gBAAA,GAAAnI,KAAK,CAACiH,QAAQ,cAAAkB,gBAAA,wBAAAC,qBAAA,GAAdD,gBAAA,CAAgBxG,IAAI,cAAAyG,qBAAA,uBAApBA,qBAAA,CAAsBhE,OAAO,KAAIpE,KAAK,CAACoE,OAAO,CAAE;MACrDJ,MAAM,CAACX,IAAI,CAACrD,KAAK,CAAC;IACpB;IACA,IAAIgE,MAAM,CAACK,MAAM,EAAE;MACjB,IAAMC,aAAa,GAAGN,MAAM,CACzBO,GAAG,CAAEvE,KAAK;QAAA,IAAAqI,gBAAA,EAAAC,qBAAA;QAAA,OAAK,EAAAD,gBAAA,GAAArI,KAAK,CAACiH,QAAQ,cAAAoB,gBAAA,wBAAAC,qBAAA,GAAdD,gBAAA,CAAgB1G,IAAI,cAAA2G,qBAAA,uBAApBA,qBAAA,CAAsBlE,OAAO,KAAIpE,KAAK,CAACoE,OAAO;MAAA,EAAC,CAC9DI,IAAI,CAAC,IAAI,CAAC;MACb,MAAM,IAAIC,KAAK,qCAAAV,MAAA,CAAqCO,aAAa,CAAE,CAAC;IACtE;IACA,IAAAR,qBAAY,+CAA8C,CAAC;EAC7D,CAAC;EAAA,OAAAgE,yBAAA,CAAArH,KAAA,OAAAD,SAAA;AAAA;AAAA,SASqB+H,YAAYA,CAAAC,IAAA,EAAAC,IAAA;EAAA,OAAAC,aAAA,CAAAjI,KAAA,OAAAD,SAAA;AAAA;AAqDlC;AACA;AACA;AACA;AACA;AACA;AALA,SAAAkI,cAAA;EAAAA,aAAA,GAAAtI,iBAAA,CArDO,WACL4B,QAAgB,EAChB2G,UAAiC,EAER;IAAA,IADzBjD,OAA4B,GAAAlF,SAAA,CAAA6D,MAAA,QAAA7D,SAAA,QAAAG,SAAA,GAAAH,SAAA,MAAG;MAAE0F,IAAI,EAAE,IAAI;MAAEC,OAAO,EAAE;IAAM,CAAC;IAE7D,IAAIc,QAAQ,GAAG,IAAI;IACnB,IAAMjD,MAAM,GAAG,EAAE;IACjB,IAAM4E,QAAQ,GAAG,EAAE;IACnB,KAAK,IAAMC,EAAE,IAAIC,MAAM,CAACC,IAAI,CAACJ,UAAU,CAAC3H,MAAM,CAAC,EAAE;MAC/C,IAAI6H,EAAE,KAAK7G,QAAQ,EAAE;QACnB,IAAI;UACF,IAAMM,UAAU,GAAGqG,UAAU,CAAC3H,MAAM,CAAC6H,EAAE,CAAC;UACxC,OAAOvG,UAAU,CAAC0G,IAAI;UACtB,IAAItD,OAAO,CAACgB,aAAa,EAAE;YACzBpE,UAAU,CAAC4C,eAAe,GAAGQ,OAAO,CAACgB,aAAa;UACpD;UACA,IAAIhB,OAAO,CAACS,OAAO,EAAE;YACnB,IAAI;cACF,MAAMQ,yBAAyB,CAACrE,UAAU,EAAEqG,UAAU,CAAC;YACzD,CAAC,CAAC,OAAO3I,KAAK,EAAE;cACdgE,MAAM,CAACX,IAAI,CAACrD,KAAK,CAAC;YACpB;UACF;UACA,IAAI;YACFiH,QAAQ,SAAS/E,SAAS,CAACI,UAAU,CAACwD,GAAG,EAAExD,UAAU,CAAC;YACtDsG,QAAQ,CAACvF,IAAI,CAACwF,EAAE,CAAC;UACnB,CAAC,CAAC,OAAO7I,KAAK,EAAE;YACdgE,MAAM,CAACX,IAAI,CAACrD,KAAK,CAAC;UACpB;UACA,IAAI0F,OAAO,CAACQ,IAAI,EAAE;YAChB,IAAI;cACF,MAAMyB,wBAAwB,CAACrF,UAAU,EAAEqG,UAAU,CAAC;YACxD,CAAC,CAAC,OAAO3I,KAAK,EAAE;cACdgE,MAAM,CAACX,IAAI,CAACrD,KAAK,CAAC;YACpB;UACF;QACF,CAAC,CAAC,OAAOA,KAAK,EAAE;UACdgE,MAAM,CAACX,IAAI,CAACrD,KAAK,CAAC;QACpB;MACF;IACF;IACA,IAAIgE,MAAM,CAACK,MAAM,EAAE;MACjB,IAAMC,aAAa,GAAGN,MAAM,CACzBO,GAAG,CAAEvE,KAAK;QAAA,IAAAiJ,gBAAA,EAAAC,qBAAA;QAAA,OAAK,EAAAD,gBAAA,GAAAjJ,KAAK,CAACiH,QAAQ,cAAAgC,gBAAA,wBAAAC,qBAAA,GAAdD,gBAAA,CAAgBtH,IAAI,cAAAuH,qBAAA,uBAApBA,qBAAA,CAAsB9E,OAAO,KAAIpE,KAAK,CAACoE,OAAO;MAAA,EAAC,CAC9DI,IAAI,CAAC,IAAI,CAAC;MACb,MAAM,IAAIC,KAAK,mBAAAV,MAAA,CAAmBO,aAAa,CAAE,CAAC;IACpD;IACA,IAAI,CAAC,KAAKsE,QAAQ,CAACvE,MAAM,EAAE;MACzB,MAAM,IAAII,KAAK,mBAAAV,MAAA,CAAmB/B,QAAQ,+BAA4B,CAAC;IACzE;IACA,OAAOiF,QAAQ;EACjB,CAAC;EAAA,OAAAyB,aAAA,CAAAjI,KAAA,OAAAD,SAAA;AAAA;AAAA,SAQqB2I,iBAAiBA,CAAAC,IAAA;EAAA,OAAAC,kBAAA,CAAA5I,KAAA,OAAAD,SAAA;AAAA;AAmDvC;AACA;AACA;AACA;AACA;AACA;AALA,SAAA6I,mBAAA;EAAAA,kBAAA,GAAAjJ,iBAAA,CAnDO,WACLuI,UAAiC,EAER;IAAA,IADzBjD,OAA4B,GAAAlF,SAAA,CAAA6D,MAAA,QAAA7D,SAAA,QAAAG,SAAA,GAAAH,SAAA,MAAG;MAAE0F,IAAI,EAAE,IAAI;MAAEC,OAAO,EAAE;IAAM,CAAC;IAE7D,IAAIc,QAAQ,GAAG,IAAI;IACnB,IAAMjD,MAAM,GAAG,EAAE;IACjB,IAAM4E,QAAQ,GAAG,EAAE;IACnB,KAAK,IAAMC,EAAE,IAAIC,MAAM,CAACC,IAAI,CAACJ,UAAU,CAAC3H,MAAM,CAAC,EAAE;MAC/C,IAAI;QACF,IAAMsB,UAAU,GAAGqG,UAAU,CAAC3H,MAAM,CAAC6H,EAAE,CAAC;QACxC,OAAOvG,UAAU,CAAC0G,IAAI;QACtB,IAAItD,OAAO,CAACgB,aAAa,EAAE;UACzBpE,UAAU,CAAC4C,eAAe,GAAGQ,OAAO,CAACgB,aAAa;QACpD;QACA,IAAIhB,OAAO,CAACS,OAAO,EAAE;UACnB,IAAI;YACF,MAAMQ,yBAAyB,CAACrE,UAAU,EAAEqG,UAAU,CAAC;UACzD,CAAC,CAAC,OAAO3I,KAAK,EAAE;YACdgE,MAAM,CAACX,IAAI,CAACrD,KAAK,CAAC;UACpB;QACF;QACA,IAAI;UACFiH,QAAQ,SAAS/E,SAAS,CAACI,UAAU,CAACwD,GAAG,EAAExD,UAAU,CAAC;UACtDsG,QAAQ,CAACvF,IAAI,CAACwF,EAAE,CAAC;QACnB,CAAC,CAAC,OAAO7I,KAAK,EAAE;UACdgE,MAAM,CAACX,IAAI,CAACrD,KAAK,CAAC;QACpB;QACA,IAAI0F,OAAO,CAACQ,IAAI,EAAE;UAChB,IAAI;YACF,MAAMyB,wBAAwB,CAACrF,UAAU,EAAEqG,UAAU,CAAC;UACxD,CAAC,CAAC,OAAO3I,KAAK,EAAE;YACdgE,MAAM,CAACX,IAAI,CAACrD,KAAK,CAAC;UACpB;QACF;MACF,CAAC,CAAC,OAAOA,KAAK,EAAE;QACdgE,MAAM,CAACX,IAAI,CAACrD,KAAK,CAAC;MACpB;MACA;IACF;IACA,IAAIgE,MAAM,CAACK,MAAM,EAAE;MACjB,IAAMC,aAAa,GAAGN,MAAM,CACzBO,GAAG,CAAEvE,KAAK;QAAA,IAAAsJ,iBAAA,EAAAC,qBAAA;QAAA,OAAK,EAAAD,iBAAA,GAAAtJ,KAAK,CAACiH,QAAQ,cAAAqC,iBAAA,wBAAAC,qBAAA,GAAdD,iBAAA,CAAgB3H,IAAI,cAAA4H,qBAAA,uBAApBA,qBAAA,CAAsBnF,OAAO,KAAIpE,KAAK,CAACoE,OAAO;MAAA,EAAC,CAC9DI,IAAI,CAAC,IAAI,CAAC;MACb,MAAM,IAAIC,KAAK,mBAAAV,MAAA,CAAmBO,aAAa,CAAE,CAAC;IACpD;IACA,IAAI,CAAC,KAAKsE,QAAQ,CAACvE,MAAM,EAAE;MACzB,MAAM,IAAII,KAAK,iDAAiD,CAAC;IACnE;IACA,OAAOwC,QAAQ;EACjB,CAAC;EAAA,OAAAoC,kBAAA,CAAA5I,KAAA,OAAAD,SAAA;AAAA;AAAA,SAQqBgJ,cAAcA,CAAAC,IAAA;EAAA,OAAAC,eAAA,CAAAjJ,KAAA,OAAAD,SAAA;AAAA;AAAA,SAAAkJ,gBAAA;EAAAA,eAAA,GAAAtJ,iBAAA,CAA7B,WACLuI,UAAiC,EAEN;IAAA,IAD3BjD,OAA4B,GAAAlF,SAAA,CAAA6D,MAAA,QAAA7D,SAAA,QAAAG,SAAA,GAAAH,SAAA,MAAG;MAAE0F,IAAI,EAAE,IAAI;MAAEC,OAAO,EAAE;IAAM,CAAC;IAE7D,IAAMc,QAAQ,GAAG,EAAE;IACnB,IAAMjD,MAAM,GAAG,EAAE;IACjB,IAAM4E,QAAQ,GAAG,EAAE;IACnB,KAAK,IAAMC,EAAE,IAAIC,MAAM,CAACC,IAAI,CAACJ,UAAU,CAAC3H,MAAM,CAAC,EAAE;MAC/C,IAAI;QACF,IAAMsB,UAAU,GAAGqG,UAAU,CAAC3H,MAAM,CAAC6H,EAAE,CAAC;QACxC,OAAOvG,UAAU,CAAC0G,IAAI;QACtB,IAAItD,OAAO,CAACgB,aAAa,EAAE;UACzBpE,UAAU,CAAC4C,eAAe,GAAGQ,OAAO,CAACgB,aAAa;QACpD;QACA,IAAIhB,OAAO,CAACS,OAAO,EAAE;UACnB,IAAI;YACF,MAAMQ,yBAAyB,CAACrE,UAAU,EAAEqG,UAAU,CAAC;UACzD,CAAC,CAAC,OAAO3I,KAAK,EAAE;YACdgE,MAAM,CAACX,IAAI,CAACrD,KAAK,CAAC;UACpB;QACF;QACA,IAAI;UACFiH,QAAQ,CAAC5D,IAAI,OAAOnB,SAAS,CAACI,UAAU,CAACwD,GAAG,EAAExD,UAAU,CAAC,CAAC;UAC1DsG,QAAQ,CAACvF,IAAI,CAACwF,EAAE,CAAC;QACnB,CAAC,CAAC,OAAO7I,KAAK,EAAE;UACdgE,MAAM,CAACX,IAAI,CAACrD,KAAK,CAAC;QACpB;QACA,IAAI0F,OAAO,CAACQ,IAAI,EAAE;UAChB,IAAI;YACF,MAAMyB,wBAAwB,CAACrF,UAAU,EAAEqG,UAAU,CAAC;UACxD,CAAC,CAAC,OAAO3I,KAAK,EAAE;YACdgE,MAAM,CAACX,IAAI,CAACrD,KAAK,CAAC;UACpB;QACF;MACF,CAAC,CAAC,OAAOA,KAAK,EAAE;QACdgE,MAAM,CAACX,IAAI,CAACrD,KAAK,CAAC;MACpB;IACF;IACA,IAAIgE,MAAM,CAACK,MAAM,EAAE;MACjB,IAAMC,aAAa,GAAGN,MAAM,CACzBO,GAAG,CAAEvE,KAAK;QAAA,IAAA2J,iBAAA,EAAAC,qBAAA;QAAA,OAAK,EAAAD,iBAAA,GAAA3J,KAAK,CAACiH,QAAQ,cAAA0C,iBAAA,wBAAAC,qBAAA,GAAdD,iBAAA,CAAgBhI,IAAI,cAAAiI,qBAAA,uBAApBA,qBAAA,CAAsBxF,OAAO,KAAIpE,KAAK,CAACoE,OAAO;MAAA,EAAC,CAC9DI,IAAI,CAAC,IAAI,CAAC;MACb,MAAM,IAAIC,KAAK,mBAAAV,MAAA,CAAmBO,aAAa,CAAE,CAAC;IACpD;IACA,IAAI,CAAC,KAAKsE,QAAQ,CAACvE,MAAM,EAAE;MACzB,MAAM,IAAII,KAAK,mDAAmD,CAAC;IACrE;IACA,OAAOwC,QAAQ;EACjB,CAAC;EAAA,OAAAyC,eAAA,CAAAjJ,KAAA,OAAAD,SAAA;AAAA"}