vcomply-workflow-engine 3.4.23 → 3.4.25
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/esm2020/lib/add-multiple-responsibility/add-multiple-responsibility.component.mjs +2 -4
- package/esm2020/lib/add-multiple-risk/add-multiple-risk.component.mjs +2 -3
- package/esm2020/lib/formgroup/cs-select/cs-select.component.mjs +5 -5
- package/esm2020/lib/formgroup/cs-switch/cs-switch.component.mjs +1 -4
- package/esm2020/lib/log-an-issue/log-an-issue.component.mjs +1 -11
- package/esm2020/lib/more-option/more-option.component.mjs +5 -6
- package/esm2020/lib/pipes/filter.pipe.mjs +1 -2
- package/esm2020/lib/pipes/search.pipe.mjs +3 -5
- package/esm2020/lib/sharedComponents/approval-workflow/approval-create-form/approval-create-form.component.mjs +3 -7
- package/esm2020/lib/sharedComponents/approval-workflow/approval-workflow-list/approval-workflow-list.component.mjs +1 -5
- package/esm2020/lib/sharedComponents/approval-workflow/approval-workflow.component.mjs +1 -7
- package/esm2020/lib/sharedComponents/assessment-editor/create-assessment-container/create-assessment-container.component.mjs +80 -36
- package/esm2020/lib/sharedComponents/assessment-list/assessment-list.component.mjs +27 -21
- package/esm2020/lib/sharedComponents/assessment-preview/preview/preview.component.mjs +7 -4
- package/esm2020/lib/sharedComponents/audit-category-list/audit-category-list.component.mjs +3 -4
- package/esm2020/lib/sharedComponents/bulk-responsibility-view/bulk-responsibility-view.component.mjs +3 -9
- package/esm2020/lib/sharedComponents/bulk-view/bulk-view.component.mjs +9 -7
- package/esm2020/lib/sharedComponents/category-multiselect/category-multi-select.component.mjs +7 -9
- package/esm2020/lib/sharedComponents/checkpoint/checkpoints/checkpoints.component.mjs +93 -27
- package/esm2020/lib/sharedComponents/checkpoint/checkpoints-questions/checkpoints-questions.component.mjs +11 -9
- package/esm2020/lib/sharedComponents/checkpoint-policy/checkpoints-policy-container/checkpoints-policy-container.component.mjs +13 -12
- package/esm2020/lib/sharedComponents/checkpoint-policy/checkpoints-policy-questions/checkpoints-policy-questions.component.mjs +28 -19
- package/esm2020/lib/sharedComponents/floating-bar/floating-bar.component.mjs +8 -8
- package/esm2020/lib/sharedComponents/format-and-evidence/format-and-evidence.component.mjs +35 -37
- package/esm2020/lib/sharedComponents/framework-list/parent-table/parent-table.component.mjs +7 -7
- package/esm2020/lib/sharedComponents/frequency/frequency-biannual/frequency-biannual.component.mjs +1 -12
- package/esm2020/lib/sharedComponents/frequency/frequency-container/frequency-container.component.mjs +1 -3
- package/esm2020/lib/sharedComponents/frequency/frequency-daily/frequency-daily.component.mjs +1 -13
- package/esm2020/lib/sharedComponents/frequency/frequency-due-date/frequency-due-date.component.mjs +1 -7
- package/esm2020/lib/sharedComponents/frequency/frequency-lifecycle/frequency-lifecycle.component.mjs +1 -26
- package/esm2020/lib/sharedComponents/frequency/frequency-monthly/frequency-monthly.component.mjs +1 -15
- package/esm2020/lib/sharedComponents/frequency/frequency-one-time/frequency-one-time.component.mjs +1 -14
- package/esm2020/lib/sharedComponents/frequency/frequency-ongoing/frequency-ongoing.component.mjs +14 -8
- package/esm2020/lib/sharedComponents/frequency/frequency-quarterly/frequency-quarterly.component.mjs +1 -13
- package/esm2020/lib/sharedComponents/frequency/frequency-radio-list/frequency-radio-list.component.mjs +1 -2
- package/esm2020/lib/sharedComponents/frequency/frequency-random/frequency-random.component.mjs +1 -18
- package/esm2020/lib/sharedComponents/frequency/frequency-top/frequency-top.component.mjs +2 -2
- package/esm2020/lib/sharedComponents/frequency/frequency-weekly/frequency-weekly.component.mjs +1 -12
- package/esm2020/lib/sharedComponents/frequency/frequency.service.mjs +2 -11
- package/esm2020/lib/sharedComponents/frequency-dialog/frequency-dialog-annual/frequency-dialog-annual.component.mjs +1 -2
- package/esm2020/lib/sharedComponents/frequency-dialog/frequency-dialog-biannual/frequency-dialog-biannual.component.mjs +1 -2
- package/esm2020/lib/sharedComponents/frequency-dialog/frequency-dialog-monthly/frequency-dialog-monthly.component.mjs +1 -2
- package/esm2020/lib/sharedComponents/frequency-dialog/frequency-dialog-one-time/frequency-dialog-one-time.component.mjs +1 -2
- package/esm2020/lib/sharedComponents/frequency-dialog/frequency-dialog-quarterly/frequency-dialog-quarterly.component.mjs +1 -2
- package/esm2020/lib/sharedComponents/frequency-dialog/frequency-dialog-radio-list/frequency-dialog-radio-list.component.mjs +1 -2
- package/esm2020/lib/sharedComponents/frequency-dialog/frequency-dialog-top/frequency-dialog-top.component.mjs +2 -2
- package/esm2020/lib/sharedComponents/group-users-list/group-users-list.component.mjs +1 -3
- package/esm2020/lib/sharedComponents/link-program/link-program/link-program.component.mjs +48 -38
- package/esm2020/lib/sharedComponents/link-program/restapi.service.mjs +31 -16
- package/esm2020/lib/sharedComponents/no-data/no-data.component.mjs +2 -4
- package/esm2020/lib/sharedComponents/owner-list/owner-list.component.mjs +12 -10
- package/esm2020/lib/sharedComponents/program-listing/program-listing.component.mjs +127 -58
- package/esm2020/lib/sharedComponents/radio-list-with-pagination/radio-list.component.mjs +4 -7
- package/esm2020/lib/sharedComponents/responsibility-centers-list/responsibility-centers-list.component.mjs +9 -7
- package/esm2020/lib/sharedComponents/risk-classification/risk-classification.component.mjs +11 -6
- package/esm2020/lib/sharedComponents/select-approvers/select-approvers.component.mjs +1 -2
- package/esm2020/lib/sharedComponents/users-radio-list/users-radio-list.component.mjs +2 -3
- package/esm2020/lib/ui-kit/formgroup/cs-switch/cs-switch.component.mjs +1 -4
- package/esm2020/lib/ui-kit/popover/popover-longpress.directive.mjs +1 -3
- package/esm2020/lib/ui-kit/popover/popover.component.mjs +26 -12
- package/esm2020/lib/ui-kit/tooltip/tooltip.directive.mjs +8 -5
- package/esm2020/lib/workflow/shared/components/attributes/attributes.component.mjs +1 -2
- package/esm2020/lib/workflow/shared/components/edit-mode/edit-mode.component.mjs +1 -4
- package/esm2020/lib/workflow/shared/components/grc-object-list/grc-object-list.component.mjs +1 -2
- package/esm2020/lib/workflow/shared/components/list-popup/list-popup.component.mjs +1 -4
- package/esm2020/lib/workflow/shared/components/table-card/table-card.component.mjs +4 -8
- package/esm2020/lib/workflow-assessment/import-an-assessment/import-an-assessment.component.mjs +245 -108
- package/esm2020/lib/workflow-assessment/workflow-assessment.component.mjs +2 -4
- package/esm2020/lib/workflow-compliance/workflow-compliance.component.mjs +10 -8
- package/esm2020/lib/workflow-engine-container/workflow-engine-container.component.mjs +1 -5
- package/esm2020/lib/workflow-program/create-program-ui/assessment-picker/assessment-picker.component.mjs +45 -45
- package/esm2020/lib/workflow-program/create-program-ui/define-framework-listing/define-framework-listing.component.mjs +43 -25
- package/esm2020/lib/workflow-program/create-program-ui/define-framework-listing/pipes/sub-cat-indeter.pipe.mjs +4 -4
- package/esm2020/lib/workflow-program/create-program-ui/floating-bar/floating-bar.component.mjs +1 -2
- package/esm2020/lib/workflow-program/create-program-ui/pagination/pagination/pagination.component.mjs +25 -14
- package/esm2020/lib/workflow-program/create-program-ui/pipes/assessment-resolver.pipe.mjs +6 -3
- package/esm2020/lib/workflow-program/create-program-ui/role-list/role-list.component.mjs +25 -19
- package/esm2020/lib/workflow-program/create-program-ui/user-group-list/user-group-list.component.mjs +1 -4
- package/esm2020/lib/workflow-program/workflow-program.component.mjs +232 -110
- package/esm2020/lib/workflow-services/add-risk.service.mjs +1 -2
- package/esm2020/lib/workflow-services/assessment.service.mjs +1 -5
- package/esm2020/lib/workflow-services/programs.service.mjs +173 -57
- package/fesm2015/vcomply-workflow-engine.mjs +1381 -937
- package/fesm2015/vcomply-workflow-engine.mjs.map +1 -1
- package/fesm2020/vcomply-workflow-engine.mjs +1394 -945
- package/fesm2020/vcomply-workflow-engine.mjs.map +1 -1
- package/lib/formgroup/cs-switch/cs-switch.component.d.ts +2 -3
- package/lib/sharedComponents/assessment-list/assessment-list.component.d.ts +4 -5
- package/lib/sharedComponents/bulk-responsibility-view/bulk-responsibility-view.component.d.ts +2 -3
- package/lib/sharedComponents/bulk-view/bulk-view.component.d.ts +2 -3
- package/lib/sharedComponents/frequency/frequency-lifecycle/frequency-lifecycle.component.d.ts +2 -4
- package/lib/sharedComponents/frequency/frequency-ongoing/frequency-ongoing.component.d.ts +1 -1
- package/lib/sharedComponents/link-program/restapi.service.d.ts +3 -3
- package/lib/sharedComponents/no-data/no-data.component.d.ts +2 -4
- package/lib/ui-kit/formgroup/cs-switch/cs-switch.component.d.ts +2 -3
- package/lib/workflow/shared/components/edit-mode/edit-mode.component.d.ts +2 -3
- package/lib/workflow/shared/components/list-popup/list-popup.component.d.ts +2 -3
- package/lib/workflow/shared/components/table-card/table-card.component.d.ts +2 -5
- package/lib/workflow-program/create-program-ui/assessment-picker/assessment-picker.component.d.ts +8 -9
- package/lib/workflow-program/create-program-ui/pagination/pagination/pagination.component.d.ts +2 -4
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Component, Input, Output, EventEmitter } from '@angular/core';
|
|
1
|
+
import { Component, Input, Output, EventEmitter, } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
import * as i1 from "@angular/common";
|
|
4
4
|
import * as i2 from "../../ui-kit/popover/popover.component";
|
|
@@ -16,7 +16,10 @@ export class FloatingBarComponent {
|
|
|
16
16
|
this.workflowText = '';
|
|
17
17
|
this.currentFrequency = '';
|
|
18
18
|
this.isDisabled = false;
|
|
19
|
-
this.workflowList = [
|
|
19
|
+
this.workflowList = [
|
|
20
|
+
'SEQUENTIAL',
|
|
21
|
+
'ANY REVIEWER CAN MARK THIS AS REVIEWED',
|
|
22
|
+
];
|
|
20
23
|
this.mode = 'CREATE';
|
|
21
24
|
this.defaultSelected = {};
|
|
22
25
|
this.nonRemovableUsersList = [];
|
|
@@ -31,10 +34,8 @@ export class FloatingBarComponent {
|
|
|
31
34
|
set defaultSelectedValue(value) {
|
|
32
35
|
this.defaultSelected = value ? value : {};
|
|
33
36
|
}
|
|
34
|
-
ngOnChanges() {
|
|
35
|
-
}
|
|
36
|
-
ngOnInit() {
|
|
37
|
-
}
|
|
37
|
+
ngOnChanges() { }
|
|
38
|
+
ngOnInit() { }
|
|
38
39
|
next() {
|
|
39
40
|
let selectedData;
|
|
40
41
|
if (this.selectedGroups?.length > 0) {
|
|
@@ -58,7 +59,6 @@ export class FloatingBarComponent {
|
|
|
58
59
|
// debugger
|
|
59
60
|
}
|
|
60
61
|
selectedWorkflowChange(event) {
|
|
61
|
-
console.log("event ==>", event);
|
|
62
62
|
this.workflowTypeChanged.emit(event);
|
|
63
63
|
}
|
|
64
64
|
}
|
|
@@ -119,4 +119,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
119
119
|
}], workflowTypeChanged: [{
|
|
120
120
|
type: Output
|
|
121
121
|
}] } });
|
|
122
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvYXRpbmctYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3NoYXJlZENvbXBvbmVudHMvZmxvYXRpbmctYmFyL2Zsb2F0aW5nLWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL2Zsb2F0aW5nLWJhci9mbG9hdGluZy1iYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLFlBQVksRUFBYSxNQUFNLGVBQWUsQ0FBQzs7Ozs7O0FBTzFGLE1BQU0sT0FBTyxvQkFBb0I7SUE4Qi9CO1FBM0JTLHNCQUFpQixHQUFHLEVBQUUsQ0FBQztRQUN2QixjQUFTLEdBQVEsRUFBRSxDQUFDO1FBQ3BCLGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFDaEIsbUJBQWMsR0FBRyxJQUFJLENBQUM7UUFDdEIsc0JBQWlCLEdBQUcsS0FBSyxDQUFDO1FBQzFCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLHFCQUFnQixHQUFHLEVBQUUsQ0FBQztRQUN0QixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25CLGlCQUFZLEdBQUcsQ0FBQyxZQUFZLEVBQUUsd0NBQXdDLENBQUMsQ0FBQztRQUd4RSxTQUFJLEdBQVksUUFBUSxDQUFDO1FBQ2xDLG9CQUFlLEdBQVEsRUFBRSxDQUFDO1FBTWpCLDBCQUFxQixHQUFRLEVBQUUsQ0FBQztRQUUvQixlQUFVLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDbkQsZ0JBQVcsR0FBeUIsSUFBSSxZQUFZLEVBQUUs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IEV2ZW50RW1pdHRlciwgT25DaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1mbG9hdGluZy1iYXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9mbG9hdGluZy1iYXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2Zsb2F0aW5nLWJhci5jb21wb25lbnQubGVzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRmxvYXRpbmdCYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XHJcbiAgQElucHV0KCkgc2VsZWN0ZWREYXRhOiBhbnk7XHJcbiAgQElucHV0KCkgc2VsZWN0ZWRHcm91cHM6IGFueTtcclxuICBASW5wdXQoKSBkaXNwbGF5RWxlbWVudEtleSA9ICcnO1xyXG4gIEBJbnB1dCgpIGVsZW1lbnRJZDogYW55ID0gJyc7XHJcbiAgQElucHV0KCkgc2luZ3VsYXJUZXh0ID0gJyc7XHJcbiAgQElucHV0KCkgcGx1cmFsVGV4dCA9ICcnO1xyXG4gIEBJbnB1dCgpIHNob3dOZXh0QnV0dG9uID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzaG93RnJlcXVlbmN5VGV4dCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNob3dXb3JrZmxvdyA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHdvcmtmbG93VGV4dCA9ICcnO1xyXG4gIEBJbnB1dCgpIGN1cnJlbnRGcmVxdWVuY3kgPSAnJztcclxuICBASW5wdXQoKSBpc0Rpc2FibGVkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgd29ya2Zsb3dMaXN0ID0gWydTRVFVRU5USUFMJywgJ0FOWSBSRVZJRVdFUiBDQU4gTUFSSyBUSElTIEFTIFJFVklFV0VEJ107XHJcbiAgQElucHV0KCkgc2VsZWN0ZWRXb3JrZmxvdzogYW55O1xyXG4gIEBJbnB1dCgpIHdvcmtmbG93UGxhY2VIb2xkZXI6IGFueTtcclxuICBASW5wdXQoKSBtb2RlOiBzdHJpbmcgID0gJ0NSRUFURSc7XHJcbiAgZGVmYXVsdFNlbGVjdGVkOiBhbnkgPSB7fTtcclxuICBASW5wdXQoJ2RlZmF1bHRTZWxlY3RlZCcpIHNldCBkZWZhdWx0U2VsZWN0ZWRWYWx1ZSggdmFsdWU6IGFueSkge1xyXG4gICAgdGhpcy5kZWZhdWx0U2VsZWN0ZWQgPSB2YWx1ZSA/IHZhbHVlIDoge307XHJcbiAgfVxyXG4gIEBJbnB1dCgpIGdyb3Vwc0VuYWJsZWQ6YW55O1xyXG5cclxuICBASW5wdXQoKSBub25SZW1vdmFibGVVc2Vyc0xpc3Q6IGFueSA9IFtdO1xyXG4gIEBJbnB1dCgpIHJlbW92ZVBvc2l0aW9uOiBhbnk7XHJcbiAgQE91dHB1dCgpIGNsb3NlRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBkZWxldGVFdmVudDogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGNsb3NlTGlzdDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGRlbGV0ZUdyb3VwRXZlbnQgOkV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSB3b3JrZmxvd1R5cGVDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWREYXRhID0gW107XHJcbiAgICB0aGlzLnNlbGVjdGVkR3JvdXBzID0gW107XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcygpIHtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG5cclxuICB9XHJcblxyXG4gIG5leHQoKSB7XHJcbiAgICBsZXQgc2VsZWN0ZWREYXRhXHJcbiAgICBpZih0aGlzLnNlbGVjdGVkR3JvdXBzPy5sZW5ndGg+MCl7XHJcbiAgICAgIHNlbGVjdGVkRGF0YSA9IHsgdXNlcnM6IHRoaXMuc2VsZWN0ZWREYXRhLCBncm91cHM6IHRoaXMuc2VsZWN0ZWRHcm91cHMgfVxyXG4gICAgfWVsc2V7XHJcbiAgICAgIHNlbGVjdGVkRGF0YSA9IHRoaXMuc2VsZWN0ZWREYXRhXHJcbiAgICB9XHJcbiAgICB0aGlzLmNsb3NlRXZlbnQuZW1pdChzZWxlY3RlZERhdGEpO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlU2VsZWN0ZWQoaW5kZXg6IG51bWJlcikge1xyXG4gICAgdGhpcy5kZWxldGVFdmVudC5lbWl0KGluZGV4KTtcclxuICB9XHJcbiAgZGVsZXRlU2VsZWN0ZWRHcm91cChpbmRleDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLmRlbGV0ZUdyb3VwRXZlbnQuZW1pdChpbmRleCk7XHJcbiAgfVxyXG4gIGNsb3NlKCkge1xyXG4gICAgdGhpcy5jbG9zZUxpc3QuZW1pdCgpO1xyXG5cclxuICB9XHJcbiAgc2VsZWN0ZWRXb3JrZmxvd1R5cGUoZXZlbnQ6IGFueSkge1xyXG4gICAgLy8gZGVidWdnZXJcclxuICB9XHJcblxyXG4gIHNlbGVjdGVkV29ya2Zsb3dDaGFuZ2UoZXZlbnQ6IGFueSkge1xyXG4gICAgY29uc29sZS5sb2coXCJldmVudCA9PT5cIiwgZXZlbnQpO1xyXG4gICAgdGhpcy53b3JrZmxvd1R5cGVDaGFuZ2VkLmVtaXQoZXZlbnQpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwidXNlckdyb3VwLWZsb2F0aW5nLWJhclwiPlxyXG4gIDxkaXYgY2xhc3M9XCJ1c2VyR3JvdXAtZmxvYXRpbmctYmFyLWNvbnRhaW5lclwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImxlZnQgdXNlci1ncm91cC1sZWZ0XCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZERhdGEubGVuZ3RoID4gMCAmJiAhZ3JvdXBzRW5hYmxlZFwiPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMiB2eC1tci0yXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBlbGVtZW50IG9mIHNlbGVjdGVkRGF0YT8uc2xpY2UoMCwgMSk7IGxldCBpID0gaW5kZXhcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZWxlbWVudFwiPlxyXG4gICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgICAhbm9uUmVtb3ZhYmxlVXNlcnNMaXN0LmluY2x1ZGVzKGVsZW1lbnRbZWxlbWVudElkXSkgJiZcclxuICAgICAgICAgICAgICAgICAgcmVtb3ZlUG9zaXRpb24gIT0gJ3JpZ2h0J1xyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJkZWxldGVTZWxlY3RlZChlbGVtZW50KVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXHJcbiAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgIGNsYXNzPVwic3RlcFwiXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInNlbGVjdGVkV29ya2Zsb3cgPT0gJ1NFUVVFTlRJQUwnICYmIHNob3dXb3JrZmxvd1wiXHJcbiAgICAgICAgICAgICAgICA+e3tcclxuICAgICAgICAgICAgICAgICAgc2VsZWN0ZWREYXRhLmxlbmd0aCA8PSAyICYmXHJcbiAgICAgICAgICAgICAgICAgIGkgPT0gc2VsZWN0ZWREYXRhLmxlbmd0aCAtIDEgJiZcclxuICAgICAgICAgICAgICAgICAgc2VsZWN0ZWREYXRhLmxlbmd0aCA+IDFcclxuICAgICAgICAgICAgICAgICAgICA/IFwiRmluYWxcIlxyXG4gICAgICAgICAgICAgICAgICAgIDogaSArIDFcclxuICAgICAgICAgICAgICAgIH19PC9zcGFuXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIihlbGVtZW50W2Rpc3BsYXlFbGVtZW50S2V5XSB8IGRhdGFUeXBlKSAhPT0gJ29iamVjdCdcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxyXG4gICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiZWxlbWVudFtkaXNwbGF5RWxlbWVudEtleV1cIlxyXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxyXG4gICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXHJcbiAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICA+e3sgZWxlbWVudFtkaXNwbGF5RWxlbWVudEtleV0gfX08L3NwYW5cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiKGVsZW1lbnRbZGlzcGxheUVsZW1lbnRLZXldIHwgZGF0YVR5cGUpID09PSAnb2JqZWN0J1wiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXHJcbiAgICAgICAgICAgICAgICA+e3tcclxuICAgICAgICAgICAgICAgICAgZWxlbWVudFtkaXNwbGF5RWxlbWVudEtleV1cclxuICAgICAgICAgICAgICAgICAgICB8IHNsaWNlIDogZWxlbWVudFtkaXNwbGF5RWxlbWVudEtleV0ubGVuZ3RoIC0gMVxyXG4gICAgICAgICAgICAgICAgfX08L3NwYW5cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTIgdngtcGFyYWdyYXBoLXR4dCB2eC1tbC0xXCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgICFub25SZW1vdmFibGVVc2Vyc0xpc3QuaW5jbHVkZXMoZWxlbWVudFtlbGVtZW50SWRdKSAmJlxyXG4gICAgICAgICAgICAgICAgICByZW1vdmVQb3NpdGlvbiA9PSAncmlnaHQnXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZVNlbGVjdGVkKGVsZW1lbnQpXCJcclxuICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgKm5nSWY9XCJzZWxlY3RlZERhdGE/Lmxlbmd0aCA+IDFcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxyXG4gICAgICAgICAgICBbY2xhc3MuZ3JlZW5CZ109XCJmYWxzZVwiXHJcbiAgICAgICAgICAgIGFwcFBvcG92ZXJcclxuICAgICAgICAgICAgKGNsaWNrKT1cInVzZXJQb3BvdmVyLnBvcG92ZXIoKVwiXHJcbiAgICAgICAgICAgIHBsYWNlbWVudD1cImxlZnRcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICAre3sgc2VsZWN0ZWREYXRhPy5zbGljZSgxKT8ubGVuZ3RoIH19XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm5hbWVcIiAqbmdJZj1cInNlbGVjdGVkRGF0YT8ubGVuZ3RoID4gMVwiPlxyXG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJzZWxlY3RlZERhdGE/LnNsaWNlKDEpLmxlbmd0aCA9PT0gMVwiPnt7XHJcbiAgICAgICAgICAgIHNpbmd1bGFyVGV4dFxyXG4gICAgICAgICAgfX08L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiAqbmdJZj1cInNlbGVjdGVkRGF0YT8uc2xpY2UoMSkubGVuZ3RoID4gMVwiPnt7XHJcbiAgICAgICAgICAgIHBsdXJhbFRleHRcclxuICAgICAgICAgIH19PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImdyb3Vwc0VuYWJsZWRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidXNlci1ncm91cC1jaGlwXCIgKm5nSWY9XCJzZWxlY3RlZERhdGE/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgPGkgKGNsaWNrKT1cImRlbGV0ZVNlbGVjdGVkKHNlbGVjdGVkRGF0YVswXSlcIiBjbGFzcz1cImljb25zIGNyb3NzXCJcclxuICAgICAgICAgICAgPiYjeGU5YWU7PC9pXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwidXNlci1ncm91cC1uYW1lXCJcclxuICAgICAgICAgICAgYXBwVG9vbHRpcD1cInt7IHNlbGVjdGVkRGF0YVswXVtkaXNwbGF5RWxlbWVudEtleV0gfX1cIlxyXG4gICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXHJcbiAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXHJcbiAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3sgc2VsZWN0ZWREYXRhWzBdW2Rpc3BsYXlFbGVtZW50S2V5XSB9fVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiY291bnRlclwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwic2VsZWN0ZWREYXRhPy5sZW5ndGggPiAxXCJcclxuICAgICAgICAgICAgYXBwUG9wb3ZlclxyXG4gICAgICAgICAgICAoY2xpY2spPVwiVXNlcldpdGhGZWF0dXJlRmxhZ1BvcG92ZXIucG9wb3ZlcigpXCJcclxuICAgICAgICAgICAgcGxhY2VtZW50PVwibGVmdFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgICt7eyBzZWxlY3RlZERhdGE/Lmxlbmd0aCAtIDEgfX1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwibmFtZSB1c2VyR3JvdXAtbmFtZVwiXHJcbiAgICAgICAgICAqbmdJZj1cInNlbGVjdGVkRGF0YT8ubGVuZ3RoID4gMCAmJiBncm91cHNFbmFibGVkXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInVzZXJHcm91cC10ZXh0XCIgKm5nSWY9XCJzZWxlY3RlZERhdGE/Lmxlbmd0aCA9PT0gMVwiPlxyXG4gICAgICAgICAgICB7e1xyXG4gICAgICAgICAgICAgIHNlbGVjdGVkR3JvdXBzICYmIHNlbGVjdGVkR3JvdXBzPy5sZW5ndGggPiAwID8gXCIgJiBcIiA6IFwiXCJcclxuICAgICAgICAgICAgfX08L3NwYW5cclxuICAgICAgICAgID5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidXNlckdyb3VwLXRleHRcIiAqbmdJZj1cInNlbGVjdGVkRGF0YT8ubGVuZ3RoID4gMVwiXHJcbiAgICAgICAgICAgID5Vc2Vyc1xyXG4gICAgICAgICAgICB7e1xyXG4gICAgICAgICAgICAgIHNlbGVjdGVkR3JvdXBzICYmIHNlbGVjdGVkR3JvdXBzPy5sZW5ndGggPiAwID8gXCIgJiBcIiA6IFwic2VsZWN0ZWRcIlxyXG4gICAgICAgICAgICB9fTwvc3BhblxyXG4gICAgICAgICAgPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ1c2VyLWdyb3VwLWNoaXBcIiAqbmdJZj1cInNlbGVjdGVkR3JvdXBzPy5sZW5ndGhcIj5cclxuICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3NcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlU2VsZWN0ZWRHcm91cChzZWxlY3RlZEdyb3Vwc1swXSlcIlxyXG4gICAgICAgICAgICA+JiN4ZTlhZTs8L2lcclxuICAgICAgICAgID5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJ1c2VyLWdyb3VwLW5hbWVcIlxyXG4gICAgICAgICAgICBhcHBUb29sdGlwPVwie3sgc2VsZWN0ZWRHcm91cHNbMF0/Lmdyb3VwX25hbWUgfX1cIlxyXG4gICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXHJcbiAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXHJcbiAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3sgc2VsZWN0ZWRHcm91cHNbMF0/Lmdyb3VwX25hbWUgfX1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImNvdW50ZXIgZ3JvdXBcIlxyXG4gICAgICAgICAgICAqbmdJZj1cInNlbGVjdGVkR3JvdXBzLmxlbmd0aCA+IDFcIlxyXG4gICAgICAgICAgICBhcHBQb3BvdmVyXHJcbiAgICAgICAgICAgIChjbGljayk9XCJncm91cFBvcG92ZXIucG9wb3ZlcigpXCJcclxuICAgICAgICAgICAgcGxhY2VtZW50PVwibGVmdFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgICt7eyBzZWxlY3RlZEdyb3Vwcy5sZW5ndGggLSAxIH19XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibmFtZSB1c2VyR3JvdXAtbmFtZVwiICpuZ0lmPVwic2VsZWN0ZWRHcm91cHMubGVuZ3RoID4gMFwiPlxyXG4gICAgICAgICAge3sgc2VsZWN0ZWRHcm91cHM/Lmxlbmd0aCA+IDEgPyBcIiBVc2VyIEdyb3VwcyBzZWxlY3RlZCBcIiA6IFwiXCIgfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93RnJlcXVlbmN5VGV4dFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJuYW1lIHZ4LW1sLTBcIj5cclxuICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgID5Zb3UgaGF2ZSBzZWxlY3RlZFxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZ4LWZ3LTUwMCB2eC1sYWJlbC10eHRcIj57eyBjdXJyZW50RnJlcXVlbmN5IH19PC9zcGFuPlxyXG4gICAgICAgICAgICBmcmVxdWVuY3kuPC9zcGFuXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJjZW50ZXJcIlxyXG4gICAgICAqbmdJZj1cIlxyXG4gICAgICAgIChzaG93V29ya2Zsb3cgJiYgbW9kZSA9PT0gJ0NSRUFURScpIHx8XHJcbiAgICAgICAgKHNob3dXb3JrZmxvdyAmJiB3b3JrZmxvd0xpc3QuaW5jbHVkZXMoJ1JPVU5ELVJPQklOJykpXHJcbiAgICAgIFwiXHJcbiAgICA+XHJcbiAgICAgIDxsYWJlbD5cclxuICAgICAgICB7eyB3b3JrZmxvd1RleHQgfX1cclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgY2xhc3M9XCJpY29uXCJcclxuICAgICAgICAgICpuZ0lmPVwid29ya2Zsb3dUZXh0ID09ICdBcHByb3ZhbCBXb3JrZmxvdydcIlxyXG4gICAgICAgICAgbGliUG9wb3ZlckhvdmVyXHJcbiAgICAgICAgICAobW91c2VvdmVyKT1cImRhdGFUb29sdGlwLnBvcG92ZXIoKVwiXHJcbiAgICAgICAgICAobW91c2VsZWF2ZSk9XCJkYXRhVG9vbHRpcC5jbG9zZVBvcG92ZXIoKVwiXHJcbiAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXHJcbiAgICAgICAgICA+PGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MWY7PC9pPjwvc3BhblxyXG4gICAgICAgID5cclxuICAgICAgPC9sYWJlbD5cclxuICAgICAgPHBvcG92ZXItaG92ZXIgI2RhdGFUb29sdGlwPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1pbmZvLWNhcmRcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1pbmZvLWNhcmQtYm9keVwiPlxyXG4gICAgICAgICAgICBZb3UgY2FuIHNlbGVjdCBmcm9tIHRoZSBmb2xsb3dpbmcgdGhyZWUgb3B0aW9uczo8YnIgLz5cclxuICAgICAgICAgICAgPHN0cm9uZz5TZXF1ZW50aWFsOjwvc3Ryb25nPiBUaGUgcG9saWN5IHdvdWxkIGJlIHNlbnQgZm9yIGFwcHJvdmFsXHJcbiAgICAgICAgICAgIG9uZSBhdCBhIHRpbWUgaW4gdGhlIHNlcXVlbmNlIGRlZmluZWQgYnkgeW91LjxiciAvPlxyXG4gICAgICAgICAgICA8c3Ryb25nPlJvdW5kLXJvYmluOjwvc3Ryb25nPiBUaGUgcG9saWN5IHdpbGwgYmUgc2VudCBmb3IgYXBwcm92YWxcclxuICAgICAgICAgICAgdG8gYWxsIGFwcHJvdmVycyBhdCB0aGUgc2FtZSB0aW1lLiBIb3dldmVyLCBpdCBpcyBtYW5kYXRvcnkgZm9yIGFsbFxyXG4gICAgICAgICAgICBhcHByb3ZlcnMgdG8gdGFrZSBhY3Rpb24uPGJyIC8+XHJcbiAgICAgICAgICAgIDxzdHJvbmc+QW55IE9uZTo8L3N0cm9uZz4gVGhlIHBvbGljeSB3aWxsIGJlIHNlbnQgZm9yIGFwcHJvdmFsIHRvXHJcbiAgICAgICAgICAgIGFsbCBhcHByb3ZlcnMgYXQgdGhlIHNhbWUgdGltZS4gSWYgYW55b25lIG9mIHRoZSBhcHByb3ZlciBhcHByb3Zlc1xyXG4gICAgICAgICAgICB0aGUgcG9saWN5LCBpdCB3aWxsIGJlIGNvbnNpZGVyZWQgYXMgYXBwcm92ZWQuXHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9wb3BvdmVyLWhvdmVyPlxyXG4gICAgICA8Y3Mtc2VsZWN0XHJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFdvcmtmbG93XCJcclxuICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzZWxlY3RlZFdvcmtmbG93Q2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCInQXBwcm92YWwgV29ya0Zsb3cgKidcIlxyXG4gICAgICAgIFtzZXRNYXhXaWR0aF09XCJ0cnVlXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxjcy1vcHRpb24gKm5nRm9yPVwibGV0IGRhdGEgb2Ygd29ya2Zsb3dMaXN0XCIgW3ZhbHVlXT1cImRhdGFcIj5cclxuICAgICAgICAgIHt7IGRhdGEgfX1cclxuICAgICAgICA8L2NzLW9wdGlvbj5cclxuICAgICAgPC9jcy1zZWxlY3Q+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxyXG4gICAgICA8YnV0dG9uIGFwcFJpcHBsZSBjbGFzcz1cImNhbmNlbFwiIChjbGljayk9XCJjbG9zZSgpXCI+Q2FuY2VsPC9idXR0b24+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICAqbmdJZj1cInNob3dOZXh0QnV0dG9uXCJcclxuICAgICAgICBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZFwiXHJcbiAgICAgICAgKGNsaWNrKT1cIm5leHQoKVwiXHJcbiAgICAgICAgYXBwUmlwcGxlXHJcbiAgICAgID5cclxuICAgICAgICBOZXh0IDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTFlOzwvaT5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbjxhcHAtcG9wb3ZlciAjdXNlclBvcG92ZXIgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxyXG4gICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cclxuICAgICAgPGxpICpuZ0Zvcj1cImxldCBlbGVtZW50IG9mIHNlbGVjdGVkRGF0YT8uc2xpY2UoMSk7IGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cclxuICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgIGNsYXNzPVwidmFsdWVcIlxyXG4gICAgICAgICAgICAqbmdJZj1cIihlbGVtZW50W2Rpc3BsYXlFbGVtZW50S2V5XSB8IGRhdGFUeXBlKSAhPT0gJ29iamVjdCdcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiIW5vblJlbW92YWJsZVVzZXJzTGlzdC5pbmNsdWRlcyhlbGVtZW50W2VsZW1lbnRJZF0pXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlU2VsZWN0ZWQoZWxlbWVudClcIlxyXG4gICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJzdGVwXCJcclxuICAgICAgICAgICAgICAqbmdJZj1cInNlbGVjdGVkV29ya2Zsb3cgPT0gJ1NFUVVFTlRJQUwnICYmIHNob3dXb3JrZmxvd1wiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7eyBpID09IHNlbGVjdGVkRGF0YS5zbGljZSgxKS5sZW5ndGggLSAxID8gXCJGaW5hbFwiIDogaSArIDIgfX1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICB7eyBlbGVtZW50W2Rpc3BsYXlFbGVtZW50S2V5XSB9fVxyXG4gICAgICAgICAgPC9zcGFuPlxyXG5cclxuICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgIGNsYXNzPVwidmFsdWVcIlxyXG4gICAgICAgICAgICAqbmdJZj1cIihlbGVtZW50W2Rpc3BsYXlFbGVtZW50S2V5XSB8IGRhdGFUeXBlKSA9PT0gJ29iamVjdCdcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiIW5vblJlbW92YWJsZVVzZXJzTGlzdC5pbmNsdWRlcyhlbGVtZW50W2VsZW1lbnRJZF0pXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlU2VsZWN0ZWQoZWxlbWVudClcIlxyXG4gICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHt7IGVsZW1lbnRbZGlzcGxheUVsZW1lbnRLZXldIH19XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgZGVmYXVsdFNlbGVjdGVkPy5jYXRlZ29yeV9pZCAmJlxyXG4gICAgICAgICAgICAgIGRlZmF1bHRTZWxlY3RlZD8uY2F0ZWdvcnlfaWQgPT09IGVsZW1lbnQ/LmNhdGVnb3J5X2lkXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwicHJpbWFyeS1sYWJlbFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIFBSSU1BUllcclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2xpPlxyXG4gICAgPC91bD5cclxuICA8L2Rpdj5cclxuPC9hcHAtcG9wb3Zlcj5cclxuPGFwcC1wb3BvdmVyICNVc2VyV2l0aEZlYXR1cmVGbGFnUG9wb3ZlciBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XHJcbiAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XHJcbiAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxyXG4gICAgICA8bGkgKm5nRm9yPVwibGV0IGRhdGEgb2Ygc2VsZWN0ZWREYXRhIHwgc2xpY2UgOiAxXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCJcclxuICAgICAgICAgICAgPjxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwiZGVsZXRlU2VsZWN0ZWQoZGF0YSlcIj4mI3hlOTBkOzwvaVxyXG4gICAgICAgICAgICA+e3sgZGF0YVtkaXNwbGF5RWxlbWVudEtleV0gfX08L3NwYW5cclxuICAgICAgICAgID5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9saT5cclxuICAgIDwvdWw+XHJcbiAgPC9kaXY+XHJcbjwvYXBwLXBvcG92ZXI+XHJcbjxhcHAtcG9wb3ZlciAjZ3JvdXBQb3BvdmVyIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cclxuICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cclxuICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XHJcbiAgICAgIDxsaSAqbmdGb3I9XCJsZXQgZGF0YSBvZiBzZWxlY3RlZEdyb3VwcyB8IHNsaWNlIDogMVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiXHJcbiAgICAgICAgICAgID48aSBjbGFzcz1cImljb25zXCIgKGNsaWNrKT1cImRlbGV0ZVNlbGVjdGVkR3JvdXAoZGF0YSlcIj4mI3hlOTBkOzwvaVxyXG4gICAgICAgICAgICA+e3sgZGF0YVtcImdyb3VwX25hbWVcIl0gfX08L3NwYW5cclxuICAgICAgICAgID5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9saT5cclxuICAgIDwvdWw+XHJcbiAgPC9kaXY+XHJcbjwvYXBwLXBvcG92ZXI+XHJcbiJdfQ==
|
|
122
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvYXRpbmctYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3NoYXJlZENvbXBvbmVudHMvZmxvYXRpbmctYmFyL2Zsb2F0aW5nLWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL2Zsb2F0aW5nLWJhci9mbG9hdGluZy1iYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBRUwsTUFBTSxFQUNOLFlBQVksR0FFYixNQUFNLGVBQWUsQ0FBQzs7Ozs7O0FBT3ZCLE1BQU0sT0FBTyxvQkFBb0I7SUFpQy9CO1FBOUJTLHNCQUFpQixHQUFHLEVBQUUsQ0FBQztRQUN2QixjQUFTLEdBQVEsRUFBRSxDQUFDO1FBQ3BCLGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFDaEIsbUJBQWMsR0FBRyxJQUFJLENBQUM7UUFDdEIsc0JBQWlCLEdBQUcsS0FBSyxDQUFDO1FBQzFCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLHFCQUFnQixHQUFHLEVBQUUsQ0FBQztRQUN0QixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25CLGlCQUFZLEdBQUc7WUFDdEIsWUFBWTtZQUNaLHdDQUF3QztTQUN6QyxDQUFDO1FBR08sU0FBSSxHQUFXLFFBQVEsQ0FBQztRQUNqQyxvQkFBZSxHQUFRLEVBQUUsQ0FBQztRQU1qQiwwQkFBcUIsR0FBUSxFQUFFLENBQUM7UUFFL0IsZUFBVSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ25ELGdCQUFXLEdBQXlCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDdkQsY0FBUyxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2xELHFCQUFnQixHQUF5QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzVELHdCQUFtQixHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRXBFLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFmRCxJQUE4QixvQkFBb0IsQ0FBQyxLQUFVO1FBQzNELElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUM1QyxDQUFDO0lBZUQsV0FBVyxLQUFJLENBQUM7SUFFaEIsUUFBUSxLQUFVLENBQUM7SUFFbkIsSUFBSTtRQUNGLElBQUksWUFBWSxDQUFDO1FBQ2pCLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ25DLFlBQVksR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7U0FDMUU7YUFBTTtZQUNMLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1NBQ2xDO1FBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELGNBQWMsQ0FBQyxLQUFhO1FBQzFCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFDRCxtQkFBbUIsQ0FBQyxLQUFhO1FBQy9CLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUNELEtBQUs7UUFDSCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFDRCxvQkFBb0IsQ0FBQyxLQUFVO1FBQzdCLFdBQVc7SUFDYixDQUFDO0lBRUQsc0JBQXNCLENBQUMsS0FBVTtRQUMvQixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7O2lIQW5FVSxvQkFBb0I7cUdBQXBCLG9CQUFvQix1N0JDZGpDLHNpV0EyU0E7MkZEN1JhLG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDRSxrQkFBa0I7MEVBS25CLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBSUcsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBRXdCLG9CQUFvQjtzQkFBakQsS0FBSzt1QkFBQyxpQkFBaUI7Z0JBR2YsYUFBYTtzQkFBckIsS0FBSztnQkFFRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDSSxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTTtnQkFDRyxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBQ0csbUJBQW1CO3NCQUE1QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgSW5wdXQsXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgT25DaGFuZ2VzLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtZmxvYXRpbmctYmFyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZmxvYXRpbmctYmFyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9mbG9hdGluZy1iYXIuY29tcG9uZW50Lmxlc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEZsb2F0aW5nQmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xyXG4gIEBJbnB1dCgpIHNlbGVjdGVkRGF0YTogYW55O1xyXG4gIEBJbnB1dCgpIHNlbGVjdGVkR3JvdXBzOiBhbnk7XHJcbiAgQElucHV0KCkgZGlzcGxheUVsZW1lbnRLZXkgPSAnJztcclxuICBASW5wdXQoKSBlbGVtZW50SWQ6IGFueSA9ICcnO1xyXG4gIEBJbnB1dCgpIHNpbmd1bGFyVGV4dCA9ICcnO1xyXG4gIEBJbnB1dCgpIHBsdXJhbFRleHQgPSAnJztcclxuICBASW5wdXQoKSBzaG93TmV4dEJ1dHRvbiA9IHRydWU7XHJcbiAgQElucHV0KCkgc2hvd0ZyZXF1ZW5jeVRleHQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBzaG93V29ya2Zsb3cgPSBmYWxzZTtcclxuICBASW5wdXQoKSB3b3JrZmxvd1RleHQgPSAnJztcclxuICBASW5wdXQoKSBjdXJyZW50RnJlcXVlbmN5ID0gJyc7XHJcbiAgQElucHV0KCkgaXNEaXNhYmxlZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHdvcmtmbG93TGlzdCA9IFtcclxuICAgICdTRVFVRU5USUFMJyxcclxuICAgICdBTlkgUkVWSUVXRVIgQ0FOIE1BUksgVEhJUyBBUyBSRVZJRVdFRCcsXHJcbiAgXTtcclxuICBASW5wdXQoKSBzZWxlY3RlZFdvcmtmbG93OiBhbnk7XHJcbiAgQElucHV0KCkgd29ya2Zsb3dQbGFjZUhvbGRlcjogYW55O1xyXG4gIEBJbnB1dCgpIG1vZGU6IHN0cmluZyA9ICdDUkVBVEUnO1xyXG4gIGRlZmF1bHRTZWxlY3RlZDogYW55ID0ge307XHJcbiAgQElucHV0KCdkZWZhdWx0U2VsZWN0ZWQnKSBzZXQgZGVmYXVsdFNlbGVjdGVkVmFsdWUodmFsdWU6IGFueSkge1xyXG4gICAgdGhpcy5kZWZhdWx0U2VsZWN0ZWQgPSB2YWx1ZSA/IHZhbHVlIDoge307XHJcbiAgfVxyXG4gIEBJbnB1dCgpIGdyb3Vwc0VuYWJsZWQ6IGFueTtcclxuXHJcbiAgQElucHV0KCkgbm9uUmVtb3ZhYmxlVXNlcnNMaXN0OiBhbnkgPSBbXTtcclxuICBASW5wdXQoKSByZW1vdmVQb3NpdGlvbjogYW55O1xyXG4gIEBPdXRwdXQoKSBjbG9zZUV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZGVsZXRlRXZlbnQ6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBjbG9zZUxpc3Q6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBkZWxldGVHcm91cEV2ZW50OiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgd29ya2Zsb3dUeXBlQ2hhbmdlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkRGF0YSA9IFtdO1xyXG4gICAgdGhpcy5zZWxlY3RlZEdyb3VwcyA9IFtdO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHt9XHJcblxyXG4gIG5leHQoKSB7XHJcbiAgICBsZXQgc2VsZWN0ZWREYXRhO1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRHcm91cHM/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgc2VsZWN0ZWREYXRhID0geyB1c2VyczogdGhpcy5zZWxlY3RlZERhdGEsIGdyb3VwczogdGhpcy5zZWxlY3RlZEdyb3VwcyB9O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc2VsZWN0ZWREYXRhID0gdGhpcy5zZWxlY3RlZERhdGE7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNsb3NlRXZlbnQuZW1pdChzZWxlY3RlZERhdGEpO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlU2VsZWN0ZWQoaW5kZXg6IG51bWJlcikge1xyXG4gICAgdGhpcy5kZWxldGVFdmVudC5lbWl0KGluZGV4KTtcclxuICB9XHJcbiAgZGVsZXRlU2VsZWN0ZWRHcm91cChpbmRleDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLmRlbGV0ZUdyb3VwRXZlbnQuZW1pdChpbmRleCk7XHJcbiAgfVxyXG4gIGNsb3NlKCkge1xyXG4gICAgdGhpcy5jbG9zZUxpc3QuZW1pdCgpO1xyXG4gIH1cclxuICBzZWxlY3RlZFdvcmtmbG93VHlwZShldmVudDogYW55KSB7XHJcbiAgICAvLyBkZWJ1Z2dlclxyXG4gIH1cclxuXHJcbiAgc2VsZWN0ZWRXb3JrZmxvd0NoYW5nZShldmVudDogYW55KSB7XHJcbiAgICB0aGlzLndvcmtmbG93VHlwZUNoYW5nZWQuZW1pdChldmVudCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJ1c2VyR3JvdXAtZmxvYXRpbmctYmFyXCI+XHJcbiAgPGRpdiBjbGFzcz1cInVzZXJHcm91cC1mbG9hdGluZy1iYXItY29udGFpbmVyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibGVmdCB1c2VyLWdyb3VwLWxlZnRcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkRGF0YS5sZW5ndGggPiAwICYmICFncm91cHNFbmFibGVkXCI+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yIHZ4LW1yLTJcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGVsZW1lbnQgb2Ygc2VsZWN0ZWREYXRhPy5zbGljZSgwLCAxKTsgbGV0IGkgPSBpbmRleFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlbGVtZW50XCI+XHJcbiAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgICFub25SZW1vdmFibGVVc2Vyc0xpc3QuaW5jbHVkZXMoZWxlbWVudFtlbGVtZW50SWRdKSAmJlxyXG4gICAgICAgICAgICAgICAgICByZW1vdmVQb3NpdGlvbiAhPSAncmlnaHQnXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZVNlbGVjdGVkKGVsZW1lbnQpXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcclxuICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzdGVwXCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwic2VsZWN0ZWRXb3JrZmxvdyA9PSAnU0VRVUVOVElBTCcgJiYgc2hvd1dvcmtmbG93XCJcclxuICAgICAgICAgICAgICAgID57e1xyXG4gICAgICAgICAgICAgICAgICBzZWxlY3RlZERhdGEubGVuZ3RoIDw9IDIgJiZcclxuICAgICAgICAgICAgICAgICAgaSA9PSBzZWxlY3RlZERhdGEubGVuZ3RoIC0gMSAmJlxyXG4gICAgICAgICAgICAgICAgICBzZWxlY3RlZERhdGEubGVuZ3RoID4gMVxyXG4gICAgICAgICAgICAgICAgICAgID8gXCJGaW5hbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgOiBpICsgMVxyXG4gICAgICAgICAgICAgICAgfX08L3NwYW5cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiKGVsZW1lbnRbZGlzcGxheUVsZW1lbnRLZXldIHwgZGF0YVR5cGUpICE9PSAnb2JqZWN0J1wiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXHJcbiAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJlbGVtZW50W2Rpc3BsYXlFbGVtZW50S2V5XVwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXHJcbiAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcclxuICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgID57eyBlbGVtZW50W2Rpc3BsYXlFbGVtZW50S2V5XSB9fTwvc3BhblxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIoZWxlbWVudFtkaXNwbGF5RWxlbWVudEtleV0gfCBkYXRhVHlwZSkgPT09ICdvYmplY3QnXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcclxuICAgICAgICAgICAgICAgID57e1xyXG4gICAgICAgICAgICAgICAgICBlbGVtZW50W2Rpc3BsYXlFbGVtZW50S2V5XVxyXG4gICAgICAgICAgICAgICAgICAgIHwgc2xpY2UgOiBlbGVtZW50W2Rpc3BsYXlFbGVtZW50S2V5XS5sZW5ndGggLSAxXHJcbiAgICAgICAgICAgICAgICB9fTwvc3BhblxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMiB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1sLTFcIlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgICAgIW5vblJlbW92YWJsZVVzZXJzTGlzdC5pbmNsdWRlcyhlbGVtZW50W2VsZW1lbnRJZF0pICYmXHJcbiAgICAgICAgICAgICAgICAgIHJlbW92ZVBvc2l0aW9uID09ICdyaWdodCdcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlU2VsZWN0ZWQoZWxlbWVudClcIlxyXG4gICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAqbmdJZj1cInNlbGVjdGVkRGF0YT8ubGVuZ3RoID4gMVwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5ncmVlbkJnXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgYXBwUG9wb3ZlclxyXG4gICAgICAgICAgICAoY2xpY2spPVwidXNlclBvcG92ZXIucG9wb3ZlcigpXCJcclxuICAgICAgICAgICAgcGxhY2VtZW50PVwibGVmdFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgICt7eyBzZWxlY3RlZERhdGE/LnNsaWNlKDEpPy5sZW5ndGggfX1cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibmFtZVwiICpuZ0lmPVwic2VsZWN0ZWREYXRhPy5sZW5ndGggPiAxXCI+XHJcbiAgICAgICAgICA8c3BhbiAqbmdJZj1cInNlbGVjdGVkRGF0YT8uc2xpY2UoMSkubGVuZ3RoID09PSAxXCI+e3tcclxuICAgICAgICAgICAgc2luZ3VsYXJUZXh0XHJcbiAgICAgICAgICB9fTwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2VsZWN0ZWREYXRhPy5zbGljZSgxKS5sZW5ndGggPiAxXCI+e3tcclxuICAgICAgICAgICAgcGx1cmFsVGV4dFxyXG4gICAgICAgICAgfX08L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZ3JvdXBzRW5hYmxlZFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ1c2VyLWdyb3VwLWNoaXBcIiAqbmdJZj1cInNlbGVjdGVkRGF0YT8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICA8aSAoY2xpY2spPVwiZGVsZXRlU2VsZWN0ZWQoc2VsZWN0ZWREYXRhWzBdKVwiIGNsYXNzPVwiaWNvbnMgY3Jvc3NcIlxyXG4gICAgICAgICAgICA+JiN4ZTlhZTs8L2lcclxuICAgICAgICAgID5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJ1c2VyLWdyb3VwLW5hbWVcIlxyXG4gICAgICAgICAgICBhcHBUb29sdGlwPVwie3sgc2VsZWN0ZWREYXRhWzBdW2Rpc3BsYXlFbGVtZW50S2V5XSB9fVwiXHJcbiAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcclxuICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcclxuICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7eyBzZWxlY3RlZERhdGFbMF1bZGlzcGxheUVsZW1lbnRLZXldIH19XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJjb3VudGVyXCJcclxuICAgICAgICAgICAgKm5nSWY9XCJzZWxlY3RlZERhdGE/Lmxlbmd0aCA+IDFcIlxyXG4gICAgICAgICAgICBhcHBQb3BvdmVyXHJcbiAgICAgICAgICAgIChjbGljayk9XCJVc2VyV2l0aEZlYXR1cmVGbGFnUG9wb3Zlci5wb3BvdmVyKClcIlxyXG4gICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgK3t7IHNlbGVjdGVkRGF0YT8ubGVuZ3RoIC0gMSB9fVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJuYW1lIHVzZXJHcm91cC1uYW1lXCJcclxuICAgICAgICAgICpuZ0lmPVwic2VsZWN0ZWREYXRhPy5sZW5ndGggPiAwICYmIGdyb3Vwc0VuYWJsZWRcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidXNlckdyb3VwLXRleHRcIiAqbmdJZj1cInNlbGVjdGVkRGF0YT8ubGVuZ3RoID09PSAxXCI+XHJcbiAgICAgICAgICAgIHt7XHJcbiAgICAgICAgICAgICAgc2VsZWN0ZWRHcm91cHMgJiYgc2VsZWN0ZWRHcm91cHM/Lmxlbmd0aCA+IDAgPyBcIiAmIFwiIDogXCJcIlxyXG4gICAgICAgICAgICB9fTwvc3BhblxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1c2VyR3JvdXAtdGV4dFwiICpuZ0lmPVwic2VsZWN0ZWREYXRhPy5sZW5ndGggPiAxXCJcclxuICAgICAgICAgICAgPlVzZXJzXHJcbiAgICAgICAgICAgIHt7XHJcbiAgICAgICAgICAgICAgc2VsZWN0ZWRHcm91cHMgJiYgc2VsZWN0ZWRHcm91cHM/Lmxlbmd0aCA+IDAgPyBcIiAmIFwiIDogXCJzZWxlY3RlZFwiXHJcbiAgICAgICAgICAgIH19PC9zcGFuXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInVzZXItZ3JvdXAtY2hpcFwiICpuZ0lmPVwic2VsZWN0ZWRHcm91cHM/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgPGlcclxuICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zc1wiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJkZWxldGVTZWxlY3RlZEdyb3VwKHNlbGVjdGVkR3JvdXBzWzBdKVwiXHJcbiAgICAgICAgICAgID4mI3hlOWFlOzwvaVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cInVzZXItZ3JvdXAtbmFtZVwiXHJcbiAgICAgICAgICAgIGFwcFRvb2x0aXA9XCJ7eyBzZWxlY3RlZEdyb3Vwc1swXT8uZ3JvdXBfbmFtZSB9fVwiXHJcbiAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcclxuICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcclxuICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7eyBzZWxlY3RlZEdyb3Vwc1swXT8uZ3JvdXBfbmFtZSB9fVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiY291bnRlciBncm91cFwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwic2VsZWN0ZWRHcm91cHMubGVuZ3RoID4gMVwiXHJcbiAgICAgICAgICAgIGFwcFBvcG92ZXJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImdyb3VwUG9wb3Zlci5wb3BvdmVyKClcIlxyXG4gICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgK3t7IHNlbGVjdGVkR3JvdXBzLmxlbmd0aCAtIDEgfX1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJuYW1lIHVzZXJHcm91cC1uYW1lXCIgKm5nSWY9XCJzZWxlY3RlZEdyb3Vwcy5sZW5ndGggPiAwXCI+XHJcbiAgICAgICAgICB7eyBzZWxlY3RlZEdyb3Vwcz8ubGVuZ3RoID4gMSA/IFwiIFVzZXIgR3JvdXBzIHNlbGVjdGVkIFwiIDogXCJcIiB9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dGcmVxdWVuY3lUZXh0XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm5hbWUgdngtbWwtMFwiPlxyXG4gICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgPllvdSBoYXZlIHNlbGVjdGVkXHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnctNTAwIHZ4LWxhYmVsLXR4dFwiPnt7IGN1cnJlbnRGcmVxdWVuY3kgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIGZyZXF1ZW5jeS48L3NwYW5cclxuICAgICAgICAgID5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImNlbnRlclwiXHJcbiAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgKHNob3dXb3JrZmxvdyAmJiBtb2RlID09PSAnQ1JFQVRFJykgfHxcclxuICAgICAgICAoc2hvd1dvcmtmbG93ICYmIHdvcmtmbG93TGlzdC5pbmNsdWRlcygnUk9VTkQtUk9CSU4nKSlcclxuICAgICAgXCJcclxuICAgID5cclxuICAgICAgPGxhYmVsPlxyXG4gICAgICAgIHt7IHdvcmtmbG93VGV4dCB9fVxyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICBjbGFzcz1cImljb25cIlxyXG4gICAgICAgICAgKm5nSWY9XCJ3b3JrZmxvd1RleHQgPT0gJ0FwcHJvdmFsIFdvcmtmbG93J1wiXHJcbiAgICAgICAgICBsaWJQb3BvdmVySG92ZXJcclxuICAgICAgICAgIChtb3VzZW92ZXIpPVwiZGF0YVRvb2x0aXAucG9wb3ZlcigpXCJcclxuICAgICAgICAgIChtb3VzZWxlYXZlKT1cImRhdGFUb29sdGlwLmNsb3NlUG9wb3ZlcigpXCJcclxuICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcclxuICAgICAgICAgID48aSBjbGFzcz1cImljb25zXCI+JiN4ZTkxZjs8L2k+PC9zcGFuXHJcbiAgICAgICAgPlxyXG4gICAgICA8L2xhYmVsPlxyXG4gICAgICA8cG9wb3Zlci1ob3ZlciAjZGF0YVRvb2x0aXA+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWluZm8tY2FyZFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWluZm8tY2FyZC1ib2R5XCI+XHJcbiAgICAgICAgICAgIFlvdSBjYW4gc2VsZWN0IGZyb20gdGhlIGZvbGxvd2luZyB0aHJlZSBvcHRpb25zOjxiciAvPlxyXG4gICAgICAgICAgICA8c3Ryb25nPlNlcXVlbnRpYWw6PC9zdHJvbmc+IFRoZSBwb2xpY3kgd291bGQgYmUgc2VudCBmb3IgYXBwcm92YWxcclxuICAgICAgICAgICAgb25lIGF0IGEgdGltZSBpbiB0aGUgc2VxdWVuY2UgZGVmaW5lZCBieSB5b3UuPGJyIC8+XHJcbiAgICAgICAgICAgIDxzdHJvbmc+Um91bmQtcm9iaW46PC9zdHJvbmc+IFRoZSBwb2xpY3kgd2lsbCBiZSBzZW50IGZvciBhcHByb3ZhbFxyXG4gICAgICAgICAgICB0byBhbGwgYXBwcm92ZXJzIGF0IHRoZSBzYW1lIHRpbWUuIEhvd2V2ZXIsIGl0IGlzIG1hbmRhdG9yeSBmb3IgYWxsXHJcbiAgICAgICAgICAgIGFwcHJvdmVycyB0byB0YWtlIGFjdGlvbi48YnIgLz5cclxuICAgICAgICAgICAgPHN0cm9uZz5BbnkgT25lOjwvc3Ryb25nPiBUaGUgcG9saWN5IHdpbGwgYmUgc2VudCBmb3IgYXBwcm92YWwgdG9cclxuICAgICAgICAgICAgYWxsIGFwcHJvdmVycyBhdCB0aGUgc2FtZSB0aW1lLiBJZiBhbnlvbmUgb2YgdGhlIGFwcHJvdmVyIGFwcHJvdmVzXHJcbiAgICAgICAgICAgIHRoZSBwb2xpY3ksIGl0IHdpbGwgYmUgY29uc2lkZXJlZCBhcyBhcHByb3ZlZC5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L3BvcG92ZXItaG92ZXI+XHJcbiAgICAgIDxjcy1zZWxlY3RcclxuICAgICAgICBbKG5nTW9kZWwpXT1cInNlbGVjdGVkV29ya2Zsb3dcIlxyXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNlbGVjdGVkV29ya2Zsb3dDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidBcHByb3ZhbCBXb3JrRmxvdyAqJ1wiXHJcbiAgICAgICAgW3NldE1heFdpZHRoXT1cInRydWVcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGNzLW9wdGlvbiAqbmdGb3I9XCJsZXQgZGF0YSBvZiB3b3JrZmxvd0xpc3RcIiBbdmFsdWVdPVwiZGF0YVwiPlxyXG4gICAgICAgICAge3sgZGF0YSB9fVxyXG4gICAgICAgIDwvY3Mtb3B0aW9uPlxyXG4gICAgICA8L2NzLXNlbGVjdD5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XHJcbiAgICAgIDxidXR0b24gYXBwUmlwcGxlIGNsYXNzPVwiY2FuY2VsXCIgKGNsaWNrKT1cImNsb3NlKClcIj5DYW5jZWw8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgICpuZ0lmPVwic2hvd05leHRCdXR0b25cIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkXCJcclxuICAgICAgICAoY2xpY2spPVwibmV4dCgpXCJcclxuICAgICAgICBhcHBSaXBwbGVcclxuICAgICAgPlxyXG4gICAgICAgIE5leHQgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MWU7PC9pPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuPGFwcC1wb3BvdmVyICN1c2VyUG9wb3ZlciBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XHJcbiAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XHJcbiAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxyXG4gICAgICA8bGkgKm5nRm9yPVwibGV0IGVsZW1lbnQgb2Ygc2VsZWN0ZWREYXRhPy5zbGljZSgxKTsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxyXG4gICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgY2xhc3M9XCJ2YWx1ZVwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiKGVsZW1lbnRbZGlzcGxheUVsZW1lbnRLZXldIHwgZGF0YVR5cGUpICE9PSAnb2JqZWN0J1wiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCIhbm9uUmVtb3ZhYmxlVXNlcnNMaXN0LmluY2x1ZGVzKGVsZW1lbnRbZWxlbWVudElkXSlcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJkZWxldGVTZWxlY3RlZChlbGVtZW50KVwiXHJcbiAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICBjbGFzcz1cInN0ZXBcIlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwic2VsZWN0ZWRXb3JrZmxvdyA9PSAnU0VRVUVOVElBTCcgJiYgc2hvd1dvcmtmbG93XCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHt7IGkgPT0gc2VsZWN0ZWREYXRhLnNsaWNlKDEpLmxlbmd0aCAtIDEgPyBcIkZpbmFsXCIgOiBpICsgMiB9fVxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIHt7IGVsZW1lbnRbZGlzcGxheUVsZW1lbnRLZXldIH19XHJcbiAgICAgICAgICA8L3NwYW4+XHJcblxyXG4gICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgY2xhc3M9XCJ2YWx1ZVwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiKGVsZW1lbnRbZGlzcGxheUVsZW1lbnRLZXldIHwgZGF0YVR5cGUpID09PSAnb2JqZWN0J1wiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCIhbm9uUmVtb3ZhYmxlVXNlcnNMaXN0LmluY2x1ZGVzKGVsZW1lbnRbZWxlbWVudElkXSlcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJkZWxldGVTZWxlY3RlZChlbGVtZW50KVwiXHJcbiAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAge3sgZWxlbWVudFtkaXNwbGF5RWxlbWVudEtleV0gfX1cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICBkZWZhdWx0U2VsZWN0ZWQ/LmNhdGVnb3J5X2lkICYmXHJcbiAgICAgICAgICAgICAgZGVmYXVsdFNlbGVjdGVkPy5jYXRlZ29yeV9pZCA9PT0gZWxlbWVudD8uY2F0ZWdvcnlfaWRcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJwcmltYXJ5LWxhYmVsXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgUFJJTUFSWVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbGk+XHJcbiAgICA8L3VsPlxyXG4gIDwvZGl2PlxyXG48L2FwcC1wb3BvdmVyPlxyXG48YXBwLXBvcG92ZXIgI1VzZXJXaXRoRmVhdHVyZUZsYWdQb3BvdmVyIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cclxuICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cclxuICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XHJcbiAgICAgIDxsaSAqbmdGb3I9XCJsZXQgZGF0YSBvZiBzZWxlY3RlZERhdGEgfCBzbGljZSA6IDFcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIlxyXG4gICAgICAgICAgICA+PGkgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJkZWxldGVTZWxlY3RlZChkYXRhKVwiPiYjeGU5MGQ7PC9pXHJcbiAgICAgICAgICAgID57eyBkYXRhW2Rpc3BsYXlFbGVtZW50S2V5XSB9fTwvc3BhblxyXG4gICAgICAgICAgPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2xpPlxyXG4gICAgPC91bD5cclxuICA8L2Rpdj5cclxuPC9hcHAtcG9wb3Zlcj5cclxuPGFwcC1wb3BvdmVyICNncm91cFBvcG92ZXIgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxyXG4gICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cclxuICAgICAgPGxpICpuZ0Zvcj1cImxldCBkYXRhIG9mIHNlbGVjdGVkR3JvdXBzIHwgc2xpY2UgOiAxXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCJcclxuICAgICAgICAgICAgPjxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwiZGVsZXRlU2VsZWN0ZWRHcm91cChkYXRhKVwiPiYjeGU5MGQ7PC9pXHJcbiAgICAgICAgICAgID57eyBkYXRhW1wiZ3JvdXBfbmFtZVwiXSB9fTwvc3BhblxyXG4gICAgICAgICAgPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2xpPlxyXG4gICAgPC91bD5cclxuICA8L2Rpdj5cclxuPC9hcHAtcG9wb3Zlcj5cclxuIl19
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Component, Output, EventEmitter, Input } from '@angular/core';
|
|
1
|
+
import { Component, Output, EventEmitter, Input, } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
import * as i1 from "../../workflow-services/responsibility.service";
|
|
4
4
|
import * as i2 from "../../workflow-services/policy.service";
|
|
@@ -32,7 +32,7 @@ export class FormatAndEvidenceComponent {
|
|
|
32
32
|
};
|
|
33
33
|
this.newLink = {
|
|
34
34
|
link: '',
|
|
35
|
-
containsError: false
|
|
35
|
+
containsError: false,
|
|
36
36
|
};
|
|
37
37
|
this.policyLinkSetList = [
|
|
38
38
|
// 'Policy Charter',
|
|
@@ -40,7 +40,14 @@ export class FormatAndEvidenceComponent {
|
|
|
40
40
|
// 'Procedures Linked to this Policy',
|
|
41
41
|
// 'Implementation Guidelines for this Policy',
|
|
42
42
|
// 'Training Materials for this Policy'
|
|
43
|
-
'Charter',
|
|
43
|
+
'Charter',
|
|
44
|
+
'Related Documents',
|
|
45
|
+
'Reference Materials',
|
|
46
|
+
'Related procedures',
|
|
47
|
+
'Implementation guidelines',
|
|
48
|
+
'Training Materials',
|
|
49
|
+
'Regulatory Documents',
|
|
50
|
+
'Other',
|
|
44
51
|
];
|
|
45
52
|
}
|
|
46
53
|
set formatEvidanceData(value) {
|
|
@@ -55,7 +62,8 @@ export class FormatAndEvidenceComponent {
|
|
|
55
62
|
}
|
|
56
63
|
initializeData(settings, type) {
|
|
57
64
|
this.formate.hasUploadFormate = settings?.formatRequired ?? false;
|
|
58
|
-
this.formate.formateType =
|
|
65
|
+
this.formate.formateType =
|
|
66
|
+
settings?.formatLinks?.length > 0 ? 'LINK' : 'FILE';
|
|
59
67
|
this.formate.isEvidenceRequired = settings?.evidenceRequired ?? false;
|
|
60
68
|
this.formate.links = this.arraytoLinkObject(settings?.formatLinks) ?? [];
|
|
61
69
|
this.formate.files = settings?.formatFiles ?? [];
|
|
@@ -138,7 +146,7 @@ export class FormatAndEvidenceComponent {
|
|
|
138
146
|
resetNewLink() {
|
|
139
147
|
this.newLink = {
|
|
140
148
|
link: '',
|
|
141
|
-
containsError: false
|
|
149
|
+
containsError: false,
|
|
142
150
|
};
|
|
143
151
|
this.emitValue();
|
|
144
152
|
}
|
|
@@ -154,7 +162,9 @@ export class FormatAndEvidenceComponent {
|
|
|
154
162
|
formData.append('file', file);
|
|
155
163
|
if (this.mode == 'policy' || this.mode == 'policyReviewer') {
|
|
156
164
|
const path = 'o/' + this.organization_id + '/policy/';
|
|
157
|
-
this.policyService
|
|
165
|
+
this.policyService
|
|
166
|
+
.fileUploadWorkroom(formData, path)
|
|
167
|
+
.subscribe((data) => {
|
|
158
168
|
this.formate.files.push({
|
|
159
169
|
filepath: path,
|
|
160
170
|
file_name: data.org_file,
|
|
@@ -167,7 +177,9 @@ export class FormatAndEvidenceComponent {
|
|
|
167
177
|
});
|
|
168
178
|
}
|
|
169
179
|
else {
|
|
170
|
-
this.responsibilityService
|
|
180
|
+
this.responsibilityService
|
|
181
|
+
.uploadToNode(formData, 'uploadFormat' + '/')
|
|
182
|
+
.subscribe((data) => {
|
|
171
183
|
this.formate.files.push({
|
|
172
184
|
filepath: 'uploadFormat',
|
|
173
185
|
file_name: data.org_file,
|
|
@@ -187,10 +199,12 @@ export class FormatAndEvidenceComponent {
|
|
|
187
199
|
if (this.mode == 'policy' || this.mode == 'policyReviewer') {
|
|
188
200
|
const payload = {
|
|
189
201
|
isFormateUploaded: this.formate.hasUploadFormate,
|
|
190
|
-
links:
|
|
191
|
-
|
|
202
|
+
links: this.formate.formateType === 'LINK'
|
|
203
|
+
? this.getLinksArray(this.formate.links?.length ? [...this.formate.links] : [])
|
|
204
|
+
: [],
|
|
205
|
+
files: this.formate.formateType === 'FILE' ? this.formate.files : [],
|
|
192
206
|
formateType: this.formate.formateType,
|
|
193
|
-
isEvidenceRequired: this.formate.isEvidenceRequired
|
|
207
|
+
isEvidenceRequired: this.formate.isEvidenceRequired,
|
|
194
208
|
};
|
|
195
209
|
payload.links = payload.links.filter((ele) => ele !== undefined);
|
|
196
210
|
this.updateFiles.emit(payload);
|
|
@@ -198,10 +212,14 @@ export class FormatAndEvidenceComponent {
|
|
|
198
212
|
else {
|
|
199
213
|
const payload = {
|
|
200
214
|
isFormateUploaded: this.formate.hasUploadFormate,
|
|
201
|
-
links:
|
|
202
|
-
|
|
215
|
+
links: this.formate.hasUploadFormate && this.formate.formateType === 'LINK'
|
|
216
|
+
? this.getLinksArray([...this.formate.links])
|
|
217
|
+
: [],
|
|
218
|
+
files: this.formate.hasUploadFormate && this.formate.formateType === 'FILE'
|
|
219
|
+
? this.formate.files
|
|
220
|
+
: [],
|
|
203
221
|
formateType: this.formate.formateType,
|
|
204
|
-
isEvidenceRequired: this.formate.isEvidenceRequired
|
|
222
|
+
isEvidenceRequired: this.formate.isEvidenceRequired,
|
|
205
223
|
};
|
|
206
224
|
payload.links = payload.links.filter((ele) => ele !== undefined);
|
|
207
225
|
this.updateFiles.emit(payload);
|
|
@@ -254,7 +272,9 @@ export class FormatAndEvidenceComponent {
|
|
|
254
272
|
}
|
|
255
273
|
uploadPolicyAttachments(formData) {
|
|
256
274
|
const path = 'o/' + this.organization_id + '/policy/';
|
|
257
|
-
this.policyService
|
|
275
|
+
this.policyService
|
|
276
|
+
.fileUploadWorkroom(formData, path)
|
|
277
|
+
.subscribe((data) => {
|
|
258
278
|
const payload = {
|
|
259
279
|
file_name: data.name,
|
|
260
280
|
original_file_name: data.org_file,
|
|
@@ -266,28 +286,6 @@ export class FormatAndEvidenceComponent {
|
|
|
266
286
|
contract_type: 4,
|
|
267
287
|
folder_id: 0,
|
|
268
288
|
};
|
|
269
|
-
// this.policyService.saveUploadedFiles(payload).subscribe((data: any) => {
|
|
270
|
-
// this.latestUploaded = data.encrypted_id;
|
|
271
|
-
// console.log(data);
|
|
272
|
-
// let all_response = this.policyService.policyCategoryList.getValue() as any;
|
|
273
|
-
// let new_response = data;
|
|
274
|
-
// if (all_response.attachments == undefined) {
|
|
275
|
-
// all_response.push(new_response);
|
|
276
|
-
// } else {
|
|
277
|
-
// all_response.attachments.push(new_response);
|
|
278
|
-
// }
|
|
279
|
-
// this.policyService.policyCategoryList.next(all_response);
|
|
280
|
-
// this.policyService.isUploaded = false;
|
|
281
|
-
// this.isUploading = false;
|
|
282
|
-
// if (this.entity_type == 'survey') {
|
|
283
|
-
// this.fetchFile(true, this.entity_data.survey_id, this.currentFolderId);
|
|
284
|
-
// } else if (this.entity_type == 'contracts') {
|
|
285
|
-
// this.fetchFile(true, this.entity_data.contract_id, this.currentFolderId);
|
|
286
|
-
// } else {
|
|
287
|
-
// this.fetchFile(true, this.entity_data.policy_id ? this.entity_data.policy_id : this.entity_data.contract_id, this.currentFolderId);
|
|
288
|
-
// }
|
|
289
|
-
// }, error => {
|
|
290
|
-
// });
|
|
291
289
|
});
|
|
292
290
|
}
|
|
293
291
|
}
|
|
@@ -307,4 +305,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
307
305
|
}], formatEvidanceData: [{
|
|
308
306
|
type: Input
|
|
309
307
|
}] } });
|
|
310
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0LWFuZC1ldmlkZW5jZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL2Zvcm1hdC1hbmQtZXZpZGVuY2UvZm9ybWF0LWFuZC1ldmlkZW5jZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL2Zvcm1hdC1hbmQtZXZpZGVuY2UvZm9ybWF0LWFuZC1ldmlkZW5jZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixNQUFNLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7Ozs7OztBQVcxRixNQUFNLE9BQU8sMEJBQTBCO0lBWXJDLFlBQ1UscUJBQTRDLEVBQzVDLGFBQTRCLEVBQzVCLFdBQXdCO1FBRnhCLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7UUFDNUMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFkeEIsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2xDLFNBQUksR0FBRyxFQUFFLENBQUM7UUFDVixlQUFVLEdBQVUsRUFBRSxDQUFDO1FBQ3ZCLG9CQUFlLEdBQVEsRUFBRSxDQUFDO1FBTW5DLHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQUMxQixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQU92QixZQUFPLEdBQVE7WUFDYixnQkFBZ0IsRUFBRSxLQUFLO1lBQ3ZCLFdBQVcsRUFBRSxNQUFNO1lBQ25CLGtCQUFrQixFQUFFLEtBQUs7WUFDekIsS0FBSyxFQUFFLEVBQUU7WUFDVCxLQUFLLEVBQUUsRUFBRTtZQUNULGdCQUFnQixF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Z0JBQ3JELFNBQVMsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRTtnQkFDekMsV0FBVyxFQUFFLElBQUksQ0FBQyxVQUFVO2dCQUM1QixPQUFPLEVBQUUsQ0FBQztnQkFDVixhQUFhLEVBQUUsQ0FBQztnQkFDaEIsU0FBUyxFQUFFLENBQUM7YUFDYixDQUFDO1lBQ0YsMkVBQTJFO1lBQzNFLDJDQUEyQztZQUMzQyxxQkFBcUI7WUFDckIsOEVBQThFO1lBQzlFLDJCQUEyQjtZQUMzQiwrQ0FBK0M7WUFDL0MscUNBQXFDO1lBQ3JDLFdBQVc7WUFDWCxpREFBaUQ7WUFDakQsSUFBSTtZQUNKLDREQUE0RDtZQUM1RCx5Q0FBeUM7WUFDekMsNEJBQTRCO1lBQzVCLHNDQUFzQztZQUN0Qyw0RUFBNEU7WUFDNUUsZ0RBQWdEO1lBQ2hELDhFQUE4RTtZQUM5RSxXQUFXO1lBQ1gsd0lBQXdJO1lBQ3hJLElBQUk7WUFFSixnQkFBZ0I7WUFFaEIsTUFBTTtRQUNSLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7dUhBdFNVLDBCQUEwQjsyR0FBMUIsMEJBQTBCLDBPQ1h2QyxxelhBcVNBOzJGRDFSYSwwQkFBMEI7a0JBTnRDLFNBQVM7K0JBQ0UseUJBQXlCO2tLQU16QixXQUFXO3NCQUFwQixNQUFNO2dCQUNFLElBQUk7c0JBQVosS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ08sa0JBQWtCO3NCQUE5QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIE9uQ2hhbmdlcywgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vd29ya2Zsb3ctc2VydmljZXMvYXV0aC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUG9saWN5U2VydmljZSB9IGZyb20gJy4uLy4uL3dvcmtmbG93LXNlcnZpY2VzL3BvbGljeS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUmVzcG9uc2liaWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vd29ya2Zsb3ctc2VydmljZXMvcmVzcG9uc2liaWxpdHkuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1mb3JtYXQtYW5kLWV2aWRlbmNlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZm9ybWF0LWFuZC1ldmlkZW5jZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZm9ybWF0LWFuZC1ldmlkZW5jZS5jb21wb25lbnQubGVzcycsICcuLi8uLi9mb3Jtcy5sZXNzJ10sXHJcblxyXG59KVxyXG5leHBvcnQgY2xhc3MgRm9ybWF0QW5kRXZpZGVuY2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBPdXRwdXQoKSB1cGRhdGVGaWxlcyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBASW5wdXQoKSBtb2RlID0gJyc7XHJcbiAgQElucHV0KCkgY2F0ZWdvcmllczogYW55W10gPSBbXTtcclxuICBASW5wdXQoKSBvcmdhbml6YXRpb25faWQ6IGFueSA9ICcnO1xyXG4gIEBJbnB1dCgpIHNldCBmb3JtYXRFdmlkYW5jZURhdGEodmFsdWU6IGFueSkge1xyXG4gICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZURhdGEodmFsdWUsICdub3Qgbmcgb24gaW5pdCcpO1xyXG4gICAgfVxyXG4gIH1cclxuICBpc05ld0xpbmtEaXNhYmxlZCA9IGZhbHNlO1xyXG4gIGlzRWRpdERpc2FibGVkID0gZmFsc2U7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlc3BvbnNpYmlsaXR5U2VydmljZTogUmVzcG9uc2liaWxpdHlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBwb2xpY3lTZXJ2aWNlOiBQb2xpY3lTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2VcclxuICApIHsgfVxyXG5cclxuICBmb3JtYXRlOiBhbnkgPSB7XHJcbiAgICBoYXNVcGxvYWRGb3JtYXRlOiBmYWxzZSxcclxuICAgIGZvcm1hdGVUeXBlOiAnRklMRScsIC8vIExJTktcclxuICAgIGlzRXZpZGVuY2VSZXF1aXJlZDogZmFsc2UsXHJcbiAgICBsaW5rczogW10sXHJcbiAgICBmaWxlczogW10sXHJcbiAgICB1cGxvYWRJblByb2dyZXNzOiB7fSxcclxuICB9O1xyXG5cclxuICBuZXdMaW5rID0ge1xyXG4gICAgbGluazogJycsXHJcbiAgICBjb250YWluc0Vycm9yOiBmYWxzZVxyXG4gIH07XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5mb3JtYXRFdmlkYW5jZURhdGEpIHtcclxuICAgICAgdGhpcy5pbml0aWFsaXplRGF0YSh0aGlzLmZvcm1hdEV2aWRhbmNlRGF0YSwgJ25nIG9uIGluaXQnKTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBpbml0aWFsaXplRGF0YShzZXR0aW5nczogYW55LCB0eXBlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuZm9ybWF0ZS5oYXNVcGxvYWRGb3JtYXRlID0gc2V0dGluZ3M/LmZvcm1hdFJlcXVpcmVkID8/IGZhbHNlO1xyXG4gICAgdGhpcy5mb3JtYXRlLmZvcm1hdGVUeXBlID0gc2V0dGluZ3M/LmZvcm1hdExpbmtzPy5sZW5ndGggPiAwID8gJ0xJTksnIDogJ0ZJTEUnO1xyXG4gICAgdGhpcy5mb3JtYXRlLmlzRXZpZGVuY2VSZXF1aXJlZCA9IHNldHRpbmdzPy5ldmlkZW5jZVJlcXVpcmVkID8/IGZhbHNlO1xyXG4gICAgdGhpcy5mb3JtYXRlLmxpbmtzID0gdGhpcy5hcnJheXRvTGlua09iamVjdChzZXR0aW5ncz8uZm9ybWF0TGlua3MpID8/IFtdO1xyXG4gICAgdGhpcy5mb3JtYXRlLmZpbGVzID0gc2V0dGluZ3M/LmZvcm1hdEZpbGVzID8/IFtdO1xyXG4gIH1cclxuICB0b2dnbGVJc0Zvcm1hdGVVcGxvYWQoc3RhdHVzOiBib29sZWFuKSB7XHJcbiAgICBpZiAoc3RhdHVzID09PSB0cnVlKSB7XHJcbiAgICAgIHRoaXMuZm9ybWF0ZS5oYXNVcGxvYWRGb3JtYXRlID0gdHJ1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZm9ybWF0ZS5oYXNVcGxvYWRGb3JtYXRlID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICB0aGlzLmVtaXRWYWx1ZSgpO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlSXNGb3JtYXRSZXF1aXJlZChzdGF0dXM6IGJvb2xlYW4pIHtcclxuICAgIGlmIChzdGF0dXMgPT09IHRydWUpIHtcclxuICAgICAgdGhpcy5mb3JtYXRlLmlzRXZpZGVuY2VSZXF1aXJlZCA9IHRydWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmZvcm1hdGUuaXNFdmlkZW5jZVJlcXVpcmVkID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICB0aGlzLmVtaXRWYWx1ZSgpO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlQXR0YWNobWVudFR5cGUodHlwZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmZvcm1hdGUuZm9ybWF0ZVR5cGUgPSB0eXBlO1xyXG4gICAgaWYgKHR5cGUgPT09ICdMSU5LJyAmJiB0aGlzLmZvcm1hdGUubGlua3MubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIC8vIFRPRE9cclxuICAgIH1cclxuICAgIHRoaXMuZW1pdFZhbHVlKCk7XHJcbiAgfVxyXG5cclxuICBpbnNlcnRMaW5rKG1vZGU6IGFueSwgaW5kZXg6IG51bWJlciA9IC0xKSB7XHJcbiAgICAvLyBjb25zdCB1cmxSZWdleCA9IG5ldyBSZWdFeHAoJyhodHRwcz86Ly8pPyhbXFxcXGRhLXouLV0rKVxcXFwuKFthLXouXXsyLDZ9KVsvXFxcXHcgLi1dKi8/Jyk7XHJcbiAgICBjb25zdCB1cmxSZWdleCA9IC8oaHR0cHM/OlxcL1xcLyg/Ond3d1xcLnwoPyF3d3cpKVthLXpBLVowLTldW2EtekEtWjAtOS1dK1thLXpBLVowLTldXFwuW15cXHNdezIsfXx3d3dcXC5bYS16QS1aMC05XVthLXpBLVowLTktXStbYS16QS1aMC05XVxcLlteXFxzXXsyLH18aHR0cHM/OlxcL1xcLyg/Ond3d1xcLnwoPyF3d3cpKVthLXpBLVowLTldK1xcLlteXFxzXXsyLH18d3d3XFwuW2EtekEtWjAtOV0rXFwuW15cXHNdezIsfSkvZ2k7XHJcbiAgICBpZiAobW9kZSA9PT0gJ0NSRUFURScpIHtcclxuICAgICAgaWYgKHRoaXMubmV3TGluay5saW5rLmxlbmd0aCA9PT0gMCkgeyB0aGlzLnJlc2V0TmV3TGluaygpOyByZXR1cm47IH1cclxuICAgICAgY29uc3QgaXNWYWxpZCA9IHVybFJlZ2V4LnRlc3QodGhpcy5uZXdMaW5rLmxpbmspO1xyXG4gICAgICBpZiAoaXNWYWxpZCkge1xyXG4gICAgICAgIHRoaXMubmV3TGluay5jb250YWluc0Vycm9yID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5mb3JtYXRlLmxpbmtzLnB1c2godGhpcy5uZXdMaW5rKTtcclxuICAgICAgICB0aGlzLnJlc2V0TmV3TGluaygpO1xyXG5cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLm5ld0xpbmsuY29udGFpbnNFcnJvciA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYgKG1vZGUgPT09ICdFRElUJykge1xyXG4gICAgICBpZiAodGhpcy5mb3JtYXRlLmxpbmtzW2luZGV4XS5saW5rLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgIHRoaXMuZm9ybWF0ZS5saW5rcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgIHRoaXMuaXNFZGl0RW5hYmxlZCgpO1xyXG4gICAgICAgIHRoaXMuaXNOZXdMaW5rRGlzYWJsZWQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmVtaXRWYWx1ZSgpOyByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgaXNWYWxpZCA9IHVybFJlZ2V4LnRlc3QodGhpcy5mb3JtYXRlLmxpbmtzW2luZGV4XS5saW5rKTtcclxuICAgICAgaWYgKGlzVmFsaWQpIHtcclxuICAgICAgICB0aGlzLmZvcm1hdGUubGlua3NbaW5kZXhdLmlzRWRpdGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZm9ybWF0ZS5saW5rc1tpbmRleF0uY29udGFpbnNFcnJvciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZm9ybWF0ZS5saW5rc1tpbmRleF0uaXNFZGl0aW5nICA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNOZXdMaW5rRGlzYWJsZWQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzRWRpdEVuYWJsZWQoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmZvcm1hdGUubGlua3NbaW5kZXhdLmNvbnRhaW5zRXJyb3IgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmVtaXRWYWx1ZSgpO1xyXG4gIH1cclxuXHJcbiAgZWRpdExpbmsoaW5kZXg6IG51bWJlcikge1xyXG4gICAgdGhpcy5mb3JtYXRlLmxpbmtzW2luZGV4XS5pc0VkaXRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5pc05ld0xpbmtEaXNhYmxlZCA9IHRydWU7XHJcbiAgICB0aGlzLmlzRWRpdEVuYWJsZWQoKTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZUxpbmsoaW5kZXg6IG51bWJlcikge1xyXG4gICAgdGhpcy5mb3JtYXRlLmxpbmtzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICB0aGlzLmlzRWRpdEVuYWJsZWQoKTtcclxuICAgIHRoaXMuZW1pdFZhbHVlKCk7XHJcbiAgfVxyXG5cclxuICByZXNldE5ld0xpbmsoKSB7XHJcbiAgICB0aGlzLm5ld0xpbmsgPSB7XHJcbiAgICAgIGxpbms6ICcnLFxyXG4gICAgICBjb250YWluc0Vycm9yOiBmYWxzZVxyXG4gICAgfTtcclxuICAgIHRoaXMuZW1pdFZhbHVlKCk7XHJcbiAgfVxyXG5cclxuICBvbkZpbGVEcm9wcGVkKGZpbGVzOiBhbnkpIHtcclxuICAgIEFycmF5LmZyb20oZmlsZXMpLmZvckVhY2goKGZpbGU6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCB1aWQ6IHN0cmluZyA9IE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cmluZygyLCAxNCk7XHJcbiAgICAgIHRoaXMudXBsb2FkRmlsZShmaWxlLCB1aWQpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICB1cGxvYWRGaWxlKGZpbGU6IGFueSwgdWlkOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuZm9ybWF0ZS51cGxvYWRJblByb2dyZXNzW3VpZF0gPSBmaWxlLm5hbWU7XHJcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgZm9ybURhdGEuYXBwZW5kKCdmaWxlJywgZmlsZSk7XHJcbiAgICBpZiAodGhpcy5tb2RlID09ICdwb2xpY3knIHx8IHRoaXMubW9kZSA9PSAncG9saWN5UmV2aWV3ZXInKSB7XHJcbiAgICAgIGNvbnN0IHBhdGggPSAnby8nICsgdGhpcy5vcmdhbml6YXRpb25faWQgKyAnL3BvbGljeS8nXHJcbiAgICAgIHRoaXMucG9saWN5U2VydmljZS5maWxlVXBsb2FkV29ya3Jvb20oZm9ybURhdGEsIHBhdGgpLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5mb3JtYXRlLmZpbGVzLnB1c2goe1xyXG4gICAgICAgICAgZmlsZXBhdGg6IHBhdGgsXHJcbiAgICAgICAgICBmaWxlX25hbWU6IGRhdGEub3JnX2ZpbGUsXHJcbiAgICAgICAgICBmaWxlbmFtZTogZGF0YS5uYW1lLFxyXG4gICAgICAgICAgb3JpZ2luYWxfZmlsZW5hbWU6IGRhdGEub3JnX2ZpbGUsXHJcbiAgICAgICAgICBsaW5rU2V0OiAnJyxcclxuICAgICAgICB9KTtcclxuICAgICAgICBkZWxldGUgdGhpcy5mb3JtYXRlLnVwbG9hZEluUHJvZ3Jlc3NbdWlkXTtcclxuICAgICAgICB0aGlzLmVtaXRWYWx1ZSgpO1xyXG4gICAgICB9KTtcclxuICAgIH0gIGVsc2Uge1xyXG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5U2VydmljZS51cGxvYWRUb05vZGUoZm9ybURhdGEsICd1cGxvYWRGb3JtYXQnICsgJy8nKS5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuZm9ybWF0ZS5maWxlcy5wdXNoKHtcclxuICAgICAgICAgIGZpbGVwYXRoOiAndXBsb2FkRm9ybWF0JyxcclxuICAgICAgICAgIGZpbGVfbmFtZTogZGF0YS5vcmdfZmlsZSxcclxuICAgICAgICAgIGZpbGVuYW1lOiBkYXRhLm5hbWUsXHJcbiAgICAgICAgICBvcmlnaW5hbF9maWxlbmFtZTogZGF0YS5vcmdfZmlsZSxcclxuICAgICAgICB9KTtcclxuICAgICAgICBkZWxldGUgdGhpcy5mb3JtYXRlLnVwbG9hZEluUHJvZ3Jlc3NbdWlkXTtcclxuICAgICAgICB0aGlzLmVtaXRWYWx1ZSgpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBkZWxldGVBdHRhY2htZW50KGluZGV4OiBudW1iZXIpIHtcclxuICAgIHRoaXMuZm9ybWF0ZS5maWxlcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgdGhpcy5lbWl0VmFsdWUoKTtcclxuICB9XHJcblxyXG4gIGVtaXRWYWx1ZSgpIHtcclxuICAgIGlmICh0aGlzLm1vZGUgPT0gJ3BvbGljeScgfHwgdGhpcy5tb2RlID09ICdwb2xpY3lSZXZpZXdlcicpIHtcclxuICAgICAgY29uc3QgcGF5bG9hZCA9IHtcclxuICAgICAgICBpc0Zvcm1hdGVVcGxvYWRlZDogdGhpcy5mb3JtYXRlLmhhc1VwbG9hZEZvcm1hdGUsXHJcbiAgICAgICAgbGlua3M6ICh0aGlzLmZvcm1hdGUuZm9ybWF0ZVR5cGUgPT09ICdMSU5LJykgPyB0aGlzLmdldExpbmtzQXJyYXkodGhpcy5mb3JtYXRlLmxpbmtzPy5sZW5ndGggP1suLi50aGlzLmZvcm1hdGUubGlua3NdOltdKSA6IFtdLFxyXG4gICAgICAgIGZpbGVzOiAodGhpcy5mb3JtYXRlLmZvcm1hdGVUeXBlID09PSAnRklMRScpID8gdGhpcy5mb3JtYXRlLmZpbGVzIDogW10sXHJcbiAgICAgICAgZm9ybWF0ZVR5cGU6IHRoaXMuZm9ybWF0ZS5mb3JtYXRlVHlwZSxcclxuICAgICAgICBpc0V2aWRlbmNlUmVxdWlyZWQ6IHRoaXMuZm9ybWF0ZS5pc0V2aWRlbmNlUmVxdWlyZWRcclxuICAgICAgfTtcclxuICAgICAgcGF5bG9hZC5saW5rcyA9IHBheWxvYWQubGlua3MuZmlsdGVyKChlbGU6YW55KT0+IGVsZSAhPT0gdW5kZWZpbmVkKTtcclxuXHJcbiAgICAgIHRoaXMudXBkYXRlRmlsZXMuZW1pdChwYXlsb2FkKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IHBheWxvYWQgPSB7XHJcbiAgICAgICAgaXNGb3JtYXRlVXBsb2FkZWQ6IHRoaXMuZm9ybWF0ZS5oYXNVcGxvYWRGb3JtYXRlLFxyXG4gICAgICAgIGxpbmtzOiAodGhpcy5mb3JtYXRlLmhhc1VwbG9hZEZvcm1hdGUgJiYgdGhpcy5mb3JtYXRlLmZvcm1hdGVUeXBlID09PSAnTElOSycpID8gdGhpcy5nZXRMaW5rc0FycmF5KFsuLi50aGlzLmZvcm1hdGUubGlua3NdKSA6IFtdLFxyXG4gICAgICAgIGZpbGVzOiAodGhpcy5mb3JtYXRlLmhhc1VwbG9hZEZvcm1hdGUgJiYgdGhpcy5mb3JtYXRlLmZvcm1hdGVUeXBlID09PSAnRklMRScpID8gdGhpcy5mb3JtYXRlLmZpbGVzIDogW10sXHJcbiAgICAgICAgZm9ybWF0ZVR5cGU6IHRoaXMuZm9ybWF0ZS5mb3JtYXRlVHlwZSxcclxuICAgICAgICBpc0V2aWRlbmNlUmVxdWlyZWQ6IHRoaXMuZm9ybWF0ZS5pc0V2aWRlbmNlUmVxdWlyZWRcclxuICAgICAgfTtcclxuICAgICAgcGF5bG9hZC5saW5rcyA9IHBheWxvYWQubGlua3MuZmlsdGVyKChlbGU6YW55KT0+IGVsZSAhPT0gdW5kZWZpbmVkKTtcclxuICAgICAgdGhpcy51cGRhdGVGaWxlcy5lbWl0KHBheWxvYWQpO1xyXG4gICAgfVxyXG5cclxuICB9XHJcbiAgZ2V0TGlua3NBcnJheShsaW5rczogYW55KSB7XHJcbiAgICBjb25zdCBsaW5rID0gbGlua3MubWFwKChlOiBhbnkpID0+IHtcclxuICAgICAgaWYgKGUubGluayAmJiAhZT8uY29udGFpbnNFcnJvciAmJiAhZT8uaXNFZGl0aW5nKSB7XHJcbiAgICAgICAgcmV0dXJuIGUubGluaztcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBpZihsaW5rPy5sZW5ndGggPD0gMSAmJiBsaW5rWzBdID09PSB1bmRlZmluZWQgKXtcclxuICAgICAgcmV0dXJuIFtdO1xyXG4gICAgfWVsc2V7XHJcbiAgICAgIHJldHVybiBsaW5rO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIGFycmF5dG9MaW5rT2JqZWN0KGxpbmtzQXJyYXk6IGFueSkge1xyXG4gICAgaWYgKGxpbmtzQXJyYXkpIHtcclxuICAgICAgY29uc3QgbGlua3MgPSBsaW5rc0FycmF5Lm1hcCgoZTogYW55KSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHsgbGluazogZSwgY29udGFpbnNFcnJvcjogZmFsc2UsIGlzRWRpdGluZzogZmFsc2UgfTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICByZXR1cm4gbGlua3M7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gW107XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpc0VkaXRFbmFibGVkKCkge1xyXG4gICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMuZm9ybWF0ZS5saW5rcykge1xyXG4gICAgICBpZiAoaXRlbS5pc0VkaXRpbmcgPT09IHRydWUpIHtcclxuICAgICAgICB0aGlzLmlzRWRpdERpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5pc0VkaXREaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIHBvbGljeUxpbmtTZXRMaXN0ID0gW1xyXG4gICAgLy8gJ1BvbGljeSBDaGFydGVyJyxcclxuICAgIC8vICdSZWxhdGVkIFBvbGljeSBEb2N1bWVudHMvT3RoZXIgUmVmZXJlbmNlcycsXHJcbiAgICAvLyAnUHJvY2VkdXJlcyBMaW5rZWQgdG8gdGhpcyBQb2xpY3knLFxyXG4gICAgLy8gJ0ltcGxlbWVudGF0aW9uIEd1aWRlbGluZXMgZm9yIHRoaXMgUG9saWN5JyxcclxuICAgIC8vICdUcmFpbmluZyBNYXRlcmlhbHMgZm9yIHRoaXMgUG9saWN5J1xyXG4gICAgJ0NoYXJ0ZXInLCAnUmVsYXRlZCBEb2N1bWVudHMnLCAnUmVmZXJlbmNlIE1hdGVyaWFscycsICdSZWxhdGVkIHByb2NlZHVyZXMnLCAnSW1wbGVtZW50YXRpb24gZ3VpZGVsaW5lcycsICdUcmFpbmluZyBNYXRlcmlhbHMnLCAnUmVndWxhdG9yeSBEb2N1bWVudHMnLCAnT3RoZXInXHJcblxyXG4gIF1cclxuICBzZWxlY3RlZExpbmtTZXRDaGFuZ2UoZXZlbnQ6IGFueSwgaW5kZXg6IG51bWJlcikge1xyXG4gICAgdGhpcy5mb3JtYXRlLmZpbGVzW2luZGV4XS5saW5rU2V0ID0gZXZlbnQ7XHJcbiAgICBpZihldmVudCA9PT0gJ090aGVyJyAmJiAhdGhpcy5mb3JtYXRlPy5maWxlc1tpbmRleF0/Lm90aGVycykge1xyXG4gICAgICB0aGlzLmZvcm1hdGUuZmlsZXNbaW5kZXhdLm90aGVycyA9IFsnJ107XHJcbiAgICB9XHJcbiAgICB0aGlzLmVtaXRWYWx1ZSgpO1xyXG4gIH1cclxuXHJcbiAgYWRkTW9yZURvY3VtZW50c0RldGFpbHMoaW5kZXg6IG51bWJlcikge1xyXG4gICAgdGhpcy5mb3JtYXRlLmZpbGVzW2luZGV4XS5vdGhlcnMucHVzaCgnJyk7XHJcbiAgfVxyXG5cclxuICB1cGxvYWRQb2xpY3lBdHRhY2htZW50cyhmb3JtRGF0YTogYW55KSB7XHJcblxyXG4gICAgY29uc3QgcGF0aCA9ICdvLycgKyB0aGlzLm9yZ2FuaXphdGlvbl9pZCArICcvcG9saWN5LydcclxuICAgIHRoaXMucG9saWN5U2VydmljZS5maWxlVXBsb2FkV29ya3Jvb20oZm9ybURhdGEsIHBhdGgpLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcblxyXG4gICAgICBjb25zdCBwYXlsb2FkID0ge1xyXG4gICAgICAgIGZpbGVfbmFtZTogZGF0YS5uYW1lLFxyXG4gICAgICAgIG9yaWdpbmFsX2ZpbGVfbmFtZTogZGF0YS5vcmdfZmlsZSxcclxuICAgICAgICBwYXRoOiBwYXRoLFxyXG4gICAgICAgIG9yZ2FuaXNhdGlvbl9pZDogdGhpcy5hdXRoU2VydmljZS5nZXRPcmdhbml6YXRpb25JZCgpLFxyXG4gICAgICAgIG1lbWJlcl9pZDogdGhpcy5hdXRoU2VydmljZS5nZXRNZW1iZXJJZCgpLFxyXG4gICAgICAgIGNhdGVnb3J5X2lkOiB0aGlzLmNhdGVnb3JpZXMsXHJcbiAgICAgICAgY2xhcF9pZDogMCxcclxuICAgICAgICBjb250cmFjdF90eXBlOiA0LFxyXG4gICAgICAgIGZvbGRlcl9pZDogMCxcclxuICAgICAgfTtcclxuICAgICAgLy8gdGhpcy5wb2xpY3lTZXJ2aWNlLnNhdmVVcGxvYWRlZEZpbGVzKHBheWxvYWQpLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgIC8vIHRoaXMubGF0ZXN0VXBsb2FkZWQgPSBkYXRhLmVuY3J5cHRlZF9pZDtcclxuICAgICAgLy8gY29uc29sZS5sb2coZGF0YSk7XHJcbiAgICAgIC8vIGxldCBhbGxfcmVzcG9uc2UgPSB0aGlzLnBvbGljeVNlcnZpY2UucG9saWN5Q2F0ZWdvcnlMaXN0LmdldFZhbHVlKCkgYXMgYW55O1xyXG4gICAgICAvLyBsZXQgbmV3X3Jlc3BvbnNlID0gZGF0YTtcclxuICAgICAgLy8gaWYgKGFsbF9yZXNwb25zZS5hdHRhY2htZW50cyA9PSB1bmRlZmluZWQpIHtcclxuICAgICAgLy8gICBhbGxfcmVzcG9uc2UucHVzaChuZXdfcmVzcG9uc2UpO1xyXG4gICAgICAvLyB9IGVsc2Uge1xyXG4gICAgICAvLyAgIGFsbF9yZXNwb25zZS5hdHRhY2htZW50cy5wdXNoKG5ld19yZXNwb25zZSk7XHJcbiAgICAgIC8vIH1cclxuICAgICAgLy8gdGhpcy5wb2xpY3lTZXJ2aWNlLnBvbGljeUNhdGVnb3J5TGlzdC5uZXh0KGFsbF9yZXNwb25zZSk7XHJcbiAgICAgIC8vIHRoaXMucG9saWN5U2VydmljZS5pc1VwbG9hZGVkID0gZmFsc2U7XHJcbiAgICAgIC8vIHRoaXMuaXNVcGxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgLy8gaWYgKHRoaXMuZW50aXR5X3R5cGUgPT0gJ3N1cnZleScpIHtcclxuICAgICAgLy8gICB0aGlzLmZldGNoRmlsZSh0cnVlLCB0aGlzLmVudGl0eV9kYXRhLnN1cnZleV9pZCwgdGhpcy5jdXJyZW50Rm9sZGVySWQpO1xyXG4gICAgICAvLyB9IGVsc2UgaWYgKHRoaXMuZW50aXR5X3R5cGUgPT0gJ2NvbnRyYWN0cycpIHtcclxuICAgICAgLy8gICB0aGlzLmZldGNoRmlsZSh0cnVlLCB0aGlzLmVudGl0eV9kYXRhLmNvbnRyYWN0X2lkLCB0aGlzLmN1cnJlbnRGb2xkZXJJZCk7XHJcbiAgICAgIC8vIH0gZWxzZSB7XHJcbiAgICAgIC8vICAgdGhpcy5mZXRjaEZpbGUodHJ1ZSwgdGhpcy5lbnRpdHlfZGF0YS5wb2xpY3lfaWQgPyB0aGlzLmVudGl0eV9kYXRhLnBvbGljeV9pZCA6IHRoaXMuZW50aXR5X2RhdGEuY29udHJhY3RfaWQsIHRoaXMuY3VycmVudEZvbGRlcklkKTtcclxuICAgICAgLy8gfVxyXG5cclxuICAgICAgLy8gfSwgZXJyb3IgPT4ge1xyXG5cclxuICAgICAgLy8gfSk7XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIiBbY2xhc3MucG9saWN5LXVwbG9hZC1maWxlXT1cIm1vZGUgPT0gJ3BvbGljeSdcIj5cclxuICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCIgKm5nSWY9XCJtb2RlID09ICdyZXNwb25zaWJpbGl0eSdcIj5cclxuICAgIEZvcm1hdCAmIEV2aWRlbmNlXHJcbiAgPC9sYWJlbD5cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cInVwbG9hZC1mb3JtYXRcIlxyXG4gICAgKm5nSWY9XCJtb2RlICE9ICdwb2xpY3knICYmIG1vZGUgIT0gJ3BvbGljeVJldmlld2VyJ1wiXHJcbiAgPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJ0ZXh0XCJcclxuICAgICAgPkRvIHlvdSB3YW50IHRvIHVwbG9hZCBhIGZvcm1hdCBmb3IgdGhpcyByZXNwb25zaWJpbGl0eT88L3NwYW5cclxuICAgID5cclxuICAgIDxkaXYgY2xhc3M9XCJyYWRpby1ncm91cFwiPlxyXG4gICAgICA8YXBwLWNzLXJhZGlvXHJcbiAgICAgICAgW25hbWVdPVwiJ2Zvcm1hdF9yZXF1aXJlZCdcIlxyXG4gICAgICAgIFtjaGVja2VkXT1cImZvcm1hdGUuaGFzVXBsb2FkRm9ybWF0ZSA9PT0gdHJ1ZVwiXHJcbiAgICAgICAgKGNoZWNrZWRFdmVudCk9XCJ0b2dnbGVJc0Zvcm1hdGVVcGxvYWQodHJ1ZSlcIlxyXG4gICAgICAgID5ZZXM8L2FwcC1jcy1yYWRpb1xyXG4gICAgICA+XHJcbiAgICAgIDxhcHAtY3MtcmFkaW9cclxuICAgICAgICBbbmFtZV09XCInZm9ybWF0X3JlcXVpcmVkJ1wiXHJcbiAgICAgICAgW2NoZWNrZWRdPVwiZm9ybWF0ZS5oYXNVcGxvYWRGb3JtYXRlID09PSBmYWxzZVwiXHJcbiAgICAgICAgKGNoZWNrZWRFdmVudCk9XCJ0b2dnbGVJc0Zvcm1hdGVVcGxvYWQoZmFsc2UpXCJcclxuICAgICAgICA+Tm9cclxuICAgICAgPC9hcHAtY3MtcmFkaW8+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cImZvcm0tdGFiXCJcclxuICAgICpuZ0lmPVwiZm9ybWF0ZT8uaGFzVXBsb2FkRm9ybWF0ZSB8fCBtb2RlID09ICdwb2xpY3lSZXZpZXdlcidcIlxyXG4gID5cclxuICAgIDxidXR0b25cclxuICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgIFtjbGFzcy5hY3RpdmVdPVwiZm9ybWF0ZT8uZm9ybWF0ZVR5cGUgPT09ICdGSUxFJ1wiXHJcbiAgICAgIChjbGljayk9XCJ0b2dnbGVBdHRhY2htZW50VHlwZSgnRklMRScpXCJcclxuICAgICAgW2Rpc2FibGVkXT1cImZvcm1hdGUubGlua3M/Lmxlbmd0aCA+IDBcIlxyXG4gICAgPlxyXG4gICAgICBJbnNlcnQgRmlsZVxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8YnV0dG9uXHJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICBbY2xhc3MuYWN0aXZlXT1cImZvcm1hdGU/LmZvcm1hdGVUeXBlID09PSAnTElOSydcIlxyXG4gICAgICAoY2xpY2spPVwidG9nZ2xlQXR0YWNobWVudFR5cGUoJ0xJTksnKVwiXHJcbiAgICAgIFtkaXNhYmxlZF09XCJmb3JtYXRlLmZpbGVzPy5sZW5ndGggPiAwXCJcclxuICAgID5cclxuICAgICAgSW5zZXJ0IExpbmtcclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8bmctY29udGFpbmVyXHJcbiAgICAqbmdJZj1cIlxyXG4gICAgICAoZm9ybWF0ZT8uaGFzVXBsb2FkRm9ybWF0ZSAmJiBmb3JtYXRlLmZvcm1hdGVUeXBlID09PSAnRklMRScpIHx8XHJcbiAgICAgIChtb2RlID09ICdwb2xpY3knICYmIGZvcm1hdGUuZm9ybWF0ZVR5cGUgPT09ICdGSUxFJykgfHxcclxuICAgICAgKG1vZGUgPT0gJ3BvbGljeVJldmlld2VyJyAmJiBmb3JtYXRlLmZvcm1hdGVUeXBlID09PSAnRklMRScpXHJcbiAgICBcIlxyXG4gID5cclxuICAgIDwhLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1maWxlIHVwbG9hZCBpbiBwcm9ncmVzcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICAtLT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoZm9ybWF0ZT8udXBsb2FkSW5Qcm9ncmVzcyB8IGtleXZhbHVlKS5sZW5ndGggPiAwXCI+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cImZpbGUtbGlzdFwiXHJcbiAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICBsZXQgZWFjaEZpbGUgb2YgZm9ybWF0ZT8udXBsb2FkSW5Qcm9ncmVzcyB8IGtleXZhbHVlO1xyXG4gICAgICAgICAgbGV0IGkgPSBpbmRleFxyXG4gICAgICAgIFwiXHJcbiAgICAgID5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsZS1jb250YWluZXJcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmlsZS1uYW1lXCI+e3sgZWFjaEZpbGUudmFsdWUgfX0gPC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxhcHAtbGluZS1sb2FkZXIgW2xvYWRlckhlaWdodF09XCIyXCI+PC9hcHAtbGluZS1sb2FkZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8IS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tZmlsZSB1cGxvYWQgZW5kcyBoZXJlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICAtLT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmb3JtYXRlLmZpbGVzPy5sZW5ndGggPiAwXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtb2RlICE9ICdwb2xpY3knXCI+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJmaWxlLWxpc3RcIlxyXG4gICAgICAgICAgKm5nRm9yPVwibGV0IGVhY2hGaWxlIG9mIGZvcm1hdGUuZmlsZXM7IGxldCBpID0gaW5kZXhcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWxlLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZpbGUtbmFtZVwiPnt7IGVhY2hGaWxlPy5maWxlX25hbWUgfX0gPC9zcGFuPlxyXG4gICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJkZWxldGVBdHRhY2htZW50KGkpXCI+XHJcbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MGQ7PC9pPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgIDxkaXZcclxuICAgICAgICAqbmdJZj1cIm1vZGUgPT0gJ3BvbGljeSdcIlxyXG4gICAgICAgIGNsYXNzPVwicG9saWN5LXJlbGF0ZWQtZG9jdW1lbnQtZmllbGQgdngtcC0zIHZ4LXB0LTJcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJ2eC1mcy0xMSB2eC1mdy01MDAgdngtcGFyYWdyYXBoLXR4dCB2eC10dC11cHBlcmNhc2UgdngtbWItMlwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgTElOSyBUSEUgRE9DVU1FTlQgQU5EIFNQRUNJRlkgVEhFIFJFTEFUSU9OU0hJUCBXSVRIIFRISVMgUE9MSUNZXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJmaWxlLWxpc3QgcG9saWN5XCJcclxuICAgICAgICAgICpuZ0Zvcj1cImxldCBlYWNoRmlsZSBvZiBmb3JtYXRlLmZpbGVzOyBsZXQgaSA9IGluZGV4XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsZS1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICBjbGFzcz1cImZpbGUgdGFibGUge3tcclxuICAgICAgICAgICAgICAgIGVhY2hGaWxlPy5maWxlX25hbWUuc3BsaXQoJy4nKVtcclxuICAgICAgICAgICAgICAgICAgZWFjaEZpbGU/LmZpbGVfbmFtZS5zcGxpdCgnLicpPy5sZW5ndGggLSAxXHJcbiAgICAgICAgICAgICAgICBdXHJcbiAgICAgICAgICAgICAgfX1cIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MmU7PC9pPlxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm1hdCB7e1xyXG4gICAgICAgICAgICAgICAgICBlYWNoRmlsZT8uZmlsZV9uYW1lLnNwbGl0KCcuJylbXHJcbiAgICAgICAgICAgICAgICAgICAgZWFjaEZpbGU/LmZpbGVfbmFtZS5zcGxpdCgnLicpPy5sZW5ndGggLSAxXHJcbiAgICAgICAgICAgICAgICAgIF1cclxuICAgICAgICAgICAgICAgIH19XCJcclxuICAgICAgICAgICAgICAgID57e1xyXG4gICAgICAgICAgICAgICAgICBlYWNoRmlsZT8uZmlsZV9uYW1lLnNwbGl0KFwiLlwiKVtcclxuICAgICAgICAgICAgICAgICAgICBlYWNoRmlsZT8uZmlsZV9uYW1lLnNwbGl0KFwiLlwiKT8ubGVuZ3RoIC0gMVxyXG4gICAgICAgICAgICAgICAgICBdXHJcbiAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZpbGUtbmFtZVwiPnt7IGVhY2hGaWxlPy5maWxlX25hbWUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24tZ3JvdXBcIj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJkZWxldGVBdHRhY2htZW50KGkpXCI+XHJcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkwZDs8L2k+XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8Y3Mtc2VsZWN0XHJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZWFjaEZpbGUubGlua1NldFwiXHJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNlbGVjdGVkTGlua1NldENoYW5nZSgkZXZlbnQsIGkpXCJcclxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidEZWZpbmUgdGhlIGRvY3VtZW50XFwncyByZWxhdGlvbnNoaXAgdG8gdGhpcyBwb2xpY3knXCJcclxuICAgICAgICAgICAgbmFtZT1cInNlbGVjdGVkXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGNzLW9wdGlvbiAqbmdGb3I9XCJsZXQgZGF0YSBvZiBwb2xpY3lMaW5rU2V0TGlzdFwiIFt2YWx1ZV09XCJkYXRhXCI+XHJcbiAgICAgICAgICAgICAge3sgZGF0YSB9fVxyXG4gICAgICAgICAgICA8L2NzLW9wdGlvbj5cclxuICAgICAgICAgIDwvY3Mtc2VsZWN0PlxyXG4gICAgICAgICAgPCEtLSA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBvdGhlciBvZiBlYWNoRmlsZT8ub3RoZXJzOyBsZXQgaiA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCAqbmdJZj1cImVhY2hGaWxlPy5saW5rU2V0ID09PSAnT3RoZXIgKHNwZWNpZnkgb3duKSdcIiBbbmdNb2RlbF09XCJlYWNoRmlsZS5vdGhlcnNbal1cIiAobmdNb2RlbENoYW5nZSk9XCJzZWxlY3RlZExpbmtTZXRDaGFuZ2UoJ090aGVyIChzcGVjaWZ5IG93biknLGksICRldmVudCwgailcIiBjbGFzcz1cImxpbmthZ2UtaW5wdXRcIiB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwiVHlwZSB0aGUgbGlua2FnZSBkZXRhaWxzXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiZWFjaEZpbGU/LmxpbmtTZXQgPT09ICdPdGhlciAoc3BlY2lmeSBvd24pJ1wiIGNsYXNzPVwibGlua2FnZS1idG4gdngtZnMtMTEgdngtZnctNTAwIHZ4LXR4dC1ibHVlIHZ4LXR0LXVwcGVyY2FzZSB2eC1wLTAgdngtbXQtMlwiIChjbGljayk9XCJhZGRNb3JlRG9jdW1lbnRzRGV0YWlscyhpKVwiPisgQUREIE1PUkU8L2J1dHRvbj4gLS0+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPCEtLSA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCIgKm5nSWY9XCJtb2RlPT0ncG9saWN5J1wiPlxyXG4gICAgICAgICAgICAgICAgTElOSyBUSEUgRE9DVU1FTlQgQU5EIFNQRUNJRlkgVEhFIFJFTEFUSU9OU0hJUCBXSVRIIFRISVMgUE9MSUNZXHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGVhY2hGaWxlIG9mIGZvcm1hdGUuZmlsZXM7IGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWxlLWxpc3RcIiAqbmdJZj1cIm1vZGUhPSdwb2xpY3knXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpbGUtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmlsZS1uYW1lXCI+e3sgZWFjaEZpbGU/LmZpbGVfbmFtZSB9fSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImRlbGV0ZUF0dGFjaG1lbnQoaSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTBkOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWxlLWxpc3QgcG9saWN5XCIgKm5nSWY9XCJtb2RlPT0ncG9saWN5J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWxlLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZpbGUtbmFtZVwiPnt7ZWFjaEZpbGU/LmZpbGVfbmFtZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0gLSA8YnV0dG9uIGNsYXNzPVwiZWRpdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPiAtIC0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJkZWxldGVBdHRhY2htZW50KGkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MGQ7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxjcy1zZWxlY3QgWyhuZ01vZGVsKV09XCJlYWNoRmlsZS5saW5rU2V0XCIgKG5nTW9kZWxDaGFuZ2UpPVwic2VsZWN0ZWRMaW5rU2V0Q2hhbmdlKCRldmVudCxpKVwiIFtwbGFjZWhvbGRlcl09XCInRGVmaW5lIHRoZSBkb2N1bWVudFxcJ3MgcmVsYXRpb25zaGlwIHRvIHRoaXMgcG9saWN5J1wiIG5hbWU9XCJzZWxlY3RlZFwiID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGNzLW9wdGlvbiAqbmdGb3I9XCJsZXQgZGF0YSBvZiBwb2xpY3lMaW5rU2V0TGlzdFwiIFt2YWx1ZV09XCJkYXRhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2RhdGF9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2NzLW9wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2NzLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj4gLS0+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwhLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1kcmFnIGFuZCBkcm9wIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwidGFiLWdyb3VwXCJcclxuICAgICAgW2NsYXNzLnVwbG9hZGVkXT1cImZvcm1hdGUuZmlsZXM/Lmxlbmd0aCA+IDBcIlxyXG4gICAgICBhcHBEcmFnRHJvcFxyXG4gICAgICAoZmlsZURyb3BwZWQpPVwib25GaWxlRHJvcHBlZCgkZXZlbnQpXCJcclxuICAgID5cclxuICAgICAgPGxhYmVsIGNsYXNzPVwidXBsb2FkLWZpbGVcIj5cclxuICAgICAgICA8aW1nXHJcbiAgICAgICAgICBzcmM9XCJodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvdXBsb2FkLnN2Z1wiXHJcbiAgICAgICAgICBhbHQ9XCJcIlxyXG4gICAgICAgICAgY2xhc3M9XCJpbWFnZVwiXHJcbiAgICAgICAgLz5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYnJvd3NlXCI+XHJcbiAgICAgICAgICA8c3Bhbj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1vZGUgIT0gJ3BvbGljeSdcIlxyXG4gICAgICAgICAgICAgID5Ecm9wIHlvdXIgZmlsZXMgaGVyZSAvXHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibW9kZSA9PSAncG9saWN5J1wiXHJcbiAgICAgICAgICAgICAgPkRyb3AgeW91ciBmaWxlcyBoZXJlIC9cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIlxyXG4gICAgICAgICAgICAgID5Ccm93c2VcclxuICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgIHR5cGU9XCJmaWxlXCJcclxuICAgICAgICAgICAgICAgIG11bHRpcGxlXHJcbiAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uRmlsZURyb3BwZWQoJGV2ZW50LnRhcmdldC5maWxlcylcIlxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDwhLS0gPHNwYW4gKm5nSWY9XCJtb2RlIT0ncG9saWN5J1wiPkRyb3AgeW91ciBmaWxlcyBoZXJlIC88L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJtb2RlPT0ncG9saWN5J1wiPkRyYWcgJiBkcm9wIHRvIHVwbG9hZCBmaWxlcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBwb2xpY3kgLzwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+QnJvd3NlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiZmlsZVwiIG11bHRpcGxlIChjaGFuZ2UpPVwib25GaWxlRHJvcHBlZCgkZXZlbnQudGFyZ2V0LmZpbGVzKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4gLS0+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbGFiZWw+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tZHJhZyBkcm9wIGVuZHMgaGVyZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLT5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgPG5nLWNvbnRhaW5lclxyXG4gICAgKm5nSWY9XCJcclxuICAgICAgKGZvcm1hdGU/Lmhhc1VwbG9hZEZvcm1hdGUgJiYgZm9ybWF0ZS5mb3JtYXRlVHlwZSA9PT0gJ0xJTksnKSB8fFxyXG4gICAgICAobW9kZSA9PSAncG9saWN5UmV2aWV3ZXInICYmIGZvcm1hdGUuZm9ybWF0ZVR5cGUgPT09ICdMSU5LJylcclxuICAgIFwiXHJcbiAgPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZvcm1hdGUubGlua3MubGVuZ3RoID4gMFwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBsaW5rIG9mIGZvcm1hdGUubGlua3M7IGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsZS1saXN0XCIgKm5nSWY9XCIhbGluay5pc0VkaXRpbmdcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWxlLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZpbGUtbmFtZVwiPnt7IGxpbmsubGluayB9fSA8L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYnV0dG9uLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImlzRWRpdERpc2FibGVkXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZWRpdFwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZWRpdExpbmsoaSlcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT5cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJkZWxldGVMaW5rKGkpXCI+XHJcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkwZDs8L2k+XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJsaW5rLmlzRWRpdGluZ1wiPlxyXG4gICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgY2xhc3M9XCJlZGl0LWxpbmtcIlxyXG4gICAgICAgICAgICBhcHBBdXRvZm9jdXNcclxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJFbnRlciB0aGUgbGluayBoZXJlXCJcclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJsaW5rLmxpbmtcIlxyXG4gICAgICAgICAgICAoZm9jdXNvdXQpPVwiaW5zZXJ0TGluaygnRURJVCcsIGkpXCJcclxuICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiaW5zZXJ0TGluaygnRURJVCcsIGkpXCJcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8cCBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIiAqbmdJZj1cImxpbmsuY29udGFpbnNFcnJvclwiPlxyXG4gICAgICAgICAgICBQbGVhc2UgaW5zZXJ0IGEgdmFsaWQgbGlua1xyXG4gICAgICAgICAgPC9wPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPGlucHV0XHJcbiAgICAgIFtkaXNhYmxlZF09XCJpc05ld0xpbmtEaXNhYmxlZFwiXHJcbiAgICAgIGNsYXNzPVwiZWRpdC1saW5rXCJcclxuICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICBbKG5nTW9kZWwpXT1cIm5ld0xpbmsubGlua1wiXHJcbiAgICAgIHBsYWNlaG9sZGVyPVwiRW50ZXIgdGhlIGxpbmsgaGVyZVwiXHJcbiAgICAgIChmb2N1c291dCk9XCJpbnNlcnRMaW5rKCdDUkVBVEUnKVwiXHJcbiAgICAgIChrZXlkb3duLmVudGVyKT1cImluc2VydExpbmsoJ0NSRUFURScpXCJcclxuICAgIC8+XHJcbiAgICA8cCBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIiAqbmdJZj1cIm5ld0xpbmsuY29udGFpbnNFcnJvclwiPlxyXG4gICAgICBQbGVhc2UgaW5zZXJ0IGEgdmFsaWQgbGlua1xyXG4gICAgPC9wPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG4gIDxkaXYgY2xhc3M9XCJ1cGxvYWQtZm9ybWF0XCIgKm5nSWY9XCJtb2RlID09ICdyZXNwb25zaWJpbGl0eSdcIj5cclxuICAgIDxzcGFuIGNsYXNzPVwidGV4dFwiXHJcbiAgICAgID5EbyB5b3Ugd2FudCBldmlkZW5jZSBvZiBjb21wbGV0aW9uIG9mIHRoZSByZXNwb25zaWJpbGl0eSB0byBiZVxyXG4gICAgICB1cGxvYWRlZD88L3NwYW5cclxuICAgID5cclxuICAgIDxkaXYgY2xhc3M9XCJyYWRpby1ncm91cFwiPlxyXG4gICAgICA8YXBwLWNzLXJhZGlvXHJcbiAgICAgICAgW25hbWVdPVwiJ2V2aWRlbmNlX3JlcXVpcmVkJ1wiXHJcbiAgICAgICAgW2NoZWNrZWRdPVwiZm9ybWF0ZS5pc0V2aWRlbmNlUmVxdWlyZWQgPT09IHRydWVcIlxyXG4gICAgICAgIChjaGVja2VkRXZlbnQpPVwidG9nZ2xlSXNGb3JtYXRSZXF1aXJlZCh0cnVlKVwiXHJcbiAgICAgICAgPlllczwvYXBwLWNzLXJhZGlvXHJcbiAgICAgID5cclxuICAgICAgPGFwcC1jcy1yYWRpb1xyXG4gICAgICAgIFtuYW1lXT1cIidldmlkZW5jZV9yZXF1aXJlZCdcIlxyXG4gICAgICAgIFtjaGVja2VkXT1cImZvcm1hdGUuaXNFdmlkZW5jZVJlcXVpcmVkID09PSBmYWxzZVwiXHJcbiAgICAgICAgKGNoZWNrZWRFdmVudCk9XCJ0b2dnbGVJc0Zvcm1hdFJlcXVpcmVkKGZhbHNlKVwiXHJcbiAgICAgICAgPk5vXHJcbiAgICAgIDwvYXBwLWNzLXJhZGlvPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
308
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0LWFuZC1ldmlkZW5jZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL2Zvcm1hdC1hbmQtZXZpZGVuY2UvZm9ybWF0LWFuZC1ldmlkZW5jZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL2Zvcm1hdC1hbmQtZXZpZGVuY2UvZm9ybWF0LWFuZC1ldmlkZW5jZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUdULE1BQU0sRUFDTixZQUFZLEVBQ1osS0FBSyxHQUNOLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7Ozs7O0FBVXZCLE1BQU0sT0FBTywwQkFBMEI7SUFZckMsWUFDVSxxQkFBNEMsRUFDNUMsYUFBNEIsRUFDNUIsV0FBd0I7UUFGeEIsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQUM1QyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQWR4QixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDbEMsU0FBSSxHQUFHLEVBQUUsQ0FBQztRQUNWLGVBQVUsR0FBVSxFQUFFLENBQUM7UUFDdkIsb0JBQWUsR0FBUSxFQUFFLENBQUM7UUFNbkMsc0JBQWlCLEdBQUcsS0FBSyxDQUFDO1FBQzFCLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBT3ZCLFlBQU8sR0FBUTtZQUNiLGdCQUFnQixFQUFFLEtBQUs7WUFDdkIsV0FBVyxFQUFFLE1BQU07WUFDbkIsa0JBQWtCLEVBQUUsS0FBSztZQUN6QixLQUFLLEVBQUUsRUFBRTtZQUNULEtBQUssRUFBRSxFQUFFO1lBQ1QsZ0JBQWdCLEVB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RSxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRTtnQkFDekMsV0FBVyxFQUFFLElBQUksQ0FBQyxVQUFVO2dCQUM1QixPQUFPLEVBQUUsQ0FBQztnQkFDVixhQUFhLEVBQUUsQ0FBQztnQkFDaEIsU0FBUyxFQUFFLENBQUM7YUFDYixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOzt1SEFuU1UsMEJBQTBCOzJHQUExQiwwQkFBMEIsME9DakJ2QyxxelhBcVNBOzJGRHBSYSwwQkFBMEI7a0JBTHRDLFNBQVM7K0JBQ0UseUJBQXlCO2tLQUt6QixXQUFXO3NCQUFwQixNQUFNO2dCQUNFLElBQUk7c0JBQVosS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ08sa0JBQWtCO3NCQUE5QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgT25Jbml0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPdXRwdXQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uL3dvcmtmbG93LXNlcnZpY2VzL2F1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IFBvbGljeVNlcnZpY2UgfSBmcm9tICcuLi8uLi93b3JrZmxvdy1zZXJ2aWNlcy9wb2xpY3kuc2VydmljZSc7XHJcbmltcG9ydCB7IFJlc3BvbnNpYmlsaXR5U2VydmljZSB9IGZyb20gJy4uLy4uL3dvcmtmbG93LXNlcnZpY2VzL3Jlc3BvbnNpYmlsaXR5LnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtZm9ybWF0LWFuZC1ldmlkZW5jZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvcm1hdC1hbmQtZXZpZGVuY2UuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2Zvcm1hdC1hbmQtZXZpZGVuY2UuY29tcG9uZW50Lmxlc3MnLCAnLi4vLi4vZm9ybXMubGVzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRm9ybWF0QW5kRXZpZGVuY2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBPdXRwdXQoKSB1cGRhdGVGaWxlcyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBASW5wdXQoKSBtb2RlID0gJyc7XHJcbiAgQElucHV0KCkgY2F0ZWdvcmllczogYW55W10gPSBbXTtcclxuICBASW5wdXQoKSBvcmdhbml6YXRpb25faWQ6IGFueSA9ICcnO1xyXG4gIEBJbnB1dCgpIHNldCBmb3JtYXRFdmlkYW5jZURhdGEodmFsdWU6IGFueSkge1xyXG4gICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZURhdGEodmFsdWUsICdub3Qgbmcgb24gaW5pdCcpO1xyXG4gICAgfVxyXG4gIH1cclxuICBpc05ld0xpbmtEaXNhYmxlZCA9IGZhbHNlO1xyXG4gIGlzRWRpdERpc2FibGVkID0gZmFsc2U7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlc3BvbnNpYmlsaXR5U2VydmljZTogUmVzcG9uc2liaWxpdHlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBwb2xpY3lTZXJ2aWNlOiBQb2xpY3lTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2VcclxuICApIHt9XHJcblxyXG4gIGZvcm1hdGU6IGFueSA9IHtcclxuICAgIGhhc1VwbG9hZEZvcm1hdGU6IGZhbHNlLFxyXG4gICAgZm9ybWF0ZVR5cGU6ICdGSUxFJywgLy8gTElOS1xyXG4gICAgaXNFdmlkZW5jZVJlcXVpcmVkOiBmYWxzZSxcclxuICAgIGxpbmtzOiBbXSxcclxuICAgIGZpbGVzOiBbXSxcclxuICAgIHVwbG9hZEluUHJvZ3Jlc3M6IHt9LFxyXG4gIH07XHJcblxyXG4gIG5ld0xpbmsgPSB7XHJcbiAgICBsaW5rOiAnJyxcclxuICAgIGNvbnRhaW5zRXJyb3I6IGZhbHNlLFxyXG4gIH07XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5mb3JtYXRFdmlkYW5jZURhdGEpIHtcclxuICAgICAgdGhpcy5pbml0aWFsaXplRGF0YSh0aGlzLmZvcm1hdEV2aWRhbmNlRGF0YSwgJ25nIG9uIGluaXQnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGluaXRpYWxpemVEYXRhKHNldHRpbmdzOiBhbnksIHR5cGU6IHN0cmluZykge1xyXG4gICAgdGhpcy5mb3JtYXRlLmhhc1VwbG9hZEZvcm1hdGUgPSBzZXR0aW5ncz8uZm9ybWF0UmVxdWlyZWQgPz8gZmFsc2U7XHJcbiAgICB0aGlzLmZvcm1hdGUuZm9ybWF0ZVR5cGUgPVxyXG4gICAgICBzZXR0aW5ncz8uZm9ybWF0TGlua3M/Lmxlbmd0aCA+IDAgPyAnTElOSycgOiAnRklMRSc7XHJcbiAgICB0aGlzLmZvcm1hdGUuaXNFdmlkZW5jZVJlcXVpcmVkID0gc2V0dGluZ3M/LmV2aWRlbmNlUmVxdWlyZWQgPz8gZmFsc2U7XHJcbiAgICB0aGlzLmZvcm1hdGUubGlua3MgPSB0aGlzLmFycmF5dG9MaW5rT2JqZWN0KHNldHRpbmdzPy5mb3JtYXRMaW5rcykgPz8gW107XHJcbiAgICB0aGlzLmZvcm1hdGUuZmlsZXMgPSBzZXR0aW5ncz8uZm9ybWF0RmlsZXMgPz8gW107XHJcbiAgfVxyXG4gIHRvZ2dsZUlzRm9ybWF0ZVVwbG9hZChzdGF0dXM6IGJvb2xlYW4pIHtcclxuICAgIGlmIChzdGF0dXMgPT09IHRydWUpIHtcclxuICAgICAgdGhpcy5mb3JtYXRlLmhhc1VwbG9hZEZvcm1hdGUgPSB0cnVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5mb3JtYXRlLmhhc1VwbG9hZEZvcm1hdGUgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIHRoaXMuZW1pdFZhbHVlKCk7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVJc0Zvcm1hdFJlcXVpcmVkKHN0YXR1czogYm9vbGVhbikge1xyXG4gICAgaWYgKHN0YXR1cyA9PT0gdHJ1ZSkge1xyXG4gICAgICB0aGlzLmZvcm1hdGUuaXNFdmlkZW5jZVJlcXVpcmVkID0gdHJ1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZm9ybWF0ZS5pc0V2aWRlbmNlUmVxdWlyZWQgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIHRoaXMuZW1pdFZhbHVlKCk7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVBdHRhY2htZW50VHlwZSh0eXBlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuZm9ybWF0ZS5mb3JtYXRlVHlwZSA9IHR5cGU7XHJcbiAgICBpZiAodHlwZSA9PT0gJ0xJTksnICYmIHRoaXMuZm9ybWF0ZS5saW5rcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgLy8gVE9ET1xyXG4gICAgfVxyXG4gICAgdGhpcy5lbWl0VmFsdWUoKTtcclxuICB9XHJcblxyXG4gIGluc2VydExpbmsobW9kZTogYW55LCBpbmRleDogbnVtYmVyID0gLTEpIHtcclxuICAgIC8vIGNvbnN0IHVybFJlZ2V4ID0gbmV3IFJlZ0V4cCgnKGh0dHBzPzovLyk/KFtcXFxcZGEtei4tXSspXFxcXC4oW2Etei5dezIsNn0pWy9cXFxcdyAuLV0qLz8nKTtcclxuICAgIGNvbnN0IHVybFJlZ2V4ID1cclxuICAgICAgLyhodHRwcz86XFwvXFwvKD86d3d3XFwufCg/IXd3dykpW2EtekEtWjAtOV1bYS16QS1aMC05LV0rW2EtekEtWjAtOV1cXC5bXlxcc117Mix9fHd3d1xcLlthLXpBLVowLTldW2EtekEtWjAtOS1dK1thLXpBLVowLTldXFwuW15cXHNdezIsfXxodHRwcz86XFwvXFwvKD86d3d3XFwufCg/IXd3dykpW2EtekEtWjAtOV0rXFwuW15cXHNdezIsfXx3d3dcXC5bYS16QS1aMC05XStcXC5bXlxcc117Mix9KS9naTtcclxuICAgIGlmIChtb2RlID09PSAnQ1JFQVRFJykge1xyXG4gICAgICBpZiAodGhpcy5uZXdMaW5rLmxpbmsubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgdGhpcy5yZXNldE5ld0xpbmsoKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgaXNWYWxpZCA9IHVybFJlZ2V4LnRlc3QodGhpcy5uZXdMaW5rLmxpbmspO1xyXG4gICAgICBpZiAoaXNWYWxpZCkge1xyXG4gICAgICAgIHRoaXMubmV3TGluay5jb250YWluc0Vycm9yID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5mb3JtYXRlLmxpbmtzLnB1c2godGhpcy5uZXdMaW5rKTtcclxuICAgICAgICB0aGlzLnJlc2V0TmV3TGluaygpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMubmV3TGluay5jb250YWluc0Vycm9yID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmIChtb2RlID09PSAnRURJVCcpIHtcclxuICAgICAgaWYgKHRoaXMuZm9ybWF0ZS5saW5rc1tpbmRleF0ubGluay5sZW5ndGggPT09IDApIHtcclxuICAgICAgICB0aGlzLmZvcm1hdGUubGlua3Muc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICB0aGlzLmlzRWRpdEVuYWJsZWQoKTtcclxuICAgICAgICB0aGlzLmlzTmV3TGlua0Rpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5lbWl0VmFsdWUoKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgaXNWYWxpZCA9IHVybFJlZ2V4LnRlc3QodGhpcy5mb3JtYXRlLmxpbmtzW2luZGV4XS5saW5rKTtcclxuICAgICAgaWYgKGlzVmFsaWQpIHtcclxuICAgICAgICB0aGlzLmZvcm1hdGUubGlua3NbaW5kZXhdLmlzRWRpdGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZm9ybWF0ZS5saW5rc1tpbmRleF0uY29udGFpbnNFcnJvciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZm9ybWF0ZS5saW5rc1tpbmRleF0uaXNFZGl0aW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc05ld0xpbmtEaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNFZGl0RW5hYmxlZCgpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZm9ybWF0ZS5saW5rc1tpbmRleF0uY29udGFpbnNFcnJvciA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuZW1pdFZhbHVlKCk7XHJcbiAgfVxyXG5cclxuICBlZGl0TGluayhpbmRleDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLmZvcm1hdGUubGlua3NbaW5kZXhdLmlzRWRpdGluZyA9IHRydWU7XHJcbiAgICB0aGlzLmlzTmV3TGlua0Rpc2FibGVkID0gdHJ1ZTtcclxuICAgIHRoaXMuaXNFZGl0RW5hYmxlZCgpO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlTGluayhpbmRleDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLmZvcm1hdGUubGlua3Muc3BsaWNlKGluZGV4LCAxKTtcclxuICAgIHRoaXMuaXNFZGl0RW5hYmxlZCgpO1xyXG4gICAgdGhpcy5lbWl0VmFsdWUoKTtcclxuICB9XHJcblxyXG4gIHJlc2V0TmV3TGluaygpIHtcclxuICAgIHRoaXMubmV3TGluayA9IHtcclxuICAgICAgbGluazogJycsXHJcbiAgICAgIGNvbnRhaW5zRXJyb3I6IGZhbHNlLFxyXG4gICAgfTtcclxuICAgIHRoaXMuZW1pdFZhbHVlKCk7XHJcbiAgfVxyXG5cclxuICBvbkZpbGVEcm9wcGVkKGZpbGVzOiBhbnkpIHtcclxuICAgIEFycmF5LmZyb20oZmlsZXMpLmZvckVhY2goKGZpbGU6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCB1aWQ6IHN0cmluZyA9IE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cmluZygyLCAxNCk7XHJcbiAgICAgIHRoaXMudXBsb2FkRmlsZShmaWxlLCB1aWQpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICB1cGxvYWRGaWxlKGZpbGU6IGFueSwgdWlkOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuZm9ybWF0ZS51cGxvYWRJblByb2dyZXNzW3VpZF0gPSBmaWxlLm5hbWU7XHJcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgZm9ybURhdGEuYXBwZW5kKCdmaWxlJywgZmlsZSk7XHJcbiAgICBpZiAodGhpcy5tb2RlID09ICdwb2xpY3knIHx8IHRoaXMubW9kZSA9PSAncG9saWN5UmV2aWV3ZXInKSB7XHJcbiAgICAgIGNvbnN0IHBhdGggPSAnby8nICsgdGhpcy5vcmdhbml6YXRpb25faWQgKyAnL3BvbGljeS8nO1xyXG4gICAgICB0aGlzLnBvbGljeVNlcnZpY2VcclxuICAgICAgICAuZmlsZVVwbG9hZFdvcmtyb29tKGZvcm1EYXRhLCBwYXRoKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5mb3JtYXRlLmZpbGVzLnB1c2goe1xyXG4gICAgICAgICAgICBmaWxlcGF0aDogcGF0aCxcclxuICAgICAgICAgICAgZmlsZV9uYW1lOiBkYXRhLm9yZ19maWxlLFxyXG4gICAgICAgICAgICBmaWxlbmFtZTogZGF0YS5uYW1lLFxyXG4gICAgICAgICAgICBvcmlnaW5hbF9maWxlbmFtZTogZGF0YS5vcmdfZmlsZSxcclxuICAgICAgICAgICAgbGlua1NldDogJycsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIGRlbGV0ZSB0aGlzLmZvcm1hdGUudXBsb2FkSW5Qcm9ncmVzc1t1aWRdO1xyXG4gICAgICAgICAgdGhpcy5lbWl0VmFsdWUoKTtcclxuICAgICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlTZXJ2aWNlXHJcbiAgICAgICAgLnVwbG9hZFRvTm9kZShmb3JtRGF0YSwgJ3VwbG9hZEZvcm1hdCcgKyAnLycpXHJcbiAgICAgICAgLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmZvcm1hdGUuZmlsZXMucHVzaCh7XHJcbiAgICAgICAgICAgIGZpbGVwYXRoOiAndXBsb2FkRm9ybWF0JyxcclxuICAgICAgICAgICAgZmlsZV9uYW1lOiBkYXRhLm9yZ19maWxlLFxyXG4gICAgICAgICAgICBmaWxlbmFtZTogZGF0YS5uYW1lLFxyXG4gICAgICAgICAgICBvcmlnaW5hbF9maWxlbmFtZTogZGF0YS5vcmdfZmlsZSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgZGVsZXRlIHRoaXMuZm9ybWF0ZS51cGxvYWRJblByb2dyZXNzW3VpZF07XHJcbiAgICAgICAgICB0aGlzLmVtaXRWYWx1ZSgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZGVsZXRlQXR0YWNobWVudChpbmRleDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLmZvcm1hdGUuZmlsZXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgIHRoaXMuZW1pdFZhbHVlKCk7XHJcbiAgfVxyXG5cclxuICBlbWl0VmFsdWUoKSB7XHJcbiAgICBpZiAodGhpcy5tb2RlID09ICdwb2xpY3knIHx8IHRoaXMubW9kZSA9PSAncG9saWN5UmV2aWV3ZXInKSB7XHJcbiAgICAgIGNvbnN0IHBheWxvYWQgPSB7XHJcbiAgICAgICAgaXNGb3JtYXRlVXBsb2FkZWQ6IHRoaXMuZm9ybWF0ZS5oYXNVcGxvYWRGb3JtYXRlLFxyXG4gICAgICAgIGxpbmtzOlxyXG4gICAgICAgICAgdGhpcy5mb3JtYXRlLmZvcm1hdGVUeXBlID09PSAnTElOSydcclxuICAgICAgICAgICAgPyB0aGlzLmdldExpbmtzQXJyYXkoXHJcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1hdGUubGlua3M/Lmxlbmd0aCA/IFsuLi50aGlzLmZvcm1hdGUubGlua3NdIDogW11cclxuICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgIDogW10sXHJcbiAgICAgICAgZmlsZXM6IHRoaXMuZm9ybWF0ZS5mb3JtYXRlVHlwZSA9PT0gJ0ZJTEUnID8gdGhpcy5mb3JtYXRlLmZpbGVzIDogW10sXHJcbiAgICAgICAgZm9ybWF0ZVR5cGU6IHRoaXMuZm9ybWF0ZS5mb3JtYXRlVHlwZSxcclxuICAgICAgICBpc0V2aWRlbmNlUmVxdWlyZWQ6IHRoaXMuZm9ybWF0ZS5pc0V2aWRlbmNlUmVxdWlyZWQsXHJcbiAgICAgIH07XHJcbiAgICAgIHBheWxvYWQubGlua3MgPSBwYXlsb2FkLmxpbmtzLmZpbHRlcigoZWxlOiBhbnkpID0+IGVsZSAhPT0gdW5kZWZpbmVkKTtcclxuXHJcbiAgICAgIHRoaXMudXBkYXRlRmlsZXMuZW1pdChwYXlsb2FkKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IHBheWxvYWQgPSB7XHJcbiAgICAgICAgaXNGb3JtYXRlVXBsb2FkZWQ6IHRoaXMuZm9ybWF0ZS5oYXNVcGxvYWRGb3JtYXRlLFxyXG4gICAgICAgIGxpbmtzOlxyXG4gICAgICAgICAgdGhpcy5mb3JtYXRlLmhhc1VwbG9hZEZvcm1hdGUgJiYgdGhpcy5mb3JtYXRlLmZvcm1hdGVUeXBlID09PSAnTElOSydcclxuICAgICAgICAgICAgPyB0aGlzLmdldExpbmtzQXJyYXkoWy4uLnRoaXMuZm9ybWF0ZS5saW5rc10pXHJcbiAgICAgICAgICAgIDogW10sXHJcbiAgICAgICAgZmlsZXM6XHJcbiAgICAgICAgICB0aGlzLmZvcm1hdGUuaGFzVXBsb2FkRm9ybWF0ZSAmJiB0aGlzLmZvcm1hdGUuZm9ybWF0ZVR5cGUgPT09ICdGSUxFJ1xyXG4gICAgICAgICAgICA/IHRoaXMuZm9ybWF0ZS5maWxlc1xyXG4gICAgICAgICAgICA6IFtdLFxyXG4gICAgICAgIGZvcm1hdGVUeXBlOiB0aGlzLmZvcm1hdGUuZm9ybWF0ZVR5cGUsXHJcbiAgICAgICAgaXNFdmlkZW5jZVJlcXVpcmVkOiB0aGlzLmZvcm1hdGUuaXNFdmlkZW5jZVJlcXVpcmVkLFxyXG4gICAgICB9O1xyXG4gICAgICBwYXlsb2FkLmxpbmtzID0gcGF5bG9hZC5saW5rcy5maWx0ZXIoKGVsZTogYW55KSA9PiBlbGUgIT09IHVuZGVmaW5lZCk7XHJcbiAgICAgIHRoaXMudXBkYXRlRmlsZXMuZW1pdChwYXlsb2FkKTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0TGlua3NBcnJheShsaW5rczogYW55KSB7XHJcbiAgICBjb25zdCBsaW5rID0gbGlua3MubWFwKChlOiBhbnkpID0+IHtcclxuICAgICAgaWYgKGUubGluayAmJiAhZT8uY29udGFpbnNFcnJvciAmJiAhZT8uaXNFZGl0aW5nKSB7XHJcbiAgICAgICAgcmV0dXJuIGUubGluaztcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBpZiAobGluaz8ubGVuZ3RoIDw9IDEgJiYgbGlua1swXSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHJldHVybiBbXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBsaW5rO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXJyYXl0b0xpbmtPYmplY3QobGlua3NBcnJheTogYW55KSB7XHJcbiAgICBpZiAobGlua3NBcnJheSkge1xyXG4gICAgICBjb25zdCBsaW5rcyA9IGxpbmtzQXJyYXkubWFwKChlOiBhbnkpID0+IHtcclxuICAgICAgICByZXR1cm4geyBsaW5rOiBlLCBjb250YWluc0Vycm9yOiBmYWxzZSwgaXNFZGl0aW5nOiBmYWxzZSB9O1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHJldHVybiBsaW5rcztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBbXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGlzRWRpdEVuYWJsZWQoKSB7XHJcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5mb3JtYXRlLmxpbmtzKSB7XHJcbiAgICAgIGlmIChpdGVtLmlzRWRpdGluZyA9PT0gdHJ1ZSkge1xyXG4gICAgICAgIHRoaXMuaXNFZGl0RGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmlzRWRpdERpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgcG9saWN5TGlua1NldExpc3QgPSBbXHJcbiAgICAvLyAnUG9saWN5IENoYXJ0ZXInLFxyXG4gICAgLy8gJ1JlbGF0ZWQgUG9saWN5IERvY3VtZW50cy9PdGhlciBSZWZlcmVuY2VzJyxcclxuICAgIC8vICdQcm9jZWR1cmVzIExpbmtlZCB0byB0aGlzIFBvbGljeScsXHJcbiAgICAvLyAnSW1wbGVtZW50YXRpb24gR3VpZGVsaW5lcyBmb3IgdGhpcyBQb2xpY3knLFxyXG4gICAgLy8gJ1RyYWluaW5nIE1hdGVyaWFscyBmb3IgdGhpcyBQb2xpY3knXHJcbiAgICAnQ2hhcnRlcicsXHJcbiAgICAnUmVsYXRlZCBEb2N1bWVudHMnLFxyXG4gICAgJ1JlZmVyZW5jZSBNYXRlcmlhbHMnLFxyXG4gICAgJ1JlbGF0ZWQgcHJvY2VkdXJlcycsXHJcbiAgICAnSW1wbGVtZW50YXRpb24gZ3VpZGVsaW5lcycsXHJcbiAgICAnVHJhaW5pbmcgTWF0ZXJpYWxzJyxcclxuICAgICdSZWd1bGF0b3J5IERvY3VtZW50cycsXHJcbiAgICAnT3RoZXInLFxyXG4gIF07XHJcbiAgc2VsZWN0ZWRMaW5rU2V0Q2hhbmdlKGV2ZW50OiBhbnksIGluZGV4OiBudW1iZXIpIHtcclxuICAgIHRoaXMuZm9ybWF0ZS5maWxlc1tpbmRleF0ubGlua1NldCA9IGV2ZW50O1xyXG4gICAgaWYgKGV2ZW50ID09PSAnT3RoZXInICYmICF0aGlzLmZvcm1hdGU/LmZpbGVzW2luZGV4XT8ub3RoZXJzKSB7XHJcbiAgICAgIHRoaXMuZm9ybWF0ZS5maWxlc1tpbmRleF0ub3RoZXJzID0gWycnXTtcclxuICAgIH1cclxuICAgIHRoaXMuZW1pdFZhbHVlKCk7XHJcbiAgfVxyXG5cclxuICBhZGRNb3JlRG9jdW1lbnRzRGV0YWlscyhpbmRleDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLmZvcm1hdGUuZmlsZXNbaW5kZXhdLm90aGVycy5wdXNoKCcnKTtcclxuICB9XHJcblxyXG4gIHVwbG9hZFBvbGljeUF0dGFjaG1lbnRzKGZvcm1EYXRhOiBhbnkpIHtcclxuICAgIGNvbnN0IHBhdGggPSAnby8nICsgdGhpcy5vcmdhbml6YXRpb25faWQgKyAnL3BvbGljeS8nO1xyXG4gICAgdGhpcy5wb2xpY3lTZXJ2aWNlXHJcbiAgICAgIC5maWxlVXBsb2FkV29ya3Jvb20oZm9ybURhdGEsIHBhdGgpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHBheWxvYWQgPSB7XHJcbiAgICAgICAgICBmaWxlX25hbWU6IGRhdGEubmFtZSxcclxuICAgICAgICAgIG9yaWdpbmFsX2ZpbGVfbmFtZTogZGF0YS5vcmdfZmlsZSxcclxuICAgICAgICAgIHBhdGg6IHBhdGgsXHJcbiAgICAgICAgICBvcmdhbmlzYXRpb25faWQ6IHRoaXMuYXV0aFNlcnZpY2UuZ2V0T3JnYW5pemF0aW9uSWQoKSxcclxuICAgICAgICAgIG1lbWJlcl9pZDogdGhpcy5hdXRoU2VydmljZS5nZXRNZW1iZXJJZCgpLFxyXG4gICAgICAgICAgY2F0ZWdvcnlfaWQ6IHRoaXMuY2F0ZWdvcmllcyxcclxuICAgICAgICAgIGNsYXBfaWQ6IDAsXHJcbiAgICAgICAgICBjb250cmFjdF90eXBlOiA0LFxyXG4gICAgICAgICAgZm9sZGVyX2lkOiAwLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH0pO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiIFtjbGFzcy5wb2xpY3ktdXBsb2FkLWZpbGVdPVwibW9kZSA9PSAncG9saWN5J1wiPlxyXG4gIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIiAqbmdJZj1cIm1vZGUgPT0gJ3Jlc3BvbnNpYmlsaXR5J1wiPlxyXG4gICAgRm9ybWF0ICYgRXZpZGVuY2VcclxuICA8L2xhYmVsPlxyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwidXBsb2FkLWZvcm1hdFwiXHJcbiAgICAqbmdJZj1cIm1vZGUgIT0gJ3BvbGljeScgJiYgbW9kZSAhPSAncG9saWN5UmV2aWV3ZXInXCJcclxuICA+XHJcbiAgICA8c3BhbiBjbGFzcz1cInRleHRcIlxyXG4gICAgICA+RG8geW91IHdhbnQgdG8gdXBsb2FkIGEgZm9ybWF0IGZvciB0aGlzIHJlc3BvbnNpYmlsaXR5Pzwvc3BhblxyXG4gICAgPlxyXG4gICAgPGRpdiBjbGFzcz1cInJhZGlvLWdyb3VwXCI+XHJcbiAgICAgIDxhcHAtY3MtcmFkaW9cclxuICAgICAgICBbbmFtZV09XCInZm9ybWF0X3JlcXVpcmVkJ1wiXHJcbiAgICAgICAgW2NoZWNrZWRdPVwiZm9ybWF0ZS5oYXNVcGxvYWRGb3JtYXRlID09PSB0cnVlXCJcclxuICAgICAgICAoY2hlY2tlZEV2ZW50KT1cInRvZ2dsZUlzRm9ybWF0ZVVwbG9hZCh0cnVlKVwiXHJcbiAgICAgICAgPlllczwvYXBwLWNzLXJhZGlvXHJcbiAgICAgID5cclxuICAgICAgPGFwcC1jcy1yYWRpb1xyXG4gICAgICAgIFtuYW1lXT1cIidmb3JtYXRfcmVxdWlyZWQnXCJcclxuICAgICAgICBbY2hlY2tlZF09XCJmb3JtYXRlLmhhc1VwbG9hZEZvcm1hdGUgPT09IGZhbHNlXCJcclxuICAgICAgICAoY2hlY2tlZEV2ZW50KT1cInRvZ2dsZUlzRm9ybWF0ZVVwbG9hZChmYWxzZSlcIlxyXG4gICAgICAgID5Ob1xyXG4gICAgICA8L2FwcC1jcy1yYWRpbz5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwiZm9ybS10YWJcIlxyXG4gICAgKm5nSWY9XCJmb3JtYXRlPy5oYXNVcGxvYWRGb3JtYXRlIHx8IG1vZGUgPT0gJ3BvbGljeVJldmlld2VyJ1wiXHJcbiAgPlxyXG4gICAgPGJ1dHRvblxyXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgW2NsYXNzLmFjdGl2ZV09XCJmb3JtYXRlPy5mb3JtYXRlVHlwZSA9PT0gJ0ZJTEUnXCJcclxuICAgICAgKGNsaWNrKT1cInRvZ2dsZUF0dGFjaG1lbnRUeXBlKCdGSUxFJylcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiZm9ybWF0ZS5saW5rcz8ubGVuZ3RoID4gMFwiXHJcbiAgICA+XHJcbiAgICAgIEluc2VydCBGaWxlXHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDxidXR0b25cclxuICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgIFtjbGFzcy5hY3RpdmVdPVwiZm9ybWF0ZT8uZm9ybWF0ZVR5cGUgPT09ICdMSU5LJ1wiXHJcbiAgICAgIChjbGljayk9XCJ0b2dnbGVBdHRhY2htZW50VHlwZSgnTElOSycpXCJcclxuICAgICAgW2Rpc2FibGVkXT1cImZvcm1hdGUuZmlsZXM/Lmxlbmd0aCA+IDBcIlxyXG4gICAgPlxyXG4gICAgICBJbnNlcnQgTGlua1xyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxuZy1jb250YWluZXJcclxuICAgICpuZ0lmPVwiXHJcbiAgICAgIChmb3JtYXRlPy5oYXNVcGxvYWRGb3JtYXRlICYmIGZvcm1hdGUuZm9ybWF0ZVR5cGUgPT09ICdGSUxFJykgfHxcclxuICAgICAgKG1vZGUgPT0gJ3BvbGljeScgJiYgZm9ybWF0ZS5mb3JtYXRlVHlwZSA9PT0gJ0ZJTEUnKSB8fFxyXG4gICAgICAobW9kZSA9PSAncG9saWN5UmV2aWV3ZXInICYmIGZvcm1hdGUuZm9ybWF0ZVR5cGUgPT09ICdGSUxFJylcclxuICAgIFwiXHJcbiAgPlxyXG4gICAgPCEtLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLWZpbGUgdXBsb2FkIGluIHByb2dyZXNzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIC0tPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihmb3JtYXRlPy51cGxvYWRJblByb2dyZXNzIHwga2V5dmFsdWUpLmxlbmd0aCA+IDBcIj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwiZmlsZS1saXN0XCJcclxuICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgIGxldCBlYWNoRmlsZSBvZiBmb3JtYXRlPy51cGxvYWRJblByb2dyZXNzIHwga2V5dmFsdWU7XHJcbiAgICAgICAgICBsZXQgaSA9IGluZGV4XHJcbiAgICAgICAgXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmaWxlLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJmaWxlLW5hbWVcIj57eyBlYWNoRmlsZS52YWx1ZSB9fSA8L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGFwcC1saW5lLWxvYWRlciBbbG9hZGVySGVpZ2h0XT1cIjJcIj48L2FwcC1saW5lLWxvYWRlcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwhLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1maWxlIHVwbG9hZCBlbmRzIGhlcmUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIC0tPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZvcm1hdGUuZmlsZXM/Lmxlbmd0aCA+IDBcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1vZGUgIT0gJ3BvbGljeSdcIj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cImZpbGUtbGlzdFwiXHJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgZWFjaEZpbGUgb2YgZm9ybWF0ZS5maWxlczsgbGV0IGkgPSBpbmRleFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZpbGUtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmlsZS1uYW1lXCI+e3sgZWFjaEZpbGU/LmZpbGVfbmFtZSB9fSA8L3NwYW4+XHJcbiAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImRlbGV0ZUF0dGFjaG1lbnQoaSlcIj5cclxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkwZDs8L2k+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgPGRpdlxyXG4gICAgICAgICpuZ0lmPVwibW9kZSA9PSAncG9saWN5J1wiXHJcbiAgICAgICAgY2xhc3M9XCJwb2xpY3ktcmVsYXRlZC1kb2N1bWVudC1maWVsZCB2eC1wLTMgdngtcHQtMlwiXHJcbiAgICAgID5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cInZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LXR0LXVwcGVyY2FzZSB2eC1tYi0yXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICBMSU5LIFRIRSBET0NVTUVOVCBBTkQgU1BFQ0lGWSBUSEUgUkVMQVRJT05TSElQIFdJVEggVEhJUyBQT0xJQ1lcclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cImZpbGUtbGlzdCBwb2xpY3lcIlxyXG4gICAgICAgICAgKm5nRm9yPVwibGV0IGVhY2hGaWxlIG9mIGZvcm1hdGUuZmlsZXM7IGxldCBpID0gaW5kZXhcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWxlLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZmlsZSB0YWJsZSB7e1xyXG4gICAgICAgICAgICAgICAgZWFjaEZpbGU/LmZpbGVfbmFtZS5zcGxpdCgnLicpW1xyXG4gICAgICAgICAgICAgICAgICBlYWNoRmlsZT8uZmlsZV9uYW1lLnNwbGl0KCcuJyk/Lmxlbmd0aCAtIDFcclxuICAgICAgICAgICAgICAgIF1cclxuICAgICAgICAgICAgICB9fVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkyZTs8L2k+XHJcbiAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybWF0IHt7XHJcbiAgICAgICAgICAgICAgICAgIGVhY2hGaWxlPy5maWxlX25hbWUuc3BsaXQoJy4nKVtcclxuICAgICAgICAgICAgICAgICAgICBlYWNoRmlsZT8uZmlsZV9uYW1lLnNwbGl0KCcuJyk/Lmxlbmd0aCAtIDFcclxuICAgICAgICAgICAgICAgICAgXVxyXG4gICAgICAgICAgICAgICAgfX1cIlxyXG4gICAgICAgICAgICAgICAgPnt7XHJcbiAgICAgICAgICAgICAgICAgIGVhY2hGaWxlPy5maWxlX25hbWUuc3BsaXQoXCIuXCIpW1xyXG4gICAgICAgICAgICAgICAgICAgIGVhY2hGaWxlPy5maWxlX25hbWUuc3BsaXQoXCIuXCIpPy5sZW5ndGggLSAxXHJcbiAgICAgICAgICAgICAgICAgIF1cclxuICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmlsZS1uYW1lXCI+e3sgZWFjaEZpbGU/LmZpbGVfbmFtZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbi1ncm91cFwiPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImRlbGV0ZUF0dGFjaG1lbnQoaSlcIj5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTBkOzwvaT5cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxjcy1zZWxlY3RcclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJlYWNoRmlsZS5saW5rU2V0XCJcclxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2VsZWN0ZWRMaW5rU2V0Q2hhbmdlKCRldmVudCwgaSlcIlxyXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0RlZmluZSB0aGUgZG9jdW1lbnRcXCdzIHJlbGF0aW9uc2hpcCB0byB0aGlzIHBvbGljeSdcIlxyXG4gICAgICAgICAgICBuYW1lPVwic2VsZWN0ZWRcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8Y3Mtb3B0aW9uICpuZ0Zvcj1cImxldCBkYXRhIG9mIHBvbGljeUxpbmtTZXRMaXN0XCIgW3ZhbHVlXT1cImRhdGFcIj5cclxuICAgICAgICAgICAgICB7eyBkYXRhIH19XHJcbiAgICAgICAgICAgIDwvY3Mtb3B0aW9uPlxyXG4gICAgICAgICAgPC9jcy1zZWxlY3Q+XHJcbiAgICAgICAgICA8IS0tIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG90aGVyIG9mIGVhY2hGaWxlPy5vdGhlcnM7IGxldCBqID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0ICpuZ0lmPVwiZWFjaEZpbGU/LmxpbmtTZXQgPT09ICdPdGhlciAoc3BlY2lmeSBvd24pJ1wiIFtuZ01vZGVsXT1cImVhY2hGaWxlLm90aGVyc1tqXVwiIChuZ01vZGVsQ2hhbmdlKT1cInNlbGVjdGVkTGlua1NldENoYW5nZSgnT3RoZXIgKHNwZWNpZnkgb3duKScsaSwgJGV2ZW50LCBqKVwiIGNsYXNzPVwibGlua2FnZS1pbnB1dFwiIHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJUeXBlIHRoZSBsaW5rYWdlIGRldGFpbHNcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJlYWNoRmlsZT8ubGlua1NldCA9PT0gJ090aGVyIChzcGVjaWZ5IG93biknXCIgY2xhc3M9XCJsaW5rYWdlLWJ0biB2eC1mcy0xMSB2eC1mdy01MDAgdngtdHh0LWJsdWUgdngtdHQtdXBwZXJjYXNlIHZ4LXAtMCB2eC1tdC0yXCIgKGNsaWNrKT1cImFkZE1vcmVEb2N1bWVudHNEZXRhaWxzKGkpXCI+KyBBREQgTU9SRTwvYnV0dG9uPiAtLT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8IS0tIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIiAqbmdJZj1cIm1vZGU9PSdwb2xpY3knXCI+XHJcbiAgICAgICAgICAgICAgICBMSU5LIFRIRSBET0NVTUVOVCBBTkQgU1BFQ0lGWSBUSEUgUkVMQVRJT05TSElQIFdJVEggVEhJUyBQT0xJQ1lcclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZWFjaEZpbGUgb2YgZm9ybWF0ZS5maWxlczsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpbGUtbGlzdFwiICpuZ0lmPVwibW9kZSE9J3BvbGljeSdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsZS1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmaWxlLW5hbWVcIj57eyBlYWNoRmlsZT8uZmlsZV9uYW1lIH19IDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiZGVsZXRlQXR0YWNobWVudChpKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MGQ7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpbGUtbGlzdCBwb2xpY3lcIiAqbmdJZj1cIm1vZGU9PSdwb2xpY3knXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpbGUtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmlsZS1uYW1lXCI+e3tlYWNoRmlsZT8uZmlsZV9uYW1lfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24tZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLSAtIDxidXR0b24gY2xhc3M9XCJlZGl0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+IC0gLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImRlbGV0ZUF0dGFjaG1lbnQoaSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkwZDs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGNzLXNlbGVjdCBbKG5nTW9kZWwpXT1cImVhY2hGaWxlLmxpbmtTZXRcIiAobmdNb2RlbENoYW5nZSk9XCJzZWxlY3RlZExpbmtTZXRDaGFuZ2UoJGV2ZW50LGkpXCIgW3BsYWNlaG9sZGVyXT1cIidEZWZpbmUgdGhlIGRvY3VtZW50XFwncyByZWxhdGlvbnNoaXAgdG8gdGhpcyBwb2xpY3knXCIgbmFtZT1cInNlbGVjdGVkXCIgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8Y3Mtb3B0aW9uICpuZ0Zvcj1cImxldCBkYXRhIG9mIHBvbGljeUxpbmtTZXRMaXN0XCIgW3ZhbHVlXT1cImRhdGFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZGF0YX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvY3Mtb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvY3Mtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPiAtLT5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPCEtLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLWRyYWcgYW5kIGRyb3AgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLT5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJ0YWItZ3JvdXBcIlxyXG4gICAgICBbY2xhc3MudXBsb2FkZWRdPVwiZm9ybWF0ZS5maWxlcz8ubGVuZ3RoID4gMFwiXHJcbiAgICAgIGFwcERyYWdEcm9wXHJcbiAgICAgIChmaWxlRHJvcHBlZCk9XCJvbkZpbGVEcm9wcGVkKCRldmVudClcIlxyXG4gICAgPlxyXG4gICAgICA8bGFiZWwgY2xhc3M9XCJ1cGxvYWQtZmlsZVwiPlxyXG4gICAgICAgIDxpbWdcclxuICAgICAgICAgIHNyYz1cImh0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvd29ya2Zsb3ctZW5naW5lL2Fzc2V0cy93b3JrZmxvdy91cGxvYWQuc3ZnXCJcclxuICAgICAgICAgIGFsdD1cIlwiXHJcbiAgICAgICAgICBjbGFzcz1cImltYWdlXCJcclxuICAgICAgICAvPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJicm93c2VcIj5cclxuICAgICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibW9kZSAhPSAncG9saWN5J1wiXHJcbiAgICAgICAgICAgICAgPkRyb3AgeW91ciBmaWxlcyBoZXJlIC9cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtb2RlID09ICdwb2xpY3knXCJcclxuICAgICAgICAgICAgICA+RHJvcCB5b3VyIGZpbGVzIGhlcmUgL1xyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiXHJcbiAgICAgICAgICAgICAgPkJyb3dzZVxyXG4gICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgdHlwZT1cImZpbGVcIlxyXG4gICAgICAgICAgICAgICAgbXVsdGlwbGVcclxuICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25GaWxlRHJvcHBlZCgkZXZlbnQudGFyZ2V0LmZpbGVzKVwiXHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPCEtLSA8c3BhbiAqbmdJZj1cIm1vZGUhPSdwb2xpY3knXCI+RHJvcCB5b3VyIGZpbGVzIGhlcmUgLzwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm1vZGU9PSdwb2xpY3knXCI+RHJhZyAmIGRyb3AgdG8gdXBsb2FkIGZpbGVzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHBvbGljeSAvPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj5Ccm93c2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJmaWxlXCIgbXVsdGlwbGUgKGNoYW5nZSk9XCJvbkZpbGVEcm9wcGVkKCRldmVudC50YXJnZXQuZmlsZXMpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPiAtLT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9sYWJlbD5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1kcmFnIGRyb3AgZW5kcyBoZXJlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG5cclxuICA8bmctY29udGFpbmVyXHJcbiAgICAqbmdJZj1cIlxyXG4gICAgICAoZm9ybWF0ZT8uaGFzVXBsb2FkRm9ybWF0ZSAmJiBmb3JtYXRlLmZvcm1hdGVUeXBlID09PSAnTElOSycpIHx8XHJcbiAgICAgIChtb2RlID09ICdwb2xpY3lSZXZpZXdlcicgJiYgZm9ybWF0ZS5mb3JtYXRlVHlwZSA9PT0gJ0xJTksnKVxyXG4gICAgXCJcclxuICA+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZm9ybWF0ZS5saW5rcy5sZW5ndGggPiAwXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGxpbmsgb2YgZm9ybWF0ZS5saW5rczsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmaWxlLWxpc3RcIiAqbmdJZj1cIiFsaW5rLmlzRWRpdGluZ1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZpbGUtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmlsZS1uYW1lXCI+e3sgbGluay5saW5rIH19IDwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJidXR0b24tZ3JvdXBcIj5cclxuICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiaXNFZGl0RGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJlZGl0XCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJlZGl0TGluayhpKVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPlxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImRlbGV0ZUxpbmsoaSlcIj5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTBkOzwvaT5cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxpbmsuaXNFZGl0aW5nXCI+XHJcbiAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImVkaXQtbGlua1wiXHJcbiAgICAgICAgICAgIGFwcEF1dG9mb2N1c1xyXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkVudGVyIHRoZSBsaW5rIGhlcmVcIlxyXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImxpbmsubGlua1wiXHJcbiAgICAgICAgICAgIChmb2N1c291dCk9XCJpbnNlcnRMaW5rKCdFRElUJywgaSlcIlxyXG4gICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJpbnNlcnRMaW5rKCdFRElUJywgaSlcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICAgIDxwIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiICpuZ0lmPVwibGluay5jb250YWluc0Vycm9yXCI+XHJcbiAgICAgICAgICAgIFBsZWFzZSBpbnNlcnQgYSB2YWxpZCBsaW5rXHJcbiAgICAgICAgICA8L3A+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8aW5wdXRcclxuICAgICAgW2Rpc2FibGVkXT1cImlzTmV3TGlua0Rpc2FibGVkXCJcclxuICAgICAgY2xhc3M9XCJlZGl0LWxpbmtcIlxyXG4gICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgIFsobmdNb2RlbCldPVwibmV3TGluay5saW5rXCJcclxuICAgICAgcGxhY2Vob2xkZXI9XCJFbnRlciB0aGUgbGluayBoZXJlXCJcclxuICAgICAgKGZvY3Vzb3V0KT1cImluc2VydExpbmsoJ0NSRUFURScpXCJcclxuICAgICAgKGtleWRvd24uZW50ZXIpPVwiaW5zZXJ0TGluaygnQ1JFQVRFJylcIlxyXG4gICAgLz5cclxuICAgIDxwIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiICpuZ0lmPVwibmV3TGluay5jb250YWluc0Vycm9yXCI+XHJcbiAgICAgIFBsZWFzZSBpbnNlcnQgYSB2YWxpZCBsaW5rXHJcbiAgICA8L3A+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbiAgPGRpdiBjbGFzcz1cInVwbG9hZC1mb3JtYXRcIiAqbmdJZj1cIm1vZGUgPT0gJ3Jlc3BvbnNpYmlsaXR5J1wiPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJ0ZXh0XCJcclxuICAgICAgPkRvIHlvdSB3YW50IGV2aWRlbmNlIG9mIGNvbXBsZXRpb24gb2YgdGhlIHJlc3BvbnNpYmlsaXR5IHRvIGJlXHJcbiAgICAgIHVwbG9hZGVkPzwvc3BhblxyXG4gICAgPlxyXG4gICAgPGRpdiBjbGFzcz1cInJhZGlvLWdyb3VwXCI+XHJcbiAgICAgIDxhcHAtY3MtcmFkaW9cclxuICAgICAgICBbbmFtZV09XCInZXZpZGVuY2VfcmVxdWlyZWQnXCJcclxuICAgICAgICBbY2hlY2tlZF09XCJmb3JtYXRlLmlzRXZpZGVuY2VSZXF1aXJlZCA9PT0gdHJ1ZVwiXHJcbiAgICAgICAgKGNoZWNrZWRFdmVudCk9XCJ0b2dnbGVJc0Zvcm1hdFJlcXVpcmVkKHRydWUpXCJcclxuICAgICAgICA+WWVzPC9hcHAtY3MtcmFkaW9cclxuICAgICAgPlxyXG4gICAgICA8YXBwLWNzLXJhZGlvXHJcbiAgICAgICAgW25hbWVdPVwiJ2V2aWRlbmNlX3JlcXVpcmVkJ1wiXHJcbiAgICAgICAgW2NoZWNrZWRdPVwiZm9ybWF0ZS5pc0V2aWRlbmNlUmVxdWlyZWQgPT09IGZhbHNlXCJcclxuICAgICAgICAoY2hlY2tlZEV2ZW50KT1cInRvZ2dsZUlzRm9ybWF0UmVxdWlyZWQoZmFsc2UpXCJcclxuICAgICAgICA+Tm9cclxuICAgICAgPC9hcHAtY3MtcmFkaW8+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|