@hmcts/ccd-case-ui-toolkit 7.1.51-ongoing-accessibility-v1.4 → 7.1.51-ongoing-accessibility-v1.6

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.
@@ -41,15 +41,17 @@ function CaseListComponent_ng_container_9_td_2_Template(rf, ctx) { if (rf & 1) {
41
41
  i0.ɵɵelement(3, "label", 17);
42
42
  i0.ɵɵelementEnd()();
43
43
  } if (rf & 2) {
44
- const c_r5 = i0.ɵɵnextContext().$implicit;
44
+ const ctx_r5 = i0.ɵɵnextContext();
45
+ const c_r5 = ctx_r5.$implicit;
46
+ const i_r7 = ctx_r5.index;
45
47
  const ctx_r1 = i0.ɵɵnextContext();
46
48
  i0.ɵɵadvance(2);
47
- i0.ɵɵpropertyInterpolate1("id", "select-", c_r5[ctx_r1.tableConfig.idField], "");
48
- i0.ɵɵpropertyInterpolate1("name", "select-", c_r5[ctx_r1.tableConfig.idField], "");
49
+ i0.ɵɵpropertyInterpolate1("id", "select-", c_r5[ctx_r1.tableConfig.idField] || i_r7, "");
50
+ i0.ɵɵpropertyInterpolate1("name", "select-", c_r5[ctx_r1.tableConfig.idField] || i_r7, "");
49
51
  i0.ɵɵproperty("checked", ctx_r1.isSelected(c_r5))("disabled", !ctx_r1.canBeShared(c_r5));
50
52
  i0.ɵɵadvance();
51
- i0.ɵɵpropertyInterpolate1("for", "select-", c_r5[ctx_r1.tableConfig.idField], "");
52
- i0.ɵɵattribute("aria-labelledby", "select-" + c_r5[ctx_r1.tableConfig.idField]);
53
+ i0.ɵɵpropertyInterpolate1("for", "select-", c_r5[ctx_r1.tableConfig.idField] || i_r7, "");
54
+ i0.ɵɵattribute("aria-labelledby", "select-" + (c_r5[ctx_r1.tableConfig.idField] || i_r7));
53
55
  } }
54
56
  function CaseListComponent_ng_container_9_ng_container_3_th_1_ng_container_1_Template(rf, ctx) { if (rf & 1) {
55
57
  i0.ɵɵelementContainerStart(0);
@@ -57,10 +59,10 @@ function CaseListComponent_ng_container_9_ng_container_3_th_1_ng_container_1_Tem
57
59
  i0.ɵɵpipe(2, "rpxTranslate");
58
60
  i0.ɵɵelementContainerEnd();
59
61
  } if (rf & 2) {
60
- const col_r6 = i0.ɵɵnextContext(2).$implicit;
62
+ const col_r8 = i0.ɵɵnextContext(2).$implicit;
61
63
  const c_r5 = i0.ɵɵnextContext().$implicit;
62
64
  i0.ɵɵadvance();
63
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(2, 1, c_r5[col_r6.key]));
65
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(2, 1, c_r5[col_r8.key]));
64
66
  } }
65
67
  function CaseListComponent_ng_container_9_ng_container_3_th_1_ng_container_2_Template(rf, ctx) { if (rf & 1) {
66
68
  i0.ɵɵelementContainerStart(0);
@@ -70,24 +72,24 @@ function CaseListComponent_ng_container_9_ng_container_3_th_1_ng_container_2_Tem
70
72
  i0.ɵɵelementEnd();
71
73
  i0.ɵɵelementContainerEnd();
72
74
  } if (rf & 2) {
73
- const col_r6 = i0.ɵɵnextContext(2).$implicit;
75
+ const col_r8 = i0.ɵɵnextContext(2).$implicit;
74
76
  const c_r5 = i0.ɵɵnextContext().$implicit;
75
77
  i0.ɵɵadvance();
76
78
  i0.ɵɵproperty("routerLink", c_r5.routerLink);
77
79
  i0.ɵɵadvance();
78
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 2, c_r5[col_r6.key]));
80
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 2, c_r5[col_r8.key]));
79
81
  } }
80
82
  function CaseListComponent_ng_container_9_ng_container_3_th_1_Template(rf, ctx) { if (rf & 1) {
81
83
  i0.ɵɵelementStart(0, "th", 15);
82
84
  i0.ɵɵtemplate(1, CaseListComponent_ng_container_9_ng_container_3_th_1_ng_container_1_Template, 3, 3, "ng-container", 19)(2, CaseListComponent_ng_container_9_ng_container_3_th_1_ng_container_2_Template, 4, 4, "ng-container", 19);
83
85
  i0.ɵɵelementEnd();
84
86
  } if (rf & 2) {
85
- const col_r6 = i0.ɵɵnextContext().$implicit;
87
+ const col_r8 = i0.ɵɵnextContext().$implicit;
86
88
  const c_r5 = i0.ɵɵnextContext().$implicit;
87
89
  i0.ɵɵadvance();
88
- i0.ɵɵproperty("ngIf", !col_r6.type || col_r6.type === "text");
90
+ i0.ɵɵproperty("ngIf", !col_r8.type || col_r8.type === "text");
89
91
  i0.ɵɵadvance();
90
- i0.ɵɵproperty("ngIf", col_r6.type === "link" && c_r5.routerLink);
92
+ i0.ɵɵproperty("ngIf", col_r8.type === "link" && c_r5.routerLink);
91
93
  } }
92
94
  function CaseListComponent_ng_container_9_ng_container_3_td_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
93
95
  i0.ɵɵelementContainerStart(0);
@@ -97,12 +99,12 @@ function CaseListComponent_ng_container_9_ng_container_3_td_2_ng_container_1_Tem
97
99
  i0.ɵɵelementEnd();
98
100
  i0.ɵɵelementContainerEnd();
99
101
  } if (rf & 2) {
100
- const col_r6 = i0.ɵɵnextContext(2).$implicit;
102
+ const col_r8 = i0.ɵɵnextContext(2).$implicit;
101
103
  const c_r5 = i0.ɵɵnextContext().$implicit;
102
104
  i0.ɵɵadvance();
103
105
  i0.ɵɵproperty("routerLink", c_r5.routerLink);
104
106
  i0.ɵɵadvance();
105
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 2, c_r5[col_r6.key]));
107
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 2, c_r5[col_r8.key]));
106
108
  } }
107
109
  function CaseListComponent_ng_container_9_ng_container_3_td_2_ng_container_2_Template(rf, ctx) { if (rf & 1) {
108
110
  i0.ɵɵelementContainerStart(0);
@@ -110,32 +112,32 @@ function CaseListComponent_ng_container_9_ng_container_3_td_2_ng_container_2_Tem
110
112
  i0.ɵɵpipe(2, "currency");
111
113
  i0.ɵɵelementContainerEnd();
112
114
  } if (rf & 2) {
113
- const col_r6 = i0.ɵɵnextContext(2).$implicit;
115
+ const col_r8 = i0.ɵɵnextContext(2).$implicit;
114
116
  const c_r5 = i0.ɵɵnextContext().$implicit;
115
117
  i0.ɵɵadvance();
116
- i0.ɵɵtextInterpolate1("-", i0.ɵɵpipeBind2(2, 1, c_r5[col_r6.key], "GBP"), "");
118
+ i0.ɵɵtextInterpolate1("-", i0.ɵɵpipeBind2(2, 1, c_r5[col_r8.key], "GBP"), "");
117
119
  } }
118
120
  function CaseListComponent_ng_container_9_ng_container_3_td_2_ng_container_3_Template(rf, ctx) { if (rf & 1) {
119
121
  i0.ɵɵelementContainerStart(0);
120
122
  i0.ɵɵtext(1);
121
123
  i0.ɵɵelementContainerEnd();
122
124
  } if (rf & 2) {
123
- const col_r6 = i0.ɵɵnextContext(2).$implicit;
125
+ const col_r8 = i0.ɵɵnextContext(2).$implicit;
124
126
  const c_r5 = i0.ɵɵnextContext().$implicit;
125
127
  const ctx_r1 = i0.ɵɵnextContext();
126
128
  i0.ɵɵadvance();
127
- i0.ɵɵtextInterpolate(ctx_r1.formatDate(c_r5[col_r6.key]));
129
+ i0.ɵɵtextInterpolate(ctx_r1.formatDate(c_r5[col_r8.key]));
128
130
  } }
129
131
  function CaseListComponent_ng_container_9_ng_container_3_td_2_ng_container_4_Template(rf, ctx) { if (rf & 1) {
130
132
  i0.ɵɵelementContainerStart(0);
131
133
  i0.ɵɵtext(1);
132
134
  i0.ɵɵelementContainerEnd();
133
135
  } if (rf & 2) {
134
- const col_r6 = i0.ɵɵnextContext(2).$implicit;
136
+ const col_r8 = i0.ɵɵnextContext(2).$implicit;
135
137
  const c_r5 = i0.ɵɵnextContext().$implicit;
136
138
  const ctx_r1 = i0.ɵɵnextContext();
137
139
  i0.ɵɵadvance();
138
- i0.ɵɵtextInterpolate(ctx_r1.formatDateAtTime(c_r5[col_r6.key]));
140
+ i0.ɵɵtextInterpolate(ctx_r1.formatDateAtTime(c_r5[col_r8.key]));
139
141
  } }
140
142
  function CaseListComponent_ng_container_9_ng_container_3_td_2_ng_container_5_Template(rf, ctx) { if (rf & 1) {
141
143
  i0.ɵɵelementContainerStart(0);
@@ -143,21 +145,21 @@ function CaseListComponent_ng_container_9_ng_container_3_td_2_ng_container_5_Tem
143
145
  i0.ɵɵpipe(2, "rpxTranslate");
144
146
  i0.ɵɵelementContainerEnd();
145
147
  } if (rf & 2) {
146
- const col_r6 = i0.ɵɵnextContext(2).$implicit;
148
+ const col_r8 = i0.ɵɵnextContext(2).$implicit;
147
149
  const c_r5 = i0.ɵɵnextContext().$implicit;
148
150
  i0.ɵɵadvance();
149
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(2, 1, c_r5[col_r6.key]));
151
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(2, 1, c_r5[col_r8.key]));
150
152
  } }
151
153
  function CaseListComponent_ng_container_9_ng_container_3_td_2_Template(rf, ctx) { if (rf & 1) {
152
154
  i0.ɵɵelementStart(0, "td", 21);
153
155
  i0.ɵɵtemplate(1, CaseListComponent_ng_container_9_ng_container_3_td_2_ng_container_1_Template, 4, 4, "ng-container", 19)(2, CaseListComponent_ng_container_9_ng_container_3_td_2_ng_container_2_Template, 3, 4, "ng-container", 22)(3, CaseListComponent_ng_container_9_ng_container_3_td_2_ng_container_3_Template, 2, 1, "ng-container", 22)(4, CaseListComponent_ng_container_9_ng_container_3_td_2_ng_container_4_Template, 2, 1, "ng-container", 22)(5, CaseListComponent_ng_container_9_ng_container_3_td_2_ng_container_5_Template, 3, 3, "ng-container", 23);
154
156
  i0.ɵɵelementEnd();
155
157
  } if (rf & 2) {
156
- const col_r6 = i0.ɵɵnextContext().$implicit;
158
+ const col_r8 = i0.ɵɵnextContext().$implicit;
157
159
  const c_r5 = i0.ɵɵnextContext().$implicit;
158
- i0.ɵɵproperty("ngSwitch", col_r6 == null ? null : col_r6.type);
160
+ i0.ɵɵproperty("ngSwitch", col_r8 == null ? null : col_r8.type);
159
161
  i0.ɵɵadvance();
160
- i0.ɵɵproperty("ngIf", col_r6.type === "link" && c_r5.routerLink);
162
+ i0.ɵɵproperty("ngIf", col_r8.type === "link" && c_r5.routerLink);
161
163
  i0.ɵɵadvance();
162
164
  i0.ɵɵproperty("ngSwitchCase", "money");
163
165
  i0.ɵɵadvance();
@@ -170,12 +172,12 @@ function CaseListComponent_ng_container_9_ng_container_3_Template(rf, ctx) { if
170
172
  i0.ɵɵtemplate(1, CaseListComponent_ng_container_9_ng_container_3_th_1_Template, 3, 2, "th", 14)(2, CaseListComponent_ng_container_9_ng_container_3_td_2_Template, 6, 5, "td", 18);
171
173
  i0.ɵɵelementContainerEnd();
172
174
  } if (rf & 2) {
173
- const isFirst_r7 = ctx.first;
175
+ const isFirst_r9 = ctx.first;
174
176
  const ctx_r1 = i0.ɵɵnextContext(2);
175
177
  i0.ɵɵadvance();
176
- i0.ɵɵproperty("ngIf", isFirst_r7 && ctx_r1.firstCellIsHeader);
178
+ i0.ɵɵproperty("ngIf", isFirst_r9 && ctx_r1.firstCellIsHeader);
177
179
  i0.ɵɵadvance();
178
- i0.ɵɵproperty("ngIf", !(isFirst_r7 && ctx_r1.firstCellIsHeader));
180
+ i0.ɵɵproperty("ngIf", !(isFirst_r9 && ctx_r1.firstCellIsHeader));
179
181
  } }
180
182
  function CaseListComponent_ng_container_9_Template(rf, ctx) { if (rf & 1) {
181
183
  i0.ɵɵelementContainerStart(0);
@@ -191,9 +193,9 @@ function CaseListComponent_ng_container_9_Template(rf, ctx) { if (rf & 1) {
191
193
  i0.ɵɵproperty("ngForOf", ctx_r1.tableConfig.columnConfigs);
192
194
  } }
193
195
  function CaseListComponent_ccd_pagination_11_Template(rf, ctx) { if (rf & 1) {
194
- const _r8 = i0.ɵɵgetCurrentView();
196
+ const _r10 = i0.ɵɵgetCurrentView();
195
197
  i0.ɵɵelementStart(0, "ccd-pagination", 24);
196
- i0.ɵɵlistener("pageChange", function CaseListComponent_ccd_pagination_11_Template_ccd_pagination_pageChange_0_listener($event) { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.goToPage($event)); });
198
+ i0.ɵɵlistener("pageChange", function CaseListComponent_ccd_pagination_11_Template_ccd_pagination_pageChange_0_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.goToPage($event)); });
197
199
  i0.ɵɵelementEnd();
198
200
  } }
