@sachin9822/reports-lib 0.0.205 → 0.0.206
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/components/acc-gl-details-enquiry-report/acc-gl-details-enquiry-report.component.mjs +7 -2
- package/esm2020/lib/components/accounting-report/accounting-report.component.mjs +27 -2
- package/esm2020/lib/components/branch-activity-receive-report/branch-activity-receive-report.component.mjs +2 -2
- package/esm2020/lib/components/branch-activity-send-report/branch-activity-send-report.component.mjs +2 -2
- package/esm2020/lib/components/cancellation-transaction-report/cancellation-transaction-report.component.mjs +10 -7
- package/esm2020/lib/components/credit-limit-status-enquiry-report/credit-limit-status-enquiry-report.component.mjs +9 -2
- package/esm2020/lib/components/funding-report/funding-report.component.mjs +18 -11
- package/esm2020/lib/components/revenue-per-transaction-report/revenue-per-transaction-report.component.mjs +12 -2
- package/esm2020/lib/components/statement-of-accounts-report/statement-of-accounts-report.component.mjs +52 -10
- package/esm2020/lib/components/transaction-enquiry-report/transaction-enquiry-report.component.mjs +38 -22
- package/esm2020/lib/components/trial-balance-accounts-report/trial-balance-accounts-report.component.mjs +10 -5
- package/esm2020/lib/shared/export-generic.service.mjs +17 -3
- package/esm2020/lib/shared/export.service.mjs +33 -9
- package/esm2020/lib/shared/search-filter/search-filter.component.mjs +14 -21
- package/fesm2015/sachin9822-reports-lib.mjs +237 -87
- package/fesm2015/sachin9822-reports-lib.mjs.map +1 -1
- package/fesm2020/sachin9822-reports-lib.mjs +237 -86
- package/fesm2020/sachin9822-reports-lib.mjs.map +1 -1
- package/lib/components/cancellation-transaction-report/cancellation-transaction-report.component.d.ts +2 -0
- package/lib/components/funding-report/funding-report.component.d.ts +1 -0
- package/lib/components/statement-of-accounts-report/statement-of-accounts-report.component.d.ts +2 -0
- package/lib/components/transaction-enquiry-report/transaction-enquiry-report.component.d.ts +4 -1
- package/lib/shared/export-generic.service.d.ts +2 -1
- package/lib/shared/export.service.d.ts +1 -1
- package/package.json +1 -1
|
@@ -230,10 +230,15 @@ export class AccGlDetailsEnquiryReportComponent {
|
|
|
230
230
|
['Search Criteria', '- '],
|
|
231
231
|
[`${this.dateType == 'VD' ? 'Value Date' : 'Posting Date'}`, this.currentReportValueOrPostDate],
|
|
232
232
|
]);
|
|
233
|
+
// --- search criteria ---
|
|
234
|
+
const searchCriteria = [
|
|
235
|
+
['Date Type:', `${this.dateType == 'VD' ? 'Value Date' : 'Posting Date'}`],
|
|
236
|
+
['Date:', this.currentReportValueOrPostDate],
|
|
237
|
+
];
|
|
233
238
|
const { headers, rows } = this.exportService.prepareExportTable(this.accGlDetailsEnquiryReportModel.journalVoucherEntries, this.columnDefs, {
|
|
234
239
|
currencyFields: ['localCredit', 'forexCredit', 'localDebit', 'forexDebit'],
|
|
235
240
|
});
|
|
236
|
-
this.exportService.exportToCsvUniversal(title, metadata, headers, rows, 'ACC-GL-Details-Enquiry-Report.csv');
|
|
241
|
+
this.exportService.exportToCsvUniversal(title, metadata, searchCriteria, headers, rows, 'ACC-GL-Details-Enquiry-Report.csv');
|
|
237
242
|
}
|
|
238
243
|
handleSearch(criteria) {
|
|
239
244
|
this.dateTypeFilter = criteria.selectedDateType;
|
|
@@ -247,4 +252,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
247
252
|
type: Component,
|
|
248
253
|
args: [{ selector: 'lib-acc-gl-details-enquiry-report', template: "<lib-search-filter [ReportName]=\"ReportName\" (searchClicked)=\"handleSearch($event)\">\r\n</lib-search-filter>\r\n<app-loader class=\"\" *ngIf=\"loadingState == ComponentLoadingState.Loading\"></app-loader>\r\n<div class=\"main-container\">\r\n <div class=\"report-container\"\r\n *ngIf=\"accGlDetailsEnquiryReportModel != undefined && dataReady && accGlDetailsEnquiryReportModel?.journalVoucherEntries?.length!=0\">\r\n <div class=\"main-report\" *ngIf=\"accGlDetailsEnquiryReportModel != undefined && dataReady\">\r\n <lib-metadata [reportName]=\"ReportName\" [showmetaDataOne]=\"true\" [showmetaDataTwo]=\"true\"\r\n [metaDataOne]=\"metaDataOne\" [metaDataTwo]=\"metaDataTwo\" (exportEvent)=\"handleExport($event)\"\r\n (searchEvent)=\"onSearch($event)\"></lib-metadata>\r\n <div style=\"position: relative;\">\r\n <lib-page-size-selector [totalEntries]=\"accGlDetailsEnquiryReportModel?.journalVoucherEntries?.length\"\r\n [defaultSize]=\"'15'\" [gridApi]=\"gridApi\">\r\n ></lib-page-size-selector>\r\n <ag-grid-angular class=\"ag-theme-alpine transaction-grid\" style=\"width: 100%;height: 375px;\"\r\n [columnDefs]=\"columnDefs\" [defaultColDef]=\"defaultColDef\" [rowData]=\"rowData\" [rowHeight]=\"20\"\r\n [headerHeight]=\"22\" [pagination]=\"true\" [paginationPageSize]=\"pageSize\" (gridReady)=\"onGridReady($event)\"\r\n (gridSizeChanged)=\"onGridSizeChanged($event)\">\r\n </ag-grid-angular>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"alert alert-warning mt-3\" *ngIf=\"accGlDetailsEnquiryReportModel?.journalVoucherEntries?.length==0\">\r\n No Data found matching your search criteria.\r\n </div>\r\n</div>", styles: [".btn-report{border-radius:4px;background-color:#8091a5;color:#fff!important;font-size:14px!important;height:32px!important;height:32px;min-width:110px;margin:0 0 0 20px!important;padding:4px 15px!important}.tooltip-block{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border:1px solid #ccc!important}.dpicker{border:1px solid #ccc!important;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Noto Sans,Liberation Sans,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol,\"Noto Color Emoji\"!important;font-size:12px!important;font-weight:400!important;height:32px!important}.dpicker:focus{box-shadow:0 0 5px 3px #1877f2!important}.cal{height:32px!important;background-color:#1877f2!important}.cal:focus{box-shadow:none!important}.input-group-button{background:none;border:1px solid #0081c6;background-color:#0081c6;border-radius:0 3px 3px 0;min-width:35px;margin-left:1px;cursor:pointer}.labl{font-size:11.2px;font-weight:700!important}.info{font-size:12px!important;font-weight:400;padding-left:.5rem}.label-data{font-weight:600!important;font-size:.7rem!important;line-height:1rem}.meta-td{padding:0!important}.title{text-align:center;font-size:18px;font-weight:700!important}.export-options{display:inline-flex;font-size:.75rem;height:2rem!important;width:5rem!important;margin-right:-1;margin-left:.4rem}.opt-cls{display:block;height:100%;width:5rem;border:1px solid #ccc!important;border-radius:4px!important;margin-right:1rem!important;outline:none!important}.opt-cls:focus{box-shadow:0 0 5px 3px #1877f2}.export-selector{height:2rem!important;width:100%}.search-btn{height:32px!important;height:32px;width:36px;background-color:#8091a5;border:none;border-radius:0 4px 4px 0;display:flex;justify-content:center;align-items:center}.search-btn:hover{background-color:#8091a5}.search-icon{height:16px;width:16px;object-fit:contain}.search-input{outline:none!important;border:1px solid #ccc!important;width:190px;height:32px!important;font-size:.75rem;padding:.25rem .5rem;border-top-left-radius:4px;border-bottom-left-radius:4px;border-top-right-radius:0!important;border-bottom-right-radius:0!important;text-transform:uppercase}.search-input:focus{box-shadow:0 0 5px 3px #1877f2!important}.searchBox{margin-right:auto;display:flex}table{width:100%;border-collapse:separate;margin-bottom:0!important;table-layout:fixed!important}td{padding:0 1rem 6px 0!important;border-right:0 solid #ffffff!important;background-color:#fff!important}.row-cls{height:2.5rem!important}.inputbox{padding-left:1rem;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Noto Sans,Liberation Sans,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol,\"Noto Color Emoji\"}::ng-deep .ng-select.ng-select-single .ng-select-container{height:32px I!important}::ng-deep .ng-select.ng-select-multiple .ng-select-container .ng-value-container{max-height:32px!important;overflow-x:auto!important;overflow-y:auto;white-space:nowrap!important}::ng-deep .ng-select .ng-select-multiple .ng-select-container .ng-value-container{max-height:32px!important;overflow-x:auto!important;white-space:nowrap!important}::ng-deep .ng-select .ng-select-multiple .ng-select-container .ng-value-container .ng-value{max-width:200px!important;overflow:hidden!important;text-overflow:hidden!important;white-space:nowrap!important}::ng-deep .ng-select .ng-select-container{cursor:default;display:flex;outline:none;overflow:hidden;position:relative;width:100%}::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-option{box-sizing:border-box;cursor:pointer;display:block;white-space:nowrap;overflow-x:scroll!important;text-overflow:clip!important}::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-option::-webkit-scrollbar{display:none!important;width:0!important}::ng-deep .ng-select .ng-select-container:focus-within{box-shadow:0 0 5px 3px #1877f2!important}::ng-deep .ng-select .ng-select-container:focus{box-shadow:0 0 5px 3px #1877f2!important}::ng-deep .ng-select .ng-select-container,::ng-deep .ng-select.ng-select-single .ng-select-container,::ng-deep .ng-select.ng-select-multiple .ng-select-container{min-height:32px!important;height:32px!important;font-size:12px!important}.panel-cls{font-weight:700;font-size:13px;line-height:1.2;margin:0;padding:2px 0;color:#16181e}.transaction-grid ::ng-deep .ag-header{background-color:#f9f9f9;font-weight:600;font-size:10px;color:#000;border-right:1px solid #e0e0e0}:host ::ng-deep .ag-header-cell{padding:2px!important;align-items:center!important;justify-content:center!important;border-right:1px solid #e0e0e0;white-space:normal!important;word-break:normal!important;overflow-wrap:break-word!important;text-align:center!important}::ng-deep .ag-header-cell-label{display:flex!important;justify-content:center!important;align-items:center!important;width:100%;text-align:center!important}::ng-deep .ag-header-cell-text{text-align:center!important;width:100%!important;display:flex!important;justify-content:center!important}.transaction-grid ::ng-deep .ag-row{border-bottom:1px solid #e0e0e0}.transaction-grid ::ng-deep .ag-cell{font-size:9px;white-space:normal!important;word-break:keep-all!important;overflow-wrap:anywhere;line-height:1.4;padding:4px!important;color:#000;font-weight:500;border-right:.5px solid #e0e0e0;align-content:center;user-select:text!important;-webkit-user-select:text!important;-moz-user-select:text!important;-ms-user-select:text!important;cursor:text}::ng-deep .ag-cell-label-container{padding:0!important}.ag-theme-alpine{--ag-header-font-size: 10px;--ag-font-size: 10px;--ag-header-background-color: #fdfdfd;--ag-header-foreground-color: rgb(0, 0, 0)}::ng-deep .ag-paging-panel{height:30px!important;font-weight:500!important}.main-container{display:flex;flex-direction:column;width:100%;padding:0;box-sizing:border-box}.report-loader{display:flex;justify-content:center;align-items:center;height:320px;background-color:#ffffffb3;border:none none none}.report-container{min-height:350px;font-size:.7rem;line-height:1.4;margin:0;overflow:visible}.main-report{overflow:visible}.grid-size{width:100%!important;font-weight:500!important;height:390px!important}\n"] }]
|
|
249
254
|
}], ctorParameters: function () { return [{ type: i1.ExportService }, { type: i2.ReportService }, { type: i3.HttpClient }, { type: i4.DomSanitizer }]; } });
|
|
250
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjLWdsLWRldGFpbHMtZW5xdWlyeS1yZXBvcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcmVwb3J0cy1saWIvc3JjL2xpYi9jb21wb25lbnRzL2FjYy1nbC1kZXRhaWxzLWVucXVpcnktcmVwb3J0L2FjYy1nbC1kZXRhaWxzLWVucXVpcnktcmVwb3J0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3JlcG9ydHMtbGliL3NyYy9saWIvY29tcG9uZW50cy9hY2MtZ2wtZGV0YWlscy1lbnF1aXJ5LXJlcG9ydC9hY2MtZ2wtZGV0YWlscy1lbnF1aXJ5LXJlcG9ydC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBSWxELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUc3QyxPQUFPLGlCQUFpQixDQUFDO0FBRXpCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDOzs7Ozs7Ozs7Ozs7QUFjL0UsTUFBTSxPQUFPLGtDQUFrQztJQW9FN0MsWUFDVSxhQUE0QixFQUM1QixhQUE0QixFQUM1QixJQUFnQixFQUNoQixTQUF1QjtRQUh2QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLGNBQVMsR0FBVCxTQUFTLENBQWM7UUFyRWpDLGVBQVUsR0FBVyxFQUFFLENBQUM7UUFHeEIseUJBQW9CLEdBQVcsT0FBTyxDQUFDO1FBQ3ZDLGNBQVMsR0FBYSxFQUFFLENBQUM7UUFDekIsWUFBTyxHQUFZLEtBQUssQ0FBQztRQUN6QixjQUFTLEdBQVksS0FBSyxDQUFDO1FBQzNCLG1CQUFjLEdBQVcsQ0FBQyxDQUFDO1FBUzNCLFlBQU8s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RUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLFlBQVksQ0FBQztTQUMzRSxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsYUFBYSxDQUFDLG9CQUFvQixDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxtQ0FBbUMsQ0FBQyxDQUFDO0lBQy9HLENBQUM7SUFFRCxZQUFZLENBQUMsUUFBYTtRQUN4QixJQUFJLENBQUMsY0FBYyxHQUFHLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQztRQUNoRCxJQUFJLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0lBQy9CLENBQUM7OytIQW5SVSxrQ0FBa0M7bUhBQWxDLGtDQUFrQyx5RUN2Qi9DLG10REEwQk07MkZESE8sa0NBQWtDO2tCQU45QyxTQUFTOytCQUNFLG1DQUFtQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFJlcG9ydFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9yZXBvcnQuc2VydmljZSc7XHJcbmltcG9ydCB7IEFjY0dsRGV0YWlsc0VucXVpcnlSZXBvcnRNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9hY2MtZ2wtZGV0YWlscy1lbnF1aXJ5LXJlcG9ydC9hY2NnbC1kZXRhaWxzLWVucXVpcnktcmVwb3J0bW9kZWwnO1xyXG5pbXBvcnQgeyBDb2xEZWYsIENvbHVtbkFwaSwgR3JpZEFwaSwgR3JpZFJlYWR5RXZlbnQgfSBmcm9tICdhZy1ncmlkLWNvbW11bml0eSc7XHJcbmltcG9ydCB7IGZvcm1hdERhdGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVIdG1sIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCAnanNwZGYtYXV0b3RhYmxlJztcclxuaW1wb3J0IHsgRXhwb3J0U2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9leHBvcnQuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbXBvbmVudExvYWRpbmdTdGF0ZXMgfSBmcm9tICcuLi8uLi9tb2RlbHMvY29tcG9uZW50LWxvYWRpbmctc3RhdGVzJztcclxuXHJcbmRlY2xhcmUgbW9kdWxlICdqc3BkZicge1xyXG4gIGludGVyZmFjZSBqc1BERiB7XHJcbiAgICBhdXRvVGFibGU6IChvcHRpb25zOiBhbnkpID0+IGpzUERGO1xyXG4gIH1cclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItYWNjLWdsLWRldGFpbHMtZW5xdWlyeS1yZXBvcnQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hY2MtZ2wtZGV0YWlscy1lbnF1aXJ5LXJlcG9ydC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vYWNjLWdsLWRldGFpbHMtZW5xdWlyeS1yZXBvcnQuY29tcG9uZW50LnNjc3MnXSxcclxuXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBY2NHbERldGFpbHNFbnF1aXJ5UmVwb3J0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcblxyXG4gIHNlYXJjaFRleHQ6IHN0cmluZyA9ICcnO1xyXG4gIGdyaWRBcGk6IEdyaWRBcGk8YW55PjtcclxuICBncmlkQ29sdW1uQXBpITogQ29sdW1uQXBpO1xyXG4gIHNlbGVjdGVkRXhwb3J0T3B0aW9uOiBzdHJpbmcgPSAnZXhjZWwnO1xyXG4gIHN2Z0xvYWRlcjogU2FmZUh0bWwgPSAnJztcclxuICBsb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZGF0YVJlYWR5OiBib29sZWFuID0gZmFsc2U7XHJcbiAgZGF0ZVR5cGVGaWx0ZXI6IG51bWJlciA9IDE7XHJcbiAgZGF0ZVR5cGU6IGFueTtcclxuICBzeXNDb21wYW55Q29kZTogYW55O1xyXG4gIHN5c1VzZXJJZDogYW55O1xyXG4gIGNvbXBhbnlOYW1lOiBhbnk7XHJcbiAgcmVwb3J0VXNlcjogYW55O1xyXG4gIHJlcG9ydFRpbWU6IGFueTtcclxuICBjdXJyZW50UmVwb3J0VmFsdWVPclBvc3REYXRlOiBhbnk7XHJcbiAgYWNjR2xEZXRhaWxzRW5xdWlyeVJlcG9ydE1vZGVsOiBBY2NHbERldGFpbHNFbnF1aXJ5UmVwb3J0TW9kZWw7XHJcbiAgcm93RGF0YSA9IFtdO1xyXG4gIGRhdGU6IHN0cmluZztcclxuICBwYWdlU2l6ZTogbnVtYmVyID0gMTU7XHJcbiAgUmVwb3J0TmFtZSA9ICdBQ0MgR0wgRGV0YWlscyBFbnF1aXJ5JztcclxuICBleHBvcnRGb3JtYXRzID0gW1xyXG4gICAgeyBmb3JtYXROYW1lOiAnRXhjZWwnLCBjb2RlOiAnZXhjZWwnIH0sXHJcbiAgICB7IGZvcm1hdE5hbWU6ICdQREYnLCBjb2RlOiAncGRmJyB9LFxyXG4gICAgeyBmb3JtYXROYW1lOiAnQ1NWJywgY29kZTogJ2NzdicgfSxcclxuICBdO1xyXG4gIG1ldGFEYXRhT25lOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xyXG4gIG1ldGFEYXRhVHdvOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xyXG4gIENvbXBvbmVudExvYWRpbmdTdGF0ZSA9IENvbXBvbmVudExvYWRpbmdTdGF0ZXM7XHJcbiAgbG9hZGluZ1N0YXRlOiBDb21wb25lbnRMb2FkaW5nU3RhdGVzID0gQ29tcG9uZW50TG9hZGluZ1N0YXRlcy5Db21wbGV0ZTtcclxuXHJcbiAgZGVmYXVsdENvbERlZjogQ29sRGVmID0ge1xyXG4gICAgcmVzaXphYmxlOiB0cnVlLFxyXG4gICAgc29ydGFibGU6IGZhbHNlLFxyXG4gICAgbWluV2lkdGg6IDQwLFxyXG4gICAgc3VwcHJlc3NTaXplVG9GaXQ6IGZhbHNlLFxyXG4gICAgY2VsbFN0eWxlOiB7XHJcbiAgICAgIHVzZXJTZWxlY3Q6ICd0ZXh0JyxcclxuICAgICAgJ2xpbmUtaGVpZ2h0JzogJzEuMicsXHJcbiAgICAgICd3aGl0ZS1zcGFjZSc6ICdub3JtYWwnLFxyXG4gICAgICAnd29yZC1icmVhayc6ICdub3JtYWwnLFxyXG4gICAgICAnb3ZlcmZsb3ctd3JhcCc6ICdicmVhay13b3JkJyxcclxuICAgIH0sXHJcbiAgICB3cmFwSGVhZGVyVGV4dDogdHJ1ZSxcclxuICAgIGF1dG9IZWFkZXJIZWlnaHQ6IHRydWUsXHJcbiAgICB3cmFwVGV4dDogdHJ1ZSxcclxuICAgIGF1dG9IZWlnaHQ6IHRydWUsXHJcbiAgfTtcclxuXHJcbiAgY29sdW1uRGVmczogQ29sRGVmW10gPSBbXHJcbiAgICB7IGhlYWRlck5hbWU6ICdKb3VybmFsIElEJywgZmllbGQ6ICdqb3VybmFsSUQnLCBmbGV4OiAxLjgsIGNlbGxDbGFzczogJ2FnLWxlZnQtY29scy1jZWxsIGNvbXBhY3QtY2VsbCcsIG1pbldpZHRoOiA5NSwgdG9vbHRpcEZpZWxkOiAnam91cm5hbElEJyB9LFxyXG4gICAgeyBoZWFkZXJOYW1lOiAnVHJhbnMgTm8nLCBmaWVsZDogJ3RyYW5zYWN0aW9uTm8nLCBmbGV4OiAxLjgsIGNlbGxDbGFzczogJ2FnLWxlZnQtY29scy1jZWxsIGNvbXBhY3QtY2VsbC10cmFuc2FjdGlvbicsIG1pbldpZHRoOiA3MywgdG9vbHRpcEZpZWxkOiAndHJhbnNhY3Rpb25ObycgfSxcclxuICAgIHsgaGVhZGVyTmFtZTogJ1RyYW5zIENvZGUnLCBmaWVsZDogJ3RyYW5zYWN0aW9uQ29kZScsIGZsZXg6IDEuMiwgY2VsbENsYXNzOiAnYWctbGVmdC1jb2xzLWNlbGwgY29tcGFjdC1jZWxsJywgbWluV2lkdGg6IDYwLCB0b29sdGlwRmllbGQ6ICd0cmFuc2FjdGlvbkNvZGUnIH0sXHJcbiAgICB7IGhlYWRlck5hbWU6ICdKb3VybmFsIFR5cGUnLCBmaWVsZDogJ2pvdXJuYWxUeXBlJywgZmxleDogMS4yLCBjZWxsQ2xhc3M6ICdhZy1sZWZ0LWNvbHMtY2VsbCBjb21wYWN0LWNlbGwnLCBtaW5XaWR0aDogNzMsIHRvb2x0aXBGaWVsZDogJ2pvdXJuYWxUeXBlJyB9LFxyXG4gICAgeyBoZWFkZXJOYW1lOiAnUG9zdGluZyBEYXRlJywgZmllbGQ6ICdwb3N0aW5nRGF0ZScsIGZsZXg6IDEuMiwgY2VsbENsYXNzOiAnYWctbGVmdC1jb2xzLWNlbGwgY29tcGFjdC1jZWxsJywgbWluV2lkdGg6IDY5LCB0b29sdGlwRmllbGQ6ICdwb3N0aW5nRGF0ZScgfSxcclxuICAgIHsgaGVhZGVyTmFtZTogJ1ZhbHVlIERhdGUnLCBmaWVsZDogJ3ZhbHVlRGF0ZScsIGZsZXg6IDEuMiwgY2VsbENsYXNzOiAnYWctbGVmdC1jb2xzLWNlbGwgY29tcGFjdC1jZWxsJywgbWluV2lkdGg6IDY4LCB0b29sdGlwRmllbGQ6ICd2YWx1ZURhdGUnIH0sXHJcbiAgICB7IGhlYWRlck5hbWU6ICdEZXNjcmlwdGlvbicsIGZpZWxkOiAnZGVzY3JpcHRpb24nLCBmbGV4OiA0LjgsIG1pbldpZHRoOiAxMTksIHdyYXBUZXh0OiB0cnVlLCBhdXRvSGVpZ2h0OiB0cnVlLCBjZWxsU3R5bGU6IHsgJ2xpbmUtaGVpZ2h0JzogJzEuMicsICd3aGl0ZS1zcGFjZSc6ICdub3JtYWwnLCAnd29yZC1icmVhayc6ICdub3JtYWwnLCAnb3ZlcmZsb3ctd3JhcCc6ICdicmVhay13b3JkJyB9LCB0b29sdGlwRmllbGQ6ICdkZXNjcmlwdGlvbicgfSxcclxuICAgIHsgaGVhZGVyTmFtZTogJ0FjY291bnQgQ29kZScsIGZpZWxkOiAnYWNjb3VudENvZGUnLCBmbGV4OiAxLjIsIGNlbGxDbGFzczogJ2FnLWxlZnQtY29scy1jZWxsIGNvbXBhY3QtY2VsbCcsIG1pbldpZHRoOiA3MywgdG9vbHRpcEZpZWxkOiAnYWNjb3VudENvZGUnIH0sXHJcbiAgICB7IGhlYWRlck5hbWU6ICdDY3knLCBmaWVsZDogJ2N1cnJlbmN5JywgZmxleDogMC44LCBjZWxsQ2xhc3M6ICdhZy1sZWZ0LWNvbHMtY2VsbCcsIG1pbldpZHRoOiAzNSwgdG9vbHRpcEZpZWxkOiAnY3VycmVuY3knIH0sXHJcbiAgICB7IGhlYWRlck5hbWU6ICdSYXRlJywgZmllbGQ6ICdyYXRlJywgZmxleDogMS4zLCBjZWxsQ2xhc3M6ICdhZy1yaWdodC1hbGlnbmVkLWNlbGwgY29tcGFjdC1jZWxsJywgbWluV2lkdGg6IDY5LCB0b29sdGlwRmllbGQ6ICdyYXRlJyB9LFxyXG4gICAgeyBoZWFkZXJOYW1lOiAnRnhEZWJpdCcsIGZpZWxkOiAnZm9yZXhEZWJpdCcsIGZsZXg6IDEsIGNlbGxDbGFzczogJ2FnLXJpZ2h0LWFsaWduZWQtY2VsbCBjb21wYWN0LWNlbGwnLCBtaW5XaWR0aDogNTgsIHRvb2x0aXBGaWVsZDogJ2ZvcmV4RGViaXQnIH0sXHJcbiAgICB7IGhlYWRlck5hbWU6ICdMb2NhbCBEZWJpdCcsIGZpZWxkOiAnbG9jYWxEZWJpdCcsIGZsZXg6IDEsIGNlbGxDbGFzczogJ2FnLXJpZ2h0LWFsaWduZWQtY2VsbCBjb21wYWN0LWNlbGwnLCBtaW5XaWR0aDogNjIsIHRvb2x0aXBGaWVsZDogJ2xvY2FsRGViaXQnIH0sXHJcbiAgICB7IGhlYWRlck5hbWU6ICdGeENyZWRpdCcsIGZpZWxkOiAnZm9yZXhDcmVkaXQnLCBmbGV4OiAxLCBjZWxsQ2xhc3M6ICdhZy1yaWdodC1hbGlnbmVkLWNlbGwgY29tcGFjdC1jZWxsJywgbWluV2lkdGg6IDU4LCB0b29sdGlwRmllbGQ6ICdmb3JleENyZWRpdCcgfSxcclxuICAgIHsgaGVhZGVyTmFtZTogJ0xvY2FsIENyZWRpdCcsIGZpZWxkOiAnbG9jYWxDcmVkaXQnLCBmbGV4OiAxLCBjZWxsQ2xhc3M6ICdhZy1yaWdodC1hbGlnbmVkLWNlbGwgY29tcGFjdC1jZWxsJywgbWluV2lkdGg6IDYyLCB0b29sdGlwRmllbGQ6ICdsb2NhbENyZWRpdCcgfSxcclxuICBdO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZXhwb3J0U2VydmljZTogRXhwb3J0U2VydmljZSxcclxuICAgIHByaXZhdGUgcmVwb3J0U2VydmljZTogUmVwb3J0U2VydmljZSxcclxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcclxuICAgIHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXJcclxuICApIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIC8vIHRoaXMuaHR0cFxyXG4gICAgLy8gICAuZ2V0KCdhc3NldHMvcmVwb3J0cy1saWIvYXNzZXRzL3N2Zy1sb2FkZXJzL2JsdWUtdGFpbC1zcGluLnN2ZycsIHsgcmVzcG9uc2VUeXBlOiAndGV4dCcgfSlcclxuICAgIC8vICAgLnN1YnNjcmliZSgoc3ZnKSA9PiB7XHJcbiAgICAvLyAgICAgdGhpcy5zdmdMb2FkZXIgPSB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChzdmcpO1xyXG4gICAgLy8gICB9KTtcclxuICAgIHRoaXMuZGF0ZSA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKS5zcGxpdCgnVCcpWzBdO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldEFjY0dMRGV0YWlsc1JlcG9ydCgpIHtcclxuICAgIHRoaXMubG9hZGluZ1N0YXRlID0gQ29tcG9uZW50TG9hZGluZ1N0YXRlcy5Mb2FkaW5nO1xyXG4gICAgdGhpcy5hY2NHbERldGFpbHNFbnF1aXJ5UmVwb3J0TW9kZWwgPSB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5kYXRhUmVhZHkgPSBmYWxzZTtcclxuICAgIHRoaXMuc2VsZWN0ZWRFeHBvcnRPcHRpb24gPSAnZXhjZWwnO1xyXG4gICAgdGhpcy5zeXNDb21wYW55Q29kZSA9ICdCSCc7XHJcbiAgICB0aGlzLnN5c1VzZXJJZCA9IHRoaXMucmVwb3J0U2VydmljZS5nZXRVc2VyTmFtZUZyb21TZXNzaW9uU3RvcmFnZSgpO1xyXG4gICAgdGhpcy5jb21wYW55TmFtZSA9ICdYcHJlc3MgTW9uZXknO1xyXG4gICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XHJcblxyXG4gICAgdGhpcy5kYXRlVHlwZSA9IHRoaXMuZGF0ZVR5cGVGaWx0ZXIgPT09IDEgPyAnVkQnIDogJ1BEJztcclxuXHJcbiAgICB0aGlzLnJlcG9ydFNlcnZpY2UuZ2V0QWNjR0xEZXRhaWxzUmVwb3J0KHRoaXMuZGF0ZS5zcGxpdCgnVCcpWzBdLCB0aGlzLmRhdGVUeXBlKS5zdWJzY3JpYmUoXHJcbiAgICAgIChkYXRhKSA9PiB7XHJcbiAgICAgICAgaWYgKGRhdGEpIHtcclxuICAgICAgICAgIC8vICBQcmUtZm9ybWF0IGVudHJpZXMgYmVmb3JlIHN0b3JpbmdcclxuICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZEVudHJpZXMgPSBkYXRhLmpvdXJuYWxWb3VjaGVyRW50cmllcy5tYXAoKGVudHJ5KSA9PiAoe1xyXG4gICAgICAgICAgICAuLi5lbnRyeSxcclxuICAgICAgICAgICAgcG9zdGluZ0RhdGU6IHRoaXMuZm9ybWF0RGF0ZVZhbHVlKGVudHJ5LnBvc3RpbmdEYXRlKSxcclxuICAgICAgICAgICAgdmFsdWVEYXRlOiB0aGlzLmZvcm1hdERhdGVWYWx1ZShlbnRyeS52YWx1ZURhdGUpLFxyXG4gICAgICAgICAgICByYXRlOiB0aGlzLmZvcm1hdE51bWJlclZhbHVlKGVudHJ5LnJhdGUsICdyYXRlJyksXHJcbiAgICAgICAgICAgIGZvcmV4RGViaXQ6IHRoaXMuZm9ybWF0TnVtYmVyVmFsdWUoZW50cnkuZm9yZXhEZWJpdCwgJ2ZvcmV4RGViaXQnKSxcclxuICAgICAgICAgICAgbG9jYWxEZWJpdDogdGhpcy5mb3JtYXROdW1iZXJWYWx1ZShlbnRyeS5sb2NhbERlYml0LCAnbG9jYWxEZWJpdCcpLFxyXG4gICAgICAgICAgICBmb3JleENyZWRpdDogdGhpcy5mb3JtYXROdW1iZXJWYWx1ZShlbnRyeS5mb3JleENyZWRpdCwgJ2ZvcmV4Q3JlZGl0JyksXHJcbiAgICAgICAgICAgIGxvY2FsQ3JlZGl0OiB0aGlzLmZvcm1hdE51bWJlclZhbHVlKGVudHJ5LmxvY2FsQ3JlZGl0LCAnbG9jYWxDcmVkaXQnKSxcclxuICAgICAgICAgIH0pKTtcclxuXHJcbiAgICAgICAgICB0aGlzLmFjY0dsRGV0YWlsc0VucXVpcnlSZXBvcnRNb2RlbCA9IHtcclxuICAgICAgICAgICAgLi4uZGF0YSxcclxuICAgICAgICAgICAgam91cm5hbFZvdWNoZXJFbnRyaWVzOiBmb3JtYXR0ZWRFbnRyaWVzLFxyXG4gICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICB0aGlzLnJvd0RhdGEgPSBmb3JtYXR0ZWRFbnRyaWVzO1xyXG4gICAgICAgICAgdGhpcy5jb21wYW55TmFtZSA9IGRhdGEuY29tcGFueU5hbWU7XHJcbiAgICAgICAgICB0aGlzLnJlcG9ydFVzZXIgPSBkYXRhLnJlcG9ydFVzZXIudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICAgIHRoaXMucmVwb3J0VGltZSA9IGZvcm1hdERhdGUobmV3IERhdGUoKSwgJ2RkL01NL3l5eXkgaGg6bW0gYScsICdlbi1VUycpO1xyXG4gICAgICAgICAgdGhpcy5jdXJyZW50UmVwb3J0VmFsdWVPclBvc3REYXRlID0gZm9ybWF0RGF0ZShkYXRhLmRhdGUsICdkZC9NTS95eXl5JywgJ2VuLVVTJyk7XHJcbiAgICAgICAgICBjb25zdCBEYXRlVHlwZSA9IHRoaXMuZGF0ZVR5cGUgPT09ICdWRCcgPyAnVmFsdWUgRGF0ZScgOiAnUG9zdGluZyBEYXRlJztcclxuXHJcbiAgICAgICAgICB0aGlzLm1ldGFEYXRhT25lID0ge1xyXG4gICAgICAgICAgICBbRGF0ZVR5cGVdOiB0aGlzLmN1cnJlbnRSZXBvcnRWYWx1ZU9yUG9zdERhdGUsXHJcbiAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgIHRoaXMubWV0YURhdGFUd28gPSB7XHJcbiAgICAgICAgICAgICdSZXBvcnQgVXNlciAmIFRpbWUgJzogYCR7dGhpcy5yZXBvcnRVc2VyfSBAICR7dGhpcy5yZXBvcnRUaW1lfWBcclxuICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nU3RhdGUgPSBDb21wb25lbnRMb2FkaW5nU3RhdGVzLkNvbXBsZXRlO1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmRhdGFSZWFkeSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB3aW5kb3cuYWxlcnQoZXJyb3IubWVzc2FnZSk7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZvcm1hdERhdGVWYWx1ZSh2YWx1ZTogYW55KTogc3RyaW5nIHtcclxuICAgIGlmICghdmFsdWUpIHJldHVybiAnJztcclxuICAgIHJldHVybiBmb3JtYXREYXRlKG5ldyBEYXRlKHZhbHVlKSwgJ2RkL01NL3l5eXknLCAnZW4tVVMnKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZm9ybWF0TnVtYmVyVmFsdWUodmFsdWU6IGFueSwgZmllbGQ6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBpZiAodmFsdWUgPT0gbnVsbCkgcmV0dXJuICcnO1xyXG4gICAgcmV0dXJuIGZpZWxkID09PSAncmF0ZScgPyBOdW1iZXIodmFsdWUpLnRvRml4ZWQoOCkgOiBOdW1iZXIodmFsdWUpLnRvRml4ZWQoMyk7XHJcbiAgfVxyXG5cclxuICBvbkdyaWRSZWFkeShwYXJhbXM6IEdyaWRSZWFkeUV2ZW50KSB7XHJcbiAgICB0aGlzLmdyaWRBcGkgPSBwYXJhbXMuYXBpO1xyXG4gICAgdGhpcy5ncmlkQ29sdW1uQXBpID0gcGFyYW1zLmNvbHVtbkFwaTtcclxuICB9XHJcblxyXG4gIG9uR3JpZFNpemVDaGFuZ2VkKHBhcmFtczogYW55KSB7XHJcbiAgICBwYXJhbXMuYXBpLnNpemVDb2x1bW5zVG9GaXQoKTtcclxuICB9XHJcblxyXG4gIGdldFJvd0hlaWdodChwYXJhbXM6IGFueSk6IG51bWJlciB7XHJcbiAgICBjb25zdCBkZXNjcmlwdGlvbiA9IHBhcmFtcy5kYXRhPy5kZXNjcmlwdGlvbiB8fCAnJztcclxuICAgIHJldHVybiBkZXNjcmlwdGlvbi5sZW5ndGggPiA1MCA/IDQwIDogMjA7XHJcbiAgfVxyXG5cclxuICBvblNlYXJjaCh0ZXh0OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGNvbnN0IG5vcm1hbGl6ZSA9IChzdHI6IGFueSk6IHN0cmluZyA9PlxyXG4gICAgICBzdHJcclxuICAgICAgICA/LnRvU3RyaW5nKClcclxuICAgICAgICAudG9Mb3dlckNhc2UoKVxyXG4gICAgICAgIC5yZXBsYWNlKC8sL2csICcnKVxyXG4gICAgICAgIC5yZXBsYWNlKC9cXHMrL2csICcgJylcclxuICAgICAgICAucmVwbGFjZSgvW1xcdTIwMEItXFx1MjAwRFxcdUZFRkZdL2csICcnKVxyXG4gICAgICAgIC50cmltKCk7XHJcblxyXG4gICAgdGhpcy5zZWFyY2hUZXh0ID0gdGV4dDtcclxuICAgIGNvbnN0IHNlYXJjaCA9IG5vcm1hbGl6ZSh0aGlzLnNlYXJjaFRleHQpO1xyXG5cclxuICAgIGlmIChzZWFyY2gpIHtcclxuICAgICAgdGhpcy5yb3dEYXRhID0gdGhpcy5hY2NHbERldGFpbHNFbnF1aXJ5UmVwb3J0TW9kZWwuam91cm5hbFZvdWNoZXJFbnRyaWVzLmZpbHRlcigoaXRlbSkgPT5cclxuICAgICAgICBPYmplY3QudmFsdWVzKGl0ZW0pLnNvbWUoKHZhbHVlKSA9PiBub3JtYWxpemUodmFsdWUpLmluY2x1ZGVzKHNlYXJjaCkpXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnJvd0RhdGEgPSB0aGlzLmFjY0dsRGV0YWlsc0VucXVpcnlSZXBvcnRNb2RlbC5qb3VybmFsVm91Y2hlckVudHJpZXM7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGVFeHBvcnQob3B0aW9uOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRFeHBvcnRPcHRpb24gPSBvcHRpb247XHJcbiAgICBzd2l0Y2ggKHRoaXMuc2VsZWN0ZWRFeHBvcnRPcHRpb24pIHtcclxuICAgICAgY2FzZSAnZXhjZWwnOlxyXG4gICAgICAgIHRoaXMuZXhwb3J0VG9FeGNlbCgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdwZGYnOlxyXG4gICAgICAgIHRoaXMuZXhwb3J0VG9QZGYoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnY3N2JzpcclxuICAgICAgICB0aGlzLmV4cG9ydFRvQ3N2KCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgYWxlcnQoJ1BsZWFzZSBzZWxlY3QgYW4gZXhwb3J0IGZvcm1hdC4nKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIGV4cG9ydFRvUGRmKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKCF0aGlzLmFjY0dsRGV0YWlsc0VucXVpcnlSZXBvcnRNb2RlbC5qb3VybmFsVm91Y2hlckVudHJpZXM/Lmxlbmd0aCkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IHRpdGxlID0gYCR7dGhpcy5jb21wYW55TmFtZX0gLSBHZW5lcmFsIExlZGdlciBBY2NvdW50IERldGFpbHMgRW5xdWlyeSBSZXBvcnRgO1xyXG4gICAgY29uc3QgbWV0YWRhdGEgPSB0aGlzLmV4cG9ydFNlcnZpY2UuZ2VuZXJhdGVSZXBvcnRNZXRhZGF0YShbXHJcbiAgICAgIFsnUmVwb3J0IFVzZXIgOiAnLCB0aGlzLnJlcG9ydFVzZXJdLFxyXG4gICAgICBbJ1JlcG9ydCBUaW1lIDogJywgdGhpcy5yZXBvcnRUaW1lXSxcclxuICAgICAgLy8gWydTZWFyY2ggQ3JpdGVyaWEnLCAnIC0gJ10sXHJcbiAgICAgIC8vIFtgJHt0aGlzLmRhdGVUeXBlID09ICdWRCcgPyAnVmFsdWUgRGF0ZScgOiAnUG9zdGluZyBEYXRlJ306YCwgdGhpcy5jdXJyZW50UmVwb3J0VmFsdWVPclBvc3REYXRlXSxcclxuICAgIF0pO1xyXG4gICAgLy8gLS0tIHNlYXJjaCBjcml0ZXJpYSAtLS1cclxuICAgIGNvbnN0IHNlYXJjaENyaXRlcmlhOiBbc3RyaW5nLCBzdHJpbmddW10gPSBbXHJcbiAgICAgIFsnRGF0ZSBUeXBlOicsIGAke3RoaXMuZGF0ZVR5cGUgPT0gJ1ZEJyA/ICdWYWx1ZSBEYXRlJyA6ICdQb3N0aW5nIERhdGUnfWBdLFxyXG4gICAgICBbJ0RhdGU6JywgdGhpcy5jdXJyZW50UmVwb3J0VmFsdWVPclBvc3REYXRlXSxcclxuICAgIF07XHJcblxyXG4gICAgY29uc3QgeyBoZWFkZXJzLCByb3dzIH0gPSB0aGlzLmV4cG9ydFNlcnZpY2UucHJlcGFyZUV4cG9ydFRhYmxlKHRoaXMuYWNjR2xEZXRhaWxzRW5xdWlyeVJlcG9ydE1vZGVsLmpvdXJuYWxWb3VjaGVyRW50cmllcywgdGhpcy5jb2x1bW5EZWZzLCB7XHJcbiAgICAgIGN1cnJlbmN5RmllbGRzOiBbJ2xvY2FsQ3JlZGl0JywgJ2ZvcmV4Q3JlZGl0JywgJ2xvY2FsRGViaXQnLCAnZm9yZXhEZWJpdCddLFxyXG4gICAgfSk7XHJcblxyXG4gICAgYXdhaXQgdGhpcy5leHBvcnRTZXJ2aWNlLmV4cG9ydFRvUGRmVW5pdmVyc2FsKHRpdGxlLCBtZXRhZGF0YSwgc2VhcmNoQ3JpdGVyaWEsIGhlYWRlcnMsIHJvd3MsICdBQ0MtR0wtRGV0YWlscy1FbnF1aXJ5LVJlcG9ydC5wZGYnKTtcclxuICB9XHJcblxyXG4gIGV4cG9ydFRvRXhjZWwoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuYWNjR2xEZXRhaWxzRW5xdWlyeVJlcG9ydE1vZGVsLmpvdXJuYWxWb3VjaGVyRW50cmllcz8ubGVuZ3RoKSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgdGl0bGUgPSBgJHt0aGlzLmNvbXBhbnlOYW1lfSAtIEdlbmVyYWwgTGVkZ2VyIEFjY291bnQgRGV0YWlscyBFbnF1aXJ5IFJlcG9ydGA7XHJcbiAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuZXhwb3J0U2VydmljZS5nZW5lcmF0ZVJlcG9ydE1ldGFkYXRhKFtcclxuICAgICAgWydSZXBvcnQgVXNlcicsIHRoaXMucmVwb3J0VXNlcl0sXHJcbiAgICAgIFsnUmVwb3J0IFRpbWUnLCB0aGlzLnJlcG9ydFRpbWVdLFxyXG4gICAgICAvLyBbJ1NlYXJjaCBDcml0ZXJpYScsICcgLSAnXSxcclxuICAgICAgLy8gW2Ake3RoaXMuZGF0ZVR5cGUgPT0gJ1ZEJyA/ICdWYWx1ZSBEYXRlJyA6ICdQb3N0aW5nIERhdGUnfWAsIHRoaXMuY3VycmVudFJlcG9ydFZhbHVlT3JQb3N0RGF0ZV0sXHJcbiAgICBdKTtcclxuICAgIC8vIC0tLSBzZWFyY2ggY3JpdGVyaWEgLS0tXHJcbiAgICBjb25zdCBzZWFyY2hDcml0ZXJpYTogW3N0cmluZywgc3RyaW5nXVtdID0gW1xyXG4gICAgICBbJ0RhdGUgVHlwZTonLCBgJHt0aGlzLmRhdGVUeXBlID09ICdWRCcgPyAnVmFsdWUgRGF0ZScgOiAnUG9zdGluZyBEYXRlJ31gXSxcclxuICAgICAgWydEYXRlOicsIHRoaXMuY3VycmVudFJlcG9ydFZhbHVlT3JQb3N0RGF0ZV0sXHJcbiAgICBdO1xyXG5cclxuICAgIGNvbnN0IHsgaGVhZGVycywgcm93cyB9ID0gdGhpcy5leHBvcnRTZXJ2aWNlLnByZXBhcmVFeHBvcnRUYWJsZSh0aGlzLmFjY0dsRGV0YWlsc0VucXVpcnlSZXBvcnRNb2RlbC5qb3VybmFsVm91Y2hlckVudHJpZXMsIHRoaXMuY29sdW1uRGVmcywge1xyXG4gICAgICBjdXJyZW5jeUZpZWxkczogWydsb2NhbENyZWRpdCcsICdmb3JleENyZWRpdCcsICdsb2NhbERlYml0JywgJ2ZvcmV4RGViaXQnXSxcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuZXhwb3J0U2VydmljZS5leHBvcnRUb0V4Y2VsVW5pdmVyc2FsKHRpdGxlLCBtZXRhZGF0YSxzZWFyY2hDcml0ZXJpYSwgaGVhZGVycywgcm93cywgJ0FDQy1HTC1EZXRhaWxzLUVucXVpcnktUmVwb3J0Lnhsc3gnKTtcclxuICB9XHJcblxyXG4gIGV4cG9ydFRvQ3N2KCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmFjY0dsRGV0YWlsc0VucXVpcnlSZXBvcnRNb2RlbC5qb3VybmFsVm91Y2hlckVudHJpZXM/Lmxlbmd0aCkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IHRpdGxlID0gYCR7dGhpcy5jb21wYW55TmFtZX0gLSBHZW5lcmFsIExlZGdlciBBY2NvdW50IERldGFpbHMgRW5xdWlyeSBSZXBvcnRgO1xyXG4gICAgY29uc3QgbWV0YWRhdGEgPSB0aGlzLmV4cG9ydFNlcnZpY2UuZ2VuZXJhdGVSZXBvcnRNZXRhZGF0YShbXHJcbiAgICAgIFsnUmVwb3J0IFVzZXInLCB0aGlzLnJlcG9ydFVzZXJdLFxyXG4gICAgICBbJ1JlcG9ydCBUaW1lJywgdGhpcy5yZXBvcnRUaW1lXSxcclxuICAgICAgWydTZWFyY2ggQ3JpdGVyaWEnLCAnLSAnXSxcclxuICAgICAgW2Ake3RoaXMuZGF0ZVR5cGUgPT0gJ1ZEJyA/ICdWYWx1ZSBEYXRlJyA6ICdQb3N0aW5nIERhdGUnfWAsIHRoaXMuY3VycmVudFJlcG9ydFZhbHVlT3JQb3N0RGF0ZV0sXHJcbiAgICBdKTtcclxuXHJcbiAgICBjb25zdCB7IGhlYWRlcnMsIHJvd3MgfSA9IHRoaXMuZXhwb3J0U2VydmljZS5wcmVwYXJlRXhwb3J0VGFibGUodGhpcy5hY2NHbERldGFpbHNFbnF1aXJ5UmVwb3J0TW9kZWwuam91cm5hbFZvdWNoZXJFbnRyaWVzLCB0aGlzLmNvbHVtbkRlZnMsIHtcclxuICAgICAgY3VycmVuY3lGaWVsZHM6IFsnbG9jYWxDcmVkaXQnLCAnZm9yZXhDcmVkaXQnLCAnbG9jYWxEZWJpdCcsICdmb3JleERlYml0J10sXHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmV4cG9ydFNlcnZpY2UuZXhwb3J0VG9Dc3ZVbml2ZXJzYWwodGl0bGUsIG1ldGFkYXRhLCBoZWFkZXJzLCByb3dzLCAnQUNDLUdMLURldGFpbHMtRW5xdWlyeS1SZXBvcnQuY3N2Jyk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVTZWFyY2goY3JpdGVyaWE6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5kYXRlVHlwZUZpbHRlciA9IGNyaXRlcmlhLnNlbGVjdGVkRGF0ZVR5cGU7XHJcbiAgICB0aGlzLmRhdGUgPSBjcml0ZXJpYS5zZWxlY3RlZERhdGUuc3BsaXQoJ1QnKVswXTtcclxuICAgIHRoaXMuZ2V0QWNjR0xEZXRhaWxzUmVwb3J0KCk7XHJcbiAgfVxyXG59XHJcbiIsIjxsaWItc2VhcmNoLWZpbHRlciBbUmVwb3J0TmFtZV09XCJSZXBvcnROYW1lXCIgKHNlYXJjaENsaWNrZWQpPVwiaGFuZGxlU2VhcmNoKCRldmVudClcIj5cclxuPC9saWItc2VhcmNoLWZpbHRlcj5cclxuPGFwcC1sb2FkZXIgY2xhc3M9XCJcIiAqbmdJZj1cImxvYWRpbmdTdGF0ZSA9PSBDb21wb25lbnRMb2FkaW5nU3RhdGUuTG9hZGluZ1wiPjwvYXBwLWxvYWRlcj5cclxuPGRpdiBjbGFzcz1cIm1haW4tY29udGFpbmVyXCI+XHJcbiAgPGRpdiBjbGFzcz1cInJlcG9ydC1jb250YWluZXJcIlxyXG4gICAgKm5nSWY9XCJhY2NHbERldGFpbHNFbnF1aXJ5UmVwb3J0TW9kZWwgIT0gdW5kZWZpbmVkICYmIGRhdGFSZWFkeSAmJiBhY2NHbERldGFpbHNFbnF1aXJ5UmVwb3J0TW9kZWw/LmpvdXJuYWxWb3VjaGVyRW50cmllcz8ubGVuZ3RoIT0wXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWFpbi1yZXBvcnRcIiAqbmdJZj1cImFjY0dsRGV0YWlsc0VucXVpcnlSZXBvcnRNb2RlbCAhPSB1bmRlZmluZWQgJiYgZGF0YVJlYWR5XCI+XHJcbiAgICAgIDxsaWItbWV0YWRhdGEgW3JlcG9ydE5hbWVdPVwiUmVwb3J0TmFtZVwiIFtzaG93bWV0YURhdGFPbmVdPVwidHJ1ZVwiIFtzaG93bWV0YURhdGFUd29dPVwidHJ1ZVwiXHJcbiAgICAgICAgW21ldGFEYXRhT25lXT1cIm1ldGFEYXRhT25lXCIgW21ldGFEYXRhVHdvXT1cIm1ldGFEYXRhVHdvXCIgKGV4cG9ydEV2ZW50KT1cImhhbmRsZUV4cG9ydCgkZXZlbnQpXCJcclxuICAgICAgICAoc2VhcmNoRXZlbnQpPVwib25TZWFyY2goJGV2ZW50KVwiPjwvbGliLW1ldGFkYXRhPlxyXG4gICAgICA8ZGl2IHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlO1wiPlxyXG4gICAgICAgIDxsaWItcGFnZS1zaXplLXNlbGVjdG9yIFt0b3RhbEVudHJpZXNdPVwiYWNjR2xEZXRhaWxzRW5xdWlyeVJlcG9ydE1vZGVsPy5qb3VybmFsVm91Y2hlckVudHJpZXM/Lmxlbmd0aFwiXHJcbiAgICAgICAgICBbZGVmYXVsdFNpemVdPVwiJzE1J1wiIFtncmlkQXBpXT1cImdyaWRBcGlcIj5cclxuICAgICAgICAgID48L2xpYi1wYWdlLXNpemUtc2VsZWN0b3I+XHJcbiAgICAgICAgPGFnLWdyaWQtYW5ndWxhciBjbGFzcz1cImFnLXRoZW1lLWFscGluZSB0cmFuc2FjdGlvbi1ncmlkXCIgc3R5bGU9XCJ3aWR0aDogMTAwJTtoZWlnaHQ6IDM3NXB4O1wiXHJcbiAgICAgICAgICBbY29sdW1uRGVmc109XCJjb2x1bW5EZWZzXCIgW2RlZmF1bHRDb2xEZWZdPVwiZGVmYXVsdENvbERlZlwiIFtyb3dEYXRhXT1cInJvd0RhdGFcIiBbcm93SGVpZ2h0XT1cIjIwXCJcclxuICAgICAgICAgIFtoZWFkZXJIZWlnaHRdPVwiMjJcIiBbcGFnaW5hdGlvbl09XCJ0cnVlXCIgW3BhZ2luYXRpb25QYWdlU2l6ZV09XCJwYWdlU2l6ZVwiIChncmlkUmVhZHkpPVwib25HcmlkUmVhZHkoJGV2ZW50KVwiXHJcbiAgICAgICAgICAoZ3JpZFNpemVDaGFuZ2VkKT1cIm9uR3JpZFNpemVDaGFuZ2VkKCRldmVudClcIj5cclxuICAgICAgICA8L2FnLWdyaWQtYW5ndWxhcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImFsZXJ0IGFsZXJ0LXdhcm5pbmcgbXQtM1wiICpuZ0lmPVwiYWNjR2xEZXRhaWxzRW5xdWlyeVJlcG9ydE1vZGVsPy5qb3VybmFsVm91Y2hlckVudHJpZXM/Lmxlbmd0aD09MFwiPlxyXG4gICAgTm8gRGF0YSBmb3VuZCBtYXRjaGluZyB5b3VyIHNlYXJjaCBjcml0ZXJpYS5cclxuICA8L2Rpdj5cclxuPC9kaXY+Il19
|
|
255
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjLWdsLWRldGFpbHMtZW5xdWlyeS1yZXBvcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcmVwb3J0cy1saWIvc3JjL2xpYi9jb21wb25lbnRzL2FjYy1nbC1kZXRhaWxzLWVucXVpcnktcmVwb3J0L2FjYy1nbC1kZXRhaWxzLWVucXVpcnktcmVwb3J0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3JlcG9ydHMtbGliL3NyYy9saWIvY29tcG9uZW50cy9hY2MtZ2wtZGV0YWlscy1lbnF1aXJ5LXJlcG9ydC9hY2MtZ2wtZGV0YWlscy1lbnF1aXJ5LXJlcG9ydC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBSWxELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUc3QyxPQUFPLGlCQUFpQixDQUFDO0FBRXpCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDOzs7Ozs7Ozs7Ozs7QUFjL0UsTUFBTSxPQUFPLGtDQUFrQztJQW9FN0MsWUFDVSxhQUE0QixFQUM1QixhQUE0QixFQUM1QixJQUFnQixFQUNoQixTQUF1QjtRQUh2QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLGNBQVMsR0FBVCxTQUFTLENBQWM7UUFyRWpDLGVBQVUsR0FBVyxFQUFFLENBQUM7UUFHeEIseUJBQW9CLEdBQVcsT0FBTyxDQUFDO1FBQ3ZDLGNBQVMsR0FBYSxFQUFFLENBQUM7UUFDekIsWUFBTyxHQUFZLEtBQUssQ0FBQztRQUN6QixjQUFTLEdBQVksS0FBSyxDQUFDO1FBQzNCLG1CQUFjLEdBQVcsQ0FBQyxDQUFDO1FBUzNCLFlBQU8s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QUFFLElBQUksQ0FBQyw0QkFBNEIsQ0FBQztTQUM3QyxDQUFDO1FBRUYsTUFBTSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxxQkFBcUIsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQzFJLGNBQWMsRUFBRSxDQUFDLGFBQWEsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLFlBQVksQ0FBQztTQUMzRSxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsYUFBYSxDQUFDLG9CQUFvQixDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUMsY0FBYyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsbUNBQW1DLENBQUMsQ0FBQztJQUM5SCxDQUFDO0lBRUQsWUFBWSxDQUFDLFFBQWE7UUFDeEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxRQUFRLENBQUMsZ0JBQWdCLENBQUM7UUFDaEQsSUFBSSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoRCxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztJQUMvQixDQUFDOzsrSEF4UlUsa0NBQWtDO21IQUFsQyxrQ0FBa0MseUVDdkIvQyxtdERBMEJNOzJGREhPLGtDQUFrQztrQkFOOUMsU0FBUzsrQkFDRSxtQ0FBbUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSZXBvcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcmVwb3J0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBY2NHbERldGFpbHNFbnF1aXJ5UmVwb3J0TW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvYWNjLWdsLWRldGFpbHMtZW5xdWlyeS1yZXBvcnQvYWNjZ2wtZGV0YWlscy1lbnF1aXJ5LXJlcG9ydG1vZGVsJztcclxuaW1wb3J0IHsgQ29sRGVmLCBDb2x1bW5BcGksIEdyaWRBcGksIEdyaWRSZWFkeUV2ZW50IH0gZnJvbSAnYWctZ3JpZC1jb21tdW5pdHknO1xyXG5pbXBvcnQgeyBmb3JtYXREYXRlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgJ2pzcGRmLWF1dG90YWJsZSc7XHJcbmltcG9ydCB7IEV4cG9ydFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvZXhwb3J0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRMb2FkaW5nU3RhdGVzIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2NvbXBvbmVudC1sb2FkaW5nLXN0YXRlcyc7XHJcblxyXG5kZWNsYXJlIG1vZHVsZSAnanNwZGYnIHtcclxuICBpbnRlcmZhY2UganNQREYge1xyXG4gICAgYXV0b1RhYmxlOiAob3B0aW9uczogYW55KSA9PiBqc1BERjtcclxuICB9XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWFjYy1nbC1kZXRhaWxzLWVucXVpcnktcmVwb3J0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYWNjLWdsLWRldGFpbHMtZW5xdWlyeS1yZXBvcnQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2FjYy1nbC1kZXRhaWxzLWVucXVpcnktcmVwb3J0LmNvbXBvbmVudC5zY3NzJ10sXHJcblxyXG59KVxyXG5leHBvcnQgY2xhc3MgQWNjR2xEZXRhaWxzRW5xdWlyeVJlcG9ydENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG5cclxuICBzZWFyY2hUZXh0OiBzdHJpbmcgPSAnJztcclxuICBncmlkQXBpOiBHcmlkQXBpPGFueT47XHJcbiAgZ3JpZENvbHVtbkFwaSE6IENvbHVtbkFwaTtcclxuICBzZWxlY3RlZEV4cG9ydE9wdGlvbjogc3RyaW5nID0gJ2V4Y2VsJztcclxuICBzdmdMb2FkZXI6IFNhZmVIdG1sID0gJyc7XHJcbiAgbG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGRhdGFSZWFkeTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGRhdGVUeXBlRmlsdGVyOiBudW1iZXIgPSAxO1xyXG4gIGRhdGVUeXBlOiBhbnk7XHJcbiAgc3lzQ29tcGFueUNvZGU6IGFueTtcclxuICBzeXNVc2VySWQ6IGFueTtcclxuICBjb21wYW55TmFtZTogYW55O1xyXG4gIHJlcG9ydFVzZXI6IGFueTtcclxuICByZXBvcnRUaW1lOiBhbnk7XHJcbiAgY3VycmVudFJlcG9ydFZhbHVlT3JQb3N0RGF0ZTogYW55O1xyXG4gIGFjY0dsRGV0YWlsc0VucXVpcnlSZXBvcnRNb2RlbDogQWNjR2xEZXRhaWxzRW5xdWlyeVJlcG9ydE1vZGVsO1xyXG4gIHJvd0RhdGEgPSBbXTtcclxuICBkYXRlOiBzdHJpbmc7XHJcbiAgcGFnZVNpemU6IG51bWJlciA9IDE1O1xyXG4gIFJlcG9ydE5hbWUgPSAnQUNDIEdMIERldGFpbHMgRW5xdWlyeSc7XHJcbiAgZXhwb3J0Rm9ybWF0cyA9IFtcclxuICAgIHsgZm9ybWF0TmFtZTogJ0V4Y2VsJywgY29kZTogJ2V4Y2VsJyB9LFxyXG4gICAgeyBmb3JtYXROYW1lOiAnUERGJywgY29kZTogJ3BkZicgfSxcclxuICAgIHsgZm9ybWF0TmFtZTogJ0NTVicsIGNvZGU6ICdjc3YnIH0sXHJcbiAgXTtcclxuICBtZXRhRGF0YU9uZTogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcclxuICBtZXRhRGF0YVR3bzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcclxuICBDb21wb25lbnRMb2FkaW5nU3RhdGUgPSBDb21wb25lbnRMb2FkaW5nU3RhdGVzO1xyXG4gIGxvYWRpbmdTdGF0ZTogQ29tcG9uZW50TG9hZGluZ1N0YXRlcyA9IENvbXBvbmVudExvYWRpbmdTdGF0ZXMuQ29tcGxldGU7XHJcblxyXG4gIGRlZmF1bHRDb2xEZWY6IENvbERlZiA9IHtcclxuICAgIHJlc2l6YWJsZTogdHJ1ZSxcclxuICAgIHNvcnRhYmxlOiBmYWxzZSxcclxuICAgIG1pbldpZHRoOiA0MCxcclxuICAgIHN1cHByZXNzU2l6ZVRvRml0OiBmYWxzZSxcclxuICAgIGNlbGxTdHlsZToge1xyXG4gICAgICB1c2VyU2VsZWN0OiAndGV4dCcsXHJcbiAgICAgICdsaW5lLWhlaWdodCc6ICcxLjInLFxyXG4gICAgICAnd2hpdGUtc3BhY2UnOiAnbm9ybWFsJyxcclxuICAgICAgJ3dvcmQtYnJlYWsnOiAnbm9ybWFsJyxcclxuICAgICAgJ292ZXJmbG93LXdyYXAnOiAnYnJlYWstd29yZCcsXHJcbiAgICB9LFxyXG4gICAgd3JhcEhlYWRlclRleHQ6IHRydWUsXHJcbiAgICBhdXRvSGVhZGVySGVpZ2h0OiB0cnVlLFxyXG4gICAgd3JhcFRleHQ6IHRydWUsXHJcbiAgICBhdXRvSGVpZ2h0OiB0cnVlLFxyXG4gIH07XHJcblxyXG4gIGNvbHVtbkRlZnM6IENvbERlZltdID0gW1xyXG4gICAgeyBoZWFkZXJOYW1lOiAnSm91cm5hbCBJRCcsIGZpZWxkOiAnam91cm5hbElEJywgZmxleDogMS44LCBjZWxsQ2xhc3M6ICdhZy1sZWZ0LWNvbHMtY2VsbCBjb21wYWN0LWNlbGwnLCBtaW5XaWR0aDogOTUsIHRvb2x0aXBGaWVsZDogJ2pvdXJuYWxJRCcgfSxcclxuICAgIHsgaGVhZGVyTmFtZTogJ1RyYW5zIE5vJywgZmllbGQ6ICd0cmFuc2FjdGlvbk5vJywgZmxleDogMS44LCBjZWxsQ2xhc3M6ICdhZy1sZWZ0LWNvbHMtY2VsbCBjb21wYWN0LWNlbGwtdHJhbnNhY3Rpb24nLCBtaW5XaWR0aDogNzMsIHRvb2x0aXBGaWVsZDogJ3RyYW5zYWN0aW9uTm8nIH0sXHJcbiAgICB7IGhlYWRlck5hbWU6ICdUcmFucyBDb2RlJywgZmllbGQ6ICd0cmFuc2FjdGlvbkNvZGUnLCBmbGV4OiAxLjIsIGNlbGxDbGFzczogJ2FnLWxlZnQtY29scy1jZWxsIGNvbXBhY3QtY2VsbCcsIG1pbldpZHRoOiA2MCwgdG9vbHRpcEZpZWxkOiAndHJhbnNhY3Rpb25Db2RlJyB9LFxyXG4gICAgeyBoZWFkZXJOYW1lOiAnSm91cm5hbCBUeXBlJywgZmllbGQ6ICdqb3VybmFsVHlwZScsIGZsZXg6IDEuMiwgY2VsbENsYXNzOiAnYWctbGVmdC1jb2xzLWNlbGwgY29tcGFjdC1jZWxsJywgbWluV2lkdGg6IDczLCB0b29sdGlwRmllbGQ6ICdqb3VybmFsVHlwZScgfSxcclxuICAgIHsgaGVhZGVyTmFtZTogJ1Bvc3RpbmcgRGF0ZScsIGZpZWxkOiAncG9zdGluZ0RhdGUnLCBmbGV4OiAxLjIsIGNlbGxDbGFzczogJ2FnLWxlZnQtY29scy1jZWxsIGNvbXBhY3QtY2VsbCcsIG1pbldpZHRoOiA2OSwgdG9vbHRpcEZpZWxkOiAncG9zdGluZ0RhdGUnIH0sXHJcbiAgICB7IGhlYWRlck5hbWU6ICdWYWx1ZSBEYXRlJywgZmllbGQ6ICd2YWx1ZURhdGUnLCBmbGV4OiAxLjIsIGNlbGxDbGFzczogJ2FnLWxlZnQtY29scy1jZWxsIGNvbXBhY3QtY2VsbCcsIG1pbldpZHRoOiA2OCwgdG9vbHRpcEZpZWxkOiAndmFsdWVEYXRlJyB9LFxyXG4gICAgeyBoZWFkZXJOYW1lOiAnRGVzY3JpcHRpb24nLCBmaWVsZDogJ2Rlc2NyaXB0aW9uJywgZmxleDogNC44LCBtaW5XaWR0aDogMTE5LCB3cmFwVGV4dDogdHJ1ZSwgYXV0b0hlaWdodDogdHJ1ZSwgY2VsbFN0eWxlOiB7ICdsaW5lLWhlaWdodCc6ICcxLjInLCAnd2hpdGUtc3BhY2UnOiAnbm9ybWFsJywgJ3dvcmQtYnJlYWsnOiAnbm9ybWFsJywgJ292ZXJmbG93LXdyYXAnOiAnYnJlYWstd29yZCcgfSwgdG9vbHRpcEZpZWxkOiAnZGVzY3JpcHRpb24nIH0sXHJcbiAgICB7IGhlYWRlck5hbWU6ICdBY2NvdW50IENvZGUnLCBmaWVsZDogJ2FjY291bnRDb2RlJywgZmxleDogMS4yLCBjZWxsQ2xhc3M6ICdhZy1sZWZ0LWNvbHMtY2VsbCBjb21wYWN0LWNlbGwnLCBtaW5XaWR0aDogNzMsIHRvb2x0aXBGaWVsZDogJ2FjY291bnRDb2RlJyB9LFxyXG4gICAgeyBoZWFkZXJOYW1lOiAnQ2N5JywgZmllbGQ6ICdjdXJyZW5jeScsIGZsZXg6IDAuOCwgY2VsbENsYXNzOiAnYWctbGVmdC1jb2xzLWNlbGwnLCBtaW5XaWR0aDogMzUsIHRvb2x0aXBGaWVsZDogJ2N1cnJlbmN5JyB9LFxyXG4gICAgeyBoZWFkZXJOYW1lOiAnUmF0ZScsIGZpZWxkOiAncmF0ZScsIGZsZXg6IDEuMywgY2VsbENsYXNzOiAnYWctcmlnaHQtYWxpZ25lZC1jZWxsIGNvbXBhY3QtY2VsbCcsIG1pbldpZHRoOiA2OSwgdG9vbHRpcEZpZWxkOiAncmF0ZScgfSxcclxuICAgIHsgaGVhZGVyTmFtZTogJ0Z4RGViaXQnLCBmaWVsZDogJ2ZvcmV4RGViaXQnLCBmbGV4OiAxLCBjZWxsQ2xhc3M6ICdhZy1yaWdodC1hbGlnbmVkLWNlbGwgY29tcGFjdC1jZWxsJywgbWluV2lkdGg6IDU4LCB0b29sdGlwRmllbGQ6ICdmb3JleERlYml0JyB9LFxyXG4gICAgeyBoZWFkZXJOYW1lOiAnTG9jYWwgRGViaXQnLCBmaWVsZDogJ2xvY2FsRGViaXQnLCBmbGV4OiAxLCBjZWxsQ2xhc3M6ICdhZy1yaWdodC1hbGlnbmVkLWNlbGwgY29tcGFjdC1jZWxsJywgbWluV2lkdGg6IDYyLCB0b29sdGlwRmllbGQ6ICdsb2NhbERlYml0JyB9LFxyXG4gICAgeyBoZWFkZXJOYW1lOiAnRnhDcmVkaXQnLCBmaWVsZDogJ2ZvcmV4Q3JlZGl0JywgZmxleDogMSwgY2VsbENsYXNzOiAnYWctcmlnaHQtYWxpZ25lZC1jZWxsIGNvbXBhY3QtY2VsbCcsIG1pbldpZHRoOiA1OCwgdG9vbHRpcEZpZWxkOiAnZm9yZXhDcmVkaXQnIH0sXHJcbiAgICB7IGhlYWRlck5hbWU6ICdMb2NhbCBDcmVkaXQnLCBmaWVsZDogJ2xvY2FsQ3JlZGl0JywgZmxleDogMSwgY2VsbENsYXNzOiAnYWctcmlnaHQtYWxpZ25lZC1jZWxsIGNvbXBhY3QtY2VsbCcsIG1pbldpZHRoOiA2MiwgdG9vbHRpcEZpZWxkOiAnbG9jYWxDcmVkaXQnIH0sXHJcbiAgXTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGV4cG9ydFNlcnZpY2U6IEV4cG9ydFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlcG9ydFNlcnZpY2U6IFJlcG9ydFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICBwcml2YXRlIHNhbml0aXplcjogRG9tU2FuaXRpemVyXHJcbiAgKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAvLyB0aGlzLmh0dHBcclxuICAgIC8vICAgLmdldCgnYXNzZXRzL3JlcG9ydHMtbGliL2Fzc2V0cy9zdmctbG9hZGVycy9ibHVlLXRhaWwtc3Bpbi5zdmcnLCB7IHJlc3BvbnNlVHlwZTogJ3RleHQnIH0pXHJcbiAgICAvLyAgIC5zdWJzY3JpYmUoKHN2ZykgPT4ge1xyXG4gICAgLy8gICAgIHRoaXMuc3ZnTG9hZGVyID0gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoc3ZnKTtcclxuICAgIC8vICAgfSk7XHJcbiAgICB0aGlzLmRhdGUgPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCkuc3BsaXQoJ1QnKVswXTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRBY2NHTERldGFpbHNSZXBvcnQoKSB7XHJcbiAgICB0aGlzLmxvYWRpbmdTdGF0ZSA9IENvbXBvbmVudExvYWRpbmdTdGF0ZXMuTG9hZGluZztcclxuICAgIHRoaXMuYWNjR2xEZXRhaWxzRW5xdWlyeVJlcG9ydE1vZGVsID0gdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuZGF0YVJlYWR5ID0gZmFsc2U7XHJcbiAgICB0aGlzLnNlbGVjdGVkRXhwb3J0T3B0aW9uID0gJ2V4Y2VsJztcclxuICAgIHRoaXMuc3lzQ29tcGFueUNvZGUgPSAnQkgnO1xyXG4gICAgdGhpcy5zeXNVc2VySWQgPSB0aGlzLnJlcG9ydFNlcnZpY2UuZ2V0VXNlck5hbWVGcm9tU2Vzc2lvblN0b3JhZ2UoKTtcclxuICAgIHRoaXMuY29tcGFueU5hbWUgPSAnWHByZXNzIE1vbmV5JztcclxuICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xyXG5cclxuICAgIHRoaXMuZGF0ZVR5cGUgPSB0aGlzLmRhdGVUeXBlRmlsdGVyID09PSAxID8gJ1ZEJyA6ICdQRCc7XHJcblxyXG4gICAgdGhpcy5yZXBvcnRTZXJ2aWNlLmdldEFjY0dMRGV0YWlsc1JlcG9ydCh0aGlzLmRhdGUuc3BsaXQoJ1QnKVswXSwgdGhpcy5kYXRlVHlwZSkuc3Vic2NyaWJlKFxyXG4gICAgICAoZGF0YSkgPT4ge1xyXG4gICAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgICAvLyAgUHJlLWZvcm1hdCBlbnRyaWVzIGJlZm9yZSBzdG9yaW5nXHJcbiAgICAgICAgICBjb25zdCBmb3JtYXR0ZWRFbnRyaWVzID0gZGF0YS5qb3VybmFsVm91Y2hlckVudHJpZXMubWFwKChlbnRyeSkgPT4gKHtcclxuICAgICAgICAgICAgLi4uZW50cnksXHJcbiAgICAgICAgICAgIHBvc3RpbmdEYXRlOiB0aGlzLmZvcm1hdERhdGVWYWx1ZShlbnRyeS5wb3N0aW5nRGF0ZSksXHJcbiAgICAgICAgICAgIHZhbHVlRGF0ZTogdGhpcy5mb3JtYXREYXRlVmFsdWUoZW50cnkudmFsdWVEYXRlKSxcclxuICAgICAgICAgICAgcmF0ZTogdGhpcy5mb3JtYXROdW1iZXJWYWx1ZShlbnRyeS5yYXRlLCAncmF0ZScpLFxyXG4gICAgICAgICAgICBmb3JleERlYml0OiB0aGlzLmZvcm1hdE51bWJlclZhbHVlKGVudHJ5LmZvcmV4RGViaXQsICdmb3JleERlYml0JyksXHJcbiAgICAgICAgICAgIGxvY2FsRGViaXQ6IHRoaXMuZm9ybWF0TnVtYmVyVmFsdWUoZW50cnkubG9jYWxEZWJpdCwgJ2xvY2FsRGViaXQnKSxcclxuICAgICAgICAgICAgZm9yZXhDcmVkaXQ6IHRoaXMuZm9ybWF0TnVtYmVyVmFsdWUoZW50cnkuZm9yZXhDcmVkaXQsICdmb3JleENyZWRpdCcpLFxyXG4gICAgICAgICAgICBsb2NhbENyZWRpdDogdGhpcy5mb3JtYXROdW1iZXJWYWx1ZShlbnRyeS5sb2NhbENyZWRpdCwgJ2xvY2FsQ3JlZGl0JyksXHJcbiAgICAgICAgICB9KSk7XHJcblxyXG4gICAgICAgICAgdGhpcy5hY2NHbERldGFpbHNFbnF1aXJ5UmVwb3J0TW9kZWwgPSB7XHJcbiAgICAgICAgICAgIC4uLmRhdGEsXHJcbiAgICAgICAgICAgIGpvdXJuYWxWb3VjaGVyRW50cmllczogZm9ybWF0dGVkRW50cmllcyxcclxuICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgdGhpcy5yb3dEYXRhID0gZm9ybWF0dGVkRW50cmllcztcclxuICAgICAgICAgIHRoaXMuY29tcGFueU5hbWUgPSBkYXRhLmNvbXBhbnlOYW1lO1xyXG4gICAgICAgICAgdGhpcy5yZXBvcnRVc2VyID0gZGF0YS5yZXBvcnRVc2VyLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgICB0aGlzLnJlcG9ydFRpbWUgPSBmb3JtYXREYXRlKG5ldyBEYXRlKCksICdkZC9NTS95eXl5IGhoOm1tIGEnLCAnZW4tVVMnKTtcclxuICAgICAgICAgIHRoaXMuY3VycmVudFJlcG9ydFZhbHVlT3JQb3N0RGF0ZSA9IGZvcm1hdERhdGUoZGF0YS5kYXRlLCAnZGQvTU0veXl5eScsICdlbi1VUycpO1xyXG4gICAgICAgICAgY29uc3QgRGF0ZVR5cGUgPSB0aGlzLmRhdGVUeXBlID09PSAnVkQnID8gJ1ZhbHVlIERhdGUnIDogJ1Bvc3RpbmcgRGF0ZSc7XHJcblxyXG4gICAgICAgICAgdGhpcy5tZXRhRGF0YU9uZSA9IHtcclxuICAgICAgICAgICAgW0RhdGVUeXBlXTogdGhpcy5jdXJyZW50UmVwb3J0VmFsdWVPclBvc3REYXRlLFxyXG4gICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICB0aGlzLm1ldGFEYXRhVHdvID0ge1xyXG4gICAgICAgICAgICAnUmVwb3J0IFVzZXIgJiBUaW1lICc6IGAke3RoaXMucmVwb3J0VXNlcn0gQCAke3RoaXMucmVwb3J0VGltZX1gXHJcbiAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgIHRoaXMubG9hZGluZ1N0YXRlID0gQ29tcG9uZW50TG9hZGluZ1N0YXRlcy5Db21wbGV0ZTtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5kYXRhUmVhZHkgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgd2luZG93LmFsZXJ0KGVycm9yLm1lc3NhZ2UpO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmb3JtYXREYXRlVmFsdWUodmFsdWU6IGFueSk6IHN0cmluZyB7XHJcbiAgICBpZiAoIXZhbHVlKSByZXR1cm4gJyc7XHJcbiAgICByZXR1cm4gZm9ybWF0RGF0ZShuZXcgRGF0ZSh2YWx1ZSksICdkZC9NTS95eXl5JywgJ2VuLVVTJyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZvcm1hdE51bWJlclZhbHVlKHZhbHVlOiBhbnksIGZpZWxkOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgaWYgKHZhbHVlID09IG51bGwpIHJldHVybiAnJztcclxuICAgIHJldHVybiBmaWVsZCA9PT0gJ3JhdGUnID8gTnVtYmVyKHZhbHVlKS50b0ZpeGVkKDgpIDogTnVtYmVyKHZhbHVlKS50b0ZpeGVkKDMpO1xyXG4gIH1cclxuXHJcbiAgb25HcmlkUmVhZHkocGFyYW1zOiBHcmlkUmVhZHlFdmVudCkge1xyXG4gICAgdGhpcy5ncmlkQXBpID0gcGFyYW1zLmFwaTtcclxuICAgIHRoaXMuZ3JpZENvbHVtbkFwaSA9IHBhcmFtcy5jb2x1bW5BcGk7XHJcbiAgfVxyXG5cclxuICBvbkdyaWRTaXplQ2hhbmdlZChwYXJhbXM6IGFueSkge1xyXG4gICAgcGFyYW1zLmFwaS5zaXplQ29sdW1uc1RvRml0KCk7XHJcbiAgfVxyXG5cclxuICBnZXRSb3dIZWlnaHQocGFyYW1zOiBhbnkpOiBudW1iZXIge1xyXG4gICAgY29uc3QgZGVzY3JpcHRpb24gPSBwYXJhbXMuZGF0YT8uZGVzY3JpcHRpb24gfHwgJyc7XHJcbiAgICByZXR1cm4gZGVzY3JpcHRpb24ubGVuZ3RoID4gNTAgPyA0MCA6IDIwO1xyXG4gIH1cclxuXHJcbiAgb25TZWFyY2godGV4dDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCBub3JtYWxpemUgPSAoc3RyOiBhbnkpOiBzdHJpbmcgPT5cclxuICAgICAgc3RyXHJcbiAgICAgICAgPy50b1N0cmluZygpXHJcbiAgICAgICAgLnRvTG93ZXJDYXNlKClcclxuICAgICAgICAucmVwbGFjZSgvLC9nLCAnJylcclxuICAgICAgICAucmVwbGFjZSgvXFxzKy9nLCAnICcpXHJcbiAgICAgICAgLnJlcGxhY2UoL1tcXHUyMDBCLVxcdTIwMERcXHVGRUZGXS9nLCAnJylcclxuICAgICAgICAudHJpbSgpO1xyXG5cclxuICAgIHRoaXMuc2VhcmNoVGV4dCA9IHRleHQ7XHJcbiAgICBjb25zdCBzZWFyY2ggPSBub3JtYWxpemUodGhpcy5zZWFyY2hUZXh0KTtcclxuXHJcbiAgICBpZiAoc2VhcmNoKSB7XHJcbiAgICAgIHRoaXMucm93RGF0YSA9IHRoaXMuYWNjR2xEZXRhaWxzRW5xdWlyeVJlcG9ydE1vZGVsLmpvdXJuYWxWb3VjaGVyRW50cmllcy5maWx0ZXIoKGl0ZW0pID0+XHJcbiAgICAgICAgT2JqZWN0LnZhbHVlcyhpdGVtKS5zb21lKCh2YWx1ZSkgPT4gbm9ybWFsaXplKHZhbHVlKS5pbmNsdWRlcyhzZWFyY2gpKVxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5yb3dEYXRhID0gdGhpcy5hY2NHbERldGFpbHNFbnF1aXJ5UmVwb3J0TW9kZWwuam91cm5hbFZvdWNoZXJFbnRyaWVzO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlRXhwb3J0KG9wdGlvbjogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdGVkRXhwb3J0T3B0aW9uID0gb3B0aW9uO1xyXG4gICAgc3dpdGNoICh0aGlzLnNlbGVjdGVkRXhwb3J0T3B0aW9uKSB7XHJcbiAgICAgIGNhc2UgJ2V4Y2VsJzpcclxuICAgICAgICB0aGlzLmV4cG9ydFRvRXhjZWwoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAncGRmJzpcclxuICAgICAgICB0aGlzLmV4cG9ydFRvUGRmKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2Nzdic6XHJcbiAgICAgICAgdGhpcy5leHBvcnRUb0NzdigpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGFsZXJ0KCdQbGVhc2Ugc2VsZWN0IGFuIGV4cG9ydCBmb3JtYXQuJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBleHBvcnRUb1BkZigpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmICghdGhpcy5hY2NHbERldGFpbHNFbnF1aXJ5UmVwb3J0TW9kZWwuam91cm5hbFZvdWNoZXJFbnRyaWVzPy5sZW5ndGgpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCB0aXRsZSA9IGAke3RoaXMuY29tcGFueU5hbWV9IC0gR2VuZXJhbCBMZWRnZXIgQWNjb3VudCBEZXRhaWxzIEVucXVpcnkgUmVwb3J0YDtcclxuICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5leHBvcnRTZXJ2aWNlLmdlbmVyYXRlUmVwb3J0TWV0YWRhdGEoW1xyXG4gICAgICBbJ1JlcG9ydCBVc2VyIDogJywgdGhpcy5yZXBvcnRVc2VyXSxcclxuICAgICAgWydSZXBvcnQgVGltZSA6ICcsIHRoaXMucmVwb3J0VGltZV0sXHJcbiAgICAgIC8vIFsnU2VhcmNoIENyaXRlcmlhJywgJyAtICddLFxyXG4gICAgICAvLyBbYCR7dGhpcy5kYXRlVHlwZSA9PSAnVkQnID8gJ1ZhbHVlIERhdGUnIDogJ1Bvc3RpbmcgRGF0ZSd9OmAsIHRoaXMuY3VycmVudFJlcG9ydFZhbHVlT3JQb3N0RGF0ZV0sXHJcbiAgICBdKTtcclxuICAgIC8vIC0tLSBzZWFyY2ggY3JpdGVyaWEgLS0tXHJcbiAgICBjb25zdCBzZWFyY2hDcml0ZXJpYTogW3N0cmluZywgc3RyaW5nXVtdID0gW1xyXG4gICAgICBbJ0RhdGUgVHlwZTonLCBgJHt0aGlzLmRhdGVUeXBlID09ICdWRCcgPyAnVmFsdWUgRGF0ZScgOiAnUG9zdGluZyBEYXRlJ31gXSxcclxuICAgICAgWydEYXRlOicsIHRoaXMuY3VycmVudFJlcG9ydFZhbHVlT3JQb3N0RGF0ZV0sXHJcbiAgICBdO1xyXG5cclxuICAgIGNvbnN0IHsgaGVhZGVycywgcm93cyB9ID0gdGhpcy5leHBvcnRTZXJ2aWNlLnByZXBhcmVFeHBvcnRUYWJsZSh0aGlzLmFjY0dsRGV0YWlsc0VucXVpcnlSZXBvcnRNb2RlbC5qb3VybmFsVm91Y2hlckVudHJpZXMsIHRoaXMuY29sdW1uRGVmcywge1xyXG4gICAgICBjdXJyZW5jeUZpZWxkczogWydsb2NhbENyZWRpdCcsICdmb3JleENyZWRpdCcsICdsb2NhbERlYml0JywgJ2ZvcmV4RGViaXQnXSxcclxuICAgIH0pO1xyXG5cclxuICAgIGF3YWl0IHRoaXMuZXhwb3J0U2VydmljZS5leHBvcnRUb1BkZlVuaXZlcnNhbCh0aXRsZSwgbWV0YWRhdGEsIHNlYXJjaENyaXRlcmlhLCBoZWFkZXJzLCByb3dzLCAnQUNDLUdMLURldGFpbHMtRW5xdWlyeS1SZXBvcnQucGRmJyk7XHJcbiAgfVxyXG5cclxuICBleHBvcnRUb0V4Y2VsKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmFjY0dsRGV0YWlsc0VucXVpcnlSZXBvcnRNb2RlbC5qb3VybmFsVm91Y2hlckVudHJpZXM/Lmxlbmd0aCkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IHRpdGxlID0gYCR7dGhpcy5jb21wYW55TmFtZX0gLSBHZW5lcmFsIExlZGdlciBBY2NvdW50IERldGFpbHMgRW5xdWlyeSBSZXBvcnRgO1xyXG4gICAgY29uc3QgbWV0YWRhdGEgPSB0aGlzLmV4cG9ydFNlcnZpY2UuZ2VuZXJhdGVSZXBvcnRNZXRhZGF0YShbXHJcbiAgICAgIFsnUmVwb3J0IFVzZXInLCB0aGlzLnJlcG9ydFVzZXJdLFxyXG4gICAgICBbJ1JlcG9ydCBUaW1lJywgdGhpcy5yZXBvcnRUaW1lXSxcclxuICAgICAgLy8gWydTZWFyY2ggQ3JpdGVyaWEnLCAnIC0gJ10sXHJcbiAgICAgIC8vIFtgJHt0aGlzLmRhdGVUeXBlID09ICdWRCcgPyAnVmFsdWUgRGF0ZScgOiAnUG9zdGluZyBEYXRlJ31gLCB0aGlzLmN1cnJlbnRSZXBvcnRWYWx1ZU9yUG9zdERhdGVdLFxyXG4gICAgXSk7XHJcbiAgICAvLyAtLS0gc2VhcmNoIGNyaXRlcmlhIC0tLVxyXG4gICAgY29uc3Qgc2VhcmNoQ3JpdGVyaWE6IFtzdHJpbmcsIHN0cmluZ11bXSA9IFtcclxuICAgICAgWydEYXRlIFR5cGU6JywgYCR7dGhpcy5kYXRlVHlwZSA9PSAnVkQnID8gJ1ZhbHVlIERhdGUnIDogJ1Bvc3RpbmcgRGF0ZSd9YF0sXHJcbiAgICAgIFsnRGF0ZTonLCB0aGlzLmN1cnJlbnRSZXBvcnRWYWx1ZU9yUG9zdERhdGVdLFxyXG4gICAgXTtcclxuXHJcbiAgICBjb25zdCB7IGhlYWRlcnMsIHJvd3MgfSA9IHRoaXMuZXhwb3J0U2VydmljZS5wcmVwYXJlRXhwb3J0VGFibGUodGhpcy5hY2NHbERldGFpbHNFbnF1aXJ5UmVwb3J0TW9kZWwuam91cm5hbFZvdWNoZXJFbnRyaWVzLCB0aGlzLmNvbHVtbkRlZnMsIHtcclxuICAgICAgY3VycmVuY3lGaWVsZHM6IFsnbG9jYWxDcmVkaXQnLCAnZm9yZXhDcmVkaXQnLCAnbG9jYWxEZWJpdCcsICdmb3JleERlYml0J10sXHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmV4cG9ydFNlcnZpY2UuZXhwb3J0VG9FeGNlbFVuaXZlcnNhbCh0aXRsZSwgbWV0YWRhdGEsIHNlYXJjaENyaXRlcmlhLCBoZWFkZXJzLCByb3dzLCAnQUNDLUdMLURldGFpbHMtRW5xdWlyeS1SZXBvcnQueGxzeCcpO1xyXG4gIH1cclxuXHJcbiAgZXhwb3J0VG9Dc3YoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuYWNjR2xEZXRhaWxzRW5xdWlyeVJlcG9ydE1vZGVsLmpvdXJuYWxWb3VjaGVyRW50cmllcz8ubGVuZ3RoKSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgdGl0bGUgPSBgJHt0aGlzLmNvbXBhbnlOYW1lfSAtIEdlbmVyYWwgTGVkZ2VyIEFjY291bnQgRGV0YWlscyBFbnF1aXJ5IFJlcG9ydGA7XHJcbiAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuZXhwb3J0U2VydmljZS5nZW5lcmF0ZVJlcG9ydE1ldGFkYXRhKFtcclxuICAgICAgWydSZXBvcnQgVXNlcicsIHRoaXMucmVwb3J0VXNlcl0sXHJcbiAgICAgIFsnUmVwb3J0IFRpbWUnLCB0aGlzLnJlcG9ydFRpbWVdLFxyXG4gICAgICBbJ1NlYXJjaCBDcml0ZXJpYScsICctICddLFxyXG4gICAgICBbYCR7dGhpcy5kYXRlVHlwZSA9PSAnVkQnID8gJ1ZhbHVlIERhdGUnIDogJ1Bvc3RpbmcgRGF0ZSd9YCwgdGhpcy5jdXJyZW50UmVwb3J0VmFsdWVPclBvc3REYXRlXSxcclxuICAgIF0pO1xyXG4gICAgLy8gLS0tIHNlYXJjaCBjcml0ZXJpYSAtLS1cclxuICAgIGNvbnN0IHNlYXJjaENyaXRlcmlhOiBbc3RyaW5nLCBzdHJpbmddW10gPSBbXHJcbiAgICAgIFsnRGF0ZSBUeXBlOicsIGAke3RoaXMuZGF0ZVR5cGUgPT0gJ1ZEJyA/ICdWYWx1ZSBEYXRlJyA6ICdQb3N0aW5nIERhdGUnfWBdLFxyXG4gICAgICBbJ0RhdGU6JywgdGhpcy5jdXJyZW50UmVwb3J0VmFsdWVPclBvc3REYXRlXSxcclxuICAgIF07XHJcblxyXG4gICAgY29uc3QgeyBoZWFkZXJzLCByb3dzIH0gPSB0aGlzLmV4cG9ydFNlcnZpY2UucHJlcGFyZUV4cG9ydFRhYmxlKHRoaXMuYWNjR2xEZXRhaWxzRW5xdWlyeVJlcG9ydE1vZGVsLmpvdXJuYWxWb3VjaGVyRW50cmllcywgdGhpcy5jb2x1bW5EZWZzLCB7XHJcbiAgICAgIGN1cnJlbmN5RmllbGRzOiBbJ2xvY2FsQ3JlZGl0JywgJ2ZvcmV4Q3JlZGl0JywgJ2xvY2FsRGViaXQnLCAnZm9yZXhEZWJpdCddLFxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5leHBvcnRTZXJ2aWNlLmV4cG9ydFRvQ3N2VW5pdmVyc2FsKHRpdGxlLCBtZXRhZGF0YSxzZWFyY2hDcml0ZXJpYSwgaGVhZGVycywgcm93cywgJ0FDQy1HTC1EZXRhaWxzLUVucXVpcnktUmVwb3J0LmNzdicpO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlU2VhcmNoKGNyaXRlcmlhOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuZGF0ZVR5cGVGaWx0ZXIgPSBjcml0ZXJpYS5zZWxlY3RlZERhdGVUeXBlO1xyXG4gICAgdGhpcy5kYXRlID0gY3JpdGVyaWEuc2VsZWN0ZWREYXRlLnNwbGl0KCdUJylbMF07XHJcbiAgICB0aGlzLmdldEFjY0dMRGV0YWlsc1JlcG9ydCgpO1xyXG4gIH1cclxufVxyXG4iLCI8bGliLXNlYXJjaC1maWx0ZXIgW1JlcG9ydE5hbWVdPVwiUmVwb3J0TmFtZVwiIChzZWFyY2hDbGlja2VkKT1cImhhbmRsZVNlYXJjaCgkZXZlbnQpXCI+XHJcbjwvbGliLXNlYXJjaC1maWx0ZXI+XHJcbjxhcHAtbG9hZGVyIGNsYXNzPVwiXCIgKm5nSWY9XCJsb2FkaW5nU3RhdGUgPT0gQ29tcG9uZW50TG9hZGluZ1N0YXRlLkxvYWRpbmdcIj48L2FwcC1sb2FkZXI+XHJcbjxkaXYgY2xhc3M9XCJtYWluLWNvbnRhaW5lclwiPlxyXG4gIDxkaXYgY2xhc3M9XCJyZXBvcnQtY29udGFpbmVyXCJcclxuICAgICpuZ0lmPVwiYWNjR2xEZXRhaWxzRW5xdWlyeVJlcG9ydE1vZGVsICE9IHVuZGVmaW5lZCAmJiBkYXRhUmVhZHkgJiYgYWNjR2xEZXRhaWxzRW5xdWlyeVJlcG9ydE1vZGVsPy5qb3VybmFsVm91Y2hlckVudHJpZXM/Lmxlbmd0aCE9MFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1haW4tcmVwb3J0XCIgKm5nSWY9XCJhY2NHbERldGFpbHNFbnF1aXJ5UmVwb3J0TW9kZWwgIT0gdW5kZWZpbmVkICYmIGRhdGFSZWFkeVwiPlxyXG4gICAgICA8bGliLW1ldGFkYXRhIFtyZXBvcnROYW1lXT1cIlJlcG9ydE5hbWVcIiBbc2hvd21ldGFEYXRhT25lXT1cInRydWVcIiBbc2hvd21ldGFEYXRhVHdvXT1cInRydWVcIlxyXG4gICAgICAgIFttZXRhRGF0YU9uZV09XCJtZXRhRGF0YU9uZVwiIFttZXRhRGF0YVR3b109XCJtZXRhRGF0YVR3b1wiIChleHBvcnRFdmVudCk9XCJoYW5kbGVFeHBvcnQoJGV2ZW50KVwiXHJcbiAgICAgICAgKHNlYXJjaEV2ZW50KT1cIm9uU2VhcmNoKCRldmVudClcIj48L2xpYi1tZXRhZGF0YT5cclxuICAgICAgPGRpdiBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZTtcIj5cclxuICAgICAgICA8bGliLXBhZ2Utc2l6ZS1zZWxlY3RvciBbdG90YWxFbnRyaWVzXT1cImFjY0dsRGV0YWlsc0VucXVpcnlSZXBvcnRNb2RlbD8uam91cm5hbFZvdWNoZXJFbnRyaWVzPy5sZW5ndGhcIlxyXG4gICAgICAgICAgW2RlZmF1bHRTaXplXT1cIicxNSdcIiBbZ3JpZEFwaV09XCJncmlkQXBpXCI+XHJcbiAgICAgICAgICA+PC9saWItcGFnZS1zaXplLXNlbGVjdG9yPlxyXG4gICAgICAgIDxhZy1ncmlkLWFuZ3VsYXIgY2xhc3M9XCJhZy10aGVtZS1hbHBpbmUgdHJhbnNhY3Rpb24tZ3JpZFwiIHN0eWxlPVwid2lkdGg6IDEwMCU7aGVpZ2h0OiAzNzVweDtcIlxyXG4gICAgICAgICAgW2NvbHVtbkRlZnNdPVwiY29sdW1uRGVmc1wiIFtkZWZhdWx0Q29sRGVmXT1cImRlZmF1bHRDb2xEZWZcIiBbcm93RGF0YV09XCJyb3dEYXRhXCIgW3Jvd0hlaWdodF09XCIyMFwiXHJcbiAgICAgICAgICBbaGVhZGVySGVpZ2h0XT1cIjIyXCIgW3BhZ2luYXRpb25dPVwidHJ1ZVwiIFtwYWdpbmF0aW9uUGFnZVNpemVdPVwicGFnZVNpemVcIiAoZ3JpZFJlYWR5KT1cIm9uR3JpZFJlYWR5KCRldmVudClcIlxyXG4gICAgICAgICAgKGdyaWRTaXplQ2hhbmdlZCk9XCJvbkdyaWRTaXplQ2hhbmdlZCgkZXZlbnQpXCI+XHJcbiAgICAgICAgPC9hZy1ncmlkLWFuZ3VsYXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJhbGVydCBhbGVydC13YXJuaW5nIG10LTNcIiAqbmdJZj1cImFjY0dsRGV0YWlsc0VucXVpcnlSZXBvcnRNb2RlbD8uam91cm5hbFZvdWNoZXJFbnRyaWVzPy5sZW5ndGg9PTBcIj5cclxuICAgIE5vIERhdGEgZm91bmQgbWF0Y2hpbmcgeW91ciBzZWFyY2ggY3JpdGVyaWEuXHJcbiAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
|