barsa-sap-ui 1.0.349 → 1.0.351
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/barsa-tinyemce/barsa-tinyemce.component.mjs +21 -11
- package/fesm2015/barsa-sap-ui.mjs +20 -10
- package/fesm2015/barsa-sap-ui.mjs.map +1 -1
- package/fesm2020/barsa-sap-ui.mjs +20 -10
- package/fesm2020/barsa-sap-ui.mjs.map +1 -1
- package/lib/barsa-tinyemce/barsa-tinyemce.component.d.ts +1 -0
- package/package.json +1 -1
|
@@ -11,8 +11,17 @@ export class BarsaTinyemceComponent extends BaseComponent {
|
|
|
11
11
|
this._el = _el;
|
|
12
12
|
this.valueChange = new EventEmitter();
|
|
13
13
|
this.tinyInit = new EventEmitter();
|
|
14
|
-
this.tinyHostId =
|
|
14
|
+
this.tinyHostId = this._generateTinyHostId();
|
|
15
15
|
this.tinyMCEConfig = {};
|
|
16
|
+
this._onLoadIframe = () => {
|
|
17
|
+
this.value = this.editorValue;
|
|
18
|
+
// const ed = tinymce.get(this.tinyHostId);
|
|
19
|
+
// ed.execCommand('mceInsertContent', false, this.value);
|
|
20
|
+
// ed.insertContent(this.value, { format: 'raw' });
|
|
21
|
+
// this._removeOverflow(ed);
|
|
22
|
+
this.destroyTinymce();
|
|
23
|
+
this.prepare();
|
|
24
|
+
};
|
|
16
25
|
}
|
|
17
26
|
ngOnChanges(simpleChanges) {
|
|
18
27
|
super.ngOnChanges(simpleChanges);
|
|
@@ -55,6 +64,9 @@ export class BarsaTinyemceComponent extends BaseComponent {
|
|
|
55
64
|
}
|
|
56
65
|
}
|
|
57
66
|
initilize() {
|
|
67
|
+
if (this.tinyMCEConfig.setup) {
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
58
70
|
this.tinyMCEConfig.height = '100%';
|
|
59
71
|
this.tinyMCEConfig.width = '100%';
|
|
60
72
|
this.tinyMCEConfig.selector = '#' + this.tinyHostId;
|
|
@@ -125,12 +137,13 @@ export class BarsaTinyemceComponent extends BaseComponent {
|
|
|
125
137
|
if (this.tinyMCEConfig.setup) {
|
|
126
138
|
userSetup = this.tinyMCEConfig.setup;
|
|
127
139
|
}
|
|
128
|
-
|
|
140
|
+
let defaultVerbsMenu = [];
|
|
129
141
|
// BEGIN: setup
|
|
130
142
|
this.tinyMCEConfig.setup = (ed) => {
|
|
131
143
|
this.editor = ed;
|
|
132
144
|
if (!this.isReadonly) {
|
|
133
145
|
if (this.defaultVerbs) {
|
|
146
|
+
defaultVerbsMenu = [];
|
|
134
147
|
this.defaultVerbs.forEach((item) => {
|
|
135
148
|
defaultVerbsMenu.push({
|
|
136
149
|
value: item.Html,
|
|
@@ -212,7 +225,7 @@ export class BarsaTinyemceComponent extends BaseComponent {
|
|
|
212
225
|
this.tinyInit.emit();
|
|
213
226
|
const iframEl = ed.iframeElement;
|
|
214
227
|
if (iframEl) {
|
|
215
|
-
iframEl.addEventListener('load', this._onLoadIframe
|
|
228
|
+
iframEl.addEventListener('load', this._onLoadIframe);
|
|
216
229
|
}
|
|
217
230
|
});
|
|
218
231
|
// Catch and propagate the change event
|
|
@@ -324,8 +337,9 @@ export class BarsaTinyemceComponent extends BaseComponent {
|
|
|
324
337
|
}
|
|
325
338
|
const ed = tinymce.get(this.tinyHostId);
|
|
326
339
|
if (ed) {
|
|
340
|
+
// tinymce.execCommand('mceRemoveControl', true, this.tinyHostId);
|
|
327
341
|
if (ed.iframeElement) {
|
|
328
|
-
ed.iframeElement.
|
|
342
|
+
ed.iframeElement.removeEventListener('load', this._onLoadIframe);
|
|
329
343
|
}
|
|
330
344
|
ed.destroy(false);
|
|
331
345
|
}
|
|
@@ -357,12 +371,8 @@ export class BarsaTinyemceComponent extends BaseComponent {
|
|
|
357
371
|
this.intializationInProgress = false;
|
|
358
372
|
this.wysiwygIntialized = true;
|
|
359
373
|
}
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
// const ed = tinymce.get(this.tinyHostId);
|
|
363
|
-
// this._removeOverflow(ed);
|
|
364
|
-
// this.destroyTinymce();
|
|
365
|
-
// this.prepare();
|
|
374
|
+
_generateTinyHostId() {
|
|
375
|
+
return `a_${getUniqueId(2)}`;
|
|
366
376
|
}
|
|
367
377
|
_removeOverflow(ed) {
|
|
368
378
|
const html = ed.iframeElement?.contentDocument?.querySelector('html');
|
|
@@ -392,4 +402,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImpor
|
|
|
392
402
|
}], tinyInit: [{
|
|
393
403
|
type: Output
|
|
394
404
|
}] } });
|
|
395
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyc2EtdGlueWVtY2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvYmFyc2EtdGlueWVtY2UvYmFyc2EtdGlueWVtY2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvYmFyc2EtdGlueWVtY2UvYmFyc2EtdGlueWVtY2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILHVCQUF1QixFQUN2QixTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBRU4sU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdkcsT0FBTyxFQUFjLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7O0FBWTdELE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxhQUFhO0lBa0JyRCxZQUFzQixjQUE2QixFQUFZLEdBQWU7UUFDMUUsS0FBSyxFQUFFLENBQUM7UUFEVSxtQkFBYyxHQUFkLGNBQWMsQ0FBZTtRQUFZLFFBQUcsR0FBSCxHQUFHLENBQVk7UUFacEUsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ3RDLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3hDLGVBQVUsR0FBRyxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ25DLGtCQUFhLEdBQVEsRUFBRSxDQUFDO0lBV3hCLENBQUM7SUFDRCxXQUFXLENBQUMsYUFBNEI7UUFDcEMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNqQyxJQUFJLGFBQWEsQ0FBQyxLQUFLLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRTtZQUN6RCxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDbkQ7UUFDRCxJQUFJLGFBQWEsQ0FBQyxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRTtZQUM3RCxNQUFNLE9BQU8sR0FBRyxhQUFhLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQztZQUNuRCxJQUFJLE9BQU8sRUFBRTtnQkFDVCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7YUFDckI7aUJBQU07Z0JBQ0gsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO2FBQ3BCO1NBQ0o7UUFDRCxJQUFJLGFBQWEsQ0FBQyxRQUFRLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRTtZQUMvRCxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDekQ7SUFDTCxDQUFDO0lBQ0QsUUFBUTtRQUNKLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsTUFBTSxHQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBNkIsQ0FBQyxZQUFZLENBQUM7SUFDdkUsQ0FBQztJQUVELGVBQWU7UUFDWCxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFDRCxXQUFXO1FBQ1AsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQWE7UUFDekIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3pFLENBQUM7SUFDRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFO1lBQzVCLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyw0QkFBNEIsQ0FBQyxFQUFFLEdBQUcsRUFBRTtnQkFDM0MsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ25CLENBQUMsQ0FBQyxDQUFDO1NBQ047SUFDTCxDQUFDO0lBRUQsU0FBUztRQUNMLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNuQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUM7UUFDbEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7UUFFcEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEdBQUcsaUNBQWlDLENBQUM7UUFDbkUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1FBQzFDLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztRQUN0QyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDckMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7UUFDNUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLEdBQUcsV0FBVyxDQUFDO1FBQ2pELElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxHQUFHLE1BQU0sQ0FBQztRQUM1QyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDckMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxhQUFhLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFDO1FBQ2xELElBQUksQ0FBQyxhQUFhLENBQUMsbUJBQW1CO1lBQ2xDLGtHQUFrRyxDQUFDO1FBQ3ZHLElBQUksQ0FBQyxhQUFhLENBQUMsaUJBQWlCLEdBQUcsbUNBQW1DLENBQUM7UUFFM0UsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEdBQUc7WUFDekIsU0FBUztZQUNULFFBQVE7WUFDUixVQUFVO1lBQ1YsVUFBVTtZQUNWLFNBQVM7WUFDVCxNQUFNO1lBQ04sWUFBWTtZQUNaLGdCQUFnQjtZQUNoQixXQUFXO1lBQ1gsWUFBWTtZQUNaLE1BQU07WUFDTixPQUFPO1lBQ1AsV0FBVztZQUNYLGdCQUFnQjtZQUNoQixNQUFNO1lBQ04sT0FBTztZQUNQLE9BQU87WUFDUCxhQUFhO1lBQ2IsV0FBVztZQUNYLFNBQVM7WUFDVCxXQUFXO1lBQ1gsTUFBTTtZQUNOLGVBQWU7WUFDZixPQUFPO1lBQ1AsVUFBVTtZQUNWLGNBQWM7WUFDZCxhQUFhO1lBQ2IsV0FBVztZQUNYLFlBQVk7U0FDZixDQUFDO1FBQ0YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEdBQUc7WUFDekIsNEhBQTRIO2dCQUN4SCw4R0FBOEc7U0FDckgsQ0FBQztRQUVGLE1BQU0scUJBQXFCLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQztRQUNyRCxJQUFJLGVBQWUsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSwrQkFBK0IsQ0FBQyxDQUFDO1FBQ3RHLGVBQWUsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMscUJBQXFCLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFDdkYsSUFBSSxDQUFDLGVBQWUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxFQUFFO1lBQ3BELEtBQUssTUFBTSxJQUFJLElBQUksZUFBZSxFQUFFO2dCQUNoQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO2FBQzdDO1NBQ0o7UUFFRCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDakIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1lBQ25DLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztZQUNyQyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQzVDLG1DQUFtQztZQUNuQyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7U0FDdEM7UUFFRCxJQUFJLFNBQWdDLENBQUM7UUFFckMsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRTtZQUMxQixTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUM7U0FDeEM7UUFDRCxNQUFNLGdCQUFnQixHQUFRLEVBQUUsQ0FBQztRQUNqQyxlQUFlO1FBQ2YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRTtZQUM5QixJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztZQUVqQixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTtnQkFDbEIsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO29CQUNuQixJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO3dCQUMvQixnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7NEJBQ2xCLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSTs0QkFDaEIsSUFBSSxFQUFFLFVBQVU7NEJBQ2hCLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxHQUFHLENBQUM7NEJBQzFELFFBQVEsRUFBRSxHQUFHLEVBQUU7Z0NBQ1gsd0RBQXdEO2dDQUN4RCxFQUFFLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQzs0QkFDbkQsQ0FBQzt5QkFDSixDQUFDLENBQUM7b0JBQ1AsQ0FBQyxDQUFDLENBQUM7aUJBQ047Z0JBQ0QsRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRTtvQkFDeEMsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsSUFBSSxFQUFFLE9BQU87b0JBQ2IsT0FBTyxFQUFFLHdCQUF3QjtvQkFDakMsUUFBUSxFQUFFLEdBQUcsRUFBRTt3QkFDWCxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQzNCLG9CQUFvQixFQUNwQjs0QkFDSSxjQUFjLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7NEJBQ2xELFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7eUJBQzdDLEVBQ0QsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUU7NEJBQ1osUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQzt3QkFDaEQsQ0FBQyxDQUNKLENBQUM7b0JBQ04sQ0FBQztvQkFDRCxZQUFZLEVBQUUsR0FBRyxFQUFFO3dCQUNmLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FDM0IsMEJBQTBCLEVBQzFCOzRCQUNJLGNBQWMsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQzt5QkFDbkQsRUFDRCxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRTs0QkFDWixRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO3dCQUNoRCxDQUFDLENBQ0osQ0FBQztvQkFDTixDQUFDO29CQUNELEtBQUssRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFO3dCQUNoQixNQUFNLEtBQUssR0FBRzs0QkFDVjtnQ0FDSSxJQUFJLEVBQUUsWUFBWTtnQ0FDbEIsSUFBSSxFQUFFLFFBQVE7Z0NBQ2QsSUFBSSxFQUFFLE9BQU87Z0NBQ2IsT0FBTyxFQUFFLGNBQWM7Z0NBQ3ZCLEtBQUssRUFBRSxRQUFROzZCQUNsQjt5QkFDSixDQUFDO3dCQUNGLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDcEIsQ0FBQztpQkFDSixDQUFDLENBQUM7Z0JBRUgsRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLGNBQWMsRUFBRTtvQkFDekMsSUFBSSxFQUFFLGtCQUFrQjtvQkFDeEIsS0FBSyxFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUU7d0JBQ2hCLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO29CQUMvQixDQUFDO2lCQUNKLENBQUMsQ0FBQztnQkFDSCxJQUFJLFVBQVUsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLEVBQUU7b0JBQ2pDLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7aUJBQzVDO2FBQ0o7WUFDRCxJQUFJLE9BQU8sR0FBRyxLQUFLLENBQUM7WUFDcEIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFO2dCQUNmLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7Z0JBQzlCLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxLQUFLLENBQUM7Z0JBQ3JDLElBQUksT0FBTyxJQUFJLENBQUMsS0FBSyxLQUFLLFdBQVcsRUFBRTtvQkFDbkMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQzdCO2dCQUNELElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLEVBQUU7b0JBQ3BDLEVBQUUsQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxDQUFDO2lCQUN6RTtnQkFDRCxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxFQUFFO29CQUNwQyxFQUFFLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsQ0FBQztpQkFDekU7Z0JBQ0QsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO29CQUNqQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztpQkFDckM7Z0JBQ0Qsc0VBQXNFO2dCQUN0RSx1Q0FBdUM7Z0JBQ3ZDLE1BQU0sVUFBVSxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUM7Z0JBQ2pDLEVBQUUsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxHQUFHLElBQUksRUFBRSxFQUFFO29CQUN4QixVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztvQkFDM0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQzlCLENBQUMsQ0FBQztnQkFDRixPQUFPLEdBQUcsSUFBSSxDQUFDO2dCQUNmLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ3JCLE1BQU0sT0FBTyxHQUFzQixFQUFFLENBQUMsYUFBYSxDQUFDO2dCQUNwRCxJQUFJLE9BQU8sRUFBRTtvQkFDVCxPQUFPLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7aUJBQ25FO1lBQ0wsQ0FBQyxDQUFDLENBQUM7WUFFSCx1Q0FBdUM7WUFDdkMsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDO1lBQ3RCLEVBQUUsQ0FBQyxFQUFFLENBQUMsY0FBYyxFQUFFLEdBQUcsRUFBRTtnQkFDdkIsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUMvQixJQUFJLE1BQU0sS0FBSyxVQUFVLEVBQUU7b0JBQ3ZCLE9BQU87aUJBQ1Y7Z0JBRUQsVUFBVSxHQUFHLE1BQU0sQ0FBQztnQkFDcEIsSUFBSSxDQUFDLE9BQU8sRUFBRTtvQkFDVixPQUFPO2lCQUNWO2dCQUVELEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDVixJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQztnQkFDMUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQzlCLDhEQUE4RDtZQUNsRSxDQUFDLENBQUMsQ0FBQztZQUVILEVBQUUsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRTtnQkFDaEIsT0FBTztZQUNYLENBQUMsQ0FBQyxDQUFDO1lBRUgsSUFBSSxTQUFTLEVBQUU7Z0JBQ1gsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2FBQ2pCO1FBQ0wsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUVELGdCQUFnQjtRQUNaLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUNELGtCQUFrQixDQUFDLFFBQVE7UUFDdkIsTUFBTSxLQUFLLEdBQVEsUUFBUSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNuRCxLQUFLLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNuQyxLQUFLLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUV4QyxLQUFLLENBQUMsUUFBUSxHQUFHLEdBQUcsRUFBRTtZQUNsQixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRTVCLE1BQU0sTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7WUFDaEMsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUU7Z0JBQ2pCLElBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFnQixDQUFDO2dCQUNyQyxNQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDOUIsUUFBUSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztZQUMzQixDQUFDLENBQUM7WUFDRixNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9CLENBQUMsQ0FBQztRQUVGLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBQ0QsWUFBWSxDQUFDLE1BQU0sRUFBRSxRQUFRO1FBQ3pCLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLGtCQUFrQixFQUFFLEtBQUssRUFBRSxpQ0FBaUMsR0FBRyxNQUFNLEdBQUcsS0FBSyxDQUFDLENBQUM7UUFDdkcsUUFBUSxFQUFFLENBQUM7SUFDZixDQUFDO0lBQ0QsUUFBUTtRQUNKLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQztRQUNmLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQ3hCLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3hDLElBQUksRUFBRSxFQUFFO2dCQUNKLEdBQUcsR0FBRyxFQUFFLENBQUMsVUFBVSxFQUFFLENBQUM7YUFDekI7U0FDSjtRQUVELE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUNELFFBQVEsQ0FBQyxLQUFLO1FBQ1YsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFDRCxZQUFZO1FBQ1IsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDeEIsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDeEMsSUFBSSxFQUFFLEVBQUU7Z0JBQ0osRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDN0I7U0FDSjtRQUNELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUN0QixDQUFDO0lBQ0QsS0FBSztRQUNELElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNqQixPQUFPLElBQUksQ0FBQztTQUNmO1FBRUQsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDeEIsT0FBTyxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixDQUFDLENBQUM7U0FDNUQ7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsU0FBUztRQUNMLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQ3hCLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3hDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDdEQ7SUFDTCxDQUFDO0lBRUQsVUFBVTtRQUNOLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQ3hCLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3hDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDdkQ7SUFDTCxDQUFDO0lBQ0QsV0FBVyxDQUFDLFFBQVE7UUFDaEIsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDeEIsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDeEMsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3hELElBQUksUUFBUSxFQUFFO2dCQUNWLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO2FBQ2xDO2lCQUFNO2dCQUNILENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO2FBQ2xDO1NBQ0o7SUFDTCxDQUFDO0lBRUQsY0FBYztRQUNWLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUU7WUFDM0IsT0FBTztTQUNWO1FBQ0QsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDeEMsSUFBSSxFQUFFLEVBQUU7WUFDSixJQUFJLEVBQUUsQ0FBQyxhQUFhLEVBQUU7Z0JBQ2xCLEVBQUUsQ0FBQyxhQUFhLENBQUMsa0JBQWtCLEVBQUUsQ0FBQzthQUN6QztZQUNELEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDckI7SUFDTCxDQUFDO0lBQ08sVUFBVSxDQUFDLEtBQWE7UUFDNUIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQ2pELFNBQVMsQ0FBQyxDQUFDLFFBQWtCLEVBQUUsRUFBRSxDQUM3QixJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLElBQUksQ0FDdEUsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDUixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ3BCLE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDdkIsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFO29CQUNsQixRQUFRLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO29CQUN4QyxPQUFPO2lCQUNWO2dCQUNELE1BQU0sS0FBSyxHQUFHO29CQUNWLEdBQUcsT0FBTztvQkFDVixNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU07aUJBQ3pCLENBQUM7Z0JBQ0YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUMxQjtRQUNMLENBQUMsQ0FBQyxDQUNMLENBQ0osQ0FDSixDQUFDO0lBQ04sQ0FBQztJQUNPLFVBQVUsQ0FBQyxJQUF3QjtRQUN2QyxNQUFNLEdBQUcsR0FBRyw4QkFBOEIsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQ3pELE1BQU0sSUFBSSxHQUFHLFdBQVcsR0FBRyxHQUFHLEdBQUcsS0FBSyxDQUFDO1FBRXZDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLGtCQUFrQixFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBQ08sT0FBTztRQUNYLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNqQixPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsS0FBSyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7SUFDbEMsQ0FBQztJQUNPLGFBQWE7UUFDakIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQzlCLDJDQUEyQztRQUMzQyw0QkFBNEI7UUFDNUIseUJBQXlCO1FBQ3pCLGtCQUFrQjtJQUN0QixDQUFDO0lBRU8sZUFBZSxDQUFDLEVBQU87UUFDM0IsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLGFBQWEsRUFBRSxlQUFlLEVBQUUsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RFLElBQUksSUFBSSxFQUFFO1lBQ04sSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1NBQ2xDO0lBQ0wsQ0FBQzs7bUhBL1pRLHNCQUFzQjt1R0FBdEIsc0JBQXNCLG9OQUZwQixDQUFDLGFBQWEsQ0FBQyw2S0MxQjlCLGlZQVNBOzJGRG1CYSxzQkFBc0I7a0JBUGxDLFNBQVM7K0JBQ0ksb0JBQW9CLG1CQUdiLHVCQUF1QixDQUFDLE1BQU0sYUFDcEMsQ0FBQyxhQUFhLENBQUM7NkhBR0gsU0FBUztzQkFBL0IsU0FBUzt1QkFBQyxVQUFVO2dCQUNaLE9BQU87c0JBQWYsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNJLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPdXRwdXQsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGaWxlVXBsb2FkZXJDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUnO1xuXG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50LCBCYXJzYUFwaSwgZ2V0VW5pcXVlSWQsIGlzRnVuY3Rpb24sIFVwbG9hZFNlcnZpY2UgfSBmcm9tICdiYXJzYS1ub3Zpbi1yYXktY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBjb25jYXRNYXAsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcyc7XG5kZWNsYXJlIGNvbnN0IHdpbmRvdzogYW55O1xuZGVjbGFyZSBjb25zdCB0aW55bWNlOiBhbnk7XG5kZWNsYXJlIGNvbnN0IGhlYWQ6IGFueTtcbmRlY2xhcmUgY29uc3QgJDogYW55O1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdic3UtYmFyc2EtdGlueWVtY2UnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9iYXJzYS10aW55ZW1jZS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vYmFyc2EtdGlueWVtY2UuY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtVcGxvYWRTZXJ2aWNlXVxufSlcbmV4cG9ydCBjbGFzcyBCYXJzYVRpbnllbWNlQ29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcbiAgICBAVmlld0NoaWxkKCd1cGxvYWRlcicpIF91cGxvYWRlcjogRmlsZVVwbG9hZGVyQ29tcG9uZW50O1xuICAgIEBJbnB1dCgpIFNldHRpbmc6IGFueTtcbiAgICBASW5wdXQoKSBpc1JlYWRvbmx5OiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHZhbHVlOiBhbnk7XG4gICAgQElucHV0KCkgZGVmYXVsdFZlcmJzOiB7IFRpdGxlOiBzdHJpbmc7IEh0bWw6IHN0cmluZyB9W107XG4gICAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gICAgQE91dHB1dCgpIHRpbnlJbml0ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIHRpbnlIb3N0SWQgPSBgYV8ke2dldFVuaXF1ZUlkKDIpfWA7XG4gICAgdGlueU1DRUNvbmZpZzogYW55ID0ge307XG4gICAgZWRpdG9yOiBhbnk7XG4gICAgd3lzaXd5Z0ludGlhbGl6ZWQ6IGJvb2xlYW47XG4gICAgaW50aWFsaXphdGlvbkluUHJvZ3Jlc3M6IGJvb2xlYW47XG4gICAgZWRpdG9yVmFsdWU6IHN0cmluZztcblxuICAgIGlmcmFtQm9keUlubmVySHRtbDogc3RyaW5nO1xuICAgIGhlaWdodDogbnVtYmVyO1xuXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIF91cGxvYWRTZXJ2aWNlOiBVcGxvYWRTZXJ2aWNlLCBwcm90ZWN0ZWQgX2VsOiBFbGVtZW50UmVmKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuICAgIG5nT25DaGFuZ2VzKHNpbXBsZUNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkNoYW5nZXMoc2ltcGxlQ2hhbmdlcyk7XG4gICAgICAgIGlmIChzaW1wbGVDaGFuZ2VzLnZhbHVlICYmICFzaW1wbGVDaGFuZ2VzLnZhbHVlLmZpcnN0Q2hhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLnNldFZhbHVlKHNpbXBsZUNoYW5nZXMudmFsdWUuY3VycmVudFZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2ltcGxlQ2hhbmdlcy5kaXNhYmxlICYmICFzaW1wbGVDaGFuZ2VzLmRpc2FibGUuZmlyc3RDaGFuZ2UpIHtcbiAgICAgICAgICAgIGNvbnN0IGRpc2JhbGUgPSBzaW1wbGVDaGFuZ2VzLmRpc2FibGUuY3VycmVudFZhbHVlO1xuICAgICAgICAgICAgaWYgKGRpc2JhbGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldERpc2FibGUoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRFbmFibGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoc2ltcGxlQ2hhbmdlcy5yZWFkb25seSAmJiAhc2ltcGxlQ2hhbmdlcy5yZWFkb25seS5maXJzdENoYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5zZXRSZWFkT25seShzaW1wbGVDaGFuZ2VzLnJlYWRvbmx5LmN1cnJlbnRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIHRoaXMuaGVpZ2h0ID0gKHRoaXMuX2VsLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpLmNsaWVudEhlaWdodDtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuICAgICAgICB0aGlzLmxvYWRUaW55TWNlKCk7XG4gICAgfVxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgICAgICB0aGlzLmRlc3Ryb3lUaW55bWNlKCk7XG4gICAgfVxuXG4gICAgb25GaWxlU2VsZWN0aW9uKGZpbGVzOiBGaWxlW10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGxvYWRGaWxlKGZpbGVzKS5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIGxvYWRUaW55TWNlKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuU2V0dGluZy5Jc0h0bWxWaWV3ZXIpIHtcbiAgICAgICAgICAgIGhlYWQubG9hZChbJ0xpYi90aW55bWNlL3RpbnltY2UubWluLmpzJ10sICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnByZXBhcmUoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaW5pdGlsaXplKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnRpbnlNQ0VDb25maWcuaGVpZ2h0ID0gJzEwMCUnO1xuICAgICAgICB0aGlzLnRpbnlNQ0VDb25maWcud2lkdGggPSAnMTAwJSc7XG4gICAgICAgIHRoaXMudGlueU1DRUNvbmZpZy5zZWxlY3RvciA9ICcjJyArIHRoaXMudGlueUhvc3RJZDtcblxuICAgICAgICB0aGlzLnRpbnlNQ0VDb25maWcuY29udGVudF9jc3MgPSAnYXNzZXRzL1Jlc291cmNlcy9mb250cy9JcmFuLmNzcyc7XG4gICAgICAgIHRoaXMudGlueU1DRUNvbmZpZy5kaXJlY3Rpb25hbGl0eSA9ICdydGwnO1xuICAgICAgICB0aGlzLnRpbnlNQ0VDb25maWcubGFuZ3VhZ2UgPSAnZmFfSVInO1xuICAgICAgICB0aGlzLnRpbnlNQ0VDb25maWcucHJvbW90aW9uID0gZmFsc2U7XG4gICAgICAgIHRoaXMudGlueU1DRUNvbmZpZy5wYXN0ZV9kYXRhX2ltYWdlcyA9IHRydWU7XG4gICAgICAgIHRoaXMudGlueU1DRUNvbmZpZy5kZWZhdWx0Rm9udE5hbWUgPSAnQmFyc2FGb250JztcbiAgICAgICAgdGhpcy50aW55TUNFQ29uZmlnLmRlZmF1bHRGb250U2l6ZSA9ICcxMnB4JztcbiAgICAgICAgdGhpcy50aW55TUNFQ29uZmlnLnN0YXR1c2JhciA9IGZhbHNlO1xuICAgICAgICB0aGlzLnRpbnlNQ0VDb25maWcuaW5saW5lID0gZmFsc2U7XG4gICAgICAgIHRoaXMudGlueU1DRUNvbmZpZy50aGVtZV9hZHZhbmNlZF9yZXNpemluZyA9IHRydWU7XG4gICAgICAgIHRoaXMudGlueU1DRUNvbmZpZy5mb250X2ZhbWlseV9mb3JtYXRzID1cbiAgICAgICAgICAgICdCYXJzYUZvbnQ9QmFyc2FGb250O0FyaWFsPWFyaWFsLGhlbHZldGljYSxzYW5zLXNlcmlmOyBDb3VyaWVyIE5ldz1jb3VyaWVyIG5ldyxjb3VyaWVyLG1vbm9zcGFjZTsnO1xuICAgICAgICB0aGlzLnRpbnlNQ0VDb25maWcuZm9udF9zaXplX2Zvcm1hdHMgPSAnOHB0IDEwcHQgMTJwdCAxNHB0IDE4cHQgMjRwdCAzNnB0JztcblxuICAgICAgICB0aGlzLnRpbnlNQ0VDb25maWcucGx1Z2lucyA9IFtcbiAgICAgICAgICAgICdhZHZsaXN0JyxcbiAgICAgICAgICAgICdhbmNob3InLFxuICAgICAgICAgICAgJ2F1dG9saW5rJyxcbiAgICAgICAgICAgICdhdXRvc2F2ZScsXG4gICAgICAgICAgICAnY2hhcm1hcCcsXG4gICAgICAgICAgICAnY29kZScsXG4gICAgICAgICAgICAnY29kZXNhbXBsZScsXG4gICAgICAgICAgICAnZGlyZWN0aW9uYWxpdHknLFxuICAgICAgICAgICAgJ2Vtb3RpY29ucycsXG4gICAgICAgICAgICAnZnVsbHNjcmVlbicsXG4gICAgICAgICAgICAnaGVscCcsXG4gICAgICAgICAgICAnaW1hZ2UnLFxuICAgICAgICAgICAgJ2ltcG9ydGNzcycsXG4gICAgICAgICAgICAnaW5zZXJ0ZGF0ZXRpbWUnLFxuICAgICAgICAgICAgJ2xpbmsnLFxuICAgICAgICAgICAgJ2xpc3RzJyxcbiAgICAgICAgICAgICdtZWRpYScsXG4gICAgICAgICAgICAnbm9uYnJlYWtpbmcnLFxuICAgICAgICAgICAgJ3BhZ2VicmVhaycsXG4gICAgICAgICAgICAncHJldmlldycsXG4gICAgICAgICAgICAncXVpY2tiYXJzJyxcbiAgICAgICAgICAgICdzYXZlJyxcbiAgICAgICAgICAgICdzZWFyY2hyZXBsYWNlJyxcbiAgICAgICAgICAgICd0YWJsZScsXG4gICAgICAgICAgICAndGVtcGxhdGUnLFxuICAgICAgICAgICAgJ3Zpc3VhbGJsb2NrcycsXG4gICAgICAgICAgICAndmlzdWFsY2hhcnMnLFxuICAgICAgICAgICAgJ3dvcmRjb3VudCcsXG4gICAgICAgICAgICAnYXV0b3Jlc2l6ZSdcbiAgICAgICAgXTtcbiAgICAgICAgdGhpcy50aW55TUNFQ29uZmlnLnRvb2xiYXIgPSBbXG4gICAgICAgICAgICBgZGVmYXVsdFZlcmJzIGJhcnNhSW1hZ2UgfCBpbnNlcnQgfCBmb3JlY29sb3IgYmFja2NvbG9yIGZvbnRmYW1pbHkgZm9udHNpemUgfCBidWxsaXN0IG51bWxpc3Qgb3V0ZGVudCBpbmRlbnQgfCByZW1vdmVmb3JtYXRgICtcbiAgICAgICAgICAgICAgICBgIHwgdW5kbyByZWRvIHwgY29weSBjdXQgcGFzdGUgfCBibG9ja3MgfCBib2xkIGl0YWxpYyB8IGFsaWdubGVmdCBhbGlnbmNlbnRlciBhbGlnbnJpZ2h0IGFsaWduanVzdGlmeSBsdHIgcnRsYFxuICAgICAgICBdO1xuXG4gICAgICAgIGNvbnN0IHRpbnltY2VTZXR0aW5nc0dsb2JhbCA9IHdpbmRvdy50aW55bWNlU2V0dGluZ3M7XG4gICAgICAgIGxldCB0aW55bWNlU2V0dGluZ3MgPSBCYXJzYUFwaS5Db21tb24uVXRpbC5UcnlHZXRWYWx1ZSh0aGlzLlNldHRpbmcsICdKc29uRXh0cmFQcm9wLnRpbnltY2VTZXR0aW5ncycpO1xuICAgICAgICB0aW55bWNlU2V0dGluZ3MgPSBCYXJzYUFwaS5Db21tb24uTWVyZ2VyLk1lcmdlKHRpbnltY2VTZXR0aW5nc0dsb2JhbCwgdGlueW1jZVNldHRpbmdzKTtcbiAgICAgICAgaWYgKCF0aW55bWNlU2V0dGluZ3MgJiYgQXJyYXkuaXNBcnJheSh0aW55bWNlU2V0dGluZ3MpKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGlueW1jZVNldHRpbmdzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50aW55TUNFQ29uZmlnW2l0ZW0ua2V5XSA9IGl0ZW0udmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pc1JlYWRvbmx5KSB7XG4gICAgICAgICAgICB0aGlzLnRpbnlNQ0VDb25maWcubWVudWJhciA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy50aW55TUNFQ29uZmlnLnN0YXR1c2JhciA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy50aW55TUNFQ29uZmlnLnBsdWdpbnMgPSBbJ2F1dG9yZXNpemUnXTtcbiAgICAgICAgICAgIC8vIHRoaXMudGlueU1DRUNvbmZpZy5wbHVnaW5zID0gW107XG4gICAgICAgICAgICB0aGlzLnRpbnlNQ0VDb25maWcudG9vbGJhciA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHVzZXJTZXR1cDogKGVkaXRvcjogYW55KSA9PiB2b2lkO1xuXG4gICAgICAgIGlmICh0aGlzLnRpbnlNQ0VDb25maWcuc2V0dXApIHtcbiAgICAgICAgICAgIHVzZXJTZXR1cCA9IHRoaXMudGlueU1DRUNvbmZpZy5zZXR1cDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkZWZhdWx0VmVyYnNNZW51OiBhbnkgPSBbXTtcbiAgICAgICAgLy8gQkVHSU46IHNldHVwXG4gICAgICAgIHRoaXMudGlueU1DRUNvbmZpZy5zZXR1cCA9IChlZCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5lZGl0b3IgPSBlZDtcblxuICAgICAgICAgICAgaWYgKCF0aGlzLmlzUmVhZG9ubHkpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kZWZhdWx0VmVyYnMpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kZWZhdWx0VmVyYnMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdFZlcmJzTWVudS5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogaXRlbS5IdG1sLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdtZW51aXRlbScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogaXRlbS5UaXRsZSB8fCBpdGVtLkh0bWwucmVwbGFjZSgvPGJyXFxzKlxcLz8+L2dpLCAnICcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQWN0aW9uOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVkLmV4ZWNDb21tYW5kKCdtY2VJbnNlcnRSYXdIVE1MJywgZmFsc2UsIGl0ZW0uSHRtbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVkLmluc2VydENvbnRlbnQoaXRlbS5IdG1sLCB7IGZvcm1hdDogJ3JhdycgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlZC51aS5yZWdpc3RyeS5hZGRTcGxpdEJ1dHRvbignYmFyc2FJbWFnZScsIHtcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogJ2luc2VydCcsXG4gICAgICAgICAgICAgICAgICAgIGljb246ICdpbWFnZScsXG4gICAgICAgICAgICAgICAgICAgIHRvb2x0aXA6ICdJbnNlcnQgSW1hZ2UgQXMgQmFzZTY0JyxcbiAgICAgICAgICAgICAgICAgICAgb25BY3Rpb246ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEJhcnNhQXBpLkNvbW1vbi5Bc3luYy5XYXRlcmZhbGwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1RpbmVtY2UuRW1iZWRJbWFnZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVuRmlsZURpYWxvZzogdGhpcy5TaG93T3BlbkZpbGVEaWFsb2cuYmluZCh0aGlzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0QmFzZTY0OiB0aGlzLkluc2VydEJhc2U2NC5iaW5kKHRoaXMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXJyLCByZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmFyc2FBcGkuQ29tbW9uLkFzeW5jLkZpbmFsaXplKGVyciwgcmVzdWx0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBvbkl0ZW1BY3Rpb246ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEJhcnNhQXBpLkNvbW1vbi5Bc3luYy5XYXRlcmZhbGwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1RpbmVtY2UuVXBsb2FkVG9EYXRhYmFzZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVuRmlsZURpYWxvZzogdGhpcy5TaG93VXBsb2FkV2luZG93LmJpbmQodGhpcylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlcnIsIHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCYXJzYUFwaS5Db21tb24uQXN5bmMuRmluYWxpemUoZXJyLCByZXN1bHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGZldGNoOiAoY2FsbGJhY2spID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1zID0gW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2Nob2ljZWl0ZW0nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiAndXBsb2FkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogJ2ltYWdlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcDogJ1VwbG9hZCBJbWFnZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAndXBsb2FkJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhpdGVtcyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGVkLnVpLnJlZ2lzdHJ5LmFkZE1lbnVCdXR0b24oJ2RlZmF1bHRWZXJicycsIHtcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogJ9i52KjYp9ix2KrZh9in24wg2b7bjNi0INmB2LHYticsXG4gICAgICAgICAgICAgICAgICAgIGZldGNoOiAoY2FsbGJhY2spID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKGRlZmF1bHRWZXJic01lbnUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKGlzRnVuY3Rpb24od2luZG93LnRpbnltY2VTZXR1cCkpIHtcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LnRpbnltY2VTZXR1cC5jYWxsKHRoaXMsIHRoaXMsIGVkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgaGFzSW5pdCA9IGZhbHNlO1xuICAgICAgICAgICAgZWQub24oJ2luaXQnLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy53eXNpd3lnSW50aWFsaXplZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnRpYWxpemF0aW9uSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdGhpcy52YWx1ZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWx1ZSh0aGlzLnZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudGlueU1DRUNvbmZpZy5kZWZhdWx0Rm9udE5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgZWQuZXhlY0NvbW1hbmQoJ0ZvbnROYW1lJywgZmFsc2UsIHRoaXMudGlueU1DRUNvbmZpZy5kZWZhdWx0Rm9udE5hbWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodGhpcy50aW55TUNFQ29uZmlnLmRlZmF1bHRGb250U2l6ZSkge1xuICAgICAgICAgICAgICAgICAgICBlZC5leGVjQ29tbWFuZCgnRm9udFNpemUnLCBmYWxzZSwgdGhpcy50aW55TUNFQ29uZmlnLmRlZmF1bHRGb250U2l6ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzUmVhZG9ubHkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRSZWFkT25seSh0aGlzLmlzUmVhZG9ubHkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBUaGlzIHBpZWNlIG9mIGNvZGUgc29sdmVzIHRoZSBwcm9ibGVtIG9mIGNoYW5nZSBwcm9wYWdhdGlvbiBzbyB0aGF0XG4gICAgICAgICAgICAgICAgLy8gdGhlcmUgaXMgbm8gbmVlZCB0byBjYWxsIHRyaWdnZXJTYXZlXG4gICAgICAgICAgICAgICAgY29uc3Qgc2V0Q29udGVudCA9IGVkLnNldENvbnRlbnQ7XG4gICAgICAgICAgICAgICAgZWQuc2V0Q29udGVudCA9ICguLi5hcmdzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHNldENvbnRlbnQuYXBwbHkoZWQsIGFyZ3MpO1xuICAgICAgICAgICAgICAgICAgICBlZC5kaXNwYXRjaCgnY2hhbmdlJywge30pO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgaGFzSW5pdCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy50aW55SW5pdC5lbWl0KCk7XG4gICAgICAgICAgICAgICAgY29uc3QgaWZyYW1FbDogSFRNTElGcmFtZUVsZW1lbnQgPSBlZC5pZnJhbWVFbGVtZW50O1xuICAgICAgICAgICAgICAgIGlmIChpZnJhbUVsKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmcmFtRWwuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIHRoaXMuX29uTG9hZElmcmFtZS5iaW5kKHRoaXMpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgLy8gQ2F0Y2ggYW5kIHByb3BhZ2F0ZSB0aGUgY2hhbmdlIGV2ZW50XG4gICAgICAgICAgICBsZXQgb2xkQ29udGVudCA9IG51bGw7XG4gICAgICAgICAgICBlZC5vbignY2hhbmdlIGtleXVwJywgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld3ZhbCA9IGVkLmdldENvbnRlbnQoKTtcbiAgICAgICAgICAgICAgICBpZiAobmV3dmFsID09PSBvbGRDb250ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBvbGRDb250ZW50ID0gbmV3dmFsO1xuICAgICAgICAgICAgICAgIGlmICghaGFzSW5pdCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZWQuc2F2ZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuZWRpdG9yVmFsdWUgPSBuZXd2YWw7XG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KG5ld3ZhbCk7XG4gICAgICAgICAgICAgICAgLy8gdGhpcy5jb250ZXh0LmZpcmVFdmVudCgnY2hhbmdlJywgdGhpcywgbmV3dmFsLCBvbGR2YWwsIHt9KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBlZC5vbignZm9jdXMnLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gVE9ET1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmICh1c2VyU2V0dXApIHtcbiAgICAgICAgICAgICAgICB1c2VyU2V0dXAoZWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIFNob3dVcGxvYWRXaW5kb3coKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3VwbG9hZGVyLm9wZW4oKTtcbiAgICB9XG4gICAgU2hvd09wZW5GaWxlRGlhbG9nKGRvUmV0dXJuKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGlucHV0OiBhbnkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xuICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAnZmlsZScpO1xuICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoJ2FjY2VwdCcsICdpbWFnZS8qJyk7XG5cbiAgICAgICAgaW5wdXQub25jaGFuZ2UgPSAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmaWxlID0gaW5wdXQuZmlsZXNbMF07XG5cbiAgICAgICAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICAgICAgICByZWFkZXIub25sb2FkID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBiYXNlNjQgPSByZWFkZXIucmVzdWx0IGFzIHN0cmluZztcbiAgICAgICAgICAgICAgICBiYXNlNjQgPSBiYXNlNjQuc3BsaXQoJywnKVsxXTtcbiAgICAgICAgICAgICAgICBkb1JldHVybihudWxsLCBiYXNlNjQpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xuICAgICAgICB9O1xuXG4gICAgICAgIGlucHV0LmNsaWNrKCk7XG4gICAgfVxuICAgIEluc2VydEJhc2U2NChiYXNlNjQsIGRvUmV0dXJuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZWRpdG9yLmV4ZWNDb21tYW5kKCdtY2VJbnNlcnRDb250ZW50JywgZmFsc2UsICc8aW1nIHNyYz1kYXRhOmltYWdlL3BuZztiYXNlNjQsJyArIGJhc2U2NCArICcgLz4nKTtcbiAgICAgICAgZG9SZXR1cm4oKTtcbiAgICB9XG4gICAgZ2V0VmFsdWUoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgIGxldCByZXMgPSBudWxsO1xuICAgICAgICBpZiAodGhpcy53eXNpd3lnSW50aWFsaXplZCkge1xuICAgICAgICAgICAgY29uc3QgZWQgPSB0aW55bWNlLmdldCh0aGlzLnRpbnlIb3N0SWQpO1xuICAgICAgICAgICAgaWYgKGVkKSB7XG4gICAgICAgICAgICAgICAgcmVzID0gZWQuZ2V0Q29udGVudCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG4gICAgc2V0VmFsdWUodmFsdWUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLnNldFZhbHVlVGlueSgpO1xuICAgIH1cbiAgICBzZXRWYWx1ZVRpbnkoKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHRoaXMud3lzaXd5Z0ludGlhbGl6ZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGVkID0gdGlueW1jZS5nZXQodGhpcy50aW55SG9zdElkKTtcbiAgICAgICAgICAgIGlmIChlZCkge1xuICAgICAgICAgICAgICAgIGVkLnNldENvbnRlbnQodGhpcy52YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfVxuICAgIGZvY3VzKCk6IGFueSB7XG4gICAgICAgIGlmICh0aGlzLmlzUmVhZG9ubHkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMud3lzaXd5Z0ludGlhbGl6ZWQpIHtcbiAgICAgICAgICAgIHRpbnltY2UuZXhlY0NvbW1hbmQoJ21jZUZvY3VzJywgZmFsc2UsICdpZF9vZl90ZXh0YXJlYScpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHNldEVuYWJsZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMud3lzaXd5Z0ludGlhbGl6ZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGVkID0gdGlueW1jZS5nZXQodGhpcy50aW55SG9zdElkKTtcbiAgICAgICAgICAgIGVkLmdldEJvZHkoKS5zZXRBdHRyaWJ1dGUoJ2NvbnRlbnRlZGl0YWJsZScsIHRydWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2V0RGlzYWJsZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMud3lzaXd5Z0ludGlhbGl6ZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGVkID0gdGlueW1jZS5nZXQodGhpcy50aW55SG9zdElkKTtcbiAgICAgICAgICAgIGVkLmdldEJvZHkoKS5zZXRBdHRyaWJ1dGUoJ2NvbnRlbnRlZGl0YWJsZScsIGZhbHNlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBzZXRSZWFkT25seShyZWFkT25seSk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy53eXNpd3lnSW50aWFsaXplZCkge1xuICAgICAgICAgICAgY29uc3QgZWQgPSB0aW55bWNlLmdldCh0aGlzLnRpbnlIb3N0SWQpO1xuICAgICAgICAgICAgZWQuZ2V0Qm9keSgpLnNldEF0dHJpYnV0ZSgnY29udGVudGVkaXRhYmxlJywgIXJlYWRPbmx5KTtcbiAgICAgICAgICAgIGlmIChyZWFkT25seSkge1xuICAgICAgICAgICAgICAgICQoJy50b3gtZWRpdG9yLWhlYWRlcicpLmhpZGUoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgJCgnLnRveC1lZGl0b3ItaGVhZGVyJykuaGlkZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZGVzdHJveVRpbnltY2UoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLlNldHRpbmcuSXNIdG1sVmlld2VyKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZWQgPSB0aW55bWNlLmdldCh0aGlzLnRpbnlIb3N0SWQpO1xuICAgICAgICBpZiAoZWQpIHtcbiAgICAgICAgICAgIGlmIChlZC5pZnJhbWVFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgZWQuaWZyYW1lRWxlbWVudC5yZW1vdmVBbGxMaXN0ZW5lcnMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVkLmRlc3Ryb3koZmFsc2UpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHByaXZhdGUgdXBsb2FkRmlsZShmaWxlczogRmlsZVtdKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3VwbG9hZFNlcnZpY2UuY29tcHJlc3NGaWxlcyQoZmlsZXMpLnBpcGUoXG4gICAgICAgICAgICBjb25jYXRNYXAoKGZvcm1EYXRhOiBGb3JtRGF0YSkgPT5cbiAgICAgICAgICAgICAgICB0aGlzLl91cGxvYWRTZXJ2aWNlLnVwbG9hZChmb3JtRGF0YSwgdGhpcy5TZXR0aW5nLlN0b3JhZ2VGaWxlRmllbGRJZCkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgdGFwKChyZXMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlcykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwaWN0dXJlID0gcmVzWzBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwaWN0dXJlLkVycm9yTXNnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhcnNhQXBpLkJ3Lk1zZy5FcnJvcihwaWN0dXJlLkVycm9yTXNnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ucGljdHVyZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZUlkOiBwaWN0dXJlLkZpbGVJZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fYWRkSW1hZ2VzKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuICAgIHByaXZhdGUgX2FkZEltYWdlcyhmaWxlOiB7IEZpbGVJZDogc3RyaW5nIH0pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdXJsID0gJy9JSC5hc2h4P3R5PVN0b3JhZ2VGaWxlJmtleT0nICsgZmlsZS5GaWxlSWQ7XG4gICAgICAgIGNvbnN0IGh0bWwgPSAnPGltZyBzcmM9JyArIHVybCArICcgLz4nO1xuXG4gICAgICAgIHRoaXMuZWRpdG9yLmV4ZWNDb21tYW5kKCdtY2VJbnNlcnRDb250ZW50JywgZmFsc2UsIGh0bWwpO1xuICAgIH1cbiAgICBwcml2YXRlIHByZXBhcmUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW5pdGlsaXplKCk7XG4gICAgICAgIHRpbnltY2UuaW5pdCh0aGlzLnRpbnlNQ0VDb25maWcpO1xuICAgICAgICB0aGlzLmludGlhbGl6YXRpb25JblByb2dyZXNzID0gZmFsc2U7XG4gICAgICAgIHRoaXMud3lzaXd5Z0ludGlhbGl6ZWQgPSB0cnVlO1xuICAgIH1cbiAgICBwcml2YXRlIF9vbkxvYWRJZnJhbWUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmVkaXRvclZhbHVlO1xuICAgICAgICAvLyBjb25zdCBlZCA9IHRpbnltY2UuZ2V0KHRoaXMudGlueUhvc3RJZCk7XG4gICAgICAgIC8vIHRoaXMuX3JlbW92ZU92ZXJmbG93KGVkKTtcbiAgICAgICAgLy8gdGhpcy5kZXN0cm95VGlueW1jZSgpO1xuICAgICAgICAvLyB0aGlzLnByZXBhcmUoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9yZW1vdmVPdmVyZmxvdyhlZDogYW55KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGh0bWwgPSBlZC5pZnJhbWVFbGVtZW50Py5jb250ZW50RG9jdW1lbnQ/LnF1ZXJ5U2VsZWN0b3IoJ2h0bWwnKTtcbiAgICAgICAgaWYgKGh0bWwpIHtcbiAgICAgICAgICAgIGh0bWwuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJztcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmZC1pbnB1dCB0aW55d3JhcHBlclwiIFtzdHlsZS5taW4taGVpZ2h0LnB4XT1cImhlaWdodFwiIFtpZF09XCJ0aW55SG9zdElkXCI+PC9kaXY+XG48ZmQtZmlsZS11cGxvYWRlclxuICAgICN1cGxvYWRlclxuICAgIFtzdHlsZS5kaXNwbGF5XT1cIidub25lJ1wiXG4gICAgW2FjY2VwdF09XCInJ1wiXG4gICAgW211bHRpcGxlXT1cImZhbHNlXCJcbiAgICAoc2VsZWN0ZWRGaWxlc0NoYW5nZWQpPVwib25GaWxlU2VsZWN0aW9uKCRldmVudClcIlxuPjwvZmQtZmlsZS11cGxvYWRlcj5cbjwhLS0gPHRleHRhcmVhIFtpZF09XCJ0aW55SG9zdElkXCIgc3R5bGU9XCJoZWlnaHQ6IDEwMCU7IHZpc2liaWxpdHk6IGhpZGRlblwiPjwvdGV4dGFyZWE+IC0tPlxuIl19
|
|
405
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyc2EtdGlueWVtY2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvYmFyc2EtdGlueWVtY2UvYmFyc2EtdGlueWVtY2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvYmFyc2EtdGlueWVtY2UvYmFyc2EtdGlueWVtY2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILHVCQUF1QixFQUN2QixTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBRU4sU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdkcsT0FBTyxFQUFjLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7O0FBWTdELE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxhQUFhO0lBa0JyRCxZQUFzQixjQUE2QixFQUFZLEdBQWU7UUFDMUUsS0FBSyxFQUFFLENBQUM7UUFEVSxtQkFBYyxHQUFkLGNBQWMsQ0FBZTtRQUFZLFFBQUcsR0FBSCxHQUFHLENBQVk7UUFacEUsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ3RDLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3hDLGVBQVUsR0FBRyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUN4QyxrQkFBYSxHQUFRLEVBQUUsQ0FBQztRQStZaEIsa0JBQWEsR0FBRyxHQUFTLEVBQUU7WUFDL0IsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1lBQzlCLDJDQUEyQztZQUMzQyx5REFBeUQ7WUFFekQsbURBQW1EO1lBQ25ELDRCQUE0QjtZQUM1QixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ25CLENBQUMsQ0FBQztJQTdZRixDQUFDO0lBQ0QsV0FBVyxDQUFDLGFBQTRCO1FBQ3BDLEtBQUssQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDakMsSUFBSSxhQUFhLENBQUMsS0FBSyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUU7WUFDekQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQ25EO1FBQ0QsSUFBSSxhQUFhLENBQUMsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUU7WUFDN0QsTUFBTSxPQUFPLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUM7WUFDbkQsSUFBSSxPQUFPLEVBQUU7Z0JBQ1QsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2FBQ3JCO2lCQUFNO2dCQUNILElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQzthQUNwQjtTQUNKO1FBQ0QsSUFBSSxhQUFhLENBQUMsUUFBUSxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUU7WUFDL0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQ3pEO0lBQ0wsQ0FBQztJQUNELFFBQVE7UUFDSixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLE1BQU0sR0FBSSxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQTZCLENBQUMsWUFBWSxDQUFDO0lBQ3ZFLENBQUM7SUFFRCxlQUFlO1FBQ1gsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBQ0QsV0FBVztRQUNQLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELGVBQWUsQ0FBQyxLQUFhO1FBQ3pCLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUN6RSxDQUFDO0lBQ0QsV0FBVztRQUNQLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRTtZQUM1QixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsNEJBQTRCLENBQUMsRUFBRSxHQUFHLEVBQUU7Z0JBQzNDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNuQixDQUFDLENBQUMsQ0FBQztTQUNOO0lBQ0wsQ0FBQztJQUVELFNBQVM7UUFDTCxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFO1lBQzFCLE9BQU87U0FDVjtRQUNELElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNuQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUM7UUFDbEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7UUFFcEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEdBQUcsaUNBQWlDLENBQUM7UUFDbkUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1FBQzFDLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztRQUN0QyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDckMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7UUFDNUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLEdBQUcsV0FBVyxDQUFDO1FBQ2pELElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxHQUFHLE1BQU0sQ0FBQztRQUM1QyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDckMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxhQUFhLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFDO1FBQ2xELElBQUksQ0FBQyxhQUFhLENBQUMsbUJBQW1CO1lBQ2xDLGtHQUFrRyxDQUFDO1FBQ3ZHLElBQUksQ0FBQyxhQUFhLENBQUMsaUJBQWlCLEdBQUcsbUNBQW1DLENBQUM7UUFFM0UsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEdBQUc7WUFDekIsU0FBUztZQUNULFFBQVE7WUFDUixVQUFVO1lBQ1YsVUFBVTtZQUNWLFNBQVM7WUFDVCxNQUFNO1lBQ04sWUFBWTtZQUNaLGdCQUFnQjtZQUNoQixXQUFXO1lBQ1gsWUFBWTtZQUNaLE1BQU07WUFDTixPQUFPO1lBQ1AsV0FBVztZQUNYLGdCQUFnQjtZQUNoQixNQUFNO1lBQ04sT0FBTztZQUNQLE9BQU87WUFDUCxhQUFhO1lBQ2IsV0FBVztZQUNYLFNBQVM7WUFDVCxXQUFXO1lBQ1gsTUFBTTtZQUNOLGVBQWU7WUFDZixPQUFPO1lBQ1AsVUFBVTtZQUNWLGNBQWM7WUFDZCxhQUFhO1lBQ2IsV0FBVztZQUNYLFlBQVk7U0FDZixDQUFDO1FBQ0YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEdBQUc7WUFDekIsNEhBQTRIO2dCQUN4SCw4R0FBOEc7U0FDckgsQ0FBQztRQUVGLE1BQU0scUJBQXFCLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQztRQUNyRCxJQUFJLGVBQWUsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSwrQkFBK0IsQ0FBQyxDQUFDO1FBQ3RHLGVBQWUsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMscUJBQXFCLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFDdkYsSUFBSSxDQUFDLGVBQWUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxFQUFFO1lBQ3BELEtBQUssTUFBTSxJQUFJLElBQUksZUFBZSxFQUFFO2dCQUNoQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO2FBQzdDO1NBQ0o7UUFFRCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDakIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1lBQ25DLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztZQUNyQyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQzVDLG1DQUFtQztZQUNuQyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7U0FDdEM7UUFFRCxJQUFJLFNBQWdDLENBQUM7UUFFckMsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRTtZQUMxQixTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUM7U0FDeEM7UUFDRCxJQUFJLGdCQUFnQixHQUFRLEVBQUUsQ0FBQztRQUUvQixlQUFlO1FBQ2YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRTtZQUM5QixJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztZQUVqQixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTtnQkFDbEIsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO29CQUNuQixnQkFBZ0IsR0FBRyxFQUFFLENBQUM7b0JBQ3RCLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7d0JBQy9CLGdCQUFnQixDQUFDLElBQUksQ0FBQzs0QkFDbEIsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJOzRCQUNoQixJQUFJLEVBQUUsVUFBVTs0QkFDaEIsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLEdBQUcsQ0FBQzs0QkFDMUQsUUFBUSxFQUFFLEdBQUcsRUFBRTtnQ0FDWCx3REFBd0Q7Z0NBQ3hELEVBQUUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDOzRCQUNuRCxDQUFDO3lCQUNKLENBQUMsQ0FBQztvQkFDUCxDQUFDLENBQUMsQ0FBQztpQkFDTjtnQkFDRCxFQUFFLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFO29CQUN4QyxJQUFJLEVBQUUsUUFBUTtvQkFDZCxJQUFJLEVBQUUsT0FBTztvQkFDYixPQUFPLEVBQUUsd0JBQXdCO29CQUNqQyxRQUFRLEVBQUUsR0FBRyxFQUFFO3dCQUNYLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FDM0Isb0JBQW9CLEVBQ3BCOzRCQUNJLGNBQWMsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQzs0QkFDbEQsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQzt5QkFDN0MsRUFDRCxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRTs0QkFDWixRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO3dCQUNoRCxDQUFDLENBQ0osQ0FBQztvQkFDTixDQUFDO29CQUNELFlBQVksRUFBRSxHQUFHLEVBQUU7d0JBQ2YsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUMzQiwwQkFBMEIsRUFDMUI7NEJBQ0ksY0FBYyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO3lCQUNuRCxFQUNELENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFOzRCQUNaLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7d0JBQ2hELENBQUMsQ0FDSixDQUFDO29CQUNOLENBQUM7b0JBQ0QsS0FBSyxFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUU7d0JBQ2hCLE1BQU0sS0FBSyxHQUFHOzRCQUNWO2dDQUNJLElBQUksRUFBRSxZQUFZO2dDQUNsQixJQUFJLEVBQUUsUUFBUTtnQ0FDZCxJQUFJLEVBQUUsT0FBTztnQ0FDYixPQUFPLEVBQUUsY0FBYztnQ0FDdkIsS0FBSyxFQUFFLFFBQVE7NkJBQ2xCO3lCQUNKLENBQUM7d0JBQ0YsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUNwQixDQUFDO2lCQUNKLENBQUMsQ0FBQztnQkFFSCxFQUFFLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsY0FBYyxFQUFFO29CQUN6QyxJQUFJLEVBQUUsa0JBQWtCO29CQUN4QixLQUFLLEVBQUUsQ0FBQyxRQUFRLEVBQUUsRUFBRTt3QkFDaEIsUUFBUSxDQUFDLGdCQUFnQixDQUFDLENBQUM7b0JBQy9CLENBQUM7aUJBQ0osQ0FBQyxDQUFDO2dCQUNILElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFBRTtvQkFDakMsTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztpQkFDNUM7YUFDSjtZQUNELElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQztZQUNwQixFQUFFLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUU7Z0JBQ2YsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztnQkFDOUIsSUFBSSxDQUFDLHVCQUF1QixHQUFHLEtBQUssQ0FBQztnQkFDckMsSUFBSSxPQUFPLElBQUksQ0FBQyxLQUFLLEtBQUssV0FBVyxFQUFFO29CQUNuQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztpQkFDN0I7Z0JBQ0QsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsRUFBRTtvQkFDcEMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLENBQUM7aUJBQ3pFO2dCQUNELElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLEVBQUU7b0JBQ3BDLEVBQUUsQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxDQUFDO2lCQUN6RTtnQkFDRCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7b0JBQ2pCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2lCQUNyQztnQkFDRCxzRUFBc0U7Z0JBQ3RFLHVDQUF1QztnQkFDdkMsTUFBTSxVQUFVLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQztnQkFDakMsRUFBRSxDQUFDLFVBQVUsR0FBRyxDQUFDLEdBQUcsSUFBSSxFQUFFLEVBQUU7b0JBQ3hCLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO29CQUMzQixFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDOUIsQ0FBQyxDQUFDO2dCQUNGLE9BQU8sR0FBRyxJQUFJLENBQUM7Z0JBQ2YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDckIsTUFBTSxPQUFPLEdBQXNCLEVBQUUsQ0FBQyxhQUFhLENBQUM7Z0JBQ3BELElBQUksT0FBTyxFQUFFO29CQUNULE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2lCQUN4RDtZQUNMLENBQUMsQ0FBQyxDQUFDO1lBRUgsdUNBQXVDO1lBQ3ZDLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQztZQUN0QixFQUFFLENBQUMsRUFBRSxDQUFDLGNBQWMsRUFBRSxHQUFHLEVBQUU7Z0JBQ3ZCLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDL0IsSUFBSSxNQUFNLEtBQUssVUFBVSxFQUFFO29CQUN2QixPQUFPO2lCQUNWO2dCQUVELFVBQVUsR0FBRyxNQUFNLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxPQUFPLEVBQUU7b0JBQ1YsT0FBTztpQkFDVjtnQkFFRCxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ1YsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUM5Qiw4REFBOEQ7WUFDbEUsQ0FBQyxDQUFDLENBQUM7WUFFSCxFQUFFLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUU7Z0JBQ2hCLE9BQU87WUFDWCxDQUFDLENBQUMsQ0FBQztZQUVILElBQUksU0FBUyxFQUFFO2dCQUNYLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUNqQjtRQUNMLENBQUMsQ0FBQztJQUNOLENBQUM7SUFFRCxnQkFBZ0I7UUFDWixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFDRCxrQkFBa0IsQ0FBQyxRQUFRO1FBQ3ZCLE1BQU0sS0FBSyxHQUFRLFFBQVEsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbkQsS0FBSyxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDbkMsS0FBSyxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFFeEMsS0FBSyxDQUFDLFFBQVEsR0FBRyxHQUFHLEVBQUU7WUFDbEIsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUU1QixNQUFNLE1BQU0sR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2hDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxFQUFFO2dCQUNqQixJQUFJLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBZ0IsQ0FBQztnQkFDckMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzlCLFFBQVEsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDM0IsQ0FBQyxDQUFDO1lBQ0YsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQixDQUFDLENBQUM7UUFFRixLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUNELFlBQVksQ0FBQyxNQUFNLEVBQUUsUUFBUTtRQUN6QixJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsaUNBQWlDLEdBQUcsTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDO1FBQ3ZHLFFBQVEsRUFBRSxDQUFDO0lBQ2YsQ0FBQztJQUNELFFBQVE7UUFDSixJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUM7UUFDZixJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUN4QixNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUN4QyxJQUFJLEVBQUUsRUFBRTtnQkFDSixHQUFHLEdBQUcsRUFBRSxDQUFDLFVBQVUsRUFBRSxDQUFDO2FBQ3pCO1NBQ0o7UUFFRCxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7SUFDRCxRQUFRLENBQUMsS0FBSztRQUNWLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBQ0QsWUFBWTtRQUNSLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQ3hCLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3hDLElBQUksRUFBRSxFQUFFO2dCQUNKLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQzdCO1NBQ0o7UUFDRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDdEIsQ0FBQztJQUNELEtBQUs7UUFDRCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDakIsT0FBTyxJQUFJLENBQUM7U0FDZjtRQUVELElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQ3hCLE9BQU8sQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1NBQzVEO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELFNBQVM7UUFDTCxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUN4QixNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUN4QyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ3REO0lBQ0wsQ0FBQztJQUVELFVBQVU7UUFDTixJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUN4QixNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUN4QyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQ3ZEO0lBQ0wsQ0FBQztJQUNELFdBQVcsQ0FBQyxRQUFRO1FBQ2hCLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQ3hCLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3hDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN4RCxJQUFJLFFBQVEsRUFBRTtnQkFDVixDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQzthQUNsQztpQkFBTTtnQkFDSCxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQzthQUNsQztTQUNKO0lBQ0wsQ0FBQztJQUVELGNBQWM7UUFDVixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFO1lBQzNCLE9BQU87U0FDVjtRQUNELE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3hDLElBQUksRUFBRSxFQUFFO1lBQ0osa0VBQWtFO1lBQ2xFLElBQUksRUFBRSxDQUFDLGFBQWEsRUFBRTtnQkFDbEIsRUFBRSxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2FBQ3BFO1lBQ0QsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNyQjtJQUNMLENBQUM7SUFDTyxVQUFVLENBQUMsS0FBYTtRQUM1QixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FDakQsU0FBUyxDQUFDLENBQUMsUUFBa0IsRUFBRSxFQUFFLENBQzdCLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUMsSUFBSSxDQUN0RSxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNSLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDcEIsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLE9BQU8sQ0FBQyxRQUFRLEVBQUU7b0JBQ2xCLFFBQVEsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7b0JBQ3hDLE9BQU87aUJBQ1Y7Z0JBQ0QsTUFBTSxLQUFLLEdBQUc7b0JBQ1YsR0FBRyxPQUFPO29CQUNWLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTtpQkFDekIsQ0FBQztnQkFDRixJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQzFCO1FBQ0wsQ0FBQyxDQUFDLENBQ0wsQ0FDSixDQUNKLENBQUM7SUFDTixDQUFDO0lBQ08sVUFBVSxDQUFDLElBQXdCO1FBQ3ZDLE1BQU0sR0FBRyxHQUFHLDhCQUE4QixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDekQsTUFBTSxJQUFJLEdBQUcsV0FBVyxHQUFHLEdBQUcsR0FBRyxLQUFLLENBQUM7UUFFdkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFDTyxPQUFPO1FBQ1gsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxLQUFLLENBQUM7UUFDckMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztJQUNsQyxDQUFDO0lBV08sbUJBQW1CO1FBQ3ZCLE9BQU8sS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRU8sZUFBZSxDQUFDLEVBQU87UUFDM0IsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLGFBQWEsRUFBRSxlQUFlLEVBQUUsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RFLElBQUksSUFBSSxFQUFFO1lBQ04sSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1NBQ2xDO0lBQ0wsQ0FBQzs7bUhBM2FRLHNCQUFzQjt1R0FBdEIsc0JBQXNCLG9OQUZwQixDQUFDLGFBQWEsQ0FBQyw2S0MxQjlCLGlZQVNBOzJGRG1CYSxzQkFBc0I7a0JBUGxDLFNBQVM7K0JBQ0ksb0JBQW9CLG1CQUdiLHVCQUF1QixDQUFDLE1BQU0sYUFDcEMsQ0FBQyxhQUFhLENBQUM7NkhBR0gsU0FBUztzQkFBL0IsU0FBUzt1QkFBQyxVQUFVO2dCQUNaLE9BQU87c0JBQWYsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNJLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPdXRwdXQsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGaWxlVXBsb2FkZXJDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUnO1xuXG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50LCBCYXJzYUFwaSwgZ2V0VW5pcXVlSWQsIGlzRnVuY3Rpb24sIFVwbG9hZFNlcnZpY2UgfSBmcm9tICdiYXJzYS1ub3Zpbi1yYXktY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBjb25jYXRNYXAsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcyc7XG5kZWNsYXJlIGNvbnN0IHdpbmRvdzogYW55O1xuZGVjbGFyZSBjb25zdCB0aW55bWNlOiBhbnk7XG5kZWNsYXJlIGNvbnN0IGhlYWQ6IGFueTtcbmRlY2xhcmUgY29uc3QgJDogYW55O1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdic3UtYmFyc2EtdGlueWVtY2UnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9iYXJzYS10aW55ZW1jZS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vYmFyc2EtdGlueWVtY2UuY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtVcGxvYWRTZXJ2aWNlXVxufSlcbmV4cG9ydCBjbGFzcyBCYXJzYVRpbnllbWNlQ29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcbiAgICBAVmlld0NoaWxkKCd1cGxvYWRlcicpIF91cGxvYWRlcjogRmlsZVVwbG9hZGVyQ29tcG9uZW50O1xuICAgIEBJbnB1dCgpIFNldHRpbmc6IGFueTtcbiAgICBASW5wdXQoKSBpc1JlYWRvbmx5OiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHZhbHVlOiBhbnk7XG4gICAgQElucHV0KCkgZGVmYXVsdFZlcmJzOiB7IFRpdGxlOiBzdHJpbmc7IEh0bWw6IHN0cmluZyB9W107XG4gICAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gICAgQE91dHB1dCgpIHRpbnlJbml0ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIHRpbnlIb3N0SWQgPSB0aGlzLl9nZW5lcmF0ZVRpbnlIb3N0SWQoKTtcbiAgICB0aW55TUNFQ29uZmlnOiBhbnkgPSB7fTtcbiAgICBlZGl0b3I6IGFueTtcbiAgICB3eXNpd3lnSW50aWFsaXplZDogYm9vbGVhbjtcbiAgICBpbnRpYWxpemF0aW9uSW5Qcm9ncmVzczogYm9vbGVhbjtcbiAgICBlZGl0b3JWYWx1ZTogc3RyaW5nO1xuXG4gICAgaWZyYW1Cb2R5SW5uZXJIdG1sOiBzdHJpbmc7XG4gICAgaGVpZ2h0OiBudW1iZXI7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgX3VwbG9hZFNlcnZpY2U6IFVwbG9hZFNlcnZpY2UsIHByb3RlY3RlZCBfZWw6IEVsZW1lbnRSZWYpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG4gICAgbmdPbkNoYW5nZXMoc2ltcGxlQ2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uQ2hhbmdlcyhzaW1wbGVDaGFuZ2VzKTtcbiAgICAgICAgaWYgKHNpbXBsZUNoYW5nZXMudmFsdWUgJiYgIXNpbXBsZUNoYW5nZXMudmFsdWUuZmlyc3RDaGFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0VmFsdWUoc2ltcGxlQ2hhbmdlcy52YWx1ZS5jdXJyZW50VmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzaW1wbGVDaGFuZ2VzLmRpc2FibGUgJiYgIXNpbXBsZUNoYW5nZXMuZGlzYWJsZS5maXJzdENoYW5nZSkge1xuICAgICAgICAgICAgY29uc3QgZGlzYmFsZSA9IHNpbXBsZUNoYW5nZXMuZGlzYWJsZS5jdXJyZW50VmFsdWU7XG4gICAgICAgICAgICBpZiAoZGlzYmFsZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0RGlzYWJsZSgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldEVuYWJsZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzaW1wbGVDaGFuZ2VzLnJlYWRvbmx5ICYmICFzaW1wbGVDaGFuZ2VzLnJlYWRvbmx5LmZpcnN0Q2hhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLnNldFJlYWRPbmx5KHNpbXBsZUNoYW5nZXMucmVhZG9ubHkuY3VycmVudFZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgdGhpcy5oZWlnaHQgPSAodGhpcy5fZWwubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCkuY2xpZW50SGVpZ2h0O1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdBZnRlclZpZXdJbml0KCk7XG4gICAgICAgIHRoaXMubG9hZFRpbnlNY2UoKTtcbiAgICB9XG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgICAgIHRoaXMuZGVzdHJveVRpbnltY2UoKTtcbiAgICB9XG5cbiAgICBvbkZpbGVTZWxlY3Rpb24oZmlsZXM6IEZpbGVbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLnVwbG9hZEZpbGUoZmlsZXMpLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgbG9hZFRpbnlNY2UoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5TZXR0aW5nLklzSHRtbFZpZXdlcikge1xuICAgICAgICAgICAgaGVhZC5sb2FkKFsnTGliL3RpbnltY2UvdGlueW1jZS5taW4uanMnXSwgKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucHJlcGFyZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpbml0aWxpemUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnRpbnlNQ0VDb25maWcuc2V0dXApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRpbnlNQ0VDb25maWcuaGVpZ2h0ID0gJzEwMCUnO1xuICAgICAgICB0aGlzLnRpbnlNQ0VDb25maWcud2lkdGggPSAnMTAwJSc7XG4gICAgICAgIHRoaXMudGlueU1DRUNvbmZpZy5zZWxlY3RvciA9ICcjJyArIHRoaXMudGlueUhvc3RJZDtcblxuICAgICAgICB0aGlzLnRpbnlNQ0VDb25maWcuY29udGVudF9jc3MgPSAnYXNzZXRzL1Jlc291cmNlcy9mb250cy9JcmFuLmNzcyc7XG4gICAgICAgIHRoaXMudGlueU1DRUNvbmZpZy5kaXJlY3Rpb25hbGl0eSA9ICdydGwnO1xuICAgICAgICB0aGlzLnRpbnlNQ0VDb25maWcubGFuZ3VhZ2UgPSAnZmFfSVInO1xuICAgICAgICB0aGlzLnRpbnlNQ0VDb25maWcucHJvbW90aW9uID0gZmFsc2U7XG4gICAgICAgIHRoaXMudGlueU1DRUNvbmZpZy5wYXN0ZV9kYXRhX2ltYWdlcyA9IHRydWU7XG4gICAgICAgIHRoaXMudGlueU1DRUNvbmZpZy5kZWZhdWx0Rm9udE5hbWUgPSAnQmFyc2FGb250JztcbiAgICAgICAgdGhpcy50aW55TUNFQ29uZmlnLmRlZmF1bHRGb250U2l6ZSA9ICcxMnB4JztcbiAgICAgICAgdGhpcy50aW55TUNFQ29uZmlnLnN0YXR1c2JhciA9IGZhbHNlO1xuICAgICAgICB0aGlzLnRpbnlNQ0VDb25maWcuaW5saW5lID0gZmFsc2U7XG4gICAgICAgIHRoaXMudGlueU1DRUNvbmZpZy50aGVtZV9hZHZhbmNlZF9yZXNpemluZyA9IHRydWU7XG4gICAgICAgIHRoaXMudGlueU1DRUNvbmZpZy5mb250X2ZhbWlseV9mb3JtYXRzID1cbiAgICAgICAgICAgICdCYXJzYUZvbnQ9QmFyc2FGb250O0FyaWFsPWFyaWFsLGhlbHZldGljYSxzYW5zLXNlcmlmOyBDb3VyaWVyIE5ldz1jb3VyaWVyIG5ldyxjb3VyaWVyLG1vbm9zcGFjZTsnO1xuICAgICAgICB0aGlzLnRpbnlNQ0VDb25maWcuZm9udF9zaXplX2Zvcm1hdHMgPSAnOHB0IDEwcHQgMTJwdCAxNHB0IDE4cHQgMjRwdCAzNnB0JztcblxuICAgICAgICB0aGlzLnRpbnlNQ0VDb25maWcucGx1Z2lucyA9IFtcbiAgICAgICAgICAgICdhZHZsaXN0JyxcbiAgICAgICAgICAgICdhbmNob3InLFxuICAgICAgICAgICAgJ2F1dG9saW5rJyxcbiAgICAgICAgICAgICdhdXRvc2F2ZScsXG4gICAgICAgICAgICAnY2hhcm1hcCcsXG4gICAgICAgICAgICAnY29kZScsXG4gICAgICAgICAgICAnY29kZXNhbXBsZScsXG4gICAgICAgICAgICAnZGlyZWN0aW9uYWxpdHknLFxuICAgICAgICAgICAgJ2Vtb3RpY29ucycsXG4gICAgICAgICAgICAnZnVsbHNjcmVlbicsXG4gICAgICAgICAgICAnaGVscCcsXG4gICAgICAgICAgICAnaW1hZ2UnLFxuICAgICAgICAgICAgJ2ltcG9ydGNzcycsXG4gICAgICAgICAgICAnaW5zZXJ0ZGF0ZXRpbWUnLFxuICAgICAgICAgICAgJ2xpbmsnLFxuICAgICAgICAgICAgJ2xpc3RzJyxcbiAgICAgICAgICAgICdtZWRpYScsXG4gICAgICAgICAgICAnbm9uYnJlYWtpbmcnLFxuICAgICAgICAgICAgJ3BhZ2VicmVhaycsXG4gICAgICAgICAgICAncHJldmlldycsXG4gICAgICAgICAgICAncXVpY2tiYXJzJyxcbiAgICAgICAgICAgICdzYXZlJyxcbiAgICAgICAgICAgICdzZWFyY2hyZXBsYWNlJyxcbiAgICAgICAgICAgICd0YWJsZScsXG4gICAgICAgICAgICAndGVtcGxhdGUnLFxuICAgICAgICAgICAgJ3Zpc3VhbGJsb2NrcycsXG4gICAgICAgICAgICAndmlzdWFsY2hhcnMnLFxuICAgICAgICAgICAgJ3dvcmRjb3VudCcsXG4gICAgICAgICAgICAnYXV0b3Jlc2l6ZSdcbiAgICAgICAgXTtcbiAgICAgICAgdGhpcy50aW55TUNFQ29uZmlnLnRvb2xiYXIgPSBbXG4gICAgICAgICAgICBgZGVmYXVsdFZlcmJzIGJhcnNhSW1hZ2UgfCBpbnNlcnQgfCBmb3JlY29sb3IgYmFja2NvbG9yIGZvbnRmYW1pbHkgZm9udHNpemUgfCBidWxsaXN0IG51bWxpc3Qgb3V0ZGVudCBpbmRlbnQgfCByZW1vdmVmb3JtYXRgICtcbiAgICAgICAgICAgICAgICBgIHwgdW5kbyByZWRvIHwgY29weSBjdXQgcGFzdGUgfCBibG9ja3MgfCBib2xkIGl0YWxpYyB8IGFsaWdubGVmdCBhbGlnbmNlbnRlciBhbGlnbnJpZ2h0IGFsaWduanVzdGlmeSBsdHIgcnRsYFxuICAgICAgICBdO1xuXG4gICAgICAgIGNvbnN0IHRpbnltY2VTZXR0aW5nc0dsb2JhbCA9IHdpbmRvdy50aW55bWNlU2V0dGluZ3M7XG4gICAgICAgIGxldCB0aW55bWNlU2V0dGluZ3MgPSBCYXJzYUFwaS5Db21tb24uVXRpbC5UcnlHZXRWYWx1ZSh0aGlzLlNldHRpbmcsICdKc29uRXh0cmFQcm9wLnRpbnltY2VTZXR0aW5ncycpO1xuICAgICAgICB0aW55bWNlU2V0dGluZ3MgPSBCYXJzYUFwaS5Db21tb24uTWVyZ2VyLk1lcmdlKHRpbnltY2VTZXR0aW5nc0dsb2JhbCwgdGlueW1jZVNldHRpbmdzKTtcbiAgICAgICAgaWYgKCF0aW55bWNlU2V0dGluZ3MgJiYgQXJyYXkuaXNBcnJheSh0aW55bWNlU2V0dGluZ3MpKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGlueW1jZVNldHRpbmdzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50aW55TUNFQ29uZmlnW2l0ZW0ua2V5XSA9IGl0ZW0udmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pc1JlYWRvbmx5KSB7XG4gICAgICAgICAgICB0aGlzLnRpbnlNQ0VDb25maWcubWVudWJhciA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy50aW55TUNFQ29uZmlnLnN0YXR1c2JhciA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy50aW55TUNFQ29uZmlnLnBsdWdpbnMgPSBbJ2F1dG9yZXNpemUnXTtcbiAgICAgICAgICAgIC8vIHRoaXMudGlueU1DRUNvbmZpZy5wbHVnaW5zID0gW107XG4gICAgICAgICAgICB0aGlzLnRpbnlNQ0VDb25maWcudG9vbGJhciA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHVzZXJTZXR1cDogKGVkaXRvcjogYW55KSA9PiB2b2lkO1xuXG4gICAgICAgIGlmICh0aGlzLnRpbnlNQ0VDb25maWcuc2V0dXApIHtcbiAgICAgICAgICAgIHVzZXJTZXR1cCA9IHRoaXMudGlueU1DRUNvbmZpZy5zZXR1cDtcbiAgICAgICAgfVxuICAgICAgICBsZXQgZGVmYXVsdFZlcmJzTWVudTogYW55ID0gW107XG5cbiAgICAgICAgLy8gQkVHSU46IHNldHVwXG4gICAgICAgIHRoaXMudGlueU1DRUNvbmZpZy5zZXR1cCA9IChlZCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5lZGl0b3IgPSBlZDtcblxuICAgICAgICAgICAgaWYgKCF0aGlzLmlzUmVhZG9ubHkpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kZWZhdWx0VmVyYnMpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdFZlcmJzTWVudSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRlZmF1bHRWZXJicy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0VmVyYnNNZW51LnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBpdGVtLkh0bWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ21lbnVpdGVtJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBpdGVtLlRpdGxlIHx8IGl0ZW0uSHRtbC5yZXBsYWNlKC88YnJcXHMqXFwvPz4vZ2ksICcgJyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25BY3Rpb246ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZWQuZXhlY0NvbW1hbmQoJ21jZUluc2VydFJhd0hUTUwnLCBmYWxzZSwgaXRlbS5IdG1sKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWQuaW5zZXJ0Q29udGVudChpdGVtLkh0bWwsIHsgZm9ybWF0OiAncmF3JyB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVkLnVpLnJlZ2lzdHJ5LmFkZFNwbGl0QnV0dG9uKCdiYXJzYUltYWdlJywge1xuICAgICAgICAgICAgICAgICAgICB0ZXh0OiAnaW5zZXJ0JyxcbiAgICAgICAgICAgICAgICAgICAgaWNvbjogJ2ltYWdlJyxcbiAgICAgICAgICAgICAgICAgICAgdG9vbHRpcDogJ0luc2VydCBJbWFnZSBBcyBCYXNlNjQnLFxuICAgICAgICAgICAgICAgICAgICBvbkFjdGlvbjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgQmFyc2FBcGkuQ29tbW9uLkFzeW5jLldhdGVyZmFsbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVGluZW1jZS5FbWJlZEltYWdlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5GaWxlRGlhbG9nOiB0aGlzLlNob3dPcGVuRmlsZURpYWxvZy5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRCYXNlNjQ6IHRoaXMuSW5zZXJ0QmFzZTY0LmJpbmQodGhpcylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlcnIsIHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCYXJzYUFwaS5Db21tb24uQXN5bmMuRmluYWxpemUoZXJyLCByZXN1bHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIG9uSXRlbUFjdGlvbjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgQmFyc2FBcGkuQ29tbW9uLkFzeW5jLldhdGVyZmFsbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVGluZW1jZS5VcGxvYWRUb0RhdGFiYXNlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5GaWxlRGlhbG9nOiB0aGlzLlNob3dVcGxvYWRXaW5kb3cuYmluZCh0aGlzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVyciwgcmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhcnNhQXBpLkNvbW1vbi5Bc3luYy5GaW5hbGl6ZShlcnIsIHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgZmV0Y2g6IChjYWxsYmFjaykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXRlbXMgPSBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnY2hvaWNlaXRlbScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6ICd1cGxvYWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOiAnaW1hZ2UnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwOiAnVXBsb2FkIEltYWdlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICd1cGxvYWQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKGl0ZW1zKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgZWQudWkucmVnaXN0cnkuYWRkTWVudUJ1dHRvbignZGVmYXVsdFZlcmJzJywge1xuICAgICAgICAgICAgICAgICAgICB0ZXh0OiAn2LnYqNin2LHYqtmH2KfbjCDZvtuM2LQg2YHYsdi2JyxcbiAgICAgICAgICAgICAgICAgICAgZmV0Y2g6IChjYWxsYmFjaykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soZGVmYXVsdFZlcmJzTWVudSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAoaXNGdW5jdGlvbih3aW5kb3cudGlueW1jZVNldHVwKSkge1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cudGlueW1jZVNldHVwLmNhbGwodGhpcywgdGhpcywgZWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBoYXNJbml0ID0gZmFsc2U7XG4gICAgICAgICAgICBlZC5vbignaW5pdCcsICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnd5c2l3eWdJbnRpYWxpemVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmludGlhbGl6YXRpb25JblByb2dyZXNzID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnZhbHVlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbHVlKHRoaXMudmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodGhpcy50aW55TUNFQ29uZmlnLmRlZmF1bHRGb250TmFtZSkge1xuICAgICAgICAgICAgICAgICAgICBlZC5leGVjQ29tbWFuZCgnRm9udE5hbWUnLCBmYWxzZSwgdGhpcy50aW55TUNFQ29uZmlnLmRlZmF1bHRGb250TmFtZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnRpbnlNQ0VDb25maWcuZGVmYXVsdEZvbnRTaXplKSB7XG4gICAgICAgICAgICAgICAgICAgIGVkLmV4ZWNDb21tYW5kKCdGb250U2l6ZScsIGZhbHNlLCB0aGlzLnRpbnlNQ0VDb25maWcuZGVmYXVsdEZvbnRTaXplKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNSZWFkb25seSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFJlYWRPbmx5KHRoaXMuaXNSZWFkb25seSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIFRoaXMgcGllY2Ugb2YgY29kZSBzb2x2ZXMgdGhlIHByb2JsZW0gb2YgY2hhbmdlIHByb3BhZ2F0aW9uIHNvIHRoYXRcbiAgICAgICAgICAgICAgICAvLyB0aGVyZSBpcyBubyBuZWVkIHRvIGNhbGwgdHJpZ2dlclNhdmVcbiAgICAgICAgICAgICAgICBjb25zdCBzZXRDb250ZW50ID0gZWQuc2V0Q29udGVudDtcbiAgICAgICAgICAgICAgICBlZC5zZXRDb250ZW50ID0gKC4uLmFyZ3MpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgc2V0Q29udGVudC5hcHBseShlZCwgYXJncyk7XG4gICAgICAgICAgICAgICAgICAgIGVkLmRpc3BhdGNoKCdjaGFuZ2UnLCB7fSk7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBoYXNJbml0ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnRpbnlJbml0LmVtaXQoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBpZnJhbUVsOiBIVE1MSUZyYW1lRWxlbWVudCA9IGVkLmlmcmFtZUVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgaWYgKGlmcmFtRWwpIHtcbiAgICAgICAgICAgICAgICAgICAgaWZyYW1FbC5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgdGhpcy5fb25Mb2FkSWZyYW1lKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgLy8gQ2F0Y2ggYW5kIHByb3BhZ2F0ZSB0aGUgY2hhbmdlIGV2ZW50XG4gICAgICAgICAgICBsZXQgb2xkQ29udGVudCA9IG51bGw7XG4gICAgICAgICAgICBlZC5vbignY2hhbmdlIGtleXVwJywgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld3ZhbCA9IGVkLmdldENvbnRlbnQoKTtcbiAgICAgICAgICAgICAgICBpZiAobmV3dmFsID09PSBvbGRDb250ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBvbGRDb250ZW50ID0gbmV3dmFsO1xuICAgICAgICAgICAgICAgIGlmICghaGFzSW5pdCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZWQuc2F2ZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuZWRpdG9yVmFsdWUgPSBuZXd2YWw7XG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KG5ld3ZhbCk7XG4gICAgICAgICAgICAgICAgLy8gdGhpcy5jb250ZXh0LmZpcmVFdmVudCgnY2hhbmdlJywgdGhpcywgbmV3dmFsLCBvbGR2YWwsIHt9KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBlZC5vbignZm9jdXMnLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gVE9ET1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmICh1c2VyU2V0dXApIHtcbiAgICAgICAgICAgICAgICB1c2VyU2V0dXAoZWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIFNob3dVcGxvYWRXaW5kb3coKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3VwbG9hZGVyLm9wZW4oKTtcbiAgICB9XG4gICAgU2hvd09wZW5GaWxlRGlhbG9nKGRvUmV0dXJuKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGlucHV0OiBhbnkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xuICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAnZmlsZScpO1xuICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoJ2FjY2VwdCcsICdpbWFnZS8qJyk7XG5cbiAgICAgICAgaW5wdXQub25jaGFuZ2UgPSAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmaWxlID0gaW5wdXQuZmlsZXNbMF07XG5cbiAgICAgICAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICAgICAgICByZWFkZXIub25sb2FkID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBiYXNlNjQgPSByZWFkZXIucmVzdWx0IGFzIHN0cmluZztcbiAgICAgICAgICAgICAgICBiYXNlNjQgPSBiYXNlNjQuc3BsaXQoJywnKVsxXTtcbiAgICAgICAgICAgICAgICBkb1JldHVybihudWxsLCBiYXNlNjQpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xuICAgICAgICB9O1xuXG4gICAgICAgIGlucHV0LmNsaWNrKCk7XG4gICAgfVxuICAgIEluc2VydEJhc2U2NChiYXNlNjQsIGRvUmV0dXJuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZWRpdG9yLmV4ZWNDb21tYW5kKCdtY2VJbnNlcnRDb250ZW50JywgZmFsc2UsICc8aW1nIHNyYz1kYXRhOmltYWdlL3BuZztiYXNlNjQsJyArIGJhc2U2NCArICcgLz4nKTtcbiAgICAgICAgZG9SZXR1cm4oKTtcbiAgICB9XG4gICAgZ2V0VmFsdWUoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgIGxldCByZXMgPSBudWxsO1xuICAgICAgICBpZiAodGhpcy53eXNpd3lnSW50aWFsaXplZCkge1xuICAgICAgICAgICAgY29uc3QgZWQgPSB0aW55bWNlLmdldCh0aGlzLnRpbnlIb3N0SWQpO1xuICAgICAgICAgICAgaWYgKGVkKSB7XG4gICAgICAgICAgICAgICAgcmVzID0gZWQuZ2V0Q29udGVudCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG4gICAgc2V0VmFsdWUodmFsdWUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLnNldFZhbHVlVGlueSgpO1xuICAgIH1cbiAgICBzZXRWYWx1ZVRpbnkoKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHRoaXMud3lzaXd5Z0ludGlhbGl6ZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGVkID0gdGlueW1jZS5nZXQodGhpcy50aW55SG9zdElkKTtcbiAgICAgICAgICAgIGlmIChlZCkge1xuICAgICAgICAgICAgICAgIGVkLnNldENvbnRlbnQodGhpcy52YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfVxuICAgIGZvY3VzKCk6IGFueSB7XG4gICAgICAgIGlmICh0aGlzLmlzUmVhZG9ubHkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMud3lzaXd5Z0ludGlhbGl6ZWQpIHtcbiAgICAgICAgICAgIHRpbnltY2UuZXhlY0NvbW1hbmQoJ21jZUZvY3VzJywgZmFsc2UsICdpZF9vZl90ZXh0YXJlYScpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHNldEVuYWJsZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMud3lzaXd5Z0ludGlhbGl6ZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGVkID0gdGlueW1jZS5nZXQodGhpcy50aW55SG9zdElkKTtcbiAgICAgICAgICAgIGVkLmdldEJvZHkoKS5zZXRBdHRyaWJ1dGUoJ2NvbnRlbnRlZGl0YWJsZScsIHRydWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2V0RGlzYWJsZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMud3lzaXd5Z0ludGlhbGl6ZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGVkID0gdGlueW1jZS5nZXQodGhpcy50aW55SG9zdElkKTtcbiAgICAgICAgICAgIGVkLmdldEJvZHkoKS5zZXRBdHRyaWJ1dGUoJ2NvbnRlbnRlZGl0YWJsZScsIGZhbHNlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBzZXRSZWFkT25seShyZWFkT25seSk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy53eXNpd3lnSW50aWFsaXplZCkge1xuICAgICAgICAgICAgY29uc3QgZWQgPSB0aW55bWNlLmdldCh0aGlzLnRpbnlIb3N0SWQpO1xuICAgICAgICAgICAgZWQuZ2V0Qm9keSgpLnNldEF0dHJpYnV0ZSgnY29udGVudGVkaXRhYmxlJywgIXJlYWRPbmx5KTtcbiAgICAgICAgICAgIGlmIChyZWFkT25seSkge1xuICAgICAgICAgICAgICAgICQoJy50b3gtZWRpdG9yLWhlYWRlcicpLmhpZGUoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgJCgnLnRveC1lZGl0b3ItaGVhZGVyJykuaGlkZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZGVzdHJveVRpbnltY2UoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLlNldHRpbmcuSXNIdG1sVmlld2VyKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZWQgPSB0aW55bWNlLmdldCh0aGlzLnRpbnlIb3N0SWQpO1xuICAgICAgICBpZiAoZWQpIHtcbiAgICAgICAgICAgIC8vIHRpbnltY2UuZXhlY0NvbW1hbmQoJ21jZVJlbW92ZUNvbnRyb2wnLCB0cnVlLCB0aGlzLnRpbnlIb3N0SWQpO1xuICAgICAgICAgICAgaWYgKGVkLmlmcmFtZUVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICBlZC5pZnJhbWVFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2xvYWQnLCB0aGlzLl9vbkxvYWRJZnJhbWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWQuZGVzdHJveShmYWxzZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcHJpdmF0ZSB1cGxvYWRGaWxlKGZpbGVzOiBGaWxlW10pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdXBsb2FkU2VydmljZS5jb21wcmVzc0ZpbGVzJChmaWxlcykucGlwZShcbiAgICAgICAgICAgIGNvbmNhdE1hcCgoZm9ybURhdGE6IEZvcm1EYXRhKSA9PlxuICAgICAgICAgICAgICAgIHRoaXMuX3VwbG9hZFNlcnZpY2UudXBsb2FkKGZvcm1EYXRhLCB0aGlzLlNldHRpbmcuU3RvcmFnZUZpbGVGaWVsZElkKS5waXBlKFxuICAgICAgICAgICAgICAgICAgICB0YXAoKHJlcykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmVzKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBpY3R1cmUgPSByZXNbMF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBpY3R1cmUuRXJyb3JNc2cpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmFyc2FBcGkuQncuTXNnLkVycm9yKHBpY3R1cmUuRXJyb3JNc2cpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5waWN0dXJlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlSWQ6IHBpY3R1cmUuRmlsZUlkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9hZGRJbWFnZXModmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfYWRkSW1hZ2VzKGZpbGU6IHsgRmlsZUlkOiBzdHJpbmcgfSk6IHZvaWQge1xuICAgICAgICBjb25zdCB1cmwgPSAnL0lILmFzaHg/dHk9U3RvcmFnZUZpbGUma2V5PScgKyBmaWxlLkZpbGVJZDtcbiAgICAgICAgY29uc3QgaHRtbCA9ICc8aW1nIHNyYz0nICsgdXJsICsgJyAvPic7XG5cbiAgICAgICAgdGhpcy5lZGl0b3IuZXhlY0NvbW1hbmQoJ21jZUluc2VydENvbnRlbnQnLCBmYWxzZSwgaHRtbCk7XG4gICAgfVxuICAgIHByaXZhdGUgcHJlcGFyZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbml0aWxpemUoKTtcbiAgICAgICAgdGlueW1jZS5pbml0KHRoaXMudGlueU1DRUNvbmZpZyk7XG4gICAgICAgIHRoaXMuaW50aWFsaXphdGlvbkluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICAgICAgdGhpcy53eXNpd3lnSW50aWFsaXplZCA9IHRydWU7XG4gICAgfVxuICAgIHByaXZhdGUgX29uTG9hZElmcmFtZSA9ICgpOiB2b2lkID0+IHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuZWRpdG9yVmFsdWU7XG4gICAgICAgIC8vIGNvbnN0IGVkID0gdGlueW1jZS5nZXQodGhpcy50aW55SG9zdElkKTtcbiAgICAgICAgLy8gZWQuZXhlY0NvbW1hbmQoJ21jZUluc2VydENvbnRlbnQnLCBmYWxzZSwgdGhpcy52YWx1ZSk7XG5cbiAgICAgICAgLy8gZWQuaW5zZXJ0Q29udGVudCh0aGlzLnZhbHVlLCB7IGZvcm1hdDogJ3JhdycgfSk7XG4gICAgICAgIC8vIHRoaXMuX3JlbW92ZU92ZXJmbG93KGVkKTtcbiAgICAgICAgdGhpcy5kZXN0cm95VGlueW1jZSgpO1xuICAgICAgICB0aGlzLnByZXBhcmUoKTtcbiAgICB9O1xuICAgIHByaXZhdGUgX2dlbmVyYXRlVGlueUhvc3RJZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYGFfJHtnZXRVbmlxdWVJZCgyKX1gO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3JlbW92ZU92ZXJmbG93KGVkOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaHRtbCA9IGVkLmlmcmFtZUVsZW1lbnQ/LmNvbnRlbnREb2N1bWVudD8ucXVlcnlTZWxlY3RvcignaHRtbCcpO1xuICAgICAgICBpZiAoaHRtbCkge1xuICAgICAgICAgICAgaHRtbC5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZkLWlucHV0IHRpbnl3cmFwcGVyXCIgW3N0eWxlLm1pbi1oZWlnaHQucHhdPVwiaGVpZ2h0XCIgW2lkXT1cInRpbnlIb3N0SWRcIj48L2Rpdj5cbjxmZC1maWxlLXVwbG9hZGVyXG4gICAgI3VwbG9hZGVyXG4gICAgW3N0eWxlLmRpc3BsYXldPVwiJ25vbmUnXCJcbiAgICBbYWNjZXB0XT1cIicnXCJcbiAgICBbbXVsdGlwbGVdPVwiZmFsc2VcIlxuICAgIChzZWxlY3RlZEZpbGVzQ2hhbmdlZCk9XCJvbkZpbGVTZWxlY3Rpb24oJGV2ZW50KVwiXG4+PC9mZC1maWxlLXVwbG9hZGVyPlxuPCEtLSA8dGV4dGFyZWEgW2lkXT1cInRpbnlIb3N0SWRcIiBzdHlsZT1cImhlaWdodDogMTAwJTsgdmlzaWJpbGl0eTogaGlkZGVuXCI+PC90ZXh0YXJlYT4gLS0+XG4iXX0=
|
|
@@ -6599,8 +6599,17 @@ class BarsaTinyemceComponent extends BaseComponent {
|
|
|
6599
6599
|
this._el = _el;
|
|
6600
6600
|
this.valueChange = new EventEmitter();
|
|
6601
6601
|
this.tinyInit = new EventEmitter();
|
|
6602
|
-
this.tinyHostId =
|
|
6602
|
+
this.tinyHostId = this._generateTinyHostId();
|
|
6603
6603
|
this.tinyMCEConfig = {};
|
|
6604
|
+
this._onLoadIframe = () => {
|
|
6605
|
+
this.value = this.editorValue;
|
|
6606
|
+
// const ed = tinymce.get(this.tinyHostId);
|
|
6607
|
+
// ed.execCommand('mceInsertContent', false, this.value);
|
|
6608
|
+
// ed.insertContent(this.value, { format: 'raw' });
|
|
6609
|
+
// this._removeOverflow(ed);
|
|
6610
|
+
this.destroyTinymce();
|
|
6611
|
+
this.prepare();
|
|
6612
|
+
};
|
|
6604
6613
|
}
|
|
6605
6614
|
ngOnChanges(simpleChanges) {
|
|
6606
6615
|
super.ngOnChanges(simpleChanges);
|
|
@@ -6643,6 +6652,9 @@ class BarsaTinyemceComponent extends BaseComponent {
|
|
|
6643
6652
|
}
|
|
6644
6653
|
}
|
|
6645
6654
|
initilize() {
|
|
6655
|
+
if (this.tinyMCEConfig.setup) {
|
|
6656
|
+
return;
|
|
6657
|
+
}
|
|
6646
6658
|
this.tinyMCEConfig.height = '100%';
|
|
6647
6659
|
this.tinyMCEConfig.width = '100%';
|
|
6648
6660
|
this.tinyMCEConfig.selector = '#' + this.tinyHostId;
|
|
@@ -6713,12 +6725,13 @@ class BarsaTinyemceComponent extends BaseComponent {
|
|
|
6713
6725
|
if (this.tinyMCEConfig.setup) {
|
|
6714
6726
|
userSetup = this.tinyMCEConfig.setup;
|
|
6715
6727
|
}
|
|
6716
|
-
|
|
6728
|
+
let defaultVerbsMenu = [];
|
|
6717
6729
|
// BEGIN: setup
|
|
6718
6730
|
this.tinyMCEConfig.setup = (ed) => {
|
|
6719
6731
|
this.editor = ed;
|
|
6720
6732
|
if (!this.isReadonly) {
|
|
6721
6733
|
if (this.defaultVerbs) {
|
|
6734
|
+
defaultVerbsMenu = [];
|
|
6722
6735
|
this.defaultVerbs.forEach((item) => {
|
|
6723
6736
|
defaultVerbsMenu.push({
|
|
6724
6737
|
value: item.Html,
|
|
@@ -6800,7 +6813,7 @@ class BarsaTinyemceComponent extends BaseComponent {
|
|
|
6800
6813
|
this.tinyInit.emit();
|
|
6801
6814
|
const iframEl = ed.iframeElement;
|
|
6802
6815
|
if (iframEl) {
|
|
6803
|
-
iframEl.addEventListener('load', this._onLoadIframe
|
|
6816
|
+
iframEl.addEventListener('load', this._onLoadIframe);
|
|
6804
6817
|
}
|
|
6805
6818
|
});
|
|
6806
6819
|
// Catch and propagate the change event
|
|
@@ -6912,8 +6925,9 @@ class BarsaTinyemceComponent extends BaseComponent {
|
|
|
6912
6925
|
}
|
|
6913
6926
|
const ed = tinymce.get(this.tinyHostId);
|
|
6914
6927
|
if (ed) {
|
|
6928
|
+
// tinymce.execCommand('mceRemoveControl', true, this.tinyHostId);
|
|
6915
6929
|
if (ed.iframeElement) {
|
|
6916
|
-
ed.iframeElement.
|
|
6930
|
+
ed.iframeElement.removeEventListener('load', this._onLoadIframe);
|
|
6917
6931
|
}
|
|
6918
6932
|
ed.destroy(false);
|
|
6919
6933
|
}
|
|
@@ -6942,12 +6956,8 @@ class BarsaTinyemceComponent extends BaseComponent {
|
|
|
6942
6956
|
this.intializationInProgress = false;
|
|
6943
6957
|
this.wysiwygIntialized = true;
|
|
6944
6958
|
}
|
|
6945
|
-
|
|
6946
|
-
|
|
6947
|
-
// const ed = tinymce.get(this.tinyHostId);
|
|
6948
|
-
// this._removeOverflow(ed);
|
|
6949
|
-
// this.destroyTinymce();
|
|
6950
|
-
// this.prepare();
|
|
6959
|
+
_generateTinyHostId() {
|
|
6960
|
+
return `a_${getUniqueId(2)}`;
|
|
6951
6961
|
}
|
|
6952
6962
|
_removeOverflow(ed) {
|
|
6953
6963
|
var _a, _b;
|