199
201
  export class DateTimeFormatUtils {
@@ -322,7 +324,7 @@ export class CaseListComponent {
322
324
  }
323
325
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CaseListComponent, [{
324
326
  type: Component,
325
- args: [{ selector: 'ccd-case-list', template: "<table class=\"{{'govuk-table ' + classes}}\">\n <caption class=\"govuk-table__caption\">{{caption | rpxTranslate}}</caption>\n <thead class=\"govuk-table__head\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__header\" *ngIf=\"selectionEnabled\">\n <div class=\"govuk-checkboxes__item\">\n <input class=\"govuk-checkboxes__input\" id=\"select-all\" name=\"select-all\" type=\"checkbox\" (change)=\"selectAll()\"\n [checked]=\"allOnPageSelected()\" [disabled]=\"!canAnyBeShared()\" />\n <!-- This label element is used to hide the standard checkbox with a govuk-styled one -->\n <label class=\"govuk-label govuk-checkboxes__label\" for=\"select-all\" [attr.aria-labelledby]=\"'select-all'\">\n </label>\n </div>\n </td>\n <th class=\"govuk-table__header\" scope=\"col\" *ngFor=\"let h of tableConfig.columnConfigs\">{{h.header | rpxTranslate}}</th>\n </tr>\n </thead>\n <tbody class=\"govuk-table__body\">\n <ng-container *ngFor=\"let c of cases | paginate: { itemsPerPage: pageSize, currentPage: currentPageNo, totalItems: totalResultsCount }\">\n <tr data-selector=\"table-row\" class=\"govuk-table__row\">\n <td data-selector=\"table-header\" class=\"govuk-table__header\" scope=\"row\" *ngIf=\"selectionEnabled\">\n <div class=\"govuk-checkboxes__item\">\n <input class=\"govuk-checkboxes__input\" id=\"select-{{ c[tableConfig.idField] }}\" name=\"select-{{ c[tableConfig.idField] }}\"\n type=\"checkbox\" (change)=\"changeSelection(c)\" [checked]=\"isSelected(c)\" [disabled]=\"!canBeShared(c)\" (keyup)=\"onKeyUp($event, c)\" />\n <!-- This label element is used to hide the standard checkbox with a govuk-styled one -->\n <label class=\"govuk-label govuk-checkboxes__label\" for=\"select-{{ c[tableConfig.idField] }}\" [attr.aria-labelledby]=\"'select-' + c[tableConfig.idField]\">\n </label>\n </div>\n </td>\n <ng-container *ngFor=\"let col of tableConfig.columnConfigs; first as isFirst\">\n <th data-selector=\"table-header\" class=\"govuk-table__header\" scope=\"row\" *ngIf=\"isFirst && firstCellIsHeader\">\n <ng-container *ngIf=\"!col.type || col.type === 'text'\">{{c[col.key] | rpxTranslate}}</ng-container>\n <ng-container *ngIf=\"col.type === 'link' && c.routerLink\">\n <a class=\"govuk-link\" [routerLink]=\"c.routerLink\">{{c[col.key] | rpxTranslate}}</a>\n </ng-container>\n </th>\n <td data-selector=\"table-cell\" class=\"govuk-table__cell\" *ngIf=\"!(isFirst && firstCellIsHeader)\" [ngSwitch]=\"col?.type\">\n <ng-container *ngIf=\"col.type === 'link' && c.routerLink\">\n <a class=\"govuk-link\" [routerLink]=\"c.routerLink\">{{c[col.key] | rpxTranslate}}</a>\n </ng-container>\n <ng-container *ngSwitchCase=\"'money'\">-{{ c[col.key] | currency:'GBP' }}</ng-container>\n <ng-container *ngSwitchCase=\"'date'\">{{formatDate(c[col.key])}}</ng-container>\n <ng-container *ngSwitchCase=\"'dateAtTime'\">{{formatDateAtTime(c[col.key])}}</ng-container>\n <ng-container *ngSwitchDefault>{{c[col.key] | rpxTranslate}}</ng-container>\n </td>\n </ng-container>\n </tr>\n </ng-container>\n </tbody>\n</table>\n<ccd-pagination *ngIf=\"totalResultsCount > pageSize\"\n (pageChange)=\"goToPage($event)\"\n></ccd-pagination>\n" }]
327
+ args: [{ selector: 'ccd-case-list', template: "<table class=\"{{'govuk-table ' + classes}}\">\n <caption class=\"govuk-table__caption\">{{caption | rpxTranslate}}</caption>\n <thead class=\"govuk-table__head\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__header\" *ngIf=\"selectionEnabled\">\n <div class=\"govuk-checkboxes__item\">\n <input class=\"govuk-checkboxes__input\" id=\"select-all\" name=\"select-all\" type=\"checkbox\" (change)=\"selectAll()\"\n [checked]=\"allOnPageSelected()\" [disabled]=\"!canAnyBeShared()\" />\n <!-- This label element is used to hide the standard checkbox with a govuk-styled one -->\n <label class=\"govuk-label govuk-checkboxes__label\" for=\"select-all\" [attr.aria-labelledby]=\"'select-all'\">\n </label>\n </div>\n </td>\n <th class=\"govuk-table__header\" scope=\"col\" *ngFor=\"let h of tableConfig.columnConfigs\">{{h.header | rpxTranslate}}</th>\n </tr>\n </thead>\n <tbody class=\"govuk-table__body\">\n <ng-container *ngFor=\"let c of cases | paginate: { itemsPerPage: pageSize, currentPage: currentPageNo, totalItems: totalResultsCount }; index as i\">\n <tr data-selector=\"table-row\" class=\"govuk-table__row\">\n <td data-selector=\"table-header\" class=\"govuk-table__header\" scope=\"row\" *ngIf=\"selectionEnabled\">\n <div class=\"govuk-checkboxes__item\">\n <input class=\"govuk-checkboxes__input\" id=\"select-{{ c[tableConfig.idField] || i }}\" name=\"select-{{ c[tableConfig.idField] || i }}\"\n type=\"checkbox\" (change)=\"changeSelection(c)\" [checked]=\"isSelected(c)\" [disabled]=\"!canBeShared(c)\" (keyup)=\"onKeyUp($event, c)\" />\n <!-- This label element is used to hide the standard checkbox with a govuk-styled one -->\n <label class=\"govuk-label govuk-checkboxes__label\" for=\"select-{{ c[tableConfig.idField] || i }}\" [attr.aria-labelledby]=\"'select-' + (c[tableConfig.idField] || i)\">\n </label>\n </div>\n </td>\n <ng-container *ngFor=\"let col of tableConfig.columnConfigs; first as isFirst\">\n <th data-selector=\"table-header\" class=\"govuk-table__header\" scope=\"row\" *ngIf=\"isFirst && firstCellIsHeader\">\n <ng-container *ngIf=\"!col.type || col.type === 'text'\">{{c[col.key] | rpxTranslate}}</ng-container>\n <ng-container *ngIf=\"col.type === 'link' && c.routerLink\">\n <a class=\"govuk-link\" [routerLink]=\"c.routerLink\">{{c[col.key] | rpxTranslate}}</a>\n </ng-container>\n </th>\n <td data-selector=\"table-cell\" class=\"govuk-table__cell\" *ngIf=\"!(isFirst && firstCellIsHeader)\" [ngSwitch]=\"col?.type\">\n <ng-container *ngIf=\"col.type === 'link' && c.routerLink\">\n <a class=\"govuk-link\" [routerLink]=\"c.routerLink\">{{c[col.key] | rpxTranslate}}</a>\n </ng-container>\n <ng-container *ngSwitchCase=\"'money'\">-{{ c[col.key] | currency:'GBP' }}</ng-container>\n <ng-container *ngSwitchCase=\"'date'\">{{formatDate(c[col.key])}}</ng-container>\n <ng-container *ngSwitchCase=\"'dateAtTime'\">{{formatDateAtTime(c[col.key])}}</ng-container>\n <ng-container *ngSwitchDefault>{{c[col.key] | rpxTranslate}}</ng-container>\n </td>\n </ng-container>\n </tr>\n </ng-container>\n </tbody>\n</table>\n<ccd-pagination *ngIf=\"totalResultsCount > pageSize\"\n (pageChange)=\"goToPage($event)\"\n></ccd-pagination>\n" }]
326
328
  }], () => [{ type: i1.BrowserService }], { classes: [{
327
329
  type: Input
328
330
  }], caption: [{
@@ -368,4 +370,4 @@ export class TableConfig {
368
370
  this.columnConfigs = [];
369
371
  }
370
372
  }
371
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9jYXNlLWxpc3QvY2FzZS1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9jYXNlLWxpc3QvY2FzZS1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7Ozs7Ozs7Ozs7SUNJOUQsQUFERixBQURGLDZCQUF5RCxhQUNuQixnQkFFc0M7SUFEaUIsNktBQVUsa0JBQVcsS0FBQztJQUEvRyxpQkFDd0U7SUFFeEUsNEJBQ1E7SUFFWixBQURFLGlCQUFNLEVBQ0g7OztJQUxNLGVBQStCO0lBQUMsQUFBaEMsb0RBQStCLHNDQUErQjtJQUVELGNBQXFDOzs7O0lBSTdHLDhCQUF3RjtJQUFBLFlBQTJCOztJQUFBLGlCQUFLOzs7SUFBaEMsY0FBMkI7SUFBM0IsdURBQTJCOzs7O0lBUTdHLEFBREYsQUFERiw4QkFBa0csYUFDNUQsZ0JBRXdHO0lBQS9CLEFBQXJGLHVPQUFVLDRCQUFrQixLQUFDLDhOQUFpRSw0QkFBa0IsS0FBQztJQUR2SSxpQkFDMEk7SUFFMUksNEJBQ1E7SUFFWixBQURFLGlCQUFNLEVBQ0g7Ozs7SUFOc0MsZUFBd0M7SUFBeEMsZ0ZBQXdDO0lBQUMsa0ZBQTBDO0lBQzVDLEFBQTFCLGlEQUF5Qix1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ZW50IjpbImltcG9ydCB7IGZvcm1hdERhdGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJyb3dzZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYnJvd3Nlci9icm93c2VyLnNlcnZpY2UnO1xuXG5leHBvcnQgY2xhc3MgRGF0ZVRpbWVGb3JtYXRVdGlscyB7XG4gIHB1YmxpYyBzdGF0aWMgZm9ybWF0RGF0ZUF0VGltZShkYXRlOiBEYXRlLCBpczI0SG91cjogYm9vbGVhbik6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke2Zvcm1hdERhdGUoZGF0ZSwgJ2RkIE1NTSB5eXl5JywgJ2VuLUdCJyl9IGF0ICR7RGF0ZVRpbWVGb3JtYXRVdGlscy5mb3JtYXRUaW1lKGRhdGUsIGlzMjRIb3VyKX1gO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBmb3JtYXRUaW1lKGRhdGU6IERhdGUsIGlzMjRIb3VyOiBib29sZWFuKTogc3RyaW5nIHtcbiAgICByZXR1cm4gaXMyNEhvdXIgPyBmb3JtYXREYXRlKGRhdGUsICdISDptbScsICdlbi1HQicpIDogZm9ybWF0RGF0ZShkYXRlLCAnaDptbSBhJywgJ2VuLUdCJykudG9Mb3dlckNhc2UoKTtcbiAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjY2QtY2FzZS1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Nhc2UtbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Nhc2UtbGlzdC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIENhc2VMaXN0Q29tcG9uZW50IHtcblxuICBASW5wdXQoKSBwdWJsaWMgY2xhc3NlcyA9ICcnO1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBjYXB0aW9uOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHB1YmxpYyBmaXJzdENlbGxJc0hlYWRlciA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBjYXNlczogb2JqZWN0W107XG5cbiAgQElucHV0KCkgcHVibGljIHRhYmxlQ29uZmlnOiBUYWJsZUNvbmZpZyA9IHtcbiAgICBpZEZpZWxkOiAnaWQnLFxuICAgIGNvbHVtbkNvbmZpZ3M6IFtcbiAgICAgIHsgaGVhZGVyOiAnRGF0ZScsIGtleTogJ2RhdGUnLCB0eXBlOiAndGV4dCcgfSxcbiAgICAgIHsgaGVhZGVyOiAnQW1vdW50Jywga2V5OiAnYW1vdW50JyB9XG4gICAgXVxuICB9O1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBzZWxlY3Rpb25FbmFibGVkID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpIHB1YmxpYyBzZWxlY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPGFueVtdPigpO1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBzZWxlY3RlZENhc2VzOiBhbnlbXSA9IFtdO1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBjdXJyZW50UGFnZU5vOiBudW1iZXI7XG5cbiAgQElucHV0KCkgcHVibGljIHRvdGFsUmVzdWx0c0NvdW50PzogbnVtYmVyO1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBwYWdlU2l6ZT86IG51bWJlcjtcblxuICBAT3V0cHV0KCkgcHVibGljIHBhZ2VDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBicm93c2VyU2VydmljZTogQnJvd3NlclNlcnZpY2UpIHsgfVxuXG4gIHB1YmxpYyBmb3JtYXREYXRlKGRhdGU6IERhdGUpOiBzdHJpbmcge1xuICAgIHJldHVybiBkYXRlID8gZm9ybWF0RGF0ZShkYXRlLCAnZGQgTU1NIHl5eXknLCAnZW4tR0InKSA6ICctJztcbiAgfVxuXG4gIHB1YmxpYyBmb3JtYXREYXRlQXRUaW1lKGRhdGU6IERhdGUpOiBzdHJpbmcge1xuICAgIHJldHVybiBkYXRlID8gRGF0ZVRpbWVGb3JtYXRVdGlscy5mb3JtYXREYXRlQXRUaW1lKGRhdGUsIGZhbHNlKSA6ICctJztcbiAgfVxuXG4gIHB1YmxpYyBjYW5CZVNoYXJlZChjOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHB1YmxpYyBjYW5BbnlCZVNoYXJlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jYXNlcy5zb21lKGMgPT4gdGhpcy5jYW5CZVNoYXJlZChjKSk7XG4gIH1cblxuICBwdWJsaWMgc2VsZWN0QWxsKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmFsbE9uUGFnZVNlbGVjdGVkKCkpIHtcbiAgICAgIC8vIEFsbCBjYXNlcyBhbHJlYWR5IHNlbGVjdGVkLCBzbyB1bnNlbGVjdCBhbGwgb24gdGhpcyBwYWdlXG4gICAgICB0aGlzLnNlbGVjdGVkQ2FzZXMgPSBbXTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jYXNlcy5mb3JFYWNoKGFDYXNlID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLmlzU2VsZWN0ZWQoYUNhc2UpICYmIHRoaXMuY2FuQmVTaGFyZWQoYUNhc2UpKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZENhc2VzID0gWy4uLiB0aGlzLnNlbGVjdGVkQ2FzZXMsIGFDYXNlXTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0aW9uLmVtaXQodGhpcy5zZWxlY3RlZENhc2VzKTtcbiAgfVxuXG4gIHB1YmxpYyBjaGFuZ2VTZWxlY3Rpb24oYUNhc2U6IGFueSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzU2VsZWN0ZWQoYUNhc2UpKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkQ2FzZXMuZm9yRWFjaCgoYVNlbGVjdGVkQ2FzZSwgaSkgPT4ge1xuICAgICAgICBpZiAoYUNhc2UuY2FzZV9pZCA9PT0gYVNlbGVjdGVkQ2FzZS5jYXNlX2lkKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZENhc2VzID0gdGhpcy5zZWxlY3RlZENhc2VzLnNsaWNlKDAsIGkpLmNvbmNhdCh0aGlzLnNlbGVjdGVkQ2FzZXMuc2xpY2UoaSArIDEpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLmNhbkJlU2hhcmVkKGFDYXNlKSkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkQ2FzZXMgPSBbLi4udGhpcy5zZWxlY3RlZENhc2VzLCBhQ2FzZV07XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0aW9uLmVtaXQodGhpcy5zZWxlY3RlZENhc2VzKTtcbiAgfVxuXG4gIHB1YmxpYyBpc1NlbGVjdGVkKGFDYXNlOiBhbnkpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZENhc2VzKSB7XG4gICAgICBmb3IgKGxldCBpbmRleCA9IDAsIGxlbmd0aCA9IHRoaXMuc2VsZWN0ZWRDYXNlcy5sZW5ndGg7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgIGlmIChhQ2FzZS5jYXNlX2lkID09PSB0aGlzLnNlbGVjdGVkQ2FzZXNbaW5kZXhdLmNhc2VfaWQpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgYWxsT25QYWdlU2VsZWN0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLmNhc2VzLnNvbWUoYUNhc2UgPT4gIXRoaXMuaXNTZWxlY3RlZChhQ2FzZSkpO1xuICB9XG5cbiAgcHVibGljIG9uS2V5VXAoJGV2ZW50OiBLZXlib2FyZEV2ZW50LCBhQ2FzZTogYW55KTogdm9pZCB7XG4gICAgaWYgKCRldmVudC5rZXkgPT09ICdTcGFjZScpIHtcbiAgICAgIGlmICh0aGlzLmJyb3dzZXJTZXJ2aWNlLmlzRmlyZWZveCB8fCB0aGlzLmJyb3dzZXJTZXJ2aWNlLmlzU2FmYXJpIHx8IHRoaXMuYnJvd3NlclNlcnZpY2UuaXNJRU9yRWRnZSkge1xuICAgICAgICB0aGlzLmNoYW5nZVNlbGVjdGlvbihhQ2FzZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdvVG9QYWdlKHBhZ2VOdW1iZXI6IG51bWJlcikge1xuICAgIHRoaXMuY3VycmVudFBhZ2VObyA9IHBhZ2VOdW1iZXI7XG4gICAgdGhpcy5wYWdlQ2hhbmdlLmVtaXQocGFnZU51bWJlcik7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFRhYmxlQ29sdW1uQ29uZmlnIHtcbiAgcHVibGljIGhlYWRlcjogc3RyaW5nO1xuICBwdWJsaWMga2V5OiBzdHJpbmc7XG4gIHB1YmxpYyB0eXBlPzogc3RyaW5nO1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmhlYWRlciA9ICcnO1xuICAgIHRoaXMua2V5ID0gJyc7XG4gICAgdGhpcy50eXBlID0gJ3RleHQnO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUYWJsZUNvbmZpZyB7XG4gIC8vIFNwZWNpZmllcyB3aGljaCBmaWVsZCBvZiBhbiBpdGVtIHVuaXF1ZWx5IGlkZW50aWZpZXMgaXQgYW1vbmcgb3RoZXJzIG9mIHRoZSBzYW1lIHR5cGVcbiAgcHVibGljIGlkRmllbGQ6IHN0cmluZztcblxuICBwdWJsaWMgY29sdW1uQ29uZmlnczogVGFibGVDb2x1bW5Db25maWdbXTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmlkRmllbGQgPSAnJztcbiAgICB0aGlzLmNvbHVtbkNvbmZpZ3MgPSBbXTtcbiAgfVxufVxuIiwiPHRhYmxlIGNsYXNzPVwie3snZ292dWstdGFibGUgJyArIGNsYXNzZXN9fVwiPlxuICA8Y2FwdGlvbiBjbGFzcz1cImdvdnVrLXRhYmxlX19jYXB0aW9uXCI+e3tjYXB0aW9uIHwgcnB4VHJhbnNsYXRlfX08L2NhcHRpb24+XG4gIDx0aGVhZCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkXCI+XG4gICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiPlxuICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlclwiICpuZ0lmPVwic2VsZWN0aW9uRW5hYmxlZFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZ292dWstY2hlY2tib3hlc19faXRlbVwiPlxuICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImdvdnVrLWNoZWNrYm94ZXNfX2lucHV0XCIgaWQ9XCJzZWxlY3QtYWxsXCIgbmFtZT1cInNlbGVjdC1hbGxcIiB0eXBlPVwiY2hlY2tib3hcIiAoY2hhbmdlKT1cInNlbGVjdEFsbCgpXCJcbiAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiYWxsT25QYWdlU2VsZWN0ZWQoKVwiIFtkaXNhYmxlZF09XCIhY2FuQW55QmVTaGFyZWQoKVwiIC8+XG4gICAgICAgICAgPCEtLSBUaGlzIGxhYmVsIGVsZW1lbnQgaXMgdXNlZCB0byBoaWRlIHRoZSBzdGFuZGFyZCBjaGVja2JveCB3aXRoIGEgZ292dWstc3R5bGVkIG9uZSAtLT5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJnb3Z1ay1sYWJlbCBnb3Z1ay1jaGVja2JveGVzX19sYWJlbFwiIGZvcj1cInNlbGVjdC1hbGxcIiBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiJ3NlbGVjdC1hbGwnXCI+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3RkPlxuICAgICAgPHRoIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlclwiIHNjb3BlPVwiY29sXCIgKm5nRm9yPVwibGV0IGggb2YgdGFibGVDb25maWcuY29sdW1uQ29uZmlnc1wiPnt7aC5oZWFkZXIgfCBycHhUcmFuc2xhdGV9fTwvdGg+XG4gICAgPC90cj5cbiAgPC90aGVhZD5cbiAgPHRib2R5IGNsYXNzPVwiZ292dWstdGFibGVfX2JvZHlcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjIG9mIGNhc2VzIHwgcGFnaW5hdGU6IHsgaXRlbXNQZXJQYWdlOiBwYWdlU2l6ZSwgY3VycmVudFBhZ2U6IGN1cnJlbnRQYWdlTm8sIHRvdGFsSXRlbXM6IHRvdGFsUmVzdWx0c0NvdW50IH1cIj5cbiAgICAgIDx0ciBkYXRhLXNlbGVjdG9yPVwidGFibGUtcm93XCIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fcm93XCI+XG4gICAgICAgIDx0ZCBkYXRhLXNlbGVjdG9yPVwidGFibGUtaGVhZGVyXCIgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyXCIgc2NvcGU9XCJyb3dcIiAqbmdJZj1cInNlbGVjdGlvbkVuYWJsZWRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ292dWstY2hlY2tib3hlc19faXRlbVwiPlxuICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZ292dWstY2hlY2tib3hlc19faW5wdXRcIiBpZD1cInNlbGVjdC17eyBjW3RhYmxlQ29uZmlnLmlkRmllbGRdIH19XCIgbmFtZT1cInNlbGVjdC17eyBjW3RhYmxlQ29uZmlnLmlkRmllbGRdIH19XCJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiIChjaGFuZ2UpPVwiY2hhbmdlU2VsZWN0aW9uKGMpXCIgW2NoZWNrZWRdPVwiaXNTZWxlY3RlZChjKVwiIFtkaXNhYmxlZF09XCIhY2FuQmVTaGFyZWQoYylcIiAoa2V5dXApPVwib25LZXlVcCgkZXZlbnQsIGMpXCIgLz5cbiAgICAgICAgICAgIDwhLS0gVGhpcyBsYWJlbCBlbGVtZW50IGlzIHVzZWQgdG8gaGlkZSB0aGUgc3RhbmRhcmQgY2hlY2tib3ggd2l0aCBhIGdvdnVrLXN0eWxlZCBvbmUgLS0+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJnb3Z1ay1sYWJlbCBnb3Z1ay1jaGVja2JveGVzX19sYWJlbFwiIGZvcj1cInNlbGVjdC17eyBjW3RhYmxlQ29uZmlnLmlkRmllbGRdIH19XCIgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIidzZWxlY3QtJyArIGNbdGFibGVDb25maWcuaWRGaWVsZF1cIj5cbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvdGQ+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbCBvZiB0YWJsZUNvbmZpZy5jb2x1bW5Db25maWdzOyBmaXJzdCBhcyBpc0ZpcnN0XCI+XG4gICAgICAgICAgPHRoIGRhdGEtc2VsZWN0b3I9XCJ0YWJsZS1oZWFkZXJcIiBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXJcIiBzY29wZT1cInJvd1wiICpuZ0lmPVwiaXNGaXJzdCAmJiBmaXJzdENlbGxJc0hlYWRlclwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjb2wudHlwZSB8fCBjb2wudHlwZSA9PT0gJ3RleHQnXCI+e3tjW2NvbC5rZXldIHwgcnB4VHJhbnNsYXRlfX08L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wudHlwZSA9PT0gJ2xpbmsnICYmIGMucm91dGVyTGlua1wiPlxuICAgICAgICAgICAgICA8YSBjbGFzcz1cImdvdnVrLWxpbmtcIiBbcm91dGVyTGlua109XCJjLnJvdXRlckxpbmtcIj57e2NbY29sLmtleV0gfCBycHhUcmFuc2xhdGV9fTwvYT5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgPHRkIGRhdGEtc2VsZWN0b3I9XCJ0YWJsZS1jZWxsXCIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbFwiICpuZ0lmPVwiIShpc0ZpcnN0ICYmIGZpcnN0Q2VsbElzSGVhZGVyKVwiIFtuZ1N3aXRjaF09XCJjb2w/LnR5cGVcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wudHlwZSA9PT0gJ2xpbmsnICYmIGMucm91dGVyTGlua1wiPlxuICAgICAgICAgICAgICA8YSBjbGFzcz1cImdvdnVrLWxpbmtcIiBbcm91dGVyTGlua109XCJjLnJvdXRlckxpbmtcIj57e2NbY29sLmtleV0gfCBycHhUcmFuc2xhdGV9fTwvYT5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ21vbmV5J1wiPi17eyBjW2NvbC5rZXldIHwgY3VycmVuY3k6J0dCUCcgfX08L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidkYXRlJ1wiPnt7Zm9ybWF0RGF0ZShjW2NvbC5rZXldKX19PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInZGF0ZUF0VGltZSdcIj57e2Zvcm1hdERhdGVBdFRpbWUoY1tjb2wua2V5XSl9fTwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hEZWZhdWx0Pnt7Y1tjb2wua2V5XSB8IHJweFRyYW5zbGF0ZX19PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L3RyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L3Rib2R5PlxuPC90YWJsZT5cbjxjY2QtcGFnaW5hdGlvbiAqbmdJZj1cInRvdGFsUmVzdWx0c0NvdW50ID4gcGFnZVNpemVcIlxuICAocGFnZUNoYW5nZSk9XCJnb1RvUGFnZSgkZXZlbnQpXCJcbj48L2NjZC1wYWdpbmF0aW9uPlxuIl19
373
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9jYXNlLWxpc3QvY2FzZS1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9jYXNlLWxpc3QvY2FzZS1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7Ozs7Ozs7Ozs7SUNJOUQsQUFERixBQURGLDZCQUF5RCxhQUNuQixnQkFFc0M7SUFEaUIsNktBQVUsa0JBQVcsS0FBQztJQUEvRyxpQkFDd0U7SUFFeEUsNEJBQ1E7SUFFWixBQURFLGlCQUFNLEVBQ0g7OztJQUxNLGVBQStCO0lBQUMsQUFBaEMsb0RBQStCLHNDQUErQjtJQUVELGNBQXFDOzs7O0lBSTdHLDhCQUF3RjtJQUFBLFlBQTJCOztJQUFBLGlCQUFLOzs7SUFBaEMsY0FBMkI7SUFBM0IsdURBQTJCOzs7O0lBUTdHLEFBREYsQUFERiw4QkFBa0csYUFDNUQsZ0JBRXdHO0lBQS9CLEFBQXJGLHVPQUFVLDRCQUFrQixLQUFDLDhOQUFpRSw0QkFBa0IsS0FBQztJQUR2SSxpQkFDMEk7SUFFMUksNEJBQ1E7SUFFWixBQURFLGlCQUFNLEVBQ0g7Ozs7OztJQU5zQyxlQUE2QztJQUE3Qyx3RkFBNkM7SUFBQywwRkFBK0M7SUFDdEQsQUFBMUIsaURBQXlC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bnRlbnQiOlsiaW1wb3J0IHsgZm9ybWF0RGF0ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQnJvd3NlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9icm93c2VyL2Jyb3dzZXIuc2VydmljZSc7XG5cbmV4cG9ydCBjbGFzcyBEYXRlVGltZUZvcm1hdFV0aWxzIHtcbiAgcHVibGljIHN0YXRpYyBmb3JtYXREYXRlQXRUaW1lKGRhdGU6IERhdGUsIGlzMjRIb3VyOiBib29sZWFuKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7Zm9ybWF0RGF0ZShkYXRlLCAnZGQgTU1NIHl5eXknLCAnZW4tR0InKX0gYXQgJHtEYXRlVGltZUZvcm1hdFV0aWxzLmZvcm1hdFRpbWUoZGF0ZSwgaXMyNEhvdXIpfWA7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGZvcm1hdFRpbWUoZGF0ZTogRGF0ZSwgaXMyNEhvdXI6IGJvb2xlYW4pOiBzdHJpbmcge1xuICAgIHJldHVybiBpczI0SG91ciA/IGZvcm1hdERhdGUoZGF0ZSwgJ0hIOm1tJywgJ2VuLUdCJykgOiBmb3JtYXREYXRlKGRhdGUsICdoOm1tIGEnLCAnZW4tR0InKS50b0xvd2VyQ2FzZSgpO1xuICB9XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NjZC1jYXNlLWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2FzZS1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2FzZS1saXN0LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQ2FzZUxpc3RDb21wb25lbnQge1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBjbGFzc2VzID0gJyc7XG5cbiAgQElucHV0KCkgcHVibGljIGNhcHRpb246IHN0cmluZztcbiAgQElucHV0KCkgcHVibGljIGZpcnN0Q2VsbElzSGVhZGVyID0gZmFsc2U7XG5cbiAgQElucHV0KCkgcHVibGljIGNhc2VzOiBvYmplY3RbXTtcblxuICBASW5wdXQoKSBwdWJsaWMgdGFibGVDb25maWc6IFRhYmxlQ29uZmlnID0ge1xuICAgIGlkRmllbGQ6ICdpZCcsXG4gICAgY29sdW1uQ29uZmlnczogW1xuICAgICAgeyBoZWFkZXI6ICdEYXRlJywga2V5OiAnZGF0ZScsIHR5cGU6ICd0ZXh0JyB9LFxuICAgICAgeyBoZWFkZXI6ICdBbW91bnQnLCBrZXk6ICdhbW91bnQnIH1cbiAgICBdXG4gIH07XG5cbiAgQElucHV0KCkgcHVibGljIHNlbGVjdGlvbkVuYWJsZWQgPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgcHVibGljIHNlbGVjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55W10+KCk7XG5cbiAgQElucHV0KCkgcHVibGljIHNlbGVjdGVkQ2FzZXM6IGFueVtdID0gW107XG5cbiAgQElucHV0KCkgcHVibGljIGN1cnJlbnRQYWdlTm86IG51bWJlcjtcblxuICBASW5wdXQoKSBwdWJsaWMgdG90YWxSZXN1bHRzQ291bnQ/OiBudW1iZXI7XG5cbiAgQElucHV0KCkgcHVibGljIHBhZ2VTaXplPzogbnVtYmVyO1xuXG4gIEBPdXRwdXQoKSBwdWJsaWMgcGFnZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGJyb3dzZXJTZXJ2aWNlOiBCcm93c2VyU2VydmljZSkgeyB9XG5cbiAgcHVibGljIGZvcm1hdERhdGUoZGF0ZTogRGF0ZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGRhdGUgPyBmb3JtYXREYXRlKGRhdGUsICdkZCBNTU0geXl5eScsICdlbi1HQicpIDogJy0nO1xuICB9XG5cbiAgcHVibGljIGZvcm1hdERhdGVBdFRpbWUoZGF0ZTogRGF0ZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGRhdGUgPyBEYXRlVGltZUZvcm1hdFV0aWxzLmZvcm1hdERhdGVBdFRpbWUoZGF0ZSwgZmFsc2UpIDogJy0nO1xuICB9XG5cbiAgcHVibGljIGNhbkJlU2hhcmVkKGM6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHVibGljIGNhbkFueUJlU2hhcmVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNhc2VzLnNvbWUoYyA9PiB0aGlzLmNhbkJlU2hhcmVkKGMpKTtcbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3RBbGwoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYWxsT25QYWdlU2VsZWN0ZWQoKSkge1xuICAgICAgLy8gQWxsIGNhc2VzIGFscmVhZHkgc2VsZWN0ZWQsIHNvIHVuc2VsZWN0IGFsbCBvbiB0aGlzIHBhZ2VcbiAgICAgIHRoaXMuc2VsZWN0ZWRDYXNlcyA9IFtdO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNhc2VzLmZvckVhY2goYUNhc2UgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuaXNTZWxlY3RlZChhQ2FzZSkgJiYgdGhpcy5jYW5CZVNoYXJlZChhQ2FzZSkpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkQ2FzZXMgPSBbLi4uIHRoaXMuc2VsZWN0ZWRDYXNlcywgYUNhc2VdO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5zZWxlY3Rpb24uZW1pdCh0aGlzLnNlbGVjdGVkQ2FzZXMpO1xuICB9XG5cbiAgcHVibGljIGNoYW5nZVNlbGVjdGlvbihhQ2FzZTogYW55KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNTZWxlY3RlZChhQ2FzZSkpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRDYXNlcy5mb3JFYWNoKChhU2VsZWN0ZWRDYXNlLCBpKSA9PiB7XG4gICAgICAgIGlmIChhQ2FzZS5jYXNlX2lkID09PSBhU2VsZWN0ZWRDYXNlLmNhc2VfaWQpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkQ2FzZXMgPSB0aGlzLnNlbGVjdGVkQ2FzZXMuc2xpY2UoMCwgaSkuY29uY2F0KHRoaXMuc2VsZWN0ZWRDYXNlcy5zbGljZShpICsgMSkpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuY2FuQmVTaGFyZWQoYUNhc2UpKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDYXNlcyA9IFsuLi50aGlzLnNlbGVjdGVkQ2FzZXMsIGFDYXNlXTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5zZWxlY3Rpb24uZW1pdCh0aGlzLnNlbGVjdGVkQ2FzZXMpO1xuICB9XG5cbiAgcHVibGljIGlzU2VsZWN0ZWQoYUNhc2U6IGFueSk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkQ2FzZXMpIHtcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMCwgbGVuZ3RoID0gdGhpcy5zZWxlY3RlZENhc2VzLmxlbmd0aDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgaWYgKGFDYXNlLmNhc2VfaWQgPT09IHRoaXMuc2VsZWN0ZWRDYXNlc1tpbmRleF0uY2FzZV9pZCkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBhbGxPblBhZ2VTZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuY2FzZXMuc29tZShhQ2FzZSA9PiAhdGhpcy5pc1NlbGVjdGVkKGFDYXNlKSk7XG4gIH1cblxuICBwdWJsaWMgb25LZXlVcCgkZXZlbnQ6IEtleWJvYXJkRXZlbnQsIGFDYXNlOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoJGV2ZW50LmtleSA9PT0gJ1NwYWNlJykge1xuICAgICAgaWYgKHRoaXMuYnJvd3NlclNlcnZpY2UuaXNGaXJlZm94IHx8IHRoaXMuYnJvd3NlclNlcnZpY2UuaXNTYWZhcmkgfHwgdGhpcy5icm93c2VyU2VydmljZS5pc0lFT3JFZGdlKSB7XG4gICAgICAgIHRoaXMuY2hhbmdlU2VsZWN0aW9uKGFDYXNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ29Ub1BhZ2UocGFnZU51bWJlcjogbnVtYmVyKSB7XG4gICAgdGhpcy5jdXJyZW50UGFnZU5vID0gcGFnZU51bWJlcjtcbiAgICB0aGlzLnBhZ2VDaGFuZ2UuZW1pdChwYWdlTnVtYmVyKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVGFibGVDb2x1bW5Db25maWcge1xuICBwdWJsaWMgaGVhZGVyOiBzdHJpbmc7XG4gIHB1YmxpYyBrZXk6IHN0cmluZztcbiAgcHVibGljIHR5cGU/OiBzdHJpbmc7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuaGVhZGVyID0gJyc7XG4gICAgdGhpcy5rZXkgPSAnJztcbiAgICB0aGlzLnR5cGUgPSAndGV4dCc7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFRhYmxlQ29uZmlnIHtcbiAgLy8gU3BlY2lmaWVzIHdoaWNoIGZpZWxkIG9mIGFuIGl0ZW0gdW5pcXVlbHkgaWRlbnRpZmllcyBpdCBhbW9uZyBvdGhlcnMgb2YgdGhlIHNhbWUgdHlwZVxuICBwdWJsaWMgaWRGaWVsZDogc3RyaW5nO1xuXG4gIHB1YmxpYyBjb2x1bW5Db25maWdzOiBUYWJsZUNvbHVtbkNvbmZpZ1tdO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuaWRGaWVsZCA9ICcnO1xuICAgIHRoaXMuY29sdW1uQ29uZmlncyA9IFtdO1xuICB9XG59XG4iLCI8dGFibGUgY2xhc3M9XCJ7eydnb3Z1ay10YWJsZSAnICsgY2xhc3Nlc319XCI+XG4gIDxjYXB0aW9uIGNsYXNzPVwiZ292dWstdGFibGVfX2NhcHRpb25cIj57e2NhcHRpb24gfCBycHhUcmFuc2xhdGV9fTwvY2FwdGlvbj5cbiAgPHRoZWFkIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRcIj5cbiAgICA8dHIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fcm93XCI+XG4gICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyXCIgKm5nSWY9XCJzZWxlY3Rpb25FbmFibGVkXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1jaGVja2JveGVzX19pdGVtXCI+XG4gICAgICAgICAgPGlucHV0IGNsYXNzPVwiZ292dWstY2hlY2tib3hlc19faW5wdXRcIiBpZD1cInNlbGVjdC1hbGxcIiBuYW1lPVwic2VsZWN0LWFsbFwiIHR5cGU9XCJjaGVja2JveFwiIChjaGFuZ2UpPVwic2VsZWN0QWxsKClcIlxuICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJhbGxPblBhZ2VTZWxlY3RlZCgpXCIgW2Rpc2FibGVkXT1cIiFjYW5BbnlCZVNoYXJlZCgpXCIgLz5cbiAgICAgICAgICA8IS0tIFRoaXMgbGFiZWwgZWxlbWVudCBpcyB1c2VkIHRvIGhpZGUgdGhlIHN0YW5kYXJkIGNoZWNrYm94IHdpdGggYSBnb3Z1ay1zdHlsZWQgb25lIC0tPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImdvdnVrLWxhYmVsIGdvdnVrLWNoZWNrYm94ZXNfX2xhYmVsXCIgZm9yPVwic2VsZWN0LWFsbFwiIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCInc2VsZWN0LWFsbCdcIj5cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvdGQ+XG4gICAgICA8dGggY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyXCIgc2NvcGU9XCJjb2xcIiAqbmdGb3I9XCJsZXQgaCBvZiB0YWJsZUNvbmZpZy5jb2x1bW5Db25maWdzXCI+e3toLmhlYWRlciB8IHJweFRyYW5zbGF0ZX19PC90aD5cbiAgICA8L3RyPlxuICA8L3RoZWFkPlxuICA8dGJvZHkgY2xhc3M9XCJnb3Z1ay10YWJsZV9fYm9keVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGMgb2YgY2FzZXMgfCBwYWdpbmF0ZTogeyBpdGVtc1BlclBhZ2U6IHBhZ2VTaXplLCBjdXJyZW50UGFnZTogY3VycmVudFBhZ2VObywgdG90YWxJdGVtczogdG90YWxSZXN1bHRzQ291bnQgfTsgIGluZGV4IGFzIGlcIj5cbiAgICAgIDx0ciBkYXRhLXNlbGVjdG9yPVwidGFibGUtcm93XCIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fcm93XCI+XG4gICAgICAgIDx0ZCBkYXRhLXNlbGVjdG9yPVwidGFibGUtaGVhZGVyXCIgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyXCIgc2NvcGU9XCJyb3dcIiAqbmdJZj1cInNlbGVjdGlvbkVuYWJsZWRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ292dWstY2hlY2tib3hlc19faXRlbVwiPlxuICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZ292dWstY2hlY2tib3hlc19faW5wdXRcIiBpZD1cInNlbGVjdC17eyBjW3RhYmxlQ29uZmlnLmlkRmllbGRdIHx8IGkgfX1cIiBuYW1lPVwic2VsZWN0LXt7IGNbdGFibGVDb25maWcuaWRGaWVsZF0gfHwgaSB9fVwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIiAoY2hhbmdlKT1cImNoYW5nZVNlbGVjdGlvbihjKVwiIFtjaGVja2VkXT1cImlzU2VsZWN0ZWQoYylcIiBbZGlzYWJsZWRdPVwiIWNhbkJlU2hhcmVkKGMpXCIgKGtleXVwKT1cIm9uS2V5VXAoJGV2ZW50LCBjKVwiIC8+XG4gICAgICAgICAgICA8IS0tIFRoaXMgbGFiZWwgZWxlbWVudCBpcyB1c2VkIHRvIGhpZGUgdGhlIHN0YW5kYXJkIGNoZWNrYm94IHdpdGggYSBnb3Z1ay1zdHlsZWQgb25lIC0tPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZ292dWstbGFiZWwgZ292dWstY2hlY2tib3hlc19fbGFiZWxcIiBmb3I9XCJzZWxlY3Qte3sgY1t0YWJsZUNvbmZpZy5pZEZpZWxkXSB8fCBpIH19XCIgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIidzZWxlY3QtJyArIChjW3RhYmxlQ29uZmlnLmlkRmllbGRdIHx8IGkpXCI+XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3RkPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2wgb2YgdGFibGVDb25maWcuY29sdW1uQ29uZmlnczsgZmlyc3QgYXMgaXNGaXJzdFwiPlxuICAgICAgICAgIDx0aCBkYXRhLXNlbGVjdG9yPVwidGFibGUtaGVhZGVyXCIgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyXCIgc2NvcGU9XCJyb3dcIiAqbmdJZj1cImlzRmlyc3QgJiYgZmlyc3RDZWxsSXNIZWFkZXJcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY29sLnR5cGUgfHwgY29sLnR5cGUgPT09ICd0ZXh0J1wiPnt7Y1tjb2wua2V5XSB8IHJweFRyYW5zbGF0ZX19PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT09ICdsaW5rJyAmJiBjLnJvdXRlckxpbmtcIj5cbiAgICAgICAgICAgICAgPGEgY2xhc3M9XCJnb3Z1ay1saW5rXCIgW3JvdXRlckxpbmtdPVwiYy5yb3V0ZXJMaW5rXCI+e3tjW2NvbC5rZXldIHwgcnB4VHJhbnNsYXRlfX08L2E+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L3RoPlxuICAgICAgICAgIDx0ZCBkYXRhLXNlbGVjdG9yPVwidGFibGUtY2VsbFwiIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGxcIiAqbmdJZj1cIiEoaXNGaXJzdCAmJiBmaXJzdENlbGxJc0hlYWRlcilcIiBbbmdTd2l0Y2hdPVwiY29sPy50eXBlXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT09ICdsaW5rJyAmJiBjLnJvdXRlckxpbmtcIj5cbiAgICAgICAgICAgICAgPGEgY2xhc3M9XCJnb3Z1ay1saW5rXCIgW3JvdXRlckxpbmtdPVwiYy5yb3V0ZXJMaW5rXCI+e3tjW2NvbC5rZXldIHwgcnB4VHJhbnNsYXRlfX08L2E+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidtb25leSdcIj4te3sgY1tjb2wua2V5XSB8IGN1cnJlbmN5OidHQlAnIH19PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInZGF0ZSdcIj57e2Zvcm1hdERhdGUoY1tjb2wua2V5XSl9fTwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2RhdGVBdFRpbWUnXCI+e3tmb3JtYXREYXRlQXRUaW1lKGNbY29sLmtleV0pfX08L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoRGVmYXVsdD57e2NbY29sLmtleV0gfCBycHhUcmFuc2xhdGV9fTwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvdGQ+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC90cj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC90Ym9keT5cbjwvdGFibGU+XG48Y2NkLXBhZ2luYXRpb24gKm5nSWY9XCJ0b3RhbFJlc3VsdHNDb3VudCA+IHBhZ2VTaXplXCJcbiAgKHBhZ2VDaGFuZ2UpPVwiZ29Ub1BhZ2UoJGV2ZW50KVwiXG4+PC9jY2QtcGFnaW5hdGlvbj5cbiJdfQ==
@@ -54,13 +54,6 @@ export class CaseFileViewOverlayMenuComponent {
54
54
  menuItems;
55
55
  isOpen = false;
56
56
  isOpenChange = new EventEmitter();
57
- setOpen() {
58
- this.isOpen = !this.isOpen;
59
- if (this.isOpen) {
60
- const firstFocusableElement = document.querySelector('.overlay-menu > span:first-child');
61
- firstFocusableElement.focus();
62
- }
63
- }
64
57
  closeOverlay() {
65
58
  const isOpen = false;
66
59
  this.isOpen = isOpen;
@@ -75,7 +68,7 @@ export class CaseFileViewOverlayMenuComponent {
75
68
  const _r1 = i0.ɵɵgetCurrentView();
76
69
  i0.ɵɵprojectionDef(_c0);
77
70
  i0.ɵɵelementStart(0, "div")(1, "button", 1, 0);
78
- i0.ɵɵlistener("click", function CaseFileViewOverlayMenuComponent_Template_button_click_1_listener($event) { i0.ɵɵrestoreView(_r1); $event.stopPropagation(); return i0.ɵɵresetView(ctx.setOpen()); });
71
+ i0.ɵɵlistener("click", function CaseFileViewOverlayMenuComponent_Template_button_click_1_listener($event) { i0.ɵɵrestoreView(_r1); $event.stopPropagation(); return i0.ɵɵresetView(ctx.isOpen = !ctx.isOpen); });
79
72
  i0.ɵɵprojection(3);
80
73
  i0.ɵɵelementEnd();
81
74
  i0.ɵɵtemplate(4, CaseFileViewOverlayMenuComponent_ng_template_4_Template, 3, 2, "ng-template", 2);
@@ -89,7 +82,7 @@ export class CaseFileViewOverlayMenuComponent {
89
82
  }
90
83
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CaseFileViewOverlayMenuComponent, [{
91
84
  type: Component,
92
- args: [{ selector: 'ccd-case-file-view-overlay-menu', template: "<div>\n <button type=\"button\" class=\"overlay-toggle\"\n (click)=\"$event.stopPropagation(); setOpen()\"\n cdkOverlayOrigin #trigger=\"cdkOverlayOrigin\">\n <ng-content select=\"[trigger]\"></ng-content>\n </button>\n\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isOpen\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n [cdkConnectedOverlayBackdropClass]=\"'cdk-overlay-transparent-backdrop'\"\n (backdropClick)=\"closeOverlay()\"\n >\n <div class=\"overlay-menu\">\n <ng-container *ngIf=\"title\">\n <div class=\"overlay-menu__title\">{{title}}</div>\n </ng-container>\n\n <menu *ngFor=\"let item of menuItems\">\n <li class=\"overlay-menu__item\" (click)=\"item.actionFn(); closeOverlay();\" (keyup)=\"$event.key === 'Enter' ? actionAndClose(item.actionFn()) : null\">\n <img *ngIf=\"item.iconSrc\" [src]=\"item.iconSrc\" class=\"overlay-menu__itemIcon\" alt=\"{{title}} icon'\" />\n <span class=\"overlay-menu__actionText\">{{item.actionText}}</span>\n </li>\n </menu>\n </div>\n </ng-template>\n</div>\n", styles: [".overlay-toggle{display:block;background:none;border:0;padding:0 6px;margin-right:-4px;cursor:pointer}.overlay-menu{background-color:#fafafa;border:1px solid grey;margin-top:8px;font-size:1rem}.overlay-menu__title,.overlay-menu__item{padding:10px;border-bottom:1px solid grey}.overlay-menu__title:last-child,.overlay-menu__item:last-child{border:none}.overlay-menu__title{padding-left:6px;padding-right:6px}.overlay-menu__item{display:flex;align-items:center;cursor:pointer;font-size:.875em}.overlay-menu__item:hover{background-color:#fff2cc}.overlay-menu__itemIcon{height:1.25em;width:1.25em;margin-right:6px}\n"] }]
85
+ args: [{ selector: 'ccd-case-file-view-overlay-menu', template: "<div>\n <button type=\"button\" class=\"overlay-toggle\"\n (click)=\"$event.stopPropagation(); isOpen = !isOpen\"\n cdkOverlayOrigin #trigger=\"cdkOverlayOrigin\">\n <ng-content select=\"[trigger]\"></ng-content>\n </button>\n\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isOpen\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n [cdkConnectedOverlayBackdropClass]=\"'cdk-overlay-transparent-backdrop'\"\n (backdropClick)=\"closeOverlay()\"\n >\n <div class=\"overlay-menu\">\n <ng-container *ngIf=\"title\">\n <div class=\"overlay-menu__title\">{{title}}</div>\n </ng-container>\n\n <menu *ngFor=\"let item of menuItems\">\n <li class=\"overlay-menu__item\" (click)=\"item.actionFn(); closeOverlay();\" (keyup)=\"$event.key === 'Enter' ? actionAndClose(item.actionFn()) : null\">\n <img *ngIf=\"item.iconSrc\" [src]=\"item.iconSrc\" class=\"overlay-menu__itemIcon\" alt=\"{{title}} icon'\" />\n <span class=\"overlay-menu__actionText\">{{item.actionText}}</span>\n </li>\n </menu>\n </div>\n </ng-template>\n</div>\n", styles: [".overlay-toggle{display:block;background:none;border:0;padding:0 6px;margin-right:-4px;cursor:pointer}.overlay-menu{background-color:#fafafa;border:1px solid grey;margin-top:8px;font-size:1rem}.overlay-menu__title,.overlay-menu__item{padding:10px;border-bottom:1px solid grey}.overlay-menu__title:last-child,.overlay-menu__item:last-child{border:none}.overlay-menu__title{padding-left:6px;padding-right:6px}.overlay-menu__item{display:flex;align-items:center;cursor:pointer;font-size:.875em}.overlay-menu__item:hover{background-color:#fff2cc}.overlay-menu__itemIcon{height:1.25em;width:1.25em;margin-right:6px}\n"] }]
93
86
  }], null, { title: [{
94
87
  type: Input
95
88
  }], menuItems: [{
@@ -100,4 +93,4 @@ export class CaseFileViewOverlayMenuComponent {
100
93
  type: Output
101
94
  }] }); })();
102
95
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CaseFileViewOverlayMenuComponent, { className: "CaseFileViewOverlayMenuComponent", filePath: "lib/shared/components/palette/case-file-view/components/shared/case-file-view-overlay-menu/case-file-view-overlay-menu.component.ts", lineNumber: 9 }); })();
103
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1maWxlLXZpZXctb3ZlcmxheS1tZW51LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9wYWxldHRlL2Nhc2UtZmlsZS12aWV3L2NvbXBvbmVudHMvc2hhcmVkL2Nhc2UtZmlsZS12aWV3LW92ZXJsYXktbWVudS9jYXNlLWZpbGUtdmlldy1vdmVybGF5LW1lbnUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvY2FzZS1maWxlLXZpZXcvY29tcG9uZW50cy9zaGFyZWQvY2FzZS1maWxlLXZpZXctb3ZlcmxheS1tZW51L2Nhc2UtZmlsZS12aWV3LW92ZXJsYXktbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7O0lDZ0JqRSw2QkFBNEI7SUFDMUIsOEJBQWlDO0lBQUEsWUFBUztJQUFBLGlCQUFNOzs7O0lBQWYsZUFBUztJQUFULGtDQUFTOzs7SUFLeEMsMEJBQXNHOzs7O0lBQXhCLDREQUFxQjtJQUF6RSx1REFBb0I7Ozs7SUFEaEQsQUFERiw0QkFBcUMsWUFDaUg7SUFBMUUsQUFBM0MsNE1BQVMsa0JBQWUsd0JBQUUscUJBQWMsS0FBRSwwT0FBeUIsT0FBTyxHQUFHLHNCQUFlLGtCQUFlLENBQUMsR0FBRyxJQUFJLEtBQUM7SUFDakosc0dBQXNHO0lBQ3RHLCtCQUF1QztJQUFBLFlBQW1CO0lBRTlELEFBREUsQUFENEQsaUJBQU8sRUFDOUQsRUFDQTs7O0lBSEcsZUFBa0I7SUFBbEIsc0NBQWtCO0lBQ2UsZUFBbUI7SUFBbkIsd0NBQW1COzs7SUFSaEUsOEJBQTBCO0lBS3hCLEFBSkEsaUhBQTRCLG9GQUlTO0lBTXZDLGlCQUFNOzs7SUFWVyxjQUFXO0lBQVgsbUNBQVc7SUFJSCxjQUFZO0lBQVosMENBQVk7O0FEWnpDLE1BQU0sT0FBTyxnQ0FBZ0M7SUFDM0IsS0FBSyxHQUFXLEVBQUUsQ0FBQztJQUNuQixTQUFTLENBQWdDO0lBRXpDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDZCxZQUFZLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztJQUVyRCxPQUFPO1FBQ1osSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDM0IsSUFBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDaEIsTUFBTSxxQkFBcUIsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLGtDQUFrQyxDQUFnQixDQUFDO1lBQ3hHLHFCQUFxQixDQUFDLEtBQUssRUFBRSxDQUFDO1FBQy9CLENBQUM7SUFDSCxDQUFDO0lBRU0sWUFBWTtRQUNqQixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFFckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVNLGNBQWMsQ0FBQyxJQUFTO1FBQzdCLElBQUksRUFBRSxDQUFDO1FBQ1AsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7MEZBekJVLGdDQUFnQzs2REFBaEMsZ0NBQWdDOzs7WUNQM0MsQUFERiwyQkFBSyxtQkFHa0Q7WUFEN0MsbUlBQVMsd0JBQXdCLHdCQUFFLGFBQVMsS0FBQztZQUVuRCxrQkFBNEM7WUFDOUMsaUJBQVM7WUFFVCxpR0FPQztZQURDLHdLQUFpQixrQkFBYyxLQUFDO1lBZXBDLGlCQUFNOzs7WUFuQkYsZUFBcUM7WUFHckMsQUFEQSxBQURBLEFBREEsc0RBQXFDLHVDQUNILHdDQUNLLHdFQUNnQzs7O2lGREo5RCxnQ0FBZ0M7Y0FMNUMsU0FBUzsyQkFDRSxpQ0FBaUM7Z0JBSzNCLEtBQUs7a0JBQXBCLEtBQUs7WUFDVSxTQUFTO2tCQUF4QixLQUFLO1lBRVUsTUFBTTtrQkFBckIsS0FBSztZQUNXLFlBQVk7a0JBQTVCLE1BQU07O2tGQUxJLGdDQUFnQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDYXNlRmlsZVZpZXdPdmVybGF5TWVudUl0ZW0gfSBmcm9tICcuL2Nhc2UtZmlsZS12aWV3LW92ZXJsYXktbWVudS1pdGVtLm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2NkLWNhc2UtZmlsZS12aWV3LW92ZXJsYXktbWVudScsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYXNlLWZpbGUtdmlldy1vdmVybGF5LW1lbnUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jYXNlLWZpbGUtdmlldy1vdmVybGF5LW1lbnUuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBDYXNlRmlsZVZpZXdPdmVybGF5TWVudUNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHB1YmxpYyB0aXRsZTogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHB1YmxpYyBtZW51SXRlbXM6IENhc2VGaWxlVmlld092ZXJsYXlNZW51SXRlbVtdO1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBpc09wZW4gPSBmYWxzZTtcbiAgQE91dHB1dCgpIHB1YmxpYyBpc09wZW5DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgcHVibGljIHNldE9wZW4oKSB7XG4gICAgdGhpcy5pc09wZW4gPSAhdGhpcy5pc09wZW47XG4gICAgaWYodGhpcy5pc09wZW4pIHtcbiAgICAgY29uc3QgZmlyc3RGb2N1c2FibGVFbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLm92ZXJsYXktbWVudSA+IHNwYW46Zmlyc3QtY2hpbGQnKSBhcyBIVE1MRWxlbWVudDtcbiAgICAgZmlyc3RGb2N1c2FibGVFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNsb3NlT3ZlcmxheSgpOiB2b2lkIHtcbiAgICBjb25zdCBpc09wZW4gPSBmYWxzZTtcblxuICAgIHRoaXMuaXNPcGVuID0gaXNPcGVuO1xuICAgIHRoaXMuaXNPcGVuQ2hhbmdlLmVtaXQoaXNPcGVuKTtcbiAgfVxuXG4gIHB1YmxpYyBhY3Rpb25BbmRDbG9zZShmdW5jOiBhbnkpOiB2b2lkIHtcbiAgICBmdW5jKCk7XG4gICAgdGhpcy5jbG9zZU92ZXJsYXkoKTtcbiAgfVxufVxuIiwiPGRpdj5cbiAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJvdmVybGF5LXRvZ2dsZVwiXG4gICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgc2V0T3BlbigpXCJcbiAgICAgICAgICBjZGtPdmVybGF5T3JpZ2luICN0cmlnZ2VyPVwiY2RrT3ZlcmxheU9yaWdpblwiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlt0cmlnZ2VyXVwiPjwvbmctY29udGVudD5cbiAgPC9idXR0b24+XG5cbiAgPG5nLXRlbXBsYXRlXG4gICAgY2RrQ29ubmVjdGVkT3ZlcmxheVxuICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5T3JpZ2luXT1cInRyaWdnZXJcIlxuICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5T3Blbl09XCJpc09wZW5cIlxuICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5SGFzQmFja2Ryb3BdPVwidHJ1ZVwiXG4gICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlCYWNrZHJvcENsYXNzXT1cIidjZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcCdcIlxuICAgIChiYWNrZHJvcENsaWNrKT1cImNsb3NlT3ZlcmxheSgpXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJvdmVybGF5LW1lbnVcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0aXRsZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwib3ZlcmxheS1tZW51X190aXRsZVwiPnt7dGl0bGV9fTwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxtZW51ICpuZ0Zvcj1cImxldCBpdGVtIG9mIG1lbnVJdGVtc1wiPlxuICAgICAgICA8bGkgY2xhc3M9XCJvdmVybGF5LW1lbnVfX2l0ZW1cIiAoY2xpY2spPVwiaXRlbS5hY3Rpb25GbigpOyBjbG9zZU92ZXJsYXkoKTtcIiAoa2V5dXApPVwiJGV2ZW50LmtleSA9PT0gJ0VudGVyJyA/IGFjdGlvbkFuZENsb3NlKGl0ZW0uYWN0aW9uRm4oKSkgOiBudWxsXCI+XG4gICAgICAgICAgPGltZyAqbmdJZj1cIml0ZW0uaWNvblNyY1wiIFtzcmNdPVwiaXRlbS5pY29uU3JjXCIgY2xhc3M9XCJvdmVybGF5LW1lbnVfX2l0ZW1JY29uXCIgYWx0PVwie3t0aXRsZX19IGljb24nXCIgLz5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm92ZXJsYXktbWVudV9fYWN0aW9uVGV4dFwiPnt7aXRlbS5hY3Rpb25UZXh0fX08L3NwYW4+XG4gICAgICAgIDwvbGk+XG4gICAgICA8L21lbnU+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG48L2Rpdj5cbiJdfQ==
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1maWxlLXZpZXctb3ZlcmxheS1tZW51LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9wYWxldHRlL2Nhc2UtZmlsZS12aWV3L2NvbXBvbmVudHMvc2hhcmVkL2Nhc2UtZmlsZS12aWV3LW92ZXJsYXktbWVudS9jYXNlLWZpbGUtdmlldy1vdmVybGF5LW1lbnUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvY2FzZS1maWxlLXZpZXcvY29tcG9uZW50cy9zaGFyZWQvY2FzZS1maWxlLXZpZXctb3ZlcmxheS1tZW51L2Nhc2UtZmlsZS12aWV3LW92ZXJsYXktbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7O0lDZ0JqRSw2QkFBNEI7SUFDMUIsOEJBQWlDO0lBQUEsWUFBUztJQUFBLGlCQUFNOzs7O0lBQWYsZUFBUztJQUFULGtDQUFTOzs7SUFLeEMsMEJBQXNHOzs7O0lBQXhCLDREQUFxQjtJQUF6RSx1REFBb0I7Ozs7SUFEaEQsQUFERiw0QkFBcUMsWUFDaUg7SUFBMUUsQUFBM0MsNE1BQVMsa0JBQWUsd0JBQUUscUJBQWMsS0FBRSwwT0FBeUIsT0FBTyxHQUFHLHNCQUFlLGtCQUFlLENBQUMsR0FBRyxJQUFJLEtBQUM7SUFDakosc0dBQXNHO0lBQ3RHLCtCQUF1QztJQUFBLFlBQW1CO0lBRTlELEFBREUsQUFENEQsaUJBQU8sRUFDOUQsRUFDQTs7O0lBSEcsZUFBa0I7SUFBbEIsc0NBQWtCO0lBQ2UsZUFBbUI7SUFBbkIsd0NBQW1COzs7SUFSaEUsOEJBQTBCO0lBS3hCLEFBSkEsaUhBQTRCLG9GQUlTO0lBTXZDLGlCQUFNOzs7SUFWVyxjQUFXO0lBQVgsbUNBQVc7SUFJSCxjQUFZO0lBQVosMENBQVk7O0FEWnpDLE1BQU0sT0FBTyxnQ0FBZ0M7SUFDM0IsS0FBSyxHQUFXLEVBQUUsQ0FBQztJQUNuQixTQUFTLENBQWdDO0lBRXpDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDZCxZQUFZLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztJQUVyRCxZQUFZO1FBQ2pCLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQztRQUVyQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRU0sY0FBYyxDQUFDLElBQVM7UUFDN0IsSUFBSSxFQUFFLENBQUM7UUFDUCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQzswRkFqQlUsZ0NBQWdDOzZEQUFoQyxnQ0FBZ0M7OztZQ1AzQyxBQURGLDJCQUFLLG1CQUdrRDtZQUQ3QyxtSUFBUyx3QkFBd0IscURBQW1CO1lBRTFELGtCQUE0QztZQUM5QyxpQkFBUztZQUVULGlHQU9DO1lBREMsd0tBQWlCLGtCQUFjLEtBQUM7WUFlcEMsaUJBQU07OztZQW5CRixlQUFxQztZQUdyQyxBQURBLEFBREEsQUFEQSxzREFBcUMsdUNBQ0gsd0NBQ0ssd0VBQ2dDOzs7aUZESjlELGdDQUFnQztjQUw1QyxTQUFTOzJCQUNFLGlDQUFpQztnQkFLM0IsS0FBSztrQkFBcEIsS0FBSztZQUNVLFNBQVM7a0JBQXhCLEtBQUs7WUFFVSxNQUFNO2tCQUFyQixLQUFLO1lBQ1csWUFBWTtrQkFBNUIsTUFBTTs7a0ZBTEksZ0NBQWdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENhc2VGaWxlVmlld092ZXJsYXlNZW51SXRlbSB9IGZyb20gJy4vY2FzZS1maWxlLXZpZXctb3ZlcmxheS1tZW51LWl0ZW0ubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjY2QtY2FzZS1maWxlLXZpZXctb3ZlcmxheS1tZW51JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Nhc2UtZmlsZS12aWV3LW92ZXJsYXktbWVudS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Nhc2UtZmlsZS12aWV3LW92ZXJsYXktbWVudS5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIENhc2VGaWxlVmlld092ZXJsYXlNZW51Q29tcG9uZW50IHtcbiAgQElucHV0KCkgcHVibGljIHRpdGxlOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgcHVibGljIG1lbnVJdGVtczogQ2FzZUZpbGVWaWV3T3ZlcmxheU1lbnVJdGVtW107XG5cbiAgQElucHV0KCkgcHVibGljIGlzT3BlbiA9IGZhbHNlO1xuICBAT3V0cHV0KCkgcHVibGljIGlzT3BlbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBwdWJsaWMgY2xvc2VPdmVybGF5KCk6IHZvaWQge1xuICAgIGNvbnN0IGlzT3BlbiA9IGZhbHNlO1xuXG4gICAgdGhpcy5pc09wZW4gPSBpc09wZW47XG4gICAgdGhpcy5pc09wZW5DaGFuZ2UuZW1pdChpc09wZW4pO1xuICB9XG5cbiAgcHVibGljIGFjdGlvbkFuZENsb3NlKGZ1bmM6IGFueSk6IHZvaWQge1xuICAgIGZ1bmMoKTtcbiAgICB0aGlzLmNsb3NlT3ZlcmxheSgpO1xuICB9XG59XG4iLCI8ZGl2PlxuICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cIm92ZXJsYXktdG9nZ2xlXCJcbiAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyBpc09wZW4gPSAhaXNPcGVuXCJcbiAgICAgICAgICBjZGtPdmVybGF5T3JpZ2luICN0cmlnZ2VyPVwiY2RrT3ZlcmxheU9yaWdpblwiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlt0cmlnZ2VyXVwiPjwvbmctY29udGVudD5cbiAgPC9idXR0b24+XG5cbiAgPG5nLXRlbXBsYXRlXG4gICAgY2RrQ29ubmVjdGVkT3ZlcmxheVxuICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5T3JpZ2luXT1cInRyaWdnZXJcIlxuICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5T3Blbl09XCJpc09wZW5cIlxuICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5SGFzQmFja2Ryb3BdPVwidHJ1ZVwiXG4gICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlCYWNrZHJvcENsYXNzXT1cIidjZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcCdcIlxuICAgIChiYWNrZHJvcENsaWNrKT1cImNsb3NlT3ZlcmxheSgpXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJvdmVybGF5LW1lbnVcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0aXRsZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwib3ZlcmxheS1tZW51X190aXRsZVwiPnt7dGl0bGV9fTwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxtZW51ICpuZ0Zvcj1cImxldCBpdGVtIG9mIG1lbnVJdGVtc1wiPlxuICAgICAgICA8bGkgY2xhc3M9XCJvdmVybGF5LW1lbnVfX2l0ZW1cIiAoY2xpY2spPVwiaXRlbS5hY3Rpb25GbigpOyBjbG9zZU92ZXJsYXkoKTtcIiAoa2V5dXApPVwiJGV2ZW50LmtleSA9PT0gJ0VudGVyJyA/IGFjdGlvbkFuZENsb3NlKGl0ZW0uYWN0aW9uRm4oKSkgOiBudWxsXCI+XG4gICAgICAgICAgPGltZyAqbmdJZj1cIml0ZW0uaWNvblNyY1wiIFtzcmNdPVwiaXRlbS5pY29uU3JjXCIgY2xhc3M9XCJvdmVybGF5LW1lbnVfX2l0ZW1JY29uXCIgYWx0PVwie3t0aXRsZX19IGljb24nXCIgLz5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm92ZXJsYXktbWVudV9fYWN0aW9uVGV4dFwiPnt7aXRlbS5hY3Rpb25UZXh0fX08L3NwYW4+XG4gICAgICAgIDwvbGk+XG4gICAgICA8L21lbnU+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG48L2Rpdj5cbiJdfQ==
@@ -11,15 +11,17 @@ function ReadComplexFieldCollectionTableComponent_th_10_Template(rf, ctx) { if (
11
11
  i0.ɵɵpipe(3, "rpxTranslate");
12
12
  i0.ɵɵelementEnd();
13
13
  i0.ɵɵelementStart(4, "a", 9);
14
- i0.ɵɵlistener("click", function ReadComplexFieldCollectionTableComponent_th_10_Template_a_click_4_listener() { const heading_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.sortRowsByColumns(heading_r2)); });
14
+ i0.ɵɵpipe(5, "rpxTranslate");
15
+ i0.ɵɵlistener("click", function ReadComplexFieldCollectionTableComponent_th_10_Template_a_click_4_listener() { const heading_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.sortRowsByColumns(heading_r2)); })("keyup.enter", function ReadComplexFieldCollectionTableComponent_th_10_Template_a_keyup_enter_4_listener() { const heading_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.sortRowsByColumns(heading_r2)); });
15
16
  i0.ɵɵelementEnd()();
