qms-angular 1.1.45 → 1.1.47
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/bundles/qms-angular.umd.js +1703 -37
- package/bundles/qms-angular.umd.js.map +1 -1
- package/esm2015/lib/components/select-process-data/index.js +2 -0
- package/esm2015/lib/components/select-process-data/public-api.js +3 -0
- package/esm2015/lib/components/select-process-data/select-process-data.component.js +275 -0
- package/esm2015/lib/components/select-process-data/select-process-data.module.js +64 -0
- package/esm2015/lib/components/select-process-data-tree/index.js +2 -0
- package/esm2015/lib/components/select-process-data-tree/public-api.js +3 -0
- package/esm2015/lib/components/select-process-data-tree/select-process-data-tree.component.js +1134 -0
- package/esm2015/lib/components/select-process-data-tree/select-process-data-tree.module.js +64 -0
- package/esm2015/lib/model/en.js +2 -1
- package/esm2015/lib/model/no.js +2 -1
- package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-bpmn/qms-ckeditor-bpmn.component.js +7 -4
- package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-imagemap/qms-ckeditor-imagemap.component.js +5 -4
- package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-link/qms-ckeditor-link.component.js +2 -2
- package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-tooltip/qms-ckeditor-tooltip.component.js +2 -2
- package/esm2015/lib/qms-ckeditor-components/models/qms-ckeditor-imagemap.model.js +1 -1
- package/esm2015/lib/qms-ckeditor-components/qms-ckeditor.component.js +2 -1
- package/esm2015/lib/qms-ckeditor-components/services/qms-ckeditor-bpmn-connection.service.js +3 -3
- package/esm2015/lib/qms-ckeditor-components/services/qms-ckeditor-bpmn.service.js +13 -10
- package/esm2015/lib/qms-ckeditor-components/services/qms-ckeditor-tree.service.js +4 -4
- package/esm2015/public-api.js +3 -1
- package/fesm2015/qms-angular.js +1507 -38
- package/fesm2015/qms-angular.js.map +1 -1
- package/lib/components/select-process-data/index.d.ts +1 -0
- package/lib/components/select-process-data/public-api.d.ts +2 -0
- package/lib/components/select-process-data/select-process-data.component.d.ts +120 -0
- package/lib/components/select-process-data/select-process-data.module.d.ts +2 -0
- package/lib/components/select-process-data-tree/index.d.ts +1 -0
- package/lib/components/select-process-data-tree/public-api.d.ts +2 -0
- package/lib/components/select-process-data-tree/select-process-data-tree.component.d.ts +196 -0
- package/lib/components/select-process-data-tree/select-process-data-tree.module.d.ts +2 -0
- package/lib/model/en.d.ts +1 -0
- package/lib/model/no.d.ts +1 -0
- package/lib/qms-ckeditor-components/models/qms-ckeditor-imagemap.model.d.ts +1 -0
- package/lib/qms-ckeditor-components/services/qms-ckeditor-bpmn-connection.service.d.ts +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +2 -0
- package/qms-angular.metadata.json +1 -1
- package/src/assets/jointjs/scss/rappid.scss +12 -1
- package/src/lib/components/select-process-data/select-process-data.component.scss +241 -0
- package/src/lib/components/select-process-data-tree/select-process-data-tree.component.scss +634 -0
@@ -80,10 +80,11 @@ export class QMSCKEditorImageMapComponent extends QMSCKEditorBaseComponent {
|
|
80
80
|
this.naturalImageWidth = this.imageMapData.imageWidth;
|
81
81
|
this.initFormControl();
|
82
82
|
this.initSvgIcons(iconRegistry, sanitizer);
|
83
|
+
this.selectedTarget = data.defaultTargetNewWindow ? TargetTypeName.new : TargetTypeName.same;
|
83
84
|
}
|
84
85
|
initDefaultValues() {
|
85
86
|
this.selectedLinkType = LinkType.url;
|
86
|
-
this.selectedTarget = TargetTypeName.new;
|
87
|
+
this.selectedTarget = this.data.defaultTargetNewWindow ? TargetTypeName.new : TargetTypeName.same;
|
87
88
|
this.selectedProtocol = ProtocolTypeName.http;
|
88
89
|
this.url = '';
|
89
90
|
this.processedUrl = '';
|
@@ -324,7 +325,7 @@ export class QMSCKEditorImageMapComponent extends QMSCKEditorBaseComponent {
|
|
324
325
|
this.myImageMap.areas[this.currentAreaId].aalt = this.anchorText;
|
325
326
|
}
|
326
327
|
else {
|
327
|
-
this.myImageMap.areas[this.currentAreaId].atarget = this.selectedTarget || TargetTypeName.new;
|
328
|
+
this.myImageMap.areas[this.currentAreaId].atarget = this.selectedTarget || (this.data.defaultTargetNewWindow ? TargetTypeName.new : TargetTypeName.same);
|
328
329
|
this.myImageMap.areas[this.currentAreaId].aalt = this.advisoryTitle;
|
329
330
|
}
|
330
331
|
this.myImageMap.areas[this.currentAreaId].ahref = ahref;
|
@@ -428,7 +429,7 @@ export class QMSCKEditorImageMapComponent extends QMSCKEditorBaseComponent {
|
|
428
429
|
data.moduleId = ModuleType.documentProcess;
|
429
430
|
data.moduleName = this.LANG.QMSCKEDITOR.DOCUMENT_PROCESS;
|
430
431
|
if (!isOnlyDocument) {
|
431
|
-
const treeProcessData = yield this.treeService.getProcessAreaContents().toPromise();
|
432
|
+
const treeProcessData = yield this.treeService.getProcessAreaContents('', true, this.data.enabledInterconnected).toPromise();
|
432
433
|
data.treeData1 = (treeProcessData === null || treeProcessData === void 0 ? void 0 : treeProcessData.areas.map((x) => {
|
433
434
|
return {
|
434
435
|
id: x.id,
|
@@ -697,4 +698,4 @@ QMSCKEditorImageMapComponent.propDecorators = {
|
|
697
698
|
myImageRef: [{ type: ViewChild, args: ['myImage',] }],
|
698
699
|
myStatusRef: [{ type: ViewChild, args: ['myStatus',] }]
|
699
700
|
};
|
700
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicW1zLWNrZWRpdG9yLWltYWdlbWFwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Ftcy1hbmd1bGFyL3NyYy9saWIvcW1zLWNrZWRpdG9yLWNvbXBvbmVudHMvY29tcG9uZW50cy9xbXMtY2tlZGl0b3ItaW1hZ2VtYXAvcW1zLWNrZWRpdG9yLWltYWdlbWFwLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFvQixpQkFBaUIsRUFBRSxTQUFTLEVBQWMsTUFBTSxFQUFVLFNBQVMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hJLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUN6RixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDN0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDekUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNuRSxPQUFP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QUNWLEtBQUssUUFBUSxDQUFDLElBQUk7Z0JBQ2QsR0FBRyxHQUFHLGdCQUFnQixJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQ2hDLE1BQU07WUFDVixLQUFLLFFBQVEsQ0FBQyxNQUFNO2dCQUNoQixHQUFHLEdBQUcsV0FBVyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQzNCLE1BQU07WUFDVixLQUFLLFFBQVEsQ0FBQyxxQkFBcUI7Z0JBQy9CLEdBQUcsR0FBRywyQkFBMkIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFBO1lBRXJEO2dCQUNJLE1BQU07U0FDYjtRQUVELE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQzs7O1lBcnRCSixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLG9CQUFvQjtnQkFDOUIseWtWQUFxRDs7YUFFeEQ7OztZQXRFK0YsU0FBUztZQUE5RSxpQkFBaUI7WUFDbkMsU0FBUztZQUVULHVCQUF1QjtZQVl2QixzQkFBc0I7WUFkWCxZQUFZO1lBb0J2Qix3QkFBd0I7WUFoQnhCLG1CQUFtQix1QkFtSW5CLE1BQU0sU0FBQyxlQUFlO1lBN0h0QixlQUFlO1lBRGYsWUFBWTtZQWdCWixzQkFBc0I7WUFGdEIscUNBQXFDOzs7dUJBZ0R6QyxLQUFLO3lCQXlDTCxTQUFTLFNBQUMsU0FBUzswQkFHbkIsU0FBUyxTQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdDaGVja2VkLCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbmplY3QsIE9uSW5pdCwgVmlld0NoaWxkLCBSZW5kZXJlcjIsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ1JlZiwgTUFUX0RJQUxPR19EQVRBIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFRyYW5zbGF0ZUxpYnJhcnlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdHJhbnNsYXRpb24tcmVnaXN0cnkuc2VydmljZSc7XG5pbXBvcnQgeyBRTVNDS0VkaXRvckJhc2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi9xbXMtY2tlZGl0b3ItYmFzZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUU1TQ0tFZGl0b3JJbWFnZU1hcCB9IGZyb20gJy4uLy4uL21vZGVscy9xbXMtY2tlZGl0b3ItaW1hZ2VtYXAubW9kZWwnO1xuaW1wb3J0IHsgTGlua1R5cGUgfSBmcm9tICcuLi8uLi9jb21tb24vZW51bXMvbGluay10eXBlLmVudW0nO1xuaW1wb3J0IHsgUHJvdG9jb2xUeXBlTmFtZSB9IGZyb20gJy4uLy4uL2NvbW1vbi9lbnVtcy9wcm90b2NvbC10eXBlLmVudW0nO1xuaW1wb3J0IHsgVGFyZ2V0VHlwZU5hbWUgfSBmcm9tICcuLi8uLi9jb21tb24vZW51bXMvdGFyZ2V0LXR5cGUuZW51bSc7XG5pbXBvcnQgeyBJbWFnZU1vZGVOYW1lIH0gZnJvbSAnLi4vLi4vY29tbW9uL2VudW1zL2ltYWdlLW1vZGUuZW51bSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IE1hdEljb25SZWdpc3RyeSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgSWNvblN2ZyB9IGZyb20gJy4uLy4uL2NvbW1vbi9jb25zdGFudHMvaWNvblN2Zy5jb25zdGFudHMnO1xuaW1wb3J0IHsgUU1TQ0tFZGl0b3JJbWFnZU1hcExpYiB9IGZyb20gJy4vcW1zLWNrZWRpdG9yLWltYWdlbWFwLmxpYic7XG5pbXBvcnQgUU1TQ0tFZGl0b3JQYXJhbXRlciBmcm9tICcuLi8uLi9jb21tb24vbW9kZWxzL3Ftcy1ja2VkaXRvci1wYXJhbWV0ZXIubW9kZWwnO1xuaW1wb3J0IHsgUU1TQ0tFZGl0b3JMaW5rU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Ftcy1ja2VkaXRvci1saW5rLnNlcnZpY2UnO1xuaW1wb3J0IHsgTGlua0F0dGFjaG1lbnRDb21wb25lbnQgfSBmcm9tICcuLi9xbXMtY2tlZGl0b3ItbGluay9hdHRhY2htZW50cy9saW5rLWF0dGFjaG1lbnQuY29tcG9uZW50JztcbmltcG9ydCB7IFFNU0NLRWRpdG9yTGlua0FuY2hvckRvY3VtZW50IH0gZnJvbSAnLi4vLi4vY29tbW9uL21vZGVscy9xbXMtY2tlZGl0b3ItbGluay1hbmNob3ItZG9jdW1lbnQubW9kZWwnO1xuaW1wb3J0IHsgTGlua0FuY2hvciB9IGZyb20gJy4uLy4uL2NvbW1vbi9lbnVtcy9saW5rLWFuY2hvci5lbnVtJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBpbnZhbGlkVVJMVmFsaWRhdG9yIH0gZnJvbSAnLi9xbXMtY2tlZGl0b3ItaW1hZ2VtYXAudmFsaWRhdG9yJztcbmltcG9ydCB7IFFNU0NLRWRpdG9yQ29tbW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Ftcy1ja2VkaXRvci1jb21tb24uc2VydmljZXMnO1xuaW1wb3J0IHsgRGF0YVR5cGUgfSBmcm9tICcuLi8uLi8uLi9jb21tb24vZW51bS9kYXRhLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBUcmVlQ29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy90cmVlJztcbmltcG9ydCB7IFFNU1NlbGVjdFByb2Nlc3NEb2N1bWVudEdsb2JhbFNlcnZpY2UsIFNlbGVjdFByb2Nlc3NEb2N1bWVudFBvcHVwQ29tcG9uZW50LCBTZWxlY3RQcm9jZXNzRG9jdW1lbnRQb3B1cERhdGEgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL3NlbGVjdC1wcm9jZXNzLWRvY3VtZW50JztcbmltcG9ydCB7IE1vZHVsZVR5cGUgfSBmcm9tICcuLi8uLi8uLi9jb21tb24vZW51bS9tb2R1bGUtdHlwZS5lbnVtJztcbmltcG9ydCB7IFFNU0NLRWRpdG9yVHJlZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9xbXMtY2tlZGl0b3ItdHJlZS5zZXJ2aWNlJztcbmltcG9ydCBndWlkSGVscGVyIGZyb20gJy4uLy4uL2NvbW1vbi9oZWxwZXIvZ3VpZEhlbHBlcic7XG5pbXBvcnQgeyBEb2N1bWVudE5vZGVUeXBlIH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL2VudW0vZG9jdW1lbnQtbm9kZS10eXBlLmVudW0nO1xuaW1wb3J0IHsgZm9ya0pvaW4gfSBmcm9tICdyeGpzL2ludGVybmFsL29ic2VydmFibGUvZm9ya0pvaW4nO1xuaW1wb3J0IHsgSVJlbGF0ZWQgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL3JlbGF0ZWQvbW9kZWwvcmVsYXRlZC1kYXRhLm1vZGVsJztcbmltcG9ydCB7IFByb2Nlc3NDbGFzc2lmaWNhdGlvbiB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9lbnVtL3Byb2Nlc3MtY2xhc3NpZmljYXRpb24uZW51bSc7XG5pbXBvcnQgeyBHZXRTZWFyY2hQcm9jZXNzRG9jdW1lbnRPcHRpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMvZ2V0LXNlYXJjaC1wcm9jZXNzLWRvY3VtZW50LW9wdGlvbic7XG5cbmludGVyZmFjZSBJTGlua1R5cGUge1xuICAgIGlkOiBudW1iZXI7XG4gICAgbmFtZTogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgSVRhcmdldCB7XG4gICAgaWQ6IFRhcmdldFR5cGVOYW1lO1xuICAgIG5hbWU6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIElQcm90b2NvbCB7XG4gICAgaWQ6IFByb3RvY29sVHlwZU5hbWU7XG4gICAgbmFtZTogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgSU1vZGUge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGljb246IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIElab29tVHlwZSB7XG4gICAgaWQ6IG51bWJlcjtcbiAgICBuYW1lOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBJQW5jaG9yIHtcbiAgICB2YWx1ZTogbnVtYmVyO1xuICAgIHZpZXdWYWx1ZTogc3RyaW5nO1xuICAgIGFuY2hvclZhbHVlOiBzdHJpbmc7XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYXBwLXFtc2NrLWltYWdlbWFwJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcW1zLWNrZWRpdG9yLWltYWdlbWFwLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9xbXMtY2tlZGl0b3ItaW1hZ2VtYXAuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBRTVNDS0VkaXRvckltYWdlTWFwQ29tcG9uZW50IGV4dGVuZHMgUU1TQ0tFZGl0b3JCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdDaGVja2VkIHtcbiAgICBASW5wdXQoKSBja0VkaXRvcjogYW55O1xuICAgIExBTkc6IGFueTtcbiAgICBpbWFnZU1hcEZvcm1Hcm91cDogRm9ybUdyb3VwO1xuICAgIGltYWdlTWFwRGF0YTogUU1TQ0tFZGl0b3JJbWFnZU1hcDtcbiAgICBsaW5rVHlwZXM6IElMaW5rVHlwZVtdID0gW107XG4gICAgdGFyZ2V0czogSVRhcmdldFtdID0gW107XG4gICAgcHJvdG9jb2xzOiBJUHJvdG9jb2xbXSA9IFtdO1xuICAgIG1vZGVzOiBJTW9kZVtdID0gW107XG4gICAgem9vbVR5cGVzOiBJWm9vbVR5cGVbXSA9IFtdO1xuICAgIHVybCA9ICcnO1xuICAgIHByb2Nlc3NlZFVybCA9ICcnO1xuICAgIHNlbGVjdGVkTW9kZTogSW1hZ2VNb2RlTmFtZSA9IEltYWdlTW9kZU5hbWUuUmVjdGFuZ2xlO1xuICAgIHNlbGVjdGVkTGlua1R5cGU6IExpbmtUeXBlID0gTGlua1R5cGUudXJsO1xuICAgIHNlbGVjdGVkVGFyZ2V0OiBUYXJnZXRUeXBlTmFtZSA9IFRhcmdldFR5cGVOYW1lLm5ldztcbiAgICBzZWxlY3RlZFByb3RvY29sOiBQcm90b2NvbFR5cGVOYW1lIHwgc3RyaW5nID0gUHJvdG9jb2xUeXBlTmFtZS5odHRwO1xuICAgIHNlbGVjdGVkWm9vbSA9IDEuMDtcblxuICAgIHByb3RvY29sUmVnZXg6IFJlZ0V4cCA9IC9eKGh0dHB8aHR0cHN8ZnRwfG5ld3MpOlxcL1xcLyg/PS4pL2k7XG4gICAgamF2YXNjcmlwdExpbmtSZWdleDogUmVnRXhwID0gL2phdmFzY3JpcHRcXDovaTtcblxuICAgIGRvY3VtZW50SWQgPSAwO1xuICAgIC8vYW5jaG9yVGl0bGUgPSAnJztcbiAgICBhbmNob3JUZXh0ID0gJyc7XG4gICAgLy9hbmNob3JCeU5hbWUgPSAnJztcbiAgICBhZHZpc29yeVRpdGxlID0gJyc7XG5cbiAgICBpc0ltYWdlTG9hZGluZyA9IGZhbHNlO1xuICAgIGlzVXJsUHJvY2Vzc2luZyA9IGZhbHNlO1xuICAgIG5hdHVyYWxJbWFnZVdpZHRoID0gMDtcbiAgICBuYXR1cmFsSW1hZ2VIZWlnaHQgPSAwO1xuICAgIGN1cnJlbnRBcmVhSWQgPSAtMTtcbiAgICBteUltYWdlTWFwOiBRTVNDS0VkaXRvckltYWdlTWFwTGliO1xuICAgIHNob3dJbWFnZU1hcEluZm9ybWF0aW9uID0gZmFsc2U7XG5cbiAgICBhbmNob3JEb2N1bWVudHM6IFFNU0NLRWRpdG9yTGlua0FuY2hvckRvY3VtZW50W10gPSBbXTtcbiAgICBhbmNob3JzOiBJQW5jaG9yW107XG4gICAgZWRpdG9yQW5jaG9yczogSUFuY2hvcltdO1xuICAgIC8vZG9jdW1lbnRBbmNob3JzOiBJQW5jaG9yW107XG5cbiAgICBpbWFnZUxpc3RlbmVyczogYW55W10gPSBbXTtcblxuICAgIEBWaWV3Q2hpbGQoJ215SW1hZ2UnKVxuICAgIG15SW1hZ2VSZWY6IEVsZW1lbnRSZWY8SFRNTEltYWdlRWxlbWVudD47XG5cbiAgICBAVmlld0NoaWxkKCdteVN0YXR1cycpXG4gICAgbXlTdGF0dXNSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgcHJvY2Vzc0NvbmZpZzogVHJlZUNvbmZpZztcbiAgICBkb2N1bWVudENvbmZpZzogVHJlZUNvbmZpZztcbiAgICBkb2N1bWVudFR5cGVzID0gW1xuICAgICAgICBEb2N1bWVudE5vZGVUeXBlLkRvY3VtZW50LFxuICAgICAgICBEb2N1bWVudE5vZGVUeXBlLkZpbGVEb2N1bWVudCxcbiAgICAgICAgRG9jdW1lbnROb2RlVHlwZS5MaW5rRG9jdW1lbnQsXG4gICAgICAgIERvY3VtZW50Tm9kZVR5cGUuU2hvcnRjdXREb2N1bWVudFxuICAgIF07XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgICAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2csXG4gICAgICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVMaWJyYXJ5U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBsaW5rU2VydmljZTogUU1TQ0tFZGl0b3JMaW5rU2VydmljZSxcbiAgICAgICAgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPFFNU0NLRWRpdG9ySW1hZ2VNYXBDb21wb25lbnQ+LFxuICAgICAgICBwcml2YXRlIGNvbW1vblNlcnZpY2U6IFFNU0NLRWRpdG9yQ29tbW9uU2VydmljZSxcbiAgICAgICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiBRTVNDS0VkaXRvckltYWdlTWFwLFxuICAgICAgICBpY29uUmVnaXN0cnk6IE1hdEljb25SZWdpc3RyeSxcbiAgICAgICAgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICAgICAgIHByaXZhdGUgdHJlZVNlcnZpY2U6IFFNU0NLRWRpdG9yVHJlZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgc2VsZWN0UHJvY2Vzc0RvY3VtZW50R2xvYmFsU2VydmljZTogUU1TU2VsZWN0UHJvY2Vzc0RvY3VtZW50R2xvYmFsU2VydmljZVxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLmltYWdlTWFwRGF0YSA9IGRhdGE7XG4gICAgICAgIHRoaXMubmF0dXJhbEltYWdlSGVpZ2h0ID0gdGhpcy5pbWFnZU1hcERhdGEuaW1hZ2VIZWlnaHQ7XG4gICAgICAgIHRoaXMubmF0dXJhbEltYWdlV2lkdGggPSB0aGlzLmltYWdlTWFwRGF0YS5pbWFnZVdpZHRoO1xuICAgICAgICB0aGlzLmluaXRGb3JtQ29udHJvbCgpO1xuICAgICAgICB0aGlzLmluaXRTdmdJY29ucyhpY29uUmVnaXN0cnksIHNhbml0aXplcik7XG4gICAgfVxuXG5cbiAgICBpbml0RGVmYXVsdFZhbHVlcygpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZExpbmtUeXBlID0gTGlua1R5cGUudXJsO1xuICAgICAgICB0aGlzLnNlbGVjdGVkVGFyZ2V0ID0gVGFyZ2V0VHlwZU5hbWUubmV3O1xuICAgICAgICB0aGlzLnNlbGVjdGVkUHJvdG9jb2wgPSBQcm90b2NvbFR5cGVOYW1lLmh0dHA7XG4gICAgICAgIHRoaXMudXJsID0gJyc7XG4gICAgICAgIHRoaXMucHJvY2Vzc2VkVXJsID0gJyc7XG4gICAgICAgIHRoaXMuYWR2aXNvcnlUaXRsZSA9ICcnO1xuICAgICAgICB0aGlzLmFuY2hvclRleHQgPSAnJztcbiAgICB9XG5cbiAgICBpbml0U3ZnSWNvbnMoaWNvblJlZ2lzdHJ5OiBNYXRJY29uUmVnaXN0cnksIHNhbml0aXplcjogRG9tU2FuaXRpemVyKSB7XG4gICAgICAgIGljb25SZWdpc3RyeS5hZGRTdmdJY29uTGl0ZXJhbCgndmVjdG9yLXBvaW50ZXInLCBzYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoSWNvblN2Zy5WRUNUT1JfUE9JTlRFUikpO1xuICAgICAgICBpY29uUmVnaXN0cnkuYWRkU3ZnSWNvbkxpdGVyYWwoJ3ZlY3Rvci1jaXJjbGUnLCBzYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoSWNvblN2Zy5WRUNUT1JfQ0lSQ0xFKSk7XG4gICAgICAgIGljb25SZWdpc3RyeS5hZGRTdmdJY29uTGl0ZXJhbCgndmVjdG9yLXJlY3RhbmdsZScsIHNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChJY29uU3ZnLlZFQ1RPUl9SRUNUQU5HTEUpKTtcbiAgICAgICAgaWNvblJlZ2lzdHJ5LmFkZFN2Z0ljb25MaXRlcmFsKCd2ZWN0b3ItcG9seWdvbicsIHNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChJY29uU3ZnLlZFQ1RPUl9QT0xZR09OKSk7XG4gICAgICAgIGljb25SZWdpc3RyeS5hZGRTdmdJY29uTGl0ZXJhbCgndmVjdG9yLXJlbW92ZScsIHNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChJY29uU3ZnLlZFQ1RPUl9SRU1PVkUpKTtcbiAgICB9XG5cbiAgICBpbml0Rm9ybUNvbnRyb2woKSB7XG4gICAgICAgIGNvbnN0IHZhbGlhdGlvbkNvbnRyb2xzID0ge1xuICAgICAgICAgICAgdGFyZ2V0TGlzdDogbmV3IEZvcm1Db250cm9sKCksXG4gICAgICAgICAgICBwcm90b2NvbExpc3Q6IG5ldyBGb3JtQ29udHJvbCgpLFxuICAgICAgICAgICAgYW5jaG9yVGV4dExpc3Q6IG5ldyBGb3JtQ29udHJvbCgpLFxuICAgICAgICAgICAgbW9kZUxpc3Q6IG5ldyBGb3JtQ29udHJvbCgpLFxuICAgICAgICAgICAgem9vbUxpc3Q6IG5ldyBGb3JtQ29udHJvbCgpLFxuICAgICAgICAgICAgbGlua1R5cGVMaXN0OiBuZXcgRm9ybUNvbnRyb2woKVxuICAgICAgICB9O1xuICAgICAgICBpZiAodGhpcy5pbWFnZU1hcERhdGEubGlua0phdmFTY3JpcHRMaW5rc0FsbG93ZWQgPT0gdHJ1ZSkge1xuICAgICAgICAgICAgdmFsaWF0aW9uQ29udHJvbHNbJ3VybCddID0gbmV3IEZvcm1Db250cm9sKCcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmFsaWF0aW9uQ29udHJvbHNbJ3VybCddID0gbmV3IEZvcm1Db250cm9sKCcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgaW52YWxpZFVSTFZhbGlkYXRvcih0aGlzLmphdmFzY3JpcHRMaW5rUmVnZXgpXSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pbWFnZU1hcEZvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAodmFsaWF0aW9uQ29udHJvbHMpO1xuICAgIH1cblxuICAgIGluaXRMaW5rVHlwZSgpIHtcbiAgICAgICAgaWYgKHRoaXMubGlua1R5cGVzKSB7XG4gICAgICAgICAgICB0aGlzLmxpbmtUeXBlcy5wdXNoKHsgaWQ6IExpbmtUeXBlLnVybCwgbmFtZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLkxJTktfVVJMIH0pO1xuICAgICAgICAgICAgdGhpcy5saW5rVHlwZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgaWQ6IExpbmtUeXBlLmFuY2hvclRleHQsXG4gICAgICAgICAgICAgICAgbmFtZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLkxJTktfQU5DSE9SX0lOX1RFWFRcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaW5pdFRhcmdldCgpIHtcbiAgICAgICAgaWYgKHRoaXMudGFyZ2V0cykge1xuICAgICAgICAgICAgdGhpcy50YXJnZXRzLnB1c2goeyBpZDogVGFyZ2V0VHlwZU5hbWUubmV3LCBuYW1lOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuVEFSVEdFVF9ORVcgfSk7XG4gICAgICAgICAgICB0aGlzLnRhcmdldHMucHVzaCh7IGlkOiBUYXJnZXRUeXBlTmFtZS5zYW1lLCBuYW1lOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuVEFSR0VUX1NBTUUgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpbml0UHJvdG9jb2woKSB7XG4gICAgICAgIGlmICh0aGlzLnByb3RvY29scykge1xuICAgICAgICAgICAgdGhpcy5wcm90b2NvbHMucHVzaCh7IGlkOiBQcm90b2NvbFR5cGVOYW1lLmh0dHAsIG5hbWU6IHRoaXMuTEFORy5RTVNDS0VESVRPUi5QUk9UT0NPTF9IVFRQIH0pO1xuICAgICAgICAgICAgdGhpcy5wcm90b2NvbHMucHVzaCh7IGlkOiBQcm90b2NvbFR5cGVOYW1lLmh0dHBzLCBuYW1lOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuUFJPVE9DT0xfSFRUUFMgfSk7XG4gICAgICAgICAgICB0aGlzLnByb3RvY29scy5wdXNoKHsgaWQ6IFByb3RvY29sVHlwZU5hbWUuZnRwLCBuYW1lOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuUFJPVE9DT0xfRlRQIH0pO1xuICAgICAgICAgICAgdGhpcy5wcm90b2NvbHMucHVzaCh7IGlkOiBQcm90b2NvbFR5cGVOYW1lLm5ld3MsIG5hbWU6IHRoaXMuTEFORy5RTVNDS0VESVRPUi5QUk9UT0NPTF9ORVcgfSk7XG4gICAgICAgICAgICB0aGlzLnByb3RvY29scy5wdXNoKHsgaWQ6IFByb3RvY29sVHlwZU5hbWUub3RoZXIsIG5hbWU6IHRoaXMuTEFORy5RTVNDS0VESVRPUi5QUk9UT0NPTF9PVEhFUiB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGluaXRNb2RlcygpIHtcbiAgICAgICAgaWYgKHRoaXMubW9kZXMpIHtcbiAgICAgICAgICAgIHRoaXMubW9kZXMucHVzaCh7IGlkOiBJbWFnZU1vZGVOYW1lLlBvaW50ZXIsIG5hbWU6IHRoaXMuTEFORy5RTVNDS0VESVRPUi5JTUFHRV9NT0RFX1BPSU5URVIsIGljb246IFwidmVjdG9yLXBvaW50ZXJcIiB9KTtcbiAgICAgICAgICAgIHRoaXMubW9kZXMucHVzaCh7IGlkOiBJbWFnZU1vZGVOYW1lLlJlY3RhbmdsZSwgbmFtZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLklNQUdFX01PREVfUkVDVEFOR0xFLCBpY29uOiBcInZlY3Rvci1yZWN0YW5nbGVcIiB9KTtcbiAgICAgICAgICAgIHRoaXMubW9kZXMucHVzaCh7IGlkOiBJbWFnZU1vZGVOYW1lLkNpcmNsZSwgbmFtZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLklNQUdFX01PREVfQ0lSQ0xFLCBpY29uOiBcInZlY3Rvci1jaXJjbGVcIiB9KTtcbiAgICAgICAgICAgIHRoaXMubW9kZXMucHVzaCh7IGlkOiBJbWFnZU1vZGVOYW1lLlBvbHlnb24sIG5hbWU6IHRoaXMuTEFORy5RTVNDS0VESVRPUi5JTUFHRV9NT0RFX1BPTFlHT04sIGljb246IFwidmVjdG9yLXBvbHlnb25cIiB9KTtcbiAgICAgICAgICAgIHRoaXMubW9kZXMucHVzaCh7IGlkOiBJbWFnZU1vZGVOYW1lLlJlbW92ZSwgbmFtZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLklNQUdFX01PREVfUkVNT1ZFLCBpY29uOiBcInZlY3Rvci1yZW1vdmVcIiB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGluaXRab29tVHlwZXMoKSB7XG4gICAgICAgIGlmICh0aGlzLnpvb21UeXBlcykge1xuICAgICAgICAgICAgdGhpcy56b29tVHlwZXMucHVzaCh7IGlkOiAwLjI1LCBuYW1lOiBcIjI1JVwiIH0pO1xuICAgICAgICAgICAgdGhpcy56b29tVHlwZXMucHVzaCh7IGlkOiAwLjUsIG5hbWU6IFwiNTAlXCIgfSk7XG4gICAgICAgICAgICB0aGlzLnpvb21UeXBlcy5wdXNoKHsgaWQ6IDEuMCwgbmFtZTogXCIxMDAlXCIgfSk7XG4gICAgICAgICAgICB0aGlzLnpvb21UeXBlcy5wdXNoKHsgaWQ6IDIuMCwgbmFtZTogXCIyMDAlXCIgfSk7XG4gICAgICAgICAgICB0aGlzLnpvb21UeXBlcy5wdXNoKHsgaWQ6IDMuMCwgbmFtZTogXCIzMDAlXCIgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpbml0QW5jaG9yKCkge1xuICAgICAgICB0aGlzLmFuY2hvcnMgPSBbXTtcbiAgICAgICAgdGhpcy5hbmNob3JzID0gW3sgdmFsdWU6IDAsIHZpZXdWYWx1ZTogJycsIGFuY2hvclZhbHVlOiBMaW5rQW5jaG9yLkJsYW5rIH1dO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLnRyYW5zbGF0ZS5nZXRMYW5ndWFnZVN1YmplY3QkLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSkuc3Vic2NyaWJlKChyZXMpID0+IHtcbiAgICAgICAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLkxBTkcgPSB0aGlzLnRyYW5zbGF0ZS5nZXRPYmplY3RMYW5nKHJlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmluaXRMaW5rVHlwZSgpO1xuICAgICAgICB0aGlzLmluaXRUYXJnZXQoKTtcbiAgICAgICAgdGhpcy5pbml0UHJvdG9jb2woKTtcbiAgICAgICAgdGhpcy5pbml0TW9kZXMoKTtcbiAgICAgICAgdGhpcy5pbml0Wm9vbVR5cGVzKCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgICAgIGlmICh0aGlzLmltYWdlTGlzdGVuZXJzICYmIHRoaXMuaW1hZ2VMaXN0ZW5lcnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5pbWFnZUxpc3RlbmVycy5mb3JFYWNoKGxpc3RlbmVyID0+IHtcbiAgICAgICAgICAgICAgICBsaXN0ZW5lcigpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkltYWdlTG9hZCgpIHtcbiAgICAgICAgdGhpcy5uYXR1cmFsSW1hZ2VIZWlnaHQgPSB0aGlzLm5hdHVyYWxJbWFnZUhlaWdodCAhPSAwID8gdGhpcy5uYXR1cmFsSW1hZ2VIZWlnaHQgOiB0aGlzLm15SW1hZ2VSZWYubmF0aXZlRWxlbWVudC5uYXR1cmFsSGVpZ2h0O1xuICAgICAgICB0aGlzLm5hdHVyYWxJbWFnZVdpZHRoID0gdGhpcy5uYXR1cmFsSW1hZ2VXaWR0aCAhPSAwID8gdGhpcy5uYXR1cmFsSW1hZ2VXaWR0aCA6IHRoaXMubXlJbWFnZVJlZi5uYXRpdmVFbGVtZW50Lm5hdHVyYWxXaWR0aDtcblxuICAgICAgICB0aGlzLnNldEltYWdlU2l6ZSgpO1xuXG4gICAgICAgIHRoaXMubXlJbWFnZU1hcC5zZXRNYXBKc29uKHtcbiAgICAgICAgICAgIG5hbWU6IHRoaXMuaW1hZ2VNYXBEYXRhLm5hbWUsXG4gICAgICAgICAgICBhcmVhczogdGhpcy5pbWFnZU1hcERhdGEuYXJlYXNcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHRoaXMuaW1hZ2VNYXBEYXRhLmFyZWFzICYmIHRoaXMuaW1hZ2VNYXBEYXRhLmFyZWFzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMubXlJbWFnZU1hcC5ibHVyQXJlYSh0aGlzLm15SW1hZ2VNYXAuY3VycmVudGlkKTtcbiAgICAgICAgICAgIHRoaXMubXlJbWFnZU1hcC5jdXJyZW50aWQgPSAwO1xuICAgICAgICAgICAgdGhpcy5teUltYWdlTWFwLnNlbGVjdGVkSWQgPSAwO1xuICAgICAgICAgICAgdGhpcy5vblNlbGVjdEFyZWEodGhpcy5teUltYWdlTWFwLmFyZWFzWzBdKTtcbiAgICAgICAgICAgIHRoaXMubXlJbWFnZU1hcC5oaWdobGlnaHRBcmVhKDApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICBpZiAodGhpcy5teUltYWdlUmVmKSB7XG4gICAgICAgICAgICB0aGlzLmlzSW1hZ2VMb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuaW1hZ2VMaXN0ZW5lcnMucHVzaCh0aGlzLnJlbmRlcmVyLmxpc3Rlbih0aGlzLm15SW1hZ2VSZWYubmF0aXZlRWxlbWVudCwgJ2xvYWQnLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkltYWdlTG9hZCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuaXNJbWFnZUxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEF2b2lkIGRyYWcmZHJvcCBvZiB0aGUgaW1hZ2VcbiAgICAgICAgdGhpcy5teUltYWdlTWFwID0gbmV3IFFNU0NLRWRpdG9ySW1hZ2VNYXBMaWIoe1xuICAgICAgICAgICAgY3VzdG9tX2NhbGxiYWNrczoge1xuICAgICAgICAgICAgICAgIFwib25BZGRBcmVhXCI6IHRoaXMub25BZGRBcmVhLmJpbmQodGhpcyksXG4gICAgICAgICAgICAgICAgJ29uU2VsZWN0QXJlYSc6IHRoaXMub25TZWxlY3RBcmVhLmJpbmQodGhpcyksXG4gICAgICAgICAgICAgICAgJ29uUmVtb3ZlQXJlYSc6IHRoaXMub25SZW1vdmVBcmVhLmJpbmQodGhpcyksXG4gICAgICAgICAgICAgICAgJ29uU3RhdHVzTWVzc2FnZSc6IHRoaXMub25TdGF0dXNNZXNzYWdlLmJpbmQodGhpcylcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpbWFnZUVsZW1lbnQ6IHRoaXMubXlJbWFnZVJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgYm91bmRpbmdfYm94OiBmYWxzZSxcbiAgICAgICAgICAgIENMX0RSQVdfU0hBUEU6ICcjRjAwJyxcbiAgICAgICAgICAgIENMX05PUk1fU0hBUEU6ICcjQUFBJyxcbiAgICAgICAgICAgIENMX0hJR0hMSUdIVF9TSEFQRTogJyNGMDAnLFxuICAgICAgICAgICAgc3RyaW5nczoge1xuICAgICAgICAgICAgICAgIFwiUE9MWUdPTl9EUkFXXCI6IHRoaXMuTEFORy5RTVNDS0VESVRPUi5QT0xZR09OX0RSQVcsXG4gICAgICAgICAgICAgICAgXCJSRUNUQU5HTEVfRFJBV1wiOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuUkVDVEFOR0xFX0RSQVcsXG4gICAgICAgICAgICAgICAgXCJTUVVBUkVfRFJBV1wiOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuU1FVQVJFX0RSQVcsXG4gICAgICAgICAgICAgICAgJ1JFQURZJzogJycsXG4gICAgICAgICAgICAgICAgJ1JFQ1RBTkdMRV9NT1ZFJzogJycsXG4gICAgICAgICAgICAgICAgJ1JFQ1RBTkdMRV9SRVNJWkVfVE9QJzogJycsXG4gICAgICAgICAgICAgICAgJ1JFQ1RBTkdMRV9SRVNJWkVfUklHSFQnOiAnJyxcbiAgICAgICAgICAgICAgICAnUkVDVEFOR0xFX1JFU0laRV9CT1RUT00nOiAnJyxcbiAgICAgICAgICAgICAgICAnUkVDVEFOR0xFX1JFU0laRV9MRUZUJzogJycsXG4gICAgICAgICAgICAgICAgJ1NRVUFSRV9NT1ZFJzogJycsXG4gICAgICAgICAgICAgICAgJ1NRVUFSRV9SRVNJWkVfVE9QJzogJycsXG4gICAgICAgICAgICAgICAgJ1NRVUFSRV9SRVNJWkVfUklHSFQnOiAnJyxcbiAgICAgICAgICAgICAgICAnU1FVQVJFX1JFU0laRV9CT1RUT00nOiAnJyxcbiAgICAgICAgICAgICAgICAnU1FVQVJFX1JFU0laRV9MRUZUJzogJycsXG4gICAgICAgICAgICAgICAgJ1BPTFlHT05fTU9WRSc6ICcnXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHBhcnNlTGlua1VybCh1cmw6IHN0cmluZykge1xuICAgICAgICBjb25zdCBwcm90b2NvbCA9IHRoaXMucHJvdG9jb2xSZWdleC5leGVjKHVybCk7XG4gICAgICAgIGlmICghIXByb3RvY29sKSB7XG4gICAgICAgICAgICB0aGlzLnByb2Nlc3NlZFVybCA9IHVybC5zdWJzdHIocHJvdG9jb2xbMF0ubGVuZ3RoKTtcbiAgICAgICAgICAgIHRoaXMudXJsID0gdGhpcy5wcm9jZXNzZWRVcmw7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkUHJvdG9jb2wgPSBwcm90b2NvbFswXS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuamF2YXNjcmlwdExpbmtSZWdleC50ZXN0KHVybCkgJiYgIXRoaXMuaW1hZ2VNYXBEYXRhLmxpbmtKYXZhU2NyaXB0TGlua3NBbGxvd2VkKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkUHJvdG9jb2wgPSBQcm90b2NvbFR5cGVOYW1lLmh0dHA7XG4gICAgICAgICAgICB0aGlzLnByb2Nlc3NlZFVybCA9ICcnO1xuICAgICAgICAgICAgdGhpcy51cmwgPSB0aGlzLnByb2Nlc3NlZFVybDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucHJvY2Vzc2VkVXJsID0gdXJsO1xuICAgICAgICAgICAgdGhpcy51cmwgPSB0aGlzLnByb2Nlc3NlZFVybDtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRQcm90b2NvbCA9IFByb3RvY29sVHlwZU5hbWUub3RoZXI7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblNlbGVjdEFyZWEoYXJlYSkge1xuICAgICAgICB0aGlzLmN1cnJlbnRBcmVhSWQgPSBhcmVhLmFpZDtcbiAgICAgICAgdGhpcy5zaG93SW1hZ2VNYXBJbmZvcm1hdGlvbiA9IHRydWU7XG5cbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRNb2RlID09IEltYWdlTW9kZU5hbWUuUmVtb3ZlKSB7XG4gICAgICAgICAgICB0aGlzLm15SW1hZ2VNYXAucmVtb3ZlQXJlYSh0aGlzLmN1cnJlbnRBcmVhSWQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGFyZWEuYWhyZWYubWF0Y2goL14jKC4qKSQvKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuYW5jaG9yVGV4dCA9IGFyZWEuYWhyZWYuc2xpY2UoMSk7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZExpbmtUeXBlID0gTGlua1R5cGUuYW5jaG9yVGV4dDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZExpbmtUeXBlID0gTGlua1R5cGUudXJsO1xuICAgICAgICAgICAgICAgIHRoaXMucGFyc2VMaW5rVXJsKGFyZWEuYWhyZWYpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFRhcmdldCA9IGFyZWEuYXRhcmdldDtcbiAgICAgICAgICAgIHRoaXMuYWR2aXNvcnlUaXRsZSA9IGFyZWEuYWFsdDtcbiAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uUmVtb3ZlQXJlYSgpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50QXJlYUlkID0gLTE7XG4gICAgICAgIHRoaXMuc2hvd0ltYWdlTWFwSW5mb3JtYXRpb24gPSBmYWxzZTtcbiAgICB9XG5cbiAgICByZW1vdmVNYXAoKSB7XG4gICAgICAgIHRoaXMuY3VycmVudEFyZWFJZCA9IC0xO1xuICAgICAgICB0aGlzLnNob3dJbWFnZU1hcEluZm9ybWF0aW9uID0gZmFsc2U7XG4gICAgICAgIHRoaXMubXlJbWFnZU1hcC5yZW1vdmVBbGxBcmVhcygpO1xuICAgIH1cblxuICAgIG9uU3RhdHVzTWVzc2FnZSh0ZXh0OiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHRoaXMubXlTdGF0dXNSZWYpIHtcbiAgICAgICAgICAgIHRoaXMubXlTdGF0dXNSZWYubmF0aXZlRWxlbWVudC5pbm5lckhUTUwgPSB0ZXh0IHx8ICcnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25VcmxLZXl1cCgpIHtcbiAgICAgICAgdGhpcy5pc1VybFByb2Nlc3NpbmcgPSB0cnVlO1xuICAgICAgICBpZiAodGhpcy51cmwgIT0gdGhpcy5wcm9jZXNzZWRVcmwpIHtcbiAgICAgICAgICAgIHRoaXMucGFyc2VMaW5rVXJsKHRoaXMudXJsKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlQXJlYVZhbHVlcygpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pc1VybFByb2Nlc3NpbmcgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBvblVybENoYW5nZSgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVXJsUHJvY2Vzc2luZykge1xuICAgICAgICAgICAgdGhpcy5vblVybEtleXVwKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkFuY2hvclRleHRDaGFuZ2UoKSB7XG4gICAgICAgIHRoaXMudXBkYXRlQXJlYVZhbHVlcygpO1xuICAgIH1cblxuICAgIG9uUHJvdG9jb2xDaGFuZ2UoKSB7XG4gICAgICAgIHRoaXMudXBkYXRlQXJlYVZhbHVlcygpO1xuICAgIH1cblxuICAgIG9uVGFyZ2V0Q2hhbmdlKCkge1xuICAgICAgICB0aGlzLnVwZGF0ZUFyZWFWYWx1ZXMoKTtcbiAgICB9XG5cbiAgICBvbkFkZEFyZWEoaWQ6IG51bWJlcikge1xuICAgICAgICB0aGlzLmN1cnJlbnRBcmVhSWQgPSBpZDtcbiAgICAgICAgdGhpcy5zaG93SW1hZ2VNYXBJbmZvcm1hdGlvbiA9IHRydWU7XG4gICAgICAgIHRoaXMuaW5pdERlZmF1bHRWYWx1ZXMoKTtcbiAgICAgICAgdGhpcy51cGRhdGVBcmVhVmFsdWVzKCk7XG4gICAgfVxuXG4gICAgdXBkYXRlQXJlYVZhbHVlcygpIHtcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudEFyZWFJZCA+IC0xKSB7XG4gICAgICAgICAgICB2YXIgYWhyZWYgPSB0aGlzLmJ1aWxkVXJsV2l0aFByb3RvY29sKCk7XG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZExpbmtUeXBlID09IExpbmtUeXBlLmFuY2hvclRleHQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm15SW1hZ2VNYXAuYXJlYXNbdGhpcy5jdXJyZW50QXJlYUlkXS5hdGFyZ2V0ID0gVGFyZ2V0VHlwZU5hbWUuc2FtZTtcbiAgICAgICAgICAgICAgICB0aGlzLm15SW1hZ2VNYXAuYXJlYXNbdGhpcy5jdXJyZW50QXJlYUlkXS5hYWx0ID0gdGhpcy5hbmNob3JUZXh0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5teUltYWdlTWFwLmFyZWFzW3RoaXMuY3VycmVudEFyZWFJZF0uYXRhcmdldCA9IHRoaXMuc2VsZWN0ZWRUYXJnZXQgfHwgVGFyZ2V0VHlwZU5hbWUubmV3O1xuICAgICAgICAgICAgICAgIHRoaXMubXlJbWFnZU1hcC5hcmVhc1t0aGlzLmN1cnJlbnRBcmVhSWRdLmFhbHQgPSB0aGlzLmFkdmlzb3J5VGl0bGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLm15SW1hZ2VNYXAuYXJlYXNbdGhpcy5jdXJyZW50QXJlYUlkXS5haHJlZiA9IGFocmVmO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYnVpbGRVcmxXaXRoUHJvdG9jb2woKSB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkTGlua1R5cGUgPT0gTGlua1R5cGUuYW5jaG9yVGV4dCkge1xuICAgICAgICAgICAgcmV0dXJuICcjJyArICh0aGlzLmFuY2hvclRleHQgfHwgJycpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghIXRoaXMucHJvY2Vzc2VkVXJsKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZFByb3RvY29sICsgdGhpcy5wcm9jZXNzZWRVcmw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpIHtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIG9uQ2xvc2VEaWFsb2coKSB7XG4gICAgICAgIGNvbnN0IHNjcm9sbFRvcCA9IHRoaXMuY29tbW9uU2VydmljZS5nZXRTY3JvbGxUb3BDa2VkaXRvcih0aGlzLmNrRWRpdG9yKTtcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlLnNldFNjcm9sbFRvcEVkaXRvckNvbnRhaW5lcih0aGlzLmNrRWRpdG9yLCBzY3JvbGxUb3ApO1xuICAgIH1cblxuICAgIG9uTW9kZUNoYW5nZShlOiBhbnkpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZE1vZGUgPSBlLnZhbHVlO1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZE1vZGUgPT0gSW1hZ2VNb2RlTmFtZS5Qb2ludGVyIHx8IHRoaXMuc2VsZWN0ZWRNb2RlID09IEltYWdlTW9kZU5hbWUuUmVtb3ZlKSB7XG4gICAgICAgICAgICB0aGlzLm15SW1hZ2VNYXAuaXNfZHJhd2luZyA9IDA7XG4gICAgICAgICAgICB0aGlzLm15SW1hZ2VNYXAubmV4dFNoYXBlID0gJyc7XG4gICAgICAgICAgICB0aGlzLm15SW1hZ2VSZWYubmF0aXZlRWxlbWVudC5zdHlsZS5jdXJzb3IgPSAnZGVmYXVsdCc7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm15SW1hZ2VNYXAubmV4dFNoYXBlID0gdGhpcy5zZWxlY3RlZE1vZGU7XG4gICAgICAgICAgICB0aGlzLm15SW1hZ2VSZWYubmF0aXZlRWxlbWVudC5zdHlsZS5jdXJzb3IgPSAnY3Jvc3NoYWlyJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uWm9vbUNoYW5nZSgpIHtcbiAgICAgICAgdGhpcy5zZXRJbWFnZVNpemUoKTtcbiAgICAgICAgaWYgKHRoaXMubXlJbWFnZU1hcCkge1xuICAgICAgICAgICAgdGhpcy5teUltYWdlTWFwLnNjYWxlQWxsQXJlYXModGhpcy5zZWxlY3RlZFpvb20pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25MaW5rVHlwZUNoYW5nZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRMaW5rVHlwZSA9PT0gTGlua1R5cGUuYW5jaG9yVGV4dCkge1xuICAgICAgICAgICAgdGhpcy5nZXRFZGl0b3JBbmNob3IoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnVwZGF0ZUFyZWFWYWx1ZXMoKTtcbiAgICB9XG5cbiAgICBnZXRFZGl0b3JBbmNob3IoKSB7XG4gICAgICAgIHRoaXMuYW5jaG9yRG9jdW1lbnRzID0gW107XG4gICAgICAgIGlmICh0aGlzLmltYWdlTWFwRGF0YS5lZGl0b3JDb250ZW50KSB7XG4gICAgICAgICAgICB0aGlzLmFuY2hvckRvY3VtZW50cy5wdXNoKHtcbiAgICAgICAgICAgICAgICBpZDogMCxcbiAgICAgICAgICAgICAgICBlbnRpdHlJZDogMCxcbiAgICAgICAgICAgICAgICBkb2N1bWVudElkOiAwLFxuICAgICAgICAgICAgICAgIGRvY3VtZW50VHlwZUlkOiAwLFxuICAgICAgICAgICAgICAgIHJpY2hUZXh0OiB0aGlzLmltYWdlTWFwRGF0YS5lZGl0b3JDb250ZW50XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldEFuY2hvckRvY3VtZW50KHRoaXMuYW5jaG9yRG9jdW1lbnRzKTtcbiAgICAgICAgdGhpcy5lZGl0b3JBbmNob3JzID0gdGhpcy5hbmNob3JzO1xuICAgIH1cblxuICAgIHNldEltYWdlU2l6ZSgpIHtcbiAgICAgICAgaWYgKHRoaXMubXlJbWFnZVJlZikge1xuICAgICAgICAgICAgY29uc3Qgd2lkdGggPSB0aGlzLm5hdHVyYWxJbWFnZVdpZHRoICogdGhpcy5zZWxlY3RlZFpvb207XG4gICAgICAgICAgICBjb25zdCBoZWlnaHQgPSB0aGlzLm5hdHVyYWxJbWFnZUhlaWdodCAqIHRoaXMuc2VsZWN0ZWRab29tO1xuICAgICAgICAgICAgdGhpcy5teUltYWdlUmVmLm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKFwid2lkdGhcIiwgYCR7d2lkdGh9cHg7YCk7XG4gICAgICAgICAgICB0aGlzLm15SW1hZ2VSZWYubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJoZWlnaHRcIiwgYCR7aGVpZ2h0fXB4O2ApO1xuICAgICAgICAgICAgdGhpcy5teUltYWdlUmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUud2lkdGggPSBgJHt3aWR0aH1weGA7XG4gICAgICAgICAgICB0aGlzLm15SW1hZ2VSZWYubmF0aXZlRWxlbWVudC5zdHlsZS5oZWlnaHQgPSBgJHtoZWlnaHR9cHhgO1xuICAgICAgICAgICAgdGhpcy5teUltYWdlUmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUuY3Vyc29yID0gdGhpcy5zZWxlY3RlZE1vZGUgPT0gSW1hZ2VNb2RlTmFtZS5Qb2ludGVyIHx8IHRoaXMuc2VsZWN0ZWRNb2RlID09IEltYWdlTW9kZU5hbWUuUmVtb3ZlID8gJ2RlZmF1bHQnIDogJ2Nyb3NzaGFpcic7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhc3luYyBlSGFuZGJvb2soaXNPbmx5RG9jdW1lbnQ6IGJvb2xlYW4sIGlzQW5jaG9yRG9jdW1lbnQ6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5wcm9jZXNzQ29uZmlnID0ge1xuICAgICAgICAgICAgYWxsb3dTZWxlY3RGb2xkZXI6IHRydWUsXG4gICAgICAgICAgICBhcmVhT2ZDdXJyZW50UHJvY2VzczogJycsXG4gICAgICAgICAgICBzaG93Q2hlY2tCb3g6IGZhbHNlLFxuICAgICAgICAgICAgYWxsb3dNdWx0aXBsZUNoZWNrOiBmYWxzZSxcbiAgICAgICAgICAgIG9ubHlDaGVja0JveEZvckNoaWxkOiBmYWxzZSxcbiAgICAgICAgICAgIG1vZHVsZUlkOiBEYXRhVHlwZS5wcm9jZXNzLFxuICAgICAgICAgICAgb3Blbkljb25Db2xvcjogJyMxOTU0QTknLFxuICAgICAgICAgICAgY2xvc2VJY29uQ29sb3I6ICcjYTRiMGRlJyxcbiAgICAgICAgICAgIHNpbmdsZVNlbGVjdGVkTm9kZTogdHJ1ZSxcbiAgICAgICAgICAgIG9ubHlGb2xkZXI6IGZhbHNlLFxuICAgICAgICAgICAgc2VsZWN0T25lOiB0cnVlXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5kb2N1bWVudENvbmZpZyA9IHtcbiAgICAgICAgICAgIGFsbG93U2VsZWN0Rm9sZGVyOiAhaXNPbmx5RG9jdW1lbnQsXG4gICAgICAgICAgICBhcmVhT2ZDdXJyZW50UHJvY2VzczogJycsXG4gICAgICAgICAgICBzaG93Q2hlY2tCb3g6IGZhbHNlLFxuICAgICAgICAgICAgbW9kdWxlSWQ6IERhdGFUeXBlLmRvY3VtZW50LFxuICAgICAgICAgICAgYWxsb3dNdWx0aXBsZUNoZWNrOiBmYWxzZSxcbiAgICAgICAgICAgIG9ubHlDaGVja0JveEZvckNoaWxkOiBmYWxzZSxcbiAgICAgICAgICAgIG9wZW5JY29uQ29sb3I6ICcjMTk1NEE5JyxcbiAgICAgICAgICAgIGNsb3NlSWNvbkNvbG9yOiAnIzRhY2FmZicsXG4gICAgICAgICAgICBzaW5nbGVTZWxlY3RlZE5vZGU6IHRydWUsXG4gICAgICAgICAgICBvbmx5Rm9sZGVyOiBmYWxzZSxcbiAgICAgICAgICAgIHNlbGVjdE9uZTogdHJ1ZVxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGRhdGE6IFNlbGVjdFByb2Nlc3NEb2N1bWVudFBvcHVwRGF0YSA9IG5ldyBTZWxlY3RQcm9jZXNzRG9jdW1lbnRQb3B1cERhdGEoKTtcbiAgICAgICAgZGF0YS5tb2R1bGVJZCA9IE1vZHVsZVR5cGUuZG9jdW1lbnRQcm9jZXNzO1xuICAgICAgICBkYXRhLm1vZHVsZU5hbWUgPSB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuRE9DVU1FTlRfUFJPQ0VTUztcbiAgICAgICAgaWYgKCFpc09ubHlEb2N1bWVudCkge1xuICAgICAgICAgICAgY29uc3QgdHJlZVByb2Nlc3NEYXRhID0gYXdhaXQgdGhpcy50cmVlU2VydmljZS5nZXRQcm9jZXNzQXJlYUNvbnRlbnRzKCkudG9Qcm9taXNlKCk7XG4gICAgICAgICAgICBkYXRhLnRyZWVEYXRhMSA9IHRyZWVQcm9jZXNzRGF0YT8uYXJlYXMubWFwKCh4KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IHguaWQsXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IHgubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50SWQ6IHgucGFyZW50SWQgPT09IGd1aWRIZWxwZXIuZW1wdHkgPyAnJyA6IHgucGFyZW50SWQsXG4gICAgICAgICAgICAgICAgICAgIHN0YXR1c0lkOiAwLFxuICAgICAgICAgICAgICAgICAgICBzdGF0dXNOYW1lOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheUlkOiAwLFxuICAgICAgICAgICAgICAgICAgICBleHBhbmRhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pIHx8IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdHJlZURvY3VtZW50RGF0YSA9IGF3YWl0IHRoaXMudHJlZVNlcnZpY2UuZ2V0Rm9sZGVyQ2hpbGRyZW5zKCkudG9Qcm9taXNlKCk7XG5cbiAgICAgICAgZGF0YS50cmVlRGF0YTIgPSB0cmVlRG9jdW1lbnREYXRhPy5tYXAoKHgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgaWQ6IHguaWQudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICBuYW1lOiB4Lm5hbWUudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICBwYXJlbnRJZDogIXgucGFyZW50SGFuZGJvb2tJZCA/ICcnIDogeC5wYXJlbnRIYW5kYm9va0lkLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgc3RhdHVzSWQ6IDAsXG4gICAgICAgICAgICAgICAgc3RhdHVzTmFtZTogJycsXG4gICAgICAgICAgICAgICAgZGlzcGxheUlkOiAwLFxuICAgICAgICAgICAgICAgIGV4cGFuZGFibGU6IHgudHlwZSA+IERvY3VtZW50Tm9kZVR5cGUuU2hvcnRjdXREb2N1bWVudCxcbiAgICAgICAgICAgICAgICBsZXZlbFR5cGU6IHgudHlwZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgICAgIGRhdGEudHJlZUNvbmZpZzEgPSB0aGlzLnByb2Nlc3NDb25maWc7XG4gICAgICAgIGRhdGEudHJlZUNvbmZpZzIgPSB0aGlzLmRvY3VtZW50Q29uZmlnO1xuICAgICAgICBkYXRhLnNwbGl0VmlldyA9IGZhbHNlO1xuICAgICAgICBkYXRhLmlzU2VsZWN0T25lID0gdHJ1ZTtcbiAgICAgICAgZGF0YS50b29sdGlwTG9jYXRpb25TZWFyY2hSZXN1bHQgPSB0cnVlO1xuXG4gICAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oU2VsZWN0UHJvY2Vzc0RvY3VtZW50UG9wdXBDb21wb25lbnQsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnNzY4cHgnLFxuICAgICAgICAgICAgbWluSGVpZ2h0OiAnNjkwcHgnLFxuICAgICAgICAgICAgZGF0YSxcbiAgICAgICAgICAgIHBhbmVsQ2xhc3M6IFsncmVsYXRlZC1wcm9jZXNzX19wb3B1cCcsICdjdXN0b20tbWF0LWRpYWxvZy1jb250YWluZXInXSxcbiAgICAgICAgICAgIGF1dG9Gb2N1czogZmFsc2VcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlLm9uU2VhcmNoLnN1YnNjcmliZShhc3luYyAoa2V5d29yZDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICBpZiAoIWtleXdvcmQgfHwga2V5d29yZC50cmltKCkgPT09ICcnKVxuICAgICAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICAgICAgbGV0IGdldFNlYXJjaE9wdGlvbiA9IG5ldyBHZXRTZWFyY2hQcm9jZXNzRG9jdW1lbnRPcHRpb24odHJ1ZSwgdHJ1ZSwgdGhpcy5kYXRhLmVuYWJsZWRJbnRlcmNvbm5lY3RlZCwgdHJ1ZSwgdHJ1ZSk7XG4gICAgICAgICAgICBpZiAoaXNPbmx5RG9jdW1lbnQpIHtcbiAgICAgICAgICAgICAgICBnZXRTZWFyY2hPcHRpb24uaXNHZXRQcm9jZXNzID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgZ2V0U2VhcmNoT3B0aW9uLmlzR2V0SW50ZXJjb25uZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBnZXRTZWFyY2hPcHRpb24uaXNHZXRBcmVhID0gZmFsc2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHNlYXJjaFJlc3VsdCA9IGF3YWl0IHRoaXMudHJlZVNlcnZpY2UuZ2V0U2VhcmNoUHJvY2Vzc0RvY3VtZW50KGtleXdvcmQudHJpbSgpLCBnZXRTZWFyY2hPcHRpb24pO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RQcm9jZXNzRG9jdW1lbnRHbG9iYWxTZXJ2aWNlLnNldFNlYXJjaFJlbGF0ZWQoc2VhcmNoUmVzdWx0KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlLm9uRXhwYW5kUHJvY2Vzc0FyZWEuc3Vic2NyaWJlKChhcmVhKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnRyZWVTZXJ2aWNlLmdldFByb2Nlc3NBcmVhQ29udGVudHMoYXJlYS5pZCwgdHJ1ZSwgdGhpcy5kYXRhLmVuYWJsZWRJbnRlcmNvbm5lY3RlZCkudG9Qcm9taXNlKCkudGhlbihyZXMgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYXJlYXMgPSByZXMuYXJlYXMubWFwKCh4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB4LmlkLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogeC5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudElkOiB4LnBhcmVudElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGFuZGFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzSWQ6IHguc3RhdHVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c05hbWU6IHguc3RhdHVzTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5SWQ6IDBcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH0pIHx8IFtdO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByb2Nlc3NlcyA9IHJlcy5wcm9jZXNzZXMubWFwKCh4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB4LmVudGl0eUlkLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogeC5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudElkOiB4LnByb2Nlc3NBcmVhSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwYW5kYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzSWQ6IHguc3RhdHVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c05hbWU6IHguYXBwcm92YWxTdGF0dXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheUlkOiB4LnByb2Nlc3NOdW1iZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVR5cGU6IHgucHJvY2Vzc0NsYXNzaWZpY2F0aW9uID09PSBQcm9jZXNzQ2xhc3NpZmljYXRpb24uSW50ZXJjb25uZWN0ZWRQcm9jZXNzID8gRGF0YVR5cGUucHJvY2Vzc0ludGVyY29ubmVjdGVkIDogRGF0YVR5cGUucHJvY2Vzc1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfSkgfHwgW107XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0UHJvY2Vzc0RvY3VtZW50R2xvYmFsU2VydmljZS5zZXRQcm9jZXNzQXJlYUNoaWxkcmVuKFsuLi5hcmVhcywgLi4ucHJvY2Vzc2VzXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGRpYWxvZ1JlZi5jb21wb25lbnRJbnN0YW5jZS5vbkV4cGFuZEZvbGRlci5zdWJzY3JpYmUoKGZvbGRlcikgPT4ge1xuICAgICAgICAgICAgdGhpcy50cmVlU2VydmljZVxuICAgICAgICAgICAgICAgIC5nZXRGb2xkZXJDaGlsZHJlbnMoZm9sZGVyLmlkKVxuICAgICAgICAgICAgICAgIC50b1Byb21pc2UoKS50aGVuKChyZXMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hpbGRzID0gcmVzLm1hcCgoeCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB4LmlkLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHgubmFtZS50b1N0cmluZygpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRJZDogdGhpcy5nZXRQYXJlbnRJZCh4KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzSWQ6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c05hbWU6IHguYXBwcm92YWxTdGF0dXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlJZDogeC5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwYW5kYWJsZTogIXRoaXMuZG9jdW1lbnRUeXBlcy5pbmNsdWRlcyh4LnR5cGUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbFR5cGU6ICF0aGlzLmRvY3VtZW50VHlwZXMuaW5jbHVkZXMoeC50eXBlKSA/IHgudHlwZSA6IGZvbGRlci5sZXZlbFR5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdFByb2Nlc3NEb2N1bWVudEdsb2JhbFNlcnZpY2Uuc2V0Rm9sZGVyQ2hpbGRyZW4oY2hpbGRzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgaWYgKHJlc3VsdD8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0RGF0YSA9IHJlc3VsdFswXTtcbiAgICAgICAgICAgICAgICBpZiAoaXNBbmNob3JEb2N1bWVudCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRvY3VtZW50SWQgPSByZXN1bHREYXRhLmlkO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmdldEFuY2hvckRvY3VtZW50KHJlc3VsdERhdGEuaWQpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFyc2VMaW5rVXJsKHRoaXMuZ2V0TGlua1VSTChyZXN1bHREYXRhKSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRQcm90b2NvbCA9IFByb3RvY29sVHlwZU5hbWUub3RoZXI7XG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5hZHZpc29yeVRpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkdmlzb3J5VGl0bGUgPSByZXN1bHREYXRhLml0ZW1OYW1lO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQXJlYVZhbHVlcygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXRBbmNob3JEb2N1bWVudChkb2N1bWVudElkOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5saW5rU2VydmljZVxuICAgICAgICAgICAgLmdldEFuY2hvckRvY3VtZW50TGlzdChkb2N1bWVudElkKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlcykgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hbmNob3JEb2N1bWVudHMgPSByZXM7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0QW5jaG9yRG9jdW1lbnQodGhpcy5hbmNob3JEb2N1bWVudHMpO1xuICAgICAgICAgICAgICAgICAgICAvL3RoaXMuZG9jdW1lbnRBbmNob3JzID0gdGhpcy5hbmNob3JzO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYW5jaG9yRG9jdW1lbnRzID0gW107XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0QW5jaG9yRG9jdW1lbnQodGhpcy5hbmNob3JEb2N1bWVudHMpO1xuICAgICAgICAgICAgICAgICAgICAvL3RoaXMuZG9jdW1lbnRBbmNob3JzID0gdGhpcy5hbmNob3JzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHNldEFuY2hvckRvY3VtZW50KGFuY2hvckRvY3VtZW50OiBRTVNDS0VkaXRvckxpbmtBbmNob3JEb2N1bWVudFtdKSB7XG4gICAgICAgIHRoaXMuaW5pdEFuY2hvcigpO1xuICAgICAgICBsZXQgaWQgPSAzO1xuICAgICAgICBpZiAoYW5jaG9yRG9jdW1lbnQpIHtcbiAgICAgICAgICAgIGFuY2hvckRvY3VtZW50LmZvckVhY2goKGUpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgICAgICAgICBkaXYuaW5uZXJIVE1MID0gZS5yaWNoVGV4dDtcbiAgICAgICAgICAgICAgICBjb25zdCBkb21Db250ZW50ID0gZGl2O1xuICAgICAgICAgICAgICAgIGNvbnN0IGFUYWdzID0gZG9tQ29udGVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYScpO1xuICAgICAgICAgICAgICAgIGlmIChhVGFncykge1xuICAgICAgICAgICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6cHJlZmVyLWZvci1vZlxuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFUYWdzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0YWcgPSBhVGFnc1tpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0YWcubmFtZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5hbmNob3JzLmZpbmRJbmRleCgoeCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geC5hbmNob3JWYWx1ZSA9PT0gdGFnLm5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4IDwgMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFuY2hvcnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3VmFsdWU6IHRhZy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5jaG9yVmFsdWU6IHRhZy5uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8vIHRoaXMuYW5jaG9ycy5wdXNoKHtcbiAgICAgICAgLy8gICAgIHZhbHVlOiAxLFxuICAgICAgICAvLyAgICAgdmlld1ZhbHVlOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuQU5DSE9SX0FUVEFDSE1FTlQsXG4gICAgICAgIC8vICAgICBhbmNob3JWYWx1ZTogTGlua0FuY2hvci5BdHRhY2htZW50XG4gICAgICAgIC8vIH0pO1xuICAgICAgICAvLyB0aGlzLmFuY2hvcnMucHVzaCh7XG4gICAgICAgIC8vICAgICB2YWx1ZTogMixcbiAgICAgICAgLy8gICAgIHZpZXdWYWx1ZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLkFOQ0hPUl9SRUxBVEVEX0RPQ1VNRU5ULFxuICAgICAgICAvLyAgICAgYW5jaG9yVmFsdWU6IExpbmtBbmNob3IuUmVsYXRlZFxuICAgICAgICAvLyB9KTtcbiAgICB9XG5cblxuICAgIGF0dGFjaG1lbnQoKSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSBuZXcgUU1TQ0tFZGl0b3JQYXJhbXRlcigpO1xuICAgICAgICBkYXRhLm1vZHVsZSA9IHRoaXMuaW1hZ2VNYXBEYXRhLm1vZHVsZTtcbiAgICAgICAgZGF0YS5lbnRpdHlJZCA9IHRoaXMuaW1hZ2VNYXBEYXRhLmVudGl0eUlkO1xuICAgICAgICBjb25zdCBkaWFsb2dUZW1wbGF0ZSA9IHRoaXMuZGlhbG9nLm9wZW4oTGlua0F0dGFjaG1lbnRDb21wb25lbnQsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnNjUwcHgnLFxuICAgICAgICAgICAgaGVpZ2h0OiAnNjUwcHgnLFxuICAgICAgICAgICAgZGF0YSxcbiAgICAgICAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgICAgZGlhbG9nVGVtcGxhdGVcbiAgICAgICAgICAgIC5hZnRlckNsb3NlZCgpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3ViY3JpYmUpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcnNlTGlua1VybChyZXN1bHQudXJsKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFByb3RvY29sID0gUHJvdG9jb2xUeXBlTmFtZS5vdGhlcjtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmFkdmlzb3J5VGl0bGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWR2aXNvcnlUaXRsZSA9IHJlc3VsdC50aXRsZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUFyZWFWYWx1ZXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzYXZlKCkge1xuICAgICAgICBjb25zdCBkYXRhID0gdGhpcy5teUltYWdlTWFwLmdldE1hcEpzb24oKTtcbiAgICAgICAgZGF0YS5pbWFnZUhlaWdodCA9IHRoaXMubmF0dXJhbEltYWdlSGVpZ2h0O1xuICAgICAgICBkYXRhLmltYWdlV2lkdGggPSB0aGlzLm5hdHVyYWxJbWFnZVdpZHRoO1xuICAgICAgICBjb25zdCBzY3JvbGxUb3AgPSB0aGlzLmNvbW1vblNlcnZpY2UuZ2V0U2Nyb2xsVG9wQ2tlZGl0b3IodGhpcy5ja0VkaXRvcik7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKGRhdGEpO1xuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2Uuc2V0U2Nyb2xsVG9wRWRpdG9yQ29udGFpbmVyKHRoaXMuY2tFZGl0b3IsIHNjcm9sbFRvcCk7XG4gICAgfVxuXG4gICAgY2FuY2VsKCkge1xuICAgICAgICAvL3RoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XG4gICAgICAgIHRoaXMub25DbG9zZURpYWxvZygpO1xuICAgIH1cblxuICAgIGdldFBhcmVudElkKGl0ZW0pIHtcbiAgICAgICAgaWYgKCF0aGlzLmRvY3VtZW50VHlwZXMuaW5jbHVkZXMoaXRlbS50eXBlKSkge1xuICAgICAgICAgICAgcmV0dXJuICFpdGVtLnBhcmVudEhhbmRib29rSWQgPyAnJyA6IGl0ZW0ucGFyZW50SGFuZGJvb2tJZC50b1N0cmluZygpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAhaXRlbS5wYXJlbnRGb2xkZXJJZCA/ICcnIDogaXRlbS5wYXJlbnRGb2xkZXJJZC50b1N0cmluZygpO1xuICAgIH1cblxuICAgIGdldExpbmtVUkwoZGF0YTogYW55KSB7XG4gICAgICAgIGxldCB1cmwgPSAnJztcbiAgICAgICAgc3dpdGNoIChkYXRhPy5pdGVtVHlwZSkge1xuICAgICAgICAgICAgY2FzZSBEYXRhVHlwZS5kb2N1bWVudDpcbiAgICAgICAgICAgICAgICB1cmwgPSBgL2RvY3VtZW50LyR7ZGF0YS5pZH1gO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBEYXRhVHlwZS5wcm9jZXNzOlxuICAgICAgICAgICAgICAgIHVybCA9IGAvcHJvY2Vzcy1kZXRhaWwvJHtkYXRhLmRpc3BsYXlJZH1gO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBEYXRhVHlwZS5hcmVhOlxuICAgICAgICAgICAgICAgIHVybCA9IGAvYXJlYS9kZXRhaWwvJHtkYXRhLmlkfWA7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIERhdGFUeXBlLmZvbGRlcjpcbiAgICAgICAgICAgICAgICB1cmwgPSBgL2ZvbGRlci8ke2RhdGEuaWR9YDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgRGF0YVR5cGUucHJvY2Vzc0ludGVyY29ubmVjdGVkOlxuICAgICAgICAgICAgICAgIHVybCA9IGAvcHJvY2Vzcy1pbnRlcmNvbm5lY3RlZC8ke2RhdGEuZGlzcGxheUlkfWBcblxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB1cmw7XG4gICAgfVxufVxuIl19
|
701
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicW1zLWNrZWRpdG9yLWltYWdlbWFwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Ftcy1hbmd1bGFyL3NyYy9saWIvcW1zLWNrZWRpdG9yLWNvbXBvbmVudHMvY29tcG9uZW50cy9xbXMtY2tlZGl0b3ItaW1hZ2VtYXAvcW1zLWNrZWRpdG9yLWltYWdlbWFwLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFvQixpQkFBaUIsRUFBRSxTQUFTLEVBQWMsTUFBTSxFQUFVLFNBQVMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hJLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUN6RixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDN0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDekUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNuRSxPQUFP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VUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0NoZWNrZWQsIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEluamVjdCwgT25Jbml0LCBWaWV3Q2hpbGQsIFJlbmRlcmVyMiwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nUmVmLCBNQVRfRElBTE9HX0RBVEEgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTGlicmFyeVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy90cmFuc2xhdGlvbi1yZWdpc3RyeS5zZXJ2aWNlJztcbmltcG9ydCB7IFFNU0NLRWRpdG9yQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3Ftcy1ja2VkaXRvci1iYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBRTVNDS0VkaXRvckltYWdlTWFwIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3Ftcy1ja2VkaXRvci1pbWFnZW1hcC5tb2RlbCc7XG5pbXBvcnQgeyBMaW5rVHlwZSB9IGZyb20gJy4uLy4uL2NvbW1vbi9lbnVtcy9saW5rLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBQcm90b2NvbFR5cGVOYW1lIH0gZnJvbSAnLi4vLi4vY29tbW9uL2VudW1zL3Byb3RvY29sLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBUYXJnZXRUeXBlTmFtZSB9IGZyb20gJy4uLy4uL2NvbW1vbi9lbnVtcy90YXJnZXQtdHlwZS5lbnVtJztcbmltcG9ydCB7IEltYWdlTW9kZU5hbWUgfSBmcm9tICcuLi8uLi9jb21tb24vZW51bXMvaW1hZ2UtbW9kZS5lbnVtJztcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgTWF0SWNvblJlZ2lzdHJ5IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBJY29uU3ZnIH0gZnJvbSAnLi4vLi4vY29tbW9uL2NvbnN0YW50cy9pY29uU3ZnLmNvbnN0YW50cyc7XG5pbXBvcnQgeyBRTVNDS0VkaXRvckltYWdlTWFwTGliIH0gZnJvbSAnLi9xbXMtY2tlZGl0b3ItaW1hZ2VtYXAubGliJztcbmltcG9ydCBRTVNDS0VkaXRvclBhcmFtdGVyIGZyb20gJy4uLy4uL2NvbW1vbi9tb2RlbHMvcW1zLWNrZWRpdG9yLXBhcmFtZXRlci5tb2RlbCc7XG5pbXBvcnQgeyBRTVNDS0VkaXRvckxpbmtTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcW1zLWNrZWRpdG9yLWxpbmsuc2VydmljZSc7XG5pbXBvcnQgeyBMaW5rQXR0YWNobWVudENvbXBvbmVudCB9IGZyb20gJy4uL3Ftcy1ja2VkaXRvci1saW5rL2F0dGFjaG1lbnRzL2xpbmstYXR0YWNobWVudC5jb21wb25lbnQnO1xuaW1wb3J0IHsgUU1TQ0tFZGl0b3JMaW5rQW5jaG9yRG9jdW1lbnQgfSBmcm9tICcuLi8uLi9jb21tb24vbW9kZWxzL3Ftcy1ja2VkaXRvci1saW5rLWFuY2hvci1kb2N1bWVudC5tb2RlbCc7XG5pbXBvcnQgeyBMaW5rQW5jaG9yIH0gZnJvbSAnLi4vLi4vY29tbW9uL2VudW1zL2xpbmstYW5jaG9yLmVudW0nO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGludmFsaWRVUkxWYWxpZGF0b3IgfSBmcm9tICcuL3Ftcy1ja2VkaXRvci1pbWFnZW1hcC52YWxpZGF0b3InO1xuaW1wb3J0IHsgUU1TQ0tFZGl0b3JDb21tb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcW1zLWNrZWRpdG9yLWNvbW1vbi5zZXJ2aWNlcyc7XG5pbXBvcnQgeyBEYXRhVHlwZSB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9lbnVtL2RhdGEtdHlwZS5lbnVtJztcbmltcG9ydCB7IFRyZWVDb25maWcgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL3RyZWUnO1xuaW1wb3J0IHsgUU1TU2VsZWN0UHJvY2Vzc0RvY3VtZW50R2xvYmFsU2VydmljZSwgU2VsZWN0UHJvY2Vzc0RvY3VtZW50UG9wdXBDb21wb25lbnQsIFNlbGVjdFByb2Nlc3NEb2N1bWVudFBvcHVwRGF0YSB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvc2VsZWN0LXByb2Nlc3MtZG9jdW1lbnQnO1xuaW1wb3J0IHsgTW9kdWxlVHlwZSB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9lbnVtL21vZHVsZS10eXBlLmVudW0nO1xuaW1wb3J0IHsgUU1TQ0tFZGl0b3JUcmVlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Ftcy1ja2VkaXRvci10cmVlLnNlcnZpY2UnO1xuaW1wb3J0IGd1aWRIZWxwZXIgZnJvbSAnLi4vLi4vY29tbW9uL2hlbHBlci9ndWlkSGVscGVyJztcbmltcG9ydCB7IERvY3VtZW50Tm9kZVR5cGUgfSBmcm9tICcuLi8uLi8uLi9jb21tb24vZW51bS9kb2N1bWVudC1ub2RlLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBQcm9jZXNzQ2xhc3NpZmljYXRpb24gfSBmcm9tICcuLi8uLi8uLi9jb21tb24vZW51bS9wcm9jZXNzLWNsYXNzaWZpY2F0aW9uLmVudW0nO1xuaW1wb3J0IHsgR2V0U2VhcmNoUHJvY2Vzc0RvY3VtZW50T3B0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dldC1zZWFyY2gtcHJvY2Vzcy1kb2N1bWVudC1vcHRpb24nO1xuXG5pbnRlcmZhY2UgSUxpbmtUeXBlIHtcbiAgICBpZDogbnVtYmVyO1xuICAgIG5hbWU6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIElUYXJnZXQge1xuICAgIGlkOiBUYXJnZXRUeXBlTmFtZTtcbiAgICBuYW1lOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBJUHJvdG9jb2wge1xuICAgIGlkOiBQcm90b2NvbFR5cGVOYW1lO1xuICAgIG5hbWU6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIElNb2RlIHtcbiAgICBpZDogc3RyaW5nO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBpY29uOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBJWm9vbVR5cGUge1xuICAgIGlkOiBudW1iZXI7XG4gICAgbmFtZTogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgSUFuY2hvciB7XG4gICAgdmFsdWU6IG51bWJlcjtcbiAgICB2aWV3VmFsdWU6IHN0cmluZztcbiAgICBhbmNob3JWYWx1ZTogc3RyaW5nO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FwcC1xbXNjay1pbWFnZW1hcCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Ftcy1ja2VkaXRvci1pbWFnZW1hcC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vcW1zLWNrZWRpdG9yLWltYWdlbWFwLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgUU1TQ0tFZGl0b3JJbWFnZU1hcENvbXBvbmVudCBleHRlbmRzIFFNU0NLRWRpdG9yQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3Q2hlY2tlZCB7XG4gICAgQElucHV0KCkgY2tFZGl0b3I6IGFueTtcbiAgICBMQU5HOiBhbnk7XG4gICAgaW1hZ2VNYXBGb3JtR3JvdXA6IEZvcm1Hcm91cDtcbiAgICBpbWFnZU1hcERhdGE6IFFNU0NLRWRpdG9ySW1hZ2VNYXA7XG4gICAgbGlua1R5cGVzOiBJTGlua1R5cGVbXSA9IFtdO1xuICAgIHRhcmdldHM6IElUYXJnZXRbXSA9IFtdO1xuICAgIHByb3RvY29sczogSVByb3RvY29sW10gPSBbXTtcbiAgICBtb2RlczogSU1vZGVbXSA9IFtdO1xuICAgIHpvb21UeXBlczogSVpvb21UeXBlW10gPSBbXTtcbiAgICB1cmwgPSAnJztcbiAgICBwcm9jZXNzZWRVcmwgPSAnJztcbiAgICBzZWxlY3RlZE1vZGU6IEltYWdlTW9kZU5hbWUgPSBJbWFnZU1vZGVOYW1lLlJlY3RhbmdsZTtcbiAgICBzZWxlY3RlZExpbmtUeXBlOiBMaW5rVHlwZSA9IExpbmtUeXBlLnVybDtcbiAgICBzZWxlY3RlZFRhcmdldDogVGFyZ2V0VHlwZU5hbWUgPSBUYXJnZXRUeXBlTmFtZS5uZXc7XG4gICAgc2VsZWN0ZWRQcm90b2NvbDogUHJvdG9jb2xUeXBlTmFtZSB8IHN0cmluZyA9IFByb3RvY29sVHlwZU5hbWUuaHR0cDtcbiAgICBzZWxlY3RlZFpvb20gPSAxLjA7XG5cbiAgICBwcm90b2NvbFJlZ2V4OiBSZWdFeHAgPSAvXihodHRwfGh0dHBzfGZ0cHxuZXdzKTpcXC9cXC8oPz0uKS9pO1xuICAgIGphdmFzY3JpcHRMaW5rUmVnZXg6IFJlZ0V4cCA9IC9qYXZhc2NyaXB0XFw6L2k7XG5cbiAgICBkb2N1bWVudElkID0gMDtcbiAgICAvL2FuY2hvclRpdGxlID0gJyc7XG4gICAgYW5jaG9yVGV4dCA9ICcnO1xuICAgIC8vYW5jaG9yQnlOYW1lID0gJyc7XG4gICAgYWR2aXNvcnlUaXRsZSA9ICcnO1xuXG4gICAgaXNJbWFnZUxvYWRpbmcgPSBmYWxzZTtcbiAgICBpc1VybFByb2Nlc3NpbmcgPSBmYWxzZTtcbiAgICBuYXR1cmFsSW1hZ2VXaWR0aCA9IDA7XG4gICAgbmF0dXJhbEltYWdlSGVpZ2h0ID0gMDtcbiAgICBjdXJyZW50QXJlYUlkID0gLTE7XG4gICAgbXlJbWFnZU1hcDogUU1TQ0tFZGl0b3JJbWFnZU1hcExpYjtcbiAgICBzaG93SW1hZ2VNYXBJbmZvcm1hdGlvbiA9IGZhbHNlO1xuXG4gICAgYW5jaG9yRG9jdW1lbnRzOiBRTVNDS0VkaXRvckxpbmtBbmNob3JEb2N1bWVudFtdID0gW107XG4gICAgYW5jaG9yczogSUFuY2hvcltdO1xuICAgIGVkaXRvckFuY2hvcnM6IElBbmNob3JbXTtcbiAgICAvL2RvY3VtZW50QW5jaG9yczogSUFuY2hvcltdO1xuXG4gICAgaW1hZ2VMaXN0ZW5lcnM6IGFueVtdID0gW107XG5cbiAgICBAVmlld0NoaWxkKCdteUltYWdlJylcbiAgICBteUltYWdlUmVmOiBFbGVtZW50UmVmPEhUTUxJbWFnZUVsZW1lbnQ+O1xuXG4gICAgQFZpZXdDaGlsZCgnbXlTdGF0dXMnKVxuICAgIG15U3RhdHVzUmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICAgIHByb2Nlc3NDb25maWc6IFRyZWVDb25maWc7XG4gICAgZG9jdW1lbnRDb25maWc6IFRyZWVDb25maWc7XG4gICAgZG9jdW1lbnRUeXBlcyA9IFtcbiAgICAgICAgRG9jdW1lbnROb2RlVHlwZS5Eb2N1bWVudCxcbiAgICAgICAgRG9jdW1lbnROb2RlVHlwZS5GaWxlRG9jdW1lbnQsXG4gICAgICAgIERvY3VtZW50Tm9kZVR5cGUuTGlua0RvY3VtZW50LFxuICAgICAgICBEb2N1bWVudE5vZGVUeXBlLlNob3J0Y3V0RG9jdW1lbnRcbiAgICBdO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nLFxuICAgICAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlTGlicmFyeVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgbGlua1NlcnZpY2U6IFFNU0NLRWRpdG9yTGlua1NlcnZpY2UsXG4gICAgICAgIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxRTVNDS0VkaXRvckltYWdlTWFwQ29tcG9uZW50PixcbiAgICAgICAgcHJpdmF0ZSBjb21tb25TZXJ2aWNlOiBRTVNDS0VkaXRvckNvbW1vblNlcnZpY2UsXG4gICAgICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YTogUU1TQ0tFZGl0b3JJbWFnZU1hcCxcbiAgICAgICAgaWNvblJlZ2lzdHJ5OiBNYXRJY29uUmVnaXN0cnksXG4gICAgICAgIHNhbml0aXplcjogRG9tU2FuaXRpemVyLFxuICAgICAgICBwcml2YXRlIHRyZWVTZXJ2aWNlOiBRTVNDS0VkaXRvclRyZWVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHNlbGVjdFByb2Nlc3NEb2N1bWVudEdsb2JhbFNlcnZpY2U6IFFNU1NlbGVjdFByb2Nlc3NEb2N1bWVudEdsb2JhbFNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5pbWFnZU1hcERhdGEgPSBkYXRhO1xuICAgICAgICB0aGlzLm5hdHVyYWxJbWFnZUhlaWdodCA9IHRoaXMuaW1hZ2VNYXBEYXRhLmltYWdlSGVpZ2h0O1xuICAgICAgICB0aGlzLm5hdHVyYWxJbWFnZVdpZHRoID0gdGhpcy5pbWFnZU1hcERhdGEuaW1hZ2VXaWR0aDtcbiAgICAgICAgdGhpcy5pbml0Rm9ybUNvbnRyb2woKTtcbiAgICAgICAgdGhpcy5pbml0U3ZnSWNvbnMoaWNvblJlZ2lzdHJ5LCBzYW5pdGl6ZXIpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkVGFyZ2V0ID0gZGF0YS5kZWZhdWx0VGFyZ2V0TmV3V2luZG93ID8gVGFyZ2V0VHlwZU5hbWUubmV3IDogVGFyZ2V0VHlwZU5hbWUuc2FtZTtcbiAgICB9XG5cblxuICAgIGluaXREZWZhdWx0VmFsdWVzKCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkTGlua1R5cGUgPSBMaW5rVHlwZS51cmw7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUYXJnZXQgPSB0aGlzLmRhdGEuZGVmYXVsdFRhcmdldE5ld1dpbmRvdyA/IFRhcmdldFR5cGVOYW1lLm5ldyA6IFRhcmdldFR5cGVOYW1lLnNhbWU7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRQcm90b2NvbCA9IFByb3RvY29sVHlwZU5hbWUuaHR0cDtcbiAgICAgICAgdGhpcy51cmwgPSAnJztcbiAgICAgICAgdGhpcy5wcm9jZXNzZWRVcmwgPSAnJztcbiAgICAgICAgdGhpcy5hZHZpc29yeVRpdGxlID0gJyc7XG4gICAgICAgIHRoaXMuYW5jaG9yVGV4dCA9ICcnO1xuICAgIH1cblxuICAgIGluaXRTdmdJY29ucyhpY29uUmVnaXN0cnk6IE1hdEljb25SZWdpc3RyeSwgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIpIHtcbiAgICAgICAgaWNvblJlZ2lzdHJ5LmFkZFN2Z0ljb25MaXRlcmFsKCd2ZWN0b3ItcG9pbnRlcicsIHNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChJY29uU3ZnLlZFQ1RPUl9QT0lOVEVSKSk7XG4gICAgICAgIGljb25SZWdpc3RyeS5hZGRTdmdJY29uTGl0ZXJhbCgndmVjdG9yLWNpcmNsZScsIHNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChJY29uU3ZnLlZFQ1RPUl9DSVJDTEUpKTtcbiAgICAgICAgaWNvblJlZ2lzdHJ5LmFkZFN2Z0ljb25MaXRlcmFsKCd2ZWN0b3ItcmVjdGFuZ2xlJywgc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKEljb25TdmcuVkVDVE9SX1JFQ1RBTkdMRSkpO1xuICAgICAgICBpY29uUmVnaXN0cnkuYWRkU3ZnSWNvbkxpdGVyYWwoJ3ZlY3Rvci1wb2x5Z29uJywgc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKEljb25TdmcuVkVDVE9SX1BPTFlHT04pKTtcbiAgICAgICAgaWNvblJlZ2lzdHJ5LmFkZFN2Z0ljb25MaXRlcmFsKCd2ZWN0b3ItcmVtb3ZlJywgc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKEljb25TdmcuVkVDVE9SX1JFTU9WRSkpO1xuICAgIH1cblxuICAgIGluaXRGb3JtQ29udHJvbCgpIHtcbiAgICAgICAgY29uc3QgdmFsaWF0aW9uQ29udHJvbHMgPSB7XG4gICAgICAgICAgICB0YXJnZXRMaXN0OiBuZXcgRm9ybUNvbnRyb2woKSxcbiAgICAgICAgICAgIHByb3RvY29sTGlzdDogbmV3IEZvcm1Db250cm9sKCksXG4gICAgICAgICAgICBhbmNob3JUZXh0TGlzdDogbmV3IEZvcm1Db250cm9sKCksXG4gICAgICAgICAgICBtb2RlTGlzdDogbmV3IEZvcm1Db250cm9sKCksXG4gICAgICAgICAgICB6b29tTGlzdDogbmV3IEZvcm1Db250cm9sKCksXG4gICAgICAgICAgICBsaW5rVHlwZUxpc3Q6IG5ldyBGb3JtQ29udHJvbCgpXG4gICAgICAgIH07XG4gICAgICAgIGlmICh0aGlzLmltYWdlTWFwRGF0YS5saW5rSmF2YVNjcmlwdExpbmtzQWxsb3dlZCA9PSB0cnVlKSB7XG4gICAgICAgICAgICB2YWxpYXRpb25Db250cm9sc1sndXJsJ10gPSBuZXcgRm9ybUNvbnRyb2woJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2YWxpYXRpb25Db250cm9sc1sndXJsJ10gPSBuZXcgRm9ybUNvbnRyb2woJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBpbnZhbGlkVVJMVmFsaWRhdG9yKHRoaXMuamF2YXNjcmlwdExpbmtSZWdleCldKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmltYWdlTWFwRm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh2YWxpYXRpb25Db250cm9scyk7XG4gICAgfVxuXG4gICAgaW5pdExpbmtUeXBlKCkge1xuICAgICAgICBpZiAodGhpcy5saW5rVHlwZXMpIHtcbiAgICAgICAgICAgIHRoaXMubGlua1R5cGVzLnB1c2goeyBpZDogTGlua1R5cGUudXJsLCBuYW1lOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuTElOS19VUkwgfSk7XG4gICAgICAgICAgICB0aGlzLmxpbmtUeXBlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBpZDogTGlua1R5cGUuYW5jaG9yVGV4dCxcbiAgICAgICAgICAgICAgICBuYW1lOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuTElOS19BTkNIT1JfSU5fVEVYVFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpbml0VGFyZ2V0KCkge1xuICAgICAgICBpZiAodGhpcy50YXJnZXRzKSB7XG4gICAgICAgICAgICB0aGlzLnRhcmdldHMucHVzaCh7IGlkOiBUYXJnZXRUeXBlTmFtZS5uZXcsIG5hbWU6IHRoaXMuTEFORy5RTVNDS0VESVRPUi5UQVJUR0VUX05FVyB9KTtcbiAgICAgICAgICAgIHRoaXMudGFyZ2V0cy5wdXNoKHsgaWQ6IFRhcmdldFR5cGVOYW1lLnNhbWUsIG5hbWU6IHRoaXMuTEFORy5RTVNDS0VESVRPUi5UQVJHRVRfU0FNRSB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGluaXRQcm90b2NvbCgpIHtcbiAgICAgICAgaWYgKHRoaXMucHJvdG9jb2xzKSB7XG4gICAgICAgICAgICB0aGlzLnByb3RvY29scy5wdXNoKHsgaWQ6IFByb3RvY29sVHlwZU5hbWUuaHR0cCwgbmFtZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLlBST1RPQ09MX0hUVFAgfSk7XG4gICAgICAgICAgICB0aGlzLnByb3RvY29scy5wdXNoKHsgaWQ6IFByb3RvY29sVHlwZU5hbWUuaHR0cHMsIG5hbWU6IHRoaXMuTEFORy5RTVNDS0VESVRPUi5QUk9UT0NPTF9IVFRQUyB9KTtcbiAgICAgICAgICAgIHRoaXMucHJvdG9jb2xzLnB1c2goeyBpZDogUHJvdG9jb2xUeXBlTmFtZS5mdHAsIG5hbWU6IHRoaXMuTEFORy5RTVNDS0VESVRPUi5QUk9UT0NPTF9GVFAgfSk7XG4gICAgICAgICAgICB0aGlzLnByb3RvY29scy5wdXNoKHsgaWQ6IFByb3RvY29sVHlwZU5hbWUubmV3cywgbmFtZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLlBST1RPQ09MX05FVyB9KTtcbiAgICAgICAgICAgIHRoaXMucHJvdG9jb2xzLnB1c2goeyBpZDogUHJvdG9jb2xUeXBlTmFtZS5vdGhlciwgbmFtZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLlBST1RPQ09MX09USEVSIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaW5pdE1vZGVzKCkge1xuICAgICAgICBpZiAodGhpcy5tb2Rlcykge1xuICAgICAgICAgICAgdGhpcy5tb2Rlcy5wdXNoKHsgaWQ6IEltYWdlTW9kZU5hbWUuUG9pbnRlciwgbmFtZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLklNQUdFX01PREVfUE9JTlRFUiwgaWNvbjogXCJ2ZWN0b3ItcG9pbnRlclwiIH0pO1xuICAgICAgICAgICAgdGhpcy5tb2Rlcy5wdXNoKHsgaWQ6IEltYWdlTW9kZU5hbWUuUmVjdGFuZ2xlLCBuYW1lOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuSU1BR0VfTU9ERV9SRUNUQU5HTEUsIGljb246IFwidmVjdG9yLXJlY3RhbmdsZVwiIH0pO1xuICAgICAgICAgICAgdGhpcy5tb2Rlcy5wdXNoKHsgaWQ6IEltYWdlTW9kZU5hbWUuQ2lyY2xlLCBuYW1lOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuSU1BR0VfTU9ERV9DSVJDTEUsIGljb246IFwidmVjdG9yLWNpcmNsZVwiIH0pO1xuICAgICAgICAgICAgdGhpcy5tb2Rlcy5wdXNoKHsgaWQ6IEltYWdlTW9kZU5hbWUuUG9seWdvbiwgbmFtZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLklNQUdFX01PREVfUE9MWUdPTiwgaWNvbjogXCJ2ZWN0b3ItcG9seWdvblwiIH0pO1xuICAgICAgICAgICAgdGhpcy5tb2Rlcy5wdXNoKHsgaWQ6IEltYWdlTW9kZU5hbWUuUmVtb3ZlLCBuYW1lOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuSU1BR0VfTU9ERV9SRU1PVkUsIGljb246IFwidmVjdG9yLXJlbW92ZVwiIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaW5pdFpvb21UeXBlcygpIHtcbiAgICAgICAgaWYgKHRoaXMuem9vbVR5cGVzKSB7XG4gICAgICAgICAgICB0aGlzLnpvb21UeXBlcy5wdXNoKHsgaWQ6IDAuMjUsIG5hbWU6IFwiMjUlXCIgfSk7XG4gICAgICAgICAgICB0aGlzLnpvb21UeXBlcy5wdXNoKHsgaWQ6IDAuNSwgbmFtZTogXCI1MCVcIiB9KTtcbiAgICAgICAgICAgIHRoaXMuem9vbVR5cGVzLnB1c2goeyBpZDogMS4wLCBuYW1lOiBcIjEwMCVcIiB9KTtcbiAgICAgICAgICAgIHRoaXMuem9vbVR5cGVzLnB1c2goeyBpZDogMi4wLCBuYW1lOiBcIjIwMCVcIiB9KTtcbiAgICAgICAgICAgIHRoaXMuem9vbVR5cGVzLnB1c2goeyBpZDogMy4wLCBuYW1lOiBcIjMwMCVcIiB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGluaXRBbmNob3IoKSB7XG4gICAgICAgIHRoaXMuYW5jaG9ycyA9IFtdO1xuICAgICAgICB0aGlzLmFuY2hvcnMgPSBbeyB2YWx1ZTogMCwgdmlld1ZhbHVlOiAnJywgYW5jaG9yVmFsdWU6IExpbmtBbmNob3IuQmxhbmsgfV07XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMudHJhbnNsYXRlLmdldExhbmd1YWdlU3ViamVjdCQucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3ViY3JpYmUpKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xuICAgICAgICAgICAgaWYgKHJlcykge1xuICAgICAgICAgICAgICAgIHRoaXMuTEFORyA9IHRoaXMudHJhbnNsYXRlLmdldE9iamVjdExhbmcocmVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuaW5pdExpbmtUeXBlKCk7XG4gICAgICAgIHRoaXMuaW5pdFRhcmdldCgpO1xuICAgICAgICB0aGlzLmluaXRQcm90b2NvbCgpO1xuICAgICAgICB0aGlzLmluaXRNb2RlcygpO1xuICAgICAgICB0aGlzLmluaXRab29tVHlwZXMoKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICAgICAgaWYgKHRoaXMuaW1hZ2VMaXN0ZW5lcnMgJiYgdGhpcy5pbWFnZUxpc3RlbmVycy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmltYWdlTGlzdGVuZXJzLmZvckVhY2gobGlzdGVuZXIgPT4ge1xuICAgICAgICAgICAgICAgIGxpc3RlbmVyKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uSW1hZ2VMb2FkKCkge1xuICAgICAgICB0aGlzLm5hdHVyYWxJbWFnZUhlaWdodCA9IHRoaXMubmF0dXJhbEltYWdlSGVpZ2h0ICE9IDAgPyB0aGlzLm5hdHVyYWxJbWFnZUhlaWdodCA6IHRoaXMubXlJbWFnZVJlZi5uYXRpdmVFbGVtZW50Lm5hdHVyYWxIZWlnaHQ7XG4gICAgICAgIHRoaXMubmF0dXJhbEltYWdlV2lkdGggPSB0aGlzLm5hdHVyYWxJbWFnZVdpZHRoICE9IDAgPyB0aGlzLm5hdHVyYWxJbWFnZVdpZHRoIDogdGhpcy5teUltYWdlUmVmLm5hdGl2ZUVsZW1lbnQubmF0dXJhbFdpZHRoO1xuXG4gICAgICAgIHRoaXMuc2V0SW1hZ2VTaXplKCk7XG5cbiAgICAgICAgdGhpcy5teUltYWdlTWFwLnNldE1hcEpzb24oe1xuICAgICAgICAgICAgbmFtZTogdGhpcy5pbWFnZU1hcERhdGEubmFtZSxcbiAgICAgICAgICAgIGFyZWFzOiB0aGlzLmltYWdlTWFwRGF0YS5hcmVhc1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAodGhpcy5pbWFnZU1hcERhdGEuYXJlYXMgJiYgdGhpcy5pbWFnZU1hcERhdGEuYXJlYXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5teUltYWdlTWFwLmJsdXJBcmVhKHRoaXMubXlJbWFnZU1hcC5jdXJyZW50aWQpO1xuICAgICAgICAgICAgdGhpcy5teUltYWdlTWFwLmN1cnJlbnRpZCA9IDA7XG4gICAgICAgICAgICB0aGlzLm15SW1hZ2VNYXAuc2VsZWN0ZWRJZCA9IDA7XG4gICAgICAgICAgICB0aGlzLm9uU2VsZWN0QXJlYSh0aGlzLm15SW1hZ2VNYXAuYXJlYXNbMF0pO1xuICAgICAgICAgICAgdGhpcy5teUltYWdlTWFwLmhpZ2hsaWdodEFyZWEoMCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIGlmICh0aGlzLm15SW1hZ2VSZWYpIHtcbiAgICAgICAgICAgIHRoaXMuaXNJbWFnZUxvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5pbWFnZUxpc3RlbmVycy5wdXNoKHRoaXMucmVuZGVyZXIubGlzdGVuKHRoaXMubXlJbWFnZVJlZi5uYXRpdmVFbGVtZW50LCAnbG9hZCcsICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uSW1hZ2VMb2FkKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0ltYWdlTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgfSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQXZvaWQgZHJhZyZkcm9wIG9mIHRoZSBpbWFnZVxuICAgICAgICB0aGlzLm15SW1hZ2VNYXAgPSBuZXcgUU1TQ0tFZGl0b3JJbWFnZU1hcExpYih7XG4gICAgICAgICAgICBjdXN0b21fY2FsbGJhY2tzOiB7XG4gICAgICAgICAgICAgICAgXCJvbkFkZEFyZWFcIjogdGhpcy5vbkFkZEFyZWEuYmluZCh0aGlzKSxcbiAgICAgICAgICAgICAgICAnb25TZWxlY3RBcmVhJzogdGhpcy5vblNlbGVjdEFyZWEuYmluZCh0aGlzKSxcbiAgICAgICAgICAgICAgICAnb25SZW1vdmVBcmVhJzogdGhpcy5vblJlbW92ZUFyZWEuYmluZCh0aGlzKSxcbiAgICAgICAgICAgICAgICAnb25TdGF0dXNNZXNzYWdlJzogdGhpcy5vblN0YXR1c01lc3NhZ2UuYmluZCh0aGlzKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGltYWdlRWxlbWVudDogdGhpcy5teUltYWdlUmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICBib3VuZGluZ19ib3g6IGZhbHNlLFxuICAgICAgICAgICAgQ0xfRFJBV19TSEFQRTogJyNGMDAnLFxuICAgICAgICAgICAgQ0xfTk9STV9TSEFQRTogJyNBQUEnLFxuICAgICAgICAgICAgQ0xfSElHSExJR0hUX1NIQVBFOiAnI0YwMCcsXG4gICAgICAgICAgICBzdHJpbmdzOiB7XG4gICAgICAgICAgICAgICAgXCJQT0xZR09OX0RSQVdcIjogdGhpcy5MQU5HLlFNU0NLRURJVE9SLlBPTFlHT05fRFJBVyxcbiAgICAgICAgICAgICAgICBcIlJFQ1RBTkdMRV9EUkFXXCI6IHRoaXMuTEFORy5RTVNDS0VESVRPUi5SRUNUQU5HTEVfRFJBVyxcbiAgICAgICAgICAgICAgICBcIlNRVUFSRV9EUkFXXCI6IHRoaXMuTEFORy5RTVNDS0VESVRPUi5TUVVBUkVfRFJBVyxcbiAgICAgICAgICAgICAgICAnUkVBRFknOiAnJyxcbiAgICAgICAgICAgICAgICAnUkVDVEFOR0xFX01PVkUnOiAnJyxcbiAgICAgICAgICAgICAgICAnUkVDVEFOR0xFX1JFU0laRV9UT1AnOiAnJyxcbiAgICAgICAgICAgICAgICAnUkVDVEFOR0xFX1JFU0laRV9SSUdIVCc6ICcnLFxuICAgICAgICAgICAgICAgICdSRUNUQU5HTEVfUkVTSVpFX0JPVFRPTSc6ICcnLFxuICAgICAgICAgICAgICAgICdSRUNUQU5HTEVfUkVTSVpFX0xFRlQnOiAnJyxcbiAgICAgICAgICAgICAgICAnU1FVQVJFX01PVkUnOiAnJyxcbiAgICAgICAgICAgICAgICAnU1FVQVJFX1JFU0laRV9UT1AnOiAnJyxcbiAgICAgICAgICAgICAgICAnU1FVQVJFX1JFU0laRV9SSUdIVCc6ICcnLFxuICAgICAgICAgICAgICAgICdTUVVBUkVfUkVTSVpFX0JPVFRPTSc6ICcnLFxuICAgICAgICAgICAgICAgICdTUVVBUkVfUkVTSVpFX0xFRlQnOiAnJyxcbiAgICAgICAgICAgICAgICAnUE9MWUdPTl9NT1ZFJzogJydcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcGFyc2VMaW5rVXJsKHVybDogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IHByb3RvY29sID0gdGhpcy5wcm90b2NvbFJlZ2V4LmV4ZWModXJsKTtcbiAgICAgICAgaWYgKCEhcHJvdG9jb2wpIHtcbiAgICAgICAgICAgIHRoaXMucHJvY2Vzc2VkVXJsID0gdXJsLnN1YnN0cihwcm90b2NvbFswXS5sZW5ndGgpO1xuICAgICAgICAgICAgdGhpcy51cmwgPSB0aGlzLnByb2Nlc3NlZFVybDtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRQcm90b2NvbCA9IHByb3RvY29sWzBdLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5qYXZhc2NyaXB0TGlua1JlZ2V4LnRlc3QodXJsKSAmJiAhdGhpcy5pbWFnZU1hcERhdGEubGlua0phdmFTY3JpcHRMaW5rc0FsbG93ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRQcm90b2NvbCA9IFByb3RvY29sVHlwZU5hbWUuaHR0cDtcbiAgICAgICAgICAgIHRoaXMucHJvY2Vzc2VkVXJsID0gJyc7XG4gICAgICAgICAgICB0aGlzLnVybCA9IHRoaXMucHJvY2Vzc2VkVXJsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5wcm9jZXNzZWRVcmwgPSB1cmw7XG4gICAgICAgICAgICB0aGlzLnVybCA9IHRoaXMucHJvY2Vzc2VkVXJsO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFByb3RvY29sID0gUHJvdG9jb2xUeXBlTmFtZS5vdGhlcjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uU2VsZWN0QXJlYShhcmVhKSB7XG4gICAgICAgIHRoaXMuY3VycmVudEFyZWFJZCA9IGFyZWEuYWlkO1xuICAgICAgICB0aGlzLnNob3dJbWFnZU1hcEluZm9ybWF0aW9uID0gdHJ1ZTtcblxuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZE1vZGUgPT0gSW1hZ2VNb2RlTmFtZS5SZW1vdmUpIHtcbiAgICAgICAgICAgIHRoaXMubXlJbWFnZU1hcC5yZW1vdmVBcmVhKHRoaXMuY3VycmVudEFyZWFJZCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoYXJlYS5haHJlZi5tYXRjaCgvXiMoLiopJC8pKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hbmNob3JUZXh0ID0gYXJlYS5haHJlZi5zbGljZSgxKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkTGlua1R5cGUgPSBMaW5rVHlwZS5hbmNob3JUZXh0O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkTGlua1R5cGUgPSBMaW5rVHlwZS51cmw7XG4gICAgICAgICAgICAgICAgdGhpcy5wYXJzZUxpbmtVcmwoYXJlYS5haHJlZik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkVGFyZ2V0ID0gYXJlYS5hdGFyZ2V0O1xuICAgICAgICAgICAgdGhpcy5hZHZpc29yeVRpdGxlID0gYXJlYS5hYWx0O1xuICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25SZW1vdmVBcmVhKCkge1xuICAgICAgICB0aGlzLmN1cnJlbnRBcmVhSWQgPSAtMTtcbiAgICAgICAgdGhpcy5zaG93SW1hZ2VNYXBJbmZvcm1hdGlvbiA9IGZhbHNlO1xuICAgIH1cblxuICAgIHJlbW92ZU1hcCgpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50QXJlYUlkID0gLTE7XG4gICAgICAgIHRoaXMuc2hvd0ltYWdlTWFwSW5mb3JtYXRpb24gPSBmYWxzZTtcbiAgICAgICAgdGhpcy5teUltYWdlTWFwLnJlbW92ZUFsbEFyZWFzKCk7XG4gICAgfVxuXG4gICAgb25TdGF0dXNNZXNzYWdlKHRleHQ6IHN0cmluZykge1xuICAgICAgICBpZiAodGhpcy5teVN0YXR1c1JlZikge1xuICAgICAgICAgICAgdGhpcy5teVN0YXR1c1JlZi5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9IHRleHQgfHwgJyc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblVybEtleXVwKCkge1xuICAgICAgICB0aGlzLmlzVXJsUHJvY2Vzc2luZyA9IHRydWU7XG4gICAgICAgIGlmICh0aGlzLnVybCAhPSB0aGlzLnByb2Nlc3NlZFVybCkge1xuICAgICAgICAgICAgdGhpcy5wYXJzZUxpbmtVcmwodGhpcy51cmwpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVBcmVhVmFsdWVzKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmlzVXJsUHJvY2Vzc2luZyA9IGZhbHNlO1xuICAgIH1cblxuICAgIG9uVXJsQ2hhbmdlKCkge1xuICAgICAgICBpZiAoIXRoaXMuaXNVcmxQcm9jZXNzaW5nKSB7XG4gICAgICAgICAgICB0aGlzLm9uVXJsS2V5dXAoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uQW5jaG9yVGV4dENoYW5nZSgpIHtcbiAgICAgICAgdGhpcy51cGRhdGVBcmVhVmFsdWVzKCk7XG4gICAgfVxuXG4gICAgb25Qcm90b2NvbENoYW5nZSgpIHtcbiAgICAgICAgdGhpcy51cGRhdGVBcmVhVmFsdWVzKCk7XG4gICAgfVxuXG4gICAgb25UYXJnZXRDaGFuZ2UoKSB7XG4gICAgICAgIHRoaXMudXBkYXRlQXJlYVZhbHVlcygpO1xuICAgIH1cblxuICAgIG9uQWRkQXJlYShpZDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuY3VycmVudEFyZWFJZCA9IGlkO1xuICAgICAgICB0aGlzLnNob3dJbWFnZU1hcEluZm9ybWF0aW9uID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5pbml0RGVmYXVsdFZhbHVlcygpO1xuICAgICAgICB0aGlzLnVwZGF0ZUFyZWFWYWx1ZXMoKTtcbiAgICB9XG5cbiAgICB1cGRhdGVBcmVhVmFsdWVzKCkge1xuICAgICAgICBpZiAodGhpcy5jdXJyZW50QXJlYUlkID4gLTEpIHtcbiAgICAgICAgICAgIHZhciBhaHJlZiA9IHRoaXMuYnVpbGRVcmxXaXRoUHJvdG9jb2woKTtcbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkTGlua1R5cGUgPT0gTGlua1R5cGUuYW5jaG9yVGV4dCkge1xuICAgICAgICAgICAgICAgIHRoaXMubXlJbWFnZU1hcC5hcmVhc1t0aGlzLmN1cnJlbnRBcmVhSWRdLmF0YXJnZXQgPSBUYXJnZXRUeXBlTmFtZS5zYW1lO1xuICAgICAgICAgICAgICAgIHRoaXMubXlJbWFnZU1hcC5hcmVhc1t0aGlzLmN1cnJlbnRBcmVhSWRdLmFhbHQgPSB0aGlzLmFuY2hvclRleHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLm15SW1hZ2VNYXAuYXJlYXNbdGhpcy5jdXJyZW50QXJlYUlkXS5hdGFyZ2V0ID0gdGhpcy5zZWxlY3RlZFRhcmdldCB8fCAodGhpcy5kYXRhLmRlZmF1bHRUYXJnZXROZXdXaW5kb3cgPyBUYXJnZXRUeXBlTmFtZS5uZXcgOiBUYXJnZXRUeXBlTmFtZS5zYW1lKTtcbiAgICAgICAgICAgICAgICB0aGlzLm15SW1hZ2VNYXAuYXJlYXNbdGhpcy5jdXJyZW50QXJlYUlkXS5hYWx0ID0gdGhpcy5hZHZpc29yeVRpdGxlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5teUltYWdlTWFwLmFyZWFzW3RoaXMuY3VycmVudEFyZWFJZF0uYWhyZWYgPSBhaHJlZjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGJ1aWxkVXJsV2l0aFByb3RvY29sKCkge1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZExpbmtUeXBlID09IExpbmtUeXBlLmFuY2hvclRleHQpIHtcbiAgICAgICAgICAgIHJldHVybiAnIycgKyAodGhpcy5hbmNob3JUZXh0IHx8ICcnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoISF0aGlzLnByb2Nlc3NlZFVybCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRQcm90b2NvbCArIHRoaXMucHJvY2Vzc2VkVXJsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBvbkNsb3NlRGlhbG9nKCkge1xuICAgICAgICBjb25zdCBzY3JvbGxUb3AgPSB0aGlzLmNvbW1vblNlcnZpY2UuZ2V0U2Nyb2xsVG9wQ2tlZGl0b3IodGhpcy5ja0VkaXRvcik7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZS5zZXRTY3JvbGxUb3BFZGl0b3JDb250YWluZXIodGhpcy5ja0VkaXRvciwgc2Nyb2xsVG9wKTtcbiAgICB9XG5cbiAgICBvbk1vZGVDaGFuZ2UoZTogYW55KSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRNb2RlID0gZS52YWx1ZTtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRNb2RlID09IEltYWdlTW9kZU5hbWUuUG9pbnRlciB8fCB0aGlzLnNlbGVjdGVkTW9kZSA9PSBJbWFnZU1vZGVOYW1lLlJlbW92ZSkge1xuICAgICAgICAgICAgdGhpcy5teUltYWdlTWFwLmlzX2RyYXdpbmcgPSAwO1xuICAgICAgICAgICAgdGhpcy5teUltYWdlTWFwLm5leHRTaGFwZSA9ICcnO1xuICAgICAgICAgICAgdGhpcy5teUltYWdlUmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUuY3Vyc29yID0gJ2RlZmF1bHQnO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5teUltYWdlTWFwLm5leHRTaGFwZSA9IHRoaXMuc2VsZWN0ZWRNb2RlO1xuICAgICAgICAgICAgdGhpcy5teUltYWdlUmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUuY3Vyc29yID0gJ2Nyb3NzaGFpcic7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblpvb21DaGFuZ2UoKSB7XG4gICAgICAgIHRoaXMuc2V0SW1hZ2VTaXplKCk7XG4gICAgICAgIGlmICh0aGlzLm15SW1hZ2VNYXApIHtcbiAgICAgICAgICAgIHRoaXMubXlJbWFnZU1hcC5zY2FsZUFsbEFyZWFzKHRoaXMuc2VsZWN0ZWRab29tKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uTGlua1R5cGVDaGFuZ2UoKSB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkTGlua1R5cGUgPT09IExpbmtUeXBlLmFuY2hvclRleHQpIHtcbiAgICAgICAgICAgIHRoaXMuZ2V0RWRpdG9yQW5jaG9yKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy51cGRhdGVBcmVhVmFsdWVzKCk7XG4gICAgfVxuXG4gICAgZ2V0RWRpdG9yQW5jaG9yKCkge1xuICAgICAgICB0aGlzLmFuY2hvckRvY3VtZW50cyA9IFtdO1xuICAgICAgICBpZiAodGhpcy5pbWFnZU1hcERhdGEuZWRpdG9yQ29udGVudCkge1xuICAgICAgICAgICAgdGhpcy5hbmNob3JEb2N1bWVudHMucHVzaCh7XG4gICAgICAgICAgICAgICAgaWQ6IDAsXG4gICAgICAgICAgICAgICAgZW50aXR5SWQ6IDAsXG4gICAgICAgICAgICAgICAgZG9jdW1lbnRJZDogMCxcbiAgICAgICAgICAgICAgICBkb2N1bWVudFR5cGVJZDogMCxcbiAgICAgICAgICAgICAgICByaWNoVGV4dDogdGhpcy5pbWFnZU1hcERhdGEuZWRpdG9yQ29udGVudFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRBbmNob3JEb2N1bWVudCh0aGlzLmFuY2hvckRvY3VtZW50cyk7XG4gICAgICAgIHRoaXMuZWRpdG9yQW5jaG9ycyA9IHRoaXMuYW5jaG9ycztcbiAgICB9XG5cbiAgICBzZXRJbWFnZVNpemUoKSB7XG4gICAgICAgIGlmICh0aGlzLm15SW1hZ2VSZWYpIHtcbiAgICAgICAgICAgIGNvbnN0IHdpZHRoID0gdGhpcy5uYXR1cmFsSW1hZ2VXaWR0aCAqIHRoaXMuc2VsZWN0ZWRab29tO1xuICAgICAgICAgICAgY29uc3QgaGVpZ2h0ID0gdGhpcy5uYXR1cmFsSW1hZ2VIZWlnaHQgKiB0aGlzLnNlbGVjdGVkWm9vbTtcbiAgICAgICAgICAgIHRoaXMubXlJbWFnZVJlZi5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZShcIndpZHRoXCIsIGAke3dpZHRofXB4O2ApO1xuICAgICAgICAgICAgdGhpcy5teUltYWdlUmVmLm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKFwiaGVpZ2h0XCIsIGAke2hlaWdodH1weDtgKTtcbiAgICAgICAgICAgIHRoaXMubXlJbWFnZVJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLndpZHRoID0gYCR7d2lkdGh9cHhgO1xuICAgICAgICAgICAgdGhpcy5teUltYWdlUmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gYCR7aGVpZ2h0fXB4YDtcbiAgICAgICAgICAgIHRoaXMubXlJbWFnZVJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLmN1cnNvciA9IHRoaXMuc2VsZWN0ZWRNb2RlID09IEltYWdlTW9kZU5hbWUuUG9pbnRlciB8fCB0aGlzLnNlbGVjdGVkTW9kZSA9PSBJbWFnZU1vZGVOYW1lLlJlbW92ZSA/ICdkZWZhdWx0JyA6ICdjcm9zc2hhaXInO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgZUhhbmRib29rKGlzT25seURvY3VtZW50OiBib29sZWFuLCBpc0FuY2hvckRvY3VtZW50OiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMucHJvY2Vzc0NvbmZpZyA9IHtcbiAgICAgICAgICAgIGFsbG93U2VsZWN0Rm9sZGVyOiB0cnVlLFxuICAgICAgICAgICAgYXJlYU9mQ3VycmVudFByb2Nlc3M6ICcnLFxuICAgICAgICAgICAgc2hvd0NoZWNrQm94OiBmYWxzZSxcbiAgICAgICAgICAgIGFsbG93TXVsdGlwbGVDaGVjazogZmFsc2UsXG4gICAgICAgICAgICBvbmx5Q2hlY2tCb3hGb3JDaGlsZDogZmFsc2UsXG4gICAgICAgICAgICBtb2R1bGVJZDogRGF0YVR5cGUucHJvY2VzcyxcbiAgICAgICAgICAgIG9wZW5JY29uQ29sb3I6ICcjMTk1NEE5JyxcbiAgICAgICAgICAgIGNsb3NlSWNvbkNvbG9yOiAnI2E0YjBkZScsXG4gICAgICAgICAgICBzaW5nbGVTZWxlY3RlZE5vZGU6IHRydWUsXG4gICAgICAgICAgICBvbmx5Rm9sZGVyOiBmYWxzZSxcbiAgICAgICAgICAgIHNlbGVjdE9uZTogdHJ1ZVxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuZG9jdW1lbnRDb25maWcgPSB7XG4gICAgICAgICAgICBhbGxvd1NlbGVjdEZvbGRlcjogIWlzT25seURvY3VtZW50LFxuICAgICAgICAgICAgYXJlYU9mQ3VycmVudFByb2Nlc3M6ICcnLFxuICAgICAgICAgICAgc2hvd0NoZWNrQm94OiBmYWxzZSxcbiAgICAgICAgICAgIG1vZHVsZUlkOiBEYXRhVHlwZS5kb2N1bWVudCxcbiAgICAgICAgICAgIGFsbG93TXVsdGlwbGVDaGVjazogZmFsc2UsXG4gICAgICAgICAgICBvbmx5Q2hlY2tCb3hGb3JDaGlsZDogZmFsc2UsXG4gICAgICAgICAgICBvcGVuSWNvbkNvbG9yOiAnIzE5NTRBOScsXG4gICAgICAgICAgICBjbG9zZUljb25Db2xvcjogJyM0YWNhZmYnLFxuICAgICAgICAgICAgc2luZ2xlU2VsZWN0ZWROb2RlOiB0cnVlLFxuICAgICAgICAgICAgb25seUZvbGRlcjogZmFsc2UsXG4gICAgICAgICAgICBzZWxlY3RPbmU6IHRydWVcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBkYXRhOiBTZWxlY3RQcm9jZXNzRG9jdW1lbnRQb3B1cERhdGEgPSBuZXcgU2VsZWN0UHJvY2Vzc0RvY3VtZW50UG9wdXBEYXRhKCk7XG4gICAgICAgIGRhdGEubW9kdWxlSWQgPSBNb2R1bGVUeXBlLmRvY3VtZW50UHJvY2VzcztcbiAgICAgICAgZGF0YS5tb2R1bGVOYW1lID0gdGhpcy5MQU5HLlFNU0NLRURJVE9SLkRPQ1VNRU5UX1BST0NFU1M7XG4gICAgICAgIGlmICghaXNPbmx5RG9jdW1lbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IHRyZWVQcm9jZXNzRGF0YSA9IGF3YWl0IHRoaXMudHJlZVNlcnZpY2UuZ2V0UHJvY2Vzc0FyZWFDb250ZW50cygnJywgdHJ1ZSwgdGhpcy5kYXRhLmVuYWJsZWRJbnRlcmNvbm5lY3RlZCkudG9Qcm9taXNlKCk7XG4gICAgICAgICAgICBkYXRhLnRyZWVEYXRhMSA9IHRyZWVQcm9jZXNzRGF0YT8uYXJlYXMubWFwKCh4KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IHguaWQsXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IHgubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50SWQ6IHgucGFyZW50SWQgPT09IGd1aWRIZWxwZXIuZW1wdHkgPyAnJyA6IHgucGFyZW50SWQsXG4gICAgICAgICAgICAgICAgICAgIHN0YXR1c0lkOiAwLFxuICAgICAgICAgICAgICAgICAgICBzdGF0dXNOYW1lOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheUlkOiAwLFxuICAgICAgICAgICAgICAgICAgICBleHBhbmRhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pIHx8IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdHJlZURvY3VtZW50RGF0YSA9IGF3YWl0IHRoaXMudHJlZVNlcnZpY2UuZ2V0Rm9sZGVyQ2hpbGRyZW5zKCkudG9Qcm9taXNlKCk7XG5cbiAgICAgICAgZGF0YS50cmVlRGF0YTIgPSB0cmVlRG9jdW1lbnREYXRhPy5tYXAoKHgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgaWQ6IHguaWQudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICBuYW1lOiB4Lm5hbWUudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICBwYXJlbnRJZDogIXgucGFyZW50SGFuZGJvb2tJZCA/ICcnIDogeC5wYXJlbnRIYW5kYm9va0lkLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgc3RhdHVzSWQ6IDAsXG4gICAgICAgICAgICAgICAgc3RhdHVzTmFtZTogJycsXG4gICAgICAgICAgICAgICAgZGlzcGxheUlkOiAwLFxuICAgICAgICAgICAgICAgIGV4cGFuZGFibGU6IHgudHlwZSA+IERvY3VtZW50Tm9kZVR5cGUuU2hvcnRjdXREb2N1bWVudCxcbiAgICAgICAgICAgICAgICBsZXZlbFR5cGU6IHgudHlwZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgICAgIGRhdGEudHJlZUNvbmZpZzEgPSB0aGlzLnByb2Nlc3NDb25maWc7XG4gICAgICAgIGRhdGEudHJlZUNvbmZpZzIgPSB0aGlzLmRvY3VtZW50Q29uZmlnO1xuICAgICAgICBkYXRhLnNwbGl0VmlldyA9IGZhbHNlO1xuICAgICAgICBkYXRhLmlzU2VsZWN0T25lID0gdHJ1ZTtcbiAgICAgICAgZGF0YS50b29sdGlwTG9jYXRpb25TZWFyY2hSZXN1bHQgPSB0cnVlO1xuXG4gICAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oU2VsZWN0UHJvY2Vzc0RvY3VtZW50UG9wdXBDb21wb25lbnQsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnNzY4cHgnLFxuICAgICAgICAgICAgbWluSGVpZ2h0OiAnNjkwcHgnLFxuICAgICAgICAgICAgZGF0YSxcbiAgICAgICAgICAgIHBhbmVsQ2xhc3M6IFsncmVsYXRlZC1wcm9jZXNzX19wb3B1cCcsICdjdXN0b20tbWF0LWRpYWxvZy1jb250YWluZXInXSxcbiAgICAgICAgICAgIGF1dG9Gb2N1czogZmFsc2VcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlLm9uU2VhcmNoLnN1YnNjcmliZShhc3luYyAoa2V5d29yZDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICBpZiAoIWtleXdvcmQgfHwga2V5d29yZC50cmltKCkgPT09ICcnKVxuICAgICAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICAgICAgbGV0IGdldFNlYXJjaE9wdGlvbiA9IG5ldyBHZXRTZWFyY2hQcm9jZXNzRG9jdW1lbnRPcHRpb24odHJ1ZSwgdHJ1ZSwgdGhpcy5kYXRhLmVuYWJsZWRJbnRlcmNvbm5lY3RlZCwgdHJ1ZSwgdHJ1ZSk7XG4gICAgICAgICAgICBpZiAoaXNPbmx5RG9jdW1lbnQpIHtcbiAgICAgICAgICAgICAgICBnZXRTZWFyY2hPcHRpb24uaXNHZXRQcm9jZXNzID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgZ2V0U2VhcmNoT3B0aW9uLmlzR2V0SW50ZXJjb25uZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBnZXRTZWFyY2hPcHRpb24uaXNHZXRBcmVhID0gZmFsc2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHNlYXJjaFJlc3VsdCA9IGF3YWl0IHRoaXMudHJlZVNlcnZpY2UuZ2V0U2VhcmNoUHJvY2Vzc0RvY3VtZW50KGtleXdvcmQudHJpbSgpLCBnZXRTZWFyY2hPcHRpb24pO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RQcm9jZXNzRG9jdW1lbnRHbG9iYWxTZXJ2aWNlLnNldFNlYXJjaFJlbGF0ZWQoc2VhcmNoUmVzdWx0KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlLm9uRXhwYW5kUHJvY2Vzc0FyZWEuc3Vic2NyaWJlKChhcmVhKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnRyZWVTZXJ2aWNlLmdldFByb2Nlc3NBcmVhQ29udGVudHMoYXJlYS5pZCwgdHJ1ZSwgdGhpcy5kYXRhLmVuYWJsZWRJbnRlcmNvbm5lY3RlZCkudG9Qcm9taXNlKCkudGhlbihyZXMgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYXJlYXMgPSByZXMuYXJlYXMubWFwKCh4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB4LmlkLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogeC5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudElkOiB4LnBhcmVudElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGFuZGFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzSWQ6IHguc3RhdHVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c05hbWU6IHguc3RhdHVzTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5SWQ6IDBcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH0pIHx8IFtdO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByb2Nlc3NlcyA9IHJlcy5wcm9jZXNzZXMubWFwKCh4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB4LmVudGl0eUlkLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogeC5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudElkOiB4LnByb2Nlc3NBcmVhSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwYW5kYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzSWQ6IHguc3RhdHVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c05hbWU6IHguYXBwcm92YWxTdGF0dXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheUlkOiB4LnByb2Nlc3NOdW1iZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVR5cGU6IHgucHJvY2Vzc0NsYXNzaWZpY2F0aW9uID09PSBQcm9jZXNzQ2xhc3NpZmljYXRpb24uSW50ZXJjb25uZWN0ZWRQcm9jZXNzID8gRGF0YVR5cGUucHJvY2Vzc0ludGVyY29ubmVjdGVkIDogRGF0YVR5cGUucHJvY2Vzc1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfSkgfHwgW107XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0UHJvY2Vzc0RvY3VtZW50R2xvYmFsU2VydmljZS5zZXRQcm9jZXNzQXJlYUNoaWxkcmVuKFsuLi5hcmVhcywgLi4ucHJvY2Vzc2VzXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGRpYWxvZ1JlZi5jb21wb25lbnRJbnN0YW5jZS5vbkV4cGFuZEZvbGRlci5zdWJzY3JpYmUoKGZvbGRlcikgPT4ge1xuICAgICAgICAgICAgdGhpcy50cmVlU2VydmljZVxuICAgICAgICAgICAgICAgIC5nZXRGb2xkZXJDaGlsZHJlbnMoZm9sZGVyLmlkKVxuICAgICAgICAgICAgICAgIC50b1Byb21pc2UoKS50aGVuKChyZXMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hpbGRzID0gcmVzLm1hcCgoeCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB4LmlkLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHgubmFtZS50b1N0cmluZygpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRJZDogdGhpcy5nZXRQYXJlbnRJZCh4KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzSWQ6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c05hbWU6IHguYXBwcm92YWxTdGF0dXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlJZDogeC5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwYW5kYWJsZTogIXRoaXMuZG9jdW1lbnRUeXBlcy5pbmNsdWRlcyh4LnR5cGUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbFR5cGU6ICF0aGlzLmRvY3VtZW50VHlwZXMuaW5jbHVkZXMoeC50eXBlKSA/IHgudHlwZSA6IGZvbGRlci5sZXZlbFR5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdFByb2Nlc3NEb2N1bWVudEdsb2JhbFNlcnZpY2Uuc2V0Rm9sZGVyQ2hpbGRyZW4oY2hpbGRzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgaWYgKHJlc3VsdD8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0RGF0YSA9IHJlc3VsdFswXTtcbiAgICAgICAgICAgICAgICBpZiAoaXNBbmNob3JEb2N1bWVudCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRvY3VtZW50SWQgPSByZXN1bHREYXRhLmlkO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmdldEFuY2hvckRvY3VtZW50KHJlc3VsdERhdGEuaWQpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFyc2VMaW5rVXJsKHRoaXMuZ2V0TGlua1VSTChyZXN1bHREYXRhKSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRQcm90b2NvbCA9IFByb3RvY29sVHlwZU5hbWUub3RoZXI7XG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5hZHZpc29yeVRpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkdmlzb3J5VGl0bGUgPSByZXN1bHREYXRhLml0ZW1OYW1lO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQXJlYVZhbHVlcygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXRBbmNob3JEb2N1bWVudChkb2N1bWVudElkOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5saW5rU2VydmljZVxuICAgICAgICAgICAgLmdldEFuY2hvckRvY3VtZW50TGlzdChkb2N1bWVudElkKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlcykgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hbmNob3JEb2N1bWVudHMgPSByZXM7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0QW5jaG9yRG9jdW1lbnQodGhpcy5hbmNob3JEb2N1bWVudHMpO1xuICAgICAgICAgICAgICAgICAgICAvL3RoaXMuZG9jdW1lbnRBbmNob3JzID0gdGhpcy5hbmNob3JzO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYW5jaG9yRG9jdW1lbnRzID0gW107XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0QW5jaG9yRG9jdW1lbnQodGhpcy5hbmNob3JEb2N1bWVudHMpO1xuICAgICAgICAgICAgICAgICAgICAvL3RoaXMuZG9jdW1lbnRBbmNob3JzID0gdGhpcy5hbmNob3JzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHNldEFuY2hvckRvY3VtZW50KGFuY2hvckRvY3VtZW50OiBRTVNDS0VkaXRvckxpbmtBbmNob3JEb2N1bWVudFtdKSB7XG4gICAgICAgIHRoaXMuaW5pdEFuY2hvcigpO1xuICAgICAgICBsZXQgaWQgPSAzO1xuICAgICAgICBpZiAoYW5jaG9yRG9jdW1lbnQpIHtcbiAgICAgICAgICAgIGFuY2hvckRvY3VtZW50LmZvckVhY2goKGUpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgICAgICAgICBkaXYuaW5uZXJIVE1MID0gZS5yaWNoVGV4dDtcbiAgICAgICAgICAgICAgICBjb25zdCBkb21Db250ZW50ID0gZGl2O1xuICAgICAgICAgICAgICAgIGNvbnN0IGFUYWdzID0gZG9tQ29udGVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYScpO1xuICAgICAgICAgICAgICAgIGlmIChhVGFncykge1xuICAgICAgICAgICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6cHJlZmVyLWZvci1vZlxuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFUYWdzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0YWcgPSBhVGFnc1tpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0YWcubmFtZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5hbmNob3JzLmZpbmRJbmRleCgoeCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geC5hbmNob3JWYWx1ZSA9PT0gdGFnLm5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4IDwgMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFuY2hvcnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3VmFsdWU6IHRhZy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5jaG9yVmFsdWU6IHRhZy5uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8vIHRoaXMuYW5jaG9ycy5wdXNoKHtcbiAgICAgICAgLy8gICAgIHZhbHVlOiAxLFxuICAgICAgICAvLyAgICAgdmlld1ZhbHVlOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuQU5DSE9SX0FUVEFDSE1FTlQsXG4gICAgICAgIC8vICAgICBhbmNob3JWYWx1ZTogTGlua0FuY2hvci5BdHRhY2htZW50XG4gICAgICAgIC8vIH0pO1xuICAgICAgICAvLyB0aGlzLmFuY2hvcnMucHVzaCh7XG4gICAgICAgIC8vICAgICB2YWx1ZTogMixcbiAgICAgICAgLy8gICAgIHZpZXdWYWx1ZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLkFOQ0hPUl9SRUxBVEVEX0RPQ1VNRU5ULFxuICAgICAgICAvLyAgICAgYW5jaG9yVmFsdWU6IExpbmtBbmNob3IuUmVsYXRlZFxuICAgICAgICAvLyB9KTtcbiAgICB9XG5cblxuICAgIGF0dGFjaG1lbnQoKSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSBuZXcgUU1TQ0tFZGl0b3JQYXJhbXRlcigpO1xuICAgICAgICBkYXRhLm1vZHVsZSA9IHRoaXMuaW1hZ2VNYXBEYXRhLm1vZHVsZTtcbiAgICAgICAgZGF0YS5lbnRpdHlJZCA9IHRoaXMuaW1hZ2VNYXBEYXRhLmVudGl0eUlkO1xuICAgICAgICBjb25zdCBkaWFsb2dUZW1wbGF0ZSA9IHRoaXMuZGlhbG9nLm9wZW4oTGlua0F0dGFjaG1lbnRDb21wb25lbnQsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnNjUwcHgnLFxuICAgICAgICAgICAgaGVpZ2h0OiAnNjUwcHgnLFxuICAgICAgICAgICAgZGF0YSxcbiAgICAgICAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgICAgZGlhbG9nVGVtcGxhdGVcbiAgICAgICAgICAgIC5hZnRlckNsb3NlZCgpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3ViY3JpYmUpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcnNlTGlua1VybChyZXN1bHQudXJsKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFByb3RvY29sID0gUHJvdG9jb2xUeXBlTmFtZS5vdGhlcjtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmFkdmlzb3J5VGl0bGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWR2aXNvcnlUaXRsZSA9IHJlc3VsdC50aXRsZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUFyZWFWYWx1ZXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzYXZlKCkge1xuICAgICAgICBjb25zdCBkYXRhID0gdGhpcy5teUltYWdlTWFwLmdldE1hcEpzb24oKTtcbiAgICAgICAgZGF0YS5pbWFnZUhlaWdodCA9IHRoaXMubmF0dXJhbEltYWdlSGVpZ2h0O1xuICAgICAgICBkYXRhLmltYWdlV2lkdGggPSB0aGlzLm5hdHVyYWxJbWFnZVdpZHRoO1xuICAgICAgICBjb25zdCBzY3JvbGxUb3AgPSB0aGlzLmNvbW1vblNlcnZpY2UuZ2V0U2Nyb2xsVG9wQ2tlZGl0b3IodGhpcy5ja0VkaXRvcik7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKGRhdGEpO1xuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2Uuc2V0U2Nyb2xsVG9wRWRpdG9yQ29udGFpbmVyKHRoaXMuY2tFZGl0b3IsIHNjcm9sbFRvcCk7XG4gICAgfVxuXG4gICAgY2FuY2VsKCkge1xuICAgICAgICAvL3RoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XG4gICAgICAgIHRoaXMub25DbG9zZURpYWxvZygpO1xuICAgIH1cblxuICAgIGdldFBhcmVudElkKGl0ZW0pIHtcbiAgICAgICAgaWYgKCF0aGlzLmRvY3VtZW50VHlwZXMuaW5jbHVkZXMoaXRlbS50eXBlKSkge1xuICAgICAgICAgICAgcmV0dXJuICFpdGVtLnBhcmVudEhhbmRib29rSWQgPyAnJyA6IGl0ZW0ucGFyZW50SGFuZGJvb2tJZC50b1N0cmluZygpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAhaXRlbS5wYXJlbnRGb2xkZXJJZCA/ICcnIDogaXRlbS5wYXJlbnRGb2xkZXJJZC50b1N0cmluZygpO1xuICAgIH1cblxuICAgIGdldExpbmtVUkwoZGF0YTogYW55KSB7XG4gICAgICAgIGxldCB1cmwgPSAnJztcbiAgICAgICAgc3dpdGNoIChkYXRhPy5pdGVtVHlwZSkge1xuICAgICAgICAgICAgY2FzZSBEYXRhVHlwZS5kb2N1bWVudDpcbiAgICAgICAgICAgICAgICB1cmwgPSBgL2RvY3VtZW50LyR7ZGF0YS5pZH1gO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBEYXRhVHlwZS5wcm9jZXNzOlxuICAgICAgICAgICAgICAgIHVybCA9IGAvcHJvY2Vzcy1kZXRhaWwvJHtkYXRhLmRpc3BsYXlJZH1gO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBEYXRhVHlwZS5hcmVhOlxuICAgICAgICAgICAgICAgIHVybCA9IGAvYXJlYS9kZXRhaWwvJHtkYXRhLmlkfWA7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIERhdGFUeXBlLmZvbGRlcjpcbiAgICAgICAgICAgICAgICB1cmwgPSBgL2ZvbGRlci8ke2RhdGEuaWR9YDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgRGF0YVR5cGUucHJvY2Vzc0ludGVyY29ubmVjdGVkOlxuICAgICAgICAgICAgICAgIHVybCA9IGAvcHJvY2Vzcy1pbnRlcmNvbm5lY3RlZC8ke2RhdGEuZGlzcGxheUlkfWBcblxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB1cmw7XG4gICAgfVxufVxuIl19
|