vcomply-workflow-engine 3.3.2 → 3.3.3

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.
Files changed (43) hide show
  1. package/esm2020/lib/more-option/more-option.component.mjs +23 -33
  2. package/esm2020/lib/workflow/grc-object/grc-object-container/grc-object-container.component.mjs +79 -6
  3. package/esm2020/lib/workflow/shared/components/attributes/attributes-text-box/attributes-text-box.component.mjs +1 -1
  4. package/esm2020/lib/workflow/shared/components/attributes/attributes.component.mjs +1 -1
  5. package/esm2020/lib/workflow/shared/components/edit-mode/edit-mode.component.mjs +32 -10
  6. package/esm2020/lib/workflow/shared/components/grc-category-listing/grc-category-listing.component.mjs +20 -4
  7. package/esm2020/lib/workflow/shared/components/grc-responsibility-listing/grc-responsibility-listing.component.mjs +62 -60
  8. package/esm2020/lib/workflow/shared/components/grc-risk-listing/grc-risk-listing.component.mjs +191 -0
  9. package/esm2020/lib/workflow/shared/components/grc-sub-category-listing/grc-sub-category-listing.component.mjs +77 -11
  10. package/esm2020/lib/workflow/shared/components/list-popup/list-popup.component.mjs +24 -2
  11. package/esm2020/lib/workflow/shared/components/program-responsibility-listing/program-responsibility-listing.component.mjs +393 -0
  12. package/esm2020/lib/workflow/shared/components/risk-category-risk-listing/risk-category-risk-listing.component.mjs +5 -5
  13. package/esm2020/lib/workflow/shared/components/text-field/text-field.component.mjs +29 -24
  14. package/esm2020/lib/workflow/shared/constants/field-text.constant.mjs +3 -1
  15. package/esm2020/lib/workflow/shared/constants/link-responsibility.constant.mjs +19 -0
  16. package/esm2020/lib/workflow/shared/constants/pagination-limits.constant.mjs +6 -0
  17. package/esm2020/lib/workflow/shared/interfaces/add-grc.mjs +1 -1
  18. package/esm2020/lib/workflow/shared/services/grc.service.mjs +83 -1
  19. package/esm2020/lib/workflow-compliance/workflow-compliance.component.mjs +181 -42
  20. package/esm2020/lib/workflow-engine.module.mjs +2 -5
  21. package/esm2020/lib/workflow-grc/workflow-grc.component.mjs +2 -2
  22. package/esm2020/lib/workflow-policy/workflow-policy.component.mjs +2 -2
  23. package/fesm2015/vcomply-workflow-engine.mjs +1140 -142
  24. package/fesm2015/vcomply-workflow-engine.mjs.map +1 -1
  25. package/fesm2020/vcomply-workflow-engine.mjs +1090 -112
  26. package/fesm2020/vcomply-workflow-engine.mjs.map +1 -1
  27. package/lib/workflow/grc-object/grc-object-container/grc-object-container.component.d.ts +8 -1
  28. package/lib/workflow/shared/components/attributes/attributes-text-box/attributes-text-box.component.d.ts +2 -0
  29. package/lib/workflow/shared/components/edit-mode/edit-mode.component.d.ts +2 -1
  30. package/lib/workflow/shared/components/grc-category-listing/grc-category-listing.component.d.ts +5 -1
  31. package/lib/workflow/shared/components/grc-responsibility-listing/grc-responsibility-listing.component.d.ts +11 -9
  32. package/lib/workflow/shared/components/grc-risk-listing/grc-risk-listing.component.d.ts +35 -0
  33. package/lib/workflow/shared/components/grc-sub-category-listing/grc-sub-category-listing.component.d.ts +17 -2
  34. package/lib/workflow/shared/components/program-responsibility-listing/program-responsibility-listing.component.d.ts +76 -0
  35. package/lib/workflow/shared/components/risk-category-risk-listing/risk-category-risk-listing.component.d.ts +2 -2
  36. package/lib/workflow/shared/constants/field-text.constant.d.ts +2 -0
  37. package/lib/workflow/shared/constants/link-responsibility.constant.d.ts +7 -0
  38. package/lib/workflow/shared/constants/pagination-limits.constant.d.ts +5 -0
  39. package/lib/workflow/shared/interfaces/add-grc.d.ts +3 -1
  40. package/lib/workflow/shared/services/grc.service.d.ts +10 -0
  41. package/lib/workflow-compliance/workflow-compliance.component.d.ts +26 -2
  42. package/lib/workflow-engine.module.d.ts +33 -34
  43. package/package.json +1 -1
