@simpleangularcontrols/sac-common 10.0.0-rc.12 → 10.0.0-rc.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/simpleangularcontrols-sac-common.umd.js +356 -408
- package/bundles/simpleangularcontrols-sac-common.umd.js.map +1 -1
- package/bundles/simpleangularcontrols-sac-common.umd.min.js +1 -1
- package/bundles/simpleangularcontrols-sac-common.umd.min.js.map +1 -1
- package/common/basemodelcontrol.d.ts +4 -8
- package/controls/contextmenu/contextmenu.d.ts +26 -19
- package/controls/contextmenu/contextmenu.interface.d.ts +3 -0
- package/controls/contextmenu/contextmenuitem.d.ts +5 -0
- package/controls/contextmenu/contextmenuitembutton.d.ts +21 -20
- package/controls/treeview/treeview.d.ts +87 -121
- package/esm2015/common/basemodelcontrol.js +28 -24
- package/esm2015/controls/contextmenu/contextmenu.interface.js +1 -0
- package/esm2015/controls/contextmenu/contextmenu.interface.ngfactory.js +7 -0
- package/esm2015/controls/contextmenu/contextmenu.js +22 -23
- package/esm2015/controls/contextmenu/contextmenuitem.js +13 -2
- package/esm2015/controls/contextmenu/contextmenuitembutton.js +34 -25
- package/esm2015/controls/treeview/treeview.js +232 -247
- package/esm2015/interfaces/ISacIconService.js +1 -1
- package/esm2015/interfaces/treeviewaction.interface.js +1 -0
- package/esm2015/interfaces/treeviewaction.interface.ngfactory.js +7 -0
- package/esm2015/public_api.js +4 -5
- package/esm2015/services/sac-icon.service.js +25 -1
- package/fesm2015/simpleangularcontrols-sac-common.js +343 -389
- package/fesm2015/simpleangularcontrols-sac-common.js.map +1 -1
- package/interfaces/ISacIconService.d.ts +16 -0
- package/interfaces/treeviewaction.interface.d.ts +4 -0
- package/package.json +1 -1
- package/public_api.d.ts +3 -4
- package/services/sac-icon.service.d.ts +33 -1
- package/simpleangularcontrols-sac-common-10.0.0-rc.13.tgz +0 -0
- package/simpleangularcontrols-sac-common.metadata.json +1 -1
- package/controls/treeview/ngtreeitemaction.d.ts +0 -40
- package/controls/treeview/treeviewchild.d.ts +0 -12
- package/esm2015/controls/treeview/ngtreeitemaction.js +0 -60
- package/esm2015/controls/treeview/ngtreeitemaction.ngfactory.js +0 -7
- package/esm2015/controls/treeview/treeviewchild.js +0 -18
- package/esm2015/controls/treeview/treeviewchild.ngfactory.js +0 -7
- package/simpleangularcontrols-sac-common-10.0.0-rc.12.tgz +0 -0
- /package/controls/{treeview/ngtreeitemaction.ngfactory.d.ts → contextmenu/contextmenu.interface.ngfactory.d.ts} +0 -0
- /package/{controls/treeview/treeviewchild.ngfactory.d.ts → interfaces/treeviewaction.interface.ngfactory.d.ts} +0 -0
|
@@ -1,17 +1,19 @@
|
|
|
1
|
-
import { Observable } from 'rxjs';
|
|
2
|
-
import { Directive, Host, Injector, Input, } from '@angular/core';
|
|
3
|
-
import { FormControlName, FormGroupDirective, NgControl, } from '@angular/forms';
|
|
4
1
|
import { SacFormLayoutCommon } from '../controls/layout/formlayout';
|
|
5
2
|
import { ControlHeight } from '../enums/ControlHeight';
|
|
6
3
|
import { SACICON_SERVICE, SACVALIDATIONKEY_SERVICE, SacDefaultIconService, SacDefaultValidationKeyService, } from '../services';
|
|
7
|
-
import { SACCONFIGURATION_SERVICE, SacDefaultConfigurationService
|
|
8
|
-
import { SACLOCALISATION_SERVICE, SacDefaultLocalisationService
|
|
4
|
+
import { SACCONFIGURATION_SERVICE, SacDefaultConfigurationService } from '../services/sac-configuration.service';
|
|
5
|
+
import { SACLOCALISATION_SERVICE, SacDefaultLocalisationService } from '../services/sac-localisation.service';
|
|
9
6
|
import { convertToBoolean } from '../utilities/convertion';
|
|
10
7
|
import { createGuid } from '../utilities/guid';
|
|
8
|
+
import { Directive, Host, Injector, Input } from '@angular/core';
|
|
9
|
+
import { FormControlName, FormGroupDirective, NgControl, } from '@angular/forms';
|
|
10
|
+
import { Observable } from 'rxjs';
|
|
11
11
|
/**
|
|
12
12
|
* Abstract Klasse für SacBaseModelControl. Implements ControlValueAccessor, Validator, OnInit
|
|
13
13
|
*/
|
|
14
14
|
export class SacBaseModelControl {
|
|
15
|
+
// #endregion Properties
|
|
16
|
+
// #region Constructors
|
|
15
17
|
/**
|
|
16
18
|
* Constructor
|
|
17
19
|
* @param formlayout SacFormLayoutCommon to define scoped layout settings
|
|
@@ -19,6 +21,7 @@ export class SacBaseModelControl {
|
|
|
19
21
|
*/
|
|
20
22
|
constructor(formlayout, injector) {
|
|
21
23
|
this.injector = injector;
|
|
24
|
+
// #region Properties
|
|
22
25
|
/**
|
|
23
26
|
* Inline Errors für das Control
|
|
24
27
|
*/
|
|
@@ -121,6 +124,8 @@ export class SacBaseModelControl {
|
|
|
121
124
|
this.configurationService = injector.get(SACCONFIGURATION_SERVICE, new SacDefaultConfigurationService());
|
|
122
125
|
this.iconService = injector.get(SACICON_SERVICE, new SacDefaultIconService());
|
|
123
126
|
}
|
|
127
|
+
// #endregion Constructors
|
|
128
|
+
// #region Public Getters And Setters
|
|
124
129
|
/**
|
|
125
130
|
* Get Icon for Helptext Tooltip
|
|
126
131
|
*/
|
|
@@ -131,7 +136,7 @@ export class SacBaseModelControl {
|
|
|
131
136
|
* Methode ergibt Boolean Wert für dirty
|
|
132
137
|
*/
|
|
133
138
|
get dirty() {
|
|
134
|
-
if (this.ngControl !== null) {
|
|
139
|
+
if (this.ngControl !== null && this.ngControl !== undefined) {
|
|
135
140
|
this._dirty = this.ngControl.dirty;
|
|
136
141
|
}
|
|
137
142
|
return this._dirty;
|
|
@@ -157,9 +162,7 @@ export class SacBaseModelControl {
|
|
|
157
162
|
* Methode ergibt boolean Wert wenn Form invalid oder nicht invalid ist
|
|
158
163
|
*/
|
|
159
164
|
get invalid() {
|
|
160
|
-
return
|
|
161
|
-
this.ngControl !== null &&
|
|
162
|
-
this.ngControl.invalid);
|
|
165
|
+
return this.ngControl !== undefined && this.ngControl !== null && this.ngControl.invalid;
|
|
163
166
|
}
|
|
164
167
|
/**
|
|
165
168
|
* Definiert ob das Control disabled ist
|
|
@@ -175,8 +178,7 @@ export class SacBaseModelControl {
|
|
|
175
178
|
if (this._inlineerrorenabled !== null) {
|
|
176
179
|
return this._inlineerrorenabled;
|
|
177
180
|
}
|
|
178
|
-
if (this.formlayout !== null &&
|
|
179
|
-
this.formlayout.IsInlineErrorEnabled !== null) {
|
|
181
|
+
if (this.formlayout !== null && this.formlayout.IsInlineErrorEnabled !== null) {
|
|
180
182
|
return (_a = this.formlayout) === null || _a === void 0 ? void 0 : _a.IsInlineErrorEnabled;
|
|
181
183
|
}
|
|
182
184
|
if (this.configurationService.InlineErrorEnabled !== null) {
|
|
@@ -214,7 +216,7 @@ export class SacBaseModelControl {
|
|
|
214
216
|
* Methode ergibt Boolean Wert für touched
|
|
215
217
|
*/
|
|
216
218
|
get touched() {
|
|
217
|
-
if (this.ngControl !== null) {
|
|
219
|
+
if (this.ngControl !== null && this.ngControl !== undefined) {
|
|
218
220
|
this._touched = this.ngControl.touched;
|
|
219
221
|
}
|
|
220
222
|
return this._touched;
|
|
@@ -236,6 +238,8 @@ export class SacBaseModelControl {
|
|
|
236
238
|
this._value = this.ConvertInputValue(v);
|
|
237
239
|
this.propagateChange(this._value);
|
|
238
240
|
}
|
|
241
|
+
// #endregion Public Getters And Setters
|
|
242
|
+
// #region Public Methods
|
|
239
243
|
/**
|
|
240
244
|
* Methode ergibt Error anhand von gegebenen Kriterien
|
|
241
245
|
*/
|
|
@@ -272,24 +276,21 @@ export class SacBaseModelControl {
|
|
|
272
276
|
return this.lngResourceService.GetString(errorItem.errorMessageKey, parameters);
|
|
273
277
|
}
|
|
274
278
|
/**
|
|
275
|
-
*
|
|
279
|
+
* Init Event
|
|
276
280
|
*/
|
|
277
|
-
|
|
281
|
+
ngOnInit() {
|
|
278
282
|
// receive form via formcontrolname or formcontrol instance
|
|
279
283
|
const formControl = this.injector.get(NgControl, null);
|
|
280
284
|
if (formControl instanceof FormControlName) {
|
|
281
285
|
const form = this.injector.get(FormGroupDirective, null);
|
|
282
286
|
this.ngControl = form.getControl(formControl);
|
|
283
287
|
}
|
|
284
|
-
else
|
|
285
|
-
|
|
288
|
+
else {
|
|
289
|
+
if (formControl) {
|
|
290
|
+
this.ngControl = formControl.control;
|
|
291
|
+
}
|
|
286
292
|
}
|
|
287
293
|
this.UpdateLabelToControl();
|
|
288
|
-
}
|
|
289
|
-
/**
|
|
290
|
-
* Init Event
|
|
291
|
-
*/
|
|
292
|
-
ngOnInit() {
|
|
293
294
|
// set label sizes from formlayout directive
|
|
294
295
|
this.setLabelSizes();
|
|
295
296
|
// set component heigth from fromlayout directive
|
|
@@ -353,6 +354,8 @@ export class SacBaseModelControl {
|
|
|
353
354
|
writeValue(value) {
|
|
354
355
|
this._value = value;
|
|
355
356
|
}
|
|
357
|
+
// #endregion Public Methods
|
|
358
|
+
// #region Protected Methods
|
|
356
359
|
/**
|
|
357
360
|
* Method can Overwriten in Parent Classes
|
|
358
361
|
* @param value Wert welcher in den korrekten Typ konvertiert werden soll
|
|
@@ -379,6 +382,8 @@ export class SacBaseModelControl {
|
|
|
379
382
|
this.ngControl.updateValueAndValidity({ onlySelf: true });
|
|
380
383
|
}
|
|
381
384
|
}
|
|
385
|
+
// #endregion Protected Methods
|
|
386
|
+
// #region Private Methods
|
|
382
387
|
UpdateLabelToControl() {
|
|
383
388
|
// HACK: Add addition property to FormControl. Can be fixed if solution for ticket: https://github.com/angular/angular/issues/19686
|
|
384
389
|
if (this.ngControl) {
|
|
@@ -495,8 +500,7 @@ export class SacBaseModelControl {
|
|
|
495
500
|
this.splitlabelandhelptext = this.formlayout.splitlabelandhelptext;
|
|
496
501
|
}
|
|
497
502
|
else {
|
|
498
|
-
this.splitlabelandhelptext =
|
|
499
|
-
this.configurationService.SplitLabelAndHelptext;
|
|
503
|
+
this.splitlabelandhelptext = this.configurationService.SplitLabelAndHelptext;
|
|
500
504
|
}
|
|
501
505
|
}
|
|
502
506
|
}
|
|
@@ -528,4 +532,4 @@ SacBaseModelControl.propDecorators = {
|
|
|
528
532
|
label: [{ type: Input }],
|
|
529
533
|
value: [{ type: Input }]
|
|
530
534
|
};
|
|
531
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZW1vZGVsY29udHJvbC5qcyIsInNvdXJjZVJvb3QiOiJDOi9Qcm9qZWt0ZS9zaW1wbGVhbmd1bGFyY29udHJvbHMtbmcxMC9jaC5qbmV0d29yay5zYWMtY29udHJvbHMvcHJvamVjdHMvc2FjLWNvbW1vbi9zcmMvIiwic291cmNlcyI6WyJjb21tb24vYmFzZW1vZGVsY29udHJvbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWxDLE9BQU8sRUFFTCxTQUFTLEVBQ1QsSUFBSSxFQUNKLFFBQVEsRUFDUixLQUFLLEdBRU4sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUlMLGVBQWUsRUFDZixrQkFBa0IsRUFDbEIsU0FBUyxHQUdWLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBT3ZELE9BQU8sRUFDTCxlQUFlLEVBQ2Ysd0JBQXdCLEVBQ3hCLHFCQUFxQixFQUNyQiw4QkFBOEIsR0FDL0IsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUNMLHdCQUF3QixFQUN4Qiw4QkFBOEIsR0FDL0IsTUFBTSx1Q0FBdUMsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLDZCQUE2QixHQUM5QixNQUFNLHNDQUFzQyxDQUFDO0FBQzlDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzNELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUcvQzs7R0FFRztBQUVILE1BQU0sT0FBZ0IsbUJBQW1CO0lBdUt2Qzs7OztPQUlHO0lBQ0gsWUFDVSxVQUErQixFQUN0QixRQUFrQjtRQUFsQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBM0tyQzs7V0FFRztRQUNLLHdCQUFtQixHQUFtQixJQUFJ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OzBCQU1MLEtBQUs7MEJBTUwsS0FBSzswQkFNTCxLQUFLOzJCQU1MLEtBQUs7bUJBTUwsS0FBSztvQ0FlTCxLQUFLO2lDQWtFTCxLQUFLO29CQTJETCxLQUFLO29CQXlDTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHtcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIERpcmVjdGl2ZSxcclxuICBIb3N0LFxyXG4gIEluamVjdG9yLFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBBYnN0cmFjdENvbnRyb2wsXHJcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXHJcbiAgRm9ybUNvbnRyb2wsXHJcbiAgRm9ybUNvbnRyb2xOYW1lLFxyXG4gIEZvcm1Hcm91cERpcmVjdGl2ZSxcclxuICBOZ0NvbnRyb2wsXHJcbiAgVmFsaWRhdGlvbkVycm9ycyxcclxuICBWYWxpZGF0b3IsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBTYWNGb3JtTGF5b3V0Q29tbW9uIH0gZnJvbSAnLi4vY29udHJvbHMvbGF5b3V0L2Zvcm1sYXlvdXQnO1xyXG5pbXBvcnQgeyBDb250cm9sSGVpZ2h0IH0gZnJvbSAnLi4vZW51bXMvQ29udHJvbEhlaWdodCc7XHJcbmltcG9ydCB7IElTYWNDb25maWd1cmF0aW9uU2VydmljZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvSVNhY0NvbmZpZ3VyYXRpb25TZXJ2aWNlJztcclxuaW1wb3J0IHsgSVNhY0ljb25TZXJ2aWNlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9JU2FjSWNvblNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJU2FjTGFiZWxTaXplcyB9IGZyb20gJy4uL2ludGVyZmFjZXMvSVNhY0xhYmVsU2l6ZXMnO1xyXG5pbXBvcnQgeyBJU2FjTG9jYWxpc2F0aW9uU2VydmljZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvSVNhY0xvY2FsaXNhdGlvblNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJU2FjVmFsaWRhdGlvbktleVNlcnZpY2UgfSBmcm9tICcuLi9pbnRlcmZhY2VzL0lTYWNWYWxpZGF0aW9uS2V5U2VydmljZSc7XHJcbmltcG9ydCB7IElBYnN0cmFjdENvbnRyb2xMYWJlbEV4dGVuc2lvbiB9IGZyb20gJy4uL2ludGVyZmFjZXMvaWFic3RyYWN0Y29udHJvbGxhYmVsJztcclxuaW1wb3J0IHtcclxuICBTQUNJQ09OX1NFUlZJQ0UsXHJcbiAgU0FDVkFMSURBVElPTktFWV9TRVJWSUNFLFxyXG4gIFNhY0RlZmF1bHRJY29uU2VydmljZSxcclxuICBTYWNEZWZhdWx0VmFsaWRhdGlvbktleVNlcnZpY2UsXHJcbn0gZnJvbSAnLi4vc2VydmljZXMnO1xyXG5pbXBvcnQge1xyXG4gIFNBQ0NPTkZJR1VSQVRJT05fU0VSVklDRSxcclxuICBTYWNEZWZhdWx0Q29uZmlndXJhdGlvblNlcnZpY2UsXHJcbn0gZnJvbSAnLi4vc2VydmljZXMvc2FjLWNvbmZpZ3VyYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7XHJcbiAgU0FDTE9DQUxJU0FUSU9OX1NFUlZJQ0UsXHJcbiAgU2FjRGVmYXVsdExvY2FsaXNhdGlvblNlcnZpY2UsXHJcbn0gZnJvbSAnLi4vc2VydmljZXMvc2FjLWxvY2FsaXNhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgY29udmVydFRvQm9vbGVhbiB9IGZyb20gJy4uL3V0aWxpdGllcy9jb252ZXJ0aW9uJztcclxuaW1wb3J0IHsgY3JlYXRlR3VpZCB9IGZyb20gJy4uL3V0aWxpdGllcy9ndWlkJztcclxuaW1wb3J0IHsgVmFsaWRhdGlvbkVycm9ySXRlbSB9IGZyb20gJy4uL3ZhbGlkYXRpb24nO1xyXG5cclxuLyoqXHJcbiAqIEFic3RyYWN0IEtsYXNzZSBmw7xyIFNhY0Jhc2VNb2RlbENvbnRyb2wuIEltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRvciwgT25Jbml0XHJcbiAqL1xyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFNhY0Jhc2VNb2RlbENvbnRyb2w8VkFMVUU+XHJcbiAgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yLCBPbkluaXQsIEFmdGVyVmlld0luaXRcclxue1xyXG4gIC8qKlxyXG4gICAqIElubGluZSBFcnJvcnMgZsO8ciBkYXMgQ29udHJvbFxyXG4gICAqL1xyXG4gIHByaXZhdGUgX2lubGluZWVycm9yZW5hYmxlZDogYm9vbGVhbiB8IG51bGwgPSBudWxsO1xyXG5cclxuICAvKipcclxuICAgKiBMYWJlbCBUZXh0XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfbGFiZWw6IHN0cmluZyA9ICcnO1xyXG5cclxuICAvKipcclxuICAgKiBTZXJ2aWNlIGZvciBsb2FkaW5nIGRlZmF1bHQgc2V0dGluZ3MgZm9yIHRoZSBjb250cm9sc1xyXG4gICAqL1xyXG4gIHByb3RlY3RlZCByZWFkb25seSBjb25maWd1cmF0aW9uU2VydmljZTogSVNhY0NvbmZpZ3VyYXRpb25TZXJ2aWNlO1xyXG5cclxuICAvKipcclxuICAgKiBCb29sZWFuIFByb3BlcnR5IGRpcnR5OyBkZWZhdWx0IFdlcnQgLSBmYWxzZVxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBfZGlydHk6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogU2FjTW9kZWwgRm9ybSBpc3QgZGlzYWJsZWRcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgX2Rpc2FibGVkRm9ybTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBWYWxpZGF0b3JcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgX29uQ2hhbmdlOiAoKSA9PiB2b2lkO1xyXG5cclxuICAvKipcclxuICAgKiBCb29sZWFuIFByb3BlcnR5IHRvdWNoZWQ7IGRlZmF1bHQgV2VydCAtIGZhbHNlXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIF90b3VjaGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIEludGVybmUgVmFyaWFibGUsIGRpZSBkZW4gV2VydCBkZXMgQ29udHJvbHMgaMOkbHRcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgX3ZhbHVlOiBWQUxVRSA9IG51bGw7XHJcblxyXG4gIC8qKlxyXG4gICAqIEZvcm0gbGF5b3V0IGluc3RhbmNlIGlmIGV4aXN0c1xyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBmb3JtbGF5b3V0OiBTYWNGb3JtTGF5b3V0Q29tbW9uID0gbnVsbDtcclxuXHJcbiAgLyoqXHJcbiAgICogaWNvbiBzZXJ2aWNlXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGljb25TZXJ2aWNlOiBJU2FjSWNvblNlcnZpY2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlcnZpY2UgZsO8ciBFcnJvciBMb2NhbGlzYXRpb25cclxuICAgKi9cclxuICBwcm90ZWN0ZWQgbG5nUmVzb3VyY2VTZXJ2aWNlOiBJU2FjTG9jYWxpc2F0aW9uU2VydmljZTtcclxuXHJcbiAgLyoqXHJcbiAgICogbmdDb250cm9sXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIG5nQ29udHJvbDogRm9ybUNvbnRyb2w7XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbnRyb2xIZWlnaHQgZW51bSBmb3IgdXNlIGluIEhUTUwgbWFya3VwXHJcbiAgICovXHJcbiAgcHVibGljIENvbnRyb2xIZWlnaHQ6IHR5cGVvZiBDb250cm9sSGVpZ2h0ID0gQ29udHJvbEhlaWdodDtcclxuXHJcbiAgLyoqXHJcbiAgICogRGVmaW5lcyB0aGUgc3RhbmRhcmQgaGVpZ2h0IG9mIHRoZSBjb21wb25lbnRzXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgY29tcG9uZW50SGVpZ2h0OiBDb250cm9sSGVpZ2h0IHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIC8qKlxyXG4gICAqIERlYWt0aXZpZXJ0IGRhcyBJbnB1dCBDb250cm9sXHJcbiAgICovXHJcbiAgQElucHV0KCkgcHVibGljIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIERlYWt0aXZpZXJ0IGRhcyBMYWJlbCBpbSBUZW1wbGF0ZVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBkaXNhYmxlbGFiZWw6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogVGV4dCB0byBzdXBwb3J0IHRoZSB1c2VyIGR1cmluZyBpbnB1dC5cclxuICAgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgaGVscHRleHQ6IHN0cmluZyA9ICcnO1xyXG5cclxuICAvKipcclxuICAgKiBNb2RlIGZvciBkaXNwbGF5IGhlbHB0ZXh0XHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgaGVscHRleHRtb2RlOiAndG9vbHRpcCcgfCAndGV4dCcgfCBudWxsO1xyXG5cclxuICAvKipcclxuICAgKiBkZWZpbmVzIHRoYXQgZXJyb3IgbWVzc2FnZXMgYXJlIGRpc3BsYXllZCB1bmRlciB0aGUgY29udHJvbHNcclxuICAgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgaW5saW5lRXJyb3I6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAvKipcclxuICAgKiBkZWZpbmVzIHRoYXQgdGhlIGxhYmVscyBhcmUgZGlzcGxheWVkIGFzIGFkYXB0aXZlIGxhYmVsc1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBpc0FkYXB0aXZlTGFiZWw6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogZGVmYXVsdCBsYWJlIHNpemUgZm9yIGxhcmdlIGRldmljZXNcclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBsYWJlbFNpemVMZzogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIC8qKlxyXG4gICAqIGRlZmF1bHQgbGFiZWwgc2l6ZSBmb3IgbWVkaXVtIGRldmljZXNcclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBsYWJlbFNpemVNZDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIC8qKlxyXG4gICAqIGRlZmF1bHQgbGFiZWwgc2l6ZSBmb3Igc21hbGwgZGV2aWNlc1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGxhYmVsU2l6ZVNtOiBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgLyoqXHJcbiAgICogZGVmYXVsdCBsYWJlbCBzaXplIGZvciBleHRyYSBsYXJnZSBkZXZpY2VzXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgbGFiZWxTaXplWGw6IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG5cclxuICAvKipcclxuICAgKiBkZWZhdWx0IGxhYmVsIGNvbHVtbiBzaXplXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgbGFiZWxTaXplWHM6IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG5cclxuICAvKipcclxuICAgKiBkZWZhdWx0IGxhYmVsIHNpemUgZm9yIGV4dHJhIGV4dHJhIGxhcmdlIGRldmljZXNcclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBsYWJlbFNpemVYeGw6IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG5cclxuICAvKipcclxuICAgKiBOYW1lIGRlcyBDb250cm9sc1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBuYW1lOiBzdHJpbmcgPSBjcmVhdGVHdWlkKCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIExlZXJlIEltcGxlbWVudGF0aW9uIHZvbiBcInByb3BhZ2F0ZUNoYW5nZVwiLiBNdXNzIGdlbWFjaHQgd2VyZGVuLCBkYW1pdCBrZWluIEZlaGxlciBlbnRzdGVodFxyXG4gICAqL1xyXG4gIHB1YmxpYyBwcm9wYWdhdGVDaGFuZ2U6IGFueSA9ICgpID0+IHt9O1xyXG5cclxuICAvKipcclxuICAgKiBMZWVyZSBJbXBsZW1lbnRhdGlvbiB2b24gXCJwcm9wYWdhdGVUb3VjaFwiLiBNdXNzIGdlbWFjaHQgd2VyZGVuLCBkYW1pdCBrZWluIEZlaGxlciBlbnRzdGVodFxyXG4gICAqL1xyXG4gIHB1YmxpYyBwcm9wYWdhdGVUb3VjaDogYW55ID0gKCkgPT4ge307XHJcblxyXG4gIC8qKlxyXG4gICAqIERldGFjaCBsYWJlbCB0ZXh0IGFuZCB0b29sdGlwIGZyb20gZWFjaCBvdGhlciBpbiBMYWJlbCBzbyB0aGF0IGxhYmVsIGFuZCB0b29sdGlwIGNhbiBiZSBhbGlnbmVkIGRpZmZlcmVudGx5LiBUaGlzIGlzIGluIEJvb3RzdHJhcCAzIG5vdCBzdXBwb3J0ZWQhXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc3BsaXRsYWJlbGFuZGhlbHB0ZXh0OiBib29sZWFuIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlcnZpY2UgdG8gcmVjZWl2ZSBzdGFuZGFyZCB2YWxpZGF0aW9uIG1lc3NhZ2Uga2V5cyBhbmQgdGV4dHNcclxuICAgKi9cclxuICBwdWJsaWMgdmFsaWRhdGlvbktleVNlcnZpY2U6IElTYWNWYWxpZGF0aW9uS2V5U2VydmljZTtcclxuXHJcbiAgLyoqXHJcbiAgICogQ29uc3RydWN0b3JcclxuICAgKiBAcGFyYW0gZm9ybWxheW91dCBTYWNGb3JtTGF5b3V0Q29tbW9uIHRvIGRlZmluZSBzY29wZWQgbGF5b3V0IHNldHRpbmdzXHJcbiAgICogQHBhcmFtIGluamVjdG9yIEluamVjdG9yIGZvciBpbmplY3Rpbmcgc2VydmljZXNcclxuICAgKi9cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBIb3N0KCkgZm9ybWxheW91dDogU2FjRm9ybUxheW91dENvbW1vbixcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgaW5qZWN0b3I6IEluamVjdG9yXHJcbiAgKSB7XHJcbiAgICB0aGlzLmZvcm1sYXlvdXQgPSBmb3JtbGF5b3V0O1xyXG4gICAgdGhpcy52YWxpZGF0aW9uS2V5U2VydmljZSA9IGluamVjdG9yLmdldChcclxuICAgICAgU0FDVkFMSURBVElPTktFWV9TRVJWSUNFLFxyXG4gICAgICBuZXcgU2FjRGVmYXVsdFZhbGlkYXRpb25LZXlTZXJ2aWNlKClcclxuICAgICk7XHJcbiAgICB0aGlzLmxuZ1Jlc291cmNlU2VydmljZSA9IGluamVjdG9yLmdldChcclxuICAgICAgU0FDTE9DQUxJU0FUSU9OX1NFUlZJQ0UsXHJcbiAgICAgIG5ldyBTYWNEZWZhdWx0TG9jYWxpc2F0aW9uU2VydmljZSh0aGlzLnZhbGlkYXRpb25LZXlTZXJ2aWNlKVxyXG4gICAgKTtcclxuXHJcbiAgICB0aGlzLmNvbmZpZ3VyYXRpb25TZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KFxyXG4gICAgICBTQUNDT05GSUdVUkFUSU9OX1NFUlZJQ0UsXHJcbiAgICAgIG5ldyBTYWNEZWZhdWx0Q29uZmlndXJhdGlvblNlcnZpY2UoKVxyXG4gICAgKTtcclxuXHJcbiAgICB0aGlzLmljb25TZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KFxyXG4gICAgICBTQUNJQ09OX1NFUlZJQ0UsXHJcbiAgICAgIG5ldyBTYWNEZWZhdWx0SWNvblNlcnZpY2UoKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBJY29uIGZvciBIZWxwdGV4dCBUb29sdGlwXHJcbiAgICovXHJcbiAgcHVibGljIGdldCBIZWxwdGV4dFRvb2x0aXBJY29uKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5pY29uU2VydmljZS5HZW5lcmljSGVscHRleHRJY29uO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0aG9kZSBlcmdpYnQgQm9vbGVhbiBXZXJ0IGbDvHIgZGlydHlcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0IGRpcnR5KCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMubmdDb250cm9sICE9PSBudWxsKSB7XHJcbiAgICAgIHRoaXMuX2RpcnR5ID0gdGhpcy5uZ0NvbnRyb2wuZGlydHk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuX2RpcnR5O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2hvdyBlcnJvciBtZXNzYWdlcyBpbmxpbmVcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0IGlubGluZWVycm9yZW5hYmxlZCgpOiBib29sZWFuIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5faW5saW5lZXJyb3JlbmFibGVkO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWt0aXZpZXJ0IG9kZXIgRGVha3RpdmllcnQgZGllIElubGluZSBFcnJvcnMgZsO8ciBkYXMgQ29udHJvbFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBpbmxpbmVlcnJvcmVuYWJsZWQodmFsdWU6IGJvb2xlYW4gfCBudWxsKSB7XHJcbiAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLl9pbmxpbmVlcnJvcmVuYWJsZWQgPSBudWxsO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5faW5saW5lZXJyb3JlbmFibGVkID0gY29udmVydFRvQm9vbGVhbih2YWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRob2RlIGVyZ2lidCBib29sZWFuIFdlcnQgd2VubiBGb3JtIGludmFsaWQgb2RlciBuaWNodCBpbnZhbGlkIGlzdFxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXQgaW52YWxpZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHRoaXMubmdDb250cm9sICE9PSB1bmRlZmluZWQgJiZcclxuICAgICAgdGhpcy5uZ0NvbnRyb2wgIT09IG51bGwgJiZcclxuICAgICAgdGhpcy5uZ0NvbnRyb2wuaW52YWxpZFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlZmluaWVydCBvYiBkYXMgQ29udHJvbCBkaXNhYmxlZCBpc3RcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0IGlzZGlzYWJsZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWRGb3JtIHx8IHRoaXMuZGlzYWJsZWQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIGlubGluZSBlcnJvciBtZXNzYWdlcyBhcmUgYWN0aXZlIGZvciB0aGlzIGNvbnRyb2wuXHJcbiAgICovXHJcbiAgcHVibGljIGdldCBpc2lubGluZWVycm9yZW5hYmxlZCgpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLl9pbmxpbmVlcnJvcmVuYWJsZWQgIT09IG51bGwpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuX2lubGluZWVycm9yZW5hYmxlZDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuZm9ybWxheW91dCAhPT0gbnVsbCAmJlxyXG4gICAgICB0aGlzLmZvcm1sYXlvdXQuSXNJbmxpbmVFcnJvckVuYWJsZWQgIT09IG51bGxcclxuICAgICkge1xyXG4gICAgICByZXR1cm4gdGhpcy5mb3JtbGF5b3V0Py5Jc0lubGluZUVycm9yRW5hYmxlZDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5jb25maWd1cmF0aW9uU2VydmljZS5JbmxpbmVFcnJvckVuYWJsZWQgIT09IG51bGwpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuY29uZmlndXJhdGlvblNlcnZpY2UuSW5saW5lRXJyb3JFbmFibGVkO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGVmaW5pZXJ0IGRlbiBMYWJlbCBUZXh0XHJcbiAgICovXHJcbiAgcHVibGljIGdldCBsYWJlbCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2xhYmVsO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGVmaW5pZXJ0IGRlbiBMYWJlbCBUZXh0XHJcbiAgICovXHJcbiAgQElucHV0KCkgcHVibGljIHNldCBsYWJlbCh2OiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX2xhYmVsID0gdjtcclxuICAgIHRoaXMuVXBkYXRlTGFiZWxUb0NvbnRyb2woKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIHJldHVybnMgYW4gb2JqZWN0IHdpdGggYWxsIGxhYmVsIHNpemVzLiBUaGVzZSB2YWx1ZXMgY2FuIHRoZW4gYmUgdHJhbnNmZXJyZWQgdG8gY29ycmVzcG9uZGluZyBDU1MgY2xhc3NlcyB1c2luZyBhIHBpcGVcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0IGxhYmVsU2l6ZXMoKTogSVNhY0xhYmVsU2l6ZXMge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgbGFiZWxTaXplU206IHRoaXMubGFiZWxTaXplU20sXHJcbiAgICAgIGxhYmVsU2l6ZU1kOiB0aGlzLmxhYmVsU2l6ZU1kLFxyXG4gICAgICBsYWJlbFNpemVYczogdGhpcy5sYWJlbFNpemVYcyxcclxuICAgICAgbGFiZWxTaXplWGw6IHRoaXMubGFiZWxTaXplWGwsXHJcbiAgICAgIGxhYmVsU2l6ZVh4bDogdGhpcy5sYWJlbFNpemVYeGwsXHJcbiAgICAgIGxhYmVsU2l6ZUxnOiB0aGlzLmxhYmVsU2l6ZUxnLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldGhvZGUgZXJnaWJ0IEJvb2xlYW4gV2VydCBmw7xyIHRvdWNoZWRcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0IHRvdWNoZWQoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5uZ0NvbnRyb2wgIT09IG51bGwpIHtcclxuICAgICAgdGhpcy5fdG91Y2hlZCA9IHRoaXMubmdDb250cm9sLnRvdWNoZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuX3RvdWNoZWQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgTWV0aG9kZSBmw7xyIE5nTW9kZWwgQmluZGluZyBpbiBIdG1sIE1hcmt1cFxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXQgdmFsdWUoKTogVkFMVUUge1xyXG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IE1ldGhvZGUgZsO8ciBOZ01vZGVsIEJpbmRpbmcgaW4gSHRtbCBNYXJrdXBcclxuICAgKiBJbnB1dCB3aXJkIGJlbsO2dGlndCwgZGFtaXQgZGVyIFdlcnQgYXVjaCDDvGJlciBkYXMgTWFya3VwIGdlc2V0enQgd2VyZGVuIGthbm4uXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IHZhbHVlKHY6IFZBTFVFKSB7XHJcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fdmFsdWUgPSB0aGlzLkNvbnZlcnRJbnB1dFZhbHVlKHYpO1xyXG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy5fdmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0aG9kZSBlcmdpYnQgRXJyb3IgYW5oYW5kIHZvbiBnZWdlYmVuZW4gS3JpdGVyaWVuXHJcbiAgICovXHJcbiAgcHVibGljIEdldEVycm9yTWVzc2FnZSgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xyXG4gICAgaWYgKHRoaXMubmdDb250cm9sLmVycm9ycyA9PT0gdW5kZWZpbmVkIHx8IHRoaXMubmdDb250cm9sLmVycm9ycyA9PT0gbnVsbCkge1xyXG4gICAgICByZXR1cm4gbmV3IE9ic2VydmFibGU8c3RyaW5nPigob2JzZXJ2ZXIpID0+IHtcclxuICAgICAgICBvYnNlcnZlci5uZXh0KCcnKTtcclxuICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBlcnJvcnM6IFZhbGlkYXRpb25FcnJvcnMgPSB0aGlzLm5nQ29udHJvbC5lcnJvcnM7XHJcblxyXG4gICAgaWYgKGVycm9ycy5sZW5ndGggPT09IDApIHtcclxuICAgICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPHN0cmluZz4oKG9ic2VydmVyKSA9PiB7XHJcbiAgICAgICAgb2JzZXJ2ZXIubmV4dCgnJyk7XHJcbiAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qga2V5czogc3RyaW5nW10gPSBPYmplY3Qua2V5cyhlcnJvcnMpO1xyXG5cclxuICAgIGlmIChrZXlzLmxlbmd0aCA8PSAwKSB7XHJcbiAgICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxzdHJpbmc+KChvYnNlcnZlcikgPT4ge1xyXG4gICAgICAgIG9ic2VydmVyLm5leHQoJycpO1xyXG4gICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGVycm9ySXRlbTogVmFsaWRhdGlvbkVycm9ySXRlbSA9IGVycm9yc1trZXlzWzBdXTtcclxuXHJcbiAgICAvLyBWYWxpZGF0aW9uIFBhcmFtZXRlcnNcclxuICAgIGNvbnN0IHBhcmFtZXRlcnMgPSB7fTtcclxuICAgIGlmIChlcnJvckl0ZW0ucGFyYW1ldGVycyAhPT0gbnVsbCAmJiBlcnJvckl0ZW0ucGFyYW1ldGVycyAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGVycm9ySXRlbS5wYXJhbWV0ZXJzLmZvckVhY2goKHYsIGspID0+IHtcclxuICAgICAgICBwYXJhbWV0ZXJzW2tdID0gdjtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBwYXJhbWV0ZXJzWydGSUVMRCddID0gZXJyb3JJdGVtLmZpZWxkTmFtZTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5sbmdSZXNvdXJjZVNlcnZpY2UuR2V0U3RyaW5nKFxyXG4gICAgICBlcnJvckl0ZW0uZXJyb3JNZXNzYWdlS2V5LFxyXG4gICAgICBwYXJhbWV0ZXJzXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSW4gQW5ndWxhciAxMCB0aGUgQ29udHJvbCBMYWJlbCBmb3IgUmVhY3RpdmUgRm9ybXMgY2FuIGJlIHNldCBmaXJzdCB0aW1lIGhlcmUuIFdpdGggQW5ndWxhciAxMyBpcyBzdXBwb3J0ZWQgYnkgaW5pdCBpbiBPbkluaXRcclxuICAgKi9cclxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgLy8gcmVjZWl2ZSBmb3JtIHZpYSBmb3JtY29udHJvbG5hbWUgb3IgZm9ybWNvbnRyb2wgaW5zdGFuY2VcclxuICAgIGNvbnN0IGZvcm1Db250cm9sID0gdGhpcy5pbmplY3Rvci5nZXQoTmdDb250cm9sLCBudWxsKTtcclxuICAgIGlmIChmb3JtQ29udHJvbCBpbnN0YW5jZW9mIEZvcm1Db250cm9sTmFtZSkge1xyXG4gICAgICBjb25zdCBmb3JtID0gdGhpcy5pbmplY3Rvci5nZXQoRm9ybUdyb3VwRGlyZWN0aXZlLCBudWxsKTtcclxuICAgICAgdGhpcy5uZ0NvbnRyb2wgPSBmb3JtLmdldENvbnRyb2woZm9ybUNvbnRyb2wpO1xyXG4gICAgfSBlbHNlIGlmIChmb3JtQ29udHJvbCkge1xyXG4gICAgICB0aGlzLm5nQ29udHJvbCA9IGZvcm1Db250cm9sLmNvbnRyb2wgYXMgRm9ybUNvbnRyb2w7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5VcGRhdGVMYWJlbFRvQ29udHJvbCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSW5pdCBFdmVudFxyXG4gICAqL1xyXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcclxuICAgIC8vIHNldCBsYWJlbCBzaXplcyBmcm9tIGZvcm1sYXlvdXQgZGlyZWN0aXZlXHJcbiAgICB0aGlzLnNldExhYmVsU2l6ZXMoKTtcclxuXHJcbiAgICAvLyBzZXQgY29tcG9uZW50IGhlaWd0aCBmcm9tIGZyb21sYXlvdXQgZGlyZWN0aXZlXHJcbiAgICB0aGlzLnNldENvbXBvbmVudEhlaWdodCgpO1xyXG5cclxuICAgIC8vIHNldCBhZGFwdGl2ZSBsYWJlbCBwcm9wZXJ0eSBmcm9tIGZvcm1sYXlvdXQgZGlyZWN0aXZlXHJcbiAgICB0aGlzLnNldElzQWRhcHRpdmVMYWJlbCgpO1xyXG5cclxuICAgIC8vIHNldCBtZXRob2QgdG8gZGlzcGxheSBoZWxwdGV4dFxyXG4gICAgdGhpcy5zZXRIZWxwVGV4dE1vZGUoKTtcclxuXHJcbiAgICAvLyBzZXQgU3BsaXRNb2RlIGZvciBMYWJlbHNcclxuICAgIHRoaXMuc2V0TGFiZWxTcGxpdE1vZGUoKTtcclxuXHJcbiAgICB0aGlzLk9uQ2xhc3NJbml0KCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRob2RlIGVyZ2lidCBib29sZWFuIHRvdWNoZWQgPSB0cnVlXHJcbiAgICovXHJcbiAgcHVibGljIG9uVG91Y2goKTogdm9pZCB7XHJcbiAgICB0aGlzLl90b3VjaGVkID0gdHJ1ZTtcclxuICAgIHRoaXMucHJvcGFnYXRlVG91Y2goKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldGhvZGUsIGRhbWl0IGFuZGVyZSBDb250cm9scyDDpG5kZXJ1bmdlbiBpbSBDb250cm9sIG1pdGJla29tbWVuIGvDtm5uZW5cclxuICAgKiBadXIgw4RuZGVydW5nc2luZm8gZGllIE1ldGhvZGUgcHJvcGFnYXRlQ2hhbmdlIGF1ZnJ1ZmVuLlxyXG4gICAqL1xyXG4gIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlID0gKG9iaikgPT4gZm4ob2JqKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldGhvZGUsIGRhbWl0IGFuZGVyZSBDb250cm9scyDDpG5kZXJ1bmdlbiBtaXRiZWtvbW1lbiwgd2VubiBkYXMgQ29udHJvbCBha3RpdmllcnQgKEZvY3VzKSB3aXJkLlxyXG4gICAqL1xyXG4gIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnByb3BhZ2F0ZVRvdWNoID0gKG9iaikgPT4gZm4ob2JqKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldGhvZGUgcmVnaXN0cmllcnQgw4RuZGVydW5nZW4gYmVpIGRlciBWYWxpZGllcnVuZ1xyXG4gICAqL1xyXG4gIHB1YmxpYyByZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgICB0aGlzLl9vbkNoYW5nZSA9IGZuO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0enQgZGFzIENvbnRyb2wgYXVmIERpc2FibGVkXHJcbiAgICovXHJcbiAgcHVibGljIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5fZGlzYWJsZWRGb3JtID0gaXNEaXNhYmxlZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldGhvZGUgZGllIGRlbiBXZXJ0IGRlcyBJbnB1dHMgc2V0enRcclxuICAgKi9cclxuICBwdWJsaWMgc2V0VmFsdWUodjogVkFMVUUpOiB2b2lkIHtcclxuICAgIHRoaXMudmFsdWUgPSB2O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVmFsaWRhdG9yIE1ldGhvZGVcclxuICAgKi9cclxuICBwdWJsaWMgdmFsaWRhdGUoYzogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xyXG4gICAgY29uc3QgZXJyb3I6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0gdGhpcy52YWxpZGF0ZURhdGEoYyk7XHJcbiAgICByZXR1cm4gZXJyb3I7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBYnN0cmFrdGUgVmFsaWRhdG9yIE1ldGhvZGVcclxuICAgKi9cclxuICBwdWJsaWMgYWJzdHJhY3QgdmFsaWRhdGVEYXRhKGM6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsO1xyXG5cclxuICAvKipcclxuICAgKiBNZXRob2RlIHp1bSBzY2hyZWliZW4gdm9uIFdlcnRlbiBhdXMgZGVtIE1vZGVsIGluIGRhcyBDb250cm9sXHJcbiAgICovXHJcbiAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IFZBTFVFKSB7XHJcbiAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0aG9kIGNhbiBPdmVyd3JpdGVuIGluIFBhcmVudCBDbGFzc2VzXHJcbiAgICogQHBhcmFtIHZhbHVlIFdlcnQgd2VsY2hlciBpbiBkZW4ga29ycmVrdGVuIFR5cCBrb252ZXJ0aWVydCB3ZXJkZW4gc29sbFxyXG4gICAqIEByZXR1cm5zIFdlcnQgaW0ga29ycmVrdGVuIFR5cFxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBDb252ZXJ0SW5wdXRWYWx1ZSh2YWx1ZTogVkFMVUUpOiBWQUxVRSB7XHJcbiAgICByZXR1cm4gdmFsdWU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRob2RlIGVyZ2lidCBEZWNpbWFsIFN5bWJvbFxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBHZXREZWNpbWFsU3ltYm9sKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gJy4nO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0aG9kIGNhbiBiZSB1c2VkIHRvIFNldCBQcm9wZXJ0aWVzIGF0IENsYXNzIEluaXRcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgT25DbGFzc0luaXQoKTogdm9pZCB7fVxyXG5cclxuICAvKipcclxuICAgKiBBa3R1YWxpc2llcnQgZGVuIE5nTW9kZWwgV2VydCB1bmQgZGllIEfDvGx0aWdrZWl0IGRlcyBWYWxpZGF0b3JzIGRlcyBDb250cm9sc1xyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBVcGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMubmdDb250cm9sKSB7XHJcbiAgICAgIHRoaXMubmdDb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoeyBvbmx5U2VsZjogdHJ1ZSB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgVXBkYXRlTGFiZWxUb0NvbnRyb2woKTogdm9pZCB7XHJcbiAgICAvLyBIQUNLOiBBZGQgYWRkaXRpb24gcHJvcGVydHkgdG8gRm9ybUNvbnRyb2wuIENhbiBiZSBmaXhlZCBpZiBzb2x1dGlvbiBmb3IgdGlja2V0OiBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2lzc3Vlcy8xOTY4NlxyXG4gICAgaWYgKHRoaXMubmdDb250cm9sKSB7XHJcbiAgICAgIChcclxuICAgICAgICB0aGlzLm5nQ29udHJvbCBhcyB1bmtub3duIGFzIElBYnN0cmFjdENvbnRyb2xMYWJlbEV4dGVuc2lvblxyXG4gICAgICApLmNvbnRyb2xsYWJlbCA9IHRoaXMubGFiZWw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXQgY29tcG9uZW50IGhlaWdodCBmcm9tIHByb3BlcnR5IG9yIHBhcmVudCBsYXlvdXQgY29udHJvbFxyXG4gICAqL1xyXG4gIHByaXZhdGUgc2V0Q29tcG9uZW50SGVpZ2h0KCkge1xyXG4gICAgLy8gc2V0IHNpemUgZXh0cmEgc21hbGxcclxuICAgIGlmICghdGhpcy5jb21wb25lbnRIZWlnaHQpIHtcclxuICAgICAgaWYgKHRoaXMuZm9ybWxheW91dD8uY29tcG9uZW50SGVpZ2h0KSB7XHJcbiAgICAgICAgdGhpcy5jb21wb25lbnRIZWlnaHQgPSB0aGlzLmZvcm1sYXlvdXQuY29tcG9uZW50SGVpZ2h0O1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuY29tcG9uZW50SGVpZ2h0ID0gdGhpcy5jb25maWd1cmF0aW9uU2VydmljZS5Db21wb25lbnRIZWlnaHQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldCBtb2RlIGZvciBoZWxwdGV4dC4gQ2FuIGJlIHRvb2x0aXAgb3IgdGV4dFxyXG4gICAqL1xyXG4gIHByaXZhdGUgc2V0SGVscFRleHRNb2RlKCkge1xyXG4gICAgaWYgKCF0aGlzLmhlbHB0ZXh0bW9kZSkge1xyXG4gICAgICBpZiAodGhpcy5mb3JtbGF5b3V0Py5oZWxwdGV4dG1vZGUpIHtcclxuICAgICAgICB0aGlzLmhlbHB0ZXh0bW9kZSA9IHRoaXMuZm9ybWxheW91dC5oZWxwdGV4dG1vZGU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5oZWxwdGV4dG1vZGUgPSB0aGlzLmNvbmZpZ3VyYXRpb25TZXJ2aWNlLkhlbHB0ZXh0TW9kZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IGFkYXB0aXZlIGxhYmVsIHByb3BlcnR5IGZyb20gcGFyZW50IGxheW91dCBjb250cm9sXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzZXRJc0FkYXB0aXZlTGFiZWwoKSB7XHJcbiAgICBpZiAoIXRoaXMuaXNBZGFwdGl2ZUxhYmVsKSB7XHJcbiAgICAgIGlmICh0aGlzLmZvcm1sYXlvdXQ/LmlzQWRhcHRpdmVMYWJlbCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgdGhpcy5pc0FkYXB0aXZlTGFiZWwgPSB0aGlzLmZvcm1sYXlvdXQuaXNBZGFwdGl2ZUxhYmVsO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuaXNBZGFwdGl2ZUxhYmVsID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldCBsYWJlbCBzaXplcyBmcm9tIHByb3BlcnR5IG9yIHBhcmVudCBsYXlvdXQgY29udHJvbFxyXG4gICAqL1xyXG4gIHByaXZhdGUgc2V0TGFiZWxTaXplcygpIHtcclxuICAgIC8vIHNldCBzaXplIGV4dHJhIHNtYWxsXHJcbiAgICBpZiAoIXRoaXMubGFiZWxTaXplWHMpIHtcclxuICAgICAgaWYgKHRoaXMuZm9ybWxheW91dD8ubGFiZWxTaXplWHMpIHtcclxuICAgICAgICB0aGlzLmxhYmVsU2l6ZVhzID0gdGhpcy5mb3JtbGF5b3V0LmxhYmVsU2l6ZVhzO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMubGFiZWxTaXplWHMgPSB0aGlzLmNvbmZpZ3VyYXRpb25TZXJ2aWNlLkxhYmVsU2l6ZVhzO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gc2V0IHNpemUgc21hbGxcclxuICAgIGlmICghdGhpcy5sYWJlbFNpemVTbSkge1xyXG4gICAgICBpZiAodGhpcy5mb3JtbGF5b3V0Py5sYWJlbFNpemVTbSkge1xyXG4gICAgICAgIHRoaXMubGFiZWxTaXplU20gPSB0aGlzLmZvcm1sYXlvdXQubGFiZWxTaXplU207XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5sYWJlbFNpemVTbSA9IHRoaXMuY29uZmlndXJhdGlvblNlcnZpY2UuTGFiZWxTaXplU207XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBzZXQgc2l6ZSBtZWRpdW1cclxuICAgIGlmICghdGhpcy5sYWJlbFNpemVNZCkge1xyXG4gICAgICBpZiAodGhpcy5mb3JtbGF5b3V0Py5sYWJlbFNpemVNZCkge1xyXG4gICAgICAgIHRoaXMubGFiZWxTaXplTWQgPSB0aGlzLmZvcm1sYXlvdXQubGFiZWxTaXplTWQ7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5sYWJlbFNpemVNZCA9IHRoaXMuY29uZmlndXJhdGlvblNlcnZpY2UuTGFiZWxTaXplTWQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBzZXQgc2l6ZSBsYXJnZVxyXG4gICAgaWYgKCF0aGlzLmxhYmVsU2l6ZUxnKSB7XHJcbiAgICAgIGlmICh0aGlzLmZvcm1sYXlvdXQ/LmxhYmVsU2l6ZUxnKSB7XHJcbiAgICAgICAgdGhpcy5sYWJlbFNpemVMZyA9IHRoaXMuZm9ybWxheW91dC5sYWJlbFNpemVMZztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmxhYmVsU2l6ZUxnID0gdGhpcy5jb25maWd1cmF0aW9uU2VydmljZS5MYWJlbFNpemVMZztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIHNldCBzaXplIGV4dHJhIGxhcmdlXHJcbiAgICBpZiAoIXRoaXMubGFiZWxTaXplWGwpIHtcclxuICAgICAgaWYgKHRoaXMuZm9ybWxheW91dD8ubGFiZWxTaXplWGwpIHtcclxuICAgICAgICB0aGlzLmxhYmVsU2l6ZVhsID0gdGhpcy5mb3JtbGF5b3V0LmxhYmVsU2l6ZVhsO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMubGFiZWxTaXplWGwgPSB0aGlzLmNvbmZpZ3VyYXRpb25TZXJ2aWNlLkxhYmVsU2l6ZVhsO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gc2V0IHNpemUgZXh0cmEgZXh0cmEgbGFyZ2VcclxuICAgIGlmICghdGhpcy5sYWJlbFNpemVYeGwpIHtcclxuICAgICAgaWYgKHRoaXMuZm9ybWxheW91dD8ubGFiZWxTaXplWHhsKSB7XHJcbiAgICAgICAgdGhpcy5sYWJlbFNpemVYeGwgPSB0aGlzLmZvcm1sYXlvdXQubGFiZWxTaXplWHhsO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMubGFiZWxTaXplWHhsID0gdGhpcy5jb25maWd1cmF0aW9uU2VydmljZS5MYWJlbFNpemVYeGw7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0TGFiZWxTcGxpdE1vZGUoKSB7XHJcbiAgICBpZiAoIXRoaXMuc3BsaXRsYWJlbGFuZGhlbHB0ZXh0KSB7XHJcbiAgICAgIGlmICh0aGlzLmZvcm1sYXlvdXQ/LnNwbGl0bGFiZWxhbmRoZWxwdGV4dCkge1xyXG4gICAgICAgIHRoaXMuc3BsaXRsYWJlbGFuZGhlbHB0ZXh0ID0gdGhpcy5mb3JtbGF5b3V0LnNwbGl0bGFiZWxhbmRoZWxwdGV4dDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNwbGl0bGFiZWxhbmRoZWxwdGV4dCA9XHJcbiAgICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb25TZXJ2aWNlLlNwbGl0TGFiZWxBbmRIZWxwdGV4dDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
|
|
535
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZW1vZGVsY29udHJvbC5qcyIsInNvdXJjZVJvb3QiOiJDOi9Qcm9qZWt0ZS9zaW1wbGVhbmd1bGFyY29udHJvbHMtbmcxMC9jaC5qbmV0d29yay5zYWMtY29udHJvbHMvcHJvamVjdHMvc2FjLWNvbW1vbi9zcmMvIiwic291cmNlcyI6WyJjb21tb24vYmFzZW1vZGVsY29udHJvbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFPdkQsT0FBTyxFQUNILGVBQWUsRUFDZix3QkFBd0IsRUFDeEIscUJBQXFCLEVBQ3JCLDhCQUE4QixHQUNqQyxNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsOEJBQThCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNqSCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUM5RyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUN6RSxPQUFPLEVBSUgsZUFBZSxFQUNmLGtCQUFrQixFQUNsQixTQUFTLEdBR1osTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWxDOztHQUVHO0FBRUgsTUFBTSxPQUFnQixtQkFBbUI7SUF1S3JDLHdCQUF3QjtJQUV4Qix1QkFBdUI7SUFFdkI7Ozs7T0FJRztJQUNILFlBQW9CLFVBQStCLEVBQW1CLFFBQWtCO1FBQWxCLGFBQVEsR0FBUixRQUFRLENBQVU7UUEvS3hGLHFCQUFx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QUM7OztZQS9tQkosU0FBUzs7O1lBbkNELG1CQUFtQix1QkFvTlgsSUFBSTtZQWpNSyxRQUFROzs7OEJBd0Y3QixLQUFLO3VCQU1MLEtBQUs7MkJBS0wsS0FBSzt1QkFLTCxLQUFLOzJCQUtMLEtBQUs7MEJBTUwsS0FBSzs4QkFLTCxLQUFLOzBCQUtMLEtBQUs7MEJBTUwsS0FBSzswQkFNTCxLQUFLOzBCQU1MLEtBQUs7MEJBTUwsS0FBSzsyQkFNTCxLQUFLO21CQU1MLEtBQUs7b0NBZUwsS0FBSztpQ0E4REwsS0FBSztvQkFvREwsS0FBSztvQkF5Q0wsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNhY0Zvcm1MYXlvdXRDb21tb24gfSBmcm9tICcuLi9jb250cm9scy9sYXlvdXQvZm9ybWxheW91dCc7XHJcbmltcG9ydCB7IENvbnRyb2xIZWlnaHQgfSBmcm9tICcuLi9lbnVtcy9Db250cm9sSGVpZ2h0JztcclxuaW1wb3J0IHsgSVNhY0NvbmZpZ3VyYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9JU2FjQ29uZmlndXJhdGlvblNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJU2FjSWNvblNlcnZpY2UgfSBmcm9tICcuLi9pbnRlcmZhY2VzL0lTYWNJY29uU2VydmljZSc7XHJcbmltcG9ydCB7IElTYWNMYWJlbFNpemVzIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9JU2FjTGFiZWxTaXplcyc7XHJcbmltcG9ydCB7IElTYWNMb2NhbGlzYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9JU2FjTG9jYWxpc2F0aW9uU2VydmljZSc7XHJcbmltcG9ydCB7IElTYWNWYWxpZGF0aW9uS2V5U2VydmljZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvSVNhY1ZhbGlkYXRpb25LZXlTZXJ2aWNlJztcclxuaW1wb3J0IHsgSUFic3RyYWN0Q29udHJvbExhYmVsRXh0ZW5zaW9uIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9pYWJzdHJhY3Rjb250cm9sbGFiZWwnO1xyXG5pbXBvcnQge1xyXG4gICAgU0FDSUNPTl9TRVJWSUNFLFxyXG4gICAgU0FDVkFMSURBVElPTktFWV9TRVJWSUNFLFxyXG4gICAgU2FjRGVmYXVsdEljb25TZXJ2aWNlLFxyXG4gICAgU2FjRGVmYXVsdFZhbGlkYXRpb25LZXlTZXJ2aWNlLFxyXG59IGZyb20gJy4uL3NlcnZpY2VzJztcclxuaW1wb3J0IHsgU0FDQ09ORklHVVJBVElPTl9TRVJWSUNFLCBTYWNEZWZhdWx0Q29uZmlndXJhdGlvblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9zYWMtY29uZmlndXJhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU0FDTE9DQUxJU0FUSU9OX1NFUlZJQ0UsIFNhY0RlZmF1bHRMb2NhbGlzYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvc2FjLWxvY2FsaXNhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgY29udmVydFRvQm9vbGVhbiB9IGZyb20gJy4uL3V0aWxpdGllcy9jb252ZXJ0aW9uJztcclxuaW1wb3J0IHsgY3JlYXRlR3VpZCB9IGZyb20gJy4uL3V0aWxpdGllcy9ndWlkJztcclxuaW1wb3J0IHsgVmFsaWRhdGlvbkVycm9ySXRlbSB9IGZyb20gJy4uL3ZhbGlkYXRpb24nO1xyXG5pbXBvcnQgeyBEaXJlY3RpdmUsIEhvc3QsIEluamVjdG9yLCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgICBBYnN0cmFjdENvbnRyb2wsXHJcbiAgICBDb250cm9sVmFsdWVBY2Nlc3NvcixcclxuICAgIEZvcm1Db250cm9sLFxyXG4gICAgRm9ybUNvbnRyb2xOYW1lLFxyXG4gICAgRm9ybUdyb3VwRGlyZWN0aXZlLFxyXG4gICAgTmdDb250cm9sLFxyXG4gICAgVmFsaWRhdGlvbkVycm9ycyxcclxuICAgIFZhbGlkYXRvcixcclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuXHJcbi8qKlxyXG4gKiBBYnN0cmFjdCBLbGFzc2UgZsO8ciBTYWNCYXNlTW9kZWxDb250cm9sLiBJbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBWYWxpZGF0b3IsIE9uSW5pdFxyXG4gKi9cclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTYWNCYXNlTW9kZWxDb250cm9sPFZBTFVFPiBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBWYWxpZGF0b3IsIE9uSW5pdCB7XHJcbiAgICAvLyAjcmVnaW9uIFByb3BlcnRpZXNcclxuXHJcbiAgICAvKipcclxuICAgICAqIElubGluZSBFcnJvcnMgZsO8ciBkYXMgQ29udHJvbFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9pbmxpbmVlcnJvcmVuYWJsZWQ6IGJvb2xlYW4gfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIExhYmVsIFRleHRcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfbGFiZWw6IHN0cmluZyA9ICcnO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2VydmljZSBmb3IgbG9hZGluZyBkZWZhdWx0IHNldHRpbmdzIGZvciB0aGUgY29udHJvbHNcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbmZpZ3VyYXRpb25TZXJ2aWNlOiBJU2FjQ29uZmlndXJhdGlvblNlcnZpY2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBCb29sZWFuIFByb3BlcnR5IGRpcnR5OyBkZWZhdWx0IFdlcnQgLSBmYWxzZVxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgX2RpcnR5OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTYWNNb2RlbCBGb3JtIGlzdCBkaXNhYmxlZFxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgX2Rpc2FibGVkRm9ybTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmFsaWRhdG9yXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBfb25DaGFuZ2U6ICgpID0+IHZvaWQ7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBCb29sZWFuIFByb3BlcnR5IHRvdWNoZWQ7IGRlZmF1bHQgV2VydCAtIGZhbHNlXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBfdG91Y2hlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW50ZXJuZSBWYXJpYWJsZSwgZGllIGRlbiBXZXJ0IGRlcyBDb250cm9scyBow6RsdFxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgX3ZhbHVlOiBWQUxVRSA9IG51bGw7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGb3JtIGxheW91dCBpbnN0YW5jZSBpZiBleGlzdHNcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGZvcm1sYXlvdXQ6IFNhY0Zvcm1MYXlvdXRDb21tb24gPSBudWxsO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogaWNvbiBzZXJ2aWNlXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBpY29uU2VydmljZTogSVNhY0ljb25TZXJ2aWNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2VydmljZSBmw7xyIEVycm9yIExvY2FsaXNhdGlvblxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgbG5nUmVzb3VyY2VTZXJ2aWNlOiBJU2FjTG9jYWxpc2F0aW9uU2VydmljZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIG5nQ29udHJvbFxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgbmdDb250cm9sOiBGb3JtQ29udHJvbDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIENvbnRyb2xIZWlnaHQgZW51bSBmb3IgdXNlIGluIEhUTUwgbWFya3VwXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBDb250cm9sSGVpZ2h0OiB0eXBlb2YgQ29udHJvbEhlaWdodCA9IENvbnRyb2xIZWlnaHQ7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEZWZpbmVzIHRoZSBzdGFuZGFyZCBoZWlnaHQgb2YgdGhlIGNvbXBvbmVudHNcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBjb21wb25lbnRIZWlnaHQ6IENvbnRyb2xIZWlnaHQgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIERlYWt0aXZpZXJ0IGRhcyBJbnB1dCBDb250cm9sXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIHB1YmxpYyBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRGVha3RpdmllcnQgZGFzIExhYmVsIGltIFRlbXBsYXRlXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIHB1YmxpYyBkaXNhYmxlbGFiZWw6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRleHQgdG8gc3VwcG9ydCB0aGUgdXNlciBkdXJpbmcgaW5wdXQuXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIHB1YmxpYyBoZWxwdGV4dDogc3RyaW5nID0gJyc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNb2RlIGZvciBkaXNwbGF5IGhlbHB0ZXh0XHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgaGVscHRleHRtb2RlOiAndG9vbHRpcCcgfCAndGV4dCcgfCBudWxsO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogZGVmaW5lcyB0aGF0IGVycm9yIG1lc3NhZ2VzIGFyZSBkaXNwbGF5ZWQgdW5kZXIgdGhlIGNvbnRyb2xzXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIHB1YmxpYyBpbmxpbmVFcnJvcjogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBkZWZpbmVzIHRoYXQgdGhlIGxhYmVscyBhcmUgZGlzcGxheWVkIGFzIGFkYXB0aXZlIGxhYmVsc1xyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBwdWJsaWMgaXNBZGFwdGl2ZUxhYmVsOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBkZWZhdWx0IGxhYmUgc2l6ZSBmb3IgbGFyZ2UgZGV2aWNlc1xyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGxhYmVsU2l6ZUxnOiBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIGRlZmF1bHQgbGFiZWwgc2l6ZSBmb3IgbWVkaXVtIGRldmljZXNcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBsYWJlbFNpemVNZDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBkZWZhdWx0IGxhYmVsIHNpemUgZm9yIHNtYWxsIGRldmljZXNcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBsYWJlbFNpemVTbTogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBkZWZhdWx0IGxhYmVsIHNpemUgZm9yIGV4dHJhIGxhcmdlIGRldmljZXNcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBsYWJlbFNpemVYbDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBkZWZhdWx0IGxhYmVsIGNvbHVtbiBzaXplXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgbGFiZWxTaXplWHM6IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogZGVmYXVsdCBsYWJlbCBzaXplIGZvciBleHRyYSBleHRyYSBsYXJnZSBkZXZpY2VzXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgbGFiZWxTaXplWHhsOiBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIE5hbWUgZGVzIENvbnRyb2xzXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIHB1YmxpYyBuYW1lOiBzdHJpbmcgPSBjcmVhdGVHdWlkKCk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBMZWVyZSBJbXBsZW1lbnRhdGlvbiB2b24gXCJwcm9wYWdhdGVDaGFuZ2VcIi4gTXVzcyBnZW1hY2h0IHdlcmRlbiwgZGFtaXQga2VpbiBGZWhsZXIgZW50c3RlaHRcclxuICAgICAqL1xyXG4gICAgcHVibGljIHByb3BhZ2F0ZUNoYW5nZTogYW55ID0gKCkgPT4ge307XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBMZWVyZSBJbXBsZW1lbnRhdGlvbiB2b24gXCJwcm9wYWdhdGVUb3VjaFwiLiBNdXNzIGdlbWFjaHQgd2VyZGVuLCBkYW1pdCBrZWluIEZlaGxlciBlbnRzdGVodFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgcHJvcGFnYXRlVG91Y2g6IGFueSA9ICgpID0+IHt9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRGV0YWNoIGxhYmVsIHRleHQgYW5kIHRvb2x0aXAgZnJvbSBlYWNoIG90aGVyIGluIExhYmVsIHNvIHRoYXQgbGFiZWwgYW5kIHRvb2x0aXAgY2FuIGJlIGFsaWduZWQgZGlmZmVyZW50bHkuIFRoaXMgaXMgaW4gQm9vdHN0cmFwIDMgbm90IHN1cHBvcnRlZCFcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBzcGxpdGxhYmVsYW5kaGVscHRleHQ6IGJvb2xlYW4gfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFNlcnZpY2UgdG8gcmVjZWl2ZSBzdGFuZGFyZCB2YWxpZGF0aW9uIG1lc3NhZ2Uga2V5cyBhbmQgdGV4dHNcclxuICAgICAqL1xyXG4gICAgcHVibGljIHZhbGlkYXRpb25LZXlTZXJ2aWNlOiBJU2FjVmFsaWRhdGlvbktleVNlcnZpY2U7XHJcblxyXG4gICAgLy8gI2VuZHJlZ2lvbiBQcm9wZXJ0aWVzXHJcblxyXG4gICAgLy8gI3JlZ2lvbiBDb25zdHJ1Y3RvcnNcclxuXHJcbiAgICAvKipcclxuICAgICAqIENvbnN0cnVjdG9yXHJcbiAgICAgKiBAcGFyYW0gZm9ybWxheW91dCBTYWNGb3JtTGF5b3V0Q29tbW9uIHRvIGRlZmluZSBzY29wZWQgbGF5b3V0IHNldHRpbmdzXHJcbiAgICAgKiBAcGFyYW0gaW5qZWN0b3IgSW5qZWN0b3IgZm9yIGluamVjdGluZyBzZXJ2aWNlc1xyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3RvcihASG9zdCgpIGZvcm1sYXlvdXQ6IFNhY0Zvcm1MYXlvdXRDb21tb24sIHByaXZhdGUgcmVhZG9ubHkgaW5qZWN0b3I6IEluamVjdG9yKSB7XHJcbiAgICAgICAgdGhpcy5mb3JtbGF5b3V0ID0gZm9ybWxheW91dDtcclxuICAgICAgICB0aGlzLnZhbGlkYXRpb25LZXlTZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KFNBQ1ZBTElEQVRJT05LRVlfU0VSVklDRSwgbmV3IFNhY0RlZmF1bHRWYWxpZGF0aW9uS2V5U2VydmljZSgpKTtcclxuICAgICAgICB0aGlzLmxuZ1Jlc291cmNlU2VydmljZSA9IGluamVjdG9yLmdldChcclxuICAgICAgICAgICAgU0FDTE9DQUxJU0FUSU9OX1NFUlZJQ0UsXHJcbiAgICAgICAgICAgIG5ldyBTYWNEZWZhdWx0TG9jYWxpc2F0aW9uU2VydmljZSh0aGlzLnZhbGlkYXRpb25LZXlTZXJ2aWNlKVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHRoaXMuY29uZmlndXJhdGlvblNlcnZpY2UgPSBpbmplY3Rvci5nZXQoU0FDQ09ORklHVVJBVElPTl9TRVJWSUNFLCBuZXcgU2FjRGVmYXVsdENvbmZpZ3VyYXRpb25TZXJ2aWNlKCkpO1xyXG5cclxuICAgICAgICB0aGlzLmljb25TZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KFNBQ0lDT05fU0VSVklDRSwgbmV3IFNhY0RlZmF1bHRJY29uU2VydmljZSgpKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyAjZW5kcmVnaW9uIENvbnN0cnVjdG9yc1xyXG5cclxuICAgIC8vICNyZWdpb24gUHVibGljIEdldHRlcnMgQW5kIFNldHRlcnNcclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldCBJY29uIGZvciBIZWxwdGV4dCBUb29sdGlwXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgSGVscHRleHRUb29sdGlwSWNvbigpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmljb25TZXJ2aWNlLkdlbmVyaWNIZWxwdGV4dEljb247XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNZXRob2RlIGVyZ2lidCBCb29sZWFuIFdlcnQgZsO8ciBkaXJ0eVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0IGRpcnR5KCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICh0aGlzLm5nQ29udHJvbCAhPT0gbnVsbCAmJiB0aGlzLm5nQ29udHJvbCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2RpcnR5ID0gdGhpcy5uZ0NvbnRyb2wuZGlydHk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5fZGlydHk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTaG93IGVycm9yIG1lc3NhZ2VzIGlubGluZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0IGlubGluZWVycm9yZW5hYmxlZCgpOiBib29sZWFuIHwgbnVsbCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lubGluZWVycm9yZW5hYmxlZDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFrdGl2aWVydCBvZGVyIERlYWt0aXZpZXJ0IGRpZSBJbmxpbmUgRXJyb3JzIGbDvHIgZGFzIENvbnRyb2xcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBzZXQgaW5saW5lZXJyb3JlbmFibGVkKHZhbHVlOiBib29sZWFuIHwgbnVsbCkge1xyXG4gICAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2lubGluZWVycm9yZW5hYmxlZCA9IG51bGw7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5faW5saW5lZXJyb3JlbmFibGVkID0gY29udmVydFRvQm9vbGVhbih2YWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWV0aG9kZSBlcmdpYnQgYm9vbGVhbiBXZXJ0IHdlbm4gRm9ybSBpbnZhbGlkIG9kZXIgbmljaHQgaW52YWxpZCBpc3RcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldCBpbnZhbGlkKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLm5nQ29udHJvbCAhPT0gdW5kZWZpbmVkICYmIHRoaXMubmdDb250cm9sICE9PSBudWxsICYmIHRoaXMubmdDb250cm9sLmludmFsaWQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEZWZpbmllcnQgb2IgZGFzIENvbnRyb2wgZGlzYWJsZWQgaXN0XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgaXNkaXNhYmxlZCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWRGb3JtIHx8IHRoaXMuZGlzYWJsZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIGlubGluZSBlcnJvciBtZXNzYWdlcyBhcmUgYWN0aXZlIGZvciB0aGlzIGNvbnRyb2wuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgaXNpbmxpbmVlcnJvcmVuYWJsZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKHRoaXMuX2lubGluZWVycm9yZW5hYmxlZCAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5faW5saW5lZXJyb3JlbmFibGVkO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuZm9ybWxheW91dCAhPT0gbnVsbCAmJiB0aGlzLmZvcm1sYXlvdXQuSXNJbmxpbmVFcnJvckVuYWJsZWQgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZm9ybWxheW91dD8uSXNJbmxpbmVFcnJvckVuYWJsZWQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5jb25maWd1cmF0aW9uU2VydmljZS5JbmxpbmVFcnJvckVuYWJsZWQgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlndXJhdGlvblNlcnZpY2UuSW5saW5lRXJyb3JFbmFibGVkO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEZWZpbmllcnQgZGVuIExhYmVsIFRleHRcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldCBsYWJlbCgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9sYWJlbDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIERlZmluaWVydCBkZW4gTGFiZWwgVGV4dFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBwdWJsaWMgc2V0IGxhYmVsKHY6IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMuX2xhYmVsID0gdjtcclxuICAgICAgICB0aGlzLlVwZGF0ZUxhYmVsVG9Db250cm9sKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiByZXR1cm5zIGFuIG9iamVjdCB3aXRoIGFsbCBsYWJlbCBzaXplcy4gVGhlc2UgdmFsdWVzIGNhbiB0aGVuIGJlIHRyYW5zZmVycmVkIHRvIGNvcnJlc3BvbmRpbmcgQ1NTIGNsYXNzZXMgdXNpbmcgYSBwaXBlXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgbGFiZWxTaXplcygpOiBJU2FjTGFiZWxTaXplcyB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgbGFiZWxTaXplU206IHRoaXMubGFiZWxTaXplU20sXHJcbiAgICAgICAgICAgIGxhYmVsU2l6ZU1kOiB0aGlzLmxhYmVsU2l6ZU1kLFxyXG4gICAgICAgICAgICBsYWJlbFNpemVYczogdGhpcy5sYWJlbFNpemVYcyxcclxuICAgICAgICAgICAgbGFiZWxTaXplWGw6IHRoaXMubGFiZWxTaXplWGwsXHJcbiAgICAgICAgICAgIGxhYmVsU2l6ZVh4bDogdGhpcy5sYWJlbFNpemVYeGwsXHJcbiAgICAgICAgICAgIGxhYmVsU2l6ZUxnOiB0aGlzLmxhYmVsU2l6ZUxnLFxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNZXRob2RlIGVyZ2lidCBCb29sZWFuIFdlcnQgZsO8ciB0b3VjaGVkXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgdG91Y2hlZCgpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2wgIT09IG51bGwgJiYgdGhpcy5uZ0NvbnRyb2wgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0aGlzLl90b3VjaGVkID0gdGhpcy5uZ0NvbnRyb2wudG91Y2hlZDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLl90b3VjaGVkO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0IE1ldGhvZGUgZsO8ciBOZ01vZGVsIEJpbmRpbmcgaW4gSHRtbCBNYXJrdXBcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldCB2YWx1ZSgpOiBWQUxVRSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2V0IE1ldGhvZGUgZsO8ciBOZ01vZGVsIEJpbmRpbmcgaW4gSHRtbCBNYXJrdXBcclxuICAgICAqIElucHV0IHdpcmQgYmVuw7Z0aWd0LCBkYW1pdCBkZXIgV2VydCBhdWNoIMO8YmVyIGRhcyBNYXJrdXAgZ2VzZXR6dCB3ZXJkZW4ga2Fubi5cclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBzZXQgdmFsdWUodjogVkFMVUUpIHtcclxuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLl92YWx1ZSA9IHRoaXMuQ29udmVydElucHV0VmFsdWUodik7XHJcbiAgICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy5fdmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vICNlbmRyZWdpb24gUHVibGljIEdldHRlcnMgQW5kIFNldHRlcnNcclxuXHJcbiAgICAvLyAjcmVnaW9uIFB1YmxpYyBNZXRob2RzXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNZXRob2RlIGVyZ2lidCBFcnJvciBhbmhhbmQgdm9uIGdlZ2ViZW5lbiBLcml0ZXJpZW5cclxuICAgICAqL1xyXG4gICAgcHVibGljIEdldEVycm9yTWVzc2FnZSgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xyXG4gICAgICAgIGlmICh0aGlzLm5nQ29udHJvbC5lcnJvcnMgPT09IHVuZGVmaW5lZCB8fCB0aGlzLm5nQ29udHJvbC5lcnJvcnMgPT09IG51bGwpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPHN0cmluZz4oKG9ic2VydmVyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBvYnNlcnZlci5uZXh0KCcnKTtcclxuICAgICAgICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgZXJyb3JzOiBWYWxpZGF0aW9uRXJyb3JzID0gdGhpcy5uZ0NvbnRyb2wuZXJyb3JzO1xyXG5cclxuICAgICAgICBpZiAoZXJyb3JzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE9ic2VydmFibGU8c3RyaW5nPigob2JzZXJ2ZXIpID0+IHtcclxuICAgICAgICAgICAgICAgIG9ic2VydmVyLm5leHQoJycpO1xyXG4gICAgICAgICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBrZXlzOiBzdHJpbmdbXSA9IE9iamVjdC5rZXlzKGVycm9ycyk7XHJcblxyXG4gICAgICAgIGlmIChrZXlzLmxlbmd0aCA8PSAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxzdHJpbmc+KChvYnNlcnZlcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dCgnJyk7XHJcbiAgICAgICAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGVycm9ySXRlbTogVmFsaWRhdGlvbkVycm9ySXRlbSA9IGVycm9yc1trZXlzWzBdXTtcclxuXHJcbiAgICAgICAgLy8gVmFsaWRhdGlvbiBQYXJhbWV0ZXJzXHJcbiAgICAgICAgY29uc3QgcGFyYW1ldGVycyA9IHt9O1xyXG4gICAgICAgIGlmIChlcnJvckl0ZW0ucGFyYW1ldGVycyAhPT0gbnVsbCAmJiBlcnJvckl0ZW0ucGFyYW1ldGVycyAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGVycm9ySXRlbS5wYXJhbWV0ZXJzLmZvckVhY2goKHYsIGspID0+IHtcclxuICAgICAgICAgICAgICAgIHBhcmFtZXRlcnNba10gPSB2O1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcGFyYW1ldGVyc1snRklFTEQnXSA9IGVycm9ySXRlbS5maWVsZE5hbWU7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmxuZ1Jlc291cmNlU2VydmljZS5HZXRTdHJpbmcoZXJyb3JJdGVtLmVycm9yTWVzc2FnZUtleSwgcGFyYW1ldGVycyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbml0IEV2ZW50XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBuZ09uSW5pdCgpIHtcclxuICAgICAgICAvLyByZWNlaXZlIGZvcm0gdmlhIGZvcm1jb250cm9sbmFtZSBvciBmb3JtY29udHJvbCBpbnN0YW5jZVxyXG4gICAgICAgIGNvbnN0IGZvcm1Db250cm9sID0gdGhpcy5pbmplY3Rvci5nZXQoTmdDb250cm9sLCBudWxsKTtcclxuICAgICAgICBpZiAoZm9ybUNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQ29udHJvbE5hbWUpIHtcclxuICAgICAgICAgICAgY29uc3QgZm9ybSA9IHRoaXMuaW5qZWN0b3IuZ2V0KEZvcm1Hcm91cERpcmVjdGl2ZSwgbnVsbCk7XHJcbiAgICAgICAgICAgIHRoaXMubmdDb250cm9sID0gZm9ybS5nZXRDb250cm9sKGZvcm1Db250cm9sKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAoZm9ybUNvbnRyb2wpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubmdDb250cm9sID0gZm9ybUNvbnRyb2wuY29udHJvbCBhcyBGb3JtQ29udHJvbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5VcGRhdGVMYWJlbFRvQ29udHJvbCgpO1xyXG5cclxuICAgICAgICAvLyBzZXQgbGFiZWwgc2l6ZXMgZnJvbSBmb3JtbGF5b3V0IGRpcmVjdGl2ZVxyXG4gICAgICAgIHRoaXMuc2V0TGFiZWxTaXplcygpO1xyXG5cclxuICAgICAgICAvLyBzZXQgY29tcG9uZW50IGhlaWd0aCBmcm9tIGZyb21sYXlvdXQgZGlyZWN0aXZlXHJcbiAgICAgICAgdGhpcy5zZXRDb21wb25lbnRIZWlnaHQoKTtcclxuXHJcbiAgICAgICAgLy8gc2V0IGFkYXB0aXZlIGxhYmVsIHByb3BlcnR5IGZyb20gZm9ybWxheW91dCBkaXJlY3RpdmVcclxuICAgICAgICB0aGlzLnNldElzQWRhcHRpdmVMYWJlbCgpO1xyXG5cclxuICAgICAgICAvLyBzZXQgbWV0aG9kIHRvIGRpc3BsYXkgaGVscHRleHRcclxuICAgICAgICB0aGlzLnNldEhlbHBUZXh0TW9kZSgpO1xyXG5cclxuICAgICAgICAvLyBzZXQgU3BsaXRNb2RlIGZvciBMYWJlbHNcclxuICAgICAgICB0aGlzLnNldExhYmVsU3BsaXRNb2RlKCk7XHJcblxyXG4gICAgICAgIHRoaXMuT25DbGFzc0luaXQoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE1ldGhvZGUgZXJnaWJ0IGJvb2xlYW4gdG91Y2hlZCA9IHRydWVcclxuICAgICAqL1xyXG4gICAgcHVibGljIG9uVG91Y2goKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fdG91Y2hlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5wcm9wYWdhdGVUb3VjaCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWV0aG9kZSwgZGFtaXQgYW5kZXJlIENvbnRyb2xzIMOkbmRlcnVuZ2VuIGltIENvbnRyb2wgbWl0YmVrb21tZW4ga8O2bm5lblxyXG4gICAgICogWnVyIMOEbmRlcnVuZ3NpbmZvIGRpZSBNZXRob2RlIHByb3BhZ2F0ZUNoYW5nZSBhdWZydWZlbi5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlID0gKG9iaikgPT4gZm4ob2JqKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE1ldGhvZGUsIGRhbWl0IGFuZGVyZSBDb250cm9scyDDpG5kZXJ1bmdlbiBtaXRiZWtvbW1lbiwgd2VubiBkYXMgQ29udHJvbCBha3RpdmllcnQgKEZvY3VzKSB3aXJkLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMucHJvcGFnYXRlVG91Y2ggPSAob2JqKSA9PiBmbihvYmopO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWV0aG9kZSByZWdpc3RyaWVydCDDhG5kZXJ1bmdlbiBiZWkgZGVyIFZhbGlkaWVydW5nXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyByZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fb25DaGFuZ2UgPSBmbjtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHp0IGRhcyBDb250cm9sIGF1ZiBEaXNhYmxlZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fZGlzYWJsZWRGb3JtID0gaXNEaXNhYmxlZDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE1ldGhvZGUgZGllIGRlbiBXZXJ0IGRlcyBJbnB1dHMgc2V0enRcclxuICAgICAqL1xyXG4gICAgcHVibGljIHNldFZhbHVlKHY6IFZBTFVFKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy52YWx1ZSA9IHY7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWYWxpZGF0b3IgTWV0aG9kZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgdmFsaWRhdGUoYzogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xyXG4gICAgICAgIGNvbnN0IGVycm9yOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9IHRoaXMudmFsaWRhdGVEYXRhKGMpO1xyXG4gICAgICAgIHJldHVybiBlcnJvcjtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFic3RyYWt0ZSBWYWxpZGF0b3IgTWV0aG9kZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYWJzdHJhY3QgdmFsaWRhdGVEYXRhKGM6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWV0aG9kZSB6dW0gc2NocmVpYmVuIHZvbiBXZXJ0ZW4gYXVzIGRlbSBNb2RlbCBpbiBkYXMgQ29udHJvbFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogVkFMVUUpIHtcclxuICAgICAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8vICNlbmRyZWdpb24gUHVibGljIE1ldGhvZHNcclxuXHJcbiAgICAvLyAjcmVnaW9uIFByb3RlY3RlZCBNZXRob2RzXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNZXRob2QgY2FuIE92ZXJ3cml0ZW4gaW4gUGFyZW50IENsYXNzZXNcclxuICAgICAqIEBwYXJhbSB2YWx1ZSBXZXJ0IHdlbGNoZXIgaW4gZGVuIGtvcnJla3RlbiBUeXAga29udmVydGllcnQgd2VyZGVuIHNvbGxcclxuICAgICAqIEByZXR1cm5zIFdlcnQgaW0ga29ycmVrdGVuIFR5cFxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgQ29udmVydElucHV0VmFsdWUodmFsdWU6IFZBTFVFKTogVkFMVUUge1xyXG4gICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE1ldGhvZGUgZXJnaWJ0IERlY2ltYWwgU3ltYm9sXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBHZXREZWNpbWFsU3ltYm9sKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuICcuJztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE1ldGhvZCBjYW4gYmUgdXNlZCB0byBTZXQgUHJvcGVydGllcyBhdCBDbGFzcyBJbml0XHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBPbkNsYXNzSW5pdCgpOiB2b2lkIHt9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBa3R1YWxpc2llcnQgZGVuIE5nTW9kZWwgV2VydCB1bmQgZGllIEfDvGx0aWdrZWl0IGRlcyBWYWxpZGF0b3JzIGRlcyBDb250cm9sc1xyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgVXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcclxuICAgICAgICAgICAgdGhpcy5uZ0NvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7IG9ubHlTZWxmOiB0cnVlIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyAjZW5kcmVnaW9uIFByb3RlY3RlZCBNZXRob2RzXHJcblxyXG4gICAgLy8gI3JlZ2lvbiBQcml2YXRlIE1ldGhvZHNcclxuXHJcbiAgICBwcml2YXRlIFVwZGF0ZUxhYmVsVG9Db250cm9sKCk6IHZvaWQge1xyXG4gICAgICAgIC8vIEhBQ0s6IEFkZCBhZGRpdGlvbiBwcm9wZXJ0eSB0byBGb3JtQ29udHJvbC4gQ2FuIGJlIGZpeGVkIGlmIHNvbHV0aW9uIGZvciB0aWNrZXQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzE5Njg2XHJcbiAgICAgICAgaWYgKHRoaXMubmdDb250cm9sKSB7XHJcbiAgICAgICAgICAgICh0aGlzLm5nQ29udHJvbCBhcyB1bmtub3duIGFzIElBYnN0cmFjdENvbnRyb2xMYWJlbEV4dGVuc2lvbikuY29udHJvbGxhYmVsID0gdGhpcy5sYWJlbDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZXQgY29tcG9uZW50IGhlaWdodCBmcm9tIHByb3BlcnR5IG9yIHBhcmVudCBsYXlvdXQgY29udHJvbFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHNldENvbXBvbmVudEhlaWdodCgpIHtcclxuICAgICAgICAvLyBzZXQgc2l6ZSBleHRyYSBzbWFsbFxyXG4gICAgICAgIGlmICghdGhpcy5jb21wb25lbnRIZWlnaHQpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZm9ybWxheW91dD8uY29tcG9uZW50SGVpZ2h0KSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbXBvbmVudEhlaWdodCA9IHRoaXMuZm9ybWxheW91dC5jb21wb25lbnRIZWlnaHQ7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbXBvbmVudEhlaWdodCA9IHRoaXMuY29uZmlndXJhdGlvblNlcnZpY2UuQ29tcG9uZW50SGVpZ2h0O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2V0IG1vZGUgZm9yIGhlbHB0ZXh0LiBDYW4gYmUgdG9vbHRpcCBvciB0ZXh0XHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgc2V0SGVscFRleHRNb2RlKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5oZWxwdGV4dG1vZGUpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZm9ybWxheW91dD8uaGVscHRleHRtb2RlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmhlbHB0ZXh0bW9kZSA9IHRoaXMuZm9ybWxheW91dC5oZWxwdGV4dG1vZGU7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmhlbHB0ZXh0bW9kZSA9IHRoaXMuY29uZmlndXJhdGlvblNlcnZpY2UuSGVscHRleHRNb2RlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2V0IGFkYXB0aXZlIGxhYmVsIHByb3BlcnR5IGZyb20gcGFyZW50IGxheW91dCBjb250cm9sXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgc2V0SXNBZGFwdGl2ZUxhYmVsKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5pc0FkYXB0aXZlTGFiZWwpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZm9ybWxheW91dD8uaXNBZGFwdGl2ZUxhYmVsICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaXNBZGFwdGl2ZUxhYmVsID0gdGhpcy5mb3JtbGF5b3V0LmlzQWRhcHRpdmVMYWJlbDtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaXNBZGFwdGl2ZUxhYmVsID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZXQgbGFiZWwgc2l6ZXMgZnJvbSBwcm9wZXJ0eSBvciBwYXJlbnQgbGF5b3V0IGNvbnRyb2xcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBzZXRMYWJlbFNpemVzKCkge1xyXG4gICAgICAgIC8vIHNldCBzaXplIGV4dHJhIHNtYWxsXHJcbiAgICAgICAgaWYgKCF0aGlzLmxhYmVsU2l6ZVhzKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmZvcm1sYXlvdXQ/LmxhYmVsU2l6ZVhzKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxhYmVsU2l6ZVhzID0gdGhpcy5mb3JtbGF5b3V0LmxhYmVsU2l6ZVhzO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sYWJlbFNpemVYcyA9IHRoaXMuY29uZmlndXJhdGlvblNlcnZpY2UuTGFiZWxTaXplWHM7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIHNldCBzaXplIHNtYWxsXHJcbiAgICAgICAgaWYgKCF0aGlzLmxhYmVsU2l6ZVNtKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmZvcm1sYXlvdXQ/LmxhYmVsU2l6ZVNtKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxhYmVsU2l6ZVNtID0gdGhpcy5mb3JtbGF5b3V0LmxhYmVsU2l6ZVNtO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sYWJlbFNpemVTbSA9IHRoaXMuY29uZmlndXJhdGlvblNlcnZpY2UuTGFiZWxTaXplU207XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIHNldCBzaXplIG1lZGl1bVxyXG4gICAgICAgIGlmICghdGhpcy5sYWJlbFNpemVNZCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5mb3JtbGF5b3V0Py5sYWJlbFNpemVNZCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sYWJlbFNpemVNZCA9IHRoaXMuZm9ybWxheW91dC5sYWJlbFNpemVNZDtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubGFiZWxTaXplTWQgPSB0aGlzLmNvbmZpZ3VyYXRpb25TZXJ2aWNlLkxhYmVsU2l6ZU1kO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBzZXQgc2l6ZSBsYXJnZVxyXG4gICAgICAgIGlmICghdGhpcy5sYWJlbFNpemVMZykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5mb3JtbGF5b3V0Py5sYWJlbFNpemVMZykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sYWJlbFNpemVMZyA9IHRoaXMuZm9ybWxheW91dC5sYWJlbFNpemVMZztcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubGFiZWxTaXplTGcgPSB0aGlzLmNvbmZpZ3VyYXRpb25TZXJ2aWNlLkxhYmVsU2l6ZUxnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBzZXQgc2l6ZSBleHRyYSBsYXJnZVxyXG4gICAgICAgIGlmICghdGhpcy5sYWJlbFNpemVYbCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5mb3JtbGF5b3V0Py5sYWJlbFNpemVYbCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sYWJlbFNpemVYbCA9IHRoaXMuZm9ybWxheW91dC5sYWJlbFNpemVYbDtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubGFiZWxTaXplWGwgPSB0aGlzLmNvbmZpZ3VyYXRpb25TZXJ2aWNlLkxhYmVsU2l6ZVhsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBzZXQgc2l6ZSBleHRyYSBleHRyYSBsYXJnZVxyXG4gICAgICAgIGlmICghdGhpcy5sYWJlbFNpemVYeGwpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZm9ybWxheW91dD8ubGFiZWxTaXplWHhsKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxhYmVsU2l6ZVh4bCA9IHRoaXMuZm9ybWxheW91dC5sYWJlbFNpemVYeGw7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxhYmVsU2l6ZVh4bCA9IHRoaXMuY29uZmlndXJhdGlvblNlcnZpY2UuTGFiZWxTaXplWHhsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc2V0TGFiZWxTcGxpdE1vZGUoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnNwbGl0bGFiZWxhbmRoZWxwdGV4dCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5mb3JtbGF5b3V0Py5zcGxpdGxhYmVsYW5kaGVscHRleHQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3BsaXRsYWJlbGFuZGhlbHB0ZXh0ID0gdGhpcy5mb3JtbGF5b3V0LnNwbGl0bGFiZWxhbmRoZWxwdGV4dDtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3BsaXRsYWJlbGFuZGhlbHB0ZXh0ID0gdGhpcy5jb25maWd1cmF0aW9uU2VydmljZS5TcGxpdExhYmVsQW5kSGVscHRleHQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gI2VuZHJlZ2lvbiBQcml2YXRlIE1ldGhvZHNcclxufVxyXG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dG1lbnUuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IkM6L1Byb2pla3RlL3NpbXBsZWFuZ3VsYXJjb250cm9scy1uZzEwL2NoLmpuZXR3b3JrLnNhYy1jb250cm9scy9wcm9qZWN0cy9zYWMtY29tbW9uL3NyYy8iLCJzb3VyY2VzIjpbImNvbnRyb2xzL2NvbnRleHRtZW51L2NvbnRleHRtZW51LmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBJU2FjQ29udGV4dG1lbnVDb21tb24ge1xyXG4gICAgLy8gI3JlZ2lvbiBNZXRob2RzXHJcblxyXG4gICAgY2xvc2UoKTogdm9pZDtcclxuXHJcbiAgICAvLyAjZW5kcmVnaW9uIE1ldGhvZHNcclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview This file was generated by the Angular template compiler. Do not edit.
|
|
3
|
+
*
|
|
4
|
+
* @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes,extraRequire}
|
|
5
|
+
* tslint:disable
|
|
6
|
+
*/
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dG1lbnUuaW50ZXJmYWNlLm5nZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiJDOi9Qcm9qZWt0ZS9zaW1wbGVhbmd1bGFyY29udHJvbHMtbmcxMC9jaC5qbmV0d29yay5zYWMtY29udHJvbHMvcHJvamVjdHMvc2FjLWNvbW1vbi9zcmMvIiwic291cmNlcyI6WyJjb250cm9scy9jb250ZXh0bWVudS9jb250ZXh0bWVudS5pbnRlcmZhY2UubmdmYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBpMCBmcm9tICdAYW5ndWxhci9jb3JlJztcbmkwLkNvbXBvbmVudEZhY3Rvcnk7XG4iXX0=
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { DOCUMENT } from '@angular/common';
|
|
2
|
-
import { ContentChild, Directive, ElementRef, HostListener, Inject, Injector, Input, NgZone, Renderer2, TemplateRef, ViewChild, } from '@angular/core';
|
|
3
1
|
import { SACICON_SERVICE, SacDefaultIconService } from '../../services';
|
|
4
2
|
import { positionElements } from '../../utilities/positioning';
|
|
5
3
|
import { SacContextmenuAnchorCommon } from './contextmenuanchor';
|
|
6
4
|
import { SacContextMenuContrainerCommon } from './contextmenucontainer';
|
|
5
|
+
import { SacContextmenuItemCommon } from './contextmenuitem';
|
|
6
|
+
import { DOCUMENT } from '@angular/common';
|
|
7
|
+
import { ContentChild, ContentChildren, Directive, ElementRef, HostListener, Inject, Injector, Input, NgZone, QueryList, Renderer2, TemplateRef, ViewChild, forwardRef, } from '@angular/core';
|
|
7
8
|
/**
|
|
8
9
|
* Base Context Menü Element. Die Logik wurde aus NG-BOOTSTRAP übernommen.
|
|
9
10
|
*/
|
|
@@ -52,12 +53,7 @@ export class SacContextmenuCommon {
|
|
|
52
53
|
*
|
|
53
54
|
* Please see the [positioning overview](#/positioning) for more details.
|
|
54
55
|
*/
|
|
55
|
-
this.placement = [
|
|
56
|
-
'bottom-left',
|
|
57
|
-
'bottom-right',
|
|
58
|
-
'top-left',
|
|
59
|
-
'top-right',
|
|
60
|
-
];
|
|
56
|
+
this.placement = ['bottom-left', 'bottom-right', 'top-left', 'top-right'];
|
|
61
57
|
this.zoneSubscription = this.ngZone.onStable.subscribe(() => {
|
|
62
58
|
this._positionMenu();
|
|
63
59
|
});
|
|
@@ -73,17 +69,6 @@ export class SacContextmenuCommon {
|
|
|
73
69
|
}
|
|
74
70
|
// #endregion Public Getters And Setters
|
|
75
71
|
// #region Public Methods
|
|
76
|
-
/**
|
|
77
|
-
* HostListener um das Dropdown zu schliessen wenn nicht auf das Element geklickt wird.
|
|
78
|
-
*/
|
|
79
|
-
onClick(targetElement) {
|
|
80
|
-
const anchor = this._anchor || this._anchorTemplate;
|
|
81
|
-
if (this._menu &&
|
|
82
|
-
!this._menu.nativeElement.contains(targetElement) &&
|
|
83
|
-
!anchor.nativeElement.contains(targetElement)) {
|
|
84
|
-
this.close();
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
72
|
/**
|
|
88
73
|
* Schliesst das Dropdown
|
|
89
74
|
*/
|
|
@@ -91,6 +76,9 @@ export class SacContextmenuCommon {
|
|
|
91
76
|
this._resetContainer();
|
|
92
77
|
this.isopen = false;
|
|
93
78
|
}
|
|
79
|
+
ngAfterContentInit() {
|
|
80
|
+
this.menuitems.forEach((button) => (button.contextmenu = this));
|
|
81
|
+
}
|
|
94
82
|
/**
|
|
95
83
|
* Event wenn Component entfernt wird.
|
|
96
84
|
*/
|
|
@@ -100,6 +88,17 @@ export class SacContextmenuCommon {
|
|
|
100
88
|
}
|
|
101
89
|
this.zoneSubscription.unsubscribe();
|
|
102
90
|
}
|
|
91
|
+
/**
|
|
92
|
+
* HostListener um das Dropdown zu schliessen wenn nicht auf das Element geklickt wird.
|
|
93
|
+
*/
|
|
94
|
+
onClick(targetElement) {
|
|
95
|
+
const anchor = this._anchor || this._anchorTemplate;
|
|
96
|
+
if (this._menu &&
|
|
97
|
+
!this._menu.nativeElement.contains(targetElement) &&
|
|
98
|
+
!anchor.nativeElement.contains(targetElement)) {
|
|
99
|
+
this.close();
|
|
100
|
+
}
|
|
101
|
+
}
|
|
103
102
|
/**
|
|
104
103
|
* Öffnet das Dropdown / Zeigt das Menü an.
|
|
105
104
|
*/
|
|
@@ -142,8 +141,7 @@ export class SacContextmenuCommon {
|
|
|
142
141
|
if (container === 'body') {
|
|
143
142
|
const renderer = this.renderer;
|
|
144
143
|
const dropdownMenuElement = this._menu.nativeElement;
|
|
145
|
-
const bodyContainer = (this.bodyContainer =
|
|
146
|
-
this.bodyContainer || renderer.createElement('div'));
|
|
144
|
+
const bodyContainer = (this.bodyContainer = this.bodyContainer || renderer.createElement('div'));
|
|
147
145
|
// Override some styles to have the positioning working
|
|
148
146
|
renderer.setStyle(bodyContainer, 'position', 'absolute');
|
|
149
147
|
renderer.setStyle(dropdownMenuElement, 'position', 'static');
|
|
@@ -181,14 +179,15 @@ SacContextmenuCommon.ctorParameters = () => [
|
|
|
181
179
|
{ type: Injector }
|
|
182
180
|
];
|
|
183
181
|
SacContextmenuCommon.propDecorators = {
|
|
184
|
-
_anchorTemplate: [{ type: ContentChild, args: [SacContextmenuAnchorCommon, { static: false },] }],
|
|
185
182
|
_anchor: [{ type: ViewChild, args: [SacContextmenuAnchorCommon, { static: false },] }],
|
|
183
|
+
_anchorTemplate: [{ type: ContentChild, args: [SacContextmenuAnchorCommon, { static: false },] }],
|
|
186
184
|
_menu: [{ type: ViewChild, args: [SacContextMenuContrainerCommon, { static: false },] }],
|
|
187
185
|
buttontemplate: [{ type: Input }],
|
|
188
186
|
container: [{ type: Input }],
|
|
189
187
|
cssclass: [{ type: Input }],
|
|
190
188
|
isopen: [{ type: Input }],
|
|
189
|
+
menuitems: [{ type: ContentChildren, args: [forwardRef(() => SacContextmenuItemCommon),] }],
|
|
191
190
|
placement: [{ type: Input }],
|
|
192
191
|
onClick: [{ type: HostListener, args: ['document:click', ['$event.target'],] }]
|
|
193
192
|
};
|
|
194
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dG1lbnUuanMiLCJzb3VyY2VSb290IjoiQzovUHJvamVrdGUvc2ltcGxlYW5ndWxhcmNvbnRyb2xzLW5nMTAvY2guam5ldHdvcmsuc2FjLWNvbnRyb2xzL3Byb2plY3RzL3NhYy1jb21tb24vc3JjLyIsInNvdXJjZXMiOlsiY29udHJvbHMvY29udGV4dG1lbnUvY29udGV4dG1lbnUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFDTCxZQUFZLEVBQ1osU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLFFBQVEsRUFDUixLQUFLLEVBQ0wsTUFBTSxFQUVOLFNBQVMsRUFDVCxXQUFXLEVBQ1gsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxlQUFlLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RSxPQUFPLEVBQWtCLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0UsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakUsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFeEU7O0dBRUc7QUFFSCxNQUFNLE9BQU8sb0JBQW9CO0lBeUUvQix3QkFBd0I7SUFFeEIsdUJBQXVCO0lBRXZCOzs7Ozs7O09BT0c7SUFDSCxZQUM0QixRQUFhLEVBQy9CLE1BQWMsRUFDZCxVQUFtQyxFQUNuQyxRQUFtQixFQUMzQixRQUFrQjtRQUpRLGFBQVEsR0FBUixRQUFRLENBQUs7UUFDL0IsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLGVBQVUsR0FBVixVQUFVLENBQXlCO1FBQ25DLGFBQVEsR0FBUixRQUFRLENBQVc7UUF0RTdCOztXQUVHO1FBQ0ssa0JBQWEsR0FBdUIsSUFBSSxDQUFDO1FBZ0JqRDs7V0FFRztRQUVJLGNBQVMsR0FBa0Is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QVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDN0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7U0FDM0I7SUFDSCxDQUFDOzs7WUFuUEYsU0FBUzs7OzRDQXVGTCxNQUFNLFNBQUMsUUFBUTtZQXZHbEIsTUFBTTtZQUxOLFVBQVU7WUFPVixTQUFTO1lBSlQsUUFBUTs7OzhCQXlCUCxZQUFZLFNBQUMsMEJBQTBCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO3NCQUsxRCxTQUFTLFNBQUMsMEJBQTBCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO29CQUt2RCxTQUFTLFNBQUMsOEJBQThCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFOzZCQW9CM0QsS0FBSzt3QkFLTCxLQUFLO3VCQUtMLEtBQUs7cUJBS0wsS0FBSzt3QkFlTCxLQUFLO3NCQXNETCxZQUFZLFNBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxlQUFlLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7XHJcbiAgQ29udGVudENoaWxkLFxyXG4gIERpcmVjdGl2ZSxcclxuICBFbGVtZW50UmVmLFxyXG4gIEhvc3RMaXN0ZW5lcixcclxuICBJbmplY3QsXHJcbiAgSW5qZWN0b3IsXHJcbiAgSW5wdXQsXHJcbiAgTmdab25lLFxyXG4gIE9uRGVzdHJveSxcclxuICBSZW5kZXJlcjIsXHJcbiAgVGVtcGxhdGVSZWYsXHJcbiAgVmlld0NoaWxkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgSVNhY0ljb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JU2FjSWNvblNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTQUNJQ09OX1NFUlZJQ0UsIFNhY0RlZmF1bHRJY29uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcclxuaW1wb3J0IHsgUGxhY2VtZW50QXJyYXksIHBvc2l0aW9uRWxlbWVudHMgfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvcG9zaXRpb25pbmcnO1xyXG5pbXBvcnQgeyBTYWNDb250ZXh0bWVudUFuY2hvckNvbW1vbiB9IGZyb20gJy4vY29udGV4dG1lbnVhbmNob3InO1xyXG5pbXBvcnQgeyBTYWNDb250ZXh0TWVudUNvbnRyYWluZXJDb21tb24gfSBmcm9tICcuL2NvbnRleHRtZW51Y29udGFpbmVyJztcclxuXHJcbi8qKlxyXG4gKiBCYXNlIENvbnRleHQgTWVuw7wgRWxlbWVudC4gRGllIExvZ2lrIHd1cmRlIGF1cyBORy1CT09UU1RSQVAgw7xiZXJub21tZW4uXHJcbiAqL1xyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGNsYXNzIFNhY0NvbnRleHRtZW51Q29tbW9uIGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuICAvLyAjcmVnaW9uIFByb3BlcnRpZXNcclxuXHJcbiAgLyoqXHJcbiAgICogQnV0dG9uIGbDvHIgT3Blbi9DbG9zZSBFdmVudCBhdXMgVGVtcGxhdGVcclxuICAgKi9cclxuICBAQ29udGVudENoaWxkKFNhY0NvbnRleHRtZW51QW5jaG9yQ29tbW9uLCB7IHN0YXRpYzogZmFsc2UgfSlcclxuICBwcml2YXRlIF9hbmNob3JUZW1wbGF0ZTogU2FjQ29udGV4dG1lbnVBbmNob3JDb21tb247XHJcbiAgLyoqXHJcbiAgICogQnV0dG9uIGbDvHIgT3Blbi9DbG9zZSBFdmVudFxyXG4gICAqL1xyXG4gIEBWaWV3Q2hpbGQoU2FjQ29udGV4dG1lbnVBbmNob3JDb21tb24sIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gIHByaXZhdGUgX2FuY2hvcjogU2FjQ29udGV4dG1lbnVBbmNob3JDb21tb247XHJcbiAgLyoqXHJcbiAgICogQ29udGFpbmVyIEVsZW1lbnQgZsO8ciBEcm9wZG93blxyXG4gICAqL1xyXG4gIEBWaWV3Q2hpbGQoU2FjQ29udGV4dE1lbnVDb250cmFpbmVyQ29tbW9uLCB7IHN0YXRpYzogZmFsc2UgfSlcclxuICBwcml2YXRlIF9tZW51OiBTYWNDb250ZXh0TWVudUNvbnRyYWluZXJDb21tb247XHJcblxyXG4gIC8qKlxyXG4gICAqIEJvZHkgSFRNTCBFbGVtZW50XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBib2R5Q29udGFpbmVyOiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xyXG4gIC8qKlxyXG4gICAqIFpvbmUgU3Vic2NyaXB0aW9uIGbDvHIgUG9zdGl0b25pZXJ1bmcgZGVzIEVsZW1lbnRzXHJcbiAgICovXHJcbiAgcHJpdmF0ZSB6b25lU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcblxyXG4gIC8qKlxyXG4gICAqIGljb24gc2VydmljZVxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBpY29uU2VydmljZTogSVNhY0ljb25TZXJ2aWNlO1xyXG5cclxuICAvKipcclxuICAgKiBDdXN0b20gSFRNTCBUZW1wbGF0ZSBmw7xyIERyb3Bkb3duIEJ1dHRvbi4gQnV0dG9uIG11c3MgZGVuIE1hcmtlciBcIm5nQ29udGV4dG1lbnVBbmNob3JcIiBiZWluaGFsdGVuLCBkYW1pdCBkYXMgQ29udHJvbCBrb3JyZWt0IGZ1bmt0aW9uaWVydC5cclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBidXR0b250ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuICAvKipcclxuICAgKiBDb250YWluZXIgYW4gd2VsY2hlbSBkaWUgUG9zaXRpb24gYXVzZ2VyaWNodGV0IHdpcmQuIEFrdHVlbGwgd2lyZCBudW4gQm9keSBTdXBwb3J0ZWRcclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBjb250YWluZXI6IG51bGwgfCAnYm9keScgPSAnYm9keSc7XHJcbiAgLyoqXHJcbiAgICogRXh0cmEgQ1NTIEtsYXNzZW4gZsO8ciBkYXMgQ29udHJvbFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGNzc2NsYXNzOiBzdHJpbmcgPSAnJztcclxuICAvKipcclxuICAgKiBEZWZpbmllcnQgb2IgZGFzIERyb3Bkb3duIG9mZmVuIGlzdC5cclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBpc29wZW46IGJvb2xlYW4gPSBmYWxzZTtcclxuICAvKipcclxuICAgKiBUaGUgcHJlZmVycmVkIHBsYWNlbWVudCBvZiB0aGUgZHJvcGRvd24uXHJcbiAgICpcclxuICAgKiBQb3NzaWJsZSB2YWx1ZXMgYXJlIGBcInRvcFwiYCwgYFwidG9wLWxlZnRcImAsIGBcInRvcC1yaWdodFwiYCwgYFwiYm90dG9tXCJgLCBgXCJib3R0b20tbGVmdFwiYCxcclxuICAgKiBgXCJib3R0b20tcmlnaHRcImAsIGBcImxlZnRcImAsIGBcImxlZnQtdG9wXCJgLCBgXCJsZWZ0LWJvdHRvbVwiYCwgYFwicmlnaHRcImAsIGBcInJpZ2h0LXRvcFwiYCxcclxuICAgKiBgXCJyaWdodC1ib3R0b21cImBcclxuICAgKlxyXG4gICAqIEFjY2VwdHMgYW4gYXJyYXkgb2Ygc3RyaW5ncyBvciBhIHN0cmluZyB3aXRoIHNwYWNlIHNlcGFyYXRlZCBwb3NzaWJsZSB2YWx1ZXMuXHJcbiAgICpcclxuICAgKiBUaGUgZGVmYXVsdCBvcmRlciBvZiBwcmVmZXJlbmNlIGlzIGBcImJvdHRvbS1sZWZ0IGJvdHRvbS1yaWdodCB0b3AtbGVmdCB0b3AtcmlnaHRcImBcclxuICAgKlxyXG4gICAqIFBsZWFzZSBzZWUgdGhlIFtwb3NpdGlvbmluZyBvdmVydmlld10oIy9wb3NpdGlvbmluZykgZm9yIG1vcmUgZGV0YWlscy5cclxuICAgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgcGxhY2VtZW50OiBQbGFjZW1lbnRBcnJheSA9IFtcclxuICAgICdib3R0b20tbGVmdCcsXHJcbiAgICAnYm90dG9tLXJpZ2h0JyxcclxuICAgICd0b3AtbGVmdCcsXHJcbiAgICAndG9wLXJpZ2h0JyxcclxuICBdO1xyXG5cclxuICAvLyAjZW5kcmVnaW9uIFByb3BlcnRpZXNcclxuXHJcbiAgLy8gI3JlZ2lvbiBDb25zdHJ1Y3RvcnNcclxuXHJcbiAgLyoqXHJcbiAgICogS29uc3RydWt0b3JcclxuICAgKiBAcGFyYW0gZG9jdW1lbnQgSFRNTCBEb2N1bWVudCBFbGVtZW50XHJcbiAgICogQHBhcmFtIG5nWm9uZSBBbmd1bGFyIFpvbmUgU2VydmljZVxyXG4gICAqIEBwYXJhbSBlbGVtZW50UmVmIEhUTUwgRWxlbWVudCBkZXMgYWt0dWVsbGVuIENvbnRyb2xzXHJcbiAgICogQHBhcmFtIHJlbmRlcmVyIEFuZ3VsYXIgUmVuZGVyaW5nIFNlcnZpY2VcclxuICAgKiBAcGFyYW0gaW5qZWN0b3IgaW5qZWN0b3IgdG8gcmVzb2x2ZSB0aGUgaWNvbiBzZXJ2aWNlXHJcbiAgICovXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBhbnksXHJcbiAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxyXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcclxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcclxuICAgIGluamVjdG9yOiBJbmplY3RvclxyXG4gICkge1xyXG4gICAgdGhpcy56b25lU3Vic2NyaXB0aW9uID0gdGhpcy5uZ1pvbmUub25TdGFibGUuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5fcG9zaXRpb25NZW51KCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmljb25TZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KFxyXG4gICAgICBTQUNJQ09OX1NFUlZJQ0UsXHJcbiAgICAgIG5ldyBTYWNEZWZhdWx0SWNvblNlcnZpY2UoKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8vICNlbmRyZWdpb24gQ29uc3RydWN0b3JzXHJcblxyXG4gIC8vICNyZWdpb24gUHVibGljIEdldHRlcnMgQW5kIFNldHRlcnNcclxuXHJcbiAgLyoqXHJcbiAgICogaWNvbiBmb3IgZGVmYXVsdCBjb250ZXh0IG1lbsO8IGJ1dHRvblxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXQgSWNvbkNvbnRleHRNZW51KCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5pY29uU2VydmljZS5Db250ZXh0TWVudU9wZW5JY29uO1xyXG4gIH1cclxuXHJcbiAgLy8gI2VuZHJlZ2lvbiBQdWJsaWMgR2V0dGVycyBBbmQgU2V0dGVyc1xyXG5cclxuICAvLyAjcmVnaW9uIFB1YmxpYyBNZXRob2RzXHJcblxyXG4gIC8qKlxyXG4gICAqIEhvc3RMaXN0ZW5lciB1bSBkYXMgRHJvcGRvd24genUgc2NobGllc3NlbiB3ZW5uIG5pY2h0IGF1ZiBkYXMgRWxlbWVudCBnZWtsaWNrdCB3aXJkLlxyXG4gICAqL1xyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQudGFyZ2V0J10pXHJcbiAgLyoqXHJcbiAgICogQ2xpY2sgRXZlbnRcclxuICAgKi9cclxuICBwdWJsaWMgb25DbGljayh0YXJnZXRFbGVtZW50KSB7XHJcbiAgICBjb25zdCBhbmNob3I6IFNhY0NvbnRleHRtZW51QW5jaG9yQ29tbW9uID1cclxuICAgICAgdGhpcy5fYW5jaG9yIHx8IHRoaXMuX2FuY2hvclRlbXBsYXRlO1xyXG5cclxuICAgIGlmIChcclxuICAgICAgdGhpcy5fbWVudSAmJlxyXG4gICAgICAhdGhpcy5fbWVudS5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKHRhcmdldEVsZW1lbnQpICYmXHJcbiAgICAgICFhbmNob3IubmF0aXZlRWxlbWVudC5jb250YWlucyh0YXJnZXRFbGVtZW50KVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuY2xvc2UoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNjaGxpZXNzdCBkYXMgRHJvcGRvd25cclxuICAgKi9cclxuICBwdWJsaWMgY2xvc2UoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9yZXNldENvbnRhaW5lcigpO1xyXG4gICAgdGhpcy5pc29wZW4gPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEV2ZW50IHdlbm4gQ29tcG9uZW50IGVudGZlcm50IHdpcmQuXHJcbiAgICovXHJcbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaXNvcGVuKSB7XHJcbiAgICAgIHRoaXMuY2xvc2UoKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnpvbmVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIMOWZmZuZXQgZGFzIERyb3Bkb3duIC8gWmVpZ3QgZGFzIE1lbsO8IGFuLlxyXG4gICAqL1xyXG4gIHB1YmxpYyBvcGVuKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fYXBwbHlDb250YWluZXIodGhpcy5jb250YWluZXIpO1xyXG4gICAgdGhpcy5pc29wZW4gPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVG9nZ2xlIHZvbiBEcm9wZG93blxyXG4gICAqL1xyXG4gIHB1YmxpYyB0b2dnbGUoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5pc29wZW4pIHtcclxuICAgICAgdGhpcy5jbG9zZSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5vcGVuKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyAjZW5kcmVnaW9uIFB1YmxpYyBNZXRob2RzXHJcblxyXG4gIC8vICNyZWdpb24gUHJvdGVjdGVkIE1ldGhvZHNcclxuXHJcbiAgLyoqXHJcbiAgICogU2V0enQgZGllIFBvc2l0aW9uIGRlcyBNZW7DvHMgaW0gTWFya3VwXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIF9wb3NpdGlvbk1lbnUoKSB7XHJcbiAgICBjb25zdCBhbmNob3I6IFNhY0NvbnRleHRtZW51QW5jaG9yQ29tbW9uID1cclxuICAgICAgdGhpcy5fYW5jaG9yIHx8IHRoaXMuX2FuY2hvclRlbXBsYXRlO1xyXG5cclxuICAgIGlmIChhbmNob3IgJiYgdGhpcy5fbWVudSkge1xyXG4gICAgICBwb3NpdGlvbkVsZW1lbnRzKFxyXG4gICAgICAgIGFuY2hvci5uYXRpdmVFbGVtZW50LFxyXG4gICAgICAgIHRoaXMuYm9keUNvbnRhaW5lciB8fCB0aGlzLl9tZW51Lm5hdGl2ZUVsZW1lbnQsXHJcbiAgICAgICAgdGhpcy5wbGFjZW1lbnQsXHJcbiAgICAgICAgdGhpcy5jb250YWluZXIgPT09ICdib2R5J1xyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gI2VuZHJlZ2lvbiBQcm90ZWN0ZWQgTWV0aG9kc1xyXG5cclxuICAvLyAjcmVnaW9uIFByaXZhdGUgTWV0aG9kc1xyXG5cclxuICAvKipcclxuICAgKiBTZXR6dCBkaWUgUG9zaXRpb24gZGVzIE1lbsO8cyBpbm5lcmhhbGIgZGVyIFNlaXRlLiBEaWUgQXVzcmljaHR1bmcgcGFzc2llcnQgaW5uZXJoYWxiIGRlciBTZWl0ZVxyXG4gICAqIGRhbWl0IGRhcyBNZW7DvCBpbm5lcmhhbGIgZWluZXMgRGlhbG9ncyBzYXViZXIgZnVua3Rpb25pb25pZXJ0LlxyXG4gICAqIEBwYXJhbSBjb250YWluZXIgRGVmaW5pZXJ0IHdvIGRhcyBNZW7DvCBhdXNnZXJpY2h0ZXQgd2lyZC4gSW0gTW9tZW50IG51ciBCT0RZIFN1cHBvcnRlZFxyXG4gICAqL1xyXG4gIHByaXZhdGUgX2FwcGx5Q29udGFpbmVyKGNvbnRhaW5lcjogbnVsbCB8ICdib2R5JyA9IG51bGwpIHtcclxuICAgIC8vIFJlc2V0IENsYXNzZXMgb24gQ29udGFpbmVyXHJcbiAgICB0aGlzLl9yZXNldENvbnRhaW5lcigpO1xyXG5cclxuICAgIGlmIChjb250YWluZXIgPT09ICdib2R5Jykge1xyXG4gICAgICBjb25zdCByZW5kZXJlciA9IHRoaXMucmVuZGVyZXI7XHJcbiAgICAgIGNvbnN0IGRyb3Bkb3duTWVudUVsZW1lbnQgPSB0aGlzLl9tZW51Lm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICAgIGNvbnN0IGJvZHlDb250YWluZXIgPSAodGhpcy5ib2R5Q29udGFpbmVyID1cclxuICAgICAgICB0aGlzLmJvZHlDb250YWluZXIgfHwgcmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnZGl2JykpO1xyXG5cclxuICAgICAgLy8gT3ZlcnJpZGUgc29tZSBzdHlsZXMgdG8gaGF2ZSB0aGUgcG9zaXRpb25pbmcgd29ya2luZ1xyXG4gICAgICByZW5kZXJlci5zZXRTdHlsZShib2R5Q29udGFpbmVyLCAncG9zaXRpb24nLCAnYWJzb2x1dGUnKTtcclxuICAgICAgcmVuZGVyZXIuc2V0U3R5bGUoZHJvcGRvd25NZW51RWxlbWVudCwgJ3Bvc2l0aW9uJywgJ3N0YXRpYycpO1xyXG4gICAgICByZW5kZXJlci5zZXRTdHlsZShib2R5Q29udGFpbmVyLCAnei1pbmRleCcsICcxMDUwJyk7XHJcblxyXG4gICAgICByZW5kZXJlci5hcHBlbmRDaGlsZChib2R5Q29udGFpbmVyLCBkcm9wZG93bk1lbnVFbGVtZW50KTtcclxuICAgICAgcmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5kb2N1bWVudC5ib2R5LCBib2R5Q29udGFpbmVyKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHp0IGRpZSBDU1MgS2xhc3NlbiBhdWYgZGVtIE1lbsO8IENvbnRhaW5lciBhdWYgZGVuIFN0YW5kYXJkIHp1csO8Y2tcclxuICAgKi9cclxuICBwcml2YXRlIF9yZXNldENvbnRhaW5lcigpIHtcclxuICAgIGNvbnN0IHJlbmRlcmVyID0gdGhpcy5yZW5kZXJlcjtcclxuICAgIGlmICh0aGlzLl9tZW51KSB7XHJcbiAgICAgIGNvbnN0IGRyb3Bkb3duRWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xyXG4gICAgICBjb25zdCBkcm9wZG93bk1lbnVFbGVtZW50ID0gdGhpcy5fbWVudS5uYXRpdmVFbGVtZW50O1xyXG5cclxuICAgICAgcmVuZGVyZXIuYXBwZW5kQ2hpbGQoZHJvcGRvd25FbGVtZW50LCBkcm9wZG93bk1lbnVFbGVtZW50KTtcclxuICAgICAgcmVuZGVyZXIucmVtb3ZlU3R5bGUoZHJvcGRvd25NZW51RWxlbWVudCwgJ3Bvc2l0aW9uJyk7XHJcbiAgICAgIHJlbmRlcmVyLnJlbW92ZVN0eWxlKGRyb3Bkb3duTWVudUVsZW1lbnQsICd0cmFuc2Zvcm0nKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmJvZHlDb250YWluZXIpIHtcclxuICAgICAgcmVuZGVyZXIucmVtb3ZlQ2hpbGQodGhpcy5kb2N1bWVudC5ib2R5LCB0aGlzLmJvZHlDb250YWluZXIpO1xyXG4gICAgICB0aGlzLmJvZHlDb250YWluZXIgPSBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gI2VuZHJlZ2lvbiBQcml2YXRlIE1ldGhvZHNcclxufVxyXG4iXX0=
|
|
193
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dG1lbnUuanMiLCJzb3VyY2VSb290IjoiQzovUHJvamVrdGUvc2ltcGxlYW5ndWxhcmNvbnRyb2xzLW5nMTAvY2guam5ldHdvcmsuc2FjLWNvbnRyb2xzL3Byb2plY3RzL3NhYy1jb21tb24vc3JjLyIsInNvdXJjZXMiOlsiY29udHJvbHMvY29udGV4dG1lbnUvY29udGV4dG1lbnUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGVBQWUsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hFLE9BQU8sRUFBa0IsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUUvRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUVILFlBQVksRUFDWixlQUFlLEVBQ2YsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLFFBQVEsRUFDUixLQUFLLEVBQ0wsTUFBTSxFQUVOLFNBQVMsRUFDVCxTQUFTLEVBQ1QsV0FBVyxFQUNYLFNBQVMsRUFDVCxVQUFVLEdBQ2IsTUFBTSxlQUFlLENBQUM7QUFHdkI7O0dBRUc7QUFFSCxNQUFNLE9BQU8sb0JBQW9CO0lBaUY3Qix3QkFBd0I7SUFFeEIsdUJBQXVCO0lBRXZCOzs7Ozs7O09BT0c7SUFDSCxZQUN1QyxRQUFhLEVBQy9CLE1BQWMsRUFDZCxVQUFtQyxFQUNuQyxRQUFtQixFQUNwQyxRQUFrQjtRQUppQixhQUFRLEdBQVIsUUFBUSxDQUFLO1FBQy9CLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxlQUFVLEdBQVYsVUFBVSxDQUF5QjtRQUNuQyxhQUFRLEdBQVIsUUFB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QVEsQ0FBQyxXQUFXLENBQUMsZUFBZSxFQUFFLG1CQUFtQixDQUFDLENBQUM7WUFDM0QsUUFBUSxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsRUFBRSxVQUFVLENBQUMsQ0FBQztZQUN0RCxRQUFRLENBQUMsV0FBVyxDQUFDLG1CQUFtQixFQUFFLFdBQVcsQ0FBQyxDQUFDO1NBQzFEO1FBQ0QsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3BCLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQzdELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1NBQzdCO0lBQ0wsQ0FBQzs7O1lBelBKLFNBQVM7Ozs0Q0ErRkQsTUFBTSxTQUFDLFFBQVE7WUE1R3BCLE1BQU07WUFMTixVQUFVO1lBUVYsU0FBUztZQUxULFFBQVE7OztzQkFzQlAsU0FBUyxTQUFDLDBCQUEwQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTs4QkFNdkQsWUFBWSxTQUFDLDBCQUEwQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtvQkFNMUQsU0FBUyxTQUFDLDhCQUE4QixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTs2QkFxQjNELEtBQUs7d0JBTUwsS0FBSzt1QkFNTCxLQUFLO3FCQU1MLEtBQUs7d0JBTUwsZUFBZSxTQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQzt3QkFnQjFELEtBQUs7c0JBcUVMLFlBQVksU0FBQyxnQkFBZ0IsRUFBRSxDQUFDLGVBQWUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElTYWNJY29uU2VydmljZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvSVNhY0ljb25TZXJ2aWNlJztcclxuaW1wb3J0IHsgU0FDSUNPTl9TRVJWSUNFLCBTYWNEZWZhdWx0SWNvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IFBsYWNlbWVudEFycmF5LCBwb3NpdGlvbkVsZW1lbnRzIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL3Bvc2l0aW9uaW5nJztcclxuaW1wb3J0IHsgSVNhY0NvbnRleHRtZW51Q29tbW9uIH0gZnJvbSAnLi9jb250ZXh0bWVudS5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBTYWNDb250ZXh0bWVudUFuY2hvckNvbW1vbiB9IGZyb20gJy4vY29udGV4dG1lbnVhbmNob3InO1xyXG5pbXBvcnQgeyBTYWNDb250ZXh0TWVudUNvbnRyYWluZXJDb21tb24gfSBmcm9tICcuL2NvbnRleHRtZW51Y29udGFpbmVyJztcclxuaW1wb3J0IHsgU2FjQ29udGV4dG1lbnVJdGVtQ29tbW9uIH0gZnJvbSAnLi9jb250ZXh0bWVudWl0ZW0nO1xyXG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7XHJcbiAgICBBZnRlckNvbnRlbnRJbml0LFxyXG4gICAgQ29udGVudENoaWxkLFxyXG4gICAgQ29udGVudENoaWxkcmVuLFxyXG4gICAgRGlyZWN0aXZlLFxyXG4gICAgRWxlbWVudFJlZixcclxuICAgIEhvc3RMaXN0ZW5lcixcclxuICAgIEluamVjdCxcclxuICAgIEluamVjdG9yLFxyXG4gICAgSW5wdXQsXHJcbiAgICBOZ1pvbmUsXHJcbiAgICBPbkRlc3Ryb3ksXHJcbiAgICBRdWVyeUxpc3QsXHJcbiAgICBSZW5kZXJlcjIsXHJcbiAgICBUZW1wbGF0ZVJlZixcclxuICAgIFZpZXdDaGlsZCxcclxuICAgIGZvcndhcmRSZWYsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5cclxuLyoqXHJcbiAqIEJhc2UgQ29udGV4dCBNZW7DvCBFbGVtZW50LiBEaWUgTG9naWsgd3VyZGUgYXVzIE5HLUJPT1RTVFJBUCDDvGJlcm5vbW1lbi5cclxuICovXHJcbkBEaXJlY3RpdmUoKVxyXG5leHBvcnQgY2xhc3MgU2FjQ29udGV4dG1lbnVDb21tb24gaW1wbGVtZW50cyBJU2FjQ29udGV4dG1lbnVDb21tb24sIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSB7XHJcbiAgICAvLyAjcmVnaW9uIFByb3BlcnRpZXNcclxuXHJcbiAgICAvKipcclxuICAgICAqIEJ1dHRvbiBmw7xyIE9wZW4vQ2xvc2UgRXZlbnRcclxuICAgICAqL1xyXG4gICAgQFZpZXdDaGlsZChTYWNDb250ZXh0bWVudUFuY2hvckNvbW1vbiwgeyBzdGF0aWM6IGZhbHNlIH0pXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9hbmNob3I6IFNhY0NvbnRleHRtZW51QW5jaG9yQ29tbW9uO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQnV0dG9uIGbDvHIgT3Blbi9DbG9zZSBFdmVudCBhdXMgVGVtcGxhdGVcclxuICAgICAqL1xyXG4gICAgQENvbnRlbnRDaGlsZChTYWNDb250ZXh0bWVudUFuY2hvckNvbW1vbiwgeyBzdGF0aWM6IGZhbHNlIH0pXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9hbmNob3JUZW1wbGF0ZTogU2FjQ29udGV4dG1lbnVBbmNob3JDb21tb247XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb250YWluZXIgRWxlbWVudCBmw7xyIERyb3Bkb3duXHJcbiAgICAgKi9cclxuICAgIEBWaWV3Q2hpbGQoU2FjQ29udGV4dE1lbnVDb250cmFpbmVyQ29tbW9uLCB7IHN0YXRpYzogZmFsc2UgfSlcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX21lbnU6IFNhY0NvbnRleHRNZW51Q29udHJhaW5lckNvbW1vbjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFpvbmUgU3Vic2NyaXB0aW9uIGbDvHIgUG9zdGl0b25pZXJ1bmcgZGVzIEVsZW1lbnRzXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgcmVhZG9ubHkgem9uZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQm9keSBIVE1MIEVsZW1lbnRcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBib2R5Q29udGFpbmVyOiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogaWNvbiBzZXJ2aWNlXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBpY29uU2VydmljZTogSVNhY0ljb25TZXJ2aWNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ3VzdG9tIEhUTUwgVGVtcGxhdGUgZsO8ciBEcm9wZG93biBCdXR0b24uIEJ1dHRvbiBtdXNzIGRlbiBNYXJrZXIgXCJuZ0NvbnRleHRtZW51QW5jaG9yXCIgYmVpbmhhbHRlbiwgZGFtaXQgZGFzIENvbnRyb2wga29ycmVrdCBmdW5rdGlvbmllcnQuXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgYnV0dG9udGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb250YWluZXIgYW4gd2VsY2hlbSBkaWUgUG9zaXRpb24gYXVzZ2VyaWNodGV0IHdpcmQuIEFrdHVlbGwgd2lyZCBudW4gQm9keSBTdXBwb3J0ZWRcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBjb250YWluZXI6IG51bGwgfCAnYm9keScgPSAnYm9keSc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFeHRyYSBDU1MgS2xhc3NlbiBmw7xyIGRhcyBDb250cm9sXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgY3NzY2xhc3M6IHN0cmluZyA9ICcnO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRGVmaW5pZXJ0IG9iIGRhcyBEcm9wZG93biBvZmZlbiBpc3QuXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgaXNvcGVuOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBbGwgZGlyZWN0bHkgYXNzaWduZWQgY29udGV4dCBtZW51IGVsZW1lbnRzIHRoYXQgYXJlIGRlZmluZWQgaW4gdGhlIGRpcmVjdCB0ZW1wbGF0ZSBmb3IgdGhlIGNvbnRleHQgbWVudS5cclxuICAgICAqL1xyXG4gICAgQENvbnRlbnRDaGlsZHJlbihmb3J3YXJkUmVmKCgpID0+IFNhY0NvbnRleHRtZW51SXRlbUNvbW1vbikpXHJcbiAgICBwdWJsaWMgbWVudWl0ZW1zITogUXVlcnlMaXN0PFNhY0NvbnRleHRtZW51SXRlbUNvbW1vbj47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgcHJlZmVycmVkIHBsYWNlbWVudCBvZiB0aGUgZHJvcGRvd24uXHJcbiAgICAgKlxyXG4gICAgICogUG9zc2libGUgdmFsdWVzIGFyZSBgXCJ0b3BcImAsIGBcInRvcC1sZWZ0XCJgLCBgXCJ0b3AtcmlnaHRcImAsIGBcImJvdHRvbVwiYCwgYFwiYm90dG9tLWxlZnRcImAsXHJcbiAgICAgKiBgXCJib3R0b20tcmlnaHRcImAsIGBcImxlZnRcImAsIGBcImxlZnQtdG9wXCJgLCBgXCJsZWZ0LWJvdHRvbVwiYCwgYFwicmlnaHRcImAsIGBcInJpZ2h0LXRvcFwiYCxcclxuICAgICAqIGBcInJpZ2h0LWJvdHRvbVwiYFxyXG4gICAgICpcclxuICAgICAqIEFjY2VwdHMgYW4gYXJyYXkgb2Ygc3RyaW5ncyBvciBhIHN0cmluZyB3aXRoIHNwYWNlIHNlcGFyYXRlZCBwb3NzaWJsZSB2YWx1ZXMuXHJcbiAgICAgKlxyXG4gICAgICogVGhlIGRlZmF1bHQgb3JkZXIgb2YgcHJlZmVyZW5jZSBpcyBgXCJib3R0b20tbGVmdCBib3R0b20tcmlnaHQgdG9wLWxlZnQgdG9wLXJpZ2h0XCJgXHJcbiAgICAgKlxyXG4gICAgICogUGxlYXNlIHNlZSB0aGUgW3Bvc2l0aW9uaW5nIG92ZXJ2aWV3XSgjL3Bvc2l0aW9uaW5nKSBmb3IgbW9yZSBkZXRhaWxzLlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBwdWJsaWMgcGxhY2VtZW50OiBQbGFjZW1lbnRBcnJheSA9IFsnYm90dG9tLWxlZnQnLCAnYm90dG9tLXJpZ2h0JywgJ3RvcC1sZWZ0JywgJ3RvcC1yaWdodCddO1xyXG5cclxuICAgIC8vICNlbmRyZWdpb24gUHJvcGVydGllc1xyXG5cclxuICAgIC8vICNyZWdpb24gQ29uc3RydWN0b3JzXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBLb25zdHJ1a3RvclxyXG4gICAgICogQHBhcmFtIGRvY3VtZW50IEhUTUwgRG9jdW1lbnQgRWxlbWVudFxyXG4gICAgICogQHBhcmFtIG5nWm9uZSBBbmd1bGFyIFpvbmUgU2VydmljZVxyXG4gICAgICogQHBhcmFtIGVsZW1lbnRSZWYgSFRNTCBFbGVtZW50IGRlcyBha3R1ZWxsZW4gQ29udHJvbHNcclxuICAgICAqIEBwYXJhbSByZW5kZXJlciBBbmd1bGFyIFJlbmRlcmluZyBTZXJ2aWNlXHJcbiAgICAgKiBAcGFyYW0gaW5qZWN0b3IgaW5qZWN0b3IgdG8gcmVzb2x2ZSB0aGUgaWNvbiBzZXJ2aWNlXHJcbiAgICAgKi9cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnQ6IGFueSxcclxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IG5nWm9uZTogTmdab25lLFxyXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXHJcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgICAgIGluamVjdG9yOiBJbmplY3RvclxyXG4gICAgKSB7XHJcbiAgICAgICAgdGhpcy56b25lU3Vic2NyaXB0aW9uID0gdGhpcy5uZ1pvbmUub25TdGFibGUuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5fcG9zaXRpb25NZW51KCk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuaWNvblNlcnZpY2UgPSBpbmplY3Rvci5nZXQoU0FDSUNPTl9TRVJWSUNFLCBuZXcgU2FjRGVmYXVsdEljb25TZXJ2aWNlKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vICNlbmRyZWdpb24gQ29uc3RydWN0b3JzXHJcblxyXG4gICAgLy8gI3JlZ2lvbiBQdWJsaWMgR2V0dGVycyBBbmQgU2V0dGVyc1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogaWNvbiBmb3IgZGVmYXVsdCBjb250ZXh0IG1lbsO8IGJ1dHRvblxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0IEljb25Db250ZXh0TWVudSgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmljb25TZXJ2aWNlLkNvbnRleHRNZW51T3Blbkljb247XHJcbiAgICB9XHJcblxyXG4gICAgLy8gI2VuZHJlZ2lvbiBQdWJsaWMgR2V0dGVycyBBbmQgU2V0dGVyc1xyXG5cclxuICAgIC8vICNyZWdpb24gUHVibGljIE1ldGhvZHNcclxuXHJcbiAgICAvKipcclxuICAgICAqIFNjaGxpZXNzdCBkYXMgRHJvcGRvd25cclxuICAgICAqL1xyXG4gICAgcHVibGljIGNsb3NlKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3Jlc2V0Q29udGFpbmVyKCk7XHJcbiAgICAgICAgdGhpcy5pc29wZW4gPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMubWVudWl0ZW1zLmZvckVhY2goKGJ1dHRvbikgPT4gKGJ1dHRvbi5jb250ZXh0bWVudSA9IHRoaXMpKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEV2ZW50IHdlbm4gQ29tcG9uZW50IGVudGZlcm50IHdpcmQuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5pc29wZW4pIHtcclxuICAgICAgICAgICAgdGhpcy5jbG9zZSgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy56b25lU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBIb3N0TGlzdGVuZXIgdW0gZGFzIERyb3Bkb3duIHp1IHNjaGxpZXNzZW4gd2VubiBuaWNodCBhdWYgZGFzIEVsZW1lbnQgZ2VrbGlja3Qgd2lyZC5cclxuICAgICAqL1xyXG4gICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudC50YXJnZXQnXSlcclxuICAgIC8qKlxyXG4gICAgICogQ2xpY2sgRXZlbnRcclxuICAgICAqL1xyXG4gICAgcHVibGljIG9uQ2xpY2sodGFyZ2V0RWxlbWVudCkge1xyXG4gICAgICAgIGNvbnN0IGFuY2hvcjogU2FjQ29udGV4dG1lbnVBbmNob3JDb21tb24gPSB0aGlzLl9hbmNob3IgfHwgdGhpcy5fYW5jaG9yVGVtcGxhdGU7XHJcblxyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgICAgdGhpcy5fbWVudSAmJlxyXG4gICAgICAgICAgICAhdGhpcy5fbWVudS5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKHRhcmdldEVsZW1lbnQpICYmXHJcbiAgICAgICAgICAgICFhbmNob3IubmF0aXZlRWxlbWVudC5jb250YWlucyh0YXJnZXRFbGVtZW50KVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogw5ZmZm5ldCBkYXMgRHJvcGRvd24gLyBaZWlndCBkYXMgTWVuw7wgYW4uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBvcGVuKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2FwcGx5Q29udGFpbmVyKHRoaXMuY29udGFpbmVyKTtcclxuICAgICAgICB0aGlzLmlzb3BlbiA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUb2dnbGUgdm9uIERyb3Bkb3duXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyB0b2dnbGUoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNvcGVuKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLm9wZW4oKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gI2VuZHJlZ2lvbiBQdWJsaWMgTWV0aG9kc1xyXG5cclxuICAgIC8vICNyZWdpb24gUHJvdGVjdGVkIE1ldGhvZHNcclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHp0IGRpZSBQb3NpdGlvbiBkZXMgTWVuw7xzIGltIE1hcmt1cFxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgX3Bvc2l0aW9uTWVudSgpIHtcclxuICAgICAgICBjb25zdCBhbmNob3I6IFNhY0NvbnRleHRtZW51QW5jaG9yQ29tbW9uID0gdGhpcy5fYW5jaG9yIHx8IHRoaXMuX2FuY2hvclRlbXBsYXRlO1xyXG5cclxuICAgICAgICBpZiAoYW5jaG9yICYmIHRoaXMuX21lbnUpIHtcclxuICAgICAgICAgICAgcG9zaXRpb25FbGVtZW50cyhcclxuICAgICAgICAgICAgICAgIGFuY2hvci5uYXRpdmVFbGVtZW50LFxyXG4gICAgICAgICAgICAgICAgdGhpcy5ib2R5Q29udGFpbmVyIHx8IHRoaXMuX21lbnUubmF0aXZlRWxlbWVudCxcclxuICAgICAgICAgICAgICAgIHRoaXMucGxhY2VtZW50LFxyXG4gICAgICAgICAgICAgICAgdGhpcy5jb250YWluZXIgPT09ICdib2R5J1xyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyAjZW5kcmVnaW9uIFByb3RlY3RlZCBNZXRob2RzXHJcblxyXG4gICAgLy8gI3JlZ2lvbiBQcml2YXRlIE1ldGhvZHNcclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHp0IGRpZSBQb3NpdGlvbiBkZXMgTWVuw7xzIGlubmVyaGFsYiBkZXIgU2VpdGUuIERpZSBBdXNyaWNodHVuZyBwYXNzaWVydCBpbm5lcmhhbGIgZGVyIFNlaXRlXHJcbiAgICAgKiBkYW1pdCBkYXMgTWVuw7wgaW5uZXJoYWxiIGVpbmVzIERpYWxvZ3Mgc2F1YmVyIGZ1bmt0aW9uaW9uaWVydC5cclxuICAgICAqIEBwYXJhbSBjb250YWluZXIgRGVmaW5pZXJ0IHdvIGRhcyBNZW7DvCBhdXNnZXJpY2h0ZXQgd2lyZC4gSW0gTW9tZW50IG51ciBCT0RZIFN1cHBvcnRlZFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9hcHBseUNvbnRhaW5lcihjb250YWluZXI6IG51bGwgfCAnYm9keScgPSBudWxsKSB7XHJcbiAgICAgICAgLy8gUmVzZXQgQ2xhc3NlcyBvbiBDb250YWluZXJcclxuICAgICAgICB0aGlzLl9yZXNldENvbnRhaW5lcigpO1xyXG5cclxuICAgICAgICBpZiAoY29udGFpbmVyID09PSAnYm9keScpIHtcclxuICAgICAgICAgICAgY29uc3QgcmVuZGVyZXIgPSB0aGlzLnJlbmRlcmVyO1xyXG4gICAgICAgICAgICBjb25zdCBkcm9wZG93bk1lbnVFbGVtZW50ID0gdGhpcy5fbWVudS5uYXRpdmVFbGVtZW50O1xyXG4gICAgICAgICAgICBjb25zdCBib2R5Q29udGFpbmVyID0gKHRoaXMuYm9keUNvbnRhaW5lciA9IHRoaXMuYm9keUNvbnRhaW5lciB8fCByZW5kZXJlci5jcmVhdGVFbGVtZW50KCdkaXYnKSk7XHJcblxyXG4gICAgICAgICAgICAvLyBPdmVycmlkZSBzb21lIHN0eWxlcyB0byBoYXZlIHRoZSBwb3NpdGlvbmluZyB3b3JraW5nXHJcbiAgICAgICAgICAgIHJlbmRlcmVyLnNldFN0eWxlKGJvZHlDb250YWluZXIsICdwb3NpdGlvbicsICdhYnNvbHV0ZScpO1xyXG4gICAgICAgICAgICByZW5kZXJlci5zZXRTdHlsZShkcm9wZG93bk1lbnVFbGVtZW50LCAncG9zaXRpb24nLCAnc3RhdGljJyk7XHJcbiAgICAgICAgICAgIHJlbmRlcmVyLnNldFN0eWxlKGJvZHlDb250YWluZXIsICd6LWluZGV4JywgJzEwNTAnKTtcclxuXHJcbiAgICAgICAgICAgIHJlbmRlcmVyLmFwcGVuZENoaWxkKGJvZHlDb250YWluZXIsIGRyb3Bkb3duTWVudUVsZW1lbnQpO1xyXG4gICAgICAgICAgICByZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLmRvY3VtZW50LmJvZHksIGJvZHlDb250YWluZXIpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHp0IGRpZSBDU1MgS2xhc3NlbiBhdWYgZGVtIE1lbsO8IENvbnRhaW5lciBhdWYgZGVuIFN0YW5kYXJkIHp1csO8Y2tcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfcmVzZXRDb250YWluZXIoKSB7XHJcbiAgICAgICAgY29uc3QgcmVuZGVyZXIgPSB0aGlzLnJlbmRlcmVyO1xyXG4gICAgICAgIGlmICh0aGlzLl9tZW51KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGRyb3Bkb3duRWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xyXG4gICAgICAgICAgICBjb25zdCBkcm9wZG93bk1lbnVFbGVtZW50ID0gdGhpcy5fbWVudS5uYXRpdmVFbGVtZW50O1xyXG5cclxuICAgICAgICAgICAgcmVuZGVyZXIuYXBwZW5kQ2hpbGQoZHJvcGRvd25FbGVtZW50LCBkcm9wZG93bk1lbnVFbGVtZW50KTtcclxuICAgICAgICAgICAgcmVuZGVyZXIucmVtb3ZlU3R5bGUoZHJvcGRvd25NZW51RWxlbWVudCwgJ3Bvc2l0aW9uJyk7XHJcbiAgICAgICAgICAgIHJlbmRlcmVyLnJlbW92ZVN0eWxlKGRyb3Bkb3duTWVudUVsZW1lbnQsICd0cmFuc2Zvcm0nKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuYm9keUNvbnRhaW5lcikge1xyXG4gICAgICAgICAgICByZW5kZXJlci5yZW1vdmVDaGlsZCh0aGlzLmRvY3VtZW50LmJvZHksIHRoaXMuYm9keUNvbnRhaW5lcik7XHJcbiAgICAgICAgICAgIHRoaXMuYm9keUNvbnRhaW5lciA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vICNlbmRyZWdpb24gUHJpdmF0ZSBNZXRob2RzXHJcbn1cclxuIl19
|
|
@@ -1,10 +1,21 @@
|
|
|
1
|
-
import { Directive } from '@angular/core';
|
|
1
|
+
import { Directive, Input } from '@angular/core';
|
|
2
2
|
/**
|
|
3
3
|
* Base Context Menu Item
|
|
4
4
|
*/
|
|
5
5
|
export class SacContextmenuItemCommon {
|
|
6
|
+
constructor() {
|
|
7
|
+
// #region Properties
|
|
8
|
+
/**
|
|
9
|
+
* Reference to the higher-level context menu. This property is always set automatically by the context menu. However, it may be necessary to set the reference manually.
|
|
10
|
+
*/
|
|
11
|
+
this.contextmenu = null;
|
|
12
|
+
// #endregion Properties
|
|
13
|
+
}
|
|
6
14
|
}
|
|
7
15
|
SacContextmenuItemCommon.decorators = [
|
|
8
16
|
{ type: Directive }
|
|
9
17
|
];
|
|
10
|
-
|
|
18
|
+
SacContextmenuItemCommon.propDecorators = {
|
|
19
|
+
contextmenu: [{ type: Input }]
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dG1lbnVpdGVtLmpzIiwic291cmNlUm9vdCI6IkM6L1Byb2pla3RlL3NpbXBsZWFuZ3VsYXJjb250cm9scy1uZzEwL2NoLmpuZXR3b3JrLnNhYy1jb250cm9scy9wcm9qZWN0cy9zYWMtY29tbW9uL3NyYy8iLCJzb3VyY2VzIjpbImNvbnRyb2xzL2NvbnRleHRtZW51L2NvbnRleHRtZW51aXRlbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqRDs7R0FFRztBQUVILE1BQU0sT0FBTyx3QkFBd0I7SUFEckM7UUFFSSxxQkFBcUI7UUFFckI7O1dBRUc7UUFFSSxnQkFBVyxHQUFpQyxJQUFJLENBQUM7UUFFeEQsd0JBQXdCO0lBQzVCLENBQUM7OztZQVhBLFNBQVM7OzswQkFPTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSVNhY0NvbnRleHRtZW51Q29tbW9uIH0gZnJvbSAnLi9jb250ZXh0bWVudS5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG4vKipcclxuICogQmFzZSBDb250ZXh0IE1lbnUgSXRlbVxyXG4gKi9cclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBjbGFzcyBTYWNDb250ZXh0bWVudUl0ZW1Db21tb24ge1xyXG4gICAgLy8gI3JlZ2lvbiBQcm9wZXJ0aWVzXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZWZlcmVuY2UgdG8gdGhlIGhpZ2hlci1sZXZlbCBjb250ZXh0IG1lbnUuIFRoaXMgcHJvcGVydHkgaXMgYWx3YXlzIHNldCBhdXRvbWF0aWNhbGx5IGJ5IHRoZSBjb250ZXh0IG1lbnUuIEhvd2V2ZXIsIGl0IG1heSBiZSBuZWNlc3NhcnkgdG8gc2V0IHRoZSByZWZlcmVuY2UgbWFudWFsbHkuXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgY29udGV4dG1lbnU6IElTYWNDb250ZXh0bWVudUNvbW1vbiB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgIC8vICNlbmRyZWdpb24gUHJvcGVydGllc1xyXG59XHJcbiJdfQ==
|