@tsi-developpement/tsi-shared-ui 1.8.37 → 1.8.39

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 (34) hide show
  1. package/esm2022/lib/consts/business-class-names.mjs +3 -1
  2. package/esm2022/lib/end-points/endpoints.mjs +7 -2
  3. package/esm2022/lib/models/actionErp/actionErp.mjs +7 -1
  4. package/esm2022/lib/models/actionErp/nature-action.mjs +6 -0
  5. package/esm2022/lib/models/tsi-card/tsi-card.mjs +1 -1
  6. package/esm2022/lib/services/actionErp/nature-action-service.service.mjs +23 -0
  7. package/esm2022/lib/tsi-components/manage-import-export/manage-import-export.component.mjs +9 -1
  8. package/esm2022/lib/tsi-components/output-components/tsi-generic-grid/tsi-generic-grid.component.mjs +18 -3
  9. package/esm2022/lib/tsi-components/output-components/tsi-view-grid/tsi-view-grid.component.mjs +1 -1
  10. package/esm2022/lib/tsi-components/tsi-action-erp-create-or-edit/tsi-action-erp-create-or-edit.component.mjs +182 -25
  11. package/esm2022/lib/tsi-components/tsi-calender/context-menu/context-menu.component.mjs +16 -4
  12. package/esm2022/lib/tsi-components/tsi-calender/tsi-calender.component.mjs +30 -3
  13. package/esm2022/lib/tsi-components/tsi-card/tsi-card.component.mjs +50 -23
  14. package/esm2022/lib/tsi-components/tsi-card-list/tsi-card-list.component.mjs +14 -4
  15. package/esm2022/lib/tsi-components/tsi-generic-crud/tsi-generic-crud.component.mjs +17 -5
  16. package/esm2022/lib/tsi-components/tsi-kanban/tsi-kanban.component.mjs +48 -22
  17. package/fesm2022/tsi-developpement-tsi-shared-ui.mjs +395 -84
  18. package/fesm2022/tsi-developpement-tsi-shared-ui.mjs.map +1 -1
  19. package/lib/consts/business-class-names.d.ts +2 -0
  20. package/lib/end-points/endpoints.d.ts +5 -0
  21. package/lib/models/actionErp/actionErp.d.ts +10 -0
  22. package/lib/models/actionErp/nature-action.d.ts +12 -0
  23. package/lib/models/tsi-card/tsi-card.d.ts +1 -0
  24. package/lib/providers/shared-ui-tsi.provider.d.ts +1 -1
  25. package/lib/services/actionErp/nature-action-service.service.d.ts +12 -0
  26. package/lib/tsi-components/manage-reporting/add-report-popup/add-report-popup.component.d.ts +3 -0
  27. package/lib/tsi-components/output-components/tsi-generic-grid/tsi-generic-grid.component.d.ts +6 -1
  28. package/lib/tsi-components/tsi-action-erp-create-or-edit/tsi-action-erp-create-or-edit.component.d.ts +19 -4
  29. package/lib/tsi-components/tsi-calender/context-menu/context-menu.component.d.ts +5 -1
  30. package/lib/tsi-components/tsi-calender/tsi-calender.component.d.ts +6 -1
  31. package/lib/tsi-components/tsi-card/tsi-card.component.d.ts +15 -5
  32. package/lib/tsi-components/tsi-card-list/tsi-card-list.component.d.ts +5 -1
  33. package/lib/tsi-components/tsi-kanban/tsi-kanban.component.d.ts +14 -6
  34. package/package.json +1 -1
@@ -146,6 +146,14 @@ export class ManageImportExportComponent extends TsiFormComponentBaseComponent {
146
146
  header: "shared_import_result_total_lines_number",
147
147
  field: "totalLinesNumber",
148
148
  type: DisplayTypes.INTEGER_DISPLAY
149
+ },
150
+ {
151
+ header: "shared_import_result_sens",
152
+ field: "sens"
153
+ },
154
+ {
155
+ header: "shared_import_result_mode",
156
+ field: "mode"
149
157
  }
150
158
  ];
151
159
  this.searchFields = [
@@ -499,4 +507,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
499
507
  type: ViewChild,
500
508
  args: ['importFileToExecuteFileUpload']
501
509
  }] } });
