@mediusinc/mng-commons 5.4.0-rc.5 → 5.4.0-rc.6

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 (45) hide show
  1. package/core/data-list/data-list-params-helpers.d.ts +12 -2
  2. package/esm2022/core/data-list/data-list-params-helpers.mjs +14 -8
  3. package/esm2022/filter/descriptors/filter-generic.descriptor.mjs +11 -1
  4. package/esm2022/form/components/autocomplete/autocomplete.component.mjs +10 -5
  5. package/esm2022/form/components/dropdown/dropdown.component.mjs +67 -99
  6. package/esm2022/table/api/descriptors/table.descriptor.mjs +6 -2
  7. package/esm2022/table/components/filter/filter-form/filter-form.component.mjs +11 -11
  8. package/esm2022/table/components/filter/filter-overlay-with-tag/filter-overlay-with-tag.component.mjs +4 -3
  9. package/esm2022/table/components/table/table.component.mjs +45 -9
  10. package/esm2022/tableview/action/components/editor/injector-context/action-editor-injector-context.component.mjs +4 -18
  11. package/esm2022/tableview/api/editor/descriptors/editor.descriptor.mjs +9 -1
  12. package/esm2022/tableview/api/editor/descriptors/field-group.descriptor.mjs +10 -1
  13. package/esm2022/tableview/api/tableview/descriptors/tableview.descriptor.mjs +14 -2
  14. package/esm2022/tableview/editor/components/editor/form-editor.component.mjs +24 -5
  15. package/esm2022/tableview/editor/components/formly/fields/formly-field-fieldset/formly-field-fieldset.component.mjs +3 -3
  16. package/esm2022/tableview/editor/components/formly/fields/formly-field-tabs/formly-field-tabs.component.mjs +3 -3
  17. package/esm2022/tableview/editor/helpers/editor-formly.mjs +7 -1
  18. package/fesm2022/mediusinc-mng-commons-core.mjs +13 -7
  19. package/fesm2022/mediusinc-mng-commons-core.mjs.map +1 -1
  20. package/fesm2022/mediusinc-mng-commons-filter.mjs +10 -0
  21. package/fesm2022/mediusinc-mng-commons-filter.mjs.map +1 -1
  22. package/fesm2022/mediusinc-mng-commons-form.mjs +75 -103
  23. package/fesm2022/mediusinc-mng-commons-form.mjs.map +1 -1
  24. package/fesm2022/mediusinc-mng-commons-table-api.mjs +5 -1
  25. package/fesm2022/mediusinc-mng-commons-table-api.mjs.map +1 -1
  26. package/fesm2022/mediusinc-mng-commons-table.mjs +57 -20
  27. package/fesm2022/mediusinc-mng-commons-table.mjs.map +1 -1
  28. package/fesm2022/mediusinc-mng-commons-tableview-api.mjs +30 -1
  29. package/fesm2022/mediusinc-mng-commons-tableview-api.mjs.map +1 -1
  30. package/fesm2022/mediusinc-mng-commons-tableview.mjs +35 -24
  31. package/fesm2022/mediusinc-mng-commons-tableview.mjs.map +1 -1
  32. package/filter/descriptors/filter-generic.descriptor.d.ts +5 -2
  33. package/form/components/autocomplete/autocomplete.component.d.ts +1 -0
  34. package/form/components/dropdown/dropdown.component.d.ts +5 -10
  35. package/package.json +7 -7
  36. package/table/api/descriptors/table.descriptor.d.ts +1 -0
  37. package/table/components/filter/filter-form/filter-form.component.d.ts +11 -8
  38. package/table/components/filter/filter-overlay-with-tag/filter-overlay-with-tag.component.d.ts +3 -2
  39. package/table/components/table/table.component.d.ts +6 -2
  40. package/tableview/action/components/editor/injector-context/action-editor-injector-context.component.d.ts +0 -2
  41. package/tableview/api/editor/descriptors/editor.descriptor.d.ts +3 -0
  42. package/tableview/api/editor/descriptors/field-group.descriptor.d.ts +5 -0
  43. package/tableview/api/tableview/descriptors/tableview.descriptor.d.ts +8 -0
  44. package/tableview/editor/components/editor/form-editor.component.d.ts +5 -1
  45. package/version-info.json +5 -5
@@ -72,6 +72,9 @@ export function createFormlyTabType(tabGroups, editorDescriptor, formlyConfig, f
72
72
  if (tab.title) {
73
73
  tabField.props.label = tab.title;
74
74
  }
75
+ if (tab.hiddenExpression) {
76
+ tabField.expressions['hide'] = tab.hiddenExpression;
77
+ }
75
78
  tabField.fieldGroup.push(...createFormlyGroupType(tab.fields, editorDescriptor, formlyConfig, formEditorComponent));
76
79
  tabsField.fieldGroup.push(tabField);
77
80
  }
@@ -105,6 +108,9 @@ export function createFormlyGroupType(groups, editorDescriptor, formlyConfig, fo
105
108
  if (group.title) {
106
109
  groupField.props.label = group.title;
107
110
  }
111
+ if (group.hiddenExpression) {
112
+ groupField.expressions['hide'] = group.hiddenExpression;
113
+ }
108
114
  groupField.fieldGroup.push(...createFormlyFields(group, editorDescriptor, formlyConfig, formEditorComponent));
109
115
  groupsField.fieldGroup.push(groupField);
110
116
  }
@@ -379,4 +385,4 @@ export function createFormlyValidation(config, validation, formlyConfig) {
379
385
  }
380
386
  }
381
387
  }