@@ -11,5 +11,7 @@ export const FIELD_TEXT = {
11
11
  otherGRCObjectsPlaceholder: 'Link other related GRC Objects',
12
12
  grcDescription: 'Add a description for this GRC Object.',
13
13
  riskPlaceholder: 'Link risks with this GRC Object',
14
+ grcProgramResponsibilityTitle: 'Link Responsibilities',
15
+ grcProgramResponsibilityPlaceholder: 'Link Responsibilities with this GRC Object',
14
16
  };
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtdGV4dC5jb25zdGFudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3dvcmtmbG93L3NoYXJlZC9jb25zdGFudHMvZmllbGQtdGV4dC5jb25zdGFudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUc7SUFDeEIsYUFBYSxFQUFFLGlCQUFpQjtJQUNoQyxvQkFBb0IsRUFBRSx1QkFBdUI7SUFDN0MsY0FBYyxFQUFFLGdCQUFnQjtJQUNoQyxvQkFBb0IsRUFBRSxvQ0FBb0M7SUFDMUQsVUFBVSxFQUFFLCtCQUErQjtJQUMzQyxnQkFBZ0IsRUFBRSxvREFBb0Q7SUFDdEUsb0JBQW9CLEVBQUUsWUFBWTtJQUNsQywwQkFBMEIsRUFBRSxpQ0FBaUM7SUFDN0Qsb0JBQW9CLEVBQUUsd0JBQXdCO0lBQzlDLDBCQUEwQixFQUFFLGdDQUFnQztJQUM1RCxjQUFjLEVBQUUsd0NBQXdDO0lBQ3hELGVBQWUsRUFBRSxpQ0FBaUM7Q0FDbkQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBGSUVMRF9URVhUID0ge1xyXG4gIGdyY09iamVjdE5hbWU6ICdHUkMgT2JqZWN0IE5hbWUnLFxyXG4gIGdyY09iamVjdFBsYWNlaG9sZGVyOiAnQWRkIGEgR1JDIG9iamVjdCBuYW1lJyxcclxuICBncmNPd25lcnNUaXRsZTogJ1NwZWNpZnkgT3duZXJzJyxcclxuICBncmNPd25lcnNQbGFjZWhvbGRlcjogJ1NlbGVjdCBhIE93bmVyIGZvciB0aGlzIEdSQyBPYmplY3QnLFxyXG4gIGdyY1JDVGl0bGU6ICdMaW5rIFJlc3BvbnNpYmlsaXR5IENlbnRlcihzKScsXHJcbiAgZ3JjUkNQbGFjZWhvbGRlcjogJ0xpbmsgUmVzcG9uc2liaWxpdHkgQ2VudGVyKHMpIHdpdGggdGhpcyBHUkMgT2JqZWN0JyxcclxuICBncmNSaXNrQ2F0ZWdvcnlUaXRsZTogJ0xpbmsgUmlza3MnLFxyXG4gIGdyY1Jpc2tDYXRlZ29yeVBsYWNlaG9sZGVyOiAnTGluayByaXNrcyB3aXRoIHRoaXMgR1JDIE9iamVjdCcsXHJcbiAgb3RoZXJHUkNPYmplY3RzVGl0bGU6ICdMaW5rIE90aGVyIEdSQyBPYmplY3RzJyxcclxuICBvdGhlckdSQ09iamVjdHNQbGFjZWhvbGRlcjogJ0xpbmsgb3RoZXIgcmVsYXRlZCBHUkMgT2JqZWN0cycsXHJcbiAgZ3JjRGVzY3JpcHRpb246ICdBZGQgYSBkZXNjcmlwdGlvbiBmb3IgdGhpcyBHUkMgT2JqZWN0LicsXHJcbiAgcmlza1BsYWNlaG9sZGVyOiAnTGluayByaXNrcyB3aXRoIHRoaXMgR1JDIE9iamVjdCcsXHJcbn07XHJcbiJdfQ==
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtdGV4dC5jb25zdGFudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3dvcmtmbG93L3NoYXJlZC9jb25zdGFudHMvZmllbGQtdGV4dC5jb25zdGFudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUc7SUFDeEIsYUFBYSxFQUFFLGlCQUFpQjtJQUNoQyxvQkFBb0IsRUFBRSx1QkFBdUI7SUFDN0MsY0FBYyxFQUFFLGdCQUFnQjtJQUNoQyxvQkFBb0IsRUFBRSxvQ0FBb0M7SUFDMUQsVUFBVSxFQUFFLCtCQUErQjtJQUMzQyxnQkFBZ0IsRUFBRSxvREFBb0Q7SUFDdEUsb0JBQW9CLEVBQUUsWUFBWTtJQUNsQywwQkFBMEIsRUFBRSxpQ0FBaUM7SUFDN0Qsb0JBQW9CLEVBQUUsd0JBQXdCO0lBQzlDLDBCQUEwQixFQUFFLGdDQUFnQztJQUM1RCxjQUFjLEVBQUUsd0NBQXdDO0lBQ3hELGVBQWUsRUFBRSxpQ0FBaUM7SUFDbEQsNkJBQTZCLEVBQUUsdUJBQXVCO0lBQ3RELG1DQUFtQyxFQUNqQyw0Q0FBNEM7Q0FDL0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBGSUVMRF9URVhUID0ge1xyXG4gIGdyY09iamVjdE5hbWU6ICdHUkMgT2JqZWN0IE5hbWUnLFxyXG4gIGdyY09iamVjdFBsYWNlaG9sZGVyOiAnQWRkIGEgR1JDIG9iamVjdCBuYW1lJyxcclxuICBncmNPd25lcnNUaXRsZTogJ1NwZWNpZnkgT3duZXJzJyxcclxuICBncmNPd25lcnNQbGFjZWhvbGRlcjogJ1NlbGVjdCBhIE93bmVyIGZvciB0aGlzIEdSQyBPYmplY3QnLFxyXG4gIGdyY1JDVGl0bGU6ICdMaW5rIFJlc3BvbnNpYmlsaXR5IENlbnRlcihzKScsXHJcbiAgZ3JjUkNQbGFjZWhvbGRlcjogJ0xpbmsgUmVzcG9uc2liaWxpdHkgQ2VudGVyKHMpIHdpdGggdGhpcyBHUkMgT2JqZWN0JyxcclxuICBncmNSaXNrQ2F0ZWdvcnlUaXRsZTogJ0xpbmsgUmlza3MnLFxyXG4gIGdyY1Jpc2tDYXRlZ29yeVBsYWNlaG9sZGVyOiAnTGluayByaXNrcyB3aXRoIHRoaXMgR1JDIE9iamVjdCcsXHJcbiAgb3RoZXJHUkNPYmplY3RzVGl0bGU6ICdMaW5rIE90aGVyIEdSQyBPYmplY3RzJyxcclxuICBvdGhlckdSQ09iamVjdHNQbGFjZWhvbGRlcjogJ0xpbmsgb3RoZXIgcmVsYXRlZCBHUkMgT2JqZWN0cycsXHJcbiAgZ3JjRGVzY3JpcHRpb246ICdBZGQgYSBkZXNjcmlwdGlvbiBmb3IgdGhpcyBHUkMgT2JqZWN0LicsXHJcbiAgcmlza1BsYWNlaG9sZGVyOiAnTGluayByaXNrcyB3aXRoIHRoaXMgR1JDIE9iamVjdCcsXHJcbiAgZ3JjUHJvZ3JhbVJlc3BvbnNpYmlsaXR5VGl0bGU6ICdMaW5rIFJlc3BvbnNpYmlsaXRpZXMnLFxyXG4gIGdyY1Byb2dyYW1SZXNwb25zaWJpbGl0eVBsYWNlaG9sZGVyOlxyXG4gICAgJ0xpbmsgUmVzcG9uc2liaWxpdGllcyB3aXRoIHRoaXMgR1JDIE9iamVjdCcsXHJcbn07XHJcbiJdfQ==
@@ -0,0 +1,19 @@
1
+ export const RESPONSIBILITY_TABLE_CARD = [
2
+ {
3
+ title: 'REGULATIONS',
4
+ count: 0,
5
+ selectedCount: 0,
6
+ key: 'REGULATIONS',
7
+ type: 1,
8
+ },
9
+ { title: 'STANDARDS', count: 0, selectedCount: 0, key: 'STANDARDS', type: 2 },
10
+ {
11
+ title: 'INTERNAL CONTROLS',
12
+ count: 0,
13
+ selectedCount: 0,
14
+ key: 'INTERNAL_CONTROLS',
15
+ type: 3,
16
+ },
17
+ { title: 'OTHERS', count: 0, selectedCount: 0, key: 'OTHERS', type: 0 },
18
+ ];
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluay1yZXNwb25zaWJpbGl0eS5jb25zdGFudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3dvcmtmbG93L3NoYXJlZC9jb25zdGFudHMvbGluay1yZXNwb25zaWJpbGl0eS5jb25zdGFudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRztJQUN2QztRQUNFLEtBQUssRUFBRSxhQUFhO1FBQ3BCLEtBQUssRUFBRSxDQUFDO1FBQ1IsYUFBYSxFQUFFLENBQUM7UUFDaEIsR0FBRyxFQUFFLGFBQWE7UUFDbEIsSUFBSSxFQUFFLENBQUM7S0FDUjtJQUNELEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLGFBQWEsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFO0lBQzdFO1FBQ0UsS0FBSyxFQUFFLG1CQUFtQjtRQUMxQixLQUFLLEVBQUUsQ0FBQztRQUNSLGFBQWEsRUFBRSxDQUFDO1FBQ2hCLEdBQUcsRUFBRSxtQkFBbUI7UUFDeEIsSUFBSSxFQUFFLENBQUM7S0FDUjtJQUNELEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLGFBQWEsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFO0NBQ3hFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgUkVTUE9OU0lCSUxJVFlfVEFCTEVfQ0FSRCA9IFtcclxuICB7XHJcbiAgICB0aXRsZTogJ1JFR1VMQVRJT05TJyxcclxuICAgIGNvdW50OiAwLFxyXG4gICAgc2VsZWN0ZWRDb3VudDogMCxcclxuICAgIGtleTogJ1JFR1VMQVRJT05TJyxcclxuICAgIHR5cGU6IDEsXHJcbiAgfSxcclxuICB7IHRpdGxlOiAnU1RBTkRBUkRTJywgY291bnQ6IDAsIHNlbGVjdGVkQ291bnQ6IDAsIGtleTogJ1NUQU5EQVJEUycsIHR5cGU6IDIgfSxcclxuICB7XHJcbiAgICB0aXRsZTogJ0lOVEVSTkFMIENPTlRST0xTJyxcclxuICAgIGNvdW50OiAwLFxyXG4gICAgc2VsZWN0ZWRDb3VudDogMCxcclxuICAgIGtleTogJ0lOVEVSTkFMX0NPTlRST0xTJyxcclxuICAgIHR5cGU6IDMsXHJcbiAgfSxcclxuICB7IHRpdGxlOiAnT1RIRVJTJywgY291bnQ6IDAsIHNlbGVjdGVkQ291bnQ6IDAsIGtleTogJ09USEVSUycsIHR5cGU6IDAgfSxcclxuXTtcclxuIl19
@@ -0,0 +1,6 @@
1
+ export const PAGINATION_LIMITS = {
2
+ short_limit: 10,
3
+ mid_limit: 30,
4
+ long_limit: 100,
5
+ };
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi1saW1pdHMuY29uc3RhbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi93b3JrZmxvdy9zaGFyZWQvY29uc3RhbnRzL3BhZ2luYXRpb24tbGltaXRzLmNvbnN0YW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHO0lBQy9CLFdBQVcsRUFBRSxFQUFFO0lBQ2YsU0FBUyxFQUFFLEVBQUU7SUFDYixVQUFVLEVBQUUsR0FBRztDQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IFBBR0lOQVRJT05fTElNSVRTID0ge1xyXG4gIHNob3J0X2xpbWl0OiAxMCxcclxuICBtaWRfbGltaXQ6IDMwLFxyXG4gIGxvbmdfbGltaXQ6IDEwMCxcclxufTtcclxuIl19
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLWdyYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3dvcmtmbG93L3NoYXJlZC9pbnRlcmZhY2VzL2FkZC1ncmMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbnRlcmZhY2UgUHJvZ3JhbUNhdGVnb3J5SWRzIHtcclxuICByZXNwb25zaWJpbGl0eV9pZHM6IG51bWJlcltdO1xyXG4gIGNhdGVnb3J5X2lkOiBudW1iZXJbXTtcclxuICBwYXJlbnRfaWQ6IG51bWJlcjtcclxufVxyXG5cclxuaW50ZXJmYWNlIFJpc2tDYXRlZ29yeUlkcyB7XHJcbiAgcmlza19pZHM6IG51bWJlcltdO1xyXG4gIGNhdGVnb3J5X2lkOiBudW1iZXJbXTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBBZGRHcmMge1xyXG4gIG5hbWU6IHN0cmluZztcclxuICB0eXBlOiAwIHwgMSB8IDIgfCAzOyAvL0Fzc2V0cy0gMCwgSW52ZW50b3J5LSAxLCBQcm9jZXNzZXMgLSAyLCBWZW5kb3JzLSAzXHJcbiAgc3RhdGU6IG51bWJlcjtcclxuICBwYXJlbnRfZ3JjX2lkczogbnVtYmVyW107XHJcbiAgb3duZXJzOiBudW1iZXJbXTtcclxuICBlbWFpbF9ub3RpZmljYXRpb25fbWVtYmVyX2lkczogbnVtYmVyW107XHJcbiAgZGVzY3JpcHRpb246IHN0cmluZztcclxuICBmcmVxdWVuY3k6IHN0cmluZztcclxuICBhdHRyaWJ1dGVzOiBBdHRyaWJ1dGVzRGV0YWlsc1tdO1xyXG4gIHJjX2lkczogc3RyaW5nW107XHJcbiAgcHJvZ3JhbV9jYXRlZ29yeV9pZHM6IFByb2dyYW1DYXRlZ29yeUlkc1tdO1xyXG4gIHJpc2tfY2F0ZWdvcnlfaWRzOiBSaXNrQ2F0ZWdvcnlJZHNbXTtcclxuICBsaW5rZWRfR1JDX2lkczogc3RyaW5nW107XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSW5wdXRUeXBlIHtcclxuICBuYW1lOiAnTkFNRSc7XHJcbiAgb3duZXI6ICdPV05FUic7XHJcbiAgUkM6ICdSQyc7XHJcbiAgcmlza0NhdGVnb3J5OiAnUklTS19DQVRFR09SWSc7XHJcbiAgb3RoZXJHcmNPYmplY3RzOiAnT1RIRVJfR1JDX09CSkVDVFMnO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIExpc3RPYmplY3Qge1xyXG4gIFJDOiBMaXN0T2JqZWN0RGF0YTtcclxuICBPV05FUjogTGlzdE9iamVjdERhdGE7XHJcbiAgT1RIRVJfR1JDX09CSkVDVFM6IExpc3RPYmplY3REYXRhO1xyXG4gIFJJU0tfQ0FURUdPUlk6IExpc3RPYmplY3REYXRhO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgTGlzdE9iamVjdERhdGEge1xyXG4gIGlzTG9hZGluZzogYm9vbGVhbjtcclxuICBkYXRhOiBhbnk7XHJcbiAgc2VsZWN0ZWREYXRhOiBBcnJheTxhbnk+O1xyXG4gIGRpc2FibGVkSWRzPzogQXJyYXk8bnVtYmVyPjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBHUkNUeXBlIHtcclxuICBfaWQ6IHN0cmluZztcclxuICBsYWJlbDogc3RyaW5nO1xyXG4gIGF0dHJpYnV0ZXM6IEF0dHJpYnV0ZXNEZXRhaWxzW107XHJcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XHJcbiAgdmFsdWU6IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBSQ0xpc3Qge1xyXG4gIF9pZDogc3RyaW5nO1xyXG4gIHJjX2lkOiBudW1iZXI7XHJcbiAgcmNfbmFtZTogc3RyaW5nW107XHJcbiAgcGFyZW50X3JjX2lkczogc3RyaW5nW107XHJcbiAgdmlzaWJpbHR5OiBudW1iZXI7XHJcbiAgbWFwX2RhdGE6IHN0cmluZztcclxuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xyXG4gIG93bmVyOiBhbnlbXTtcclxuICBvd25lcl9kZXRhaWxzOiB7XHJcbiAgICBtZW1iZXJfaWQ6IG51bWJlcjtcclxuICAgIG1lbWJlcl9uYW1lOiBzdHJpbmc7XHJcbiAgICBtX3Nob3J0X25hbWU6IHN0cmluZztcclxuICAgIG1lbWJlcl9lbWFpbDogc3RyaW5nO1xyXG4gICAgcHJvZmlsZV9waWM6IHN0cmluZztcclxuICB9W107XHJcbiAgcGFyZW50X293bmVyczogbnVtYmVyW107XHJcbiAgZWRpdF9hbGxvdzogbnVtYmVyO1xyXG4gIGRlbGV0ZV9hbGxvdzogbnVtYmVyO1xyXG4gIGRlbGV0ZV9hbGxvdzE6IG51bWJlcjtcclxuICBpdGVtX25hbWU6IHN0cmluZztcclxuICBwX2l0ZW1fbmFtZTogc3RyaW5nO1xyXG4gIGl0ZW1faWQ6IG51bWJlcjtcclxuICBncm91cF9pZHM6IG51bWJlcltdO1xyXG4gIGl0ZW1fcGFyZW50X2lkczogc3RyaW5nW107XHJcbiAgaXRlbV9jaGlsZF9pZHM6IG51bWJlcltdO1xyXG4gIGNyZWF0b3JEZXRhaWxzOiB7XHJcbiAgICBfaWQ6IHN0cmluZztcclxuICAgIHByb2ZpbGVfcGljOiBzdHJpbmc7XHJcbiAgICBtZW1iZXJfbmFtZTogc3RyaW5nO1xyXG4gICAgbWVtYmVyX2VtYWlsOiBzdHJpbmc7XHJcbiAgICBtZW1iZXJfaWQ6IG51bWJlcjtcclxuICB9O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFZpZXdTZWxlY3RlZERhdGEge1xyXG4gIG5hbWU6IHN0cmluZztcclxuICBpZDogbnVtYmVyO1xyXG4gIHR5cGU6ICdTVFJJTkcnIHwgJ0FSUkFZJztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBPcGVuZWRQb3B1cCB7XHJcbiAgdHlwZTpcclxuICAgIHwgJydcclxuICAgIHwgJ1JDJ1xyXG4gICAgfCAnUklTSydcclxuICAgIHwgJ05BTUUnXHJcbiAgICB8ICdSSVNLX0NBVEVHT1JZJ1xyXG4gICAgfCAnT1dORVInXHJcbiAgICB8ICdPVEhFUl9HUkNfT0JKRUNUUydcclxuICAgIHwgJ0FUVFJJQlVURVMnO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIERhdGVQaWNrZXJDb25maWcge1xyXG4gIGRpc2FibGVLZXlwcmVzczogYm9vbGVhbjtcclxuICBmb3JtYXQ6IHN0cmluZztcclxuICB1blNlbGVjdE9uQ2xpY2s6IGJvb2xlYW47XHJcbiAgb3Blbk9uQ2xpY2s6IGJvb2xlYW47XHJcbiAgb3Blbk9uRm9jdXM6IGJvb2xlYW47XHJcbiAgbWluPzogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEF0dHJpYnV0ZXMge1xyXG4gIG5hbWU6IHN0cmluZztcclxuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xyXG4gIHZhbHVlOiBudW1iZXI7XHJcbiAgYXR0cmlidXRlczogQXJyYXk8QXR0cmlidXRlc0RldGFpbHM+O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEF0dHJpYnV0ZXNEZXRhaWxzIHtcclxuICB0eXBlOiBzdHJpbmc7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIHBhZ2U/OiBudW1iZXI7XHJcbiAgaXNSZXF1aXJlZDogYm9vbGVhbjtcclxuICB0aXRsZTogc3RyaW5nO1xyXG4gIGhhc0Rlc2NyaXB0aW9uOiBib29sZWFuO1xyXG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XHJcbiAgaGFzQ29tbWVudHM6IGJvb2xlYW47XHJcbiAgY29tbWVudHM6IHN0cmluZztcclxuICBoYXNPdGhlcjogYm9vbGVhbjtcclxuICBvdGhlclZhbHVlOiBzdHJpbmc7XHJcbiAgY2hvaWNlczogQ2hvaWNlW107XHJcbiAgaGFzVmFsaWRhdGlvbj86IGJvb2xlYW47XHJcbiAgdmFsaWRhdGlvblR5cGU/OiBzdHJpbmc7XHJcbiAgaGFzQ2hhcmFjdGVyTGVuZ3RoPzogYm9vbGVhbjtcclxuICBtaW5DaGFyYWN0ZXJMZW5ndGg/OiBudW1iZXI7XHJcbiAgbWF4Q2hhcmFjdGVyTGVuZ3RoPzogbnVtYmVyO1xyXG4gIGFsaWdubWVudD86IGJvb2xlYW47XHJcbiAgaXNQbGFjZWhvbGRlcj86IGJvb2xlYW47XHJcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XHJcbiAgaXNfb3RoZXJfc2VsZWN0ZWQ/OiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIENob2ljZSB7XHJcbiAgdGl0bGU6IHN0cmluZztcclxuICB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyO1xyXG4gIGlzX3NlbGVjdGVkOiBib29sZWFuO1xyXG4gIHJlcXVpcmVkPzogbnVtYmVyO1xyXG4gIGhhc0hlbHBpbmdMYWJlbD86IGJvb2xlYW47XHJcbiAgaGVscGluZ0xhYmVsPzogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEJ1dHRvbiB7XHJcbiAgYnV0dG9uVGV4dDogc3RyaW5nO1xyXG4gIGNsYXNzOiBzdHJpbmc7XHJcbiAgaWQ6IHN0cmluZztcclxufVxyXG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLWdyYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3dvcmtmbG93L3NoYXJlZC9pbnRlcmZhY2VzL2FkZC1ncmMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbnRlcmZhY2UgUHJvZ3JhbUNhdGVnb3J5SWRzIHtcclxuICByZXNwb25zaWJpbGl0eV9pZHM6IG51bWJlcltdO1xyXG4gIGNhdGVnb3J5X2lkOiBudW1iZXJbXTtcclxuICBwYXJlbnRfaWQ6IG51bWJlcjtcclxufVxyXG5cclxuaW50ZXJmYWNlIFJpc2tDYXRlZ29yeUlkcyB7XHJcbiAgcmlza19pZHM6IG51bWJlcltdO1xyXG4gIGNhdGVnb3J5X2lkOiBudW1iZXJbXTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBBZGRHcmMge1xyXG4gIG5hbWU6IHN0cmluZztcclxuICB0eXBlOiAwIHwgMSB8IDIgfCAzOyAvL0Fzc2V0cy0gMCwgSW52ZW50b3J5LSAxLCBQcm9jZXNzZXMgLSAyLCBWZW5kb3JzLSAzXHJcbiAgc3RhdGU6IG51bWJlcjtcclxuICBwYXJlbnRfZ3JjX2lkczogbnVtYmVyW107XHJcbiAgb3duZXJzOiBudW1iZXJbXTtcclxuICBlbWFpbF9ub3RpZmljYXRpb25fbWVtYmVyX2lkczogbnVtYmVyW107XHJcbiAgZGVzY3JpcHRpb246IHN0cmluZztcclxuICBmcmVxdWVuY3k6IHN0cmluZztcclxuICBhdHRyaWJ1dGVzOiBBdHRyaWJ1dGVzRGV0YWlsc1tdO1xyXG4gIHJjX2lkczogc3RyaW5nW107XHJcbiAgcHJvZ3JhbV9jYXRlZ29yeV9pZHM6IFByb2dyYW1DYXRlZ29yeUlkc1tdO1xyXG4gIHJpc2tfY2F0ZWdvcnlfaWRzOiBSaXNrQ2F0ZWdvcnlJZHNbXTtcclxuICBsaW5rZWRfR1JDX2lkczogc3RyaW5nW107XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSW5wdXRUeXBlIHtcclxuICBuYW1lOiAnTkFNRSc7XHJcbiAgb3duZXI6ICdPV05FUic7XHJcbiAgUkM6ICdSQyc7XHJcbiAgcmlza0NhdGVnb3J5OiAnUklTS19DQVRFR09SWSc7XHJcbiAgb3RoZXJHcmNPYmplY3RzOiAnT1RIRVJfR1JDX09CSkVDVFMnO1xyXG4gIHByb2dyYW1SZXNwb25zaWJpbGl0eTogJ1BST0dSQU1fUkVTUE9OU0lCSUxJVFknO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIExpc3RPYmplY3Qge1xyXG4gIFJDOiBMaXN0T2JqZWN0RGF0YTtcclxuICBPV05FUjogTGlzdE9iamVjdERhdGE7XHJcbiAgT1RIRVJfR1JDX09CSkVDVFM6IExpc3RPYmplY3REYXRhO1xyXG4gIFJJU0tfQ0FURUdPUlk6IExpc3RPYmplY3REYXRhO1xyXG4gIFBST0dSQU1fUkVTUE9OU0lCSUxJVFk6IExpc3RPYmplY3REYXRhO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgTGlzdE9iamVjdERhdGEge1xyXG4gIGlzTG9hZGluZzogYm9vbGVhbjtcclxuICBkYXRhOiBhbnk7XHJcbiAgc2VsZWN0ZWREYXRhOiBBcnJheTxhbnk+O1xyXG4gIGRpc2FibGVkSWRzPzogQXJyYXk8bnVtYmVyPjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBHUkNUeXBlIHtcclxuICBfaWQ6IHN0cmluZztcclxuICBsYWJlbDogc3RyaW5nO1xyXG4gIGF0dHJpYnV0ZXM6IEF0dHJpYnV0ZXNEZXRhaWxzW107XHJcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XHJcbiAgdmFsdWU6IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBSQ0xpc3Qge1xyXG4gIF9pZDogc3RyaW5nO1xyXG4gIHJjX2lkOiBudW1iZXI7XHJcbiAgcmNfbmFtZTogc3RyaW5nW107XHJcbiAgcGFyZW50X3JjX2lkczogc3RyaW5nW107XHJcbiAgdmlzaWJpbHR5OiBudW1iZXI7XHJcbiAgbWFwX2RhdGE6IHN0cmluZztcclxuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xyXG4gIG93bmVyOiBhbnlbXTtcclxuICBvd25lcl9kZXRhaWxzOiB7XHJcbiAgICBtZW1iZXJfaWQ6IG51bWJlcjtcclxuICAgIG1lbWJlcl9uYW1lOiBzdHJpbmc7XHJcbiAgICBtX3Nob3J0X25hbWU6IHN0cmluZztcclxuICAgIG1lbWJlcl9lbWFpbDogc3RyaW5nO1xyXG4gICAgcHJvZmlsZV9waWM6IHN0cmluZztcclxuICB9W107XHJcbiAgcGFyZW50X293bmVyczogbnVtYmVyW107XHJcbiAgZWRpdF9hbGxvdzogbnVtYmVyO1xyXG4gIGRlbGV0ZV9hbGxvdzogbnVtYmVyO1xyXG4gIGRlbGV0ZV9hbGxvdzE6IG51bWJlcjtcclxuICBpdGVtX25hbWU6IHN0cmluZztcclxuICBwX2l0ZW1fbmFtZTogc3RyaW5nO1xyXG4gIGl0ZW1faWQ6IG51bWJlcjtcclxuICBncm91cF9pZHM6IG51bWJlcltdO1xyXG4gIGl0ZW1fcGFyZW50X2lkczogc3RyaW5nW107XHJcbiAgaXRlbV9jaGlsZF9pZHM6IG51bWJlcltdO1xyXG4gIGNyZWF0b3JEZXRhaWxzOiB7XHJcbiAgICBfaWQ6IHN0cmluZztcclxuICAgIHByb2ZpbGVfcGljOiBzdHJpbmc7XHJcbiAgICBtZW1iZXJfbmFtZTogc3RyaW5nO1xyXG4gICAgbWVtYmVyX2VtYWlsOiBzdHJpbmc7XHJcbiAgICBtZW1iZXJfaWQ6IG51bWJlcjtcclxuICB9O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFZpZXdTZWxlY3RlZERhdGEge1xyXG4gIG5hbWU6IHN0cmluZztcclxuICBpZDogbnVtYmVyO1xyXG4gIHR5cGU6ICdTVFJJTkcnIHwgJ0FSUkFZJztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBPcGVuZWRQb3B1cCB7XHJcbiAgdHlwZTpcclxuICAgIHwgJydcclxuICAgIHwgJ1JDJ1xyXG4gICAgfCAnUklTSydcclxuICAgIHwgJ05BTUUnXHJcbiAgICB8ICdSSVNLX0NBVEVHT1JZJ1xyXG4gICAgfCAnT1dORVInXHJcbiAgICB8ICdPVEhFUl9HUkNfT0JKRUNUUydcclxuICAgIHwgJ0FUVFJJQlVURVMnXHJcbiAgICB8ICdQUk9HUkFNX1JFU1BPTlNJQklMSVRZJztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBEYXRlUGlja2VyQ29uZmlnIHtcclxuICBkaXNhYmxlS2V5cHJlc3M6IGJvb2xlYW47XHJcbiAgZm9ybWF0OiBzdHJpbmc7XHJcbiAgdW5TZWxlY3RPbkNsaWNrOiBib29sZWFuO1xyXG4gIG9wZW5PbkNsaWNrOiBib29sZWFuO1xyXG4gIG9wZW5PbkZvY3VzOiBib29sZWFuO1xyXG4gIG1pbj86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBBdHRyaWJ1dGVzIHtcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgZGVzY3JpcHRpb246IHN0cmluZztcclxuICB2YWx1ZTogbnVtYmVyO1xyXG4gIGF0dHJpYnV0ZXM6IEFycmF5PEF0dHJpYnV0ZXNEZXRhaWxzPjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBBdHRyaWJ1dGVzRGV0YWlscyB7XHJcbiAgdHlwZTogc3RyaW5nO1xyXG4gIG5hbWU6IHN0cmluZztcclxuICBwYWdlPzogbnVtYmVyO1xyXG4gIGlzUmVxdWlyZWQ6IGJvb2xlYW47XHJcbiAgdGl0bGU6IHN0cmluZztcclxuICBoYXNEZXNjcmlwdGlvbjogYm9vbGVhbjtcclxuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xyXG4gIGhhc0NvbW1lbnRzOiBib29sZWFuO1xyXG4gIGNvbW1lbnRzOiBzdHJpbmc7XHJcbiAgaGFzT3RoZXI6IGJvb2xlYW47XHJcbiAgb3RoZXJWYWx1ZTogc3RyaW5nO1xyXG4gIGNob2ljZXM6IENob2ljZVtdO1xyXG4gIGhhc1ZhbGlkYXRpb24/OiBib29sZWFuO1xyXG4gIHZhbGlkYXRpb25UeXBlPzogc3RyaW5nO1xyXG4gIGhhc0NoYXJhY3Rlckxlbmd0aD86IGJvb2xlYW47XHJcbiAgbWluQ2hhcmFjdGVyTGVuZ3RoPzogbnVtYmVyO1xyXG4gIG1heENoYXJhY3Rlckxlbmd0aD86IG51bWJlcjtcclxuICBhbGlnbm1lbnQ/OiBib29sZWFuO1xyXG4gIGlzUGxhY2Vob2xkZXI/OiBib29sZWFuO1xyXG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xyXG4gIGlzX290aGVyX3NlbGVjdGVkPzogYm9vbGVhbjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDaG9pY2Uge1xyXG4gIHRpdGxlOiBzdHJpbmc7XHJcbiAgdmFsdWU6IHN0cmluZyB8IG51bWJlcjtcclxuICBpc19zZWxlY3RlZDogYm9vbGVhbjtcclxuICByZXF1aXJlZD86IG51bWJlcjtcclxuICBoYXNIZWxwaW5nTGFiZWw/OiBib29sZWFuO1xyXG4gIGhlbHBpbmdMYWJlbD86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBCdXR0b24ge1xyXG4gIGJ1dHRvblRleHQ6IHN0cmluZztcclxuICBjbGFzczogc3RyaW5nO1xyXG4gIGlkOiBzdHJpbmc7XHJcbn1cclxuIl19
@@ -46,6 +46,11 @@ export class GrcService {
46
46
  data: {},
47
47
  selectedData: [],
48
48
  },
