@payex-ds/angular 0.0.0-stage → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +51 -2
- package/esm2022/generated/all.mjs +7 -0
- package/esm2022/generated/components.mjs +2175 -0
- package/esm2022/generated/value-accessor.mjs +37 -0
- package/esm2022/index.mjs +8 -0
- package/esm2022/lib/component-base.mjs +34 -0
- package/esm2022/lib/provide-design-system.mjs +15 -0
- package/esm2022/lib/value-accessor.mjs +45 -0
- package/esm2022/payex-ds-angular.mjs +5 -0
- package/fesm2022/payex-ds-angular.mjs +2311 -0
- package/fesm2022/payex-ds-angular.mjs.map +1 -0
- package/generated/all.d.ts +3 -0
- package/generated/components.d.ts +711 -0
- package/generated/value-accessor.d.ts +10 -0
- package/index.d.ts +7 -0
- package/lib/component-base.d.ts +12 -0
- package/lib/provide-design-system.d.ts +10 -0
- package/lib/value-accessor.d.ts +21 -0
- package/package.json +29 -3
|
@@ -0,0 +1,2175 @@
|
|
|
1
|
+
// AUTO-GENERATED by @payex-ds/wrapper-gen from the @payex-ds/core Custom Elements Manifest.
|
|
2
|
+
// Do not edit by hand. Regenerate with `pnpm generate:wrappers`.
|
|
3
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewEncapsulation, booleanAttribute, numberAttribute, } from '@angular/core';
|
|
4
|
+
import { defineAll, definePdsAccordion, definePdsAccordionItem, definePdsAlert, definePdsBadge, definePdsBreadcrumb, definePdsBreadcrumbItem, definePdsButton, definePdsCard, definePdsCheckbox, definePdsDatepicker, definePdsDialog, definePdsDropdown, definePdsDropdownItem, definePdsExpandable, definePdsInput, definePdsLink, definePdsList, definePdsLoader, definePdsMediaObject, definePdsPagination, definePdsPanel, definePdsProgressStep, definePdsProgressSteps, definePdsRadio, definePdsRadioGroup, definePdsRangeslider, definePdsSelect, definePdsSheet, definePdsSidebar, definePdsSidebarGroup, definePdsSidebarItem, definePdsSkipLink, definePdsSlab, definePdsStatus, definePdsTab, definePdsTabPanel, definePdsTable, definePdsTabs, definePdsTag, definePdsToast, definePdsTogglebox, definePdsTooltip, definePdsTopbar, } from '@payex-ds/core';
|
|
5
|
+
import { PdsComponentBase } from '../lib/component-base';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
/** Accordion groups pds-accordion-item sections. */
|
|
8
|
+
export class PdsAccordionComponent extends PdsComponentBase {
|
|
9
|
+
set multiple(value) {
|
|
10
|
+
this.pdsSetProperty('multiple', value);
|
|
11
|
+
}
|
|
12
|
+
constructor() {
|
|
13
|
+
super(definePdsAccordion);
|
|
14
|
+
/** Bubbles from the item the user toggled. Detail: `{ open }`. */
|
|
15
|
+
this.pdsToggle = new EventEmitter();
|
|
16
|
+
this.pdsForward('pds-toggle', this.pdsToggle);
|
|
17
|
+
}
|
|
18
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsAccordionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
19
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: PdsAccordionComponent, isStandalone: true, selector: "pds-accordion", inputs: { multiple: ["multiple", "multiple", booleanAttribute] }, outputs: { pdsToggle: "pdsToggle" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
20
|
+
}
|
|
21
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsAccordionComponent, decorators: [{
|
|
22
|
+
type: Component,
|
|
23
|
+
args: [{
|
|
24
|
+
selector: 'pds-accordion',
|
|
25
|
+
standalone: true,
|
|
26
|
+
template: '<ng-content></ng-content>',
|
|
27
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
28
|
+
encapsulation: ViewEncapsulation.None,
|
|
29
|
+
}]
|
|
30
|
+
}], ctorParameters: () => [], propDecorators: { multiple: [{
|
|
31
|
+
type: Input,
|
|
32
|
+
args: [{ transform: booleanAttribute }]
|
|
33
|
+
}], pdsToggle: [{
|
|
34
|
+
type: Output
|
|
35
|
+
}] } });
|
|
36
|
+
/** Accordion item with a heading button and a content region. */
|
|
37
|
+
export class PdsAccordionItemComponent extends PdsComponentBase {
|
|
38
|
+
set disabled(value) {
|
|
39
|
+
this.pdsSetProperty('disabled', value);
|
|
40
|
+
}
|
|
41
|
+
set heading(value) {
|
|
42
|
+
this.pdsSetProperty('heading', value);
|
|
43
|
+
}
|
|
44
|
+
set headingLevel(value) {
|
|
45
|
+
this.pdsSetProperty('headingLevel', value);
|
|
46
|
+
}
|
|
47
|
+
set open(value) {
|
|
48
|
+
this.pdsSetProperty('open', value);
|
|
49
|
+
}
|
|
50
|
+
constructor() {
|
|
51
|
+
super(definePdsAccordionItem);
|
|
52
|
+
/** Fired when the user toggles the item. Detail: `{ open }`. */
|
|
53
|
+
this.pdsToggle = new EventEmitter();
|
|
54
|
+
this.pdsForward('pds-toggle', this.pdsToggle);
|
|
55
|
+
}
|
|
56
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsAccordionItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
57
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: PdsAccordionItemComponent, isStandalone: true, selector: "pds-accordion-item", inputs: { disabled: ["disabled", "disabled", booleanAttribute], heading: "heading", headingLevel: ["headingLevel", "headingLevel", numberAttribute], open: ["open", "open", booleanAttribute] }, outputs: { pdsToggle: "pdsToggle" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
58
|
+
}
|
|
59
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsAccordionItemComponent, decorators: [{
|
|
60
|
+
type: Component,
|
|
61
|
+
args: [{
|
|
62
|
+
selector: 'pds-accordion-item',
|
|
63
|
+
standalone: true,
|
|
64
|
+
template: '<ng-content></ng-content>',
|
|
65
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
66
|
+
encapsulation: ViewEncapsulation.None,
|
|
67
|
+
}]
|
|
68
|
+
}], ctorParameters: () => [], propDecorators: { disabled: [{
|
|
69
|
+
type: Input,
|
|
70
|
+
args: [{ transform: booleanAttribute }]
|
|
71
|
+
}], heading: [{
|
|
72
|
+
type: Input
|
|
73
|
+
}], headingLevel: [{
|
|
74
|
+
type: Input,
|
|
75
|
+
args: [{ transform: numberAttribute }]
|
|
76
|
+
}], open: [{
|
|
77
|
+
type: Input,
|
|
78
|
+
args: [{ transform: booleanAttribute }]
|
|
79
|
+
}], pdsToggle: [{
|
|
80
|
+
type: Output
|
|
81
|
+
}] } });
|
|
82
|
+
/** Alerts communicate important, contextual messages. */
|
|
83
|
+
export class PdsAlertComponent extends PdsComponentBase {
|
|
84
|
+
set dismissible(value) {
|
|
85
|
+
this.pdsSetProperty('dismissible', value);
|
|
86
|
+
}
|
|
87
|
+
set heading(value) {
|
|
88
|
+
this.pdsSetProperty('heading', value);
|
|
89
|
+
}
|
|
90
|
+
set variant(value) {
|
|
91
|
+
this.pdsSetProperty('variant', value);
|
|
92
|
+
}
|
|
93
|
+
/** Accessible label of the close button. Default `Dismiss`. */
|
|
94
|
+
set closeLabel(value) {
|
|
95
|
+
this.pdsSetAttribute('close-label', value);
|
|
96
|
+
}
|
|
97
|
+
constructor() {
|
|
98
|
+
super(definePdsAlert);
|
|
99
|
+
/** Fired when the close button is used (cancelable). The alert hides itself unless cancelled. */
|
|
100
|
+
this.pdsDismiss = new EventEmitter();
|
|
101
|
+
this.pdsForward('pds-dismiss', this.pdsDismiss);
|
|
102
|
+
}
|
|
103
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsAlertComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
104
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: PdsAlertComponent, isStandalone: true, selector: "pds-alert", inputs: { dismissible: ["dismissible", "dismissible", booleanAttribute], heading: "heading", variant: "variant", closeLabel: ["close-label", "closeLabel"] }, outputs: { pdsDismiss: "pdsDismiss" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
105
|
+
}
|
|
106
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsAlertComponent, decorators: [{
|
|
107
|
+
type: Component,
|
|
108
|
+
args: [{
|
|
109
|
+
selector: 'pds-alert',
|
|
110
|
+
standalone: true,
|
|
111
|
+
template: '<ng-content></ng-content>',
|
|
112
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
113
|
+
encapsulation: ViewEncapsulation.None,
|
|
114
|
+
}]
|
|
115
|
+
}], ctorParameters: () => [], propDecorators: { dismissible: [{
|
|
116
|
+
type: Input,
|
|
117
|
+
args: [{ transform: booleanAttribute }]
|
|
118
|
+
}], heading: [{
|
|
119
|
+
type: Input
|
|
120
|
+
}], variant: [{
|
|
121
|
+
type: Input
|
|
122
|
+
}], closeLabel: [{
|
|
123
|
+
type: Input,
|
|
124
|
+
args: ['close-label']
|
|
125
|
+
}], pdsDismiss: [{
|
|
126
|
+
type: Output
|
|
127
|
+
}] } });
|
|
128
|
+
/** Badges highlight a count or short status label. */
|
|
129
|
+
export class PdsBadgeComponent extends PdsComponentBase {
|
|
130
|
+
set count(value) {
|
|
131
|
+
this.pdsSetProperty('count', value);
|
|
132
|
+
}
|
|
133
|
+
set dot(value) {
|
|
134
|
+
this.pdsSetProperty('dot', value);
|
|
135
|
+
}
|
|
136
|
+
set max(value) {
|
|
137
|
+
this.pdsSetProperty('max', value);
|
|
138
|
+
}
|
|
139
|
+
set variant(value) {
|
|
140
|
+
this.pdsSetProperty('variant', value);
|
|
141
|
+
}
|
|
142
|
+
/** Accessible name announced instead of the visible text. */
|
|
143
|
+
set ariaLabel(value) {
|
|
144
|
+
this.pdsSetAttribute('aria-label', value);
|
|
145
|
+
}
|
|
146
|
+
constructor() {
|
|
147
|
+
super(definePdsBadge);
|
|
148
|
+
}
|
|
149
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsBadgeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
150
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: PdsBadgeComponent, isStandalone: true, selector: "pds-badge", inputs: { count: "count", dot: ["dot", "dot", booleanAttribute], max: ["max", "max", numberAttribute], variant: "variant", ariaLabel: ["aria-label", "ariaLabel"] }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
151
|
+
}
|
|
152
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsBadgeComponent, decorators: [{
|
|
153
|
+
type: Component,
|
|
154
|
+
args: [{
|
|
155
|
+
selector: 'pds-badge',
|
|
156
|
+
standalone: true,
|
|
157
|
+
template: '<ng-content></ng-content>',
|
|
158
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
159
|
+
encapsulation: ViewEncapsulation.None,
|
|
160
|
+
}]
|
|
161
|
+
}], ctorParameters: () => [], propDecorators: { count: [{
|
|
162
|
+
type: Input
|
|
163
|
+
}], dot: [{
|
|
164
|
+
type: Input,
|
|
165
|
+
args: [{ transform: booleanAttribute }]
|
|
166
|
+
}], max: [{
|
|
167
|
+
type: Input,
|
|
168
|
+
args: [{ transform: numberAttribute }]
|
|
169
|
+
}], variant: [{
|
|
170
|
+
type: Input
|
|
171
|
+
}], ariaLabel: [{
|
|
172
|
+
type: Input,
|
|
173
|
+
args: ['aria-label']
|
|
174
|
+
}] } });
|
|
175
|
+
/** Shows the user's location in a hierarchy. */
|
|
176
|
+
export class PdsBreadcrumbComponent extends PdsComponentBase {
|
|
177
|
+
set expandLabel(value) {
|
|
178
|
+
this.pdsSetProperty('expandLabel', value);
|
|
179
|
+
}
|
|
180
|
+
set label(value) {
|
|
181
|
+
this.pdsSetProperty('label', value);
|
|
182
|
+
}
|
|
183
|
+
set maxItems(value) {
|
|
184
|
+
this.pdsSetProperty('maxItems', value);
|
|
185
|
+
}
|
|
186
|
+
constructor() {
|
|
187
|
+
super(definePdsBreadcrumb);
|
|
188
|
+
/** Fired when the collapsed items are revealed. */
|
|
189
|
+
this.pdsExpand = new EventEmitter();
|
|
190
|
+
this.pdsForward('pds-expand', this.pdsExpand);
|
|
191
|
+
}
|
|
192
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsBreadcrumbComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
193
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: PdsBreadcrumbComponent, isStandalone: true, selector: "pds-breadcrumb", inputs: { expandLabel: "expandLabel", label: "label", maxItems: ["maxItems", "maxItems", numberAttribute] }, outputs: { pdsExpand: "pdsExpand" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
194
|
+
}
|
|
195
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsBreadcrumbComponent, decorators: [{
|
|
196
|
+
type: Component,
|
|
197
|
+
args: [{
|
|
198
|
+
selector: 'pds-breadcrumb',
|
|
199
|
+
standalone: true,
|
|
200
|
+
template: '<ng-content></ng-content>',
|
|
201
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
202
|
+
encapsulation: ViewEncapsulation.None,
|
|
203
|
+
}]
|
|
204
|
+
}], ctorParameters: () => [], propDecorators: { expandLabel: [{
|
|
205
|
+
type: Input
|
|
206
|
+
}], label: [{
|
|
207
|
+
type: Input
|
|
208
|
+
}], maxItems: [{
|
|
209
|
+
type: Input,
|
|
210
|
+
args: [{ transform: numberAttribute }]
|
|
211
|
+
}], pdsExpand: [{
|
|
212
|
+
type: Output
|
|
213
|
+
}] } });
|
|
214
|
+
/** An item inside `pds-breadcrumb`. */
|
|
215
|
+
export class PdsBreadcrumbItemComponent extends PdsComponentBase {
|
|
216
|
+
set current(value) {
|
|
217
|
+
this.pdsSetProperty('current', value);
|
|
218
|
+
}
|
|
219
|
+
set href(value) {
|
|
220
|
+
this.pdsSetProperty('href', value);
|
|
221
|
+
}
|
|
222
|
+
constructor() {
|
|
223
|
+
super(definePdsBreadcrumbItem);
|
|
224
|
+
}
|
|
225
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsBreadcrumbItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
226
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: PdsBreadcrumbItemComponent, isStandalone: true, selector: "pds-breadcrumb-item", inputs: { current: ["current", "current", booleanAttribute], href: "href" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
227
|
+
}
|
|
228
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsBreadcrumbItemComponent, decorators: [{
|
|
229
|
+
type: Component,
|
|
230
|
+
args: [{
|
|
231
|
+
selector: 'pds-breadcrumb-item',
|
|
232
|
+
standalone: true,
|
|
233
|
+
template: '<ng-content></ng-content>',
|
|
234
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
235
|
+
encapsulation: ViewEncapsulation.None,
|
|
236
|
+
}]
|
|
237
|
+
}], ctorParameters: () => [], propDecorators: { current: [{
|
|
238
|
+
type: Input,
|
|
239
|
+
args: [{ transform: booleanAttribute }]
|
|
240
|
+
}], href: [{
|
|
241
|
+
type: Input
|
|
242
|
+
}] } });
|
|
243
|
+
/** Buttons trigger actions or navigation. */
|
|
244
|
+
export class PdsButtonComponent extends PdsComponentBase {
|
|
245
|
+
set disabled(value) {
|
|
246
|
+
this.pdsSetProperty('disabled', value);
|
|
247
|
+
}
|
|
248
|
+
set fullWidth(value) {
|
|
249
|
+
this.pdsSetProperty('fullWidth', value);
|
|
250
|
+
}
|
|
251
|
+
set href(value) {
|
|
252
|
+
this.pdsSetProperty('href', value);
|
|
253
|
+
}
|
|
254
|
+
set loading(value) {
|
|
255
|
+
this.pdsSetProperty('loading', value);
|
|
256
|
+
}
|
|
257
|
+
set size(value) {
|
|
258
|
+
this.pdsSetProperty('size', value);
|
|
259
|
+
}
|
|
260
|
+
set type(value) {
|
|
261
|
+
this.pdsSetProperty('type', value);
|
|
262
|
+
}
|
|
263
|
+
set variant(value) {
|
|
264
|
+
this.pdsSetProperty('variant', value);
|
|
265
|
+
}
|
|
266
|
+
/** Link target when `href` is set. */
|
|
267
|
+
set target(value) {
|
|
268
|
+
this.pdsSetAttribute('target', value);
|
|
269
|
+
}
|
|
270
|
+
constructor() {
|
|
271
|
+
super(definePdsButton);
|
|
272
|
+
/** Fired when activated (not fired while disabled/loading). Detail: `{ originalEvent }`. */
|
|
273
|
+
this.pdsClick = new EventEmitter();
|
|
274
|
+
this.pdsForward('pds-click', this.pdsClick);
|
|
275
|
+
}
|
|
276
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
277
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: PdsButtonComponent, isStandalone: true, selector: "pds-button", inputs: { disabled: ["disabled", "disabled", booleanAttribute], fullWidth: ["fullWidth", "fullWidth", booleanAttribute], href: "href", loading: ["loading", "loading", booleanAttribute], size: "size", type: "type", variant: "variant", target: "target" }, outputs: { pdsClick: "pdsClick" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
278
|
+
}
|
|
279
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsButtonComponent, decorators: [{
|
|
280
|
+
type: Component,
|
|
281
|
+
args: [{
|
|
282
|
+
selector: 'pds-button',
|
|
283
|
+
standalone: true,
|
|
284
|
+
template: '<ng-content></ng-content>',
|
|
285
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
286
|
+
encapsulation: ViewEncapsulation.None,
|
|
287
|
+
}]
|
|
288
|
+
}], ctorParameters: () => [], propDecorators: { disabled: [{
|
|
289
|
+
type: Input,
|
|
290
|
+
args: [{ transform: booleanAttribute }]
|
|
291
|
+
}], fullWidth: [{
|
|
292
|
+
type: Input,
|
|
293
|
+
args: [{ transform: booleanAttribute }]
|
|
294
|
+
}], href: [{
|
|
295
|
+
type: Input
|
|
296
|
+
}], loading: [{
|
|
297
|
+
type: Input,
|
|
298
|
+
args: [{ transform: booleanAttribute }]
|
|
299
|
+
}], size: [{
|
|
300
|
+
type: Input
|
|
301
|
+
}], type: [{
|
|
302
|
+
type: Input
|
|
303
|
+
}], variant: [{
|
|
304
|
+
type: Input
|
|
305
|
+
}], target: [{
|
|
306
|
+
type: Input
|
|
307
|
+
}], pdsClick: [{
|
|
308
|
+
type: Output
|
|
309
|
+
}] } });
|
|
310
|
+
/** Cards group related content and actions. */
|
|
311
|
+
export class PdsCardComponent extends PdsComponentBase {
|
|
312
|
+
set clickable(value) {
|
|
313
|
+
this.pdsSetProperty('clickable', value);
|
|
314
|
+
}
|
|
315
|
+
set heading(value) {
|
|
316
|
+
this.pdsSetProperty('heading', value);
|
|
317
|
+
}
|
|
318
|
+
set headingLevel(value) {
|
|
319
|
+
this.pdsSetProperty('headingLevel', value);
|
|
320
|
+
}
|
|
321
|
+
set href(value) {
|
|
322
|
+
this.pdsSetProperty('href', value);
|
|
323
|
+
}
|
|
324
|
+
set variant(value) {
|
|
325
|
+
this.pdsSetProperty('variant', value);
|
|
326
|
+
}
|
|
327
|
+
/** Accessible link name when `href` is set without `heading`. */
|
|
328
|
+
set label(value) {
|
|
329
|
+
this.pdsSetAttribute('label', value);
|
|
330
|
+
}
|
|
331
|
+
/** Link target when `href` is set. */
|
|
332
|
+
set target(value) {
|
|
333
|
+
this.pdsSetAttribute('target', value);
|
|
334
|
+
}
|
|
335
|
+
constructor() {
|
|
336
|
+
super(definePdsCard);
|
|
337
|
+
}
|
|
338
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
339
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: PdsCardComponent, isStandalone: true, selector: "pds-card", inputs: { clickable: ["clickable", "clickable", booleanAttribute], heading: "heading", headingLevel: ["headingLevel", "headingLevel", numberAttribute], href: "href", variant: "variant", label: "label", target: "target" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
340
|
+
}
|
|
341
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsCardComponent, decorators: [{
|
|
342
|
+
type: Component,
|
|
343
|
+
args: [{
|
|
344
|
+
selector: 'pds-card',
|
|
345
|
+
standalone: true,
|
|
346
|
+
template: '<ng-content></ng-content>',
|
|
347
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
348
|
+
encapsulation: ViewEncapsulation.None,
|
|
349
|
+
}]
|
|
350
|
+
}], ctorParameters: () => [], propDecorators: { clickable: [{
|
|
351
|
+
type: Input,
|
|
352
|
+
args: [{ transform: booleanAttribute }]
|
|
353
|
+
}], heading: [{
|
|
354
|
+
type: Input
|
|
355
|
+
}], headingLevel: [{
|
|
356
|
+
type: Input,
|
|
357
|
+
args: [{ transform: numberAttribute }]
|
|
358
|
+
}], href: [{
|
|
359
|
+
type: Input
|
|
360
|
+
}], variant: [{
|
|
361
|
+
type: Input
|
|
362
|
+
}], label: [{
|
|
363
|
+
type: Input
|
|
364
|
+
}], target: [{
|
|
365
|
+
type: Input
|
|
366
|
+
}] } });
|
|
367
|
+
/** Checkbox for boolean or multi-select choices. */
|
|
368
|
+
export class PdsCheckboxComponent extends PdsComponentBase {
|
|
369
|
+
/** Current checked state (the attribute is the initial state). */
|
|
370
|
+
set checked(value) {
|
|
371
|
+
this.pdsSetProperty('checked', value);
|
|
372
|
+
}
|
|
373
|
+
set disabled(value) {
|
|
374
|
+
this.pdsSetProperty('disabled', value);
|
|
375
|
+
}
|
|
376
|
+
set errorText(value) {
|
|
377
|
+
this.pdsSetProperty('errorText', value);
|
|
378
|
+
}
|
|
379
|
+
set helperText(value) {
|
|
380
|
+
this.pdsSetProperty('helperText', value);
|
|
381
|
+
}
|
|
382
|
+
set indeterminate(value) {
|
|
383
|
+
this.pdsSetProperty('indeterminate', value);
|
|
384
|
+
}
|
|
385
|
+
set label(value) {
|
|
386
|
+
this.pdsSetProperty('label', value);
|
|
387
|
+
}
|
|
388
|
+
set name(value) {
|
|
389
|
+
this.pdsSetProperty('name', value);
|
|
390
|
+
}
|
|
391
|
+
set required(value) {
|
|
392
|
+
this.pdsSetProperty('required', value);
|
|
393
|
+
}
|
|
394
|
+
set value(value) {
|
|
395
|
+
this.pdsSetProperty('value', value);
|
|
396
|
+
}
|
|
397
|
+
constructor() {
|
|
398
|
+
super(definePdsCheckbox);
|
|
399
|
+
/** Fired when toggled by the user. Detail: `{ checked, value }`. */
|
|
400
|
+
this.pdsChange = new EventEmitter();
|
|
401
|
+
this.pdsForward('pds-change', this.pdsChange);
|
|
402
|
+
}
|
|
403
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsCheckboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
404
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: PdsCheckboxComponent, isStandalone: true, selector: "pds-checkbox", inputs: { checked: ["checked", "checked", booleanAttribute], disabled: ["disabled", "disabled", booleanAttribute], errorText: "errorText", helperText: "helperText", indeterminate: ["indeterminate", "indeterminate", booleanAttribute], label: "label", name: "name", required: ["required", "required", booleanAttribute], value: "value" }, outputs: { pdsChange: "pdsChange" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
405
|
+
}
|
|
406
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsCheckboxComponent, decorators: [{
|
|
407
|
+
type: Component,
|
|
408
|
+
args: [{
|
|
409
|
+
selector: 'pds-checkbox',
|
|
410
|
+
standalone: true,
|
|
411
|
+
template: '<ng-content></ng-content>',
|
|
412
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
413
|
+
encapsulation: ViewEncapsulation.None,
|
|
414
|
+
}]
|
|
415
|
+
}], ctorParameters: () => [], propDecorators: { checked: [{
|
|
416
|
+
type: Input,
|
|
417
|
+
args: [{ transform: booleanAttribute }]
|
|
418
|
+
}], disabled: [{
|
|
419
|
+
type: Input,
|
|
420
|
+
args: [{ transform: booleanAttribute }]
|
|
421
|
+
}], errorText: [{
|
|
422
|
+
type: Input
|
|
423
|
+
}], helperText: [{
|
|
424
|
+
type: Input
|
|
425
|
+
}], indeterminate: [{
|
|
426
|
+
type: Input,
|
|
427
|
+
args: [{ transform: booleanAttribute }]
|
|
428
|
+
}], label: [{
|
|
429
|
+
type: Input
|
|
430
|
+
}], name: [{
|
|
431
|
+
type: Input
|
|
432
|
+
}], required: [{
|
|
433
|
+
type: Input,
|
|
434
|
+
args: [{ transform: booleanAttribute }]
|
|
435
|
+
}], value: [{
|
|
436
|
+
type: Input
|
|
437
|
+
}], pdsChange: [{
|
|
438
|
+
type: Output
|
|
439
|
+
}] } });
|
|
440
|
+
/** Pick a date by typing or from a calendar popup. */
|
|
441
|
+
export class PdsDatepickerComponent extends PdsComponentBase {
|
|
442
|
+
set disabled(value) {
|
|
443
|
+
this.pdsSetProperty('disabled', value);
|
|
444
|
+
}
|
|
445
|
+
set disabledDates(value) {
|
|
446
|
+
this.pdsSetProperty('disabledDates', value);
|
|
447
|
+
}
|
|
448
|
+
set errorText(value) {
|
|
449
|
+
this.pdsSetProperty('errorText', value);
|
|
450
|
+
}
|
|
451
|
+
set firstDayOfWeek(value) {
|
|
452
|
+
this.pdsSetProperty('firstDayOfWeek', value);
|
|
453
|
+
}
|
|
454
|
+
set helperText(value) {
|
|
455
|
+
this.pdsSetProperty('helperText', value);
|
|
456
|
+
}
|
|
457
|
+
set label(value) {
|
|
458
|
+
this.pdsSetProperty('label', value);
|
|
459
|
+
}
|
|
460
|
+
set locale(value) {
|
|
461
|
+
this.pdsSetProperty('locale', value);
|
|
462
|
+
}
|
|
463
|
+
set max(value) {
|
|
464
|
+
this.pdsSetProperty('max', value);
|
|
465
|
+
}
|
|
466
|
+
set min(value) {
|
|
467
|
+
this.pdsSetProperty('min', value);
|
|
468
|
+
}
|
|
469
|
+
set name(value) {
|
|
470
|
+
this.pdsSetProperty('name', value);
|
|
471
|
+
}
|
|
472
|
+
set placeholder(value) {
|
|
473
|
+
this.pdsSetProperty('placeholder', value);
|
|
474
|
+
}
|
|
475
|
+
set readonly(value) {
|
|
476
|
+
this.pdsSetProperty('readonly', value);
|
|
477
|
+
}
|
|
478
|
+
set required(value) {
|
|
479
|
+
this.pdsSetProperty('required', value);
|
|
480
|
+
}
|
|
481
|
+
set value(value) {
|
|
482
|
+
this.pdsSetProperty('value', value);
|
|
483
|
+
}
|
|
484
|
+
constructor() {
|
|
485
|
+
super(definePdsDatepicker);
|
|
486
|
+
/** Fired when the value changes. Detail: `{ value }` (ISO string or empty). */
|
|
487
|
+
this.pdsChange = new EventEmitter();
|
|
488
|
+
/** Fired when the calendar opens. */
|
|
489
|
+
this.pdsOpen = new EventEmitter();
|
|
490
|
+
/** Fired when the calendar closes. */
|
|
491
|
+
this.pdsClose = new EventEmitter();
|
|
492
|
+
this.pdsForward('pds-change', this.pdsChange);
|
|
493
|
+
this.pdsForward('pds-open', this.pdsOpen);
|
|
494
|
+
this.pdsForward('pds-close', this.pdsClose);
|
|
495
|
+
}
|
|
496
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsDatepickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
497
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: PdsDatepickerComponent, isStandalone: true, selector: "pds-datepicker", inputs: { disabled: ["disabled", "disabled", booleanAttribute], disabledDates: "disabledDates", errorText: "errorText", firstDayOfWeek: ["firstDayOfWeek", "firstDayOfWeek", numberAttribute], helperText: "helperText", label: "label", locale: "locale", max: "max", min: "min", name: "name", placeholder: "placeholder", readonly: ["readonly", "readonly", booleanAttribute], required: ["required", "required", booleanAttribute], value: "value" }, outputs: { pdsChange: "pdsChange", pdsOpen: "pdsOpen", pdsClose: "pdsClose" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
498
|
+
}
|
|
499
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsDatepickerComponent, decorators: [{
|
|
500
|
+
type: Component,
|
|
501
|
+
args: [{
|
|
502
|
+
selector: 'pds-datepicker',
|
|
503
|
+
standalone: true,
|
|
504
|
+
template: '<ng-content></ng-content>',
|
|
505
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
506
|
+
encapsulation: ViewEncapsulation.None,
|
|
507
|
+
}]
|
|
508
|
+
}], ctorParameters: () => [], propDecorators: { disabled: [{
|
|
509
|
+
type: Input,
|
|
510
|
+
args: [{ transform: booleanAttribute }]
|
|
511
|
+
}], disabledDates: [{
|
|
512
|
+
type: Input
|
|
513
|
+
}], errorText: [{
|
|
514
|
+
type: Input
|
|
515
|
+
}], firstDayOfWeek: [{
|
|
516
|
+
type: Input,
|
|
517
|
+
args: [{ transform: numberAttribute }]
|
|
518
|
+
}], helperText: [{
|
|
519
|
+
type: Input
|
|
520
|
+
}], label: [{
|
|
521
|
+
type: Input
|
|
522
|
+
}], locale: [{
|
|
523
|
+
type: Input
|
|
524
|
+
}], max: [{
|
|
525
|
+
type: Input
|
|
526
|
+
}], min: [{
|
|
527
|
+
type: Input
|
|
528
|
+
}], name: [{
|
|
529
|
+
type: Input
|
|
530
|
+
}], placeholder: [{
|
|
531
|
+
type: Input
|
|
532
|
+
}], readonly: [{
|
|
533
|
+
type: Input,
|
|
534
|
+
args: [{ transform: booleanAttribute }]
|
|
535
|
+
}], required: [{
|
|
536
|
+
type: Input,
|
|
537
|
+
args: [{ transform: booleanAttribute }]
|
|
538
|
+
}], value: [{
|
|
539
|
+
type: Input
|
|
540
|
+
}], pdsChange: [{
|
|
541
|
+
type: Output
|
|
542
|
+
}], pdsOpen: [{
|
|
543
|
+
type: Output
|
|
544
|
+
}], pdsClose: [{
|
|
545
|
+
type: Output
|
|
546
|
+
}] } });
|
|
547
|
+
/** Dialogs interrupt the user with focused, modal content. */
|
|
548
|
+
export class PdsDialogComponent extends PdsComponentBase {
|
|
549
|
+
set dismissible(value) {
|
|
550
|
+
this.pdsSetProperty('dismissible', value);
|
|
551
|
+
}
|
|
552
|
+
set heading(value) {
|
|
553
|
+
this.pdsSetProperty('heading', value);
|
|
554
|
+
}
|
|
555
|
+
set open(value) {
|
|
556
|
+
this.pdsSetProperty('open', value);
|
|
557
|
+
}
|
|
558
|
+
/** Value reported by `pds-close`. */
|
|
559
|
+
set returnValue(value) {
|
|
560
|
+
this.pdsSetProperty('returnValue', value);
|
|
561
|
+
}
|
|
562
|
+
set size(value) {
|
|
563
|
+
this.pdsSetProperty('size', value);
|
|
564
|
+
}
|
|
565
|
+
/** Accessible label of the close button. Default `Close`. */
|
|
566
|
+
set closeLabel(value) {
|
|
567
|
+
this.pdsSetAttribute('close-label', value);
|
|
568
|
+
}
|
|
569
|
+
constructor() {
|
|
570
|
+
super(definePdsDialog);
|
|
571
|
+
/** Fired after the dialog opened. */
|
|
572
|
+
this.pdsOpen = new EventEmitter();
|
|
573
|
+
/** Fired after the dialog closed. Detail: `{ returnValue }`. */
|
|
574
|
+
this.pdsClose = new EventEmitter();
|
|
575
|
+
/** Cancelable; fired when Escape, backdrop or close button asks to close. Detail: `{ reason }`. */
|
|
576
|
+
this.pdsRequestClose = new EventEmitter();
|
|
577
|
+
this.pdsForward('pds-open', this.pdsOpen);
|
|
578
|
+
this.pdsForward('pds-close', this.pdsClose);
|
|
579
|
+
this.pdsForward('pds-request-close', this.pdsRequestClose);
|
|
580
|
+
}
|
|
581
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
582
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: PdsDialogComponent, isStandalone: true, selector: "pds-dialog", inputs: { dismissible: ["dismissible", "dismissible", booleanAttribute], heading: "heading", open: ["open", "open", booleanAttribute], returnValue: "returnValue", size: "size", closeLabel: ["close-label", "closeLabel"] }, outputs: { pdsOpen: "pdsOpen", pdsClose: "pdsClose", pdsRequestClose: "pdsRequestClose" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
583
|
+
}
|
|
584
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsDialogComponent, decorators: [{
|
|
585
|
+
type: Component,
|
|
586
|
+
args: [{
|
|
587
|
+
selector: 'pds-dialog',
|
|
588
|
+
standalone: true,
|
|
589
|
+
template: '<ng-content></ng-content>',
|
|
590
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
591
|
+
encapsulation: ViewEncapsulation.None,
|
|
592
|
+
}]
|
|
593
|
+
}], ctorParameters: () => [], propDecorators: { dismissible: [{
|
|
594
|
+
type: Input,
|
|
595
|
+
args: [{ transform: booleanAttribute }]
|
|
596
|
+
}], heading: [{
|
|
597
|
+
type: Input
|
|
598
|
+
}], open: [{
|
|
599
|
+
type: Input,
|
|
600
|
+
args: [{ transform: booleanAttribute }]
|
|
601
|
+
}], returnValue: [{
|
|
602
|
+
type: Input
|
|
603
|
+
}], size: [{
|
|
604
|
+
type: Input
|
|
605
|
+
}], closeLabel: [{
|
|
606
|
+
type: Input,
|
|
607
|
+
args: ['close-label']
|
|
608
|
+
}], pdsOpen: [{
|
|
609
|
+
type: Output
|
|
610
|
+
}], pdsClose: [{
|
|
611
|
+
type: Output
|
|
612
|
+
}], pdsRequestClose: [{
|
|
613
|
+
type: Output
|
|
614
|
+
}] } });
|
|
615
|
+
/** Dropdown menu opened from a button. */
|
|
616
|
+
export class PdsDropdownComponent extends PdsComponentBase {
|
|
617
|
+
set disabled(value) {
|
|
618
|
+
this.pdsSetProperty('disabled', value);
|
|
619
|
+
}
|
|
620
|
+
set label(value) {
|
|
621
|
+
this.pdsSetProperty('label', value);
|
|
622
|
+
}
|
|
623
|
+
set open(value) {
|
|
624
|
+
this.pdsSetProperty('open', value);
|
|
625
|
+
}
|
|
626
|
+
set placement(value) {
|
|
627
|
+
this.pdsSetProperty('placement', value);
|
|
628
|
+
}
|
|
629
|
+
constructor() {
|
|
630
|
+
super(definePdsDropdown);
|
|
631
|
+
/** Fired when an item is chosen. Detail: `{ value }`. */
|
|
632
|
+
this.pdsSelect = new EventEmitter();
|
|
633
|
+
this.pdsForward('pds-select', this.pdsSelect);
|
|
634
|
+
}
|
|
635
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsDropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
636
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: PdsDropdownComponent, isStandalone: true, selector: "pds-dropdown", inputs: { disabled: ["disabled", "disabled", booleanAttribute], label: "label", open: ["open", "open", booleanAttribute], placement: "placement" }, outputs: { pdsSelect: "pdsSelect" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
637
|
+
}
|
|
638
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsDropdownComponent, decorators: [{
|
|
639
|
+
type: Component,
|
|
640
|
+
args: [{
|
|
641
|
+
selector: 'pds-dropdown',
|
|
642
|
+
standalone: true,
|
|
643
|
+
template: '<ng-content></ng-content>',
|
|
644
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
645
|
+
encapsulation: ViewEncapsulation.None,
|
|
646
|
+
}]
|
|
647
|
+
}], ctorParameters: () => [], propDecorators: { disabled: [{
|
|
648
|
+
type: Input,
|
|
649
|
+
args: [{ transform: booleanAttribute }]
|
|
650
|
+
}], label: [{
|
|
651
|
+
type: Input
|
|
652
|
+
}], open: [{
|
|
653
|
+
type: Input,
|
|
654
|
+
args: [{ transform: booleanAttribute }]
|
|
655
|
+
}], placement: [{
|
|
656
|
+
type: Input
|
|
657
|
+
}], pdsSelect: [{
|
|
658
|
+
type: Output
|
|
659
|
+
}] } });
|
|
660
|
+
/** Menu item. */
|
|
661
|
+
export class PdsDropdownItemComponent extends PdsComponentBase {
|
|
662
|
+
set disabled(value) {
|
|
663
|
+
this.pdsSetProperty('disabled', value);
|
|
664
|
+
}
|
|
665
|
+
set href(value) {
|
|
666
|
+
this.pdsSetProperty('href', value);
|
|
667
|
+
}
|
|
668
|
+
set value(value) {
|
|
669
|
+
this.pdsSetProperty('value', value);
|
|
670
|
+
}
|
|
671
|
+
constructor() {
|
|
672
|
+
super(definePdsDropdownItem);
|
|
673
|
+
}
|
|
674
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsDropdownItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
675
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: PdsDropdownItemComponent, isStandalone: true, selector: "pds-dropdown-item", inputs: { disabled: ["disabled", "disabled", booleanAttribute], href: "href", value: "value" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
676
|
+
}
|
|
677
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsDropdownItemComponent, decorators: [{
|
|
678
|
+
type: Component,
|
|
679
|
+
args: [{
|
|
680
|
+
selector: 'pds-dropdown-item',
|
|
681
|
+
standalone: true,
|
|
682
|
+
template: '<ng-content></ng-content>',
|
|
683
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
684
|
+
encapsulation: ViewEncapsulation.None,
|
|
685
|
+
}]
|
|
686
|
+
}], ctorParameters: () => [], propDecorators: { disabled: [{
|
|
687
|
+
type: Input,
|
|
688
|
+
args: [{ transform: booleanAttribute }]
|
|
689
|
+
}], href: [{
|
|
690
|
+
type: Input
|
|
691
|
+
}], value: [{
|
|
692
|
+
type: Input
|
|
693
|
+
}] } });
|
|
694
|
+
/** Expandable reveals or hides content. */
|
|
695
|
+
export class PdsExpandableComponent extends PdsComponentBase {
|
|
696
|
+
set label(value) {
|
|
697
|
+
this.pdsSetProperty('label', value);
|
|
698
|
+
}
|
|
699
|
+
set open(value) {
|
|
700
|
+
this.pdsSetProperty('open', value);
|
|
701
|
+
}
|
|
702
|
+
constructor() {
|
|
703
|
+
super(definePdsExpandable);
|
|
704
|
+
/** Fired when the user toggles. Detail: `{ open }`. */
|
|
705
|
+
this.pdsToggle = new EventEmitter();
|
|
706
|
+
this.pdsForward('pds-toggle', this.pdsToggle);
|
|
707
|
+
}
|
|
708
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsExpandableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
709
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: PdsExpandableComponent, isStandalone: true, selector: "pds-expandable", inputs: { label: "label", open: ["open", "open", booleanAttribute] }, outputs: { pdsToggle: "pdsToggle" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
710
|
+
}
|
|
711
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsExpandableComponent, decorators: [{
|
|
712
|
+
type: Component,
|
|
713
|
+
args: [{
|
|
714
|
+
selector: 'pds-expandable',
|
|
715
|
+
standalone: true,
|
|
716
|
+
template: '<ng-content></ng-content>',
|
|
717
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
718
|
+
encapsulation: ViewEncapsulation.None,
|
|
719
|
+
}]
|
|
720
|
+
}], ctorParameters: () => [], propDecorators: { label: [{
|
|
721
|
+
type: Input
|
|
722
|
+
}], open: [{
|
|
723
|
+
type: Input,
|
|
724
|
+
args: [{ transform: booleanAttribute }]
|
|
725
|
+
}], pdsToggle: [{
|
|
726
|
+
type: Output
|
|
727
|
+
}] } });
|
|
728
|
+
/** Single-line text field. */
|
|
729
|
+
export class PdsInputComponent extends PdsComponentBase {
|
|
730
|
+
set disabled(value) {
|
|
731
|
+
this.pdsSetProperty('disabled', value);
|
|
732
|
+
}
|
|
733
|
+
set errorText(value) {
|
|
734
|
+
this.pdsSetProperty('errorText', value);
|
|
735
|
+
}
|
|
736
|
+
set helperText(value) {
|
|
737
|
+
this.pdsSetProperty('helperText', value);
|
|
738
|
+
}
|
|
739
|
+
set label(value) {
|
|
740
|
+
this.pdsSetProperty('label', value);
|
|
741
|
+
}
|
|
742
|
+
set name(value) {
|
|
743
|
+
this.pdsSetProperty('name', value);
|
|
744
|
+
}
|
|
745
|
+
set placeholder(value) {
|
|
746
|
+
this.pdsSetProperty('placeholder', value);
|
|
747
|
+
}
|
|
748
|
+
set readOnly(value) {
|
|
749
|
+
this.pdsSetProperty('readOnly', value);
|
|
750
|
+
}
|
|
751
|
+
set required(value) {
|
|
752
|
+
this.pdsSetProperty('required', value);
|
|
753
|
+
}
|
|
754
|
+
set type(value) {
|
|
755
|
+
this.pdsSetProperty('type', value);
|
|
756
|
+
}
|
|
757
|
+
/** Current value. */
|
|
758
|
+
set value(value) {
|
|
759
|
+
this.pdsSetProperty('value', value);
|
|
760
|
+
}
|
|
761
|
+
/** Native autocomplete hint. */
|
|
762
|
+
set autocomplete(value) {
|
|
763
|
+
this.pdsSetAttribute('autocomplete', value);
|
|
764
|
+
}
|
|
765
|
+
/** Maximum (number type). */
|
|
766
|
+
set max(value) {
|
|
767
|
+
this.pdsSetAttribute('max', value);
|
|
768
|
+
}
|
|
769
|
+
/** Maximum length. */
|
|
770
|
+
set maxlength(value) {
|
|
771
|
+
this.pdsSetAttribute('maxlength', value);
|
|
772
|
+
}
|
|
773
|
+
/** Minimum (number type). */
|
|
774
|
+
set min(value) {
|
|
775
|
+
this.pdsSetAttribute('min', value);
|
|
776
|
+
}
|
|
777
|
+
/** Minimum length. */
|
|
778
|
+
set minlength(value) {
|
|
779
|
+
this.pdsSetAttribute('minlength', value);
|
|
780
|
+
}
|
|
781
|
+
/** Validation regular expression. */
|
|
782
|
+
set pattern(value) {
|
|
783
|
+
this.pdsSetAttribute('pattern', value);
|
|
784
|
+
}
|
|
785
|
+
/** Makes the field read-only. */
|
|
786
|
+
set readonly(value) {
|
|
787
|
+
this.pdsSetAttribute('readonly', value);
|
|
788
|
+
}
|
|
789
|
+
constructor() {
|
|
790
|
+
super(definePdsInput);
|
|
791
|
+
/** Fired on every edit. Detail: `{ value }`. */
|
|
792
|
+
this.pdsInput = new EventEmitter();
|
|
793
|
+
/** Fired when the value is committed. Detail: `{ value }`. */
|
|
794
|
+
this.pdsChange = new EventEmitter();
|
|
795
|
+
this.pdsForward('pds-input', this.pdsInput);
|
|
796
|
+
this.pdsForward('pds-change', this.pdsChange);
|
|
797
|
+
}
|
|
798
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
799
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: PdsInputComponent, isStandalone: true, selector: "pds-input", inputs: { disabled: ["disabled", "disabled", booleanAttribute], errorText: "errorText", helperText: "helperText", label: "label", name: "name", placeholder: "placeholder", readOnly: ["readOnly", "readOnly", booleanAttribute], required: ["required", "required", booleanAttribute], type: "type", value: "value", autocomplete: "autocomplete", max: "max", maxlength: "maxlength", min: "min", minlength: "minlength", pattern: "pattern", readonly: "readonly" }, outputs: { pdsInput: "pdsInput", pdsChange: "pdsChange" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
800
|
+
}
|
|
801
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsInputComponent, decorators: [{
|
|
802
|
+
type: Component,
|
|
803
|
+
args: [{
|
|
804
|
+
selector: 'pds-input',
|
|
805
|
+
standalone: true,
|
|
806
|
+
template: '<ng-content></ng-content>',
|
|
807
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
808
|
+
encapsulation: ViewEncapsulation.None,
|
|
809
|
+
}]
|
|
810
|
+
}], ctorParameters: () => [], propDecorators: { disabled: [{
|
|
811
|
+
type: Input,
|
|
812
|
+
args: [{ transform: booleanAttribute }]
|
|
813
|
+
}], errorText: [{
|
|
814
|
+
type: Input
|
|
815
|
+
}], helperText: [{
|
|
816
|
+
type: Input
|
|
817
|
+
}], label: [{
|
|
818
|
+
type: Input
|
|
819
|
+
}], name: [{
|
|
820
|
+
type: Input
|
|
821
|
+
}], placeholder: [{
|
|
822
|
+
type: Input
|
|
823
|
+
}], readOnly: [{
|
|
824
|
+
type: Input,
|
|
825
|
+
args: [{ transform: booleanAttribute }]
|
|
826
|
+
}], required: [{
|
|
827
|
+
type: Input,
|
|
828
|
+
args: [{ transform: booleanAttribute }]
|
|
829
|
+
}], type: [{
|
|
830
|
+
type: Input
|
|
831
|
+
}], value: [{
|
|
832
|
+
type: Input
|
|
833
|
+
}], autocomplete: [{
|
|
834
|
+
type: Input
|
|
835
|
+
}], max: [{
|
|
836
|
+
type: Input
|
|
837
|
+
}], maxlength: [{
|
|
838
|
+
type: Input
|
|
839
|
+
}], min: [{
|
|
840
|
+
type: Input
|
|
841
|
+
}], minlength: [{
|
|
842
|
+
type: Input
|
|
843
|
+
}], pattern: [{
|
|
844
|
+
type: Input
|
|
845
|
+
}], readonly: [{
|
|
846
|
+
type: Input
|
|
847
|
+
}], pdsInput: [{
|
|
848
|
+
type: Output
|
|
849
|
+
}], pdsChange: [{
|
|
850
|
+
type: Output
|
|
851
|
+
}] } });
|
|
852
|
+
/** Links navigate to another location. */
|
|
853
|
+
export class PdsLinkComponent extends PdsComponentBase {
|
|
854
|
+
set external(value) {
|
|
855
|
+
this.pdsSetProperty('external', value);
|
|
856
|
+
}
|
|
857
|
+
set href(value) {
|
|
858
|
+
this.pdsSetProperty('href', value);
|
|
859
|
+
}
|
|
860
|
+
set target(value) {
|
|
861
|
+
this.pdsSetProperty('target', value);
|
|
862
|
+
}
|
|
863
|
+
set variant(value) {
|
|
864
|
+
this.pdsSetProperty('variant', value);
|
|
865
|
+
}
|
|
866
|
+
constructor() {
|
|
867
|
+
super(definePdsLink);
|
|
868
|
+
}
|
|
869
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsLinkComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
870
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: PdsLinkComponent, isStandalone: true, selector: "pds-link", inputs: { external: ["external", "external", booleanAttribute], href: "href", target: "target", variant: "variant" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
871
|
+
}
|
|
872
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsLinkComponent, decorators: [{
|
|
873
|
+
type: Component,
|
|
874
|
+
args: [{
|
|
875
|
+
selector: 'pds-link',
|
|
876
|
+
standalone: true,
|
|
877
|
+
template: '<ng-content></ng-content>',
|
|
878
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
879
|
+
encapsulation: ViewEncapsulation.None,
|
|
880
|
+
}]
|
|
881
|
+
}], ctorParameters: () => [], propDecorators: { external: [{
|
|
882
|
+
type: Input,
|
|
883
|
+
args: [{ transform: booleanAttribute }]
|
|
884
|
+
}], href: [{
|
|
885
|
+
type: Input
|
|
886
|
+
}], target: [{
|
|
887
|
+
type: Input
|
|
888
|
+
}], variant: [{
|
|
889
|
+
type: Input
|
|
890
|
+
}] } });
|
|
891
|
+
/** Lists present related items. */
|
|
892
|
+
export class PdsListComponent extends PdsComponentBase {
|
|
893
|
+
set variant(value) {
|
|
894
|
+
this.pdsSetProperty('variant', value);
|
|
895
|
+
}
|
|
896
|
+
constructor() {
|
|
897
|
+
super(definePdsList);
|
|
898
|
+
}
|
|
899
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
900
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: PdsListComponent, isStandalone: true, selector: "pds-list", inputs: { variant: "variant" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
901
|
+
}
|
|
902
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsListComponent, decorators: [{
|
|
903
|
+
type: Component,
|
|
904
|
+
args: [{
|
|
905
|
+
selector: 'pds-list',
|
|
906
|
+
standalone: true,
|
|
907
|
+
template: '<ng-content></ng-content>',
|
|
908
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
909
|
+
encapsulation: ViewEncapsulation.None,
|
|
910
|
+
}]
|
|
911
|
+
}], ctorParameters: () => [], propDecorators: { variant: [{
|
|
912
|
+
type: Input
|
|
913
|
+
}] } });
|
|
914
|
+
/** A single entry in a list. */
|
|
915
|
+
export class PdsListItemComponent extends PdsComponentBase {
|
|
916
|
+
set dataIndex(value) {
|
|
917
|
+
this.pdsSetAttribute('data-index', value);
|
|
918
|
+
}
|
|
919
|
+
set dataVariant(value) {
|
|
920
|
+
this.pdsSetAttribute('data-variant', value);
|
|
921
|
+
}
|
|
922
|
+
constructor() {
|
|
923
|
+
super(defineAll);
|
|
924
|
+
}
|
|
925
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsListItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
926
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: PdsListItemComponent, isStandalone: true, selector: "pds-list-item", inputs: { dataIndex: ["data-index", "dataIndex"], dataVariant: ["data-variant", "dataVariant"] }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
927
|
+
}
|
|
928
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsListItemComponent, decorators: [{
|
|
929
|
+
type: Component,
|
|
930
|
+
args: [{
|
|
931
|
+
selector: 'pds-list-item',
|
|
932
|
+
standalone: true,
|
|
933
|
+
template: '<ng-content></ng-content>',
|
|
934
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
935
|
+
encapsulation: ViewEncapsulation.None,
|
|
936
|
+
}]
|
|
937
|
+
}], ctorParameters: () => [], propDecorators: { dataIndex: [{
|
|
938
|
+
type: Input,
|
|
939
|
+
args: ['data-index']
|
|
940
|
+
}], dataVariant: [{
|
|
941
|
+
type: Input,
|
|
942
|
+
args: ['data-variant']
|
|
943
|
+
}] } });
|
|
944
|
+
/** Indicates that content is loading. */
|
|
945
|
+
export class PdsLoaderComponent extends PdsComponentBase {
|
|
946
|
+
set label(value) {
|
|
947
|
+
this.pdsSetProperty('label', value);
|
|
948
|
+
}
|
|
949
|
+
set overlay(value) {
|
|
950
|
+
this.pdsSetProperty('overlay', value);
|
|
951
|
+
}
|
|
952
|
+
set size(value) {
|
|
953
|
+
this.pdsSetProperty('size', value);
|
|
954
|
+
}
|
|
955
|
+
constructor() {
|
|
956
|
+
super(definePdsLoader);
|
|
957
|
+
}
|
|
958
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsLoaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
959
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: PdsLoaderComponent, isStandalone: true, selector: "pds-loader", inputs: { label: "label", overlay: ["overlay", "overlay", booleanAttribute], size: "size" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
960
|
+
}
|
|
961
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsLoaderComponent, decorators: [{
|
|
962
|
+
type: Component,
|
|
963
|
+
args: [{
|
|
964
|
+
selector: 'pds-loader',
|
|
965
|
+
standalone: true,
|
|
966
|
+
template: '<ng-content></ng-content>',
|
|
967
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
968
|
+
encapsulation: ViewEncapsulation.None,
|
|
969
|
+
}]
|
|
970
|
+
}], ctorParameters: () => [], propDecorators: { label: [{
|
|
971
|
+
type: Input
|
|
972
|
+
}], overlay: [{
|
|
973
|
+
type: Input,
|
|
974
|
+
args: [{ transform: booleanAttribute }]
|
|
975
|
+
}], size: [{
|
|
976
|
+
type: Input
|
|
977
|
+
}] } });
|
|
978
|
+
/** Media objects pair an image or icon with text. */
|
|
979
|
+
export class PdsMediaObjectComponent extends PdsComponentBase {
|
|
980
|
+
set align(value) {
|
|
981
|
+
this.pdsSetProperty('align', value);
|
|
982
|
+
}
|
|
983
|
+
set reverse(value) {
|
|
984
|
+
this.pdsSetProperty('reverse', value);
|
|
985
|
+
}
|
|
986
|
+
/** Breakpoint in px, or `null` when the container query is used. */
|
|
987
|
+
set stackBelow(value) {
|
|
988
|
+
this.pdsSetProperty('stackBelow', value);
|
|
989
|
+
}
|
|
990
|
+
constructor() {
|
|
991
|
+
super(definePdsMediaObject);
|
|
992
|
+
}
|
|
993
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsMediaObjectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
994
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: PdsMediaObjectComponent, isStandalone: true, selector: "pds-media-object", inputs: { align: "align", reverse: ["reverse", "reverse", booleanAttribute], stackBelow: "stackBelow" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
995
|
+
}
|
|
996
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsMediaObjectComponent, decorators: [{
|
|
997
|
+
type: Component,
|
|
998
|
+
args: [{
|
|
999
|
+
selector: 'pds-media-object',
|
|
1000
|
+
standalone: true,
|
|
1001
|
+
template: '<ng-content></ng-content>',
|
|
1002
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
1003
|
+
encapsulation: ViewEncapsulation.None,
|
|
1004
|
+
}]
|
|
1005
|
+
}], ctorParameters: () => [], propDecorators: { align: [{
|
|
1006
|
+
type: Input
|
|
1007
|
+
}], reverse: [{
|
|
1008
|
+
type: Input,
|
|
1009
|
+
args: [{ transform: booleanAttribute }]
|
|
1010
|
+
}], stackBelow: [{
|
|
1011
|
+
type: Input
|
|
1012
|
+
}] } });
|
|
1013
|
+
/** Navigate between pages of content. */
|
|
1014
|
+
export class PdsPaginationComponent extends PdsComponentBase {
|
|
1015
|
+
set hrefTemplate(value) {
|
|
1016
|
+
this.pdsSetProperty('hrefTemplate', value);
|
|
1017
|
+
}
|
|
1018
|
+
set label(value) {
|
|
1019
|
+
this.pdsSetProperty('label', value);
|
|
1020
|
+
}
|
|
1021
|
+
set page(value) {
|
|
1022
|
+
this.pdsSetProperty('page', value);
|
|
1023
|
+
}
|
|
1024
|
+
set siblingCount(value) {
|
|
1025
|
+
this.pdsSetProperty('siblingCount', value);
|
|
1026
|
+
}
|
|
1027
|
+
set totalPages(value) {
|
|
1028
|
+
this.pdsSetProperty('totalPages', value);
|
|
1029
|
+
}
|
|
1030
|
+
/** Accessible name of the next control. Default `Next page`. */
|
|
1031
|
+
set nextLabel(value) {
|
|
1032
|
+
this.pdsSetAttribute('next-label', value);
|
|
1033
|
+
}
|
|
1034
|
+
/** Accessible name of the previous control. Default `Previous page`. */
|
|
1035
|
+
set previousLabel(value) {
|
|
1036
|
+
this.pdsSetAttribute('previous-label', value);
|
|
1037
|
+
}
|
|
1038
|
+
constructor() {
|
|
1039
|
+
super(definePdsPagination);
|
|
1040
|
+
/** Fired when the user selects a page. Detail: `{ page }`. */
|
|
1041
|
+
this.pdsChange = new EventEmitter();
|
|
1042
|
+
this.pdsForward('pds-change', this.pdsChange);
|
|
1043
|
+
}
|
|
1044
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsPaginationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1045
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: PdsPaginationComponent, isStandalone: true, selector: "pds-pagination", inputs: { hrefTemplate: "hrefTemplate", label: "label", page: ["page", "page", numberAttribute], siblingCount: ["siblingCount", "siblingCount", numberAttribute], totalPages: ["totalPages", "totalPages", numberAttribute], nextLabel: ["next-label", "nextLabel"], previousLabel: ["previous-label", "previousLabel"] }, outputs: { pdsChange: "pdsChange" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
1046
|
+
}
|
|
1047
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsPaginationComponent, decorators: [{
|
|
1048
|
+
type: Component,
|
|
1049
|
+
args: [{
|
|
1050
|
+
selector: 'pds-pagination',
|
|
1051
|
+
standalone: true,
|
|
1052
|
+
template: '<ng-content></ng-content>',
|
|
1053
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
1054
|
+
encapsulation: ViewEncapsulation.None,
|
|
1055
|
+
}]
|
|
1056
|
+
}], ctorParameters: () => [], propDecorators: { hrefTemplate: [{
|
|
1057
|
+
type: Input
|
|
1058
|
+
}], label: [{
|
|
1059
|
+
type: Input
|
|
1060
|
+
}], page: [{
|
|
1061
|
+
type: Input,
|
|
1062
|
+
args: [{ transform: numberAttribute }]
|
|
1063
|
+
}], siblingCount: [{
|
|
1064
|
+
type: Input,
|
|
1065
|
+
args: [{ transform: numberAttribute }]
|
|
1066
|
+
}], totalPages: [{
|
|
1067
|
+
type: Input,
|
|
1068
|
+
args: [{ transform: numberAttribute }]
|
|
1069
|
+
}], nextLabel: [{
|
|
1070
|
+
type: Input,
|
|
1071
|
+
args: ['next-label']
|
|
1072
|
+
}], previousLabel: [{
|
|
1073
|
+
type: Input,
|
|
1074
|
+
args: ['previous-label']
|
|
1075
|
+
}], pdsChange: [{
|
|
1076
|
+
type: Output
|
|
1077
|
+
}] } });
|
|
1078
|
+
/** Panels group related content on a tinted surface. */
|
|
1079
|
+
export class PdsPanelComponent extends PdsComponentBase {
|
|
1080
|
+
set heading(value) {
|
|
1081
|
+
this.pdsSetProperty('heading', value);
|
|
1082
|
+
}
|
|
1083
|
+
set headingLevel(value) {
|
|
1084
|
+
this.pdsSetProperty('headingLevel', value);
|
|
1085
|
+
}
|
|
1086
|
+
set variant(value) {
|
|
1087
|
+
this.pdsSetProperty('variant', value);
|
|
1088
|
+
}
|
|
1089
|
+
constructor() {
|
|
1090
|
+
super(definePdsPanel);
|
|
1091
|
+
}
|
|
1092
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1093
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: PdsPanelComponent, isStandalone: true, selector: "pds-panel", inputs: { heading: "heading", headingLevel: ["headingLevel", "headingLevel", numberAttribute], variant: "variant" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
1094
|
+
}
|
|
1095
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsPanelComponent, decorators: [{
|
|
1096
|
+
type: Component,
|
|
1097
|
+
args: [{
|
|
1098
|
+
selector: 'pds-panel',
|
|
1099
|
+
standalone: true,
|
|
1100
|
+
template: '<ng-content></ng-content>',
|
|
1101
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
1102
|
+
encapsulation: ViewEncapsulation.None,
|
|
1103
|
+
}]
|
|
1104
|
+
}], ctorParameters: () => [], propDecorators: { heading: [{
|
|
1105
|
+
type: Input
|
|
1106
|
+
}], headingLevel: [{
|
|
1107
|
+
type: Input,
|
|
1108
|
+
args: [{ transform: numberAttribute }]
|
|
1109
|
+
}], variant: [{
|
|
1110
|
+
type: Input
|
|
1111
|
+
}] } });
|
|
1112
|
+
/** One step of a multi-step process. */
|
|
1113
|
+
export class PdsProgressStepComponent extends PdsComponentBase {
|
|
1114
|
+
set status(value) {
|
|
1115
|
+
this.pdsSetProperty('status', value);
|
|
1116
|
+
}
|
|
1117
|
+
constructor() {
|
|
1118
|
+
super(definePdsProgressStep);
|
|
1119
|
+
/** Fired when a completed step is activated in a clickable container. Detail: `{ index }`. */
|
|
1120
|
+
this.pdsStepClick = new EventEmitter();
|
|
1121
|
+
this.pdsForward('pds-step-click', this.pdsStepClick);
|
|
1122
|
+
}
|
|
1123
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsProgressStepComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1124
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: PdsProgressStepComponent, isStandalone: true, selector: "pds-progress-step", inputs: { status: "status" }, outputs: { pdsStepClick: "pdsStepClick" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
1125
|
+
}
|
|
1126
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsProgressStepComponent, decorators: [{
|
|
1127
|
+
type: Component,
|
|
1128
|
+
args: [{
|
|
1129
|
+
selector: 'pds-progress-step',
|
|
1130
|
+
standalone: true,
|
|
1131
|
+
template: '<ng-content></ng-content>',
|
|
1132
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
1133
|
+
encapsulation: ViewEncapsulation.None,
|
|
1134
|
+
}]
|
|
1135
|
+
}], ctorParameters: () => [], propDecorators: { status: [{
|
|
1136
|
+
type: Input
|
|
1137
|
+
}], pdsStepClick: [{
|
|
1138
|
+
type: Output
|
|
1139
|
+
}] } });
|
|
1140
|
+
/** Shows progress through a sequence of steps. */
|
|
1141
|
+
export class PdsProgressStepsComponent extends PdsComponentBase {
|
|
1142
|
+
set clickable(value) {
|
|
1143
|
+
this.pdsSetProperty('clickable', value);
|
|
1144
|
+
}
|
|
1145
|
+
set current(value) {
|
|
1146
|
+
this.pdsSetProperty('current', value);
|
|
1147
|
+
}
|
|
1148
|
+
set label(value) {
|
|
1149
|
+
this.pdsSetProperty('label', value);
|
|
1150
|
+
}
|
|
1151
|
+
set orientation(value) {
|
|
1152
|
+
this.pdsSetProperty('orientation', value);
|
|
1153
|
+
}
|
|
1154
|
+
constructor() {
|
|
1155
|
+
super(definePdsProgressSteps);
|
|
1156
|
+
/** Fired when a completed step is activated. Detail: `{ index }`. */
|
|
1157
|
+
this.pdsStepClick = new EventEmitter();
|
|
1158
|
+
this.pdsForward('pds-step-click', this.pdsStepClick);
|
|
1159
|
+
}
|
|
1160
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsProgressStepsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1161
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: PdsProgressStepsComponent, isStandalone: true, selector: "pds-progress-steps", inputs: { clickable: ["clickable", "clickable", booleanAttribute], current: ["current", "current", numberAttribute], label: "label", orientation: "orientation" }, outputs: { pdsStepClick: "pdsStepClick" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
1162
|
+
}
|
|
1163
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsProgressStepsComponent, decorators: [{
|
|
1164
|
+
type: Component,
|
|
1165
|
+
args: [{
|
|
1166
|
+
selector: 'pds-progress-steps',
|
|
1167
|
+
standalone: true,
|
|
1168
|
+
template: '<ng-content></ng-content>',
|
|
1169
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
1170
|
+
encapsulation: ViewEncapsulation.None,
|
|
1171
|
+
}]
|
|
1172
|
+
}], ctorParameters: () => [], propDecorators: { clickable: [{
|
|
1173
|
+
type: Input,
|
|
1174
|
+
args: [{ transform: booleanAttribute }]
|
|
1175
|
+
}], current: [{
|
|
1176
|
+
type: Input,
|
|
1177
|
+
args: [{ transform: numberAttribute }]
|
|
1178
|
+
}], label: [{
|
|
1179
|
+
type: Input
|
|
1180
|
+
}], orientation: [{
|
|
1181
|
+
type: Input
|
|
1182
|
+
}], pdsStepClick: [{
|
|
1183
|
+
type: Output
|
|
1184
|
+
}] } });
|
|
1185
|
+
/** Radio option, used inside `pds-radio-group`. */
|
|
1186
|
+
export class PdsRadioComponent extends PdsComponentBase {
|
|
1187
|
+
/** Current selection state (managed by the group). The `checked` attribute is only the initial state. */
|
|
1188
|
+
set checked(value) {
|
|
1189
|
+
this.pdsSetProperty('checked', value);
|
|
1190
|
+
}
|
|
1191
|
+
set disabled(value) {
|
|
1192
|
+
this.pdsSetProperty('disabled', value);
|
|
1193
|
+
}
|
|
1194
|
+
set value(value) {
|
|
1195
|
+
this.pdsSetProperty('value', value);
|
|
1196
|
+
}
|
|
1197
|
+
constructor() {
|
|
1198
|
+
super(definePdsRadio);
|
|
1199
|
+
}
|
|
1200
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsRadioComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1201
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: PdsRadioComponent, isStandalone: true, selector: "pds-radio", inputs: { checked: ["checked", "checked", booleanAttribute], disabled: ["disabled", "disabled", booleanAttribute], value: "value" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
1202
|
+
}
|
|
1203
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsRadioComponent, decorators: [{
|
|
1204
|
+
type: Component,
|
|
1205
|
+
args: [{
|
|
1206
|
+
selector: 'pds-radio',
|
|
1207
|
+
standalone: true,
|
|
1208
|
+
template: '<ng-content></ng-content>',
|
|
1209
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
1210
|
+
encapsulation: ViewEncapsulation.None,
|
|
1211
|
+
}]
|
|
1212
|
+
}], ctorParameters: () => [], propDecorators: { checked: [{
|
|
1213
|
+
type: Input,
|
|
1214
|
+
args: [{ transform: booleanAttribute }]
|
|
1215
|
+
}], disabled: [{
|
|
1216
|
+
type: Input,
|
|
1217
|
+
args: [{ transform: booleanAttribute }]
|
|
1218
|
+
}], value: [{
|
|
1219
|
+
type: Input
|
|
1220
|
+
}] } });
|
|
1221
|
+
/** Group of mutually exclusive radio options. */
|
|
1222
|
+
export class PdsRadioGroupComponent extends PdsComponentBase {
|
|
1223
|
+
set disabled(value) {
|
|
1224
|
+
this.pdsSetProperty('disabled', value);
|
|
1225
|
+
}
|
|
1226
|
+
set errorText(value) {
|
|
1227
|
+
this.pdsSetProperty('errorText', value);
|
|
1228
|
+
}
|
|
1229
|
+
set helperText(value) {
|
|
1230
|
+
this.pdsSetProperty('helperText', value);
|
|
1231
|
+
}
|
|
1232
|
+
set label(value) {
|
|
1233
|
+
this.pdsSetProperty('label', value);
|
|
1234
|
+
}
|
|
1235
|
+
set name(value) {
|
|
1236
|
+
this.pdsSetProperty('name', value);
|
|
1237
|
+
}
|
|
1238
|
+
set orientation(value) {
|
|
1239
|
+
this.pdsSetProperty('orientation', value);
|
|
1240
|
+
}
|
|
1241
|
+
set required(value) {
|
|
1242
|
+
this.pdsSetProperty('required', value);
|
|
1243
|
+
}
|
|
1244
|
+
/** Currently selected value ('' when none). */
|
|
1245
|
+
set value(value) {
|
|
1246
|
+
this.pdsSetProperty('value', value);
|
|
1247
|
+
}
|
|
1248
|
+
constructor() {
|
|
1249
|
+
super(definePdsRadioGroup);
|
|
1250
|
+
/** Fired when the selection changes by user interaction. Detail: `{ value }`. */
|
|
1251
|
+
this.pdsChange = new EventEmitter();
|
|
1252
|
+
this.pdsForward('pds-change', this.pdsChange);
|
|
1253
|
+
}
|
|
1254
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsRadioGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1255
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: PdsRadioGroupComponent, isStandalone: true, selector: "pds-radio-group", inputs: { disabled: ["disabled", "disabled", booleanAttribute], errorText: "errorText", helperText: "helperText", label: "label", name: "name", orientation: "orientation", required: ["required", "required", booleanAttribute], value: "value" }, outputs: { pdsChange: "pdsChange" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
1256
|
+
}
|
|
1257
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsRadioGroupComponent, decorators: [{
|
|
1258
|
+
type: Component,
|
|
1259
|
+
args: [{
|
|
1260
|
+
selector: 'pds-radio-group',
|
|
1261
|
+
standalone: true,
|
|
1262
|
+
template: '<ng-content></ng-content>',
|
|
1263
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
1264
|
+
encapsulation: ViewEncapsulation.None,
|
|
1265
|
+
}]
|
|
1266
|
+
}], ctorParameters: () => [], propDecorators: { disabled: [{
|
|
1267
|
+
type: Input,
|
|
1268
|
+
args: [{ transform: booleanAttribute }]
|
|
1269
|
+
}], errorText: [{
|
|
1270
|
+
type: Input
|
|
1271
|
+
}], helperText: [{
|
|
1272
|
+
type: Input
|
|
1273
|
+
}], label: [{
|
|
1274
|
+
type: Input
|
|
1275
|
+
}], name: [{
|
|
1276
|
+
type: Input
|
|
1277
|
+
}], orientation: [{
|
|
1278
|
+
type: Input
|
|
1279
|
+
}], required: [{
|
|
1280
|
+
type: Input,
|
|
1281
|
+
args: [{ transform: booleanAttribute }]
|
|
1282
|
+
}], value: [{
|
|
1283
|
+
type: Input
|
|
1284
|
+
}], pdsChange: [{
|
|
1285
|
+
type: Output
|
|
1286
|
+
}] } });
|
|
1287
|
+
/** Slider for choosing a number within a range. */
|
|
1288
|
+
export class PdsRangesliderComponent extends PdsComponentBase {
|
|
1289
|
+
set disabled(value) {
|
|
1290
|
+
this.pdsSetProperty('disabled', value);
|
|
1291
|
+
}
|
|
1292
|
+
set errorText(value) {
|
|
1293
|
+
this.pdsSetProperty('errorText', value);
|
|
1294
|
+
}
|
|
1295
|
+
set helperText(value) {
|
|
1296
|
+
this.pdsSetProperty('helperText', value);
|
|
1297
|
+
}
|
|
1298
|
+
set label(value) {
|
|
1299
|
+
this.pdsSetProperty('label', value);
|
|
1300
|
+
}
|
|
1301
|
+
set name(value) {
|
|
1302
|
+
this.pdsSetProperty('name', value);
|
|
1303
|
+
}
|
|
1304
|
+
set required(value) {
|
|
1305
|
+
this.pdsSetProperty('required', value);
|
|
1306
|
+
}
|
|
1307
|
+
set showValue(value) {
|
|
1308
|
+
this.pdsSetProperty('showValue', value);
|
|
1309
|
+
}
|
|
1310
|
+
/** Current value. */
|
|
1311
|
+
set value(value) {
|
|
1312
|
+
this.pdsSetProperty('value', value);
|
|
1313
|
+
}
|
|
1314
|
+
/** Maximum. Default 100. */
|
|
1315
|
+
set max(value) {
|
|
1316
|
+
this.pdsSetAttribute('max', value);
|
|
1317
|
+
}
|
|
1318
|
+
/** Minimum. Default 0. */
|
|
1319
|
+
set min(value) {
|
|
1320
|
+
this.pdsSetAttribute('min', value);
|
|
1321
|
+
}
|
|
1322
|
+
/** Step. Default 1. */
|
|
1323
|
+
set step(value) {
|
|
1324
|
+
this.pdsSetAttribute('step', value);
|
|
1325
|
+
}
|
|
1326
|
+
constructor() {
|
|
1327
|
+
super(definePdsRangeslider);
|
|
1328
|
+
/** Fired while dragging. Detail: `{ value }`. */
|
|
1329
|
+
this.pdsInput = new EventEmitter();
|
|
1330
|
+
/** Fired when the value is committed. Detail: `{ value }`. */
|
|
1331
|
+
this.pdsChange = new EventEmitter();
|
|
1332
|
+
this.pdsForward('pds-input', this.pdsInput);
|
|
1333
|
+
this.pdsForward('pds-change', this.pdsChange);
|
|
1334
|
+
}
|
|
1335
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsRangesliderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1336
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: PdsRangesliderComponent, isStandalone: true, selector: "pds-rangeslider", inputs: { disabled: ["disabled", "disabled", booleanAttribute], errorText: "errorText", helperText: "helperText", label: "label", name: "name", required: ["required", "required", booleanAttribute], showValue: ["showValue", "showValue", booleanAttribute], value: "value", max: "max", min: "min", step: "step" }, outputs: { pdsInput: "pdsInput", pdsChange: "pdsChange" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
1337
|
+
}
|
|
1338
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsRangesliderComponent, decorators: [{
|
|
1339
|
+
type: Component,
|
|
1340
|
+
args: [{
|
|
1341
|
+
selector: 'pds-rangeslider',
|
|
1342
|
+
standalone: true,
|
|
1343
|
+
template: '<ng-content></ng-content>',
|
|
1344
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
1345
|
+
encapsulation: ViewEncapsulation.None,
|
|
1346
|
+
}]
|
|
1347
|
+
}], ctorParameters: () => [], propDecorators: { disabled: [{
|
|
1348
|
+
type: Input,
|
|
1349
|
+
args: [{ transform: booleanAttribute }]
|
|
1350
|
+
}], errorText: [{
|
|
1351
|
+
type: Input
|
|
1352
|
+
}], helperText: [{
|
|
1353
|
+
type: Input
|
|
1354
|
+
}], label: [{
|
|
1355
|
+
type: Input
|
|
1356
|
+
}], name: [{
|
|
1357
|
+
type: Input
|
|
1358
|
+
}], required: [{
|
|
1359
|
+
type: Input,
|
|
1360
|
+
args: [{ transform: booleanAttribute }]
|
|
1361
|
+
}], showValue: [{
|
|
1362
|
+
type: Input,
|
|
1363
|
+
args: [{ transform: booleanAttribute }]
|
|
1364
|
+
}], value: [{
|
|
1365
|
+
type: Input
|
|
1366
|
+
}], max: [{
|
|
1367
|
+
type: Input
|
|
1368
|
+
}], min: [{
|
|
1369
|
+
type: Input
|
|
1370
|
+
}], step: [{
|
|
1371
|
+
type: Input
|
|
1372
|
+
}], pdsInput: [{
|
|
1373
|
+
type: Output
|
|
1374
|
+
}], pdsChange: [{
|
|
1375
|
+
type: Output
|
|
1376
|
+
}] } });
|
|
1377
|
+
/** Dropdown for choosing one option from a list. */
|
|
1378
|
+
export class PdsSelectComponent extends PdsComponentBase {
|
|
1379
|
+
set disabled(value) {
|
|
1380
|
+
this.pdsSetProperty('disabled', value);
|
|
1381
|
+
}
|
|
1382
|
+
set errorText(value) {
|
|
1383
|
+
this.pdsSetProperty('errorText', value);
|
|
1384
|
+
}
|
|
1385
|
+
set helperText(value) {
|
|
1386
|
+
this.pdsSetProperty('helperText', value);
|
|
1387
|
+
}
|
|
1388
|
+
set label(value) {
|
|
1389
|
+
this.pdsSetProperty('label', value);
|
|
1390
|
+
}
|
|
1391
|
+
set name(value) {
|
|
1392
|
+
this.pdsSetProperty('name', value);
|
|
1393
|
+
}
|
|
1394
|
+
set placeholder(value) {
|
|
1395
|
+
this.pdsSetProperty('placeholder', value);
|
|
1396
|
+
}
|
|
1397
|
+
set required(value) {
|
|
1398
|
+
this.pdsSetProperty('required', value);
|
|
1399
|
+
}
|
|
1400
|
+
/** Current value. */
|
|
1401
|
+
set value(value) {
|
|
1402
|
+
this.pdsSetProperty('value', value);
|
|
1403
|
+
}
|
|
1404
|
+
constructor() {
|
|
1405
|
+
super(definePdsSelect);
|
|
1406
|
+
/** Fired when the selection changes. Detail: `{ value }`. */
|
|
1407
|
+
this.pdsInput = new EventEmitter();
|
|
1408
|
+
/** Fired when the selection is committed. Detail: `{ value }`. */
|
|
1409
|
+
this.pdsChange = new EventEmitter();
|
|
1410
|
+
this.pdsForward('pds-input', this.pdsInput);
|
|
1411
|
+
this.pdsForward('pds-change', this.pdsChange);
|
|
1412
|
+
}
|
|
1413
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsSelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1414
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: PdsSelectComponent, isStandalone: true, selector: "pds-select", inputs: { disabled: ["disabled", "disabled", booleanAttribute], errorText: "errorText", helperText: "helperText", label: "label", name: "name", placeholder: "placeholder", required: ["required", "required", booleanAttribute], value: "value" }, outputs: { pdsInput: "pdsInput", pdsChange: "pdsChange" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
1415
|
+
}
|
|
1416
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsSelectComponent, decorators: [{
|
|
1417
|
+
type: Component,
|
|
1418
|
+
args: [{
|
|
1419
|
+
selector: 'pds-select',
|
|
1420
|
+
standalone: true,
|
|
1421
|
+
template: '<ng-content></ng-content>',
|
|
1422
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
1423
|
+
encapsulation: ViewEncapsulation.None,
|
|
1424
|
+
}]
|
|
1425
|
+
}], ctorParameters: () => [], propDecorators: { disabled: [{
|
|
1426
|
+
type: Input,
|
|
1427
|
+
args: [{ transform: booleanAttribute }]
|
|
1428
|
+
}], errorText: [{
|
|
1429
|
+
type: Input
|
|
1430
|
+
}], helperText: [{
|
|
1431
|
+
type: Input
|
|
1432
|
+
}], label: [{
|
|
1433
|
+
type: Input
|
|
1434
|
+
}], name: [{
|
|
1435
|
+
type: Input
|
|
1436
|
+
}], placeholder: [{
|
|
1437
|
+
type: Input
|
|
1438
|
+
}], required: [{
|
|
1439
|
+
type: Input,
|
|
1440
|
+
args: [{ transform: booleanAttribute }]
|
|
1441
|
+
}], value: [{
|
|
1442
|
+
type: Input
|
|
1443
|
+
}], pdsInput: [{
|
|
1444
|
+
type: Output
|
|
1445
|
+
}], pdsChange: [{
|
|
1446
|
+
type: Output
|
|
1447
|
+
}] } });
|
|
1448
|
+
/** Sheets slide in from an edge of the screen with secondary content. */
|
|
1449
|
+
export class PdsSheetComponent extends PdsComponentBase {
|
|
1450
|
+
set dismissible(value) {
|
|
1451
|
+
this.pdsSetProperty('dismissible', value);
|
|
1452
|
+
}
|
|
1453
|
+
set heading(value) {
|
|
1454
|
+
this.pdsSetProperty('heading', value);
|
|
1455
|
+
}
|
|
1456
|
+
set open(value) {
|
|
1457
|
+
this.pdsSetProperty('open', value);
|
|
1458
|
+
}
|
|
1459
|
+
set placement(value) {
|
|
1460
|
+
this.pdsSetProperty('placement', value);
|
|
1461
|
+
}
|
|
1462
|
+
/** Value reported by `pds-close`. */
|
|
1463
|
+
set returnValue(value) {
|
|
1464
|
+
this.pdsSetProperty('returnValue', value);
|
|
1465
|
+
}
|
|
1466
|
+
/** Accessible label of the close button. Default `Close`. */
|
|
1467
|
+
set closeLabel(value) {
|
|
1468
|
+
this.pdsSetAttribute('close-label', value);
|
|
1469
|
+
}
|
|
1470
|
+
constructor() {
|
|
1471
|
+
super(definePdsSheet);
|
|
1472
|
+
/** Fired after the sheet opened. */
|
|
1473
|
+
this.pdsOpen = new EventEmitter();
|
|
1474
|
+
/** Fired after the sheet closed. Detail: `{ returnValue }`. */
|
|
1475
|
+
this.pdsClose = new EventEmitter();
|
|
1476
|
+
/** Cancelable; fired when Escape, backdrop or close button asks to close. Detail: `{ reason }`. */
|
|
1477
|
+
this.pdsRequestClose = new EventEmitter();
|
|
1478
|
+
this.pdsForward('pds-open', this.pdsOpen);
|
|
1479
|
+
this.pdsForward('pds-close', this.pdsClose);
|
|
1480
|
+
this.pdsForward('pds-request-close', this.pdsRequestClose);
|
|
1481
|
+
}
|
|
1482
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsSheetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1483
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: PdsSheetComponent, isStandalone: true, selector: "pds-sheet", inputs: { dismissible: ["dismissible", "dismissible", booleanAttribute], heading: "heading", open: ["open", "open", booleanAttribute], placement: "placement", returnValue: "returnValue", closeLabel: ["close-label", "closeLabel"] }, outputs: { pdsOpen: "pdsOpen", pdsClose: "pdsClose", pdsRequestClose: "pdsRequestClose" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
1484
|
+
}
|
|
1485
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsSheetComponent, decorators: [{
|
|
1486
|
+
type: Component,
|
|
1487
|
+
args: [{
|
|
1488
|
+
selector: 'pds-sheet',
|
|
1489
|
+
standalone: true,
|
|
1490
|
+
template: '<ng-content></ng-content>',
|
|
1491
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
1492
|
+
encapsulation: ViewEncapsulation.None,
|
|
1493
|
+
}]
|
|
1494
|
+
}], ctorParameters: () => [], propDecorators: { dismissible: [{
|
|
1495
|
+
type: Input,
|
|
1496
|
+
args: [{ transform: booleanAttribute }]
|
|
1497
|
+
}], heading: [{
|
|
1498
|
+
type: Input
|
|
1499
|
+
}], open: [{
|
|
1500
|
+
type: Input,
|
|
1501
|
+
args: [{ transform: booleanAttribute }]
|
|
1502
|
+
}], placement: [{
|
|
1503
|
+
type: Input
|
|
1504
|
+
}], returnValue: [{
|
|
1505
|
+
type: Input
|
|
1506
|
+
}], closeLabel: [{
|
|
1507
|
+
type: Input,
|
|
1508
|
+
args: ['close-label']
|
|
1509
|
+
}], pdsOpen: [{
|
|
1510
|
+
type: Output
|
|
1511
|
+
}], pdsClose: [{
|
|
1512
|
+
type: Output
|
|
1513
|
+
}], pdsRequestClose: [{
|
|
1514
|
+
type: Output
|
|
1515
|
+
}] } });
|
|
1516
|
+
/** Vertical navigation container for `pds-sidebar-item` and `pds-sidebar-group`. */
|
|
1517
|
+
export class PdsSidebarComponent extends PdsComponentBase {
|
|
1518
|
+
set collapsed(value) {
|
|
1519
|
+
this.pdsSetProperty('collapsed', value);
|
|
1520
|
+
}
|
|
1521
|
+
set label(value) {
|
|
1522
|
+
this.pdsSetProperty('label', value);
|
|
1523
|
+
}
|
|
1524
|
+
constructor() {
|
|
1525
|
+
super(definePdsSidebar);
|
|
1526
|
+
}
|
|
1527
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsSidebarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1528
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: PdsSidebarComponent, isStandalone: true, selector: "pds-sidebar", inputs: { collapsed: ["collapsed", "collapsed", booleanAttribute], label: "label" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
1529
|
+
}
|
|
1530
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsSidebarComponent, decorators: [{
|
|
1531
|
+
type: Component,
|
|
1532
|
+
args: [{
|
|
1533
|
+
selector: 'pds-sidebar',
|
|
1534
|
+
standalone: true,
|
|
1535
|
+
template: '<ng-content></ng-content>',
|
|
1536
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
1537
|
+
encapsulation: ViewEncapsulation.None,
|
|
1538
|
+
}]
|
|
1539
|
+
}], ctorParameters: () => [], propDecorators: { collapsed: [{
|
|
1540
|
+
type: Input,
|
|
1541
|
+
args: [{ transform: booleanAttribute }]
|
|
1542
|
+
}], label: [{
|
|
1543
|
+
type: Input
|
|
1544
|
+
}] } });
|
|
1545
|
+
/** A collapsible section of `pds-sidebar-item`s. */
|
|
1546
|
+
export class PdsSidebarGroupComponent extends PdsComponentBase {
|
|
1547
|
+
/** Set by the parent sidebar: icon-only mode shows items directly without a heading. */
|
|
1548
|
+
set collapsed(value) {
|
|
1549
|
+
this.pdsSetProperty('collapsed', value);
|
|
1550
|
+
}
|
|
1551
|
+
set expanded(value) {
|
|
1552
|
+
this.pdsSetProperty('expanded', value);
|
|
1553
|
+
}
|
|
1554
|
+
set label(value) {
|
|
1555
|
+
this.pdsSetProperty('label', value);
|
|
1556
|
+
}
|
|
1557
|
+
constructor() {
|
|
1558
|
+
super(definePdsSidebarGroup);
|
|
1559
|
+
/** Fired when the heading is toggled. Detail: `{ expanded }`. */
|
|
1560
|
+
this.pdsToggle = new EventEmitter();
|
|
1561
|
+
this.pdsForward('pds-toggle', this.pdsToggle);
|
|
1562
|
+
}
|
|
1563
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsSidebarGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1564
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: PdsSidebarGroupComponent, isStandalone: true, selector: "pds-sidebar-group", inputs: { collapsed: ["collapsed", "collapsed", booleanAttribute], expanded: ["expanded", "expanded", booleanAttribute], label: "label" }, outputs: { pdsToggle: "pdsToggle" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
1565
|
+
}
|
|
1566
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsSidebarGroupComponent, decorators: [{
|
|
1567
|
+
type: Component,
|
|
1568
|
+
args: [{
|
|
1569
|
+
selector: 'pds-sidebar-group',
|
|
1570
|
+
standalone: true,
|
|
1571
|
+
template: '<ng-content></ng-content>',
|
|
1572
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
1573
|
+
encapsulation: ViewEncapsulation.None,
|
|
1574
|
+
}]
|
|
1575
|
+
}], ctorParameters: () => [], propDecorators: { collapsed: [{
|
|
1576
|
+
type: Input,
|
|
1577
|
+
args: [{ transform: booleanAttribute }]
|
|
1578
|
+
}], expanded: [{
|
|
1579
|
+
type: Input,
|
|
1580
|
+
args: [{ transform: booleanAttribute }]
|
|
1581
|
+
}], label: [{
|
|
1582
|
+
type: Input
|
|
1583
|
+
}], pdsToggle: [{
|
|
1584
|
+
type: Output
|
|
1585
|
+
}] } });
|
|
1586
|
+
/** An item inside `pds-sidebar`. */
|
|
1587
|
+
export class PdsSidebarItemComponent extends PdsComponentBase {
|
|
1588
|
+
set active(value) {
|
|
1589
|
+
this.pdsSetProperty('active', value);
|
|
1590
|
+
}
|
|
1591
|
+
/** Set by the parent sidebar. */
|
|
1592
|
+
set collapsed(value) {
|
|
1593
|
+
this.pdsSetProperty('collapsed', value);
|
|
1594
|
+
}
|
|
1595
|
+
set disabled(value) {
|
|
1596
|
+
this.pdsSetProperty('disabled', value);
|
|
1597
|
+
}
|
|
1598
|
+
set href(value) {
|
|
1599
|
+
this.pdsSetProperty('href', value);
|
|
1600
|
+
}
|
|
1601
|
+
set label(value) {
|
|
1602
|
+
this.pdsSetProperty('label', value);
|
|
1603
|
+
}
|
|
1604
|
+
constructor() {
|
|
1605
|
+
super(definePdsSidebarItem);
|
|
1606
|
+
/** Fired when a button-type item is activated. */
|
|
1607
|
+
this.pdsClick = new EventEmitter();
|
|
1608
|
+
this.pdsForward('pds-click', this.pdsClick);
|
|
1609
|
+
}
|
|
1610
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsSidebarItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1611
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: PdsSidebarItemComponent, isStandalone: true, selector: "pds-sidebar-item", inputs: { active: ["active", "active", booleanAttribute], collapsed: ["collapsed", "collapsed", booleanAttribute], disabled: ["disabled", "disabled", booleanAttribute], href: "href", label: "label" }, outputs: { pdsClick: "pdsClick" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
1612
|
+
}
|
|
1613
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsSidebarItemComponent, decorators: [{
|
|
1614
|
+
type: Component,
|
|
1615
|
+
args: [{
|
|
1616
|
+
selector: 'pds-sidebar-item',
|
|
1617
|
+
standalone: true,
|
|
1618
|
+
template: '<ng-content></ng-content>',
|
|
1619
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
1620
|
+
encapsulation: ViewEncapsulation.None,
|
|
1621
|
+
}]
|
|
1622
|
+
}], ctorParameters: () => [], propDecorators: { active: [{
|
|
1623
|
+
type: Input,
|
|
1624
|
+
args: [{ transform: booleanAttribute }]
|
|
1625
|
+
}], collapsed: [{
|
|
1626
|
+
type: Input,
|
|
1627
|
+
args: [{ transform: booleanAttribute }]
|
|
1628
|
+
}], disabled: [{
|
|
1629
|
+
type: Input,
|
|
1630
|
+
args: [{ transform: booleanAttribute }]
|
|
1631
|
+
}], href: [{
|
|
1632
|
+
type: Input
|
|
1633
|
+
}], label: [{
|
|
1634
|
+
type: Input
|
|
1635
|
+
}], pdsClick: [{
|
|
1636
|
+
type: Output
|
|
1637
|
+
}] } });
|
|
1638
|
+
/** Lets keyboard users skip repeated content. */
|
|
1639
|
+
export class PdsSkipLinkComponent extends PdsComponentBase {
|
|
1640
|
+
set href(value) {
|
|
1641
|
+
this.pdsSetProperty('href', value);
|
|
1642
|
+
}
|
|
1643
|
+
constructor() {
|
|
1644
|
+
super(definePdsSkipLink);
|
|
1645
|
+
}
|
|
1646
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsSkipLinkComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1647
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: PdsSkipLinkComponent, isStandalone: true, selector: "pds-skip-link", inputs: { href: "href" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
1648
|
+
}
|
|
1649
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsSkipLinkComponent, decorators: [{
|
|
1650
|
+
type: Component,
|
|
1651
|
+
args: [{
|
|
1652
|
+
selector: 'pds-skip-link',
|
|
1653
|
+
standalone: true,
|
|
1654
|
+
template: '<ng-content></ng-content>',
|
|
1655
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
1656
|
+
encapsulation: ViewEncapsulation.None,
|
|
1657
|
+
}]
|
|
1658
|
+
}], ctorParameters: () => [], propDecorators: { href: [{
|
|
1659
|
+
type: Input
|
|
1660
|
+
}] } });
|
|
1661
|
+
/** Slabs divide a page into full-width sections. */
|
|
1662
|
+
export class PdsSlabComponent extends PdsComponentBase {
|
|
1663
|
+
set size(value) {
|
|
1664
|
+
this.pdsSetProperty('size', value);
|
|
1665
|
+
}
|
|
1666
|
+
set variant(value) {
|
|
1667
|
+
this.pdsSetProperty('variant', value);
|
|
1668
|
+
}
|
|
1669
|
+
constructor() {
|
|
1670
|
+
super(definePdsSlab);
|
|
1671
|
+
}
|
|
1672
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsSlabComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1673
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: PdsSlabComponent, isStandalone: true, selector: "pds-slab", inputs: { size: "size", variant: "variant" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
1674
|
+
}
|
|
1675
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsSlabComponent, decorators: [{
|
|
1676
|
+
type: Component,
|
|
1677
|
+
args: [{
|
|
1678
|
+
selector: 'pds-slab',
|
|
1679
|
+
standalone: true,
|
|
1680
|
+
template: '<ng-content></ng-content>',
|
|
1681
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
1682
|
+
encapsulation: ViewEncapsulation.None,
|
|
1683
|
+
}]
|
|
1684
|
+
}], ctorParameters: () => [], propDecorators: { size: [{
|
|
1685
|
+
type: Input
|
|
1686
|
+
}], variant: [{
|
|
1687
|
+
type: Input
|
|
1688
|
+
}] } });
|
|
1689
|
+
/** Shows a status as a coloured dot plus label. */
|
|
1690
|
+
export class PdsStatusComponent extends PdsComponentBase {
|
|
1691
|
+
set status(value) {
|
|
1692
|
+
this.pdsSetProperty('status', value);
|
|
1693
|
+
}
|
|
1694
|
+
constructor() {
|
|
1695
|
+
super(definePdsStatus);
|
|
1696
|
+
}
|
|
1697
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsStatusComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1698
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: PdsStatusComponent, isStandalone: true, selector: "pds-status", inputs: { status: "status" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
1699
|
+
}
|
|
1700
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsStatusComponent, decorators: [{
|
|
1701
|
+
type: Component,
|
|
1702
|
+
args: [{
|
|
1703
|
+
selector: 'pds-status',
|
|
1704
|
+
standalone: true,
|
|
1705
|
+
template: '<ng-content></ng-content>',
|
|
1706
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
1707
|
+
encapsulation: ViewEncapsulation.None,
|
|
1708
|
+
}]
|
|
1709
|
+
}], ctorParameters: () => [], propDecorators: { status: [{
|
|
1710
|
+
type: Input
|
|
1711
|
+
}] } });
|
|
1712
|
+
/** Tab button of a tab list. */
|
|
1713
|
+
export class PdsTabComponent extends PdsComponentBase {
|
|
1714
|
+
set disabled(value) {
|
|
1715
|
+
this.pdsSetProperty('disabled', value);
|
|
1716
|
+
}
|
|
1717
|
+
set panel(value) {
|
|
1718
|
+
this.pdsSetProperty('panel', value);
|
|
1719
|
+
}
|
|
1720
|
+
/** True once the tab is connected; lets the parent ignore tabs that are not initialised yet. */
|
|
1721
|
+
set ready(value) {
|
|
1722
|
+
this.pdsSetProperty('ready', value);
|
|
1723
|
+
}
|
|
1724
|
+
set selected(value) {
|
|
1725
|
+
this.pdsSetProperty('selected', value);
|
|
1726
|
+
}
|
|
1727
|
+
constructor() {
|
|
1728
|
+
super(definePdsTab);
|
|
1729
|
+
}
|
|
1730
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsTabComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1731
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: PdsTabComponent, isStandalone: true, selector: "pds-tab", inputs: { disabled: ["disabled", "disabled", booleanAttribute], panel: "panel", ready: ["ready", "ready", booleanAttribute], selected: ["selected", "selected", booleanAttribute] }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
1732
|
+
}
|
|
1733
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsTabComponent, decorators: [{
|
|
1734
|
+
type: Component,
|
|
1735
|
+
args: [{
|
|
1736
|
+
selector: 'pds-tab',
|
|
1737
|
+
standalone: true,
|
|
1738
|
+
template: '<ng-content></ng-content>',
|
|
1739
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
1740
|
+
encapsulation: ViewEncapsulation.None,
|
|
1741
|
+
}]
|
|
1742
|
+
}], ctorParameters: () => [], propDecorators: { disabled: [{
|
|
1743
|
+
type: Input,
|
|
1744
|
+
args: [{ transform: booleanAttribute }]
|
|
1745
|
+
}], panel: [{
|
|
1746
|
+
type: Input
|
|
1747
|
+
}], ready: [{
|
|
1748
|
+
type: Input,
|
|
1749
|
+
args: [{ transform: booleanAttribute }]
|
|
1750
|
+
}], selected: [{
|
|
1751
|
+
type: Input,
|
|
1752
|
+
args: [{ transform: booleanAttribute }]
|
|
1753
|
+
}] } });
|
|
1754
|
+
/** Panel shown when its tab is selected. */
|
|
1755
|
+
export class PdsTabPanelComponent extends PdsComponentBase {
|
|
1756
|
+
constructor() {
|
|
1757
|
+
super(definePdsTabPanel);
|
|
1758
|
+
}
|
|
1759
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsTabPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1760
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: PdsTabPanelComponent, isStandalone: true, selector: "pds-tab-panel", usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
1761
|
+
}
|
|
1762
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsTabPanelComponent, decorators: [{
|
|
1763
|
+
type: Component,
|
|
1764
|
+
args: [{
|
|
1765
|
+
selector: 'pds-tab-panel',
|
|
1766
|
+
standalone: true,
|
|
1767
|
+
template: '<ng-content></ng-content>',
|
|
1768
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
1769
|
+
encapsulation: ViewEncapsulation.None,
|
|
1770
|
+
}]
|
|
1771
|
+
}], ctorParameters: () => [] });
|
|
1772
|
+
/** Styled, scrollable and optionally sortable data table. */
|
|
1773
|
+
export class PdsTableComponent extends PdsComponentBase {
|
|
1774
|
+
set bordered(value) {
|
|
1775
|
+
this.pdsSetProperty('bordered', value);
|
|
1776
|
+
}
|
|
1777
|
+
set compact(value) {
|
|
1778
|
+
this.pdsSetProperty('compact', value);
|
|
1779
|
+
}
|
|
1780
|
+
set label(value) {
|
|
1781
|
+
this.pdsSetProperty('label', value);
|
|
1782
|
+
}
|
|
1783
|
+
set stickyHeader(value) {
|
|
1784
|
+
this.pdsSetProperty('stickyHeader', value);
|
|
1785
|
+
}
|
|
1786
|
+
set striped(value) {
|
|
1787
|
+
this.pdsSetProperty('striped', value);
|
|
1788
|
+
}
|
|
1789
|
+
/** CSS max-height of the scroll region (e.g. `20rem`). */
|
|
1790
|
+
set maxHeight(value) {
|
|
1791
|
+
this.pdsSetAttribute('max-height', value);
|
|
1792
|
+
}
|
|
1793
|
+
constructor() {
|
|
1794
|
+
super(definePdsTable);
|
|
1795
|
+
/** Fired after a column is sorted. Detail: `{ column, direction }`. */
|
|
1796
|
+
this.pdsSort = new EventEmitter();
|
|
1797
|
+
this.pdsForward('pds-sort', this.pdsSort);
|
|
1798
|
+
}
|
|
1799
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1800
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: PdsTableComponent, isStandalone: true, selector: "pds-table", inputs: { bordered: ["bordered", "bordered", booleanAttribute], compact: ["compact", "compact", booleanAttribute], label: "label", stickyHeader: ["stickyHeader", "stickyHeader", booleanAttribute], striped: ["striped", "striped", booleanAttribute], maxHeight: ["max-height", "maxHeight"] }, outputs: { pdsSort: "pdsSort" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
1801
|
+
}
|
|
1802
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsTableComponent, decorators: [{
|
|
1803
|
+
type: Component,
|
|
1804
|
+
args: [{
|
|
1805
|
+
selector: 'pds-table',
|
|
1806
|
+
standalone: true,
|
|
1807
|
+
template: '<ng-content></ng-content>',
|
|
1808
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
1809
|
+
encapsulation: ViewEncapsulation.None,
|
|
1810
|
+
}]
|
|
1811
|
+
}], ctorParameters: () => [], propDecorators: { bordered: [{
|
|
1812
|
+
type: Input,
|
|
1813
|
+
args: [{ transform: booleanAttribute }]
|
|
1814
|
+
}], compact: [{
|
|
1815
|
+
type: Input,
|
|
1816
|
+
args: [{ transform: booleanAttribute }]
|
|
1817
|
+
}], label: [{
|
|
1818
|
+
type: Input
|
|
1819
|
+
}], stickyHeader: [{
|
|
1820
|
+
type: Input,
|
|
1821
|
+
args: [{ transform: booleanAttribute }]
|
|
1822
|
+
}], striped: [{
|
|
1823
|
+
type: Input,
|
|
1824
|
+
args: [{ transform: booleanAttribute }]
|
|
1825
|
+
}], maxHeight: [{
|
|
1826
|
+
type: Input,
|
|
1827
|
+
args: ['max-height']
|
|
1828
|
+
}], pdsSort: [{
|
|
1829
|
+
type: Output
|
|
1830
|
+
}] } });
|
|
1831
|
+
/** Tabs switch between related panels. */
|
|
1832
|
+
export class PdsTabsComponent extends PdsComponentBase {
|
|
1833
|
+
set label(value) {
|
|
1834
|
+
this.pdsSetProperty('label', value);
|
|
1835
|
+
}
|
|
1836
|
+
set orientation(value) {
|
|
1837
|
+
this.pdsSetProperty('orientation', value);
|
|
1838
|
+
}
|
|
1839
|
+
set value(value) {
|
|
1840
|
+
this.pdsSetProperty('value', value);
|
|
1841
|
+
}
|
|
1842
|
+
constructor() {
|
|
1843
|
+
super(definePdsTabs);
|
|
1844
|
+
/** Fired when the user selects a tab. Detail: `{ index, value }` (value is the panel id). */
|
|
1845
|
+
this.pdsChange = new EventEmitter();
|
|
1846
|
+
this.pdsForward('pds-change', this.pdsChange);
|
|
1847
|
+
}
|
|
1848
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsTabsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1849
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: PdsTabsComponent, isStandalone: true, selector: "pds-tabs", inputs: { label: "label", orientation: "orientation", value: "value" }, outputs: { pdsChange: "pdsChange" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
1850
|
+
}
|
|
1851
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsTabsComponent, decorators: [{
|
|
1852
|
+
type: Component,
|
|
1853
|
+
args: [{
|
|
1854
|
+
selector: 'pds-tabs',
|
|
1855
|
+
standalone: true,
|
|
1856
|
+
template: '<ng-content></ng-content>',
|
|
1857
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
1858
|
+
encapsulation: ViewEncapsulation.None,
|
|
1859
|
+
}]
|
|
1860
|
+
}], ctorParameters: () => [], propDecorators: { label: [{
|
|
1861
|
+
type: Input
|
|
1862
|
+
}], orientation: [{
|
|
1863
|
+
type: Input
|
|
1864
|
+
}], value: [{
|
|
1865
|
+
type: Input
|
|
1866
|
+
}], pdsChange: [{
|
|
1867
|
+
type: Output
|
|
1868
|
+
}] } });
|
|
1869
|
+
/** Tags label or categorise content. */
|
|
1870
|
+
export class PdsTagComponent extends PdsComponentBase {
|
|
1871
|
+
set removable(value) {
|
|
1872
|
+
this.pdsSetProperty('removable', value);
|
|
1873
|
+
}
|
|
1874
|
+
set size(value) {
|
|
1875
|
+
this.pdsSetProperty('size', value);
|
|
1876
|
+
}
|
|
1877
|
+
set variant(value) {
|
|
1878
|
+
this.pdsSetProperty('variant', value);
|
|
1879
|
+
}
|
|
1880
|
+
constructor() {
|
|
1881
|
+
super(definePdsTag);
|
|
1882
|
+
/** Fired (cancelable) when the remove button is activated. The tag removes itself unless prevented. */
|
|
1883
|
+
this.pdsRemove = new EventEmitter();
|
|
1884
|
+
this.pdsForward('pds-remove', this.pdsRemove);
|
|
1885
|
+
}
|
|
1886
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsTagComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1887
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: PdsTagComponent, isStandalone: true, selector: "pds-tag", inputs: { removable: ["removable", "removable", booleanAttribute], size: "size", variant: "variant" }, outputs: { pdsRemove: "pdsRemove" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
1888
|
+
}
|
|
1889
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsTagComponent, decorators: [{
|
|
1890
|
+
type: Component,
|
|
1891
|
+
args: [{
|
|
1892
|
+
selector: 'pds-tag',
|
|
1893
|
+
standalone: true,
|
|
1894
|
+
template: '<ng-content></ng-content>',
|
|
1895
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
1896
|
+
encapsulation: ViewEncapsulation.None,
|
|
1897
|
+
}]
|
|
1898
|
+
}], ctorParameters: () => [], propDecorators: { removable: [{
|
|
1899
|
+
type: Input,
|
|
1900
|
+
args: [{ transform: booleanAttribute }]
|
|
1901
|
+
}], size: [{
|
|
1902
|
+
type: Input
|
|
1903
|
+
}], variant: [{
|
|
1904
|
+
type: Input
|
|
1905
|
+
}], pdsRemove: [{
|
|
1906
|
+
type: Output
|
|
1907
|
+
}] } });
|
|
1908
|
+
/** Toasts show short-lived, non-blocking feedback. */
|
|
1909
|
+
export class PdsToastComponent extends PdsComponentBase {
|
|
1910
|
+
set dismissible(value) {
|
|
1911
|
+
this.pdsSetProperty('dismissible', value);
|
|
1912
|
+
}
|
|
1913
|
+
set duration(value) {
|
|
1914
|
+
this.pdsSetProperty('duration', value);
|
|
1915
|
+
}
|
|
1916
|
+
set heading(value) {
|
|
1917
|
+
this.pdsSetProperty('heading', value);
|
|
1918
|
+
}
|
|
1919
|
+
set variant(value) {
|
|
1920
|
+
this.pdsSetProperty('variant', value);
|
|
1921
|
+
}
|
|
1922
|
+
/** Accessible label of the close button. Default `Dismiss`. */
|
|
1923
|
+
set closeLabel(value) {
|
|
1924
|
+
this.pdsSetAttribute('close-label', value);
|
|
1925
|
+
}
|
|
1926
|
+
constructor() {
|
|
1927
|
+
super(definePdsToast);
|
|
1928
|
+
/** Fired before the toast is removed (cancelable). Detail: `{ reason: 'timeout' | 'close-button' | 'programmatic' }`. */
|
|
1929
|
+
this.pdsDismiss = new EventEmitter();
|
|
1930
|
+
this.pdsForward('pds-dismiss', this.pdsDismiss);
|
|
1931
|
+
}
|
|
1932
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsToastComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1933
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: PdsToastComponent, isStandalone: true, selector: "pds-toast", inputs: { dismissible: ["dismissible", "dismissible", booleanAttribute], duration: ["duration", "duration", numberAttribute], heading: "heading", variant: "variant", closeLabel: ["close-label", "closeLabel"] }, outputs: { pdsDismiss: "pdsDismiss" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
1934
|
+
}
|
|
1935
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsToastComponent, decorators: [{
|
|
1936
|
+
type: Component,
|
|
1937
|
+
args: [{
|
|
1938
|
+
selector: 'pds-toast',
|
|
1939
|
+
standalone: true,
|
|
1940
|
+
template: '<ng-content></ng-content>',
|
|
1941
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
1942
|
+
encapsulation: ViewEncapsulation.None,
|
|
1943
|
+
}]
|
|
1944
|
+
}], ctorParameters: () => [], propDecorators: { dismissible: [{
|
|
1945
|
+
type: Input,
|
|
1946
|
+
args: [{ transform: booleanAttribute }]
|
|
1947
|
+
}], duration: [{
|
|
1948
|
+
type: Input,
|
|
1949
|
+
args: [{ transform: numberAttribute }]
|
|
1950
|
+
}], heading: [{
|
|
1951
|
+
type: Input
|
|
1952
|
+
}], variant: [{
|
|
1953
|
+
type: Input
|
|
1954
|
+
}], closeLabel: [{
|
|
1955
|
+
type: Input,
|
|
1956
|
+
args: ['close-label']
|
|
1957
|
+
}], pdsDismiss: [{
|
|
1958
|
+
type: Output
|
|
1959
|
+
}] } });
|
|
1960
|
+
/** Container that stacks and announces `pds-toast` elements. */
|
|
1961
|
+
export class PdsToastRegionComponent extends PdsComponentBase {
|
|
1962
|
+
constructor() {
|
|
1963
|
+
super(defineAll);
|
|
1964
|
+
}
|
|
1965
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsToastRegionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1966
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: PdsToastRegionComponent, isStandalone: true, selector: "pds-toast-region", usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
1967
|
+
}
|
|
1968
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsToastRegionComponent, decorators: [{
|
|
1969
|
+
type: Component,
|
|
1970
|
+
args: [{
|
|
1971
|
+
selector: 'pds-toast-region',
|
|
1972
|
+
standalone: true,
|
|
1973
|
+
template: '<ng-content></ng-content>',
|
|
1974
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
1975
|
+
encapsulation: ViewEncapsulation.None,
|
|
1976
|
+
}]
|
|
1977
|
+
}], ctorParameters: () => [] });
|
|
1978
|
+
/** Switch for immediately-applied on/off settings. */
|
|
1979
|
+
export class PdsToggleboxComponent extends PdsComponentBase {
|
|
1980
|
+
/** Current state (the attribute is the initial state). */
|
|
1981
|
+
set checked(value) {
|
|
1982
|
+
this.pdsSetProperty('checked', value);
|
|
1983
|
+
}
|
|
1984
|
+
set disabled(value) {
|
|
1985
|
+
this.pdsSetProperty('disabled', value);
|
|
1986
|
+
}
|
|
1987
|
+
set errorText(value) {
|
|
1988
|
+
this.pdsSetProperty('errorText', value);
|
|
1989
|
+
}
|
|
1990
|
+
set helperText(value) {
|
|
1991
|
+
this.pdsSetProperty('helperText', value);
|
|
1992
|
+
}
|
|
1993
|
+
set label(value) {
|
|
1994
|
+
this.pdsSetProperty('label', value);
|
|
1995
|
+
}
|
|
1996
|
+
set name(value) {
|
|
1997
|
+
this.pdsSetProperty('name', value);
|
|
1998
|
+
}
|
|
1999
|
+
set required(value) {
|
|
2000
|
+
this.pdsSetProperty('required', value);
|
|
2001
|
+
}
|
|
2002
|
+
set value(value) {
|
|
2003
|
+
this.pdsSetProperty('value', value);
|
|
2004
|
+
}
|
|
2005
|
+
constructor() {
|
|
2006
|
+
super(definePdsTogglebox);
|
|
2007
|
+
/** Fired when toggled by the user. Detail: `{ checked, value }`. */
|
|
2008
|
+
this.pdsChange = new EventEmitter();
|
|
2009
|
+
this.pdsForward('pds-change', this.pdsChange);
|
|
2010
|
+
}
|
|
2011
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsToggleboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2012
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: PdsToggleboxComponent, isStandalone: true, selector: "pds-togglebox", inputs: { checked: ["checked", "checked", booleanAttribute], disabled: ["disabled", "disabled", booleanAttribute], errorText: "errorText", helperText: "helperText", label: "label", name: "name", required: ["required", "required", booleanAttribute], value: "value" }, outputs: { pdsChange: "pdsChange" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
2013
|
+
}
|
|
2014
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsToggleboxComponent, decorators: [{
|
|
2015
|
+
type: Component,
|
|
2016
|
+
args: [{
|
|
2017
|
+
selector: 'pds-togglebox',
|
|
2018
|
+
standalone: true,
|
|
2019
|
+
template: '<ng-content></ng-content>',
|
|
2020
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
2021
|
+
encapsulation: ViewEncapsulation.None,
|
|
2022
|
+
}]
|
|
2023
|
+
}], ctorParameters: () => [], propDecorators: { checked: [{
|
|
2024
|
+
type: Input,
|
|
2025
|
+
args: [{ transform: booleanAttribute }]
|
|
2026
|
+
}], disabled: [{
|
|
2027
|
+
type: Input,
|
|
2028
|
+
args: [{ transform: booleanAttribute }]
|
|
2029
|
+
}], errorText: [{
|
|
2030
|
+
type: Input
|
|
2031
|
+
}], helperText: [{
|
|
2032
|
+
type: Input
|
|
2033
|
+
}], label: [{
|
|
2034
|
+
type: Input
|
|
2035
|
+
}], name: [{
|
|
2036
|
+
type: Input
|
|
2037
|
+
}], required: [{
|
|
2038
|
+
type: Input,
|
|
2039
|
+
args: [{ transform: booleanAttribute }]
|
|
2040
|
+
}], value: [{
|
|
2041
|
+
type: Input
|
|
2042
|
+
}], pdsChange: [{
|
|
2043
|
+
type: Output
|
|
2044
|
+
}] } });
|
|
2045
|
+
/** Tooltips show short supplementary text for a control. */
|
|
2046
|
+
export class PdsTooltipComponent extends PdsComponentBase {
|
|
2047
|
+
set content(value) {
|
|
2048
|
+
this.pdsSetProperty('content', value);
|
|
2049
|
+
}
|
|
2050
|
+
set delay(value) {
|
|
2051
|
+
this.pdsSetProperty('delay', value);
|
|
2052
|
+
}
|
|
2053
|
+
set hide(value) {
|
|
2054
|
+
this.pdsSetProperty('hide', value);
|
|
2055
|
+
}
|
|
2056
|
+
set placement(value) {
|
|
2057
|
+
this.pdsSetProperty('placement', value);
|
|
2058
|
+
}
|
|
2059
|
+
constructor() {
|
|
2060
|
+
super(definePdsTooltip);
|
|
2061
|
+
}
|
|
2062
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsTooltipComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2063
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: PdsTooltipComponent, isStandalone: true, selector: "pds-tooltip", inputs: { content: "content", delay: ["delay", "delay", numberAttribute], hide: "hide", placement: "placement" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
2064
|
+
}
|
|
2065
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsTooltipComponent, decorators: [{
|
|
2066
|
+
type: Component,
|
|
2067
|
+
args: [{
|
|
2068
|
+
selector: 'pds-tooltip',
|
|
2069
|
+
standalone: true,
|
|
2070
|
+
template: '<ng-content></ng-content>',
|
|
2071
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
2072
|
+
encapsulation: ViewEncapsulation.None,
|
|
2073
|
+
}]
|
|
2074
|
+
}], ctorParameters: () => [], propDecorators: { content: [{
|
|
2075
|
+
type: Input
|
|
2076
|
+
}], delay: [{
|
|
2077
|
+
type: Input,
|
|
2078
|
+
args: [{ transform: numberAttribute }]
|
|
2079
|
+
}], hide: [{
|
|
2080
|
+
type: Input
|
|
2081
|
+
}], placement: [{
|
|
2082
|
+
type: Input
|
|
2083
|
+
}] } });
|
|
2084
|
+
/** Responsive application header. */
|
|
2085
|
+
export class PdsTopbarComponent extends PdsComponentBase {
|
|
2086
|
+
set breakpoint(value) {
|
|
2087
|
+
this.pdsSetProperty('breakpoint', value);
|
|
2088
|
+
}
|
|
2089
|
+
set label(value) {
|
|
2090
|
+
this.pdsSetProperty('label', value);
|
|
2091
|
+
}
|
|
2092
|
+
set menuLabel(value) {
|
|
2093
|
+
this.pdsSetProperty('menuLabel', value);
|
|
2094
|
+
}
|
|
2095
|
+
set open(value) {
|
|
2096
|
+
this.pdsSetProperty('open', value);
|
|
2097
|
+
}
|
|
2098
|
+
constructor() {
|
|
2099
|
+
super(definePdsTopbar);
|
|
2100
|
+
/** Fired when the menu is opened or closed. Detail: `{ open }`. */
|
|
2101
|
+
this.pdsMenuToggle = new EventEmitter();
|
|
2102
|
+
this.pdsForward('pds-menu-toggle', this.pdsMenuToggle);
|
|
2103
|
+
}
|
|
2104
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsTopbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2105
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: PdsTopbarComponent, isStandalone: true, selector: "pds-topbar", inputs: { breakpoint: "breakpoint", label: "label", menuLabel: "menuLabel", open: ["open", "open", booleanAttribute] }, outputs: { pdsMenuToggle: "pdsMenuToggle" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
2106
|
+
}
|
|
2107
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdsTopbarComponent, decorators: [{
|
|
2108
|
+
type: Component,
|
|
2109
|
+
args: [{
|
|
2110
|
+
selector: 'pds-topbar',
|
|
2111
|
+
standalone: true,
|
|
2112
|
+
template: '<ng-content></ng-content>',
|
|
2113
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
2114
|
+
encapsulation: ViewEncapsulation.None,
|
|
2115
|
+
}]
|
|
2116
|
+
}], ctorParameters: () => [], propDecorators: { breakpoint: [{
|
|
2117
|
+
type: Input
|
|
2118
|
+
}], label: [{
|
|
2119
|
+
type: Input
|
|
2120
|
+
}], menuLabel: [{
|
|
2121
|
+
type: Input
|
|
2122
|
+
}], open: [{
|
|
2123
|
+
type: Input,
|
|
2124
|
+
args: [{ transform: booleanAttribute }]
|
|
2125
|
+
}], pdsMenuToggle: [{
|
|
2126
|
+
type: Output
|
|
2127
|
+
}] } });
|
|
2128
|
+
export const PDS_ELEMENT_COMPONENTS = [
|
|
2129
|
+
PdsAccordionComponent,
|
|
2130
|
+
PdsAccordionItemComponent,
|
|
2131
|
+
PdsAlertComponent,
|
|
2132
|
+
PdsBadgeComponent,
|
|
2133
|
+
PdsBreadcrumbComponent,
|
|
2134
|
+
PdsBreadcrumbItemComponent,
|
|
2135
|
+
PdsButtonComponent,
|
|
2136
|
+
PdsCardComponent,
|
|
2137
|
+
PdsCheckboxComponent,
|
|
2138
|
+
PdsDatepickerComponent,
|
|
2139
|
+
PdsDialogComponent,
|
|
2140
|
+
PdsDropdownComponent,
|
|
2141
|
+
PdsDropdownItemComponent,
|
|
2142
|
+
PdsExpandableComponent,
|
|
2143
|
+
PdsInputComponent,
|
|
2144
|
+
PdsLinkComponent,
|
|
2145
|
+
PdsListComponent,
|
|
2146
|
+
PdsListItemComponent,
|
|
2147
|
+
PdsLoaderComponent,
|
|
2148
|
+
PdsMediaObjectComponent,
|
|
2149
|
+
PdsPaginationComponent,
|
|
2150
|
+
PdsPanelComponent,
|
|
2151
|
+
PdsProgressStepComponent,
|
|
2152
|
+
PdsProgressStepsComponent,
|
|
2153
|
+
PdsRadioComponent,
|
|
2154
|
+
PdsRadioGroupComponent,
|
|
2155
|
+
PdsRangesliderComponent,
|
|
2156
|
+
PdsSelectComponent,
|
|
2157
|
+
PdsSheetComponent,
|
|
2158
|
+
PdsSidebarComponent,
|
|
2159
|
+
PdsSidebarGroupComponent,
|
|
2160
|
+
PdsSidebarItemComponent,
|
|
2161
|
+
PdsSkipLinkComponent,
|
|
2162
|
+
PdsSlabComponent,
|
|
2163
|
+
PdsStatusComponent,
|
|
2164
|
+
PdsTabComponent,
|
|
2165
|
+
PdsTabPanelComponent,
|
|
2166
|
+
PdsTableComponent,
|
|
2167
|
+
PdsTabsComponent,
|
|
2168
|
+
PdsTagComponent,
|
|
2169
|
+
PdsToastComponent,
|
|
2170
|
+
PdsToastRegionComponent,
|
|
2171
|
+
PdsToggleboxComponent,
|
|
2172
|
+
PdsTooltipComponent,
|
|
2173
|
+
PdsTopbarComponent,
|
|
2174
|
+
];
|
|
2175
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9nZW5lcmF0ZWQvY29tcG9uZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw0RkFBNEY7QUFDNUYsaUVBQWlFO0FBRWpFLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLGlCQUFpQixFQUNqQixnQkFBZ0IsRUFDaEIsZUFBZSxHQUNoQixNQUFNLGVBQWUsQ0FBQztBQWdEdkIsT0FBTyxFQUNMLFNBQVMsRUFDVCxrQkFBa0IsRUFDbEIsc0JBQXNCLEVBQ3RCLGNBQWMsRUFDZCxjQUFjLEVBQ2QsbUJBQW1CLEVBQ25CLHVCQUF1QixFQUN2QixlQUFlLEVBQ2YsYUFBYSxFQUNiLGlCQUFpQixFQUNqQixtQkFBbUIsRUFDbkIsZUFBZSxFQUNmLGlCQUFpQixFQUNqQixxQkFBcUIsRUFDckIsbUJBQW1CLEVBQ25CLGNBQWMsRUFDZCxhQUFhLEVBQ2IsYUFBYSxFQUNiLGVBQWUsRUFDZixvQkFBb0IsRUFDcEIsbUJBQW1CLEVBQ25CLGNBQWMsRUFDZCxxQkFBcUIsRUFDckIsc0JBQXNCLEVBQ3RCLGNBQWMsRUFDZCxtQkFBbUIsRUFDbkIsb0JBQW9CLEVBQ3BCLGVBQWUsRUFDZixjQUFjLEVBQ2QsZ0JBQWdCLEVBQ2hCLHFCQUFxQixFQUNyQixvQkFBb0IsRUFDcEIsaUJBQWlCLEVBQ2pCLGFBQWEsRUFDYixlQUFlLEVBQ2YsWUFBWSxFQUNaLGlCQUFpQixFQUNqQixjQUFjLEVBQ2QsYUFBYSxFQUNiLFlBQVksRUFDWixjQUFjLEVBQ2Qsa0JBQWtCLEVBQ2xCLGdCQUFnQixFQUNoQixlQUFlLEdBQ2hCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7O0FBRXpELG9EQUFvRDtBQVFwRCxNQUFNLE9BQU8scUJBQXNCLFNBQVEs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cEIsZ0JBQWdCO0lBQ2hCLGtCQUFrQjtJQUNsQixlQUFlO0lBQ2Ysb0JBQW9CO0lBQ3BCLGlCQUFpQjtJQUNqQixnQkFBZ0I7SUFDaEIsZUFBZTtJQUNmLGlCQUFpQjtJQUNqQix1QkFBdUI7SUFDdkIscUJBQXFCO0lBQ3JCLG1CQUFtQjtJQUNuQixrQkFBa0I7Q0FDVixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQVVUTy1HRU5FUkFURUQgYnkgQHBheWV4LWRzL3dyYXBwZXItZ2VuIGZyb20gdGhlIEBwYXlleC1kcy9jb3JlIEN1c3RvbSBFbGVtZW50cyBNYW5pZmVzdC5cbi8vIERvIG5vdCBlZGl0IGJ5IGhhbmQuIFJlZ2VuZXJhdGUgd2l0aCBgcG5wbSBnZW5lcmF0ZTp3cmFwcGVyc2AuXG5cbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG4gIG51bWJlckF0dHJpYnV0ZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgdHlwZSB7XG4gIFBkc0FjY29yZGlvbiBhcyBQZHNBY2NvcmRpb25FbGVtZW50LFxuICBQZHNBY2NvcmRpb25JdGVtIGFzIFBkc0FjY29yZGlvbkl0ZW1FbGVtZW50LFxuICBQZHNBbGVydCBhcyBQZHNBbGVydEVsZW1lbnQsXG4gIFBkc0JhZGdlIGFzIFBkc0JhZGdlRWxlbWVudCxcbiAgUGRzQnJlYWRjcnVtYiBhcyBQZHNCcmVhZGNydW1iRWxlbWVudCxcbiAgUGRzQnJlYWRjcnVtYkl0ZW0gYXMgUGRzQnJlYWRjcnVtYkl0ZW1FbGVtZW50LFxuICBQZHNCdXR0b24gYXMgUGRzQnV0dG9uRWxlbWVudCxcbiAgUGRzQ2FyZCBhcyBQZHNDYXJkRWxlbWVudCxcbiAgUGRzQ2hlY2tib3ggYXMgUGRzQ2hlY2tib3hFbGVtZW50LFxuICBQZHNEYXRlcGlja2VyIGFzIFBkc0RhdGVwaWNrZXJFbGVtZW50LFxuICBQZHNEaWFsb2cgYXMgUGRzRGlhbG9nRWxlbWVudCxcbiAgUGRzRHJvcGRvd24gYXMgUGRzRHJvcGRvd25FbGVtZW50LFxuICBQZHNEcm9wZG93bkl0ZW0gYXMgUGRzRHJvcGRvd25JdGVtRWxlbWVudCxcbiAgUGRzRXhwYW5kYWJsZSBhcyBQZHNFeHBhbmRhYmxlRWxlbWVudCxcbiAgUGRzSW5wdXQgYXMgUGRzSW5wdXRFbGVtZW50LFxuICBQZHNMaW5rIGFzIFBkc0xpbmtFbGVtZW50LFxuICBQZHNMaXN0IGFzIFBkc0xpc3RFbGVtZW50LFxuICBQZHNMaXN0SXRlbSBhcyBQZHNMaXN0SXRlbUVsZW1lbnQsXG4gIFBkc0xvYWRlciBhcyBQZHNMb2FkZXJFbGVtZW50LFxuICBQZHNNZWRpYU9iamVjdCBhcyBQZHNNZWRpYU9iamVjdEVsZW1lbnQsXG4gIFBkc1BhZ2luYXRpb24gYXMgUGRzUGFnaW5hdGlvbkVsZW1lbnQsXG4gIFBkc1BhbmVsIGFzIFBkc1BhbmVsRWxlbWVudCxcbiAgUGRzUHJvZ3Jlc3NTdGVwIGFzIFBkc1Byb2dyZXNzU3RlcEVsZW1lbnQsXG4gIFBkc1Byb2dyZXNzU3RlcHMgYXMgUGRzUHJvZ3Jlc3NTdGVwc0VsZW1lbnQsXG4gIFBkc1JhZGlvIGFzIFBkc1JhZGlvRWxlbWVudCxcbiAgUGRzUmFkaW9Hcm91cCBhcyBQZHNSYWRpb0dyb3VwRWxlbWVudCxcbiAgUGRzUmFuZ2VzbGlkZXIgYXMgUGRzUmFuZ2VzbGlkZXJFbGVtZW50LFxuICBQZHNTZWxlY3QgYXMgUGRzU2VsZWN0RWxlbWVudCxcbiAgUGRzU2hlZXQgYXMgUGRzU2hlZXRFbGVtZW50LFxuICBQZHNTaWRlYmFyIGFzIFBkc1NpZGViYXJFbGVtZW50LFxuICBQZHNTaWRlYmFyR3JvdXAgYXMgUGRzU2lkZWJhckdyb3VwRWxlbWVudCxcbiAgUGRzU2lkZWJhckl0ZW0gYXMgUGRzU2lkZWJhckl0ZW1FbGVtZW50LFxuICBQZHNTa2lwTGluayBhcyBQZHNTa2lwTGlua0VsZW1lbnQsXG4gIFBkc1NsYWIgYXMgUGRzU2xhYkVsZW1lbnQsXG4gIFBkc1N0YXR1cyBhcyBQZHNTdGF0dXNFbGVtZW50LFxuICBQZHNUYWIgYXMgUGRzVGFiRWxlbWVudCxcbiAgUGRzVGFiUGFuZWwgYXMgUGRzVGFiUGFuZWxFbGVtZW50LFxuICBQZHNUYWJsZSBhcyBQZHNUYWJsZUVsZW1lbnQsXG4gIFBkc1RhYnMgYXMgUGRzVGFic0VsZW1lbnQsXG4gIFBkc1RhZyBhcyBQZHNUYWdFbGVtZW50LFxuICBQZHNUb2FzdCBhcyBQZHNUb2FzdEVsZW1lbnQsXG4gIFBkc1RvYXN0UmVnaW9uIGFzIFBkc1RvYXN0UmVnaW9uRWxlbWVudCxcbiAgUGRzVG9nZ2xlYm94IGFzIFBkc1RvZ2dsZWJveEVsZW1lbnQsXG4gIFBkc1Rvb2x0aXAgYXMgUGRzVG9vbHRpcEVsZW1lbnQsXG4gIFBkc1RvcGJhciBhcyBQZHNUb3BiYXJFbGVtZW50LFxufSBmcm9tICdAcGF5ZXgtZHMvY29yZSc7XG5pbXBvcnQge1xuICBkZWZpbmVBbGwsXG4gIGRlZmluZVBkc0FjY29yZGlvbixcbiAgZGVmaW5lUGRzQWNjb3JkaW9uSXRlbSxcbiAgZGVmaW5lUGRzQWxlcnQsXG4gIGRlZmluZVBkc0JhZGdlLFxuICBkZWZpbmVQZHNCcmVhZGNydW1iLFxuICBkZWZpbmVQZHNCcmVhZGNydW1iSXRlbSxcbiAgZGVmaW5lUGRzQnV0dG9uLFxuICBkZWZpbmVQZHNDYXJkLFxuICBkZWZpbmVQZHNDaGVja2JveCxcbiAgZGVmaW5lUGRzRGF0ZXBpY2tlcixcbiAgZGVmaW5lUGRzRGlhbG9nLFxuICBkZWZpbmVQZHNEcm9wZG93bixcbiAgZGVmaW5lUGRzRHJvcGRvd25JdGVtLFxuICBkZWZpbmVQZHNFeHBhbmRhYmxlLFxuICBkZWZpbmVQZHNJbnB1dCxcbiAgZGVmaW5lUGRzTGluayxcbiAgZGVmaW5lUGRzTGlzdCxcbiAgZGVmaW5lUGRzTG9hZGVyLFxuICBkZWZpbmVQZHNNZWRpYU9iamVjdCxcbiAgZGVmaW5lUGRzUGFnaW5hdGlvbixcbiAgZGVmaW5lUGRzUGFuZWwsXG4gIGRlZmluZVBkc1Byb2dyZXNzU3RlcCxcbiAgZGVmaW5lUGRzUHJvZ3Jlc3NTdGVwcyxcbiAgZGVmaW5lUGRzUmFkaW8sXG4gIGRlZmluZVBkc1JhZGlvR3JvdXAsXG4gIGRlZmluZVBkc1Jhbmdlc2xpZGVyLFxuICBkZWZpbmVQZHNTZWxlY3QsXG4gIGRlZmluZVBkc1NoZWV0LFxuICBkZWZpbmVQZHNTaWRlYmFyLFxuICBkZWZpbmVQZHNTaWRlYmFyR3JvdXAsXG4gIGRlZmluZVBkc1NpZGViYXJJdGVtLFxuICBkZWZpbmVQZHNTa2lwTGluayxcbiAgZGVmaW5lUGRzU2xhYixcbiAgZGVmaW5lUGRzU3RhdHVzLFxuICBkZWZpbmVQZHNUYWIsXG4gIGRlZmluZVBkc1RhYlBhbmVsLFxuICBkZWZpbmVQZHNUYWJsZSxcbiAgZGVmaW5lUGRzVGFicyxcbiAgZGVmaW5lUGRzVGFnLFxuICBkZWZpbmVQZHNUb2FzdCxcbiAgZGVmaW5lUGRzVG9nZ2xlYm94LFxuICBkZWZpbmVQZHNUb29sdGlwLFxuICBkZWZpbmVQZHNUb3BiYXIsXG59IGZyb20gJ0BwYXlleC1kcy9jb3JlJztcbmltcG9ydCB7IFBkc0NvbXBvbmVudEJhc2UgfSBmcm9tICcuLi9saWIvY29tcG9uZW50LWJhc2UnO1xuXG4vKiogQWNjb3JkaW9uIGdyb3VwcyBwZHMtYWNjb3JkaW9uLWl0ZW0gc2VjdGlvbnMuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwZHMtYWNjb3JkaW9uJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIFBkc0FjY29yZGlvbkNvbXBvbmVudCBleHRlbmRzIFBkc0NvbXBvbmVudEJhc2U8UGRzQWNjb3JkaW9uRWxlbWVudD4ge1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc2V0IG11bHRpcGxlKHZhbHVlOiBQZHNBY2NvcmRpb25FbGVtZW50WydtdWx0aXBsZSddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnbXVsdGlwbGUnLCB2YWx1ZSk7XG4gIH1cbiAgLyoqIEJ1YmJsZXMgZnJvbSB0aGUgaXRlbSB0aGUgdXNlciB0b2dnbGVkLiBEZXRhaWw6IGB7IG9wZW4gfWAuICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBwZHNUb2dnbGUgPSBuZXcgRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgb3BlbjogdW5rbm93biB9Pj4oKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihkZWZpbmVQZHNBY2NvcmRpb24pO1xuICAgIHRoaXMucGRzRm9yd2FyZCgncGRzLXRvZ2dsZScsIHRoaXMucGRzVG9nZ2xlKTtcbiAgfVxufVxuXG4vKiogQWNjb3JkaW9uIGl0ZW0gd2l0aCBhIGhlYWRpbmcgYnV0dG9uIGFuZCBhIGNvbnRlbnQgcmVnaW9uLiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncGRzLWFjY29yZGlvbi1pdGVtJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIFBkc0FjY29yZGlvbkl0ZW1Db21wb25lbnQgZXh0ZW5kcyBQZHNDb21wb25lbnRCYXNlPFBkc0FjY29yZGlvbkl0ZW1FbGVtZW50PiB7XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzZXQgZGlzYWJsZWQodmFsdWU6IFBkc0FjY29yZGlvbkl0ZW1FbGVtZW50WydkaXNhYmxlZCddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnZGlzYWJsZWQnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IGhlYWRpbmcodmFsdWU6IFBkc0FjY29yZGlvbkl0ZW1FbGVtZW50WydoZWFkaW5nJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdoZWFkaW5nJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pIHNldCBoZWFkaW5nTGV2ZWwoXG4gICAgdmFsdWU6IFBkc0FjY29yZGlvbkl0ZW1FbGVtZW50WydoZWFkaW5nTGV2ZWwnXSxcbiAgKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnaGVhZGluZ0xldmVsJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzZXQgb3Blbih2YWx1ZTogUGRzQWNjb3JkaW9uSXRlbUVsZW1lbnRbJ29wZW4nXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ29wZW4nLCB2YWx1ZSk7XG4gIH1cbiAgLyoqIEZpcmVkIHdoZW4gdGhlIHVzZXIgdG9nZ2xlcyB0aGUgaXRlbS4gRGV0YWlsOiBgeyBvcGVuIH1gLiAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgcGRzVG9nZ2xlID0gbmV3IEV2ZW50RW1pdHRlcjxcbiAgICBDdXN0b21FdmVudDx7IG9wZW46IFBkc0FjY29yZGlvbkl0ZW1FbGVtZW50WydvcGVuJ10gfT5cbiAgPigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKGRlZmluZVBkc0FjY29yZGlvbkl0ZW0pO1xuICAgIHRoaXMucGRzRm9yd2FyZCgncGRzLXRvZ2dsZScsIHRoaXMucGRzVG9nZ2xlKTtcbiAgfVxufVxuXG4vKiogQWxlcnRzIGNvbW11bmljYXRlIGltcG9ydGFudCwgY29udGV4dHVhbCBtZXNzYWdlcy4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Bkcy1hbGVydCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBQZHNBbGVydENvbXBvbmVudCBleHRlbmRzIFBkc0NvbXBvbmVudEJhc2U8UGRzQWxlcnRFbGVtZW50PiB7XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzZXQgZGlzbWlzc2libGUodmFsdWU6IFBkc0FsZXJ0RWxlbWVudFsnZGlzbWlzc2libGUnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ2Rpc21pc3NpYmxlJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCgpIHNldCBoZWFkaW5nKHZhbHVlOiBQZHNBbGVydEVsZW1lbnRbJ2hlYWRpbmcnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ2hlYWRpbmcnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IHZhcmlhbnQodmFsdWU6IFBkc0FsZXJ0RWxlbWVudFsndmFyaWFudCddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgndmFyaWFudCcsIHZhbHVlKTtcbiAgfVxuICAvKiogQWNjZXNzaWJsZSBsYWJlbCBvZiB0aGUgY2xvc2UgYnV0dG9uLiBEZWZhdWx0IGBEaXNtaXNzYC4gKi9cbiAgQElucHV0KCdjbG9zZS1sYWJlbCcpIHNldCBjbG9zZUxhYmVsKHZhbHVlOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5wZHNTZXRBdHRyaWJ1dGUoJ2Nsb3NlLWxhYmVsJywgdmFsdWUpO1xuICB9XG4gIC8qKiBGaXJlZCB3aGVuIHRoZSBjbG9zZSBidXR0b24gaXMgdXNlZCAoY2FuY2VsYWJsZSkuIFRoZSBhbGVydCBoaWRlcyBpdHNlbGYgdW5sZXNzIGNhbmNlbGxlZC4gKi9cbiAgQE91dHB1dCgpIHJlYWRvbmx5IHBkc0Rpc21pc3MgPSBuZXcgRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHVua25vd24+PigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKGRlZmluZVBkc0FsZXJ0KTtcbiAgICB0aGlzLnBkc0ZvcndhcmQoJ3Bkcy1kaXNtaXNzJywgdGhpcy5wZHNEaXNtaXNzKTtcbiAgfVxufVxuXG4vKiogQmFkZ2VzIGhpZ2hsaWdodCBhIGNvdW50IG9yIHNob3J0IHN0YXR1cyBsYWJlbC4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Bkcy1iYWRnZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBQZHNCYWRnZUNvbXBvbmVudCBleHRlbmRzIFBkc0NvbXBvbmVudEJhc2U8UGRzQmFkZ2VFbGVtZW50PiB7XG4gIEBJbnB1dCgpIHNldCBjb3VudCh2YWx1ZTogUGRzQmFkZ2VFbGVtZW50Wydjb3VudCddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnY291bnQnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHNldCBkb3QodmFsdWU6IFBkc0JhZGdlRWxlbWVudFsnZG90J10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdkb3QnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSkgc2V0IG1heCh2YWx1ZTogUGRzQmFkZ2VFbGVtZW50WydtYXgnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ21heCcsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoKSBzZXQgdmFyaWFudCh2YWx1ZTogUGRzQmFkZ2VFbGVtZW50Wyd2YXJpYW50J10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCd2YXJpYW50JywgdmFsdWUpO1xuICB9XG4gIC8qKiBBY2Nlc3NpYmxlIG5hbWUgYW5ub3VuY2VkIGluc3RlYWQgb2YgdGhlIHZpc2libGUgdGV4dC4gKi9cbiAgQElucHV0KCdhcmlhLWxhYmVsJykgc2V0IGFyaWFMYWJlbCh2YWx1ZTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMucGRzU2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJywgdmFsdWUpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoZGVmaW5lUGRzQmFkZ2UpO1xuICB9XG59XG5cbi8qKiBTaG93cyB0aGUgdXNlcidzIGxvY2F0aW9uIGluIGEgaGllcmFyY2h5LiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncGRzLWJyZWFkY3J1bWInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgUGRzQnJlYWRjcnVtYkNvbXBvbmVudCBleHRlbmRzIFBkc0NvbXBvbmVudEJhc2U8UGRzQnJlYWRjcnVtYkVsZW1lbnQ+IHtcbiAgQElucHV0KCkgc2V0IGV4cGFuZExhYmVsKHZhbHVlOiBQZHNCcmVhZGNydW1iRWxlbWVudFsnZXhwYW5kTGFiZWwnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ2V4cGFuZExhYmVsJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCgpIHNldCBsYWJlbCh2YWx1ZTogUGRzQnJlYWRjcnVtYkVsZW1lbnRbJ2xhYmVsJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdsYWJlbCcsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KSBzZXQgbWF4SXRlbXModmFsdWU6IFBkc0JyZWFkY3J1bWJFbGVtZW50WydtYXhJdGVtcyddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnbWF4SXRlbXMnLCB2YWx1ZSk7XG4gIH1cbiAgLyoqIEZpcmVkIHdoZW4gdGhlIGNvbGxhcHNlZCBpdGVtcyBhcmUgcmV2ZWFsZWQuICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBwZHNFeHBhbmQgPSBuZXcgRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHVua25vd24+PigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKGRlZmluZVBkc0JyZWFkY3J1bWIpO1xuICAgIHRoaXMucGRzRm9yd2FyZCgncGRzLWV4cGFuZCcsIHRoaXMucGRzRXhwYW5kKTtcbiAgfVxufVxuXG4vKiogQW4gaXRlbSBpbnNpZGUgYHBkcy1icmVhZGNydW1iYC4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Bkcy1icmVhZGNydW1iLWl0ZW0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgUGRzQnJlYWRjcnVtYkl0ZW1Db21wb25lbnQgZXh0ZW5kcyBQZHNDb21wb25lbnRCYXNlPFBkc0JyZWFkY3J1bWJJdGVtRWxlbWVudD4ge1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc2V0IGN1cnJlbnQodmFsdWU6IFBkc0JyZWFkY3J1bWJJdGVtRWxlbWVudFsnY3VycmVudCddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnY3VycmVudCcsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoKSBzZXQgaHJlZih2YWx1ZTogUGRzQnJlYWRjcnVtYkl0ZW1FbGVtZW50WydocmVmJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdocmVmJywgdmFsdWUpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoZGVmaW5lUGRzQnJlYWRjcnVtYkl0ZW0pO1xuICB9XG59XG5cbi8qKiBCdXR0b25zIHRyaWdnZXIgYWN0aW9ucyBvciBuYXZpZ2F0aW9uLiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncGRzLWJ1dHRvbicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBQZHNCdXR0b25Db21wb25lbnQgZXh0ZW5kcyBQZHNDb21wb25lbnRCYXNlPFBkc0J1dHRvbkVsZW1lbnQ+IHtcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHNldCBkaXNhYmxlZCh2YWx1ZTogUGRzQnV0dG9uRWxlbWVudFsnZGlzYWJsZWQnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ2Rpc2FibGVkJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzZXQgZnVsbFdpZHRoKHZhbHVlOiBQZHNCdXR0b25FbGVtZW50WydmdWxsV2lkdGgnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ2Z1bGxXaWR0aCcsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoKSBzZXQgaHJlZih2YWx1ZTogUGRzQnV0dG9uRWxlbWVudFsnaHJlZiddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnaHJlZicsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc2V0IGxvYWRpbmcodmFsdWU6IFBkc0J1dHRvbkVsZW1lbnRbJ2xvYWRpbmcnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ2xvYWRpbmcnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IHNpemUodmFsdWU6IFBkc0J1dHRvbkVsZW1lbnRbJ3NpemUnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ3NpemUnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IHR5cGUodmFsdWU6IFBkc0J1dHRvbkVsZW1lbnRbJ3R5cGUnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ3R5cGUnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IHZhcmlhbnQodmFsdWU6IFBkc0J1dHRvbkVsZW1lbnRbJ3ZhcmlhbnQnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ3ZhcmlhbnQnLCB2YWx1ZSk7XG4gIH1cbiAgLyoqIExpbmsgdGFyZ2V0IHdoZW4gYGhyZWZgIGlzIHNldC4gKi9cbiAgQElucHV0KCkgc2V0IHRhcmdldCh2YWx1ZTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMucGRzU2V0QXR0cmlidXRlKCd0YXJnZXQnLCB2YWx1ZSk7XG4gIH1cbiAgLyoqIEZpcmVkIHdoZW4gYWN0aXZhdGVkIChub3QgZmlyZWQgd2hpbGUgZGlzYWJsZWQvbG9hZGluZykuIERldGFpbDogYHsgb3JpZ2luYWxFdmVudCB9YC4gKi9cbiAgQE91dHB1dCgpIHJlYWRvbmx5IHBkc0NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IG9yaWdpbmFsRXZlbnQ6IHVua25vd24gfT4+KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoZGVmaW5lUGRzQnV0dG9uKTtcbiAgICB0aGlzLnBkc0ZvcndhcmQoJ3Bkcy1jbGljaycsIHRoaXMucGRzQ2xpY2spO1xuICB9XG59XG5cbi8qKiBDYXJkcyBncm91cCByZWxhdGVkIGNvbnRlbnQgYW5kIGFjdGlvbnMuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwZHMtY2FyZCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBQZHNDYXJkQ29tcG9uZW50IGV4dGVuZHMgUGRzQ29tcG9uZW50QmFzZTxQZHNDYXJkRWxlbWVudD4ge1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc2V0IGNsaWNrYWJsZSh2YWx1ZTogUGRzQ2FyZEVsZW1lbnRbJ2NsaWNrYWJsZSddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnY2xpY2thYmxlJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCgpIHNldCBoZWFkaW5nKHZhbHVlOiBQZHNDYXJkRWxlbWVudFsnaGVhZGluZyddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnaGVhZGluZycsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KSBzZXQgaGVhZGluZ0xldmVsKHZhbHVlOiBQZHNDYXJkRWxlbWVudFsnaGVhZGluZ0xldmVsJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdoZWFkaW5nTGV2ZWwnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IGhyZWYodmFsdWU6IFBkc0NhcmRFbGVtZW50WydocmVmJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdocmVmJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCgpIHNldCB2YXJpYW50KHZhbHVlOiBQZHNDYXJkRWxlbWVudFsndmFyaWFudCddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgndmFyaWFudCcsIHZhbHVlKTtcbiAgfVxuICAvKiogQWNjZXNzaWJsZSBsaW5rIG5hbWUgd2hlbiBgaHJlZmAgaXMgc2V0IHdpdGhvdXQgYGhlYWRpbmdgLiAqL1xuICBASW5wdXQoKSBzZXQgbGFiZWwodmFsdWU6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLnBkc1NldEF0dHJpYnV0ZSgnbGFiZWwnLCB2YWx1ZSk7XG4gIH1cbiAgLyoqIExpbmsgdGFyZ2V0IHdoZW4gYGhyZWZgIGlzIHNldC4gKi9cbiAgQElucHV0KCkgc2V0IHRhcmdldCh2YWx1ZTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMucGRzU2V0QXR0cmlidXRlKCd0YXJnZXQnLCB2YWx1ZSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihkZWZpbmVQZHNDYXJkKTtcbiAgfVxufVxuXG4vKiogQ2hlY2tib3ggZm9yIGJvb2xlYW4gb3IgbXVsdGktc2VsZWN0IGNob2ljZXMuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwZHMtY2hlY2tib3gnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgUGRzQ2hlY2tib3hDb21wb25lbnQgZXh0ZW5kcyBQZHNDb21wb25lbnRCYXNlPFBkc0NoZWNrYm94RWxlbWVudD4ge1xuICAvKiogQ3VycmVudCBjaGVja2VkIHN0YXRlICh0aGUgYXR0cmlidXRlIGlzIHRoZSBpbml0aWFsIHN0YXRlKS4gKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHNldCBjaGVja2VkKHZhbHVlOiBQZHNDaGVja2JveEVsZW1lbnRbJ2NoZWNrZWQnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ2NoZWNrZWQnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHNldCBkaXNhYmxlZCh2YWx1ZTogUGRzQ2hlY2tib3hFbGVtZW50WydkaXNhYmxlZCddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnZGlzYWJsZWQnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IGVycm9yVGV4dCh2YWx1ZTogUGRzQ2hlY2tib3hFbGVtZW50WydlcnJvclRleHQnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ2Vycm9yVGV4dCcsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoKSBzZXQgaGVscGVyVGV4dCh2YWx1ZTogUGRzQ2hlY2tib3hFbGVtZW50WydoZWxwZXJUZXh0J10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdoZWxwZXJUZXh0JywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzZXQgaW5kZXRlcm1pbmF0ZShcbiAgICB2YWx1ZTogUGRzQ2hlY2tib3hFbGVtZW50WydpbmRldGVybWluYXRlJ10sXG4gICkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ2luZGV0ZXJtaW5hdGUnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IGxhYmVsKHZhbHVlOiBQZHNDaGVja2JveEVsZW1lbnRbJ2xhYmVsJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdsYWJlbCcsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoKSBzZXQgbmFtZSh2YWx1ZTogUGRzQ2hlY2tib3hFbGVtZW50WyduYW1lJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCduYW1lJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzZXQgcmVxdWlyZWQodmFsdWU6IFBkc0NoZWNrYm94RWxlbWVudFsncmVxdWlyZWQnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ3JlcXVpcmVkJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCgpIHNldCB2YWx1ZSh2YWx1ZTogUGRzQ2hlY2tib3hFbGVtZW50Wyd2YWx1ZSddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgndmFsdWUnLCB2YWx1ZSk7XG4gIH1cbiAgLyoqIEZpcmVkIHdoZW4gdG9nZ2xlZCBieSB0aGUgdXNlci4gRGV0YWlsOiBgeyBjaGVja2VkLCB2YWx1ZSB9YC4gKi9cbiAgQE91dHB1dCgpIHJlYWRvbmx5IHBkc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8XG4gICAgQ3VzdG9tRXZlbnQ8eyBjaGVja2VkOiBQZHNDaGVja2JveEVsZW1lbnRbJ2NoZWNrZWQnXTsgdmFsdWU6IFBkc0NoZWNrYm94RWxlbWVudFsndmFsdWUnXSB9PlxuICA+KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoZGVmaW5lUGRzQ2hlY2tib3gpO1xuICAgIHRoaXMucGRzRm9yd2FyZCgncGRzLWNoYW5nZScsIHRoaXMucGRzQ2hhbmdlKTtcbiAgfVxufVxuXG4vKiogUGljayBhIGRhdGUgYnkgdHlwaW5nIG9yIGZyb20gYSBjYWxlbmRhciBwb3B1cC4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Bkcy1kYXRlcGlja2VyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIFBkc0RhdGVwaWNrZXJDb21wb25lbnQgZXh0ZW5kcyBQZHNDb21wb25lbnRCYXNlPFBkc0RhdGVwaWNrZXJFbGVtZW50PiB7XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzZXQgZGlzYWJsZWQodmFsdWU6IFBkc0RhdGVwaWNrZXJFbGVtZW50WydkaXNhYmxlZCddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnZGlzYWJsZWQnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IGRpc2FibGVkRGF0ZXModmFsdWU6IFBkc0RhdGVwaWNrZXJFbGVtZW50WydkaXNhYmxlZERhdGVzJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdkaXNhYmxlZERhdGVzJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCgpIHNldCBlcnJvclRleHQodmFsdWU6IFBkc0RhdGVwaWNrZXJFbGVtZW50WydlcnJvclRleHQnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ2Vycm9yVGV4dCcsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KSBzZXQgZmlyc3REYXlPZldlZWsoXG4gICAgdmFsdWU6IFBkc0RhdGVwaWNrZXJFbGVtZW50WydmaXJzdERheU9mV2VlayddLFxuICApIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdmaXJzdERheU9mV2VlaycsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoKSBzZXQgaGVscGVyVGV4dCh2YWx1ZTogUGRzRGF0ZXBpY2tlckVsZW1lbnRbJ2hlbHBlclRleHQnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ2hlbHBlclRleHQnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IGxhYmVsKHZhbHVlOiBQZHNEYXRlcGlja2VyRWxlbWVudFsnbGFiZWwnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ2xhYmVsJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCgpIHNldCBsb2NhbGUodmFsdWU6IFBkc0RhdGVwaWNrZXJFbGVtZW50Wydsb2NhbGUnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ2xvY2FsZScsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoKSBzZXQgbWF4KHZhbHVlOiBQZHNEYXRlcGlja2VyRWxlbWVudFsnbWF4J10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdtYXgnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IG1pbih2YWx1ZTogUGRzRGF0ZXBpY2tlckVsZW1lbnRbJ21pbiddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnbWluJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCgpIHNldCBuYW1lKHZhbHVlOiBQZHNEYXRlcGlja2VyRWxlbWVudFsnbmFtZSddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnbmFtZScsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoKSBzZXQgcGxhY2Vob2xkZXIodmFsdWU6IFBkc0RhdGVwaWNrZXJFbGVtZW50WydwbGFjZWhvbGRlciddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgncGxhY2Vob2xkZXInLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHNldCByZWFkb25seSh2YWx1ZTogUGRzRGF0ZXBpY2tlckVsZW1lbnRbJ3JlYWRvbmx5J10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdyZWFkb25seScsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc2V0IHJlcXVpcmVkKHZhbHVlOiBQZHNEYXRlcGlja2VyRWxlbWVudFsncmVxdWlyZWQnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ3JlcXVpcmVkJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCgpIHNldCB2YWx1ZSh2YWx1ZTogUGRzRGF0ZXBpY2tlckVsZW1lbnRbJ3ZhbHVlJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCd2YWx1ZScsIHZhbHVlKTtcbiAgfVxuICAvKiogRmlyZWQgd2hlbiB0aGUgdmFsdWUgY2hhbmdlcy4gRGV0YWlsOiBgeyB2YWx1ZSB9YCAoSVNPIHN0cmluZyBvciBlbXB0eSkuICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBwZHNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFxuICAgIEN1c3RvbUV2ZW50PHsgdmFsdWU6IFBkc0RhdGVwaWNrZXJFbGVtZW50Wyd2YWx1ZSddIH0+XG4gID4oKTtcbiAgLyoqIEZpcmVkIHdoZW4gdGhlIGNhbGVuZGFyIG9wZW5zLiAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgcGRzT3BlbiA9IG5ldyBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dW5rbm93bj4+KCk7XG4gIC8qKiBGaXJlZCB3aGVuIHRoZSBjYWxlbmRhciBjbG9zZXMuICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBwZHNDbG9zZSA9IG5ldyBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dW5rbm93bj4+KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoZGVmaW5lUGRzRGF0ZXBpY2tlcik7XG4gICAgdGhpcy5wZHNGb3J3YXJkKCdwZHMtY2hhbmdlJywgdGhpcy5wZHNDaGFuZ2UpO1xuICAgIHRoaXMucGRzRm9yd2FyZCgncGRzLW9wZW4nLCB0aGlzLnBkc09wZW4pO1xuICAgIHRoaXMucGRzRm9yd2FyZCgncGRzLWNsb3NlJywgdGhpcy5wZHNDbG9zZSk7XG4gIH1cbn1cblxuLyoqIERpYWxvZ3MgaW50ZXJydXB0IHRoZSB1c2VyIHdpdGggZm9jdXNlZCwgbW9kYWwgY29udGVudC4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Bkcy1kaWFsb2cnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgUGRzRGlhbG9nQ29tcG9uZW50IGV4dGVuZHMgUGRzQ29tcG9uZW50QmFzZTxQZHNEaWFsb2dFbGVtZW50PiB7XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzZXQgZGlzbWlzc2libGUodmFsdWU6IFBkc0RpYWxvZ0VsZW1lbnRbJ2Rpc21pc3NpYmxlJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdkaXNtaXNzaWJsZScsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoKSBzZXQgaGVhZGluZyh2YWx1ZTogUGRzRGlhbG9nRWxlbWVudFsnaGVhZGluZyddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnaGVhZGluZycsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc2V0IG9wZW4odmFsdWU6IFBkc0RpYWxvZ0VsZW1lbnRbJ29wZW4nXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ29wZW4nLCB2YWx1ZSk7XG4gIH1cbiAgLyoqIFZhbHVlIHJlcG9ydGVkIGJ5IGBwZHMtY2xvc2VgLiAqL1xuICBASW5wdXQoKSBzZXQgcmV0dXJuVmFsdWUodmFsdWU6IFBkc0RpYWxvZ0VsZW1lbnRbJ3JldHVyblZhbHVlJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdyZXR1cm5WYWx1ZScsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoKSBzZXQgc2l6ZSh2YWx1ZTogUGRzRGlhbG9nRWxlbWVudFsnc2l6ZSddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnc2l6ZScsIHZhbHVlKTtcbiAgfVxuICAvKiogQWNjZXNzaWJsZSBsYWJlbCBvZiB0aGUgY2xvc2UgYnV0dG9uLiBEZWZhdWx0IGBDbG9zZWAuICovXG4gIEBJbnB1dCgnY2xvc2UtbGFiZWwnKSBzZXQgY2xvc2VMYWJlbCh2YWx1ZTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMucGRzU2V0QXR0cmlidXRlKCdjbG9zZS1sYWJlbCcsIHZhbHVlKTtcbiAgfVxuICAvKiogRmlyZWQgYWZ0ZXIgdGhlIGRpYWxvZyBvcGVuZWQuICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBwZHNPcGVuID0gbmV3IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx1bmtub3duPj4oKTtcbiAgLyoqIEZpcmVkIGFmdGVyIHRoZSBkaWFsb2cgY2xvc2VkLiBEZXRhaWw6IGB7IHJldHVyblZhbHVlIH1gLiAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgcGRzQ2xvc2UgPSBuZXcgRXZlbnRFbWl0dGVyPFxuICAgIEN1c3RvbUV2ZW50PHsgcmV0dXJuVmFsdWU6IFBkc0RpYWxvZ0VsZW1lbnRbJ3JldHVyblZhbHVlJ10gfT5cbiAgPigpO1xuICAvKiogQ2FuY2VsYWJsZTsgZmlyZWQgd2hlbiBFc2NhcGUsIGJhY2tkcm9wIG9yIGNsb3NlIGJ1dHRvbiBhc2tzIHRvIGNsb3NlLiBEZXRhaWw6IGB7IHJlYXNvbiB9YC4gKi9cbiAgQE91dHB1dCgpIHJlYWRvbmx5IHBkc1JlcXVlc3RDbG9zZSA9IG5ldyBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyByZWFzb246IHVua25vd24gfT4+KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoZGVmaW5lUGRzRGlhbG9nKTtcbiAgICB0aGlzLnBkc0ZvcndhcmQoJ3Bkcy1vcGVuJywgdGhpcy5wZHNPcGVuKTtcbiAgICB0aGlzLnBkc0ZvcndhcmQoJ3Bkcy1jbG9zZScsIHRoaXMucGRzQ2xvc2UpO1xuICAgIHRoaXMucGRzRm9yd2FyZCgncGRzLXJlcXVlc3QtY2xvc2UnLCB0aGlzLnBkc1JlcXVlc3RDbG9zZSk7XG4gIH1cbn1cblxuLyoqIERyb3Bkb3duIG1lbnUgb3BlbmVkIGZyb20gYSBidXR0b24uICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwZHMtZHJvcGRvd24nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgUGRzRHJvcGRvd25Db21wb25lbnQgZXh0ZW5kcyBQZHNDb21wb25lbnRCYXNlPFBkc0Ryb3Bkb3duRWxlbWVudD4ge1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc2V0IGRpc2FibGVkKHZhbHVlOiBQZHNEcm9wZG93bkVsZW1lbnRbJ2Rpc2FibGVkJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdkaXNhYmxlZCcsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoKSBzZXQgbGFiZWwodmFsdWU6IFBkc0Ryb3Bkb3duRWxlbWVudFsnbGFiZWwnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ2xhYmVsJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzZXQgb3Blbih2YWx1ZTogUGRzRHJvcGRvd25FbGVtZW50WydvcGVuJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdvcGVuJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCgpIHNldCBwbGFjZW1lbnQodmFsdWU6IFBkc0Ryb3Bkb3duRWxlbWVudFsncGxhY2VtZW50J10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdwbGFjZW1lbnQnLCB2YWx1ZSk7XG4gIH1cbiAgLyoqIEZpcmVkIHdoZW4gYW4gaXRlbSBpcyBjaG9zZW4uIERldGFpbDogYHsgdmFsdWUgfWAuICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBwZHNTZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgdmFsdWU6IHVua25vd24gfT4+KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoZGVmaW5lUGRzRHJvcGRvd24pO1xuICAgIHRoaXMucGRzRm9yd2FyZCgncGRzLXNlbGVjdCcsIHRoaXMucGRzU2VsZWN0KTtcbiAgfVxufVxuXG4vKiogTWVudSBpdGVtLiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncGRzLWRyb3Bkb3duLWl0ZW0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgUGRzRHJvcGRvd25JdGVtQ29tcG9uZW50IGV4dGVuZHMgUGRzQ29tcG9uZW50QmFzZTxQZHNEcm9wZG93bkl0ZW1FbGVtZW50PiB7XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzZXQgZGlzYWJsZWQodmFsdWU6IFBkc0Ryb3Bkb3duSXRlbUVsZW1lbnRbJ2Rpc2FibGVkJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdkaXNhYmxlZCcsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoKSBzZXQgaHJlZih2YWx1ZTogUGRzRHJvcGRvd25JdGVtRWxlbWVudFsnaHJlZiddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnaHJlZicsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoKSBzZXQgdmFsdWUodmFsdWU6IFBkc0Ryb3Bkb3duSXRlbUVsZW1lbnRbJ3ZhbHVlJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCd2YWx1ZScsIHZhbHVlKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKGRlZmluZVBkc0Ryb3Bkb3duSXRlbSk7XG4gIH1cbn1cblxuLyoqIEV4cGFuZGFibGUgcmV2ZWFscyBvciBoaWRlcyBjb250ZW50LiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncGRzLWV4cGFuZGFibGUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgUGRzRXhwYW5kYWJsZUNvbXBvbmVudCBleHRlbmRzIFBkc0NvbXBvbmVudEJhc2U8UGRzRXhwYW5kYWJsZUVsZW1lbnQ+IHtcbiAgQElucHV0KCkgc2V0IGxhYmVsKHZhbHVlOiBQZHNFeHBhbmRhYmxlRWxlbWVudFsnbGFiZWwnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ2xhYmVsJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzZXQgb3Blbih2YWx1ZTogUGRzRXhwYW5kYWJsZUVsZW1lbnRbJ29wZW4nXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ29wZW4nLCB2YWx1ZSk7XG4gIH1cbiAgLyoqIEZpcmVkIHdoZW4gdGhlIHVzZXIgdG9nZ2xlcy4gRGV0YWlsOiBgeyBvcGVuIH1gLiAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgcGRzVG9nZ2xlID0gbmV3IEV2ZW50RW1pdHRlcjxcbiAgICBDdXN0b21FdmVudDx7IG9wZW46IFBkc0V4cGFuZGFibGVFbGVtZW50WydvcGVuJ10gfT5cbiAgPigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKGRlZmluZVBkc0V4cGFuZGFibGUpO1xuICAgIHRoaXMucGRzRm9yd2FyZCgncGRzLXRvZ2dsZScsIHRoaXMucGRzVG9nZ2xlKTtcbiAgfVxufVxuXG4vKiogU2luZ2xlLWxpbmUgdGV4dCBmaWVsZC4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Bkcy1pbnB1dCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBQZHNJbnB1dENvbXBvbmVudCBleHRlbmRzIFBkc0NvbXBvbmVudEJhc2U8UGRzSW5wdXRFbGVtZW50PiB7XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzZXQgZGlzYWJsZWQodmFsdWU6IFBkc0lucHV0RWxlbWVudFsnZGlzYWJsZWQnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ2Rpc2FibGVkJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCgpIHNldCBlcnJvclRleHQodmFsdWU6IFBkc0lucHV0RWxlbWVudFsnZXJyb3JUZXh0J10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdlcnJvclRleHQnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IGhlbHBlclRleHQodmFsdWU6IFBkc0lucHV0RWxlbWVudFsnaGVscGVyVGV4dCddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnaGVscGVyVGV4dCcsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoKSBzZXQgbGFiZWwodmFsdWU6IFBkc0lucHV0RWxlbWVudFsnbGFiZWwnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ2xhYmVsJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCgpIHNldCBuYW1lKHZhbHVlOiBQZHNJbnB1dEVsZW1lbnRbJ25hbWUnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ25hbWUnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IHBsYWNlaG9sZGVyKHZhbHVlOiBQZHNJbnB1dEVsZW1lbnRbJ3BsYWNlaG9sZGVyJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdwbGFjZWhvbGRlcicsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc2V0IHJlYWRPbmx5KHZhbHVlOiBQZHNJbnB1dEVsZW1lbnRbJ3JlYWRPbmx5J10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdyZWFkT25seScsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc2V0IHJlcXVpcmVkKHZhbHVlOiBQZHNJbnB1dEVsZW1lbnRbJ3JlcXVpcmVkJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdyZXF1aXJlZCcsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoKSBzZXQgdHlwZSh2YWx1ZTogUGRzSW5wdXRFbGVtZW50Wyd0eXBlJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCd0eXBlJywgdmFsdWUpO1xuICB9XG4gIC8qKiBDdXJyZW50IHZhbHVlLiAqL1xuICBASW5wdXQoKSBzZXQgdmFsdWUodmFsdWU6IFBkc0lucHV0RWxlbWVudFsndmFsdWUnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ3ZhbHVlJywgdmFsdWUpO1xuICB9XG4gIC8qKiBOYXRpdmUgYXV0b2NvbXBsZXRlIGhpbnQuICovXG4gIEBJbnB1dCgpIHNldCBhdXRvY29tcGxldGUodmFsdWU6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLnBkc1NldEF0dHJpYnV0ZSgnYXV0b2NvbXBsZXRlJywgdmFsdWUpO1xuICB9XG4gIC8qKiBNYXhpbXVtIChudW1iZXIgdHlwZSkuICovXG4gIEBJbnB1dCgpIHNldCBtYXgodmFsdWU6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLnBkc1NldEF0dHJpYnV0ZSgnbWF4JywgdmFsdWUpO1xuICB9XG4gIC8qKiBNYXhpbXVtIGxlbmd0aC4gKi9cbiAgQElucHV0KCkgc2V0IG1heGxlbmd0aCh2YWx1ZTogbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMucGRzU2V0QXR0cmlidXRlKCdtYXhsZW5ndGgnLCB2YWx1ZSk7XG4gIH1cbiAgLyoqIE1pbmltdW0gKG51bWJlciB0eXBlKS4gKi9cbiAgQElucHV0KCkgc2V0IG1pbih2YWx1ZTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMucGRzU2V0QXR0cmlidXRlKCdtaW4nLCB2YWx1ZSk7XG4gIH1cbiAgLyoqIE1pbmltdW0gbGVuZ3RoLiAqL1xuICBASW5wdXQoKSBzZXQgbWlubGVuZ3RoKHZhbHVlOiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5wZHNTZXRBdHRyaWJ1dGUoJ21pbmxlbmd0aCcsIHZhbHVlKTtcbiAgfVxuICAvKiogVmFsaWRhdGlvbiByZWd1bGFyIGV4cHJlc3Npb24uICovXG4gIEBJbnB1dCgpIHNldCBwYXR0ZXJuKHZhbHVlOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5wZHNTZXRBdHRyaWJ1dGUoJ3BhdHRlcm4nLCB2YWx1ZSk7XG4gIH1cbiAgLyoqIE1ha2VzIHRoZSBmaWVsZCByZWFkLW9ubHkuICovXG4gIEBJbnB1dCgpIHNldCByZWFkb25seSh2YWx1ZTogYm9vbGVhbiB8IG51bGwgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLnBkc1NldEF0dHJpYnV0ZSgncmVhZG9ubHknLCB2YWx1ZSk7XG4gIH1cbiAgLyoqIEZpcmVkIG9uIGV2ZXJ5IGVkaXQuIERldGFpbDogYHsgdmFsdWUgfWAuICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBwZHNJbnB1dCA9IG5ldyBFdmVudEVtaXR0ZXI8XG4gICAgQ3VzdG9tRXZlbnQ8eyB2YWx1ZTogUGRzSW5wdXRFbGVtZW50Wyd2YWx1ZSddIH0+XG4gID4oKTtcbiAgLyoqIEZpcmVkIHdoZW4gdGhlIHZhbHVlIGlzIGNvbW1pdHRlZC4gRGV0YWlsOiBgeyB2YWx1ZSB9YC4gKi9cbiAgQE91dHB1dCgpIHJlYWRvbmx5IHBkc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8XG4gICAgQ3VzdG9tRXZlbnQ8eyB2YWx1ZTogUGRzSW5wdXRFbGVtZW50Wyd2YWx1ZSddIH0+XG4gID4oKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihkZWZpbmVQZHNJbnB1dCk7XG4gICAgdGhpcy5wZHNGb3J3YXJkKCdwZHMtaW5wdXQnLCB0aGlzLnBkc0lucHV0KTtcbiAgICB0aGlzLnBkc0ZvcndhcmQoJ3Bkcy1jaGFuZ2UnLCB0aGlzLnBkc0NoYW5nZSk7XG4gIH1cbn1cblxuLyoqIExpbmtzIG5hdmlnYXRlIHRvIGFub3RoZXIgbG9jYXRpb24uICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwZHMtbGluaycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBQZHNMaW5rQ29tcG9uZW50IGV4dGVuZHMgUGRzQ29tcG9uZW50QmFzZTxQZHNMaW5rRWxlbWVudD4ge1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc2V0IGV4dGVybmFsKHZhbHVlOiBQZHNMaW5rRWxlbWVudFsnZXh0ZXJuYWwnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ2V4dGVybmFsJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCgpIHNldCBocmVmKHZhbHVlOiBQZHNMaW5rRWxlbWVudFsnaHJlZiddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnaHJlZicsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoKSBzZXQgdGFyZ2V0KHZhbHVlOiBQZHNMaW5rRWxlbWVudFsndGFyZ2V0J10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCd0YXJnZXQnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IHZhcmlhbnQodmFsdWU6IFBkc0xpbmtFbGVtZW50Wyd2YXJpYW50J10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCd2YXJpYW50JywgdmFsdWUpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoZGVmaW5lUGRzTGluayk7XG4gIH1cbn1cblxuLyoqIExpc3RzIHByZXNlbnQgcmVsYXRlZCBpdGVtcy4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Bkcy1saXN0JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIFBkc0xpc3RDb21wb25lbnQgZXh0ZW5kcyBQZHNDb21wb25lbnRCYXNlPFBkc0xpc3RFbGVtZW50PiB7XG4gIEBJbnB1dCgpIHNldCB2YXJpYW50KHZhbHVlOiBQZHNMaXN0RWxlbWVudFsndmFyaWFudCddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgndmFyaWFudCcsIHZhbHVlKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKGRlZmluZVBkc0xpc3QpO1xuICB9XG59XG5cbi8qKiBBIHNpbmdsZSBlbnRyeSBpbiBhIGxpc3QuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwZHMtbGlzdC1pdGVtJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIFBkc0xpc3RJdGVtQ29tcG9uZW50IGV4dGVuZHMgUGRzQ29tcG9uZW50QmFzZTxQZHNMaXN0SXRlbUVsZW1lbnQ+IHtcbiAgQElucHV0KCdkYXRhLWluZGV4Jykgc2V0IGRhdGFJbmRleCh2YWx1ZTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMucGRzU2V0QXR0cmlidXRlKCdkYXRhLWluZGV4JywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCgnZGF0YS12YXJpYW50Jykgc2V0IGRhdGFWYXJpYW50KHZhbHVlOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5wZHNTZXRBdHRyaWJ1dGUoJ2RhdGEtdmFyaWFudCcsIHZhbHVlKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKGRlZmluZUFsbCk7XG4gIH1cbn1cblxuLyoqIEluZGljYXRlcyB0aGF0IGNvbnRlbnQgaXMgbG9hZGluZy4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Bkcy1sb2FkZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgUGRzTG9hZGVyQ29tcG9uZW50IGV4dGVuZHMgUGRzQ29tcG9uZW50QmFzZTxQZHNMb2FkZXJFbGVtZW50PiB7XG4gIEBJbnB1dCgpIHNldCBsYWJlbCh2YWx1ZTogUGRzTG9hZGVyRWxlbWVudFsnbGFiZWwnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ2xhYmVsJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzZXQgb3ZlcmxheSh2YWx1ZTogUGRzTG9hZGVyRWxlbWVudFsnb3ZlcmxheSddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnb3ZlcmxheScsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoKSBzZXQgc2l6ZSh2YWx1ZTogUGRzTG9hZGVyRWxlbWVudFsnc2l6ZSddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnc2l6ZScsIHZhbHVlKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKGRlZmluZVBkc0xvYWRlcik7XG4gIH1cbn1cblxuLyoqIE1lZGlhIG9iamVjdHMgcGFpciBhbiBpbWFnZSBvciBpY29uIHdpdGggdGV4dC4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Bkcy1tZWRpYS1vYmplY3QnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgUGRzTWVkaWFPYmplY3RDb21wb25lbnQgZXh0ZW5kcyBQZHNDb21wb25lbnRCYXNlPFBkc01lZGlhT2JqZWN0RWxlbWVudD4ge1xuICBASW5wdXQoKSBzZXQgYWxpZ24odmFsdWU6IFBkc01lZGlhT2JqZWN0RWxlbWVudFsnYWxpZ24nXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ2FsaWduJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzZXQgcmV2ZXJzZSh2YWx1ZTogUGRzTWVkaWFPYmplY3RFbGVtZW50WydyZXZlcnNlJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdyZXZlcnNlJywgdmFsdWUpO1xuICB9XG4gIC8qKiBCcmVha3BvaW50IGluIHB4LCBvciBgbnVsbGAgd2hlbiB0aGUgY29udGFpbmVyIHF1ZXJ5IGlzIHVzZWQuICovXG4gIEBJbnB1dCgpIHNldCBzdGFja0JlbG93KHZhbHVlOiBQZHNNZWRpYU9iamVjdEVsZW1lbnRbJ3N0YWNrQmVsb3cnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ3N0YWNrQmVsb3cnLCB2YWx1ZSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihkZWZpbmVQZHNNZWRpYU9iamVjdCk7XG4gIH1cbn1cblxuLyoqIE5hdmlnYXRlIGJldHdlZW4gcGFnZXMgb2YgY29udGVudC4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Bkcy1wYWdpbmF0aW9uJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIFBkc1BhZ2luYXRpb25Db21wb25lbnQgZXh0ZW5kcyBQZHNDb21wb25lbnRCYXNlPFBkc1BhZ2luYXRpb25FbGVtZW50PiB7XG4gIEBJbnB1dCgpIHNldCBocmVmVGVtcGxhdGUodmFsdWU6IFBkc1BhZ2luYXRpb25FbGVtZW50WydocmVmVGVtcGxhdGUnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ2hyZWZUZW1wbGF0ZScsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoKSBzZXQgbGFiZWwodmFsdWU6IFBkc1BhZ2luYXRpb25FbGVtZW50WydsYWJlbCddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnbGFiZWwnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSkgc2V0IHBhZ2UodmFsdWU6IFBkc1BhZ2luYXRpb25FbGVtZW50WydwYWdlJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdwYWdlJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pIHNldCBzaWJsaW5nQ291bnQoXG4gICAgdmFsdWU6IFBkc1BhZ2luYXRpb25FbGVtZW50WydzaWJsaW5nQ291bnQnXSxcbiAgKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnc2libGluZ0NvdW50JywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pIHNldCB0b3RhbFBhZ2VzKHZhbHVlOiBQZHNQYWdpbmF0aW9uRWxlbWVudFsndG90YWxQYWdlcyddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgndG90YWxQYWdlcycsIHZhbHVlKTtcbiAgfVxuICAvKiogQWNjZXNzaWJsZSBuYW1lIG9mIHRoZSBuZXh0IGNvbnRyb2wuIERlZmF1bHQgYE5leHQgcGFnZWAuICovXG4gIEBJbnB1dCgnbmV4dC1sYWJlbCcpIHNldCBuZXh0TGFiZWwodmFsdWU6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLnBkc1NldEF0dHJpYnV0ZSgnbmV4dC1sYWJlbCcsIHZhbHVlKTtcbiAgfVxuICAvKiogQWNjZXNzaWJsZSBuYW1lIG9mIHRoZSBwcmV2aW91cyBjb250cm9sLiBEZWZhdWx0IGBQcmV2aW91cyBwYWdlYC4gKi9cbiAgQElucHV0KCdwcmV2aW91cy1sYWJlbCcpIHNldCBwcmV2aW91c0xhYmVsKHZhbHVlOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5wZHNTZXRBdHRyaWJ1dGUoJ3ByZXZpb3VzLWxhYmVsJywgdmFsdWUpO1xuICB9XG4gIC8qKiBGaXJlZCB3aGVuIHRoZSB1c2VyIHNlbGVjdHMgYSBwYWdlLiBEZXRhaWw6IGB7IHBhZ2UgfWAuICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBwZHNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFxuICAgIEN1c3RvbUV2ZW50PHsgcGFnZTogUGRzUGFnaW5hdGlvbkVsZW1lbnRbJ3BhZ2UnXSB9PlxuICA+KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoZGVmaW5lUGRzUGFnaW5hdGlvbik7XG4gICAgdGhpcy5wZHNGb3J3YXJkKCdwZHMtY2hhbmdlJywgdGhpcy5wZHNDaGFuZ2UpO1xuICB9XG59XG5cbi8qKiBQYW5lbHMgZ3JvdXAgcmVsYXRlZCBjb250ZW50IG9uIGEgdGludGVkIHN1cmZhY2UuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwZHMtcGFuZWwnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgUGRzUGFuZWxDb21wb25lbnQgZXh0ZW5kcyBQZHNDb21wb25lbnRCYXNlPFBkc1BhbmVsRWxlbWVudD4ge1xuICBASW5wdXQoKSBzZXQgaGVhZGluZyh2YWx1ZTogUGRzUGFuZWxFbGVtZW50WydoZWFkaW5nJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdoZWFkaW5nJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pIHNldCBoZWFkaW5nTGV2ZWwodmFsdWU6IFBkc1BhbmVsRWxlbWVudFsnaGVhZGluZ0xldmVsJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdoZWFkaW5nTGV2ZWwnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IHZhcmlhbnQodmFsdWU6IFBkc1BhbmVsRWxlbWVudFsndmFyaWFudCddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgndmFyaWFudCcsIHZhbHVlKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKGRlZmluZVBkc1BhbmVsKTtcbiAgfVxufVxuXG4vKiogT25lIHN0ZXAgb2YgYSBtdWx0aS1zdGVwIHByb2Nlc3MuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwZHMtcHJvZ3Jlc3Mtc3RlcCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBQZHNQcm9ncmVzc1N0ZXBDb21wb25lbnQgZXh0ZW5kcyBQZHNDb21wb25lbnRCYXNlPFBkc1Byb2dyZXNzU3RlcEVsZW1lbnQ+IHtcbiAgQElucHV0KCkgc2V0IHN0YXR1cyh2YWx1ZTogUGRzUHJvZ3Jlc3NTdGVwRWxlbWVudFsnc3RhdHVzJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdzdGF0dXMnLCB2YWx1ZSk7XG4gIH1cbiAgLyoqIEZpcmVkIHdoZW4gYSBjb21wbGV0ZWQgc3RlcCBpcyBhY3RpdmF0ZWQgaW4gYSBjbGlja2FibGUgY29udGFpbmVyLiBEZXRhaWw6IGB7IGluZGV4IH1gLiAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgcGRzU3RlcENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IGluZGV4OiB1bmtub3duIH0+PigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKGRlZmluZVBkc1Byb2dyZXNzU3RlcCk7XG4gICAgdGhpcy5wZHNGb3J3YXJkKCdwZHMtc3RlcC1jbGljaycsIHRoaXMucGRzU3RlcENsaWNrKTtcbiAgfVxufVxuXG4vKiogU2hvd3MgcHJvZ3Jlc3MgdGhyb3VnaCBhIHNlcXVlbmNlIG9mIHN0ZXBzLiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncGRzLXByb2dyZXNzLXN0ZXBzJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIFBkc1Byb2dyZXNzU3RlcHNDb21wb25lbnQgZXh0ZW5kcyBQZHNDb21wb25lbnRCYXNlPFBkc1Byb2dyZXNzU3RlcHNFbGVtZW50PiB7XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzZXQgY2xpY2thYmxlKFxuICAgIHZhbHVlOiBQZHNQcm9ncmVzc1N0ZXBzRWxlbWVudFsnY2xpY2thYmxlJ10sXG4gICkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ2NsaWNrYWJsZScsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KSBzZXQgY3VycmVudCh2YWx1ZTogUGRzUHJvZ3Jlc3NTdGVwc0VsZW1lbnRbJ2N1cnJlbnQnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ2N1cnJlbnQnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IGxhYmVsKHZhbHVlOiBQZHNQcm9ncmVzc1N0ZXBzRWxlbWVudFsnbGFiZWwnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ2xhYmVsJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCgpIHNldCBvcmllbnRhdGlvbih2YWx1ZTogUGRzUHJvZ3Jlc3NTdGVwc0VsZW1lbnRbJ29yaWVudGF0aW9uJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdvcmllbnRhdGlvbicsIHZhbHVlKTtcbiAgfVxuICAvKiogRmlyZWQgd2hlbiBhIGNvbXBsZXRlZCBzdGVwIGlzIGFjdGl2YXRlZC4gRGV0YWlsOiBgeyBpbmRleCB9YC4gKi9cbiAgQE91dHB1dCgpIHJlYWRvbmx5IHBkc1N0ZXBDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBpbmRleDogdW5rbm93biB9Pj4oKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihkZWZpbmVQZHNQcm9ncmVzc1N0ZXBzKTtcbiAgICB0aGlzLnBkc0ZvcndhcmQoJ3Bkcy1zdGVwLWNsaWNrJywgdGhpcy5wZHNTdGVwQ2xpY2spO1xuICB9XG59XG5cbi8qKiBSYWRpbyBvcHRpb24sIHVzZWQgaW5zaWRlIGBwZHMtcmFkaW8tZ3JvdXBgLiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncGRzLXJhZGlvJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIFBkc1JhZGlvQ29tcG9uZW50IGV4dGVuZHMgUGRzQ29tcG9uZW50QmFzZTxQZHNSYWRpb0VsZW1lbnQ+IHtcbiAgLyoqIEN1cnJlbnQgc2VsZWN0aW9uIHN0YXRlIChtYW5hZ2VkIGJ5IHRoZSBncm91cCkuIFRoZSBgY2hlY2tlZGAgYXR0cmlidXRlIGlzIG9ubHkgdGhlIGluaXRpYWwgc3RhdGUuICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzZXQgY2hlY2tlZCh2YWx1ZTogUGRzUmFkaW9FbGVtZW50WydjaGVja2VkJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdjaGVja2VkJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzZXQgZGlzYWJsZWQodmFsdWU6IFBkc1JhZGlvRWxlbWVudFsnZGlzYWJsZWQnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ2Rpc2FibGVkJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCgpIHNldCB2YWx1ZSh2YWx1ZTogUGRzUmFkaW9FbGVtZW50Wyd2YWx1ZSddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgndmFsdWUnLCB2YWx1ZSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihkZWZpbmVQZHNSYWRpbyk7XG4gIH1cbn1cblxuLyoqIEdyb3VwIG9mIG11dHVhbGx5IGV4Y2x1c2l2ZSByYWRpbyBvcHRpb25zLiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncGRzLXJhZGlvLWdyb3VwJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIFBkc1JhZGlvR3JvdXBDb21wb25lbnQgZXh0ZW5kcyBQZHNDb21wb25lbnRCYXNlPFBkc1JhZGlvR3JvdXBFbGVtZW50PiB7XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzZXQgZGlzYWJsZWQodmFsdWU6IFBkc1JhZGlvR3JvdXBFbGVtZW50WydkaXNhYmxlZCddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnZGlzYWJsZWQnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IGVycm9yVGV4dCh2YWx1ZTogUGRzUmFkaW9Hcm91cEVsZW1lbnRbJ2Vycm9yVGV4dCddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnZXJyb3JUZXh0JywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCgpIHNldCBoZWxwZXJUZXh0KHZhbHVlOiBQZHNSYWRpb0dyb3VwRWxlbWVudFsnaGVscGVyVGV4dCddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnaGVscGVyVGV4dCcsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoKSBzZXQgbGFiZWwodmFsdWU6IFBkc1JhZGlvR3JvdXBFbGVtZW50WydsYWJlbCddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnbGFiZWwnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IG5hbWUodmFsdWU6IFBkc1JhZGlvR3JvdXBFbGVtZW50WyduYW1lJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCduYW1lJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCgpIHNldCBvcmllbnRhdGlvbih2YWx1ZTogUGRzUmFkaW9Hcm91cEVsZW1lbnRbJ29yaWVudGF0aW9uJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdvcmllbnRhdGlvbicsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc2V0IHJlcXVpcmVkKHZhbHVlOiBQZHNSYWRpb0dyb3VwRWxlbWVudFsncmVxdWlyZWQnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ3JlcXVpcmVkJywgdmFsdWUpO1xuICB9XG4gIC8qKiBDdXJyZW50bHkgc2VsZWN0ZWQgdmFsdWUgKCcnIHdoZW4gbm9uZSkuICovXG4gIEBJbnB1dCgpIHNldCB2YWx1ZSh2YWx1ZTogUGRzUmFkaW9Hcm91cEVsZW1lbnRbJ3ZhbHVlJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCd2YWx1ZScsIHZhbHVlKTtcbiAgfVxuICAvKiogRmlyZWQgd2hlbiB0aGUgc2VsZWN0aW9uIGNoYW5nZXMgYnkgdXNlciBpbnRlcmFjdGlvbi4gRGV0YWlsOiBgeyB2YWx1ZSB9YC4gKi9cbiAgQE91dHB1dCgpIHJlYWRvbmx5IHBkc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8XG4gICAgQ3VzdG9tRXZlbnQ8eyB2YWx1ZTogUGRzUmFkaW9Hcm91cEVsZW1lbnRbJ3ZhbHVlJ10gfT5cbiAgPigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKGRlZmluZVBkc1JhZGlvR3JvdXApO1xuICAgIHRoaXMucGRzRm9yd2FyZCgncGRzLWNoYW5nZScsIHRoaXMucGRzQ2hhbmdlKTtcbiAgfVxufVxuXG4vKiogU2xpZGVyIGZvciBjaG9vc2luZyBhIG51bWJlciB3aXRoaW4gYSByYW5nZS4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Bkcy1yYW5nZXNsaWRlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBQZHNSYW5nZXNsaWRlckNvbXBvbmVudCBleHRlbmRzIFBkc0NvbXBvbmVudEJhc2U8UGRzUmFuZ2VzbGlkZXJFbGVtZW50PiB7XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzZXQgZGlzYWJsZWQodmFsdWU6IFBkc1Jhbmdlc2xpZGVyRWxlbWVudFsnZGlzYWJsZWQnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ2Rpc2FibGVkJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCgpIHNldCBlcnJvclRleHQodmFsdWU6IFBkc1Jhbmdlc2xpZGVyRWxlbWVudFsnZXJyb3JUZXh0J10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdlcnJvclRleHQnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IGhlbHBlclRleHQodmFsdWU6IFBkc1Jhbmdlc2xpZGVyRWxlbWVudFsnaGVscGVyVGV4dCddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnaGVscGVyVGV4dCcsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoKSBzZXQgbGFiZWwodmFsdWU6IFBkc1Jhbmdlc2xpZGVyRWxlbWVudFsnbGFiZWwnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ2xhYmVsJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCgpIHNldCBuYW1lKHZhbHVlOiBQZHNSYW5nZXNsaWRlckVsZW1lbnRbJ25hbWUnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ25hbWUnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHNldCByZXF1aXJlZCh2YWx1ZTogUGRzUmFuZ2VzbGlkZXJFbGVtZW50WydyZXF1aXJlZCddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgncmVxdWlyZWQnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHNldCBzaG93VmFsdWUodmFsdWU6IFBkc1Jhbmdlc2xpZGVyRWxlbWVudFsnc2hvd1ZhbHVlJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdzaG93VmFsdWUnLCB2YWx1ZSk7XG4gIH1cbiAgLyoqIEN1cnJlbnQgdmFsdWUuICovXG4gIEBJbnB1dCgpIHNldCB2YWx1ZSh2YWx1ZTogUGRzUmFuZ2VzbGlkZXJFbGVtZW50Wyd2YWx1ZSddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgndmFsdWUnLCB2YWx1ZSk7XG4gIH1cbiAgLyoqIE1heGltdW0uIERlZmF1bHQgMTAwLiAqL1xuICBASW5wdXQoKSBzZXQgbWF4KHZhbHVlOiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5wZHNTZXRBdHRyaWJ1dGUoJ21heCcsIHZhbHVlKTtcbiAgfVxuICAvKiogTWluaW11bS4gRGVmYXVsdCAwLiAqL1xuICBASW5wdXQoKSBzZXQgbWluKHZhbHVlOiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5wZHNTZXRBdHRyaWJ1dGUoJ21pbicsIHZhbHVlKTtcbiAgfVxuICAvKiogU3RlcC4gRGVmYXVsdCAxLiAqL1xuICBASW5wdXQoKSBzZXQgc3RlcCh2YWx1ZTogbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMucGRzU2V0QXR0cmlidXRlKCdzdGVwJywgdmFsdWUpO1xuICB9XG4gIC8qKiBGaXJlZCB3aGlsZSBkcmFnZ2luZy4gRGV0YWlsOiBgeyB2YWx1ZSB9YC4gKi9cbiAgQE91dHB1dCgpIHJlYWRvbmx5IHBkc0lucHV0ID0gbmV3IEV2ZW50RW1pdHRlcjxcbiAgICBDdXN0b21FdmVudDx7IHZhbHVlOiBQZHNSYW5nZXNsaWRlckVsZW1lbnRbJ3ZhbHVlJ10gfT5cbiAgPigpO1xuICAvKiogRmlyZWQgd2hlbiB0aGUgdmFsdWUgaXMgY29tbWl0dGVkLiBEZXRhaWw6IGB7IHZhbHVlIH1gLiAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgcGRzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxcbiAgICBDdXN0b21FdmVudDx7IHZhbHVlOiBQZHNSYW5nZXNsaWRlckVsZW1lbnRbJ3ZhbHVlJ10gfT5cbiAgPigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKGRlZmluZVBkc1Jhbmdlc2xpZGVyKTtcbiAgICB0aGlzLnBkc0ZvcndhcmQoJ3Bkcy1pbnB1dCcsIHRoaXMucGRzSW5wdXQpO1xuICAgIHRoaXMucGRzRm9yd2FyZCgncGRzLWNoYW5nZScsIHRoaXMucGRzQ2hhbmdlKTtcbiAgfVxufVxuXG4vKiogRHJvcGRvd24gZm9yIGNob29zaW5nIG9uZSBvcHRpb24gZnJvbSBhIGxpc3QuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwZHMtc2VsZWN0JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIFBkc1NlbGVjdENvbXBvbmVudCBleHRlbmRzIFBkc0NvbXBvbmVudEJhc2U8UGRzU2VsZWN0RWxlbWVudD4ge1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc2V0IGRpc2FibGVkKHZhbHVlOiBQZHNTZWxlY3RFbGVtZW50WydkaXNhYmxlZCddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnZGlzYWJsZWQnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IGVycm9yVGV4dCh2YWx1ZTogUGRzU2VsZWN0RWxlbWVudFsnZXJyb3JUZXh0J10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdlcnJvclRleHQnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IGhlbHBlclRleHQodmFsdWU6IFBkc1NlbGVjdEVsZW1lbnRbJ2hlbHBlclRleHQnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ2hlbHBlclRleHQnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IGxhYmVsKHZhbHVlOiBQZHNTZWxlY3RFbGVtZW50WydsYWJlbCddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnbGFiZWwnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IG5hbWUodmFsdWU6IFBkc1NlbGVjdEVsZW1lbnRbJ25hbWUnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ25hbWUnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IHBsYWNlaG9sZGVyKHZhbHVlOiBQZHNTZWxlY3RFbGVtZW50WydwbGFjZWhvbGRlciddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgncGxhY2Vob2xkZXInLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHNldCByZXF1aXJlZCh2YWx1ZTogUGRzU2VsZWN0RWxlbWVudFsncmVxdWlyZWQnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ3JlcXVpcmVkJywgdmFsdWUpO1xuICB9XG4gIC8qKiBDdXJyZW50IHZhbHVlLiAqL1xuICBASW5wdXQoKSBzZXQgdmFsdWUodmFsdWU6IFBkc1NlbGVjdEVsZW1lbnRbJ3ZhbHVlJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCd2YWx1ZScsIHZhbHVlKTtcbiAgfVxuICAvKiogRmlyZWQgd2hlbiB0aGUgc2VsZWN0aW9uIGNoYW5nZXMuIERldGFpbDogYHsgdmFsdWUgfWAuICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBwZHNJbnB1dCA9IG5ldyBFdmVudEVtaXR0ZXI8XG4gICAgQ3VzdG9tRXZlbnQ8eyB2YWx1ZTogUGRzU2VsZWN0RWxlbWVudFsndmFsdWUnXSB9PlxuICA+KCk7XG4gIC8qKiBGaXJlZCB3aGVuIHRoZSBzZWxlY3Rpb24gaXMgY29tbWl0dGVkLiBEZXRhaWw6IGB7IHZhbHVlIH1gLiAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgcGRzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxcbiAgICBDdXN0b21FdmVudDx7IHZhbHVlOiBQZHNTZWxlY3RFbGVtZW50Wyd2YWx1ZSddIH0+XG4gID4oKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihkZWZpbmVQZHNTZWxlY3QpO1xuICAgIHRoaXMucGRzRm9yd2FyZCgncGRzLWlucHV0JywgdGhpcy5wZHNJbnB1dCk7XG4gICAgdGhpcy5wZHNGb3J3YXJkKCdwZHMtY2hhbmdlJywgdGhpcy5wZHNDaGFuZ2UpO1xuICB9XG59XG5cbi8qKiBTaGVldHMgc2xpZGUgaW4gZnJvbSBhbiBlZGdlIG9mIHRoZSBzY3JlZW4gd2l0aCBzZWNvbmRhcnkgY29udGVudC4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Bkcy1zaGVldCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBQZHNTaGVldENvbXBvbmVudCBleHRlbmRzIFBkc0NvbXBvbmVudEJhc2U8UGRzU2hlZXRFbGVtZW50PiB7XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzZXQgZGlzbWlzc2libGUodmFsdWU6IFBkc1NoZWV0RWxlbWVudFsnZGlzbWlzc2libGUnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ2Rpc21pc3NpYmxlJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCgpIHNldCBoZWFkaW5nKHZhbHVlOiBQZHNTaGVldEVsZW1lbnRbJ2hlYWRpbmcnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ2hlYWRpbmcnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHNldCBvcGVuKHZhbHVlOiBQZHNTaGVldEVsZW1lbnRbJ29wZW4nXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ29wZW4nLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IHBsYWNlbWVudCh2YWx1ZTogUGRzU2hlZXRFbGVtZW50WydwbGFjZW1lbnQnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ3BsYWNlbWVudCcsIHZhbHVlKTtcbiAgfVxuICAvKiogVmFsdWUgcmVwb3J0ZWQgYnkgYHBkcy1jbG9zZWAuICovXG4gIEBJbnB1dCgpIHNldCByZXR1cm5WYWx1ZSh2YWx1ZTogUGRzU2hlZXRFbGVtZW50WydyZXR1cm5WYWx1ZSddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgncmV0dXJuVmFsdWUnLCB2YWx1ZSk7XG4gIH1cbiAgLyoqIEFjY2Vzc2libGUgbGFiZWwgb2YgdGhlIGNsb3NlIGJ1dHRvbi4gRGVmYXVsdCBgQ2xvc2VgLiAqL1xuICBASW5wdXQoJ2Nsb3NlLWxhYmVsJykgc2V0IGNsb3NlTGFiZWwodmFsdWU6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLnBkc1NldEF0dHJpYnV0ZSgnY2xvc2UtbGFiZWwnLCB2YWx1ZSk7XG4gIH1cbiAgLyoqIEZpcmVkIGFmdGVyIHRoZSBzaGVldCBvcGVuZWQuICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBwZHNPcGVuID0gbmV3IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx1bmtub3duPj4oKTtcbiAgLyoqIEZpcmVkIGFmdGVyIHRoZSBzaGVldCBjbG9zZWQuIERldGFpbDogYHsgcmV0dXJuVmFsdWUgfWAuICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBwZHNDbG9zZSA9IG5ldyBFdmVudEVtaXR0ZXI8XG4gICAgQ3VzdG9tRXZlbnQ8eyByZXR1cm5WYWx1ZTogUGRzU2hlZXRFbGVtZW50WydyZXR1cm5WYWx1ZSddIH0+XG4gID4oKTtcbiAgLyoqIENhbmNlbGFibGU7IGZpcmVkIHdoZW4gRXNjYXBlLCBiYWNrZHJvcCBvciBjbG9zZSBidXR0b24gYXNrcyB0byBjbG9zZS4gRGV0YWlsOiBgeyByZWFzb24gfWAuICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBwZHNSZXF1ZXN0Q2xvc2UgPSBuZXcgRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgcmVhc29uOiB1bmtub3duIH0+PigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKGRlZmluZVBkc1NoZWV0KTtcbiAgICB0aGlzLnBkc0ZvcndhcmQoJ3Bkcy1vcGVuJywgdGhpcy5wZHNPcGVuKTtcbiAgICB0aGlzLnBkc0ZvcndhcmQoJ3Bkcy1jbG9zZScsIHRoaXMucGRzQ2xvc2UpO1xuICAgIHRoaXMucGRzRm9yd2FyZCgncGRzLXJlcXVlc3QtY2xvc2UnLCB0aGlzLnBkc1JlcXVlc3RDbG9zZSk7XG4gIH1cbn1cblxuLyoqIFZlcnRpY2FsIG5hdmlnYXRpb24gY29udGFpbmVyIGZvciBgcGRzLXNpZGViYXItaXRlbWAgYW5kIGBwZHMtc2lkZWJhci1ncm91cGAuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwZHMtc2lkZWJhcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBQZHNTaWRlYmFyQ29tcG9uZW50IGV4dGVuZHMgUGRzQ29tcG9uZW50QmFzZTxQZHNTaWRlYmFyRWxlbWVudD4ge1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc2V0IGNvbGxhcHNlZCh2YWx1ZTogUGRzU2lkZWJhckVsZW1lbnRbJ2NvbGxhcHNlZCddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnY29sbGFwc2VkJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCgpIHNldCBsYWJlbCh2YWx1ZTogUGRzU2lkZWJhckVsZW1lbnRbJ2xhYmVsJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdsYWJlbCcsIHZhbHVlKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKGRlZmluZVBkc1NpZGViYXIpO1xuICB9XG59XG5cbi8qKiBBIGNvbGxhcHNpYmxlIHNlY3Rpb24gb2YgYHBkcy1zaWRlYmFyLWl0ZW1gcy4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Bkcy1zaWRlYmFyLWdyb3VwJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIFBkc1NpZGViYXJHcm91cENvbXBvbmVudCBleHRlbmRzIFBkc0NvbXBvbmVudEJhc2U8UGRzU2lkZWJhckdyb3VwRWxlbWVudD4ge1xuICAvKiogU2V0IGJ5IHRoZSBwYXJlbnQgc2lkZWJhcjogaWNvbi1vbmx5IG1vZGUgc2hvd3MgaXRlbXMgZGlyZWN0bHkgd2l0aG91dCBhIGhlYWRpbmcuICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzZXQgY29sbGFwc2VkKFxuICAgIHZhbHVlOiBQZHNTaWRlYmFyR3JvdXBFbGVtZW50Wydjb2xsYXBzZWQnXSxcbiAgKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnY29sbGFwc2VkJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzZXQgZXhwYW5kZWQodmFsdWU6IFBkc1NpZGViYXJHcm91cEVsZW1lbnRbJ2V4cGFuZGVkJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdleHBhbmRlZCcsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoKSBzZXQgbGFiZWwodmFsdWU6IFBkc1NpZGViYXJHcm91cEVsZW1lbnRbJ2xhYmVsJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdsYWJlbCcsIHZhbHVlKTtcbiAgfVxuICAvKiogRmlyZWQgd2hlbiB0aGUgaGVhZGluZyBpcyB0b2dnbGVkLiBEZXRhaWw6IGB7IGV4cGFuZGVkIH1gLiAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgcGRzVG9nZ2xlID0gbmV3IEV2ZW50RW1pdHRlcjxcbiAgICBDdXN0b21FdmVudDx7IGV4cGFuZGVkOiBQZHNTaWRlYmFyR3JvdXBFbGVtZW50WydleHBhbmRlZCddIH0+XG4gID4oKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihkZWZpbmVQZHNTaWRlYmFyR3JvdXApO1xuICAgIHRoaXMucGRzRm9yd2FyZCgncGRzLXRvZ2dsZScsIHRoaXMucGRzVG9nZ2xlKTtcbiAgfVxufVxuXG4vKiogQW4gaXRlbSBpbnNpZGUgYHBkcy1zaWRlYmFyYC4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Bkcy1zaWRlYmFyLWl0ZW0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgUGRzU2lkZWJhckl0ZW1Db21wb25lbnQgZXh0ZW5kcyBQZHNDb21wb25lbnRCYXNlPFBkc1NpZGViYXJJdGVtRWxlbWVudD4ge1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc2V0IGFjdGl2ZSh2YWx1ZTogUGRzU2lkZWJhckl0ZW1FbGVtZW50WydhY3RpdmUnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ2FjdGl2ZScsIHZhbHVlKTtcbiAgfVxuICAvKiogU2V0IGJ5IHRoZSBwYXJlbnQgc2lkZWJhci4gKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHNldCBjb2xsYXBzZWQodmFsdWU6IFBkc1NpZGViYXJJdGVtRWxlbWVudFsnY29sbGFwc2VkJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdjb2xsYXBzZWQnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHNldCBkaXNhYmxlZCh2YWx1ZTogUGRzU2lkZWJhckl0ZW1FbGVtZW50WydkaXNhYmxlZCddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnZGlzYWJsZWQnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IGhyZWYodmFsdWU6IFBkc1NpZGViYXJJdGVtRWxlbWVudFsnaHJlZiddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnaHJlZicsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoKSBzZXQgbGFiZWwodmFsdWU6IFBkc1NpZGViYXJJdGVtRWxlbWVudFsnbGFiZWwnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ2xhYmVsJywgdmFsdWUpO1xuICB9XG4gIC8qKiBGaXJlZCB3aGVuIGEgYnV0dG9uLXR5cGUgaXRlbSBpcyBhY3RpdmF0ZWQuICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBwZHNDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dW5rbm93bj4+KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoZGVmaW5lUGRzU2lkZWJhckl0ZW0pO1xuICAgIHRoaXMucGRzRm9yd2FyZCgncGRzLWNsaWNrJywgdGhpcy5wZHNDbGljayk7XG4gIH1cbn1cblxuLyoqIExldHMga2V5Ym9hcmQgdXNlcnMgc2tpcCByZXBlYXRlZCBjb250ZW50LiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncGRzLXNraXAtbGluaycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBQZHNTa2lwTGlua0NvbXBvbmVudCBleHRlbmRzIFBkc0NvbXBvbmVudEJhc2U8UGRzU2tpcExpbmtFbGVtZW50PiB7XG4gIEBJbnB1dCgpIHNldCBocmVmKHZhbHVlOiBQZHNTa2lwTGlua0VsZW1lbnRbJ2hyZWYnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ2hyZWYnLCB2YWx1ZSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihkZWZpbmVQZHNTa2lwTGluayk7XG4gIH1cbn1cblxuLyoqIFNsYWJzIGRpdmlkZSBhIHBhZ2UgaW50byBmdWxsLXdpZHRoIHNlY3Rpb25zLiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncGRzLXNsYWInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgUGRzU2xhYkNvbXBvbmVudCBleHRlbmRzIFBkc0NvbXBvbmVudEJhc2U8UGRzU2xhYkVsZW1lbnQ+IHtcbiAgQElucHV0KCkgc2V0IHNpemUodmFsdWU6IFBkc1NsYWJFbGVtZW50WydzaXplJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdzaXplJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCgpIHNldCB2YXJpYW50KHZhbHVlOiBQZHNTbGFiRWxlbWVudFsndmFyaWFudCddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgndmFyaWFudCcsIHZhbHVlKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKGRlZmluZVBkc1NsYWIpO1xuICB9XG59XG5cbi8qKiBTaG93cyBhIHN0YXR1cyBhcyBhIGNvbG91cmVkIGRvdCBwbHVzIGxhYmVsLiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncGRzLXN0YXR1cycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBQZHNTdGF0dXNDb21wb25lbnQgZXh0ZW5kcyBQZHNDb21wb25lbnRCYXNlPFBkc1N0YXR1c0VsZW1lbnQ+IHtcbiAgQElucHV0KCkgc2V0IHN0YXR1cyh2YWx1ZTogUGRzU3RhdHVzRWxlbWVudFsnc3RhdHVzJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdzdGF0dXMnLCB2YWx1ZSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihkZWZpbmVQZHNTdGF0dXMpO1xuICB9XG59XG5cbi8qKiBUYWIgYnV0dG9uIG9mIGEgdGFiIGxpc3QuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwZHMtdGFiJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIFBkc1RhYkNvbXBvbmVudCBleHRlbmRzIFBkc0NvbXBvbmVudEJhc2U8UGRzVGFiRWxlbWVudD4ge1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc2V0IGRpc2FibGVkKHZhbHVlOiBQZHNUYWJFbGVtZW50WydkaXNhYmxlZCddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnZGlzYWJsZWQnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IHBhbmVsKHZhbHVlOiBQZHNUYWJFbGVtZW50WydwYW5lbCddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgncGFuZWwnLCB2YWx1ZSk7XG4gIH1cbiAgLyoqIFRydWUgb25jZSB0aGUgdGFiIGlzIGNvbm5lY3RlZDsgbGV0cyB0aGUgcGFyZW50IGlnbm9yZSB0YWJzIHRoYXQgYXJlIG5vdCBpbml0aWFsaXNlZCB5ZXQuICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzZXQgcmVhZHkodmFsdWU6IFBkc1RhYkVsZW1lbnRbJ3JlYWR5J10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdyZWFkeScsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc2V0IHNlbGVjdGVkKHZhbHVlOiBQZHNUYWJFbGVtZW50WydzZWxlY3RlZCddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnc2VsZWN0ZWQnLCB2YWx1ZSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihkZWZpbmVQZHNUYWIpO1xuICB9XG59XG5cbi8qKiBQYW5lbCBzaG93biB3aGVuIGl0cyB0YWIgaXMgc2VsZWN0ZWQuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwZHMtdGFiLXBhbmVsJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIFBkc1RhYlBhbmVsQ29tcG9uZW50IGV4dGVuZHMgUGRzQ29tcG9uZW50QmFzZTxQZHNUYWJQYW5lbEVsZW1lbnQ+IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoZGVmaW5lUGRzVGFiUGFuZWwpO1xuICB9XG59XG5cbi8qKiBTdHlsZWQsIHNjcm9sbGFibGUgYW5kIG9wdGlvbmFsbHkgc29ydGFibGUgZGF0YSB0YWJsZS4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Bkcy10YWJsZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBQZHNUYWJsZUNvbXBvbmVudCBleHRlbmRzIFBkc0NvbXBvbmVudEJhc2U8UGRzVGFibGVFbGVtZW50PiB7XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzZXQgYm9yZGVyZWQodmFsdWU6IFBkc1RhYmxlRWxlbWVudFsnYm9yZGVyZWQnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ2JvcmRlcmVkJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzZXQgY29tcGFjdCh2YWx1ZTogUGRzVGFibGVFbGVtZW50Wydjb21wYWN0J10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdjb21wYWN0JywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCgpIHNldCBsYWJlbCh2YWx1ZTogUGRzVGFibGVFbGVtZW50WydsYWJlbCddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnbGFiZWwnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHNldCBzdGlja3lIZWFkZXIodmFsdWU6IFBkc1RhYmxlRWxlbWVudFsnc3RpY2t5SGVhZGVyJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdzdGlja3lIZWFkZXInLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHNldCBzdHJpcGVkKHZhbHVlOiBQZHNUYWJsZUVsZW1lbnRbJ3N0cmlwZWQnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ3N0cmlwZWQnLCB2YWx1ZSk7XG4gIH1cbiAgLyoqIENTUyBtYXgtaGVpZ2h0IG9mIHRoZSBzY3JvbGwgcmVnaW9uIChlLmcuIGAyMHJlbWApLiAqL1xuICBASW5wdXQoJ21heC1oZWlnaHQnKSBzZXQgbWF4SGVpZ2h0KHZhbHVlOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5wZHNTZXRBdHRyaWJ1dGUoJ21heC1oZWlnaHQnLCB2YWx1ZSk7XG4gIH1cbiAgLyoqIEZpcmVkIGFmdGVyIGEgY29sdW1uIGlzIHNvcnRlZC4gRGV0YWlsOiBgeyBjb2x1bW4sIGRpcmVjdGlvbiB9YC4gKi9cbiAgQE91dHB1dCgpIHJlYWRvbmx5IHBkc1NvcnQgPSBuZXcgRXZlbnRFbWl0dGVyPFxuICAgIEN1c3RvbUV2ZW50PHsgY29sdW1uOiB1bmtub3duOyBkaXJlY3Rpb246IHVua25vd24gfT5cbiAgPigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKGRlZmluZVBkc1RhYmxlKTtcbiAgICB0aGlzLnBkc0ZvcndhcmQoJ3Bkcy1zb3J0JywgdGhpcy5wZHNTb3J0KTtcbiAgfVxufVxuXG4vKiogVGFicyBzd2l0Y2ggYmV0d2VlbiByZWxhdGVkIHBhbmVscy4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Bkcy10YWJzJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIFBkc1RhYnNDb21wb25lbnQgZXh0ZW5kcyBQZHNDb21wb25lbnRCYXNlPFBkc1RhYnNFbGVtZW50PiB7XG4gIEBJbnB1dCgpIHNldCBsYWJlbCh2YWx1ZTogUGRzVGFic0VsZW1lbnRbJ2xhYmVsJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdsYWJlbCcsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoKSBzZXQgb3JpZW50YXRpb24odmFsdWU6IFBkc1RhYnNFbGVtZW50WydvcmllbnRhdGlvbiddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnb3JpZW50YXRpb24nLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IHZhbHVlKHZhbHVlOiBQZHNUYWJzRWxlbWVudFsndmFsdWUnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ3ZhbHVlJywgdmFsdWUpO1xuICB9XG4gIC8qKiBGaXJlZCB3aGVuIHRoZSB1c2VyIHNlbGVjdHMgYSB0YWIuIERldGFpbDogYHsgaW5kZXgsIHZhbHVlIH1gICh2YWx1ZSBpcyB0aGUgcGFuZWwgaWQpLiAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgcGRzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxcbiAgICBDdXN0b21FdmVudDx7IGluZGV4OiB1bmtub3duOyB2YWx1ZTogUGRzVGFic0VsZW1lbnRbJ3ZhbHVlJ10gfT5cbiAgPigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKGRlZmluZVBkc1RhYnMpO1xuICAgIHRoaXMucGRzRm9yd2FyZCgncGRzLWNoYW5nZScsIHRoaXMucGRzQ2hhbmdlKTtcbiAgfVxufVxuXG4vKiogVGFncyBsYWJlbCBvciBjYXRlZ29yaXNlIGNvbnRlbnQuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwZHMtdGFnJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIFBkc1RhZ0NvbXBvbmVudCBleHRlbmRzIFBkc0NvbXBvbmVudEJhc2U8UGRzVGFnRWxlbWVudD4ge1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc2V0IHJlbW92YWJsZSh2YWx1ZTogUGRzVGFnRWxlbWVudFsncmVtb3ZhYmxlJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdyZW1vdmFibGUnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IHNpemUodmFsdWU6IFBkc1RhZ0VsZW1lbnRbJ3NpemUnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ3NpemUnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IHZhcmlhbnQodmFsdWU6IFBkc1RhZ0VsZW1lbnRbJ3ZhcmlhbnQnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ3ZhcmlhbnQnLCB2YWx1ZSk7XG4gIH1cbiAgLyoqIEZpcmVkIChjYW5jZWxhYmxlKSB3aGVuIHRoZSByZW1vdmUgYnV0dG9uIGlzIGFjdGl2YXRlZC4gVGhlIHRhZyByZW1vdmVzIGl0c2VsZiB1bmxlc3MgcHJldmVudGVkLiAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgcGRzUmVtb3ZlID0gbmV3IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx1bmtub3duPj4oKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihkZWZpbmVQZHNUYWcpO1xuICAgIHRoaXMucGRzRm9yd2FyZCgncGRzLXJlbW92ZScsIHRoaXMucGRzUmVtb3ZlKTtcbiAgfVxufVxuXG4vKiogVG9hc3RzIHNob3cgc2hvcnQtbGl2ZWQsIG5vbi1ibG9ja2luZyBmZWVkYmFjay4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Bkcy10b2FzdCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBQZHNUb2FzdENvbXBvbmVudCBleHRlbmRzIFBkc0NvbXBvbmVudEJhc2U8UGRzVG9hc3RFbGVtZW50PiB7XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzZXQgZGlzbWlzc2libGUodmFsdWU6IFBkc1RvYXN0RWxlbWVudFsnZGlzbWlzc2libGUnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ2Rpc21pc3NpYmxlJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pIHNldCBkdXJhdGlvbih2YWx1ZTogUGRzVG9hc3RFbGVtZW50WydkdXJhdGlvbiddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnZHVyYXRpb24nLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IGhlYWRpbmcodmFsdWU6IFBkc1RvYXN0RWxlbWVudFsnaGVhZGluZyddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnaGVhZGluZycsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoKSBzZXQgdmFyaWFudCh2YWx1ZTogUGRzVG9hc3RFbGVtZW50Wyd2YXJpYW50J10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCd2YXJpYW50JywgdmFsdWUpO1xuICB9XG4gIC8qKiBBY2Nlc3NpYmxlIGxhYmVsIG9mIHRoZSBjbG9zZSBidXR0b24uIERlZmF1bHQgYERpc21pc3NgLiAqL1xuICBASW5wdXQoJ2Nsb3NlLWxhYmVsJykgc2V0IGNsb3NlTGFiZWwodmFsdWU6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLnBkc1NldEF0dHJpYnV0ZSgnY2xvc2UtbGFiZWwnLCB2YWx1ZSk7XG4gIH1cbiAgLyoqIEZpcmVkIGJlZm9yZSB0aGUgdG9hc3QgaXMgcmVtb3ZlZCAoY2FuY2VsYWJsZSkuIERldGFpbDogYHsgcmVhc29uOiAndGltZW91dCcgfCAnY2xvc2UtYnV0dG9uJyB8ICdwcm9ncmFtbWF0aWMnIH1gLiAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgcGRzRGlzbWlzcyA9IG5ldyBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+PigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKGRlZmluZVBkc1RvYXN0KTtcbiAgICB0aGlzLnBkc0ZvcndhcmQoJ3Bkcy1kaXNtaXNzJywgdGhpcy5wZHNEaXNtaXNzKTtcbiAgfVxufVxuXG4vKiogQ29udGFpbmVyIHRoYXQgc3RhY2tzIGFuZCBhbm5vdW5jZXMgYHBkcy10b2FzdGAgZWxlbWVudHMuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwZHMtdG9hc3QtcmVnaW9uJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIFBkc1RvYXN0UmVnaW9uQ29tcG9uZW50IGV4dGVuZHMgUGRzQ29tcG9uZW50QmFzZTxQZHNUb2FzdFJlZ2lvbkVsZW1lbnQ+IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoZGVmaW5lQWxsKTtcbiAgfVxufVxuXG4vKiogU3dpdGNoIGZvciBpbW1lZGlhdGVseS1hcHBsaWVkIG9uL29mZiBzZXR0aW5ncy4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Bkcy10b2dnbGVib3gnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgUGRzVG9nZ2xlYm94Q29tcG9uZW50IGV4dGVuZHMgUGRzQ29tcG9uZW50QmFzZTxQZHNUb2dnbGVib3hFbGVtZW50PiB7XG4gIC8qKiBDdXJyZW50IHN0YXRlICh0aGUgYXR0cmlidXRlIGlzIHRoZSBpbml0aWFsIHN0YXRlKS4gKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHNldCBjaGVja2VkKHZhbHVlOiBQZHNUb2dnbGVib3hFbGVtZW50WydjaGVja2VkJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdjaGVja2VkJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzZXQgZGlzYWJsZWQodmFsdWU6IFBkc1RvZ2dsZWJveEVsZW1lbnRbJ2Rpc2FibGVkJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdkaXNhYmxlZCcsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoKSBzZXQgZXJyb3JUZXh0KHZhbHVlOiBQZHNUb2dnbGVib3hFbGVtZW50WydlcnJvclRleHQnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ2Vycm9yVGV4dCcsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoKSBzZXQgaGVscGVyVGV4dCh2YWx1ZTogUGRzVG9nZ2xlYm94RWxlbWVudFsnaGVscGVyVGV4dCddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnaGVscGVyVGV4dCcsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoKSBzZXQgbGFiZWwodmFsdWU6IFBkc1RvZ2dsZWJveEVsZW1lbnRbJ2xhYmVsJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdsYWJlbCcsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoKSBzZXQgbmFtZSh2YWx1ZTogUGRzVG9nZ2xlYm94RWxlbWVudFsnbmFtZSddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnbmFtZScsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc2V0IHJlcXVpcmVkKHZhbHVlOiBQZHNUb2dnbGVib3hFbGVtZW50WydyZXF1aXJlZCddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgncmVxdWlyZWQnLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IHZhbHVlKHZhbHVlOiBQZHNUb2dnbGVib3hFbGVtZW50Wyd2YWx1ZSddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgndmFsdWUnLCB2YWx1ZSk7XG4gIH1cbiAgLyoqIEZpcmVkIHdoZW4gdG9nZ2xlZCBieSB0aGUgdXNlci4gRGV0YWlsOiBgeyBjaGVja2VkLCB2YWx1ZSB9YC4gKi9cbiAgQE91dHB1dCgpIHJlYWRvbmx5IHBkc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8XG4gICAgQ3VzdG9tRXZlbnQ8eyBjaGVja2VkOiBQZHNUb2dnbGVib3hFbGVtZW50WydjaGVja2VkJ107IHZhbHVlOiBQZHNUb2dnbGVib3hFbGVtZW50Wyd2YWx1ZSddIH0+XG4gID4oKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihkZWZpbmVQZHNUb2dnbGVib3gpO1xuICAgIHRoaXMucGRzRm9yd2FyZCgncGRzLWNoYW5nZScsIHRoaXMucGRzQ2hhbmdlKTtcbiAgfVxufVxuXG4vKiogVG9vbHRpcHMgc2hvdyBzaG9ydCBzdXBwbGVtZW50YXJ5IHRleHQgZm9yIGEgY29udHJvbC4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Bkcy10b29sdGlwJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIFBkc1Rvb2x0aXBDb21wb25lbnQgZXh0ZW5kcyBQZHNDb21wb25lbnRCYXNlPFBkc1Rvb2x0aXBFbGVtZW50PiB7XG4gIEBJbnB1dCgpIHNldCBjb250ZW50KHZhbHVlOiBQZHNUb29sdGlwRWxlbWVudFsnY29udGVudCddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnY29udGVudCcsIHZhbHVlKTtcbiAgfVxuICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KSBzZXQgZGVsYXkodmFsdWU6IFBkc1Rvb2x0aXBFbGVtZW50WydkZWxheSddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnZGVsYXknLCB2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IGhpZGUodmFsdWU6IFBkc1Rvb2x0aXBFbGVtZW50WydoaWRlJ10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdoaWRlJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCgpIHNldCBwbGFjZW1lbnQodmFsdWU6IFBkc1Rvb2x0aXBFbGVtZW50WydwbGFjZW1lbnQnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ3BsYWNlbWVudCcsIHZhbHVlKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKGRlZmluZVBkc1Rvb2x0aXApO1xuICB9XG59XG5cbi8qKiBSZXNwb25zaXZlIGFwcGxpY2F0aW9uIGhlYWRlci4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Bkcy10b3BiYXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgUGRzVG9wYmFyQ29tcG9uZW50IGV4dGVuZHMgUGRzQ29tcG9uZW50QmFzZTxQZHNUb3BiYXJFbGVtZW50PiB7XG4gIEBJbnB1dCgpIHNldCBicmVha3BvaW50KHZhbHVlOiBQZHNUb3BiYXJFbGVtZW50WydicmVha3BvaW50J10pIHtcbiAgICB0aGlzLnBkc1NldFByb3BlcnR5KCdicmVha3BvaW50JywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCgpIHNldCBsYWJlbCh2YWx1ZTogUGRzVG9wYmFyRWxlbWVudFsnbGFiZWwnXSkge1xuICAgIHRoaXMucGRzU2V0UHJvcGVydHkoJ2xhYmVsJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCgpIHNldCBtZW51TGFiZWwodmFsdWU6IFBkc1RvcGJhckVsZW1lbnRbJ21lbnVMYWJlbCddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnbWVudUxhYmVsJywgdmFsdWUpO1xuICB9XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzZXQgb3Blbih2YWx1ZTogUGRzVG9wYmFyRWxlbWVudFsnb3BlbiddKSB7XG4gICAgdGhpcy5wZHNTZXRQcm9wZXJ0eSgnb3BlbicsIHZhbHVlKTtcbiAgfVxuICAvKiogRmlyZWQgd2hlbiB0aGUgbWVudSBpcyBvcGVuZWQgb3IgY2xvc2VkLiBEZXRhaWw6IGB7IG9wZW4gfWAuICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBwZHNNZW51VG9nZ2xlID0gbmV3IEV2ZW50RW1pdHRlcjxcbiAgICBDdXN0b21FdmVudDx7IG9wZW46IFBkc1RvcGJhckVsZW1lbnRbJ29wZW4nXSB9PlxuICA+KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoZGVmaW5lUGRzVG9wYmFyKTtcbiAgICB0aGlzLnBkc0ZvcndhcmQoJ3Bkcy1tZW51LXRvZ2dsZScsIHRoaXMucGRzTWVudVRvZ2dsZSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IFBEU19FTEVNRU5UX0NPTVBPTkVOVFMgPSBbXG4gIFBkc0FjY29yZGlvbkNvbXBvbmVudCxcbiAgUGRzQWNjb3JkaW9uSXRlbUNvbXBvbmVudCxcbiAgUGRzQWxlcnRDb21wb25lbnQsXG4gIFBkc0JhZGdlQ29tcG9uZW50LFxuICBQZHNCcmVhZGNydW1iQ29tcG9uZW50LFxuICBQZHNCcmVhZGNydW1iSXRlbUNvbXBvbmVudCxcbiAgUGRzQnV0dG9uQ29tcG9uZW50LFxuICBQZHNDYXJkQ29tcG9uZW50LFxuICBQZHNDaGVja2JveENvbXBvbmVudCxcbiAgUGRzRGF0ZXBpY2tlckNvbXBvbmVudCxcbiAgUGRzRGlhbG9nQ29tcG9uZW50LFxuICBQZHNEcm9wZG93bkNvbXBvbmVudCxcbiAgUGRzRHJvcGRvd25JdGVtQ29tcG9uZW50LFxuICBQZHNFeHBhbmRhYmxlQ29tcG9uZW50LFxuICBQZHNJbnB1dENvbXBvbmVudCxcbiAgUGRzTGlua0NvbXBvbmVudCxcbiAgUGRzTGlzdENvbXBvbmVudCxcbiAgUGRzTGlzdEl0ZW1Db21wb25lbnQsXG4gIFBkc0xvYWRlckNvbXBvbmVudCxcbiAgUGRzTWVkaWFPYmplY3RDb21wb25lbnQsXG4gIFBkc1BhZ2luYXRpb25Db21wb25lbnQsXG4gIFBkc1BhbmVsQ29tcG9uZW50LFxuICBQZHNQcm9ncmVzc1N0ZXBDb21wb25lbnQsXG4gIFBkc1Byb2dyZXNzU3RlcHNDb21wb25lbnQsXG4gIFBkc1JhZGlvQ29tcG9uZW50LFxuICBQZHNSYWRpb0dyb3VwQ29tcG9uZW50LFxuICBQZHNSYW5nZXNsaWRlckNvbXBvbmVudCxcbiAgUGRzU2VsZWN0Q29tcG9uZW50LFxuICBQZHNTaGVldENvbXBvbmVudCxcbiAgUGRzU2lkZWJhckNvbXBvbmVudCxcbiAgUGRzU2lkZWJhckdyb3VwQ29tcG9uZW50LFxuICBQZHNTaWRlYmFySXRlbUNvbXBvbmVudCxcbiAgUGRzU2tpcExpbmtDb21wb25lbnQsXG4gIFBkc1NsYWJDb21wb25lbnQsXG4gIFBkc1N0YXR1c0NvbXBvbmVudCxcbiAgUGRzVGFiQ29tcG9uZW50LFxuICBQZHNUYWJQYW5lbENvbXBvbmVudCxcbiAgUGRzVGFibGVDb21wb25lbnQsXG4gIFBkc1RhYnNDb21wb25lbnQsXG4gIFBkc1RhZ0NvbXBvbmVudCxcbiAgUGRzVG9hc3RDb21wb25lbnQsXG4gIFBkc1RvYXN0UmVnaW9uQ29tcG9uZW50LFxuICBQZHNUb2dnbGVib3hDb21wb25lbnQsXG4gIFBkc1Rvb2x0aXBDb21wb25lbnQsXG4gIFBkc1RvcGJhckNvbXBvbmVudCxcbl0gYXMgY29uc3Q7XG4iXX0=
|