@hmcts/ccpay-web-component 4.0.0-beta58 → 4.0.0-beta602
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 +6945 -2637
- 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/hmcts-ccpay-web-component.js +32 -26
- package/esm2015/lib/components/add-remission/add-remission.component.js +868 -138
- package/esm2015/lib/components/allocate-payments/allocate-payments.component.js +336 -318
- package/esm2015/lib/components/card-details/card-details.component.js +22 -57
- package/esm2015/lib/components/case-transactions/case-transactions.component.js +959 -350
- package/esm2015/lib/components/error-banner/error-banner.component.js +5 -17
- package/esm2015/lib/components/fee-summary/fee-summary.component.js +262 -273
- package/esm2015/lib/components/mark-unidentified-payment/mark-unidentified-payment.component.js +137 -156
- package/esm2015/lib/components/mark-unsolicited-payment/mark-unsolicited-payment.component.js +178 -177
- package/esm2015/lib/components/page-not-found.component.js +3 -4
- package/esm2015/lib/components/payment-list/payment-list.component.js +22 -80
- package/esm2015/lib/components/payment-view/payment-view.component.js +358 -129
- package/esm2015/lib/components/pba-details/pba-details.component.js +5 -39
- package/esm2015/lib/components/process-refund/process-refund.component.js +392 -0
- package/esm2015/lib/components/processed-payments/processed-payments.component.js +13 -41
- package/esm2015/lib/components/refund-list/refund-list.component.js +131 -0
- package/esm2015/lib/components/refund-status/refund-status.component.js +511 -0
- package/esm2015/lib/components/reports/reports.component.js +96 -107
- package/esm2015/lib/components/status-history/status-history.component.js +28 -35
- package/esm2015/lib/components/table/table.component.js +179 -0
- package/esm2015/lib/components/unprocessed-payments/unprocessed-payments.component.js +168 -91
- package/esm2015/lib/interfaces/AddRemissionRequest.js +6 -7
- package/esm2015/lib/interfaces/AddRetroRemissionRequest.js +21 -0
- package/esm2015/lib/interfaces/AllocatePaymentRequest.js +11 -9
- package/esm2015/lib/interfaces/IAllocationPaymentsRequest.js +2 -3
- package/esm2015/lib/interfaces/IBSPayments.js +38 -35
- package/esm2015/lib/interfaces/ICardDetails.js +14 -13
- package/esm2015/lib/interfaces/IFee.js +44 -29
- package/esm2015/lib/interfaces/IOrderReferenceFee.js +25 -0
- package/esm2015/lib/interfaces/IPatchRefundAction.js +15 -0
- package/esm2015/lib/interfaces/IPayment.js +56 -55
- package/esm2015/lib/interfaces/IPaymentGroup.js +12 -11
- package/esm2015/lib/interfaces/IPaymentStatus.js +2 -3
- package/esm2015/lib/interfaces/IPaymentView.js +17 -0
- package/esm2015/lib/interfaces/IPayments.js +6 -5
- package/esm2015/lib/interfaces/IRefundAction.js +15 -0
- package/esm2015/lib/interfaces/IRefundList.js +29 -0
- package/esm2015/lib/interfaces/IRefundReasons.js +19 -0
- package/esm2015/lib/interfaces/IRefundRejectReason.js +15 -0
- package/esm2015/lib/interfaces/IRefundStatus.js +23 -0
- package/esm2015/lib/interfaces/IRefundStatusHistory.js +15 -0
- package/esm2015/lib/interfaces/IRemission.js +18 -17
- package/esm2015/lib/interfaces/IResubmitRefundRequest.js +21 -0
- package/esm2015/lib/interfaces/IStatusHistories.js +12 -11
- package/esm2015/lib/interfaces/IStatusHistory.js +14 -13
- package/esm2015/lib/interfaces/IssueRefundRequest.js +25 -0
- package/esm2015/lib/interfaces/PayhubAntennaRequest.js +28 -0
- package/esm2015/lib/interfaces/PaymentToPayhubRequest.js +7 -12
- package/esm2015/lib/interfaces/PostIssueRefundRetroRemission.js +17 -0
- package/esm2015/lib/interfaces/PostRefundRetroRemission.js +21 -0
- package/esm2015/lib/interfaces/RefundsRequest.js +21 -0
- package/esm2015/lib/interfaces/UnidentifiedPaymentsRequest.js +2 -3
- package/esm2015/lib/interfaces/UnsolicitedPaymentsRequest.js +2 -3
- package/esm2015/lib/payment-lib.component.js +124 -20
- package/esm2015/lib/payment-lib.module.js +27 -6
- package/esm2015/lib/payment-lib.service.js +18 -4
- package/esm2015/lib/pipes/capitalize.pipe.js +24 -0
- package/esm2015/lib/pipes/ccd-hyphens.pipe.js +3 -4
- package/esm2015/lib/pipes/key-value.pipe.js +3 -4
- package/esm2015/lib/pipes/sanitize-html.pipe.js +7 -5
- package/esm2015/lib/services/bulk-scaning-payment/bulk-scaning-payment.service.js +52 -14
- package/esm2015/lib/services/card-details/card-details.service.js +19 -8
- package/esm2015/lib/services/case-transactions/case-transactions.service.js +19 -8
- package/esm2015/lib/services/orderslist.service.js +211 -0
- package/esm2015/lib/services/payment-list/payment-list.service.js +19 -8
- package/esm2015/lib/services/payment-view/payment-view.service.js +102 -14
- package/esm2015/lib/services/refunds/refunds.service.js +203 -0
- package/esm2015/lib/services/shared/error-handler.service.js +24 -4
- package/esm2015/lib/services/shared/httpclient/webcomponent.http.client.js +27 -9
- package/esm2015/lib/services/shared/logger/console-logger.service.js +7 -5
- package/esm2015/lib/services/shared/logger/logger.service.js +7 -5
- package/esm2015/lib/services/status-history/status-history.service.js +19 -8
- package/esm2015/lib/services/xl-file/xl-file.service.js +56 -51
- package/esm2015/public_api.js +1 -2
- package/esm5/hmcts-ccpay-web-component.js +32 -26
- package/esm5/lib/components/add-remission/add-remission.component.js +935 -47
- package/esm5/lib/components/allocate-payments/allocate-payments.component.js +349 -115
- package/esm5/lib/components/card-details/card-details.component.js +22 -9
- package/esm5/lib/components/case-transactions/case-transactions.component.js +1038 -110
- package/esm5/lib/components/error-banner/error-banner.component.js +3 -4
- package/esm5/lib/components/fee-summary/fee-summary.component.js +281 -101
- package/esm5/lib/components/mark-unidentified-payment/mark-unidentified-payment.component.js +136 -45
- package/esm5/lib/components/mark-unsolicited-payment/mark-unsolicited-payment.component.js +179 -65
- package/esm5/lib/components/page-not-found.component.js +3 -4
- package/esm5/lib/components/payment-list/payment-list.component.js +21 -8
- package/esm5/lib/components/payment-view/payment-view.component.js +425 -20
- package/esm5/lib/components/pba-details/pba-details.component.js +5 -6
- package/esm5/lib/components/process-refund/process-refund.component.js +469 -0
- package/esm5/lib/components/processed-payments/processed-payments.component.js +12 -7
- package/esm5/lib/components/refund-list/refund-list.component.js +134 -0
- package/esm5/lib/components/refund-status/refund-status.component.js +570 -0
- package/esm5/lib/components/reports/reports.component.js +97 -26
- package/esm5/lib/components/status-history/status-history.component.js +27 -9
- package/esm5/lib/components/table/table.component.js +214 -0
- package/esm5/lib/components/unprocessed-payments/unprocessed-payments.component.js +178 -27
- package/esm5/lib/interfaces/AddRemissionRequest.js +5 -6
- package/esm5/lib/interfaces/AddRetroRemissionRequest.js +19 -0
- package/esm5/lib/interfaces/AllocatePaymentRequest.js +9 -8
- package/esm5/lib/interfaces/IAllocationPaymentsRequest.js +2 -3
- package/esm5/lib/interfaces/IBSPayments.js +38 -35
- package/esm5/lib/interfaces/ICardDetails.js +14 -13
- package/esm5/lib/interfaces/IFee.js +44 -29
- package/esm5/lib/interfaces/IOrderReferenceFee.js +25 -0
- package/esm5/lib/interfaces/IPatchRefundAction.js +15 -0
- package/esm5/lib/interfaces/IPayment.js +56 -55
- package/esm5/lib/interfaces/IPaymentGroup.js +12 -11
- package/esm5/lib/interfaces/IPaymentStatus.js +2 -3
- package/esm5/lib/interfaces/IPaymentView.js +17 -0
- package/esm5/lib/interfaces/IPayments.js +6 -5
- package/esm5/lib/interfaces/IRefundAction.js +15 -0
- package/esm5/lib/interfaces/IRefundList.js +29 -0
- package/esm5/lib/interfaces/IRefundReasons.js +19 -0
- package/esm5/lib/interfaces/IRefundRejectReason.js +15 -0
- package/esm5/lib/interfaces/IRefundStatus.js +23 -0
- package/esm5/lib/interfaces/IRefundStatusHistory.js +15 -0
- package/esm5/lib/interfaces/IRemission.js +18 -17
- package/esm5/lib/interfaces/IResubmitRefundRequest.js +19 -0
- package/esm5/lib/interfaces/IStatusHistories.js +12 -11
- package/esm5/lib/interfaces/IStatusHistory.js +14 -13
- package/esm5/lib/interfaces/IssueRefundRequest.js +22 -0
- package/esm5/lib/interfaces/PayhubAntennaRequest.js +25 -0
- package/esm5/lib/interfaces/PaymentToPayhubRequest.js +6 -10
- package/esm5/lib/interfaces/PostIssueRefundRetroRemission.js +16 -0
- package/esm5/lib/interfaces/PostRefundRetroRemission.js +19 -0
- package/esm5/lib/interfaces/RefundsRequest.js +19 -0
- package/esm5/lib/interfaces/UnidentifiedPaymentsRequest.js +2 -3
- package/esm5/lib/interfaces/UnsolicitedPaymentsRequest.js +2 -3
- package/esm5/lib/payment-lib.component.js +99 -14
- package/esm5/lib/payment-lib.module.js +27 -6
- package/esm5/lib/payment-lib.service.js +25 -4
- package/esm5/lib/pipes/capitalize.pipe.js +32 -0
- package/esm5/lib/pipes/ccd-hyphens.pipe.js +3 -4
- package/esm5/lib/pipes/key-value.pipe.js +3 -4
- package/esm5/lib/pipes/sanitize-html.pipe.js +7 -5
- package/esm5/lib/services/bulk-scaning-payment/bulk-scaning-payment.service.js +61 -14
- package/esm5/lib/services/card-details/card-details.service.js +19 -8
- package/esm5/lib/services/case-transactions/case-transactions.service.js +19 -8
- package/esm5/lib/services/orderslist.service.js +276 -0
- package/esm5/lib/services/payment-list/payment-list.service.js +19 -8
- package/esm5/lib/services/payment-view/payment-view.service.js +142 -16
- package/esm5/lib/services/refunds/refunds.service.js +243 -0
- package/esm5/lib/services/shared/error-handler.service.js +24 -4
- package/esm5/lib/services/shared/httpclient/webcomponent.http.client.js +27 -9
- package/esm5/lib/services/shared/logger/console-logger.service.js +7 -5
- package/esm5/lib/services/shared/logger/logger.service.js +7 -5
- package/esm5/lib/services/status-history/status-history.service.js +19 -8
- package/esm5/lib/services/xl-file/xl-file.service.js +62 -51
- package/esm5/public_api.js +1 -2
- package/fesm2015/hmcts-ccpay-web-component.js +4652 -2156
- package/fesm2015/hmcts-ccpay-web-component.js.map +1 -1
- package/fesm5/hmcts-ccpay-web-component.js +7047 -2587
- package/fesm5/hmcts-ccpay-web-component.js.map +1 -1
- package/hmcts-ccpay-web-component.d.ts +30 -23
- package/hmcts-ccpay-web-component.metadata.json +1 -1
- package/lib/components/add-remission/add-remission.component.d.ts +99 -3
- package/lib/components/allocate-payments/allocate-payments.component.d.ts +29 -9
- package/lib/components/case-transactions/case-transactions.component.d.ts +69 -5
- package/lib/components/fee-summary/fee-summary.component.d.ts +16 -4
- package/lib/components/mark-unidentified-payment/mark-unidentified-payment.component.d.ts +2 -0
- package/lib/components/mark-unsolicited-payment/mark-unsolicited-payment.component.d.ts +4 -0
- package/lib/components/payment-view/payment-view.component.d.ts +41 -1
- package/lib/components/process-refund/process-refund.component.d.ts +53 -0
- package/lib/components/refund-list/refund-list.component.d.ts +23 -0
- package/lib/components/refund-status/refund-status.component.d.ts +68 -0
- package/lib/components/reports/reports.component.d.ts +4 -1
- package/lib/components/status-history/status-history.component.d.ts +1 -0
- package/lib/components/table/table.component.d.ts +36 -0
- package/lib/components/unprocessed-payments/unprocessed-payments.component.d.ts +24 -4
- package/lib/interfaces/AddRemissionRequest.d.ts +2 -2
- package/lib/interfaces/AddRetroRemissionRequest.d.ts +5 -0
- package/lib/interfaces/AllocatePaymentRequest.d.ts +16 -3
- package/lib/interfaces/IBSPayments.d.ts +1 -0
- package/lib/interfaces/IFee.d.ts +7 -0
- package/lib/interfaces/IOrderReferenceFee.d.ts +9 -0
- package/lib/interfaces/IPatchRefundAction.d.ts +4 -0
- package/lib/interfaces/IPaymentView.d.ts +5 -0
- package/lib/interfaces/IRefundAction.d.ts +4 -0
- package/lib/interfaces/IRefundList.d.ts +14 -0
- package/lib/interfaces/IRefundReasons.d.ts +6 -0
- package/lib/interfaces/IRefundRejectReason.d.ts +4 -0
- package/lib/interfaces/IRefundStatus.d.ts +8 -0
- package/lib/interfaces/IRefundStatusHistory.d.ts +5 -0
- package/lib/interfaces/IResubmitRefundRequest.d.ts +5 -0
- package/lib/interfaces/IssueRefundRequest.d.ts +6 -0
- package/lib/interfaces/PayhubAntennaRequest.d.ts +7 -0
- package/lib/interfaces/PaymentToPayhubRequest.d.ts +2 -3
- package/lib/interfaces/PostIssueRefundRetroRemission.d.ts +4 -0
- package/lib/interfaces/PostRefundRetroRemission.d.ts +5 -0
- package/lib/interfaces/RefundsRequest.d.ts +5 -0
- package/lib/payment-lib.component.d.ts +30 -4
- package/lib/payment-lib.service.d.ts +3 -0
- package/lib/pipes/capitalize.pipe.d.ts +5 -0
- package/lib/services/bulk-scaning-payment/bulk-scaning-payment.service.d.ts +2 -0
- package/lib/services/orderslist.service.d.ts +40 -0
- package/lib/services/payment-view/payment-view.service.d.ts +17 -3
- package/lib/services/refunds/refunds.service.d.ts +30 -0
- package/lib/services/xl-file/xl-file.service.d.ts +6 -6
- package/package.json +5 -1
- package/esm2015/lib/interfaces/IPaymentList.js +0 -49
- package/esm5/lib/interfaces/IPaymentList.js +0 -48
- package/lib/interfaces/IPaymentList.d.ts +0 -15
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @fileoverview added by tsickle
|
|
3
|
-
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
|
|
3
|
+
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
4
4
|
*/
|
|
5
5
|
import { Component, Input } from '@angular/core';
|
|
6
|
-
import { IPaymentList } from '../../interfaces/IPaymentList';
|
|
7
|
-
import { CaseTransactionsService } from '../../services/case-transactions/case-transactions.service';
|
|
8
6
|
import { PaymentViewService } from '../../services/payment-view/payment-view.service';
|
|
9
7
|
import { BulkScaningPaymentService } from '../../services/bulk-scaning-payment/bulk-scaning-payment.service';
|
|
10
8
|
import { PaymentLibComponent } from '../../payment-lib.component';
|
|
11
9
|
import { PaymentToPayhubRequest } from '../../interfaces/PaymentToPayhubRequest';
|
|
10
|
+
import { PayhubAntennaRequest } from '../../interfaces/PayhubAntennaRequest';
|
|
12
11
|
import { Router } from '@angular/router';
|
|
13
12
|
import { Location } from '@angular/common';
|
|
13
|
+
import { OrderslistService } from '../../services/orderslist.service';
|
|
14
14
|
/** @type {?} */
|
|
15
15
|
const BS_ENABLE_FLAG = 'bulk-scan-enabling-fe';
|
|
16
16
|
export class FeeSummaryComponent {
|
|
@@ -19,26 +19,27 @@ export class FeeSummaryComponent {
|
|
|
19
19
|
* @param {?} bulkScaningPaymentService
|
|
20
20
|
* @param {?} location
|
|
21
21
|
* @param {?} paymentViewService
|
|
22
|
-
* @param {?} caseTransactionsService
|
|
23
22
|
* @param {?} paymentLibComponent
|
|
23
|
+
* @param {?} OrderslistService
|
|
24
24
|
*/
|
|
25
|
-
constructor(router, bulkScaningPaymentService, location, paymentViewService,
|
|
25
|
+
constructor(router, bulkScaningPaymentService, location, paymentViewService, paymentLibComponent, OrderslistService) {
|
|
26
26
|
this.router = router;
|
|
27
27
|
this.bulkScaningPaymentService = bulkScaningPaymentService;
|
|
28
28
|
this.location = location;
|
|
29
29
|
this.paymentViewService = paymentViewService;
|
|
30
|
-
this.caseTransactionsService = caseTransactionsService;
|
|
31
30
|
this.paymentLibComponent = paymentLibComponent;
|
|
32
|
-
this.
|
|
31
|
+
this.OrderslistService = OrderslistService;
|
|
33
32
|
this.viewStatus = 'main';
|
|
34
33
|
this.service = "";
|
|
34
|
+
this.platForm = "";
|
|
35
35
|
this.isBackButtonEnable = true;
|
|
36
|
-
this.outStandingAmount = 0.00;
|
|
37
36
|
this.isFeeAmountZero = false;
|
|
38
|
-
this.totalAfterRemission = 0
|
|
37
|
+
this.totalAfterRemission = 0;
|
|
39
38
|
this.isConfirmationBtnDisabled = false;
|
|
40
39
|
this.isRemoveBtnDisabled = false;
|
|
41
40
|
this.isPaymentExist = false;
|
|
41
|
+
this.isRemissionsExist = false;
|
|
42
|
+
this.isRemissionsMatch = false;
|
|
42
43
|
}
|
|
43
44
|
;
|
|
44
45
|
/**
|
|
@@ -46,15 +47,39 @@ export class FeeSummaryComponent {
|
|
|
46
47
|
*/
|
|
47
48
|
ngOnInit() {
|
|
48
49
|
this.viewStatus = 'main';
|
|
50
|
+
this.caseType = this.paymentLibComponent.CASETYPE;
|
|
49
51
|
this.bsPaymentDcnNumber = this.paymentLibComponent.bspaymentdcn;
|
|
50
52
|
this.selectedOption = this.paymentLibComponent.SELECTED_OPTION.toLocaleLowerCase();
|
|
51
|
-
this.
|
|
53
|
+
this.isStrategicFixEnable = this.paymentLibComponent.ISSFENABLE;
|
|
54
|
+
this.OrderslistService.setCaseType(this.paymentLibComponent.CASETYPE);
|
|
55
|
+
if ((!this.isOldPcipalOff && this.isNewPcipalOff)) {
|
|
56
|
+
this.platForm = '8x8';
|
|
57
|
+
}
|
|
58
|
+
else if ((this.isOldPcipalOff && !this.isNewPcipalOff)) {
|
|
59
|
+
this.platForm = 'Antenna';
|
|
60
|
+
}
|
|
61
|
+
else if ((this.isOldPcipalOff && this.isNewPcipalOff)) {
|
|
62
|
+
this.platForm = '8x8';
|
|
63
|
+
}
|
|
64
|
+
this.paymentViewService.getBSfeature().subscribe((/**
|
|
65
|
+
* @param {?} features
|
|
66
|
+
* @return {?}
|
|
67
|
+
*/
|
|
68
|
+
features => {
|
|
52
69
|
/** @type {?} */
|
|
53
|
-
let result = JSON.parse(features).filter(
|
|
70
|
+
let result = JSON.parse(features).filter((/**
|
|
71
|
+
* @param {?} feature
|
|
72
|
+
* @return {?}
|
|
73
|
+
*/
|
|
74
|
+
feature => feature.uid === BS_ENABLE_FLAG));
|
|
54
75
|
this.paymentLibComponent.ISBSENABLE = result[0] ? result[0].enable : false;
|
|
55
|
-
},
|
|
76
|
+
}), (/**
|
|
77
|
+
* @param {?} err
|
|
78
|
+
* @return {?}
|
|
79
|
+
*/
|
|
80
|
+
err => {
|
|
56
81
|
this.paymentLibComponent.ISBSENABLE = false;
|
|
57
|
-
});
|
|
82
|
+
}));
|
|
58
83
|
if (this.bsPaymentDcnNumber) {
|
|
59
84
|
this.getUnassignedPaymentlist();
|
|
60
85
|
}
|
|
@@ -65,71 +90,112 @@ export class FeeSummaryComponent {
|
|
|
65
90
|
*/
|
|
66
91
|
getUnassignedPaymentlist() {
|
|
67
92
|
if (this.selectedOption === 'dcn') {
|
|
68
|
-
this.bulkScaningPaymentService.getBSPaymentsByDCN(this.paymentLibComponent.DCN_NUMBER).subscribe(
|
|
93
|
+
this.bulkScaningPaymentService.getBSPaymentsByDCN(this.paymentLibComponent.DCN_NUMBER).subscribe((/**
|
|
94
|
+
* @param {?} unassignedPayments
|
|
95
|
+
* @return {?}
|
|
96
|
+
*/
|
|
97
|
+
unassignedPayments => {
|
|
69
98
|
if (unassignedPayments['data'].payments) {
|
|
70
99
|
this.service = unassignedPayments['data'].responsible_service_id;
|
|
71
100
|
}
|
|
72
101
|
else {
|
|
73
102
|
this.upPaymentErrorMessage = 'error';
|
|
74
103
|
}
|
|
75
|
-
}, (
|
|
104
|
+
}), (/**
|
|
105
|
+
* @param {?} error
|
|
106
|
+
* @return {?}
|
|
107
|
+
*/
|
|
108
|
+
(error) => this.upPaymentErrorMessage = error));
|
|
76
109
|
}
|
|
77
110
|
else {
|
|
78
|
-
this.bulkScaningPaymentService.getBSPaymentsByCCD(this.ccdCaseNumber).subscribe(
|
|
111
|
+
this.bulkScaningPaymentService.getBSPaymentsByCCD(this.ccdCaseNumber).subscribe((/**
|
|
112
|
+
* @param {?} unassignedPayments
|
|
113
|
+
* @return {?}
|
|
114
|
+
*/
|
|
115
|
+
unassignedPayments => {
|
|
79
116
|
if (unassignedPayments['data'].payments) {
|
|
80
117
|
this.service = unassignedPayments['data'].responsible_service_id;
|
|
81
118
|
}
|
|
82
119
|
else {
|
|
83
120
|
this.upPaymentErrorMessage = 'error';
|
|
84
121
|
}
|
|
85
|
-
}, (
|
|
122
|
+
}), (/**
|
|
123
|
+
* @param {?} error
|
|
124
|
+
* @return {?}
|
|
125
|
+
*/
|
|
126
|
+
(error) => this.upPaymentErrorMessage = error));
|
|
86
127
|
}
|
|
87
128
|
}
|
|
129
|
+
/**
|
|
130
|
+
* @param {?} feeCode
|
|
131
|
+
* @return {?}
|
|
132
|
+
*/
|
|
133
|
+
getRemissionByFeeCode(feeCode) {
|
|
134
|
+
if (this.paymentGroup && this.paymentGroup.remissions && this.paymentGroup.remissions.length > 0) {
|
|
135
|
+
for (const remission of this.paymentGroup.remissions) {
|
|
136
|
+
if (remission.fee_code === feeCode) {
|
|
137
|
+
return remission;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
return null;
|
|
142
|
+
}
|
|
88
143
|
/**
|
|
89
144
|
* @param {?} fee
|
|
90
145
|
* @return {?}
|
|
91
146
|
*/
|
|
92
147
|
addRemission(fee) {
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
this.viewStatus = 'add_remission';
|
|
96
|
-
}
|
|
148
|
+
this.currentFee = fee;
|
|
149
|
+
this.viewStatus = 'add_remission';
|
|
97
150
|
}
|
|
98
151
|
/**
|
|
99
152
|
* @return {?}
|
|
100
153
|
*/
|
|
101
154
|
getPaymentGroup() {
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
fee.remission = remission;
|
|
122
|
-
}
|
|
123
|
-
});
|
|
124
|
-
}
|
|
125
|
-
this.paymentGroup.push(fee);
|
|
126
|
-
}
|
|
127
|
-
});
|
|
155
|
+
/** @type {?} */
|
|
156
|
+
let fees = [];
|
|
157
|
+
this.paymentViewService.getPaymentGroupDetails(this.paymentGroupRef).subscribe((/**
|
|
158
|
+
* @param {?} paymentGroup
|
|
159
|
+
* @return {?}
|
|
160
|
+
*/
|
|
161
|
+
paymentGroup => {
|
|
162
|
+
this.paymentGroup = paymentGroup;
|
|
163
|
+
this.isPaymentExist = paymentGroup.payments ? paymentGroup.payments.length > 0 : false;
|
|
164
|
+
this.isRemissionsExist = paymentGroup.remissions ? paymentGroup.remissions.length > 0 : false;
|
|
165
|
+
if (paymentGroup.fees) {
|
|
166
|
+
paymentGroup.fees.forEach((/**
|
|
167
|
+
* @param {?} fee
|
|
168
|
+
* @return {?}
|
|
169
|
+
*/
|
|
170
|
+
fee => {
|
|
171
|
+
this.totalAfterRemission = this.totalAfterRemission + fee.net_amount;
|
|
172
|
+
if (fee.calculated_amount === 0) {
|
|
173
|
+
this.isFeeAmountZero = true;
|
|
128
174
|
}
|
|
129
|
-
|
|
175
|
+
this.isRemissionsMatch = false;
|
|
176
|
+
paymentGroup.remissions.forEach((/**
|
|
177
|
+
* @param {?} rem
|
|
178
|
+
* @return {?}
|
|
179
|
+
*/
|
|
180
|
+
rem => {
|
|
181
|
+
if (rem.fee_code === fee.code) {
|
|
182
|
+
this.isRemissionsMatch = true;
|
|
183
|
+
fee['remissions'] = rem;
|
|
184
|
+
fees.push(fee);
|
|
185
|
+
}
|
|
186
|
+
}));
|
|
187
|
+
if (!this.isRemissionsMatch) {
|
|
188
|
+
fees.push(fee);
|
|
189
|
+
}
|
|
190
|
+
}));
|
|
191
|
+
paymentGroup.fees = fees;
|
|
130
192
|
}
|
|
131
|
-
|
|
132
|
-
}, (
|
|
193
|
+
this.outStandingAmount = this.bulkScaningPaymentService.calculateOutStandingAmount(paymentGroup);
|
|
194
|
+
}), (/**
|
|
195
|
+
* @param {?} error
|
|
196
|
+
* @return {?}
|
|
197
|
+
*/
|
|
198
|
+
(error) => this.errorMessage = error.replace(/"/g, "")));
|
|
133
199
|
}
|
|
134
200
|
/**
|
|
135
201
|
* @param {?} fee
|
|
@@ -146,7 +212,11 @@ export class FeeSummaryComponent {
|
|
|
146
212
|
*/
|
|
147
213
|
removeFee(fee) {
|
|
148
214
|
this.isRemoveBtnDisabled = true;
|
|
149
|
-
this.paymentViewService.deleteFeeFromPaymentGroup(fee).subscribe((
|
|
215
|
+
this.paymentViewService.deleteFeeFromPaymentGroup(fee).subscribe((/**
|
|
216
|
+
* @param {?} success
|
|
217
|
+
* @return {?}
|
|
218
|
+
*/
|
|
219
|
+
(success) => {
|
|
150
220
|
if (this.paymentGroup.fees && this.paymentGroup.fees.length > 1) {
|
|
151
221
|
this.totalAfterRemission = 0;
|
|
152
222
|
this.getPaymentGroup();
|
|
@@ -154,10 +224,14 @@ export class FeeSummaryComponent {
|
|
|
154
224
|
return;
|
|
155
225
|
}
|
|
156
226
|
this.loadCaseTransactionPage();
|
|
157
|
-
}, (
|
|
227
|
+
}), (/**
|
|
228
|
+
* @param {?} error
|
|
229
|
+
* @return {?}
|
|
230
|
+
*/
|
|
231
|
+
(error) => {
|
|
158
232
|
this.errorMessage = error;
|
|
159
233
|
this.isRemoveBtnDisabled = false;
|
|
160
|
-
});
|
|
234
|
+
}));
|
|
161
235
|
}
|
|
162
236
|
/**
|
|
163
237
|
* @return {?}
|
|
@@ -165,13 +239,37 @@ export class FeeSummaryComponent {
|
|
|
165
239
|
loadCaseTransactionPage() {
|
|
166
240
|
this.paymentLibComponent.TAKEPAYMENT = true;
|
|
167
241
|
this.paymentLibComponent.viewName = 'case-transactions';
|
|
168
|
-
this.paymentViewService.getBSfeature().subscribe(
|
|
242
|
+
this.paymentViewService.getBSfeature().subscribe((/**
|
|
243
|
+
* @param {?} features
|
|
244
|
+
* @return {?}
|
|
245
|
+
*/
|
|
246
|
+
features => {
|
|
169
247
|
/** @type {?} */
|
|
170
|
-
let result = JSON.parse(features).filter(
|
|
248
|
+
let result = JSON.parse(features).filter((/**
|
|
249
|
+
* @param {?} feature
|
|
250
|
+
* @return {?}
|
|
251
|
+
*/
|
|
252
|
+
feature => feature.uid === BS_ENABLE_FLAG));
|
|
171
253
|
this.paymentLibComponent.ISBSENABLE = result[0] ? result[0].enable : false;
|
|
172
|
-
},
|
|
254
|
+
}), (/**
|
|
255
|
+
* @param {?} err
|
|
256
|
+
* @return {?}
|
|
257
|
+
*/
|
|
258
|
+
err => {
|
|
173
259
|
this.paymentLibComponent.ISBSENABLE = false;
|
|
174
|
-
});
|
|
260
|
+
}));
|
|
261
|
+
/** @type {?} */
|
|
262
|
+
let partUrl = `selectedOption=${this.paymentLibComponent.SELECTED_OPTION}`;
|
|
263
|
+
partUrl += this.bsPaymentDcnNumber ? `&dcn=${this.bsPaymentDcnNumber}` : '';
|
|
264
|
+
partUrl += this.paymentLibComponent.ISBSENABLE ? '&isBulkScanning=Enable' : '&isBulkScanning=Disable';
|
|
265
|
+
partUrl += this.paymentLibComponent.ISTURNOFF ? '&isTurnOff=Enable' : '&isTurnOff=Disable';
|
|
266
|
+
partUrl += this.paymentLibComponent.ISSFENABLE ? '&isStFixEnable=Enable' : '&isStFixEnable=Disable';
|
|
267
|
+
partUrl += `&caseType=${this.paymentLibComponent.CASETYPE}`;
|
|
268
|
+
partUrl += this.isNewPcipalOff ? '&isNewPcipalOff=Enable' : '&isNewPcipalOff=Disable';
|
|
269
|
+
partUrl += this.isOldPcipalOff ? '&isOldPcipalOff=Enable' : '&isOldPcipalOff=Disable';
|
|
270
|
+
/** @type {?} */
|
|
271
|
+
let url = `/payment-history/${this.ccdCaseNumber}?view=case-transactions&takePayment=true&${partUrl}`;
|
|
272
|
+
this.router.navigateByUrl(url);
|
|
175
273
|
}
|
|
176
274
|
/**
|
|
177
275
|
* @return {?}
|
|
@@ -187,15 +285,19 @@ export class FeeSummaryComponent {
|
|
|
187
285
|
redirectToFeeSearchPage(event, page) {
|
|
188
286
|
event.preventDefault();
|
|
189
287
|
/** @type {?} */
|
|
190
|
-
let
|
|
191
|
-
|
|
192
|
-
|
|
288
|
+
let partUrl = this.bsPaymentDcnNumber ? `&dcn=${this.bsPaymentDcnNumber}` : '';
|
|
289
|
+
partUrl += this.paymentLibComponent.ISBSENABLE ? '&isBulkScanning=Enable' : '&isBulkScanning=Disable';
|
|
290
|
+
partUrl += this.paymentLibComponent.ISTURNOFF ? '&isTurnOff=Enable' : '&isTurnOff=Disable';
|
|
291
|
+
partUrl += this.paymentLibComponent.ISSFENABLE ? '&isStFixEnable=Enable' : '&isStFixEnable=Disable';
|
|
292
|
+
partUrl += `&caseType=${this.paymentLibComponent.CASETYPE}`;
|
|
293
|
+
partUrl += this.isNewPcipalOff ? '&isNewPcipalOff=Enable' : '&isNewPcipalOff=Disable';
|
|
294
|
+
partUrl += this.isOldPcipalOff ? '&isOldPcipalOff=Enable' : '&isOldPcipalOff=Disable';
|
|
193
295
|
if (this.viewStatus === 'feeRemovalConfirmation' || this.viewStatus === 'add_remission') {
|
|
194
296
|
this.viewStatus = 'main';
|
|
195
297
|
return;
|
|
196
298
|
}
|
|
197
299
|
/** @type {?} */
|
|
198
|
-
let url = `/fee-search?ccdCaseNumber=${this.ccdCaseNumber}&selectedOption=${this.paymentLibComponent.SELECTED_OPTION}&paymentGroupRef=${this.paymentGroupRef}${
|
|
300
|
+
let url = `/fee-search?ccdCaseNumber=${this.ccdCaseNumber}&selectedOption=${this.paymentLibComponent.SELECTED_OPTION}&paymentGroupRef=${this.paymentGroupRef}${partUrl}`;
|
|
199
301
|
this.router.navigateByUrl(url);
|
|
200
302
|
}
|
|
201
303
|
/**
|
|
@@ -204,34 +306,47 @@ export class FeeSummaryComponent {
|
|
|
204
306
|
takePayment() {
|
|
205
307
|
this.isConfirmationBtnDisabled = true;
|
|
206
308
|
/** @type {?} */
|
|
207
|
-
const
|
|
208
|
-
/** @type {?} */
|
|
209
|
-
const requestBody = new PaymentToPayhubRequest(this.ccdCaseNumber, this.outStandingAmount, this.service, seriveName);
|
|
309
|
+
const requestBody = new PaymentToPayhubRequest(this.ccdCaseNumber, this.outStandingAmount, this.caseType);
|
|
210
310
|
/** @type {?} */
|
|
211
|
-
const
|
|
212
|
-
this.
|
|
213
|
-
this.
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
311
|
+
const antennaReqBody = new PayhubAntennaRequest(this.ccdCaseNumber, this.outStandingAmount, this.caseType);
|
|
312
|
+
if (this.platForm === '8x8') {
|
|
313
|
+
this.paymentViewService.postPaymentToPayHub(requestBody, this.paymentGroupRef).subscribe((/**
|
|
314
|
+
* @param {?} response
|
|
315
|
+
* @return {?}
|
|
316
|
+
*/
|
|
317
|
+
response => {
|
|
318
|
+
this.location.go(`payment-history?view=fee-summary`);
|
|
319
|
+
this.payhubHtml = response;
|
|
320
|
+
this.viewStatus = 'payhub_view';
|
|
321
|
+
this.isBackButtonEnable = false;
|
|
322
|
+
}), (/**
|
|
323
|
+
* @param {?} error
|
|
324
|
+
* @return {?}
|
|
325
|
+
*/
|
|
326
|
+
(error) => {
|
|
327
|
+
this.errorMessage = error;
|
|
328
|
+
this.isConfirmationBtnDisabled = false;
|
|
329
|
+
this.router.navigateByUrl('/pci-pal-failure');
|
|
330
|
+
}));
|
|
331
|
+
}
|
|
332
|
+
else if (this.platForm === 'Antenna') {
|
|
333
|
+
this.paymentViewService.postPaymentAntennaToPayHub(antennaReqBody, this.paymentGroupRef).subscribe((/**
|
|
334
|
+
* @param {?} response
|
|
335
|
+
* @return {?}
|
|
336
|
+
*/
|
|
337
|
+
response => {
|
|
338
|
+
this.isBackButtonEnable = false;
|
|
339
|
+
window.location.href = '/makePaymentByTelephoneyProvider';
|
|
340
|
+
}), (/**
|
|
341
|
+
* @param {?} error
|
|
342
|
+
* @return {?}
|
|
343
|
+
*/
|
|
344
|
+
(error) => {
|
|
345
|
+
this.errorMessage = error;
|
|
346
|
+
this.isConfirmationBtnDisabled = false;
|
|
347
|
+
this.router.navigateByUrl('/pci-pal-failure');
|
|
348
|
+
}));
|
|
349
|
+
}
|
|
235
350
|
}
|
|
236
351
|
/**
|
|
237
352
|
* @param {?} outStandingAmount
|
|
@@ -247,184 +362,20 @@ export class FeeSummaryComponent {
|
|
|
247
362
|
this.loadCaseTransactionPage();
|
|
248
363
|
}
|
|
249
364
|
}
|
|
365
|
+
/**
|
|
366
|
+
* @param {?} amountDue
|
|
367
|
+
* @return {?}
|
|
368
|
+
*/
|
|
369
|
+
isCheckAmountdueExist(amountDue) {
|
|
370
|
+
return typeof amountDue === 'undefined';
|
|
371
|
+
}
|
|
250
372
|
}
|
|
251
373
|
FeeSummaryComponent.decorators = [
|
|
252
374
|
{ type: Component, args: [{
|
|
253
375
|
selector: 'ccpay-fee-summary',
|
|
254
|
-
template: `
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
<li class="govuk-breadcrumbs__list-item">
|
|
258
|
-
<a (click)="redirectToFeeSearchPage($event)" class="govuk-back-link govuk-label">Back</a>
|
|
259
|
-
</li>
|
|
260
|
-
</ol>
|
|
261
|
-
</div>
|
|
262
|
-
|
|
263
|
-
<div class="fee-summary" *ngIf="viewStatus === 'main'">
|
|
264
|
-
<main class="govuk-main-wrapper">
|
|
265
|
-
<div class="govuk-grid-row">
|
|
266
|
-
<div class="govuk-grid-column-two-thirds">
|
|
267
|
-
<h1 class="heading-xlarge">Fee Summary</h1>
|
|
268
|
-
</div>
|
|
269
|
-
<div class="govuk-grid-column-one-third" align="right">
|
|
270
|
-
<a (click)="redirectToFeeSearchPage($event,'summary')" class="button">Add a new fee</a>
|
|
271
|
-
</div>
|
|
272
|
-
</div>
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
<div *ngIf="errorMessage">
|
|
276
|
-
<div class="error-summary" role="group" aria-labelledby="failure-error-summary-heading" tabindex="-1">
|
|
277
|
-
<h2 class="heading-medium error-summary-heading" id="failure-error-summary-heading">
|
|
278
|
-
Payment Group details could not be retrieved
|
|
279
|
-
</h2>
|
|
280
|
-
<div class="govuk-error-summary__body">
|
|
281
|
-
{{ errorMessage }}
|
|
282
|
-
</div>
|
|
283
|
-
</div>
|
|
284
|
-
</div>
|
|
285
|
-
|
|
286
|
-
<table class="govuk-table" *ngIf="!errorMessage && paymentGroup">
|
|
287
|
-
<thead class="govuk-table__head">
|
|
288
|
-
<tr class="govuk-table__row">
|
|
289
|
-
<th class="govuk-table__header govuk-!-font-weight-bold" scope="col">Fee Code</th>
|
|
290
|
-
<th class="govuk-table__header govuk-!-font-weight-bold" scope="col">Fee description</th>
|
|
291
|
-
<th class="govuk-table__header govuk-!-font-weight-bold" scope="col">Remission code</th>
|
|
292
|
-
<th class="govuk-table__header govuk-!-font-weight-bold" scope="col"></th>
|
|
293
|
-
</tr>
|
|
294
|
-
</thead>
|
|
295
|
-
<tbody class="govuk-table__body" *ngIf="paymentGroup.length > 0">
|
|
296
|
-
<tr class="govuk-table__row" *ngFor="let fee of paymentGroup; let i = index;">
|
|
297
|
-
<td class="govuk-table__cell">{{ fee.code }}</td>
|
|
298
|
-
<td class="govuk-table__cell">{{ fee.description }}</td>
|
|
299
|
-
<td class="govuk-table__cell">{{ fee.remission?.hwf_reference }}</td>
|
|
300
|
-
<td class="govuk-table__cell grey-text">
|
|
301
|
-
<table class="govuk-table">
|
|
302
|
-
<tr class="govuk-table__row">
|
|
303
|
-
<td class="no-border grey-text subcolumn-1">Fee amount:</td>
|
|
304
|
-
<td class="no-border subcolumn-2">{{ fee.fee_amount | currency:'GBP':'symbol-narrow':'1.2-2' }}</td>
|
|
305
|
-
<td class="no-border subcolumn-3"><a *ngIf="!(fee.isPaymentExist && i === 0)" (click)="confirmRemoveFee(fee.id)">remove fee</a></td>
|
|
306
|
-
</tr>
|
|
307
|
-
<tr class="govuk-table__row" *ngIf="fee.volume && fee.volume > 0">
|
|
308
|
-
<td class="no-border grey-text subcolumn-1">Volume:</td>
|
|
309
|
-
<td class="no-border subcolumn-2">{{ fee.volume }}</td>
|
|
310
|
-
<td class="no-border subcolumn-3"></td>
|
|
311
|
-
</tr>
|
|
312
|
-
<tr class="govuk-table__row">
|
|
313
|
-
<td class="no-border grey-text subcolumn-1">Fee total:</td>
|
|
314
|
-
<td class="no-border subcolumn-2">{{ fee.calculated_amount | currency:'GBP':'symbol-narrow':'1.2-2' }}</td>
|
|
315
|
-
<td class="no-border subcolumn-3"></td>
|
|
316
|
-
</tr>
|
|
317
|
-
<tr class="govuk-table__row">
|
|
318
|
-
<td class="no-border grey-text subcolumn-1">Remission amount:</td>
|
|
319
|
-
<td class="no-border subcolumn-2">{{ fee.remission?.hwf_amount ? (fee.remission?.hwf_amount | currency:'GBP':'symbol-narrow':'1.2-2') : '-' }}</td>
|
|
320
|
-
<td class="no-border subcolumn-3"> <a (click)="addRemission(fee)" [ngClass]="{'remissionDisable': !service}" *ngIf="fee.remission?.hwf_amount === 0 || !fee.remission?.hwf_amount">Deduct remission</a></td>
|
|
321
|
-
</tr>
|
|
322
|
-
<tr class="govuk-table__row">
|
|
323
|
-
<td class="no-border grey-text subcolumn-1">Total after remission:</td>
|
|
324
|
-
<td class="no-border subcolumn-2">{{ fee.net_amount | currency:'GBP':'symbol-narrow':'1.2-2' }}</td>
|
|
325
|
-
<td class="no-border subcolumn-3"></td>
|
|
326
|
-
</tr>
|
|
327
|
-
</table>
|
|
328
|
-
</td>
|
|
329
|
-
</tr>
|
|
330
|
-
<tr class="govuk-table__row">
|
|
331
|
-
<td class="no-border"></td>
|
|
332
|
-
<td class="no-border"></td>
|
|
333
|
-
<td class="no-border"></td>
|
|
334
|
-
<td class="no-border">
|
|
335
|
-
<table class="govuk-table">
|
|
336
|
-
<tr class="govuk-table__row">
|
|
337
|
-
<td class="no-border govuk-!-font-weight-bold subcolumn-1">Total payment</td>
|
|
338
|
-
<td class="no-border subcolumn-2">{{ totalAfterRemission - outStandingAmount | currency:'GBP':'symbol-narrow':'1.2-2'}}</td>
|
|
339
|
-
<td class="no-border subcolumn-3"></td>
|
|
340
|
-
</tr>
|
|
341
|
-
<tr class="govuk-table__row">
|
|
342
|
-
<td class="no-border govuk-!-font-weight-bold subcolumn-1">Total outstanding amount</td>
|
|
343
|
-
<td class="no-border subcolumn-2">{{ outStandingAmount | currency:'GBP':'symbol-narrow':'1.2-2'}}</td>
|
|
344
|
-
<td class="no-border subcolumn-3"></td>
|
|
345
|
-
</tr>
|
|
346
|
-
</table>
|
|
347
|
-
</td>
|
|
348
|
-
</tr>
|
|
349
|
-
|
|
350
|
-
<tr class="govuk-table__row" *ngIf="!bsPaymentDcnNumber">
|
|
351
|
-
<td class="no-border"></td>
|
|
352
|
-
<td class="no-border"></td>
|
|
353
|
-
<td class="no-border"></td>
|
|
354
|
-
<td class="no-border">
|
|
355
|
-
<div class="govuk-form-group govuk-form-group--mg">
|
|
356
|
-
<label class="govuk-label custom-govuk-label govuk-fieldset__heading--fz" for="responsibleOffice">
|
|
357
|
-
<strong>What service is this fee for?</strong>
|
|
358
|
-
</label>
|
|
359
|
-
<select class="govuk-select govuk-select--custom" id="responsibleOffice" [(ngModel)]="service" name="responsibleOffice">
|
|
360
|
-
<option value="" selected='selected'>Please select</option>
|
|
361
|
-
<option value="AA07">Divorce</option>
|
|
362
|
-
<option value="ABA3">Family Public Law</option>
|
|
363
|
-
<option value="AA08">Probate</option>
|
|
364
|
-
</select>
|
|
365
|
-
</div>
|
|
366
|
-
</td>
|
|
367
|
-
</tr>
|
|
368
|
-
</tbody>
|
|
369
|
-
<tr class="govuk-table__row">
|
|
370
|
-
<td class="no-border"></td>
|
|
371
|
-
<td class="no-border"></td>
|
|
372
|
-
<td class="no-border"></td>
|
|
373
|
-
<td class="no-border">
|
|
374
|
-
<table class="govuk-table">
|
|
375
|
-
<tr class="govuk-table__row">
|
|
376
|
-
<td class="no-border subcolumn-2">
|
|
377
|
-
<button *ngIf="!bsPaymentDcnNumber" type="submit" (click)="takePayment()"
|
|
378
|
-
[disabled]="totalFee <= 0 || !service || isConfirmationBtnDisabled"
|
|
379
|
-
[ngClass]='totalFee <= 0 || !service || isConfirmationBtnDisabled? "button button--disabled govuk-!-margin-right-1" : "button govuk-!-margin-right-1"'>
|
|
380
|
-
Take payment
|
|
381
|
-
</button>
|
|
382
|
-
<button *ngIf="bsPaymentDcnNumber" type="button" (click)="goToAllocatePage(outStandingAmount, isFeeAmountZero)" class="button govuk-!-margin-right-1">
|
|
383
|
-
<span *ngIf="outStandingAmount > 0 || (isFeeAmountZero && outStandingAmount === 0)">
|
|
384
|
-
Allocate payment
|
|
385
|
-
</span>
|
|
386
|
-
<span *ngIf="outStandingAmount < 0 || (!isFeeAmountZero && outStandingAmount === 0)">
|
|
387
|
-
Continue
|
|
388
|
-
</span>
|
|
389
|
-
</button>
|
|
390
|
-
</td>
|
|
391
|
-
</tr>
|
|
392
|
-
</table>
|
|
393
|
-
</td>
|
|
394
|
-
</tr>
|
|
395
|
-
</tbody>
|
|
396
|
-
</table>
|
|
397
|
-
</main>
|
|
398
|
-
</div>
|
|
399
|
-
|
|
400
|
-
<ng-container *ngIf="viewStatus === 'feeRemovalConfirmation'">
|
|
401
|
-
<div class="govuk-warning-text">
|
|
402
|
-
<span class="govuk-warning-text__icon" aria-hidden="true">!</span>
|
|
403
|
-
<strong class="govuk-warning-text__text">
|
|
404
|
-
<span class="govuk-warning-text__assistive">Warning</span>
|
|
405
|
-
Are you sure you want to delete this fee?
|
|
406
|
-
</strong>
|
|
407
|
-
</div>
|
|
408
|
-
<div class="govuk-button-grb">
|
|
409
|
-
<form novalidate>
|
|
410
|
-
<button type="submit" class="button govuk-button--secondary" (click)="cancelRemission()">
|
|
411
|
-
Cancel
|
|
412
|
-
</button>
|
|
413
|
-
<button type="submit" class="button"
|
|
414
|
-
[disabled]="isRemoveBtnDisabled"
|
|
415
|
-
[ngClass]='isRemoveBtnDisabled ? "button button--disabled govuk-!-margin-right-1" : "button govuk-!-margin-right-1"'
|
|
416
|
-
(click)="removeFee(currentFee)">
|
|
417
|
-
Remove
|
|
418
|
-
</button>
|
|
419
|
-
</form>
|
|
420
|
-
</div>
|
|
421
|
-
</ng-container>
|
|
422
|
-
|
|
423
|
-
<ccpay-add-remission *ngIf="viewStatus === 'add_remission' && currentFee" [fee]="currentFee" [service]="service" [ccdCaseNumber]="ccdCaseNumber" [paymentGroupRef]="paymentGroupRef" (cancelRemission)="cancelRemission()"></ccpay-add-remission>
|
|
424
|
-
<div *ngIf="viewStatus === 'payhub_view' && payhubHtml" [innerHTML]="payhubHtml | sanitizeHtml" id="payhub-html-id"></div>
|
|
425
|
-
`,
|
|
426
|
-
styles: [`.fee-summary .grey-text{color:#6b7376;font-weight:500}.fee-summary .govuk-table{margin-bottom:0}.fee-summary .no-border{border:none;border-bottom:none}.fee-summary table td,.fee-summary table th{font-size:15px;font-weight:500;vertical-align:top;max-width:320px}.fee-summary table td .no-padding,.fee-summary table th .no-padding{padding:0}.fee-summary table td .subcolumn-1,.fee-summary table th .subcolumn-1{width:45%}.fee-summary table td .subcolumn-2,.fee-summary table th .subcolumn-2{width:25%;text-align:right}.fee-summary table td .subcolumn-3,.fee-summary table th .subcolumn-3{width:30%;text-align:center}.govuk-button-grb{padding-bottom:20px}.govuk-button-grb .govuk-button--secondary{background-color:#dee0e2;box-shadow:0 2px 0 #858688;color:#0b0c0c;margin-right:10px}.govuk-form-group--mg{margin-top:10px!important}.govuk-fieldset__heading--fz{font-size:16px}.remissionDisable{color:grey;cursor:default}.heading-xlarge{margin:0 0 14px -20px}.govuk-select--custom{width:50%}`]
|
|
427
|
-
},] },
|
|
376
|
+
template: "\n<div class=\"govuk-breadcrumbs\" *ngIf=\"isBackButtonEnable\">\n <ol class=\"govuk-breadcrumbs__list\">\n <li class=\"govuk-breadcrumbs__list-item\" *ngIf=\"!isTurnOff\">\n <a (click)=\"loadCaseTransactionPage()\" class=\"govuk-back-link govuk-label\">Back</a>\n </li>\n <li class=\"govuk-breadcrumbs__list-item\" *ngIf=\"isTurnOff\">\n <a (click)=\"redirectToFeeSearchPage($event,'summary')\" class=\"govuk-back-link govuk-label\">Back</a>\n </li>\n </ol>\n</div>\n<div class=\"fee-summary\" *ngIf=\"viewStatus === 'main'\">\n <main class=\"govuk-main-wrapper\">\n <input #myInput type='hidden' id='iFrameDrivenImageValue' value='FEESUMMARY'>\n <div class=\"summaryheader\">\n <h1 class=\"heading-large govuk-!-margin-top-3 govuk-!-margin-bottom-4\">Summary </h1>\n <p class=\"govuk-!-margin-top-5 caseref\">Case reference:{{ccdCaseNumber | ccdHyphens}}</p>\n </div>\n\n <!-- <div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-two-thirds\">\n <h1 class=\"heading-xlarge\">Fee Summary</h1>\n </div>\n\n\n \u00A0<div\u00A0class=\"govuk-grid-column-one-third\"\u00A0align=\"right\">\n \u00A0\u00A0\u00A0\u00A0\u00A0\u00A0<button\u00A0 *ngIf=\"!isTurnOff\" (click)=\"redirectToFeeSearchPage($event,'summary')\"\n \u00A0\u00A0\u00A0\u00A0\u00A0\u00A0[disabled]=\"isPaymentExist\"\n \u00A0\u00A0\u00A0\u00A0\u00A0\u00A0[ngClass]='isPaymentExist ?\u00A0\"button\u00A0button--disabled govuk-!-margin-right-1\"\u00A0:\u00A0\"button govuk-!-margin-right-1\"'>\n Add a new fee\n </button>\n\n <a *ngIf=\"isTurnOff\" (click)=\"redirectToFeeSearchPage($event,'summary')\" class=\"button\">Add a new fee</a>\t\n </div>\n </div> -->\n\n\n <div *ngIf=\"errorMessage\">\n <div class=\"error-summary\" role=\"group\" aria-labelledby=\"failure-error-summary-heading\" tabindex=\"-1\">\n <h2 class=\"heading-medium error-summary-heading\" id=\"failure-error-summary-heading\">\n Payment Group details could not be retrieved\n </h2>\n <div class=\"govuk-error-summary__body\">\n {{ errorMessage }}\n </div>\n </div>\n </div>\n\n <!-- <table class=\"govuk-table\" *ngIf=\"!errorMessage && paymentGroup\">\n <thead class=\"govuk-table__head\">\n <tr class=\"govuk-table__row\">\n <th class=\"govuk-table__header govuk-!-font-weight-bold\" scope=\"col\">Fee Code</th>\n <th class=\"govuk-table__header govuk-!-font-weight-bold\" scope=\"col\">Fee description</th>\n <th class=\"govuk-table__header govuk-!-font-weight-bold\" scope=\"col\">Remission code</th>\n <th class=\"govuk-table__header govuk-!-font-weight-bold\" scope=\"col\"></th>\n </tr>\n </thead>\n <tbody class=\"govuk-table__body\" *ngIf=\"paymentGroup.fees\">\n <tr class=\"govuk-table__row\" *ngFor=\"let fee of paymentGroup.fees; let i = index;\">\n <td class=\"govuk-table__cell\">{{ fee.code }}</td>\n <td class=\"govuk-table__cell\">{{ fee.description }}</td>\n <td class=\"govuk-table__cell\">{{ getRemissionByFeeCode(fee.code)?.hwf_reference }}</td>\n <td class=\"govuk-table__cell grey-text\">\n <table class=\"govuk-table\">\n <tr class=\"govuk-table__row\">\n <td class=\"no-border grey-text subcolumn-1\">Fee amount:</td>\n <td class=\"no-border subcolumn-2\">{{ fee.fee_amount | currency:'GBP':'symbol-narrow':'1.2-2' }}</td>\n <td class=\"no-border subcolumn-3\" *ngIf=\"!isTurnOff\">\n <a (click)=\"confirmRemoveFee(fee.id)\" [ngClass]='isPaymentExist || fee.remissions ? \"disable-link\" : \"\"'>remove fee</a>\n </td>\n <td class=\"no-border subcolumn-3\" *ngIf=\"isTurnOff\">\n <a (click)=\"confirmRemoveFee(fee.id)\">remove fee</a>\n </td>\n </tr>\n <tr class=\"govuk-table__row\" *ngIf=\"fee.volume && fee.volume > 0\">\n <td class=\"no-border grey-text subcolumn-1\">Volume:</td>\n <td class=\"no-border subcolumn-2\">{{ fee.volume }}</td>\n <td class=\"no-border subcolumn-3\"></td>\n </tr>\n <tr class=\"govuk-table__row\">\n <td class=\"no-border grey-text subcolumn-1\">Fee total:</td>\n <td class=\"no-border subcolumn-2\">{{ fee.calculated_amount | currency:'GBP':'symbol-narrow':'1.2-2' }}</td>\n <td class=\"no-border subcolumn-3\"></td>\n </tr>\n <tr class=\"govuk-table__row\">\n <td class=\"no-border grey-text subcolumn-1\">Remission amount:</td>\n <td class=\"no-border subcolumn-2\">{{ getRemissionByFeeCode(fee.code)?.hwf_amount? ( getRemissionByFeeCode(fee.code)?.hwf_amount | currency:'GBP':'symbol-narrow':'1.2-2') : '-' }}</td>\n <td class=\"no-border subcolumn-3\" *ngIf=\"!isTurnOff\"> \n <a (click)=\"addRemission(fee)\" *ngIf=\"(getRemissionByFeeCode(fee.code)?.hwf_amount === 0 || !getRemissionByFeeCode(fee.code)?.hwf_amount) && !isPaymentExist\">\n Deduct remission\n </a>\n </td>\n <td class=\"no-border subcolumn-3\" *ngIf=\"isTurnOff\"> \n <a (click)=\"addRemission(fee)\" *ngIf=\"getRemissionByFeeCode(fee.code)?.hwf_amount === 0 || !getRemissionByFeeCode(fee.code)?.hwf_amount\">\n Deduct remission\n </a>\n </td>\n </tr>\n <tr class=\"govuk-table__row\">\n <td class=\"no-border grey-text subcolumn-1\">Total after remission:</td>\n <td class=\"no-border subcolumn-2\">{{ fee.net_amount | currency:'GBP':'symbol-narrow':'1.2-2' }}</td>\n <td class=\"no-border subcolumn-3\"></td>\n </tr>\n </table>\n </td>\n </tr>\n <tr class=\"govuk-table__row\">\n <td class=\"no-border\"></td>\n <td class=\"no-border\"></td>\n <td class=\"no-border\"></td>\n <td class=\"no-border\">\n <table class=\"govuk-table\">\n <tr class=\"govuk-table__row\">\n <td class=\"no-border govuk-!-font-weight-bold subcolumn-1\">Total payment</td>\n <td class=\"no-border subcolumn-2\">{{ totalAfterRemission - outStandingAmount | currency:'GBP':'symbol-narrow':'1.2-2'}}</td>\n <td class=\"no-border subcolumn-3\"></td>\n </tr>\n <tr class=\"govuk-table__row\">\n <td class=\"no-border govuk-!-font-weight-bold subcolumn-1\">Total outstanding amount</td>\n <td class=\"no-border subcolumn-2\">{{ outStandingAmount | currency:'GBP':'symbol-narrow':'1.2-2'}}</td>\n <td class=\"no-border subcolumn-3\"></td>\n </tr>\n </table>\n </td>\n </tr>\n <tr class=\"govuk-table__row\" *ngIf=\"!bsPaymentDcnNumber && isOldPcipalOff && isNewPcipalOff\">\n <td class=\"no-border\"></td>\n <td class=\"no-border\"></td>\n <td class=\"no-border\"></td>\n <td class=\"no-border\">\n <div class=\"govuk-form-group govuk-form-group--mg\">\n <fieldset class=\"govuk-fieldset\">\n <legend class=\"govuk-fieldset__legend govuk-fieldset__legend--m\">\n <span class=\"govuk-fieldset__heading govuk-fieldset__heading--fz\">\n Which system are you using to take the payment?\n </span>\n </legend>\n <div class=\"govuk-radios govuk-radios--small\">\n <div class=\"govuk-radios__item\">\n <input id=\"changed-name\" class=\"govuk-radios__input\" [(ngModel)]=\"platForm\" type=\"radio\" aria-label=\"8x8\" value=\"8x8\">\t\n <label class=\"govuk-label govuk-radios__label\" for=\"changed-name\">\t\n 8x8\t\n </label>\t\n </div>\t\n <div class=\"govuk-radios__item\">\t\n <input id=\"changed-name-2\" class=\"govuk-radios__input\" [(ngModel)]=\"platForm\" type=\"radio\" aria-label=\"Antenna\" value=\"Antenna\">\t\n <label class=\"govuk-label govuk-radios__label\" for=\"changed-name-2\">\t\n Antenna\t\n </label>\t\n </div>\t\n </div>\t\n </fieldset>\n </div>\n </td>\n </tr>\n </tbody>\n <tr class=\"govuk-table__row\">\n <td class=\"no-border\"></td>\n <td class=\"no-border\"></td>\n <td class=\"no-border\"></td>\n <td class=\"no-border\">\n <table class=\"govuk-table\">\n <tr class=\"govuk-table__row\">\n <td class=\"no-border subcolumn-2\"> \n <button *ngIf=\"!bsPaymentDcnNumber\" type=\"submit\" (click)=\"takePayment()\"\n [disabled]=\"totalFee <= 0 || !platForm || isConfirmationBtnDisabled\"\n [ngClass]='totalFee <= 0 || !platForm || isConfirmationBtnDisabled? \"button button--disabled govuk-!-margin-right-1\" : \"button govuk-!-margin-right-1\"'>\n Take payment\n </button>\n <button *ngIf=\"bsPaymentDcnNumber\" type=\"button\" (click)=\"goToAllocatePage(outStandingAmount, isFeeAmountZero)\" class=\"button govuk-!-margin-right-1\">\n <span *ngIf=\"outStandingAmount > 0 || (isFeeAmountZero && outStandingAmount === 0)\">\n Allocate payment\n </span>\n <span *ngIf=\"outStandingAmount < 0 || (!isFeeAmountZero && outStandingAmount === 0)\">\n Continue\n </span>\n </button>\n </td>\n </tr>\n </table>\n </td>\n </tr>\n </tbody>\n </table> -->\n\n <div class=\"govuk-!-margin-top-3\">\n <table class=\"govuk-table govuk-!-margin-bottom-2\" *ngIf=\"!errorMessage && paymentGroup\">\n <thead class=\"govuk-table__head\">\n <tr class=\"govuk-table__row\">\n <th class=\"govuk-table__header\" scope=\"col\" class=\"class600\">Description</th>\n <th class=\"govuk-table__header\" scope=\"col\" class=\"class60\">Quantity</th>\n <th class=\"govuk-table__header\" scope=\"col\" class=\"class80\"></th>\n <th class=\"govuk-table__header\" scope=\"col\" class=\"class100\">Amount</th>\n </tr>\n </thead>\n\n <tbody class=\"govuk-table__body\" *ngIf=\"paymentGroup.fees\">\n <tr class=\"govuk-table__row\" *ngFor=\"let fee of paymentGroup.fees; let i = index;\">\n <td class=\"govuk-table__cell\">{{ fee.description }}\n \n <span class=\"no-border\" *ngIf=\"(isPaymentExist || (getRemissionByFeeCode(fee.code)?.hwf_amount === 0 || !getRemissionByFeeCode(fee.code)?.hwf_amount)) && !isTurnOff\">\n \n \n <a (click)=\"confirmRemoveFee(fee.id)\" *ngIf=\"(!isPaymentExist || !fee.remissions)\" [ngClass]='isPaymentExist || fee.remissions? \"disable-link\" : \"\"'> <br>Remove</a>\n </span>\n\n <span class=\"no-border\" *ngIf=\"(!isPaymentExist || (getRemissionByFeeCode(fee.code)?.hwf_amount === 0 || !getRemissionByFeeCode(fee.code)?.hwf_amount)) && isTurnOff \">\n <a (click)=\"confirmRemoveFee(fee.id)\">Remove</a>\n </span>\n \n <a (click)=\"addRemission(fee)\" class=\"remissionActive\" *ngIf=\"(getRemissionByFeeCode(fee.code)?.hwf_amount === 0 || !getRemissionByFeeCode(fee.code)?.hwf_amount) && !isPaymentExist && !isTurnOff\">\n Add help with fees or remission\n </a>\n <a (click)=\"addRemission(fee)\" class=\"remissionActive\" *ngIf=\"(getRemissionByFeeCode(fee.code)?.hwf_amount === 0 || !getRemissionByFeeCode(fee.code)?.hwf_amount) && isTurnOff\">\n Add help with fees or remission\n </a>\n <span *ngIf = \"getRemissionByFeeCode(fee.code)?.hwf_amount > 0\">\n <br>\n <div class=\"govuk-table__cell_border\" *ngIf = \"getRemissionByFeeCode(fee.code)?.hwf_amount > 0\">Remission,{{ getRemissionByFeeCode(fee.code)?.hwf_reference }}</div>\n </span>\n </td>\n \n <td class=\"govuk-table__cell\" *ngIf=\"fee.volume && fee.volume > 0\">\n {{ fee.volume }}\n <span *ngIf = \"getRemissionByFeeCode(fee.code)?.hwf_amount > 0\">\n <br>\n <div class=\"govuk-table__cell_border\">1</div>\n </span>\n </td>\n \n <td class=\"govuk-table__cell alignright\">\n <br>\n <div *ngIf = \"getRemissionByFeeCode(fee.code)?.hwf_amount > 0\" class=\"govuk-table__cell_border\"> <br><br></div>\n </td>\n <td class=\"govuk-table__cell alignright\" >\n {{ fee.calculated_amount | currency:'GBP':'symbol-narrow':'1.2-2' }}\n <span *ngIf = \"getRemissionByFeeCode(fee.code)?.hwf_amount > 0\">\n <br>\n <div class=\"govuk-table__cell_rmborder alignright\">\n -{{ getRemissionByFeeCode(fee.code)?.hwf_amount? ( getRemissionByFeeCode(fee.code)?.hwf_amount | currency:'GBP':'symbol-narrow':'1.2-2') : '-' }}\n </div> \n </span>\n </td>\n \n \n </tr>\n <!-- <tr>\n <td *ngIf = \"getRemissionByFeeCode(fee.code)?.hwf_amount > 0\">\n <br>\n <div class=\"govuk-table__cell_border\" *ngIf = \"getRemissionByFeeCode(fee.code)?.hwf_amount > 0\">Remission,{{ getRemissionByFeeCode(fee.code)?.hwf_reference }}</div>\n </td>\n <td *ngIf = \"getRemissionByFeeCode(fee.code)?.hwf_amount ===''\">\n <div class=\"govuk-table__cell_border\"></div>\n </td>\n <td *ngIf = \"getRemissionByFeeCode(fee.code)?.hwf_amount === ''\">\n <br>\n <div class=\"govuk-table__cell_border\" *ngIf = \"getRemissionByFeeCode(fee.code)?.hwf_amount === ''\"></div>\n </td>\n <td>\n <br>\n <div class=\"govuk-table__cell_border\" style=\"text-align: right;\">\n -{{ getRemissionByFeeCode(fee.code)?.hwf_amount? ( getRemissionByFeeCode(fee.code)?.hwf_amount | currency:'GBP':'symbol-narrow':'1.2-2') : '-' }}\n </div> \n </td>\n </tr> -->\n </tbody>\n </table>\n </div>\n <div class=\"addfee\">\n <button *ngIf=\"!isTurnOff\" (click)=\"redirectToFeeSearchPage($event,'summary')\"\n [disabled]=\"isPaymentExist\"\n [ngClass]='isPaymentExist ? \"govuk-button govuk-button--secondary button--disabled\" : \"govuk-button govuk-button--secondary\"'>\n Add fee\n </button>\n <a *ngIf=\"isTurnOff\" (click)=\"redirectToFeeSearchPage($event,'summary')\" class=\"govuk-button govuk-button--secondary\">Add a new fee</a>\t\n <div class=\"feeAddButton\">\n <p class=\"paddigleft govuk-!-margin-top-2\">Total to pay: {{ outStandingAmount | currency:'GBP':'symbol-narrow':'1.2-2'}}</p>\n </div>\n </div>\n<!-- \n <div class=\"govuk-form-group govuk-form-group--mg\" *ngIf=\"!bsPaymentDcnNumber\">\n <label class=\"govuk-label custom-govuk-label govuk-fieldset__heading--fz\" for=\"responsibleOffice\">\n <strong>What service is this fee for?</strong>\n </label>\n <select class=\"govuk-select govuk-select--custom\" id=\"responsibleOffice\" [(ngModel)]=\"service\" name=\"responsibleOffice\">\n <option value=\"\" selected='selected'>Please select</option>\n <option value=\"AA07\">Divorce</option>\n <option value=\"AA09\">Financial Remedy</option>\n <option value=\"AA08\">Probate</option>\n </select>\n </div> -->\n\n <div class=\"govuk-form-group govuk-form-group--mg\" *ngIf=\"!bsPaymentDcnNumber && isOldPcipalOff && isNewPcipalOff\">\n <fieldset class=\"govuk-fieldset\">\n <legend class=\"govuk-fieldset__legend govuk-fieldset__legend--m\">\n <span class=\"govuk-fieldset__heading govuk-fieldset__heading--fz\">\n Select payment service\n </span>\n </legend>\n <div class=\"govuk-radios govuk-radios--small\">\n <div class=\"govuk-radios__item\">\n <input id=\"changed-name\" class=\"govuk-radios__input\" [(ngModel)]=\"platForm\" type=\"radio\" aria-label=\"8x8\" value=\"8x8\">\t\n <label class=\"govuk-label govuk-radios__label\" for=\"changed-name\">\t\n 8x8\t\n </label>\t\n </div>\t\n <div class=\"govuk-radios__item\">\t\n <input id=\"changed-name-2\" class=\"govuk-radios__input\" [(ngModel)]=\"platForm\" type=\"radio\" aria-label=\"Antenna\" value=\"Antenna\">\t\n <label class=\"govuk-label govuk-radios__label\" for=\"changed-name-2\">\t\n Antenna\t\n </label>\t\n </div>\t\n </div>\t\n </fieldset>\n </div>\n\n <div>\n <button *ngIf=\"!bsPaymentDcnNumber\" type=\"submit\" (click)=\"takePayment()\"\n [disabled]=\"totalFee <= 0 || isConfirmationBtnDisabled\"\n [ngClass]='totalFee <= 0 || !platForm || !service || isConfirmationBtnDisabled? \"button button--disabled govuk-!-margin-right-1\" : \"button govuk-!-margin-right-1\"'>\n Take payment\n </button>\n <button *ngIf=\"bsPaymentDcnNumber\" type=\"button\" (click)=\"goToAllocatePage(outStandingAmount, isFeeAmountZero)\" class=\"button govuk-!-margin-right-1\">\n <span *ngIf=\"outStandingAmount > 0 || (isFeeAmountZero && outStandingAmount === 0)\">\n Allocate payment\n </span>\n <span *ngIf=\"outStandingAmount < 0 || (!isFeeAmountZero && outStandingAmount === 0)\">\n Continue\n </span>\n </button>\n </div>\n\n</main>\n</div>\n\n <ng-container *ngIf=\"viewStatus === 'feeRemovalConfirmation'\">\n <input #myInput type='hidden' id='iFrameDrivenImageValue' value='FEEREMOVALCONFIRMATION_1'>\n <div class=\"govuk-warning-text\">\n <span class=\"govuk-warning-text__icon\" aria-hidden=\"true\">!</span>\n <strong class=\"govuk-warning-text__text\">\n <span class=\"govuk-warning-text__assistive\">Warning</span>\n Are you sure you want to delete this fee?\n </strong>\n </div>\n <div class=\"govuk-button-grb\">\n <form novalidate>\n <button type=\"submit\" class=\"button govuk-button--secondary\" (click)=\"cancelRemission()\">\n Cancel\n </button>\n <button type=\"submit\" class=\"button\" \n *ngIf =\"!isRemoveBtnDisabled\"\n [ngClass]='isRemoveBtnDisabled ? \"button button--disabled govuk-!-margin-right-1\" : \"button govuk-!-margin-right-1\"'\n (click)=\"removeFee(currentFee)\">\n Remove\n </button>\n </form>\n </div>\n </ng-container>\n<ccpay-add-remission *ngIf=\"viewStatus === 'add_remission' && currentFee\"\n [isTurnOff]=\"isTurnOff\"\n [isStrategicFixEnable]=\"isStrategicFixEnable\" \n [isOldPcipalOff]=\"isOldPcipalOff\" \n [isNewPcipalOff]=\"isNewPcipalOff\" \n [fee]=\"currentFee\" \n [caseType]=\"caseType\" \n [ccdCaseNumber]=\"ccdCaseNumber\" \n [paymentGroupRef]=\"paymentGroupRef\" \n (cancelRemission)=\"cancelRemission()\"></ccpay-add-remission>\n <input *ngIf=\"viewStatus === 'payhub_view' && payhubHtml\" #myInput type='hidden' id='iFrameDrivenImageValue' value='PCIPAL'>\n<div *ngIf=\"viewStatus === 'payhub_view' && payhubHtml\" [innerHTML]=\"payhubHtml | sanitizeHtml\" id=\"payhub-html-id\"></div>\n",
|
|
377
|
+
styles: [".fee-summary .grey-text{color:#6b7376;font-weight:500}.fee-summary .govuk-table{margin-bottom:0}.fee-summary .no-border{border:none;border-bottom:none}.fee-summary table td,.fee-summary table th{font-size:19px;vertical-align:top}.fee-summary table td .no-padding,.fee-summary table th .no-padding{padding:0}.fee-summary table td .subcolumn-1,.fee-summary table th .subcolumn-1{width:45%}.fee-summary table td .subcolumn-2,.fee-summary table th .subcolumn-2{width:25%;text-align:right}.fee-summary table td .subcolumn-3,.fee-summary table th .subcolumn-3{width:30%;text-align:center}table th{font-weight:700}.govuk-button-grb{padding-bottom:20px}.govuk-button-grb .govuk-button--secondary{background-color:#dee0e2;box-shadow:0 2px 0 #858688;color:#0b0c0c;margin-right:10px}.govuk-form-group--mg{margin-top:10px!important}.govuk-fieldset__heading--fz{font-size:16px}.remissionDisable{color:grey;cursor:default}.heading-xlarge{margin:0 0 14px -20px}.govuk-select--custom{width:50%}.disable-link{cursor:default;pointer-events:none;color:#8e8c8c}.govuk-table__cell_border,.govuk-table__header{padding:10px 0 0;border-top:1px solid #bfc1c3;text-align:left}.govuk-table__cell,.govuk-table__header{padding:10px 0}.govuk-table__cell_rmborder,.govuk-table__header{padding:10px 0 0;border-top:1px solid #bfc1c3;text-align:left}.govuk-table__fessheader{font-weight:700}.govuk-button{font-size:19px}.feeAddButton{padding-left:65rem}.remissionActive{padding-left:10px}.paddigleft{padding-left:2em}.govuk-back-link{font-size:1.5rem!important}.govuk-warning-text__text{font-size:19px}.summaryheader{display:flex;flex-direction:row;justify-content:space-between;width:960px}.class600{width:600px}.class60{width:60px}.class80{width:80px;text-align:right}.class100{width:100px;text-align:right}.alignright{text-align:right}.caseref{align-self:flex-end}.addfee{display:flex;flex-direction:row}"]
|
|
378
|
+
}] }
|
|
428
379
|
];
|
|
429
380
|
/** @nocollapse */
|
|
430
381
|
FeeSummaryComponent.ctorParameters = () => [
|
|
@@ -432,12 +383,16 @@ FeeSummaryComponent.ctorParameters = () => [
|
|
|
432
383
|
{ type: BulkScaningPaymentService },
|
|
433
384
|
{ type: Location },
|
|
434
385
|
{ type: PaymentViewService },
|
|
435
|
-
{ type:
|
|
436
|
-
{ type:
|
|
386
|
+
{ type: PaymentLibComponent },
|
|
387
|
+
{ type: OrderslistService }
|
|
437
388
|
];
|
|
438
389
|
FeeSummaryComponent.propDecorators = {
|
|
439
390
|
paymentGroupRef: [{ type: Input }],
|
|
440
|
-
ccdCaseNumber: [{ type: Input }]
|
|
391
|
+
ccdCaseNumber: [{ type: Input }],
|
|
392
|
+
isTurnOff: [{ type: Input }],
|
|
393
|
+
caseType: [{ type: Input }],
|
|
394
|
+
isOldPcipalOff: [{ type: Input }],
|
|
395
|
+
isNewPcipalOff: [{ type: Input }]
|
|
441
396
|
};
|
|
442
397
|
if (false) {
|
|
443
398
|
/** @type {?} */
|
|
@@ -445,6 +400,14 @@ if (false) {
|
|
|
445
400
|
/** @type {?} */
|
|
446
401
|
FeeSummaryComponent.prototype.ccdCaseNumber;
|
|
447
402
|
/** @type {?} */
|
|
403
|
+
FeeSummaryComponent.prototype.isTurnOff;
|
|
404
|
+
/** @type {?} */
|
|
405
|
+
FeeSummaryComponent.prototype.caseType;
|
|
406
|
+
/** @type {?} */
|
|
407
|
+
FeeSummaryComponent.prototype.isOldPcipalOff;
|
|
408
|
+
/** @type {?} */
|
|
409
|
+
FeeSummaryComponent.prototype.isNewPcipalOff;
|
|
410
|
+
/** @type {?} */
|
|
448
411
|
FeeSummaryComponent.prototype.bsPaymentDcnNumber;
|
|
449
412
|
/** @type {?} */
|
|
450
413
|
FeeSummaryComponent.prototype.paymentGroup;
|
|
@@ -461,6 +424,8 @@ if (false) {
|
|
|
461
424
|
/** @type {?} */
|
|
462
425
|
FeeSummaryComponent.prototype.service;
|
|
463
426
|
/** @type {?} */
|
|
427
|
+
FeeSummaryComponent.prototype.platForm;
|
|
428
|
+
/** @type {?} */
|
|
464
429
|
FeeSummaryComponent.prototype.upPaymentErrorMessage;
|
|
465
430
|
/** @type {?} */
|
|
466
431
|
FeeSummaryComponent.prototype.selectedOption;
|
|
@@ -479,17 +444,41 @@ if (false) {
|
|
|
479
444
|
/** @type {?} */
|
|
480
445
|
FeeSummaryComponent.prototype.isPaymentExist;
|
|
481
446
|
/** @type {?} */
|
|
482
|
-
FeeSummaryComponent.prototype.
|
|
447
|
+
FeeSummaryComponent.prototype.isRemissionsExist;
|
|
483
448
|
/** @type {?} */
|
|
484
|
-
FeeSummaryComponent.prototype.
|
|
449
|
+
FeeSummaryComponent.prototype.isRemissionsMatch;
|
|
485
450
|
/** @type {?} */
|
|
451
|
+
FeeSummaryComponent.prototype.isStrategicFixEnable;
|
|
452
|
+
/**
|
|
453
|
+
* @type {?}
|
|
454
|
+
* @private
|
|
455
|
+
*/
|
|
456
|
+
FeeSummaryComponent.prototype.router;
|
|
457
|
+
/**
|
|
458
|
+
* @type {?}
|
|
459
|
+
* @private
|
|
460
|
+
*/
|
|
461
|
+
FeeSummaryComponent.prototype.bulkScaningPaymentService;
|
|
462
|
+
/**
|
|
463
|
+
* @type {?}
|
|
464
|
+
* @private
|
|
465
|
+
*/
|
|
486
466
|
FeeSummaryComponent.prototype.location;
|
|
487
|
-
/**
|
|
467
|
+
/**
|
|
468
|
+
* @type {?}
|
|
469
|
+
* @private
|
|
470
|
+
*/
|
|
488
471
|
FeeSummaryComponent.prototype.paymentViewService;
|
|
489
|
-
/**
|
|
490
|
-
|
|
491
|
-
|
|
472
|
+
/**
|
|
473
|
+
* @type {?}
|
|
474
|
+
* @private
|
|
475
|
+
*/
|
|
492
476
|
FeeSummaryComponent.prototype.paymentLibComponent;
|
|
477
|
+
/**
|
|
478
|
+
* @type {?}
|
|
479
|
+
* @private
|
|
480
|
+
*/
|
|
481
|
+
FeeSummaryComponent.prototype.OrderslistService;
|
|
482
|
+
/* Skipping unhandled member: ;*/
|
|
493
483
|
}
|
|
494
|
-
|
|
495
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlLXN1bW1hcnkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGhtY3RzL2NjcGF5LXdlYi1jb21wb25lbnQvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9mZWUtc3VtbWFyeS9mZWUtc3VtbWFyeS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM3RCxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSw0REFBNEQsQ0FBQztBQUNuRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUN0RixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxrRUFBa0UsQ0FBQztBQUM3RyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUdsRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUVqRixPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDdkMsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGlCQUFpQixDQUFDOztBQUV6QyxNQUFNLGNBQWMsR0FBRyx1QkFBdUIsQ0FBQztBQW1ML0MsTUFBTTs7Ozs7Ozs7O0lBc0JKLFlBQ1UsUUFDQSwyQkFDQSxVQUNBLG9CQUNBLHlCQUNBO1FBTEEsV0FBTSxHQUFOLE1BQU07UUFDTiw4QkFBeUIsR0FBekIseUJBQXlCO1FBQ3pCLGFBQVEsR0FBUixRQUFRO1FBQ1IsdUJBQWtCLEdBQWxCLGtCQUFrQjtRQUNsQiw0QkFBdUIsR0FBdkIsdUJBQXVCO1FBQ3ZCLHdCQUFtQixHQUFuQixtQkFBbUI7NEJBdkJULEVBQUU7MEJBRVQsTUFBTTt1QkFJRCxFQUFFO2tDQUdVLElBQUk7aUNBQ04sSUFBSTsrQkFDTCxLQUFLO21DQUNG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QXFCLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztZQUN0RSxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxHQUFHLG1CQUFtQixDQUFDO1NBQ3pEO1FBQUMsSUFBSSxDQUFDLENBQUM7WUFDTixJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztTQUNoQztLQUNGOzs7WUF4WUYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxtQkFBbUI7Z0JBQzdCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBMktYO2dCQUNDLE1BQU0sRUFBRSxDQUFDLDI5QkFBMjlCLENBQUM7YUFDdCtCOzs7O1lBcExPLE1BQU07WUFOTCx5QkFBeUI7WUFPMUIsUUFBUTtZQVJQLGtCQUFrQjtZQURuQix1QkFBdUI7WUFHdEIsbUJBQW1COzs7OEJBNEx6QixLQUFLOzRCQUNMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElQYXltZW50TGlzdCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvSVBheW1lbnRMaXN0JztcbmltcG9ydCB7Q2FzZVRyYW5zYWN0aW9uc1NlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Nhc2UtdHJhbnNhY3Rpb25zL2Nhc2UtdHJhbnNhY3Rpb25zLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGF5bWVudFZpZXdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcGF5bWVudC12aWV3L3BheW1lbnQtdmlldy5zZXJ2aWNlJztcbmltcG9ydCB7IEJ1bGtTY2FuaW5nUGF5bWVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9idWxrLXNjYW5pbmctcGF5bWVudC9idWxrLXNjYW5pbmctcGF5bWVudC5zZXJ2aWNlJztcbmltcG9ydCB7IFBheW1lbnRMaWJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9wYXltZW50LWxpYi5jb21wb25lbnQnO1xuaW1wb3J0IHsgSVJlbWlzc2lvbiB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvSVJlbWlzc2lvbic7XG5pbXBvcnQgeyBJRmVlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JRmVlJztcbmltcG9ydCB7IFBheW1lbnRUb1BheWh1YlJlcXVlc3QgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL1BheW1lbnRUb1BheWh1YlJlcXVlc3QnO1xuaW1wb3J0IHsgU2FmZUh0bWwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7Um91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtMb2NhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuY29uc3QgQlNfRU5BQkxFX0ZMQUcgPSAnYnVsay1zY2FuLWVuYWJsaW5nLWZlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2NwYXktZmVlLXN1bW1hcnknLFxuICB0ZW1wbGF0ZTogYFxuPGRpdiBjbGFzcz1cImdvdnVrLWJyZWFkY3J1bWJzXCIgKm5nSWY9XCJpc0JhY2tCdXR0b25FbmFibGVcIj5cbiAgPG9sIGNsYXNzPVwiZ292dWstYnJlYWRjcnVtYnNfX2xpc3RcIj5cbiAgICA8bGkgY2xhc3M9XCJnb3Z1ay1icmVhZGNydW1ic19fbGlzdC1pdGVtXCI+XG4gICAgICA8YSAoY2xpY2spPVwicmVkaXJlY3RUb0ZlZVNlYXJjaFBhZ2UoJGV2ZW50KVwiIGNsYXNzPVwiZ292dWstYmFjay1saW5rIGdvdnVrLWxhYmVsXCI+QmFjazwvYT5cbiAgICA8L2xpPlxuICA8L29sPlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJmZWUtc3VtbWFyeVwiICpuZ0lmPVwidmlld1N0YXR1cyA9PT0gJ21haW4nXCI+XG4gICAgPG1haW4gY2xhc3M9XCJnb3Z1ay1tYWluLXdyYXBwZXJcIj5cbiAgPGRpdiBjbGFzcz1cImdvdnVrLWdyaWQtcm93XCI+XG4gICAgPGRpdiBjbGFzcz1cImdvdnVrLWdyaWQtY29sdW1uLXR3by10aGlyZHNcIj5cbiAgICAgIDxoMSBjbGFzcz1cImhlYWRpbmcteGxhcmdlXCI+RmVlIFN1bW1hcnk8L2gxPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1ncmlkLWNvbHVtbi1vbmUtdGhpcmRcIiBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICA8YSAoY2xpY2spPVwicmVkaXJlY3RUb0ZlZVNlYXJjaFBhZ2UoJGV2ZW50LCdzdW1tYXJ5JylcIiBjbGFzcz1cImJ1dHRvblwiPkFkZCBhIG5ldyBmZWU8L2E+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG5cbiAgPGRpdiAqbmdJZj1cImVycm9yTWVzc2FnZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJlcnJvci1zdW1tYXJ5XCIgcm9sZT1cImdyb3VwXCIgYXJpYS1sYWJlbGxlZGJ5PVwiZmFpbHVyZS1lcnJvci1zdW1tYXJ5LWhlYWRpbmdcIiB0YWJpbmRleD1cIi0xXCI+XG4gICAgICA8aDIgY2xhc3M9XCJoZWFkaW5nLW1lZGl1bSBlcnJvci1zdW1tYXJ5LWhlYWRpbmdcIiBpZD1cImZhaWx1cmUtZXJyb3Itc3VtbWFyeS1oZWFkaW5nXCI+XG4gICAgICAgIFBheW1lbnQgR3JvdXAgZGV0YWlscyBjb3VsZCBub3QgYmUgcmV0cmlldmVkXG4gICAgICA8L2gyPlxuICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLWVycm9yLXN1bW1hcnlfX2JvZHlcIj5cbiAgICAgICAge3sgZXJyb3JNZXNzYWdlIH19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPHRhYmxlIGNsYXNzPVwiZ292dWstdGFibGVcIiAgKm5nSWY9XCIhZXJyb3JNZXNzYWdlICYmIHBheW1lbnRHcm91cFwiPlxuICAgIDx0aGVhZCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkXCI+XG4gICAgICA8dHIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fcm93XCI+XG4gICAgICAgIDx0aCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXIgZ292dWstIS1mb250LXdlaWdodC1ib2xkXCIgc2NvcGU9XCJjb2xcIj5GZWUgQ29kZTwvdGg+XG4gICAgICAgIDx0aCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXIgZ292dWstIS1mb250LXdlaWdodC1ib2xkXCIgc2NvcGU9XCJjb2xcIj5GZWUgZGVzY3JpcHRpb248L3RoPlxuICAgICAgICA8dGggY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyIGdvdnVrLSEtZm9udC13ZWlnaHQtYm9sZFwiIHNjb3BlPVwiY29sXCI+UmVtaXNzaW9uIGNvZGU8L3RoPlxuICAgICAgICA8dGggY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyIGdvdnVrLSEtZm9udC13ZWlnaHQtYm9sZFwiIHNjb3BlPVwiY29sXCI+PC90aD5cbiAgICAgIDwvdHI+XG4gICAgPC90aGVhZD5cbiAgICA8dGJvZHkgY2xhc3M9XCJnb3Z1ay10YWJsZV9fYm9keVwiICpuZ0lmPVwicGF5bWVudEdyb3VwLmxlbmd0aCA+IDBcIj5cbiAgICAgIDx0ciBjbGFzcz1cImdvdnVrLXRhYmxlX19yb3dcIiAqbmdGb3I9XCJsZXQgZmVlIG9mIHBheW1lbnRHcm91cDsgbGV0IGkgPSBpbmRleDtcIj5cbiAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGxcIj57eyBmZWUuY29kZSB9fTwvdGQ+XG4gICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsXCI+e3sgZmVlLmRlc2NyaXB0aW9uIH19PC90ZD5cbiAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGxcIj57eyBmZWUucmVtaXNzaW9uPy5od2ZfcmVmZXJlbmNlIH19PC90ZD5cbiAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGwgZ3JleS10ZXh0XCI+XG4gICAgICAgICAgPHRhYmxlIGNsYXNzPVwiZ292dWstdGFibGVcIj5cbiAgICAgICAgICAgIDx0ciBjbGFzcz1cImdvdnVrLXRhYmxlX19yb3dcIj5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwibm8tYm9yZGVyIGdyZXktdGV4dCBzdWJjb2x1bW4tMVwiPkZlZSBhbW91bnQ6PC90ZD5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwibm8tYm9yZGVyIHN1YmNvbHVtbi0yXCI+e3sgZmVlLmZlZV9hbW91bnQgfCBjdXJyZW5jeTonR0JQJzonc3ltYm9sLW5hcnJvdyc6JzEuMi0yJyB9fTwvdGQ+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cIm5vLWJvcmRlciBzdWJjb2x1bW4tM1wiPjxhICpuZ0lmPVwiIShmZWUuaXNQYXltZW50RXhpc3QgJiYgaSA9PT0gMClcIiAoY2xpY2spPVwiY29uZmlybVJlbW92ZUZlZShmZWUuaWQpXCI+cmVtb3ZlIGZlZTwvYT48L3RkPlxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgIDx0ciBjbGFzcz1cImdvdnVrLXRhYmxlX19yb3dcIiAqbmdJZj1cImZlZS52b2x1bWUgJiYgZmVlLnZvbHVtZSA+IDBcIj5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwibm8tYm9yZGVyIGdyZXktdGV4dCBzdWJjb2x1bW4tMVwiPlZvbHVtZTo8L3RkPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJuby1ib3JkZXIgc3ViY29sdW1uLTJcIj57eyBmZWUudm9sdW1lIH19PC90ZD5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwibm8tYm9yZGVyIHN1YmNvbHVtbi0zXCI+PC90ZD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICA8dHIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fcm93XCI+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cIm5vLWJvcmRlciBncmV5LXRleHQgc3ViY29sdW1uLTFcIj5GZWUgdG90YWw6PC90ZD5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwibm8tYm9yZGVyIHN1YmNvbHVtbi0yXCI+e3sgZmVlLmNhbGN1bGF0ZWRfYW1vdW50ICB8IGN1cnJlbmN5OidHQlAnOidzeW1ib2wtbmFycm93JzonMS4yLTInIH19PC90ZD5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwibm8tYm9yZGVyIHN1YmNvbHVtbi0zXCI+PC90ZD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICA8dHIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fcm93XCI+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cIm5vLWJvcmRlciBncmV5LXRleHQgc3ViY29sdW1uLTFcIj5SZW1pc3Npb24gYW1vdW50OjwvdGQ+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cIm5vLWJvcmRlciBzdWJjb2x1bW4tMlwiPnt7IGZlZS5yZW1pc3Npb24/Lmh3Zl9hbW91bnQgPyAoZmVlLnJlbWlzc2lvbj8uaHdmX2Ftb3VudCB8IGN1cnJlbmN5OidHQlAnOidzeW1ib2wtbmFycm93JzonMS4yLTInKSA6ICctJyB9fTwvdGQ+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cIm5vLWJvcmRlciBzdWJjb2x1bW4tM1wiPiA8YSAoY2xpY2spPVwiYWRkUmVtaXNzaW9uKGZlZSlcIiBbbmdDbGFzc109XCJ7J3JlbWlzc2lvbkRpc2FibGUnOiAhc2VydmljZX1cIiAqbmdJZj1cImZlZS5yZW1pc3Npb24/Lmh3Zl9hbW91bnQgPT09IDAgfHwgIWZlZS5yZW1pc3Npb24/Lmh3Zl9hbW91bnRcIj5EZWR1Y3QgcmVtaXNzaW9uPC9hPjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJuby1ib3JkZXIgZ3JleS10ZXh0IHN1YmNvbHVtbi0xXCI+VG90YWwgYWZ0ZXIgcmVtaXNzaW9uOjwvdGQ+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cIm5vLWJvcmRlciBzdWJjb2x1bW4tMlwiPnt7IGZlZS5uZXRfYW1vdW50ICB8IGN1cnJlbmN5OidHQlAnOidzeW1ib2wtbmFycm93JzonMS4yLTInIH19PC90ZD5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwibm8tYm9yZGVyIHN1YmNvbHVtbi0zXCI+PC90ZD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgPC90YWJsZT5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvdHI+XG4gICAgICA8dHIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fcm93XCI+XG4gICAgICAgIDx0ZCBjbGFzcz1cIm5vLWJvcmRlclwiPjwvdGQ+XG4gICAgICAgIDx0ZCBjbGFzcz1cIm5vLWJvcmRlclwiPjwvdGQ+XG4gICAgICAgIDx0ZCBjbGFzcz1cIm5vLWJvcmRlclwiPjwvdGQ+XG4gICAgICAgIDx0ZCBjbGFzcz1cIm5vLWJvcmRlclwiPlxuICAgICAgICAgIDx0YWJsZSBjbGFzcz1cImdvdnVrLXRhYmxlXCI+XG4gICAgICAgICAgICA8dHIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fcm93XCI+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cIm5vLWJvcmRlciBnb3Z1ay0hLWZvbnQtd2VpZ2h0LWJvbGQgc3ViY29sdW1uLTFcIj5Ub3RhbCBwYXltZW50PC90ZD5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwibm8tYm9yZGVyIHN1YmNvbHVtbi0yXCI+e3sgdG90YWxBZnRlclJlbWlzc2lvbiAtIG91dFN0YW5kaW5nQW1vdW50IHwgY3VycmVuY3k6J0dCUCc6J3N5bWJvbC1uYXJyb3cnOicxLjItMid9fTwvdGQ+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cIm5vLWJvcmRlciBzdWJjb2x1bW4tM1wiPjwvdGQ+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJuby1ib3JkZXIgZ292dWstIS1mb250LXdlaWdodC1ib2xkIHN1YmNvbHVtbi0xXCI+VG90YWwgb3V0c3RhbmRpbmcgYW1vdW50PC90ZD5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwibm8tYm9yZGVyIHN1YmNvbHVtbi0yXCI+e3sgb3V0U3RhbmRpbmdBbW91bnQgfCBjdXJyZW5jeTonR0JQJzonc3ltYm9sLW5hcnJvdyc6JzEuMi0yJ319PC90ZD5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwibm8tYm9yZGVyIHN1YmNvbHVtbi0zXCI+PC90ZD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgPC90YWJsZT5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvdHI+XG5cbiAgICAgIDx0ciBjbGFzcz1cImdvdnVrLXRhYmxlX19yb3dcIiAqbmdJZj1cIiFic1BheW1lbnREY25OdW1iZXJcIj5cbiAgICAgICAgPHRkIGNsYXNzPVwibm8tYm9yZGVyXCI+PC90ZD5cbiAgICAgICAgPHRkIGNsYXNzPVwibm8tYm9yZGVyXCI+PC90ZD5cbiAgICAgICAgPHRkIGNsYXNzPVwibm8tYm9yZGVyXCI+PC90ZD5cbiAgICAgICAgPHRkIGNsYXNzPVwibm8tYm9yZGVyXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLWZvcm0tZ3JvdXAgZ292dWstZm9ybS1ncm91cC0tbWdcIj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImdvdnVrLWxhYmVsIGN1c3RvbS1nb3Z1ay1sYWJlbCBnb3Z1ay1maWVsZHNldF9faGVhZGluZy0tZnpcIiBmb3I9XCJyZXNwb25zaWJsZU9mZmljZVwiPlxuICAgICAgICAgICAgICA8c3Ryb25nPldoYXQgc2VydmljZSBpcyB0aGlzIGZlZSBmb3I/PC9zdHJvbmc+XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImdvdnVrLXNlbGVjdCBnb3Z1ay1zZWxlY3QtLWN1c3RvbVwiIGlkPVwicmVzcG9uc2libGVPZmZpY2VcIiBbKG5nTW9kZWwpXT1cInNlcnZpY2VcIiBuYW1lPVwicmVzcG9uc2libGVPZmZpY2VcIj5cbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiIHNlbGVjdGVkPSdzZWxlY3RlZCc+UGxlYXNlIHNlbGVjdDwvb3B0aW9uPlxuICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiQUEwN1wiPkRpdm9yY2U8L29wdGlvbj5cbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIkFCQTNcIj5GYW1pbHkgUHVibGljIExhdzwvb3B0aW9uPlxuICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiQUEwOFwiPlByb2JhdGU8L29wdGlvbj5cbiAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3RkPlxuICAgICAgPC90cj5cbiAgICA8L3Rib2R5PlxuICAgIDx0ciBjbGFzcz1cImdvdnVrLXRhYmxlX19yb3dcIj5cbiAgICAgIDx0ZCBjbGFzcz1cIm5vLWJvcmRlclwiPjwvdGQ+XG4gICAgICA8dGQgY2xhc3M9XCJuby1ib3JkZXJcIj48L3RkPlxuICAgICAgPHRkIGNsYXNzPVwibm8tYm9yZGVyXCI+PC90ZD5cbiAgICAgIDx0ZCBjbGFzcz1cIm5vLWJvcmRlclwiPlxuICAgICAgICAgIDx0YWJsZSBjbGFzcz1cImdvdnVrLXRhYmxlXCI+XG4gICAgICAgICAgICA8dHIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fcm93XCI+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cIm5vLWJvcmRlciBzdWJjb2x1bW4tMlwiPiBcbiAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiIWJzUGF5bWVudERjbk51bWJlclwiIHR5cGU9XCJzdWJtaXRcIiAoY2xpY2spPVwidGFrZVBheW1lbnQoKVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInRvdGFsRmVlIDw9IDAgfHwgIXNlcnZpY2UgfHwgaXNDb25maXJtYXRpb25CdG5EaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPSd0b3RhbEZlZSA8PSAwIHx8ICFzZXJ2aWNlIHx8IGlzQ29uZmlybWF0aW9uQnRuRGlzYWJsZWQ/IFwiYnV0dG9uIGJ1dHRvbi0tZGlzYWJsZWQgZ292dWstIS1tYXJnaW4tcmlnaHQtMVwiIDogXCJidXR0b24gZ292dWstIS1tYXJnaW4tcmlnaHQtMVwiJz5cbiAgICAgICAgICAgICAgICAgIFRha2UgcGF5bWVudFxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImJzUGF5bWVudERjbk51bWJlclwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiZ29Ub0FsbG9jYXRlUGFnZShvdXRTdGFuZGluZ0Ftb3VudCwgaXNGZWVBbW91bnRaZXJvKVwiIGNsYXNzPVwiYnV0dG9uIGdvdnVrLSEtbWFyZ2luLXJpZ2h0LTFcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm91dFN0YW5kaW5nQW1vdW50ID4gMCB8fCAoaXNGZWVBbW91bnRaZXJvICYmIG91dFN0YW5kaW5nQW1vdW50ID09PSAwKVwiPlxuICAgICAgICAgICAgICAgICAgQWxsb2NhdGUgcGF5bWVudFxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm91dFN0YW5kaW5nQW1vdW50IDwgMCB8fCAoIWlzRmVlQW1vdW50WmVybyAmJiBvdXRTdGFuZGluZ0Ftb3VudCA9PT0gMClcIj5cbiAgICAgICAgICAgICAgICAgIENvbnRpbnVlXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgPC90YWJsZT5cbiAgICAgIDwvdGQ+XG4gICAgPC90cj5cbiAgPC90Ym9keT5cbiAgPC90YWJsZT5cbjwvbWFpbj5cbjwvZGl2PlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJ2aWV3U3RhdHVzID09PSAnZmVlUmVtb3ZhbENvbmZpcm1hdGlvbidcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay13YXJuaW5nLXRleHRcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJnb3Z1ay13YXJuaW5nLXRleHRfX2ljb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj4hPC9zcGFuPlxuICAgICAgICA8c3Ryb25nIGNsYXNzPVwiZ292dWstd2FybmluZy10ZXh0X190ZXh0XCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJnb3Z1ay13YXJuaW5nLXRleHRfX2Fzc2lzdGl2ZVwiPldhcm5pbmc8L3NwYW4+XG4gICAgICAgICAgQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGlzIGZlZT9cbiAgICAgICAgPC9zdHJvbmc+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1idXR0b24tZ3JiXCI+XG4gICAgICAgIDxmb3JtIG5vdmFsaWRhdGU+XG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidXR0b24gZ292dWstYnV0dG9uLS1zZWNvbmRhcnlcIiAoY2xpY2spPVwiY2FuY2VsUmVtaXNzaW9uKClcIj5cbiAgICAgICAgICAgIENhbmNlbFxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnV0dG9uXCIgXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImlzUmVtb3ZlQnRuRGlzYWJsZWRcIlxuICAgICAgICAgIFtuZ0NsYXNzXT0naXNSZW1vdmVCdG5EaXNhYmxlZCA/IFwiYnV0dG9uIGJ1dHRvbi0tZGlzYWJsZWQgZ292dWstIS1tYXJnaW4tcmlnaHQtMVwiIDogXCJidXR0b24gZ292dWstIS1tYXJnaW4tcmlnaHQtMVwiJ1xuICAgICAgICAgIChjbGljayk9XCJyZW1vdmVGZWUoY3VycmVudEZlZSlcIj5cbiAgICAgICAgICAgIFJlbW92ZVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Zvcm0+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuPGNjcGF5LWFkZC1yZW1pc3Npb24gKm5nSWY9XCJ2aWV3U3RhdHVzID09PSAnYWRkX3JlbWlzc2lvbicgJiYgY3VycmVudEZlZVwiIFtmZWVdPVwiY3VycmVudEZlZVwiIFtzZXJ2aWNlXT1cInNlcnZpY2VcIiBbY2NkQ2FzZU51bWJlcl09XCJjY2RDYXNlTnVtYmVyXCIgW3BheW1lbnRHcm91cFJlZl09XCJwYXltZW50R3JvdXBSZWZcIiAoY2FuY2VsUmVtaXNzaW9uKT1cImNhbmNlbFJlbWlzc2lvbigpXCI+PC9jY3BheS1hZGQtcmVtaXNzaW9uPlxuPGRpdiAqbmdJZj1cInZpZXdTdGF0dXMgPT09ICdwYXlodWJfdmlldycgJiYgcGF5aHViSHRtbFwiIFtpbm5lckhUTUxdPVwicGF5aHViSHRtbCB8IHNhbml0aXplSHRtbFwiIGlkPVwicGF5aHViLWh0bWwtaWRcIj48L2Rpdj5cbmAsXG4gIHN0eWxlczogW2AuZmVlLXN1bW1hcnkgLmdyZXktdGV4dHtjb2xvcjojNmI3Mzc2O2ZvbnQtd2VpZ2h0OjUwMH0uZmVlLXN1bW1hcnkgLmdvdnVrLXRhYmxle21hcmdpbi1ib3R0b206MH0uZmVlLXN1bW1hcnkgLm5vLWJvcmRlcntib3JkZXI6bm9uZTtib3JkZXItYm90dG9tOm5vbmV9LmZlZS1zdW1tYXJ5IHRhYmxlIHRkLC5mZWUtc3VtbWFyeSB0YWJsZSB0aHtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo1MDA7dmVydGljYWwtYWxpZ246dG9wO21heC13aWR0aDozMjBweH0uZmVlLXN1bW1hcnkgdGFibGUgdGQgLm5vLXBhZGRpbmcsLmZlZS1zdW1tYXJ5IHRhYmxlIHRoIC5uby1wYWRkaW5ne3BhZGRpbmc6MH0uZmVlLXN1bW1hcnkgdGFibGUgdGQgLnN1YmNvbHVtbi0xLC5mZWUtc3VtbWFyeSB0YWJsZSB0aCAuc3ViY29sdW1uLTF7d2lkdGg6NDUlfS5mZWUtc3VtbWFyeSB0YWJsZSB0ZCAuc3ViY29sdW1uLTIsLmZlZS1zdW1tYXJ5IHRhYmxlIHRoIC5zdWJjb2x1bW4tMnt3aWR0aDoyNSU7dGV4dC1hbGlnbjpyaWdodH0uZmVlLXN1bW1hcnkgdGFibGUgdGQgLnN1YmNvbHVtbi0zLC5mZWUtc3VtbWFyeSB0YWJsZSB0aCAuc3ViY29sdW1uLTN7d2lkdGg6MzAlO3RleHQtYWxpZ246Y2VudGVyfS5nb3Z1ay1idXR0b24tZ3Jie3BhZGRpbmctYm90dG9tOjIwcHh9LmdvdnVrLWJ1dHRvbi1ncmIgLmdvdnVrLWJ1dHRvbi0tc2Vjb25kYXJ5e2JhY2tncm91bmQtY29sb3I6I2RlZTBlMjtib3gtc2hhZG93OjAgMnB4IDAgIzg1ODY4ODtjb2xvcjojMGIwYzBjO21hcmdpbi1yaWdodDoxMHB4fS5nb3Z1ay1mb3JtLWdyb3VwLS1tZ3ttYXJnaW4tdG9wOjEwcHghaW1wb3J0YW50fS5nb3Z1ay1maWVsZHNldF9faGVhZGluZy0tZnp7Zm9udC1zaXplOjE2cHh9LnJlbWlzc2lvbkRpc2FibGV7Y29sb3I6Z3JleTtjdXJzb3I6ZGVmYXVsdH0uaGVhZGluZy14bGFyZ2V7bWFyZ2luOjAgMCAxNHB4IC0yMHB4fS5nb3Z1ay1zZWxlY3QtLWN1c3RvbXt3aWR0aDo1MCV9YF1cbn0pXG5cbmV4cG9ydCBjbGFzcyBGZWVTdW1tYXJ5Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgcGF5bWVudEdyb3VwUmVmOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGNjZENhc2VOdW1iZXI6IHN0cmluZztcblxuICBic1BheW1lbnREY25OdW1iZXI6IHN0cmluZztcbiAgcGF5bWVudEdyb3VwOiBhbnkgPSBbXTtcbiAgZXJyb3JNZXNzYWdlOiBzdHJpbmc7XG4gIHZpZXdTdGF0dXMgPSAnbWFpbic7XG4gIGN1cnJlbnRGZWU6IElGZWU7XG4gIHRvdGFsRmVlOiBudW1iZXI7XG4gIHBheWh1Ykh0bWw6IFNhZmVIdG1sO1xuICBzZXJ2aWNlOiBzdHJpbmcgPSBcIlwiO1xuICB1cFBheW1lbnRFcnJvck1lc3NhZ2U6IHN0cmluZztcbiAgc2VsZWN0ZWRPcHRpb246c3RyaW5nO1xuICBpc0JhY2tCdXR0b25FbmFibGU6IGJvb2xlYW4gPSB0cnVlO1xuICBvdXRTdGFuZGluZ0Ftb3VudDogbnVtYmVyID0gMC4wMDtcbiAgaXNGZWVBbW91bnRaZXJvOiBib29sZWFuID0gZmFsc2U7O1xuICB0b3RhbEFmdGVyUmVtaXNzaW9uOiBudW1iZXIgPSAwLjAwO1xuICBpc0NvbmZpcm1hdGlvbkJ0bkRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG4gIGlzUmVtb3ZlQnRuRGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNQYXltZW50RXhpc3Q6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgYnVsa1NjYW5pbmdQYXltZW50U2VydmljZTogQnVsa1NjYW5pbmdQYXltZW50U2VydmljZSxcbiAgICBwcml2YXRlIGxvY2F0aW9uOiBMb2NhdGlvbixcbiAgICBwcml2YXRlIHBheW1lbnRWaWV3U2VydmljZTogUGF5bWVudFZpZXdTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2FzZVRyYW5zYWN0aW9uc1NlcnZpY2U6IENhc2VUcmFuc2FjdGlvbnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGF5bWVudExpYkNvbXBvbmVudDogUGF5bWVudExpYkNvbXBvbmVudFxuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy52aWV3U3RhdHVzID0gJ21haW4nO1xuICAgIHRoaXMuYnNQYXltZW50RGNuTnVtYmVyID0gdGhpcy5wYXltZW50TGliQ29tcG9uZW50LmJzcGF5bWVudGRjbjtcbiAgICB0aGlzLnNlbGVjdGVkT3B0aW9uID0gdGhpcy5wYXltZW50TGliQ29tcG9uZW50LlNFTEVDVEVEX09QVElPTi50b0xvY2FsZUxvd2VyQ2FzZSgpO1xuXG4gICAgdGhpcy5wYXltZW50Vmlld1NlcnZpY2UuZ2V0QlNmZWF0dXJlKCkuc3Vic2NyaWJlKFxuICAgICAgZmVhdHVyZXMgPT4ge1xuICAgICAgICBsZXQgcmVzdWx0ID0gSlNPTi5wYXJzZShmZWF0dXJlcykuZmlsdGVyKGZlYXR1cmUgPT4gZmVhdHVyZS51aWQgPT09IEJTX0VOQUJMRV9GTEFHKTtcbiAgICAgICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LklTQlNFTkFCTEUgPSByZXN1bHRbMF0gPyByZXN1bHRbMF0uZW5hYmxlIDogZmFsc2U7XG4gICAgICB9LFxuICAgICAgZXJyID0+IHtcbiAgICAgICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LklTQlNFTkFCTEUgPSBmYWxzZTtcbiAgICAgIH1cbiAgICApO1xuICAgIGlmICh0aGlzLmJzUGF5bWVudERjbk51bWJlcikge1xuICAgICAgdGhpcy5nZXRVbmFzc2lnbmVkUGF5bWVudGxpc3QoKTtcbiAgICB9XG4gICAgdGhpcy5nZXRQYXltZW50R3JvdXAoKTtcbiAgfVxuXG4gICAgZ2V0VW5hc3NpZ25lZFBheW1lbnRsaXN0KCkge1xuICAgICBpZiAodGhpcy5zZWxlY3RlZE9wdGlvbiA9PT0gJ2RjbicpIHtcbiAgICAgICAgdGhpcy5idWxrU2NhbmluZ1BheW1lbnRTZXJ2aWNlLmdldEJTUGF5bWVudHNCeURDTih0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuRENOX05VTUJFUikuc3Vic2NyaWJlKFxuICAgICAgICB1bmFzc2lnbmVkUGF5bWVudHMgPT4ge1xuICAgICAgICAgIGlmKHVuYXNzaWduZWRQYXltZW50c1snZGF0YSddLnBheW1lbnRzKSB7XG4gICAgICAgICAgICB0aGlzLnNlcnZpY2UgPSB1bmFzc2lnbmVkUGF5bWVudHNbJ2RhdGEnXS5yZXNwb25zaWJsZV9zZXJ2aWNlX2lkO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnVwUGF5bWVudEVycm9yTWVzc2FnZSA9ICdlcnJvcic7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICAoZXJyb3I6IGFueSkgPT4gdGhpcy51cFBheW1lbnRFcnJvck1lc3NhZ2UgPSBlcnJvclxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmJ1bGtTY2FuaW5nUGF5bWVudFNlcnZpY2UuZ2V0QlNQYXltZW50c0J5Q0NEKHRoaXMuY2NkQ2FzZU51bWJlcikuc3Vic2NyaWJlKFxuICAgICAgICB1bmFzc2lnbmVkUGF5bWVudHMgPT4ge1xuICAgICAgICAgIGlmKHVuYXNzaWduZWRQYXltZW50c1snZGF0YSddLnBheW1lbnRzKSB7XG4gICAgICAgICAgICB0aGlzLnNlcnZpY2UgPSB1bmFzc2lnbmVkUGF5bWVudHNbJ2RhdGEnXS5yZXNwb25zaWJsZV9zZXJ2aWNlX2lkO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnVwUGF5bWVudEVycm9yTWVzc2FnZSA9ICdlcnJvcic7ICBcbiAgICAgICAgICB9ICAgICAgXG4gICAgICAgIH0sXG4gICAgICAgIChlcnJvcjogYW55KSA9PiB0aGlzLnVwUGF5bWVudEVycm9yTWVzc2FnZSA9IGVycm9yXG4gICAgICApO1xuICAgIH1cblxuICB9XG5cbiAgYWRkUmVtaXNzaW9uKGZlZTogSUZlZSkge1xuICAgIGlmICh0aGlzLnNlcnZpY2UpIHtcbiAgICAgIHRoaXMuY3VycmVudEZlZSA9IGZlZTtcbiAgICAgIHRoaXMudmlld1N0YXR1cyA9ICdhZGRfcmVtaXNzaW9uJztcbiAgICB9XG4gIH1cblxuICBnZXRQYXltZW50R3JvdXAoKSB7XG4gICAgdGhpcy5jYXNlVHJhbnNhY3Rpb25zU2VydmljZS5nZXRQYXltZW50R3JvdXBzKHRoaXMuY2NkQ2FzZU51bWJlcikuc3Vic2NyaWJlKFxuICAgICAgcGF5bWVudEdyb3VwcyA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKHBheW1lbnRHcm91cHNbJ3BheW1lbnRfZ3JvdXBzJ10pXG4gICAgICAgIGlmKHBheW1lbnRHcm91cHNbJ3BheW1lbnRfZ3JvdXBzJ10gJiYgcGF5bWVudEdyb3Vwc1sncGF5bWVudF9ncm91cHMnXS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgcGF5bWVudEdyb3Vwc1sncGF5bWVudF9ncm91cHMnXS5mb3JFYWNoKHBheW1lbnRHcm91cCA9PiB7XG4gICAgICAgICAgICBpZiAocGF5bWVudEdyb3VwLmZlZXMpIHtcbiAgICAgICAgICAgICAgcGF5bWVudEdyb3VwLmZlZXMuZm9yRWFjaChmZWUgPT4ge1xuICAgICAgICAgICAgICAgIGlmKGZlZS5kYXRlX2NyZWF0ZWQpIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMudG90YWxBZnRlclJlbWlzc2lvbiAgPSB0aGlzLnRvdGFsQWZ0ZXJSZW1pc3Npb24gICsgZmVlLm5ldF9hbW91bnQ7XG4gICAgICAgICAgICAgICAgICBsZXQgYWxsb2NhdGVkX2Ftb3VudCA9IGZlZS5hbGxvY2F0ZWRfYW1vdW50PyBmZWUuYWxsb2NhdGVkX2Ftb3VudCA6IDAuMDA7XG4gICAgICAgICAgICAgICAgICB0aGlzLm91dFN0YW5kaW5nQW1vdW50ICA9IHRoaXMub3V0U3RhbmRpbmdBbW91bnQgICsgKGZlZS5uZXRfYW1vdW50IC0gYWxsb2NhdGVkX2Ftb3VudCk7XG4gICAgICAgICAgICAgICAgICBpZihmZWUuY2FsY3VsYXRlZF9hbW91bnQgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0ZlZUFtb3VudFplcm8gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgZmVlLmlzRmVlQW1vdW50WmVybyA9IHRoaXMuaXNGZWVBbW91bnRaZXJvO1xuICAgICAgICAgICAgICAgICAgZmVlLmlzUGF5bWVudEV4aXN0ID0gcGF5bWVudEdyb3VwLnBheW1lbnRzID8gcGF5bWVudEdyb3VwLnBheW1lbnRzLmxlbmd0aCA+IDAgOiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgIGlmIChwYXltZW50R3JvdXAucmVtaXNzaW9ucykge1xuICAgICAgICAgICAgICAgICAgICBwYXltZW50R3JvdXAucmVtaXNzaW9ucy5mb3JFYWNoKHJlbWlzc2lvbiA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHJlbWlzc2lvbi5mZWVfY29kZSA9PT0gZmVlLmZlZS5jb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZlZS5yZW1pc3Npb24gPSByZW1pc3Npb247XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIHRoaXMucGF5bWVudEdyb3VwLnB1c2goZmVlKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGNvbnNvbGUubG9nKHRoaXMucGF5bWVudEdyb3VwLCB0aGlzLnRvdGFsQWZ0ZXJSZW1pc3Npb24sdGhpcy5vdXRTdGFuZGluZ0Ftb3VudClcbiAgICB9LFxuICAgICAgKGVycm9yOiBhbnkpID0+IHRoaXMuZXJyb3JNZXNzYWdlID0gZXJyb3JcbiAgICApO1xuICB9XG5cbiAgY29uZmlybVJlbW92ZUZlZShmZWU6IElGZWUpe1xuICAgIHRoaXMuaXNSZW1vdmVCdG5EaXNhYmxlZCA9IGZhbHNlO1xuICAgIHRoaXMuY3VycmVudEZlZSA9IGZlZTtcbiAgICB0aGlzLnZpZXdTdGF0dXMgPSAnZmVlUmVtb3ZhbENvbmZpcm1hdGlvbic7XG4gIH1cblxuICByZW1vdmVGZWUoZmVlOiBhbnkpe1xuICAgIHRoaXMuaXNSZW1vdmVCdG5EaXNhYmxlZCA9IHRydWU7XG4gICAgdGhpcy5wYXltZW50Vmlld1NlcnZpY2UuZGVsZXRlRmVlRnJvbVBheW1lbnRHcm91cChmZWUpLnN1YnNjcmliZShcbiAgICAgIChzdWNjZXNzOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5wYXltZW50R3JvdXAuZmVlcyAmJiB0aGlzLnBheW1lbnRHcm91cC5mZWVzLmxlbmd0aCA+IDEpe1xuICAgICAgICAgIHRoaXMudG90YWxBZnRlclJlbWlzc2lvbiA9IDA7XG4gICAgICAgICAgdGhpcy5nZXRQYXltZW50R3JvdXAoKTtcbiAgICAgICAgICB0aGlzLnZpZXdTdGF0dXMgPSAnbWFpbic7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmxvYWRDYXNlVHJhbnNhY3Rpb25QYWdlKCk7XG4gICAgICB9LFxuICAgICAgKGVycm9yOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IGVycm9yO1xuICAgICAgICAgIHRoaXMuaXNSZW1vdmVCdG5EaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuIGxvYWRDYXNlVHJhbnNhY3Rpb25QYWdlKCkge1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5UQUtFUEFZTUVOVCA9IHRydWU7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LnZpZXdOYW1lID0gJ2Nhc2UtdHJhbnNhY3Rpb25zJztcbiAgICB0aGlzLnBheW1lbnRWaWV3U2VydmljZS5nZXRCU2ZlYXR1cmUoKS5zdWJzY3JpYmUoXG4gICAgICBmZWF0dXJlcyA9PiB7XG4gICAgICAgIGxldCByZXN1bHQgPSBKU09OLnBhcnNlKGZlYXR1cmVzKS5maWx0ZXIoZmVhdHVyZSA9PiBmZWF0dXJlLnVpZCA9PT0gQlNfRU5BQkxFX0ZMQUcpO1xuICAgICAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuSVNCU0VOQUJMRSA9IHJlc3VsdFswXSA/IHJlc3VsdFswXS5lbmFibGUgOiBmYWxzZTtcbiAgICAgIH0sXG4gICAgICBlcnIgPT4ge1xuICAgICAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuSVNCU0VOQUJMRSA9IGZhbHNlO1xuICAgICAgfVxuICAgICk7XG4gIH1cbiAgY2FuY2VsUmVtaXNzaW9uKCkge1xuICAgIHRoaXMudmlld1N0YXR1cyA9ICdtYWluJztcbiAgfVxuICByZWRpcmVjdFRvRmVlU2VhcmNoUGFnZShldmVudDogYW55LCBwYWdlPzogc3RyaW5nKSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBsZXQgZGNuID0gdGhpcy5ic1BheW1lbnREY25OdW1iZXIgPyBgJmRjbj0ke3RoaXMuYnNQYXltZW50RGNuTnVtYmVyfWAgOiAnJztcbiAgICBjb25zdCBJU0JTZW5hYmxlID0gdGhpcy5wYXltZW50TGliQ29tcG9uZW50LklTQlNFTkFCTEUgPyAnJmlzQnVsa1NjYW5uaW5nPUVuYWJsZScgOiAnJmlzQnVsa1NjYW5uaW5nPURpc2FibGUnO1xuICAgIGlmKHRoaXMudmlld1N0YXR1cyA9PT0gJ2ZlZVJlbW92YWxDb25maXJtYXRpb24nIHx8IHRoaXMudmlld1N0YXR1cyA9PT0gJ2FkZF9yZW1pc3Npb24nKSB7XG4gICAgICB0aGlzLnZpZXdTdGF0dXMgPSAnbWFpbic7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGxldCB1cmwgPSBgL2ZlZS1zZWFyY2g/Y2NkQ2FzZU51bWJlcj0ke3RoaXMuY2NkQ2FzZU51bWJlcn0mc2VsZWN0ZWRPcHRpb249JHt0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuU0VMRUNURURfT1BUSU9OfSZwYXltZW50R3JvdXBSZWY9JHt0aGlzLnBheW1lbnRHcm91cFJlZn0ke2Rjbn0ke0lTQlNlbmFibGV9YDtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHVybCk7XG4gIH1cbiAgdGFrZVBheW1lbnQoKSB7XG4gICAgdGhpcy5pc0NvbmZpcm1hdGlvbkJ0bkRpc2FibGVkID0gdHJ1ZTtcbiAgICBjb25zdCBzZXJpdmVOYW1lID0gdGhpcy5zZXJ2aWNlID09PSdBQTA3JyA/ICdESVZPUkNFJzogdGhpcy5zZXJ2aWNlID09PSdBQTA4JyA/ICdQUk9CQVRFJyA6ICdGUEwnLFxuXG4gICAgICByZXF1ZXN0Qm9keSA9IG5ldyBQYXltZW50VG9QYXlodWJSZXF1ZXN0KHRoaXMuY2NkQ2FzZU51bWJlciwgdGhpcy5vdXRTdGFuZGluZ0Ftb3VudCwgdGhpcy5zZXJ2aWNlLCBzZXJpdmVOYW1lKSxcbiAgICAgIHJlcyA9IG5ldyBJUGF5bWVudExpc3QoW3RoaXMub3V0U3RhbmRpbmdBbW91bnQsIHRoaXMuY2NkQ2FzZU51bWJlciwgdGhpcy5jY2RDYXNlTnVtYmVyLCB0aGlzLnBheW1lbnRHcm91cCwgc2VyaXZlTmFtZSwgdGhpcy5zZXJ2aWNlXSk7XG4gICAgdGhpcy5wYXltZW50Vmlld1NlcnZpY2UucG9zdFBheW1lbnRMaXN0VG9QYXlIdWIocmVzKS5zdWJzY3JpYmUoXG4gICAgICByZXNwb25zZSA9PiB7XG4gICAgICAgIHRoaXMubG9jYXRpb24uZ28oYHBheW1lbnQtaGlzdG9yeT92aWV3PWZlZS1zdW1tYXJ5YCk7XG4gICAgICAgIHRoaXMucGF5aHViSHRtbCA9IHJlc3BvbnNlO1xuICAgICAgICB0aGlzLnZpZXdTdGF0dXMgPSAncGF5aHViX3ZpZXcnO1xuICAgICAgICB0aGlzLmlzQmFja0J1dHRvbkVuYWJsZT1mYWxzZTtcbiAgICAgIH0sXG4gICAgICAoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IGVycm9yO1xuICAgICAgICB0aGlzLmlzQ29uZmlybWF0aW9uQnRuRGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgnL3BjaS1wYWwtZmFpbHVyZScpO1xuICAgICAgfVxuICAgICk7XG5cbiAgICAvLyAgICAgdGhpcy5wYXltZW50Vmlld1NlcnZpY2UucG9zdFBheW1lbnRUb1BheUh1YihyZXF1ZXN0Qm9keSwgdGhpcy5wYXltZW50R3JvdXBSZWYpLnN1YnNjcmliZShcbiAgICAvLyAgIHJlc3BvbnNlID0+IHtcbiAgICAvLyAgICAgdGhpcy5sb2NhdGlvbi5nbyhgcGF5bWVudC1oaXN0b3J5P3ZpZXc9ZmVlLXN1bW1hcnlgKTtcbiAgICAvLyAgICAgdGhpcy5wYXlodWJIdG1sID0gcmVzcG9uc2U7XG4gICAgLy8gICAgIHRoaXMudmlld1N0YXR1cyA9ICdwYXlodWJfdmlldyc7XG4gICAgLy8gICAgIHRoaXMuaXNCYWNrQnV0dG9uRW5hYmxlPWZhbHNlO1xuICAgIC8vICAgfSxcbiAgICAvLyAgIChlcnJvcjogYW55KSA9PiB7XG4gICAgLy8gICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gZXJyb3I7XG4gICAgLy8gICAgIHRoaXMuaXNDb25maXJtYXRpb25CdG5EaXNhYmxlZCA9IGZhbHNlO1xuICAgIC8vICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcvcGNpLXBhbC1mYWlsdXJlJyk7XG4gICAgLy8gICB9XG4gICAgLy8gKTtcbiAgfVxuICBnb1RvQWxsb2NhdGVQYWdlKG91dFN0YW5kaW5nQW1vdW50OiBudW1iZXIsIGlzRmVlQW1vdW50WmVybzogQm9vbGVhbikge1xuICAgIGlmIChvdXRTdGFuZGluZ0Ftb3VudCA+IDAgfHwgKG91dFN0YW5kaW5nQW1vdW50ID09PSAwICYmIGlzRmVlQW1vdW50WmVybykpIHtcbiAgICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5wYXltZW50R3JvdXBSZWZlcmVuY2UgPSB0aGlzLnBheW1lbnRHcm91cFJlZjtcbiAgICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC52aWV3TmFtZSA9ICdhbGxvY2F0ZS1wYXltZW50cyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubG9hZENhc2VUcmFuc2FjdGlvblBhZ2UoKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
484
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlLXN1bW1hcnkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGhtY3RzL2NjcGF5LXdlYi1jb21wb25lbnQvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9mZWUtc3VtbWFyeS9mZWUtc3VtbWFyeS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3RGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGtFQUFrRSxDQUFDO0FBQzdHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBR2xFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBRTdFLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN2QyxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7O01BRWhFLGNBQWMsR0FBRyx1QkFBdUI7QUFROUMsTUFBTSxPQUFPLG1CQUFtQjs7Ozs7Ozs7O0lBK0I5QixZQUNVLE1BQWMsRUFDZCx5QkFBb0QsRUFDcEQsUUFBa0IsRUFDbEIsa0JBQXNDLEVBQ3RDLG1CQUF3QyxFQUN4QyxpQkFBb0M7UUFMcEMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLDhCQUF5QixHQUF6Qix5QkFBeUIsQ0FBMkI7UUFDcEQsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3RDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsc0JBQWlCLEdBQWpCLGlCQUFp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QUFzQjs7SUFDdEIsb0RBQThCOztJQUM5Qiw2Q0FBc0I7O0lBQ3RCLGlEQUFtQzs7SUFDbkMsZ0RBQTBCOztJQUMxQiw4Q0FBaUM7O0lBQ2pDLGtEQUFnQzs7SUFDaEMsd0RBQTJDOztJQUMzQyxrREFBcUM7O0lBQ3JDLDZDQUFnQzs7SUFDaEMsZ0RBQW1DOztJQUNuQyxnREFBMEI7O0lBQzFCLG1EQUE4Qjs7Ozs7SUFHNUIscUNBQXNCOzs7OztJQUN0Qix3REFBNEQ7Ozs7O0lBQzVELHVDQUEwQjs7Ozs7SUFDMUIsaURBQThDOzs7OztJQUM5QyxrREFBZ0Q7Ozs7O0lBQ2hELGdEQUE0QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSVBheW1lbnRHcm91cCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvSVBheW1lbnRHcm91cCc7XG5pbXBvcnQgeyBQYXltZW50Vmlld1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9wYXltZW50LXZpZXcvcGF5bWVudC12aWV3LnNlcnZpY2UnO1xuaW1wb3J0IHsgQnVsa1NjYW5pbmdQYXltZW50U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2J1bGstc2NhbmluZy1wYXltZW50L2J1bGstc2NhbmluZy1wYXltZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgUGF5bWVudExpYkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3BheW1lbnQtbGliLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJUmVtaXNzaW9uIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JUmVtaXNzaW9uJztcbmltcG9ydCB7IElGZWUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL0lGZWUnO1xuaW1wb3J0IHsgUGF5bWVudFRvUGF5aHViUmVxdWVzdCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvUGF5bWVudFRvUGF5aHViUmVxdWVzdCc7XG5pbXBvcnQgeyBQYXlodWJBbnRlbm5hUmVxdWVzdCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvUGF5aHViQW50ZW5uYVJlcXVlc3QnO1xuaW1wb3J0IHsgU2FmZUh0bWwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7Um91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtMb2NhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE9yZGVyc2xpc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvb3JkZXJzbGlzdC5zZXJ2aWNlJztcblxuY29uc3QgQlNfRU5BQkxFX0ZMQUcgPSAnYnVsay1zY2FuLWVuYWJsaW5nLWZlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2NwYXktZmVlLXN1bW1hcnknLFxuICB0ZW1wbGF0ZVVybDogJy4vZmVlLXN1bW1hcnkuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mZWUtc3VtbWFyeS5jb21wb25lbnQuc2NzcyddXG59KVxuXG5leHBvcnQgY2xhc3MgRmVlU3VtbWFyeUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIHBheW1lbnRHcm91cFJlZjogc3RyaW5nO1xuICBASW5wdXQoKSBjY2RDYXNlTnVtYmVyOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGlzVHVybk9mZjogc3RyaW5nO1xuICBASW5wdXQoKSBjYXNlVHlwZTogc3RyaW5nO1xuICBASW5wdXQoKSBpc09sZFBjaXBhbE9mZjogc3RyaW5nO1xuICBASW5wdXQoKSBpc05ld1BjaXBhbE9mZjogc3RyaW5nO1xuXG5cbiAgYnNQYXltZW50RGNuTnVtYmVyOiBzdHJpbmc7XG4gIHBheW1lbnRHcm91cDogSVBheW1lbnRHcm91cDtcbiAgZXJyb3JNZXNzYWdlOiBzdHJpbmc7XG4gIHZpZXdTdGF0dXMgPSAnbWFpbic7XG4gIGN1cnJlbnRGZWU6IElGZWU7XG4gIHRvdGFsRmVlOiBudW1iZXI7XG4gIHBheWh1Ykh0bWw6IFNhZmVIdG1sO1xuICBzZXJ2aWNlOiBzdHJpbmcgPSBcIlwiO1xuICBwbGF0Rm9ybTogc3RyaW5nID0gXCJcIjtcbiAgdXBQYXltZW50RXJyb3JNZXNzYWdlOiBzdHJpbmc7XG4gIHNlbGVjdGVkT3B0aW9uOnN0cmluZztcbiAgaXNCYWNrQnV0dG9uRW5hYmxlOiBib29sZWFuID0gdHJ1ZTtcbiAgb3V0U3RhbmRpbmdBbW91bnQ6IG51bWJlcjtcbiAgaXNGZWVBbW91bnRaZXJvOiBib29sZWFuID0gZmFsc2U7O1xuICB0b3RhbEFmdGVyUmVtaXNzaW9uOiBudW1iZXIgPSAwO1xuICBpc0NvbmZpcm1hdGlvbkJ0bkRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG4gIGlzUmVtb3ZlQnRuRGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNQYXltZW50RXhpc3Q6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNSZW1pc3Npb25zRXhpc3Q6IEJvb2xlYW4gPSBmYWxzZTtcbiAgaXNSZW1pc3Npb25zTWF0Y2ggPSBmYWxzZTtcbiAgaXNTdHJhdGVnaWNGaXhFbmFibGU6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIGJ1bGtTY2FuaW5nUGF5bWVudFNlcnZpY2U6IEJ1bGtTY2FuaW5nUGF5bWVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBsb2NhdGlvbjogTG9jYXRpb24sXG4gICAgcHJpdmF0ZSBwYXltZW50Vmlld1NlcnZpY2U6IFBheW1lbnRWaWV3U2VydmljZSxcbiAgICBwcml2YXRlIHBheW1lbnRMaWJDb21wb25lbnQ6IFBheW1lbnRMaWJDb21wb25lbnQsXG4gICAgcHJpdmF0ZSBPcmRlcnNsaXN0U2VydmljZTogT3JkZXJzbGlzdFNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMudmlld1N0YXR1cyA9ICdtYWluJztcbiAgICB0aGlzLmNhc2VUeXBlID0gdGhpcy5wYXltZW50TGliQ29tcG9uZW50LkNBU0VUWVBFO1xuICAgIHRoaXMuYnNQYXltZW50RGNuTnVtYmVyID0gdGhpcy5wYXltZW50TGliQ29tcG9uZW50LmJzcGF5bWVudGRjbjtcbiAgICB0aGlzLnNlbGVjdGVkT3B0aW9uID0gdGhpcy5wYXltZW50TGliQ29tcG9uZW50LlNFTEVDVEVEX09QVElPTi50b0xvY2FsZUxvd2VyQ2FzZSgpO1xuICAgIHRoaXMuaXNTdHJhdGVnaWNGaXhFbmFibGUgPSB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuSVNTRkVOQUJMRTtcbiAgICB0aGlzLk9yZGVyc2xpc3RTZXJ2aWNlLnNldENhc2VUeXBlKHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5DQVNFVFlQRSk7XG4gICAgaWYgKCghdGhpcy5pc09sZFBjaXBhbE9mZiAmJiB0aGlzLmlzTmV3UGNpcGFsT2ZmKSkge1xuICAgICAgdGhpcy5wbGF0Rm9ybSA9ICc4eDgnO1xuICAgIH0gZWxzZSBpZiAoKHRoaXMuaXNPbGRQY2lwYWxPZmYgJiYgIXRoaXMuaXNOZXdQY2lwYWxPZmYpKSB7XG4gICAgICB0aGlzLnBsYXRGb3JtID0gJ0FudGVubmEnO1xuICAgIH0gZWxzZSBpZiAoKHRoaXMuaXNPbGRQY2lwYWxPZmYgJiYgdGhpcy5pc05ld1BjaXBhbE9mZikpe1xuICAgICAgdGhpcy5wbGF0Rm9ybSA9ICc4eDgnO1xuICAgIH1cblxuICAgIHRoaXMucGF5bWVudFZpZXdTZXJ2aWNlLmdldEJTZmVhdHVyZSgpLnN1YnNjcmliZShcbiAgICAgIGZlYXR1cmVzID0+IHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IEpTT04ucGFyc2UoZmVhdHVyZXMpLmZpbHRlcihmZWF0dXJlID0+IGZlYXR1cmUudWlkID09PSBCU19FTkFCTEVfRkxBRyk7XG4gICAgICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5JU0JTRU5BQkxFID0gcmVzdWx0WzBdID8gcmVzdWx0WzBdLmVuYWJsZSA6IGZhbHNlO1xuICAgICAgfSxcbiAgICAgIGVyciA9PiB7XG4gICAgICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5JU0JTRU5BQkxFID0gZmFsc2U7XG4gICAgICB9XG4gICAgKTtcbiAgICBpZiAodGhpcy5ic1BheW1lbnREY25OdW1iZXIpIHtcbiAgICAgIHRoaXMuZ2V0VW5hc3NpZ25lZFBheW1lbnRsaXN0KCk7XG4gICAgfVxuICAgIHRoaXMuZ2V0UGF5bWVudEdyb3VwKCk7XG4gIH1cblxuICAgIGdldFVuYXNzaWduZWRQYXltZW50bGlzdCgpIHtcbiAgICAgaWYgKHRoaXMuc2VsZWN0ZWRPcHRpb24gPT09ICdkY24nKSB7XG4gICAgICAgIHRoaXMuYnVsa1NjYW5pbmdQYXltZW50U2VydmljZS5nZXRCU1BheW1lbnRzQnlEQ04odGhpcy5wYXltZW50TGliQ29tcG9uZW50LkRDTl9OVU1CRVIpLnN1YnNjcmliZShcbiAgICAgICAgdW5hc3NpZ25lZFBheW1lbnRzID0+IHtcbiAgICAgICAgICBpZih1bmFzc2lnbmVkUGF5bWVudHNbJ2RhdGEnXS5wYXltZW50cykge1xuICAgICAgICAgICAgdGhpcy5zZXJ2aWNlID0gdW5hc3NpZ25lZFBheW1lbnRzWydkYXRhJ10ucmVzcG9uc2libGVfc2VydmljZV9pZDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy51cFBheW1lbnRFcnJvck1lc3NhZ2UgPSAnZXJyb3InO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgKGVycm9yOiBhbnkpID0+IHRoaXMudXBQYXltZW50RXJyb3JNZXNzYWdlID0gZXJyb3JcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5idWxrU2NhbmluZ1BheW1lbnRTZXJ2aWNlLmdldEJTUGF5bWVudHNCeUNDRCh0aGlzLmNjZENhc2VOdW1iZXIpLnN1YnNjcmliZShcbiAgICAgICAgdW5hc3NpZ25lZFBheW1lbnRzID0+IHtcbiAgICAgICAgICBpZih1bmFzc2lnbmVkUGF5bWVudHNbJ2RhdGEnXS5wYXltZW50cykge1xuICAgICAgICAgICAgdGhpcy5zZXJ2aWNlID0gdW5hc3NpZ25lZFBheW1lbnRzWydkYXRhJ10ucmVzcG9uc2libGVfc2VydmljZV9pZDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy51cFBheW1lbnRFcnJvck1lc3NhZ2UgPSAnZXJyb3InOyAgXG4gICAgICAgICAgfSAgICAgIFxuICAgICAgICB9LFxuICAgICAgICAoZXJyb3I6IGFueSkgPT4gdGhpcy51cFBheW1lbnRFcnJvck1lc3NhZ2UgPSBlcnJvclxuICAgICAgKTtcbiAgICB9XG5cbiAgfVxuXG4gIGdldFJlbWlzc2lvbkJ5RmVlQ29kZShmZWVDb2RlOiBzdHJpbmcpOiBJUmVtaXNzaW9uIHtcbiAgICBpZiAodGhpcy5wYXltZW50R3JvdXAgJiYgdGhpcy5wYXltZW50R3JvdXAucmVtaXNzaW9ucyAmJiB0aGlzLnBheW1lbnRHcm91cC5yZW1pc3Npb25zLmxlbmd0aCA+IDApIHtcbiAgICAgIGZvciAoY29uc3QgcmVtaXNzaW9uIG9mIHRoaXMucGF5bWVudEdyb3VwLnJlbWlzc2lvbnMpIHtcbiAgICAgICAgaWYgKHJlbWlzc2lvbi5mZWVfY29kZSA9PT0gZmVlQ29kZSkge1xuICAgICAgICAgIHJldHVybiByZW1pc3Npb247XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBhZGRSZW1pc3Npb24oZmVlOiBJRmVlKSB7XG4gICAgdGhpcy5jdXJyZW50RmVlID0gZmVlO1xuICAgIHRoaXMudmlld1N0YXR1cyA9ICdhZGRfcmVtaXNzaW9uJztcbiAgfVxuXG4gIGdldFBheW1lbnRHcm91cCgpIHtcbiAgICBsZXQgZmVlcyA9IFtdO1xuICAgIHRoaXMucGF5bWVudFZpZXdTZXJ2aWNlLmdldFBheW1lbnRHcm91cERldGFpbHModGhpcy5wYXltZW50R3JvdXBSZWYpLnN1YnNjcmliZShcbiAgICAgIHBheW1lbnRHcm91cCA9PiB7XG4gICAgICAgIHRoaXMucGF5bWVudEdyb3VwID0gcGF5bWVudEdyb3VwO1xuICAgICAgICB0aGlzLmlzUGF5bWVudEV4aXN0ID0gcGF5bWVudEdyb3VwLnBheW1lbnRzID8gcGF5bWVudEdyb3VwLnBheW1lbnRzLmxlbmd0aCA+IDAgOiBmYWxzZTtcbiAgICAgICAgdGhpcy5pc1JlbWlzc2lvbnNFeGlzdCA9IHBheW1lbnRHcm91cC5yZW1pc3Npb25zID8gcGF5bWVudEdyb3VwLnJlbWlzc2lvbnMubGVuZ3RoID4gMCA6IGZhbHNlO1xuXG4gICAgICAgIGlmIChwYXltZW50R3JvdXAuZmVlcykge1xuICAgICAgICAgIHBheW1lbnRHcm91cC5mZWVzLmZvckVhY2goZmVlID0+IHtcbiAgICAgICAgICAgICAgdGhpcy50b3RhbEFmdGVyUmVtaXNzaW9uICA9IHRoaXMudG90YWxBZnRlclJlbWlzc2lvbiAgKyBmZWUubmV0X2Ftb3VudDtcbiAgICAgICAgICAgICAgaWYoZmVlLmNhbGN1bGF0ZWRfYW1vdW50ID09PSAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0ZlZUFtb3VudFplcm8gPSB0cnVlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHRoaXMuaXNSZW1pc3Npb25zTWF0Y2ggPSBmYWxzZTtcbiAgICAgICAgICAgICAgcGF5bWVudEdyb3VwLnJlbWlzc2lvbnMuZm9yRWFjaChyZW0gPT4ge1xuICAgICAgICAgICAgICAgIGlmKHJlbS5mZWVfY29kZSA9PT0gZmVlLmNvZGUpIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuaXNSZW1pc3Npb25zTWF0Y2ggPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgZmVlWydyZW1pc3Npb25zJ10gPSByZW07XG4gICAgICAgICAgICAgICAgICBmZWVzLnB1c2goZmVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuICAgIFxuICAgICAgICAgICAgICBpZighdGhpcy5pc1JlbWlzc2lvbnNNYXRjaCkge1xuICAgICAgICAgICAgICAgIGZlZXMucHVzaChmZWUpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcGF5bWVudEdyb3VwLmZlZXMgPSBmZWVzO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5vdXRTdGFuZGluZ0Ftb3VudCA9IHRoaXMuYnVsa1NjYW5pbmdQYXltZW50U2VydmljZS5jYWxjdWxhdGVPdXRTdGFuZGluZ0Ftb3VudChwYXltZW50R3JvdXApO1xuICAgICAgfSxcbiAgICAgIChlcnJvcjogYW55KSA9PiB0aGlzLmVycm9yTWVzc2FnZSA9IGVycm9yLnJlcGxhY2UoL1wiL2csXCJcIilcbiAgICApO1xuICB9XG5cbiAgY29uZmlybVJlbW92ZUZlZShmZWU6IElGZWUpe1xuICAgIHRoaXMuaXNSZW1vdmVCdG5EaXNhYmxlZCA9IGZhbHNlO1xuICAgIHRoaXMuY3VycmVudEZlZSA9IGZlZTtcbiAgICB0aGlzLnZpZXdTdGF0dXMgPSAnZmVlUmVtb3ZhbENvbmZpcm1hdGlvbic7XG4gIH1cblxuICByZW1vdmVGZWUoZmVlOiBhbnkpe1xuICAgIHRoaXMuaXNSZW1vdmVCdG5EaXNhYmxlZCA9IHRydWU7XG4gICAgdGhpcy5wYXltZW50Vmlld1NlcnZpY2UuZGVsZXRlRmVlRnJvbVBheW1lbnRHcm91cChmZWUpLnN1YnNjcmliZShcbiAgICAgIChzdWNjZXNzOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5wYXltZW50R3JvdXAuZmVlcyAmJiB0aGlzLnBheW1lbnRHcm91cC5mZWVzLmxlbmd0aCA+IDEpe1xuICAgICAgICAgIHRoaXMudG90YWxBZnRlclJlbWlzc2lvbiA9IDA7XG4gICAgICAgICAgdGhpcy5nZXRQYXltZW50R3JvdXAoKTtcbiAgICAgICAgICB0aGlzLnZpZXdTdGF0dXMgPSAnbWFpbic7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmxvYWRDYXNlVHJhbnNhY3Rpb25QYWdlKCk7XG4gICAgICB9LFxuICAgICAgKGVycm9yOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IGVycm9yO1xuICAgICAgICAgIHRoaXMuaXNSZW1vdmVCdG5EaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuIGxvYWRDYXNlVHJhbnNhY3Rpb25QYWdlKCkge1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5UQUtFUEFZTUVOVCA9IHRydWU7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LnZpZXdOYW1lID0gJ2Nhc2UtdHJhbnNhY3Rpb25zJztcbiAgICB0aGlzLnBheW1lbnRWaWV3U2VydmljZS5nZXRCU2ZlYXR1cmUoKS5zdWJzY3JpYmUoXG4gICAgICBmZWF0dXJlcyA9PiB7XG4gICAgICAgIGxldCByZXN1bHQgPSBKU09OLnBhcnNlKGZlYXR1cmVzKS5maWx0ZXIoZmVhdHVyZSA9PiBmZWF0dXJlLnVpZCA9PT0gQlNfRU5BQkxFX0ZMQUcpO1xuICAgICAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuSVNCU0VOQUJMRSA9IHJlc3VsdFswXSA/IHJlc3VsdFswXS5lbmFibGUgOiBmYWxzZTtcbiAgICAgIH0sXG4gICAgICBlcnIgPT4ge1xuICAgICAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuSVNCU0VOQUJMRSA9IGZhbHNlO1xuICAgICAgfVxuICAgICk7XG5cbiAgICBsZXQgcGFydFVybCA9IGBzZWxlY3RlZE9wdGlvbj0ke3RoaXMucGF5bWVudExpYkNvbXBvbmVudC5TRUxFQ1RFRF9PUFRJT059YDtcbiAgICAgIHBhcnRVcmwgKz10aGlzLmJzUGF5bWVudERjbk51bWJlciA/IGAmZGNuPSR7dGhpcy5ic1BheW1lbnREY25OdW1iZXJ9YCA6ICcnO1xuICAgICAgcGFydFVybCArPXRoaXMucGF5bWVudExpYkNvbXBvbmVudC5JU0JTRU5BQkxFID8gJyZpc0J1bGtTY2FubmluZz1FbmFibGUnIDogJyZpc0J1bGtTY2FubmluZz1EaXNhYmxlJztcbiAgICAgIHBhcnRVcmwgKz10aGlzLnBheW1lbnRMaWJDb21wb25lbnQuSVNUVVJOT0ZGID8gJyZpc1R1cm5PZmY9RW5hYmxlJyA6ICcmaXNUdXJuT2ZmPURpc2FibGUnO1xuICAgICAgcGFydFVybCArPXRoaXMucGF5bWVudExpYkNvbXBvbmVudC5JU1NGRU5BQkxFID8gJyZpc1N0Rml4RW5hYmxlPUVuYWJsZScgOiAnJmlzU3RGaXhFbmFibGU9RGlzYWJsZSc7XG4gICAgICBwYXJ0VXJsICs9YCZjYXNlVHlwZT0ke3RoaXMucGF5bWVudExpYkNvbXBvbmVudC5DQVNFVFlQRX1gO1xuICAgICAgcGFydFVybCArPXRoaXMuaXNOZXdQY2lwYWxPZmYgPyAnJmlzTmV3UGNpcGFsT2ZmPUVuYWJsZScgOiAnJmlzTmV3UGNpcGFsT2ZmPURpc2FibGUnO1xuICAgICAgcGFydFVybCArPXRoaXMuaXNPbGRQY2lwYWxPZmYgPyAnJmlzT2xkUGNpcGFsT2ZmPUVuYWJsZScgOiAnJmlzT2xkUGNpcGFsT2ZmPURpc2FibGUnO1xuXG4gICAgbGV0IHVybCA9IGAvcGF5bWVudC1oaXN0b3J5LyR7dGhpcy5jY2RDYXNlTnVtYmVyfT92aWV3PWNhc2UtdHJhbnNhY3Rpb25zJnRha2VQYXltZW50PXRydWUmJHtwYXJ0VXJsfWA7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh1cmwpO1xuICB9XG4gIGNhbmNlbFJlbWlzc2lvbigpIHtcbiAgICB0aGlzLnZpZXdTdGF0dXMgPSAnbWFpbic7XG4gIH1cbiAgcmVkaXJlY3RUb0ZlZVNlYXJjaFBhZ2UoZXZlbnQ6IGFueSwgcGFnZT86IHN0cmluZykge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgbGV0IHBhcnRVcmwgPXRoaXMuYnNQYXltZW50RGNuTnVtYmVyID8gYCZkY249JHt0aGlzLmJzUGF5bWVudERjbk51bWJlcn1gIDogJyc7XG4gICAgICBwYXJ0VXJsICs9dGhpcy5wYXltZW50TGliQ29tcG9uZW50LklTQlNFTkFCTEUgPyAnJmlzQnVsa1NjYW5uaW5nPUVuYWJsZScgOiAnJmlzQnVsa1NjYW5uaW5nPURpc2FibGUnO1xuICAgICAgcGFydFVybCArPXRoaXMucGF5bWVudExpYkNvbXBvbmVudC5JU1RVUk5PRkYgPyAnJmlzVHVybk9mZj1FbmFibGUnIDogJyZpc1R1cm5PZmY9RGlzYWJsZSc7XG4gICAgICBwYXJ0VXJsICs9dGhpcy5wYXltZW50TGliQ29tcG9uZW50LklTU0ZFTkFCTEUgPyAnJmlzU3RGaXhFbmFibGU9RW5hYmxlJyA6ICcmaXNTdEZpeEVuYWJsZT1EaXNhYmxlJztcbiAgICAgIHBhcnRVcmwgKz1gJmNhc2VUeXBlPSR7dGhpcy5wYXltZW50TGliQ29tcG9uZW50LkNBU0VUWVBFfWA7XG4gICAgICBwYXJ0VXJsICs9dGhpcy5pc05ld1BjaXBhbE9mZiA/ICcmaXNOZXdQY2lwYWxPZmY9RW5hYmxlJyA6ICcmaXNOZXdQY2lwYWxPZmY9RGlzYWJsZSc7XG4gICAgICBwYXJ0VXJsICs9dGhpcy5pc09sZFBjaXBhbE9mZiA/ICcmaXNPbGRQY2lwYWxPZmY9RW5hYmxlJyA6ICcmaXNPbGRQY2lwYWxPZmY9RGlzYWJsZSc7XG5cbiAgICBpZih0aGlzLnZpZXdTdGF0dXMgPT09ICdmZWVSZW1vdmFsQ29uZmlybWF0aW9uJyB8fCB0aGlzLnZpZXdTdGF0dXMgPT09ICdhZGRfcmVtaXNzaW9uJykge1xuICAgICAgdGhpcy52aWV3U3RhdHVzID0gJ21haW4nO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgdXJsID0gYC9mZWUtc2VhcmNoP2NjZENhc2VOdW1iZXI9JHt0aGlzLmNjZENhc2VOdW1iZXJ9JnNlbGVjdGVkT3B0aW9uPSR7dGhpcy5wYXltZW50TGliQ29tcG9uZW50LlNFTEVDVEVEX09QVElPTn0mcGF5bWVudEdyb3VwUmVmPSR7dGhpcy5wYXltZW50R3JvdXBSZWZ9JHtwYXJ0VXJsfWA7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh1cmwpO1xuICB9XG4gIHRha2VQYXltZW50KCkge1xuICAgIHRoaXMuaXNDb25maXJtYXRpb25CdG5EaXNhYmxlZCA9IHRydWU7XG4gICAgICBjb25zdCByZXF1ZXN0Qm9keSA9IG5ldyBQYXltZW50VG9QYXlodWJSZXF1ZXN0KHRoaXMuY2NkQ2FzZU51bWJlciwgdGhpcy5vdXRTdGFuZGluZ0Ftb3VudCwgdGhpcy5jYXNlVHlwZSksXG4gICAgICBhbnRlbm5hUmVxQm9keSA9IG5ldyBQYXlodWJBbnRlbm5hUmVxdWVzdCh0aGlzLmNjZENhc2VOdW1iZXIsIHRoaXMub3V0U3RhbmRpbmdBbW91bnQsIHRoaXMuY2FzZVR5cGUpO1xuXG4gICAgaWYodGhpcy5wbGF0Rm9ybSA9PT0gJzh4OCcpIHtcbiAgICAgIHRoaXMucGF5bWVudFZpZXdTZXJ2aWNlLnBvc3RQYXltZW50VG9QYXlIdWIocmVxdWVzdEJvZHksIHRoaXMucGF5bWVudEdyb3VwUmVmKS5zdWJzY3JpYmUoXG4gICAgICAgIHJlc3BvbnNlID0+IHtcbiAgICAgICAgICB0aGlzLmxvY2F0aW9uLmdvKGBwYXltZW50LWhpc3Rvcnk/dmlldz1mZWUtc3VtbWFyeWApO1xuICAgICAgICAgIHRoaXMucGF5aHViSHRtbCA9IHJlc3BvbnNlO1xuICAgICAgICAgIHRoaXMudmlld1N0YXR1cyA9ICdwYXlodWJfdmlldyc7XG4gICAgICAgICAgdGhpcy5pc0JhY2tCdXR0b25FbmFibGU9ZmFsc2U7XG4gICAgICAgIH0sXG4gICAgICAgIChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBlcnJvcjtcbiAgICAgICAgICB0aGlzLmlzQ29uZmlybWF0aW9uQnRuRGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcvcGNpLXBhbC1mYWlsdXJlJyk7XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSBlbHNlIGlmKHRoaXMucGxhdEZvcm0gPT09ICdBbnRlbm5hJykge1xuXG4gICAgICB0aGlzLnBheW1lbnRWaWV3U2VydmljZS5wb3N0UGF5bWVudEFudGVubmFUb1BheUh1YihhbnRlbm5hUmVxQm9keSwgdGhpcy5wYXltZW50R3JvdXBSZWYpLnN1YnNjcmliZShcbiAgICAgICAgcmVzcG9uc2UgPT4ge1xuICAgICAgICAgIHRoaXMuaXNCYWNrQnV0dG9uRW5hYmxlPWZhbHNlO1xuICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJy9tYWtlUGF5bWVudEJ5VGVsZXBob25leVByb3ZpZGVyJztcbiAgICAgICAgfSxcbiAgICAgICAgKGVycm9yOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IGVycm9yO1xuICAgICAgICAgIHRoaXMuaXNDb25maXJtYXRpb25CdG5EaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoJy9wY2ktcGFsLWZhaWx1cmUnKTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9XG5cbiAgfVxuXG4gIGdvVG9BbGxvY2F0ZVBhZ2Uob3V0U3RhbmRpbmdBbW91bnQ6IG51bWJlciwgaXNGZWVBbW91bnRaZXJvOiBCb29sZWFuKSB7XG4gICAgaWYgKG91dFN0YW5kaW5nQW1vdW50ID4gMCB8fCAob3V0U3RhbmRpbmdBbW91bnQgPT09IDAgJiYgaXNGZWVBbW91bnRaZXJvKSkge1xuICAgICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LnBheW1lbnRHcm91cFJlZmVyZW5jZSA9IHRoaXMucGF5bWVudEdyb3VwUmVmO1xuICAgICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LnZpZXdOYW1lID0gJ2FsbG9jYXRlLXBheW1lbnRzJztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5sb2FkQ2FzZVRyYW5zYWN0aW9uUGFnZSgpO1xuICAgIH1cbiAgfVxuICBpc0NoZWNrQW1vdW50ZHVlRXhpc3QoYW1vdW50RHVlOiBhbnkpIHtcbiAgICByZXR1cm4gdHlwZW9mIGFtb3VudER1ZSA9PT0gJ3VuZGVmaW5lZCc7XG4gIH1cbn1cbiJdfQ==
|