49
+ PROGRAM_RESPONSIBILITY: {
50
+ isLoading: false,
51
+ data: {},
52
+ selectedData: [],
53
+ },
49
54
  };
50
55
  if (config) {
51
56
  this.env = config.envConfig;
@@ -203,6 +208,83 @@ export class GrcService {
203
208
  headers,
204
209
  });
205
210
  }
211
+ getBusinessCycle() {
212
+ let businessCycle = JSON.parse(localStorage.getItem('businessCycle') ?? '{}');
213
+ let currentBusinessCycle = {
214
+ selected_cycle: businessCycle
215
+ ? businessCycle?.selectedCycle?.start_date +
216
+ '-' +
217
+ businessCycle?.selectedCycle?.end_date
218
+ : '',
219
+ start_date: businessCycle ? businessCycle?.selectedCycle?.start_date : '',
220
+ end_date: businessCycle ? businessCycle?.selectedCycle?.end_date : '',
221
+ selected_cycle_arr: businessCycle
222
+ ? businessCycle?.selectedCycle?.selected_cycle_arr
223
+ : [],
224
+ };
225
+ return currentBusinessCycle;
226
+ }
227
+ getProgramsList(req) {
228
+ // this.getUserDetails();
229
+ let httpOptions = {};
230
+ if (req?.params) {
231
+ httpOptions.params = req.params;
232
+ }
233
+ if (req?.headers) {
234
+ let headers = new HttpHeaders();
235
+ httpOptions.headers = headers.append('payload-object', JSON.stringify(req.headers));
236
+ httpOptions.headers = httpOptions.headers.append('token', this.authService.getAuthorizationToken());
237
+ }
238
+ return this.http
239
+ .get(this.env?.programEndpoint + '/categoriesList?owner_list=1', httpOptions)
240
+ .pipe(retry(2));
241
+ }
242
+ getProgramsListCount(req) {
243
+ let httpOptions = {};
244
+ if (req?.params) {
245
+ httpOptions.params = req.params;
246
+ }
247
+ if (req?.headers) {
248
+ let headers = new HttpHeaders();
249
+ httpOptions.headers = headers.append('payload-object', JSON.stringify(req?.headers));
250
+ httpOptions.headers = httpOptions.headers.append('token', this.authService.getAuthorizationToken());
251
+ }
252
+ return this.http
253
+ .get(this.env?.programEndpoint + '/overview-count', httpOptions)
254
+ .pipe(retry(2));
255
+ }
256
+ getSubCategoryList(payload) {
257
+ if (payload?.scopeType === 'not_completed') {
258
+ payload.scopeType = 'notCompleted';
259
+ }
260
+ let headers = new HttpHeaders();
261
+ headers = headers.append('payload-object', JSON.stringify(payload?.businessCycle));
262
+ headers = headers.append('token', this.authService.getAuthorizationToken());
263
+ return this.http
264
+ .get(this.env?.programEndpoint +
265
+ '/subCategories?isBusinessCycle=true&parentId=' +
266
+ payload?.id +
267
+ '&type=' +
268
+ payload?.scopeType +
269
+ (payload?.searchText ? '&q=' + encodeURI(payload?.searchText) : '') +
270
+ (payload?.name ? '&sortBy=' + payload?.name : '') +
271
+ (payload?.sortingCount ? '&sortValue=' + payload?.sortingCount : '') +
272
+ ('&page=' + payload?.page ?? 1), { headers })
273
+ .pipe(retry(1));
274
+ }
275
+ getResponsibilityByCategoryId(req, payload, filterPolicyData) {
276
+ // https://devapi.v-comply.com/category/editCategory
277
+ let httpOptions = {};
278
+ httpOptions.params = req;
279
+ let headers = new HttpHeaders();
280
+ // headers = headers.append('x-business-cycle',JSON.stringify(payload));
281
+ headers = headers.append('payload-object', JSON.stringify(payload));
282
+ headers = headers.append('token', this.authService.getAuthorizationToken());
283
+ httpOptions.headers = headers;
284
+ return this.http
285
+ .get(this.env?.programEndpoint + '/responsibilityList', httpOptions)
286
+ .pipe(retry(1));
287
+ }
206
288
  }
