gamma-app-controller 1.2.0 → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. package/esm2020/lib/application-controller/application-dataset-component/create-dataset/create-dataset.component.mjs +1 -5
  2. package/esm2020/lib/application-controller/application-dataset-component/dataset-query-bulder/dataset-query-bulder.component.mjs +1 -8
  3. package/esm2020/lib/application-controller/page-controller/page-config/page-config.component.mjs +1 -2
  4. package/esm2020/lib/application-controller/page-controller/page-config-multi-layout/page-config-multi-layout.component.mjs +1 -2
  5. package/esm2020/lib/application-controller/tokenStorage.servce.mjs +36 -0
  6. package/esm2020/lib/shared/advanced-component/app-advance-header/app-header.component.mjs +20 -18
  7. package/esm2020/lib/shared/advanced-component/gamma-advance-operator-table/gamma-advance-operator-table.component.mjs +1 -2
  8. package/esm2020/lib/template-module/bookmarked-template/bookmarked-template.component.mjs +10 -9
  9. package/esm2020/lib/template-module/defaulLandingComponent/landing-component.component.mjs +10 -9
  10. package/esm2020/lib/template-module/kpiWithMultiLayout/dynamin-modal-multi.component.mjs +1 -2
  11. package/esm2020/lib/template-module/kpiWithMultiLayout/kpi-with-multilayout.component.mjs +16 -15
  12. package/esm2020/lib/template-module/kpiWithSingleLayout/dynamin-modal.component.mjs +1 -2
  13. package/esm2020/lib/template-module/kpiWithSingleLayout/kpi-with-dataset.component.mjs +78 -29
  14. package/esm2020/lib/template-module/kpiWithSingleLayout/single-layout-dataset-call.service.mjs +6 -4
  15. package/esm2020/public-api.mjs +2 -1
  16. package/fesm2015/gamma-app-controller.mjs +132 -63
  17. package/fesm2015/gamma-app-controller.mjs.map +1 -1
  18. package/fesm2020/gamma-app-controller.mjs +128 -61
  19. package/fesm2020/gamma-app-controller.mjs.map +1 -1
  20. package/lib/application-controller/application-dataset-component/dataset-query-bulder/dataset-query-bulder.component.d.ts +0 -1
  21. package/lib/application-controller/tokenStorage.servce.d.ts +12 -0
  22. package/lib/shared/advanced-component/app-advance-header/app-header.component.d.ts +3 -1
  23. package/lib/template-module/bookmarked-template/bookmarked-template.component.d.ts +3 -1
  24. package/lib/template-module/defaulLandingComponent/landing-component.component.d.ts +3 -1
  25. package/lib/template-module/kpiWithMultiLayout/kpi-with-multilayout.component.d.ts +3 -1
  26. package/lib/template-module/kpiWithSingleLayout/kpi-with-dataset.component.d.ts +13 -1
  27. package/lib/template-module/kpiWithSingleLayout/single-layout-dataset-call.service.d.ts +3 -1
  28. package/package.json +1 -1
  29. package/public-api.d.ts +1 -0
@@ -260,11 +260,9 @@ export class CreateDatasetComponent {
260
260
  else {
261
261
  if (this.creatDatasetObject['datasetId']) {
262
262
  this.updataNewDataSetCongig();
263
- localStorage.removeItem('querybuilder');
264
263
  }
265
264
  else {
266
265
  this.createNeDataSetConfig();
267
- localStorage.removeItem('querybuilder');
268
266
  }
269
267
  }
270
268
  }
@@ -278,11 +276,9 @@ export class CreateDatasetComponent {
278
276
  else {
279
277
  if (this.creatDatasetObject['datasetId']) {
280
278
  this.updataNewDataSetCongig();
281
- localStorage.removeItem('querybuilder');
282
279
  }
283
280
  else {
284
281
  this.createNeDataSetConfig();
285
- localStorage.removeItem('querybuilder');
286
282
  }
287
283
  }
288
284
  }
@@ -353,4 +349,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
353
349
  type: Input,
354
350
  args: ['selectedDatasetId']
355
351
  }] } });
