ngx-bimplus-components 0.0.134-webcomponents → 0.0.135-dependencies
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/esm2022/lib/components/bimplus-buttons-row/bimplus-buttons-row.component.mjs +3 -4
- package/esm2022/lib/components/bimplus-connection-designer/bimplus-connection-designer.component.mjs +5 -5
- package/esm2022/lib/components/bimplus-connection-designer-results/bimplus-connection-designer-results.component.mjs +3 -3
- package/esm2022/lib/components/bimplus-flat-tree/bimplus-flat-tree.component.mjs +3 -3
- package/esm2022/lib/components/bimplus-floating-bar-header-logo/bimplus-floating-bar-header-logo.component.mjs +1 -1
- package/esm2022/lib/components/bimplus-floating-bar-project-navigator/bimplus-floating-bar-project-navigator.component.mjs +1 -1
- package/esm2022/lib/components/bimplus-main-menu/bimplus-main-menu.component.mjs +27 -4
- package/esm2022/lib/components/bimplus-navbar/bimplus-navbar.component.mjs +19 -6
- package/esm2022/lib/components/bimplus-navbar/logo-state.enum.mjs +2 -1
- package/esm2022/lib/components/bimplus-object-complex-properties/bimplus-object-complex-properties.component.mjs +3 -3
- package/esm2022/lib/components/bimplus-object-navigator/bimplus-object-navigator.component.mjs +3 -3
- package/esm2022/lib/components/bimplus-object-navigator/criteria-select-object-properties/criteria-select-object-properties.component.mjs +3 -3
- package/esm2022/lib/components/bimplus-object-navigator/criteria-select-object-properties/criteria-select-object-properties.interface.mjs +1 -1
- package/esm2022/lib/components/bimplus-object-navigator/object-filter-result/object-filter-result.component.mjs +3 -3
- package/esm2022/lib/components/bimplus-object-structure/bimplus-object-structure.component.mjs +6 -3
- package/esm2022/lib/components/bimplus-scrollable-container/bimplus-scrollable-container.component.mjs +1 -1
- package/esm2022/lib/components/bimplus-tabs-switcher/bimplus-tabs-switcher.component.mjs +19 -0
- package/esm2022/lib/components/bimplus-tabs-switcher/bimplus-tabs-switcher.interface.mjs +2 -0
- package/esm2022/lib/components/object-properties/object-properties.component.mjs +236 -0
- package/esm2022/lib/components/object-properties/object-properties.interface.mjs +2 -0
- package/esm2022/lib/components/object-properties-header/object-properties-header.component.mjs +19 -4
- package/esm2022/lib/components/object-properties-header/object-properties-header.interface.mjs +1 -1
- package/esm2022/public-api.mjs +4 -1
- package/fesm2022/ngx-bimplus-components.mjs +327 -32
- package/fesm2022/ngx-bimplus-components.mjs.map +1 -1
- package/lib/components/bimplus-floating-bar-header-logo/bimplus-floating-bar-header-logo.component.d.ts +1 -1
- package/lib/components/bimplus-floating-bar-project-navigator/bimplus-floating-bar-project-navigator.component.d.ts +3 -3
- package/lib/components/bimplus-navbar/bimplus-navbar.component.d.ts +5 -1
- package/lib/components/bimplus-navbar/logo-state.enum.d.ts +1 -0
- package/lib/components/bimplus-object-navigator/criteria-select-object-properties/criteria-select-object-properties.component.d.ts +7 -7
- package/lib/components/bimplus-object-navigator/criteria-select-object-properties/criteria-select-object-properties.interface.d.ts +3 -3
- package/lib/components/bimplus-object-structure/bimplus-object-structure.component.d.ts +1 -1
- package/lib/components/bimplus-scrollable-container/bimplus-scrollable-container.component.d.ts +1 -1
- package/lib/components/bimplus-tabs-switcher/bimplus-tabs-switcher.component.d.ts +10 -0
- package/lib/components/bimplus-tabs-switcher/bimplus-tabs-switcher.interface.d.ts +3 -0
- package/lib/components/object-properties/object-properties.component.d.ts +42 -0
- package/lib/components/object-properties/object-properties.interface.d.ts +18 -0
- package/lib/components/object-properties-header/object-properties-header.component.d.ts +5 -3
- package/lib/components/object-properties-header/object-properties-header.interface.d.ts +1 -0
- package/package.json +5 -5
- package/public-api.d.ts +3 -0
|
@@ -100,6 +100,7 @@ export class BimplusMainMenuComponent extends BimplusLocalizedWidgetComponent {
|
|
|
100
100
|
{ action: "propertymanager", id: MenuListTypeId.PORTAL_PROPERTY_MANAGER_BTN, type: "", class: "bim-mm-icon-property-manager", textId: "_Portal_Menu_Properties", textIdDisabled: "_Portal_Menu_Properties", disabledTitle: '', checkSubscription: true, devOrStageOnly: false, clickPolicy: "" },
|
|
101
101
|
];
|
|
102
102
|
this._menuFooterList = [
|
|
103
|
+
{ action: "", id: MenuListTypeId.DIVIDERAPPS, type: "divider", class: "bim-mm-app-item-divider", checkSubscription: false, devOrStageOnly: false },
|
|
103
104
|
{ action: "addins", id: MenuListTypeId.PORTAL_ADD_INS_BTN, type: "", class: "bim-mm-icon-add-ins", textId: "_AddIns", textIdDisabled: "_AddIns", disabledTitle: '', checkSubscription: false, devOrStageOnly: false, clickPolicy: "" },
|
|
104
105
|
{
|
|
105
106
|
action: "getYourTeam",
|
|
@@ -117,7 +118,24 @@ export class BimplusMainMenuComponent extends BimplusLocalizedWidgetComponent {
|
|
|
117
118
|
}
|
|
118
119
|
}
|
|
119
120
|
get apps() {
|
|
120
|
-
|
|
121
|
+
let appsList = this.appsList.sort((a, b) => this.appsOrder.indexOf(a.id) - this.appsOrder.indexOf(b.id));
|
|
122
|
+
// if connexisVisible remove PORTAL_CONNEXIS_BTN.
|
|
123
|
+
if (!this.connexisVisible) {
|
|
124
|
+
appsList = appsList.filter(({ id }) => id !== MenuListTypeId.PORTAL_CONNEXIS_BTN);
|
|
125
|
+
}
|
|
126
|
+
// if teammembersDisabled remove PORTAL_TEAM_MANAGEMENT_BTN.
|
|
127
|
+
if (this.teammembersDisabled) {
|
|
128
|
+
appsList = appsList.filter(({ id }) => id !== MenuListTypeId.PORTAL_TEAM_MANAGEMENT_BTN);
|
|
129
|
+
}
|
|
130
|
+
// if propertymanagerDisabled remove PORTAL_PROPERTY_MANAGER_BTN.
|
|
131
|
+
if (this.propertymanagerDisabled) {
|
|
132
|
+
appsList = appsList.filter(({ id }) => id !== MenuListTypeId.PORTAL_PROPERTY_MANAGER_BTN);
|
|
133
|
+
}
|
|
134
|
+
// if isTouch remove property manager btn. & approvals btn.
|
|
135
|
+
if (this.isTouch) {
|
|
136
|
+
appsList = appsList.filter(({ id }) => id !== MenuListTypeId.PORTAL_PROPERTY_MANAGER_BTN &&
|
|
137
|
+
id !== MenuListTypeId.PORTAL_BIM_PROCESSES);
|
|
138
|
+
}
|
|
121
139
|
if (!this.getYourTeamVisible) {
|
|
122
140
|
return appsList;
|
|
123
141
|
}
|
|
@@ -126,12 +144,17 @@ export class BimplusMainMenuComponent extends BimplusLocalizedWidgetComponent {
|
|
|
126
144
|
id !== MenuListTypeId.PORTAL_PROPERTY_MANAGER_BTN);
|
|
127
145
|
}
|
|
128
146
|
get footerList() {
|
|
129
|
-
|
|
147
|
+
let footerList = this._menuFooterList.filter(item => this._isSubscribed(item) && !this._isHidden(item));
|
|
148
|
+
// in case that "Get Your Team" is not visible and teammembers are disabled then remove divider first
|
|
149
|
+
if (this.teammembersDisabled) {
|
|
150
|
+
footerList = footerList.filter(({ id }) => id !== MenuListTypeId.DIVIDERAPPS);
|
|
151
|
+
}
|
|
130
152
|
// if team is assigned then remove "Get Your Team" button
|
|
131
153
|
if (!this.getYourTeamVisible) {
|
|
132
154
|
return footerList.filter(({ id }) => id !== MenuListTypeId.PORTAL_GET_YOUR_TEAM_BTN);
|
|
133
155
|
}
|
|
134
|
-
|
|
156
|
+
// remove divider if there is no "Get Your Team" button
|
|
157
|
+
return footerList.filter(({ id }) => id !== MenuListTypeId.DIVIDERAPPS);
|
|
135
158
|
}
|
|
136
159
|
/**--------------------------------------------------------------------------
|
|
137
160
|
* check if app is subscribed
|
|
@@ -353,4 +376,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
353
376
|
}], bimplusMainMenuOverlayClicked: [{
|
|
354
377
|
type: Output
|
|
355
378
|
}] } });
|
|
356
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmltcGx1cy1tYWluLW1lbnUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWJpbXBsdXMtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvYmltcGx1cy1tYWluLW1lbnUvYmltcGx1cy1tYWluLW1lbnUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWJpbXBsdXMtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvYmltcGx1cy1tYWluLW1lbnUvYmltcGx1cy1tYWluLW1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQTRCLE1BQU0sZUFBZSxDQUFDO0FBQ3RJLE9BQU8sRUFBQyxnQkFBZ0IsRUFBRSxlQUFlLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RSxPQUFPLEVBQUMsK0JBQStCLEVBQUMsTUFBTSxrRUFBa0UsQ0FBQTtBQUNoSCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxFQUFDLDJCQUEyQixFQUFDLE1BQU0sMERBQTBELENBQUM7Ozs7QUFHckcsTUFBTSxjQUFjLEdBQUc7SUFDckIsMEJBQTBCLEVBQUUseUJBQXlCO0lBQ3JELDJCQUEyQixFQUFFLDBCQUEwQjtJQUN2RCxnQkFBZ0IsRUFBRSxnQkFBZ0I7SUFDbEMsaUJBQWlCLEVBQUUsaUJBQWlCO0lBQ3BDLG9CQUFvQixFQUFFLG9CQUFvQjtJQUMxQywyQkFBMkIsRUFBRSwwQkFBMEI7SUFDdkQsb0JBQW9CLEVBQUUsb0JBQW9CO0lBQzFDLDBCQUEwQixFQUFFLDBCQUEwQjtJQUN0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LGtCQUFrQjtzQkFBekQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDN0IsWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRUksc0JBQXNCO3NCQUEvQixNQUFNO2dCQUNHLDZCQUE2QjtzQkFBdEMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgVmlld0VuY2Fwc3VsYXRpb24sIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgYm9vbGVhbkF0dHJpYnV0ZSwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZSwgVHJhbnNsYXRlTW9kdWxlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHtCaW1wbHVzTG9jYWxpemVkV2lkZ2V0Q29tcG9uZW50fSBmcm9tIFwiLi8uLi9iaW1wbHVzLWxvY2FsaXplZC13aWRnZXQvYmltcGx1cy1sb2NhbGl6ZWQtd2lkZ2V0LmNvbXBvbmVudFwiXHJcbmltcG9ydCB7IGZpcmVFdmVudCB9IGZyb20gJy4uLy4uL3V0aWxzL3V0aWxzJztcclxuaW1wb3J0IHtCaW1wbHVzUHJvamVjdE1lbnVDb21wb25lbnR9IGZyb20gJy4vLi4vYmltcGx1cy1wcm9qZWN0LW1lbnUvYmltcGx1cy1wcm9qZWN0LW1lbnUuY29tcG9uZW50JztcclxuaW1wb3J0IHtNZW51TGlzdFR5cGV9IGZyb20gJy4uLy4uL3R5cGVzL3R5cGVzJztcclxuXHJcbmNvbnN0IE1lbnVMaXN0VHlwZUlkID0ge1xyXG4gIFBPUlRBTF9URUFNX01BTkFHRU1FTlRfQlROOiAncG9ydGFsVGVhbU1hbmFnZW1lbnRCdG4nLFxyXG4gIFBPUlRBTF9QUk9QRVJUWV9NQU5BR0VSX0JUTjogJ3BvcnRhbFByb3BlcnR5TWFuYWdlckJ0bicsXHJcbiAgUE9SVEFMX0JJTV9VU0VSUzogJ3BvcnRhbEJpbVVzZXJzJyxcclxuICBQT1JUQUxfQklNX01PREVMUzogJ3BvcnRhbEJpbU1vZGVscycsXHJcbiAgUE9SVEFMX0JJTV9ET0NVTUVOVFM6ICdwb3J0YWxCaW1Eb2N1bWVudHMnLFxyXG4gIFBPUlRBTF9CSU1fUFJPSkVDVF9TRVRUSU5HUzogJ3BvcnRhbEJpbVByb2plY3RTZXR0aW5ncycsXHJcbiAgUE9SVEFMX0JJTV9QUk9DRVNTRVM6ICdwb3J0YWxCaW1Qcm9jZXNzZXMnLFxyXG4gIERJVklERVJfUFJPSkVDVF9NQU5BR0VNRU5UOiAnZGl2aWRlcnByb2plY3RtYW5hZ2VtZW50JyxcclxuICBQT1JUQUxfQklNX1ZJRVdFUl9CVE46ICdwb3J0YWxCaW1WaWV3ZXJCdG4nLFxyXG4gIFBPUlRBTF9DTE9VRF9WSUVXRVJfQlROOiAncG9ydGFsQ2xvdWRWaWV3ZXJCdG4nLFxyXG4gIFBPUlRBTF9DT05ORVhJU19CVE46ICdwb3J0YWxDb25uZXhpc0J0bicsXHJcbiAgUE9SVEFMX0JJTV9BVVRPQ09OVkVSVEVSX0JUTjogJ3BvcnRhbEJpbUF1dG9jb252ZXJ0ZXJCdG4nLFxyXG4gIERJVklERVJBUFBTOiAnZGl2aWRlcmFwcHMnLFxyXG4gIFBPUlRBTF9BRERfSU5TX0JUTjogJ3BvcnRhbEFkZEluc0J0bicsXHJcbiAgUE9SVEFMX1NIT1BfQlROOiAncG9ydGFsU2hvcEJ0bicsXHJcbiAgUE9SVEFMX0dFVF9ZT1VSX1RFQU1fQlROOiAncG9ydGFsR2V0WW91clRlYW1CdG4nXHJcbn0gYXMgY29uc3Q7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEJpbXBsdXNNYWluTWVudUNvbXBvbmVudEF0dHJpYnV0ZSAge1xyXG4gIFtrZXk6IHN0cmluZ106IHVua25vd247IC8vIEFkZCBpbmRleCBzaWduYXR1cmUgYWxsb3dpbmcgc3RyaW5nIGluZGV4aW5nXHJcbiAgIC8vT3RoZXIgcHJvcGVydGllcyBhbmQgbWV0aG9kcy4uLlxyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1iaW1wbHVzLW1haW4tbWVudScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBUcmFuc2xhdGVNb2R1bGUsQmltcGx1c1Byb2plY3RNZW51Q29tcG9uZW50XSxcclxuICBwcm92aWRlcnM6IFtUcmFuc2xhdGVTZXJ2aWNlXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vYmltcGx1cy1tYWluLW1lbnUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9iaW1wbHVzLW1haW4tbWVudS5jb21wb25lbnQubGVzcycsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uU2hhZG93RG9tXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgQmltcGx1c01haW5NZW51Q29tcG9uZW50IGV4dGVuZHMgQmltcGx1c0xvY2FsaXplZFdpZGdldENvbXBvbmVudCBpbXBsZW1lbnRzICBPbkNoYW5nZXMge1xyXG4gIGNvbnN0cnVjdG9yKHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UgKXtcclxuICAgIHN1cGVyKHRyYW5zbGF0ZVNlcnZpY2UpXHJcbiAgfVxyXG5cclxuXHJcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGlzRW1iZWRkZWQgOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGlzVG91Y2ggOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGlzSXBhZEFwcCA6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaXNEZXYgOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGlzU3RhZ2UgOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGhpZGVQcm9qZWN0TWVudUljb25zIDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzaG93SG9yaXpvbnRhbE1lbnVJY29ucyA6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBwcm9qZWN0TmFtZSA6IHN0cmluZyA9IFwiXCI7XHJcbiAgQElucHV0KCkgcHJvamVjdEltYWdlVXJsIDogc3RyaW5nID0gXCJcIjtcclxuICBASW5wdXQoKSBwcm9qZWN0RXhwbG9yZXJVcmwgOiBzdHJpbmcgPSBcIlwiO1xyXG4gIEBJbnB1dCgpIHByb2plY3RBY3RpdmVJdGVtIDogc3RyaW5nID0gXCJcIjtcclxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgcHJvamVjdG1lbWJlcnNEaXNhYmxlZCA6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgbW9kZWxzRGlzYWJsZWQgOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGRvY3VtZW50c0Rpc2FibGVkIDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBwcm9qZWN0c2V0dGluZ3NEaXNhYmxlZCA6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgcHJvY2Vzc2VzRGlzYWJsZWQgOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgZm9vdGVyQWN0aXZlSXRlbSA6IHN0cmluZyA9IFwiXCI7XHJcbiAgQElucHV0KCkgbWVudUFjdGl2ZUl0ZW0gOiBzdHJpbmcgPSBcIlwiO1xyXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBpc0NvbGxhcHNlZCA6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc2hvd092ZXJsYXkgOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHRlYW1tZW1iZXJzU3Vic2NyaWJlZCA6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgcHJvcGVydHltYW5hZ2VyU3Vic2NyaWJlZCA6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgYXV0b2NvbnZlcnRlclN1YnNjcmliZWQgOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGNvbm5leGlzU3Vic2NyaWJlZCA6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgb3BlblByb2plY3REaXNhYmxlZCA6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgYmltZXhwbG9yZXJEaXNhYmxlZCA6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgYXV0b2NvbnZlcnRlckRpc2FibGVkIDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBjb25uZXhpc0Rpc2FibGVkIDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSB0ZWFtbWVtYmVyc0Rpc2FibGVkIDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBwcm9wZXJ0eW1hbmFnZXJEaXNhYmxlZCA6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc2hvcERpc2FibGVkIDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBhZGRpbnNEaXNhYmxlZCA6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgb3BlblByb2plY3RWaXNpYmxlIDogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGJpbXBsdXNQcm9qZWN0TWVudVZpc2libGUgOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgcHJvamVjdG1lbWJlcnNWaXNpYmxlIDogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIG1vZGVsc1Zpc2libGUgOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgZG9jdW1lbnRzVmlzaWJsZSA6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBwcm9qZWN0c2V0dGluZ3NWaXNpYmxlIDogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHByb2Nlc3Nlc1Zpc2libGUgOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgYmltZXhwbG9yZXJWaXNpYmxlIDogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGF1dG9jb252ZXJ0ZXJWaXNpYmxlIDogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGNvbm5leGlzVmlzaWJsZSA6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSB0ZWFtbWVtYmVyc1Zpc2libGUgOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgcHJvcGVydHltYW5hZ2VyVmlzaWJsZSA6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzaG9wVmlzaWJsZSA6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBhZGRpbnNWaXNpYmxlIDogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGRpdmlkZXJwcm9qZWN0bWFuYWdlbWVudFZpc2libGUgOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgZGl2aWRlcmFwcHNWaXNpYmxlIDogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGdldFlvdXJUZWFtVmlzaWJsZSA6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBhcHBzV2l0aEluZm8gOiBzdHJpbmdbXSA9IFtdO1xyXG4gIEBJbnB1dCgpIGFwcHNPcmRlciA6IHN0cmluZ1tdID0gW107XHJcbiAgQElucHV0KCkgbWVudUl0ZW1zT3JkZXIgOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICBAT3V0cHV0KCkgYmltcGx1c01haW5NZW51Q2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8eyBhY3Rpb246IHN0cmluZywgdHlwZTogc3RyaW5nIH0+KCk7XHJcbiAgQE91dHB1dCgpIGJpbXBsdXNNYWluTWVudU92ZXJsYXlDbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlc1snbG9jYWxpemVkU3RyaW5ncyddKSB7XHJcbiAgICAgIHRoaXMubG9jYWxpemVkU3RyaW5ncyA9IGNoYW5nZXNbJ2xvY2FsaXplZFN0cmluZ3MnXS5jdXJyZW50VmFsdWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgYXBwcygpOiBNZW51TGlzdFR5cGVbXSB7XHJcbiAgICBjb25zdCBhcHBzTGlzdCA9IHRoaXMuYXBwc0xpc3Quc29ydCgoYSwgYikgPT4gdGhpcy5hcHBzT3JkZXIuaW5kZXhPZihhLmlkKSAtIHRoaXMuYXBwc09yZGVyLmluZGV4T2YoYi5pZCkpO1xyXG5cclxuICAgIGlmICghdGhpcy5nZXRZb3VyVGVhbVZpc2libGUpIHtcclxuICAgICAgcmV0dXJuIGFwcHNMaXN0O1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGlmIHRoZXJlIGlzIG5vIHRlYW0gdGhlbiBzaG93IG9ubHkgXCJHZXQgWW91ciBUZWFtXCIgYnV0dG9uXHJcbiAgICByZXR1cm4gYXBwc0xpc3QuZmlsdGVyKCh7IGlkIH0pID0+IFxyXG4gICAgICBpZCAhPT0gTWVudUxpc3RUeXBlSWQuUE9SVEFMX1RFQU1fTUFOQUdFTUVOVF9CVE4gJiYgXHJcbiAgICAgIGlkICE9PSBNZW51TGlzdFR5cGVJZC5QT1JUQUxfUFJPUEVSVFlfTUFOQUdFUl9CVE5cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXQgZm9vdGVyTGlzdCgpOiBNZW51TGlzdFR5cGVbXSB7XHJcbiAgICBjb25zdCBmb290ZXJMaXN0ID0gdGhpcy5fbWVudUZvb3Rlckxpc3QuZmlsdGVyKGl0ZW0gPT4gdGhpcy5faXNTdWJzY3JpYmVkKGl0ZW0pICYmICF0aGlzLl9pc0hpZGRlbihpdGVtKSk7XHJcbiAgICAvLyBpZiB0ZWFtIGlzIGFzc2lnbmVkIHRoZW4gcmVtb3ZlIFwiR2V0IFlvdXIgVGVhbVwiIGJ1dHRvblxyXG4gICAgaWYgKCF0aGlzLmdldFlvdXJUZWFtVmlzaWJsZSkge1xyXG4gICAgICByZXR1cm4gZm9vdGVyTGlzdC5maWx0ZXIoKHsgaWQgfSkgPT4gaWQgIT09IE1lbnVMaXN0VHlwZUlkLlBPUlRBTF9HRVRfWU9VUl9URUFNX0JUTik7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZvb3Rlckxpc3Q7XHJcbiAgfVxyXG5cclxuICAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICogY2hlY2sgaWYgYXBwIGlzIHN1YnNjcmliZWRcclxuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcbiAgX2lzU3Vic2NyaWJlZChpdGVtOk1lbnVMaXN0VHlwZSk6Ym9vbGVhbiB7XHJcblxyXG4gICAgaWYgKGl0ZW0uY2hlY2tTdWJzY3JpcHRpb24pIHtcclxuICAgICAgY29uc3Qga2V5ID0gYCR7aXRlbS5hY3Rpb259U3Vic2NyaWJlZGA7XHJcbiAgICAgIHJldHVybiAhISgodGhpcyBhcyB1bmtub3duIGFzIEJpbXBsdXNNYWluTWVudUNvbXBvbmVudEF0dHJpYnV0ZSApW2tleV0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG4gIC8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgKiBjaGVjayBpZiBhcHAgaXMgY2xpY2thYmxlXHJcbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG4gIF9pc0NsaWNrYWJsZShpdGVtOk1lbnVMaXN0VHlwZSk6Ym9vbGVhbiB7XHJcblxyXG4gICAgaWYgKGl0ZW0uY2xpY2tQb2xpY3kgPT09IFwibm9Qcm9qZWN0Tm9TdWJzY3JpcHRpb25cIikge1xyXG4gICAgICByZXR1cm4gdGhpcy5wcm9qZWN0TmFtZSAhPT0gXCJcIjtcclxuICAgIH1cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAqIGNoZWNrIGlmIGFwcCBpcyBzdWJzY3JpYmVkL3Zpc2libGVcclxuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcbiAgX2lzSGlkZGVuKGl0ZW06TWVudUxpc3RUeXBlKTpib29sZWFuIHtcclxuXHJcbiAgICBpZiAoaXRlbSkge1xyXG4gICAgICBjb25zdCBrZXkgPSBgJHtpdGVtLmFjdGlvbiA/IGl0ZW0uYWN0aW9uIDogaXRlbS5pZH1WaXNpYmxlYDtcclxuICAgICAgcmV0dXJuICEoKHRoaXMgYXMgdW5rbm93biBhcyBCaW1wbHVzTWFpbk1lbnVDb21wb25lbnRBdHRyaWJ1dGUgKVtrZXldKTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgKiBjaGVjayBpZiBhcHAgaXMgZGlzYWJsZWRcclxuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcbiAgX2lzRGlzYWJsZWQoaXRlbTpNZW51TGlzdFR5cGUpIHtcclxuICAgIGNvbnN0IGtleSA9IGAke2l0ZW0uYWN0aW9ufURpc2FibGVkYDtcclxuICAgIHJldHVybiAhISgodGhpcyBhcyB1bmtub3duIGFzIEJpbXBsdXNNYWluTWVudUNvbXBvbmVudEF0dHJpYnV0ZSApW2tleV0pO1xyXG4gIH1cclxuXHJcbiAgX2dldENvbnRleHREYXRhKGl0ZW06IE1lbnVMaXN0VHlwZSwgYWN0aXZlOiBib29sZWFuLCBkaXNhYmxlZDogYm9vbGVhbiwgY2xpY2thYmxlOiBib29sZWFuLCBzZWxlY3RlZDogYm9vbGVhbikge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgaXRlbTogaXRlbSxcclxuICAgICAgYWN0aXZlOiBhY3RpdmUsXHJcbiAgICAgIGRpc2FibGVkOiBkaXNhYmxlZCxcclxuICAgICAgY2xpY2thYmxlOiBjbGlja2FibGUsXHJcbiAgICAgIHNlbGVjdGVkOiBzZWxlY3RlZCxcclxuICAgICAgc2hvd0luZm9JY29uOiB0aGlzLmFwcHNXaXRoSW5mby5pbmNsdWRlcyhpdGVtLmlkKVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIF9vcGVuUHJqQnRuOk1lbnVMaXN0VHlwZSA9IHsgYWN0aW9uOlwib3BlblByb2plY3RcIiwgaWQ6XCJwb3J0YWxTZWxlY3RQcm9qZWN0QnRuXCIsdHlwZTpcIlwiLCBjbGFzczogXCJiaW0tbW0taWNvbi1mb2xkZXJcIiwgdGV4dElkOiBcIl9Qb3J0YWxfTWVudV9PcGVuX1Byb2plY3RcIiwgdGV4dElkRGlzYWJsZWQ6IFwiX1BvcnRhbF9NZW51X09wZW5fUHJvamVjdFwiLGRpc2FibGVkVGl0bGU6JycsY2hlY2tTdWJzY3JpcHRpb246IHRydWUsIGRldk9yU3RhZ2VPbmx5IDogZmFsc2UsY2xpY2tQb2xpY3k6IFwiXCJ9O1xyXG5cclxuICBjb250ZXh0RGF0YSA9IHtpdGVtOlwiaGFoYVwiLGFjdGl2ZTp0cnVlLGRpc2FibGVkOnRydWUsY2xpY2thYmxlOnRydWUsc2VsZWN0ZWQ6dHJ1ZX07XHJcblxyXG5cclxuICBhcHBzTGlzdDogTWVudUxpc3RUeXBlW10gPSBbXHJcbiAgICB7IGFjdGlvbjpcInByb2plY3RtZW1iZXJzXCIsIGlkOiBNZW51TGlzdFR5cGVJZC5QT1JUQUxfQklNX1VTRVJTLCB0eXBlOlwiXCIsIGNsYXNzOiBcImJpbS1tbS1pY29uLXVzZXJzXCIsIHRleHRJZDogXCJfcHJvamVjdFN0YXRpc3RpY3NNZW1iZXJzXCIsIHRleHRJZERpc2FibGVkOiBcIl9wcm9qZWN0U3RhdGlzdGljc01lbWJlcnNcIiwgZGlzYWJsZWRUaXRsZTpcIl9JbnN1ZmZpY2llbnQgcmlnaHRzIHRpdGxlXCIsY2hlY2tTdWJzY3JpcHRpb246IGZhbHNlLGRldk9yU3RhZ2VPbmx5IDogZmFsc2UsY2xpY2tQb2xpY3k6IFwiXCJ9LFxyXG4gICAgeyBhY3Rpb246XCJtb2RlbHNcIiwgaWQ6IE1lbnVMaXN0VHlwZUlkLlBPUlRBTF9CSU1fTU9ERUxTLCB0eXBlOlwiXCIsY2xhc3M6IFwiYmltLW1tLWljb24tbW9kZWxzXCIsIHRleHRJZDogXCJfRGl2aXNpb25zXCIsIHRleHRJZERpc2FibGVkOiBcIl9EaXZpc2lvbnNcIixkaXNhYmxlZFRpdGxlOicnLGNoZWNrU3Vic2NyaXB0aW9uOiBmYWxzZSxkZXZPclN0YWdlT25seSA6IGZhbHNlLGNsaWNrUG9saWN5OiBcIlwifSxcclxuICAgIHsgYWN0aW9uOlwiZG9jdW1lbnRzXCIsIGlkOiBNZW51TGlzdFR5cGVJZC5QT1JUQUxfQklNX0RPQ1VNRU5UUywgdHlwZTpcIlwiLGNsYXNzOiBcImJpbS1tbS1pY29uLWRvY3VtZW50c1wiLCB0ZXh0SWQ6IFwiX0ZpbGVzXCIsIHRleHRJZERpc2FibGVkOiBcIl9GaWxlc1wiLGRpc2FibGVkVGl0bGU6JycsY2hlY2tTdWJzY3JpcHRpb246IGZhbHNlLGRldk9yU3RhZ2VPbmx5IDogZmFsc2UsY2xpY2tQb2xpY3k6IFwiXCJ9LFxyXG4gICAgeyBhY3Rpb246XCJwcm9qZWN0c2V0dGluZ3NcIiwgaWQ6IE1lbnVMaXN0VHlwZUlkLlBPUlRBTF9CSU1fUFJPSkVDVF9TRVRUSU5HUywgdHlwZTpcIlwiLGNsYXNzOiBcImJpbS1tbS1pY29uLXByb2plY3Qtc2V0dGluZ3NcIiwgdGV4dElkOiBcIl9TZXR0aW5nc1wiLCB0ZXh0SWREaXNhYmxlZDogXCJfU2V0dGluZ3NcIixkaXNhYmxlZFRpdGxlOicnLGNoZWNrU3Vic2NyaXB0aW9uOiBmYWxzZSxkZXZPclN0YWdlT25seSA6IGZhbHNlLGNsaWNrUG9saWN5OiBcIlwifSxcclxuICAgIHsgYWN0aW9uOlwicHJvY2Vzc2VzXCIsIGlkOiBNZW51TGlzdFR5cGVJZC5QT1JUQUxfQklNX1BST0NFU1NFUywgdHlwZTpcIlwiLGNsYXNzOiBcImJpbS1tbS1pY29uLXByb2Nlc3Nlc1wiLCB0ZXh0SWQ6IFwiX0FwcHJvdmFsc1wiLCB0ZXh0SWREaXNhYmxlZDogXCJfQXBwcm92YWxzXCIsZGlzYWJsZWRUaXRsZTonJyxjaGVja1N1YnNjcmlwdGlvbjogZmFsc2UsZGV2T3JTdGFnZU9ubHkgOiBmYWxzZSxjbGlja1BvbGljeTogXCJcIn0sXHJcbiAgICB7IGFjdGlvbjpcIlwiLGlkOiBNZW51TGlzdFR5cGVJZC5ESVZJREVSX1BST0pFQ1RfTUFOQUdFTUVOVCwgdHlwZTpcImRpdmlkZXJcIiwgY2xhc3M6IFwiYmltLW1tLWFwcC1pdGVtLWRpdmlkZXJcIiwgdGV4dElkOiBcIlwiLHRleHRJZERpc2FibGVkOlwiXCIsZGlzYWJsZWRUaXRsZTonJyxjaGVja1N1YnNjcmlwdGlvbjogZmFsc2UsZGV2T3JTdGFnZU9ubHkgOiBmYWxzZSxjbGlja1BvbGljeTogXCJcIn0sXHJcblxyXG4gICAgeyBhY3Rpb246XCJiaW1leHBsb3JlclwiLCBpZDogTWVudUxpc3RUeXBlSWQuUE9SVEFMX0JJTV9WSUVXRVJfQlROLCB0eXBlOlwiXCIsY2xhc3M6IFwiYmltLW1tLWljb24tYmltLWV4cGxvcmVyXCIsIHRleHRJZDogXCJfUG9ydGFsX01lbnVfQklNX0V4cGxvcmVyXCIsIHRleHRJZERpc2FibGVkOiBcIl9Qb3J0YWxfTWVudV9CSU1fRXhwbG9yZXJcIiwgZGlzYWJsZWRUaXRsZTonJyxjaGVja1N1YnNjcmlwdGlvbjogZmFsc2UsZGV2T3JTdGFnZU9ubHkgOiBmYWxzZSxjbGlja1BvbGljeTogXCJub1Byb2plY3ROb1N1YnNjcmlwdGlvblwifSxcclxuICAgIHsgYWN0aW9uOlwiY2xvdWR2aWV3ZXJcIiwgaWQ6IE1lbnVMaXN0VHlwZUlkLlBPUlRBTF9DTE9VRF9WSUVXRVJfQlROLCB0eXBlOlwiXCIsY2xhc3M6IFwiYmltLW1tLWljb24tY2xvdWQtdmlld2VyXCIsIHRleHRJZDogXCJfTW9kZWxfVmlld2VyXCIsIHRleHRJZERpc2FibGVkOiBcIl9Nb2RlbF9WaWV3ZXJcIiwgZGlzYWJsZWRUaXRsZTonJyxjaGVja1N1YnNjcmlwdGlvbjogZmFsc2UsZGV2T3JTdGFnZU9ubHkgOiBmYWxzZSxjbGlja1BvbGljeTogXCJub1Byb2plY3ROb1N1YnNjcmlwdGlvblwifSxcclxuICAgIHsgYWN0aW9uOlwiY29ubmV4aXNcIiwgaWQ6IE1lbnVMaXN0VHlwZUlkLlBPUlRBTF9DT05ORVhJU19CVE4sIHR5cGU6XCJcIixjbGFzczogXCJiaW0tbW0taWNvbi1jb25uZXhpc1wiLCB0ZXh0SWQ6IFwiX0Nvbm5leGlzXCIsIHRleHRJZERpc2FibGVkOiBcIl9Db25uZXhpc1wiLCBkaXNhYmxlZFRpdGxlOicnLGNoZWNrU3Vic2NyaXB0aW9uOiBmYWxzZSwgZGV2T3JTdGFnZU9ubHkgOiBmYWxzZSwgY2xpY2tQb2xpY3k6IFwibm9Qcm9qZWN0Tm9TdWJzY3JpcHRpb25cIn0sXHJcbiAgICB7IGFjdGlvbjpcImF1dG9jb252ZXJ0ZXJcIiwgaWQ6IE1lbnVMaXN0VHlwZUlkLlBPUlRBTF9CSU1fQVVUT0NPTlZFUlRFUl9CVE4sIHR5cGU6XCJcIixjbGFzczogXCJiaW0tbW0taWNvbi1hdXRvY29udmVydGVyXCIsIHRleHRJZDogXCJfQXV0b2NvbnZlcnRlclwiLCB0ZXh0SWREaXNhYmxlZDogXCJfQXV0b2NvbnZlcnRlclwiLCBkaXNhYmxlZFRpdGxlOicnLGNoZWNrU3Vic2NyaXB0aW9uOiB0cnVlLCBkZXZPclN0YWdlT25seSA6IGZhbHNlLCBjbGlja1BvbGljeTogXCJub1Byb2plY3ROb1N1YnNjcmlwdGlvblwifSxcclxuXHJcbiAgICB7IGFjdGlvbjpcIlwiLGlkOiBNZW51TGlzdFR5cGVJZC5ESVZJREVSQVBQUywgdHlwZTpcImRpdmlkZXJcIiwgY2xhc3M6IFwiYmltLW1tLWFwcC1pdGVtLWRpdmlkZXJcIiwgdGV4dElkOiBcIlwiLHRleHRJZERpc2FibGVkOlwiXCIsZGlzYWJsZWRUaXRsZTonJyxjaGVja1N1YnNjcmlwdGlvbjogZmFsc2UsZGV2T3JTdGFnZU9ubHkgOiBmYWxzZSxjbGlja1BvbGljeTogXCJcIn0sXHJcblxyXG4gICAgeyBhY3Rpb246XCJ0ZWFtbWVtYmVyc1wiLCBpZDogTWVudUxpc3RUeXBlSWQuUE9SVEFMX1RFQU1fTUFOQUdFTUVOVF9CVE4sIHR5cGU6XCJcIiwgY2xhc3M6IFwiYmltLW1tLWljb24tdGVhbS1tZW1iZXJzXCIsIHRleHRJZDogXCJfUG9ydGFsX01lbnVfVGVhbV9NZW1iZXJzXCIsIHRleHRJZERpc2FibGVkOiBcIl9Qb3J0YWxfTWVudV9UZWFtX01lbWJlcnNcIiwgZGlzYWJsZWRUaXRsZTonJyxjaGVja1N1YnNjcmlwdGlvbjogdHJ1ZSwgZGV2T3JTdGFnZU9ubHkgOiBmYWxzZSxjbGlja1BvbGljeTogXCJcIn0sXHJcbiAgICB7IGFjdGlvbjpcInByb3BlcnR5bWFuYWdlclwiLCBpZDogTWVudUxpc3RUeXBlSWQuUE9SVEFMX1BST1BFUlRZX01BTkFHRVJfQlROLCB0eXBlOlwiXCIsY2xhc3M6IFwiYmltLW1tLWljb24tcHJvcGVydHktbWFuYWdlclwiLCB0ZXh0SWQ6IFwiX1BvcnRhbF9NZW51X1Byb3BlcnRpZXNcIiwgdGV4dElkRGlzYWJsZWQ6IFwiX1BvcnRhbF9NZW51X1Byb3BlcnRpZXNcIiwgZGlzYWJsZWRUaXRsZTonJyxjaGVja1N1YnNjcmlwdGlvbjogdHJ1ZSwgZGV2T3JTdGFnZU9ubHkgOiBmYWxzZSxjbGlja1BvbGljeTogXCJcIn0sXHJcbiAgXTtcclxuXHJcbiAgX21lbnVGb290ZXJMaXN0OiBNZW51TGlzdFR5cGVbXSA9IFtcclxuICAgIHsgYWN0aW9uOlwiYWRkaW5zXCIsIGlkOiBNZW51TGlzdFR5cGVJZC5QT1JUQUxfQUREX0lOU19CVE4sIHR5cGU6XCJcIiwgY2xhc3M6IFwiYmltLW1tLWljb24tYWRkLWluc1wiLCB0ZXh0SWQ6IFwiX0FkZEluc1wiLCB0ZXh0SWREaXNhYmxlZDogXCJfQWRkSW5zXCIsIGRpc2FibGVkVGl0bGU6JycsIGNoZWNrU3Vic2NyaXB0aW9uOiBmYWxzZSwgZGV2T3JTdGFnZU9ubHkgOiBmYWxzZSwgY2xpY2tQb2xpY3k6IFwiXCJ9LFxyXG4gICAgeyBcclxuICAgICAgYWN0aW9uOlwiZ2V0WW91clRlYW1cIiwgXHJcbiAgICAgIGlkOiBNZW51TGlzdFR5cGVJZC5QT1JUQUxfR0VUX1lPVVJfVEVBTV9CVE4sXHJcbiAgICAgIGNsYXNzOiBcImJpbS1tbS1pY29uLXRlYW0tbWVtYmVyc1wiLCBcclxuICAgICAgdGV4dElkOiBcIl9HZXRfWW91cl9UZWFtXCIsIFxyXG4gICAgICB0ZXh0SWREaXNhYmxlZDogXCJfR2V0X1lvdXJfVGVhbVwiLFxyXG4gICAgfSBhcyBNZW51TGlzdFR5cGUsXHJcbiAgICB7IGFjdGlvbjpcInNob3BcIiwgaWQ6IE1lbnVMaXN0VHlwZUlkLlBPUlRBTF9TSE9QX0JUTiwgdHlwZTpcIlwiLGNsYXNzOiBcImJpbS1tbS1pY29uLXNob3BcIiwgdGV4dElkOiBcIl9TaG9wXCIsIHRleHRJZERpc2FibGVkOiBcIl9TaG9wXCIsZGlzYWJsZWRUaXRsZTonJyxjaGVja1N1YnNjcmlwdGlvbjogZmFsc2UsZGV2T3JTdGFnZU9ubHkgOiBmYWxzZSxjbGlja1BvbGljeTogXCJcIn1cclxuICBdO1xyXG5cclxuICBfb3ZlcmxheUNsaWNrZWQoKXtcclxuICAgIGZpcmVFdmVudCh0aGlzLCBcImJpbXBsdXNNYWluTWVudU92ZXJsYXlDbGlja2VkXCIpO1xyXG4gIH1cclxuXHJcbiAgX21haW5NZW51SXRlbUNsaWNrZWQoaXRlbTogTWVudUxpc3RUeXBlLHR5cGU6c3RyaW5nLGV2ZW50OiBFdmVudCB8IHVuZGVmaW5lZCApe1xyXG4gICAgaWYgKGV2ZW50KSB7XHJcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmKHR5cGUgIT0gXCJpbmZvXCIpIHtcclxuICAgICAgaWYgKHRoaXMuX2lzRGlzYWJsZWQoaXRlbSkpe1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGFjdGlvbiA9IGl0ZW0uYWN0aW9uO1xyXG4gICAgZmlyZUV2ZW50KHRoaXMsXCJiaW1wbHVzTWFpbk1lbnVDbGlja2VkXCIsIHthY3Rpb24sdHlwZTp0eXBlIH0gKTtcclxuICB9XHJcbn1cclxuIiwiPG5nLXRlbXBsYXRlICNhcHBJdGVtQ29udGVudCBsZXQtY29udGV4dERhdGE+XHJcbiAgQGlmIChjb250ZXh0RGF0YS5pdGVtLnR5cGUgPT09ICdkaXZpZGVyJykge1xyXG4gICAgPGRpdiBjbGFzcz1cImJpbS1tbS1hcHAtaXRlbVwiIFtjbGFzc109XCJjb250ZXh0RGF0YS5pdGVtLmNsYXNzXCIgW2lkXT1cImNvbnRleHREYXRhLml0ZW0uaWRcIj48L2Rpdj5cclxuICB9IEBlbHNlIHtcclxuICAgIDxkaXYgY2xhc3M9XCJiaW0tbW0tYXBwLWl0ZW1cIiBbaWRdPVwiY29udGV4dERhdGEuaXRlbS5pZFwiXHJcbiAgICAgIFtuZ0NsYXNzXT1cImlzVG91Y2g/Jyc6J2hvdmVyLXNob3ctaW5mbyAnKyhjb250ZXh0RGF0YS5hY3RpdmU/J2FjdGl2ZSAnOicgJykgKyhjb250ZXh0RGF0YS5kaXNhYmxlZD8nZGlzYWJsZWQgJzonICcpKyhjb250ZXh0RGF0YS5jbGlja2FibGU/JyAnOidub3QtY2xpY2thYmxlICcpKyhjb250ZXh0RGF0YS5zZWxlY3RlZD8nc2VsZWN0ZWQgJzonICcpXCJcclxuICAgICAgW3RpdGxlXSAgPVwiKChjb250ZXh0RGF0YS5kaXNhYmxlZCkgPyAgKGNvbnRleHREYXRhLml0ZW0uZGlzYWJsZWRUaXRsZSB8IHRyYW5zbGF0ZSkgOiAnJyApXCJcclxuICAgICAgPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYmltLW1tLWFwcC1pdGVtLWRldGFpbHNcIlxyXG4gICAgICAgICAgIFtuZ0NsYXNzXSA9IFwiIGNvbnRleHREYXRhLmNsaWNrYWJsZSA/ICcnIDogJ25vdC1jbGlja2FibGUnIFwiXHJcbiAgICAgICAgICAgKGNsaWNrKT1cIl9tYWluTWVudUl0ZW1DbGlja2VkKGNvbnRleHREYXRhLml0ZW0sJ25vcm1hbCcsJGV2ZW50KVwiXHJcbiAgICAgICAgICAgKGtleXByZXNzKT1cIl9tYWluTWVudUl0ZW1DbGlja2VkKGNvbnRleHREYXRhLml0ZW0sJ25vcm1hbCcsJGV2ZW50KVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJpbS1tbS1pY29uXCJcclxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJjb250ZXh0RGF0YS5pdGVtLmNsYXNzICsgKGNvbnRleHREYXRhLmFjdGl2ZT8nIGFjdGl2ZSc6JycpICsgKGNvbnRleHREYXRhLmRpc2FibGVkPycgZGlzYWJsZWQgJzonJylcIj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPHNwYW4+e3soY29udGV4dERhdGEuaXNEaXNhYmxlZCAmJiAoY29udGV4dERhdGEuaXRlbS50ZXh0SWREaXNhYmxlZCAhPT1cIlwiKSA/IGNvbnRleHREYXRhLml0ZW0udGV4dElkRGlzYWJsZWQgOiBjb250ZXh0RGF0YS5pdGVtLnRleHRJZCkgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIEBpZihjb250ZXh0RGF0YS5zaG93SW5mb0ljb24pe1xyXG4gICAgICA8ZGl2IGNsYXNzPVwiYmltLW1tLWFwcC1pdGVtLWluZm8gYmltLW1tLWljb24gYmltLW1tLWljb24taW5mb1wiXHJcbiAgICAgICAgICAgKGNsaWNrKT1cIl9tYWluTWVudUl0ZW1DbGlja2VkKGNvbnRleHREYXRhLml0ZW0sICdpbmZvJywkZXZlbnQpXCJcclxuICAgICAgICAgICAoa2V5cHJlc3MpPVwiX21haW5NZW51SXRlbUNsaWNrZWQoY29udGV4dERhdGEuaXRlbSwgJ2luZm8nLCRldmVudClcIj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIH1cclxuICA8L2Rpdj5cclxuICB9XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG5cclxuXHJcbjxkaXYgXHJcbiAgY2xhc3M9XCJiaW0tbW0td3JhcHBlclwiIFxyXG4gIFtuZ0NsYXNzXT1cInNob3dPdmVybGF5ID8gJ2JpbS1tbS1vdmVybGF5JyA6ICcnXCIgXHJcbiAgKGNsaWNrKT1cIl9vdmVybGF5Q2xpY2tlZCgpXCJcclxuICAoa2V5cHJlc3MpPVwiX292ZXJsYXlDbGlja2VkKClcIlxyXG4gID5cclxuICAgIDxkaXYgY2xhc3M9IFwiYmltLW1tLWNvbnRhaW5lclwiPlxyXG4gICAgICBAaWYoIV9pc0hpZGRlbihfb3BlblByakJ0bikpe1xyXG4gICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImFwcEl0ZW1Db250ZW50OyBjb250ZXh0OiB7ICRpbXBsaWNpdDogX2dldENvbnRleHREYXRhKF9vcGVuUHJqQnRuLHByb2plY3RBY3RpdmVJdGVtID09PSAncHJvamVjdGxpc3QnLF9pc0Rpc2FibGVkKF9vcGVuUHJqQnRuKSx0cnVlLHByb2plY3RBY3RpdmVJdGVtID09PSAncHJvamVjdGxpc3QnKSB9XCJcclxuICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIEBpZihiaW1wbHVzUHJvamVjdE1lbnVWaXNpYmxlKXtcclxuICAgICAgICA8bGliLWJpbXBsdXMtcHJvamVjdC1tZW51XHJcbiAgICAgICAgICAgIHByb2plY3ROYW1lID0ge3twcm9qZWN0TmFtZX19XHJcbiAgICAgICAgICAgIHByb2plY3RJbWFnZVVybCA9IHt7cHJvamVjdEltYWdlVXJsfX1cclxuICAgICAgICAgICAgcHJvamVjdEV4cGxvcmVyVXJsID0ge3twcm9qZWN0RXhwbG9yZXJVcmx9fVxyXG4gICAgICAgICAgICBwcm9qZWN0QWN0aXZlSXRlbSA9IHt7cHJvamVjdEFjdGl2ZUl0ZW19fVxyXG4gICAgICAgICAgICBwcm9qZWN0bWVtYmVyc0Rpc2FibGVkID0ge3twcm9qZWN0bWVtYmVyc0Rpc2FibGVkfX1cclxuICAgICAgICAgICAgbW9kZWxzRGlzYWJsZWQgPSB7e21vZGVsc0Rpc2FibGVkfX1cclxuICAgICAgICAgICAgZG9jdW1lbnRzRGlzYWJsZWQgPSB7e2RvY3VtZW50c0Rpc2FibGVkfX1cclxuICAgICAgICAgICAgcHJvamVjdHNldHRpbmdzRGlzYWJsZWQgPSB7e3Byb2plY3RzZXR0aW5nc0Rpc2FibGVkfX1cclxuICAgICAgICAgICAgcHJvY2Vzc2VzRGlzYWJsZWQgPSB7e3Byb2Nlc3Nlc0Rpc2FibGVkfX1cclxuICAgICAgICAgICAgcHJvamVjdG1lbWJlcnNWaXNpYmxlID0ge3twcm9qZWN0bWVtYmVyc1Zpc2libGV9fVxyXG4gICAgICAgICAgICBtb2RlbHNWaXNpYmxlID0ge3ttb2RlbHNWaXNpYmxlfX1cclxuICAgICAgICAgICAgZG9jdW1lbnRzVmlzaWJsZSA9IHt7ZG9jdW1lbnRzVmlzaWJsZX19XHJcbiAgICAgICAgICAgIHByb2plY3RzZXR0aW5nc1Zpc2libGUgPSB7e3Byb2plY3RzZXR0aW5nc1Zpc2libGV9fVxyXG4gICAgICAgICAgICBwcm9jZXNzZXNWaXNpYmxlID0ge3twcm9jZXNzZXNWaXNpYmxlfX1cclxuICAgICAgICAgICAgaXNDb2xsYXBzZWQgPSB7e2lzQ29sbGFwc2VkfX1cclxuICAgICAgICAgICAgaXNNaW5pTW9kZSA9IHt7aXNUb3VjaH19XHJcbiAgICAgICAgICAgIGlzVG91Y2ggPSB7e2lzVG91Y2h9fVxyXG4gICAgICAgICAgICBoaWRlTWVudUljb25zID0ge3toaWRlUHJvamVjdE1lbnVJY29uc319XHJcbiAgICAgICAgICAgIHNob3dIb3Jpem9udGFsTWVudUljb25zID0ge3tzaG93SG9yaXpvbnRhbE1lbnVJY29uc319XHJcbiAgICAgICAgICAgIFttZW51SXRlbXNPcmRlcl09XCJtZW51SXRlbXNPcmRlclwiXHJcbiAgICAgICAgPjwvbGliLWJpbXBsdXMtcHJvamVjdC1tZW51PlxyXG4gICAgICB9XHJcbiAgICAgICAgPGRpdiBbbmdDbGFzc109XCJhcHBzLmxlbmd0aCB8fCBmb290ZXJMaXN0Lmxlbmd0aCA/ICdiaW0tbW0tYXBwcy1jb250YWluZXInIDogJydcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJiaW0tbW0tYXBwcy1saXN0XCI+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGFwcEl0ZW0gb2YgYXBwc1wiPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiYXBwSXRlbUNvbnRlbnQ7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBfZ2V0Q29udGV4dERhdGEoYXBwSXRlbSwhX2lzU3Vic2NyaWJlZChhcHBJdGVtKSxfaXNEaXNhYmxlZChhcHBJdGVtKSxfaXNDbGlja2FibGUoYXBwSXRlbSksbWVudUFjdGl2ZUl0ZW0gPT09IGFwcEl0ZW0uYWN0aW9uKX1cIlxyXG4gICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJiaW0tbW0tZm9vdGVyLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBmb290ZXJJdGVtIG9mIGZvb3Rlckxpc3RcIj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImFwcEl0ZW1Db250ZW50OyBjb250ZXh0OiB7ICRpbXBsaWNpdDogX2dldENvbnRleHREYXRhKGZvb3Rlckl0ZW0sZm9vdGVyQWN0aXZlSXRlbSA9PT0gZm9vdGVySXRlbS5hY3Rpb24sX2lzRGlzYWJsZWQoZm9vdGVySXRlbSksdHJ1ZSxmYWxzZSl9XCJcclxuICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
379
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmltcGx1cy1tYWluLW1lbnUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWJpbXBsdXMtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvYmltcGx1cy1tYWluLW1lbnUvYmltcGx1cy1tYWluLW1lbnUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWJpbXBsdXMtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvYmltcGx1cy1tYWluLW1lbnUvYmltcGx1cy1tYWluLW1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQTRCLE1BQU0sZUFBZSxDQUFDO0FBQ3RJLE9BQU8sRUFBQyxnQkFBZ0IsRUFBRSxlQUFlLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RSxPQUFPLEVBQUMsK0JBQStCLEVBQUMsTUFBTSxrRUFBa0UsQ0FBQTtBQUNoSCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxFQUFDLDJCQUEyQixFQUFDLE1BQU0sMERBQTBELENBQUM7Ozs7QUFHckcsTUFBTSxjQUFjLEdBQUc7SUFDckIsMEJBQTBCLEVBQUUseUJBQXlCO0lBQ3JELDJCQUEyQixFQUFFLDBCQUEwQjtJQUN2RCxnQkFBZ0IsRUFBRSxnQkFBZ0I7SUFDbEMsaUJBQWlCLEVBQUUsaUJBQWlCO0lBQ3BDLG9CQUFvQixFQUFFLG9CQUFvQjtJQUMxQywyQkFBMkIsRUFBRSwwQkFBMEI7SUFDdkQsb0JBQW9CLEVBQUUsb0JBQW9CO0lBQzFDLDBCQUEwQixFQUFFLDBCQUEwQjtJQUN0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bEQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDRSxhQUFhO3NCQUFwRCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUNFLCtCQUErQjtzQkFBdEUsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDRSxrQkFBa0I7c0JBQXpELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ0Usa0JBQWtCO3NCQUF6RCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUM3QixZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFFSSxzQkFBc0I7c0JBQS9CLE1BQU07Z0JBQ0csNkJBQTZCO3NCQUF0QyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBWaWV3RW5jYXBzdWxhdGlvbiwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBib29sZWFuQXR0cmlidXRlLCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlLCBUcmFuc2xhdGVNb2R1bGV9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQge0JpbXBsdXNMb2NhbGl6ZWRXaWRnZXRDb21wb25lbnR9IGZyb20gXCIuLy4uL2JpbXBsdXMtbG9jYWxpemVkLXdpZGdldC9iaW1wbHVzLWxvY2FsaXplZC13aWRnZXQuY29tcG9uZW50XCJcclxuaW1wb3J0IHsgZmlyZUV2ZW50IH0gZnJvbSAnLi4vLi4vdXRpbHMvdXRpbHMnO1xyXG5pbXBvcnQge0JpbXBsdXNQcm9qZWN0TWVudUNvbXBvbmVudH0gZnJvbSAnLi8uLi9iaW1wbHVzLXByb2plY3QtbWVudS9iaW1wbHVzLXByb2plY3QtbWVudS5jb21wb25lbnQnO1xyXG5pbXBvcnQge01lbnVMaXN0VHlwZX0gZnJvbSAnLi4vLi4vdHlwZXMvdHlwZXMnO1xyXG5cclxuY29uc3QgTWVudUxpc3RUeXBlSWQgPSB7XHJcbiAgUE9SVEFMX1RFQU1fTUFOQUdFTUVOVF9CVE46ICdwb3J0YWxUZWFtTWFuYWdlbWVudEJ0bicsXHJcbiAgUE9SVEFMX1BST1BFUlRZX01BTkFHRVJfQlROOiAncG9ydGFsUHJvcGVydHlNYW5hZ2VyQnRuJyxcclxuICBQT1JUQUxfQklNX1VTRVJTOiAncG9ydGFsQmltVXNlcnMnLFxyXG4gIFBPUlRBTF9CSU1fTU9ERUxTOiAncG9ydGFsQmltTW9kZWxzJyxcclxuICBQT1JUQUxfQklNX0RPQ1VNRU5UUzogJ3BvcnRhbEJpbURvY3VtZW50cycsXHJcbiAgUE9SVEFMX0JJTV9QUk9KRUNUX1NFVFRJTkdTOiAncG9ydGFsQmltUHJvamVjdFNldHRpbmdzJyxcclxuICBQT1JUQUxfQklNX1BST0NFU1NFUzogJ3BvcnRhbEJpbVByb2Nlc3NlcycsXHJcbiAgRElWSURFUl9QUk9KRUNUX01BTkFHRU1FTlQ6ICdkaXZpZGVycHJvamVjdG1hbmFnZW1lbnQnLFxyXG4gIFBPUlRBTF9CSU1fVklFV0VSX0JUTjogJ3BvcnRhbEJpbVZpZXdlckJ0bicsXHJcbiAgUE9SVEFMX0NMT1VEX1ZJRVdFUl9CVE46ICdwb3J0YWxDbG91ZFZpZXdlckJ0bicsXHJcbiAgUE9SVEFMX0NPTk5FWElTX0JUTjogJ3BvcnRhbENvbm5leGlzQnRuJyxcclxuICBQT1JUQUxfQklNX0FVVE9DT05WRVJURVJfQlROOiAncG9ydGFsQmltQXV0b2NvbnZlcnRlckJ0bicsXHJcbiAgRElWSURFUkFQUFM6ICdkaXZpZGVyYXBwcycsXHJcbiAgUE9SVEFMX0FERF9JTlNfQlROOiAncG9ydGFsQWRkSW5zQnRuJyxcclxuICBQT1JUQUxfU0hPUF9CVE46ICdwb3J0YWxTaG9wQnRuJyxcclxuICBQT1JUQUxfR0VUX1lPVVJfVEVBTV9CVE46ICdwb3J0YWxHZXRZb3VyVGVhbUJ0bidcclxufSBhcyBjb25zdDtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQmltcGx1c01haW5NZW51Q29tcG9uZW50QXR0cmlidXRlICB7XHJcbiAgW2tleTogc3RyaW5nXTogdW5rbm93bjsgLy8gQWRkIGluZGV4IHNpZ25hdHVyZSBhbGxvd2luZyBzdHJpbmcgaW5kZXhpbmdcclxuICAgLy9PdGhlciBwcm9wZXJ0aWVzIGFuZCBtZXRob2RzLi4uXHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWJpbXBsdXMtbWFpbi1tZW51JyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFRyYW5zbGF0ZU1vZHVsZSxCaW1wbHVzUHJvamVjdE1lbnVDb21wb25lbnRdLFxyXG4gIHByb3ZpZGVyczogW1RyYW5zbGF0ZVNlcnZpY2VdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9iaW1wbHVzLW1haW4tbWVudS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2JpbXBsdXMtbWFpbi1tZW51LmNvbXBvbmVudC5sZXNzJyxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5TaGFkb3dEb21cclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBCaW1wbHVzTWFpbk1lbnVDb21wb25lbnQgZXh0ZW5kcyBCaW1wbHVzTG9jYWxpemVkV2lkZ2V0Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcclxuICBjb25zdHJ1Y3Rvcih0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlICl7XHJcbiAgICBzdXBlcih0cmFuc2xhdGVTZXJ2aWNlKVxyXG4gIH1cclxuXHJcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGlzRW1iZWRkZWQgOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGlzVG91Y2ggOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGlzSXBhZEFwcCA6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaXNEZXYgOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGlzU3RhZ2UgOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGhpZGVQcm9qZWN0TWVudUljb25zIDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzaG93SG9yaXpvbnRhbE1lbnVJY29ucyA6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBwcm9qZWN0TmFtZSA6IHN0cmluZyA9IFwiXCI7XHJcbiAgQElucHV0KCkgcHJvamVjdEltYWdlVXJsIDogc3RyaW5nID0gXCJcIjtcclxuICBASW5wdXQoKSBwcm9qZWN0RXhwbG9yZXJVcmwgOiBzdHJpbmcgPSBcIlwiO1xyXG4gIEBJbnB1dCgpIHByb2plY3RBY3RpdmVJdGVtIDogc3RyaW5nID0gXCJcIjtcclxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgcHJvamVjdG1lbWJlcnNEaXNhYmxlZCA6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgbW9kZWxzRGlzYWJsZWQgOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGRvY3VtZW50c0Rpc2FibGVkIDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBwcm9qZWN0c2V0dGluZ3NEaXNhYmxlZCA6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgcHJvY2Vzc2VzRGlzYWJsZWQgOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgZm9vdGVyQWN0aXZlSXRlbSA6IHN0cmluZyA9IFwiXCI7XHJcbiAgQElucHV0KCkgbWVudUFjdGl2ZUl0ZW0gOiBzdHJpbmcgPSBcIlwiO1xyXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBpc0NvbGxhcHNlZCA6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc2hvd092ZXJsYXkgOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHRlYW1tZW1iZXJzU3Vic2NyaWJlZCA6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgcHJvcGVydHltYW5hZ2VyU3Vic2NyaWJlZCA6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgYXV0b2NvbnZlcnRlclN1YnNjcmliZWQgOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGNvbm5leGlzU3Vic2NyaWJlZCA6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgb3BlblByb2plY3REaXNhYmxlZCA6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgYmltZXhwbG9yZXJEaXNhYmxlZCA6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgYXV0b2NvbnZlcnRlckRpc2FibGVkIDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBjb25uZXhpc0Rpc2FibGVkIDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSB0ZWFtbWVtYmVyc0Rpc2FibGVkIDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBwcm9wZXJ0eW1hbmFnZXJEaXNhYmxlZCA6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc2hvcERpc2FibGVkIDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBhZGRpbnNEaXNhYmxlZCA6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgb3BlblByb2plY3RWaXNpYmxlIDogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGJpbXBsdXNQcm9qZWN0TWVudVZpc2libGUgOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgcHJvamVjdG1lbWJlcnNWaXNpYmxlIDogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIG1vZGVsc1Zpc2libGUgOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgZG9jdW1lbnRzVmlzaWJsZSA6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBwcm9qZWN0c2V0dGluZ3NWaXNpYmxlIDogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHByb2Nlc3Nlc1Zpc2libGUgOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgYmltZXhwbG9yZXJWaXNpYmxlIDogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGF1dG9jb252ZXJ0ZXJWaXNpYmxlIDogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGNvbm5leGlzVmlzaWJsZSA6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSB0ZWFtbWVtYmVyc1Zpc2libGUgOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgcHJvcGVydHltYW5hZ2VyVmlzaWJsZSA6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzaG9wVmlzaWJsZSA6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBhZGRpbnNWaXNpYmxlIDogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGRpdmlkZXJwcm9qZWN0bWFuYWdlbWVudFZpc2libGUgOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgZGl2aWRlcmFwcHNWaXNpYmxlIDogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGdldFlvdXJUZWFtVmlzaWJsZSA6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBhcHBzV2l0aEluZm8gOiBzdHJpbmdbXSA9IFtdO1xyXG4gIEBJbnB1dCgpIGFwcHNPcmRlciA6IHN0cmluZ1tdID0gW107XHJcbiAgQElucHV0KCkgbWVudUl0ZW1zT3JkZXIgOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICBAT3V0cHV0KCkgYmltcGx1c01haW5NZW51Q2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8eyBhY3Rpb246IHN0cmluZywgdHlwZTogc3RyaW5nIH0+KCk7XHJcbiAgQE91dHB1dCgpIGJpbXBsdXNNYWluTWVudU92ZXJsYXlDbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlc1snbG9jYWxpemVkU3RyaW5ncyddKSB7XHJcbiAgICAgIHRoaXMubG9jYWxpemVkU3RyaW5ncyA9IGNoYW5nZXNbJ2xvY2FsaXplZFN0cmluZ3MnXS5jdXJyZW50VmFsdWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgYXBwcygpOiBNZW51TGlzdFR5cGVbXSB7XHJcbiAgICBsZXQgYXBwc0xpc3QgPSB0aGlzLmFwcHNMaXN0LnNvcnQoKGEsIGIpID0+IHRoaXMuYXBwc09yZGVyLmluZGV4T2YoYS5pZCkgLSB0aGlzLmFwcHNPcmRlci5pbmRleE9mKGIuaWQpKTtcclxuXHJcbiAgICAvLyBpZiBjb25uZXhpc1Zpc2libGUgcmVtb3ZlIFBPUlRBTF9DT05ORVhJU19CVE4uXHJcbiAgICBpZiAoIXRoaXMuY29ubmV4aXNWaXNpYmxlKSB7XHJcbiAgICAgIGFwcHNMaXN0ID0gYXBwc0xpc3QuZmlsdGVyKCh7IGlkIH0pID0+IGlkICE9PSBNZW51TGlzdFR5cGVJZC5QT1JUQUxfQ09OTkVYSVNfQlROKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBpZiB0ZWFtbWVtYmVyc0Rpc2FibGVkIHJlbW92ZSBQT1JUQUxfVEVBTV9NQU5BR0VNRU5UX0JUTi5cclxuICAgIGlmICh0aGlzLnRlYW1tZW1iZXJzRGlzYWJsZWQpIHtcclxuICAgICAgYXBwc0xpc3QgPSBhcHBzTGlzdC5maWx0ZXIoKHsgaWQgfSkgPT4gaWQgIT09IE1lbnVMaXN0VHlwZUlkLlBPUlRBTF9URUFNX01BTkFHRU1FTlRfQlROKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBpZiBwcm9wZXJ0eW1hbmFnZXJEaXNhYmxlZCByZW1vdmUgUE9SVEFMX1BST1BFUlRZX01BTkFHRVJfQlROLlxyXG4gICAgaWYgKHRoaXMucHJvcGVydHltYW5hZ2VyRGlzYWJsZWQpIHtcclxuICAgICAgYXBwc0xpc3QgPSBhcHBzTGlzdC5maWx0ZXIoKHsgaWQgfSkgPT4gaWQgIT09IE1lbnVMaXN0VHlwZUlkLlBPUlRBTF9QUk9QRVJUWV9NQU5BR0VSX0JUTik7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gaWYgaXNUb3VjaCByZW1vdmUgcHJvcGVydHkgbWFuYWdlciBidG4uICYgYXBwcm92YWxzIGJ0bi5cclxuICAgIGlmKHRoaXMuaXNUb3VjaCkge1xyXG4gICAgICBhcHBzTGlzdCA9IGFwcHNMaXN0LmZpbHRlcigoeyBpZCB9KSA9PiBcclxuICAgICAgICBpZCAhPT0gTWVudUxpc3RUeXBlSWQuUE9SVEFMX1BST1BFUlRZX01BTkFHRVJfQlROICYmIFxyXG4gICAgICAgIGlkICE9PSBNZW51TGlzdFR5cGVJZC5QT1JUQUxfQklNX1BST0NFU1NFU1xyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGhpcy5nZXRZb3VyVGVhbVZpc2libGUpIHtcclxuICAgICAgcmV0dXJuIGFwcHNMaXN0O1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGlmIHRoZXJlIGlzIG5vIHRlYW0gdGhlbiBzaG93IG9ubHkgXCJHZXQgWW91ciBUZWFtXCIgYnV0dG9uXHJcbiAgICByZXR1cm4gYXBwc0xpc3QuZmlsdGVyKCh7IGlkIH0pID0+IFxyXG4gICAgICBpZCAhPT0gTWVudUxpc3RUeXBlSWQuUE9SVEFMX1RFQU1fTUFOQUdFTUVOVF9CVE4gJiYgXHJcbiAgICAgIGlkICE9PSBNZW51TGlzdFR5cGVJZC5QT1JUQUxfUFJPUEVSVFlfTUFOQUdFUl9CVE5cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXQgZm9vdGVyTGlzdCgpOiBNZW51TGlzdFR5cGVbXSB7XHJcbiAgICBsZXQgZm9vdGVyTGlzdCA9IHRoaXMuX21lbnVGb290ZXJMaXN0LmZpbHRlcihpdGVtID0+IHRoaXMuX2lzU3Vic2NyaWJlZChpdGVtKSAmJiAhdGhpcy5faXNIaWRkZW4oaXRlbSkpO1xyXG5cclxuICAgIC8vIGluIGNhc2UgdGhhdCBcIkdldCBZb3VyIFRlYW1cIiBpcyBub3QgdmlzaWJsZSBhbmQgdGVhbW1lbWJlcnMgYXJlIGRpc2FibGVkIHRoZW4gcmVtb3ZlIGRpdmlkZXIgZmlyc3RcclxuICAgIGlmICh0aGlzLnRlYW1tZW1iZXJzRGlzYWJsZWQpIHtcclxuICAgICAgZm9vdGVyTGlzdCA9IGZvb3Rlckxpc3QuZmlsdGVyKCh7IGlkIH0pID0+IGlkICE9PSBNZW51TGlzdFR5cGVJZC5ESVZJREVSQVBQUyk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gaWYgdGVhbSBpcyBhc3NpZ25lZCB0aGVuIHJlbW92ZSBcIkdldCBZb3VyIFRlYW1cIiBidXR0b25cclxuICAgIGlmICghdGhpcy5nZXRZb3VyVGVhbVZpc2libGUpIHtcclxuICAgICAgcmV0dXJuIGZvb3Rlckxpc3QuZmlsdGVyKCh7IGlkIH0pID0+IGlkICE9PSBNZW51TGlzdFR5cGVJZC5QT1JUQUxfR0VUX1lPVVJfVEVBTV9CVE4pO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHJlbW92ZSBkaXZpZGVyIGlmIHRoZXJlIGlzIG5vIFwiR2V0IFlvdXIgVGVhbVwiIGJ1dHRvblxyXG4gICAgcmV0dXJuIGZvb3Rlckxpc3QuZmlsdGVyKCh7IGlkIH0pID0+IGlkICE9PSBNZW51TGlzdFR5cGVJZC5ESVZJREVSQVBQUyk7XHJcbiAgfVxyXG5cclxuICAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICogY2hlY2sgaWYgYXBwIGlzIHN1YnNjcmliZWRcclxuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcbiAgX2lzU3Vic2NyaWJlZChpdGVtOk1lbnVMaXN0VHlwZSk6Ym9vbGVhbiB7XHJcblxyXG4gICAgaWYgKGl0ZW0uY2hlY2tTdWJzY3JpcHRpb24pIHtcclxuICAgICAgY29uc3Qga2V5ID0gYCR7aXRlbS5hY3Rpb259U3Vic2NyaWJlZGA7XHJcbiAgICAgIHJldHVybiAhISgodGhpcyBhcyB1bmtub3duIGFzIEJpbXBsdXNNYWluTWVudUNvbXBvbmVudEF0dHJpYnV0ZSApW2tleV0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG4gIC8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgKiBjaGVjayBpZiBhcHAgaXMgY2xpY2thYmxlXHJcbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG4gIF9pc0NsaWNrYWJsZShpdGVtOk1lbnVMaXN0VHlwZSk6Ym9vbGVhbiB7XHJcblxyXG4gICAgaWYgKGl0ZW0uY2xpY2tQb2xpY3kgPT09IFwibm9Qcm9qZWN0Tm9TdWJzY3JpcHRpb25cIikge1xyXG4gICAgICByZXR1cm4gdGhpcy5wcm9qZWN0TmFtZSAhPT0gXCJcIjtcclxuICAgIH1cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAqIGNoZWNrIGlmIGFwcCBpcyBzdWJzY3JpYmVkL3Zpc2libGVcclxuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcbiAgX2lzSGlkZGVuKGl0ZW06TWVudUxpc3RUeXBlKTpib29sZWFuIHtcclxuXHJcbiAgICBpZiAoaXRlbSkge1xyXG4gICAgICBjb25zdCBrZXkgPSBgJHtpdGVtLmFjdGlvbiA/IGl0ZW0uYWN0aW9uIDogaXRlbS5pZH1WaXNpYmxlYDtcclxuICAgICAgcmV0dXJuICEoKHRoaXMgYXMgdW5rbm93biBhcyBCaW1wbHVzTWFpbk1lbnVDb21wb25lbnRBdHRyaWJ1dGUgKVtrZXldKTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgKiBjaGVjayBpZiBhcHAgaXMgZGlzYWJsZWRcclxuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcbiAgX2lzRGlzYWJsZWQoaXRlbTpNZW51TGlzdFR5cGUpIHtcclxuICAgIGNvbnN0IGtleSA9IGAke2l0ZW0uYWN0aW9ufURpc2FibGVkYDtcclxuICAgIHJldHVybiAhISgodGhpcyBhcyB1bmtub3duIGFzIEJpbXBsdXNNYWluTWVudUNvbXBvbmVudEF0dHJpYnV0ZSApW2tleV0pO1xyXG4gIH1cclxuXHJcbiAgX2dldENvbnRleHREYXRhKGl0ZW06IE1lbnVMaXN0VHlwZSwgYWN0aXZlOiBib29sZWFuLCBkaXNhYmxlZDogYm9vbGVhbiwgY2xpY2thYmxlOiBib29sZWFuLCBzZWxlY3RlZDogYm9vbGVhbikge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgaXRlbTogaXRlbSxcclxuICAgICAgYWN0aXZlOiBhY3RpdmUsXHJcbiAgICAgIGRpc2FibGVkOiBkaXNhYmxlZCxcclxuICAgICAgY2xpY2thYmxlOiBjbGlja2FibGUsXHJcbiAgICAgIHNlbGVjdGVkOiBzZWxlY3RlZCxcclxuICAgICAgc2hvd0luZm9JY29uOiB0aGlzLmFwcHNXaXRoSW5mby5pbmNsdWRlcyhpdGVtLmlkKVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIF9vcGVuUHJqQnRuOk1lbnVMaXN0VHlwZSA9IHsgYWN0aW9uOlwib3BlblByb2plY3RcIiwgaWQ6XCJwb3J0YWxTZWxlY3RQcm9qZWN0QnRuXCIsdHlwZTpcIlwiLCBjbGFzczogXCJiaW0tbW0taWNvbi1mb2xkZXJcIiwgdGV4dElkOiBcIl9Qb3J0YWxfTWVudV9PcGVuX1Byb2plY3RcIiwgdGV4dElkRGlzYWJsZWQ6IFwiX1BvcnRhbF9NZW51X09wZW5fUHJvamVjdFwiLGRpc2FibGVkVGl0bGU6JycsY2hlY2tTdWJzY3JpcHRpb246IHRydWUsIGRldk9yU3RhZ2VPbmx5IDogZmFsc2UsY2xpY2tQb2xpY3k6IFwiXCJ9O1xyXG5cclxuICBjb250ZXh0RGF0YSA9IHtpdGVtOlwiaGFoYVwiLGFjdGl2ZTp0cnVlLGRpc2FibGVkOnRydWUsY2xpY2thYmxlOnRydWUsc2VsZWN0ZWQ6dHJ1ZX07XHJcblxyXG5cclxuICBhcHBzTGlzdDogTWVudUxpc3RUeXBlW10gPSBbXHJcbiAgICB7IGFjdGlvbjpcInByb2plY3RtZW1iZXJzXCIsIGlkOiBNZW51TGlzdFR5cGVJZC5QT1JUQUxfQklNX1VTRVJTLCB0eXBlOlwiXCIsIGNsYXNzOiBcImJpbS1tbS1pY29uLXVzZXJzXCIsIHRleHRJZDogXCJfcHJvamVjdFN0YXRpc3RpY3NNZW1iZXJzXCIsIHRleHRJZERpc2FibGVkOiBcIl9wcm9qZWN0U3RhdGlzdGljc01lbWJlcnNcIiwgZGlzYWJsZWRUaXRsZTpcIl9JbnN1ZmZpY2llbnQgcmlnaHRzIHRpdGxlXCIsY2hlY2tTdWJzY3JpcHRpb246IGZhbHNlLGRldk9yU3RhZ2VPbmx5IDogZmFsc2UsY2xpY2tQb2xpY3k6IFwiXCJ9LFxyXG4gICAgeyBhY3Rpb246XCJtb2RlbHNcIiwgaWQ6IE1lbnVMaXN0VHlwZUlkLlBPUlRBTF9CSU1fTU9ERUxTLCB0eXBlOlwiXCIsY2xhc3M6IFwiYmltLW1tLWljb24tbW9kZWxzXCIsIHRleHRJZDogXCJfRGl2aXNpb25zXCIsIHRleHRJZERpc2FibGVkOiBcIl9EaXZpc2lvbnNcIixkaXNhYmxlZFRpdGxlOicnLGNoZWNrU3Vic2NyaXB0aW9uOiBmYWxzZSxkZXZPclN0YWdlT25seSA6IGZhbHNlLGNsaWNrUG9saWN5OiBcIlwifSxcclxuICAgIHsgYWN0aW9uOlwiZG9jdW1lbnRzXCIsIGlkOiBNZW51TGlzdFR5cGVJZC5QT1JUQUxfQklNX0RPQ1VNRU5UUywgdHlwZTpcIlwiLGNsYXNzOiBcImJpbS1tbS1pY29uLWRvY3VtZW50c1wiLCB0ZXh0SWQ6IFwiX0ZpbGVzXCIsIHRleHRJZERpc2FibGVkOiBcIl9GaWxlc1wiLGRpc2FibGVkVGl0bGU6JycsY2hlY2tTdWJzY3JpcHRpb246IGZhbHNlLGRldk9yU3RhZ2VPbmx5IDogZmFsc2UsY2xpY2tQb2xpY3k6IFwiXCJ9LFxyXG4gICAgeyBhY3Rpb246XCJwcm9qZWN0c2V0dGluZ3NcIiwgaWQ6IE1lbnVMaXN0VHlwZUlkLlBPUlRBTF9CSU1fUFJPSkVDVF9TRVRUSU5HUywgdHlwZTpcIlwiLGNsYXNzOiBcImJpbS1tbS1pY29uLXByb2plY3Qtc2V0dGluZ3NcIiwgdGV4dElkOiBcIl9TZXR0aW5nc1wiLCB0ZXh0SWREaXNhYmxlZDogXCJfU2V0dGluZ3NcIixkaXNhYmxlZFRpdGxlOicnLGNoZWNrU3Vic2NyaXB0aW9uOiBmYWxzZSxkZXZPclN0YWdlT25seSA6IGZhbHNlLGNsaWNrUG9saWN5OiBcIlwifSxcclxuICAgIHsgYWN0aW9uOlwicHJvY2Vzc2VzXCIsIGlkOiBNZW51TGlzdFR5cGVJZC5QT1JUQUxfQklNX1BST0NFU1NFUywgdHlwZTpcIlwiLGNsYXNzOiBcImJpbS1tbS1pY29uLXByb2Nlc3Nlc1wiLCB0ZXh0SWQ6IFwiX0FwcHJvdmFsc1wiLCB0ZXh0SWREaXNhYmxlZDogXCJfQXBwcm92YWxzXCIsZGlzYWJsZWRUaXRsZTonJyxjaGVja1N1YnNjcmlwdGlvbjogZmFsc2UsZGV2T3JTdGFnZU9ubHkgOiBmYWxzZSxjbGlja1BvbGljeTogXCJcIn0sXHJcbiAgICB7IGFjdGlvbjpcIlwiLGlkOiBNZW51TGlzdFR5cGVJZC5ESVZJREVSX1BST0pFQ1RfTUFOQUdFTUVOVCwgdHlwZTpcImRpdmlkZXJcIiwgY2xhc3M6IFwiYmltLW1tLWFwcC1pdGVtLWRpdmlkZXJcIiwgdGV4dElkOiBcIlwiLHRleHRJZERpc2FibGVkOlwiXCIsZGlzYWJsZWRUaXRsZTonJyxjaGVja1N1YnNjcmlwdGlvbjogZmFsc2UsZGV2T3JTdGFnZU9ubHkgOiBmYWxzZSxjbGlja1BvbGljeTogXCJcIn0sXHJcblxyXG4gICAgeyBhY3Rpb246XCJiaW1leHBsb3JlclwiLCBpZDogTWVudUxpc3RUeXBlSWQuUE9SVEFMX0JJTV9WSUVXRVJfQlROLCB0eXBlOlwiXCIsY2xhc3M6IFwiYmltLW1tLWljb24tYmltLWV4cGxvcmVyXCIsIHRleHRJZDogXCJfUG9ydGFsX01lbnVfQklNX0V4cGxvcmVyXCIsIHRleHRJZERpc2FibGVkOiBcIl9Qb3J0YWxfTWVudV9CSU1fRXhwbG9yZXJcIiwgZGlzYWJsZWRUaXRsZTonJyxjaGVja1N1YnNjcmlwdGlvbjogZmFsc2UsZGV2T3JTdGFnZU9ubHkgOiBmYWxzZSxjbGlja1BvbGljeTogXCJub1Byb2plY3ROb1N1YnNjcmlwdGlvblwifSxcclxuICAgIHsgYWN0aW9uOlwiY2xvdWR2aWV3ZXJcIiwgaWQ6IE1lbnVMaXN0VHlwZUlkLlBPUlRBTF9DTE9VRF9WSUVXRVJfQlROLCB0eXBlOlwiXCIsY2xhc3M6IFwiYmltLW1tLWljb24tY2xvdWQtdmlld2VyXCIsIHRleHRJZDogXCJfTW9kZWxfVmlld2VyXCIsIHRleHRJZERpc2FibGVkOiBcIl9Nb2RlbF9WaWV3ZXJcIiwgZGlzYWJsZWRUaXRsZTonJyxjaGVja1N1YnNjcmlwdGlvbjogZmFsc2UsZGV2T3JTdGFnZU9ubHkgOiBmYWxzZSxjbGlja1BvbGljeTogXCJub1Byb2plY3ROb1N1YnNjcmlwdGlvblwifSxcclxuICAgIHsgYWN0aW9uOlwiY29ubmV4aXNcIiwgaWQ6IE1lbnVMaXN0VHlwZUlkLlBPUlRBTF9DT05ORVhJU19CVE4sIHR5cGU6XCJcIixjbGFzczogXCJiaW0tbW0taWNvbi1jb25uZXhpc1wiLCB0ZXh0SWQ6IFwiX0Nvbm5leGlzXCIsIHRleHRJZERpc2FibGVkOiBcIl9Db25uZXhpc1wiLCBkaXNhYmxlZFRpdGxlOicnLGNoZWNrU3Vic2NyaXB0aW9uOiBmYWxzZSwgZGV2T3JTdGFnZU9ubHkgOiBmYWxzZSwgY2xpY2tQb2xpY3k6IFwibm9Qcm9qZWN0Tm9TdWJzY3JpcHRpb25cIn0sXHJcbiAgICB7IGFjdGlvbjpcImF1dG9jb252ZXJ0ZXJcIiwgaWQ6IE1lbnVMaXN0VHlwZUlkLlBPUlRBTF9CSU1fQVVUT0NPTlZFUlRFUl9CVE4sIHR5cGU6XCJcIixjbGFzczogXCJiaW0tbW0taWNvbi1hdXRvY29udmVydGVyXCIsIHRleHRJZDogXCJfQXV0b2NvbnZlcnRlclwiLCB0ZXh0SWREaXNhYmxlZDogXCJfQXV0b2NvbnZlcnRlclwiLCBkaXNhYmxlZFRpdGxlOicnLGNoZWNrU3Vic2NyaXB0aW9uOiB0cnVlLCBkZXZPclN0YWdlT25seSA6IGZhbHNlLCBjbGlja1BvbGljeTogXCJub1Byb2plY3ROb1N1YnNjcmlwdGlvblwifSxcclxuXHJcbiAgICB7IGFjdGlvbjpcIlwiLGlkOiBNZW51TGlzdFR5cGVJZC5ESVZJREVSQVBQUywgdHlwZTpcImRpdmlkZXJcIiwgY2xhc3M6IFwiYmltLW1tLWFwcC1pdGVtLWRpdmlkZXJcIiwgdGV4dElkOiBcIlwiLHRleHRJZERpc2FibGVkOlwiXCIsZGlzYWJsZWRUaXRsZTonJyxjaGVja1N1YnNjcmlwdGlvbjogZmFsc2UsZGV2T3JTdGFnZU9ubHkgOiBmYWxzZSxjbGlja1BvbGljeTogXCJcIn0sXHJcblxyXG4gICAgeyBhY3Rpb246XCJ0ZWFtbWVtYmVyc1wiLCBpZDogTWVudUxpc3RUeXBlSWQuUE9SVEFMX1RFQU1fTUFOQUdFTUVOVF9CVE4sIHR5cGU6XCJcIiwgY2xhc3M6IFwiYmltLW1tLWljb24tdGVhbS1tZW1iZXJzXCIsIHRleHRJZDogXCJfUG9ydGFsX01lbnVfVGVhbV9NZW1iZXJzXCIsIHRleHRJZERpc2FibGVkOiBcIl9Qb3J0YWxfTWVudV9UZWFtX01lbWJlcnNcIiwgZGlzYWJsZWRUaXRsZTonJyxjaGVja1N1YnNjcmlwdGlvbjogdHJ1ZSwgZGV2T3JTdGFnZU9ubHkgOiBmYWxzZSxjbGlja1BvbGljeTogXCJcIn0sXHJcbiAgICB7IGFjdGlvbjpcInByb3BlcnR5bWFuYWdlclwiLCBpZDogTWVudUxpc3RUeXBlSWQuUE9SVEFMX1BST1BFUlRZX01BTkFHRVJfQlROLCB0eXBlOlwiXCIsY2xhc3M6IFwiYmltLW1tLWljb24tcHJvcGVydHktbWFuYWdlclwiLCB0ZXh0SWQ6IFwiX1BvcnRhbF9NZW51X1Byb3BlcnRpZXNcIiwgdGV4dElkRGlzYWJsZWQ6IFwiX1BvcnRhbF9NZW51X1Byb3BlcnRpZXNcIiwgZGlzYWJsZWRUaXRsZTonJyxjaGVja1N1YnNjcmlwdGlvbjogdHJ1ZSwgZGV2T3JTdGFnZU9ubHkgOiBmYWxzZSxjbGlja1BvbGljeTogXCJcIn0sXHJcbiAgXTtcclxuXHJcbiAgX21lbnVGb290ZXJMaXN0OiBNZW51TGlzdFR5cGVbXSA9IFtcclxuICAgIHsgYWN0aW9uOlwiXCIsaWQ6IE1lbnVMaXN0VHlwZUlkLkRJVklERVJBUFBTLCB0eXBlOlwiZGl2aWRlclwiLCBjbGFzczogXCJiaW0tbW0tYXBwLWl0ZW0tZGl2aWRlclwiLGNoZWNrU3Vic2NyaXB0aW9uOiBmYWxzZSxkZXZPclN0YWdlT25seSA6IGZhbHNlIH0gYXMgTWVudUxpc3RUeXBlLFxyXG4gICAgeyBhY3Rpb246XCJhZGRpbnNcIiwgaWQ6IE1lbnVMaXN0VHlwZUlkLlBPUlRBTF9BRERfSU5TX0JUTiwgdHlwZTpcIlwiLCBjbGFzczogXCJiaW0tbW0taWNvbi1hZGQtaW5zXCIsIHRleHRJZDogXCJfQWRkSW5zXCIsIHRleHRJZERpc2FibGVkOiBcIl9BZGRJbnNcIiwgZGlzYWJsZWRUaXRsZTonJywgY2hlY2tTdWJzY3JpcHRpb246IGZhbHNlLCBkZXZPclN0YWdlT25seSA6IGZhbHNlLCBjbGlja1BvbGljeTogXCJcIn0sXHJcbiAgICB7IFxyXG4gICAgICBhY3Rpb246XCJnZXRZb3VyVGVhbVwiLCBcclxuICAgICAgaWQ6IE1lbnVMaXN0VHlwZUlkLlBPUlRBTF9HRVRfWU9VUl9URUFNX0JUTixcclxuICAgICAgY2xhc3M6IFwiYmltLW1tLWljb24tdGVhbS1tZW1iZXJzXCIsIFxyXG4gICAgICB0ZXh0SWQ6IFwiX0dldF9Zb3VyX1RlYW1cIiwgXHJcbiAgICAgIHRleHRJZERpc2FibGVkOiBcIl9HZXRfWW91cl9UZWFtXCIsXHJcbiAgICB9IGFzIE1lbnVMaXN0VHlwZSxcclxuICAgIHsgYWN0aW9uOlwic2hvcFwiLCBpZDogTWVudUxpc3RUeXBlSWQuUE9SVEFMX1NIT1BfQlROLCB0eXBlOlwiXCIsY2xhc3M6IFwiYmltLW1tLWljb24tc2hvcFwiLCB0ZXh0SWQ6IFwiX1Nob3BcIiwgdGV4dElkRGlzYWJsZWQ6IFwiX1Nob3BcIixkaXNhYmxlZFRpdGxlOicnLGNoZWNrU3Vic2NyaXB0aW9uOiBmYWxzZSxkZXZPclN0YWdlT25seSA6IGZhbHNlLGNsaWNrUG9saWN5OiBcIlwifVxyXG4gIF07XHJcblxyXG4gIF9vdmVybGF5Q2xpY2tlZCgpe1xyXG4gICAgZmlyZUV2ZW50KHRoaXMsIFwiYmltcGx1c01haW5NZW51T3ZlcmxheUNsaWNrZWRcIik7XHJcbiAgfVxyXG5cclxuICBfbWFpbk1lbnVJdGVtQ2xpY2tlZChpdGVtOiBNZW51TGlzdFR5cGUsdHlwZTpzdHJpbmcsZXZlbnQ6IEV2ZW50IHwgdW5kZWZpbmVkICl7XHJcbiAgICBpZiAoZXZlbnQpIHtcclxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYodHlwZSAhPSBcImluZm9cIikge1xyXG4gICAgICBpZiAodGhpcy5faXNEaXNhYmxlZChpdGVtKSl7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgYWN0aW9uID0gaXRlbS5hY3Rpb247XHJcbiAgICBmaXJlRXZlbnQodGhpcyxcImJpbXBsdXNNYWluTWVudUNsaWNrZWRcIiwge2FjdGlvbix0eXBlOnR5cGUgfSApO1xyXG4gIH1cclxufVxyXG4iLCI8bmctdGVtcGxhdGUgI2FwcEl0ZW1Db250ZW50IGxldC1jb250ZXh0RGF0YT5cclxuICBAaWYgKGNvbnRleHREYXRhLml0ZW0udHlwZSA9PT0gJ2RpdmlkZXInKSB7XHJcbiAgICA8ZGl2IGNsYXNzPVwiYmltLW1tLWFwcC1pdGVtXCIgW2NsYXNzXT1cImNvbnRleHREYXRhLml0ZW0uY2xhc3NcIiBbaWRdPVwiY29udGV4dERhdGEuaXRlbS5pZFwiPjwvZGl2PlxyXG4gIH0gQGVsc2Uge1xyXG4gICAgPGRpdiBjbGFzcz1cImJpbS1tbS1hcHAtaXRlbVwiIFtpZF09XCJjb250ZXh0RGF0YS5pdGVtLmlkXCJcclxuICAgICAgW25nQ2xhc3NdPVwiaXNUb3VjaD8nJzonaG92ZXItc2hvdy1pbmZvICcrKGNvbnRleHREYXRhLmFjdGl2ZT8nYWN0aXZlICc6JyAnKSArKGNvbnRleHREYXRhLmRpc2FibGVkPydkaXNhYmxlZCAnOicgJykrKGNvbnRleHREYXRhLmNsaWNrYWJsZT8nICc6J25vdC1jbGlja2FibGUgJykrKGNvbnRleHREYXRhLnNlbGVjdGVkPydzZWxlY3RlZCAnOicgJylcIlxyXG4gICAgICBbdGl0bGVdICA9XCIoKGNvbnRleHREYXRhLmRpc2FibGVkKSA/ICAoY29udGV4dERhdGEuaXRlbS5kaXNhYmxlZFRpdGxlIHwgdHJhbnNsYXRlKSA6ICcnIClcIlxyXG4gICAgICA+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJiaW0tbW0tYXBwLWl0ZW0tZGV0YWlsc1wiXHJcbiAgICAgICAgICAgW25nQ2xhc3NdID0gXCIgY29udGV4dERhdGEuY2xpY2thYmxlID8gJycgOiAnbm90LWNsaWNrYWJsZScgXCJcclxuICAgICAgICAgICAoY2xpY2spPVwiX21haW5NZW51SXRlbUNsaWNrZWQoY29udGV4dERhdGEuaXRlbSwnbm9ybWFsJywkZXZlbnQpXCJcclxuICAgICAgICAgICAoa2V5cHJlc3MpPVwiX21haW5NZW51SXRlbUNsaWNrZWQoY29udGV4dERhdGEuaXRlbSwnbm9ybWFsJywkZXZlbnQpXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmltLW1tLWljb25cIlxyXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImNvbnRleHREYXRhLml0ZW0uY2xhc3MgKyAoY29udGV4dERhdGEuYWN0aXZlPycgYWN0aXZlJzonJykgKyAoY29udGV4dERhdGEuZGlzYWJsZWQ/JyBkaXNhYmxlZCAnOicnKVwiPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8c3Bhbj57eyhjb250ZXh0RGF0YS5pc0Rpc2FibGVkICYmIChjb250ZXh0RGF0YS5pdGVtLnRleHRJZERpc2FibGVkICE9PVwiXCIpID8gY29udGV4dERhdGEuaXRlbS50ZXh0SWREaXNhYmxlZCA6IGNvbnRleHREYXRhLml0ZW0udGV4dElkKSB8IHRyYW5zbGF0ZX19PC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgQGlmKGNvbnRleHREYXRhLnNob3dJbmZvSWNvbil7XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJiaW0tbW0tYXBwLWl0ZW0taW5mbyBiaW0tbW0taWNvbiBiaW0tbW0taWNvbi1pbmZvXCJcclxuICAgICAgICAgICAoY2xpY2spPVwiX21haW5NZW51SXRlbUNsaWNrZWQoY29udGV4dERhdGEuaXRlbSwgJ2luZm8nLCRldmVudClcIlxyXG4gICAgICAgICAgIChrZXlwcmVzcyk9XCJfbWFpbk1lbnVJdGVtQ2xpY2tlZChjb250ZXh0RGF0YS5pdGVtLCAnaW5mbycsJGV2ZW50KVwiPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgfVxyXG4gIDwvZGl2PlxyXG4gIH1cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcblxyXG5cclxuPGRpdiBcclxuICBjbGFzcz1cImJpbS1tbS13cmFwcGVyXCIgXHJcbiAgW25nQ2xhc3NdPVwic2hvd092ZXJsYXkgPyAnYmltLW1tLW92ZXJsYXknIDogJydcIiBcclxuICAoY2xpY2spPVwiX292ZXJsYXlDbGlja2VkKClcIlxyXG4gIChrZXlwcmVzcyk9XCJfb3ZlcmxheUNsaWNrZWQoKVwiXHJcbiAgPlxyXG4gICAgPGRpdiBjbGFzcz0gXCJiaW0tbW0tY29udGFpbmVyXCI+XHJcbiAgICAgIEBpZighX2lzSGlkZGVuKF9vcGVuUHJqQnRuKSl7XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiYXBwSXRlbUNvbnRlbnQ7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBfZ2V0Q29udGV4dERhdGEoX29wZW5QcmpCdG4scHJvamVjdEFjdGl2ZUl0ZW0gPT09ICdwcm9qZWN0bGlzdCcsX2lzRGlzYWJsZWQoX29wZW5QcmpCdG4pLHRydWUscHJvamVjdEFjdGl2ZUl0ZW0gPT09ICdwcm9qZWN0bGlzdCcpIH1cIlxyXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgfVxyXG5cclxuICAgICAgQGlmKGJpbXBsdXNQcm9qZWN0TWVudVZpc2libGUpe1xyXG4gICAgICAgIDxsaWItYmltcGx1cy1wcm9qZWN0LW1lbnVcclxuICAgICAgICAgICAgcHJvamVjdE5hbWUgPSB7e3Byb2plY3ROYW1lfX1cclxuICAgICAgICAgICAgcHJvamVjdEltYWdlVXJsID0ge3twcm9qZWN0SW1hZ2VVcmx9fVxyXG4gICAgICAgICAgICBwcm9qZWN0RXhwbG9yZXJVcmwgPSB7e3Byb2plY3RFeHBsb3JlclVybH19XHJcbiAgICAgICAgICAgIHByb2plY3RBY3RpdmVJdGVtID0ge3twcm9qZWN0QWN0aXZlSXRlbX19XHJcbiAgICAgICAgICAgIHByb2plY3RtZW1iZXJzRGlzYWJsZWQgPSB7e3Byb2plY3RtZW1iZXJzRGlzYWJsZWR9fVxyXG4gICAgICAgICAgICBtb2RlbHNEaXNhYmxlZCA9IHt7bW9kZWxzRGlzYWJsZWR9fVxyXG4gICAgICAgICAgICBkb2N1bWVudHNEaXNhYmxlZCA9IHt7ZG9jdW1lbnRzRGlzYWJsZWR9fVxyXG4gICAgICAgICAgICBwcm9qZWN0c2V0dGluZ3NEaXNhYmxlZCA9IHt7cHJvamVjdHNldHRpbmdzRGlzYWJsZWR9fVxyXG4gICAgICAgICAgICBwcm9jZXNzZXNEaXNhYmxlZCA9IHt7cHJvY2Vzc2VzRGlzYWJsZWR9fVxyXG4gICAgICAgICAgICBwcm9qZWN0bWVtYmVyc1Zpc2libGUgPSB7e3Byb2plY3RtZW1iZXJzVmlzaWJsZX19XHJcbiAgICAgICAgICAgIG1vZGVsc1Zpc2libGUgPSB7e21vZGVsc1Zpc2libGV9fVxyXG4gICAgICAgICAgICBkb2N1bWVudHNWaXNpYmxlID0ge3tkb2N1bWVudHNWaXNpYmxlfX1cclxuICAgICAgICAgICAgcHJvamVjdHNldHRpbmdzVmlzaWJsZSA9IHt7cHJvamVjdHNldHRpbmdzVmlzaWJsZX19XHJcbiAgICAgICAgICAgIHByb2Nlc3Nlc1Zpc2libGUgPSB7e3Byb2Nlc3Nlc1Zpc2libGV9fVxyXG4gICAgICAgICAgICBpc0NvbGxhcHNlZCA9IHt7aXNDb2xsYXBzZWR9fVxyXG4gICAgICAgICAgICBpc01pbmlNb2RlID0ge3tpc1RvdWNofX1cclxuICAgICAgICAgICAgaXNUb3VjaCA9IHt7aXNUb3VjaH19XHJcbiAgICAgICAgICAgIGhpZGVNZW51SWNvbnMgPSB7e2hpZGVQcm9qZWN0TWVudUljb25zfX1cclxuICAgICAgICAgICAgc2hvd0hvcml6b250YWxNZW51SWNvbnMgPSB7e3Nob3dIb3Jpem9udGFsTWVudUljb25zfX1cclxuICAgICAgICAgICAgW21lbnVJdGVtc09yZGVyXT1cIm1lbnVJdGVtc09yZGVyXCJcclxuICAgICAgICA+PC9saWItYmltcGx1cy1wcm9qZWN0LW1lbnU+XHJcbiAgICAgIH1cclxuICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cImFwcHMubGVuZ3RoIHx8IGZvb3Rlckxpc3QubGVuZ3RoID8gJ2JpbS1tbS1hcHBzLWNvbnRhaW5lcicgOiAnJ1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJpbS1tbS1hcHBzLWxpc3RcIj5cclxuICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgYXBwSXRlbSBvZiBhcHBzXCI+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJhcHBJdGVtQ29udGVudDsgY29udGV4dDogeyAkaW1wbGljaXQ6IF9nZXRDb250ZXh0RGF0YShhcHBJdGVtLCFfaXNTdWJzY3JpYmVkKGFwcEl0ZW0pLF9pc0Rpc2FibGVkKGFwcEl0ZW0pLF9pc0NsaWNrYWJsZShhcHBJdGVtKSxtZW51QWN0aXZlSXRlbSA9PT0gYXBwSXRlbS5hY3Rpb24pfVwiXHJcbiAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJpbS1tbS1mb290ZXItY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGZvb3Rlckl0ZW0gb2YgZm9vdGVyTGlzdFwiPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiYXBwSXRlbUNvbnRlbnQ7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBfZ2V0Q29udGV4dERhdGEoZm9vdGVySXRlbSxmb290ZXJBY3RpdmVJdGVtID09PSBmb290ZXJJdGVtLmFjdGlvbixfaXNEaXNhYmxlZChmb290ZXJJdGVtKSx0cnVlLGZhbHNlKX1cIlxyXG4gICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
|