502
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlLWltcG9ydC1leHBvcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHNpLXNoYXJlZC11aS9zcmMvbGliL3RzaS1jb21wb25lbnRzL21hbmFnZS1pbXBvcnQtZXhwb3J0L21hbmFnZS1pbXBvcnQtZXhwb3J0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RzaS1zaGFyZWQtdWkvc3JjL2xpYi90c2ktY29tcG9uZW50cy9tYW5hZ2UtaW1wb3J0LWV4cG9ydC9tYW5hZ2UtaW1wb3J0LWV4cG9ydC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFeEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUNyRyxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSx3RUFBd0UsQ0FBQztBQUMzSCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUNsRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFbkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDakUsT0FBTyxFQUFFLFVBQVUsRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRWxGLE9BQU8sRUFBRSxvQkFBb0IsRUFBNkIsTUFBTSxjQUFjLENBQUM7QUFFL0UsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0saUVBQWlFLENBQUM7QUFDaEgsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFB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QUFTOytCQUNFLDBCQUEwQixhQUl6QixDQUFDLEdBQUcsWUFBWSxDQUFDOzJTQUlLLGFBQWE7c0JBQTdDLFNBQVM7dUJBQUMsb0JBQW9CO2dCQUNOLFlBQVk7c0JBQXBDLFNBQVM7dUJBQUMsWUFBWTtnQkFDQSxpQkFBaUI7c0JBQXZDLFNBQVM7dUJBQUMsVUFBVTtnQkFnRHVCLDZCQUE2QjtzQkFBeEUsU0FBUzt1QkFBQywrQkFBK0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRmlsZVVwbG9hZCB9IGZyb20gJ3ByaW1lbmcvZmlsZXVwbG9hZCc7XHJcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEFsZXJ0SW1wb3J0TWVzc2FnZUNvbXBvbmVudCB9IGZyb20gJy4uL2FsZXJ0LWltcG9ydC1tZXNzYWdlL2FsZXJ0LWltcG9ydC1tZXNzYWdlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENyZWF0ZU9yRWRpdE1vZGVsZUltcG9ydENvbXBvbmVudCB9IGZyb20gJy4uL2NyZWF0ZS1vci1lZGl0LW1vZGVsZS1pbXBvcnQvY3JlYXRlLW9yLWVkaXQtbW9kZWxlLWltcG9ydC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUc2lWaWV3R3JpZENvbXBvbmVudCB9IGZyb20gJy4uL291dHB1dC1jb21wb25lbnRzL3RzaS12aWV3LWdyaWQvdHNpLXZpZXctZ3JpZC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUb29sdGlwUG9zaXRpb24gfSBmcm9tICcuLi8uLi9lbnVtcy90b29sdGlwUG9zaXRpb24uZW51bSc7XHJcbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBMb2NhbGl6YXRpb25LZXlzIH0gZnJvbSAnLi4vLi4vY29uc3RzL2xvY2FsaXphdGlvbi1rZXknO1xyXG5pbXBvcnQgeyBJbnB1dFR5cGVzLCBGaWx0ZXJPcGVyYXRvclR5cGUsIE1vZGVzLCBEaXNwbGF5VHlwZXMgfSBmcm9tICcuLi8uLi9lbnVtcyc7XHJcbmltcG9ydCB7IEdyaWRDb2x1bW4sIEJ1dHRvbkNsaWNrUmVzdWx0IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IEV4ZWN1dGVJbXBvcnRSZXF1ZXN0LCBJbXBvcnRSZXN1bHQsIFNlYXJjaEZpZWxkIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcclxuaW1wb3J0IHsgTW9kZWxlSW1wb3J0U2VydmljZSwgVHNpQ29uZmlybWF0aW9uU2VydmljZSwgVHNpTm90aWZpY2F0aW9uU2VydmljZSwgRXJyb3JSZXNwb25zZU1hbmFnZXJTZXJ2aWNlLCBUc2lNZXNzYWdlU2VydmljZSwgVHNpTW9kYWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xyXG5pbXBvcnQgeyBUc2lGb3JtQ29tcG9uZW50QmFzZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3RzaS1iYXNlL2NvbXBvbmVudHMvdHNpLWZvcm0tYmFzZS90c2ktZm9ybS1iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNlZ21lbnQgfSBmcm9tICcuLi8uLi9lbmQtcG9pbnRzJztcclxuaW1wb3J0IHsgYXBwUHJvdmlkZXJzIH0gZnJvbSAnLi4vLi4vY29uc3RzL2FwcC1wcm92aWRlcnMnO1xyXG5pbXBvcnQgeyBEeW5hbWljRGlhbG9nQ29uZmlnLCBEeW5hbWljRGlhbG9nUmVmIH0gZnJvbSAncHJpbWVuZy9keW5hbWljZGlhbG9nJztcclxuaW1wb3J0IHsgRmlsZVR5cGVJbXBvcnRFbnVtIH0gZnJvbSAnLi4vLi4vZW51bXMvZmlsZS10eXBlLWltcG9ydC1lbnVtJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1tYW5hZ2UtaW1wb3J0LWV4cG9ydCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL21hbmFnZS1pbXBvcnQtZXhwb3J0LmNvbXBvbmVudC5odG1sJyxcclxuICAvL2VuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbWFuYWdlLWltcG9ydC1leHBvcnQuY29tcG9uZW50LnNjc3MnXSxcclxuICBwcm92aWRlcnM6IFsuLi5hcHBQcm92aWRlcnNdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNYW5hZ2VJbXBvcnRFeHBvcnRDb21wb25lbnQgZXh0ZW5kcyBUc2lGb3JtQ29tcG9uZW50QmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuXHJcbiAgQFZpZXdDaGlsZChUc2lWaWV3R3JpZENvbXBvbmVudCkgZ3JpZENvbXBvbmVudCE6IFRzaVZpZXdHcmlkQ29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoJ2ZpbGVVcGxvYWQnKSBmaWxlVXBsb2FkZXIhOiBGaWxlVXBsb2FkO1xyXG4gIEBWaWV3Q2hpbGQoXCJ2aWV3R3JpZFwiKSB2aWV3R3JpZENvbXBvbmVudD86IFRzaVZpZXdHcmlkQ29tcG9uZW50O1xyXG4gIHRvb2x0aXBQb3NpdGlvbiA9IFRvb2x0aXBQb3NpdGlvbjtcclxuXHJcbiAgdG9VcGxvYWRGaWxlRGF0YTogYW55O1xyXG4gIG9uUmVtb3ZlKCRldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnRvVXBsb2FkRmlsZURhdGEgPSB1bmRlZmluZWQ7XHJcbiAgfVxyXG4gIG9uQ2xlYXIoJGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMudG9VcGxvYWRGaWxlRGF0YSA9IHVuZGVmaW5lZDtcclxuICB9XHJcbiAgb25GaWxlU2VsZWN0ZWQoZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgY29uc3QgZmlsZTogRmlsZSA9IGV2ZW50LmN1cnJlbnRGaWxlc1swXTtcclxuICAgIHRoaXMudG9VcGxvYWRGaWxlRGF0YSA9IGZpbGU7XHJcbiAgfVxyXG4gIG9uSW1wb3J0RmlsZShldmVudDogYW55KSB7XHJcbiAgICB0aGlzLm1vZGVsZUltcG9ydFNlcnZpY2UudXBsb2FkSnNvbkZpbGUodGhpcy50b1VwbG9hZEZpbGVEYXRhKVxyXG4gICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgIHJlc3BvbnNlID0+IHtcclxuICAgICAgICAgIGlmIChyZXNwb25zZS5lcnJvciA9PSBmYWxzZSkge1xyXG4gICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uuc3VjY2Vzcygnc2hhcmVkX2ltcG9ydE1vZGVsZV9qc29uX3VwbG9hZGVkX3N1Y2Nlc3NmdWxseScpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmVycm9yKHJlc3BvbnNlLm1lc3NhZ2UpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmdyaWRDb21wb25lbnQucmVmcmVzaCh0cnVlKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKFwiZXJyb3JcIilcclxuICAgICAgICB9XHJcbiAgICAgIClcclxuICAgIHRoaXMuZmlsZVVwbG9hZGVyLmNsZWFyKClcclxuICB9XHJcblxyXG4gIGNvbHVtbnNKc29uOiBBcnJheTxHcmlkQ29sdW1uPiA9IFtcclxuICAgIHtcclxuICAgICAgaGVhZGVyOiBcInNoYXJlZF9pbXBvcnRNb2RlbGVfanNvbl9uYW1lXCIsXHJcbiAgICAgIGZpZWxkOiBcImpzb25GaWxlTmFtZVwiXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBoZWFkZXI6ICcnLFxyXG4gICAgICBmaWVsZDogJ2Zyb21Kc29uVG9EYXRhYmFzZScsXHJcbiAgICAgIGlzQnV0dG9uOiB0cnVlLFxyXG4gICAgICBidXR0b25JY29uOiAncGkgcGktYXJyb3ctY2lyY2xlLXVwJyxcclxuICAgICAgc3R5bGVDbGFzczogJ3AtYnV0dG9uLXRleHQgcC1idXR0b24tc2Vjb25kYXJ5J1xyXG4gICAgfSxcclxuICBdO1xyXG4gIGtleTogc3RyaW5nID0gJ2pzb25GaWxlTmFtZSc7XHJcbiAgZ3JpZERhdGE6IGFueVxyXG5cclxuICBAVmlld0NoaWxkKCdpbXBvcnRGaWxlVG9FeGVjdXRlRmlsZVVwbG9hZCcpIGltcG9ydEZpbGVUb0V4ZWN1dGVGaWxlVXBsb2FkPzogRmlsZVVwbG9hZDtcclxuXHJcbiAgY29sdW1uczogYW55XHJcblxyXG4gIGlzSW1wb3J0RmlsZVRvRXhlY3V0ZVZpc2libGU6IGJvb2xlYW4gPSBmYWxzZVxyXG4gIHRvVXBsb2FkVG9FeGVjdXRlRmlsZTogYW55ID0gdW5kZWZpbmVkXHJcbiAgdG9VcGxvYWRXaXRob3V0TW9kZWw6IGFueSA9IHVuZGVmaW5lZFxyXG4gIHRvSW1wb3J0TW9kZWxlVWlkPzogc3RyaW5nXHJcblxyXG4gIGNvbHVtbnNIaXN0b3J5OiBBcnJheTxHcmlkQ29sdW1uPiA9IFtcclxuICAgIHtcclxuICAgICAgaGVhZGVyOiBcInNoYXJlZF9pbXBvcnRNb2RlbGVfY29kZV9pbXBvcnRcIixcclxuICAgICAgZmllbGQ6IFwiY29kZUltcG9ydFwiXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBoZWFkZXI6IFwic2hhcmVkX2ltcG9ydE1vZGVsZV9kYXRlX2ltcG9ydFwiLFxyXG4gICAgICBmaWVsZDogXCJkYXRlSW1wb3J0XCJcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGhlYWRlcjogXCJzaGFyZWRfaW1wb3J0TW9kZWxlX25vbWJyZV9saWduZXNcIixcclxuICAgICAgZmllbGQ6IFwibm9tYnJlTGlnbmVzXCJcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGhlYWRlcjogJycsXHJcbiAgICAgIGZpZWxkOiAnZGVsZXRlRnJvbURhdGFiYXNlJyxcclxuICAgICAgaXNCdXR0b246IHRydWUsXHJcbiAgICAgIGJ1dHRvbkljb246ICdwaSBwaS10cmFzaCcsXHJcbiAgICAgIHN0eWxlQ2xhc3M6ICdwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLXNlY29uZGFyeSdcclxuICAgIH0sXHJcbiAgXTtcclxuICBoaXN0b3J5R3JpZERhdGE6IGFueVxyXG4gIGltcG9ydEhpc3RvcnlLZXk6IHN0cmluZyA9ICdjb2RlSW1wb3J0JztcclxuXHJcbiAgZmlsZVR5cGUgOiBzdHJpbmcgPSBcIi54bHMsLnhsc3hcIjtcclxuXHJcbiAgaW1wb3J0UmVzdWx0RGF0YTogQXJyYXk8SW1wb3J0UmVzdWx0PiA9IFtdXHJcblxyXG4gIHNlYXJjaEZpZWxkczogQXJyYXk8U2VhcmNoRmllbGQ+ID0gW1xyXG4gIF1cclxuXHJcbiAgaW1wb3J0UmVzdWx0c0NvbHVtbnM6IEFycmF5PEdyaWRDb2x1bW4+ID0gW1xyXG4gICAge1xyXG4gICAgICBoZWFkZXI6ICcnLFxyXG4gICAgICBmaWVsZDogJ2NvbnN1bHREZXRhaWwnLFxyXG4gICAgICBpc0J1dHRvbjogdHJ1ZSxcclxuICAgICAgYnV0dG9uSWNvbjogJ3BpIHBpLWV5ZScsXHJcbiAgICAgIHN0eWxlQ2xhc3M6ICdwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLXNlY29uZGFyeSdcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGhlYWRlcjogXCJzaGFyZWRfaW1wb3J0X3Jlc3VsdF9tb2RlbGVfaW1wb3J0X2xpYmVsbGVcIixcclxuICAgICAgZmllbGQ6IFwibW9kZWxlSW1wb3J0TGliZWxsZVwiXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBoZWFkZXI6IFwic2hhcmVkX2ltcG9ydF9yZXN1bHRfbW9kZWxlX3V0aWxpc2F0ZXVyXCIsXHJcbiAgICAgIGZpZWxkOiBcInVzZXJOYW1lXCJcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGhlYWRlcjogXCJzaGFyZWRfaW1wb3J0X3Jlc3VsdF9maWxlbmFtZVwiLFxyXG4gICAgICBmaWVsZDogXCJmaWxlTmFtZVwiXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBoZWFkZXI6IFwic2hhcmVkX2ltcG9ydF9yZXN1bHRfc3RhcnREYXRlXCIsXHJcbiAgICAgIGZpZWxkOiBcInN0YXJ0RGF0ZVwiLFxyXG4gICAgICB0eXBlOiBEaXNwbGF5VHlwZXMuREFURVRJTUVfRElTUExBWVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaGVhZGVyOiBcInNoYXJlZF9pbXBvcnRfcmVzdWx0X2VuZF9kYXRlXCIsXHJcbiAgICAgIGZpZWxkOiBcImVuZERhdGVcIixcclxuICAgICAgdHlwZTogRGlzcGxheVR5cGVzLkRBVEVUSU1FX0RJU1BMQVlcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGhlYWRlcjogXCJzaGFyZWRfaW1wb3J0X3Jlc3VsdF9zdGF0dXNcIixcclxuICAgICAgZmllbGQ6IFwic3RhdHVzXCJcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGhlYWRlcjogXCJzaGFyZWRfaW1wb3J0X3Jlc3VsdF9wcm9ncmVzc1wiLFxyXG4gICAgICBmaWVsZDogXCJwcm9ncmVzc1wiLFxyXG4gICAgICB0eXBlOiBEaXNwbGF5VHlwZXMuUkFURV9ESVNQTEFZXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBoZWFkZXI6IFwic2hhcmVkX2ltcG9ydF9yZXN1bHRfdG90YWxfbGluZXNfbnVtYmVyXCIsXHJcbiAgICAgIGZpZWxkOiBcInRvdGFsTGluZXNOdW1iZXJcIixcclxuICAgICAgdHlwZTogRGlzcGxheVR5cGVzLklOVEVHRVJfRElTUExBWVxyXG4gICAgfVxyXG4gIF1cclxuXHJcbiAgcHJpdmF0ZSBfZGlhbG9nUmVmPzogRHluYW1pY0RpYWxvZ1JlZjtcclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIG1vZGVsZUltcG9ydFNlcnZpY2U6IE1vZGVsZUltcG9ydFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNvbmZpcm1hdGlvblNlcnZpY2U6IFRzaUNvbmZpcm1hdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG5vdGlmaWNhdGlvblNlcnZpY2U6IFRzaU5vdGlmaWNhdGlvblNlcnZpY2UsXHJcbiAgICBwdWJsaWMgb3ZlcnJpZGUgY29uZmlnOiBEeW5hbWljRGlhbG9nQ29uZmlnLCBwcml2YXRlIF90c2lNb2RhbFNlcnZpY2U6IFRzaU1vZGFsU2VydmljZSxcclxuICAgIHByaXZhdGUgX2Vycm9yUmVzcG9uc2VNYW5hZ2VyU2VydmljZTogRXJyb3JSZXNwb25zZU1hbmFnZXJTZXJ2aWNlLFxyXG4gICAgcHVibGljIG92ZXJyaWRlIHJlZj86IER5bmFtaWNEaWFsb2dSZWYpIHtcclxuICAgIHN1cGVyKHJlZiwgY29uZmlnKVxyXG4gICAgdGhpcy5zZWFyY2hGaWVsZHMgPSBbXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBJbnB1dFR5cGVzLlRFWFRfQk9YLFxyXG4gICAgICAgIGZpZWxkOiBcIkNsYXNzZVwiLFxyXG4gICAgICAgIGxhYmVsVmFsdWU6IFwiQ2xhc3NlXCIsXHJcbiAgICAgICAgb3BlcmF0b3I6IEZpbHRlck9wZXJhdG9yVHlwZS5FUVVBTCxcclxuICAgICAgICBzdHlsZUNsYXNzOiAnY29sLTYnLFxyXG4gICAgICAgIGlucHV0U3R5bGVDbGFzczogJ2NvbC0zJyxcclxuICAgICAgICBsYWJlbFN0eWxlQ2xhc3M6ICdjb2wtMycsXHJcbiAgICAgICAgZGlzYWJsZWQ6IHRydWUsXHJcbiAgICAgICAgdmFsdWU6IHRoaXMuY29uZmlnPy5kYXRhPy5idXNpbmVzc0NsYXNzXHJcbiAgICAgIH1cclxuICAgIF1cclxuICAgIHRoaXMuY29sdW1ucyA9IFtcclxuICAgICAge1xyXG4gICAgICAgIGZpZWxkOiAnbm9tTW9kZWxlJyxcclxuICAgICAgICBoZWFkZXI6ICdzaGFyZWRfaW1wb3J0TW9kZWxlX25vbSdcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGhlYWRlcjogJycsXHJcbiAgICAgICAgZmllbGQ6ICdlZGl0JyxcclxuICAgICAgICBpc0J1dHRvbjogdHJ1ZSxcclxuICAgICAgICBidXR0b25JY29uOiAncGkgcGktZmlsZS1lZGl0JyxcclxuICAgICAgICBzdHlsZUNsYXNzOiAncC1idXR0b24tdGV4dCBwLWJ1dHRvbi1zdWNjZXNzJyxcclxuICAgICAgICB0b29sVGlwVGV4dDogJ01vZGlmaWVyJ1xyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgaGVhZGVyOiAnJyxcclxuICAgICAgICBmaWVsZDogJ2V4cG9ydEpzb24nLFxyXG4gICAgICAgIGlzQnV0dG9uOiB0cnVlLFxyXG4gICAgICAgIGJ1dHRvbkljb246ICdwaSBwaS1maWxlLWV4cG9ydCcsXHJcbiAgICAgICAgc3R5bGVDbGFzczogJ3AtYnV0dG9uLXRleHQgcC1idXR0b24taGVscCcsXHJcbiAgICAgICAgdG9vbFRpcFRleHQ6ICdFeHBvcnRlciBKc29uJ1xyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgaGVhZGVyOiAnJyxcclxuICAgICAgICBmaWVsZDogJ2V4cG9ydCcsXHJcbiAgICAgICAgaXNCdXR0b246IHRydWUsXHJcbiAgICAgICAgYnV0dG9uSWNvbjogJ3BpIHBpLWZpbGUtZXhjZWwnLFxyXG4gICAgICAgIHN0eWxlQ2xhc3M6ICdwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLXdhcm5pbmcnLFxyXG4gICAgICAgIHRvb2xUaXBUZXh0OiAnRXhwb3J0ZXInXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBoZWFkZXI6ICcnLFxyXG4gICAgICAgIGZpZWxkOiAnaW1wb3J0JyxcclxuICAgICAgICBpc0J1dHRvbjogdHJ1ZSxcclxuICAgICAgICBidXR0b25JY29uOiAncGkgcGktZmlsZS1pbXBvcnQnLFxyXG4gICAgICAgIHN0eWxlQ2xhc3M6ICdwLWJ1dHRvbi10ZXh0JyxcclxuICAgICAgICB0b29sVGlwVGV4dDogJ0ltcG9ydGVyJ1xyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgaGVhZGVyOiAnJyxcclxuICAgICAgICBmaWVsZDogJ2RlbGV0ZScsXHJcbiAgICAgICAgaXNCdXR0b246IHRydWUsXHJcbiAgICAgICAgYnV0dG9uSWNvbjogJ3BpIHBpLXRyYXNoJyxcclxuICAgICAgICBzdHlsZUNsYXNzOiAncC1idXR0b24tdGV4dCBwLWJ1dHRvbi1kYW5nZXInLFxyXG4gICAgICAgIHRvb2xUaXBUZXh0OiAnU3VwcHJpbWVyJ1xyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgaGVhZGVyOiAnJyxcclxuICAgICAgICBmaWVsZDogJ2Rvd25sb2FkSnNvbicsXHJcbiAgICAgICAgaXNCdXR0b246IHRydWUsXHJcbiAgICAgICAgYnV0dG9uSWNvbjogJ3BpIHBpLWFycm93LWNpcmNsZS1kb3duJyxcclxuICAgICAgICBzdHlsZUNsYXNzOiAncC1idXR0b24tdGV4dCBwLWJ1dHRvbi1oZWxwJyxcclxuICAgICAgICB0b29sVGlwVGV4dDogJ0V4cG9ydCBKc29uIFNlcnZlcidcclxuICAgICAgfSxcclxuICAgIF07XHJcbiAgfVxyXG5cclxuXHJcbiAgb3ZlcnJpZGUgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XHJcblxyXG4gICAgc3VwZXIubmdPbkluaXQoKVxyXG4gICAgbGV0IGRhdGEgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLm1vZGVsZUltcG9ydFNlcnZpY2UuR2V0SnNvbkZpbGVzKHRoaXMuY29uZmlnPy5kYXRhPy5mb3JtTmFtZSkpXHJcbiAgICB0aGlzLmdyaWREYXRhID0gZGF0YVxyXG4gICAgYXdhaXQgdGhpcy5nZXRJbXBvcnRSZXN1bHQoKVxyXG4gICAgaWYgKFNlZ21lbnQucHJvZHVjdGlvbikge1xyXG4gICAgICBsZXQgYnV0dG9uQWRCdWlsdGluVGVtcGxhdGVzSW5kZXggPSB0aGlzLmNvbHVtbnMuZmluZEluZGV4KChjb2w6IEdyaWRDb2x1bW4pID0+IHtcclxuICAgICAgICByZXR1cm4gY29sLmZpZWxkID09IFwiZG93bmxvYWRKc29uXCJcclxuICAgICAgfSlcclxuICAgICAgaWYgKGJ1dHRvbkFkQnVpbHRpblRlbXBsYXRlc0luZGV4ICE9IC0xKSB7XHJcbiAgICAgICAgdGhpcy5jb2x1bW5zLnNwbGljZShidXR0b25BZEJ1aWx0aW5UZW1wbGF0ZXNJbmRleCwgMSlcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5oaXN0b3J5R3JpZERhdGEgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLm1vZGVsZUltcG9ydFNlcnZpY2UuR2V0SW1wb3J0SGlzdG9yeSh0aGlzLmNvbmZpZz8uZGF0YT8uYnVzaW5lc3NDbGFzcykpXHJcbiAgfVxyXG5cclxuICBhc3luYyByZWZyZXNoSW1wb3J0RXhwb3J0RGF0YSgpe1xyXG4gICAgbGV0IGRhdGEgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLm1vZGVsZUltcG9ydFNlcnZpY2UuR2V0SnNvbkZpbGVzKHRoaXMuY29uZmlnPy5kYXRhPy5mb3JtTmFtZSkpXHJcbiAgICB0aGlzLmdyaWREYXRhID0gZGF0YVxyXG4gICAgYXdhaXQgdGhpcy5nZXRJbXBvcnRSZXN1bHQoKVxyXG4gICAgdGhpcy5oaXN0b3J5R3JpZERhdGEgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLm1vZGVsZUltcG9ydFNlcnZpY2UuR2V0SW1wb3J0SGlzdG9yeSh0aGlzLmNvbmZpZz8uZGF0YT8uYnVzaW5lc3NDbGFzcykpXHJcbiAgfVxyXG5cclxuICBvcGVuTW9kYWwoKSB7XHJcbiAgICB0aGlzLl9kaWFsb2dSZWYgPSB0aGlzLl90c2lNb2RhbFNlcnZpY2Uub3BlbihDcmVhdGVPckVkaXRNb2RlbGVJbXBvcnRDb21wb25lbnQsIHtcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIGVudGl0eUJ1c2luZXNzQ2xhc3M6IHRoaXMuY29uZmlnPy5kYXRhPy5idXNpbmVzc0NsYXNzLFxyXG4gICAgICAgIGZvcm1OYW1lOiB0aGlzLmNvbmZpZz8uZGF0YT8uZm9ybU5hbWUsXHJcbiAgICAgICAgbW9kZTogTW9kZXMuY3JlYXRlXHJcbiAgICAgIH0sXHJcbiAgICAgIHN0eWxlQ2xhc3M6ICcnLFxyXG4gICAgICB3aWR0aDogJzc1dncnLFxyXG4gICAgICBoZWlnaHQ6ICc1NXZ3JyxcclxuICAgICAgbWF4aW1pemFibGU6IHRydWUsXHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLl9kaWFsb2dSZWYub25DbG9zZS5zdWJzY3JpYmUoKHZhbD86IGFueSkgPT4ge1xyXG4gICAgICBpZiAodGhpcy52aWV3R3JpZENvbXBvbmVudCkge1xyXG4gICAgICAgIHRoaXMudmlld0dyaWRDb21wb25lbnQucmVmcmVzaCh0cnVlKVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGdldEltcG9ydFJlc3VsdCgpIHtcclxuICAgIGlmICghdGhpcy5jb25maWc/LmRhdGE/LmJ1c2luZXNzQ2xhc3MpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdHJ5IHtcclxuICAgICAgbGV0IGRhdGEgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLm1vZGVsZUltcG9ydFNlcnZpY2UuZ2V0SW1wb3J0UmVzdWx0QnlCdXNpbmVzc0NsYXNzKHRoaXMuY29uZmlnPy5kYXRhPy5idXNpbmVzc0NsYXNzKSlcclxuICAgICAgdGhpcy5pbXBvcnRSZXN1bHREYXRhID0gZGF0YVxyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc29sZS5lcnJvcihlcnJvcilcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGJ1dHRvbkNsaWNrZWQoZGF0YTogQnV0dG9uQ2xpY2tSZXN1bHQpIHtcclxuICAgIGlmIChkYXRhLmZpZWxkID09IFwiZWRpdFwiKSB7XHJcbiAgICAgIHRoaXMuX2RpYWxvZ1JlZiA9IHRoaXMuX3RzaU1vZGFsU2VydmljZS5vcGVuKENyZWF0ZU9yRWRpdE1vZGVsZUltcG9ydENvbXBvbmVudCwge1xyXG4gICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgIGlkOiBkYXRhLmtleT8udWlkLFxyXG4gICAgICAgICAgZW50aXR5QnVzaW5lc3NDbGFzczogdGhpcy5jb25maWc/LmRhdGE/LmJ1c2luZXNzQ2xhc3MsXHJcbiAgICAgICAgICBtb2RlOiBNb2Rlcy5lZGl0XHJcbiAgICAgICAgfSxcclxuICAgICAgICBzdHlsZUNsYXNzOiAnJyxcclxuICAgICAgICB3aWR0aDogJzc1dncnLFxyXG4gICAgICAgIGhlaWdodDogJzU1dncnLFxyXG4gICAgICAgIG1heGltaXphYmxlOiB0cnVlLFxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMuX2RpYWxvZ1JlZi5vbkNsb3NlLnN1YnNjcmliZSgodmFsPzogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMudmlld0dyaWRDb21wb25lbnQpIHtcclxuICAgICAgICAgIHRoaXMudmlld0dyaWRDb21wb25lbnQucmVmcmVzaCh0cnVlKVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChkYXRhLmZpZWxkID09IFwiZGVsZXRlXCIpIHtcclxuICAgICAgdGhpcy5kZWxldGVNb2RlbGVJbXBvcnQoZGF0YS5rZXk/LnVpZClcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGRhdGEuZmllbGQgPT0gXCJpbXBvcnRcIikge1xyXG4gICAgICB0aGlzLmlzSW1wb3J0RmlsZVRvRXhlY3V0ZVZpc2libGUgPSB0cnVlXHJcbiAgICAgIHRoaXMudG9JbXBvcnRNb2RlbGVVaWQgPSBkYXRhLmtleT8udWlkXHJcbiAgICAgIHRoaXMuZmlsZVR5cGUgPSBkYXRhLmtleT8uZmlsZVR5cGUgPT0gRmlsZVR5cGVJbXBvcnRFbnVtLlhMU1ggPyBcIi54bHMsLnhsc3hcIiA6IFwiLmNzdlwiXHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChkYXRhLmZpZWxkID09IFwiZXhwb3J0XCIpIHtcclxuICAgICAgdGhpcy5leHBvcnREYXRhKGRhdGEua2V5Py51aWQpXHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChkYXRhLmZpZWxkID09IFwiZXhwb3J0SnNvblwiKSB7XHJcbiAgICAgIHRoaXMuZXhwb3J0RGF0YUpzb24oZGF0YS5rZXk/LnVpZClcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGRhdGEuZmllbGQgPT0gXCJkb3dubG9hZEpzb25cIikge1xyXG4gICAgICB0aGlzLmV4cG9ydERhdGFKc29uU2VydmVyKGRhdGEua2V5Py51aWQpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBleHBvcnREYXRhKGlkOiBzdHJpbmcpIHtcclxuICAgIGlmIChpZCAhPSB1bmRlZmluZWQgJiYgaWQgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLmlzbG9hZGluZyA9IHRydWVcclxuICAgICAgdGhpcy5tb2RlbGVJbXBvcnRTZXJ2aWNlLmV4ZWN1dGVFeHBvcnQoaWQsIHRoaXMuY29uZmlnLmRhdGE/LnBhZ2VkUmVxdWVzdCkuc3Vic2NyaWJlKFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIG5leHQ6IChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5kb3dubG9hZEZpbGUoZGF0YT8uZGF0YSlcclxuICAgICAgICAgICAgdGhpcy5pc2xvYWRpbmcgPSBmYWxzZVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGVycm9yOiAoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIkV4cG9ydCBlcnJvciA9PlwiLCBlcnJvcilcclxuICAgICAgICAgICAgdGhpcy5pc2xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5fZXJyb3JSZXNwb25zZU1hbmFnZXJTZXJ2aWNlLnNob3dFcnJvck1lc3NhZ2VzRnJvbUFycmF5U3RyaW5nKFtlcnJvcj8uZXJyb3I/Lm1lc3NhZ2VdKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIClcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGV4cG9ydERhdGFKc29uKGlkOiBzdHJpbmcpIHtcclxuICAgIGlmIChpZCAhPSB1bmRlZmluZWQgJiYgaWQgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLmlzbG9hZGluZyA9IHRydWVcclxuICAgICAgdGhpcy5tb2RlbGVJbXBvcnRTZXJ2aWNlLmV4ZWN1dGVFeHBvcnRKc29uKGlkKS5zdWJzY3JpYmUoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbmV4dDogKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmRvd25sb2FkRmlsZShkYXRhPy5kYXRhKVxyXG4gICAgICAgICAgICB0aGlzLmlzbG9hZGluZyA9IGZhbHNlXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZXJyb3I6IChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNsb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5lcnJvcihlcnJvcik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICApXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBleHBvcnREYXRhSnNvblNlcnZlcihpZDogc3RyaW5nKSB7XHJcbiAgICBpZiAoaWQgIT0gdW5kZWZpbmVkICYmIGlkICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5pc2xvYWRpbmcgPSB0cnVlXHJcbiAgICAgIHRoaXMubW9kZWxlSW1wb3J0U2VydmljZS5leGVjdXRlRXhwb3J0SnNvblNlcnZlcihpZCkuc3Vic2NyaWJlKFxyXG5cclxuICAgICAgICByZXNwb25zZSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmlzbG9hZGluZyA9IGZhbHNlXHJcbiAgICAgICAgICB0aGlzLnJlZnJlc2hHcmlkKCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvciA9PiB7XHJcbiAgICAgICAgICB0aGlzLmlzbG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmVycm9yKGVycm9yKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICApXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkb3dubG9hZEZpbGUoZGF0YTogYW55KSB7XHJcbiAgICBsZXQgYmxvYlVybCA9IFwiZGF0YTphcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldDtiYXNlNjQsXCIgKyBkYXRhLmZpbGVDb250ZW50O1xyXG4gICAgbGV0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYVwiKTtcclxuICAgIGxpbmsuc2V0QXR0cmlidXRlKFwiaHJlZlwiLCBibG9iVXJsKTtcclxuICAgIGxpbmsuc2V0QXR0cmlidXRlKFwiZG93bmxvYWRcIiwgZGF0YS5maWxlTmFtZSk7XHJcbiAgICBsaW5rLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XHJcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspO1xyXG4gICAgbGluay5jbGljaygpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rKTtcclxuICB9XHJcblxyXG5cclxuICBkZWxldGVNb2RlbGVJbXBvcnQodWlkIDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmNvbmZpcm1hdGlvblNlcnZpY2UuY29uZmlybShcclxuICAgICAgTG9jYWxpemF0aW9uS2V5cy5jb25maXJtRGVsZXRlLFxyXG4gICAgICB1bmRlZmluZWQsXHJcbiAgICAgIChyZXN1bHQ6IGJvb2xlYW4pID0+IHtcclxuICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICB0aGlzLmlzbG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLm1vZGVsZUltcG9ydFNlcnZpY2UuZGVsZXRlKHVpZCkuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgbmV4dDogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ncmlkQ29tcG9uZW50LnJlZnJlc2godHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uuc3VjY2VzcyhMb2NhbGl6YXRpb25LZXlzLmRlbGV0ZWRTdWNjZXNzZnVsbHkpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pc2xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIGVycm9yOiAoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pc2xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5lcnJvcihlcnJvcik7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIG9uSW1wb3J0RmlsZVRvRXhlY3V0ZV9GaWxlU2VsZWN0ZWQoZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgY29uc3QgZmlsZTogRmlsZSA9IGV2ZW50LmN1cnJlbnRGaWxlc1swXVxyXG4gICAgdGhpcy50b1VwbG9hZFRvRXhlY3V0ZUZpbGUgPSBmaWxlO1xyXG4gICAgdGhpcy5pc2xvYWRpbmcgPSBmYWxzZVxyXG4gIH1cclxuXHJcbiAgb25JbXBvcnRGaWxlVG9FeGVjdXRlX0NsZWFyKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMudG9VcGxvYWRUb0V4ZWN1dGVGaWxlID0gdW5kZWZpbmVkXHJcbiAgICB0aGlzLmlzbG9hZGluZyA9IGZhbHNlXHJcbiAgfVxyXG5cclxuICBvbkltcG9ydEZpbGVUb0V4ZWN1dGVfUmVtb3ZlKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMudG9VcGxvYWRUb0V4ZWN1dGVGaWxlID0gdW5kZWZpbmVkXHJcbiAgfVxyXG5cclxuICBvbkltcG9ydEZpbGVUb0V4ZWN1dGVfSW1wb3J0RmlsZShldmVudDogYW55KSB7XHJcbiAgICBpZiAodGhpcy50b0ltcG9ydE1vZGVsZVVpZCAmJiB0aGlzLnRvVXBsb2FkVG9FeGVjdXRlRmlsZSkge1xyXG4gICAgICB0aGlzLmlzbG9hZGluZyA9IHRydWVcclxuICAgICAgdGhpcy5pc0ltcG9ydEZpbGVUb0V4ZWN1dGVWaXNpYmxlID0gZmFsc2VcclxuICAgICAgbGV0IGV4ZWN1dGVJbXBvcnRSZXF1ZXN0OiBFeGVjdXRlSW1wb3J0UmVxdWVzdCA9IG5ldyBFeGVjdXRlSW1wb3J0UmVxdWVzdCgpXHJcbiAgICAgIGV4ZWN1dGVJbXBvcnRSZXF1ZXN0Lm1vZGVsZUltcG9ydFVpZCA9IHRoaXMudG9JbXBvcnRNb2RlbGVVaWQ7XHJcbiAgICAgIGV4ZWN1dGVJbXBvcnRSZXF1ZXN0LmZpbGVOYW1lID0gdGhpcy50b1VwbG9hZFRvRXhlY3V0ZUZpbGU/Lm5hbWVcclxuXHJcbiAgICAgIHRoaXMubW9kZWxlSW1wb3J0U2VydmljZS5leGVjdXRlSW1wb3J0KGV4ZWN1dGVJbXBvcnRSZXF1ZXN0LCB0aGlzLnRvVXBsb2FkVG9FeGVjdXRlRmlsZSlcclxuICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBuZXh0OiBhc3luYyAocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc29sZS5sb2cocmVzdWx0KVxyXG4gICAgICAgICAgICAgIHRoaXMuaXNJbXBvcnRGaWxlVG9FeGVjdXRlVmlzaWJsZSA9IGZhbHNlXHJcbiAgICAgICAgICAgICAgdGhpcy5pc2xvYWRpbmcgPSBmYWxzZVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBlcnJvcjogKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuaXNsb2FkaW5nID0gZmFsc2VcclxuICAgICAgICAgICAgICB0aGlzLl9lcnJvclJlc3BvbnNlTWFuYWdlclNlcnZpY2Uuc2hvd0Vycm9yTWVzc2FnZShlcnJvcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICApXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkltcG9ydEZpbGVXaXRob3V0TW9kZWxfRmlsZVNlbGVjdGVkKGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIGNvbnN0IGZpbGU6IEZpbGUgPSBldmVudC5jdXJyZW50RmlsZXNbMF07XHJcbiAgICB0aGlzLnRvVXBsb2FkV2l0aG91dE1vZGVsID0gZmlsZTtcclxuICAgIHRoaXMuaXNsb2FkaW5nID0gZmFsc2VcclxuICB9XHJcblxyXG4gIG9uSW1wb3J0RmlsZVdpdGhvdXRNb2RlbF9DbGVhcihldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnRvVXBsb2FkV2l0aG91dE1vZGVsID0gdW5kZWZpbmVkXHJcbiAgICB0aGlzLmlzbG9hZGluZyA9IGZhbHNlXHJcbiAgfVxyXG5cclxuICBvbkltcG9ydEZpbGVXaXRob3V0TW9kZWxfUmVtb3ZlKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMudG9VcGxvYWRXaXRob3V0TW9kZWwgPSB1bmRlZmluZWRcclxuICB9XHJcblxyXG4gIG9uSW1wb3J0RmlsZVdpdGhvdXRNb2RlbF9JbXBvcnRGaWxlKGV2ZW50OiBhbnkpIHtcclxuICAgIGlmICh0aGlzLnRvVXBsb2FkV2l0aG91dE1vZGVsKSB7XHJcbiAgICAgIHRoaXMuaXNsb2FkaW5nID0gdHJ1ZVxyXG5cclxuICAgICAgbGV0IGV4ZWN1dGVJbXBvcnRSZXF1ZXN0OiBFeGVjdXRlSW1wb3J0UmVxdWVzdCA9IG5ldyBFeGVjdXRlSW1wb3J0UmVxdWVzdCgpXHJcbiAgICAgIGV4ZWN1dGVJbXBvcnRSZXF1ZXN0Lm1vZGVsZUltcG9ydFVpZCA9IHVuZGVmaW5lZDtcclxuICAgICAgZXhlY3V0ZUltcG9ydFJlcXVlc3QuZmlsZU5hbWUgPSB0aGlzLnRvVXBsb2FkV2l0aG91dE1vZGVsPy5uYW1lXHJcblxyXG4gICAgICB0aGlzLm1vZGVsZUltcG9ydFNlcnZpY2UuZXhlY3V0ZUltcG9ydFdpdGhvdXRNb2RlbChleGVjdXRlSW1wb3J0UmVxdWVzdCwgdGhpcy50b1VwbG9hZFdpdGhvdXRNb2RlbClcclxuICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBuZXh0OiBhc3luYyAocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc29sZS5sb2cocmVzdWx0KVxyXG4gICAgICAgICAgICAgIHRoaXMuaXNsb2FkaW5nID0gZmFsc2VcclxuXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICApXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBsb2FkR3JpZERhdGEoKTogdm9pZCB7XHJcbiAgICB0aGlzLm1vZGVsZUltcG9ydFNlcnZpY2UuR2V0SnNvbkZpbGVzKHRoaXMuY29uZmlnPy5kYXRhPy5mb3JtTmFtZSkuc3Vic2NyaWJlKGRhdGEgPT4ge1xyXG4gICAgICB0aGlzLmdyaWREYXRhID0gZGF0YTtcclxuICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgbG9hZGluZyBncmlkIGRhdGEnLCBlcnJvcik7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHJlZnJlc2hHcmlkKCk6IHZvaWQge1xyXG4gICAgdGhpcy5sb2FkR3JpZERhdGEoKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZUNvbnN1bHRJbXBvcnRSZXN1bHRCdXR0b25DbGlja2VkKGV2ZW50OiBCdXR0b25DbGlja1Jlc3VsdCkge1xyXG4gICAgdGhpcy5fdHNpTW9kYWxTZXJ2aWNlLm9wZW4oQWxlcnRJbXBvcnRNZXNzYWdlQ29tcG9uZW50LCB7XHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICBpZDogZXZlbnQua2V5LFxyXG4gICAgICB9LFxyXG4gICAgICBjbG9zYWJsZTogdHJ1ZSxcclxuICAgICAgZHJhZ2dhYmxlOiB0cnVlLFxyXG4gICAgICB3aWR0aDogJzM1dncnLFxyXG4gICAgICBoZWlnaHQ6ICcyNXZ3JyxcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBoYW5kbGVCdXR0b25Db2x1bW5FeGVjdXRlQ2xpY2tlZChldmVudDogQnV0dG9uQ2xpY2tSZXN1bHQpIHtcclxuICAgIGlmIChldmVudC5maWVsZCA9PSAnZnJvbUpzb25Ub0RhdGFiYXNlJykge1xyXG4gICAgICB0aGlzLm1vZGVsZUltcG9ydFNlcnZpY2UuZXhlY3V0ZUltcG9ydEpzb24oZXZlbnQua2V5LCB0aGlzLmNvbmZpZz8uZGF0YT8uZm9ybU5hbWUpXHJcbiAgICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAgIHJlc3BvbnNlID0+IHtcclxuICAgICAgICAgICAgdGhpcy5ncmlkQ29tcG9uZW50LnJlZnJlc2godHJ1ZSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZXJyb3IgPT4ge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBpbXBvcnRpbmcganNvbjonLCBlcnJvcik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGV2ZW50LmZpZWxkID09ICdkZWxldGVGcm9tRGF0YWJhc2UnKSB7XHJcbiAgICAgIHRoaXMuY29uZmlybWF0aW9uU2VydmljZS5jb25maXJtKFxyXG4gICAgICAgIExvY2FsaXphdGlvbktleXMuY29uZmlybURlbGV0ZSxcclxuICAgICAgICB1bmRlZmluZWQsXHJcbiAgICAgICAgKHJlc3VsdDogYm9vbGVhbikgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgICB0aGlzLm1vZGVsZUltcG9ydFNlcnZpY2UuZGVsZXRlSW1wb3J0KGV2ZW50LmtleSwgdGhpcy5jb25maWc/LmRhdGE/LmJ1c2luZXNzQ2xhc3MpXHJcbiAgICAgICAgICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAgICAgICAgIGFzeW5jIHJlc3BvbnNlID0+IHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5ncmlkQ29tcG9uZW50LnJlZnJlc2godHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuaGlzdG9yeUdyaWREYXRhID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5tb2RlbGVJbXBvcnRTZXJ2aWNlLkdldEltcG9ydEhpc3RvcnkodGhpcy5jb25maWc/LmRhdGE/LmJ1c2luZXNzQ2xhc3MpKVxyXG4gICAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uuc3VjY2VzcyhMb2NhbGl6YXRpb25LZXlzLmRlbGV0ZWRTdWNjZXNzZnVsbHkpO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGVycm9yID0+IHtcclxuICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgaW1wb3J0aW5nIGpzb246JywgZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG5cclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcbiIsIjxwLXRhYlZpZXc+XHJcbiAgPHAtdGFiUGFuZWwgW2hlYWRlcl09XCInc2hhcmVkX2V4ZWN1dGVfaW1wb3J0X21vZGVsX2ltcG9ydF9leHBvcnQnIHwgbG9jYWxpemVcIiBjbGFzcz1cInB0LTMgcHgtMlwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmRcIj5cclxuICAgICAgPGRpdiAqYnVzeT1cImlzbG9hZGluZ1wiPjwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZ3JpZFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJncmlkIGNvbC0xMFwiPlxyXG4gICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgPFRzaS1MYWJlbCBjbGFzcz1cImNvbC0yXCIgW2xhYmVsVmFsdWVdPVwiJ3NoYXJlZF9yZXBvcnRpbmdfZm9ybSdcIj5cclxuICAgICAgICAgICAgPC9Uc2ktTGFiZWw+XHJcbiAgICAgICAgICAgIDwhLS0gPHAtZHJvcGRvd24gY2xhc3M9XCJjb2wtMTAgdHNpLWNvbXBvbmVudFwiIGNsYXNzPVwidHNpLWNvbXBvbmVudFwiIHN0eWxlQ2xhc3M9XCJ0c2ktY29tcG9uZW50XCIgYXBwZW5kVHA9XCJib2R5XCJcclxuICAgICAgICAgICAgICAgIG9wdGlvbkxhYmVsPVwidmFsdWVcIiBvcHRpb25WYWx1ZT1cImtleVwiIFtmaWx0ZXJdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBmaWx0ZXJCeT1cInZhbHVlXCIgW3Nob3dDbGVhcl09XCJ0cnVlXCIgcGxhY2Vob2xkZXI9XCJ7eydzaGFyZWRfcmVwb3J0aW5nX3NlbGVjdF9mb3JtJyB8IGxvY2FsaXplfX1cIlxyXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInRydWVcIj5cclxuICAgICAgICAgICAgICA8L3AtZHJvcGRvd24+IC0tPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPHAtdG9vbGJhciBzdHlsZUNsYXNzPVwibWItNCBnYXAtMlwiPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJsZWZ0XCI+XHJcbiAgICAgICAgICA8VHNpLUJ1dHRvbiBbdGV4dF09XCInc2hhcmVkX3JlcG9ydGluZ19hZGRfcmVwb3J0JyB8IGxvY2FsaXplXCJcclxuICAgICAgICAgICAgaWNvbj1cInAtYnV0dG9uLWljb24gcC1idXR0b24taWNvbi1sZWZ0IHBpIHBpLXBsdXNcIlxyXG4gICAgICAgICAgICBzdHlsZUNsYXNzPVwicC1lbGVtZW50IHAtYnV0dG9uLXN1Y2Nlc3MgbXItMiBwLWJ1dHRvbiBwLWNvbXBvbmVudCBuZy1zdGFyLWluc2VydGVkIHAtYnV0dG9uLWxhYmVsXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5Nb2RhbCgpXCI+PC9Uc2ktQnV0dG9uPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cInJpZ2h0XCI+XHJcbiAgICAgICAgICA8cC1maWxlVXBsb2FkICNmaWxlVXBsb2FkIG5hbWU9XCJkZW1vW11cIiAob25CZWZvcmVVcGxvYWQpPVwib25JbXBvcnRGaWxlKCRldmVudClcIlxyXG4gICAgICAgICAgICAob25TZWxlY3QpPVwib25GaWxlU2VsZWN0ZWQoJGV2ZW50KVwiIChvbkNsZWFyKT1cIm9uQ2xlYXIoJGV2ZW50KVwiIChvblJlbW92ZSk9XCJvblJlbW92ZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgW211bHRpcGxlXT1cImZhbHNlXCIgYWNjZXB0PVwiYXBwbGljYXRpb24vanNvblwiIFttYXhGaWxlU2l6ZV09XCIxMDAwMDAwXCJcclxuICAgICAgICAgICAgW2ludmFsaWRGaWxlU2l6ZU1lc3NhZ2VTdW1tYXJ5XT1cIidzaGFyZWRfZmlsZV91cGxvYWRfaW52YWxpZF9maWxlX3NpemVfbWVzc2FnZV9zdW1tYXJ5JyB8IGxvY2FsaXplXCJcclxuICAgICAgICAgICAgW2ludmFsaWRGaWxlU2l6ZU1lc3NhZ2VEZXRhaWxdPVwiJ3NoYXJlZF9maWxlX3VwbG9hZF9pbnZhbGlkX2ZpbGVfc2l6ZV9tZXNzYWdlX2RldGFpbCcgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgIFtpbnZhbGlkRmlsZVR5cGVNZXNzYWdlU3VtbWFyeV09XCInc2hhcmVkX2ZpbGVfdXBsb2FkX2ludmFsaWRfZmlsZV90eXBlX21lc3NhZ2Vfc3VtbWFyeScgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgIFtpbnZhbGlkRmlsZUxpbWl0TWVzc2FnZURldGFpbF09XCInc2hhcmVkX2ZpbGVfdXBsb2FkX2ludmFsaWRfZmlsZV9saW1pdF9tZXNzYWdlX2RldGFpbCcgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgIFtpbnZhbGlkRmlsZUxpbWl0TWVzc2FnZVN1bW1hcnldPVwiJ3NoYXJlZF9maWxlX3VwbG9hZF9pbnZhbGlkX2ZpbGVfbGltaXRfbWVzc2FnZV9zdW1tYXJ5JyB8IGxvY2FsaXplXCJcclxuICAgICAgICAgICAgW2ludmFsaWRGaWxlVHlwZU1lc3NhZ2VEZXRhaWxdPVwiJ3NoYXJlZF9maWxlX3VwbG9hZF9pbnZhbGlkX2ZpbGVfdHlwZV9tZXNzYWdlX2RldGFpbCcgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgIFtjaG9vc2VJY29uXT1cIidwaSBwaS1wYXBlcmNsaXAnXCIgY2FuY2VsU3R5bGVDbGFzcz1cInAtYnV0dG9uLXNlY29uZGFyeVwiIHVwbG9hZFN0eWxlQ2xhc3M9XCJwLWJ1dHRvbi1oZWxwXCJcclxuICAgICAgICAgICAgcmVtb3ZlU3R5bGVDbGFzcz1cInAtYnV0dG9uLWRhbmdlclwiIFtjaG9vc2VMYWJlbF09XCInc2hhcmVkX3JlcG9ydGluZ19jaG9vc2VfcmVwb3J0X2ZpbGUnIHwgbG9jYWxpemVcIlxyXG4gICAgICAgICAgICBbdXBsb2FkTGFiZWxdPVwiJ3NoYXJlZF9yZXBvcnRpbmdfaW1wb3J0X3JlcG9ydCcgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgIFtjYW5jZWxMYWJlbF09XCInc2hhcmVkX3JlcG9ydGluZ19jYW5jZWxfY2hvb3NlX3JlcG9ydF9maWxlJyB8IGxvY2FsaXplXCI+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cInRvVXBsb2FkRmlsZURhdGFcIiBwVGVtcGxhdGU9XCJmaWxldXBsb2FkLWNvbnRlbnRcIiBsZXQtZmlsZXM+XHJcbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImZpbGVzPy5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgZmlsZXNbMF0ubmFtZSB9fTwvc3Ryb25nPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgPC9wLWZpbGVVcGxvYWQ+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPC9wLXRvb2xiYXI+XHJcblxyXG4gICAgICA8dHNpLXZpZXctZ3JpZCAjdmlld0dyaWQgW2hlYWRlcl09XCInc2hhcmVkX2V4ZWN1dGVfaW1wb3J0X21vZGVsX2ltcG9ydF9leHBvcnQnICB8bG9jYWxpemVcIlxyXG4gICAgICAgIFtzZWFyY2hGaWVsZHNdPVwic2VhcmNoRmllbGRzXCIgW3Nob3dDb25zdWx0QnV0dG9uXT1cImZhbHNlXCIgW2dldERhdGFGcm9tQXBpXT1cInRydWVcIlxyXG4gICAgICAgIFtjcnVkU2VydmljZV09XCJtb2RlbGVJbXBvcnRTZXJ2aWNlXCIgKGJ1dHRvbkNvbHVtbkNsaWNrZWQpPVwiYnV0dG9uQ2xpY2tlZCgkZXZlbnQpXCJcclxuICAgICAgICBbZm9ybU5hbWVdPVwiJ2FwcC1tYW5hZ2UtaW1wb3J0LWV4cG9ydCdcIiBbY29sdW1uc109XCJjb2x1bW5zXCIga2V5PVwidWlkXCIgW3NlbGVjdEtleU9ubHldPVwiZmFsc2VcIj5cclxuICAgICAgPC90c2ktdmlldy1ncmlkPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9wLXRhYlBhbmVsPlxyXG5cclxuICA8cC10YWJQYW5lbCBbaGVhZGVyXT1cIidzaGFyZWRfZXhlY3V0ZV9pbXBvcnRfbW9kZWxfaW1wb3J0X2V4cG9ydF9kZWZhdWx0JyB8IGxvY2FsaXplXCIgY2xhc3M9XCJwdC0zIHB4LTJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJncmlkXCI+XHJcbiAgICAgIDx0c2ktdmlldy1ncmlkIGNsYXNzPVwiY29sLTEyXCIgW2hlYWRlcl09XCInc2hhcmVkX2V4ZWN1dGVfaW1wb3J0X21vZGVsX2ltcG9ydF9leHBvcnRfZGVmYXVsdCcgIHxsb2NhbGl6ZVwiXHJcbiAgICAgICAgW2NvbHVtbnNdPVwiY29sdW1uc0pzb25cIiBbZ2V0RGF0YUZyb21BcGldPVwiZmFsc2VcIiBbZ3JpZERhdGFdPVwiZ3JpZERhdGFcIiBba2V5XT1cImtleVwiXHJcbiAgICAgICAgW2Zvcm1OYW1lXT1cIidtb2RlbGUtaW1wb3J0LXBhci1kZWZhdWx0J1wiXHJcbiAgICAgICAgKGJ1dHRvbkNvbHVtbkNsaWNrZWQpPVwiaGFuZGxlQnV0dG9uQ29sdW1uRXhlY3V0ZUNsaWNrZWQoJGV2ZW50KVwiPjwvdHNpLXZpZXctZ3JpZD5cclxuICAgIDwvZGl2PlxyXG4gIDwvcC10YWJQYW5lbD5cclxuXHJcbiAgPHAtdGFiUGFuZWwgW2hlYWRlcl09XCInc2hhcmVkX2V4ZWN1dGVfaW1wb3J0X2hpc3RvcnknIHwgbG9jYWxpemVcIiBjbGFzcz1cInB0LTMgcHgtMlwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImdyaWRcIj5cclxuICAgICAgPHRzaS12aWV3LWdyaWQgY2xhc3M9XCJjb2wtMTJcIiBbaGVhZGVyXT1cIidzaGFyZWRfZXhlY3V0ZV9pbXBvcnRfaGlzdG9yeScgIHxsb2NhbGl6ZVwiIFtjb2x1bW5zXT1cImNvbHVtbnNIaXN0b3J5XCJcclxuICAgICAgICBbZ2V0RGF0YUZyb21BcGldPVwiZmFsc2VcIiBbZ3JpZERhdGFdPVwiaGlzdG9yeUdyaWREYXRhXCIgW2tleV09XCJpbXBvcnRIaXN0b3J5S2V5XCJcclxuICAgICAgICBbZm9ybU5hbWVdPVwiJ21vZGVsZS1pbXBvcnQtcGFyLWRlZmF1bHQnXCJcclxuICAgICAgICAoYnV0dG9uQ29sdW1uQ2xpY2tlZCk9XCJoYW5kbGVCdXR0b25Db2x1bW5FeGVjdXRlQ2xpY2tlZCgkZXZlbnQpXCI+PC90c2ktdmlldy1ncmlkPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9wLXRhYlBhbmVsPlxyXG5cclxuICA8cC10YWJQYW5lbCBbaGVhZGVyXT1cIidzaGFyZWRfZXhlY3V0ZV9pbXBvcnRfd2l0aG91dF9tb2RlbCcgfCBsb2NhbGl6ZVwiIGNsYXNzPVwicHQtMyBweC0yXCI+XHJcbiAgICA8ZGl2ICpidXN5PVwiaXNsb2FkaW5nXCI+PC9kaXY+XHJcbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiYm9keVwiPlxyXG4gICAgICA8cC1maWxlVXBsb2FkICNpbXBvcnRGaWxlVG9SZXBvcnRGaWxlVXBsb2FkIG5hbWU9XCJpbXBvcnRGaWxlVG9SZXBvcnRcIiBbbXVsdGlwbGVdPVwiZmFsc2VcIlxyXG4gICAgICAgIChvblNlbGVjdCk9XCJvbkltcG9ydEZpbGVXaXRob3V0TW9kZWxfRmlsZVNlbGVjdGVkKCRldmVudClcIiAob25DbGVhcik9XCJvbkltcG9ydEZpbGVXaXRob3V0TW9kZWxfQ2xlYXIoJGV2ZW50KVwiXHJcbiAgICAgICAgKG9uQmVmb3JlVXBsb2FkKT1cIm9uSW1wb3J0RmlsZVdpdGhvdXRNb2RlbF9JbXBvcnRGaWxlKCRldmVudClcIlxyXG4gICAgICAgIChvblJlbW92ZSk9XCJvbkltcG9ydEZpbGVXaXRob3V0TW9kZWxfUmVtb3ZlKCRldmVudClcIiBhY2NlcHQ9XCIueGxzLC54bHN4XCIgW21heEZpbGVTaXplXT1cIjEwMDAwMDAwXCJcclxuICAgICAgICBbaW52YWxpZEZpbGVTaXplTWVzc2FnZVN1bW1hcnldPVwiJ3NoYXJlZF9maWxlX3VwbG9hZF9pbnZhbGlkX2ZpbGVfc2l6ZV9tZXNzYWdlX3N1bW1hcnknIHwgbG9jYWxpemVcIlxyXG4gICAgICAgIFtpbnZhbGlkRmlsZVNpemVNZXNzYWdlRGV0YWlsXT1cIidzaGFyZWRfZmlsZV91cGxvYWRfaW52YWxpZF9maWxlX3NpemVfbWVzc2FnZV9kZXRhaWwnIHwgbG9jYWxpemVcIlxyXG4gICAgICAgIFtpbnZhbGlkRmlsZVR5cGVNZXNzYWdlU3VtbWFyeV09XCInc2hhcmVkX2ZpbGVfdXBsb2FkX2ludmFsaWRfZmlsZV90eXBlX21lc3NhZ2Vfc3VtbWFyeScgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgW2ludmFsaWRGaWxlTGltaXRNZXNzYWdlRGV0YWlsXT1cIidzaGFyZWRfZmlsZV91cGxvYWRfaW52YWxpZF9maWxlX2xpbWl0X21lc3NhZ2VfZGV0YWlsJyB8IGxvY2FsaXplXCJcclxuICAgICAgICBbaW52YWxpZEZpbGVMaW1pdE1lc3NhZ2VTdW1tYXJ5XT1cIidzaGFyZWRfZmlsZV91cGxvYWRfaW52YWxpZF9maWxlX2xpbWl0X21lc3NhZ2Vfc3VtbWFyeScgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgW2ludmFsaWRGaWxlVHlwZU1lc3NhZ2VEZXRhaWxdPVwiJ3NoYXJlZF9maWxlX3VwbG9hZF9pbnZhbGlkX2ZpbGVfdHlwZV9tZXNzYWdlX2RldGFpbCcgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgW2Nob29zZUljb25dPVwiJ3BpIHBpLXBhcGVyY2xpcCdcIiBjYW5jZWxTdHlsZUNsYXNzPVwicC1idXR0b24tc2Vjb25kYXJ5XCIgdXBsb2FkU3R5bGVDbGFzcz1cInAtYnV0dG9uLWhlbHBcIlxyXG4gICAgICAgIHJlbW92ZVN0eWxlQ2xhc3M9XCJwLWJ1dHRvbi1kYW5nZXJcIiBbY2hvb3NlTGFiZWxdPVwiJ3NoYXJlZF9yZXBvcnRpbmdfY2hvb3NlX3JlcG9ydF9maWxlJyB8IGxvY2FsaXplXCJcclxuICAgICAgICBbdXBsb2FkTGFiZWxdPVwiJ3NoYXJlZF9yZXBvcnRpbmdfaW1wb3J0X3JlcG9ydCcgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgW2NhbmNlbExhYmVsXT1cIidzaGFyZWRfcmVwb3J0aW5nX2NhbmNlbF9jaG9vc2VfcmVwb3J0X2ZpbGUnIHwgbG9jYWxpemVcIj5cclxuICAgICAgICA8bmctdGVtcGxhdGUgKm5nSWY9XCJ0b1VwbG9hZFdpdGhvdXRNb2RlbFwiIHBUZW1wbGF0ZT1cImZpbGV1cGxvYWQtY29udGVudFwiIGxldC1maWxlcz5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJmaWxlcz8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgIDxzdHJvbmc+e3sgZmlsZXNbMF0ubmFtZSB9fTwvc3Ryb25nPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPC9wLWZpbGVVcGxvYWQ+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvcC10YWJQYW5lbD5cclxuXHJcbiAgPHAtdGFiUGFuZWwgW2hlYWRlcl09XCInc2hhcmVkX2ltcG9ydF9yZXN1bHRfaGVhZGVyJyB8IGxvY2FsaXplXCIgY2xhc3M9XCJwdC0zIHB4LTJcIj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwicC0xXCI+XHJcbiAgICAgIDxUc2ktQnV0dG9uIChvbkNsaWNrKT1cImdldEltcG9ydFJlc3VsdCgpXCJcclxuICAgICAgICBzdHlsZUNsYXNzPVwicC1lbGVtZW50IHAtYnV0dG9uLXRleHQgcC1idXR0b24tcmFpc2VkIHAtYnV0dG9uLXJvdW5kZWQgbXItMiBwLWJ1dHRvbiBwLWNvbXBvbmVudCBwLWJ1dHRvbi1pY29uLW9ubHlcIlxyXG4gICAgICAgIFt0b29sdGlwVGV4dF09XCInc2hhcmVkX2ltcG9ydF9leHBvcnRfcmVmcmVzaCdcIiBbdG9vbHRpcFBvc2l0aW9uXT1cInRvb2x0aXBQb3NpdGlvbi5Ub3BcIlxyXG4gICAgICAgIGljb249XCJwLWJ1dHRvbi1pY29uIHBpIHBpLXJlZnJlc2hcIiBjbGFzcz1cInAtYnV0dG9uLXRleHQgcC1idXR0b24tcmFpc2VkIHAtYnV0dG9uLXJvdW5kZWQgbXItMlwiPjwvVHNpLUJ1dHRvbj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJncmlkXCI+XHJcbiAgICAgIDx0c2ktdmlldy1ncmlkIGNsYXNzPVwiY29sLTEyXCIgW2hlYWRlcl09XCInc2hhcmVkX2ltcG9ydF9yZXN1bHRfaGVhZGVyJyAgfGxvY2FsaXplXCIgW2NvbHVtbnNdPVwiaW1wb3J0UmVzdWx0c0NvbHVtbnNcIlxyXG4gICAgICAgIFtnZXREYXRhRnJvbUFwaV09XCJmYWxzZVwiIFtncmlkRGF0YV09XCJpbXBvcnRSZXN1bHREYXRhXCIgW2tleV09XCIndWlkJ1wiIFtmb3JtTmFtZV09XCInbW9kZWxlLWltcG9ydC1yZXN1bHQtaW1wb3J0J1wiXHJcbiAgICAgICAgKGJ1dHRvbkNvbHVtbkNsaWNrZWQpPVwiaGFuZGxlQ29uc3VsdEltcG9ydFJlc3VsdEJ1dHRvbkNsaWNrZWQoJGV2ZW50KVwiPjwvdHNpLXZpZXctZ3JpZD5cclxuICAgIDwvZGl2PlxyXG4gIDwvcC10YWJQYW5lbD5cclxuXHJcbjwvcC10YWJWaWV3PlxyXG5cclxuPGRpdiBjbGFzcz1cInAtMVwiPlxyXG4gIDxUc2ktQnV0dG9uXHJcbiAgICBzdHlsZUNsYXNzPVwicC1lbGVtZW50IHAtYnV0dG9uLXRleHQgcC1idXR0b24tcmFpc2VkIHAtYnV0dG9uLXJvdW5kZWQgbXItMiBwLWJ1dHRvbiBwLWNvbXBvbmVudCBwLWJ1dHRvbi1pY29uLW9ubHlcIlxyXG4gICAgW3Rvb2x0aXBUZXh0XT1cIidzaGFyZWRfaW1wb3J0X2V4cG9ydF9yZWZyZXNoJ1wiIFt0b29sdGlwUG9zaXRpb25dPVwidG9vbHRpcFBvc2l0aW9uLlRvcFwiXHJcbiAgICBpY29uPVwicC1idXR0b24taWNvbiBwaSBwaS1yZWZyZXNoXCIgKG9uQ2xpY2spPVwicmVmcmVzaEltcG9ydEV4cG9ydERhdGEoKVwiXHJcbiAgICBjbGFzcz1cInAtYnV0dG9uLXRleHQgcC1idXR0b24tcmFpc2VkIHAtYnV0dG9uLXJvdW5kZWQgbXItMlwiPjwvVHNpLUJ1dHRvbj5cclxuPC9kaXY+XHJcblxyXG48IS0tIGRpYWxvZyB0byBpbXBvcnQgZmlsZSB0byByZXBvcnQgLS0+XHJcbjxwLWRpYWxvZyBoZWFkZXI9XCJ7eydzaGFyZWRfcmVwb3J0aW5nX3NlbGVjdF9maWxlX3RvX2ltcG9ydF9pbnRvX3JlcG9ydCcgfCBsb2NhbGl6ZX19XCJcclxuICBbKHZpc2libGUpXT1cImlzSW1wb3J0RmlsZVRvRXhlY3V0ZVZpc2libGVcIiBbc3R5bGVdPVwie3dpZHRoOiAnNTB2dyd9XCI+XHJcbiAgPCEtLSA8VHNpLU1vZGFsLUhlYWRlciAob25DbG9zZUNsaWNrKT1cIm9uSW1wb3J0RmlsZVRvUmVwb3J0TW9kYWxDYW5jZWxDbGljaygpXCIgW2lucHV0VGl0bGVdPVwiJ3NoYXJlZF9yZXBvcnRpbmdfc2VsZWN0X2ZpbGVfdG9faW1wb3J0X2ludG9fcmVwb3J0J1wiPjwvVHNpLU1vZGFsLUhlYWRlcj4gLS0+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJib2R5XCI+XHJcbiAgICA8cC1maWxlVXBsb2FkICNpbXBvcnRGaWxlVG9SZXBvcnRGaWxlVXBsb2FkIG5hbWU9XCJpbXBvcnRGaWxlVG9SZXBvcnRcIiBbbXVsdGlwbGVdPVwiZmFsc2VcIlxyXG4gICAgICAob25TZWxlY3QpPVwib25JbXBvcnRGaWxlVG9FeGVjdXRlX0ZpbGVTZWxlY3RlZCgkZXZlbnQpXCIgKG9uQ2xlYXIpPVwib25JbXBvcnRGaWxlVG9FeGVjdXRlX0NsZWFyKCRldmVudClcIlxyXG4gICAgICAob25CZWZvcmVVcGxvYWQpPVwib25JbXBvcnRGaWxlVG9FeGVjdXRlX0ltcG9ydEZpbGUoJGV2ZW50KVwiIChvblJlbW92ZSk9XCJvbkltcG9ydEZpbGVUb0V4ZWN1dGVfUmVtb3ZlKCRldmVudClcIlxyXG4gICAgICBhY2NlcHQ9XCJ7e2ZpbGVUeXBlfX1cIiBbbWF4RmlsZVNpemVdPVwiMTAwMDAwMDBcIlxyXG4gICAgICBbaW52YWxpZEZpbGVTaXplTWVzc2FnZVN1bW1hcnldPVwiJ3NoYXJlZF9maWxlX3VwbG9hZF9pbnZhbGlkX2ZpbGVfc2l6ZV9tZXNzYWdlX3N1bW1hcnknIHwgbG9jYWxpemVcIlxyXG4gICAgICBbaW52YWxpZEZpbGVTaXplTWVzc2FnZURldGFpbF09XCInc2hhcmVkX2ZpbGVfdXBsb2FkX2ludmFsaWRfZmlsZV9zaXplX21lc3NhZ2VfZGV0YWlsJyB8IGxvY2FsaXplXCJcclxuICAgICAgW2ludmFsaWRGaWxlVHlwZU1lc3NhZ2VTdW1tYXJ5XT1cIidzaGFyZWRfZmlsZV91cGxvYWRfaW52YWxpZF9maWxlX3R5cGVfbWVzc2FnZV9zdW1tYXJ5JyB8IGxvY2FsaXplXCJcclxuICAgICAgW2ludmFsaWRGaWxlTGltaXRNZXNzYWdlRGV0YWlsXT1cIidzaGFyZWRfZmlsZV91cGxvYWRfaW52YWxpZF9maWxlX2xpbWl0X21lc3NhZ2VfZGV0YWlsJyB8IGxvY2FsaXplXCJcclxuICAgICAgW2ludmFsaWRGaWxlTGltaXRNZXNzYWdlU3VtbWFyeV09XCInc2hhcmVkX2ZpbGVfdXBsb2FkX2ludmFsaWRfZmlsZV9saW1pdF9tZXNzYWdlX3N1bW1hcnknIHwgbG9jYWxpemVcIlxyXG4gICAgICBbaW52YWxpZEZpbGVUeXBlTWVzc2FnZURldGFpbF09XCInc2hhcmVkX2ZpbGVfdXBsb2FkX2ludmFsaWRfZmlsZV90eXBlX21lc3NhZ2VfZGV0YWlsJyB8IGxvY2FsaXplXCJcclxuICAgICAgW2Nob29zZUljb25dPVwiJ3BpIHBpLXBhcGVyY2xpcCdcIiBjYW5jZWxTdHlsZUNsYXNzPVwicC1idXR0b24tc2Vjb25kYXJ5XCIgdXBsb2FkU3R5bGVDbGFzcz1cInAtYnV0dG9uLWhlbHBcIlxyXG4gICAgICByZW1vdmVTdHlsZUNsYXNzPVwicC1idXR0b24tZGFuZ2VyXCIgW2Nob29zZUxhYmVsXT1cIidzaGFyZWRfcmVwb3J0aW5nX2Nob29zZV9yZXBvcnRfZmlsZScgfCBsb2NhbGl6ZVwiXHJcbiAgICAgIFt1cGxvYWRMYWJlbF09XCInc2hhcmVkX3JlcG9ydGluZ19pbXBvcnRfcmVwb3J0JyB8IGxvY2FsaXplXCJcclxuICAgICAgW2NhbmNlbExhYmVsXT1cIidzaGFyZWRfcmVwb3J0aW5nX2NhbmNlbF9jaG9vc2VfcmVwb3J0X2ZpbGUnIHwgbG9jYWxpemVcIj5cclxuICAgICAgPG5nLXRlbXBsYXRlICpuZ0lmPVwidG9VcGxvYWRUb0V4ZWN1dGVGaWxlXCIgcFRlbXBsYXRlPVwiZmlsZXVwbG9hZC1jb250ZW50XCIgbGV0LWZpbGVzPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJmaWxlcz8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICA8c3Ryb25nPnt7IGZpbGVzWzBdLm5hbWUgfX08L3N0cm9uZz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvcC1maWxlVXBsb2FkPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG5cclxuICA8IS0tIDxUc2ktTW9kYWwtRm9vdGVyIChvbkNhbmNlbENsaWNrKT1cIm9uSW1wb3J0RmlsZVRvUmVwb3J0TW9kYWxDYW5jZWxDbGljaygpXCJcclxuICAgIChvblNhdmVDbGljayk9XCJvbkltcG9ydEZpbGVUb1JlcG9ydE1vZGFsU2F2ZUNsaWNrKClcIlxyXG4gICAgW3NhdmVEaXNhYmxlZF09XCIhdG9VcGxvYWRUb1VwZGF0ZVJlcG9ydEZpbGVEYXRhXCI+PC9Uc2ktTW9kYWwtRm9vdGVyPiAtLT5cclxuXHJcbjwvcC1kaWFsb2c+Il19
510
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlLWltcG9ydC1leHBvcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHNpLXNoYXJlZC11aS9zcmMvbGliL3RzaS1jb21wb25lbnRzL21hbmFnZS1pbXBvcnQtZXhwb3J0L21hbmFnZS1pbXBvcnQtZXhwb3J0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RzaS1zaGFyZWQtdWkvc3JjL2xpYi90c2ktY29tcG9uZW50cy9tYW5hZ2UtaW1wb3J0LWV4cG9ydC9tYW5hZ2UtaW1wb3J0LWV4cG9ydC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFeEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUNyRyxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSx3RUFBd0UsQ0FBQztBQUMzSCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUNsRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFbkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDakUsT0FBTyxFQUFFLFVBQVUsRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRWxGLE9BQU8sRUFBRSxvQkFBb0IsRUFBNkIsTUFBTSxjQUFjLENBQUM7QUFFL0UsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0saUVBQWlFLENBQUM7QUFDaEgsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFB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OytHQWxpQlUsMkJBQTJCO21HQUEzQiwyQkFBMkIsbURBRjNCLENBQUMsR0FBRyxZQUFZLENBQUMseUVBSWpCLG9CQUFvQixxWUM3QmpDLG91VUErSlc7OzRGRHBJRSwyQkFBMkI7a0JBUHZDLFNBQVM7K0JBQ0UsMEJBQTBCLGFBSXpCLENBQUMsR0FBRyxZQUFZLENBQUM7MlNBSUssYUFBYTtzQkFBN0MsU0FBUzt1QkFBQyxvQkFBb0I7Z0JBQ04sWUFBWTtzQkFBcEMsU0FBUzt1QkFBQyxZQUFZO2dCQUNBLGlCQUFpQjtzQkFBdkMsU0FBUzt1QkFBQyxVQUFVO2dCQWdEdUIsNkJBQTZCO3NCQUF4RSxTQUFTO3VCQUFDLCtCQUErQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGaWxlVXBsb2FkIH0gZnJvbSAncHJpbWVuZy9maWxldXBsb2FkJztcclxuaW1wb3J0IHsgZmlyc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQWxlcnRJbXBvcnRNZXNzYWdlQ29tcG9uZW50IH0gZnJvbSAnLi4vYWxlcnQtaW1wb3J0LW1lc3NhZ2UvYWxlcnQtaW1wb3J0LW1lc3NhZ2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ3JlYXRlT3JFZGl0TW9kZWxlSW1wb3J0Q29tcG9uZW50IH0gZnJvbSAnLi4vY3JlYXRlLW9yLWVkaXQtbW9kZWxlLWltcG9ydC9jcmVhdGUtb3ItZWRpdC1tb2RlbGUtaW1wb3J0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRzaVZpZXdHcmlkQ29tcG9uZW50IH0gZnJvbSAnLi4vb3V0cHV0LWNvbXBvbmVudHMvdHNpLXZpZXctZ3JpZC90c2ktdmlldy1ncmlkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRvb2x0aXBQb3NpdGlvbiB9IGZyb20gJy4uLy4uL2VudW1zL3Rvb2x0aXBQb3NpdGlvbi5lbnVtJztcclxuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IExvY2FsaXphdGlvbktleXMgfSBmcm9tICcuLi8uLi9jb25zdHMvbG9jYWxpemF0aW9uLWtleSc7XHJcbmltcG9ydCB7IElucHV0VHlwZXMsIEZpbHRlck9wZXJhdG9yVHlwZSwgTW9kZXMsIERpc3BsYXlUeXBlcyB9IGZyb20gJy4uLy4uL2VudW1zJztcclxuaW1wb3J0IHsgR3JpZENvbHVtbiwgQnV0dG9uQ2xpY2tSZXN1bHQgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgRXhlY3V0ZUltcG9ydFJlcXVlc3QsIEltcG9ydFJlc3VsdCwgU2VhcmNoRmllbGQgfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xyXG5pbXBvcnQgeyBNb2RlbGVJbXBvcnRTZXJ2aWNlLCBUc2lDb25maXJtYXRpb25TZXJ2aWNlLCBUc2lOb3RpZmljYXRpb25TZXJ2aWNlLCBFcnJvclJlc3BvbnNlTWFuYWdlclNlcnZpY2UsIFRzaU1lc3NhZ2VTZXJ2aWNlLCBUc2lNb2RhbFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IFRzaUZvcm1Db21wb25lbnRCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vdHNpLWJhc2UvY29tcG9uZW50cy90c2ktZm9ybS1iYXNlL3RzaS1mb3JtLWJhc2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2VnbWVudCB9IGZyb20gJy4uLy4uL2VuZC1wb2ludHMnO1xyXG5pbXBvcnQgeyBhcHBQcm92aWRlcnMgfSBmcm9tICcuLi8uLi9jb25zdHMvYXBwLXByb3ZpZGVycyc7XHJcbmltcG9ydCB7IER5bmFtaWNEaWFsb2dDb25maWcsIER5bmFtaWNEaWFsb2dSZWYgfSBmcm9tICdwcmltZW5nL2R5bmFtaWNkaWFsb2cnO1xyXG5pbXBvcnQgeyBGaWxlVHlwZUltcG9ydEVudW0gfSBmcm9tICcuLi8uLi9lbnVtcy9maWxlLXR5cGUtaW1wb3J0LWVudW0nO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLW1hbmFnZS1pbXBvcnQtZXhwb3J0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbWFuYWdlLWltcG9ydC1leHBvcnQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIC8vZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICBzdHlsZVVybHM6IFsnLi9tYW5hZ2UtaW1wb3J0LWV4cG9ydC5jb21wb25lbnQuc2NzcyddLFxyXG4gIHByb3ZpZGVyczogWy4uLmFwcFByb3ZpZGVyc11cclxufSlcclxuZXhwb3J0IGNsYXNzIE1hbmFnZUltcG9ydEV4cG9ydENvbXBvbmVudCBleHRlbmRzIFRzaUZvcm1Db21wb25lbnRCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuICBAVmlld0NoaWxkKFRzaVZpZXdHcmlkQ29tcG9uZW50KSBncmlkQ29tcG9uZW50ITogVHNpVmlld0dyaWRDb21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZCgnZmlsZVVwbG9hZCcpIGZpbGVVcGxvYWRlciE6IEZpbGVVcGxvYWQ7XHJcbiAgQFZpZXdDaGlsZChcInZpZXdHcmlkXCIpIHZpZXdHcmlkQ29tcG9uZW50PzogVHNpVmlld0dyaWRDb21wb25lbnQ7XHJcbiAgdG9vbHRpcFBvc2l0aW9uID0gVG9vbHRpcFBvc2l0aW9uO1xyXG5cclxuICB0b1VwbG9hZEZpbGVEYXRhOiBhbnk7XHJcbiAgb25SZW1vdmUoJGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMudG9VcGxvYWRGaWxlRGF0YSA9IHVuZGVmaW5lZDtcclxuICB9XHJcbiAgb25DbGVhcigkZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy50b1VwbG9hZEZpbGVEYXRhID0gdW5kZWZpbmVkO1xyXG4gIH1cclxuICBvbkZpbGVTZWxlY3RlZChldmVudDogYW55KTogdm9pZCB7XHJcbiAgICBjb25zdCBmaWxlOiBGaWxlID0gZXZlbnQuY3VycmVudEZpbGVzWzBdO1xyXG4gICAgdGhpcy50b1VwbG9hZEZpbGVEYXRhID0gZmlsZTtcclxuICB9XHJcbiAgb25JbXBvcnRGaWxlKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMubW9kZWxlSW1wb3J0U2VydmljZS51cGxvYWRKc29uRmlsZSh0aGlzLnRvVXBsb2FkRmlsZURhdGEpXHJcbiAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgcmVzcG9uc2UgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlc3BvbnNlLmVycm9yID09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5zdWNjZXNzKCdzaGFyZWRfaW1wb3J0TW9kZWxlX2pzb25fdXBsb2FkZWRfc3VjY2Vzc2Z1bGx5Jyk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuZXJyb3IocmVzcG9uc2UubWVzc2FnZSlcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuZ3JpZENvbXBvbmVudC5yZWZyZXNoKHRydWUpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3IgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coXCJlcnJvclwiKVxyXG4gICAgICAgIH1cclxuICAgICAgKVxyXG4gICAgdGhpcy5maWxlVXBsb2FkZXIuY2xlYXIoKVxyXG4gIH1cclxuXHJcbiAgY29sdW1uc0pzb246IEFycmF5PEdyaWRDb2x1bW4+ID0gW1xyXG4gICAge1xyXG4gICAgICBoZWFkZXI6IFwic2hhcmVkX2ltcG9ydE1vZGVsZV9qc29uX25hbWVcIixcclxuICAgICAgZmllbGQ6IFwianNvbkZpbGVOYW1lXCJcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGhlYWRlcjogJycsXHJcbiAgICAgIGZpZWxkOiAnZnJvbUpzb25Ub0RhdGFiYXNlJyxcclxuICAgICAgaXNCdXR0b246IHRydWUsXHJcbiAgICAgIGJ1dHRvbkljb246ICdwaSBwaS1hcnJvdy1jaXJjbGUtdXAnLFxyXG4gICAgICBzdHlsZUNsYXNzOiAncC1idXR0b24tdGV4dCBwLWJ1dHRvbi1zZWNvbmRhcnknXHJcbiAgICB9LFxyXG4gIF07XHJcbiAga2V5OiBzdHJpbmcgPSAnanNvbkZpbGVOYW1lJztcclxuICBncmlkRGF0YTogYW55XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2ltcG9ydEZpbGVUb0V4ZWN1dGVGaWxlVXBsb2FkJykgaW1wb3J0RmlsZVRvRXhlY3V0ZUZpbGVVcGxvYWQ/OiBGaWxlVXBsb2FkO1xyXG5cclxuICBjb2x1bW5zOiBhbnlcclxuXHJcbiAgaXNJbXBvcnRGaWxlVG9FeGVjdXRlVmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlXHJcbiAgdG9VcGxvYWRUb0V4ZWN1dGVGaWxlOiBhbnkgPSB1bmRlZmluZWRcclxuICB0b1VwbG9hZFdpdGhvdXRNb2RlbDogYW55ID0gdW5kZWZpbmVkXHJcbiAgdG9JbXBvcnRNb2RlbGVVaWQ/OiBzdHJpbmdcclxuXHJcbiAgY29sdW1uc0hpc3Rvcnk6IEFycmF5PEdyaWRDb2x1bW4+ID0gW1xyXG4gICAge1xyXG4gICAgICBoZWFkZXI6IFwic2hhcmVkX2ltcG9ydE1vZGVsZV9jb2RlX2ltcG9ydFwiLFxyXG4gICAgICBmaWVsZDogXCJjb2RlSW1wb3J0XCJcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGhlYWRlcjogXCJzaGFyZWRfaW1wb3J0TW9kZWxlX2RhdGVfaW1wb3J0XCIsXHJcbiAgICAgIGZpZWxkOiBcImRhdGVJbXBvcnRcIlxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaGVhZGVyOiBcInNoYXJlZF9pbXBvcnRNb2RlbGVfbm9tYnJlX2xpZ25lc1wiLFxyXG4gICAgICBmaWVsZDogXCJub21icmVMaWduZXNcIlxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaGVhZGVyOiAnJyxcclxuICAgICAgZmllbGQ6ICdkZWxldGVGcm9tRGF0YWJhc2UnLFxyXG4gICAgICBpc0J1dHRvbjogdHJ1ZSxcclxuICAgICAgYnV0dG9uSWNvbjogJ3BpIHBpLXRyYXNoJyxcclxuICAgICAgc3R5bGVDbGFzczogJ3AtYnV0dG9uLXRleHQgcC1idXR0b24tc2Vjb25kYXJ5J1xyXG4gICAgfSxcclxuICBdO1xyXG4gIGhpc3RvcnlHcmlkRGF0YTogYW55XHJcbiAgaW1wb3J0SGlzdG9yeUtleTogc3RyaW5nID0gJ2NvZGVJbXBvcnQnO1xyXG5cclxuICBmaWxlVHlwZSA6IHN0cmluZyA9IFwiLnhscywueGxzeFwiO1xyXG5cclxuICBpbXBvcnRSZXN1bHREYXRhOiBBcnJheTxJbXBvcnRSZXN1bHQ+ID0gW11cclxuXHJcbiAgc2VhcmNoRmllbGRzOiBBcnJheTxTZWFyY2hGaWVsZD4gPSBbXHJcbiAgXVxyXG5cclxuICBpbXBvcnRSZXN1bHRzQ29sdW1uczogQXJyYXk8R3JpZENvbHVtbj4gPSBbXHJcbiAgICB7XHJcbiAgICAgIGhlYWRlcjogJycsXHJcbiAgICAgIGZpZWxkOiAnY29uc3VsdERldGFpbCcsXHJcbiAgICAgIGlzQnV0dG9uOiB0cnVlLFxyXG4gICAgICBidXR0b25JY29uOiAncGkgcGktZXllJyxcclxuICAgICAgc3R5bGVDbGFzczogJ3AtYnV0dG9uLXRleHQgcC1idXR0b24tc2Vjb25kYXJ5J1xyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaGVhZGVyOiBcInNoYXJlZF9pbXBvcnRfcmVzdWx0X21vZGVsZV9pbXBvcnRfbGliZWxsZVwiLFxyXG4gICAgICBmaWVsZDogXCJtb2RlbGVJbXBvcnRMaWJlbGxlXCJcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGhlYWRlcjogXCJzaGFyZWRfaW1wb3J0X3Jlc3VsdF9tb2RlbGVfdXRpbGlzYXRldXJcIixcclxuICAgICAgZmllbGQ6IFwidXNlck5hbWVcIlxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaGVhZGVyOiBcInNoYXJlZF9pbXBvcnRfcmVzdWx0X2ZpbGVuYW1lXCIsXHJcbiAgICAgIGZpZWxkOiBcImZpbGVOYW1lXCJcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGhlYWRlcjogXCJzaGFyZWRfaW1wb3J0X3Jlc3VsdF9zdGFydERhdGVcIixcclxuICAgICAgZmllbGQ6IFwic3RhcnREYXRlXCIsXHJcbiAgICAgIHR5cGU6IERpc3BsYXlUeXBlcy5EQVRFVElNRV9ESVNQTEFZXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBoZWFkZXI6IFwic2hhcmVkX2ltcG9ydF9yZXN1bHRfZW5kX2RhdGVcIixcclxuICAgICAgZmllbGQ6IFwiZW5kRGF0ZVwiLFxyXG4gICAgICB0eXBlOiBEaXNwbGF5VHlwZXMuREFURVRJTUVfRElTUExBWVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaGVhZGVyOiBcInNoYXJlZF9pbXBvcnRfcmVzdWx0X3N0YXR1c1wiLFxyXG4gICAgICBmaWVsZDogXCJzdGF0dXNcIlxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaGVhZGVyOiBcInNoYXJlZF9pbXBvcnRfcmVzdWx0X3Byb2dyZXNzXCIsXHJcbiAgICAgIGZpZWxkOiBcInByb2dyZXNzXCIsXHJcbiAgICAgIHR5cGU6IERpc3BsYXlUeXBlcy5SQVRFX0RJU1BMQVlcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGhlYWRlcjogXCJzaGFyZWRfaW1wb3J0X3Jlc3VsdF90b3RhbF9saW5lc19udW1iZXJcIixcclxuICAgICAgZmllbGQ6IFwidG90YWxMaW5lc051bWJlclwiLFxyXG4gICAgICB0eXBlOiBEaXNwbGF5VHlwZXMuSU5URUdFUl9ESVNQTEFZXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBoZWFkZXI6IFwic2hhcmVkX2ltcG9ydF9yZXN1bHRfc2Vuc1wiLFxyXG4gICAgICBmaWVsZDogXCJzZW5zXCJcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGhlYWRlcjogXCJzaGFyZWRfaW1wb3J0X3Jlc3VsdF9tb2RlXCIsXHJcbiAgICAgIGZpZWxkOiBcIm1vZGVcIlxyXG4gICAgfVxyXG4gIF1cclxuXHJcbiAgcHJpdmF0ZSBfZGlhbG9nUmVmPzogRHluYW1pY0RpYWxvZ1JlZjtcclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIG1vZGVsZUltcG9ydFNlcnZpY2U6IE1vZGVsZUltcG9ydFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNvbmZpcm1hdGlvblNlcnZpY2U6IFRzaUNvbmZpcm1hdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG5vdGlmaWNhdGlvblNlcnZpY2U6IFRzaU5vdGlmaWNhdGlvblNlcnZpY2UsXHJcbiAgICBwdWJsaWMgb3ZlcnJpZGUgY29uZmlnOiBEeW5hbWljRGlhbG9nQ29uZmlnLCBwcml2YXRlIF90c2lNb2RhbFNlcnZpY2U6IFRzaU1vZGFsU2VydmljZSxcclxuICAgIHByaXZhdGUgX2Vycm9yUmVzcG9uc2VNYW5hZ2VyU2VydmljZTogRXJyb3JSZXNwb25zZU1hbmFnZXJTZXJ2aWNlLFxyXG4gICAgcHVibGljIG92ZXJyaWRlIHJlZj86IER5bmFtaWNEaWFsb2dSZWYpIHtcclxuICAgIHN1cGVyKHJlZiwgY29uZmlnKVxyXG4gICAgdGhpcy5zZWFyY2hGaWVsZHMgPSBbXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBJbnB1dFR5cGVzLlRFWFRfQk9YLFxyXG4gICAgICAgIGZpZWxkOiBcIkNsYXNzZVwiLFxyXG4gICAgICAgIGxhYmVsVmFsdWU6IFwiQ2xhc3NlXCIsXHJcbiAgICAgICAgb3BlcmF0b3I6IEZpbHRlck9wZXJhdG9yVHlwZS5FUVVBTCxcclxuICAgICAgICBzdHlsZUNsYXNzOiAnY29sLTYnLFxyXG4gICAgICAgIGlucHV0U3R5bGVDbGFzczogJ2NvbC0zJyxcclxuICAgICAgICBsYWJlbFN0eWxlQ2xhc3M6ICdjb2wtMycsXHJcbiAgICAgICAgZGlzYWJsZWQ6IHRydWUsXHJcbiAgICAgICAgdmFsdWU6IHRoaXMuY29uZmlnPy5kYXRhPy5idXNpbmVzc0NsYXNzXHJcbiAgICAgIH1cclxuICAgIF1cclxuICAgIHRoaXMuY29sdW1ucyA9IFtcclxuICAgICAge1xyXG4gICAgICAgIGZpZWxkOiAnbm9tTW9kZWxlJyxcclxuICAgICAgICBoZWFkZXI6ICdzaGFyZWRfaW1wb3J0TW9kZWxlX25vbSdcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGhlYWRlcjogJycsXHJcbiAgICAgICAgZmllbGQ6ICdlZGl0JyxcclxuICAgICAgICBpc0J1dHRvbjogdHJ1ZSxcclxuICAgICAgICBidXR0b25JY29uOiAncGkgcGktZmlsZS1lZGl0JyxcclxuICAgICAgICBzdHlsZUNsYXNzOiAncC1idXR0b24tdGV4dCBwLWJ1dHRvbi1zdWNjZXNzJyxcclxuICAgICAgICB0b29sVGlwVGV4dDogJ01vZGlmaWVyJ1xyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgaGVhZGVyOiAnJyxcclxuICAgICAgICBmaWVsZDogJ2V4cG9ydEpzb24nLFxyXG4gICAgICAgIGlzQnV0dG9uOiB0cnVlLFxyXG4gICAgICAgIGJ1dHRvbkljb246ICdwaSBwaS1maWxlLWV4cG9ydCcsXHJcbiAgICAgICAgc3R5bGVDbGFzczogJ3AtYnV0dG9uLXRleHQgcC1idXR0b24taGVscCcsXHJcbiAgICAgICAgdG9vbFRpcFRleHQ6ICdFeHBvcnRlciBKc29uJ1xyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgaGVhZGVyOiAnJyxcclxuICAgICAgICBmaWVsZDogJ2V4cG9ydCcsXHJcbiAgICAgICAgaXNCdXR0b246IHRydWUsXHJcbiAgICAgICAgYnV0dG9uSWNvbjogJ3BpIHBpLWZpbGUtZXhjZWwnLFxyXG4gICAgICAgIHN0eWxlQ2xhc3M6ICdwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLXdhcm5pbmcnLFxyXG4gICAgICAgIHRvb2xUaXBUZXh0OiAnRXhwb3J0ZXInXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBoZWFkZXI6ICcnLFxyXG4gICAgICAgIGZpZWxkOiAnaW1wb3J0JyxcclxuICAgICAgICBpc0J1dHRvbjogdHJ1ZSxcclxuICAgICAgICBidXR0b25JY29uOiAncGkgcGktZmlsZS1pbXBvcnQnLFxyXG4gICAgICAgIHN0eWxlQ2xhc3M6ICdwLWJ1dHRvbi10ZXh0JyxcclxuICAgICAgICB0b29sVGlwVGV4dDogJ0ltcG9ydGVyJ1xyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgaGVhZGVyOiAnJyxcclxuICAgICAgICBmaWVsZDogJ2RlbGV0ZScsXHJcbiAgICAgICAgaXNCdXR0b246IHRydWUsXHJcbiAgICAgICAgYnV0dG9uSWNvbjogJ3BpIHBpLXRyYXNoJyxcclxuICAgICAgICBzdHlsZUNsYXNzOiAncC1idXR0b24tdGV4dCBwLWJ1dHRvbi1kYW5nZXInLFxyXG4gICAgICAgIHRvb2xUaXBUZXh0OiAnU3VwcHJpbWVyJ1xyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgaGVhZGVyOiAnJyxcclxuICAgICAgICBmaWVsZDogJ2Rvd25sb2FkSnNvbicsXHJcbiAgICAgICAgaXNCdXR0b246IHRydWUsXHJcbiAgICAgICAgYnV0dG9uSWNvbjogJ3BpIHBpLWFycm93LWNpcmNsZS1kb3duJyxcclxuICAgICAgICBzdHlsZUNsYXNzOiAncC1idXR0b24tdGV4dCBwLWJ1dHRvbi1oZWxwJyxcclxuICAgICAgICB0b29sVGlwVGV4dDogJ0V4cG9ydCBKc29uIFNlcnZlcidcclxuICAgICAgfSxcclxuICAgIF07XHJcbiAgfVxyXG5cclxuXHJcbiAgb3ZlcnJpZGUgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XHJcblxyXG4gICAgc3VwZXIubmdPbkluaXQoKVxyXG4gICAgbGV0IGRhdGEgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLm1vZGVsZUltcG9ydFNlcnZpY2UuR2V0SnNvbkZpbGVzKHRoaXMuY29uZmlnPy5kYXRhPy5mb3JtTmFtZSkpXHJcbiAgICB0aGlzLmdyaWREYXRhID0gZGF0YVxyXG4gICAgYXdhaXQgdGhpcy5nZXRJbXBvcnRSZXN1bHQoKVxyXG4gICAgaWYgKFNlZ21lbnQucHJvZHVjdGlvbikge1xyXG4gICAgICBsZXQgYnV0dG9uQWRCdWlsdGluVGVtcGxhdGVzSW5kZXggPSB0aGlzLmNvbHVtbnMuZmluZEluZGV4KChjb2w6IEdyaWRDb2x1bW4pID0+IHtcclxuICAgICAgICByZXR1cm4gY29sLmZpZWxkID09IFwiZG93bmxvYWRKc29uXCJcclxuICAgICAgfSlcclxuICAgICAgaWYgKGJ1dHRvbkFkQnVpbHRpblRlbXBsYXRlc0luZGV4ICE9IC0xKSB7XHJcbiAgICAgICAgdGhpcy5jb2x1bW5zLnNwbGljZShidXR0b25BZEJ1aWx0aW5UZW1wbGF0ZXNJbmRleCwgMSlcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5oaXN0b3J5R3JpZERhdGEgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLm1vZGVsZUltcG9ydFNlcnZpY2UuR2V0SW1wb3J0SGlzdG9yeSh0aGlzLmNvbmZpZz8uZGF0YT8uYnVzaW5lc3NDbGFzcykpXHJcbiAgfVxyXG5cclxuICBhc3luYyByZWZyZXNoSW1wb3J0RXhwb3J0RGF0YSgpe1xyXG4gICAgbGV0IGRhdGEgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLm1vZGVsZUltcG9ydFNlcnZpY2UuR2V0SnNvbkZpbGVzKHRoaXMuY29uZmlnPy5kYXRhPy5mb3JtTmFtZSkpXHJcbiAgICB0aGlzLmdyaWREYXRhID0gZGF0YVxyXG4gICAgYXdhaXQgdGhpcy5nZXRJbXBvcnRSZXN1bHQoKVxyXG4gICAgdGhpcy5oaXN0b3J5R3JpZERhdGEgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLm1vZGVsZUltcG9ydFNlcnZpY2UuR2V0SW1wb3J0SGlzdG9yeSh0aGlzLmNvbmZpZz8uZGF0YT8uYnVzaW5lc3NDbGFzcykpXHJcbiAgfVxyXG5cclxuICBvcGVuTW9kYWwoKSB7XHJcbiAgICB0aGlzLl9kaWFsb2dSZWYgPSB0aGlzLl90c2lNb2RhbFNlcnZpY2Uub3BlbihDcmVhdGVPckVkaXRNb2RlbGVJbXBvcnRDb21wb25lbnQsIHtcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIGVudGl0eUJ1c2luZXNzQ2xhc3M6IHRoaXMuY29uZmlnPy5kYXRhPy5idXNpbmVzc0NsYXNzLFxyXG4gICAgICAgIGZvcm1OYW1lOiB0aGlzLmNvbmZpZz8uZGF0YT8uZm9ybU5hbWUsXHJcbiAgICAgICAgbW9kZTogTW9kZXMuY3JlYXRlXHJcbiAgICAgIH0sXHJcbiAgICAgIHN0eWxlQ2xhc3M6ICcnLFxyXG4gICAgICB3aWR0aDogJzc1dncnLFxyXG4gICAgICBoZWlnaHQ6ICc1NXZ3JyxcclxuICAgICAgbWF4aW1pemFibGU6IHRydWUsXHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLl9kaWFsb2dSZWYub25DbG9zZS5zdWJzY3JpYmUoKHZhbD86IGFueSkgPT4ge1xyXG4gICAgICBpZiAodGhpcy52aWV3R3JpZENvbXBvbmVudCkge1xyXG4gICAgICAgIHRoaXMudmlld0dyaWRDb21wb25lbnQucmVmcmVzaCh0cnVlKVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGdldEltcG9ydFJlc3VsdCgpIHtcclxuICAgIGlmICghdGhpcy5jb25maWc/LmRhdGE/LmJ1c2luZXNzQ2xhc3MpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdHJ5IHtcclxuICAgICAgbGV0IGRhdGEgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLm1vZGVsZUltcG9ydFNlcnZpY2UuZ2V0SW1wb3J0UmVzdWx0QnlCdXNpbmVzc0NsYXNzKHRoaXMuY29uZmlnPy5kYXRhPy5idXNpbmVzc0NsYXNzKSlcclxuICAgICAgdGhpcy5pbXBvcnRSZXN1bHREYXRhID0gZGF0YVxyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc29sZS5lcnJvcihlcnJvcilcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGJ1dHRvbkNsaWNrZWQoZGF0YTogQnV0dG9uQ2xpY2tSZXN1bHQpIHtcclxuICAgIGlmIChkYXRhLmZpZWxkID09IFwiZWRpdFwiKSB7XHJcbiAgICAgIHRoaXMuX2RpYWxvZ1JlZiA9IHRoaXMuX3RzaU1vZGFsU2VydmljZS5vcGVuKENyZWF0ZU9yRWRpdE1vZGVsZUltcG9ydENvbXBvbmVudCwge1xyXG4gICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgIGlkOiBkYXRhLmtleT8udWlkLFxyXG4gICAgICAgICAgZW50aXR5QnVzaW5lc3NDbGFzczogdGhpcy5jb25maWc/LmRhdGE/LmJ1c2luZXNzQ2xhc3MsXHJcbiAgICAgICAgICBtb2RlOiBNb2Rlcy5lZGl0XHJcbiAgICAgICAgfSxcclxuICAgICAgICBzdHlsZUNsYXNzOiAnJyxcclxuICAgICAgICB3aWR0aDogJzc1dncnLFxyXG4gICAgICAgIGhlaWdodDogJzU1dncnLFxyXG4gICAgICAgIG1heGltaXphYmxlOiB0cnVlLFxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMuX2RpYWxvZ1JlZi5vbkNsb3NlLnN1YnNjcmliZSgodmFsPzogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMudmlld0dyaWRDb21wb25lbnQpIHtcclxuICAgICAgICAgIHRoaXMudmlld0dyaWRDb21wb25lbnQucmVmcmVzaCh0cnVlKVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChkYXRhLmZpZWxkID09IFwiZGVsZXRlXCIpIHtcclxuICAgICAgdGhpcy5kZWxldGVNb2RlbGVJbXBvcnQoZGF0YS5rZXk/LnVpZClcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGRhdGEuZmllbGQgPT0gXCJpbXBvcnRcIikge1xyXG4gICAgICB0aGlzLmlzSW1wb3J0RmlsZVRvRXhlY3V0ZVZpc2libGUgPSB0cnVlXHJcbiAgICAgIHRoaXMudG9JbXBvcnRNb2RlbGVVaWQgPSBkYXRhLmtleT8udWlkXHJcbiAgICAgIHRoaXMuZmlsZVR5cGUgPSBkYXRhLmtleT8uZmlsZVR5cGUgPT0gRmlsZVR5cGVJbXBvcnRFbnVtLlhMU1ggPyBcIi54bHMsLnhsc3hcIiA6IFwiLmNzdlwiXHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChkYXRhLmZpZWxkID09IFwiZXhwb3J0XCIpIHtcclxuICAgICAgdGhpcy5leHBvcnREYXRhKGRhdGEua2V5Py51aWQpXHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChkYXRhLmZpZWxkID09IFwiZXhwb3J0SnNvblwiKSB7XHJcbiAgICAgIHRoaXMuZXhwb3J0RGF0YUpzb24oZGF0YS5rZXk/LnVpZClcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGRhdGEuZmllbGQgPT0gXCJkb3dubG9hZEpzb25cIikge1xyXG4gICAgICB0aGlzLmV4cG9ydERhdGFKc29uU2VydmVyKGRhdGEua2V5Py51aWQpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBleHBvcnREYXRhKGlkOiBzdHJpbmcpIHtcclxuICAgIGlmIChpZCAhPSB1bmRlZmluZWQgJiYgaWQgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLmlzbG9hZGluZyA9IHRydWVcclxuICAgICAgdGhpcy5tb2RlbGVJbXBvcnRTZXJ2aWNlLmV4ZWN1dGVFeHBvcnQoaWQsIHRoaXMuY29uZmlnLmRhdGE/LnBhZ2VkUmVxdWVzdCkuc3Vic2NyaWJlKFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIG5leHQ6IChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5kb3dubG9hZEZpbGUoZGF0YT8uZGF0YSlcclxuICAgICAgICAgICAgdGhpcy5pc2xvYWRpbmcgPSBmYWxzZVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGVycm9yOiAoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIkV4cG9ydCBlcnJvciA9PlwiLCBlcnJvcilcclxuICAgICAgICAgICAgdGhpcy5pc2xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5fZXJyb3JSZXNwb25zZU1hbmFnZXJTZXJ2aWNlLnNob3dFcnJvck1lc3NhZ2VzRnJvbUFycmF5U3RyaW5nKFtlcnJvcj8uZXJyb3I/Lm1lc3NhZ2VdKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIClcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGV4cG9ydERhdGFKc29uKGlkOiBzdHJpbmcpIHtcclxuICAgIGlmIChpZCAhPSB1bmRlZmluZWQgJiYgaWQgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLmlzbG9hZGluZyA9IHRydWVcclxuICAgICAgdGhpcy5tb2RlbGVJbXBvcnRTZXJ2aWNlLmV4ZWN1dGVFeHBvcnRKc29uKGlkKS5zdWJzY3JpYmUoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbmV4dDogKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmRvd25sb2FkRmlsZShkYXRhPy5kYXRhKVxyXG4gICAgICAgICAgICB0aGlzLmlzbG9hZGluZyA9IGZhbHNlXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZXJyb3I6IChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNsb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5lcnJvcihlcnJvcik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICApXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBleHBvcnREYXRhSnNvblNlcnZlcihpZDogc3RyaW5nKSB7XHJcbiAgICBpZiAoaWQgIT0gdW5kZWZpbmVkICYmIGlkICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5pc2xvYWRpbmcgPSB0cnVlXHJcbiAgICAgIHRoaXMubW9kZWxlSW1wb3J0U2VydmljZS5leGVjdXRlRXhwb3J0SnNvblNlcnZlcihpZCkuc3Vic2NyaWJlKFxyXG5cclxuICAgICAgICByZXNwb25zZSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmlzbG9hZGluZyA9IGZhbHNlXHJcbiAgICAgICAgICB0aGlzLnJlZnJlc2hHcmlkKCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvciA9PiB7XHJcbiAgICAgICAgICB0aGlzLmlzbG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmVycm9yKGVycm9yKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICApXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkb3dubG9hZEZpbGUoZGF0YTogYW55KSB7XHJcbiAgICBsZXQgYmxvYlVybCA9IFwiZGF0YTphcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldDtiYXNlNjQsXCIgKyBkYXRhLmZpbGVDb250ZW50O1xyXG4gICAgbGV0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYVwiKTtcclxuICAgIGxpbmsuc2V0QXR0cmlidXRlKFwiaHJlZlwiLCBibG9iVXJsKTtcclxuICAgIGxpbmsuc2V0QXR0cmlidXRlKFwiZG93bmxvYWRcIiwgZGF0YS5maWxlTmFtZSk7XHJcbiAgICBsaW5rLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XHJcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspO1xyXG4gICAgbGluay5jbGljaygpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rKTtcclxuICB9XHJcblxyXG5cclxuICBkZWxldGVNb2RlbGVJbXBvcnQodWlkIDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmNvbmZpcm1hdGlvblNlcnZpY2UuY29uZmlybShcclxuICAgICAgTG9jYWxpemF0aW9uS2V5cy5jb25maXJtRGVsZXRlLFxyXG4gICAgICB1bmRlZmluZWQsXHJcbiAgICAgIChyZXN1bHQ6IGJvb2xlYW4pID0+IHtcclxuICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICB0aGlzLmlzbG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLm1vZGVsZUltcG9ydFNlcnZpY2UuZGVsZXRlKHVpZCkuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgbmV4dDogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ncmlkQ29tcG9uZW50LnJlZnJlc2godHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uuc3VjY2VzcyhMb2NhbGl6YXRpb25LZXlzLmRlbGV0ZWRTdWNjZXNzZnVsbHkpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pc2xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIGVycm9yOiAoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pc2xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5lcnJvcihlcnJvcik7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIG9uSW1wb3J0RmlsZVRvRXhlY3V0ZV9GaWxlU2VsZWN0ZWQoZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgY29uc3QgZmlsZTogRmlsZSA9IGV2ZW50LmN1cnJlbnRGaWxlc1swXVxyXG4gICAgdGhpcy50b1VwbG9hZFRvRXhlY3V0ZUZpbGUgPSBmaWxlO1xyXG4gICAgdGhpcy5pc2xvYWRpbmcgPSBmYWxzZVxyXG4gIH1cclxuXHJcbiAgb25JbXBvcnRGaWxlVG9FeGVjdXRlX0NsZWFyKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMudG9VcGxvYWRUb0V4ZWN1dGVGaWxlID0gdW5kZWZpbmVkXHJcbiAgICB0aGlzLmlzbG9hZGluZyA9IGZhbHNlXHJcbiAgfVxyXG5cclxuICBvbkltcG9ydEZpbGVUb0V4ZWN1dGVfUmVtb3ZlKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMudG9VcGxvYWRUb0V4ZWN1dGVGaWxlID0gdW5kZWZpbmVkXHJcbiAgfVxyXG5cclxuICBvbkltcG9ydEZpbGVUb0V4ZWN1dGVfSW1wb3J0RmlsZShldmVudDogYW55KSB7XHJcbiAgICBpZiAodGhpcy50b0ltcG9ydE1vZGVsZVVpZCAmJiB0aGlzLnRvVXBsb2FkVG9FeGVjdXRlRmlsZSkge1xyXG4gICAgICB0aGlzLmlzbG9hZGluZyA9IHRydWVcclxuICAgICAgdGhpcy5pc0ltcG9ydEZpbGVUb0V4ZWN1dGVWaXNpYmxlID0gZmFsc2VcclxuICAgICAgbGV0IGV4ZWN1dGVJbXBvcnRSZXF1ZXN0OiBFeGVjdXRlSW1wb3J0UmVxdWVzdCA9IG5ldyBFeGVjdXRlSW1wb3J0UmVxdWVzdCgpXHJcbiAgICAgIGV4ZWN1dGVJbXBvcnRSZXF1ZXN0Lm1vZGVsZUltcG9ydFVpZCA9IHRoaXMudG9JbXBvcnRNb2RlbGVVaWQ7XHJcbiAgICAgIGV4ZWN1dGVJbXBvcnRSZXF1ZXN0LmZpbGVOYW1lID0gdGhpcy50b1VwbG9hZFRvRXhlY3V0ZUZpbGU/Lm5hbWVcclxuXHJcbiAgICAgIHRoaXMubW9kZWxlSW1wb3J0U2VydmljZS5leGVjdXRlSW1wb3J0KGV4ZWN1dGVJbXBvcnRSZXF1ZXN0LCB0aGlzLnRvVXBsb2FkVG9FeGVjdXRlRmlsZSlcclxuICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBuZXh0OiBhc3luYyAocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc29sZS5sb2cocmVzdWx0KVxyXG4gICAgICAgICAgICAgIHRoaXMuaXNJbXBvcnRGaWxlVG9FeGVjdXRlVmlzaWJsZSA9IGZhbHNlXHJcbiAgICAgICAgICAgICAgdGhpcy5pc2xvYWRpbmcgPSBmYWxzZVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBlcnJvcjogKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuaXNsb2FkaW5nID0gZmFsc2VcclxuICAgICAgICAgICAgICB0aGlzLl9lcnJvclJlc3BvbnNlTWFuYWdlclNlcnZpY2Uuc2hvd0Vycm9yTWVzc2FnZShlcnJvcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICApXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkltcG9ydEZpbGVXaXRob3V0TW9kZWxfRmlsZVNlbGVjdGVkKGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIGNvbnN0IGZpbGU6IEZpbGUgPSBldmVudC5jdXJyZW50RmlsZXNbMF07XHJcbiAgICB0aGlzLnRvVXBsb2FkV2l0aG91dE1vZGVsID0gZmlsZTtcclxuICAgIHRoaXMuaXNsb2FkaW5nID0gZmFsc2VcclxuICB9XHJcblxyXG4gIG9uSW1wb3J0RmlsZVdpdGhvdXRNb2RlbF9DbGVhcihldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnRvVXBsb2FkV2l0aG91dE1vZGVsID0gdW5kZWZpbmVkXHJcbiAgICB0aGlzLmlzbG9hZGluZyA9IGZhbHNlXHJcbiAgfVxyXG5cclxuICBvbkltcG9ydEZpbGVXaXRob3V0TW9kZWxfUmVtb3ZlKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMudG9VcGxvYWRXaXRob3V0TW9kZWwgPSB1bmRlZmluZWRcclxuICB9XHJcblxyXG4gIG9uSW1wb3J0RmlsZVdpdGhvdXRNb2RlbF9JbXBvcnRGaWxlKGV2ZW50OiBhbnkpIHtcclxuICAgIGlmICh0aGlzLnRvVXBsb2FkV2l0aG91dE1vZGVsKSB7XHJcbiAgICAgIHRoaXMuaXNsb2FkaW5nID0gdHJ1ZVxyXG5cclxuICAgICAgbGV0IGV4ZWN1dGVJbXBvcnRSZXF1ZXN0OiBFeGVjdXRlSW1wb3J0UmVxdWVzdCA9IG5ldyBFeGVjdXRlSW1wb3J0UmVxdWVzdCgpXHJcbiAgICAgIGV4ZWN1dGVJbXBvcnRSZXF1ZXN0Lm1vZGVsZUltcG9ydFVpZCA9IHVuZGVmaW5lZDtcclxuICAgICAgZXhlY3V0ZUltcG9ydFJlcXVlc3QuZmlsZU5hbWUgPSB0aGlzLnRvVXBsb2FkV2l0aG91dE1vZGVsPy5uYW1lXHJcblxyXG4gICAgICB0aGlzLm1vZGVsZUltcG9ydFNlcnZpY2UuZXhlY3V0ZUltcG9ydFdpdGhvdXRNb2RlbChleGVjdXRlSW1wb3J0UmVxdWVzdCwgdGhpcy50b1VwbG9hZFdpdGhvdXRNb2RlbClcclxuICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBuZXh0OiBhc3luYyAocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc29sZS5sb2cocmVzdWx0KVxyXG4gICAgICAgICAgICAgIHRoaXMuaXNsb2FkaW5nID0gZmFsc2VcclxuXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICApXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBsb2FkR3JpZERhdGEoKTogdm9pZCB7XHJcbiAgICB0aGlzLm1vZGVsZUltcG9ydFNlcnZpY2UuR2V0SnNvbkZpbGVzKHRoaXMuY29uZmlnPy5kYXRhPy5mb3JtTmFtZSkuc3Vic2NyaWJlKGRhdGEgPT4ge1xyXG4gICAgICB0aGlzLmdyaWREYXRhID0gZGF0YTtcclxuICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgbG9hZGluZyBncmlkIGRhdGEnLCBlcnJvcik7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHJlZnJlc2hHcmlkKCk6IHZvaWQge1xyXG4gICAgdGhpcy5sb2FkR3JpZERhdGEoKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZUNvbnN1bHRJbXBvcnRSZXN1bHRCdXR0b25DbGlja2VkKGV2ZW50OiBCdXR0b25DbGlja1Jlc3VsdCkge1xyXG4gICAgdGhpcy5fdHNpTW9kYWxTZXJ2aWNlLm9wZW4oQWxlcnRJbXBvcnRNZXNzYWdlQ29tcG9uZW50LCB7XHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICBpZDogZXZlbnQua2V5LFxyXG4gICAgICB9LFxyXG4gICAgICBjbG9zYWJsZTogdHJ1ZSxcclxuICAgICAgZHJhZ2dhYmxlOiB0cnVlLFxyXG4gICAgICB3aWR0aDogJzM1dncnLFxyXG4gICAgICBoZWlnaHQ6ICcyNXZ3JyxcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBoYW5kbGVCdXR0b25Db2x1bW5FeGVjdXRlQ2xpY2tlZChldmVudDogQnV0dG9uQ2xpY2tSZXN1bHQpIHtcclxuICAgIGlmIChldmVudC5maWVsZCA9PSAnZnJvbUpzb25Ub0RhdGFiYXNlJykge1xyXG4gICAgICB0aGlzLm1vZGVsZUltcG9ydFNlcnZpY2UuZXhlY3V0ZUltcG9ydEpzb24oZXZlbnQua2V5LCB0aGlzLmNvbmZpZz8uZGF0YT8uZm9ybU5hbWUpXHJcbiAgICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAgIHJlc3BvbnNlID0+IHtcclxuICAgICAgICAgICAgdGhpcy5ncmlkQ29tcG9uZW50LnJlZnJlc2godHJ1ZSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZXJyb3IgPT4ge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBpbXBvcnRpbmcganNvbjonLCBlcnJvcik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGV2ZW50LmZpZWxkID09ICdkZWxldGVGcm9tRGF0YWJhc2UnKSB7XHJcbiAgICAgIHRoaXMuY29uZmlybWF0aW9uU2VydmljZS5jb25maXJtKFxyXG4gICAgICAgIExvY2FsaXphdGlvbktleXMuY29uZmlybURlbGV0ZSxcclxuICAgICAgICB1bmRlZmluZWQsXHJcbiAgICAgICAgKHJlc3VsdDogYm9vbGVhbikgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgICB0aGlzLm1vZGVsZUltcG9ydFNlcnZpY2UuZGVsZXRlSW1wb3J0KGV2ZW50LmtleSwgdGhpcy5jb25maWc/LmRhdGE/LmJ1c2luZXNzQ2xhc3MpXHJcbiAgICAgICAgICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAgICAgICAgIGFzeW5jIHJlc3BvbnNlID0+IHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5ncmlkQ29tcG9uZW50LnJlZnJlc2godHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuaGlzdG9yeUdyaWREYXRhID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5tb2RlbGVJbXBvcnRTZXJ2aWNlLkdldEltcG9ydEhpc3RvcnkodGhpcy5jb25maWc/LmRhdGE/LmJ1c2luZXNzQ2xhc3MpKVxyXG4gICAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uuc3VjY2VzcyhMb2NhbGl6YXRpb25LZXlzLmRlbGV0ZWRTdWNjZXNzZnVsbHkpO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGVycm9yID0+IHtcclxuICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgaW1wb3J0aW5nIGpzb246JywgZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG5cclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcbiIsIjxwLXRhYlZpZXc+XHJcbiAgPHAtdGFiUGFuZWwgW2hlYWRlcl09XCInc2hhcmVkX2V4ZWN1dGVfaW1wb3J0X21vZGVsX2ltcG9ydF9leHBvcnQnIHwgbG9jYWxpemVcIiBjbGFzcz1cInB0LTMgcHgtMlwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmRcIj5cclxuICAgICAgPGRpdiAqYnVzeT1cImlzbG9hZGluZ1wiPjwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZ3JpZFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJncmlkIGNvbC0xMFwiPlxyXG4gICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgPFRzaS1MYWJlbCBjbGFzcz1cImNvbC0yXCIgW2xhYmVsVmFsdWVdPVwiJ3NoYXJlZF9yZXBvcnRpbmdfZm9ybSdcIj5cclxuICAgICAgICAgICAgPC9Uc2ktTGFiZWw+XHJcbiAgICAgICAgICAgIDwhLS0gPHAtZHJvcGRvd24gY2xhc3M9XCJjb2wtMTAgdHNpLWNvbXBvbmVudFwiIGNsYXNzPVwidHNpLWNvbXBvbmVudFwiIHN0eWxlQ2xhc3M9XCJ0c2ktY29tcG9uZW50XCIgYXBwZW5kVHA9XCJib2R5XCJcclxuICAgICAgICAgICAgICAgIG9wdGlvbkxhYmVsPVwidmFsdWVcIiBvcHRpb25WYWx1ZT1cImtleVwiIFtmaWx0ZXJdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBmaWx0ZXJCeT1cInZhbHVlXCIgW3Nob3dDbGVhcl09XCJ0cnVlXCIgcGxhY2Vob2xkZXI9XCJ7eydzaGFyZWRfcmVwb3J0aW5nX3NlbGVjdF9mb3JtJyB8IGxvY2FsaXplfX1cIlxyXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInRydWVcIj5cclxuICAgICAgICAgICAgICA8L3AtZHJvcGRvd24+IC0tPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPHAtdG9vbGJhciBzdHlsZUNsYXNzPVwibWItNCBnYXAtMlwiPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJsZWZ0XCI+XHJcbiAgICAgICAgICA8VHNpLUJ1dHRvbiBbdGV4dF09XCInc2hhcmVkX3JlcG9ydGluZ19hZGRfcmVwb3J0JyB8IGxvY2FsaXplXCJcclxuICAgICAgICAgICAgaWNvbj1cInAtYnV0dG9uLWljb24gcC1idXR0b24taWNvbi1sZWZ0IHBpIHBpLXBsdXNcIlxyXG4gICAgICAgICAgICBzdHlsZUNsYXNzPVwicC1lbGVtZW50IHAtYnV0dG9uLXN1Y2Nlc3MgbXItMiBwLWJ1dHRvbiBwLWNvbXBvbmVudCBuZy1zdGFyLWluc2VydGVkIHAtYnV0dG9uLWxhYmVsXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5Nb2RhbCgpXCI+PC9Uc2ktQnV0dG9uPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cInJpZ2h0XCI+XHJcbiAgICAgICAgICA8cC1maWxlVXBsb2FkICNmaWxlVXBsb2FkIG5hbWU9XCJkZW1vW11cIiAob25CZWZvcmVVcGxvYWQpPVwib25JbXBvcnRGaWxlKCRldmVudClcIlxyXG4gICAgICAgICAgICAob25TZWxlY3QpPVwib25GaWxlU2VsZWN0ZWQoJGV2ZW50KVwiIChvbkNsZWFyKT1cIm9uQ2xlYXIoJGV2ZW50KVwiIChvblJlbW92ZSk9XCJvblJlbW92ZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgW211bHRpcGxlXT1cImZhbHNlXCIgYWNjZXB0PVwiYXBwbGljYXRpb24vanNvblwiIFttYXhGaWxlU2l6ZV09XCIxMDAwMDAwXCJcclxuICAgICAgICAgICAgW2ludmFsaWRGaWxlU2l6ZU1lc3NhZ2VTdW1tYXJ5XT1cIidzaGFyZWRfZmlsZV91cGxvYWRfaW52YWxpZF9maWxlX3NpemVfbWVzc2FnZV9zdW1tYXJ5JyB8IGxvY2FsaXplXCJcclxuICAgICAgICAgICAgW2ludmFsaWRGaWxlU2l6ZU1lc3NhZ2VEZXRhaWxdPVwiJ3NoYXJlZF9maWxlX3VwbG9hZF9pbnZhbGlkX2ZpbGVfc2l6ZV9tZXNzYWdlX2RldGFpbCcgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgIFtpbnZhbGlkRmlsZVR5cGVNZXNzYWdlU3VtbWFyeV09XCInc2hhcmVkX2ZpbGVfdXBsb2FkX2ludmFsaWRfZmlsZV90eXBlX21lc3NhZ2Vfc3VtbWFyeScgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgIFtpbnZhbGlkRmlsZUxpbWl0TWVzc2FnZURldGFpbF09XCInc2hhcmVkX2ZpbGVfdXBsb2FkX2ludmFsaWRfZmlsZV9saW1pdF9tZXNzYWdlX2RldGFpbCcgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgIFtpbnZhbGlkRmlsZUxpbWl0TWVzc2FnZVN1bW1hcnldPVwiJ3NoYXJlZF9maWxlX3VwbG9hZF9pbnZhbGlkX2ZpbGVfbGltaXRfbWVzc2FnZV9zdW1tYXJ5JyB8IGxvY2FsaXplXCJcclxuICAgICAgICAgICAgW2ludmFsaWRGaWxlVHlwZU1lc3NhZ2VEZXRhaWxdPVwiJ3NoYXJlZF9maWxlX3VwbG9hZF9pbnZhbGlkX2ZpbGVfdHlwZV9tZXNzYWdlX2RldGFpbCcgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgIFtjaG9vc2VJY29uXT1cIidwaSBwaS1wYXBlcmNsaXAnXCIgY2FuY2VsU3R5bGVDbGFzcz1cInAtYnV0dG9uLXNlY29uZGFyeVwiIHVwbG9hZFN0eWxlQ2xhc3M9XCJwLWJ1dHRvbi1oZWxwXCJcclxuICAgICAgICAgICAgcmVtb3ZlU3R5bGVDbGFzcz1cInAtYnV0dG9uLWRhbmdlclwiIFtjaG9vc2VMYWJlbF09XCInc2hhcmVkX3JlcG9ydGluZ19jaG9vc2VfcmVwb3J0X2ZpbGUnIHwgbG9jYWxpemVcIlxyXG4gICAgICAgICAgICBbdXBsb2FkTGFiZWxdPVwiJ3NoYXJlZF9yZXBvcnRpbmdfaW1wb3J0X3JlcG9ydCcgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgIFtjYW5jZWxMYWJlbF09XCInc2hhcmVkX3JlcG9ydGluZ19jYW5jZWxfY2hvb3NlX3JlcG9ydF9maWxlJyB8IGxvY2FsaXplXCI+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cInRvVXBsb2FkRmlsZURhdGFcIiBwVGVtcGxhdGU9XCJmaWxldXBsb2FkLWNvbnRlbnRcIiBsZXQtZmlsZXM+XHJcbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImZpbGVzPy5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgZmlsZXNbMF0ubmFtZSB9fTwvc3Ryb25nPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgPC9wLWZpbGVVcGxvYWQ+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPC9wLXRvb2xiYXI+XHJcblxyXG4gICAgICA8dHNpLXZpZXctZ3JpZCAjdmlld0dyaWQgW2hlYWRlcl09XCInc2hhcmVkX2V4ZWN1dGVfaW1wb3J0X21vZGVsX2ltcG9ydF9leHBvcnQnICB8bG9jYWxpemVcIlxyXG4gICAgICAgIFtzZWFyY2hGaWVsZHNdPVwic2VhcmNoRmllbGRzXCIgW3Nob3dDb25zdWx0QnV0dG9uXT1cImZhbHNlXCIgW2dldERhdGFGcm9tQXBpXT1cInRydWVcIlxyXG4gICAgICAgIFtjcnVkU2VydmljZV09XCJtb2RlbGVJbXBvcnRTZXJ2aWNlXCIgKGJ1dHRvbkNvbHVtbkNsaWNrZWQpPVwiYnV0dG9uQ2xpY2tlZCgkZXZlbnQpXCJcclxuICAgICAgICBbZm9ybU5hbWVdPVwiJ2FwcC1tYW5hZ2UtaW1wb3J0LWV4cG9ydCdcIiBbY29sdW1uc109XCJjb2x1bW5zXCIga2V5PVwidWlkXCIgW3NlbGVjdEtleU9ubHldPVwiZmFsc2VcIj5cclxuICAgICAgPC90c2ktdmlldy1ncmlkPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9wLXRhYlBhbmVsPlxyXG5cclxuICA8cC10YWJQYW5lbCBbaGVhZGVyXT1cIidzaGFyZWRfZXhlY3V0ZV9pbXBvcnRfbW9kZWxfaW1wb3J0X2V4cG9ydF9kZWZhdWx0JyB8IGxvY2FsaXplXCIgY2xhc3M9XCJwdC0zIHB4LTJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJncmlkXCI+XHJcbiAgICAgIDx0c2ktdmlldy1ncmlkIGNsYXNzPVwiY29sLTEyXCIgW2hlYWRlcl09XCInc2hhcmVkX2V4ZWN1dGVfaW1wb3J0X21vZGVsX2ltcG9ydF9leHBvcnRfZGVmYXVsdCcgIHxsb2NhbGl6ZVwiXHJcbiAgICAgICAgW2NvbHVtbnNdPVwiY29sdW1uc0pzb25cIiBbZ2V0RGF0YUZyb21BcGldPVwiZmFsc2VcIiBbZ3JpZERhdGFdPVwiZ3JpZERhdGFcIiBba2V5XT1cImtleVwiXHJcbiAgICAgICAgW2Zvcm1OYW1lXT1cIidtb2RlbGUtaW1wb3J0LXBhci1kZWZhdWx0J1wiXHJcbiAgICAgICAgKGJ1dHRvbkNvbHVtbkNsaWNrZWQpPVwiaGFuZGxlQnV0dG9uQ29sdW1uRXhlY3V0ZUNsaWNrZWQoJGV2ZW50KVwiPjwvdHNpLXZpZXctZ3JpZD5cclxuICAgIDwvZGl2PlxyXG4gIDwvcC10YWJQYW5lbD5cclxuXHJcbiAgPHAtdGFiUGFuZWwgW2hlYWRlcl09XCInc2hhcmVkX2V4ZWN1dGVfaW1wb3J0X2hpc3RvcnknIHwgbG9jYWxpemVcIiBjbGFzcz1cInB0LTMgcHgtMlwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImdyaWRcIj5cclxuICAgICAgPHRzaS12aWV3LWdyaWQgY2xhc3M9XCJjb2wtMTJcIiBbaGVhZGVyXT1cIidzaGFyZWRfZXhlY3V0ZV9pbXBvcnRfaGlzdG9yeScgIHxsb2NhbGl6ZVwiIFtjb2x1bW5zXT1cImNvbHVtbnNIaXN0b3J5XCJcclxuICAgICAgICBbZ2V0RGF0YUZyb21BcGldPVwiZmFsc2VcIiBbZ3JpZERhdGFdPVwiaGlzdG9yeUdyaWREYXRhXCIgW2tleV09XCJpbXBvcnRIaXN0b3J5S2V5XCJcclxuICAgICAgICBbZm9ybU5hbWVdPVwiJ21vZGVsZS1pbXBvcnQtcGFyLWRlZmF1bHQnXCJcclxuICAgICAgICAoYnV0dG9uQ29sdW1uQ2xpY2tlZCk9XCJoYW5kbGVCdXR0b25Db2x1bW5FeGVjdXRlQ2xpY2tlZCgkZXZlbnQpXCI+PC90c2ktdmlldy1ncmlkPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9wLXRhYlBhbmVsPlxyXG5cclxuICA8cC10YWJQYW5lbCBbaGVhZGVyXT1cIidzaGFyZWRfZXhlY3V0ZV9pbXBvcnRfd2l0aG91dF9tb2RlbCcgfCBsb2NhbGl6ZVwiIGNsYXNzPVwicHQtMyBweC0yXCI+XHJcbiAgICA8ZGl2ICpidXN5PVwiaXNsb2FkaW5nXCI+PC9kaXY+XHJcbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiYm9keVwiPlxyXG4gICAgICA8cC1maWxlVXBsb2FkICNpbXBvcnRGaWxlVG9SZXBvcnRGaWxlVXBsb2FkIG5hbWU9XCJpbXBvcnRGaWxlVG9SZXBvcnRcIiBbbXVsdGlwbGVdPVwiZmFsc2VcIlxyXG4gICAgICAgIChvblNlbGVjdCk9XCJvbkltcG9ydEZpbGVXaXRob3V0TW9kZWxfRmlsZVNlbGVjdGVkKCRldmVudClcIiAob25DbGVhcik9XCJvbkltcG9ydEZpbGVXaXRob3V0TW9kZWxfQ2xlYXIoJGV2ZW50KVwiXHJcbiAgICAgICAgKG9uQmVmb3JlVXBsb2FkKT1cIm9uSW1wb3J0RmlsZVdpdGhvdXRNb2RlbF9JbXBvcnRGaWxlKCRldmVudClcIlxyXG4gICAgICAgIChvblJlbW92ZSk9XCJvbkltcG9ydEZpbGVXaXRob3V0TW9kZWxfUmVtb3ZlKCRldmVudClcIiBhY2NlcHQ9XCIueGxzLC54bHN4XCIgW21heEZpbGVTaXplXT1cIjEwMDAwMDAwXCJcclxuICAgICAgICBbaW52YWxpZEZpbGVTaXplTWVzc2FnZVN1bW1hcnldPVwiJ3NoYXJlZF9maWxlX3VwbG9hZF9pbnZhbGlkX2ZpbGVfc2l6ZV9tZXNzYWdlX3N1bW1hcnknIHwgbG9jYWxpemVcIlxyXG4gICAgICAgIFtpbnZhbGlkRmlsZVNpemVNZXNzYWdlRGV0YWlsXT1cIidzaGFyZWRfZmlsZV91cGxvYWRfaW52YWxpZF9maWxlX3NpemVfbWVzc2FnZV9kZXRhaWwnIHwgbG9jYWxpemVcIlxyXG4gICAgICAgIFtpbnZhbGlkRmlsZVR5cGVNZXNzYWdlU3VtbWFyeV09XCInc2hhcmVkX2ZpbGVfdXBsb2FkX2ludmFsaWRfZmlsZV90eXBlX21lc3NhZ2Vfc3VtbWFyeScgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgW2ludmFsaWRGaWxlTGltaXRNZXNzYWdlRGV0YWlsXT1cIidzaGFyZWRfZmlsZV91cGxvYWRfaW52YWxpZF9maWxlX2xpbWl0X21lc3NhZ2VfZGV0YWlsJyB8IGxvY2FsaXplXCJcclxuICAgICAgICBbaW52YWxpZEZpbGVMaW1pdE1lc3NhZ2VTdW1tYXJ5XT1cIidzaGFyZWRfZmlsZV91cGxvYWRfaW52YWxpZF9maWxlX2xpbWl0X21lc3NhZ2Vfc3VtbWFyeScgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgW2ludmFsaWRGaWxlVHlwZU1lc3NhZ2VEZXRhaWxdPVwiJ3NoYXJlZF9maWxlX3VwbG9hZF9pbnZhbGlkX2ZpbGVfdHlwZV9tZXNzYWdlX2RldGFpbCcgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgW2Nob29zZUljb25dPVwiJ3BpIHBpLXBhcGVyY2xpcCdcIiBjYW5jZWxTdHlsZUNsYXNzPVwicC1idXR0b24tc2Vjb25kYXJ5XCIgdXBsb2FkU3R5bGVDbGFzcz1cInAtYnV0dG9uLWhlbHBcIlxyXG4gICAgICAgIHJlbW92ZVN0eWxlQ2xhc3M9XCJwLWJ1dHRvbi1kYW5nZXJcIiBbY2hvb3NlTGFiZWxdPVwiJ3NoYXJlZF9yZXBvcnRpbmdfY2hvb3NlX3JlcG9ydF9maWxlJyB8IGxvY2FsaXplXCJcclxuICAgICAgICBbdXBsb2FkTGFiZWxdPVwiJ3NoYXJlZF9yZXBvcnRpbmdfaW1wb3J0X3JlcG9ydCcgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgW2NhbmNlbExhYmVsXT1cIidzaGFyZWRfcmVwb3J0aW5nX2NhbmNlbF9jaG9vc2VfcmVwb3J0X2ZpbGUnIHwgbG9jYWxpemVcIj5cclxuICAgICAgICA8bmctdGVtcGxhdGUgKm5nSWY9XCJ0b1VwbG9hZFdpdGhvdXRNb2RlbFwiIHBUZW1wbGF0ZT1cImZpbGV1cGxvYWQtY29udGVudFwiIGxldC1maWxlcz5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJmaWxlcz8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgIDxzdHJvbmc+e3sgZmlsZXNbMF0ubmFtZSB9fTwvc3Ryb25nPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPC9wLWZpbGVVcGxvYWQ+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvcC10YWJQYW5lbD5cclxuXHJcbiAgPHAtdGFiUGFuZWwgW2hlYWRlcl09XCInc2hhcmVkX2ltcG9ydF9yZXN1bHRfaGVhZGVyJyB8IGxvY2FsaXplXCIgY2xhc3M9XCJwdC0zIHB4LTJcIj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwicC0xXCI+XHJcbiAgICAgIDxUc2ktQnV0dG9uIChvbkNsaWNrKT1cImdldEltcG9ydFJlc3VsdCgpXCJcclxuICAgICAgICBzdHlsZUNsYXNzPVwicC1lbGVtZW50IHAtYnV0dG9uLXRleHQgcC1idXR0b24tcmFpc2VkIHAtYnV0dG9uLXJvdW5kZWQgbXItMiBwLWJ1dHRvbiBwLWNvbXBvbmVudCBwLWJ1dHRvbi1pY29uLW9ubHlcIlxyXG4gICAgICAgIFt0b29sdGlwVGV4dF09XCInc2hhcmVkX2ltcG9ydF9leHBvcnRfcmVmcmVzaCdcIiBbdG9vbHRpcFBvc2l0aW9uXT1cInRvb2x0aXBQb3NpdGlvbi5Ub3BcIlxyXG4gICAgICAgIGljb249XCJwLWJ1dHRvbi1pY29uIHBpIHBpLXJlZnJlc2hcIiBjbGFzcz1cInAtYnV0dG9uLXRleHQgcC1idXR0b24tcmFpc2VkIHAtYnV0dG9uLXJvdW5kZWQgbXItMlwiPjwvVHNpLUJ1dHRvbj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJncmlkXCI+XHJcbiAgICAgIDx0c2ktdmlldy1ncmlkIGNsYXNzPVwiY29sLTEyXCIgW2hlYWRlcl09XCInc2hhcmVkX2ltcG9ydF9yZXN1bHRfaGVhZGVyJyAgfGxvY2FsaXplXCIgW2NvbHVtbnNdPVwiaW1wb3J0UmVzdWx0c0NvbHVtbnNcIlxyXG4gICAgICAgIFtnZXREYXRhRnJvbUFwaV09XCJmYWxzZVwiIFtncmlkRGF0YV09XCJpbXBvcnRSZXN1bHREYXRhXCIgW2tleV09XCIndWlkJ1wiIFtmb3JtTmFtZV09XCInbW9kZWxlLWltcG9ydC1yZXN1bHQtaW1wb3J0J1wiXHJcbiAgICAgICAgKGJ1dHRvbkNvbHVtbkNsaWNrZWQpPVwiaGFuZGxlQ29uc3VsdEltcG9ydFJlc3VsdEJ1dHRvbkNsaWNrZWQoJGV2ZW50KVwiPjwvdHNpLXZpZXctZ3JpZD5cclxuICAgIDwvZGl2PlxyXG4gIDwvcC10YWJQYW5lbD5cclxuXHJcbjwvcC10YWJWaWV3PlxyXG5cclxuPGRpdiBjbGFzcz1cInAtMVwiPlxyXG4gIDxUc2ktQnV0dG9uXHJcbiAgICBzdHlsZUNsYXNzPVwicC1lbGVtZW50IHAtYnV0dG9uLXRleHQgcC1idXR0b24tcmFpc2VkIHAtYnV0dG9uLXJvdW5kZWQgbXItMiBwLWJ1dHRvbiBwLWNvbXBvbmVudCBwLWJ1dHRvbi1pY29uLW9ubHlcIlxyXG4gICAgW3Rvb2x0aXBUZXh0XT1cIidzaGFyZWRfaW1wb3J0X2V4cG9ydF9yZWZyZXNoJ1wiIFt0b29sdGlwUG9zaXRpb25dPVwidG9vbHRpcFBvc2l0aW9uLlRvcFwiXHJcbiAgICBpY29uPVwicC1idXR0b24taWNvbiBwaSBwaS1yZWZyZXNoXCIgKG9uQ2xpY2spPVwicmVmcmVzaEltcG9ydEV4cG9ydERhdGEoKVwiXHJcbiAgICBjbGFzcz1cInAtYnV0dG9uLXRleHQgcC1idXR0b24tcmFpc2VkIHAtYnV0dG9uLXJvdW5kZWQgbXItMlwiPjwvVHNpLUJ1dHRvbj5cclxuPC9kaXY+XHJcblxyXG48IS0tIGRpYWxvZyB0byBpbXBvcnQgZmlsZSB0byByZXBvcnQgLS0+XHJcbjxwLWRpYWxvZyBoZWFkZXI9XCJ7eydzaGFyZWRfcmVwb3J0aW5nX3NlbGVjdF9maWxlX3RvX2ltcG9ydF9pbnRvX3JlcG9ydCcgfCBsb2NhbGl6ZX19XCJcclxuICBbKHZpc2libGUpXT1cImlzSW1wb3J0RmlsZVRvRXhlY3V0ZVZpc2libGVcIiBbc3R5bGVdPVwie3dpZHRoOiAnNTB2dyd9XCI+XHJcbiAgPCEtLSA8VHNpLU1vZGFsLUhlYWRlciAob25DbG9zZUNsaWNrKT1cIm9uSW1wb3J0RmlsZVRvUmVwb3J0TW9kYWxDYW5jZWxDbGljaygpXCIgW2lucHV0VGl0bGVdPVwiJ3NoYXJlZF9yZXBvcnRpbmdfc2VsZWN0X2ZpbGVfdG9faW1wb3J0X2ludG9fcmVwb3J0J1wiPjwvVHNpLU1vZGFsLUhlYWRlcj4gLS0+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJib2R5XCI+XHJcbiAgICA8cC1maWxlVXBsb2FkICNpbXBvcnRGaWxlVG9SZXBvcnRGaWxlVXBsb2FkIG5hbWU9XCJpbXBvcnRGaWxlVG9SZXBvcnRcIiBbbXVsdGlwbGVdPVwiZmFsc2VcIlxyXG4gICAgICAob25TZWxlY3QpPVwib25JbXBvcnRGaWxlVG9FeGVjdXRlX0ZpbGVTZWxlY3RlZCgkZXZlbnQpXCIgKG9uQ2xlYXIpPVwib25JbXBvcnRGaWxlVG9FeGVjdXRlX0NsZWFyKCRldmVudClcIlxyXG4gICAgICAob25CZWZvcmVVcGxvYWQpPVwib25JbXBvcnRGaWxlVG9FeGVjdXRlX0ltcG9ydEZpbGUoJGV2ZW50KVwiIChvblJlbW92ZSk9XCJvbkltcG9ydEZpbGVUb0V4ZWN1dGVfUmVtb3ZlKCRldmVudClcIlxyXG4gICAgICBhY2NlcHQ9XCJ7e2ZpbGVUeXBlfX1cIiBbbWF4RmlsZVNpemVdPVwiMTAwMDAwMDBcIlxyXG4gICAgICBbaW52YWxpZEZpbGVTaXplTWVzc2FnZVN1bW1hcnldPVwiJ3NoYXJlZF9maWxlX3VwbG9hZF9pbnZhbGlkX2ZpbGVfc2l6ZV9tZXNzYWdlX3N1bW1hcnknIHwgbG9jYWxpemVcIlxyXG4gICAgICBbaW52YWxpZEZpbGVTaXplTWVzc2FnZURldGFpbF09XCInc2hhcmVkX2ZpbGVfdXBsb2FkX2ludmFsaWRfZmlsZV9zaXplX21lc3NhZ2VfZGV0YWlsJyB8IGxvY2FsaXplXCJcclxuICAgICAgW2ludmFsaWRGaWxlVHlwZU1lc3NhZ2VTdW1tYXJ5XT1cIidzaGFyZWRfZmlsZV91cGxvYWRfaW52YWxpZF9maWxlX3R5cGVfbWVzc2FnZV9zdW1tYXJ5JyB8IGxvY2FsaXplXCJcclxuICAgICAgW2ludmFsaWRGaWxlTGltaXRNZXNzYWdlRGV0YWlsXT1cIidzaGFyZWRfZmlsZV91cGxvYWRfaW52YWxpZF9maWxlX2xpbWl0X21lc3NhZ2VfZGV0YWlsJyB8IGxvY2FsaXplXCJcclxuICAgICAgW2ludmFsaWRGaWxlTGltaXRNZXNzYWdlU3VtbWFyeV09XCInc2hhcmVkX2ZpbGVfdXBsb2FkX2ludmFsaWRfZmlsZV9saW1pdF9tZXNzYWdlX3N1bW1hcnknIHwgbG9jYWxpemVcIlxyXG4gICAgICBbaW52YWxpZEZpbGVUeXBlTWVzc2FnZURldGFpbF09XCInc2hhcmVkX2ZpbGVfdXBsb2FkX2ludmFsaWRfZmlsZV90eXBlX21lc3NhZ2VfZGV0YWlsJyB8IGxvY2FsaXplXCJcclxuICAgICAgW2Nob29zZUljb25dPVwiJ3BpIHBpLXBhcGVyY2xpcCdcIiBjYW5jZWxTdHlsZUNsYXNzPVwicC1idXR0b24tc2Vjb25kYXJ5XCIgdXBsb2FkU3R5bGVDbGFzcz1cInAtYnV0dG9uLWhlbHBcIlxyXG4gICAgICByZW1vdmVTdHlsZUNsYXNzPVwicC1idXR0b24tZGFuZ2VyXCIgW2Nob29zZUxhYmVsXT1cIidzaGFyZWRfcmVwb3J0aW5nX2Nob29zZV9yZXBvcnRfZmlsZScgfCBsb2NhbGl6ZVwiXHJcbiAgICAgIFt1cGxvYWRMYWJlbF09XCInc2hhcmVkX3JlcG9ydGluZ19pbXBvcnRfcmVwb3J0JyB8IGxvY2FsaXplXCJcclxuICAgICAgW2NhbmNlbExhYmVsXT1cIidzaGFyZWRfcmVwb3J0aW5nX2NhbmNlbF9jaG9vc2VfcmVwb3J0X2ZpbGUnIHwgbG9jYWxpemVcIj5cclxuICAgICAgPG5nLXRlbXBsYXRlICpuZ0lmPVwidG9VcGxvYWRUb0V4ZWN1dGVGaWxlXCIgcFRlbXBsYXRlPVwiZmlsZXVwbG9hZC1jb250ZW50XCIgbGV0LWZpbGVzPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJmaWxlcz8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICA8c3Ryb25nPnt7IGZpbGVzWzBdLm5hbWUgfX08L3N0cm9uZz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvcC1maWxlVXBsb2FkPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG5cclxuICA8IS0tIDxUc2ktTW9kYWwtRm9vdGVyIChvbkNhbmNlbENsaWNrKT1cIm9uSW1wb3J0RmlsZVRvUmVwb3J0TW9kYWxDYW5jZWxDbGljaygpXCJcclxuICAgIChvblNhdmVDbGljayk9XCJvbkltcG9ydEZpbGVUb1JlcG9ydE1vZGFsU2F2ZUNsaWNrKClcIlxyXG4gICAgW3NhdmVEaXNhYmxlZF09XCIhdG9VcGxvYWRUb1VwZGF0ZVJlcG9ydEZpbGVEYXRhXCI+PC9Uc2ktTW9kYWwtRm9vdGVyPiAtLT5cclxuXHJcbjwvcC1kaWFsb2c+Il19