356
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWRhdGFzZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2FtbWEtYXBwLWNvbnRyb2xsZXIvc3JjL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL2FwcGxpY2F0aW9uLWRhdGFzZXQtY29tcG9uZW50L2NyZWF0ZS1kYXRhc2V0L2NyZWF0ZS1kYXRhc2V0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dhbW1hLWFwcC1jb250cm9sbGVyL3NyYy9saWIvYXBwbGljYXRpb24tY29udHJvbGxlci9hcHBsaWNhdGlvbi1kYXRhc2V0LWNvbXBvbmVudC9jcmVhdGUtZGF0YXNldC9jcmVhdGUtZGF0YXNldC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFXekQsTUFBTSxPQUFPLHNCQUFzQjtJQW9NakMsWUFDVSxPQUFrQyxFQUNsQyxNQUFxQixFQUN0QixhQUE0QixFQUMzQixNQUFjLEVBQ2QsY0FBOEI7UUFKOUIsWUFBTyxHQUFQLE9BQU8sQ0FBMkI7UUFDbEMsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUN0QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUMzQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBdk14QyxvQkFBZSxHQUFZLEtBQUssQ0FBQztRQUNqQyx1QkFBa0IsR0FBRztZQUNuQixhQUFhLEVBQUUsRUFBRTtZQUNqQixhQUFhLEVBQUUsRUFBRTtTQUNsQixDQUFDO1FBRUYseUJBQW9CLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxL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dUMsQ0FBQyxDQUFDLENBQUE7SUFDakUsQ0FBQztJQUdELHFCQUFxQixDQUFDLElBQUk7UUFDeEIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQztRQUN6QyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3JDLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUN4QixJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztTQUM5QjthQUFNO1lBQ0wsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLEVBQUU7Z0JBQ3hDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFBO2FBQzlCO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO2FBQzlCO1NBQ0Y7SUFJSCxDQUFDOzttSEFqWVUsc0JBQXNCO3VHQUF0QixzQkFBc0Isb0lDWG5DLCtqRkFtRE07MkZEeENPLHNCQUFzQjtrQkFMbEMsU0FBUzsrQkFDRSxvQkFBb0I7ME5Bc0tyQixRQUFRO3NCQUFoQixLQUFLO2dCQUdGLGlCQUFpQjtzQkFEcEIsS0FBSzt1QkFBQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uQ29udGVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9hcHBsaWNhdGlvbi1jb250ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgVG9hc3RyU2VydmljZSB9IGZyb20gJ25neC10b2FzdHInO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBDb21tb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29tbW9uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWNyZWF0ZS1kYXRhc2V0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NyZWF0ZS1kYXRhc2V0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY3JlYXRlLWRhdGFzZXQuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBDcmVhdGVEYXRhc2V0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgbG9hZGluZ01vZGFsOiBib29sZWFuO1xuICBpc0R1cGxpZGF0ZVZpZXc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgY3JlYXREYXRhc2V0T2JqZWN0ID0ge1xuICAgIFwiZGF0YXNldE5hbWVcIjogXCJcIixcbiAgICBcImRhdGFzZXRUeXBlXCI6IFwiXCJcbiAgfTtcblxuICBkYXRhU2V0VHlwZUNvbnRhaW5lciA9IFt7IG5hbWU6IFwiUXVlcnkgQnVpbGRlclwiLCB2YWx1ZTogXCJxdWVyeWJ1aWxkZXJcIiB9LCB7IG5hbWU6IFwiU2VydmljZSBKU09OXCIsIHZhbHVlOiBcIm1vbmdvXCIgfSxcbiAgeyBuYW1lOiBcIlJlc3QgQVBJXCIsIHZhbHVlOiBcInNpbXBsZUFwaVwiIH0sIHsgbmFtZTogXCJTUUwgQnVpbGRlclwiLCB2YWx1ZTogXCJzcWxRdWVyeVwiIH0sIHsgbmFtZTogXCJQbGFpbiBKU09OXCIsIHZhbHVlOiBcInBsYWluanNvblwiIH1dXG4gIG1vbmdvRGF0YXNldCA9IHtcbiAgICBcImFwaVwiOiBcIi9rcGkvdHJlbmRzL25ldHdvcmsvZ2V0LW1ldHJpYy1kYXRhXCIsXG4gICAgXCJzZXJ2aWNlSWRcIjogXCJcIixcbiAgICBcImFwaVR5cGVcIjogXCJwb3N0XCIsXG4gICAgXCJmaWx0ZXJJdGVtc1wiOiBbXG4gICAgICB7XG4gICAgICAgIFwiYXBpTmFtZVwiOiBcInN0YXJ0RGF0ZVwiLFxuICAgICAgICBcImxhYmVsXCI6IFwiU3RhcnQgRGF0ZVwiLFxuICAgICAgICBcImZpbHRlclR5cGVcIjogXCJkYXRlXCIsXG4gICAgICAgIFwib3BlcmF0b3JOYW1lXCI6IFwiXCIsXG4gICAgICAgIFwiZGVmYXVsdEZpbHRlclR5cGVcIjogXCJkeW5hbWljXCIsXG4gICAgICAgIFwiZGVmYXVsdEZpbHRlclZhbHVlXCI6IFwiWVlZWS1NTS1ERFwiLFxuICAgICAgICBcIm1vbWVudEZ1bmN0aW9uXCI6IFwic3VidHJhY3RcIixcbiAgICAgICAgXCJtb21lbnRGb3JtYXRlXCI6IFwiMTUsZGF5c1wiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcImFwaU5hbWVcIjogXCJlbmREYXRlXCIsXG4gICAgICAgIFwibGFiZWxcIjogXCJFbmQgRGF0ZVwiLFxuICAgICAgICBcImZpbHRlclR5cGVcIjogXCJkYXRlXCIsXG4gICAgICAgIFwib3BlcmF0b3JOYW1lXCI6IFwiXCIsXG4gICAgICAgIFwiZGVmYXVsdEZpbHRlclR5cGVcIjogXCJkeW5hbWljXCIsXG4gICAgICAgIFwiZGVmYXVsdEZpbHRlclZhbHVlXCI6IFwiWVlZWS1NTS1ERFwiLFxuICAgICAgICBcIm1vbWVudEZ1bmN0aW9uXCI6IFwic3VidHJhY3RcIixcbiAgICAgICAgXCJtb21lbnRGb3JtYXRlXCI6IFwiMSxkYXlzXCJcbiAgICAgIH1cbiAgICBdLFxuICAgIFwiZml4T3BlcmF0aW9uTGV2bGVzXCI6IFtdXG4gIH1cblxuICBxdWVyeUJ1bGRlckRhdGFzZXQgPSB7XG4gICAgXCJhcGlcIjogXCIva3BpL2dlbmVyaWNBZ2dyZWdhdGVQYWdpbmF0ZWRLcGlTZXJ2aWNlUmVzcG9uc2VcIixcbiAgICBcImFwaVR5cGVcIjogXCJwb3N0XCIsXG4gICAgXCJzZXJ2aWNlSWRcIjogXCJcIixcbiAgICBcInF1ZXJ5Q29uZmlnXCI6IHtcbiAgICAgIFwibWFwZWRGaWx0ZXJzXCI6IFtcbiAgICAgICAge1xuICAgICAgICAgIFwibG9jYWxDb2x1bW5cIjogXCJzdGFydERhdGVcIixcbiAgICAgICAgICBcInNlcnZlckNvbHVtblwiOiBcInJlY29yZF9kYXRlXCIsXG4gICAgICAgICAgXCJvcGVyYXRvck5hbWVcIjogXCJndGVcIixcbiAgICAgICAgICBcImRlZmF1bHRWYWx1ZVwiOiBcIlwiLFxuICAgICAgICAgIFwiZGF0YVR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgXCJsb2NhbENvbHVtblwiOiBcImVuZERhdGVcIixcbiAgICAgICAgICBcInNlcnZlckNvbHVtblwiOiBcInJlY29yZF9kYXRlXCIsXG4gICAgICAgICAgXCJvcGVyYXRvck5hbWVcIjogXCJsdGVcIixcbiAgICAgICAgICBcImRlZmF1bHRWYWx1ZVwiOiBcIlwiLFxuICAgICAgICAgIFwiZGF0YVR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgXCJzb3J0ZXJzXCI6IFtcblxuICAgICAgXSxcbiAgICAgIFwicmVxRmllbGRzXCI6IFtcblxuICAgICAgXSxcbiAgICAgIFwibWVhc3VyZXNcIjogW1xuXG4gICAgICBdLFxuICAgICAgXCJmaWx0ZXJcIjogW1xuXG4gICAgICBdLFxuICAgICAgXCJoYXZpbmdzXCI6IFtdLFxuICAgICAgXCJjb21tb25Db25maWdcIjoge30sXG4gICAgICBcImNvbHVtbnNcIjogW1xuICAgICAgXVxuICAgIH1cbiAgfVxuXG4gIHJlc3RBcGlEYXRhc2V0ID0ge1xuICAgIFwiYXBpXCI6IFwiXCIsXG4gICAgXCJhcGlUeXBlXCI6IFwicG9zdFwiLFxuICAgIFwic2VydmljZUlkXCI6IFwiXCIsXG4gICAgXCJxdWVyeUNvbmZpZ1wiOiB7XG4gICAgICBcIm1hcGVkRmlsdGVyc1wiOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBcImxvY2FsQ29sdW1uXCI6IFwic3RhcnREYXRlXCIsXG4gICAgICAgICAgXCJzZXJ2ZXJDb2x1bW5cIjogXCJyZWNvcmREYXRlXCIsXG4gICAgICAgICAgXCJvcGVyYXRvck5hbWVcIjogXCJndGVcIixcbiAgICAgICAgICBcImRlZmF1bHRWYWx1ZVwiOiBcIlwiLFxuICAgICAgICAgIFwiZGF0YVR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgXCJsb2NhbENvbHVtblwiOiBcImVuZERhdGVcIixcbiAgICAgICAgICBcInNlcnZlckNvbHVtblwiOiBcInJlY29yZERhdGVcIixcbiAgICAgICAgICBcIm9wZXJhdG9yTmFtZVwiOiBcImx0ZVwiLFxuICAgICAgICAgIFwiZGVmYXVsdFZhbHVlXCI6IFwiXCIsXG4gICAgICAgICAgXCJkYXRhVHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9XG4gIH07XG4gIHNxbEFwaURhdGFzZXQgPSB7XG4gICAgXCJhcGlcIjogXCIva3BpL2dlbmVyaWNTcWxRdWVyeVJlc3BvbnNlXCIsXG4gICAgXCJhcGlUeXBlXCI6IFwicG9zdFwiLFxuICAgIFwic2VydmljZUlkXCI6IFwiXCIsXG4gICAgXCJxdWVyeUNvbmZpZ1wiOiB7XG4gICAgICBcInRlbXBsYXRlUXVlcnlcIjogXCJcIixcbiAgICAgIFwiZGF0YWJhc2VOYW1lXCI6IFwiXCIsXG4gICAgICBcImRiQ29uZmlnXCI6IFwiXCIsXG4gICAgICBcImVucmljaG1lbnRzXCI6IFtdLFxuICAgICAgXCJtYXBlZEZpbHRlcnNcIjogW1xuICAgICAgICB7XG4gICAgICAgICAgXCJsb2NhbENvbHVtblwiOiBcInN0YXJ0RGF0ZVwiLFxuICAgICAgICAgIFwic2VydmVyQ29sdW1uXCI6IFwicmVjb3JkX2RhdGVcIixcbiAgICAgICAgICBcIm9wZXJhdG9yTmFtZVwiOiBcImd0ZVwiLFxuICAgICAgICAgIFwiZGVmYXVsdFZhbHVlXCI6IFwiXCIsXG4gICAgICAgICAgXCJkYXRhVHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBcImxvY2FsQ29sdW1uXCI6IFwiZW5kRGF0ZVwiLFxuICAgICAgICAgIFwic2VydmVyQ29sdW1uXCI6IFwicmVjb3JkX2RhdGVcIixcbiAgICAgICAgICBcIm9wZXJhdG9yTmFtZVwiOiBcImx0ZVwiLFxuICAgICAgICAgIFwiZGVmYXVsdFZhbHVlXCI6IFwiXCIsXG4gICAgICAgICAgXCJkYXRhVHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBcImxvY2FsQ29sdW1uXCI6IFwibGltaXRcIixcbiAgICAgICAgICBcInNlcnZlckNvbHVtblwiOiBcImxpbWl0XCIsXG4gICAgICAgICAgXCJvcGVyYXRvck5hbWVcIjogXCJlcVwiLFxuICAgICAgICAgIFwiZGVmYXVsdFZhbHVlXCI6IFwiNTAwMFwiLFxuICAgICAgICAgIFwiZGF0YVR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAgICB9XG4gICAgICBdXG4gICAgfVxuICB9O1xuXG4gIGpzb25EYXRhc2V0ID0ge1xuICAgIFwiYXBpXCI6IFwiL2twaS1jb25maWcvZ2V0SnNvbkRhdGFzZXRQYXlsb2FkXCIsXG4gICAgXCJhcGlUeXBlXCI6IFwiZ2V0XCIsXG4gICAgXCJzZXJ2aWNlSWRcIjogXCJcIixcbiAgICBcInF1ZXJ5Q29uZmlnXCI6IHtcbiAgICAgIFwibWFwZWRGaWx0ZXJzXCI6IFtcbiAgICAgICAge1xuICAgICAgICAgIFwibG9jYWxDb2x1bW5cIjogXCJzdGFydERhdGVcIixcbiAgICAgICAgICBcInNlcnZlckNvbHVtblwiOiBcInJlY29yZERhdGVcIixcbiAgICAgICAgICBcIm9wZXJhdG9yTmFtZVwiOiBcImd0ZVwiLFxuICAgICAgICAgIFwiZGVmYXVsdFZhbHVlXCI6IFwiXCIsXG4gICAgICAgICAgXCJkYXRhVHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBcImxvY2FsQ29sdW1uXCI6IFwiZW5kRGF0ZVwiLFxuICAgICAgICAgIFwic2VydmVyQ29sdW1uXCI6IFwicmVjb3JkRGF0ZVwiLFxuICAgICAgICAgIFwib3BlcmF0b3JOYW1lXCI6IFwibHRlXCIsXG4gICAgICAgICAgXCJkZWZhdWx0VmFsdWVcIjogXCJcIixcbiAgICAgICAgICBcImRhdGFUeXBlXCI6IFwic3RyaW5nXCJcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH1cbiAgfVxuXG4gIGlucHV0RGF0YXNldElEOiBhbnk7XG4gIEBJbnB1dCgpIGlzSGVhZGVyOiBib29sZWFuID0gdHJ1ZTtcblxuICBASW5wdXQoJ3NlbGVjdGVkRGF0YXNldElkJylcbiAgc2V0IHNlbGVjdGVkRGF0YXNldElkKHZhbHVlKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLmlucHV0RGF0YXNldElEID0gdmFsdWVcbiAgICAgIHRoaXMuc2VydmljZS5nZXRBcHBEYXRhc2V0Q29uZmlnKHZhbHVlKS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAoZGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nTW9kYWwgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmNyZWF0RGF0YXNldE9iamVjdCA9IGRhdGE7XG4gICAgICAgICAgaWYgKGRhdGEuZGF0YXNldFR5cGUgPT0gJ21vbmdvJykge1xuICAgICAgICAgICAgdGhpcy5tb25nb0RhdGFzZXQgPSBkYXRhLmNvbmZpZ1xuICAgICAgICAgIH0gZWxzZSBpZiAoZGF0YS5kYXRhc2V0VHlwZSA9PSAncXVlcnlidWlsZGVyJykge1xuICAgICAgICAgICAgdGhpcy5xdWVyeUJ1bGRlckRhdGFzZXQgPSBkYXRhLmNvbmZpZ1xuICAgICAgICAgIH0gZWxzZSBpZiAoZGF0YS5kYXRhc2V0VHlwZSA9PSAnc2ltcGxlQXBpJykge1xuICAgICAgICAgICAgdGhpcy5yZXN0QXBpRGF0YXNldCA9IGRhdGEuY29uZmlnO1xuICAgICAgICAgIH0gZWxzZSBpZiAoZGF0YS5kYXRhc2V0VHlwZSA9PSAnc3FsUXVlcnknKSB7XG4gICAgICAgICAgICB0aGlzLnNxbEFwaURhdGFzZXQgPSBkYXRhLmNvbmZpZztcbiAgICAgICAgICB9IGVsc2UgaWYgKGRhdGEuZGF0YXNldFR5cGUgPT0gJ3BsYWluanNvbicpIHtcbiAgICAgICAgICAgIHRoaXMuanNvbkRhdGFzZXQgPSBkYXRhLmNvbmZpZztcbiAgICAgICAgICB9XG4gICAgICAgIH0sIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLmxvYWRpbmdNb2RhbCA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMudG9hc3RyLmVycm9yKCdVbmV4cGVjdGVkIFNlcnZlciBFeGNlcHRpb24uIFBsZWFzZSBjb250YWN0IFN5c3RlbSBBZG1pbi4nLCAnRGF0YXNldCBDcmVhdGlvbicpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfSBlbHNlIHtcblxuXG4gICAgfVxuXG5cbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc2VydmljZTogQXBwbGljYXRpb25Db250ZW50U2VydmljZSxcbiAgICBwcml2YXRlIHRvYXN0cjogVG9hc3RyU2VydmljZSxcbiAgICBwdWJsaWMgY29tbW9uU2VydmljZTogQ29tbW9uU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlXG4gICkgeyB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgbGV0IGRhdGFzZXRJZCA9IHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QucXVlcnlQYXJhbXNbJ2RhdGFzZXRJZCddO1xuICAgIGxldCBjb250ZW50VHlwZSA9IHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QucXVlcnlQYXJhbXNbJ2NvbnRlbnRUeXBlJ107XG4gICAgaWYgKGNvbnRlbnRUeXBlID09IFwiY2xvbmVcIikge1xuICAgICAgdGhpcy5pc0R1cGxpZGF0ZVZpZXcgPSB0cnVlO1xuICAgIH1cbiAgICBpZiAoZGF0YXNldElkKSB7XG4gICAgICB0aGlzLmxvYWRpbmdNb2RhbCA9IHRydWU7XG5cbiAgICAgIHRoaXMuc2VydmljZS5nZXRBcHBEYXRhc2V0Q29uZmlnKGRhdGFzZXRJZCkuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMubG9hZGluZ01vZGFsID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5jcmVhdERhdGFzZXRPYmplY3QgPSBkYXRhO1xuICAgICAgICAgIGlmIChkYXRhLmRhdGFzZXRUeXBlID09ICdtb25nbycpIHtcbiAgICAgICAgICAgIHRoaXMubW9uZ29EYXRhc2V0ID0gZGF0YS5jb25maWdcbiAgICAgICAgICB9IGVsc2UgaWYgKGRhdGEuZGF0YXNldFR5cGUgPT0gJ3F1ZXJ5YnVpbGRlcicpIHtcbiAgICAgICAgICAgIHRoaXMucXVlcnlCdWxkZXJEYXRhc2V0ID0gZGF0YS5jb25maWdcbiAgICAgICAgICB9IGVsc2UgaWYgKGRhdGEuZGF0YXNldFR5cGUgPT0gJ3NpbXBsZUFwaScpIHtcbiAgICAgICAgICAgIHRoaXMucmVzdEFwaURhdGFzZXQgPSBkYXRhLmNvbmZpZztcbiAgICAgICAgICB9IGVsc2UgaWYgKGRhdGEuZGF0YXNldFR5cGUgPT0gJ3BsYWluanNvbicpIHtcbiAgICAgICAgICAgIHRoaXMuanNvbkRhdGFzZXQgPSBkYXRhLmNvbmZpZztcbiAgICAgICAgICB9IGVsc2UgaWYgKGRhdGEuZGF0YXNldFR5cGUgPT0gJ3NxbFF1ZXJ5Jykge1xuICAgICAgICAgICAgdGhpcy5zcWxBcGlEYXRhc2V0ID0gZGF0YS5jb25maWc7XG4gICAgICAgICAgfVxuICAgICAgICB9LCBlcnJvcjogKGVycjogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nTW9kYWwgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcignVW5leHBlY3RlZCBTZXJ2ZXIgRXhjZXB0aW9uLiBQbGVhc2UgY29udGFjdCBTeXN0ZW0gQWRtaW4uJywgJ0RhdGFzZXQgQ3JlYXRpb24nKVxuICAgICAgICB9XG4gICAgICB9KVxuXG5cbiAgICAgIC8vIHRoaXMuc2VydmljZS5nZXRBcHBEYXRhc2V0Q29uZmlncygpLnN1YnNjcmliZSh7XG4gICAgICAvLyAgIG5leHQ6IChkYXRhOiBhbnkpID0+IHtcbiAgICAgIC8vICAgICBjb25zdCBmb3VuZE9iamVjdCA9IGRhdGEuZmluZChkYXRhc2V0ID0+IGRhdGFzZXQuZGF0YXNldElkID09PSBkYXRhc2V0SWQpO1xuICAgICAgLy8gICAgIHRoaXMubG9hZGluZ01vZGFsID0gZmFsc2U7XG4gICAgICAvLyAgICAgdGhpcy5jcmVhdERhdGFzZXRPYmplY3QgPSBmb3VuZE9iamVjdDtcbiAgICAgIC8vICAgICBpZiAoZm91bmRPYmplY3QuZGF0YXNldFR5cGUgPT0gJ21vbmdvJykge1xuICAgICAgLy8gICAgICAgdGhpcy5tb25nb0RhdGFzZXQgPSBmb3VuZE9iamVjdC5jb25maWdcbiAgICAgIC8vICAgICB9IGVsc2UgaWYgKGZvdW5kT2JqZWN0LmRhdGFzZXRUeXBlID09ICdxdWVyeWJ1aWxkZXInKSB7XG4gICAgICAvLyAgICAgICB0aGlzLnF1ZXJ5QnVsZGVyRGF0YXNldCA9IGZvdW5kT2JqZWN0LmNvbmZpZ1xuICAgICAgLy8gICAgIH0gZWxzZSBpZiAoZm91bmRPYmplY3QuZGF0YXNldFR5cGUgPT0gJ3NpbXBsZUFwaScpIHtcbiAgICAgIC8vICAgICAgIHRoaXMucmVzdEFwaURhdGFzZXQgPSBmb3VuZE9iamVjdC5jb25maWc7XG4gICAgICAvLyAgICAgfVxuICAgICAgLy8gICB9XG4gICAgICAvLyB9KVxuICAgIH1cblxuICB9XG5cblxuICBjcmVhdGVNb25nb1NlcnZpY2VEYXRhU2V0KGRhdGEpIHtcblxuICAgIHRoaXMuY3JlYXREYXRhc2V0T2JqZWN0Wydjb25maWcnXSA9IGRhdGE7XG4gICAgY29uc29sZS5sb2codGhpcy5jcmVhdERhdGFzZXRPYmplY3QpO1xuICAgIHRoaXMubG9hZGluZ01vZGFsID0gdHJ1ZTtcbiAgICBpZiAodGhpcy5pc0R1cGxpZGF0ZVZpZXcpIHtcblxuICAgICAgdGhpcy5jcmVhdGVOZURhdGFTZXRDb25maWcoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuY3JlYXREYXRhc2V0T2JqZWN0WydkYXRhc2V0SWQnXSkge1xuICAgICAgICB0aGlzLnVwZGF0YU5ld0RhdGFTZXRDb25naWcoKVxuXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNyZWF0ZU5lRGF0YVNldENvbmZpZygpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBjcmVhdGVRdWVyeUJ1aWxkZXJEYXRhU2V0KGRhdGEpIHtcblxuICAgIHRoaXMuY3JlYXREYXRhc2V0T2JqZWN0Wydjb25maWcnXSA9IGRhdGE7XG4gICAgY29uc29sZS5sb2codGhpcy5jcmVhdERhdGFzZXRPYmplY3QpO1xuICAgIHRoaXMubG9hZGluZ01vZGFsID0gdHJ1ZTtcbiAgICBpZiAodGhpcy5pc0R1cGxpZGF0ZVZpZXcpIHtcblxuICAgICAgdGhpcy5jcmVhdGVOZURhdGFTZXRDb25maWcoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuY3JlYXREYXRhc2V0T2JqZWN0WydkYXRhc2V0SWQnXSkge1xuICAgICAgICB0aGlzLnVwZGF0YU5ld0RhdGFTZXRDb25naWcoKVxuICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgncXVlcnlidWlsZGVyJylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY3JlYXRlTmVEYXRhU2V0Q29uZmlnKCk7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdxdWVyeWJ1aWxkZXInKVxuXG4gICAgICB9XG4gICAgfVxuICB9XG5cblxuICBjcmVhdGVTcWxRdWVyeUJ1aWxkZXJEYXRhU2V0KGRhdGEpIHtcblxuICAgIHRoaXMuY3JlYXREYXRhc2V0T2JqZWN0Wydjb25maWcnXSA9IGRhdGE7XG4gICAgY29uc29sZS5sb2codGhpcy5jcmVhdERhdGFzZXRPYmplY3QpO1xuICAgIHRoaXMubG9hZGluZ01vZGFsID0gdHJ1ZTtcbiAgICBpZiAodGhpcy5pc0R1cGxpZGF0ZVZpZXcpIHtcblxuICAgICAgdGhpcy5jcmVhdGVOZURhdGFTZXRDb25maWcoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuY3JlYXREYXRhc2V0T2JqZWN0WydkYXRhc2V0SWQnXSkge1xuICAgICAgICB0aGlzLnVwZGF0YU5ld0RhdGFTZXRDb25naWcoKVxuICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgncXVlcnlidWlsZGVyJylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY3JlYXRlTmVEYXRhU2V0Q29uZmlnKCk7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdxdWVyeWJ1aWxkZXInKVxuXG4gICAgICB9XG4gICAgfVxuXG4gIH1cblxuXG5cbiAgY3JlYXRlUmVzdEFwaURhdGFTZXQoZGF0YSkge1xuICAgIHRoaXMuY3JlYXREYXRhc2V0T2JqZWN0Wydjb25maWcnXSA9IGRhdGE7XG4gICAgY29uc29sZS5sb2codGhpcy5jcmVhdERhdGFzZXRPYmplY3QpO1xuICAgIHRoaXMubG9hZGluZ01vZGFsID0gdHJ1ZTtcblxuICAgIGlmICh0aGlzLmlzRHVwbGlkYXRlVmlldykge1xuICAgICAgdGhpcy5jcmVhdGVOZURhdGFTZXRDb25maWcoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuY3JlYXREYXRhc2V0T2JqZWN0WydkYXRhc2V0SWQnXSkge1xuICAgICAgICB0aGlzLnVwZGF0YU5ld0RhdGFTZXRDb25naWcoKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jcmVhdGVOZURhdGFTZXRDb25maWcoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgfVxuXG5cbiAgY3JlYXRlTmVEYXRhU2V0Q29uZmlnKCkge1xuICAgIHRoaXMuc2VydmljZS5jcmVhdGVBcHBEYXRhc2V0KHRoaXMuY3JlYXREYXRhc2V0T2JqZWN0KS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICAvLyB0aGlzLmlzTmV3RGF0YVNldENyZWF0ZVZpZXcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pc0R1cGxpZGF0ZVZpZXcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5sb2FkaW5nTW9kYWwgPSBmYWxzZTtcbiAgICAgICAgdGhpcy50b2FzdHIuc3VjY2VzcygnRGF0YXNldCBDcmVhdGVkIFN1Y2Nlc3NmdWxseScpXG4gICAgICAgIC8vIGlmICh0aGlzLmlzSGVhZGVyKSB7XG4gICAgICAgIC8vICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydhcHBzL2NvbnRyb2xQYW5lbC9hcHBsaWNhdGlvbkRhdGFzZXQvJ10pXG4gICAgICAgIC8vIH1cblxuICAgICAgfSwgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcignVW5leHBlY3RlZCBTZXJ2ZXIgRXhjZXB0aW9uLiBQbGVhc2UgY29udGFjdCBTeXN0ZW0gQWRtaW4uJywgJ0RhdGFzZXQgQ3JlYXRpb24nKVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICB1cGRhdGFOZXdEYXRhU2V0Q29uZ2lnKCkge1xuICAgIHRoaXMuc2VydmljZS51cGRhdGVBcHBEYXRhc2V0Q29uZmlnKHRoaXMuY3JlYXREYXRhc2V0T2JqZWN0KS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICAvLyB0aGlzLmlzTmV3RGF0YVNldENyZWF0ZVZpZXcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5sb2FkaW5nTW9kYWwgPSBmYWxzZTtcbiAgICAgICAgdGhpcy50b2FzdHIuc3VjY2VzcygnRGF0YXNldCBVcGRhdGVkIFN1Y2Nlc3NmdWxseScpXG4gICAgICAgIC8vIGlmICh0aGlzLmlzSGVhZGVyKSB7XG4gICAgICAgIC8vICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydhcHBzL2NvbnRyb2xQYW5lbC9hcHBsaWNhdGlvbkRhdGFzZXQvJ10pXG4gICAgICAgIC8vIH1cbiAgICAgIH0sIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoJ1VuZXhwZWN0ZWQgU2VydmVyIEV4Y2VwdGlvbi4gUGxlYXNlIGNvbnRhY3QgU3lzdGVtIEFkbWluLicsICdEYXRhc2V0IENyZWF0aW9uJylcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgZ290b0FsbERhdGFzZXRzKCkge1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnYXBwcy9jb250cm9sUGFuZWwvYXBwbGljYXRpb25EYXRhc2V0LyddKVxuICB9XG5cblxuICBjcmVhdGVEYXRhU2V0V2l0aEpzb24oZGF0YSkge1xuICAgIHRoaXMuY3JlYXREYXRhc2V0T2JqZWN0Wydjb25maWcnXSA9IGRhdGE7XG4gICAgY29uc29sZS5sb2codGhpcy5jcmVhdERhdGFzZXRPYmplY3QpO1xuICAgIGlmICh0aGlzLmlzRHVwbGlkYXRlVmlldykge1xuICAgICAgdGhpcy5jcmVhdGVOZURhdGFTZXRDb25maWcoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuY3JlYXREYXRhc2V0T2JqZWN0WydkYXRhc2V0SWQnXSkge1xuICAgICAgICB0aGlzLnVwZGF0YU5ld0RhdGFTZXRDb25naWcoKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jcmVhdGVOZURhdGFTZXRDb25maWcoKTtcbiAgICAgIH1cbiAgICB9XG5cblxuXG4gIH1cblxufVxuIiwiPGFwcC1sb2FkaW5nICpuZ0lmPVwibG9hZGluZ01vZGFsXCI+PC9hcHAtbG9hZGluZz5cblxuPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZmxleC1hdXRvIG1pbi13LTBcIj5cblxuICAgIDxsaWItY29tbW9uLWhlYWRlciBbcGFnZVRpdGxlXT1cIidEYXRhc2V0IEVkaXRvcidcIiAqbmdJZj1cImlzSGVhZGVyXCI+PC9saWItY29tbW9uLWhlYWRlcj5cblxuXG4gICAgPGRpdiBjbGFzcz1cInAtMiB3LWZ1bGxcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm0tMyBwLTQgYmctd2hpdGUgYm9yZGVyIGJvcmRlci1ncmF5LTIwMCByb3VuZGVkLWxnIHNoYWRvdy1tZCBkYXJrOmJnLWdyYXktODAwIGRhcms6Ym9yZGVyLWdyYXktNzAwXCI+XG4gICAgICAgICAgICA8aDZcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm1iLTIgZm9udC1ib2xkIHRleHQtbGcgdHJhY2tpbmctdGlnaHQgdGV4dC1ncmF5LTkwMCBkYXJrOnRleHQtd2hpdGUgYm9yZGVyLWIgcGItMyBmbGV4IGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdGFibGUgbXItMlwiPjwvaT4gRGF0YXNldCBFZGl0b3JcblxuICAgICAgICAgICAgPC9oNj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IG15LTRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXgtMiB3LTEvM1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+RGF0YXNldCBOYW1lPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBbKG5nTW9kZWwpXT1cImNyZWF0RGF0YXNldE9iamVjdC5kYXRhc2V0TmFtZVwiPjwvZHgtdGV4dC1ib3g+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm14LTIgdy0xLzNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiPlNlbGVjdCBEYXRhc2V0IFR5cGU8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGR4LXNlbGVjdC1ib3ggW2l0ZW1zXT1cImRhdGFTZXRUeXBlQ29udGFpbmVyXCIgZGlzcGxheUV4cHI9XCJuYW1lXCIgdmFsdWVFeHByPVwidmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjcmVhdERhdGFzZXRPYmplY3QuZGF0YXNldFR5cGVcIj48L2R4LXNlbGVjdC1ib3g+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLTUgYm9yZGVyXCI+XG4gICAgICAgICAgICAgICAgPGFwcC1kYXRhc2V0LW1vbmdvICpuZ0lmPVwiY3JlYXREYXRhc2V0T2JqZWN0LmRhdGFzZXRUeXBlID09ICdtb25nbydcIiBbbW9uZ29EYXRhc2V0XT1cIm1vbmdvRGF0YXNldFwiXG4gICAgICAgICAgICAgICAgICAgIChnZXRNb25nb1NlcnZpY2VEYXRhU2V0KT1cImNyZWF0ZU1vbmdvU2VydmljZURhdGFTZXQoJGV2ZW50KVwiPjwvYXBwLWRhdGFzZXQtbW9uZ28+XG5cbiAgICAgICAgICAgICAgICA8YXBwLWRhdGFzZXQtcmVzdC1hcGkgKm5nSWY9XCJjcmVhdERhdGFzZXRPYmplY3QuZGF0YXNldFR5cGUgPT0gJ3NpbXBsZUFwaSdcIlxuICAgICAgICAgICAgICAgICAgICBbcmVzdEFwaURhdGFzZXRdPVwicmVzdEFwaURhdGFzZXRcIlxuICAgICAgICAgICAgICAgICAgICAoZ2V0UmVzdEFwaUJ1bGJkZXJEYXRhU2V0KT1cImNyZWF0ZVJlc3RBcGlEYXRhU2V0KCRldmVudClcIj48L2FwcC1kYXRhc2V0LXJlc3QtYXBpPlxuXG4gICAgICAgICAgICAgICAgPGFwcC1kYXRhc2V0LXF1ZXJ5LWJ1bGRlciAqbmdJZj1cImNyZWF0RGF0YXNldE9iamVjdC5kYXRhc2V0VHlwZSA9PSAncXVlcnlidWlsZGVyJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtidWxkZXJEYXRhc2V0XT1cInF1ZXJ5QnVsZGVyRGF0YXNldFwiXG4gICAgICAgICAgICAgICAgICAgIChnZXRRdWVyeUJ1bGJkZXJEYXRhU2V0KT1cImNyZWF0ZVF1ZXJ5QnVpbGRlckRhdGFTZXQoJGV2ZW50KVwiPjwvYXBwLWRhdGFzZXQtcXVlcnktYnVsZGVyPlxuXG4gICAgICAgICAgICAgICAgPGFwcC1jcmVhdGUtZGF0YXNldC1zcWwgKm5nSWY9XCJjcmVhdERhdGFzZXRPYmplY3QuZGF0YXNldFR5cGUgPT0gJ3NxbFF1ZXJ5J1wiXG4gICAgICAgICAgICAgICAgICAgIFtzcWxCdWxkZXJEYXRhc2V0XT1cInNxbEFwaURhdGFzZXRcIlxuICAgICAgICAgICAgICAgICAgICAoZ2V0U3FsUXVlcnlCdWxiZGVyRGF0YVNldCk9XCJjcmVhdGVTcWxRdWVyeUJ1aWxkZXJEYXRhU2V0KCRldmVudClcIj48L2FwcC1jcmVhdGUtZGF0YXNldC1zcWw+XG5cbiAgICAgICAgICAgICAgICA8YXBwLWNyZWF0ZS1kYXRhc2V0LWpzb24gKm5nSWY9XCJjcmVhdERhdGFzZXRPYmplY3QuZGF0YXNldFR5cGUgPT0gJ3BsYWluanNvbidcIlxuICAgICAgICAgICAgICAgICAgICBbanNvbkRhdGFzZXRdPVwianNvbkRhdGFzZXRcIlxuICAgICAgICAgICAgICAgICAgICAoZ2V0SnNvbkRhdGFzZXQpPVwiY3JlYXRlRGF0YVNldFdpdGhKc29uKCRldmVudClcIj48L2FwcC1jcmVhdGUtZGF0YXNldC1qc29uPlxuICAgICAgICAgICAgPC9kaXY+XG5cblxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuXG48L2Rpdj4iXX0=
352
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWRhdGFzZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2FtbWEtYXBwLWNvbnRyb2xsZXIvc3JjL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL2FwcGxpY2F0aW9uLWRhdGFzZXQtY29tcG9uZW50L2NyZWF0ZS1kYXRhc2V0L2NyZWF0ZS1kYXRhc2V0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dhbW1hLWFwcC1jb250cm9sbGVyL3NyYy9saWIvYXBwbGljYXRpb24tY29udHJvbGxlci9hcHBsaWNhdGlvbi1kYXRhc2V0LWNvbXBvbmVudC9jcmVhdGUtZGF0YXNldC9jcmVhdGUtZGF0YXNldC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFXekQsTUFBTSxPQUFPLHNCQUFzQjtJQW9NakMsWUFDVSxPQUFrQyxFQUNsQyxNQUFxQixFQUN0QixhQUE0QixFQUMzQixNQUFjLEVBQ2QsY0FBOEI7UUFKOUIsWUFBTyxHQUFQLE9BQU8sQ0FBMkI7UUFDbEMsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUN0QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUMzQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBdk14QyxvQkFBZSxHQUFZLEtBQUssQ0FBQztRQUNqQyx1QkFBa0IsR0FBRztZQUNuQixhQUFhLEVBQUUsRUFBRTtZQUNqQixhQUFhLEVBQUUsRUFBRTtTQUNsQixDQUFDO1FBRUYseUJBQW9CLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxL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SUFBSSxDQUFDLGVBQWUsRUFBRTtZQUN4QixJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztTQUM5QjthQUFNO1lBQ0wsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLEVBQUU7Z0JBQ3hDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFBO2FBQzlCO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO2FBQzlCO1NBQ0Y7SUFJSCxDQUFDOzttSEE3WFUsc0JBQXNCO3VHQUF0QixzQkFBc0Isb0lDWG5DLCtqRkFtRE07MkZEeENPLHNCQUFzQjtrQkFMbEMsU0FBUzsrQkFDRSxvQkFBb0I7ME5Bc0tyQixRQUFRO3NCQUFoQixLQUFLO2dCQUdGLGlCQUFpQjtzQkFEcEIsS0FBSzt1QkFBQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uQ29udGVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9hcHBsaWNhdGlvbi1jb250ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgVG9hc3RyU2VydmljZSB9IGZyb20gJ25neC10b2FzdHInO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBDb21tb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29tbW9uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWNyZWF0ZS1kYXRhc2V0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NyZWF0ZS1kYXRhc2V0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY3JlYXRlLWRhdGFzZXQuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBDcmVhdGVEYXRhc2V0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgbG9hZGluZ01vZGFsOiBib29sZWFuO1xuICBpc0R1cGxpZGF0ZVZpZXc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgY3JlYXREYXRhc2V0T2JqZWN0ID0ge1xuICAgIFwiZGF0YXNldE5hbWVcIjogXCJcIixcbiAgICBcImRhdGFzZXRUeXBlXCI6IFwiXCJcbiAgfTtcblxuICBkYXRhU2V0VHlwZUNvbnRhaW5lciA9IFt7IG5hbWU6IFwiUXVlcnkgQnVpbGRlclwiLCB2YWx1ZTogXCJxdWVyeWJ1aWxkZXJcIiB9LCB7IG5hbWU6IFwiU2VydmljZSBKU09OXCIsIHZhbHVlOiBcIm1vbmdvXCIgfSxcbiAgeyBuYW1lOiBcIlJlc3QgQVBJXCIsIHZhbHVlOiBcInNpbXBsZUFwaVwiIH0sIHsgbmFtZTogXCJTUUwgQnVpbGRlclwiLCB2YWx1ZTogXCJzcWxRdWVyeVwiIH0sIHsgbmFtZTogXCJQbGFpbiBKU09OXCIsIHZhbHVlOiBcInBsYWluanNvblwiIH1dXG4gIG1vbmdvRGF0YXNldCA9IHtcbiAgICBcImFwaVwiOiBcIi9rcGkvdHJlbmRzL25ldHdvcmsvZ2V0LW1ldHJpYy1kYXRhXCIsXG4gICAgXCJzZXJ2aWNlSWRcIjogXCJcIixcbiAgICBcImFwaVR5cGVcIjogXCJwb3N0XCIsXG4gICAgXCJmaWx0ZXJJdGVtc1wiOiBbXG4gICAgICB7XG4gICAgICAgIFwiYXBpTmFtZVwiOiBcInN0YXJ0RGF0ZVwiLFxuICAgICAgICBcImxhYmVsXCI6IFwiU3RhcnQgRGF0ZVwiLFxuICAgICAgICBcImZpbHRlclR5cGVcIjogXCJkYXRlXCIsXG4gICAgICAgIFwib3BlcmF0b3JOYW1lXCI6IFwiXCIsXG4gICAgICAgIFwiZGVmYXVsdEZpbHRlclR5cGVcIjogXCJkeW5hbWljXCIsXG4gICAgICAgIFwiZGVmYXVsdEZpbHRlclZhbHVlXCI6IFwiWVlZWS1NTS1ERFwiLFxuICAgICAgICBcIm1vbWVudEZ1bmN0aW9uXCI6IFwic3VidHJhY3RcIixcbiAgICAgICAgXCJtb21lbnRGb3JtYXRlXCI6IFwiMTUsZGF5c1wiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcImFwaU5hbWVcIjogXCJlbmREYXRlXCIsXG4gICAgICAgIFwibGFiZWxcIjogXCJFbmQgRGF0ZVwiLFxuICAgICAgICBcImZpbHRlclR5cGVcIjogXCJkYXRlXCIsXG4gICAgICAgIFwib3BlcmF0b3JOYW1lXCI6IFwiXCIsXG4gICAgICAgIFwiZGVmYXVsdEZpbHRlclR5cGVcIjogXCJkeW5hbWljXCIsXG4gICAgICAgIFwiZGVmYXVsdEZpbHRlclZhbHVlXCI6IFwiWVlZWS1NTS1ERFwiLFxuICAgICAgICBcIm1vbWVudEZ1bmN0aW9uXCI6IFwic3VidHJhY3RcIixcbiAgICAgICAgXCJtb21lbnRGb3JtYXRlXCI6IFwiMSxkYXlzXCJcbiAgICAgIH1cbiAgICBdLFxuICAgIFwiZml4T3BlcmF0aW9uTGV2bGVzXCI6IFtdXG4gIH1cblxuICBxdWVyeUJ1bGRlckRhdGFzZXQgPSB7XG4gICAgXCJhcGlcIjogXCIva3BpL2dlbmVyaWNBZ2dyZWdhdGVQYWdpbmF0ZWRLcGlTZXJ2aWNlUmVzcG9uc2VcIixcbiAgICBcImFwaVR5cGVcIjogXCJwb3N0XCIsXG4gICAgXCJzZXJ2aWNlSWRcIjogXCJcIixcbiAgICBcInF1ZXJ5Q29uZmlnXCI6IHtcbiAgICAgIFwibWFwZWRGaWx0ZXJzXCI6IFtcbiAgICAgICAge1xuICAgICAgICAgIFwibG9jYWxDb2x1bW5cIjogXCJzdGFydERhdGVcIixcbiAgICAgICAgICBcInNlcnZlckNvbHVtblwiOiBcInJlY29yZF9kYXRlXCIsXG4gICAgICAgICAgXCJvcGVyYXRvck5hbWVcIjogXCJndGVcIixcbiAgICAgICAgICBcImRlZmF1bHRWYWx1ZVwiOiBcIlwiLFxuICAgICAgICAgIFwiZGF0YVR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgXCJsb2NhbENvbHVtblwiOiBcImVuZERhdGVcIixcbiAgICAgICAgICBcInNlcnZlckNvbHVtblwiOiBcInJlY29yZF9kYXRlXCIsXG4gICAgICAgICAgXCJvcGVyYXRvck5hbWVcIjogXCJsdGVcIixcbiAgICAgICAgICBcImRlZmF1bHRWYWx1ZVwiOiBcIlwiLFxuICAgICAgICAgIFwiZGF0YVR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgXCJzb3J0ZXJzXCI6IFtcblxuICAgICAgXSxcbiAgICAgIFwicmVxRmllbGRzXCI6IFtcblxuICAgICAgXSxcbiAgICAgIFwibWVhc3VyZXNcIjogW1xuXG4gICAgICBdLFxuICAgICAgXCJmaWx0ZXJcIjogW1xuXG4gICAgICBdLFxuICAgICAgXCJoYXZpbmdzXCI6IFtdLFxuICAgICAgXCJjb21tb25Db25maWdcIjoge30sXG4gICAgICBcImNvbHVtbnNcIjogW1xuICAgICAgXVxuICAgIH1cbiAgfVxuXG4gIHJlc3RBcGlEYXRhc2V0ID0ge1xuICAgIFwiYXBpXCI6IFwiXCIsXG4gICAgXCJhcGlUeXBlXCI6IFwicG9zdFwiLFxuICAgIFwic2VydmljZUlkXCI6IFwiXCIsXG4gICAgXCJxdWVyeUNvbmZpZ1wiOiB7XG4gICAgICBcIm1hcGVkRmlsdGVyc1wiOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBcImxvY2FsQ29sdW1uXCI6IFwic3RhcnREYXRlXCIsXG4gICAgICAgICAgXCJzZXJ2ZXJDb2x1bW5cIjogXCJyZWNvcmREYXRlXCIsXG4gICAgICAgICAgXCJvcGVyYXRvck5hbWVcIjogXCJndGVcIixcbiAgICAgICAgICBcImRlZmF1bHRWYWx1ZVwiOiBcIlwiLFxuICAgICAgICAgIFwiZGF0YVR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgXCJsb2NhbENvbHVtblwiOiBcImVuZERhdGVcIixcbiAgICAgICAgICBcInNlcnZlckNvbHVtblwiOiBcInJlY29yZERhdGVcIixcbiAgICAgICAgICBcIm9wZXJhdG9yTmFtZVwiOiBcImx0ZVwiLFxuICAgICAgICAgIFwiZGVmYXVsdFZhbHVlXCI6IFwiXCIsXG4gICAgICAgICAgXCJkYXRhVHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9XG4gIH07XG4gIHNxbEFwaURhdGFzZXQgPSB7XG4gICAgXCJhcGlcIjogXCIva3BpL2dlbmVyaWNTcWxRdWVyeVJlc3BvbnNlXCIsXG4gICAgXCJhcGlUeXBlXCI6IFwicG9zdFwiLFxuICAgIFwic2VydmljZUlkXCI6IFwiXCIsXG4gICAgXCJxdWVyeUNvbmZpZ1wiOiB7XG4gICAgICBcInRlbXBsYXRlUXVlcnlcIjogXCJcIixcbiAgICAgIFwiZGF0YWJhc2VOYW1lXCI6IFwiXCIsXG4gICAgICBcImRiQ29uZmlnXCI6IFwiXCIsXG4gICAgICBcImVucmljaG1lbnRzXCI6IFtdLFxuICAgICAgXCJtYXBlZEZpbHRlcnNcIjogW1xuICAgICAgICB7XG4gICAgICAgICAgXCJsb2NhbENvbHVtblwiOiBcInN0YXJ0RGF0ZVwiLFxuICAgICAgICAgIFwic2VydmVyQ29sdW1uXCI6IFwicmVjb3JkX2RhdGVcIixcbiAgICAgICAgICBcIm9wZXJhdG9yTmFtZVwiOiBcImd0ZVwiLFxuICAgICAgICAgIFwiZGVmYXVsdFZhbHVlXCI6IFwiXCIsXG4gICAgICAgICAgXCJkYXRhVHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBcImxvY2FsQ29sdW1uXCI6IFwiZW5kRGF0ZVwiLFxuICAgICAgICAgIFwic2VydmVyQ29sdW1uXCI6IFwicmVjb3JkX2RhdGVcIixcbiAgICAgICAgICBcIm9wZXJhdG9yTmFtZVwiOiBcImx0ZVwiLFxuICAgICAgICAgIFwiZGVmYXVsdFZhbHVlXCI6IFwiXCIsXG4gICAgICAgICAgXCJkYXRhVHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBcImxvY2FsQ29sdW1uXCI6IFwibGltaXRcIixcbiAgICAgICAgICBcInNlcnZlckNvbHVtblwiOiBcImxpbWl0XCIsXG4gICAgICAgICAgXCJvcGVyYXRvck5hbWVcIjogXCJlcVwiLFxuICAgICAgICAgIFwiZGVmYXVsdFZhbHVlXCI6IFwiNTAwMFwiLFxuICAgICAgICAgIFwiZGF0YVR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAgICB9XG4gICAgICBdXG4gICAgfVxuICB9O1xuXG4gIGpzb25EYXRhc2V0ID0ge1xuICAgIFwiYXBpXCI6IFwiL2twaS1jb25maWcvZ2V0SnNvbkRhdGFzZXRQYXlsb2FkXCIsXG4gICAgXCJhcGlUeXBlXCI6IFwiZ2V0XCIsXG4gICAgXCJzZXJ2aWNlSWRcIjogXCJcIixcbiAgICBcInF1ZXJ5Q29uZmlnXCI6IHtcbiAgICAgIFwibWFwZWRGaWx0ZXJzXCI6IFtcbiAgICAgICAge1xuICAgICAgICAgIFwibG9jYWxDb2x1bW5cIjogXCJzdGFydERhdGVcIixcbiAgICAgICAgICBcInNlcnZlckNvbHVtblwiOiBcInJlY29yZERhdGVcIixcbiAgICAgICAgICBcIm9wZXJhdG9yTmFtZVwiOiBcImd0ZVwiLFxuICAgICAgICAgIFwiZGVmYXVsdFZhbHVlXCI6IFwiXCIsXG4gICAgICAgICAgXCJkYXRhVHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBcImxvY2FsQ29sdW1uXCI6IFwiZW5kRGF0ZVwiLFxuICAgICAgICAgIFwic2VydmVyQ29sdW1uXCI6IFwicmVjb3JkRGF0ZVwiLFxuICAgICAgICAgIFwib3BlcmF0b3JOYW1lXCI6IFwibHRlXCIsXG4gICAgICAgICAgXCJkZWZhdWx0VmFsdWVcIjogXCJcIixcbiAgICAgICAgICBcImRhdGFUeXBlXCI6IFwic3RyaW5nXCJcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH1cbiAgfVxuXG4gIGlucHV0RGF0YXNldElEOiBhbnk7XG4gIEBJbnB1dCgpIGlzSGVhZGVyOiBib29sZWFuID0gdHJ1ZTtcblxuICBASW5wdXQoJ3NlbGVjdGVkRGF0YXNldElkJylcbiAgc2V0IHNlbGVjdGVkRGF0YXNldElkKHZhbHVlKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLmlucHV0RGF0YXNldElEID0gdmFsdWVcbiAgICAgIHRoaXMuc2VydmljZS5nZXRBcHBEYXRhc2V0Q29uZmlnKHZhbHVlKS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAoZGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nTW9kYWwgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmNyZWF0RGF0YXNldE9iamVjdCA9IGRhdGE7XG4gICAgICAgICAgaWYgKGRhdGEuZGF0YXNldFR5cGUgPT0gJ21vbmdvJykge1xuICAgICAgICAgICAgdGhpcy5tb25nb0RhdGFzZXQgPSBkYXRhLmNvbmZpZ1xuICAgICAgICAgIH0gZWxzZSBpZiAoZGF0YS5kYXRhc2V0VHlwZSA9PSAncXVlcnlidWlsZGVyJykge1xuICAgICAgICAgICAgdGhpcy5xdWVyeUJ1bGRlckRhdGFzZXQgPSBkYXRhLmNvbmZpZ1xuICAgICAgICAgIH0gZWxzZSBpZiAoZGF0YS5kYXRhc2V0VHlwZSA9PSAnc2ltcGxlQXBpJykge1xuICAgICAgICAgICAgdGhpcy5yZXN0QXBpRGF0YXNldCA9IGRhdGEuY29uZmlnO1xuICAgICAgICAgIH0gZWxzZSBpZiAoZGF0YS5kYXRhc2V0VHlwZSA9PSAnc3FsUXVlcnknKSB7XG4gICAgICAgICAgICB0aGlzLnNxbEFwaURhdGFzZXQgPSBkYXRhLmNvbmZpZztcbiAgICAgICAgICB9IGVsc2UgaWYgKGRhdGEuZGF0YXNldFR5cGUgPT0gJ3BsYWluanNvbicpIHtcbiAgICAgICAgICAgIHRoaXMuanNvbkRhdGFzZXQgPSBkYXRhLmNvbmZpZztcbiAgICAgICAgICB9XG4gICAgICAgIH0sIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLmxvYWRpbmdNb2RhbCA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMudG9hc3RyLmVycm9yKCdVbmV4cGVjdGVkIFNlcnZlciBFeGNlcHRpb24uIFBsZWFzZSBjb250YWN0IFN5c3RlbSBBZG1pbi4nLCAnRGF0YXNldCBDcmVhdGlvbicpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfSBlbHNlIHtcblxuXG4gICAgfVxuXG5cbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc2VydmljZTogQXBwbGljYXRpb25Db250ZW50U2VydmljZSxcbiAgICBwcml2YXRlIHRvYXN0cjogVG9hc3RyU2VydmljZSxcbiAgICBwdWJsaWMgY29tbW9uU2VydmljZTogQ29tbW9uU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlXG4gICkgeyB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgbGV0IGRhdGFzZXRJZCA9IHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QucXVlcnlQYXJhbXNbJ2RhdGFzZXRJZCddO1xuICAgIGxldCBjb250ZW50VHlwZSA9IHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QucXVlcnlQYXJhbXNbJ2NvbnRlbnRUeXBlJ107XG4gICAgaWYgKGNvbnRlbnRUeXBlID09IFwiY2xvbmVcIikge1xuICAgICAgdGhpcy5pc0R1cGxpZGF0ZVZpZXcgPSB0cnVlO1xuICAgIH1cbiAgICBpZiAoZGF0YXNldElkKSB7XG4gICAgICB0aGlzLmxvYWRpbmdNb2RhbCA9IHRydWU7XG5cbiAgICAgIHRoaXMuc2VydmljZS5nZXRBcHBEYXRhc2V0Q29uZmlnKGRhdGFzZXRJZCkuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMubG9hZGluZ01vZGFsID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5jcmVhdERhdGFzZXRPYmplY3QgPSBkYXRhO1xuICAgICAgICAgIGlmIChkYXRhLmRhdGFzZXRUeXBlID09ICdtb25nbycpIHtcbiAgICAgICAgICAgIHRoaXMubW9uZ29EYXRhc2V0ID0gZGF0YS5jb25maWdcbiAgICAgICAgICB9IGVsc2UgaWYgKGRhdGEuZGF0YXNldFR5cGUgPT0gJ3F1ZXJ5YnVpbGRlcicpIHtcbiAgICAgICAgICAgIHRoaXMucXVlcnlCdWxkZXJEYXRhc2V0ID0gZGF0YS5jb25maWdcbiAgICAgICAgICB9IGVsc2UgaWYgKGRhdGEuZGF0YXNldFR5cGUgPT0gJ3NpbXBsZUFwaScpIHtcbiAgICAgICAgICAgIHRoaXMucmVzdEFwaURhdGFzZXQgPSBkYXRhLmNvbmZpZztcbiAgICAgICAgICB9IGVsc2UgaWYgKGRhdGEuZGF0YXNldFR5cGUgPT0gJ3BsYWluanNvbicpIHtcbiAgICAgICAgICAgIHRoaXMuanNvbkRhdGFzZXQgPSBkYXRhLmNvbmZpZztcbiAgICAgICAgICB9IGVsc2UgaWYgKGRhdGEuZGF0YXNldFR5cGUgPT0gJ3NxbFF1ZXJ5Jykge1xuICAgICAgICAgICAgdGhpcy5zcWxBcGlEYXRhc2V0ID0gZGF0YS5jb25maWc7XG4gICAgICAgICAgfVxuICAgICAgICB9LCBlcnJvcjogKGVycjogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nTW9kYWwgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcignVW5leHBlY3RlZCBTZXJ2ZXIgRXhjZXB0aW9uLiBQbGVhc2UgY29udGFjdCBTeXN0ZW0gQWRtaW4uJywgJ0RhdGFzZXQgQ3JlYXRpb24nKVxuICAgICAgICB9XG4gICAgICB9KVxuXG5cbiAgICAgIC8vIHRoaXMuc2VydmljZS5nZXRBcHBEYXRhc2V0Q29uZmlncygpLnN1YnNjcmliZSh7XG4gICAgICAvLyAgIG5leHQ6IChkYXRhOiBhbnkpID0+IHtcbiAgICAgIC8vICAgICBjb25zdCBmb3VuZE9iamVjdCA9IGRhdGEuZmluZChkYXRhc2V0ID0+IGRhdGFzZXQuZGF0YXNldElkID09PSBkYXRhc2V0SWQpO1xuICAgICAgLy8gICAgIHRoaXMubG9hZGluZ01vZGFsID0gZmFsc2U7XG4gICAgICAvLyAgICAgdGhpcy5jcmVhdERhdGFzZXRPYmplY3QgPSBmb3VuZE9iamVjdDtcbiAgICAgIC8vICAgICBpZiAoZm91bmRPYmplY3QuZGF0YXNldFR5cGUgPT0gJ21vbmdvJykge1xuICAgICAgLy8gICAgICAgdGhpcy5tb25nb0RhdGFzZXQgPSBmb3VuZE9iamVjdC5jb25maWdcbiAgICAgIC8vICAgICB9IGVsc2UgaWYgKGZvdW5kT2JqZWN0LmRhdGFzZXRUeXBlID09ICdxdWVyeWJ1aWxkZXInKSB7XG4gICAgICAvLyAgICAgICB0aGlzLnF1ZXJ5QnVsZGVyRGF0YXNldCA9IGZvdW5kT2JqZWN0LmNvbmZpZ1xuICAgICAgLy8gICAgIH0gZWxzZSBpZiAoZm91bmRPYmplY3QuZGF0YXNldFR5cGUgPT0gJ3NpbXBsZUFwaScpIHtcbiAgICAgIC8vICAgICAgIHRoaXMucmVzdEFwaURhdGFzZXQgPSBmb3VuZE9iamVjdC5jb25maWc7XG4gICAgICAvLyAgICAgfVxuICAgICAgLy8gICB9XG4gICAgICAvLyB9KVxuICAgIH1cblxuICB9XG5cblxuICBjcmVhdGVNb25nb1NlcnZpY2VEYXRhU2V0KGRhdGEpIHtcblxuICAgIHRoaXMuY3JlYXREYXRhc2V0T2JqZWN0Wydjb25maWcnXSA9IGRhdGE7XG4gICAgY29uc29sZS5sb2codGhpcy5jcmVhdERhdGFzZXRPYmplY3QpO1xuICAgIHRoaXMubG9hZGluZ01vZGFsID0gdHJ1ZTtcbiAgICBpZiAodGhpcy5pc0R1cGxpZGF0ZVZpZXcpIHtcblxuICAgICAgdGhpcy5jcmVhdGVOZURhdGFTZXRDb25maWcoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuY3JlYXREYXRhc2V0T2JqZWN0WydkYXRhc2V0SWQnXSkge1xuICAgICAgICB0aGlzLnVwZGF0YU5ld0RhdGFTZXRDb25naWcoKVxuXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNyZWF0ZU5lRGF0YVNldENvbmZpZygpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBjcmVhdGVRdWVyeUJ1aWxkZXJEYXRhU2V0KGRhdGEpIHtcblxuICAgIHRoaXMuY3JlYXREYXRhc2V0T2JqZWN0Wydjb25maWcnXSA9IGRhdGE7XG4gICAgY29uc29sZS5sb2codGhpcy5jcmVhdERhdGFzZXRPYmplY3QpO1xuICAgIHRoaXMubG9hZGluZ01vZGFsID0gdHJ1ZTtcbiAgICBpZiAodGhpcy5pc0R1cGxpZGF0ZVZpZXcpIHtcblxuICAgICAgdGhpcy5jcmVhdGVOZURhdGFTZXRDb25maWcoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuY3JlYXREYXRhc2V0T2JqZWN0WydkYXRhc2V0SWQnXSkge1xuICAgICAgICB0aGlzLnVwZGF0YU5ld0RhdGFTZXRDb25naWcoKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jcmVhdGVOZURhdGFTZXRDb25maWcoKTtcblxuICAgICAgfVxuICAgIH1cbiAgfVxuXG5cbiAgY3JlYXRlU3FsUXVlcnlCdWlsZGVyRGF0YVNldChkYXRhKSB7XG5cbiAgICB0aGlzLmNyZWF0RGF0YXNldE9iamVjdFsnY29uZmlnJ10gPSBkYXRhO1xuICAgIGNvbnNvbGUubG9nKHRoaXMuY3JlYXREYXRhc2V0T2JqZWN0KTtcbiAgICB0aGlzLmxvYWRpbmdNb2RhbCA9IHRydWU7XG4gICAgaWYgKHRoaXMuaXNEdXBsaWRhdGVWaWV3KSB7XG5cbiAgICAgIHRoaXMuY3JlYXRlTmVEYXRhU2V0Q29uZmlnKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLmNyZWF0RGF0YXNldE9iamVjdFsnZGF0YXNldElkJ10pIHtcbiAgICAgICAgdGhpcy51cGRhdGFOZXdEYXRhU2V0Q29uZ2lnKClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY3JlYXRlTmVEYXRhU2V0Q29uZmlnKCk7XG5cbiAgICAgIH1cbiAgICB9XG5cbiAgfVxuXG5cblxuICBjcmVhdGVSZXN0QXBpRGF0YVNldChkYXRhKSB7XG4gICAgdGhpcy5jcmVhdERhdGFzZXRPYmplY3RbJ2NvbmZpZyddID0gZGF0YTtcbiAgICBjb25zb2xlLmxvZyh0aGlzLmNyZWF0RGF0YXNldE9iamVjdCk7XG4gICAgdGhpcy5sb2FkaW5nTW9kYWwgPSB0cnVlO1xuXG4gICAgaWYgKHRoaXMuaXNEdXBsaWRhdGVWaWV3KSB7XG4gICAgICB0aGlzLmNyZWF0ZU5lRGF0YVNldENvbmZpZygpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5jcmVhdERhdGFzZXRPYmplY3RbJ2RhdGFzZXRJZCddKSB7XG4gICAgICAgIHRoaXMudXBkYXRhTmV3RGF0YVNldENvbmdpZygpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNyZWF0ZU5lRGF0YVNldENvbmZpZygpO1xuICAgICAgfVxuICAgIH1cblxuICB9XG5cblxuICBjcmVhdGVOZURhdGFTZXRDb25maWcoKSB7XG4gICAgdGhpcy5zZXJ2aWNlLmNyZWF0ZUFwcERhdGFzZXQodGhpcy5jcmVhdERhdGFzZXRPYmplY3QpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoZGF0YTogYW55KSA9PiB7XG4gICAgICAgIC8vIHRoaXMuaXNOZXdEYXRhU2V0Q3JlYXRlVmlldyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlzRHVwbGlkYXRlVmlldyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmxvYWRpbmdNb2RhbCA9IGZhbHNlO1xuICAgICAgICB0aGlzLnRvYXN0ci5zdWNjZXNzKCdEYXRhc2V0IENyZWF0ZWQgU3VjY2Vzc2Z1bGx5JylcbiAgICAgICAgLy8gaWYgKHRoaXMuaXNIZWFkZXIpIHtcbiAgICAgICAgLy8gICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ2FwcHMvY29udHJvbFBhbmVsL2FwcGxpY2F0aW9uRGF0YXNldC8nXSlcbiAgICAgICAgLy8gfVxuXG4gICAgICB9LCBlcnJvcjogKGVycjogYW55KSA9PiB7XG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKCdVbmV4cGVjdGVkIFNlcnZlciBFeGNlcHRpb24uIFBsZWFzZSBjb250YWN0IFN5c3RlbSBBZG1pbi4nLCAnRGF0YXNldCBDcmVhdGlvbicpXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIHVwZGF0YU5ld0RhdGFTZXRDb25naWcoKSB7XG4gICAgdGhpcy5zZXJ2aWNlLnVwZGF0ZUFwcERhdGFzZXRDb25maWcodGhpcy5jcmVhdERhdGFzZXRPYmplY3QpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoZGF0YTogYW55KSA9PiB7XG4gICAgICAgIC8vIHRoaXMuaXNOZXdEYXRhU2V0Q3JlYXRlVmlldyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmxvYWRpbmdNb2RhbCA9IGZhbHNlO1xuICAgICAgICB0aGlzLnRvYXN0ci5zdWNjZXNzKCdEYXRhc2V0IFVwZGF0ZWQgU3VjY2Vzc2Z1bGx5JylcbiAgICAgICAgLy8gaWYgKHRoaXMuaXNIZWFkZXIpIHtcbiAgICAgICAgLy8gICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ2FwcHMvY29udHJvbFBhbmVsL2FwcGxpY2F0aW9uRGF0YXNldC8nXSlcbiAgICAgICAgLy8gfVxuICAgICAgfSwgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcignVW5leHBlY3RlZCBTZXJ2ZXIgRXhjZXB0aW9uLiBQbGVhc2UgY29udGFjdCBTeXN0ZW0gQWRtaW4uJywgJ0RhdGFzZXQgQ3JlYXRpb24nKVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBnb3RvQWxsRGF0YXNldHMoKSB7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydhcHBzL2NvbnRyb2xQYW5lbC9hcHBsaWNhdGlvbkRhdGFzZXQvJ10pXG4gIH1cblxuXG4gIGNyZWF0ZURhdGFTZXRXaXRoSnNvbihkYXRhKSB7XG4gICAgdGhpcy5jcmVhdERhdGFzZXRPYmplY3RbJ2NvbmZpZyddID0gZGF0YTtcbiAgICBjb25zb2xlLmxvZyh0aGlzLmNyZWF0RGF0YXNldE9iamVjdCk7XG4gICAgaWYgKHRoaXMuaXNEdXBsaWRhdGVWaWV3KSB7XG4gICAgICB0aGlzLmNyZWF0ZU5lRGF0YVNldENvbmZpZygpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5jcmVhdERhdGFzZXRPYmplY3RbJ2RhdGFzZXRJZCddKSB7XG4gICAgICAgIHRoaXMudXBkYXRhTmV3RGF0YVNldENvbmdpZygpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNyZWF0ZU5lRGF0YVNldENvbmZpZygpO1xuICAgICAgfVxuICAgIH1cblxuXG5cbiAgfVxuXG59XG4iLCI8YXBwLWxvYWRpbmcgKm5nSWY9XCJsb2FkaW5nTW9kYWxcIj48L2FwcC1sb2FkaW5nPlxuXG48ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBmbGV4LWF1dG8gbWluLXctMFwiPlxuXG4gICAgPGxpYi1jb21tb24taGVhZGVyIFtwYWdlVGl0bGVdPVwiJ0RhdGFzZXQgRWRpdG9yJ1wiICpuZ0lmPVwiaXNIZWFkZXJcIj48L2xpYi1jb21tb24taGVhZGVyPlxuXG5cbiAgICA8ZGl2IGNsYXNzPVwicC0yIHctZnVsbFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibS0zIHAtNCBiZy13aGl0ZSBib3JkZXIgYm9yZGVyLWdyYXktMjAwIHJvdW5kZWQtbGcgc2hhZG93LW1kIGRhcms6YmctZ3JheS04MDAgZGFyazpib3JkZXItZ3JheS03MDBcIj5cbiAgICAgICAgICAgIDxoNlxuICAgICAgICAgICAgICAgIGNsYXNzPVwibWItMiBmb250LWJvbGQgdGV4dC1sZyB0cmFja2luZy10aWdodCB0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC13aGl0ZSBib3JkZXItYiBwYi0zIGZsZXggaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS10YWJsZSBtci0yXCI+PC9pPiBEYXRhc2V0IEVkaXRvclxuXG4gICAgICAgICAgICA8L2g2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgbXktNFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteC0yIHctMS8zXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj5EYXRhc2V0IE5hbWU8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IFsobmdNb2RlbCldPVwiY3JlYXREYXRhc2V0T2JqZWN0LmRhdGFzZXROYW1lXCI+PC9keC10ZXh0LWJveD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXgtMiB3LTEvM1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+U2VsZWN0IERhdGFzZXQgVHlwZTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZHgtc2VsZWN0LWJveCBbaXRlbXNdPVwiZGF0YVNldFR5cGVDb250YWluZXJcIiBkaXNwbGF5RXhwcj1cIm5hbWVcIiB2YWx1ZUV4cHI9XCJ2YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNyZWF0RGF0YXNldE9iamVjdC5kYXRhc2V0VHlwZVwiPjwvZHgtc2VsZWN0LWJveD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tNSBib3JkZXJcIj5cbiAgICAgICAgICAgICAgICA8YXBwLWRhdGFzZXQtbW9uZ28gKm5nSWY9XCJjcmVhdERhdGFzZXRPYmplY3QuZGF0YXNldFR5cGUgPT0gJ21vbmdvJ1wiIFttb25nb0RhdGFzZXRdPVwibW9uZ29EYXRhc2V0XCJcbiAgICAgICAgICAgICAgICAgICAgKGdldE1vbmdvU2VydmljZURhdGFTZXQpPVwiY3JlYXRlTW9uZ29TZXJ2aWNlRGF0YVNldCgkZXZlbnQpXCI+PC9hcHAtZGF0YXNldC1tb25nbz5cblxuICAgICAgICAgICAgICAgIDxhcHAtZGF0YXNldC1yZXN0LWFwaSAqbmdJZj1cImNyZWF0RGF0YXNldE9iamVjdC5kYXRhc2V0VHlwZSA9PSAnc2ltcGxlQXBpJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtyZXN0QXBpRGF0YXNldF09XCJyZXN0QXBpRGF0YXNldFwiXG4gICAgICAgICAgICAgICAgICAgIChnZXRSZXN0QXBpQnVsYmRlckRhdGFTZXQpPVwiY3JlYXRlUmVzdEFwaURhdGFTZXQoJGV2ZW50KVwiPjwvYXBwLWRhdGFzZXQtcmVzdC1hcGk+XG5cbiAgICAgICAgICAgICAgICA8YXBwLWRhdGFzZXQtcXVlcnktYnVsZGVyICpuZ0lmPVwiY3JlYXREYXRhc2V0T2JqZWN0LmRhdGFzZXRUeXBlID09ICdxdWVyeWJ1aWxkZXInXCJcbiAgICAgICAgICAgICAgICAgICAgW2J1bGRlckRhdGFzZXRdPVwicXVlcnlCdWxkZXJEYXRhc2V0XCJcbiAgICAgICAgICAgICAgICAgICAgKGdldFF1ZXJ5QnVsYmRlckRhdGFTZXQpPVwiY3JlYXRlUXVlcnlCdWlsZGVyRGF0YVNldCgkZXZlbnQpXCI+PC9hcHAtZGF0YXNldC1xdWVyeS1idWxkZXI+XG5cbiAgICAgICAgICAgICAgICA8YXBwLWNyZWF0ZS1kYXRhc2V0LXNxbCAqbmdJZj1cImNyZWF0RGF0YXNldE9iamVjdC5kYXRhc2V0VHlwZSA9PSAnc3FsUXVlcnknXCJcbiAgICAgICAgICAgICAgICAgICAgW3NxbEJ1bGRlckRhdGFzZXRdPVwic3FsQXBpRGF0YXNldFwiXG4gICAgICAgICAgICAgICAgICAgIChnZXRTcWxRdWVyeUJ1bGJkZXJEYXRhU2V0KT1cImNyZWF0ZVNxbFF1ZXJ5QnVpbGRlckRhdGFTZXQoJGV2ZW50KVwiPjwvYXBwLWNyZWF0ZS1kYXRhc2V0LXNxbD5cblxuICAgICAgICAgICAgICAgIDxhcHAtY3JlYXRlLWRhdGFzZXQtanNvbiAqbmdJZj1cImNyZWF0RGF0YXNldE9iamVjdC5kYXRhc2V0VHlwZSA9PSAncGxhaW5qc29uJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtqc29uRGF0YXNldF09XCJqc29uRGF0YXNldFwiXG4gICAgICAgICAgICAgICAgICAgIChnZXRKc29uRGF0YXNldCk9XCJjcmVhdGVEYXRhU2V0V2l0aEpzb24oJGV2ZW50KVwiPjwvYXBwLWNyZWF0ZS1kYXRhc2V0LWpzb24+XG4gICAgICAgICAgICA8L2Rpdj5cblxuXG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG5cbjwvZGl2PiJdfQ==
@@ -220,13 +220,6 @@ export class DatasetQueryBulderComponent {
220
220
  });
