@hmcts/ccpay-web-component 5.0.7-beta18 → 5.0.7-beta20
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/bundles/hmcts-ccpay-web-component.umd.js +50 -258
- package/bundles/hmcts-ccpay-web-component.umd.js.map +1 -1
- package/bundles/hmcts-ccpay-web-component.umd.min.js +1 -1
- package/bundles/hmcts-ccpay-web-component.umd.min.js.map +1 -1
- package/esm2015/lib/components/add-remission/add-remission.component.js +7 -29
- package/esm2015/lib/components/allocate-payments/allocate-payments.component.js +16 -16
- package/esm2015/lib/components/case-transactions/case-transactions.component.js +2 -10
- package/esm2015/lib/components/fee-summary/fee-summary.component.js +5 -43
- package/esm2015/lib/components/payment-view/payment-view.component.js +3 -9
- package/esm2015/lib/components/refund-status/refund-status.component.js +1 -7
- package/esm2015/lib/components/reports/reports.component.js +20 -120
- package/esm2015/lib/components/service-request/service-request.component.js +2 -8
- package/esm2015/lib/components/status-history/status-history.component.js +2 -2
- package/esm2015/lib/components/unprocessed-payments/unprocessed-payments.component.js +1 -17
- package/esm2015/lib/payment-lib.component.js +4 -19
- package/esm2015/lib/services/shared/error-handler.service.js +3 -7
- package/esm2015/lib/services/xl-file/xl-file.service.js +1 -29
- package/esm5/lib/components/add-remission/add-remission.component.js +7 -29
- package/esm5/lib/components/allocate-payments/allocate-payments.component.js +16 -16
- package/esm5/lib/components/case-transactions/case-transactions.component.js +2 -10
- package/esm5/lib/components/fee-summary/fee-summary.component.js +5 -43
- package/esm5/lib/components/payment-view/payment-view.component.js +3 -9
- package/esm5/lib/components/refund-status/refund-status.component.js +1 -7
- package/esm5/lib/components/reports/reports.component.js +20 -126
- package/esm5/lib/components/service-request/service-request.component.js +2 -8
- package/esm5/lib/components/status-history/status-history.component.js +2 -2
- package/esm5/lib/components/unprocessed-payments/unprocessed-payments.component.js +1 -17
- package/esm5/lib/payment-lib.component.js +2 -12
- package/esm5/lib/services/shared/error-handler.service.js +3 -11
- package/esm5/lib/services/xl-file/xl-file.service.js +1 -34
- package/fesm2015/hmcts-ccpay-web-component.js +53 -252
- package/fesm2015/hmcts-ccpay-web-component.js.map +1 -1
- package/fesm5/hmcts-ccpay-web-component.js +51 -260
- package/fesm5/hmcts-ccpay-web-component.js.map +1 -1
- package/hmcts-ccpay-web-component.metadata.json +1 -1
- package/lib/components/add-remission/add-remission.component.d.ts +0 -2
- package/lib/components/case-transactions/case-transactions.component.d.ts +0 -2
- package/lib/components/fee-summary/fee-summary.component.d.ts +0 -2
- package/lib/components/payment-view/payment-view.component.d.ts +0 -2
- package/lib/components/refund-status/refund-status.component.d.ts +0 -2
- package/lib/components/reports/reports.component.d.ts +0 -6
- package/lib/components/service-request/service-request.component.d.ts +0 -2
- package/lib/components/unprocessed-payments/unprocessed-payments.component.d.ts +0 -4
- package/lib/payment-lib.component.d.ts +0 -4
- package/lib/services/shared/error-handler.service.d.ts +1 -1
- package/lib/services/xl-file/xl-file.service.d.ts +0 -1
- package/package.json +1 -1
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* @fileoverview added by tsickle
|
|
3
3
|
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
4
4
|
*/
|
|
5
|
-
import { Component
|
|
5
|
+
import { Component } from '@angular/core';
|
|
6
6
|
import { FormBuilder, FormControl } from '@angular/forms';
|
|
7
7
|
import { formatDate } from "@angular/common";
|
|
8
8
|
import { BulkScaningPaymentService } from '../../services/bulk-scaning-payment/bulk-scaning-payment.service';
|
|
@@ -23,13 +23,10 @@ export class ReportsComponent {
|
|
|
23
23
|
this.formBuilder = formBuilder;
|
|
24
24
|
this.bulkScaningPaymentService = bulkScaningPaymentService;
|
|
25
25
|
this.paymentViewService = paymentViewService;
|
|
26
|
-
this.fmt = 'dd/MM/yyyy';
|
|
27
|
-
this.loc = 'en-US';
|
|
28
26
|
this.isDownLoadButtondisabled = false;
|
|
29
27
|
this.isStartDateLesthanEndDate = false;
|
|
30
|
-
this.isDateBetwnMonth = false;
|
|
31
28
|
this.isDateRangeBetnWeek = false;
|
|
32
|
-
this.errorMessage = this.errorHandlerService.getServerErrorMessage(false
|
|
29
|
+
this.errorMessage = this.errorHandlerService.getServerErrorMessage(false);
|
|
33
30
|
this.paymentGroups = [];
|
|
34
31
|
}
|
|
35
32
|
/**
|
|
@@ -61,26 +58,16 @@ export class ReportsComponent {
|
|
|
61
58
|
const selectedEndDate = this.tranformDate(this.reportsForm.get('endDate').value);
|
|
62
59
|
/** @type {?} */
|
|
63
60
|
const isDateRangeMoreThanWeek = ((/** @type {?} */ (new Date(selectedStartDate))) - (/** @type {?} */ (new Date(selectedEndDate)))) / (1000 * 3600 * -24) > 7;
|
|
64
|
-
/** @type {?} */
|
|
65
|
-
const isDateRangeMoreThanMonth = ((/** @type {?} */ (new Date(selectedStartDate))) - (/** @type {?} */ (new Date(selectedEndDate)))) / (1000 * 3600 * -24) > 30;
|
|
66
61
|
if (new Date(selectedStartDate) > new Date(selectedEndDate) && selectedEndDate !== '') {
|
|
67
62
|
this.reportsForm.get('startDate').setValue('');
|
|
68
63
|
this.isDateRangeBetnWeek = false;
|
|
69
|
-
this.isDateBetwnMonth = false;
|
|
70
64
|
this.isStartDateLesthanEndDate = true;
|
|
71
65
|
}
|
|
72
66
|
else if (reportName && reportName === 'SURPLUS_AND_SHORTFALL' && isDateRangeMoreThanWeek) {
|
|
73
67
|
this.isDateRangeBetnWeek = true;
|
|
74
|
-
this.isDateBetwnMonth = false;
|
|
75
|
-
this.isStartDateLesthanEndDate = false;
|
|
76
|
-
}
|
|
77
|
-
else if (reportName && reportName === 'PAYMENT_FAILURE_EVENT' && isDateRangeMoreThanMonth) {
|
|
78
|
-
this.isDateRangeBetnWeek = false;
|
|
79
|
-
this.isDateBetwnMonth = true;
|
|
80
68
|
this.isStartDateLesthanEndDate = false;
|
|
81
69
|
}
|
|
82
70
|
else {
|
|
83
|
-
this.isDateBetwnMonth = false;
|
|
84
71
|
this.isDateRangeBetnWeek = false;
|
|
85
72
|
this.isStartDateLesthanEndDate = false;
|
|
86
73
|
}
|
|
@@ -120,7 +107,7 @@ export class ReportsComponent {
|
|
|
120
107
|
* @return {?}
|
|
121
108
|
*/
|
|
122
109
|
response => {
|
|
123
|
-
this.errorMessage = this.errorHandlerService.getServerErrorMessage(false
|
|
110
|
+
this.errorMessage = this.errorHandlerService.getServerErrorMessage(false);
|
|
124
111
|
/** @type {?} */
|
|
125
112
|
const result = JSON.parse(response);
|
|
126
113
|
/** @type {?} */
|
|
@@ -161,64 +148,15 @@ export class ReportsComponent {
|
|
|
161
148
|
*/
|
|
162
149
|
(error) => {
|
|
163
150
|
this.isDownLoadButtondisabled = false;
|
|
164
|
-
this.errorMessage = this.errorHandlerService.getServerErrorMessage(true
|
|
165
|
-
}));
|
|
166
|
-
}
|
|
167
|
-
else if (selectedReportName === 'PAYMENT_FAILURE_EVENT') {
|
|
168
|
-
this.paymentViewService.downloadFailureReport(selectedStartDate, selectedEndDate).subscribe((/**
|
|
169
|
-
* @param {?} response
|
|
170
|
-
* @return {?}
|
|
171
|
-
*/
|
|
172
|
-
response => {
|
|
173
|
-
this.errorMessage = this.errorHandlerService.getServerErrorMessage(false, false, '');
|
|
174
|
-
/** @type {?} */
|
|
175
|
-
const result = { data: JSON.parse(response)['payment_failure_report_list'] };
|
|
176
|
-
/** @type {?} */
|
|
177
|
-
let res = { data: this.applyDateFormat(result) };
|
|
178
|
-
if (result['data'].length > 0) {
|
|
179
|
-
for (var i = 0; i < res['data'].length; i++) {
|
|
180
|
-
if (res['data'][i]["disputed_amount"] !== undefined) {
|
|
181
|
-
res['data'][i]['disputed_amount'] = this.convertToFloatValue(res['data'][i]["disputed_amount"]);
|
|
182
|
-
}
|
|
183
|
-
if (res['data'][i]["representment_status"] !== undefined) {
|
|
184
|
-
res['data'][i]['representment_status'] = res['data'][i]["representment_status"].toLowerCase() === 'yes' ? 'Success' : 'Failure';
|
|
185
|
-
}
|
|
186
|
-
if (res['data'][i]['representment_status'] === undefined) {
|
|
187
|
-
res['data'][i]['representment_status'] = 'No representment received';
|
|
188
|
-
}
|
|
189
|
-
if (res['data'][i]['representment_date'] === undefined) {
|
|
190
|
-
res['data'][i]['representment_date'] = 'N/A';
|
|
191
|
-
}
|
|
192
|
-
if (res['data'][i]['refund_reference'] === undefined) {
|
|
193
|
-
res['data'][i]['refund_reference'] = 'No refund available';
|
|
194
|
-
}
|
|
195
|
-
if (res['data'][i]['refund_amount'] === undefined) {
|
|
196
|
-
res['data'][i]['refund_amount'] = 'N/A';
|
|
197
|
-
}
|
|
198
|
-
if (res['data'][i]['refund_date'] === undefined) {
|
|
199
|
-
res['data'][i]['refund_date'] = 'N/A';
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
this.isDownLoadButtondisabled = false;
|
|
204
|
-
this.xlFileService.exportAsExcelFile(res['data'], this.getFileName(this.reportsForm.get('selectedreport').value, selectedStartDate, selectedEndDate));
|
|
205
|
-
}), (/**
|
|
206
|
-
* @param {?} error
|
|
207
|
-
* @return {?}
|
|
208
|
-
*/
|
|
209
|
-
(error) => {
|
|
210
|
-
this.isDownLoadButtondisabled = false;
|
|
211
|
-
/** @type {?} */
|
|
212
|
-
const errorContent = error.replace(/[^a-zA-Z ]/g, '').trim();
|
|
213
|
-
/** @type {?} */
|
|
214
|
-
const statusCode = error.replace(/[^a-zA-Z0-9 ]/g, '').trim().split(' ')[0];
|
|
215
|
-
if (statusCode === '404') {
|
|
216
|
-
this.errorMessage = this.errorHandlerService.getServerErrorMessage(true, true, errorContent);
|
|
217
|
-
}
|
|
218
|
-
else {
|
|
219
|
-
this.errorMessage = this.errorHandlerService.getServerErrorMessage(true, false, '');
|
|
220
|
-
}
|
|
151
|
+
this.errorMessage = this.errorHandlerService.getServerErrorMessage(true);
|
|
221
152
|
}));
|
|
153
|
+
// }else if(selectedReportName === 'PAYMENT_FAILURE_EVENT') {
|
|
154
|
+
// this.paymentViewService.downloadFailureReport(selectedStartDate,selectedEndDate).subscribe(
|
|
155
|
+
// response => {
|
|
156
|
+
// },
|
|
157
|
+
// (error: any) => {
|
|
158
|
+
// })
|
|
159
|
+
// }
|
|
222
160
|
}
|
|
223
161
|
else {
|
|
224
162
|
this.bulkScaningPaymentService.downloadSelectedReport(selectedReportName, selectedStartDate, selectedEndDate).subscribe((/**
|
|
@@ -226,7 +164,7 @@ export class ReportsComponent {
|
|
|
226
164
|
* @return {?}
|
|
227
165
|
*/
|
|
228
166
|
response => {
|
|
229
|
-
this.errorMessage = this.errorHandlerService.getServerErrorMessage(false
|
|
167
|
+
this.errorMessage = this.errorHandlerService.getServerErrorMessage(false);
|
|
230
168
|
/** @type {?} */
|
|
231
169
|
const result = JSON.parse(response);
|
|
232
170
|
/** @type {?} */
|
|
@@ -256,7 +194,7 @@ export class ReportsComponent {
|
|
|
256
194
|
*/
|
|
257
195
|
(error) => {
|
|
258
196
|
this.isDownLoadButtondisabled = false;
|
|
259
|
-
this.errorMessage = this.errorHandlerService.getServerErrorMessage(true
|
|
197
|
+
this.errorMessage = this.errorHandlerService.getServerErrorMessage(true);
|
|
260
198
|
}));
|
|
261
199
|
}
|
|
262
200
|
}
|
|
@@ -344,46 +282,21 @@ export class ReportsComponent {
|
|
|
344
282
|
* @return {?}
|
|
345
283
|
*/
|
|
346
284
|
applyDateFormat(res) {
|
|
285
|
+
/** @type {?} */
|
|
286
|
+
const fmt = 'dd/MM/yyyy';
|
|
287
|
+
/** @type {?} */
|
|
288
|
+
const loc = 'en-US';
|
|
347
289
|
return res['data'].map((/**
|
|
348
290
|
* @param {?} value
|
|
349
291
|
* @return {?}
|
|
350
292
|
*/
|
|
351
293
|
value => {
|
|
352
294
|
if (value['date_banked']) {
|
|
353
|
-
value['date_banked'] = formatDate(value['date_banked'],
|
|
354
|
-
}
|
|
355
|
-
if (value['event_date'] && value['event_date'].indexOf(',') === -1) {
|
|
356
|
-
value['event_date'] = formatDate(value['event_date'], this.fmt, this.loc);
|
|
357
|
-
}
|
|
358
|
-
else if (value['event_date'] && value['event_date'].indexOf(',') !== -1) {
|
|
359
|
-
value['event_date'] = this.multiDateFormater(value['event_date']);
|
|
360
|
-
}
|
|
361
|
-
if (value['representment_date'] && value['representment_date'].indexOf(',') === -1) {
|
|
362
|
-
value['representment_date'] = formatDate(value['representment_date'], this.fmt, this.loc);
|
|
363
|
-
}
|
|
364
|
-
else if (value['representment_date'] && value['representment_date'].indexOf(',') !== -1) {
|
|
365
|
-
value['representment_date'] = this.multiDateFormater(value['representment_date']);
|
|
366
|
-
}
|
|
367
|
-
if (value['refund_date'] && value['refund_date'].indexOf(',') === -1) {
|
|
368
|
-
value['refund_date'] = formatDate(value['refund_date'], this.fmt, this.loc);
|
|
369
|
-
}
|
|
370
|
-
else if (value['refund_date'] && value['refund_date'].indexOf(',') !== -1) {
|
|
371
|
-
value['refund_date'] = this.multiDateFormater(value['refund_date']);
|
|
295
|
+
value['date_banked'] = formatDate(value['date_banked'], fmt, loc);
|
|
372
296
|
}
|
|
373
297
|
return value;
|
|
374
298
|
}));
|
|
375
299
|
}
|
|
376
|
-
/**
|
|
377
|
-
* @param {?} dateStr
|
|
378
|
-
* @return {?}
|
|
379
|
-
*/
|
|
380
|
-
multiDateFormater(dateStr) {
|
|
381
|
-
return dateStr.split(',').map((/**
|
|
382
|
-
* @param {?} date
|
|
383
|
-
* @return {?}
|
|
384
|
-
*/
|
|
385
|
-
(date) => formatDate(date, this.fmt, this.loc))).join(',');
|
|
386
|
-
}
|
|
387
300
|
/**
|
|
388
301
|
* @param {?} amt
|
|
389
302
|
* @return {?}
|
|
@@ -395,7 +308,7 @@ export class ReportsComponent {
|
|
|
395
308
|
ReportsComponent.decorators = [
|
|
396
309
|
{ type: Component, args: [{
|
|
397
310
|
selector: 'ccpay-reports',
|
|
398
|
-
template: "<div class=\"header\">\n <input #myInput type='hidden' id='iFrameDrivenImageValue' value='REPORTS'>\n <ccpay-error-banner *ngIf=\"errorMessage.showError\" [errorMessage]=\"errorMessage\"></ccpay-error-banner>\n <legend class=\"govuk-fieldset__legend--xl\">\n <h1 class=\"govuk-fieldset__heading\"> Choose the report type and date range</h1>\n </legend>\n</div>\n<form [formGroup]=\"reportsForm\">\n <div class=\"govuk-form-group\">\n <div class=\"govuk-radios govuk-radios--conditional\" data-module=\"govuk-radios\">\n <div class=\"govuk-radios__item\">\n <input \n required\n id=\"DataLoss\"\n class=\"govuk-radios__input\"\n formControlName=\"selectedreport\"\n (click)=\"validateDates('DATA_LOSS')\"\n name=\"selectedreport\"\n type=\"radio\"\n value=\"DATA_LOSS\" \n data-aria-controls=\"DataLoss\"/>\n <label class=\"govuk-label govuk-radios__label govuk-label--m\" for=\"DataLoss\">Data loss</label>\n <span class=\"form-hint\">Missing transactions where data has been received from only either of Exela or Bulk scan</span>\n </div>\n\n <div class=\"govuk-radios__item\">\n <input \n id=\"UnprocessedTransactions\"\n class=\"govuk-radios__input\"\n formControlName=\"selectedreport\"\n (click)=\"validateDates('UNPROCESSED')\"\n name=\"selectedreport\"\n type=\"radio\"\n value=\"UNPROCESSED\" \n data-aria-controls=\"UnprocessedTransactions\"/>\n <label class=\"govuk-label govuk-radios__label govuk-label--m\" for=\"UnprocessedTransactions\">Unprocessed transactions</label>\n <span class=\"form-hint\">Transaction records that are still unprocessed by staff.</span>\n </div>\n\n <div class=\"govuk-radios__item\">\n <input \n id=\"ProcessedUnallocated\"\n class=\"govuk-radios__input\"\n formControlName=\"selectedreport\"\n name=\"selectedreport\"\n (click)=\"validateDates('PROCESSED_UNALLOCATED')\"\n type=\"radio\"\n value=\"PROCESSED_UNALLOCATED\" \n data-aria-controls=\"ProcessedUnallocated\"/>\n <label class=\"govuk-label govuk-radios__label govuk-label--m\" for=\"ProcessedUnallocated\">Processed unallocated</label>\n <span class=\"form-hint\">Payments that are marked as \u2018Unidentified\u2019 or \u2018Transferred\u2019 (Unsolicited requests)</span>\n </div>\n\n <div class=\"govuk-radios__item\">\n <input \n id=\"ShortfallsandSurplus\"\n class=\"govuk-radios__input\"\n formControlName=\"selectedreport\"\n name=\"selectedreport\"\n (click)=\"validateDates('SURPLUS_AND_SHORTFALL')\"\n type=\"radio\"\n value=\"SURPLUS_AND_SHORTFALL\" \n data-aria-controls=\"ShortfallsandSurplus\"/>\n <label class=\"govuk-label govuk-radios__label govuk-label--m\" for=\"ShortfallsandSurplus\">Under payment and Over payment</label>\n <span class=\"form-hint\">Requests where balances are marked as Under payment/Over payment further case management.\n E.g: Refund approval, Customer contact</span>\n </div>\n <div class=\"govuk-radios__item\"
|
|
311
|
+
template: "<div class=\"header\">\n <input #myInput type='hidden' id='iFrameDrivenImageValue' value='REPORTS'>\n <ccpay-error-banner *ngIf=\"errorMessage.showError\" [errorMessage]=\"errorMessage\"></ccpay-error-banner>\n <legend class=\"govuk-fieldset__legend--xl\">\n <h1 class=\"govuk-fieldset__heading\"> Choose the report type and date range</h1>\n </legend>\n</div>\n<form [formGroup]=\"reportsForm\">\n <div class=\"govuk-form-group\">\n <div class=\"govuk-radios govuk-radios--conditional\" data-module=\"govuk-radios\">\n <div class=\"govuk-radios__item\">\n <input \n required\n id=\"DataLoss\"\n class=\"govuk-radios__input\"\n formControlName=\"selectedreport\"\n (click)=\"validateDates('DATA_LOSS')\"\n name=\"selectedreport\"\n type=\"radio\"\n value=\"DATA_LOSS\" \n data-aria-controls=\"DataLoss\"/>\n <label class=\"govuk-label govuk-radios__label govuk-label--m\" for=\"DataLoss\">Data loss</label>\n <span class=\"form-hint\">Missing transactions where data has been received from only either of Exela or Bulk scan</span>\n </div>\n\n <div class=\"govuk-radios__item\">\n <input \n id=\"UnprocessedTransactions\"\n class=\"govuk-radios__input\"\n formControlName=\"selectedreport\"\n (click)=\"validateDates('UNPROCESSED')\"\n name=\"selectedreport\"\n type=\"radio\"\n value=\"UNPROCESSED\" \n data-aria-controls=\"UnprocessedTransactions\"/>\n <label class=\"govuk-label govuk-radios__label govuk-label--m\" for=\"UnprocessedTransactions\">Unprocessed transactions</label>\n <span class=\"form-hint\">Transaction records that are still unprocessed by staff.</span>\n </div>\n\n <div class=\"govuk-radios__item\">\n <input \n id=\"ProcessedUnallocated\"\n class=\"govuk-radios__input\"\n formControlName=\"selectedreport\"\n name=\"selectedreport\"\n (click)=\"validateDates('PROCESSED_UNALLOCATED')\"\n type=\"radio\"\n value=\"PROCESSED_UNALLOCATED\" \n data-aria-controls=\"ProcessedUnallocated\"/>\n <label class=\"govuk-label govuk-radios__label govuk-label--m\" for=\"ProcessedUnallocated\">Processed unallocated</label>\n <span class=\"form-hint\">Payments that are marked as \u2018Unidentified\u2019 or \u2018Transferred\u2019 (Unsolicited requests)</span>\n </div>\n\n <div class=\"govuk-radios__item\">\n <input \n id=\"ShortfallsandSurplus\"\n class=\"govuk-radios__input\"\n formControlName=\"selectedreport\"\n name=\"selectedreport\"\n (click)=\"validateDates('SURPLUS_AND_SHORTFALL')\"\n type=\"radio\"\n value=\"SURPLUS_AND_SHORTFALL\" \n data-aria-controls=\"ShortfallsandSurplus\"/>\n <label class=\"govuk-label govuk-radios__label govuk-label--m\" for=\"ShortfallsandSurplus\">Under payment and Over payment</label>\n <span class=\"form-hint\">Requests where balances are marked as Under payment/Over payment further case management.\n E.g: Refund approval, Customer contact</span>\n </div>\n <!-- <div class=\"govuk-radios__item\">\n <input \n id=\"PaymentFailureEvent\"\n class=\"govuk-radios__input\"\n formControlName=\"selectedreport\"\n name=\"selectedreport\"\n (click)=\"validateDates('PAYMENT_FAILURE_EVENT')\"\n type=\"radio\"\n value=\"PAYMENT_FAILURE_EVENT\" \n data-aria-controls=\"PaymentFailureEvent\"/>\n <label class=\"govuk-label govuk-radios__label govuk-label--m\" for=\"PaymentFailureEvent\">Payment failure event</label>\n <span class=\"form-hint\">Failed payment transaction details</span>\n </div> -->\n </div>\n </div>\n <div class=\"govuk-form-group\">\n <div class=\"datefrom\">\n <label class=\"govuk-label govuk-radios__label govuk-label--m\" for=\"date-from\">Date from</label>\n <input (change)=\"getSelectedFromDate()\" [max]=\"getToday()\" class=\"form-control\" id=\"date-from\" name=\"date-from\" type=\"date\" formControlName=\"startDate\" required/>\n </div>\n\n <div class=\"dateto\">\n <label class=\"govuk-label govuk-radios__label govuk-label--m\" for=\"date-to\">Date to</label>\n <input (change)=\"getSelectedFromDate()\" [max]=\"getToday()\" class=\"form-control\" id=\"date-to\" name=\"search\" type=\"date\" formControlName=\"endDate\" required/>\n </div>\n </div>\n <p class=\"inline-error-message\" *ngIf=\"isStartDateLesthanEndDate || isDateRangeBetnWeek\">\n <span *ngIf=\"isStartDateLesthanEndDate\">Please select 'Date From' less than or equal to 'Date To'</span>\n <span *ngIf=\"isDateRangeBetnWeek\"> Please select the date range between 7 days</span>\n </p>\n <div class=\"btnsubmit\">\n <button type=\"submit\" (click)=\"downloadReport()\" class=\"button\" [disabled]=\"!reportsForm.valid || isDownLoadButtondisabled || isStartDateLesthanEndDate || isDateRangeBetnWeek\">Download report</button>\n </div>\n </form>\n \n",
|
|
399
312
|
styles: [".govuk-radios__input:focus+.govuk-radios__label::before{border-width:4px;box-shadow:0 0 0 4px #ffaf00}.datefrom{width:50%;float:left}.dateto{width:50%;float:right}.govuk-label--m{font-size:large}.form-hint{padding-left:.7em}.header{margin-top:10px;margin-bottom:15px}.btnsubmit{margin-bottom:30px}.inline-error-message{color:#a71414;font-weight:700;margin-top:10px}"]
|
|
400
313
|
}] }
|
|
401
314
|
];
|
|
@@ -407,16 +320,7 @@ ReportsComponent.ctorParameters = () => [
|
|
|
407
320
|
{ type: BulkScaningPaymentService },
|
|
408
321
|
{ type: PaymentViewService }
|
|
409
322
|
];
|
|
410
|
-
ReportsComponent.propDecorators = {
|
|
411
|
-
ISPAYMENTSTATUSENABLED: [{ type: Input }]
|
|
412
|
-
};
|
|
413
323
|
if (false) {
|
|
414
|
-
/** @type {?} */
|
|
415
|
-
ReportsComponent.prototype.ISPAYMENTSTATUSENABLED;
|
|
416
|
-
/** @type {?} */
|
|
417
|
-
ReportsComponent.prototype.fmt;
|
|
418
|
-
/** @type {?} */
|
|
419
|
-
ReportsComponent.prototype.loc;
|
|
420
324
|
/** @type {?} */
|
|
421
325
|
ReportsComponent.prototype.reportsForm;
|
|
422
326
|
/** @type {?} */
|
|
@@ -424,16 +328,12 @@ if (false) {
|
|
|
424
328
|
/** @type {?} */
|
|
425
329
|
ReportsComponent.prototype.endDate;
|
|
426
330
|
/** @type {?} */
|
|
427
|
-
ReportsComponent.prototype.errorMeaagse;
|
|
428
|
-
/** @type {?} */
|
|
429
331
|
ReportsComponent.prototype.ccdCaseNumber;
|
|
430
332
|
/** @type {?} */
|
|
431
333
|
ReportsComponent.prototype.isDownLoadButtondisabled;
|
|
432
334
|
/** @type {?} */
|
|
433
335
|
ReportsComponent.prototype.isStartDateLesthanEndDate;
|
|
434
336
|
/** @type {?} */
|
|
435
|
-
ReportsComponent.prototype.isDateBetwnMonth;
|
|
436
|
-
/** @type {?} */
|
|
437
337
|
ReportsComponent.prototype.isDateRangeBetnWeek;
|
|
438
338
|
/** @type {?} */
|
|
439
339
|
ReportsComponent.prototype.errorMessage;
|
|
@@ -465,4 +365,4 @@ if (false) {
|
|
|
465
365
|
*/
|
|
466
366
|
ReportsComponent.prototype.paymentViewService;
|
|
467
367
|
}
|
|
468
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AaG1jdHMvY2NwYXktd2ViLWNvbXBvbmVudC8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL3JlcG9ydHMvcmVwb3J0cy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxXQUFXLEVBQWEsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTdDLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGtFQUFrRSxDQUFDO0FBQzdHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3RGLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx3Q0FBd0MsQ0FBQztBQVFyRSxNQUFNLE9BQU8sZ0JBQWdCOzs7Ozs7OztJQWdCM0IsWUFDVSxhQUE0QixFQUM1QixtQkFBd0MsRUFDeEMsV0FBd0IsRUFDeEIseUJBQW9ELEVBQ3BELGtCQUFzQztRQUp0QyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1Qix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLDhCQUF5QixHQUF6Qix5QkFBeUIsQ0FBMkI7UUFDcEQsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQW5CaEQsUUFBRyxHQUFHLFlBQVksQ0FBQztRQUNuQixRQUFHLEdBQUcsT0FBTyxDQUFDO1FBTWQsNkJBQXdCLEdBQVcsS0FBSyxDQUFDO1FBQ3pDLDhCQUF5QixHQUFZLEtBQUssQ0FBQztRQUMzQyxxQkFBZ0IsR0FBWSxLQUFLLENBQUM7UUFDbEMsd0JBQW1CLEdB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LENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ3pELENBQUM7OztZQWhTRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGVBQWU7Z0JBQ3pCLHVnTEFBdUM7O2FBRXhDOzs7O1lBUE8sYUFBYTtZQUZaLG1CQUFtQjtZQUpuQixXQUFXO1lBR1gseUJBQXlCO1lBRXpCLGtCQUFrQjs7O3FDQVV4QixLQUFLOzs7O0lBQU4sa0RBQXdDOztJQUN4QywrQkFBbUI7O0lBQ25CLCtCQUFjOztJQUNkLHVDQUF1Qjs7SUFDdkIscUNBQWtCOztJQUNsQixtQ0FBZ0I7O0lBQ2hCLHdDQUFxQjs7SUFDckIseUNBQXNCOztJQUN0QixvREFBeUM7O0lBQ3pDLHFEQUEyQzs7SUFDM0MsNENBQWtDOztJQUNsQywrQ0FBcUM7O0lBQ3JDLHdDQUFnRjs7SUFDaEYseUNBQW9DOzs7OztJQUdsQyx5Q0FBb0M7Ozs7O0lBQ3BDLCtDQUFnRDs7Ozs7SUFDaEQsdUNBQWdDOzs7OztJQUNoQyxxREFBNEQ7Ozs7O0lBQzVELDhDQUE4QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBmb3JtYXREYXRlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHtJUGF5bWVudEdyb3VwfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL0lQYXltZW50R3JvdXAnO1xuaW1wb3J0IHsgQnVsa1NjYW5pbmdQYXltZW50U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2J1bGstc2NhbmluZy1wYXltZW50L2J1bGstc2NhbmluZy1wYXltZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgRXJyb3JIYW5kbGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3NoYXJlZC9lcnJvci1oYW5kbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGF5bWVudFZpZXdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcGF5bWVudC12aWV3L3BheW1lbnQtdmlldy5zZXJ2aWNlJztcbmltcG9ydCB7WGxGaWxlU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMveGwtZmlsZS94bC1maWxlLnNlcnZpY2UnO1xuaW1wb3J0IHsgRmluZFZhbHVlU3Vic2NyaWJlciB9IGZyb20gJ3J4anMvaW50ZXJuYWwvb3BlcmF0b3JzL2ZpbmQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjY3BheS1yZXBvcnRzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JlcG9ydHMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9yZXBvcnRzLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgUmVwb3J0c0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIElTUEFZTUVOVFNUQVRVU0VOQUJMRUQ6IHN0cmluZztcbiAgZm10ID0gJ2RkL01NL3l5eXknO1xuICBsb2MgPSAnZW4tVVMnO1xuICByZXBvcnRzRm9ybTogRm9ybUdyb3VwO1xuICBzdGFydERhdGU6IHN0cmluZztcbiAgZW5kRGF0ZTogc3RyaW5nO1xuICBlcnJvck1lYWFnc2U6IHN0cmluZztcbiAgY2NkQ2FzZU51bWJlcjogc3RyaW5nO1xuICBpc0Rvd25Mb2FkQnV0dG9uZGlzYWJsZWQ6Qm9vbGVhbiA9IGZhbHNlO1xuICBpc1N0YXJ0RGF0ZUxlc3RoYW5FbmREYXRlOiBCb29sZWFuID0gZmFsc2U7XG4gIGlzRGF0ZUJldHduTW9udGg6IEJvb2xlYW4gPSBmYWxzZTtcbiAgaXNEYXRlUmFuZ2VCZXRuV2VlazogQm9vbGVhbiA9IGZhbHNlO1xuICBlcnJvck1lc3NhZ2UgPSB0aGlzLmVycm9ySGFuZGxlclNlcnZpY2UuZ2V0U2VydmVyRXJyb3JNZXNzYWdlKGZhbHNlLCBmYWxzZSwgJycpO1xuICBwYXltZW50R3JvdXBzOiBJUGF5bWVudEdyb3VwW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHhsRmlsZVNlcnZpY2U6IFhsRmlsZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBlcnJvckhhbmRsZXJTZXJ2aWNlOiBFcnJvckhhbmRsZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgYnVsa1NjYW5pbmdQYXltZW50U2VydmljZTogQnVsa1NjYW5pbmdQYXltZW50U2VydmljZSxcbiAgICBwcml2YXRlIHBheW1lbnRWaWV3U2VydmljZTogUGF5bWVudFZpZXdTZXJ2aWNlKSB7IH1cbiAgIFxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuZnJvbVZhbGlkYXRpb24oKTtcblxuICAgfVxuXG4gIGdldFRvZGF5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKS5zcGxpdCgnVCcpWzBdO1xuIH1cblxuIGdldFNlbGVjdGVkRnJvbURhdGUoKTogdm9pZCB7XG4gdGhpcy52YWxpZGF0ZURhdGVzKHRoaXMucmVwb3J0c0Zvcm0uZ2V0KCdzZWxlY3RlZHJlcG9ydCcpLnZhbHVlKTtcbiB9XG5cbiB2YWxpZGF0ZURhdGVzKHJlcG9ydE5hbWUpe1xuICBjb25zdCBzZWxlY3RlZFN0YXJ0RGF0ZSA9IHRoaXMudHJhbmZvcm1EYXRlKHRoaXMucmVwb3J0c0Zvcm0uZ2V0KCdzdGFydERhdGUnKS52YWx1ZSksXG4gICAgc2VsZWN0ZWRFbmREYXRlID0gdGhpcy50cmFuZm9ybURhdGUodGhpcy5yZXBvcnRzRm9ybS5nZXQoJ2VuZERhdGUnKS52YWx1ZSk7XG4gIGNvbnN0IGlzRGF0ZVJhbmdlTW9yZVRoYW5XZWVrID0gKDxhbnk+bmV3IERhdGUoc2VsZWN0ZWRTdGFydERhdGUpIC0gPGFueT5uZXcgRGF0ZShzZWxlY3RlZEVuZERhdGUpKS8oMTAwMCAqIDM2MDAgKiAtMjQpID4gNztcbiAgY29uc3QgaXNEYXRlUmFuZ2VNb3JlVGhhbk1vbnRoID0gKDxhbnk+bmV3IERhdGUoc2VsZWN0ZWRTdGFydERhdGUpIC0gPGFueT5uZXcgRGF0ZShzZWxlY3RlZEVuZERhdGUpKS8oMTAwMCAqIDM2MDAgKiAtMjQpID4gMzA7XG4gIGlmKG5ldyBEYXRlKHNlbGVjdGVkU3RhcnREYXRlKSA+IG5ldyBEYXRlKHNlbGVjdGVkRW5kRGF0ZSkgJiYgc2VsZWN0ZWRFbmREYXRlICE9PSAnJyl7XG4gICAgdGhpcy5yZXBvcnRzRm9ybS5nZXQoJ3N0YXJ0RGF0ZScpLnNldFZhbHVlKCcnKTtcbiAgICB0aGlzLmlzRGF0ZVJhbmdlQmV0bldlZWsgPSBmYWxzZTtcbiAgICB0aGlzLmlzRGF0ZUJldHduTW9udGggPSBmYWxzZTtcbiAgICB0aGlzLmlzU3RhcnREYXRlTGVzdGhhbkVuZERhdGUgPSB0cnVlO1xuICB9IGVsc2UgaWYocmVwb3J0TmFtZSAmJiByZXBvcnROYW1lID09PSdTVVJQTFVTX0FORF9TSE9SVEZBTEwnICYmIGlzRGF0ZVJhbmdlTW9yZVRoYW5XZWVrICkge1xuICAgIHRoaXMuaXNEYXRlUmFuZ2VCZXRuV2VlayA9IHRydWU7XG4gICAgdGhpcy5pc0RhdGVCZXR3bk1vbnRoID0gZmFsc2U7XG4gICAgdGhpcy5pc1N0YXJ0RGF0ZUxlc3RoYW5FbmREYXRlID0gZmFsc2U7XG4gIH0gZWxzZSBpZihyZXBvcnROYW1lICYmIHJlcG9ydE5hbWUgPT09J1BBWU1FTlRfRkFJTFVSRV9FVkVOVCcgJiYgaXNEYXRlUmFuZ2VNb3JlVGhhbk1vbnRoICkge1xuICAgIHRoaXMuaXNEYXRlUmFuZ2VCZXRuV2VlayA9IGZhbHNlO1xuICAgIHRoaXMuaXNEYXRlQmV0d25Nb250aCA9IHRydWU7XG4gICAgdGhpcy5pc1N0YXJ0RGF0ZUxlc3RoYW5FbmREYXRlID0gZmFsc2U7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5pc0RhdGVCZXR3bk1vbnRoID0gZmFsc2U7XG4gICAgdGhpcy5pc0RhdGVSYW5nZUJldG5XZWVrID0gZmFsc2U7XG4gICAgdGhpcy5pc1N0YXJ0RGF0ZUxlc3RoYW5FbmREYXRlID0gZmFsc2U7XG4gIH1cblxuIH1cblxuICBmcm9tVmFsaWRhdGlvbigpIHtcbiAgICB0aGlzLnJlcG9ydHNGb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICBzZWxlY3RlZHJlcG9ydDogbmV3IEZvcm1Db250cm9sKCcnKSAsXG4gICAgICBzdGFydERhdGU6IG5ldyBGb3JtQ29udHJvbCgnJyksXG4gICAgICBlbmREYXRlOiBuZXcgRm9ybUNvbnRyb2woJycpIFxuICAgIH0pO1xufVxuXG5kb3dubG9hZFJlcG9ydCgpe1xuICB0aGlzLmlzRG93bkxvYWRCdXR0b25kaXNhYmxlZCA9IHRydWU7XG4gIGNvbnN0IGRhdGFMb3NzUnB0RGVmYXVsdCA9IFt7bG9zc19yZXNwOicnLHBheW1lbnRfYXNzZXRfZGNuOicnLGVudl9yZWY6JycsZW52X2l0ZW06JycscmVzcF9zZXJ2aWNlX2lkOicnLHJlc3Bfc2VydmljZV9uYW1lOicnLGRhdGVfYmFua2VkOicnLGJnY19iYXRjaDonJyxwYXltZW50X21ldGhvZDonJyxhbW91bnQ6Jyd9XSxcbiAgICB1blByb2Nlc3NlZFJwdERlZmF1bHQgPSBbe3Jlc3Bfc2VydmljZV9pZDonJyxyZXNwX3NlcnZpY2VfbmFtZTonJyxleGNlcHRpb25fcmVmOicnLGNjZF9yZWY6JycsZGF0ZV9iYW5rZWQ6JycsYmdjX2JhdGNoOicnLHBheW1lbnRfYXNzZXRfZGNuOicnLGVudl9yZWY6JycsZW52X2l0ZW06JycscGF5bWVudF9tZXRob2Q6JycsYW1vdW50OicnfV0sXG4gICAgcHJvY2Vzc2VkVW5hbGxvY2F0ZWQgPVt7cmVzcF9zZXJ2aWNlX2lkOicnLHJlc3Bfc2VydmljZV9uYW1lOicnLGFsbG9jYXRpb25fc3RhdHVzOicnLHJlY2VpdmluZ19vZmZpY2U6JycsYWxsb2NhdGlvbl9yZWFzb246JycsY2NkX2V4Y2VwdGlvbl9yZWY6JycsY2NkX2Nhc2VfcmVmOicnLHBheW1lbnRfYXNzZXRfZGNuOicnLGVudl9yZWY6JycsZW52X2l0ZW06JycsZGF0ZV9iYW5rZWQ6JycsYmdjX2JhdGNoOicnLHBheW1lbnRfbWV0aG9kOicnLGFtb3VudDonJyx1cGRhdGVkX2J5OicnfV0sXG4gICAgc2hvcnRGYWxsc1JwdERlZmF1bHQgPSBbe3Jlc3Bfc2VydmljZV9pZDonJyxyZXNwX3NlcnZpY2VfbmFtZTonJyxzdXJwbHVzX3Nob3J0ZmFsbDonJyxiYWxhbmNlOicnLHBheW1lbnRfYW1vdW50OicnLGNjZF9jYXNlX3JlZmVyZW5jZTonJyxjY2RfZXhjZXB0aW9uX3JlZmVyZW5jZTonJyxwcm9jZXNzZWRfZGF0ZTonJywgcmVhc29uOicnLCBleHBsYW5hdGlvbjonJywgdXNlcl9uYW1lOicnfV0sXG4gICAgc2VsZWN0ZWRSZXBvcnROYW1lID0gdGhpcy5yZXBvcnRzRm9ybS5nZXQoJ3NlbGVjdGVkcmVwb3J0JykudmFsdWUsXG4gICAgc2VsZWN0ZWRTdGFydERhdGUgPSB0aGlzLnRyYW5mb3JtRGF0ZSh0aGlzLnJlcG9ydHNGb3JtLmdldCgnc3RhcnREYXRlJykudmFsdWUpLFxuICAgIHNlbGVjdGVkRW5kRGF0ZSA9IHRoaXMudHJhbmZvcm1EYXRlKHRoaXMucmVwb3J0c0Zvcm0uZ2V0KCdlbmREYXRlJykudmFsdWUpO1xuXG4gICAgaWYoc2VsZWN0ZWRSZXBvcnROYW1lID09PSAnUFJPQ0VTU0VEX1VOQUxMT0NBVEVEJyB8fCBzZWxlY3RlZFJlcG9ydE5hbWUgPT09ICdTVVJQTFVTX0FORF9TSE9SVEZBTEwnICl7XG4gICAgICB0aGlzLnBheW1lbnRWaWV3U2VydmljZS5kb3dubG9hZFNlbGVjdGVkUmVwb3J0KHNlbGVjdGVkUmVwb3J0TmFtZSxzZWxlY3RlZFN0YXJ0RGF0ZSxzZWxlY3RlZEVuZERhdGUpLnN1YnNjcmliZShcbiAgICAgICAgcmVzcG9uc2UgPT4gIHtcbiAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHRoaXMuZXJyb3JIYW5kbGVyU2VydmljZS5nZXRTZXJ2ZXJFcnJvck1lc3NhZ2UoZmFsc2UsIGZhbHNlLCAnJyk7XG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gSlNPTi5wYXJzZShyZXNwb25zZSk7XG4gICAgICAgICAgbGV0IHJlcz0ge2RhdGE6IHRoaXMuYXBwbHlEYXRlRm9ybWF0KHJlc3VsdCl9O1xuICAgICAgICAgIGlmKHJlc1snZGF0YSddLmxlbmd0aCA9PT0gMCAmJiBzZWxlY3RlZFJlcG9ydE5hbWUgPT09ICdQUk9DRVNTRURfVU5BTExPQ0FURUQnICl7XG4gICAgICAgICAgICByZXMuZGF0YT0gcHJvY2Vzc2VkVW5hbGxvY2F0ZWQ7XG4gICAgICAgICAgfSBlbHNlIGlmKHJlc1snZGF0YSddLmxlbmd0aCA9PT0gMCAmJiBzZWxlY3RlZFJlcG9ydE5hbWUgPT09ICdTVVJQTFVTX0FORF9TSE9SVEZBTEwnICkge1xuICAgICAgICAgICAgcmVzLmRhdGE9IHNob3J0RmFsbHNScHREZWZhdWx0O1xuICAgICAgICAgIH0gXG4gICAgICAgICAgaWYocmVzdWx0WydkYXRhJ10ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgZm9yKCB2YXIgaT0wOyBpPCByZXNbJ2RhdGEnXS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICBpZihyZXNbJ2RhdGEnXVtpXVtcInBheW1lbnRfYXNzZXRfZGNuXCJdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXNbJ2RhdGEnXVtpXVsnZW52X3JlZiddID0gcmVzWydkYXRhJ11baV1bXCJwYXltZW50X2Fzc2V0X2RjblwiXS5zdWJzdHIoMCwxMyk7XG4gICAgICAgICAgICAgICAgcmVzWydkYXRhJ11baV1bJ2Vudl9pdGVtJ10gPSByZXNbJ2RhdGEnXVtpXVtcInBheW1lbnRfYXNzZXRfZGNuXCJdLnN1YnN0cigxMywyMSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYocmVzWydkYXRhJ11baV1bXCJhbW91bnRcIl0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJlc1snZGF0YSddW2ldWydhbW91bnQnXSA9IHRoaXMuY29udmVydFRvRmxvYXRWYWx1ZShyZXNbJ2RhdGEnXVtpXVsnYW1vdW50J10pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmKHJlc1snZGF0YSddW2ldW1wiYmFsYW5jZVwiXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmVzWydkYXRhJ11baV1bJ2JhbGFuY2UnXSA9IHRoaXMuY29udmVydFRvRmxvYXRWYWx1ZShyZXNbJ2RhdGEnXVtpXVtcImJhbGFuY2VcIl0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGxldCBPcCA9IHJlc1snZGF0YSddW2ldW1wic3VycGx1c19zaG9ydGZhbGxcIl07XG4gICAgICAgICAgICAgIGlmKE9wICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXNbJ2RhdGEnXVtpXVsnc3VycGx1c19zaG9ydGZhbGwnXSA9IE9wID09XCJTdXJwbHVzXCIgPyBcIk92ZXIgcGF5bWVudFwiOlwiVW5kZXIgcGF5bWVudFwiO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmKHJlc1snZGF0YSddW2ldW1wicGF5bWVudF9hbW91bnRcIl0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJlc1snZGF0YSddW2ldWydwYXltZW50X2Ftb3VudCddID0gdGhpcy5jb252ZXJ0VG9GbG9hdFZhbHVlKHJlc1snZGF0YSddW2ldWydwYXltZW50X2Ftb3VudCddKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gXG4gICAgICAgICAgdGhpcy5pc0Rvd25Mb2FkQnV0dG9uZGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLnhsRmlsZVNlcnZpY2UuZXhwb3J0QXNFeGNlbEZpbGUocmVzWydkYXRhJ10sIHRoaXMuZ2V0RmlsZU5hbWUodGhpcy5yZXBvcnRzRm9ybS5nZXQoJ3NlbGVjdGVkcmVwb3J0JykudmFsdWUsIHNlbGVjdGVkU3RhcnREYXRlLCBzZWxlY3RlZEVuZERhdGUpKTtcbiAgICAgICAgfSxcbiAgICAgICAgKGVycm9yOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLmlzRG93bkxvYWRCdXR0b25kaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5lcnJvckhhbmRsZXJTZXJ2aWNlLmdldFNlcnZlckVycm9yTWVzc2FnZSh0cnVlLCBmYWxzZSwgJycpO1xuICAgICAgICB9KVxuXG4gICAgfSBlbHNlIGlmKHNlbGVjdGVkUmVwb3J0TmFtZSA9PT0gJ1BBWU1FTlRfRkFJTFVSRV9FVkVOVCcpIHtcblxuICAgICAgdGhpcy5wYXltZW50Vmlld1NlcnZpY2UuZG93bmxvYWRGYWlsdXJlUmVwb3J0KHNlbGVjdGVkU3RhcnREYXRlLHNlbGVjdGVkRW5kRGF0ZSkuc3Vic2NyaWJlKFxuICAgICAgICByZXNwb25zZSA9PiAge1xuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5lcnJvckhhbmRsZXJTZXJ2aWNlLmdldFNlcnZlckVycm9yTWVzc2FnZShmYWxzZSwgZmFsc2UsICcnKTtcbiAgICAgICAgICBjb25zdCByZXN1bHQgPSB7ZGF0YTogSlNPTi5wYXJzZShyZXNwb25zZSlbJ3BheW1lbnRfZmFpbHVyZV9yZXBvcnRfbGlzdCddfTtcbiAgICAgICAgICBsZXQgcmVzID0ge2RhdGE6IHRoaXMuYXBwbHlEYXRlRm9ybWF0KHJlc3VsdCl9O1xuICAgICAgICAgIGlmIChyZXN1bHRbJ2RhdGEnXS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBmb3IgKCB2YXIgaT0wOyBpPCByZXNbJ2RhdGEnXS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICBpZiAocmVzWydkYXRhJ11baV1bXCJkaXNwdXRlZF9hbW91bnRcIl0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJlc1snZGF0YSddW2ldWydkaXNwdXRlZF9hbW91bnQnXSA9IHRoaXMuY29udmVydFRvRmxvYXRWYWx1ZShyZXNbJ2RhdGEnXVtpXVtcImRpc3B1dGVkX2Ftb3VudFwiXSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKHJlc1snZGF0YSddW2ldW1wicmVwcmVzZW50bWVudF9zdGF0dXNcIl0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJlc1snZGF0YSddW2ldWydyZXByZXNlbnRtZW50X3N0YXR1cyddID0gcmVzWydkYXRhJ11baV1bXCJyZXByZXNlbnRtZW50X3N0YXR1c1wiXS50b0xvd2VyQ2FzZSgpID09PSAneWVzJyA/ICdTdWNjZXNzJyA6ICdGYWlsdXJlJztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAocmVzWydkYXRhJ11baV1bJ3JlcHJlc2VudG1lbnRfc3RhdHVzJ10gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJlc1snZGF0YSddW2ldWydyZXByZXNlbnRtZW50X3N0YXR1cyddID0gJ05vIHJlcHJlc2VudG1lbnQgcmVjZWl2ZWQnO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChyZXNbJ2RhdGEnXVtpXVsncmVwcmVzZW50bWVudF9kYXRlJ10gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJlc1snZGF0YSddW2ldWydyZXByZXNlbnRtZW50X2RhdGUnXSA9ICdOL0EnO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChyZXNbJ2RhdGEnXVtpXVsncmVmdW5kX3JlZmVyZW5jZSddID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXNbJ2RhdGEnXVtpXVsncmVmdW5kX3JlZmVyZW5jZSddID0gJ05vIHJlZnVuZCBhdmFpbGFibGUnO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChyZXNbJ2RhdGEnXVtpXVsncmVmdW5kX2Ftb3VudCddID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXNbJ2RhdGEnXVtpXVsncmVmdW5kX2Ftb3VudCddID0gJ04vQSc7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKHJlc1snZGF0YSddW2ldWydyZWZ1bmRfZGF0ZSddID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXNbJ2RhdGEnXVtpXVsncmVmdW5kX2RhdGUnXSA9ICdOL0EnO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuaXNEb3duTG9hZEJ1dHRvbmRpc2FibGVkID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy54bEZpbGVTZXJ2aWNlLmV4cG9ydEFzRXhjZWxGaWxlKHJlc1snZGF0YSddLCB0aGlzLmdldEZpbGVOYW1lKHRoaXMucmVwb3J0c0Zvcm0uZ2V0KCdzZWxlY3RlZHJlcG9ydCcpLnZhbHVlLCBzZWxlY3RlZFN0YXJ0RGF0ZSwgc2VsZWN0ZWRFbmREYXRlICkpO1xuXG4gICAgICAgIH0sXG4gICAgICAgIChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5pc0Rvd25Mb2FkQnV0dG9uZGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgICBjb25zdCBlcnJvckNvbnRlbnQgPSBlcnJvci5yZXBsYWNlKC9bXmEtekEtWiBdL2csICcnKS50cmltKCk7XG4gICAgICAgICAgY29uc3Qgc3RhdHVzQ29kZSA9IGVycm9yLnJlcGxhY2UoL1teYS16QS1aMC05IF0vZywgJycpLnRyaW0oKS5zcGxpdCgnICcpWzBdO1xuICAgICAgICAgIGlmKHN0YXR1c0NvZGUgPT09ICc0MDQnKSB7XG4gICAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHRoaXMuZXJyb3JIYW5kbGVyU2VydmljZS5nZXRTZXJ2ZXJFcnJvck1lc3NhZ2UodHJ1ZSwgdHJ1ZSwgZXJyb3JDb250ZW50KTtcbiAgICAgICAgICB9ZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHRoaXMuZXJyb3JIYW5kbGVyU2VydmljZS5nZXRTZXJ2ZXJFcnJvck1lc3NhZ2UodHJ1ZSwgZmFsc2UsICcnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG5cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5idWxrU2NhbmluZ1BheW1lbnRTZXJ2aWNlLmRvd25sb2FkU2VsZWN0ZWRSZXBvcnQoc2VsZWN0ZWRSZXBvcnROYW1lLHNlbGVjdGVkU3RhcnREYXRlLHNlbGVjdGVkRW5kRGF0ZSkuc3Vic2NyaWJlKFxuICAgICAgICByZXNwb25zZSA9PiAge1xuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5lcnJvckhhbmRsZXJTZXJ2aWNlLmdldFNlcnZlckVycm9yTWVzc2FnZShmYWxzZSwgZmFsc2UsICcnKTtcbiAgICAgICAgICBjb25zdCByZXN1bHQgPSBKU09OLnBhcnNlKHJlc3BvbnNlKTtcbiAgICAgICAgICBsZXQgcmVzID0ge2RhdGE6IHRoaXMuYXBwbHlEYXRlRm9ybWF0KHJlc3VsdCl9O1xuICAgICAgICAgIGlmKHJlc1snZGF0YSddLmxlbmd0aCA9PT0gMCAmJiBzZWxlY3RlZFJlcG9ydE5hbWUgPT09ICdEQVRBX0xPU1MnICl7XG4gICAgICAgICAgICByZXMuZGF0YT0gZGF0YUxvc3NScHREZWZhdWx0O1xuICAgICAgICAgIH0gZWxzZSBpZihyZXNbJ2RhdGEnXS5sZW5ndGggPT09IDAgJiYgc2VsZWN0ZWRSZXBvcnROYW1lID09PSAnVU5QUk9DRVNTRUQnKXtcbiAgICAgICAgICAgIHJlcy5kYXRhID0gdW5Qcm9jZXNzZWRScHREZWZhdWx0O1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZihyZXN1bHRbJ2RhdGEnXS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgZm9yKCB2YXIgaT0wOyBpPCByZXNbJ2RhdGEnXS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYocmVzWydkYXRhJ11baV1bXCJhbW91bnRcIl0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICByZXNbJ2RhdGEnXVtpXVsnYW1vdW50J10gPSB0aGlzLmNvbnZlcnRUb0Zsb2F0VmFsdWUocmVzWydkYXRhJ11baV1bJ2Ftb3VudCddKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmKHJlc1snZGF0YSddW2ldW1wicGF5bWVudF9hc3NldF9kY25cIl0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmVzWydkYXRhJ11baV1bJ2Vudl9yZWYnXSA9IHJlc1snZGF0YSddW2ldW1wicGF5bWVudF9hc3NldF9kY25cIl0uc3Vic3RyKDAsMTMpO1xuICAgICAgICAgICAgcmVzWydkYXRhJ11baV1bJ2Vudl9pdGVtJ10gPSByZXNbJ2RhdGEnXVtpXVtcInBheW1lbnRfYXNzZXRfZGNuXCJdLnN1YnN0cigxMywyMSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgICB0aGlzLmlzRG93bkxvYWRCdXR0b25kaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMueGxGaWxlU2VydmljZS5leHBvcnRBc0V4Y2VsRmlsZShyZXNbJ2RhdGEnXSwgdGhpcy5nZXRGaWxlTmFtZSh0aGlzLnJlcG9ydHNGb3JtLmdldCgnc2VsZWN0ZWRyZXBvcnQnKS52YWx1ZSwgc2VsZWN0ZWRTdGFydERhdGUsIHNlbGVjdGVkRW5kRGF0ZSApKTtcbiAgICAgICAgfSxcbiAgICAgICAgKGVycm9yOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLmlzRG93bkxvYWRCdXR0b25kaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5lcnJvckhhbmRsZXJTZXJ2aWNlLmdldFNlcnZlckVycm9yTWVzc2FnZSh0cnVlLCBmYWxzZSwgJycpO1xuICAgICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIGdldEZpbGVOYW1lKHNlbGVjdGVkT3B0aW9uOiBzdHJpbmcsIHN0YXJ0RGF0ZTogc3RyaW5nLCBlbmREYXRlOiBzdHJpbmcgKSB7XG4gICAgY29uc3QgbG9jID0gJ2VuLVVTJyxcbiAgICAgIHN0RHQgPSBmb3JtYXREYXRlKHN0YXJ0RGF0ZSwgJ2RkTU15eScsIGxvYyksXG4gICAgICBlbkR0ID0gZm9ybWF0RGF0ZShlbmREYXRlLCAnZGRNTXl5JywgbG9jKSxcbiAgICAgIG5vdyA9IG5ldyBEYXRlKCksXG4gICAgICBjdXJyZW50RGF0ZSA9IGZvcm1hdERhdGUobm93LCAnZGRNTXl5JywgbG9jKSxcbiAgICAgIHRpbWVzdGFtcCA9IGAke2N1cnJlbnREYXRlfV8ke3RoaXMuZ2V0VHdvZGlnaXQobm93LmdldEhvdXJzKCkpfSR7dGhpcy5nZXRUd29kaWdpdChub3cuZ2V0TWludXRlcygpKX0ke3RoaXMuZ2V0VHdvZGlnaXQobm93LmdldFNlY29uZHMoKSl9YCxcbiAgICAgIHNlbGVjdGVkT3B0aW9uVHh0ID0gdGhpcy5nZXRDYW1lbENhc2VTdHJpbmcoc2VsZWN0ZWRPcHRpb24pO1xuICAgICAgXG4gICAgICByZXR1cm4gc2VsZWN0ZWRPcHRpb25UeHQrJ18nK3N0RHQrJ19Ub18nK2VuRHQrJ19SdW5fJysgdGltZXN0YW1wO1xuICB9IFxuICB0cmFuZm9ybURhdGUoc3RyRGF0ZTogc3RyaW5nKSB7XG4gICAgbGV0IHJlc3VsdCA9ICcnO1xuICAgIGlmIChzdHJEYXRlKSB7XG4gICAgICBsZXQgcGFydHMgPSBzdHJEYXRlLnNwbGl0KCctJyk7XG4gICAgICByZXN1bHQgPSBgJHtwYXJ0c1sxXX0vJHtwYXJ0c1syXX0vJHtwYXJ0c1swXX1gO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG4gIGdldFR3b2RpZ2l0KGlucHV0OiBudW1iZXIpe1xuICAgIHJldHVybiAoXCIwXCIgKyBpbnB1dCkuc2xpY2UoLTIpO1xuICB9XG4gIGdldENhbWVsQ2FzZVN0cmluZyhzZWxlY3RlZE9wdGlvbikge1xuICAgIGxldCByZXN1bHQ7XG4gICAgc3dpdGNoKHNlbGVjdGVkT3B0aW9uKSB7IFxuICAgICAgY2FzZSAnVU5QUk9DRVNTRUQnOiB7IFxuICAgICAgICByZXN1bHQgPSAnVW5wcm9jZXNzZWQnO1xuICAgICAgICBicmVhazsgXG4gICAgICB9IFxuICAgICAgY2FzZSAnREFUQV9MT1NTJzogeyBcbiAgICAgICAgcmVzdWx0ID0gJ0RhdGFfTG9zcyc7XG4gICAgICAgIGJyZWFrOyBcbiAgICAgIH0gXG4gICAgICBjYXNlICdQUk9DRVNTRURfVU5BTExPQ0FURUQnOiB7IFxuICAgICAgICByZXN1bHQgPSAnUHJvY2Vzc2VkX1VuYWxsb2NhdGVkJztcbiAgICAgICAgYnJlYWs7IFxuICAgICAgfSBcbiAgICAgIGNhc2UgJ1NVUlBMVVNfQU5EX1NIT1JURkFMTCc6IHsgXG4gICAgICAgIHJlc3VsdCA9ICdPdmVyIFBheW1lbnRfVW5kZXIgUGF5bWVudCc7XG4gICAgICAgIGJyZWFrOyBcbiAgICAgIH0gXG4gICAgICBjYXNlICdQQVlNRU5UX0ZBSUxVUkVfRVZFTlQnOiB7IFxuICAgICAgICByZXN1bHQgPSAnUGF5bWVudCBmYWlsdXJlIGV2ZW50JztcbiAgICAgICAgYnJlYWs7IFxuICAgICAgfVxuICAgICAgZGVmYXVsdDogeyBcbiAgICAgICAgcmVzdWx0ID0gc2VsZWN0ZWRPcHRpb247XG4gICAgICAgIGJyZWFrOyBcbiAgICAgIH0gXG4gICB9IFxuICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICBhcHBseURhdGVGb3JtYXQocmVzKSB7XG4gICAgcmV0dXJuIHJlc1snZGF0YSddLm1hcCh2YWx1ZSA9PiB7XG4gICAgICBpZiAodmFsdWVbJ2RhdGVfYmFua2VkJ10pIHtcbiAgICAgICAgdmFsdWVbJ2RhdGVfYmFua2VkJ10gPSBmb3JtYXREYXRlKHZhbHVlWydkYXRlX2JhbmtlZCddLCB0aGlzLmZtdCwgdGhpcy5sb2MpO1xuICAgICAgfVxuICAgICAgaWYgKHZhbHVlWydldmVudF9kYXRlJ10gJiYgdmFsdWVbJ2V2ZW50X2RhdGUnXS5pbmRleE9mKCcsJykgPT09IC0xKSB7XG4gICAgICAgIHZhbHVlWydldmVudF9kYXRlJ10gPSBmb3JtYXREYXRlKHZhbHVlWydldmVudF9kYXRlJ10sIHRoaXMuZm10LCB0aGlzLmxvYyk7XG4gICAgICB9IGVsc2UgaWYgKHZhbHVlWydldmVudF9kYXRlJ10gJiYgdmFsdWVbJ2V2ZW50X2RhdGUnXS5pbmRleE9mKCcsJykgIT09IC0xKSB7XG4gICAgICAgIHZhbHVlWydldmVudF9kYXRlJ10gPSB0aGlzLm11bHRpRGF0ZUZvcm1hdGVyKHZhbHVlWydldmVudF9kYXRlJ10pXG4gICAgICB9XG5cbiAgICAgIGlmICh2YWx1ZVsncmVwcmVzZW50bWVudF9kYXRlJ10gJiYgdmFsdWVbJ3JlcHJlc2VudG1lbnRfZGF0ZSddLmluZGV4T2YoJywnKSA9PT0gLTEpIHtcbiAgICAgICAgdmFsdWVbJ3JlcHJlc2VudG1lbnRfZGF0ZSddID0gZm9ybWF0RGF0ZSh2YWx1ZVsncmVwcmVzZW50bWVudF9kYXRlJ10sIHRoaXMuZm10LCB0aGlzLmxvYyk7XG4gICAgICB9IGVsc2UgaWYgKHZhbHVlWydyZXByZXNlbnRtZW50X2RhdGUnXSAmJiB2YWx1ZVsncmVwcmVzZW50bWVudF9kYXRlJ10uaW5kZXhPZignLCcpICE9PSAtMSkge1xuICAgICAgICB2YWx1ZVsncmVwcmVzZW50bWVudF9kYXRlJ10gPSB0aGlzLm11bHRpRGF0ZUZvcm1hdGVyKHZhbHVlWydyZXByZXNlbnRtZW50X2RhdGUnXSlcbiAgICAgIH1cblxuICAgICAgaWYgKHZhbHVlWydyZWZ1bmRfZGF0ZSddICYmIHZhbHVlWydyZWZ1bmRfZGF0ZSddLmluZGV4T2YoJywnKSA9PT0gLTEpIHtcbiAgICAgICAgdmFsdWVbJ3JlZnVuZF9kYXRlJ10gPSBmb3JtYXREYXRlKHZhbHVlWydyZWZ1bmRfZGF0ZSddLCB0aGlzLmZtdCwgdGhpcy5sb2MpO1xuICAgICAgfSBlbHNlIGlmICh2YWx1ZVsncmVmdW5kX2RhdGUnXSAmJiB2YWx1ZVsncmVmdW5kX2RhdGUnXS5pbmRleE9mKCcsJykgIT09IC0xKSB7XG4gICAgICAgIHZhbHVlWydyZWZ1bmRfZGF0ZSddID0gdGhpcy5tdWx0aURhdGVGb3JtYXRlcih2YWx1ZVsncmVmdW5kX2RhdGUnXSlcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9KTtcbiAgfVxuICBtdWx0aURhdGVGb3JtYXRlcihkYXRlU3RyKSB7XG4gICByZXR1cm4gZGF0ZVN0ci5zcGxpdCgnLCcpLm1hcCgoZGF0ZSkgPT4gZm9ybWF0RGF0ZShkYXRlLCB0aGlzLmZtdCwgdGhpcy5sb2MpKS5qb2luKCcsJyk7XG4gIH1cbiAgXG4gIGNvbnZlcnRUb0Zsb2F0VmFsdWUoYW10KSB7XG4gICAgcmV0dXJuIGFtdCA/IE51bWJlci5wYXJzZUZsb2F0KGFtdCkudG9GaXhlZCgyKTogJzAuMDAnO1xuICB9XG59XG4iXX0=
|
|
368
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AaG1jdHMvY2NwYXktd2ViLWNvbXBvbmVudC8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL3JlcG9ydHMvcmVwb3J0cy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBYSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFN0MsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sa0VBQWtFLENBQUM7QUFDN0csT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDbEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDdEYsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHdDQUF3QyxDQUFDO0FBT3JFLE1BQU0sT0FBTyxnQkFBZ0I7Ozs7Ozs7O0lBVzNCLFlBQ1UsYUFBNEIsRUFDNUIsbUJBQXdDLEVBQ3hDLFdBQXdCLEVBQ3hCLHlCQUFvRCxFQUNwRCxrQkFBc0M7UUFKdEMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4QyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4Qiw4QkFBeUIsR0FBekIseUJBQXlCLENBQTJCO1FBQ3BELHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFYaEQsNkJBQXdCLEdBQVcsS0FBSyxDQUFDO1FBQ3pDLDhCQUF5QixHQUFZLEtBQUssQ0FBQztRQUMzQyx3QkFBbUIsR0FBWSxLQUFLLENBQUM7UUFDckMsaUJBQVksR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckUsa0JBQWEs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TUFBTSxDQUFDO0lBQ3pELENBQUM7OztZQTdORixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGVBQWU7Z0JBQ3pCLDgzS0FBdUM7O2FBRXhDOzs7O1lBTk8sYUFBYTtZQUZaLG1CQUFtQjtZQUpuQixXQUFXO1lBR1gseUJBQXlCO1lBRXpCLGtCQUFrQjs7OztJQVN6Qix1Q0FBdUI7O0lBQ3ZCLHFDQUFrQjs7SUFDbEIsbUNBQWdCOztJQUNoQix5Q0FBc0I7O0lBQ3RCLG9EQUF5Qzs7SUFDekMscURBQTJDOztJQUMzQywrQ0FBcUM7O0lBQ3JDLHdDQUFxRTs7SUFDckUseUNBQW9DOzs7OztJQUdsQyx5Q0FBb0M7Ozs7O0lBQ3BDLCtDQUFnRDs7Ozs7SUFDaEQsdUNBQWdDOzs7OztJQUNoQyxxREFBNEQ7Ozs7O0lBQzVELDhDQUE4QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGZvcm1hdERhdGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5pbXBvcnQge0lQYXltZW50R3JvdXB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvSVBheW1lbnRHcm91cCc7XG5pbXBvcnQgeyBCdWxrU2NhbmluZ1BheW1lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYnVsay1zY2FuaW5nLXBheW1lbnQvYnVsay1zY2FuaW5nLXBheW1lbnQuc2VydmljZSc7XG5pbXBvcnQgeyBFcnJvckhhbmRsZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc2hhcmVkL2Vycm9yLWhhbmRsZXIuc2VydmljZSc7XG5pbXBvcnQgeyBQYXltZW50Vmlld1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9wYXltZW50LXZpZXcvcGF5bWVudC12aWV3LnNlcnZpY2UnO1xuaW1wb3J0IHtYbEZpbGVTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy94bC1maWxlL3hsLWZpbGUuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NjcGF5LXJlcG9ydHMnLFxuICB0ZW1wbGF0ZVVybDogJy4vcmVwb3J0cy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3JlcG9ydHMuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBSZXBvcnRzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcmVwb3J0c0Zvcm06IEZvcm1Hcm91cDtcbiAgc3RhcnREYXRlOiBzdHJpbmc7XG4gIGVuZERhdGU6IHN0cmluZztcbiAgY2NkQ2FzZU51bWJlcjogc3RyaW5nO1xuICBpc0Rvd25Mb2FkQnV0dG9uZGlzYWJsZWQ6Qm9vbGVhbiA9IGZhbHNlO1xuICBpc1N0YXJ0RGF0ZUxlc3RoYW5FbmREYXRlOiBCb29sZWFuID0gZmFsc2U7XG4gIGlzRGF0ZVJhbmdlQmV0bldlZWs6IEJvb2xlYW4gPSBmYWxzZTtcbiAgZXJyb3JNZXNzYWdlID0gdGhpcy5lcnJvckhhbmRsZXJTZXJ2aWNlLmdldFNlcnZlckVycm9yTWVzc2FnZShmYWxzZSk7XG4gIHBheW1lbnRHcm91cHM6IElQYXltZW50R3JvdXBbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgeGxGaWxlU2VydmljZTogWGxGaWxlU2VydmljZSxcbiAgICBwcml2YXRlIGVycm9ySGFuZGxlclNlcnZpY2U6IEVycm9ySGFuZGxlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSBidWxrU2NhbmluZ1BheW1lbnRTZXJ2aWNlOiBCdWxrU2NhbmluZ1BheW1lbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGF5bWVudFZpZXdTZXJ2aWNlOiBQYXltZW50Vmlld1NlcnZpY2UpIHsgfVxuICAgXG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5mcm9tVmFsaWRhdGlvbigpO1xuXG4gICB9XG5cbiAgZ2V0VG9kYXkoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbmV3IERhdGUoKS50b0lTT1N0cmluZygpLnNwbGl0KCdUJylbMF07XG4gfVxuXG4gZ2V0U2VsZWN0ZWRGcm9tRGF0ZSgpOiB2b2lkIHtcbiB0aGlzLnZhbGlkYXRlRGF0ZXModGhpcy5yZXBvcnRzRm9ybS5nZXQoJ3NlbGVjdGVkcmVwb3J0JykudmFsdWUpO1xuIH1cblxuIHZhbGlkYXRlRGF0ZXMocmVwb3J0TmFtZSl7XG4gIGNvbnN0IHNlbGVjdGVkU3RhcnREYXRlID0gdGhpcy50cmFuZm9ybURhdGUodGhpcy5yZXBvcnRzRm9ybS5nZXQoJ3N0YXJ0RGF0ZScpLnZhbHVlKSxcbiAgICBzZWxlY3RlZEVuZERhdGUgPSB0aGlzLnRyYW5mb3JtRGF0ZSh0aGlzLnJlcG9ydHNGb3JtLmdldCgnZW5kRGF0ZScpLnZhbHVlKTtcbiAgY29uc3QgaXNEYXRlUmFuZ2VNb3JlVGhhbldlZWsgPSAoPGFueT5uZXcgRGF0ZShzZWxlY3RlZFN0YXJ0RGF0ZSkgLSA8YW55Pm5ldyBEYXRlKHNlbGVjdGVkRW5kRGF0ZSkpLygxMDAwICogMzYwMCAqIC0yNCkgPiA3O1xuICBpZihuZXcgRGF0ZShzZWxlY3RlZFN0YXJ0RGF0ZSkgPiBuZXcgRGF0ZShzZWxlY3RlZEVuZERhdGUpICYmIHNlbGVjdGVkRW5kRGF0ZSAhPT0gJycpe1xuICAgIHRoaXMucmVwb3J0c0Zvcm0uZ2V0KCdzdGFydERhdGUnKS5zZXRWYWx1ZSgnJyk7XG4gICAgdGhpcy5pc0RhdGVSYW5nZUJldG5XZWVrID0gZmFsc2U7XG4gICAgdGhpcy5pc1N0YXJ0RGF0ZUxlc3RoYW5FbmREYXRlID0gdHJ1ZTtcbiAgfSBlbHNlIGlmKHJlcG9ydE5hbWUgJiYgcmVwb3J0TmFtZSA9PT0nU1VSUExVU19BTkRfU0hPUlRGQUxMJyAmJiBpc0RhdGVSYW5nZU1vcmVUaGFuV2VlayApIHtcbiAgICB0aGlzLmlzRGF0ZVJhbmdlQmV0bldlZWsgPSB0cnVlO1xuICAgIHRoaXMuaXNTdGFydERhdGVMZXN0aGFuRW5kRGF0ZSA9IGZhbHNlO1xuICB9IGVsc2Uge1xuICAgIHRoaXMuaXNEYXRlUmFuZ2VCZXRuV2VlayA9IGZhbHNlO1xuICAgIHRoaXMuaXNTdGFydERhdGVMZXN0aGFuRW5kRGF0ZSA9IGZhbHNlO1xuICB9XG5cbiB9XG5cbiAgZnJvbVZhbGlkYXRpb24oKSB7XG4gICAgdGhpcy5yZXBvcnRzRm9ybSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgc2VsZWN0ZWRyZXBvcnQ6IG5ldyBGb3JtQ29udHJvbCgnJykgLFxuICAgICAgc3RhcnREYXRlOiBuZXcgRm9ybUNvbnRyb2woJycpLFxuICAgICAgZW5kRGF0ZTogbmV3IEZvcm1Db250cm9sKCcnKSBcbiAgICB9KTtcbn1cblxuZG93bmxvYWRSZXBvcnQoKXtcbiAgdGhpcy5pc0Rvd25Mb2FkQnV0dG9uZGlzYWJsZWQgPSB0cnVlO1xuICBjb25zdCBkYXRhTG9zc1JwdERlZmF1bHQgPSBbe2xvc3NfcmVzcDonJyxwYXltZW50X2Fzc2V0X2RjbjonJyxlbnZfcmVmOicnLGVudl9pdGVtOicnLHJlc3Bfc2VydmljZV9pZDonJyxyZXNwX3NlcnZpY2VfbmFtZTonJyxkYXRlX2JhbmtlZDonJyxiZ2NfYmF0Y2g6JycscGF5bWVudF9tZXRob2Q6JycsYW1vdW50OicnfV0sXG4gICAgdW5Qcm9jZXNzZWRScHREZWZhdWx0ID0gW3tyZXNwX3NlcnZpY2VfaWQ6JycscmVzcF9zZXJ2aWNlX25hbWU6JycsZXhjZXB0aW9uX3JlZjonJyxjY2RfcmVmOicnLGRhdGVfYmFua2VkOicnLGJnY19iYXRjaDonJyxwYXltZW50X2Fzc2V0X2RjbjonJyxlbnZfcmVmOicnLGVudl9pdGVtOicnLHBheW1lbnRfbWV0aG9kOicnLGFtb3VudDonJ31dLFxuICAgIHByb2Nlc3NlZFVuYWxsb2NhdGVkID1be3Jlc3Bfc2VydmljZV9pZDonJyxyZXNwX3NlcnZpY2VfbmFtZTonJyxhbGxvY2F0aW9uX3N0YXR1czonJyxyZWNlaXZpbmdfb2ZmaWNlOicnLGFsbG9jYXRpb25fcmVhc29uOicnLGNjZF9leGNlcHRpb25fcmVmOicnLGNjZF9jYXNlX3JlZjonJyxwYXltZW50X2Fzc2V0X2RjbjonJyxlbnZfcmVmOicnLGVudl9pdGVtOicnLGRhdGVfYmFua2VkOicnLGJnY19iYXRjaDonJyxwYXltZW50X21ldGhvZDonJyxhbW91bnQ6JycsdXBkYXRlZF9ieTonJ31dLFxuICAgIHNob3J0RmFsbHNScHREZWZhdWx0ID0gW3tyZXNwX3NlcnZpY2VfaWQ6JycscmVzcF9zZXJ2aWNlX25hbWU6Jycsc3VycGx1c19zaG9ydGZhbGw6JycsYmFsYW5jZTonJyxwYXltZW50X2Ftb3VudDonJyxjY2RfY2FzZV9yZWZlcmVuY2U6JycsY2NkX2V4Y2VwdGlvbl9yZWZlcmVuY2U6JycscHJvY2Vzc2VkX2RhdGU6JycsIHJlYXNvbjonJywgZXhwbGFuYXRpb246JycsIHVzZXJfbmFtZTonJ31dLFxuICAgIHNlbGVjdGVkUmVwb3J0TmFtZSA9IHRoaXMucmVwb3J0c0Zvcm0uZ2V0KCdzZWxlY3RlZHJlcG9ydCcpLnZhbHVlLFxuICAgIHNlbGVjdGVkU3RhcnREYXRlID0gdGhpcy50cmFuZm9ybURhdGUodGhpcy5yZXBvcnRzRm9ybS5nZXQoJ3N0YXJ0RGF0ZScpLnZhbHVlKSxcbiAgICBzZWxlY3RlZEVuZERhdGUgPSB0aGlzLnRyYW5mb3JtRGF0ZSh0aGlzLnJlcG9ydHNGb3JtLmdldCgnZW5kRGF0ZScpLnZhbHVlKTtcblxuICAgIGlmKHNlbGVjdGVkUmVwb3J0TmFtZSA9PT0gJ1BST0NFU1NFRF9VTkFMTE9DQVRFRCcgfHwgc2VsZWN0ZWRSZXBvcnROYW1lID09PSAnU1VSUExVU19BTkRfU0hPUlRGQUxMJyApe1xuICAgICAgdGhpcy5wYXltZW50Vmlld1NlcnZpY2UuZG93bmxvYWRTZWxlY3RlZFJlcG9ydChzZWxlY3RlZFJlcG9ydE5hbWUsc2VsZWN0ZWRTdGFydERhdGUsc2VsZWN0ZWRFbmREYXRlKS5zdWJzY3JpYmUoXG4gICAgICAgIHJlc3BvbnNlID0+ICB7XG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSB0aGlzLmVycm9ySGFuZGxlclNlcnZpY2UuZ2V0U2VydmVyRXJyb3JNZXNzYWdlKGZhbHNlKTtcbiAgICAgICAgICBjb25zdCByZXN1bHQgPSBKU09OLnBhcnNlKHJlc3BvbnNlKTtcbiAgICAgICAgICBsZXQgcmVzPSB7ZGF0YTogdGhpcy5hcHBseURhdGVGb3JtYXQocmVzdWx0KX07XG4gICAgICAgICAgaWYocmVzWydkYXRhJ10ubGVuZ3RoID09PSAwICYmIHNlbGVjdGVkUmVwb3J0TmFtZSA9PT0gJ1BST0NFU1NFRF9VTkFMTE9DQVRFRCcgKXtcbiAgICAgICAgICAgIHJlcy5kYXRhPSBwcm9jZXNzZWRVbmFsbG9jYXRlZDtcbiAgICAgICAgICB9IGVsc2UgaWYocmVzWydkYXRhJ10ubGVuZ3RoID09PSAwICYmIHNlbGVjdGVkUmVwb3J0TmFtZSA9PT0gJ1NVUlBMVVNfQU5EX1NIT1JURkFMTCcgKSB7XG4gICAgICAgICAgICByZXMuZGF0YT0gc2hvcnRGYWxsc1JwdERlZmF1bHQ7XG4gICAgICAgICAgfSBcbiAgICAgICAgICBpZihyZXN1bHRbJ2RhdGEnXS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBmb3IoIHZhciBpPTA7IGk8IHJlc1snZGF0YSddLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgIGlmKHJlc1snZGF0YSddW2ldW1wicGF5bWVudF9hc3NldF9kY25cIl0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJlc1snZGF0YSddW2ldWydlbnZfcmVmJ10gPSByZXNbJ2RhdGEnXVtpXVtcInBheW1lbnRfYXNzZXRfZGNuXCJdLnN1YnN0cigwLDEzKTtcbiAgICAgICAgICAgICAgICByZXNbJ2RhdGEnXVtpXVsnZW52X2l0ZW0nXSA9IHJlc1snZGF0YSddW2ldW1wicGF5bWVudF9hc3NldF9kY25cIl0uc3Vic3RyKDEzLDIxKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZihyZXNbJ2RhdGEnXVtpXVtcImFtb3VudFwiXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmVzWydkYXRhJ11baV1bJ2Ftb3VudCddID0gdGhpcy5jb252ZXJ0VG9GbG9hdFZhbHVlKHJlc1snZGF0YSddW2ldWydhbW91bnQnXSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYocmVzWydkYXRhJ11baV1bXCJiYWxhbmNlXCJdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXNbJ2RhdGEnXVtpXVsnYmFsYW5jZSddID0gdGhpcy5jb252ZXJ0VG9GbG9hdFZhbHVlKHJlc1snZGF0YSddW2ldW1wiYmFsYW5jZVwiXSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgbGV0IE9wID0gcmVzWydkYXRhJ11baV1bXCJzdXJwbHVzX3Nob3J0ZmFsbFwiXTtcbiAgICAgICAgICAgICAgaWYoT3AgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJlc1snZGF0YSddW2ldWydzdXJwbHVzX3Nob3J0ZmFsbCddID0gT3AgPT1cIlN1cnBsdXNcIiA/IFwiT3ZlciBwYXltZW50XCI6XCJVbmRlciBwYXltZW50XCI7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYocmVzWydkYXRhJ11baV1bXCJwYXltZW50X2Ftb3VudFwiXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmVzWydkYXRhJ11baV1bJ3BheW1lbnRfYW1vdW50J10gPSB0aGlzLmNvbnZlcnRUb0Zsb2F0VmFsdWUocmVzWydkYXRhJ11baV1bJ3BheW1lbnRfYW1vdW50J10pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBcbiAgICAgICAgICB0aGlzLmlzRG93bkxvYWRCdXR0b25kaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMueGxGaWxlU2VydmljZS5leHBvcnRBc0V4Y2VsRmlsZShyZXNbJ2RhdGEnXSwgdGhpcy5nZXRGaWxlTmFtZSh0aGlzLnJlcG9ydHNGb3JtLmdldCgnc2VsZWN0ZWRyZXBvcnQnKS52YWx1ZSwgc2VsZWN0ZWRTdGFydERhdGUsIHNlbGVjdGVkRW5kRGF0ZSkpO1xuICAgICAgICB9LFxuICAgICAgICAoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMuaXNEb3duTG9hZEJ1dHRvbmRpc2FibGVkID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSB0aGlzLmVycm9ySGFuZGxlclNlcnZpY2UuZ2V0U2VydmVyRXJyb3JNZXNzYWdlKHRydWUpO1xuICAgICAgICB9KVxuXG4gICAgLy8gfWVsc2UgaWYoc2VsZWN0ZWRSZXBvcnROYW1lID09PSAnUEFZTUVOVF9GQUlMVVJFX0VWRU5UJykge1xuXG4gICAgLy8gICB0aGlzLnBheW1lbnRWaWV3U2VydmljZS5kb3dubG9hZEZhaWx1cmVSZXBvcnQoc2VsZWN0ZWRTdGFydERhdGUsc2VsZWN0ZWRFbmREYXRlKS5zdWJzY3JpYmUoXG4gICAgLy8gICAgIHJlc3BvbnNlID0+ICB7XG5cbiAgICAvLyAgICAgfSxcbiAgICAvLyAgICAgKGVycm9yOiBhbnkpID0+IHtcblxuICAgIC8vICAgICB9KVxuXG4gICAgLy8gfSBcbiAgICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmJ1bGtTY2FuaW5nUGF5bWVudFNlcnZpY2UuZG93bmxvYWRTZWxlY3RlZFJlcG9ydChzZWxlY3RlZFJlcG9ydE5hbWUsc2VsZWN0ZWRTdGFydERhdGUsc2VsZWN0ZWRFbmREYXRlKS5zdWJzY3JpYmUoXG4gICAgICAgIHJlc3BvbnNlID0+ICB7XG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSB0aGlzLmVycm9ySGFuZGxlclNlcnZpY2UuZ2V0U2VydmVyRXJyb3JNZXNzYWdlKGZhbHNlKTtcbiAgICAgICAgICBjb25zdCByZXN1bHQgPSBKU09OLnBhcnNlKHJlc3BvbnNlKTtcbiAgICAgICAgICBsZXQgcmVzID0ge2RhdGE6IHRoaXMuYXBwbHlEYXRlRm9ybWF0KHJlc3VsdCl9O1xuICAgICAgICAgIGlmKHJlc1snZGF0YSddLmxlbmd0aCA9PT0gMCAmJiBzZWxlY3RlZFJlcG9ydE5hbWUgPT09ICdEQVRBX0xPU1MnICl7XG4gICAgICAgICAgICByZXMuZGF0YT0gZGF0YUxvc3NScHREZWZhdWx0O1xuICAgICAgICAgIH0gZWxzZSBpZihyZXNbJ2RhdGEnXS5sZW5ndGggPT09IDAgJiYgc2VsZWN0ZWRSZXBvcnROYW1lID09PSAnVU5QUk9DRVNTRUQnKXtcbiAgICAgICAgICAgIHJlcy5kYXRhID0gdW5Qcm9jZXNzZWRScHREZWZhdWx0O1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZihyZXN1bHRbJ2RhdGEnXS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgZm9yKCB2YXIgaT0wOyBpPCByZXNbJ2RhdGEnXS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYocmVzWydkYXRhJ11baV1bXCJhbW91bnRcIl0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICByZXNbJ2RhdGEnXVtpXVsnYW1vdW50J10gPSB0aGlzLmNvbnZlcnRUb0Zsb2F0VmFsdWUocmVzWydkYXRhJ11baV1bJ2Ftb3VudCddKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmKHJlc1snZGF0YSddW2ldW1wicGF5bWVudF9hc3NldF9kY25cIl0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmVzWydkYXRhJ11baV1bJ2Vudl9yZWYnXSA9IHJlc1snZGF0YSddW2ldW1wicGF5bWVudF9hc3NldF9kY25cIl0uc3Vic3RyKDAsMTMpO1xuICAgICAgICAgICAgcmVzWydkYXRhJ11baV1bJ2Vudl9pdGVtJ10gPSByZXNbJ2RhdGEnXVtpXVtcInBheW1lbnRfYXNzZXRfZGNuXCJdLnN1YnN0cigxMywyMSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgICB0aGlzLmlzRG93bkxvYWRCdXR0b25kaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMueGxGaWxlU2VydmljZS5leHBvcnRBc0V4Y2VsRmlsZShyZXNbJ2RhdGEnXSwgdGhpcy5nZXRGaWxlTmFtZSh0aGlzLnJlcG9ydHNGb3JtLmdldCgnc2VsZWN0ZWRyZXBvcnQnKS52YWx1ZSwgc2VsZWN0ZWRTdGFydERhdGUsIHNlbGVjdGVkRW5kRGF0ZSApKTtcbiAgICAgICAgfSxcbiAgICAgICAgKGVycm9yOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLmlzRG93bkxvYWRCdXR0b25kaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5lcnJvckhhbmRsZXJTZXJ2aWNlLmdldFNlcnZlckVycm9yTWVzc2FnZSh0cnVlKTtcbiAgICAgICAgfSlcbiAgICB9XG4gIH1cblxuICBnZXRGaWxlTmFtZShzZWxlY3RlZE9wdGlvbjogc3RyaW5nLCBzdGFydERhdGU6IHN0cmluZywgZW5kRGF0ZTogc3RyaW5nICkge1xuICAgIGNvbnN0IGxvYyA9ICdlbi1VUycsXG4gICAgICBzdER0ID0gZm9ybWF0RGF0ZShzdGFydERhdGUsICdkZE1NeXknLCBsb2MpLFxuICAgICAgZW5EdCA9IGZvcm1hdERhdGUoZW5kRGF0ZSwgJ2RkTU15eScsIGxvYyksXG4gICAgICBub3cgPSBuZXcgRGF0ZSgpLFxuICAgICAgY3VycmVudERhdGUgPSBmb3JtYXREYXRlKG5vdywgJ2RkTU15eScsIGxvYyksXG4gICAgICB0aW1lc3RhbXAgPSBgJHtjdXJyZW50RGF0ZX1fJHt0aGlzLmdldFR3b2RpZ2l0KG5vdy5nZXRIb3VycygpKX0ke3RoaXMuZ2V0VHdvZGlnaXQobm93LmdldE1pbnV0ZXMoKSl9JHt0aGlzLmdldFR3b2RpZ2l0KG5vdy5nZXRTZWNvbmRzKCkpfWAsXG4gICAgICBzZWxlY3RlZE9wdGlvblR4dCA9IHRoaXMuZ2V0Q2FtZWxDYXNlU3RyaW5nKHNlbGVjdGVkT3B0aW9uKTtcbiAgICAgIFxuICAgICAgcmV0dXJuIHNlbGVjdGVkT3B0aW9uVHh0KydfJytzdER0KydfVG9fJytlbkR0KydfUnVuXycrIHRpbWVzdGFtcDtcbiAgfSBcbiAgdHJhbmZvcm1EYXRlKHN0ckRhdGU6IHN0cmluZykge1xuICAgIGxldCByZXN1bHQgPSAnJztcbiAgICBpZiAoc3RyRGF0ZSkge1xuICAgICAgbGV0IHBhcnRzID0gc3RyRGF0ZS5zcGxpdCgnLScpO1xuICAgICAgcmVzdWx0ID0gYCR7cGFydHNbMV19LyR7cGFydHNbMl19LyR7cGFydHNbMF19YDtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICBnZXRUd29kaWdpdChpbnB1dDogbnVtYmVyKXtcbiAgICByZXR1cm4gKFwiMFwiICsgaW5wdXQpLnNsaWNlKC0yKTtcbiAgfVxuICBnZXRDYW1lbENhc2VTdHJpbmcoc2VsZWN0ZWRPcHRpb24pIHtcbiAgICBsZXQgcmVzdWx0O1xuICAgIHN3aXRjaChzZWxlY3RlZE9wdGlvbikgeyBcbiAgICAgIGNhc2UgJ1VOUFJPQ0VTU0VEJzogeyBcbiAgICAgICAgcmVzdWx0ID0gJ1VucHJvY2Vzc2VkJztcbiAgICAgICAgYnJlYWs7IFxuICAgICAgfSBcbiAgICAgIGNhc2UgJ0RBVEFfTE9TUyc6IHsgXG4gICAgICAgIHJlc3VsdCA9ICdEYXRhX0xvc3MnO1xuICAgICAgICBicmVhazsgXG4gICAgICB9IFxuICAgICAgY2FzZSAnUFJPQ0VTU0VEX1VOQUxMT0NBVEVEJzogeyBcbiAgICAgICAgcmVzdWx0ID0gJ1Byb2Nlc3NlZF9VbmFsbG9jYXRlZCc7XG4gICAgICAgIGJyZWFrOyBcbiAgICAgIH0gXG4gICAgICBjYXNlICdTVVJQTFVTX0FORF9TSE9SVEZBTEwnOiB7IFxuICAgICAgICByZXN1bHQgPSAnT3ZlciBQYXltZW50X1VuZGVyIFBheW1lbnQnO1xuICAgICAgICBicmVhazsgXG4gICAgICB9IFxuICAgICAgY2FzZSAnUEFZTUVOVF9GQUlMVVJFX0VWRU5UJzogeyBcbiAgICAgICAgcmVzdWx0ID0gJ1BheW1lbnQgZmFpbHVyZSBldmVudCc7XG4gICAgICAgIGJyZWFrOyBcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6IHsgXG4gICAgICAgIHJlc3VsdCA9IHNlbGVjdGVkT3B0aW9uO1xuICAgICAgICBicmVhazsgXG4gICAgICB9IFxuICAgfSBcbiAgIHJldHVybiByZXN1bHQ7XG4gIH1cbiAgYXBwbHlEYXRlRm9ybWF0KHJlcykge1xuICAgIGNvbnN0IGZtdCA9ICdkZC9NTS95eXl5JyxcbiAgICBsb2MgPSAnZW4tVVMnO1xuICAgIHJldHVybiByZXNbJ2RhdGEnXS5tYXAodmFsdWUgPT4ge1xuICAgICAgaWYgKHZhbHVlWydkYXRlX2JhbmtlZCddKSB7XG4gICAgICAgIHZhbHVlWydkYXRlX2JhbmtlZCddID0gZm9ybWF0RGF0ZSh2YWx1ZVsnZGF0ZV9iYW5rZWQnXSwgZm10LCBsb2MpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH0pO1xuICB9XG4gIFxuICBjb252ZXJ0VG9GbG9hdFZhbHVlKGFtdCkge1xuICAgIHJldHVybiBhbXQgPyBOdW1iZXIucGFyc2VGbG9hdChhbXQpLnRvRml4ZWQoMik6ICcwLjAwJztcbiAgfVxufVxuIl19
|