16
17
  } if (rf & 2) {
17
18
  const heading_r2 = ctx.$implicit;
18
19
  const ctx_r2 = i0.ɵɵnextContext();
19
20
  i0.ɵɵadvance(2);
20
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 2, ctx_r2.columnsAllLabels[heading_r2].label));
21
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 3, ctx_r2.columnsAllLabels[heading_r2].label));
21
22
  i0.ɵɵadvance(2);
22
23
  i0.ɵɵproperty("innerHTML", ctx_r2.sortWidget(ctx_r2.columnsAllLabels[heading_r2]), i0.ɵɵsanitizeHtml);
24
+ i0.ɵɵattribute("aria-label", i0.ɵɵpipeBind1(5, 5, "Sort " + ctx_r2.columnsAllLabels[heading_r2].label));
23
25
  } }
24
26
  function ReadComplexFieldCollectionTableComponent_ng_container_12_ng_container_2_div_2_Template(rf, ctx) { if (rf & 1) {
25
27
  i0.ɵɵelementStart(0, "div");
@@ -168,7 +170,7 @@ function ReadComplexFieldCollectionTableComponent_ng_container_12_Template(rf, c
168
170
  const _r4 = i0.ɵɵgetCurrentView();
169
171
  i0.ɵɵelementContainerStart(0);
170
172
  i0.ɵɵelementStart(1, "tr", 10);
171
- i0.ɵɵlistener("click", function ReadComplexFieldCollectionTableComponent_ng_container_12_Template_tr_click_1_listener() { const i_r5 = i0.ɵɵrestoreView(_r4).index; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView((ctx_r2.isHidden[i_r5] = !ctx_r2.isHidden[i_r5])); });
173
+ i0.ɵɵlistener("keyup", function ReadComplexFieldCollectionTableComponent_ng_container_12_Template_tr_keyup_1_listener($event) { const i_r5 = i0.ɵɵrestoreView(_r4).index; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView($event.key === "Enter" ? (ctx_r2.isHidden[i_r5] = !ctx_r2.isHidden[i_r5]) : null); })("click", function ReadComplexFieldCollectionTableComponent_ng_container_12_Template_tr_click_1_listener() { const i_r5 = i0.ɵɵrestoreView(_r4).index; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView((ctx_r2.isHidden[i_r5] = !ctx_r2.isHidden[i_r5])); });
172
174
  i0.ɵɵtemplate(2, ReadComplexFieldCollectionTableComponent_ng_container_12_ng_container_2_Template, 5, 2, "ng-container", 7);
173
175
  i0.ɵɵelementStart(3, "td")(4, "div", 11)(5, "a", 12);
174
176
  i0.ɵɵelement(6, "img", 13);
@@ -347,7 +349,7 @@ export class ReadComplexFieldCollectionTableComponent extends AbstractFieldReadC
347
349
  return result;
348
350
  }
349
351
  static ɵfac = /*@__PURE__*/ (() => { let ɵReadComplexFieldCollectionTableComponent_BaseFactory; return function ReadComplexFieldCollectionTableComponent_Factory(t) { return (ɵReadComplexFieldCollectionTableComponent_BaseFactory || (ɵReadComplexFieldCollectionTableComponent_BaseFactory = i0.ɵɵgetInheritedFactory(ReadComplexFieldCollectionTableComponent)))(t || ReadComplexFieldCollectionTableComponent); }; })();
350
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ReadComplexFieldCollectionTableComponent, selectors: [["ccd-read-complex-field-collection-table"]], features: [i0.ɵɵInheritDefinitionFeature], decls: 13, vars: 6, consts: [["showEmptyTd", ""], ["SimpleRow", ""], [1, "complex-panel", 3, "hidden"], [1, "complex-panel-title"], [1, "text-16"], ["aria-describedby", "complex panel table", 1, "complex-panel-table"], ["scope", "col", 4, "ngFor", "ngForOf"], [4, "ngFor", "ngForOf"], ["scope", "col"], ["href", "javascript:void(0)", 1, "sort-widget", 3, "click", "innerHTML"], [1, "new-table-row", "accordion-heading", 3, "click"], [2, "float", "right"], ["href", "javascript:void(0)"], ["alt", "image", 1, "accordion-image", 3, "src"], [3, "hidden"], [3, "colSpan"], ["aria-describedby", "complex panel table expanded", 1, "complex-panel-table"], [4, "ngIf", "ngIfElse"], [3, "caseField", "context"], ["class", "complex-panel-simple-field accordion-body", 3, "hidden", 4, "ngIf"], [3, "hidden", 4, "ngIf"], [1, "complex-panel-simple-field", "accordion-body", 3, "hidden"], ["class", "text-16", 4, "ngIf"], ["colspan", "2"], ["class", "complex-panel-compound-field", 3, "hidden", 4, "ngIf", "ngIfElse"], [1, "complex-panel-compound-field", 3, "hidden"], [1, "complex-panel-nested-field", 3, "hidden"], [4, "ngIf"]], template: function ReadComplexFieldCollectionTableComponent_Template(rf, ctx) { if (rf & 1) {
352
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ReadComplexFieldCollectionTableComponent, selectors: [["ccd-read-complex-field-collection-table"]], features: [i0.ɵɵInheritDefinitionFeature], decls: 13, vars: 6, consts: [["showEmptyTd", ""], ["SimpleRow", ""], [1, "complex-panel", 3, "hidden"], [1, "complex-panel-title"], [1, "text-16"], ["aria-describedby", "complex panel table", 1, "complex-panel-table"], ["scope", "col", 4, "ngFor", "ngForOf"], [4, "ngFor", "ngForOf"], ["scope", "col"], ["href", "javascript:void(0)", 1, "sort-widget", 3, "click", "keyup.enter", "innerHTML"], [1, "new-table-row", "accordion-heading", 3, "keyup", "click"], [2, "float", "right"], ["href", "javascript:void(0)"], [1, "accordion-image", 3, "src"], [3, "hidden"], [3, "colSpan"], ["aria-describedby", "complex panel table expanded", 1, "complex-panel-table"], [4, "ngIf", "ngIfElse"], [3, "caseField", "context"], ["class", "complex-panel-simple-field accordion-body", 3, "hidden", 4, "ngIf"], [3, "hidden", 4, "ngIf"], [1, "complex-panel-simple-field", "accordion-body", 3, "hidden"], ["class", "text-16", 4, "ngIf"], ["colspan", "2"], ["class", "complex-panel-compound-field", 3, "hidden", 4, "ngIf", "ngIfElse"], [1, "complex-panel-compound-field", 3, "hidden"], [1, "complex-panel-nested-field", 3, "hidden"], [4, "ngIf"]], template: function ReadComplexFieldCollectionTableComponent_Template(rf, ctx) { if (rf & 1) {
351
353
  i0.ɵɵelementStart(0, "div", 2)(1, "dl", 3)(2, "dt")(3, "span", 4);
352
354
  i0.ɵɵtext(4);
353
355
  i0.ɵɵpipe(5, "rpxTranslate");
@@ -355,7 +357,7 @@ export class ReadComplexFieldCollectionTableComponent extends AbstractFieldReadC
355
357
  i0.ɵɵelement(6, "dd");
356
358
  i0.ɵɵelementEnd();
357
359
  i0.ɵɵelementStart(7, "table", 5)(8, "tbody")(9, "tr");
358
- i0.ɵɵtemplate(10, ReadComplexFieldCollectionTableComponent_th_10_Template, 5, 4, "th", 6);
360
+ i0.ɵɵtemplate(10, ReadComplexFieldCollectionTableComponent_th_10_Template, 6, 7, "th", 6);
359
361
  i0.ɵɵelement(11, "th");
360
362
  i0.ɵɵelementEnd();
361
363
  i0.ɵɵtemplate(12, ReadComplexFieldCollectionTableComponent_ng_container_12_Template, 15, 19, "ng-container", 7);
@@ -372,7 +374,7 @@ export class ReadComplexFieldCollectionTableComponent extends AbstractFieldReadC
372
374
  }
373
375
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ReadComplexFieldCollectionTableComponent, [{
374
376
  type: Component,
375
- args: [{ selector: 'ccd-read-complex-field-collection-table', template: "<div class=\"complex-panel\" [hidden]=\"caseField.hidden\">\n <dl class=\"complex-panel-title\">\n <dt><span class=\"text-16\">{{caseField.label | rpxTranslate}}</span></dt>\n <dd></dd>\n </dl>\n <table class=\"complex-panel-table\" aria-describedby=\"complex panel table\">\n <tbody>\n <!-- <COMPLEX table field header>-->\n <tr>\n <th *ngFor=\"let heading of columns\" scope=\"col\">\n <span class=\"text-16\">{{columnsAllLabels[heading].label | rpxTranslate}}</span>\n <a href=\"javascript:void(0)\"\n (click)=\"sortRowsByColumns(heading)\"\n class=\"sort-widget\"\n [innerHTML]=\"sortWidget(columnsAllLabels[heading])\"></a>\n </th>\n <th></th>\n </tr>\n <!-- </COMPLEX table field header>-->\n <ng-container *ngFor=\"let item of rows; let i = index;\">\n <!-- <COMPLEX table collapsed view>-->\n <tr class=\"new-table-row accordion-heading\" (click)=\"isHidden[i] = !isHidden[i]\"\n [class.last-accordion]=\"isHidden[i]\">\n <ng-container *ngFor=\"let heading of columns\">\n <td class=\"text-16\">\n <div *ngIf=\"item[heading]; else showEmptyTd\">\n <ccd-field-read\n [caseField]=\"toCaseField(heading, item[heading].label, columnsHorizontalLabel[heading].type, item[heading])\"\n [context]=\"context\"></ccd-field-read>\n </div>\n <ng-template #showEmptyTd>\n <div>&nbsp;</div>\n </ng-template>\n </td>\n </ng-container>\n <td>\n <div style=\"float: right;\">\n <a href=\"javascript:void(0)\"> <img src=\"{{ getImage(i) }}\" alt=\"image\" class=\"accordion-image\"/></a>\n </div>\n </td>\n </tr>\n <!-- </COMPLEX table collapsed view>-->\n <!-- <COMPLEX table expanded view>-->\n <tr [hidden]=\"isHidden[i]\">\n <td [colSpan]=\"columns.length + 1\">\n <table class=\"complex-panel-table\" aria-describedby=\"complex panel table expanded\">\n <tbody>\n <ng-container\n *ngFor=\"let vLabel of columnsVerticalLabel | keyvalue: keepOriginalOrder | ccdCollectionTableCaseFieldsFilter: caseField: rows[i] | ccdReadFieldsFilter:true :undefined :true\">\n <!-- <COMPLEX table expandable body simple field>-->\n <tr class=\"complex-panel-simple-field accordion-body\" *ngIf=\"item[vLabel.id]\" [hidden]=\"vLabel.hidden\">\n <th scope=\"col\"><span class=\"text-16\">{{vLabel.label | rpxTranslate}}</span></th>\n <td *ngIf=\"vLabel['type'] !== 'Complex'\" class=\"text-16\">\n <ccd-field-read [caseField]=\"toCaseField('', vLabel.label, vLabel.field_type, item[vLabel.id])\"\n [context]=\"context\"></ccd-field-read>\n </td>\n </tr>\n <!-- </COMPLEX table expandable body simple field>-->\n\n <!-- <COMPLEX table expandable body complex field>-->\n <tr *ngIf=\"vLabel['type'] === 'Complex' && addCaseFieldValue(vLabel, item[vLabel.id])\" [hidden]=\"vLabel.hidden\">\n <td colspan=\"2\">\n <ng-container *ngFor=\"let caseField of vLabel | ccdReadFieldsFilter:true :undefined :true\">\n <tr class=\"complex-panel-compound-field\" *ngIf=\"(caseField | ccdIsCompound); else SimpleRow\" [hidden]=\"caseField\">\n <td colspan=\"2\">\n <span class=\"text-16\"><ccd-field-read [caseField]=\"caseField\" [context]=\"context\"></ccd-field-read></span>\n </td>\n </tr>\n <ng-template #SimpleRow>\n <tr class=\"complex-panel-nested-field\" [hidden]=\"caseField.hidden\">\n <th scope=\"col\"><span class=\"text-16\">{{caseField.label | rpxTranslate}}</span></th>\n <td *ngIf=\"!item[vLabel.id]?.hasOwnProperty('CaseReference')\">\n <span class=\"text-16\"><ccd-field-read [caseField]=\"caseField\" [context]=\"context\"></ccd-field-read></span>\n </td>\n <td *ngIf=\"item[vLabel.id]?.hasOwnProperty('CaseReference')\">\n <ccd-read-case-link-field [caseField]=\"addCaseReferenceValue(caseField, item[vLabel.id].CaseReference)\" [context]=\"context\"></ccd-read-case-link-field>\n </td>\n </tr>\n </ng-template>\n </ng-container>\n </td>\n </tr>\n <!-- <COMPLEX table expandable body complex field>-->\n </ng-container>\n </tbody>\n </table>\n </td>\n </tr>\n <!-- </COMPLEX table expanded view>-->\n </ng-container>\n </tbody>\n </table>\n</div>\n", styles: [".complex-panel{margin:13px 0;border:1px solid #bfc1c3}.complex-panel .complex-panel-title{background-color:#dee0e2;padding:5px 5px 2px;border-bottom:1px solid #bfc1c3;display:block;color:#0b0c0c;font-family:nta,Arial,sans-serif;font-weight:700;text-transform:none;font-size:16px;line-height:1.25}@media (min-width: 641px){.complex-panel .complex-panel-title{font-size:19px;line-height:1.3157894737}}.complex-panel .complex-panel-table>tbody>tr>th{vertical-align:top}.complex-panel .complex-panel-table>tbody>tr:last-child>th{border-bottom:none}.complex-panel .complex-panel-table th{padding-left:5px;font-weight:700;border-bottom:none}.complex-panel .complex-panel-table td{padding-left:5px;padding-top:0;padding-bottom:0;border-bottom:none}.complex-panel .new-table-row{border-top:1px solid #bfc1c3}.complex-panel .complex-panel-simple-field th{padding-left:5px;padding-top:0;padding-bottom:0;width:295px}.complex-panel .complex-panel-nested-field th{padding-left:33px;padding-top:0;padding-bottom:0;width:200px}.complex-panel .complex-panel-compound-field td{padding:5px;border-bottom:none}.sort-widget{cursor:pointer;text-decoration:none;color:#0b0c0c}.accordion-wrapper{margin-bottom:20px}.accordion-wrapper .heading-medium{margin:0}.accordion-wrapper .accordion-heading{border-top:1px solid #bfc1c3;padding-top:20px;padding-bottom:10px;height:20px;cursor:pointer}.accordion-wrapper .accordion-heading .accordion-image{width:25px;margin-right:20px}.accordion-wrapper .accordion-body{margin-top:20px;margin-right:20px}.accordion-wrapper .last-accordion{border-bottom:1px solid #bfc1c3;padding-bottom:30px}\n"] }]
377
+ args: [{ selector: 'ccd-read-complex-field-collection-table', template: "<div class=\"complex-panel\" [hidden]=\"caseField.hidden\">\n <dl class=\"complex-panel-title\">\n <dt><span class=\"text-16\">{{caseField.label | rpxTranslate}}</span></dt>\n <dd></dd>\n </dl>\n <table class=\"complex-panel-table\" aria-describedby=\"complex panel table\">\n <tbody>\n <!-- <COMPLEX table field header>-->\n <tr>\n <th *ngFor=\"let heading of columns\" scope=\"col\">\n <span class=\"text-16\">{{columnsAllLabels[heading].label | rpxTranslate}}</span>\n <a href=\"javascript:void(0)\"\n (click)=\"sortRowsByColumns(heading)\"\n (keyup.enter)=\"sortRowsByColumns(heading)\"\n class=\"sort-widget\"\n [attr.aria-label]=\"'Sort ' + columnsAllLabels[heading].label | rpxTranslate\"\n [innerHTML]=\"sortWidget(columnsAllLabels[heading])\"></a>\n </th>\n <th></th>\n </tr>\n <!-- </COMPLEX table field header>-->\n <ng-container *ngFor=\"let item of rows; let i = index;\">\n <!-- <COMPLEX table collapsed view>-->\n <tr class=\"new-table-row accordion-heading\" (keyup)=\"$event.key === 'Enter' ? (isHidden[i] = !isHidden[i]) : null\" (click)=\"isHidden[i] = !isHidden[i]\"\n [class.last-accordion]=\"isHidden[i]\">\n <ng-container *ngFor=\"let heading of columns\">\n <td class=\"text-16\">\n <div *ngIf=\"item[heading]; else showEmptyTd\">\n <ccd-field-read\n [caseField]=\"toCaseField(heading, item[heading].label, columnsHorizontalLabel[heading].type, item[heading])\"\n [context]=\"context\"></ccd-field-read>\n </div>\n <ng-template #showEmptyTd>\n <div>&nbsp;</div>\n </ng-template>\n </td>\n </ng-container>\n <td>\n <div style=\"float: right;\">\n <a href=\"javascript:void(0)\"> <img src=\"{{ getImage(i) }}\" class=\"accordion-image\"/></a>\n </div>\n </td>\n </tr>\n <!-- </COMPLEX table collapsed view>-->\n <!-- <COMPLEX table expanded view>-->\n <tr [hidden]=\"isHidden[i]\">\n <td [colSpan]=\"columns.length + 1\">\n <table class=\"complex-panel-table\" aria-describedby=\"complex panel table expanded\">\n <tbody>\n <ng-container\n *ngFor=\"let vLabel of columnsVerticalLabel | keyvalue: keepOriginalOrder | ccdCollectionTableCaseFieldsFilter: caseField: rows[i] | ccdReadFieldsFilter:true :undefined :true\">\n <!-- <COMPLEX table expandable body simple field>-->\n <tr class=\"complex-panel-simple-field accordion-body\" *ngIf=\"item[vLabel.id]\" [hidden]=\"vLabel.hidden\">\n <th scope=\"col\"><span class=\"text-16\">{{vLabel.label | rpxTranslate}}</span></th>\n <td *ngIf=\"vLabel['type'] !== 'Complex'\" class=\"text-16\">\n <ccd-field-read [caseField]=\"toCaseField('', vLabel.label, vLabel.field_type, item[vLabel.id])\"\n [context]=\"context\"></ccd-field-read>\n </td>\n </tr>\n <!-- </COMPLEX table expandable body simple field>-->\n\n <!-- <COMPLEX table expandable body complex field>-->\n <tr *ngIf=\"vLabel['type'] === 'Complex' && addCaseFieldValue(vLabel, item[vLabel.id])\" [hidden]=\"vLabel.hidden\">\n <td colspan=\"2\">\n <ng-container *ngFor=\"let caseField of vLabel | ccdReadFieldsFilter:true :undefined :true\">\n <tr class=\"complex-panel-compound-field\" *ngIf=\"(caseField | ccdIsCompound); else SimpleRow\" [hidden]=\"caseField\">\n <td colspan=\"2\">\n <span class=\"text-16\"><ccd-field-read [caseField]=\"caseField\" [context]=\"context\"></ccd-field-read></span>\n </td>\n </tr>\n <ng-template #SimpleRow>\n <tr class=\"complex-panel-nested-field\" [hidden]=\"caseField.hidden\">\n <th scope=\"col\"><span class=\"text-16\">{{caseField.label | rpxTranslate}}</span></th>\n <td *ngIf=\"!item[vLabel.id]?.hasOwnProperty('CaseReference')\">\n <span class=\"text-16\"><ccd-field-read [caseField]=\"caseField\" [context]=\"context\"></ccd-field-read></span>\n </td>\n <td *ngIf=\"item[vLabel.id]?.hasOwnProperty('CaseReference')\">\n <ccd-read-case-link-field [caseField]=\"addCaseReferenceValue(caseField, item[vLabel.id].CaseReference)\" [context]=\"context\"></ccd-read-case-link-field>\n </td>\n </tr>\n </ng-template>\n </ng-container>\n </td>\n </tr>\n <!-- <COMPLEX table expandable body complex field>-->\n </ng-container>\n </tbody>\n </table>\n </td>\n </tr>\n <!-- </COMPLEX table expanded view>-->\n </ng-container>\n </tbody>\n </table>\n</div>\n", styles: [".complex-panel{margin:13px 0;border:1px solid #bfc1c3}.complex-panel .complex-panel-title{background-color:#dee0e2;padding:5px 5px 2px;border-bottom:1px solid #bfc1c3;display:block;color:#0b0c0c;font-family:nta,Arial,sans-serif;font-weight:700;text-transform:none;font-size:16px;line-height:1.25}@media (min-width: 641px){.complex-panel .complex-panel-title{font-size:19px;line-height:1.3157894737}}.complex-panel .complex-panel-table>tbody>tr>th{vertical-align:top}.complex-panel .complex-panel-table>tbody>tr:last-child>th{border-bottom:none}.complex-panel .complex-panel-table th{padding-left:5px;font-weight:700;border-bottom:none}.complex-panel .complex-panel-table td{padding-left:5px;padding-top:0;padding-bottom:0;border-bottom:none}.complex-panel .new-table-row{border-top:1px solid #bfc1c3}.complex-panel .complex-panel-simple-field th{padding-left:5px;padding-top:0;padding-bottom:0;width:295px}.complex-panel .complex-panel-nested-field th{padding-left:33px;padding-top:0;padding-bottom:0;width:200px}.complex-panel .complex-panel-compound-field td{padding:5px;border-bottom:none}.sort-widget{cursor:pointer;text-decoration:none;color:#0b0c0c}.accordion-wrapper{margin-bottom:20px}.accordion-wrapper .heading-medium{margin:0}.accordion-wrapper .accordion-heading{border-top:1px solid #bfc1c3;padding-top:20px;padding-bottom:10px;height:20px;cursor:pointer}.accordion-wrapper .accordion-heading .accordion-image{width:25px;margin-right:20px}.accordion-wrapper .accordion-body{margin-top:20px;margin-right:20px}.accordion-wrapper .last-accordion{border-bottom:1px solid #bfc1c3;padding-bottom:30px}\n"] }]
376
378
  }], null, null); })();
377
379
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ReadComplexFieldCollectionTableComponent, { className: "ReadComplexFieldCollectionTableComponent", filePath: "lib/shared/components/palette/complex/read-complex-field-collection-table.component.ts", lineNumber: 12 }); })();
378
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhZC1jb21wbGV4LWZpZWxkLWNvbGxlY3Rpb24tdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvY29tcGxleC9yZWFkLWNvbXBsZXgtZmllbGQtY29sbGVjdGlvbi10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvcGFsZXR0ZS9jb21wbGV4L3JlYWQtY29tcGxleC1maWVsZC1jb2xsZWN0aW9uLXRhYmxlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDOzs7O0lDTWpGLEFBREYsNkJBQWdELGNBQ3hCO0lBQUEsWUFBa0Q7O0lBQUEsaUJBQU87SUFDL0UsNEJBR3VEO0lBRnBELDROQUFTLG9DQUEwQixLQUFDO0lBR3pDLEFBRHlELGlCQUFJLEVBQ3hEOzs7O0lBTG1CLGVBQWtEO0lBQWxELHFGQUFrRDtJQUlyRSxlQUFtRDtJQUFuRCxxR0FBbUQ7OztJQVdsRCwyQkFBNkM7SUFDM0MscUNBRXVDO0lBQ3pDLGlCQUFNOzs7OztJQUZGLGNBQTRHO0lBQzVHLEFBREEsMEpBQTRHLDJCQUN6Rjs7O0lBR3JCLDJCQUFLO0lBQUEsc0JBQU07SUFBQSxpQkFBTTs7O0lBUnZCLDZCQUE4QztJQUM1Qyw2QkFBb0I7SUFNbEIsQUFMQSx5SEFBNkMsNEpBS25CO0lBRzVCLGlCQUFLOzs7Ozs7SUFSRyxlQUFxQjtJQUFBLEFBQXJCLDBDQUFxQiw0QkFBZ0I7OztJQTJCdkMsNkJBQXlEO0lBQ3ZELHFDQUNxRDtJQUN2RCxpQkFBSzs7Ozs7SUFGYSxjQUErRTtJQUMvRSxBQURBLGdIQUErRSwyQkFDNUQ7OztJQUhyQixBQUFoQixBQURGLDhCQUF1RyxZQUNyRixjQUFzQjtJQUFBLFlBQStCOztJQUFPLEFBQVAsaUJBQU8sRUFBSztJQUNqRiw2SEFBeUQ7SUFJM0QsaUJBQUs7OztJQU55RSx5Q0FBd0I7SUFDOUQsZUFBK0I7SUFBL0IsMkRBQStCO0lBQ2hFLGVBQWtDO0lBQWxDLHNEQUFrQzs7O0lBYTdCLEFBREYsQUFERiw4QkFBa0gsYUFDaEcsY0FDUTtJQUFBLHFDQUE2RTtJQUV2RyxBQURFLEFBRHFHLGlCQUFPLEVBQ3ZHLEVBQ0Y7Ozs7SUFKd0Ysc0NBQW9CO0lBRXZFLGVBQXVCO0lBQUMsQUFBeEIseUNBQXVCLDJCQUFvQjs7O0lBTy9FLEFBREYsMEJBQThELGNBQ3RDO0lBQUEscUNBQTZFO0lBQ3JHLEFBRHFHLGlCQUFPLEVBQ3ZHOzs7O0lBRG1DLGVBQXVCO0lBQUMsQUFBeEIseUNBQXVCLDJCQUFvQjs7O0lBRW5GLDBCQUE2RDtJQUMzRCwrQ0FBdUo7SUFDekosaUJBQUs7Ozs7OztJQUR1QixjQUE2RTtJQUFDLEFBQTlFLDRHQUE2RSwyQkFBb0I7OztJQUw3RyxBQUFoQixBQURGLDhCQUFtRSxZQUNqRCxjQUFzQjtJQUFBLFlBQWtDOztJQUFPLEFBQVAsaUJBQU8sRUFBSztJQUlwRixBQUhBLDBKQUE4RCw2SUFHRDtJQUcvRCxpQkFBSzs7Ozs7SUFSa0MsNkNBQTJCO0lBQzFCLGVBQWtDO0lBQWxDLCtEQUFrQztJQUNuRSxlQUF1RDtJQUF2RCxzSEFBdUQ7SUFHdkQsY0FBc0Q7SUFBdEQsbUhBQXNEOzs7SUFabkUsNkJBQTJGO0lBQ3ZGLDRJQUFrSDs7SUFLbEgsOExBQXdCOzs7OztJQUxrQixjQUFtQztJQUFBLEFBQW5DLDBEQUFtQywyQkFBYzs7O0lBRmpHLEFBREYsOEJBQWdILGFBQzlGO0lBQ2QsZ0pBQTJGOztJQW1CL0YsQUFERSxpQkFBSyxFQUNGOzs7SUFyQmtGLHlDQUF3QjtJQUV2RSxlQUFxRDtJQUFyRCxnRkFBcUQ7OztJQWYvRiw2QkFDaUw7SUFZL0ssQUFWQSx3SEFBdUcsMkdBVVM7Ozs7OztJQVZ6RCxjQUFxQjtJQUFyQiw0Q0FBcUI7SUFVdkUsY0FBZ0Y7SUFBaEYsb0hBQWdGOzs7O0lBekMvRiw2QkFBd0Q7SUFFdEQsOEJBQ3lDO0lBREcsa1JBQW9DO0lBRTlFLDJIQUE4QztJQWMxQyxBQURGLEFBREYsMEJBQUksY0FDeUIsWUFDSTtJQUFDLDBCQUFrRTtJQUd0RyxBQURFLEFBREUsQUFEa0csaUJBQUksRUFDaEcsRUFDSCxFQUNGO0lBTUMsQUFERixBQURGLEFBREYsOEJBQTJCLGFBQ1UsZ0JBQ2tELGFBQzFFO0lBQ1AsNkhBQ2lMOzs7O0lBdUN2TCxBQURFLEFBREUsQUFERSxpQkFBUSxFQUNGLEVBQ0wsRUFDRjs7Ozs7SUFqRUQsY0FBb0M7SUFBcEMsdURBQW9DO0lBQ0osY0FBVTtJQUFWLHdDQUFVO0lBY0wsZUFBdUI7SUFBdkIsd0VBQXVCO0lBTTVELGNBQXNCO0lBQXRCLDhDQUFzQjtJQUNwQixjQUE4QjtJQUE5QixtREFBOEI7SUFJVCxlQUEwSjtJQUExSixrTkFBMEo7O0FEckMzTCxNQUFNLE9BQU8sd0NBQXlDLFNBQVEsMEJBQTBCO0lBQy9FLE9BQU8sQ0FBVztJQUNsQixvQkFBb0IsQ0FBTTtJQUMxQixzQkFBc0IsQ0FBTTtJQUM1QixnQkFBZ0IsQ0FBTTtJQUN0QixJQUFJLEdBQVUsRUFBRSxDQUFDO0lBQ2pCLFFBQVEsR0FBYyxFQUFFLENBQUM7SUFDeEIsTUFBTSxDQUFDLGVBQWUsQ0FBQyxNQUFXO1FBQ3hDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDLFFBQVEsSUFBSSxNQUFNLENBQUMsU0FBUyxLQUFLLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNqRyxDQUFDO0lBRU0sUUFBUTtRQUNiLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMseUJBQXlCO2VBQ3ZDLElBQUksQ0FBQyxTQUFTLENBQUMseUJBQXlCLENBQUMsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFFM0UsTUFBTSx1QkFBdUIsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLHlCQUF5QixDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2hGLE1BQU0sTUFBTSxHQUFXLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDdEUsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUUvRSxNQUFNLGNBQWMsR0FBeUIsRUFBRSxDQUFDO1lBQ2hELE1BQU0sZ0JBQWdCLEdBQXlCLEVBQUUsQ0FBQztZQUNsRCxNQUFNLFNBQVMsR0FBeUIsRUFBRSxDQUFDO1lBQzNDLElBQUksQ0FBQywrQkFBK0IsRUFBRSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQy9DLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsY0FBYyxDQUFDLENBQUM7WUFFM0UsSUFBSSxDQUFDLG9CQUFvQixHQUFHLGNBQWMsQ0FBQztZQUMzQyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsZ0JBQWdCLENBQUM7WUFDL0MsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFNBQVMsQ0FBQztRQUVwQyxDQUFDO0lBQ0gsQ0FBQztJQUVNLFFBQVEsQ0FBQyxHQUFHO1FBQ2pCLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3ZCLE9BQU8sd0JBQXdCLENBQUM7UUFDbEMsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNyQyxPQUFPLHlCQUF5QixDQUFDO1lBQ25DLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztnQkFDMUIsT0FBTyx3QkFBd0IsQ0FBQztZQUNsQyxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNJLGlCQUFpQixDQUFDLEtBQUssRUFBRSxLQUFLO1FBQ25DLEtBQUssQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLFVBQVUsQ0FBQyxLQUFhO1FBQzdCLE9BQU8sS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFTSxxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsS0FBVTtRQUM1QyxLQUFLLENBQUMsS0FBSyxHQUFHLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBQyxDQUFDO1FBQ3RDLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVNLFdBQVcsQ0FBQyxFQUFVLEVBQUUsS0FBYSxFQUFFLFNBQWMsRUFBRSxLQUFVO1FBQ3RFLE9BQU8scUJBQXFCLENBQUMsSUFBSSxTQUFTLEVBQUUsRUFBRTtZQUM1QyxFQUFFO1lBQ0YsS0FBSztZQUNMLGVBQWUsRUFBRSxVQUFVO1lBQzNCLEtBQUs7WUFDTCxVQUFVLEVBQUUsU0FBUztTQUN0QixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0saUJBQWlCLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0lBRXBDLGlCQUFpQixDQUFDLE1BQU07UUFDN0IsTUFBTSwwQkFBMEIsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxLQUFLLFNBQVMsQ0FBQyxRQUFRO2VBQ2xHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDLFVBQVUsQ0FBQztRQUU1RSwwQ0FBMEM7UUFDMUMsUUFBUSxJQUFJLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3RELEtBQUssUUFBUSxDQUFDO1lBQ2QsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDO2dCQUNoQixJQUFJLDBCQUEwQixFQUFFLENBQUM7b0JBQy9CLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO29CQUNoRCxJQUFJLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUM7Z0JBQ3RFLENBQUM7cUJBQU0sQ0FBQztvQkFDTixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztvQkFDaEQsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUMsVUFBVSxDQUFDO2dCQUN2RSxDQUFDO2dCQUNELE1BQU07WUFDUixDQUFDO1lBQ0QsS0FBSyxNQUFNLENBQUM7WUFDWixLQUFLLFVBQVUsQ0FBQztZQUNoQixLQUFLLE9BQU8sQ0FBQztZQUNiLEtBQUssTUFBTSxDQUFDO1lBQ1osS0FBSyxVQUFVLENBQUM7WUFDaEIsS0FBSyxPQUFPLENBQUM7WUFDYixLQUFLLFVBQVUsQ0FBQztZQUNoQixLQUFLLFNBQVMsQ0FBQztZQUNmLEtBQUssU0FBUyxDQUFDO1lBQ2YsS0FBSyxXQUFXO2dCQUFFLENBQUM7b0JBQ2pCLElBQUksMEJBQTBCLEVBQUUsQ0FBQzt3QkFDL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDckYsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDO29CQUN0RSxDQUFDO3lCQUFNLENBQUM7d0JBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDckYsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUMsVUFBVSxDQUFDO29CQUN2RSxDQUFDO2dCQUNILENBQUM7Z0JBQ0MsTUFBTTtRQUNWLENBQUM7SUFDSCxDQUFDO0lBRU0sVUFBVSxDQUFDLE1BQVc7UUFDM0IsT0FBTyx3Q0FBd0MsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ2xHLENBQUM7SUFFTyx3QkFBd0IsQ0FBQyxnQkFBc0MsRUFDdEMsU0FBK0IsRUFDL0IsY0FBb0M7UUFDbkUsS0FBSyxNQUFNLEVBQUUsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDOUIsTUFBTSxTQUFTLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzVCLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNuRCxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQztZQUMzRCxPQUFPLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNuQyxDQUFDO0lBQ0gsQ0FBQztJQUVPLGNBQWMsQ0FBQyxjQUFvQyxFQUFFLFNBQStCO1FBQzFGLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDM0QsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksS0FBSyxXQUFXO2dCQUNyQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksS0FBSyxpQkFBaUI7Z0JBQ3pDLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxLQUFLLGdCQUFnQixFQUFFLENBQUM7Z0JBQzNDLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFDLENBQUM7Z0JBQ2xGLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLFVBQVUsRUFBQyxDQUFDO1lBQy9ELENBQUM7aUJBQU0sSUFBSSxHQUFHLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQztnQkFDM0IsY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFDLENBQUM7Z0JBQ3ZGLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBQyxDQUFDO1lBQ3BGLENBQUM7aUJBQU0sQ0FBQztnQkFDTixjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFDLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBQyxDQUFDO2dCQUMvRixTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFDLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBQyxDQUFDO1lBQzVGLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVPLCtCQUErQjtRQUNyQyxLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDdkMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzFCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNCLENBQUM7SUFDSCxDQUFDO0lBRU8sc0JBQXNCLENBQUMsR0FBRztRQUNoQyxJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDbkIsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUM1QyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDeEIsTUFBTSxHQUFHLElBQUksQ0FBQztZQUNoQixDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7NlRBbEtVLHdDQUF3QyxTQUF4Qyx3Q0FBd0M7NkRBQXhDLHdDQUF3QztZQ1Q3QyxBQUFKLEFBREYsQUFERiw4QkFBdUQsWUFDckIsU0FDMUIsY0FBc0I7WUFBQSxZQUFrQzs7WUFBTyxBQUFQLGlCQUFPLEVBQUs7WUFDeEUscUJBQVM7WUFDWCxpQkFBSztZQUlILEFBRkEsQUFERixnQ0FBMEUsWUFDakUsU0FFSDtZQUNGLHlGQUFnRDtZQU9oRCxzQkFBUztZQUNYLGlCQUFLO1lBRUwsK0dBQXdEO1lBeUU1RCxBQURFLEFBREUsaUJBQVEsRUFDRixFQUNKOztZQTVGcUIsNkNBQTJCO1lBRXhCLGVBQWtDO1lBQWxDLCtEQUFrQztZQU9sQyxlQUFVO1lBQVYscUNBQVU7WUFVTCxlQUFTO1lBQVQsa0NBQVM7OztpRkRSL0Isd0NBQXdDO2NBTHBELFNBQVM7MkJBQ0UseUNBQXlDOztrRkFJeEMsd0NBQXdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHBsYWluVG9DbGFzc0Zyb21FeGlzdCB9IGZyb20gJ2NsYXNzLXRyYW5zZm9ybWVyJztcbmltcG9ydCB7IFNvcnRPcmRlciB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbic7XG5pbXBvcnQgeyBDYXNlRmllbGQgfSBmcm9tICcuLi8uLi8uLi9kb21haW4vZGVmaW5pdGlvbic7XG5pbXBvcnQgeyBBYnN0cmFjdEZpZWxkUmVhZENvbXBvbmVudCB9IGZyb20gJy4uL2Jhc2UtZmllbGQvYWJzdHJhY3QtZmllbGQtcmVhZC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjY2QtcmVhZC1jb21wbGV4LWZpZWxkLWNvbGxlY3Rpb24tdGFibGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vcmVhZC1jb21wbGV4LWZpZWxkLWNvbGxlY3Rpb24tdGFibGUuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3JlYWQtY29tcGxleC1maWVsZC1jb2xsZWN0aW9uLXRhYmxlLnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBSZWFkQ29tcGxleEZpZWxkQ29sbGVjdGlvblRhYmxlQ29tcG9uZW50IGV4dGVuZHMgQWJzdHJhY3RGaWVsZFJlYWRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwdWJsaWMgY29sdW1uczogc3RyaW5nW107XG4gIHB1YmxpYyBjb2x1bW5zVmVydGljYWxMYWJlbDogYW55O1xuICBwdWJsaWMgY29sdW1uc0hvcml6b250YWxMYWJlbDogYW55O1xuICBwdWJsaWMgY29sdW1uc0FsbExhYmVsczogYW55O1xuICBwdWJsaWMgcm93czogYW55W10gPSBbXTtcbiAgcHVibGljIGlzSGlkZGVuOiBib29sZWFuW10gPSBbXTtcbiAgcHJpdmF0ZSBzdGF0aWMgaXNTb3J0QXNjZW5kaW5nKGNvbHVtbjogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEoY29sdW1uLnNvcnRPcmRlciA9PT0gU29ydE9yZGVyLlVOU09SVEVEIHx8IGNvbHVtbi5zb3J0T3JkZXIgPT09IFNvcnRPcmRlci5ERVNDRU5ESU5HKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIGlmICh0aGlzLmNhc2VGaWVsZC5kaXNwbGF5X2NvbnRleHRfcGFyYW1ldGVyXG4gICAgICAmJiB0aGlzLmNhc2VGaWVsZC5kaXNwbGF5X2NvbnRleHRfcGFyYW1ldGVyLnRyaW0oKS5zdGFydHNXaXRoKCcjVEFCTEUoJykpIHtcblxuICAgICAgY29uc3QgZGlzcGxheUNvbnRleHRQYXJhbWV0ZXIgPSB0aGlzLmNhc2VGaWVsZC5kaXNwbGF5X2NvbnRleHRfcGFyYW1ldGVyLnRyaW0oKTtcbiAgICAgIGNvbnN0IHJlc3VsdDogc3RyaW5nID0gZGlzcGxheUNvbnRleHRQYXJhbWV0ZXIucmVwbGFjZSgnI1RBQkxFKCcsICcnKTtcbiAgICAgIHRoaXMuY29sdW1ucyA9IHJlc3VsdC5yZXBsYWNlKCcpJywgJycpLnNwbGl0KCcsJykubWFwKChjOiBzdHJpbmcpID0+IGMudHJpbSgpKTtcblxuICAgICAgY29uc3QgbGFiZWxzVmVydGljYWw6IHsgW2s6IHN0cmluZ106IGFueSB9ID0ge307XG4gICAgICBjb25zdCBsYWJlbHNIb3Jpem9udGFsOiB7IFtrOiBzdHJpbmddOiBhbnkgfSA9IHt9O1xuICAgICAgY29uc3QgYWxsTGFiZWxzOiB7IFtrOiBzdHJpbmddOiBhbnkgfSA9IHt9O1xuICAgICAgdGhpcy5wb3B1bGF0ZUNhc2VGaWVsZFZhbHVlc0ludG9Sb3dzKCk7XG4gICAgICB0aGlzLnBvcHVsYXRlTGFiZWxzKGxhYmVsc1ZlcnRpY2FsLCBhbGxMYWJlbHMpO1xuICAgICAgdGhpcy5wb3B1bGF0ZUhvcml6b250YWxMYWJlbHMobGFiZWxzSG9yaXpvbnRhbCwgYWxsTGFiZWxzLCBsYWJlbHNWZXJ0aWNhbCk7XG5cbiAgICAgIHRoaXMuY29sdW1uc1ZlcnRpY2FsTGFiZWwgPSBsYWJlbHNWZXJ0aWNhbDtcbiAgICAgIHRoaXMuY29sdW1uc0hvcml6b250YWxMYWJlbCA9IGxhYmVsc0hvcml6b250YWw7XG4gICAgICB0aGlzLmNvbHVtbnNBbGxMYWJlbHMgPSBhbGxMYWJlbHM7XG5cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0SW1hZ2Uocm93KTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5pc0hpZGRlbltyb3ddKSB7XG4gICAgICByZXR1cm4gJ2ltZy9hY2NvcmRpb24tcGx1cy5wbmcnO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5pc1ZlcnRpY2xlRGF0YU5vdEVtcHR5KHJvdykpIHtcbiAgICAgICAgcmV0dXJuICdpbWcvYWNjb3JkaW9uLW1pbnVzLnBuZyc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmlzSGlkZGVuW3Jvd10gPSB0cnVlO1xuICAgICAgICByZXR1cm4gJ2ltZy9hY2NvcmRpb24tcGx1cy5wbmcnO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBOZWVkcyB0byBiZSBjYWxsZWQgYmVmb3JlICdjY2RGaWVsZHNGaWx0ZXInIHBpcGUgaXMgdXNlZCwgYXMgaXQgbmVlZHMgYSBjYXNlRmllbGQgdmFsdWUuXG4gICAqL1xuICBwdWJsaWMgYWRkQ2FzZUZpZWxkVmFsdWUoZmllbGQsIHZhbHVlKTogYm9vbGVhbiB7XG4gICAgZmllbGQudmFsdWUgPSB2YWx1ZTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHB1YmxpYyBpc05vdEJsYW5rKHZhbHVlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09ICcnO1xuICB9XG5cbiAgcHVibGljIGFkZENhc2VSZWZlcmVuY2VWYWx1ZShmaWVsZCwgdmFsdWU6IGFueSk6IGFueSB7XG4gICAgZmllbGQudmFsdWUgPSB7IENhc2VSZWZlcmVuY2U6IHZhbHVlfTtcbiAgICByZXR1cm4gZmllbGQ7XG4gIH1cblxuICBwdWJsaWMgdG9DYXNlRmllbGQoaWQ6IHN0cmluZywgbGFiZWw6IHN0cmluZywgZmllbGRUeXBlOiBhbnksIHZhbHVlOiBhbnkpOiBDYXNlRmllbGQge1xuICAgIHJldHVybiBwbGFpblRvQ2xhc3NGcm9tRXhpc3QobmV3IENhc2VGaWVsZCgpLCB7XG4gICAgICBpZCxcbiAgICAgIGxhYmVsLFxuICAgICAgZGlzcGxheV9jb250ZXh0OiAnUkVBRE9OTFknLFxuICAgICAgdmFsdWUsXG4gICAgICBmaWVsZF90eXBlOiBmaWVsZFR5cGVcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBrZWVwT3JpZ2luYWxPcmRlciA9IChhLCBiKSA9PiBhLmtleTtcblxuICBwdWJsaWMgc29ydFJvd3NCeUNvbHVtbnMoY29sdW1uKTogdm9pZCB7XG4gICAgY29uc3Qgc2hvdWxkU29ydEluQXNjZW5kaW5nT3JkZXIgPSB0aGlzLmNvbHVtbnNIb3Jpem9udGFsTGFiZWxbY29sdW1uXS5zb3J0T3JkZXIgPT09IFNvcnRPcmRlci5VTlNPUlRFRFxuICAgICAgfHwgdGhpcy5jb2x1bW5zSG9yaXpvbnRhbExhYmVsW2NvbHVtbl0uc29ydE9yZGVyID09PSBTb3J0T3JkZXIuREVTQ0VORElORztcblxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpzd2l0Y2gtZGVmYXVsdFxuICAgIHN3aXRjaCAodGhpcy5jb2x1bW5zSG9yaXpvbnRhbExhYmVsW2NvbHVtbl0udHlwZS50eXBlKSB7XG4gICAgICBjYXNlICdOdW1iZXInOlxuICAgICAgY2FzZSAnTW9uZXlHQlAnOiB7XG4gICAgICAgIGlmIChzaG91bGRTb3J0SW5Bc2NlbmRpbmdPcmRlcikge1xuICAgICAgICAgIHRoaXMucm93cy5zb3J0KChhLCBiKSA9PiBhW2NvbHVtbl0gLSBiW2NvbHVtbl0pO1xuICAgICAgICAgIHRoaXMuY29sdW1uc0hvcml6b250YWxMYWJlbFtjb2x1bW5dLnNvcnRPcmRlciA9IFNvcnRPcmRlci5BU0NFTkRJTkc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5yb3dzLnNvcnQoKGEsIGIpID0+IGJbY29sdW1uXSAtIGFbY29sdW1uXSk7XG4gICAgICAgICAgdGhpcy5jb2x1bW5zSG9yaXpvbnRhbExhYmVsW2NvbHVtbl0uc29ydE9yZGVyID0gU29ydE9yZGVyLkRFU0NFTkRJTkc7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdUZXh0JzpcbiAgICAgIGNhc2UgJ1RleHRBcmVhJzpcbiAgICAgIGNhc2UgJ0VtYWlsJzpcbiAgICAgIGNhc2UgJ0RhdGUnOlxuICAgICAgY2FzZSAnRGF0ZVRpbWUnOlxuICAgICAgY2FzZSAnTGFiZWwnOlxuICAgICAgY2FzZSAnUG9zdGNvZGUnOlxuICAgICAgY2FzZSAnWWVzT3JObyc6XG4gICAgICBjYXNlICdQaG9uZVVLJzpcbiAgICAgIGNhc2UgJ0ZpeGVkTGlzdCc6IHtcbiAgICAgICAgaWYgKHNob3VsZFNvcnRJbkFzY2VuZGluZ09yZGVyKSB7XG4gICAgICAgICAgdGhpcy5yb3dzLnNvcnQoKGEsIGIpID0+IGFbY29sdW1uXSA8IGJbY29sdW1uXSA/IC0xIDogYVtjb2x1bW5dID4gYltjb2x1bW5dID8gMSA6IDApO1xuICAgICAgICAgIHRoaXMuY29sdW1uc0hvcml6b250YWxMYWJlbFtjb2x1bW5dLnNvcnRPcmRlciA9IFNvcnRPcmRlci5BU0NFTkRJTkc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5yb3dzLnNvcnQoKGEsIGIpID0+IGFbY29sdW1uXSA8IGJbY29sdW1uXSA/IDEgOiBhW2NvbHVtbl0gPiBiW2NvbHVtbl0gPyAtMSA6IDApO1xuICAgICAgICAgIHRoaXMuY29sdW1uc0hvcml6b250YWxMYWJlbFtjb2x1bW5dLnNvcnRPcmRlciA9IFNvcnRPcmRlci5ERVNDRU5ESU5HO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzb3J0V2lkZ2V0KGNvbHVtbjogYW55KTogc3RyaW5nIHtcbiAgICByZXR1cm4gUmVhZENvbXBsZXhGaWVsZENvbGxlY3Rpb25UYWJsZUNvbXBvbmVudC5pc1NvcnRBc2NlbmRpbmcoY29sdW1uKSA/ICcmIzk2NjA7JyA6ICcmIzk2NTA7JztcbiAgfVxuXG4gIHByaXZhdGUgcG9wdWxhdGVIb3Jpem9udGFsTGFiZWxzKGxhYmVsc0hvcml6b250YWw6IHsgW3A6IHN0cmluZ106IGFueSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxMYWJlbHM6IHsgW3A6IHN0cmluZ106IGFueSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHNWZXJ0aWNhbDogeyBbcDogc3RyaW5nXTogYW55IH0pOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IGlkIG9mIHRoaXMuY29sdW1ucykge1xuICAgICAgY29uc3QgdHJpbW1lZElkID0gaWQudHJpbSgpO1xuICAgICAgbGFiZWxzSG9yaXpvbnRhbFt0cmltbWVkSWRdID0gYWxsTGFiZWxzW3RyaW1tZWRJZF07XG4gICAgICBsYWJlbHNIb3Jpem9udGFsW3RyaW1tZWRJZF0uc29ydE9yZGVyID0gU29ydE9yZGVyLlVOU09SVEVEO1xuICAgICAgZGVsZXRlIGxhYmVsc1ZlcnRpY2FsW3RyaW1tZWRJZF07XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBwb3B1bGF0ZUxhYmVscyhsYWJlbHNWZXJ0aWNhbDogeyBbcDogc3RyaW5nXTogYW55IH0sIGFsbExhYmVsczogeyBbcDogc3RyaW5nXTogYW55IH0pOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IG9iaiBvZiB0aGlzLmNhc2VGaWVsZC5maWVsZF90eXBlLmNvbXBsZXhfZmllbGRzKSB7XG4gICAgICBpZiAob2JqLmZpZWxkX3R5cGUudHlwZSA9PT0gJ0ZpeGVkTGlzdCcgfHxcbiAgICAgICAgb2JqLmZpZWxkX3R5cGUudHlwZSA9PT0gJ011bHRpU2VsZWN0TGlzdCcgfHxcbiAgICAgICAgb2JqLmZpZWxkX3R5cGUudHlwZSA9PT0gJ0ZpeGVkUmFkaW9MaXN0Jykge1xuICAgICAgICBsYWJlbHNWZXJ0aWNhbFtvYmouaWRdID0ge2xhYmVsOiBvYmoubGFiZWwsIHR5cGU6IG9iai5maWVsZF90eXBlLCBjYXNlRmllbGQ6IG9ian07XG4gICAgICAgIGFsbExhYmVsc1tvYmouaWRdID0ge2xhYmVsOiBvYmoubGFiZWwsIHR5cGU6IG9iai5maWVsZF90eXBlfTtcbiAgICAgIH0gZWxzZSBpZiAob2JqLmlzQ29tcGxleCgpKSB7XG4gICAgICAgIGxhYmVsc1ZlcnRpY2FsW29iai5pZF0gPSB7bGFiZWw6IG9iai5sYWJlbCwgdHlwZTogb2JqLmZpZWxkX3R5cGUudHlwZSwgY2FzZUZpZWxkOiBvYmp9O1xuICAgICAgICBhbGxMYWJlbHNbb2JqLmlkXSA9IHtsYWJlbDogb2JqLmxhYmVsLCB0eXBlOiBvYmouZmllbGRfdHlwZS50eXBlLCBjYXNlRmllbGQ6IG9ian07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsYWJlbHNWZXJ0aWNhbFtvYmouaWRdID0ge2xhYmVsOiBvYmoubGFiZWwsIHR5cGU6IHt0eXBlOiBvYmouZmllbGRfdHlwZS50eXBlfSwgY2FzZUZpZWxkOiBvYmp9O1xuICAgICAgICBhbGxMYWJlbHNbb2JqLmlkXSA9IHtsYWJlbDogb2JqLmxhYmVsLCB0eXBlOiB7dHlwZTogb2JqLmZpZWxkX3R5cGUudHlwZX0sIGNhc2VGaWVsZDogb2JqfTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHBvcHVsYXRlQ2FzZUZpZWxkVmFsdWVzSW50b1Jvd3MoKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBvYmogb2YgdGhpcy5jYXNlRmllbGQudmFsdWUpIHtcbiAgICAgIHRoaXMucm93cy5wdXNoKG9iai52YWx1ZSk7XG4gICAgICB0aGlzLmlzSGlkZGVuLnB1c2godHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpc1ZlcnRpY2xlRGF0YU5vdEVtcHR5KHJvdyk6IGJvb2xlYW4ge1xuICAgIGxldCByZXN1bHQgPSBmYWxzZTtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLmNvbHVtbnNWZXJ0aWNhbExhYmVsKSB7XG4gICAgICBpZiAodGhpcy5yb3dzW3Jvd11ba2V5XSkge1xuICAgICAgICByZXN1bHQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY29tcGxleC1wYW5lbFwiIFtoaWRkZW5dPVwiY2FzZUZpZWxkLmhpZGRlblwiPlxuICA8ZGwgY2xhc3M9XCJjb21wbGV4LXBhbmVsLXRpdGxlXCI+XG4gICAgPGR0PjxzcGFuIGNsYXNzPVwidGV4dC0xNlwiPnt7Y2FzZUZpZWxkLmxhYmVsIHwgcnB4VHJhbnNsYXRlfX08L3NwYW4+PC9kdD5cbiAgICA8ZGQ+PC9kZD5cbiAgPC9kbD5cbiAgPHRhYmxlIGNsYXNzPVwiY29tcGxleC1wYW5lbC10YWJsZVwiIGFyaWEtZGVzY3JpYmVkYnk9XCJjb21wbGV4IHBhbmVsIHRhYmxlXCI+XG4gICAgPHRib2R5PlxuICAgIDwhLS0gPENPTVBMRVggdGFibGUgZmllbGQgaGVhZGVyPi0tPlxuICAgIDx0cj5cbiAgICAgIDx0aCAqbmdGb3I9XCJsZXQgaGVhZGluZyBvZiBjb2x1bW5zXCIgc2NvcGU9XCJjb2xcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LTE2XCI+e3tjb2x1bW5zQWxsTGFiZWxzW2hlYWRpbmddLmxhYmVsIHwgcnB4VHJhbnNsYXRlfX08L3NwYW4+XG4gICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIlxuICAgICAgICAgICAoY2xpY2spPVwic29ydFJvd3NCeUNvbHVtbnMoaGVhZGluZylcIlxuICAgICAgICAgICBjbGFzcz1cInNvcnQtd2lkZ2V0XCJcbiAgICAgICAgICAgW2lubmVySFRNTF09XCJzb3J0V2lkZ2V0KGNvbHVtbnNBbGxMYWJlbHNbaGVhZGluZ10pXCI+PC9hPlxuICAgICAgPC90aD5cbiAgICAgIDx0aD48L3RoPlxuICAgIDwvdHI+XG4gICAgPCEtLSA8L0NPTVBMRVggdGFibGUgZmllbGQgaGVhZGVyPi0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygcm93czsgbGV0IGkgPSBpbmRleDtcIj5cbiAgICAgIDwhLS0gPENPTVBMRVggdGFibGUgY29sbGFwc2VkIHZpZXc+LS0+XG4gICAgICA8dHIgY2xhc3M9XCJuZXctdGFibGUtcm93IGFjY29yZGlvbi1oZWFkaW5nXCIgKGNsaWNrKT1cImlzSGlkZGVuW2ldID0gIWlzSGlkZGVuW2ldXCJcbiAgICAgICAgICBbY2xhc3MubGFzdC1hY2NvcmRpb25dPVwiaXNIaWRkZW5baV1cIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaGVhZGluZyBvZiBjb2x1bW5zXCI+XG4gICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC0xNlwiPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW1baGVhZGluZ107IGVsc2Ugc2hvd0VtcHR5VGRcIj5cbiAgICAgICAgICAgICAgPGNjZC1maWVsZC1yZWFkXG4gICAgICAgICAgICAgICAgW2Nhc2VGaWVsZF09XCJ0b0Nhc2VGaWVsZChoZWFkaW5nLCBpdGVtW2hlYWRpbmddLmxhYmVsLCBjb2x1bW5zSG9yaXpvbnRhbExhYmVsW2hlYWRpbmddLnR5cGUsIGl0ZW1baGVhZGluZ10pXCJcbiAgICAgICAgICAgICAgICBbY29udGV4dF09XCJjb250ZXh0XCI+PC9jY2QtZmllbGQtcmVhZD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNzaG93RW1wdHlUZD5cbiAgICAgICAgICAgICAgPGRpdj4mbmJzcDs8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDx0ZD5cbiAgICAgICAgICA8ZGl2IHN0eWxlPVwiZmxvYXQ6IHJpZ2h0O1wiPlxuICAgICAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiPiA8aW1nIHNyYz1cInt7IGdldEltYWdlKGkpIH19XCIgYWx0PVwiaW1hZ2VcIiBjbGFzcz1cImFjY29yZGlvbi1pbWFnZVwiLz48L2E+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvdGQ+XG4gICAgICA8L3RyPlxuICAgICAgPCEtLSA8L0NPTVBMRVggdGFibGUgY29sbGFwc2VkIHZpZXc+LS0+XG4gICAgICA8IS0tIDxDT01QTEVYIHRhYmxlIGV4cGFuZGVkIHZpZXc+LS0+XG4gICAgICA8dHIgW2hpZGRlbl09XCJpc0hpZGRlbltpXVwiPlxuICAgICAgICA8dGQgW2NvbFNwYW5dPVwiY29sdW1ucy5sZW5ndGggKyAxXCI+XG4gICAgICAgICAgPHRhYmxlIGNsYXNzPVwiY29tcGxleC1wYW5lbC10YWJsZVwiIGFyaWEtZGVzY3JpYmVkYnk9XCJjb21wbGV4IHBhbmVsIHRhYmxlIGV4cGFuZGVkXCI+XG4gICAgICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCB2TGFiZWwgb2YgY29sdW1uc1ZlcnRpY2FsTGFiZWwgfCBrZXl2YWx1ZToga2VlcE9yaWdpbmFsT3JkZXIgfCBjY2RDb2xsZWN0aW9uVGFibGVDYXNlRmllbGRzRmlsdGVyOiBjYXNlRmllbGQ6IHJvd3NbaV0gfCBjY2RSZWFkRmllbGRzRmlsdGVyOnRydWUgOnVuZGVmaW5lZCA6dHJ1ZVwiPlxuICAgICAgICAgICAgICA8IS0tIDxDT01QTEVYIHRhYmxlIGV4cGFuZGFibGUgYm9keSBzaW1wbGUgZmllbGQ+LS0+XG4gICAgICAgICAgICAgIDx0ciBjbGFzcz1cImNvbXBsZXgtcGFuZWwtc2ltcGxlLWZpZWxkIGFjY29yZGlvbi1ib2R5XCIgKm5nSWY9XCJpdGVtW3ZMYWJlbC5pZF1cIiBbaGlkZGVuXT1cInZMYWJlbC5oaWRkZW5cIj5cbiAgICAgICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj48c3BhbiBjbGFzcz1cInRleHQtMTZcIj57e3ZMYWJlbC5sYWJlbCB8IHJweFRyYW5zbGF0ZX19PC9zcGFuPjwvdGg+XG4gICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwidkxhYmVsWyd0eXBlJ10gIT09ICdDb21wbGV4J1wiIGNsYXNzPVwidGV4dC0xNlwiPlxuICAgICAgICAgICAgICAgICAgPGNjZC1maWVsZC1yZWFkIFtjYXNlRmllbGRdPVwidG9DYXNlRmllbGQoJycsIHZMYWJlbC5sYWJlbCwgdkxhYmVsLmZpZWxkX3R5cGUsIGl0ZW1bdkxhYmVsLmlkXSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb250ZXh0XT1cImNvbnRleHRcIj48L2NjZC1maWVsZC1yZWFkPlxuICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgIDwhLS0gPC9DT01QTEVYIHRhYmxlIGV4cGFuZGFibGUgYm9keSBzaW1wbGUgZmllbGQ+LS0+XG5cbiAgICAgICAgICAgICAgPCEtLSA8Q09NUExFWCB0YWJsZSBleHBhbmRhYmxlIGJvZHkgY29tcGxleCBmaWVsZD4tLT5cbiAgICAgICAgICAgICAgPHRyICpuZ0lmPVwidkxhYmVsWyd0eXBlJ10gPT09ICdDb21wbGV4JyAmJiBhZGRDYXNlRmllbGRWYWx1ZSh2TGFiZWwsIGl0ZW1bdkxhYmVsLmlkXSlcIiBbaGlkZGVuXT1cInZMYWJlbC5oaWRkZW5cIj5cbiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjJcIj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNhc2VGaWVsZCBvZiB2TGFiZWwgfCBjY2RSZWFkRmllbGRzRmlsdGVyOnRydWUgOnVuZGVmaW5lZCA6dHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz1cImNvbXBsZXgtcGFuZWwtY29tcG91bmQtZmllbGRcIiAqbmdJZj1cIihjYXNlRmllbGQgfCBjY2RJc0NvbXBvdW5kKTsgZWxzZSBTaW1wbGVSb3dcIiBbaGlkZGVuXT1cImNhc2VGaWVsZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCIyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC0xNlwiPjxjY2QtZmllbGQtcmVhZCBbY2FzZUZpZWxkXT1cImNhc2VGaWVsZFwiIFtjb250ZXh0XT1cImNvbnRleHRcIj48L2NjZC1maWVsZC1yZWFkPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI1NpbXBsZVJvdz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz1cImNvbXBsZXgtcGFuZWwtbmVzdGVkLWZpZWxkXCIgW2hpZGRlbl09XCJjYXNlRmllbGQuaGlkZGVuXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPjxzcGFuIGNsYXNzPVwidGV4dC0xNlwiPnt7Y2FzZUZpZWxkLmxhYmVsIHwgcnB4VHJhbnNsYXRlfX08L3NwYW4+PC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiIWl0ZW1bdkxhYmVsLmlkXT8uaGFzT3duUHJvcGVydHkoJ0Nhc2VSZWZlcmVuY2UnKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC0xNlwiPjxjY2QtZmllbGQtcmVhZCBbY2FzZUZpZWxkXT1cImNhc2VGaWVsZFwiIFtjb250ZXh0XT1cImNvbnRleHRcIj48L2NjZC1maWVsZC1yZWFkPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiaXRlbVt2TGFiZWwuaWRdPy5oYXNPd25Qcm9wZXJ0eSgnQ2FzZVJlZmVyZW5jZScpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNjZC1yZWFkLWNhc2UtbGluay1maWVsZCBbY2FzZUZpZWxkXT1cImFkZENhc2VSZWZlcmVuY2VWYWx1ZShjYXNlRmllbGQsIGl0ZW1bdkxhYmVsLmlkXS5DYXNlUmVmZXJlbmNlKVwiIFtjb250ZXh0XT1cImNvbnRleHRcIj48L2NjZC1yZWFkLWNhc2UtbGluay1maWVsZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgIDwhLS0gPENPTVBMRVggdGFibGUgZXhwYW5kYWJsZSBib2R5IGNvbXBsZXggZmllbGQ+LS0+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgICAgPC90YWJsZT5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvdHI+XG4gICAgICA8IS0tIDwvQ09NUExFWCB0YWJsZSBleHBhbmRlZCB2aWV3Pi0tPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvdGJvZHk+XG4gIDwvdGFibGU+XG48L2Rpdj5cbiJdfQ==
380
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhZC1jb21wbGV4LWZpZWxkLWNvbGxlY3Rpb24tdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvY29tcGxleC9yZWFkLWNvbXBsZXgtZmllbGQtY29sbGVjdGlvbi10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvcGFsZXR0ZS9jb21wbGV4L3JlYWQtY29tcGxleC1maWVsZC1jb2xsZWN0aW9uLXRhYmxlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDOzs7O0lDTWpGLEFBREYsNkJBQWdELGNBQ3hCO0lBQUEsWUFBa0Q7O0lBQUEsaUJBQU87SUFDL0UsNEJBS3VEOztJQUhwRCxBQURBLDROQUFTLG9DQUEwQixLQUFDLDJOQUNyQixvQ0FBMEIsS0FBQztJQUkvQyxBQUR5RCxpQkFBSSxFQUN4RDs7OztJQVBtQixlQUFrRDtJQUFsRCxxRkFBa0Q7SUFNckUsZUFBbUQ7SUFBbkQscUdBQW1EOzs7O0lBV2xELDJCQUE2QztJQUMzQyxxQ0FFdUM7SUFDekMsaUJBQU07Ozs7O0lBRkYsY0FBNEc7SUFDNUcsQUFEQSwwSkFBNEcsMkJBQ3pGOzs7SUFHckIs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MUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0IsQ0FBQztJQUNILENBQUM7SUFFTyxzQkFBc0IsQ0FBQyxHQUFHO1FBQ2hDLElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNuQixLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQzVDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUN4QixNQUFNLEdBQUcsSUFBSSxDQUFDO1lBQ2hCLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQzs2VEFsS1Usd0NBQXdDLFNBQXhDLHdDQUF3Qzs2REFBeEMsd0NBQXdDO1lDVDdDLEFBQUosQUFERixBQURGLDhCQUF1RCxZQUNyQixTQUMxQixjQUFzQjtZQUFBLFlBQWtDOztZQUFPLEFBQVAsaUJBQU8sRUFBSztZQUN4RSxxQkFBUztZQUNYLGlCQUFLO1lBSUgsQUFGQSxBQURGLGdDQUEwRSxZQUNqRSxTQUVIO1lBQ0YseUZBQWdEO1lBU2hELHNCQUFTO1lBQ1gsaUJBQUs7WUFFTCwrR0FBd0Q7WUF5RTVELEFBREUsQUFERSxpQkFBUSxFQUNGLEVBQ0o7O1lBOUZxQiw2Q0FBMkI7WUFFeEIsZUFBa0M7WUFBbEMsK0RBQWtDO1lBT2xDLGVBQVU7WUFBVixxQ0FBVTtZQVlMLGVBQVM7WUFBVCxrQ0FBUzs7O2lGRFYvQix3Q0FBd0M7Y0FMcEQsU0FBUzsyQkFDRSx5Q0FBeUM7O2tGQUl4Qyx3Q0FBd0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgcGxhaW5Ub0NsYXNzRnJvbUV4aXN0IH0gZnJvbSAnY2xhc3MtdHJhbnNmb3JtZXInO1xuaW1wb3J0IHsgU29ydE9yZGVyIH0gZnJvbSAnLi4vLi4vLi4vZG9tYWluJztcbmltcG9ydCB7IENhc2VGaWVsZCB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbi9kZWZpbml0aW9uJztcbmltcG9ydCB7IEFic3RyYWN0RmllbGRSZWFkQ29tcG9uZW50IH0gZnJvbSAnLi4vYmFzZS1maWVsZC9hYnN0cmFjdC1maWVsZC1yZWFkLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NjZC1yZWFkLWNvbXBsZXgtZmllbGQtY29sbGVjdGlvbi10YWJsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9yZWFkLWNvbXBsZXgtZmllbGQtY29sbGVjdGlvbi10YWJsZS5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcmVhZC1jb21wbGV4LWZpZWxkLWNvbGxlY3Rpb24tdGFibGUuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFJlYWRDb21wbGV4RmllbGRDb2xsZWN0aW9uVGFibGVDb21wb25lbnQgZXh0ZW5kcyBBYnN0cmFjdEZpZWxkUmVhZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHB1YmxpYyBjb2x1bW5zOiBzdHJpbmdbXTtcbiAgcHVibGljIGNvbHVtbnNWZXJ0aWNhbExhYmVsOiBhbnk7XG4gIHB1YmxpYyBjb2x1bW5zSG9yaXpvbnRhbExhYmVsOiBhbnk7XG4gIHB1YmxpYyBjb2x1bW5zQWxsTGFiZWxzOiBhbnk7XG4gIHB1YmxpYyByb3dzOiBhbnlbXSA9IFtdO1xuICBwdWJsaWMgaXNIaWRkZW46IGJvb2xlYW5bXSA9IFtdO1xuICBwcml2YXRlIHN0YXRpYyBpc1NvcnRBc2NlbmRpbmcoY29sdW1uOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIShjb2x1bW4uc29ydE9yZGVyID09PSBTb3J0T3JkZXIuVU5TT1JURUQgfHwgY29sdW1uLnNvcnRPcmRlciA9PT0gU29ydE9yZGVyLkRFU0NFTkRJTkcpO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgaWYgKHRoaXMuY2FzZUZpZWxkLmRpc3BsYXlfY29udGV4dF9wYXJhbWV0ZXJcbiAgICAgICYmIHRoaXMuY2FzZUZpZWxkLmRpc3BsYXlfY29udGV4dF9wYXJhbWV0ZXIudHJpbSgpLnN0YXJ0c1dpdGgoJyNUQUJMRSgnKSkge1xuXG4gICAgICBjb25zdCBkaXNwbGF5Q29udGV4dFBhcmFtZXRlciA9IHRoaXMuY2FzZUZpZWxkLmRpc3BsYXlfY29udGV4dF9wYXJhbWV0ZXIudHJpbSgpO1xuICAgICAgY29uc3QgcmVzdWx0OiBzdHJpbmcgPSBkaXNwbGF5Q29udGV4dFBhcmFtZXRlci5yZXBsYWNlKCcjVEFCTEUoJywgJycpO1xuICAgICAgdGhpcy5jb2x1bW5zID0gcmVzdWx0LnJlcGxhY2UoJyknLCAnJykuc3BsaXQoJywnKS5tYXAoKGM6IHN0cmluZykgPT4gYy50cmltKCkpO1xuXG4gICAgICBjb25zdCBsYWJlbHNWZXJ0aWNhbDogeyBbazogc3RyaW5nXTogYW55IH0gPSB7fTtcbiAgICAgIGNvbnN0IGxhYmVsc0hvcml6b250YWw6IHsgW2s6IHN0cmluZ106IGFueSB9ID0ge307XG4gICAgICBjb25zdCBhbGxMYWJlbHM6IHsgW2s6IHN0cmluZ106IGFueSB9ID0ge307XG4gICAgICB0aGlzLnBvcHVsYXRlQ2FzZUZpZWxkVmFsdWVzSW50b1Jvd3MoKTtcbiAgICAgIHRoaXMucG9wdWxhdGVMYWJlbHMobGFiZWxzVmVydGljYWwsIGFsbExhYmVscyk7XG4gICAgICB0aGlzLnBvcHVsYXRlSG9yaXpvbnRhbExhYmVscyhsYWJlbHNIb3Jpem9udGFsLCBhbGxMYWJlbHMsIGxhYmVsc1ZlcnRpY2FsKTtcblxuICAgICAgdGhpcy5jb2x1bW5zVmVydGljYWxMYWJlbCA9IGxhYmVsc1ZlcnRpY2FsO1xuICAgICAgdGhpcy5jb2x1bW5zSG9yaXpvbnRhbExhYmVsID0gbGFiZWxzSG9yaXpvbnRhbDtcbiAgICAgIHRoaXMuY29sdW1uc0FsbExhYmVscyA9IGFsbExhYmVscztcblxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRJbWFnZShyb3cpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLmlzSGlkZGVuW3Jvd10pIHtcbiAgICAgIHJldHVybiAnaW1nL2FjY29yZGlvbi1wbHVzLnBuZyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLmlzVmVydGljbGVEYXRhTm90RW1wdHkocm93KSkge1xuICAgICAgICByZXR1cm4gJ2ltZy9hY2NvcmRpb24tbWludXMucG5nJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaXNIaWRkZW5bcm93XSA9IHRydWU7XG4gICAgICAgIHJldHVybiAnaW1nL2FjY29yZGlvbi1wbHVzLnBuZyc7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE5lZWRzIHRvIGJlIGNhbGxlZCBiZWZvcmUgJ2NjZEZpZWxkc0ZpbHRlcicgcGlwZSBpcyB1c2VkLCBhcyBpdCBuZWVkcyBhIGNhc2VGaWVsZCB2YWx1ZS5cbiAgICovXG4gIHB1YmxpYyBhZGRDYXNlRmllbGRWYWx1ZShmaWVsZCwgdmFsdWUpOiBib29sZWFuIHtcbiAgICBmaWVsZC52YWx1ZSA9IHZhbHVlO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHVibGljIGlzTm90QmxhbmsodmFsdWU6IHN0cmluZykge1xuICAgIHJldHVybiB2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gJyc7XG4gIH1cblxuICBwdWJsaWMgYWRkQ2FzZVJlZmVyZW5jZVZhbHVlKGZpZWxkLCB2YWx1ZTogYW55KTogYW55IHtcbiAgICBmaWVsZC52YWx1ZSA9IHsgQ2FzZVJlZmVyZW5jZTogdmFsdWV9O1xuICAgIHJldHVybiBmaWVsZDtcbiAgfVxuXG4gIHB1YmxpYyB0b0Nhc2VGaWVsZChpZDogc3RyaW5nLCBsYWJlbDogc3RyaW5nLCBmaWVsZFR5cGU6IGFueSwgdmFsdWU6IGFueSk6IENhc2VGaWVsZCB7XG4gICAgcmV0dXJuIHBsYWluVG9DbGFzc0Zyb21FeGlzdChuZXcgQ2FzZUZpZWxkKCksIHtcbiAgICAgIGlkLFxuICAgICAgbGFiZWwsXG4gICAgICBkaXNwbGF5X2NvbnRleHQ6ICdSRUFET05MWScsXG4gICAgICB2YWx1ZSxcbiAgICAgIGZpZWxkX3R5cGU6IGZpZWxkVHlwZVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGtlZXBPcmlnaW5hbE9yZGVyID0gKGEsIGIpID0+IGEua2V5O1xuXG4gIHB1YmxpYyBzb3J0Um93c0J5Q29sdW1ucyhjb2x1bW4pOiB2b2lkIHtcbiAgICBjb25zdCBzaG91bGRTb3J0SW5Bc2NlbmRpbmdPcmRlciA9IHRoaXMuY29sdW1uc0hvcml6b250YWxMYWJlbFtjb2x1bW5dLnNvcnRPcmRlciA9PT0gU29ydE9yZGVyLlVOU09SVEVEXG4gICAgICB8fCB0aGlzLmNvbHVtbnNIb3Jpem9udGFsTGFiZWxbY29sdW1uXS5zb3J0T3JkZXIgPT09IFNvcnRPcmRlci5ERVNDRU5ESU5HO1xuXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnN3aXRjaC1kZWZhdWx0XG4gICAgc3dpdGNoICh0aGlzLmNvbHVtbnNIb3Jpem9udGFsTGFiZWxbY29sdW1uXS50eXBlLnR5cGUpIHtcbiAgICAgIGNhc2UgJ051bWJlcic6XG4gICAgICBjYXNlICdNb25leUdCUCc6IHtcbiAgICAgICAgaWYgKHNob3VsZFNvcnRJbkFzY2VuZGluZ09yZGVyKSB7XG4gICAgICAgICAgdGhpcy5yb3dzLnNvcnQoKGEsIGIpID0+IGFbY29sdW1uXSAtIGJbY29sdW1uXSk7XG4gICAgICAgICAgdGhpcy5jb2x1bW5zSG9yaXpvbnRhbExhYmVsW2NvbHVtbl0uc29ydE9yZGVyID0gU29ydE9yZGVyLkFTQ0VORElORztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnJvd3Muc29ydCgoYSwgYikgPT4gYltjb2x1bW5dIC0gYVtjb2x1bW5dKTtcbiAgICAgICAgICB0aGlzLmNvbHVtbnNIb3Jpem9udGFsTGFiZWxbY29sdW1uXS5zb3J0T3JkZXIgPSBTb3J0T3JkZXIuREVTQ0VORElORztcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ1RleHQnOlxuICAgICAgY2FzZSAnVGV4dEFyZWEnOlxuICAgICAgY2FzZSAnRW1haWwnOlxuICAgICAgY2FzZSAnRGF0ZSc6XG4gICAgICBjYXNlICdEYXRlVGltZSc6XG4gICAgICBjYXNlICdMYWJlbCc6XG4gICAgICBjYXNlICdQb3N0Y29kZSc6XG4gICAgICBjYXNlICdZZXNPck5vJzpcbiAgICAgIGNhc2UgJ1Bob25lVUsnOlxuICAgICAgY2FzZSAnRml4ZWRMaXN0Jzoge1xuICAgICAgICBpZiAoc2hvdWxkU29ydEluQXNjZW5kaW5nT3JkZXIpIHtcbiAgICAgICAgICB0aGlzLnJvd3Muc29ydCgoYSwgYikgPT4gYVtjb2x1bW5dIDwgYltjb2x1bW5dID8gLTEgOiBhW2NvbHVtbl0gPiBiW2NvbHVtbl0gPyAxIDogMCk7XG4gICAgICAgICAgdGhpcy5jb2x1bW5zSG9yaXpvbnRhbExhYmVsW2NvbHVtbl0uc29ydE9yZGVyID0gU29ydE9yZGVyLkFTQ0VORElORztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnJvd3Muc29ydCgoYSwgYikgPT4gYVtjb2x1bW5dIDwgYltjb2x1bW5dID8gMSA6IGFbY29sdW1uXSA+IGJbY29sdW1uXSA/IC0xIDogMCk7XG4gICAgICAgICAgdGhpcy5jb2x1bW5zSG9yaXpvbnRhbExhYmVsW2NvbHVtbl0uc29ydE9yZGVyID0gU29ydE9yZGVyLkRFU0NFTkRJTkc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNvcnRXaWRnZXQoY29sdW1uOiBhbnkpOiBzdHJpbmcge1xuICAgIHJldHVybiBSZWFkQ29tcGxleEZpZWxkQ29sbGVjdGlvblRhYmxlQ29tcG9uZW50LmlzU29ydEFzY2VuZGluZyhjb2x1bW4pID8gJyYjOTY2MDsnIDogJyYjOTY1MDsnO1xuICB9XG5cbiAgcHJpdmF0ZSBwb3B1bGF0ZUhvcml6b250YWxMYWJlbHMobGFiZWxzSG9yaXpvbnRhbDogeyBbcDogc3RyaW5nXTogYW55IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbExhYmVsczogeyBbcDogc3RyaW5nXTogYW55IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsc1ZlcnRpY2FsOiB7IFtwOiBzdHJpbmddOiBhbnkgfSk6IHZvaWQge1xuICAgIGZvciAoY29uc3QgaWQgb2YgdGhpcy5jb2x1bW5zKSB7XG4gICAgICBjb25zdCB0cmltbWVkSWQgPSBpZC50cmltKCk7XG4gICAgICBsYWJlbHNIb3Jpem9udGFsW3RyaW1tZWRJZF0gPSBhbGxMYWJlbHNbdHJpbW1lZElkXTtcbiAgICAgIGxhYmVsc0hvcml6b250YWxbdHJpbW1lZElkXS5zb3J0T3JkZXIgPSBTb3J0T3JkZXIuVU5TT1JURUQ7XG4gICAgICBkZWxldGUgbGFiZWxzVmVydGljYWxbdHJpbW1lZElkXTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHBvcHVsYXRlTGFiZWxzKGxhYmVsc1ZlcnRpY2FsOiB7IFtwOiBzdHJpbmddOiBhbnkgfSwgYWxsTGFiZWxzOiB7IFtwOiBzdHJpbmddOiBhbnkgfSk6IHZvaWQge1xuICAgIGZvciAoY29uc3Qgb2JqIG9mIHRoaXMuY2FzZUZpZWxkLmZpZWxkX3R5cGUuY29tcGxleF9maWVsZHMpIHtcbiAgICAgIGlmIChvYmouZmllbGRfdHlwZS50eXBlID09PSAnRml4ZWRMaXN0JyB8fFxuICAgICAgICBvYmouZmllbGRfdHlwZS50eXBlID09PSAnTXVsdGlTZWxlY3RMaXN0JyB8fFxuICAgICAgICBvYmouZmllbGRfdHlwZS50eXBlID09PSAnRml4ZWRSYWRpb0xpc3QnKSB7XG4gICAgICAgIGxhYmVsc1ZlcnRpY2FsW29iai5pZF0gPSB7bGFiZWw6IG9iai5sYWJlbCwgdHlwZTogb2JqLmZpZWxkX3R5cGUsIGNhc2VGaWVsZDogb2JqfTtcbiAgICAgICAgYWxsTGFiZWxzW29iai5pZF0gPSB7bGFiZWw6IG9iai5sYWJlbCwgdHlwZTogb2JqLmZpZWxkX3R5cGV9O1xuICAgICAgfSBlbHNlIGlmIChvYmouaXNDb21wbGV4KCkpIHtcbiAgICAgICAgbGFiZWxzVmVydGljYWxbb2JqLmlkXSA9IHtsYWJlbDogb2JqLmxhYmVsLCB0eXBlOiBvYmouZmllbGRfdHlwZS50eXBlLCBjYXNlRmllbGQ6IG9ian07XG4gICAgICAgIGFsbExhYmVsc1tvYmouaWRdID0ge2xhYmVsOiBvYmoubGFiZWwsIHR5cGU6IG9iai5maWVsZF90eXBlLnR5cGUsIGNhc2VGaWVsZDogb2JqfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxhYmVsc1ZlcnRpY2FsW29iai5pZF0gPSB7bGFiZWw6IG9iai5sYWJlbCwgdHlwZToge3R5cGU6IG9iai5maWVsZF90eXBlLnR5cGV9LCBjYXNlRmllbGQ6IG9ian07XG4gICAgICAgIGFsbExhYmVsc1tvYmouaWRdID0ge2xhYmVsOiBvYmoubGFiZWwsIHR5cGU6IHt0eXBlOiBvYmouZmllbGRfdHlwZS50eXBlfSwgY2FzZUZpZWxkOiBvYmp9O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcG9wdWxhdGVDYXNlRmllbGRWYWx1ZXNJbnRvUm93cygpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IG9iaiBvZiB0aGlzLmNhc2VGaWVsZC52YWx1ZSkge1xuICAgICAgdGhpcy5yb3dzLnB1c2gob2JqLnZhbHVlKTtcbiAgICAgIHRoaXMuaXNIaWRkZW4ucHVzaCh0cnVlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGlzVmVydGljbGVEYXRhTm90RW1wdHkocm93KTogYm9vbGVhbiB7XG4gICAgbGV0IHJlc3VsdCA9IGZhbHNlO1xuICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMuY29sdW1uc1ZlcnRpY2FsTGFiZWwpIHtcbiAgICAgIGlmICh0aGlzLnJvd3Nbcm93XVtrZXldKSB7XG4gICAgICAgIHJlc3VsdCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjb21wbGV4LXBhbmVsXCIgW2hpZGRlbl09XCJjYXNlRmllbGQuaGlkZGVuXCI+XG4gIDxkbCBjbGFzcz1cImNvbXBsZXgtcGFuZWwtdGl0bGVcIj5cbiAgICA8ZHQ+PHNwYW4gY2xhc3M9XCJ0ZXh0LTE2XCI+e3tjYXNlRmllbGQubGFiZWwgfCBycHhUcmFuc2xhdGV9fTwvc3Bhbj48L2R0PlxuICAgIDxkZD48L2RkPlxuICA8L2RsPlxuICA8dGFibGUgY2xhc3M9XCJjb21wbGV4LXBhbmVsLXRhYmxlXCIgYXJpYS1kZXNjcmliZWRieT1cImNvbXBsZXggcGFuZWwgdGFibGVcIj5cbiAgICA8dGJvZHk+XG4gICAgPCEtLSA8Q09NUExFWCB0YWJsZSBmaWVsZCBoZWFkZXI+LS0+XG4gICAgPHRyPlxuICAgICAgPHRoICpuZ0Zvcj1cImxldCBoZWFkaW5nIG9mIGNvbHVtbnNcIiBzY29wZT1cImNvbFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtMTZcIj57e2NvbHVtbnNBbGxMYWJlbHNbaGVhZGluZ10ubGFiZWwgfCBycHhUcmFuc2xhdGV9fTwvc3Bhbj5cbiAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiXG4gICAgICAgICAgIChjbGljayk9XCJzb3J0Um93c0J5Q29sdW1ucyhoZWFkaW5nKVwiXG4gICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJzb3J0Um93c0J5Q29sdW1ucyhoZWFkaW5nKVwiXG4gICAgICAgICAgIGNsYXNzPVwic29ydC13aWRnZXRcIlxuICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidTb3J0ICcgKyBjb2x1bW5zQWxsTGFiZWxzW2hlYWRpbmddLmxhYmVsIHwgcnB4VHJhbnNsYXRlXCJcbiAgICAgICAgICAgW2lubmVySFRNTF09XCJzb3J0V2lkZ2V0KGNvbHVtbnNBbGxMYWJlbHNbaGVhZGluZ10pXCI+PC9hPlxuICAgICAgPC90aD5cbiAgICAgIDx0aD48L3RoPlxuICAgIDwvdHI+XG4gICAgPCEtLSA8L0NPTVBMRVggdGFibGUgZmllbGQgaGVhZGVyPi0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygcm93czsgbGV0IGkgPSBpbmRleDtcIj5cbiAgICAgIDwhLS0gPENPTVBMRVggdGFibGUgY29sbGFwc2VkIHZpZXc+LS0+XG4gICAgICA8dHIgY2xhc3M9XCJuZXctdGFibGUtcm93IGFjY29yZGlvbi1oZWFkaW5nXCIgKGtleXVwKT1cIiRldmVudC5rZXkgPT09ICdFbnRlcicgPyAoaXNIaWRkZW5baV0gPSAhaXNIaWRkZW5baV0pIDogbnVsbFwiIChjbGljayk9XCJpc0hpZGRlbltpXSA9ICFpc0hpZGRlbltpXVwiXG4gICAgICAgICAgW2NsYXNzLmxhc3QtYWNjb3JkaW9uXT1cImlzSGlkZGVuW2ldXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGhlYWRpbmcgb2YgY29sdW1uc1wiPlxuICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtMTZcIj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpdGVtW2hlYWRpbmddOyBlbHNlIHNob3dFbXB0eVRkXCI+XG4gICAgICAgICAgICAgIDxjY2QtZmllbGQtcmVhZFxuICAgICAgICAgICAgICAgIFtjYXNlRmllbGRdPVwidG9DYXNlRmllbGQoaGVhZGluZywgaXRlbVtoZWFkaW5nXS5sYWJlbCwgY29sdW1uc0hvcml6b250YWxMYWJlbFtoZWFkaW5nXS50eXBlLCBpdGVtW2hlYWRpbmddKVwiXG4gICAgICAgICAgICAgICAgW2NvbnRleHRdPVwiY29udGV4dFwiPjwvY2NkLWZpZWxkLXJlYWQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjc2hvd0VtcHR5VGQ+XG4gICAgICAgICAgICAgIDxkaXY+Jm5ic3A7PC9kaXY+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvdGQ+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8dGQ+XG4gICAgICAgICAgPGRpdiBzdHlsZT1cImZsb2F0OiByaWdodDtcIj5cbiAgICAgICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIj4gPGltZyBzcmM9XCJ7eyBnZXRJbWFnZShpKSB9fVwiIGNsYXNzPVwiYWNjb3JkaW9uLWltYWdlXCIvPjwvYT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvdHI+XG4gICAgICA8IS0tIDwvQ09NUExFWCB0YWJsZSBjb2xsYXBzZWQgdmlldz4tLT5cbiAgICAgIDwhLS0gPENPTVBMRVggdGFibGUgZXhwYW5kZWQgdmlldz4tLT5cbiAgICAgIDx0ciBbaGlkZGVuXT1cImlzSGlkZGVuW2ldXCI+XG4gICAgICAgIDx0ZCBbY29sU3Bhbl09XCJjb2x1bW5zLmxlbmd0aCArIDFcIj5cbiAgICAgICAgICA8dGFibGUgY2xhc3M9XCJjb21wbGV4LXBhbmVsLXRhYmxlXCIgYXJpYS1kZXNjcmliZWRieT1cImNvbXBsZXggcGFuZWwgdGFibGUgZXhwYW5kZWRcIj5cbiAgICAgICAgICAgIDx0Ym9keT5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHZMYWJlbCBvZiBjb2x1bW5zVmVydGljYWxMYWJlbCB8IGtleXZhbHVlOiBrZWVwT3JpZ2luYWxPcmRlciB8IGNjZENvbGxlY3Rpb25UYWJsZUNhc2VGaWVsZHNGaWx0ZXI6IGNhc2VGaWVsZDogcm93c1tpXSB8IGNjZFJlYWRGaWVsZHNGaWx0ZXI6dHJ1ZSA6dW5kZWZpbmVkIDp0cnVlXCI+XG4gICAgICAgICAgICAgIDwhLS0gPENPTVBMRVggdGFibGUgZXhwYW5kYWJsZSBib2R5IHNpbXBsZSBmaWVsZD4tLT5cbiAgICAgICAgICAgICAgPHRyIGNsYXNzPVwiY29tcGxleC1wYW5lbC1zaW1wbGUtZmllbGQgYWNjb3JkaW9uLWJvZHlcIiAqbmdJZj1cIml0ZW1bdkxhYmVsLmlkXVwiIFtoaWRkZW5dPVwidkxhYmVsLmhpZGRlblwiPlxuICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPjxzcGFuIGNsYXNzPVwidGV4dC0xNlwiPnt7dkxhYmVsLmxhYmVsIHwgcnB4VHJhbnNsYXRlfX08L3NwYW4+PC90aD5cbiAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJ2TGFiZWxbJ3R5cGUnXSAhPT0gJ0NvbXBsZXgnXCIgY2xhc3M9XCJ0ZXh0LTE2XCI+XG4gICAgICAgICAgICAgICAgICA8Y2NkLWZpZWxkLXJlYWQgW2Nhc2VGaWVsZF09XCJ0b0Nhc2VGaWVsZCgnJywgdkxhYmVsLmxhYmVsLCB2TGFiZWwuZmllbGRfdHlwZSwgaXRlbVt2TGFiZWwuaWRdKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbnRleHRdPVwiY29udGV4dFwiPjwvY2NkLWZpZWxkLXJlYWQ+XG4gICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgPCEtLSA8L0NPTVBMRVggdGFibGUgZXhwYW5kYWJsZSBib2R5IHNpbXBsZSBmaWVsZD4tLT5cblxuICAgICAgICAgICAgICA8IS0tIDxDT01QTEVYIHRhYmxlIGV4cGFuZGFibGUgYm9keSBjb21wbGV4IGZpZWxkPi0tPlxuICAgICAgICAgICAgICA8dHIgKm5nSWY9XCJ2TGFiZWxbJ3R5cGUnXSA9PT0gJ0NvbXBsZXgnICYmIGFkZENhc2VGaWVsZFZhbHVlKHZMYWJlbCwgaXRlbVt2TGFiZWwuaWRdKVwiIFtoaWRkZW5dPVwidkxhYmVsLmhpZGRlblwiPlxuICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiMlwiPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY2FzZUZpZWxkIG9mIHZMYWJlbCB8IGNjZFJlYWRGaWVsZHNGaWx0ZXI6dHJ1ZSA6dW5kZWZpbmVkIDp0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPVwiY29tcGxleC1wYW5lbC1jb21wb3VuZC1maWVsZFwiICpuZ0lmPVwiKGNhc2VGaWVsZCB8IGNjZElzQ29tcG91bmQpOyBlbHNlIFNpbXBsZVJvd1wiIFtoaWRkZW5dPVwiY2FzZUZpZWxkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LTE2XCI+PGNjZC1maWVsZC1yZWFkIFtjYXNlRmllbGRdPVwiY2FzZUZpZWxkXCIgW2NvbnRleHRdPVwiY29udGV4dFwiPjwvY2NkLWZpZWxkLXJlYWQ+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjU2ltcGxlUm93PlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPVwiY29tcGxleC1wYW5lbC1uZXN0ZWQtZmllbGRcIiBbaGlkZGVuXT1cImNhc2VGaWVsZC5oaWRkZW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+PHNwYW4gY2xhc3M9XCJ0ZXh0LTE2XCI+e3tjYXNlRmllbGQubGFiZWwgfCBycHhUcmFuc2xhdGV9fTwvc3Bhbj48L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCIhaXRlbVt2TGFiZWwuaWRdPy5oYXNPd25Qcm9wZXJ0eSgnQ2FzZVJlZmVyZW5jZScpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LTE2XCI+PGNjZC1maWVsZC1yZWFkIFtjYXNlRmllbGRdPVwiY2FzZUZpZWxkXCIgW2NvbnRleHRdPVwiY29udGV4dFwiPjwvY2NkLWZpZWxkLXJlYWQ+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJpdGVtW3ZMYWJlbC5pZF0/Lmhhc093blByb3BlcnR5KCdDYXNlUmVmZXJlbmNlJylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2NkLXJlYWQtY2FzZS1saW5rLWZpZWxkIFtjYXNlRmllbGRdPVwiYWRkQ2FzZVJlZmVyZW5jZVZhbHVlKGNhc2VGaWVsZCwgaXRlbVt2TGFiZWwuaWRdLkNhc2VSZWZlcmVuY2UpXCIgW2NvbnRleHRdPVwiY29udGV4dFwiPjwvY2NkLXJlYWQtY2FzZS1saW5rLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgPCEtLSA8Q09NUExFWCB0YWJsZSBleHBhbmRhYmxlIGJvZHkgY29tcGxleCBmaWVsZD4tLT5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICA8L3RkPlxuICAgICAgPC90cj5cbiAgICAgIDwhLS0gPC9DT01QTEVYIHRhYmxlIGV4cGFuZGVkIHZpZXc+LS0+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPC90Ym9keT5cbiAgPC90YWJsZT5cbjwvZGl2PlxuIl19