@hmcts/ccpay-web-component 4.0.0-beta45 → 4.0.0-beta454

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (203) hide show
  1. package/bundles/hmcts-ccpay-web-component.umd.js +6595 -2356
  2. package/bundles/hmcts-ccpay-web-component.umd.js.map +1 -1
  3. package/bundles/hmcts-ccpay-web-component.umd.min.js +1 -1
  4. package/bundles/hmcts-ccpay-web-component.umd.min.js.map +1 -1
  5. package/esm2015/hmcts-ccpay-web-component.js +33 -25
  6. package/esm2015/lib/components/add-remission/add-remission.component.js +757 -140
  7. package/esm2015/lib/components/allocate-payments/allocate-payments.component.js +315 -312
  8. package/esm2015/lib/components/card-details/card-details.component.js +22 -57
  9. package/esm2015/lib/components/case-transactions/case-transactions.component.js +1069 -333
  10. package/esm2015/lib/components/error-banner/error-banner.component.js +5 -17
  11. package/esm2015/lib/components/fee-summary/fee-summary.component.js +245 -241
  12. package/esm2015/lib/components/mark-unidentified-payment/mark-unidentified-payment.component.js +137 -158
  13. package/esm2015/lib/components/mark-unsolicited-payment/mark-unsolicited-payment.component.js +184 -171
  14. package/esm2015/lib/components/page-not-found.component.js +3 -4
  15. package/esm2015/lib/components/payment-list/payment-list.component.js +22 -80
  16. package/esm2015/lib/components/payment-view/payment-view.component.js +269 -129
  17. package/esm2015/lib/components/pba-details/pba-details.component.js +5 -39
  18. package/esm2015/lib/components/process-refund/process-refund.component.js +314 -0
  19. package/esm2015/lib/components/processed-payments/processed-payments.component.js +72 -0
  20. package/esm2015/lib/components/refund-list/refund-list.component.js +140 -0
  21. package/esm2015/lib/components/refund-status/refund-status.component.js +487 -0
  22. package/esm2015/lib/components/refunds/refunds.component.js +23 -0
  23. package/esm2015/lib/components/reports/reports.component.js +117 -107
  24. package/esm2015/lib/components/status-history/status-history.component.js +28 -35
  25. package/esm2015/lib/components/table/table.component.js +187 -0
  26. package/esm2015/lib/components/unprocessed-payments/unprocessed-payments.component.js +178 -89
  27. package/esm2015/lib/interfaces/AddRemissionRequest.js +6 -7
  28. package/esm2015/lib/interfaces/AddRetroRemissionRequest.js +21 -0
  29. package/esm2015/lib/interfaces/AllocatePaymentRequest.js +11 -9
  30. package/esm2015/lib/interfaces/IAllocationPaymentsRequest.js +2 -3
  31. package/esm2015/lib/interfaces/IBSPayments.js +38 -35
  32. package/esm2015/lib/interfaces/ICardDetails.js +14 -13
  33. package/esm2015/lib/interfaces/IFee.js +44 -29
  34. package/esm2015/lib/interfaces/IOrderReferenceFee.js +25 -0
  35. package/esm2015/lib/interfaces/IPatchRefundAction.js +15 -0
  36. package/esm2015/lib/interfaces/IPayment.js +56 -55
  37. package/esm2015/lib/interfaces/IPaymentGroup.js +12 -11
  38. package/esm2015/lib/interfaces/IPaymentStatus.js +2 -3
  39. package/esm2015/lib/interfaces/IPaymentView.js +17 -0
  40. package/esm2015/lib/interfaces/IPayments.js +6 -5
  41. package/esm2015/lib/interfaces/IRefundAction.js +15 -0
  42. package/esm2015/lib/interfaces/IRefundList.js +29 -0
  43. package/esm2015/lib/interfaces/IRefundReasons.js +17 -0
  44. package/esm2015/lib/interfaces/IRefundRejectReason.js +15 -0
  45. package/esm2015/lib/interfaces/IRefundStatus.js +23 -0
  46. package/esm2015/lib/interfaces/IRemission.js +18 -17
  47. package/esm2015/lib/interfaces/IResubmitRefundRequest.js +21 -0
  48. package/esm2015/lib/interfaces/IStatusHistories.js +12 -11
  49. package/esm2015/lib/interfaces/IStatusHistory.js +14 -13
  50. package/esm2015/lib/interfaces/IssueRefundRequest.js +25 -0
  51. package/esm2015/lib/interfaces/PayhubAntennaRequest.js +28 -0
  52. package/esm2015/lib/interfaces/PaymentToPayhubRequest.js +7 -12
  53. package/esm2015/lib/interfaces/PostIssueRefundRetroRemission.js +17 -0
  54. package/esm2015/lib/interfaces/PostRefundRetroRemission.js +21 -0
  55. package/esm2015/lib/interfaces/RefundsRequest.js +21 -0
  56. package/esm2015/lib/interfaces/UnidentifiedPaymentsRequest.js +2 -3
  57. package/esm2015/lib/interfaces/UnsolicitedPaymentsRequest.js +2 -3
  58. package/esm2015/lib/payment-lib.component.js +112 -18
  59. package/esm2015/lib/payment-lib.module.js +33 -6
  60. package/esm2015/lib/payment-lib.service.js +18 -4
  61. package/esm2015/lib/pipes/capitalize.pipe.js +24 -0
  62. package/esm2015/lib/pipes/ccd-hyphens.pipe.js +3 -4
  63. package/esm2015/lib/pipes/key-value.pipe.js +3 -4
  64. package/esm2015/lib/pipes/sanitize-html.pipe.js +7 -5
  65. package/esm2015/lib/services/bulk-scaning-payment/bulk-scaning-payment.service.js +52 -14
  66. package/esm2015/lib/services/card-details/card-details.service.js +19 -8
  67. package/esm2015/lib/services/case-transactions/case-transactions.service.js +19 -8
  68. package/esm2015/lib/services/orderslist.service.js +211 -0
  69. package/esm2015/lib/services/payment-list/payment-list.service.js +19 -8
  70. package/esm2015/lib/services/payment-view/payment-view.service.js +107 -12
  71. package/esm2015/lib/services/refunds/refunds.service.js +196 -0
  72. package/esm2015/lib/services/shared/error-handler.service.js +6 -4
  73. package/esm2015/lib/services/shared/httpclient/webcomponent.http.client.js +17 -8
  74. package/esm2015/lib/services/shared/logger/console-logger.service.js +7 -5
  75. package/esm2015/lib/services/shared/logger/logger.service.js +7 -5
  76. package/esm2015/lib/services/status-history/status-history.service.js +19 -8
  77. package/esm2015/lib/services/xl-file/xl-file.service.js +57 -50
  78. package/esm2015/public_api.js +1 -2
  79. package/esm5/hmcts-ccpay-web-component.js +33 -25
  80. package/esm5/lib/components/add-remission/add-remission.component.js +822 -47
  81. package/esm5/lib/components/allocate-payments/allocate-payments.component.js +328 -107
  82. package/esm5/lib/components/card-details/card-details.component.js +22 -9
  83. package/esm5/lib/components/case-transactions/case-transactions.component.js +1170 -85
  84. package/esm5/lib/components/error-banner/error-banner.component.js +3 -4
  85. package/esm5/lib/components/fee-summary/fee-summary.component.js +252 -57
  86. package/esm5/lib/components/mark-unidentified-payment/mark-unidentified-payment.component.js +136 -45
  87. package/esm5/lib/components/mark-unsolicited-payment/mark-unsolicited-payment.component.js +189 -60
  88. package/esm5/lib/components/page-not-found.component.js +3 -4
  89. package/esm5/lib/components/payment-list/payment-list.component.js +21 -8
  90. package/esm5/lib/components/payment-view/payment-view.component.js +318 -17
  91. package/esm5/lib/components/pba-details/pba-details.component.js +5 -6
  92. package/esm5/lib/components/process-refund/process-refund.component.js +336 -0
  93. package/esm5/lib/components/processed-payments/processed-payments.component.js +83 -0
  94. package/esm5/lib/components/refund-list/refund-list.component.js +143 -0
  95. package/esm5/lib/components/refund-status/refund-status.component.js +545 -0
  96. package/esm5/lib/components/refunds/refunds.component.js +29 -0
  97. package/esm5/lib/components/reports/reports.component.js +122 -25
  98. package/esm5/lib/components/status-history/status-history.component.js +27 -9
  99. package/esm5/lib/components/table/table.component.js +217 -0
  100. package/esm5/lib/components/unprocessed-payments/unprocessed-payments.component.js +188 -24
  101. package/esm5/lib/interfaces/AddRemissionRequest.js +5 -6
  102. package/esm5/lib/interfaces/AddRetroRemissionRequest.js +19 -0
  103. package/esm5/lib/interfaces/AllocatePaymentRequest.js +9 -8
  104. package/esm5/lib/interfaces/IAllocationPaymentsRequest.js +2 -3
  105. package/esm5/lib/interfaces/IBSPayments.js +38 -35
  106. package/esm5/lib/interfaces/ICardDetails.js +14 -13
  107. package/esm5/lib/interfaces/IFee.js +44 -29
  108. package/esm5/lib/interfaces/IOrderReferenceFee.js +25 -0
  109. package/esm5/lib/interfaces/IPatchRefundAction.js +15 -0
  110. package/esm5/lib/interfaces/IPayment.js +56 -55
  111. package/esm5/lib/interfaces/IPaymentGroup.js +12 -11
  112. package/esm5/lib/interfaces/IPaymentStatus.js +2 -3
  113. package/esm5/lib/interfaces/IPaymentView.js +17 -0
  114. package/esm5/lib/interfaces/IPayments.js +6 -5
  115. package/esm5/lib/interfaces/IRefundAction.js +15 -0
  116. package/esm5/lib/interfaces/IRefundList.js +29 -0
  117. package/esm5/lib/interfaces/IRefundReasons.js +17 -0
  118. package/esm5/lib/interfaces/IRefundRejectReason.js +15 -0
  119. package/esm5/lib/interfaces/IRefundStatus.js +23 -0
  120. package/esm5/lib/interfaces/IRemission.js +18 -17
  121. package/esm5/lib/interfaces/IResubmitRefundRequest.js +19 -0
  122. package/esm5/lib/interfaces/IStatusHistories.js +12 -11
  123. package/esm5/lib/interfaces/IStatusHistory.js +14 -13
  124. package/esm5/lib/interfaces/IssueRefundRequest.js +22 -0
  125. package/esm5/lib/interfaces/PayhubAntennaRequest.js +25 -0
  126. package/esm5/lib/interfaces/PaymentToPayhubRequest.js +6 -10
  127. package/esm5/lib/interfaces/PostIssueRefundRetroRemission.js +16 -0
  128. package/esm5/lib/interfaces/PostRefundRetroRemission.js +19 -0
  129. package/esm5/lib/interfaces/RefundsRequest.js +19 -0
  130. package/esm5/lib/interfaces/UnidentifiedPaymentsRequest.js +2 -3
  131. package/esm5/lib/interfaces/UnsolicitedPaymentsRequest.js +2 -3
  132. package/esm5/lib/payment-lib.component.js +84 -12
  133. package/esm5/lib/payment-lib.module.js +33 -6
  134. package/esm5/lib/payment-lib.service.js +25 -4
  135. package/esm5/lib/pipes/capitalize.pipe.js +32 -0
  136. package/esm5/lib/pipes/ccd-hyphens.pipe.js +3 -4
  137. package/esm5/lib/pipes/key-value.pipe.js +3 -4
  138. package/esm5/lib/pipes/sanitize-html.pipe.js +7 -5
  139. package/esm5/lib/services/bulk-scaning-payment/bulk-scaning-payment.service.js +61 -14
  140. package/esm5/lib/services/card-details/card-details.service.js +19 -8
  141. package/esm5/lib/services/case-transactions/case-transactions.service.js +19 -8
  142. package/esm5/lib/services/orderslist.service.js +276 -0
  143. package/esm5/lib/services/payment-list/payment-list.service.js +19 -8
  144. package/esm5/lib/services/payment-view/payment-view.service.js +150 -13
  145. package/esm5/lib/services/refunds/refunds.service.js +236 -0
  146. package/esm5/lib/services/shared/error-handler.service.js +6 -4
  147. package/esm5/lib/services/shared/httpclient/webcomponent.http.client.js +17 -8
  148. package/esm5/lib/services/shared/logger/console-logger.service.js +7 -5
  149. package/esm5/lib/services/shared/logger/logger.service.js +7 -5
  150. package/esm5/lib/services/status-history/status-history.service.js +19 -8
  151. package/esm5/lib/services/xl-file/xl-file.service.js +63 -50
  152. package/esm5/public_api.js +1 -2
  153. package/fesm2015/hmcts-ccpay-web-component.js +4515 -2023
  154. package/fesm2015/hmcts-ccpay-web-component.js.map +1 -1
  155. package/fesm5/hmcts-ccpay-web-component.js +6828 -2424
  156. package/fesm5/hmcts-ccpay-web-component.js.map +1 -1
  157. package/hmcts-ccpay-web-component.d.ts +31 -22
  158. package/hmcts-ccpay-web-component.metadata.json +1 -1
  159. package/lib/components/add-remission/add-remission.component.d.ts +77 -3
  160. package/lib/components/allocate-payments/allocate-payments.component.d.ts +26 -9
  161. package/lib/components/case-transactions/case-transactions.component.d.ts +84 -4
  162. package/lib/components/fee-summary/fee-summary.component.d.ts +13 -1
  163. package/lib/components/mark-unidentified-payment/mark-unidentified-payment.component.d.ts +2 -0
  164. package/lib/components/mark-unsolicited-payment/mark-unsolicited-payment.component.d.ts +7 -0
  165. package/lib/components/payment-view/payment-view.component.d.ts +34 -1
  166. package/lib/components/process-refund/process-refund.component.d.ts +46 -0
  167. package/lib/components/processed-payments/processed-payments.component.d.ts +14 -0
  168. package/lib/components/refund-list/refund-list.component.d.ts +23 -0
  169. package/lib/components/refund-status/refund-status.component.d.ts +66 -0
  170. package/lib/components/refunds/refunds.component.d.ts +5 -0
  171. package/lib/components/reports/reports.component.d.ts +5 -1
  172. package/lib/components/status-history/status-history.component.d.ts +1 -0
  173. package/lib/components/table/table.component.d.ts +35 -0
  174. package/lib/components/unprocessed-payments/unprocessed-payments.component.d.ts +25 -4
  175. package/lib/interfaces/AddRemissionRequest.d.ts +2 -2
  176. package/lib/interfaces/AddRetroRemissionRequest.d.ts +5 -0
  177. package/lib/interfaces/AllocatePaymentRequest.d.ts +16 -3
  178. package/lib/interfaces/IBSPayments.d.ts +1 -0
  179. package/lib/interfaces/IFee.d.ts +7 -0
  180. package/lib/interfaces/IOrderReferenceFee.d.ts +9 -0
  181. package/lib/interfaces/IPatchRefundAction.d.ts +4 -0
  182. package/lib/interfaces/IPaymentView.d.ts +5 -0
  183. package/lib/interfaces/IRefundAction.d.ts +4 -0
  184. package/lib/interfaces/IRefundList.d.ts +14 -0
  185. package/lib/interfaces/IRefundReasons.d.ts +5 -0
  186. package/lib/interfaces/IRefundRejectReason.d.ts +4 -0
  187. package/lib/interfaces/IRefundStatus.d.ts +8 -0
  188. package/lib/interfaces/IResubmitRefundRequest.d.ts +5 -0
  189. package/lib/interfaces/IssueRefundRequest.d.ts +6 -0
  190. package/lib/interfaces/PayhubAntennaRequest.d.ts +7 -0
  191. package/lib/interfaces/PaymentToPayhubRequest.d.ts +2 -3
  192. package/lib/interfaces/PostIssueRefundRetroRemission.d.ts +4 -0
  193. package/lib/interfaces/PostRefundRetroRemission.d.ts +5 -0
  194. package/lib/interfaces/RefundsRequest.d.ts +5 -0
  195. package/lib/payment-lib.component.d.ts +28 -3
  196. package/lib/payment-lib.service.d.ts +3 -0
  197. package/lib/pipes/capitalize.pipe.d.ts +5 -0
  198. package/lib/services/bulk-scaning-payment/bulk-scaning-payment.service.d.ts +2 -0
  199. package/lib/services/orderslist.service.d.ts +40 -0
  200. package/lib/services/payment-view/payment-view.service.d.ts +17 -1
  201. package/lib/services/refunds/refunds.service.d.ts +30 -0
  202. package/lib/services/xl-file/xl-file.service.d.ts +6 -6
  203. package/package.json +1 -1