382
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLWZvcm1seS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9zcmMvZWRpdG9yL2hlbHBlcnMvZWRpdG9yLWZvcm1seS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxPQUFPLEVBQUMsb0JBQW9CLEVBQUUsY0FBYyxFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDakYsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQ2xELE9BQU8sRUFLSCxxQkFBcUIsRUFHckIsb0JBQW9CLEVBQ3BCLGtCQUFrQixFQUNsQixxQkFBcUIsRUFDckIseUJBQXlCLEVBQ3pCLG1CQUFtQixFQUNuQix5QkFBeUIsRUFDekIsK0JBQStCLEVBRS9CLHlCQUF5QixFQUV6Qix1QkFBdUIsRUFDdkIsdUJBQXVCLEVBQzFCLE1BQU0sc0NBQXNDLENBQUM7QUFFOUMsT0FBTyxFQUFDLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxxQkFBcUIsRUFBRSxnQkFBZ0IsRUFBRSxxQkFBcUIsRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBRTFKLE1BQU0sVUFBVSxnQ0FBZ0MsQ0FDNUMsVUFBcUMsRUFDckMsWUFBMEIsRUFDMUIsbUJBQStDO0lBRS9DLE1BQU0sTUFBTSxHQUErQixFQUFFLENBQUM7SUFFOUMsSUFBSSxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDekIsVUFBVSxHQUFHLDRCQUE0QixDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRCxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN4RixnQkFBZ0I7UUFDaEIsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLHFCQUFxQixDQUFDLFVBQVUsQ0FB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Q0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUM7WUFDekQsQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDO1NBQU0sQ0FBQztRQUNKLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQ3BDLE1BQU0sQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO1FBQzNCLENBQUM7UUFDRCxJQUFJLFVBQVUsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLENBQUM7WUFDaEMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7Z0JBQ25CLElBQUksRUFBRSxVQUFVLENBQUMsSUFBSTtnQkFDckIsT0FBTyxFQUFFLEVBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFDO2FBQ3JELENBQUMsQ0FBQztRQUNQLENBQUM7YUFBTSxDQUFDO1lBQ0osTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVDLENBQUM7SUFDTCxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWJzdHJhY3RDb250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnN9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHtGb3JtbHlDb25maWd9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuaW1wb3J0IHtWYWxpZGF0aW9uTWVzc2FnZU9wdGlvbn0gZnJvbSAnQG5neC1mb3JtbHkvY29yZS9saWIvbW9kZWxzJztcbmltcG9ydCB7Rm9ybWx5RmllbGRDb25maWd9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUvbGliL21vZGVscy9maWVsZGNvbmZpZyc7XG5cbmltcG9ydCB7Q29tbW9uc0ludGVybmFsRXJyb3IsIENvbW1vbnNTZXJ2aWNlfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuaW1wb3J0IHt0eXBlfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL21vZGVsJztcbmltcG9ydCB7XG4gICAgQUZpZWxkRGVzY3JpcHRvcixcbiAgICBDb21tb25zRm9ybWx5RmllbGRDb25maWcsXG4gICAgQ29tbW9uc0Zvcm1seVZhbGlkYXRpb24sXG4gICAgRWRpdG9yRGVzY3JpcHRvckluc3QsXG4gICAgRmllbGRBY3Rpb25EZXNjcmlwdG9yLFxuICAgIEZpZWxkQmFzZVZhbGlkYXRvcixcbiAgICBGaWVsZEdyb3VwRGVzY3JpcHRvcixcbiAgICBGaWVsZElucHV0RGVzY3JpcHRvcixcbiAgICBGaWVsZElucHV0VHlwZUVudW0sXG4gICAgRmllbGRMb29rdXBEZXNjcmlwdG9yLFxuICAgIEZpZWxkTG9va3VwRW51bURlc2NyaXB0b3IsXG4gICAgRmllbGRMb29rdXBUeXBlRW51bSxcbiAgICBGaWVsZE1hbnlFZGl0b3JEZXNjcmlwdG9yLFxuICAgIEZpZWxkTWFueVRvTWFueUVkaXRvckRlc2NyaXB0b3IsXG4gICAgRmllbGRUYWJHcm91cERlc2NyaXB0b3IsXG4gICAgRmllbGRWYWxpZGF0aW9uRGVzY3JpcHRvcixcbiAgICBJRm9ybUVkaXRvckNvbXBvbmVudCxcbiAgICBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdCxcbiAgICBUYWJsZXZpZXdFZGl0b3JUeXBlRW51bVxufSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL3RhYmxldmlldy9hcGknO1xuXG5pbXBvcnQge2VtYWlsVmFsaWRhdGlvbk5hbWUsIGVtYWlsVmFsaWRhdG9yLCBtYXhEYXRlVmFsaWRhdGlvbk5hbWUsIG1heERhdGVWYWxpZGF0b3IsIG1pbkRhdGVWYWxpZGF0aW9uTmFtZSwgbWluRGF0ZVZhbGlkYXRvcn0gZnJvbSAnLi9lZGl0b3ItdmFsaWRhdG9ycyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVGb3JtbHlDb25maWdGcm9tRGVzY3JpcHRvcjxJdGVtPihcbiAgICBkZXNjcmlwdG9yOiBFZGl0b3JEZXNjcmlwdG9ySW5zdDxhbnk+LFxuICAgIGZvcm1seUNvbmZpZzogRm9ybWx5Q29uZmlnLFxuICAgIGZvcm1FZGl0b3JDb21wb25lbnQ6IElGb3JtRWRpdG9yQ29tcG9uZW50PEl0ZW0+XG4pOiBDb21tb25zRm9ybWx5RmllbGRDb25maWdbXSB7XG4gICAgY29uc3QgZmllbGRzOiBDb21tb25zRm9ybWx5RmllbGRDb25maWdbXSA9IFtdO1xuXG4gICAgaWYgKGRlc2NyaXB0b3IuaXNMb2NhbGl6ZWQpIHtcbiAgICAgICAgZGVzY3JpcHRvciA9IGNyZWF0ZUZvcm1seUxvY2FsaXphdGlvbnNUYWIoZGVzY3JpcHRvcik7XG4gICAgfVxuXG4gICAgaWYgKCFkZXNjcmlwdG9yLmlzTG9jYWxpemVkICYmIGRlc2NyaXB0b3IudGFicy5sZW5ndGggPT09IDEgJiYgZGVzY3JpcHRvci50YWJzWzBdLmRlZmF1bHQpIHtcbiAgICAgICAgLy8gZG9udCB1c2UgdGFic1xuICAgICAgICBmaWVsZHMucHVzaCguLi5jcmVhdGVGb3JtbHlHcm91cFR5cGUoZGVzY3JpcHRvci50YWJzWzBdLmZpZWxkcywgZGVzY3JpcHRvciwgZm9ybWx5Q29uZmlnLCBmb3JtRWRpdG9yQ29tcG9uZW50KSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgZmllbGRzLnB1c2goLi4uY3JlYXRlRm9ybWx5VGFiVHlwZShkZXNjcmlwdG9yLnRhYnMsIGRlc2NyaXB0b3IsIGZvcm1seUNvbmZpZywgZm9ybUVkaXRvckNvbXBvbmVudCkpO1xuICAgIH1cblxuICAgIHJldHVybiBmaWVsZHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVGb3JtbHlMb2NhbGl6YXRpb25zVGFiPEl0ZW0+KGRlc2NyaXB0b3I6IEVkaXRvckRlc2NyaXB0b3JJbnN0PEl0ZW0+KSB7XG4gICAgaWYgKGRlc2NyaXB0b3IuaXNMb2NhbGl6ZWQgJiYgZGVzY3JpcHRvci50YWJsZXZpZXdFZGl0b3JUeXBlICE9PSBUYWJsZXZpZXdFZGl0b3JUeXBlRW51bS5EZXRhaWxzKSB7XG4gICAgICAgIGlmICghZGVzY3JpcHRvci5sb2NhbGl6YXRpb25Nb2RlbCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IENvbW1vbnNJbnRlcm5hbEVycm9yKCdMb2NhbGl6YXRpb24gbW9kZWwgbXVzdCBiZSBkZWZpbmVkLicpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGxvY2FsaXphdGlvbnNUYWJsZVZpZXdEZXNjcmlwdG9yID0gbmV3IFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PGFueSwgbmV2ZXIsIG5ldmVyLCBJdGVtPihkZXNjcmlwdG9yLmxvY2FsaXphdGlvbk1vZGVsKTtcbiAgICAgICAgaWYgKCFkZXNjcmlwdG9yLmxvY2FsaXphdGlvbkxvY2FsZVByb3BlcnR5KSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgQ29tbW9uc0ludGVybmFsRXJyb3IoJ0xvY2FsaXphdGlvbiBsb2NhbGUgcHJvcGVydHkgbXVzdCBiZSBkZWZpbmVkLicpO1xuICAgICAgICB9XG4gICAgICAgIGxvY2FsaXphdGlvbnNUYWJsZVZpZXdEZXNjcmlwdG9yLmFkZENvbHVtbihkZXNjcmlwdG9yLmxvY2FsaXphdGlvbkxvY2FsZVByb3BlcnR5KTtcbiAgICAgICAgbG9jYWxpemF0aW9uc1RhYmxlVmlld0Rlc2NyaXB0b3IuZWRpdEVkaXRvci5hZGRGaWVsZChkZXNjcmlwdG9yLmxvY2FsaXphdGlvbkxvY2FsZVByb3BlcnR5KS53aXRoRGlzYWJsZWQodHJ1ZSk7XG4gICAgICAgIGxvY2FsaXphdGlvbnNUYWJsZVZpZXdEZXNjcmlwdG9yLmRldGFpbHNFZGl0b3IuYWRkRmllbGQoZGVzY3JpcHRvci5sb2NhbGl6YXRpb25Mb2NhbGVQcm9wZXJ0eSkud2l0aERpc2FibGVkKHRydWUpO1xuICAgICAgICBsb2NhbGl6YXRpb25zVGFibGVWaWV3RGVzY3JpcHRvci5hZGRFZGl0b3JcbiAgICAgICAgICAgIC5hZGRGaWVsZExvb2t1cFdpdGhQcm92aWRlcihkZXNjcmlwdG9yLmxvY2FsaXphdGlvbkxvY2FsZVByb3BlcnR5LCBDb21tb25zU2VydmljZSwgdHlwZTxzdHJpbmc+KCkpXG4gICAgICAgICAgICAud2l0aExvb2t1cCgocXAsIHNlcnZpY2UpID0+IHNlcnZpY2UuYXBwRGF0YUxvY2FsZXMoKSlcbiAgICAgICAgICAgIC53aXRoRGlzYWJsZWQoZmFsc2UpXG4gICAgICAgICAgICAud2l0aFJlcXVpcmVkKCk7XG4gICAgICAgIGRlc2NyaXB0b3IuZmllbGRzLmZvckVhY2goZmllbGQgPT4ge1xuICAgICAgICAgICAgaWYgKGZpZWxkLmlzTG9jYWxpemVkKSB7XG4gICAgICAgICAgICAgICAgbG9jYWxpemF0aW9uc1RhYmxlVmlld0Rlc2NyaXB0b3IuYWRkQ29sdW1uKGZpZWxkLnByb3BlcnR5KTtcbiAgICAgICAgICAgICAgICBsb2NhbGl6YXRpb25zVGFibGVWaWV3RGVzY3JpcHRvci5hZGRGaWVsZChmaWVsZC5wcm9wZXJ0eSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBkZXNjcmlwdG9yV2l0aExvY2FsaXphdGlvbnMgPSBkZXNjcmlwdG9yLmNvcHkoKTtcbiAgICAgICAgZGVzY3JpcHRvcldpdGhMb2NhbGl6YXRpb25zLmNyZWF0ZVRhYkdyb3VwKCdsb2NhbGl6YXRpb25zJyk7XG4gICAgICAgIGlmICghZGVzY3JpcHRvci5sb2NhbGl6YXRpb25Mb2NhbGl6YXRpb25Qcm9wZXJ0eSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IENvbW1vbnNJbnRlcm5hbEVycm9yKCdMb2NhbGl6YXRpb24gbG9jYWxpemF0aW9uIHByb3BlcnR5IG11c3QgYmUgZGVmaW5lZCcpO1xuICAgICAgICB9XG4gICAgICAgIGRlc2NyaXB0b3JXaXRoTG9jYWxpemF0aW9ucy5hZGRGaWVsZE1hbnlFZGl0b3JVbnNhZmUoZGVzY3JpcHRvci5sb2NhbGl6YXRpb25Mb2NhbGl6YXRpb25Qcm9wZXJ0eSwgbG9jYWxpemF0aW9uc1RhYmxlVmlld0Rlc2NyaXB0b3IpO1xuXG4gICAgICAgIHJldHVybiBkZXNjcmlwdG9yV2l0aExvY2FsaXphdGlvbnM7XG4gICAgfVxuICAgIHJldHVybiBkZXNjcmlwdG9yO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRm9ybWx5VGFiVHlwZTxJdGVtPihcbiAgICB0YWJHcm91cHM6IEZpZWxkVGFiR3JvdXBEZXNjcmlwdG9yPGFueT5bXSxcbiAgICBlZGl0b3JEZXNjcmlwdG9yOiBFZGl0b3JEZXNjcmlwdG9ySW5zdDxhbnk+LFxuICAgIGZvcm1seUNvbmZpZzogRm9ybWx5Q29uZmlnLFxuICAgIGZvcm1FZGl0b3JDb21wb25lbnQ6IElGb3JtRWRpdG9yQ29tcG9uZW50PEl0ZW0+XG4pOiBDb21tb25zRm9ybWx5RmllbGRDb25maWdbXSB7XG4gICAgY29uc3QgdGFic0ZpZWxkOiBDb21tb25zRm9ybWx5RmllbGRDb25maWcgPSB7XG4gICAgICAgIHR5cGU6ICd0YWJzJyxcbiAgICAgICAgZmllbGRHcm91cDogW10sXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBmb3JtRWRpdG9yQ29tcG9uZW50LFxuICAgICAgICAgICAgZWRpdG9yRGVzY3JpcHRvcjogZWRpdG9yRGVzY3JpcHRvclxuICAgICAgICB9XG4gICAgfTtcbiAgICBmb3IgKGNvbnN0IHRhYiBvZiB0YWJHcm91cHMpIHtcbiAgICAgICAgY29uc3QgdGFiRmllbGQ6IENvbW1vbnNGb3JtbHlGaWVsZENvbmZpZyA9IHtcbiAgICAgICAgICAgIGlkOiB0YWIubmFtZSxcbiAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgICAgZm9ybUVkaXRvckNvbXBvbmVudCxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdG9yOiB0YWIsXG4gICAgICAgICAgICAgICAgZWRpdG9yRGVzY3JpcHRvcjogZWRpdG9yRGVzY3JpcHRvclxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGV4cHJlc3Npb25zOiB7fSxcbiAgICAgICAgICAgIGZpZWxkR3JvdXA6IFtdXG4gICAgICAgIH07XG4gICAgICAgIGlmICh0YWIudGl0bGUpIHtcbiAgICAgICAgICAgIHRhYkZpZWxkLnByb3BzLmxhYmVsID0gdGFiLnRpdGxlO1xuICAgICAgICB9XG4gICAgICAgIHRhYkZpZWxkLmZpZWxkR3JvdXAhLnB1c2goLi4uY3JlYXRlRm9ybWx5R3JvdXBUeXBlKHRhYi5maWVsZHMsIGVkaXRvckRlc2NyaXB0b3IsIGZvcm1seUNvbmZpZywgZm9ybUVkaXRvckNvbXBvbmVudCkpO1xuICAgICAgICB0YWJzRmllbGQuZmllbGRHcm91cCEucHVzaCh0YWJGaWVsZCk7XG4gICAgfVxuICAgIHJldHVybiBbdGFic0ZpZWxkXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZvcm1seUdyb3VwVHlwZTxJdGVtPihcbiAgICBncm91cHM6IEZpZWxkR3JvdXBEZXNjcmlwdG9yPGFueT5bXSxcbiAgICBlZGl0b3JEZXNjcmlwdG9yOiBFZGl0b3JEZXNjcmlwdG9ySW5zdDxhbnk+LFxuICAgIGZvcm1seUNvbmZpZzogRm9ybWx5Q29uZmlnLFxuICAgIGZvcm1FZGl0b3JDb21wb25lbnQ6IElGb3JtRWRpdG9yQ29tcG9uZW50PEl0ZW0+XG4pOiBDb21tb25zRm9ybWx5RmllbGRDb25maWdbXSB7XG4gICAgaWYgKGdyb3Vwcy5sZW5ndGggPT09IDEgJiYgZ3JvdXBzWzBdLmRlZmF1bHQpIHtcbiAgICAgICAgLy8gZG9udCB1c2UgZmllbGRzZXQsIGp1c3QgY3JlYXRlIGZpZWxkc1xuICAgICAgICByZXR1cm4gY3JlYXRlRm9ybWx5RmllbGRzKGdyb3Vwc1swXSwgZWRpdG9yRGVzY3JpcHRvciwgZm9ybWx5Q29uZmlnLCBmb3JtRWRpdG9yQ29tcG9uZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBncm91cHNGaWVsZDogQ29tbW9uc0Zvcm1seUZpZWxkQ29uZmlnID0ge1xuICAgICAgICAgICAgdHlwZTogJ2ZpZWxkc2V0JyxcbiAgICAgICAgICAgIGZpZWxkR3JvdXA6IFtdLFxuICAgICAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgICAgICBmb3JtRWRpdG9yQ29tcG9uZW50LFxuICAgICAgICAgICAgICAgIGVkaXRvckRlc2NyaXB0b3I6IGVkaXRvckRlc2NyaXB0b3JcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBleHByZXNzaW9uczoge31cbiAgICAgICAgfTtcbiAgICAgICAgZm9yIChjb25zdCBncm91cCBvZiBncm91cHMpIHtcbiAgICAgICAgICAgIGNvbnN0IGdyb3VwRmllbGQ6IENvbW1vbnNGb3JtbHlGaWVsZENvbmZpZzxhbnksIEl0ZW0+ID0ge1xuICAgICAgICAgICAgICAgIGlkOiBncm91cC5uYW1lLFxuICAgICAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0b3I6IGdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBlZGl0b3JEZXNjcmlwdG9yOiBlZGl0b3JEZXNjcmlwdG9yXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBleHByZXNzaW9uczoge30sXG4gICAgICAgICAgICAgICAgZmllbGRHcm91cDogW11cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpZiAoZ3JvdXAudGl0bGUpIHtcbiAgICAgICAgICAgICAgICBncm91cEZpZWxkLnByb3BzLmxhYmVsID0gZ3JvdXAudGl0bGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBncm91cEZpZWxkLmZpZWxkR3JvdXAhLnB1c2goLi4uY3JlYXRlRm9ybWx5RmllbGRzKGdyb3VwLCBlZGl0b3JEZXNjcmlwdG9yLCBmb3JtbHlDb25maWcsIGZvcm1FZGl0b3JDb21wb25lbnQpKTtcbiAgICAgICAgICAgIGdyb3Vwc0ZpZWxkLmZpZWxkR3JvdXAhLnB1c2goZ3JvdXBGaWVsZCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFtncm91cHNGaWVsZF07XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRm9ybWx5RmllbGRzPEl0ZW0+KFxuICAgIGRlc2NyaXB0b3I6IEZpZWxkR3JvdXBEZXNjcmlwdG9yPGFueT4sXG4gICAgZWRpdG9yRGVzY3JpcHRvcjogRWRpdG9yRGVzY3JpcHRvckluc3Q8YW55PixcbiAgICBmb3JtbHlDb25maWc6IEZvcm1seUNvbmZpZyxcbiAgICBmb3JtRWRpdG9yQ29tcG9uZW50OiBJRm9ybUVkaXRvckNvbXBvbmVudDxJdGVtPlxuKTogQ29tbW9uc0Zvcm1seUZpZWxkQ29uZmlnW10ge1xuICAgIGNvbnN0IGZpZWxkczogQ29tbW9uc0Zvcm1seUZpZWxkQ29uZmlnW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IGRlc2NyaXB0b3JGaWVsZCBvZiBkZXNjcmlwdG9yLmZpZWxkcykge1xuICAgICAgICBmaWVsZHMucHVzaChjcmVhdGVGb3JtbHlGaWVsZChkZXNjcmlwdG9yRmllbGQsIGVkaXRvckRlc2NyaXB0b3IsIGZvcm1seUNvbmZpZywgZm9ybUVkaXRvckNvbXBvbmVudCkpO1xuICAgIH1cbiAgICAvLyB3cmFwIGluIGdyb3VwIHRvIGJlIGFibGUgdG8gdXNlIGZsZXggZ3JpZFxuICAgIGNvbnN0IHdyYXBwZXJHcm91cDogQ29tbW9uc0Zvcm1seUZpZWxkQ29uZmlnID0ge1xuICAgICAgICBmaWVsZEdyb3VwQ2xhc3NOYW1lOiAncC1mbHVpZCBmb3JtZ3JpZCBncmlkJyxcbiAgICAgICAgZmllbGRHcm91cDogZmllbGRzLFxuICAgICAgICBwcm9wczoge31cbiAgICB9O1xuXG4gICAgYWRkVmFsaWRhdGlvbnNUb0Zvcm1seUZpZWxkKHdyYXBwZXJHcm91cCwgZGVzY3JpcHRvci52YWxpZGF0aW9ucywgZm9ybWx5Q29uZmlnKTtcblxuICAgIHJldHVybiBbd3JhcHBlckdyb3VwXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZvcm1seUZpZWxkPEl0ZW0+KFxuICAgIGRlc2NyaXB0b3I6IEFGaWVsZERlc2NyaXB0b3I8YW55LCBhbnk+LFxuICAgIGVkaXRvckRlc2NyaXB0b3I6IEVkaXRvckRlc2NyaXB0b3JJbnN0PGFueT4sXG4gICAgZm9ybWx5Q29uZmlnOiBGb3JtbHlDb25maWcsXG4gICAgZm9ybUVkaXRvckNvbXBvbmVudDogSUZvcm1FZGl0b3JDb21wb25lbnQ8SXRlbT5cbik6IENvbW1vbnNGb3JtbHlGaWVsZENvbmZpZyB7XG4gICAgY29uc3QgZmllbGQ6IENvbW1vbnNGb3JtbHlGaWVsZENvbmZpZzxhbnksIEl0ZW0+ID0ge1xuICAgICAgICBrZXk6IGRlc2NyaXB0b3IucHJvcGVydHksXG4gICAgICAgIG1vZGVsT3B0aW9uczoge1xuICAgICAgICAgICAgdXBkYXRlT246IGRlc2NyaXB0b3IudXBkYXRlT25cbiAgICAgICAgfSxcbiAgICAgICAgaG9va3M6IHtcbiAgICAgICAgICAgIG9uSW5pdDogKCkgPT4gKGRlc2NyaXB0b3Iub25Jbml0ID8gZGVzY3JpcHRvci5vbkluaXQoZmllbGQpIDogdW5kZWZpbmVkKSxcbiAgICAgICAgICAgIG9uQ2hhbmdlczogKCkgPT4gKGRlc2NyaXB0b3Iub25DaGFuZ2VzID8gZGVzY3JpcHRvci5vbkNoYW5nZXMoZmllbGQpIDogdW5kZWZpbmVkKSxcbiAgICAgICAgICAgIGFmdGVyQ29udGVudEluaXQ6ICgpID0+IChkZXNjcmlwdG9yLmFmdGVyQ29udGVudEluaXQgPyBkZXNjcmlwdG9yLmFmdGVyQ29udGVudEluaXQoZmllbGQpIDogdW5kZWZpbmVkKSxcbiAgICAgICAgICAgIGFmdGVyVmlld0luaXQ6ICgpID0+IChkZXNjcmlwdG9yLmFmdGVyVmlld0luaXQgPyBkZXNjcmlwdG9yLmFmdGVyVmlld0luaXQoZmllbGQpIDogdW5kZWZpbmVkKSxcbiAgICAgICAgICAgIG9uRGVzdHJveTogKCkgPT4gKGRlc2NyaXB0b3Iub25EZXN0cm95ID8gZGVzY3JpcHRvci5vbkRlc3Ryb3koZmllbGQpIDogdW5kZWZpbmVkKVxuICAgICAgICB9LFxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgZGVzY3JpcHRvcixcbiAgICAgICAgICAgIGZvcm1FZGl0b3JDb21wb25lbnQsXG4gICAgICAgICAgICBlZGl0b3JEZXNjcmlwdG9yOiBlZGl0b3JEZXNjcmlwdG9yLFxuICAgICAgICAgICAgb25WYWx1ZUNoYW5nZTogZGVzY3JpcHRvci5vblZhbHVlQ2hhbmdlXG4gICAgICAgIH0sXG4gICAgICAgIGV4cHJlc3Npb25zOiB7fVxuICAgIH07XG5cbiAgICBsZXQgY2xhc3NOYW1lID0gZGVzY3JpcHRvci5jbGFzc05hbWU7XG4gICAgaWYgKCFjbGFzc05hbWUpIHtcbiAgICAgICAgLy8gYXNzaWduIGRlZmF1bHQgZmllbGQgd2lkdGggdGhyb3VnaCBlbnRpcmUgcm93XG4gICAgICAgIGNsYXNzTmFtZSA9ICdjb2wtMTInO1xuICAgIH1cbiAgICBmaWVsZC5jbGFzc05hbWUgPSBjbGFzc05hbWU7XG5cbiAgICBpZiAoZGVzY3JpcHRvciBpbnN0YW5jZW9mIEZpZWxkSW5wdXREZXNjcmlwdG9yKSB7XG4gICAgICAgIHN3aXRjaCAoZGVzY3JpcHRvci5maWVsZFR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgRmllbGRJbnB1dFR5cGVFbnVtLkhpZGRlbjpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgRmllbGRJbnB1dFR5cGVFbnVtLkxhYmVsOlxuICAgICAgICAgICAgICAgIGZpZWxkLnR5cGUgPSAnbGFiZWwnO1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBmaWVsZC5rZXk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIEZpZWxkSW5wdXRUeXBlRW51bS5UZXh0YXJlYTpcbiAgICAgICAgICAgICAgICBmaWVsZC50eXBlID0gJ3RleHRhcmVhJztcbiAgICAgICAgICAgICAgICBmaWVsZC5wcm9wcy5tYXhMZW5ndGggPSBkZXNjcmlwdG9yLm1heExlbmd0aDtcbiAgICAgICAgICAgICAgICBmaWVsZC5wcm9wcy5taW5MZW5ndGggPSBkZXNjcmlwdG9yLm1pbkxlbmd0aDtcbiAgICAgICAgICAgICAgICBmaWVsZC5wcm9wcy5wYXR0ZXJuID0gZGVzY3JpcHRvci5wYXR0ZXJuO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBGaWVsZElucHV0VHlwZUVudW0uTnVtYmVyOlxuICAgICAgICAgICAgICAgIGZpZWxkLnR5cGUgPSAnbnVtYmVyJztcbiAgICAgICAgICAgICAgICBmaWVsZC5wcm9wcy5taW4gPSBkZXNjcmlwdG9yLm51bWJlck1pbjtcbiAgICAgICAgICAgICAgICBmaWVsZC5wcm9wcy5tYXggPSBkZXNjcmlwdG9yLm51bWJlck1heDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgRmllbGRJbnB1dFR5cGVFbnVtLkN1cnJlbmN5OlxuICAgICAgICAgICAgICAgIGZpZWxkLnR5cGUgPSAnY3VycmVuY3knO1xuICAgICAgICAgICAgICAgIGZpZWxkLnByb3BzLm1pbiA9IGRlc2NyaXB0b3IubnVtYmVyTWluO1xuICAgICAgICAgICAgICAgIGZpZWxkLnByb3BzLm1heCA9IGRlc2NyaXB0b3IubnVtYmVyTWF4O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBGaWVsZElucHV0VHlwZUVudW0uU3dpdGNoOlxuICAgICAgICAgICAgICAgIGZpZWxkLnR5cGUgPSAnc3dpdGNoJztcbiAgICAgICAgICAgICAgICBmaWVsZC5kZWZhdWx0VmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgRmllbGRJbnB1dFR5cGVFbnVtLlJhZGlvOlxuICAgICAgICAgICAgICAgIGZpZWxkLnR5cGUgPSAncmFkaW8nO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBGaWVsZElucHV0VHlwZUVudW0uRGF0ZXBpY2tlcjpcbiAgICAgICAgICAgICAgICBmaWVsZC50eXBlID0gJ2RhdGVwaWNrZXInO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBGaWVsZElucHV0VHlwZUVudW0uTWFzazpcbiAgICAgICAgICAgICAgICBmaWVsZC50eXBlID0gJ21hc2snO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBGaWVsZElucHV0VHlwZUVudW0uRmlsZTpcbiAgICAgICAgICAgIGNhc2UgRmllbGRJbnB1dFR5cGVFbnVtLkltYWdlRmlsZTpcbiAgICAgICAgICAgICAgICBmaWVsZC50eXBlID0gJ2ZpbGUnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBGaWVsZElucHV0VHlwZUVudW0uSW1hZ2VVcmw6XG4gICAgICAgICAgICAgICAgZmllbGQudHlwZSA9ICdpbWFnZVVybCc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIEZpZWxkSW5wdXRUeXBlRW51bS5DdXN0b206XG4gICAgICAgICAgICAgICAgaWYgKGRlc2NyaXB0b3IuY3VzdG9tQ29tcG9uZW50VHlwZSkge1xuICAgICAgICAgICAgICAgICAgICBmaWVsZC50eXBlID0gJ2N1c3RvbSc7XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkLnByb3BzWydjdXN0b21Db21wb25lbnRUeXBlJ10gPSBkZXNjcmlwdG9yLmN1c3RvbUNvbXBvbmVudFR5cGU7XG4gICAgICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGRlc2NyaXB0b3IuY3VzdG9tQ29tcG9uZW50V3JhcHBlcnMpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC53cmFwcGVycyA9IGRlc2NyaXB0b3IuY3VzdG9tQ29tcG9uZW50V3JhcHBlcnM7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBkZWZhdWx0IHdyYXBwZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLndyYXBwZXJzID0gWydmaWVsZCddO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBmaWVsZC50eXBlID0gJ2lucHV0JztcbiAgICAgICAgICAgICAgICBmaWVsZC5wcm9wcy5taW5MZW5ndGggPSBkZXNjcmlwdG9yLm1pbkxlbmd0aDtcbiAgICAgICAgICAgICAgICBmaWVsZC5wcm9wcy5tYXhMZW5ndGggPSBkZXNjcmlwdG9yLm1heExlbmd0aDtcbiAgICAgICAgICAgICAgICBmaWVsZC5wcm9wcy5wYXR0ZXJuID0gZGVzY3JpcHRvci5wYXR0ZXJuO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfSBlbHNlIGlmIChkZXNjcmlwdG9yIGluc3RhbmNlb2YgRmllbGRBY3Rpb25EZXNjcmlwdG9yKSB7XG4gICAgICAgIGZpZWxkLnR5cGUgPSAnYWN0aW9uJztcbiAgICAgICAgZmllbGQud3JhcHBlcnMgPSBkZXNjcmlwdG9yLndyYXBwZXJzO1xuICAgICAgICBkZWxldGUgZmllbGQua2V5O1xuICAgIH0gZWxzZSBpZiAoZGVzY3JpcHRvciBpbnN0YW5jZW9mIEZpZWxkTG9va3VwRW51bURlc2NyaXB0b3IpIHtcbiAgICAgICAgc3dpdGNoIChkZXNjcmlwdG9yLmxvb2t1cFR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgRmllbGRMb29rdXBUeXBlRW51bS5DdXN0b206XG4gICAgICAgICAgICAgICAgZmllbGQudHlwZSA9IGRlc2NyaXB0b3IuY3VzdG9tQ29tcG9uZW50TmFtZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgZmllbGQudHlwZSA9ICdlbnVtJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZGVzY3JpcHRvciBpbnN0YW5jZW9mIEZpZWxkTG9va3VwRGVzY3JpcHRvcikge1xuICAgICAgICBzd2l0Y2ggKGRlc2NyaXB0b3IubG9va3VwVHlwZSkge1xuICAgICAgICAgICAgY2FzZSBGaWVsZExvb2t1cFR5cGVFbnVtLkF1dG9jb21wbGV0ZTpcbiAgICAgICAgICAgICAgICBmaWVsZC50eXBlID0gJ2F1dG9jb21wbGV0ZSc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIEZpZWxkTG9va3VwVHlwZUVudW0uRGlhbG9nOlxuICAgICAgICAgICAgICAgIGZpZWxkLnR5cGUgPSAnZGlhbG9nJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgRmllbGRMb29rdXBUeXBlRW51bS5DdXN0b206XG4gICAgICAgICAgICAgICAgZmllbGQudHlwZSA9IGRlc2NyaXB0b3IuY3VzdG9tQ29tcG9uZW50TmFtZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgRmllbGRMb29rdXBUeXBlRW51bS5Ecm9wZG93bjpcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgZmllbGQudHlwZSA9ICdkcm9wZG93bic7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGRlc2NyaXB0b3IgaW5zdGFuY2VvZiBGaWVsZE1hbnlUb01hbnlFZGl0b3JEZXNjcmlwdG9yKSB7XG4gICAgICAgIGZpZWxkLnR5cGUgPSAndGFibGUtZGlhbG9nLW11bHRpc2VsZWN0JztcbiAgICB9IGVsc2UgaWYgKGRlc2NyaXB0b3IgaW5zdGFuY2VvZiBGaWVsZE1hbnlFZGl0b3JEZXNjcmlwdG9yKSB7XG4gICAgICAgIGZpZWxkLnR5cGUgPSAndGFibGUtZGlhbG9nLWZvcm0nO1xuICAgIH1cblxuICAgIGlmIChkZXNjcmlwdG9yLmxhYmVsKSB7XG4gICAgICAgIGZpZWxkLnByb3BzLmxhYmVsID0gZGVzY3JpcHRvci5sYWJlbDtcbiAgICB9XG5cbiAgICBpZiAoZGVzY3JpcHRvci5yZXF1aXJlZEV4cHJlc3Npb24pIHtcbiAgICAgICAgZmllbGQuZXhwcmVzc2lvbnMhWydwcm9wcy5yZXF1aXJlZCddID0gZGVzY3JpcHRvci5yZXF1aXJlZEV4cHJlc3Npb247XG4gICAgfVxuICAgIGlmIChkZXNjcmlwdG9yLnJlcXVpcmVkKSB7XG4gICAgICAgIGZpZWxkLnByb3BzIS5yZXF1aXJlZCA9IHRydWU7XG4gICAgICAgIGlmIChkZXNjcmlwdG9yLnJlcXVpcmVkSGlkZUxhYmVsTWFya2VyKSB7XG4gICAgICAgICAgICBmaWVsZC5wcm9wcyFbJ2hpZGVSZXF1aXJlZE1hcmtlciddID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmIChkZXNjcmlwdG9yLmhpZGRlbkV4cHJlc3Npb24pIHtcbiAgICAgICAgZmllbGQuZXhwcmVzc2lvbnMhWydoaWRlJ10gPSBkZXNjcmlwdG9yLmhpZGRlbkV4cHJlc3Npb247XG4gICAgICAgIGZpZWxkLmV4cHJlc3Npb25zIVsncmVzZXRPbkhpZGUnXSA9ICgpID0+IGRlc2NyaXB0b3IuaGlkZGVuUmVzZXRPbkhpZGUgPz8gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoZGVzY3JpcHRvci5kaXNhYmxlZEV4cHJlc3Npb24pIHtcbiAgICAgICAgZmllbGQuZXhwcmVzc2lvbnMhWydwcm9wcy5kaXNhYmxlZCddID0gZGVzY3JpcHRvci5kaXNhYmxlZEV4cHJlc3Npb247XG4gICAgfSBlbHNlIGlmIChkZXNjcmlwdG9yLmRpc2FibGVkKSB7XG4gICAgICAgIGZpZWxkLnByb3BzLmRpc2FibGVkID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBmaWVsZC5leHByZXNzaW9ucyFbJ3Byb3BzLmRpc2FibGVkJ10gPSAnZm9ybVN0YXRlLmRpc2FibGVkJztcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGRlc2NyaXB0b3IuZGVmYXVsdFZhbHVlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBmaWVsZC5kZWZhdWx0VmFsdWUgPSBkZXNjcmlwdG9yLmRlZmF1bHRWYWx1ZTtcbiAgICB9XG5cbiAgICBpZiAoZGVzY3JpcHRvciBpbnN0YW5jZW9mIEZpZWxkSW5wdXREZXNjcmlwdG9yKSB7XG4gICAgICAgIGlmIChkZXNjcmlwdG9yLnZhbGlkYXRpb25FbWFpbCkge1xuICAgICAgICAgICAgZGVzY3JpcHRvci52YWxpZGF0aW9ucy5wdXNoKG5ldyBGaWVsZFZhbGlkYXRpb25EZXNjcmlwdG9yKGVtYWlsVmFsaWRhdGlvbk5hbWUsIGVtYWlsVmFsaWRhdG9yKCkgYXMgRmllbGRCYXNlVmFsaWRhdG9yPHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQsIGFueT4pKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGVzY3JpcHRvci5kYXRlUGlja2VyTWluKSB7XG4gICAgICAgICAgICBkZXNjcmlwdG9yLnZhbGlkYXRpb25zLnB1c2goXG4gICAgICAgICAgICAgICAgbmV3IEZpZWxkVmFsaWRhdGlvbkRlc2NyaXB0b3IobWluRGF0ZVZhbGlkYXRpb25OYW1lLCBtaW5EYXRlVmFsaWRhdG9yKGRlc2NyaXB0b3IuZGF0ZVBpY2tlck1pbikgYXMgRmllbGRCYXNlVmFsaWRhdG9yPHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQsIGFueT4pXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkZXNjcmlwdG9yLmRhdGVQaWNrZXJNYXgpIHtcbiAgICAgICAgICAgIGRlc2NyaXB0b3IudmFsaWRhdGlvbnMucHVzaChcbiAgICAgICAgICAgICAgICBuZXcgRmllbGRWYWxpZGF0aW9uRGVzY3JpcHRvcihtYXhEYXRlVmFsaWRhdGlvbk5hbWUsIG1heERhdGVWYWxpZGF0b3IoZGVzY3JpcHRvci5kYXRlUGlja2VyTWF4KSBhcyBGaWVsZEJhc2VWYWxpZGF0b3I8c3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCwgYW55PilcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhZGRWYWxpZGF0aW9uc1RvRm9ybWx5RmllbGQoZmllbGQsIGRlc2NyaXB0b3IudmFsaWRhdGlvbnMsIGZvcm1seUNvbmZpZyk7XG4gICAgYWRkQXN5bmNWYWxpZGF0aW9uc1RvRm9ybWx5RmllbGQoZmllbGQsIGRlc2NyaXB0b3IuYXN5bmNWYWxpZGF0aW9ucywgZm9ybWx5Q29uZmlnKTtcblxuICAgIHJldHVybiBmaWVsZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFkZFZhbGlkYXRpb25zVG9Gb3JtbHlGaWVsZChjb25maWc6IENvbW1vbnNGb3JtbHlGaWVsZENvbmZpZywgdmFsaWRhdGlvbnM6IEFycmF5PEZpZWxkVmFsaWRhdGlvbkRlc2NyaXB0b3I8YW55LCBhbnk+PiwgZm9ybWx5Q29uZmlnOiBGb3JtbHlDb25maWcpIHtcbiAgICBpZiAoIWNvbmZpZy52YWxpZGF0b3JzKSB7XG4gICAgICAgIGNvbmZpZy52YWxpZGF0b3JzID0ge307XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCB2YWxpZGF0aW9uIG9mIHZhbGlkYXRpb25zKSB7XG4gICAgICAgIGNyZWF0ZUZvcm1seVZhbGlkYXRpb24oY29uZmlnLnZhbGlkYXRvcnMsIHZhbGlkYXRpb24sIGZvcm1seUNvbmZpZyk7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYWRkQXN5bmNWYWxpZGF0aW9uc1RvRm9ybWx5RmllbGQoY29uZmlnOiBDb21tb25zRm9ybWx5RmllbGRDb25maWcsIGFzeW5jVmFsaWRhdGlvbnM6IEFycmF5PEZpZWxkVmFsaWRhdGlvbkRlc2NyaXB0b3I8YW55LCBhbnk+PiwgZm9ybWx5Q29uZmlnOiBGb3JtbHlDb25maWcpIHtcbiAgICBpZiAoIWNvbmZpZy5hc3luY1ZhbGlkYXRvcnMpIHtcbiAgICAgICAgY29uZmlnLmFzeW5jVmFsaWRhdG9ycyA9IHt9O1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgdmFsaWRhdGlvbiBvZiBhc3luY1ZhbGlkYXRpb25zKSB7XG4gICAgICAgIGNyZWF0ZUZvcm1seVZhbGlkYXRpb24oY29uZmlnLmFzeW5jVmFsaWRhdG9ycywgdmFsaWRhdGlvbiwgZm9ybWx5Q29uZmlnKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVGb3JtbHlWYWxpZGF0aW9uKGNvbmZpZzogTm9uTnVsbGFibGU8Q29tbW9uc0Zvcm1seVZhbGlkYXRpb24+LCB2YWxpZGF0aW9uOiBGaWVsZFZhbGlkYXRpb25EZXNjcmlwdG9yPGFueSwgYW55PiwgZm9ybWx5Q29uZmlnOiBGb3JtbHlDb25maWcpIHtcbiAgICBpZiAodHlwZW9mIHZhbGlkYXRpb24udmFsaWRhdG9yID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGlmICh2YWxpZGF0aW9uLm9wdGlvbnM/LmVycm9yUGF0aCAmJiB2YWxpZGF0aW9uLm1lc3NhZ2UgIT0gbnVsbCkge1xuICAgICAgICAgICAgLy8gaWYgdGhpcyBpcyB1c2VkLCB0aGUgdmFsaWRhdG9yIGFuZCBtZXNzYWdlIG11c3QgYmUgcmVnaXN0ZXJlZCBnbG9iYWxseVxuICAgICAgICAgICAgaWYgKCFmb3JtbHlDb25maWcuZ2V0VmFsaWRhdG9yTWVzc2FnZSh2YWxpZGF0aW9uLm5hbWUpKSB7XG4gICAgICAgICAgICAgICAgZm9ybWx5Q29uZmlnLmFkZFZhbGlkYXRvck1lc3NhZ2UodmFsaWRhdGlvbi5uYW1lLCB2YWxpZGF0aW9uLm1lc3NhZ2UgYXMgVmFsaWRhdGlvbk1lc3NhZ2VPcHRpb25bJ21lc3NhZ2UnXSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghZm9ybWx5Q29uZmlnLnZhbGlkYXRvcnNbdmFsaWRhdGlvbi5uYW1lXSkge1xuICAgICAgICAgICAgICAgIGZvcm1seUNvbmZpZy5zZXRWYWxpZGF0b3Ioe1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiB2YWxpZGF0aW9uLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb246IChjb250cm9sLCBmaWVsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29tbW9uc0ZpZWxkRm9ybWx5Q29uZmlnID0gZmllbGQgYXMgQ29tbW9uc0Zvcm1seUZpZWxkQ29uZmlnO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRpb24udmFsaWRhdG9yISh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRGb3JtQ29udHJvbDogY29udHJvbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtOiBjb21tb25zRmllbGRGb3JtbHlDb25maWcuZm9ybSBhcyBGb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRGb3JtbHlDb25maWc6IGZpZWxkIGFzIENvbW1vbnNGb3JtbHlGaWVsZENvbmZpZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29tcG9uZW50OiBjb21tb25zRmllbGRGb3JtbHlDb25maWcucHJvcHM/LmZvcm1FZGl0b3JDb21wb25lbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRDb21wb25lbnQ6IGNvbW1vbnNGaWVsZEZvcm1seUNvbmZpZy5wcm9wcz8uZmllbGRDb21wb25lbnRcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiA8VmFsaWRhdG9ycz57W3ZhbGlkYXRpb24ubmFtZV06IHRydWV9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShjb25maWcudmFsaWRhdGlvbikpIHtcbiAgICAgICAgICAgICAgICBjb25maWcudmFsaWRhdGlvbiA9IFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uZmlnLnZhbGlkYXRpb24ucHVzaCh7XG4gICAgICAgICAgICAgICAgbmFtZTogdmFsaWRhdGlvbi5uYW1lLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHtlcnJvclBhdGg6IHZhbGlkYXRpb24ub3B0aW9ucy5lcnJvclBhdGh9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbmZpZ1t2YWxpZGF0aW9uLm5hbWVdID0ge1xuICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIGZpZWxkOiBGb3JtbHlGaWVsZENvbmZpZykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb21tb25zRmllbGRGb3JtbHlDb25maWcgPSBmaWVsZCBhcyBDb21tb25zRm9ybWx5RmllbGRDb25maWc7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWxpZGF0aW9uLnZhbGlkYXRvciEoe1xuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRGb3JtQ29udHJvbDogY29udHJvbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm06IGNvbW1vbnNGaWVsZEZvcm1seUNvbmZpZy5mb3JtIGFzIEZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkRm9ybWx5Q29uZmlnOiBjb21tb25zRmllbGRGb3JtbHlDb25maWcsXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29tcG9uZW50OiBjb21tb25zRmllbGRGb3JtbHlDb25maWcucHJvcHM/LmZvcm1FZGl0b3JDb21wb25lbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZENvbXBvbmVudDogY29tbW9uc0ZpZWxkRm9ybWx5Q29uZmlnLnByb3BzPy5maWVsZENvbXBvbmVudFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYgKHZhbGlkYXRpb24ubWVzc2FnZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgY29uZmlnW3ZhbGlkYXRpb24ubmFtZV0ubWVzc2FnZSA9IHZhbGlkYXRpb24ubWVzc2FnZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShjb25maWcudmFsaWRhdGlvbikpIHtcbiAgICAgICAgICAgIGNvbmZpZy52YWxpZGF0aW9uID0gW107XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbGlkYXRpb24ub3B0aW9ucz8uZXJyb3JQYXRoKSB7XG4gICAgICAgICAgICBjb25maWcudmFsaWRhdGlvbi5wdXNoKHtcbiAgICAgICAgICAgICAgICBuYW1lOiB2YWxpZGF0aW9uLm5hbWUsXG4gICAgICAgICAgICAgICAgb3B0aW9uczoge2Vycm9yUGF0aDogdmFsaWRhdGlvbi5vcHRpb25zLmVycm9yUGF0aH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uZmlnLnZhbGlkYXRpb24ucHVzaCh2YWxpZGF0aW9uLm5hbWUpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
388
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLWZvcm1seS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9zcmMvZWRpdG9yL2hlbHBlcnMvZWRpdG9yLWZvcm1seS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPQSxPQUFPLEVBQUMsb0JBQW9CLEVBQUUsY0FBYyxFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDakYsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQ2xELE9BQU8sRUFLSCxxQkFBcUIsRUFHckIsb0JBQW9CLEVBQ3BCLGtCQUFrQixFQUNsQixxQkFBcUIsRUFDckIseUJBQXlCLEVBQ3pCLG1CQUFtQixFQUNuQix5QkFBeUIsRUFDekIsK0JBQStCLEVBRS9CLHlCQUF5QixFQUV6Qix1QkFBdUIsRUFDdkIsdUJBQXVCLEVBQzFCLE1BQU0sc0NBQXNDLENBQUM7QUFFOUMsT0FBTyxFQUFDLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxxQkFBcUIsRUFBRSxnQkFBZ0IsRUFBRSxxQkFBcUIsRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBRTFKLE1BQU0sVUFBVSxnQ0FBZ0MsQ0FDNUMsVUFBcUMsRUFDckMsWUFBMEIsRUFDMUIsbUJBQStDO0lBRS9DLE1BQU0sTUFBTSxHQUErQixFQUFFLENBQUM7SUFFOUMsSUFBSSxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDekIsVUFBVSxHQUFHLDRCQUE0QixDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRCxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN4RixnQkFBZ0I7UUFDaEIsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLHFCQUFxQixDQUFDLFVBQVUsQ0FB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LENBQUMsSUFBaUI7d0JBQ2hELGlCQUFpQixFQUFFLHdCQUF3Qjt3QkFDM0MsYUFBYSxFQUFFLHdCQUF3QixDQUFDLEtBQUssRUFBRSxtQkFBbUI7d0JBQ2xFLGNBQWMsRUFBRSx3QkFBd0IsQ0FBQyxLQUFLLEVBQUUsY0FBYztxQkFDakUsQ0FBQyxDQUFDO2dCQUNQLENBQUM7YUFDSixDQUFDO1lBQ0YsSUFBSSxVQUFVLENBQUMsT0FBTyxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUM3QixNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDO1lBQ3pELENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQztTQUFNLENBQUM7UUFDSixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUNwQyxNQUFNLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztRQUMzQixDQUFDO1FBQ0QsSUFBSSxVQUFVLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxDQUFDO1lBQ2hDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO2dCQUNuQixJQUFJLEVBQUUsVUFBVSxDQUFDLElBQUk7Z0JBQ3JCLE9BQU8sRUFBRSxFQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBQzthQUNyRCxDQUFDLENBQUM7UUFDUCxDQUFDO2FBQU0sQ0FBQztZQUNKLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1QyxDQUFDO0lBQ0wsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0Fic3RyYWN0Q29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7Rm9ybWx5Q29uZmlnfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7VmFsaWRhdGlvbk1lc3NhZ2VPcHRpb259IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUvbGliL21vZGVscyc7XG5pbXBvcnQge0Zvcm1seUZpZWxkQ29uZmlnfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlL2xpYi9tb2RlbHMvZmllbGRjb25maWcnO1xuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtDb21tb25zSW50ZXJuYWxFcnJvciwgQ29tbW9uc1NlcnZpY2V9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvY29yZSc7XG5pbXBvcnQge3R5cGV9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvbW9kZWwnO1xuaW1wb3J0IHtcbiAgICBBRmllbGREZXNjcmlwdG9yLFxuICAgIENvbW1vbnNGb3JtbHlGaWVsZENvbmZpZyxcbiAgICBDb21tb25zRm9ybWx5VmFsaWRhdGlvbixcbiAgICBFZGl0b3JEZXNjcmlwdG9ySW5zdCxcbiAgICBGaWVsZEFjdGlvbkRlc2NyaXB0b3IsXG4gICAgRmllbGRCYXNlVmFsaWRhdG9yLFxuICAgIEZpZWxkR3JvdXBEZXNjcmlwdG9yLFxuICAgIEZpZWxkSW5wdXREZXNjcmlwdG9yLFxuICAgIEZpZWxkSW5wdXRUeXBlRW51bSxcbiAgICBGaWVsZExvb2t1cERlc2NyaXB0b3IsXG4gICAgRmllbGRMb29rdXBFbnVtRGVzY3JpcHRvcixcbiAgICBGaWVsZExvb2t1cFR5cGVFbnVtLFxuICAgIEZpZWxkTWFueUVkaXRvckRlc2NyaXB0b3IsXG4gICAgRmllbGRNYW55VG9NYW55RWRpdG9yRGVzY3JpcHRvcixcbiAgICBGaWVsZFRhYkdyb3VwRGVzY3JpcHRvcixcbiAgICBGaWVsZFZhbGlkYXRpb25EZXNjcmlwdG9yLFxuICAgIElGb3JtRWRpdG9yQ29tcG9uZW50LFxuICAgIFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0LFxuICAgIFRhYmxldmlld0VkaXRvclR5cGVFbnVtXG59IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvdGFibGV2aWV3L2FwaSc7XG5cbmltcG9ydCB7ZW1haWxWYWxpZGF0aW9uTmFtZSwgZW1haWxWYWxpZGF0b3IsIG1heERhdGVWYWxpZGF0aW9uTmFtZSwgbWF4RGF0ZVZhbGlkYXRvciwgbWluRGF0ZVZhbGlkYXRpb25OYW1lLCBtaW5EYXRlVmFsaWRhdG9yfSBmcm9tICcuL2VkaXRvci12YWxpZGF0b3JzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZvcm1seUNvbmZpZ0Zyb21EZXNjcmlwdG9yPEl0ZW0+KFxuICAgIGRlc2NyaXB0b3I6IEVkaXRvckRlc2NyaXB0b3JJbnN0PGFueT4sXG4gICAgZm9ybWx5Q29uZmlnOiBGb3JtbHlDb25maWcsXG4gICAgZm9ybUVkaXRvckNvbXBvbmVudDogSUZvcm1FZGl0b3JDb21wb25lbnQ8SXRlbT5cbik6IENvbW1vbnNGb3JtbHlGaWVsZENvbmZpZ1tdIHtcbiAgICBjb25zdCBmaWVsZHM6IENvbW1vbnNGb3JtbHlGaWVsZENvbmZpZ1tdID0gW107XG5cbiAgICBpZiAoZGVzY3JpcHRvci5pc0xvY2FsaXplZCkge1xuICAgICAgICBkZXNjcmlwdG9yID0gY3JlYXRlRm9ybWx5TG9jYWxpemF0aW9uc1RhYihkZXNjcmlwdG9yKTtcbiAgICB9XG5cbiAgICBpZiAoIWRlc2NyaXB0b3IuaXNMb2NhbGl6ZWQgJiYgZGVzY3JpcHRvci50YWJzLmxlbmd0aCA9PT0gMSAmJiBkZXNjcmlwdG9yLnRhYnNbMF0uZGVmYXVsdCkge1xuICAgICAgICAvLyBkb250IHVzZSB0YWJzXG4gICAgICAgIGZpZWxkcy5wdXNoKC4uLmNyZWF0ZUZvcm1seUdyb3VwVHlwZShkZXNjcmlwdG9yLnRhYnNbMF0uZmllbGRzLCBkZXNjcmlwdG9yLCBmb3JtbHlDb25maWcsIGZvcm1FZGl0b3JDb21wb25lbnQpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBmaWVsZHMucHVzaCguLi5jcmVhdGVGb3JtbHlUYWJUeXBlKGRlc2NyaXB0b3IudGFicywgZGVzY3JpcHRvciwgZm9ybWx5Q29uZmlnLCBmb3JtRWRpdG9yQ29tcG9uZW50KSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZpZWxkcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZvcm1seUxvY2FsaXphdGlvbnNUYWI8SXRlbT4oZGVzY3JpcHRvcjogRWRpdG9yRGVzY3JpcHRvckluc3Q8SXRlbT4pIHtcbiAgICBpZiAoZGVzY3JpcHRvci5pc0xvY2FsaXplZCAmJiBkZXNjcmlwdG9yLnRhYmxldmlld0VkaXRvclR5cGUgIT09IFRhYmxldmlld0VkaXRvclR5cGVFbnVtLkRldGFpbHMpIHtcbiAgICAgICAgaWYgKCFkZXNjcmlwdG9yLmxvY2FsaXphdGlvbk1vZGVsKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgQ29tbW9uc0ludGVybmFsRXJyb3IoJ0xvY2FsaXphdGlvbiBtb2RlbCBtdXN0IGJlIGRlZmluZWQuJyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbG9jYWxpemF0aW9uc1RhYmxlVmlld0Rlc2NyaXB0b3IgPSBuZXcgVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8YW55LCBuZXZlciwgbmV2ZXIsIEl0ZW0+KGRlc2NyaXB0b3IubG9jYWxpemF0aW9uTW9kZWwpO1xuICAgICAgICBpZiAoIWRlc2NyaXB0b3IubG9jYWxpemF0aW9uTG9jYWxlUHJvcGVydHkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBDb21tb25zSW50ZXJuYWxFcnJvcignTG9jYWxpemF0aW9uIGxvY2FsZSBwcm9wZXJ0eSBtdXN0IGJlIGRlZmluZWQuJyk7XG4gICAgICAgIH1cbiAgICAgICAgbG9jYWxpemF0aW9uc1RhYmxlVmlld0Rlc2NyaXB0b3IuYWRkQ29sdW1uKGRlc2NyaXB0b3IubG9jYWxpemF0aW9uTG9jYWxlUHJvcGVydHkpO1xuICAgICAgICBsb2NhbGl6YXRpb25zVGFibGVWaWV3RGVzY3JpcHRvci5lZGl0RWRpdG9yLmFkZEZpZWxkKGRlc2NyaXB0b3IubG9jYWxpemF0aW9uTG9jYWxlUHJvcGVydHkpLndpdGhEaXNhYmxlZCh0cnVlKTtcbiAgICAgICAgbG9jYWxpemF0aW9uc1RhYmxlVmlld0Rlc2NyaXB0b3IuZGV0YWlsc0VkaXRvci5hZGRGaWVsZChkZXNjcmlwdG9yLmxvY2FsaXphdGlvbkxvY2FsZVByb3BlcnR5KS53aXRoRGlzYWJsZWQodHJ1ZSk7XG4gICAgICAgIGxvY2FsaXphdGlvbnNUYWJsZVZpZXdEZXNjcmlwdG9yLmFkZEVkaXRvclxuICAgICAgICAgICAgLmFkZEZpZWxkTG9va3VwV2l0aFByb3ZpZGVyKGRlc2NyaXB0b3IubG9jYWxpemF0aW9uTG9jYWxlUHJvcGVydHksIENvbW1vbnNTZXJ2aWNlLCB0eXBlPHN0cmluZz4oKSlcbiAgICAgICAgICAgIC53aXRoTG9va3VwKChxcCwgc2VydmljZSkgPT4gc2VydmljZS5hcHBEYXRhTG9jYWxlcygpKVxuICAgICAgICAgICAgLndpdGhEaXNhYmxlZChmYWxzZSlcbiAgICAgICAgICAgIC53aXRoUmVxdWlyZWQoKTtcbiAgICAgICAgZGVzY3JpcHRvci5maWVsZHMuZm9yRWFjaChmaWVsZCA9PiB7XG4gICAgICAgICAgICBpZiAoZmllbGQuaXNMb2NhbGl6ZWQpIHtcbiAgICAgICAgICAgICAgICBsb2NhbGl6YXRpb25zVGFibGVWaWV3RGVzY3JpcHRvci5hZGRDb2x1bW4oZmllbGQucHJvcGVydHkpO1xuICAgICAgICAgICAgICAgIGxvY2FsaXphdGlvbnNUYWJsZVZpZXdEZXNjcmlwdG9yLmFkZEZpZWxkKGZpZWxkLnByb3BlcnR5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGRlc2NyaXB0b3JXaXRoTG9jYWxpemF0aW9ucyA9IGRlc2NyaXB0b3IuY29weSgpO1xuICAgICAgICBkZXNjcmlwdG9yV2l0aExvY2FsaXphdGlvbnMuY3JlYXRlVGFiR3JvdXAoJ2xvY2FsaXphdGlvbnMnKTtcbiAgICAgICAgaWYgKCFkZXNjcmlwdG9yLmxvY2FsaXphdGlvbkxvY2FsaXphdGlvblByb3BlcnR5KSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgQ29tbW9uc0ludGVybmFsRXJyb3IoJ0xvY2FsaXphdGlvbiBsb2NhbGl6YXRpb24gcHJvcGVydHkgbXVzdCBiZSBkZWZpbmVkJyk7XG4gICAgICAgIH1cbiAgICAgICAgZGVzY3JpcHRvcldpdGhMb2NhbGl6YXRpb25zLmFkZEZpZWxkTWFueUVkaXRvclVuc2FmZShkZXNjcmlwdG9yLmxvY2FsaXphdGlvbkxvY2FsaXphdGlvblByb3BlcnR5LCBsb2NhbGl6YXRpb25zVGFibGVWaWV3RGVzY3JpcHRvcik7XG5cbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3JXaXRoTG9jYWxpemF0aW9ucztcbiAgICB9XG4gICAgcmV0dXJuIGRlc2NyaXB0b3I7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVGb3JtbHlUYWJUeXBlPEl0ZW0+KFxuICAgIHRhYkdyb3VwczogRmllbGRUYWJHcm91cERlc2NyaXB0b3I8YW55PltdLFxuICAgIGVkaXRvckRlc2NyaXB0b3I6IEVkaXRvckRlc2NyaXB0b3JJbnN0PGFueT4sXG4gICAgZm9ybWx5Q29uZmlnOiBGb3JtbHlDb25maWcsXG4gICAgZm9ybUVkaXRvckNvbXBvbmVudDogSUZvcm1FZGl0b3JDb21wb25lbnQ8SXRlbT5cbik6IENvbW1vbnNGb3JtbHlGaWVsZENvbmZpZ1tdIHtcbiAgICBjb25zdCB0YWJzRmllbGQ6IENvbW1vbnNGb3JtbHlGaWVsZENvbmZpZyA9IHtcbiAgICAgICAgdHlwZTogJ3RhYnMnLFxuICAgICAgICBmaWVsZEdyb3VwOiBbXSxcbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIGZvcm1FZGl0b3JDb21wb25lbnQsXG4gICAgICAgICAgICBlZGl0b3JEZXNjcmlwdG9yOiBlZGl0b3JEZXNjcmlwdG9yXG4gICAgICAgIH1cbiAgICB9O1xuICAgIGZvciAoY29uc3QgdGFiIG9mIHRhYkdyb3Vwcykge1xuICAgICAgICBjb25zdCB0YWJGaWVsZDogQ29tbW9uc0Zvcm1seUZpZWxkQ29uZmlnID0ge1xuICAgICAgICAgICAgaWQ6IHRhYi5uYW1lLFxuICAgICAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgICAgICBmb3JtRWRpdG9yQ29tcG9uZW50LFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0b3I6IHRhYixcbiAgICAgICAgICAgICAgICBlZGl0b3JEZXNjcmlwdG9yOiBlZGl0b3JEZXNjcmlwdG9yXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZXhwcmVzc2lvbnM6IHt9LFxuICAgICAgICAgICAgZmllbGRHcm91cDogW11cbiAgICAgICAgfTtcbiAgICAgICAgaWYgKHRhYi50aXRsZSkge1xuICAgICAgICAgICAgdGFiRmllbGQucHJvcHMubGFiZWwgPSB0YWIudGl0bGU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGFiLmhpZGRlbkV4cHJlc3Npb24pIHtcbiAgICAgICAgICAgIHRhYkZpZWxkLmV4cHJlc3Npb25zIVsnaGlkZSddID0gdGFiLmhpZGRlbkV4cHJlc3Npb24gYXMgc3RyaW5nIHwgKChmaWVsZDogRm9ybWx5RmllbGRDb25maWcpID0+IGFueSkgfCBPYnNlcnZhYmxlPGFueT47XG4gICAgICAgIH1cblxuICAgICAgICB0YWJGaWVsZC5maWVsZEdyb3VwIS5wdXNoKC4uLmNyZWF0ZUZvcm1seUdyb3VwVHlwZSh0YWIuZmllbGRzLCBlZGl0b3JEZXNjcmlwdG9yLCBmb3JtbHlDb25maWcsIGZvcm1FZGl0b3JDb21wb25lbnQpKTtcbiAgICAgICAgdGFic0ZpZWxkLmZpZWxkR3JvdXAhLnB1c2godGFiRmllbGQpO1xuICAgIH1cbiAgICByZXR1cm4gW3RhYnNGaWVsZF07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVGb3JtbHlHcm91cFR5cGU8SXRlbT4oXG4gICAgZ3JvdXBzOiBGaWVsZEdyb3VwRGVzY3JpcHRvcjxhbnk+W10sXG4gICAgZWRpdG9yRGVzY3JpcHRvcjogRWRpdG9yRGVzY3JpcHRvckluc3Q8YW55PixcbiAgICBmb3JtbHlDb25maWc6IEZvcm1seUNvbmZpZyxcbiAgICBmb3JtRWRpdG9yQ29tcG9uZW50OiBJRm9ybUVkaXRvckNvbXBvbmVudDxJdGVtPlxuKTogQ29tbW9uc0Zvcm1seUZpZWxkQ29uZmlnW10ge1xuICAgIGlmIChncm91cHMubGVuZ3RoID09PSAxICYmIGdyb3Vwc1swXS5kZWZhdWx0KSB7XG4gICAgICAgIC8vIGRvbnQgdXNlIGZpZWxkc2V0LCBqdXN0IGNyZWF0ZSBmaWVsZHNcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUZvcm1seUZpZWxkcyhncm91cHNbMF0sIGVkaXRvckRlc2NyaXB0b3IsIGZvcm1seUNvbmZpZywgZm9ybUVkaXRvckNvbXBvbmVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgZ3JvdXBzRmllbGQ6IENvbW1vbnNGb3JtbHlGaWVsZENvbmZpZyA9IHtcbiAgICAgICAgICAgIHR5cGU6ICdmaWVsZHNldCcsXG4gICAgICAgICAgICBmaWVsZEdyb3VwOiBbXSxcbiAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgICAgZm9ybUVkaXRvckNvbXBvbmVudCxcbiAgICAgICAgICAgICAgICBlZGl0b3JEZXNjcmlwdG9yOiBlZGl0b3JEZXNjcmlwdG9yXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZXhwcmVzc2lvbnM6IHt9XG4gICAgICAgIH07XG5cbiAgICAgICAgZm9yIChjb25zdCBncm91cCBvZiBncm91cHMpIHtcbiAgICAgICAgICAgIGNvbnN0IGdyb3VwRmllbGQ6IENvbW1vbnNGb3JtbHlGaWVsZENvbmZpZzxhbnksIEl0ZW0+ID0ge1xuICAgICAgICAgICAgICAgIGlkOiBncm91cC5uYW1lLFxuICAgICAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0b3I6IGdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBlZGl0b3JEZXNjcmlwdG9yOiBlZGl0b3JEZXNjcmlwdG9yXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBleHByZXNzaW9uczoge30sXG4gICAgICAgICAgICAgICAgZmllbGRHcm91cDogW11cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpZiAoZ3JvdXAudGl0bGUpIHtcbiAgICAgICAgICAgICAgICBncm91cEZpZWxkLnByb3BzLmxhYmVsID0gZ3JvdXAudGl0bGU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChncm91cC5oaWRkZW5FeHByZXNzaW9uKSB7XG4gICAgICAgICAgICAgICAgZ3JvdXBGaWVsZC5leHByZXNzaW9ucyFbJ2hpZGUnXSA9IGdyb3VwLmhpZGRlbkV4cHJlc3Npb24gYXMgc3RyaW5nIHwgKChmaWVsZDogRm9ybWx5RmllbGRDb25maWcpID0+IGFueSkgfCBPYnNlcnZhYmxlPGFueT47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGdyb3VwRmllbGQuZmllbGRHcm91cCEucHVzaCguLi5jcmVhdGVGb3JtbHlGaWVsZHMoZ3JvdXAsIGVkaXRvckRlc2NyaXB0b3IsIGZvcm1seUNvbmZpZywgZm9ybUVkaXRvckNvbXBvbmVudCkpO1xuICAgICAgICAgICAgZ3JvdXBzRmllbGQuZmllbGRHcm91cCEucHVzaChncm91cEZpZWxkKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW2dyb3Vwc0ZpZWxkXTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVGb3JtbHlGaWVsZHM8SXRlbT4oXG4gICAgZGVzY3JpcHRvcjogRmllbGRHcm91cERlc2NyaXB0b3I8YW55PixcbiAgICBlZGl0b3JEZXNjcmlwdG9yOiBFZGl0b3JEZXNjcmlwdG9ySW5zdDxhbnk+LFxuICAgIGZvcm1seUNvbmZpZzogRm9ybWx5Q29uZmlnLFxuICAgIGZvcm1FZGl0b3JDb21wb25lbnQ6IElGb3JtRWRpdG9yQ29tcG9uZW50PEl0ZW0+XG4pOiBDb21tb25zRm9ybWx5RmllbGRDb25maWdbXSB7XG4gICAgY29uc3QgZmllbGRzOiBDb21tb25zRm9ybWx5RmllbGRDb25maWdbXSA9IFtdO1xuICAgIGZvciAoY29uc3QgZGVzY3JpcHRvckZpZWxkIG9mIGRlc2NyaXB0b3IuZmllbGRzKSB7XG4gICAgICAgIGZpZWxkcy5wdXNoKGNyZWF0ZUZvcm1seUZpZWxkKGRlc2NyaXB0b3JGaWVsZCwgZWRpdG9yRGVzY3JpcHRvciwgZm9ybWx5Q29uZmlnLCBmb3JtRWRpdG9yQ29tcG9uZW50KSk7XG4gICAgfVxuICAgIC8vIHdyYXAgaW4gZ3JvdXAgdG8gYmUgYWJsZSB0byB1c2UgZmxleCBncmlkXG4gICAgY29uc3Qgd3JhcHBlckdyb3VwOiBDb21tb25zRm9ybWx5RmllbGRDb25maWcgPSB7XG4gICAgICAgIGZpZWxkR3JvdXBDbGFzc05hbWU6ICdwLWZsdWlkIGZvcm1ncmlkIGdyaWQnLFxuICAgICAgICBmaWVsZEdyb3VwOiBmaWVsZHMsXG4gICAgICAgIHByb3BzOiB7fVxuICAgIH07XG5cbiAgICBhZGRWYWxpZGF0aW9uc1RvRm9ybWx5RmllbGQod3JhcHBlckdyb3VwLCBkZXNjcmlwdG9yLnZhbGlkYXRpb25zLCBmb3JtbHlDb25maWcpO1xuXG4gICAgcmV0dXJuIFt3cmFwcGVyR3JvdXBdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRm9ybWx5RmllbGQ8SXRlbT4oXG4gICAgZGVzY3JpcHRvcjogQUZpZWxkRGVzY3JpcHRvcjxhbnksIGFueT4sXG4gICAgZWRpdG9yRGVzY3JpcHRvcjogRWRpdG9yRGVzY3JpcHRvckluc3Q8YW55PixcbiAgICBmb3JtbHlDb25maWc6IEZvcm1seUNvbmZpZyxcbiAgICBmb3JtRWRpdG9yQ29tcG9uZW50OiBJRm9ybUVkaXRvckNvbXBvbmVudDxJdGVtPlxuKTogQ29tbW9uc0Zvcm1seUZpZWxkQ29uZmlnIHtcbiAgICBjb25zdCBmaWVsZDogQ29tbW9uc0Zvcm1seUZpZWxkQ29uZmlnPGFueSwgSXRlbT4gPSB7XG4gICAgICAgIGtleTogZGVzY3JpcHRvci5wcm9wZXJ0eSxcbiAgICAgICAgbW9kZWxPcHRpb25zOiB7XG4gICAgICAgICAgICB1cGRhdGVPbjogZGVzY3JpcHRvci51cGRhdGVPblxuICAgICAgICB9LFxuICAgICAgICBob29rczoge1xuICAgICAgICAgICAgb25Jbml0OiAoKSA9PiAoZGVzY3JpcHRvci5vbkluaXQgPyBkZXNjcmlwdG9yLm9uSW5pdChmaWVsZCkgOiB1bmRlZmluZWQpLFxuICAgICAgICAgICAgb25DaGFuZ2VzOiAoKSA9PiAoZGVzY3JpcHRvci5vbkNoYW5nZXMgPyBkZXNjcmlwdG9yLm9uQ2hhbmdlcyhmaWVsZCkgOiB1bmRlZmluZWQpLFxuICAgICAgICAgICAgYWZ0ZXJDb250ZW50SW5pdDogKCkgPT4gKGRlc2NyaXB0b3IuYWZ0ZXJDb250ZW50SW5pdCA/IGRlc2NyaXB0b3IuYWZ0ZXJDb250ZW50SW5pdChmaWVsZCkgOiB1bmRlZmluZWQpLFxuICAgICAgICAgICAgYWZ0ZXJWaWV3SW5pdDogKCkgPT4gKGRlc2NyaXB0b3IuYWZ0ZXJWaWV3SW5pdCA/IGRlc2NyaXB0b3IuYWZ0ZXJWaWV3SW5pdChmaWVsZCkgOiB1bmRlZmluZWQpLFxuICAgICAgICAgICAgb25EZXN0cm95OiAoKSA9PiAoZGVzY3JpcHRvci5vbkRlc3Ryb3kgPyBkZXNjcmlwdG9yLm9uRGVzdHJveShmaWVsZCkgOiB1bmRlZmluZWQpXG4gICAgICAgIH0sXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBkZXNjcmlwdG9yLFxuICAgICAgICAgICAgZm9ybUVkaXRvckNvbXBvbmVudCxcbiAgICAgICAgICAgIGVkaXRvckRlc2NyaXB0b3I6IGVkaXRvckRlc2NyaXB0b3IsXG4gICAgICAgICAgICBvblZhbHVlQ2hhbmdlOiBkZXNjcmlwdG9yLm9uVmFsdWVDaGFuZ2VcbiAgICAgICAgfSxcbiAgICAgICAgZXhwcmVzc2lvbnM6IHt9XG4gICAgfTtcblxuICAgIGxldCBjbGFzc05hbWUgPSBkZXNjcmlwdG9yLmNsYXNzTmFtZTtcbiAgICBpZiAoIWNsYXNzTmFtZSkge1xuICAgICAgICAvLyBhc3NpZ24gZGVmYXVsdCBmaWVsZCB3aWR0aCB0aHJvdWdoIGVudGlyZSByb3dcbiAgICAgICAgY2xhc3NOYW1lID0gJ2NvbC0xMic7XG4gICAgfVxuICAgIGZpZWxkLmNsYXNzTmFtZSA9IGNsYXNzTmFtZTtcblxuICAgIGlmIChkZXNjcmlwdG9yIGluc3RhbmNlb2YgRmllbGRJbnB1dERlc2NyaXB0b3IpIHtcbiAgICAgICAgc3dpdGNoIChkZXNjcmlwdG9yLmZpZWxkVHlwZSkge1xuICAgICAgICAgICAgY2FzZSBGaWVsZElucHV0VHlwZUVudW0uSGlkZGVuOlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBGaWVsZElucHV0VHlwZUVudW0uTGFiZWw6XG4gICAgICAgICAgICAgICAgZmllbGQudHlwZSA9ICdsYWJlbCc7XG4gICAgICAgICAgICAgICAgZGVsZXRlIGZpZWxkLmtleTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgRmllbGRJbnB1dFR5cGVFbnVtLlRleHRhcmVhOlxuICAgICAgICAgICAgICAgIGZpZWxkLnR5cGUgPSAndGV4dGFyZWEnO1xuICAgICAgICAgICAgICAgIGZpZWxkLnByb3BzLm1heExlbmd0aCA9IGRlc2NyaXB0b3IubWF4TGVuZ3RoO1xuICAgICAgICAgICAgICAgIGZpZWxkLnByb3BzLm1pbkxlbmd0aCA9IGRlc2NyaXB0b3IubWluTGVuZ3RoO1xuICAgICAgICAgICAgICAgIGZpZWxkLnByb3BzLnBhdHRlcm4gPSBkZXNjcmlwdG9yLnBhdHRlcm47XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIEZpZWxkSW5wdXRUeXBlRW51bS5OdW1iZXI6XG4gICAgICAgICAgICAgICAgZmllbGQudHlwZSA9ICdudW1iZXInO1xuICAgICAgICAgICAgICAgIGZpZWxkLnByb3BzLm1pbiA9IGRlc2NyaXB0b3IubnVtYmVyTWluO1xuICAgICAgICAgICAgICAgIGZpZWxkLnByb3BzLm1heCA9IGRlc2NyaXB0b3IubnVtYmVyTWF4O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBGaWVsZElucHV0VHlwZUVudW0uQ3VycmVuY3k6XG4gICAgICAgICAgICAgICAgZmllbGQudHlwZSA9ICdjdXJyZW5jeSc7XG4gICAgICAgICAgICAgICAgZmllbGQucHJvcHMubWluID0gZGVzY3JpcHRvci5udW1iZXJNaW47XG4gICAgICAgICAgICAgICAgZmllbGQucHJvcHMubWF4ID0gZGVzY3JpcHRvci5udW1iZXJNYXg7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIEZpZWxkSW5wdXRUeXBlRW51bS5Td2l0Y2g6XG4gICAgICAgICAgICAgICAgZmllbGQudHlwZSA9ICdzd2l0Y2gnO1xuICAgICAgICAgICAgICAgIGZpZWxkLmRlZmF1bHRWYWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBGaWVsZElucHV0VHlwZUVudW0uUmFkaW86XG4gICAgICAgICAgICAgICAgZmllbGQudHlwZSA9ICdyYWRpbyc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIEZpZWxkSW5wdXRUeXBlRW51bS5EYXRlcGlja2VyOlxuICAgICAgICAgICAgICAgIGZpZWxkLnR5cGUgPSAnZGF0ZXBpY2tlcic7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIEZpZWxkSW5wdXRUeXBlRW51bS5NYXNrOlxuICAgICAgICAgICAgICAgIGZpZWxkLnR5cGUgPSAnbWFzayc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIEZpZWxkSW5wdXRUeXBlRW51bS5GaWxlOlxuICAgICAgICAgICAgY2FzZSBGaWVsZElucHV0VHlwZUVudW0uSW1hZ2VGaWxlOlxuICAgICAgICAgICAgICAgIGZpZWxkLnR5cGUgPSAnZmlsZSc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIEZpZWxkSW5wdXRUeXBlRW51bS5JbWFnZVVybDpcbiAgICAgICAgICAgICAgICBmaWVsZC50eXBlID0gJ2ltYWdlVXJsJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgRmllbGRJbnB1dFR5cGVFbnVtLkN1c3RvbTpcbiAgICAgICAgICAgICAgICBpZiAoZGVzY3JpcHRvci5jdXN0b21Db21wb25lbnRUeXBlKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkLnR5cGUgPSAnY3VzdG9tJztcbiAgICAgICAgICAgICAgICAgICAgZmllbGQucHJvcHNbJ2N1c3RvbUNvbXBvbmVudFR5cGUnXSA9IGRlc2NyaXB0b3IuY3VzdG9tQ29tcG9uZW50VHlwZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZGVzY3JpcHRvci5jdXN0b21Db21wb25lbnRXcmFwcGVycykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLndyYXBwZXJzID0gZGVzY3JpcHRvci5jdXN0b21Db21wb25lbnRXcmFwcGVycztcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRlZmF1bHQgd3JhcHBlclxuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQud3JhcHBlcnMgPSBbJ2ZpZWxkJ107XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGZpZWxkLnR5cGUgPSAnaW5wdXQnO1xuICAgICAgICAgICAgICAgIGZpZWxkLnByb3BzLm1pbkxlbmd0aCA9IGRlc2NyaXB0b3IubWluTGVuZ3RoO1xuICAgICAgICAgICAgICAgIGZpZWxkLnByb3BzLm1heExlbmd0aCA9IGRlc2NyaXB0b3IubWF4TGVuZ3RoO1xuICAgICAgICAgICAgICAgIGZpZWxkLnByb3BzLnBhdHRlcm4gPSBkZXNjcmlwdG9yLnBhdHRlcm47XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGRlc2NyaXB0b3IgaW5zdGFuY2VvZiBGaWVsZEFjdGlvbkRlc2NyaXB0b3IpIHtcbiAgICAgICAgZmllbGQudHlwZSA9ICdhY3Rpb24nO1xuICAgICAgICBmaWVsZC53cmFwcGVycyA9IGRlc2NyaXB0b3Iud3JhcHBlcnM7XG4gICAgICAgIGRlbGV0ZSBmaWVsZC5rZXk7XG4gICAgfSBlbHNlIGlmIChkZXNjcmlwdG9yIGluc3RhbmNlb2YgRmllbGRMb29rdXBFbnVtRGVzY3JpcHRvcikge1xuICAgICAgICBzd2l0Y2ggKGRlc2NyaXB0b3IubG9va3VwVHlwZSkge1xuICAgICAgICAgICAgY2FzZSBGaWVsZExvb2t1cFR5cGVFbnVtLkN1c3RvbTpcbiAgICAgICAgICAgICAgICBmaWVsZC50eXBlID0gZGVzY3JpcHRvci5jdXN0b21Db21wb25lbnROYW1lO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBmaWVsZC50eXBlID0gJ2VudW0nO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfSBlbHNlIGlmIChkZXNjcmlwdG9yIGluc3RhbmNlb2YgRmllbGRMb29rdXBEZXNjcmlwdG9yKSB7XG4gICAgICAgIHN3aXRjaCAoZGVzY3JpcHRvci5sb29rdXBUeXBlKSB7XG4gICAgICAgICAgICBjYXNlIEZpZWxkTG9va3VwVHlwZUVudW0uQXV0b2NvbXBsZXRlOlxuICAgICAgICAgICAgICAgIGZpZWxkLnR5cGUgPSAnYXV0b2NvbXBsZXRlJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgRmllbGRMb29rdXBUeXBlRW51bS5EaWFsb2c6XG4gICAgICAgICAgICAgICAgZmllbGQudHlwZSA9ICdkaWFsb2cnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBGaWVsZExvb2t1cFR5cGVFbnVtLkN1c3RvbTpcbiAgICAgICAgICAgICAgICBmaWVsZC50eXBlID0gZGVzY3JpcHRvci5jdXN0b21Db21wb25lbnROYW1lO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBGaWVsZExvb2t1cFR5cGVFbnVtLkRyb3Bkb3duOlxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBmaWVsZC50eXBlID0gJ2Ryb3Bkb3duJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZGVzY3JpcHRvciBpbnN0YW5jZW9mIEZpZWxkTWFueVRvTWFueUVkaXRvckRlc2NyaXB0b3IpIHtcbiAgICAgICAgZmllbGQudHlwZSA9ICd0YWJsZS1kaWFsb2ctbXVsdGlzZWxlY3QnO1xuICAgIH0gZWxzZSBpZiAoZGVzY3JpcHRvciBpbnN0YW5jZW9mIEZpZWxkTWFueUVkaXRvckRlc2NyaXB0b3IpIHtcbiAgICAgICAgZmllbGQudHlwZSA9ICd0YWJsZS1kaWFsb2ctZm9ybSc7XG4gICAgfVxuXG4gICAgaWYgKGRlc2NyaXB0b3IubGFiZWwpIHtcbiAgICAgICAgZmllbGQucHJvcHMubGFiZWwgPSBkZXNjcmlwdG9yLmxhYmVsO1xuICAgIH1cblxuICAgIGlmIChkZXNjcmlwdG9yLnJlcXVpcmVkRXhwcmVzc2lvbikge1xuICAgICAgICBmaWVsZC5leHByZXNzaW9ucyFbJ3Byb3BzLnJlcXVpcmVkJ10gPSBkZXNjcmlwdG9yLnJlcXVpcmVkRXhwcmVzc2lvbjtcbiAgICB9XG4gICAgaWYgKGRlc2NyaXB0b3IucmVxdWlyZWQpIHtcbiAgICAgICAgZmllbGQucHJvcHMhLnJlcXVpcmVkID0gdHJ1ZTtcbiAgICAgICAgaWYgKGRlc2NyaXB0b3IucmVxdWlyZWRIaWRlTGFiZWxNYXJrZXIpIHtcbiAgICAgICAgICAgIGZpZWxkLnByb3BzIVsnaGlkZVJlcXVpcmVkTWFya2VyJ10gPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGRlc2NyaXB0b3IuaGlkZGVuRXhwcmVzc2lvbikge1xuICAgICAgICBmaWVsZC5leHByZXNzaW9ucyFbJ2hpZGUnXSA9IGRlc2NyaXB0b3IuaGlkZGVuRXhwcmVzc2lvbjtcbiAgICAgICAgZmllbGQuZXhwcmVzc2lvbnMhWydyZXNldE9uSGlkZSddID0gKCkgPT4gZGVzY3JpcHRvci5oaWRkZW5SZXNldE9uSGlkZSA/PyB0cnVlO1xuICAgIH1cblxuICAgIGlmIChkZXNjcmlwdG9yLmRpc2FibGVkRXhwcmVzc2lvbikge1xuICAgICAgICBmaWVsZC5leHByZXNzaW9ucyFbJ3Byb3BzLmRpc2FibGVkJ10gPSBkZXNjcmlwdG9yLmRpc2FibGVkRXhwcmVzc2lvbjtcbiAgICB9IGVsc2UgaWYgKGRlc2NyaXB0b3IuZGlzYWJsZWQpIHtcbiAgICAgICAgZmllbGQucHJvcHMuZGlzYWJsZWQgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGZpZWxkLmV4cHJlc3Npb25zIVsncHJvcHMuZGlzYWJsZWQnXSA9ICdmb3JtU3RhdGUuZGlzYWJsZWQnO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgZGVzY3JpcHRvci5kZWZhdWx0VmFsdWUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGZpZWxkLmRlZmF1bHRWYWx1ZSA9IGRlc2NyaXB0b3IuZGVmYXVsdFZhbHVlO1xuICAgIH1cblxuICAgIGlmIChkZXNjcmlwdG9yIGluc3RhbmNlb2YgRmllbGRJbnB1dERlc2NyaXB0b3IpIHtcbiAgICAgICAgaWYgKGRlc2NyaXB0b3IudmFsaWRhdGlvbkVtYWlsKSB7XG4gICAgICAgICAgICBkZXNjcmlwdG9yLnZhbGlkYXRpb25zLnB1c2gobmV3IEZpZWxkVmFsaWRhdGlvbkRlc2NyaXB0b3IoZW1haWxWYWxpZGF0aW9uTmFtZSwgZW1haWxWYWxpZGF0b3IoKSBhcyBGaWVsZEJhc2VWYWxpZGF0b3I8c3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCwgYW55PikpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkZXNjcmlwdG9yLmRhdGVQaWNrZXJNaW4pIHtcbiAgICAgICAgICAgIGRlc2NyaXB0b3IudmFsaWRhdGlvbnMucHVzaChcbiAgICAgICAgICAgICAgICBuZXcgRmllbGRWYWxpZGF0aW9uRGVzY3JpcHRvcihtaW5EYXRlVmFsaWRhdGlvbk5hbWUsIG1pbkRhdGVWYWxpZGF0b3IoZGVzY3JpcHRvci5kYXRlUGlja2VyTWluKSBhcyBGaWVsZEJhc2VWYWxpZGF0b3I8c3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCwgYW55PilcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRlc2NyaXB0b3IuZGF0ZVBpY2tlck1heCkge1xuICAgICAgICAgICAgZGVzY3JpcHRvci52YWxpZGF0aW9ucy5wdXNoKFxuICAgICAgICAgICAgICAgIG5ldyBGaWVsZFZhbGlkYXRpb25EZXNjcmlwdG9yKG1heERhdGVWYWxpZGF0aW9uTmFtZSwgbWF4RGF0ZVZhbGlkYXRvcihkZXNjcmlwdG9yLmRhdGVQaWNrZXJNYXgpIGFzIEZpZWxkQmFzZVZhbGlkYXRvcjxzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkLCBhbnk+KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFkZFZhbGlkYXRpb25zVG9Gb3JtbHlGaWVsZChmaWVsZCwgZGVzY3JpcHRvci52YWxpZGF0aW9ucywgZm9ybWx5Q29uZmlnKTtcbiAgICBhZGRBc3luY1ZhbGlkYXRpb25zVG9Gb3JtbHlGaWVsZChmaWVsZCwgZGVzY3JpcHRvci5hc3luY1ZhbGlkYXRpb25zLCBmb3JtbHlDb25maWcpO1xuXG4gICAgcmV0dXJuIGZpZWxkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWRkVmFsaWRhdGlvbnNUb0Zvcm1seUZpZWxkKGNvbmZpZzogQ29tbW9uc0Zvcm1seUZpZWxkQ29uZmlnLCB2YWxpZGF0aW9uczogQXJyYXk8RmllbGRWYWxpZGF0aW9uRGVzY3JpcHRvcjxhbnksIGFueT4+LCBmb3JtbHlDb25maWc6IEZvcm1seUNvbmZpZykge1xuICAgIGlmICghY29uZmlnLnZhbGlkYXRvcnMpIHtcbiAgICAgICAgY29uZmlnLnZhbGlkYXRvcnMgPSB7fTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHZhbGlkYXRpb24gb2YgdmFsaWRhdGlvbnMpIHtcbiAgICAgICAgY3JlYXRlRm9ybWx5VmFsaWRhdGlvbihjb25maWcudmFsaWRhdG9ycywgdmFsaWRhdGlvbiwgZm9ybWx5Q29uZmlnKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhZGRBc3luY1ZhbGlkYXRpb25zVG9Gb3JtbHlGaWVsZChjb25maWc6IENvbW1vbnNGb3JtbHlGaWVsZENvbmZpZywgYXN5bmNWYWxpZGF0aW9uczogQXJyYXk8RmllbGRWYWxpZGF0aW9uRGVzY3JpcHRvcjxhbnksIGFueT4+LCBmb3JtbHlDb25maWc6IEZvcm1seUNvbmZpZykge1xuICAgIGlmICghY29uZmlnLmFzeW5jVmFsaWRhdG9ycykge1xuICAgICAgICBjb25maWcuYXN5bmNWYWxpZGF0b3JzID0ge307XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCB2YWxpZGF0aW9uIG9mIGFzeW5jVmFsaWRhdGlvbnMpIHtcbiAgICAgICAgY3JlYXRlRm9ybWx5VmFsaWRhdGlvbihjb25maWcuYXN5bmNWYWxpZGF0b3JzLCB2YWxpZGF0aW9uLCBmb3JtbHlDb25maWcpO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZvcm1seVZhbGlkYXRpb24oY29uZmlnOiBOb25OdWxsYWJsZTxDb21tb25zRm9ybWx5VmFsaWRhdGlvbj4sIHZhbGlkYXRpb246IEZpZWxkVmFsaWRhdGlvbkRlc2NyaXB0b3I8YW55LCBhbnk+LCBmb3JtbHlDb25maWc6IEZvcm1seUNvbmZpZykge1xuICAgIGlmICh0eXBlb2YgdmFsaWRhdGlvbi52YWxpZGF0b3IgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgaWYgKHZhbGlkYXRpb24ub3B0aW9ucz8uZXJyb3JQYXRoICYmIHZhbGlkYXRpb24ubWVzc2FnZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAvLyBpZiB0aGlzIGlzIHVzZWQsIHRoZSB2YWxpZGF0b3IgYW5kIG1lc3NhZ2UgbXVzdCBiZSByZWdpc3RlcmVkIGdsb2JhbGx5XG4gICAgICAgICAgICBpZiAoIWZvcm1seUNvbmZpZy5nZXRWYWxpZGF0b3JNZXNzYWdlKHZhbGlkYXRpb24ubmFtZSkpIHtcbiAgICAgICAgICAgICAgICBmb3JtbHlDb25maWcuYWRkVmFsaWRhdG9yTWVzc2FnZSh2YWxpZGF0aW9uLm5hbWUsIHZhbGlkYXRpb24ubWVzc2FnZSBhcyBWYWxpZGF0aW9uTWVzc2FnZU9wdGlvblsnbWVzc2FnZSddKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFmb3JtbHlDb25maWcudmFsaWRhdG9yc1t2YWxpZGF0aW9uLm5hbWVdKSB7XG4gICAgICAgICAgICAgICAgZm9ybWx5Q29uZmlnLnNldFZhbGlkYXRvcih7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IHZhbGlkYXRpb24ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvbjogKGNvbnRyb2wsIGZpZWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb21tb25zRmllbGRGb3JtbHlDb25maWcgPSBmaWVsZCBhcyBDb21tb25zRm9ybWx5RmllbGRDb25maWc7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsaWRhdGlvbi52YWxpZGF0b3IhKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZEZvcm1Db250cm9sOiBjb250cm9sLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm06IGNvbW1vbnNGaWVsZEZvcm1seUNvbmZpZy5mb3JtIGFzIEZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZEZvcm1seUNvbmZpZzogZmllbGQgYXMgQ29tbW9uc0Zvcm1seUZpZWxkQ29uZmlnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db21wb25lbnQ6IGNvbW1vbnNGaWVsZEZvcm1seUNvbmZpZy5wcm9wcz8uZm9ybUVkaXRvckNvbXBvbmVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZENvbXBvbmVudDogY29tbW9uc0ZpZWxkRm9ybWx5Q29uZmlnLnByb3BzPy5maWVsZENvbXBvbmVudFxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IDxWYWxpZGF0b3JzPntbdmFsaWRhdGlvbi5uYW1lXTogdHJ1ZX07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGNvbmZpZy52YWxpZGF0aW9uKSkge1xuICAgICAgICAgICAgICAgIGNvbmZpZy52YWxpZGF0aW9uID0gW107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25maWcudmFsaWRhdGlvbi5wdXNoKHtcbiAgICAgICAgICAgICAgICBuYW1lOiB2YWxpZGF0aW9uLm5hbWUsXG4gICAgICAgICAgICAgICAgb3B0aW9uczoge2Vycm9yUGF0aDogdmFsaWRhdGlvbi5vcHRpb25zLmVycm9yUGF0aH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uZmlnW3ZhbGlkYXRpb24ubmFtZV0gPSB7XG4gICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgZmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbW1vbnNGaWVsZEZvcm1seUNvbmZpZyA9IGZpZWxkIGFzIENvbW1vbnNGb3JtbHlGaWVsZENvbmZpZztcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRpb24udmFsaWRhdG9yISh7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZEZvcm1Db250cm9sOiBjb250cm9sLFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybTogY29tbW9uc0ZpZWxkRm9ybWx5Q29uZmlnLmZvcm0gYXMgRm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRGb3JtbHlDb25maWc6IGNvbW1vbnNGaWVsZEZvcm1seUNvbmZpZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db21wb25lbnQ6IGNvbW1vbnNGaWVsZEZvcm1seUNvbmZpZy5wcm9wcz8uZm9ybUVkaXRvckNvbXBvbmVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkQ29tcG9uZW50OiBjb21tb25zRmllbGRGb3JtbHlDb25maWcucHJvcHM/LmZpZWxkQ29tcG9uZW50XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpZiAodmFsaWRhdGlvbi5tZXNzYWdlICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICBjb25maWdbdmFsaWRhdGlvbi5uYW1lXS5tZXNzYWdlID0gdmFsaWRhdGlvbi5tZXNzYWdlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGNvbmZpZy52YWxpZGF0aW9uKSkge1xuICAgICAgICAgICAgY29uZmlnLnZhbGlkYXRpb24gPSBbXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodmFsaWRhdGlvbi5vcHRpb25zPy5lcnJvclBhdGgpIHtcbiAgICAgICAgICAgIGNvbmZpZy52YWxpZGF0aW9uLnB1c2goe1xuICAgICAgICAgICAgICAgIG5hbWU6IHZhbGlkYXRpb24ubmFtZSxcbiAgICAgICAgICAgICAgICBvcHRpb25zOiB7ZXJyb3JQYXRoOiB2YWxpZGF0aW9uLm9wdGlvbnMuZXJyb3JQYXRofVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25maWcudmFsaWRhdGlvbi5wdXNoKHZhbGlkYXRpb24ubmFtZSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
@@ -889,12 +889,14 @@ function fromTableLoadToDataListParams(event) {
889
889
  *
890
890
  * @param {DataListParams} params - The parameters to convert.
891
891
  * @param {DataListParams|null} defaults - The default parameters used if no matching property in params is available. Defaults to { limit: 25, offset: 0 } if not provided.
892
+ * @param opts - Options in converting to url query:
893
+ * - prependFilterName Prepends filter key with provided string
892
894
  * @returns {Params} - The URL query parameters object.
893
895
  */
894
896
  function dataListParamsToUrlQuery(params, defaults = {
895
897
  limit: 25,
896
898
  offset: 0
897
- }) {
899
+ }, opts) {
898
900
  const urlParams = {};
899
901
  if (params.limit && params.limit !== defaults?.limit) {
900
902
  urlParams['limit'] = params.limit;
@@ -944,7 +946,7 @@ function dataListParamsToUrlQuery(params, defaults = {
944
946
  paramFilter.matchMode !== FilterMatchMode.DoesNotExist) {
945
947
  return;
946
948
  }
947
- urlParams[k] = dataListParamsFiltersToUrlQuery(params, k, true);
949
+ urlParams[`${opts?.prependFilterName ?? ''}${k}`] = dataListParamsFiltersToUrlQuery(params, k, true);
948
950
  });
949
951
  }
