@flogeez/angular-tiptap-editor 3.1.4 → 3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/esm2022/lib/components/editor/angular-tiptap-editor.component.mjs +25 -3
- package/esm2022/lib/models/ate-editor-ref.mjs +319 -0
- package/esm2022/lib/services/ate-editor-commands.service.mjs +34 -1
- package/esm2022/lib/services/ate-editor-registry.service.mjs +94 -0
- package/esm2022/lib/services/ate-export.service.mjs +71 -0
- package/esm2022/lib/services/ate-i18n.service.mjs +28 -1
- package/esm2022/lib/utils/ate-markdown.utils.mjs +179 -0
- package/esm2022/public-api.mjs +4 -1
- package/fesm2022/flogeez-angular-tiptap-editor.mjs +739 -3
- package/fesm2022/flogeez-angular-tiptap-editor.mjs.map +1 -1
- package/lib/components/editor/angular-tiptap-editor.component.d.ts +9 -1
- package/lib/models/ate-editor-ref.d.ts +73 -0
- package/lib/services/ate-editor-commands.service.d.ts +14 -0
- package/lib/services/ate-editor-registry.service.d.ts +36 -0
- package/lib/services/ate-export.service.d.ts +27 -0
- package/lib/services/ate-i18n.service.d.ts +26 -0
- package/lib/utils/ate-markdown.utils.d.ts +4 -0
- package/package.json +1 -1
- package/public-api.d.ts +3 -0
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { Injectable, signal, computed } from "@angular/core";
|
|
2
|
+
import { AteEditorRef } from "../models/ate-editor-ref";
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
/**
|
|
5
|
+
* A root-level registry service to register, unregister, and manage active editor instances.
|
|
6
|
+
* This service is provided in 'root' and can be injected anywhere in the application.
|
|
7
|
+
*/
|
|
8
|
+
export class AteEditorRegistry {
|
|
9
|
+
constructor() {
|
|
10
|
+
// Map of registered editors
|
|
11
|
+
this._editors = signal(new Map());
|
|
12
|
+
this.editors = this._editors.asReadonly();
|
|
13
|
+
// Active (last focused or last registered) editor ID
|
|
14
|
+
this._activeEditorId = signal(null);
|
|
15
|
+
this.activeEditorId = this._activeEditorId.asReadonly();
|
|
16
|
+
// List of all active editor IDs reactively
|
|
17
|
+
this.editorIds = computed(() => Array.from(this._editors().keys()));
|
|
18
|
+
// Active AteEditorRef reactively
|
|
19
|
+
this.activeEditor = computed(() => {
|
|
20
|
+
const activeId = this._activeEditorId();
|
|
21
|
+
if (!activeId) {
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
return this._editors().get(activeId) || null;
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
static { this.counter = 0; }
|
|
28
|
+
/**
|
|
29
|
+
* Register an editor instance.
|
|
30
|
+
* Returns the final registered ID.
|
|
31
|
+
*/
|
|
32
|
+
register(id, getEditor, commandsService) {
|
|
33
|
+
const finalId = id || `ate-editor-${++AteEditorRegistry.counter}`;
|
|
34
|
+
const editorRef = new AteEditorRef(finalId, getEditor, commandsService);
|
|
35
|
+
this._editors.update(map => {
|
|
36
|
+
const newMap = new Map(map);
|
|
37
|
+
newMap.set(finalId, editorRef);
|
|
38
|
+
return newMap;
|
|
39
|
+
});
|
|
40
|
+
// If there is no active editor, make this one active
|
|
41
|
+
if (!this._activeEditorId()) {
|
|
42
|
+
this._activeEditorId.set(finalId);
|
|
43
|
+
}
|
|
44
|
+
return finalId;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Unregister an editor instance by ID.
|
|
48
|
+
*/
|
|
49
|
+
unregister(id) {
|
|
50
|
+
this._editors.update(map => {
|
|
51
|
+
const newMap = new Map(map);
|
|
52
|
+
newMap.delete(id);
|
|
53
|
+
return newMap;
|
|
54
|
+
});
|
|
55
|
+
// If the active editor is the one being unregistered, find a fallback
|
|
56
|
+
if (this._activeEditorId() === id) {
|
|
57
|
+
const remainingIds = this.editorIds();
|
|
58
|
+
if (remainingIds.length > 0) {
|
|
59
|
+
// Set active to the last registered one remaining
|
|
60
|
+
this._activeEditorId.set(remainingIds[remainingIds.length - 1]);
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
this._activeEditorId.set(null);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Mark an editor as active (usually on focus).
|
|
69
|
+
*/
|
|
70
|
+
setActive(id) {
|
|
71
|
+
if (this._editors().has(id)) {
|
|
72
|
+
this._activeEditorId.set(id);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Retrieve an editor reference by ID, or the active editor if ID is not specified.
|
|
77
|
+
*/
|
|
78
|
+
get(id) {
|
|
79
|
+
if (id) {
|
|
80
|
+
return this._editors().get(id);
|
|
81
|
+
}
|
|
82
|
+
const activeId = this._activeEditorId();
|
|
83
|
+
return activeId ? this._editors().get(activeId) : undefined;
|
|
84
|
+
}
|
|
85
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AteEditorRegistry, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
86
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AteEditorRegistry, providedIn: "root" }); }
|
|
87
|
+
}
|
|
88
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AteEditorRegistry, decorators: [{
|
|
89
|
+
type: Injectable,
|
|
90
|
+
args: [{
|
|
91
|
+
providedIn: "root",
|
|
92
|
+
}]
|
|
93
|
+
}] });
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRlLWVkaXRvci1yZWdpc3RyeS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci10aXB0YXAtZWRpdG9yL3NyYy9saWIvc2VydmljZXMvYXRlLWVkaXRvci1yZWdpc3RyeS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU3RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBR3hEOzs7R0FHRztBQUlILE1BQU0sT0FBTyxpQkFBaUI7SUFIOUI7UUFNRSw0QkFBNEI7UUFDWCxhQUFRLEdBQUcsTUFBTSxDQUE0QixJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDaEUsWUFBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFOUMscURBQXFEO1FBQ3BDLG9CQUFlLEdBQUcsTUFBTSxDQUFnQixJQUFJLENBQUMsQ0FBQztRQUN0RCxtQkFBYyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFNUQsMkNBQTJDO1FBQ2xDLGNBQVMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRXhFLGlDQUFpQztRQUN4QixpQkFBWSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDcEMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDZCxPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7WUFDRCxPQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxHQUFHLENBQUMsUUFBUSxD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b21wdXRlZCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBFZGl0b3IgfSBmcm9tIFwiQHRpcHRhcC9jb3JlXCI7XG5pbXBvcnQgeyBBdGVFZGl0b3JSZWYgfSBmcm9tIFwiLi4vbW9kZWxzL2F0ZS1lZGl0b3ItcmVmXCI7XG5pbXBvcnQgeyBBdGVFZGl0b3JDb21tYW5kc1NlcnZpY2UgfSBmcm9tIFwiLi9hdGUtZWRpdG9yLWNvbW1hbmRzLnNlcnZpY2VcIjtcblxuLyoqXG4gKiBBIHJvb3QtbGV2ZWwgcmVnaXN0cnkgc2VydmljZSB0byByZWdpc3RlciwgdW5yZWdpc3RlciwgYW5kIG1hbmFnZSBhY3RpdmUgZWRpdG9yIGluc3RhbmNlcy5cbiAqIFRoaXMgc2VydmljZSBpcyBwcm92aWRlZCBpbiAncm9vdCcgYW5kIGNhbiBiZSBpbmplY3RlZCBhbnl3aGVyZSBpbiB0aGUgYXBwbGljYXRpb24uXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogXCJyb290XCIsXG59KVxuZXhwb3J0IGNsYXNzIEF0ZUVkaXRvclJlZ2lzdHJ5IHtcbiAgcHJpdmF0ZSBzdGF0aWMgY291bnRlciA9IDA7XG5cbiAgLy8gTWFwIG9mIHJlZ2lzdGVyZWQgZWRpdG9yc1xuICBwcml2YXRlIHJlYWRvbmx5IF9lZGl0b3JzID0gc2lnbmFsPE1hcDxzdHJpbmcsIEF0ZUVkaXRvclJlZj4+KG5ldyBNYXAoKSk7XG4gIHJlYWRvbmx5IGVkaXRvcnMgPSB0aGlzLl9lZGl0b3JzLmFzUmVhZG9ubHkoKTtcblxuICAvLyBBY3RpdmUgKGxhc3QgZm9jdXNlZCBvciBsYXN0IHJlZ2lzdGVyZWQpIGVkaXRvciBJRFxuICBwcml2YXRlIHJlYWRvbmx5IF9hY3RpdmVFZGl0b3JJZCA9IHNpZ25hbDxzdHJpbmcgfCBudWxsPihudWxsKTtcbiAgcmVhZG9ubHkgYWN0aXZlRWRpdG9ySWQgPSB0aGlzLl9hY3RpdmVFZGl0b3JJZC5hc1JlYWRvbmx5KCk7XG5cbiAgLy8gTGlzdCBvZiBhbGwgYWN0aXZlIGVkaXRvciBJRHMgcmVhY3RpdmVseVxuICByZWFkb25seSBlZGl0b3JJZHMgPSBjb21wdXRlZCgoKSA9PiBBcnJheS5mcm9tKHRoaXMuX2VkaXRvcnMoKS5rZXlzKCkpKTtcblxuICAvLyBBY3RpdmUgQXRlRWRpdG9yUmVmIHJlYWN0aXZlbHlcbiAgcmVhZG9ubHkgYWN0aXZlRWRpdG9yID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGFjdGl2ZUlkID0gdGhpcy5fYWN0aXZlRWRpdG9ySWQoKTtcbiAgICBpZiAoIWFjdGl2ZUlkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2VkaXRvcnMoKS5nZXQoYWN0aXZlSWQpIHx8IG51bGw7XG4gIH0pO1xuXG4gIC8qKlxuICAgKiBSZWdpc3RlciBhbiBlZGl0b3IgaW5zdGFuY2UuXG4gICAqIFJldHVybnMgdGhlIGZpbmFsIHJlZ2lzdGVyZWQgSUQuXG4gICAqL1xuICByZWdpc3RlcihcbiAgICBpZDogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgIGdldEVkaXRvcjogKCkgPT4gRWRpdG9yIHwgbnVsbCxcbiAgICBjb21tYW5kc1NlcnZpY2U6IEF0ZUVkaXRvckNvbW1hbmRzU2VydmljZVxuICApOiBzdHJpbmcge1xuICAgIGNvbnN0IGZpbmFsSWQgPSBpZCB8fCBgYXRlLWVkaXRvci0keysrQXRlRWRpdG9yUmVnaXN0cnkuY291bnRlcn1gO1xuICAgIGNvbnN0IGVkaXRvclJlZiA9IG5ldyBBdGVFZGl0b3JSZWYoZmluYWxJZCwgZ2V0RWRpdG9yLCBjb21tYW5kc1NlcnZpY2UpO1xuXG4gICAgdGhpcy5fZWRpdG9ycy51cGRhdGUobWFwID0+IHtcbiAgICAgIGNvbnN0IG5ld01hcCA9IG5ldyBNYXAobWFwKTtcbiAgICAgIG5ld01hcC5zZXQoZmluYWxJZCwgZWRpdG9yUmVmKTtcbiAgICAgIHJldHVybiBuZXdNYXA7XG4gICAgfSk7XG5cbiAgICAvLyBJZiB0aGVyZSBpcyBubyBhY3RpdmUgZWRpdG9yLCBtYWtlIHRoaXMgb25lIGFjdGl2ZVxuICAgIGlmICghdGhpcy5fYWN0aXZlRWRpdG9ySWQoKSkge1xuICAgICAgdGhpcy5fYWN0aXZlRWRpdG9ySWQuc2V0KGZpbmFsSWQpO1xuICAgIH1cblxuICAgIHJldHVybiBmaW5hbElkO1xuICB9XG5cbiAgLyoqXG4gICAqIFVucmVnaXN0ZXIgYW4gZWRpdG9yIGluc3RhbmNlIGJ5IElELlxuICAgKi9cbiAgdW5yZWdpc3RlcihpZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5fZWRpdG9ycy51cGRhdGUobWFwID0+IHtcbiAgICAgIGNvbnN0IG5ld01hcCA9IG5ldyBNYXAobWFwKTtcbiAgICAgIG5ld01hcC5kZWxldGUoaWQpO1xuICAgICAgcmV0dXJuIG5ld01hcDtcbiAgICB9KTtcblxuICAgIC8vIElmIHRoZSBhY3RpdmUgZWRpdG9yIGlzIHRoZSBvbmUgYmVpbmcgdW5yZWdpc3RlcmVkLCBmaW5kIGEgZmFsbGJhY2tcbiAgICBpZiAodGhpcy5fYWN0aXZlRWRpdG9ySWQoKSA9PT0gaWQpIHtcbiAgICAgIGNvbnN0IHJlbWFpbmluZ0lkcyA9IHRoaXMuZWRpdG9ySWRzKCk7XG4gICAgICBpZiAocmVtYWluaW5nSWRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgLy8gU2V0IGFjdGl2ZSB0byB0aGUgbGFzdCByZWdpc3RlcmVkIG9uZSByZW1haW5pbmdcbiAgICAgICAgdGhpcy5fYWN0aXZlRWRpdG9ySWQuc2V0KHJlbWFpbmluZ0lkc1tyZW1haW5pbmdJZHMubGVuZ3RoIC0gMV0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fYWN0aXZlRWRpdG9ySWQuc2V0KG51bGwpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBNYXJrIGFuIGVkaXRvciBhcyBhY3RpdmUgKHVzdWFsbHkgb24gZm9jdXMpLlxuICAgKi9cbiAgc2V0QWN0aXZlKGlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fZWRpdG9ycygpLmhhcyhpZCkpIHtcbiAgICAgIHRoaXMuX2FjdGl2ZUVkaXRvcklkLnNldChpZCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlIGFuIGVkaXRvciByZWZlcmVuY2UgYnkgSUQsIG9yIHRoZSBhY3RpdmUgZWRpdG9yIGlmIElEIGlzIG5vdCBzcGVjaWZpZWQuXG4gICAqL1xuICBnZXQoaWQ/OiBzdHJpbmcpOiBBdGVFZGl0b3JSZWYgfCB1bmRlZmluZWQge1xuICAgIGlmIChpZCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2VkaXRvcnMoKS5nZXQoaWQpO1xuICAgIH1cbiAgICBjb25zdCBhY3RpdmVJZCA9IHRoaXMuX2FjdGl2ZUVkaXRvcklkKCk7XG4gICAgcmV0dXJuIGFjdGl2ZUlkID8gdGhpcy5fZWRpdG9ycygpLmdldChhY3RpdmVJZCkgOiB1bmRlZmluZWQ7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { Injectable } from "@angular/core";
|
|
2
|
+
import { htmlToMarkdown } from "../utils/ate-markdown.utils";
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class AteExportService {
|
|
5
|
+
// ============================================================
|
|
6
|
+
// Public Content Getters
|
|
7
|
+
// ============================================================
|
|
8
|
+
/** Returns the editor content as HTML string. */
|
|
9
|
+
getHtml(editor) {
|
|
10
|
+
return editor.getHTML();
|
|
11
|
+
}
|
|
12
|
+
/** Returns the editor content as plain text. */
|
|
13
|
+
getText(editor) {
|
|
14
|
+
return editor.getText();
|
|
15
|
+
}
|
|
16
|
+
/** Returns the editor content converted to Markdown. */
|
|
17
|
+
getMarkdown(editor) {
|
|
18
|
+
const html = editor.getHTML();
|
|
19
|
+
return htmlToMarkdown(html);
|
|
20
|
+
}
|
|
21
|
+
/** Returns the editor content in the specified format. */
|
|
22
|
+
getContent(editor, format) {
|
|
23
|
+
switch (format) {
|
|
24
|
+
case "html":
|
|
25
|
+
return this.getHtml(editor);
|
|
26
|
+
case "markdown":
|
|
27
|
+
return this.getMarkdown(editor);
|
|
28
|
+
case "text":
|
|
29
|
+
return this.getText(editor);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
// ============================================================
|
|
33
|
+
// Export Methods
|
|
34
|
+
// ============================================================
|
|
35
|
+
/** Copies the editor content to the clipboard. */
|
|
36
|
+
async exportToClipboard(editor, format) {
|
|
37
|
+
const content = this.getContent(editor, format);
|
|
38
|
+
await navigator.clipboard.writeText(content);
|
|
39
|
+
}
|
|
40
|
+
/** Downloads the editor content as a file. */
|
|
41
|
+
exportToFile(editor, format, options) {
|
|
42
|
+
const content = this.getContent(editor, format);
|
|
43
|
+
const baseName = options?.filename || "document";
|
|
44
|
+
const extensions = {
|
|
45
|
+
html: "html",
|
|
46
|
+
markdown: "md",
|
|
47
|
+
text: "txt",
|
|
48
|
+
};
|
|
49
|
+
const mimeTypes = {
|
|
50
|
+
html: "text/html;charset=utf-8",
|
|
51
|
+
markdown: "text/markdown;charset=utf-8",
|
|
52
|
+
text: "text/plain;charset=utf-8",
|
|
53
|
+
};
|
|
54
|
+
const filename = `${baseName}.${extensions[format]}`;
|
|
55
|
+
const blob = new Blob([content], { type: mimeTypes[format] });
|
|
56
|
+
const url = URL.createObjectURL(blob);
|
|
57
|
+
const link = document.createElement("a");
|
|
58
|
+
link.href = url;
|
|
59
|
+
link.download = filename;
|
|
60
|
+
document.body.appendChild(link);
|
|
61
|
+
link.click();
|
|
62
|
+
document.body.removeChild(link);
|
|
63
|
+
URL.revokeObjectURL(url);
|
|
64
|
+
}
|
|
65
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AteExportService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
66
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AteExportService }); }
|
|
67
|
+
}
|
|
68
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AteExportService, decorators: [{
|
|
69
|
+
type: Injectable
|
|
70
|
+
}] });
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRlLWV4cG9ydC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci10aXB0YXAtZWRpdG9yL3NyYy9saWIvc2VydmljZXMvYXRlLWV4cG9ydC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDOztBQWU3RCxNQUFNLE9BQU8sZ0JBQWdCO0lBQzNCLCtEQUErRDtJQUMvRCx5QkFBeUI7SUFDekIsK0RBQStEO0lBRS9ELGlEQUFpRDtJQUNqRCxPQUFPLENBQUMsTUFBYztRQUNwQixPQUFPLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsZ0RBQWdEO0lBQ2hELE9BQU8sQ0FBQyxNQUFjO1FBQ3BCLE9BQU8sTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCx3REFBd0Q7SUFDeEQsV0FBVyxDQUFDLE1BQWM7UUFDeEIsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzlCLE9BQU8sY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCwwREFBMEQ7SUFDMUQsVUFBVSxDQUFDLE1BQWMsRUFBRSxNQUF1QjtRQUNoRCxRQUFRLE1BQU0sRUFBRSxDQUFDO1lBQ2YsS0FBSyxNQUFNO2dCQUNULE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUM5QixLQUFLLFVBQVU7Z0JBQ2IsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2xDLEtBQUssTUFBTTtnQkFDVCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDaEMsQ0FBQztJQUNILENBQUM7SUFFRCwrREFBK0Q7SUFDL0QsaUJBQWlCO0lBQ2pCLCtEQUErRDtJQUUvRCxrREFBa0Q7SUFDbEQsS0FBSyxDQUFDLGlCQUFpQixDQUFDLE1BQWMsRUFBRSxNQUF1QjtRQUM3RCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNoRCxNQUFNLFNBQVMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCw4Q0FBOEM7SUFDOUMsWUFBWSxDQUFDLE1BQWMsRUFBRSxNQUF1QixFQUFFLE9BQTBCO1FBQzlFLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ2hELE1BQU0sUUFBUSxHQUFHLE9BQU8sRUFBRSxRQUFRLElBQUksVUFBVSxDQUFDO1FBRWpELE1BQU0sVUFBVSxHQUFvQztZQUNsRCxJQUFJLEVBQUUsTUFBTTtZQUNaLFFBQVEsRUFBRSxJQUFJO1lBQ2QsSUFBSSxFQUFFLEtBQUs7U0FDWixDQUFDO1FBQ0YsTUFBTSxTQUFTLEdBQW9DO1lBQ2pELElBQUksRUFBRSx5QkFBeUI7WUFDL0IsUUFBUSxFQUFFLDZCQUE2QjtZQUN2QyxJQUFJLEVBQUUsMEJBQTBCO1NBQ2pDLENBQUM7UUFFRixNQUFNLFFBQVEsR0FBRyxHQUFHLFFBQVEsSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUNyRCxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDOUQsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV0QyxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO1FBQ2hCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNiLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hDLEdBQUcsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDM0IsQ0FBQzsrR0F0RVUsZ0JBQWdCO21IQUFoQixnQkFBZ0I7OzRGQUFoQixnQkFBZ0I7a0JBRDVCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEVkaXRvciB9IGZyb20gXCJAdGlwdGFwL2NvcmVcIjtcbmltcG9ydCB7IGh0bWxUb01hcmtkb3duIH0gZnJvbSBcIi4uL3V0aWxzL2F0ZS1tYXJrZG93bi51dGlsc1wiO1xuXG4vKiogU3VwcG9ydGVkIGV4cG9ydCBmb3JtYXRzICovXG5leHBvcnQgdHlwZSBBdGVFeHBvcnRGb3JtYXQgPSBcImh0bWxcIiB8IFwibWFya2Rvd25cIiB8IFwidGV4dFwiO1xuXG4vKiogRXhwb3J0IGRlbGl2ZXJ5IG1ldGhvZCAqL1xuZXhwb3J0IHR5cGUgQXRlRXhwb3J0TWV0aG9kID0gXCJjbGlwYm9hcmRcIiB8IFwiZG93bmxvYWRcIjtcblxuLyoqIE9wdGlvbnMgZm9yIGZpbGUgZG93bmxvYWQgKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXRlRXhwb3J0T3B0aW9ucyB7XG4gIC8qKiBDdXN0b20gZmlsZW5hbWUgKHdpdGhvdXQgZXh0ZW5zaW9uKS4gRGVmYXVsdHMgdG8gXCJkb2N1bWVudFwiLiAqL1xuICBmaWxlbmFtZT86IHN0cmluZztcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEF0ZUV4cG9ydFNlcnZpY2Uge1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gUHVibGljIENvbnRlbnQgR2V0dGVyc1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKiogUmV0dXJucyB0aGUgZWRpdG9yIGNvbnRlbnQgYXMgSFRNTCBzdHJpbmcuICovXG4gIGdldEh0bWwoZWRpdG9yOiBFZGl0b3IpOiBzdHJpbmcge1xuICAgIHJldHVybiBlZGl0b3IuZ2V0SFRNTCgpO1xuICB9XG5cbiAgLyoqIFJldHVybnMgdGhlIGVkaXRvciBjb250ZW50IGFzIHBsYWluIHRleHQuICovXG4gIGdldFRleHQoZWRpdG9yOiBFZGl0b3IpOiBzdHJpbmcge1xuICAgIHJldHVybiBlZGl0b3IuZ2V0VGV4dCgpO1xuICB9XG5cbiAgLyoqIFJldHVybnMgdGhlIGVkaXRvciBjb250ZW50IGNvbnZlcnRlZCB0byBNYXJrZG93bi4gKi9cbiAgZ2V0TWFya2Rvd24oZWRpdG9yOiBFZGl0b3IpOiBzdHJpbmcge1xuICAgIGNvbnN0IGh0bWwgPSBlZGl0b3IuZ2V0SFRNTCgpO1xuICAgIHJldHVybiBodG1sVG9NYXJrZG93bihodG1sKTtcbiAgfVxuXG4gIC8qKiBSZXR1cm5zIHRoZSBlZGl0b3IgY29udGVudCBpbiB0aGUgc3BlY2lmaWVkIGZvcm1hdC4gKi9cbiAgZ2V0Q29udGVudChlZGl0b3I6IEVkaXRvciwgZm9ybWF0OiBBdGVFeHBvcnRGb3JtYXQpOiBzdHJpbmcge1xuICAgIHN3aXRjaCAoZm9ybWF0KSB7XG4gICAgICBjYXNlIFwiaHRtbFwiOlxuICAgICAgICByZXR1cm4gdGhpcy5nZXRIdG1sKGVkaXRvcik7XG4gICAgICBjYXNlIFwibWFya2Rvd25cIjpcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TWFya2Rvd24oZWRpdG9yKTtcbiAgICAgIGNhc2UgXCJ0ZXh0XCI6XG4gICAgICAgIHJldHVybiB0aGlzLmdldFRleHQoZWRpdG9yKTtcbiAgICB9XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gRXhwb3J0IE1ldGhvZHNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqIENvcGllcyB0aGUgZWRpdG9yIGNvbnRlbnQgdG8gdGhlIGNsaXBib2FyZC4gKi9cbiAgYXN5bmMgZXhwb3J0VG9DbGlwYm9hcmQoZWRpdG9yOiBFZGl0b3IsIGZvcm1hdDogQXRlRXhwb3J0Rm9ybWF0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgY29udGVudCA9IHRoaXMuZ2V0Q29udGVudChlZGl0b3IsIGZvcm1hdCk7XG4gICAgYXdhaXQgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQoY29udGVudCk7XG4gIH1cblxuICAvKiogRG93bmxvYWRzIHRoZSBlZGl0b3IgY29udGVudCBhcyBhIGZpbGUuICovXG4gIGV4cG9ydFRvRmlsZShlZGl0b3I6IEVkaXRvciwgZm9ybWF0OiBBdGVFeHBvcnRGb3JtYXQsIG9wdGlvbnM/OiBBdGVFeHBvcnRPcHRpb25zKTogdm9pZCB7XG4gICAgY29uc3QgY29udGVudCA9IHRoaXMuZ2V0Q29udGVudChlZGl0b3IsIGZvcm1hdCk7XG4gICAgY29uc3QgYmFzZU5hbWUgPSBvcHRpb25zPy5maWxlbmFtZSB8fCBcImRvY3VtZW50XCI7XG5cbiAgICBjb25zdCBleHRlbnNpb25zOiBSZWNvcmQ8QXRlRXhwb3J0Rm9ybWF0LCBzdHJpbmc+ID0ge1xuICAgICAgaHRtbDogXCJodG1sXCIsXG4gICAgICBtYXJrZG93bjogXCJtZFwiLFxuICAgICAgdGV4dDogXCJ0eHRcIixcbiAgICB9O1xuICAgIGNvbnN0IG1pbWVUeXBlczogUmVjb3JkPEF0ZUV4cG9ydEZvcm1hdCwgc3RyaW5nPiA9IHtcbiAgICAgIGh0bWw6IFwidGV4dC9odG1sO2NoYXJzZXQ9dXRmLThcIixcbiAgICAgIG1hcmtkb3duOiBcInRleHQvbWFya2Rvd247Y2hhcnNldD11dGYtOFwiLFxuICAgICAgdGV4dDogXCJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLThcIixcbiAgICB9O1xuXG4gICAgY29uc3QgZmlsZW5hbWUgPSBgJHtiYXNlTmFtZX0uJHtleHRlbnNpb25zW2Zvcm1hdF19YDtcbiAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2NvbnRlbnRdLCB7IHR5cGU6IG1pbWVUeXBlc1tmb3JtYXRdIH0pO1xuICAgIGNvbnN0IHVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG5cbiAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImFcIik7XG4gICAgbGluay5ocmVmID0gdXJsO1xuICAgIGxpbmsuZG93bmxvYWQgPSBmaWxlbmFtZTtcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspO1xuICAgIGxpbmsuY2xpY2soKTtcbiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGxpbmspO1xuICAgIFVSTC5yZXZva2VPYmplY3RVUkwodXJsKTtcbiAgfVxufVxuIl19
|
|
@@ -172,6 +172,19 @@ const ENGLISH_TRANSLATIONS = {
|
|
|
172
172
|
error: "Error",
|
|
173
173
|
success: "Success",
|
|
174
174
|
},
|
|
175
|
+
export: {
|
|
176
|
+
export: "Export",
|
|
177
|
+
html: "HTML",
|
|
178
|
+
markdown: "Markdown",
|
|
179
|
+
text: "Plain Text",
|
|
180
|
+
copyHtml: "Copy as HTML",
|
|
181
|
+
copyMarkdown: "Copy as Markdown",
|
|
182
|
+
copyText: "Copy as plain text",
|
|
183
|
+
downloadHtml: "Download .html",
|
|
184
|
+
downloadMarkdown: "Download .md",
|
|
185
|
+
downloadText: "Download .txt",
|
|
186
|
+
copiedSuccess: "Copied to clipboard!",
|
|
187
|
+
},
|
|
175
188
|
};
|
|
176
189
|
const FRENCH_TRANSLATIONS = {
|
|
177
190
|
toolbar: {
|
|
@@ -345,6 +358,19 @@ const FRENCH_TRANSLATIONS = {
|
|
|
345
358
|
error: "Erreur",
|
|
346
359
|
success: "Succès",
|
|
347
360
|
},
|
|
361
|
+
export: {
|
|
362
|
+
export: "Exporter",
|
|
363
|
+
html: "HTML",
|
|
364
|
+
markdown: "Markdown",
|
|
365
|
+
text: "Texte brut",
|
|
366
|
+
copyHtml: "Copier en HTML",
|
|
367
|
+
copyMarkdown: "Copier en Markdown",
|
|
368
|
+
copyText: "Copier en texte brut",
|
|
369
|
+
downloadHtml: "Télécharger .html",
|
|
370
|
+
downloadMarkdown: "Télécharger .md",
|
|
371
|
+
downloadText: "Télécharger .txt",
|
|
372
|
+
copiedSuccess: "Copié dans le presse-papiers !",
|
|
373
|
+
},
|
|
348
374
|
};
|
|
349
375
|
export class AteI18nService {
|
|
350
376
|
constructor() {
|
|
@@ -367,6 +393,7 @@ export class AteI18nService {
|
|
|
367
393
|
this.imageUpload = computed(() => this.translations().imageUpload);
|
|
368
394
|
this.editor = computed(() => this.translations().editor);
|
|
369
395
|
this.common = computed(() => this.translations().common);
|
|
396
|
+
this.export = computed(() => this.translations().export);
|
|
370
397
|
// Automatically detect browser language
|
|
371
398
|
this.detectBrowserLanguage();
|
|
372
399
|
}
|
|
@@ -419,4 +446,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
419
446
|
providedIn: "root",
|
|
420
447
|
}]
|
|
421
448
|
}], ctorParameters: () => [] });
|
|
422
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRlLWkxOG4uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdGlwdGFwLWVkaXRvci9zcmMvbGliL3NlcnZpY2VzL2F0ZS1pMThuLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQStMN0QsTUFBTSxvQkFBb0IsR0FBb0I7SUFDNUMsT0FBTyxFQUFFO1FBQ1AsSUFBSSxFQUFFLGNBQWM7UUFDcEIsTUFBTSxFQUFFLGdCQUFnQjtRQUN4QixTQUFTLEVBQUUsbUJBQW1CO1FBQzlCLE1BQU0sRUFBRSw2QkFBNkI7UUFDckMsSUFBSSxFQUFFLHFCQUFxQjtRQUMzQixTQUFTLEVBQUUsWUFBWTtRQUN2QixXQUFXLEVBQUUsYUFBYTtRQUMxQixTQUFTLEVBQUUsV0FBVztRQUN0QixTQUFTLEVBQUUsV0FBVztRQUN0QixlQUFlLEVBQUUsa0JBQWtCO1FBQ25DLFFBQVEsRUFBRSxXQUFXO1FBQ3JCLFFBQVEsRUFBRSxXQUFXO1FBQ3JCLFFBQVEsRUFBRSxXQUFXO1FBQ3JCLFVBQVUsRUFBRSxhQUFhO1FBQ3pCLFdBQVcsRUFBRSxjQUFjO1FBQzNCLFVBQVUsRUFBRSxZQUFZO1FBQ3hCLFNBQVMsRUFBRSxZQUFZO1FBQ3ZCLFdBQVcsRUFBRSxjQUFjO1FBQzNCLFVBQVUsRUFBRSxhQUFhO1FBQ3pCLFlBQVksRUFBRSxlQUFlO1FBQzdCLElBQUksRUFBRSxVQUFVO1FBQ2hCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLGNBQWMsRUFBRSxpQkFBaUI7UUFDakMsS0FBSyxFQUFFLGNBQWM7UUFDckIsSUFBSSxFQUFFLGNBQWM7UUFDcEIsSUFBSSxFQUFFLG9CQUFvQjtRQUMxQixLQUFLLEVBQUUsT0FBTztRQUNkLFNBQVMsRUFBRSxZQUFZO1FBQ3ZCLFdBQVcsRUFBRSxjQUFj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QUFPLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELGtCQUFrQixDQUFDLEdBQXdDO1FBQ3pELE9BQU8sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsZUFBZSxDQUFDLEdBQTJDO1FBQ3pELE9BQU8sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoRCxDQUFDOytHQTFFVSxjQUFjO21IQUFkLGNBQWMsY0FGYixNQUFNOzs0RkFFUCxjQUFjO2tCQUgxQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIHNpZ25hbCwgY29tcHV0ZWQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuXG5leHBvcnQgdHlwZSBTdXBwb3J0ZWRMb2NhbGUgPSBcImVuXCIgfCBcImZyXCIgfCAoc3RyaW5nICYge30pO1xuXG5leHBvcnQgaW50ZXJmYWNlIEF0ZVRyYW5zbGF0aW9ucyB7XG4gIC8vIFRvb2xiYXJcbiAgdG9vbGJhcjoge1xuICAgIGJvbGQ6IHN0cmluZztcbiAgICBpdGFsaWM6IHN0cmluZztcbiAgICB1bmRlcmxpbmU6IHN0cmluZztcbiAgICBzdHJpa2U6IHN0cmluZztcbiAgICBjb2RlOiBzdHJpbmc7XG4gICAgY29kZUJsb2NrOiBzdHJpbmc7XG4gICAgc3VwZXJzY3JpcHQ6IHN0cmluZztcbiAgICBzdWJzY3JpcHQ6IHN0cmluZztcbiAgICBoaWdobGlnaHQ6IHN0cmluZztcbiAgICBoaWdobGlnaHRQaWNrZXI6IHN0cmluZztcbiAgICBoZWFkaW5nMTogc3RyaW5nO1xuICAgIGhlYWRpbmcyOiBzdHJpbmc7XG4gICAgaGVhZGluZzM6IHN0cmluZztcbiAgICBidWxsZXRMaXN0OiBzdHJpbmc7XG4gICAgb3JkZXJlZExpc3Q6IHN0cmluZztcbiAgICBibG9ja3F1b3RlOiBzdHJpbmc7XG4gICAgYWxpZ25MZWZ0OiBzdHJpbmc7XG4gICAgYWxpZ25DZW50ZXI6IHN0cmluZztcbiAgICBhbGlnblJpZ2h0OiBzdHJpbmc7XG4gICAgYWxpZ25KdXN0aWZ5OiBzdHJpbmc7XG4gICAgbGluazogc3RyaW5nO1xuICAgIGltYWdlOiBzdHJpbmc7XG4gICAgaG9yaXpvbnRhbFJ1bGU6IHN0cmluZztcbiAgICB0YWJsZTogc3RyaW5nO1xuICAgIHVuZG86IHN0cmluZztcbiAgICByZWRvOiBzdHJpbmc7XG4gICAgY2xlYXI6IHN0cmluZztcbiAgICB0ZXh0Q29sb3I6IHN0cmluZztcbiAgICBjdXN0b21Db2xvcjogc3RyaW5nO1xuICAgIHByZXNldHM6IHN0cmluZztcbiAgfTtcblxuICAvLyBCdWJibGUgTWVudVxuICBidWJibGVNZW51OiB7XG4gICAgYm9sZDogc3RyaW5nO1xuICAgIGl0YWxpYzogc3RyaW5nO1xuICAgIHVuZGVybGluZTogc3RyaW5nO1xuICAgIHN0cmlrZTogc3RyaW5nO1xuICAgIGNvZGU6IHN0cmluZztcbiAgICBzdXBlcnNjcmlwdDogc3RyaW5nO1xuICAgIHN1YnNjcmlwdDogc3RyaW5nO1xuICAgIGhpZ2hsaWdodDogc3RyaW5nO1xuICAgIGhpZ2hsaWdodFBpY2tlcjogc3RyaW5nO1xuICAgIHRleHRDb2xvcjogc3RyaW5nO1xuICAgIGxpbms6IHN0cmluZztcbiAgICBhZGRMaW5rOiBzdHJpbmc7XG4gICAgZWRpdExpbms6IHN0cmluZztcbiAgICByZW1vdmVMaW5rOiBzdHJpbmc7XG4gICAgbGlua1VybDogc3RyaW5nO1xuICAgIGxpbmtUZXh0OiBzdHJpbmc7XG4gICAgb3Blbkxpbms6IHN0cmluZztcbiAgICBjdXN0b21Db2xvcjogc3RyaW5nO1xuICAgIHByZXNldHM6IHN0cmluZztcbiAgfTtcblxuICAvLyBTbGFzaCBDb21tYW5kc1xuICBzbGFzaENvbW1hbmRzOiB7XG4gICAgaGVhZGluZzE6IHtcbiAgICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAgICAga2V5d29yZHM6IHN0cmluZ1tdO1xuICAgIH07XG4gICAgaGVhZGluZzI6IHtcbiAgICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAgICAga2V5d29yZHM6IHN0cmluZ1tdO1xuICAgIH07XG4gICAgaGVhZGluZzM6IHtcbiAgICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAgICAga2V5d29yZHM6IHN0cmluZ1tdO1xuICAgIH07XG4gICAgYnVsbGV0TGlzdDoge1xuICAgICAgdGl0bGU6IHN0cmluZztcbiAgICAgIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gICAgICBrZXl3b3Jkczogc3RyaW5nW107XG4gICAgfTtcbiAgICBvcmRlcmVkTGlzdDoge1xuICAgICAgdGl0bGU6IHN0cmluZztcbiAgICAgIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gICAgICBrZXl3b3Jkczogc3RyaW5nW107XG4gICAgfTtcbiAgICBibG9ja3F1b3RlOiB7XG4gICAgICB0aXRsZTogc3RyaW5nO1xuICAgICAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgICAgIGtleXdvcmRzOiBzdHJpbmdbXTtcbiAgICB9O1xuICAgIGNvZGU6IHtcbiAgICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAgICAga2V5d29yZHM6IHN0cmluZ1tdO1xuICAgIH07XG4gICAgaW1hZ2U6IHtcbiAgICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAgICAga2V5d29yZHM6IHN0cmluZ1tdO1xuICAgIH07XG4gICAgaG9yaXpvbnRhbFJ1bGU6IHtcbiAgICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAgICAga2V5d29yZHM6IHN0cmluZ1tdO1xuICAgIH07XG4gICAgdGFibGU6IHtcbiAgICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAgICAga2V5d29yZHM6IHN0cmluZ1tdO1xuICAgIH07XG4gIH07XG5cbiAgLy8gVGFibGUgQWN0aW9uc1xuICB0YWJsZToge1xuICAgIGFkZFJvd0JlZm9yZTogc3RyaW5nO1xuICAgIGFkZFJvd0FmdGVyOiBzdHJpbmc7XG4gICAgZGVsZXRlUm93OiBzdHJpbmc7XG4gICAgYWRkQ29sdW1uQmVmb3JlOiBzdHJpbmc7XG4gICAgYWRkQ29sdW1uQWZ0ZXI6IHN0cmluZztcbiAgICBkZWxldGVDb2x1bW46IHN0cmluZztcbiAgICBkZWxldGVUYWJsZTogc3RyaW5nO1xuICAgIHRvZ2dsZUhlYWRlclJvdzogc3RyaW5nO1xuICAgIHRvZ2dsZUhlYWRlckNvbHVtbjogc3RyaW5nO1xuICAgIG1lcmdlQ2VsbHM6IHN0cmluZztcbiAgICBzcGxpdENlbGw6IHN0cmluZztcbiAgfTtcblxuICAvLyBJbWFnZSBVcGxvYWRcbiAgaW1hZ2VVcGxvYWQ6IHtcbiAgICBzZWxlY3RJbWFnZTogc3RyaW5nO1xuICAgIGxvYWRFcnJvcjogc3RyaW5nO1xuICAgIHVwbG9hZGluZ0ltYWdlOiBzdHJpbmc7XG4gICAgdXBsb2FkUHJvZ3Jlc3M6IHN0cmluZztcbiAgICB1cGxvYWRFcnJvcjogc3RyaW5nO1xuICAgIHVwbG9hZFN1Y2Nlc3M6IHN0cmluZztcbiAgICBpbWFnZVRvb0xhcmdlOiBzdHJpbmc7XG4gICAgaW52YWxpZEZpbGVUeXBlOiBzdHJpbmc7XG4gICAgZHJhZ0Ryb3BUZXh0OiBzdHJpbmc7XG4gICAgY2hhbmdlSW1hZ2U6IHN0cmluZztcbiAgICBkb3dubG9hZEltYWdlOiBzdHJpbmc7XG4gICAgZGVsZXRlSW1hZ2U6IHN0cmluZztcbiAgICByZXNpemVTbWFsbDogc3RyaW5nO1xuICAgIHJlc2l6ZU1lZGl1bTogc3RyaW5nO1xuICAgIHJlc2l6ZUxhcmdlOiBzdHJpbmc7XG4gICAgcmVzaXplT3JpZ2luYWw6IHN0cmluZztcbiAgICBhbGlnbkxlZnQ6IHN0cmluZztcbiAgICBhbGlnbkNlbnRlcjogc3RyaW5nO1xuICAgIGFsaWduUmlnaHQ6IHN0cmluZztcbiAgICByZXNpemluZzogc3RyaW5nO1xuICAgIGNvbXByZXNzaW5nOiBzdHJpbmc7XG4gICAgY29tcHJlc3Npb25FcnJvcjogc3RyaW5nO1xuICAgIHZhbGlkYXRpbmc6IHN0cmluZztcbiAgICB1cGxvYWRpbmdUb1NlcnZlcjogc3RyaW5nO1xuICAgIHJlcGxhY2luZ0ltYWdlOiBzdHJpbmc7XG4gICAgaW5zZXJ0aW5nSW1hZ2U6IHN0cmluZztcbiAgICBub0ZpbGVTZWxlY3RlZDogc3RyaW5nO1xuICAgIHNlbGVjdGlvbkNhbmNlbGxlZDogc3RyaW5nO1xuICB9O1xuXG4gIC8vIEVkaXRvclxuICBlZGl0b3I6IHtcbiAgICBwbGFjZWhvbGRlcjogc3RyaW5nO1xuICAgIGNoYXJhY3Rlcjogc3RyaW5nO1xuICAgIHdvcmQ6IHN0cmluZztcbiAgICBsaW5rUHJvbXB0OiBzdHJpbmc7XG4gICAgbGlua1VybFByb21wdDogc3RyaW5nO1xuICAgIGNvbmZpcm1EZWxldGU6IHN0cmluZztcbiAgICB0b2dnbGVFZGl0OiBzdHJpbmc7XG4gICAgdmlld01vZGU6IHN0cmluZztcbiAgICBibG9ja0FkZDogc3RyaW5nO1xuICAgIGJsb2NrRHJhZzogc3RyaW5nO1xuICB9O1xuXG4gIC8vIENvbW1vblxuICBjb21tb246IHtcbiAgICBjYW5jZWw6IHN0cmluZztcbiAgICBjb25maXJtOiBzdHJpbmc7XG4gICAgYXBwbHk6IHN0cmluZztcbiAgICBkZWxldGU6IHN0cmluZztcbiAgICBzYXZlOiBzdHJpbmc7XG4gICAgY2xvc2U6IHN0cmluZztcbiAgICBsb2FkaW5nOiBzdHJpbmc7XG4gICAgZXJyb3I6IHN0cmluZztcbiAgICBzdWNjZXNzOiBzdHJpbmc7XG4gIH07XG59XG5cbmNvbnN0IEVOR0xJU0hfVFJBTlNMQVRJT05TOiBBdGVUcmFuc2xhdGlvbnMgPSB7XG4gIHRvb2xiYXI6IHtcbiAgICBib2xkOiBcIkJvbGRcXG5DdHJsK0JcIixcbiAgICBpdGFsaWM6IFwiSXRhbGljXFxuQ3RybCtJXCIsXG4gICAgdW5kZXJsaW5lOiBcIlVuZGVybGluZVxcbkN0cmwrVVwiLFxuICAgIHN0cmlrZTogXCJTdHJpa2V0aHJvdWdoXFxuQ3RybCtTaGlmdCtYXCIsXG4gICAgY29kZTogXCJJbmxpbmUgQ29kZVxcbkN0cmwrRVwiLFxuICAgIGNvZGVCbG9jazogXCJDb2RlIEJsb2NrXCIsXG4gICAgc3VwZXJzY3JpcHQ6IFwiU3VwZXJzY3JpcHRcIixcbiAgICBzdWJzY3JpcHQ6IFwiU3Vic2NyaXB0XCIsXG4gICAgaGlnaGxpZ2h0OiBcIkhpZ2hsaWdodFwiLFxuICAgIGhpZ2hsaWdodFBpY2tlcjogXCJCYWNrZ3JvdW5kIENvbG9yXCIsXG4gICAgaGVhZGluZzE6IFwiSGVhZGluZyAxXCIsXG4gICAgaGVhZGluZzI6IFwiSGVhZGluZyAyXCIsXG4gICAgaGVhZGluZzM6IFwiSGVhZGluZyAzXCIsXG4gICAgYnVsbGV0TGlzdDogXCJCdWxsZXQgTGlzdFwiLFxuICAgIG9yZGVyZWRMaXN0OiBcIk9yZGVyZWQgTGlzdFwiLFxuICAgIGJsb2NrcXVvdGU6IFwiQmxvY2txdW90ZVwiLFxuICAgIGFsaWduTGVmdDogXCJBbGlnbiBMZWZ0XCIsXG4gICAgYWxpZ25DZW50ZXI6IFwiQWxpZ24gQ2VudGVyXCIsXG4gICAgYWxpZ25SaWdodDogXCJBbGlnbiBSaWdodFwiLFxuICAgIGFsaWduSnVzdGlmeTogXCJBbGlnbiBKdXN0aWZ5XCIsXG4gICAgbGluazogXCJBZGQgTGlua1wiLFxuICAgIGltYWdlOiBcIkFkZCBJbWFnZVwiLFxuICAgIGhvcml6b250YWxSdWxlOiBcIkhvcml6b250YWwgUnVsZVwiLFxuICAgIHRhYmxlOiBcIkluc2VydCBUYWJsZVwiLFxuICAgIHVuZG86IFwiVW5kb1xcbkN0cmwrWlwiLFxuICAgIHJlZG86IFwiUmVkb1xcbkN0cmwrU2hpZnQrWlwiLFxuICAgIGNsZWFyOiBcIkNsZWFyXCIsXG4gICAgdGV4dENvbG9yOiBcIlRleHQgQ29sb3JcIixcbiAgICBjdXN0b21Db2xvcjogXCJDdXN0b20gQ29sb3JcIixcbiAgICBwcmVzZXRzOiBcIlByZXNldHNcIixcbiAgfSxcbiAgYnViYmxlTWVudToge1xuICAgIGJvbGQ6IFwiQm9sZFxcbkN0cmwrQlwiLFxuICAgIGl0YWxpYzogXCJJdGFsaWNcXG5DdHJsK0lcIixcbiAgICB1bmRlcmxpbmU6IFwiVW5kZXJsaW5lXFxuQ3RybCtVXCIsXG4gICAgc3RyaWtlOiBcIlN0cmlrZXRocm91Z2hcXG5DdHJsK1NoaWZ0K1hcIixcbiAgICBjb2RlOiBcIkNvZGVcXG5DdHJsK0VcIixcbiAgICBzdXBlcnNjcmlwdDogXCJTdXBlcnNjcmlwdFwiLFxuICAgIHN1YnNjcmlwdDogXCJTdWJzY3JpcHRcIixcbiAgICBoaWdobGlnaHQ6IFwiSGlnaGxpZ2h0XCIsXG4gICAgaGlnaGxpZ2h0UGlja2VyOiBcIkJhY2tncm91bmQgQ29sb3JcIixcbiAgICB0ZXh0Q29sb3I6IFwiVGV4dCBDb2xvclwiLFxuICAgIGxpbms6IFwiTGlua1wiLFxuICAgIGFkZExpbms6IFwiQWRkIExpbmtcIixcbiAgICBlZGl0TGluazogXCJFZGl0IExpbmtcIixcbiAgICByZW1vdmVMaW5rOiBcIlJlbW92ZSBMaW5rXCIsXG4gICAgbGlua1VybDogXCJMaW5rIFVSTFwiLFxuICAgIGxpbmtUZXh0OiBcIkxpbmsgVGV4dFwiLFxuICAgIG9wZW5MaW5rOiBcIk9wZW4gTGlua1wiLFxuICAgIGN1c3RvbUNvbG9yOiBcIkN1c3RvbSBDb2xvclwiLFxuICAgIHByZXNldHM6IFwiUHJlc2V0c1wiLFxuICB9LFxuICBzbGFzaENvbW1hbmRzOiB7XG4gICAgaGVhZGluZzE6IHtcbiAgICAgIHRpdGxlOiBcIkhlYWRpbmcgMVwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiTGFyZ2Ugc2VjdGlvbiBoZWFkaW5nXCIsXG4gICAgICBrZXl3b3JkczogW1wiaGVhZGluZ1wiLCBcImgxXCIsIFwidGl0bGVcIiwgXCIxXCIsIFwiaGVhZGVyXCJdLFxuICAgIH0sXG4gICAgaGVhZGluZzI6IHtcbiAgICAgIHRpdGxlOiBcIkhlYWRpbmcgMlwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiTWVkaXVtIHNlY3Rpb24gaGVhZGluZ1wiLFxuICAgICAga2V5d29yZHM6IFtcImhlYWRpbmdcIiwgXCJoMlwiLCBcInRpdGxlXCIsIFwiMlwiLCBcImhlYWRlclwiXSxcbiAgICB9LFxuICAgIGhlYWRpbmczOiB7XG4gICAgICB0aXRsZTogXCJIZWFkaW5nIDNcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlNtYWxsIHNlY3Rpb24gaGVhZGluZ1wiLFxuICAgICAga2V5d29yZHM6IFtcImhlYWRpbmdcIiwgXCJoM1wiLCBcInRpdGxlXCIsIFwiM1wiLCBcImhlYWRlclwiXSxcbiAgICB9LFxuICAgIGJ1bGxldExpc3Q6IHtcbiAgICAgIHRpdGxlOiBcIkJ1bGxldCBMaXN0XCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJDcmVhdGUgYSBidWxsZXQgbGlzdFwiLFxuICAgICAga2V5d29yZHM6IFtcImJ1bGxldFwiLCBcImxpc3RcIiwgXCJ1bFwiLCBcInVub3JkZXJlZFwiXSxcbiAgICB9LFxuICAgIG9yZGVyZWRMaXN0OiB7XG4gICAgICB0aXRsZTogXCJPcmRlcmVkIExpc3RcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkNyZWF0ZSBhbiBvcmRlcmVkIGxpc3RcIixcbiAgICAgIGtleXdvcmRzOiBbXCJvcmRlcmVkXCIsIFwibGlzdFwiLCBcIm9sXCIsIFwibnVtYmVyZWRcIl0sXG4gICAgfSxcbiAgICBibG9ja3F1b3RlOiB7XG4gICAgICB0aXRsZTogXCJCbG9ja3F1b3RlXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJBZGQgYSBibG9ja3F1b3RlXCIsXG4gICAgICBrZXl3b3JkczogW1wicXVvdGVcIiwgXCJibG9ja3F1b3RlXCIsIFwiY2l0YXRpb25cIl0sXG4gICAgfSxcbiAgICBjb2RlOiB7XG4gICAgICB0aXRsZTogXCJDb2RlIEJsb2NrXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJBZGQgYSBjb2RlIGJsb2NrXCIsXG4gICAgICBrZXl3b3JkczogW1wiY29kZVwiLCBcImNvZGVibG9ja1wiLCBcInByZVwiLCBcInByb2dyYW1taW5nXCJdLFxuICAgIH0sXG4gICAgaW1hZ2U6IHtcbiAgICAgIHRpdGxlOiBcIkltYWdlXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJJbnNlcnQgYW4gaW1hZ2VcIixcbiAgICAgIGtleXdvcmRzOiBbXCJpbWFnZVwiLCBcInBob3RvXCIsIFwicGljdHVyZVwiLCBcImltZ1wiXSxcbiAgICB9LFxuICAgIGhvcml6b250YWxSdWxlOiB7XG4gICAgICB0aXRsZTogXCJIb3Jpem9udGFsIFJ1bGVcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkFkZCBhIGhvcml6b250YWwgbGluZVwiLFxuICAgICAga2V5d29yZHM6IFtcImhyXCIsIFwiaG9yaXpvbnRhbFwiLCBcInJ1bGVcIiwgXCJsaW5lXCIsIFwic2VwYXJhdG9yXCJdLFxuICAgIH0sXG4gICAgdGFibGU6IHtcbiAgICAgIHRpdGxlOiBcIlRhYmxlXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJJbnNlcnQgYSB0YWJsZVwiLFxuICAgICAga2V5d29yZHM6IFtcInRhYmxlXCIsIFwiZ3JpZFwiLCBcImRhdGFcIiwgXCJyb3dzXCIsIFwiY29sdW1uc1wiXSxcbiAgICB9LFxuICB9LFxuICB0YWJsZToge1xuICAgIGFkZFJvd0JlZm9yZTogXCJBZGQgcm93IGJlZm9yZVwiLFxuICAgIGFkZFJvd0FmdGVyOiBcIkFkZCByb3cgYWZ0ZXJcIixcbiAgICBkZWxldGVSb3c6IFwiRGVsZXRlIHJvd1wiLFxuICAgIGFkZENvbHVtbkJlZm9yZTogXCJBZGQgY29sdW1uIGJlZm9yZVwiLFxuICAgIGFkZENvbHVtbkFmdGVyOiBcIkFkZCBjb2x1bW4gYWZ0ZXJcIixcbiAgICBkZWxldGVDb2x1bW46IFwiRGVsZXRlIGNvbHVtblwiLFxuICAgIGRlbGV0ZVRhYmxlOiBcIkRlbGV0ZSB0YWJsZVwiLFxuICAgIHRvZ2dsZUhlYWRlclJvdzogXCJUb2dnbGUgaGVhZGVyIHJvd1wiLFxuICAgIHRvZ2dsZUhlYWRlckNvbHVtbjogXCJUb2dnbGUgaGVhZGVyIGNvbHVtblwiLFxuICAgIG1lcmdlQ2VsbHM6IFwiTWVyZ2UgY2VsbHNcIixcbiAgICBzcGxpdENlbGw6IFwiU3BsaXQgY2VsbFwiLFxuICB9LFxuICBpbWFnZVVwbG9hZDoge1xuICAgIHNlbGVjdEltYWdlOiBcIlNlbGVjdCBJbWFnZVwiLFxuICAgIGxvYWRFcnJvcjogXCJFcnJvciBsb2FkaW5nIGltYWdlXCIsXG4gICAgdXBsb2FkaW5nSW1hZ2U6IFwiVXBsb2FkaW5nIGltYWdlLi4uXCIsXG4gICAgdXBsb2FkUHJvZ3Jlc3M6IFwiVXBsb2FkIFByb2dyZXNzXCIsXG4gICAgdXBsb2FkRXJyb3I6IFwiVXBsb2FkIEVycm9yXCIsXG4gICAgdXBsb2FkU3VjY2VzczogXCJVcGxvYWQgU3VjY2Vzc1wiLFxuICAgIGltYWdlVG9vTGFyZ2U6IFwiSW1hZ2UgdG9vIGxhcmdlXCIsXG4gICAgaW52YWxpZEZpbGVUeXBlOiBcIkludmFsaWQgZmlsZSB0eXBlXCIsXG4gICAgZHJhZ0Ryb3BUZXh0OiBcIkRyYWcgYW5kIGRyb3AgaW1hZ2VzIGhlcmVcIixcbiAgICBjaGFuZ2VJbWFnZTogXCJDaGFuZ2UgSW1hZ2VcIixcbiAgICBkb3dubG9hZEltYWdlOiBcIkRvd25sb2FkIEltYWdlXCIsXG4gICAgZGVsZXRlSW1hZ2U6IFwiRGVsZXRlIEltYWdlXCIsXG4gICAgcmVzaXplU21hbGw6IFwiU21hbGxcIixcbiAgICByZXNpemVNZWRpdW06IFwiTWVkaXVtXCIsXG4gICAgcmVzaXplTGFyZ2U6IFwiTGFyZ2VcIixcbiAgICByZXNpemVPcmlnaW5hbDogXCJPcmlnaW5hbFwiLFxuICAgIGFsaWduTGVmdDogXCJBbGlnbiBMZWZ0XCIsXG4gICAgYWxpZ25DZW50ZXI6IFwiQWxpZ24gQ2VudGVyXCIsXG4gICAgYWxpZ25SaWdodDogXCJBbGlnbiBSaWdodFwiLFxuICAgIHJlc2l6aW5nOiBcIlJlc2l6aW5nLi4uXCIsXG4gICAgY29tcHJlc3Npbmc6IFwiQ29tcHJlc3NpbmcuLi5cIixcbiAgICBjb21wcmVzc2lvbkVycm9yOiBcIkVycm9yIGR1cmluZyBjb21wcmVzc2lvblwiLFxuICAgIHZhbGlkYXRpbmc6IFwiVmFsaWRhdGluZyBmaWxlLi4uXCIsXG4gICAgdXBsb2FkaW5nVG9TZXJ2ZXI6IFwiVXBsb2FkaW5nIHRvIHNlcnZlci4uLlwiLFxuICAgIHJlcGxhY2luZ0ltYWdlOiBcIlJlcGxhY2luZyBpbWFnZS4uLlwiLFxuICAgIGluc2VydGluZ0ltYWdlOiBcIkluc2VydGluZyBpbnRvIGVkaXRvci4uLlwiLFxuICAgIG5vRmlsZVNlbGVjdGVkOiBcIk5vIGltYWdlIGZpbGUgc2VsZWN0ZWRcIixcbiAgICBzZWxlY3Rpb25DYW5jZWxsZWQ6IFwiU2VsZWN0aW9uIGNhbmNlbGxlZFwiLFxuICB9LFxuICBlZGl0b3I6IHtcbiAgICBwbGFjZWhvbGRlcjogXCJTdGFydCB0eXBpbmcuLi5cIixcbiAgICBjaGFyYWN0ZXI6IFwiY2hhcmFjdGVyXCIsXG4gICAgd29yZDogXCJ3b3JkXCIsXG4gICAgbGlua1Byb21wdDogXCJFbnRlciBsaW5rIFVSTFwiLFxuICAgIGxpbmtVcmxQcm9tcHQ6IFwiRW50ZXIgVVJMXCIsXG4gICAgY29uZmlybURlbGV0ZTogXCJBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIHRoaXM/XCIsXG4gICAgdG9nZ2xlRWRpdDogXCJTd2l0Y2ggdG8gRWRpdCBNb2RlXCIsXG4gICAgdmlld01vZGU6IFwiU3dpdGNoIHRvIFZpZXcgTW9kZVwiLFxuICAgIGJsb2NrQWRkOiBcIkNsaWNrIHRvIGFkZCBhIGJsb2NrXCIsXG4gICAgYmxvY2tEcmFnOiBcIkRyYWcgdG8gbW92ZSB0aGlzIGJsb2NrXCIsXG4gIH0sXG4gIGNvbW1vbjoge1xuICAgIGNhbmNlbDogXCJDYW5jZWxcIixcbiAgICBjb25maXJtOiBcIkNvbmZpcm1cIixcbiAgICBhcHBseTogXCJBcHBseVwiLFxuICAgIGRlbGV0ZTogXCJEZWxldGVcIixcbiAgICBzYXZlOiBcIlNhdmVcIixcbiAgICBjbG9zZTogXCJDbG9zZVwiLFxuICAgIGxvYWRpbmc6IFwiTG9hZGluZ1wiLFxuICAgIGVycm9yOiBcIkVycm9yXCIsXG4gICAgc3VjY2VzczogXCJTdWNjZXNzXCIsXG4gIH0sXG59O1xuXG5jb25zdCBGUkVOQ0hfVFJBTlNMQVRJT05TOiBBdGVUcmFuc2xhdGlvbnMgPSB7XG4gIHRvb2xiYXI6IHtcbiAgICBib2xkOiBcIkdyYXNcXG5DdHJsK0JcIixcbiAgICBpdGFsaWM6IFwiSXRhbGlxdWVcXG5DdHJsK0lcIixcbiAgICB1bmRlcmxpbmU6IFwiU291bGlnbsOpXFxuQ3RybCtVXCIsXG4gICAgc3RyaWtlOiBcIkJhcnLDqVxcbkN0cmwrU2hpZnQrWFwiLFxuICAgIGNvZGU6IFwiQ29kZSBlbiBsaWduZVxcbkN0cmwrRVwiLFxuICAgIGNvZGVCbG9jazogXCJCbG9jIGRlIGNvZGVcIixcbiAgICBzdXBlcnNjcmlwdDogXCJFeHBvc2FudFwiLFxuICAgIHN1YnNjcmlwdDogXCJJbmRpY2VcIixcbiAgICBoaWdobGlnaHQ6IFwiU3VybGlnbmVyXCIsXG4gICAgaGlnaGxpZ2h0UGlja2VyOiBcIkNvdWxldXIgZGUgZm9uZFwiLFxuICAgIGhlYWRpbmcxOiBcIlRpdHJlIDFcIixcbiAgICBoZWFkaW5nMjogXCJUaXRyZSAyXCIsXG4gICAgaGVhZGluZzM6IFwiVGl0cmUgM1wiLFxuICAgIGJ1bGxldExpc3Q6IFwiTGlzdGUgw6AgcHVjZXNcIixcbiAgICBvcmRlcmVkTGlzdDogXCJMaXN0ZSBudW3DqXJvdMOpZVwiLFxuICAgIGJsb2NrcXVvdGU6IFwiQ2l0YXRpb25cIixcbiAgICBhbGlnbkxlZnQ6IFwiQWxpZ25lciDDoCBnYXVjaGVcIixcbiAgICBhbGlnbkNlbnRlcjogXCJDZW50cmVyXCIsXG4gICAgYWxpZ25SaWdodDogXCJBbGlnbmVyIMOgIGRyb2l0ZVwiLFxuICAgIGFsaWduSnVzdGlmeTogXCJKdXN0aWZpZXJcIixcbiAgICBsaW5rOiBcIkFqb3V0ZXIgdW4gbGllblwiLFxuICAgIGltYWdlOiBcIkFqb3V0ZXIgdW5lIGltYWdlXCIsXG4gICAgaG9yaXpvbnRhbFJ1bGU6IFwiTGlnbmUgaG9yaXpvbnRhbGVcIixcbiAgICB0YWJsZTogXCJJbnPDqXJlciB1biB0YWJsZWF1XCIsXG4gICAgdW5kbzogXCJBbm51bGVyXFxuQ3RybCtaXCIsXG4gICAgcmVkbzogXCJSZWZhaXJlXFxuQ3RybCtTaGlmdCtaXCIsXG4gICAgY2xlYXI6IFwiVmlkZXJcIixcbiAgICB0ZXh0Q29sb3I6IFwiQ291bGV1ciBkdSB0ZXh0ZVwiLFxuICAgIGN1c3RvbUNvbG9yOiBcIkNvdWxldXIgcGVyc29ubmFsaXPDqWVcIixcbiAgICBwcmVzZXRzOiBcIlByw6lyw6lnbGFnZXNcIixcbiAgfSxcbiAgYnViYmxlTWVudToge1xuICAgIGJvbGQ6IFwiR3Jhc1xcbkN0cmwrQlwiLFxuICAgIGl0YWxpYzogXCJJdGFsaXF1ZVxcbkN0cmwrSVwiLFxuICAgIHVuZGVybGluZTogXCJTb3VsaWduw6lcXG5DdHJsK1VcIixcbiAgICBzdHJpa2U6IFwiQmFycsOpXFxuQ3RybCtTaGlmdCtYXCIsXG4gICAgY29kZTogXCJDb2RlXFxuQ3RybCtFXCIsXG4gICAgc3VwZXJzY3JpcHQ6IFwiRXhwb3NhbnRcIixcbiAgICBzdWJzY3JpcHQ6IFwiSW5kaWNlXCIsXG4gICAgaGlnaGxpZ2h0OiBcIlN1cmxpZ25lclwiLFxuICAgIGhpZ2hsaWdodFBpY2tlcjogXCJDb3VsZXVyIGRlIGZvbmRcIixcbiAgICB0ZXh0Q29sb3I6IFwiQ291bGV1ciBkdSB0ZXh0ZVwiLFxuICAgIGxpbms6IFwiTGllblwiLFxuICAgIGFkZExpbms6IFwiQWpvdXRlciB1biBsaWVuXCIsXG4gICAgZWRpdExpbms6IFwiTW9kaWZpZXIgbGUgbGllblwiLFxuICAgIHJlbW92ZUxpbms6IFwiU3VwcHJpbWVyIGxlIGxpZW5cIixcbiAgICBsaW5rVXJsOiBcIlVSTCBkdSBsaWVuXCIsXG4gICAgbGlua1RleHQ6IFwiVGV4dGUgZHUgbGllblwiLFxuICAgIG9wZW5MaW5rOiBcIk91dnJpciBsZSBsaWVuXCIsXG4gICAgY3VzdG9tQ29sb3I6IFwiQ291bGV1ciBwZXJzb25uYWxpc8OpZVwiLFxuICAgIHByZXNldHM6IFwiUHLDqXLDqWdsYWdlc1wiLFxuICB9LFxuICBzbGFzaENvbW1hbmRzOiB7XG4gICAgaGVhZGluZzE6IHtcbiAgICAgIHRpdGxlOiBcIlRpdHJlIDFcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkdyYW5kIHRpdHJlIGRlIHNlY3Rpb25cIixcbiAgICAgIGtleXdvcmRzOiBbXCJoZWFkaW5nXCIsIFwiaDFcIiwgXCJ0aXRyZVwiLCBcInRpdGxlXCIsIFwiMVwiLCBcImhlYWRlclwiXSxcbiAgICB9LFxuICAgIGhlYWRpbmcyOiB7XG4gICAgICB0aXRsZTogXCJUaXRyZSAyXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJUaXRyZSBkZSBzb3VzLXNlY3Rpb25cIixcbiAgICAgIGtleXdvcmRzOiBbXCJoZWFkaW5nXCIsIFwiaDJcIiwgXCJ0aXRyZVwiLCBcInRpdGxlXCIsIFwiMlwiLCBcImhlYWRlclwiXSxcbiAgICB9LFxuICAgIGhlYWRpbmczOiB7XG4gICAgICB0aXRsZTogXCJUaXRyZSAzXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJQZXRpdCB0aXRyZVwiLFxuICAgICAga2V5d29yZHM6IFtcImhlYWRpbmdcIiwgXCJoM1wiLCBcInRpdHJlXCIsIFwidGl0bGVcIiwgXCIzXCIsIFwiaGVhZGVyXCJdLFxuICAgIH0sXG4gICAgYnVsbGV0TGlzdDoge1xuICAgICAgdGl0bGU6IFwiTGlzdGUgw6AgcHVjZXNcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkNyw6llciB1bmUgbGlzdGUgw6AgcHVjZXNcIixcbiAgICAgIGtleXdvcmRzOiBbXCJidWxsZXRcIiwgXCJsaXN0XCIsIFwibGlzdGVcIiwgXCJwdWNlc1wiLCBcInVsXCJdLFxuICAgIH0sXG4gICAgb3JkZXJlZExpc3Q6IHtcbiAgICAgIHRpdGxlOiBcIkxpc3RlIG51bcOpcm90w6llXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJDcsOpZXIgdW5lIGxpc3RlIG51bcOpcm90w6llXCIsXG4gICAgICBrZXl3b3JkczogW1wibnVtYmVyZWRcIiwgXCJsaXN0XCIsIFwibGlzdGVcIiwgXCJudW3DqXJvdMOpZVwiLCBcIm9sXCIsIFwib3JkZXJlZFwiXSxcbiAgICB9LFxuICAgIGJsb2NrcXVvdGU6IHtcbiAgICAgIHRpdGxlOiBcIkNpdGF0aW9uXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJBam91dGVyIHVuZSBjaXRhdGlvblwiLFxuICAgICAga2V5d29yZHM6IFtcInF1b3RlXCIsIFwiYmxvY2txdW90ZVwiLCBcImNpdGF0aW9uXCJdLFxuICAgIH0sXG4gICAgY29kZToge1xuICAgICAgdGl0bGU6IFwiQmxvYyBkZSBjb2RlXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJBam91dGVyIHVuIGJsb2MgZGUgY29kZVwiLFxuICAgICAga2V5d29yZHM6IFtcImNvZGVcIiwgXCJjb2RlYmxvY2tcIiwgXCJwcmVcIiwgXCJwcm9ncmFtbWF0aW9uXCJdLFxuICAgIH0sXG4gICAgaW1hZ2U6IHtcbiAgICAgIHRpdGxlOiBcIkltYWdlXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJJbnPDqXJlciB1bmUgaW1hZ2VcIixcbiAgICAgIGtleXdvcmRzOiBbXCJpbWFnZVwiLCBcInBob3RvXCIsIFwicGljdHVyZVwiLCBcImltZ1wiXSxcbiAgICB9LFxuICAgIGhvcml6b250YWxSdWxlOiB7XG4gICAgICB0aXRsZTogXCJMaWduZSBob3Jpem9udGFsZVwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiQWpvdXRlciB1bmUgbGlnbmUgZGUgc8OpcGFyYXRpb25cIixcbiAgICAgIGtleXdvcmRzOiBbXCJoclwiLCBcImhvcml6b250YWxcIiwgXCJydWxlXCIsIFwibGlnbmVcIiwgXCJzw6lwYXJhdGlvblwiXSxcbiAgICB9LFxuICAgIHRhYmxlOiB7XG4gICAgICB0aXRsZTogXCJUYWJsZWF1XCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJJbnPDqXJlciB1biB0YWJsZWF1XCIsXG4gICAgICBrZXl3b3JkczogW1widGFibGVcIiwgXCJ0YWJsZWF1XCIsIFwiZ3JpZFwiLCBcImdyaWxsZVwiLCBcImRhdGFcIiwgXCJkb25uw6llc1wiLCBcInJvd3NcIiwgXCJjb2xvbm5lc1wiXSxcbiAgICB9LFxuICB9LFxuICB0YWJsZToge1xuICAgIGFkZFJvd0JlZm9yZTogXCJBam91dGVyIHVuZSBsaWduZSBhdmFudFwiLFxuICAgIGFkZFJvd0FmdGVyOiBcIkFqb3V0ZXIgdW5lIGxpZ25lIGFwcsOoc1wiLFxuICAgIGRlbGV0ZVJvdzogXCJTdXBwcmltZXIgbGEgbGlnbmVcIixcbiAgICBhZGRDb2x1bW5CZWZvcmU6IFwiQWpvdXRlciB1bmUgY29sb25uZSBhdmFudFwiLFxuICAgIGFkZENvbHVtbkFmdGVyOiBcIkFqb3V0ZXIgdW5lIGNvbG9ubmUgYXByw6hzXCIsXG4gICAgZGVsZXRlQ29sdW1uOiBcIlN1cHByaW1lciBsYSBjb2xvbm5lXCIsXG4gICAgZGVsZXRlVGFibGU6IFwiU3VwcHJpbWVyIGxlIHRhYmxlYXVcIixcbiAgICB0b2dnbGVIZWFkZXJSb3c6IFwiQmFzY3VsZXIgbGlnbmUgZCdlbi10w6p0ZVwiLFxuICAgIHRvZ2dsZUhlYWRlckNvbHVtbjogXCJCYXNjdWxlciBjb2xvbm5lIGQnZW4tdMOqdGVcIixcbiAgICBtZXJnZUNlbGxzOiBcIkZ1c2lvbm5lciBsZXMgY2VsbHVsZXNcIixcbiAgICBzcGxpdENlbGw6IFwiRGl2aXNlciBsYSBjZWxsdWxlXCIsXG4gIH0sXG4gIGltYWdlVXBsb2FkOiB7XG4gICAgc2VsZWN0SW1hZ2U6IFwiU8OpbGVjdGlvbm5lciB1bmUgaW1hZ2VcIixcbiAgICBsb2FkRXJyb3I6IFwiRXJyZXVyIGRlIGNoYXJnZW1lbnQgZGUgbCdpbWFnZVwiLFxuICAgIHVwbG9hZGluZ0ltYWdlOiBcIlTDqWzDqWNoYXJnZW1lbnQgZGUgbCdpbWFnZS4uLlwiLFxuICAgIHVwbG9hZFByb2dyZXNzOiBcIlByb2dyZXNzaW9uIGR1IHTDqWzDqWNoYXJnZW1lbnRcIixcbiAgICB1cGxvYWRFcnJvcjogXCJFcnJldXIgZGUgdMOpbMOpY2hhcmdlbWVudFwiLFxuICAgIHVwbG9hZFN1Y2Nlc3M6IFwiVMOpbMOpY2hhcmdlbWVudCByw6l1c3NpXCIsXG4gICAgaW1hZ2VUb29MYXJnZTogXCJJbWFnZSB0cm9wIHZvbHVtaW5ldXNlXCIsXG4gICAgaW52YWxpZEZpbGVUeXBlOiBcIlR5cGUgZGUgZmljaGllciBpbnZhbGlkZVwiLFxuICAgIGRyYWdEcm9wVGV4dDogXCJHbGlzc2V6IGV0IGTDqXBvc2V6IGRlcyBpbWFnZXMgaWNpXCIsXG4gICAgY2hhbmdlSW1hZ2U6IFwiQ2hhbmdlciBsJ2ltYWdlXCIsXG4gICAgZG93bmxvYWRJbWFnZTogXCJUw6lsw6ljaGFyZ2VyIGwnaW1hZ2VcIixcbiAgICBkZWxldGVJbWFnZTogXCJTdXBwcmltZXIgbCdpbWFnZVwiLFxuICAgIHJlc2l6ZVNtYWxsOiBcIlBldGl0XCIsXG4gICAgcmVzaXplTWVkaXVtOiBcIk1veWVuXCIsXG4gICAgcmVzaXplTGFyZ2U6IFwiR3JhbmRcIixcbiAgICByZXNpemVPcmlnaW5hbDogXCJPcmlnaW5hbFwiLFxuICAgIGFsaWduTGVmdDogXCJBbGlnbmVyIMOgIGdhdWNoZVwiLFxuICAgIGFsaWduQ2VudGVyOiBcIkFsaWduZXIgYXUgY2VudHJlXCIsXG4gICAgYWxpZ25SaWdodDogXCJBbGlnbmVyIMOgIGRyb2l0ZVwiLFxuICAgIHJlc2l6aW5nOiBcIlJlZGltZW5zaW9ubmVtZW50Li4uXCIsXG4gICAgY29tcHJlc3Npbmc6IFwiQ29tcHJlc3Npb24uLi5cIixcbiAgICBjb21wcmVzc2lvbkVycm9yOiBcIkVycmV1ciBsb3JzIGRlIGxhIGNvbXByZXNzaW9uXCIsXG4gICAgdmFsaWRhdGluZzogXCJWYWxpZGF0aW9uIGR1IGZpY2hpZXIuLi5cIixcbiAgICB1cGxvYWRpbmdUb1NlcnZlcjogXCJVcGxvYWQgdmVycyBsZSBzZXJ2ZXVyLi4uXCIsXG4gICAgcmVwbGFjaW5nSW1hZ2U6IFwiUmVtcGxhY2VtZW50IGRlIGwnaW1hZ2UuLi5cIixcbiAgICBpbnNlcnRpbmdJbWFnZTogXCJJbnNlcnRpb24gZGFucyBsJ8OpZGl0ZXVyLi4uXCIsXG4gICAgbm9GaWxlU2VsZWN0ZWQ6IFwiQXVjdW4gZmljaGllciBpbWFnZSBzw6lsZWN0aW9ubsOpXCIsXG4gICAgc2VsZWN0aW9uQ2FuY2VsbGVkOiBcIlPDqWxlY3Rpb24gYW5udWzDqWVcIixcbiAgfSxcbiAgZWRpdG9yOiB7XG4gICAgcGxhY2Vob2xkZXI6IFwiQ29tbWVuY2V6IMOgIMOpY3JpcmUuLi5cIixcbiAgICBjaGFyYWN0ZXI6IFwiY2FyYWN0w6hyZVwiLFxuICAgIHdvcmQ6IFwibW90XCIsXG4gICAgbGlua1Byb21wdDogXCJFbnRyZXogbCdVUkwgZHUgbGllblwiLFxuICAgIGxpbmtVcmxQcm9tcHQ6IFwiRW50cmV6IGwnVVJMXCIsXG4gICAgY29uZmlybURlbGV0ZTogXCLDinRlcy12b3VzIHPDu3IgZGUgdm91bG9pciBzdXBwcmltZXIgY2VjaSA/XCIsXG4gICAgdG9nZ2xlRWRpdDogXCJQYXNzZXIgZW4gbW9kZSDDqWRpdGlvblwiLFxuICAgIHZpZXdNb2RlOiBcIlBhc3NlciBlbiBtb2RlIGFmZmljaGFnZVwiLFxuICAgIGJsb2NrQWRkOiBcIkNsaXF1ZXIgcG91ciBham91dGVyIHVuIGJsb2NcIixcbiAgICBibG9ja0RyYWc6IFwiRmFpcmUgZ2xpc3NlciBwb3VyIGTDqXBsYWNlciBjZSBibG9jXCIsXG4gIH0sXG4gIGNvbW1vbjoge1xuICAgIGNhbmNlbDogXCJBbm51bGVyXCIsXG4gICAgY29uZmlybTogXCJDb25maXJtZXJcIixcbiAgICBhcHBseTogXCJBcHBsaXF1ZXJcIixcbiAgICBkZWxldGU6IFwiU3VwcHJpbWVyXCIsXG4gICAgc2F2ZTogXCJTYXV2ZWdhcmRlclwiLFxuICAgIGNsb3NlOiBcIkZlcm1lclwiLFxuICAgIGxvYWRpbmc6IFwiQ2hhcmdlbWVudFwiLFxuICAgIGVycm9yOiBcIkVycmV1clwiLFxuICAgIHN1Y2Nlc3M6IFwiU3VjY8Ooc1wiLFxuICB9LFxufTtcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiBcInJvb3RcIixcbn0pXG5leHBvcnQgY2xhc3MgQXRlSTE4blNlcnZpY2Uge1xuICBwcml2YXRlIF9jdXJyZW50TG9jYWxlID0gc2lnbmFsPFN1cHBvcnRlZExvY2FsZT4oXCJlblwiKTtcbiAgcHJpdmF0ZSBfdHJhbnNsYXRpb25zID0gc2lnbmFsPFJlY29yZDxTdXBwb3J0ZWRMb2NhbGUsIEF0ZVRyYW5zbGF0aW9ucz4+KHtcbiAgICBlbjogRU5HTElTSF9UUkFOU0xBVElPTlMsXG4gICAgZnI6IEZSRU5DSF9UUkFOU0xBVElPTlMsXG4gIH0pO1xuXG4gIC8vIFB1YmxpYyBzaWduYWxzXG4gIHJlYWRvbmx5IGN1cnJlbnRMb2NhbGUgPSB0aGlzLl9jdXJyZW50TG9jYWxlLmFzUmVhZG9ubHkoKTtcbiAgLyoqIEFsbCBsb2FkZWQgdHJhbnNsYXRpb25zICh1c2VmdWwgZm9yIGR5bmFtaWMga2V5IGFjY2VzcykgKi9cbiAgcmVhZG9ubHkgYWxsVHJhbnNsYXRpb25zID0gdGhpcy5fdHJhbnNsYXRpb25zLmFzUmVhZG9ubHkoKTtcblxuICByZWFkb25seSB0cmFuc2xhdGlvbnMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLl90cmFuc2xhdGlvbnMoKVt0aGlzLl9jdXJyZW50TG9jYWxlKCldKTtcblxuICAvLyBGYXN0IHRyYW5zbGF0aW9uIG1ldGhvZHNcbiAgcmVhZG9ubHkgdCA9IGNvbXB1dGVkKCgpID0+IHRoaXMudHJhbnNsYXRpb25zKCkpO1xuICByZWFkb25seSB0b29sYmFyID0gY29tcHV0ZWQoKCkgPT4gdGhpcy50cmFuc2xhdGlvbnMoKS50b29sYmFyKTtcbiAgcmVhZG9ubHkgYnViYmxlTWVudSA9IGNvbXB1dGVkKCgpID0+IHRoaXMudHJhbnNsYXRpb25zKCkuYnViYmxlTWVudSk7XG4gIHJlYWRvbmx5IHNsYXNoQ29tbWFuZHMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnRyYW5zbGF0aW9ucygpLnNsYXNoQ29tbWFuZHMpO1xuICByZWFkb25seSB0YWJsZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMudHJhbnNsYXRpb25zKCkudGFibGUpO1xuICByZWFkb25seSBpbWFnZVVwbG9hZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMudHJhbnNsYXRpb25zKCkuaW1hZ2VVcGxvYWQpO1xuICByZWFkb25seSBlZGl0b3IgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnRyYW5zbGF0aW9ucygpLmVkaXRvcik7XG4gIHJlYWRvbmx5IGNvbW1vbiA9IGNvbXB1dGVkKCgpID0+IHRoaXMudHJhbnNsYXRpb25zKCkuY29tbW9uKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICAvLyBBdXRvbWF0aWNhbGx5IGRldGVjdCBicm93c2VyIGxhbmd1YWdlXG4gICAgdGhpcy5kZXRlY3RCcm93c2VyTGFuZ3VhZ2UoKTtcbiAgfVxuXG4gIHNldExvY2FsZShsb2NhbGU6IFN1cHBvcnRlZExvY2FsZSk6IHZvaWQge1xuICAgIHRoaXMuX2N1cnJlbnRMb2NhbGUuc2V0KGxvY2FsZSk7XG4gIH1cblxuICBhdXRvRGV0ZWN0TG9jYWxlKCk6IHZvaWQge1xuICAgIHRoaXMuZGV0ZWN0QnJvd3Nlckxhbmd1YWdlKCk7XG4gIH1cblxuICBnZXRTdXBwb3J0ZWRMb2NhbGVzKCk6IFN1cHBvcnRlZExvY2FsZVtdIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5fdHJhbnNsYXRpb25zKCkpIGFzIFN1cHBvcnRlZExvY2FsZVtdO1xuICB9XG5cbiAgYWRkVHJhbnNsYXRpb25zKGxvY2FsZTogc3RyaW5nLCB0cmFuc2xhdGlvbnM6IEF0ZVRyYW5zbGF0aW9ucyB8IFBhcnRpYWw8QXRlVHJhbnNsYXRpb25zPik6IHZvaWQge1xuICAgIHRoaXMuX3RyYW5zbGF0aW9ucy51cGRhdGUoY3VycmVudCA9PiB7XG4gICAgICBjb25zdCBleGlzdGluZyA9IGN1cnJlbnRbbG9jYWxlXSB8fCBFTkdMSVNIX1RSQU5TTEFUSU9OUztcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmN1cnJlbnQsXG4gICAgICAgIFtsb2NhbGVdOiB7XG4gICAgICAgICAgLi4uZXhpc3RpbmcsXG4gICAgICAgICAgLi4udHJhbnNsYXRpb25zLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZGV0ZWN0QnJvd3Nlckxhbmd1YWdlKCk6IHZvaWQge1xuICAgIGNvbnN0IGJyb3dzZXJMYW5nID0gbmF2aWdhdG9yLmxhbmd1YWdlLnRvTG93ZXJDYXNlKCk7XG4gICAgaWYgKGJyb3dzZXJMYW5nLnN0YXJ0c1dpdGgoXCJmclwiKSkge1xuICAgICAgdGhpcy5fY3VycmVudExvY2FsZS5zZXQoXCJmclwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fY3VycmVudExvY2FsZS5zZXQoXCJlblwiKTtcbiAgICB9XG4gIH1cblxuICAvLyBVdGlsaXR5IG1ldGhvZHMgZm9yIGNvbXBvbmVudHNcbiAgZ2V0VG9vbGJhclRpdGxlKGtleToga2V5b2YgQXRlVHJhbnNsYXRpb25zW1widG9vbGJhclwiXSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRpb25zKCkudG9vbGJhcltrZXldO1xuICB9XG5cbiAgZ2V0QnViYmxlTWVudVRpdGxlKGtleToga2V5b2YgQXRlVHJhbnNsYXRpb25zW1wiYnViYmxlTWVudVwiXSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRpb25zKCkuYnViYmxlTWVudVtrZXldO1xuICB9XG5cbiAgZ2V0U2xhc2hDb21tYW5kKGtleToga2V5b2YgQXRlVHJhbnNsYXRpb25zW1wic2xhc2hDb21tYW5kc1wiXSkge1xuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0aW9ucygpLnNsYXNoQ29tbWFuZHNba2V5XTtcbiAgfVxufVxuIl19
|
|
449
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRlLWkxOG4uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdGlwdGFwLWVkaXRvci9zcmMvbGliL3NlcnZpY2VzL2F0ZS1pMThuLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQThNN0QsTUFBTSxvQkFBb0IsR0FBb0I7SUFDNUMsT0FBTyxFQUFFO1FBQ1AsSUFBSSxFQUFFLGNBQWM7UUFDcEIsTUFBTSxFQUFFLGdCQUFnQjtRQUN4QixTQUFTLEVBQUUsbUJBQW1CO1FBQzlCLE1BQU0sRUFBRSw2QkFBNkI7UUFDckMsSUFBSSxFQUFFLHFCQUFxQjtRQUMzQixTQUFTLEVBQUUsWUFBWTtRQUN2QixXQUFXLEVBQUUsYUFBYTtRQUMxQixTQUFTLEVBQUUsV0FBVztRQUN0QixTQUFTLEVBQUUsV0FBVztRQUN0QixlQUFlLEVBQUUsa0JBQWtCO1FBQ25DLFFBQVEsRUFBRSxXQUFXO1FBQ3JCLFFBQVEsRUFBRSxXQUFXO1FBQ3JCLFFBQVEsRUFBRSxXQUFXO1FBQ3JCLFVBQVUsRUFBRSxhQUFhO1FBQ3pCLFdBQVcsRUFBRSxjQUFjO1FBQzNCLFVBQVUsRUFBRSxZQUFZO1FBQ3hCLFNBQVMsRUFBRSxZQUFZO1FBQ3ZCLFdBQVcsRUFBRSxjQUFjO1FBQzNCLFVBQVUsRUFBRSxhQUFhO1FBQ3pCLFlBQVksRUFBRSxlQUFlO1FBQzdCLElBQUksRUFBRSxVQUFVO1FBQ2hCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLGNBQWMsRUFBRSxpQkFBaUI7UUFDakMsS0FBSyxFQUFFLGNBQWM7UUFDckIsSUFBSSxFQUFFLGNBQWM7UUFDcEIsSUFBSSxFQUFFLG9CQUFvQjtRQUMxQixLQUFLLEVBQUUsT0FBTztRQUNkLFNBQVMsRUFBRSxZQUFZO1FBQ3ZCLFdBQVcsRUFBRSxjQUFj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QUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBzaWduYWwsIGNvbXB1dGVkIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcblxuZXhwb3J0IHR5cGUgU3VwcG9ydGVkTG9jYWxlID0gXCJlblwiIHwgXCJmclwiIHwgKHN0cmluZyAmIHt9KTtcblxuZXhwb3J0IGludGVyZmFjZSBBdGVUcmFuc2xhdGlvbnMge1xuICAvLyBUb29sYmFyXG4gIHRvb2xiYXI6IHtcbiAgICBib2xkOiBzdHJpbmc7XG4gICAgaXRhbGljOiBzdHJpbmc7XG4gICAgdW5kZXJsaW5lOiBzdHJpbmc7XG4gICAgc3RyaWtlOiBzdHJpbmc7XG4gICAgY29kZTogc3RyaW5nO1xuICAgIGNvZGVCbG9jazogc3RyaW5nO1xuICAgIHN1cGVyc2NyaXB0OiBzdHJpbmc7XG4gICAgc3Vic2NyaXB0OiBzdHJpbmc7XG4gICAgaGlnaGxpZ2h0OiBzdHJpbmc7XG4gICAgaGlnaGxpZ2h0UGlja2VyOiBzdHJpbmc7XG4gICAgaGVhZGluZzE6IHN0cmluZztcbiAgICBoZWFkaW5nMjogc3RyaW5nO1xuICAgIGhlYWRpbmczOiBzdHJpbmc7XG4gICAgYnVsbGV0TGlzdDogc3RyaW5nO1xuICAgIG9yZGVyZWRMaXN0OiBzdHJpbmc7XG4gICAgYmxvY2txdW90ZTogc3RyaW5nO1xuICAgIGFsaWduTGVmdDogc3RyaW5nO1xuICAgIGFsaWduQ2VudGVyOiBzdHJpbmc7XG4gICAgYWxpZ25SaWdodDogc3RyaW5nO1xuICAgIGFsaWduSnVzdGlmeTogc3RyaW5nO1xuICAgIGxpbms6IHN0cmluZztcbiAgICBpbWFnZTogc3RyaW5nO1xuICAgIGhvcml6b250YWxSdWxlOiBzdHJpbmc7XG4gICAgdGFibGU6IHN0cmluZztcbiAgICB1bmRvOiBzdHJpbmc7XG4gICAgcmVkbzogc3RyaW5nO1xuICAgIGNsZWFyOiBzdHJpbmc7XG4gICAgdGV4dENvbG9yOiBzdHJpbmc7XG4gICAgY3VzdG9tQ29sb3I6IHN0cmluZztcbiAgICBwcmVzZXRzOiBzdHJpbmc7XG4gIH07XG5cbiAgLy8gQnViYmxlIE1lbnVcbiAgYnViYmxlTWVudToge1xuICAgIGJvbGQ6IHN0cmluZztcbiAgICBpdGFsaWM6IHN0cmluZztcbiAgICB1bmRlcmxpbmU6IHN0cmluZztcbiAgICBzdHJpa2U6IHN0cmluZztcbiAgICBjb2RlOiBzdHJpbmc7XG4gICAgc3VwZXJzY3JpcHQ6IHN0cmluZztcbiAgICBzdWJzY3JpcHQ6IHN0cmluZztcbiAgICBoaWdobGlnaHQ6IHN0cmluZztcbiAgICBoaWdobGlnaHRQaWNrZXI6IHN0cmluZztcbiAgICB0ZXh0Q29sb3I6IHN0cmluZztcbiAgICBsaW5rOiBzdHJpbmc7XG4gICAgYWRkTGluazogc3RyaW5nO1xuICAgIGVkaXRMaW5rOiBzdHJpbmc7XG4gICAgcmVtb3ZlTGluazogc3RyaW5nO1xuICAgIGxpbmtVcmw6IHN0cmluZztcbiAgICBsaW5rVGV4dDogc3RyaW5nO1xuICAgIG9wZW5MaW5rOiBzdHJpbmc7XG4gICAgY3VzdG9tQ29sb3I6IHN0cmluZztcbiAgICBwcmVzZXRzOiBzdHJpbmc7XG4gIH07XG5cbiAgLy8gU2xhc2ggQ29tbWFuZHNcbiAgc2xhc2hDb21tYW5kczoge1xuICAgIGhlYWRpbmcxOiB7XG4gICAgICB0aXRsZTogc3RyaW5nO1xuICAgICAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgICAgIGtleXdvcmRzOiBzdHJpbmdbXTtcbiAgICB9O1xuICAgIGhlYWRpbmcyOiB7XG4gICAgICB0aXRsZTogc3RyaW5nO1xuICAgICAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgICAgIGtleXdvcmRzOiBzdHJpbmdbXTtcbiAgICB9O1xuICAgIGhlYWRpbmczOiB7XG4gICAgICB0aXRsZTogc3RyaW5nO1xuICAgICAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgICAgIGtleXdvcmRzOiBzdHJpbmdbXTtcbiAgICB9O1xuICAgIGJ1bGxldExpc3Q6IHtcbiAgICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAgICAga2V5d29yZHM6IHN0cmluZ1tdO1xuICAgIH07XG4gICAgb3JkZXJlZExpc3Q6IHtcbiAgICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAgICAga2V5d29yZHM6IHN0cmluZ1tdO1xuICAgIH07XG4gICAgYmxvY2txdW90ZToge1xuICAgICAgdGl0bGU6IHN0cmluZztcbiAgICAgIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gICAgICBrZXl3b3Jkczogc3RyaW5nW107XG4gICAgfTtcbiAgICBjb2RlOiB7XG4gICAgICB0aXRsZTogc3RyaW5nO1xuICAgICAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgICAgIGtleXdvcmRzOiBzdHJpbmdbXTtcbiAgICB9O1xuICAgIGltYWdlOiB7XG4gICAgICB0aXRsZTogc3RyaW5nO1xuICAgICAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgICAgIGtleXdvcmRzOiBzdHJpbmdbXTtcbiAgICB9O1xuICAgIGhvcml6b250YWxSdWxlOiB7XG4gICAgICB0aXRsZTogc3RyaW5nO1xuICAgICAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgICAgIGtleXdvcmRzOiBzdHJpbmdbXTtcbiAgICB9O1xuICAgIHRhYmxlOiB7XG4gICAgICB0aXRsZTogc3RyaW5nO1xuICAgICAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgICAgIGtleXdvcmRzOiBzdHJpbmdbXTtcbiAgICB9O1xuICB9O1xuXG4gIC8vIFRhYmxlIEFjdGlvbnNcbiAgdGFibGU6IHtcbiAgICBhZGRSb3dCZWZvcmU6IHN0cmluZztcbiAgICBhZGRSb3dBZnRlcjogc3RyaW5nO1xuICAgIGRlbGV0ZVJvdzogc3RyaW5nO1xuICAgIGFkZENvbHVtbkJlZm9yZTogc3RyaW5nO1xuICAgIGFkZENvbHVtbkFmdGVyOiBzdHJpbmc7XG4gICAgZGVsZXRlQ29sdW1uOiBzdHJpbmc7XG4gICAgZGVsZXRlVGFibGU6IHN0cmluZztcbiAgICB0b2dnbGVIZWFkZXJSb3c6IHN0cmluZztcbiAgICB0b2dnbGVIZWFkZXJDb2x1bW46IHN0cmluZztcbiAgICBtZXJnZUNlbGxzOiBzdHJpbmc7XG4gICAgc3BsaXRDZWxsOiBzdHJpbmc7XG4gIH07XG5cbiAgLy8gSW1hZ2UgVXBsb2FkXG4gIGltYWdlVXBsb2FkOiB7XG4gICAgc2VsZWN0SW1hZ2U6IHN0cmluZztcbiAgICBsb2FkRXJyb3I6IHN0cmluZztcbiAgICB1cGxvYWRpbmdJbWFnZTogc3RyaW5nO1xuICAgIHVwbG9hZFByb2dyZXNzOiBzdHJpbmc7XG4gICAgdXBsb2FkRXJyb3I6IHN0cmluZztcbiAgICB1cGxvYWRTdWNjZXNzOiBzdHJpbmc7XG4gICAgaW1hZ2VUb29MYXJnZTogc3RyaW5nO1xuICAgIGludmFsaWRGaWxlVHlwZTogc3RyaW5nO1xuICAgIGRyYWdEcm9wVGV4dDogc3RyaW5nO1xuICAgIGNoYW5nZUltYWdlOiBzdHJpbmc7XG4gICAgZG93bmxvYWRJbWFnZTogc3RyaW5nO1xuICAgIGRlbGV0ZUltYWdlOiBzdHJpbmc7XG4gICAgcmVzaXplU21hbGw6IHN0cmluZztcbiAgICByZXNpemVNZWRpdW06IHN0cmluZztcbiAgICByZXNpemVMYXJnZTogc3RyaW5nO1xuICAgIHJlc2l6ZU9yaWdpbmFsOiBzdHJpbmc7XG4gICAgYWxpZ25MZWZ0OiBzdHJpbmc7XG4gICAgYWxpZ25DZW50ZXI6IHN0cmluZztcbiAgICBhbGlnblJpZ2h0OiBzdHJpbmc7XG4gICAgcmVzaXppbmc6IHN0cmluZztcbiAgICBjb21wcmVzc2luZzogc3RyaW5nO1xuICAgIGNvbXByZXNzaW9uRXJyb3I6IHN0cmluZztcbiAgICB2YWxpZGF0aW5nOiBzdHJpbmc7XG4gICAgdXBsb2FkaW5nVG9TZXJ2ZXI6IHN0cmluZztcbiAgICByZXBsYWNpbmdJbWFnZTogc3RyaW5nO1xuICAgIGluc2VydGluZ0ltYWdlOiBzdHJpbmc7XG4gICAgbm9GaWxlU2VsZWN0ZWQ6IHN0cmluZztcbiAgICBzZWxlY3Rpb25DYW5jZWxsZWQ6IHN0cmluZztcbiAgfTtcblxuICAvLyBFZGl0b3JcbiAgZWRpdG9yOiB7XG4gICAgcGxhY2Vob2xkZXI6IHN0cmluZztcbiAgICBjaGFyYWN0ZXI6IHN0cmluZztcbiAgICB3b3JkOiBzdHJpbmc7XG4gICAgbGlua1Byb21wdDogc3RyaW5nO1xuICAgIGxpbmtVcmxQcm9tcHQ6IHN0cmluZztcbiAgICBjb25maXJtRGVsZXRlOiBzdHJpbmc7XG4gICAgdG9nZ2xlRWRpdDogc3RyaW5nO1xuICAgIHZpZXdNb2RlOiBzdHJpbmc7XG4gICAgYmxvY2tBZGQ6IHN0cmluZztcbiAgICBibG9ja0RyYWc6IHN0cmluZztcbiAgfTtcblxuICAvLyBDb21tb25cbiAgY29tbW9uOiB7XG4gICAgY2FuY2VsOiBzdHJpbmc7XG4gICAgY29uZmlybTogc3RyaW5nO1xuICAgIGFwcGx5OiBzdHJpbmc7XG4gICAgZGVsZXRlOiBzdHJpbmc7XG4gICAgc2F2ZTogc3RyaW5nO1xuICAgIGNsb3NlOiBzdHJpbmc7XG4gICAgbG9hZGluZzogc3RyaW5nO1xuICAgIGVycm9yOiBzdHJpbmc7XG4gICAgc3VjY2Vzczogc3RyaW5nO1xuICB9O1xuXG4gIC8vIEV4cG9ydFxuICBleHBvcnQ6IHtcbiAgICBleHBvcnQ6IHN0cmluZztcbiAgICBodG1sOiBzdHJpbmc7XG4gICAgbWFya2Rvd246IHN0cmluZztcbiAgICB0ZXh0OiBzdHJpbmc7XG4gICAgY29weUh0bWw6IHN0cmluZztcbiAgICBjb3B5TWFya2Rvd246IHN0cmluZztcbiAgICBjb3B5VGV4dDogc3RyaW5nO1xuICAgIGRvd25sb2FkSHRtbDogc3RyaW5nO1xuICAgIGRvd25sb2FkTWFya2Rvd246IHN0cmluZztcbiAgICBkb3dubG9hZFRleHQ6IHN0cmluZztcbiAgICBjb3BpZWRTdWNjZXNzOiBzdHJpbmc7XG4gIH07XG59XG5cbmNvbnN0IEVOR0xJU0hfVFJBTlNMQVRJT05TOiBBdGVUcmFuc2xhdGlvbnMgPSB7XG4gIHRvb2xiYXI6IHtcbiAgICBib2xkOiBcIkJvbGRcXG5DdHJsK0JcIixcbiAgICBpdGFsaWM6IFwiSXRhbGljXFxuQ3RybCtJXCIsXG4gICAgdW5kZXJsaW5lOiBcIlVuZGVybGluZVxcbkN0cmwrVVwiLFxuICAgIHN0cmlrZTogXCJTdHJpa2V0aHJvdWdoXFxuQ3RybCtTaGlmdCtYXCIsXG4gICAgY29kZTogXCJJbmxpbmUgQ29kZVxcbkN0cmwrRVwiLFxuICAgIGNvZGVCbG9jazogXCJDb2RlIEJsb2NrXCIsXG4gICAgc3VwZXJzY3JpcHQ6IFwiU3VwZXJzY3JpcHRcIixcbiAgICBzdWJzY3JpcHQ6IFwiU3Vic2NyaXB0XCIsXG4gICAgaGlnaGxpZ2h0OiBcIkhpZ2hsaWdodFwiLFxuICAgIGhpZ2hsaWdodFBpY2tlcjogXCJCYWNrZ3JvdW5kIENvbG9yXCIsXG4gICAgaGVhZGluZzE6IFwiSGVhZGluZyAxXCIsXG4gICAgaGVhZGluZzI6IFwiSGVhZGluZyAyXCIsXG4gICAgaGVhZGluZzM6IFwiSGVhZGluZyAzXCIsXG4gICAgYnVsbGV0TGlzdDogXCJCdWxsZXQgTGlzdFwiLFxuICAgIG9yZGVyZWRMaXN0OiBcIk9yZGVyZWQgTGlzdFwiLFxuICAgIGJsb2NrcXVvdGU6IFwiQmxvY2txdW90ZVwiLFxuICAgIGFsaWduTGVmdDogXCJBbGlnbiBMZWZ0XCIsXG4gICAgYWxpZ25DZW50ZXI6IFwiQWxpZ24gQ2VudGVyXCIsXG4gICAgYWxpZ25SaWdodDogXCJBbGlnbiBSaWdodFwiLFxuICAgIGFsaWduSnVzdGlmeTogXCJBbGlnbiBKdXN0aWZ5XCIsXG4gICAgbGluazogXCJBZGQgTGlua1wiLFxuICAgIGltYWdlOiBcIkFkZCBJbWFnZVwiLFxuICAgIGhvcml6b250YWxSdWxlOiBcIkhvcml6b250YWwgUnVsZVwiLFxuICAgIHRhYmxlOiBcIkluc2VydCBUYWJsZVwiLFxuICAgIHVuZG86IFwiVW5kb1xcbkN0cmwrWlwiLFxuICAgIHJlZG86IFwiUmVkb1xcbkN0cmwrU2hpZnQrWlwiLFxuICAgIGNsZWFyOiBcIkNsZWFyXCIsXG4gICAgdGV4dENvbG9yOiBcIlRleHQgQ29sb3JcIixcbiAgICBjdXN0b21Db2xvcjogXCJDdXN0b20gQ29sb3JcIixcbiAgICBwcmVzZXRzOiBcIlByZXNldHNcIixcbiAgfSxcbiAgYnViYmxlTWVudToge1xuICAgIGJvbGQ6IFwiQm9sZFxcbkN0cmwrQlwiLFxuICAgIGl0YWxpYzogXCJJdGFsaWNcXG5DdHJsK0lcIixcbiAgICB1bmRlcmxpbmU6IFwiVW5kZXJsaW5lXFxuQ3RybCtVXCIsXG4gICAgc3RyaWtlOiBcIlN0cmlrZXRocm91Z2hcXG5DdHJsK1NoaWZ0K1hcIixcbiAgICBjb2RlOiBcIkNvZGVcXG5DdHJsK0VcIixcbiAgICBzdXBlcnNjcmlwdDogXCJTdXBlcnNjcmlwdFwiLFxuICAgIHN1YnNjcmlwdDogXCJTdWJzY3JpcHRcIixcbiAgICBoaWdobGlnaHQ6IFwiSGlnaGxpZ2h0XCIsXG4gICAgaGlnaGxpZ2h0UGlja2VyOiBcIkJhY2tncm91bmQgQ29sb3JcIixcbiAgICB0ZXh0Q29sb3I6IFwiVGV4dCBDb2xvclwiLFxuICAgIGxpbms6IFwiTGlua1wiLFxuICAgIGFkZExpbms6IFwiQWRkIExpbmtcIixcbiAgICBlZGl0TGluazogXCJFZGl0IExpbmtcIixcbiAgICByZW1vdmVMaW5rOiBcIlJlbW92ZSBMaW5rXCIsXG4gICAgbGlua1VybDogXCJMaW5rIFVSTFwiLFxuICAgIGxpbmtUZXh0OiBcIkxpbmsgVGV4dFwiLFxuICAgIG9wZW5MaW5rOiBcIk9wZW4gTGlua1wiLFxuICAgIGN1c3RvbUNvbG9yOiBcIkN1c3RvbSBDb2xvclwiLFxuICAgIHByZXNldHM6IFwiUHJlc2V0c1wiLFxuICB9LFxuICBzbGFzaENvbW1hbmRzOiB7XG4gICAgaGVhZGluZzE6IHtcbiAgICAgIHRpdGxlOiBcIkhlYWRpbmcgMVwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiTGFyZ2Ugc2VjdGlvbiBoZWFkaW5nXCIsXG4gICAgICBrZXl3b3JkczogW1wiaGVhZGluZ1wiLCBcImgxXCIsIFwidGl0bGVcIiwgXCIxXCIsIFwiaGVhZGVyXCJdLFxuICAgIH0sXG4gICAgaGVhZGluZzI6IHtcbiAgICAgIHRpdGxlOiBcIkhlYWRpbmcgMlwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiTWVkaXVtIHNlY3Rpb24gaGVhZGluZ1wiLFxuICAgICAga2V5d29yZHM6IFtcImhlYWRpbmdcIiwgXCJoMlwiLCBcInRpdGxlXCIsIFwiMlwiLCBcImhlYWRlclwiXSxcbiAgICB9LFxuICAgIGhlYWRpbmczOiB7XG4gICAgICB0aXRsZTogXCJIZWFkaW5nIDNcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlNtYWxsIHNlY3Rpb24gaGVhZGluZ1wiLFxuICAgICAga2V5d29yZHM6IFtcImhlYWRpbmdcIiwgXCJoM1wiLCBcInRpdGxlXCIsIFwiM1wiLCBcImhlYWRlclwiXSxcbiAgICB9LFxuICAgIGJ1bGxldExpc3Q6IHtcbiAgICAgIHRpdGxlOiBcIkJ1bGxldCBMaXN0XCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJDcmVhdGUgYSBidWxsZXQgbGlzdFwiLFxuICAgICAga2V5d29yZHM6IFtcImJ1bGxldFwiLCBcImxpc3RcIiwgXCJ1bFwiLCBcInVub3JkZXJlZFwiXSxcbiAgICB9LFxuICAgIG9yZGVyZWRMaXN0OiB7XG4gICAgICB0aXRsZTogXCJPcmRlcmVkIExpc3RcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkNyZWF0ZSBhbiBvcmRlcmVkIGxpc3RcIixcbiAgICAgIGtleXdvcmRzOiBbXCJvcmRlcmVkXCIsIFwibGlzdFwiLCBcIm9sXCIsIFwibnVtYmVyZWRcIl0sXG4gICAgfSxcbiAgICBibG9ja3F1b3RlOiB7XG4gICAgICB0aXRsZTogXCJCbG9ja3F1b3RlXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJBZGQgYSBibG9ja3F1b3RlXCIsXG4gICAgICBrZXl3b3JkczogW1wicXVvdGVcIiwgXCJibG9ja3F1b3RlXCIsIFwiY2l0YXRpb25cIl0sXG4gICAgfSxcbiAgICBjb2RlOiB7XG4gICAgICB0aXRsZTogXCJDb2RlIEJsb2NrXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJBZGQgYSBjb2RlIGJsb2NrXCIsXG4gICAgICBrZXl3b3JkczogW1wiY29kZVwiLCBcImNvZGVibG9ja1wiLCBcInByZVwiLCBcInByb2dyYW1taW5nXCJdLFxuICAgIH0sXG4gICAgaW1hZ2U6IHtcbiAgICAgIHRpdGxlOiBcIkltYWdlXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJJbnNlcnQgYW4gaW1hZ2VcIixcbiAgICAgIGtleXdvcmRzOiBbXCJpbWFnZVwiLCBcInBob3RvXCIsIFwicGljdHVyZVwiLCBcImltZ1wiXSxcbiAgICB9LFxuICAgIGhvcml6b250YWxSdWxlOiB7XG4gICAgICB0aXRsZTogXCJIb3Jpem9udGFsIFJ1bGVcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkFkZCBhIGhvcml6b250YWwgbGluZVwiLFxuICAgICAga2V5d29yZHM6IFtcImhyXCIsIFwiaG9yaXpvbnRhbFwiLCBcInJ1bGVcIiwgXCJsaW5lXCIsIFwic2VwYXJhdG9yXCJdLFxuICAgIH0sXG4gICAgdGFibGU6IHtcbiAgICAgIHRpdGxlOiBcIlRhYmxlXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJJbnNlcnQgYSB0YWJsZVwiLFxuICAgICAga2V5d29yZHM6IFtcInRhYmxlXCIsIFwiZ3JpZFwiLCBcImRhdGFcIiwgXCJyb3dzXCIsIFwiY29sdW1uc1wiXSxcbiAgICB9LFxuICB9LFxuICB0YWJsZToge1xuICAgIGFkZFJvd0JlZm9yZTogXCJBZGQgcm93IGJlZm9yZVwiLFxuICAgIGFkZFJvd0FmdGVyOiBcIkFkZCByb3cgYWZ0ZXJcIixcbiAgICBkZWxldGVSb3c6IFwiRGVsZXRlIHJvd1wiLFxuICAgIGFkZENvbHVtbkJlZm9yZTogXCJBZGQgY29sdW1uIGJlZm9yZVwiLFxuICAgIGFkZENvbHVtbkFmdGVyOiBcIkFkZCBjb2x1bW4gYWZ0ZXJcIixcbiAgICBkZWxldGVDb2x1bW46IFwiRGVsZXRlIGNvbHVtblwiLFxuICAgIGRlbGV0ZVRhYmxlOiBcIkRlbGV0ZSB0YWJsZVwiLFxuICAgIHRvZ2dsZUhlYWRlclJvdzogXCJUb2dnbGUgaGVhZGVyIHJvd1wiLFxuICAgIHRvZ2dsZUhlYWRlckNvbHVtbjogXCJUb2dnbGUgaGVhZGVyIGNvbHVtblwiLFxuICAgIG1lcmdlQ2VsbHM6IFwiTWVyZ2UgY2VsbHNcIixcbiAgICBzcGxpdENlbGw6IFwiU3BsaXQgY2VsbFwiLFxuICB9LFxuICBpbWFnZVVwbG9hZDoge1xuICAgIHNlbGVjdEltYWdlOiBcIlNlbGVjdCBJbWFnZVwiLFxuICAgIGxvYWRFcnJvcjogXCJFcnJvciBsb2FkaW5nIGltYWdlXCIsXG4gICAgdXBsb2FkaW5nSW1hZ2U6IFwiVXBsb2FkaW5nIGltYWdlLi4uXCIsXG4gICAgdXBsb2FkUHJvZ3Jlc3M6IFwiVXBsb2FkIFByb2dyZXNzXCIsXG4gICAgdXBsb2FkRXJyb3I6IFwiVXBsb2FkIEVycm9yXCIsXG4gICAgdXBsb2FkU3VjY2VzczogXCJVcGxvYWQgU3VjY2Vzc1wiLFxuICAgIGltYWdlVG9vTGFyZ2U6IFwiSW1hZ2UgdG9vIGxhcmdlXCIsXG4gICAgaW52YWxpZEZpbGVUeXBlOiBcIkludmFsaWQgZmlsZSB0eXBlXCIsXG4gICAgZHJhZ0Ryb3BUZXh0OiBcIkRyYWcgYW5kIGRyb3AgaW1hZ2VzIGhlcmVcIixcbiAgICBjaGFuZ2VJbWFnZTogXCJDaGFuZ2UgSW1hZ2VcIixcbiAgICBkb3dubG9hZEltYWdlOiBcIkRvd25sb2FkIEltYWdlXCIsXG4gICAgZGVsZXRlSW1hZ2U6IFwiRGVsZXRlIEltYWdlXCIsXG4gICAgcmVzaXplU21hbGw6IFwiU21hbGxcIixcbiAgICByZXNpemVNZWRpdW06IFwiTWVkaXVtXCIsXG4gICAgcmVzaXplTGFyZ2U6IFwiTGFyZ2VcIixcbiAgICByZXNpemVPcmlnaW5hbDogXCJPcmlnaW5hbFwiLFxuICAgIGFsaWduTGVmdDogXCJBbGlnbiBMZWZ0XCIsXG4gICAgYWxpZ25DZW50ZXI6IFwiQWxpZ24gQ2VudGVyXCIsXG4gICAgYWxpZ25SaWdodDogXCJBbGlnbiBSaWdodFwiLFxuICAgIHJlc2l6aW5nOiBcIlJlc2l6aW5nLi4uXCIsXG4gICAgY29tcHJlc3Npbmc6IFwiQ29tcHJlc3NpbmcuLi5cIixcbiAgICBjb21wcmVzc2lvbkVycm9yOiBcIkVycm9yIGR1cmluZyBjb21wcmVzc2lvblwiLFxuICAgIHZhbGlkYXRpbmc6IFwiVmFsaWRhdGluZyBmaWxlLi4uXCIsXG4gICAgdXBsb2FkaW5nVG9TZXJ2ZXI6IFwiVXBsb2FkaW5nIHRvIHNlcnZlci4uLlwiLFxuICAgIHJlcGxhY2luZ0ltYWdlOiBcIlJlcGxhY2luZyBpbWFnZS4uLlwiLFxuICAgIGluc2VydGluZ0ltYWdlOiBcIkluc2VydGluZyBpbnRvIGVkaXRvci4uLlwiLFxuICAgIG5vRmlsZVNlbGVjdGVkOiBcIk5vIGltYWdlIGZpbGUgc2VsZWN0ZWRcIixcbiAgICBzZWxlY3Rpb25DYW5jZWxsZWQ6IFwiU2VsZWN0aW9uIGNhbmNlbGxlZFwiLFxuICB9LFxuICBlZGl0b3I6IHtcbiAgICBwbGFjZWhvbGRlcjogXCJTdGFydCB0eXBpbmcuLi5cIixcbiAgICBjaGFyYWN0ZXI6IFwiY2hhcmFjdGVyXCIsXG4gICAgd29yZDogXCJ3b3JkXCIsXG4gICAgbGlua1Byb21wdDogXCJFbnRlciBsaW5rIFVSTFwiLFxuICAgIGxpbmtVcmxQcm9tcHQ6IFwiRW50ZXIgVVJMXCIsXG4gICAgY29uZmlybURlbGV0ZTogXCJBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIHRoaXM/XCIsXG4gICAgdG9nZ2xlRWRpdDogXCJTd2l0Y2ggdG8gRWRpdCBNb2RlXCIsXG4gICAgdmlld01vZGU6IFwiU3dpdGNoIHRvIFZpZXcgTW9kZVwiLFxuICAgIGJsb2NrQWRkOiBcIkNsaWNrIHRvIGFkZCBhIGJsb2NrXCIsXG4gICAgYmxvY2tEcmFnOiBcIkRyYWcgdG8gbW92ZSB0aGlzIGJsb2NrXCIsXG4gIH0sXG4gIGNvbW1vbjoge1xuICAgIGNhbmNlbDogXCJDYW5jZWxcIixcbiAgICBjb25maXJtOiBcIkNvbmZpcm1cIixcbiAgICBhcHBseTogXCJBcHBseVwiLFxuICAgIGRlbGV0ZTogXCJEZWxldGVcIixcbiAgICBzYXZlOiBcIlNhdmVcIixcbiAgICBjbG9zZTogXCJDbG9zZVwiLFxuICAgIGxvYWRpbmc6IFwiTG9hZGluZ1wiLFxuICAgIGVycm9yOiBcIkVycm9yXCIsXG4gICAgc3VjY2VzczogXCJTdWNjZXNzXCIsXG4gIH0sXG4gIGV4cG9ydDoge1xuICAgIGV4cG9ydDogXCJFeHBvcnRcIixcbiAgICBodG1sOiBcIkhUTUxcIixcbiAgICBtYXJrZG93bjogXCJNYXJrZG93blwiLFxuICAgIHRleHQ6IFwiUGxhaW4gVGV4dFwiLFxuICAgIGNvcHlIdG1sOiBcIkNvcHkgYXMgSFRNTFwiLFxuICAgIGNvcHlNYXJrZG93bjogXCJDb3B5IGFzIE1hcmtkb3duXCIsXG4gICAgY29weVRleHQ6IFwiQ29weSBhcyBwbGFpbiB0ZXh0XCIsXG4gICAgZG93bmxvYWRIdG1sOiBcIkRvd25sb2FkIC5odG1sXCIsXG4gICAgZG93bmxvYWRNYXJrZG93bjogXCJEb3dubG9hZCAubWRcIixcbiAgICBkb3dubG9hZFRleHQ6IFwiRG93bmxvYWQgLnR4dFwiLFxuICAgIGNvcGllZFN1Y2Nlc3M6IFwiQ29waWVkIHRvIGNsaXBib2FyZCFcIixcbiAgfSxcbn07XG5cbmNvbnN0IEZSRU5DSF9UUkFOU0xBVElPTlM6IEF0ZVRyYW5zbGF0aW9ucyA9IHtcbiAgdG9vbGJhcjoge1xuICAgIGJvbGQ6IFwiR3Jhc1xcbkN0cmwrQlwiLFxuICAgIGl0YWxpYzogXCJJdGFsaXF1ZVxcbkN0cmwrSVwiLFxuICAgIHVuZGVybGluZTogXCJTb3VsaWduw6lcXG5DdHJsK1VcIixcbiAgICBzdHJpa2U6IFwiQmFycsOpXFxuQ3RybCtTaGlmdCtYXCIsXG4gICAgY29kZTogXCJDb2RlIGVuIGxpZ25lXFxuQ3RybCtFXCIsXG4gICAgY29kZUJsb2NrOiBcIkJsb2MgZGUgY29kZVwiLFxuICAgIHN1cGVyc2NyaXB0OiBcIkV4cG9zYW50XCIsXG4gICAgc3Vic2NyaXB0OiBcIkluZGljZVwiLFxuICAgIGhpZ2hsaWdodDogXCJTdXJsaWduZXJcIixcbiAgICBoaWdobGlnaHRQaWNrZXI6IFwiQ291bGV1ciBkZSBmb25kXCIsXG4gICAgaGVhZGluZzE6IFwiVGl0cmUgMVwiLFxuICAgIGhlYWRpbmcyOiBcIlRpdHJlIDJcIixcbiAgICBoZWFkaW5nMzogXCJUaXRyZSAzXCIsXG4gICAgYnVsbGV0TGlzdDogXCJMaXN0ZSDDoCBwdWNlc1wiLFxuICAgIG9yZGVyZWRMaXN0OiBcIkxpc3RlIG51bcOpcm90w6llXCIsXG4gICAgYmxvY2txdW90ZTogXCJDaXRhdGlvblwiLFxuICAgIGFsaWduTGVmdDogXCJBbGlnbmVyIMOgIGdhdWNoZVwiLFxuICAgIGFsaWduQ2VudGVyOiBcIkNlbnRyZXJcIixcbiAgICBhbGlnblJpZ2h0OiBcIkFsaWduZXIgw6AgZHJvaXRlXCIsXG4gICAgYWxpZ25KdXN0aWZ5OiBcIkp1c3RpZmllclwiLFxuICAgIGxpbms6IFwiQWpvdXRlciB1biBsaWVuXCIsXG4gICAgaW1hZ2U6IFwiQWpvdXRlciB1bmUgaW1hZ2VcIixcbiAgICBob3Jpem9udGFsUnVsZTogXCJMaWduZSBob3Jpem9udGFsZVwiLFxuICAgIHRhYmxlOiBcIkluc8OpcmVyIHVuIHRhYmxlYXVcIixcbiAgICB1bmRvOiBcIkFubnVsZXJcXG5DdHJsK1pcIixcbiAgICByZWRvOiBcIlJlZmFpcmVcXG5DdHJsK1NoaWZ0K1pcIixcbiAgICBjbGVhcjogXCJWaWRlclwiLFxuICAgIHRleHRDb2xvcjogXCJDb3VsZXVyIGR1IHRleHRlXCIsXG4gICAgY3VzdG9tQ29sb3I6IFwiQ291bGV1ciBwZXJzb25uYWxpc8OpZVwiLFxuICAgIHByZXNldHM6IFwiUHLDqXLDqWdsYWdlc1wiLFxuICB9LFxuICBidWJibGVNZW51OiB7XG4gICAgYm9sZDogXCJHcmFzXFxuQ3RybCtCXCIsXG4gICAgaXRhbGljOiBcIkl0YWxpcXVlXFxuQ3RybCtJXCIsXG4gICAgdW5kZXJsaW5lOiBcIlNvdWxpZ27DqVxcbkN0cmwrVVwiLFxuICAgIHN0cmlrZTogXCJCYXJyw6lcXG5DdHJsK1NoaWZ0K1hcIixcbiAgICBjb2RlOiBcIkNvZGVcXG5DdHJsK0VcIixcbiAgICBzdXBlcnNjcmlwdDogXCJFeHBvc2FudFwiLFxuICAgIHN1YnNjcmlwdDogXCJJbmRpY2VcIixcbiAgICBoaWdobGlnaHQ6IFwiU3VybGlnbmVyXCIsXG4gICAgaGlnaGxpZ2h0UGlja2VyOiBcIkNvdWxldXIgZGUgZm9uZFwiLFxuICAgIHRleHRDb2xvcjogXCJDb3VsZXVyIGR1IHRleHRlXCIsXG4gICAgbGluazogXCJMaWVuXCIsXG4gICAgYWRkTGluazogXCJBam91dGVyIHVuIGxpZW5cIixcbiAgICBlZGl0TGluazogXCJNb2RpZmllciBsZSBsaWVuXCIsXG4gICAgcmVtb3ZlTGluazogXCJTdXBwcmltZXIgbGUgbGllblwiLFxuICAgIGxpbmtVcmw6IFwiVVJMIGR1IGxpZW5cIixcbiAgICBsaW5rVGV4dDogXCJUZXh0ZSBkdSBsaWVuXCIsXG4gICAgb3Blbkxpbms6IFwiT3V2cmlyIGxlIGxpZW5cIixcbiAgICBjdXN0b21Db2xvcjogXCJDb3VsZXVyIHBlcnNvbm5hbGlzw6llXCIsXG4gICAgcHJlc2V0czogXCJQcsOpcsOpZ2xhZ2VzXCIsXG4gIH0sXG4gIHNsYXNoQ29tbWFuZHM6IHtcbiAgICBoZWFkaW5nMToge1xuICAgICAgdGl0bGU6IFwiVGl0cmUgMVwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiR3JhbmQgdGl0cmUgZGUgc2VjdGlvblwiLFxuICAgICAga2V5d29yZHM6IFtcImhlYWRpbmdcIiwgXCJoMVwiLCBcInRpdHJlXCIsIFwidGl0bGVcIiwgXCIxXCIsIFwiaGVhZGVyXCJdLFxuICAgIH0sXG4gICAgaGVhZGluZzI6IHtcbiAgICAgIHRpdGxlOiBcIlRpdHJlIDJcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlRpdHJlIGRlIHNvdXMtc2VjdGlvblwiLFxuICAgICAga2V5d29yZHM6IFtcImhlYWRpbmdcIiwgXCJoMlwiLCBcInRpdHJlXCIsIFwidGl0bGVcIiwgXCIyXCIsIFwiaGVhZGVyXCJdLFxuICAgIH0sXG4gICAgaGVhZGluZzM6IHtcbiAgICAgIHRpdGxlOiBcIlRpdHJlIDNcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlBldGl0IHRpdHJlXCIsXG4gICAgICBrZXl3b3JkczogW1wiaGVhZGluZ1wiLCBcImgzXCIsIFwidGl0cmVcIiwgXCJ0aXRsZVwiLCBcIjNcIiwgXCJoZWFkZXJcIl0sXG4gICAgfSxcbiAgICBidWxsZXRMaXN0OiB7XG4gICAgICB0aXRsZTogXCJMaXN0ZSDDoCBwdWNlc1wiLFxuICAgICAgZGVzY3JpcHRpb246IFwiQ3LDqWVyIHVuZSBsaXN0ZSDDoCBwdWNlc1wiLFxuICAgICAga2V5d29yZHM6IFtcImJ1bGxldFwiLCBcImxpc3RcIiwgXCJsaXN0ZVwiLCBcInB1Y2VzXCIsIFwidWxcIl0sXG4gICAgfSxcbiAgICBvcmRlcmVkTGlzdDoge1xuICAgICAgdGl0bGU6IFwiTGlzdGUgbnVtw6lyb3TDqWVcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkNyw6llciB1bmUgbGlzdGUgbnVtw6lyb3TDqWVcIixcbiAgICAgIGtleXdvcmRzOiBbXCJudW1iZXJlZFwiLCBcImxpc3RcIiwgXCJsaXN0ZVwiLCBcIm51bcOpcm90w6llXCIsIFwib2xcIiwgXCJvcmRlcmVkXCJdLFxuICAgIH0sXG4gICAgYmxvY2txdW90ZToge1xuICAgICAgdGl0bGU6IFwiQ2l0YXRpb25cIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkFqb3V0ZXIgdW5lIGNpdGF0aW9uXCIsXG4gICAgICBrZXl3b3JkczogW1wicXVvdGVcIiwgXCJibG9ja3F1b3RlXCIsIFwiY2l0YXRpb25cIl0sXG4gICAgfSxcbiAgICBjb2RlOiB7XG4gICAgICB0aXRsZTogXCJCbG9jIGRlIGNvZGVcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkFqb3V0ZXIgdW4gYmxvYyBkZSBjb2RlXCIsXG4gICAgICBrZXl3b3JkczogW1wiY29kZVwiLCBcImNvZGVibG9ja1wiLCBcInByZVwiLCBcInByb2dyYW1tYXRpb25cIl0sXG4gICAgfSxcbiAgICBpbWFnZToge1xuICAgICAgdGl0bGU6IFwiSW1hZ2VcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkluc8OpcmVyIHVuZSBpbWFnZVwiLFxuICAgICAga2V5d29yZHM6IFtcImltYWdlXCIsIFwicGhvdG9cIiwgXCJwaWN0dXJlXCIsIFwiaW1nXCJdLFxuICAgIH0sXG4gICAgaG9yaXpvbnRhbFJ1bGU6IHtcbiAgICAgIHRpdGxlOiBcIkxpZ25lIGhvcml6b250YWxlXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJBam91dGVyIHVuZSBsaWduZSBkZSBzw6lwYXJhdGlvblwiLFxuICAgICAga2V5d29yZHM6IFtcImhyXCIsIFwiaG9yaXpvbnRhbFwiLCBcInJ1bGVcIiwgXCJsaWduZVwiLCBcInPDqXBhcmF0aW9uXCJdLFxuICAgIH0sXG4gICAgdGFibGU6IHtcbiAgICAgIHRpdGxlOiBcIlRhYmxlYXVcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkluc8OpcmVyIHVuIHRhYmxlYXVcIixcbiAgICAgIGtleXdvcmRzOiBbXCJ0YWJsZVwiLCBcInRhYmxlYXVcIiwgXCJncmlkXCIsIFwiZ3JpbGxlXCIsIFwiZGF0YVwiLCBcImRvbm7DqWVzXCIsIFwicm93c1wiLCBcImNvbG9ubmVzXCJdLFxuICAgIH0sXG4gIH0sXG4gIHRhYmxlOiB7XG4gICAgYWRkUm93QmVmb3JlOiBcIkFqb3V0ZXIgdW5lIGxpZ25lIGF2YW50XCIsXG4gICAgYWRkUm93QWZ0ZXI6IFwiQWpvdXRlciB1bmUgbGlnbmUgYXByw6hzXCIsXG4gICAgZGVsZXRlUm93OiBcIlN1cHByaW1lciBsYSBsaWduZVwiLFxuICAgIGFkZENvbHVtbkJlZm9yZTogXCJBam91dGVyIHVuZSBjb2xvbm5lIGF2YW50XCIsXG4gICAgYWRkQ29sdW1uQWZ0ZXI6IFwiQWpvdXRlciB1bmUgY29sb25uZSBhcHLDqHNcIixcbiAgICBkZWxldGVDb2x1bW46IFwiU3VwcHJpbWVyIGxhIGNvbG9ubmVcIixcbiAgICBkZWxldGVUYWJsZTogXCJTdXBwcmltZXIgbGUgdGFibGVhdVwiLFxuICAgIHRvZ2dsZUhlYWRlclJvdzogXCJCYXNjdWxlciBsaWduZSBkJ2VuLXTDqnRlXCIsXG4gICAgdG9nZ2xlSGVhZGVyQ29sdW1uOiBcIkJhc2N1bGVyIGNvbG9ubmUgZCdlbi10w6p0ZVwiLFxuICAgIG1lcmdlQ2VsbHM6IFwiRnVzaW9ubmVyIGxlcyBjZWxsdWxlc1wiLFxuICAgIHNwbGl0Q2VsbDogXCJEaXZpc2VyIGxhIGNlbGx1bGVcIixcbiAgfSxcbiAgaW1hZ2VVcGxvYWQ6IHtcbiAgICBzZWxlY3RJbWFnZTogXCJTw6lsZWN0aW9ubmVyIHVuZSBpbWFnZVwiLFxuICAgIGxvYWRFcnJvcjogXCJFcnJldXIgZGUgY2hhcmdlbWVudCBkZSBsJ2ltYWdlXCIsXG4gICAgdXBsb2FkaW5nSW1hZ2U6IFwiVMOpbMOpY2hhcmdlbWVudCBkZSBsJ2ltYWdlLi4uXCIsXG4gICAgdXBsb2FkUHJvZ3Jlc3M6IFwiUHJvZ3Jlc3Npb24gZHUgdMOpbMOpY2hhcmdlbWVudFwiLFxuICAgIHVwbG9hZEVycm9yOiBcIkVycmV1ciBkZSB0w6lsw6ljaGFyZ2VtZW50XCIsXG4gICAgdXBsb2FkU3VjY2VzczogXCJUw6lsw6ljaGFyZ2VtZW50IHLDqXVzc2lcIixcbiAgICBpbWFnZVRvb0xhcmdlOiBcIkltYWdlIHRyb3Agdm9sdW1pbmV1c2VcIixcbiAgICBpbnZhbGlkRmlsZVR5cGU6IFwiVHlwZSBkZSBmaWNoaWVyIGludmFsaWRlXCIsXG4gICAgZHJhZ0Ryb3BUZXh0OiBcIkdsaXNzZXogZXQgZMOpcG9zZXogZGVzIGltYWdlcyBpY2lcIixcbiAgICBjaGFuZ2VJbWFnZTogXCJDaGFuZ2VyIGwnaW1hZ2VcIixcbiAgICBkb3dubG9hZEltYWdlOiBcIlTDqWzDqWNoYXJnZXIgbCdpbWFnZVwiLFxuICAgIGRlbGV0ZUltYWdlOiBcIlN1cHByaW1lciBsJ2ltYWdlXCIsXG4gICAgcmVzaXplU21hbGw6IFwiUGV0aXRcIixcbiAgICByZXNpemVNZWRpdW06IFwiTW95ZW5cIixcbiAgICByZXNpemVMYXJnZTogXCJHcmFuZFwiLFxuICAgIHJlc2l6ZU9yaWdpbmFsOiBcIk9yaWdpbmFsXCIsXG4gICAgYWxpZ25MZWZ0OiBcIkFsaWduZXIgw6AgZ2F1Y2hlXCIsXG4gICAgYWxpZ25DZW50ZXI6IFwiQWxpZ25lciBhdSBjZW50cmVcIixcbiAgICBhbGlnblJpZ2h0OiBcIkFsaWduZXIgw6AgZHJvaXRlXCIsXG4gICAgcmVzaXppbmc6IFwiUmVkaW1lbnNpb25uZW1lbnQuLi5cIixcbiAgICBjb21wcmVzc2luZzogXCJDb21wcmVzc2lvbi4uLlwiLFxuICAgIGNvbXByZXNzaW9uRXJyb3I6IFwiRXJyZXVyIGxvcnMgZGUgbGEgY29tcHJlc3Npb25cIixcbiAgICB2YWxpZGF0aW5nOiBcIlZhbGlkYXRpb24gZHUgZmljaGllci4uLlwiLFxuICAgIHVwbG9hZGluZ1RvU2VydmVyOiBcIlVwbG9hZCB2ZXJzIGxlIHNlcnZldXIuLi5cIixcbiAgICByZXBsYWNpbmdJbWFnZTogXCJSZW1wbGFjZW1lbnQgZGUgbCdpbWFnZS4uLlwiLFxuICAgIGluc2VydGluZ0ltYWdlOiBcIkluc2VydGlvbiBkYW5zIGwnw6lkaXRldXIuLi5cIixcbiAgICBub0ZpbGVTZWxlY3RlZDogXCJBdWN1biBmaWNoaWVyIGltYWdlIHPDqWxlY3Rpb25uw6lcIixcbiAgICBzZWxlY3Rpb25DYW5jZWxsZWQ6IFwiU8OpbGVjdGlvbiBhbm51bMOpZVwiLFxuICB9LFxuICBlZGl0b3I6IHtcbiAgICBwbGFjZWhvbGRlcjogXCJDb21tZW5jZXogw6Agw6ljcmlyZS4uLlwiLFxuICAgIGNoYXJhY3RlcjogXCJjYXJhY3TDqHJlXCIsXG4gICAgd29yZDogXCJtb3RcIixcbiAgICBsaW5rUHJvbXB0OiBcIkVudHJleiBsJ1VSTCBkdSBsaWVuXCIsXG4gICAgbGlua1VybFByb21wdDogXCJFbnRyZXogbCdVUkxcIixcbiAgICBjb25maXJtRGVsZXRlOiBcIsOKdGVzLXZvdXMgc8O7ciBkZSB2b3Vsb2lyIHN1cHByaW1lciBjZWNpID9cIixcbiAgICB0b2dnbGVFZGl0OiBcIlBhc3NlciBlbiBtb2RlIMOpZGl0aW9uXCIsXG4gICAgdmlld01vZGU6IFwiUGFzc2VyIGVuIG1vZGUgYWZmaWNoYWdlXCIsXG4gICAgYmxvY2tBZGQ6IFwiQ2xpcXVlciBwb3VyIGFqb3V0ZXIgdW4gYmxvY1wiLFxuICAgIGJsb2NrRHJhZzogXCJGYWlyZSBnbGlzc2VyIHBvdXIgZMOpcGxhY2VyIGNlIGJsb2NcIixcbiAgfSxcbiAgY29tbW9uOiB7XG4gICAgY2FuY2VsOiBcIkFubnVsZXJcIixcbiAgICBjb25maXJtOiBcIkNvbmZpcm1lclwiLFxuICAgIGFwcGx5OiBcIkFwcGxpcXVlclwiLFxuICAgIGRlbGV0ZTogXCJTdXBwcmltZXJcIixcbiAgICBzYXZlOiBcIlNhdXZlZ2FyZGVyXCIsXG4gICAgY2xvc2U6IFwiRmVybWVyXCIsXG4gICAgbG9hZGluZzogXCJDaGFyZ2VtZW50XCIsXG4gICAgZXJyb3I6IFwiRXJyZXVyXCIsXG4gICAgc3VjY2VzczogXCJTdWNjw6hzXCIsXG4gIH0sXG4gIGV4cG9ydDoge1xuICAgIGV4cG9ydDogXCJFeHBvcnRlclwiLFxuICAgIGh0bWw6IFwiSFRNTFwiLFxuICAgIG1hcmtkb3duOiBcIk1hcmtkb3duXCIsXG4gICAgdGV4dDogXCJUZXh0ZSBicnV0XCIsXG4gICAgY29weUh0bWw6IFwiQ29waWVyIGVuIEhUTUxcIixcbiAgICBjb3B5TWFya2Rvd246IFwiQ29waWVyIGVuIE1hcmtkb3duXCIsXG4gICAgY29weVRleHQ6IFwiQ29waWVyIGVuIHRleHRlIGJydXRcIixcbiAgICBkb3dubG9hZEh0bWw6IFwiVMOpbMOpY2hhcmdlciAuaHRtbFwiLFxuICAgIGRvd25sb2FkTWFya2Rvd246IFwiVMOpbMOpY2hhcmdlciAubWRcIixcbiAgICBkb3dubG9hZFRleHQ6IFwiVMOpbMOpY2hhcmdlciAudHh0XCIsXG4gICAgY29waWVkU3VjY2VzczogXCJDb3Bpw6kgZGFucyBsZSBwcmVzc2UtcGFwaWVycyAhXCIsXG4gIH0sXG59O1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46IFwicm9vdFwiLFxufSlcbmV4cG9ydCBjbGFzcyBBdGVJMThuU2VydmljZSB7XG4gIHByaXZhdGUgX2N1cnJlbnRMb2NhbGUgPSBzaWduYWw8U3VwcG9ydGVkTG9jYWxlPihcImVuXCIpO1xuICBwcml2YXRlIF90cmFuc2xhdGlvbnMgPSBzaWduYWw8UmVjb3JkPFN1cHBvcnRlZExvY2FsZSwgQXRlVHJhbnNsYXRpb25zPj4oe1xuICAgIGVuOiBFTkdMSVNIX1RSQU5TTEFUSU9OUyxcbiAgICBmcjogRlJFTkNIX1RSQU5TTEFUSU9OUyxcbiAgfSk7XG5cbiAgLy8gUHVibGljIHNpZ25hbHNcbiAgcmVhZG9ubHkgY3VycmVudExvY2FsZSA9IHRoaXMuX2N1cnJlbnRMb2NhbGUuYXNSZWFkb25seSgpO1xuICAvKiogQWxsIGxvYWRlZCB0cmFuc2xhdGlvbnMgKHVzZWZ1bCBmb3IgZHluYW1pYyBrZXkgYWNjZXNzKSAqL1xuICByZWFkb25seSBhbGxUcmFuc2xhdGlvbnMgPSB0aGlzLl90cmFuc2xhdGlvbnMuYXNSZWFkb25seSgpO1xuXG4gIHJlYWRvbmx5IHRyYW5zbGF0aW9ucyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuX3RyYW5zbGF0aW9ucygpW3RoaXMuX2N1cnJlbnRMb2NhbGUoKV0pO1xuXG4gIC8vIEZhc3QgdHJhbnNsYXRpb24gbWV0aG9kc1xuICByZWFkb25seSB0ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy50cmFuc2xhdGlvbnMoKSk7XG4gIHJlYWRvbmx5IHRvb2xiYXIgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnRyYW5zbGF0aW9ucygpLnRvb2xiYXIpO1xuICByZWFkb25seSBidWJibGVNZW51ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy50cmFuc2xhdGlvbnMoKS5idWJibGVNZW51KTtcbiAgcmVhZG9ubHkgc2xhc2hDb21tYW5kcyA9IGNvbXB1dGVkKCgpID0+IHRoaXMudHJhbnNsYXRpb25zKCkuc2xhc2hDb21tYW5kcyk7XG4gIHJlYWRvbmx5IHRhYmxlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy50cmFuc2xhdGlvbnMoKS50YWJsZSk7XG4gIHJlYWRvbmx5IGltYWdlVXBsb2FkID0gY29tcHV0ZWQoKCkgPT4gdGhpcy50cmFuc2xhdGlvbnMoKS5pbWFnZVVwbG9hZCk7XG4gIHJlYWRvbmx5IGVkaXRvciA9IGNvbXB1dGVkKCgpID0+IHRoaXMudHJhbnNsYXRpb25zKCkuZWRpdG9yKTtcbiAgcmVhZG9ubHkgY29tbW9uID0gY29tcHV0ZWQoKCkgPT4gdGhpcy50cmFuc2xhdGlvbnMoKS5jb21tb24pO1xuICByZWFkb25seSBleHBvcnQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnRyYW5zbGF0aW9ucygpLmV4cG9ydCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgLy8gQXV0b21hdGljYWxseSBkZXRlY3QgYnJvd3NlciBsYW5ndWFnZVxuICAgIHRoaXMuZGV0ZWN0QnJvd3Nlckxhbmd1YWdlKCk7XG4gIH1cblxuICBzZXRMb2NhbGUobG9jYWxlOiBTdXBwb3J0ZWRMb2NhbGUpOiB2b2lkIHtcbiAgICB0aGlzLl9jdXJyZW50TG9jYWxlLnNldChsb2NhbGUpO1xuICB9XG5cbiAgYXV0b0RldGVjdExvY2FsZSgpOiB2b2lkIHtcbiAgICB0aGlzLmRldGVjdEJyb3dzZXJMYW5ndWFnZSgpO1xuICB9XG5cbiAgZ2V0U3VwcG9ydGVkTG9jYWxlcygpOiBTdXBwb3J0ZWRMb2NhbGVbXSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuX3RyYW5zbGF0aW9ucygpKSBhcyBTdXBwb3J0ZWRMb2NhbGVbXTtcbiAgfVxuXG4gIGFkZFRyYW5zbGF0aW9ucyhsb2NhbGU6IHN0cmluZywgdHJhbnNsYXRpb25zOiBBdGVUcmFuc2xhdGlvbnMgfCBQYXJ0aWFsPEF0ZVRyYW5zbGF0aW9ucz4pOiB2b2lkIHtcbiAgICB0aGlzLl90cmFuc2xhdGlvbnMudXBkYXRlKGN1cnJlbnQgPT4ge1xuICAgICAgY29uc3QgZXhpc3RpbmcgPSBjdXJyZW50W2xvY2FsZV0gfHwgRU5HTElTSF9UUkFOU0xBVElPTlM7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5jdXJyZW50LFxuICAgICAgICBbbG9jYWxlXToge1xuICAgICAgICAgIC4uLmV4aXN0aW5nLFxuICAgICAgICAgIC4uLnRyYW5zbGF0aW9ucyxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGRldGVjdEJyb3dzZXJMYW5ndWFnZSgpOiB2b2lkIHtcbiAgICBjb25zdCBicm93c2VyTGFuZyA9IG5hdmlnYXRvci5sYW5ndWFnZS50b0xvd2VyQ2FzZSgpO1xuICAgIGlmIChicm93c2VyTGFuZy5zdGFydHNXaXRoKFwiZnJcIikpIHtcbiAgICAgIHRoaXMuX2N1cnJlbnRMb2NhbGUuc2V0KFwiZnJcIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2N1cnJlbnRMb2NhbGUuc2V0KFwiZW5cIik7XG4gICAgfVxuICB9XG5cbiAgLy8gVXRpbGl0eSBtZXRob2RzIGZvciBjb21wb25lbnRzXG4gIGdldFRvb2xiYXJUaXRsZShrZXk6IGtleW9mIEF0ZVRyYW5zbGF0aW9uc1tcInRvb2xiYXJcIl0pOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0aW9ucygpLnRvb2xiYXJba2V5XTtcbiAgfVxuXG4gIGdldEJ1YmJsZU1lbnVUaXRsZShrZXk6IGtleW9mIEF0ZVRyYW5zbGF0aW9uc1tcImJ1YmJsZU1lbnVcIl0pOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0aW9ucygpLmJ1YmJsZU1lbnVba2V5XTtcbiAgfVxuXG4gIGdldFNsYXNoQ29tbWFuZChrZXk6IGtleW9mIEF0ZVRyYW5zbGF0aW9uc1tcInNsYXNoQ29tbWFuZHNcIl0pIHtcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGlvbnMoKS5zbGFzaENvbW1hbmRzW2tleV07XG4gIH1cbn1cbiJdfQ==
|