@beeq/angular 1.8.0-beta.14 → 1.8.0-beta.16

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.
@@ -5,16 +5,45 @@ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, NgZo
5
5
  import { ProxyCmp, proxyOutputs } from './angular-component-lib/utils';
6
6
  import * as i0 from "@angular/core";
7
7
  let BqAccordion = class BqAccordion {
8
- z;
9
- el;
8
+ /**
9
+ * The appearance style of the Accordion
10
+ */
11
+ set appearance(_) { }
12
+ ;
13
+ /**
14
+ * If true, the Accordion is disabled
15
+ */
16
+ set disabled(_) { }
17
+ ;
18
+ /**
19
+ * If true, the Accordion is expanded
20
+ */
21
+ set expanded(_) { }
22
+ ;
23
+ /**
24
+ * Animation is set through JS when the browser does not support CSS calc-size()
25
+ If true, the Accordion animation, will be disabled. No animation will be applied.
26
+ */
27
+ set noAnimation(_) { }
28
+ ;
29
+ /**
30
+ * If true, the Accordion expand icon is rotate 180deg when expanded
31
+ */
32
+ set rotate(_) { }
33
+ ;
34
+ /**
35
+ * The size of the Accordion
36
+ */
37
+ set size(_) { }
38
+ ;
10
39
  constructor(c, r, z) {
11
40
  this.z = z;
12
41
  c.detach();
13
42
  this.el = r.nativeElement;
14
- proxyOutputs(this, this.el, ['bqBlur', 'bqFocus', 'bqOpen', 'bqAfterOpen', 'bqClose', 'bqAfterClose']);
43
+ proxyOutputs(this, this.el, ['bqBlur', 'bqFocus', 'bqOpen', 'bqAfterOpen', 'bqClose', 'bqAfterClose', 'bqClick']);
15
44
  }
16
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqAccordion, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
17
- /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: BqAccordion, selector: "bq-accordion", inputs: { appearance: "appearance", disabled: "disabled", expanded: "expanded", noAnimation: "noAnimation", rotate: "rotate", size: "size" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
45
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqAccordion, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
46
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BqAccordion, selector: "bq-accordion", inputs: { appearance: "appearance", disabled: "disabled", expanded: "expanded", noAnimation: "noAnimation", rotate: "rotate", size: "size" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
18
47
  };
19
48
  BqAccordion = __decorate([
20
49
  ProxyCmp({
@@ -23,7 +52,7 @@ BqAccordion = __decorate([
23
52
  __metadata("design:paramtypes", [ChangeDetectorRef, ElementRef, NgZone])
24
53
  ], BqAccordion);
25
54
  export { BqAccordion };
26
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqAccordion, decorators: [{
55
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqAccordion, decorators: [{
27
56
  type: Component,
28
57
  args: [{
29
58
  selector: 'bq-accordion',
@@ -34,15 +63,39 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
34
63
  }]
35
64
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
36
65
  let BqAccordionGroup = class BqAccordionGroup {
37
- z;
38
- el;
66
+ /**
67
+ * The appearance style of accordion to be applied to all accordions
68
+ */
69
+ set appearance(_) { }
70
+ ;
71
+ /**
72
+ * If true all accordions are expanded
73
+ */
74
+ set expandAll(_) { }
75
+ ;
76
+ /**
77
+ * Animation is set through JS when the browser does not support CSS calc-size()
78
+ If true, the accordion animation, will be disabled. No animation will be applied.
79
+ */
80
+ set noAnimation(_) { }
81
+ ;
82
+ /**
83
+ * If true multiple accordions can be expanded at the same time
84
+ */
85
+ set multiple(_) { }
86
+ ;
87
+ /**
88
+ * The size of accordion to be applied to all accordions
89
+ */
90
+ set size(_) { }
91
+ ;
39
92
  constructor(c, r, z) {
40
93
  this.z = z;
41
94
  c.detach();
42
95
  this.el = r.nativeElement;
43
96
  }
44
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqAccordionGroup, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
45
- /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: BqAccordionGroup, selector: "bq-accordion-group", inputs: { appearance: "appearance", expandAll: "expandAll", multiple: "multiple", noAnimation: "noAnimation", size: "size" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
97
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqAccordionGroup, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
98
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BqAccordionGroup, selector: "bq-accordion-group", inputs: { appearance: "appearance", expandAll: "expandAll", multiple: "multiple", noAnimation: "noAnimation", size: "size" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
46
99
  };
47
100
  BqAccordionGroup = __decorate([
48
101
  ProxyCmp({
@@ -51,7 +104,7 @@ BqAccordionGroup = __decorate([
51
104
  __metadata("design:paramtypes", [ChangeDetectorRef, ElementRef, NgZone])
52
105
  ], BqAccordionGroup);
53
106
  export { BqAccordionGroup };
54
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqAccordionGroup, decorators: [{
107
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqAccordionGroup, decorators: [{
55
108
  type: Component,
56
109
  args: [{
57
110
  selector: 'bq-accordion-group',
@@ -62,16 +115,54 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
62
115
  }]
63
116
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
64
117
  let BqAlert = class BqAlert {
65
- z;
66
- el;
118
+ /**
119
+ * If true, the alert will automatically hide after the specified amount of time
120
+ */
121
+ set autoDismiss(_) { }
122
+ ;
123
+ /**
124
+ * The corner radius of the alert component
125
+ */
126
+ set border(_) { }
127
+ ;
128
+ /**
129
+ * If true, the close button at the top right of the alert won't be shown
130
+ */
131
+ set disableClose(_) { }
132
+ ;
133
+ /**
134
+ * If true, the alert icon won't be shown
135
+ */
136
+ set hideIcon(_) { }
137
+ ;
138
+ /**
139
+ * If true, the alert will be shown
140
+ */
141
+ set open(_) { }
142
+ ;
143
+ /**
144
+ * The length of time, in milliseconds, after which the alert will close itself. Only valid if `autoDismiss="true"`
145
+ */
146
+ set time(_) { }
147
+ ;
148
+ /**
149
+ * Type of Alert
150
+ */
151
+ set type(_) { }
152
+ ;
153
+ /**
154
+ * If true, the alert component will remain fixed at the top of the page, occupying the full viewport
155
+ */
156
+ set sticky(_) { }
157
+ ;
67
158
  constructor(c, r, z) {
68
159
  this.z = z;
69
160
  c.detach();
70
161
  this.el = r.nativeElement;
71
162
  proxyOutputs(this, this.el, ['bqHide', 'bqShow', 'bqAfterShow', 'bqAfterHide']);
72
163
  }
73
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqAlert, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
74
- /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: BqAlert, selector: "bq-alert", inputs: { autoDismiss: "autoDismiss", border: "border", disableClose: "disableClose", hideIcon: "hideIcon", open: "open", sticky: "sticky", time: "time", type: "type" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
164
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqAlert, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
165
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BqAlert, selector: "bq-alert", inputs: { autoDismiss: "autoDismiss", border: "border", disableClose: "disableClose", hideIcon: "hideIcon", open: "open", sticky: "sticky", time: "time", type: "type" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
75
166
  };
76
167
  BqAlert = __decorate([
77
168
  ProxyCmp({
@@ -81,7 +172,7 @@ BqAlert = __decorate([
81
172
  __metadata("design:paramtypes", [ChangeDetectorRef, ElementRef, NgZone])
82
173
  ], BqAlert);
83
174
  export { BqAlert };
84
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqAlert, decorators: [{
175
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqAlert, decorators: [{
85
176
  type: Component,
86
177
  args: [{
87
178
  selector: 'bq-alert',
@@ -92,15 +183,43 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
92
183
  }]
93
184
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
94
185
  let BqAvatar = class BqAvatar {
95
- z;
96
- el;
186
+ /**
187
+ * Alternate text for the avatar image if the image cannot be displayed
188
+ */
189
+ set altText(_) { }
190
+ ;
191
+ /**
192
+ * The image source to load on the avatar (this can be also a base64 encoded image)
193
+ */
194
+ set image(_) { }
195
+ ;
196
+ /**
197
+ * A text to use for describing the avatar on assistive devices
198
+ */
199
+ set label(_) { }
200
+ ;
201
+ /**
202
+ * The text to display on avatar
203
+ */
204
+ set initials(_) { }
205
+ ;
206
+ /**
207
+ * The shape of the avatar
208
+ */
209
+ set shape(_) { }
210
+ ;
211
+ /**
212
+ * The size of the avatar
213
+ */
214
+ set size(_) { }
215
+ ;
97
216
  constructor(c, r, z) {
98
217
  this.z = z;
99
218
  c.detach();
100
219
  this.el = r.nativeElement;
101
220
  }
102
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqAvatar, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
103
- /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: BqAvatar, selector: "bq-avatar", inputs: { altText: "altText", image: "image", initials: "initials", label: "label", shape: "shape", size: "size" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
221
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqAvatar, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
222
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BqAvatar, selector: "bq-avatar", inputs: { altText: "altText", image: "image", initials: "initials", label: "label", shape: "shape", size: "size" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
104
223
  };
105
224
  BqAvatar = __decorate([
106
225
  ProxyCmp({
@@ -109,7 +228,7 @@ BqAvatar = __decorate([
109
228
  __metadata("design:paramtypes", [ChangeDetectorRef, ElementRef, NgZone])
110
229
  ], BqAvatar);
111
230
  export { BqAvatar };
112
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqAvatar, decorators: [{
231
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqAvatar, decorators: [{
113
232
  type: Component,
114
233
  args: [{
115
234
  selector: 'bq-avatar',
@@ -120,15 +239,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
120
239
  }]
121
240
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
122
241
  let BqBadge = class BqBadge {
123
- z;
124
- el;
242
+ /**
243
+ * Badge background color. The value should be a valid value of the palette color
244
+ */
245
+ set backgroundColor(_) { }
246
+ ;
247
+ /**
248
+ * Badge number color. The value should be a valid value of the palette color
249
+ */
250
+ set textColor(_) { }
251
+ ;
252
+ /**
253
+ * The size of the badge. Relevant if badge has no content.
254
+ */
255
+ set size(_) { }
256
+ ;
125
257
  constructor(c, r, z) {
126
258
  this.z = z;
127
259
  c.detach();
128
260
  this.el = r.nativeElement;
129
261
  }
130
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqBadge, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
131
- /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: BqBadge, selector: "bq-badge", inputs: { backgroundColor: "backgroundColor", size: "size", textColor: "textColor" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
262
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqBadge, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
263
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BqBadge, selector: "bq-badge", inputs: { backgroundColor: "backgroundColor", size: "size", textColor: "textColor" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
132
264
  };
133
265
  BqBadge = __decorate([
134
266
  ProxyCmp({
@@ -137,7 +269,7 @@ BqBadge = __decorate([
137
269
  __metadata("design:paramtypes", [ChangeDetectorRef, ElementRef, NgZone])
138
270
  ], BqBadge);
139
271
  export { BqBadge };
140
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqBadge, decorators: [{
272
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqBadge, decorators: [{
141
273
  type: Component,
142
274
  args: [{
143
275
  selector: 'bq-badge',
@@ -148,74 +280,149 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
148
280
  }]
149
281
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
150
282
  let BqBreadcrumb = class BqBreadcrumb {
151
- z;
152
- el;
283
+ /**
284
+ * The `aria-label` attribute to describe the type of navigation
285
+ */
286
+ set label(_) { }
287
+ ;
153
288
  constructor(c, r, z) {
154
289
  this.z = z;
155
290
  c.detach();
156
291
  this.el = r.nativeElement;
157
- proxyOutputs(this, this.el, ['bqBreadcrumbBlur', 'bqBreadcrumbFocus', 'bqBreadcrumbClick']);
158
292
  }
159
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqBreadcrumb, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
160
- /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: BqBreadcrumb, selector: "bq-breadcrumb", inputs: { ariaLabel: "ariaLabel" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
293
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqBreadcrumb, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
294
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BqBreadcrumb, selector: "bq-breadcrumb", inputs: { label: "label" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
161
295
  };
162
296
  BqBreadcrumb = __decorate([
163
297
  ProxyCmp({
164
- inputs: ['ariaLabel']
298
+ inputs: ['label']
165
299
  }),
166
300
  __metadata("design:paramtypes", [ChangeDetectorRef, ElementRef, NgZone])
167
301
  ], BqBreadcrumb);
168
302
  export { BqBreadcrumb };
169
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqBreadcrumb, decorators: [{
303
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqBreadcrumb, decorators: [{
170
304
  type: Component,
171
305
  args: [{
172
306
  selector: 'bq-breadcrumb',
173
307
  changeDetection: ChangeDetectionStrategy.OnPush,
174
308
  template: '<ng-content></ng-content>',
175
309
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
176
- inputs: ['ariaLabel'],
310
+ inputs: ['label'],
177
311
  }]
178
312
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
179
313
  let BqBreadcrumbItem = class BqBreadcrumbItem {
180
- z;
181
- el;
314
+ /**
315
+ * If set, the breadcrumb item will be rendered as an `<a>` with this `href`, otherwise, a `<button>` will be rendered.
316
+ */
317
+ set href(_) { }
318
+ ;
319
+ /**
320
+ * Where to display the link in the browser context. Relevant only if `href` is set.
321
+ */
322
+ set target(_) { }
323
+ ;
324
+ /**
325
+ * Where to display the link in the browser context. Relevant only if `href` is set.
326
+ */
327
+ set rel(_) { }
328
+ ;
182
329
  constructor(c, r, z) {
183
330
  this.z = z;
184
331
  c.detach();
185
332
  this.el = r.nativeElement;
186
333
  proxyOutputs(this, this.el, ['bqBlur', 'bqFocus', 'bqClick']);
187
334
  }
188
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqBreadcrumbItem, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
189
- /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: BqBreadcrumbItem, selector: "bq-breadcrumb-item", inputs: { ariaLabel: "ariaLabel", href: "href", isLastItem: "isLastItem", rel: "rel", target: "target" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
335
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqBreadcrumbItem, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
336
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BqBreadcrumbItem, selector: "bq-breadcrumb-item", inputs: { href: "href", rel: "rel", target: "target" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
190
337
  };
191
338
  BqBreadcrumbItem = __decorate([
192
339
  ProxyCmp({
193
- inputs: ['ariaLabel', 'href', 'isLastItem', 'rel', 'target']
340
+ inputs: ['href', 'rel', 'target']
194
341
  }),
195
342
  __metadata("design:paramtypes", [ChangeDetectorRef, ElementRef, NgZone])
196
343
  ], BqBreadcrumbItem);
197
344
  export { BqBreadcrumbItem };
198
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqBreadcrumbItem, decorators: [{
345
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqBreadcrumbItem, decorators: [{
199
346
  type: Component,
200
347
  args: [{
201
348
  selector: 'bq-breadcrumb-item',
202
349
  changeDetection: ChangeDetectionStrategy.OnPush,
203
350
  template: '<ng-content></ng-content>',
204
351
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
205
- inputs: ['ariaLabel', 'href', 'isLastItem', 'rel', 'target'],
352
+ inputs: ['href', 'rel', 'target'],
206
353
  }]
207
354
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
208
355
  let BqButton = class BqButton {
209
- z;
210
- el;
356
+ /**
357
+ * The appearance style to apply to the button
358
+ */
359
+ set appearance(_) { }
360
+ ;
361
+ /**
362
+ * If `true`, it will make the button fit to its parent width.
363
+ */
364
+ set block(_) { }
365
+ ;
366
+ /**
367
+ * The corner radius of the button
368
+ */
369
+ set border(_) { }
370
+ ;
371
+ /**
372
+ * If true, the button will be disabled (no interaction allowed)
373
+ */
374
+ set disabled(_) { }
375
+ ;
376
+ /**
377
+ * Tells the browser to treat the linked URL as a download. Only used when `href` is set.
378
+ Details: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#attr-download
379
+ */
380
+ set download(_) { }
381
+ ;
382
+ /**
383
+ * When set, the underlying button will be rendered as an `<a>` with this `href` instead of a `<button>`
384
+ */
385
+ set href(_) { }
386
+ ;
387
+ /**
388
+ * It determinate how the content should be aligned
389
+ */
390
+ set justifyContent(_) { }
391
+ ;
392
+ /**
393
+ * If `true` it will display the button in a loading state
394
+ */
395
+ set loading(_) { }
396
+ ;
397
+ /**
398
+ * The size of the button
399
+ */
400
+ set size(_) { }
401
+ ;
402
+ /**
403
+ * Where to display the linked URL, as the name for a browsing context (a `tab`, `window`, or `<iframe>`)
404
+ Details: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#attr-target
405
+ */
406
+ set target(_) { }
407
+ ;
408
+ /**
409
+ * The default behavior of the button
410
+ */
411
+ set type(_) { }
412
+ ;
413
+ /**
414
+ * The variant of button to apply on top of the appearance (applicable only to `appearance="primary"`)
415
+ */
416
+ set variant(_) { }
417
+ ;
211
418
  constructor(c, r, z) {
212
419
  this.z = z;
213
420
  c.detach();
214
421
  this.el = r.nativeElement;
215
422
  proxyOutputs(this, this.el, ['bqBlur', 'bqFocus', 'bqClick']);
216
423
  }
217
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqButton, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
218
- /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: BqButton, selector: "bq-button", inputs: { appearance: "appearance", block: "block", border: "border", disabled: "disabled", download: "download", href: "href", justifyContent: "justifyContent", loading: "loading", size: "size", target: "target", type: "type", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
424
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqButton, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
425
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BqButton, selector: "bq-button", inputs: { appearance: "appearance", block: "block", border: "border", disabled: "disabled", download: "download", href: "href", justifyContent: "justifyContent", loading: "loading", size: "size", target: "target", type: "type", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
219
426
  };
220
427
  BqButton = __decorate([
221
428
  ProxyCmp({
@@ -224,7 +431,7 @@ BqButton = __decorate([
224
431
  __metadata("design:paramtypes", [ChangeDetectorRef, ElementRef, NgZone])
225
432
  ], BqButton);
226
433
  export { BqButton };
227
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqButton, decorators: [{
434
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqButton, decorators: [{
228
435
  type: Component,
229
436
  args: [{
230
437
  selector: 'bq-button',
@@ -235,15 +442,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
235
442
  }]
236
443
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
237
444
  let BqCard = class BqCard {
238
- z;
239
- el;
445
+ /**
446
+ * Type of card component
447
+ */
448
+ set type(_) { }
449
+ ;
450
+ /**
451
+ * The corner radius of the card component
452
+ */
453
+ set border(_) { }
454
+ ;
240
455
  constructor(c, r, z) {
241
456
  this.z = z;
242
457
  c.detach();
243
458
  this.el = r.nativeElement;
244
459
  }
245
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqCard, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
246
- /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: BqCard, selector: "bq-card", inputs: { border: "border", type: "type" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
460
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqCard, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
461
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BqCard, selector: "bq-card", inputs: { border: "border", type: "type" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
247
462
  };
248
463
  BqCard = __decorate([
249
464
  ProxyCmp({
@@ -252,7 +467,7 @@ BqCard = __decorate([
252
467
  __metadata("design:paramtypes", [ChangeDetectorRef, ElementRef, NgZone])
253
468
  ], BqCard);
254
469
  export { BqCard };
255
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqCard, decorators: [{
470
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqCard, decorators: [{
256
471
  type: Component,
257
472
  args: [{
258
473
  selector: 'bq-card',
@@ -263,16 +478,59 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
263
478
  }]
264
479
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
265
480
  let BqCheckbox = class BqCheckbox {
266
- z;
267
- el;
481
+ /**
482
+ * If true checkbox displays background on hover
483
+ */
484
+ set backgroundOnHover(_) { }
485
+ ;
486
+ /**
487
+ * The form ID that the checkbox is associated with
488
+ */
489
+ set formId(_) { }
490
+ ;
491
+ /**
492
+ * The native form validation message
493
+ */
494
+ set formValidationMessage(_) { }
495
+ ;
496
+ /**
497
+ * If true checkbox is checked
498
+ */
499
+ set checked(_) { }
500
+ ;
501
+ /**
502
+ * If true checkbox is disabled
503
+ */
504
+ set disabled(_) { }
505
+ ;
506
+ /**
507
+ * A state that is neither checked nor unchecked
508
+ */
509
+ set indeterminate(_) { }
510
+ ;
511
+ /**
512
+ * Name of the HTML input form control. Submitted with the form as part of a name/value pair.
513
+ */
514
+ set name(_) { }
515
+ ;
516
+ /**
517
+ * If `true`, it will indicate that the user must specify a value for the checkbox before the owning form can be submitted
518
+ */
519
+ set required(_) { }
520
+ ;
521
+ /**
522
+ * A string representing the value of the checkbox. Primarily used to differentiate a list of related checkboxes that have the same name.
523
+ */
524
+ set value(_) { }
525
+ ;
268
526
  constructor(c, r, z) {
269
527
  this.z = z;
270
528
  c.detach();
271
529
  this.el = r.nativeElement;
272
530
  proxyOutputs(this, this.el, ['bqChange', 'bqFocus', 'bqBlur']);
273
531
  }
274
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqCheckbox, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
275
- /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: BqCheckbox, selector: "bq-checkbox", inputs: { backgroundOnHover: "backgroundOnHover", checked: "checked", disabled: "disabled", formId: "formId", formValidationMessage: "formValidationMessage", indeterminate: "indeterminate", name: "name", required: "required", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
532
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqCheckbox, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
533
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BqCheckbox, selector: "bq-checkbox", inputs: { backgroundOnHover: "backgroundOnHover", checked: "checked", disabled: "disabled", formId: "formId", formValidationMessage: "formValidationMessage", indeterminate: "indeterminate", name: "name", required: "required", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
276
534
  };
277
535
  BqCheckbox = __decorate([
278
536
  ProxyCmp({
@@ -282,7 +540,7 @@ BqCheckbox = __decorate([
282
540
  __metadata("design:paramtypes", [ChangeDetectorRef, ElementRef, NgZone])
283
541
  ], BqCheckbox);
284
542
  export { BqCheckbox };
285
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqCheckbox, decorators: [{
543
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqCheckbox, decorators: [{
286
544
  type: Component,
287
545
  args: [{
288
546
  selector: 'bq-checkbox',
@@ -293,16 +551,159 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
293
551
  }]
294
552
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
295
553
  let BqDatePicker = class BqDatePicker {
296
- z;
297
- el;
554
+ /**
555
+ * If `true`, the Date picker input will be focused on component render
556
+ */
557
+ set autofocus(_) { }
558
+ ;
559
+ /**
560
+ * The clear button aria label
561
+ */
562
+ set clearButtonLabel(_) { }
563
+ ;
564
+ /**
565
+ * If `true`, the clear button won't be displayed
566
+ */
567
+ set disableClear(_) { }
568
+ ;
569
+ /**
570
+ * Indicates whether the Date picker input is disabled or not.
571
+ If `true`, the Date picker is disabled and cannot be interacted with.
572
+ */
573
+ set disabled(_) { }
574
+ ;
575
+ /**
576
+ * Represents the distance (gutter or margin) between the Date picker panel and the input element.
577
+ */
578
+ set distance(_) { }
579
+ ;
580
+ /**
581
+ * The first day of the week, where Sunday is 0, Monday is 1, etc
582
+ */
583
+ set firstDayOfWeek(_) { }
584
+ ;
585
+ /**
586
+ * The options to use when formatting the displayed value.
587
+ Details: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat#using_options
588
+ */
589
+ set formatOptions(_) { }
590
+ ;
591
+ /**
592
+ * The ID of the form that the Date picker input belongs to.
593
+ */
594
+ set form(_) { }
595
+ ;
596
+ /**
597
+ * A function that takes a date and returns true if the date should not be selectable
598
+ */
599
+ set isDateDisallowed(_) { }
600
+ ;
601
+ /**
602
+ * The locale for formatting dates. If not set, will use the browser's locale.
603
+ Details: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl#locales_argument
604
+ */
605
+ set locale(_) { }
606
+ ;
607
+ /**
608
+ * The latest date that can be selected
609
+ */
610
+ set max(_) { }
611
+ ;
612
+ /**
613
+ * The earliest date that can be selected
614
+ */
615
+ set min(_) { }
616
+ ;
617
+ /**
618
+ * Number of months to show when range is `true`
619
+ */
620
+ set months(_) { }
621
+ ;
622
+ /**
623
+ * Specifies how the next/previous buttons should navigate the calendar.
624
+ - single: The buttons will navigate by a single month at a time.
625
+ - months: The buttons will navigate by the number of months displayed per view.
626
+ */
627
+ set monthsPerView(_) { }
628
+ ;
629
+ /**
630
+ * The Date picker input name.
631
+ */
632
+ set name(_) { }
633
+ ;
634
+ /**
635
+ * If `true`, the Date picker panel will be visible.
636
+ */
637
+ set open(_) { }
638
+ ;
639
+ /**
640
+ * When set, it will override the height of the Date picker panel.
641
+ */
642
+ set panelHeight(_) { }
643
+ ;
644
+ /**
645
+ * The Date picker input placeholder text value
646
+ */
647
+ set placeholder(_) { }
648
+ ;
649
+ /**
650
+ * Position of the Date picker panel
651
+ */
652
+ set placement(_) { }
653
+ ;
654
+ /**
655
+ * Indicates whether or not the Date picker input is required to be filled out before submitting the form.
656
+ */
657
+ set required(_) { }
658
+ ;
659
+ /**
660
+ * Represents the skidding between the Date picker panel and the input element.
661
+ */
662
+ set skidding(_) { }
663
+ ;
664
+ /**
665
+ * Whether to show days outside the month
666
+ */
667
+ set showOutsideDays(_) { }
668
+ ;
669
+ /**
670
+ * Defines the strategy to position the Date picker panel
671
+ */
672
+ set strategy(_) { }
673
+ ;
674
+ /**
675
+ * The date that is tentatively selected e.g. the start of a range selection
676
+ */
677
+ set tentative(_) { }
678
+ ;
679
+ /**
680
+ * It defines how the calendar will behave, allowing single date selection, range selection, or multiple date selection
681
+ */
682
+ set type(_) { }
683
+ ;
684
+ /**
685
+ * The validation status of the Select input. @remarks This property is used to indicate the validation status of the select input. It can be set to one of the following values:
686
+ - `'none'`: No validation status is set.
687
+ - `'error'`: The input has a validation error.
688
+ - `'warning'`: The input has a validation warning.
689
+ - `'success'`: The input has passed validation.
690
+ */
691
+ set validationStatus(_) { }
692
+ ;
693
+ /**
694
+ * The select input value represents the currently selected date or range and can be used to reset the field to a previous value.
695
+ All dates are expected in ISO-8601 format (YYYY-MM-DD).
696
+ */
697
+ set value(_) { }
698
+ ;
298
699
  constructor(c, r, z) {
299
700
  this.z = z;
300
701
  c.detach();
301
702
  this.el = r.nativeElement;
302
703
  proxyOutputs(this, this.el, ['bqBlur', 'bqChange', 'bqClear', 'bqFocus']);
303
704
  }
304
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqDatePicker, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
305
- /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: BqDatePicker, selector: "bq-date-picker", inputs: { autofocus: "autofocus", clearButtonLabel: "clearButtonLabel", disableClear: "disableClear", disabled: "disabled", distance: "distance", firstDayOfWeek: "firstDayOfWeek", form: "form", formatOptions: "formatOptions", isDateDisallowed: "isDateDisallowed", locale: "locale", max: "max", min: "min", months: "months", monthsPerView: "monthsPerView", name: "name", open: "open", panelHeight: "panelHeight", placeholder: "placeholder", placement: "placement", required: "required", showOutsideDays: "showOutsideDays", skidding: "skidding", strategy: "strategy", tentative: "tentative", type: "type", validationStatus: "validationStatus", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
705
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqDatePicker, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
706
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BqDatePicker, selector: "bq-date-picker", inputs: { autofocus: "autofocus", clearButtonLabel: "clearButtonLabel", disableClear: "disableClear", disabled: "disabled", distance: "distance", firstDayOfWeek: "firstDayOfWeek", form: "form", formatOptions: "formatOptions", isDateDisallowed: "isDateDisallowed", locale: "locale", max: "max", min: "min", months: "months", monthsPerView: "monthsPerView", name: "name", open: "open", panelHeight: "panelHeight", placeholder: "placeholder", placement: "placement", required: "required", showOutsideDays: "showOutsideDays", skidding: "skidding", strategy: "strategy", tentative: "tentative", type: "type", validationStatus: "validationStatus", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
306
707
  };
307
708
  BqDatePicker = __decorate([
308
709
  ProxyCmp({
@@ -312,7 +713,7 @@ BqDatePicker = __decorate([
312
713
  __metadata("design:paramtypes", [ChangeDetectorRef, ElementRef, NgZone])
313
714
  ], BqDatePicker);
314
715
  export { BqDatePicker };
315
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqDatePicker, decorators: [{
716
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqDatePicker, decorators: [{
316
717
  type: Component,
317
718
  args: [{
318
719
  selector: 'bq-date-picker',
@@ -323,16 +724,54 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
323
724
  }]
324
725
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
325
726
  let BqDialog = class BqDialog {
326
- z;
327
- el;
727
+ /**
728
+ * Border radius of the dialog component
729
+ */
730
+ set border(_) { }
731
+ ;
732
+ /**
733
+ * If true, the backdrop overlay won't be shown when the dialog opens
734
+ */
735
+ set disableBackdrop(_) { }
736
+ ;
737
+ /**
738
+ * If true, the dialog will not close when the [Esc] key is press
739
+ */
740
+ set disableCloseEscKeydown(_) { }
741
+ ;
742
+ /**
743
+ * If true, the dialog will not close when clicking on the backdrop overlay
744
+ */
745
+ set disableCloseClickOutside(_) { }
746
+ ;
747
+ /**
748
+ * The appearance of footer
749
+ */
750
+ set footerAppearance(_) { }
751
+ ;
752
+ /**
753
+ * If true, it hides the close button
754
+ */
755
+ set hideCloseButton(_) { }
756
+ ;
757
+ /**
758
+ * If true, the dialog will be shown as open
759
+ */
760
+ set open(_) { }
761
+ ;
762
+ /**
763
+ * The size of the dialog
764
+ */
765
+ set size(_) { }
766
+ ;
328
767
  constructor(c, r, z) {
329
768
  this.z = z;
330
769
  c.detach();
331
770
  this.el = r.nativeElement;
332
771
  proxyOutputs(this, this.el, ['bqCancel', 'bqClose', 'bqOpen', 'bqAfterOpen', 'bqAfterClose']);
333
772
  }
334
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqDialog, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
335
- /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: BqDialog, selector: "bq-dialog", inputs: { border: "border", disableBackdrop: "disableBackdrop", disableCloseClickOutside: "disableCloseClickOutside", disableCloseEscKeydown: "disableCloseEscKeydown", footerAppearance: "footerAppearance", hideCloseButton: "hideCloseButton", open: "open", size: "size" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
773
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqDialog, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
774
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BqDialog, selector: "bq-dialog", inputs: { border: "border", disableBackdrop: "disableBackdrop", disableCloseClickOutside: "disableCloseClickOutside", disableCloseEscKeydown: "disableCloseEscKeydown", footerAppearance: "footerAppearance", hideCloseButton: "hideCloseButton", open: "open", size: "size" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
336
775
  };
337
776
  BqDialog = __decorate([
338
777
  ProxyCmp({
@@ -342,7 +781,7 @@ BqDialog = __decorate([
342
781
  __metadata("design:paramtypes", [ChangeDetectorRef, ElementRef, NgZone])
343
782
  ], BqDialog);
344
783
  export { BqDialog };
345
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqDialog, decorators: [{
784
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqDialog, decorators: [{
346
785
  type: Component,
347
786
  args: [{
348
787
  selector: 'bq-dialog',
@@ -353,15 +792,58 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
353
792
  }]
354
793
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
355
794
  let BqDivider = class BqDivider {
356
- z;
357
- el;
795
+ /**
796
+ * If true, the divider has a dashed pattern
797
+ */
798
+ set dashed(_) { }
799
+ ;
800
+ /**
801
+ * The default orientation of the divider
802
+ */
803
+ set orientation(_) { }
804
+ ;
805
+ /**
806
+ * Set the stroke color of the divider. The value should be a valid value of the palette color
807
+ */
808
+ set strokeColor(_) { }
809
+ ;
810
+ /**
811
+ * Set the alignment of the title on the main axis of the divider (horizontal / vertical)
812
+ */
813
+ set titleAlignment(_) { }
814
+ ;
815
+ /**
816
+ * Set the width of each dash of the divider's stroke. This is applicable when the stroke is dashed
817
+ */
818
+ set strokeDashWidth(_) { }
819
+ ;
820
+ /**
821
+ * Set the gap of the divider's stroke. This is applicable when the stroke is dashed
822
+ */
823
+ set strokeDashGap(_) { }
824
+ ;
825
+ /**
826
+ * Set the thickness of the divider's stroke. Value expressed in px
827
+ */
828
+ set strokeThickness(_) { }
829
+ ;
830
+ /**
831
+ * Set the min width of the divider's stroke when text is not centered. Value expressed in px
832
+ */
833
+ set strokeBasis(_) { }
834
+ ;
835
+ /**
836
+ * Set the line of the divider's stroke. This is applicable when the stroke is dashed
837
+ */
838
+ set strokeLinecap(_) { }
839
+ ;
358
840
  constructor(c, r, z) {
359
841
  this.z = z;
360
842
  c.detach();
361
843
  this.el = r.nativeElement;
362
844
  }
363
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqDivider, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
364
- /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: BqDivider, selector: "bq-divider", inputs: { dashed: "dashed", orientation: "orientation", strokeBasis: "strokeBasis", strokeColor: "strokeColor", strokeDashGap: "strokeDashGap", strokeDashWidth: "strokeDashWidth", strokeLinecap: "strokeLinecap", strokeThickness: "strokeThickness", titleAlignment: "titleAlignment" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
845
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqDivider, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
846
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BqDivider, selector: "bq-divider", inputs: { dashed: "dashed", orientation: "orientation", strokeBasis: "strokeBasis", strokeColor: "strokeColor", strokeDashGap: "strokeDashGap", strokeDashWidth: "strokeDashWidth", strokeLinecap: "strokeLinecap", strokeThickness: "strokeThickness", titleAlignment: "titleAlignment" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
365
847
  };
366
848
  BqDivider = __decorate([
367
849
  ProxyCmp({
@@ -370,7 +852,7 @@ BqDivider = __decorate([
370
852
  __metadata("design:paramtypes", [ChangeDetectorRef, ElementRef, NgZone])
371
853
  ], BqDivider);
372
854
  export { BqDivider };
373
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqDivider, decorators: [{
855
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqDivider, decorators: [{
374
856
  type: Component,
375
857
  args: [{
376
858
  selector: 'bq-divider',
@@ -381,16 +863,44 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
381
863
  }]
382
864
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
383
865
  let BqDrawer = class BqDrawer {
384
- z;
385
- el;
866
+ /**
867
+ * If true, the backdrop overlay will be shown when the drawer opens
868
+ */
869
+ set enableBackdrop(_) { }
870
+ ;
871
+ /**
872
+ * If true, the drawer will not close when clicking outside the panel
873
+ */
874
+ set closeOnClickOutside(_) { }
875
+ ;
876
+ /**
877
+ * If true, the dialog will not close when the [Esc] key is pressed
878
+ */
879
+ set closeOnEsc(_) { }
880
+ ;
881
+ /**
882
+ * If true, the drawer component will be shown
883
+ */
884
+ set open(_) { }
885
+ ;
886
+ /**
887
+ * @deprecated Defines the position of the drawer
888
+ */
889
+ set placement(_) { }
890
+ ;
891
+ /**
892
+ * Defines the position of the drawer
893
+ */
894
+ set position(_) { }
895
+ ;
386
896
  constructor(c, r, z) {
387
897
  this.z = z;
388
898
  c.detach();
389
899
  this.el = r.nativeElement;
390
900
  proxyOutputs(this, this.el, ['bqClose', 'bqOpen', 'bqAfterOpen', 'bqAfterClose']);
391
901
  }
392
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqDrawer, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
393
- /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: BqDrawer, selector: "bq-drawer", inputs: { closeOnClickOutside: "closeOnClickOutside", closeOnEsc: "closeOnEsc", enableBackdrop: "enableBackdrop", open: "open", placement: "placement", position: "position" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
902
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqDrawer, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
903
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BqDrawer, selector: "bq-drawer", inputs: { closeOnClickOutside: "closeOnClickOutside", closeOnEsc: "closeOnEsc", enableBackdrop: "enableBackdrop", open: "open", placement: "placement", position: "position" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
394
904
  };
395
905
  BqDrawer = __decorate([
396
906
  ProxyCmp({
@@ -400,7 +910,7 @@ BqDrawer = __decorate([
400
910
  __metadata("design:paramtypes", [ChangeDetectorRef, ElementRef, NgZone])
401
911
  ], BqDrawer);
402
912
  export { BqDrawer };
403
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqDrawer, decorators: [{
913
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqDrawer, decorators: [{
404
914
  type: Component,
405
915
  args: [{
406
916
  selector: 'bq-drawer',
@@ -411,16 +921,59 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
411
921
  }]
412
922
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
413
923
  let BqDropdown = class BqDropdown {
414
- z;
415
- el;
924
+ /**
925
+ * If true, the dropdown panel will be visible and won't be shown.
926
+ */
927
+ set disabled(_) { }
928
+ ;
929
+ /**
930
+ * Represents the distance (gutter or margin) between the panel and the trigger element.
931
+ */
932
+ set distance(_) { }
933
+ ;
934
+ /**
935
+ * If true, the panel will remain open after a selection is made.
936
+ */
937
+ set keepOpenOnSelect(_) { }
938
+ ;
939
+ /**
940
+ * Position of the panel
941
+ */
942
+ set placement(_) { }
943
+ ;
944
+ /**
945
+ * If true, the panel will be visible.
946
+ */
947
+ set open(_) { }
948
+ ;
949
+ /**
950
+ * When set, it will override the height of the dropdown panel
951
+ */
952
+ set panelHeight(_) { }
953
+ ;
954
+ /**
955
+ * Whether the panel should have the same width as the trigger element
956
+ */
957
+ set sameWidth(_) { }
958
+ ;
959
+ /**
960
+ * Represents the skidding between the panel and the trigger element.
961
+ */
962
+ set skidding(_) { }
963
+ ;
964
+ /**
965
+ * Defines the strategy to position the panel
966
+ */
967
+ set strategy(_) { }
968
+ ;
416
969
  constructor(c, r, z) {
417
970
  this.z = z;
418
971
  c.detach();
419
972
  this.el = r.nativeElement;
420
973
  proxyOutputs(this, this.el, ['bqOpen']);
421
974
  }
422
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqDropdown, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
423
- /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: BqDropdown, selector: "bq-dropdown", inputs: { disabled: "disabled", distance: "distance", keepOpenOnSelect: "keepOpenOnSelect", open: "open", panelHeight: "panelHeight", placement: "placement", sameWidth: "sameWidth", skidding: "skidding", strategy: "strategy" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
975
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqDropdown, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
976
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BqDropdown, selector: "bq-dropdown", inputs: { disabled: "disabled", distance: "distance", keepOpenOnSelect: "keepOpenOnSelect", open: "open", panelHeight: "panelHeight", placement: "placement", sameWidth: "sameWidth", skidding: "skidding", strategy: "strategy" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
424
977
  };
425
978
  BqDropdown = __decorate([
426
979
  ProxyCmp({
@@ -429,7 +982,7 @@ BqDropdown = __decorate([
429
982
  __metadata("design:paramtypes", [ChangeDetectorRef, ElementRef, NgZone])
430
983
  ], BqDropdown);
431
984
  export { BqDropdown };
432
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqDropdown, decorators: [{
985
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqDropdown, decorators: [{
433
986
  type: Component,
434
987
  args: [{
435
988
  selector: 'bq-dropdown',
@@ -440,15 +993,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
440
993
  }]
441
994
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
442
995
  let BqEmptyState = class BqEmptyState {
443
- z;
444
- el;
996
+ /**
997
+ * The size of the empty state component
998
+ */
999
+ set size(_) { }
1000
+ ;
445
1001
  constructor(c, r, z) {
446
1002
  this.z = z;
447
1003
  c.detach();
448
1004
  this.el = r.nativeElement;
449
1005
  }
450
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqEmptyState, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
451
- /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: BqEmptyState, selector: "bq-empty-state", inputs: { size: "size" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1006
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqEmptyState, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1007
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BqEmptyState, selector: "bq-empty-state", inputs: { size: "size" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
452
1008
  };
453
1009
  BqEmptyState = __decorate([
454
1010
  ProxyCmp({
@@ -457,7 +1013,7 @@ BqEmptyState = __decorate([
457
1013
  __metadata("design:paramtypes", [ChangeDetectorRef, ElementRef, NgZone])
458
1014
  ], BqEmptyState);
459
1015
  export { BqEmptyState };
460
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqEmptyState, decorators: [{
1016
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqEmptyState, decorators: [{
461
1017
  type: Component,
462
1018
  args: [{
463
1019
  selector: 'bq-empty-state',
@@ -468,16 +1024,44 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
468
1024
  }]
469
1025
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
470
1026
  let BqIcon = class BqIcon {
471
- z;
472
- el;
1027
+ /**
1028
+ * Label for the icon, used for accessibility
1029
+ */
1030
+ set label(_) { }
1031
+ ;
1032
+ /**
1033
+ * Set the stroke color of the SVG. The value should be a valid value of the palette color
1034
+ */
1035
+ set color(_) { }
1036
+ ;
1037
+ /**
1038
+ * Icon name to load. Please check all available icons [here](https://phosphoricons.com/)
1039
+ */
1040
+ set name(_) { }
1041
+ ;
1042
+ /**
1043
+ * Set the size of the SVG
1044
+ */
1045
+ set size(_) { }
1046
+ ;
1047
+ /**
1048
+ * Set the source of the SVG. If the source is set, the name property will be ignored
1049
+ */
1050
+ set src(_) { }
1051
+ ;
1052
+ /**
1053
+ * @deprecated It set the icon weight/style
1054
+ */
1055
+ set weight(_) { }
1056
+ ;
473
1057
  constructor(c, r, z) {
474
1058
  this.z = z;
475
1059
  c.detach();
476
1060
  this.el = r.nativeElement;
477
1061
  proxyOutputs(this, this.el, ['svgLoaded']);
478
1062
  }
479
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqIcon, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
480
- /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: BqIcon, selector: "bq-icon", inputs: { color: "color", label: "label", name: "name", size: "size", src: "src", weight: "weight" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1063
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqIcon, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1064
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BqIcon, selector: "bq-icon", inputs: { color: "color", label: "label", name: "name", size: "size", src: "src", weight: "weight" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
481
1065
  };
482
1066
  BqIcon = __decorate([
483
1067
  ProxyCmp({
@@ -486,7 +1070,7 @@ BqIcon = __decorate([
486
1070
  __metadata("design:paramtypes", [ChangeDetectorRef, ElementRef, NgZone])
487
1071
  ], BqIcon);
488
1072
  export { BqIcon };
489
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqIcon, decorators: [{
1073
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqIcon, decorators: [{
490
1074
  type: Component,
491
1075
  args: [{
492
1076
  selector: 'bq-icon',
@@ -497,45 +1081,215 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
497
1081
  }]
498
1082
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
499
1083
  let BqInput = class BqInput {
500
- z;
501
- el;
1084
+ /**
1085
+ * Controls whether or not the input field should be capitalized and how.
1086
+ Possible values are 'off', 'none', 'on', 'sentences', 'words', and 'characters'.
1087
+ See: https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/autocapitalize
1088
+ */
1089
+ set autocapitalize(_) { }
1090
+ ;
1091
+ /**
1092
+ * Specifies whether or not the input field should have autocomplete enabled.
1093
+ See: https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete#values
1094
+ */
1095
+ set autocomplete(_) { }
1096
+ ;
1097
+ /**
1098
+ * Controls whether or not the input field should have autocorrect enabled.
1099
+ Possible values are 'on' and 'off'.
1100
+ */
1101
+ set autocorrect(_) { }
1102
+ ;
1103
+ /**
1104
+ * If true, the input will be focused on component render
1105
+ */
1106
+ set autofocus(_) { }
1107
+ ;
1108
+ /**
1109
+ * The clear button aria label
1110
+ */
1111
+ set clearButtonLabel(_) { }
1112
+ ;
1113
+ /**
1114
+ * The amount of time, in milliseconds, to wait before emitting the `bqInput` event after the input value changes.
1115
+ A value of 0 means no debouncing will occur.
1116
+ */
1117
+ set debounceTime(_) { }
1118
+ ;
1119
+ /**
1120
+ * Indicates whether the input is disabled or not.
1121
+ If `true`, the input is disabled and cannot be interacted with.
1122
+ */
1123
+ set disabled(_) { }
1124
+ ;
1125
+ /**
1126
+ * If true, the clear button won't be displayed
1127
+ */
1128
+ set disableClear(_) { }
1129
+ ;
1130
+ /**
1131
+ * The ID of the form that the input field belongs to.
1132
+ */
1133
+ set form(_) { }
1134
+ ;
1135
+ /**
1136
+ * The native form validation message (mandatory if `required` is set)
1137
+ */
1138
+ set formValidationMessage(_) { }
1139
+ ;
1140
+ /**
1141
+ * The inputmode attribute specifies what kind of input mechanism would be most helpful for users entering content into the input field.
1142
+ This allows a browser to display an appropriate virtual keyboard while editing.
1143
+ Possible values are 'none', 'text', 'decimal', 'numeric', 'tel', 'search', 'email', 'url', and 'date'.
1144
+ */
1145
+ set inputmode(_) { }
1146
+ ;
1147
+ /**
1148
+ * The maximum value that the input field can accept.
1149
+ Only applies to date and number input types.
1150
+ */
1151
+ set max(_) { }
1152
+ ;
1153
+ /**
1154
+ * The maximum number of characters that the input field can accept.
1155
+ */
1156
+ set maxlength(_) { }
1157
+ ;
1158
+ /**
1159
+ * The minimum value that the input field can accept.
1160
+ Only applies to date and number input types.
1161
+ */
1162
+ set min(_) { }
1163
+ ;
1164
+ /**
1165
+ * The minimum number of characters that the input field can accept.
1166
+ */
1167
+ set minlength(_) { }
1168
+ ;
1169
+ /**
1170
+ * The input field name.
1171
+ */
1172
+ set name(_) { }
1173
+ ;
1174
+ /**
1175
+ * Specifies a regular expression the form control's value should match.
1176
+ See: https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern
1177
+ */
1178
+ set pattern(_) { }
1179
+ ;
1180
+ /**
1181
+ * The input placeholder text value
1182
+ */
1183
+ set placeholder(_) { }
1184
+ ;
1185
+ /**
1186
+ * If true, the input field cannot be modified.
1187
+ */
1188
+ set readonly(_) { }
1189
+ ;
1190
+ /**
1191
+ * Indicates whether or not the input field is required to be filled out before submitting the form.
1192
+ */
1193
+ set required(_) { }
1194
+ ;
1195
+ /**
1196
+ * A number that specifies the granularity that the value must adhere to.
1197
+ Valid for date, month, week, time, datetime-local, number, and range.
1198
+ See: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#step
1199
+ */
1200
+ set step(_) { }
1201
+ ;
1202
+ /**
1203
+ * The type attribute specifies the type of input field to display.
1204
+ Possible values are 'text', 'password', 'email', 'number', 'tel', 'search', 'url', and more.
1205
+ See: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#input_types
1206
+ */
1207
+ set type(_) { }
1208
+ ;
1209
+ /**
1210
+ * The validation status of the input. @remarks This property is used to indicate the validation status of the input. It can be set to one of the following values:
1211
+ - `'none'`: No validation status is set.
1212
+ - `'error'`: The input has a validation error.
1213
+ - `'warning'`: The input has a validation warning.
1214
+ - `'success'`: The input has passed validation.
1215
+ */
1216
+ set validationStatus(_) { }
1217
+ ;
1218
+ /**
1219
+ * The input value, it can be used to reset the input to a previous value
1220
+ */
1221
+ set value(_) { }
1222
+ ;
502
1223
  constructor(c, r, z) {
503
1224
  this.z = z;
504
1225
  c.detach();
505
1226
  this.el = r.nativeElement;
506
1227
  proxyOutputs(this, this.el, ['bqBlur', 'bqChange', 'bqClear', 'bqFocus', 'bqInput']);
507
1228
  }
508
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqInput, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
509
- /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: BqInput, selector: "bq-input", inputs: { autocapitalize: "autocapitalize", autocomplete: "autocomplete", autocorrect: "autocorrect", autofocus: "autofocus", clearButtonLabel: "clearButtonLabel", debounceTime: "debounceTime", disableClear: "disableClear", disabled: "disabled", form: "form", inputmode: "inputmode", max: "max", maxlength: "maxlength", min: "min", minlength: "minlength", name: "name", pattern: "pattern", placeholder: "placeholder", readonly: "readonly", required: "required", step: "step", type: "type", validationStatus: "validationStatus", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1229
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqInput, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1230
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BqInput, selector: "bq-input", inputs: { autocapitalize: "autocapitalize", autocomplete: "autocomplete", autocorrect: "autocorrect", autofocus: "autofocus", clearButtonLabel: "clearButtonLabel", debounceTime: "debounceTime", disableClear: "disableClear", disabled: "disabled", form: "form", formValidationMessage: "formValidationMessage", inputmode: "inputmode", max: "max", maxlength: "maxlength", min: "min", minlength: "minlength", name: "name", pattern: "pattern", placeholder: "placeholder", readonly: "readonly", required: "required", step: "step", type: "type", validationStatus: "validationStatus", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
510
1231
  };
511
1232
  BqInput = __decorate([
512
1233
  ProxyCmp({
513
- inputs: ['autocapitalize', 'autocomplete', 'autocorrect', 'autofocus', 'clearButtonLabel', 'debounceTime', 'disableClear', 'disabled', 'form', 'inputmode', 'max', 'maxlength', 'min', 'minlength', 'name', 'pattern', 'placeholder', 'readonly', 'required', 'step', 'type', 'validationStatus', 'value']
1234
+ inputs: ['autocapitalize', 'autocomplete', 'autocorrect', 'autofocus', 'clearButtonLabel', 'debounceTime', 'disableClear', 'disabled', 'form', 'formValidationMessage', 'inputmode', 'max', 'maxlength', 'min', 'minlength', 'name', 'pattern', 'placeholder', 'readonly', 'required', 'step', 'type', 'validationStatus', 'value']
514
1235
  }),
515
1236
  __metadata("design:paramtypes", [ChangeDetectorRef, ElementRef, NgZone])
516
1237
  ], BqInput);
517
1238
  export { BqInput };
518
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqInput, decorators: [{
1239
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqInput, decorators: [{
519
1240
  type: Component,
520
1241
  args: [{
521
1242
  selector: 'bq-input',
522
1243
  changeDetection: ChangeDetectionStrategy.OnPush,
523
1244
  template: '<ng-content></ng-content>',
524
1245
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
525
- inputs: ['autocapitalize', 'autocomplete', 'autocorrect', 'autofocus', 'clearButtonLabel', 'debounceTime', 'disableClear', 'disabled', 'form', 'inputmode', 'max', 'maxlength', 'min', 'minlength', 'name', 'pattern', 'placeholder', 'readonly', 'required', 'step', 'type', 'validationStatus', 'value'],
1246
+ inputs: ['autocapitalize', 'autocomplete', 'autocorrect', 'autofocus', 'clearButtonLabel', 'debounceTime', 'disableClear', 'disabled', 'form', 'formValidationMessage', 'inputmode', 'max', 'maxlength', 'min', 'minlength', 'name', 'pattern', 'placeholder', 'readonly', 'required', 'step', 'type', 'validationStatus', 'value'],
526
1247
  }]
527
1248
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
528
1249
  let BqNotification = class BqNotification {
529
- z;
530
- el;
1250
+ /**
1251
+ * If true, the notification will automatically hide after the specified amount of time
1252
+ */
1253
+ set autoDismiss(_) { }
1254
+ ;
1255
+ /**
1256
+ * The corder radius of the notification component
1257
+ */
1258
+ set border(_) { }
1259
+ ;
1260
+ /**
1261
+ * If true, the close button at the top right of the notification won't be shown
1262
+ */
1263
+ set disableClose(_) { }
1264
+ ;
1265
+ /**
1266
+ * If true, the notification icon won't be shown
1267
+ */
1268
+ set hideIcon(_) { }
1269
+ ;
1270
+ /**
1271
+ * If true, the notification will be shown
1272
+ */
1273
+ set open(_) { }
1274
+ ;
1275
+ /**
1276
+ * The length of time, in milliseconds, after which the notification will close itself. Only valid if `autoDismiss="true"`
1277
+ */
1278
+ set time(_) { }
1279
+ ;
1280
+ /**
1281
+ * Type of Notification
1282
+ */
1283
+ set type(_) { }
1284
+ ;
531
1285
  constructor(c, r, z) {
532
1286
  this.z = z;
533
1287
  c.detach();
534
1288
  this.el = r.nativeElement;
535
1289
  proxyOutputs(this, this.el, ['bqHide', 'bqShow', 'bqAfterOpen', 'bqAfterClose']);
536
1290
  }
537
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqNotification, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
538
- /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: BqNotification, selector: "bq-notification", inputs: { autoDismiss: "autoDismiss", border: "border", disableClose: "disableClose", hideIcon: "hideIcon", open: "open", time: "time", type: "type" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1291
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqNotification, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1292
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BqNotification, selector: "bq-notification", inputs: { autoDismiss: "autoDismiss", border: "border", disableClose: "disableClose", hideIcon: "hideIcon", open: "open", time: "time", type: "type" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
539
1293
  };
540
1294
  BqNotification = __decorate([
541
1295
  ProxyCmp({
@@ -545,7 +1299,7 @@ BqNotification = __decorate([
545
1299
  __metadata("design:paramtypes", [ChangeDetectorRef, ElementRef, NgZone])
546
1300
  ], BqNotification);
547
1301
  export { BqNotification };
548
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqNotification, decorators: [{
1302
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqNotification, decorators: [{
549
1303
  type: Component,
550
1304
  args: [{
551
1305
  selector: 'bq-notification',
@@ -556,16 +1310,34 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
556
1310
  }]
557
1311
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
558
1312
  let BqOption = class BqOption {
559
- z;
560
- el;
1313
+ /**
1314
+ * If true, the option is hidden.
1315
+ */
1316
+ set hidden(_) { }
1317
+ ;
1318
+ /**
1319
+ * If true, the option is disabled.
1320
+ */
1321
+ set disabled(_) { }
1322
+ ;
1323
+ /**
1324
+ * A string representing the value of the option. Can be used to identify the item
1325
+ */
1326
+ set value(_) { }
1327
+ ;
1328
+ /**
1329
+ * If true, the option is selected and active.
1330
+ */
1331
+ set selected(_) { }
1332
+ ;
561
1333
  constructor(c, r, z) {
562
1334
  this.z = z;
563
1335
  c.detach();
564
1336
  this.el = r.nativeElement;
565
1337
  proxyOutputs(this, this.el, ['bqBlur', 'bqFocus', 'bqClick', 'bqEnter']);
566
1338
  }
567
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqOption, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
568
- /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: BqOption, selector: "bq-option", inputs: { disabled: "disabled", hidden: "hidden", selected: "selected", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1339
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqOption, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1340
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BqOption, selector: "bq-option", inputs: { disabled: "disabled", hidden: "hidden", selected: "selected", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
569
1341
  };
570
1342
  BqOption = __decorate([
571
1343
  ProxyCmp({
@@ -574,7 +1346,7 @@ BqOption = __decorate([
574
1346
  __metadata("design:paramtypes", [ChangeDetectorRef, ElementRef, NgZone])
575
1347
  ], BqOption);
576
1348
  export { BqOption };
577
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqOption, decorators: [{
1349
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqOption, decorators: [{
578
1350
  type: Component,
579
1351
  args: [{
580
1352
  selector: 'bq-option',
@@ -585,22 +1357,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
585
1357
  }]
586
1358
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
587
1359
  let BqOptionGroup = class BqOptionGroup {
588
- z;
589
- el;
590
1360
  constructor(c, r, z) {
591
1361
  this.z = z;
592
1362
  c.detach();
593
1363
  this.el = r.nativeElement;
594
1364
  }
595
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqOptionGroup, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
596
- /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: BqOptionGroup, selector: "bq-option-group", ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1365
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqOptionGroup, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1366
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BqOptionGroup, selector: "bq-option-group", ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
597
1367
  };
598
1368
  BqOptionGroup = __decorate([
599
1369
  ProxyCmp({}),
600
1370
  __metadata("design:paramtypes", [ChangeDetectorRef, ElementRef, NgZone])
601
1371
  ], BqOptionGroup);
602
1372
  export { BqOptionGroup };
603
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqOptionGroup, decorators: [{
1373
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqOptionGroup, decorators: [{
604
1374
  type: Component,
605
1375
  args: [{
606
1376
  selector: 'bq-option-group',
@@ -611,16 +1381,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
611
1381
  }]
612
1382
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
613
1383
  let BqOptionList = class BqOptionList {
614
- z;
615
- el;
1384
+ /**
1385
+ * Aria label for the list.
1386
+ */
1387
+ set ariaLabel(_) { }
1388
+ ;
616
1389
  constructor(c, r, z) {
617
1390
  this.z = z;
618
1391
  c.detach();
619
1392
  this.el = r.nativeElement;
620
1393
  proxyOutputs(this, this.el, ['bqSelect']);
621
1394
  }
622
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqOptionList, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
623
- /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: BqOptionList, selector: "bq-option-list", inputs: { ariaLabel: "ariaLabel" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1395
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqOptionList, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1396
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BqOptionList, selector: "bq-option-list", inputs: { ariaLabel: "ariaLabel" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
624
1397
  };
625
1398
  BqOptionList = __decorate([
626
1399
  ProxyCmp({
@@ -629,7 +1402,7 @@ BqOptionList = __decorate([
629
1402
  __metadata("design:paramtypes", [ChangeDetectorRef, ElementRef, NgZone])
630
1403
  ], BqOptionList);
631
1404
  export { BqOptionList };
632
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqOptionList, decorators: [{
1405
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqOptionList, decorators: [{
633
1406
  type: Component,
634
1407
  args: [{
635
1408
  selector: 'bq-option-list',
@@ -640,22 +1413,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
640
1413
  }]
641
1414
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
642
1415
  let BqPageTitle = class BqPageTitle {
643
- z;
644
- el;
645
1416
  constructor(c, r, z) {
646
1417
  this.z = z;
647
1418
  c.detach();
648
1419
  this.el = r.nativeElement;
649
1420
  }
650
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqPageTitle, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
651
- /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: BqPageTitle, selector: "bq-page-title", ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1421
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqPageTitle, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1422
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BqPageTitle, selector: "bq-page-title", ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
652
1423
  };
653
1424
  BqPageTitle = __decorate([
654
1425
  ProxyCmp({}),
655
1426
  __metadata("design:paramtypes", [ChangeDetectorRef, ElementRef, NgZone])
656
1427
  ], BqPageTitle);
657
1428
  export { BqPageTitle };
658
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqPageTitle, decorators: [{
1429
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqPageTitle, decorators: [{
659
1430
  type: Component,
660
1431
  args: [{
661
1432
  selector: 'bq-page-title',
@@ -666,15 +1437,43 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
666
1437
  }]
667
1438
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
668
1439
  let BqPanel = class BqPanel {
669
- z;
670
- el;
1440
+ /**
1441
+ * Represents the distance (gutter or margin) between the panel and the trigger element.
1442
+ */
1443
+ set distance(_) { }
1444
+ ;
1445
+ /**
1446
+ * Position of the panel
1447
+ */
1448
+ set placement(_) { }
1449
+ ;
1450
+ /**
1451
+ * If true, the panel will be visible.
1452
+ */
1453
+ set open(_) { }
1454
+ ;
1455
+ /**
1456
+ * Whether the panel should have the same width as the trigger element
1457
+ */
1458
+ set sameWidth(_) { }
1459
+ ;
1460
+ /**
1461
+ * Represents the skidding between the panel and the trigger element.
1462
+ */
1463
+ set skidding(_) { }
1464
+ ;
1465
+ /**
1466
+ * Defines the strategy to position the panel
1467
+ */
1468
+ set strategy(_) { }
1469
+ ;
671
1470
  constructor(c, r, z) {
672
1471
  this.z = z;
673
1472
  c.detach();
674
1473
  this.el = r.nativeElement;
675
1474
  }
676
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqPanel, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
677
- /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: BqPanel, selector: "bq-panel", inputs: { distance: "distance", open: "open", placement: "placement", sameWidth: "sameWidth", skidding: "skidding", strategy: "strategy" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1475
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqPanel, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1476
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BqPanel, selector: "bq-panel", inputs: { distance: "distance", open: "open", placement: "placement", sameWidth: "sameWidth", skidding: "skidding", strategy: "strategy" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
678
1477
  };
679
1478
  BqPanel = __decorate([
680
1479
  ProxyCmp({
@@ -683,7 +1482,7 @@ BqPanel = __decorate([
683
1482
  __metadata("design:paramtypes", [ChangeDetectorRef, ElementRef, NgZone])
684
1483
  ], BqPanel);
685
1484
  export { BqPanel };
686
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqPanel, decorators: [{
1485
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqPanel, decorators: [{
687
1486
  type: Component,
688
1487
  args: [{
689
1488
  selector: 'bq-panel',
@@ -694,15 +1493,48 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
694
1493
  }]
695
1494
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
696
1495
  let BqProgress = class BqProgress {
697
- z;
698
- el;
1496
+ /**
1497
+ * It will set the border style of the progress bar
1498
+ */
1499
+ set borderShape(_) { }
1500
+ ;
1501
+ /**
1502
+ * If `true`, a tooltip will be shown displaying the progress value
1503
+ */
1504
+ set enableTooltip(_) { }
1505
+ ;
1506
+ /**
1507
+ * If `true` the indeterminate state of progress bar is enabled
1508
+ */
1509
+ set indeterminate(_) { }
1510
+ ;
1511
+ /**
1512
+ * If `true, a label text showing the value (in percentage) will be shown
1513
+ */
1514
+ set label(_) { }
1515
+ ;
1516
+ /**
1517
+ * Progress bar thickness
1518
+ */
1519
+ set thickness(_) { }
1520
+ ;
1521
+ /**
1522
+ * Progress type
1523
+ */
1524
+ set type(_) { }
1525
+ ;
1526
+ /**
1527
+ * A number representing the current value of the progress bar
1528
+ */
1529
+ set value(_) { }
1530
+ ;
699
1531
  constructor(c, r, z) {
700
1532
  this.z = z;
701
1533
  c.detach();
702
1534
  this.el = r.nativeElement;
703
1535
  }
704
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqProgress, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
705
- /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: BqProgress, selector: "bq-progress", inputs: { borderShape: "borderShape", enableTooltip: "enableTooltip", indeterminate: "indeterminate", label: "label", thickness: "thickness", type: "type", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1536
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqProgress, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1537
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BqProgress, selector: "bq-progress", inputs: { borderShape: "borderShape", enableTooltip: "enableTooltip", indeterminate: "indeterminate", label: "label", thickness: "thickness", type: "type", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
706
1538
  };
707
1539
  BqProgress = __decorate([
708
1540
  ProxyCmp({
@@ -711,7 +1543,7 @@ BqProgress = __decorate([
711
1543
  __metadata("design:paramtypes", [ChangeDetectorRef, ElementRef, NgZone])
712
1544
  ], BqProgress);
713
1545
  export { BqProgress };
714
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqProgress, decorators: [{
1546
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqProgress, decorators: [{
715
1547
  type: Component,
716
1548
  args: [{
717
1549
  selector: 'bq-progress',
@@ -722,26 +1554,59 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
722
1554
  }]
723
1555
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
724
1556
  let BqRadio = class BqRadio {
725
- z;
726
- el;
1557
+ /**
1558
+ * If true radio input is checked
1559
+ */
1560
+ set checked(_) { }
1561
+ ;
1562
+ /**
1563
+ * If true radio input is disabled
1564
+ */
1565
+ set disabled(_) { }
1566
+ ;
1567
+ /**
1568
+ * If true radio displays background on hover
1569
+ */
1570
+ set backgroundOnHover(_) { }
1571
+ ;
1572
+ /**
1573
+ * The form ID that the radio input is associated with
1574
+ */
1575
+ set formId(_) { }
1576
+ ;
1577
+ /**
1578
+ * Name of the HTML input form control. Submitted with the form as part of a name/value pair.
1579
+ */
1580
+ set name(_) { }
1581
+ ;
1582
+ /**
1583
+ * If `true`, it will indicate that the user must specify a value for the radio before the owning form can be submitted
1584
+ */
1585
+ set required(_) { }
1586
+ ;
1587
+ /**
1588
+ * A string representing the value of the radio.
1589
+ */
1590
+ set value(_) { }
1591
+ ;
727
1592
  constructor(c, r, z) {
728
1593
  this.z = z;
729
1594
  c.detach();
730
1595
  this.el = r.nativeElement;
731
1596
  proxyOutputs(this, this.el, ['bqClick', 'bqFocus', 'bqBlur', 'bqKeyDown']);
732
1597
  }
733
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqRadio, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
734
- /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: BqRadio, selector: "bq-radio", inputs: { backgroundOnHover: "backgroundOnHover", checked: "checked", disabled: "disabled", formId: "formId", name: "name", required: "required", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1598
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqRadio, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1599
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BqRadio, selector: "bq-radio", inputs: { backgroundOnHover: "backgroundOnHover", checked: "checked", disabled: "disabled", formId: "formId", name: "name", required: "required", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
735
1600
  };
736
1601
  BqRadio = __decorate([
737
1602
  ProxyCmp({
738
1603
  inputs: ['backgroundOnHover', 'checked', 'disabled', 'formId', 'name', 'required', 'value'],
739
- methods: ['vClick', 'vFocus', 'vBlur']
1604
+ methods: ['vClick', 'vFocus', 'vBlur', 'getNativeInput']
740
1605
  }),
741
1606
  __metadata("design:paramtypes", [ChangeDetectorRef, ElementRef, NgZone])
742
1607
  ], BqRadio);
743
1608
  export { BqRadio };
744
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqRadio, decorators: [{
1609
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqRadio, decorators: [{
745
1610
  type: Component,
746
1611
  args: [{
747
1612
  selector: 'bq-radio',
@@ -752,45 +1617,202 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
752
1617
  }]
753
1618
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
754
1619
  let BqRadioGroup = class BqRadioGroup {
755
- z;
756
- el;
1620
+ /**
1621
+ * If true, all radio inputs in the group will display a background on hover
1622
+ */
1623
+ set backgroundOnHover(_) { }
1624
+ ;
1625
+ /**
1626
+ * A number representing the delay time (in milliseconds) that `bqChange` event handler gets triggered once the value change
1627
+ */
1628
+ set debounceTime(_) { }
1629
+ ;
1630
+ /**
1631
+ * If true radio inputs are disabled
1632
+ */
1633
+ set disabled(_) { }
1634
+ ;
1635
+ /**
1636
+ * If true displays fieldset
1637
+ */
1638
+ set fieldset(_) { }
1639
+ ;
1640
+ /**
1641
+ * Name of the HTML input form control. Submitted with the form as part of a name/value pair.
1642
+ */
1643
+ set name(_) { }
1644
+ ;
1645
+ /**
1646
+ * The display orientation of the radio inputs
1647
+ */
1648
+ set orientation(_) { }
1649
+ ;
1650
+ /**
1651
+ * If true, the radio group is required
1652
+ */
1653
+ set required(_) { }
1654
+ ;
1655
+ /**
1656
+ * The native form validation message when the radio group is required
1657
+ */
1658
+ set requiredValidationMessage(_) { }
1659
+ ;
1660
+ /**
1661
+ * A string representing the value of the radio.
1662
+ */
1663
+ set value(_) { }
1664
+ ;
757
1665
  constructor(c, r, z) {
758
1666
  this.z = z;
759
1667
  c.detach();
760
1668
  this.el = r.nativeElement;
761
1669
  proxyOutputs(this, this.el, ['bqChange']);
762
1670
  }
763
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqRadioGroup, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
764
- /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: BqRadioGroup, selector: "bq-radio-group", inputs: { backgroundOnHover: "backgroundOnHover", debounceTime: "debounceTime", disabled: "disabled", fieldset: "fieldset", name: "name", orientation: "orientation", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1671
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqRadioGroup, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1672
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BqRadioGroup, selector: "bq-radio-group", inputs: { backgroundOnHover: "backgroundOnHover", debounceTime: "debounceTime", disabled: "disabled", fieldset: "fieldset", name: "name", orientation: "orientation", required: "required", requiredValidationMessage: "requiredValidationMessage", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
765
1673
  };
766
1674
  BqRadioGroup = __decorate([
767
1675
  ProxyCmp({
768
- inputs: ['backgroundOnHover', 'debounceTime', 'disabled', 'fieldset', 'name', 'orientation', 'value']
1676
+ inputs: ['backgroundOnHover', 'debounceTime', 'disabled', 'fieldset', 'name', 'orientation', 'required', 'requiredValidationMessage', 'value']
769
1677
  }),
770
1678
  __metadata("design:paramtypes", [ChangeDetectorRef, ElementRef, NgZone])
771
1679
  ], BqRadioGroup);
772
1680
  export { BqRadioGroup };
773
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqRadioGroup, decorators: [{
1681
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqRadioGroup, decorators: [{
774
1682
  type: Component,
775
1683
  args: [{
776
1684
  selector: 'bq-radio-group',
777
1685
  changeDetection: ChangeDetectionStrategy.OnPush,
778
1686
  template: '<ng-content></ng-content>',
779
1687
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
780
- inputs: ['backgroundOnHover', 'debounceTime', 'disabled', 'fieldset', 'name', 'orientation', 'value'],
1688
+ inputs: ['backgroundOnHover', 'debounceTime', 'disabled', 'fieldset', 'name', 'orientation', 'required', 'requiredValidationMessage', 'value'],
781
1689
  }]
782
1690
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
783
1691
  let BqSelect = class BqSelect {
784
- z;
785
- el;
1692
+ /**
1693
+ * If true, the Select input will be focused on component render
1694
+ */
1695
+ set autofocus(_) { }
1696
+ ;
1697
+ /**
1698
+ * The clear button aria label
1699
+ */
1700
+ set clearButtonLabel(_) { }
1701
+ ;
1702
+ /**
1703
+ * The amount of time, in milliseconds, to wait before emitting the `bqInput` event after the input value changes.
1704
+ A value of 0 means no debouncing will occur.
1705
+ */
1706
+ set debounceTime(_) { }
1707
+ ;
1708
+ /**
1709
+ * Indicates whether the Select input is disabled or not.
1710
+ If `true`, the Select is disabled and cannot be interacted with.
1711
+ */
1712
+ set disabled(_) { }
1713
+ ;
1714
+ /**
1715
+ * If true, the clear button won't be displayed
1716
+ */
1717
+ set disableClear(_) { }
1718
+ ;
1719
+ /**
1720
+ * Represents the distance (gutter or margin) between the Select panel and the input element.
1721
+ */
1722
+ set distance(_) { }
1723
+ ;
1724
+ /**
1725
+ * The ID of the form that the Select input belongs to.
1726
+ */
1727
+ set form(_) { }
1728
+ ;
1729
+ /**
1730
+ * If true, the Select panel will remain open after a selection is made.
1731
+ */
1732
+ set keepOpenOnSelect(_) { }
1733
+ ;
1734
+ /**
1735
+ * The Select input name.
1736
+ */
1737
+ set name(_) { }
1738
+ ;
1739
+ /**
1740
+ * The maximum number of tags to display when multiple selection is enabled
1741
+ */
1742
+ set maxTagsVisible(_) { }
1743
+ ;
1744
+ /**
1745
+ * If true, the Select input will allow multiple selections.
1746
+ */
1747
+ set multiple(_) { }
1748
+ ;
1749
+ /**
1750
+ * If true, the Select panel will be visible.
1751
+ */
1752
+ set open(_) { }
1753
+ ;
1754
+ /**
1755
+ * When set, it will override the height of the Select panel.
1756
+ */
1757
+ set panelHeight(_) { }
1758
+ ;
1759
+ /**
1760
+ * The Select input placeholder text value
1761
+ */
1762
+ set placeholder(_) { }
1763
+ ;
1764
+ /**
1765
+ * Position of the Select panel
1766
+ */
1767
+ set placement(_) { }
1768
+ ;
1769
+ /**
1770
+ * If true, the list of options cannot be filtered (searching won't be available)
1771
+ */
1772
+ set readonly(_) { }
1773
+ ;
1774
+ /**
1775
+ * Indicates whether or not the Select input is required to be filled out before submitting the form.
1776
+ */
1777
+ set required(_) { }
1778
+ ;
1779
+ /**
1780
+ * Whether the panel should have the Select same width as the input element
1781
+ */
1782
+ set sameWidth(_) { }
1783
+ ;
1784
+ /**
1785
+ * Represents the skidding between the Select panel and the input element.
1786
+ */
1787
+ set skidding(_) { }
1788
+ ;
1789
+ /**
1790
+ * Defines the strategy to position the Select panel
1791
+ */
1792
+ set strategy(_) { }
1793
+ ;
1794
+ /**
1795
+ * The validation status of the Select input. @remarks This property is used to indicate the validation status of the select input. It can be set to one of the following values:
1796
+ - `'none'`: No validation status is set.
1797
+ - `'error'`: The input has a validation error.
1798
+ - `'warning'`: The input has a validation warning.
1799
+ - `'success'`: The input has passed validation.
1800
+ */
1801
+ set validationStatus(_) { }
1802
+ ;
1803
+ /**
1804
+ * The select input value, it can be used to reset the field to a previous value
1805
+ */
1806
+ set value(_) { }
1807
+ ;
786
1808
  constructor(c, r, z) {
787
1809
  this.z = z;
788
1810
  c.detach();
789
1811
  this.el = r.nativeElement;
790
1812
  proxyOutputs(this, this.el, ['bqBlur', 'bqClear', 'bqFocus', 'bqSelect']);
791
1813
  }
792
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqSelect, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
793
- /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: BqSelect, selector: "bq-select", inputs: { autofocus: "autofocus", clearButtonLabel: "clearButtonLabel", debounceTime: "debounceTime", disableClear: "disableClear", disabled: "disabled", distance: "distance", form: "form", keepOpenOnSelect: "keepOpenOnSelect", maxTagsVisible: "maxTagsVisible", multiple: "multiple", name: "name", open: "open", panelHeight: "panelHeight", placeholder: "placeholder", placement: "placement", readonly: "readonly", required: "required", sameWidth: "sameWidth", skidding: "skidding", strategy: "strategy", validationStatus: "validationStatus", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1814
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqSelect, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1815
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BqSelect, selector: "bq-select", inputs: { autofocus: "autofocus", clearButtonLabel: "clearButtonLabel", debounceTime: "debounceTime", disableClear: "disableClear", disabled: "disabled", distance: "distance", form: "form", keepOpenOnSelect: "keepOpenOnSelect", maxTagsVisible: "maxTagsVisible", multiple: "multiple", name: "name", open: "open", panelHeight: "panelHeight", placeholder: "placeholder", placement: "placement", readonly: "readonly", required: "required", sameWidth: "sameWidth", skidding: "skidding", strategy: "strategy", validationStatus: "validationStatus", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
794
1816
  };
795
1817
  BqSelect = __decorate([
796
1818
  ProxyCmp({
@@ -800,7 +1822,7 @@ BqSelect = __decorate([
800
1822
  __metadata("design:paramtypes", [ChangeDetectorRef, ElementRef, NgZone])
801
1823
  ], BqSelect);
802
1824
  export { BqSelect };
803
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqSelect, decorators: [{
1825
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqSelect, decorators: [{
804
1826
  type: Component,
805
1827
  args: [{
806
1828
  selector: 'bq-select',
@@ -811,16 +1833,29 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
811
1833
  }]
812
1834
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
813
1835
  let BqSideMenu = class BqSideMenu {
814
- z;
815
- el;
1836
+ /**
1837
+ * It sets a predefined appearance of the side menu
1838
+ */
1839
+ set appearance(_) { }
1840
+ ;
1841
+ /**
1842
+ * If true, the container will reduce its width
1843
+ */
1844
+ set collapse(_) { }
1845
+ ;
1846
+ /**
1847
+ * It sets the size of the navigation menu items
1848
+ */
1849
+ set size(_) { }
1850
+ ;
816
1851
  constructor(c, r, z) {
817
1852
  this.z = z;
818
1853
  c.detach();
819
1854
  this.el = r.nativeElement;
820
1855
  proxyOutputs(this, this.el, ['bqCollapse', 'bqSelect']);
821
1856
  }
822
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqSideMenu, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
823
- /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: BqSideMenu, selector: "bq-side-menu", inputs: { appearance: "appearance", collapse: "collapse", size: "size" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1857
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqSideMenu, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1858
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BqSideMenu, selector: "bq-side-menu", inputs: { appearance: "appearance", collapse: "collapse", size: "size" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
824
1859
  };
825
1860
  BqSideMenu = __decorate([
826
1861
  ProxyCmp({
@@ -830,7 +1865,7 @@ BqSideMenu = __decorate([
830
1865
  __metadata("design:paramtypes", [ChangeDetectorRef, ElementRef, NgZone])
831
1866
  ], BqSideMenu);
832
1867
  export { BqSideMenu };
833
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqSideMenu, decorators: [{
1868
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqSideMenu, decorators: [{
834
1869
  type: Component,
835
1870
  args: [{
836
1871
  selector: 'bq-side-menu',
@@ -841,16 +1876,29 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
841
1876
  }]
842
1877
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
843
1878
  let BqSideMenuItem = class BqSideMenuItem {
844
- z;
845
- el;
1879
+ /**
1880
+ * If true, the menu item will be shown as active/selected.
1881
+ */
1882
+ set active(_) { }
1883
+ ;
1884
+ /**
1885
+ * If true, the item label and suffix will be hidden and the with will be reduce according to its parent
1886
+ */
1887
+ set collapse(_) { }
1888
+ ;
1889
+ /**
1890
+ * If true, the menu item will be disabled (no interaction allowed)
1891
+ */
1892
+ set disabled(_) { }
1893
+ ;
846
1894
  constructor(c, r, z) {
847
1895
  this.z = z;
848
1896
  c.detach();
849
1897
  this.el = r.nativeElement;
850
1898
  proxyOutputs(this, this.el, ['bqBlur', 'bqFocus', 'bqClick']);
851
1899
  }
852
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqSideMenuItem, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
853
- /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: BqSideMenuItem, selector: "bq-side-menu-item", inputs: { active: "active", collapse: "collapse", disabled: "disabled" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1900
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqSideMenuItem, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1901
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BqSideMenuItem, selector: "bq-side-menu-item", inputs: { active: "active", collapse: "collapse", disabled: "disabled" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
854
1902
  };
855
1903
  BqSideMenuItem = __decorate([
856
1904
  ProxyCmp({
@@ -859,7 +1907,7 @@ BqSideMenuItem = __decorate([
859
1907
  __metadata("design:paramtypes", [ChangeDetectorRef, ElementRef, NgZone])
860
1908
  ], BqSideMenuItem);
861
1909
  export { BqSideMenuItem };
862
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqSideMenuItem, decorators: [{
1910
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqSideMenuItem, decorators: [{
863
1911
  type: Component,
864
1912
  args: [{
865
1913
  selector: 'bq-side-menu-item',
@@ -870,44 +1918,119 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
870
1918
  }]
871
1919
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
872
1920
  let BqSlider = class BqSlider {
873
- z;
874
- el;
1921
+ /**
1922
+ * The amount of time, in milliseconds, to wait to trigger the `bqChange` event after each value change.
1923
+ */
1924
+ set debounceTime(_) { }
1925
+ ;
1926
+ /**
1927
+ * If `true` the slider is disabled.
1928
+ */
1929
+ set disabled(_) { }
1930
+ ;
1931
+ /**
1932
+ * If `true` it will show the value label on a side of the slider track area
1933
+ */
1934
+ set enableValueIndicator(_) { }
1935
+ ;
1936
+ /**
1937
+ * A number representing the amount to remain between the minimum and maximum values (only for range type).
1938
+ */
1939
+ set gap(_) { }
1940
+ ;
1941
+ /**
1942
+ * A number representing the max value of the slider.
1943
+ */
1944
+ set max(_) { }
1945
+ ;
1946
+ /**
1947
+ * A number representing the min value of the slider.
1948
+ */
1949
+ set min(_) { }
1950
+ ;
1951
+ /**
1952
+ * Name of the form control. Submitted with the form as part of a name/value pair
1953
+ */
1954
+ set name(_) { }
1955
+ ;
1956
+ /**
1957
+ * A number representing the step of the slider.
1958
+ ⚠️ Please notice that the value (or list of values if the slider type is `range`) will be rounded to the nearest multiple of `step`.
1959
+ */
1960
+ set step(_) { }
1961
+ ;
1962
+ /**
1963
+ * It defines the type of slider to display
1964
+ */
1965
+ set type(_) { }
1966
+ ;
1967
+ /**
1968
+ * The value of the slider.
1969
+ - If the slider type is `single`, the value is a number.
1970
+ - If the slider type is `range`, the value is an array of two numbers (the first number represents the `min` value and the second number represents the `max` value).
1971
+ */
1972
+ set value(_) { }
1973
+ ;
1974
+ /**
1975
+ * If `true`, a tooltip will be shown displaying the progress value
1976
+ */
1977
+ set enableTooltip(_) { }
1978
+ ;
1979
+ /**
1980
+ * If `true`, a tooltip will always display the progress value.
1981
+ It relies on enableTooltip and if enableTooltip is false, tooltipAlwaysVisible cannot be true.
1982
+ */
1983
+ set tooltipAlwaysVisible(_) { }
1984
+ ;
875
1985
  constructor(c, r, z) {
876
1986
  this.z = z;
877
1987
  c.detach();
878
1988
  this.el = r.nativeElement;
879
1989
  proxyOutputs(this, this.el, ['bqChange', 'bqBlur', 'bqFocus']);
880
1990
  }
881
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqSlider, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
882
- /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: BqSlider, selector: "bq-slider", inputs: { debounceTime: "debounceTime", disabled: "disabled", enableTooltip: "enableTooltip", enableValueIndicator: "enableValueIndicator", gap: "gap", max: "max", min: "min", step: "step", tooltipAlwaysVisible: "tooltipAlwaysVisible", type: "type", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1991
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqSlider, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1992
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BqSlider, selector: "bq-slider", inputs: { debounceTime: "debounceTime", disabled: "disabled", enableTooltip: "enableTooltip", enableValueIndicator: "enableValueIndicator", gap: "gap", max: "max", min: "min", name: "name", step: "step", tooltipAlwaysVisible: "tooltipAlwaysVisible", type: "type", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
883
1993
  };
884
1994
  BqSlider = __decorate([
885
1995
  ProxyCmp({
886
- inputs: ['debounceTime', 'disabled', 'enableTooltip', 'enableValueIndicator', 'gap', 'max', 'min', 'step', 'tooltipAlwaysVisible', 'type', 'value']
1996
+ inputs: ['debounceTime', 'disabled', 'enableTooltip', 'enableValueIndicator', 'gap', 'max', 'min', 'name', 'step', 'tooltipAlwaysVisible', 'type', 'value']
887
1997
  }),
888
1998
  __metadata("design:paramtypes", [ChangeDetectorRef, ElementRef, NgZone])
889
1999
  ], BqSlider);
890
2000
  export { BqSlider };
891
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqSlider, decorators: [{
2001
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqSlider, decorators: [{
892
2002
  type: Component,
893
2003
  args: [{
894
2004
  selector: 'bq-slider',
895
2005
  changeDetection: ChangeDetectionStrategy.OnPush,
896
2006
  template: '<ng-content></ng-content>',
897
2007
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
898
- inputs: ['debounceTime', 'disabled', 'enableTooltip', 'enableValueIndicator', 'gap', 'max', 'min', 'step', 'tooltipAlwaysVisible', 'type', 'value'],
2008
+ inputs: ['debounceTime', 'disabled', 'enableTooltip', 'enableValueIndicator', 'gap', 'max', 'min', 'name', 'step', 'tooltipAlwaysVisible', 'type', 'value'],
899
2009
  }]
900
2010
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
901
2011
  let BqSpinner = class BqSpinner {
902
- z;
903
- el;
2012
+ /**
2013
+ * If `false`, the animation on the icon element will be stopped
2014
+ */
2015
+ set animation(_) { }
2016
+ ;
2017
+ /**
2018
+ * It defines the position of the label text
2019
+ */
2020
+ set textPosition(_) { }
2021
+ ;
2022
+ /**
2023
+ * It defines the size of the icon element displayed
2024
+ */
2025
+ set size(_) { }
2026
+ ;
904
2027
  constructor(c, r, z) {
905
2028
  this.z = z;
906
2029
  c.detach();
907
2030
  this.el = r.nativeElement;
908
2031
  }
909
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqSpinner, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
910
- /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: BqSpinner, selector: "bq-spinner", inputs: { animation: "animation", size: "size", textPosition: "textPosition" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
2032
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqSpinner, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
2033
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BqSpinner, selector: "bq-spinner", inputs: { animation: "animation", size: "size", textPosition: "textPosition" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
911
2034
  };
912
2035
  BqSpinner = __decorate([
913
2036
  ProxyCmp({
@@ -916,7 +2039,7 @@ BqSpinner = __decorate([
916
2039
  __metadata("design:paramtypes", [ChangeDetectorRef, ElementRef, NgZone])
917
2040
  ], BqSpinner);
918
2041
  export { BqSpinner };
919
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqSpinner, decorators: [{
2042
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqSpinner, decorators: [{
920
2043
  type: Component,
921
2044
  args: [{
922
2045
  selector: 'bq-spinner',
@@ -927,15 +2050,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
927
2050
  }]
928
2051
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
929
2052
  let BqStatus = class BqStatus {
930
- z;
931
- el;
2053
+ /**
2054
+ * It defines the type of status to display
2055
+ */
2056
+ set type(_) { }
2057
+ ;
932
2058
  constructor(c, r, z) {
933
2059
  this.z = z;
934
2060
  c.detach();
935
2061
  this.el = r.nativeElement;
936
2062
  }
937
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqStatus, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
938
- /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: BqStatus, selector: "bq-status", inputs: { type: "type" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
2063
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqStatus, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
2064
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BqStatus, selector: "bq-status", inputs: { type: "type" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
939
2065
  };
940
2066
  BqStatus = __decorate([
941
2067
  ProxyCmp({
@@ -944,7 +2070,7 @@ BqStatus = __decorate([
944
2070
  __metadata("design:paramtypes", [ChangeDetectorRef, ElementRef, NgZone])
945
2071
  ], BqStatus);
946
2072
  export { BqStatus };
947
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqStatus, decorators: [{
2073
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqStatus, decorators: [{
948
2074
  type: Component,
949
2075
  args: [{
950
2076
  selector: 'bq-status',
@@ -955,16 +2081,29 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
955
2081
  }]
956
2082
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
957
2083
  let BqStepItem = class BqStepItem {
958
- z;
959
- el;
2084
+ /**
2085
+ * It defines prefix size
2086
+ */
2087
+ set size(_) { }
2088
+ ;
2089
+ /**
2090
+ * It defines step item appearance based on its status
2091
+ */
2092
+ set status(_) { }
2093
+ ;
2094
+ /**
2095
+ * It defines the step item type used
2096
+ */
2097
+ set type(_) { }
2098
+ ;
960
2099
  constructor(c, r, z) {
961
2100
  this.z = z;
962
2101
  c.detach();
963
2102
  this.el = r.nativeElement;
964
2103
  proxyOutputs(this, this.el, ['bqClick']);
965
2104
  }
966
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqStepItem, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
967
- /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: BqStepItem, selector: "bq-step-item", inputs: { size: "size", status: "status", type: "type" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
2105
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqStepItem, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
2106
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BqStepItem, selector: "bq-step-item", inputs: { size: "size", status: "status", type: "type" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
968
2107
  };
969
2108
  BqStepItem = __decorate([
970
2109
  ProxyCmp({
@@ -973,7 +2112,7 @@ BqStepItem = __decorate([
973
2112
  __metadata("design:paramtypes", [ChangeDetectorRef, ElementRef, NgZone])
974
2113
  ], BqStepItem);
975
2114
  export { BqStepItem };
976
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqStepItem, decorators: [{
2115
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqStepItem, decorators: [{
977
2116
  type: Component,
978
2117
  args: [{
979
2118
  selector: 'bq-step-item',
@@ -984,15 +2123,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
984
2123
  }]
985
2124
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
986
2125
  let BqSteps = class BqSteps {
987
- z;
988
- el;
2126
+ /**
2127
+ * The color of the line that connects the steps. It should be a valid declarative color token.
2128
+ */
2129
+ set dividerColor(_) { }
2130
+ ;
2131
+ /**
2132
+ * The size of the steps
2133
+ */
2134
+ set size(_) { }
2135
+ ;
2136
+ /**
2137
+ * The type of prefix element to use on the step items
2138
+ */
2139
+ set type(_) { }
2140
+ ;
989
2141
  constructor(c, r, z) {
990
2142
  this.z = z;
991
2143
  c.detach();
992
2144
  this.el = r.nativeElement;
993
2145
  }
994
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqSteps, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
995
- /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: BqSteps, selector: "bq-steps", inputs: { dividerColor: "dividerColor", size: "size", type: "type" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
2146
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqSteps, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
2147
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BqSteps, selector: "bq-steps", inputs: { dividerColor: "dividerColor", size: "size", type: "type" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
996
2148
  };
997
2149
  BqSteps = __decorate([
998
2150
  ProxyCmp({
@@ -1001,7 +2153,7 @@ BqSteps = __decorate([
1001
2153
  __metadata("design:paramtypes", [ChangeDetectorRef, ElementRef, NgZone])
1002
2154
  ], BqSteps);
1003
2155
  export { BqSteps };
1004
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqSteps, decorators: [{
2156
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqSteps, decorators: [{
1005
2157
  type: Component,
1006
2158
  args: [{
1007
2159
  selector: 'bq-steps',
@@ -1012,56 +2164,143 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
1012
2164
  }]
1013
2165
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1014
2166
  let BqSwitch = class BqSwitch {
1015
- z;
1016
- el;
2167
+ /**
2168
+ * If true, a background will be displayed on hover
2169
+ */
2170
+ set backgroundOnHover(_) { }
2171
+ ;
2172
+ /**
2173
+ * It indicates whether if the switch is `ON` by default (when the page loads)
2174
+ */
2175
+ set checked(_) { }
2176
+ ;
2177
+ /**
2178
+ * If true, the switch control will be disabled and no interaction will be allowed
2179
+ */
2180
+ set disabled(_) { }
2181
+ ;
2182
+ /**
2183
+ * The native form validation message
2184
+ */
2185
+ set formValidationMessage(_) { }
2186
+ ;
2187
+ /**
2188
+ * If true, the component will take the full width space available on the parent container
2189
+ */
2190
+ set fullWidth(_) { }
2191
+ ;
2192
+ /**
2193
+ * It indicates how to to display the on/off marks inside the control, with icons or none (default)
2194
+ */
2195
+ set innerLabel(_) { }
2196
+ ;
2197
+ /**
2198
+ * It defines how to distribute the space between and around the control and the label text
2199
+ (https://developer.mozilla.org/en-US/docs/Web/CSS/justify-content)
2200
+ */
2201
+ set justifyContent(_) { }
2202
+ ;
2203
+ /**
2204
+ * Name of the form control. Submitted with the form as part of a name/value pair
2205
+ */
2206
+ set name(_) { }
2207
+ ;
2208
+ /**
2209
+ * If `true`, it will indicate that the user must switch `ON` the element before the owning form can be submitted
2210
+ */
2211
+ set required(_) { }
2212
+ ;
2213
+ /**
2214
+ * If true, the order of the control and the label text will be changed
2215
+ */
2216
+ set reverseOrder(_) { }
2217
+ ;
2218
+ /**
2219
+ * The input control's value, submitted as a name/value pair with form data.
2220
+ */
2221
+ set value(_) { }
2222
+ ;
1017
2223
  constructor(c, r, z) {
1018
2224
  this.z = z;
1019
2225
  c.detach();
1020
2226
  this.el = r.nativeElement;
1021
2227
  proxyOutputs(this, this.el, ['bqChange', 'bqFocus', 'bqBlur']);
1022
2228
  }
1023
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqSwitch, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1024
- /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: BqSwitch, selector: "bq-switch", inputs: { backgroundOnHover: "backgroundOnHover", checked: "checked", disabled: "disabled", fullWidth: "fullWidth", innerLabel: "innerLabel", justifyContent: "justifyContent", name: "name", required: "required", reverseOrder: "reverseOrder", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
2229
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqSwitch, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
2230
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BqSwitch, selector: "bq-switch", inputs: { backgroundOnHover: "backgroundOnHover", checked: "checked", disabled: "disabled", formValidationMessage: "formValidationMessage", fullWidth: "fullWidth", innerLabel: "innerLabel", justifyContent: "justifyContent", name: "name", required: "required", reverseOrder: "reverseOrder", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1025
2231
  };
1026
2232
  BqSwitch = __decorate([
1027
2233
  ProxyCmp({
1028
- inputs: ['backgroundOnHover', 'checked', 'disabled', 'fullWidth', 'innerLabel', 'justifyContent', 'name', 'required', 'reverseOrder', 'value'],
2234
+ inputs: ['backgroundOnHover', 'checked', 'disabled', 'formValidationMessage', 'fullWidth', 'innerLabel', 'justifyContent', 'name', 'required', 'reverseOrder', 'value'],
1029
2235
  methods: ['vClick', 'vFocus', 'vBlur']
1030
2236
  }),
1031
2237
  __metadata("design:paramtypes", [ChangeDetectorRef, ElementRef, NgZone])
1032
2238
  ], BqSwitch);
1033
2239
  export { BqSwitch };
1034
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqSwitch, decorators: [{
2240
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqSwitch, decorators: [{
1035
2241
  type: Component,
1036
2242
  args: [{
1037
2243
  selector: 'bq-switch',
1038
2244
  changeDetection: ChangeDetectionStrategy.OnPush,
1039
2245
  template: '<ng-content></ng-content>',
1040
2246
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1041
- inputs: ['backgroundOnHover', 'checked', 'disabled', 'fullWidth', 'innerLabel', 'justifyContent', 'name', 'required', 'reverseOrder', 'value'],
2247
+ inputs: ['backgroundOnHover', 'checked', 'disabled', 'formValidationMessage', 'fullWidth', 'innerLabel', 'justifyContent', 'name', 'required', 'reverseOrder', 'value'],
1042
2248
  }]
1043
2249
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1044
2250
  let BqTab = class BqTab {
1045
- z;
1046
- el;
2251
+ /**
2252
+ * If true tab is active
2253
+ */
2254
+ set active(_) { }
2255
+ ;
2256
+ /**
2257
+ * The tab panel id that the tab controls
2258
+ */
2259
+ set controls(_) { }
2260
+ ;
2261
+ /**
2262
+ * If true tab is disabled
2263
+ */
2264
+ set disabled(_) { }
2265
+ ;
2266
+ /**
2267
+ * The direction that tab should be render
2268
+ */
2269
+ set orientation(_) { }
2270
+ ;
2271
+ /**
2272
+ * The placement that tab should be render
2273
+ */
2274
+ set placement(_) { }
2275
+ ;
2276
+ /**
2277
+ * The size of the tab
2278
+ */
2279
+ set size(_) { }
2280
+ ;
2281
+ /**
2282
+ * The id of the tab
2283
+ */
2284
+ set tabId(_) { }
2285
+ ;
1047
2286
  constructor(c, r, z) {
1048
2287
  this.z = z;
1049
2288
  c.detach();
1050
2289
  this.el = r.nativeElement;
1051
2290
  proxyOutputs(this, this.el, ['bqClick', 'bqFocus', 'bqBlur', 'bqKeyDown']);
1052
2291
  }
1053
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqTab, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1054
- /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: BqTab, selector: "bq-tab", inputs: { active: "active", controls: "controls", disabled: "disabled", orientation: "orientation", placement: "placement", size: "size", tabId: "tabId" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
2292
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqTab, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
2293
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BqTab, selector: "bq-tab", inputs: { active: "active", controls: "controls", disabled: "disabled", orientation: "orientation", placement: "placement", size: "size", tabId: "tabId" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1055
2294
  };
1056
2295
  BqTab = __decorate([
1057
2296
  ProxyCmp({
1058
2297
  inputs: ['active', 'controls', 'disabled', 'orientation', 'placement', 'size', 'tabId'],
1059
- methods: ['vClick', 'vFocus', 'vBlur', 'enableFocus']
2298
+ methods: ['vClick', 'vFocus', 'vBlur']
1060
2299
  }),
1061
2300
  __metadata("design:paramtypes", [ChangeDetectorRef, ElementRef, NgZone])
1062
2301
  ], BqTab);
1063
2302
  export { BqTab };
1064
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqTab, decorators: [{
2303
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqTab, decorators: [{
1065
2304
  type: Component,
1066
2305
  args: [{
1067
2306
  selector: 'bq-tab',
@@ -1072,16 +2311,44 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
1072
2311
  }]
1073
2312
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1074
2313
  let BqTabGroup = class BqTabGroup {
1075
- z;
1076
- el;
2314
+ /**
2315
+ * A number representing the delay value applied to bqChange event handler
2316
+ */
2317
+ set debounceTime(_) { }
2318
+ ;
2319
+ /**
2320
+ * If true, the underline divider below the tabs won't be shown
2321
+ */
2322
+ set disableDivider(_) { }
2323
+ ;
2324
+ /**
2325
+ * The direction that tab should be render
2326
+ */
2327
+ set orientation(_) { }
2328
+ ;
2329
+ /**
2330
+ * The placement that tab should be render
2331
+ */
2332
+ set placement(_) { }
2333
+ ;
2334
+ /**
2335
+ * The size of the tab
2336
+ */
2337
+ set size(_) { }
2338
+ ;
2339
+ /**
2340
+ * A string representing the id of the selected tab.
2341
+ */
2342
+ set value(_) { }
2343
+ ;
1077
2344
  constructor(c, r, z) {
1078
2345
  this.z = z;
1079
2346
  c.detach();
1080
2347
  this.el = r.nativeElement;
1081
2348
  proxyOutputs(this, this.el, ['bqChange']);
1082
2349
  }
1083
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqTabGroup, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1084
- /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: BqTabGroup, selector: "bq-tab-group", inputs: { debounceTime: "debounceTime", disableDivider: "disableDivider", orientation: "orientation", placement: "placement", size: "size", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
2350
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqTabGroup, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
2351
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BqTabGroup, selector: "bq-tab-group", inputs: { debounceTime: "debounceTime", disableDivider: "disableDivider", orientation: "orientation", placement: "placement", size: "size", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1085
2352
  };
1086
2353
  BqTabGroup = __decorate([
1087
2354
  ProxyCmp({
@@ -1090,7 +2357,7 @@ BqTabGroup = __decorate([
1090
2357
  __metadata("design:paramtypes", [ChangeDetectorRef, ElementRef, NgZone])
1091
2358
  ], BqTabGroup);
1092
2359
  export { BqTabGroup };
1093
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqTabGroup, decorators: [{
2360
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqTabGroup, decorators: [{
1094
2361
  type: Component,
1095
2362
  args: [{
1096
2363
  selector: 'bq-tab-group',
@@ -1101,16 +2368,59 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
1101
2368
  }]
1102
2369
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1103
2370
  let BqTag = class BqTag {
1104
- z;
1105
- el;
2371
+ /**
2372
+ * The corner radius of the Tag (will override size's predefined border)
2373
+ */
2374
+ set border(_) { }
2375
+ ;
2376
+ /**
2377
+ * If true, the Tag can be clickable
2378
+ */
2379
+ set clickable(_) { }
2380
+ ;
2381
+ /**
2382
+ * The color style of the Tag
2383
+ */
2384
+ set color(_) { }
2385
+ ;
2386
+ /**
2387
+ * If true, the Tag will be disabled (only if clickable = `true`, no interaction allowed)
2388
+ */
2389
+ set disabled(_) { }
2390
+ ;
2391
+ /**
2392
+ * If true, the Tag component will hidden (only if removable = `true`)
2393
+ */
2394
+ set hidden(_) { }
2395
+ ;
2396
+ /**
2397
+ * If true, the Tag component can be removed
2398
+ */
2399
+ set removable(_) { }
2400
+ ;
2401
+ /**
2402
+ * If true, the Tag is selected (only if clickable = `true`)
2403
+ */
2404
+ set selected(_) { }
2405
+ ;
2406
+ /**
2407
+ * The size of the Tag component
2408
+ */
2409
+ set size(_) { }
2410
+ ;
2411
+ /**
2412
+ * The variant of Tag to apply on top of the variant
2413
+ */
2414
+ set variant(_) { }
2415
+ ;
1106
2416
  constructor(c, r, z) {
1107
2417
  this.z = z;
1108
2418
  c.detach();
1109
2419
  this.el = r.nativeElement;
1110
2420
  proxyOutputs(this, this.el, ['bqClose', 'bqOpen', 'bqBlur', 'bqClick', 'bqFocus']);
1111
2421
  }
1112
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqTag, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1113
- /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: BqTag, selector: "bq-tag", inputs: { border: "border", clickable: "clickable", color: "color", disabled: "disabled", hidden: "hidden", removable: "removable", selected: "selected", size: "size", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
2422
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqTag, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
2423
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BqTag, selector: "bq-tag", inputs: { border: "border", clickable: "clickable", color: "color", disabled: "disabled", hidden: "hidden", removable: "removable", selected: "selected", size: "size", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1114
2424
  };
1115
2425
  BqTag = __decorate([
1116
2426
  ProxyCmp({
@@ -1120,7 +2430,7 @@ BqTag = __decorate([
1120
2430
  __metadata("design:paramtypes", [ChangeDetectorRef, ElementRef, NgZone])
1121
2431
  ], BqTag);
1122
2432
  export { BqTag };
1123
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqTag, decorators: [{
2433
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqTag, decorators: [{
1124
2434
  type: Component,
1125
2435
  args: [{
1126
2436
  selector: 'bq-tag',
@@ -1131,45 +2441,182 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
1131
2441
  }]
1132
2442
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1133
2443
  let BqTextarea = class BqTextarea {
1134
- z;
1135
- el;
2444
+ /**
2445
+ * Controls whether or not the textarea field should be capitalized and how.
2446
+ Possible values are 'off', 'none', 'on', 'sentences', 'words', and 'characters'.
2447
+ See: https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/autocapitalize
2448
+ */
2449
+ set autocapitalize(_) { }
2450
+ ;
2451
+ /**
2452
+ * Specifies whether or not the textarea field should have autocomplete enabled.
2453
+ See: https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete#values
2454
+ */
2455
+ set autocomplete(_) { }
2456
+ ;
2457
+ /**
2458
+ * Controls whether or not the textarea field should have autocorrect enabled.
2459
+ Possible values are 'on' and 'off'.
2460
+ */
2461
+ set autocorrect(_) { }
2462
+ ;
2463
+ /**
2464
+ * If true, the textarea will be focused on component render
2465
+ */
2466
+ set autofocus(_) { }
2467
+ ;
2468
+ /**
2469
+ * If `true`, the textarea will automatically grow and shrink to fit its contents.
2470
+ If `false`, the textarea will have a fixed height specified by the `rows` property.
2471
+ */
2472
+ set autoGrow(_) { }
2473
+ ;
2474
+ /**
2475
+ * The amount of time, in milliseconds, to wait before emitting the `bqInput` event after the textarea value changes.
2476
+ A value of 0 means no debouncing will occur.
2477
+ */
2478
+ set debounceTime(_) { }
2479
+ ;
2480
+ /**
2481
+ * If `true`, the user cannot interact with the textarea.
2482
+ */
2483
+ set disabled(_) { }
2484
+ ;
2485
+ /**
2486
+ * If `true`, it will block the user's ability to resize the textarea.
2487
+ */
2488
+ set disableResize(_) { }
2489
+ ;
2490
+ /**
2491
+ * The ID of the form that the textarea field belongs to.
2492
+ */
2493
+ set form(_) { }
2494
+ ;
2495
+ /**
2496
+ * The native form validation message
2497
+ */
2498
+ set formValidationMessage(_) { }
2499
+ ;
2500
+ /**
2501
+ * The maximum number of characters that can be entered into the textarea (`0`: no limit).
2502
+ When enabled, a character counter will be shown underneath the textarea.
2503
+ */
2504
+ set maxlength(_) { }
2505
+ ;
2506
+ /**
2507
+ * The name of the textarea element.
2508
+ */
2509
+ set name(_) { }
2510
+ ;
2511
+ /**
2512
+ * The placeholder text to show when there is no value.
2513
+ */
2514
+ set placeholder(_) { }
2515
+ ;
2516
+ /**
2517
+ * If true, the textarea field cannot be modified.
2518
+ */
2519
+ set readonly(_) { }
2520
+ ;
2521
+ /**
2522
+ * Indicates whether or not the textarea field is required to be filled out before submitting the form.
2523
+ */
2524
+ set required(_) { }
2525
+ ;
2526
+ /**
2527
+ * The number of visible text lines for the control. It must be a positive integer.
2528
+ */
2529
+ set rows(_) { }
2530
+ ;
2531
+ /**
2532
+ * If true, the textarea content may be checked for spelling errors.
2533
+ */
2534
+ set spellcheck(_) { }
2535
+ ;
2536
+ /**
2537
+ * The validation status of the textarea. @remarks This property is used to indicate the validation status of the textarea. It can be set to one of the following values:
2538
+ - `'none'`: No validation status is set.
2539
+ - `'error'`: The textarea has a validation error.
2540
+ - `'warning'`: The textarea has a validation warning.
2541
+ - `'success'`: The textarea has passed validation.
2542
+ */
2543
+ set validationStatus(_) { }
2544
+ ;
2545
+ /**
2546
+ * The value of the textarea. It can be used to reset the textarea to a previous value.
2547
+ */
2548
+ set value(_) { }
2549
+ ;
2550
+ /**
2551
+ * Specifies how the text in a text area is to be wrapped when submitted in a form
2552
+ */
2553
+ set wrap(_) { }
2554
+ ;
1136
2555
  constructor(c, r, z) {
1137
2556
  this.z = z;
1138
2557
  c.detach();
1139
2558
  this.el = r.nativeElement;
1140
2559
  proxyOutputs(this, this.el, ['bqBlur', 'bqChange', 'bqClear', 'bqFocus', 'bqInput']);
1141
2560
  }
1142
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqTextarea, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1143
- /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: BqTextarea, selector: "bq-textarea", inputs: { autoGrow: "autoGrow", autocapitalize: "autocapitalize", autocomplete: "autocomplete", autocorrect: "autocorrect", autofocus: "autofocus", debounceTime: "debounceTime", disableResize: "disableResize", disabled: "disabled", form: "form", maxlength: "maxlength", name: "name", placeholder: "placeholder", readonly: "readonly", required: "required", rows: "rows", spellcheck: "spellcheck", validationStatus: "validationStatus", value: "value", wrap: "wrap" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
2561
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqTextarea, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
2562
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BqTextarea, selector: "bq-textarea", inputs: { autoGrow: "autoGrow", autocapitalize: "autocapitalize", autocomplete: "autocomplete", autocorrect: "autocorrect", autofocus: "autofocus", debounceTime: "debounceTime", disableResize: "disableResize", disabled: "disabled", form: "form", formValidationMessage: "formValidationMessage", maxlength: "maxlength", name: "name", placeholder: "placeholder", readonly: "readonly", required: "required", rows: "rows", spellcheck: "spellcheck", validationStatus: "validationStatus", value: "value", wrap: "wrap" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1144
2563
  };
1145
2564
  BqTextarea = __decorate([
1146
2565
  ProxyCmp({
1147
- inputs: ['autoGrow', 'autocapitalize', 'autocomplete', 'autocorrect', 'autofocus', 'debounceTime', 'disableResize', 'disabled', 'form', 'maxlength', 'name', 'placeholder', 'readonly', 'required', 'rows', 'spellcheck', 'validationStatus', 'value', 'wrap']
2566
+ inputs: ['autoGrow', 'autocapitalize', 'autocomplete', 'autocorrect', 'autofocus', 'debounceTime', 'disableResize', 'disabled', 'form', 'formValidationMessage', 'maxlength', 'name', 'placeholder', 'readonly', 'required', 'rows', 'spellcheck', 'validationStatus', 'value', 'wrap']
1148
2567
  }),
1149
2568
  __metadata("design:paramtypes", [ChangeDetectorRef, ElementRef, NgZone])
1150
2569
  ], BqTextarea);
1151
2570
  export { BqTextarea };
1152
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqTextarea, decorators: [{
2571
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqTextarea, decorators: [{
1153
2572
  type: Component,
1154
2573
  args: [{
1155
2574
  selector: 'bq-textarea',
1156
2575
  changeDetection: ChangeDetectionStrategy.OnPush,
1157
2576
  template: '<ng-content></ng-content>',
1158
2577
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1159
- inputs: ['autoGrow', 'autocapitalize', 'autocomplete', 'autocorrect', 'autofocus', 'debounceTime', 'disableResize', 'disabled', 'form', 'maxlength', 'name', 'placeholder', 'readonly', 'required', 'rows', 'spellcheck', 'validationStatus', 'value', 'wrap'],
2578
+ inputs: ['autoGrow', 'autocapitalize', 'autocomplete', 'autocorrect', 'autofocus', 'debounceTime', 'disableResize', 'disabled', 'form', 'formValidationMessage', 'maxlength', 'name', 'placeholder', 'readonly', 'required', 'rows', 'spellcheck', 'validationStatus', 'value', 'wrap'],
1160
2579
  }]
1161
2580
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1162
2581
  let BqToast = class BqToast {
1163
- z;
1164
- el;
2582
+ /**
2583
+ * The corder radius of the toast component
2584
+ */
2585
+ set border(_) { }
2586
+ ;
2587
+ /**
2588
+ * Type of toast
2589
+ */
2590
+ set type(_) { }
2591
+ ;
2592
+ /**
2593
+ * Placement of toast
2594
+ */
2595
+ set placement(_) { }
2596
+ ;
2597
+ /**
2598
+ * If true will hide toast icon
2599
+ */
2600
+ set hideIcon(_) { }
2601
+ ;
2602
+ /**
2603
+ * If true, the toast will be shown
2604
+ */
2605
+ set open(_) { }
2606
+ ;
2607
+ /**
2608
+ * The length of time, in milliseconds, after which the toast will close itself
2609
+ */
2610
+ set time(_) { }
2611
+ ;
1165
2612
  constructor(c, r, z) {
1166
2613
  this.z = z;
1167
2614
  c.detach();
1168
2615
  this.el = r.nativeElement;
1169
2616
  proxyOutputs(this, this.el, ['bqHide', 'bqShow']);
1170
2617
  }
1171
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqToast, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1172
- /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: BqToast, selector: "bq-toast", inputs: { border: "border", hideIcon: "hideIcon", open: "open", placement: "placement", time: "time", type: "type" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
2618
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqToast, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
2619
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BqToast, selector: "bq-toast", inputs: { border: "border", hideIcon: "hideIcon", open: "open", placement: "placement", time: "time", type: "type" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1173
2620
  };
1174
2621
  BqToast = __decorate([
1175
2622
  ProxyCmp({
@@ -1179,7 +2626,7 @@ BqToast = __decorate([
1179
2626
  __metadata("design:paramtypes", [ChangeDetectorRef, ElementRef, NgZone])
1180
2627
  ], BqToast);
1181
2628
  export { BqToast };
1182
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqToast, decorators: [{
2629
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqToast, decorators: [{
1183
2630
  type: Component,
1184
2631
  args: [{
1185
2632
  selector: 'bq-toast',
@@ -1190,15 +2637,47 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
1190
2637
  }]
1191
2638
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1192
2639
  let BqTooltip = class BqTooltip {
1193
- z;
1194
- el;
2640
+ /**
2641
+ * If true, the tooltip will always be visible
2642
+ */
2643
+ set alwaysVisible(_) { }
2644
+ ;
2645
+ /**
2646
+ * Distance between trigger element and tooltip
2647
+ */
2648
+ set distance(_) { }
2649
+ ;
2650
+ /**
2651
+ * If true, the arrow on the tooltip content won't be shown
2652
+ */
2653
+ set hideArrow(_) { }
2654
+ ;
2655
+ set placement(_) { }
2656
+ ;
2657
+ /**
2658
+ * Whether the tooltip should have the same width as the trigger element
2659
+ (applicable only for content shorter than the trigger element)
2660
+ */
2661
+ set sameWidth(_) { }
2662
+ ;
2663
+ /**
2664
+ * Set the action when the tooltip should be displayed, on hover (default) or click
2665
+ */
2666
+ set displayOn(_) { }
2667
+ ;
2668
+ /**
2669
+ * Indicates whether or not the tooltip is visible when the component is first rendered,
2670
+ and when interacting with the trigger
2671
+ */
2672
+ set visible(_) { }
2673
+ ;
1195
2674
  constructor(c, r, z) {
1196
2675
  this.z = z;
1197
2676
  c.detach();
1198
2677
  this.el = r.nativeElement;
1199
2678
  }
1200
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqTooltip, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1201
- /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: BqTooltip, selector: "bq-tooltip", inputs: { alwaysVisible: "alwaysVisible", displayOn: "displayOn", distance: "distance", hideArrow: "hideArrow", placement: "placement", sameWidth: "sameWidth", visible: "visible" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
2679
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqTooltip, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
2680
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BqTooltip, selector: "bq-tooltip", inputs: { alwaysVisible: "alwaysVisible", displayOn: "displayOn", distance: "distance", hideArrow: "hideArrow", placement: "placement", sameWidth: "sameWidth", visible: "visible" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1202
2681
  };
1203
2682
  BqTooltip = __decorate([
1204
2683
  ProxyCmp({
@@ -1208,7 +2687,7 @@ BqTooltip = __decorate([
1208
2687
  __metadata("design:paramtypes", [ChangeDetectorRef, ElementRef, NgZone])
1209
2688
  ], BqTooltip);
1210
2689
  export { BqTooltip };
1211
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BqTooltip, decorators: [{
2690
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BqTooltip, decorators: [{
1212
2691
  type: Component,
1213
2692
  args: [{
1214
2693
  selector: 'bq-tooltip',
@@ -1218,4 +2697,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
1218
2697
  inputs: ['alwaysVisible', 'displayOn', 'distance', 'hideArrow', 'placement', 'sameWidth', 'visible'],
1219
2698
  }]
1220
2699
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1221
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2JlZXEtYW5ndWxhci9zcmMvZGlyZWN0aXZlcy9jb21wb25lbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxvQkFBb0I7QUFDcEIsOENBQThDO0FBQzlDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFnQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFeEgsT0FBTyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7QUFlaEUsSUFBTSxXQUFXLEdBQWpCLE1BQU0sV0FBVztJQUVxQztJQURqRCxFQUFFLENBQWM7SUFDMUIsWUFBWSxDQUFvQixFQUFFLENBQWEsRUFBWSxDQUFTO1FBQVQsTUFBQyxHQUFELENBQUMsQ0FBUTtRQUNsRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDWCxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxhQUFhLENBQUM7UUFDMUIsWUFBWSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDO0lBQ3pHLENBQUM7MEhBTlUsV0FBVzs4R0FBWCxXQUFXLGtNQUpaLDJCQUEyQjs7QUFJMUIsV0FBVztJQVZ2QixRQUFRLENBQUM7UUFDUixNQUFNLEVBQUUsQ0FBQyxZQUFZLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQztLQUNoRixDQUFDO3FDQVVlLGlCQUFpQixFQUFLLFVBQVUsRUFBZSxNQUFNO0dBRnpELFdBQVcsQ0FPdkI7OzJGQVBZLFdBQVc7a0JBUHZCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGNBQWM7b0JB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LFdBQVcsRUFBRSxXQUFXLEVBQUUsU0FBUyxDQUFDO2lCQUNyRyIsInNvdXJjZXNDb250ZW50IjpbIi8qIHRzbGludDpkaXNhYmxlICovXG4vKiBhdXRvLWdlbmVyYXRlZCBhbmd1bGFyIGRpcmVjdGl2ZSBwcm94aWVzICovXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgUHJveHlDbXAsIHByb3h5T3V0cHV0cyB9IGZyb20gJy4vYW5ndWxhci1jb21wb25lbnQtbGliL3V0aWxzJztcblxuaW1wb3J0IHsgQ29tcG9uZW50cyB9IGZyb20gJ0BiZWVxL2NvcmUnO1xuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhcHBlYXJhbmNlJywgJ2Rpc2FibGVkJywgJ2V4cGFuZGVkJywgJ25vQW5pbWF0aW9uJywgJ3JvdGF0ZScsICdzaXplJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicS1hY2NvcmRpb24nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2FwcGVhcmFuY2UnLCAnZGlzYWJsZWQnLCAnZXhwYW5kZWQnLCAnbm9BbmltYXRpb24nLCAncm90YXRlJywgJ3NpemUnXSxcbn0pXG5leHBvcnQgY2xhc3MgQnFBY2NvcmRpb24ge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydicUJsdXInLCAnYnFGb2N1cycsICdicU9wZW4nLCAnYnFBZnRlck9wZW4nLCAnYnFDbG9zZScsICdicUFmdGVyQ2xvc2UnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQnFBY2NvcmRpb24gZXh0ZW5kcyBDb21wb25lbnRzLkJxQWNjb3JkaW9uIHtcbiAgLyoqXG4gICAqIEhhbmRsZXIgdG8gYmUgY2FsbGVkIHdoZW4gdGhlIGFjY29yZGlvbiBsb3NlcyBmb2N1c1xuICAgKi9cbiAgYnFCbHVyOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTEJxQWNjb3JkaW9uRWxlbWVudD4+O1xuICAvKipcbiAgICogSGFuZGxlciB0byBiZSBjYWxsZWQgd2hlbiB0aGUgYWNjb3JkaW9uIGdldHMgZm9jdXNcbiAgICovXG4gIGJxRm9jdXM6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxIVE1MQnFBY2NvcmRpb25FbGVtZW50Pj47XG4gIC8qKlxuICAgKiBIYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBhY2NvcmRpb24gaXMgb3BlbmVkXG4gICAqL1xuICBicU9wZW46IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxIVE1MQnFBY2NvcmRpb25FbGVtZW50Pj47XG4gIC8qKlxuICAgKiBIYW5kbGVyIHRvIGJlIGNhbGxlZCBhZnRlciB0aGUgYWNjb3JkaW9uIGlzIG9wZW5lZFxuICAgKi9cbiAgYnFBZnRlck9wZW46IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxIVE1MQnFBY2NvcmRpb25FbGVtZW50Pj47XG4gIC8qKlxuICAgKiBIYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBhY2NvcmRpb24gaXMgY2xvc2VkXG4gICAqL1xuICBicUNsb3NlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTEJxQWNjb3JkaW9uRWxlbWVudD4+O1xuICAvKipcbiAgICogSGFuZGxlciB0byBiZSBjYWxsZWQgYWZ0ZXIgdGhlIGFjY29yZGlvbiBpcyBjbG9zZWRcbiAgICovXG4gIGJxQWZ0ZXJDbG9zZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcUFjY29yZGlvbkVsZW1lbnQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYXBwZWFyYW5jZScsICdleHBhbmRBbGwnLCAnbXVsdGlwbGUnLCAnbm9BbmltYXRpb24nLCAnc2l6ZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYnEtYWNjb3JkaW9uLWdyb3VwJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhcHBlYXJhbmNlJywgJ2V4cGFuZEFsbCcsICdtdWx0aXBsZScsICdub0FuaW1hdGlvbicsICdzaXplJ10sXG59KVxuZXhwb3J0IGNsYXNzIEJxQWNjb3JkaW9uR3JvdXAge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBCcUFjY29yZGlvbkdyb3VwIGV4dGVuZHMgQ29tcG9uZW50cy5CcUFjY29yZGlvbkdyb3VwIHt9XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2F1dG9EaXNtaXNzJywgJ2JvcmRlcicsICdkaXNhYmxlQ2xvc2UnLCAnaGlkZUljb24nLCAnb3BlbicsICdzdGlja3knLCAndGltZScsICd0eXBlJ10sXG4gIG1ldGhvZHM6IFsnaGlkZScsICdzaG93J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicS1hbGVydCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYXV0b0Rpc21pc3MnLCAnYm9yZGVyJywgJ2Rpc2FibGVDbG9zZScsICdoaWRlSWNvbicsICdvcGVuJywgJ3N0aWNreScsICd0aW1lJywgJ3R5cGUnXSxcbn0pXG5leHBvcnQgY2xhc3MgQnFBbGVydCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ2JxSGlkZScsICdicVNob3cnLCAnYnFBZnRlclNob3cnLCAnYnFBZnRlckhpZGUnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQnFBbGVydCBleHRlbmRzIENvbXBvbmVudHMuQnFBbGVydCB7XG4gIC8qKlxuICAgKiBDYWxsYmFjayBoYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBhbGVydCBpcyBoaWRkZW5cbiAgICovXG4gIGJxSGlkZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuICAvKipcbiAgICogQ2FsbGJhY2sgaGFuZGxlciB0byBiZSBjYWxsZWQgd2hlbiB0aGUgYWxlcnQgaXMgc2hvd25cbiAgICovXG4gIGJxU2hvdzogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuICAvKipcbiAgICogQ2FsbGJhY2sgaGFuZGxlciB0byBiZSBjYWxsZWQgYWZ0ZXIgdGhlIGFsZXJ0IGhhcyBiZWVuIHNob3duXG4gICAqL1xuICBicUFmdGVyU2hvdzogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuICAvKipcbiAgICogQ2FsbGJhY2sgaGFuZGxlciB0byBiZSBjYWxsZWQgYWZ0ZXIgdGhlIGFsZXJ0IGhhcyBiZWVuIGhpZGRlblxuICAgKi9cbiAgYnFBZnRlckhpZGU6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYWx0VGV4dCcsICdpbWFnZScsICdpbml0aWFscycsICdsYWJlbCcsICdzaGFwZScsICdzaXplJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicS1hdmF0YXInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2FsdFRleHQnLCAnaW1hZ2UnLCAnaW5pdGlhbHMnLCAnbGFiZWwnLCAnc2hhcGUnLCAnc2l6ZSddLFxufSlcbmV4cG9ydCBjbGFzcyBCcUF2YXRhciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEJxQXZhdGFyIGV4dGVuZHMgQ29tcG9uZW50cy5CcUF2YXRhciB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydiYWNrZ3JvdW5kQ29sb3InLCAnc2l6ZScsICd0ZXh0Q29sb3InXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JxLWJhZGdlJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydiYWNrZ3JvdW5kQ29sb3InLCAnc2l6ZScsICd0ZXh0Q29sb3InXSxcbn0pXG5leHBvcnQgY2xhc3MgQnFCYWRnZSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEJxQmFkZ2UgZXh0ZW5kcyBDb21wb25lbnRzLkJxQmFkZ2Uge31cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYXJpYUxhYmVsJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicS1icmVhZGNydW1iJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhcmlhTGFiZWwnXSxcbn0pXG5leHBvcnQgY2xhc3MgQnFCcmVhZGNydW1iIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnYnFCcmVhZGNydW1iQmx1cicsICdicUJyZWFkY3J1bWJGb2N1cycsICdicUJyZWFkY3J1bWJDbGljayddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBCcUJyZWFkY3J1bWIgZXh0ZW5kcyBDb21wb25lbnRzLkJxQnJlYWRjcnVtYiB7XG4gIC8qKlxuICAgKiBIYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIGBicS1icmVhZGNydW1iLWl0ZW1gIGl0ZW0gbG9zZXMgZm9jdXMuXG4gICAqL1xuICBicUJyZWFkY3J1bWJCbHVyOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTEJxQnJlYWRjcnVtYkl0ZW1FbGVtZW50Pj47XG4gIC8qKlxuICAgKiBIYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIGBicS1icmVhZGNydW1iLWl0ZW1gIGl0ZW0gZ2V0cyBmb2N1cy5cbiAgICovXG4gIGJxQnJlYWRjcnVtYkZvY3VzOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTEJxQnJlYWRjcnVtYkl0ZW1FbGVtZW50Pj47XG4gIC8qKlxuICAgKiBIYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIGBicS1icmVhZGNydW1iLWl0ZW1gIGlzIHNlbGVjdGVkIChvbiBjbGljay9lbnRlciBwcmVzcykuXG4gICAqL1xuICBicUJyZWFkY3J1bWJDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcUJyZWFkY3J1bWJJdGVtRWxlbWVudD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhcmlhTGFiZWwnLCAnaHJlZicsICdpc0xhc3RJdGVtJywgJ3JlbCcsICd0YXJnZXQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JxLWJyZWFkY3J1bWItaXRlbScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYXJpYUxhYmVsJywgJ2hyZWYnLCAnaXNMYXN0SXRlbScsICdyZWwnLCAndGFyZ2V0J10sXG59KVxuZXhwb3J0IGNsYXNzIEJxQnJlYWRjcnVtYkl0ZW0ge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydicUJsdXInLCAnYnFGb2N1cycsICdicUNsaWNrJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEJxQnJlYWRjcnVtYkl0ZW0gZXh0ZW5kcyBDb21wb25lbnRzLkJxQnJlYWRjcnVtYkl0ZW0ge1xuICAvKipcbiAgICogSGFuZGxlciB0byBiZSBjYWxsZWQgd2hlbiBpdGVtIGxvc2VzIGZvY3VzXG4gICAqL1xuICBicUJsdXI6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxIVE1MQnFCcmVhZGNydW1iSXRlbUVsZW1lbnQ+PjtcbiAgLyoqXG4gICAqIEhhbmRsZXIgdG8gYmUgY2FsbGVkIHdoZW4gaXRlbSBpcyBmb2N1c2VkXG4gICAqL1xuICBicUZvY3VzOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTEJxQnJlYWRjcnVtYkl0ZW1FbGVtZW50Pj47XG4gIC8qKlxuICAgKiBIYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIGl0ZW0gaXMgY2xpY2tlZFxuICAgKi9cbiAgYnFDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcUJyZWFkY3J1bWJJdGVtRWxlbWVudD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhcHBlYXJhbmNlJywgJ2Jsb2NrJywgJ2JvcmRlcicsICdkaXNhYmxlZCcsICdkb3dubG9hZCcsICdocmVmJywgJ2p1c3RpZnlDb250ZW50JywgJ2xvYWRpbmcnLCAnc2l6ZScsICd0YXJnZXQnLCAndHlwZScsICd2YXJpYW50J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicS1idXR0b24nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2FwcGVhcmFuY2UnLCAnYmxvY2snLCAnYm9yZGVyJywgJ2Rpc2FibGVkJywgJ2Rvd25sb2FkJywgJ2hyZWYnLCAnanVzdGlmeUNvbnRlbnQnLCAnbG9hZGluZycsICdzaXplJywgJ3RhcmdldCcsICd0eXBlJywgJ3ZhcmlhbnQnXSxcbn0pXG5leHBvcnQgY2xhc3MgQnFCdXR0b24ge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydicUJsdXInLCAnYnFGb2N1cycsICdicUNsaWNrJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEJxQnV0dG9uIGV4dGVuZHMgQ29tcG9uZW50cy5CcUJ1dHRvbiB7XG4gIC8qKlxuICAgKiBIYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBidXR0b24gbG9zZXMgZm9jdXNcbiAgICovXG4gIGJxQmx1cjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcUJ1dHRvbkVsZW1lbnQ+PjtcbiAgLyoqXG4gICAqIEhhbmRsZXIgdG8gYmUgY2FsbGVkIHdoZW4gdGhlIGJ1dHRvbiBpcyBjbGlja2VkXG4gICAqL1xuICBicUZvY3VzOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTEJxQnV0dG9uRWxlbWVudD4+O1xuICAvKipcbiAgICogSGFuZGxlciB0byBiZSBjYWxsZWQgd2hlbiBidXR0b24gZ2V0cyBmb2N1c1xuICAgKi9cbiAgYnFDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcUJ1dHRvbkVsZW1lbnQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYm9yZGVyJywgJ3R5cGUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JxLWNhcmQnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2JvcmRlcicsICd0eXBlJ10sXG59KVxuZXhwb3J0IGNsYXNzIEJxQ2FyZCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEJxQ2FyZCBleHRlbmRzIENvbXBvbmVudHMuQnFDYXJkIHt9XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2JhY2tncm91bmRPbkhvdmVyJywgJ2NoZWNrZWQnLCAnZGlzYWJsZWQnLCAnZm9ybUlkJywgJ2Zvcm1WYWxpZGF0aW9uTWVzc2FnZScsICdpbmRldGVybWluYXRlJywgJ25hbWUnLCAncmVxdWlyZWQnLCAndmFsdWUnXSxcbiAgbWV0aG9kczogWyd2Q2xpY2snLCAndkZvY3VzJywgJ3ZCbHVyJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicS1jaGVja2JveCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYmFja2dyb3VuZE9uSG92ZXInLCAnY2hlY2tlZCcsICdkaXNhYmxlZCcsICdmb3JtSWQnLCAnZm9ybVZhbGlkYXRpb25NZXNzYWdlJywgJ2luZGV0ZXJtaW5hdGUnLCAnbmFtZScsICdyZXF1aXJlZCcsICd2YWx1ZSddLFxufSlcbmV4cG9ydCBjbGFzcyBCcUNoZWNrYm94IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnYnFDaGFuZ2UnLCAnYnFGb2N1cycsICdicUJsdXInXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQnFDaGVja2JveCBleHRlbmRzIENvbXBvbmVudHMuQnFDaGVja2JveCB7XG4gIC8qKlxuICAgKiBIYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBjaGVja2JveCBzdGF0ZSBjaGFuZ2VzXG4gICAqL1xuICBicUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgY2hlY2tlZDogYm9vbGVhbiB9Pj47XG4gIC8qKlxuICAgKiBIYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBjaGVja2JveCBnZXRzIGZvY3VzXG4gICAqL1xuICBicUZvY3VzOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTEJxQ2hlY2tib3hFbGVtZW50Pj47XG4gIC8qKlxuICAgKiBIYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBjaGVja2JveCBsb3NlcyBmb2N1c1xuICAgKi9cbiAgYnFCbHVyOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTEJxQ2hlY2tib3hFbGVtZW50Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2F1dG9mb2N1cycsICdjbGVhckJ1dHRvbkxhYmVsJywgJ2Rpc2FibGVDbGVhcicsICdkaXNhYmxlZCcsICdkaXN0YW5jZScsICdmaXJzdERheU9mV2VlaycsICdmb3JtJywgJ2Zvcm1hdE9wdGlvbnMnLCAnaXNEYXRlRGlzYWxsb3dlZCcsICdsb2NhbGUnLCAnbWF4JywgJ21pbicsICdtb250aHMnLCAnbW9udGhzUGVyVmlldycsICduYW1lJywgJ29wZW4nLCAncGFuZWxIZWlnaHQnLCAncGxhY2Vob2xkZXInLCAncGxhY2VtZW50JywgJ3JlcXVpcmVkJywgJ3Nob3dPdXRzaWRlRGF5cycsICdza2lkZGluZycsICdzdHJhdGVneScsICd0ZW50YXRpdmUnLCAndHlwZScsICd2YWxpZGF0aW9uU3RhdHVzJywgJ3ZhbHVlJ10sXG4gIG1ldGhvZHM6IFsnY2xlYXInXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JxLWRhdGUtcGlja2VyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhdXRvZm9jdXMnLCAnY2xlYXJCdXR0b25MYWJlbCcsICdkaXNhYmxlQ2xlYXInLCAnZGlzYWJsZWQnLCAnZGlzdGFuY2UnLCAnZmlyc3REYXlPZldlZWsnLCAnZm9ybScsICdmb3JtYXRPcHRpb25zJywgJ2lzRGF0ZURpc2FsbG93ZWQnLCAnbG9jYWxlJywgJ21heCcsICdtaW4nLCAnbW9udGhzJywgJ21vbnRoc1BlclZpZXcnLCAnbmFtZScsICdvcGVuJywgJ3BhbmVsSGVpZ2h0JywgJ3BsYWNlaG9sZGVyJywgJ3BsYWNlbWVudCcsICdyZXF1aXJlZCcsICdzaG93T3V0c2lkZURheXMnLCAnc2tpZGRpbmcnLCAnc3RyYXRlZ3knLCAndGVudGF0aXZlJywgJ3R5cGUnLCAndmFsaWRhdGlvblN0YXR1cycsICd2YWx1ZSddLFxufSlcbmV4cG9ydCBjbGFzcyBCcURhdGVQaWNrZXIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydicUJsdXInLCAnYnFDaGFuZ2UnLCAnYnFDbGVhcicsICdicUZvY3VzJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEJxRGF0ZVBpY2tlciBleHRlbmRzIENvbXBvbmVudHMuQnFEYXRlUGlja2VyIHtcbiAgLyoqXG4gICAqIENhbGxiYWNrIGhhbmRsZXIgZW1pdHRlZCB3aGVuIHRoZSBpbnB1dCBsb3NlcyBmb2N1c1xuICAgKi9cbiAgYnFCbHVyOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTEJxRGF0ZVBpY2tlckVsZW1lbnQ+PjtcbiAgLyoqXG4gICAqIENhbGxiYWNrIGhhbmRsZXIgZW1pdHRlZCB3aGVuIHRoZSBpbnB1dCB2YWx1ZSBoYXMgY2hhbmdlZCBhbmQgdGhlIGlucHV0IGxvc2VzIGZvY3VzLlxuVGhpcyBoYW5kbGVyIGlzIGNhbGxlZCB3aGVuZXZlciB0aGUgdXNlciBmaW5pc2hlcyB0eXBpbmcgb3IgcGFzdGluZyB0ZXh0IGludG8gdGhlIGlucHV0IGZpZWxkIGFuZCB0aGVuIGNsaWNrcyBvdXRzaWRlIG9mIHRoZSBpbnB1dCBmaWVsZC5cbiAgICovXG4gIGJxQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyB2YWx1ZTogc3RyaW5nOyBlbDogSFRNTEJxRGF0ZVBpY2tlckVsZW1lbnQgfT4+O1xuICAvKipcbiAgICogQ2FsbGJhY2sgaGFuZGxlciBlbWl0dGVkIHdoZW4gdGhlIGlucHV0IHZhbHVlIGhhcyBiZWVuIGNsZWFyZWRcbiAgICovXG4gIGJxQ2xlYXI6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxIVE1MQnFEYXRlUGlja2VyRWxlbWVudD4+O1xuICAvKipcbiAgICogQ2FsbGJhY2sgaGFuZGxlciBlbWl0dGVkIHdoZW4gdGhlIGlucHV0IGhhcyByZWNlaXZlZCBmb2N1c1xuICAgKi9cbiAgYnFGb2N1czogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcURhdGVQaWNrZXJFbGVtZW50Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2JvcmRlcicsICdkaXNhYmxlQmFja2Ryb3AnLCAnZGlzYWJsZUNsb3NlQ2xpY2tPdXRzaWRlJywgJ2Rpc2FibGVDbG9zZUVzY0tleWRvd24nLCAnZm9vdGVyQXBwZWFyYW5jZScsICdoaWRlQ2xvc2VCdXR0b24nLCAnb3BlbicsICdzaXplJ10sXG4gIG1ldGhvZHM6IFsnc2hvdycsICdoaWRlJywgJ2NhbmNlbCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYnEtZGlhbG9nJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydib3JkZXInLCAnZGlzYWJsZUJhY2tkcm9wJywgJ2Rpc2FibGVDbG9zZUNsaWNrT3V0c2lkZScsICdkaXNhYmxlQ2xvc2VFc2NLZXlkb3duJywgJ2Zvb3RlckFwcGVhcmFuY2UnLCAnaGlkZUNsb3NlQnV0dG9uJywgJ29wZW4nLCAnc2l6ZSddLFxufSlcbmV4cG9ydCBjbGFzcyBCcURpYWxvZyB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ2JxQ2FuY2VsJywgJ2JxQ2xvc2UnLCAnYnFPcGVuJywgJ2JxQWZ0ZXJPcGVuJywgJ2JxQWZ0ZXJDbG9zZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBCcURpYWxvZyBleHRlbmRzIENvbXBvbmVudHMuQnFEaWFsb2cge1xuICAvKipcbiAgICogQ2FsbGJhY2sgaGFuZGxlciBlbWl0dGVkIHdoZW4gdGhlIGRpYWxvZyBoYXMgYmVlbiBjYW5jZWxlZCBvciBkaXNtaXNzZWRcbiAgICovXG4gIGJxQ2FuY2VsOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xuICAvKipcbiAgICogQ2FsbGJhY2sgaGFuZGxlciBlbWl0dGVkIHdoZW4gdGhlIGRpYWxvZyB3aWxsIGNsb3NlXG4gICAqL1xuICBicUNsb3NlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xuICAvKipcbiAgICogQ2FsbGJhY2sgaGFuZGxlciBlbWl0dGVkIHdoZW4gdGhlIGRpYWxvZyB3aWxsIG9wZW5cbiAgICovXG4gIGJxT3BlbjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIENhbGxiYWNrIGhhbmRsZXIgZW1pdHRlZCB3aGVuIHRoZSBkaWFsb2cgZmluaXNoIG9wZW5pbmdcbiAgICovXG4gIGJxQWZ0ZXJPcGVuOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xuICAvKipcbiAgICogQ2FsbGJhY2sgaGFuZGxlciBlbWl0dGVkIHdoZW4gdGhlIGRpYWxvZyBmaW5pc2ggY2xvc2luZ1xuICAgKi9cbiAgYnFBZnRlckNsb3NlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydkYXNoZWQnLCAnb3JpZW50YXRpb24nLCAnc3Ryb2tlQmFzaXMnLCAnc3Ryb2tlQ29sb3InLCAnc3Ryb2tlRGFzaEdhcCcsICdzdHJva2VEYXNoV2lkdGgnLCAnc3Ryb2tlTGluZWNhcCcsICdzdHJva2VUaGlja25lc3MnLCAndGl0bGVBbGlnbm1lbnQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JxLWRpdmlkZXInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2Rhc2hlZCcsICdvcmllbnRhdGlvbicsICdzdHJva2VCYXNpcycsICdzdHJva2VDb2xvcicsICdzdHJva2VEYXNoR2FwJywgJ3N0cm9rZURhc2hXaWR0aCcsICdzdHJva2VMaW5lY2FwJywgJ3N0cm9rZVRoaWNrbmVzcycsICd0aXRsZUFsaWdubWVudCddLFxufSlcbmV4cG9ydCBjbGFzcyBCcURpdmlkZXIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBCcURpdmlkZXIgZXh0ZW5kcyBDb21wb25lbnRzLkJxRGl2aWRlciB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydjbG9zZU9uQ2xpY2tPdXRzaWRlJywgJ2Nsb3NlT25Fc2MnLCAnZW5hYmxlQmFja2Ryb3AnLCAnb3BlbicsICdwbGFjZW1lbnQnLCAncG9zaXRpb24nXSxcbiAgbWV0aG9kczogWydoaWRlJywgJ3Nob3cnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JxLWRyYXdlcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnY2xvc2VPbkNsaWNrT3V0c2lkZScsICdjbG9zZU9uRXNjJywgJ2VuYWJsZUJhY2tkcm9wJywgJ29wZW4nLCAncGxhY2VtZW50JywgJ3Bvc2l0aW9uJ10sXG59KVxuZXhwb3J0IGNsYXNzIEJxRHJhd2VyIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnYnFDbG9zZScsICdicU9wZW4nLCAnYnFBZnRlck9wZW4nLCAnYnFBZnRlckNsb3NlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEJxRHJhd2VyIGV4dGVuZHMgQ29tcG9uZW50cy5CcURyYXdlciB7XG4gIC8qKlxuICAgKiBDYWxsYmFjayBoYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBkcmF3ZXIgaXMgY2xvc2VkXG4gICAqL1xuICBicUNsb3NlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8YW55Pj47XG4gIC8qKlxuICAgKiBDYWxsYmFjayBoYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBkcmF3ZXIgaXMgb3BlbmVkXG4gICAqL1xuICBicU9wZW46IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcbiAgLyoqXG4gICAqIENhbGxiYWNrIGhhbmRsZXIgdG8gYmUgY2FsbGVkIGFmdGVyIHRoZSBkcmF3ZXIgaGFzIGJlZW4gb3BlbmVkXG4gICAqL1xuICBicUFmdGVyT3BlbjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuICAvKipcbiAgICogQ2FsbGJhY2sgaGFuZGxlciB0byBiZSBjYWxsZWQgYWZ0ZXIgdGhlIGRyYXdlciBoYXMgYmVlbiBjbG9zZWRcbiAgICovXG4gIGJxQWZ0ZXJDbG9zZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydkaXNhYmxlZCcsICdkaXN0YW5jZScsICdrZWVwT3Blbk9uU2VsZWN0JywgJ29wZW4nLCAncGFuZWxIZWlnaHQnLCAncGxhY2VtZW50JywgJ3NhbWVXaWR0aCcsICdza2lkZGluZycsICdzdHJhdGVneSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYnEtZHJvcGRvd24nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2Rpc2FibGVkJywgJ2Rpc3RhbmNlJywgJ2tlZXBPcGVuT25TZWxlY3QnLCAnb3BlbicsICdwYW5lbEhlaWdodCcsICdwbGFjZW1lbnQnLCAnc2FtZVdpZHRoJywgJ3NraWRkaW5nJywgJ3N0cmF0ZWd5J10sXG59KVxuZXhwb3J0IGNsYXNzIEJxRHJvcGRvd24ge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydicU9wZW4nXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQnFEcm9wZG93biBleHRlbmRzIENvbXBvbmVudHMuQnFEcm9wZG93biB7XG4gIC8qKlxuICAgKiBDYWxsYmFjayBoYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBkcm9wZG93biBwYW5lbCBpcyBvcGVuZWQgb3IgY2xvc2VkLlxuICAgKi9cbiAgYnFPcGVuOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBvcGVuOiBib29sZWFuIH0+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnc2l6ZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYnEtZW1wdHktc3RhdGUnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ3NpemUnXSxcbn0pXG5leHBvcnQgY2xhc3MgQnFFbXB0eVN0YXRlIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQnFFbXB0eVN0YXRlIGV4dGVuZHMgQ29tcG9uZW50cy5CcUVtcHR5U3RhdGUge31cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnY29sb3InLCAnbGFiZWwnLCAnbmFtZScsICdzaXplJywgJ3NyYycsICd3ZWlnaHQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JxLWljb24nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2NvbG9yJywgJ2xhYmVsJywgJ25hbWUnLCAnc2l6ZScsICdzcmMnLCAnd2VpZ2h0J10sXG59KVxuZXhwb3J0IGNsYXNzIEJxSWNvbiB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3N2Z0xvYWRlZCddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBCcUljb24gZXh0ZW5kcyBDb21wb25lbnRzLkJxSWNvbiB7XG4gIC8qKlxuICAgKiBDYWxsYmFjayBoYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBTVkcgaGFzIGxvYWRlZFxuICAgKi9cbiAgc3ZnTG9hZGVkOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8YW55Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2F1dG9jYXBpdGFsaXplJywgJ2F1dG9jb21wbGV0ZScsICdhdXRvY29ycmVjdCcsICdhdXRvZm9jdXMnLCAnY2xlYXJCdXR0b25MYWJlbCcsICdkZWJvdW5jZVRpbWUnLCAnZGlzYWJsZUNsZWFyJywgJ2Rpc2FibGVkJywgJ2Zvcm0nLCAnaW5wdXRtb2RlJywgJ21heCcsICdtYXhsZW5ndGgnLCAnbWluJywgJ21pbmxlbmd0aCcsICduYW1lJywgJ3BhdHRlcm4nLCAncGxhY2Vob2xkZXInLCAncmVhZG9ubHknLCAncmVxdWlyZWQnLCAnc3RlcCcsICd0eXBlJywgJ3ZhbGlkYXRpb25TdGF0dXMnLCAndmFsdWUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JxLWlucHV0JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhdXRvY2FwaXRhbGl6ZScsICdhdXRvY29tcGxldGUnLCAnYXV0b2NvcnJlY3QnLCAnYXV0b2ZvY3VzJywgJ2NsZWFyQnV0dG9uTGFiZWwnLCAnZGVib3VuY2VUaW1lJywgJ2Rpc2FibGVDbGVhcicsICdkaXNhYmxlZCcsICdmb3JtJywgJ2lucHV0bW9kZScsICdtYXgnLCAnbWF4bGVuZ3RoJywgJ21pbicsICdtaW5sZW5ndGgnLCAnbmFtZScsICdwYXR0ZXJuJywgJ3BsYWNlaG9sZGVyJywgJ3JlYWRvbmx5JywgJ3JlcXVpcmVkJywgJ3N0ZXAnLCAndHlwZScsICd2YWxpZGF0aW9uU3RhdHVzJywgJ3ZhbHVlJ10sXG59KVxuZXhwb3J0IGNsYXNzIEJxSW5wdXQge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydicUJsdXInLCAnYnFDaGFuZ2UnLCAnYnFDbGVhcicsICdicUZvY3VzJywgJ2JxSW5wdXQnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQnFJbnB1dCBleHRlbmRzIENvbXBvbmVudHMuQnFJbnB1dCB7XG4gIC8qKlxuICAgKiBDYWxsYmFjayBoYW5kbGVyIGVtaXR0ZWQgd2hlbiB0aGUgaW5wdXQgbG9zZXMgZm9jdXNcbiAgICovXG4gIGJxQmx1cjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcUlucHV0RWxlbWVudD4+O1xuICAvKipcbiAgICogQ2FsbGJhY2sgaGFuZGxlciBlbWl0dGVkIHdoZW4gdGhlIGlucHV0IHZhbHVlIGhhcyBjaGFuZ2VkIGFuZCB0aGUgaW5wdXQgbG9zZXMgZm9jdXMuXG5UaGlzIGhhbmRsZXIgaXMgY2FsbGVkIHdoZW5ldmVyIHRoZSB1c2VyIGZpbmlzaGVzIHR5cGluZyBvciBwYXN0aW5nIHRleHQgaW50byB0aGUgaW5wdXQgZmllbGQgYW5kIHRoZW4gY2xpY2tzIG91dHNpZGUgb2YgdGhlIGlucHV0IGZpZWxkLlxuICAgKi9cbiAgYnFDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBzdHJpbmdbXTsgZWw6IEhUTUxCcUlucHV0RWxlbWVudCB9Pj47XG4gIC8qKlxuICAgKiBDYWxsYmFjayBoYW5kbGVyIGVtaXR0ZWQgd2hlbiB0aGUgaW5wdXQgdmFsdWUgaGFzIGJlZW4gY2xlYXJlZFxuICAgKi9cbiAgYnFDbGVhcjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcUlucHV0RWxlbWVudD4+O1xuICAvKipcbiAgICogQ2FsbGJhY2sgaGFuZGxlciBlbWl0dGVkIHdoZW4gdGhlIGlucHV0IGhhcyByZWNlaXZlZCBmb2N1c1xuICAgKi9cbiAgYnFGb2N1czogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcUlucHV0RWxlbWVudD4+O1xuICAvKipcbiAgICogQ2FsbGJhY2sgaGFuZGxlciBlbWl0dGVkIHdoZW4gdGhlIGlucHV0IHZhbHVlIGNoYW5nZXMuXG5UaGlzIGhhbmRsZXIgaXMgY2FsbGVkIHdoZW5ldmVyIHRoZSB1c2VyIHR5cGVzIG9yIHBhc3RlcyB0ZXh0IGludG8gdGhlIGlucHV0IGZpZWxkLlxuICAgKi9cbiAgYnFJbnB1dDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgdmFsdWU6IHN0cmluZyB8IG51bWJlciB8IHN0cmluZ1tdOyBlbDogSFRNTEJxSW5wdXRFbGVtZW50IH0+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYXV0b0Rpc21pc3MnLCAnYm9yZGVyJywgJ2Rpc2FibGVDbG9zZScsICdoaWRlSWNvbicsICdvcGVuJywgJ3RpbWUnLCAndHlwZSddLFxuICBtZXRob2RzOiBbJ2hpZGUnLCAnc2hvdycsICd0b2FzdCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYnEtbm90aWZpY2F0aW9uJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhdXRvRGlzbWlzcycsICdib3JkZXInLCAnZGlzYWJsZUNsb3NlJywgJ2hpZGVJY29uJywgJ29wZW4nLCAndGltZScsICd0eXBlJ10sXG59KVxuZXhwb3J0IGNsYXNzIEJxTm90aWZpY2F0aW9uIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnYnFIaWRlJywgJ2JxU2hvdycsICdicUFmdGVyT3BlbicsICdicUFmdGVyQ2xvc2UnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQnFOb3RpZmljYXRpb24gZXh0ZW5kcyBDb21wb25lbnRzLkJxTm90aWZpY2F0aW9uIHtcbiAgLyoqXG4gICAqIENhbGxiYWNrIGhhbmRsZXIgdG8gYmUgY2FsbGVkIHdoZW4gdGhlIG5vdGlmaWNhdGlvbiBpcyBoaWRkZW5cbiAgICovXG4gIGJxSGlkZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuICAvKipcbiAgICogQ2FsbGJhY2sgaGFuZGxlciB0byBiZSBjYWxsZWQgd2hlbiB0aGUgbm90aWZpY2F0aW9uIGlzIHNob3duXG4gICAqL1xuICBicVNob3c6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcbiAgLyoqXG4gICAqIENhbGxiYWNrIGhhbmRsZXIgdG8gYmUgY2FsbGVkIGFmdGVyIHRoZSBub3RpZmljYXRpb24gaGFzIGJlZW4gb3BlbmVkXG4gICAqL1xuICBicUFmdGVyT3BlbjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuICAvKipcbiAgICogQ2FsbGJhY2sgaGFuZGxlciB0byBiZSBjYWxsZWQgYWZ0ZXIgdGhlIG5vdGlmaWNhdGlvbiBoYXMgYmVlbiBjbG9zZWRcbiAgICovXG4gIGJxQWZ0ZXJDbG9zZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydkaXNhYmxlZCcsICdoaWRkZW4nLCAnc2VsZWN0ZWQnLCAndmFsdWUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JxLW9wdGlvbicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnZGlzYWJsZWQnLCAnaGlkZGVuJywgJ3NlbGVjdGVkJywgJ3ZhbHVlJ10sXG59KVxuZXhwb3J0IGNsYXNzIEJxT3B0aW9uIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnYnFCbHVyJywgJ2JxRm9jdXMnLCAnYnFDbGljaycsICdicUVudGVyJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEJxT3B0aW9uIGV4dGVuZHMgQ29tcG9uZW50cy5CcU9wdGlvbiB7XG4gIC8qKlxuICAgKiBIYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIGl0ZW0gbG9zZXMgZm9jdXNcbiAgICovXG4gIGJxQmx1cjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcU9wdGlvbkVsZW1lbnQ+PjtcbiAgLyoqXG4gICAqIEhhbmRsZXIgdG8gYmUgY2FsbGVkIHdoZW4gaXRlbSBpcyBmb2N1c2VkXG4gICAqL1xuICBicUZvY3VzOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTEJxT3B0aW9uRWxlbWVudD4+O1xuICAvKipcbiAgICogSGFuZGxlciB0byBiZSBjYWxsZWQgd2hlbiBpdGVtIGlzIGNsaWNrZWRcbiAgICovXG4gIGJxQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxIVE1MQnFPcHRpb25FbGVtZW50Pj47XG4gIC8qKlxuICAgKiBIYW5kbGVyIHRvIGJlIGNhbGxlZCBvbiBlbnRlciBrZXkgcHJlc3NcbiAgICovXG4gIGJxRW50ZXI6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxIVE1MQnFPcHRpb25FbGVtZW50Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicS1vcHRpb24tZ3JvdXAnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgQnFPcHRpb25Hcm91cCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEJxT3B0aW9uR3JvdXAgZXh0ZW5kcyBDb21wb25lbnRzLkJxT3B0aW9uR3JvdXAge31cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYXJpYUxhYmVsJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicS1vcHRpb24tbGlzdCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYXJpYUxhYmVsJ10sXG59KVxuZXhwb3J0IGNsYXNzIEJxT3B0aW9uTGlzdCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ2JxU2VsZWN0J10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEJxT3B0aW9uTGlzdCBleHRlbmRzIENvbXBvbmVudHMuQnFPcHRpb25MaXN0IHtcbiAgLyoqXG4gICAqIEhhbmRsZXIgdG8gYmUgY2FsbGVkIHdoZW4gYGJxLW9wdGlvbmAgaXMgc2VsZWN0ZWQgKG9uIGNsaWNrL2VudGVyIHByZXNzKS5cbiAgICovXG4gIGJxU2VsZWN0OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyB2YWx1ZTogc3RyaW5nOyBpdGVtOiBIVE1MQnFPcHRpb25FbGVtZW50IH0+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JxLXBhZ2UtdGl0bGUnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgQnFQYWdlVGl0bGUge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBCcVBhZ2VUaXRsZSBleHRlbmRzIENvbXBvbmVudHMuQnFQYWdlVGl0bGUge31cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnZGlzdGFuY2UnLCAnb3BlbicsICdwbGFjZW1lbnQnLCAnc2FtZVdpZHRoJywgJ3NraWRkaW5nJywgJ3N0cmF0ZWd5J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicS1wYW5lbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnZGlzdGFuY2UnLCAnb3BlbicsICdwbGFjZW1lbnQnLCAnc2FtZVdpZHRoJywgJ3NraWRkaW5nJywgJ3N0cmF0ZWd5J10sXG59KVxuZXhwb3J0IGNsYXNzIEJxUGFuZWwge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBCcVBhbmVsIGV4dGVuZHMgQ29tcG9uZW50cy5CcVBhbmVsIHt9XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2JvcmRlclNoYXBlJywgJ2VuYWJsZVRvb2x0aXAnLCAnaW5kZXRlcm1pbmF0ZScsICdsYWJlbCcsICd0aGlja25lc3MnLCAndHlwZScsICd2YWx1ZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYnEtcHJvZ3Jlc3MnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2JvcmRlclNoYXBlJywgJ2VuYWJsZVRvb2x0aXAnLCAnaW5kZXRlcm1pbmF0ZScsICdsYWJlbCcsICd0aGlja25lc3MnLCAndHlwZScsICd2YWx1ZSddLFxufSlcbmV4cG9ydCBjbGFzcyBCcVByb2dyZXNzIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQnFQcm9ncmVzcyBleHRlbmRzIENvbXBvbmVudHMuQnFQcm9ncmVzcyB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydiYWNrZ3JvdW5kT25Ib3ZlcicsICdjaGVja2VkJywgJ2Rpc2FibGVkJywgJ2Zvcm1JZCcsICduYW1lJywgJ3JlcXVpcmVkJywgJ3ZhbHVlJ10sXG4gIG1ldGhvZHM6IFsndkNsaWNrJywgJ3ZGb2N1cycsICd2Qmx1ciddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYnEtcmFkaW8nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2JhY2tncm91bmRPbkhvdmVyJywgJ2NoZWNrZWQnLCAnZGlzYWJsZWQnLCAnZm9ybUlkJywgJ25hbWUnLCAncmVxdWlyZWQnLCAndmFsdWUnXSxcbn0pXG5leHBvcnQgY2xhc3MgQnFSYWRpbyB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ2JxQ2xpY2snLCAnYnFGb2N1cycsICdicUJsdXInLCAnYnFLZXlEb3duJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEJxUmFkaW8gZXh0ZW5kcyBDb21wb25lbnRzLkJxUmFkaW8ge1xuICAvKipcbiAgICogSGFuZGxlciB0byBiZSBjYWxsZWQgd2hlbiB0aGUgcmFkaW8gc3RhdGUgY2hhbmdlc1xuICAgKi9cbiAgYnFDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcVJhZGlvRWxlbWVudD4+O1xuICAvKipcbiAgICogSGFuZGxlciB0byBiZSBjYWxsZWQgd2hlbiB0aGUgcmFkaW8gZ2V0cyBmb2N1c1xuICAgKi9cbiAgYnFGb2N1czogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcVJhZGlvRWxlbWVudD4+O1xuICAvKipcbiAgICogSGFuZGxlciB0byBiZSBjYWxsZWQgd2hlbiB0aGUgcmFkaW8gbG9zZXMgZm9jdXNcbiAgICovXG4gIGJxQmx1cjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcVJhZGlvRWxlbWVudD4+O1xuICAvKipcbiAgICogSGFuZGxlciB0byBiZSBjYWxsZWQgd2hlbiB0aGUgcmFkaW8ga2V5IGlzIHByZXNzZWRcbiAgICovXG4gIGJxS2V5RG93bjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEtleWJvYXJkRXZlbnQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYmFja2dyb3VuZE9uSG92ZXInLCAnZGVib3VuY2VUaW1lJywgJ2Rpc2FibGVkJywgJ2ZpZWxkc2V0JywgJ25hbWUnLCAnb3JpZW50YXRpb24nLCAndmFsdWUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JxLXJhZGlvLWdyb3VwJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydiYWNrZ3JvdW5kT25Ib3ZlcicsICdkZWJvdW5jZVRpbWUnLCAnZGlzYWJsZWQnLCAnZmllbGRzZXQnLCAnbmFtZScsICdvcmllbnRhdGlvbicsICd2YWx1ZSddLFxufSlcbmV4cG9ydCBjbGFzcyBCcVJhZGlvR3JvdXAge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydicUNoYW5nZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBCcVJhZGlvR3JvdXAgZXh0ZW5kcyBDb21wb25lbnRzLkJxUmFkaW9Hcm91cCB7XG4gIC8qKlxuICAgKiBIYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSByYWRpbyBzdGF0ZSBjaGFuZ2VzXG4gICAqL1xuICBicUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgdmFsdWU6IHN0cmluZzsgdGFyZ2V0OiBIVE1MQnFSYWRpb0VsZW1lbnQgfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhdXRvZm9jdXMnLCAnY2xlYXJCdXR0b25MYWJlbCcsICdkZWJvdW5jZVRpbWUnLCAnZGlzYWJsZUNsZWFyJywgJ2Rpc2FibGVkJywgJ2Rpc3RhbmNlJywgJ2Zvcm0nLCAna2VlcE9wZW5PblNlbGVjdCcsICdtYXhUYWdzVmlzaWJsZScsICdtdWx0aXBsZScsICduYW1lJywgJ29wZW4nLCAncGFuZWxIZWlnaHQnLCAncGxhY2Vob2xkZXInLCAncGxhY2VtZW50JywgJ3JlYWRvbmx5JywgJ3JlcXVpcmVkJywgJ3NhbWVXaWR0aCcsICdza2lkZGluZycsICdzdHJhdGVneScsICd2YWxpZGF0aW9uU3RhdHVzJywgJ3ZhbHVlJ10sXG4gIG1ldGhvZHM6IFsnY2xlYXInXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JxLXNlbGVjdCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYXV0b2ZvY3VzJywgJ2NsZWFyQnV0dG9uTGFiZWwnLCAnZGVib3VuY2VUaW1lJywgJ2Rpc2FibGVDbGVhcicsICdkaXNhYmxlZCcsICdkaXN0YW5jZScsICdmb3JtJywgJ2tlZXBPcGVuT25TZWxlY3QnLCAnbWF4VGFnc1Zpc2libGUnLCAnbXVsdGlwbGUnLCAnbmFtZScsICdvcGVuJywgJ3BhbmVsSGVpZ2h0JywgJ3BsYWNlaG9sZGVyJywgJ3BsYWNlbWVudCcsICdyZWFkb25seScsICdyZXF1aXJlZCcsICdzYW1lV2lkdGgnLCAnc2tpZGRpbmcnLCAnc3RyYXRlZ3knLCAndmFsaWRhdGlvblN0YXR1cycsICd2YWx1ZSddLFxufSlcbmV4cG9ydCBjbGFzcyBCcVNlbGVjdCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ2JxQmx1cicsICdicUNsZWFyJywgJ2JxRm9jdXMnLCAnYnFTZWxlY3QnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQnFTZWxlY3QgZXh0ZW5kcyBDb21wb25lbnRzLkJxU2VsZWN0IHtcbiAgLyoqXG4gICAqIENhbGxiYWNrIGhhbmRsZXIgZW1pdHRlZCB3aGVuIHRoZSBTZWxlY3QgaW5wdXQgbG9zZXMgZm9jdXNcbiAgICovXG4gIGJxQmx1cjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcVNlbGVjdEVsZW1lbnQ+PjtcbiAgLyoqXG4gICAqIENhbGxiYWNrIGhhbmRsZXIgZW1pdHRlZCB3aGVuIHRoZSBzZWxlY3RlZCB2YWx1ZSBoYXMgYmVlbiBjbGVhcmVkXG4gICAqL1xuICBicUNsZWFyOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTEJxU2VsZWN0RWxlbWVudD4+O1xuICAvKipcbiAgICogQ2FsbGJhY2sgaGFuZGxlciBlbWl0dGVkIHdoZW4gdGhlIFNlbGVjdCBpbnB1dCBoYXMgcmVjZWl2ZWQgZm9jdXNcbiAgICovXG4gIGJxRm9jdXM6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxIVE1MQnFTZWxlY3RFbGVtZW50Pj47XG4gIC8qKlxuICAgKiBDYWxsYmFjayBoYW5kbGVyIGVtaXR0ZWQgd2hlbiB0aGUgc2VsZWN0ZWQgdmFsdWUgaGFzIGNoYW5nZWRcbiAgICovXG4gIGJxU2VsZWN0OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgc3RyaW5nW107IGl0ZW06IEhUTUxCcU9wdGlvbkVsZW1lbnQgfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhcHBlYXJhbmNlJywgJ2NvbGxhcHNlJywgJ3NpemUnXSxcbiAgbWV0aG9kczogWyd0b2dnbGVDb2xsYXBzZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYnEtc2lkZS1tZW51JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhcHBlYXJhbmNlJywgJ2NvbGxhcHNlJywgJ3NpemUnXSxcbn0pXG5leHBvcnQgY2xhc3MgQnFTaWRlTWVudSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ2JxQ29sbGFwc2UnLCAnYnFTZWxlY3QnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQnFTaWRlTWVudSBleHRlbmRzIENvbXBvbmVudHMuQnFTaWRlTWVudSB7XG4gIC8qKlxuICAgKiBDYWxsYmFjayBoYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBTaWRlIG1lbnUgY2hhbmdlcyBpdHMgd2lkdGggZnJvbSBleHBhbmRlZCB0byBjb2xsYXBzZSBhbmQgdmljZSB2ZXJzYVxuICAgKi9cbiAgYnFDb2xsYXBzZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgY29sbGFwc2U6IGJvb2xlYW4gfT4+O1xuICAvKipcbiAgICogQ2FsbGJhY2sgaGFuZGxlciB0byBiZSBjYWxsZWQgd2hlbiB0aGUgYWN0aXZlL3NlbGVjdGVkIG1lbnUgaXRlbSBjaGFuZ2VzXG4gICAqL1xuICBicVNlbGVjdDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcVNpZGVNZW51SXRlbUVsZW1lbnQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYWN0aXZlJywgJ2NvbGxhcHNlJywgJ2Rpc2FibGVkJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicS1zaWRlLW1lbnUtaXRlbScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYWN0aXZlJywgJ2NvbGxhcHNlJywgJ2Rpc2FibGVkJ10sXG59KVxuZXhwb3J0IGNsYXNzIEJxU2lkZU1lbnVJdGVtIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnYnFCbHVyJywgJ2JxRm9jdXMnLCAnYnFDbGljayddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBCcVNpZGVNZW51SXRlbSBleHRlbmRzIENvbXBvbmVudHMuQnFTaWRlTWVudUl0ZW0ge1xuICAvKipcbiAgICogSGFuZGxlciB0byBiZSBjYWxsZWQgd2hlbiB0aGUgYnV0dG9uIGxvc2VzIGZvY3VzXG4gICAqL1xuICBicUJsdXI6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxIVE1MQnFTaWRlTWVudUl0ZW1FbGVtZW50Pj47XG4gIC8qKlxuICAgKiBIYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBidXR0b24gaXMgY2xpY2tlZFxuICAgKi9cbiAgYnFGb2N1czogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcVNpZGVNZW51SXRlbUVsZW1lbnQ+PjtcbiAgLyoqXG4gICAqIEhhbmRsZXIgdG8gYmUgY2FsbGVkIHdoZW4gYnV0dG9uIGdldHMgZm9jdXNcbiAgICovXG4gIGJxQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxIVE1MQnFTaWRlTWVudUl0ZW1FbGVtZW50Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2RlYm91bmNlVGltZScsICdkaXNhYmxlZCcsICdlbmFibGVUb29sdGlwJywgJ2VuYWJsZVZhbHVlSW5kaWNhdG9yJywgJ2dhcCcsICdtYXgnLCAnbWluJywgJ3N0ZXAnLCAndG9vbHRpcEFsd2F5c1Zpc2libGUnLCAndHlwZScsICd2YWx1ZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYnEtc2xpZGVyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydkZWJvdW5jZVRpbWUnLCAnZGlzYWJsZWQnLCAnZW5hYmxlVG9vbHRpcCcsICdlbmFibGVWYWx1ZUluZGljYXRvcicsICdnYXAnLCAnbWF4JywgJ21pbicsICdzdGVwJywgJ3Rvb2x0aXBBbHdheXNWaXNpYmxlJywgJ3R5cGUnLCAndmFsdWUnXSxcbn0pXG5leHBvcnQgY2xhc3MgQnFTbGlkZXIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydicUNoYW5nZScsICdicUJsdXInLCAnYnFGb2N1cyddKTtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgVFNsaWRlclZhbHVlIGFzIElCcVNsaWRlclRTbGlkZXJWYWx1ZSB9IGZyb20gJ0BiZWVxL2NvcmUnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQnFTbGlkZXIgZXh0ZW5kcyBDb21wb25lbnRzLkJxU2xpZGVyIHtcbiAgLyoqXG4gICAqIEhhbmRsZXIgdG8gYmUgY2FsbGVkIHdoZW4gY2hhbmdlIHRoZSB2YWx1ZSBvbiByYW5nZSBpbnB1dHNcbiAgICovXG4gIGJxQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyB2YWx1ZTogRXhjbHVkZTxJQnFTbGlkZXJUU2xpZGVyVmFsdWUsIHN0cmluZz47IGVsOiBIVE1MQnFTbGlkZXJFbGVtZW50IH0+PjtcbiAgLyoqXG4gICAqIEhhbmRsZXIgdG8gYmUgY2FsbGVkIHdoZW4gdGhlIHNsaWRlciBsb3NlcyBmb2N1c1xuICAgKi9cbiAgYnFCbHVyOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTEJxU2xpZGVyRWxlbWVudD4+O1xuICAvKipcbiAgICogSGFuZGxlciB0byBiZSBjYWxsZWQgd2hlbiB0aGUgc2xpZGVyIGdldHMgZm9jdXNlZFxuICAgKi9cbiAgYnFGb2N1czogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcVNsaWRlckVsZW1lbnQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYW5pbWF0aW9uJywgJ3NpemUnLCAndGV4dFBvc2l0aW9uJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicS1zcGlubmVyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhbmltYXRpb24nLCAnc2l6ZScsICd0ZXh0UG9zaXRpb24nXSxcbn0pXG5leHBvcnQgY2xhc3MgQnFTcGlubmVyIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQnFTcGlubmVyIGV4dGVuZHMgQ29tcG9uZW50cy5CcVNwaW5uZXIge31cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsndHlwZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYnEtc3RhdHVzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWyd0eXBlJ10sXG59KVxuZXhwb3J0IGNsYXNzIEJxU3RhdHVzIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQnFTdGF0dXMgZXh0ZW5kcyBDb21wb25lbnRzLkJxU3RhdHVzIHt9XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ3NpemUnLCAnc3RhdHVzJywgJ3R5cGUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JxLXN0ZXAtaXRlbScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnc2l6ZScsICdzdGF0dXMnLCAndHlwZSddLFxufSlcbmV4cG9ydCBjbGFzcyBCcVN0ZXBJdGVtIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnYnFDbGljayddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBCcVN0ZXBJdGVtIGV4dGVuZHMgQ29tcG9uZW50cy5CcVN0ZXBJdGVtIHtcbiAgLyoqXG4gICAqIENhbGxiYWNrIGhhbmRsZXIgZW1pdHRlZCB3aGVuIHRoZSBzdGVwIGl0ZW0gaXMgY2xpY2tlZFxuICAgKi9cbiAgYnFDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgdGFyZ2V0OiBIVE1MQnFTdGVwSXRlbUVsZW1lbnQ7IHZhbHVlOiBzdHJpbmcgfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydkaXZpZGVyQ29sb3InLCAnc2l6ZScsICd0eXBlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicS1zdGVwcycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnZGl2aWRlckNvbG9yJywgJ3NpemUnLCAndHlwZSddLFxufSlcbmV4cG9ydCBjbGFzcyBCcVN0ZXBzIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQnFTdGVwcyBleHRlbmRzIENvbXBvbmVudHMuQnFTdGVwcyB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydiYWNrZ3JvdW5kT25Ib3ZlcicsICdjaGVja2VkJywgJ2Rpc2FibGVkJywgJ2Z1bGxXaWR0aCcsICdpbm5lckxhYmVsJywgJ2p1c3RpZnlDb250ZW50JywgJ25hbWUnLCAncmVxdWlyZWQnLCAncmV2ZXJzZU9yZGVyJywgJ3ZhbHVlJ10sXG4gIG1ldGhvZHM6IFsndkNsaWNrJywgJ3ZGb2N1cycsICd2Qmx1ciddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYnEtc3dpdGNoJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydiYWNrZ3JvdW5kT25Ib3ZlcicsICdjaGVja2VkJywgJ2Rpc2FibGVkJywgJ2Z1bGxXaWR0aCcsICdpbm5lckxhYmVsJywgJ2p1c3RpZnlDb250ZW50JywgJ25hbWUnLCAncmVxdWlyZWQnLCAncmV2ZXJzZU9yZGVyJywgJ3ZhbHVlJ10sXG59KVxuZXhwb3J0IGNsYXNzIEJxU3dpdGNoIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnYnFDaGFuZ2UnLCAnYnFGb2N1cycsICdicUJsdXInXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQnFTd2l0Y2ggZXh0ZW5kcyBDb21wb25lbnRzLkJxU3dpdGNoIHtcbiAgLyoqXG4gICAqIEhhbmRsZXIgdG8gYmUgY2FsbGVkIHdoZW4gdGhlIHN3aXRjaCBzdGF0ZSBjaGFuZ2VzXG4gICAqL1xuICBicUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgY2hlY2tlZDogYm9vbGVhbiB9Pj47XG4gIC8qKlxuICAgKiBIYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBzd2l0Y2ggZ2V0cyBmb2N1c1xuICAgKi9cbiAgYnFGb2N1czogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcVN3aXRjaEVsZW1lbnQ+PjtcbiAgLyoqXG4gICAqIEhhbmRsZXIgdG8gYmUgY2FsbGVkIHdoZW4gdGhlIHN3aXRjaCBsb3NlcyBmb2N1c1xuICAgKi9cbiAgYnFCbHVyOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTEJxU3dpdGNoRWxlbWVudD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhY3RpdmUnLCAnY29udHJvbHMnLCAnZGlzYWJsZWQnLCAnb3JpZW50YXRpb24nLCAncGxhY2VtZW50JywgJ3NpemUnLCAndGFiSWQnXSxcbiAgbWV0aG9kczogWyd2Q2xpY2snLCAndkZvY3VzJywgJ3ZCbHVyJywgJ2VuYWJsZUZvY3VzJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicS10YWInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2FjdGl2ZScsICdjb250cm9scycsICdkaXNhYmxlZCcsICdvcmllbnRhdGlvbicsICdwbGFjZW1lbnQnLCAnc2l6ZScsICd0YWJJZCddLFxufSlcbmV4cG9ydCBjbGFzcyBCcVRhYiB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ2JxQ2xpY2snLCAnYnFGb2N1cycsICdicUJsdXInLCAnYnFLZXlEb3duJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEJxVGFiIGV4dGVuZHMgQ29tcG9uZW50cy5CcVRhYiB7XG4gIC8qKlxuICAgKiBIYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSB0YWIgc3RhdGUgY2hhbmdlc1xuICAgKi9cbiAgYnFDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcVRhYkVsZW1lbnQ+PjtcbiAgLyoqXG4gICAqIEhhbmRsZXIgdG8gYmUgY2FsbGVkIHdoZW4gdGhlIHRhYiBnZXRzIGZvY3VzXG4gICAqL1xuICBicUZvY3VzOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTEJxVGFiRWxlbWVudD4+O1xuICAvKipcbiAgICogSGFuZGxlciB0byBiZSBjYWxsZWQgd2hlbiB0aGUgdGFiIGxvc2VzIGZvY3VzXG4gICAqL1xuICBicUJsdXI6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxIVE1MQnFUYWJFbGVtZW50Pj47XG4gIC8qKlxuICAgKiBIYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSB0YWIga2V5IGlzIHByZXNzZWRcbiAgICovXG4gIGJxS2V5RG93bjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEtleWJvYXJkRXZlbnQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnZGVib3VuY2VUaW1lJywgJ2Rpc2FibGVEaXZpZGVyJywgJ29yaWVudGF0aW9uJywgJ3BsYWNlbWVudCcsICdzaXplJywgJ3ZhbHVlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicS10YWItZ3JvdXAnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2RlYm91bmNlVGltZScsICdkaXNhYmxlRGl2aWRlcicsICdvcmllbnRhdGlvbicsICdwbGFjZW1lbnQnLCAnc2l6ZScsICd2YWx1ZSddLFxufSlcbmV4cG9ydCBjbGFzcyBCcVRhYkdyb3VwIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnYnFDaGFuZ2UnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQnFUYWJHcm91cCBleHRlbmRzIENvbXBvbmVudHMuQnFUYWJHcm91cCB7XG4gIC8qKlxuICAgKiBIYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSB0YWIgdmFsdWUgY2hhbmdlc1xuICAgKi9cbiAgYnFDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHRhcmdldDogSFRNTEJxVGFiRWxlbWVudDsgdmFsdWU6IHN0cmluZyB9Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2JvcmRlcicsICdjbGlja2FibGUnLCAnY29sb3InLCAnZGlzYWJsZWQnLCAnaGlkZGVuJywgJ3JlbW92YWJsZScsICdzZWxlY3RlZCcsICdzaXplJywgJ3ZhcmlhbnQnXSxcbiAgbWV0aG9kczogWydoaWRlJywgJ3Nob3cnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JxLXRhZycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYm9yZGVyJywgJ2NsaWNrYWJsZScsICdjb2xvcicsICdkaXNhYmxlZCcsICdoaWRkZW4nLCAncmVtb3ZhYmxlJywgJ3NlbGVjdGVkJywgJ3NpemUnLCAndmFyaWFudCddLFxufSlcbmV4cG9ydCBjbGFzcyBCcVRhZyB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ2JxQ2xvc2UnLCAnYnFPcGVuJywgJ2JxQmx1cicsICdicUNsaWNrJywgJ2JxRm9jdXMnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQnFUYWcgZXh0ZW5kcyBDb21wb25lbnRzLkJxVGFnIHtcbiAgLyoqXG4gICAqIENhbGxiYWNrIGhhbmRsZXIgdG8gYmUgY2FsbGVkIHdoZW4gdGhlIHRhZyBpcyBjbG9zZS9oaWRkZW5cbiAgICovXG4gIGJxQ2xvc2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcbiAgLyoqXG4gICAqIENhbGxiYWNrIGhhbmRsZXIgdG8gYmUgY2FsbGVkIHdoZW4gdGhlIHRhZyBpcyBub3Qgb3Blbi9zaG93blxuICAgKi9cbiAgYnFPcGVuOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8YW55Pj47XG4gIC8qKlxuICAgKiBIYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRhZyBsb3NlcyBmb2N1c1xuICAgKi9cbiAgYnFCbHVyOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTEJxVGFnRWxlbWVudD4+O1xuICAvKipcbiAgICogSGFuZGxlciB0byBiZSBjYWxsZWQgd2hlbiB0YWcgaXMgY2xpY2tlZFxuICAgKi9cbiAgYnFDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcVRhZ0VsZW1lbnQ+PjtcbiAgLyoqXG4gICAqIEhhbmRsZXIgdG8gYmUgY2FsbGVkIHdoZW4gdGFnIGlzIGZvY3VzZWRcbiAgICovXG4gIGJxRm9jdXM6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxIVE1MQnFUYWdFbGVtZW50Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2F1dG9Hcm93JywgJ2F1dG9jYXBpdGFsaXplJywgJ2F1dG9jb21wbGV0ZScsICdhdXRvY29ycmVjdCcsICdhdXRvZm9jdXMnLCAnZGVib3VuY2VUaW1lJywgJ2Rpc2FibGVSZXNpemUnLCAnZGlzYWJsZWQnLCAnZm9ybScsICdtYXhsZW5ndGgnLCAnbmFtZScsICdwbGFjZWhvbGRlcicsICdyZWFkb25seScsICdyZXF1aXJlZCcsICdyb3dzJywgJ3NwZWxsY2hlY2snLCAndmFsaWRhdGlvblN0YXR1cycsICd2YWx1ZScsICd3cmFwJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicS10ZXh0YXJlYScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYXV0b0dyb3cnLCAnYXV0b2NhcGl0YWxpemUnLCAnYXV0b2NvbXBsZXRlJywgJ2F1dG9jb3JyZWN0JywgJ2F1dG9mb2N1cycsICdkZWJvdW5jZVRpbWUnLCAnZGlzYWJsZVJlc2l6ZScsICdkaXNhYmxlZCcsICdmb3JtJywgJ21heGxlbmd0aCcsICduYW1lJywgJ3BsYWNlaG9sZGVyJywgJ3JlYWRvbmx5JywgJ3JlcXVpcmVkJywgJ3Jvd3MnLCAnc3BlbGxjaGVjaycsICd2YWxpZGF0aW9uU3RhdHVzJywgJ3ZhbHVlJywgJ3dyYXAnXSxcbn0pXG5leHBvcnQgY2xhc3MgQnFUZXh0YXJlYSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ2JxQmx1cicsICdicUNoYW5nZScsICdicUNsZWFyJywgJ2JxRm9jdXMnLCAnYnFJbnB1dCddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBCcVRleHRhcmVhIGV4dGVuZHMgQ29tcG9uZW50cy5CcVRleHRhcmVhIHtcbiAgLyoqXG4gICAqIENhbGxiYWNrIGhhbmRsZXIgZW1pdHRlZCB3aGVuIHRoZSB0ZXh0YXJlYSBsb3NlcyBmb2N1c1xuICAgKi9cbiAgYnFCbHVyOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTEJxVGV4dGFyZWFFbGVtZW50Pj47XG4gIC8qKlxuICAgKiBDYWxsYmFjayBoYW5kbGVyIGVtaXR0ZWQgd2hlbiB0aGUgdGV4dGFyZWEgdmFsdWUgaGFzIGNoYW5nZWQgYW5kIHRoZSB0ZXh0YXJlYSBsb3NlcyBmb2N1cy5cblRoaXMgaGFuZGxlciBpcyBjYWxsZWQgd2hlbmV2ZXIgdGhlIHVzZXIgZmluaXNoZXMgdHlwaW5nIG9yIHBhc3RpbmcgdGV4dCBpbnRvIHRoZSB0ZXh0YXJlYSBmaWVsZCBhbmQgdGhlbiBjbGlja3Mgb3V0c2lkZSBvZiB0aGUgdGV4dGFyZWEgZmllbGQuXG4gICAqL1xuICBicUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgdmFsdWU6IHN0cmluZzsgZWw6IEhUTUxCcVRleHRhcmVhRWxlbWVudCB9Pj47XG4gIC8qKlxuICAgKiBDYWxsYmFjayBoYW5kbGVyIGVtaXR0ZWQgd2hlbiB0aGUgdGV4dGFyZWEgdmFsdWUgaGFzIGJlZW4gY2xlYXJlZFxuICAgKi9cbiAgYnFDbGVhcjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcVRleHRhcmVhRWxlbWVudD4+O1xuICAvKipcbiAgICogQ2FsbGJhY2sgaGFuZGxlciBlbWl0dGVkIHdoZW4gdGhlIHRleHRhcmVhIGhhcyByZWNlaXZlZCBmb2N1c1xuICAgKi9cbiAgYnFGb2N1czogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcVRleHRhcmVhRWxlbWVudD4+O1xuICAvKipcbiAgICogQ2FsbGJhY2sgaGFuZGxlciBlbWl0dGVkIHdoZW4gdGhlIHRleHRhcmVhIHZhbHVlIGNoYW5nZXMuXG5UaGlzIGhhbmRsZXIgaXMgY2FsbGVkIHdoZW5ldmVyIHRoZSB1c2VyIHR5cGVzIG9yIHBhc3RlcyB0ZXh0IGludG8gdGhlIHRleHRhcmVhIGZpZWxkLlxuICAgKi9cbiAgYnFJbnB1dDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgdmFsdWU6IHN0cmluZzsgZWw6IEhUTUxCcVRleHRhcmVhRWxlbWVudCB9Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2JvcmRlcicsICdoaWRlSWNvbicsICdvcGVuJywgJ3BsYWNlbWVudCcsICd0aW1lJywgJ3R5cGUnXSxcbiAgbWV0aG9kczogWydzaG93JywgJ2hpZGUnLCAndG9hc3QnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JxLXRvYXN0JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydib3JkZXInLCAnaGlkZUljb24nLCAnb3BlbicsICdwbGFjZW1lbnQnLCAndGltZScsICd0eXBlJ10sXG59KVxuZXhwb3J0IGNsYXNzIEJxVG9hc3Qge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydicUhpZGUnLCAnYnFTaG93J10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEJxVG9hc3QgZXh0ZW5kcyBDb21wb25lbnRzLkJxVG9hc3Qge1xuICAvKipcbiAgICogQ2FsbGJhY2sgaGFuZGxlciB0byBiZSBjYWxsZWQgd2hlbiB0aGUgbm90aWZpY2F0aW9uIGlzIGhpZGRlblxuICAgKi9cbiAgYnFIaWRlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTEJxVG9hc3RFbGVtZW50Pj47XG4gIC8qKlxuICAgKiBDYWxsYmFjayBoYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBub3RpZmljYXRpb24gaXMgc2hvd25cbiAgICovXG4gIGJxU2hvdzogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcVRvYXN0RWxlbWVudD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhbHdheXNWaXNpYmxlJywgJ2Rpc3BsYXlPbicsICdkaXN0YW5jZScsICdoaWRlQXJyb3cnLCAncGxhY2VtZW50JywgJ3NhbWVXaWR0aCcsICd2aXNpYmxlJ10sXG4gIG1ldGhvZHM6IFsnc2hvdycsICdoaWRlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicS10b29sdGlwJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhbHdheXNWaXNpYmxlJywgJ2Rpc3BsYXlPbicsICdkaXN0YW5jZScsICdoaWRlQXJyb3cnLCAncGxhY2VtZW50JywgJ3NhbWVXaWR0aCcsICd2aXNpYmxlJ10sXG59KVxuZXhwb3J0IGNsYXNzIEJxVG9vbHRpcCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEJxVG9vbHRpcCBleHRlbmRzIENvbXBvbmVudHMuQnFUb29sdGlwIHt9XG5cblxuIl19
2700
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2JlZXEtYW5ndWxhci9zcmMvZGlyZWN0aXZlcy9jb21wb25lbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxvQkFBb0I7QUFDcEIsOENBQThDO0FBQzlDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFnQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFeEgsT0FBTyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7QUFlaEUsSUFBTSxXQUFXLEdBQWpCLE1BQU0sV0FBVztJQUVwQjs7S0FFQztJQUNILElBQUksVUFBVSxDQUFDLENBQXVDLElBQUcsQ0FBQztJQUFBLENBQUM7SUFDekQ7O0tBRUM7SUFDSCxJQUFJLFFBQVEsQ0FBQyxDQUFxQyxJQUFHLENBQUM7SUFBQSxDQUFDO0lBQ3JEOztLQUVDO0lBQ0gsSUFBSSxRQUFRLENBQUMsQ0FBcUMsSUFBRyxDQUFDO0lBQUEsQ0FBQztJQUNyRDs7O0tBR0M7SUFDSCxJQUFJLFdBQVcsQ0FBQyxDQUF3QyxJQUFHLENBQUM7SUFBQSxDQUFDO0lBQzNEOztLQUVDO0lBQ0gsSUFBSSxNQUFNLENBQUMsQ0FBbUMsSUFBRyxDQUFDO0lBQUEsQ0FBQztJQUNqRDs7S0FFQztJQUNILElBQUksSUFBSSxDQUFDLENBQWlDLElBQUcsQ0FBQztJQUFBLENBQUM7SUFDL0MsWUFBWSxDQUFvQixFQUFFLENBQWEsRUFBWSxDQUFTO1FBQVQsTUFBQyxHQUFELENBQUMsQ0FBUTtRQUNsRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDWCxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxhQUFhLENBQUM7UUFDMUIsWUFBWSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsUUFBUSxFQUFFLFNB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QztJQUFBLENBQUM7SUFDckQ7OztLQUdDO0lBQ0gsSUFBSSxPQUFPLENBQUMsQ0FBa0MsSUFBRyxDQUFDO0lBQUEsQ0FBQztJQUNuRCxZQUFZLENBQW9CLEVBQUUsQ0FBYSxFQUFZLENBQVM7UUFBVCxNQUFDLEdBQUQsQ0FBQyxDQUFRO1FBQ2xFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNYLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLGFBQWEsQ0FBQztJQUM1QixDQUFDO2tJQWpDVSxTQUFTO3NIQUFULFNBQVMsd09BSlYsMkJBQTJCOztBQUkxQixTQUFTO0lBWHJCLFFBQVEsQ0FBQztRQUNSLE1BQU0sRUFBRSxDQUFDLGVBQWUsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLFNBQVMsQ0FBQztRQUNwRyxPQUFPLEVBQUUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDO0tBQzFCLENBQUM7cUNBc0NlLGlCQUFpQixFQUFLLFVBQVUsRUFBZSxNQUFNO0dBOUJ6RCxTQUFTLENBa0NyQjs7NEZBbENZLFNBQVM7a0JBUHJCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLFlBQVk7b0JBQ3RCLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxRQUFRLEVBQUUsMkJBQTJCO29CQUNyQyx1RUFBdUU7b0JBQ3ZFLE1BQU0sRUFBRSxDQUFDLGVBQWUsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLFNBQVMsQ0FBQztpQkFDckciLCJzb3VyY2VzQ29udGVudCI6WyIvKiB0c2xpbnQ6ZGlzYWJsZSAqL1xuLyogYXV0by1nZW5lcmF0ZWQgYW5ndWxhciBkaXJlY3RpdmUgcHJveGllcyAqL1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFByb3h5Q21wLCBwcm94eU91dHB1dHMgfSBmcm9tICcuL2FuZ3VsYXItY29tcG9uZW50LWxpYi91dGlscyc7XG5cbmltcG9ydCB7IENvbXBvbmVudHMgfSBmcm9tICdAYmVlcS9jb3JlJztcblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYXBwZWFyYW5jZScsICdkaXNhYmxlZCcsICdleHBhbmRlZCcsICdub0FuaW1hdGlvbicsICdyb3RhdGUnLCAnc2l6ZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYnEtYWNjb3JkaW9uJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhcHBlYXJhbmNlJywgJ2Rpc2FibGVkJywgJ2V4cGFuZGVkJywgJ25vQW5pbWF0aW9uJywgJ3JvdGF0ZScsICdzaXplJ10sXG59KVxuZXhwb3J0IGNsYXNzIEJxQWNjb3JkaW9uIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MQnFBY2NvcmRpb25FbGVtZW50O1xuICAgIC8qKlxuICAgKiBUaGUgYXBwZWFyYW5jZSBzdHlsZSBvZiB0aGUgQWNjb3JkaW9uXG4gICAqL1xuICBzZXQgYXBwZWFyYW5jZShfOiBDb21wb25lbnRzLkJxQWNjb3JkaW9uWydhcHBlYXJhbmNlJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJZiB0cnVlLCB0aGUgQWNjb3JkaW9uIGlzIGRpc2FibGVkXG4gICAqL1xuICBzZXQgZGlzYWJsZWQoXzogQ29tcG9uZW50cy5CcUFjY29yZGlvblsnZGlzYWJsZWQnXSkge307XG4gICAgLyoqXG4gICAqIElmIHRydWUsIHRoZSBBY2NvcmRpb24gaXMgZXhwYW5kZWRcbiAgICovXG4gIHNldCBleHBhbmRlZChfOiBDb21wb25lbnRzLkJxQWNjb3JkaW9uWydleHBhbmRlZCddKSB7fTtcbiAgICAvKipcbiAgICogQW5pbWF0aW9uIGlzIHNldCB0aHJvdWdoIEpTIHdoZW4gdGhlIGJyb3dzZXIgZG9lcyBub3Qgc3VwcG9ydCBDU1MgY2FsYy1zaXplKClcbklmIHRydWUsIHRoZSBBY2NvcmRpb24gYW5pbWF0aW9uLCB3aWxsIGJlIGRpc2FibGVkLiBObyBhbmltYXRpb24gd2lsbCBiZSBhcHBsaWVkLlxuICAgKi9cbiAgc2V0IG5vQW5pbWF0aW9uKF86IENvbXBvbmVudHMuQnFBY2NvcmRpb25bJ25vQW5pbWF0aW9uJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJZiB0cnVlLCB0aGUgQWNjb3JkaW9uIGV4cGFuZCBpY29uIGlzIHJvdGF0ZSAxODBkZWcgd2hlbiBleHBhbmRlZFxuICAgKi9cbiAgc2V0IHJvdGF0ZShfOiBDb21wb25lbnRzLkJxQWNjb3JkaW9uWydyb3RhdGUnXSkge307XG4gICAgLyoqXG4gICAqIFRoZSBzaXplIG9mIHRoZSBBY2NvcmRpb25cbiAgICovXG4gIHNldCBzaXplKF86IENvbXBvbmVudHMuQnFBY2NvcmRpb25bJ3NpemUnXSkge307XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ2JxQmx1cicsICdicUZvY3VzJywgJ2JxT3BlbicsICdicUFmdGVyT3BlbicsICdicUNsb3NlJywgJ2JxQWZ0ZXJDbG9zZScsICdicUNsaWNrJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEJxQWNjb3JkaW9uIGV4dGVuZHMgQ29tcG9uZW50cy5CcUFjY29yZGlvbiB7XG4gIC8qKlxuICAgKiBIYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBhY2NvcmRpb24gbG9zZXMgZm9jdXNcbiAgICovXG4gIGJxQmx1cjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcUFjY29yZGlvbkVsZW1lbnQ+PjtcbiAgLyoqXG4gICAqIEhhbmRsZXIgdG8gYmUgY2FsbGVkIHdoZW4gdGhlIGFjY29yZGlvbiBnZXRzIGZvY3VzXG4gICAqL1xuICBicUZvY3VzOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTEJxQWNjb3JkaW9uRWxlbWVudD4+O1xuICAvKipcbiAgICogSGFuZGxlciB0byBiZSBjYWxsZWQgd2hlbiB0aGUgYWNjb3JkaW9uIGlzIG9wZW5lZFxuICAgKi9cbiAgYnFPcGVuOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTEJxQWNjb3JkaW9uRWxlbWVudD4+O1xuICAvKipcbiAgICogSGFuZGxlciB0byBiZSBjYWxsZWQgYWZ0ZXIgdGhlIGFjY29yZGlvbiBpcyBvcGVuZWRcbiAgICovXG4gIGJxQWZ0ZXJPcGVuOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTEJxQWNjb3JkaW9uRWxlbWVudD4+O1xuICAvKipcbiAgICogSGFuZGxlciB0byBiZSBjYWxsZWQgd2hlbiB0aGUgYWNjb3JkaW9uIGlzIGNsb3NlZFxuICAgKi9cbiAgYnFDbG9zZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcUFjY29yZGlvbkVsZW1lbnQ+PjtcbiAgLyoqXG4gICAqIEhhbmRsZXIgdG8gYmUgY2FsbGVkIGFmdGVyIHRoZSBhY2NvcmRpb24gaXMgY2xvc2VkXG4gICAqL1xuICBicUFmdGVyQ2xvc2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxIVE1MQnFBY2NvcmRpb25FbGVtZW50Pj47XG4gIC8qKlxuICAgKiBIYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBhY2NvcmRpb24gaXMgY2xpY2tlZFxuICAgKi9cbiAgYnFDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcUFjY29yZGlvbkVsZW1lbnQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYXBwZWFyYW5jZScsICdleHBhbmRBbGwnLCAnbXVsdGlwbGUnLCAnbm9BbmltYXRpb24nLCAnc2l6ZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYnEtYWNjb3JkaW9uLWdyb3VwJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhcHBlYXJhbmNlJywgJ2V4cGFuZEFsbCcsICdtdWx0aXBsZScsICdub0FuaW1hdGlvbicsICdzaXplJ10sXG59KVxuZXhwb3J0IGNsYXNzIEJxQWNjb3JkaW9uR3JvdXAge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxCcUFjY29yZGlvbkdyb3VwRWxlbWVudDtcbiAgICAvKipcbiAgICogVGhlIGFwcGVhcmFuY2Ugc3R5bGUgb2YgYWNjb3JkaW9uIHRvIGJlIGFwcGxpZWQgdG8gYWxsIGFjY29yZGlvbnNcbiAgICovXG4gIHNldCBhcHBlYXJhbmNlKF86IENvbXBvbmVudHMuQnFBY2NvcmRpb25Hcm91cFsnYXBwZWFyYW5jZSddKSB7fTtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSBhbGwgYWNjb3JkaW9ucyBhcmUgZXhwYW5kZWRcbiAgICovXG4gIHNldCBleHBhbmRBbGwoXzogQ29tcG9uZW50cy5CcUFjY29yZGlvbkdyb3VwWydleHBhbmRBbGwnXSkge307XG4gICAgLyoqXG4gICAqIEFuaW1hdGlvbiBpcyBzZXQgdGhyb3VnaCBKUyB3aGVuIHRoZSBicm93c2VyIGRvZXMgbm90IHN1cHBvcnQgQ1NTIGNhbGMtc2l6ZSgpXG5JZiB0cnVlLCB0aGUgYWNjb3JkaW9uIGFuaW1hdGlvbiwgd2lsbCBiZSBkaXNhYmxlZC4gTm8gYW5pbWF0aW9uIHdpbGwgYmUgYXBwbGllZC5cbiAgICovXG4gIHNldCBub0FuaW1hdGlvbihfOiBDb21wb25lbnRzLkJxQWNjb3JkaW9uR3JvdXBbJ25vQW5pbWF0aW9uJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJZiB0cnVlIG11bHRpcGxlIGFjY29yZGlvbnMgY2FuIGJlIGV4cGFuZGVkIGF0IHRoZSBzYW1lIHRpbWVcbiAgICovXG4gIHNldCBtdWx0aXBsZShfOiBDb21wb25lbnRzLkJxQWNjb3JkaW9uR3JvdXBbJ211bHRpcGxlJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgc2l6ZSBvZiBhY2NvcmRpb24gdG8gYmUgYXBwbGllZCB0byBhbGwgYWNjb3JkaW9uc1xuICAgKi9cbiAgc2V0IHNpemUoXzogQ29tcG9uZW50cy5CcUFjY29yZGlvbkdyb3VwWydzaXplJ10pIHt9O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBCcUFjY29yZGlvbkdyb3VwIGV4dGVuZHMgQ29tcG9uZW50cy5CcUFjY29yZGlvbkdyb3VwIHt9XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2F1dG9EaXNtaXNzJywgJ2JvcmRlcicsICdkaXNhYmxlQ2xvc2UnLCAnaGlkZUljb24nLCAnb3BlbicsICdzdGlja3knLCAndGltZScsICd0eXBlJ10sXG4gIG1ldGhvZHM6IFsnaGlkZScsICdzaG93J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicS1hbGVydCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYXV0b0Rpc21pc3MnLCAnYm9yZGVyJywgJ2Rpc2FibGVDbG9zZScsICdoaWRlSWNvbicsICdvcGVuJywgJ3N0aWNreScsICd0aW1lJywgJ3R5cGUnXSxcbn0pXG5leHBvcnQgY2xhc3MgQnFBbGVydCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEJxQWxlcnRFbGVtZW50O1xuICAgIC8qKlxuICAgKiBJZiB0cnVlLCB0aGUgYWxlcnQgd2lsbCBhdXRvbWF0aWNhbGx5IGhpZGUgYWZ0ZXIgdGhlIHNwZWNpZmllZCBhbW91bnQgb2YgdGltZVxuICAgKi9cbiAgc2V0IGF1dG9EaXNtaXNzKF86IENvbXBvbmVudHMuQnFBbGVydFsnYXV0b0Rpc21pc3MnXSkge307XG4gICAgLyoqXG4gICAqIFRoZSBjb3JuZXIgcmFkaXVzIG9mIHRoZSBhbGVydCBjb21wb25lbnRcbiAgICovXG4gIHNldCBib3JkZXIoXzogQ29tcG9uZW50cy5CcUFsZXJ0Wydib3JkZXInXSkge307XG4gICAgLyoqXG4gICAqIElmIHRydWUsIHRoZSBjbG9zZSBidXR0b24gYXQgdGhlIHRvcCByaWdodCBvZiB0aGUgYWxlcnQgd29uJ3QgYmUgc2hvd25cbiAgICovXG4gIHNldCBkaXNhYmxlQ2xvc2UoXzogQ29tcG9uZW50cy5CcUFsZXJ0WydkaXNhYmxlQ2xvc2UnXSkge307XG4gICAgLyoqXG4gICAqIElmIHRydWUsIHRoZSBhbGVydCBpY29uIHdvbid0IGJlIHNob3duXG4gICAqL1xuICBzZXQgaGlkZUljb24oXzogQ29tcG9uZW50cy5CcUFsZXJ0WydoaWRlSWNvbiddKSB7fTtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSwgdGhlIGFsZXJ0IHdpbGwgYmUgc2hvd25cbiAgICovXG4gIHNldCBvcGVuKF86IENvbXBvbmVudHMuQnFBbGVydFsnb3BlbiddKSB7fTtcbiAgICAvKipcbiAgICogVGhlIGxlbmd0aCBvZiB0aW1lLCBpbiBtaWxsaXNlY29uZHMsIGFmdGVyIHdoaWNoIHRoZSBhbGVydCB3aWxsIGNsb3NlIGl0c2VsZi4gT25seSB2YWxpZCBpZiBgYXV0b0Rpc21pc3M9XCJ0cnVlXCJgXG4gICAqL1xuICBzZXQgdGltZShfOiBDb21wb25lbnRzLkJxQWxlcnRbJ3RpbWUnXSkge307XG4gICAgLyoqXG4gICAqIFR5cGUgb2YgQWxlcnRcbiAgICovXG4gIHNldCB0eXBlKF86IENvbXBvbmVudHMuQnFBbGVydFsndHlwZSddKSB7fTtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSwgdGhlIGFsZXJ0IGNvbXBvbmVudCB3aWxsIHJlbWFpbiBmaXhlZCBhdCB0aGUgdG9wIG9mIHRoZSBwYWdlLCBvY2N1cHlpbmcgdGhlIGZ1bGwgdmlld3BvcnRcbiAgICovXG4gIHNldCBzdGlja3koXzogQ29tcG9uZW50cy5CcUFsZXJ0WydzdGlja3knXSkge307XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ2JxSGlkZScsICdicVNob3cnLCAnYnFBZnRlclNob3cnLCAnYnFBZnRlckhpZGUnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQnFBbGVydCBleHRlbmRzIENvbXBvbmVudHMuQnFBbGVydCB7XG4gIC8qKlxuICAgKiBDYWxsYmFjayBoYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBhbGVydCBpcyBoaWRkZW5cbiAgICovXG4gIGJxSGlkZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuICAvKipcbiAgICogQ2FsbGJhY2sgaGFuZGxlciB0byBiZSBjYWxsZWQgd2hlbiB0aGUgYWxlcnQgaXMgc2hvd25cbiAgICovXG4gIGJxU2hvdzogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuICAvKipcbiAgICogQ2FsbGJhY2sgaGFuZGxlciB0byBiZSBjYWxsZWQgYWZ0ZXIgdGhlIGFsZXJ0IGhhcyBiZWVuIHNob3duXG4gICAqL1xuICBicUFmdGVyU2hvdzogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuICAvKipcbiAgICogQ2FsbGJhY2sgaGFuZGxlciB0byBiZSBjYWxsZWQgYWZ0ZXIgdGhlIGFsZXJ0IGhhcyBiZWVuIGhpZGRlblxuICAgKi9cbiAgYnFBZnRlckhpZGU6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYWx0VGV4dCcsICdpbWFnZScsICdpbml0aWFscycsICdsYWJlbCcsICdzaGFwZScsICdzaXplJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicS1hdmF0YXInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2FsdFRleHQnLCAnaW1hZ2UnLCAnaW5pdGlhbHMnLCAnbGFiZWwnLCAnc2hhcGUnLCAnc2l6ZSddLFxufSlcbmV4cG9ydCBjbGFzcyBCcUF2YXRhciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEJxQXZhdGFyRWxlbWVudDtcbiAgICAvKipcbiAgICogQWx0ZXJuYXRlIHRleHQgZm9yIHRoZSBhdmF0YXIgaW1hZ2UgaWYgdGhlIGltYWdlIGNhbm5vdCBiZSBkaXNwbGF5ZWRcbiAgICovXG4gIHNldCBhbHRUZXh0KF86IENvbXBvbmVudHMuQnFBdmF0YXJbJ2FsdFRleHQnXSkge307XG4gICAgLyoqXG4gICAqIFRoZSBpbWFnZSBzb3VyY2UgdG8gbG9hZCBvbiB0aGUgYXZhdGFyICh0aGlzIGNhbiBiZSBhbHNvIGEgYmFzZTY0IGVuY29kZWQgaW1hZ2UpXG4gICAqL1xuICBzZXQgaW1hZ2UoXzogQ29tcG9uZW50cy5CcUF2YXRhclsnaW1hZ2UnXSkge307XG4gICAgLyoqXG4gICAqIEEgdGV4dCB0byB1c2UgZm9yIGRlc2NyaWJpbmcgdGhlIGF2YXRhciBvbiBhc3Npc3RpdmUgZGV2aWNlc1xuICAgKi9cbiAgc2V0IGxhYmVsKF86IENvbXBvbmVudHMuQnFBdmF0YXJbJ2xhYmVsJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgdGV4dCB0byBkaXNwbGF5IG9uIGF2YXRhclxuICAgKi9cbiAgc2V0IGluaXRpYWxzKF86IENvbXBvbmVudHMuQnFBdmF0YXJbJ2luaXRpYWxzJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgc2hhcGUgb2YgdGhlIGF2YXRhclxuICAgKi9cbiAgc2V0IHNoYXBlKF86IENvbXBvbmVudHMuQnFBdmF0YXJbJ3NoYXBlJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgc2l6ZSBvZiB0aGUgYXZhdGFyXG4gICAqL1xuICBzZXQgc2l6ZShfOiBDb21wb25lbnRzLkJxQXZhdGFyWydzaXplJ10pIHt9O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBCcUF2YXRhciBleHRlbmRzIENvbXBvbmVudHMuQnFBdmF0YXIge31cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYmFja2dyb3VuZENvbG9yJywgJ3NpemUnLCAndGV4dENvbG9yJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicS1iYWRnZScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYmFja2dyb3VuZENvbG9yJywgJ3NpemUnLCAndGV4dENvbG9yJ10sXG59KVxuZXhwb3J0IGNsYXNzIEJxQmFkZ2Uge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxCcUJhZGdlRWxlbWVudDtcbiAgICAvKipcbiAgICogQmFkZ2UgYmFja2dyb3VuZCBjb2xvci4gVGhlIHZhbHVlIHNob3VsZCBiZSBhIHZhbGlkIHZhbHVlIG9mIHRoZSBwYWxldHRlIGNvbG9yXG4gICAqL1xuICBzZXQgYmFja2dyb3VuZENvbG9yKF86IENvbXBvbmVudHMuQnFCYWRnZVsnYmFja2dyb3VuZENvbG9yJ10pIHt9O1xuICAgIC8qKlxuICAgKiBCYWRnZSBudW1iZXIgY29sb3IuIFRoZSB2YWx1ZSBzaG91bGQgYmUgYSB2YWxpZCB2YWx1ZSBvZiB0aGUgcGFsZXR0ZSBjb2xvclxuICAgKi9cbiAgc2V0IHRleHRDb2xvcihfOiBDb21wb25lbnRzLkJxQmFkZ2VbJ3RleHRDb2xvciddKSB7fTtcbiAgICAvKipcbiAgICogVGhlIHNpemUgb2YgdGhlIGJhZGdlLiBSZWxldmFudCBpZiBiYWRnZSBoYXMgbm8gY29udGVudC5cbiAgICovXG4gIHNldCBzaXplKF86IENvbXBvbmVudHMuQnFCYWRnZVsnc2l6ZSddKSB7fTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQnFCYWRnZSBleHRlbmRzIENvbXBvbmVudHMuQnFCYWRnZSB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydsYWJlbCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYnEtYnJlYWRjcnVtYicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnbGFiZWwnXSxcbn0pXG5leHBvcnQgY2xhc3MgQnFCcmVhZGNydW1iIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MQnFCcmVhZGNydW1iRWxlbWVudDtcbiAgICAvKipcbiAgICogVGhlIGBhcmlhLWxhYmVsYCBhdHRyaWJ1dGUgdG8gZGVzY3JpYmUgdGhlIHR5cGUgb2YgbmF2aWdhdGlvblxuICAgKi9cbiAgc2V0IGxhYmVsKF86IENvbXBvbmVudHMuQnFCcmVhZGNydW1iWydsYWJlbCddKSB7fTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQnFCcmVhZGNydW1iIGV4dGVuZHMgQ29tcG9uZW50cy5CcUJyZWFkY3J1bWIge31cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnaHJlZicsICdyZWwnLCAndGFyZ2V0J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicS1icmVhZGNydW1iLWl0ZW0nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2hyZWYnLCAncmVsJywgJ3RhcmdldCddLFxufSlcbmV4cG9ydCBjbGFzcyBCcUJyZWFkY3J1bWJJdGVtIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MQnFCcmVhZGNydW1iSXRlbUVsZW1lbnQ7XG4gICAgLyoqXG4gICAqIElmIHNldCwgdGhlIGJyZWFkY3J1bWIgaXRlbSB3aWxsIGJlIHJlbmRlcmVkIGFzIGFuIGA8YT5gIHdpdGggdGhpcyBgaHJlZmAsIG90aGVyd2lzZSwgYSBgPGJ1dHRvbj5gIHdpbGwgYmUgcmVuZGVyZWQuXG4gICAqL1xuICBzZXQgaHJlZihfOiBDb21wb25lbnRzLkJxQnJlYWRjcnVtYkl0ZW1bJ2hyZWYnXSkge307XG4gICAgLyoqXG4gICAqIFdoZXJlIHRvIGRpc3BsYXkgdGhlIGxpbmsgaW4gdGhlIGJyb3dzZXIgY29udGV4dC4gUmVsZXZhbnQgb25seSBpZiBgaHJlZmAgaXMgc2V0LlxuICAgKi9cbiAgc2V0IHRhcmdldChfOiBDb21wb25lbnRzLkJxQnJlYWRjcnVtYkl0ZW1bJ3RhcmdldCddKSB7fTtcbiAgICAvKipcbiAgICogV2hlcmUgdG8gZGlzcGxheSB0aGUgbGluayBpbiB0aGUgYnJvd3NlciBjb250ZXh0LiBSZWxldmFudCBvbmx5IGlmIGBocmVmYCBpcyBzZXQuXG4gICAqL1xuICBzZXQgcmVsKF86IENvbXBvbmVudHMuQnFCcmVhZGNydW1iSXRlbVsncmVsJ10pIHt9O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydicUJsdXInLCAnYnFGb2N1cycsICdicUNsaWNrJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEJxQnJlYWRjcnVtYkl0ZW0gZXh0ZW5kcyBDb21wb25lbnRzLkJxQnJlYWRjcnVtYkl0ZW0ge1xuICAvKipcbiAgICogSGFuZGxlciB0byBiZSBjYWxsZWQgd2hlbiBpdGVtIGxvc2VzIGZvY3VzXG4gICAqL1xuICBicUJsdXI6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxIVE1MQnFCcmVhZGNydW1iSXRlbUVsZW1lbnQ+PjtcbiAgLyoqXG4gICAqIEhhbmRsZXIgdG8gYmUgY2FsbGVkIHdoZW4gaXRlbSBpcyBmb2N1c2VkXG4gICAqL1xuICBicUZvY3VzOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTEJxQnJlYWRjcnVtYkl0ZW1FbGVtZW50Pj47XG4gIC8qKlxuICAgKiBIYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIGl0ZW0gaXMgY2xpY2tlZFxuICAgKi9cbiAgYnFDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcUJyZWFkY3J1bWJJdGVtRWxlbWVudD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhcHBlYXJhbmNlJywgJ2Jsb2NrJywgJ2JvcmRlcicsICdkaXNhYmxlZCcsICdkb3dubG9hZCcsICdocmVmJywgJ2p1c3RpZnlDb250ZW50JywgJ2xvYWRpbmcnLCAnc2l6ZScsICd0YXJnZXQnLCAndHlwZScsICd2YXJpYW50J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicS1idXR0b24nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2FwcGVhcmFuY2UnLCAnYmxvY2snLCAnYm9yZGVyJywgJ2Rpc2FibGVkJywgJ2Rvd25sb2FkJywgJ2hyZWYnLCAnanVzdGlmeUNvbnRlbnQnLCAnbG9hZGluZycsICdzaXplJywgJ3RhcmdldCcsICd0eXBlJywgJ3ZhcmlhbnQnXSxcbn0pXG5leHBvcnQgY2xhc3MgQnFCdXR0b24ge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxCcUJ1dHRvbkVsZW1lbnQ7XG4gICAgLyoqXG4gICAqIFRoZSBhcHBlYXJhbmNlIHN0eWxlIHRvIGFwcGx5IHRvIHRoZSBidXR0b25cbiAgICovXG4gIHNldCBhcHBlYXJhbmNlKF86IENvbXBvbmVudHMuQnFCdXR0b25bJ2FwcGVhcmFuY2UnXSkge307XG4gICAgLyoqXG4gICAqIElmIGB0cnVlYCwgaXQgd2lsbCBtYWtlIHRoZSBidXR0b24gZml0IHRvIGl0cyBwYXJlbnQgd2lkdGguXG4gICAqL1xuICBzZXQgYmxvY2soXzogQ29tcG9uZW50cy5CcUJ1dHRvblsnYmxvY2snXSkge307XG4gICAgLyoqXG4gICAqIFRoZSBjb3JuZXIgcmFkaXVzIG9mIHRoZSBidXR0b25cbiAgICovXG4gIHNldCBib3JkZXIoXzogQ29tcG9uZW50cy5CcUJ1dHRvblsnYm9yZGVyJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJZiB0cnVlLCB0aGUgYnV0dG9uIHdpbGwgYmUgZGlzYWJsZWQgKG5vIGludGVyYWN0aW9uIGFsbG93ZWQpXG4gICAqL1xuICBzZXQgZGlzYWJsZWQoXzogQ29tcG9uZW50cy5CcUJ1dHRvblsnZGlzYWJsZWQnXSkge307XG4gICAgLyoqXG4gICAqIFRlbGxzIHRoZSBicm93c2VyIHRvIHRyZWF0IHRoZSBsaW5rZWQgVVJMIGFzIGEgZG93bmxvYWQuIE9ubHkgdXNlZCB3aGVuIGBocmVmYCBpcyBzZXQuXG5EZXRhaWxzOiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYSNhdHRyLWRvd25sb2FkXG4gICAqL1xuICBzZXQgZG93bmxvYWQoXzogQ29tcG9uZW50cy5CcUJ1dHRvblsnZG93bmxvYWQnXSkge307XG4gICAgLyoqXG4gICAqIFdoZW4gc2V0LCB0aGUgdW5kZXJseWluZyBidXR0b24gd2lsbCBiZSByZW5kZXJlZCBhcyBhbiBgPGE+YCB3aXRoIHRoaXMgYGhyZWZgIGluc3RlYWQgb2YgYSBgPGJ1dHRvbj5gXG4gICAqL1xuICBzZXQgaHJlZihfOiBDb21wb25lbnRzLkJxQnV0dG9uWydocmVmJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJdCBkZXRlcm1pbmF0ZSBob3cgdGhlIGNvbnRlbnQgc2hvdWxkIGJlIGFsaWduZWRcbiAgICovXG4gIHNldCBqdXN0aWZ5Q29udGVudChfOiBDb21wb25lbnRzLkJxQnV0dG9uWydqdXN0aWZ5Q29udGVudCddKSB7fTtcbiAgICAvKipcbiAgICogSWYgYHRydWVgIGl0IHdpbGwgZGlzcGxheSB0aGUgYnV0dG9uIGluIGEgbG9hZGluZyBzdGF0ZVxuICAgKi9cbiAgc2V0IGxvYWRpbmcoXzogQ29tcG9uZW50cy5CcUJ1dHRvblsnbG9hZGluZyddKSB7fTtcbiAgICAvKipcbiAgICogVGhlIHNpemUgb2YgdGhlIGJ1dHRvblxuICAgKi9cbiAgc2V0IHNpemUoXzogQ29tcG9uZW50cy5CcUJ1dHRvblsnc2l6ZSddKSB7fTtcbiAgICAvKipcbiAgICogV2hlcmUgdG8gZGlzcGxheSB0aGUgbGlua2VkIFVSTCwgYXMgdGhlIG5hbWUgZm9yIGEgYnJvd3NpbmcgY29udGV4dCAoYSBgdGFiYCwgYHdpbmRvd2AsIG9yIGA8aWZyYW1lPmApXG5EZXRhaWxzOiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYSNhdHRyLXRhcmdldFxuICAgKi9cbiAgc2V0IHRhcmdldChfOiBDb21wb25lbnRzLkJxQnV0dG9uWyd0YXJnZXQnXSkge307XG4gICAgLyoqXG4gICAqIFRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mIHRoZSBidXR0b25cbiAgICovXG4gIHNldCB0eXBlKF86IENvbXBvbmVudHMuQnFCdXR0b25bJ3R5cGUnXSkge307XG4gICAgLyoqXG4gICAqIFRoZSB2YXJpYW50IG9mIGJ1dHRvbiB0byBhcHBseSBvbiB0b3Agb2YgdGhlIGFwcGVhcmFuY2UgKGFwcGxpY2FibGUgb25seSB0byBgYXBwZWFyYW5jZT1cInByaW1hcnlcImApXG4gICAqL1xuICBzZXQgdmFyaWFudChfOiBDb21wb25lbnRzLkJxQnV0dG9uWyd2YXJpYW50J10pIHt9O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydicUJsdXInLCAnYnFGb2N1cycsICdicUNsaWNrJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEJxQnV0dG9uIGV4dGVuZHMgQ29tcG9uZW50cy5CcUJ1dHRvbiB7XG4gIC8qKlxuICAgKiBIYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBidXR0b24gbG9zZXMgZm9jdXNcbiAgICovXG4gIGJxQmx1cjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcUJ1dHRvbkVsZW1lbnQ+PjtcbiAgLyoqXG4gICAqIEhhbmRsZXIgdG8gYmUgY2FsbGVkIHdoZW4gdGhlIGJ1dHRvbiBpcyBjbGlja2VkXG4gICAqL1xuICBicUZvY3VzOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTEJxQnV0dG9uRWxlbWVudD4+O1xuICAvKipcbiAgICogSGFuZGxlciB0byBiZSBjYWxsZWQgd2hlbiBidXR0b24gZ2V0cyBmb2N1c1xuICAgKi9cbiAgYnFDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcUJ1dHRvbkVsZW1lbnQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYm9yZGVyJywgJ3R5cGUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JxLWNhcmQnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2JvcmRlcicsICd0eXBlJ10sXG59KVxuZXhwb3J0IGNsYXNzIEJxQ2FyZCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEJxQ2FyZEVsZW1lbnQ7XG4gICAgLyoqXG4gICAqIFR5cGUgb2YgY2FyZCBjb21wb25lbnRcbiAgICovXG4gIHNldCB0eXBlKF86IENvbXBvbmVudHMuQnFDYXJkWyd0eXBlJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgY29ybmVyIHJhZGl1cyBvZiB0aGUgY2FyZCBjb21wb25lbnRcbiAgICovXG4gIHNldCBib3JkZXIoXzogQ29tcG9uZW50cy5CcUNhcmRbJ2JvcmRlciddKSB7fTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQnFDYXJkIGV4dGVuZHMgQ29tcG9uZW50cy5CcUNhcmQge31cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYmFja2dyb3VuZE9uSG92ZXInLCAnY2hlY2tlZCcsICdkaXNhYmxlZCcsICdmb3JtSWQnLCAnZm9ybVZhbGlkYXRpb25NZXNzYWdlJywgJ2luZGV0ZXJtaW5hdGUnLCAnbmFtZScsICdyZXF1aXJlZCcsICd2YWx1ZSddLFxuICBtZXRob2RzOiBbJ3ZDbGljaycsICd2Rm9jdXMnLCAndkJsdXInXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JxLWNoZWNrYm94JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydiYWNrZ3JvdW5kT25Ib3ZlcicsICdjaGVja2VkJywgJ2Rpc2FibGVkJywgJ2Zvcm1JZCcsICdmb3JtVmFsaWRhdGlvbk1lc3NhZ2UnLCAnaW5kZXRlcm1pbmF0ZScsICduYW1lJywgJ3JlcXVpcmVkJywgJ3ZhbHVlJ10sXG59KVxuZXhwb3J0IGNsYXNzIEJxQ2hlY2tib3gge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxCcUNoZWNrYm94RWxlbWVudDtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSBjaGVja2JveCBkaXNwbGF5cyBiYWNrZ3JvdW5kIG9uIGhvdmVyXG4gICAqL1xuICBzZXQgYmFja2dyb3VuZE9uSG92ZXIoXzogQ29tcG9uZW50cy5CcUNoZWNrYm94WydiYWNrZ3JvdW5kT25Ib3ZlciddKSB7fTtcbiAgICAvKipcbiAgICogVGhlIGZvcm0gSUQgdGhhdCB0aGUgY2hlY2tib3ggaXMgYXNzb2NpYXRlZCB3aXRoXG4gICAqL1xuICBzZXQgZm9ybUlkKF86IENvbXBvbmVudHMuQnFDaGVja2JveFsnZm9ybUlkJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgbmF0aXZlIGZvcm0gdmFsaWRhdGlvbiBtZXNzYWdlXG4gICAqL1xuICBzZXQgZm9ybVZhbGlkYXRpb25NZXNzYWdlKF86IENvbXBvbmVudHMuQnFDaGVja2JveFsnZm9ybVZhbGlkYXRpb25NZXNzYWdlJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJZiB0cnVlIGNoZWNrYm94IGlzIGNoZWNrZWRcbiAgICovXG4gIHNldCBjaGVja2VkKF86IENvbXBvbmVudHMuQnFDaGVja2JveFsnY2hlY2tlZCddKSB7fTtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSBjaGVja2JveCBpcyBkaXNhYmxlZFxuICAgKi9cbiAgc2V0IGRpc2FibGVkKF86IENvbXBvbmVudHMuQnFDaGVja2JveFsnZGlzYWJsZWQnXSkge307XG4gICAgLyoqXG4gICAqIEEgc3RhdGUgdGhhdCBpcyBuZWl0aGVyIGNoZWNrZWQgbm9yIHVuY2hlY2tlZFxuICAgKi9cbiAgc2V0IGluZGV0ZXJtaW5hdGUoXzogQ29tcG9uZW50cy5CcUNoZWNrYm94WydpbmRldGVybWluYXRlJ10pIHt9O1xuICAgIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBIVE1MIGlucHV0IGZvcm0gY29udHJvbC4gU3VibWl0dGVkIHdpdGggdGhlIGZvcm0gYXMgcGFydCBvZiBhIG5hbWUvdmFsdWUgcGFpci5cbiAgICovXG4gIHNldCBuYW1lKF86IENvbXBvbmVudHMuQnFDaGVja2JveFsnbmFtZSddKSB7fTtcbiAgICAvKipcbiAgICogSWYgYHRydWVgLCBpdCB3aWxsIGluZGljYXRlIHRoYXQgdGhlIHVzZXIgbXVzdCBzcGVjaWZ5IGEgdmFsdWUgZm9yIHRoZSBjaGVja2JveCBiZWZvcmUgdGhlIG93bmluZyBmb3JtIGNhbiBiZSBzdWJtaXR0ZWRcbiAgICovXG4gIHNldCByZXF1aXJlZChfOiBDb21wb25lbnRzLkJxQ2hlY2tib3hbJ3JlcXVpcmVkJ10pIHt9O1xuICAgIC8qKlxuICAgKiBBIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHZhbHVlIG9mIHRoZSBjaGVja2JveC4gUHJpbWFyaWx5IHVzZWQgdG8gZGlmZmVyZW50aWF0ZSBhIGxpc3Qgb2YgcmVsYXRlZCBjaGVja2JveGVzIHRoYXQgaGF2ZSB0aGUgc2FtZSBuYW1lLlxuICAgKi9cbiAgc2V0IHZhbHVlKF86IENvbXBvbmVudHMuQnFDaGVja2JveFsndmFsdWUnXSkge307XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ2JxQ2hhbmdlJywgJ2JxRm9jdXMnLCAnYnFCbHVyJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEJxQ2hlY2tib3ggZXh0ZW5kcyBDb21wb25lbnRzLkJxQ2hlY2tib3gge1xuICAvKipcbiAgICogSGFuZGxlciB0byBiZSBjYWxsZWQgd2hlbiB0aGUgY2hlY2tib3ggc3RhdGUgY2hhbmdlc1xuICAgKi9cbiAgYnFDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IGNoZWNrZWQ6IGJvb2xlYW4gfT4+O1xuICAvKipcbiAgICogSGFuZGxlciB0byBiZSBjYWxsZWQgd2hlbiB0aGUgY2hlY2tib3ggZ2V0cyBmb2N1c1xuICAgKi9cbiAgYnFGb2N1czogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcUNoZWNrYm94RWxlbWVudD4+O1xuICAvKipcbiAgICogSGFuZGxlciB0byBiZSBjYWxsZWQgd2hlbiB0aGUgY2hlY2tib3ggbG9zZXMgZm9jdXNcbiAgICovXG4gIGJxQmx1cjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcUNoZWNrYm94RWxlbWVudD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhdXRvZm9jdXMnLCAnY2xlYXJCdXR0b25MYWJlbCcsICdkaXNhYmxlQ2xlYXInLCAnZGlzYWJsZWQnLCAnZGlzdGFuY2UnLCAnZmlyc3REYXlPZldlZWsnLCAnZm9ybScsICdmb3JtYXRPcHRpb25zJywgJ2lzRGF0ZURpc2FsbG93ZWQnLCAnbG9jYWxlJywgJ21heCcsICdtaW4nLCAnbW9udGhzJywgJ21vbnRoc1BlclZpZXcnLCAnbmFtZScsICdvcGVuJywgJ3BhbmVsSGVpZ2h0JywgJ3BsYWNlaG9sZGVyJywgJ3BsYWNlbWVudCcsICdyZXF1aXJlZCcsICdzaG93T3V0c2lkZURheXMnLCAnc2tpZGRpbmcnLCAnc3RyYXRlZ3knLCAndGVudGF0aXZlJywgJ3R5cGUnLCAndmFsaWRhdGlvblN0YXR1cycsICd2YWx1ZSddLFxuICBtZXRob2RzOiBbJ2NsZWFyJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicS1kYXRlLXBpY2tlcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYXV0b2ZvY3VzJywgJ2NsZWFyQnV0dG9uTGFiZWwnLCAnZGlzYWJsZUNsZWFyJywgJ2Rpc2FibGVkJywgJ2Rpc3RhbmNlJywgJ2ZpcnN0RGF5T2ZXZWVrJywgJ2Zvcm0nLCAnZm9ybWF0T3B0aW9ucycsICdpc0RhdGVEaXNhbGxvd2VkJywgJ2xvY2FsZScsICdtYXgnLCAnbWluJywgJ21vbnRocycsICdtb250aHNQZXJWaWV3JywgJ25hbWUnLCAnb3BlbicsICdwYW5lbEhlaWdodCcsICdwbGFjZWhvbGRlcicsICdwbGFjZW1lbnQnLCAncmVxdWlyZWQnLCAnc2hvd091dHNpZGVEYXlzJywgJ3NraWRkaW5nJywgJ3N0cmF0ZWd5JywgJ3RlbnRhdGl2ZScsICd0eXBlJywgJ3ZhbGlkYXRpb25TdGF0dXMnLCAndmFsdWUnXSxcbn0pXG5leHBvcnQgY2xhc3MgQnFEYXRlUGlja2VyIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MQnFEYXRlUGlja2VyRWxlbWVudDtcbiAgICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgRGF0ZSBwaWNrZXIgaW5wdXQgd2lsbCBiZSBmb2N1c2VkIG9uIGNvbXBvbmVudCByZW5kZXJcbiAgICovXG4gIHNldCBhdXRvZm9jdXMoXzogQ29tcG9uZW50cy5CcURhdGVQaWNrZXJbJ2F1dG9mb2N1cyddKSB7fTtcbiAgICAvKipcbiAgICogVGhlIGNsZWFyIGJ1dHRvbiBhcmlhIGxhYmVsXG4gICAqL1xuICBzZXQgY2xlYXJCdXR0b25MYWJlbChfOiBDb21wb25lbnRzLkJxRGF0ZVBpY2tlclsnY2xlYXJCdXR0b25MYWJlbCddKSB7fTtcbiAgICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgY2xlYXIgYnV0dG9uIHdvbid0IGJlIGRpc3BsYXllZFxuICAgKi9cbiAgc2V0IGRpc2FibGVDbGVhcihfOiBDb21wb25lbnRzLkJxRGF0ZVBpY2tlclsnZGlzYWJsZUNsZWFyJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgRGF0ZSBwaWNrZXIgaW5wdXQgaXMgZGlzYWJsZWQgb3Igbm90LlxuSWYgYHRydWVgLCB0aGUgRGF0ZSBwaWNrZXIgaXMgZGlzYWJsZWQgYW5kIGNhbm5vdCBiZSBpbnRlcmFjdGVkIHdpdGguXG4gICAqL1xuICBzZXQgZGlzYWJsZWQoXzogQ29tcG9uZW50cy5CcURhdGVQaWNrZXJbJ2Rpc2FibGVkJ10pIHt9O1xuICAgIC8qKlxuICAgKiBSZXByZXNlbnRzIHRoZSBkaXN0YW5jZSAoZ3V0dGVyIG9yIG1hcmdpbikgYmV0d2VlbiB0aGUgRGF0ZSBwaWNrZXIgcGFuZWwgYW5kIHRoZSBpbnB1dCBlbGVtZW50LlxuICAgKi9cbiAgc2V0IGRpc3RhbmNlKF86IENvbXBvbmVudHMuQnFEYXRlUGlja2VyWydkaXN0YW5jZSddKSB7fTtcbiAgICAvKipcbiAgICogVGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlaywgd2hlcmUgU3VuZGF5IGlzIDAsIE1vbmRheSBpcyAxLCBldGNcbiAgICovXG4gIHNldCBmaXJzdERheU9mV2VlayhfOiBDb21wb25lbnRzLkJxRGF0ZVBpY2tlclsnZmlyc3REYXlPZldlZWsnXSkge307XG4gICAgLyoqXG4gICAqIFRoZSBvcHRpb25zIHRvIHVzZSB3aGVuIGZvcm1hdHRpbmcgdGhlIGRpc3BsYXllZCB2YWx1ZS5cbkRldGFpbHM6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL0ludGwvRGF0ZVRpbWVGb3JtYXQjdXNpbmdfb3B0aW9uc1xuICAgKi9cbiAgc2V0IGZvcm1hdE9wdGlvbnMoXzogQ29tcG9uZW50cy5CcURhdGVQaWNrZXJbJ2Zvcm1hdE9wdGlvbnMnXSkge307XG4gICAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgZm9ybSB0aGF0IHRoZSBEYXRlIHBpY2tlciBpbnB1dCBiZWxvbmdzIHRvLlxuICAgKi9cbiAgc2V0IGZvcm0oXzogQ29tcG9uZW50cy5CcURhdGVQaWNrZXJbJ2Zvcm0nXSkge307XG4gICAgLyoqXG4gICAqIEEgZnVuY3Rpb24gdGhhdCB0YWtlcyBhIGRhdGUgYW5kIHJldHVybnMgdHJ1ZSBpZiB0aGUgZGF0ZSBzaG91bGQgbm90IGJlIHNlbGVjdGFibGVcbiAgICovXG4gIHNldCBpc0RhdGVEaXNhbGxvd2VkKF86IENvbXBvbmVudHMuQnFEYXRlUGlja2VyWydpc0RhdGVEaXNhbGxvd2VkJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgbG9jYWxlIGZvciBmb3JtYXR0aW5nIGRhdGVzLiBJZiBub3Qgc2V0LCB3aWxsIHVzZSB0aGUgYnJvd3NlcidzIGxvY2FsZS5cbkRldGFpbHM6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL0ludGwjbG9jYWxlc19hcmd1bWVudFxuICAgKi9cbiAgc2V0IGxvY2FsZShfOiBDb21wb25lbnRzLkJxRGF0ZVBpY2tlclsnbG9jYWxlJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgbGF0ZXN0IGRhdGUgdGhhdCBjYW4gYmUgc2VsZWN0ZWRcbiAgICovXG4gIHNldCBtYXgoXzogQ29tcG9uZW50cy5CcURhdGVQaWNrZXJbJ21heCddKSB7fTtcbiAgICAvKipcbiAgICogVGhlIGVhcmxpZXN0IGRhdGUgdGhhdCBjYW4gYmUgc2VsZWN0ZWRcbiAgICovXG4gIHNldCBtaW4oXzogQ29tcG9uZW50cy5CcURhdGVQaWNrZXJbJ21pbiddKSB7fTtcbiAgICAvKipcbiAgICogTnVtYmVyIG9mIG1vbnRocyB0byBzaG93IHdoZW4gcmFuZ2UgaXMgYHRydWVgXG4gICAqL1xuICBzZXQgbW9udGhzKF86IENvbXBvbmVudHMuQnFEYXRlUGlja2VyWydtb250aHMnXSkge307XG4gICAgLyoqXG4gICAqIFNwZWNpZmllcyBob3cgdGhlIG5leHQvcHJldmlvdXMgYnV0dG9ucyBzaG91bGQgbmF2aWdhdGUgdGhlIGNhbGVuZGFyLlxuLSBzaW5nbGU6IFRoZSBidXR0b25zIHdpbGwgbmF2aWdhdGUgYnkgYSBzaW5nbGUgbW9udGggYXQgYSB0aW1lLlxuLSBtb250aHM6IFRoZSBidXR0b25zIHdpbGwgbmF2aWdhdGUgYnkgdGhlIG51bWJlciBvZiBtb250aHMgZGlzcGxheWVkIHBlciB2aWV3LlxuICAgKi9cbiAgc2V0IG1vbnRoc1BlclZpZXcoXzogQ29tcG9uZW50cy5CcURhdGVQaWNrZXJbJ21vbnRoc1BlclZpZXcnXSkge307XG4gICAgLyoqXG4gICAqIFRoZSBEYXRlIHBpY2tlciBpbnB1dCBuYW1lLlxuICAgKi9cbiAgc2V0IG5hbWUoXzogQ29tcG9uZW50cy5CcURhdGVQaWNrZXJbJ25hbWUnXSkge307XG4gICAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIERhdGUgcGlja2VyIHBhbmVsIHdpbGwgYmUgdmlzaWJsZS5cbiAgICovXG4gIHNldCBvcGVuKF86IENvbXBvbmVudHMuQnFEYXRlUGlja2VyWydvcGVuJ10pIHt9O1xuICAgIC8qKlxuICAgKiBXaGVuIHNldCwgaXQgd2lsbCBvdmVycmlkZSB0aGUgaGVpZ2h0IG9mIHRoZSBEYXRlIHBpY2tlciBwYW5lbC5cbiAgICovXG4gIHNldCBwYW5lbEhlaWdodChfOiBDb21wb25lbnRzLkJxRGF0ZVBpY2tlclsncGFuZWxIZWlnaHQnXSkge307XG4gICAgLyoqXG4gICAqIFRoZSBEYXRlIHBpY2tlciBpbnB1dCBwbGFjZWhvbGRlciB0ZXh0IHZhbHVlXG4gICAqL1xuICBzZXQgcGxhY2Vob2xkZXIoXzogQ29tcG9uZW50cy5CcURhdGVQaWNrZXJbJ3BsYWNlaG9sZGVyJ10pIHt9O1xuICAgIC8qKlxuICAgKiBQb3NpdGlvbiBvZiB0aGUgRGF0ZSBwaWNrZXIgcGFuZWxcbiAgICovXG4gIHNldCBwbGFjZW1lbnQoXzogQ29tcG9uZW50cy5CcURhdGVQaWNrZXJbJ3BsYWNlbWVudCddKSB7fTtcbiAgICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgb3Igbm90IHRoZSBEYXRlIHBpY2tlciBpbnB1dCBpcyByZXF1aXJlZCB0byBiZSBmaWxsZWQgb3V0IGJlZm9yZSBzdWJtaXR0aW5nIHRoZSBmb3JtLlxuICAgKi9cbiAgc2V0IHJlcXVpcmVkKF86IENvbXBvbmVudHMuQnFEYXRlUGlja2VyWydyZXF1aXJlZCddKSB7fTtcbiAgICAvKipcbiAgICogUmVwcmVzZW50cyB0aGUgc2tpZGRpbmcgYmV0d2VlbiB0aGUgRGF0ZSBwaWNrZXIgcGFuZWwgYW5kIHRoZSBpbnB1dCBlbGVtZW50LlxuICAgKi9cbiAgc2V0IHNraWRkaW5nKF86IENvbXBvbmVudHMuQnFEYXRlUGlja2VyWydza2lkZGluZyddKSB7fTtcbiAgICAvKipcbiAgICogV2hldGhlciB0byBzaG93IGRheXMgb3V0c2lkZSB0aGUgbW9udGhcbiAgICovXG4gIHNldCBzaG93T3V0c2lkZURheXMoXzogQ29tcG9uZW50cy5CcURhdGVQaWNrZXJbJ3Nob3dPdXRzaWRlRGF5cyddKSB7fTtcbiAgICAvKipcbiAgICogRGVmaW5lcyB0aGUgc3RyYXRlZ3kgdG8gcG9zaXRpb24gdGhlIERhdGUgcGlja2VyIHBhbmVsXG4gICAqL1xuICBzZXQgc3RyYXRlZ3koXzogQ29tcG9uZW50cy5CcURhdGVQaWNrZXJbJ3N0cmF0ZWd5J10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgZGF0ZSB0aGF0IGlzIHRlbnRhdGl2ZWx5IHNlbGVjdGVkIGUuZy4gdGhlIHN0YXJ0IG9mIGEgcmFuZ2Ugc2VsZWN0aW9uXG4gICAqL1xuICBzZXQgdGVudGF0aXZlKF86IENvbXBvbmVudHMuQnFEYXRlUGlja2VyWyd0ZW50YXRpdmUnXSkge307XG4gICAgLyoqXG4gICAqIEl0IGRlZmluZXMgaG93IHRoZSBjYWxlbmRhciB3aWxsIGJlaGF2ZSwgYWxsb3dpbmcgc2luZ2xlIGRhdGUgc2VsZWN0aW9uLCByYW5nZSBzZWxlY3Rpb24sIG9yIG11bHRpcGxlIGRhdGUgc2VsZWN0aW9uXG4gICAqL1xuICBzZXQgdHlwZShfOiBDb21wb25lbnRzLkJxRGF0ZVBpY2tlclsndHlwZSddKSB7fTtcbiAgICAvKipcbiAgICogVGhlIHZhbGlkYXRpb24gc3RhdHVzIG9mIHRoZSBTZWxlY3QgaW5wdXQuIEByZW1hcmtzIFRoaXMgcHJvcGVydHkgaXMgdXNlZCB0byBpbmRpY2F0ZSB0aGUgdmFsaWRhdGlvbiBzdGF0dXMgb2YgdGhlIHNlbGVjdCBpbnB1dC4gSXQgY2FuIGJlIHNldCB0byBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6XG4tIGAnbm9uZSdgOiBObyB2YWxpZGF0aW9uIHN0YXR1cyBpcyBzZXQuXG4tIGAnZXJyb3InYDogVGhlIGlucHV0IGhhcyBhIHZhbGlkYXRpb24gZXJyb3IuXG4tIGAnd2FybmluZydgOiBUaGUgaW5wdXQgaGFzIGEgdmFsaWRhdGlvbiB3YXJuaW5nLlxuLSBgJ3N1Y2Nlc3MnYDogVGhlIGlucHV0IGhhcyBwYXNzZWQgdmFsaWRhdGlvbi5cbiAgICovXG4gIHNldCB2YWxpZGF0aW9uU3RhdHVzKF86IENvbXBvbmVudHMuQnFEYXRlUGlja2VyWyd2YWxpZGF0aW9uU3RhdHVzJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgc2VsZWN0IGlucHV0IHZhbHVlIHJlcHJlc2VudHMgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBkYXRlIG9yIHJhbmdlIGFuZCBjYW4gYmUgdXNlZCB0byByZXNldCB0aGUgZmllbGQgdG8gYSBwcmV2aW91cyB2YWx1ZS5cbkFsbCBkYXRlcyBhcmUgZXhwZWN0ZWQgaW4gSVNPLTg2MDEgZm9ybWF0IChZWVlZLU1NLUREKS5cbiAgICovXG4gIHNldCB2YWx1ZShfOiBDb21wb25lbnRzLkJxRGF0ZVBpY2tlclsndmFsdWUnXSkge307XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ2JxQmx1cicsICdicUNoYW5nZScsICdicUNsZWFyJywgJ2JxRm9jdXMnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQnFEYXRlUGlja2VyIGV4dGVuZHMgQ29tcG9uZW50cy5CcURhdGVQaWNrZXIge1xuICAvKipcbiAgICogQ2FsbGJhY2sgaGFuZGxlciBlbWl0dGVkIHdoZW4gdGhlIGlucHV0IGxvc2VzIGZvY3VzXG4gICAqL1xuICBicUJsdXI6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxIVE1MQnFEYXRlUGlja2VyRWxlbWVudD4+O1xuICAvKipcbiAgICogQ2FsbGJhY2sgaGFuZGxlciBlbWl0dGVkIHdoZW4gdGhlIGlucHV0IHZhbHVlIGhhcyBjaGFuZ2VkIGFuZCB0aGUgaW5wdXQgbG9zZXMgZm9jdXMuXG5UaGlzIGhhbmRsZXIgaXMgY2FsbGVkIHdoZW5ldmVyIHRoZSB1c2VyIGZpbmlzaGVzIHR5cGluZyBvciBwYXN0aW5nIHRleHQgaW50byB0aGUgaW5wdXQgZmllbGQgYW5kIHRoZW4gY2xpY2tzIG91dHNpZGUgb2YgdGhlIGlucHV0IGZpZWxkLlxuICAgKi9cbiAgYnFDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHZhbHVlOiBzdHJpbmc7IGVsOiBIVE1MQnFEYXRlUGlja2VyRWxlbWVudCB9Pj47XG4gIC8qKlxuICAgKiBDYWxsYmFjayBoYW5kbGVyIGVtaXR0ZWQgd2hlbiB0aGUgaW5wdXQgdmFsdWUgaGFzIGJlZW4gY2xlYXJlZFxuICAgKi9cbiAgYnFDbGVhcjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcURhdGVQaWNrZXJFbGVtZW50Pj47XG4gIC8qKlxuICAgKiBDYWxsYmFjayBoYW5kbGVyIGVtaXR0ZWQgd2hlbiB0aGUgaW5wdXQgaGFzIHJlY2VpdmVkIGZvY3VzXG4gICAqL1xuICBicUZvY3VzOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTEJxRGF0ZVBpY2tlckVsZW1lbnQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYm9yZGVyJywgJ2Rpc2FibGVCYWNrZHJvcCcsICdkaXNhYmxlQ2xvc2VDbGlja091dHNpZGUnLCAnZGlzYWJsZUNsb3NlRXNjS2V5ZG93bicsICdmb290ZXJBcHBlYXJhbmNlJywgJ2hpZGVDbG9zZUJ1dHRvbicsICdvcGVuJywgJ3NpemUnXSxcbiAgbWV0aG9kczogWydzaG93JywgJ2hpZGUnLCAnY2FuY2VsJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicS1kaWFsb2cnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2JvcmRlcicsICdkaXNhYmxlQmFja2Ryb3AnLCAnZGlzYWJsZUNsb3NlQ2xpY2tPdXRzaWRlJywgJ2Rpc2FibGVDbG9zZUVzY0tleWRvd24nLCAnZm9vdGVyQXBwZWFyYW5jZScsICdoaWRlQ2xvc2VCdXR0b24nLCAnb3BlbicsICdzaXplJ10sXG59KVxuZXhwb3J0IGNsYXNzIEJxRGlhbG9nIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MQnFEaWFsb2dFbGVtZW50O1xuICAgIC8qKlxuICAgKiBCb3JkZXIgcmFkaXVzIG9mIHRoZSBkaWFsb2cgY29tcG9uZW50XG4gICAqL1xuICBzZXQgYm9yZGVyKF86IENvbXBvbmVudHMuQnFEaWFsb2dbJ2JvcmRlciddKSB7fTtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSwgdGhlIGJhY2tkcm9wIG92ZXJsYXkgd29uJ3QgYmUgc2hvd24gd2hlbiB0aGUgZGlhbG9nIG9wZW5zXG4gICAqL1xuICBzZXQgZGlzYWJsZUJhY2tkcm9wKF86IENvbXBvbmVudHMuQnFEaWFsb2dbJ2Rpc2FibGVCYWNrZHJvcCddKSB7fTtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSwgdGhlIGRpYWxvZyB3aWxsIG5vdCBjbG9zZSB3aGVuIHRoZSBbRXNjXSBrZXkgaXMgcHJlc3NcbiAgICovXG4gIHNldCBkaXNhYmxlQ2xvc2VFc2NLZXlkb3duKF86IENvbXBvbmVudHMuQnFEaWFsb2dbJ2Rpc2FibGVDbG9zZUVzY0tleWRvd24nXSkge307XG4gICAgLyoqXG4gICAqIElmIHRydWUsIHRoZSBkaWFsb2cgd2lsbCBub3QgY2xvc2Ugd2hlbiBjbGlja2luZyBvbiB0aGUgYmFja2Ryb3Agb3ZlcmxheVxuICAgKi9cbiAgc2V0IGRpc2FibGVDbG9zZUNsaWNrT3V0c2lkZShfOiBDb21wb25lbnRzLkJxRGlhbG9nWydkaXNhYmxlQ2xvc2VDbGlja091dHNpZGUnXSkge307XG4gICAgLyoqXG4gICAqIFRoZSBhcHBlYXJhbmNlIG9mIGZvb3RlclxuICAgKi9cbiAgc2V0IGZvb3RlckFwcGVhcmFuY2UoXzogQ29tcG9uZW50cy5CcURpYWxvZ1snZm9vdGVyQXBwZWFyYW5jZSddKSB7fTtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSwgaXQgaGlkZXMgdGhlIGNsb3NlIGJ1dHRvblxuICAgKi9cbiAgc2V0IGhpZGVDbG9zZUJ1dHRvbihfOiBDb21wb25lbnRzLkJxRGlhbG9nWydoaWRlQ2xvc2VCdXR0b24nXSkge307XG4gICAgLyoqXG4gICAqIElmIHRydWUsIHRoZSBkaWFsb2cgd2lsbCBiZSBzaG93biBhcyBvcGVuXG4gICAqL1xuICBzZXQgb3BlbihfOiBDb21wb25lbnRzLkJxRGlhbG9nWydvcGVuJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgc2l6ZSBvZiB0aGUgZGlhbG9nXG4gICAqL1xuICBzZXQgc2l6ZShfOiBDb21wb25lbnRzLkJxRGlhbG9nWydzaXplJ10pIHt9O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydicUNhbmNlbCcsICdicUNsb3NlJywgJ2JxT3BlbicsICdicUFmdGVyT3BlbicsICdicUFmdGVyQ2xvc2UnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQnFEaWFsb2cgZXh0ZW5kcyBDb21wb25lbnRzLkJxRGlhbG9nIHtcbiAgLyoqXG4gICAqIENhbGxiYWNrIGhhbmRsZXIgZW1pdHRlZCB3aGVuIHRoZSBkaWFsb2cgaGFzIGJlZW4gY2FuY2VsZWQgb3IgZGlzbWlzc2VkXG4gICAqL1xuICBicUNhbmNlbDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIENhbGxiYWNrIGhhbmRsZXIgZW1pdHRlZCB3aGVuIHRoZSBkaWFsb2cgd2lsbCBjbG9zZVxuICAgKi9cbiAgYnFDbG9zZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIENhbGxiYWNrIGhhbmRsZXIgZW1pdHRlZCB3aGVuIHRoZSBkaWFsb2cgd2lsbCBvcGVuXG4gICAqL1xuICBicU9wZW46IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBDYWxsYmFjayBoYW5kbGVyIGVtaXR0ZWQgd2hlbiB0aGUgZGlhbG9nIGZpbmlzaCBvcGVuaW5nXG4gICAqL1xuICBicUFmdGVyT3BlbjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIENhbGxiYWNrIGhhbmRsZXIgZW1pdHRlZCB3aGVuIHRoZSBkaWFsb2cgZmluaXNoIGNsb3NpbmdcbiAgICovXG4gIGJxQWZ0ZXJDbG9zZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnZGFzaGVkJywgJ29yaWVudGF0aW9uJywgJ3N0cm9rZUJhc2lzJywgJ3N0cm9rZUNvbG9yJywgJ3N0cm9rZURhc2hHYXAnLCAnc3Ryb2tlRGFzaFdpZHRoJywgJ3N0cm9rZUxpbmVjYXAnLCAnc3Ryb2tlVGhpY2tuZXNzJywgJ3RpdGxlQWxpZ25tZW50J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicS1kaXZpZGVyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydkYXNoZWQnLCAnb3JpZW50YXRpb24nLCAnc3Ryb2tlQmFzaXMnLCAnc3Ryb2tlQ29sb3InLCAnc3Ryb2tlRGFzaEdhcCcsICdzdHJva2VEYXNoV2lkdGgnLCAnc3Ryb2tlTGluZWNhcCcsICdzdHJva2VUaGlja25lc3MnLCAndGl0bGVBbGlnbm1lbnQnXSxcbn0pXG5leHBvcnQgY2xhc3MgQnFEaXZpZGVyIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MQnFEaXZpZGVyRWxlbWVudDtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSwgdGhlIGRpdmlkZXIgaGFzIGEgZGFzaGVkIHBhdHRlcm5cbiAgICovXG4gIHNldCBkYXNoZWQoXzogQ29tcG9uZW50cy5CcURpdmlkZXJbJ2Rhc2hlZCddKSB7fTtcbiAgICAvKipcbiAgICogVGhlIGRlZmF1bHQgb3JpZW50YXRpb24gb2YgdGhlIGRpdmlkZXJcbiAgICovXG4gIHNldCBvcmllbnRhdGlvbihfOiBDb21wb25lbnRzLkJxRGl2aWRlclsnb3JpZW50YXRpb24nXSkge307XG4gICAgLyoqXG4gICAqIFNldCB0aGUgc3Ryb2tlIGNvbG9yIG9mIHRoZSBkaXZpZGVyLiBUaGUgdmFsdWUgc2hvdWxkIGJlIGEgdmFsaWQgdmFsdWUgb2YgdGhlIHBhbGV0dGUgY29sb3JcbiAgICovXG4gIHNldCBzdHJva2VDb2xvcihfOiBDb21wb25lbnRzLkJxRGl2aWRlclsnc3Ryb2tlQ29sb3InXSkge307XG4gICAgLyoqXG4gICAqIFNldCB0aGUgYWxpZ25tZW50IG9mIHRoZSB0aXRsZSBvbiB0aGUgbWFpbiBheGlzIG9mIHRoZSBkaXZpZGVyIChob3Jpem9udGFsIC8gdmVydGljYWwpXG4gICAqL1xuICBzZXQgdGl0bGVBbGlnbm1lbnQoXzogQ29tcG9uZW50cy5CcURpdmlkZXJbJ3RpdGxlQWxpZ25tZW50J10pIHt9O1xuICAgIC8qKlxuICAgKiBTZXQgdGhlIHdpZHRoIG9mIGVhY2ggZGFzaCBvZiB0aGUgZGl2aWRlcidzIHN0cm9rZS4gVGhpcyBpcyBhcHBsaWNhYmxlIHdoZW4gdGhlIHN0cm9rZSBpcyBkYXNoZWRcbiAgICovXG4gIHNldCBzdHJva2VEYXNoV2lkdGgoXzogQ29tcG9uZW50cy5CcURpdmlkZXJbJ3N0cm9rZURhc2hXaWR0aCddKSB7fTtcbiAgICAvKipcbiAgICogU2V0IHRoZSBnYXAgb2YgdGhlIGRpdmlkZXIncyBzdHJva2UuIFRoaXMgaXMgYXBwbGljYWJsZSB3aGVuIHRoZSBzdHJva2UgaXMgZGFzaGVkXG4gICAqL1xuICBzZXQgc3Ryb2tlRGFzaEdhcChfOiBDb21wb25lbnRzLkJxRGl2aWRlclsnc3Ryb2tlRGFzaEdhcCddKSB7fTtcbiAgICAvKipcbiAgICogU2V0IHRoZSB0aGlja25lc3Mgb2YgdGhlIGRpdmlkZXIncyBzdHJva2UuIFZhbHVlIGV4cHJlc3NlZCBpbiBweFxuICAgKi9cbiAgc2V0IHN0cm9rZVRoaWNrbmVzcyhfOiBDb21wb25lbnRzLkJxRGl2aWRlclsnc3Ryb2tlVGhpY2tuZXNzJ10pIHt9O1xuICAgIC8qKlxuICAgKiBTZXQgdGhlIG1pbiB3aWR0aCBvZiB0aGUgZGl2aWRlcidzIHN0cm9rZSB3aGVuIHRleHQgaXMgbm90IGNlbnRlcmVkLiBWYWx1ZSBleHByZXNzZWQgaW4gcHhcbiAgICovXG4gIHNldCBzdHJva2VCYXNpcyhfOiBDb21wb25lbnRzLkJxRGl2aWRlclsnc3Ryb2tlQmFzaXMnXSkge307XG4gICAgLyoqXG4gICAqIFNldCB0aGUgbGluZSBvZiB0aGUgZGl2aWRlcidzIHN0cm9rZS4gVGhpcyBpcyBhcHBsaWNhYmxlIHdoZW4gdGhlIHN0cm9rZSBpcyBkYXNoZWRcbiAgICovXG4gIHNldCBzdHJva2VMaW5lY2FwKF86IENvbXBvbmVudHMuQnFEaXZpZGVyWydzdHJva2VMaW5lY2FwJ10pIHt9O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBCcURpdmlkZXIgZXh0ZW5kcyBDb21wb25lbnRzLkJxRGl2aWRlciB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydjbG9zZU9uQ2xpY2tPdXRzaWRlJywgJ2Nsb3NlT25Fc2MnLCAnZW5hYmxlQmFja2Ryb3AnLCAnb3BlbicsICdwbGFjZW1lbnQnLCAncG9zaXRpb24nXSxcbiAgbWV0aG9kczogWydoaWRlJywgJ3Nob3cnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JxLWRyYXdlcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnY2xvc2VPbkNsaWNrT3V0c2lkZScsICdjbG9zZU9uRXNjJywgJ2VuYWJsZUJhY2tkcm9wJywgJ29wZW4nLCAncGxhY2VtZW50JywgJ3Bvc2l0aW9uJ10sXG59KVxuZXhwb3J0IGNsYXNzIEJxRHJhd2VyIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MQnFEcmF3ZXJFbGVtZW50O1xuICAgIC8qKlxuICAgKiBJZiB0cnVlLCB0aGUgYmFja2Ryb3Agb3ZlcmxheSB3aWxsIGJlIHNob3duIHdoZW4gdGhlIGRyYXdlciBvcGVuc1xuICAgKi9cbiAgc2V0IGVuYWJsZUJhY2tkcm9wKF86IENvbXBvbmVudHMuQnFEcmF3ZXJbJ2VuYWJsZUJhY2tkcm9wJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJZiB0cnVlLCB0aGUgZHJhd2VyIHdpbGwgbm90IGNsb3NlIHdoZW4gY2xpY2tpbmcgb3V0c2lkZSB0aGUgcGFuZWxcbiAgICovXG4gIHNldCBjbG9zZU9uQ2xpY2tPdXRzaWRlKF86IENvbXBvbmVudHMuQnFEcmF3ZXJbJ2Nsb3NlT25DbGlja091dHNpZGUnXSkge307XG4gICAgLyoqXG4gICAqIElmIHRydWUsIHRoZSBkaWFsb2cgd2lsbCBub3QgY2xvc2Ugd2hlbiB0aGUgW0VzY10ga2V5IGlzIHByZXNzZWRcbiAgICovXG4gIHNldCBjbG9zZU9uRXNjKF86IENvbXBvbmVudHMuQnFEcmF3ZXJbJ2Nsb3NlT25Fc2MnXSkge307XG4gICAgLyoqXG4gICAqIElmIHRydWUsIHRoZSBkcmF3ZXIgY29tcG9uZW50IHdpbGwgYmUgc2hvd25cbiAgICovXG4gIHNldCBvcGVuKF86IENvbXBvbmVudHMuQnFEcmF3ZXJbJ29wZW4nXSkge307XG4gICAgLyoqXG4gICAqICBAZGVwcmVjYXRlZCBEZWZpbmVzIHRoZSBwb3NpdGlvbiBvZiB0aGUgZHJhd2VyXG4gICAqL1xuICBzZXQgcGxhY2VtZW50KF86IENvbXBvbmVudHMuQnFEcmF3ZXJbJ3BsYWNlbWVudCddKSB7fTtcbiAgICAvKipcbiAgICogRGVmaW5lcyB0aGUgcG9zaXRpb24gb2YgdGhlIGRyYXdlclxuICAgKi9cbiAgc2V0IHBvc2l0aW9uKF86IENvbXBvbmVudHMuQnFEcmF3ZXJbJ3Bvc2l0aW9uJ10pIHt9O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydicUNsb3NlJywgJ2JxT3BlbicsICdicUFmdGVyT3BlbicsICdicUFmdGVyQ2xvc2UnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQnFEcmF3ZXIgZXh0ZW5kcyBDb21wb25lbnRzLkJxRHJhd2VyIHtcbiAgLyoqXG4gICAqIENhbGxiYWNrIGhhbmRsZXIgdG8gYmUgY2FsbGVkIHdoZW4gdGhlIGRyYXdlciBpcyBjbG9zZWRcbiAgICovXG4gIGJxQ2xvc2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcbiAgLyoqXG4gICAqIENhbGxiYWNrIGhhbmRsZXIgdG8gYmUgY2FsbGVkIHdoZW4gdGhlIGRyYXdlciBpcyBvcGVuZWRcbiAgICovXG4gIGJxT3BlbjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuICAvKipcbiAgICogQ2FsbGJhY2sgaGFuZGxlciB0byBiZSBjYWxsZWQgYWZ0ZXIgdGhlIGRyYXdlciBoYXMgYmVlbiBvcGVuZWRcbiAgICovXG4gIGJxQWZ0ZXJPcGVuOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8YW55Pj47XG4gIC8qKlxuICAgKiBDYWxsYmFjayBoYW5kbGVyIHRvIGJlIGNhbGxlZCBhZnRlciB0aGUgZHJhd2VyIGhhcyBiZWVuIGNsb3NlZFxuICAgKi9cbiAgYnFBZnRlckNsb3NlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8YW55Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2Rpc2FibGVkJywgJ2Rpc3RhbmNlJywgJ2tlZXBPcGVuT25TZWxlY3QnLCAnb3BlbicsICdwYW5lbEhlaWdodCcsICdwbGFjZW1lbnQnLCAnc2FtZVdpZHRoJywgJ3NraWRkaW5nJywgJ3N0cmF0ZWd5J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicS1kcm9wZG93bicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnZGlzYWJsZWQnLCAnZGlzdGFuY2UnLCAna2VlcE9wZW5PblNlbGVjdCcsICdvcGVuJywgJ3BhbmVsSGVpZ2h0JywgJ3BsYWNlbWVudCcsICdzYW1lV2lkdGgnLCAnc2tpZGRpbmcnLCAnc3RyYXRlZ3knXSxcbn0pXG5leHBvcnQgY2xhc3MgQnFEcm9wZG93biB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEJxRHJvcGRvd25FbGVtZW50O1xuICAgIC8qKlxuICAgKiBJZiB0cnVlLCB0aGUgZHJvcGRvd24gcGFuZWwgd2lsbCBiZSB2aXNpYmxlIGFuZCB3b24ndCBiZSBzaG93bi5cbiAgICovXG4gIHNldCBkaXNhYmxlZChfOiBDb21wb25lbnRzLkJxRHJvcGRvd25bJ2Rpc2FibGVkJ10pIHt9O1xuICAgIC8qKlxuICAgKiBSZXByZXNlbnRzIHRoZSBkaXN0YW5jZSAoZ3V0dGVyIG9yIG1hcmdpbikgYmV0d2VlbiB0aGUgcGFuZWwgYW5kIHRoZSB0cmlnZ2VyIGVsZW1lbnQuXG4gICAqL1xuICBzZXQgZGlzdGFuY2UoXzogQ29tcG9uZW50cy5CcURyb3Bkb3duWydkaXN0YW5jZSddKSB7fTtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSwgdGhlIHBhbmVsIHdpbGwgcmVtYWluIG9wZW4gYWZ0ZXIgYSBzZWxlY3Rpb24gaXMgbWFkZS5cbiAgICovXG4gIHNldCBrZWVwT3Blbk9uU2VsZWN0KF86IENvbXBvbmVudHMuQnFEcm9wZG93blsna2VlcE9wZW5PblNlbGVjdCddKSB7fTtcbiAgICAvKipcbiAgICogUG9zaXRpb24gb2YgdGhlIHBhbmVsXG4gICAqL1xuICBzZXQgcGxhY2VtZW50KF86IENvbXBvbmVudHMuQnFEcm9wZG93blsncGxhY2VtZW50J10pIHt9O1xuICAgIC8qKlxuICAgKiBJZiB0cnVlLCB0aGUgcGFuZWwgd2lsbCBiZSB2aXNpYmxlLlxuICAgKi9cbiAgc2V0IG9wZW4oXzogQ29tcG9uZW50cy5CcURyb3Bkb3duWydvcGVuJ10pIHt9O1xuICAgIC8qKlxuICAgKiBXaGVuIHNldCwgaXQgd2lsbCBvdmVycmlkZSB0aGUgaGVpZ2h0IG9mIHRoZSBkcm9wZG93biBwYW5lbFxuICAgKi9cbiAgc2V0IHBhbmVsSGVpZ2h0KF86IENvbXBvbmVudHMuQnFEcm9wZG93blsncGFuZWxIZWlnaHQnXSkge307XG4gICAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHBhbmVsIHNob3VsZCBoYXZlIHRoZSBzYW1lIHdpZHRoIGFzIHRoZSB0cmlnZ2VyIGVsZW1lbnRcbiAgICovXG4gIHNldCBzYW1lV2lkdGgoXzogQ29tcG9uZW50cy5CcURyb3Bkb3duWydzYW1lV2lkdGgnXSkge307XG4gICAgLyoqXG4gICAqIFJlcHJlc2VudHMgdGhlIHNraWRkaW5nIGJldHdlZW4gdGhlIHBhbmVsIGFuZCB0aGUgdHJpZ2dlciBlbGVtZW50LlxuICAgKi9cbiAgc2V0IHNraWRkaW5nKF86IENvbXBvbmVudHMuQnFEcm9wZG93blsnc2tpZGRpbmcnXSkge307XG4gICAgLyoqXG4gICAqIERlZmluZXMgdGhlIHN0cmF0ZWd5IHRvIHBvc2l0aW9uIHRoZSBwYW5lbFxuICAgKi9cbiAgc2V0IHN0cmF0ZWd5KF86IENvbXBvbmVudHMuQnFEcm9wZG93blsnc3RyYXRlZ3knXSkge307XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ2JxT3BlbiddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBCcURyb3Bkb3duIGV4dGVuZHMgQ29tcG9uZW50cy5CcURyb3Bkb3duIHtcbiAgLyoqXG4gICAqIENhbGxiYWNrIGhhbmRsZXIgdG8gYmUgY2FsbGVkIHdoZW4gdGhlIGRyb3Bkb3duIHBhbmVsIGlzIG9wZW5lZCBvciBjbG9zZWQuXG4gICAqL1xuICBicU9wZW46IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IG9wZW46IGJvb2xlYW4gfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydzaXplJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicS1lbXB0eS1zdGF0ZScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnc2l6ZSddLFxufSlcbmV4cG9ydCBjbGFzcyBCcUVtcHR5U3RhdGUge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxCcUVtcHR5U3RhdGVFbGVtZW50O1xuICAgIC8qKlxuICAgKiBUaGUgc2l6ZSBvZiB0aGUgZW1wdHkgc3RhdGUgY29tcG9uZW50XG4gICAqL1xuICBzZXQgc2l6ZShfOiBDb21wb25lbnRzLkJxRW1wdHlTdGF0ZVsnc2l6ZSddKSB7fTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQnFFbXB0eVN0YXRlIGV4dGVuZHMgQ29tcG9uZW50cy5CcUVtcHR5U3RhdGUge31cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnY29sb3InLCAnbGFiZWwnLCAnbmFtZScsICdzaXplJywgJ3NyYycsICd3ZWlnaHQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JxLWljb24nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2NvbG9yJywgJ2xhYmVsJywgJ25hbWUnLCAnc2l6ZScsICdzcmMnLCAnd2VpZ2h0J10sXG59KVxuZXhwb3J0IGNsYXNzIEJxSWNvbiB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEJxSWNvbkVsZW1lbnQ7XG4gICAgLyoqXG4gICAqIExhYmVsIGZvciB0aGUgaWNvbiwgdXNlZCBmb3IgYWNjZXNzaWJpbGl0eVxuICAgKi9cbiAgc2V0IGxhYmVsKF86IENvbXBvbmVudHMuQnFJY29uWydsYWJlbCddKSB7fTtcbiAgICAvKipcbiAgICogU2V0IHRoZSBzdHJva2UgY29sb3Igb2YgdGhlIFNWRy4gVGhlIHZhbHVlIHNob3VsZCBiZSBhIHZhbGlkIHZhbHVlIG9mIHRoZSBwYWxldHRlIGNvbG9yXG4gICAqL1xuICBzZXQgY29sb3IoXzogQ29tcG9uZW50cy5CcUljb25bJ2NvbG9yJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJY29uIG5hbWUgdG8gbG9hZC4gUGxlYXNlIGNoZWNrIGFsbCBhdmFpbGFibGUgaWNvbnMgW2hlcmVdKGh0dHBzOi8vcGhvc3Bob3JpY29ucy5jb20vKVxuICAgKi9cbiAgc2V0IG5hbWUoXzogQ29tcG9uZW50cy5CcUljb25bJ25hbWUnXSkge307XG4gICAgLyoqXG4gICAqIFNldCB0aGUgc2l6ZSBvZiB0aGUgU1ZHXG4gICAqL1xuICBzZXQgc2l6ZShfOiBDb21wb25lbnRzLkJxSWNvblsnc2l6ZSddKSB7fTtcbiAgICAvKipcbiAgICogU2V0IHRoZSBzb3VyY2Ugb2YgdGhlIFNWRy4gSWYgdGhlIHNvdXJjZSBpcyBzZXQsIHRoZSBuYW1lIHByb3BlcnR5IHdpbGwgYmUgaWdub3JlZFxuICAgKi9cbiAgc2V0IHNyYyhfOiBDb21wb25lbnRzLkJxSWNvblsnc3JjJ10pIHt9O1xuICAgIC8qKlxuICAgKiAgQGRlcHJlY2F0ZWQgSXQgc2V0IHRoZSBpY29uIHdlaWdodC9zdHlsZVxuICAgKi9cbiAgc2V0IHdlaWdodChfOiBDb21wb25lbnRzLkJxSWNvblsnd2VpZ2h0J10pIHt9O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydzdmdMb2FkZWQnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQnFJY29uIGV4dGVuZHMgQ29tcG9uZW50cy5CcUljb24ge1xuICAvKipcbiAgICogQ2FsbGJhY2sgaGFuZGxlciB0byBiZSBjYWxsZWQgd2hlbiB0aGUgU1ZHIGhhcyBsb2FkZWRcbiAgICovXG4gIHN2Z0xvYWRlZDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhdXRvY2FwaXRhbGl6ZScsICdhdXRvY29tcGxldGUnLCAnYXV0b2NvcnJlY3QnLCAnYXV0b2ZvY3VzJywgJ2NsZWFyQnV0dG9uTGFiZWwnLCAnZGVib3VuY2VUaW1lJywgJ2Rpc2FibGVDbGVhcicsICdkaXNhYmxlZCcsICdmb3JtJywgJ2Zvcm1WYWxpZGF0aW9uTWVzc2FnZScsICdpbnB1dG1vZGUnLCAnbWF4JywgJ21heGxlbmd0aCcsICdtaW4nLCAnbWlubGVuZ3RoJywgJ25hbWUnLCAncGF0dGVybicsICdwbGFjZWhvbGRlcicsICdyZWFkb25seScsICdyZXF1aXJlZCcsICdzdGVwJywgJ3R5cGUnLCAndmFsaWRhdGlvblN0YXR1cycsICd2YWx1ZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYnEtaW5wdXQnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2F1dG9jYXBpdGFsaXplJywgJ2F1dG9jb21wbGV0ZScsICdhdXRvY29ycmVjdCcsICdhdXRvZm9jdXMnLCAnY2xlYXJCdXR0b25MYWJlbCcsICdkZWJvdW5jZVRpbWUnLCAnZGlzYWJsZUNsZWFyJywgJ2Rpc2FibGVkJywgJ2Zvcm0nLCAnZm9ybVZhbGlkYXRpb25NZXNzYWdlJywgJ2lucHV0bW9kZScsICdtYXgnLCAnbWF4bGVuZ3RoJywgJ21pbicsICdtaW5sZW5ndGgnLCAnbmFtZScsICdwYXR0ZXJuJywgJ3BsYWNlaG9sZGVyJywgJ3JlYWRvbmx5JywgJ3JlcXVpcmVkJywgJ3N0ZXAnLCAndHlwZScsICd2YWxpZGF0aW9uU3RhdHVzJywgJ3ZhbHVlJ10sXG59KVxuZXhwb3J0IGNsYXNzIEJxSW5wdXQge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxCcUlucHV0RWxlbWVudDtcbiAgICAvKipcbiAgICogQ29udHJvbHMgd2hldGhlciBvciBub3QgdGhlIGlucHV0IGZpZWxkIHNob3VsZCBiZSBjYXBpdGFsaXplZCBhbmQgaG93LlxuUG9zc2libGUgdmFsdWVzIGFyZSAnb2ZmJywgJ25vbmUnLCAnb24nLCAnc2VudGVuY2VzJywgJ3dvcmRzJywgYW5kICdjaGFyYWN0ZXJzJy5cblNlZTogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy9hdXRvY2FwaXRhbGl6ZVxuICAgKi9cbiAgc2V0IGF1dG9jYXBpdGFsaXplKF86IENvbXBvbmVudHMuQnFJbnB1dFsnYXV0b2NhcGl0YWxpemUnXSkge307XG4gICAgLyoqXG4gICAqIFNwZWNpZmllcyB3aGV0aGVyIG9yIG5vdCB0aGUgaW5wdXQgZmllbGQgc2hvdWxkIGhhdmUgYXV0b2NvbXBsZXRlIGVuYWJsZWQuXG5TZWU6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvQXR0cmlidXRlcy9hdXRvY29tcGxldGUjdmFsdWVzXG4gICAqL1xuICBzZXQgYXV0b2NvbXBsZXRlKF86IENvbXBvbmVudHMuQnFJbnB1dFsnYXV0b2NvbXBsZXRlJ10pIHt9O1xuICAgIC8qKlxuICAgKiBDb250cm9scyB3aGV0aGVyIG9yIG5vdCB0aGUgaW5wdXQgZmllbGQgc2hvdWxkIGhhdmUgYXV0b2NvcnJlY3QgZW5hYmxlZC5cblBvc3NpYmxlIHZhbHVlcyBhcmUgJ29uJyBhbmQgJ29mZicuXG4gICAqL1xuICBzZXQgYXV0b2NvcnJlY3QoXzogQ29tcG9uZW50cy5CcUlucHV0WydhdXRvY29ycmVjdCddKSB7fTtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSwgdGhlIGlucHV0IHdpbGwgYmUgZm9jdXNlZCBvbiBjb21wb25lbnQgcmVuZGVyXG4gICAqL1xuICBzZXQgYXV0b2ZvY3VzKF86IENvbXBvbmVudHMuQnFJbnB1dFsnYXV0b2ZvY3VzJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgY2xlYXIgYnV0dG9uIGFyaWEgbGFiZWxcbiAgICovXG4gIHNldCBjbGVhckJ1dHRvbkxhYmVsKF86IENvbXBvbmVudHMuQnFJbnB1dFsnY2xlYXJCdXR0b25MYWJlbCddKSB7fTtcbiAgICAvKipcbiAgICogVGhlIGFtb3VudCBvZiB0aW1lLCBpbiBtaWxsaXNlY29uZHMsIHRvIHdhaXQgYmVmb3JlIGVtaXR0aW5nIHRoZSBgYnFJbnB1dGAgZXZlbnQgYWZ0ZXIgdGhlIGlucHV0IHZhbHVlIGNoYW5nZXMuXG5BIHZhbHVlIG9mIDAgbWVhbnMgbm8gZGVib3VuY2luZyB3aWxsIG9jY3VyLlxuICAgKi9cbiAgc2V0IGRlYm91bmNlVGltZShfOiBDb21wb25lbnRzLkJxSW5wdXRbJ2RlYm91bmNlVGltZSddKSB7fTtcbiAgICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGlucHV0IGlzIGRpc2FibGVkIG9yIG5vdC5cbklmIGB0cnVlYCwgdGhlIGlucHV0IGlzIGRpc2FibGVkIGFuZCBjYW5ub3QgYmUgaW50ZXJhY3RlZCB3aXRoLlxuICAgKi9cbiAgc2V0IGRpc2FibGVkKF86IENvbXBvbmVudHMuQnFJbnB1dFsnZGlzYWJsZWQnXSkge307XG4gICAgLyoqXG4gICAqIElmIHRydWUsIHRoZSBjbGVhciBidXR0b24gd29uJ3QgYmUgZGlzcGxheWVkXG4gICAqL1xuICBzZXQgZGlzYWJsZUNsZWFyKF86IENvbXBvbmVudHMuQnFJbnB1dFsnZGlzYWJsZUNsZWFyJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIGZvcm0gdGhhdCB0aGUgaW5wdXQgZmllbGQgYmVsb25ncyB0by5cbiAgICovXG4gIHNldCBmb3JtKF86IENvbXBvbmVudHMuQnFJbnB1dFsnZm9ybSddKSB7fTtcbiAgICAvKipcbiAgICogVGhlIG5hdGl2ZSBmb3JtIHZhbGlkYXRpb24gbWVzc2FnZSAobWFuZGF0b3J5IGlmIGByZXF1aXJlZGAgaXMgc2V0KVxuICAgKi9cbiAgc2V0IGZvcm1WYWxpZGF0aW9uTWVzc2FnZShfOiBDb21wb25lbnRzLkJxSW5wdXRbJ2Zvcm1WYWxpZGF0aW9uTWVzc2FnZSddKSB7fTtcbiAgICAvKipcbiAgICogVGhlIGlucHV0bW9kZSBhdHRyaWJ1dGUgc3BlY2lmaWVzIHdoYXQga2luZCBvZiBpbnB1dCBtZWNoYW5pc20gd291bGQgYmUgbW9zdCBoZWxwZnVsIGZvciB1c2VycyBlbnRlcmluZyBjb250ZW50IGludG8gdGhlIGlucHV0IGZpZWxkLlxuVGhpcyBhbGxvd3MgYSBicm93c2VyIHRvIGRpc3BsYXkgYW4gYXBwcm9wcmlhdGUgdmlydHVhbCBrZXlib2FyZCB3aGlsZSBlZGl0aW5nLlxuUG9zc2libGUgdmFsdWVzIGFyZSAnbm9uZScsICd0ZXh0JywgJ2RlY2ltYWwnLCAnbnVtZXJpYycsICd0ZWwnLCAnc2VhcmNoJywgJ2VtYWlsJywgJ3VybCcsIGFuZCAnZGF0ZScuXG4gICAqL1xuICBzZXQgaW5wdXRtb2RlKF86IENvbXBvbmVudHMuQnFJbnB1dFsnaW5wdXRtb2RlJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgbWF4aW11bSB2YWx1ZSB0aGF0IHRoZSBpbnB1dCBmaWVsZCBjYW4gYWNjZXB0LlxuT25seSBhcHBsaWVzIHRvIGRhdGUgYW5kIG51bWJlciBpbnB1dCB0eXBlcy5cbiAgICovXG4gIHNldCBtYXgoXzogQ29tcG9uZW50cy5CcUlucHV0WydtYXgnXSkge307XG4gICAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIG51bWJlciBvZiBjaGFyYWN0ZXJzIHRoYXQgdGhlIGlucHV0IGZpZWxkIGNhbiBhY2NlcHQuXG4gICAqL1xuICBzZXQgbWF4bGVuZ3RoKF86IENvbXBvbmVudHMuQnFJbnB1dFsnbWF4bGVuZ3RoJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgbWluaW11bSB2YWx1ZSB0aGF0IHRoZSBpbnB1dCBmaWVsZCBjYW4gYWNjZXB0LlxuT25seSBhcHBsaWVzIHRvIGRhdGUgYW5kIG51bWJlciBpbnB1dCB0eXBlcy5cbiAgICovXG4gIHNldCBtaW4oXzogQ29tcG9uZW50cy5CcUlucHV0WydtaW4nXSkge307XG4gICAgLyoqXG4gICAqIFRoZSBtaW5pbXVtIG51bWJlciBvZiBjaGFyYWN0ZXJzIHRoYXQgdGhlIGlucHV0IGZpZWxkIGNhbiBhY2NlcHQuXG4gICAqL1xuICBzZXQgbWlubGVuZ3RoKF86IENvbXBvbmVudHMuQnFJbnB1dFsnbWlubGVuZ3RoJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgaW5wdXQgZmllbGQgbmFtZS5cbiAgICovXG4gIHNldCBuYW1lKF86IENvbXBvbmVudHMuQnFJbnB1dFsnbmFtZSddKSB7fTtcbiAgICAvKipcbiAgICogU3BlY2lmaWVzIGEgcmVndWxhciBleHByZXNzaW9uIHRoZSBmb3JtIGNvbnRyb2wncyB2YWx1ZSBzaG91bGQgbWF0Y2guXG5TZWU6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvQXR0cmlidXRlcy9wYXR0ZXJuXG4gICAqL1xuICBzZXQgcGF0dGVybihfOiBDb21wb25lbnRzLkJxSW5wdXRbJ3BhdHRlcm4nXSkge307XG4gICAgLyoqXG4gICAqIFRoZSBpbnB1dCBwbGFjZWhvbGRlciB0ZXh0IHZhbHVlXG4gICAqL1xuICBzZXQgcGxhY2Vob2xkZXIoXzogQ29tcG9uZW50cy5CcUlucHV0WydwbGFjZWhvbGRlciddKSB7fTtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSwgdGhlIGlucHV0IGZpZWxkIGNhbm5vdCBiZSBtb2RpZmllZC5cbiAgICovXG4gIHNldCByZWFkb25seShfOiBDb21wb25lbnRzLkJxSW5wdXRbJ3JlYWRvbmx5J10pIHt9O1xuICAgIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciBvciBub3QgdGhlIGlucHV0IGZpZWxkIGlzIHJlcXVpcmVkIHRvIGJlIGZpbGxlZCBvdXQgYmVmb3JlIHN1Ym1pdHRpbmcgdGhlIGZvcm0uXG4gICAqL1xuICBzZXQgcmVxdWlyZWQoXzogQ29tcG9uZW50cy5CcUlucHV0WydyZXF1aXJlZCddKSB7fTtcbiAgICAvKipcbiAgICogQSBudW1iZXIgdGhhdCBzcGVjaWZpZXMgdGhlIGdyYW51bGFyaXR5IHRoYXQgdGhlIHZhbHVlIG11c3QgYWRoZXJlIHRvLlxuVmFsaWQgZm9yIGRhdGUsIG1vbnRoLCB3ZWVrLCB0aW1lLCBkYXRldGltZS1sb2NhbCwgbnVtYmVyLCBhbmQgcmFuZ2UuXG5TZWU6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9pbnB1dCNzdGVwXG4gICAqL1xuICBzZXQgc3RlcChfOiBDb21wb25lbnRzLkJxSW5wdXRbJ3N0ZXAnXSkge307XG4gICAgLyoqXG4gICAqIFRoZSB0eXBlIGF0dHJpYnV0ZSBzcGVjaWZpZXMgdGhlIHR5cGUgb2YgaW5wdXQgZmllbGQgdG8gZGlzcGxheS5cblBvc3NpYmxlIHZhbHVlcyBhcmUgJ3RleHQnLCAncGFzc3dvcmQnLCAnZW1haWwnLCAnbnVtYmVyJywgJ3RlbCcsICdzZWFyY2gnLCAndXJsJywgYW5kIG1vcmUuXG5TZWU6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9pbnB1dCNpbnB1dF90eXBlc1xuICAgKi9cbiAgc2V0IHR5cGUoXzogQ29tcG9uZW50cy5CcUlucHV0Wyd0eXBlJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgdmFsaWRhdGlvbiBzdGF0dXMgb2YgdGhlIGlucHV0LiBAcmVtYXJrcyBUaGlzIHByb3BlcnR5IGlzIHVzZWQgdG8gaW5kaWNhdGUgdGhlIHZhbGlkYXRpb24gc3RhdHVzIG9mIHRoZSBpbnB1dC4gSXQgY2FuIGJlIHNldCB0byBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6XG4tIGAnbm9uZSdgOiBObyB2YWxpZGF0aW9uIHN0YXR1cyBpcyBzZXQuXG4tIGAnZXJyb3InYDogVGhlIGlucHV0IGhhcyBhIHZhbGlkYXRpb24gZXJyb3IuXG4tIGAnd2FybmluZydgOiBUaGUgaW5wdXQgaGFzIGEgdmFsaWRhdGlvbiB3YXJuaW5nLlxuLSBgJ3N1Y2Nlc3MnYDogVGhlIGlucHV0IGhhcyBwYXNzZWQgdmFsaWRhdGlvbi5cbiAgICovXG4gIHNldCB2YWxpZGF0aW9uU3RhdHVzKF86IENvbXBvbmVudHMuQnFJbnB1dFsndmFsaWRhdGlvblN0YXR1cyddKSB7fTtcbiAgICAvKipcbiAgICogVGhlIGlucHV0IHZhbHVlLCBpdCBjYW4gYmUgdXNlZCB0byByZXNldCB0aGUgaW5wdXQgdG8gYSBwcmV2aW91cyB2YWx1ZVxuICAgKi9cbiAgc2V0IHZhbHVlKF86IENvbXBvbmVudHMuQnFJbnB1dFsndmFsdWUnXSkge307XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ2JxQmx1cicsICdicUNoYW5nZScsICdicUNsZWFyJywgJ2JxRm9jdXMnLCAnYnFJbnB1dCddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBCcUlucHV0IGV4dGVuZHMgQ29tcG9uZW50cy5CcUlucHV0IHtcbiAgLyoqXG4gICAqIENhbGxiYWNrIGhhbmRsZXIgZW1pdHRlZCB3aGVuIHRoZSBpbnB1dCBsb3NlcyBmb2N1c1xuICAgKi9cbiAgYnFCbHVyOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTEJxSW5wdXRFbGVtZW50Pj47XG4gIC8qKlxuICAgKiBDYWxsYmFjayBoYW5kbGVyIGVtaXR0ZWQgd2hlbiB0aGUgaW5wdXQgdmFsdWUgaGFzIGNoYW5nZWQgYW5kIHRoZSBpbnB1dCBsb3NlcyBmb2N1cy5cblRoaXMgaGFuZGxlciBpcyBjYWxsZWQgd2hlbmV2ZXIgdGhlIHVzZXIgZmluaXNoZXMgdHlwaW5nIG9yIHBhc3RpbmcgdGV4dCBpbnRvIHRoZSBpbnB1dCBmaWVsZCBhbmQgdGhlbiBjbGlja3Mgb3V0c2lkZSBvZiB0aGUgaW5wdXQgZmllbGQuXG4gICAqL1xuICBicUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgdmFsdWU6IHN0cmluZyB8IG51bWJlciB8IHN0cmluZ1tdOyBlbDogSFRNTEJxSW5wdXRFbGVtZW50IH0+PjtcbiAgLyoqXG4gICAqIENhbGxiYWNrIGhhbmRsZXIgZW1pdHRlZCB3aGVuIHRoZSBpbnB1dCB2YWx1ZSBoYXMgYmVlbiBjbGVhcmVkXG4gICAqL1xuICBicUNsZWFyOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTEJxSW5wdXRFbGVtZW50Pj47XG4gIC8qKlxuICAgKiBDYWxsYmFjayBoYW5kbGVyIGVtaXR0ZWQgd2hlbiB0aGUgaW5wdXQgaGFzIHJlY2VpdmVkIGZvY3VzXG4gICAqL1xuICBicUZvY3VzOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTEJxSW5wdXRFbGVtZW50Pj47XG4gIC8qKlxuICAgKiBDYWxsYmFjayBoYW5kbGVyIGVtaXR0ZWQgd2hlbiB0aGUgaW5wdXQgdmFsdWUgY2hhbmdlcy5cblRoaXMgaGFuZGxlciBpcyBjYWxsZWQgd2hlbmV2ZXIgdGhlIHVzZXIgdHlwZXMgb3IgcGFzdGVzIHRleHQgaW50byB0aGUgaW5wdXQgZmllbGQuXG4gICAqL1xuICBicUlucHV0OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgc3RyaW5nW107IGVsOiBIVE1MQnFJbnB1dEVsZW1lbnQgfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhdXRvRGlzbWlzcycsICdib3JkZXInLCAnZGlzYWJsZUNsb3NlJywgJ2hpZGVJY29uJywgJ29wZW4nLCAndGltZScsICd0eXBlJ10sXG4gIG1ldGhvZHM6IFsnaGlkZScsICdzaG93JywgJ3RvYXN0J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicS1ub3RpZmljYXRpb24nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2F1dG9EaXNtaXNzJywgJ2JvcmRlcicsICdkaXNhYmxlQ2xvc2UnLCAnaGlkZUljb24nLCAnb3BlbicsICd0aW1lJywgJ3R5cGUnXSxcbn0pXG5leHBvcnQgY2xhc3MgQnFOb3RpZmljYXRpb24ge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxCcU5vdGlmaWNhdGlvbkVsZW1lbnQ7XG4gICAgLyoqXG4gICAqIElmIHRydWUsIHRoZSBub3RpZmljYXRpb24gd2lsbCBhdXRvbWF0aWNhbGx5IGhpZGUgYWZ0ZXIgdGhlIHNwZWNpZmllZCBhbW91bnQgb2YgdGltZVxuICAgKi9cbiAgc2V0IGF1dG9EaXNtaXNzKF86IENvbXBvbmVudHMuQnFOb3RpZmljYXRpb25bJ2F1dG9EaXNtaXNzJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgY29yZGVyIHJhZGl1cyBvZiB0aGUgbm90aWZpY2F0aW9uIGNvbXBvbmVudFxuICAgKi9cbiAgc2V0IGJvcmRlcihfOiBDb21wb25lbnRzLkJxTm90aWZpY2F0aW9uWydib3JkZXInXSkge307XG4gICAgLyoqXG4gICAqIElmIHRydWUsIHRoZSBjbG9zZSBidXR0b24gYXQgdGhlIHRvcCByaWdodCBvZiB0aGUgbm90aWZpY2F0aW9uIHdvbid0IGJlIHNob3duXG4gICAqL1xuICBzZXQgZGlzYWJsZUNsb3NlKF86IENvbXBvbmVudHMuQnFOb3RpZmljYXRpb25bJ2Rpc2FibGVDbG9zZSddKSB7fTtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSwgdGhlIG5vdGlmaWNhdGlvbiBpY29uIHdvbid0IGJlIHNob3duXG4gICAqL1xuICBzZXQgaGlkZUljb24oXzogQ29tcG9uZW50cy5CcU5vdGlmaWNhdGlvblsnaGlkZUljb24nXSkge307XG4gICAgLyoqXG4gICAqIElmIHRydWUsIHRoZSBub3RpZmljYXRpb24gd2lsbCBiZSBzaG93blxuICAgKi9cbiAgc2V0IG9wZW4oXzogQ29tcG9uZW50cy5CcU5vdGlmaWNhdGlvblsnb3BlbiddKSB7fTtcbiAgICAvKipcbiAgICogVGhlIGxlbmd0aCBvZiB0aW1lLCBpbiBtaWxsaXNlY29uZHMsIGFmdGVyIHdoaWNoIHRoZSBub3RpZmljYXRpb24gd2lsbCBjbG9zZSBpdHNlbGYuIE9ubHkgdmFsaWQgaWYgYGF1dG9EaXNtaXNzPVwidHJ1ZVwiYFxuICAgKi9cbiAgc2V0IHRpbWUoXzogQ29tcG9uZW50cy5CcU5vdGlmaWNhdGlvblsndGltZSddKSB7fTtcbiAgICAvKipcbiAgICogVHlwZSBvZiBOb3RpZmljYXRpb25cbiAgICovXG4gIHNldCB0eXBlKF86IENvbXBvbmVudHMuQnFOb3RpZmljYXRpb25bJ3R5cGUnXSkge307XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ2JxSGlkZScsICdicVNob3cnLCAnYnFBZnRlck9wZW4nLCAnYnFBZnRlckNsb3NlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEJxTm90aWZpY2F0aW9uIGV4dGVuZHMgQ29tcG9uZW50cy5CcU5vdGlmaWNhdGlvbiB7XG4gIC8qKlxuICAgKiBDYWxsYmFjayBoYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBub3RpZmljYXRpb24gaXMgaGlkZGVuXG4gICAqL1xuICBicUhpZGU6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcbiAgLyoqXG4gICAqIENhbGxiYWNrIGhhbmRsZXIgdG8gYmUgY2FsbGVkIHdoZW4gdGhlIG5vdGlmaWNhdGlvbiBpcyBzaG93blxuICAgKi9cbiAgYnFTaG93OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8YW55Pj47XG4gIC8qKlxuICAgKiBDYWxsYmFjayBoYW5kbGVyIHRvIGJlIGNhbGxlZCBhZnRlciB0aGUgbm90aWZpY2F0aW9uIGhhcyBiZWVuIG9wZW5lZFxuICAgKi9cbiAgYnFBZnRlck9wZW46IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcbiAgLyoqXG4gICAqIENhbGxiYWNrIGhhbmRsZXIgdG8gYmUgY2FsbGVkIGFmdGVyIHRoZSBub3RpZmljYXRpb24gaGFzIGJlZW4gY2xvc2VkXG4gICAqL1xuICBicUFmdGVyQ2xvc2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnZGlzYWJsZWQnLCAnaGlkZGVuJywgJ3NlbGVjdGVkJywgJ3ZhbHVlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicS1vcHRpb24nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2Rpc2FibGVkJywgJ2hpZGRlbicsICdzZWxlY3RlZCcsICd2YWx1ZSddLFxufSlcbmV4cG9ydCBjbGFzcyBCcU9wdGlvbiB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEJxT3B0aW9uRWxlbWVudDtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSwgdGhlIG9wdGlvbiBpcyBoaWRkZW4uXG4gICAqL1xuICBzZXQgaGlkZGVuKF86IENvbXBvbmVudHMuQnFPcHRpb25bJ2hpZGRlbiddKSB7fTtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSwgdGhlIG9wdGlvbiBpcyBkaXNhYmxlZC5cbiAgICovXG4gIHNldCBkaXNhYmxlZChfOiBDb21wb25lbnRzLkJxT3B0aW9uWydkaXNhYmxlZCddKSB7fTtcbiAgICAvKipcbiAgICogQSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSB2YWx1ZSBvZiB0aGUgb3B0aW9uLiBDYW4gYmUgdXNlZCB0byBpZGVudGlmeSB0aGUgaXRlbVxuICAgKi9cbiAgc2V0IHZhbHVlKF86IENvbXBvbmVudHMuQnFPcHRpb25bJ3ZhbHVlJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJZiB0cnVlLCB0aGUgb3B0aW9uIGlzIHNlbGVjdGVkIGFuZCBhY3RpdmUuXG4gICAqL1xuICBzZXQgc2VsZWN0ZWQoXzogQ29tcG9uZW50cy5CcU9wdGlvblsnc2VsZWN0ZWQnXSkge307XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ2JxQmx1cicsICdicUZvY3VzJywgJ2JxQ2xpY2snLCAnYnFFbnRlciddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBCcU9wdGlvbiBleHRlbmRzIENvbXBvbmVudHMuQnFPcHRpb24ge1xuICAvKipcbiAgICogSGFuZGxlciB0byBiZSBjYWxsZWQgd2hlbiBpdGVtIGxvc2VzIGZvY3VzXG4gICAqL1xuICBicUJsdXI6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxIVE1MQnFPcHRpb25FbGVtZW50Pj47XG4gIC8qKlxuICAgKiBIYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIGl0ZW0gaXMgZm9jdXNlZFxuICAgKi9cbiAgYnFGb2N1czogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcU9wdGlvbkVsZW1lbnQ+PjtcbiAgLyoqXG4gICAqIEhhbmRsZXIgdG8gYmUgY2FsbGVkIHdoZW4gaXRlbSBpcyBjbGlja2VkXG4gICAqL1xuICBicUNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTEJxT3B0aW9uRWxlbWVudD4+O1xuICAvKipcbiAgICogSGFuZGxlciB0byBiZSBjYWxsZWQgb24gZW50ZXIga2V5IHByZXNzXG4gICAqL1xuICBicUVudGVyOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTEJxT3B0aW9uRWxlbWVudD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYnEtb3B0aW9uLWdyb3VwJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogW10sXG59KVxuZXhwb3J0IGNsYXNzIEJxT3B0aW9uR3JvdXAge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxCcU9wdGlvbkdyb3VwRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQnFPcHRpb25Hcm91cCBleHRlbmRzIENvbXBvbmVudHMuQnFPcHRpb25Hcm91cCB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhcmlhTGFiZWwnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JxLW9wdGlvbi1saXN0JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhcmlhTGFiZWwnXSxcbn0pXG5leHBvcnQgY2xhc3MgQnFPcHRpb25MaXN0IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MQnFPcHRpb25MaXN0RWxlbWVudDtcbiAgICAvKipcbiAgICogQXJpYSBsYWJlbCBmb3IgdGhlIGxpc3QuXG4gICAqL1xuICBzZXQgYXJpYUxhYmVsKF86IENvbXBvbmVudHMuQnFPcHRpb25MaXN0WydhcmlhTGFiZWwnXSkge307XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ2JxU2VsZWN0J10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEJxT3B0aW9uTGlzdCBleHRlbmRzIENvbXBvbmVudHMuQnFPcHRpb25MaXN0IHtcbiAgLyoqXG4gICAqIEhhbmRsZXIgdG8gYmUgY2FsbGVkIHdoZW4gYGJxLW9wdGlvbmAgaXMgc2VsZWN0ZWQgKG9uIGNsaWNrL2VudGVyIHByZXNzKS5cbiAgICovXG4gIGJxU2VsZWN0OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyB2YWx1ZTogc3RyaW5nOyBpdGVtOiBIVE1MQnFPcHRpb25FbGVtZW50IH0+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JxLXBhZ2UtdGl0bGUnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgQnFQYWdlVGl0bGUge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxCcVBhZ2VUaXRsZUVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEJxUGFnZVRpdGxlIGV4dGVuZHMgQ29tcG9uZW50cy5CcVBhZ2VUaXRsZSB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydkaXN0YW5jZScsICdvcGVuJywgJ3BsYWNlbWVudCcsICdzYW1lV2lkdGgnLCAnc2tpZGRpbmcnLCAnc3RyYXRlZ3knXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JxLXBhbmVsJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydkaXN0YW5jZScsICdvcGVuJywgJ3BsYWNlbWVudCcsICdzYW1lV2lkdGgnLCAnc2tpZGRpbmcnLCAnc3RyYXRlZ3knXSxcbn0pXG5leHBvcnQgY2xhc3MgQnFQYW5lbCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEJxUGFuZWxFbGVtZW50O1xuICAgIC8qKlxuICAgKiBSZXByZXNlbnRzIHRoZSBkaXN0YW5jZSAoZ3V0dGVyIG9yIG1hcmdpbikgYmV0d2VlbiB0aGUgcGFuZWwgYW5kIHRoZSB0cmlnZ2VyIGVsZW1lbnQuXG4gICAqL1xuICBzZXQgZGlzdGFuY2UoXzogQ29tcG9uZW50cy5CcVBhbmVsWydkaXN0YW5jZSddKSB7fTtcbiAgICAvKipcbiAgICogUG9zaXRpb24gb2YgdGhlIHBhbmVsXG4gICAqL1xuICBzZXQgcGxhY2VtZW50KF86IENvbXBvbmVudHMuQnFQYW5lbFsncGxhY2VtZW50J10pIHt9O1xuICAgIC8qKlxuICAgKiBJZiB0cnVlLCB0aGUgcGFuZWwgd2lsbCBiZSB2aXNpYmxlLlxuICAgKi9cbiAgc2V0IG9wZW4oXzogQ29tcG9uZW50cy5CcVBhbmVsWydvcGVuJ10pIHt9O1xuICAgIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBwYW5lbCBzaG91bGQgaGF2ZSB0aGUgc2FtZSB3aWR0aCBhcyB0aGUgdHJpZ2dlciBlbGVtZW50XG4gICAqL1xuICBzZXQgc2FtZVdpZHRoKF86IENvbXBvbmVudHMuQnFQYW5lbFsnc2FtZVdpZHRoJ10pIHt9O1xuICAgIC8qKlxuICAgKiBSZXByZXNlbnRzIHRoZSBza2lkZGluZyBiZXR3ZWVuIHRoZSBwYW5lbCBhbmQgdGhlIHRyaWdnZXIgZWxlbWVudC5cbiAgICovXG4gIHNldCBza2lkZGluZyhfOiBDb21wb25lbnRzLkJxUGFuZWxbJ3NraWRkaW5nJ10pIHt9O1xuICAgIC8qKlxuICAgKiBEZWZpbmVzIHRoZSBzdHJhdGVneSB0byBwb3NpdGlvbiB0aGUgcGFuZWxcbiAgICovXG4gIHNldCBzdHJhdGVneShfOiBDb21wb25lbnRzLkJxUGFuZWxbJ3N0cmF0ZWd5J10pIHt9O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBCcVBhbmVsIGV4dGVuZHMgQ29tcG9uZW50cy5CcVBhbmVsIHt9XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2JvcmRlclNoYXBlJywgJ2VuYWJsZVRvb2x0aXAnLCAnaW5kZXRlcm1pbmF0ZScsICdsYWJlbCcsICd0aGlja25lc3MnLCAndHlwZScsICd2YWx1ZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYnEtcHJvZ3Jlc3MnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2JvcmRlclNoYXBlJywgJ2VuYWJsZVRvb2x0aXAnLCAnaW5kZXRlcm1pbmF0ZScsICdsYWJlbCcsICd0aGlja25lc3MnLCAndHlwZScsICd2YWx1ZSddLFxufSlcbmV4cG9ydCBjbGFzcyBCcVByb2dyZXNzIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MQnFQcm9ncmVzc0VsZW1lbnQ7XG4gICAgLyoqXG4gICAqIEl0IHdpbGwgc2V0IHRoZSBib3JkZXIgc3R5bGUgb2YgdGhlIHByb2dyZXNzIGJhclxuICAgKi9cbiAgc2V0IGJvcmRlclNoYXBlKF86IENvbXBvbmVudHMuQnFQcm9ncmVzc1snYm9yZGVyU2hhcGUnXSkge307XG4gICAgLyoqXG4gICAqIElmIGB0cnVlYCwgYSB0b29sdGlwIHdpbGwgYmUgc2hvd24gZGlzcGxheWluZyB0aGUgcHJvZ3Jlc3MgdmFsdWVcbiAgICovXG4gIHNldCBlbmFibGVUb29sdGlwKF86IENvbXBvbmVudHMuQnFQcm9ncmVzc1snZW5hYmxlVG9vbHRpcCddKSB7fTtcbiAgICAvKipcbiAgICogSWYgYHRydWVgIHRoZSBpbmRldGVybWluYXRlIHN0YXRlIG9mIHByb2dyZXNzIGJhciBpcyBlbmFibGVkXG4gICAqL1xuICBzZXQgaW5kZXRlcm1pbmF0ZShfOiBDb21wb25lbnRzLkJxUHJvZ3Jlc3NbJ2luZGV0ZXJtaW5hdGUnXSkge307XG4gICAgLyoqXG4gICAqIElmIGB0cnVlLCBhIGxhYmVsIHRleHQgc2hvd2luZyB0aGUgdmFsdWUgKGluIHBlcmNlbnRhZ2UpIHdpbGwgYmUgc2hvd25cbiAgICovXG4gIHNldCBsYWJlbChfOiBDb21wb25lbnRzLkJxUHJvZ3Jlc3NbJ2xhYmVsJ10pIHt9O1xuICAgIC8qKlxuICAgKiBQcm9ncmVzcyBiYXIgdGhpY2tuZXNzXG4gICAqL1xuICBzZXQgdGhpY2tuZXNzKF86IENvbXBvbmVudHMuQnFQcm9ncmVzc1sndGhpY2tuZXNzJ10pIHt9O1xuICAgIC8qKlxuICAgKiBQcm9ncmVzcyB0eXBlXG4gICAqL1xuICBzZXQgdHlwZShfOiBDb21wb25lbnRzLkJxUHJvZ3Jlc3NbJ3R5cGUnXSkge307XG4gICAgLyoqXG4gICAqIEEgbnVtYmVyIHJlcHJlc2VudGluZyB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgcHJvZ3Jlc3MgYmFyXG4gICAqL1xuICBzZXQgdmFsdWUoXzogQ29tcG9uZW50cy5CcVByb2dyZXNzWyd2YWx1ZSddKSB7fTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQnFQcm9ncmVzcyBleHRlbmRzIENvbXBvbmVudHMuQnFQcm9ncmVzcyB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydiYWNrZ3JvdW5kT25Ib3ZlcicsICdjaGVja2VkJywgJ2Rpc2FibGVkJywgJ2Zvcm1JZCcsICduYW1lJywgJ3JlcXVpcmVkJywgJ3ZhbHVlJ10sXG4gIG1ldGhvZHM6IFsndkNsaWNrJywgJ3ZGb2N1cycsICd2Qmx1cicsICdnZXROYXRpdmVJbnB1dCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYnEtcmFkaW8nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2JhY2tncm91bmRPbkhvdmVyJywgJ2NoZWNrZWQnLCAnZGlzYWJsZWQnLCAnZm9ybUlkJywgJ25hbWUnLCAncmVxdWlyZWQnLCAndmFsdWUnXSxcbn0pXG5leHBvcnQgY2xhc3MgQnFSYWRpbyB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEJxUmFkaW9FbGVtZW50O1xuICAgIC8qKlxuICAgKiBJZiB0cnVlIHJhZGlvIGlucHV0IGlzIGNoZWNrZWRcbiAgICovXG4gIHNldCBjaGVja2VkKF86IENvbXBvbmVudHMuQnFSYWRpb1snY2hlY2tlZCddKSB7fTtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSByYWRpbyBpbnB1dCBpcyBkaXNhYmxlZFxuICAgKi9cbiAgc2V0IGRpc2FibGVkKF86IENvbXBvbmVudHMuQnFSYWRpb1snZGlzYWJsZWQnXSkge307XG4gICAgLyoqXG4gICAqIElmIHRydWUgcmFkaW8gZGlzcGxheXMgYmFja2dyb3VuZCBvbiBob3ZlclxuICAgKi9cbiAgc2V0IGJhY2tncm91bmRPbkhvdmVyKF86IENvbXBvbmVudHMuQnFSYWRpb1snYmFja2dyb3VuZE9uSG92ZXInXSkge307XG4gICAgLyoqXG4gICAqIFRoZSBmb3JtIElEIHRoYXQgdGhlIHJhZGlvIGlucHV0IGlzIGFzc29jaWF0ZWQgd2l0aFxuICAgKi9cbiAgc2V0IGZvcm1JZChfOiBDb21wb25lbnRzLkJxUmFkaW9bJ2Zvcm1JZCddKSB7fTtcbiAgICAvKipcbiAgICogTmFtZSBvZiB0aGUgSFRNTCBpbnB1dCBmb3JtIGNvbnRyb2wuIFN1Ym1pdHRlZCB3aXRoIHRoZSBmb3JtIGFzIHBhcnQgb2YgYSBuYW1lL3ZhbHVlIHBhaXIuXG4gICAqL1xuICBzZXQgbmFtZShfOiBDb21wb25lbnRzLkJxUmFkaW9bJ25hbWUnXSkge307XG4gICAgLyoqXG4gICAqIElmIGB0cnVlYCwgaXQgd2lsbCBpbmRpY2F0ZSB0aGF0IHRoZSB1c2VyIG11c3Qgc3BlY2lmeSBhIHZhbHVlIGZvciB0aGUgcmFkaW8gYmVmb3JlIHRoZSBvd25pbmcgZm9ybSBjYW4gYmUgc3VibWl0dGVkXG4gICAqL1xuICBzZXQgcmVxdWlyZWQoXzogQ29tcG9uZW50cy5CcVJhZGlvWydyZXF1aXJlZCddKSB7fTtcbiAgICAvKipcbiAgICogQSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSB2YWx1ZSBvZiB0aGUgcmFkaW8uXG4gICAqL1xuICBzZXQgdmFsdWUoXzogQ29tcG9uZW50cy5CcVJhZGlvWyd2YWx1ZSddKSB7fTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnYnFDbGljaycsICdicUZvY3VzJywgJ2JxQmx1cicsICdicUtleURvd24nXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQnFSYWRpbyBleHRlbmRzIENvbXBvbmVudHMuQnFSYWRpbyB7XG4gIC8qKlxuICAgKiBIYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSByYWRpbyBzdGF0ZSBjaGFuZ2VzXG4gICAqL1xuICBicUNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTEJxUmFkaW9FbGVtZW50Pj47XG4gIC8qKlxuICAgKiBIYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSByYWRpbyBnZXRzIGZvY3VzXG4gICAqL1xuICBicUZvY3VzOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTEJxUmFkaW9FbGVtZW50Pj47XG4gIC8qKlxuICAgKiBIYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSByYWRpbyBsb3NlcyBmb2N1c1xuICAgKi9cbiAgYnFCbHVyOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTEJxUmFkaW9FbGVtZW50Pj47XG4gIC8qKlxuICAgKiBIYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSByYWRpbyBrZXkgaXMgcHJlc3NlZFxuICAgKi9cbiAgYnFLZXlEb3duOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8S2V5Ym9hcmRFdmVudD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydiYWNrZ3JvdW5kT25Ib3ZlcicsICdkZWJvdW5jZVRpbWUnLCAnZGlzYWJsZWQnLCAnZmllbGRzZXQnLCAnbmFtZScsICdvcmllbnRhdGlvbicsICdyZXF1aXJlZCcsICdyZXF1aXJlZFZhbGlkYXRpb25NZXNzYWdlJywgJ3ZhbHVlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicS1yYWRpby1ncm91cCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYmFja2dyb3VuZE9uSG92ZXInLCAnZGVib3VuY2VUaW1lJywgJ2Rpc2FibGVkJywgJ2ZpZWxkc2V0JywgJ25hbWUnLCAnb3JpZW50YXRpb24nLCAncmVxdWlyZWQnLCAncmVxdWlyZWRWYWxpZGF0aW9uTWVzc2FnZScsICd2YWx1ZSddLFxufSlcbmV4cG9ydCBjbGFzcyBCcVJhZGlvR3JvdXAge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxCcVJhZGlvR3JvdXBFbGVtZW50O1xuICAgIC8qKlxuICAgKiBJZiB0cnVlLCBhbGwgcmFkaW8gaW5wdXRzIGluIHRoZSBncm91cCB3aWxsIGRpc3BsYXkgYSBiYWNrZ3JvdW5kIG9uIGhvdmVyXG4gICAqL1xuICBzZXQgYmFja2dyb3VuZE9uSG92ZXIoXzogQ29tcG9uZW50cy5CcVJhZGlvR3JvdXBbJ2JhY2tncm91bmRPbkhvdmVyJ10pIHt9O1xuICAgIC8qKlxuICAgKiBBIG51bWJlciByZXByZXNlbnRpbmcgdGhlIGRlbGF5IHRpbWUgKGluIG1pbGxpc2Vjb25kcykgdGhhdCBgYnFDaGFuZ2VgIGV2ZW50IGhhbmRsZXIgZ2V0cyB0cmlnZ2VyZWQgb25jZSB0aGUgdmFsdWUgY2hhbmdlXG4gICAqL1xuICBzZXQgZGVib3VuY2VUaW1lKF86IENvbXBvbmVudHMuQnFSYWRpb0dyb3VwWydkZWJvdW5jZVRpbWUnXSkge307XG4gICAgLyoqXG4gICAqIElmIHRydWUgcmFkaW8gaW5wdXRzIGFyZSBkaXNhYmxlZFxuICAgKi9cbiAgc2V0IGRpc2FibGVkKF86IENvbXBvbmVudHMuQnFSYWRpb0dyb3VwWydkaXNhYmxlZCddKSB7fTtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSBkaXNwbGF5cyBmaWVsZHNldFxuICAgKi9cbiAgc2V0IGZpZWxkc2V0KF86IENvbXBvbmVudHMuQnFSYWRpb0dyb3VwWydmaWVsZHNldCddKSB7fTtcbiAgICAvKipcbiAgICogTmFtZSBvZiB0aGUgSFRNTCBpbnB1dCBmb3JtIGNvbnRyb2wuIFN1Ym1pdHRlZCB3aXRoIHRoZSBmb3JtIGFzIHBhcnQgb2YgYSBuYW1lL3ZhbHVlIHBhaXIuXG4gICAqL1xuICBzZXQgbmFtZShfOiBDb21wb25lbnRzLkJxUmFkaW9Hcm91cFsnbmFtZSddKSB7fTtcbiAgICAvKipcbiAgICogVGhlIGRpc3BsYXkgb3JpZW50YXRpb24gb2YgdGhlIHJhZGlvIGlucHV0c1xuICAgKi9cbiAgc2V0IG9yaWVudGF0aW9uKF86IENvbXBvbmVudHMuQnFSYWRpb0dyb3VwWydvcmllbnRhdGlvbiddKSB7fTtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSwgdGhlIHJhZGlvIGdyb3VwIGlzIHJlcXVpcmVkXG4gICAqL1xuICBzZXQgcmVxdWlyZWQoXzogQ29tcG9uZW50cy5CcVJhZGlvR3JvdXBbJ3JlcXVpcmVkJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgbmF0aXZlIGZvcm0gdmFsaWRhdGlvbiBtZXNzYWdlIHdoZW4gdGhlIHJhZGlvIGdyb3VwIGlzIHJlcXVpcmVkXG4gICAqL1xuICBzZXQgcmVxdWlyZWRWYWxpZGF0aW9uTWVzc2FnZShfOiBDb21wb25lbnRzLkJxUmFkaW9Hcm91cFsncmVxdWlyZWRWYWxpZGF0aW9uTWVzc2FnZSddKSB7fTtcbiAgICAvKipcbiAgICogQSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSB2YWx1ZSBvZiB0aGUgcmFkaW8uXG4gICAqL1xuICBzZXQgdmFsdWUoXzogQ29tcG9uZW50cy5CcVJhZGlvR3JvdXBbJ3ZhbHVlJ10pIHt9O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydicUNoYW5nZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBCcVJhZGlvR3JvdXAgZXh0ZW5kcyBDb21wb25lbnRzLkJxUmFkaW9Hcm91cCB7XG4gIC8qKlxuICAgKiBIYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSByYWRpbyBzdGF0ZSBjaGFuZ2VzXG4gICAqL1xuICBicUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgdmFsdWU6IHN0cmluZzsgdGFyZ2V0OiBIVE1MQnFSYWRpb0VsZW1lbnQgfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhdXRvZm9jdXMnLCAnY2xlYXJCdXR0b25MYWJlbCcsICdkZWJvdW5jZVRpbWUnLCAnZGlzYWJsZUNsZWFyJywgJ2Rpc2FibGVkJywgJ2Rpc3RhbmNlJywgJ2Zvcm0nLCAna2VlcE9wZW5PblNlbGVjdCcsICdtYXhUYWdzVmlzaWJsZScsICdtdWx0aXBsZScsICduYW1lJywgJ29wZW4nLCAncGFuZWxIZWlnaHQnLCAncGxhY2Vob2xkZXInLCAncGxhY2VtZW50JywgJ3JlYWRvbmx5JywgJ3JlcXVpcmVkJywgJ3NhbWVXaWR0aCcsICdza2lkZGluZycsICdzdHJhdGVneScsICd2YWxpZGF0aW9uU3RhdHVzJywgJ3ZhbHVlJ10sXG4gIG1ldGhvZHM6IFsnY2xlYXInXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JxLXNlbGVjdCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYXV0b2ZvY3VzJywgJ2NsZWFyQnV0dG9uTGFiZWwnLCAnZGVib3VuY2VUaW1lJywgJ2Rpc2FibGVDbGVhcicsICdkaXNhYmxlZCcsICdkaXN0YW5jZScsICdmb3JtJywgJ2tlZXBPcGVuT25TZWxlY3QnLCAnbWF4VGFnc1Zpc2libGUnLCAnbXVsdGlwbGUnLCAnbmFtZScsICdvcGVuJywgJ3BhbmVsSGVpZ2h0JywgJ3BsYWNlaG9sZGVyJywgJ3BsYWNlbWVudCcsICdyZWFkb25seScsICdyZXF1aXJlZCcsICdzYW1lV2lkdGgnLCAnc2tpZGRpbmcnLCAnc3RyYXRlZ3knLCAndmFsaWRhdGlvblN0YXR1cycsICd2YWx1ZSddLFxufSlcbmV4cG9ydCBjbGFzcyBCcVNlbGVjdCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEJxU2VsZWN0RWxlbWVudDtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSwgdGhlIFNlbGVjdCBpbnB1dCB3aWxsIGJlIGZvY3VzZWQgb24gY29tcG9uZW50IHJlbmRlclxuICAgKi9cbiAgc2V0IGF1dG9mb2N1cyhfOiBDb21wb25lbnRzLkJxU2VsZWN0WydhdXRvZm9jdXMnXSkge307XG4gICAgLyoqXG4gICAqIFRoZSBjbGVhciBidXR0b24gYXJpYSBsYWJlbFxuICAgKi9cbiAgc2V0IGNsZWFyQnV0dG9uTGFiZWwoXzogQ29tcG9uZW50cy5CcVNlbGVjdFsnY2xlYXJCdXR0b25MYWJlbCddKSB7fTtcbiAgICAvKipcbiAgICogVGhlIGFtb3VudCBvZiB0aW1lLCBpbiBtaWxsaXNlY29uZHMsIHRvIHdhaXQgYmVmb3JlIGVtaXR0aW5nIHRoZSBgYnFJbnB1dGAgZXZlbnQgYWZ0ZXIgdGhlIGlucHV0IHZhbHVlIGNoYW5nZXMuXG5BIHZhbHVlIG9mIDAgbWVhbnMgbm8gZGVib3VuY2luZyB3aWxsIG9jY3VyLlxuICAgKi9cbiAgc2V0IGRlYm91bmNlVGltZShfOiBDb21wb25lbnRzLkJxU2VsZWN0WydkZWJvdW5jZVRpbWUnXSkge307XG4gICAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBTZWxlY3QgaW5wdXQgaXMgZGlzYWJsZWQgb3Igbm90LlxuSWYgYHRydWVgLCB0aGUgU2VsZWN0IGlzIGRpc2FibGVkIGFuZCBjYW5ub3QgYmUgaW50ZXJhY3RlZCB3aXRoLlxuICAgKi9cbiAgc2V0IGRpc2FibGVkKF86IENvbXBvbmVudHMuQnFTZWxlY3RbJ2Rpc2FibGVkJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJZiB0cnVlLCB0aGUgY2xlYXIgYnV0dG9uIHdvbid0IGJlIGRpc3BsYXllZFxuICAgKi9cbiAgc2V0IGRpc2FibGVDbGVhcihfOiBDb21wb25lbnRzLkJxU2VsZWN0WydkaXNhYmxlQ2xlYXInXSkge307XG4gICAgLyoqXG4gICAqIFJlcHJlc2VudHMgdGhlIGRpc3RhbmNlIChndXR0ZXIgb3IgbWFyZ2luKSBiZXR3ZWVuIHRoZSBTZWxlY3QgcGFuZWwgYW5kIHRoZSBpbnB1dCBlbGVtZW50LlxuICAgKi9cbiAgc2V0IGRpc3RhbmNlKF86IENvbXBvbmVudHMuQnFTZWxlY3RbJ2Rpc3RhbmNlJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIGZvcm0gdGhhdCB0aGUgU2VsZWN0IGlucHV0IGJlbG9uZ3MgdG8uXG4gICAqL1xuICBzZXQgZm9ybShfOiBDb21wb25lbnRzLkJxU2VsZWN0Wydmb3JtJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJZiB0cnVlLCB0aGUgU2VsZWN0IHBhbmVsIHdpbGwgcmVtYWluIG9wZW4gYWZ0ZXIgYSBzZWxlY3Rpb24gaXMgbWFkZS5cbiAgICovXG4gIHNldCBrZWVwT3Blbk9uU2VsZWN0KF86IENvbXBvbmVudHMuQnFTZWxlY3RbJ2tlZXBPcGVuT25TZWxlY3QnXSkge307XG4gICAgLyoqXG4gICAqIFRoZSBTZWxlY3QgaW5wdXQgbmFtZS5cbiAgICovXG4gIHNldCBuYW1lKF86IENvbXBvbmVudHMuQnFTZWxlY3RbJ25hbWUnXSkge307XG4gICAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIG51bWJlciBvZiB0YWdzIHRvIGRpc3BsYXkgd2hlbiBtdWx0aXBsZSBzZWxlY3Rpb24gaXMgZW5hYmxlZFxuICAgKi9cbiAgc2V0IG1heFRhZ3NWaXNpYmxlKF86IENvbXBvbmVudHMuQnFTZWxlY3RbJ21heFRhZ3NWaXNpYmxlJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJZiB0cnVlLCB0aGUgU2VsZWN0IGlucHV0IHdpbGwgYWxsb3cgbXVsdGlwbGUgc2VsZWN0aW9ucy5cbiAgICovXG4gIHNldCBtdWx0aXBsZShfOiBDb21wb25lbnRzLkJxU2VsZWN0WydtdWx0aXBsZSddKSB7fTtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSwgdGhlIFNlbGVjdCBwYW5lbCB3aWxsIGJlIHZpc2libGUuXG4gICAqL1xuICBzZXQgb3BlbihfOiBDb21wb25lbnRzLkJxU2VsZWN0WydvcGVuJ10pIHt9O1xuICAgIC8qKlxuICAgKiBXaGVuIHNldCwgaXQgd2lsbCBvdmVycmlkZSB0aGUgaGVpZ2h0IG9mIHRoZSBTZWxlY3QgcGFuZWwuXG4gICAqL1xuICBzZXQgcGFuZWxIZWlnaHQoXzogQ29tcG9uZW50cy5CcVNlbGVjdFsncGFuZWxIZWlnaHQnXSkge307XG4gICAgLyoqXG4gICAqIFRoZSBTZWxlY3QgaW5wdXQgcGxhY2Vob2xkZXIgdGV4dCB2YWx1ZVxuICAgKi9cbiAgc2V0IHBsYWNlaG9sZGVyKF86IENvbXBvbmVudHMuQnFTZWxlY3RbJ3BsYWNlaG9sZGVyJ10pIHt9O1xuICAgIC8qKlxuICAgKiBQb3NpdGlvbiBvZiB0aGUgU2VsZWN0IHBhbmVsXG4gICAqL1xuICBzZXQgcGxhY2VtZW50KF86IENvbXBvbmVudHMuQnFTZWxlY3RbJ3BsYWNlbWVudCddKSB7fTtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSwgdGhlIGxpc3Qgb2Ygb3B0aW9ucyBjYW5ub3QgYmUgZmlsdGVyZWQgKHNlYXJjaGluZyB3b24ndCBiZSBhdmFpbGFibGUpXG4gICAqL1xuICBzZXQgcmVhZG9ubHkoXzogQ29tcG9uZW50cy5CcVNlbGVjdFsncmVhZG9ubHknXSkge307XG4gICAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIG9yIG5vdCB0aGUgU2VsZWN0IGlucHV0IGlzIHJlcXVpcmVkIHRvIGJlIGZpbGxlZCBvdXQgYmVmb3JlIHN1Ym1pdHRpbmcgdGhlIGZvcm0uXG4gICAqL1xuICBzZXQgcmVxdWlyZWQoXzogQ29tcG9uZW50cy5CcVNlbGVjdFsncmVxdWlyZWQnXSkge307XG4gICAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHBhbmVsIHNob3VsZCBoYXZlIHRoZSBTZWxlY3Qgc2FtZSB3aWR0aCBhcyB0aGUgaW5wdXQgZWxlbWVudFxuICAgKi9cbiAgc2V0IHNhbWVXaWR0aChfOiBDb21wb25lbnRzLkJxU2VsZWN0WydzYW1lV2lkdGgnXSkge307XG4gICAgLyoqXG4gICAqIFJlcHJlc2VudHMgdGhlIHNraWRkaW5nIGJldHdlZW4gdGhlIFNlbGVjdCBwYW5lbCBhbmQgdGhlIGlucHV0IGVsZW1lbnQuXG4gICAqL1xuICBzZXQgc2tpZGRpbmcoXzogQ29tcG9uZW50cy5CcVNlbGVjdFsnc2tpZGRpbmcnXSkge307XG4gICAgLyoqXG4gICAqIERlZmluZXMgdGhlIHN0cmF0ZWd5IHRvIHBvc2l0aW9uIHRoZSBTZWxlY3QgcGFuZWxcbiAgICovXG4gIHNldCBzdHJhdGVneShfOiBDb21wb25lbnRzLkJxU2VsZWN0WydzdHJhdGVneSddKSB7fTtcbiAgICAvKipcbiAgICogVGhlIHZhbGlkYXRpb24gc3RhdHVzIG9mIHRoZSBTZWxlY3QgaW5wdXQuIEByZW1hcmtzIFRoaXMgcHJvcGVydHkgaXMgdXNlZCB0byBpbmRpY2F0ZSB0aGUgdmFsaWRhdGlvbiBzdGF0dXMgb2YgdGhlIHNlbGVjdCBpbnB1dC4gSXQgY2FuIGJlIHNldCB0byBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6XG4tIGAnbm9uZSdgOiBObyB2YWxpZGF0aW9uIHN0YXR1cyBpcyBzZXQuXG4tIGAnZXJyb3InYDogVGhlIGlucHV0IGhhcyBhIHZhbGlkYXRpb24gZXJyb3IuXG4tIGAnd2FybmluZydgOiBUaGUgaW5wdXQgaGFzIGEgdmFsaWRhdGlvbiB3YXJuaW5nLlxuLSBgJ3N1Y2Nlc3MnYDogVGhlIGlucHV0IGhhcyBwYXNzZWQgdmFsaWRhdGlvbi5cbiAgICovXG4gIHNldCB2YWxpZGF0aW9uU3RhdHVzKF86IENvbXBvbmVudHMuQnFTZWxlY3RbJ3ZhbGlkYXRpb25TdGF0dXMnXSkge307XG4gICAgLyoqXG4gICAqIFRoZSBzZWxlY3QgaW5wdXQgdmFsdWUsIGl0IGNhbiBiZSB1c2VkIHRvIHJlc2V0IHRoZSBmaWVsZCB0byBhIHByZXZpb3VzIHZhbHVlXG4gICAqL1xuICBzZXQgdmFsdWUoXzogQ29tcG9uZW50cy5CcVNlbGVjdFsndmFsdWUnXSkge307XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ2JxQmx1cicsICdicUNsZWFyJywgJ2JxRm9jdXMnLCAnYnFTZWxlY3QnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQnFTZWxlY3QgZXh0ZW5kcyBDb21wb25lbnRzLkJxU2VsZWN0IHtcbiAgLyoqXG4gICAqIENhbGxiYWNrIGhhbmRsZXIgZW1pdHRlZCB3aGVuIHRoZSBTZWxlY3QgaW5wdXQgbG9zZXMgZm9jdXNcbiAgICovXG4gIGJxQmx1cjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcVNlbGVjdEVsZW1lbnQ+PjtcbiAgLyoqXG4gICAqIENhbGxiYWNrIGhhbmRsZXIgZW1pdHRlZCB3aGVuIHRoZSBzZWxlY3RlZCB2YWx1ZSBoYXMgYmVlbiBjbGVhcmVkXG4gICAqL1xuICBicUNsZWFyOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTEJxU2VsZWN0RWxlbWVudD4+O1xuICAvKipcbiAgICogQ2FsbGJhY2sgaGFuZGxlciBlbWl0dGVkIHdoZW4gdGhlIFNlbGVjdCBpbnB1dCBoYXMgcmVjZWl2ZWQgZm9jdXNcbiAgICovXG4gIGJxRm9jdXM6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxIVE1MQnFTZWxlY3RFbGVtZW50Pj47XG4gIC8qKlxuICAgKiBDYWxsYmFjayBoYW5kbGVyIGVtaXR0ZWQgd2hlbiB0aGUgc2VsZWN0ZWQgdmFsdWUgaGFzIGNoYW5nZWRcbiAgICovXG4gIGJxU2VsZWN0OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgc3RyaW5nW107IGl0ZW06IEhUTUxCcU9wdGlvbkVsZW1lbnQgfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhcHBlYXJhbmNlJywgJ2NvbGxhcHNlJywgJ3NpemUnXSxcbiAgbWV0aG9kczogWyd0b2dnbGVDb2xsYXBzZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYnEtc2lkZS1tZW51JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhcHBlYXJhbmNlJywgJ2NvbGxhcHNlJywgJ3NpemUnXSxcbn0pXG5leHBvcnQgY2xhc3MgQnFTaWRlTWVudSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEJxU2lkZU1lbnVFbGVtZW50O1xuICAgIC8qKlxuICAgKiBJdCBzZXRzIGEgcHJlZGVmaW5lZCBhcHBlYXJhbmNlIG9mIHRoZSBzaWRlIG1lbnVcbiAgICovXG4gIHNldCBhcHBlYXJhbmNlKF86IENvbXBvbmVudHMuQnFTaWRlTWVudVsnYXBwZWFyYW5jZSddKSB7fTtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSwgdGhlIGNvbnRhaW5lciB3aWxsIHJlZHVjZSBpdHMgd2lkdGhcbiAgICovXG4gIHNldCBjb2xsYXBzZShfOiBDb21wb25lbnRzLkJxU2lkZU1lbnVbJ2NvbGxhcHNlJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJdCBzZXRzIHRoZSBzaXplIG9mIHRoZSBuYXZpZ2F0aW9uIG1lbnUgaXRlbXNcbiAgICovXG4gIHNldCBzaXplKF86IENvbXBvbmVudHMuQnFTaWRlTWVudVsnc2l6ZSddKSB7fTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnYnFDb2xsYXBzZScsICdicVNlbGVjdCddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBCcVNpZGVNZW51IGV4dGVuZHMgQ29tcG9uZW50cy5CcVNpZGVNZW51IHtcbiAgLyoqXG4gICAqIENhbGxiYWNrIGhhbmRsZXIgdG8gYmUgY2FsbGVkIHdoZW4gdGhlIFNpZGUgbWVudSBjaGFuZ2VzIGl0cyB3aWR0aCBmcm9tIGV4cGFuZGVkIHRvIGNvbGxhcHNlIGFuZCB2aWNlIHZlcnNhXG4gICAqL1xuICBicUNvbGxhcHNlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBjb2xsYXBzZTogYm9vbGVhbiB9Pj47XG4gIC8qKlxuICAgKiBDYWxsYmFjayBoYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBhY3RpdmUvc2VsZWN0ZWQgbWVudSBpdGVtIGNoYW5nZXNcbiAgICovXG4gIGJxU2VsZWN0OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTEJxU2lkZU1lbnVJdGVtRWxlbWVudD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhY3RpdmUnLCAnY29sbGFwc2UnLCAnZGlzYWJsZWQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JxLXNpZGUtbWVudS1pdGVtJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhY3RpdmUnLCAnY29sbGFwc2UnLCAnZGlzYWJsZWQnXSxcbn0pXG5leHBvcnQgY2xhc3MgQnFTaWRlTWVudUl0ZW0ge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxCcVNpZGVNZW51SXRlbUVsZW1lbnQ7XG4gICAgLyoqXG4gICAqIElmIHRydWUsIHRoZSBtZW51IGl0ZW0gd2lsbCBiZSBzaG93biBhcyBhY3RpdmUvc2VsZWN0ZWQuXG4gICAqL1xuICBzZXQgYWN0aXZlKF86IENvbXBvbmVudHMuQnFTaWRlTWVudUl0ZW1bJ2FjdGl2ZSddKSB7fTtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSwgdGhlIGl0ZW0gbGFiZWwgYW5kIHN1ZmZpeCB3aWxsIGJlIGhpZGRlbiBhbmQgdGhlIHdpdGggd2lsbCBiZSByZWR1Y2UgYWNjb3JkaW5nIHRvIGl0cyBwYXJlbnRcbiAgICovXG4gIHNldCBjb2xsYXBzZShfOiBDb21wb25lbnRzLkJxU2lkZU1lbnVJdGVtWydjb2xsYXBzZSddKSB7fTtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSwgdGhlIG1lbnUgaXRlbSB3aWxsIGJlIGRpc2FibGVkIChubyBpbnRlcmFjdGlvbiBhbGxvd2VkKVxuICAgKi9cbiAgc2V0IGRpc2FibGVkKF86IENvbXBvbmVudHMuQnFTaWRlTWVudUl0ZW1bJ2Rpc2FibGVkJ10pIHt9O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydicUJsdXInLCAnYnFGb2N1cycsICdicUNsaWNrJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEJxU2lkZU1lbnVJdGVtIGV4dGVuZHMgQ29tcG9uZW50cy5CcVNpZGVNZW51SXRlbSB7XG4gIC8qKlxuICAgKiBIYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBidXR0b24gbG9zZXMgZm9jdXNcbiAgICovXG4gIGJxQmx1cjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcVNpZGVNZW51SXRlbUVsZW1lbnQ+PjtcbiAgLyoqXG4gICAqIEhhbmRsZXIgdG8gYmUgY2FsbGVkIHdoZW4gdGhlIGJ1dHRvbiBpcyBjbGlja2VkXG4gICAqL1xuICBicUZvY3VzOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTEJxU2lkZU1lbnVJdGVtRWxlbWVudD4+O1xuICAvKipcbiAgICogSGFuZGxlciB0byBiZSBjYWxsZWQgd2hlbiBidXR0b24gZ2V0cyBmb2N1c1xuICAgKi9cbiAgYnFDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcVNpZGVNZW51SXRlbUVsZW1lbnQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnZGVib3VuY2VUaW1lJywgJ2Rpc2FibGVkJywgJ2VuYWJsZVRvb2x0aXAnLCAnZW5hYmxlVmFsdWVJbmRpY2F0b3InLCAnZ2FwJywgJ21heCcsICdtaW4nLCAnbmFtZScsICdzdGVwJywgJ3Rvb2x0aXBBbHdheXNWaXNpYmxlJywgJ3R5cGUnLCAndmFsdWUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JxLXNsaWRlcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnZGVib3VuY2VUaW1lJywgJ2Rpc2FibGVkJywgJ2VuYWJsZVRvb2x0aXAnLCAnZW5hYmxlVmFsdWVJbmRpY2F0b3InLCAnZ2FwJywgJ21heCcsICdtaW4nLCAnbmFtZScsICdzdGVwJywgJ3Rvb2x0aXBBbHdheXNWaXNpYmxlJywgJ3R5cGUnLCAndmFsdWUnXSxcbn0pXG5leHBvcnQgY2xhc3MgQnFTbGlkZXIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxCcVNsaWRlckVsZW1lbnQ7XG4gICAgLyoqXG4gICAqIFRoZSBhbW91bnQgb2YgdGltZSwgaW4gbWlsbGlzZWNvbmRzLCB0byB3YWl0IHRvIHRyaWdnZXIgdGhlIGBicUNoYW5nZWAgZXZlbnQgYWZ0ZXIgZWFjaCB2YWx1ZSBjaGFuZ2UuXG4gICAqL1xuICBzZXQgZGVib3VuY2VUaW1lKF86IENvbXBvbmVudHMuQnFTbGlkZXJbJ2RlYm91bmNlVGltZSddKSB7fTtcbiAgICAvKipcbiAgICogSWYgYHRydWVgIHRoZSBzbGlkZXIgaXMgZGlzYWJsZWQuXG4gICAqL1xuICBzZXQgZGlzYWJsZWQoXzogQ29tcG9uZW50cy5CcVNsaWRlclsnZGlzYWJsZWQnXSkge307XG4gICAgLyoqXG4gICAqIElmIGB0cnVlYCBpdCB3aWxsIHNob3cgdGhlIHZhbHVlIGxhYmVsIG9uIGEgc2lkZSBvZiB0aGUgc2xpZGVyIHRyYWNrIGFyZWFcbiAgICovXG4gIHNldCBlbmFibGVWYWx1ZUluZGljYXRvcihfOiBDb21wb25lbnRzLkJxU2xpZGVyWydlbmFibGVWYWx1ZUluZGljYXRvciddKSB7fTtcbiAgICAvKipcbiAgICogQSBudW1iZXIgcmVwcmVzZW50aW5nIHRoZSBhbW91bnQgdG8gcmVtYWluIGJldHdlZW4gdGhlIG1pbmltdW0gYW5kIG1heGltdW0gdmFsdWVzIChvbmx5IGZvciByYW5nZSB0eXBlKS5cbiAgICovXG4gIHNldCBnYXAoXzogQ29tcG9uZW50cy5CcVNsaWRlclsnZ2FwJ10pIHt9O1xuICAgIC8qKlxuICAgKiBBIG51bWJlciByZXByZXNlbnRpbmcgdGhlIG1heCB2YWx1ZSBvZiB0aGUgc2xpZGVyLlxuICAgKi9cbiAgc2V0IG1heChfOiBDb21wb25lbnRzLkJxU2xpZGVyWydtYXgnXSkge307XG4gICAgLyoqXG4gICAqIEEgbnVtYmVyIHJlcHJlc2VudGluZyB0aGUgbWluIHZhbHVlIG9mIHRoZSBzbGlkZXIuXG4gICAqL1xuICBzZXQgbWluKF86IENvbXBvbmVudHMuQnFTbGlkZXJbJ21pbiddKSB7fTtcbiAgICAvKipcbiAgICogTmFtZSBvZiB0aGUgZm9ybSBjb250cm9sLiBTdWJtaXR0ZWQgd2l0aCB0aGUgZm9ybSBhcyBwYXJ0IG9mIGEgbmFtZS92YWx1ZSBwYWlyXG4gICAqL1xuICBzZXQgbmFtZShfOiBDb21wb25lbnRzLkJxU2xpZGVyWyduYW1lJ10pIHt9O1xuICAgIC8qKlxuICAgKiBBIG51bWJlciByZXByZXNlbnRpbmcgdGhlIHN0ZXAgb2YgdGhlIHNsaWRlci5cbuKaoO+4jyBQbGVhc2Ugbm90aWNlIHRoYXQgdGhlIHZhbHVlIChvciBsaXN0IG9mIHZhbHVlcyBpZiB0aGUgc2xpZGVyIHR5cGUgaXMgYHJhbmdlYCkgd2lsbCBiZSByb3VuZGVkIHRvIHRoZSBuZWFyZXN0IG11bHRpcGxlIG9mIGBzdGVwYC5cbiAgICovXG4gIHNldCBzdGVwKF86IENvbXBvbmVudHMuQnFTbGlkZXJbJ3N0ZXAnXSkge307XG4gICAgLyoqXG4gICAqIEl0IGRlZmluZXMgdGhlIHR5cGUgb2Ygc2xpZGVyIHRvIGRpc3BsYXlcbiAgICovXG4gIHNldCB0eXBlKF86IENvbXBvbmVudHMuQnFTbGlkZXJbJ3R5cGUnXSkge307XG4gICAgLyoqXG4gICAqIFRoZSB2YWx1ZSBvZiB0aGUgc2xpZGVyLlxuLSBJZiB0aGUgc2xpZGVyIHR5cGUgaXMgYHNpbmdsZWAsIHRoZSB2YWx1ZSBpcyBhIG51bWJlci5cbi0gSWYgdGhlIHNsaWRlciB0eXBlIGlzIGByYW5nZWAsIHRoZSB2YWx1ZSBpcyBhbiBhcnJheSBvZiB0d28gbnVtYmVycyAodGhlIGZpcnN0IG51bWJlciByZXByZXNlbnRzIHRoZSBgbWluYCB2YWx1ZSBhbmQgdGhlIHNlY29uZCBudW1iZXIgcmVwcmVzZW50cyB0aGUgYG1heGAgdmFsdWUpLlxuICAgKi9cbiAgc2V0IHZhbHVlKF86IENvbXBvbmVudHMuQnFTbGlkZXJbJ3ZhbHVlJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIGEgdG9vbHRpcCB3aWxsIGJlIHNob3duIGRpc3BsYXlpbmcgdGhlIHByb2dyZXNzIHZhbHVlXG4gICAqL1xuICBzZXQgZW5hYmxlVG9vbHRpcChfOiBDb21wb25lbnRzLkJxU2xpZGVyWydlbmFibGVUb29sdGlwJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIGEgdG9vbHRpcCB3aWxsIGFsd2F5cyBkaXNwbGF5IHRoZSBwcm9ncmVzcyB2YWx1ZS5cbkl0IHJlbGllcyBvbiBlbmFibGVUb29sdGlwIGFuZCBpZiBlbmFibGVUb29sdGlwIGlzIGZhbHNlLCB0b29sdGlwQWx3YXlzVmlzaWJsZSBjYW5ub3QgYmUgdHJ1ZS5cbiAgICovXG4gIHNldCB0b29sdGlwQWx3YXlzVmlzaWJsZShfOiBDb21wb25lbnRzLkJxU2xpZGVyWyd0b29sdGlwQWx3YXlzVmlzaWJsZSddKSB7fTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnYnFDaGFuZ2UnLCAnYnFCbHVyJywgJ2JxRm9jdXMnXSk7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IFRTbGlkZXJWYWx1ZSBhcyBJQnFTbGlkZXJUU2xpZGVyVmFsdWUgfSBmcm9tICdAYmVlcS9jb3JlJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEJxU2xpZGVyIGV4dGVuZHMgQ29tcG9uZW50cy5CcVNsaWRlciB7XG4gIC8qKlxuICAgKiBIYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIGNoYW5nZSB0aGUgdmFsdWUgb24gcmFuZ2UgaW5wdXRzXG4gICAqL1xuICBicUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgdmFsdWU6IEV4Y2x1ZGU8SUJxU2xpZGVyVFNsaWRlclZhbHVlLCBzdHJpbmc+OyBlbDogSFRNTEJxU2xpZGVyRWxlbWVudCB9Pj47XG4gIC8qKlxuICAgKiBIYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBzbGlkZXIgbG9zZXMgZm9jdXNcbiAgICovXG4gIGJxQmx1cjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcVNsaWRlckVsZW1lbnQ+PjtcbiAgLyoqXG4gICAqIEhhbmRsZXIgdG8gYmUgY2FsbGVkIHdoZW4gdGhlIHNsaWRlciBnZXRzIGZvY3VzZWRcbiAgICovXG4gIGJxRm9jdXM6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxIVE1MQnFTbGlkZXJFbGVtZW50Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2FuaW1hdGlvbicsICdzaXplJywgJ3RleHRQb3NpdGlvbiddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYnEtc3Bpbm5lcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYW5pbWF0aW9uJywgJ3NpemUnLCAndGV4dFBvc2l0aW9uJ10sXG59KVxuZXhwb3J0IGNsYXNzIEJxU3Bpbm5lciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEJxU3Bpbm5lckVsZW1lbnQ7XG4gICAgLyoqXG4gICAqIElmIGBmYWxzZWAsIHRoZSBhbmltYXRpb24gb24gdGhlIGljb24gZWxlbWVudCB3aWxsIGJlIHN0b3BwZWRcbiAgICovXG4gIHNldCBhbmltYXRpb24oXzogQ29tcG9uZW50cy5CcVNwaW5uZXJbJ2FuaW1hdGlvbiddKSB7fTtcbiAgICAvKipcbiAgICogSXQgZGVmaW5lcyB0aGUgcG9zaXRpb24gb2YgdGhlIGxhYmVsIHRleHRcbiAgICovXG4gIHNldCB0ZXh0UG9zaXRpb24oXzogQ29tcG9uZW50cy5CcVNwaW5uZXJbJ3RleHRQb3NpdGlvbiddKSB7fTtcbiAgICAvKipcbiAgICogSXQgZGVmaW5lcyB0aGUgc2l6ZSBvZiB0aGUgaWNvbiBlbGVtZW50IGRpc3BsYXllZFxuICAgKi9cbiAgc2V0IHNpemUoXzogQ29tcG9uZW50cy5CcVNwaW5uZXJbJ3NpemUnXSkge307XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEJxU3Bpbm5lciBleHRlbmRzIENvbXBvbmVudHMuQnFTcGlubmVyIHt9XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ3R5cGUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JxLXN0YXR1cycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsndHlwZSddLFxufSlcbmV4cG9ydCBjbGFzcyBCcVN0YXR1cyB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEJxU3RhdHVzRWxlbWVudDtcbiAgICAvKipcbiAgICogSXQgZGVmaW5lcyB0aGUgdHlwZSBvZiBzdGF0dXMgdG8gZGlzcGxheVxuICAgKi9cbiAgc2V0IHR5cGUoXzogQ29tcG9uZW50cy5CcVN0YXR1c1sndHlwZSddKSB7fTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQnFTdGF0dXMgZXh0ZW5kcyBDb21wb25lbnRzLkJxU3RhdHVzIHt9XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ3NpemUnLCAnc3RhdHVzJywgJ3R5cGUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JxLXN0ZXAtaXRlbScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnc2l6ZScsICdzdGF0dXMnLCAndHlwZSddLFxufSlcbmV4cG9ydCBjbGFzcyBCcVN0ZXBJdGVtIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MQnFTdGVwSXRlbUVsZW1lbnQ7XG4gICAgLyoqXG4gICAqIEl0IGRlZmluZXMgcHJlZml4IHNpemVcbiAgICovXG4gIHNldCBzaXplKF86IENvbXBvbmVudHMuQnFTdGVwSXRlbVsnc2l6ZSddKSB7fTtcbiAgICAvKipcbiAgICogSXQgZGVmaW5lcyBzdGVwIGl0ZW0gYXBwZWFyYW5jZSBiYXNlZCBvbiBpdHMgc3RhdHVzXG4gICAqL1xuICBzZXQgc3RhdHVzKF86IENvbXBvbmVudHMuQnFTdGVwSXRlbVsnc3RhdHVzJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJdCBkZWZpbmVzIHRoZSBzdGVwIGl0ZW0gdHlwZSB1c2VkXG4gICAqL1xuICBzZXQgdHlwZShfOiBDb21wb25lbnRzLkJxU3RlcEl0ZW1bJ3R5cGUnXSkge307XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ2JxQ2xpY2snXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQnFTdGVwSXRlbSBleHRlbmRzIENvbXBvbmVudHMuQnFTdGVwSXRlbSB7XG4gIC8qKlxuICAgKiBDYWxsYmFjayBoYW5kbGVyIGVtaXR0ZWQgd2hlbiB0aGUgc3RlcCBpdGVtIGlzIGNsaWNrZWRcbiAgICovXG4gIGJxQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHRhcmdldDogSFRNTEJxU3RlcEl0ZW1FbGVtZW50OyB2YWx1ZTogc3RyaW5nIH0+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnZGl2aWRlckNvbG9yJywgJ3NpemUnLCAndHlwZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYnEtc3RlcHMnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2RpdmlkZXJDb2xvcicsICdzaXplJywgJ3R5cGUnXSxcbn0pXG5leHBvcnQgY2xhc3MgQnFTdGVwcyB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEJxU3RlcHNFbGVtZW50O1xuICAgIC8qKlxuICAgKiBUaGUgY29sb3Igb2YgdGhlIGxpbmUgdGhhdCBjb25uZWN0cyB0aGUgc3RlcHMuIEl0IHNob3VsZCBiZSBhIHZhbGlkIGRlY2xhcmF0aXZlIGNvbG9yIHRva2VuLlxuICAgKi9cbiAgc2V0IGRpdmlkZXJDb2xvcihfOiBDb21wb25lbnRzLkJxU3RlcHNbJ2RpdmlkZXJDb2xvciddKSB7fTtcbiAgICAvKipcbiAgICogVGhlIHNpemUgb2YgdGhlIHN0ZXBzXG4gICAqL1xuICBzZXQgc2l6ZShfOiBDb21wb25lbnRzLkJxU3RlcHNbJ3NpemUnXSkge307XG4gICAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIHByZWZpeCBlbGVtZW50IHRvIHVzZSBvbiB0aGUgc3RlcCBpdGVtc1xuICAgKi9cbiAgc2V0IHR5cGUoXzogQ29tcG9uZW50cy5CcVN0ZXBzWyd0eXBlJ10pIHt9O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBCcVN0ZXBzIGV4dGVuZHMgQ29tcG9uZW50cy5CcVN0ZXBzIHt9XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2JhY2tncm91bmRPbkhvdmVyJywgJ2NoZWNrZWQnLCAnZGlzYWJsZWQnLCAnZm9ybVZhbGlkYXRpb25NZXNzYWdlJywgJ2Z1bGxXaWR0aCcsICdpbm5lckxhYmVsJywgJ2p1c3RpZnlDb250ZW50JywgJ25hbWUnLCAncmVxdWlyZWQnLCAncmV2ZXJzZU9yZGVyJywgJ3ZhbHVlJ10sXG4gIG1ldGhvZHM6IFsndkNsaWNrJywgJ3ZGb2N1cycsICd2Qmx1ciddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYnEtc3dpdGNoJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydiYWNrZ3JvdW5kT25Ib3ZlcicsICdjaGVja2VkJywgJ2Rpc2FibGVkJywgJ2Zvcm1WYWxpZGF0aW9uTWVzc2FnZScsICdmdWxsV2lkdGgnLCAnaW5uZXJMYWJlbCcsICdqdXN0aWZ5Q29udGVudCcsICduYW1lJywgJ3JlcXVpcmVkJywgJ3JldmVyc2VPcmRlcicsICd2YWx1ZSddLFxufSlcbmV4cG9ydCBjbGFzcyBCcVN3aXRjaCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEJxU3dpdGNoRWxlbWVudDtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSwgYSBiYWNrZ3JvdW5kIHdpbGwgYmUgZGlzcGxheWVkIG9uIGhvdmVyXG4gICAqL1xuICBzZXQgYmFja2dyb3VuZE9uSG92ZXIoXzogQ29tcG9uZW50cy5CcVN3aXRjaFsnYmFja2dyb3VuZE9uSG92ZXInXSkge307XG4gICAgLyoqXG4gICAqIEl0IGluZGljYXRlcyB3aGV0aGVyIGlmIHRoZSBzd2l0Y2ggaXMgYE9OYCBieSBkZWZhdWx0ICh3aGVuIHRoZSBwYWdlIGxvYWRzKVxuICAgKi9cbiAgc2V0IGNoZWNrZWQoXzogQ29tcG9uZW50cy5CcVN3aXRjaFsnY2hlY2tlZCddKSB7fTtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSwgdGhlIHN3aXRjaCBjb250cm9sIHdpbGwgYmUgZGlzYWJsZWQgYW5kIG5vIGludGVyYWN0aW9uIHdpbGwgYmUgYWxsb3dlZFxuICAgKi9cbiAgc2V0IGRpc2FibGVkKF86IENvbXBvbmVudHMuQnFTd2l0Y2hbJ2Rpc2FibGVkJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgbmF0aXZlIGZvcm0gdmFsaWRhdGlvbiBtZXNzYWdlXG4gICAqL1xuICBzZXQgZm9ybVZhbGlkYXRpb25NZXNzYWdlKF86IENvbXBvbmVudHMuQnFTd2l0Y2hbJ2Zvcm1WYWxpZGF0aW9uTWVzc2FnZSddKSB7fTtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSwgdGhlIGNvbXBvbmVudCB3aWxsIHRha2UgdGhlIGZ1bGwgd2lkdGggc3BhY2UgYXZhaWxhYmxlIG9uIHRoZSBwYXJlbnQgY29udGFpbmVyXG4gICAqL1xuICBzZXQgZnVsbFdpZHRoKF86IENvbXBvbmVudHMuQnFTd2l0Y2hbJ2Z1bGxXaWR0aCddKSB7fTtcbiAgICAvKipcbiAgICogSXQgaW5kaWNhdGVzIGhvdyB0byB0byBkaXNwbGF5IHRoZSBvbi9vZmYgbWFya3MgaW5zaWRlIHRoZSBjb250cm9sLCB3aXRoIGljb25zIG9yIG5vbmUgKGRlZmF1bHQpXG4gICAqL1xuICBzZXQgaW5uZXJMYWJlbChfOiBDb21wb25lbnRzLkJxU3dpdGNoWydpbm5lckxhYmVsJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJdCBkZWZpbmVzIGhvdyB0byBkaXN0cmlidXRlIHRoZSBzcGFjZSBiZXR3ZWVuIGFuZCBhcm91bmQgdGhlIGNvbnRyb2wgYW5kIHRoZSBsYWJlbCB0ZXh0XG4oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL2p1c3RpZnktY29udGVudClcbiAgICovXG4gIHNldCBqdXN0aWZ5Q29udGVudChfOiBDb21wb25lbnRzLkJxU3dpdGNoWydqdXN0aWZ5Q29udGVudCddKSB7fTtcbiAgICAvKipcbiAgICogTmFtZSBvZiB0aGUgZm9ybSBjb250cm9sLiBTdWJtaXR0ZWQgd2l0aCB0aGUgZm9ybSBhcyBwYXJ0IG9mIGEgbmFtZS92YWx1ZSBwYWlyXG4gICAqL1xuICBzZXQgbmFtZShfOiBDb21wb25lbnRzLkJxU3dpdGNoWyduYW1lJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIGl0IHdpbGwgaW5kaWNhdGUgdGhhdCB0aGUgdXNlciBtdXN0IHN3aXRjaCBgT05gIHRoZSBlbGVtZW50IGJlZm9yZSB0aGUgb3duaW5nIGZvcm0gY2FuIGJlIHN1Ym1pdHRlZFxuICAgKi9cbiAgc2V0IHJlcXVpcmVkKF86IENvbXBvbmVudHMuQnFTd2l0Y2hbJ3JlcXVpcmVkJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJZiB0cnVlLCB0aGUgb3JkZXIgb2YgdGhlIGNvbnRyb2wgYW5kIHRoZSBsYWJlbCB0ZXh0IHdpbGwgYmUgY2hhbmdlZFxuICAgKi9cbiAgc2V0IHJldmVyc2VPcmRlcihfOiBDb21wb25lbnRzLkJxU3dpdGNoWydyZXZlcnNlT3JkZXInXSkge307XG4gICAgLyoqXG4gICAqIFRoZSBpbnB1dCBjb250cm9sJ3MgdmFsdWUsIHN1Ym1pdHRlZCBhcyBhIG5hbWUvdmFsdWUgcGFpciB3aXRoIGZvcm0gZGF0YS5cbiAgICovXG4gIHNldCB2YWx1ZShfOiBDb21wb25lbnRzLkJxU3dpdGNoWyd2YWx1ZSddKSB7fTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnYnFDaGFuZ2UnLCAnYnFGb2N1cycsICdicUJsdXInXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQnFTd2l0Y2ggZXh0ZW5kcyBDb21wb25lbnRzLkJxU3dpdGNoIHtcbiAgLyoqXG4gICAqIEhhbmRsZXIgdG8gYmUgY2FsbGVkIHdoZW4gdGhlIHN3aXRjaCBzdGF0ZSBjaGFuZ2VzXG4gICAqL1xuICBicUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgY2hlY2tlZDogYm9vbGVhbiB9Pj47XG4gIC8qKlxuICAgKiBIYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBzd2l0Y2ggZ2V0cyBmb2N1c1xuICAgKi9cbiAgYnFGb2N1czogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcVN3aXRjaEVsZW1lbnQ+PjtcbiAgLyoqXG4gICAqIEhhbmRsZXIgdG8gYmUgY2FsbGVkIHdoZW4gdGhlIHN3aXRjaCBsb3NlcyBmb2N1c1xuICAgKi9cbiAgYnFCbHVyOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTEJxU3dpdGNoRWxlbWVudD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhY3RpdmUnLCAnY29udHJvbHMnLCAnZGlzYWJsZWQnLCAnb3JpZW50YXRpb24nLCAncGxhY2VtZW50JywgJ3NpemUnLCAndGFiSWQnXSxcbiAgbWV0aG9kczogWyd2Q2xpY2snLCAndkZvY3VzJywgJ3ZCbHVyJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicS10YWInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2FjdGl2ZScsICdjb250cm9scycsICdkaXNhYmxlZCcsICdvcmllbnRhdGlvbicsICdwbGFjZW1lbnQnLCAnc2l6ZScsICd0YWJJZCddLFxufSlcbmV4cG9ydCBjbGFzcyBCcVRhYiB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEJxVGFiRWxlbWVudDtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSB0YWIgaXMgYWN0aXZlXG4gICAqL1xuICBzZXQgYWN0aXZlKF86IENvbXBvbmVudHMuQnFUYWJbJ2FjdGl2ZSddKSB7fTtcbiAgICAvKipcbiAgICogVGhlIHRhYiBwYW5lbCBpZCB0aGF0IHRoZSB0YWIgY29udHJvbHNcbiAgICovXG4gIHNldCBjb250cm9scyhfOiBDb21wb25lbnRzLkJxVGFiWydjb250cm9scyddKSB7fTtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSB0YWIgaXMgZGlzYWJsZWRcbiAgICovXG4gIHNldCBkaXNhYmxlZChfOiBDb21wb25lbnRzLkJxVGFiWydkaXNhYmxlZCddKSB7fTtcbiAgICAvKipcbiAgICogVGhlIGRpcmVjdGlvbiB0aGF0IHRhYiBzaG91bGQgYmUgcmVuZGVyXG4gICAqL1xuICBzZXQgb3JpZW50YXRpb24oXzogQ29tcG9uZW50cy5CcVRhYlsnb3JpZW50YXRpb24nXSkge307XG4gICAgLyoqXG4gICAqIFRoZSBwbGFjZW1lbnQgdGhhdCB0YWIgc2hvdWxkIGJlIHJlbmRlclxuICAgKi9cbiAgc2V0IHBsYWNlbWVudChfOiBDb21wb25lbnRzLkJxVGFiWydwbGFjZW1lbnQnXSkge307XG4gICAgLyoqXG4gICAqIFRoZSBzaXplIG9mIHRoZSB0YWJcbiAgICovXG4gIHNldCBzaXplKF86IENvbXBvbmVudHMuQnFUYWJbJ3NpemUnXSkge307XG4gICAgLyoqXG4gICAqIFRoZSBpZCBvZiB0aGUgdGFiXG4gICAqL1xuICBzZXQgdGFiSWQoXzogQ29tcG9uZW50cy5CcVRhYlsndGFiSWQnXSkge307XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ2JxQ2xpY2snLCAnYnFGb2N1cycsICdicUJsdXInLCAnYnFLZXlEb3duJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEJxVGFiIGV4dGVuZHMgQ29tcG9uZW50cy5CcVRhYiB7XG4gIC8qKlxuICAgKiBIYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSB0YWIgc3RhdGUgY2hhbmdlc1xuICAgKi9cbiAgYnFDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcVRhYkVsZW1lbnQ+PjtcbiAgLyoqXG4gICAqIEhhbmRsZXIgdG8gYmUgY2FsbGVkIHdoZW4gdGhlIHRhYiBnZXRzIGZvY3VzXG4gICAqL1xuICBicUZvY3VzOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTEJxVGFiRWxlbWVudD4+O1xuICAvKipcbiAgICogSGFuZGxlciB0byBiZSBjYWxsZWQgd2hlbiB0aGUgdGFiIGxvc2VzIGZvY3VzXG4gICAqL1xuICBicUJsdXI6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxIVE1MQnFUYWJFbGVtZW50Pj47XG4gIC8qKlxuICAgKiBIYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSB0YWIga2V5IGlzIHByZXNzZWRcbiAgICovXG4gIGJxS2V5RG93bjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEtleWJvYXJkRXZlbnQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnZGVib3VuY2VUaW1lJywgJ2Rpc2FibGVEaXZpZGVyJywgJ29yaWVudGF0aW9uJywgJ3BsYWNlbWVudCcsICdzaXplJywgJ3ZhbHVlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicS10YWItZ3JvdXAnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2RlYm91bmNlVGltZScsICdkaXNhYmxlRGl2aWRlcicsICdvcmllbnRhdGlvbicsICdwbGFjZW1lbnQnLCAnc2l6ZScsICd2YWx1ZSddLFxufSlcbmV4cG9ydCBjbGFzcyBCcVRhYkdyb3VwIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MQnFUYWJHcm91cEVsZW1lbnQ7XG4gICAgLyoqXG4gICAqIEEgbnVtYmVyIHJlcHJlc2VudGluZyB0aGUgZGVsYXkgdmFsdWUgYXBwbGllZCB0byBicUNoYW5nZSBldmVudCBoYW5kbGVyXG4gICAqL1xuICBzZXQgZGVib3VuY2VUaW1lKF86IENvbXBvbmVudHMuQnFUYWJHcm91cFsnZGVib3VuY2VUaW1lJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJZiB0cnVlLCB0aGUgdW5kZXJsaW5lIGRpdmlkZXIgYmVsb3cgdGhlIHRhYnMgd29uJ3QgYmUgc2hvd25cbiAgICovXG4gIHNldCBkaXNhYmxlRGl2aWRlcihfOiBDb21wb25lbnRzLkJxVGFiR3JvdXBbJ2Rpc2FibGVEaXZpZGVyJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgZGlyZWN0aW9uIHRoYXQgdGFiIHNob3VsZCBiZSByZW5kZXJcbiAgICovXG4gIHNldCBvcmllbnRhdGlvbihfOiBDb21wb25lbnRzLkJxVGFiR3JvdXBbJ29yaWVudGF0aW9uJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgcGxhY2VtZW50IHRoYXQgdGFiIHNob3VsZCBiZSByZW5kZXJcbiAgICovXG4gIHNldCBwbGFjZW1lbnQoXzogQ29tcG9uZW50cy5CcVRhYkdyb3VwWydwbGFjZW1lbnQnXSkge307XG4gICAgLyoqXG4gICAqIFRoZSBzaXplIG9mIHRoZSB0YWJcbiAgICovXG4gIHNldCBzaXplKF86IENvbXBvbmVudHMuQnFUYWJHcm91cFsnc2l6ZSddKSB7fTtcbiAgICAvKipcbiAgICogQSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBpZCBvZiB0aGUgc2VsZWN0ZWQgdGFiLlxuICAgKi9cbiAgc2V0IHZhbHVlKF86IENvbXBvbmVudHMuQnFUYWJHcm91cFsndmFsdWUnXSkge307XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ2JxQ2hhbmdlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEJxVGFiR3JvdXAgZXh0ZW5kcyBDb21wb25lbnRzLkJxVGFiR3JvdXAge1xuICAvKipcbiAgICogSGFuZGxlciB0byBiZSBjYWxsZWQgd2hlbiB0aGUgdGFiIHZhbHVlIGNoYW5nZXNcbiAgICovXG4gIGJxQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyB0YXJnZXQ6IEhUTUxCcVRhYkVsZW1lbnQ7IHZhbHVlOiBzdHJpbmcgfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydib3JkZXInLCAnY2xpY2thYmxlJywgJ2NvbG9yJywgJ2Rpc2FibGVkJywgJ2hpZGRlbicsICdyZW1vdmFibGUnLCAnc2VsZWN0ZWQnLCAnc2l6ZScsICd2YXJpYW50J10sXG4gIG1ldGhvZHM6IFsnaGlkZScsICdzaG93J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicS10YWcnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2JvcmRlcicsICdjbGlja2FibGUnLCAnY29sb3InLCAnZGlzYWJsZWQnLCAnaGlkZGVuJywgJ3JlbW92YWJsZScsICdzZWxlY3RlZCcsICdzaXplJywgJ3ZhcmlhbnQnXSxcbn0pXG5leHBvcnQgY2xhc3MgQnFUYWcge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxCcVRhZ0VsZW1lbnQ7XG4gICAgLyoqXG4gICAqIFRoZSBjb3JuZXIgcmFkaXVzIG9mIHRoZSBUYWcgKHdpbGwgb3ZlcnJpZGUgc2l6ZSdzIHByZWRlZmluZWQgYm9yZGVyKVxuICAgKi9cbiAgc2V0IGJvcmRlcihfOiBDb21wb25lbnRzLkJxVGFnWydib3JkZXInXSkge307XG4gICAgLyoqXG4gICAqIElmIHRydWUsIHRoZSBUYWcgY2FuIGJlIGNsaWNrYWJsZVxuICAgKi9cbiAgc2V0IGNsaWNrYWJsZShfOiBDb21wb25lbnRzLkJxVGFnWydjbGlja2FibGUnXSkge307XG4gICAgLyoqXG4gICAqIFRoZSBjb2xvciBzdHlsZSBvZiB0aGUgVGFnXG4gICAqL1xuICBzZXQgY29sb3IoXzogQ29tcG9uZW50cy5CcVRhZ1snY29sb3InXSkge307XG4gICAgLyoqXG4gICAqIElmIHRydWUsIHRoZSBUYWcgd2lsbCBiZSBkaXNhYmxlZCAob25seSBpZiBjbGlja2FibGUgPSBgdHJ1ZWAsIG5vIGludGVyYWN0aW9uIGFsbG93ZWQpXG4gICAqL1xuICBzZXQgZGlzYWJsZWQoXzogQ29tcG9uZW50cy5CcVRhZ1snZGlzYWJsZWQnXSkge307XG4gICAgLyoqXG4gICAqIElmIHRydWUsIHRoZSBUYWcgY29tcG9uZW50IHdpbGwgaGlkZGVuIChvbmx5IGlmIHJlbW92YWJsZSA9IGB0cnVlYClcbiAgICovXG4gIHNldCBoaWRkZW4oXzogQ29tcG9uZW50cy5CcVRhZ1snaGlkZGVuJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJZiB0cnVlLCB0aGUgVGFnIGNvbXBvbmVudCBjYW4gYmUgcmVtb3ZlZFxuICAgKi9cbiAgc2V0IHJlbW92YWJsZShfOiBDb21wb25lbnRzLkJxVGFnWydyZW1vdmFibGUnXSkge307XG4gICAgLyoqXG4gICAqIElmIHRydWUsIHRoZSBUYWcgaXMgc2VsZWN0ZWQgKG9ubHkgaWYgY2xpY2thYmxlID0gYHRydWVgKVxuICAgKi9cbiAgc2V0IHNlbGVjdGVkKF86IENvbXBvbmVudHMuQnFUYWdbJ3NlbGVjdGVkJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgc2l6ZSBvZiB0aGUgVGFnIGNvbXBvbmVudFxuICAgKi9cbiAgc2V0IHNpemUoXzogQ29tcG9uZW50cy5CcVRhZ1snc2l6ZSddKSB7fTtcbiAgICAvKipcbiAgICogVGhlIHZhcmlhbnQgb2YgVGFnIHRvIGFwcGx5IG9uIHRvcCBvZiB0aGUgdmFyaWFudFxuICAgKi9cbiAgc2V0IHZhcmlhbnQoXzogQ29tcG9uZW50cy5CcVRhZ1sndmFyaWFudCddKSB7fTtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnYnFDbG9zZScsICdicU9wZW4nLCAnYnFCbHVyJywgJ2JxQ2xpY2snLCAnYnFGb2N1cyddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBCcVRhZyBleHRlbmRzIENvbXBvbmVudHMuQnFUYWcge1xuICAvKipcbiAgICogQ2FsbGJhY2sgaGFuZGxlciB0byBiZSBjYWxsZWQgd2hlbiB0aGUgdGFnIGlzIGNsb3NlL2hpZGRlblxuICAgKi9cbiAgYnFDbG9zZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuICAvKipcbiAgICogQ2FsbGJhY2sgaGFuZGxlciB0byBiZSBjYWxsZWQgd2hlbiB0aGUgdGFnIGlzIG5vdCBvcGVuL3Nob3duXG4gICAqL1xuICBicU9wZW46IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcbiAgLyoqXG4gICAqIEhhbmRsZXIgdG8gYmUgY2FsbGVkIHdoZW4gdGFnIGxvc2VzIGZvY3VzXG4gICAqL1xuICBicUJsdXI6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxIVE1MQnFUYWdFbGVtZW50Pj47XG4gIC8qKlxuICAgKiBIYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRhZyBpcyBjbGlja2VkXG4gICAqL1xuICBicUNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTEJxVGFnRWxlbWVudD4+O1xuICAvKipcbiAgICogSGFuZGxlciB0byBiZSBjYWxsZWQgd2hlbiB0YWcgaXMgZm9jdXNlZFxuICAgKi9cbiAgYnFGb2N1czogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcVRhZ0VsZW1lbnQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYXV0b0dyb3cnLCAnYXV0b2NhcGl0YWxpemUnLCAnYXV0b2NvbXBsZXRlJywgJ2F1dG9jb3JyZWN0JywgJ2F1dG9mb2N1cycsICdkZWJvdW5jZVRpbWUnLCAnZGlzYWJsZVJlc2l6ZScsICdkaXNhYmxlZCcsICdmb3JtJywgJ2Zvcm1WYWxpZGF0aW9uTWVzc2FnZScsICdtYXhsZW5ndGgnLCAnbmFtZScsICdwbGFjZWhvbGRlcicsICdyZWFkb25seScsICdyZXF1aXJlZCcsICdyb3dzJywgJ3NwZWxsY2hlY2snLCAndmFsaWRhdGlvblN0YXR1cycsICd2YWx1ZScsICd3cmFwJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicS10ZXh0YXJlYScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYXV0b0dyb3cnLCAnYXV0b2NhcGl0YWxpemUnLCAnYXV0b2NvbXBsZXRlJywgJ2F1dG9jb3JyZWN0JywgJ2F1dG9mb2N1cycsICdkZWJvdW5jZVRpbWUnLCAnZGlzYWJsZVJlc2l6ZScsICdkaXNhYmxlZCcsICdmb3JtJywgJ2Zvcm1WYWxpZGF0aW9uTWVzc2FnZScsICdtYXhsZW5ndGgnLCAnbmFtZScsICdwbGFjZWhvbGRlcicsICdyZWFkb25seScsICdyZXF1aXJlZCcsICdyb3dzJywgJ3NwZWxsY2hlY2snLCAndmFsaWRhdGlvblN0YXR1cycsICd2YWx1ZScsICd3cmFwJ10sXG59KVxuZXhwb3J0IGNsYXNzIEJxVGV4dGFyZWEge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxCcVRleHRhcmVhRWxlbWVudDtcbiAgICAvKipcbiAgICogQ29udHJvbHMgd2hldGhlciBvciBub3QgdGhlIHRleHRhcmVhIGZpZWxkIHNob3VsZCBiZSBjYXBpdGFsaXplZCBhbmQgaG93LlxuUG9zc2libGUgdmFsdWVzIGFyZSAnb2ZmJywgJ25vbmUnLCAnb24nLCAnc2VudGVuY2VzJywgJ3dvcmRzJywgYW5kICdjaGFyYWN0ZXJzJy5cblNlZTogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy9hdXRvY2FwaXRhbGl6ZVxuICAgKi9cbiAgc2V0IGF1dG9jYXBpdGFsaXplKF86IENvbXBvbmVudHMuQnFUZXh0YXJlYVsnYXV0b2NhcGl0YWxpemUnXSkge307XG4gICAgLyoqXG4gICAqIFNwZWNpZmllcyB3aGV0aGVyIG9yIG5vdCB0aGUgdGV4dGFyZWEgZmllbGQgc2hvdWxkIGhhdmUgYXV0b2NvbXBsZXRlIGVuYWJsZWQuXG5TZWU6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvQXR0cmlidXRlcy9hdXRvY29tcGxldGUjdmFsdWVzXG4gICAqL1xuICBzZXQgYXV0b2NvbXBsZXRlKF86IENvbXBvbmVudHMuQnFUZXh0YXJlYVsnYXV0b2NvbXBsZXRlJ10pIHt9O1xuICAgIC8qKlxuICAgKiBDb250cm9scyB3aGV0aGVyIG9yIG5vdCB0aGUgdGV4dGFyZWEgZmllbGQgc2hvdWxkIGhhdmUgYXV0b2NvcnJlY3QgZW5hYmxlZC5cblBvc3NpYmxlIHZhbHVlcyBhcmUgJ29uJyBhbmQgJ29mZicuXG4gICAqL1xuICBzZXQgYXV0b2NvcnJlY3QoXzogQ29tcG9uZW50cy5CcVRleHRhcmVhWydhdXRvY29ycmVjdCddKSB7fTtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSwgdGhlIHRleHRhcmVhIHdpbGwgYmUgZm9jdXNlZCBvbiBjb21wb25lbnQgcmVuZGVyXG4gICAqL1xuICBzZXQgYXV0b2ZvY3VzKF86IENvbXBvbmVudHMuQnFUZXh0YXJlYVsnYXV0b2ZvY3VzJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSB0ZXh0YXJlYSB3aWxsIGF1dG9tYXRpY2FsbHkgZ3JvdyBhbmQgc2hyaW5rIHRvIGZpdCBpdHMgY29udGVudHMuXG5JZiBgZmFsc2VgLCB0aGUgdGV4dGFyZWEgd2lsbCBoYXZlIGEgZml4ZWQgaGVpZ2h0IHNwZWNpZmllZCBieSB0aGUgYHJvd3NgIHByb3BlcnR5LlxuICAgKi9cbiAgc2V0IGF1dG9Hcm93KF86IENvbXBvbmVudHMuQnFUZXh0YXJlYVsnYXV0b0dyb3cnXSkge307XG4gICAgLyoqXG4gICAqIFRoZSBhbW91bnQgb2YgdGltZSwgaW4gbWlsbGlzZWNvbmRzLCB0byB3YWl0IGJlZm9yZSBlbWl0dGluZyB0aGUgYGJxSW5wdXRgIGV2ZW50IGFmdGVyIHRoZSB0ZXh0YXJlYSB2YWx1ZSBjaGFuZ2VzLlxuQSB2YWx1ZSBvZiAwIG1lYW5zIG5vIGRlYm91bmNpbmcgd2lsbCBvY2N1ci5cbiAgICovXG4gIHNldCBkZWJvdW5jZVRpbWUoXzogQ29tcG9uZW50cy5CcVRleHRhcmVhWydkZWJvdW5jZVRpbWUnXSkge307XG4gICAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIHVzZXIgY2Fubm90IGludGVyYWN0IHdpdGggdGhlIHRleHRhcmVhLlxuICAgKi9cbiAgc2V0IGRpc2FibGVkKF86IENvbXBvbmVudHMuQnFUZXh0YXJlYVsnZGlzYWJsZWQnXSkge307XG4gICAgLyoqXG4gICAqIElmIGB0cnVlYCwgaXQgd2lsbCBibG9jayB0aGUgdXNlcidzIGFiaWxpdHkgdG8gcmVzaXplIHRoZSB0ZXh0YXJlYS5cbiAgICovXG4gIHNldCBkaXNhYmxlUmVzaXplKF86IENvbXBvbmVudHMuQnFUZXh0YXJlYVsnZGlzYWJsZVJlc2l6ZSddKSB7fTtcbiAgICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBmb3JtIHRoYXQgdGhlIHRleHRhcmVhIGZpZWxkIGJlbG9uZ3MgdG8uXG4gICAqL1xuICBzZXQgZm9ybShfOiBDb21wb25lbnRzLkJxVGV4dGFyZWFbJ2Zvcm0nXSkge307XG4gICAgLyoqXG4gICAqIFRoZSBuYXRpdmUgZm9ybSB2YWxpZGF0aW9uIG1lc3NhZ2VcbiAgICovXG4gIHNldCBmb3JtVmFsaWRhdGlvbk1lc3NhZ2UoXzogQ29tcG9uZW50cy5CcVRleHRhcmVhWydmb3JtVmFsaWRhdGlvbk1lc3NhZ2UnXSkge307XG4gICAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIG51bWJlciBvZiBjaGFyYWN0ZXJzIHRoYXQgY2FuIGJlIGVudGVyZWQgaW50byB0aGUgdGV4dGFyZWEgKGAwYDogbm8gbGltaXQpLlxuV2hlbiBlbmFibGVkLCBhIGNoYXJhY3RlciBjb3VudGVyIHdpbGwgYmUgc2hvd24gdW5kZXJuZWF0aCB0aGUgdGV4dGFyZWEuXG4gICAqL1xuICBzZXQgbWF4bGVuZ3RoKF86IENvbXBvbmVudHMuQnFUZXh0YXJlYVsnbWF4bGVuZ3RoJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgdGV4dGFyZWEgZWxlbWVudC5cbiAgICovXG4gIHNldCBuYW1lKF86IENvbXBvbmVudHMuQnFUZXh0YXJlYVsnbmFtZSddKSB7fTtcbiAgICAvKipcbiAgICogVGhlIHBsYWNlaG9sZGVyIHRleHQgdG8gc2hvdyB3aGVuIHRoZXJlIGlzIG5vIHZhbHVlLlxuICAgKi9cbiAgc2V0IHBsYWNlaG9sZGVyKF86IENvbXBvbmVudHMuQnFUZXh0YXJlYVsncGxhY2Vob2xkZXInXSkge307XG4gICAgLyoqXG4gICAqIElmIHRydWUsIHRoZSB0ZXh0YXJlYSBmaWVsZCBjYW5ub3QgYmUgbW9kaWZpZWQuXG4gICAqL1xuICBzZXQgcmVhZG9ubHkoXzogQ29tcG9uZW50cy5CcVRleHRhcmVhWydyZWFkb25seSddKSB7fTtcbiAgICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgb3Igbm90IHRoZSB0ZXh0YXJlYSBmaWVsZCBpcyByZXF1aXJlZCB0byBiZSBmaWxsZWQgb3V0IGJlZm9yZSBzdWJtaXR0aW5nIHRoZSBmb3JtLlxuICAgKi9cbiAgc2V0IHJlcXVpcmVkKF86IENvbXBvbmVudHMuQnFUZXh0YXJlYVsncmVxdWlyZWQnXSkge307XG4gICAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgdmlzaWJsZSB0ZXh0IGxpbmVzIGZvciB0aGUgY29udHJvbC4gSXQgbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIuXG4gICAqL1xuICBzZXQgcm93cyhfOiBDb21wb25lbnRzLkJxVGV4dGFyZWFbJ3Jvd3MnXSkge307XG4gICAgLyoqXG4gICAqIElmIHRydWUsIHRoZSB0ZXh0YXJlYSBjb250ZW50IG1heSBiZSBjaGVja2VkIGZvciBzcGVsbGluZyBlcnJvcnMuXG4gICAqL1xuICBzZXQgc3BlbGxjaGVjayhfOiBDb21wb25lbnRzLkJxVGV4dGFyZWFbJ3NwZWxsY2hlY2snXSkge307XG4gICAgLyoqXG4gICAqIFRoZSB2YWxpZGF0aW9uIHN0YXR1cyBvZiB0aGUgdGV4dGFyZWEuIEByZW1hcmtzIFRoaXMgcHJvcGVydHkgaXMgdXNlZCB0byBpbmRpY2F0ZSB0aGUgdmFsaWRhdGlvbiBzdGF0dXMgb2YgdGhlIHRleHRhcmVhLiBJdCBjYW4gYmUgc2V0IHRvIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczpcbi0gYCdub25lJ2A6IE5vIHZhbGlkYXRpb24gc3RhdHVzIGlzIHNldC5cbi0gYCdlcnJvcidgOiBUaGUgdGV4dGFyZWEgaGFzIGEgdmFsaWRhdGlvbiBlcnJvci5cbi0gYCd3YXJuaW5nJ2A6IFRoZSB0ZXh0YXJlYSBoYXMgYSB2YWxpZGF0aW9uIHdhcm5pbmcuXG4tIGAnc3VjY2VzcydgOiBUaGUgdGV4dGFyZWEgaGFzIHBhc3NlZCB2YWxpZGF0aW9uLlxuICAgKi9cbiAgc2V0IHZhbGlkYXRpb25TdGF0dXMoXzogQ29tcG9uZW50cy5CcVRleHRhcmVhWyd2YWxpZGF0aW9uU3RhdHVzJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgdmFsdWUgb2YgdGhlIHRleHRhcmVhLiBJdCBjYW4gYmUgdXNlZCB0byByZXNldCB0aGUgdGV4dGFyZWEgdG8gYSBwcmV2aW91cyB2YWx1ZS5cbiAgICovXG4gIHNldCB2YWx1ZShfOiBDb21wb25lbnRzLkJxVGV4dGFyZWFbJ3ZhbHVlJ10pIHt9O1xuICAgIC8qKlxuICAgKiBTcGVjaWZpZXMgaG93IHRoZSB0ZXh0IGluIGEgdGV4dCBhcmVhIGlzIHRvIGJlIHdyYXBwZWQgd2hlbiBzdWJtaXR0ZWQgaW4gYSBmb3JtXG4gICAqL1xuICBzZXQgd3JhcChfOiBDb21wb25lbnRzLkJxVGV4dGFyZWFbJ3dyYXAnXSkge307XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ2JxQmx1cicsICdicUNoYW5nZScsICdicUNsZWFyJywgJ2JxRm9jdXMnLCAnYnFJbnB1dCddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBCcVRleHRhcmVhIGV4dGVuZHMgQ29tcG9uZW50cy5CcVRleHRhcmVhIHtcbiAgLyoqXG4gICAqIENhbGxiYWNrIGhhbmRsZXIgZW1pdHRlZCB3aGVuIHRoZSB0ZXh0YXJlYSBsb3NlcyBmb2N1c1xuICAgKi9cbiAgYnFCbHVyOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTEJxVGV4dGFyZWFFbGVtZW50Pj47XG4gIC8qKlxuICAgKiBDYWxsYmFjayBoYW5kbGVyIGVtaXR0ZWQgd2hlbiB0aGUgdGV4dGFyZWEgdmFsdWUgaGFzIGNoYW5nZWQgYW5kIHRoZSB0ZXh0YXJlYSBsb3NlcyBmb2N1cy5cblRoaXMgaGFuZGxlciBpcyBjYWxsZWQgd2hlbmV2ZXIgdGhlIHVzZXIgZmluaXNoZXMgdHlwaW5nIG9yIHBhc3RpbmcgdGV4dCBpbnRvIHRoZSB0ZXh0YXJlYSBmaWVsZCBhbmQgdGhlbiBjbGlja3Mgb3V0c2lkZSBvZiB0aGUgdGV4dGFyZWEgZmllbGQuXG4gICAqL1xuICBicUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgdmFsdWU6IHN0cmluZzsgZWw6IEhUTUxCcVRleHRhcmVhRWxlbWVudCB9Pj47XG4gIC8qKlxuICAgKiBDYWxsYmFjayBoYW5kbGVyIGVtaXR0ZWQgd2hlbiB0aGUgdGV4dGFyZWEgdmFsdWUgaGFzIGJlZW4gY2xlYXJlZFxuICAgKi9cbiAgYnFDbGVhcjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcVRleHRhcmVhRWxlbWVudD4+O1xuICAvKipcbiAgICogQ2FsbGJhY2sgaGFuZGxlciBlbWl0dGVkIHdoZW4gdGhlIHRleHRhcmVhIGhhcyByZWNlaXZlZCBmb2N1c1xuICAgKi9cbiAgYnFGb2N1czogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEhUTUxCcVRleHRhcmVhRWxlbWVudD4+O1xuICAvKipcbiAgICogQ2FsbGJhY2sgaGFuZGxlciBlbWl0dGVkIHdoZW4gdGhlIHRleHRhcmVhIHZhbHVlIGNoYW5nZXMuXG5UaGlzIGhhbmRsZXIgaXMgY2FsbGVkIHdoZW5ldmVyIHRoZSB1c2VyIHR5cGVzIG9yIHBhc3RlcyB0ZXh0IGludG8gdGhlIHRleHRhcmVhIGZpZWxkLlxuICAgKi9cbiAgYnFJbnB1dDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgdmFsdWU6IHN0cmluZzsgZWw6IEhUTUxCcVRleHRhcmVhRWxlbWVudCB9Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2JvcmRlcicsICdoaWRlSWNvbicsICdvcGVuJywgJ3BsYWNlbWVudCcsICd0aW1lJywgJ3R5cGUnXSxcbiAgbWV0aG9kczogWydzaG93JywgJ2hpZGUnLCAndG9hc3QnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JxLXRvYXN0JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydib3JkZXInLCAnaGlkZUljb24nLCAnb3BlbicsICdwbGFjZW1lbnQnLCAndGltZScsICd0eXBlJ10sXG59KVxuZXhwb3J0IGNsYXNzIEJxVG9hc3Qge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxCcVRvYXN0RWxlbWVudDtcbiAgICAvKipcbiAgICogVGhlIGNvcmRlciByYWRpdXMgb2YgdGhlIHRvYXN0IGNvbXBvbmVudFxuICAgKi9cbiAgc2V0IGJvcmRlcihfOiBDb21wb25lbnRzLkJxVG9hc3RbJ2JvcmRlciddKSB7fTtcbiAgICAvKipcbiAgICogVHlwZSBvZiB0b2FzdFxuICAgKi9cbiAgc2V0IHR5cGUoXzogQ29tcG9uZW50cy5CcVRvYXN0Wyd0eXBlJ10pIHt9O1xuICAgIC8qKlxuICAgKiBQbGFjZW1lbnQgb2YgdG9hc3RcbiAgICovXG4gIHNldCBwbGFjZW1lbnQoXzogQ29tcG9uZW50cy5CcVRvYXN0WydwbGFjZW1lbnQnXSkge307XG4gICAgLyoqXG4gICAqIElmIHRydWUgd2lsbCBoaWRlIHRvYXN0IGljb25cbiAgICovXG4gIHNldCBoaWRlSWNvbihfOiBDb21wb25lbnRzLkJxVG9hc3RbJ2hpZGVJY29uJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJZiB0cnVlLCB0aGUgdG9hc3Qgd2lsbCBiZSBzaG93blxuICAgKi9cbiAgc2V0IG9wZW4oXzogQ29tcG9uZW50cy5CcVRvYXN0WydvcGVuJ10pIHt9O1xuICAgIC8qKlxuICAgKiBUaGUgbGVuZ3RoIG9mIHRpbWUsIGluIG1pbGxpc2Vjb25kcywgYWZ0ZXIgd2hpY2ggdGhlIHRvYXN0IHdpbGwgY2xvc2UgaXRzZWxmXG4gICAqL1xuICBzZXQgdGltZShfOiBDb21wb25lbnRzLkJxVG9hc3RbJ3RpbWUnXSkge307XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ2JxSGlkZScsICdicVNob3cnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQnFUb2FzdCBleHRlbmRzIENvbXBvbmVudHMuQnFUb2FzdCB7XG4gIC8qKlxuICAgKiBDYWxsYmFjayBoYW5kbGVyIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBub3RpZmljYXRpb24gaXMgaGlkZGVuXG4gICAqL1xuICBicUhpZGU6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxIVE1MQnFUb2FzdEVsZW1lbnQ+PjtcbiAgLyoqXG4gICAqIENhbGxiYWNrIGhhbmRsZXIgdG8gYmUgY2FsbGVkIHdoZW4gdGhlIG5vdGlmaWNhdGlvbiBpcyBzaG93blxuICAgKi9cbiAgYnFTaG93OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SFRNTEJxVG9hc3RFbGVtZW50Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2Fsd2F5c1Zpc2libGUnLCAnZGlzcGxheU9uJywgJ2Rpc3RhbmNlJywgJ2hpZGVBcnJvdycsICdwbGFjZW1lbnQnLCAnc2FtZVdpZHRoJywgJ3Zpc2libGUnXSxcbiAgbWV0aG9kczogWydzaG93JywgJ2hpZGUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JxLXRvb2x0aXAnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2Fsd2F5c1Zpc2libGUnLCAnZGlzcGxheU9uJywgJ2Rpc3RhbmNlJywgJ2hpZGVBcnJvdycsICdwbGFjZW1lbnQnLCAnc2FtZVdpZHRoJywgJ3Zpc2libGUnXSxcbn0pXG5leHBvcnQgY2xhc3MgQnFUb29sdGlwIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MQnFUb29sdGlwRWxlbWVudDtcbiAgICAvKipcbiAgICogSWYgdHJ1ZSwgdGhlIHRvb2x0aXAgd2lsbCBhbHdheXMgYmUgdmlzaWJsZVxuICAgKi9cbiAgc2V0IGFsd2F5c1Zpc2libGUoXzogQ29tcG9uZW50cy5CcVRvb2x0aXBbJ2Fsd2F5c1Zpc2libGUnXSkge307XG4gICAgLyoqXG4gICAqIERpc3RhbmNlIGJldHdlZW4gdHJpZ2dlciBlbGVtZW50IGFuZCB0b29sdGlwXG4gICAqL1xuICBzZXQgZGlzdGFuY2UoXzogQ29tcG9uZW50cy5CcVRvb2x0aXBbJ2Rpc3RhbmNlJ10pIHt9O1xuICAgIC8qKlxuICAgKiBJZiB0cnVlLCB0aGUgYXJyb3cgb24gdGhlIHRvb2x0aXAgY29udGVudCB3b24ndCBiZSBzaG93blxuICAgKi9cbiAgc2V0IGhpZGVBcnJvdyhfOiBDb21wb25lbnRzLkJxVG9vbHRpcFsnaGlkZUFycm93J10pIHt9O1xuICBcbiAgc2V0IHBsYWNlbWVudChfOiBDb21wb25lbnRzLkJxVG9vbHRpcFsncGxhY2VtZW50J10pIHt9O1xuICAgIC8qKlxuICAgKiBXaGV0aGVyIHRoZSB0b29sdGlwIHNob3VsZCBoYXZlIHRoZSBzYW1lIHdpZHRoIGFzIHRoZSB0cmlnZ2VyIGVsZW1lbnRcbihhcHBsaWNhYmxlIG9ubHkgZm9yIGNvbnRlbnQgc2hvcnRlciB0aGFuIHRoZSB0cmlnZ2VyIGVsZW1lbnQpXG4gICAqL1xuICBzZXQgc2FtZVdpZHRoKF86IENvbXBvbmVudHMuQnFUb29sdGlwWydzYW1lV2lkdGgnXSkge307XG4gICAgLyoqXG4gICAqIFNldCB0aGUgYWN0aW9uIHdoZW4gdGhlIHRvb2x0aXAgc2hvdWxkIGJlIGRpc3BsYXllZCwgb24gaG92ZXIgKGRlZmF1bHQpIG9yIGNsaWNrXG4gICAqL1xuICBzZXQgZGlzcGxheU9uKF86IENvbXBvbmVudHMuQnFUb29sdGlwWydkaXNwbGF5T24nXSkge307XG4gICAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIG9yIG5vdCB0aGUgdG9vbHRpcCBpcyB2aXNpYmxlIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBmaXJzdCByZW5kZXJlZCxcbmFuZCB3aGVuIGludGVyYWN0aW5nIHdpdGggdGhlIHRyaWdnZXJcbiAgICovXG4gIHNldCB2aXNpYmxlKF86IENvbXBvbmVudHMuQnFUb29sdGlwWyd2aXNpYmxlJ10pIHt9O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBCcVRvb2x0aXAgZXh0ZW5kcyBDb21wb25lbnRzLkJxVG9vbHRpcCB7fVxuXG5cbiJdfQ==