207
289
  GrcService.EDITOR_CONFIG = {
208
290
  mode: 'prime',
@@ -221,4 +303,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
221
303
  }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.AuthService }, { type: i3.Configurations, decorators: [{
222
304
  type: Optional
223
305
  }] }]; } });
224
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JjLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi93b3JrZmxvdy9zaGFyZWQvc2VydmljZXMvZ3JjLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdyRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7OztBQU03QixNQUFNLE9BQU8sVUFBVTtJQWdEckIsWUFDVSxJQUFnQixFQUNoQixXQUF3QixFQUNwQixNQUF1QjtRQUYzQixTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBekNsQixnQkFBVyxHQUFXO1lBQ3BDLElBQUksRUFBRSxFQUFFO1lBQ1IsSUFBSSxFQUFFLENBQUM7WUFDUCxLQUFLLEVBQUUsQ0FBQztZQUNSLGNBQWMsRUFBRSxFQUFFO1lBQ2xCLE1BQU0sRUFBRSxFQUFFO1lBQ1YsNkJBQTZCLEVBQUUsRUFBRTtZQUNqQyxXQUFXLEVBQUUsRUFBRTtZQUNmLFNBQVMsRUFBRSxFQUFFO1lBQ2IsVUFBVSxFQUFFLEVBQUU7WUFDZCxNQUFNLEVBQUUsRUFBRTtZQUNWLG9CQUFvQixFQUFFLEVBQUU7WUFDeEIsaUJBQWlCLEVBQUUsRUFBRTtZQUNyQixjQUFjLEVBQUUsRUFBRTtTQUNuQixDQUFDO1FBRWMsZ0JBQVcsR0FBZTtZQUN4QyxFQUFFLEVBQUU7Z0JBQ0YsU0FBUyxFQUFFLEtBQUs7Z0JBQ2hCLElBQUksRUFBRSxFQUFFO2dCQUNSLFlBQVksRUFBRSxFQUFFO2FBQ2pCO1lBQ0QsS0FBSyxFQUFFO2dCQUNMLFNBQVMsRUFBRSxLQUFLO2dCQUNoQixJQUFJ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VyxDQUFDLHFCQUFxQixFQUFFLENBQ3pDLENBQUM7UUFDRixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksR0FBRyxtQkFBbUIsRUFDcEMsT0FBTyxFQUNQO1lBQ0UsT0FBTztTQUNSLENBQ0YsQ0FBQztJQUNKLENBQUM7O0FBOU9zQix3QkFBYSxHQUFHO0lBQ3JDLElBQUksRUFBRSxPQUFPO0lBQ2IsWUFBWSxFQUFFLElBQUk7SUFDbEIsSUFBSSxFQUFFLElBQUk7SUFDVixFQUFFLEVBQUUsaUJBQWlCO0lBQ3JCLFdBQVcsRUFBRSx1Q0FBdUM7Q0FDcEQsQ0FBQTt1R0FSUyxVQUFVOzJHQUFWLFVBQVUsY0FGVCxNQUFNOzJGQUVQLFVBQVU7a0JBSHRCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFvREksUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzLCBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3dvcmtmbG93LXNlcnZpY2VzL2F1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25zIH0gZnJvbSAnLi4vLi4vLi4vY29uZmlndXJhdGlvbnMnO1xyXG5pbXBvcnQgeyByZXRyeSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBBZGRHcmMsIEF0dHJpYnV0ZXNEZXRhaWxzLCBMaXN0T2JqZWN0IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9hZGQtZ3JjJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBHcmNTZXJ2aWNlIHtcclxuICBlbnYhOiBhbnk7XHJcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBFRElUT1JfQ09ORklHID0ge1xyXG4gICAgbW9kZTogJ3ByaW1lJyxcclxuICAgIGNvbG9yUGFsZXR0ZTogdHJ1ZSxcclxuICAgIGxpbms6IHRydWUsXHJcbiAgICBpZDogJ2dyY19kZXNjcmlwdGlvbicsXHJcbiAgICBwbGFjZWhvbGRlcjogJ0FkZCBhIGRlc2NyaXB0aW9uIGZvciB0aGlzIEdSQyBPYmplY3QnLFxyXG4gIH07XHJcbiAgcHVibGljIHJlYWRvbmx5IEdSQ19QQVlMT0FEOiBBZGRHcmMgPSB7XHJcbiAgICBuYW1lOiAnJyxcclxuICAgIHR5cGU6IDMsIC8vQXNzZXRzLSAwLCBJbnZlbnRvcnktIDEsIFByb2Nlc3NlcyAtIDIsIFZlbmRvcnMtIDNcclxuICAgIHN0YXRlOiAwLFxyXG4gICAgcGFyZW50X2dyY19pZHM6IFtdLFxyXG4gICAgb3duZXJzOiBbXSxcclxuICAgIGVtYWlsX25vdGlmaWNhdGlvbl9tZW1iZXJfaWRzOiBbXSxcclxuICAgIGRlc2NyaXB0aW9uOiAnJyxcclxuICAgIGZyZXF1ZW5jeTogJycsXHJcbiAgICBhdHRyaWJ1dGVzOiBbXSxcclxuICAgIHJjX2lkczogW10sXHJcbiAgICBwcm9ncmFtX2NhdGVnb3J5X2lkczogW10sXHJcbiAgICByaXNrX2NhdGVnb3J5X2lkczogW10sXHJcbiAgICBsaW5rZWRfR1JDX2lkczogW10sXHJcbiAgfTtcclxuXHJcbiAgcHVibGljIHJlYWRvbmx5IExJU1RfT0JKRUNUOiBMaXN0T2JqZWN0ID0ge1xyXG4gICAgUkM6IHtcclxuICAgICAgaXNMb2FkaW5nOiBmYWxzZSxcclxuICAgICAgZGF0YTogW10sXHJcbiAgICAgIHNlbGVjdGVkRGF0YTogW10sXHJcbiAgICB9LFxyXG4gICAgT1dORVI6IHtcclxuICAgICAgaXNMb2FkaW5nOiBmYWxzZSxcclxuICAgICAgZGF0YTogW10sXHJcbiAgICAgIHNlbGVjdGVkRGF0YTogW10sXHJcbiAgICAgIGRpc2FibGVkSWRzOiBbXSxcclxuICAgIH0sXHJcbiAgICBPVEhFUl9HUkNfT0JKRUNUUzoge1xyXG4gICAgICBpc0xvYWRpbmc6IGZhbHNlLFxyXG4gICAgICBkYXRhOiB7fSxcclxuICAgICAgc2VsZWN0ZWREYXRhOiBbXSxcclxuICAgIH0sXHJcbiAgICBSSVNLX0NBVEVHT1JZOiB7XHJcbiAgICAgIGlzTG9hZGluZzogZmFsc2UsXHJcbiAgICAgIGRhdGE6IHt9LFxyXG4gICAgICBzZWxlY3RlZERhdGE6IFtdLFxyXG4gICAgfSxcclxuICB9O1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXHJcbiAgICBAT3B0aW9uYWwoKSBjb25maWc/OiBDb25maWd1cmF0aW9uc1xyXG4gICkge1xyXG4gICAgaWYgKGNvbmZpZykge1xyXG4gICAgICB0aGlzLmVudiA9IGNvbmZpZy5lbnZDb25maWc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRHUkNMaXN0KGV2ZW50PzogYW55KSB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxyXG4gICAgICAndG9rZW4nLFxyXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXHJcbiAgICApO1xyXG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XHJcbiAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdzdGF0ZScsIGV2ZW50Py5zdGF0ZSA/PyAxKTtcclxuICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ2dyY1R5cGUnLCBldmVudD8udHlwZSA/PyAwKTtcclxuICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ3BhZ2UnLCBldmVudD8ucGFnZU5vID8/IDEpO1xyXG4gICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgncmNJZHMnLCBldmVudD8ucmNfaWRzID8/ICcnKTtcclxuICAgIHBhcmFtcyA9IGV2ZW50Py5zZWFyY2hTdHJpbmdcclxuICAgICAgPyBwYXJhbXMuYXBwZW5kKCduYW1lJywgZXZlbnQ/LnNlYXJjaFN0cmluZyA/PyAnJylcclxuICAgICAgOiBwYXJhbXM7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5nZXQ8YW55W10+KHRoaXMuZW52Py5ncmNfZ2V0ICsgJ2dyYy9nZXRHUkNMaXN0Jywge1xyXG4gICAgICAgIHBhcmFtcyxcclxuICAgICAgICBoZWFkZXJzLFxyXG4gICAgICB9KVxyXG4gICAgICAucGlwZShyZXRyeSgxKSk7XHJcbiAgfVxyXG5cclxuICBnZXRHUkNUYWJzQ291bnQoZXZlbnQ/OiBhbnkpIHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXHJcbiAgICAgICd0b2tlbicsXHJcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcclxuICAgICk7XHJcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcclxuICAgIHBhcmFtcyA9IGV2ZW50Py5zZWFyY2hTdHJpbmdcclxuICAgICAgPyBwYXJhbXMuYXBwZW5kKCduYW1lJywgZXZlbnQ/LnNlYXJjaFN0cmluZyA/PyAnJylcclxuICAgICAgOiBwYXJhbXM7XHJcbiAgICBpZiAoZXZlbnQ/LnJjX2lkcykge1xyXG4gICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdyY0lkcycsIGV2ZW50Py5yY19pZHMpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAuZ2V0PGFueVtdPih0aGlzLmVudj8uZ3JjX2dldCArICdncmMvZ2V0R1JDQ291bnQnLCB7XHJcbiAgICAgICAgcGFyYW1zLFxyXG4gICAgICAgIGhlYWRlcnMsXHJcbiAgICAgIH0pXHJcbiAgICAgIC5waXBlKHJldHJ5KDEpKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjaGVja1ZhbGlkYXRpb24oZ3JjUGF5bG9hZDogQWRkR3JjLCBpc0F0dHJpYnV0ZXNTZWxlY3RlZDogYm9vbGVhbikge1xyXG4gICAgY29uc3QgaXNWYWxpZERhdGEgPVxyXG4gICAgICBncmNQYXlsb2FkLm5hbWUudHJpbSgpICE9PSAnJyAmJlxyXG4gICAgICBncmNQYXlsb2FkLnR5cGUgPiAtMSAmJlxyXG4gICAgICBncmNQYXlsb2FkLm93bmVycy5sZW5ndGggJiZcclxuICAgICAgZ3JjUGF5bG9hZC5yY19pZHMubGVuZ3RoO1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgaXNWYWxpZERhdGEgJiZcclxuICAgICAgKCFpc0F0dHJpYnV0ZXNTZWxlY3RlZCB8fFxyXG4gICAgICAgIHRoaXMuY2hlY2tBdHRyaWJ1dGVWYWxpZGF0aW9uKGdyY1BheWxvYWQuYXR0cmlidXRlcykpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgY2hlY2tBdHRyaWJ1dGVWYWxpZGF0aW9uKGF0dHJpYnV0ZXM6IEF0dHJpYnV0ZXNEZXRhaWxzW10pOiBib29sZWFuIHtcclxuICAgIGZvciAoY29uc3Qgb2JqIG9mIGF0dHJpYnV0ZXMpIHtcclxuICAgICAgaWYgKG9iai5pc1JlcXVpcmVkKSB7XHJcbiAgICAgICAgaWYgKG9iai50eXBlID09PSAnc2luZ2xlLXRleHRib3gnIHx8IG9iai50eXBlID09PSAnZGF0ZS10aW1lJykge1xyXG4gICAgICAgICAgY29uc3QgY2hvaWNlID0gb2JqLmNob2ljZXNbMF07XHJcbiAgICAgICAgICBpZiAodHlwZW9mIGNob2ljZS52YWx1ZSA9PT0gJ3N0cmluZycgJiYgY2hvaWNlLnZhbHVlLnRyaW0oKSA9PT0gJycpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAob2JqLnR5cGUgPT09ICdjaGVja2JveCcgfHwgb2JqLnR5cGUgPT09ICdkcm9wZG93bicpIHtcclxuICAgICAgICAgIGxldCBpc0Nob2ljZVNlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgICAgICBpZiAob2JqLmhhc090aGVyICYmIG9iaj8uaXNfb3RoZXJfc2VsZWN0ZWQpIHtcclxuICAgICAgICAgICAgaXNDaG9pY2VTZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoIWlzQ2hvaWNlU2VsZWN0ZWQpIHtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBjaG9pY2Ugb2Ygb2JqLmNob2ljZXMpIHtcclxuICAgICAgICAgICAgICBpZiAoY2hvaWNlLmlzX3NlbGVjdGVkKSB7XHJcbiAgICAgICAgICAgICAgICBpc0Nob2ljZVNlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGlmICghaXNDaG9pY2VTZWxlY3RlZCkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIGNoZWNrQXR0cmlidXRlc1NlbGVjdGVkKGF0dHJpYnV0ZXM6IEF0dHJpYnV0ZXNEZXRhaWxzW10pOiBib29sZWFuIHtcclxuICAgIGZvciAoY29uc3Qgb2JqIG9mIGF0dHJpYnV0ZXMpIHtcclxuICAgICAgaWYgKG9iai50eXBlID09PSAnc2luZ2xlLXRleHRib3gnIHx8IG9iai50eXBlID09PSAnZGF0ZS10aW1lJykge1xyXG4gICAgICAgIGNvbnN0IGNob2ljZSA9IG9iai5jaG9pY2VzWzBdO1xyXG4gICAgICAgIGlmICh0eXBlb2YgY2hvaWNlLnZhbHVlID09PSAnc3RyaW5nJyAmJiBjaG9pY2UudmFsdWUudHJpbSgpID09PSAnJykge1xyXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmIChvYmoudHlwZSA9PT0gJ2NoZWNrYm94JyB8fCBvYmoudHlwZSA9PT0gJ2Ryb3Bkb3duJykge1xyXG4gICAgICAgIGxldCBpc0Nob2ljZVNlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgICAgZm9yIChjb25zdCBjaG9pY2Ugb2Ygb2JqLmNob2ljZXMpIHtcclxuICAgICAgICAgIGlmIChjaG9pY2UuaXNfc2VsZWN0ZWQpIHtcclxuICAgICAgICAgICAgaXNDaG9pY2VTZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWlzQ2hvaWNlU2VsZWN0ZWQpIHtcclxuICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgY2hlY2tFYWNoQXR0cmlidXRlVmFsaWRhdGlvbihhdHRyaWJ1dGU6IEF0dHJpYnV0ZXNEZXRhaWxzKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoYXR0cmlidXRlLmlzUmVxdWlyZWQpIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIGF0dHJpYnV0ZS50eXBlID09PSAnc2luZ2xlLXRleHRib3gnIHx8XHJcbiAgICAgICAgYXR0cmlidXRlLnR5cGUgPT09ICdkYXRlLXRpbWUnXHJcbiAgICAgICkge1xyXG4gICAgICAgIGNvbnN0IGNob2ljZSA9IGF0dHJpYnV0ZS5jaG9pY2VzWzBdO1xyXG4gICAgICAgIGlmICh0eXBlb2YgY2hvaWNlLnZhbHVlID09PSAnc3RyaW5nJyAmJiBjaG9pY2UudmFsdWUudHJpbSgpID09PSAnJykge1xyXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICBhdHRyaWJ1dGUudHlwZSA9PT0gJ2NoZWNrYm94JyB8fFxyXG4gICAgICAgIGF0dHJpYnV0ZS50eXBlID09PSAnZHJvcGRvd24nXHJcbiAgICAgICkge1xyXG4gICAgICAgIGxldCBpc0Nob2ljZVNlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgICAgZm9yIChjb25zdCBjaG9pY2Ugb2YgYXR0cmlidXRlLmNob2ljZXMpIHtcclxuICAgICAgICAgIGlmIChjaG9pY2UuaXNfc2VsZWN0ZWQpIHtcclxuICAgICAgICAgICAgaXNDaG9pY2VTZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWlzQ2hvaWNlU2VsZWN0ZWQpIHtcclxuICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuICBnZXRSaXNrQ2F0ZWdvcmllcyhldmVudD86IGFueSkge1xyXG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcclxuICAgICAgJ3Rva2VuJyxcclxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxyXG4gICAgKTtcclxuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xyXG4gICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgncmV0dXJuVHlwZScsIDEpO1xyXG4gICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgnY2F0ZWdvcnlUeXBlJywgZXZlbnQ/LnR5cGUgPz8gMSk7XHJcbiAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdwYWdlJywgZXZlbnQ/LnBhZ2VObyA/PyAxKTtcclxuICAgIHBhcmFtcyA9IGV2ZW50Py50eXBlID09PSAwID8gcGFyYW1zLmFwcGVuZCgncmlza0ZsYWcnLCAxKSA6IHBhcmFtcztcclxuICAgIHBhcmFtcyA9IGV2ZW50Py5zZWFyY2hTdHJpbmdcclxuICAgICAgPyBwYXJhbXMuYXBwZW5kKCdxJywgZXZlbnQ/LnNlYXJjaFN0cmluZyA/PyAnJylcclxuICAgICAgOiBwYXJhbXM7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnlbXT4odGhpcy5lbnY/LnJpc2sgKyAnY2F0ZWdvcnkvbGlzdCcsIHtcclxuICAgICAgcGFyYW1zLFxyXG4gICAgICBoZWFkZXJzLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRSaXNrQ2F0ZWdvcmllc0NvdW50KGV2ZW50PzogYW55KSB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxyXG4gICAgICAndG9rZW4nLFxyXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXHJcbiAgICApO1xyXG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XHJcbiAgICBwYXJhbXMgPSBldmVudD8uc2VhcmNoU3RyaW5nXHJcbiAgICAgID8gcGFyYW1zLmFwcGVuZCgncScsIGV2ZW50Py5zZWFyY2hTdHJpbmcgPz8gJycpXHJcbiAgICAgIDogcGFyYW1zO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55W10+KHRoaXMuZW52Py5yaXNrICsgJ2NhdGVnb3J5L2NvdW50Jywge1xyXG4gICAgICBwYXJhbXMsXHJcbiAgICAgIGhlYWRlcnMsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldFJpc2tzKHBheWxvYWQ/OiBhbnkpIHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXHJcbiAgICAgICd0b2tlbicsXHJcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcclxuICAgICk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55W10+KFxyXG4gICAgICB0aGlzLmVudj8ucmlzayArICdjYXRlZ29yeS9yaXNrbGlzdCcsXHJcbiAgICAgIHBheWxvYWQsXHJcbiAgICAgIHtcclxuICAgICAgICBoZWFkZXJzLFxyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxufVxyXG4iXX0=
306
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JjLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi93b3JrZmxvdy9zaGFyZWQvc2VydmljZXMvZ3JjLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdyRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7OztBQU03QixNQUFNLE9BQU8sVUFBVTtJQXFEckIsWUFDVSxJQUFnQixFQUNoQixXQUF3QixFQUNwQixNQUF1QjtRQUYzQixTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBOUNsQixnQkFBVyxHQUFXO1lBQ3BDLElBQUksRUFBRSxFQUFFO1lBQ1IsSUFBSSxFQUFFLENBQUM7WUFDUCxLQUFLLEVBQUUsQ0FBQztZQUNSLGNBQWMsRUFBRSxFQUFFO1lBQ2xCLE1BQU0sRUFBRSxFQUFFO1lBQ1YsNkJBQTZCLEVBQUUsRUFBRTtZQUNqQyxXQUFXLEVBQUUsRUFBRTtZQUNmLFNBQVMsRUFBRSxFQUFFO1lBQ2IsVUFBVSxFQUFFLEVBQUU7WUFDZCxNQUFNLEVBQUUsRUFBRTtZQUNWLG9CQUFvQixFQUFFLEVBQUU7WUFDeEIsaUJBQWlCLEVBQUUsRUFBRTtZQUNyQixjQUFjLEVBQUUsRUFBRTtTQUNuQixDQUFDO1FBRWMsZ0JBQVcsR0FBZTtZQUN4QyxFQUFFLEVBQUU7Z0JBQ0YsU0FBUyxFQUFFLEtBQUs7Z0JBQ2hCLElBQUksRUFBRSxFQUFFO2dCQUNSLFlBQVksRUFBRSxFQUFFO2FBQ2pCO1lBQ0QsS0FBSyxFQUFFO2dCQUNMLFNBQVMsRUFBRSxLQUFLO2dCQUNoQixJQUFJ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QUFFLE1BQU07aUJBQ25COzswQkF5REksUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzLCBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3dvcmtmbG93LXNlcnZpY2VzL2F1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25zIH0gZnJvbSAnLi4vLi4vLi4vY29uZmlndXJhdGlvbnMnO1xyXG5pbXBvcnQgeyByZXRyeSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBBZGRHcmMsIEF0dHJpYnV0ZXNEZXRhaWxzLCBMaXN0T2JqZWN0IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9hZGQtZ3JjJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBHcmNTZXJ2aWNlIHtcclxuICBlbnYhOiBhbnk7XHJcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBFRElUT1JfQ09ORklHID0ge1xyXG4gICAgbW9kZTogJ3ByaW1lJyxcclxuICAgIGNvbG9yUGFsZXR0ZTogdHJ1ZSxcclxuICAgIGxpbms6IHRydWUsXHJcbiAgICBpZDogJ2dyY19kZXNjcmlwdGlvbicsXHJcbiAgICBwbGFjZWhvbGRlcjogJ0FkZCBhIGRlc2NyaXB0aW9uIGZvciB0aGlzIEdSQyBPYmplY3QnLFxyXG4gIH07XHJcbiAgcHVibGljIHJlYWRvbmx5IEdSQ19QQVlMT0FEOiBBZGRHcmMgPSB7XHJcbiAgICBuYW1lOiAnJyxcclxuICAgIHR5cGU6IDMsIC8vQXNzZXRzLSAwLCBJbnZlbnRvcnktIDEsIFByb2Nlc3NlcyAtIDIsIFZlbmRvcnMtIDNcclxuICAgIHN0YXRlOiAwLFxyXG4gICAgcGFyZW50X2dyY19pZHM6IFtdLFxyXG4gICAgb3duZXJzOiBbXSxcclxuICAgIGVtYWlsX25vdGlmaWNhdGlvbl9tZW1iZXJfaWRzOiBbXSxcclxuICAgIGRlc2NyaXB0aW9uOiAnJyxcclxuICAgIGZyZXF1ZW5jeTogJycsXHJcbiAgICBhdHRyaWJ1dGVzOiBbXSxcclxuICAgIHJjX2lkczogW10sXHJcbiAgICBwcm9ncmFtX2NhdGVnb3J5X2lkczogW10sXHJcbiAgICByaXNrX2NhdGVnb3J5X2lkczogW10sXHJcbiAgICBsaW5rZWRfR1JDX2lkczogW10sXHJcbiAgfTtcclxuXHJcbiAgcHVibGljIHJlYWRvbmx5IExJU1RfT0JKRUNUOiBMaXN0T2JqZWN0ID0ge1xyXG4gICAgUkM6IHtcclxuICAgICAgaXNMb2FkaW5nOiBmYWxzZSxcclxuICAgICAgZGF0YTogW10sXHJcbiAgICAgIHNlbGVjdGVkRGF0YTogW10sXHJcbiAgICB9LFxyXG4gICAgT1dORVI6IHtcclxuICAgICAgaXNMb2FkaW5nOiBmYWxzZSxcclxuICAgICAgZGF0YTogW10sXHJcbiAgICAgIHNlbGVjdGVkRGF0YTogW10sXHJcbiAgICAgIGRpc2FibGVkSWRzOiBbXSxcclxuICAgIH0sXHJcbiAgICBPVEhFUl9HUkNfT0JKRUNUUzoge1xyXG4gICAgICBpc0xvYWRpbmc6IGZhbHNlLFxyXG4gICAgICBkYXRhOiB7fSxcclxuICAgICAgc2VsZWN0ZWREYXRhOiBbXSxcclxuICAgIH0sXHJcbiAgICBSSVNLX0NBVEVHT1JZOiB7XHJcbiAgICAgIGlzTG9hZGluZzogZmFsc2UsXHJcbiAgICAgIGRhdGE6IHt9LFxyXG4gICAgICBzZWxlY3RlZERhdGE6IFtdLFxyXG4gICAgfSxcclxuICAgIFBST0dSQU1fUkVTUE9OU0lCSUxJVFk6IHtcclxuICAgICAgaXNMb2FkaW5nOiBmYWxzZSxcclxuICAgICAgZGF0YToge30sXHJcbiAgICAgIHNlbGVjdGVkRGF0YTogW10sXHJcbiAgICB9LFxyXG4gIH07XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcclxuICAgIEBPcHRpb25hbCgpIGNvbmZpZz86IENvbmZpZ3VyYXRpb25zXHJcbiAgKSB7XHJcbiAgICBpZiAoY29uZmlnKSB7XHJcbiAgICAgIHRoaXMuZW52ID0gY29uZmlnLmVudkNvbmZpZztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldEdSQ0xpc3QoZXZlbnQ/OiBhbnkpIHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXHJcbiAgICAgICd0b2tlbicsXHJcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcclxuICAgICk7XHJcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcclxuICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ3N0YXRlJywgZXZlbnQ/LnN0YXRlID8/IDEpO1xyXG4gICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgnZ3JjVHlwZScsIGV2ZW50Py50eXBlID8/IDApO1xyXG4gICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgncGFnZScsIGV2ZW50Py5wYWdlTm8gPz8gMSk7XHJcbiAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdyY0lkcycsIGV2ZW50Py5yY19pZHMgPz8gJycpO1xyXG4gICAgcGFyYW1zID0gZXZlbnQ/LnNlYXJjaFN0cmluZ1xyXG4gICAgICA/IHBhcmFtcy5hcHBlbmQoJ25hbWUnLCBldmVudD8uc2VhcmNoU3RyaW5nID8/ICcnKVxyXG4gICAgICA6IHBhcmFtcztcclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLmdldDxhbnlbXT4odGhpcy5lbnY/LmdyY19nZXQgKyAnZ3JjL2dldEdSQ0xpc3QnLCB7XHJcbiAgICAgICAgcGFyYW1zLFxyXG4gICAgICAgIGhlYWRlcnMsXHJcbiAgICAgIH0pXHJcbiAgICAgIC5waXBlKHJldHJ5KDEpKTtcclxuICB9XHJcblxyXG4gIGdldEdSQ1RhYnNDb3VudChldmVudD86IGFueSkge1xyXG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcclxuICAgICAgJ3Rva2VuJyxcclxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxyXG4gICAgKTtcclxuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xyXG4gICAgcGFyYW1zID0gZXZlbnQ/LnNlYXJjaFN0cmluZ1xyXG4gICAgICA/IHBhcmFtcy5hcHBlbmQoJ25hbWUnLCBldmVudD8uc2VhcmNoU3RyaW5nID8/ICcnKVxyXG4gICAgICA6IHBhcmFtcztcclxuICAgIGlmIChldmVudD8ucmNfaWRzKSB7XHJcbiAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ3JjSWRzJywgZXZlbnQ/LnJjX2lkcyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5nZXQ8YW55W10+KHRoaXMuZW52Py5ncmNfZ2V0ICsgJ2dyYy9nZXRHUkNDb3VudCcsIHtcclxuICAgICAgICBwYXJhbXMsXHJcbiAgICAgICAgaGVhZGVycyxcclxuICAgICAgfSlcclxuICAgICAgLnBpcGUocmV0cnkoMSkpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNoZWNrVmFsaWRhdGlvbihncmNQYXlsb2FkOiBBZGRHcmMsIGlzQXR0cmlidXRlc1NlbGVjdGVkOiBib29sZWFuKSB7XHJcbiAgICBjb25zdCBpc1ZhbGlkRGF0YSA9XHJcbiAgICAgIGdyY1BheWxvYWQubmFtZS50cmltKCkgIT09ICcnICYmXHJcbiAgICAgIGdyY1BheWxvYWQudHlwZSA+IC0xICYmXHJcbiAgICAgIGdyY1BheWxvYWQub3duZXJzLmxlbmd0aCAmJlxyXG4gICAgICBncmNQYXlsb2FkLnJjX2lkcy5sZW5ndGg7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICBpc1ZhbGlkRGF0YSAmJlxyXG4gICAgICAoIWlzQXR0cmlidXRlc1NlbGVjdGVkIHx8XHJcbiAgICAgICAgdGhpcy5jaGVja0F0dHJpYnV0ZVZhbGlkYXRpb24oZ3JjUGF5bG9hZC5hdHRyaWJ1dGVzKSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBjaGVja0F0dHJpYnV0ZVZhbGlkYXRpb24oYXR0cmlidXRlczogQXR0cmlidXRlc0RldGFpbHNbXSk6IGJvb2xlYW4ge1xyXG4gICAgZm9yIChjb25zdCBvYmogb2YgYXR0cmlidXRlcykge1xyXG4gICAgICBpZiAob2JqLmlzUmVxdWlyZWQpIHtcclxuICAgICAgICBpZiAob2JqLnR5cGUgPT09ICdzaW5nbGUtdGV4dGJveCcgfHwgb2JqLnR5cGUgPT09ICdkYXRlLXRpbWUnKSB7XHJcbiAgICAgICAgICBjb25zdCBjaG9pY2UgPSBvYmouY2hvaWNlc1swXTtcclxuICAgICAgICAgIGlmICh0eXBlb2YgY2hvaWNlLnZhbHVlID09PSAnc3RyaW5nJyAmJiBjaG9pY2UudmFsdWUudHJpbSgpID09PSAnJykge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIGlmIChvYmoudHlwZSA9PT0gJ2NoZWNrYm94JyB8fCBvYmoudHlwZSA9PT0gJ2Ryb3Bkb3duJykge1xyXG4gICAgICAgICAgbGV0IGlzQ2hvaWNlU2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICAgIGlmIChvYmouaGFzT3RoZXIgJiYgb2JqPy5pc19vdGhlcl9zZWxlY3RlZCkge1xyXG4gICAgICAgICAgICBpc0Nob2ljZVNlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICghaXNDaG9pY2VTZWxlY3RlZCkge1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNob2ljZSBvZiBvYmouY2hvaWNlcykge1xyXG4gICAgICAgICAgICAgIGlmIChjaG9pY2UuaXNfc2VsZWN0ZWQpIHtcclxuICAgICAgICAgICAgICAgIGlzQ2hvaWNlU2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKCFpc0Nob2ljZVNlbGVjdGVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgY2hlY2tBdHRyaWJ1dGVzU2VsZWN0ZWQoYXR0cmlidXRlczogQXR0cmlidXRlc0RldGFpbHNbXSk6IGJvb2xlYW4ge1xyXG4gICAgZm9yIChjb25zdCBvYmogb2YgYXR0cmlidXRlcykge1xyXG4gICAgICBpZiAob2JqLnR5cGUgPT09ICdzaW5nbGUtdGV4dGJveCcgfHwgb2JqLnR5cGUgPT09ICdkYXRlLXRpbWUnKSB7XHJcbiAgICAgICAgY29uc3QgY2hvaWNlID0gb2JqLmNob2ljZXNbMF07XHJcbiAgICAgICAgaWYgKHR5cGVvZiBjaG9pY2UudmFsdWUgPT09ICdzdHJpbmcnICYmIGNob2ljZS52YWx1ZS50cmltKCkgPT09ICcnKSB7XHJcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKG9iai50eXBlID09PSAnY2hlY2tib3gnIHx8IG9iai50eXBlID09PSAnZHJvcGRvd24nKSB7XHJcbiAgICAgICAgbGV0IGlzQ2hvaWNlU2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICBmb3IgKGNvbnN0IGNob2ljZSBvZiBvYmouY2hvaWNlcykge1xyXG4gICAgICAgICAgaWYgKGNob2ljZS5pc19zZWxlY3RlZCkge1xyXG4gICAgICAgICAgICBpc0Nob2ljZVNlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghaXNDaG9pY2VTZWxlY3RlZCkge1xyXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBjaGVja0VhY2hBdHRyaWJ1dGVWYWxpZGF0aW9uKGF0dHJpYnV0ZTogQXR0cmlidXRlc0RldGFpbHMpOiBib29sZWFuIHtcclxuICAgIGlmIChhdHRyaWJ1dGUuaXNSZXF1aXJlZCkge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgYXR0cmlidXRlLnR5cGUgPT09ICdzaW5nbGUtdGV4dGJveCcgfHxcclxuICAgICAgICBhdHRyaWJ1dGUudHlwZSA9PT0gJ2RhdGUtdGltZSdcclxuICAgICAgKSB7XHJcbiAgICAgICAgY29uc3QgY2hvaWNlID0gYXR0cmlidXRlLmNob2ljZXNbMF07XHJcbiAgICAgICAgaWYgKHR5cGVvZiBjaG9pY2UudmFsdWUgPT09ICdzdHJpbmcnICYmIGNob2ljZS52YWx1ZS50cmltKCkgPT09ICcnKSB7XHJcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgIGF0dHJpYnV0ZS50eXBlID09PSAnY2hlY2tib3gnIHx8XHJcbiAgICAgICAgYXR0cmlidXRlLnR5cGUgPT09ICdkcm9wZG93bidcclxuICAgICAgKSB7XHJcbiAgICAgICAgbGV0IGlzQ2hvaWNlU2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICBmb3IgKGNvbnN0IGNob2ljZSBvZiBhdHRyaWJ1dGUuY2hvaWNlcykge1xyXG4gICAgICAgICAgaWYgKGNob2ljZS5pc19zZWxlY3RlZCkge1xyXG4gICAgICAgICAgICBpc0Nob2ljZVNlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghaXNDaG9pY2VTZWxlY3RlZCkge1xyXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG4gIGdldFJpc2tDYXRlZ29yaWVzKGV2ZW50PzogYW55KSB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxyXG4gICAgICAndG9rZW4nLFxyXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXHJcbiAgICApO1xyXG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XHJcbiAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdyZXR1cm5UeXBlJywgMSk7XHJcbiAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdjYXRlZ29yeVR5cGUnLCBldmVudD8udHlwZSA/PyAxKTtcclxuICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ3BhZ2UnLCBldmVudD8ucGFnZU5vID8/IDEpO1xyXG4gICAgcGFyYW1zID0gZXZlbnQ/LnR5cGUgPT09IDAgPyBwYXJhbXMuYXBwZW5kKCdyaXNrRmxhZycsIDEpIDogcGFyYW1zO1xyXG4gICAgcGFyYW1zID0gZXZlbnQ/LnNlYXJjaFN0cmluZ1xyXG4gICAgICA/IHBhcmFtcy5hcHBlbmQoJ3EnLCBldmVudD8uc2VhcmNoU3RyaW5nID8/ICcnKVxyXG4gICAgICA6IHBhcmFtcztcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueVtdPih0aGlzLmVudj8ucmlzayArICdjYXRlZ29yeS9saXN0Jywge1xyXG4gICAgICBwYXJhbXMsXHJcbiAgICAgIGhlYWRlcnMsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldFJpc2tDYXRlZ29yaWVzQ291bnQoZXZlbnQ/OiBhbnkpIHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXHJcbiAgICAgICd0b2tlbicsXHJcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcclxuICAgICk7XHJcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcclxuICAgIHBhcmFtcyA9IGV2ZW50Py5zZWFyY2hTdHJpbmdcclxuICAgICAgPyBwYXJhbXMuYXBwZW5kKCdxJywgZXZlbnQ/LnNlYXJjaFN0cmluZyA/PyAnJylcclxuICAgICAgOiBwYXJhbXM7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnlbXT4odGhpcy5lbnY/LnJpc2sgKyAnY2F0ZWdvcnkvY291bnQnLCB7XHJcbiAgICAgIHBhcmFtcyxcclxuICAgICAgaGVhZGVycyxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0Umlza3MocGF5bG9hZD86IGFueSkge1xyXG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcclxuICAgICAgJ3Rva2VuJyxcclxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxyXG4gICAgKTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnlbXT4oXHJcbiAgICAgIHRoaXMuZW52Py5yaXNrICsgJ2NhdGVnb3J5L3Jpc2tsaXN0JyxcclxuICAgICAgcGF5bG9hZCxcclxuICAgICAge1xyXG4gICAgICAgIGhlYWRlcnMsXHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRCdXNpbmVzc0N5Y2xlKCkge1xyXG4gICAgbGV0IGJ1c2luZXNzQ3ljbGUgPSBKU09OLnBhcnNlKFxyXG4gICAgICBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnYnVzaW5lc3NDeWNsZScpID8/ICd7fSdcclxuICAgICk7XHJcbiAgICBsZXQgY3VycmVudEJ1c2luZXNzQ3ljbGUgPSB7XHJcbiAgICAgIHNlbGVjdGVkX2N5Y2xlOiBidXNpbmVzc0N5Y2xlXHJcbiAgICAgICAgPyBidXNpbmVzc0N5Y2xlPy5zZWxlY3RlZEN5Y2xlPy5zdGFydF9kYXRlICtcclxuICAgICAgICAgICctJyArXHJcbiAgICAgICAgICBidXNpbmVzc0N5Y2xlPy5zZWxlY3RlZEN5Y2xlPy5lbmRfZGF0ZVxyXG4gICAgICAgIDogJycsXHJcbiAgICAgIHN0YXJ0X2RhdGU6IGJ1c2luZXNzQ3ljbGUgPyBidXNpbmVzc0N5Y2xlPy5zZWxlY3RlZEN5Y2xlPy5zdGFydF9kYXRlIDogJycsXHJcbiAgICAgIGVuZF9kYXRlOiBidXNpbmVzc0N5Y2xlID8gYnVzaW5lc3NDeWNsZT8uc2VsZWN0ZWRDeWNsZT8uZW5kX2RhdGUgOiAnJyxcclxuICAgICAgc2VsZWN0ZWRfY3ljbGVfYXJyOiBidXNpbmVzc0N5Y2xlXHJcbiAgICAgICAgPyBidXNpbmVzc0N5Y2xlPy5zZWxlY3RlZEN5Y2xlPy5zZWxlY3RlZF9jeWNsZV9hcnJcclxuICAgICAgICA6IFtdLFxyXG4gICAgfTtcclxuICAgIHJldHVybiBjdXJyZW50QnVzaW5lc3NDeWNsZTtcclxuICB9XHJcblxyXG4gIGdldFByb2dyYW1zTGlzdChyZXE6IGFueSkge1xyXG4gICAgLy8gdGhpcy5nZXRVc2VyRGV0YWlscygpO1xyXG4gICAgbGV0IGh0dHBPcHRpb25zOiBhbnkgPSB7fTtcclxuICAgIGlmIChyZXE/LnBhcmFtcykge1xyXG4gICAgICBodHRwT3B0aW9ucy5wYXJhbXMgPSByZXEucGFyYW1zO1xyXG4gICAgfVxyXG4gICAgaWYgKHJlcT8uaGVhZGVycykge1xyXG4gICAgICBsZXQgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpO1xyXG4gICAgICBodHRwT3B0aW9ucy5oZWFkZXJzID0gaGVhZGVycy5hcHBlbmQoXHJcbiAgICAgICAgJ3BheWxvYWQtb2JqZWN0JyxcclxuICAgICAgICBKU09OLnN0cmluZ2lmeShyZXEuaGVhZGVycylcclxuICAgICAgKTtcclxuICAgICAgaHR0cE9wdGlvbnMuaGVhZGVycyA9IGh0dHBPcHRpb25zLmhlYWRlcnMuYXBwZW5kKFxyXG4gICAgICAgICd0b2tlbicsXHJcbiAgICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLmdldDxhbnlbXT4oXHJcbiAgICAgICAgdGhpcy5lbnY/LnByb2dyYW1FbmRwb2ludCArICcvY2F0ZWdvcmllc0xpc3Q/b3duZXJfbGlzdD0xJyxcclxuICAgICAgICBodHRwT3B0aW9uc1xyXG4gICAgICApXHJcbiAgICAgIC5waXBlKHJldHJ5KDIpKTtcclxuICB9XHJcblxyXG4gIGdldFByb2dyYW1zTGlzdENvdW50KHJlcTogYW55KSB7XHJcbiAgICBsZXQgaHR0cE9wdGlvbnM6IGFueSA9IHt9O1xyXG4gICAgaWYgKHJlcT8ucGFyYW1zKSB7XHJcbiAgICAgIGh0dHBPcHRpb25zLnBhcmFtcyA9IHJlcS5wYXJhbXM7XHJcbiAgICB9XHJcbiAgICBpZiAocmVxPy5oZWFkZXJzKSB7XHJcbiAgICAgIGxldCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCk7XHJcbiAgICAgIGh0dHBPcHRpb25zLmhlYWRlcnMgPSBoZWFkZXJzLmFwcGVuZChcclxuICAgICAgICAncGF5bG9hZC1vYmplY3QnLFxyXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KHJlcT8uaGVhZGVycylcclxuICAgICAgKTtcclxuICAgICAgaHR0cE9wdGlvbnMuaGVhZGVycyA9IGh0dHBPcHRpb25zLmhlYWRlcnMuYXBwZW5kKFxyXG4gICAgICAgICd0b2tlbicsXHJcbiAgICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAuZ2V0PGFueVtdPih0aGlzLmVudj8ucHJvZ3JhbUVuZHBvaW50ICsgJy9vdmVydmlldy1jb3VudCcsIGh0dHBPcHRpb25zKVxyXG4gICAgICAucGlwZShyZXRyeSgyKSk7XHJcbiAgfVxyXG5cclxuICBnZXRTdWJDYXRlZ29yeUxpc3QocGF5bG9hZDogYW55KSB7XHJcbiAgICBpZiAocGF5bG9hZD8uc2NvcGVUeXBlID09PSAnbm90X2NvbXBsZXRlZCcpIHtcclxuICAgICAgcGF5bG9hZC5zY29wZVR5cGUgPSAnbm90Q29tcGxldGVkJztcclxuICAgIH1cclxuICAgIGxldCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCk7XHJcbiAgICBoZWFkZXJzID0gaGVhZGVycy5hcHBlbmQoXHJcbiAgICAgICdwYXlsb2FkLW9iamVjdCcsXHJcbiAgICAgIEpTT04uc3RyaW5naWZ5KHBheWxvYWQ/LmJ1c2luZXNzQ3ljbGUpXHJcbiAgICApO1xyXG4gICAgaGVhZGVycyA9IGhlYWRlcnMuYXBwZW5kKCd0b2tlbicsIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKCkpO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAuZ2V0PGFueT4oXHJcbiAgICAgICAgdGhpcy5lbnY/LnByb2dyYW1FbmRwb2ludCArXHJcbiAgICAgICAgICAnL3N1YkNhdGVnb3JpZXM/aXNCdXNpbmVzc0N5Y2xlPXRydWUmcGFyZW50SWQ9JyArXHJcbiAgICAgICAgICBwYXlsb2FkPy5pZCArXHJcbiAgICAgICAgICAnJnR5cGU9JyArXHJcbiAgICAgICAgICBwYXlsb2FkPy5zY29wZVR5cGUgK1xyXG4gICAgICAgICAgKHBheWxvYWQ/LnNlYXJjaFRleHQgPyAnJnE9JyArIGVuY29kZVVSSShwYXlsb2FkPy5zZWFyY2hUZXh0KSA6ICcnKSArXHJcbiAgICAgICAgICAocGF5bG9hZD8ubmFtZSA/ICcmc29ydEJ5PScgKyBwYXlsb2FkPy5uYW1lIDogJycpICtcclxuICAgICAgICAgIChwYXlsb2FkPy5zb3J0aW5nQ291bnQgPyAnJnNvcnRWYWx1ZT0nICsgcGF5bG9hZD8uc29ydGluZ0NvdW50IDogJycpICtcclxuICAgICAgICAgICgnJnBhZ2U9JyArIHBheWxvYWQ/LnBhZ2UgPz8gMSksXHJcbiAgICAgICAgeyBoZWFkZXJzIH1cclxuICAgICAgKVxyXG4gICAgICAucGlwZShyZXRyeSgxKSk7XHJcbiAgfVxyXG5cclxuICBnZXRSZXNwb25zaWJpbGl0eUJ5Q2F0ZWdvcnlJZChcclxuICAgIHJlcTogYW55LFxyXG4gICAgcGF5bG9hZD86IGFueSxcclxuICAgIGZpbHRlclBvbGljeURhdGE/OiBhbnlcclxuICApIHtcclxuICAgIC8vIGh0dHBzOi8vZGV2YXBpLnYtY29tcGx5LmNvbS9jYXRlZ29yeS9lZGl0Q2F0ZWdvcnlcclxuICAgIGxldCBodHRwT3B0aW9uczogYW55ID0ge307XHJcbiAgICBodHRwT3B0aW9ucy5wYXJhbXMgPSByZXE7XHJcbiAgICBsZXQgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpO1xyXG4gICAgLy8gaGVhZGVycyA9IGhlYWRlcnMuYXBwZW5kKCd4LWJ1c2luZXNzLWN5Y2xlJyxKU09OLnN0cmluZ2lmeShwYXlsb2FkKSk7XHJcbiAgICBoZWFkZXJzID0gaGVhZGVycy5hcHBlbmQoJ3BheWxvYWQtb2JqZWN0JywgSlNPTi5zdHJpbmdpZnkocGF5bG9hZCkpO1xyXG4gICAgaGVhZGVycyA9IGhlYWRlcnMuYXBwZW5kKCd0b2tlbicsIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKCkpO1xyXG4gICAgaHR0cE9wdGlvbnMuaGVhZGVycyA9IGhlYWRlcnM7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5nZXQodGhpcy5lbnY/LnByb2dyYW1FbmRwb2ludCArICcvcmVzcG9uc2liaWxpdHlMaXN0JywgaHR0cE9wdGlvbnMpXHJcbiAgICAgIC5waXBlKHJldHJ5KDEpKTtcclxuICB9XHJcbn1cclxuIl19