950
952
  if (defaults?.filters) {
@@ -953,7 +955,7 @@ function dataListParamsToUrlQuery(params, defaults = {
953
955
  Object.keys(defaults.filters)
954
956
  .filter(k => paramFilterKeys.indexOf(k) < 0)
955
957
  .forEach(k => {
956
- urlParams[k] = dataListParamsFiltersToUrlQuery(defaults, k);
958
+ urlParams[`${opts?.prependFilterName ?? ''}${k}`] = dataListParamsFiltersToUrlQuery(defaults, k);
957
959
  });
958
960
  }
959
961
  return urlParams;
@@ -1053,9 +1055,12 @@ function dataListParamsFilterToUrlQuery(paramFilter, allowNull = false) {
1053
1055
  * Filter keys are all keys in Params object that are not matched elsewhere, values are formatted from Medius data API filter query language: `cs:eq:asd`, `in:asd,qwe`, `ex`, ...
1054
1056
  *
1055
1057
  * @param {Params} urlParams - The URL query parameters.
1058
+ * @param opts Additional options for conversion:
1059
+ * - searchAsGlobal - The URL query parameters.
1060
+ * - prependFilterName - Filter names are prepended with provided string.
1056
1061
  * @return {DataListParams} - The converted DataListParams object.
1057
1062
  */
1058
- function fromUrlQueryToDataListParams(urlParams, searchAsGlobal = false) {
1063
+ function fromUrlQueryToDataListParams(urlParams, opts) {
1059
1064
  const params = {};
1060
1065
  Object.entries(urlParams).forEach(([urlParamKey, urlParamValue]) => {
1061
1066
  if (urlParamKey === 'limit') {
@@ -1076,7 +1081,7 @@ function fromUrlQueryToDataListParams(urlParams, searchAsGlobal = false) {
1076
1081
  const caseSensitive = urlParamValue.startsWith('cs:');
1077
1082
  params.search = searchQuery;
1078
1083
  params.searchCaseSensitive = caseSensitive;
1079
- if (searchAsGlobal) {
1084
+ if (opts?.searchAsGlobal) {
1080
1085
  if (!params.filters) {
1081
1086
  params.filters = {};
1082
1087
  }
@@ -1099,7 +1104,7 @@ function fromUrlQueryToDataListParams(urlParams, searchAsGlobal = false) {
1099
1104
  throw new CommonsInternalError(`String is expected as value for '${urlParamKey}' when converting from urlParams`);
1100
1105
  }
1101
1106
  }
1102
- else if (typeof urlParamValue === 'string') {
1107
+ else if ((!opts?.prependFilterName || urlParamKey.startsWith(opts.prependFilterName)) && typeof urlParamValue === 'string') {
1103
1108
  if (urlParamValue.length === 0) {
1104
1109
  // empty string should be ignored
1105
1110
  return;
@@ -1213,7 +1218,8 @@ function fromUrlQueryToDataListParams(urlParams, searchAsGlobal = false) {
1213
1218
  if (!params.filters) {
1214
1219
  params.filters = {};
1215
1220
  }
1216
- params.filters[urlParamKey] = { value: value, matchMode: matchMode, caseSensitive: caseSensitive };
1221
+ const filterKey = opts?.prependFilterName ? urlParamKey.substring(opts.prependFilterName.length) : urlParamKey;
1222
+ params.filters[filterKey] = { value: value, matchMode: matchMode, caseSensitive: caseSensitive };
1217
1223
  }
1218
1224
  });
1219
1225
  return params;