@klippa/ngx-enhancy-forms 18.22.5 → 18.23.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.
|
@@ -4,143 +4,147 @@ import * as i0 from "@angular/core";
|
|
|
4
4
|
const triangleSize = '12px';
|
|
5
5
|
const zIndexStart = 99999999;
|
|
6
6
|
const colors = {
|
|
7
|
-
orange: { noAlpha: 'rgb(255, 128, 0)', withAlpha: 'rgba(255, 128, 0, 0.1254901961)' },
|
|
8
|
-
black: { noAlpha: 'rgb(40, 40, 40)', withAlpha: 'rgba(40, 40, 40, 0.1254901961)' },
|
|
7
|
+
orange: { noAlpha: 'rgb(255, 128, 0)', withAlpha: 'rgba(255, 128, 0, 0.1254901961)', background: 'rgb(255, 255, 255)' },
|
|
8
|
+
black: { noAlpha: 'rgb(40, 40, 40)', withAlpha: 'rgba(40, 40, 40, 0.1254901961)', background: 'rgb(255, 255, 255)' },
|
|
9
|
+
whiteOnBlack: { noAlpha: 'rgb(255, 255, 255)', withAlpha: 'rgba(255, 255, 255, 0.1254901961)', background: 'rgba(12, 17, 29)' },
|
|
9
10
|
};
|
|
10
11
|
export class WithTooltipDirective {
|
|
11
|
-
constructor(el, appRef) {
|
|
12
|
+
constructor(el, appRef, ngZone) {
|
|
12
13
|
this.el = el;
|
|
13
14
|
this.appRef = appRef;
|
|
15
|
+
this.ngZone = ngZone;
|
|
14
16
|
this.klpWithTooltip = 'orange';
|
|
15
17
|
this.position = 'top';
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
this.
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
}
|
|
27
|
-
if (!stringIsSetAndFilled(textToDisplay) && !this.tooltipTemplate) {
|
|
28
|
-
return;
|
|
29
|
-
}
|
|
30
|
-
if (stringIsSetAndFilled(this.tooltipText)) {
|
|
31
|
-
if (this.tooltipText === el.nativeElement.innerText) {
|
|
18
|
+
this.ngZone.runOutsideAngular(() => {
|
|
19
|
+
el.nativeElement.addEventListener('mouseenter', () => {
|
|
20
|
+
if (this.tooltipTemplate) {
|
|
21
|
+
this.hookUpTemplate();
|
|
22
|
+
}
|
|
23
|
+
let textToDisplay;
|
|
24
|
+
if (!this.templateInstance) {
|
|
25
|
+
textToDisplay = this.tooltipText || el.nativeElement.innerText.trim();
|
|
26
|
+
}
|
|
27
|
+
if (!stringIsSetAndFilled(this.klpWithTooltip)) {
|
|
32
28
|
return;
|
|
33
29
|
}
|
|
34
|
-
|
|
35
|
-
else if (this.tooltipTemplate) {
|
|
36
|
-
// no need to check here, just render the template
|
|
37
|
-
}
|
|
38
|
-
else {
|
|
39
|
-
if (el.nativeElement.offsetWidth >= el.nativeElement.scrollWidth) {
|
|
30
|
+
if (!stringIsSetAndFilled(textToDisplay) && !this.tooltipTemplate) {
|
|
40
31
|
return;
|
|
41
32
|
}
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
this.
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
this.div.style.
|
|
73
|
-
this.div.
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
this.
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
this.
|
|
109
|
-
this.
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
this.
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
this.
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
33
|
+
if (stringIsSetAndFilled(this.tooltipText)) {
|
|
34
|
+
if (this.tooltipText === el.nativeElement.innerText) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
else if (this.tooltipTemplate) {
|
|
39
|
+
// no need to check here, just render the template
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
if (el.nativeElement.offsetWidth >= el.nativeElement.scrollWidth) {
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
if (getComputedStyle(el.nativeElement).position === 'static') {
|
|
47
|
+
el.nativeElement.style.position = 'relative';
|
|
48
|
+
}
|
|
49
|
+
this.div = document.createElement('div');
|
|
50
|
+
this.div.style.zIndex = `${zIndexStart + 2}`;
|
|
51
|
+
this.div.style.color = `${colors[this.klpWithTooltip].noAlpha}`;
|
|
52
|
+
this.div.style.backgroundColor = `${colors[this.klpWithTooltip].background}`;
|
|
53
|
+
this.div.style.position = 'fixed';
|
|
54
|
+
this.div.style.left = `${el.nativeElement.getBoundingClientRect().x}px`;
|
|
55
|
+
if (this.position === 'top') {
|
|
56
|
+
this.div.style.top = `${el.nativeElement.getBoundingClientRect().y}px`;
|
|
57
|
+
this.div.style.transform = `translate(calc(-100% + ${el.nativeElement.getBoundingClientRect().width}px), calc(-100% - 0.3rem))`;
|
|
58
|
+
}
|
|
59
|
+
else if (this.position === 'bottom') {
|
|
60
|
+
this.div.style.top = `${el.nativeElement.getBoundingClientRect().y + el.nativeElement.getBoundingClientRect().height}px`;
|
|
61
|
+
this.div.style.transform = `translate(calc(-100% + ${el.nativeElement.getBoundingClientRect().width}px), calc(0% + 0.3rem))`;
|
|
62
|
+
}
|
|
63
|
+
this.div.style.maxWidth = '200px';
|
|
64
|
+
this.div.style.whiteSpace = 'break-spaces';
|
|
65
|
+
this.div.style.border = `1px solid ${colors[this.klpWithTooltip].withAlpha}`;
|
|
66
|
+
this.div.style.boxShadow = `2px 3px 10px 0px ${colors[this.klpWithTooltip].withAlpha}`;
|
|
67
|
+
this.div.style.padding = '0.3rem 0.5rem';
|
|
68
|
+
this.div.style.boxSizing = 'border-box';
|
|
69
|
+
this.div.style.borderRadius = '3px';
|
|
70
|
+
if (stringIsSetAndFilled(textToDisplay)) {
|
|
71
|
+
this.div.textContent = textToDisplay;
|
|
72
|
+
}
|
|
73
|
+
else if (this.templateInstance) {
|
|
74
|
+
this.div.style.maxWidth = 'none';
|
|
75
|
+
this.div.style.visibility = 'hidden';
|
|
76
|
+
this.div.appendChild(this.templateInstance);
|
|
77
|
+
setTimeout(() => {
|
|
78
|
+
const color = getComputedStyle(this.templateInstance).backgroundColor || getComputedStyle(this.templateInstance).background;
|
|
79
|
+
this.div.style.backgroundColor = color;
|
|
80
|
+
this.div.style.visibility = 'visible';
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
el.nativeElement.prepend(this.div);
|
|
84
|
+
this.triangle = document.createElement('div');
|
|
85
|
+
this.triangle.style.zIndex = `${zIndexStart + 1}`;
|
|
86
|
+
this.triangle.style.position = 'fixed';
|
|
87
|
+
this.triangle.style.left = `calc(${el.nativeElement.getBoundingClientRect().x + el.nativeElement.getBoundingClientRect().width}px - 0.8rem)`;
|
|
88
|
+
if (this.position === 'top') {
|
|
89
|
+
this.triangle.style.top = `${el.nativeElement.getBoundingClientRect().y}px`;
|
|
90
|
+
this.triangle.style.transform = `translate(-50%, calc(-100% + 0.1rem))`;
|
|
91
|
+
}
|
|
92
|
+
else if (this.position === 'bottom') {
|
|
93
|
+
this.triangle.style.top = `${el.nativeElement.getBoundingClientRect().y + el.nativeElement.getBoundingClientRect().height}px`;
|
|
94
|
+
this.triangle.style.transform = `translate(-50%, 0rem) rotate(180deg)`;
|
|
95
|
+
}
|
|
96
|
+
this.triangle.style.width = '0';
|
|
97
|
+
this.triangle.style.height = '0';
|
|
98
|
+
this.triangle.style.borderLeft = `${triangleSize} solid transparent`;
|
|
99
|
+
this.triangle.style.borderRight = `${triangleSize} solid transparent`;
|
|
100
|
+
this.triangle.style.borderTop = `${triangleSize} solid ${colors[this.klpWithTooltip].withAlpha}`;
|
|
101
|
+
el.nativeElement.prepend(this.triangle);
|
|
102
|
+
this.triangleWhite = document.createElement('div');
|
|
103
|
+
this.triangleWhite.style.zIndex = `${zIndexStart + 3}`;
|
|
104
|
+
this.triangleWhite.style.position = 'fixed';
|
|
105
|
+
this.triangleWhite.style.left = `calc(${el.nativeElement.getBoundingClientRect().x + el.nativeElement.getBoundingClientRect().width}px - 0.8rem)`;
|
|
106
|
+
if (this.position === 'top') {
|
|
107
|
+
this.triangleWhite.style.top = `${el.nativeElement.getBoundingClientRect().y}px`;
|
|
108
|
+
this.triangleWhite.style.transform = `translate(-50%, calc(-100% + 0.1rem - 2px))`;
|
|
109
|
+
}
|
|
110
|
+
else if (this.position === 'bottom') {
|
|
111
|
+
this.triangleWhite.style.top = `${el.nativeElement.getBoundingClientRect().y + el.nativeElement.getBoundingClientRect().height}px`;
|
|
112
|
+
this.triangleWhite.style.transform = `translate(-50%, -2px) rotate(180deg)`;
|
|
113
|
+
}
|
|
114
|
+
this.triangleWhite.style.width = '0';
|
|
115
|
+
this.triangleWhite.style.height = '0';
|
|
116
|
+
this.triangleWhite.style.borderLeft = `${triangleSize} solid transparent`;
|
|
117
|
+
this.triangleWhite.style.borderRight = `${triangleSize} solid transparent`;
|
|
118
|
+
if (stringIsSetAndFilled(textToDisplay)) {
|
|
119
|
+
this.triangleWhite.style.borderTop = `${triangleSize} solid ${colors[this.klpWithTooltip].background}`;
|
|
120
|
+
}
|
|
121
|
+
else if (this.templateInstance) {
|
|
122
|
+
this.div.style.visibility = 'hidden';
|
|
123
|
+
setTimeout(() => {
|
|
124
|
+
const color = getComputedStyle(this.templateInstance).backgroundColor || getComputedStyle(this.templateInstance).background;
|
|
125
|
+
this.triangleWhite.style.borderTop = `${triangleSize} solid ${color}`;
|
|
126
|
+
this.div.style.visibility = 'visible';
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
el.nativeElement.prepend(this.triangleWhite);
|
|
130
|
+
});
|
|
131
|
+
el.nativeElement.addEventListener('mouseleave', () => {
|
|
132
|
+
if (this.tooltipTemplate) {
|
|
133
|
+
this.cleanUpTemplate();
|
|
134
|
+
}
|
|
135
|
+
try {
|
|
136
|
+
el.nativeElement.removeChild(this.div);
|
|
137
|
+
}
|
|
138
|
+
catch (ex) { }
|
|
139
|
+
try {
|
|
140
|
+
el.nativeElement.removeChild(this.triangle);
|
|
141
|
+
}
|
|
142
|
+
catch (ex) { }
|
|
143
|
+
try {
|
|
144
|
+
el.nativeElement.removeChild(this.triangleWhite);
|
|
145
|
+
}
|
|
146
|
+
catch (ex) { }
|
|
147
|
+
});
|
|
144
148
|
});
|
|
145
149
|
}
|
|
146
150
|
hookUpTemplate() {
|
|
@@ -152,7 +156,7 @@ export class WithTooltipDirective {
|
|
|
152
156
|
this.appRef.detachView(this.viewRefForTemplate);
|
|
153
157
|
this.viewRefForTemplate.destroy();
|
|
154
158
|
}
|
|
155
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: WithTooltipDirective, deps: [{ token: i0.ElementRef }, { token: i0.ApplicationRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
159
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: WithTooltipDirective, deps: [{ token: i0.ElementRef }, { token: i0.ApplicationRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
156
160
|
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.0", type: WithTooltipDirective, selector: "[klpWithTooltip]", inputs: { klpWithTooltip: "klpWithTooltip", tooltipText: "tooltipText", tooltipTemplate: "tooltipTemplate", position: "position" }, ngImport: i0 }); }
|
|
157
161
|
}
|
|
158
162
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: WithTooltipDirective, decorators: [{
|
|
@@ -160,7 +164,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
|
160
164
|
args: [{
|
|
161
165
|
selector: '[klpWithTooltip]'
|
|
162
166
|
}]
|
|
163
|
-
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ApplicationRef }], propDecorators: { klpWithTooltip: [{
|
|
167
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ApplicationRef }, { type: i0.NgZone }], propDecorators: { klpWithTooltip: [{
|
|
164
168
|
type: Input
|
|
165
169
|
}], tooltipText: [{
|
|
166
170
|
type: Input
|
|
@@ -169,4 +173,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
|
169
173
|
}], position: [{
|
|
170
174
|
type: Input
|
|
171
175
|
}] } });
|
|
172
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aFRvb2x0aXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2xpcHBhL25neC1lbmhhbmN5LWZvcm1zL3NyYy9saWIvd2l0aFRvb2x0aXAuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTixTQUFTLEVBR1QsS0FBSyxFQUVMLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLGVBQWUsQ0FBQzs7QUFFbkQsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDO0FBQzVCLE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQztBQUU3QixNQUFNLE1BQU0sR0FBRztJQUNkLE1BQU0sRUFBRSxFQUFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxTQUFTLEVBQUUsaUNBQWlDLEVBQUM7SUFDcEYsS0FBSyxFQUFFLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxnQ0FBZ0MsRUFBQztDQUNqRixDQUFDO0FBS0YsTUFBTSxPQUFPLG9CQUFvQjtJQVVoQyxZQUFvQixFQUFjLEVBQVUsTUFBc0I7UUFBOUMsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUFVLFdBQU0sR0FBTixNQUFNLENBQWdCO1FBTnpELG1CQUFjLEdBQXNCLFFBQVEsQ0FBQztRQUc3QyxhQUFRLEdBQXFCLEtBQUssQ0FBQztRQUkzQyxFQUFFLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLFlBQVksRUFBRSxHQUFHLEVBQUU7WUFDcEQsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN2QixDQUFDO1lBQ0QsSUFBSSxhQUFxQixDQUFDO1lBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztnQkFDNUIsYUFBYSxHQUFHLElBQUksQ0FBQyxXQUFXLElBQUksRUFBRSxD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RSxFQUFFLENBQUMsQ0FBQSxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVNLGNBQWM7UUFDcEIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVNLGVBQWU7UUFDckIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ25DLENBQUM7OEdBbkpXLG9CQUFvQjtrR0FBcEIsb0JBQW9COzsyRkFBcEIsb0JBQW9CO2tCQUhoQyxTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSxrQkFBa0I7aUJBQzVCOzRHQUtTLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRBcHBsaWNhdGlvblJlZixcblx0RGlyZWN0aXZlLFxuXHRFbGVtZW50UmVmLFxuXHRFbWJlZGRlZFZpZXdSZWYsXG5cdElucHV0LFxuXHRUZW1wbGF0ZVJlZlxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtzdHJpbmdJc1NldEFuZEZpbGxlZH0gZnJvbSBcIi4vdXRpbC92YWx1ZXNcIjtcblxuY29uc3QgdHJpYW5nbGVTaXplID0gJzEycHgnO1xuY29uc3QgekluZGV4U3RhcnQgPSA5OTk5OTk5OTtcblxuY29uc3QgY29sb3JzID0ge1xuXHRvcmFuZ2U6IHsgbm9BbHBoYTogJ3JnYigyNTUsIDEyOCwgMCknLCB3aXRoQWxwaGE6ICdyZ2JhKDI1NSwgMTI4LCAwLCAwLjEyNTQ5MDE5NjEpJ30sXG5cdGJsYWNrOiB7IG5vQWxwaGE6ICdyZ2IoNDAsIDQwLCA0MCknLCB3aXRoQWxwaGE6ICdyZ2JhKDQwLCA0MCwgNDAsIDAuMTI1NDkwMTk2MSknfSxcbn07XG5cbkBEaXJlY3RpdmUoe1xuXHRzZWxlY3RvcjogJ1trbHBXaXRoVG9vbHRpcF0nXG59KVxuZXhwb3J0IGNsYXNzIFdpdGhUb29sdGlwRGlyZWN0aXZlIHtcblx0cHJpdmF0ZSBkaXY6IEhUTUxFbGVtZW50O1xuXHRwcml2YXRlIHRyaWFuZ2xlOiBIVE1MRWxlbWVudDtcblx0cHJpdmF0ZSB0cmlhbmdsZVdoaXRlOiBIVE1MRWxlbWVudDtcblx0QElucHV0KCkga2xwV2l0aFRvb2x0aXA6ICdvcmFuZ2UnfCAnYmxhY2snID0gJ29yYW5nZSc7XG5cdEBJbnB1dCgpIHRvb2x0aXBUZXh0OiBzdHJpbmc7XG5cdEBJbnB1dCgpIHRvb2x0aXBUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55Pjtcblx0QElucHV0KCkgcG9zaXRpb246ICd0b3AnIHwgJ2JvdHRvbScgPSAndG9wJztcblx0cHJpdmF0ZSB0ZW1wbGF0ZUluc3RhbmNlOiBIVE1MRWxlbWVudDtcblx0cHJpdmF0ZSB2aWV3UmVmRm9yVGVtcGxhdGU6IEVtYmVkZGVkVmlld1JlZjxhbnk+O1xuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIGVsOiBFbGVtZW50UmVmLCBwcml2YXRlIGFwcFJlZjogQXBwbGljYXRpb25SZWYpIHtcblx0XHRlbC5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZW50ZXInLCAoKSA9PiB7XG5cdFx0XHRpZiAodGhpcy50b29sdGlwVGVtcGxhdGUpIHtcblx0XHRcdFx0dGhpcy5ob29rVXBUZW1wbGF0ZSgpO1xuXHRcdFx0fVxuXHRcdFx0bGV0IHRleHRUb0Rpc3BsYXk6IHN0cmluZztcblx0XHRcdGlmICghdGhpcy50ZW1wbGF0ZUluc3RhbmNlKSB7XG5cdFx0XHRcdHRleHRUb0Rpc3BsYXkgPSB0aGlzLnRvb2x0aXBUZXh0IHx8IGVsLm5hdGl2ZUVsZW1lbnQuaW5uZXJUZXh0LnRyaW0oKTtcblx0XHRcdH1cblx0XHRcdGlmICghc3RyaW5nSXNTZXRBbmRGaWxsZWQodGhpcy5rbHBXaXRoVG9vbHRpcCkpIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCFzdHJpbmdJc1NldEFuZEZpbGxlZCh0ZXh0VG9EaXNwbGF5KSAmJiAhdGhpcy50b29sdGlwVGVtcGxhdGUpIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHN0cmluZ0lzU2V0QW5kRmlsbGVkKHRoaXMudG9vbHRpcFRleHQpKSB7XG5cdFx0XHRcdGlmICh0aGlzLnRvb2x0aXBUZXh0ID09PSBlbC5uYXRpdmVFbGVtZW50LmlubmVyVGV4dCkge1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIGlmICh0aGlzLnRvb2x0aXBUZW1wbGF0ZSkge1xuXHRcdFx0XHQvLyBubyBuZWVkIHRvIGNoZWNrIGhlcmUsIGp1c3QgcmVuZGVyIHRoZSB0ZW1wbGF0ZVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0aWYgKGVsLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggPj0gZWwubmF0aXZlRWxlbWVudC5zY3JvbGxXaWR0aCkge1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0aWYgKGdldENvbXB1dGVkU3R5bGUoZWwubmF0aXZlRWxlbWVudCkucG9zaXRpb24gPT09ICdzdGF0aWMnKSB7XG5cdFx0XHRcdGVsLm5hdGl2ZUVsZW1lbnQuc3R5bGUucG9zaXRpb24gPSAncmVsYXRpdmUnO1xuXHRcdFx0fVxuXG5cdFx0XHR0aGlzLmRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXHRcdFx0dGhpcy5kaXYuc3R5bGUuekluZGV4ID0gYCR7ekluZGV4U3RhcnQgKyAyfWA7XG5cdFx0XHR0aGlzLmRpdi5zdHlsZS5jb2xvciA9IGAke2NvbG9yc1t0aGlzLmtscFdpdGhUb29sdGlwXS5ub0FscGhhfWA7XG5cdFx0XHR0aGlzLmRpdi5zdHlsZS5wb3NpdGlvbiA9ICdmaXhlZCc7XG5cdFx0XHR0aGlzLmRpdi5zdHlsZS5sZWZ0ID0gYCR7ZWwubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS54fXB4YDtcblx0XHRcdGlmICh0aGlzLnBvc2l0aW9uID09PSAndG9wJykge1xuXHRcdFx0XHR0aGlzLmRpdi5zdHlsZS50b3AgPSBgJHtlbC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnl9cHhgO1xuXHRcdFx0XHR0aGlzLmRpdi5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlKGNhbGMoLTEwMCUgKyAke2VsLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGh9cHgpLCBjYWxjKC0xMDAlIC0gMC4zcmVtKSlgO1xuXHRcdFx0fSBlbHNlIGlmICh0aGlzLnBvc2l0aW9uID09PSAnYm90dG9tJykge1xuXHRcdFx0XHR0aGlzLmRpdi5zdHlsZS50b3AgPSBgJHtlbC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnkgKyBlbC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodH1weGA7XG5cdFx0XHRcdHRoaXMuZGl2LnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGUoY2FsYygtMTAwJSArICR7ZWwubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aH1weCksIGNhbGMoMCUgKyAwLjNyZW0pKWA7XG5cdFx0XHR9XG5cdFx0XHR0aGlzLmRpdi5zdHlsZS5tYXhXaWR0aCA9ICcyMDBweCc7XG5cdFx0XHR0aGlzLmRpdi5zdHlsZS53aGl0ZVNwYWNlID0gJ2JyZWFrLXNwYWNlcyc7XG5cdFx0XHR0aGlzLmRpdi5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAnd2hpdGUnO1xuXHRcdFx0dGhpcy5kaXYuc3R5bGUuYm9yZGVyID0gYDFweCBzb2xpZCAke2NvbG9yc1t0aGlzLmtscFdpdGhUb29sdGlwXS53aXRoQWxwaGF9YDtcblx0XHRcdHRoaXMuZGl2LnN0eWxlLmJveFNoYWRvdyA9IGAycHggM3B4IDEwcHggMHB4ICR7Y29sb3JzW3RoaXMua2xwV2l0aFRvb2x0aXBdLndpdGhBbHBoYX1gO1xuXHRcdFx0dGhpcy5kaXYuc3R5bGUucGFkZGluZyA9ICcwLjNyZW0gMC41cmVtJztcblx0XHRcdHRoaXMuZGl2LnN0eWxlLmJveFNpemluZyA9ICdib3JkZXItYm94Jztcblx0XHRcdHRoaXMuZGl2LnN0eWxlLmJvcmRlclJhZGl1cyA9ICczcHgnO1xuXHRcdFx0aWYgKHN0cmluZ0lzU2V0QW5kRmlsbGVkKHRleHRUb0Rpc3BsYXkpKSB7XG5cdFx0XHRcdHRoaXMuZGl2LnRleHRDb250ZW50ID0gdGV4dFRvRGlzcGxheTtcblx0XHRcdH0gZWxzZSBpZiAodGhpcy50ZW1wbGF0ZUluc3RhbmNlKSB7XG5cdFx0XHRcdHRoaXMuZGl2LnN0eWxlLm1heFdpZHRoID0gJ25vbmUnO1xuXHRcdFx0XHR0aGlzLmRpdi5zdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7XG5cdFx0XHRcdHRoaXMuZGl2LmFwcGVuZENoaWxkKHRoaXMudGVtcGxhdGVJbnN0YW5jZSk7XG5cdFx0XHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IGNvbG9yID0gZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLnRlbXBsYXRlSW5zdGFuY2UpLmJhY2tncm91bmRDb2xvciB8fCBnZXRDb21wdXRlZFN0eWxlKHRoaXMudGVtcGxhdGVJbnN0YW5jZSkuYmFja2dyb3VuZDtcblx0XHRcdFx0XHR0aGlzLmRpdi5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBjb2xvcjtcblx0XHRcdFx0XHR0aGlzLmRpdi5zdHlsZS52aXNpYmlsaXR5ID0gJ3Zpc2libGUnO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHRcdGVsLm5hdGl2ZUVsZW1lbnQucHJlcGVuZCh0aGlzLmRpdik7XG5cblx0XHRcdHRoaXMudHJpYW5nbGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcblx0XHRcdHRoaXMudHJpYW5nbGUuc3R5bGUuekluZGV4ID0gYCR7ekluZGV4U3RhcnQgKyAxfWA7XG5cdFx0XHR0aGlzLnRyaWFuZ2xlLnN0eWxlLnBvc2l0aW9uID0gJ2ZpeGVkJztcblx0XHRcdHRoaXMudHJpYW5nbGUuc3R5bGUubGVmdCA9IGBjYWxjKCR7ZWwubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS54ICsgZWwubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aH1weCAtIDJyZW0pYDtcblx0XHRcdGlmICh0aGlzLnBvc2l0aW9uID09PSAndG9wJykge1xuXHRcdFx0XHR0aGlzLnRyaWFuZ2xlLnN0eWxlLnRvcCA9IGAke2VsLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkueX1weGA7XG5cdFx0XHRcdHRoaXMudHJpYW5nbGUuc3R5bGUudHJhbnNmb3JtID0gYHRyYW5zbGF0ZSgtNTAlLCBjYWxjKC0xMDAlICsgMC4xcmVtKSlgO1xuXHRcdFx0fSBlbHNlIGlmICh0aGlzLnBvc2l0aW9uID09PSAnYm90dG9tJykge1xuXHRcdFx0XHR0aGlzLnRyaWFuZ2xlLnN0eWxlLnRvcCA9IGAke2VsLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkueSArIGVsLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0fXB4YDtcblx0XHRcdFx0dGhpcy50cmlhbmdsZS5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlKC01MCUsIDByZW0pIHJvdGF0ZSgxODBkZWcpYDtcblx0XHRcdH1cblx0XHRcdHRoaXMudHJpYW5nbGUuc3R5bGUud2lkdGggPSAnMCc7XG5cdFx0XHR0aGlzLnRyaWFuZ2xlLnN0eWxlLmhlaWdodCA9ICcwJztcblx0XHRcdHRoaXMudHJpYW5nbGUuc3R5bGUuYm9yZGVyTGVmdCA9IGAke3RyaWFuZ2xlU2l6ZX0gc29saWQgdHJhbnNwYXJlbnRgO1xuXHRcdFx0dGhpcy50cmlhbmdsZS5zdHlsZS5ib3JkZXJSaWdodCA9IGAke3RyaWFuZ2xlU2l6ZX0gc29saWQgdHJhbnNwYXJlbnRgO1xuXHRcdFx0dGhpcy50cmlhbmdsZS5zdHlsZS5ib3JkZXJUb3AgPSBgJHt0cmlhbmdsZVNpemV9IHNvbGlkICR7Y29sb3JzW3RoaXMua2xwV2l0aFRvb2x0aXBdLndpdGhBbHBoYX1gO1xuXHRcdFx0ZWwubmF0aXZlRWxlbWVudC5wcmVwZW5kKHRoaXMudHJpYW5nbGUpO1xuXG5cdFx0XHR0aGlzLnRyaWFuZ2xlV2hpdGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcblx0XHRcdHRoaXMudHJpYW5nbGVXaGl0ZS5zdHlsZS56SW5kZXggPSBgJHt6SW5kZXhTdGFydCArIDN9YDtcblx0XHRcdHRoaXMudHJpYW5nbGVXaGl0ZS5zdHlsZS5wb3NpdGlvbiA9ICdmaXhlZCc7XG5cdFx0XHR0aGlzLnRyaWFuZ2xlV2hpdGUuc3R5bGUubGVmdCA9IGBjYWxjKCR7ZWwubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS54ICsgZWwubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aH1weCAtIDJyZW0pYDtcblx0XHRcdGlmICh0aGlzLnBvc2l0aW9uID09PSAndG9wJykge1xuXHRcdFx0XHR0aGlzLnRyaWFuZ2xlV2hpdGUuc3R5bGUudG9wID0gYCR7ZWwubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS55fXB4YDtcblx0XHRcdFx0dGhpcy50cmlhbmdsZVdoaXRlLnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGUoLTUwJSwgY2FsYygtMTAwJSArIDAuMXJlbSAtIDJweCkpYDtcblx0XHRcdH0gZWxzZSBpZiAodGhpcy5wb3NpdGlvbiA9PT0gJ2JvdHRvbScpIHtcblx0XHRcdFx0dGhpcy50cmlhbmdsZVdoaXRlLnN0eWxlLnRvcCA9IGAke2VsLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkueSArIGVsLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0fXB4YDtcblx0XHRcdFx0dGhpcy50cmlhbmdsZVdoaXRlLnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGUoLTUwJSwgLTJweCkgcm90YXRlKDE4MGRlZylgO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy50cmlhbmdsZVdoaXRlLnN0eWxlLndpZHRoID0gJzAnO1xuXHRcdFx0dGhpcy50cmlhbmdsZVdoaXRlLnN0eWxlLmhlaWdodCA9ICcwJztcblx0XHRcdHRoaXMudHJpYW5nbGVXaGl0ZS5zdHlsZS5ib3JkZXJMZWZ0ID0gYCR7dHJpYW5nbGVTaXplfSBzb2xpZCB0cmFuc3BhcmVudGA7XG5cdFx0XHR0aGlzLnRyaWFuZ2xlV2hpdGUuc3R5bGUuYm9yZGVyUmlnaHQgPSBgJHt0cmlhbmdsZVNpemV9IHNvbGlkIHRyYW5zcGFyZW50YDtcblxuXHRcdFx0aWYgKHN0cmluZ0lzU2V0QW5kRmlsbGVkKHRleHRUb0Rpc3BsYXkpKSB7XG5cdFx0XHRcdHRoaXMudHJpYW5nbGVXaGl0ZS5zdHlsZS5ib3JkZXJUb3AgPSBgJHt0cmlhbmdsZVNpemV9IHNvbGlkIHdoaXRlYDtcblx0XHRcdH0gZWxzZSBpZiAodGhpcy50ZW1wbGF0ZUluc3RhbmNlKSB7XG5cdFx0XHRcdHRoaXMuZGl2LnN0eWxlLnZpc2liaWxpdHkgPSAnaGlkZGVuJztcblx0XHRcdFx0c2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRcdFx0Y29uc3QgY29sb3IgPSBnZXRDb21wdXRlZFN0eWxlKHRoaXMudGVtcGxhdGVJbnN0YW5jZSkuYmFja2dyb3VuZENvbG9yIHx8IGdldENvbXB1dGVkU3R5bGUodGhpcy50ZW1wbGF0ZUluc3RhbmNlKS5iYWNrZ3JvdW5kO1xuXHRcdFx0XHRcdHRoaXMudHJpYW5nbGVXaGl0ZS5zdHlsZS5ib3JkZXJUb3AgPSBgJHt0cmlhbmdsZVNpemV9IHNvbGlkICR7Y29sb3J9YDtcblx0XHRcdFx0XHR0aGlzLmRpdi5zdHlsZS52aXNpYmlsaXR5ID0gJ3Zpc2libGUnO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblxuXHRcdFx0ZWwubmF0aXZlRWxlbWVudC5wcmVwZW5kKHRoaXMudHJpYW5nbGVXaGl0ZSk7XG5cdFx0fSk7XG5cblx0XHRlbC5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCAoKSA9PiB7XG5cdFx0XHRpZiAodGhpcy50b29sdGlwVGVtcGxhdGUpIHtcblx0XHRcdFx0dGhpcy5jbGVhblVwVGVtcGxhdGUoKTtcblx0XHRcdH1cblx0XHRcdHRyeSB7XG5cdFx0XHRcdGVsLm5hdGl2ZUVsZW1lbnQucmVtb3ZlQ2hpbGQodGhpcy5kaXYpO1xuXHRcdFx0fSBjYXRjaCAoZXgpIHt9XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRlbC5uYXRpdmVFbGVtZW50LnJlbW92ZUNoaWxkKHRoaXMudHJpYW5nbGUpO1xuXHRcdFx0fSBjYXRjaCAoZXgpIHt9XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRlbC5uYXRpdmVFbGVtZW50LnJlbW92ZUNoaWxkKHRoaXMudHJpYW5nbGVXaGl0ZSk7XG5cdFx0XHR9IGNhdGNoIChleCkge31cblx0XHR9KTtcblx0fVxuXG5cdHB1YmxpYyBob29rVXBUZW1wbGF0ZSgpOiB2b2lkIHtcblx0XHR0aGlzLnZpZXdSZWZGb3JUZW1wbGF0ZSA9IHRoaXMudG9vbHRpcFRlbXBsYXRlLmNyZWF0ZUVtYmVkZGVkVmlldyhudWxsKTtcblx0XHR0aGlzLmFwcFJlZi5hdHRhY2hWaWV3KHRoaXMudmlld1JlZkZvclRlbXBsYXRlKTtcblx0XHR0aGlzLnRlbXBsYXRlSW5zdGFuY2UgPSB0aGlzLnZpZXdSZWZGb3JUZW1wbGF0ZS5yb290Tm9kZXNbMF07XG5cdH1cblxuXHRwdWJsaWMgY2xlYW5VcFRlbXBsYXRlKCk6IHZvaWQge1xuXHRcdHRoaXMuYXBwUmVmLmRldGFjaFZpZXcodGhpcy52aWV3UmVmRm9yVGVtcGxhdGUpO1xuXHRcdHRoaXMudmlld1JlZkZvclRlbXBsYXRlLmRlc3Ryb3koKTtcblx0fVxufVxuIl19
|
|
176
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aFRvb2x0aXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2xpcHBhL25neC1lbmhhbmN5LWZvcm1zL3NyYy9saWIvd2l0aFRvb2x0aXAuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTixTQUFTLEVBR1QsS0FBSyxFQUVMLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLGVBQWUsQ0FBQzs7QUFFbkQsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDO0FBQzVCLE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQztBQUU3QixNQUFNLE1BQU0sR0FBRztJQUNkLE1BQU0sRUFBRSxFQUFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxTQUFTLEVBQUUsaUNBQWlDLEVBQUUsVUFBVSxFQUFFLG9CQUFvQixFQUFDO0lBQ3RILEtBQUssRUFBRSxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsZ0NBQWdDLEVBQUUsVUFBVSxFQUFFLG9CQUFvQixFQUFDO0lBQ25ILFlBQVksRUFBRSxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsbUNBQW1DLEVBQUUsVUFBVSxFQUFFLGtCQUFrQixFQUFDO0NBQzlILENBQUM7QUFLRixNQUFNLE9BQU8sb0JBQW9CO0lBVWhDLFlBQW9CLEVBQWMsRUFBVSxNQUFzQixFQUFVLE1BQWM7UUFBdEUsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUFVLFdBQU0sR0FBTixNQUFNLENBQWdCO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQU5qRixtQkFBYyxHQUF1QyxRQUFRLENBQUM7UUFHOUQsYUFBUSxHQUFxQixLQUFLLENBQUM7UUFJM0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7WUFDbEMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxnQkFB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NUI7aUlBS1MsY0FBYztzQkFBdEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdEFwcGxpY2F0aW9uUmVmLFxuXHREaXJlY3RpdmUsXG5cdEVsZW1lbnRSZWYsXG5cdEVtYmVkZGVkVmlld1JlZixcblx0SW5wdXQsIE5nWm9uZSxcblx0VGVtcGxhdGVSZWZcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7c3RyaW5nSXNTZXRBbmRGaWxsZWR9IGZyb20gXCIuL3V0aWwvdmFsdWVzXCI7XG5cbmNvbnN0IHRyaWFuZ2xlU2l6ZSA9ICcxMnB4JztcbmNvbnN0IHpJbmRleFN0YXJ0ID0gOTk5OTk5OTk7XG5cbmNvbnN0IGNvbG9ycyA9IHtcblx0b3JhbmdlOiB7IG5vQWxwaGE6ICdyZ2IoMjU1LCAxMjgsIDApJywgd2l0aEFscGhhOiAncmdiYSgyNTUsIDEyOCwgMCwgMC4xMjU0OTAxOTYxKScsIGJhY2tncm91bmQ6ICdyZ2IoMjU1LCAyNTUsIDI1NSknfSxcblx0YmxhY2s6IHsgbm9BbHBoYTogJ3JnYig0MCwgNDAsIDQwKScsIHdpdGhBbHBoYTogJ3JnYmEoNDAsIDQwLCA0MCwgMC4xMjU0OTAxOTYxKScsIGJhY2tncm91bmQ6ICdyZ2IoMjU1LCAyNTUsIDI1NSknfSxcblx0d2hpdGVPbkJsYWNrOiB7IG5vQWxwaGE6ICdyZ2IoMjU1LCAyNTUsIDI1NSknLCB3aXRoQWxwaGE6ICdyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTI1NDkwMTk2MSknLCBiYWNrZ3JvdW5kOiAncmdiYSgxMiwgMTcsIDI5KSd9LFxufTtcblxuQERpcmVjdGl2ZSh7XG5cdHNlbGVjdG9yOiAnW2tscFdpdGhUb29sdGlwXSdcbn0pXG5leHBvcnQgY2xhc3MgV2l0aFRvb2x0aXBEaXJlY3RpdmUge1xuXHRwcml2YXRlIGRpdjogSFRNTEVsZW1lbnQ7XG5cdHByaXZhdGUgdHJpYW5nbGU6IEhUTUxFbGVtZW50O1xuXHRwcml2YXRlIHRyaWFuZ2xlV2hpdGU6IEhUTUxFbGVtZW50O1xuXHRASW5wdXQoKSBrbHBXaXRoVG9vbHRpcDogJ29yYW5nZSd8ICdibGFjaycgfCAnd2hpdGVPbkJsYWNrJyA9ICdvcmFuZ2UnO1xuXHRASW5wdXQoKSB0b29sdGlwVGV4dDogc3RyaW5nO1xuXHRASW5wdXQoKSB0b29sdGlwVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cdEBJbnB1dCgpIHBvc2l0aW9uOiAndG9wJyB8ICdib3R0b20nID0gJ3RvcCc7XG5cdHByaXZhdGUgdGVtcGxhdGVJbnN0YW5jZTogSFRNTEVsZW1lbnQ7XG5cdHByaXZhdGUgdmlld1JlZkZvclRlbXBsYXRlOiBFbWJlZGRlZFZpZXdSZWY8YW55Pjtcblx0Y29uc3RydWN0b3IocHJpdmF0ZSBlbDogRWxlbWVudFJlZiwgcHJpdmF0ZSBhcHBSZWY6IEFwcGxpY2F0aW9uUmVmLCBwcml2YXRlIG5nWm9uZTogTmdab25lKSB7XG5cdFx0dGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuXHRcdFx0ZWwubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWVudGVyJywgKCkgPT4ge1xuXHRcdFx0XHRpZiAodGhpcy50b29sdGlwVGVtcGxhdGUpIHtcblx0XHRcdFx0XHR0aGlzLmhvb2tVcFRlbXBsYXRlKCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0bGV0IHRleHRUb0Rpc3BsYXk6IHN0cmluZztcblx0XHRcdFx0aWYgKCF0aGlzLnRlbXBsYXRlSW5zdGFuY2UpIHtcblx0XHRcdFx0XHR0ZXh0VG9EaXNwbGF5ID0gdGhpcy50b29sdGlwVGV4dCB8fCBlbC5uYXRpdmVFbGVtZW50LmlubmVyVGV4dC50cmltKCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKCFzdHJpbmdJc1NldEFuZEZpbGxlZCh0aGlzLmtscFdpdGhUb29sdGlwKSkge1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoIXN0cmluZ0lzU2V0QW5kRmlsbGVkKHRleHRUb0Rpc3BsYXkpICYmICF0aGlzLnRvb2x0aXBUZW1wbGF0ZSkge1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoc3RyaW5nSXNTZXRBbmRGaWxsZWQodGhpcy50b29sdGlwVGV4dCkpIHtcblx0XHRcdFx0XHRpZiAodGhpcy50b29sdGlwVGV4dCA9PT0gZWwubmF0aXZlRWxlbWVudC5pbm5lclRleHQpIHtcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZSBpZiAodGhpcy50b29sdGlwVGVtcGxhdGUpIHtcblx0XHRcdFx0XHQvLyBubyBuZWVkIHRvIGNoZWNrIGhlcmUsIGp1c3QgcmVuZGVyIHRoZSB0ZW1wbGF0ZVxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGlmIChlbC5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoID49IGVsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsV2lkdGgpIHtcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKGdldENvbXB1dGVkU3R5bGUoZWwubmF0aXZlRWxlbWVudCkucG9zaXRpb24gPT09ICdzdGF0aWMnKSB7XG5cdFx0XHRcdFx0ZWwubmF0aXZlRWxlbWVudC5zdHlsZS5wb3NpdGlvbiA9ICdyZWxhdGl2ZSc7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHR0aGlzLmRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXHRcdFx0XHR0aGlzLmRpdi5zdHlsZS56SW5kZXggPSBgJHt6SW5kZXhTdGFydCArIDJ9YDtcblx0XHRcdFx0dGhpcy5kaXYuc3R5bGUuY29sb3IgPSBgJHtjb2xvcnNbdGhpcy5rbHBXaXRoVG9vbHRpcF0ubm9BbHBoYX1gO1xuXHRcdFx0XHR0aGlzLmRpdi5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBgJHtjb2xvcnNbdGhpcy5rbHBXaXRoVG9vbHRpcF0uYmFja2dyb3VuZH1gO1xuXHRcdFx0XHR0aGlzLmRpdi5zdHlsZS5wb3NpdGlvbiA9ICdmaXhlZCc7XG5cdFx0XHRcdHRoaXMuZGl2LnN0eWxlLmxlZnQgPSBgJHtlbC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnh9cHhgO1xuXHRcdFx0XHRpZiAodGhpcy5wb3NpdGlvbiA9PT0gJ3RvcCcpIHtcblx0XHRcdFx0XHR0aGlzLmRpdi5zdHlsZS50b3AgPSBgJHtlbC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnl9cHhgO1xuXHRcdFx0XHRcdHRoaXMuZGl2LnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGUoY2FsYygtMTAwJSArICR7ZWwubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aH1weCksIGNhbGMoLTEwMCUgLSAwLjNyZW0pKWA7XG5cdFx0XHRcdH0gZWxzZSBpZiAodGhpcy5wb3NpdGlvbiA9PT0gJ2JvdHRvbScpIHtcblx0XHRcdFx0XHR0aGlzLmRpdi5zdHlsZS50b3AgPSBgJHtlbC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnkgKyBlbC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodH1weGA7XG5cdFx0XHRcdFx0dGhpcy5kaXYuc3R5bGUudHJhbnNmb3JtID0gYHRyYW5zbGF0ZShjYWxjKC0xMDAlICsgJHtlbC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRofXB4KSwgY2FsYygwJSArIDAuM3JlbSkpYDtcblx0XHRcdFx0fVxuXHRcdFx0XHR0aGlzLmRpdi5zdHlsZS5tYXhXaWR0aCA9ICcyMDBweCc7XG5cdFx0XHRcdHRoaXMuZGl2LnN0eWxlLndoaXRlU3BhY2UgPSAnYnJlYWstc3BhY2VzJztcblx0XHRcdFx0dGhpcy5kaXYuc3R5bGUuYm9yZGVyID0gYDFweCBzb2xpZCAke2NvbG9yc1t0aGlzLmtscFdpdGhUb29sdGlwXS53aXRoQWxwaGF9YDtcblx0XHRcdFx0dGhpcy5kaXYuc3R5bGUuYm94U2hhZG93ID0gYDJweCAzcHggMTBweCAwcHggJHtjb2xvcnNbdGhpcy5rbHBXaXRoVG9vbHRpcF0ud2l0aEFscGhhfWA7XG5cdFx0XHRcdHRoaXMuZGl2LnN0eWxlLnBhZGRpbmcgPSAnMC4zcmVtIDAuNXJlbSc7XG5cdFx0XHRcdHRoaXMuZGl2LnN0eWxlLmJveFNpemluZyA9ICdib3JkZXItYm94Jztcblx0XHRcdFx0dGhpcy5kaXYuc3R5bGUuYm9yZGVyUmFkaXVzID0gJzNweCc7XG5cdFx0XHRcdGlmIChzdHJpbmdJc1NldEFuZEZpbGxlZCh0ZXh0VG9EaXNwbGF5KSkge1xuXHRcdFx0XHRcdHRoaXMuZGl2LnRleHRDb250ZW50ID0gdGV4dFRvRGlzcGxheTtcblx0XHRcdFx0fSBlbHNlIGlmICh0aGlzLnRlbXBsYXRlSW5zdGFuY2UpIHtcblx0XHRcdFx0XHR0aGlzLmRpdi5zdHlsZS5tYXhXaWR0aCA9ICdub25lJztcblx0XHRcdFx0XHR0aGlzLmRpdi5zdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7XG5cdFx0XHRcdFx0dGhpcy5kaXYuYXBwZW5kQ2hpbGQodGhpcy50ZW1wbGF0ZUluc3RhbmNlKTtcblx0XHRcdFx0XHRzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdFx0XHRcdGNvbnN0IGNvbG9yID0gZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLnRlbXBsYXRlSW5zdGFuY2UpLmJhY2tncm91bmRDb2xvciB8fCBnZXRDb21wdXRlZFN0eWxlKHRoaXMudGVtcGxhdGVJbnN0YW5jZSkuYmFja2dyb3VuZDtcblx0XHRcdFx0XHRcdHRoaXMuZGl2LnN0eWxlLmJhY2tncm91bmRDb2xvciA9IGNvbG9yO1xuXHRcdFx0XHRcdFx0dGhpcy5kaXYuc3R5bGUudmlzaWJpbGl0eSA9ICd2aXNpYmxlJztcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRlbC5uYXRpdmVFbGVtZW50LnByZXBlbmQodGhpcy5kaXYpO1xuXG5cdFx0XHRcdHRoaXMudHJpYW5nbGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcblx0XHRcdFx0dGhpcy50cmlhbmdsZS5zdHlsZS56SW5kZXggPSBgJHt6SW5kZXhTdGFydCArIDF9YDtcblx0XHRcdFx0dGhpcy50cmlhbmdsZS5zdHlsZS5wb3NpdGlvbiA9ICdmaXhlZCc7XG5cdFx0XHRcdHRoaXMudHJpYW5nbGUuc3R5bGUubGVmdCA9IGBjYWxjKCR7ZWwubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS54ICsgZWwubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aH1weCAtIDAuOHJlbSlgO1xuXHRcdFx0XHRpZiAodGhpcy5wb3NpdGlvbiA9PT0gJ3RvcCcpIHtcblx0XHRcdFx0XHR0aGlzLnRyaWFuZ2xlLnN0eWxlLnRvcCA9IGAke2VsLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkueX1weGA7XG5cdFx0XHRcdFx0dGhpcy50cmlhbmdsZS5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlKC01MCUsIGNhbGMoLTEwMCUgKyAwLjFyZW0pKWA7XG5cdFx0XHRcdH0gZWxzZSBpZiAodGhpcy5wb3NpdGlvbiA9PT0gJ2JvdHRvbScpIHtcblx0XHRcdFx0XHR0aGlzLnRyaWFuZ2xlLnN0eWxlLnRvcCA9IGAke2VsLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkueSArIGVsLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0fXB4YDtcblx0XHRcdFx0XHR0aGlzLnRyaWFuZ2xlLnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGUoLTUwJSwgMHJlbSkgcm90YXRlKDE4MGRlZylgO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHRoaXMudHJpYW5nbGUuc3R5bGUud2lkdGggPSAnMCc7XG5cdFx0XHRcdHRoaXMudHJpYW5nbGUuc3R5bGUuaGVpZ2h0ID0gJzAnO1xuXHRcdFx0XHR0aGlzLnRyaWFuZ2xlLnN0eWxlLmJvcmRlckxlZnQgPSBgJHt0cmlhbmdsZVNpemV9IHNvbGlkIHRyYW5zcGFyZW50YDtcblx0XHRcdFx0dGhpcy50cmlhbmdsZS5zdHlsZS5ib3JkZXJSaWdodCA9IGAke3RyaWFuZ2xlU2l6ZX0gc29saWQgdHJhbnNwYXJlbnRgO1xuXHRcdFx0XHR0aGlzLnRyaWFuZ2xlLnN0eWxlLmJvcmRlclRvcCA9IGAke3RyaWFuZ2xlU2l6ZX0gc29saWQgJHtjb2xvcnNbdGhpcy5rbHBXaXRoVG9vbHRpcF0ud2l0aEFscGhhfWA7XG5cdFx0XHRcdGVsLm5hdGl2ZUVsZW1lbnQucHJlcGVuZCh0aGlzLnRyaWFuZ2xlKTtcblxuXHRcdFx0XHR0aGlzLnRyaWFuZ2xlV2hpdGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcblx0XHRcdFx0dGhpcy50cmlhbmdsZVdoaXRlLnN0eWxlLnpJbmRleCA9IGAke3pJbmRleFN0YXJ0ICsgM31gO1xuXHRcdFx0XHR0aGlzLnRyaWFuZ2xlV2hpdGUuc3R5bGUucG9zaXRpb24gPSAnZml4ZWQnO1xuXHRcdFx0XHR0aGlzLnRyaWFuZ2xlV2hpdGUuc3R5bGUubGVmdCA9IGBjYWxjKCR7ZWwubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS54ICsgZWwubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aH1weCAtIDAuOHJlbSlgO1xuXHRcdFx0XHRpZiAodGhpcy5wb3NpdGlvbiA9PT0gJ3RvcCcpIHtcblx0XHRcdFx0XHR0aGlzLnRyaWFuZ2xlV2hpdGUuc3R5bGUudG9wID0gYCR7ZWwubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS55fXB4YDtcblx0XHRcdFx0XHR0aGlzLnRyaWFuZ2xlV2hpdGUuc3R5bGUudHJhbnNmb3JtID0gYHRyYW5zbGF0ZSgtNTAlLCBjYWxjKC0xMDAlICsgMC4xcmVtIC0gMnB4KSlgO1xuXHRcdFx0XHR9IGVsc2UgaWYgKHRoaXMucG9zaXRpb24gPT09ICdib3R0b20nKSB7XG5cdFx0XHRcdFx0dGhpcy50cmlhbmdsZVdoaXRlLnN0eWxlLnRvcCA9IGAke2VsLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkueSArIGVsLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0fXB4YDtcblx0XHRcdFx0XHR0aGlzLnRyaWFuZ2xlV2hpdGUuc3R5bGUudHJhbnNmb3JtID0gYHRyYW5zbGF0ZSgtNTAlLCAtMnB4KSByb3RhdGUoMTgwZGVnKWA7XG5cdFx0XHRcdH1cblx0XHRcdFx0dGhpcy50cmlhbmdsZVdoaXRlLnN0eWxlLndpZHRoID0gJzAnO1xuXHRcdFx0XHR0aGlzLnRyaWFuZ2xlV2hpdGUuc3R5bGUuaGVpZ2h0ID0gJzAnO1xuXHRcdFx0XHR0aGlzLnRyaWFuZ2xlV2hpdGUuc3R5bGUuYm9yZGVyTGVmdCA9IGAke3RyaWFuZ2xlU2l6ZX0gc29saWQgdHJhbnNwYXJlbnRgO1xuXHRcdFx0XHR0aGlzLnRyaWFuZ2xlV2hpdGUuc3R5bGUuYm9yZGVyUmlnaHQgPSBgJHt0cmlhbmdsZVNpemV9IHNvbGlkIHRyYW5zcGFyZW50YDtcblxuXHRcdFx0XHRpZiAoc3RyaW5nSXNTZXRBbmRGaWxsZWQodGV4dFRvRGlzcGxheSkpIHtcblx0XHRcdFx0XHR0aGlzLnRyaWFuZ2xlV2hpdGUuc3R5bGUuYm9yZGVyVG9wID0gYCR7dHJpYW5nbGVTaXplfSBzb2xpZCAke2NvbG9yc1t0aGlzLmtscFdpdGhUb29sdGlwXS5iYWNrZ3JvdW5kfWA7XG5cdFx0XHRcdH0gZWxzZSBpZiAodGhpcy50ZW1wbGF0ZUluc3RhbmNlKSB7XG5cdFx0XHRcdFx0dGhpcy5kaXYuc3R5bGUudmlzaWJpbGl0eSA9ICdoaWRkZW4nO1xuXHRcdFx0XHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0XHRcdFx0Y29uc3QgY29sb3IgPSBnZXRDb21wdXRlZFN0eWxlKHRoaXMudGVtcGxhdGVJbnN0YW5jZSkuYmFja2dyb3VuZENvbG9yIHx8IGdldENvbXB1dGVkU3R5bGUodGhpcy50ZW1wbGF0ZUluc3RhbmNlKS5iYWNrZ3JvdW5kO1xuXHRcdFx0XHRcdFx0dGhpcy50cmlhbmdsZVdoaXRlLnN0eWxlLmJvcmRlclRvcCA9IGAke3RyaWFuZ2xlU2l6ZX0gc29saWQgJHtjb2xvcn1gO1xuXHRcdFx0XHRcdFx0dGhpcy5kaXYuc3R5bGUudmlzaWJpbGl0eSA9ICd2aXNpYmxlJztcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGVsLm5hdGl2ZUVsZW1lbnQucHJlcGVuZCh0aGlzLnRyaWFuZ2xlV2hpdGUpO1xuXHRcdFx0fSk7XG5cblx0XHRcdGVsLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsICgpID0+IHtcblx0XHRcdFx0aWYgKHRoaXMudG9vbHRpcFRlbXBsYXRlKSB7XG5cdFx0XHRcdFx0dGhpcy5jbGVhblVwVGVtcGxhdGUoKTtcblx0XHRcdFx0fVxuXHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdGVsLm5hdGl2ZUVsZW1lbnQucmVtb3ZlQ2hpbGQodGhpcy5kaXYpO1xuXHRcdFx0XHR9IGNhdGNoIChleCkge31cblx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRlbC5uYXRpdmVFbGVtZW50LnJlbW92ZUNoaWxkKHRoaXMudHJpYW5nbGUpO1xuXHRcdFx0XHR9IGNhdGNoIChleCkge31cblx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRlbC5uYXRpdmVFbGVtZW50LnJlbW92ZUNoaWxkKHRoaXMudHJpYW5nbGVXaGl0ZSk7XG5cdFx0XHRcdH0gY2F0Y2ggKGV4KSB7fVxuXHRcdFx0fSk7XG5cdFx0fSk7XG5cdH1cblxuXHRwdWJsaWMgaG9va1VwVGVtcGxhdGUoKTogdm9pZCB7XG5cdFx0dGhpcy52aWV3UmVmRm9yVGVtcGxhdGUgPSB0aGlzLnRvb2x0aXBUZW1wbGF0ZS5jcmVhdGVFbWJlZGRlZFZpZXcobnVsbCk7XG5cdFx0dGhpcy5hcHBSZWYuYXR0YWNoVmlldyh0aGlzLnZpZXdSZWZGb3JUZW1wbGF0ZSk7XG5cdFx0dGhpcy50ZW1wbGF0ZUluc3RhbmNlID0gdGhpcy52aWV3UmVmRm9yVGVtcGxhdGUucm9vdE5vZGVzWzBdO1xuXHR9XG5cblx0cHVibGljIGNsZWFuVXBUZW1wbGF0ZSgpOiB2b2lkIHtcblx0XHR0aGlzLmFwcFJlZi5kZXRhY2hWaWV3KHRoaXMudmlld1JlZkZvclRlbXBsYXRlKTtcblx0XHR0aGlzLnZpZXdSZWZGb3JUZW1wbGF0ZS5kZXN0cm95KCk7XG5cdH1cbn1cbiJdfQ==
|