221
221
  this.toastr.success('Columns Saved Successfully');
222
222
  }
223
- saveDataToStore() {
224
- const buildDate = localStorage.getItem('querybuilder');
225
- if (buildDate) {
226
- localStorage.removeItem(buildDate);
227
- }
228
- localStorage.setItem('querybuilder', JSON.stringify(this.queryBulderDataset));
229
- }
230
223
  transformColumnsForMesurs(inputColumns) {
231
224
  const measure = [];
232
225
  inputColumns.forEach(col => {
@@ -408,4 +401,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
408
401
  type: Input,
409
402
  args: ['bulderDataset']
410
403
  }] } });
411
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXNldC1xdWVyeS1idWxkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2FtbWEtYXBwLWNvbnRyb2xsZXIvc3JjL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL2FwcGxpY2F0aW9uLWRhdGFzZXQtY29tcG9uZW50L2RhdGFzZXQtcXVlcnktYnVsZGVyL2RhdGFzZXQtcXVlcnktYnVsZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dhbW1hLWFwcC1jb250cm9sbGVyL3NyYy9saWIvYXBwbGljYXRpb24tY29udHJvbGxlci9hcHBsaWNhdGlvbi1kYXRhc2V0LWNvbXBvbmVudC9kYXRhc2V0LXF1ZXJ5LWJ1bGRlci9kYXRhc2V0LXF1ZXJ5LWJ1bGRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7O0FBVS9FLE1BQU0sT0FBTywyQkFBMkI7SUEwRnRDLFlBQW1CLGFBQTRCLEVBQVUsTUFBcUIsRUFBVSxPQUFrQztRQUF2RyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUFVLFdBQU0sR0FBTixNQUFNLENBQWU7UUFBVSxZQUFPLEdBQVAsT0FBTyxDQUEyQjtRQXZGMUgsd0JBQW1CLEdBQVEsRUFBRSxDQUFDO1FBQzlCLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBQzdCLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBQzdCLHdCQUFtQixHQUFRLEVBQUUsQ0FBQztRQUM5QixpQkFBWSxHQUFRLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQTtRQUNyRixpQkFBWSxHQUFRLENBQUMs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LEtBQUs7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRvYXN0clNlcnZpY2UgfSBmcm9tICduZ3gtdG9hc3RyJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uQ29udGVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9hcHBsaWNhdGlvbi1jb250ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29tbW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2NvbW1vbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1kYXRhc2V0LXF1ZXJ5LWJ1bGRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRhc2V0LXF1ZXJ5LWJ1bGRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RhdGFzZXQtcXVlcnktYnVsZGVyLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRGF0YXNldFF1ZXJ5QnVsZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICAvLyBASW5wdXQoKSBxdWVyeUJ1bGRlckRhdGFzZXQ6IGFueTtcbiAgcmVxRmllbGRzRGF0YVNvdXJjZTogYW55ID0gW107XG4gIGlzcmVxRmllbGRzOiBib29sZWFuID0gZmFsc2U7XG4gIGlzY2RyUGFyYW1zOiBib29sZWFuID0gZmFsc2U7XG4gIGNkckZpZWxkc0RhdGFTb3VyY2U6IGFueSA9IFtdO1xuICBrcGlfZnVuY3Rpb246IGFueSA9IFtcInN1bVwiLCBcImNvdW50XCIsIFwiYXZnXCIsIFwibWF4XCIsIFwibWluXCIsIFwic3RkZGV2XCIsIFwiY291bnRfZGlzdGluY3RcIl1cbiAga3BpX29wZXJhdG9yOiBhbnkgPSBbXCJlcVwiLCBcImd0ZVwiLCBcImx0ZVwiLCBcIm5lXCIsIFwiaW5cIiwgXCJub3RJblwiLCBcImNvbnRhaW5zXCIsIFwic3RhcnRzV2l0aFwiLCBcImVuZHNXaXRoXCJdXG4gIGtwaV9lbnJpY2htZW50X25hbWU6IGFueSA9IFtdO1xuICByZXFTaG9ydERhdGFTb3VyY2U6IGFueSA9IFtdO1xuICBmaWx0ZXJNYXBpbmdEYXRhc291cmNlOiBhbnkgPSBbXTtcbiAgcXVlcnlfZGF0YTogYW55O1xuICBpc01vZGVsVmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuICBpc1NxbENvcGllZFRleHQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcXVlcnlCdWxkZXJEYXRhc2V0OiBhbnk7XG4gIGlzUmVjb25Db2x1bWU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQE91dHB1dCgpIHB1YmxpYyBnZXRRdWVyeUJ1bGJkZXJEYXRhU2V0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICByZWNvbkNvbHVtZURhdGFzb3VyY2UgPSBbXTtcblxuICBzZWxlY3RlZERhdGFTb3VyY2U6IGFueTtcbiAgaXNRdWVyeVR5cGVTZWxlY3Q6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoJ2J1bGRlckRhdGFzZXQnKVxuICBzZXQgYnVsZGVyRGF0YXNldCh2YWx1ZSkge1xuXG4gICAgaWYgKHZhbHVlLnF1ZXJ5Q29uZmlnLnJlcUZpZWxkcyAmJiB2YWx1ZS5xdWVyeUNvbmZpZy5yZXFGaWVsZHMubGVuZ3RoIDwgMikge1xuICAgICAgdGhpcy5yZXFGaWVsZHNEYXRhU291cmNlID0gW1xuICAgICAgICB7XG4gICAgICAgICAgXCJuYW1lXCI6IFwicGFnZU51bWJlclwiLFxuICAgICAgICAgIFwidmFsdWVcIjogMSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIFwibmFtZVwiOiBcInBhZ2VTaXplXCIsXG4gICAgICAgICAgXCJ2YWx1ZVwiOiAyMDEwLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgXCJuYW1lXCI6IFwiZGJDb25maWdcIixcbiAgICAgICAgICBcInZhbHVlXCI6IFwiXCIsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBcIm5hbWVcIjogXCJkYXRhYmFzZU5hbWVcIixcbiAgICAgICAgICBcInZhbHVlXCI6IFwiXCIsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBcIm5hbWVcIjogXCJ0YWJsZU5hbWVcIixcbiAgICAgICAgICBcInZhbHVlXCI6IFwiXCIsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBcIm5hbWVcIjogXCJwYWdpbmF0aW9uUmVxdWlyZWRcIixcbiAgICAgICAgICBcInZhbHVlXCI6IFwiZmFsc2VcIixcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlcUZpZWxkc0RhdGFTb3VyY2UgPSB0aGlzLnByb2Nlc3NQYXJhbXNmb3JtYXREYXRhKHZhbHVlLnF1ZXJ5Q29uZmlnLnJlcUZpZWxkcyk7XG4gICAgICB0aGlzLnNlbGVjdGVkRGF0YVNvdXJjZSA9IHZhbHVlLnF1ZXJ5Q29uZmlnLnJlcUZpZWxkcy5maW5kKGl0ZW0gPT4gaXRlbS5kYkNvbmZpZyAhPT0gdW5kZWZpbmVkKT8uZGJDb25maWc7XG4gICAgICB0aGlzLmlzUXVlcnlUeXBlU2VsZWN0ID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKHZhbHVlLnF1ZXJ5Q29uZmlnLm1hcGVkRmlsdGVycyA9PSB1bmRlZmluZWQpIHtcbiAgICAgIHZhbHVlLnF1ZXJ5Q29uZmlnLm1hcGVkRmlsdGVycyA9IFtdO1xuICAgICAgdmFsdWUucXVlcnlDb25maWcubWFwZWRGaWx0ZXJzLnB1c2goeyBcImxvY2FsQ29sdW1uXCI6IFwiXCIsIFwic2VydmVyQ29sdW1uXCI6IFwiXCIsIFwib3BlcmF0b3JOYW1lXCI6IFwiXCIsIFwiZGVmYXVsdFZhbHVlXCI6IFwiXCIsIFwiZGF0YVR5cGVcIjogXCJcIixcImZvcm1hdHRlclwiOlwiXCIgfSlcbiAgICB9XG5cbiAgICBpZiAodmFsdWUucXVlcnlDb25maWcuc29ydGVycyA9PSB1bmRlZmluZWQpIHtcbiAgICAgIHZhbHVlLnF1ZXJ5Q29uZmlnLnNvcnRlcnMgPSBbXTtcbiAgICAgIHZhbHVlLnF1ZXJ5Q29uZmlnLnNvcnRlcnMucHVzaCh7IFwiY29sdW1uTmFtZVwiOiBcIlwiLCBcImRlc2NlbmRpbmdcIjogZmFsc2UgfSlcbiAgICB9XG4gICAgaWYgKHZhbHVlLnF1ZXJ5Q29uZmlnLmNvbHVtbnMgPT0gdW5kZWZpbmVkKSB7XG4gICAgICB2YWx1ZS5xdWVyeUNvbmZpZy5jb2x1bW5zID0gW107XG4gICAgICBsZXQgb2JqID0ge1xuICAgICAgICBcIm1lYXN1cmVzXCI6IHRydWUsXG4gICAgICAgIFwiZGF0YUZpZWxkXCI6IFwiXCIsXG4gICAgICAgIFwiY29sdW1uTmFtZVwiOiBcIlwiLFxuICAgICAgICBcImZ1bmN0aW9uTmFtZVwiOiBcIlwiLFxuICAgICAgICBcImVucmljaEZ1bmN0aW9uXCI6IFwiXCIsXG4gICAgICAgIFwiYWR2YW5jZWRDb2x1bW5cIjogXCJcIixcbiAgICAgICAgXCJjYXB0aW9uXCI6IFwiXCIsXG4gICAgICB9XG4gICAgICB2YWx1ZS5xdWVyeUNvbmZpZy5jb2x1bW5zLnB1c2gob2JqKTtcbiAgICB9XG4gICAgaWYgKHZhbHVlLnF1ZXJ5Q29uZmlnLmhhdmluZ3MgPT0gdW5kZWZpbmVkKSB7XG4gICAgICB2YWx1ZS5xdWVyeUNvbmZpZy5oYXZpbmdzID0gW107XG4gICAgfVxuXG5cbiAgICB0aGlzLnF1ZXJ5QnVsZGVyRGF0YXNldCA9IHZhbHVlO1xuICB9XG5cblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgY29tbW9uU2VydmljZTogQ29tbW9uU2VydmljZSwgcHJpdmF0ZSB0b2FzdHI6IFRvYXN0clNlcnZpY2UsIHByaXZhdGUgc2VydmljZTogQXBwbGljYXRpb25Db250ZW50U2VydmljZSkgeyB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXJ2aWNlLmxpc3RDb2x1bW5FbnJpY2htZW50RnVuY3Rpb25zKCkuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgdGhpcy5rcGlfZW5yaWNobWVudF9uYW1lID0gZGF0YTtcbiAgICB9KVxuXG4gICAgdGhpcy5yZWNvbkNvbHVtZURhdGFzb3VyY2UgPSBbXG4gICAgICB7XG4gICAgICAgIFwiZGF0YUZpZWxkXCI6IFwiXCIsXG4gICAgICAgIFwiZW5yaWNoRnVuY3Rpb25cIjogXCJcIixcbiAgICAgICAgXCJjb2x1bWVPbmVcIjogXCJcIixcbiAgICAgICAgXCJjb2x1bWVUd29cIjogXCJcIixcbiAgICAgICAgXCJyZWNvblR5cGVcIjogXCJcIixcbiAgICAgICAgXCJjYXB0aW9uXCI6IFwiXCJcbiAgICAgIH1cbiAgICBdXG4gIH1cblxuICBwcm9jZXNzUGFyYW1zZm9ybWF0RGF0YShkYXRhKSB7XG4gICAgY29uc3QgZm9ybWF0dGVkX2RhdGEgPSBkYXRhLm1hcChpdGVtID0+IHtcbiAgICAgIGNvbnN0IFtuYW1lLCB2YWx1ZV0gPSBPYmplY3QuZW50cmllcyhpdGVtKVswXTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbmFtZSxcbiAgICAgICAgdmFsdWU6IG5hbWUgPT09ICdwYWdpbmF0aW9uUmVxdWlyZWQnID8gdmFsdWUudG9TdHJpbmcoKSA6IHZhbHVlXG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGZvcm1hdHRlZF9kYXRhO1xuICB9XG5cblxuXG4gIGFkZENvbHVtbnMoKSB7XG4gICAgbGV0IG9iaiA9IHtcbiAgICAgIFwibWVhc3VyZXNcIjogdHJ1ZSxcbiAgICAgIFwiZGF0YUZpZWxkXCI6IFwiXCIsXG4gICAgICBcImNvbHVtbk5hbWVcIjogXCJcIixcbiAgICAgIFwiZnVuY3Rpb25OYW1lXCI6IFwiXCIsXG4gICAgICBcImFkdmFuY2VkQ29sdW1uXCI6IFwiXCIsXG4gICAgICBcImVucmljaEZ1bmN0aW9uXCI6IFwiXCIsXG4gICAgICBcImNhcHRpb25cIjogXCJcIixcbiAgICB9XG4gICAgdGhpcy5xdWVyeUJ1bGRlckRhdGFzZXQucXVlcnlDb25maWcuY29sdW1ucy5wdXNoKG9iaik7XG4gIH1cblxuXG4gIGRlbGV0ZUNvbHVtbnMoaSkge1xuICAgIHRoaXMucXVlcnlCdWxkZXJEYXRhc2V0LnF1ZXJ5Q29uZmlnLmNvbHVtbnMuc3BsaWNlKGksIDEpXG4gIH1cblxuICBhZGRSZWNvbkNvbHVtZSgpIHtcbiAgICBsZXQgb2JqID0ge1xuICAgICAgXCJkYXRhRmllbGRcIjogXCJcIixcbiAgICAgIFwiY29sdW1lT25lXCI6IFwiXCIsXG4gICAgICBcImNvbHVtZVR3b1wiOiBcIlwiLFxuICAgICAgXCJlbnJpY2hGdW5jdGlvblwiOiBcIlwiLFxuICAgICAgXCJyZWNvblR5cGVcIjogXCJcIixcbiAgICAgIFwiY2FwdGlvblwiOiBcIlwiXG4gICAgfVxuICAgIHRoaXMucmVjb25Db2x1bWVEYXRhc291cmNlLnB1c2gob2JqKTtcbiAgfVxuXG4gIGRlbGV0ZVJlY29uQ29sdW1lKGkpIHtcbiAgICB0aGlzLnJlY29uQ29sdW1lRGF0YXNvdXJjZS5zcGxpY2UoaSwgMSlcbiAgfVxuXG4gIHNhdmVSZWNvbnNDb2x1bWUoKSB7XG4gICAgLy8geyAnJGRpdmlkZSc6IFt7ICckc3VidHJhY3QnOiBbJyRjYnNDb3VudCcsICckbXNjQ291bnQnXSB9LCAnJGNic0NvdW50J10gfVxuICAgIC8vIHsgJyRzdWJ0cmFjdCc6IFsnJGNic01vdScsICckbXNjTW91J10gfVxuXG4gICAgdGhpcy5yZWNvbkNvbHVtZURhdGFzb3VyY2UuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgIGlmIChlbGVtZW50LnJlY29uVHlwZSA9PSBcInZhcmlhbmNlXCIpIHtcbiAgICAgICAgbGV0IGNvbHVtZVN0cmluZyA9IFwieyckc3VidHJhY3QnOiBbJyRcIiArIGVsZW1lbnQuY29sdW1lT25lICsgXCInLCckXCIgKyBlbGVtZW50LmNvbHVtZVR3byArIFwiJ119XCI7XG4gICAgICAgIGxldCBub2RlID0ge1xuICAgICAgICAgIFwibWVhc3VyZXNcIjogdHJ1ZSxcbiAgICAgICAgICBcImRhdGFGaWVsZFwiOiBlbGVtZW50LmRhdGFGaWVsZCxcbiAgICAgICAgICBcImNvbHVtbk5hbWVcIjogZWxlbWVudC5kYXRhRmllbGQsXG4gICAgICAgICAgXCJmdW5jdGlvbk5hbWVcIjogXCJcIixcbiAgICAgICAgICBcImFkdmFuY2VkQ29sdW1uXCI6IGNvbHVtZVN0cmluZyxcbiAgICAgICAgICBcImVucmljaEZ1bmN0aW9uXCI6IGVsZW1lbnQuZW5yaWNoRnVuY3Rpb24sXG4gICAgICAgICAgXCJjYXB0aW9uXCI6IGVsZW1lbnQuY2FwdGlvbixcbiAgICAgICAgICAnZGVyaXZlRmllbGQnOiB0cnVlXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5xdWVyeUJ1bGRlckRhdGFzZXQucXVlcnlDb25maWcuY29sdW1ucy5wdXNoKG5vZGUpXG4gICAgICB9IGVsc2UgaWYgKGVsZW1lbnQucmVjb25UeXBlID09IFwicGVyY2VudGFnZVwiKSB7XG4gICAgICAgIC8vIGxldCBjb2x1bWVTdHJpbmcgPSBcInsnJGNvbmQnOiB7IGlmOiB7ICRlcTogWyAnJFwiICsgZWxlbWVudC5jb2x1bWVPbmUgKyBcIicsIDAgXSB9LCB0aGVuOiAwLCBlbHNlOiB7JyRkaXZpZGUnOlt7JyRzdWJ0cmFjdCc6IFsnJFwiICsgZWxlbWVudC5jb2x1bWVPbmUgKyBcIicsJyRcIiArIGVsZW1lbnQuY29sdW1lVHdvICsgXCInXX0sJyRcIiArIGVsZW1lbnQuY29sdW1lT25lICsgXCInXX0gfX1cIjtcbiAgICAgICAgXG4gICAgICAgIGxldCBjb2x1bWVTdHJpbmcgPSBgeyAnJGNvbmQnOiB7J2lmJzogeyckYW5kJzogW3sgJyRlcSc6IFsnJCR7ZWxlbWVudC5jb2x1bWVPbmV9JywgMF0gfSwgeyAnJGVxJzogWyckJHtlbGVtZW50LmNvbHVtZVR3b30nLCAwXSB9IF0gfSwgJ3RoZW4nOiAwLCAnZWxzZSc6IHsnJGRpdmlkZSc6IFxuICAgICAgICBbeyAnJGFicyc6IHsgJyRzdWJ0cmFjdCc6IFsnJCR7ZWxlbWVudC5jb2x1bWVPbmV9JywgJyQke2VsZW1lbnQuY29sdW1lVHdvfSddIH0gfSwgeyAnJG1heCc6IFsnJCR7ZWxlbWVudC5jb2x1bWVPbmV9JywgJyQke2VsZW1lbnQuY29sdW1lVHdvfSddIH0gXSB9IH0gfVxuYFxuICAgICAgICBcbiAgICAgICAgbGV0IG5vZGUgPSB7XG4gICAgICAgICAgXCJtZWFzdXJlc1wiOiB0cnVlLFxuICAgICAgICAgIFwiZGF0YUZpZWxkXCI6IGVsZW1lbnQuZGF0YUZpZWxkLFxuICAgICAgICAgIFwiY29sdW1uTmFtZVwiOiBlbGVtZW50LmRhdGFGaWVsZCxcbiAgICAgICAgICBcImZ1bmN0aW9uTmFtZVwiOiBcIlwiLFxuICAgICAgICAgIFwiYWR2YW5jZWRDb2x1bW5cIjogY29sdW1lU3RyaW5nLFxuICAgICAgICAgIFwiZW5yaWNoRnVuY3Rpb25cIjogZWxlbWVudC5lbnJpY2hGdW5jdGlvbixcbiAgICAgICAgICBcImNhcHRpb25cIjogZWxlbWVudC5jYXB0aW9uLFxuICAgICAgICAgICdkZXJpdmVGaWVsZCc6IHRydWVcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnF1ZXJ5QnVsZGVyRGF0YXNldC5xdWVyeUNvbmZpZy5jb2x1bW5zLnB1c2gobm9kZSlcbiAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC5yZWNvblR5cGUgPT0gXCJhYnNvbHV0ZVwiKSB7XG4gICAgICAgIGxldCBjb2x1bWVTdHJpbmcgPSBcInsnJGFicyc6IHsnJGNvbmQnOiB7IGlmOiB7ICRlcTogWyAnJFwiICsgZWxlbWVudC5jb2x1bWVPbmUgKyBcIicsIDAgXSB9LCB0aGVuOiAwLCBlbHNlOiB7JyRkaXZpZGUnOiBbeyckc3VidHJhY3QnOiBbJyRcIiArIGVsZW1lbnQuY29sdW1lT25lICsgXCInLCAnJFwiICsgZWxlbWVudC5jb2x1bWVUd28gKyBcIiddfSwgJyRcIiArIGVsZW1lbnQuY29sdW1lT25lICsgXCInXX19fX1cIjtcbiAgICAgICAgbGV0IG5vZGUgPSB7XG4gICAgICAgICAgXCJtZWFzdXJlc1wiOiB0cnVlLFxuICAgICAgICAgIFwiZGF0YUZpZWxkXCI6IGVsZW1lbnQuZGF0YUZpZWxkLFxuICAgICAgICAgIFwiY29sdW1uTmFtZVwiOiBlbGVtZW50LmRhdGFGaWVsZCxcbiAgICAgICAgICBcImZ1bmN0aW9uTmFtZVwiOiBcIlwiLFxuICAgICAgICAgIFwiYWR2YW5jZWRDb2x1bW5cIjogY29sdW1lU3RyaW5nLFxuICAgICAgICAgIFwiZW5yaWNoRnVuY3Rpb25cIjogZWxlbWVudC5lbnJpY2hGdW5jdGlvbixcbiAgICAgICAgICBcImNhcHRpb25cIjogZWxlbWVudC5jYXB0aW9uLFxuICAgICAgICAgICdkZXJpdmVGaWVsZCc6IHRydWVcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnF1ZXJ5QnVsZGVyRGF0YXNldC5xdWVyeUNvbmZpZy5jb2x1bW5zLnB1c2gobm9kZSlcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cblxuICBzYXZlQ29sdW1uc0FuZE1hc3VyZXMoKSB7XG4gICAgdGhpcy5xdWVyeUJ1bGRlckRhdGFzZXQucXVlcnlDb25maWcubWVhc3VyZXMgPSBbXTtcbiAgICB0aGlzLnF1ZXJ5QnVsZGVyRGF0YXNldC5xdWVyeUNvbmZpZy5kaW1lbnNpb25zID0gW107XG4gICAgdGhpcy5xdWVyeUJ1bGRlckRhdGFzZXQucXVlcnlDb25maWcuY29sdW1ucy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgLy8gQ2hlY2sgaWYgZWxlbWVudC5hZHZhbmNlZENvbHVtbiBpcyBhbiBlbXB0eSBzdHJpbmcgYW5kIHNldCBpdCB0byBudWxsXG4gICAgICBjb25zdCBhZHZhbmNlZENvbHVtblZhbHVlID0gZWxlbWVudC5hZHZhbmNlZENvbHVtbiA9PT0gXCJcIiA/IG51bGwgOiBlbGVtZW50LmFkdmFuY2VkQ29sdW1uO1xuXG4gICAgICBpZiAoZWxlbWVudC5tZWFzdXJlcykge1xuICAgICAgICBsZXQgb2JqID0ge1xuICAgICAgICAgIGNvbHVtbk5hbWU6IGVsZW1lbnQuY29sdW1uTmFtZSxcbiAgICAgICAgICBmdW5jdGlvbk5hbWU6IGVsZW1lbnQuZnVuY3Rpb25OYW1lLFxuICAgICAgICAgIGVucmljaEZ1bmN0aW9uOiBlbGVtZW50LmVucmljaEZ1bmN0aW9uLFxuICAgICAgICAgIGFkdmFuY2VkQ29sdW1uOiBhZHZhbmNlZENvbHVtblZhbHVlLFxuICAgICAgICAgIGFsaWFzTmFtZTogZWxlbWVudC5kYXRhRmllbGQsXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVsZW1lbnQuZGVyaXZlRmllbGQpIHtcbiAgICAgICAgICBvYmpbJ2Rlcml2ZUZpZWxkJ10gPSBlbGVtZW50LmRlcml2ZUZpZWxkXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5xdWVyeUJ1bGRlckRhdGFzZXQucXVlcnlDb25maWcubWVhc3VyZXMucHVzaChvYmopO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IG9iaiA9IHtcbiAgICAgICAgICBjb2x1bW5OYW1lOiBlbGVtZW50LmNvbHVtbk5hbWUsXG4gICAgICAgICAgZW5yaWNoRnVuY3Rpb246IGVsZW1lbnQuZW5yaWNoRnVuY3Rpb24sXG4gICAgICAgICAgYWxpYXNOYW1lOiBlbGVtZW50LmRhdGFGaWVsZCxcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnF1ZXJ5QnVsZGVyRGF0YXNldC5xdWVyeUNvbmZpZy5kaW1lbnNpb25zLnB1c2gob2JqKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLnRvYXN0ci5zdWNjZXNzKCdDb2x1bW5zIFNhdmVkIFN1Y2Nlc3NmdWxseScpO1xuICAgIC8vIHRoaXMuc2F2ZURhdGFUb1N0b3JlKClcbiAgfVxuXG4gIHNhdmVEYXRhVG9TdG9yZSgpIHtcbiAgICBjb25zdCBidWlsZERhdGUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgncXVlcnlidWlsZGVyJyk7XG4gICAgaWYgKGJ1aWxkRGF0ZSkge1xuICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oYnVpbGREYXRlKTtcbiAgICB9XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3F1ZXJ5YnVpbGRlcicsIEpTT04uc3RyaW5naWZ5KHRoaXMucXVlcnlCdWxkZXJEYXRhc2V0KSlcbiAgfVxuXG4gIHRyYW5zZm9ybUNvbHVtbnNGb3JNZXN1cnMoaW5wdXRDb2x1bW5zKSB7XG4gICAgY29uc3QgbWVhc3VyZSA9IFtdXG4gICAgaW5wdXRDb2x1bW5zLmZvckVhY2goY29sID0+IHtcblxuXG4gICAgfSk7XG5cbiAgICByZXR1cm4gbWVhc3VyZTtcbiAgfVxuXG5cbiAgYWRkRmlsdGVyKCkge1xuICAgIGxldCBvYmogPSB7XG4gICAgICBcInR5cGVcIjogXCJcIixcbiAgICAgIFwidmFsdWVcIjogXCJcIixcbiAgICAgIFwia2V5XCI6IFwiXCIsXG4gICAgICBcImRpc3BsYXlcIjogXCJcIixcbiAgICAgIFwicGxhY2Vob2xkZXJcIjogXCJcIlxuICAgIH1cbiAgICB0aGlzLnF1ZXJ5QnVsZGVyRGF0YXNldC5xdWVyeUNvbmZpZy5maWx0ZXIucHVzaChvYmopO1xuICB9XG5cbiAgZGVsZXRlRmlsdGVyKGkpIHtcbiAgICB0aGlzLnF1ZXJ5QnVsZGVyRGF0YXNldC5xdWVyeUNvbmZpZy5maWx0ZXIuc3BsaWNlKGksIDEpO1xuICB9XG4gIGFkZFBhcmFtcygpIHtcbiAgICBsZXQgb2JqID0ge1xuICAgICAgXCJuYW1lXCI6IFwiXCIsXG4gICAgICBcInZhbHVlXCI6IFwiXCIsXG4gICAgfVxuICAgIHRoaXMucmVxRmllbGRzRGF0YVNvdXJjZS5wdXNoKG9iaik7XG4gIH1cblxuXG4gIGRlbGV0ZVBhcmFtcyhpKSB7XG4gICAgdGhpcy5yZXFGaWVsZHNEYXRhU291cmNlLnNwbGljZShpLCAxKVxuICB9XG5cbiAgYWRkU2hvcnRDb2x1bW5zKCkge1xuICAgIHRoaXMucXVlcnlCdWxkZXJEYXRhc2V0LnF1ZXJ5Q29uZmlnLnNvcnRlcnMucHVzaCh7IFwiY29sdW1uTmFtZVwiOiBcIlwiLCBcImRlc2NlbmRpbmdcIjogZmFsc2UgfSlcbiAgfVxuXG5cbiAgZGVsZXRlU2hvcnRDb2x1bW5zKGkpIHtcbiAgICB0aGlzLnF1ZXJ5QnVsZGVyRGF0YXNldC5xdWVyeUNvbmZpZy5zb3J0ZXJzLnNwbGljZShpLCAxKVxuICB9XG5cbiAgc2F2ZVBhcmFtcygpIHtcbiAgICBsZXQgcGFnaW5hdGlvblJlcXVpcmVkRXhpc3RzID0gZmFsc2U7XG4gICAgdGhpcy5xdWVyeUJ1bGRlckRhdGFzZXQucXVlcnlDb25maWcucmVxRmllbGRzID0gdGhpcy5yZXFGaWVsZHNEYXRhU291cmNlLm1hcChpdGVtID0+IHtcbiAgICAgIGNvbnN0IG5ld09iajogYW55ID0ge307XG4gICAgICBpZiAoaXRlbS5uYW1lID09PSBcInBhZ2luYXRpb25SZXF1aXJlZFwiKSB7XG4gICAgICAgIHBhZ2luYXRpb25SZXF1aXJlZEV4aXN0cyA9IHRydWU7XG4gICAgICAgIG5ld09ialtpdGVtLm5hbWVdID0gaXRlbS52YWx1ZSA9PT0gXCJ0cnVlXCI7XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBpdGVtLnZhbHVlID09PSBcInN0cmluZ1wiICYmICFpc05hTihpdGVtLnZhbHVlIGFzIGFueSkgJiYgaXRlbS52YWx1ZS50cmltKCkgIT09IFwiXCIpIHtcbiAgICAgICAgbmV3T2JqW2l0ZW0ubmFtZV0gPSBOdW1iZXIoaXRlbS52YWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBuZXdPYmpbaXRlbS5uYW1lXSA9IGl0ZW0udmFsdWU7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBuZXdPYmo7XG4gICAgfSk7XG5cbiAgICBpZiAoIXBhZ2luYXRpb25SZXF1aXJlZEV4aXN0cykge1xuICAgICAgdGhpcy5xdWVyeUJ1bGRlckRhdGFzZXQucXVlcnlDb25maWcucmVxRmllbGRzLnB1c2goeyBwYWdpbmF0aW9uUmVxdWlyZWQ6IFwiZmFsc2VcIiB9KTtcbiAgICB9XG5cbiAgICAvLyB0aGlzLnNhdmVEYXRhVG9TdG9yZSgpO1xuICAgIHRoaXMudG9hc3RyLnN1Y2Nlc3MoJ1BhZ2luYXRpb24gUmVxdWVzdCBQYXJhbXMgU2F2ZWQgU3VjY2Vzc2Z1bGx5Jyk7XG4gIH1cblxuXG4gIGFkZEZpbHRlck1hcGluZ0NvbHVtbnMoKSB7XG4gICAgbGV0IG9iaiA9IHsgXCJsb2NhbENvbHVtblwiOiBcIlwiLCBcInNlcnZlckNvbHVtblwiOiBcIlwiLCBcIm9wZXJhdG9yTmFtZVwiOiBcIlwiLCBcImRlZmF1bHRWYWx1ZVwiOiBcIlwiLCBcImRhdGFUeXBlXCI6IFwiXCIsXCJmb3JtYXR0ZXJcIjpcIlwiIH1cbiAgICB0aGlzLnF1ZXJ5QnVsZGVyRGF0YXNldC5xdWVyeUNvbmZpZy5tYXBlZEZpbHRlcnMucHVzaChvYmopO1xuXG4gIH1cblxuICBkZWxldGVGaWx0ZXJNYXBpbmdDb2x1bW5zKGkpIHtcbiAgICB0aGlzLnF1ZXJ5QnVsZGVyRGF0YXNldC5xdWVyeUNvbmZpZy5tYXBlZEZpbHRlcnMuc3BsaWNlKGksIDEpXG4gIH1cblxuICBtb3ZlSXRlbUZvckNvbHVtbnMoaW5kZXg6IG51bWJlciwgZGlyZWN0aW9uOiAndXAnIHwgJ2Rvd24nKTogdm9pZCB7XG4gICAgLy8gUHJldmVudCBtb3ZpbmcgYmV5b25kIGFycmF5IGJvdW5kc1xuICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gdGhpcy5xdWVyeUJ1bGRlckRhdGFzZXQucXVlcnlDb25maWcubWFwZWRGaWx0ZXJzLmxlbmd0aCkgcmV0dXJuO1xuICAgIGNvbnN0IG5ld1Bvc2l0aW9uID0gZGlyZWN0aW9uID09PSAndXAnID8gaW5kZXggLSAxIDogaW5kZXggKyAxO1xuICAgIC8vIFByZXZlbnQgbW92aW5nIGJleW9uZCBhcnJheSBib3VuZHNcbiAgICBpZiAobmV3UG9zaXRpb24gPCAwIHx8IG5ld1Bvc2l0aW9uID49IHRoaXMucXVlcnlCdWxkZXJEYXRhc2V0LnF1ZXJ5Q29uZmlnLm1hcGVkRmlsdGVycy5sZW5ndGgpIHJldHVybjtcblxuICAgIC8vIE1vdmUgaXRlbVxuICAgIGNvbnN0IGl0ZW1Ub01vdmUgPSB0aGlzLnF1ZXJ5QnVsZGVyRGF0YXNldC5xdWVyeUNvbmZpZy5tYXBlZEZpbHRlcnNbaW5kZXhdO1xuICAgIHRoaXMucXVlcnlCdWxkZXJEYXRhc2V0LnF1ZXJ5Q29uZmlnLm1hcGVkRmlsdGVycy5zcGxpY2UoaW5kZXgsIDEpOyAvLyBSZW1vdmUgaXRlbSBmcm9tIGN1cnJlbnQgcG9zaXRpb25cbiAgICB0aGlzLnF1ZXJ5QnVsZGVyRGF0YXNldC5xdWVyeUNvbmZpZy5tYXBlZEZpbHRlcnMuc3BsaWNlKG5ld1Bvc2l0aW9uLCAwLCBpdGVtVG9Nb3ZlKTsgLy8gSW5zZXJ0IGl0ZW0gaW4gbmV3IHBvc2l0aW9uXG4gIH1cbiAgbW92ZUl0ZW1Gb3JNZWFzdXJlc0NvbHVtbnMoaW5kZXg6IG51bWJlciwgZGlyZWN0aW9uOiAndXAnIHwgJ2Rvd24nKTogdm9pZCB7XG4gICAgLy8gUHJldmVudCBtb3ZpbmcgYmV5b25kIGFycmF5IGJvdW5kc1xuICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gdGhpcy5xdWVyeUJ1bGRlckRhdGFzZXQucXVlcnlDb25maWcuY29sdW1ucy5sZW5ndGgpIHJldHVybjtcbiAgICBjb25zdCBuZXdQb3NpdGlvbiA9IGRpcmVjdGlvbiA9PT0gJ3VwJyA/IGluZGV4IC0gMSA6IGluZGV4ICsgMTtcbiAgICAvLyBQcmV2ZW50IG1vdmluZyBiZXlvbmQgYXJyYXkgYm91bmRzXG4gICAgaWYgKG5ld1Bvc2l0aW9uIDwgMCB8fCBuZXdQb3NpdGlvbiA+PSB0aGlzLnF1ZXJ5QnVsZGVyRGF0YXNldC5xdWVyeUNvbmZpZy5jb2x1bW5zLmxlbmd0aCkgcmV0dXJuO1xuXG4gICAgLy8gTW92ZSBpdGVtXG4gICAgY29uc3QgaXRlbVRvTW92ZSA9IHRoaXMucXVlcnlCdWxkZXJEYXRhc2V0LnF1ZXJ5Q29uZmlnLmNvbHVtbnNbaW5kZXhdO1xuICAgIHRoaXMucXVlcnlCdWxkZXJEYXRhc2V0LnF1ZXJ5Q29uZmlnLmNvbHVtbnMuc3BsaWNlKGluZGV4LCAxKTsgLy8gUmVtb3ZlIGl0ZW0gZnJvbSBjdXJyZW50IHBvc2l0aW9uXG4gICAgdGhpcy5xdWVyeUJ1bGRlckRhdGFzZXQucXVlcnlDb25maWcuY29sdW1ucy5zcGxpY2UobmV3UG9zaXRpb24sIDAsIGl0ZW1Ub01vdmUpOyAvLyBJbnNlcnQgaXRlbSBpbiBuZXcgcG9zaXRpb25cbiAgfVxuXG5cblxuXG4gIGNoZWNrRm9yUXVlcnkoKSB7XG4gICAgbGV0IHRyYW5zZm9ybWVkT2JqZWN0OiBhbnkgPSB7fTtcblxuICAgIGZvciAobGV0IGl0ZW0gb2YgdGhpcy5xdWVyeUJ1bGRlckRhdGFzZXQucXVlcnlDb25maWcucmVxRmllbGRzKSB7XG4gICAgICBjb25zdCBrZXkgPSBPYmplY3Qua2V5cyhpdGVtKVswXTtcbiAgICAgIGNvbnN0IHZhbHVlID0gT2JqZWN0LnZhbHVlcyhpdGVtKVswXTtcblxuICAgICAgaWYgKGtleSA9PT0gJ3N0YXJ0RGF0ZScpIHtcbiAgICAgICAgdHJhbnNmb3JtZWRPYmplY3QucmVjb3JkRGF0ZSA9IHZhbHVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdHJhbnNmb3JtZWRPYmplY3Rba2V5XSA9IHZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgICB0cmFuc2Zvcm1lZE9iamVjdFsnZGltZW5zaW9ucyddID0gdGhpcy5xdWVyeUJ1bGRlckRhdGFzZXQucXVlcnlDb25maWcuZGltZW5zaW9ucztcbiAgICB0cmFuc2Zvcm1lZE9iamVjdFsnbWVhc3VyZXMnXSA9IHRoaXMucXVlcnlCdWxkZXJEYXRhc2V0LnF1ZXJ5Q29uZmlnLm1lYXN1cmVzO1xuICAgIHRyYW5zZm9ybWVkT2JqZWN0WydmaWx0ZXJzJ10gPSB0aGlzLnRyYW5zZm9ybURhdGFGb3JNRmlsdGVyKHRoaXMucXVlcnlCdWxkZXJEYXRhc2V0LnF1ZXJ5Q29uZmlnLm1hcGVkRmlsdGVycyk7O1xuICAgIHRyYW5zZm9ybWVkT2JqZWN0Wydzb3J0ZXJzJ10gPSB0aGlzLnF1ZXJ5QnVsZGVyRGF0YXNldC5xdWVyeUNvbmZpZy5zb3J0ZXJzO1xuICAgIHRyYW5zZm9ybWVkT2JqZWN0W1wicGFnaW5hdGlvblJlcXVpcmVkXCJdID0gdHJ1ZTtcbiAgICBjb25zb2xlLmxvZyh0cmFuc2Zvcm1lZE9iamVjdCk7XG5cbiAgICB0aGlzLnNlcnZpY2UudmFsaWRhdGVBZ2dyZWdhdGVQYWdpbmF0ZWRRdWVyeSh0cmFuc2Zvcm1lZE9iamVjdCkuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgY29uc29sZS5sb2coZGF0YSk7XG4gICAgICB0aGlzLnF1ZXJ5X2RhdGEgPSBkYXRhLnF1ZXJ5XG4gICAgICB0aGlzLmlzTW9kZWxWaXNpYmxlID0gdHJ1ZTtcbiAgICB9LCBlcnIgPT4ge1xuICAgICAgdGhpcy50b2FzdHIuZXJyb3IoJ1VuZXhwZWN0ZWQgU2VydmVyIEV4Y2VwdGlvbi4gUGxlYXNlIGNvbnRhY3QgU3lzdGVtIEFkbWluLicpXG4gICAgfSlcbiAgfVxuXG4gIGNsb3NlTW9kYWxWaXNpYmxlTW9kYWwoKSB7XG4gICAgdGhpcy5pc01vZGVsVmlzaWJsZSA9IGZhbHNlO1xuICAgIHRoaXMucXVlcnlfZGF0YSA9ICcnO1xuICB9XG5cbiAgdHJhbnNmb3JtRGF0YUZvck1GaWx0ZXIobWFwZmlsdGVyKSB7XG4gICAgbGV0IHJlc3VsdCA9IFtdO1xuICAgIG1hcGZpbHRlci5mb3JFYWNoKG1hcHBpbmcgPT4ge1xuICAgICAgbGV0IHJlc3VsdE9iaiA9IHtcbiAgICAgICAgY29sdW1uTmFtZTogbWFwcGluZy5zZXJ2ZXJDb2x1bW4sXG4gICAgICAgIGRhdGFUeXBlOiBtYXBwaW5nLmRhdGFUeXBlLFxuICAgICAgICBmb3JtYXR0ZXI6IG1hcHBpbmcuZm9ybWF0dGVyLFxuICAgICAgICBvcGVyYXRvcjogbWFwcGluZy5vcGVyYXRvck5hbWUsXG4gICAgICAgIHZhbHVlOiBtYXBwaW5nLmRlZmF1bHRWYWx1ZVxuICAgICAgfTtcbiAgICAgIHJlc3VsdC5wdXNoKHJlc3VsdE9iaik7XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG5cbiAgY29weVNxbEZyb21Nb2RhbCgpIHtcbiAgICBjb25zdCBsaXN0ZW5lciA9IChlOiBDbGlwYm9hcmRFdmVudCkgPT4ge1xuICAgICAgZS5jbGlwYm9hcmREYXRhIS5zZXREYXRhKCd0ZXh0L3BsYWluJywgdGhpcy5xdWVyeV9kYXRhKTtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICB9O1xuICAgIHRoaXMuaXNTcWxDb3BpZWRUZXh0ID0gdHJ1ZTtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjb3B5JywgbGlzdGVuZXIpO1xuICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdjb3B5Jyk7XG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY29weScsIGxpc3RlbmVyKTtcbiAgfVxuXG4gIGNyZWF0ZURhdGFTZXQoKSB7XG4gICAgdGhpcy5nZXRRdWVyeUJ1bGJkZXJEYXRhU2V0LmVtaXQodGhpcy5xdWVyeUJ1bGRlckRhdGFzZXQpXG4gIH1cblxuICBnZXRRdWVyeUZvckRldGFpbHNEYXRhKGUpIHtcbiAgICBpZiAoZS52YWx1ZSA9PSAnQmFzaWMnKSB7XG4gICAgICB0aGlzLnF1ZXJ5QnVsZGVyRGF0YXNldC5hcGkgPSAnL2twaS9nZW5lcmljRGV0YWlsRGF0YVJlc3BvbnNlJ1xuICAgICAgdGhpcy5xdWVyeUJ1bGRlckRhdGFzZXQucXVlcnlDb25maWcuY29sdW1ucyA9IFtdO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnF1ZXJ5QnVsZGVyRGF0YXNldC5hcGkgPSAnL2twaS9nZW5lcmljQWdncmVnYXRlUGFnaW5hdGVkS3BpU2VydmljZVJlc3BvbnNlJztcbiAgICB9XG4gIH1cblxuXG4gIGdldERhdGFDb25maWcoZSkge1xuXG4gICAgaWYgKGUuZXZlbnQpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRhU291cmNlID0gZS52YWx1ZTtcbiAgICAgIHRoaXMuaXNRdWVyeVR5cGVTZWxlY3QgPSB0cnVlO1xuICAgIH1cblxuICB9XG5cblxuICBhZGRIYXZpbmdzQ29sdW1lKCkge1xuICAgIGxldCBvYmogPSB7XG4gICAgICBcImNvbHVtbk5hbWVcIjogXCJcIixcbiAgICAgIFwiYWR2YW5jZWRDb2x1bW5cIjogXCJcIixcbiAgICAgIFwiZGF0YVR5cGVcIjogXCJcIixcbiAgICAgIFwib3BlcmF0b3JcIjogXCJcIixcbiAgICAgIFwidmFsdWVcIjogXCJcIlxuICAgIH1cbiAgICB0aGlzLnF1ZXJ5QnVsZGVyRGF0YXNldC5xdWVyeUNvbmZpZy5oYXZpbmdzLnB1c2gob2JqKTtcbiAgfVxuXG4gIGRlbGV0ZUhhdmluZ3NDb2x1bWUoaSkge1xuICAgIHRoaXMucXVlcnlCdWxkZXJEYXRhc2V0LnF1ZXJ5Q29uZmlnLmhhdmluZ3Muc3BsaWNlKGksIDEpO1xuICB9XG5cblxufVxuIiwiPGRpdiBjbGFzcz1cIm0tMlwiPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IG1iLTJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm14LTIgdy0xLzNcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj5FbmQgUG9pbnQ8L2Rpdj5cbiAgICAgICAgICAgIDxkeC10ZXh0LWJveCBbKG5nTW9kZWwpXT1cInF1ZXJ5QnVsZGVyRGF0YXNldC5hcGlcIj48L2R4LXRleHQtYm94PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm14LTIgdy0xLzNcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj5RdWVyeSBUeXBlPC9kaXY+XG4gICAgICAgICAgICA8ZHgtc2VsZWN0LWJveCBbZGF0YVNvdXJjZV09XCJbJ0FnZ3JlZ2F0ZScsJ0Jhc2ljJ11cIiAob25WYWx1ZUNoYW5nZWQpPVwiZ2V0UXVlcnlGb3JEZXRhaWxzRGF0YSgkZXZlbnQpXCI+XG4gICAgICAgICAgICA8L2R4LXNlbGVjdC1ib3g+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibXgtMiB3LTEvMyBtdC02XCIgKm5nSWY9XCJzZWxlY3RlZERhdGFTb3VyY2UgPT0gJ21vbmdvJ1wiPlxuICAgICAgICAgICAgPGR4LWNoZWNrLWJveCBbKG5nTW9kZWwpXT1cImlzUmVjb25Db2x1bWVcIiB0ZXh0PSdSZWNvbiBDb2x1bW4nPlxuICAgICAgICAgICAgPC9keC1jaGVjay1ib3g+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZmxleC1hdXRvIG1pbi13LTAgbXktM1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1sZyBweS0yIGZvbnQtZXh0cmFib2xkIGJvcmRlci1iIGJnLWdyYXktNzAwIHRleHQtd2hpdGUgcHgtMlwiPiBSZXF1ZXN0IFBhcmFtc1xuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInB0LTIgYm9yZGVyLXggYm9yZGVyLWIgXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZCBncmlkLWNvbHMtMiBnYXAtNCB3LWZ1bGwgcC0yXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTIgZmxleCBmbGV4LXJvdyBweC0yIGJvcmRlci1yXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgcmVxRmllbGRzRGF0YVNvdXJjZTsgbGV0IGkgPSBpbmRleDtcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTIgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiPiBQYXJhbXMgTmFtZTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IFsobmdNb2RlbCldPVwiaXRlbS5uYW1lXCI+PC9keC10ZXh0LWJveD5cblxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTIgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiPiBQYXJhbXMgVmFsdWUgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS5uYW1lID09ICdkYkNvbmZpZydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtc2VsZWN0LWJveCBbaXRlbXNdPVwiWydtb25nbycsJ2ltcGFsYScsJ3Bvc3RncmVzJywnbXlzcWwnLCdiaWdxdWVyeSddXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uVmFsdWVDaGFuZ2VkKT1cImdldERhdGFDb25maWcoJGV2ZW50KVwiIFsobmdNb2RlbCldPVwiaXRlbS52YWx1ZVwiPjwvZHgtc2VsZWN0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0ubmFtZSAhPT0gJ2RiQ29uZmlnJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBbKG5nTW9kZWwpXT1cIml0ZW0udmFsdWVcIj48L2R4LXRleHQtYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0yIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBtdC04XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5fZGFuZ2VyX3NtfX0gY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiZGVsZXRlUGFyYW1zKGkpXCI+PGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmEgZmEtdHJhc2gtb1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgbXktMiBqdXN0aWZ5LWVuZFwiPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC1zbSBpdGFsaWMgdGV4dC1ncmF5LTMwMCBtci02XCI+KiogUGxlYXNlIFNhdmUgUmVxdWVzdCBQYXJhbXMgQmVmb3JlIFN1Ym1pdFxuICAgICAgICAgICAgICAgICAgICBEYXRhc2V0XG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX3N1Y2Nlc3Nfc219fSBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzYXZlUGFyYW1zKClcIj5TYXZlXG4gICAgICAgICAgICAgICAgICAgIFBhcmFtczwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX3ByaW1hcnlfc219fSBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJhZGRQYXJhbXMoKVwiPkFkZFxuICAgICAgICAgICAgICAgICAgICBQYXJhbXM8L2J1dHRvbj5cblxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzUXVlcnlUeXBlU2VsZWN0XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGZsZXgtYXV0byBtaW4tdy0wIG15LTJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWxnIHB5LTIgZm9udC1leHRyYWJvbGQgYm9yZGVyLWIgYmctZ3JheS03MDAgdGV4dC13aGl0ZSBweC0yXCI+IENvbHVtbnMgYW5kIE1lYXN1cmVzXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwdC0yIGJvcmRlci14IGJvcmRlci1iIFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS0yIGZsZXgganVzdGlmeS1iZXR3ZWVuXCJcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgcXVlcnlCdWxkZXJEYXRhc2V0LnF1ZXJ5Q29uZmlnLmNvbHVtbnM7IGxldCBpID0gaW5kZXg7XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj4gTWVhc3VyZXM8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1jaGVjay1ib3ggW3ZhbHVlXT1cIml0ZW0ubWVhc3VyZXNcIiBbKG5nTW9kZWwpXT1cIml0ZW0ubWVhc3VyZXNcIj48L2R4LWNoZWNrLWJveD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj4gVmFsdWUgRmllbGQoYWxpYXNOYW1lKTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IFsobmdNb2RlbCldPVwiaXRlbS5kYXRhRmllbGRcIj48L2R4LXRleHQtYm94PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTEgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiPiBTZXJ2ZXIgQ29sdW1uIE5hbWU8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBbKG5nTW9kZWwpXT1cIml0ZW0uY29sdW1uTmFtZVwiPjwvZHgtdGV4dC1ib3g+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+IEZ1bmN0aW9uIE5hbWU8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1zZWxlY3QtYm94IFtzZWFyY2hFbmFibGVkXT1cInRydWVcIiBbaXRlbXNdPVwia3BpX2Z1bmN0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIml0ZW0uZnVuY3Rpb25OYW1lXCI+PC9keC1zZWxlY3QtYm94PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTEgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiPiBFbnJpY2ggTmFtZTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXNlbGVjdC1ib3ggW3NlYXJjaEVuYWJsZWRdPVwidHJ1ZVwiIFtpdGVtc109XCJrcGlfZW5yaWNobWVudF9uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIml0ZW0uZW5yaWNoRnVuY3Rpb25cIj48L2R4LXNlbGVjdC1ib3g+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+IEFkdmFuY2VkIENvbHVtbjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IFsobmdNb2RlbCldPVwiaXRlbS5hZHZhbmNlZENvbHVtblwiPjwvZHgtdGV4dC1ib3g+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+IENhcHRpb248L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBbKG5nTW9kZWwpXT1cIml0ZW0uY2FwdGlvblwiPjwvZHgtdGV4dC1ib3g+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtdC04XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJpICE9PSAwXCIgY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX2xpZ2h0X3NtfX0gY3Vyc29yLXBvaW50ZXIgbXgtMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJtb3ZlSXRlbUZvck1lYXN1cmVzQ29sdW1ucyhpLCAndXAnKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWFycm93LXVwXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImkgIT09IHF1ZXJ5QnVsZGVyRGF0YXNldC5xdWVyeUNvbmZpZy5jb2x1bW5zLmxlbmd0aCAtIDFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5fbGlnaHRfc219fSBjdXJzb3ItcG9pbnRlciBteC0xXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm1vdmVJdGVtRm9yTWVhc3VyZXNDb2x1bW5zKGksICdkb3duJylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1hcnJvdy1kb3duXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtdC04IHRleHQtY2VudGVyXCI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX2Rhbmdlcl9zbX19IGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cImRlbGV0ZUNvbHVtbnMoaSlcIj48aVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZhIGZhLXRyYXNoLW9cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWVuZCBteS0yXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC1zbSBpdGFsaWMgdGV4dC1ncmF5LTMwMCBtci02XCI+KiogUGxlYXNlIFNhdmUgQ29sdW1ucyBBbmQgTWVhc3VyZXMgQmVmb3JlIFN1Ym1pdFxuICAgICAgICAgICAgICAgICAgICAgICAgRGF0YXNldFxuICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX3N1Y2Nlc3Nfc219fSBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2F2ZUNvbHVtbnNBbmRNYXN1cmVzKClcIj5TYXZlXG4gICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5zPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX3ByaW1hcnlfc219fSBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJhZGRDb2x1bW5zKClcIj5BZGRcbiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbnM8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc1JlY29uQ29sdW1lXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBmbGV4LWF1dG8gbWluLXctMCBteS0yXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbGcgcHktMiBmb250LWV4dHJhYm9sZCBib3JkZXItYiBiZy1ncmF5LTcwMCB0ZXh0LXdoaXRlIHB4LTJcIj4gQWRkIFJlY29uIENvbHVtblxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwdC0yIGJvcmRlci14IGJvcmRlci1iIFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktMiBmbGV4IGp1c3RpZnktYmV0d2VlblwiICpuZ0Zvcj1cImxldCBpdGVtIG9mIHJlY29uQ29sdW1lRGF0YXNvdXJjZTsgbGV0IGkgPSBpbmRleDtcIj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTEgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj4gVmFsdWUgRmllbGQoYWxpYXNOYW1lKTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBbKG5nTW9kZWwpXT1cIml0ZW0uZGF0YUZpZWxkXCI+PC9keC10ZXh0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTEgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj4gRmlyc3QgS2V5PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IFsobmdNb2RlbCldPVwiaXRlbS5jb2x1bWVPbmVcIj48L2R4LXRleHQtYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiPiBTZWNvbmQgS2V5PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IFsobmdNb2RlbCldPVwiaXRlbS5jb2x1bWVUd29cIj48L2R4LXRleHQtYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+IEVucmljaCBOYW1lPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXNlbGVjdC1ib3ggW3NlYXJjaEVuYWJsZWRdPVwidHJ1ZVwiIFtpdGVtc109XCJrcGlfZW5yaWNobWVudF9uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpdGVtLmVucmljaEZ1bmN0aW9uXCI+PC9keC1zZWxlY3QtYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiPiBSZWNvbiBUeXBlPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXNlbGVjdC1ib3ggW3NlYXJjaEVuYWJsZWRdPVwidHJ1ZVwiIFtpdGVtc109XCJbJ3ZhcmlhbmNlJywncGVyY2VudGFnZScsJ2Fic29sdXRlJ11cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIml0ZW0ucmVjb25UeXBlXCI+PC9keC1zZWxlY3QtYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+IENhcHRpb248L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggWyhuZ01vZGVsKV09XCJpdGVtLmNhcHRpb25cIj48L2R4LXRleHQtYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG10LTggdGV4dC1jZW50ZXJcIj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX2Rhbmdlcl9zbX19IGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZVJlY29uQ29sdW1lKGkpXCI+PGkgY2xhc3M9XCJmYSBmYS10cmFzaC1vXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWVuZCBteS0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9zdWNjZXNzX3NtfX0gY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzYXZlUmVjb25zQ29sdW1lKClcIj5TYXZlIFRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uczwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5fcHJpbWFyeV9zbX19IGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cImFkZFJlY29uQ29sdW1lKClcIj5BZGRcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBmbGV4LWF1dG8gbWluLXctMCBteS0yXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbGcgcHktMiBmb250LWV4dHJhYm9sZCBib3JkZXItYiBiZy1ncmF5LTcwMCB0ZXh0LXdoaXRlIHB4LTJcIj4gQWRkIEhhdmluZyBDb2x1bW5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHQtMiBib3JkZXIteCBib3JkZXItYiBcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTIgZmxleCBqdXN0aWZ5LWJldHdlZW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgcXVlcnlCdWxkZXJEYXRhc2V0LnF1ZXJ5Q29uZmlnLmhhdmluZ3M7IGxldCBpID0gaW5kZXg7XCI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG1iLTIgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiPiBDb2x1bW4gTmFtZTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBbKG5nTW9kZWwpXT1cIml0ZW0uY29sdW1uTmFtZVwiPjwvZHgtdGV4dC1ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG1iLTIgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiPiBBZHZhbmNlZCBDb2x1bW48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggWyhuZ01vZGVsKV09XCJpdGVtLmFkdmFuY2VkQ29sdW1uXCI+PC9keC10ZXh0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTEgbWItMiB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+IERhdGEgVHlwZTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBbKG5nTW9kZWwpXT1cIml0ZW0uZGF0YVR5cGVcIj48L2R4LXRleHQtYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG1iLTIgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiPiBPcGVyYXRvcjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1zZWxlY3QtYm94IFtpdGVtc109XCJbJ2dldCcsJ2x0ZSddXCIgWyhuZ01vZGVsKV09XCJpdGVtLm9wZXJhdG9yXCI+PC9keC1zZWxlY3QtYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG1iLTIgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiPiBWYWx1ZTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBbKG5nTW9kZWwpXT1cIml0ZW0udmFsdWVcIj48L2R4LXRleHQtYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG10LTggdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9kYW5nZXJfc219fSBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkZWxldGVIYXZpbmdzQ29sdW1lKGkpXCI+PGkgY2xhc3M9XCJmYSBmYS10cmFzaC1vXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWVuZCBteS0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9wcmltYXJ5X3NtfX0gY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiYWRkSGF2aW5nc0NvbHVtZSgpXCI+QWRkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgSGF2aW5nc1xuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZmxleC1hdXRvIG1pbi13LTAgbXktM1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbGcgcHktMiBmb250LWV4dHJhYm9sZCBib3JkZXItYiBiZy1ncmF5LTcwMCB0ZXh0LXdoaXRlIHB4LTJcIj4gU29ydCBCeVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHQtMiBib3JkZXIteCBib3JkZXItYiBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZCBncmlkLWNvbHMtMiBnYXAtNCB3LWZ1bGwgcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS0yIGZsZXggZmxleC1yb3cgcHgtMiBib3JkZXItclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBxdWVyeUJ1bGRlckRhdGFzZXQucXVlcnlDb25maWcuc29ydGVyczsgbGV0IGkgPSBpbmRleDtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0yIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+IFBhcmFtcyBOYW1lPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IFsobmdNb2RlbCldPVwiaXRlbS5jb2x1bW5OYW1lXCI+PC9keC10ZXh0LWJveD5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMiBtdC04XCI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtY2hlY2stYm94IHRleHQ9XCJEZXNjZW5kaW5nXCIgWyhuZ01vZGVsKV09XCJpdGVtLmRlc2NlbmRpbmdcIj48L2R4LWNoZWNrLWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTIgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBtdC04XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX2Rhbmdlcl9zbX19IGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkZWxldGVTaG9ydENvbHVtbnMoaSlcIj48aSBjbGFzcz1cImZhIGZhLXRyYXNoLW9cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IG15LTIganVzdGlmeS1lbmRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5fcHJpbWFyeV9zbX19IGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cImFkZFNob3J0Q29sdW1ucygpXCI+QWRkXG4gICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW48L2J1dHRvbj5cblxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZmxleC1hdXRvIG1pbi13LTAgbXktMlwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbGcgcHktMiBmb250LWV4dHJhYm9sZCBib3JkZXItYiBiZy1ncmF5LTcwMCB0ZXh0LXdoaXRlIHB4LTJcIj4gRmlsdGVyIE1hcGluZ1xuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHQtMiBib3JkZXIteCBib3JkZXItYiBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktMiBmbGV4IGZsZXgtcm93IGp1c3RpZnktYmV0d2VlblwiXG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIHF1ZXJ5QnVsZGVyRGF0YXNldC5xdWVyeUNvbmZpZy5tYXBlZEZpbHRlcnM7IGxldCBpID0gaW5kZXg7XCI+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTEgbWItMiB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj4gTG9jYWwgQ29sdW1uPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggWyhuZ01vZGVsKV09XCJpdGVtLmxvY2FsQ29sdW1uXCI+PC9keC10ZXh0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG1iLTIgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+IFNlcnZlciBDb2x1bW48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBbKG5nTW9kZWwpXT1cIml0ZW0uc2VydmVyQ29sdW1uXCI+PC9keC10ZXh0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG1iLTIgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+IE9wZXJhdG9yPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZHgtc2VsZWN0LWJveCBbc2VhcmNoRW5hYmxlZF09XCJ0cnVlXCIgW2l0ZW1zXT1cImtwaV9vcGVyYXRvclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpdGVtLm9wZXJhdG9yTmFtZVwiPjwvZHgtc2VsZWN0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG1iLTIgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+IERhdGF0eXBlPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZHgtc2VsZWN0LWJveCBbc2VhcmNoRW5hYmxlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXRlbXNdPVwiWydkYXRlJywnc3RyaW5nJywndGltZXN0YW1wJywnaW50JywgJ2RvdWJsZScsICdib29sZWFuJ11cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiaXRlbS5kYXRhVHlwZVwiPjwvZHgtc2VsZWN0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj4gRm9ybWF0dGVyPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggWyhuZ01vZGVsKV09XCJpdGVtLmZvcm1hdHRlclwiPjwvZHgtdGV4dC1ib3g+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtYi0yIHctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiPiBEZWZhdWx0IFZhbHVlPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggWyhuZ01vZGVsKV09XCJpdGVtLmRlZmF1bHRWYWx1ZVwiPjwvZHgtdGV4dC1ib3g+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtdC04XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJpICE9PSAwXCIgY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX2xpZ2h0X3NtfX0gY3Vyc29yLXBvaW50ZXIgbXgtMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJtb3ZlSXRlbUZvckNvbHVtbnMoaSwgJ3VwJylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1hcnJvdy11cFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJpICE9PSBxdWVyeUJ1bGRlckRhdGFzZXQucXVlcnlDb25maWcubWFwZWRGaWx0ZXJzLmxlbmd0aCAtIDFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5fbGlnaHRfc219fSBjdXJzb3ItcG9pbnRlciBteC0xXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm1vdmVJdGVtRm9yQ29sdW1ucyhpLCAnZG93bicpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtYXJyb3ctZG93blwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTEgbXQtOCB0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5fZGFuZ2VyX3NtfX0gY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkZWxldGVGaWx0ZXJNYXBpbmdDb2x1bW5zKGkpXCI+PGkgY2xhc3M9XCJmYSBmYS10cmFzaC1vXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvd1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEvMlwiICpuZ0lmPVwic2VsZWN0ZWREYXRhU291cmNlICE9PSAnbW9uZ28nXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGp1c3RpZnktc3RhcnQgbXktMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5PdGhlcnNQdXJwbGV9fSBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJjaGVja0ZvclF1ZXJ5KClcIj5DaGVja1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF1ZXJ5PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cganVzdGlmeS1lbmQgbXktMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5fcHJpbWFyeV9zbX19IGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWRkRmlsdGVyTWFwaW5nQ29sdW1ucygpXCI+QWRkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFwaW5nPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IHctZnVsbCBqdXN0aWZ5LWVuZCBtdC01IGJvcmRlci10XCI+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9zdWNjZXNzX21kfX0gY3Vyc29yLXBvaW50ZXIgbXgtMSBteS0yXCIgKGNsaWNrKT1cImNyZWF0ZURhdGFTZXQoKVwiPlxuICAgICAgICAgICAgICAgIFN1Ym1pdCBEYXRhU2V0XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG5cblxuPC9kaXY+XG5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzTW9kZWxWaXNpYmxlXCI+XG4gICAgPGRpdiBjbGFzcz1cImZpeGVkIGluc2V0LTAgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgei01MCBiZy1ibGFjayBiZy1vcGFjaXR5LTUwXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyZWxhdGl2ZSBwLTQgdy1mdWxsIG1heC13LTN4bCBtYXgtaC1mdWxsXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVsYXRpdmUgYmctd2hpdGUgcm91bmRlZC1sZyBzaGFkb3cgIFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gcC00IG1kOnAtNSBib3JkZXItYiByb3VuZGVkLXQgXCI+XG4gICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cInRleHQteGwgZm9udC1zZW1pYm9sZCB0ZXh0LWdyYXktOTAwIFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgUXVlcnkgPC9oMz5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImNsb3NlTW9kYWxWaXNpYmxlTW9kYWwoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtZ3JheS00MDAgYmctdHJhbnNwYXJlbnQgaG92ZXI6YmctZ3JheS0yMDAgaG92ZXI6dGV4dC1ncmF5LTkwMCByb3VuZGVkLWxnIHRleHQtc20gdy04IGgtOCBtcy1hdXRvIGlubGluZS1mbGV4IGp1c3RpZnktY2VudGVyIGl0ZW1zLWNlbnRlciBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1tb2RhbC1oaWRlPVwic3RhdGljLW1vZGFsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwidy0zIGgtM1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNCAxNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIHN0cm9rZS13aWR0aD1cIjJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwibTEgMSA2IDZtMCAwIDYgNk03IDdsNi02TTcgN2wtNiA2XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+Q2xvc2U8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwhLS0gTW9kYWwgYm9keSAtLT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy02OSBwLTVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgYmctZ3JheS04MDAgdGV4dC13aGl0ZSB0ZXh0LWxnIHAtNCByb3VuZGVkLW1kIHRleHQtd3JhcFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGNvZGU+XG4gICAgICAgICAgICAgICAgICAgICAgICB7e3F1ZXJ5X2RhdGF9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9jb2RlPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgYm9yZGVyLXQgYm9yZGVyLWdyYXktMjAwIHJvdW5kZWQtYiBwLTIganVzdGlmeS1lbmRcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWdyYXktNzAwIHB4LTJcIiAqbmdJZj1cImlzU3FsQ29waWVkVGV4dFwiPkNvcGllZDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBkYXRhLW1vZGFsLWhpZGU9XCJzdGF0aWMtbW9kYWxcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX3N1Y2Nlc3Nfc219fSBweS0yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjb3B5U3FsRnJvbU1vZGFsKClcIj5Db3B5PC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj4iXX0=
404
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXNldC1xdWVyeS1idWxkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2FtbWEtYXBwLWNvbnRyb2xsZXIvc3JjL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL2FwcGxpY2F0aW9uLWRhdGFzZXQtY29tcG9uZW50L2RhdGFzZXQtcXVlcnktYnVsZGVyL2RhdGFzZXQtcXVlcnktYnVsZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dhbW1hLWFwcC1jb250cm9sbGVyL3NyYy9saWIvYXBwbGljYXRpb24tY29udHJvbGxlci9hcHBsaWNhdGlvbi1kYXRhc2V0LWNvbXBvbmVudC9kYXRhc2V0LXF1ZXJ5LWJ1bGRlci9kYXRhc2V0LXF1ZXJ5LWJ1bGRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7O0FBVS9FLE1BQU0sT0FBTywyQkFBMkI7SUEwRnRDLFlBQW1CLGFBQTRCLEVBQVUsTUFBcUIsRUFBVSxPQUFrQztRQUF2RyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUFVLFdBQU0sR0FBTixNQUFNLENBQWU7UUFBVSxZQUFPLEdBQVAsT0FBTyxDQUEyQjtRQXZGMUgsd0JBQW1CLEdBQVEsRUFBRSxDQUFDO1FBQzlCLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBQzdCLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBQzdCLHdCQUFtQixHQUFRLEVBQUUsQ0FBQztRQUM5QixpQkFBWSxHQUFRLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQTtRQUNyRixpQkFBWSxHQUFRLENBQUMs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a0IsQ0FBQyxHQUFHLEdBQUcsa0RBQWtELENBQUM7U0FDbEY7SUFDSCxDQUFDO0lBR0QsYUFBYSxDQUFDLENBQUM7UUFFYixJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUU7WUFDWCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQztZQUNsQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1NBQy9CO0lBRUgsQ0FBQztJQUdELGdCQUFnQjtRQUNkLElBQUksR0FBRyxHQUFHO1lBQ1IsWUFBWSxFQUFFLEVBQUU7WUFDaEIsZ0JBQWdCLEVBQUUsRUFBRTtZQUNwQixVQUFVLEVBQUUsRUFBRTtZQUNkLFVBQVUsRUFBRSxFQUFFO1lBQ2QsT0FBTyxFQUFFLEVBQUU7U0FDWixDQUFBO1FBQ0QsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDM0QsQ0FBQzs7d0hBdGNVLDJCQUEyQjs0R0FBM0IsMkJBQTJCLDJLQ1Z4Qyw4cXBCQW1ZZTsyRkR6WEYsMkJBQTJCO2tCQUx2QyxTQUFTOytCQUNFLDBCQUEwQjt3S0FxQm5CLHNCQUFzQjtzQkFBdEMsTUFBTTtnQkFRSCxhQUFhO3NCQURoQixLQUFLO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUb2FzdHJTZXJ2aWNlIH0gZnJvbSAnbmd4LXRvYXN0cic7XG5pbXBvcnQgeyBBcHBsaWNhdGlvbkNvbnRlbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYXBwbGljYXRpb24tY29udGVudC5zZXJ2aWNlJztcbmltcG9ydCB7IENvbW1vblNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb21tb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtZGF0YXNldC1xdWVyeS1idWxkZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0YXNldC1xdWVyeS1idWxkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kYXRhc2V0LXF1ZXJ5LWJ1bGRlci5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIERhdGFzZXRRdWVyeUJ1bGRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgLy8gQElucHV0KCkgcXVlcnlCdWxkZXJEYXRhc2V0OiBhbnk7XG4gIHJlcUZpZWxkc0RhdGFTb3VyY2U6IGFueSA9IFtdO1xuICBpc3JlcUZpZWxkczogYm9vbGVhbiA9IGZhbHNlO1xuICBpc2NkclBhcmFtczogYm9vbGVhbiA9IGZhbHNlO1xuICBjZHJGaWVsZHNEYXRhU291cmNlOiBhbnkgPSBbXTtcbiAga3BpX2Z1bmN0aW9uOiBhbnkgPSBbXCJzdW1cIiwgXCJjb3VudFwiLCBcImF2Z1wiLCBcIm1heFwiLCBcIm1pblwiLCBcInN0ZGRldlwiLCBcImNvdW50X2Rpc3RpbmN0XCJdXG4gIGtwaV9vcGVyYXRvcjogYW55ID0gW1wiZXFcIiwgXCJndGVcIiwgXCJsdGVcIiwgXCJuZVwiLCBcImluXCIsIFwibm90SW5cIiwgXCJjb250YWluc1wiLCBcInN0YXJ0c1dpdGhcIiwgXCJlbmRzV2l0aFwiXVxuICBrcGlfZW5yaWNobWVudF9uYW1lOiBhbnkgPSBbXTtcbiAgcmVxU2hvcnREYXRhU291cmNlOiBhbnkgPSBbXTtcbiAgZmlsdGVyTWFwaW5nRGF0YXNvdXJjZTogYW55ID0gW107XG4gIHF1ZXJ5X2RhdGE6IGFueTtcbiAgaXNNb2RlbFZpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNTcWxDb3BpZWRUZXh0OiBib29sZWFuID0gZmFsc2U7XG4gIHF1ZXJ5QnVsZGVyRGF0YXNldDogYW55O1xuICBpc1JlY29uQ29sdW1lOiBib29sZWFuID0gZmFsc2U7XG4gIEBPdXRwdXQoKSBwdWJsaWMgZ2V0UXVlcnlCdWxiZGVyRGF0YVNldDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcmVjb25Db2x1bWVEYXRhc291cmNlID0gW107XG5cbiAgc2VsZWN0ZWREYXRhU291cmNlOiBhbnk7XG4gIGlzUXVlcnlUeXBlU2VsZWN0OiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KCdidWxkZXJEYXRhc2V0JylcbiAgc2V0IGJ1bGRlckRhdGFzZXQodmFsdWUpIHtcblxuICAgIGlmICh2YWx1ZS5xdWVyeUNvbmZpZy5yZXFGaWVsZHMgJiYgdmFsdWUucXVlcnlDb25maWcucmVxRmllbGRzLmxlbmd0aCA8IDIpIHtcbiAgICAgIHRoaXMucmVxRmllbGRzRGF0YVNvdXJjZSA9IFtcbiAgICAgICAge1xuICAgICAgICAgIFwibmFtZVwiOiBcInBhZ2VOdW1iZXJcIixcbiAgICAgICAgICBcInZhbHVlXCI6IDEsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBcIm5hbWVcIjogXCJwYWdlU2l6ZVwiLFxuICAgICAgICAgIFwidmFsdWVcIjogMjAxMCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIFwibmFtZVwiOiBcImRiQ29uZmlnXCIsXG4gICAgICAgICAgXCJ2YWx1ZVwiOiBcIlwiLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgXCJuYW1lXCI6IFwiZGF0YWJhc2VOYW1lXCIsXG4gICAgICAgICAgXCJ2YWx1ZVwiOiBcIlwiLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgXCJuYW1lXCI6IFwidGFibGVOYW1lXCIsXG4gICAgICAgICAgXCJ2YWx1ZVwiOiBcIlwiLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgXCJuYW1lXCI6IFwicGFnaW5hdGlvblJlcXVpcmVkXCIsXG4gICAgICAgICAgXCJ2YWx1ZVwiOiBcImZhbHNlXCIsXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZXFGaWVsZHNEYXRhU291cmNlID0gdGhpcy5wcm9jZXNzUGFyYW1zZm9ybWF0RGF0YSh2YWx1ZS5xdWVyeUNvbmZpZy5yZXFGaWVsZHMpO1xuICAgICAgdGhpcy5zZWxlY3RlZERhdGFTb3VyY2UgPSB2YWx1ZS5xdWVyeUNvbmZpZy5yZXFGaWVsZHMuZmluZChpdGVtID0+IGl0ZW0uZGJDb25maWcgIT09IHVuZGVmaW5lZCk/LmRiQ29uZmlnO1xuICAgICAgdGhpcy5pc1F1ZXJ5VHlwZVNlbGVjdCA9IHRydWU7XG4gICAgfVxuICAgIGlmICh2YWx1ZS5xdWVyeUNvbmZpZy5tYXBlZEZpbHRlcnMgPT0gdW5kZWZpbmVkKSB7XG4gICAgICB2YWx1ZS5xdWVyeUNvbmZpZy5tYXBlZEZpbHRlcnMgPSBbXTtcbiAgICAgIHZhbHVlLnF1ZXJ5Q29uZmlnLm1hcGVkRmlsdGVycy5wdXNoKHsgXCJsb2NhbENvbHVtblwiOiBcIlwiLCBcInNlcnZlckNvbHVtblwiOiBcIlwiLCBcIm9wZXJhdG9yTmFtZVwiOiBcIlwiLCBcImRlZmF1bHRWYWx1ZVwiOiBcIlwiLCBcImRhdGFUeXBlXCI6IFwiXCIsXCJmb3JtYXR0ZXJcIjpcIlwiIH0pXG4gICAgfVxuXG4gICAgaWYgKHZhbHVlLnF1ZXJ5Q29uZmlnLnNvcnRlcnMgPT0gdW5kZWZpbmVkKSB7XG4gICAgICB2YWx1ZS5xdWVyeUNvbmZpZy5zb3J0ZXJzID0gW107XG4gICAgICB2YWx1ZS5xdWVyeUNvbmZpZy5zb3J0ZXJzLnB1c2goeyBcImNvbHVtbk5hbWVcIjogXCJcIiwgXCJkZXNjZW5kaW5nXCI6IGZhbHNlIH0pXG4gICAgfVxuICAgIGlmICh2YWx1ZS5xdWVyeUNvbmZpZy5jb2x1bW5zID09IHVuZGVmaW5lZCkge1xuICAgICAgdmFsdWUucXVlcnlDb25maWcuY29sdW1ucyA9IFtdO1xuICAgICAgbGV0IG9iaiA9IHtcbiAgICAgICAgXCJtZWFzdXJlc1wiOiB0cnVlLFxuICAgICAgICBcImRhdGFGaWVsZFwiOiBcIlwiLFxuICAgICAgICBcImNvbHVtbk5hbWVcIjogXCJcIixcbiAgICAgICAgXCJmdW5jdGlvbk5hbWVcIjogXCJcIixcbiAgICAgICAgXCJlbnJpY2hGdW5jdGlvblwiOiBcIlwiLFxuICAgICAgICBcImFkdmFuY2VkQ29sdW1uXCI6IFwiXCIsXG4gICAgICAgIFwiY2FwdGlvblwiOiBcIlwiLFxuICAgICAgfVxuICAgICAgdmFsdWUucXVlcnlDb25maWcuY29sdW1ucy5wdXNoKG9iaik7XG4gICAgfVxuICAgIGlmICh2YWx1ZS5xdWVyeUNvbmZpZy5oYXZpbmdzID09IHVuZGVmaW5lZCkge1xuICAgICAgdmFsdWUucXVlcnlDb25maWcuaGF2aW5ncyA9IFtdO1xuICAgIH1cblxuXG4gICAgdGhpcy5xdWVyeUJ1bGRlckRhdGFzZXQgPSB2YWx1ZTtcbiAgfVxuXG5cbiAgY29uc3RydWN0b3IocHVibGljIGNvbW1vblNlcnZpY2U6IENvbW1vblNlcnZpY2UsIHByaXZhdGUgdG9hc3RyOiBUb2FzdHJTZXJ2aWNlLCBwcml2YXRlIHNlcnZpY2U6IEFwcGxpY2F0aW9uQ29udGVudFNlcnZpY2UpIHsgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc2VydmljZS5saXN0Q29sdW1uRW5yaWNobWVudEZ1bmN0aW9ucygpLnN1YnNjcmliZShkYXRhID0+IHtcbiAgICAgIHRoaXMua3BpX2VucmljaG1lbnRfbmFtZSA9IGRhdGE7XG4gICAgfSlcblxuICAgIHRoaXMucmVjb25Db2x1bWVEYXRhc291cmNlID0gW1xuICAgICAge1xuICAgICAgICBcImRhdGFGaWVsZFwiOiBcIlwiLFxuICAgICAgICBcImVucmljaEZ1bmN0aW9uXCI6IFwiXCIsXG4gICAgICAgIFwiY29sdW1lT25lXCI6IFwiXCIsXG4gICAgICAgIFwiY29sdW1lVHdvXCI6IFwiXCIsXG4gICAgICAgIFwicmVjb25UeXBlXCI6IFwiXCIsXG4gICAgICAgIFwiY2FwdGlvblwiOiBcIlwiXG4gICAgICB9XG4gICAgXVxuICB9XG5cbiAgcHJvY2Vzc1BhcmFtc2Zvcm1hdERhdGEoZGF0YSkge1xuICAgIGNvbnN0IGZvcm1hdHRlZF9kYXRhID0gZGF0YS5tYXAoaXRlbSA9PiB7XG4gICAgICBjb25zdCBbbmFtZSwgdmFsdWVdID0gT2JqZWN0LmVudHJpZXMoaXRlbSlbMF07XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5hbWUsXG4gICAgICAgIHZhbHVlOiBuYW1lID09PSAncGFnaW5hdGlvblJlcXVpcmVkJyA/IHZhbHVlLnRvU3RyaW5nKCkgOiB2YWx1ZVxuICAgICAgfTtcbiAgICB9KTtcblxuICAgIHJldHVybiBmb3JtYXR0ZWRfZGF0YTtcbiAgfVxuXG5cblxuICBhZGRDb2x1bW5zKCkge1xuICAgIGxldCBvYmogPSB7XG4gICAgICBcIm1lYXN1cmVzXCI6IHRydWUsXG4gICAgICBcImRhdGFGaWVsZFwiOiBcIlwiLFxuICAgICAgXCJjb2x1bW5OYW1lXCI6IFwiXCIsXG4gICAgICBcImZ1bmN0aW9uTmFtZVwiOiBcIlwiLFxuICAgICAgXCJhZHZhbmNlZENvbHVtblwiOiBcIlwiLFxuICAgICAgXCJlbnJpY2hGdW5jdGlvblwiOiBcIlwiLFxuICAgICAgXCJjYXB0aW9uXCI6IFwiXCIsXG4gICAgfVxuICAgIHRoaXMucXVlcnlCdWxkZXJEYXRhc2V0LnF1ZXJ5Q29uZmlnLmNvbHVtbnMucHVzaChvYmopO1xuICB9XG5cblxuICBkZWxldGVDb2x1bW5zKGkpIHtcbiAgICB0aGlzLnF1ZXJ5QnVsZGVyRGF0YXNldC5xdWVyeUNvbmZpZy5jb2x1bW5zLnNwbGljZShpLCAxKVxuICB9XG5cbiAgYWRkUmVjb25Db2x1bWUoKSB7XG4gICAgbGV0IG9iaiA9IHtcbiAgICAgIFwiZGF0YUZpZWxkXCI6IFwiXCIsXG4gICAgICBcImNvbHVtZU9uZVwiOiBcIlwiLFxuICAgICAgXCJjb2x1bWVUd29cIjogXCJcIixcbiAgICAgIFwiZW5yaWNoRnVuY3Rpb25cIjogXCJcIixcbiAgICAgIFwicmVjb25UeXBlXCI6IFwiXCIsXG4gICAgICBcImNhcHRpb25cIjogXCJcIlxuICAgIH1cbiAgICB0aGlzLnJlY29uQ29sdW1lRGF0YXNvdXJjZS5wdXNoKG9iaik7XG4gIH1cblxuICBkZWxldGVSZWNvbkNvbHVtZShpKSB7XG4gICAgdGhpcy5yZWNvbkNvbHVtZURhdGFzb3VyY2Uuc3BsaWNlKGksIDEpXG4gIH1cblxuICBzYXZlUmVjb25zQ29sdW1lKCkge1xuICAgIC8vIHsgJyRkaXZpZGUnOiBbeyAnJHN1YnRyYWN0JzogWyckY2JzQ291bnQnLCAnJG1zY0NvdW50J10gfSwgJyRjYnNDb3VudCddIH1cbiAgICAvLyB7ICckc3VidHJhY3QnOiBbJyRjYnNNb3UnLCAnJG1zY01vdSddIH1cblxuICAgIHRoaXMucmVjb25Db2x1bWVEYXRhc291cmNlLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICBpZiAoZWxlbWVudC5yZWNvblR5cGUgPT0gXCJ2YXJpYW5jZVwiKSB7XG4gICAgICAgIGxldCBjb2x1bWVTdHJpbmcgPSBcInsnJHN1YnRyYWN0JzogWyckXCIgKyBlbGVtZW50LmNvbHVtZU9uZSArIFwiJywnJFwiICsgZWxlbWVudC5jb2x1bWVUd28gKyBcIiddfVwiO1xuICAgICAgICBsZXQgbm9kZSA9IHtcbiAgICAgICAgICBcIm1lYXN1cmVzXCI6IHRydWUsXG4gICAgICAgICAgXCJkYXRhRmllbGRcIjogZWxlbWVudC5kYXRhRmllbGQsXG4gICAgICAgICAgXCJjb2x1bW5OYW1lXCI6IGVsZW1lbnQuZGF0YUZpZWxkLFxuICAgICAgICAgIFwiZnVuY3Rpb25OYW1lXCI6IFwiXCIsXG4gICAgICAgICAgXCJhZHZhbmNlZENvbHVtblwiOiBjb2x1bWVTdHJpbmcsXG4gICAgICAgICAgXCJlbnJpY2hGdW5jdGlvblwiOiBlbGVtZW50LmVucmljaEZ1bmN0aW9uLFxuICAgICAgICAgIFwiY2FwdGlvblwiOiBlbGVtZW50LmNhcHRpb24sXG4gICAgICAgICAgJ2Rlcml2ZUZpZWxkJzogdHJ1ZVxuICAgICAgICB9XG4gICAgICAgIHRoaXMucXVlcnlCdWxkZXJEYXRhc2V0LnF1ZXJ5Q29uZmlnLmNvbHVtbnMucHVzaChub2RlKVxuICAgICAgfSBlbHNlIGlmIChlbGVtZW50LnJlY29uVHlwZSA9PSBcInBlcmNlbnRhZ2VcIikge1xuICAgICAgICAvLyBsZXQgY29sdW1lU3RyaW5nID0gXCJ7JyRjb25kJzogeyBpZjogeyAkZXE6IFsgJyRcIiArIGVsZW1lbnQuY29sdW1lT25lICsgXCInLCAwIF0gfSwgdGhlbjogMCwgZWxzZTogeyckZGl2aWRlJzpbeyckc3VidHJhY3QnOiBbJyRcIiArIGVsZW1lbnQuY29sdW1lT25lICsgXCInLCckXCIgKyBlbGVtZW50LmNvbHVtZVR3byArIFwiJ119LCckXCIgKyBlbGVtZW50LmNvbHVtZU9uZSArIFwiJ119IH19XCI7XG4gICAgICAgIFxuICAgICAgICBsZXQgY29sdW1lU3RyaW5nID0gYHsgJyRjb25kJzogeydpZic6IHsnJGFuZCc6IFt7ICckZXEnOiBbJyQke2VsZW1lbnQuY29sdW1lT25lfScsIDBdIH0sIHsgJyRlcSc6IFsnJCR7ZWxlbWVudC5jb2x1bWVUd299JywgMF0gfSBdIH0sICd0aGVuJzogMCwgJ2Vsc2UnOiB7JyRkaXZpZGUnOiBcbiAgICAgICAgW3sgJyRhYnMnOiB7ICckc3VidHJhY3QnOiBbJyQke2VsZW1lbnQuY29sdW1lT25lfScsICckJHtlbGVtZW50LmNvbHVtZVR3b30nXSB9IH0sIHsgJyRtYXgnOiBbJyQke2VsZW1lbnQuY29sdW1lT25lfScsICckJHtlbGVtZW50LmNvbHVtZVR3b30nXSB9IF0gfSB9IH1cbmBcbiAgICAgICAgXG4gICAgICAgIGxldCBub2RlID0ge1xuICAgICAgICAgIFwibWVhc3VyZXNcIjogdHJ1ZSxcbiAgICAgICAgICBcImRhdGFGaWVsZFwiOiBlbGVtZW50LmRhdGFGaWVsZCxcbiAgICAgICAgICBcImNvbHVtbk5hbWVcIjogZWxlbWVudC5kYXRhRmllbGQsXG4gICAgICAgICAgXCJmdW5jdGlvbk5hbWVcIjogXCJcIixcbiAgICAgICAgICBcImFkdmFuY2VkQ29sdW1uXCI6IGNvbHVtZVN0cmluZyxcbiAgICAgICAgICBcImVucmljaEZ1bmN0aW9uXCI6IGVsZW1lbnQuZW5yaWNoRnVuY3Rpb24sXG4gICAgICAgICAgXCJjYXB0aW9uXCI6IGVsZW1lbnQuY2FwdGlvbixcbiAgICAgICAgICAnZGVyaXZlRmllbGQnOiB0cnVlXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5xdWVyeUJ1bGRlckRhdGFzZXQucXVlcnlDb25maWcuY29sdW1ucy5wdXNoKG5vZGUpXG4gICAgICB9IGVsc2UgaWYgKGVsZW1lbnQucmVjb25UeXBlID09IFwiYWJzb2x1dGVcIikge1xuICAgICAgICBsZXQgY29sdW1lU3RyaW5nID0gXCJ7JyRhYnMnOiB7JyRjb25kJzogeyBpZjogeyAkZXE6IFsgJyRcIiArIGVsZW1lbnQuY29sdW1lT25lICsgXCInLCAwIF0gfSwgdGhlbjogMCwgZWxzZTogeyckZGl2aWRlJzogW3snJHN1YnRyYWN0JzogWyckXCIgKyBlbGVtZW50LmNvbHVtZU9uZSArIFwiJywgJyRcIiArIGVsZW1lbnQuY29sdW1lVHdvICsgXCInXX0sICckXCIgKyBlbGVtZW50LmNvbHVtZU9uZSArIFwiJ119fX19XCI7XG4gICAgICAgIGxldCBub2RlID0ge1xuICAgICAgICAgIFwibWVhc3VyZXNcIjogdHJ1ZSxcbiAgICAgICAgICBcImRhdGFGaWVsZFwiOiBlbGVtZW50LmRhdGFGaWVsZCxcbiAgICAgICAgICBcImNvbHVtbk5hbWVcIjogZWxlbWVudC5kYXRhRmllbGQsXG4gICAgICAgICAgXCJmdW5jdGlvbk5hbWVcIjogXCJcIixcbiAgICAgICAgICBcImFkdmFuY2VkQ29sdW1uXCI6IGNvbHVtZVN0cmluZyxcbiAgICAgICAgICBcImVucmljaEZ1bmN0aW9uXCI6IGVsZW1lbnQuZW5yaWNoRnVuY3Rpb24sXG4gICAgICAgICAgXCJjYXB0aW9uXCI6IGVsZW1lbnQuY2FwdGlvbixcbiAgICAgICAgICAnZGVyaXZlRmllbGQnOiB0cnVlXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5xdWVyeUJ1bGRlckRhdGFzZXQucXVlcnlDb25maWcuY29sdW1ucy5wdXNoKG5vZGUpXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG5cbiAgc2F2ZUNvbHVtbnNBbmRNYXN1cmVzKCkge1xuICAgIHRoaXMucXVlcnlCdWxkZXJEYXRhc2V0LnF1ZXJ5Q29uZmlnLm1lYXN1cmVzID0gW107XG4gICAgdGhpcy5xdWVyeUJ1bGRlckRhdGFzZXQucXVlcnlDb25maWcuZGltZW5zaW9ucyA9IFtdO1xuICAgIHRoaXMucXVlcnlCdWxkZXJEYXRhc2V0LnF1ZXJ5Q29uZmlnLmNvbHVtbnMuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgIC8vIENoZWNrIGlmIGVsZW1lbnQuYWR2YW5jZWRDb2x1bW4gaXMgYW4gZW1wdHkgc3RyaW5nIGFuZCBzZXQgaXQgdG8gbnVsbFxuICAgICAgY29uc3QgYWR2YW5jZWRDb2x1bW5WYWx1ZSA9IGVsZW1lbnQuYWR2YW5jZWRDb2x1bW4gPT09IFwiXCIgPyBudWxsIDogZWxlbWVudC5hZHZhbmNlZENvbHVtbjtcblxuICAgICAgaWYgKGVsZW1lbnQubWVhc3VyZXMpIHtcbiAgICAgICAgbGV0IG9iaiA9IHtcbiAgICAgICAgICBjb2x1bW5OYW1lOiBlbGVtZW50LmNvbHVtbk5hbWUsXG4gICAgICAgICAgZnVuY3Rpb25OYW1lOiBlbGVtZW50LmZ1bmN0aW9uTmFtZSxcbiAgICAgICAgICBlbnJpY2hGdW5jdGlvbjogZWxlbWVudC5lbnJpY2hGdW5jdGlvbixcbiAgICAgICAgICBhZHZhbmNlZENvbHVtbjogYWR2YW5jZWRDb2x1bW5WYWx1ZSxcbiAgICAgICAgICBhbGlhc05hbWU6IGVsZW1lbnQuZGF0YUZpZWxkLFxuICAgICAgICB9XG4gICAgICAgIGlmIChlbGVtZW50LmRlcml2ZUZpZWxkKSB7XG4gICAgICAgICAgb2JqWydkZXJpdmVGaWVsZCddID0gZWxlbWVudC5kZXJpdmVGaWVsZFxuICAgICAgICB9XG4gICAgICAgIHRoaXMucXVlcnlCdWxkZXJEYXRhc2V0LnF1ZXJ5Q29uZmlnLm1lYXN1cmVzLnB1c2gob2JqKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCBvYmogPSB7XG4gICAgICAgICAgY29sdW1uTmFtZTogZWxlbWVudC5jb2x1bW5OYW1lLFxuICAgICAgICAgIGVucmljaEZ1bmN0aW9uOiBlbGVtZW50LmVucmljaEZ1bmN0aW9uLFxuICAgICAgICAgIGFsaWFzTmFtZTogZWxlbWVudC5kYXRhRmllbGQsXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5xdWVyeUJ1bGRlckRhdGFzZXQucXVlcnlDb25maWcuZGltZW5zaW9ucy5wdXNoKG9iaik7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy50b2FzdHIuc3VjY2VzcygnQ29sdW1ucyBTYXZlZCBTdWNjZXNzZnVsbHknKTtcbiAgICAvLyB0aGlzLnNhdmVEYXRhVG9TdG9yZSgpXG4gIH1cblxuICBcblxuICB0cmFuc2Zvcm1Db2x1bW5zRm9yTWVzdXJzKGlucHV0Q29sdW1ucykge1xuICAgIGNvbnN0IG1lYXN1cmUgPSBbXVxuICAgIGlucHV0Q29sdW1ucy5mb3JFYWNoKGNvbCA9PiB7XG5cblxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG1lYXN1cmU7XG4gIH1cblxuXG4gIGFkZEZpbHRlcigpIHtcbiAgICBsZXQgb2JqID0ge1xuICAgICAgXCJ0eXBlXCI6IFwiXCIsXG4gICAgICBcInZhbHVlXCI6IFwiXCIsXG4gICAgICBcImtleVwiOiBcIlwiLFxuICAgICAgXCJkaXNwbGF5XCI6IFwiXCIsXG4gICAgICBcInBsYWNlaG9sZGVyXCI6IFwiXCJcbiAgICB9XG4gICAgdGhpcy5xdWVyeUJ1bGRlckRhdGFzZXQucXVlcnlDb25maWcuZmlsdGVyLnB1c2gob2JqKTtcbiAgfVxuXG4gIGRlbGV0ZUZpbHRlcihpKSB7XG4gICAgdGhpcy5xdWVyeUJ1bGRlckRhdGFzZXQucXVlcnlDb25maWcuZmlsdGVyLnNwbGljZShpLCAxKTtcbiAgfVxuICBhZGRQYXJhbXMoKSB7XG4gICAgbGV0IG9iaiA9IHtcbiAgICAgIFwibmFtZVwiOiBcIlwiLFxuICAgICAgXCJ2YWx1ZVwiOiBcIlwiLFxuICAgIH1cbiAgICB0aGlzLnJlcUZpZWxkc0RhdGFTb3VyY2UucHVzaChvYmopO1xuICB9XG5cblxuICBkZWxldGVQYXJhbXMoaSkge1xuICAgIHRoaXMucmVxRmllbGRzRGF0YVNvdXJjZS5zcGxpY2UoaSwgMSlcbiAgfVxuXG4gIGFkZFNob3J0Q29sdW1ucygpIHtcbiAgICB0aGlzLnF1ZXJ5QnVsZGVyRGF0YXNldC5xdWVyeUNvbmZpZy5zb3J0ZXJzLnB1c2goeyBcImNvbHVtbk5hbWVcIjogXCJcIiwgXCJkZXNjZW5kaW5nXCI6IGZhbHNlIH0pXG4gIH1cblxuXG4gIGRlbGV0ZVNob3J0Q29sdW1ucyhpKSB7XG4gICAgdGhpcy5xdWVyeUJ1bGRlckRhdGFzZXQucXVlcnlDb25maWcuc29ydGVycy5zcGxpY2UoaSwgMSlcbiAgfVxuXG4gIHNhdmVQYXJhbXMoKSB7XG4gICAgbGV0IHBhZ2luYXRpb25SZXF1aXJlZEV4aXN0cyA9IGZhbHNlO1xuICAgIHRoaXMucXVlcnlCdWxkZXJEYXRhc2V0LnF1ZXJ5Q29uZmlnLnJlcUZpZWxkcyA9IHRoaXMucmVxRmllbGRzRGF0YVNvdXJjZS5tYXAoaXRlbSA9PiB7XG4gICAgICBjb25zdCBuZXdPYmo6IGFueSA9IHt9O1xuICAgICAgaWYgKGl0ZW0ubmFtZSA9PT0gXCJwYWdpbmF0aW9uUmVxdWlyZWRcIikge1xuICAgICAgICBwYWdpbmF0aW9uUmVxdWlyZWRFeGlzdHMgPSB0cnVlO1xuICAgICAgICBuZXdPYmpbaXRlbS5uYW1lXSA9IGl0ZW0udmFsdWUgPT09IFwidHJ1ZVwiO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgaXRlbS52YWx1ZSA9PT0gXCJzdHJpbmdcIiAmJiAhaXNOYU4oaXRlbS52YWx1ZSBhcyBhbnkpICYmIGl0ZW0udmFsdWUudHJpbSgpICE9PSBcIlwiKSB7XG4gICAgICAgIG5ld09ialtpdGVtLm5hbWVdID0gTnVtYmVyKGl0ZW0udmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbmV3T2JqW2l0ZW0ubmFtZV0gPSBpdGVtLnZhbHVlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbmV3T2JqO1xuICAgIH0pO1xuXG4gICAgaWYgKCFwYWdpbmF0aW9uUmVxdWlyZWRFeGlzdHMpIHtcbiAgICAgIHRoaXMucXVlcnlCdWxkZXJEYXRhc2V0LnF1ZXJ5Q29uZmlnLnJlcUZpZWxkcy5wdXNoKHsgcGFnaW5hdGlvblJlcXVpcmVkOiBcImZhbHNlXCIgfSk7XG4gICAgfVxuXG4gICAgLy8gdGhpcy5zYXZlRGF0YVRvU3RvcmUoKTtcbiAgICB0aGlzLnRvYXN0ci5zdWNjZXNzKCdQYWdpbmF0aW9uIFJlcXVlc3QgUGFyYW1zIFNhdmVkIFN1Y2Nlc3NmdWxseScpO1xuICB9XG5cblxuICBhZGRGaWx0ZXJNYXBpbmdDb2x1bW5zKCkge1xuICAgIGxldCBvYmogPSB7IFwibG9jYWxDb2x1bW5cIjogXCJcIiwgXCJzZXJ2ZXJDb2x1bW5cIjogXCJcIiwgXCJvcGVyYXRvck5hbWVcIjogXCJcIiwgXCJkZWZhdWx0VmFsdWVcIjogXCJcIiwgXCJkYXRhVHlwZVwiOiBcIlwiLFwiZm9ybWF0dGVyXCI6XCJcIiB9XG4gICAgdGhpcy5xdWVyeUJ1bGRlckRhdGFzZXQucXVlcnlDb25maWcubWFwZWRGaWx0ZXJzLnB1c2gob2JqKTtcblxuICB9XG5cbiAgZGVsZXRlRmlsdGVyTWFwaW5nQ29sdW1ucyhpKSB7XG4gICAgdGhpcy5xdWVyeUJ1bGRlckRhdGFzZXQucXVlcnlDb25maWcubWFwZWRGaWx0ZXJzLnNwbGljZShpLCAxKVxuICB9XG5cbiAgbW92ZUl0ZW1Gb3JDb2x1bW5zKGluZGV4OiBudW1iZXIsIGRpcmVjdGlvbjogJ3VwJyB8ICdkb3duJyk6IHZvaWQge1xuICAgIC8vIFByZXZlbnQgbW92aW5nIGJleW9uZCBhcnJheSBib3VuZHNcbiAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IHRoaXMucXVlcnlCdWxkZXJEYXRhc2V0LnF1ZXJ5Q29uZmlnLm1hcGVkRmlsdGVycy5sZW5ndGgpIHJldHVybjtcbiAgICBjb25zdCBuZXdQb3NpdGlvbiA9IGRpcmVjdGlvbiA9PT0gJ3VwJyA/IGluZGV4IC0gMSA6IGluZGV4ICsgMTtcbiAgICAvLyBQcmV2ZW50IG1vdmluZyBiZXlvbmQgYXJyYXkgYm91bmRzXG4gICAgaWYgKG5ld1Bvc2l0aW9uIDwgMCB8fCBuZXdQb3NpdGlvbiA+PSB0aGlzLnF1ZXJ5QnVsZGVyRGF0YXNldC5xdWVyeUNvbmZpZy5tYXBlZEZpbHRlcnMubGVuZ3RoKSByZXR1cm47XG5cbiAgICAvLyBNb3ZlIGl0ZW1cbiAgICBjb25zdCBpdGVtVG9Nb3ZlID0gdGhpcy5xdWVyeUJ1bGRlckRhdGFzZXQucXVlcnlDb25maWcubWFwZWRGaWx0ZXJzW2luZGV4XTtcbiAgICB0aGlzLnF1ZXJ5QnVsZGVyRGF0YXNldC5xdWVyeUNvbmZpZy5tYXBlZEZpbHRlcnMuc3BsaWNlKGluZGV4LCAxKTsgLy8gUmVtb3ZlIGl0ZW0gZnJvbSBjdXJyZW50IHBvc2l0aW9uXG4gICAgdGhpcy5xdWVyeUJ1bGRlckRhdGFzZXQucXVlcnlDb25maWcubWFwZWRGaWx0ZXJzLnNwbGljZShuZXdQb3NpdGlvbiwgMCwgaXRlbVRvTW92ZSk7IC8vIEluc2VydCBpdGVtIGluIG5ldyBwb3NpdGlvblxuICB9XG4gIG1vdmVJdGVtRm9yTWVhc3VyZXNDb2x1bW5zKGluZGV4OiBudW1iZXIsIGRpcmVjdGlvbjogJ3VwJyB8ICdkb3duJyk6IHZvaWQge1xuICAgIC8vIFByZXZlbnQgbW92aW5nIGJleW9uZCBhcnJheSBib3VuZHNcbiAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IHRoaXMucXVlcnlCdWxkZXJEYXRhc2V0LnF1ZXJ5Q29uZmlnLmNvbHVtbnMubGVuZ3RoKSByZXR1cm47XG4gICAgY29uc3QgbmV3UG9zaXRpb24gPSBkaXJlY3Rpb24gPT09ICd1cCcgPyBpbmRleCAtIDEgOiBpbmRleCArIDE7XG4gICAgLy8gUHJldmVudCBtb3ZpbmcgYmV5b25kIGFycmF5IGJvdW5kc1xuICAgIGlmIChuZXdQb3NpdGlvbiA8IDAgfHwgbmV3UG9zaXRpb24gPj0gdGhpcy5xdWVyeUJ1bGRlckRhdGFzZXQucXVlcnlDb25maWcuY29sdW1ucy5sZW5ndGgpIHJldHVybjtcblxuICAgIC8vIE1vdmUgaXRlbVxuICAgIGNvbnN0IGl0ZW1Ub01vdmUgPSB0aGlzLnF1ZXJ5QnVsZGVyRGF0YXNldC5xdWVyeUNvbmZpZy5jb2x1bW5zW2luZGV4XTtcbiAgICB0aGlzLnF1ZXJ5QnVsZGVyRGF0YXNldC5xdWVyeUNvbmZpZy5jb2x1bW5zLnNwbGljZShpbmRleCwgMSk7IC8vIFJlbW92ZSBpdGVtIGZyb20gY3VycmVudCBwb3NpdGlvblxuICAgIHRoaXMucXVlcnlCdWxkZXJEYXRhc2V0LnF1ZXJ5Q29uZmlnLmNvbHVtbnMuc3BsaWNlKG5ld1Bvc2l0aW9uLCAwLCBpdGVtVG9Nb3ZlKTsgLy8gSW5zZXJ0IGl0ZW0gaW4gbmV3IHBvc2l0aW9uXG4gIH1cblxuXG5cblxuICBjaGVja0ZvclF1ZXJ5KCkge1xuICAgIGxldCB0cmFuc2Zvcm1lZE9iamVjdDogYW55ID0ge307XG5cbiAgICBmb3IgKGxldCBpdGVtIG9mIHRoaXMucXVlcnlCdWxkZXJEYXRhc2V0LnF1ZXJ5Q29uZmlnLnJlcUZpZWxkcykge1xuICAgICAgY29uc3Qga2V5ID0gT2JqZWN0LmtleXMoaXRlbSlbMF07XG4gICAgICBjb25zdCB2YWx1ZSA9IE9iamVjdC52YWx1ZXMoaXRlbSlbMF07XG5cbiAgICAgIGlmIChrZXkgPT09ICdzdGFydERhdGUnKSB7XG4gICAgICAgIHRyYW5zZm9ybWVkT2JqZWN0LnJlY29yZERhdGUgPSB2YWx1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRyYW5zZm9ybWVkT2JqZWN0W2tleV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgdHJhbnNmb3JtZWRPYmplY3RbJ2RpbWVuc2lvbnMnXSA9IHRoaXMucXVlcnlCdWxkZXJEYXRhc2V0LnF1ZXJ5Q29uZmlnLmRpbWVuc2lvbnM7XG4gICAgdHJhbnNmb3JtZWRPYmplY3RbJ21lYXN1cmVzJ10gPSB0aGlzLnF1ZXJ5QnVsZGVyRGF0YXNldC5xdWVyeUNvbmZpZy5tZWFzdXJlcztcbiAgICB0cmFuc2Zvcm1lZE9iamVjdFsnZmlsdGVycyddID0gdGhpcy50cmFuc2Zvcm1EYXRhRm9yTUZpbHRlcih0aGlzLnF1ZXJ5QnVsZGVyRGF0YXNldC5xdWVyeUNvbmZpZy5tYXBlZEZpbHRlcnMpOztcbiAgICB0cmFuc2Zvcm1lZE9iamVjdFsnc29ydGVycyddID0gdGhpcy5xdWVyeUJ1bGRlckRhdGFzZXQucXVlcnlDb25maWcuc29ydGVycztcbiAgICB0cmFuc2Zvcm1lZE9iamVjdFtcInBhZ2luYXRpb25SZXF1aXJlZFwiXSA9IHRydWU7XG4gICAgY29uc29sZS5sb2codHJhbnNmb3JtZWRPYmplY3QpO1xuXG4gICAgdGhpcy5zZXJ2aWNlLnZhbGlkYXRlQWdncmVnYXRlUGFnaW5hdGVkUXVlcnkodHJhbnNmb3JtZWRPYmplY3QpLnN1YnNjcmliZShkYXRhID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKGRhdGEpO1xuICAgICAgdGhpcy5xdWVyeV9kYXRhID0gZGF0YS5xdWVyeVxuICAgICAgdGhpcy5pc01vZGVsVmlzaWJsZSA9IHRydWU7XG4gICAgfSwgZXJyID0+IHtcbiAgICAgIHRoaXMudG9hc3RyLmVycm9yKCdVbmV4cGVjdGVkIFNlcnZlciBFeGNlcHRpb24uIFBsZWFzZSBjb250YWN0IFN5c3RlbSBBZG1pbi4nKVxuICAgIH0pXG4gIH1cblxuICBjbG9zZU1vZGFsVmlzaWJsZU1vZGFsKCkge1xuICAgIHRoaXMuaXNNb2RlbFZpc2libGUgPSBmYWxzZTtcbiAgICB0aGlzLnF1ZXJ5X2RhdGEgPSAnJztcbiAgfVxuXG4gIHRyYW5zZm9ybURhdGFGb3JNRmlsdGVyKG1hcGZpbHRlcikge1xuICAgIGxldCByZXN1bHQgPSBbXTtcbiAgICBtYXBmaWx0ZXIuZm9yRWFjaChtYXBwaW5nID0+IHtcbiAgICAgIGxldCByZXN1bHRPYmogPSB7XG4gICAgICAgIGNvbHVtbk5hbWU6IG1hcHBpbmcuc2VydmVyQ29sdW1uLFxuICAgICAgICBkYXRhVHlwZTogbWFwcGluZy5kYXRhVHlwZSxcbiAgICAgICAgZm9ybWF0dGVyOiBtYXBwaW5nLmZvcm1hdHRlcixcbiAgICAgICAgb3BlcmF0b3I6IG1hcHBpbmcub3BlcmF0b3JOYW1lLFxuICAgICAgICB2YWx1ZTogbWFwcGluZy5kZWZhdWx0VmFsdWVcbiAgICAgIH07XG4gICAgICByZXN1bHQucHVzaChyZXN1bHRPYmopO1xuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuXG4gIGNvcHlTcWxGcm9tTW9kYWwoKSB7XG4gICAgY29uc3QgbGlzdGVuZXIgPSAoZTogQ2xpcGJvYXJkRXZlbnQpID0+IHtcbiAgICAgIGUuY2xpcGJvYXJkRGF0YSEuc2V0RGF0YSgndGV4dC9wbGFpbicsIHRoaXMucXVlcnlfZGF0YSk7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgfTtcbiAgICB0aGlzLmlzU3FsQ29waWVkVGV4dCA9IHRydWU7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY29weScsIGxpc3RlbmVyKTtcbiAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgnY29weScpO1xuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NvcHknLCBsaXN0ZW5lcik7XG4gIH1cblxuICBjcmVhdGVEYXRhU2V0KCkge1xuICAgIHRoaXMuZ2V0UXVlcnlCdWxiZGVyRGF0YVNldC5lbWl0KHRoaXMucXVlcnlCdWxkZXJEYXRhc2V0KVxuICB9XG5cbiAgZ2V0UXVlcnlGb3JEZXRhaWxzRGF0YShlKSB7XG4gICAgaWYgKGUudmFsdWUgPT0gJ0Jhc2ljJykge1xuICAgICAgdGhpcy5xdWVyeUJ1bGRlckRhdGFzZXQuYXBpID0gJy9rcGkvZ2VuZXJpY0RldGFpbERhdGFSZXNwb25zZSdcbiAgICAgIHRoaXMucXVlcnlCdWxkZXJEYXRhc2V0LnF1ZXJ5Q29uZmlnLmNvbHVtbnMgPSBbXTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5xdWVyeUJ1bGRlckRhdGFzZXQuYXBpID0gJy9rcGkvZ2VuZXJpY0FnZ3JlZ2F0ZVBhZ2luYXRlZEtwaVNlcnZpY2VSZXNwb25zZSc7XG4gICAgfVxuICB9XG5cblxuICBnZXREYXRhQ29uZmlnKGUpIHtcblxuICAgIGlmIChlLmV2ZW50KSB7XG4gICAgICB0aGlzLnNlbGVjdGVkRGF0YVNvdXJjZSA9IGUudmFsdWU7XG4gICAgICB0aGlzLmlzUXVlcnlUeXBlU2VsZWN0ID0gdHJ1ZTtcbiAgICB9XG5cbiAgfVxuXG5cbiAgYWRkSGF2aW5nc0NvbHVtZSgpIHtcbiAgICBsZXQgb2JqID0ge1xuICAgICAgXCJjb2x1bW5OYW1lXCI6IFwiXCIsXG4gICAgICBcImFkdmFuY2VkQ29sdW1uXCI6IFwiXCIsXG4gICAgICBcImRhdGFUeXBlXCI6IFwiXCIsXG4gICAgICBcIm9wZXJhdG9yXCI6IFwiXCIsXG4gICAgICBcInZhbHVlXCI6IFwiXCJcbiAgICB9XG4gICAgdGhpcy5xdWVyeUJ1bGRlckRhdGFzZXQucXVlcnlDb25maWcuaGF2aW5ncy5wdXNoKG9iaik7XG4gIH1cblxuICBkZWxldGVIYXZpbmdzQ29sdW1lKGkpIHtcbiAgICB0aGlzLnF1ZXJ5QnVsZGVyRGF0YXNldC5xdWVyeUNvbmZpZy5oYXZpbmdzLnNwbGljZShpLCAxKTtcbiAgfVxuXG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJtLTJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBtYi0yXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJteC0yIHctMS8zXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+RW5kIFBvaW50PC9kaXY+XG4gICAgICAgICAgICA8ZHgtdGV4dC1ib3ggWyhuZ01vZGVsKV09XCJxdWVyeUJ1bGRlckRhdGFzZXQuYXBpXCI+PC9keC10ZXh0LWJveD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJteC0yIHctMS8zXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+UXVlcnkgVHlwZTwvZGl2PlxuICAgICAgICAgICAgPGR4LXNlbGVjdC1ib3ggW2RhdGFTb3VyY2VdPVwiWydBZ2dyZWdhdGUnLCdCYXNpYyddXCIgKG9uVmFsdWVDaGFuZ2VkKT1cImdldFF1ZXJ5Rm9yRGV0YWlsc0RhdGEoJGV2ZW50KVwiPlxuICAgICAgICAgICAgPC9keC1zZWxlY3QtYm94PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm14LTIgdy0xLzMgbXQtNlwiICpuZ0lmPVwic2VsZWN0ZWREYXRhU291cmNlID09ICdtb25nbydcIj5cbiAgICAgICAgICAgIDxkeC1jaGVjay1ib3ggWyhuZ01vZGVsKV09XCJpc1JlY29uQ29sdW1lXCIgdGV4dD0nUmVjb24gQ29sdW1uJz5cbiAgICAgICAgICAgIDwvZHgtY2hlY2stYm94PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGZsZXgtYXV0byBtaW4tdy0wIG15LTNcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbGcgcHktMiBmb250LWV4dHJhYm9sZCBib3JkZXItYiBiZy1ncmF5LTcwMCB0ZXh0LXdoaXRlIHB4LTJcIj4gUmVxdWVzdCBQYXJhbXNcbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwdC0yIGJvcmRlci14IGJvcmRlci1iIFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgZ3JpZC1jb2xzLTIgZ2FwLTQgdy1mdWxsIHAtMlwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS0yIGZsZXggZmxleC1yb3cgcHgtMiBib3JkZXItclwiICpuZ0Zvcj1cImxldCBpdGVtIG9mIHJlcUZpZWxkc0RhdGFTb3VyY2U7IGxldCBpID0gaW5kZXg7XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0yIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj4gUGFyYW1zIE5hbWU8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBbKG5nTW9kZWwpXT1cIml0ZW0ubmFtZVwiPjwvZHgtdGV4dC1ib3g+XG5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0yIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj4gUGFyYW1zIFZhbHVlIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0ubmFtZSA9PSAnZGJDb25maWcnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXNlbGVjdC1ib3ggW2l0ZW1zXT1cIlsnbW9uZ28nLCdpbXBhbGEnLCdwb3N0Z3JlcycsJ215c3FsJywnYmlncXVlcnknXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvblZhbHVlQ2hhbmdlZCk9XCJnZXREYXRhQ29uZmlnKCRldmVudClcIiBbKG5nTW9kZWwpXT1cIml0ZW0udmFsdWVcIj48L2R4LXNlbGVjdC1ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtLm5hbWUgIT09ICdkYkNvbmZpZydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggWyhuZ01vZGVsKV09XCJpdGVtLnZhbHVlXCI+PC9keC10ZXh0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMiBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgbXQtOFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX2Rhbmdlcl9zbX19IGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cImRlbGV0ZVBhcmFtcyhpKVwiPjxpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZhIGZhLXRyYXNoLW9cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IG15LTIganVzdGlmeS1lbmRcIj5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInRleHQtc20gaXRhbGljIHRleHQtZ3JheS0zMDAgbXItNlwiPioqIFBsZWFzZSBTYXZlIFJlcXVlc3QgUGFyYW1zIEJlZm9yZSBTdWJtaXRcbiAgICAgICAgICAgICAgICAgICAgRGF0YXNldFxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9zdWNjZXNzX3NtfX0gY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwic2F2ZVBhcmFtcygpXCI+U2F2ZVxuICAgICAgICAgICAgICAgICAgICBQYXJhbXM8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9wcmltYXJ5X3NtfX0gY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiYWRkUGFyYW1zKClcIj5BZGRcbiAgICAgICAgICAgICAgICAgICAgUGFyYW1zPC9idXR0b24+XG5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc1F1ZXJ5VHlwZVNlbGVjdFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBmbGV4LWF1dG8gbWluLXctMCBteS0yXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1sZyBweS0yIGZvbnQtZXh0cmFib2xkIGJvcmRlci1iIGJnLWdyYXktNzAwIHRleHQtd2hpdGUgcHgtMlwiPiBDb2x1bW5zIGFuZCBNZWFzdXJlc1xuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHQtMiBib3JkZXIteCBib3JkZXItYiBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktMiBmbGV4IGp1c3RpZnktYmV0d2VlblwiXG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIHF1ZXJ5QnVsZGVyRGF0YXNldC5xdWVyeUNvbmZpZy5jb2x1bW5zOyBsZXQgaSA9IGluZGV4O1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+IE1lYXN1cmVzPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZHgtY2hlY2stYm94IFt2YWx1ZV09XCJpdGVtLm1lYXN1cmVzXCIgWyhuZ01vZGVsKV09XCJpdGVtLm1lYXN1cmVzXCI+PC9keC1jaGVjay1ib3g+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+IFZhbHVlIEZpZWxkKGFsaWFzTmFtZSk8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBbKG5nTW9kZWwpXT1cIml0ZW0uZGF0YUZpZWxkXCI+PC9keC10ZXh0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj4gU2VydmVyIENvbHVtbiBOYW1lPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggWyhuZ01vZGVsKV09XCJpdGVtLmNvbHVtbk5hbWVcIj48L2R4LXRleHQtYm94PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTEgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiPiBGdW5jdGlvbiBOYW1lPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZHgtc2VsZWN0LWJveCBbc2VhcmNoRW5hYmxlZF09XCJ0cnVlXCIgW2l0ZW1zXT1cImtwaV9mdW5jdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpdGVtLmZ1bmN0aW9uTmFtZVwiPjwvZHgtc2VsZWN0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj4gRW5yaWNoIE5hbWU8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1zZWxlY3QtYm94IFtzZWFyY2hFbmFibGVkXT1cInRydWVcIiBbaXRlbXNdPVwia3BpX2VucmljaG1lbnRfbmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpdGVtLmVucmljaEZ1bmN0aW9uXCI+PC9keC1zZWxlY3QtYm94PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTEgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiPiBBZHZhbmNlZCBDb2x1bW48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBbKG5nTW9kZWwpXT1cIml0ZW0uYWR2YW5jZWRDb2x1bW5cIj48L2R4LXRleHQtYm94PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTEgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiPiBDYXB0aW9uPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggWyhuZ01vZGVsKV09XCJpdGVtLmNhcHRpb25cIj48L2R4LXRleHQtYm94PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTEgbXQtOFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiaSAhPT0gMFwiIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9saWdodF9zbX19IGN1cnNvci1wb2ludGVyIG14LTFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwibW92ZUl0ZW1Gb3JNZWFzdXJlc0NvbHVtbnMoaSwgJ3VwJylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1hcnJvdy11cFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJpICE9PSBxdWVyeUJ1bGRlckRhdGFzZXQucXVlcnlDb25maWcuY29sdW1ucy5sZW5ndGggLSAxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX2xpZ2h0X3NtfX0gY3Vyc29yLXBvaW50ZXIgbXgtMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJtb3ZlSXRlbUZvck1lYXN1cmVzQ29sdW1ucyhpLCAnZG93bicpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtYXJyb3ctZG93blwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTEgbXQtOCB0ZXh0LWNlbnRlclwiPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9kYW5nZXJfc219fSBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJkZWxldGVDb2x1bW5zKGkpXCI+PGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmYSBmYS10cmFzaC1vXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cganVzdGlmeS1lbmQgbXktMlwiPlxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInRleHQtc20gaXRhbGljIHRleHQtZ3JheS0zMDAgbXItNlwiPioqIFBsZWFzZSBTYXZlIENvbHVtbnMgQW5kIE1lYXN1cmVzIEJlZm9yZSBTdWJtaXRcbiAgICAgICAgICAgICAgICAgICAgICAgIERhdGFzZXRcbiAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9zdWNjZXNzX3NtfX0gY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNhdmVDb2x1bW5zQW5kTWFzdXJlcygpXCI+U2F2ZVxuICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uczwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9wcmltYXJ5X3NtfX0gY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiYWRkQ29sdW1ucygpXCI+QWRkXG4gICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5zPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNSZWNvbkNvbHVtZVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZmxleC1hdXRvIG1pbi13LTAgbXktMlwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWxnIHB5LTIgZm9udC1leHRyYWJvbGQgYm9yZGVyLWIgYmctZ3JheS03MDAgdGV4dC13aGl0ZSBweC0yXCI+IEFkZCBSZWNvbiBDb2x1bW5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHQtMiBib3JkZXIteCBib3JkZXItYiBcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTIgZmxleCBqdXN0aWZ5LWJldHdlZW5cIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiByZWNvbkNvbHVtZURhdGFzb3VyY2U7IGxldCBpID0gaW5kZXg7XCI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+IFZhbHVlIEZpZWxkKGFsaWFzTmFtZSk8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggWyhuZ01vZGVsKV09XCJpdGVtLmRhdGFGaWVsZFwiPjwvZHgtdGV4dC1ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+IEZpcnN0IEtleTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBbKG5nTW9kZWwpXT1cIml0ZW0uY29sdW1lT25lXCI+PC9keC10ZXh0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTEgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj4gU2Vjb25kIEtleTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBbKG5nTW9kZWwpXT1cIml0ZW0uY29sdW1lVHdvXCI+PC9keC10ZXh0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiPiBFbnJpY2ggTmFtZTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1zZWxlY3QtYm94IFtzZWFyY2hFbmFibGVkXT1cInRydWVcIiBbaXRlbXNdPVwia3BpX2VucmljaG1lbnRfbmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiaXRlbS5lbnJpY2hGdW5jdGlvblwiPjwvZHgtc2VsZWN0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTEgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj4gUmVjb24gVHlwZTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1zZWxlY3QtYm94IFtzZWFyY2hFbmFibGVkXT1cInRydWVcIiBbaXRlbXNdPVwiWyd2YXJpYW5jZScsJ3BlcmNlbnRhZ2UnLCdhYnNvbHV0ZSddXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpdGVtLnJlY29uVHlwZVwiPjwvZHgtc2VsZWN0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiPiBDYXB0aW9uPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IFsobmdNb2RlbCldPVwiaXRlbS5jYXB0aW9uXCI+PC9keC10ZXh0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtdC04IHRleHQtY2VudGVyXCI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9kYW5nZXJfc219fSBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkZWxldGVSZWNvbkNvbHVtZShpKVwiPjxpIGNsYXNzPVwiZmEgZmEtdHJhc2gtb1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cganVzdGlmeS1lbmQgbXktMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5fc3VjY2Vzc19zbX19IGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2F2ZVJlY29uc0NvbHVtZSgpXCI+U2F2ZSBUb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbnM8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX3ByaW1hcnlfc219fSBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJhZGRSZWNvbkNvbHVtZSgpXCI+QWRkXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctY29udGFpbmVyPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZmxleC1hdXRvIG1pbi13LTAgbXktMlwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWxnIHB5LTIgZm9udC1leHRyYWJvbGQgYm9yZGVyLWIgYmctZ3JheS03MDAgdGV4dC13aGl0ZSBweC0yXCI+IEFkZCBIYXZpbmcgQ29sdW1uXG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB0LTIgYm9yZGVyLXggYm9yZGVyLWIgXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS0yIGZsZXgganVzdGlmeS1iZXR3ZWVuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIHF1ZXJ5QnVsZGVyRGF0YXNldC5xdWVyeUNvbmZpZy5oYXZpbmdzOyBsZXQgaSA9IGluZGV4O1wiPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtYi0yIHctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj4gQ29sdW1uIE5hbWU8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggWyhuZ01vZGVsKV09XCJpdGVtLmNvbHVtbk5hbWVcIj48L2R4LXRleHQtYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtYi0yIHctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj4gQWR2YW5jZWQgQ29sdW1uPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IFsobmdNb2RlbCldPVwiaXRlbS5hZHZhbmNlZENvbHVtblwiPjwvZHgtdGV4dC1ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG1iLTIgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiPiBEYXRhIFR5cGU8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggWyhuZ01vZGVsKV09XCJpdGVtLmRhdGFUeXBlXCI+PC9keC10ZXh0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtYi0yIHctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj4gT3BlcmF0b3I8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtc2VsZWN0LWJveCBbaXRlbXNdPVwiWydnZXQnLCdsdGUnXVwiIFsobmdNb2RlbCldPVwiaXRlbS5vcGVyYXRvclwiPjwvZHgtc2VsZWN0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtYi0yIHctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj4gVmFsdWU8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggWyhuZ01vZGVsKV09XCJpdGVtLnZhbHVlXCI+PC9keC10ZXh0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtdC04IHRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5fZGFuZ2VyX3NtfX0gY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlSGF2aW5nc0NvbHVtZShpKVwiPjxpIGNsYXNzPVwiZmEgZmEtdHJhc2gtb1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cganVzdGlmeS1lbmQgbXktMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5fcHJpbWFyeV9zbX19IGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cImFkZEhhdmluZ3NDb2x1bWUoKVwiPkFkZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhhdmluZ3NcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGZsZXgtYXV0byBtaW4tdy0wIG15LTNcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWxnIHB5LTIgZm9udC1leHRyYWJvbGQgYm9yZGVyLWIgYmctZ3JheS03MDAgdGV4dC13aGl0ZSBweC0yXCI+IFNvcnQgQnlcbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB0LTIgYm9yZGVyLXggYm9yZGVyLWIgXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgZ3JpZC1jb2xzLTIgZ2FwLTQgdy1mdWxsIHAtMlwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktMiBmbGV4IGZsZXgtcm93IHB4LTIgYm9yZGVyLXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgcXVlcnlCdWxkZXJEYXRhc2V0LnF1ZXJ5Q29uZmlnLnNvcnRlcnM7IGxldCBpID0gaW5kZXg7XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMiBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiPiBQYXJhbXMgTmFtZTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBbKG5nTW9kZWwpXT1cIml0ZW0uY29sdW1uTmFtZVwiPjwvZHgtdGV4dC1ib3g+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTIgbXQtOFwiPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LWNoZWNrLWJveCB0ZXh0PVwiRGVzY2VuZGluZ1wiIFsobmdNb2RlbCldPVwiaXRlbS5kZXNjZW5kaW5nXCI+PC9keC1jaGVjay1ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0yIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgbXQtOFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9kYW5nZXJfc219fSBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlU2hvcnRDb2x1bW5zKGkpXCI+PGkgY2xhc3M9XCJmYSBmYS10cmFzaC1vXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBteS0yIGp1c3RpZnktZW5kXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX3ByaW1hcnlfc219fSBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJhZGRTaG9ydENvbHVtbnMoKVwiPkFkZFxuICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uPC9idXR0b24+XG5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGZsZXgtYXV0byBtaW4tdy0wIG15LTJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWxnIHB5LTIgZm9udC1leHRyYWJvbGQgYm9yZGVyLWIgYmctZ3JheS03MDAgdGV4dC13aGl0ZSBweC0yXCI+IEZpbHRlciBNYXBpbmdcbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB0LTIgYm9yZGVyLXggYm9yZGVyLWIgXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTIgZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWJldHdlZW5cIlxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBxdWVyeUJ1bGRlckRhdGFzZXQucXVlcnlDb25maWcubWFwZWRGaWx0ZXJzOyBsZXQgaSA9IGluZGV4O1wiPlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG1iLTIgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+IExvY2FsIENvbHVtbjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IFsobmdNb2RlbCldPVwiaXRlbS5sb2NhbENvbHVtblwiPjwvZHgtdGV4dC1ib3g+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtYi0yIHctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiPiBTZXJ2ZXIgQ29sdW1uPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggWyhuZ01vZGVsKV09XCJpdGVtLnNlcnZlckNvbHVtblwiPjwvZHgtdGV4dC1ib3g+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtYi0yIHctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiPiBPcGVyYXRvcjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXNlbGVjdC1ib3ggW3NlYXJjaEVuYWJsZWRdPVwidHJ1ZVwiIFtpdGVtc109XCJrcGlfb3BlcmF0b3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiaXRlbS5vcGVyYXRvck5hbWVcIj48L2R4LXNlbGVjdC1ib3g+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtYi0yIHctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiPiBEYXRhdHlwZTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXNlbGVjdC1ib3ggW3NlYXJjaEVuYWJsZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2l0ZW1zXT1cIlsnZGF0ZScsJ3N0cmluZycsJ3RpbWVzdGFtcCcsJ2ludCcsICdkb3VibGUnLCAnYm9vbGVhbiddXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIml0ZW0uZGF0YVR5cGVcIj48L2R4LXNlbGVjdC1ib3g+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+IEZvcm1hdHRlcjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IFsobmdNb2RlbCldPVwiaXRlbS5mb3JtYXR0ZXJcIj48L2R4LXRleHQtYm94PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTEgbWItMiB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj4gRGVmYXVsdCBWYWx1ZTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IFsobmdNb2RlbCldPVwiaXRlbS5kZWZhdWx0VmFsdWVcIj48L2R4LXRleHQtYm94PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTEgbXQtOFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiaSAhPT0gMFwiIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9saWdodF9zbX19IGN1cnNvci1wb2ludGVyIG14LTFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwibW92ZUl0ZW1Gb3JDb2x1bW5zKGksICd1cCcpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtYXJyb3ctdXBcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiaSAhPT0gcXVlcnlCdWxkZXJEYXRhc2V0LnF1ZXJ5Q29uZmlnLm1hcGVkRmlsdGVycy5sZW5ndGggLSAxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX2xpZ2h0X3NtfX0gY3Vyc29yLXBvaW50ZXIgbXgtMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJtb3ZlSXRlbUZvckNvbHVtbnMoaSwgJ2Rvd24nKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWFycm93LWRvd25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG10LTggdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX2Rhbmdlcl9zbX19IGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlRmlsdGVyTWFwaW5nQ29sdW1ucyhpKVwiPjxpIGNsYXNzPVwiZmEgZmEtdHJhc2gtb1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3dcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xLzJcIiAqbmdJZj1cInNlbGVjdGVkRGF0YVNvdXJjZSAhPT0gJ21vbmdvJ1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBqdXN0aWZ5LXN0YXJ0IG15LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuT3RoZXJzUHVycGxlfX0gY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiY2hlY2tGb3JRdWVyeSgpXCI+Q2hlY2tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBRdWVyeTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGp1c3RpZnktZW5kIG15LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX3ByaW1hcnlfc219fSBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFkZEZpbHRlck1hcGluZ0NvbHVtbnMoKVwiPkFkZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hcGluZzwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCB3LWZ1bGwganVzdGlmeS1lbmQgbXQtNSBib3JkZXItdFwiPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5fc3VjY2Vzc19tZH19IGN1cnNvci1wb2ludGVyIG14LTEgbXktMlwiIChjbGljayk9XCJjcmVhdGVEYXRhU2V0KClcIj5cbiAgICAgICAgICAgICAgICBTdWJtaXQgRGF0YVNldFxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG5cbjwvZGl2PlxuXG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJpc01vZGVsVmlzaWJsZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJmaXhlZCBpbnNldC0wIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHotNTAgYmctYmxhY2sgYmctb3BhY2l0eS01MFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicmVsYXRpdmUgcC00IHctZnVsbCBtYXgtdy0zeGwgbWF4LWgtZnVsbFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlbGF0aXZlIGJnLXdoaXRlIHJvdW5kZWQtbGcgc2hhZG93ICBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIHAtNCBtZDpwLTUgYm9yZGVyLWIgcm91bmRlZC10IFwiPlxuICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJ0ZXh0LXhsIGZvbnQtc2VtaWJvbGQgdGV4dC1ncmF5LTkwMCBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIFF1ZXJ5IDwvaDM+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJjbG9zZU1vZGFsVmlzaWJsZU1vZGFsKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LWdyYXktNDAwIGJnLXRyYW5zcGFyZW50IGhvdmVyOmJnLWdyYXktMjAwIGhvdmVyOnRleHQtZ3JheS05MDAgcm91bmRlZC1sZyB0ZXh0LXNtIHctOCBoLTggbXMtYXV0byBpbmxpbmUtZmxleCBqdXN0aWZ5LWNlbnRlciBpdGVtcy1jZW50ZXIgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtbW9kYWwtaGlkZT1cInN0YXRpYy1tb2RhbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cInctMyBoLTNcIiBhcmlhLWhpZGRlbj1cInRydWVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTQgMTRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiBzdHJva2Utd2lkdGg9XCIyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIm0xIDEgNiA2bTAgMCA2IDZNNyA3bDYtNk03IDdsLTYgNlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiPkNsb3NlPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8IS0tIE1vZGFsIGJvZHkgLS0+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctNjkgcC01XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGJnLWdyYXktODAwIHRleHQtd2hpdGUgdGV4dC1sZyBwLTQgcm91bmRlZC1tZCB0ZXh0LXdyYXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxjb2RlPlxuICAgICAgICAgICAgICAgICAgICAgICAge3txdWVyeV9kYXRhfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvY29kZT5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGJvcmRlci10IGJvcmRlci1ncmF5LTIwMCByb3VuZGVkLWIgcC0yIGp1c3RpZnktZW5kXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1ncmF5LTcwMCBweC0yXCIgKm5nSWY9XCJpc1NxbENvcGllZFRleHRcIj5Db3BpZWQ8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gZGF0YS1tb2RhbC1oaWRlPVwic3RhdGljLW1vZGFsXCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9zdWNjZXNzX3NtfX0gcHktMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY29weVNxbEZyb21Nb2RhbCgpXCI+Q29weTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9uZy1jb250YWluZXI+Il19