vc-create-dashboard 2.1.5 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/create-dashboard.umd.js +215 -34
- package/bundles/create-dashboard.umd.js.map +1 -1
- package/create-dashboard.metadata.json +1 -1
- package/esm2015/lib/create-dashboard-container/categories/categories.component.js +4 -3
- package/esm2015/lib/create-dashboard-container/configure-widgets/configure-widgets/configure-widgets.component.js +108 -4
- package/esm2015/lib/create-dashboard-container/configure-widgets/configure-widgets/configure-widgets.component.ngfactory.js +17 -15
- package/esm2015/lib/create-dashboard-container/configure-widgets/configure-widgets/configure-widgets.component.ngsummary.json +1 -1
- package/esm2015/lib/create-dashboard-container/create-dashboard.component.js +81 -16
- package/esm2015/lib/create-dashboard-container/create-dashboard.component.ngfactory.js +2 -2
- package/esm2015/lib/create-dashboard-container/responsibility-center/responsibility-center.component.js +4 -3
- package/esm2015/lib/create-dashboard-container/services/create-dashboard.service.js +14 -3
- package/esm2015/lib/create-dashboard-container/services/create-dashboard.service.ngsummary.json +1 -1
- package/fesm2015/create-dashboard.js +206 -24
- package/fesm2015/create-dashboard.js.map +1 -1
- package/lib/create-dashboard-container/configure-widgets/configure-widgets/configure-widgets.component.d.ts +10 -0
- package/lib/create-dashboard-container/create-dashboard.component.d.ts +1 -0
- package/lib/create-dashboard-container/services/create-dashboard.service.d.ts +2 -1
- package/package.json +1 -1
|
@@ -14,13 +14,17 @@ export class ConfigureWidgetsComponent {
|
|
|
14
14
|
this.selectedWidgets = [];
|
|
15
15
|
this.module = 'COMPLIANCE';
|
|
16
16
|
this.selectedWidgetsData = [];
|
|
17
|
+
this.displayedWidgets = [];
|
|
17
18
|
this.showRisk = false;
|
|
18
19
|
this.showCompliance = false;
|
|
20
|
+
this.mode = 'CREATE';
|
|
19
21
|
this.noDataText = 'You have not configured any widgets. Click on the <strong>Configure Widgets</strong> button to begin.';
|
|
20
22
|
this.selectedWidgetIds = [];
|
|
21
23
|
this.subResponsibilitiesSelected = false;
|
|
22
24
|
this.subKeyResponsibilitiesSelected = false;
|
|
23
25
|
this.showWidgets = true;
|
|
26
|
+
this.complianceWidgetsDisplayCount = 9;
|
|
27
|
+
this.riskWidgetsDisplayCount = 12;
|
|
24
28
|
this.widgetsList = {
|
|
25
29
|
COMPLIANCE: [
|
|
26
30
|
{
|
|
@@ -29,6 +33,7 @@ export class ConfigureWidgetsComponent {
|
|
|
29
33
|
description: 'Overview shows the performance of responsibilities and Responsibility Categories.',
|
|
30
34
|
widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/overview.png',
|
|
31
35
|
value: false,
|
|
36
|
+
visibility: true,
|
|
32
37
|
module: 'COMPLIANCE',
|
|
33
38
|
subWidgets: []
|
|
34
39
|
},
|
|
@@ -38,6 +43,7 @@ export class ConfigureWidgetsComponent {
|
|
|
38
43
|
description: 'The Responsibility Calendar shows the due dates of responsibilities in a calendar format. The responsibilities are color coded to reflect the status of the responsibilities.',
|
|
39
44
|
widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/responsibility-calender.png',
|
|
40
45
|
value: false,
|
|
46
|
+
visibility: true,
|
|
41
47
|
module: 'COMPLIANCE',
|
|
42
48
|
subWidgets: []
|
|
43
49
|
},
|
|
@@ -45,8 +51,9 @@ export class ConfigureWidgetsComponent {
|
|
|
45
51
|
title: 'Responsibility Center Overview',
|
|
46
52
|
id: 'responsibility_center_overview_flag',
|
|
47
53
|
description: 'The Responsibility Center Overview shows the performance of responsibilities and Responsibility Centers.',
|
|
48
|
-
widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/overview.png',
|
|
54
|
+
widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/responsibility-center-overview.png',
|
|
49
55
|
value: false,
|
|
56
|
+
visibility: true,
|
|
50
57
|
module: 'COMPLIANCE',
|
|
51
58
|
subWidgets: []
|
|
52
59
|
},
|
|
@@ -57,22 +64,26 @@ export class ConfigureWidgetsComponent {
|
|
|
57
64
|
widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/my-responsibilities.png',
|
|
58
65
|
tabOption: true,
|
|
59
66
|
value: false,
|
|
67
|
+
visibility: true,
|
|
60
68
|
module: 'COMPLIANCE',
|
|
61
69
|
subWidgets: [
|
|
62
70
|
{
|
|
63
71
|
title: 'My Responsibilities',
|
|
64
72
|
id: 'my_responsibility_flag',
|
|
65
73
|
value: false,
|
|
74
|
+
visibility: true,
|
|
66
75
|
},
|
|
67
76
|
{
|
|
68
77
|
title: 'I’m Reviewing',
|
|
69
78
|
id: 'reviewer_responsibility_flag',
|
|
70
79
|
value: false,
|
|
80
|
+
visibility: true,
|
|
71
81
|
},
|
|
72
82
|
{
|
|
73
83
|
title: 'I’m Overseeing',
|
|
74
84
|
id: 'cc_responsibility_flag',
|
|
75
85
|
value: false,
|
|
86
|
+
visibility: true,
|
|
76
87
|
}
|
|
77
88
|
]
|
|
78
89
|
},
|
|
@@ -83,27 +94,32 @@ export class ConfigureWidgetsComponent {
|
|
|
83
94
|
widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/key-responsibilities.png',
|
|
84
95
|
tabOption: true,
|
|
85
96
|
value: false,
|
|
97
|
+
visibility: true,
|
|
86
98
|
module: 'COMPLIANCE',
|
|
87
99
|
subWidgets: [
|
|
88
100
|
{
|
|
89
101
|
title: 'Overview',
|
|
90
102
|
id: 'key_responsibilities_overview_flag',
|
|
91
103
|
value: false,
|
|
104
|
+
visibility: true,
|
|
92
105
|
},
|
|
93
106
|
{
|
|
94
107
|
title: 'My Responsibilities',
|
|
95
108
|
id: 'key_my_responsibilities_flag',
|
|
96
109
|
value: false,
|
|
110
|
+
visibility: true,
|
|
97
111
|
},
|
|
98
112
|
{
|
|
99
113
|
title: 'I’m Reviewing',
|
|
100
114
|
id: 'key_i_am_reviewing_flag',
|
|
101
115
|
value: false,
|
|
116
|
+
visibility: true,
|
|
102
117
|
},
|
|
103
118
|
{
|
|
104
119
|
title: 'I’m Overseeing',
|
|
105
120
|
id: 'key_i_am_overseeing_flag',
|
|
106
121
|
value: false,
|
|
122
|
+
visibility: true,
|
|
107
123
|
}
|
|
108
124
|
]
|
|
109
125
|
},
|
|
@@ -113,6 +129,7 @@ export class ConfigureWidgetsComponent {
|
|
|
113
129
|
description: 'The Trend Analysis is a graphical representation of the performance of responsibilities over a period.',
|
|
114
130
|
widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/trend-analysis.png',
|
|
115
131
|
value: false,
|
|
132
|
+
visibility: true,
|
|
116
133
|
module: 'COMPLIANCE',
|
|
117
134
|
subWidgets: []
|
|
118
135
|
},
|
|
@@ -122,6 +139,7 @@ export class ConfigureWidgetsComponent {
|
|
|
122
139
|
description: 'The Responsibility Workroom shows updates from the Responsibility Workrooms. A Responsibility Workroom exists for all responsibilities.',
|
|
123
140
|
widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/workroom-updates.png',
|
|
124
141
|
value: false,
|
|
142
|
+
visibility: true,
|
|
125
143
|
module: 'COMPLIANCE',
|
|
126
144
|
subWidgets: []
|
|
127
145
|
},
|
|
@@ -131,6 +149,7 @@ export class ConfigureWidgetsComponent {
|
|
|
131
149
|
description: 'This is a chronological view of the recent updates of responsibilities.',
|
|
132
150
|
widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/recent-activities.png',
|
|
133
151
|
value: false,
|
|
152
|
+
visibility: true,
|
|
134
153
|
module: 'COMPLIANCE',
|
|
135
154
|
subWidgets: []
|
|
136
155
|
},
|
|
@@ -140,6 +159,7 @@ export class ConfigureWidgetsComponent {
|
|
|
140
159
|
description: 'Exceptions Summary show the number of responsibilities that are either not accepted, not completed or deleted.',
|
|
141
160
|
widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/exception-summary.png',
|
|
142
161
|
value: false,
|
|
162
|
+
visibility: true,
|
|
143
163
|
module: 'COMPLIANCE',
|
|
144
164
|
subWidgets: []
|
|
145
165
|
}
|
|
@@ -151,6 +171,7 @@ export class ConfigureWidgetsComponent {
|
|
|
151
171
|
description: 'This widget shows the number and percentage of risks within each risk response strategy.',
|
|
152
172
|
widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/risk-overview.png',
|
|
153
173
|
value: false,
|
|
174
|
+
visibility: true,
|
|
154
175
|
module: 'RISK',
|
|
155
176
|
subWidgets: []
|
|
156
177
|
},
|
|
@@ -160,27 +181,32 @@ export class ConfigureWidgetsComponent {
|
|
|
160
181
|
description: 'This widget shows the number of risks within each risk appetite, the number of risks that exceed the risk appetite, the number of risks that exceed the risk tolerance, the number of risks within each risk rating, and the number of risks that do not have any linked controls.',
|
|
161
182
|
widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/appetite-tolerance.png',
|
|
162
183
|
value: false,
|
|
184
|
+
visibility: true,
|
|
163
185
|
module: 'RISK',
|
|
164
186
|
subWidgets: [
|
|
165
187
|
{
|
|
166
188
|
title: 'Risk Appetite & Tolerance',
|
|
167
189
|
id: 'risk_appetite_tolerance',
|
|
168
190
|
value: false,
|
|
191
|
+
visibility: true,
|
|
169
192
|
},
|
|
170
193
|
{
|
|
171
194
|
title: 'Risk Ratings',
|
|
172
195
|
id: 'risk_ratings',
|
|
173
196
|
value: false,
|
|
197
|
+
visibility: true,
|
|
174
198
|
},
|
|
175
199
|
{
|
|
176
200
|
title: 'Risks Without Controls',
|
|
177
201
|
id: 'risks_without_controls',
|
|
178
202
|
value: false,
|
|
203
|
+
visibility: true,
|
|
179
204
|
},
|
|
180
205
|
{
|
|
181
206
|
title: 'Exceeds Risk Tolerance',
|
|
182
207
|
id: 'exceeds_risk_tolerance',
|
|
183
208
|
value: false,
|
|
209
|
+
visibility: true,
|
|
184
210
|
},
|
|
185
211
|
]
|
|
186
212
|
},
|
|
@@ -190,6 +216,7 @@ export class ConfigureWidgetsComponent {
|
|
|
190
216
|
description: 'This widget shows the number of risks within each inherent risk rating, grouped according to the Responsibility Center exposed to the risk.',
|
|
191
217
|
widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/inherent-RC.png',
|
|
192
218
|
value: false,
|
|
219
|
+
visibility: true,
|
|
193
220
|
module: 'RISK',
|
|
194
221
|
subWidgets: []
|
|
195
222
|
},
|
|
@@ -199,6 +226,7 @@ export class ConfigureWidgetsComponent {
|
|
|
199
226
|
description: 'This widget shows the number of risks within each residual risk rating, grouped according to the Responsibility Center exposed to the risk.',
|
|
200
227
|
widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/residual-RC.png',
|
|
201
228
|
value: false,
|
|
229
|
+
visibility: true,
|
|
202
230
|
module: 'RISK',
|
|
203
231
|
subWidgets: []
|
|
204
232
|
},
|
|
@@ -208,6 +236,7 @@ export class ConfigureWidgetsComponent {
|
|
|
208
236
|
description: 'This widgets shows the number of risks within each status, grouped according to the Risk Category the risk is assigned to.',
|
|
209
237
|
widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/risk-category-overview.png',
|
|
210
238
|
value: false,
|
|
239
|
+
visibility: true,
|
|
211
240
|
module: 'RISK',
|
|
212
241
|
subWidgets: []
|
|
213
242
|
},
|
|
@@ -217,6 +246,7 @@ export class ConfigureWidgetsComponent {
|
|
|
217
246
|
description: 'The Risk Heatmap displays the risk matrix for any two risk factors.',
|
|
218
247
|
widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/risk-heatmap.png',
|
|
219
248
|
value: false,
|
|
249
|
+
visibility: true,
|
|
220
250
|
module: 'RISK',
|
|
221
251
|
subWidgets: []
|
|
222
252
|
},
|
|
@@ -226,6 +256,7 @@ export class ConfigureWidgetsComponent {
|
|
|
226
256
|
description: 'This widget shows the number of risks within each inherent risk rating, grouped according to the Risk Category that the risk is assigned to.',
|
|
227
257
|
widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/inherent-categories.png',
|
|
228
258
|
value: false,
|
|
259
|
+
visibility: true,
|
|
229
260
|
module: 'RISK',
|
|
230
261
|
subWidgets: []
|
|
231
262
|
},
|
|
@@ -235,6 +266,7 @@ export class ConfigureWidgetsComponent {
|
|
|
235
266
|
description: 'This widget shows the number of risks within each residual risk rating, grouped according to the Risk Category that the risk is assigned to.',
|
|
236
267
|
widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/residual-categories.png',
|
|
237
268
|
value: false,
|
|
269
|
+
visibility: true,
|
|
238
270
|
module: 'RISK',
|
|
239
271
|
subWidgets: []
|
|
240
272
|
},
|
|
@@ -244,6 +276,7 @@ export class ConfigureWidgetsComponent {
|
|
|
244
276
|
description: 'This widget is a graphical representation of the number of risks within each inherent risk rating, grouped according to the Responsibility Center exposed to the risk.',
|
|
245
277
|
widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/inherent-trend.png',
|
|
246
278
|
value: false,
|
|
279
|
+
visibility: true,
|
|
247
280
|
module: 'RISK',
|
|
248
281
|
subWidgets: []
|
|
249
282
|
},
|
|
@@ -253,6 +286,7 @@ export class ConfigureWidgetsComponent {
|
|
|
253
286
|
description: 'This widget is a graphical representation of the number of risks within each residual risk rating, grouped according to the Responsibility Center exposed to the risk.',
|
|
254
287
|
widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/residual-trend.png',
|
|
255
288
|
value: false,
|
|
289
|
+
visibility: true,
|
|
256
290
|
module: 'RISK',
|
|
257
291
|
subWidgets: []
|
|
258
292
|
},
|
|
@@ -262,6 +296,7 @@ export class ConfigureWidgetsComponent {
|
|
|
262
296
|
description: 'This widgets is a trend chart that shows the inherent and residual risk rating trend across the different Risk Categories.',
|
|
263
297
|
widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/risk-trend.png',
|
|
264
298
|
value: false,
|
|
299
|
+
visibility: true,
|
|
265
300
|
module: 'RISK',
|
|
266
301
|
subWidgets: []
|
|
267
302
|
},
|
|
@@ -271,6 +306,7 @@ export class ConfigureWidgetsComponent {
|
|
|
271
306
|
description: 'This widgets shows ths top five risks with the highest risk rating.',
|
|
272
307
|
widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/5-risk-ratings.png',
|
|
273
308
|
value: false,
|
|
309
|
+
visibility: true,
|
|
274
310
|
module: 'RISK',
|
|
275
311
|
subWidgets: []
|
|
276
312
|
}
|
|
@@ -278,6 +314,54 @@ export class ConfigureWidgetsComponent {
|
|
|
278
314
|
};
|
|
279
315
|
}
|
|
280
316
|
ngOnChanges() {
|
|
317
|
+
if (this.mode == 'EDIT') {
|
|
318
|
+
this.setWidgetsVisibilityToFalse();
|
|
319
|
+
this.riskWidgetsDisplayCount = 0;
|
|
320
|
+
this.complianceWidgetsDisplayCount = 0;
|
|
321
|
+
const finalData = [...new Set(this.displayedWidgets)];
|
|
322
|
+
finalData.forEach((element, index) => {
|
|
323
|
+
this.widgetsList.COMPLIANCE.forEach((ele) => {
|
|
324
|
+
if (ele.id == element.widget_code) {
|
|
325
|
+
ele.visibility = true;
|
|
326
|
+
if (ele.subWidgets.length > 0) {
|
|
327
|
+
const filterData = [];
|
|
328
|
+
element.sub_widgets.filter((subwidget) => {
|
|
329
|
+
filterData.push(subwidget.widget_code);
|
|
330
|
+
});
|
|
331
|
+
ele.subWidgets.forEach((subElement, subIndex) => {
|
|
332
|
+
if (filterData.includes(subElement.id)) {
|
|
333
|
+
ele.subWidgets[subIndex].visibility = true;
|
|
334
|
+
}
|
|
335
|
+
else {
|
|
336
|
+
ele.subWidgets[subIndex].visibility = false;
|
|
337
|
+
}
|
|
338
|
+
});
|
|
339
|
+
}
|
|
340
|
+
this.complianceWidgetsDisplayCount++;
|
|
341
|
+
}
|
|
342
|
+
});
|
|
343
|
+
this.widgetsList.RISK.forEach((ele) => {
|
|
344
|
+
if (ele.id == element.widget_code) {
|
|
345
|
+
ele.visibility = true;
|
|
346
|
+
if (ele.subWidgets.length > 0) {
|
|
347
|
+
const filterData = [];
|
|
348
|
+
element.sub_widgets.filter((subwidget) => {
|
|
349
|
+
filterData.push(subwidget.widget_code);
|
|
350
|
+
});
|
|
351
|
+
ele.subWidgets.forEach((subElement, subIndex) => {
|
|
352
|
+
if (filterData.includes(subElement.id)) {
|
|
353
|
+
ele.subWidgets[subIndex].visibility = true;
|
|
354
|
+
}
|
|
355
|
+
else {
|
|
356
|
+
ele.subWidgets[subIndex].visibility = false;
|
|
357
|
+
}
|
|
358
|
+
});
|
|
359
|
+
}
|
|
360
|
+
this.riskWidgetsDisplayCount++;
|
|
361
|
+
}
|
|
362
|
+
});
|
|
363
|
+
});
|
|
364
|
+
}
|
|
281
365
|
const data = [...new Set(this.selectedWidgetsData)];
|
|
282
366
|
data.forEach((element, index) => {
|
|
283
367
|
this.widgetsList.COMPLIANCE.forEach((ele) => {
|
|
@@ -403,11 +487,29 @@ export class ConfigureWidgetsComponent {
|
|
|
403
487
|
this.dialog.close();
|
|
404
488
|
this.closeConfigureWidgets.emit(false);
|
|
405
489
|
}
|
|
490
|
+
setWidgetsVisibilityToFalse() {
|
|
491
|
+
this.widgetsList.COMPLIANCE.forEach((ele) => {
|
|
492
|
+
ele.visibility = false;
|
|
493
|
+
if (ele.subWidgets.length > 0) {
|
|
494
|
+
ele.subWidgets.forEach((subElement) => {
|
|
495
|
+
subElement.visibility = false;
|
|
496
|
+
});
|
|
497
|
+
}
|
|
498
|
+
});
|
|
499
|
+
this.widgetsList.RISK.forEach((ele) => {
|
|
500
|
+
ele.visibility = false;
|
|
501
|
+
if (ele.subWidgets.length > 0) {
|
|
502
|
+
ele.subWidgets.forEach((subElement) => {
|
|
503
|
+
subElement.visibility = false;
|
|
504
|
+
});
|
|
505
|
+
}
|
|
506
|
+
});
|
|
507
|
+
}
|
|
406
508
|
}
|
|
407
509
|
ConfigureWidgetsComponent.decorators = [
|
|
408
510
|
{ type: Component, args: [{
|
|
409
511
|
selector: 'app-configure-widgets',
|
|
410
|
-
template: "<div class=\"configure-widgets\" *ngIf=\"showWidgets\">\r\n <div class=\"configure-widgets-head\">\r\n <h3 class=\"configure-widgets-title\">Configure Widgets</h3>\r\n <button class=\"configure-widgets-back\" (click)=\"closeConfigureDashboard()\">\r\n <i class=\"icons\"></i> Back\r\n </button>\r\n </div>\r\n <div class=\"configure-widgets-body\">\r\n <div class=\"configure-widgets-tab\">\r\n <ul>\r\n <li [class.active]=\"module === 'COMPLIANCE'\" *ngIf=\"showCompliance\" (click)=\"module='COMPLIANCE'\"
|
|
512
|
+
template: "<div class=\"configure-widgets\" *ngIf=\"showWidgets\">\r\n <div class=\"configure-widgets-head\">\r\n <h3 class=\"configure-widgets-title\">Configure Widgets</h3>\r\n <button class=\"configure-widgets-back\" (click)=\"closeConfigureDashboard()\">\r\n <i class=\"icons\"></i> Back\r\n </button>\r\n </div>\r\n <div class=\"configure-widgets-body\">\r\n <div class=\"configure-widgets-tab\">\r\n <ul>\r\n <li [class.active]=\"module === 'COMPLIANCE'\" *ngIf=\"showCompliance\" (click)=\"module='COMPLIANCE'\">\r\n <button>Compliance<span>{{complianceWidgetsDisplayCount}}</span></button></li>\r\n <li [class.active]=\"module === 'RISK'\" *ngIf=\"showRisk\"><button\r\n (click)=\"module='RISK'\">Risks<span>{{riskWidgetsDisplayCount}}</span></button></li>\r\n </ul>\r\n </div>\r\n <div class=\"configure-widgets-search\">\r\n <i class=\"icons vx-fs-3\"></i>\r\n <input type=\"text\" placeholder=\"Search widgets\" [(ngModel)]=\"search\">\r\n </div>\r\n <div class=\"configure-widgets-list\" *ngIf=\"(widgetsList[module] | search:search).length !== 0\">\r\n <ng-container *ngFor=\"let widget of widgetsList[module] | search:search\">\r\n <div class=\"configure-widgets-item\" *ngIf=\"widget?.visibility\">\r\n <label class=\"block\">\r\n <input type=\"checkbox\" [checked]=\"widget.value\"\r\n (change)=\"selectWidget($event.target.checked,module,widget.id)\">\r\n <div class=\"check-icon\">\r\n <svg class=\"check\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 52 52\">\r\n <circle class=\"check-circle\" cx=\"26\" cy=\"26\" r=\"25\" fill=\"none\" />\r\n <path class=\"check-circle\" fill=\"none\" d=\"M14.1 27.2l7.1 7.2 16.7-16.8\" />\r\n </svg>\r\n </div>\r\n <div class=\"configure-widgets-item-head\">\r\n <h4 class=\"configure-widgets-item-title\" [innerHTML]=\"widget?.title\"></h4>\r\n <p class=\"configure-widgets-item-description\" [innerHTML]=\"widget?.description\"></p>\r\n <button class=\"configure-widgets-item-button add\"\r\n (click)=\"selectWidget(true,module,widget.id) \">+ ADD</button>\r\n <button class=\"configure-widgets-item-button remove\"\r\n (click)=\"selectWidget(false,module,widget.id) \">- Remove</button>\r\n </div>\r\n <div class=\"configure-widgets-item-body\">\r\n <div class=\"image-wrapper\">\r\n <img [src]=\"widget?.widgetImage\" alt=\"\">\r\n </div>\r\n <div class=\"floating-option vx-d-flex\" *ngIf=\"widget?.subWidgets?.length>0\">\r\n <ng-container *ngFor=\"let subWidget of widget.subWidgets\">\r\n <app-cs-checkbox *ngIf=\"subWidget.visibility\"\r\n (ngValueChange)=\"selectWidget($event, module,widget.id,subWidget.id)\"\r\n [ngValue]=\"subWidget.value\">{{subWidget.title}}\r\n </app-cs-checkbox>\r\n </ng-container>\r\n \r\n </div>\r\n\r\n </div>\r\n </label>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- No Data Image -->\r\n\r\n </div>\r\n <app-no-data *ngIf=\"(widgetsList[module] | search:search).length === 0 \"\r\n [noDataImage]=\"'https://cdn.v-comply.com/libraries/configure-widget/assets/images/configure-widget.svg'\"\r\n [noDataText]=\"'No data to display'\">\r\n </app-no-data>\r\n </div>\r\n\r\n <floating-bar (submitEvent)=\"onNextClick()\" (cancelEvent)=\"closeConfigureDashboard()\"\r\n [selectedData]=\"selectedWidgets\" (deleteEvent)=\"removeWidget($event)\"></floating-bar>\r\n</div>",
|
|
411
513
|
styles: ["@import url(\"https://cdn.v-comply.com/design-system/css/mixin/mixin.css\");@import url(\"https://cdn.v-comply.com/design-system/css/icons/icons.css\");@import url(\"https://cdn.v-comply.com/design-system/css/color/color.css\");@import url(\"https://cdn.v-comply.com/design-system/css/text/text.css\");@import url(\"https://cdn.v-comply.com/design-system/css/display/display.css\");@import url(\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\");::ng-deep .configure-widgets{display:block;width:calc(100vw - 48px);height:100vh;margin-left:48px;background:#fff}::ng-deep .configure-widgets-head{height:44px;background:#fbfbfb;padding:12px;display:flex;justify-content:space-between;border-bottom:1px solid #f1f1f1}::ng-deep .configure-widgets-title{line-height:20px;font-weight:500;font-size:14px;color:#161b2f;margin:0}::ng-deep .configure-widgets-back{border:none;outline:none;color:#161b2f;font-size:14px;font-weight:500;line-height:20px;display:inline-flex;background:#0000;margin:0;padding:0}::ng-deep .configure-widgets-back i{margin-right:6px;font-size:20px}::ng-deep .configure-widgets-body{padding:4px 36px;position:relative}::ng-deep .configure-widgets-body .floating-option{position:absolute;right:0;bottom:0;left:0;background:#fff;padding:16px 12px;z-index:3;box-shadow:0 -6px 12px #1e5dd31a}::ng-deep .configure-widgets-body .floating-option app-cs-checkbox{display:flex}::ng-deep .configure-widgets-body .floating-option app-cs-checkbox label span.value{color:#161b2f!important;font-size:11px!important;line-height:16px!important;margin-left:8px!important;white-space:nowrap}::ng-deep .configure-widgets-body .floating-option app-cs-checkbox+app-cs-checkbox{margin-left:20px}::ng-deep .configure-widgets-body app-no-data .no-data-wrapper{height:calc(100vh - 222px)!important}::ng-deep .configure-widgets-tab ul{padding:0;margin:0 0 12px;display:flex;border-bottom:1px solid #dbdbdb}::ng-deep .configure-widgets-tab ul li{list-style:none;display:block;width:auto;padding:0}::ng-deep .configure-widgets-tab ul li button{color:#747576;display:inline-block;font-size:11px;line-height:16px;font-weight:600;text-transform:uppercase;border:none;outline:none;background:#0000;padding:8px 0;position:relative;margin:0}::ng-deep .configure-widgets-tab ul li button span{display:inline-block;margin-left:8px;color:#74757680}::ng-deep .configure-widgets-tab ul li+li{padding-left:40px}::ng-deep .configure-widgets-tab ul li.active button{color:#1e5dd3}::ng-deep .configure-widgets-tab ul li.active button span{color:#1e5dd3}::ng-deep .configure-widgets-tab ul li.active button:after{content:\"\";right:0;bottom:0;left:0;height:2px;border-radius:2px;position:absolute;background-color:#1e5dd3}::ng-deep .configure-widgets-search{position:relative;margin-bottom:24px}::ng-deep .configure-widgets-search i{position:absolute;top:16px;left:16px;color:#dbdbdb}::ng-deep .configure-widgets-search input{border:1px solid #dbdbdb;border-radius:4px;height:44px;padding:10px 180px 10px 40px;width:100%;font-size:14px;color:#747576;outline:none}::ng-deep .configure-widgets-search input:focus{border-color:#1e5dd3;box-shadow:0 0 5px #1e5dd345}::ng-deep .configure-widgets-list{display:flex;flex-wrap:wrap;margin:0 -24px;height:calc(100vh - 238px);overflow:auto}::ng-deep .configure-widgets-item{width:50%;padding:0 24px;margin-bottom:40px}::ng-deep .configure-widgets-item .block{background:#f8f8f8;border-radius:4px;padding:16px 44px 4px;cursor:pointer;position:relative;display:block}::ng-deep .configure-widgets-item .block .check-icon{position:absolute;top:8px;left:0;height:36px;width:36px;border-radius:0 4px 4px 0;display:flex;justify-content:center;align-items:center;background:#34aa44;opacity:0;pointer-events:none}::ng-deep .configure-widgets-item .block .check-icon .check{display:none;width:27px;height:27px;background:#0000;border-radius:50%;stroke-width:4;stroke:#fff;stroke-miterlimit:10;box-shadow:inset 0 0 0 #fff;animation:fillCheck .4s ease-in-out .4s forwards,scale .3s ease-in-out .9s both;margin-top:0}::ng-deep .configure-widgets-item .block .check-icon .check-circle{stroke-dasharray:166;stroke-dashoffset:166;stroke-width:4;stroke-miterlimit:10;stroke:#fff;fill:none;animation:strokeCheck .6s cubic-bezier(.65,0,.45,1) forwards}::ng-deep .configure-widgets-item .block .check-icon .check-check{transform-origin:50% 50%;stroke-dasharray:48;stroke-dashoffset:48;animation:strokeCheck .3s cubic-bezier(.65,0,.45,1) .8s forwards}::ng-deep .configure-widgets-item .block input[type=checkbox]{opacity:0;position:absolute}::ng-deep .configure-widgets-item .block input[type=checkbox]:checked+.check-icon{opacity:1}::ng-deep .configure-widgets-item .block input[type=checkbox]:checked+.check-icon .check{display:block}::ng-deep .configure-widgets-item .block input[type=checkbox]:checked~.configure-widgets-item-body .image-wrapper{opacity:.5}::ng-deep .configure-widgets-item .block input[type=checkbox]:checked~.configure-widgets-item-head button.add{display:none}::ng-deep .configure-widgets-item .block input[type=checkbox]:checked~.configure-widgets-item-head button.remove{display:flex}::ng-deep .configure-widgets-item-head{padding:0 0 16px;position:relative}::ng-deep .configure-widgets-item-title{margin:0 0 12px;font-size:14px;line-height:20px;text-transform:uppercase;color:#161b2f;max-width:calc(100% - 72px);font-weight:500}::ng-deep .configure-widgets-item-description{font-size:12px;line-height:20px;color:#747576;margin:0;font-weight:400;height:60px}::ng-deep .configure-widgets-item-button{width:72px;height:28px;cursor:pointer;display:flex;position:absolute;top:0;right:-24px;font-size:11px;font-weight:500;border:none;outline:none;justify-content:center;align-items:center;border-radius:2px;text-transform:uppercase;padding:0;margin:0}::ng-deep .configure-widgets-item-button.add{color:#fff;background:#1e5dd3}::ng-deep .configure-widgets-item-button.remove{background:#fff;border:1px solid #f1f1f1;color:#c7381b;display:none}::ng-deep .configure-widgets-item-body{overflow:hidden;height:220px;border:1px solid #f1f1f1;border-bottom:none;border-radius:2px 2px 0 0;box-shadow:0 -4px 8px #161b2f10}::ng-deep .configure-widgets-item-body .image-wrapper{box-shadow:0 -6px 12px #0000001a;border-radius:2px;overflow:hidden;background:#fff}::ng-deep .configure-widgets-item-body img{width:100%}@keyframes strokeCheck{to{stroke-dashoffset:0}}@keyframes fillCheck{to{box-shadow:inset 0 0 0 2px #fff}}.disabled{pointer-events:none;opacity:.7}"]
|
|
412
514
|
},] }
|
|
413
515
|
];
|
|
@@ -420,7 +522,9 @@ ConfigureWidgetsComponent.propDecorators = {
|
|
|
420
522
|
widgetsDataModified: [{ type: Output }],
|
|
421
523
|
closeConfigureWidgets: [{ type: Output }],
|
|
422
524
|
selectedWidgetsData: [{ type: Input }],
|
|
525
|
+
displayedWidgets: [{ type: Input }],
|
|
423
526
|
showRisk: [{ type: Input }],
|
|
424
|
-
showCompliance: [{ type: Input }]
|
|
527
|
+
showCompliance: [{ type: Input }],
|
|
528
|
+
mode: [{ type: Input }]
|
|
425
529
|
};
|
|
426
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJlLXdpZGdldHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3JlYXRlLWRhc2hib2FyZC9zcmMvbGliL2NyZWF0ZS1kYXNoYm9hcmQtY29udGFpbmVyL2NvbmZpZ3VyZS13aWRnZXRzL2NvbmZpZ3VyZS13aWRnZXRzL2NvbmZpZ3VyZS13aWRnZXRzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNuRixPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcxRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFOUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBTzlFLE1BQU0sT0FBTyx5QkFBeUI7SUFtQnBDLFlBQ1UsTUFBaUIsRUFDbEIsdUJBQWdELEVBQy9DLFFBQXdCO1FBRnhCLFdBQU0sR0FBTixNQUFNLENBQVc7UUFDbEIsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUF5QjtRQUMvQyxhQUFRLEdBQVIsUUFBUSxDQUFnQjtRQXBCeEIsd0JBQW1CLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDNUQsMEJBQXFCLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFeEUsV0FBTSxHQUFXLEVBQUUsQ0FBQztRQUNwQixpQkFBWSxHQUE2QyxFQUFFLENBQUM7UUFDNUQsb0JBQWUsR0FBMkIsRUFBRSxDQUFDO1FBRTdDLFdBQU0sR0FBMEIsWUFBWSxDQUFDO1FBQ3BDLHdCQUFtQixHQUFRLEVBQUUsQ0FBQztRQUM5QixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBQ2hDLGVBQVUsR0FBRyx1R0FBdUcs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MUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pDLENBQUM7OztZQXZhRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHVCQUF1QjtnQkFDakMscWpJQUFpRDs7YUFFbEQ7OztZQVJRLFNBQVM7WUFKVCx1QkFBdUI7WUFNdkIsZUFBZTs7O2tDQVNyQixNQUFNO29DQUNOLE1BQU07a0NBT04sS0FBSzt1QkFDTCxLQUFLOzZCQUNMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25maWd1cmVXaWRnZXRzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NvbmZpZ3VyZS13aWRnZXRzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgcmV0cnkgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IHdpZGdldERhdGFNb2RlbCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvd2lkZ2V0LWRhdGEtbW9kZWwnO1xyXG5pbXBvcnQgeyBEaWFsb2dSZWYgfSBmcm9tICcuLi8uLi8uLi91aS1raXQvZGlhbG9nL2RpYWxvZy1yZWYnO1xyXG5pbXBvcnQgeyB3aWRnZXRDb25maWcgfSBmcm9tICcuL3dpZGdldC5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBTbmFja0JhclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi91aS1raXQvc25hY2stYmFyL3NuYWNrLWJhci5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWNvbmZpZ3VyZS13aWRnZXRzJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY29uZmlndXJlLXdpZGdldHMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NvbmZpZ3VyZS13aWRnZXRzLmNvbXBvbmVudC5sZXNzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIENvbmZpZ3VyZVdpZGdldHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XHJcblxyXG4gIEBPdXRwdXQoKSB3aWRnZXRzRGF0YU1vZGlmaWVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgY2xvc2VDb25maWd1cmVXaWRnZXRzOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBjaGVja2JveFN0YXR1cyE6IGFueTtcclxuICBzZWFyY2g6IHN0cmluZyA9ICcnO1xyXG4gIGNoZWNrZWRBcnJheTogQXJyYXk8eyBpbmRleDogbnVtYmVyLCBzdGF0dXM6IG51bWJlciB9PiA9IFtdO1xyXG4gIHNlbGVjdGVkV2lkZ2V0czogQXJyYXk8d2lkZ2V0RGF0YU1vZGVsPiA9IFtdO1xyXG5cclxuICBtb2R1bGU6IFwiQ09NUExJQU5DRVwiIHwgXCJSSVNLXCIgPSAnQ09NUExJQU5DRSc7XHJcbiAgQElucHV0KCkgc2VsZWN0ZWRXaWRnZXRzRGF0YTogYW55ID0gW107XHJcbiAgQElucHV0KCkgc2hvd1Jpc2sgPSBmYWxzZTtcclxuICBASW5wdXQoKSBzaG93Q29tcGxpYW5jZSA9IGZhbHNlOyAgXHJcbiAgbm9EYXRhVGV4dCA9ICdZb3UgaGF2ZSBub3QgY29uZmlndXJlZCBhbnkgd2lkZ2V0cy4gQ2xpY2sgb24gdGhlIDxzdHJvbmc+Q29uZmlndXJlIFdpZGdldHM8L3N0cm9uZz4gYnV0dG9uIHRvIGJlZ2luLic7XHJcblxyXG4gIHNlbGVjdGVkV2lkZ2V0SWRzOiBhbnkgPSBbXTtcclxuICBzdWJSZXNwb25zaWJpbGl0aWVzU2VsZWN0ZWQ6IGJvb2xlYW4gPSBmYWxzZVxyXG4gIHN1YktleVJlc3BvbnNpYmlsaXRpZXNTZWxlY3RlZDogYm9vbGVhbiA9IGZhbHNlXHJcbiAgc2hvd1dpZGdldHMgPXRydWU7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGRpYWxvZzogRGlhbG9nUmVmLFxyXG4gICAgcHVibGljIGNvbmZpZ3VyZVdpZGdldHNTZXJ2aWNlOiBDb25maWd1cmVXaWRnZXRzU2VydmljZSxcclxuICAgIHByaXZhdGUgc25hY2tCYXI6U25hY2tCYXJTZXJ2aWNlKSB7XHJcblxyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoKSB7XHJcbiAgICBjb25zdCBkYXRhID0gWy4uLm5ldyBTZXQodGhpcy5zZWxlY3RlZFdpZGdldHNEYXRhKV07XHJcbiAgICBkYXRhLmZvckVhY2goKGVsZW1lbnQ6IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLndpZGdldHNMaXN0LkNPTVBMSUFOQ0UuZm9yRWFjaCgoZWxlOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoZWxlLmlkID09IGVsZW1lbnQud2lkZ2V0X2NvZGUgJiYgZWxlbWVudC5zdGF0ZSA9PSAnQUNUSVZFJykge1xyXG4gICAgICAgICAgIGVsZS52YWx1ZSA9IHRydWU7XHJcbiAgICAgICAgICAgaWYoZWxlLnN1YldpZGdldHMubGVuZ3RoPjApe1xyXG4gICAgICAgICAgICBjb25zdCBmaWx0ZXJEYXRhOiBhbnkgPSBbXVxyXG4gICAgICAgICAgICBlbGVtZW50LnN1Yl93aWRnZXRzLmZpbHRlcigoc3Vid2lkZ2V0OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBpZiAoc3Vid2lkZ2V0LnN0YXRlID09ICdBQ1RJVkUnKSB7XHJcbiAgICAgICAgICAgICAgICBmaWx0ZXJEYXRhLnB1c2goc3Vid2lkZ2V0LndpZGdldF9jb2RlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgZWxlLnN1YldpZGdldHMuZm9yRWFjaCgoc3ViRWxlbWVudDphbnksIHN1YkluZGV4Om51bWJlcikgPT4ge1xyXG4gICAgICAgICAgICAgICBpZihmaWx0ZXJEYXRhLmluY2x1ZGVzKHN1YkVsZW1lbnQuaWQpKXtcclxuICAgICAgICAgICAgICAgIGVsZS5zdWJXaWRnZXRzW3N1YkluZGV4XS52YWx1ZT0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICBlbGUuc3ViV2lkZ2V0c1tzdWJJbmRleF0udmFsdWU9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgfVxyXG4gICAgICAgICAgIHRoaXMuc2VsZWN0ZWRXaWRnZXRzLnB1c2goZWxlKTtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLndpZGdldHNMaXN0LlJJU0suZm9yRWFjaCgoZWxlOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoZWxlLmlkID09IGVsZW1lbnQud2lkZ2V0X2NvZGUgJiYgZWxlbWVudC5zdGF0ZSA9PSAnQUNUSVZFJykge1xyXG4gICAgICAgICAgIGVsZS52YWx1ZSA9IHRydWU7XHJcbiAgICAgICAgICAgaWYoZWxlLnN1YldpZGdldHMubGVuZ3RoPjApe1xyXG4gICAgICAgICAgICBjb25zdCBmaWx0ZXJEYXRhOiBhbnkgPSBbXVxyXG4gICAgICAgICAgICBlbGVtZW50LnN1Yl93aWRnZXRzLmZpbHRlcigoc3Vid2lkZ2V0OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBpZiAoc3Vid2lkZ2V0LnN0YXRlID09ICdBQ1RJVkUnKSB7XHJcbiAgICAgICAgICAgICAgICBmaWx0ZXJEYXRhLnB1c2goc3Vid2lkZ2V0LndpZGdldF9jb2RlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgZWxlLnN1YldpZGdldHMuZm9yRWFjaCgoc3ViRWxlbWVudDphbnksIHN1YkluZGV4Om51bWJlcikgPT4ge1xyXG4gICAgICAgICAgICAgICBpZihmaWx0ZXJEYXRhLmluY2x1ZGVzKHN1YkVsZW1lbnQuaWQpKXtcclxuICAgICAgICAgICAgICAgIGVsZS5zdWJXaWRnZXRzW3N1YkluZGV4XS52YWx1ZT0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICBlbGUuc3ViV2lkZ2V0c1tzdWJJbmRleF0udmFsdWU9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgfVxyXG4gICAgICAgICAgIHRoaXMuc2VsZWN0ZWRXaWRnZXRzLnB1c2goZWxlKTtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICBcclxuICAgIH0pO1xyXG4gICAgdGhpcy5tb2R1bGUgPSAodGhpcy5zaG93Q29tcGxpYW5jZSk/J0NPTVBMSUFOQ0UnOidSSVNLJztcclxuICAgIHRoaXMuc2V0U2VsZWN0ZWRXaWRnZXRzKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHJcbiAgfVxyXG5cclxuXHJcbiAgd2lkZ2V0c0xpc3QgPSB7XHJcbiAgICBDT01QTElBTkNFOiBbXHJcbiAgICAgIHtcclxuICAgICAgICB0aXRsZTogJ092ZXJ2aWV3JyxcclxuICAgICAgICBpZDogJ292ZXJ2aWV3JyxcclxuICAgICAgICBkZXNjcmlwdGlvbjogJ092ZXJ2aWV3IHNob3dzIHRoZSBwZXJmb3JtYW5jZSBvZiByZXNwb25zaWJpbGl0aWVzIGFuZCBSZXNwb25zaWJpbGl0eSBDYXRlZ29yaWVzLicsXHJcbiAgICAgICAgd2lkZ2V0SW1hZ2U6ICdodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL2NvbmZpZ3VyZS13aWRnZXQvYXNzZXRzL2ltYWdlcy9vdmVydmlldy5wbmcnLFxyXG4gICAgICAgIHZhbHVlOiBmYWxzZSxcclxuICAgICAgICBtb2R1bGU6ICdDT01QTElBTkNFJyxcclxuICAgICAgICBzdWJXaWRnZXRzOiBbXVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdGl0bGU6ICdSZXNwb25zaWJpbGl0eSBDYWxlbmRhcicsXHJcbiAgICAgICAgaWQ6ICdjb21wbGlhbmNlX2NhbGVuZGFyX2ZsYWcnLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnVGhlIFJlc3BvbnNpYmlsaXR5IENhbGVuZGFyIHNob3dzIHRoZSBkdWUgZGF0ZXMgb2YgcmVzcG9uc2liaWxpdGllcyBpbiBhIGNhbGVuZGFyIGZvcm1hdC4gVGhlIHJlc3BvbnNpYmlsaXRpZXMgYXJlIGNvbG9yIGNvZGVkIHRvIHJlZmxlY3QgdGhlIHN0YXR1cyBvZiB0aGUgcmVzcG9uc2liaWxpdGllcy4nLFxyXG4gICAgICAgIHdpZGdldEltYWdlOiAnaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy9jb25maWd1cmUtd2lkZ2V0L2Fzc2V0cy9pbWFnZXMvcmVzcG9uc2liaWxpdHktY2FsZW5kZXIucG5nJyxcclxuICAgICAgICB2YWx1ZTogZmFsc2UsXHJcbiAgICAgICAgbW9kdWxlOiAnQ09NUExJQU5DRScsXHJcbiAgICAgICAgc3ViV2lkZ2V0czogW11cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHRpdGxlOiAnUmVzcG9uc2liaWxpdHkgQ2VudGVyIE92ZXJ2aWV3JyxcclxuICAgICAgICBpZDogJ3Jlc3BvbnNpYmlsaXR5X2NlbnRlcl9vdmVydmlld19mbGFnJyxcclxuICAgICAgICBkZXNjcmlwdGlvbjogJ1RoZSBSZXNwb25zaWJpbGl0eSBDZW50ZXIgT3ZlcnZpZXcgc2hvd3MgdGhlIHBlcmZvcm1hbmNlIG9mIHJlc3BvbnNpYmlsaXRpZXMgYW5kIFJlc3BvbnNpYmlsaXR5IENlbnRlcnMuJyxcclxuICAgICAgICB3aWRnZXRJbWFnZTogJ2h0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvY29uZmlndXJlLXdpZGdldC9hc3NldHMvaW1hZ2VzL292ZXJ2aWV3LnBuZycsXHJcbiAgICAgICAgdmFsdWU6IGZhbHNlLFxyXG4gICAgICAgIG1vZHVsZTogJ0NPTVBMSUFOQ0UnLFxyXG4gICAgICAgIHN1YldpZGdldHM6IFtdXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0aXRsZTogJ1Jlc3BvbnNpYmlsaXRpZXMnLFxyXG4gICAgICAgIGlkOiAnbXlfcmVzcG9uc2liaWxpdGllcycsXHJcbiAgICAgICAgZGVzY3JpcHRpb246ICdUaGlzIHdpZGdldCBzaG93cyB0aGUgcGVyZm9ybWFuY2Ugb2YgdGhlIHJlc3BvbnNpYmlsaXRpZXMgdGhhdCB5b3UgYXJlIHJlcXVpcmVkIHRvIGNvbXBsZXRlLCB0aGUgcmVzcG9uc2liaWxpdGllcyB0aGF0IHlvdSBhcmUgcmV2aWV3aW5nIGFuZCB0aGUgcmVzcG9uc2liaWxpdGllcyB0aGF0IHlvdSBhcmUgb3ZlcnNlZWluZy4nLFxyXG4gICAgICAgIHdpZGdldEltYWdlOiAnaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy9jb25maWd1cmUtd2lkZ2V0L2Fzc2V0cy9pbWFnZXMvbXktcmVzcG9uc2liaWxpdGllcy5wbmcnLFxyXG4gICAgICAgIHRhYk9wdGlvbjogdHJ1ZSxcclxuICAgICAgICB2YWx1ZTogZmFsc2UsXHJcbiAgICAgICAgbW9kdWxlOiAnQ09NUExJQU5DRScsXHJcbiAgICAgICAgc3ViV2lkZ2V0czogW1xyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB0aXRsZTogJ015IFJlc3BvbnNpYmlsaXRpZXMnLFxyXG4gICAgICAgICAgICBpZDogJ215X3Jlc3BvbnNpYmlsaXR5X2ZsYWcnLFxyXG4gICAgICAgICAgICB2YWx1ZTogZmFsc2UsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB0aXRsZTogJ0nigJltIFJldmlld2luZycsXHJcbiAgICAgICAgICAgIGlkOiAncmV2aWV3ZXJfcmVzcG9uc2liaWxpdHlfZmxhZycsXHJcbiAgICAgICAgICAgIHZhbHVlOiBmYWxzZSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHRpdGxlOiAnSeKAmW0gT3ZlcnNlZWluZycsXHJcbiAgICAgICAgICAgIGlkOiAnY2NfcmVzcG9uc2liaWxpdHlfZmxhZycsXHJcbiAgICAgICAgICAgIHZhbHVlOiBmYWxzZSxcclxuICAgICAgICAgIH1cclxuICAgICAgICBdXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0aXRsZTogJ0tleSBSZXNwb25zaWJpbGl0aWVzJyxcclxuICAgICAgICBpZDogJ2tleV9yZXNwb25zaWJpbGl0aWVzJyxcclxuICAgICAgICBkZXNjcmlwdGlvbjogJ1RoaXMgd2lkZ2V0IHNob3dzIHRoZSBwZXJmb3JtYW5jZSBvZiBrZXkgcmVzcG9uc2liaWxpdGllcyB0aGF0IHlvdSBhcmUgcmVxdWlyZWQgdG8gY29tcGxldGUsIHRoYXQgeW91IGFyZSByZXZpZXdpbmcsIHRoYXQgeW91IGFyZSBvdmVyc2VlaW5nIGFuZCB0aGF0IHlvdSBoYXZlIGFzc2lnbmVkIHRvIGFub3RoZXIgcGVyc29uLicsXHJcbiAgICAgICAgd2lkZ2V0SW1hZ2U6ICdodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL2NvbmZpZ3VyZS13aWRnZXQvYXNzZXRzL2ltYWdlcy9rZXktcmVzcG9uc2liaWxpdGllcy5wbmcnLFxyXG4gICAgICAgIHRhYk9wdGlvbjogdHJ1ZSxcclxuICAgICAgICB2YWx1ZTogZmFsc2UsXHJcbiAgICAgICAgbW9kdWxlOiAnQ09NUExJQU5DRScsXHJcbiAgICAgICAgc3ViV2lkZ2V0czogW1xyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB0aXRsZTogJ092ZXJ2aWV3JyxcclxuICAgICAgICAgICAgaWQ6ICdrZXlfcmVzcG9uc2liaWxpdGllc19vdmVydmlld19mbGFnJyxcclxuICAgICAgICAgICAgdmFsdWU6IGZhbHNlLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdGl0bGU6ICdNeSBSZXNwb25zaWJpbGl0aWVzJyxcclxuICAgICAgICAgICAgaWQ6ICdrZXlfbXlfcmVzcG9uc2liaWxpdGllc19mbGFnJyxcclxuICAgICAgICAgICAgdmFsdWU6IGZhbHNlLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdGl0bGU6ICdJ4oCZbSBSZXZpZXdpbmcnLFxyXG4gICAgICAgICAgICBpZDogJ2tleV9pX2FtX3Jldmlld2luZ19mbGFnJyxcclxuICAgICAgICAgICAgdmFsdWU6IGZhbHNlLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdGl0bGU6ICdJ4oCZbSBPdmVyc2VlaW5nJyxcclxuICAgICAgICAgICAgaWQ6ICdrZXlfaV9hbV9vdmVyc2VlaW5nX2ZsYWcnLFxyXG4gICAgICAgICAgICB2YWx1ZTogZmFsc2UsXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgXVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdGl0bGU6ICdUcmVuZCBBbmFseXNpcycsXHJcbiAgICAgICAgaWQ6ICd0cmVuZF9hbmFseXNpc19mbGFnJyxcclxuICAgICAgICBkZXNjcmlwdGlvbjogJ1RoZSBUcmVuZCBBbmFseXNpcyBpcyBhIGdyYXBoaWNhbCByZXByZXNlbnRhdGlvbiBvZiB0aGUgcGVyZm9ybWFuY2Ugb2YgcmVzcG9uc2liaWxpdGllcyBvdmVyIGEgcGVyaW9kLicsXHJcbiAgICAgICAgd2lkZ2V0SW1hZ2U6ICdodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL2NvbmZpZ3VyZS13aWRnZXQvYXNzZXRzL2ltYWdlcy90cmVuZC1hbmFseXNpcy5wbmcnLFxyXG4gICAgICAgIHZhbHVlOiBmYWxzZSxcclxuICAgICAgICBtb2R1bGU6ICdDT01QTElBTkNFJyxcclxuICAgICAgICBzdWJXaWRnZXRzOiBbXVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdGl0bGU6ICdXb3Jrcm9vbSBVcGRhdGVzJyxcclxuICAgICAgICBpZDogJ3dvcmtyb29tX2FsZXJ0X2ZsYWcnLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnVGhlIFJlc3BvbnNpYmlsaXR5IFdvcmtyb29tIHNob3dzIHVwZGF0ZXMgZnJvbSB0aGUgUmVzcG9uc2liaWxpdHkgV29ya3Jvb21zLiBBIFJlc3BvbnNpYmlsaXR5IFdvcmtyb29tIGV4aXN0cyBmb3IgYWxsIHJlc3BvbnNpYmlsaXRpZXMuJyxcclxuICAgICAgICB3aWRnZXRJbWFnZTogJ2h0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvY29uZmlndXJlLXdpZGdldC9hc3NldHMvaW1hZ2VzL3dvcmtyb29tLXVwZGF0ZXMucG5nJyxcclxuICAgICAgICB2YWx1ZTogZmFsc2UsXHJcbiAgICAgICAgbW9kdWxlOiAnQ09NUExJQU5DRScsXHJcbiAgICAgICAgc3ViV2lkZ2V0czogW11cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHRpdGxlOiAnUmVjZW50IEFjdGl2aXRpZXMnLFxyXG4gICAgICAgIGlkOiAncmVjZW50X2FjdGl2aXR5X2ZsYWcnLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnVGhpcyBpcyBhIGNocm9ub2xvZ2ljYWwgdmlldyBvZiB0aGUgcmVjZW50IHVwZGF0ZXMgb2YgcmVzcG9uc2liaWxpdGllcy4nLFxyXG4gICAgICAgIHdpZGdldEltYWdlOiAnaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy9jb25maWd1cmUtd2lkZ2V0L2Fzc2V0cy9pbWFnZXMvcmVjZW50LWFjdGl2aXRpZXMucG5nJyxcclxuICAgICAgICB2YWx1ZTogZmFsc2UsXHJcbiAgICAgICAgbW9kdWxlOiAnQ09NUExJQU5DRScsXHJcbiAgICAgICAgc3ViV2lkZ2V0czogW11cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHRpdGxlOiAnRXhjZXB0aW9uIFN1bW1hcnknLFxyXG4gICAgICAgIGlkOiAnZXhjZXB0aW9uX3N1bW1hcnlfZmxhZycsXHJcbiAgICAgICAgZGVzY3JpcHRpb246ICdFeGNlcHRpb25zIFN1bW1hcnkgc2hvdyB0aGUgbnVtYmVyIG9mIHJlc3BvbnNpYmlsaXRpZXMgdGhhdCBhcmUgZWl0aGVyIG5vdCBhY2NlcHRlZCwgbm90IGNvbXBsZXRlZCBvciBkZWxldGVkLicsXHJcbiAgICAgICAgd2lkZ2V0SW1hZ2U6ICdodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL2NvbmZpZ3VyZS13aWRnZXQvYXNzZXRzL2ltYWdlcy9leGNlcHRpb24tc3VtbWFyeS5wbmcnLFxyXG4gICAgICAgIHZhbHVlOiBmYWxzZSxcclxuICAgICAgICBtb2R1bGU6ICdDT01QTElBTkNFJyxcclxuICAgICAgICBzdWJXaWRnZXRzOiBbXVxyXG4gICAgICB9XHJcbiAgICBdLFxyXG4gICAgUklTSzogW1xyXG4gICAgICB7XHJcbiAgICAgICAgdGl0bGU6ICdSaXNrIE92ZXJ2aWV3JyxcclxuICAgICAgICBpZDogJ3Jpc2tfb3ZlcnZpZXcnLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnVGhpcyB3aWRnZXQgc2hvd3MgdGhlIG51bWJlciBhbmQgcGVyY2VudGFnZSBvZiByaXNrcyB3aXRoaW4gZWFjaCByaXNrIHJlc3BvbnNlIHN0cmF0ZWd5LicsXHJcbiAgICAgICAgd2lkZ2V0SW1hZ2U6ICdodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL2NvbmZpZ3VyZS13aWRnZXQvYXNzZXRzL2ltYWdlcy9yaXNrLW92ZXJ2aWV3LnBuZycsXHJcbiAgICAgICAgdmFsdWU6IGZhbHNlLFxyXG4gICAgICAgIG1vZHVsZTogJ1JJU0snLFxyXG4gICAgICAgIHN1YldpZGdldHM6IFtdXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0aXRsZTogJ1Jpc2sgTWV0cmljcycsXHJcbiAgICAgICAgaWQ6ICdyaXNrX21ldHJpY3MnLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnVGhpcyB3aWRnZXQgc2hvd3MgdGhlIG51bWJlciBvZiByaXNrcyB3aXRoaW4gZWFjaCByaXNrIGFwcGV0aXRlLCB0aGUgbnVtYmVyIG9mIHJpc2tzIHRoYXQgZXhjZWVkIHRoZSByaXNrIGFwcGV0aXRlLCB0aGUgbnVtYmVyIG9mIHJpc2tzIHRoYXQgZXhjZWVkIHRoZSByaXNrIHRvbGVyYW5jZSwgdGhlIG51bWJlciBvZiByaXNrcyB3aXRoaW4gZWFjaCByaXNrIHJhdGluZywgYW5kIHRoZSBudW1iZXIgb2Ygcmlza3MgdGhhdCBkbyBub3QgaGF2ZSBhbnkgbGlua2VkIGNvbnRyb2xzLicsXHJcbiAgICAgICAgd2lkZ2V0SW1hZ2U6ICdodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL2NvbmZpZ3VyZS13aWRnZXQvYXNzZXRzL2ltYWdlcy9hcHBldGl0ZS10b2xlcmFuY2UucG5nJyxcclxuICAgICAgICB2YWx1ZTogZmFsc2UsXHJcbiAgICAgICAgbW9kdWxlOiAnUklTSycsXHJcbiAgICAgICAgc3ViV2lkZ2V0czogW1xyXG5cclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdGl0bGU6ICdSaXNrIEFwcGV0aXRlICYgVG9sZXJhbmNlJyxcclxuICAgICAgICAgICAgaWQ6ICdyaXNrX2FwcGV0aXRlX3RvbGVyYW5jZScsXHJcbiAgICAgICAgICAgIHZhbHVlOiBmYWxzZSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHRpdGxlOiAnUmlzayBSYXRpbmdzJyxcclxuICAgICAgICAgICAgaWQ6ICdyaXNrX3JhdGluZ3MnLFxyXG4gICAgICAgICAgICB2YWx1ZTogZmFsc2UsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB0aXRsZTogJ1Jpc2tzIFdpdGhvdXQgQ29udHJvbHMnLFxyXG4gICAgICAgICAgICBpZDogJ3Jpc2tzX3dpdGhvdXRfY29udHJvbHMnLFxyXG4gICAgICAgICAgICB2YWx1ZTogZmFsc2UsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB0aXRsZTogJ0V4Y2VlZHMgUmlzayBUb2xlcmFuY2UnLFxyXG4gICAgICAgICAgICBpZDogJ2V4Y2VlZHNfcmlza190b2xlcmFuY2UnLFxyXG4gICAgICAgICAgICB2YWx1ZTogZmFsc2UsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIF1cclxuICAgICAgfSxcclxuXHJcbiAgICAgIHtcclxuICAgICAgICB0aXRsZTogJ0luaGVyZW50IFJpc2sgUmF0aW5nIGJ5IFJlc3BvbnNpYmlsaXR5IENlbnRlcnMgJyxcclxuICAgICAgICBpZDogJ2luaGVyZW50X3Jpc2tfcmF0aW5nX2J5X3Jlc3BvbnNpYmlsaXR5X2NlbnRlcnMnLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnVGhpcyB3aWRnZXQgc2hvd3MgdGhlIG51bWJlciBvZiByaXNrcyB3aXRoaW4gZWFjaCBpbmhlcmVudCByaXNrIHJhdGluZywgZ3JvdXBlZCBhY2NvcmRpbmcgdG8gdGhlwqBSZXNwb25zaWJpbGl0eSBDZW50ZXLCoGV4cG9zZWQgdG8gdGhlIHJpc2suJyxcclxuICAgICAgICB3aWRnZXRJbWFnZTogJ2h0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvY29uZmlndXJlLXdpZGdldC9hc3NldHMvaW1hZ2VzL2luaGVyZW50LVJDLnBuZycsXHJcbiAgICAgICAgdmFsdWU6IGZhbHNlLFxyXG4gICAgICAgIG1vZHVsZTogJ1JJU0snLFxyXG4gICAgICAgIHN1YldpZGdldHM6IFtdXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0aXRsZTogJ1Jlc2lkdWFsIFJpc2sgUmF0aW5nIGJ5IFJlc3BvbnNpYmlsaXR5IENlbnRlcnMgJyxcclxuICAgICAgICBpZDogJ3Jlc2lkdWFsX3Jpc2tfcmF0aW5nX2J5X3Jlc3BvbnNpYmlsaXR5X2NlbnRlcnMnLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnVGhpcyB3aWRnZXQgc2hvd3MgdGhlIG51bWJlciBvZiByaXNrcyB3aXRoaW4gZWFjaCByZXNpZHVhbCByaXNrIHJhdGluZywgZ3JvdXBlZCBhY2NvcmRpbmcgdG8gdGhlwqBSZXNwb25zaWJpbGl0eSBDZW50ZXLCoGV4cG9zZWQgdG8gdGhlIHJpc2suJyxcclxuICAgICAgICB3aWRnZXRJbWFnZTogJ2h0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvY29uZmlndXJlLXdpZGdldC9hc3NldHMvaW1hZ2VzL3Jlc2lkdWFsLVJDLnBuZycsXHJcbiAgICAgICAgdmFsdWU6IGZhbHNlLFxyXG4gICAgICAgIG1vZHVsZTogJ1JJU0snLFxyXG4gICAgICAgIHN1YldpZGdldHM6IFtdXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0aXRsZTogJ1Jpc2sgQ2F0ZWdvcnkgT3ZlcnZpZXcnLFxyXG4gICAgICAgIGlkOiAncmlza19jYXRlZ29yeV9vdmVydmlldycsXHJcbiAgICAgICAgZGVzY3JpcHRpb246ICdUaGlzIHdpZGdldHMgc2hvd3MgdGhlwqBudW1iZXIgb2Ygcmlza3Mgd2l0aGluIGVhY2ggc3RhdHVzLCBncm91cGVkIGFjY29yZGluZyB0byB0aGUgUmlzayBDYXRlZ29yeSB0aGUgcmlzayBpcyBhc3NpZ25lZCB0by4nLFxyXG4gICAgICAgIHdpZGdldEltYWdlOiAnaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy9jb25maWd1cmUtd2lkZ2V0L2Fzc2V0cy9pbWFnZXMvcmlzay1jYXRlZ29yeS1vdmVydmlldy5wbmcnLFxyXG4gICAgICAgIHZhbHVlOiBmYWxzZSxcclxuICAgICAgICBtb2R1bGU6ICdSSVNLJyxcclxuICAgICAgICBzdWJXaWRnZXRzOiBbXVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdGl0bGU6ICdSaXNrIEhlYXRtYXAnLFxyXG4gICAgICAgIGlkOiAncmlza19oZWF0bWFwJyxcclxuICAgICAgICBkZXNjcmlwdGlvbjogJ1RoZcKgUmlzayBIZWF0bWFwIGRpc3BsYXlzIHRoZSByaXNrIG1hdHJpeCBmb3IgYW55IHR3byByaXNrIGZhY3RvcnMuJyxcclxuICAgICAgICB3aWRnZXRJbWFnZTogJ2h0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvY29uZmlndXJlLXdpZGdldC9hc3NldHMvaW1hZ2VzL3Jpc2staGVhdG1hcC5wbmcnLFxyXG4gICAgICAgIHZhbHVlOiBmYWxzZSxcclxuICAgICAgICBtb2R1bGU6ICdSSVNLJyxcclxuICAgICAgICBzdWJXaWRnZXRzOiBbXVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdGl0bGU6ICdJbmhlcmVudCBSaXNrIFJhdGluZyBieSBDYXRlZ29yaWVzJyxcclxuICAgICAgICBpZDogJ2luaGVyZW50X3Jpc2tfcmF0aW5nX2J5X2NhdGVnb3JpZXMnLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnVGhpcyB3aWRnZXQgc2hvd3MgdGhlIG51bWJlciBvZiByaXNrcyB3aXRoaW4gZWFjaCBpbmhlcmVudCByaXNrIHJhdGluZywgZ3JvdXBlZCBhY2NvcmRpbmcgdG8gdGhlIFJpc2sgQ2F0ZWdvcnnCoHRoYXTCoHRoZSByaXNrIGlzIGFzc2lnbmVkIHRvLicsXHJcbiAgICAgICAgd2lkZ2V0SW1hZ2U6ICdodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL2NvbmZpZ3VyZS13aWRnZXQvYXNzZXRzL2ltYWdlcy9pbmhlcmVudC1jYXRlZ29yaWVzLnBuZycsXHJcbiAgICAgICAgdmFsdWU6IGZhbHNlLFxyXG4gICAgICAgIG1vZHVsZTogJ1JJU0snLFxyXG4gICAgICAgIHN1YldpZGdldHM6IFtdXHJcbiAgICAgIH0sXHJcblxyXG4gICAgICB7XHJcbiAgICAgICAgdGl0bGU6ICdSZXNpZHVhbCBSaXNrIFJhdGluZyBieSBDYXRlZ29yaWVzJyxcclxuICAgICAgICBpZDogJ3Jlc2lkdWFsX3Jpc2tfcmF0aW5nX2J5X2NhdGVnb3JpZXMnLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnVGhpcyB3aWRnZXQgc2hvd3MgdGhlIG51bWJlciBvZiByaXNrcyB3aXRoaW4gZWFjaCByZXNpZHVhbCByaXNrIHJhdGluZywgZ3JvdXBlZCBhY2NvcmRpbmcgdG8gdGhlIFJpc2sgQ2F0ZWdvcnnCoHRoYXTCoHRoZSByaXNrIGlzIGFzc2lnbmVkIHRvLicsXHJcbiAgICAgICAgd2lkZ2V0SW1hZ2U6ICdodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL2NvbmZpZ3VyZS13aWRnZXQvYXNzZXRzL2ltYWdlcy9yZXNpZHVhbC1jYXRlZ29yaWVzLnBuZycsXHJcbiAgICAgICAgdmFsdWU6IGZhbHNlLFxyXG4gICAgICAgIG1vZHVsZTogJ1JJU0snLFxyXG4gICAgICAgIHN1YldpZGdldHM6IFtdXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0aXRsZTogJ0luaGVyZW50IFJpc2sgUmF0aW5nIFRyZW5kIGJ5IFJlc3BvbnNpYmlsaXR5IENlbnRlcnMnLFxyXG4gICAgICAgIGlkOiAnaW5oZXJlbnRfcmlza19yYXRpbmdfdHJlbmRfYnlfcmVzcG9uc2liaWxpdHlfY2VudGVycycsXHJcbiAgICAgICAgZGVzY3JpcHRpb246ICdUaGlzIHdpZGdldCBpcyBhIGdyYXBoaWNhbCByZXByZXNlbnRhdGlvbiBvZiB0aGUgbnVtYmVyIG9mIHJpc2tzIHdpdGhpbiBlYWNoIGluaGVyZW50IHJpc2sgcmF0aW5nLCBncm91cGVkIGFjY29yZGluZyB0byB0aGUgUmVzcG9uc2liaWxpdHkgQ2VudGVyIGV4cG9zZWQgdG8gdGhlIHJpc2suJyxcclxuICAgICAgICB3aWRnZXRJbWFnZTogJ2h0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvY29uZmlndXJlLXdpZGdldC9hc3NldHMvaW1hZ2VzL2luaGVyZW50LXRyZW5kLnBuZycsXHJcbiAgICAgICAgdmFsdWU6IGZhbHNlLFxyXG4gICAgICAgIG1vZHVsZTogJ1JJU0snLFxyXG4gICAgICAgIHN1YldpZGdldHM6IFtdXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0aXRsZTogJ1Jlc2lkdWFsIFJpc2sgUmF0aW5nIFRyZW5kIGJ5IFJlc3BvbnNpYmlsaXR5IENlbnRlcnMnLFxyXG4gICAgICAgIGlkOiAncmVzaWR1YWxfcmlza19yYXRpbmdfdHJlbmRfYnlfcmVzcG9uc2liaWxpdHlfY2VudGVycycsXHJcbiAgICAgICAgZGVzY3JpcHRpb246ICdUaGlzIHdpZGdldCBpcyBhIGdyYXBoaWNhbCByZXByZXNlbnRhdGlvbiBvZiB0aGUgbnVtYmVyIG9mIHJpc2tzIHdpdGhpbiBlYWNoIHJlc2lkdWFsIHJpc2sgcmF0aW5nLCBncm91cGVkIGFjY29yZGluZyB0byB0aGUgUmVzcG9uc2liaWxpdHkgQ2VudGVyIGV4cG9zZWQgdG8gdGhlIHJpc2suJyxcclxuICAgICAgICB3aWRnZXRJbWFnZTogJ2h0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvY29uZmlndXJlLXdpZGdldC9hc3NldHMvaW1hZ2VzL3Jlc2lkdWFsLXRyZW5kLnBuZycsXHJcbiAgICAgICAgdmFsdWU6IGZhbHNlLFxyXG4gICAgICAgIG1vZHVsZTogJ1JJU0snLFxyXG4gICAgICAgIHN1YldpZGdldHM6IFtdXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0aXRsZTogJ1Jpc2sgUmF0aW5nIFRyZW5kIGJ5IENhdGVnb3JpZXMnLFxyXG4gICAgICAgIGlkOiAncmlza19yYXRpbmdfdHJlbmRfYnlfY2F0ZWdvcmllcycsXHJcbiAgICAgICAgZGVzY3JpcHRpb246ICdUaGlzIHdpZGdldHMgaXMgYSB0cmVuZCBjaGFydCB0aGF0IHNob3dzIHRoZSBpbmhlcmVudCBhbmQgcmVzaWR1YWwgcmlzayByYXRpbmcgdHJlbmQgYWNyb3NzIHRoZSBkaWZmZXJlbnQgUmlzayBDYXRlZ29yaWVzLicsXHJcbiAgICAgICAgd2lkZ2V0SW1hZ2U6ICdodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL2NvbmZpZ3VyZS13aWRnZXQvYXNzZXRzL2ltYWdlcy9yaXNrLXRyZW5kLnBuZycsXHJcbiAgICAgICAgdmFsdWU6IGZhbHNlLFxyXG4gICAgICAgIG1vZHVsZTogJ1JJU0snLFxyXG4gICAgICAgIHN1YldpZGdldHM6IFtdXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0aXRsZTogJ1RvcCA1IFJpc2sgUmF0aW5ncycsXHJcbiAgICAgICAgaWQ6ICd0b3BfNV9yZXNpZHVhbF9yaXNrX3JhdGluZ3MnLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnVGhpcyB3aWRnZXRzIHNob3dzIHRocyB0b3AgZml2ZSByaXNrcyB3aXRoIHRoZSBoaWdoZXN0IHJpc2sgcmF0aW5nLicsXHJcbiAgICAgICAgd2lkZ2V0SW1hZ2U6ICdodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL2NvbmZpZ3VyZS13aWRnZXQvYXNzZXRzL2ltYWdlcy81LXJpc2stcmF0aW5ncy5wbmcnLFxyXG4gICAgICAgIHZhbHVlOiBmYWxzZSxcclxuICAgICAgICBtb2R1bGU6ICdSSVNLJyxcclxuICAgICAgICBzdWJXaWRnZXRzOiBbXVxyXG4gICAgICB9XHJcbiAgICBdXHJcbiAgfVxyXG5cclxuICBzZWxlY3RXaWRnZXQoZXZlbnQ6IGFueSwgbW9kdWxlOiAnQ09NUExJQU5DRScgfCAnUklTSycsIHdpZGdldElkOiBzdHJpbmcsIHN1YldpZGdldElkPzogc3RyaW5nKSB7XHJcbiAgICBjb25zdCB3aWRnZXRJbmRleCA9IHRoaXMud2lkZ2V0c0xpc3RbbW9kdWxlXS5maW5kSW5kZXgoKGVsZTogYW55KSA9PiBlbGUuaWQgPT0gd2lkZ2V0SWQpO1xyXG4gICAgaWYgKGV2ZW50KSB7XHJcbiAgICAgIGlmKHRoaXMuc2VsZWN0ZWRXaWRnZXRzLmxlbmd0aD49MTApe1xyXG4gICAgICAgIHRoaXMuc25hY2tCYXIuc2hvdygnWW91IGNhbm5vdCBhZGQgbW9yZSB0aGFuIDEwIHdpZGdldHMuJyk7XHJcbiAgICAgICAgdGhpcy5zaG93V2lkZ2V0cyA9ZmFsc2U7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLndpZGdldHNMaXN0W21vZHVsZV1bd2lkZ2V0SW5kZXhdLnZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnNob3dXaWRnZXRzID10cnVlO1xyXG4gICAgICAgIH0sIDEwKTtcclxuICAgICAgICByZXR1cm5cclxuICAgICAgfVxyXG4gICAgICB0aGlzLndpZGdldHNMaXN0W21vZHVsZV1bd2lkZ2V0SW5kZXhdLnZhbHVlID0gdHJ1ZTtcclxuICAgICAgaWYgKHRoaXMud2lkZ2V0c0xpc3RbbW9kdWxlXVt3aWRnZXRJbmRleF0uc3ViV2lkZ2V0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgaWYgKCFzdWJXaWRnZXRJZCkge1xyXG4gICAgICAgICAgdGhpcy53aWRnZXRzTGlzdFttb2R1bGVdW3dpZGdldEluZGV4XS5zdWJXaWRnZXRzLmZvckVhY2goZWxlID0+IGVsZS52YWx1ZSA9IHRydWUpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb25zdCBzdWJXaWRnZXRJbmRleCA9IHRoaXMud2lkZ2V0c0xpc3RbbW9kdWxlXVt3aWRnZXRJbmRleF0uc3ViV2lkZ2V0cy5maW5kSW5kZXgoKGVsZTogYW55KSA9PiBlbGUuaWQgPT0gc3ViV2lkZ2V0SWQpO1xyXG4gICAgICAgICAgdGhpcy53aWRnZXRzTGlzdFttb2R1bGVdW3dpZGdldEluZGV4XS5zdWJXaWRnZXRzW3N1YldpZGdldEluZGV4XS52YWx1ZSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy53aWRnZXRzTGlzdFttb2R1bGVdW3dpZGdldEluZGV4XS5zdWJXaWRnZXRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBpZiAoIXN1YldpZGdldElkKSB7XHJcbiAgICAgICAgICB0aGlzLndpZGdldHNMaXN0W21vZHVsZV1bd2lkZ2V0SW5kZXhdLnZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLndpZGdldHNMaXN0W21vZHVsZV1bd2lkZ2V0SW5kZXhdLnN1YldpZGdldHMuZm9yRWFjaCgoZWxlOiBhbnkpID0+IGVsZS52YWx1ZSA9IGZhbHNlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29uc3Qgc3ViV2lkZ2V0SW5kZXggPSB0aGlzLndpZGdldHNMaXN0W21vZHVsZV1bd2lkZ2V0SW5kZXhdLnN1YldpZGdldHMuZmluZEluZGV4KChlbGU6IGFueSkgPT4gZWxlLmlkID09IHN1YldpZGdldElkKTtcclxuICAgICAgICAgIHRoaXMud2lkZ2V0c0xpc3RbbW9kdWxlXVt3aWRnZXRJbmRleF0uc3ViV2lkZ2V0c1tzdWJXaWRnZXRJbmRleF0udmFsdWUgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgICBjb25zdCBpc0FsbFdpZGdldHNSZW1vdmVkID0gdGhpcy53aWRnZXRzTGlzdFttb2R1bGVdW3dpZGdldEluZGV4XS5zdWJXaWRnZXRzLmV2ZXJ5KChlbGU6IGFueSkgPT4gZWxlLnZhbHVlID09IGZhbHNlKTtcclxuICAgICAgICAgIGlmIChpc0FsbFdpZGdldHNSZW1vdmVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMud2lkZ2V0c0xpc3RbbW9kdWxlXVt3aWRnZXRJbmRleF0udmFsdWUgPSBmYWxzZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy53aWRnZXRzTGlzdFttb2R1bGVdW3dpZGdldEluZGV4XS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldFNlbGVjdGVkV2lkZ2V0cygpO1xyXG5cclxuICB9XHJcbiAgc2V0U2VsZWN0ZWRXaWRnZXRzKCkge1xyXG4gICAgdGhpcy5zZWxlY3RlZFdpZGdldHMgPSBbXVxyXG4gICAgdGhpcy53aWRnZXRzTGlzdC5DT01QTElBTkNFLmZvckVhY2goKGVsZTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChlbGUudmFsdWUpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkV2lkZ2V0cy5wdXNoKGVsZSlcclxuICAgICAgfVxyXG4gICAgfSlcclxuICAgIHRoaXMud2lkZ2V0c0xpc3QuUklTSy5mb3JFYWNoKChlbGU6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoZWxlLnZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFdpZGdldHMucHVzaChlbGUpXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICByZW1vdmVXaWRnZXQod2lkZ2V0OiB3aWRnZXRDb25maWcpIHtcclxuICAgIGNvbnN0IHdpZGdldEluZGV4ID0gdGhpcy53aWRnZXRzTGlzdFt3aWRnZXQubW9kdWxlXS5maW5kSW5kZXgoKGVsZTogYW55KSA9PiBlbGUuaWQgPT0gd2lkZ2V0LmlkKTtcclxuICAgIHRoaXMud2lkZ2V0c0xpc3Rbd2lkZ2V0Lm1vZHVsZV1bd2lkZ2V0SW5kZXhdLnZhbHVlID0gZmFsc2U7XHJcbiAgICBpZih0aGlzLndpZGdldHNMaXN0W3dpZGdldC5tb2R1bGVdW3dpZGdldEluZGV4XS5zdWJXaWRnZXRzLmxlbmd0aD4wKXtcclxuICAgICAgdGhpcy53aWRnZXRzTGlzdFt3aWRnZXQubW9kdWxlXVt3aWRnZXRJbmRleF0uc3ViV2lkZ2V0cy5mb3JFYWNoKChlbGU6IGFueSkgPT4gZWxlLnZhbHVlID0gZmFsc2UpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZXRTZWxlY3RlZFdpZGdldHMoKVxyXG4gIH1cclxuXHJcbiAgb25OZXh0Q2xpY2soKSB7XHJcbiAgICB0aGlzLndpZGdldHNEYXRhTW9kaWZpZWQuZW1pdCh0aGlzLnNlbGVjdGVkV2lkZ2V0cyk7XHJcbiAgfVxyXG5cclxuICBjbG9zZUNvbmZpZ3VyZURhc2hib2FyZCgpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRXaWRnZXRzID0gW107XHJcbiAgICB0aGlzLmRpYWxvZy5jbG9zZSgpO1xyXG4gICAgdGhpcy5jbG9zZUNvbmZpZ3VyZVdpZGdldHMuZW1pdChmYWxzZSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
530
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJlLXdpZGdldHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3JlYXRlLWRhc2hib2FyZC9zcmMvbGliL2NyZWF0ZS1kYXNoYm9hcmQtY29udGFpbmVyL2NvbmZpZ3VyZS13aWRnZXRzL2NvbmZpZ3VyZS13aWRnZXRzL2NvbmZpZ3VyZS13aWRnZXRzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNuRixPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcxRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFOUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBTzlFLE1BQU0sT0FBTyx5QkFBeUI7SUF5QnBDLFlBQ1UsTUFBaUIsRUFDbEIsdUJBQWdELEVBQy9DLFFBQXlCO1FBRnpCLFdBQU0sR0FBTixNQUFNLENBQVc7UUFDbEIsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUF5QjtRQUMvQyxhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQTFCekIsd0JBQW1CLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDNUQsMEJBQXFCLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFeEUsV0FBTSxHQUFXLEVBQUUsQ0FBQztRQUNwQixpQkFBWSxHQUE2QyxFQUFFLENBQUM7UUFDNUQsb0JBQWUsR0FBMkIsRUFBRSxDQUFDO1FBRTdDLFdBQU0sR0FBMEIsWUFBWSxDQUFDO1FBQ3BDLHdCQUFtQixHQUFRLEVBQUUsQ0FBQztRQUM5QixxQkFBZ0IsR0FBUSxFQUFFLENBQUM7UUFDM0IsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUN2QixTQUFJLEdBQUcsUUFBUSxDQUFBO1FBQ3hCLGVBQVUsR0FBRyx1R0FBdUcsQ0FBQztRQUVySCxzQkFBaUIsR0FBUSxFQUFFLENBQUM7UUFDNUIsZ0NBQTJCLEdBQVksS0FBSyxDQUFBO1FBQzVDLG1DQUE4QixHQUFZLEtBQUssQ0FBQTtRQUMvQyxnQkFBVyxHQUFHLElBQUksQ0FBQztRQUNuQixrQ0FBNkIsR0FBRyxDQUFDLENBQUM7UUFDbEMsNEJBQXVCLEdBQUcsRUFBRSxDQUFDO1FBcUg3QixnQkFBVyxHQUFHO1lBQ1osVUFBVSxFQUFFO2dCQUNWO29CQUNFLEtBQUssRUFBRSxVQUFVO29CQUNqQixFQUFFLEVBQUUsVUFBVTtvQkFDZCxXQUFXLEVBQUUsbUZBQW1GO29CQUNoRyxXQUFXLEVBQUUsZ0ZBQWdGO29CQUM3RixLQUFLLEVBQUUsS0FBSztvQkFDWixVQUFVLEVBQUMsSUFBSTtvQkFDZixNQUFNLEVBQUUsWUFBWTtvQkFDcEIsVUFBVSxFQUFFLEVBQUU7aUJBQ2Y7Z0JBQ0Q7b0JBQ0UsS0FBSyxFQUFFLHlCQUF5QjtvQkFDaEMsRUFBRSxFQUFFLDBCQUEwQjtvQkFDOUIsV0FBVyxFQUFFLCtLQUErSztvQkFDNUwsV0FBVyxFQUFFLCtGQUErRjtvQkFDNUcsS0FBSyxFQUFFLEtBQUs7b0JBQ1osVUFBVSxFQUFDLElBQUk7b0JBQ2YsTUFBTSxFQUFFLFlBQVk7b0JBQ3BCLFVBQVUsRUFBRSxFQUFFO2lCQUNmO2dCQUNEO29CQUNFLEtBQUssRUFBRSxnQ0FBZ0M7b0JBQ3ZDLEVBQUUsRUFBRSxxQ0FBcUM7b0JBQ3pDLFdBQVcsRUFBRSwwR0FBMEc7b0JBQ3ZILFdBQVcsRUFBRSxzR0FBc0c7b0JBQ25ILEtBQUssRUFBRSxLQUFLO29CQUNaLFVBQVUsRUFBQyxJQUFJO29CQUNmLE1BQU0sRUFBRSxZQUFZO29CQUNwQixVQUFVLEVBQUUsRUFBRTtpQkFDZjtnQkFDRDtvQkFDRSxLQUFLLEVBQUUsa0JBQWtCO29CQUN6QixFQUFFLEVBQUUscUJBQXFCO29CQUN6QixXQUFXLEVBQUUsNExBQTRMO29CQUN6TSxXQUFXLEVBQUUsMkZBQTJGO29CQUN4RyxTQUFTLEVBQUUsSUFBSTtvQkFDZixLQUFLLEVBQUUsS0FBSztvQkFDWixVQUFVLEVBQUMsSUFBSTtvQkFDZixNQUFNLEVBQUUsWUFBWTtvQkFDcEIsVUFBVSxFQUFFO3dCQUNWOzRCQUNFLEtBQUssRUFBRSxxQkFBcUI7NEJBQzVCLEVBQUUsRUFBRSx3QkFBd0I7NEJBQzVCLEtBQUssRUFBRSxLQUFLOzRCQUNaLFVBQVUsRUFBQyxJQUFJO3lCQUNoQjt3QkFDRDs0QkFDRSxLQUFLLEVBQUUsZUFBZTs0QkFDdEIsRUFBRSxFQUFFLDhCQUE4Qjs0QkFDbEMsS0FBSyxFQUFFLEtBQUs7NEJBQ1osVUFBVSxFQUFDLElBQUk7eUJBQ2hCO3dCQUNEOzRCQUNFLEtBQUssRUFBRSxnQkFBZ0I7NEJBQ3ZCLEVBQUUsRUFBRSx3QkFBd0I7NEJBQzVCLEtBQUssRUFBRSxLQUFLOzRCQUNaLFVBQVUsRUFBQyxJQUFJO3lCQUNoQjtxQkFDRjtpQkFDRjtnQkFDRDtvQkFDRSxLQUFLLEVBQUUsc0JBQXNCO29CQUM3QixFQUFFLEVBQUUsc0JBQXNCO29CQUMxQixXQUFXLEVBQUUsNExBQTRMO29CQUN6TSxXQUFXLEVBQUUsNEZBQTRGO29CQUN6RyxTQUFTLEVBQUUsSUFBSTtvQkFDZixLQUFLLEVBQUUsS0FBSztvQkFDWixVQUFVLEVBQUMsSUFBSTtvQkFDZixNQUFNLEVBQUUsWUFBWTtvQkFDcEIsVUFBVSxFQUFFO3dCQUNWOzRCQUNFLEtBQUssRUFBRSxVQUFVOzRCQUNqQixFQUFFLEVBQUUsb0NBQW9DOzRCQUN4QyxLQUFLLEVBQUUsS0FBSzs0QkFDWixVQUFVLEVBQUMsSUFBSTt5QkFDaEI7d0JBQ0Q7NEJBQ0UsS0FBSyxFQUFFLHFCQUFxQjs0QkFDNUIsRUFBRSxFQUFFLDhCQUE4Qjs0QkFDbEMsS0FBSyxFQUFFLEtBQUs7NEJBQ1osVUFBVSxFQUFDLElBQUk7eUJBQ2hCO3dCQUNEOzRCQUNFLEtBQUssRUFBRSxlQUFlOzRCQUN0QixFQUFFLEVBQUUseUJBQXlCOzRCQUM3QixLQUFLLEVBQUUsS0FBSzs0QkFDWixVQUFVLEVBQUMsSUFBSTt5QkFDaEI7d0JBQ0Q7NEJBQ0UsS0FBSyxFQUFFLGdCQUFnQjs0QkFDdkIsRUFBRSxFQUFFLDBCQUEwQjs0QkFDOUIsS0FBSyxFQUFFLEtBQUs7NEJBQ1osVUFBVSxFQUFDLElBQUk7eUJBQ2hCO3FCQUNGO2lCQUNGO2dCQUNEO29CQUNFLEtBQUssRUFBRSxnQkFBZ0I7b0JBQ3ZCLEVBQUUsRUFBRSxxQkFBcUI7b0JBQ3pCLFdBQVcsRUFBRSx3R0FBd0c7b0JBQ3JILFdBQVcsRUFBRSxzRkFBc0Y7b0JBQ25HLEtBQUssRUFBRSxLQUFLO29CQUNaLFVBQVUsRUFBQyxJQUFJO29CQUNmLE1BQU0sRUFBRSxZQUFZO29CQUNwQixVQUFVLEVBQUUsRUFBRTtpQkFDZjtnQkFDRDtvQkFDRSxLQUFLLEVBQUUsa0JBQWtCO29CQUN6QixFQUFFLEVBQUUscUJBQXFCO29CQUN6QixXQUFXLEVBQUUseUlBQXlJO29CQUN0SixXQUFXLEVBQUUsd0ZBQXdGO29CQUNyRyxLQUFLLEVBQUUsS0FBSztvQkFDWixVQUFVLEVBQUMsSUFBSTtvQkFDZixNQUFNLEVBQUUsWUFBWTtvQkFDcEIsVUFBVSxFQUFFLEVBQUU7aUJBQ2Y7Z0JBQ0Q7b0JBQ0UsS0FBSyxFQUFFLG1CQUFtQjtvQkFDMUIsRUFBRSxFQUFFLHNCQUFzQjtvQkFDMUIsV0FBVyxFQUFFLHlFQUF5RTtvQkFDdEYsV0FBVyxFQUFFLHlGQUF5RjtvQkFDdEcsS0FBSyxFQUFFLEtBQUs7b0JBQ1osVUFBVSxFQUFDLElBQUk7b0JBQ2YsTUFBTSxFQUFFLFlBQVk7b0JBQ3BCLFVBQVUsRUFBRSxFQUFFO2lCQUNmO2dCQUNEO29CQUNFLEtBQUssRUFBRSxtQkFBbUI7b0JBQzFCLEVBQUUsRUFBRSx3QkFBd0I7b0JBQzVCLFdBQVcsRUFBRSxnSEFBZ0g7b0JBQzdILFdBQVcsRUFBRSx5RkFBeUY7b0JBQ3RHLEtBQUssRUFBRSxLQUFLO29CQUNaLFVBQVUsRUFBQyxJQUFJO29CQUNmLE1BQU0sRUFBRSxZQUFZO29CQUNwQixVQUFVLEVBQUUsRUFBRTtpQkFDZjthQUNGO1lBQ0QsSUFBSSxFQUFFO2dCQUNKO29CQUNFLEtBQUssRUFBRSxlQUFlO29CQUN0QixFQUFFLEVBQUUsZUFBZTtvQkFDbkIsV0FBVyxFQUFFLDBGQUEwRjtvQkFDdkcsV0FBVyxFQUFFLHFGQUFxRjtvQkFDbEcsS0FBSyxFQUFFLEtBQUs7b0JBQ1osVUFBVSxFQUFDLElBQUk7b0JBQ2YsTUFBTSxFQUFFLE1BQU07b0JBQ2QsVUFBVSxFQUFFLEVBQUU7aUJBQ2Y7Z0JBQ0Q7b0JBQ0UsS0FBSyxFQUFFLGNBQWM7b0JBQ3JCLEVBQUUsRUFBRSxjQUFjO29CQUNsQixXQUFXLEVBQUUsb1JBQW9SO29CQUNqUyxXQUFXLEVBQUUsMEZBQTBGO29CQUN2RyxLQUFLLEVBQUUsS0FBSztvQkFDWixVQUFVLEVBQUMsSUFBSTtvQkFDZixNQUFNLEVBQUUsTUFBTTtvQkFDZCxVQUFVLEVBQUU7d0JBQ1Y7NEJBQ0UsS0FBSyxFQUFFLDJCQUEyQjs0QkFDbEMsRUFBRSxFQUFFLHlCQUF5Qjs0QkFDN0IsS0FBSyxFQUFFLEtBQUs7NEJBQ1osVUFBVSxFQUFDLElBQUk7eUJBQ2hCO3dCQUNEOzRCQUNFLEtBQUssRUFBRSxjQUFjOzRCQUNyQixFQUFFLEVBQUUsY0FBYzs0QkFDbEIsS0FBSyxFQUFFLEtBQUs7NEJBQ1osVUFBVSxFQUFDLElBQUk7eUJBQ2hCO3dCQUNEOzRCQUNFLEtBQUssRUFBRSx3QkFBd0I7NEJBQy9CLEVBQUUsRUFBRSx3QkFBd0I7NEJBQzVCLEtBQUssRUFBRSxLQUFLOzRCQUNaLFVBQVUsRUFBQyxJQUFJO3lCQUNoQjt3QkFDRDs0QkFDRSxLQUFLLEVBQUUsd0JBQXdCOzRCQUMvQixFQUFFLEVBQUUsd0JBQXdCOzRCQUM1QixLQUFLLEVBQUUsS0FBSzs0QkFDWixVQUFVLEVBQUMsSUFBSTt5QkFDaEI7cUJBQ0Y7aUJBQ0Y7Z0JBRUQ7b0JBQ0UsS0FBSyxFQUFFLGlEQUFpRDtvQkFDeEQsRUFBRSxFQUFFLGdEQUFnRDtvQkFDcEQsV0FBVyxFQUFFLDZJQUE2STtvQkFDMUosV0FBVyxFQUFFLG1GQUFtRjtvQkFDaEcsS0FBSyxFQUFFLEtBQUs7b0JBQ1osVUFBVSxFQUFDLElBQUk7b0JBQ2YsTUFBTSxFQUFFLE1BQU07b0JBQ2QsVUFBVSxFQUFFLEVBQUU7aUJBQ2Y7Z0JBQ0Q7b0JBQ0UsS0FBSyxFQUFFLGlEQUFpRDtvQkFDeEQsRUFBRSxFQUFFLGdEQUFnRDtvQkFDcEQsV0FBVyxFQUFFLDZJQUE2STtvQkFDMUosV0FBVyxFQUFFLG1GQUFtRjtvQkFDaEcsS0FBSyxFQUFFLEtBQUs7b0JBQ1osVUFBVSxFQUFDLElBQUk7b0JBQ2YsTUFBTSxFQUFFLE1BQU07b0JBQ2QsVUFBVSxFQUFFLEVBQUU7aUJBQ2Y7Z0JBQ0Q7b0JBQ0UsS0FBSyxFQUFFLHdCQUF3QjtvQkFDL0IsRUFBRSxFQUFFLHdCQUF3QjtvQkFDNUIsV0FBVyxFQUFFLDRIQUE0SDtvQkFDekksV0FBVyxFQUFFLDhGQUE4RjtvQkFDM0csS0FBSyxFQUFFLEtBQUs7b0JBQ1osVUFBVSxFQUFDLElBQUk7b0JBQ2YsTUFBTSxFQUFFLE1BQU07b0JBQ2QsVUFBVSxFQUFFLEVBQUU7aUJBQ2Y7Z0JBQ0Q7b0JBQ0UsS0FBSyxFQUFFLGNBQWM7b0JBQ3JCLEVBQUUsRUFBRSxjQUFjO29CQUNsQixXQUFXLEVBQUUscUVBQXFFO29CQUNsRixXQUFXLEVBQUUsb0ZBQW9GO29CQUNqRyxLQUFLLEVBQUUsS0FBSztvQkFDWixVQUFVLEVBQUMsSUFBSTtvQkFDZixNQUFNLEVBQUUsTUFBTTtvQkFDZCxVQUFVLEVBQUUsRUFBRTtpQkFDZjtnQkFDRDtvQkFDRSxLQUFLLEVBQUUsb0NBQW9DO29CQUMzQyxFQUFFLEVBQUUsb0NBQW9DO29CQUN4QyxXQUFXLEVBQUUsOElBQThJO29CQUMzSixXQUFXLEVBQUUsMkZBQTJGO29CQUN4RyxLQUFLLEVBQUUsS0FBSztvQkFDWixVQUFVLEVBQUMsSUFBSTtvQkFDZixNQUFNLEVBQUUsTUFBTTtvQkFDZCxVQUFVLEVBQUUsRUFBRTtpQkFDZjtnQkFFRDtvQkFDRSxLQUFLLEVBQUUsb0NBQW9DO29CQUMzQyxFQUFFLEVBQUUsb0NBQW9DO29CQUN4QyxXQUFXLEVBQUUsOElBQThJO29CQUMzSixXQUFXLEVBQUUsMkZBQTJGO29CQUN4RyxLQUFLLEVBQUUsS0FBSztvQkFDWixVQUFVLEVBQUMsSUFBSTtvQkFDZixNQUFNLEVBQUUsTUFBTTtvQkFDZCxVQUFVLEVBQUUsRUFBRTtpQkFDZjtnQkFDRDtvQkFDRSxLQUFLLEVBQUUsc0RBQXNEO29CQUM3RCxFQUFFLEVBQUUsc0RBQXNEO29CQUMxRCxXQUFXLEVBQUUsd0tBQXdLO29CQUNyTCxXQUFXLEVBQUUsc0ZBQXNGO29CQUNuRyxLQUFLLEVBQUUsS0FBSztvQkFDWixVQUFVLEVBQUMsSUFBSTtvQkFDZixNQUFNLEVBQUUsTUFBTTtvQkFDZCxVQUFVLEVBQUUsRUFBRTtpQkFDZjtnQkFDRDtvQkFDRSxLQUFLLEVBQUUsc0RBQXNEO29CQUM3RCxFQUFFLEVBQUUsc0RBQXNEO29CQUMxRCxXQUFXLEVBQUUsd0tBQXdLO29CQUNyTCxXQUFXLEVBQUUsc0ZBQXNGO29CQUNuRyxLQUFLLEVBQUUsS0FBSztvQkFDWixVQUFVLEVBQUMsSUFBSTtvQkFDZixNQUFNLEVBQUUsTUFBTTtvQkFDZCxVQUFVLEVBQUUsRUFBRTtpQkFDZjtnQkFDRDtvQkFDRSxLQUFLLEVBQUUsaUNBQWlDO29CQUN4QyxFQUFFLEVBQUUsaUNBQWlDO29CQUNyQyxXQUFXLEVBQUUsNEhBQTRIO29CQUN6SSxXQUFXLEVBQUUsa0ZBQWtGO29CQUMvRixLQUFLLEVBQUUsS0FBSztvQkFDWixVQUFVLEVBQUMsSUFBSTtvQkFDZixNQUFNLEVBQUUsTUFBTTtvQkFDZCxVQUFVLEVBQUUsRUFBRTtpQkFDZjtnQkFDRDtvQkFDRSxLQUFLLEVBQUUsb0JBQW9CO29CQUMzQixFQUFFLEVBQUUsNkJBQTZCO29CQUNqQyxXQUFXLEVBQUUscUVBQXFFO29CQUNsRixXQUFXLEVBQUUsc0ZBQXNGO29CQUNuRyxLQUFLLEVBQUUsS0FBSztvQkFDWixVQUFVLEVBQUMsSUFBSTtvQkFDZixNQUFNLEVBQUUsTUFBTTtvQkFDZCxVQUFVLEVBQUUsRUFBRTtpQkFDZjthQUNGO1NBQ0YsQ0FBQTtJQTdZRCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxNQUFNLEVBQUU7WUFDdkIsSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUE7WUFDbEMsSUFBSSxDQUFDLHVCQUF1QixHQUFHLENBQUMsQ0FBQztZQUNqQyxJQUFJLENBQUMsNkJBQTZCLEdBQUcsQ0FBQyxDQUFDO1lBQ3ZDLE1BQU0sU0FBUyxHQUFHLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO1lBQ3RELFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFZLEVBQUUsS0FBVSxFQUFFLEVBQUU7Z0JBQzdDLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO29CQUMvQyxJQUFJLEdBQUcsQ0FBQyxFQUFFLElBQUksT0FBTyxDQUFDLFdBQVcsRUFBRTt3QkFDakMsR0FBRyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7d0JBQ3RCLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFOzRCQUM3QixNQUFNLFVBQVUsR0FBUSxFQUFFLENBQUE7NEJBQzFCLE9BQU8sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBYyxFQUFFLEVBQUU7Z0NBQzFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDOzRCQUMzQyxDQUFDLENBQUMsQ0FBQzs0QkFDSCxHQUFHLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQWUsRUFBRSxRQUFnQixFQUFFLEVBQUU7Z0NBQzNELElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUU7b0NBQ3RDLEdBQUcsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztpQ0FDNUM7cUNBQU07b0NBQ0wsR0FBRyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO2lDQUM3Qzs0QkFDSCxDQUFDLENBQUMsQ0FBQzt5QkFDSjt3QkFDRCxJQUFJLENBQUMsNkJBQTZCLEVBQUUsQ0FBQTtxQkFDckM7Z0JBQ0gsQ0FBQyxDQUFDLENBQUE7Z0JBQ0YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7b0JBQ3pDLElBQUksR0FBRyxDQUFDLEVBQUUsSUFBSSxPQUFPLENBQUMsV0FBVyxFQUFFO3dCQUNqQyxHQUFHLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQzt3QkFDdEIsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7NEJBQzdCLE1BQU0sVUFBVSxHQUFRLEVBQUUsQ0FBQTs0QkFDMUIsT0FBTyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFjLEVBQUUsRUFBRTtnQ0FDMUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7NEJBQzNDLENBQUMsQ0FBQyxDQUFDOzRCQUNILEdBQUcsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBZSxFQUFFLFFBQWdCLEVBQUUsRUFBRTtnQ0FDM0QsSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRTtvQ0FDdEMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO2lDQUM1QztxQ0FBTTtvQ0FDTCxHQUFHLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7aUNBQzdDOzRCQUNILENBQUMsQ0FBQyxDQUFDO3lCQUVKO3dCQUNELElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFBO3FCQUMvQjtnQkFDSCxDQUFDLENBQUMsQ0FBQTtZQUNKLENBQUMsQ0FBQyxDQUFDO1NBQ0o7UUFDRCxNQUFNLElBQUksR0FBRyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBWSxFQUFFLEtBQVUsRUFBRSxFQUFFO1lBQ3hDLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUMvQyxJQUFJLEdBQUcsQ0FBQyxFQUFFLElBQUksT0FBTyxDQUFDLFdBQVcsSUFBSSxPQUFPLENBQUMsS0FBSyxJQUFJLFFBQVEsRUFBRTtvQkFDOUQsR0FBRyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7b0JBQ2pCLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO3dCQUM3QixNQUFNLFVBQVUsR0FBUSxFQUFFLENBQUE7d0JBQzFCLE9BQU8sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBYyxFQUFFLEVBQUU7NEJBQzVDLElBQUksU0FBUyxDQUFDLEtBQUssSUFBSSxRQUFRLEVBQUU7Z0NBQy9CLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDOzZCQUN4Qzt3QkFDSCxDQUFDLENBQUMsQ0FBQzt3QkFDSCxHQUFHLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQWUsRUFBRSxRQUFnQixFQUFFLEVBQUU7NEJBQzNELElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUU7Z0NBQ3RDLEdBQUcsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQzs2QkFDdkM7aUNBQU07Z0NBQ0wsR0FBRyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDOzZCQUN4Qzt3QkFDSCxDQUFDLENBQUMsQ0FBQztxQkFFSjtvQkFDRCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztpQkFFaEM7WUFDSCxDQUFDLENBQUMsQ0FBQTtZQUNGLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUN6QyxJQUFJLEdBQUcsQ0FBQyxFQUFFLElBQUksT0FBTyxDQUFDLFdBQVcsSUFBSSxPQUFPLENBQUMsS0FBSyxJQUFJLFFBQVEsRUFBRTtvQkFDOUQsR0FBRyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7b0JBQ2pCLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO3dCQUM3QixNQUFNLFVBQVUsR0FBUSxFQUFFLENBQUE7d0JBQzFCLE9BQU8sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBYyxFQUFFLEVBQUU7NEJBQzVDLElBQUksU0FBUyxDQUFDLEtBQUssSUFBSSxRQUFRLEVBQUU7Z0NBQy9CLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDOzZCQUN4Qzt3QkFDSCxDQUFDLENBQUMsQ0FBQzt3QkFDSCxHQUFHLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQWUsRUFBRSxRQUFnQixFQUFFLEVBQUU7NEJBQzNELElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUU7Z0NBQ3RDLEdBQUcsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQzs2QkFDdkM7aUNBQU07Z0NBQ0wsR0FBRyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDOzZCQUN4Qzt3QkFDSCxDQUFDLENBQUMsQ0FBQztxQkFFSjtvQkFDRCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztpQkFFaEM7WUFDSCxDQUFDLENBQUMsQ0FBQTtRQUVKLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDNUQsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELFFBQVE7SUFFUixDQUFDO0lBcVNELFlBQVksQ0FBQyxLQUFVLEVBQUUsTUFBNkIsRUFBRSxRQUFnQixFQUFFLFdBQW9CO1FBQzVGLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLFFBQVEsQ0FBQyxDQUFDO1FBQ3pGLElBQUksS0FBSyxFQUFFO1lBQ1QsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sSUFBSSxFQUFFLEVBQUU7Z0JBQ3JDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLHNDQUFzQyxDQUFDLENBQUM7Z0JBQzNELElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO2dCQUN6QixVQUFVLENBQUMsR0FBRyxFQUFFO29CQUNkLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztvQkFDcEQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7Z0JBQzFCLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDUCxPQUFNO2FBQ1A7WUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7WUFDbkQsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUMvRCxJQUFJLENBQUMsV0FBVyxFQUFFO29CQUNoQixJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDO2lCQUNuRjtxQkFBTTtvQkFDTCxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksV0FBVyxDQUFDLENBQUM7b0JBQ3ZILElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7aUJBQy9FO2FBQ0Y7U0FDRjthQUFNO1lBQ0wsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUMvRCxJQUFJLENBQUMsV0FBVyxFQUFFO29CQUNoQixJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7b0JBQ3BELElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsQ0FBQztpQkFDM0Y7cUJBQU07b0JBQ0wsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLFdBQVcsQ0FBQyxDQUFDO29CQUN2SCxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO29CQUUvRSxNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsQ0FBQztvQkFDckgsSUFBSSxtQkFBbUIsRUFBRTt3QkFDdkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO3FCQUNyRDtpQkFDRjthQUNGO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQzthQUNyRDtTQUNGO1FBQ0QsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFFNUIsQ0FBQztJQUNELGtCQUFrQjtRQUNoQixJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQTtRQUN6QixJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtZQUMvQyxJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUU7Z0JBQ2IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7YUFDL0I7UUFDSCxDQUFDLENBQUMsQ0FBQTtRQUNGLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO1lBQ3pDLElBQUksR0FBRyxDQUFDLEtBQUssRUFBRTtnQkFDYixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTthQUMvQjtRQUNILENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELFlBQVksQ0FBQyxNQUFvQjtRQUMvQixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2pHLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDM0QsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUN0RSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDO1NBQ2xHO1FBQ0QsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUE7SUFDM0IsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQsdUJBQXVCO1FBQ3JCLElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsMkJBQTJCO1FBQ3pCLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO1lBQzdDLEdBQUcsQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1lBQ3ZCLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUM3QixHQUFHLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQWUsRUFBRSxFQUFFO29CQUN6QyxVQUFVLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztnQkFDaEMsQ0FBQyxDQUFDLENBQUM7YUFDSjtRQUNMLENBQUMsQ0FBQyxDQUFBO1FBQ0YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7WUFDdkMsR0FBRyxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7WUFDdkIsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQzdCLEdBQUcsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBZSxFQUFFLEVBQUU7b0JBQ3pDLFVBQVUsQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO2dCQUNoQyxDQUFDLENBQUMsQ0FBQzthQUNKO1FBQ0wsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDOzs7WUE5Z0JGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsdUJBQXVCO2dCQUNqQyx5M0lBQWlEOzthQUVsRDs7O1lBUlEsU0FBUztZQUpULHVCQUF1QjtZQU12QixlQUFlOzs7a0NBU3JCLE1BQU07b0NBQ04sTUFBTTtrQ0FPTixLQUFLOytCQUNMLEtBQUs7dUJBQ0wsS0FBSzs2QkFDTCxLQUFLO21CQUNMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25maWd1cmVXaWRnZXRzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NvbmZpZ3VyZS13aWRnZXRzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgcmV0cnkgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IHdpZGdldERhdGFNb2RlbCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvd2lkZ2V0LWRhdGEtbW9kZWwnO1xyXG5pbXBvcnQgeyBEaWFsb2dSZWYgfSBmcm9tICcuLi8uLi8uLi91aS1raXQvZGlhbG9nL2RpYWxvZy1yZWYnO1xyXG5pbXBvcnQgeyB3aWRnZXRDb25maWcgfSBmcm9tICcuL3dpZGdldC5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBTbmFja0JhclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi91aS1raXQvc25hY2stYmFyL3NuYWNrLWJhci5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWNvbmZpZ3VyZS13aWRnZXRzJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY29uZmlndXJlLXdpZGdldHMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NvbmZpZ3VyZS13aWRnZXRzLmNvbXBvbmVudC5sZXNzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIENvbmZpZ3VyZVdpZGdldHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XHJcblxyXG4gIEBPdXRwdXQoKSB3aWRnZXRzRGF0YU1vZGlmaWVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgY2xvc2VDb25maWd1cmVXaWRnZXRzOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBjaGVja2JveFN0YXR1cyE6IGFueTtcclxuICBzZWFyY2g6IHN0cmluZyA9ICcnO1xyXG4gIGNoZWNrZWRBcnJheTogQXJyYXk8eyBpbmRleDogbnVtYmVyLCBzdGF0dXM6IG51bWJlciB9PiA9IFtdO1xyXG4gIHNlbGVjdGVkV2lkZ2V0czogQXJyYXk8d2lkZ2V0RGF0YU1vZGVsPiA9IFtdO1xyXG5cclxuICBtb2R1bGU6IFwiQ09NUExJQU5DRVwiIHwgXCJSSVNLXCIgPSAnQ09NUExJQU5DRSc7XHJcbiAgQElucHV0KCkgc2VsZWN0ZWRXaWRnZXRzRGF0YTogYW55ID0gW107XHJcbiAgQElucHV0KCkgZGlzcGxheWVkV2lkZ2V0czogYW55ID0gW107XHJcbiAgQElucHV0KCkgc2hvd1Jpc2sgPSBmYWxzZTtcclxuICBASW5wdXQoKSBzaG93Q29tcGxpYW5jZSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIG1vZGUgPSAnQ1JFQVRFJ1xyXG4gIG5vRGF0YVRleHQgPSAnWW91IGhhdmUgbm90IGNvbmZpZ3VyZWQgYW55IHdpZGdldHMuIENsaWNrIG9uIHRoZSA8c3Ryb25nPkNvbmZpZ3VyZSBXaWRnZXRzPC9zdHJvbmc+IGJ1dHRvbiB0byBiZWdpbi4nO1xyXG5cclxuICBzZWxlY3RlZFdpZGdldElkczogYW55ID0gW107XHJcbiAgc3ViUmVzcG9uc2liaWxpdGllc1NlbGVjdGVkOiBib29sZWFuID0gZmFsc2VcclxuICBzdWJLZXlSZXNwb25zaWJpbGl0aWVzU2VsZWN0ZWQ6IGJvb2xlYW4gPSBmYWxzZVxyXG4gIHNob3dXaWRnZXRzID0gdHJ1ZTtcclxuICBjb21wbGlhbmNlV2lkZ2V0c0Rpc3BsYXlDb3VudCA9IDk7XHJcbiAgcmlza1dpZGdldHNEaXNwbGF5Q291bnQgPSAxMjtcclxuXHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBkaWFsb2c6IERpYWxvZ1JlZixcclxuICAgIHB1YmxpYyBjb25maWd1cmVXaWRnZXRzU2VydmljZTogQ29uZmlndXJlV2lkZ2V0c1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHNuYWNrQmFyOiBTbmFja0JhclNlcnZpY2UpIHtcclxuXHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcygpIHtcclxuICAgIGlmICh0aGlzLm1vZGUgPT0gJ0VESVQnKSB7XHJcbiAgICAgIHRoaXMuc2V0V2lkZ2V0c1Zpc2liaWxpdHlUb0ZhbHNlKClcclxuICAgICAgdGhpcy5yaXNrV2lkZ2V0c0Rpc3BsYXlDb3VudCA9IDA7XHJcbiAgICAgIHRoaXMuY29tcGxpYW5jZVdpZGdldHNEaXNwbGF5Q291bnQgPSAwO1xyXG4gICAgICBjb25zdCBmaW5hbERhdGEgPSBbLi4ubmV3IFNldCh0aGlzLmRpc3BsYXllZFdpZGdldHMpXTtcclxuICAgICAgZmluYWxEYXRhLmZvckVhY2goKGVsZW1lbnQ6IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMud2lkZ2V0c0xpc3QuQ09NUExJQU5DRS5mb3JFYWNoKChlbGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGVsZS5pZCA9PSBlbGVtZW50LndpZGdldF9jb2RlKSB7XHJcbiAgICAgICAgICAgIGVsZS52aXNpYmlsaXR5ID0gdHJ1ZTtcclxuICAgICAgICAgICAgaWYgKGVsZS5zdWJXaWRnZXRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJEYXRhOiBhbnkgPSBbXVxyXG4gICAgICAgICAgICAgIGVsZW1lbnQuc3ViX3dpZGdldHMuZmlsdGVyKChzdWJ3aWRnZXQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBmaWx0ZXJEYXRhLnB1c2goc3Vid2lkZ2V0LndpZGdldF9jb2RlKTtcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICBlbGUuc3ViV2lkZ2V0cy5mb3JFYWNoKChzdWJFbGVtZW50OiBhbnksIHN1YkluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChmaWx0ZXJEYXRhLmluY2x1ZGVzKHN1YkVsZW1lbnQuaWQpKSB7XHJcbiAgICAgICAgICAgICAgICAgIGVsZS5zdWJXaWRnZXRzW3N1YkluZGV4XS52aXNpYmlsaXR5ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIGVsZS5zdWJXaWRnZXRzW3N1YkluZGV4XS52aXNpYmlsaXR5ID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5jb21wbGlhbmNlV2lkZ2V0c0Rpc3BsYXlDb3VudCsrXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLndpZGdldHNMaXN0LlJJU0suZm9yRWFjaCgoZWxlOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChlbGUuaWQgPT0gZWxlbWVudC53aWRnZXRfY29kZSkge1xyXG4gICAgICAgICAgICBlbGUudmlzaWJpbGl0eSA9IHRydWU7XHJcbiAgICAgICAgICAgIGlmIChlbGUuc3ViV2lkZ2V0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgZmlsdGVyRGF0YTogYW55ID0gW11cclxuICAgICAgICAgICAgICBlbGVtZW50LnN1Yl93aWRnZXRzLmZpbHRlcigoc3Vid2lkZ2V0OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgZmlsdGVyRGF0YS5wdXNoKHN1YndpZGdldC53aWRnZXRfY29kZSk7XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgZWxlLnN1YldpZGdldHMuZm9yRWFjaCgoc3ViRWxlbWVudDogYW55LCBzdWJJbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZmlsdGVyRGF0YS5pbmNsdWRlcyhzdWJFbGVtZW50LmlkKSkge1xyXG4gICAgICAgICAgICAgICAgICBlbGUuc3ViV2lkZ2V0c1tzdWJJbmRleF0udmlzaWJpbGl0eSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICBlbGUuc3ViV2lkZ2V0c1tzdWJJbmRleF0udmlzaWJpbGl0eSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnJpc2tXaWRnZXRzRGlzcGxheUNvdW50KytcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGNvbnN0IGRhdGEgPSBbLi4ubmV3IFNldCh0aGlzLnNlbGVjdGVkV2lkZ2V0c0RhdGEpXTtcclxuICAgIGRhdGEuZm9yRWFjaCgoZWxlbWVudDogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMud2lkZ2V0c0xpc3QuQ09NUExJQU5DRS5mb3JFYWNoKChlbGU6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChlbGUuaWQgPT0gZWxlbWVudC53aWRnZXRfY29kZSAmJiBlbGVtZW50LnN0YXRlID09ICdBQ1RJVkUnKSB7XHJcbiAgICAgICAgICBlbGUudmFsdWUgPSB0cnVlO1xyXG4gICAgICAgICAgaWYgKGVsZS5zdWJXaWRnZXRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgY29uc3QgZmlsdGVyRGF0YTogYW55ID0gW11cclxuICAgICAgICAgICAgZWxlbWVudC5zdWJfd2lkZ2V0cy5maWx0ZXIoKHN1YndpZGdldDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKHN1YndpZGdldC5zdGF0ZSA9PSAnQUNUSVZFJykge1xyXG4gICAgICAgICAgICAgICAgZmlsdGVyRGF0YS5wdXNoKHN1YndpZGdldC53aWRnZXRfY29kZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgZWxlLnN1YldpZGdldHMuZm9yRWFjaCgoc3ViRWxlbWVudDogYW55LCBzdWJJbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKGZpbHRlckRhdGEuaW5jbHVkZXMoc3ViRWxlbWVudC5pZCkpIHtcclxuICAgICAgICAgICAgICAgIGVsZS5zdWJXaWRnZXRzW3N1YkluZGV4XS52YWx1ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGVsZS5zdWJXaWRnZXRzW3N1YkluZGV4XS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFdpZGdldHMucHVzaChlbGUpO1xyXG5cclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMud2lkZ2V0c0xpc3QuUklTSy5mb3JFYWNoKChlbGU6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChlbGUuaWQgPT0gZWxlbWVudC53aWRnZXRfY29kZSAmJiBlbGVtZW50LnN0YXRlID09ICdBQ1RJVkUnKSB7XHJcbiAgICAgICAgICBlbGUudmFsdWUgPSB0cnVlO1xyXG4gICAgICAgICAgaWYgKGVsZS5zdWJXaWRnZXRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgY29uc3QgZmlsdGVyRGF0YTogYW55ID0gW11cclxuICAgICAgICAgICAgZWxlbWVudC5zdWJfd2lkZ2V0cy5maWx0ZXIoKHN1YndpZGdldDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKHN1YndpZGdldC5zdGF0ZSA9PSAnQUNUSVZFJykge1xyXG4gICAgICAgICAgICAgICAgZmlsdGVyRGF0YS5wdXNoKHN1YndpZGdldC53aWRnZXRfY29kZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgZWxlLnN1YldpZGdldHMuZm9yRWFjaCgoc3ViRWxlbWVudDogYW55LCBzdWJJbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKGZpbHRlckRhdGEuaW5jbHVkZXMoc3ViRWxlbWVudC5pZCkpIHtcclxuICAgICAgICAgICAgICAgIGVsZS5zdWJXaWRnZXRzW3N1YkluZGV4XS52YWx1ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGVsZS5zdWJXaWRnZXRzW3N1YkluZGV4XS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFdpZGdldHMucHVzaChlbGUpO1xyXG5cclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcblxyXG4gICAgfSk7XHJcbiAgICB0aGlzLm1vZHVsZSA9ICh0aGlzLnNob3dDb21wbGlhbmNlKSA/ICdDT01QTElBTkNFJyA6ICdSSVNLJztcclxuICAgIHRoaXMuc2V0U2VsZWN0ZWRXaWRnZXRzKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHJcbiAgfVxyXG5cclxuXHJcbiAgd2lkZ2V0c0xpc3QgPSB7XHJcbiAgICBDT01QTElBTkNFOiBbXHJcbiAgICAgIHtcclxuICAgICAgICB0aXRsZTogJ092ZXJ2aWV3JyxcclxuICAgICAgICBpZDogJ292ZXJ2aWV3JyxcclxuICAgICAgICBkZXNjcmlwdGlvbjogJ092ZXJ2aWV3IHNob3dzIHRoZSBwZXJmb3JtYW5jZSBvZiByZXNwb25zaWJpbGl0aWVzIGFuZCBSZXNwb25zaWJpbGl0eSBDYXRlZ29yaWVzLicsXHJcbiAgICAgICAgd2lkZ2V0SW1hZ2U6ICdodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL2NvbmZpZ3VyZS13aWRnZXQvYXNzZXRzL2ltYWdlcy9vdmVydmlldy5wbmcnLFxyXG4gICAgICAgIHZhbHVlOiBmYWxzZSxcclxuICAgICAgICB2aXNpYmlsaXR5OnRydWUsXHJcbiAgICAgICAgbW9kdWxlOiAnQ09NUExJQU5DRScsXHJcbiAgICAgICAgc3ViV2lkZ2V0czogW11cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHRpdGxlOiAnUmVzcG9uc2liaWxpdHkgQ2FsZW5kYXInLFxyXG4gICAgICAgIGlkOiAnY29tcGxpYW5jZV9jYWxlbmRhcl9mbGFnJyxcclxuICAgICAgICBkZXNjcmlwdGlvbjogJ1RoZSBSZXNwb25zaWJpbGl0eSBDYWxlbmRhciBzaG93cyB0aGUgZHVlIGRhdGVzIG9mIHJlc3BvbnNpYmlsaXRpZXMgaW4gYSBjYWxlbmRhciBmb3JtYXQuIFRoZSByZXNwb25zaWJpbGl0aWVzIGFyZSBjb2xvciBjb2RlZCB0byByZWZsZWN0IHRoZSBzdGF0dXMgb2YgdGhlIHJlc3BvbnNpYmlsaXRpZXMuJyxcclxuICAgICAgICB3aWRnZXRJbWFnZTogJ2h0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvY29uZmlndXJlLXdpZGdldC9hc3NldHMvaW1hZ2VzL3Jlc3BvbnNpYmlsaXR5LWNhbGVuZGVyLnBuZycsXHJcbiAgICAgICAgdmFsdWU6IGZhbHNlLFxyXG4gICAgICAgIHZpc2liaWxpdHk6dHJ1ZSxcclxuICAgICAgICBtb2R1bGU6ICdDT01QTElBTkNFJyxcclxuICAgICAgICBzdWJXaWRnZXRzOiBbXVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdGl0bGU6ICdSZXNwb25zaWJpbGl0eSBDZW50ZXIgT3ZlcnZpZXcnLFxyXG4gICAgICAgIGlkOiAncmVzcG9uc2liaWxpdHlfY2VudGVyX292ZXJ2aWV3X2ZsYWcnLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnVGhlIFJlc3BvbnNpYmlsaXR5IENlbnRlciBPdmVydmlldyBzaG93cyB0aGUgcGVyZm9ybWFuY2Ugb2YgcmVzcG9uc2liaWxpdGllcyBhbmQgUmVzcG9uc2liaWxpdHkgQ2VudGVycy4nLFxyXG4gICAgICAgIHdpZGdldEltYWdlOiAnaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy9jb25maWd1cmUtd2lkZ2V0L2Fzc2V0cy9pbWFnZXMvcmVzcG9uc2liaWxpdHktY2VudGVyLW92ZXJ2aWV3LnBuZycsXHJcbiAgICAgICAgdmFsdWU6IGZhbHNlLFxyXG4gICAgICAgIHZpc2liaWxpdHk6dHJ1ZSxcclxuICAgICAgICBtb2R1bGU6ICdDT01QTElBTkNFJyxcclxuICAgICAgICBzdWJXaWRnZXRzOiBbXVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdGl0bGU6ICdSZXNwb25zaWJpbGl0aWVzJyxcclxuICAgICAgICBpZDogJ215X3Jlc3BvbnNpYmlsaXRpZXMnLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnVGhpcyB3aWRnZXQgc2hvd3MgdGhlIHBlcmZvcm1hbmNlIG9mIHRoZSByZXNwb25zaWJpbGl0aWVzIHRoYXQgeW91IGFyZSByZXF1aXJlZCB0byBjb21wbGV0ZSwgdGhlIHJlc3BvbnNpYmlsaXRpZXMgdGhhdCB5b3UgYXJlIHJldmlld2luZyBhbmQgdGhlIHJlc3BvbnNpYmlsaXRpZXMgdGhhdCB5b3UgYXJlIG92ZXJzZWVpbmcuJyxcclxuICAgICAgICB3aWRnZXRJbWFnZTogJ2h0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvY29uZmlndXJlLXdpZGdldC9hc3NldHMvaW1hZ2VzL215LXJlc3BvbnNpYmlsaXRpZXMucG5nJyxcclxuICAgICAgICB0YWJPcHRpb246IHRydWUsXHJcbiAgICAgICAgdmFsdWU6IGZhbHNlLFxyXG4gICAgICAgIHZpc2liaWxpdHk6dHJ1ZSxcclxuICAgICAgICBtb2R1bGU6ICdDT01QTElBTkNFJyxcclxuICAgICAgICBzdWJXaWRnZXRzOiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHRpdGxlOiAnTXkgUmVzcG9uc2liaWxpdGllcycsXHJcbiAgICAgICAgICAgIGlkOiAnbXlfcmVzcG9uc2liaWxpdHlfZmxhZycsXHJcbiAgICAgICAgICAgIHZhbHVlOiBmYWxzZSxcclxuICAgICAgICAgICAgdmlzaWJpbGl0eTp0cnVlLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdGl0bGU6ICdJ4oCZbSBSZXZpZXdpbmcnLFxyXG4gICAgICAgICAgICBpZDogJ3Jldmlld2VyX3Jlc3BvbnNpYmlsaXR5X2ZsYWcnLFxyXG4gICAgICAgICAgICB2YWx1ZTogZmFsc2UsXHJcbiAgICAgICAgICAgIHZpc2liaWxpdHk6dHJ1ZSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHRpdGxlOiAnSeKAmW0gT3ZlcnNlZWluZycsXHJcbiAgICAgICAgICAgIGlkOiAnY2NfcmVzcG9uc2liaWxpdHlfZmxhZycsXHJcbiAgICAgICAgICAgIHZhbHVlOiBmYWxzZSxcclxuICAgICAgICAgICAgdmlzaWJpbGl0eTp0cnVlLFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIF1cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHRpdGxlOiAnS2V5IFJlc3BvbnNpYmlsaXRpZXMnLFxyXG4gICAgICAgIGlkOiAna2V5X3Jlc3BvbnNpYmlsaXRpZXMnLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnVGhpcyB3aWRnZXQgc2hvd3MgdGhlIHBlcmZvcm1hbmNlIG9mIGtleSByZXNwb25zaWJpbGl0aWVzIHRoYXQgeW91IGFyZSByZXF1aXJlZCB0byBjb21wbGV0ZSwgdGhhdCB5b3UgYXJlIHJldmlld2luZywgdGhhdCB5b3UgYXJlIG92ZXJzZWVpbmcgYW5kIHRoYXQgeW91IGhhdmUgYXNzaWduZWQgdG8gYW5vdGhlciBwZXJzb24uJyxcclxuICAgICAgICB3aWRnZXRJbWFnZTogJ2h0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvY29uZmlndXJlLXdpZGdldC9hc3NldHMvaW1hZ2VzL2tleS1yZXNwb25zaWJpbGl0aWVzLnBuZycsXHJcbiAgICAgICAgdGFiT3B0aW9uOiB0cnVlLFxyXG4gICAgICAgIHZhbHVlOiBmYWxzZSxcclxuICAgICAgICB2aXNpYmlsaXR5OnRydWUsXHJcbiAgICAgICAgbW9kdWxlOiAnQ09NUExJQU5DRScsXHJcbiAgICAgICAgc3ViV2lkZ2V0czogW1xyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB0aXRsZTogJ092ZXJ2aWV3JyxcclxuICAgICAgICAgICAgaWQ6ICdrZXlfcmVzcG9uc2liaWxpdGllc19vdmVydmlld19mbGFnJyxcclxuICAgICAgICAgICAgdmFsdWU6IGZhbHNlLFxyXG4gICAgICAgICAgICB2aXNpYmlsaXR5OnRydWUsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB0aXRsZTogJ015IFJlc3BvbnNpYmlsaXRpZXMnLFxyXG4gICAgICAgICAgICBpZDogJ2tleV9teV9yZXNwb25zaWJpbGl0aWVzX2ZsYWcnLFxyXG4gICAgICAgICAgICB2YWx1ZTogZmFsc2UsXHJcbiAgICAgICAgICAgIHZpc2liaWxpdHk6dHJ1ZSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHRpdGxlOiAnSeKAmW0gUmV2aWV3aW5nJyxcclxuICAgICAgICAgICAgaWQ6ICdrZXlfaV9hbV9yZXZpZXdpbmdfZmxhZycsXHJcbiAgICAgICAgICAgIHZhbHVlOiBmYWxzZSxcclxuICAgICAgICAgICAgdmlzaWJpbGl0eTp0cnVlLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdGl0bGU6ICdJ4oCZbSBPdmVyc2VlaW5nJyxcclxuICAgICAgICAgICAgaWQ6ICdrZXlfaV9hbV9vdmVyc2VlaW5nX2ZsYWcnLFxyXG4gICAgICAgICAgICB2YWx1ZTogZmFsc2UsXHJcbiAgICAgICAgICAgIHZpc2liaWxpdHk6dHJ1ZSxcclxuICAgICAgICAgIH1cclxuICAgICAgICBdXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0aXRsZTogJ1RyZW5kIEFuYWx5c2lzJyxcclxuICAgICAgICBpZDogJ3RyZW5kX2FuYWx5c2lzX2ZsYWcnLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnVGhlIFRyZW5kIEFuYWx5c2lzIGlzIGEgZ3JhcGhpY2FsIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBwZXJmb3JtYW5jZSBvZiByZXNwb25zaWJpbGl0aWVzIG92ZXIgYSBwZXJpb2QuJyxcclxuICAgICAgICB3aWRnZXRJbWFnZTogJ2h0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvY29uZmlndXJlLXdpZGdldC9hc3NldHMvaW1hZ2VzL3RyZW5kLWFuYWx5c2lzLnBuZycsXHJcbiAgICAgICAgdmFsdWU6IGZhbHNlLFxyXG4gICAgICAgIHZpc2liaWxpdHk6dHJ1ZSxcclxuICAgICAgICBtb2R1bGU6ICdDT01QTElBTkNFJyxcclxuICAgICAgICBzdWJXaWRnZXRzOiBbXVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdGl0bGU6ICdXb3Jrcm9vbSBVcGRhdGVzJyxcclxuICAgICAgICBpZDogJ3dvcmtyb29tX2FsZXJ0X2ZsYWcnLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnVGhlIFJlc3BvbnNpYmlsaXR5IFdvcmtyb29tIHNob3dzIHVwZGF0ZXMgZnJvbSB0aGUgUmVzcG9uc2liaWxpdHkgV29ya3Jvb21zLiBBIFJlc3BvbnNpYmlsaXR5IFdvcmtyb29tIGV4aXN0cyBmb3IgYWxsIHJlc3BvbnNpYmlsaXRpZXMuJyxcclxuICAgICAgICB3aWRnZXRJbWFnZTogJ2h0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvY29uZmlndXJlLXdpZGdldC9hc3NldHMvaW1hZ2VzL3dvcmtyb29tLXVwZGF0ZXMucG5nJyxcclxuICAgICAgICB2YWx1ZTogZmFsc2UsXHJcbiAgICAgICAgdmlzaWJpbGl0eTp0cnVlLFxyXG4gICAgICAgIG1vZHVsZTogJ0NPTVBMSUFOQ0UnLFxyXG4gICAgICAgIHN1YldpZGdldHM6IFtdXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0aXRsZTogJ1JlY2VudCBBY3Rpdml0aWVzJyxcclxuICAgICAgICBpZDogJ3JlY2VudF9hY3Rpdml0eV9mbGFnJyxcclxuICAgICAgICBkZXNjcmlwdGlvbjogJ1RoaXMgaXMgYSBjaHJvbm9sb2dpY2FsIHZpZXcgb2YgdGhlIHJlY2VudCB1cGRhdGVzIG9mIHJlc3BvbnNpYmlsaXRpZXMuJyxcclxuICAgICAgICB3aWRnZXRJbWFnZTogJ2h0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvY29uZmlndXJlLXdpZGdldC9hc3NldHMvaW1hZ2VzL3JlY2VudC1hY3Rpdml0aWVzLnBuZycsXHJcbiAgICAgICAgdmFsdWU6IGZhbHNlLFxyXG4gICAgICAgIHZpc2liaWxpdHk6dHJ1ZSxcclxuICAgICAgICBtb2R1bGU6ICdDT01QTElBTkNFJyxcclxuICAgICAgICBzdWJXaWRnZXRzOiBbXVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdGl0bGU6ICdFeGNlcHRpb24gU3VtbWFyeScsXHJcbiAgICAgICAgaWQ6ICdleGNlcHRpb25fc3VtbWFyeV9mbGFnJyxcclxuICAgICAgICBkZXNjcmlwdGlvbjogJ0V4Y2VwdGlvbnMgU3VtbWFyeSBzaG93IHRoZSBudW1iZXIgb2YgcmVzcG9uc2liaWxpdGllcyB0aGF0IGFyZSBlaXRoZXIgbm90IGFjY2VwdGVkLCBub3QgY29tcGxldGVkIG9yIGRlbGV0ZWQuJyxcclxuICAgICAgICB3aWRnZXRJbWFnZTogJ2h0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvY29uZmlndXJlLXdpZGdldC9hc3NldHMvaW1hZ2VzL2V4Y2VwdGlvbi1zdW1tYXJ5LnBuZycsXHJcbiAgICAgICAgdmFsdWU6IGZhbHNlLFxyXG4gICAgICAgIHZpc2liaWxpdHk6dHJ1ZSxcclxuICAgICAgICBtb2R1bGU6ICdDT01QTElBTkNFJyxcclxuICAgICAgICBzdWJXaWRnZXRzOiBbXVxyXG4gICAgICB9XHJcbiAgICBdLFxyXG4gICAgUklTSzogW1xyXG4gICAgICB7XHJcbiAgICAgICAgdGl0bGU6ICdSaXNrIE92ZXJ2aWV3JyxcclxuICAgICAgICBpZDogJ3Jpc2tfb3ZlcnZpZXcnLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnVGhpcyB3aWRnZXQgc2hvd3MgdGhlIG51bWJlciBhbmQgcGVyY2VudGFnZSBvZiByaXNrcyB3aXRoaW4gZWFjaCByaXNrIHJlc3BvbnNlIHN0cmF0ZWd5LicsXHJcbiAgICAgICAgd2lkZ2V0SW1hZ2U6ICdodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL2NvbmZpZ3VyZS13aWRnZXQvYXNzZXRzL2ltYWdlcy9yaXNrLW92ZXJ2aWV3LnBuZycsXHJcbiAgICAgICAgdmFsdWU6IGZhbHNlLFxyXG4gICAgICAgIHZpc2liaWxpdHk6dHJ1ZSxcclxuICAgICAgICBtb2R1bGU6ICdSSVNLJyxcclxuICAgICAgICBzdWJXaWRnZXRzOiBbXVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdGl0bGU6ICdSaXNrIE1ldHJpY3MnLFxyXG4gICAgICAgIGlkOiAncmlza19tZXRyaWNzJyxcclxuICAgICAgICBkZXNjcmlwdGlvbjogJ1RoaXMgd2lkZ2V0IHNob3dzIHRoZSBudW1iZXIgb2Ygcmlza3Mgd2l0aGluIGVhY2ggcmlzayBhcHBldGl0ZSwgdGhlIG51bWJlciBvZiByaXNrcyB0aGF0IGV4Y2VlZCB0aGUgcmlzayBhcHBldGl0ZSwgdGhlIG51bWJlciBvZiByaXNrcyB0aGF0IGV4Y2VlZCB0aGUgcmlzayB0b2xlcmFuY2UsIHRoZSBudW1iZXIgb2Ygcmlza3Mgd2l0aGluIGVhY2ggcmlzayByYXRpbmcsIGFuZCB0aGUgbnVtYmVyIG9mIHJpc2tzIHRoYXQgZG8gbm90IGhhdmUgYW55IGxpbmtlZCBjb250cm9scy4nLFxyXG4gICAgICAgIHdpZGdldEltYWdlOiAnaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy9jb25maWd1cmUtd2lkZ2V0L2Fzc2V0cy9pbWFnZXMvYXBwZXRpdGUtdG9sZXJhbmNlLnBuZycsXHJcbiAgICAgICAgdmFsdWU6IGZhbHNlLFxyXG4gICAgICAgIHZpc2liaWxpdHk6dHJ1ZSxcclxuICAgICAgICBtb2R1bGU6ICdSSVNLJyxcclxuICAgICAgICBzdWJXaWRnZXRzOiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHRpdGxlOiAnUmlzayBBcHBldGl0ZSAmIFRvbGVyYW5jZScsXHJcbiAgICAgICAgICAgIGlkOiAncmlza19hcHBldGl0ZV90b2xlcmFuY2UnLFxyXG4gICAgICAgICAgICB2YWx1ZTogZmFsc2UsXHJcbiAgICAgICAgICAgIHZpc2liaWxpdHk6dHJ1ZSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHRpdGxlOiAnUmlzayBSYXRpbmdzJyxcclxuICAgICAgICAgICAgaWQ6ICdyaXNrX3JhdGluZ3MnLFxyXG4gICAgICAgICAgICB2YWx1ZTogZmFsc2UsXHJcbiAgICAgICAgICAgIHZpc2liaWxpdHk6dHJ1ZSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHRpdGxlOiAnUmlza3MgV2l0aG91dCBDb250cm9scycsXHJcbiAgICAgICAgICAgIGlkOiAncmlza3Nfd2l0aG91dF9jb250cm9scycsXHJcbiAgICAgICAgICAgIHZhbHVlOiBmYWxzZSxcclxuICAgICAgICAgICAgdmlzaWJpbGl0eTp0cnVlLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdGl0bGU6ICdFeGNlZWRzIFJpc2sgVG9sZXJhbmNlJyxcclxuICAgICAgICAgICAgaWQ6ICdleGNlZWRzX3Jpc2tfdG9sZXJhbmNlJyxcclxuICAgICAgICAgICAgdmFsdWU6IGZhbHNlLFxyXG4gICAgICAgICAgICB2aXNpYmlsaXR5OnRydWUsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIF1cclxuICAgICAgfSxcclxuXHJcbiAgICAgIHtcclxuICAgICAgICB0aXRsZTogJ0luaGVyZW50IFJpc2sgUmF0aW5nIGJ5IFJlc3BvbnNpYmlsaXR5IENlbnRlcnMgJyxcclxuICAgICAgICBpZDogJ2luaGVyZW50X3Jpc2tfcmF0aW5nX2J5X3Jlc3BvbnNpYmlsaXR5X2NlbnRlcnMnLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnVGhpcyB3aWRnZXQgc2hvd3MgdGhlIG51bWJlciBvZiByaXNrcyB3aXRoaW4gZWFjaCBpbmhlcmVudCByaXNrIHJhdGluZywgZ3JvdXBlZCBhY2NvcmRpbmcgdG8gdGhlwqBSZXNwb25zaWJpbGl0eSBDZW50ZXLCoGV4cG9zZWQgdG8gdGhlIHJpc2suJyxcclxuICAgICAgICB3aWRnZXRJbWFnZTogJ2h0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvY29uZmlndXJlLXdpZGdldC9hc3NldHMvaW1hZ2VzL2luaGVyZW50LVJDLnBuZycsXHJcbiAgICAgICAgdmFsdWU6IGZhbHNlLFxyXG4gICAgICAgIHZpc2liaWxpdHk6dHJ1ZSxcclxuICAgICAgICBtb2R1bGU6ICdSSVNLJyxcclxuICAgICAgICBzdWJXaWRnZXRzOiBbXVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdGl0bGU6ICdSZXNpZHVhbCBSaXNrIFJhdGluZyBieSBSZXNwb25zaWJpbGl0eSBDZW50ZXJzICcsXHJcbiAgICAgICAgaWQ6ICdyZXNpZHVhbF9yaXNrX3JhdGluZ19ieV9yZXNwb25zaWJpbGl0eV9jZW50ZXJzJyxcclxuICAgICAgICBkZXNjcmlwdGlvbjogJ1RoaXMgd2lkZ2V0IHNob3dzIHRoZSBudW1iZXIgb2Ygcmlza3Mgd2l0aGluIGVhY2ggcmVzaWR1YWwgcmlzayByYXRpbmcsIGdyb3VwZWQgYWNjb3JkaW5nIHRvIHRoZcKgUmVzcG9uc2liaWxpdHkgQ2VudGVywqBleHBvc2VkIHRvIHRoZSByaXNrLicsXHJcbiAgICAgICAgd2lkZ2V0SW1hZ2U6ICdodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL2NvbmZpZ3VyZS13aWRnZXQvYXNzZXRzL2ltYWdlcy9yZXNpZHVhbC1SQy5wbmcnLFxyXG4gICAgICAgIHZhbHVlOiBmYWxzZSxcclxuICAgICAgICB2aXNpYmlsaXR5OnRydWUsXHJcbiAgICAgICAgbW9kdWxlOiAnUklTSycsXHJcbiAgICAgICAgc3ViV2lkZ2V0czogW11cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHRpdGxlOiAnUmlzayBDYXRlZ29yeSBPdmVydmlldycsXHJcbiAgICAgICAgaWQ6ICdyaXNrX2NhdGVnb3J5X292ZXJ2aWV3JyxcclxuICAgICAgICBkZXNjcmlwdGlvbjogJ1RoaXMgd2lkZ2V0cyBzaG93cyB0aGXCoG51bWJlciBvZiByaXNrcyB3aXRoaW4gZWFjaCBzdGF0dXMsIGdyb3VwZWQgYWNjb3JkaW5nIHRvIHRoZSBSaXNrIENhdGVnb3J5IHRoZSByaXNrIGlzIGFzc2lnbmVkIHRvLicsXHJcbiAgICAgICAgd2lkZ2V0SW1hZ2U6ICdodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL2NvbmZpZ3VyZS13aWRnZXQvYXNzZXRzL2ltYWdlcy9yaXNrLWNhdGVnb3J5LW92ZXJ2aWV3LnBuZycsXHJcbiAgICAgICAgdmFsdWU6IGZhbHNlLFxyXG4gICAgICAgIHZpc2liaWxpdHk6dHJ1ZSxcclxuICAgICAgICBtb2R1bGU6ICdSSVNLJyxcclxuICAgICAgICBzdWJXaWRnZXRzOiBbXVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdGl0bGU6ICdSaXNrIEhlYXRtYXAnLFxyXG4gICAgICAgIGlkOiAncmlza19oZWF0bWFwJyxcclxuICAgICAgICBkZXNjcmlwdGlvbjogJ1RoZcKgUmlzayBIZWF0bWFwIGRpc3BsYXlzIHRoZSByaXNrIG1hdHJpeCBmb3IgYW55IHR3byByaXNrIGZhY3RvcnMuJyxcclxuICAgICAgICB3aWRnZXRJbWFnZTogJ2h0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvY29uZmlndXJlLXdpZGdldC9hc3NldHMvaW1hZ2VzL3Jpc2staGVhdG1hcC5wbmcnLFxyXG4gICAgICAgIHZhbHVlOiBmYWxzZSxcclxuICAgICAgICB2aXNpYmlsaXR5OnRydWUsXHJcbiAgICAgICAgbW9kdWxlOiAnUklTSycsXHJcbiAgICAgICAgc3ViV2lkZ2V0czogW11cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHRpdGxlOiAnSW5oZXJlbnQgUmlzayBSYXRpbmcgYnkgQ2F0ZWdvcmllcycsXHJcbiAgICAgICAgaWQ6ICdpbmhlcmVudF9yaXNrX3JhdGluZ19ieV9jYXRlZ29yaWVzJyxcclxuICAgICAgICBkZXNjcmlwdGlvbjogJ1RoaXMgd2lkZ2V0IHNob3dzIHRoZSBudW1iZXIgb2Ygcmlza3Mgd2l0aGluIGVhY2ggaW5oZXJlbnQgcmlzayByYXRpbmcsIGdyb3VwZWQgYWNjb3JkaW5nIHRvIHRoZSBSaXNrIENhdGVnb3J5wqB0aGF0wqB0aGUgcmlzayBpcyBhc3NpZ25lZCB0by4nLFxyXG4gICAgICAgIHdpZGdldEltYWdlOiAnaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy9jb25maWd1cmUtd2lkZ2V0L2Fzc2V0cy9pbWFnZXMvaW5oZXJlbnQtY2F0ZWdvcmllcy5wbmcnLFxyXG4gICAgICAgIHZhbHVlOiBmYWxzZSxcclxuICAgICAgICB2aXNpYmlsaXR5OnRydWUsXHJcbiAgICAgICAgbW9kdWxlOiAnUklTSycsXHJcbiAgICAgICAgc3ViV2lkZ2V0czogW11cclxuICAgICAgfSxcclxuXHJcbiAgICAgIHtcclxuICAgICAgICB0aXRsZTogJ1Jlc2lkdWFsIFJpc2sgUmF0aW5nIGJ5IENhdGVnb3JpZXMnLFxyXG4gICAgICAgIGlkOiAncmVzaWR1YWxfcmlza19yYXRpbmdfYnlfY2F0ZWdvcmllcycsXHJcbiAgICAgICAgZGVzY3JpcHRpb246ICdUaGlzIHdpZGdldCBzaG93cyB0aGUgbnVtYmVyIG9mIHJpc2tzIHdpdGhpbiBlYWNoIHJlc2lkdWFsIHJpc2sgcmF0aW5nLCBncm91cGVkIGFjY29yZGluZyB0byB0aGUgUmlzayBDYXRlZ29yecKgdGhhdMKgdGhlIHJpc2sgaXMgYXNzaWduZWQgdG8uJyxcclxuICAgICAgICB3aWRnZXRJbWFnZTogJ2h0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvY29uZmlndXJlLXdpZGdldC9hc3NldHMvaW1hZ2VzL3Jlc2lkdWFsLWNhdGVnb3JpZXMucG5nJyxcclxuICAgICAgICB2YWx1ZTogZmFsc2UsXHJcbiAgICAgICAgdmlzaWJpbGl0eTp0cnVlLFxyXG4gICAgICAgIG1vZHVsZTogJ1JJU0snLFxyXG4gICAgICAgIHN1YldpZGdldHM6IFtdXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0aXRsZTogJ0luaGVyZW50IFJpc2sgUmF0aW5nIFRyZW5kIGJ5IFJlc3BvbnNpYmlsaXR5IENlbnRlcnMnLFxyXG4gICAgICAgIGlkOiAnaW5oZXJlbnRfcmlza19yYXRpbmdfdHJlbmRfYnlfcmVzcG9uc2liaWxpdHlfY2VudGVycycsXHJcbiAgICAgICAgZGVzY3JpcHRpb246ICdUaGlzIHdpZGdldCBpcyBhIGdyYXBoaWNhbCByZXByZXNlbnRhdGlvbiBvZiB0aGUgbnVtYmVyIG9mIHJpc2tzIHdpdGhpbiBlYWNoIGluaGVyZW50IHJpc2sgcmF0aW5nLCBncm91cGVkIGFjY29yZGluZyB0byB0aGUgUmVzcG9uc2liaWxpdHkgQ2VudGVyIGV4cG9zZWQgdG8gdGhlIHJpc2suJyxcclxuICAgICAgICB3aWRnZXRJbWFnZTogJ2h0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvY29uZmlndXJlLXdpZGdldC9hc3NldHMvaW1hZ2VzL2luaGVyZW50LXRyZW5kLnBuZycsXHJcbiAgICAgICAgdmFsdWU6IGZhbHNlLFxyXG4gICAgICAgIHZpc2liaWxpdHk6dHJ1ZSxcclxuICAgICAgICBtb2R1bGU6ICdSSVNLJyxcclxuICAgICAgICBzdWJXaWRnZXRzOiBbXVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdGl0bGU6ICdSZXNpZHVhbCBSaXNrIFJhdGluZyBUcmVuZCBieSBSZXNwb25zaWJpbGl0eSBDZW50ZXJzJyxcclxuICAgICAgICBpZDogJ3Jlc2lkdWFsX3Jpc2tfcmF0aW5nX3RyZW5kX2J5X3Jlc3BvbnNpYmlsaXR5X2NlbnRlcnMnLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnVGhpcyB3aWRnZXQgaXMgYSBncmFwaGljYWwgcmVwcmVzZW50YXRpb24gb2YgdGhlIG51bWJlciBvZiByaXNrcyB3aXRoaW4gZWFjaCByZXNpZHVhbCByaXNrIHJhdGluZywgZ3JvdXBlZCBhY2NvcmRpbmcgdG8gdGhlIFJlc3BvbnNpYmlsaXR5IENlbnRlciBleHBvc2VkIHRvIHRoZSByaXNrLicsXHJcbiAgICAgICAgd2lkZ2V0SW1hZ2U6ICdodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL2NvbmZpZ3VyZS13aWRnZXQvYXNzZXRzL2ltYWdlcy9yZXNpZHVhbC10cmVuZC5wbmcnLFxyXG4gICAgICAgIHZhbHVlOiBmYWxzZSxcclxuICAgICAgICB2aXNpYmlsaXR5OnRydWUsXHJcbiAgICAgICAgbW9kdWxlOiAnUklTSycsXHJcbiAgICAgICAgc3ViV2lkZ2V0czogW11cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHRpdGxlOiAnUmlzayBSYXRpbmcgVHJlbmQgYnkgQ2F0ZWdvcmllcycsXHJcbiAgICAgICAgaWQ6ICdyaXNrX3JhdGluZ190cmVuZF9ieV9jYXRlZ29yaWVzJyxcclxuICAgICAgICBkZXNjcmlwdGlvbjogJ1RoaXMgd2lkZ2V0cyBpcyBhIHRyZW5kIGNoYXJ0IHRoYXQgc2hvd3MgdGhlIGluaGVyZW50IGFuZCByZXNpZHVhbCByaXNrIHJhdGluZyB0cmVuZCBhY3Jvc3MgdGhlIGRpZmZlcmVudCBSaXNrIENhdGVnb3JpZXMuJyxcclxuICAgICAgICB3aWRnZXRJbWFnZTogJ2h0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvY29uZmlndXJlLXdpZGdldC9hc3NldHMvaW1hZ2VzL3Jpc2stdHJlbmQucG5nJyxcclxuICAgICAgICB2YWx1ZTogZmFsc2UsXHJcbiAgICAgICAgdmlzaWJpbGl0eTp0cnVlLFxyXG4gICAgICAgIG1vZHVsZTogJ1JJU0snLFxyXG4gICAgICAgIHN1YldpZGdldHM6IFtdXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0aXRsZTogJ1RvcCA1IFJpc2sgUmF0aW5ncycsXHJcbiAgICAgICAgaWQ6ICd0b3BfNV9yZXNpZHVhbF9yaXNrX3JhdGluZ3MnLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnVGhpcyB3aWRnZXRzIHNob3dzIHRocyB0b3AgZml2ZSByaXNrcyB3aXRoIHRoZSBoaWdoZXN0IHJpc2sgcmF0aW5nLicsXHJcbiAgICAgICAgd2lkZ2V0SW1hZ2U6ICdodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL2NvbmZpZ3VyZS13aWRnZXQvYXNzZXRzL2ltYWdlcy81LXJpc2stcmF0aW5ncy5wbmcnLFxyXG4gICAgICAgIHZhbHVlOiBmYWxzZSxcclxuICAgICAgICB2aXNpYmlsaXR5OnRydWUsXHJcbiAgICAgICAgbW9kdWxlOiAnUklTSycsXHJcbiAgICAgICAgc3ViV2lkZ2V0czogW11cclxuICAgICAgfVxyXG4gICAgXVxyXG4gIH1cclxuXHJcbiAgc2VsZWN0V2lkZ2V0KGV2ZW50OiBhbnksIG1vZHVsZTogJ0NPTVBMSUFOQ0UnIHwgJ1JJU0snLCB3aWRnZXRJZDogc3RyaW5nLCBzdWJXaWRnZXRJZD86IHN0cmluZykge1xyXG4gICAgY29uc3Qgd2lkZ2V0SW5kZXggPSB0aGlzLndpZGdldHNMaXN0W21vZHVsZV0uZmluZEluZGV4KChlbGU6IGFueSkgPT4gZWxlLmlkID09IHdpZGdldElkKTtcclxuICAgIGlmIChldmVudCkge1xyXG4gICAgICBpZiAodGhpcy5zZWxlY3RlZFdpZGdldHMubGVuZ3RoID49IDEwKSB7XHJcbiAgICAgICAgdGhpcy5zbmFja0Jhci5zaG93KCdZb3UgY2Fubm90IGFkZCBtb3JlIHRoYW4gMTAgd2lkZ2V0cy4nKTtcclxuICAgICAgICB0aGlzLnNob3dXaWRnZXRzID0gZmFsc2U7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLndpZGdldHNMaXN0W21vZHVsZV1bd2lkZ2V0SW5kZXhdLnZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnNob3dXaWRnZXRzID0gdHJ1ZTtcclxuICAgICAgICB9LCAxMCk7XHJcbiAgICAgICAgcmV0dXJuXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy53aWRnZXRzTGlzdFttb2R1bGVdW3dpZGdldEluZGV4XS52YWx1ZSA9IHRydWU7XHJcbiAgICAgIGlmICh0aGlzLndpZGdldHNMaXN0W21vZHVsZV1bd2lkZ2V0SW5kZXhdLnN1YldpZGdldHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGlmICghc3ViV2lkZ2V0SWQpIHtcclxuICAgICAgICAgIHRoaXMud2lkZ2V0c0xpc3RbbW9kdWxlXVt3aWRnZXRJbmRleF0uc3ViV2lkZ2V0cy5mb3JFYWNoKGVsZSA9PiBlbGUudmFsdWUgPSB0cnVlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29uc3Qgc3ViV2lkZ2V0SW5kZXggPSB0aGlzLndpZGdldHNMaXN0W21vZHVsZV1bd2lkZ2V0SW5kZXhdLnN1YldpZGdldHMuZmluZEluZGV4KChlbGU6IGFueSkgPT4gZWxlLmlkID09IHN1YldpZGdldElkKTtcclxuICAgICAgICAgIHRoaXMud2lkZ2V0c0xpc3RbbW9kdWxlXVt3aWRnZXRJbmRleF0uc3ViV2lkZ2V0c1tzdWJXaWRnZXRJbmRleF0udmFsdWUgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMud2lkZ2V0c0xpc3RbbW9kdWxlXVt3aWRnZXRJbmRleF0uc3ViV2lkZ2V0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgaWYgKCFzdWJXaWRnZXRJZCkge1xyXG4gICAgICAgICAgdGhpcy53aWRnZXRzTGlzdFttb2R1bGVdW3dpZGdldEluZGV4XS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy53aWRnZXRzTGlzdFttb2R1bGVdW3dpZGdldEluZGV4XS5zdWJXaWRnZXRzLmZvckVhY2goKGVsZTogYW55KSA9PiBlbGUudmFsdWUgPSBmYWxzZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnN0IHN1YldpZGdldEluZGV4ID0gdGhpcy53aWRnZXRzTGlzdFttb2R1bGVdW3dpZGdldEluZGV4XS5zdWJXaWRnZXRzLmZpbmRJbmRleCgoZWxlOiBhbnkpID0+IGVsZS5pZCA9PSBzdWJXaWRnZXRJZCk7XHJcbiAgICAgICAgICB0aGlzLndpZGdldHNMaXN0W21vZHVsZV1bd2lkZ2V0SW5kZXhdLnN1YldpZGdldHNbc3ViV2lkZ2V0SW5kZXhdLnZhbHVlID0gZmFsc2U7XHJcblxyXG4gICAgICAgICAgY29uc3QgaXNBbGxXaWRnZXRzUmVtb3ZlZCA9IHRoaXMud2lkZ2V0c0xpc3RbbW9kdWxlXVt3aWRnZXRJbmRleF0uc3ViV2lkZ2V0cy5ldmVyeSgoZWxlOiBhbnkpID0+IGVsZS52YWx1ZSA9PSBmYWxzZSk7XHJcbiAgICAgICAgICBpZiAoaXNBbGxXaWRnZXRzUmVtb3ZlZCkge1xyXG4gICAgICAgICAgICB0aGlzLndpZGdldHNMaXN0W21vZHVsZV1bd2lkZ2V0SW5kZXhdLnZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMud2lkZ2V0c0xpc3RbbW9kdWxlXVt3aWRnZXRJbmRleF0udmFsdWUgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5zZXRTZWxlY3RlZFdpZGdldHMoKTtcclxuXHJcbiAgfVxyXG4gIHNldFNlbGVjdGVkV2lkZ2V0cygpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRXaWRnZXRzID0gW11cclxuICAgIHRoaXMud2lkZ2V0c0xpc3QuQ09NUExJQU5DRS5mb3JFYWNoKChlbGU6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoZWxlLnZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFdpZGdldHMucHVzaChlbGUpXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgICB0aGlzLndpZGdldHNMaXN0LlJJU0suZm9yRWFjaCgoZWxlOiBhbnkpID0+IHtcclxuICAgICAgaWYgKGVsZS52YWx1ZSkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRXaWRnZXRzLnB1c2goZWxlKVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgcmVtb3ZlV2lkZ2V0KHdpZGdldDogd2lkZ2V0Q29uZmlnKSB7XHJcbiAgICBjb25zdCB3aWRnZXRJbmRleCA9IHRoaXMud2lkZ2V0c0xpc3Rbd2lkZ2V0Lm1vZHVsZV0uZmluZEluZGV4KChlbGU6IGFueSkgPT4gZWxlLmlkID09IHdpZGdldC5pZCk7XHJcbiAgICB0aGlzLndpZGdldHNMaXN0W3dpZGdldC5tb2R1bGVdW3dpZGdldEluZGV4XS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgaWYgKHRoaXMud2lkZ2V0c0xpc3Rbd2lkZ2V0Lm1vZHVsZV1bd2lkZ2V0SW5kZXhdLnN1YldpZGdldHMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLndpZGdldHNMaXN0W3dpZGdldC5tb2R1bGVdW3dpZGdldEluZGV4XS5zdWJXaWRnZXRzLmZvckVhY2goKGVsZTogYW55KSA9PiBlbGUudmFsdWUgPSBmYWxzZSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldFNlbGVjdGVkV2lkZ2V0cygpXHJcbiAgfVxyXG5cclxuICBvbk5leHRDbGljaygpIHtcclxuICAgIHRoaXMud2lkZ2V0c0RhdGFNb2RpZmllZC5lbWl0KHRoaXMuc2VsZWN0ZWRXaWRnZXRzKTtcclxuICB9XHJcblxyXG4gIGNsb3NlQ29uZmlndXJlRGFzaGJvYXJkKCkge1xyXG4gICAgdGhpcy5zZWxlY3RlZFdpZGdldHMgPSBbXTtcclxuICAgIHRoaXMuZGlhbG9nLmNsb3NlKCk7XHJcbiAgICB0aGlzLmNsb3NlQ29uZmlndXJlV2lkZ2V0cy5lbWl0KGZhbHNlKTtcclxuICB9XHJcblxyXG4gIHNldFdpZGdldHNWaXNpYmlsaXR5VG9GYWxzZSgpe1xyXG4gICAgdGhpcy53aWRnZXRzTGlzdC5DT01QTElBTkNFLmZvckVhY2goKGVsZTogYW55KSA9PiB7XHJcbiAgICAgICAgZWxlLnZpc2liaWxpdHkgPSBmYWxzZTtcclxuICAgICAgICBpZiAoZWxlLnN1YldpZGdldHMubGVuZ3RoID4gMCkgeyAgICAgICAgXHJcbiAgICAgICAgICBlbGUuc3ViV2lkZ2V0cy5mb3JFYWNoKChzdWJFbGVtZW50OiBhbnkpID0+IHsgICAgICAgIFxyXG4gICAgICAgICAgICBzdWJFbGVtZW50LnZpc2liaWxpdHkgPSBmYWxzZTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH0pXHJcbiAgICB0aGlzLndpZGdldHNMaXN0LlJJU0suZm9yRWFjaCgoZWxlOiBhbnkpID0+IHtcclxuICAgICAgICBlbGUudmlzaWJpbGl0eSA9IGZhbHNlO1xyXG4gICAgICAgIGlmIChlbGUuc3ViV2lkZ2V0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICBlbGUuc3ViV2lkZ2V0cy5mb3JFYWNoKChzdWJFbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgc3ViRWxlbWVudC52aXNpYmlsaXR5ID0gZmFsc2U7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxufVxyXG4iXX0=
|