@deeksha2309/sunbird-collection-editor 8.0.7 → 8.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/deeksha2309-sunbird-collection-editor.d.ts.map +1 -0
- package/esm2022/deeksha2309-sunbird-collection-editor.mjs +5 -0
- package/esm2022/lib/collection-editor-library.module.mjs +30 -6
- package/esm2022/lib/components/answer/answer.component.mjs +6 -3
- package/esm2022/lib/components/app-loader/app-loader.component.mjs +30 -0
- package/esm2022/lib/components/asset-browser/asset-browser.component.mjs +30 -12
- package/esm2022/lib/components/assign-page-number/assign-page-number.component.mjs +1 -1
- package/esm2022/lib/components/bulk-upload/bulk-upload.component.mjs +447 -0
- package/esm2022/lib/components/ckeditor-tool/ckeditor-tool.component.mjs +30 -12
- package/esm2022/lib/components/collection-icon/collection-icon.component.mjs +3 -3
- package/esm2022/lib/components/csv-upload/csv-upload.component.mjs +2 -2
- package/esm2022/lib/components/editor/editor.component.mjs +143 -64
- package/esm2022/lib/components/fancy-tree/fancy-tree.component.mjs +91 -9
- package/esm2022/lib/components/header/header.component.mjs +27 -9
- package/esm2022/lib/components/library/library.component.mjs +4 -4
- package/esm2022/lib/components/library-list/library-list.component.mjs +4 -4
- package/esm2022/lib/components/library-player/library-player.component.mjs +4 -4
- package/esm2022/lib/components/meta-form/meta-form.component.mjs +10 -18
- package/esm2022/lib/components/options/options.component.mjs +40 -27
- package/esm2022/lib/components/progress-status/progress-status.component.mjs +1 -1
- package/esm2022/lib/components/publish-checklist/publish-checklist.component.mjs +6 -3
- package/esm2022/lib/components/question/question.component.mjs +185 -77
- package/esm2022/lib/components/question-option-sub-menu/question-option-sub-menu.component.mjs +36 -0
- package/esm2022/lib/components/quml-player/quml-player.component.mjs +2 -2
- package/esm2022/lib/components/qumlplayer-page/qumlplayer-page.component.mjs +3 -3
- package/esm2022/lib/components/relational-metadata/relational-metadata.component.mjs +80 -0
- package/esm2022/lib/components/resource-reorder/resource-reorder.component.mjs +3 -3
- package/esm2022/lib/components/slider/slider.component.mjs +46 -0
- package/esm2022/lib/components/template/template.component.mjs +3 -3
- package/esm2022/lib/components/translations/translations.component.mjs +132 -0
- package/esm2022/lib/directives/date-format/date-format.pipe.mjs +34 -0
- package/esm2022/lib/interfaces/CreationContext.mjs +2 -0
- package/esm2022/lib/interfaces/editor.mjs +1 -1
- package/esm2022/lib/interfaces/loader.mjs +2 -0
- package/esm2022/lib/pipes/interpolate.pipe.mjs +17 -0
- package/esm2022/lib/pipes/sanitize-html.pipe.mjs +6 -8
- package/esm2022/lib/services/bulk-job/bulk-job.service.mjs +67 -0
- package/esm2022/lib/services/config/category.config.json +1 -0
- package/esm2022/lib/services/config/editor.config.json +29 -2
- package/esm2022/lib/services/config/label.config.json +16 -3
- package/esm2022/lib/services/config/player.config.json +3 -0
- package/esm2022/lib/services/config/url.config.json +17 -1
- package/esm2022/lib/services/editor/editor.service.mjs +64 -26
- package/esm2022/lib/services/question/question.service.mjs +27 -35
- package/esm2022/lib/services/tree/tree.service.mjs +20 -5
- package/fesm2022/{project-sunbird-sunbird-collection-editor.mjs → deeksha2309-sunbird-collection-editor.mjs} +1779 -483
- package/fesm2022/deeksha2309-sunbird-collection-editor.mjs.map +1 -0
- package/index.d.ts +2 -2
- package/lib/collection-editor-library.module.d.ts +51 -43
- package/lib/collection-editor-library.module.d.ts.map +1 -1
- package/lib/components/answer/answer.component.d.ts +2 -1
- package/lib/components/answer/answer.component.d.ts.map +1 -1
- package/lib/components/app-loader/app-loader.component.d.ts +18 -0
- package/lib/components/app-loader/app-loader.component.d.ts.map +1 -0
- package/lib/components/asset-browser/asset-browser.component.d.ts.map +1 -1
- package/lib/components/bulk-upload/bulk-upload.component.d.ts +71 -0
- package/lib/components/bulk-upload/bulk-upload.component.d.ts.map +1 -0
- package/lib/components/ckeditor-tool/ckeditor-tool.component.d.ts +1 -1
- package/lib/components/ckeditor-tool/ckeditor-tool.component.d.ts.map +1 -1
- package/lib/components/editor/editor.component.d.ts +11 -7
- package/lib/components/editor/editor.component.d.ts.map +1 -1
- package/lib/components/fancy-tree/fancy-tree.component.d.ts +11 -3
- package/lib/components/fancy-tree/fancy-tree.component.d.ts.map +1 -1
- package/lib/components/header/header.component.d.ts +6 -2
- package/lib/components/header/header.component.d.ts.map +1 -1
- package/lib/components/library/library.component.d.ts +1 -1
- package/lib/components/library/library.component.d.ts.map +1 -1
- package/lib/components/meta-form/meta-form.component.d.ts +3 -4
- package/lib/components/meta-form/meta-form.component.d.ts.map +1 -1
- package/lib/components/options/options.component.d.ts +15 -7
- package/lib/components/options/options.component.d.ts.map +1 -1
- package/lib/components/publish-checklist/publish-checklist.component.d.ts +2 -1
- package/lib/components/publish-checklist/publish-checklist.component.d.ts.map +1 -1
- package/lib/components/question/question.component.d.ts +21 -28
- package/lib/components/question/question.component.d.ts.map +1 -1
- package/lib/components/question-option-sub-menu/question-option-sub-menu.component.d.ts +27 -0
- package/lib/components/question-option-sub-menu/question-option-sub-menu.component.d.ts.map +1 -0
- package/lib/components/relational-metadata/relational-metadata.component.d.ts +25 -0
- package/lib/components/relational-metadata/relational-metadata.component.d.ts.map +1 -0
- package/lib/components/slider/slider.component.d.ts +25 -0
- package/lib/components/slider/slider.component.d.ts.map +1 -0
- package/lib/components/translations/translations.component.d.ts +70 -0
- package/lib/components/translations/translations.component.d.ts.map +1 -0
- package/lib/directives/date-format/date-format.pipe.d.ts +20 -0
- package/lib/directives/date-format/date-format.pipe.d.ts.map +1 -0
- package/lib/interfaces/CreationContext.d.ts +11 -0
- package/lib/interfaces/CreationContext.d.ts.map +1 -0
- package/lib/interfaces/editor.d.ts +10 -5
- package/lib/interfaces/editor.d.ts.map +1 -1
- package/lib/interfaces/loader.d.ts +11 -0
- package/lib/interfaces/loader.d.ts.map +1 -0
- package/lib/pipes/interpolate.pipe.d.ts +8 -0
- package/lib/pipes/interpolate.pipe.d.ts.map +1 -0
- package/lib/pipes/sanitize-html.pipe.d.ts +4 -4
- package/lib/pipes/sanitize-html.pipe.d.ts.map +1 -1
- package/lib/services/bulk-job/bulk-job.service.d.ts +17 -0
- package/lib/services/bulk-job/bulk-job.service.d.ts.map +1 -0
- package/lib/services/editor/editor.service.d.ts +7 -4
- package/lib/services/editor/editor.service.d.ts.map +1 -1
- package/lib/services/question/question.service.d.ts +2 -2
- package/lib/services/question/question.service.d.ts.map +1 -1
- package/lib/services/tree/tree.service.d.ts +3 -1
- package/lib/services/tree/tree.service.d.ts.map +1 -1
- package/package.json +5 -5
- package/esm2022/project-sunbird-sunbird-collection-editor.mjs +0 -5
- package/fesm2022/project-sunbird-sunbird-collection-editor.mjs.map +0 -1
- package/project-sunbird-sunbird-collection-editor.d.ts.map +0 -1
|
@@ -28,9 +28,6 @@ export class MetaFormComponent {
|
|
|
28
28
|
this.showAppIcon = false;
|
|
29
29
|
framworkServiceTemp = frameworkService;
|
|
30
30
|
}
|
|
31
|
-
ngOnInit() {
|
|
32
|
-
// Initialize component
|
|
33
|
-
}
|
|
34
31
|
ngOnChanges() {
|
|
35
32
|
this.fetchFrameWorkDetails();
|
|
36
33
|
this.setAppIconData();
|
|
@@ -91,11 +88,6 @@ export class MetaFormComponent {
|
|
|
91
88
|
if (this.frameworkService.targetFrameworkIds) {
|
|
92
89
|
this.frameworkService.frameworkData$.pipe(takeUntil(this.onComponentDestroy$), filter(data => _.get(data, `frameworkdata.${_.first(this.frameworkService.targetFrameworkIds)}`))).subscribe((frameworkDetails) => {
|
|
93
90
|
if (frameworkDetails && !frameworkDetails.err) {
|
|
94
|
-
// const frameworkData = frameworkDetails.frameworkdata[this.frameworkService.targetFrameworkIds].categories;
|
|
95
|
-
// this.frameworkDetails.frameworkData = frameworkData;
|
|
96
|
-
// this.frameworkDetails.topicList = _.get(_.find(frameworkData, {
|
|
97
|
-
// code: 'topic'
|
|
98
|
-
// }), 'terms');
|
|
99
91
|
this.frameworkDetails.targetFrameworks = _.filter(frameworkDetails.frameworkdata, (value, key) => {
|
|
100
92
|
return _.includes(this.frameworkService.targetFrameworkIds, key);
|
|
101
93
|
});
|
|
@@ -107,13 +99,12 @@ export class MetaFormComponent {
|
|
|
107
99
|
}
|
|
108
100
|
attachDefaultValues() {
|
|
109
101
|
const metaDataFields = _.get(this.nodeMetadata, 'data.metadata');
|
|
110
|
-
|
|
111
|
-
const isRoot = _.get(metaDataFields, 'data.root');
|
|
102
|
+
const isRootNode = _.get(this.nodeMetadata, 'data.root');
|
|
112
103
|
const categoryMasterList = this.frameworkDetails.frameworkData ||
|
|
113
|
-
!
|
|
104
|
+
!isRootNode && this.frameworkService.selectedOrganisationFramework &&
|
|
114
105
|
_.get(this.frameworkService.selectedOrganisationFramework, 'framework.categories');
|
|
115
106
|
// tslint:disable-next-line:max-line-length
|
|
116
|
-
let formConfig = (_.get(metaDataFields, 'visibility') === 'Default') ? _.cloneDeep(this.rootFormConfig) : _.cloneDeep(this.unitFormConfig);
|
|
107
|
+
let formConfig = (_.get(metaDataFields, 'visibility') === 'Default') || isRootNode ? _.cloneDeep(this.rootFormConfig) : _.cloneDeep(this.unitFormConfig);
|
|
117
108
|
formConfig = formConfig && _.has(_.first(formConfig), 'fields') ? formConfig : [{ name: '', fields: formConfig }];
|
|
118
109
|
if (!_.isEmpty(this.frameworkDetails.targetFrameworks)) {
|
|
119
110
|
const fieldTermsMap = new Map();
|
|
@@ -254,19 +245,20 @@ export class MetaFormComponent {
|
|
|
254
245
|
};
|
|
255
246
|
});
|
|
256
247
|
}
|
|
257
|
-
const ifEditable = this.ifFieldIsEditable(field.code);
|
|
248
|
+
const ifEditable = this.ifFieldIsEditable(field.code, field.editable);
|
|
258
249
|
_.set(field, 'editable', ifEditable);
|
|
259
250
|
});
|
|
260
251
|
});
|
|
261
252
|
this.formFieldProperties = _.cloneDeep(formConfig);
|
|
262
|
-
console.log(this.formFieldProperties);
|
|
263
253
|
}
|
|
264
254
|
isReviewMode() {
|
|
265
255
|
return _.includes(['review', 'read', 'sourcingreview', 'orgreview'], this.editorService.editorMode);
|
|
266
256
|
}
|
|
267
|
-
ifFieldIsEditable(fieldCode) {
|
|
257
|
+
ifFieldIsEditable(fieldCode, primaryCategoryEditableConfig) {
|
|
268
258
|
const ediorMode = this.editorService.editorMode;
|
|
269
259
|
if (!this.isReviewMode()) {
|
|
260
|
+
if (primaryCategoryEditableConfig === false)
|
|
261
|
+
return false;
|
|
270
262
|
return true;
|
|
271
263
|
}
|
|
272
264
|
const editableFields = _.get(this.editorService.editorConfig.config, 'editableFields');
|
|
@@ -360,11 +352,11 @@ export class MetaFormComponent {
|
|
|
360
352
|
}
|
|
361
353
|
}
|
|
362
354
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MetaFormComponent, deps: [{ token: i1.EditorService }, { token: i2.TreeService }, { token: i3.FrameworkService }, { token: i4.HelperService }, { token: i5.ConfigService }, { token: i6.ToasterService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
363
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MetaFormComponent, selector: "lib-meta-form", inputs: { rootFormConfig: "rootFormConfig", unitFormConfig: "unitFormConfig", nodeMetadata: "nodeMetadata" }, outputs: { toolbarEmitter: "toolbarEmitter" }, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"formFieldProperties\">\n <span class=\"meta-form\">\n <lib-collection-icon *ngIf=\"showAppIcon\" [appIcon]=\"appIcon\" [appIconConfig]=\"appIconConfig\" (iconEmitter)=\"appIconDataHandler($event)\"></lib-collection-icon>\n <sb-dynamic-form [config]=\"formFieldProperties\" (initialize)=\"outputData($event)\" (statusChanges)=\"onStatusChanges($event)\" (valueChanges)=\"valueChanges($event)\"></sb-dynamic-form>\n </span>\n</ng-container>", styles: ["@charset \"UTF-8\";.one-column-grid{display:grid;grid-template-columns:repeat(1,1fr);grid-template-rows:1fr 1fr;column-gap:.5rem}.two-column-grid{display:grid;grid-template-columns:repeat(2,1fr);column-gap:.5rem;border-bottom:solid 1px var(--gray-100)}.two-column-grid:last-child{border-bottom:none}.three-column-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:1fr 1fr;column-gap:.5rem}.formSection{padding:1.5rem 0}.formSection:first-child{padding:0 0 1.5rem}.multi-select-section-app
|
|
355
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MetaFormComponent, selector: "lib-meta-form", inputs: { rootFormConfig: "rootFormConfig", unitFormConfig: "unitFormConfig", nodeMetadata: "nodeMetadata" }, outputs: { toolbarEmitter: "toolbarEmitter" }, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"formFieldProperties\">\n <span class=\"meta-form\">\n <lib-collection-icon *ngIf=\"showAppIcon\" [appIcon]=\"appIcon\" [appIconConfig]=\"appIconConfig\" (iconEmitter)=\"appIconDataHandler($event)\"></lib-collection-icon>\n <sb-dynamic-form [config]=\"formFieldProperties\" (initialize)=\"outputData($event)\" (statusChanges)=\"onStatusChanges($event)\" (valueChanges)=\"valueChanges($event)\"></sb-dynamic-form>\n </span>\n</ng-container>", styles: ["@charset \"UTF-8\";.one-column-grid{display:grid;grid-template-columns:repeat(1,1fr);grid-template-rows:1fr 1fr;column-gap:.5rem}.two-column-grid{display:grid;grid-template-columns:repeat(2,1fr);column-gap:.5rem;border-bottom:solid 1px var(--gray-100)}.two-column-grid:last-child{border-bottom:none}.three-column-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:1fr 1fr;column-gap:.5rem}.formSection{padding:1.5rem 0}.formSection:first-child{padding:0 0 1.5rem}.multi-select-section-app label{margin-bottom:.3rem!important;z-index:inherit}.list-border{height:inherit!important;min-height:45px!important}.list-border ul{padding:0 22px 0 0!important;position:inherit!important}.list-border ul span{font-weight:500!important;font-size:.785rem;padding:1.4rem 0!important}.multi-select-container .sb-modal-dropdown-web ul{border:none!important}.sb-textbox,.topic-picker-selector,select,.sb-textarea,.list-border{border:1px solid rgba(34,36,38,.15)!important;padding:.85rem .5rem!important;border-radius:.28571429rem;font-size:.785rem!important;font-weight:500!important}.sb-keywordbox{border:1px solid rgba(34,36,38,.15)!important;padding:.45rem .5rem!important;border-radius:.28571429rem;font-size:.785rem!important;font-weight:500;padding:0!important}.sb-keywordbox .ng2-tag-input{padding:0}.sb-keywordbox .ng2-tag-input tag{margin-left:.5rem}.sb-keywordbox .ng2-tags-container{margin-top:.2rem}.sb-keywordbox .tag-wrapper,.sb-keywordbox delete-icon svg{height:24px!important;line-height:24px}label{font-size:12px!important;margin-bottom:.5rem!important;color:#121213e0;font-weight:500}.multi-select-container .caret-down.disabled+.list-border{cursor:not-allowed;background-color:#fafafa!important}\\200b .multi-select-container .list-border ul{font-size:12px!important;margin-bottom:.5rem!important;font-weight:500;color:#333;padding:0;margin:0!important;opacity:1!important;font-weight:500!important;position:inherit!important}.sb-dropdown label{padding:0!important}.sb-textarea-container .sb-textarea{height:2.9rem;padding-top:.5rem!important}.sb-textarea-container label{padding:0!important}sb-icon-dropdown{top:10px!important;right:6px!important}.sb-textarea-container,.sb-dropdown{margin:1rem 0!important}.meta-form .dynamic-form .sb-search-input::-webkit-input-placeholder{padding-left:1.4rem!important}.meta-form .dynamic-form .required label:after{content:\"*\";margin:-.2em 0 0 .2em;color:#db2828}.meta-form .dynamic-form .required .multi-select-container .list-border ul:after{content:none!important}.meta-form .dynamic-form sb-dynamic-checkbox label{padding-left:1.5rem!important}.meta-form .dynamic-form sb-dynamic-checkbox label:after{color:#fff!important;width:1rem!important;height:1rem!important}.sb-textbox[disabled=true],[disabled=true].topic-picker-selector,.sb-textarea[disabled=true],.sb-dropdown-select[disabled],.treepicker-parent div[disabled=true]{opacity:1!important;font-weight:500!important;cursor:not-allowed;background-color:#fafafa!important}lib-meta-form sb-dynamic-form .dynamic-form{min-height:1100px}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.fs-8{font-size:.5rem}.fs-10{font-size:.625rem}.fs-12{font-size:.75rem}.fs-14{font-size:.875rem}.fs-16{font-size:1rem}.fs-18{font-size:1.125rem}.fs-20{font-size:1.25rem}.fs-22{font-size:1.375rem}.fs-24{font-size:1.5rem}.fs-26{font-size:1.625rem}.fs-28{font-size:1.75rem}.fs-30{font-size:1.875rem}.fs-36{font-size:2.25rem}[data-title]:hover:before{content:attr(data-title);position:absolute;left:0;top:20px!important;bottom:initial!important;display:inline-block;padding:3px 6px;border-radius:2px;background:#fff;color:#000;font-size:12px;font-family:sans-serif;white-space:normal!important;border:solid 1px #ccc!important;height:auto!important;font-weight:600!important}\n"], dependencies: [{ kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i8.DynamicFormComponent, selector: "sb-dynamic-form", inputs: ["config", "dataLoadStatusDelegate"], outputs: ["initialize", "finalize", "valueChanges", "statusChanges"] }, { kind: "component", type: i9.CollectionIconComponent, selector: "lib-collection-icon", inputs: ["appIcon", "appIconConfig"], outputs: ["iconEmitter"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
364
356
|
}
|
|
365
357
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MetaFormComponent, decorators: [{
|
|
366
358
|
type: Component,
|
|
367
|
-
args: [{ selector: 'lib-meta-form', encapsulation: ViewEncapsulation.None, template: "<ng-container *ngIf=\"formFieldProperties\">\n <span class=\"meta-form\">\n <lib-collection-icon *ngIf=\"showAppIcon\" [appIcon]=\"appIcon\" [appIconConfig]=\"appIconConfig\" (iconEmitter)=\"appIconDataHandler($event)\"></lib-collection-icon>\n <sb-dynamic-form [config]=\"formFieldProperties\" (initialize)=\"outputData($event)\" (statusChanges)=\"onStatusChanges($event)\" (valueChanges)=\"valueChanges($event)\"></sb-dynamic-form>\n </span>\n</ng-container>", styles: ["@charset \"UTF-8\";.one-column-grid{display:grid;grid-template-columns:repeat(1,1fr);grid-template-rows:1fr 1fr;column-gap:.5rem}.two-column-grid{display:grid;grid-template-columns:repeat(2,1fr);column-gap:.5rem;border-bottom:solid 1px var(--gray-100)}.two-column-grid:last-child{border-bottom:none}.three-column-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:1fr 1fr;column-gap:.5rem}.formSection{padding:1.5rem 0}.formSection:first-child{padding:0 0 1.5rem}.multi-select-section-app
|
|
359
|
+
args: [{ selector: 'lib-meta-form', encapsulation: ViewEncapsulation.None, template: "<ng-container *ngIf=\"formFieldProperties\">\n <span class=\"meta-form\">\n <lib-collection-icon *ngIf=\"showAppIcon\" [appIcon]=\"appIcon\" [appIconConfig]=\"appIconConfig\" (iconEmitter)=\"appIconDataHandler($event)\"></lib-collection-icon>\n <sb-dynamic-form [config]=\"formFieldProperties\" (initialize)=\"outputData($event)\" (statusChanges)=\"onStatusChanges($event)\" (valueChanges)=\"valueChanges($event)\"></sb-dynamic-form>\n </span>\n</ng-container>", styles: ["@charset \"UTF-8\";.one-column-grid{display:grid;grid-template-columns:repeat(1,1fr);grid-template-rows:1fr 1fr;column-gap:.5rem}.two-column-grid{display:grid;grid-template-columns:repeat(2,1fr);column-gap:.5rem;border-bottom:solid 1px var(--gray-100)}.two-column-grid:last-child{border-bottom:none}.three-column-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:1fr 1fr;column-gap:.5rem}.formSection{padding:1.5rem 0}.formSection:first-child{padding:0 0 1.5rem}.multi-select-section-app label{margin-bottom:.3rem!important;z-index:inherit}.list-border{height:inherit!important;min-height:45px!important}.list-border ul{padding:0 22px 0 0!important;position:inherit!important}.list-border ul span{font-weight:500!important;font-size:.785rem;padding:1.4rem 0!important}.multi-select-container .sb-modal-dropdown-web ul{border:none!important}.sb-textbox,.topic-picker-selector,select,.sb-textarea,.list-border{border:1px solid rgba(34,36,38,.15)!important;padding:.85rem .5rem!important;border-radius:.28571429rem;font-size:.785rem!important;font-weight:500!important}.sb-keywordbox{border:1px solid rgba(34,36,38,.15)!important;padding:.45rem .5rem!important;border-radius:.28571429rem;font-size:.785rem!important;font-weight:500;padding:0!important}.sb-keywordbox .ng2-tag-input{padding:0}.sb-keywordbox .ng2-tag-input tag{margin-left:.5rem}.sb-keywordbox .ng2-tags-container{margin-top:.2rem}.sb-keywordbox .tag-wrapper,.sb-keywordbox delete-icon svg{height:24px!important;line-height:24px}label{font-size:12px!important;margin-bottom:.5rem!important;color:#121213e0;font-weight:500}.multi-select-container .caret-down.disabled+.list-border{cursor:not-allowed;background-color:#fafafa!important}\\200b .multi-select-container .list-border ul{font-size:12px!important;margin-bottom:.5rem!important;font-weight:500;color:#333;padding:0;margin:0!important;opacity:1!important;font-weight:500!important;position:inherit!important}.sb-dropdown label{padding:0!important}.sb-textarea-container .sb-textarea{height:2.9rem;padding-top:.5rem!important}.sb-textarea-container label{padding:0!important}sb-icon-dropdown{top:10px!important;right:6px!important}.sb-textarea-container,.sb-dropdown{margin:1rem 0!important}.meta-form .dynamic-form .sb-search-input::-webkit-input-placeholder{padding-left:1.4rem!important}.meta-form .dynamic-form .required label:after{content:\"*\";margin:-.2em 0 0 .2em;color:#db2828}.meta-form .dynamic-form .required .multi-select-container .list-border ul:after{content:none!important}.meta-form .dynamic-form sb-dynamic-checkbox label{padding-left:1.5rem!important}.meta-form .dynamic-form sb-dynamic-checkbox label:after{color:#fff!important;width:1rem!important;height:1rem!important}.sb-textbox[disabled=true],[disabled=true].topic-picker-selector,.sb-textarea[disabled=true],.sb-dropdown-select[disabled],.treepicker-parent div[disabled=true]{opacity:1!important;font-weight:500!important;cursor:not-allowed;background-color:#fafafa!important}lib-meta-form sb-dynamic-form .dynamic-form{min-height:1100px}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.fs-8{font-size:.5rem}.fs-10{font-size:.625rem}.fs-12{font-size:.75rem}.fs-14{font-size:.875rem}.fs-16{font-size:1rem}.fs-18{font-size:1.125rem}.fs-20{font-size:1.25rem}.fs-22{font-size:1.375rem}.fs-24{font-size:1.5rem}.fs-26{font-size:1.625rem}.fs-28{font-size:1.75rem}.fs-30{font-size:1.875rem}.fs-36{font-size:2.25rem}[data-title]:hover:before{content:attr(data-title);position:absolute;left:0;top:20px!important;bottom:initial!important;display:inline-block;padding:3px 6px;border-radius:2px;background:#fff;color:#000;font-size:12px;font-family:sans-serif;white-space:normal!important;border:solid 1px #ccc!important;height:auto!important;font-weight:600!important}\n"] }]
|
|
368
360
|
}], ctorParameters: function () { return [{ type: i1.EditorService }, { type: i2.TreeService }, { type: i3.FrameworkService }, { type: i4.HelperService }, { type: i5.ConfigService }, { type: i6.ToasterService }]; }, propDecorators: { rootFormConfig: [{
|
|
369
361
|
type: Input
|
|
370
362
|
}], unitFormConfig: [{
|
|
@@ -374,4 +366,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
374
366
|
}], toolbarEmitter: [{
|
|
375
367
|
type: Output
|
|
376
368
|
}] } });
|
|
377
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YS1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbGxlY3Rpb24tZWRpdG9yLWxpYnJhcnkvc3JjL2xpYi9jb21wb25lbnRzL21ldGEtZm9ybS9tZXRhLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29sbGVjdGlvbi1lZGl0b3ItbGlicmFyeS9zcmMvbGliL2NvbXBvbmVudHMvbWV0YS1mb3JtL21ldGEtZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWdDLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4SCxPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQ3hELE9BQU8sS0FBSyxDQUFDLE1BQU0sV0FBVyxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQVFuRSxPQUFPLEtBQUssTUFBTSxNQUFNLFFBQVEsQ0FBQzs7Ozs7Ozs7Ozs7QUFDakMsSUFBSSxtQkFBbUIsQ0FBQztBQVF4QixNQUFNLE9BQU8saUJBQWlCO0lBYTVCLFlBQW9CLGFBQTRCLEVBQVMsV0FBd0IsRUFDOUQsZ0JBQWtDLEVBQVUsYUFBNEIsRUFDdkUsYUFBNEIsRUFBVSxjQUE4QjtRQUZwRSxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUFTLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQzlELHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFBVSxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUN2RSxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUFVLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtR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LENBQUM7K0dBL1hVLGlCQUFpQjttR0FBakIsaUJBQWlCLHVPQ3BCOUIsc2RBS2U7OzRGRGVGLGlCQUFpQjtrQkFON0IsU0FBUzsrQkFDRSxlQUFlLGlCQUdWLGlCQUFpQixDQUFDLElBQUk7a1BBRzVCLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNJLGNBQWM7c0JBQXZCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IG1lcmdlLCBvZiwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwsIGZpbHRlciwgc3dpdGNoTWFwLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBUcmVlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RyZWUvdHJlZS5zZXJ2aWNlJztcbmltcG9ydCB7IEVkaXRvclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9lZGl0b3IvZWRpdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgRnJhbWV3b3JrU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2ZyYW1ld29yay9mcmFtZXdvcmsuc2VydmljZSc7XG5pbXBvcnQgeyBIZWxwZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaGVscGVyL2hlbHBlci5zZXJ2aWNlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY29uZmlnL2NvbmZpZy5zZXJ2aWNlJztcbmltcG9ydCB7IFRvYXN0ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdG9hc3Rlci90b2FzdGVyLnNlcnZpY2UnO1xuaW1wb3J0ICogYXMgbW9tZW50IGZyb20gJ21vbWVudCc7XG5sZXQgZnJhbXdvcmtTZXJ2aWNlVGVtcDtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLW1ldGEtZm9ybScsXG4gIHRlbXBsYXRlVXJsOiAnLi9tZXRhLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tZXRhLWZvcm0uY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgTWV0YUZvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgQElucHV0KCkgcm9vdEZvcm1Db25maWc6IGFueTtcbiAgQElucHV0KCkgdW5pdEZvcm1Db25maWc6IGFueTtcbiAgQElucHV0KCkgbm9kZU1ldGFkYXRhOiBhbnk7XG4gIEBPdXRwdXQoKSB0b29sYmFyRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBwcml2YXRlIG9uQ29tcG9uZW50RGVzdHJveSQgPSBuZXcgU3ViamVjdDxhbnk+KCk7XG4gIHB1YmxpYyBmcmFtZXdvcmtEZXRhaWxzOiBhbnkgPSB7fTtcbiAgcHVibGljIGZvcm1GaWVsZFByb3BlcnRpZXM6IGFueTtcbiAgcHVibGljIHNob3dBcHBJY29uID0gZmFsc2U7XG4gIHB1YmxpYyBhcHBJY29uQ29uZmlnOiBhbnk7XG4gIHB1YmxpYyBhcHBJY29uOiBhbnk7XG4gIHB1YmxpYyBwcmV2aW91c1NodWZmbGVWYWx1ZTogYm9vbGVhbjtcbiAgcHVibGljIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVkaXRvclNlcnZpY2U6IEVkaXRvclNlcnZpY2UsIHB1YmxpYyB0cmVlU2VydmljZTogVHJlZVNlcnZpY2UsXG4gICAgICAgICAgICAgIHB1YmxpYyBmcmFtZXdvcmtTZXJ2aWNlOiBGcmFtZXdvcmtTZXJ2aWNlLCBwcml2YXRlIGhlbHBlclNlcnZpY2U6IEhlbHBlclNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSwgcHJpdmF0ZSB0b2FzdGVyU2VydmljZTogVG9hc3RlclNlcnZpY2UpIHtcbiAgICAgICAgICAgICAgICBmcmFtd29ya1NlcnZpY2VUZW1wID0gZnJhbWV3b3JrU2VydmljZTtcbiAgICAgICAgICAgICAgIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICAvLyBJbml0aWFsaXplIGNvbXBvbmVudFxuICB9XG5cbiAgbmdPbkNoYW5nZXMoKSB7XG4gICAgdGhpcy5mZXRjaEZyYW1lV29ya0RldGFpbHMoKTtcbiAgICB0aGlzLnNldEFwcEljb25EYXRhKCk7XG4gICAgaWYgKF8uaGFzKHRoaXMubm9kZU1ldGFkYXRhLCAnZGF0YS5tZXRhZGF0YS5zaHVmZmxlJykpIHtcbiAgICAgIHRoaXMuc2V0U2h1ZmZsZVZhbHVlKHRoaXMubm9kZU1ldGFkYXRhLmRhdGEubWV0YWRhdGEuc2h1ZmZsZSk7XG4gICAgfVxuICB9XG5cbiAgc2V0QXBwSWNvbkRhdGEoKSB7XG4gICAgY29uc3QgaXNSb290Tm9kZSA9IF8uZ2V0KHRoaXMubm9kZU1ldGFkYXRhLCAnZGF0YS5yb290Jyk7XG4gICAgdGhpcy5hcHBJY29uQ29uZmlnID0gXy5maW5kKF8uZmxhdHRlbihfLm1hcCh0aGlzLnJvb3RGb3JtQ29uZmlnLCAnZmllbGRzJykpLCB7Y29kZTogJ2FwcEljb24nfSk7XG4gICAgaWYoXy5pc1VuZGVmaW5lZCh0aGlzLmFwcEljb25Db25maWcpKSB7XG4gICAgICB0aGlzLmFwcEljb25Db25maWcgPSBfLmZpbmQodGhpcy5yb290Rm9ybUNvbmZpZywge2NvZGU6ICdhcHBJY29uJ30pO1xuICAgIH1cbiAgICBpZiAoIV8uaXNVbmRlZmluZWQodGhpcy5hcHBJY29uQ29uZmlnKSAmJiBpc1Jvb3ROb2RlID09PSB0cnVlKSB7XG4gICAgICB0aGlzLnNob3dBcHBJY29uID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zaG93QXBwSWNvbiA9IGZhbHNlO1xuICAgIH1cbiAgICB0aGlzLmFwcEljb24gPSBfLmdldCh0aGlzLm5vZGVNZXRhZGF0YSwgJ2RhdGEubWV0YWRhdGEuYXBwSWNvbicpO1xuICAgIGlmICh0aGlzLmlzUmV2aWV3TW9kZSgpKSB7XG4gICAgICB0aGlzLmFwcEljb25Db25maWcgPSB7Li4udGhpcy5hcHBJY29uQ29uZmlnICwgLi4uIHtpc0FwcEljb25FZGl0YWJsZTogZmFsc2V9fTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hcHBJY29uQ29uZmlnID0gey4uLnRoaXMuYXBwSWNvbkNvbmZpZyAsIC4uLiB7aXNBcHBJY29uRWRpdGFibGU6IHRydWV9fTtcbiAgICB9XG4gICAgY29uc3QgaWZFZGl0YWJsZSA9IHRoaXMuaWZGaWVsZElzRWRpdGFibGUoJ2FwcEljb24nKTtcbiAgfVxuXG4gIHNldFNodWZmbGVWYWx1ZSh2YWx1ZSkge1xuICAgIGlmIChfLmlzQm9vbGVhbih2YWx1ZSkpIHtcbiAgICAgIHRoaXMuaGVscGVyU2VydmljZS5zZXRTaHVmZmxlVmFsdWUodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHNob3dTaHVmZmxlTWVzc2FnZShldmVudCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy5oZWxwZXJTZXJ2aWNlLnNodWZmbGVWYWx1ZS5zdWJzY3JpYmUoc2h1ZmZsZSA9PiB0aGlzLnByZXZpb3VzU2h1ZmZsZVZhbHVlID0gc2h1ZmZsZSk7XG4gICAgaWYgKF8uaXNCb29sZWFuKGV2ZW50LnNodWZmbGUpICYmIGV2ZW50LnNodWZmbGUgPT09IHRydWUgJiYgXy5pc0Jvb2xlYW4odGhpcy5wcmV2aW91c1NodWZmbGVWYWx1ZSkgJiYgIHRoaXMucHJldmlvdXNTaHVmZmxlVmFsdWUgPT09IGZhbHNlKSB7XG4gICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLnNpbXBsZUluZm8oXy5nZXQodGhpcy5jb25maWdTZXJ2aWNlLCAnbGFiZWxDb25maWcubGJsLnNodWZmbGVPbk1lc3NhZ2UnKSk7XG4gICAgfVxuICAgIHRoaXMuc2V0U2h1ZmZsZVZhbHVlKGV2ZW50LnNodWZmbGUpO1xuICB9XG5cbiAgZmV0Y2hGcmFtZVdvcmtEZXRhaWxzKCkge1xuICAgIGlmICh0aGlzLmZyYW1ld29ya1NlcnZpY2Uub3JnYW5pc2F0aW9uRnJhbWV3b3JrKSB7XG4gICAgICB0aGlzLmZyYW1ld29ya1NlcnZpY2UuZnJhbWV3b3JrRGF0YSQucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMub25Db21wb25lbnREZXN0cm95JCksXG4gICAgICAgIGZpbHRlcihkYXRhID0+IF8uZ2V0KGRhdGEsIGBmcmFtZXdvcmtkYXRhLiR7dGhpcy5mcmFtZXdvcmtTZXJ2aWNlLm9yZ2FuaXNhdGlvbkZyYW1ld29ya31gKSlcbiAgICAgICkuc3Vic2NyaWJlKChmcmFtZXdvcmtEZXRhaWxzOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKGZyYW1ld29ya0RldGFpbHMgJiYgIWZyYW1ld29ya0RldGFpbHMuZXJyKSB7XG4gICAgICAgICAgY29uc3QgZnJhbWV3b3JrRGF0YSA9IGZyYW1ld29ya0RldGFpbHMuZnJhbWV3b3JrZGF0YVt0aGlzLmZyYW1ld29ya1NlcnZpY2Uub3JnYW5pc2F0aW9uRnJhbWV3b3JrXS5jYXRlZ29yaWVzO1xuICAgICAgICAgIHRoaXMuZnJhbWV3b3JrRGV0YWlscy5mcmFtZXdvcmtEYXRhID0gZnJhbWV3b3JrRGF0YTtcbiAgICAgICAgICB0aGlzLmZyYW1ld29ya0RldGFpbHMudG9waWNMaXN0ID0gXy5nZXQoXy5maW5kKGZyYW1ld29ya0RhdGEsIHtcbiAgICAgICAgICAgIGNvZGU6ICd0b3BpYydcbiAgICAgICAgICB9KSwgJ3Rlcm1zJyk7XG4gICAgICAgICAgdGhpcy5mcmFtZXdvcmtEZXRhaWxzLnRhcmdldEZyYW1ld29ya3MgPSBfLmZpbHRlcihmcmFtZXdvcmtEZXRhaWxzLmZyYW1ld29ya2RhdGEsICh2YWx1ZSwga2V5KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gXy5pbmNsdWRlcyh0aGlzLmZyYW1ld29ya1NlcnZpY2UudGFyZ2V0RnJhbWV3b3JrSWRzLCBrZXkpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMuYXR0YWNoRGVmYXVsdFZhbHVlcygpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuZnJhbWV3b3JrU2VydmljZS50YXJnZXRGcmFtZXdvcmtJZHMpIHtcbiAgICAgICAgdGhpcy5mcmFtZXdvcmtTZXJ2aWNlLmZyYW1ld29ya0RhdGEkLnBpcGUoXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMub25Db21wb25lbnREZXN0cm95JCksXG4gICAgICAgICAgZmlsdGVyKGRhdGEgPT4gXy5nZXQoZGF0YSwgYGZyYW1ld29ya2RhdGEuJHtfLmZpcnN0KHRoaXMuZnJhbWV3b3JrU2VydmljZS50YXJnZXRGcmFtZXdvcmtJZHMpfWApKVxuICAgICAgICApLnN1YnNjcmliZSgoZnJhbWV3b3JrRGV0YWlsczogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKGZyYW1ld29ya0RldGFpbHMgJiYgIWZyYW1ld29ya0RldGFpbHMuZXJyKSB7XG4gICAgICAgICAgICAvLyBjb25zdCBmcmFtZXdvcmtEYXRhID0gZnJhbWV3b3JrRGV0YWlscy5mcmFtZXdvcmtkYXRhW3RoaXMuZnJhbWV3b3JrU2VydmljZS50YXJnZXRGcmFtZXdvcmtJZHNdLmNhdGVnb3JpZXM7XG4gICAgICAgICAgICAvLyB0aGlzLmZyYW1ld29ya0RldGFpbHMuZnJhbWV3b3JrRGF0YSA9IGZyYW1ld29ya0RhdGE7XG4gICAgICAgICAgICAvLyB0aGlzLmZyYW1ld29ya0RldGFpbHMudG9waWNMaXN0ID0gXy5nZXQoXy5maW5kKGZyYW1ld29ya0RhdGEsIHtcbiAgICAgICAgICAgIC8vICAgY29kZTogJ3RvcGljJ1xuICAgICAgICAgICAgLy8gfSksICd0ZXJtcycpO1xuICAgICAgICAgICAgdGhpcy5mcmFtZXdvcmtEZXRhaWxzLnRhcmdldEZyYW1ld29ya3MgPSBfLmZpbHRlcihmcmFtZXdvcmtEZXRhaWxzLmZyYW1ld29ya2RhdGEsICh2YWx1ZSwga2V5KSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiBfLmluY2x1ZGVzKHRoaXMuZnJhbWV3b3JrU2VydmljZS50YXJnZXRGcmFtZXdvcmtJZHMsIGtleSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuYXR0YWNoRGVmYXVsdFZhbHVlcygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYXR0YWNoRGVmYXVsdFZhbHVlcygpIHtcbiAgICBjb25zdCBtZXRhRGF0YUZpZWxkcyA9IF8uZ2V0KHRoaXMubm9kZU1ldGFkYXRhLCAnZGF0YS5tZXRhZGF0YScpO1xuICAgIC8vIGlmIChfLmlzRW1wdHkobWV0YURhdGFGaWVsZHMpKSB7IHJldHVybjsgfVxuICAgIGNvbnN0IGlzUm9vdCA9IF8uZ2V0KG1ldGFEYXRhRmllbGRzLCAnZGF0YS5yb290Jyk7XG4gICAgY29uc3QgY2F0ZWdvcnlNYXN0ZXJMaXN0ID0gdGhpcy5mcmFtZXdvcmtEZXRhaWxzLmZyYW1ld29ya0RhdGEgfHxcbiAgICAhaXNSb290ICYmIHRoaXMuZnJhbWV3b3JrU2VydmljZS5zZWxlY3RlZE9yZ2FuaXNhdGlvbkZyYW1ld29yayAmJlxuICAgICBfLmdldCh0aGlzLmZyYW1ld29ya1NlcnZpY2Uuc2VsZWN0ZWRPcmdhbmlzYXRpb25GcmFtZXdvcmssICdmcmFtZXdvcmsuY2F0ZWdvcmllcycpO1xuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTptYXgtbGluZS1sZW5ndGhcbiAgICBsZXQgZm9ybUNvbmZpZzogYW55ID0gKF8uZ2V0KG1ldGFEYXRhRmllbGRzLCAndmlzaWJpbGl0eScpID09PSAnRGVmYXVsdCcpID8gXy5jbG9uZURlZXAodGhpcy5yb290Rm9ybUNvbmZpZykgOiBfLmNsb25lRGVlcCh0aGlzLnVuaXRGb3JtQ29uZmlnKTtcbiAgICBmb3JtQ29uZmlnID0gZm9ybUNvbmZpZyAmJiBfLmhhcyhfLmZpcnN0KGZvcm1Db25maWcpLCAnZmllbGRzJykgPyBmb3JtQ29uZmlnIDogW3tuYW1lOiAnJywgZmllbGRzOiBmb3JtQ29uZmlnfV07XG4gICAgaWYgKCFfLmlzRW1wdHkodGhpcy5mcmFtZXdvcmtEZXRhaWxzLnRhcmdldEZyYW1ld29ya3MpKSB7XG4gICAgICBjb25zdCBmaWVsZFRlcm1zTWFwID0gbmV3IE1hcCgpO1xuICAgICAgXy5mb3JFYWNoKHRoaXMuZnJhbWV3b3JrRGV0YWlscy50YXJnZXRGcmFtZXdvcmtzLCAoZnJhbWV3b3JrKSA9PiB7XG4gICAgICAgIF8uZm9yRWFjaChmb3JtQ29uZmlnLCAoc2VjdGlvbikgPT4ge1xuICAgICAgICAgIF8uZm9yRWFjaChzZWN0aW9uLmZpZWxkcywgZmllbGQgPT4ge1xuICAgICAgICAgICAgY29uc3QgZnJhbWV3b3JrQ2F0ZWdvcnkgPSBfLmZpbmQoZnJhbWV3b3JrLmNhdGVnb3JpZXMsIGNhdGVnb3J5ID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIGNhdGVnb3J5LmNvZGUgPT09IGZpZWxkLnNvdXJjZUNhdGVnb3J5ICYmIF8uaW5jbHVkZXMoZmllbGQuY29kZSwgJ3RhcmdldCcpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoIV8uaXNFbXB0eShmcmFtZXdvcmtDYXRlZ29yeSkpIHtcbiAgICAgICAgICAgICAgZmllbGQudGVybXMgPSBfLmNsb25lRGVlcChmcmFtZXdvcmtDYXRlZ29yeS50ZXJtcyk7XG4gICAgICAgICAgICAgIGZpZWxkVGVybXNNYXAuc2V0KGZpZWxkLmNvZGUsIGZpZWxkLnRlcm1zKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgXy5mb3JFYWNoKGZvcm1Db25maWcsIChzZWN0aW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IGZpZWxkcyA9IHNlY3Rpb24uZmllbGRzIHx8IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZpZWxkcy5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgICAgICBjb25zdCBjdXJyZW50RmllbGQgPSBmaWVsZHNbaV07XG4gICAgICAgICAgY29uc3QgbmV4dEZpZWxkID0gZmllbGRzW2kgKyAxXTtcbiAgICAgICAgICBjb25zdCBuZXh0RmllbGREZXBlbmRzT25DdXJyZW50ID0gbmV4dEZpZWxkLmRlcGVuZHMgJiYgQXJyYXkuaXNBcnJheShuZXh0RmllbGQuZGVwZW5kcykgJiYgbmV4dEZpZWxkLmRlcGVuZHMuaW5jbHVkZXMoY3VycmVudEZpZWxkLmNvZGUpO1xuICAgICAgICAgIGlmIChjdXJyZW50RmllbGQudGVybXMgJiYgZmllbGRUZXJtc01hcC5oYXMobmV4dEZpZWxkLmNvZGUpICYmIG5leHRGaWVsZERlcGVuZHNPbkN1cnJlbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IG5leHRGaWVsZFRlcm1zID0gZmllbGRUZXJtc01hcC5nZXQobmV4dEZpZWxkLmNvZGUpO1xuICAgICAgICAgICAgY3VycmVudEZpZWxkLnRlcm1zLmZvckVhY2godGVybSA9PiB7XG4gICAgICAgICAgICAgIGlmICh0ZXJtICYmICghdGVybS5hc3NvY2lhdGlvbnMgfHwgXy5pc0VtcHR5KHRlcm0uYXNzb2NpYXRpb25zKSkpIHsgIFxuICAgICAgICAgICAgICAgIHRlcm0uYXNzb2NpYXRpb25zID0gbmV4dEZpZWxkVGVybXMubWFwKG5leHRUZXJtID0+ICh7XG4gICAgICAgICAgICAgICAgICBpZGVudGlmaWVyOiBuZXh0VGVybS5pZGVudGlmaWVyLFxuICAgICAgICAgICAgICAgICAgY29kZTogbmV4dFRlcm0uY29kZSxcbiAgICAgICAgICAgICAgICAgIG5hbWU6IG5leHRUZXJtLm5hbWUsXG4gICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogbmV4dFRlcm0uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICBjYXRlZ29yeTogbmV4dFRlcm0uY2F0ZWdvcnksXG4gICAgICAgICAgICAgICAgICBzdGF0dXM6IG5leHRUZXJtLnN0YXR1c1xuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBfLmZvckVhY2goZm9ybUNvbmZpZywgKHNlY3Rpb24pID0+IHtcbiAgICAgIF8uZm9yRWFjaChzZWN0aW9uLmZpZWxkcywgZmllbGQgPT4ge1xuXG4gICAgICAgIGlmIChtZXRhRGF0YUZpZWxkcykge1xuICAgICAgICAgIGlmIChfLmhhcyhtZXRhRGF0YUZpZWxkcywgZmllbGQuY29kZSkpIHtcbiAgICAgICAgICAgIGZpZWxkLmRlZmF1bHQgPSBfLmdldChtZXRhRGF0YUZpZWxkcywgZmllbGQuY29kZSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChfLmluY2x1ZGVzKFsnbWF4VGltZScsICd3YXJuaW5nVGltZSddLCBmaWVsZC5jb2RlKSkge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBfLmdldChtZXRhRGF0YUZpZWxkcywgYHRpbWVMaW1pdHMuJHtmaWVsZC5jb2RlfWApO1xuICAgICAgICAgICAgZmllbGQuZGVmYXVsdCA9ICFfLmlzRW1wdHkodmFsdWUpID9cbiAgICAgICAgICAgIG1vbWVudC51dGMobW9tZW50LmR1cmF0aW9uKHZhbHVlLCAnc2Vjb25kcycpLmFzTWlsbGlzZWNvbmRzKCkpLmZvcm1hdCh0aGlzLmhlbHBlclNlcnZpY2UuZ2V0VGltZXJGb3JtYXQoZmllbGQpKSA6ICcnO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoZmllbGQuY29kZSA9PT0gJ2ZyYW1ld29yaycpIHtcbiAgICAgICAgICBmaWVsZC5yYW5nZSA9IHRoaXMuZnJhbWV3b3JrU2VydmljZS5mcmFtZXdvcmtWYWx1ZXM7XG4gICAgICAgICAgZmllbGQub3B0aW9ucyA9IHRoaXMuZ2V0RnJhbWV3b3JrO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFfLmluY2x1ZGVzKGZpZWxkLmRlcGVuZHMsICdmcmFtZXdvcmsnKSAmJiAhXy5pbmNsdWRlcyhmaWVsZC5jb2RlLCAndGFyZ2V0JykpIHtcbiAgICAgICAgICBjb25zdCBmcmFtZXdvcmtDYXRlZ29yeSA9IF8uZmluZChjYXRlZ29yeU1hc3Rlckxpc3QsIGNhdGVnb3J5ID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIChjYXRlZ29yeS5jb2RlID09PSBmaWVsZC5zb3VyY2VDYXRlZ29yeSB8fCBjYXRlZ29yeS5jb2RlID09PSBmaWVsZC5jb2RlKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBpZiAoIV8uaXNFbXB0eShmcmFtZXdvcmtDYXRlZ29yeSkpIHtcbiAgICAgICAgICAgICAgZmllbGQudGVybXMgPSBmcmFtZXdvcmtDYXRlZ29yeS50ZXJtcztcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZmllbGQuY29kZSA9PT0gJ2xpY2Vuc2UnKSB7XG4gICAgICAgICAgY29uc3QgZGVmYXVsdExpY2Vuc2UgPSBfLmdldChtZXRhRGF0YUZpZWxkcywgZmllbGQuY29kZSk7XG4gICAgICAgICAgZmllbGQuZGVmYXVsdCA9ICFfLmlzRW1wdHkoZGVmYXVsdExpY2Vuc2UpID8gZGVmYXVsdExpY2Vuc2UgOiB0aGlzLmVkaXRvclNlcnZpY2UuZWRpdG9yQ29uZmlnLmNvbnRleHQuZGVmYXVsdExpY2Vuc2U7XG4gICAgICAgICAgY29uc3QgbGljZW5zZXMgPSB0aGlzLmhlbHBlclNlcnZpY2UuZ2V0QXZhaWxhYmxlTGljZW5zZXMoKTtcbiAgICAgICAgICBmaWVsZC5yYW5nZSA9IGxpY2Vuc2VzID8gXy5tYXAobGljZW5zZXMsICduYW1lJykgOiBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmaWVsZC5jb2RlID09PSAnYWRkaXRpb25hbENhdGVnb3JpZXMnKSB7XG4gICAgICAgICAgY29uc3QgY2hhbm5lbEluZm8gPSB0aGlzLmhlbHBlclNlcnZpY2UuY2hhbm5lbEluZm87XG4gICAgICAgICAgY29uc3QgYWRkaXRpb25hbENhdGVnb3JpZXMgPSBfLnVuaXEoXy5nZXQoY2hhbm5lbEluZm8sXG4gICAgICAgICAgICBgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuY2F0ZWdvcnlDb25maWcuYWRkaXRpb25hbENhdGVnb3JpZXNbdGhpcy5lZGl0b3JTZXJ2aWNlLmVkaXRvckNvbmZpZy5jb25maWcub2JqZWN0VHlwZV19YCkgfHxcbiAgICAgICAgICAgXy5nZXQodGhpcy5lZGl0b3JTZXJ2aWNlLmVkaXRvckNvbmZpZywgJ2NvbnRleHQuYWRkaXRpb25hbENhdGVnb3JpZXMnKSk7XG4gICAgICAgICAgaWYgKCFfLmlzRW1wdHkoYWRkaXRpb25hbENhdGVnb3JpZXMpKSB7XG4gICAgICAgICAgICBmaWVsZC5yYW5nZSA9IF8udW5pcShhZGRpdGlvbmFsQ2F0ZWdvcmllcyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZpZWxkLmNvZGUgID09PSAnY29weXJpZ2h0Jykge1xuICAgICAgICAgIGNvbnN0IGNoYW5uZWxEYXRhID0gdGhpcy5oZWxwZXJTZXJ2aWNlLmNoYW5uZWxJbmZvO1xuICAgICAgICAgIGZpZWxkLmRlZmF1bHQgPSBfLmdldChtZXRhRGF0YUZpZWxkcywgZmllbGQuY29kZSk7XG4gICAgICAgICAgaWYgKF8uaXNFbXB0eShmaWVsZC5kZWZhdWx0KSAmJiB0aGlzLmVkaXRvclNlcnZpY2UuZWRpdG9yQ29uZmlnLmNvbmZpZy5zZXREZWZhdWx0Q29weVJpZ2h0KSB7XG4gICAgICAgICAgICBmaWVsZC5kZWZhdWx0ID0gY2hhbm5lbERhdGEgJiYgY2hhbm5lbERhdGEubmFtZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZmllbGQuY29kZSA9PT0gJ21heFF1ZXN0aW9ucycpIHtcbiAgICAgICAgICBjb25zdCBhY3RpdmVOb2RlID0gdGhpcy50cmVlU2VydmljZS5nZXRBY3RpdmVOb2RlKCk7XG4gICAgICAgICAgY29uc3Qgcm9vdEZpcnN0Q2hpbGROb2RlID0gdGhpcy5lZGl0b3JTZXJ2aWNlLmdldENvbnRlbnRDaGlsZHJlbnMoYWN0aXZlTm9kZSk7XG4gICAgICAgICAgaWYgKHJvb3RGaXJzdENoaWxkTm9kZSAmJiByb290Rmlyc3RDaGlsZE5vZGUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgZmllbGQucmFuZ2UgPSBfLnRpbWVzKF8uc2l6ZShyb290Rmlyc3RDaGlsZE5vZGUpLCBpbmRleCA9PiBpbmRleCArIDEpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmaWVsZC5jb2RlID09PSAnYXV0aG9yJykge1xuICAgICAgICAgIGNvbnN0IGRlZmF1bHRBdXRob3IgPSBfLmdldChtZXRhRGF0YUZpZWxkcywgZmllbGQuY29kZSk7XG4gICAgICAgICAgZmllbGQuZGVmYXVsdCA9ICFfLmlzRW1wdHkoZGVmYXVsdEF1dGhvcikgPyBkZWZhdWx0QXV0aG9yIDogIF8uZ2V0KHRoaXMuZWRpdG9yU2VydmljZS5lZGl0b3JDb25maWcsICdjb250ZXh0LnVzZXIuZnVsbE5hbWUnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmaWVsZC5jb2RlID09PSAnc2hvd1RpbWVyJykge1xuICAgICAgICAgIGZpZWxkLm9wdGlvbnMgPSB0aGlzLnNob3dUaW1lcjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmllbGQuY29kZSA9PT0gJ2luc3RydWN0aW9ucycpIHtcbiAgICAgICAgICBmaWVsZC5kZWZhdWx0ID0gXy5nZXQobWV0YURhdGFGaWVsZHMsICdpbnN0cnVjdGlvbnMuZGVmYXVsdCcpIHx8ICcnIDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmllbGQuY29kZSA9PT0gJ3NldFBlcmlvZCcpIHtcbiAgICAgICAgICBmaWVsZC5kZWZhdWx0ID0gIV8uaXNFbXB0eShtZXRhRGF0YUZpZWxkcywgJ2VuZERhdGUnKSA/ICdZZXMnIDogJ05vJyA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZpZWxkLmNvZGUgPT09ICdhbGxvd0VDTScpIHtcbiAgICAgICAgICBmaWVsZC5kZWZhdWx0ID0gXy5nZXQobWV0YURhdGFGaWVsZHMsICdyZWNvcmRlZEJ5JykgIT09ICdTZWxmJyA/ICdZZXMnIDogJ05vJyA7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZmllbGQuY29kZSA9PT0gJ2luc3RhbmNlcycpIHtcbiAgICAgICAgICBmaWVsZC5kZWZhdWx0ID0gICFfLmlzRW1wdHkobWV0YURhdGFGaWVsZHMsICdpbnN0YW5jZXMnKSA/IF8uZ2V0KG1ldGFEYXRhRmllbGRzLCAnaW5zdGFuY2VzLmxhYmVsJykgOiAnJyA7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoKF8uaXNFbXB0eShmaWVsZC5yYW5nZSkgfHwgXy5pc0VtcHR5KGZpZWxkLnRlcm1zKSkgJiZcbiAgICAgICAgICAhZmllbGQuZWRpdGFibGUgJiYgIV8uaXNFbXB0eShmaWVsZC5kZWZhdWx0KSkge1xuICAgICAgICAgIGlmIChfLmhhcyhmaWVsZCwgJ3Rlcm1zJykpIHtcbiAgICAgICAgICAgIGZpZWxkLnRlcm1zID0gW107XG4gICAgICAgICAgICBpZiAoXy5pc0FycmF5KGZpZWxkLmRlZmF1bHQpKSB7XG4gICAgICAgICAgICAgIGZpZWxkLnRlcm1zID0gZmllbGQuZGVmYXVsdCB8fCBbXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGZpZWxkLnRlcm1zLnB1c2goZmllbGQuZGVmYXVsdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZpZWxkLnJhbmdlID0gW107XG4gICAgICAgICAgICBpZiAoXy5pc0FycmF5KGZpZWxkLmRlZmF1bHQpKSB7XG4gICAgICAgICAgICAgIGZpZWxkLnJhbmdlID0gZmllbGQuZGVmYXVsdDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGZpZWxkLnJhbmdlLnB1c2goZmllbGQuZGVmYXVsdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZpZWxkLmlucHV0VHlwZSA9PT0gJ25lc3RlZHNlbGVjdCcpIHtcbiAgICAgICAgICBfLm1hcChmaWVsZC5yYW5nZSwgdmFsID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIHZhbHVlOiB2YWwudmFsdWUgfHwgdmFsLFxuICAgICAgICAgICAgICBsYWJlbDogdmFsLnZhbHVlIHx8IHZhbFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGlmRWRpdGFibGUgPSB0aGlzLmlmRmllbGRJc0VkaXRhYmxlKGZpZWxkLmNvZGUpOyBcbiAgICAgICAgXy5zZXQoZmllbGQsICdlZGl0YWJsZScsIGlmRWRpdGFibGUpO1xuXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHRoaXMuZm9ybUZpZWxkUHJvcGVydGllcyA9IF8uY2xvbmVEZWVwKGZvcm1Db25maWcpO1xuICAgIGNvbnNvbGUubG9nKHRoaXMuZm9ybUZpZWxkUHJvcGVydGllcyk7XG4gIH1cbiAgaXNSZXZpZXdNb2RlKCkge1xuICAgIHJldHVybiAgXy5pbmNsdWRlcyhbICdyZXZpZXcnLCAncmVhZCcsICdzb3VyY2luZ3JldmlldycsICdvcmdyZXZpZXcnIF0sIHRoaXMuZWRpdG9yU2VydmljZS5lZGl0b3JNb2RlKTtcbiAgfVxuICBpZkZpZWxkSXNFZGl0YWJsZShmaWVsZENvZGUpIHtcbiAgICBjb25zdCBlZGlvck1vZGUgPSB0aGlzLmVkaXRvclNlcnZpY2UuZWRpdG9yTW9kZTtcbiAgICBpZiAoIXRoaXMuaXNSZXZpZXdNb2RlKCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBjb25zdCBlZGl0YWJsZUZpZWxkcyA9IF8uZ2V0KHRoaXMuZWRpdG9yU2VydmljZS5lZGl0b3JDb25maWcuY29uZmlnLCAnZWRpdGFibGVGaWVsZHMnKTtcbiAgICBpZiAoZWRpdGFibGVGaWVsZHMgJiYgIV8uaXNFbXB0eShlZGl0YWJsZUZpZWxkc1tlZGlvck1vZGVdKSAmJiBfLmluY2x1ZGVzKGVkaXRhYmxlRmllbGRzW2VkaW9yTW9kZV0sIGZpZWxkQ29kZSkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgb3V0cHV0RGF0YShldmVudERhdGE6IGFueSkgeyB9XG5cbiAgb25TdGF0dXNDaGFuZ2VzKGV2ZW50KSB7XG4gICAgdGhpcy50b29sYmFyRW1pdHRlci5lbWl0KHsgYnV0dG9uOiAnb25Gb3JtU3RhdHVzQ2hhbmdlJywgZXZlbnQgfSk7XG4gIH1cblxuICBhcHBJY29uRGF0YUhhbmRsZXIoZXZlbnQpIHtcbiAgICB0aGlzLmFwcEljb24gPSBldmVudC51cmw7XG4gICAgdGhpcy50cmVlU2VydmljZS51cGRhdGVBcHBJY29uKGV2ZW50LnVybCk7XG4gIH1cblxuICBzaG93VGltZXIoY29udHJvbCwgZGVwZW5kczogRm9ybUNvbnRyb2xbXSwgZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGxvYWRpbmcsIGxvYWRlZCkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0ge307XG4gICAgY29uc3QgcmVzcG9uc2UgPSBtZXJnZSguLi5fLm1hcChkZXBlbmRzLCBkZXBlbmQgPT4gZGVwZW5kLnZhbHVlQ2hhbmdlcykpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKHZhbHVlOiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgaXNEZXBlbmRzSW52YWxpZCA9IF8uaW5jbHVkZXMoXy5tYXAoZGVwZW5kcywgZGVwZW5kID0+IGRlcGVuZC5pbnZhbGlkKSwgdHJ1ZSk7XG4gICAgICAgIGNvbnN0IGRlcGVuZHNLZXlWYWx1ZSA9IF8ubWFwKGRlcGVuZHMsIChkZXBlbmQsIGtleSkgPT4ge1xuICAgICAgICAgIHJldHVybiB7IFtrZXldOiBkZXBlbmQudmFsdWUgfTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICghaXNEZXBlbmRzSW52YWxpZCkge1xuICAgICAgICAgIGNvbnN0IG1heFRpbWVWYWx1ZSA9IF8uZmluZChkZXBlbmRzS2V5VmFsdWUsICdtYXhUaW1lJyk7XG4gICAgICAgICAgaWYgKCBtYXhUaW1lVmFsdWUgJiYgbWF4VGltZVZhbHVlLm1heFRpbWUgPT09ICcwMDowMDowMCcpIHtcbiAgICAgICAgICAgIHJldHVybiBvZihmYWxzZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBvZih0cnVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gb2YoZmFsc2UpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gICAgcmV0dXJuIHJlc3BvbnNlO1xuICB9XG5cbiAgZ2V0RnJhbWV3b3JrKGNvbnRyb2wsIGRlcGVuZHM6IEZvcm1Db250cm9sW10sIGZvcm1Hcm91cDogRm9ybUdyb3VwLCBsb2FkaW5nLCBsb2FkZWQpIHtcbiAgICBjb25zdCByZXNwb25zZSA9ICBjb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgc3dpdGNoTWFwKCh2YWx1ZTogYW55KSA9PiB7XG4gICAgICAgIGlmICghXy5pc0VtcHR5KHZhbHVlKSkge1xuICAgICAgICAgIHJldHVybiBmcmFtd29ya1NlcnZpY2VUZW1wLmdldEZyYW1ld29ya0NhdGVnb3JpZXModmFsdWUpLnBpcGUobWFwKHJlcyA9PiB7XG4gICAgICAgICAgICBjb25zdCBmcmFtZXdvcmtSZXNwb25zZSA9IF8uZ2V0KHJlcywgJ3Jlc3VsdCcpO1xuICAgICAgICAgICAgZnJhbXdvcmtTZXJ2aWNlVGVtcC5zZWxlY3RlZE9yZ2FuaXNhdGlvbkZyYW1ld29yayA9IGZyYW1ld29ya1Jlc3BvbnNlO1xuICAgICAgICAgICAgcmV0dXJuIGZyYW1ld29ya1Jlc3BvbnNlO1xuICAgICAgICAgIH0pKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgICByZXR1cm4gcmVzcG9uc2U7XG4gIH1cblxuICB2YWx1ZUNoYW5nZXMoZXZlbnQ6IGFueSkge1xuICAgIGlmIChfLmhhcyhldmVudCwgJ3NodWZmbGUnKSkge1xuICAgICAgdGhpcy5zaG93U2h1ZmZsZU1lc3NhZ2UoZXZlbnQpO1xuICAgIH1cbiAgICBjb25zdCBkYXRhID0gXy5vbWl0KGV2ZW50LCBbJ2FsbG93RUNNJywgJ2xldmVscycsICdzZXRQZXJpb2QnLCAnaW5zdGFuY2VzJ10pO1xuICAgIGlmICghXy5pc0VtcHR5KGV2ZW50Py5sZXZlbHMpKSB7XG4gICAgICBkYXRhLm91dGNvbWVEZWNsYXJhdGlvbiA9IHtcbiAgICAgICAgbGV2ZWxzOiB0aGlzLmNyZWF0ZUxlYXZlbHMoZXZlbnQubGV2ZWxzKVxuICAgICAgfTtcbiAgICB9XG4gICAgaWYgKCFfLmlzRW1wdHkoZXZlbnQ/Lmluc3RhbmNlcykpIHtcbiAgICAgIGRhdGEuaW5zdGFuY2VzID0geyBsYWJlbDogZXZlbnQ/Lmluc3RhbmNlcyB9O1xuICAgIH1cbiAgICBpZiAoIV8uaXNFbXB0eSh0aGlzLmFwcEljb24pICYmIHRoaXMuc2hvd0FwcEljb24pIHtcbiAgICAgIGRhdGEuYXBwSWNvbiA9IHRoaXMuYXBwSWNvbjtcbiAgICB9XG4gICAgXG4gICAgaWYgKHRoaXMuaXNSZXZpZXdNb2RlKCkgJiYgIWRhdGEubmFtZSkge1xuICAgICAgY29uc3Qgbm9kZVRpdGxlID0gdGhpcy5ub2RlTWV0YWRhdGE/LmRhdGE/Lm1ldGFkYXRhPy5uYW1lO1xuICAgICAgaWYgKG5vZGVUaXRsZSkge1xuICAgICAgICBkYXRhLm5hbWUgPSBub2RlVGl0bGU7XG4gICAgICB9XG4gICAgfVxuICAgICAgXG4gICAgdGhpcy50b29sYmFyRW1pdHRlci5lbWl0KHsgYnV0dG9uOiAnb25Gb3JtVmFsdWVDaGFuZ2UnLCBkYXRhIH0pO1xuICAgIHRoaXMudHJlZVNlcnZpY2UudXBkYXRlTm9kZShkYXRhKTtcbiAgfVxuXG4gIGNyZWF0ZUxlYXZlbHMobGV2ZWxzKSB7XG4gICAgY29uc3Qgb2JqID0ge307XG4gICAgXy5mb3JFYWNoKGxldmVscywgKGVsLCBpbmRleCkgPT4ge1xuICAgICAgb2JqW2BMJHtpbmRleCArIDF9YF0gPSB7XG4gICAgICAgICBsYWJlbCA6IGVsXG4gICAgICAgfTtcbiAgICB9KTtcbiAgICByZXR1cm4gb2JqO1xuICB9XG5cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLm9uQ29tcG9uZW50RGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMub25Db21wb25lbnREZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cbn0iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiZm9ybUZpZWxkUHJvcGVydGllc1wiPlxuICA8c3BhbiBjbGFzcz1cIm1ldGEtZm9ybVwiPlxuICAgIDxsaWItY29sbGVjdGlvbi1pY29uICpuZ0lmPVwic2hvd0FwcEljb25cIiBbYXBwSWNvbl09XCJhcHBJY29uXCIgW2FwcEljb25Db25maWddPVwiYXBwSWNvbkNvbmZpZ1wiIChpY29uRW1pdHRlcik9XCJhcHBJY29uRGF0YUhhbmRsZXIoJGV2ZW50KVwiPjwvbGliLWNvbGxlY3Rpb24taWNvbj5cbiAgICA8c2ItZHluYW1pYy1mb3JtIFtjb25maWddPVwiZm9ybUZpZWxkUHJvcGVydGllc1wiIChpbml0aWFsaXplKT1cIm91dHB1dERhdGEoJGV2ZW50KVwiIChzdGF0dXNDaGFuZ2VzKT1cIm9uU3RhdHVzQ2hhbmdlcygkZXZlbnQpXCIgKHZhbHVlQ2hhbmdlcyk9XCJ2YWx1ZUNoYW5nZXMoJGV2ZW50KVwiPjwvc2ItZHluYW1pYy1mb3JtPlxuICA8L3NwYW4+XG48L25nLWNvbnRhaW5lcj4iXX0=
|
|
369
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YS1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbGxlY3Rpb24tZWRpdG9yLWxpYnJhcnkvc3JjL2xpYi9jb21wb25lbnRzL21ldGEtZm9ybS9tZXRhLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29sbGVjdGlvbi1lZGl0b3ItbGlicmFyeS9zcmMvbGliL2NvbXBvbmVudHMvbWV0YS1mb3JtL21ldGEtZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWdDLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4SCxPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQ3hELE9BQU8sS0FBSyxDQUFDLE1BQU0sV0FBVyxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQVFuRSxPQUFPLEtBQUssTUFBTSxNQUFNLFFBQVEsQ0FBQzs7Ozs7Ozs7Ozs7QUFDakMsSUFBSSxtQkFBbUIsQ0FBQztBQVF4QixNQUFNLE9BQU8saUJBQWlCO0lBYTVCLFlBQW9CLGFBQTRCLEVBQVMsV0FBd0IsRUFDOUQsZ0JBQWtDLEVBQVUsYUFBNEIsRUFDdkUsYUFBNEIsRUFBVSxjQUE4QjtRQUZwRSxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUFTLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQzlELHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFBVSxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUN2RSxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUFVLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtR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LFNBQVM7K0JBQ0UsZUFBZSxpQkFHVixpQkFBaUIsQ0FBQyxJQUFJO2tQQUc1QixjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDSSxjQUFjO3NCQUF2QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBtZXJnZSwgb2YsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgdGFrZVVudGlsLCBmaWx0ZXIsIHN3aXRjaE1hcCwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgVHJlZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cmVlL3RyZWUuc2VydmljZSc7XG5pbXBvcnQgeyBFZGl0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZWRpdG9yL2VkaXRvci5zZXJ2aWNlJztcbmltcG9ydCB7IEZyYW1ld29ya1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9mcmFtZXdvcmsvZnJhbWV3b3JrLnNlcnZpY2UnO1xuaW1wb3J0IHsgSGVscGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2hlbHBlci9oZWxwZXIuc2VydmljZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NvbmZpZy9jb25maWcuc2VydmljZSc7XG5pbXBvcnQgeyBUb2FzdGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RvYXN0ZXIvdG9hc3Rlci5zZXJ2aWNlJztcbmltcG9ydCAqIGFzIG1vbWVudCBmcm9tICdtb21lbnQnO1xubGV0IGZyYW13b3JrU2VydmljZVRlbXA7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1tZXRhLWZvcm0nLFxuICB0ZW1wbGF0ZVVybDogJy4vbWV0YS1mb3JtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbWV0YS1mb3JtLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIE1ldGFGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSByb290Rm9ybUNvbmZpZzogYW55O1xuICBASW5wdXQoKSB1bml0Rm9ybUNvbmZpZzogYW55O1xuICBASW5wdXQoKSBub2RlTWV0YWRhdGE6IGFueTtcbiAgQE91dHB1dCgpIHRvb2xiYXJFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIHByaXZhdGUgb25Db21wb25lbnREZXN0cm95JCA9IG5ldyBTdWJqZWN0PGFueT4oKTtcbiAgcHVibGljIGZyYW1ld29ya0RldGFpbHM6IGFueSA9IHt9O1xuICBwdWJsaWMgZm9ybUZpZWxkUHJvcGVydGllczogYW55O1xuICBwdWJsaWMgc2hvd0FwcEljb24gPSBmYWxzZTtcbiAgcHVibGljIGFwcEljb25Db25maWc6IGFueTtcbiAgcHVibGljIGFwcEljb246IGFueTtcbiAgcHVibGljIHByZXZpb3VzU2h1ZmZsZVZhbHVlOiBib29sZWFuO1xuICBwdWJsaWMgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWRpdG9yU2VydmljZTogRWRpdG9yU2VydmljZSwgcHVibGljIHRyZWVTZXJ2aWNlOiBUcmVlU2VydmljZSxcbiAgICAgICAgICAgICAgcHVibGljIGZyYW1ld29ya1NlcnZpY2U6IEZyYW1ld29ya1NlcnZpY2UsIHByaXZhdGUgaGVscGVyU2VydmljZTogSGVscGVyU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBjb25maWdTZXJ2aWNlOiBDb25maWdTZXJ2aWNlLCBwcml2YXRlIHRvYXN0ZXJTZXJ2aWNlOiBUb2FzdGVyU2VydmljZSkge1xuICAgICAgICAgICAgICAgIGZyYW13b3JrU2VydmljZVRlbXAgPSBmcmFtZXdvcmtTZXJ2aWNlO1xuICAgICAgICAgICAgICAgfVxuXG4gIG5nT25DaGFuZ2VzKCkge1xuICAgIHRoaXMuZmV0Y2hGcmFtZVdvcmtEZXRhaWxzKCk7XG4gICAgdGhpcy5zZXRBcHBJY29uRGF0YSgpO1xuICAgIGlmIChfLmhhcyh0aGlzLm5vZGVNZXRhZGF0YSwgJ2RhdGEubWV0YWRhdGEuc2h1ZmZsZScpKSB7XG4gICAgICB0aGlzLnNldFNodWZmbGVWYWx1ZSh0aGlzLm5vZGVNZXRhZGF0YS5kYXRhLm1ldGFkYXRhLnNodWZmbGUpO1xuICAgIH1cbiAgfVxuXG4gIHNldEFwcEljb25EYXRhKCkge1xuICAgIGNvbnN0IGlzUm9vdE5vZGUgPSBfLmdldCh0aGlzLm5vZGVNZXRhZGF0YSwgJ2RhdGEucm9vdCcpO1xuICAgIHRoaXMuYXBwSWNvbkNvbmZpZyA9IF8uZmluZChfLmZsYXR0ZW4oXy5tYXAodGhpcy5yb290Rm9ybUNvbmZpZywgJ2ZpZWxkcycpKSwge2NvZGU6ICdhcHBJY29uJ30pO1xuICAgIGlmKF8uaXNVbmRlZmluZWQodGhpcy5hcHBJY29uQ29uZmlnKSkge1xuICAgICAgdGhpcy5hcHBJY29uQ29uZmlnID0gXy5maW5kKHRoaXMucm9vdEZvcm1Db25maWcsIHtjb2RlOiAnYXBwSWNvbid9KTtcbiAgICB9XG4gICAgaWYgKCFfLmlzVW5kZWZpbmVkKHRoaXMuYXBwSWNvbkNvbmZpZykgJiYgaXNSb290Tm9kZSA9PT0gdHJ1ZSkge1xuICAgICAgdGhpcy5zaG93QXBwSWNvbiA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2hvd0FwcEljb24gPSBmYWxzZTtcbiAgICB9XG4gICAgdGhpcy5hcHBJY29uID0gXy5nZXQodGhpcy5ub2RlTWV0YWRhdGEsICdkYXRhLm1ldGFkYXRhLmFwcEljb24nKTtcbiAgICBpZiAodGhpcy5pc1Jldmlld01vZGUoKSkge1xuICAgICAgdGhpcy5hcHBJY29uQ29uZmlnID0gey4uLnRoaXMuYXBwSWNvbkNvbmZpZyAsIC4uLiB7aXNBcHBJY29uRWRpdGFibGU6IGZhbHNlfX07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYXBwSWNvbkNvbmZpZyA9IHsuLi50aGlzLmFwcEljb25Db25maWcgLCAuLi4ge2lzQXBwSWNvbkVkaXRhYmxlOiB0cnVlfX07XG4gICAgfVxuICAgIGNvbnN0IGlmRWRpdGFibGUgPSB0aGlzLmlmRmllbGRJc0VkaXRhYmxlKCdhcHBJY29uJyk7XG4gIH1cblxuICBzZXRTaHVmZmxlVmFsdWUodmFsdWUpIHtcbiAgICBpZiAoXy5pc0Jvb2xlYW4odmFsdWUpKSB7XG4gICAgICB0aGlzLmhlbHBlclNlcnZpY2Uuc2V0U2h1ZmZsZVZhbHVlKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBzaG93U2h1ZmZsZU1lc3NhZ2UoZXZlbnQpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMuaGVscGVyU2VydmljZS5zaHVmZmxlVmFsdWUuc3Vic2NyaWJlKHNodWZmbGUgPT4gdGhpcy5wcmV2aW91c1NodWZmbGVWYWx1ZSA9IHNodWZmbGUpO1xuICAgIGlmIChfLmlzQm9vbGVhbihldmVudC5zaHVmZmxlKSAmJiBldmVudC5zaHVmZmxlID09PSB0cnVlICYmIF8uaXNCb29sZWFuKHRoaXMucHJldmlvdXNTaHVmZmxlVmFsdWUpICYmICB0aGlzLnByZXZpb3VzU2h1ZmZsZVZhbHVlID09PSBmYWxzZSkge1xuICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5zaW1wbGVJbmZvKF8uZ2V0KHRoaXMuY29uZmlnU2VydmljZSwgJ2xhYmVsQ29uZmlnLmxibC5zaHVmZmxlT25NZXNzYWdlJykpO1xuICAgIH1cbiAgICB0aGlzLnNldFNodWZmbGVWYWx1ZShldmVudC5zaHVmZmxlKTtcbiAgfVxuXG4gIGZldGNoRnJhbWVXb3JrRGV0YWlscygpIHtcbiAgICBpZiAodGhpcy5mcmFtZXdvcmtTZXJ2aWNlLm9yZ2FuaXNhdGlvbkZyYW1ld29yaykge1xuICAgICAgdGhpcy5mcmFtZXdvcmtTZXJ2aWNlLmZyYW1ld29ya0RhdGEkLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLm9uQ29tcG9uZW50RGVzdHJveSQpLFxuICAgICAgICBmaWx0ZXIoZGF0YSA9PiBfLmdldChkYXRhLCBgZnJhbWV3b3JrZGF0YS4ke3RoaXMuZnJhbWV3b3JrU2VydmljZS5vcmdhbmlzYXRpb25GcmFtZXdvcmt9YCkpXG4gICAgICApLnN1YnNjcmliZSgoZnJhbWV3b3JrRGV0YWlsczogYW55KSA9PiB7XG4gICAgICAgIGlmIChmcmFtZXdvcmtEZXRhaWxzICYmICFmcmFtZXdvcmtEZXRhaWxzLmVycikge1xuICAgICAgICAgIGNvbnN0IGZyYW1ld29ya0RhdGEgPSBmcmFtZXdvcmtEZXRhaWxzLmZyYW1ld29ya2RhdGFbdGhpcy5mcmFtZXdvcmtTZXJ2aWNlLm9yZ2FuaXNhdGlvbkZyYW1ld29ya10uY2F0ZWdvcmllcztcbiAgICAgICAgICB0aGlzLmZyYW1ld29ya0RldGFpbHMuZnJhbWV3b3JrRGF0YSA9IGZyYW1ld29ya0RhdGE7XG4gICAgICAgICAgdGhpcy5mcmFtZXdvcmtEZXRhaWxzLnRvcGljTGlzdCA9IF8uZ2V0KF8uZmluZChmcmFtZXdvcmtEYXRhLCB7XG4gICAgICAgICAgICBjb2RlOiAndG9waWMnXG4gICAgICAgICAgfSksICd0ZXJtcycpO1xuICAgICAgICAgIHRoaXMuZnJhbWV3b3JrRGV0YWlscy50YXJnZXRGcmFtZXdvcmtzID0gXy5maWx0ZXIoZnJhbWV3b3JrRGV0YWlscy5mcmFtZXdvcmtkYXRhLCAodmFsdWUsIGtleSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIF8uaW5jbHVkZXModGhpcy5mcmFtZXdvcmtTZXJ2aWNlLnRhcmdldEZyYW1ld29ya0lkcywga2V5KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLmF0dGFjaERlZmF1bHRWYWx1ZXMoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLmZyYW1ld29ya1NlcnZpY2UudGFyZ2V0RnJhbWV3b3JrSWRzKSB7XG4gICAgICAgIHRoaXMuZnJhbWV3b3JrU2VydmljZS5mcmFtZXdvcmtEYXRhJC5waXBlKFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLm9uQ29tcG9uZW50RGVzdHJveSQpLFxuICAgICAgICAgIGZpbHRlcihkYXRhID0+IF8uZ2V0KGRhdGEsIGBmcmFtZXdvcmtkYXRhLiR7Xy5maXJzdCh0aGlzLmZyYW1ld29ya1NlcnZpY2UudGFyZ2V0RnJhbWV3b3JrSWRzKX1gKSlcbiAgICAgICAgKS5zdWJzY3JpYmUoKGZyYW1ld29ya0RldGFpbHM6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChmcmFtZXdvcmtEZXRhaWxzICYmICFmcmFtZXdvcmtEZXRhaWxzLmVycikge1xuICAgICAgICAgICAgdGhpcy5mcmFtZXdvcmtEZXRhaWxzLnRhcmdldEZyYW1ld29ya3MgPSBfLmZpbHRlcihmcmFtZXdvcmtEZXRhaWxzLmZyYW1ld29ya2RhdGEsICh2YWx1ZSwga2V5KSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiBfLmluY2x1ZGVzKHRoaXMuZnJhbWV3b3JrU2VydmljZS50YXJnZXRGcmFtZXdvcmtJZHMsIGtleSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuYXR0YWNoRGVmYXVsdFZhbHVlcygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYXR0YWNoRGVmYXVsdFZhbHVlcygpIHtcbiAgICBjb25zdCBtZXRhRGF0YUZpZWxkcyA9IF8uZ2V0KHRoaXMubm9kZU1ldGFkYXRhLCAnZGF0YS5tZXRhZGF0YScpO1xuICAgIGNvbnN0IGlzUm9vdE5vZGUgPSBfLmdldCh0aGlzLm5vZGVNZXRhZGF0YSwgJ2RhdGEucm9vdCcpO1xuICAgIGNvbnN0IGNhdGVnb3J5TWFzdGVyTGlzdCA9IHRoaXMuZnJhbWV3b3JrRGV0YWlscy5mcmFtZXdvcmtEYXRhIHx8XG4gICAgIWlzUm9vdE5vZGUgJiYgdGhpcy5mcmFtZXdvcmtTZXJ2aWNlLnNlbGVjdGVkT3JnYW5pc2F0aW9uRnJhbWV3b3JrICYmXG4gICAgIF8uZ2V0KHRoaXMuZnJhbWV3b3JrU2VydmljZS5zZWxlY3RlZE9yZ2FuaXNhdGlvbkZyYW1ld29yaywgJ2ZyYW1ld29yay5jYXRlZ29yaWVzJyk7XG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm1heC1saW5lLWxlbmd0aFxuICAgIGxldCBmb3JtQ29uZmlnOiBhbnkgPSAoXy5nZXQobWV0YURhdGFGaWVsZHMsICd2aXNpYmlsaXR5JykgPT09ICdEZWZhdWx0JykgfHwgaXNSb290Tm9kZSA/IF8uY2xvbmVEZWVwKHRoaXMucm9vdEZvcm1Db25maWcpIDogXy5jbG9uZURlZXAodGhpcy51bml0Rm9ybUNvbmZpZyk7XG4gICAgZm9ybUNvbmZpZyA9IGZvcm1Db25maWcgJiYgXy5oYXMoXy5maXJzdChmb3JtQ29uZmlnKSwgJ2ZpZWxkcycpID8gZm9ybUNvbmZpZyA6IFt7bmFtZTogJycsIGZpZWxkczogZm9ybUNvbmZpZ31dO1xuICAgIGlmICghXy5pc0VtcHR5KHRoaXMuZnJhbWV3b3JrRGV0YWlscy50YXJnZXRGcmFtZXdvcmtzKSkge1xuICAgICAgY29uc3QgZmllbGRUZXJtc01hcCA9IG5ldyBNYXAoKTtcbiAgICAgIF8uZm9yRWFjaCh0aGlzLmZyYW1ld29ya0RldGFpbHMudGFyZ2V0RnJhbWV3b3JrcywgKGZyYW1ld29yaykgPT4ge1xuICAgICAgICBfLmZvckVhY2goZm9ybUNvbmZpZywgKHNlY3Rpb24pID0+IHtcbiAgICAgICAgICBfLmZvckVhY2goc2VjdGlvbi5maWVsZHMsIGZpZWxkID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZyYW1ld29ya0NhdGVnb3J5ID0gXy5maW5kKGZyYW1ld29yay5jYXRlZ29yaWVzLCBjYXRlZ29yeSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiBjYXRlZ29yeS5jb2RlID09PSBmaWVsZC5zb3VyY2VDYXRlZ29yeSAmJiBfLmluY2x1ZGVzKGZpZWxkLmNvZGUsICd0YXJnZXQnKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKCFfLmlzRW1wdHkoZnJhbWV3b3JrQ2F0ZWdvcnkpKSB7XG4gICAgICAgICAgICAgIGZpZWxkLnRlcm1zID0gXy5jbG9uZURlZXAoZnJhbWV3b3JrQ2F0ZWdvcnkudGVybXMpO1xuICAgICAgICAgICAgICBmaWVsZFRlcm1zTWFwLnNldChmaWVsZC5jb2RlLCBmaWVsZC50ZXJtcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIF8uZm9yRWFjaChmb3JtQ29uZmlnLCAoc2VjdGlvbikgPT4ge1xuICAgICAgICBjb25zdCBmaWVsZHMgPSBzZWN0aW9uLmZpZWxkcyB8fCBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmaWVsZHMubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgICAgICAgY29uc3QgY3VycmVudEZpZWxkID0gZmllbGRzW2ldO1xuICAgICAgICAgIGNvbnN0IG5leHRGaWVsZCA9IGZpZWxkc1tpICsgMV07XG4gICAgICAgICAgY29uc3QgbmV4dEZpZWxkRGVwZW5kc09uQ3VycmVudCA9IG5leHRGaWVsZC5kZXBlbmRzICYmIEFycmF5LmlzQXJyYXkobmV4dEZpZWxkLmRlcGVuZHMpICYmIG5leHRGaWVsZC5kZXBlbmRzLmluY2x1ZGVzKGN1cnJlbnRGaWVsZC5jb2RlKTtcbiAgICAgICAgICBpZiAoY3VycmVudEZpZWxkLnRlcm1zICYmIGZpZWxkVGVybXNNYXAuaGFzKG5leHRGaWVsZC5jb2RlKSAmJiBuZXh0RmllbGREZXBlbmRzT25DdXJyZW50KSB7XG4gICAgICAgICAgICBjb25zdCBuZXh0RmllbGRUZXJtcyA9IGZpZWxkVGVybXNNYXAuZ2V0KG5leHRGaWVsZC5jb2RlKTtcbiAgICAgICAgICAgIGN1cnJlbnRGaWVsZC50ZXJtcy5mb3JFYWNoKHRlcm0gPT4ge1xuICAgICAgICAgICAgICBpZiAodGVybSAmJiAoIXRlcm0uYXNzb2NpYXRpb25zIHx8IF8uaXNFbXB0eSh0ZXJtLmFzc29jaWF0aW9ucykpKSB7ICBcbiAgICAgICAgICAgICAgICB0ZXJtLmFzc29jaWF0aW9ucyA9IG5leHRGaWVsZFRlcm1zLm1hcChuZXh0VGVybSA9PiAoe1xuICAgICAgICAgICAgICAgICAgaWRlbnRpZmllcjogbmV4dFRlcm0uaWRlbnRpZmllcixcbiAgICAgICAgICAgICAgICAgIGNvZGU6IG5leHRUZXJtLmNvZGUsXG4gICAgICAgICAgICAgICAgICBuYW1lOiBuZXh0VGVybS5uYW1lLFxuICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IG5leHRUZXJtLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgY2F0ZWdvcnk6IG5leHRUZXJtLmNhdGVnb3J5LFxuICAgICAgICAgICAgICAgICAgc3RhdHVzOiBuZXh0VGVybS5zdGF0dXNcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgXy5mb3JFYWNoKGZvcm1Db25maWcsIChzZWN0aW9uKSA9PiB7XG4gICAgICBfLmZvckVhY2goc2VjdGlvbi5maWVsZHMsIGZpZWxkID0+IHtcblxuICAgICAgICBpZiAobWV0YURhdGFGaWVsZHMpIHtcbiAgICAgICAgICBpZiAoXy5oYXMobWV0YURhdGFGaWVsZHMsIGZpZWxkLmNvZGUpKSB7XG4gICAgICAgICAgICBmaWVsZC5kZWZhdWx0ID0gXy5nZXQobWV0YURhdGFGaWVsZHMsIGZpZWxkLmNvZGUpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoXy5pbmNsdWRlcyhbJ21heFRpbWUnLCAnd2FybmluZ1RpbWUnXSwgZmllbGQuY29kZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gXy5nZXQobWV0YURhdGFGaWVsZHMsIGB0aW1lTGltaXRzLiR7ZmllbGQuY29kZX1gKTtcbiAgICAgICAgICAgIGZpZWxkLmRlZmF1bHQgPSAhXy5pc0VtcHR5KHZhbHVlKSA/XG4gICAgICAgICAgICBtb21lbnQudXRjKG1vbWVudC5kdXJhdGlvbih2YWx1ZSwgJ3NlY29uZHMnKS5hc01pbGxpc2Vjb25kcygpKS5mb3JtYXQodGhpcy5oZWxwZXJTZXJ2aWNlLmdldFRpbWVyRm9ybWF0KGZpZWxkKSkgOiAnJztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZpZWxkLmNvZGUgPT09ICdmcmFtZXdvcmsnKSB7XG4gICAgICAgICAgZmllbGQucmFuZ2UgPSB0aGlzLmZyYW1ld29ya1NlcnZpY2UuZnJhbWV3b3JrVmFsdWVzO1xuICAgICAgICAgIGZpZWxkLm9wdGlvbnMgPSB0aGlzLmdldEZyYW1ld29yaztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghXy5pbmNsdWRlcyhmaWVsZC5kZXBlbmRzLCAnZnJhbWV3b3JrJykgJiYgIV8uaW5jbHVkZXMoZmllbGQuY29kZSwgJ3RhcmdldCcpKSB7XG4gICAgICAgICAgY29uc3QgZnJhbWV3b3JrQ2F0ZWdvcnkgPSBfLmZpbmQoY2F0ZWdvcnlNYXN0ZXJMaXN0LCBjYXRlZ29yeSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiAoY2F0ZWdvcnkuY29kZSA9PT0gZmllbGQuc291cmNlQ2F0ZWdvcnkgfHwgY2F0ZWdvcnkuY29kZSA9PT0gZmllbGQuY29kZSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaWYgKCFfLmlzRW1wdHkoZnJhbWV3b3JrQ2F0ZWdvcnkpKSB7XG4gICAgICAgICAgICAgIGZpZWxkLnRlcm1zID0gZnJhbWV3b3JrQ2F0ZWdvcnkudGVybXM7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZpZWxkLmNvZGUgPT09ICdsaWNlbnNlJykge1xuICAgICAgICAgIGNvbnN0IGRlZmF1bHRMaWNlbnNlID0gXy5nZXQobWV0YURhdGFGaWVsZHMsIGZpZWxkLmNvZGUpO1xuICAgICAgICAgIGZpZWxkLmRlZmF1bHQgPSAhXy5pc0VtcHR5KGRlZmF1bHRMaWNlbnNlKSA/IGRlZmF1bHRMaWNlbnNlIDogdGhpcy5lZGl0b3JTZXJ2aWNlLmVkaXRvckNvbmZpZy5jb250ZXh0LmRlZmF1bHRMaWNlbnNlO1xuICAgICAgICAgIGNvbnN0IGxpY2Vuc2VzID0gdGhpcy5oZWxwZXJTZXJ2aWNlLmdldEF2YWlsYWJsZUxpY2Vuc2VzKCk7XG4gICAgICAgICAgZmllbGQucmFuZ2UgPSBsaWNlbnNlcyA/IF8ubWFwKGxpY2Vuc2VzLCAnbmFtZScpIDogW107XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZmllbGQuY29kZSA9PT0gJ2FkZGl0aW9uYWxDYXRlZ29yaWVzJykge1xuICAgICAgICAgIGNvbnN0IGNoYW5uZWxJbmZvID0gdGhpcy5oZWxwZXJTZXJ2aWNlLmNoYW5uZWxJbmZvO1xuICAgICAgICAgIGNvbnN0IGFkZGl0aW9uYWxDYXRlZ29yaWVzID0gXy51bmlxKF8uZ2V0KGNoYW5uZWxJbmZvLFxuICAgICAgICAgICAgYCR7dGhpcy5jb25maWdTZXJ2aWNlLmNhdGVnb3J5Q29uZmlnLmFkZGl0aW9uYWxDYXRlZ29yaWVzW3RoaXMuZWRpdG9yU2VydmljZS5lZGl0b3JDb25maWcuY29uZmlnLm9iamVjdFR5cGVdfWApIHx8XG4gICAgICAgICAgIF8uZ2V0KHRoaXMuZWRpdG9yU2VydmljZS5lZGl0b3JDb25maWcsICdjb250ZXh0LmFkZGl0aW9uYWxDYXRlZ29yaWVzJykpO1xuICAgICAgICAgIGlmICghXy5pc0VtcHR5KGFkZGl0aW9uYWxDYXRlZ29yaWVzKSkge1xuICAgICAgICAgICAgZmllbGQucmFuZ2UgPSBfLnVuaXEoYWRkaXRpb25hbENhdGVnb3JpZXMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmaWVsZC5jb2RlICA9PT0gJ2NvcHlyaWdodCcpIHtcbiAgICAgICAgICBjb25zdCBjaGFubmVsRGF0YSA9IHRoaXMuaGVscGVyU2VydmljZS5jaGFubmVsSW5mbztcbiAgICAgICAgICBmaWVsZC5kZWZhdWx0ID0gXy5nZXQobWV0YURhdGFGaWVsZHMsIGZpZWxkLmNvZGUpO1xuICAgICAgICAgIGlmIChfLmlzRW1wdHkoZmllbGQuZGVmYXVsdCkgJiYgdGhpcy5lZGl0b3JTZXJ2aWNlLmVkaXRvckNvbmZpZy5jb25maWcuc2V0RGVmYXVsdENvcHlSaWdodCkge1xuICAgICAgICAgICAgZmllbGQuZGVmYXVsdCA9IGNoYW5uZWxEYXRhICYmIGNoYW5uZWxEYXRhLm5hbWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZpZWxkLmNvZGUgPT09ICdtYXhRdWVzdGlvbnMnKSB7XG4gICAgICAgICAgY29uc3QgYWN0aXZlTm9kZSA9IHRoaXMudHJlZVNlcnZpY2UuZ2V0QWN0aXZlTm9kZSgpO1xuICAgICAgICAgIGNvbnN0IHJvb3RGaXJzdENoaWxkTm9kZSA9IHRoaXMuZWRpdG9yU2VydmljZS5nZXRDb250ZW50Q2hpbGRyZW5zKGFjdGl2ZU5vZGUpO1xuICAgICAgICAgIGlmIChyb290Rmlyc3RDaGlsZE5vZGUgJiYgcm9vdEZpcnN0Q2hpbGROb2RlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGZpZWxkLnJhbmdlID0gXy50aW1lcyhfLnNpemUocm9vdEZpcnN0Q2hpbGROb2RlKSwgaW5kZXggPT4gaW5kZXggKyAxKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZmllbGQuY29kZSA9PT0gJ2F1dGhvcicpIHtcbiAgICAgICAgICBjb25zdCBkZWZhdWx0QXV0aG9yID0gXy5nZXQobWV0YURhdGFGaWVsZHMsIGZpZWxkLmNvZGUpO1xuICAgICAgICAgIGZpZWxkLmRlZmF1bHQgPSAhXy5pc0VtcHR5KGRlZmF1bHRBdXRob3IpID8gZGVmYXVsdEF1dGhvciA6ICBfLmdldCh0aGlzLmVkaXRvclNlcnZpY2UuZWRpdG9yQ29uZmlnLCAnY29udGV4dC51c2VyLmZ1bGxOYW1lJyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZmllbGQuY29kZSA9PT0gJ3Nob3dUaW1lcicpIHtcbiAgICAgICAgICBmaWVsZC5vcHRpb25zID0gdGhpcy5zaG93VGltZXI7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZpZWxkLmNvZGUgPT09ICdpbnN0cnVjdGlvbnMnKSB7XG4gICAgICAgICAgZmllbGQuZGVmYXVsdCA9IF8uZ2V0KG1ldGFEYXRhRmllbGRzLCAnaW5zdHJ1Y3Rpb25zLmRlZmF1bHQnKSB8fCAnJyA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZpZWxkLmNvZGUgPT09ICdzZXRQZXJpb2QnKSB7XG4gICAgICAgICAgZmllbGQuZGVmYXVsdCA9ICFfLmlzRW1wdHkobWV0YURhdGFGaWVsZHMsICdlbmREYXRlJykgPyAnWWVzJyA6ICdObycgO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmaWVsZC5jb2RlID09PSAnYWxsb3dFQ00nKSB7XG4gICAgICAgICAgZmllbGQuZGVmYXVsdCA9IF8uZ2V0KG1ldGFEYXRhRmllbGRzLCAncmVjb3JkZWRCeScpICE9PSAnU2VsZicgPyAnWWVzJyA6ICdObycgO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZpZWxkLmNvZGUgPT09ICdpbnN0YW5jZXMnKSB7XG4gICAgICAgICAgZmllbGQuZGVmYXVsdCA9ICAhXy5pc0VtcHR5KG1ldGFEYXRhRmllbGRzLCAnaW5zdGFuY2VzJykgPyBfLmdldChtZXRhRGF0YUZpZWxkcywgJ2luc3RhbmNlcy5sYWJlbCcpIDogJycgO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKChfLmlzRW1wdHkoZmllbGQucmFuZ2UpIHx8IF8uaXNFbXB0eShmaWVsZC50ZXJtcykpICYmXG4gICAgICAgICAgIWZpZWxkLmVkaXRhYmxlICYmICFfLmlzRW1wdHkoZmllbGQuZGVmYXVsdCkpIHtcbiAgICAgICAgICBpZiAoXy5oYXMoZmllbGQsICd0ZXJtcycpKSB7XG4gICAgICAgICAgICBmaWVsZC50ZXJtcyA9IFtdO1xuICAgICAgICAgICAgaWYgKF8uaXNBcnJheShmaWVsZC5kZWZhdWx0KSkge1xuICAgICAgICAgICAgICBmaWVsZC50ZXJtcyA9IGZpZWxkLmRlZmF1bHQgfHwgW107XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBmaWVsZC50ZXJtcy5wdXNoKGZpZWxkLmRlZmF1bHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmaWVsZC5yYW5nZSA9IFtdO1xuICAgICAgICAgICAgaWYgKF8uaXNBcnJheShmaWVsZC5kZWZhdWx0KSkge1xuICAgICAgICAgICAgICBmaWVsZC5yYW5nZSA9IGZpZWxkLmRlZmF1bHQ7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBmaWVsZC5yYW5nZS5wdXNoKGZpZWxkLmRlZmF1bHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmaWVsZC5pbnB1dFR5cGUgPT09ICduZXN0ZWRzZWxlY3QnKSB7XG4gICAgICAgICAgXy5tYXAoZmllbGQucmFuZ2UsIHZhbCA9PiB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICB2YWx1ZTogdmFsLnZhbHVlIHx8IHZhbCxcbiAgICAgICAgICAgICAgbGFiZWw6IHZhbC52YWx1ZSB8fCB2YWxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpZkVkaXRhYmxlID0gdGhpcy5pZkZpZWxkSXNFZGl0YWJsZShmaWVsZC5jb2RlLCBmaWVsZC5lZGl0YWJsZSk7XG4gICAgICAgIF8uc2V0KGZpZWxkLCAnZWRpdGFibGUnLCBpZkVkaXRhYmxlKTtcblxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmZvcm1GaWVsZFByb3BlcnRpZXMgPSBfLmNsb25lRGVlcChmb3JtQ29uZmlnKTtcbiAgfVxuICBpc1Jldmlld01vZGUoKSB7XG4gICAgcmV0dXJuICBfLmluY2x1ZGVzKFsgJ3JldmlldycsICdyZWFkJywgJ3NvdXJjaW5ncmV2aWV3JywgJ29yZ3JldmlldycgXSwgdGhpcy5lZGl0b3JTZXJ2aWNlLmVkaXRvck1vZGUpO1xuICB9XG4gIGlmRmllbGRJc0VkaXRhYmxlKGZpZWxkQ29kZSwgcHJpbWFyeUNhdGVnb3J5RWRpdGFibGVDb25maWc/KSB7XG4gICAgY29uc3QgZWRpb3JNb2RlID0gdGhpcy5lZGl0b3JTZXJ2aWNlLmVkaXRvck1vZGU7XG4gICAgaWYgKCF0aGlzLmlzUmV2aWV3TW9kZSgpKSB7XG4gICAgICBpZihwcmltYXJ5Q2F0ZWdvcnlFZGl0YWJsZUNvbmZpZyA9PT0gZmFsc2UpIHJldHVybiBmYWxzZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBjb25zdCBlZGl0YWJsZUZpZWxkcyA9IF8uZ2V0KHRoaXMuZWRpdG9yU2VydmljZS5lZGl0b3JDb25maWcuY29uZmlnLCAnZWRpdGFibGVGaWVsZHMnKTtcbiAgICBpZiAoZWRpdGFibGVGaWVsZHMgJiYgIV8uaXNFbXB0eShlZGl0YWJsZUZpZWxkc1tlZGlvck1vZGVdKSAmJiBfLmluY2x1ZGVzKGVkaXRhYmxlRmllbGRzW2VkaW9yTW9kZV0sIGZpZWxkQ29kZSkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgb3V0cHV0RGF0YShldmVudERhdGE6IGFueSkgeyB9XG5cbiAgb25TdGF0dXNDaGFuZ2VzKGV2ZW50KSB7XG4gICAgdGhpcy50b29sYmFyRW1pdHRlci5lbWl0KHsgYnV0dG9uOiAnb25Gb3JtU3RhdHVzQ2hhbmdlJywgZXZlbnQgfSk7XG4gIH1cblxuICBhcHBJY29uRGF0YUhhbmRsZXIoZXZlbnQpIHtcbiAgICB0aGlzLmFwcEljb24gPSBldmVudC51cmw7XG4gICAgdGhpcy50cmVlU2VydmljZS51cGRhdGVBcHBJY29uKGV2ZW50LnVybCk7XG4gIH1cblxuICBzaG93VGltZXIoY29udHJvbCwgZGVwZW5kczogRm9ybUNvbnRyb2xbXSwgZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGxvYWRpbmcsIGxvYWRlZCkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0ge307XG4gICAgY29uc3QgcmVzcG9uc2UgPSBtZXJnZSguLi5fLm1hcChkZXBlbmRzLCBkZXBlbmQgPT4gZGVwZW5kLnZhbHVlQ2hhbmdlcykpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKHZhbHVlOiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgaXNEZXBlbmRzSW52YWxpZCA9IF8uaW5jbHVkZXMoXy5tYXAoZGVwZW5kcywgZGVwZW5kID0+IGRlcGVuZC5pbnZhbGlkKSwgdHJ1ZSk7XG4gICAgICAgIGNvbnN0IGRlcGVuZHNLZXlWYWx1ZSA9IF8ubWFwKGRlcGVuZHMsIChkZXBlbmQsIGtleSkgPT4ge1xuICAgICAgICAgIHJldHVybiB7IFtrZXldOiBkZXBlbmQudmFsdWUgfTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICghaXNEZXBlbmRzSW52YWxpZCkge1xuICAgICAgICAgIGNvbnN0IG1heFRpbWVWYWx1ZSA9IF8uZmluZChkZXBlbmRzS2V5VmFsdWUsICdtYXhUaW1lJyk7XG4gICAgICAgICAgaWYgKCBtYXhUaW1lVmFsdWUgJiYgbWF4VGltZVZhbHVlLm1heFRpbWUgPT09ICcwMDowMDowMCcpIHtcbiAgICAgICAgICAgIHJldHVybiBvZihmYWxzZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBvZih0cnVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gb2YoZmFsc2UpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gICAgcmV0dXJuIHJlc3BvbnNlO1xuICB9XG5cbiAgZ2V0RnJhbWV3b3JrKGNvbnRyb2wsIGRlcGVuZHM6IEZvcm1Db250cm9sW10sIGZvcm1Hcm91cDogRm9ybUdyb3VwLCBsb2FkaW5nLCBsb2FkZWQpIHtcbiAgICBjb25zdCByZXNwb25zZSA9ICBjb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgc3dpdGNoTWFwKCh2YWx1ZTogYW55KSA9PiB7XG4gICAgICAgIGlmICghXy5pc0VtcHR5KHZhbHVlKSkge1xuICAgICAgICAgIHJldHVybiBmcmFtd29ya1NlcnZpY2VUZW1wLmdldEZyYW1ld29ya0NhdGVnb3JpZXModmFsdWUpLnBpcGUobWFwKHJlcyA9PiB7XG4gICAgICAgICAgICBjb25zdCBmcmFtZXdvcmtSZXNwb25zZSA9IF8uZ2V0KHJlcywgJ3Jlc3VsdCcpO1xuICAgICAgICAgICAgZnJhbXdvcmtTZXJ2aWNlVGVtcC5zZWxlY3RlZE9yZ2FuaXNhdGlvbkZyYW1ld29yayA9IGZyYW1ld29ya1Jlc3BvbnNlO1xuICAgICAgICAgICAgcmV0dXJuIGZyYW1ld29ya1Jlc3BvbnNlO1xuICAgICAgICAgIH0pKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgICByZXR1cm4gcmVzcG9uc2U7XG4gIH1cblxuICB2YWx1ZUNoYW5nZXMoZXZlbnQ6IGFueSkge1xuICAgIGlmIChfLmhhcyhldmVudCwgJ3NodWZmbGUnKSkge1xuICAgICAgdGhpcy5zaG93U2h1ZmZsZU1lc3NhZ2UoZXZlbnQpO1xuICAgIH1cbiAgICBjb25zdCBkYXRhID0gXy5vbWl0KGV2ZW50LCBbJ2FsbG93RUNNJywgJ2xldmVscycsICdzZXRQZXJpb2QnLCAnaW5zdGFuY2VzJ10pO1xuICAgIGlmICghXy5pc0VtcHR5KGV2ZW50Py5sZXZlbHMpKSB7XG4gICAgICBkYXRhLm91dGNvbWVEZWNsYXJhdGlvbiA9IHtcbiAgICAgICAgbGV2ZWxzOiB0aGlzLmNyZWF0ZUxlYXZlbHMoZXZlbnQubGV2ZWxzKVxuICAgICAgfTtcbiAgICB9XG4gICAgaWYgKCFfLmlzRW1wdHkoZXZlbnQ/Lmluc3RhbmNlcykpIHtcbiAgICAgIGRhdGEuaW5zdGFuY2VzID0geyBsYWJlbDogZXZlbnQ/Lmluc3RhbmNlcyB9O1xuICAgIH1cbiAgICBpZiAoIV8uaXNFbXB0eSh0aGlzLmFwcEljb24pICYmIHRoaXMuc2hvd0FwcEljb24pIHtcbiAgICAgIGRhdGEuYXBwSWNvbiA9IHRoaXMuYXBwSWNvbjtcbiAgICB9XG4gICAgXG4gICAgaWYgKHRoaXMuaXNSZXZpZXdNb2RlKCkgJiYgIWRhdGEubmFtZSkge1xuICAgICAgY29uc3Qgbm9kZVRpdGxlID0gdGhpcy5ub2RlTWV0YWRhdGE/LmRhdGE/Lm1ldGFkYXRhPy5uYW1lO1xuICAgICAgaWYgKG5vZGVUaXRsZSkge1xuICAgICAgICBkYXRhLm5hbWUgPSBub2RlVGl0bGU7XG4gICAgICB9XG4gICAgfVxuICAgICAgXG4gICAgdGhpcy50b29sYmFyRW1pdHRlci5lbWl0KHsgYnV0dG9uOiAnb25Gb3JtVmFsdWVDaGFuZ2UnLCBkYXRhIH0pO1xuICAgIHRoaXMudHJlZVNlcnZpY2UudXBkYXRlTm9kZShkYXRhKTtcbiAgfVxuXG4gIGNyZWF0ZUxlYXZlbHMobGV2ZWxzKSB7XG4gICAgY29uc3Qgb2JqID0ge307XG4gICAgXy5mb3JFYWNoKGxldmVscywgKGVsLCBpbmRleCkgPT4ge1xuICAgICAgb2JqW2BMJHtpbmRleCArIDF9YF0gPSB7XG4gICAgICAgICBsYWJlbCA6IGVsXG4gICAgICAgfTtcbiAgICB9KTtcbiAgICByZXR1cm4gb2JqO1xuICB9XG5cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLm9uQ29tcG9uZW50RGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMub25Db21wb25lbnREZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cbn0iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiZm9ybUZpZWxkUHJvcGVydGllc1wiPlxuICA8c3BhbiBjbGFzcz1cIm1ldGEtZm9ybVwiPlxuICAgIDxsaWItY29sbGVjdGlvbi1pY29uICpuZ0lmPVwic2hvd0FwcEljb25cIiBbYXBwSWNvbl09XCJhcHBJY29uXCIgW2FwcEljb25Db25maWddPVwiYXBwSWNvbkNvbmZpZ1wiIChpY29uRW1pdHRlcik9XCJhcHBJY29uRGF0YUhhbmRsZXIoJGV2ZW50KVwiPjwvbGliLWNvbGxlY3Rpb24taWNvbj5cbiAgICA8c2ItZHluYW1pYy1mb3JtIFtjb25maWddPVwiZm9ybUZpZWxkUHJvcGVydGllc1wiIChpbml0aWFsaXplKT1cIm91dHB1dERhdGEoJGV2ZW50KVwiIChzdGF0dXNDaGFuZ2VzKT1cIm9uU3RhdHVzQ2hhbmdlcygkZXZlbnQpXCIgKHZhbHVlQ2hhbmdlcyk9XCJ2YWx1ZUNoYW5nZXMoJGV2ZW50KVwiPjwvc2ItZHluYW1pYy1mb3JtPlxuICA8L3NwYW4+XG48L25nLWNvbnRhaW5lcj4iXX0=
|