@@ -1,8 +1,8 @@
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
- import { Component } from '@angular/core';
5
+ import { Component, Input } from '@angular/core';
6
6
  import { FormBuilder, Validators, FormControl } from '@angular/forms';
7
7
  import { PaymentLibComponent } from '../../payment-lib.component';
8
8
  import { BulkScaningPaymentService } from '../../services/bulk-scaning-payment/bulk-scaning-payment.service';
@@ -24,8 +24,10 @@ var MarkUnsolicitedPaymentComponent = /** @class */ (function () {
24
24
  this.errorMessage = this.getErrorMessage(false);
25
25
  this.siteID = null;
26
26
  this.isConfirmButtondisabled = false;
27
+ this.isContinueButtondisabled = false;
27
28
  this.ccdReference = null;
28
29
  this.exceptionReference = null;
30
+ this.isStrategicFixEnable = true;
29
31
  }
30
32
  /**
31
33
  * @return {?}
@@ -34,13 +36,30 @@ var MarkUnsolicitedPaymentComponent = /** @class */ (function () {
34
36
  * @return {?}
35
37
  */
36
38
  function () {
39
+ var _this = this;
37
40
  this.resetForm([false, false, false, false, false, false], 'all');
38
41
  this.viewStatus = 'mainForm';
39
42
  this.ccdCaseNumber = this.paymentLibComponent.CCD_CASE_NUMBER;
40
43
  this.bspaymentdcn = this.paymentLibComponent.bspaymentdcn;
44
+ this.isStrategicFixEnable = this.paymentLibComponent.ISSFENABLE;
41
45
  this.getUnassignedPayment();
42
- /** @type {?} */
43
- var emailPattern = '^[a-z0-9](\\.?[a-z0-9_-]){0,}@[a-z0-9-]+\\.([a-z]{1,6}\\.)?[a-z]{2,6}$';
46
+ this.paymentViewService.getSiteID().subscribe((/**
47
+ * @param {?} siteids
48
+ * @return {?}
49
+ */
50
+ function (siteids) {
51
+ _this.isContinueButtondisabled = false;
52
+ _this.errorMessage = _this.getErrorMessage(false);
53
+ _this.siteIDList = JSON.parse(siteids);
54
+ }), (/**
55
+ * @param {?} err
56
+ * @return {?}
57
+ */
58
+ function (err) {
59
+ window.scrollTo(0, 0);
60
+ _this.isContinueButtondisabled = true;
61
+ _this.errorMessage = _this.getErrorMessage(true);
62
+ }));
44
63
  this.markPaymentUnsolicitedForm = this.formBuilder.group({
45
64
  reason: new FormControl('', Validators.compose([
46
65
  Validators.required,
@@ -78,42 +97,102 @@ var MarkUnsolicitedPaymentComponent = /** @class */ (function () {
78
97
  this.isConfirmButtondisabled = true;
79
98
  /** @type {?} */
80
99
  var controls = this.markPaymentUnsolicitedForm.controls;
81
- // controls.responsibleOffice.setValue('P219');
82
- this.bulkScaningPaymentService.patchBSChangeStatus(this.unassignedRecord.dcn_reference, 'PROCESSED').subscribe(function (res1) {
83
- _this.errorMessage = _this.getErrorMessage(false);
100
+ if (!this.isStrategicFixEnable) {
84
101
  /** @type {?} */
85
- var response1 = JSON.parse(res1);
102
+ var allocatedRequest = {
103
+ allocation_status: 'Transferred',
104
+ payment_allocation_status: {
105
+ description: '',
106
+ name: 'Transferred'
107
+ },
108
+ unidentified_reason: controls.reason.value,
109
+ receiving_office: this.selectedSiteId,
110
+ user_id: this.caseType,
111
+ };
86
112
  /** @type {?} */
87
- var requestBody = new AllocatePaymentRequest(_this.ccdReference, _this.unassignedRecord, _this.siteID, _this.exceptionReference);
88
- _this.paymentViewService.postBSPayments(requestBody).subscribe(function (res2) {
113
+ var postStrategicBody = new AllocatePaymentRequest(this.ccdReference, this.unassignedRecord, this.caseType, this.exceptionReference, allocatedRequest);
114
+ this.bulkScaningPaymentService.postBSWoPGStrategic(postStrategicBody).subscribe((/**
115
+ * @param {?} res
116
+ * @return {?}
117
+ */
118
+ function (res) {
89
119
  _this.errorMessage = _this.getErrorMessage(false);
90
120
  /** @type {?} */
91
- var response2 = JSON.parse(res2);
92
- /** @type {?} */
93
- var reqBody = new UnsolicitedPaymentsRequest(response2['data'].payment_group_reference, response2['data'].reference, controls["reason"].value, controls["responsibleOffice"].value, controls["responsiblePerson"].value, controls["emailId"].value);
94
- if (response2.success) {
95
- _this.paymentViewService.postBSUnsolicitedPayments(reqBody).subscribe(function (res3) {
96
- _this.errorMessage = _this.getErrorMessage(false);
97
- /** @type {?} */
98
- var response3 = JSON.parse(res3);
99
- if (response3.success) {
100
- _this.gotoCasetransationPage();
101
- }
102
- }, function (error) {
103
- _this.bulkScaningPaymentService.patchBSChangeStatus(_this.unassignedRecord.dcn_reference, 'COMPLETE').subscribe();
104
- _this.errorMessage = _this.getErrorMessage(true);
105
- _this.isConfirmButtondisabled = false;
106
- });
121
+ var response = JSON.parse(res);
122
+ if (response.success) {
123
+ _this.gotoCasetransationPage();
107
124
  }
108
- }, function (error) {
109
- _this.bulkScaningPaymentService.patchBSChangeStatus(_this.unassignedRecord.dcn_reference, 'COMPLETE').subscribe();
125
+ }), (/**
126
+ * @param {?} error
127
+ * @return {?}
128
+ */
129
+ function (error) {
110
130
  _this.errorMessage = _this.getErrorMessage(true);
111
131
  _this.isConfirmButtondisabled = false;
112
- });
113
- }, function (error) {
114
- _this.errorMessage = _this.getErrorMessage(true);
115
- _this.isConfirmButtondisabled = false;
116
- });
132
+ }));
133
+ }
134
+ else {
135
+ // controls.responsibleOffice.setValue('P219');
136
+ this.bulkScaningPaymentService.patchBSChangeStatus(this.unassignedRecord.dcn_reference, 'PROCESSED').subscribe((/**
137
+ * @param {?} res1
138
+ * @return {?}
139
+ */
140
+ function (res1) {
141
+ _this.errorMessage = _this.getErrorMessage(false);
142
+ /** @type {?} */
143
+ var response1 = JSON.parse(res1);
144
+ /** @type {?} */
145
+ var requestBody = new AllocatePaymentRequest(_this.ccdReference, _this.unassignedRecord, _this.siteID, _this.exceptionReference);
146
+ _this.paymentViewService.postBSPayments(requestBody).subscribe((/**
147
+ * @param {?} res2
148
+ * @return {?}
149
+ */
150
+ function (res2) {
151
+ _this.errorMessage = _this.getErrorMessage(false);
152
+ /** @type {?} */
153
+ var response2 = JSON.parse(res2);
154
+ /** @type {?} */
155
+ var reqBody = new UnsolicitedPaymentsRequest(response2['data'].payment_group_reference, response2['data'].reference, controls.reason.value, _this.selectedSiteId, controls.responsiblePerson.value, controls.emailId.value);
156
+ if (response2.success) {
157
+ _this.paymentViewService.postBSUnsolicitedPayments(reqBody).subscribe((/**
158
+ * @param {?} res3
159
+ * @return {?}
160
+ */
161
+ function (res3) {
162
+ _this.errorMessage = _this.getErrorMessage(false);
163
+ /** @type {?} */
164
+ var response3 = JSON.parse(res3);
165
+ if (response3.success) {
166
+ _this.gotoCasetransationPage();
167
+ }
168
+ }), (/**
169
+ * @param {?} error
170
+ * @return {?}
171
+ */
172
+ function (error) {
173
+ _this.bulkScaningPaymentService.patchBSChangeStatus(_this.unassignedRecord.dcn_reference, 'COMPLETE').subscribe();
174
+ _this.errorMessage = _this.getErrorMessage(true);
175
+ _this.isConfirmButtondisabled = false;
176
+ }));
177
+ }
178
+ }), (/**
179
+ * @param {?} error
180
+ * @return {?}
181
+ */
182
+ function (error) {
183
+ _this.bulkScaningPaymentService.patchBSChangeStatus(_this.unassignedRecord.dcn_reference, 'COMPLETE').subscribe();
184
+ _this.errorMessage = _this.getErrorMessage(true);
185
+ _this.isConfirmButtondisabled = false;
186
+ }));
187
+ }), (/**
188
+ * @param {?} error
189
+ * @return {?}
190
+ */
191
+ function (error) {
192
+ _this.errorMessage = _this.getErrorMessage(true);
193
+ _this.isConfirmButtondisabled = false;
194
+ }));
195
+ }
117
196
  };
118
197
  /**
119
198
  * @return {?}
@@ -124,32 +203,32 @@ var MarkUnsolicitedPaymentComponent = /** @class */ (function () {
124
203
  function () {
125
204
  this.resetForm([false, false, false, false, false, false], 'all');
126
205
  /** @type {?} */
127
- var formerror = this.markPaymentUnsolicitedForm.controls["reason"].errors;
206
+ var formerror = this.markPaymentUnsolicitedForm.controls.reason.errors;
128
207
  /** @type {?} */
129
- var reasonField = this.markPaymentUnsolicitedForm.controls["reason"];
130
- this.markPaymentUnsolicitedForm.controls["responsibleOffice"].setValue('P219');
208
+ var reasonField = this.markPaymentUnsolicitedForm.controls.reason;
209
+ //const officeIdField = this.selectedSiteId;
131
210
  /** @type {?} */
132
- var officeIdField = this.markPaymentUnsolicitedForm.controls["responsibleOffice"];
211
+ var officeIdField = this.markPaymentUnsolicitedForm.controls.responsibleOffice;
133
212
  if (this.markPaymentUnsolicitedForm.dirty && this.markPaymentUnsolicitedForm.valid) {
134
213
  /** @type {?} */
135
214
  var controls = this.markPaymentUnsolicitedForm.controls;
136
- this.emailId = controls["emailId"].value;
137
- this.responsibleOffice = controls["responsibleOffice"].value;
138
- this.responsiblePerson = controls["responsiblePerson"].value;
139
- this.reason = controls["reason"].value;
215
+ this.emailId = controls.emailId.value;
216
+ this.responsibleOffice = officeIdField.value;
217
+ this.responsiblePerson = controls.responsiblePerson.value;
218
+ this.reason = controls.reason.value;
140
219
  this.viewStatus = 'unsolicitedContinueConfirm';
141
220
  }
142
221
  else {
143
222
  if (reasonField.value == '') {
144
223
  this.resetForm([true, false, false, false, false, false], 'reason');
145
224
  }
146
- if (reasonField.value != '' && this.markPaymentUnsolicitedForm.controls["reason"].invalid) {
225
+ if (reasonField.value != '' && this.markPaymentUnsolicitedForm.controls.reason.invalid) {
147
226
  this.resetForm([false, true, false, false, false, false], 'reason');
148
227
  }
149
- if (formerror && formerror["minlength"] && formerror["minlength"].actualLength < 3) {
228
+ if (formerror && formerror.minlength && formerror.minlength.actualLength < 3) {
150
229
  this.resetForm([false, false, true, false, false, false], 'reason');
151
230
  }
152
- if (formerror && formerror["maxlength"] && formerror["maxlength"].actualLength > 255) {
231
+ if (formerror && formerror.maxlength && formerror.maxlength.actualLength > 255) {
153
232
  this.resetForm([false, false, false, true, false, false], 'reason');
154
233
  }
155
234
  if (officeIdField.value == '') {
@@ -200,7 +279,7 @@ var MarkUnsolicitedPaymentComponent = /** @class */ (function () {
200
279
  }
201
280
  }
202
281
  else {
203
- this.markPaymentUnsolicitedForm.controls["responsibleOffice"].setValue('');
282
+ this.markPaymentUnsolicitedForm.controls.responsibleOffice.setValue('');
204
283
  this.viewStatus = 'mainForm';
205
284
  }
206
285
  };
@@ -242,10 +321,18 @@ var MarkUnsolicitedPaymentComponent = /** @class */ (function () {
242
321
  */
243
322
  function () {
244
323
  var _this = this;
245
- this.bulkScaningPaymentService.getBSPaymentsByDCN(this.bspaymentdcn).subscribe(function (unassignedPayments) {
246
- _this.unassignedRecord = unassignedPayments['data'].payments.filter(function (payment) {
324
+ this.bulkScaningPaymentService.getBSPaymentsByDCN(this.bspaymentdcn).subscribe((/**
325
+ * @param {?} unassignedPayments
326
+ * @return {?}
327
+ */
328
+ function (unassignedPayments) {
329
+ _this.unassignedRecord = unassignedPayments['data'].payments.filter((/**
330
+ * @param {?} payment
331
+ * @return {?}
332
+ */
333
+ function (payment) {
247
334
  return payment && payment.dcn_reference == _this.bspaymentdcn;
248
- })[0];
335
+ }))[0];
249
336
  _this.siteID = unassignedPayments['data'].responsible_service_id;
250
337
  /** @type {?} */
251
338
  var beCcdNumber = unassignedPayments['data'].ccd_reference;
@@ -255,9 +342,13 @@ var MarkUnsolicitedPaymentComponent = /** @class */ (function () {
255
342
  var exceptionReference = beCcdNumber ? beCcdNumber === _this.ccdCaseNumber ? null : _this.ccdCaseNumber : _this.ccdCaseNumber;
256
343
  _this.ccdReference = beCcdNumber ? beCcdNumber : null;
257
344
  _this.exceptionReference = beExceptionNumber ? beExceptionNumber : exceptionReference;
258
- }, function (error) {
345
+ }), (/**
346
+ * @param {?} error
347
+ * @return {?}
348
+ */
349
+ function (error) {
259
350
  _this.errorMessage = _this.getErrorMessage(true);
260
- });
351
+ }));
261
352
  };
262
353
  /**
263
354
  * @param {?} isErrorExist
@@ -269,17 +360,29 @@ var MarkUnsolicitedPaymentComponent = /** @class */ (function () {
269
360
  */
270
361
  function (isErrorExist) {
271
362
  return {
272
- title: "There is a problem with the service",
273
- body: "Try again later",
363
+ title: "Something went wrong.",
364
+ body: "Please try again later.",
274
365
  showError: isErrorExist
275
366
  };
276
367
  };
368
+ /**
369
+ * @param {?} args
370
+ * @return {?}
371
+ */
372
+ MarkUnsolicitedPaymentComponent.prototype.selectchange = /**
373
+ * @param {?} args
374
+ * @return {?}
375
+ */
376
+ function (args) {
377
+ this.selectedSiteId = args.target.value;
378
+ this.selectedSiteName = args.target.options[args.target.selectedIndex].text;
379
+ };
277
380
  MarkUnsolicitedPaymentComponent.decorators = [
278
381
  { type: Component, args: [{
279
382
  selector: 'app-mark-unsolicited-payment',
280
- template: "<div class=\"mkpay-unidentified\">\n <div *ngIf=\"viewStatus === 'mainForm'\">\n <h1 class=\"heading-large\">Mark payment as transferred</h1>\n <div class=\"govuk-grid-column-full govuk-!-padding-bottom-3\">\n <hr class=\"govuk-section-break govuk-section-break--visible\">\n <table class=\"govuk-table\">\n <thead class=\"govuk-table__head\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__header\" scope=\"col\">Payment asset number (DCN)</td>\n <td class=\"govuk-table__header\" scope=\"col\">Banked date</td>\n <td class=\"govuk-table__header\" scope=\"col\">Amount</td>\n <td class=\"govuk-table__header\" scope=\"col\">Method</td>\n </tr>\n </thead>\n <tbody class=\"govuk-table__body\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell\">{{unassignedRecord.dcn_reference}}</td>\n <td class=\"govuk-table__cell\"> {{unassignedRecord.date_banked | date:'dd MMM yyyy'}}</td>\n <td class=\"govuk-table__cell\"> {{unassignedRecord.amount | currency :'GBP':'symbol':'1.2-2'}}</td>\n <td class=\"capitalize govuk-table__cell\"> {{trimUnderscore(unassignedRecord.payment_method) | lowercase}} </td>\n </tr>\n </tbody>\n </table>\n </div>\n \n <form [formGroup]=\"markPaymentUnsolicitedForm\" novalidate>\n <input #myInput type='hidden' id='iFrameDrivenImageValue' value='MARKUNSOLICITED'>\n \n <div class=\"govuk-form-group\">\n <label class=\"govuk-label custom-govuk-label custom-govuk-label\" for=\"reason\">\n Reason for payment being marked as transferred \n </label>\n <textarea class=\"form-control form-control-3-4\" [ngClass]=\"{'inline-error-class': reasonHasError || reasonMinHasError || reasonMaxHasError}\" name=\"reason\" id=\"reason\" rows=\"5\" formControlName=\"reason\">\n </textarea>\n <p class=\"inline-error-message\" *ngIf=\"isReasonEmpty || reasonHasError || reasonMinHasError || reasonMaxHasError\">\n <span *ngIf=\"isReasonEmpty\">Enter a reason for marking this payment as transferred.</span>\n <span *ngIf=\"reasonHasError\">Enter a valid reason</span>\n <span *ngIf=\"reasonMinHasError\">Reason should be at least 3 characters.</span>\n <span *ngIf=\"reasonMaxHasError\">Reason should be 255 characters or under.</span>\n </p>\n </div>\n <div class=\"govuk-form-group\">\n <label class=\"govuk-label custom-govuk-label\" for=\"responsibleOffice\">\n Receiving Site ID (Receiving court/Bulk centre site ID) \n </label>\n <input class=\"govuk-input govuk-input--width-30 govuk-!-margin-right-1\" placeholder='Manchester District Probate Registry (P219)' id=\"responsibleOffice\" name=\"responsibleOffice\" type=\"text\" formControlName=\"responsibleOffice\" disabled>\n </div>\n <div class=\"govuk-button--group\">\n <button type=\"submit\" class=\"button\" (click)=\"saveAndContinue()\">\n Confirm\n </button>\n <button type=\"button\" class=\"button govuk-button--secondary\" (click)=\"cancelMarkUnsolicitedPayments('cancel')\">\n Cancel\n </button>\n </div>\n </form>\n</div>\n <ng-container *ngIf=\"viewStatus === 'unsolicitedContinueConfirm'\">\n <ccpay-error-banner *ngIf=\"errorMessage.showError\" [errorMessage]=\"errorMessage\"></ccpay-error-banner>\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 <h1 class=\"heading-small\"> Are you sure you want to mark this payment as transferred? </h1>\n </strong>\n <input #myInput type='hidden' id='iFrameDrivenImageValue' value='CONFIRMATIONPAGEUNSOLICITED'>\n <div class=\"govuk-grid-column-full govuk-!-padding-bottom-3\">\n <hr class=\"govuk-section-break govuk-section-break--visible\">\n <table class=\"govuk-table\">\n <thead class=\"govuk-table__head\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__header\" scope=\"col\">Reason</td>\n <td class=\"govuk-table__header\" scope=\"col\">Receiving site ID</td>\n </tr>\n </thead>\n <tbody class=\"govuk-table__body\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell\">{{reason}}</td>\n <td class=\"govuk-table__cell\">Manchester District Probate Registry (P219)</td>\n </tr>\n </tbody>\n </table>\n </div>\n\n </div>\n <div class=\"govuk-button--group\">\n <button type=\"submit\" class=\"button\" [disabled]=\"isConfirmButtondisabled\" (click)=\"confirmPayments()\">\n Confirm\n </button>\n <button type=\"button\" class=\"button govuk-button--secondary\" (click)=\"cancelMarkUnsolicitedPayments()\">\n Cancel\n </button>\n </div>\n </ng-container>\n <ng-container *ngIf=\"viewStatus === 'unsolicitedCancelConfirm'\">\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 cancel?\n </strong>\n </div>\n <div class=\"govuk-button--group\">\n <button type=\"submit\" class=\"button\" (click)=\"gotoCasetransationPage()\">\n Yes\n </button>\n <button type=\"button\" class=\"button govuk-button--secondary\" (click)=\"cancelMarkUnsolicitedPayments()\">\n No\n </button>\n </div>\n </ng-container>\n</div>",
281
- styles: [".mkpay-unidentified{margin:10px 0 20px}.mkpay-unidentified .govuk-button--secondary{margin-left:10px;background-color:#b3b8bdf2}.mkpay-unidentified .inline-error-class{outline:#a71414 solid 3px;outline-offset:0}.mkpay-unidentified .inline-error-message{color:#a71414;font-weight:700;margin-top:10px}.lowercase{text-transform:lowercase}.capitalize{text-transform:capitalize}.custom-govuk-label,.govuk-warning-text__text{font-size:19px}#responsibleOffice{color:#000;font-weight:700}"]
282
- },] },
383
+ template: "<div class=\"mkpay-unidentified\">\n <div *ngIf=\"viewStatus === 'mainForm'\">\n <ccpay-error-banner *ngIf=\"errorMessage.showError\" [errorMessage]=\"errorMessage\"></ccpay-error-banner>\n <h1 class=\"heading-large\">Mark payment as transferred</h1>\n <div class=\"govuk-grid-column-full govuk-!-padding-bottom-3\">\n <hr class=\"govuk-section-break govuk-section-break--visible\">\n <table class=\"govuk-table\">\n <thead class=\"govuk-table__head\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__header\" scope=\"col\">Payment asset number (DCN)</td>\n <td class=\"govuk-table__header\" scope=\"col\">Banked date</td>\n <td class=\"govuk-table__header\" scope=\"col\">Amount</td>\n <td class=\"govuk-table__header\" scope=\"col\">Method</td>\n </tr>\n </thead>\n <tbody class=\"govuk-table__body\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell\">{{unassignedRecord.dcn_reference}}</td>\n <td class=\"govuk-table__cell\"> {{unassignedRecord.date_banked | date:'dd MMM yyyy'}}</td>\n <td class=\"govuk-table__cell\"> {{unassignedRecord.amount | currency :'GBP':'symbol':'1.2-2'}}</td>\n <td class=\"capitalize govuk-table__cell\"> {{trimUnderscore(unassignedRecord.payment_method) | lowercase}} </td>\n </tr>\n </tbody>\n </table>\n </div>\n \n <form [formGroup]=\"markPaymentUnsolicitedForm\" novalidate>\n <input #myInput type='hidden' id='iFrameDrivenImageValue' value='MARKTRANSFERRED'>\n <div class=\"govuk-form-group\">\n <label class=\"govuk-label custom-govuk-label custom-govuk-label\" for=\"reason\">\n Reason for payment being marked as transferred \n </label>\n <textarea class=\"form-control form-control-3-4\" [ngClass]=\"{'inline-error-class': reasonHasError || reasonMinHasError || reasonMaxHasError}\" name=\"reason\" id=\"reason\" rows=\"5\" formControlName=\"reason\">\n </textarea>\n <p class=\"inline-error-message\" *ngIf=\"isReasonEmpty || reasonHasError || reasonMinHasError || reasonMaxHasError\">\n <span *ngIf=\"isReasonEmpty\">Enter a reason for marking this payment as transferred.</span>\n <span *ngIf=\"reasonHasError\">Enter a valid reason</span>\n <span *ngIf=\"reasonMinHasError\">Reason should be at least 3 characters.</span>\n <span *ngIf=\"reasonMaxHasError\">Reason should be 255 characters or under.</span>\n </p>\n </div>\n <div class=\"govuk-form-group\">\n <label class=\"govuk-label custom-govuk-label\" for=\"responsibleOffice\">\n Receiving Site ID (Receiving court/Bulk centre site ID) \n </label>\n <select class=\"form-control short-input\" id=\"responsibleOffice\" formControlName=\"responsibleOffice\" (change)=\"selectchange($event)\">\n <option value=\"\" selected='selected'>Please select</option>\n <option *ngFor=\"let siteID of siteIDList;\" value=\"{{siteID.siteId}}\">{{siteID.siteName}} ({{siteID.siteId}})</option>\n </select>\n <p class=\"inline-error-message\" *ngIf=\"isResponsibleOfficeEmpty || responsibleOfficeHasError\">\n <span *ngIf=\"isResponsibleOfficeEmpty\">Please select Receiving Site ID</span>\n <span *ngIf=\"responsibleOfficeHasError\">Please select a valid Receiving Site ID</span>\n </p>\n </div>\n <div class=\"govuk-button--group\">\n <button type=\"submit\" [disabled]=\"isContinueButtondisabled\" class=\"button\" (click)=\"saveAndContinue()\">\n Confirm\n </button>\n <button type=\"button\" class=\"button govuk-button--secondary\" (click)=\"cancelMarkUnsolicitedPayments('cancel')\">\n Cancel\n </button>\n </div>\n </form>\n \n</div>\n <ng-container *ngIf=\"viewStatus === 'unsolicitedContinueConfirm'\">\n <ccpay-error-banner *ngIf=\"errorMessage.showError\" [errorMessage]=\"errorMessage\"></ccpay-error-banner>\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 <h1 class=\"heading-small\"> Are you sure you want to mark this payment as transferred? </h1>\n </strong>\n <input #myInput type='hidden' id='iFrameDrivenImageValue' value='TRANSFERREDCONFIRMATION'>\n <div class=\"govuk-grid-column-full govuk-!-padding-bottom-3\">\n <hr class=\"govuk-section-break govuk-section-break--visible\">\n <table class=\"govuk-table\">\n <thead class=\"govuk-table__head\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__header\" scope=\"col\">Reason</td>\n <td class=\"govuk-table__header\" scope=\"col\">Receiving site ID</td>\n </tr>\n </thead>\n <tbody class=\"govuk-table__body\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell\">{{reason}}</td>\n <td class=\"govuk-table__cell\">{{selectedSiteName}}</td>\n </tr>\n </tbody>\n </table>\n </div>\n\n </div>\n <div class=\"govuk-button--group\">\n <button type=\"submit\" class=\"button\" [disabled]=\"isConfirmButtondisabled\" (click)=\"confirmPayments()\">\n Confirm\n </button>\n <button type=\"button\" class=\"button govuk-button--secondary\" (click)=\"cancelMarkUnsolicitedPayments()\">\n Cancel\n </button>\n </div>\n </ng-container>\n <ng-container *ngIf=\"viewStatus === 'unsolicitedCancelConfirm'\">\n <input #myInput type='hidden' id='iFrameDrivenImageValue' value='CANCELTRANSFERRED'>\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 cancel?\n </strong>\n </div>\n <div class=\"govuk-button--group\">\n <button type=\"submit\" class=\"button\" (click)=\"gotoCasetransationPage()\">\n Yes\n </button>\n <button type=\"button\" class=\"button govuk-button--secondary\" (click)=\"cancelMarkUnsolicitedPayments()\">\n No\n </button>\n </div>\n </ng-container>\n</div>",
384
+ styles: [".mkpay-unidentified{margin:10px 0 20px}.mkpay-unidentified .govuk-button--secondary{margin-left:10px;background-color:#b3b8bdf2}.mkpay-unidentified .inline-error-class{outline:#a71414 solid 3px;outline-offset:0}.mkpay-unidentified .inline-error-message{color:#a71414;font-weight:700;margin-top:10px}.lowercase{text-transform:lowercase}.capitalize{text-transform:capitalize}.custom-govuk-label,.govuk-warning-text__text{font-size:19px}#responsibleOffice{color:#000;width:75%;font-weight:#fff}select option{background:#fff}"]
385
+ }] }
283
386
  ];
284
387
  /** @nocollapse */
285
388
  MarkUnsolicitedPaymentComponent.ctorParameters = function () { return [
@@ -288,10 +391,15 @@ var MarkUnsolicitedPaymentComponent = /** @class */ (function () {
288
391
  { type: PaymentLibComponent },
289
392
  { type: BulkScaningPaymentService }
290
393
  ]; };
394
+ MarkUnsolicitedPaymentComponent.propDecorators = {
395
+ caseType: [{ type: Input }]
396
+ };
291
397
  return MarkUnsolicitedPaymentComponent;
292
398
  }());
293
399
  export { MarkUnsolicitedPaymentComponent };
294
400
  if (false) {
401
+ /** @type {?} */
402
+ MarkUnsolicitedPaymentComponent.prototype.caseType;
295
403
  /** @type {?} */
296
404
  MarkUnsolicitedPaymentComponent.prototype.markPaymentUnsolicitedForm;
297
405
  /** @type {?} */
@@ -329,17 +437,38 @@ if (false) {
329
437
  /** @type {?} */
330
438
  MarkUnsolicitedPaymentComponent.prototype.isConfirmButtondisabled;
331
439
  /** @type {?} */
440
+ MarkUnsolicitedPaymentComponent.prototype.isContinueButtondisabled;
441
+ /** @type {?} */
332
442
  MarkUnsolicitedPaymentComponent.prototype.ccdReference;
333
443
  /** @type {?} */
334
444
  MarkUnsolicitedPaymentComponent.prototype.exceptionReference;
335
445
  /** @type {?} */
336
- MarkUnsolicitedPaymentComponent.prototype.formBuilder;
446
+ MarkUnsolicitedPaymentComponent.prototype.selectedSiteId;
337
447
  /** @type {?} */
338
- MarkUnsolicitedPaymentComponent.prototype.paymentViewService;
448
+ MarkUnsolicitedPaymentComponent.prototype.selectedSiteName;
339
449
  /** @type {?} */
340
- MarkUnsolicitedPaymentComponent.prototype.paymentLibComponent;
450
+ MarkUnsolicitedPaymentComponent.prototype.isStrategicFixEnable;
341
451
  /** @type {?} */
452
+ MarkUnsolicitedPaymentComponent.prototype.siteIDList;
453
+ /**
454
+ * @type {?}
455
+ * @private
456
+ */
457
+ MarkUnsolicitedPaymentComponent.prototype.formBuilder;
458
+ /**
459
+ * @type {?}
460
+ * @private
461
+ */
462
+ MarkUnsolicitedPaymentComponent.prototype.paymentViewService;
463
+ /**
464
+ * @type {?}
465
+ * @private
466
+ */
467
+ MarkUnsolicitedPaymentComponent.prototype.paymentLibComponent;
468
+ /**
469
+ * @type {?}
470
+ * @private
471
+ */
342
472
  MarkUnsolicitedPaymentComponent.prototype.bulkScaningPaymentService;
343
473
  }
344
-
345
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFyay11bnNvbGljaXRlZC1wYXltZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BobWN0cy9jY3BheS13ZWItY29tcG9uZW50LyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvbWFyay11bnNvbGljaXRlZC1wYXltZW50L21hcmstdW5zb2xpY2l0ZWQtcGF5bWVudC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBYSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDbEUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sa0VBQWtFLENBQUM7QUFFN0csT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDekYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDdEYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0seUNBQXlDLENBQUM7O0lBOEkvRSx5Q0FBb0IsV0FBd0IsRUFDcEMsb0JBQ0EscUJBQ0E7UUFIWSxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUNwQyx1QkFBa0IsR0FBbEIsa0JBQWtCO1FBQ2xCLHdCQUFtQixHQUFuQixtQkFBbUI7UUFDbkIsOEJBQXlCLEdBQXpCLHlCQUF5Qjs4QkF0QlAsS0FBSzs2QkFDTixLQUFLO2lDQUNELEtBQUs7aUNBQ0wsS0FBSzt5Q0FDRyxLQUFLO3dDQUNOLEtBQUs7NEJBQzFCLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDO3NCQUl6QixJQUFJO3VDQUthLEtBQUs7NEJBQ2hCLElBQUk7a0NBQ0UsSUFBSTtLQUtnQzs7OztJQUVqRSxrREFBUTs7O0lBQVI7UUFDRSxJQUFJLENBQUMsU0FBUyxDQUFD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QUUsWUFBWTtTQUN4QixDQUFDO0tBQ0g7O2dCQTlURixTQUFTLFNBQUM7b0JBQ1QsUUFBUSxFQUFFLDhCQUE4QjtvQkFDeEMsUUFBUSxFQUFFLDR3TEErR0w7b0JBQ0wsTUFBTSxFQUFFLENBQUMsa2VBQWtlLENBQUM7aUJBQzdlOzs7O2dCQTdIUSxXQUFXO2dCQUtYLGtCQUFrQjtnQkFKbEIsbUJBQW1CO2dCQUNuQix5QkFBeUI7OzBDQUhsQzs7U0ErSGEsK0JBQStCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMsIEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgUGF5bWVudExpYkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3BheW1lbnQtbGliLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCdWxrU2NhbmluZ1BheW1lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYnVsay1zY2FuaW5nLXBheW1lbnQvYnVsay1zY2FuaW5nLXBheW1lbnQuc2VydmljZSc7XG5pbXBvcnQgeyBJQlNQYXltZW50cyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvSUJTUGF5bWVudHMnO1xuaW1wb3J0IHsgVW5zb2xpY2l0ZWRQYXltZW50c1JlcXVlc3QgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL1Vuc29saWNpdGVkUGF5bWVudHNSZXF1ZXN0JztcbmltcG9ydCB7IFBheW1lbnRWaWV3U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3BheW1lbnQtdmlldy9wYXltZW50LXZpZXcuc2VydmljZSc7XG5pbXBvcnQgeyBBbGxvY2F0ZVBheW1lbnRSZXF1ZXN0IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9BbGxvY2F0ZVBheW1lbnRSZXF1ZXN0JztcbmltcG9ydCB7IHN0cmluZ0xpdGVyYWwgfSBmcm9tICdiYWJlbC10eXBlcyc7XG5pbXBvcnQgeyBUSElTX0VYUFIgfSBmcm9tICdAYW5ndWxhci9jb21waWxlci9zcmMvb3V0cHV0L291dHB1dF9hc3QnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtbWFyay11bnNvbGljaXRlZC1wYXltZW50JyxcbiAgdGVtcGxhdGU6IGA8ZGl2IGNsYXNzPVwibWtwYXktdW5pZGVudGlmaWVkXCI+XG4gIDxkaXYgKm5nSWY9XCJ2aWV3U3RhdHVzID09PSAnbWFpbkZvcm0nXCI+XG4gIDxoMSBjbGFzcz1cImhlYWRpbmctbGFyZ2VcIj5NYXJrIHBheW1lbnQgYXMgdHJhbnNmZXJyZWQ8L2gxPlxuICA8ZGl2IGNsYXNzPVwiZ292dWstZ3JpZC1jb2x1bW4tZnVsbCBnb3Z1ay0hLXBhZGRpbmctYm90dG9tLTNcIj5cbiAgICA8aHIgY2xhc3M9XCJnb3Z1ay1zZWN0aW9uLWJyZWFrIGdvdnVrLXNlY3Rpb24tYnJlYWstLXZpc2libGVcIj5cbiAgICA8dGFibGUgY2xhc3M9XCJnb3Z1ay10YWJsZVwiPlxuICAgICAgPHRoZWFkIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRcIj5cbiAgICAgICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlclwiIHNjb3BlPVwiY29sXCI+UGF5bWVudCBhc3NldCBudW1iZXIgKERDTik8L3RkPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlclwiIHNjb3BlPVwiY29sXCI+QmFua2VkIGRhdGU8L3RkPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlclwiIHNjb3BlPVwiY29sXCI+QW1vdW50PC90ZD5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXJcIiBzY29wZT1cImNvbFwiPk1ldGhvZDwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICA8L3RoZWFkPlxuICAgICAgPHRib2R5IGNsYXNzPVwiZ292dWstdGFibGVfX2JvZHlcIj5cbiAgICAgICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGxcIj57e3VuYXNzaWduZWRSZWNvcmQuZGNuX3JlZmVyZW5jZX19PC90ZD5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsXCI+IHt7dW5hc3NpZ25lZFJlY29yZC5kYXRlX2JhbmtlZCB8IGRhdGU6J2RkIE1NTSB5eXl5J319PC90ZD5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsXCI+IHt7dW5hc3NpZ25lZFJlY29yZC5hbW91bnQgfCBjdXJyZW5jeSA6J0dCUCc6J3N5bWJvbCc6JzEuMi0yJ319PC90ZD5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImNhcGl0YWxpemUgZ292dWstdGFibGVfX2NlbGxcIj4ge3t0cmltVW5kZXJzY29yZSh1bmFzc2lnbmVkUmVjb3JkLnBheW1lbnRfbWV0aG9kKSB8IGxvd2VyY2FzZX19ICA8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgPC90Ym9keT5cbiAgICA8L3RhYmxlPlxuICA8L2Rpdj5cbiAgXG4gIDxmb3JtIFtmb3JtR3JvdXBdPVwibWFya1BheW1lbnRVbnNvbGljaXRlZEZvcm1cIiBub3ZhbGlkYXRlPlxuICAgICAgPGlucHV0ICNteUlucHV0IHR5cGU9J2hpZGRlbicgaWQ9J2lGcmFtZURyaXZlbkltYWdlVmFsdWUnIHZhbHVlPSdNQVJLVU5TT0xJQ0lURUQnPlxuICAgICAgXG4gICAgPGRpdiBjbGFzcz1cImdvdnVrLWZvcm0tZ3JvdXBcIj5cbiAgICAgIDxsYWJlbCBjbGFzcz1cImdvdnVrLWxhYmVsIGN1c3RvbS1nb3Z1ay1sYWJlbCBjdXN0b20tZ292dWstbGFiZWxcIiBmb3I9XCJyZWFzb25cIj5cbiAgICAgICAgUmVhc29uIGZvciBwYXltZW50IGJlaW5nIG1hcmtlZCBhcyB0cmFuc2ZlcnJlZCAgIFxuICAgICAgPC9sYWJlbD5cbiAgICAgICAgPHRleHRhcmVhIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC0zLTRcIiBbbmdDbGFzc109XCJ7J2lubGluZS1lcnJvci1jbGFzcyc6IHJlYXNvbkhhc0Vycm9yIHx8IHJlYXNvbk1pbkhhc0Vycm9yIHx8IHJlYXNvbk1heEhhc0Vycm9yfVwiIG5hbWU9XCJyZWFzb25cIiBpZD1cInJlYXNvblwiIHJvd3M9XCI1XCIgZm9ybUNvbnRyb2xOYW1lPVwicmVhc29uXCI+XG4gICAgICAgIDwvdGV4dGFyZWE+XG4gICAgICAgIDxwIGNsYXNzPVwiaW5saW5lLWVycm9yLW1lc3NhZ2VcIiAqbmdJZj1cImlzUmVhc29uRW1wdHkgfHwgcmVhc29uSGFzRXJyb3IgfHwgcmVhc29uTWluSGFzRXJyb3IgfHwgcmVhc29uTWF4SGFzRXJyb3JcIj5cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cImlzUmVhc29uRW1wdHlcIj5FbnRlciBhIHJlYXNvbiBmb3IgbWFya2luZyB0aGlzIHBheW1lbnQgYXMgdHJhbnNmZXJyZWQuPC9zcGFuPlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwicmVhc29uSGFzRXJyb3JcIj5FbnRlciBhIHZhbGlkIHJlYXNvbjwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cInJlYXNvbk1pbkhhc0Vycm9yXCI+UmVhc29uIHNob3VsZCBiZSBhdCBsZWFzdCAzIGNoYXJhY3RlcnMuPC9zcGFuPlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwicmVhc29uTWF4SGFzRXJyb3JcIj5SZWFzb24gc2hvdWxkIGJlIDI1NSBjaGFyYWN0ZXJzIG9yIHVuZGVyLjwvc3Bhbj5cbiAgICAgICAgPC9wPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1mb3JtLWdyb3VwXCI+XG4gICAgICA8bGFiZWwgY2xhc3M9XCJnb3Z1ay1sYWJlbCBjdXN0b20tZ292dWstbGFiZWxcIiBmb3I9XCJyZXNwb25zaWJsZU9mZmljZVwiPlxuICAgICAgICBSZWNlaXZpbmcgU2l0ZSBJRCAoUmVjZWl2aW5nIGNvdXJ0L0J1bGsgY2VudHJlIHNpdGUgSUQpICAgIFxuICAgICAgPC9sYWJlbD5cbiAgICAgIDxpbnB1dCBjbGFzcz1cImdvdnVrLWlucHV0IGdvdnVrLWlucHV0LS13aWR0aC0zMCBnb3Z1ay0hLW1hcmdpbi1yaWdodC0xXCIgcGxhY2Vob2xkZXI9J01hbmNoZXN0ZXIgRGlzdHJpY3QgUHJvYmF0ZSBSZWdpc3RyeSAoUDIxOSknICBpZD1cInJlc3BvbnNpYmxlT2ZmaWNlXCIgbmFtZT1cInJlc3BvbnNpYmxlT2ZmaWNlXCIgdHlwZT1cInRleHRcIiBmb3JtQ29udHJvbE5hbWU9XCJyZXNwb25zaWJsZU9mZmljZVwiIGRpc2FibGVkPlxuICAgIDwvZGl2PlxuICAgPGRpdiBjbGFzcz1cImdvdnVrLWJ1dHRvbi0tZ3JvdXBcIj5cbiAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnV0dG9uXCIgKGNsaWNrKT1cInNhdmVBbmRDb250aW51ZSgpXCI+XG4gICAgICAgIENvbmZpcm1cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidXR0b24gZ292dWstYnV0dG9uLS1zZWNvbmRhcnlcIiAoY2xpY2spPVwiY2FuY2VsTWFya1Vuc29saWNpdGVkUGF5bWVudHMoJ2NhbmNlbCcpXCI+XG4gICAgICAgIENhbmNlbFxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZm9ybT5cbjwvZGl2PlxuICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ2aWV3U3RhdHVzID09PSAndW5zb2xpY2l0ZWRDb250aW51ZUNvbmZpcm0nXCI+XG4gICAgICAgICAgPGNjcGF5LWVycm9yLWJhbm5lciAqbmdJZj1cImVycm9yTWVzc2FnZS5zaG93RXJyb3JcIiBbZXJyb3JNZXNzYWdlXT1cImVycm9yTWVzc2FnZVwiPjwvY2NwYXktZXJyb3ItYmFubmVyPlxuICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLXdhcm5pbmctdGV4dFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImdvdnVrLXdhcm5pbmctdGV4dF9faWNvblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPiE8L3NwYW4+XG4gICAgICAgIDxzdHJvbmcgY2xhc3M9XCJnb3Z1ay13YXJuaW5nLXRleHRfX3RleHRcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJnb3Z1ay13YXJuaW5nLXRleHRfX2Fzc2lzdGl2ZVwiPldhcm5pbmc8L3NwYW4+XG4gICAgICAgIDxoMSBjbGFzcz1cImhlYWRpbmctc21hbGxcIj4gQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIG1hcmsgdGhpcyBwYXltZW50IGFzIHRyYW5zZmVycmVkPyA8L2gxPlxuICAgICAgICA8L3N0cm9uZz5cbiAgICAgICAgPGlucHV0ICNteUlucHV0IHR5cGU9J2hpZGRlbicgaWQ9J2lGcmFtZURyaXZlbkltYWdlVmFsdWUnIHZhbHVlPSdDT05GSVJNQVRJT05QQUdFVU5TT0xJQ0lURUQnPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZ292dWstZ3JpZC1jb2x1bW4tZnVsbCBnb3Z1ay0hLXBhZGRpbmctYm90dG9tLTNcIj5cbiAgICAgICAgICA8aHIgY2xhc3M9XCJnb3Z1ay1zZWN0aW9uLWJyZWFrIGdvdnVrLXNlY3Rpb24tYnJlYWstLXZpc2libGVcIj5cbiAgICAgICAgICA8dGFibGUgY2xhc3M9XCJnb3Z1ay10YWJsZVwiPlxuICAgICAgICAgICAgPHRoZWFkIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRcIj5cbiAgICAgICAgICAgIDx0ciBjbGFzcz1cImdvdnVrLXRhYmxlX19yb3dcIj5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlclwiIHNjb3BlPVwiY29sXCI+UmVhc29uPC90ZD5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlclwiIHNjb3BlPVwiY29sXCI+UmVjZWl2aW5nIHNpdGUgSUQ8L3RkPlxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgIDwvdGhlYWQ+XG4gICAgICAgICAgICA8dGJvZHkgY2xhc3M9XCJnb3Z1ay10YWJsZV9fYm9keVwiPlxuICAgICAgICAgICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGxcIj57e3JlYXNvbn19PC90ZD5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsXCI+TWFuY2hlc3RlciBEaXN0cmljdCBQcm9iYXRlIFJlZ2lzdHJ5IChQMjE5KTwvdGQ+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZ292dWstYnV0dG9uLS1ncm91cFwiPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ1dHRvblwiIFtkaXNhYmxlZF09XCJpc0NvbmZpcm1CdXR0b25kaXNhYmxlZFwiIChjbGljayk9XCJjb25maXJtUGF5bWVudHMoKVwiPlxuICAgICAgICAgIENvbmZpcm1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnV0dG9uIGdvdnVrLWJ1dHRvbi0tc2Vjb25kYXJ5XCIgKGNsaWNrKT1cImNhbmNlbE1hcmtVbnNvbGljaXRlZFBheW1lbnRzKClcIj5cbiAgICAgICAgICBDYW5jZWxcbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ2aWV3U3RhdHVzID09PSAndW5zb2xpY2l0ZWRDYW5jZWxDb25maXJtJ1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLXdhcm5pbmctdGV4dFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImdvdnVrLXdhcm5pbmctdGV4dF9faWNvblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPiE8L3NwYW4+XG4gICAgICAgIDxzdHJvbmcgY2xhc3M9XCJnb3Z1ay13YXJuaW5nLXRleHRfX3RleHRcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJnb3Z1ay13YXJuaW5nLXRleHRfX2Fzc2lzdGl2ZVwiPldhcm5pbmc8L3NwYW4+XG4gICAgICAgICAgQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGNhbmNlbD9cbiAgICAgICAgPC9zdHJvbmc+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1idXR0b24tLWdyb3VwXCI+XG4gICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnV0dG9uXCIgKGNsaWNrKT1cImdvdG9DYXNldHJhbnNhdGlvblBhZ2UoKVwiPlxuICAgICAgICAgIFllc1xuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidXR0b24gZ292dWstYnV0dG9uLS1zZWNvbmRhcnlcIiAoY2xpY2spPVwiY2FuY2VsTWFya1Vuc29saWNpdGVkUGF5bWVudHMoKVwiPlxuICAgICAgICAgIE5vXG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5gLFxuICBzdHlsZXM6IFtgLm1rcGF5LXVuaWRlbnRpZmllZHttYXJnaW46MTBweCAwIDIwcHh9Lm1rcGF5LXVuaWRlbnRpZmllZCAuZ292dWstYnV0dG9uLS1zZWNvbmRhcnl7bWFyZ2luLWxlZnQ6MTBweDtiYWNrZ3JvdW5kLWNvbG9yOiNiM2I4YmRmMn0ubWtwYXktdW5pZGVudGlmaWVkIC5pbmxpbmUtZXJyb3ItY2xhc3N7b3V0bGluZTojYTcxNDE0IHNvbGlkIDNweDtvdXRsaW5lLW9mZnNldDowfS5ta3BheS11bmlkZW50aWZpZWQgLmlubGluZS1lcnJvci1tZXNzYWdle2NvbG9yOiNhNzE0MTQ7Zm9udC13ZWlnaHQ6NzAwO21hcmdpbi10b3A6MTBweH0ubG93ZXJjYXNle3RleHQtdHJhbnNmb3JtOmxvd2VyY2FzZX0uY2FwaXRhbGl6ZXt0ZXh0LXRyYW5zZm9ybTpjYXBpdGFsaXplfS5jdXN0b20tZ292dWstbGFiZWwsLmdvdnVrLXdhcm5pbmctdGV4dF9fdGV4dHtmb250LXNpemU6MTlweH0jcmVzcG9uc2libGVPZmZpY2V7Y29sb3I6IzAwMDtmb250LXdlaWdodDo3MDB9YF1cbn0pXG5leHBvcnQgY2xhc3MgTWFya1Vuc29saWNpdGVkUGF5bWVudENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIG1hcmtQYXltZW50VW5zb2xpY2l0ZWRGb3JtOiBGb3JtR3JvdXA7XG4gIHZpZXdTdGF0dXM6IHN0cmluZztcbiAgcmVhc29uSGFzRXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNSZWFzb25FbXB0eTogYm9vbGVhbiA9IGZhbHNlO1xuICByZWFzb25NaW5IYXNFcnJvcjogYm9vbGVhbiA9IGZhbHNlO1xuICByZWFzb25NYXhIYXNFcnJvcjogYm9vbGVhbiA9IGZhbHNlO1xuICByZXNwb25zaWJsZU9mZmljZUhhc0Vycm9yOiBib29sZWFuID0gZmFsc2U7XG4gIGlzUmVzcG9uc2libGVPZmZpY2VFbXB0eTogYm9vbGVhbiA9IGZhbHNlO1xuICBlcnJvck1lc3NhZ2UgPSB0aGlzLmdldEVycm9yTWVzc2FnZShmYWxzZSk7XG4gIGNjZENhc2VOdW1iZXI6IHN0cmluZztcbiAgYnNwYXltZW50ZGNuOiBzdHJpbmc7XG4gIHVuYXNzaWduZWRSZWNvcmQ6IElCU1BheW1lbnRzO1xuICBzaXRlSUQ6IHN0cmluZyA9IG51bGw7XG4gIHJlYXNvbjogc3RyaW5nO1xuICByZXNwb25zaWJsZVBlcnNvbjogc3RyaW5nO1xuICByZXNwb25zaWJsZU9mZmljZTogc3RyaW5nO1xuICBlbWFpbElkOiBzdHJpbmc7XG4gIGlzQ29uZmlybUJ1dHRvbmRpc2FibGVkOkJvb2xlYW4gPSBmYWxzZTtcbiAgY2NkUmVmZXJlbmNlOiBzdHJpbmcgPSBudWxsO1xuICBleGNlcHRpb25SZWZlcmVuY2U6IHN0cmluZyA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXG4gIHByaXZhdGUgcGF5bWVudFZpZXdTZXJ2aWNlOiBQYXltZW50Vmlld1NlcnZpY2UsXG4gIHByaXZhdGUgcGF5bWVudExpYkNvbXBvbmVudDogUGF5bWVudExpYkNvbXBvbmVudCxcbiAgcHJpdmF0ZSBidWxrU2NhbmluZ1BheW1lbnRTZXJ2aWNlOiBCdWxrU2NhbmluZ1BheW1lbnRTZXJ2aWNlKSB7IH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnJlc2V0Rm9ybShbZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2VdLCAnYWxsJyk7XG4gICAgdGhpcy52aWV3U3RhdHVzID0gJ21haW5Gb3JtJztcbiAgICB0aGlzLmNjZENhc2VOdW1iZXIgPSB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuQ0NEX0NBU0VfTlVNQkVSO1xuICAgIHRoaXMuYnNwYXltZW50ZGNuID0gdGhpcy5wYXltZW50TGliQ29tcG9uZW50LmJzcGF5bWVudGRjbjtcbiAgICB0aGlzLmdldFVuYXNzaWduZWRQYXltZW50KCk7XG5cbiAgICBjb25zdCBlbWFpbFBhdHRlcm4gPSAnXlthLXowLTldKFxcXFwuP1thLXowLTlfLV0pezAsfUBbYS16MC05LV0rXFxcXC4oW2Etel17MSw2fVxcXFwuKT9bYS16XXsyLDZ9JCc7XG4gICAgXG4gICAgdGhpcy5tYXJrUGF5bWVudFVuc29saWNpdGVkRm9ybSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgcmVhc29uOiBuZXcgRm9ybUNvbnRyb2woJycsIFZhbGlkYXRvcnMuY29tcG9zZShbXG4gICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXG4gICAgICAgIFZhbGlkYXRvcnMubWluTGVuZ3RoKDMpLFxuICAgICAgICBWYWxpZGF0b3JzLm1heExlbmd0aCgyNTUpLFxuICAgICAgICBWYWxpZGF0b3JzLnBhdHRlcm4oJ14oW2EtekEtWjAtOVxcXFxzLFxcXFwuXSopJCcpXG4gICAgICBdKSksXG4gICAgICByZXNwb25zaWJsZU9mZmljZTogbmV3IEZvcm1Db250cm9sKCcnLCBWYWxpZGF0b3JzLmNvbXBvc2UoW1xuICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgICBWYWxpZGF0b3JzLnBhdHRlcm4oJ14oW2EtekEtWjAtOVxcXFxzXFxcXG4sXFxcXC4tOl0qKSQnKVxuICAgICAgXSkpLFxuICAgICAgcmVzcG9uc2libGVQZXJzb246IG5ldyBGb3JtQ29udHJvbCgnJyksXG4gICAgICBlbWFpbElkOiBuZXcgRm9ybUNvbnRyb2woJycpXG4gICAgfSk7XG4gIH1cbiAgdHJpbVVuZGVyc2NvcmUobWV0aG9kOiBzdHJpbmcpe1xuICAgIHJldHVybiB0aGlzLmJ1bGtTY2FuaW5nUGF5bWVudFNlcnZpY2UucmVtb3ZlVW53YW50ZWRTdHJpbmcobWV0aG9kLCcgJyk7XG4gIH1cbiAgY29uZmlybVBheW1lbnRzKCkge1xuICAgIHRoaXMuaXNDb25maXJtQnV0dG9uZGlzYWJsZWQgPSB0cnVlO1xuICAgIGNvbnN0IGNvbnRyb2xzID0gdGhpcy5tYXJrUGF5bWVudFVuc29saWNpdGVkRm9ybS5jb250cm9scztcbiAgICAvLyBjb250cm9scy5yZXNwb25zaWJsZU9mZmljZS5zZXRWYWx1ZSgnUDIxOScpO1xuICAgIHRoaXMuYnVsa1NjYW5pbmdQYXltZW50U2VydmljZS5wYXRjaEJTQ2hhbmdlU3RhdHVzKHRoaXMudW5hc3NpZ25lZFJlY29yZC5kY25fcmVmZXJlbmNlLCAnUFJPQ0VTU0VEJykuc3Vic2NyaWJlKFxuICAgICAgcmVzMSA9PiB7XG4gICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5nZXRFcnJvck1lc3NhZ2UoZmFsc2UpO1xuICAgICAgICBjb25zdCByZXNwb25zZTEgPSBKU09OLnBhcnNlKHJlczEpLFxuICAgICAgICAgcmVxdWVzdEJvZHkgPSBuZXcgQWxsb2NhdGVQYXltZW50UmVxdWVzdFxuICAgICAgICAgKHRoaXMuY2NkUmVmZXJlbmNlLCB0aGlzLnVuYXNzaWduZWRSZWNvcmQsIHRoaXMuc2l0ZUlELCB0aGlzLmV4Y2VwdGlvblJlZmVyZW5jZSlcbiAgICAgICAgdGhpcy5wYXltZW50Vmlld1NlcnZpY2UucG9zdEJTUGF5bWVudHMocmVxdWVzdEJvZHkpLnN1YnNjcmliZShcbiAgICAgICAgICByZXMyID0+IHtcbiAgICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5nZXRFcnJvck1lc3NhZ2UoZmFsc2UpO1xuICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UyID0gSlNPTi5wYXJzZShyZXMyKSxcbiAgICAgICAgICAgIHJlcUJvZHkgPSBuZXcgVW5zb2xpY2l0ZWRQYXltZW50c1JlcXVlc3RcbiAgICAgICAgICAgIChyZXNwb25zZTJbJ2RhdGEnXS5wYXltZW50X2dyb3VwX3JlZmVyZW5jZSwgcmVzcG9uc2UyWydkYXRhJ10ucmVmZXJlbmNlLCBjb250cm9scy5yZWFzb24udmFsdWUsIGNvbnRyb2xzLnJlc3BvbnNpYmxlT2ZmaWNlLnZhbHVlLCBjb250cm9scy5yZXNwb25zaWJsZVBlcnNvbi52YWx1ZSwgY29udHJvbHMuZW1haWxJZC52YWx1ZSk7XG4gICAgICAgICAgICAgaWYgKHJlc3BvbnNlMi5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgIHRoaXMucGF5bWVudFZpZXdTZXJ2aWNlLnBvc3RCU1Vuc29saWNpdGVkUGF5bWVudHMocmVxQm9keSkuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICAgIHJlczMgPT4ge1xuICAgICAgICAgICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSB0aGlzLmdldEVycm9yTWVzc2FnZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICBjb25zdCByZXNwb25zZTMgPSBKU09OLnBhcnNlKHJlczMpO1xuICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlMy5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ290b0Nhc2V0cmFuc2F0aW9uUGFnZSgpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgKGVycm9yOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuYnVsa1NjYW5pbmdQYXltZW50U2VydmljZS5wYXRjaEJTQ2hhbmdlU3RhdHVzKHRoaXMudW5hc3NpZ25lZFJlY29yZC5kY25fcmVmZXJlbmNlLCAnQ09NUExFVEUnKS5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5nZXRFcnJvck1lc3NhZ2UodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICB0aGlzLmlzQ29uZmlybUJ1dHRvbmRpc2FibGVkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgKGVycm9yOiBhbnkpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYnVsa1NjYW5pbmdQYXltZW50U2VydmljZS5wYXRjaEJTQ2hhbmdlU3RhdHVzKHRoaXMudW5hc3NpZ25lZFJlY29yZC5kY25fcmVmZXJlbmNlLCAnQ09NUExFVEUnKS5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5nZXRFcnJvck1lc3NhZ2UodHJ1ZSk7XG4gICAgICAgICAgICB0aGlzLmlzQ29uZmlybUJ1dHRvbmRpc2FibGVkID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgfSxcbiAgICAgIChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5nZXRFcnJvck1lc3NhZ2UodHJ1ZSk7XG4gICAgICAgIHRoaXMuaXNDb25maXJtQnV0dG9uZGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICApO1xuICB9XG4gc2F2ZUFuZENvbnRpbnVlKCkge1xuICAgIHRoaXMucmVzZXRGb3JtKFtmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZV0sICdhbGwnKTtcbiAgICAgICAgY29uc3QgZm9ybWVycm9yID0gdGhpcy5tYXJrUGF5bWVudFVuc29saWNpdGVkRm9ybS5jb250cm9scy5yZWFzb24uZXJyb3JzO1xuICAgICAgICBjb25zdCByZWFzb25GaWVsZCA9IHRoaXMubWFya1BheW1lbnRVbnNvbGljaXRlZEZvcm0uY29udHJvbHMucmVhc29uO1xuICAgICAgICB0aGlzLm1hcmtQYXltZW50VW5zb2xpY2l0ZWRGb3JtLmNvbnRyb2xzLnJlc3BvbnNpYmxlT2ZmaWNlLnNldFZhbHVlKCdQMjE5Jyk7XG4gICAgICAgIGNvbnN0IG9mZmljZUlkRmllbGQgPSB0aGlzLm1hcmtQYXltZW50VW5zb2xpY2l0ZWRGb3JtLmNvbnRyb2xzLnJlc3BvbnNpYmxlT2ZmaWNlO1xuICAgIGlmICh0aGlzLm1hcmtQYXltZW50VW5zb2xpY2l0ZWRGb3JtLmRpcnR5ICYmIHRoaXMubWFya1BheW1lbnRVbnNvbGljaXRlZEZvcm0udmFsaWQpIHtcbiAgICAgIGNvbnN0IGNvbnRyb2xzID0gdGhpcy5tYXJrUGF5bWVudFVuc29saWNpdGVkRm9ybS5jb250cm9scztcbiAgICAgIHRoaXMuZW1haWxJZCA9IGNvbnRyb2xzLmVtYWlsSWQudmFsdWU7XG4gICAgICB0aGlzLnJlc3BvbnNpYmxlT2ZmaWNlID0gY29udHJvbHMucmVzcG9uc2libGVPZmZpY2UudmFsdWU7XG4gICAgICB0aGlzLnJlc3BvbnNpYmxlUGVyc29uID0gY29udHJvbHMucmVzcG9uc2libGVQZXJzb24udmFsdWU7XG4gICAgICB0aGlzLnJlYXNvbiA9IGNvbnRyb2xzLnJlYXNvbi52YWx1ZTtcbiAgICAgIHRoaXMudmlld1N0YXR1cyA9ICd1bnNvbGljaXRlZENvbnRpbnVlQ29uZmlybSc7XG4gICAgfWVsc2Uge1xuICAgICAgaWYoIHJlYXNvbkZpZWxkLnZhbHVlID09ICcnICkge1xuICAgICAgICB0aGlzLnJlc2V0Rm9ybShbdHJ1ZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZV0sICdyZWFzb24nKTtcbiAgICAgIH1cbiAgICAgIGlmKHJlYXNvbkZpZWxkLnZhbHVlICE9ICcnICYmIHRoaXMubWFya1BheW1lbnRVbnNvbGljaXRlZEZvcm0uY29udHJvbHMucmVhc29uLmludmFsaWQgKSB7XG4gICAgICAgIHRoaXMucmVzZXRGb3JtKFtmYWxzZSx0cnVlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlXSwgJ3JlYXNvbicpO1xuICAgICAgfVxuICAgICAgaWYoZm9ybWVycm9yICYmIGZvcm1lcnJvci5taW5sZW5ndGggJiYgZm9ybWVycm9yLm1pbmxlbmd0aC5hY3R1YWxMZW5ndGggPCAzICkge1xuICAgICAgICB0aGlzLnJlc2V0Rm9ybShbZmFsc2UsZmFsc2UsdHJ1ZSxmYWxzZSxmYWxzZSxmYWxzZV0sICdyZWFzb24nKTtcbiAgICAgIH1cbiAgICAgIGlmKGZvcm1lcnJvciAmJiBmb3JtZXJyb3IubWF4bGVuZ3RoICYmIGZvcm1lcnJvci5tYXhsZW5ndGguYWN0dWFsTGVuZ3RoID4gMjU1ICkge1xuICAgICAgICB0aGlzLnJlc2V0Rm9ybShbZmFsc2UsZmFsc2UsZmFsc2UsdHJ1ZSxmYWxzZSxmYWxzZV0sICdyZWFzb24nKTtcbiAgICAgIH1cbiAgICAgIGlmKG9mZmljZUlkRmllbGQudmFsdWUgPT0gJycpIHtcbiAgICAgICAgdGhpcy5yZXNldEZvcm0oW2ZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLHRydWUsZmFsc2VdLCAncmVzcG9uc2libGVPZmZpY2UnKTtcbiAgICAgIH1cbiAgICAgIGlmKG9mZmljZUlkRmllbGQudmFsdWUgIT0gJycgJiYgb2ZmaWNlSWRGaWVsZC5pbnZhbGlkKSB7XG4gICAgICAgIHRoaXMucmVzZXRGb3JtKFtmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSx0cnVlXSwncmVzcG9uc2libGVPZmZpY2UnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmVzZXRGb3JtKHZhbCwgZmllbGQpIHtcbiAgICBpZihmaWVsZD09PSdyZWFzb24nIHx8IGZpZWxkPT09J2FsbCcpIHtcbiAgICAgIHRoaXMuaXNSZWFzb25FbXB0eSA9IHZhbFswXTtcbiAgICAgIHRoaXMucmVhc29uSGFzRXJyb3IgPSB2YWxbMV07XG4gICAgICB0aGlzLnJlYXNvbk1pbkhhc0Vycm9yID0gdmFsWzJdO1xuICAgICAgdGhpcy5yZWFzb25NYXhIYXNFcnJvciA9IHZhbFszXTtcbiAgICB9XG4gICAgaWYoZmllbGQ9PT0ncmVzcG9uc2libGVPZmZpY2UnIHx8IGZpZWxkPT09J2FsbCcpIHtcbiAgICAgIHRoaXMuaXNSZXNwb25zaWJsZU9mZmljZUVtcHR5ID0gdmFsWzRdO1xuICAgICAgdGhpcy5yZXNwb25zaWJsZU9mZmljZUhhc0Vycm9yID0gdmFsWzVdO1xuICAgIH1cbiAgfVxuXG5jYW5jZWxNYXJrVW5zb2xpY2l0ZWRQYXltZW50cyh0eXBlPzpzdHJpbmcpe1xuICAgIGlmKHR5cGUgJiYgdHlwZSA9PT0gJ2NhbmNlbCcpIHtcbiAgICAgIGlmKHRoaXMuY2hlY2tpbmdGb3JtVmFsdWUoKSl7XG4gICAgICAgIHRoaXMudmlld1N0YXR1cyA9ICd1bnNvbGljaXRlZENhbmNlbENvbmZpcm0nO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5nb3RvQ2FzZXRyYW5zYXRpb25QYWdlKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubWFya1BheW1lbnRVbnNvbGljaXRlZEZvcm0uY29udHJvbHMucmVzcG9uc2libGVPZmZpY2Uuc2V0VmFsdWUoJycpO1xuICAgICAgdGhpcy52aWV3U3RhdHVzID0gJ21haW5Gb3JtJztcbiAgICB9XG4gIH1cbiAgY2hlY2tpbmdGb3JtVmFsdWUoKXtcbiAgICBjb25zdCBmb3JtRmllbGRzID0gdGhpcy5tYXJrUGF5bWVudFVuc29saWNpdGVkRm9ybS52YWx1ZTtcbiAgICBsZXQgdmFsdWVFeGlzdHMgPSBmYWxzZTtcblxuICAgIGZvciAodmFyIGZpZWxkIGluIGZvcm1GaWVsZHMpIHtcbiAgICAgIGlmIChmb3JtRmllbGRzLmhhc093blByb3BlcnR5KGZpZWxkKSAmJiBmb3JtRmllbGRzW2ZpZWxkXSAhPT1cIlwiKSB7XG4gICAgICAgIHZhbHVlRXhpc3RzID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZUV4aXN0cztcbiAgfVxuICBnb3RvQ2FzZXRyYW5zYXRpb25QYWdlKCkge1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC52aWV3TmFtZSA9ICdjYXNlLXRyYW5zYWN0aW9ucyc7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LlRBS0VQQVlNRU5UID0gdHJ1ZTtcbiAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuSVNCU0VOQUJMRSA9IHRydWU7XG4gIH1cbiAgIGdldFVuYXNzaWduZWRQYXltZW50KCkge1xuICAgIHRoaXMuYnVsa1NjYW5pbmdQYXltZW50U2VydmljZS5nZXRCU1BheW1lbnRzQnlEQ04odGhpcy5ic3BheW1lbnRkY24pLnN1YnNjcmliZShcbiAgICAgIHVuYXNzaWduZWRQYXltZW50cyA9PiB7XG4gICAgICAgIFxuICAgICAgdGhpcy51bmFzc2lnbmVkUmVjb3JkID0gdW5hc3NpZ25lZFBheW1lbnRzWydkYXRhJ10ucGF5bWVudHMuZmlsdGVyKHBheW1lbnQgPT4ge1xuICAgICAgICByZXR1cm4gcGF5bWVudCAmJiBwYXltZW50LmRjbl9yZWZlcmVuY2UgPT0gdGhpcy5ic3BheW1lbnRkY247XG4gICAgICB9KVswXTtcbiAgICAgICB0aGlzLnNpdGVJRCA9IHVuYXNzaWduZWRQYXltZW50c1snZGF0YSddLnJlc3BvbnNpYmxlX3NlcnZpY2VfaWQ7XG4gICAgICAgIGNvbnN0IGJlQ2NkTnVtYmVyID0gdW5hc3NpZ25lZFBheW1lbnRzWydkYXRhJ10uY2NkX3JlZmVyZW5jZSxcbiAgICAgICAgIGJlRXhjZXB0aW9uTnVtYmVyID0gdW5hc3NpZ25lZFBheW1lbnRzWydkYXRhJ10uZXhjZXB0aW9uX3JlY29yZF9yZWZlcmVuY2UsXG4gICAgICAgICBleGNlcHRpb25SZWZlcmVuY2UgPSBiZUNjZE51bWJlciA/IGJlQ2NkTnVtYmVyID09PSB0aGlzLmNjZENhc2VOdW1iZXIgPyBudWxsIDogdGhpcy5jY2RDYXNlTnVtYmVyIDogdGhpcy5jY2RDYXNlTnVtYmVyO1xuICAgICAgICB0aGlzLmNjZFJlZmVyZW5jZSA9IGJlQ2NkTnVtYmVyID8gYmVDY2ROdW1iZXIgOiBudWxsO1xuICAgICAgICB0aGlzLmV4Y2VwdGlvblJlZmVyZW5jZSA9IGJlRXhjZXB0aW9uTnVtYmVyID8gYmVFeGNlcHRpb25OdW1iZXIgOiBleGNlcHRpb25SZWZlcmVuY2U7XG4gICAgfSxcbiAgICAgIChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5nZXRFcnJvck1lc3NhZ2UodHJ1ZSk7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIGdldEVycm9yTWVzc2FnZShpc0Vycm9yRXhpc3QpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdGl0bGU6IFwiVGhlcmUgaXMgYSBwcm9ibGVtIHdpdGggdGhlIHNlcnZpY2VcIixcbiAgICAgIGJvZHk6IFwiVHJ5IGFnYWluIGxhdGVyXCIsXG4gICAgICBzaG93RXJyb3I6IGlzRXJyb3JFeGlzdFxuICAgIH07XG4gIH1cblxufVxuIl19
474
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFyay11bnNvbGljaXRlZC1wYXltZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BobWN0cy9jY3BheS13ZWItY29tcG9uZW50LyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvbWFyay11bnNvbGljaXRlZC1wYXltZW50L21hcmstdW5zb2xpY2l0ZWQtcGF5bWVudC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxXQUFXLEVBQWEsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGtFQUFrRSxDQUFDO0FBRTdHLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBSWpGO0lBaUNFLHlDQUFvQixXQUF3QixFQUNwQyxrQkFBc0MsRUFDdEMsbUJBQXdDLEVBQ3hDLHlCQUFvRDtRQUh4QyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUNwQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3RDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsOEJBQXlCLEdBQXpCLHlCQUF5QixDQUEyQjtRQTNCNUQsbUJBQWMsR0FBWSxLQUFLLENBQUM7UUFDaEMsa0JBQWEsR0FBWSxLQUFLLENBQUM7UUFDL0Isc0JBQWlCLEdBQVksS0FBSyxDQUFDO1FBQ25DLHNCQUFpQixHQUFZLEtBQUssQ0FBQztRQUNuQyw4QkFBeUIsR0FBWSxLQUFLLENBQUM7UUFDM0MsNkJB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QyxtRUFBMEM7O0lBQzFDLHVEQUEyQzs7SUFDM0Msd0RBQXNCOztJQUN0Qix1REFBcUI7O0lBQ3JCLDJEQUE4Qjs7SUFDOUIsaURBQXNCOztJQUN0QixpREFBZTs7SUFDZiw0REFBMEI7O0lBQzFCLDREQUEwQjs7SUFDMUIsa0RBQWdCOztJQUNoQixrRUFBeUM7O0lBQ3pDLG1FQUEwQzs7SUFDMUMsdURBQTRCOztJQUM1Qiw2REFBa0M7O0lBQ2xDLHlEQUF1Qjs7SUFDdkIsMkRBQXlCOztJQUN6QiwrREFBcUM7O0lBQ3JDLHFEQUFXOzs7OztJQUVDLHNEQUFnQzs7Ozs7SUFDNUMsNkRBQThDOzs7OztJQUM5Qyw4REFBZ0Q7Ozs7O0lBQ2hELG9FQUE0RCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycywgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBQYXltZW50TGliQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vcGF5bWVudC1saWIuY29tcG9uZW50JztcbmltcG9ydCB7IEJ1bGtTY2FuaW5nUGF5bWVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9idWxrLXNjYW5pbmctcGF5bWVudC9idWxrLXNjYW5pbmctcGF5bWVudC5zZXJ2aWNlJztcbmltcG9ydCB7IElCU1BheW1lbnRzIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JQlNQYXltZW50cyc7XG5pbXBvcnQgeyBVbnNvbGljaXRlZFBheW1lbnRzUmVxdWVzdCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvVW5zb2xpY2l0ZWRQYXltZW50c1JlcXVlc3QnO1xuaW1wb3J0IHsgUGF5bWVudFZpZXdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcGF5bWVudC12aWV3L3BheW1lbnQtdmlldy5zZXJ2aWNlJztcbmltcG9ydCB7IEFsbG9jYXRlUGF5bWVudFJlcXVlc3QgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL0FsbG9jYXRlUGF5bWVudFJlcXVlc3QnO1xuaW1wb3J0IHsgRXJyb3JIYW5kbGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3NoYXJlZC9lcnJvci1oYW5kbGVyLnNlcnZpY2UnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1tYXJrLXVuc29saWNpdGVkLXBheW1lbnQnLFxuICB0ZW1wbGF0ZVVybDogJy4vbWFyay11bnNvbGljaXRlZC1wYXltZW50LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbWFyay11bnNvbGljaXRlZC1wYXltZW50LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgTWFya1Vuc29saWNpdGVkUGF5bWVudENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIGNhc2VUeXBlOiBzdHJpbmc7XG4gIG1hcmtQYXltZW50VW5zb2xpY2l0ZWRGb3JtOiBGb3JtR3JvdXA7XG4gIHZpZXdTdGF0dXM6IHN0cmluZztcbiAgcmVhc29uSGFzRXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNSZWFzb25FbXB0eTogYm9vbGVhbiA9IGZhbHNlO1xuICByZWFzb25NaW5IYXNFcnJvcjogYm9vbGVhbiA9IGZhbHNlO1xuICByZWFzb25NYXhIYXNFcnJvcjogYm9vbGVhbiA9IGZhbHNlO1xuICByZXNwb25zaWJsZU9mZmljZUhhc0Vycm9yOiBib29sZWFuID0gZmFsc2U7XG4gIGlzUmVzcG9uc2libGVPZmZpY2VFbXB0eTogYm9vbGVhbiA9IGZhbHNlO1xuICBlcnJvck1lc3NhZ2UgPSB0aGlzLmdldEVycm9yTWVzc2FnZShmYWxzZSk7XG4gIGNjZENhc2VOdW1iZXI6IHN0cmluZztcbiAgYnNwYXltZW50ZGNuOiBzdHJpbmc7XG4gIHVuYXNzaWduZWRSZWNvcmQ6IElCU1BheW1lbnRzO1xuICBzaXRlSUQ6IHN0cmluZyA9IG51bGw7XG4gIHJlYXNvbjogc3RyaW5nO1xuICByZXNwb25zaWJsZVBlcnNvbjogc3RyaW5nO1xuICByZXNwb25zaWJsZU9mZmljZTogc3RyaW5nO1xuICBlbWFpbElkOiBzdHJpbmc7XG4gIGlzQ29uZmlybUJ1dHRvbmRpc2FibGVkOiBCb29sZWFuID0gZmFsc2U7XG4gIGlzQ29udGludWVCdXR0b25kaXNhYmxlZDogQm9vbGVhbiA9IGZhbHNlO1xuICBjY2RSZWZlcmVuY2U6IHN0cmluZyA9IG51bGw7XG4gIGV4Y2VwdGlvblJlZmVyZW5jZTogc3RyaW5nID0gbnVsbDtcbiAgc2VsZWN0ZWRTaXRlSWQ6IHN0cmluZztcbiAgc2VsZWN0ZWRTaXRlTmFtZTogc3RyaW5nO1xuICBpc1N0cmF0ZWdpY0ZpeEVuYWJsZTogYm9vbGVhbiA9IHRydWU7XG4gIHNpdGVJRExpc3Q7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXG4gIHByaXZhdGUgcGF5bWVudFZpZXdTZXJ2aWNlOiBQYXltZW50Vmlld1NlcnZpY2UsXG4gIHByaXZhdGUgcGF5bWVudExpYkNvbXBvbmVudDogUGF5bWVudExpYkNvbXBvbmVudCxcbiAgcHJpdmF0ZSBidWxrU2NhbmluZ1BheW1lbnRTZXJ2aWNlOiBCdWxrU2NhbmluZ1BheW1lbnRTZXJ2aWNlKSB7IH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnJlc2V0Rm9ybShbZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2VdLCAnYWxsJyk7XG4gICAgdGhpcy52aWV3U3RhdHVzID0gJ21haW5Gb3JtJztcbiAgICB0aGlzLmNjZENhc2VOdW1iZXIgPSB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuQ0NEX0NBU0VfTlVNQkVSO1xuICAgIHRoaXMuYnNwYXltZW50ZGNuID0gdGhpcy5wYXltZW50TGliQ29tcG9uZW50LmJzcGF5bWVudGRjbjtcbiAgICB0aGlzLmlzU3RyYXRlZ2ljRml4RW5hYmxlID0gdGhpcy5wYXltZW50TGliQ29tcG9uZW50LklTU0ZFTkFCTEU7XG4gICAgdGhpcy5nZXRVbmFzc2lnbmVkUGF5bWVudCgpO1xuXG4gICAgdGhpcy5wYXltZW50Vmlld1NlcnZpY2UuZ2V0U2l0ZUlEKCkuc3Vic2NyaWJlKFxuICAgICAgc2l0ZWlkcyA9PiB7XG4gICAgICAgIHRoaXMuaXNDb250aW51ZUJ1dHRvbmRpc2FibGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5nZXRFcnJvck1lc3NhZ2UoZmFsc2UpO1xuICAgICAgICB0aGlzLnNpdGVJRExpc3QgPSBKU09OLnBhcnNlKHNpdGVpZHMpO1xuICAgICAgfSxcbiAgICAgIGVyciA9PiB7XG4gICAgICAgIHdpbmRvdy5zY3JvbGxUbygwLCAwKTtcbiAgICAgICAgdGhpcy5pc0NvbnRpbnVlQnV0dG9uZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHRoaXMuZ2V0RXJyb3JNZXNzYWdlKHRydWUpO1xuICAgICAgfVxuICAgICk7XG4gICAgXG4gICAgdGhpcy5tYXJrUGF5bWVudFVuc29saWNpdGVkRm9ybSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgcmVhc29uOiBuZXcgRm9ybUNvbnRyb2woJycsIFZhbGlkYXRvcnMuY29tcG9zZShbXG4gICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXG4gICAgICAgIFZhbGlkYXRvcnMubWluTGVuZ3RoKDMpLFxuICAgICAgICBWYWxpZGF0b3JzLm1heExlbmd0aCgyNTUpLFxuICAgICAgICBWYWxpZGF0b3JzLnBhdHRlcm4oJ14oW2EtekEtWjAtOVxcXFxzLFxcXFwuXSopJCcpXG4gICAgICBdKSksXG4gICAgICByZXNwb25zaWJsZU9mZmljZTogbmV3IEZvcm1Db250cm9sKCcnLCBWYWxpZGF0b3JzLmNvbXBvc2UoW1xuICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgICBWYWxpZGF0b3JzLnBhdHRlcm4oJ14oW2EtekEtWjAtOVxcXFxzXFxcXG4sXFxcXC4tOl0qKSQnKVxuICAgICAgXSkpLFxuICAgICAgcmVzcG9uc2libGVQZXJzb246IG5ldyBGb3JtQ29udHJvbCgnJyksXG4gICAgICBlbWFpbElkOiBuZXcgRm9ybUNvbnRyb2woJycpXG4gICAgfSk7XG4gIH1cbiAgdHJpbVVuZGVyc2NvcmUobWV0aG9kOiBzdHJpbmcpe1xuICAgIHJldHVybiB0aGlzLmJ1bGtTY2FuaW5nUGF5bWVudFNlcnZpY2UucmVtb3ZlVW53YW50ZWRTdHJpbmcobWV0aG9kLCcgJyk7XG4gIH1cbiAgY29uZmlybVBheW1lbnRzKCkge1xuICAgIHRoaXMuaXNDb25maXJtQnV0dG9uZGlzYWJsZWQgPSB0cnVlO1xuICAgIGNvbnN0IGNvbnRyb2xzID0gdGhpcy5tYXJrUGF5bWVudFVuc29saWNpdGVkRm9ybS5jb250cm9scztcbiAgICBpZighdGhpcy5pc1N0cmF0ZWdpY0ZpeEVuYWJsZSkge1xuICAgICAgbGV0IGFsbG9jYXRlZFJlcXVlc3QgPSB7XG4gICAgICAgIGFsbG9jYXRpb25fc3RhdHVzOidUcmFuc2ZlcnJlZCcsXG4gICAgICAgIHBheW1lbnRfYWxsb2NhdGlvbl9zdGF0dXM6IHtcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJycsXG4gICAgICAgICAgbmFtZTogJ1RyYW5zZmVycmVkJ1xuICAgICAgICB9LFxuICAgICAgICB1bmlkZW50aWZpZWRfcmVhc29uOiBjb250cm9scy5yZWFzb24udmFsdWUsXG4gICAgICAgIHJlY2VpdmluZ19vZmZpY2U6IHRoaXMuc2VsZWN0ZWRTaXRlSWQsXG4gICAgICAgIHVzZXJfaWQ6IHRoaXMuY2FzZVR5cGUsXG4gICAgICB9XG4gICAgICBjb25zdCBwb3N0U3RyYXRlZ2ljQm9keSA9IG5ldyBBbGxvY2F0ZVBheW1lbnRSZXF1ZXN0XG4gICAgICAodGhpcy5jY2RSZWZlcmVuY2UsIHRoaXMudW5hc3NpZ25lZFJlY29yZCwgdGhpcy5jYXNlVHlwZSwgdGhpcy5leGNlcHRpb25SZWZlcmVuY2UsIGFsbG9jYXRlZFJlcXVlc3QpO1xuICAgICAgdGhpcy5idWxrU2NhbmluZ1BheW1lbnRTZXJ2aWNlLnBvc3RCU1dvUEdTdHJhdGVnaWMocG9zdFN0cmF0ZWdpY0JvZHkpLnN1YnNjcmliZShcbiAgICAgICAgcmVzID0+IHtcbiAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHRoaXMuZ2V0RXJyb3JNZXNzYWdlKGZhbHNlKTtcbiAgICAgICAgICBsZXQgcmVzcG9uc2UgPSBKU09OLnBhcnNlKHJlcyk7XG4gICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgdGhpcy5nb3RvQ2FzZXRyYW5zYXRpb25QYWdlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICAoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5nZXRFcnJvck1lc3NhZ2UodHJ1ZSk7XG4gICAgICAgICAgdGhpcy5pc0NvbmZpcm1CdXR0b25kaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgIC8vIGNvbnRyb2xzLnJlc3BvbnNpYmxlT2ZmaWNlLnNldFZhbHVlKCdQMjE5Jyk7XG4gICAgdGhpcy5idWxrU2NhbmluZ1BheW1lbnRTZXJ2aWNlLnBhdGNoQlNDaGFuZ2VTdGF0dXModGhpcy51bmFzc2lnbmVkUmVjb3JkLmRjbl9yZWZlcmVuY2UsICdQUk9DRVNTRUQnKS5zdWJzY3JpYmUoXG4gICAgICByZXMxID0+IHtcbiAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSB0aGlzLmdldEVycm9yTWVzc2FnZShmYWxzZSk7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlMSA9IEpTT04ucGFyc2UocmVzMSksXG4gICAgICAgICByZXF1ZXN0Qm9keSA9IG5ldyBBbGxvY2F0ZVBheW1lbnRSZXF1ZXN0XG4gICAgICAgICAodGhpcy5jY2RSZWZlcmVuY2UsIHRoaXMudW5hc3NpZ25lZFJlY29yZCwgdGhpcy5zaXRlSUQsIHRoaXMuZXhjZXB0aW9uUmVmZXJlbmNlKVxuICAgICAgICB0aGlzLnBheW1lbnRWaWV3U2VydmljZS5wb3N0QlNQYXltZW50cyhyZXF1ZXN0Qm9keSkuc3Vic2NyaWJlKFxuICAgICAgICAgIHJlczIgPT4ge1xuICAgICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSB0aGlzLmdldEVycm9yTWVzc2FnZShmYWxzZSk7XG4gICAgICAgICAgICBjb25zdCByZXNwb25zZTIgPSBKU09OLnBhcnNlKHJlczIpLFxuICAgICAgICAgICAgcmVxQm9keSA9IG5ldyBVbnNvbGljaXRlZFBheW1lbnRzUmVxdWVzdFxuICAgICAgICAgICAgKHJlc3BvbnNlMlsnZGF0YSddLnBheW1lbnRfZ3JvdXBfcmVmZXJlbmNlLCByZXNwb25zZTJbJ2RhdGEnXS5yZWZlcmVuY2UsIGNvbnRyb2xzLnJlYXNvbi52YWx1ZSwgdGhpcy5zZWxlY3RlZFNpdGVJZCwgY29udHJvbHMucmVzcG9uc2libGVQZXJzb24udmFsdWUsIGNvbnRyb2xzLmVtYWlsSWQudmFsdWUpO1xuICAgICAgICAgICAgIGlmIChyZXNwb25zZTIuc3VjY2Vzcykge1xuICAgICAgICAgICAgICB0aGlzLnBheW1lbnRWaWV3U2VydmljZS5wb3N0QlNVbnNvbGljaXRlZFBheW1lbnRzKHJlcUJvZHkpLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgICByZXMzID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5nZXRFcnJvck1lc3NhZ2UoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UzID0gSlNPTi5wYXJzZShyZXMzKTtcbiAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZTMuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmdvdG9DYXNldHJhbnNhdGlvblBhZ2UoKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICB0aGlzLmJ1bGtTY2FuaW5nUGF5bWVudFNlcnZpY2UucGF0Y2hCU0NoYW5nZVN0YXR1cyh0aGlzLnVuYXNzaWduZWRSZWNvcmQuZGNuX3JlZmVyZW5jZSwgJ0NPTVBMRVRFJykuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHRoaXMuZ2V0RXJyb3JNZXNzYWdlKHRydWUpO1xuICAgICAgICAgICAgICAgICAgdGhpcy5pc0NvbmZpcm1CdXR0b25kaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmJ1bGtTY2FuaW5nUGF5bWVudFNlcnZpY2UucGF0Y2hCU0NoYW5nZVN0YXR1cyh0aGlzLnVuYXNzaWduZWRSZWNvcmQuZGNuX3JlZmVyZW5jZSwgJ0NPTVBMRVRFJykuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHRoaXMuZ2V0RXJyb3JNZXNzYWdlKHRydWUpO1xuICAgICAgICAgICAgdGhpcy5pc0NvbmZpcm1CdXR0b25kaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgIH0sXG4gICAgICAoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHRoaXMuZ2V0RXJyb3JNZXNzYWdlKHRydWUpO1xuICAgICAgICB0aGlzLmlzQ29uZmlybUJ1dHRvbmRpc2FibGVkID0gZmFsc2U7XG4gICAgICB9XG4gICAgKTtcbiAgICB9XG4gIH1cbiBzYXZlQW5kQ29udGludWUoKSB7XG4gICAgdGhpcy5yZXNldEZvcm0oW2ZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlXSwgJ2FsbCcpO1xuICAgICAgICBjb25zdCBmb3JtZXJyb3IgPSB0aGlzLm1hcmtQYXltZW50VW5zb2xpY2l0ZWRGb3JtLmNvbnRyb2xzLnJlYXNvbi5lcnJvcnM7XG4gICAgICAgIGNvbnN0IHJlYXNvbkZpZWxkID0gdGhpcy5tYXJrUGF5bWVudFVuc29saWNpdGVkRm9ybS5jb250cm9scy5yZWFzb247XG4gICAgICAgIC8vY29uc3Qgb2ZmaWNlSWRGaWVsZCA9IHRoaXMuc2VsZWN0ZWRTaXRlSWQ7XG4gICAgICAgIGNvbnN0IG9mZmljZUlkRmllbGQgID0gdGhpcy5tYXJrUGF5bWVudFVuc29saWNpdGVkRm9ybS5jb250cm9scy5yZXNwb25zaWJsZU9mZmljZTtcbiAgICBpZiAodGhpcy5tYXJrUGF5bWVudFVuc29saWNpdGVkRm9ybS5kaXJ0eSAmJiB0aGlzLm1hcmtQYXltZW50VW5zb2xpY2l0ZWRGb3JtLnZhbGlkKSB7XG4gICAgICBjb25zdCBjb250cm9scyA9IHRoaXMubWFya1BheW1lbnRVbnNvbGljaXRlZEZvcm0uY29udHJvbHM7XG4gICAgICB0aGlzLmVtYWlsSWQgPSBjb250cm9scy5lbWFpbElkLnZhbHVlO1xuICAgICAgdGhpcy5yZXNwb25zaWJsZU9mZmljZSA9IG9mZmljZUlkRmllbGQudmFsdWU7XG4gICAgICB0aGlzLnJlc3BvbnNpYmxlUGVyc29uID0gY29udHJvbHMucmVzcG9uc2libGVQZXJzb24udmFsdWU7XG4gICAgICB0aGlzLnJlYXNvbiA9IGNvbnRyb2xzLnJlYXNvbi52YWx1ZTtcbiAgICAgIHRoaXMudmlld1N0YXR1cyA9ICd1bnNvbGljaXRlZENvbnRpbnVlQ29uZmlybSc7XG4gICAgfWVsc2Uge1xuICAgICAgaWYoIHJlYXNvbkZpZWxkLnZhbHVlID09ICcnICkge1xuICAgICAgICB0aGlzLnJlc2V0Rm9ybShbdHJ1ZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZV0sICdyZWFzb24nKTtcbiAgICAgIH1cbiAgICAgIGlmKHJlYXNvbkZpZWxkLnZhbHVlICE9ICcnICYmIHRoaXMubWFya1BheW1lbnRVbnNvbGljaXRlZEZvcm0uY29udHJvbHMucmVhc29uLmludmFsaWQgKSB7XG4gICAgICAgIHRoaXMucmVzZXRGb3JtKFtmYWxzZSx0cnVlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlXSwgJ3JlYXNvbicpO1xuICAgICAgfVxuICAgICAgaWYoZm9ybWVycm9yICYmIGZvcm1lcnJvci5taW5sZW5ndGggJiYgZm9ybWVycm9yLm1pbmxlbmd0aC5hY3R1YWxMZW5ndGggPCAzICkge1xuICAgICAgICB0aGlzLnJlc2V0Rm9ybShbZmFsc2UsZmFsc2UsdHJ1ZSxmYWxzZSxmYWxzZSxmYWxzZV0sICdyZWFzb24nKTtcbiAgICAgIH1cbiAgICAgIGlmKGZvcm1lcnJvciAmJiBmb3JtZXJyb3IubWF4bGVuZ3RoICYmIGZvcm1lcnJvci5tYXhsZW5ndGguYWN0dWFsTGVuZ3RoID4gMjU1ICkge1xuICAgICAgICB0aGlzLnJlc2V0Rm9ybShbZmFsc2UsZmFsc2UsZmFsc2UsdHJ1ZSxmYWxzZSxmYWxzZV0sICdyZWFzb24nKTtcbiAgICAgIH1cbiAgICAgIGlmKG9mZmljZUlkRmllbGQudmFsdWUgPT0gJycpIHtcbiAgICAgICAgdGhpcy5yZXNldEZvcm0oW2ZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLHRydWUsZmFsc2VdLCAncmVzcG9uc2libGVPZmZpY2UnKTtcbiAgICAgIH1cbiAgICAgIGlmKG9mZmljZUlkRmllbGQudmFsdWUgIT0gJycgJiYgb2ZmaWNlSWRGaWVsZC5pbnZhbGlkKSB7XG4gICAgICAgIHRoaXMucmVzZXRGb3JtKFtmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSx0cnVlXSwncmVzcG9uc2libGVPZmZpY2UnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmVzZXRGb3JtKHZhbCwgZmllbGQpIHtcbiAgICBpZihmaWVsZD09PSdyZWFzb24nIHx8IGZpZWxkPT09J2FsbCcpIHtcbiAgICAgIHRoaXMuaXNSZWFzb25FbXB0eSA9IHZhbFswXTtcbiAgICAgIHRoaXMucmVhc29uSGFzRXJyb3IgPSB2YWxbMV07XG4gICAgICB0aGlzLnJlYXNvbk1pbkhhc0Vycm9yID0gdmFsWzJdO1xuICAgICAgdGhpcy5yZWFzb25NYXhIYXNFcnJvciA9IHZhbFszXTtcbiAgICB9XG4gICAgaWYoZmllbGQ9PT0ncmVzcG9uc2libGVPZmZpY2UnIHx8IGZpZWxkPT09J2FsbCcpIHtcbiAgICAgIHRoaXMuaXNSZXNwb25zaWJsZU9mZmljZUVtcHR5ID0gdmFsWzRdO1xuICAgICAgdGhpcy5yZXNwb25zaWJsZU9mZmljZUhhc0Vycm9yID0gdmFsWzVdO1xuICAgIH1cbiAgfVxuXG5jYW5jZWxNYXJrVW5zb2xpY2l0ZWRQYXltZW50cyh0eXBlPzpzdHJpbmcpe1xuICAgIGlmKHR5cGUgJiYgdHlwZSA9PT0gJ2NhbmNlbCcpIHtcbiAgICAgIGlmKHRoaXMuY2hlY2tpbmdGb3JtVmFsdWUoKSl7XG4gICAgICAgIHRoaXMudmlld1N0YXR1cyA9ICd1bnNvbGljaXRlZENhbmNlbENvbmZpcm0nO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5nb3RvQ2FzZXRyYW5zYXRpb25QYWdlKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubWFya1BheW1lbnRVbnNvbGljaXRlZEZvcm0uY29udHJvbHMucmVzcG9uc2libGVPZmZpY2Uuc2V0VmFsdWUoJycpO1xuICAgICAgdGhpcy52aWV3U3RhdHVzID0gJ21haW5Gb3JtJztcbiAgICB9XG4gIH1cbiAgY2hlY2tpbmdGb3JtVmFsdWUoKXtcbiAgICBjb25zdCBmb3JtRmllbGRzID0gdGhpcy5tYXJrUGF5bWVudFVuc29saWNpdGVkRm9ybS52YWx1ZTtcbiAgICBsZXQgdmFsdWVFeGlzdHMgPSBmYWxzZTtcblxuICAgIGZvciAodmFyIGZpZWxkIGluIGZvcm1GaWVsZHMpIHtcbiAgICAgIGlmIChmb3JtRmllbGRzLmhhc093blByb3BlcnR5KGZpZWxkKSAmJiBmb3JtRmllbGRzW2ZpZWxkXSAhPT1cIlwiKSB7XG4gICAgICAgIHZhbHVlRXhpc3RzID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZUV4aXN0cztcbiAgfVxuICBnb3RvQ2FzZXRyYW5zYXRpb25QYWdlKCkge1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC52aWV3TmFtZSA9ICdjYXNlLXRyYW5zYWN0aW9ucyc7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LlRBS0VQQVlNRU5UID0gdHJ1ZTtcbiAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuSVNCU0VOQUJMRSA9IHRydWU7XG4gIH1cbiAgIGdldFVuYXNzaWduZWRQYXltZW50KCkge1xuICAgIHRoaXMuYnVsa1NjYW5pbmdQYXltZW50U2VydmljZS5nZXRCU1BheW1lbnRzQnlEQ04odGhpcy5ic3BheW1lbnRkY24pLnN1YnNjcmliZShcbiAgICAgIHVuYXNzaWduZWRQYXltZW50cyA9PiB7XG4gICAgICAgIFxuICAgICAgdGhpcy51bmFzc2lnbmVkUmVjb3JkID0gdW5hc3NpZ25lZFBheW1lbnRzWydkYXRhJ10ucGF5bWVudHMuZmlsdGVyKHBheW1lbnQgPT4ge1xuICAgICAgICByZXR1cm4gcGF5bWVudCAmJiBwYXltZW50LmRjbl9yZWZlcmVuY2UgPT0gdGhpcy5ic3BheW1lbnRkY247XG4gICAgICB9KVswXTtcbiAgICAgICB0aGlzLnNpdGVJRCA9IHVuYXNzaWduZWRQYXltZW50c1snZGF0YSddLnJlc3BvbnNpYmxlX3NlcnZpY2VfaWQ7XG4gICAgICAgIGNvbnN0IGJlQ2NkTnVtYmVyID0gdW5hc3NpZ25lZFBheW1lbnRzWydkYXRhJ10uY2NkX3JlZmVyZW5jZSxcbiAgICAgICAgIGJlRXhjZXB0aW9uTnVtYmVyID0gdW5hc3NpZ25lZFBheW1lbnRzWydkYXRhJ10uZXhjZXB0aW9uX3JlY29yZF9yZWZlcmVuY2UsXG4gICAgICAgICBleGNlcHRpb25SZWZlcmVuY2UgPSBiZUNjZE51bWJlciA/IGJlQ2NkTnVtYmVyID09PSB0aGlzLmNjZENhc2VOdW1iZXIgPyBudWxsIDogdGhpcy5jY2RDYXNlTnVtYmVyIDogdGhpcy5jY2RDYXNlTnVtYmVyO1xuICAgICAgICB0aGlzLmNjZFJlZmVyZW5jZSA9IGJlQ2NkTnVtYmVyID8gYmVDY2ROdW1iZXIgOiBudWxsO1xuICAgICAgICB0aGlzLmV4Y2VwdGlvblJlZmVyZW5jZSA9IGJlRXhjZXB0aW9uTnVtYmVyID8gYmVFeGNlcHRpb25OdW1iZXIgOiBleGNlcHRpb25SZWZlcmVuY2U7XG4gICAgfSxcbiAgICAgIChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5nZXRFcnJvck1lc3NhZ2UodHJ1ZSk7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIGdldEVycm9yTWVzc2FnZShpc0Vycm9yRXhpc3QpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdGl0bGU6IFwiU29tZXRoaW5nIHdlbnQgd3JvbmcuXCIsXG4gICAgICBib2R5OiBcIlBsZWFzZSB0cnkgYWdhaW4gbGF0ZXIuXCIsXG4gICAgICBzaG93RXJyb3I6IGlzRXJyb3JFeGlzdFxuICAgIH07XG4gIH1cblxuICBzZWxlY3RjaGFuZ2UoYXJncyl7IFxuICAgIHRoaXMuc2VsZWN0ZWRTaXRlSWQgPSBhcmdzLnRhcmdldC52YWx1ZTsgXG4gICAgdGhpcy5zZWxlY3RlZFNpdGVOYW1lID0gYXJncy50YXJnZXQub3B0aW9uc1thcmdzLnRhcmdldC5zZWxlY3RlZEluZGV4XS50ZXh0OyBcbiAgfSBcblxufVxuIl19
@@ -1,6 +1,6 @@
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 } from '@angular/core';
6
6
  var PageNotFoundComponent = /** @class */ (function () {
@@ -9,10 +9,9 @@ var PageNotFoundComponent = /** @class */ (function () {
9
9
  PageNotFoundComponent.decorators = [
10
10
  { type: Component, args: [{
11
11
  template: "\n <h1>This is not the page you were looking for!</h1>\n "
12
- },] },
12
+ }] }
13
13
  ];
14
14
  return PageNotFoundComponent;
15
15
  }());
16
16
  export { PageNotFoundComponent };
17
-
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1ub3QtZm91bmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGhtY3RzL2NjcGF5LXdlYi1jb21wb25lbnQvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9wYWdlLW5vdC1mb3VuZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7O2dCQUV6QyxTQUFTLFNBQUM7b0JBQ1AsUUFBUSxFQUFFLGlFQUVUO2lCQUNKOztnQ0FORDs7U0FPYSxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gICAgdGVtcGxhdGU6IGBcbiAgICA8aDE+VGhpcyBpcyBub3QgdGhlIHBhZ2UgeW91IHdlcmUgbG9va2luZyBmb3IhPC9oMT5cbiAgICBgXG59KVxuZXhwb3J0IGNsYXNzIFBhZ2VOb3RGb3VuZENvbXBvbmVudCB7IH1cbiJdfQ==
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1ub3QtZm91bmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGhtY3RzL2NjcGF5LXdlYi1jb21wb25lbnQvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9wYWdlLW5vdC1mb3VuZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFMUM7SUFBQTtJQUtxQyxDQUFDOztnQkFMckMsU0FBUyxTQUFDO29CQUNQLFFBQVEsRUFBRSxpRUFFVDtpQkFDSjs7SUFDb0MsNEJBQUM7Q0FBQSxBQUx0QyxJQUtzQztTQUF6QixxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gICAgdGVtcGxhdGU6IGBcbiAgICA8aDE+VGhpcyBpcyBub3QgdGhlIHBhZ2UgeW91IHdlcmUgbG9va2luZyBmb3IhPC9oMT5cbiAgICBgXG59KVxuZXhwb3J0IGNsYXNzIFBhZ2VOb3RGb3VuZENvbXBvbmVudCB7IH1cbiJdfQ==