@ctrl/ngx-emoji-mart 7.0.0 → 7.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/esm2020/anchors.component.mjs +3 -3
- package/esm2020/category.component.mjs +3 -3
- package/esm2020/emoji-frequently.service.mjs +3 -3
- package/esm2020/emoji-search.service.mjs +3 -3
- package/esm2020/ngx-emoji/emoji.component.mjs +9 -9
- package/esm2020/ngx-emoji/emoji.module.mjs +4 -4
- package/esm2020/ngx-emoji/emoji.service.mjs +3 -3
- package/esm2020/picker.component.mjs +5 -5
- package/esm2020/picker.module.mjs +4 -4
- package/esm2020/preview.component.mjs +3 -3
- package/esm2020/search.component.mjs +3 -3
- package/esm2020/skins.component.mjs +6 -6
- package/fesm2015/ctrl-ngx-emoji-mart-ngx-emoji.mjs +15 -15
- package/fesm2015/ctrl-ngx-emoji-mart-ngx-emoji.mjs.map +1 -1
- package/fesm2015/ctrl-ngx-emoji-mart.mjs +31 -31
- package/fesm2015/ctrl-ngx-emoji-mart.mjs.map +1 -1
- package/fesm2020/ctrl-ngx-emoji-mart-ngx-emoji.mjs +15 -15
- package/fesm2020/ctrl-ngx-emoji-mart-ngx-emoji.mjs.map +1 -1
- package/fesm2020/ctrl-ngx-emoji-mart.mjs +31 -31
- package/fesm2020/ctrl-ngx-emoji-mart.mjs.map +1 -1
- package/ngx-emoji/emoji.component.d.ts +1 -1
- package/package.json +1 -1
@@ -17,8 +17,8 @@ export class AnchorsComponent {
|
|
17
17
|
});
|
18
18
|
}
|
19
19
|
}
|
20
|
-
AnchorsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
21
|
-
AnchorsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
20
|
+
AnchorsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.9", ngImport: i0, type: AnchorsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
21
|
+
AnchorsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.9", type: AnchorsComponent, selector: "emoji-mart-anchors", inputs: { categories: "categories", color: "color", selected: "selected", i18n: "i18n", icons: "icons" }, outputs: { anchorClick: "anchorClick" }, ngImport: i0, template: `
|
22
22
|
<div class="emoji-mart-anchors">
|
23
23
|
<ng-template ngFor let-category [ngForOf]="categories" let-idx="index" [ngForTrackBy]="trackByFn">
|
24
24
|
<span
|
@@ -39,7 +39,7 @@ AnchorsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", versi
|
|
39
39
|
</ng-template>
|
40
40
|
</div>
|
41
41
|
`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
42
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
42
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.9", ngImport: i0, type: AnchorsComponent, decorators: [{
|
43
43
|
type: Component,
|
44
44
|
args: [{
|
45
45
|
selector: 'emoji-mart-anchors',
|
@@ -150,8 +150,8 @@ export class CategoryComponent {
|
|
150
150
|
return newEmojis;
|
151
151
|
}
|
152
152
|
}
|
153
|
-
CategoryComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
154
|
-
CategoryComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
153
|
+
CategoryComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.9", ngImport: i0, type: CategoryComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.EmojiService }, { token: i2.EmojiFrequentlyService }], target: i0.ɵɵFactoryTarget.Component });
|
154
|
+
CategoryComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.9", type: CategoryComponent, selector: "emoji-category", inputs: { emojis: "emojis", hasStickyPosition: "hasStickyPosition", name: "name", perLine: "perLine", totalFrequentLines: "totalFrequentLines", recent: "recent", custom: "custom", i18n: "i18n", id: "id", hideObsolete: "hideObsolete", notFoundEmoji: "notFoundEmoji", virtualize: "virtualize", virtualizeOffset: "virtualizeOffset", emojiIsNative: "emojiIsNative", emojiSkin: "emojiSkin", emojiSize: "emojiSize", emojiSet: "emojiSet", emojiSheetSize: "emojiSheetSize", emojiForceSize: "emojiForceSize", emojiTooltip: "emojiTooltip", emojiBackgroundImageFn: "emojiBackgroundImageFn", emojiImageUrlFn: "emojiImageUrlFn", emojiUseButton: "emojiUseButton" }, outputs: { emojiOver: "emojiOver", emojiLeave: "emojiLeave", emojiClick: "emojiClick" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, static: true }, { propertyName: "label", first: true, predicate: ["label"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: `
|
155
155
|
<section
|
156
156
|
#container
|
157
157
|
class="emoji-mart-category"
|
@@ -234,7 +234,7 @@ CategoryComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", vers
|
|
234
234
|
></ngx-emoji>
|
235
235
|
</ng-template>
|
236
236
|
`, isInline: true, dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i1.EmojiComponent, selector: "ngx-emoji", inputs: ["skin", "set", "sheetSize", "isNative", "forceSize", "tooltip", "size", "emoji", "fallback", "hideObsolete", "sheetRows", "sheetColumns", "useButton", "backgroundImageFn", "imageUrlFn"], outputs: ["emojiOver", "emojiLeave", "emojiClick"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
237
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
237
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.9", ngImport: i0, type: CategoryComponent, decorators: [{
|
238
238
|
type: Component,
|
239
239
|
args: [{
|
240
240
|
selector: 'emoji-category',
|
@@ -76,9 +76,9 @@ export class EmojiFrequentlyService {
|
|
76
76
|
return sliced;
|
77
77
|
}
|
78
78
|
}
|
79
|
-
EmojiFrequentlyService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
80
|
-
EmojiFrequentlyService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.
|
81
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
79
|
+
EmojiFrequentlyService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.9", ngImport: i0, type: EmojiFrequentlyService, deps: [{ token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable });
|
80
|
+
EmojiFrequentlyService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.9", ngImport: i0, type: EmojiFrequentlyService, providedIn: 'root' });
|
81
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.9", ngImport: i0, type: EmojiFrequentlyService, decorators: [{
|
82
82
|
type: Injectable,
|
83
83
|
args: [{ providedIn: 'root' }]
|
84
84
|
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
@@ -168,9 +168,9 @@ export class EmojiSearch {
|
|
168
168
|
return search.join(',');
|
169
169
|
}
|
170
170
|
}
|
171
|
-
EmojiSearch.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
172
|
-
EmojiSearch.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.
|
173
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
171
|
+
EmojiSearch.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.9", ngImport: i0, type: EmojiSearch, deps: [{ token: i1.EmojiService }], target: i0.ɵɵFactoryTarget.Injectable });
|
172
|
+
EmojiSearch.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.9", ngImport: i0, type: EmojiSearch, providedIn: 'root' });
|
173
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.9", ngImport: i0, type: EmojiSearch, decorators: [{
|
174
174
|
type: Injectable,
|
175
175
|
args: [{ providedIn: 'root' }]
|
176
176
|
}], ctorParameters: function () { return [{ type: i1.EmojiService }]; } });
|
@@ -19,7 +19,7 @@ export class EmojiComponent {
|
|
19
19
|
this.emojiOver = new EventEmitter();
|
20
20
|
this.emojiLeave = new EventEmitter();
|
21
21
|
this.emojiClick = new EventEmitter();
|
22
|
-
this.title =
|
22
|
+
this.title = undefined;
|
23
23
|
this.label = '';
|
24
24
|
this.custom = false;
|
25
25
|
this.isVisible = true;
|
@@ -116,15 +116,15 @@ export class EmojiComponent {
|
|
116
116
|
this.emojiLeave.emit({ emoji, $event });
|
117
117
|
}
|
118
118
|
}
|
119
|
-
EmojiComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
120
|
-
EmojiComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
119
|
+
EmojiComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.9", ngImport: i0, type: EmojiComponent, deps: [{ token: i1.EmojiService }], target: i0.ɵɵFactoryTarget.Component });
|
120
|
+
EmojiComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.9", type: EmojiComponent, selector: "ngx-emoji", inputs: { skin: "skin", set: "set", sheetSize: "sheetSize", isNative: "isNative", forceSize: "forceSize", tooltip: "tooltip", size: "size", emoji: "emoji", fallback: "fallback", hideObsolete: "hideObsolete", sheetRows: "sheetRows", sheetColumns: "sheetColumns", useButton: "useButton", backgroundImageFn: "backgroundImageFn", imageUrlFn: "imageUrlFn" }, outputs: { emojiOver: "emojiOver", emojiLeave: "emojiLeave", emojiClick: "emojiClick" }, usesOnChanges: true, ngImport: i0, template: `
|
121
121
|
<button
|
122
122
|
*ngIf="useButton && isVisible"
|
123
123
|
type="button"
|
124
124
|
(click)="handleClick($event)"
|
125
125
|
(mouseenter)="handleOver($event)"
|
126
126
|
(mouseleave)="handleLeave($event)"
|
127
|
-
[title]="title"
|
127
|
+
[attr.title]="title"
|
128
128
|
[attr.aria-label]="label"
|
129
129
|
class="emoji-mart-emoji"
|
130
130
|
[class.emoji-mart-emoji-native]="isNative"
|
@@ -141,7 +141,7 @@ EmojiComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version
|
|
141
141
|
(click)="handleClick($event)"
|
142
142
|
(mouseenter)="handleOver($event)"
|
143
143
|
(mouseleave)="handleLeave($event)"
|
144
|
-
[title]="title"
|
144
|
+
[attr.title]="title"
|
145
145
|
[attr.aria-label]="label"
|
146
146
|
class="emoji-mart-emoji"
|
147
147
|
[class.emoji-mart-emoji-native]="isNative"
|
@@ -153,7 +153,7 @@ EmojiComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version
|
|
153
153
|
</span>
|
154
154
|
</span>
|
155
155
|
`, isInline: true, dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
156
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
156
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.9", ngImport: i0, type: EmojiComponent, decorators: [{
|
157
157
|
type: Component,
|
158
158
|
args: [{
|
159
159
|
selector: 'ngx-emoji',
|
@@ -164,7 +164,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
|
|
164
164
|
(click)="handleClick($event)"
|
165
165
|
(mouseenter)="handleOver($event)"
|
166
166
|
(mouseleave)="handleLeave($event)"
|
167
|
-
[title]="title"
|
167
|
+
[attr.title]="title"
|
168
168
|
[attr.aria-label]="label"
|
169
169
|
class="emoji-mart-emoji"
|
170
170
|
[class.emoji-mart-emoji-native]="isNative"
|
@@ -181,7 +181,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
|
|
181
181
|
(click)="handleClick($event)"
|
182
182
|
(mouseenter)="handleOver($event)"
|
183
183
|
(mouseleave)="handleLeave($event)"
|
184
|
-
[title]="title"
|
184
|
+
[attr.title]="title"
|
185
185
|
[attr.aria-label]="label"
|
186
186
|
class="emoji-mart-emoji"
|
187
187
|
[class.emoji-mart-emoji-native]="isNative"
|
@@ -233,4 +233,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
|
|
233
233
|
}], imageUrlFn: [{
|
234
234
|
type: Input
|
235
235
|
}] } });
|
236
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1vamkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9waWNrZXIvbmd4LWVtb2ppL2Vtb2ppLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUUsb0JBQW9CLEVBQWdCLE1BQU0saUJBQWlCLENBQUM7Ozs7QUFtRXJFLE1BQU0sT0FBTyxjQUFjO0lBNEJ6QixZQUFvQixZQUEwQjtRQUExQixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQTNCckMsU0FBSSxHQUFrQixDQUFDLENBQUM7UUFDeEIsUUFBRyxHQUFpQixPQUFPLENBQUM7UUFDNUIsY0FBUyxHQUF1QixFQUFFLENBQUM7UUFDNUMsdUNBQXVDO1FBQzlCLGFBQVEsR0FBc0IsS0FBSyxDQUFDO1FBQ3BDLGNBQVMsR0FBdUIsS0FBSyxDQUFDO1FBQ3RDLFlBQU8sR0FBcUIsS0FBSyxDQUFDO1FBQ2xDLFNBQUksR0FBa0IsRUFBRSxDQUFDO1FBQ3pCLFVBQUssR0FBbUIsRUFBRSxDQUFDO1FBRTNCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBSXBCLGNBQVMsR0FBdUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNuRCxlQUFVLEdBQXdCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDckQsZUFBVSxHQUF3QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRS9ELFVBQUssR0FBRyxFQUFFLENBQUM7UUFDWCxVQUFLLEdBQUcsRUFBRSxDQUFDO1FBRVgsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUNmLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFDakIsbUZBQW1GO1FBQzFFLHNCQUFpQixHQUErQixvQkFBb0IsQ0FBQztJQUc3QixDQUFDO0lBRWxELFdBQVc7UUFDVCxJQUFJLENBQUMsSUFB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WCxLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDSSxTQUFTO3NCQUFsQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFRRSxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgRW1vamlEYXRhIH0gZnJvbSAnLi9kYXRhL2RhdGEuaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBERUZBVUxUX0JBQ0tHUk9VTkRGTiwgRW1vamlTZXJ2aWNlIH0gZnJvbSAnLi9lbW9qaS5zZXJ2aWNlJztcblxuZXhwb3J0IGludGVyZmFjZSBFbW9qaSB7XG4gIC8qKiBSZW5kZXJzIHRoZSBuYXRpdmUgdW5pY29kZSBlbW9qaSAqL1xuICBpc05hdGl2ZTogYm9vbGVhbjtcbiAgZm9yY2VTaXplOiBib29sZWFuO1xuICB0b29sdGlwOiBib29sZWFuO1xuICBza2luOiAxIHwgMiB8IDMgfCA0IHwgNSB8IDY7XG4gIHNoZWV0U2l6ZTogMTYgfCAyMCB8IDMyIHwgNjQgfCA3MjtcbiAgc2hlZXRSb3dzPzogbnVtYmVyO1xuICBzZXQ6ICdhcHBsZScgfCAnZ29vZ2xlJyB8ICd0d2l0dGVyJyB8ICdmYWNlYm9vaycgfCAnJztcbiAgc2l6ZTogbnVtYmVyO1xuICBlbW9qaTogc3RyaW5nIHwgRW1vamlEYXRhO1xuICBiYWNrZ3JvdW5kSW1hZ2VGbjogKHNldDogc3RyaW5nLCBzaGVldFNpemU6IG51bWJlcikgPT4gc3RyaW5nO1xuICBmYWxsYmFjaz86IChkYXRhOiBhbnksIHByb3BzOiBhbnkpID0+IHN0cmluZztcbiAgZW1vamlPdmVyOiBFdmVudEVtaXR0ZXI8RW1vamlFdmVudD47XG4gIGVtb2ppTGVhdmU6IEV2ZW50RW1pdHRlcjxFbW9qaUV2ZW50PjtcbiAgZW1vamlDbGljazogRXZlbnRFbWl0dGVyPEVtb2ppRXZlbnQ+O1xuICBpbWFnZVVybEZuPzogKGVtb2ppOiBFbW9qaURhdGEgfCBudWxsKSA9PiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW1vamlFdmVudCB7XG4gIGVtb2ppOiBFbW9qaURhdGE7XG4gICRldmVudDogRXZlbnQ7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25neC1lbW9qaScsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGJ1dHRvblxuICAgICAgKm5nSWY9XCJ1c2VCdXR0b24gJiYgaXNWaXNpYmxlXCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgKGNsaWNrKT1cImhhbmRsZUNsaWNrKCRldmVudClcIlxuICAgICAgKG1vdXNlZW50ZXIpPVwiaGFuZGxlT3ZlcigkZXZlbnQpXCJcbiAgICAgIChtb3VzZWxlYXZlKT1cImhhbmRsZUxlYXZlKCRldmVudClcIlxuICAgICAgW3RpdGxlXT1cInRpdGxlXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwibGFiZWxcIlxuICAgICAgY2xhc3M9XCJlbW9qaS1tYXJ0LWVtb2ppXCJcbiAgICAgIFtjbGFzcy5lbW9qaS1tYXJ0LWVtb2ppLW5hdGl2ZV09XCJpc05hdGl2ZVwiXG4gICAgICBbY2xhc3MuZW1vamktbWFydC1lbW9qaS1jdXN0b21dPVwiY3VzdG9tXCJcbiAgICA+XG4gICAgICA8c3BhbiBbbmdTdHlsZV09XCJzdHlsZVwiPlxuICAgICAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwiaXNOYXRpdmVcIj57eyB1bmlmaWVkIH19PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgPC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuXG4gICAgPHNwYW5cbiAgICAgICpuZ0lmPVwiIXVzZUJ1dHRvbiAmJiBpc1Zpc2libGVcIlxuICAgICAgKGNsaWNrKT1cImhhbmRsZUNsaWNrKCRldmVudClcIlxuICAgICAgKG1vdXNlZW50ZXIpPVwiaGFuZGxlT3ZlcigkZXZlbnQpXCJcbiAgICAgIChtb3VzZWxlYXZlKT1cImhhbmRsZUxlYXZlKCRldmVudClcIlxuICAgICAgW3RpdGxlXT1cInRpdGxlXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwibGFiZWxcIlxuICAgICAgY2xhc3M9XCJlbW9qaS1tYXJ0LWVtb2ppXCJcbiAgICAgIFtjbGFzcy5lbW9qaS1tYXJ0LWVtb2ppLW5hdGl2ZV09XCJpc05hdGl2ZVwiXG4gICAgICBbY2xhc3MuZW1vamktbWFydC1lbW9qaS1jdXN0b21dPVwiY3VzdG9tXCJcbiAgICA+XG4gICAgICA8c3BhbiBbbmdTdHlsZV09XCJzdHlsZVwiPlxuICAgICAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwiaXNOYXRpdmVcIj57eyB1bmlmaWVkIH19PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgPC9zcGFuPlxuICAgIDwvc3Bhbj5cbiAgYCxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByZXNlcnZlV2hpdGVzcGFjZXM6IGZhbHNlLFxufSlcbmV4cG9ydCBjbGFzcyBFbW9qaUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgRW1vamkge1xuICBASW5wdXQoKSBza2luOiBFbW9qaVsnc2tpbiddID0gMTtcbiAgQElucHV0KCkgc2V0OiBFbW9qaVsnc2V0J10gPSAnYXBwbGUnO1xuICBASW5wdXQoKSBzaGVldFNpemU6IEVtb2ppWydzaGVldFNpemUnXSA9IDY0O1xuICAvKiogUmVuZGVycyB0aGUgbmF0aXZlIHVuaWNvZGUgZW1vamkgKi9cbiAgQElucHV0KCkgaXNOYXRpdmU6IEVtb2ppWydpc05hdGl2ZSddID0gZmFsc2U7XG4gIEBJbnB1dCgpIGZvcmNlU2l6ZTogRW1vamlbJ2ZvcmNlU2l6ZSddID0gZmFsc2U7XG4gIEBJbnB1dCgpIHRvb2x0aXA6IEVtb2ppWyd0b29sdGlwJ10gPSBmYWxzZTtcbiAgQElucHV0KCkgc2l6ZTogRW1vamlbJ3NpemUnXSA9IDI0O1xuICBASW5wdXQoKSBlbW9qaTogRW1vamlbJ2Vtb2ppJ10gPSAnJztcbiAgQElucHV0KCkgZmFsbGJhY2s/OiBFbW9qaVsnZmFsbGJhY2snXTtcbiAgQElucHV0KCkgaGlkZU9ic29sZXRlID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNoZWV0Um93cz86IG51bWJlcjtcbiAgQElucHV0KCkgc2hlZXRDb2x1bW5zPzogbnVtYmVyO1xuICBASW5wdXQoKSB1c2VCdXR0b24/OiBib29sZWFuO1xuICBAT3V0cHV0KCkgZW1vamlPdmVyOiBFbW9qaVsnZW1vamlPdmVyJ10gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBlbW9qaUxlYXZlOiBFbW9qaVsnZW1vamlMZWF2ZSddID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgZW1vamlDbGljazogRW1vamlbJ2Vtb2ppQ2xpY2snXSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgc3R5bGU6IGFueTtcbiAgdGl0bGUgPSAnJztcbiAgbGFiZWwgPSAnJztcbiAgdW5pZmllZD86IHN0cmluZyB8IG51bGw7XG4gIGN1c3RvbSA9IGZhbHNlO1xuICBpc1Zpc2libGUgPSB0cnVlO1xuICAvLyBUT0RPOiByZXBsYWNlIDQuMC4zIHcvIGR5bmFtaWMgZ2V0IHZlcmlzb24gZnJvbSBlbW9qaS1kYXRhc291cmNlIGluIHBhY2thZ2UuanNvblxuICBASW5wdXQoKSBiYWNrZ3JvdW5kSW1hZ2VGbjogRW1vamlbJ2JhY2tncm91bmRJbWFnZUZuJ10gPSBERUZBVUxUX0JBQ0tHUk9VTkRGTjtcbiAgQElucHV0KCkgaW1hZ2VVcmxGbj86IEVtb2ppWydpbWFnZVVybEZuJ107XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbW9qaVNlcnZpY2U6IEVtb2ppU2VydmljZSkge31cblxuICBuZ09uQ2hhbmdlcygpIHtcbiAgICBpZiAoIXRoaXMuZW1vamkpIHtcbiAgICAgIHJldHVybiAodGhpcy5pc1Zpc2libGUgPSBmYWxzZSk7XG4gICAgfVxuICAgIGNvbnN0IGRhdGEgPSB0aGlzLmdldERhdGEoKTtcbiAgICBpZiAoIWRhdGEpIHtcbiAgICAgIHJldHVybiAodGhpcy5pc1Zpc2libGUgPSBmYWxzZSk7XG4gICAgfVxuICAgIC8vIGNvbnN0IGNoaWxkcmVuID0gdGhpcy5jaGlsZHJlbjtcbiAgICB0aGlzLnVuaWZpZWQgPSBkYXRhLm5hdGl2ZSB8fCBudWxsO1xuICAgIGlmIChkYXRhLmN1c3RvbSkge1xuICAgICAgdGhpcy5jdXN0b20gPSBkYXRhLmN1c3RvbTtcbiAgICB9XG4gICAgaWYgKCFkYXRhLnVuaWZpZWQgJiYgIWRhdGEuY3VzdG9tKSB7XG4gICAgICByZXR1cm4gKHRoaXMuaXNWaXNpYmxlID0gZmFsc2UpO1xuICAgIH1cbiAgICBpZiAodGhpcy50b29sdGlwKSB7XG4gICAgICB0aGlzLnRpdGxlID0gZGF0YS5zaG9ydE5hbWVzWzBdO1xuICAgIH1cbiAgICBpZiAoZGF0YS5vYnNvbGV0ZWRCeSAmJiB0aGlzLmhpZGVPYnNvbGV0ZSkge1xuICAgICAgcmV0dXJuICh0aGlzLmlzVmlzaWJsZSA9IGZhbHNlKTtcbiAgICB9XG5cbiAgICB0aGlzLmxhYmVsID0gW2RhdGEubmF0aXZlXS5jb25jYXQoZGF0YS5zaG9ydE5hbWVzKS5maWx0ZXIoQm9vbGVhbikuam9pbignLCAnKTtcblxuICAgIGlmICh0aGlzLmlzTmF0aXZlICYmIGRhdGEudW5pZmllZCAmJiBkYXRhLm5hdGl2ZSkge1xuICAgICAgLy8gaGlkZSBvbGRlciBlbW9qaSBiZWZvcmUgdGhlIHNwbGl0IGludG8gZ2VuZGVyZWQgZW1vamlcbiAgICAgIHRoaXMuc3R5bGUgPSB7IGZvbnRTaXplOiBgJHt0aGlzLnNpemV9cHhgIH07XG5cbiAgICAgIGlmICh0aGlzLmZvcmNlU2l6ZSkge1xuICAgICAgICB0aGlzLnN0eWxlLmRpc3BsYXkgPSAnaW5saW5lLWJsb2NrJztcbiAgICAgICAgdGhpcy5zdHlsZS53aWR0aCA9IGAke3RoaXMuc2l6ZX1weGA7XG4gICAgICAgIHRoaXMuc3R5bGUuaGVpZ2h0ID0gYCR7dGhpcy5zaXplfXB4YDtcbiAgICAgICAgdGhpcy5zdHlsZVsnd29yZC1icmVhayddID0gJ2tlZXAtYWxsJztcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGRhdGEuY3VzdG9tKSB7XG4gICAgICB0aGlzLnN0eWxlID0ge1xuICAgICAgICB3aWR0aDogYCR7dGhpcy5zaXplfXB4YCxcbiAgICAgICAgaGVpZ2h0OiBgJHt0aGlzLnNpemV9cHhgLFxuICAgICAgICBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJyxcbiAgICAgIH07XG4gICAgICBpZiAoZGF0YS5zcHJpdGVVcmwgJiYgdGhpcy5zaGVldFJvd3MgJiYgdGhpcy5zaGVldENvbHVtbnMpIHtcbiAgICAgICAgdGhpcy5zdHlsZSA9IHtcbiAgICAgICAgICAuLi50aGlzLnN0eWxlLFxuICAgICAgICAgIGJhY2tncm91bmRJbWFnZTogYHVybCgke2RhdGEuc3ByaXRlVXJsfSlgLFxuICAgICAgICAgIGJhY2tncm91bmRTaXplOiBgJHsxMDAgKiB0aGlzLnNoZWV0Q29sdW1uc30lICR7MTAwICogdGhpcy5zaGVldFJvd3N9JWAsXG4gICAgICAgICAgYmFja2dyb3VuZFBvc2l0aW9uOiB0aGlzLmVtb2ppU2VydmljZS5nZXRTcHJpdGVQb3NpdGlvbihkYXRhLnNoZWV0LCB0aGlzLnNoZWV0Q29sdW1ucyksXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnN0eWxlID0ge1xuICAgICAgICAgIC4uLnRoaXMuc3R5bGUsXG4gICAgICAgICAgYmFja2dyb3VuZEltYWdlOiBgdXJsKCR7ZGF0YS5pbWFnZVVybH0pYCxcbiAgICAgICAgICBiYWNrZ3JvdW5kU2l6ZTogJ2NvbnRhaW4nLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoZGF0YS5oaWRkZW4ubGVuZ3RoICYmIGRhdGEuaGlkZGVuLmluY2x1ZGVzKHRoaXMuc2V0KSkge1xuICAgICAgICBpZiAodGhpcy5mYWxsYmFjaykge1xuICAgICAgICAgIHRoaXMuc3R5bGUgPSB7IGZvbnRTaXplOiBgJHt0aGlzLnNpemV9cHhgIH07XG4gICAgICAgICAgdGhpcy51bmlmaWVkID0gdGhpcy5mYWxsYmFjayhkYXRhLCB0aGlzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gKHRoaXMuaXNWaXNpYmxlID0gZmFsc2UpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnN0eWxlID0gdGhpcy5lbW9qaVNlcnZpY2UuZW1vamlTcHJpdGVTdHlsZXMoXG4gICAgICAgICAgZGF0YS5zaGVldCxcbiAgICAgICAgICB0aGlzLnNldCxcbiAgICAgICAgICB0aGlzLnNpemUsXG4gICAgICAgICAgdGhpcy5zaGVldFNpemUsXG4gICAgICAgICAgdGhpcy5zaGVldFJvd3MsXG4gICAgICAgICAgdGhpcy5iYWNrZ3JvdW5kSW1hZ2VGbixcbiAgICAgICAgICB0aGlzLnNoZWV0Q29sdW1ucyxcbiAgICAgICAgICB0aGlzLmltYWdlVXJsRm4/Lih0aGlzLmdldERhdGEoKSksXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAodGhpcy5pc1Zpc2libGUgPSB0cnVlKTtcbiAgfVxuXG4gIGdldERhdGEoKSB7XG4gICAgcmV0dXJuIHRoaXMuZW1vamlTZXJ2aWNlLmdldERhdGEodGhpcy5lbW9qaSwgdGhpcy5za2luLCB0aGlzLnNldCk7XG4gIH1cblxuICBnZXRTYW5pdGl6ZWREYXRhKCk6IEVtb2ppRGF0YSB7XG4gICAgcmV0dXJuIHRoaXMuZW1vamlTZXJ2aWNlLmdldFNhbml0aXplZERhdGEodGhpcy5lbW9qaSwgdGhpcy5za2luLCB0aGlzLnNldCkgYXMgRW1vamlEYXRhO1xuICB9XG5cbiAgaGFuZGxlQ2xpY2soJGV2ZW50OiBFdmVudCkge1xuICAgIGNvbnN0IGVtb2ppID0gdGhpcy5nZXRTYW5pdGl6ZWREYXRhKCk7XG4gICAgdGhpcy5lbW9qaUNsaWNrLmVtaXQoeyBlbW9qaSwgJGV2ZW50IH0pO1xuICB9XG5cbiAgaGFuZGxlT3ZlcigkZXZlbnQ6IEV2ZW50KSB7XG4gICAgY29uc3QgZW1vamkgPSB0aGlzLmdldFNhbml0aXplZERhdGEoKTtcbiAgICB0aGlzLmVtb2ppT3Zlci5lbWl0KHsgZW1vamksICRldmVudCB9KTtcbiAgfVxuXG4gIGhhbmRsZUxlYXZlKCRldmVudDogRXZlbnQpIHtcbiAgICBjb25zdCBlbW9qaSA9IHRoaXMuZ2V0U2FuaXRpemVkRGF0YSgpO1xuICAgIHRoaXMuZW1vamlMZWF2ZS5lbWl0KHsgZW1vamksICRldmVudCB9KTtcbiAgfVxufVxuIl19
|
236
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1vamkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9waWNrZXIvbmd4LWVtb2ppL2Vtb2ppLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUUsb0JBQW9CLEVBQWdCLE1BQU0saUJBQWlCLENBQUM7Ozs7QUFtRXJFLE1BQU0sT0FBTyxjQUFjO0lBNEJ6QixZQUFvQixZQUEwQjtRQUExQixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQTNCckMsU0FBSSxHQUFrQixDQUFDLENBQUM7UUFDeEIsUUFBRyxHQUFpQixPQUFPLENBQUM7UUFDNUIsY0FBUyxHQUF1QixFQUFFLENBQUM7UUFDNUMsdUNBQXVDO1FBQzlCLGFBQVEsR0FBc0IsS0FBSyxDQUFDO1FBQ3BDLGNBQVMsR0FBdUIsS0FBSyxDQUFDO1FBQ3RDLFlBQU8sR0FBcUIsS0FBSyxDQUFDO1FBQ2xDLFNBQUksR0FBa0IsRUFBRSxDQUFDO1FBQ3pCLFVBQUssR0FBbUIsRUFBRSxDQUFDO1FBRTNCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBSXBCLGNBQVMsR0FBdUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNuRCxlQUFVLEdBQXdCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDckQsZUFBVSxHQUF3QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRS9ELFVBQUssR0FBWSxTQUFTLENBQUM7UUFDM0IsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUVYLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFDZixjQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLG1GQUFtRjtRQUMxRSxzQkFBaUIsR0FBK0Isb0JBQW9CLENBQUM7SUFHN0IsQ0FBQztJQUVsRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLElB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QVgsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0ksU0FBUztzQkFBbEIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBUUUsaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEVtb2ppRGF0YSB9IGZyb20gJy4vZGF0YS9kYXRhLmludGVyZmFjZXMnO1xuaW1wb3J0IHsgREVGQVVMVF9CQUNLR1JPVU5ERk4sIEVtb2ppU2VydmljZSB9IGZyb20gJy4vZW1vamkuc2VydmljZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW1vamkge1xuICAvKiogUmVuZGVycyB0aGUgbmF0aXZlIHVuaWNvZGUgZW1vamkgKi9cbiAgaXNOYXRpdmU6IGJvb2xlYW47XG4gIGZvcmNlU2l6ZTogYm9vbGVhbjtcbiAgdG9vbHRpcDogYm9vbGVhbjtcbiAgc2tpbjogMSB8IDIgfCAzIHwgNCB8IDUgfCA2O1xuICBzaGVldFNpemU6IDE2IHwgMjAgfCAzMiB8IDY0IHwgNzI7XG4gIHNoZWV0Um93cz86IG51bWJlcjtcbiAgc2V0OiAnYXBwbGUnIHwgJ2dvb2dsZScgfCAndHdpdHRlcicgfCAnZmFjZWJvb2snIHwgJyc7XG4gIHNpemU6IG51bWJlcjtcbiAgZW1vamk6IHN0cmluZyB8IEVtb2ppRGF0YTtcbiAgYmFja2dyb3VuZEltYWdlRm46IChzZXQ6IHN0cmluZywgc2hlZXRTaXplOiBudW1iZXIpID0+IHN0cmluZztcbiAgZmFsbGJhY2s/OiAoZGF0YTogYW55LCBwcm9wczogYW55KSA9PiBzdHJpbmc7XG4gIGVtb2ppT3ZlcjogRXZlbnRFbWl0dGVyPEVtb2ppRXZlbnQ+O1xuICBlbW9qaUxlYXZlOiBFdmVudEVtaXR0ZXI8RW1vamlFdmVudD47XG4gIGVtb2ppQ2xpY2s6IEV2ZW50RW1pdHRlcjxFbW9qaUV2ZW50PjtcbiAgaW1hZ2VVcmxGbj86IChlbW9qaTogRW1vamlEYXRhIHwgbnVsbCkgPT4gc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVtb2ppRXZlbnQge1xuICBlbW9qaTogRW1vamlEYXRhO1xuICAkZXZlbnQ6IEV2ZW50O1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZ3gtZW1vamknLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxidXR0b25cbiAgICAgICpuZ0lmPVwidXNlQnV0dG9uICYmIGlzVmlzaWJsZVwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIChjbGljayk9XCJoYW5kbGVDbGljaygkZXZlbnQpXCJcbiAgICAgIChtb3VzZWVudGVyKT1cImhhbmRsZU92ZXIoJGV2ZW50KVwiXG4gICAgICAobW91c2VsZWF2ZSk9XCJoYW5kbGVMZWF2ZSgkZXZlbnQpXCJcbiAgICAgIFthdHRyLnRpdGxlXT1cInRpdGxlXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwibGFiZWxcIlxuICAgICAgY2xhc3M9XCJlbW9qaS1tYXJ0LWVtb2ppXCJcbiAgICAgIFtjbGFzcy5lbW9qaS1tYXJ0LWVtb2ppLW5hdGl2ZV09XCJpc05hdGl2ZVwiXG4gICAgICBbY2xhc3MuZW1vamktbWFydC1lbW9qaS1jdXN0b21dPVwiY3VzdG9tXCJcbiAgICA+XG4gICAgICA8c3BhbiBbbmdTdHlsZV09XCJzdHlsZVwiPlxuICAgICAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwiaXNOYXRpdmVcIj57eyB1bmlmaWVkIH19PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgPC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuXG4gICAgPHNwYW5cbiAgICAgICpuZ0lmPVwiIXVzZUJ1dHRvbiAmJiBpc1Zpc2libGVcIlxuICAgICAgKGNsaWNrKT1cImhhbmRsZUNsaWNrKCRldmVudClcIlxuICAgICAgKG1vdXNlZW50ZXIpPVwiaGFuZGxlT3ZlcigkZXZlbnQpXCJcbiAgICAgIChtb3VzZWxlYXZlKT1cImhhbmRsZUxlYXZlKCRldmVudClcIlxuICAgICAgW2F0dHIudGl0bGVdPVwidGl0bGVcIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJsYWJlbFwiXG4gICAgICBjbGFzcz1cImVtb2ppLW1hcnQtZW1vamlcIlxuICAgICAgW2NsYXNzLmVtb2ppLW1hcnQtZW1vamktbmF0aXZlXT1cImlzTmF0aXZlXCJcbiAgICAgIFtjbGFzcy5lbW9qaS1tYXJ0LWVtb2ppLWN1c3RvbV09XCJjdXN0b21cIlxuICAgID5cbiAgICAgIDxzcGFuIFtuZ1N0eWxlXT1cInN0eWxlXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJpc05hdGl2ZVwiPnt7IHVuaWZpZWQgfX08L25nLXRlbXBsYXRlPlxuICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICA8L3NwYW4+XG4gICAgPC9zcGFuPlxuICBgLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJlc2VydmVXaGl0ZXNwYWNlczogZmFsc2UsXG59KVxuZXhwb3J0IGNsYXNzIEVtb2ppQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBFbW9qaSB7XG4gIEBJbnB1dCgpIHNraW46IEVtb2ppWydza2luJ10gPSAxO1xuICBASW5wdXQoKSBzZXQ6IEVtb2ppWydzZXQnXSA9ICdhcHBsZSc7XG4gIEBJbnB1dCgpIHNoZWV0U2l6ZTogRW1vamlbJ3NoZWV0U2l6ZSddID0gNjQ7XG4gIC8qKiBSZW5kZXJzIHRoZSBuYXRpdmUgdW5pY29kZSBlbW9qaSAqL1xuICBASW5wdXQoKSBpc05hdGl2ZTogRW1vamlbJ2lzTmF0aXZlJ10gPSBmYWxzZTtcbiAgQElucHV0KCkgZm9yY2VTaXplOiBFbW9qaVsnZm9yY2VTaXplJ10gPSBmYWxzZTtcbiAgQElucHV0KCkgdG9vbHRpcDogRW1vamlbJ3Rvb2x0aXAnXSA9IGZhbHNlO1xuICBASW5wdXQoKSBzaXplOiBFbW9qaVsnc2l6ZSddID0gMjQ7XG4gIEBJbnB1dCgpIGVtb2ppOiBFbW9qaVsnZW1vamknXSA9ICcnO1xuICBASW5wdXQoKSBmYWxsYmFjaz86IEVtb2ppWydmYWxsYmFjayddO1xuICBASW5wdXQoKSBoaWRlT2Jzb2xldGUgPSBmYWxzZTtcbiAgQElucHV0KCkgc2hlZXRSb3dzPzogbnVtYmVyO1xuICBASW5wdXQoKSBzaGVldENvbHVtbnM/OiBudW1iZXI7XG4gIEBJbnB1dCgpIHVzZUJ1dHRvbj86IGJvb2xlYW47XG4gIEBPdXRwdXQoKSBlbW9qaU92ZXI6IEVtb2ppWydlbW9qaU92ZXInXSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGVtb2ppTGVhdmU6IEVtb2ppWydlbW9qaUxlYXZlJ10gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBlbW9qaUNsaWNrOiBFbW9qaVsnZW1vamlDbGljayddID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBzdHlsZTogYW55O1xuICB0aXRsZT86IHN0cmluZyA9IHVuZGVmaW5lZDtcbiAgbGFiZWwgPSAnJztcbiAgdW5pZmllZD86IHN0cmluZyB8IG51bGw7XG4gIGN1c3RvbSA9IGZhbHNlO1xuICBpc1Zpc2libGUgPSB0cnVlO1xuICAvLyBUT0RPOiByZXBsYWNlIDQuMC4zIHcvIGR5bmFtaWMgZ2V0IHZlcmlzb24gZnJvbSBlbW9qaS1kYXRhc291cmNlIGluIHBhY2thZ2UuanNvblxuICBASW5wdXQoKSBiYWNrZ3JvdW5kSW1hZ2VGbjogRW1vamlbJ2JhY2tncm91bmRJbWFnZUZuJ10gPSBERUZBVUxUX0JBQ0tHUk9VTkRGTjtcbiAgQElucHV0KCkgaW1hZ2VVcmxGbj86IEVtb2ppWydpbWFnZVVybEZuJ107XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbW9qaVNlcnZpY2U6IEVtb2ppU2VydmljZSkge31cblxuICBuZ09uQ2hhbmdlcygpIHtcbiAgICBpZiAoIXRoaXMuZW1vamkpIHtcbiAgICAgIHJldHVybiAodGhpcy5pc1Zpc2libGUgPSBmYWxzZSk7XG4gICAgfVxuICAgIGNvbnN0IGRhdGEgPSB0aGlzLmdldERhdGEoKTtcbiAgICBpZiAoIWRhdGEpIHtcbiAgICAgIHJldHVybiAodGhpcy5pc1Zpc2libGUgPSBmYWxzZSk7XG4gICAgfVxuICAgIC8vIGNvbnN0IGNoaWxkcmVuID0gdGhpcy5jaGlsZHJlbjtcbiAgICB0aGlzLnVuaWZpZWQgPSBkYXRhLm5hdGl2ZSB8fCBudWxsO1xuICAgIGlmIChkYXRhLmN1c3RvbSkge1xuICAgICAgdGhpcy5jdXN0b20gPSBkYXRhLmN1c3RvbTtcbiAgICB9XG4gICAgaWYgKCFkYXRhLnVuaWZpZWQgJiYgIWRhdGEuY3VzdG9tKSB7XG4gICAgICByZXR1cm4gKHRoaXMuaXNWaXNpYmxlID0gZmFsc2UpO1xuICAgIH1cbiAgICBpZiAodGhpcy50b29sdGlwKSB7XG4gICAgICB0aGlzLnRpdGxlID0gZGF0YS5zaG9ydE5hbWVzWzBdO1xuICAgIH1cbiAgICBpZiAoZGF0YS5vYnNvbGV0ZWRCeSAmJiB0aGlzLmhpZGVPYnNvbGV0ZSkge1xuICAgICAgcmV0dXJuICh0aGlzLmlzVmlzaWJsZSA9IGZhbHNlKTtcbiAgICB9XG5cbiAgICB0aGlzLmxhYmVsID0gW2RhdGEubmF0aXZlXS5jb25jYXQoZGF0YS5zaG9ydE5hbWVzKS5maWx0ZXIoQm9vbGVhbikuam9pbignLCAnKTtcblxuICAgIGlmICh0aGlzLmlzTmF0aXZlICYmIGRhdGEudW5pZmllZCAmJiBkYXRhLm5hdGl2ZSkge1xuICAgICAgLy8gaGlkZSBvbGRlciBlbW9qaSBiZWZvcmUgdGhlIHNwbGl0IGludG8gZ2VuZGVyZWQgZW1vamlcbiAgICAgIHRoaXMuc3R5bGUgPSB7IGZvbnRTaXplOiBgJHt0aGlzLnNpemV9cHhgIH07XG5cbiAgICAgIGlmICh0aGlzLmZvcmNlU2l6ZSkge1xuICAgICAgICB0aGlzLnN0eWxlLmRpc3BsYXkgPSAnaW5saW5lLWJsb2NrJztcbiAgICAgICAgdGhpcy5zdHlsZS53aWR0aCA9IGAke3RoaXMuc2l6ZX1weGA7XG4gICAgICAgIHRoaXMuc3R5bGUuaGVpZ2h0ID0gYCR7dGhpcy5zaXplfXB4YDtcbiAgICAgICAgdGhpcy5zdHlsZVsnd29yZC1icmVhayddID0gJ2tlZXAtYWxsJztcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGRhdGEuY3VzdG9tKSB7XG4gICAgICB0aGlzLnN0eWxlID0ge1xuICAgICAgICB3aWR0aDogYCR7dGhpcy5zaXplfXB4YCxcbiAgICAgICAgaGVpZ2h0OiBgJHt0aGlzLnNpemV9cHhgLFxuICAgICAgICBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJyxcbiAgICAgIH07XG4gICAgICBpZiAoZGF0YS5zcHJpdGVVcmwgJiYgdGhpcy5zaGVldFJvd3MgJiYgdGhpcy5zaGVldENvbHVtbnMpIHtcbiAgICAgICAgdGhpcy5zdHlsZSA9IHtcbiAgICAgICAgICAuLi50aGlzLnN0eWxlLFxuICAgICAgICAgIGJhY2tncm91bmRJbWFnZTogYHVybCgke2RhdGEuc3ByaXRlVXJsfSlgLFxuICAgICAgICAgIGJhY2tncm91bmRTaXplOiBgJHsxMDAgKiB0aGlzLnNoZWV0Q29sdW1uc30lICR7MTAwICogdGhpcy5zaGVldFJvd3N9JWAsXG4gICAgICAgICAgYmFja2dyb3VuZFBvc2l0aW9uOiB0aGlzLmVtb2ppU2VydmljZS5nZXRTcHJpdGVQb3NpdGlvbihkYXRhLnNoZWV0LCB0aGlzLnNoZWV0Q29sdW1ucyksXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnN0eWxlID0ge1xuICAgICAgICAgIC4uLnRoaXMuc3R5bGUsXG4gICAgICAgICAgYmFja2dyb3VuZEltYWdlOiBgdXJsKCR7ZGF0YS5pbWFnZVVybH0pYCxcbiAgICAgICAgICBiYWNrZ3JvdW5kU2l6ZTogJ2NvbnRhaW4nLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoZGF0YS5oaWRkZW4ubGVuZ3RoICYmIGRhdGEuaGlkZGVuLmluY2x1ZGVzKHRoaXMuc2V0KSkge1xuICAgICAgICBpZiAodGhpcy5mYWxsYmFjaykge1xuICAgICAgICAgIHRoaXMuc3R5bGUgPSB7IGZvbnRTaXplOiBgJHt0aGlzLnNpemV9cHhgIH07XG4gICAgICAgICAgdGhpcy51bmlmaWVkID0gdGhpcy5mYWxsYmFjayhkYXRhLCB0aGlzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gKHRoaXMuaXNWaXNpYmxlID0gZmFsc2UpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnN0eWxlID0gdGhpcy5lbW9qaVNlcnZpY2UuZW1vamlTcHJpdGVTdHlsZXMoXG4gICAgICAgICAgZGF0YS5zaGVldCxcbiAgICAgICAgICB0aGlzLnNldCxcbiAgICAgICAgICB0aGlzLnNpemUsXG4gICAgICAgICAgdGhpcy5zaGVldFNpemUsXG4gICAgICAgICAgdGhpcy5zaGVldFJvd3MsXG4gICAgICAgICAgdGhpcy5iYWNrZ3JvdW5kSW1hZ2VGbixcbiAgICAgICAgICB0aGlzLnNoZWV0Q29sdW1ucyxcbiAgICAgICAgICB0aGlzLmltYWdlVXJsRm4/Lih0aGlzLmdldERhdGEoKSksXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAodGhpcy5pc1Zpc2libGUgPSB0cnVlKTtcbiAgfVxuXG4gIGdldERhdGEoKSB7XG4gICAgcmV0dXJuIHRoaXMuZW1vamlTZXJ2aWNlLmdldERhdGEodGhpcy5lbW9qaSwgdGhpcy5za2luLCB0aGlzLnNldCk7XG4gIH1cblxuICBnZXRTYW5pdGl6ZWREYXRhKCk6IEVtb2ppRGF0YSB7XG4gICAgcmV0dXJuIHRoaXMuZW1vamlTZXJ2aWNlLmdldFNhbml0aXplZERhdGEodGhpcy5lbW9qaSwgdGhpcy5za2luLCB0aGlzLnNldCkgYXMgRW1vamlEYXRhO1xuICB9XG5cbiAgaGFuZGxlQ2xpY2soJGV2ZW50OiBFdmVudCkge1xuICAgIGNvbnN0IGVtb2ppID0gdGhpcy5nZXRTYW5pdGl6ZWREYXRhKCk7XG4gICAgdGhpcy5lbW9qaUNsaWNrLmVtaXQoeyBlbW9qaSwgJGV2ZW50IH0pO1xuICB9XG5cbiAgaGFuZGxlT3ZlcigkZXZlbnQ6IEV2ZW50KSB7XG4gICAgY29uc3QgZW1vamkgPSB0aGlzLmdldFNhbml0aXplZERhdGEoKTtcbiAgICB0aGlzLmVtb2ppT3Zlci5lbWl0KHsgZW1vamksICRldmVudCB9KTtcbiAgfVxuXG4gIGhhbmRsZUxlYXZlKCRldmVudDogRXZlbnQpIHtcbiAgICBjb25zdCBlbW9qaSA9IHRoaXMuZ2V0U2FuaXRpemVkRGF0YSgpO1xuICAgIHRoaXMuZW1vamlMZWF2ZS5lbWl0KHsgZW1vamksICRldmVudCB9KTtcbiAgfVxufVxuIl19
|
@@ -4,10 +4,10 @@ import { EmojiComponent } from './emoji.component';
|
|
4
4
|
import * as i0 from "@angular/core";
|
5
5
|
export class EmojiModule {
|
6
6
|
}
|
7
|
-
EmojiModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
8
|
-
EmojiModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.
|
9
|
-
EmojiModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.
|
10
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
7
|
+
EmojiModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.9", ngImport: i0, type: EmojiModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
8
|
+
EmojiModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.9", ngImport: i0, type: EmojiModule, declarations: [EmojiComponent], imports: [CommonModule], exports: [EmojiComponent] });
|
9
|
+
EmojiModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.9", ngImport: i0, type: EmojiModule, imports: [CommonModule] });
|
10
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.9", ngImport: i0, type: EmojiModule, decorators: [{
|
11
11
|
type: NgModule,
|
12
12
|
args: [{
|
13
13
|
imports: [CommonModule],
|
@@ -135,9 +135,9 @@ export class EmojiService {
|
|
135
135
|
return this.sanitize(this.getData(emoji, skin, set));
|
136
136
|
}
|
137
137
|
}
|
138
|
-
EmojiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
139
|
-
EmojiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.
|
140
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
138
|
+
EmojiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.9", ngImport: i0, type: EmojiService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
139
|
+
EmojiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.9", ngImport: i0, type: EmojiService, providedIn: 'root' });
|
140
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.9", ngImport: i0, type: EmojiService, decorators: [{
|
141
141
|
type: Injectable,
|
142
142
|
args: [{ providedIn: 'root' }]
|
143
143
|
}], ctorParameters: function () { return []; } });
|
@@ -403,11 +403,11 @@ export class PickerComponent {
|
|
403
403
|
}
|
404
404
|
}
|
405
405
|
}
|
406
|
-
PickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
407
|
-
PickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
408
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
406
|
+
PickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.9", ngImport: i0, type: PickerComponent, deps: [{ token: i0.NgZone }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i1.EmojiFrequentlyService }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component });
|
407
|
+
PickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.9", type: PickerComponent, selector: "emoji-mart", inputs: { perLine: "perLine", totalFrequentLines: "totalFrequentLines", i18n: "i18n", style: "style", title: "title", emoji: "emoji", darkMode: "darkMode", color: "color", hideObsolete: "hideObsolete", categories: "categories", activeCategories: "activeCategories", set: "set", skin: "skin", isNative: "isNative", emojiSize: "emojiSize", sheetSize: "sheetSize", emojisToShowFilter: "emojisToShowFilter", showPreview: "showPreview", emojiTooltip: "emojiTooltip", autoFocus: "autoFocus", custom: "custom", hideRecent: "hideRecent", imageUrlFn: "imageUrlFn", include: "include", exclude: "exclude", notFoundEmoji: "notFoundEmoji", categoriesIcons: "categoriesIcons", searchIcons: "searchIcons", useButton: "useButton", enableFrequentEmojiSort: "enableFrequentEmojiSort", enableSearch: "enableSearch", showSingleCategory: "showSingleCategory", virtualize: "virtualize", virtualizeOffset: "virtualizeOffset", recent: "recent", backgroundImageFn: "backgroundImageFn" }, outputs: { emojiClick: "emojiClick", emojiSelect: "emojiSelect", skinChange: "skinChange" }, viewQueries: [{ propertyName: "scrollRef", first: true, predicate: ["scrollRef"], descendants: true, static: true }, { propertyName: "previewRef", first: true, predicate: PreviewComponent, descendants: true }, { propertyName: "searchRef", first: true, predicate: SearchComponent, descendants: true }, { propertyName: "categoryRefs", predicate: CategoryComponent, descendants: true }], ngImport: i0, template: "<section\n class=\"emoji-mart {{ darkMode ? 'emoji-mart-dark' : '' }}\"\n [style.width]=\"getWidth()\"\n [ngStyle]=\"style\"\n>\n <div class=\"emoji-mart-bar\">\n <emoji-mart-anchors\n [categories]=\"categories\"\n (anchorClick)=\"handleAnchorClick($event)\"\n [color]=\"color\"\n [selected]=\"selected\"\n [i18n]=\"i18n\"\n [icons]=\"categoriesIcons\"\n ></emoji-mart-anchors>\n </div>\n <emoji-search\n *ngIf=\"enableSearch\"\n [i18n]=\"i18n\"\n (searchResults)=\"handleSearch($event)\"\n (enterKey)=\"handleEnterKey($event)\"\n [include]=\"include\"\n [exclude]=\"exclude\"\n [custom]=\"custom\"\n [autoFocus]=\"autoFocus\"\n [icons]=\"searchIcons\"\n [emojisToShowFilter]=\"emojisToShowFilter\"\n ></emoji-search>\n <section #scrollRef class=\"emoji-mart-scroll\" [attr.aria-label]=\"i18n.emojilist\">\n <emoji-category\n *ngFor=\"let category of activeCategories; let idx = index; trackBy: categoryTrack\"\n [id]=\"category.id\"\n [name]=\"category.name\"\n [emojis]=\"category.emojis\"\n [perLine]=\"perLine\"\n [totalFrequentLines]=\"totalFrequentLines\"\n [hasStickyPosition]=\"isNative\"\n [i18n]=\"i18n\"\n [hideObsolete]=\"hideObsolete\"\n [notFoundEmoji]=\"notFoundEmoji\"\n [custom]=\"category.id === RECENT_CATEGORY.id ? CUSTOM_CATEGORY.emojis : undefined\"\n [recent]=\"category.id === RECENT_CATEGORY.id ? recent : undefined\"\n [virtualize]=\"virtualize\"\n [virtualizeOffset]=\"virtualizeOffset\"\n [emojiIsNative]=\"isNative\"\n [emojiSkin]=\"skin\"\n [emojiSize]=\"emojiSize\"\n [emojiSet]=\"set\"\n [emojiSheetSize]=\"sheetSize\"\n [emojiForceSize]=\"isNative\"\n [emojiTooltip]=\"emojiTooltip\"\n [emojiBackgroundImageFn]=\"backgroundImageFn\"\n [emojiImageUrlFn]=\"imageUrlFn\"\n [emojiUseButton]=\"useButton\"\n (emojiOver)=\"handleEmojiOver($event)\"\n (emojiLeave)=\"handleEmojiLeave()\"\n (emojiClick)=\"handleEmojiClick($event)\"\n ></emoji-category>\n </section>\n <div class=\"emoji-mart-bar\" *ngIf=\"showPreview\">\n <emoji-preview\n [attr.title]=\"title\"\n [emoji]=\"previewEmoji\"\n [idleEmoji]=\"emoji\"\n [emojiIsNative]=\"isNative\"\n [emojiSize]=\"38\"\n [emojiSkin]=\"skin\"\n [emojiSet]=\"set\"\n [i18n]=\"i18n\"\n [emojiSheetSize]=\"sheetSize\"\n [emojiBackgroundImageFn]=\"backgroundImageFn\"\n [emojiImageUrlFn]=\"imageUrlFn\"\n (skinChange)=\"handleSkinChange($event)\"\n ></emoji-preview>\n </div>\n</section>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i3.AnchorsComponent, selector: "emoji-mart-anchors", inputs: ["categories", "color", "selected", "i18n", "icons"], outputs: ["anchorClick"] }, { kind: "component", type: i4.CategoryComponent, selector: "emoji-category", inputs: ["emojis", "hasStickyPosition", "name", "perLine", "totalFrequentLines", "recent", "custom", "i18n", "id", "hideObsolete", "notFoundEmoji", "virtualize", "virtualizeOffset", "emojiIsNative", "emojiSkin", "emojiSize", "emojiSet", "emojiSheetSize", "emojiForceSize", "emojiTooltip", "emojiBackgroundImageFn", "emojiImageUrlFn", "emojiUseButton"], outputs: ["emojiOver", "emojiLeave", "emojiClick"] }, { kind: "component", type: i5.SearchComponent, selector: "emoji-search", inputs: ["maxResults", "autoFocus", "i18n", "include", "exclude", "custom", "icons", "emojisToShowFilter"], outputs: ["searchResults", "enterKey"] }, { kind: "component", type: i6.PreviewComponent, selector: "emoji-preview", inputs: ["title", "emoji", "idleEmoji", "i18n", "emojiIsNative", "emojiSkin", "emojiSize", "emojiSet", "emojiSheetSize", "emojiBackgroundImageFn", "emojiImageUrlFn"], outputs: ["skinChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
408
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.9", ngImport: i0, type: PickerComponent, decorators: [{
|
409
409
|
type: Component,
|
410
|
-
args: [{ selector: 'emoji-mart', changeDetection: ChangeDetectionStrategy.OnPush, preserveWhitespaces: false, template: "<section\n class=\"emoji-mart {{ darkMode ? 'emoji-mart-dark' : '' }}\"\n [style.width]=\"getWidth()\"\n [ngStyle]=\"style\"\n>\n <div class=\"emoji-mart-bar\">\n <emoji-mart-anchors\n [categories]=\"categories\"\n (anchorClick)=\"handleAnchorClick($event)\"\n [color]=\"color\"\n [selected]=\"selected\"\n [i18n]=\"i18n\"\n [icons]=\"categoriesIcons\"\n ></emoji-mart-anchors>\n </div>\n <emoji-search\n *ngIf=\"enableSearch\"\n [i18n]=\"i18n\"\n (searchResults)=\"handleSearch($event)\"\n (enterKey)=\"handleEnterKey($event)\"\n [include]=\"include\"\n [exclude]=\"exclude\"\n [custom]=\"custom\"\n [autoFocus]=\"autoFocus\"\n [icons]=\"searchIcons\"\n [emojisToShowFilter]=\"emojisToShowFilter\"\n ></emoji-search>\n <section #scrollRef class=\"emoji-mart-scroll\" [attr.aria-label]=\"i18n.emojilist\">\n <emoji-category\n *ngFor=\"let category of activeCategories; let idx = index; trackBy: categoryTrack\"\n [id]=\"category.id\"\n [name]=\"category.name\"\n [emojis]=\"category.emojis\"\n [perLine]=\"perLine\"\n [totalFrequentLines]=\"totalFrequentLines\"\n [hasStickyPosition]=\"isNative\"\n [i18n]=\"i18n\"\n [hideObsolete]=\"hideObsolete\"\n [notFoundEmoji]=\"notFoundEmoji\"\n [custom]=\"category.id === RECENT_CATEGORY.id ? CUSTOM_CATEGORY.emojis : undefined\"\n [recent]=\"category.id === RECENT_CATEGORY.id ? recent : undefined\"\n [virtualize]=\"virtualize\"\n [virtualizeOffset]=\"virtualizeOffset\"\n [emojiIsNative]=\"isNative\"\n [emojiSkin]=\"skin\"\n [emojiSize]=\"emojiSize\"\n [emojiSet]=\"set\"\n [emojiSheetSize]=\"sheetSize\"\n [emojiForceSize]=\"isNative\"\n [emojiTooltip]=\"emojiTooltip\"\n [emojiBackgroundImageFn]=\"backgroundImageFn\"\n [emojiImageUrlFn]=\"imageUrlFn\"\n [emojiUseButton]=\"useButton\"\n (emojiOver)=\"handleEmojiOver($event)\"\n (emojiLeave)=\"handleEmojiLeave()\"\n (emojiClick)=\"handleEmojiClick($event)\"\n ></emoji-category>\n </section>\n <div class=\"emoji-mart-bar\" *ngIf=\"showPreview\">\n <emoji-preview\n [title]=\"title\"\n [emoji]=\"previewEmoji\"\n [idleEmoji]=\"emoji\"\n [emojiIsNative]=\"isNative\"\n [emojiSize]=\"38\"\n [emojiSkin]=\"skin\"\n [emojiSet]=\"set\"\n [i18n]=\"i18n\"\n [emojiSheetSize]=\"sheetSize\"\n [emojiBackgroundImageFn]=\"backgroundImageFn\"\n [emojiImageUrlFn]=\"imageUrlFn\"\n (skinChange)=\"handleSkinChange($event)\"\n ></emoji-preview>\n </div>\n</section>\n" }]
|
410
|
+
args: [{ selector: 'emoji-mart', changeDetection: ChangeDetectionStrategy.OnPush, preserveWhitespaces: false, template: "<section\n class=\"emoji-mart {{ darkMode ? 'emoji-mart-dark' : '' }}\"\n [style.width]=\"getWidth()\"\n [ngStyle]=\"style\"\n>\n <div class=\"emoji-mart-bar\">\n <emoji-mart-anchors\n [categories]=\"categories\"\n (anchorClick)=\"handleAnchorClick($event)\"\n [color]=\"color\"\n [selected]=\"selected\"\n [i18n]=\"i18n\"\n [icons]=\"categoriesIcons\"\n ></emoji-mart-anchors>\n </div>\n <emoji-search\n *ngIf=\"enableSearch\"\n [i18n]=\"i18n\"\n (searchResults)=\"handleSearch($event)\"\n (enterKey)=\"handleEnterKey($event)\"\n [include]=\"include\"\n [exclude]=\"exclude\"\n [custom]=\"custom\"\n [autoFocus]=\"autoFocus\"\n [icons]=\"searchIcons\"\n [emojisToShowFilter]=\"emojisToShowFilter\"\n ></emoji-search>\n <section #scrollRef class=\"emoji-mart-scroll\" [attr.aria-label]=\"i18n.emojilist\">\n <emoji-category\n *ngFor=\"let category of activeCategories; let idx = index; trackBy: categoryTrack\"\n [id]=\"category.id\"\n [name]=\"category.name\"\n [emojis]=\"category.emojis\"\n [perLine]=\"perLine\"\n [totalFrequentLines]=\"totalFrequentLines\"\n [hasStickyPosition]=\"isNative\"\n [i18n]=\"i18n\"\n [hideObsolete]=\"hideObsolete\"\n [notFoundEmoji]=\"notFoundEmoji\"\n [custom]=\"category.id === RECENT_CATEGORY.id ? CUSTOM_CATEGORY.emojis : undefined\"\n [recent]=\"category.id === RECENT_CATEGORY.id ? recent : undefined\"\n [virtualize]=\"virtualize\"\n [virtualizeOffset]=\"virtualizeOffset\"\n [emojiIsNative]=\"isNative\"\n [emojiSkin]=\"skin\"\n [emojiSize]=\"emojiSize\"\n [emojiSet]=\"set\"\n [emojiSheetSize]=\"sheetSize\"\n [emojiForceSize]=\"isNative\"\n [emojiTooltip]=\"emojiTooltip\"\n [emojiBackgroundImageFn]=\"backgroundImageFn\"\n [emojiImageUrlFn]=\"imageUrlFn\"\n [emojiUseButton]=\"useButton\"\n (emojiOver)=\"handleEmojiOver($event)\"\n (emojiLeave)=\"handleEmojiLeave()\"\n (emojiClick)=\"handleEmojiClick($event)\"\n ></emoji-category>\n </section>\n <div class=\"emoji-mart-bar\" *ngIf=\"showPreview\">\n <emoji-preview\n [attr.title]=\"title\"\n [emoji]=\"previewEmoji\"\n [idleEmoji]=\"emoji\"\n [emojiIsNative]=\"isNative\"\n [emojiSize]=\"38\"\n [emojiSkin]=\"skin\"\n [emojiSet]=\"set\"\n [i18n]=\"i18n\"\n [emojiSheetSize]=\"sheetSize\"\n [emojiBackgroundImageFn]=\"backgroundImageFn\"\n [emojiImageUrlFn]=\"imageUrlFn\"\n (skinChange)=\"handleSkinChange($event)\"\n ></emoji-preview>\n </div>\n</section>\n" }]
|
411
411
|
}], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i1.EmojiFrequentlyService }, { type: undefined, decorators: [{
|
412
412
|
type: Inject,
|
413
413
|
args: [PLATFORM_ID]
|
@@ -502,4 +502,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
|
|
502
502
|
}], backgroundImageFn: [{
|
503
503
|
type: Input
|
504
504
|
}] } });
|
505
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvcGlja2VyL3BpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi9zcmMvbGliL3BpY2tlci9waWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUNMLHVCQUF1QixFQUV2QixTQUFTLEVBRVQsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBSUwsTUFBTSxFQUNOLFdBQVcsRUFHWCxTQUFTLEVBQ1QsWUFBWSxHQUNiLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFDTCxVQUFVLEdBS1gsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN4QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV6RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxLQUFLLEtBQUssTUFBTSxRQUFRLENBQUM7QUFDaEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sU0FBUyxDQUFDOzs7Ozs7OztBQUUzQyxNQUFNLElBQUksR0FBUTtJQUNoQixNQUFNLEVBQUUsUUFBUTtJQUNoQixTQUFTLEVBQUUsZUFBZTtJQUMxQixRQUFRLEVBQUUsZ0JBQWdCO0lBQzFCLEtBQUssRUFBRSxPQUFPO0lBQ2QsVUFBVSxFQUFFO1FBQ1YsTUFBTSxFQUFFLGdCQUFnQjtRQUN4QixNQUFNLEVBQUUsaUJBQWlCO1FBQ3pCLE1BQU0sRUFBRSxrQkFBa0I7UUFDMUIsTUFBTSxFQUFFLGtCQUFrQjtRQUMxQixLQUFLLEVBQUUsY0FBYztRQUNyQixRQUFRLEVBQUUsVUFBVTtRQUNwQixNQUFNLEVBQUUsaUJBQWlCO1FBQ3pCLE9BQU8s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LEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNJLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUMyQyxTQUFTO3NCQUExRCxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ1EsVUFBVTtzQkFBekQsU0FBUzt1QkFBQyxnQkFBZ0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ0MsU0FBUztzQkFBdkQsU0FBUzt1QkFBQyxlQUFlLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUNaLFlBQVk7c0JBQTVDLFlBQVk7dUJBQUMsaUJBQWlCO2dCQStCL0IsaUJBQWlCO3NCQURoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBQTEFURk9STV9JRCxcbiAgUXVlcnlMaXN0LFxuICBSZW5kZXJlcjIsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NoaWxkcmVuLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtcbiAgY2F0ZWdvcmllcyxcbiAgRW1vamksXG4gIEVtb2ppQ2F0ZWdvcnksXG4gIEVtb2ppRGF0YSxcbiAgRW1vamlFdmVudCxcbn0gZnJvbSAnQGN0cmwvbmd4LWVtb2ppLW1hcnQvbmd4LWVtb2ppJztcbmltcG9ydCB7IENhdGVnb3J5Q29tcG9uZW50IH0gZnJvbSAnLi9jYXRlZ29yeS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRW1vamlGcmVxdWVudGx5U2VydmljZSB9IGZyb20gJy4vZW1vamktZnJlcXVlbnRseS5zZXJ2aWNlJztcbmltcG9ydCB7IFByZXZpZXdDb21wb25lbnQgfSBmcm9tICcuL3ByZXZpZXcuY29tcG9uZW50JztcbmltcG9ydCB7IFNlYXJjaENvbXBvbmVudCB9IGZyb20gJy4vc2VhcmNoLmNvbXBvbmVudCc7XG5pbXBvcnQgKiBhcyBpY29ucyBmcm9tICcuL3N2Z3MnO1xuaW1wb3J0IHsgbWVhc3VyZVNjcm9sbGJhciB9IGZyb20gJy4vdXRpbHMnO1xuXG5jb25zdCBJMThOOiBhbnkgPSB7XG4gIHNlYXJjaDogJ1NlYXJjaCcsXG4gIGVtb2ppbGlzdDogJ0xpc3Qgb2YgZW1vamknLFxuICBub3Rmb3VuZDogJ05vIEVtb2ppIEZvdW5kJyxcbiAgY2xlYXI6ICdDbGVhcicsXG4gIGNhdGVnb3JpZXM6IHtcbiAgICBzZWFyY2g6ICdTZWFyY2ggUmVzdWx0cycsXG4gICAgcmVjZW50OiAnRnJlcXVlbnRseSBVc2VkJyxcbiAgICBwZW9wbGU6ICdTbWlsZXlzICYgUGVvcGxlJyxcbiAgICBuYXR1cmU6ICdBbmltYWxzICYgTmF0dXJlJyxcbiAgICBmb29kczogJ0Zvb2QgJiBEcmluaycsXG4gICAgYWN0aXZpdHk6ICdBY3Rpdml0eScsXG4gICAgcGxhY2VzOiAnVHJhdmVsICYgUGxhY2VzJyxcbiAgICBvYmplY3RzOiAnT2JqZWN0cycsXG4gICAgc3ltYm9sczogJ1N5bWJvbHMnLFxuICAgIGZsYWdzOiAnRmxhZ3MnLFxuICAgIGN1c3RvbTogJ0N1c3RvbScsXG4gIH0sXG4gIHNraW50b25lczoge1xuICAgIDE6ICdEZWZhdWx0IFNraW4gVG9uZScsXG4gICAgMjogJ0xpZ2h0IFNraW4gVG9uZScsXG4gICAgMzogJ01lZGl1bS1MaWdodCBTa2luIFRvbmUnLFxuICAgIDQ6ICdNZWRpdW0gU2tpbiBUb25lJyxcbiAgICA1OiAnTWVkaXVtLURhcmsgU2tpbiBUb25lJyxcbiAgICA2OiAnRGFyayBTa2luIFRvbmUnLFxuICB9LFxufTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZW1vamktbWFydCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJlc2VydmVXaGl0ZXNwYWNlczogZmFsc2UsXG59KVxuZXhwb3J0IGNsYXNzIFBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgcGVyTGluZSA9IDk7XG4gIEBJbnB1dCgpIHRvdGFsRnJlcXVlbnRMaW5lcyA9IDQ7XG4gIEBJbnB1dCgpIGkxOG46IGFueSA9IHt9O1xuICBASW5wdXQoKSBzdHlsZTogYW55ID0ge307XG4gIEBJbnB1dCgpIHRpdGxlID0gJ0Vtb2ppIE1hcnTihKInO1xuICBASW5wdXQoKSBlbW9qaSA9ICdkZXBhcnRtZW50X3N0b3JlJztcbiAgQElucHV0KCkgZGFya01vZGUgPSAhIShcbiAgICB0eXBlb2YgbWF0Y2hNZWRpYSA9PT0gJ2Z1bmN0aW9uJyAmJiBtYXRjaE1lZGlhKCcocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspJykubWF0Y2hlc1xuICApO1xuICBASW5wdXQoKSBjb2xvciA9ICcjYWU2NWM1JztcbiAgQElucHV0KCkgaGlkZU9ic29sZXRlID0gdHJ1ZTtcbiAgLyoqIGFsbCBjYXRlZ29yaWVzIHNob3duICovXG4gIEBJbnB1dCgpIGNhdGVnb3JpZXM6IEVtb2ppQ2F0ZWdvcnlbXSA9IFtdO1xuICAvKiogdXNlZCB0byB0ZW1wb3JhcmlseSBkcmF3IGNhdGVnb3JpZXMgKi9cbiAgQElucHV0KCkgYWN0aXZlQ2F0ZWdvcmllczogRW1vamlDYXRlZ29yeVtdID0gW107XG4gIEBJbnB1dCgpIHNldDogRW1vamlbJ3NldCddID0gJ2FwcGxlJztcbiAgQElucHV0KCkgc2tpbjogRW1vamlbJ3NraW4nXSA9IDE7XG4gIC8qKiBSZW5kZXJzIHRoZSBuYXRpdmUgdW5pY29kZSBlbW9qaSAqL1xuICBASW5wdXQoKSBpc05hdGl2ZTogRW1vamlbJ2lzTmF0aXZlJ10gPSBmYWxzZTtcbiAgQElucHV0KCkgZW1vamlTaXplOiBFbW9qaVsnc2l6ZSddID0gMjQ7XG4gIEBJbnB1dCgpIHNoZWV0U2l6ZTogRW1vamlbJ3NoZWV0U2l6ZSddID0gNjQ7XG4gIEBJbnB1dCgpIGVtb2ppc1RvU2hvd0ZpbHRlcj86ICh4OiBzdHJpbmcpID0+IGJvb2xlYW47XG4gIEBJbnB1dCgpIHNob3dQcmV2aWV3ID0gdHJ1ZTtcbiAgQElucHV0KCkgZW1vamlUb29sdGlwID0gZmFsc2U7XG4gIEBJbnB1dCgpIGF1dG9Gb2N1cyA9IGZhbHNlO1xuICBASW5wdXQoKSBjdXN0b206IGFueVtdID0gW107XG4gIEBJbnB1dCgpIGhpZGVSZWNlbnQgPSB0cnVlO1xuICBASW5wdXQoKSBpbWFnZVVybEZuOiBFbW9qaVsnaW1hZ2VVcmxGbiddO1xuICBASW5wdXQoKSBpbmNsdWRlPzogc3RyaW5nW107XG4gIEBJbnB1dCgpIGV4Y2x1ZGU/OiBzdHJpbmdbXTtcbiAgQElucHV0KCkgbm90Rm91bmRFbW9qaSA9ICdzbGV1dGhfb3Jfc3B5JztcbiAgQElucHV0KCkgY2F0ZWdvcmllc0ljb25zID0gaWNvbnMuY2F0ZWdvcmllcztcbiAgQElucHV0KCkgc2VhcmNoSWNvbnMgPSBpY29ucy5zZWFyY2g7XG4gIEBJbnB1dCgpIHVzZUJ1dHRvbiA9IGZhbHNlO1xuICBASW5wdXQoKSBlbmFibGVGcmVxdWVudEVtb2ppU29ydCA9IGZhbHNlO1xuICBASW5wdXQoKSBlbmFibGVTZWFyY2ggPSB0cnVlO1xuICBASW5wdXQoKSBzaG93U2luZ2xlQ2F0ZWdvcnkgPSBmYWxzZTtcbiAgQElucHV0KCkgdmlydHVhbGl6ZSA9IGZhbHNlO1xuICBASW5wdXQoKSB2aXJ0dWFsaXplT2Zmc2V0ID0gMDtcbiAgQElucHV0KCkgcmVjZW50Pzogc3RyaW5nW107XG4gIEBPdXRwdXQoKSBlbW9qaUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBlbW9qaVNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgc2tpbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RW1vamlbJ3NraW4nXT4oKTtcbiAgQFZpZXdDaGlsZCgnc2Nyb2xsUmVmJywgeyBzdGF0aWM6IHRydWUgfSkgcHJpdmF0ZSBzY3JvbGxSZWYhOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKFByZXZpZXdDb21wb25lbnQsIHsgc3RhdGljOiBmYWxzZSB9KSBwcmV2aWV3UmVmPzogUHJldmlld0NvbXBvbmVudDtcbiAgQFZpZXdDaGlsZChTZWFyY2hDb21wb25lbnQsIHsgc3RhdGljOiBmYWxzZSB9KSBzZWFyY2hSZWY/OiBTZWFyY2hDb21wb25lbnQ7XG4gIEBWaWV3Q2hpbGRyZW4oQ2F0ZWdvcnlDb21wb25lbnQpIGNhdGVnb3J5UmVmcyE6IFF1ZXJ5TGlzdDxDYXRlZ29yeUNvbXBvbmVudD47XG4gIHNjcm9sbEhlaWdodCA9IDA7XG4gIGNsaWVudEhlaWdodCA9IDA7XG4gIGNsaWVudFdpZHRoID0gMDtcbiAgc2VsZWN0ZWQ/OiBzdHJpbmc7XG4gIG5leHRTY3JvbGw/OiBzdHJpbmc7XG4gIHNjcm9sbFRvcD86IG51bWJlcjtcbiAgZmlyc3RSZW5kZXIgPSB0cnVlO1xuICBwcmV2aWV3RW1vamk6IGFueTtcbiAgYW5pbWF0aW9uRnJhbWVSZXF1ZXN0SWQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBOQU1FU1BBQ0UgPSAnZW1vamktbWFydCc7XG4gIG1lYXN1cmVTY3JvbGxiYXIgPSAwO1xuICBSRUNFTlRfQ0FURUdPUlk6IEVtb2ppQ2F0ZWdvcnkgPSB7XG4gICAgaWQ6ICdyZWNlbnQnLFxuICAgIG5hbWU6ICdSZWNlbnQnLFxuICAgIGVtb2ppczogbnVsbCxcbiAgfTtcbiAgU0VBUkNIX0NBVEVHT1JZOiBFbW9qaUNhdGVnb3J5ID0ge1xuICAgIGlkOiAnc2VhcmNoJyxcbiAgICBuYW1lOiAnU2VhcmNoJyxcbiAgICBlbW9qaXM6IG51bGwsXG4gICAgYW5jaG9yOiBmYWxzZSxcbiAgfTtcbiAgQ1VTVE9NX0NBVEVHT1JZOiBFbW9qaUNhdGVnb3J5ID0ge1xuICAgIGlkOiAnY3VzdG9tJyxcbiAgICBuYW1lOiAnQ3VzdG9tJyxcbiAgICBlbW9qaXM6IFtdLFxuICB9O1xuICBwcml2YXRlIHNjcm9sbExpc3RlbmVyITogKCkgPT4gdm9pZDtcblxuICBASW5wdXQoKVxuICBiYWNrZ3JvdW5kSW1hZ2VGbjogRW1vamlbJ2JhY2tncm91bmRJbWFnZUZuJ10gPSAoc2V0OiBzdHJpbmcsIHNoZWV0U2l6ZTogbnVtYmVyKSA9PlxuICAgIGBodHRwczovL3VucGtnLmNvbS9lbW9qaS1kYXRhc291cmNlLSR7dGhpcy5zZXR9QDYuMC4xL2ltZy8ke3RoaXMuc2V0fS9zaGVldHMtMjU2LyR7dGhpcy5zaGVldFNpemV9LnBuZ2BcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBmcmVxdWVudGx5OiBFbW9qaUZyZXF1ZW50bHlTZXJ2aWNlLFxuICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm1JZDogc3RyaW5nLFxuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgLy8gbWVhc3VyZSBzY3JvbGxcbiAgICB0aGlzLm1lYXN1cmVTY3JvbGxiYXIgPSBtZWFzdXJlU2Nyb2xsYmFyKCk7XG5cbiAgICB0aGlzLmkxOG4gPSB7IC4uLkkxOE4sIC4uLnRoaXMuaTE4biB9O1xuICAgIHRoaXMuaTE4bi5jYXRlZ29yaWVzID0geyAuLi5JMThOLmNhdGVnb3JpZXMsIC4uLnRoaXMuaTE4bi5jYXRlZ29yaWVzIH07XG4gICAgdGhpcy5za2luID1cbiAgICAgIEpTT04ucGFyc2UoXG4gICAgICAgIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpICYmIGxvY2FsU3RvcmFnZS5nZXRJdGVtKGAke3RoaXMuTkFNRVNQQUNFfS5za2luYCkpIHx8XG4gICAgICAgICAgJ251bGwnLFxuICAgICAgKSB8fCB0aGlzLnNraW47XG5cbiAgICBjb25zdCBhbGxDYXRlZ29yaWVzID0gWy4uLmNhdGVnb3JpZXNdO1xuXG4gICAgaWYgKHRoaXMuY3VzdG9tLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuQ1VTVE9NX0NBVEVHT1JZLmVtb2ppcyA9IHRoaXMuY3VzdG9tLm1hcChlbW9qaSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uZW1vamksXG4gICAgICAgICAgLy8gYDxDYXRlZ29yeSAvPmAgZXhwZWN0cyBlbW9qaSB0byBoYXZlIGFuIGBpZGAuXG4gICAgICAgICAgaWQ6IGVtb2ppLnNob3J0TmFtZXNbMF0sXG4gICAgICAgICAgY3VzdG9tOiB0cnVlLFxuICAgICAgICB9O1xuICAgICAgfSk7XG5cbiAgICAgIGFsbENhdGVnb3JpZXMucHVzaCh0aGlzLkNVU1RPTV9DQVRFR09SWSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaW5jbHVkZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBhbGxDYXRlZ29yaWVzLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuaW5jbHVkZSEuaW5kZXhPZihhLmlkKSA+IHRoaXMuaW5jbHVkZSEuaW5kZXhPZihiLmlkKSkge1xuICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgY2F0ZWdvcnkgb2YgYWxsQ2F0ZWdvcmllcykge1xuICAgICAgY29uc3QgaXNJbmNsdWRlZCA9XG4gICAgICAgIHRoaXMuaW5jbHVkZSAmJiB0aGlzLmluY2x1ZGUubGVuZ3RoID8gdGhpcy5pbmNsdWRlLmluZGV4T2YoY2F0ZWdvcnkuaWQpID4gLTEgOiB0cnVlO1xuICAgICAgY29uc3QgaXNFeGNsdWRlZCA9XG4gICAgICAgIHRoaXMuZXhjbHVkZSAmJiB0aGlzLmV4Y2x1ZGUubGVuZ3RoID8gdGhpcy5leGNsdWRlLmluZGV4T2YoY2F0ZWdvcnkuaWQpID4gLTEgOiBmYWxzZTtcbiAgICAgIGlmICghaXNJbmNsdWRlZCB8fCBpc0V4Y2x1ZGVkKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5lbW9qaXNUb1Nob3dGaWx0ZXIpIHtcbiAgICAgICAgY29uc3QgbmV3RW1vamlzID0gW107XG5cbiAgICAgICAgY29uc3QgeyBlbW9qaXMgfSA9IGNhdGVnb3J5O1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3ByZWZlci1mb3Itb2ZcbiAgICAgICAgZm9yIChsZXQgZW1vamlJbmRleCA9IDA7IGVtb2ppSW5kZXggPCBlbW9qaXMhLmxlbmd0aDsgZW1vamlJbmRleCsrKSB7XG4gICAgICAgICAgY29uc3QgZW1vamkgPSBlbW9qaXMhW2Vtb2ppSW5kZXhdO1xuICAgICAgICAgIGlmICh0aGlzLmVtb2ppc1RvU2hvd0ZpbHRlcihlbW9qaSkpIHtcbiAgICAgICAgICAgIG5ld0Vtb2ppcy5wdXNoKGVtb2ppKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobmV3RW1vamlzLmxlbmd0aCkge1xuICAgICAgICAgIGNvbnN0IG5ld0NhdGVnb3J5ID0ge1xuICAgICAgICAgICAgZW1vamlzOiBuZXdFbW9qaXMsXG4gICAgICAgICAgICBuYW1lOiBjYXRlZ29yeS5uYW1lLFxuICAgICAgICAgICAgaWQ6IGNhdGVnb3J5LmlkLFxuICAgICAgICAgIH07XG5cbiAgICAgICAgICB0aGlzLmNhdGVnb3JpZXMucHVzaChuZXdDYXRlZ29yeSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY2F0ZWdvcmllcy5wdXNoKGNhdGVnb3J5KTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5jYXRlZ29yaWVzSWNvbnMgPSB7IC4uLmljb25zLmNhdGVnb3JpZXMsIC4uLnRoaXMuY2F0ZWdvcmllc0ljb25zIH07XG4gICAgICB0aGlzLnNlYXJjaEljb25zID0geyAuLi5pY29ucy5zZWFyY2gsIC4uLnRoaXMuc2VhcmNoSWNvbnMgfTtcbiAgICB9XG5cbiAgICBjb25zdCBpbmNsdWRlUmVjZW50ID1cbiAgICAgIHRoaXMuaW5jbHVkZSAmJiB0aGlzLmluY2x1ZGUubGVuZ3RoXG4gICAgICAgID8gdGhpcy5pbmNsdWRlLmluZGV4T2YodGhpcy5SRUNFTlRfQ0FURUdPUlkuaWQpID4gLTFcbiAgICAgICAgOiB0cnVlO1xuICAgIGNvbnN0IGV4Y2x1ZGVSZWNlbnQgPVxuICAgICAgdGhpcy5leGNsdWRlICYmIHRoaXMuZXhjbHVkZS5sZW5ndGhcbiAgICAgICAgPyB0aGlzLmV4Y2x1ZGUuaW5kZXhPZih0aGlzLlJFQ0VOVF9DQVRFR09SWS5pZCkgPiAtMVxuICAgICAgICA6IGZhbHNlO1xuICAgIGlmIChpbmNsdWRlUmVjZW50ICYmICFleGNsdWRlUmVjZW50KSB7XG4gICAgICB0aGlzLmhpZGVSZWNlbnQgPSBmYWxzZTtcbiAgICAgIHRoaXMuY2F0ZWdvcmllcy51bnNoaWZ0KHRoaXMuUkVDRU5UX0NBVEVHT1JZKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jYXRlZ29yaWVzWzBdKSB7XG4gICAgICB0aGlzLmNhdGVnb3JpZXNbMF0uZmlyc3QgPSB0cnVlO1xuICAgIH1cblxuICAgIHRoaXMuY2F0ZWdvcmllcy51bnNoaWZ0KHRoaXMuU0VBUkNIX0NBVEVHT1JZKTtcbiAgICB0aGlzLnNlbGVjdGVkID0gdGhpcy5jYXRlZ29yaWVzLmZpbHRlcihjYXRlZ29yeSA9PiBjYXRlZ29yeS5maXJzdClbMF0ubmFtZTtcblxuICAgIC8vIE5lZWQgdG8gYmUgY2FyZWZ1bCBpZiBzbWFsbCBudW1iZXIgb2YgY2F0ZWdvcmllc1xuICAgIGNvbnN0IGNhdGVnb3JpZXNUb0xvYWRGaXJzdCA9IE1hdGgubWluKHRoaXMuY2F0ZWdvcmllcy5sZW5ndGgsIDMpO1xuICAgIHRoaXMuc2V0QWN0aXZlQ2F0ZWdvcmllcyhcbiAgICAgICh0aGlzLmFjdGl2ZUNhdGVnb3JpZXMgPSB0aGlzLmNhdGVnb3JpZXMuc2xpY2UoMCwgY2F0ZWdvcmllc1RvTG9hZEZpcnN0KSksXG4gICAgKTtcblxuICAgIC8vIFRyaW0gbGFzdCBhY3RpdmUgY2F0ZWdvcnlcbiAgICBjb25zdCBsYXN0QWN0aXZlQ2F0ZWdvcnlFbW9qaXMgPSB0aGlzLmNhdGVnb3JpZXNbY2F0ZWdvcmllc1RvTG9hZEZpcnN0IC0gMV0uZW1vamlzIS5zbGljZSgpO1xuICAgIHRoaXMuY2F0ZWdvcmllc1tjYXRlZ29yaWVzVG9Mb2FkRmlyc3QgLSAxXS5lbW9qaXMgPSBsYXN0QWN0aXZlQ2F0ZWdvcnlFbW9qaXMuc2xpY2UoMCwgNjApO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAvLyBSZXN0b3JlIGxhc3QgY2F0ZWdvcnlcbiAgICAgIHRoaXMuY2F0ZWdvcmllc1tjYXRlZ29yaWVzVG9Mb2FkRmlyc3QgLSAxXS5lbW9qaXMgPSBsYXN0QWN0aXZlQ2F0ZWdvcnlFbW9qaXM7XG4gICAgICB0aGlzLnNldEFjdGl2ZUNhdGVnb3JpZXModGhpcy5jYXRlZ29yaWVzKTtcbiAgICAgIC8vIFRoZSBgc2V0VGltZW91dGAgd2lsbCB0cmlnZ2VyIHRoZSBjaGFuZ2UgZGV0ZWN0aW9uLCBidXQgc2luY2Ugd2UncmUgaW5zaWRlXG4gICAgICAvLyB0aGUgT25QdXNoIGNvbXBvbmVudCB3ZSBjYW4gcnVuIGNoYW5nZSBkZXRlY3Rpb24gbG9jYWxseSBzdGFydGluZyBmcm9tIHRoaXNcbiAgICAgIC8vIGNvbXBvbmVudCBhbmQgZ29pbmcgZG93biB0byB0aGUgY2hpbGRyZW4uXG4gICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLWV4cHJlc3Npb25zXG4gICAgICBpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpICYmXG4gICAgICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAvLyBUaGUgYHVwZGF0ZUNhdGVnb3JpZXNTaXplYCBkb2Vzbid0IGNoYW5nZSBwcm9wZXJ0aWVzIHRoYXQgYXJlIHVzZWRcbiAgICAgICAgICAvLyBpbiB0ZW1wbGF0ZXMsIHRodXMgdGhpcyBpcyBydW4gaW4gdGhlIGNvbnRleHQgb2YgdGhlIHJvb3Qgem9uZSB0byBhdm9pZFxuICAgICAgICAgIC8vIHJ1bm5pbmcgY2hhbmdlIGRldGVjdGlvbi5cbiAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVDYXRlZ29yaWVzU2l6ZSgpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9KTtcblxuICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIC8vIERPTSBldmVudHMgdGhhdCBhcmUgbGlzdGVuZWQgYnkgQW5ndWxhciBpbnNpZGUgdGhlIHRlbXBsYXRlIHRyaWdnZXIgY2hhbmdlIGRldGVjdGlvblxuICAgICAgLy8gYW5kIGFsc28gd3JhcHBlZCBpbnRvIGFkZGl0aW9uYWwgZnVuY3Rpb25zIHRoYXQgY2FsbCBgbWFya0ZvckNoZWNrKClgLiBXZSBsaXN0ZW4gYHNjcm9sbGBcbiAgICAgIC8vIGluIHRoZSBjb250ZXh0IG9mIHRoZSByb290IHpvbmUgc2luY2UgaXQgd2lsbCBub3QgdHJpZ2dlciBjaGFuZ2UgZGV0ZWN0aW9uIGVhY2ggdGltZVxuICAgICAgLy8gdGhlIGBzY3JvbGxgIGV2ZW50IGlzIGRpc3BhdGNoZWQuXG4gICAgICB0aGlzLnNjcm9sbExpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4odGhpcy5zY3JvbGxSZWYubmF0aXZlRWxlbWVudCwgJ3Njcm9sbCcsICgpID0+IHtcbiAgICAgICAgdGhpcy5oYW5kbGVTY3JvbGwoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zY3JvbGxMaXN0ZW5lcj8uKCk7XG4gICAgLy8gVGhpcyBpcyBjYWxsZWQgaGVyZSBiZWNhdXNlIHRoZSBjb21wb25lbnQgbWlnaHQgYmUgZGVzdHJveWVkXG4gICAgLy8gYnV0IHRoZXJlIHdpbGwgc3RpbGwgYmUgYSBgcmVxdWVzdEFuaW1hdGlvbkZyYW1lYCBjYWxsYmFjayBpbiB0aGUgcXVldWVcbiAgICAvLyB0aGF0IGNhbGxzIGBkZXRlY3RDaGFuZ2VzKClgIG9uIHRoZSBgVmlld1JlZmAuIFRoaXMgd2lsbCBsZWFkIHRvIGEgcnVudGltZVxuICAgIC8vIGV4Y2VwdGlvbiBpZiB0aGUgYGRldGVjdENoYW5nZXMoKWAgaXMgY2FsbGVkIGFmdGVyIHRoZSBgVmlld1JlZmAgaXMgZGVzdHJveWVkLlxuICAgIHRoaXMuY2FuY2VsQW5pbWF0aW9uRnJhbWUoKTtcbiAgfVxuXG4gIHNldEFjdGl2ZUNhdGVnb3JpZXMoY2F0ZWdvcmllc1RvTWFrZUFjdGl2ZTogQXJyYXk8RW1vamlDYXRlZ29yeT4pIHtcbiAgICBpZiAodGhpcy5zaG93U2luZ2xlQ2F0ZWdvcnkpIHtcbiAgICAgIHRoaXMuYWN0aXZlQ2F0ZWdvcmllcyA9IGNhdGVnb3JpZXNUb01ha2VBY3RpdmUuZmlsdGVyKFxuICAgICAgICB4ID0+IHgubmFtZSA9PT0gdGhpcy5zZWxlY3RlZCB8fCB4ID09PSB0aGlzLlNFQVJDSF9DQVRFR09SWSxcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYWN0aXZlQ2F0ZWdvcmllcyA9IGNhdGVnb3JpZXNUb01ha2VBY3RpdmU7XG4gICAgfVxuICB9XG4gIHVwZGF0ZUNhdGVnb3JpZXNTaXplKCkge1xuICAgIHRoaXMuY2F0ZWdvcnlSZWZzLmZvckVhY2goY29tcG9uZW50ID0+IGNvbXBvbmVudC5tZW1vaXplU2l6ZSgpKTtcblxuICAgIGlmICh0aGlzLnNjcm9sbFJlZikge1xuICAgICAgY29uc3QgdGFyZ2V0ID0gdGhpcy5zY3JvbGxSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgIHRoaXMuc2Nyb2xsSGVpZ2h0ID0gdGFyZ2V0LnNjcm9sbEhlaWdodDtcbiAgICAgIHRoaXMuY2xpZW50SGVpZ2h0ID0gdGFyZ2V0LmNsaWVudEhlaWdodDtcbiAgICAgIHRoaXMuY2xpZW50V2lkdGggPSB0YXJnZXQuY2xpZW50V2lkdGg7XG4gICAgfVxuICB9XG4gIGhhbmRsZUFuY2hvckNsaWNrKCRldmVudDogeyBjYXRlZ29yeTogRW1vamlDYXRlZ29yeTsgaW5kZXg6IG51bWJlciB9KSB7XG4gICAgdGhpcy51cGRhdGVDYXRlZ29yaWVzU2l6ZSgpO1xuICAgIHRoaXMuc2VsZWN0ZWQgPSAkZXZlbnQuY2F0ZWdvcnkubmFtZTtcbiAgICB0aGlzLnNldEFjdGl2ZUNhdGVnb3JpZXModGhpcy5jYXRlZ29yaWVzKTtcblxuICAgIGlmICh0aGlzLlNFQVJDSF9DQVRFR09SWS5lbW9qaXMpIHtcbiAgICAgIHRoaXMuaGFuZGxlU2VhcmNoKG51bGwpO1xuICAgICAgdGhpcy5zZWFyY2hSZWY/LmNsZWFyKCk7XG4gICAgICB0aGlzLmhhbmRsZUFuY2hvckNsaWNrKCRldmVudCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgY29tcG9uZW50ID0gdGhpcy5jYXRlZ29yeVJlZnMuZmluZChuID0+IG4uaWQgPT09ICRldmVudC5jYXRlZ29yeS5pZCk7XG4gICAgaWYgKGNvbXBvbmVudCkge1xuICAgICAgbGV0IHsgdG9wIH0gPSBjb21wb25lbnQ7XG5cbiAgICAgIGlmICgkZXZlbnQuY2F0ZWdvcnkuZmlyc3QpIHtcbiAgICAgICAgdG9wID0gMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRvcCArPSAxO1xuICAgICAgfVxuICAgICAgdGhpcy5zY3JvbGxSZWYubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgPSB0b3A7XG4gICAgfVxuICAgIHRoaXMubmV4dFNjcm9sbCA9ICRldmVudC5jYXRlZ29yeS5uYW1lO1xuXG4gICAgLy8gaGFuZGxlIGNvbXBvbmVudCBzY3JvbGxpbmcgdG8gbG9hZCBlbW9qaXNcbiAgICBmb3IgKGNvbnN0IGNhdGVnb3J5IG9mIHRoaXMuY2F0ZWdvcmllcykge1xuICAgICAgY29uc3QgY29tcG9uZW50VG9TY3JvbGwgPSB0aGlzLmNhdGVnb3J5UmVmcy5maW5kKCh7IGlkIH0pID0+IGlkID09PSBjYXRlZ29yeS5pZCk7XG4gICAgICBjb21wb25lbnRUb1Njcm9sbD8uaGFuZGxlU2Nyb2xsKHRoaXMuc2Nyb2xsUmVmLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wKTtcbiAgICB9XG4gIH1cbiAgY2F0ZWdvcnlUcmFjayhpbmRleDogbnVtYmVyLCBpdGVtOiBhbnkpIHtcbiAgICByZXR1cm4gaXRlbS5pZDtcbiAgfVxuICBoYW5kbGVTY3JvbGwobm9TZWxlY3Rpb25DaGFuZ2UgPSBmYWxzZSkge1xuICAgIGlmICh0aGlzLm5leHRTY3JvbGwpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWQgPSB0aGlzLm5leHRTY3JvbGw7XG4gICAgICB0aGlzLm5leHRTY3JvbGwgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghdGhpcy5zY3JvbGxSZWYpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuc2hvd1NpbmdsZUNhdGVnb3J5KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IGFjdGl2ZUNhdGVnb3J5OiBFbW9qaUNhdGVnb3J5IHwgdW5kZWZpbmVkO1xuICAgIGlmICh0aGlzLlNFQVJDSF9DQVRFR09SWS5lbW9qaXMpIHtcbiAgICAgIGFjdGl2ZUNhdGVnb3J5ID0gdGhpcy5TRUFSQ0hfQ0FURUdPUlk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHRhcmdldCA9IHRoaXMuc2Nyb2xsUmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAvLyBjaGVjayBzY3JvbGwgaXMgbm90IGF0IGJvdHRvbVxuICAgICAgaWYgKHRhcmdldC5zY3JvbGxUb3AgPT09IDApIHtcbiAgICAgICAgLy8gaGl0IHRoZSBUT1BcbiAgICAgICAgYWN0aXZlQ2F0ZWdvcnkgPSB0aGlzLmNhdGVnb3JpZXMuZmluZChuID0+IG4uZmlyc3QgPT09IHRydWUpO1xuICAgICAgfSBlbHNlIGlmICh0YXJnZXQuc2Nyb2xsSGVpZ2h0IC0gdGFyZ2V0LnNjcm9sbFRvcCA9PT0gdGhpcy5jbGllbnRIZWlnaHQpIHtcbiAgICAgICAgLy8gc2Nyb2xsZWQgdG8gYm90dG9tIGFjdGl2YXRlIGxhc3QgY2F0ZWdvcnlcbiAgICAgICAgYWN0aXZlQ2F0ZWdvcnkgPSB0aGlzLmNhdGVnb3JpZXNbdGhpcy5jYXRlZ29yaWVzLmxlbmd0aCAtIDFdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gc2Nyb2xsaW5nXG4gICAgICAgIGZvciAoY29uc3QgY2F0ZWdvcnkgb2YgdGhpcy5jYXRlZ29yaWVzKSB7XG4gICAgICAgICAgY29uc3QgY29tcG9uZW50ID0gdGhpcy5jYXRlZ29yeVJlZnMuZmluZCgoeyBpZCB9KSA9PiBpZCA9PT0gY2F0ZWdvcnkuaWQpO1xuICAgICAgICAgIGNvbnN0IGFjdGl2ZTogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IGNvbXBvbmVudD8uaGFuZGxlU2Nyb2xsKHRhcmdldC5zY3JvbGxUb3ApO1xuICAgICAgICAgIGlmIChhY3RpdmUpIHtcbiAgICAgICAgICAgIGFjdGl2ZUNhdGVnb3J5ID0gY2F0ZWdvcnk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMuc2Nyb2xsVG9wID0gdGFyZ2V0LnNjcm9sbFRvcDtcbiAgICB9XG4gICAgLy8gVGhpcyB3aWxsIGFsbG93IHVzIHRvIHJ1biB0aGUgY2hhbmdlIGRldGVjdGlvbiBvbmx5IHdoZW4gdGhlIGNhdGVnb3J5IGNoYW5nZXMuXG4gICAgaWYgKCFub1NlbGVjdGlvbkNoYW5nZSAmJiBhY3RpdmVDYXRlZ29yeSAmJiBhY3RpdmVDYXRlZ29yeS5uYW1lICE9PSB0aGlzLnNlbGVjdGVkKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkID0gYWN0aXZlQ2F0ZWdvcnkubmFtZTtcbiAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9IGVsc2UgaWYgKG5vU2VsZWN0aW9uQ2hhbmdlKSB7XG4gICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG4gIGhhbmRsZVNlYXJjaCgkZW1vamlzOiBhbnlbXSB8IG51bGwpIHtcbiAgICB0aGlzLlNFQVJDSF9DQVRFR09SWS5lbW9qaXMgPSAkZW1vamlzO1xuICAgIGZvciAoY29uc3QgY29tcG9uZW50IG9mIHRoaXMuY2F0ZWdvcnlSZWZzLnRvQXJyYXkoKSkge1xuICAgICAgaWYgKGNvbXBvbmVudC5uYW1lID09PSAnU2VhcmNoJykge1xuICAgICAgICBjb21wb25lbnQuZW1vamlzID0gJGVtb2ppcztcbiAgICAgICAgY29tcG9uZW50LnVwZGF0ZURpc3BsYXkoJGVtb2ppcyA/ICdibG9jaycgOiAnbm9uZScpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29tcG9uZW50LnVwZGF0ZURpc3BsYXkoJGVtb2ppcyA/ICdub25lJyA6ICdibG9jaycpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuc2Nyb2xsUmVmLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gMDtcbiAgICB0aGlzLmhhbmRsZVNjcm9sbCgpO1xuICB9XG5cbiAgaGFuZGxlRW50ZXJLZXkoJGV2ZW50OiBFdmVudCwgZW1vamk/OiBFbW9qaURhdGEpIHtcbiAgICBpZiAoIWVtb2ppKSB7XG4gICAgICBpZiAodGhpcy5TRUFSQ0hfQ0FURUdPUlkuZW1vamlzICE9PSBudWxsICYmIHRoaXMuU0VBUkNIX0NBVEVHT1JZLmVtb2ppcy5sZW5ndGgpIHtcbiAgICAgICAgZW1vamkgPSB0aGlzLlNFQVJDSF9DQVRFR09SWS5lbW9qaXNbMF07XG4gICAgICAgIGlmIChlbW9qaSkge1xuICAgICAgICAgIHRoaXMuZW1vamlTZWxlY3QuZW1pdCh7ICRldmVudCwgZW1vamkgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmhpZGVSZWNlbnQgJiYgIXRoaXMucmVjZW50ICYmIGVtb2ppKSB7XG4gICAgICB0aGlzLmZyZXF1ZW50bHkuYWRkKGVtb2ppKTtcbiAgICB9XG5cbiAgICBjb25zdCBjb21wb25lbnQgPSB0aGlzLmNhdGVnb3J5UmVmcy50b0FycmF5KClbMV07XG4gICAgaWYgKGNvbXBvbmVudCAmJiB0aGlzLmVuYWJsZUZyZXF1ZW50RW1vamlTb3J0KSB7XG4gICAgICBjb21wb25lbnQudXBkYXRlUmVjZW50RW1vamlzKCk7XG4gICAgICBjb21wb25lbnQucmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuICBoYW5kbGVFbW9qaU92ZXIoJGV2ZW50OiBFbW9qaUV2ZW50KSB7XG4gICAgaWYgKCF0aGlzLnNob3dQcmV2aWV3IHx8ICF0aGlzLnByZXZpZXdSZWYpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBlbW9qaURhdGEgPSB0aGlzLkNVU1RPTV9DQVRFR09SWS5lbW9qaXMhLmZpbmQoXG4gICAgICAoY3VzdG9tRW1vamk6IGFueSkgPT4gY3VzdG9tRW1vamkuaWQgPT09ICRldmVudC5lbW9qaS5pZCxcbiAgICApO1xuICAgIGlmIChlbW9qaURhdGEpIHtcbiAgICAgICRldmVudC5lbW9qaSA9IHsgLi4uZW1vamlEYXRhIH07XG4gICAgfVxuXG4gICAgdGhpcy5wcmV2aWV3RW1vamkgPSAkZXZlbnQuZW1vamk7XG4gICAgdGhpcy5jYW5jZWxBbmltYXRpb25GcmFtZSgpO1xuICAgIHRoaXMucmVmPy5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cbiAgaGFuZGxlRW1vamlMZWF2ZSgpIHtcbiAgICBpZiAoIXRoaXMuc2hvd1ByZXZpZXcgfHwgIXRoaXMucHJldmlld1JlZikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIHRoaXMuYW5pbWF0aW9uRnJhbWVSZXF1ZXN0SWQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICB0aGlzLnByZXZpZXdFbW9qaSA9IG51bGw7XG4gICAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG4gIGhhbmRsZUVtb2ppQ2xpY2soJGV2ZW50OiBFbW9qaUV2ZW50KSB7XG4gICAgdGhpcy5lbW9qaUNsaWNrLmVtaXQoJGV2ZW50KTtcbiAgICB0aGlzLmVtb2ppU2VsZWN0LmVtaXQoJGV2ZW50KTtcbiAgICB0aGlzLmhhbmRsZUVudGVyS2V5KCRldmVudC4kZXZlbnQsICRldmVudC5lbW9qaSk7XG4gIH1cbiAgaGFuZGxlU2tpbkNoYW5nZShza2luOiBFbW9qaVsnc2tpbiddKSB7XG4gICAgdGhpcy5za2luID0gc2tpbjtcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShgJHt0aGlzLk5BTUVTUEFDRX0uc2tpbmAsIFN0cmluZyhza2luKSk7XG4gICAgdGhpcy5za2luQ2hhbmdlLmVtaXQoc2tpbik7XG4gIH1cbiAgZ2V0V2lkdGgoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5zdHlsZSAmJiB0aGlzLnN0eWxlLndpZHRoKSB7XG4gICAgICByZXR1cm4gdGhpcy5zdHlsZS53aWR0aDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMucGVyTGluZSAqICh0aGlzLmVtb2ppU2l6ZSArIDEyKSArIDEyICsgMiArIHRoaXMubWVhc3VyZVNjcm9sbGJhciArICdweCc7XG4gIH1cblxuICBwcml2YXRlIGNhbmNlbEFuaW1hdGlvbkZyYW1lKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmFuaW1hdGlvbkZyYW1lUmVxdWVzdElkICE9PSBudWxsKSB7XG4gICAgICBjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLmFuaW1hdGlvbkZyYW1lUmVxdWVzdElkKTtcbiAgICAgIHRoaXMuYW5pbWF0aW9uRnJhbWVSZXF1ZXN0SWQgPSBudWxsO1xuICAgIH1cbiAgfVxufVxuIiwiPHNlY3Rpb25cbiAgY2xhc3M9XCJlbW9qaS1tYXJ0IHt7IGRhcmtNb2RlID8gJ2Vtb2ppLW1hcnQtZGFyaycgOiAnJyB9fVwiXG4gIFtzdHlsZS53aWR0aF09XCJnZXRXaWR0aCgpXCJcbiAgW25nU3R5bGVdPVwic3R5bGVcIlxuPlxuICA8ZGl2IGNsYXNzPVwiZW1vamktbWFydC1iYXJcIj5cbiAgICA8ZW1vamktbWFydC1hbmNob3JzXG4gICAgICBbY2F0ZWdvcmllc109XCJjYXRlZ29yaWVzXCJcbiAgICAgIChhbmNob3JDbGljayk9XCJoYW5kbGVBbmNob3JDbGljaygkZXZlbnQpXCJcbiAgICAgIFtjb2xvcl09XCJjb2xvclwiXG4gICAgICBbc2VsZWN0ZWRdPVwic2VsZWN0ZWRcIlxuICAgICAgW2kxOG5dPVwiaTE4blwiXG4gICAgICBbaWNvbnNdPVwiY2F0ZWdvcmllc0ljb25zXCJcbiAgICA+PC9lbW9qaS1tYXJ0LWFuY2hvcnM+XG4gIDwvZGl2PlxuICA8ZW1vamktc2VhcmNoXG4gICAgKm5nSWY9XCJlbmFibGVTZWFyY2hcIlxuICAgIFtpMThuXT1cImkxOG5cIlxuICAgIChzZWFyY2hSZXN1bHRzKT1cImhhbmRsZVNlYXJjaCgkZXZlbnQpXCJcbiAgICAoZW50ZXJLZXkpPVwiaGFuZGxlRW50ZXJLZXkoJGV2ZW50KVwiXG4gICAgW2luY2x1ZGVdPVwiaW5jbHVkZVwiXG4gICAgW2V4Y2x1ZGVdPVwiZXhjbHVkZVwiXG4gICAgW2N1c3RvbV09XCJjdXN0b21cIlxuICAgIFthdXRvRm9jdXNdPVwiYXV0b0ZvY3VzXCJcbiAgICBbaWNvbnNdPVwic2VhcmNoSWNvbnNcIlxuICAgIFtlbW9qaXNUb1Nob3dGaWx0ZXJdPVwiZW1vamlzVG9TaG93RmlsdGVyXCJcbiAgPjwvZW1vamktc2VhcmNoPlxuICA8c2VjdGlvbiAjc2Nyb2xsUmVmIGNsYXNzPVwiZW1vamktbWFydC1zY3JvbGxcIiBbYXR0ci5hcmlhLWxhYmVsXT1cImkxOG4uZW1vamlsaXN0XCI+XG4gICAgPGVtb2ppLWNhdGVnb3J5XG4gICAgICAqbmdGb3I9XCJsZXQgY2F0ZWdvcnkgb2YgYWN0aXZlQ2F0ZWdvcmllczsgbGV0IGlkeCA9IGluZGV4OyB0cmFja0J5OiBjYXRlZ29yeVRyYWNrXCJcbiAgICAgIFtpZF09XCJjYXRlZ29yeS5pZFwiXG4gICAgICBbbmFtZV09XCJjYXRlZ29yeS5uYW1lXCJcbiAgICAgIFtlbW9qaXNdPVwiY2F0ZWdvcnkuZW1vamlzXCJcbiAgICAgIFtwZXJMaW5lXT1cInBlckxpbmVcIlxuICAgICAgW3RvdGFsRnJlcXVlbnRMaW5lc109XCJ0b3RhbEZyZXF1ZW50TGluZXNcIlxuICAgICAgW2hhc1N0aWNreVBvc2l0aW9uXT1cImlzTmF0aXZlXCJcbiAgICAgIFtpMThuXT1cImkxOG5cIlxuICAgICAgW2hpZGVPYnNvbGV0ZV09XCJoaWRlT2Jzb2xldGVcIlxuICAgICAgW25vdEZvdW5kRW1vamldPVwibm90Rm91bmRFbW9qaVwiXG4gICAgICBbY3VzdG9tXT1cImNhdGVnb3J5LmlkID09PSBSRUNFTlRfQ0FURUdPUlkuaWQgPyBDVVNUT01fQ0FURUdPUlkuZW1vamlzIDogdW5kZWZpbmVkXCJcbiAgICAgIFtyZWNlbnRdPVwiY2F0ZWdvcnkuaWQgPT09IFJFQ0VOVF9DQVRFR09SWS5pZCA/IHJlY2VudCA6IHVuZGVmaW5lZFwiXG4gICAgICBbdmlydHVhbGl6ZV09XCJ2aXJ0dWFsaXplXCJcbiAgICAgIFt2aXJ0dWFsaXplT2Zmc2V0XT1cInZpcnR1YWxpemVPZmZzZXRcIlxuICAgICAgW2Vtb2ppSXNOYXRpdmVdPVwiaXNOYXRpdmVcIlxuICAgICAgW2Vtb2ppU2tpbl09XCJza2luXCJcbiAgICAgIFtlbW9qaVNpemVdPVwiZW1vamlTaXplXCJcbiAgICAgIFtlbW9qaVNldF09XCJzZXRcIlxuICAgICAgW2Vtb2ppU2hlZXRTaXplXT1cInNoZWV0U2l6ZVwiXG4gICAgICBbZW1vamlGb3JjZVNpemVdPVwiaXNOYXRpdmVcIlxuICAgICAgW2Vtb2ppVG9vbHRpcF09XCJlbW9qaVRvb2x0aXBcIlxuICAgICAgW2Vtb2ppQmFja2dyb3VuZEltYWdlRm5dPVwiYmFja2dyb3VuZEltYWdlRm5cIlxuICAgICAgW2Vtb2ppSW1hZ2VVcmxGbl09XCJpbWFnZVVybEZuXCJcbiAgICAgIFtlbW9qaVVzZUJ1dHRvbl09XCJ1c2VCdXR0b25cIlxuICAgICAgKGVtb2ppT3Zlcik9XCJoYW5kbGVFbW9qaU92ZXIoJGV2ZW50KVwiXG4gICAgICAoZW1vamlMZWF2ZSk9XCJoYW5kbGVFbW9qaUxlYXZlKClcIlxuICAgICAgKGVtb2ppQ2xpY2spPVwiaGFuZGxlRW1vamlDbGljaygkZXZlbnQpXCJcbiAgICA+PC9lbW9qaS1jYXRlZ29yeT5cbiAgPC9zZWN0aW9uPlxuICA8ZGl2IGNsYXNzPVwiZW1vamktbWFydC1iYXJcIiAqbmdJZj1cInNob3dQcmV2aWV3XCI+XG4gICAgPGVtb2ppLXByZXZpZXdcbiAgICAgIFt0aXRsZV09XCJ0aXRsZVwiXG4gICAgICBbZW1vamldPVwicHJldmlld0Vtb2ppXCJcbiAgICAgIFtpZGxlRW1vamldPVwiZW1vamlcIlxuICAgICAgW2Vtb2ppSXNOYXRpdmVdPVwiaXNOYXRpdmVcIlxuICAgICAgW2Vtb2ppU2l6ZV09XCIzOFwiXG4gICAgICBbZW1vamlTa2luXT1cInNraW5cIlxuICAgICAgW2Vtb2ppU2V0XT1cInNldFwiXG4gICAgICBbaTE4bl09XCJpMThuXCJcbiAgICAgIFtlbW9qaVNoZWV0U2l6ZV09XCJzaGVldFNpemVcIlxuICAgICAgW2Vtb2ppQmFja2dyb3VuZEltYWdlRm5dPVwiYmFja2dyb3VuZEltYWdlRm5cIlxuICAgICAgW2Vtb2ppSW1hZ2VVcmxGbl09XCJpbWFnZVVybEZuXCJcbiAgICAgIChza2luQ2hhbmdlKT1cImhhbmRsZVNraW5DaGFuZ2UoJGV2ZW50KVwiXG4gICAgPjwvZW1vamktcHJldmlldz5cbiAgPC9kaXY+XG48L3NlY3Rpb24+XG4iXX0=
|
505
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvcGlja2VyL3BpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi9zcmMvbGliL3BpY2tlci9waWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUNMLHVCQUF1QixFQUV2QixTQUFTLEVBRVQsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBSUwsTUFBTSxFQUNOLFdBQVcsRUFHWCxTQUFTLEVBQ1QsWUFBWSxHQUNiLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFDTCxVQUFVLEdBS1gsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN4QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV6RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxLQUFLLEtBQUssTUFBTSxRQUFRLENBQUM7QUFDaEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sU0FBUyxDQUFDOzs7Ozs7OztBQUUzQyxNQUFNLElBQUksR0FBUTtJQUNoQixNQUFNLEVBQUUsUUFBUTtJQUNoQixTQUFTLEVBQUUsZUFBZTtJQUMxQixRQUFRLEVBQUUsZ0JBQWdCO0lBQzFCLEtBQUssRUFBRSxPQUFPO0lBQ2QsVUFBVSxFQUFFO1FBQ1YsTUFBTSxFQUFFLGdCQUFnQjtRQUN4QixNQUFNLEVBQUUsaUJBQWlCO1FBQ3pCLE1BQU0sRUFBRSxrQkFBa0I7UUFDMUIsTUFBTSxFQUFFLGtCQUFrQjtRQUMxQixLQUFLLEVBQUUsY0FBYztRQUNyQixRQUFRLEVBQUUsVUFBVTtRQUNwQixNQUFNLEVBQUUsaUJBQWlCO1FBQ3pCLE9BQU8s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LEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNJLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUMyQyxTQUFTO3NCQUExRCxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ1EsVUFBVTtzQkFBekQsU0FBUzt1QkFBQyxnQkFBZ0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ0MsU0FBUztzQkFBdkQsU0FBUzt1QkFBQyxlQUFlLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUNaLFlBQVk7c0JBQTVDLFlBQVk7dUJBQUMsaUJBQWlCO2dCQStCL0IsaUJBQWlCO3NCQURoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBQTEFURk9STV9JRCxcbiAgUXVlcnlMaXN0LFxuICBSZW5kZXJlcjIsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NoaWxkcmVuLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtcbiAgY2F0ZWdvcmllcyxcbiAgRW1vamksXG4gIEVtb2ppQ2F0ZWdvcnksXG4gIEVtb2ppRGF0YSxcbiAgRW1vamlFdmVudCxcbn0gZnJvbSAnQGN0cmwvbmd4LWVtb2ppLW1hcnQvbmd4LWVtb2ppJztcbmltcG9ydCB7IENhdGVnb3J5Q29tcG9uZW50IH0gZnJvbSAnLi9jYXRlZ29yeS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRW1vamlGcmVxdWVudGx5U2VydmljZSB9IGZyb20gJy4vZW1vamktZnJlcXVlbnRseS5zZXJ2aWNlJztcbmltcG9ydCB7IFByZXZpZXdDb21wb25lbnQgfSBmcm9tICcuL3ByZXZpZXcuY29tcG9uZW50JztcbmltcG9ydCB7IFNlYXJjaENvbXBvbmVudCB9IGZyb20gJy4vc2VhcmNoLmNvbXBvbmVudCc7XG5pbXBvcnQgKiBhcyBpY29ucyBmcm9tICcuL3N2Z3MnO1xuaW1wb3J0IHsgbWVhc3VyZVNjcm9sbGJhciB9IGZyb20gJy4vdXRpbHMnO1xuXG5jb25zdCBJMThOOiBhbnkgPSB7XG4gIHNlYXJjaDogJ1NlYXJjaCcsXG4gIGVtb2ppbGlzdDogJ0xpc3Qgb2YgZW1vamknLFxuICBub3Rmb3VuZDogJ05vIEVtb2ppIEZvdW5kJyxcbiAgY2xlYXI6ICdDbGVhcicsXG4gIGNhdGVnb3JpZXM6IHtcbiAgICBzZWFyY2g6ICdTZWFyY2ggUmVzdWx0cycsXG4gICAgcmVjZW50OiAnRnJlcXVlbnRseSBVc2VkJyxcbiAgICBwZW9wbGU6ICdTbWlsZXlzICYgUGVvcGxlJyxcbiAgICBuYXR1cmU6ICdBbmltYWxzICYgTmF0dXJlJyxcbiAgICBmb29kczogJ0Zvb2QgJiBEcmluaycsXG4gICAgYWN0aXZpdHk6ICdBY3Rpdml0eScsXG4gICAgcGxhY2VzOiAnVHJhdmVsICYgUGxhY2VzJyxcbiAgICBvYmplY3RzOiAnT2JqZWN0cycsXG4gICAgc3ltYm9sczogJ1N5bWJvbHMnLFxuICAgIGZsYWdzOiAnRmxhZ3MnLFxuICAgIGN1c3RvbTogJ0N1c3RvbScsXG4gIH0sXG4gIHNraW50b25lczoge1xuICAgIDE6ICdEZWZhdWx0IFNraW4gVG9uZScsXG4gICAgMjogJ0xpZ2h0IFNraW4gVG9uZScsXG4gICAgMzogJ01lZGl1bS1MaWdodCBTa2luIFRvbmUnLFxuICAgIDQ6ICdNZWRpdW0gU2tpbiBUb25lJyxcbiAgICA1OiAnTWVkaXVtLURhcmsgU2tpbiBUb25lJyxcbiAgICA2OiAnRGFyayBTa2luIFRvbmUnLFxuICB9LFxufTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZW1vamktbWFydCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJlc2VydmVXaGl0ZXNwYWNlczogZmFsc2UsXG59KVxuZXhwb3J0IGNsYXNzIFBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgcGVyTGluZSA9IDk7XG4gIEBJbnB1dCgpIHRvdGFsRnJlcXVlbnRMaW5lcyA9IDQ7XG4gIEBJbnB1dCgpIGkxOG46IGFueSA9IHt9O1xuICBASW5wdXQoKSBzdHlsZTogYW55ID0ge307XG4gIEBJbnB1dCgpIHRpdGxlID0gJ0Vtb2ppIE1hcnTihKInO1xuICBASW5wdXQoKSBlbW9qaSA9ICdkZXBhcnRtZW50X3N0b3JlJztcbiAgQElucHV0KCkgZGFya01vZGUgPSAhIShcbiAgICB0eXBlb2YgbWF0Y2hNZWRpYSA9PT0gJ2Z1bmN0aW9uJyAmJiBtYXRjaE1lZGlhKCcocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspJykubWF0Y2hlc1xuICApO1xuICBASW5wdXQoKSBjb2xvciA9ICcjYWU2NWM1JztcbiAgQElucHV0KCkgaGlkZU9ic29sZXRlID0gdHJ1ZTtcbiAgLyoqIGFsbCBjYXRlZ29yaWVzIHNob3duICovXG4gIEBJbnB1dCgpIGNhdGVnb3JpZXM6IEVtb2ppQ2F0ZWdvcnlbXSA9IFtdO1xuICAvKiogdXNlZCB0byB0ZW1wb3JhcmlseSBkcmF3IGNhdGVnb3JpZXMgKi9cbiAgQElucHV0KCkgYWN0aXZlQ2F0ZWdvcmllczogRW1vamlDYXRlZ29yeVtdID0gW107XG4gIEBJbnB1dCgpIHNldDogRW1vamlbJ3NldCddID0gJ2FwcGxlJztcbiAgQElucHV0KCkgc2tpbjogRW1vamlbJ3NraW4nXSA9IDE7XG4gIC8qKiBSZW5kZXJzIHRoZSBuYXRpdmUgdW5pY29kZSBlbW9qaSAqL1xuICBASW5wdXQoKSBpc05hdGl2ZTogRW1vamlbJ2lzTmF0aXZlJ10gPSBmYWxzZTtcbiAgQElucHV0KCkgZW1vamlTaXplOiBFbW9qaVsnc2l6ZSddID0gMjQ7XG4gIEBJbnB1dCgpIHNoZWV0U2l6ZTogRW1vamlbJ3NoZWV0U2l6ZSddID0gNjQ7XG4gIEBJbnB1dCgpIGVtb2ppc1RvU2hvd0ZpbHRlcj86ICh4OiBzdHJpbmcpID0+IGJvb2xlYW47XG4gIEBJbnB1dCgpIHNob3dQcmV2aWV3ID0gdHJ1ZTtcbiAgQElucHV0KCkgZW1vamlUb29sdGlwID0gZmFsc2U7XG4gIEBJbnB1dCgpIGF1dG9Gb2N1cyA9IGZhbHNlO1xuICBASW5wdXQoKSBjdXN0b206IGFueVtdID0gW107XG4gIEBJbnB1dCgpIGhpZGVSZWNlbnQgPSB0cnVlO1xuICBASW5wdXQoKSBpbWFnZVVybEZuOiBFbW9qaVsnaW1hZ2VVcmxGbiddO1xuICBASW5wdXQoKSBpbmNsdWRlPzogc3RyaW5nW107XG4gIEBJbnB1dCgpIGV4Y2x1ZGU/OiBzdHJpbmdbXTtcbiAgQElucHV0KCkgbm90Rm91bmRFbW9qaSA9ICdzbGV1dGhfb3Jfc3B5JztcbiAgQElucHV0KCkgY2F0ZWdvcmllc0ljb25zID0gaWNvbnMuY2F0ZWdvcmllcztcbiAgQElucHV0KCkgc2VhcmNoSWNvbnMgPSBpY29ucy5zZWFyY2g7XG4gIEBJbnB1dCgpIHVzZUJ1dHRvbiA9IGZhbHNlO1xuICBASW5wdXQoKSBlbmFibGVGcmVxdWVudEVtb2ppU29ydCA9IGZhbHNlO1xuICBASW5wdXQoKSBlbmFibGVTZWFyY2ggPSB0cnVlO1xuICBASW5wdXQoKSBzaG93U2luZ2xlQ2F0ZWdvcnkgPSBmYWxzZTtcbiAgQElucHV0KCkgdmlydHVhbGl6ZSA9IGZhbHNlO1xuICBASW5wdXQoKSB2aXJ0dWFsaXplT2Zmc2V0ID0gMDtcbiAgQElucHV0KCkgcmVjZW50Pzogc3RyaW5nW107XG4gIEBPdXRwdXQoKSBlbW9qaUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBlbW9qaVNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgc2tpbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RW1vamlbJ3NraW4nXT4oKTtcbiAgQFZpZXdDaGlsZCgnc2Nyb2xsUmVmJywgeyBzdGF0aWM6IHRydWUgfSkgcHJpdmF0ZSBzY3JvbGxSZWYhOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKFByZXZpZXdDb21wb25lbnQsIHsgc3RhdGljOiBmYWxzZSB9KSBwcmV2aWV3UmVmPzogUHJldmlld0NvbXBvbmVudDtcbiAgQFZpZXdDaGlsZChTZWFyY2hDb21wb25lbnQsIHsgc3RhdGljOiBmYWxzZSB9KSBzZWFyY2hSZWY/OiBTZWFyY2hDb21wb25lbnQ7XG4gIEBWaWV3Q2hpbGRyZW4oQ2F0ZWdvcnlDb21wb25lbnQpIGNhdGVnb3J5UmVmcyE6IFF1ZXJ5TGlzdDxDYXRlZ29yeUNvbXBvbmVudD47XG4gIHNjcm9sbEhlaWdodCA9IDA7XG4gIGNsaWVudEhlaWdodCA9IDA7XG4gIGNsaWVudFdpZHRoID0gMDtcbiAgc2VsZWN0ZWQ/OiBzdHJpbmc7XG4gIG5leHRTY3JvbGw/OiBzdHJpbmc7XG4gIHNjcm9sbFRvcD86IG51bWJlcjtcbiAgZmlyc3RSZW5kZXIgPSB0cnVlO1xuICBwcmV2aWV3RW1vamk6IGFueTtcbiAgYW5pbWF0aW9uRnJhbWVSZXF1ZXN0SWQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBOQU1FU1BBQ0UgPSAnZW1vamktbWFydCc7XG4gIG1lYXN1cmVTY3JvbGxiYXIgPSAwO1xuICBSRUNFTlRfQ0FURUdPUlk6IEVtb2ppQ2F0ZWdvcnkgPSB7XG4gICAgaWQ6ICdyZWNlbnQnLFxuICAgIG5hbWU6ICdSZWNlbnQnLFxuICAgIGVtb2ppczogbnVsbCxcbiAgfTtcbiAgU0VBUkNIX0NBVEVHT1JZOiBFbW9qaUNhdGVnb3J5ID0ge1xuICAgIGlkOiAnc2VhcmNoJyxcbiAgICBuYW1lOiAnU2VhcmNoJyxcbiAgICBlbW9qaXM6IG51bGwsXG4gICAgYW5jaG9yOiBmYWxzZSxcbiAgfTtcbiAgQ1VTVE9NX0NBVEVHT1JZOiBFbW9qaUNhdGVnb3J5ID0ge1xuICAgIGlkOiAnY3VzdG9tJyxcbiAgICBuYW1lOiAnQ3VzdG9tJyxcbiAgICBlbW9qaXM6IFtdLFxuICB9O1xuICBwcml2YXRlIHNjcm9sbExpc3RlbmVyITogKCkgPT4gdm9pZDtcblxuICBASW5wdXQoKVxuICBiYWNrZ3JvdW5kSW1hZ2VGbjogRW1vamlbJ2JhY2tncm91bmRJbWFnZUZuJ10gPSAoc2V0OiBzdHJpbmcsIHNoZWV0U2l6ZTogbnVtYmVyKSA9PlxuICAgIGBodHRwczovL3VucGtnLmNvbS9lbW9qaS1kYXRhc291cmNlLSR7dGhpcy5zZXR9QDYuMC4xL2ltZy8ke3RoaXMuc2V0fS9zaGVldHMtMjU2LyR7dGhpcy5zaGVldFNpemV9LnBuZ2BcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBmcmVxdWVudGx5OiBFbW9qaUZyZXF1ZW50bHlTZXJ2aWNlLFxuICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm1JZDogc3RyaW5nLFxuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgLy8gbWVhc3VyZSBzY3JvbGxcbiAgICB0aGlzLm1lYXN1cmVTY3JvbGxiYXIgPSBtZWFzdXJlU2Nyb2xsYmFyKCk7XG5cbiAgICB0aGlzLmkxOG4gPSB7IC4uLkkxOE4sIC4uLnRoaXMuaTE4biB9O1xuICAgIHRoaXMuaTE4bi5jYXRlZ29yaWVzID0geyAuLi5JMThOLmNhdGVnb3JpZXMsIC4uLnRoaXMuaTE4bi5jYXRlZ29yaWVzIH07XG4gICAgdGhpcy5za2luID1cbiAgICAgIEpTT04ucGFyc2UoXG4gICAgICAgIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpICYmIGxvY2FsU3RvcmFnZS5nZXRJdGVtKGAke3RoaXMuTkFNRVNQQUNFfS5za2luYCkpIHx8XG4gICAgICAgICAgJ251bGwnLFxuICAgICAgKSB8fCB0aGlzLnNraW47XG5cbiAgICBjb25zdCBhbGxDYXRlZ29yaWVzID0gWy4uLmNhdGVnb3JpZXNdO1xuXG4gICAgaWYgKHRoaXMuY3VzdG9tLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuQ1VTVE9NX0NBVEVHT1JZLmVtb2ppcyA9IHRoaXMuY3VzdG9tLm1hcChlbW9qaSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uZW1vamksXG4gICAgICAgICAgLy8gYDxDYXRlZ29yeSAvPmAgZXhwZWN0cyBlbW9qaSB0byBoYXZlIGFuIGBpZGAuXG4gICAgICAgICAgaWQ6IGVtb2ppLnNob3J0TmFtZXNbMF0sXG4gICAgICAgICAgY3VzdG9tOiB0cnVlLFxuICAgICAgICB9O1xuICAgICAgfSk7XG5cbiAgICAgIGFsbENhdGVnb3JpZXMucHVzaCh0aGlzLkNVU1RPTV9DQVRFR09SWSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaW5jbHVkZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBhbGxDYXRlZ29yaWVzLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuaW5jbHVkZSEuaW5kZXhPZihhLmlkKSA+IHRoaXMuaW5jbHVkZSEuaW5kZXhPZihiLmlkKSkge1xuICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgY2F0ZWdvcnkgb2YgYWxsQ2F0ZWdvcmllcykge1xuICAgICAgY29uc3QgaXNJbmNsdWRlZCA9XG4gICAgICAgIHRoaXMuaW5jbHVkZSAmJiB0aGlzLmluY2x1ZGUubGVuZ3RoID8gdGhpcy5pbmNsdWRlLmluZGV4T2YoY2F0ZWdvcnkuaWQpID4gLTEgOiB0cnVlO1xuICAgICAgY29uc3QgaXNFeGNsdWRlZCA9XG4gICAgICAgIHRoaXMuZXhjbHVkZSAmJiB0aGlzLmV4Y2x1ZGUubGVuZ3RoID8gdGhpcy5leGNsdWRlLmluZGV4T2YoY2F0ZWdvcnkuaWQpID4gLTEgOiBmYWxzZTtcbiAgICAgIGlmICghaXNJbmNsdWRlZCB8fCBpc0V4Y2x1ZGVkKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5lbW9qaXNUb1Nob3dGaWx0ZXIpIHtcbiAgICAgICAgY29uc3QgbmV3RW1vamlzID0gW107XG5cbiAgICAgICAgY29uc3QgeyBlbW9qaXMgfSA9IGNhdGVnb3J5O1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3ByZWZlci1mb3Itb2ZcbiAgICAgICAgZm9yIChsZXQgZW1vamlJbmRleCA9IDA7IGVtb2ppSW5kZXggPCBlbW9qaXMhLmxlbmd0aDsgZW1vamlJbmRleCsrKSB7XG4gICAgICAgICAgY29uc3QgZW1vamkgPSBlbW9qaXMhW2Vtb2ppSW5kZXhdO1xuICAgICAgICAgIGlmICh0aGlzLmVtb2ppc1RvU2hvd0ZpbHRlcihlbW9qaSkpIHtcbiAgICAgICAgICAgIG5ld0Vtb2ppcy5wdXNoKGVtb2ppKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobmV3RW1vamlzLmxlbmd0aCkge1xuICAgICAgICAgIGNvbnN0IG5ld0NhdGVnb3J5ID0ge1xuICAgICAgICAgICAgZW1vamlzOiBuZXdFbW9qaXMsXG4gICAgICAgICAgICBuYW1lOiBjYXRlZ29yeS5uYW1lLFxuICAgICAgICAgICAgaWQ6IGNhdGVnb3J5LmlkLFxuICAgICAgICAgIH07XG5cbiAgICAgICAgICB0aGlzLmNhdGVnb3JpZXMucHVzaChuZXdDYXRlZ29yeSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY2F0ZWdvcmllcy5wdXNoKGNhdGVnb3J5KTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5jYXRlZ29yaWVzSWNvbnMgPSB7IC4uLmljb25zLmNhdGVnb3JpZXMsIC4uLnRoaXMuY2F0ZWdvcmllc0ljb25zIH07XG4gICAgICB0aGlzLnNlYXJjaEljb25zID0geyAuLi5pY29ucy5zZWFyY2gsIC4uLnRoaXMuc2VhcmNoSWNvbnMgfTtcbiAgICB9XG5cbiAgICBjb25zdCBpbmNsdWRlUmVjZW50ID1cbiAgICAgIHRoaXMuaW5jbHVkZSAmJiB0aGlzLmluY2x1ZGUubGVuZ3RoXG4gICAgICAgID8gdGhpcy5pbmNsdWRlLmluZGV4T2YodGhpcy5SRUNFTlRfQ0FURUdPUlkuaWQpID4gLTFcbiAgICAgICAgOiB0cnVlO1xuICAgIGNvbnN0IGV4Y2x1ZGVSZWNlbnQgPVxuICAgICAgdGhpcy5leGNsdWRlICYmIHRoaXMuZXhjbHVkZS5sZW5ndGhcbiAgICAgICAgPyB0aGlzLmV4Y2x1ZGUuaW5kZXhPZih0aGlzLlJFQ0VOVF9DQVRFR09SWS5pZCkgPiAtMVxuICAgICAgICA6IGZhbHNlO1xuICAgIGlmIChpbmNsdWRlUmVjZW50ICYmICFleGNsdWRlUmVjZW50KSB7XG4gICAgICB0aGlzLmhpZGVSZWNlbnQgPSBmYWxzZTtcbiAgICAgIHRoaXMuY2F0ZWdvcmllcy51bnNoaWZ0KHRoaXMuUkVDRU5UX0NBVEVHT1JZKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jYXRlZ29yaWVzWzBdKSB7XG4gICAgICB0aGlzLmNhdGVnb3JpZXNbMF0uZmlyc3QgPSB0cnVlO1xuICAgIH1cblxuICAgIHRoaXMuY2F0ZWdvcmllcy51bnNoaWZ0KHRoaXMuU0VBUkNIX0NBVEVHT1JZKTtcbiAgICB0aGlzLnNlbGVjdGVkID0gdGhpcy5jYXRlZ29yaWVzLmZpbHRlcihjYXRlZ29yeSA9PiBjYXRlZ29yeS5maXJzdClbMF0ubmFtZTtcblxuICAgIC8vIE5lZWQgdG8gYmUgY2FyZWZ1bCBpZiBzbWFsbCBudW1iZXIgb2YgY2F0ZWdvcmllc1xuICAgIGNvbnN0IGNhdGVnb3JpZXNUb0xvYWRGaXJzdCA9IE1hdGgubWluKHRoaXMuY2F0ZWdvcmllcy5sZW5ndGgsIDMpO1xuICAgIHRoaXMuc2V0QWN0aXZlQ2F0ZWdvcmllcyhcbiAgICAgICh0aGlzLmFjdGl2ZUNhdGVnb3JpZXMgPSB0aGlzLmNhdGVnb3JpZXMuc2xpY2UoMCwgY2F0ZWdvcmllc1RvTG9hZEZpcnN0KSksXG4gICAgKTtcblxuICAgIC8vIFRyaW0gbGFzdCBhY3RpdmUgY2F0ZWdvcnlcbiAgICBjb25zdCBsYXN0QWN0aXZlQ2F0ZWdvcnlFbW9qaXMgPSB0aGlzLmNhdGVnb3JpZXNbY2F0ZWdvcmllc1RvTG9hZEZpcnN0IC0gMV0uZW1vamlzIS5zbGljZSgpO1xuICAgIHRoaXMuY2F0ZWdvcmllc1tjYXRlZ29yaWVzVG9Mb2FkRmlyc3QgLSAxXS5lbW9qaXMgPSBsYXN0QWN0aXZlQ2F0ZWdvcnlFbW9qaXMuc2xpY2UoMCwgNjApO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAvLyBSZXN0b3JlIGxhc3QgY2F0ZWdvcnlcbiAgICAgIHRoaXMuY2F0ZWdvcmllc1tjYXRlZ29yaWVzVG9Mb2FkRmlyc3QgLSAxXS5lbW9qaXMgPSBsYXN0QWN0aXZlQ2F0ZWdvcnlFbW9qaXM7XG4gICAgICB0aGlzLnNldEFjdGl2ZUNhdGVnb3JpZXModGhpcy5jYXRlZ29yaWVzKTtcbiAgICAgIC8vIFRoZSBgc2V0VGltZW91dGAgd2lsbCB0cmlnZ2VyIHRoZSBjaGFuZ2UgZGV0ZWN0aW9uLCBidXQgc2luY2Ugd2UncmUgaW5zaWRlXG4gICAgICAvLyB0aGUgT25QdXNoIGNvbXBvbmVudCB3ZSBjYW4gcnVuIGNoYW5nZSBkZXRlY3Rpb24gbG9jYWxseSBzdGFydGluZyBmcm9tIHRoaXNcbiAgICAgIC8vIGNvbXBvbmVudCBhbmQgZ29pbmcgZG93biB0byB0aGUgY2hpbGRyZW4uXG4gICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLWV4cHJlc3Npb25zXG4gICAgICBpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpICYmXG4gICAgICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAvLyBUaGUgYHVwZGF0ZUNhdGVnb3JpZXNTaXplYCBkb2Vzbid0IGNoYW5nZSBwcm9wZXJ0aWVzIHRoYXQgYXJlIHVzZWRcbiAgICAgICAgICAvLyBpbiB0ZW1wbGF0ZXMsIHRodXMgdGhpcyBpcyBydW4gaW4gdGhlIGNvbnRleHQgb2YgdGhlIHJvb3Qgem9uZSB0byBhdm9pZFxuICAgICAgICAgIC8vIHJ1bm5pbmcgY2hhbmdlIGRldGVjdGlvbi5cbiAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVDYXRlZ29yaWVzU2l6ZSgpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9KTtcblxuICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIC8vIERPTSBldmVudHMgdGhhdCBhcmUgbGlzdGVuZWQgYnkgQW5ndWxhciBpbnNpZGUgdGhlIHRlbXBsYXRlIHRyaWdnZXIgY2hhbmdlIGRldGVjdGlvblxuICAgICAgLy8gYW5kIGFsc28gd3JhcHBlZCBpbnRvIGFkZGl0aW9uYWwgZnVuY3Rpb25zIHRoYXQgY2FsbCBgbWFya0ZvckNoZWNrKClgLiBXZSBsaXN0ZW4gYHNjcm9sbGBcbiAgICAgIC8vIGluIHRoZSBjb250ZXh0IG9mIHRoZSByb290IHpvbmUgc2luY2UgaXQgd2lsbCBub3QgdHJpZ2dlciBjaGFuZ2UgZGV0ZWN0aW9uIGVhY2ggdGltZVxuICAgICAgLy8gdGhlIGBzY3JvbGxgIGV2ZW50IGlzIGRpc3BhdGNoZWQuXG4gICAgICB0aGlzLnNjcm9sbExpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4odGhpcy5zY3JvbGxSZWYubmF0aXZlRWxlbWVudCwgJ3Njcm9sbCcsICgpID0+IHtcbiAgICAgICAgdGhpcy5oYW5kbGVTY3JvbGwoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zY3JvbGxMaXN0ZW5lcj8uKCk7XG4gICAgLy8gVGhpcyBpcyBjYWxsZWQgaGVyZSBiZWNhdXNlIHRoZSBjb21wb25lbnQgbWlnaHQgYmUgZGVzdHJveWVkXG4gICAgLy8gYnV0IHRoZXJlIHdpbGwgc3RpbGwgYmUgYSBgcmVxdWVzdEFuaW1hdGlvbkZyYW1lYCBjYWxsYmFjayBpbiB0aGUgcXVldWVcbiAgICAvLyB0aGF0IGNhbGxzIGBkZXRlY3RDaGFuZ2VzKClgIG9uIHRoZSBgVmlld1JlZmAuIFRoaXMgd2lsbCBsZWFkIHRvIGEgcnVudGltZVxuICAgIC8vIGV4Y2VwdGlvbiBpZiB0aGUgYGRldGVjdENoYW5nZXMoKWAgaXMgY2FsbGVkIGFmdGVyIHRoZSBgVmlld1JlZmAgaXMgZGVzdHJveWVkLlxuICAgIHRoaXMuY2FuY2VsQW5pbWF0aW9uRnJhbWUoKTtcbiAgfVxuXG4gIHNldEFjdGl2ZUNhdGVnb3JpZXMoY2F0ZWdvcmllc1RvTWFrZUFjdGl2ZTogQXJyYXk8RW1vamlDYXRlZ29yeT4pIHtcbiAgICBpZiAodGhpcy5zaG93U2luZ2xlQ2F0ZWdvcnkpIHtcbiAgICAgIHRoaXMuYWN0aXZlQ2F0ZWdvcmllcyA9IGNhdGVnb3JpZXNUb01ha2VBY3RpdmUuZmlsdGVyKFxuICAgICAgICB4ID0+IHgubmFtZSA9PT0gdGhpcy5zZWxlY3RlZCB8fCB4ID09PSB0aGlzLlNFQVJDSF9DQVRFR09SWSxcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYWN0aXZlQ2F0ZWdvcmllcyA9IGNhdGVnb3JpZXNUb01ha2VBY3RpdmU7XG4gICAgfVxuICB9XG4gIHVwZGF0ZUNhdGVnb3JpZXNTaXplKCkge1xuICAgIHRoaXMuY2F0ZWdvcnlSZWZzLmZvckVhY2goY29tcG9uZW50ID0+IGNvbXBvbmVudC5tZW1vaXplU2l6ZSgpKTtcblxuICAgIGlmICh0aGlzLnNjcm9sbFJlZikge1xuICAgICAgY29uc3QgdGFyZ2V0ID0gdGhpcy5zY3JvbGxSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgIHRoaXMuc2Nyb2xsSGVpZ2h0ID0gdGFyZ2V0LnNjcm9sbEhlaWdodDtcbiAgICAgIHRoaXMuY2xpZW50SGVpZ2h0ID0gdGFyZ2V0LmNsaWVudEhlaWdodDtcbiAgICAgIHRoaXMuY2xpZW50V2lkdGggPSB0YXJnZXQuY2xpZW50V2lkdGg7XG4gICAgfVxuICB9XG4gIGhhbmRsZUFuY2hvckNsaWNrKCRldmVudDogeyBjYXRlZ29yeTogRW1vamlDYXRlZ29yeTsgaW5kZXg6IG51bWJlciB9KSB7XG4gICAgdGhpcy51cGRhdGVDYXRlZ29yaWVzU2l6ZSgpO1xuICAgIHRoaXMuc2VsZWN0ZWQgPSAkZXZlbnQuY2F0ZWdvcnkubmFtZTtcbiAgICB0aGlzLnNldEFjdGl2ZUNhdGVnb3JpZXModGhpcy5jYXRlZ29yaWVzKTtcblxuICAgIGlmICh0aGlzLlNFQVJDSF9DQVRFR09SWS5lbW9qaXMpIHtcbiAgICAgIHRoaXMuaGFuZGxlU2VhcmNoKG51bGwpO1xuICAgICAgdGhpcy5zZWFyY2hSZWY/LmNsZWFyKCk7XG4gICAgICB0aGlzLmhhbmRsZUFuY2hvckNsaWNrKCRldmVudCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgY29tcG9uZW50ID0gdGhpcy5jYXRlZ29yeVJlZnMuZmluZChuID0+IG4uaWQgPT09ICRldmVudC5jYXRlZ29yeS5pZCk7XG4gICAgaWYgKGNvbXBvbmVudCkge1xuICAgICAgbGV0IHsgdG9wIH0gPSBjb21wb25lbnQ7XG5cbiAgICAgIGlmICgkZXZlbnQuY2F0ZWdvcnkuZmlyc3QpIHtcbiAgICAgICAgdG9wID0gMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRvcCArPSAxO1xuICAgICAgfVxuICAgICAgdGhpcy5zY3JvbGxSZWYubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgPSB0b3A7XG4gICAgfVxuICAgIHRoaXMubmV4dFNjcm9sbCA9ICRldmVudC5jYXRlZ29yeS5uYW1lO1xuXG4gICAgLy8gaGFuZGxlIGNvbXBvbmVudCBzY3JvbGxpbmcgdG8gbG9hZCBlbW9qaXNcbiAgICBmb3IgKGNvbnN0IGNhdGVnb3J5IG9mIHRoaXMuY2F0ZWdvcmllcykge1xuICAgICAgY29uc3QgY29tcG9uZW50VG9TY3JvbGwgPSB0aGlzLmNhdGVnb3J5UmVmcy5maW5kKCh7IGlkIH0pID0+IGlkID09PSBjYXRlZ29yeS5pZCk7XG4gICAgICBjb21wb25lbnRUb1Njcm9sbD8uaGFuZGxlU2Nyb2xsKHRoaXMuc2Nyb2xsUmVmLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wKTtcbiAgICB9XG4gIH1cbiAgY2F0ZWdvcnlUcmFjayhpbmRleDogbnVtYmVyLCBpdGVtOiBhbnkpIHtcbiAgICByZXR1cm4gaXRlbS5pZDtcbiAgfVxuICBoYW5kbGVTY3JvbGwobm9TZWxlY3Rpb25DaGFuZ2UgPSBmYWxzZSkge1xuICAgIGlmICh0aGlzLm5leHRTY3JvbGwpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWQgPSB0aGlzLm5leHRTY3JvbGw7XG4gICAgICB0aGlzLm5leHRTY3JvbGwgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghdGhpcy5zY3JvbGxSZWYpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuc2hvd1NpbmdsZUNhdGVnb3J5KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IGFjdGl2ZUNhdGVnb3J5OiBFbW9qaUNhdGVnb3J5IHwgdW5kZWZpbmVkO1xuICAgIGlmICh0aGlzLlNFQVJDSF9DQVRFR09SWS5lbW9qaXMpIHtcbiAgICAgIGFjdGl2ZUNhdGVnb3J5ID0gdGhpcy5TRUFSQ0hfQ0FURUdPUlk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHRhcmdldCA9IHRoaXMuc2Nyb2xsUmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAvLyBjaGVjayBzY3JvbGwgaXMgbm90IGF0IGJvdHRvbVxuICAgICAgaWYgKHRhcmdldC5zY3JvbGxUb3AgPT09IDApIHtcbiAgICAgICAgLy8gaGl0IHRoZSBUT1BcbiAgICAgICAgYWN0aXZlQ2F0ZWdvcnkgPSB0aGlzLmNhdGVnb3JpZXMuZmluZChuID0+IG4uZmlyc3QgPT09IHRydWUpO1xuICAgICAgfSBlbHNlIGlmICh0YXJnZXQuc2Nyb2xsSGVpZ2h0IC0gdGFyZ2V0LnNjcm9sbFRvcCA9PT0gdGhpcy5jbGllbnRIZWlnaHQpIHtcbiAgICAgICAgLy8gc2Nyb2xsZWQgdG8gYm90dG9tIGFjdGl2YXRlIGxhc3QgY2F0ZWdvcnlcbiAgICAgICAgYWN0aXZlQ2F0ZWdvcnkgPSB0aGlzLmNhdGVnb3JpZXNbdGhpcy5jYXRlZ29yaWVzLmxlbmd0aCAtIDFdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gc2Nyb2xsaW5nXG4gICAgICAgIGZvciAoY29uc3QgY2F0ZWdvcnkgb2YgdGhpcy5jYXRlZ29yaWVzKSB7XG4gICAgICAgICAgY29uc3QgY29tcG9uZW50ID0gdGhpcy5jYXRlZ29yeVJlZnMuZmluZCgoeyBpZCB9KSA9PiBpZCA9PT0gY2F0ZWdvcnkuaWQpO1xuICAgICAgICAgIGNvbnN0IGFjdGl2ZTogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IGNvbXBvbmVudD8uaGFuZGxlU2Nyb2xsKHRhcmdldC5zY3JvbGxUb3ApO1xuICAgICAgICAgIGlmIChhY3RpdmUpIHtcbiAgICAgICAgICAgIGFjdGl2ZUNhdGVnb3J5ID0gY2F0ZWdvcnk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMuc2Nyb2xsVG9wID0gdGFyZ2V0LnNjcm9sbFRvcDtcbiAgICB9XG4gICAgLy8gVGhpcyB3aWxsIGFsbG93IHVzIHRvIHJ1biB0aGUgY2hhbmdlIGRldGVjdGlvbiBvbmx5IHdoZW4gdGhlIGNhdGVnb3J5IGNoYW5nZXMuXG4gICAgaWYgKCFub1NlbGVjdGlvbkNoYW5nZSAmJiBhY3RpdmVDYXRlZ29yeSAmJiBhY3RpdmVDYXRlZ29yeS5uYW1lICE9PSB0aGlzLnNlbGVjdGVkKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkID0gYWN0aXZlQ2F0ZWdvcnkubmFtZTtcbiAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9IGVsc2UgaWYgKG5vU2VsZWN0aW9uQ2hhbmdlKSB7XG4gICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG4gIGhhbmRsZVNlYXJjaCgkZW1vamlzOiBhbnlbXSB8IG51bGwpIHtcbiAgICB0aGlzLlNFQVJDSF9DQVRFR09SWS5lbW9qaXMgPSAkZW1vamlzO1xuICAgIGZvciAoY29uc3QgY29tcG9uZW50IG9mIHRoaXMuY2F0ZWdvcnlSZWZzLnRvQXJyYXkoKSkge1xuICAgICAgaWYgKGNvbXBvbmVudC5uYW1lID09PSAnU2VhcmNoJykge1xuICAgICAgICBjb21wb25lbnQuZW1vamlzID0gJGVtb2ppcztcbiAgICAgICAgY29tcG9uZW50LnVwZGF0ZURpc3BsYXkoJGVtb2ppcyA/ICdibG9jaycgOiAnbm9uZScpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29tcG9uZW50LnVwZGF0ZURpc3BsYXkoJGVtb2ppcyA/ICdub25lJyA6ICdibG9jaycpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuc2Nyb2xsUmVmLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gMDtcbiAgICB0aGlzLmhhbmRsZVNjcm9sbCgpO1xuICB9XG5cbiAgaGFuZGxlRW50ZXJLZXkoJGV2ZW50OiBFdmVudCwgZW1vamk/OiBFbW9qaURhdGEpIHtcbiAgICBpZiAoIWVtb2ppKSB7XG4gICAgICBpZiAodGhpcy5TRUFSQ0hfQ0FURUdPUlkuZW1vamlzICE9PSBudWxsICYmIHRoaXMuU0VBUkNIX0NBVEVHT1JZLmVtb2ppcy5sZW5ndGgpIHtcbiAgICAgICAgZW1vamkgPSB0aGlzLlNFQVJDSF9DQVRFR09SWS5lbW9qaXNbMF07XG4gICAgICAgIGlmIChlbW9qaSkge1xuICAgICAgICAgIHRoaXMuZW1vamlTZWxlY3QuZW1pdCh7ICRldmVudCwgZW1vamkgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmhpZGVSZWNlbnQgJiYgIXRoaXMucmVjZW50ICYmIGVtb2ppKSB7XG4gICAgICB0aGlzLmZyZXF1ZW50bHkuYWRkKGVtb2ppKTtcbiAgICB9XG5cbiAgICBjb25zdCBjb21wb25lbnQgPSB0aGlzLmNhdGVnb3J5UmVmcy50b0FycmF5KClbMV07XG4gICAgaWYgKGNvbXBvbmVudCAmJiB0aGlzLmVuYWJsZUZyZXF1ZW50RW1vamlTb3J0KSB7XG4gICAgICBjb21wb25lbnQudXBkYXRlUmVjZW50RW1vamlzKCk7XG4gICAgICBjb21wb25lbnQucmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuICBoYW5kbGVFbW9qaU92ZXIoJGV2ZW50OiBFbW9qaUV2ZW50KSB7XG4gICAgaWYgKCF0aGlzLnNob3dQcmV2aWV3IHx8ICF0aGlzLnByZXZpZXdSZWYpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBlbW9qaURhdGEgPSB0aGlzLkNVU1RPTV9DQVRFR09SWS5lbW9qaXMhLmZpbmQoXG4gICAgICAoY3VzdG9tRW1vamk6IGFueSkgPT4gY3VzdG9tRW1vamkuaWQgPT09ICRldmVudC5lbW9qaS5pZCxcbiAgICApO1xuICAgIGlmIChlbW9qaURhdGEpIHtcbiAgICAgICRldmVudC5lbW9qaSA9IHsgLi4uZW1vamlEYXRhIH07XG4gICAgfVxuXG4gICAgdGhpcy5wcmV2aWV3RW1vamkgPSAkZXZlbnQuZW1vamk7XG4gICAgdGhpcy5jYW5jZWxBbmltYXRpb25GcmFtZSgpO1xuICAgIHRoaXMucmVmPy5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cbiAgaGFuZGxlRW1vamlMZWF2ZSgpIHtcbiAgICBpZiAoIXRoaXMuc2hvd1ByZXZpZXcgfHwgIXRoaXMucHJldmlld1JlZikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIHRoaXMuYW5pbWF0aW9uRnJhbWVSZXF1ZXN0SWQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICB0aGlzLnByZXZpZXdFbW9qaSA9IG51bGw7XG4gICAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG4gIGhhbmRsZUVtb2ppQ2xpY2soJGV2ZW50OiBFbW9qaUV2ZW50KSB7XG4gICAgdGhpcy5lbW9qaUNsaWNrLmVtaXQoJGV2ZW50KTtcbiAgICB0aGlzLmVtb2ppU2VsZWN0LmVtaXQoJGV2ZW50KTtcbiAgICB0aGlzLmhhbmRsZUVudGVyS2V5KCRldmVudC4kZXZlbnQsICRldmVudC5lbW9qaSk7XG4gIH1cbiAgaGFuZGxlU2tpbkNoYW5nZShza2luOiBFbW9qaVsnc2tpbiddKSB7XG4gICAgdGhpcy5za2luID0gc2tpbjtcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShgJHt0aGlzLk5BTUVTUEFDRX0uc2tpbmAsIFN0cmluZyhza2luKSk7XG4gICAgdGhpcy5za2luQ2hhbmdlLmVtaXQoc2tpbik7XG4gIH1cbiAgZ2V0V2lkdGgoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5zdHlsZSAmJiB0aGlzLnN0eWxlLndpZHRoKSB7XG4gICAgICByZXR1cm4gdGhpcy5zdHlsZS53aWR0aDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMucGVyTGluZSAqICh0aGlzLmVtb2ppU2l6ZSArIDEyKSArIDEyICsgMiArIHRoaXMubWVhc3VyZVNjcm9sbGJhciArICdweCc7XG4gIH1cblxuICBwcml2YXRlIGNhbmNlbEFuaW1hdGlvbkZyYW1lKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmFuaW1hdGlvbkZyYW1lUmVxdWVzdElkICE9PSBudWxsKSB7XG4gICAgICBjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLmFuaW1hdGlvbkZyYW1lUmVxdWVzdElkKTtcbiAgICAgIHRoaXMuYW5pbWF0aW9uRnJhbWVSZXF1ZXN0SWQgPSBudWxsO1xuICAgIH1cbiAgfVxufVxuIiwiPHNlY3Rpb25cbiAgY2xhc3M9XCJlbW9qaS1tYXJ0IHt7IGRhcmtNb2RlID8gJ2Vtb2ppLW1hcnQtZGFyaycgOiAnJyB9fVwiXG4gIFtzdHlsZS53aWR0aF09XCJnZXRXaWR0aCgpXCJcbiAgW25nU3R5bGVdPVwic3R5bGVcIlxuPlxuICA8ZGl2IGNsYXNzPVwiZW1vamktbWFydC1iYXJcIj5cbiAgICA8ZW1vamktbWFydC1hbmNob3JzXG4gICAgICBbY2F0ZWdvcmllc109XCJjYXRlZ29yaWVzXCJcbiAgICAgIChhbmNob3JDbGljayk9XCJoYW5kbGVBbmNob3JDbGljaygkZXZlbnQpXCJcbiAgICAgIFtjb2xvcl09XCJjb2xvclwiXG4gICAgICBbc2VsZWN0ZWRdPVwic2VsZWN0ZWRcIlxuICAgICAgW2kxOG5dPVwiaTE4blwiXG4gICAgICBbaWNvbnNdPVwiY2F0ZWdvcmllc0ljb25zXCJcbiAgICA+PC9lbW9qaS1tYXJ0LWFuY2hvcnM+XG4gIDwvZGl2PlxuICA8ZW1vamktc2VhcmNoXG4gICAgKm5nSWY9XCJlbmFibGVTZWFyY2hcIlxuICAgIFtpMThuXT1cImkxOG5cIlxuICAgIChzZWFyY2hSZXN1bHRzKT1cImhhbmRsZVNlYXJjaCgkZXZlbnQpXCJcbiAgICAoZW50ZXJLZXkpPVwiaGFuZGxlRW50ZXJLZXkoJGV2ZW50KVwiXG4gICAgW2luY2x1ZGVdPVwiaW5jbHVkZVwiXG4gICAgW2V4Y2x1ZGVdPVwiZXhjbHVkZVwiXG4gICAgW2N1c3RvbV09XCJjdXN0b21cIlxuICAgIFthdXRvRm9jdXNdPVwiYXV0b0ZvY3VzXCJcbiAgICBbaWNvbnNdPVwic2VhcmNoSWNvbnNcIlxuICAgIFtlbW9qaXNUb1Nob3dGaWx0ZXJdPVwiZW1vamlzVG9TaG93RmlsdGVyXCJcbiAgPjwvZW1vamktc2VhcmNoPlxuICA8c2VjdGlvbiAjc2Nyb2xsUmVmIGNsYXNzPVwiZW1vamktbWFydC1zY3JvbGxcIiBbYXR0ci5hcmlhLWxhYmVsXT1cImkxOG4uZW1vamlsaXN0XCI+XG4gICAgPGVtb2ppLWNhdGVnb3J5XG4gICAgICAqbmdGb3I9XCJsZXQgY2F0ZWdvcnkgb2YgYWN0aXZlQ2F0ZWdvcmllczsgbGV0IGlkeCA9IGluZGV4OyB0cmFja0J5OiBjYXRlZ29yeVRyYWNrXCJcbiAgICAgIFtpZF09XCJjYXRlZ29yeS5pZFwiXG4gICAgICBbbmFtZV09XCJjYXRlZ29yeS5uYW1lXCJcbiAgICAgIFtlbW9qaXNdPVwiY2F0ZWdvcnkuZW1vamlzXCJcbiAgICAgIFtwZXJMaW5lXT1cInBlckxpbmVcIlxuICAgICAgW3RvdGFsRnJlcXVlbnRMaW5lc109XCJ0b3RhbEZyZXF1ZW50TGluZXNcIlxuICAgICAgW2hhc1N0aWNreVBvc2l0aW9uXT1cImlzTmF0aXZlXCJcbiAgICAgIFtpMThuXT1cImkxOG5cIlxuICAgICAgW2hpZGVPYnNvbGV0ZV09XCJoaWRlT2Jzb2xldGVcIlxuICAgICAgW25vdEZvdW5kRW1vamldPVwibm90Rm91bmRFbW9qaVwiXG4gICAgICBbY3VzdG9tXT1cImNhdGVnb3J5LmlkID09PSBSRUNFTlRfQ0FURUdPUlkuaWQgPyBDVVNUT01fQ0FURUdPUlkuZW1vamlzIDogdW5kZWZpbmVkXCJcbiAgICAgIFtyZWNlbnRdPVwiY2F0ZWdvcnkuaWQgPT09IFJFQ0VOVF9DQVRFR09SWS5pZCA/IHJlY2VudCA6IHVuZGVmaW5lZFwiXG4gICAgICBbdmlydHVhbGl6ZV09XCJ2aXJ0dWFsaXplXCJcbiAgICAgIFt2aXJ0dWFsaXplT2Zmc2V0XT1cInZpcnR1YWxpemVPZmZzZXRcIlxuICAgICAgW2Vtb2ppSXNOYXRpdmVdPVwiaXNOYXRpdmVcIlxuICAgICAgW2Vtb2ppU2tpbl09XCJza2luXCJcbiAgICAgIFtlbW9qaVNpemVdPVwiZW1vamlTaXplXCJcbiAgICAgIFtlbW9qaVNldF09XCJzZXRcIlxuICAgICAgW2Vtb2ppU2hlZXRTaXplXT1cInNoZWV0U2l6ZVwiXG4gICAgICBbZW1vamlGb3JjZVNpemVdPVwiaXNOYXRpdmVcIlxuICAgICAgW2Vtb2ppVG9vbHRpcF09XCJlbW9qaVRvb2x0aXBcIlxuICAgICAgW2Vtb2ppQmFja2dyb3VuZEltYWdlRm5dPVwiYmFja2dyb3VuZEltYWdlRm5cIlxuICAgICAgW2Vtb2ppSW1hZ2VVcmxGbl09XCJpbWFnZVVybEZuXCJcbiAgICAgIFtlbW9qaVVzZUJ1dHRvbl09XCJ1c2VCdXR0b25cIlxuICAgICAgKGVtb2ppT3Zlcik9XCJoYW5kbGVFbW9qaU92ZXIoJGV2ZW50KVwiXG4gICAgICAoZW1vamlMZWF2ZSk9XCJoYW5kbGVFbW9qaUxlYXZlKClcIlxuICAgICAgKGVtb2ppQ2xpY2spPVwiaGFuZGxlRW1vamlDbGljaygkZXZlbnQpXCJcbiAgICA+PC9lbW9qaS1jYXRlZ29yeT5cbiAgPC9zZWN0aW9uPlxuICA8ZGl2IGNsYXNzPVwiZW1vamktbWFydC1iYXJcIiAqbmdJZj1cInNob3dQcmV2aWV3XCI+XG4gICAgPGVtb2ppLXByZXZpZXdcbiAgICAgIFthdHRyLnRpdGxlXT1cInRpdGxlXCJcbiAgICAgIFtlbW9qaV09XCJwcmV2aWV3RW1vamlcIlxuICAgICAgW2lkbGVFbW9qaV09XCJlbW9qaVwiXG4gICAgICBbZW1vamlJc05hdGl2ZV09XCJpc05hdGl2ZVwiXG4gICAgICBbZW1vamlTaXplXT1cIjM4XCJcbiAgICAgIFtlbW9qaVNraW5dPVwic2tpblwiXG4gICAgICBbZW1vamlTZXRdPVwic2V0XCJcbiAgICAgIFtpMThuXT1cImkxOG5cIlxuICAgICAgW2Vtb2ppU2hlZXRTaXplXT1cInNoZWV0U2l6ZVwiXG4gICAgICBbZW1vamlCYWNrZ3JvdW5kSW1hZ2VGbl09XCJiYWNrZ3JvdW5kSW1hZ2VGblwiXG4gICAgICBbZW1vamlJbWFnZVVybEZuXT1cImltYWdlVXJsRm5cIlxuICAgICAgKHNraW5DaGFuZ2UpPVwiaGFuZGxlU2tpbkNoYW5nZSgkZXZlbnQpXCJcbiAgICA+PC9lbW9qaS1wcmV2aWV3PlxuICA8L2Rpdj5cbjwvc2VjdGlvbj5cbiJdfQ==
|
@@ -11,8 +11,8 @@ import { SkinComponent } from './skins.component';
|
|
11
11
|
import * as i0 from "@angular/core";
|
12
12
|
export class PickerModule {
|
13
13
|
}
|
14
|
-
PickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
15
|
-
PickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.
|
14
|
+
PickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.9", ngImport: i0, type: PickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
15
|
+
PickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.9", ngImport: i0, type: PickerModule, declarations: [PickerComponent,
|
16
16
|
AnchorsComponent,
|
17
17
|
CategoryComponent,
|
18
18
|
SearchComponent,
|
@@ -23,8 +23,8 @@ PickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
23
23
|
SearchComponent,
|
24
24
|
PreviewComponent,
|
25
25
|
SkinComponent] });
|
26
|
-
PickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.
|
27
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
26
|
+
PickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.9", ngImport: i0, type: PickerModule, imports: [CommonModule, FormsModule, EmojiModule] });
|
27
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.9", ngImport: i0, type: PickerModule, decorators: [{
|
28
28
|
type: NgModule,
|
29
29
|
args: [{
|
30
30
|
imports: [CommonModule, FormsModule, EmojiModule],
|
@@ -29,8 +29,8 @@ export class PreviewComponent {
|
|
29
29
|
this.ref?.detectChanges();
|
30
30
|
}
|
31
31
|
}
|
32
|
-
PreviewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
33
|
-
PreviewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
32
|
+
PreviewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.9", ngImport: i0, type: PreviewComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.EmojiService }], target: i0.ɵɵFactoryTarget.Component });
|
33
|
+
PreviewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.9", type: PreviewComponent, selector: "emoji-preview", inputs: { title: "title", emoji: "emoji", idleEmoji: "idleEmoji", i18n: "i18n", emojiIsNative: "emojiIsNative", emojiSkin: "emojiSkin", emojiSize: "emojiSize", emojiSet: "emojiSet", emojiSheetSize: "emojiSheetSize", emojiBackgroundImageFn: "emojiBackgroundImageFn", emojiImageUrlFn: "emojiImageUrlFn" }, outputs: { skinChange: "skinChange" }, usesOnChanges: true, ngImport: i0, template: `
|
34
34
|
<div class="emoji-mart-preview" *ngIf="emoji && emojiData">
|
35
35
|
<div class="emoji-mart-preview-emoji">
|
36
36
|
<ngx-emoji
|
@@ -91,7 +91,7 @@ PreviewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", versi
|
|
91
91
|
</div>
|
92
92
|
</div>
|
93
93
|
`, isInline: true, dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i1.EmojiComponent, selector: "ngx-emoji", inputs: ["skin", "set", "sheetSize", "isNative", "forceSize", "tooltip", "size", "emoji", "fallback", "hideObsolete", "sheetRows", "sheetColumns", "useButton", "backgroundImageFn", "imageUrlFn"], outputs: ["emojiOver", "emojiLeave", "emojiClick"] }, { kind: "component", type: i3.SkinComponent, selector: "emoji-skins", inputs: ["skin", "i18n"], outputs: ["changeSkin"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
94
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
94
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.9", ngImport: i0, type: PreviewComponent, decorators: [{
|
95
95
|
type: Component,
|
96
96
|
args: [{
|
97
97
|
selector: 'emoji-preview',
|