obsidian-dev-utils 22.1.1-beta.14 → 22.1.1-beta.16
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 +14 -0
- package/dist/lib/cjs/Library.cjs +1 -1
- package/dist/lib/cjs/obsidian/Components/MultipleTextComponent.cjs +21 -2
- package/dist/lib/cjs/obsidian/Components/MultipleTextComponent.d.cts +13 -1
- package/dist/lib/cjs/obsidian/Components/TextBasedComponent.cjs +7 -4
- package/dist/lib/cjs/obsidian/Components/TextBasedComponent.d.cts +9 -5
- package/dist/lib/cjs/obsidian/Components/TypedTextComponent.cjs +22 -1
- package/dist/lib/cjs/obsidian/Components/TypedTextComponent.d.cts +17 -1
- package/dist/lib/cjs/obsidian/Plugin/PluginBase.cjs +21 -2
- package/dist/lib/cjs/obsidian/Plugin/PluginBase.d.cts +7 -3
- package/dist/lib/cjs/obsidian/Plugin/PluginSettingsManagerBase.cjs +26 -27
- package/dist/lib/cjs/obsidian/Plugin/PluginSettingsManagerBase.d.cts +7 -8
- package/dist/lib/cjs/obsidian/Plugin/PluginSettingsTabBase.cjs +11 -12
- package/dist/lib/cjs/obsidian/Plugin/PluginSettingsTabBase.d.cts +7 -2
- package/dist/lib/esm/Library.mjs +1 -1
- package/dist/lib/esm/obsidian/Components/MultipleTextComponent.d.mts +13 -1
- package/dist/lib/esm/obsidian/Components/MultipleTextComponent.mjs +21 -2
- package/dist/lib/esm/obsidian/Components/TextBasedComponent.d.mts +9 -5
- package/dist/lib/esm/obsidian/Components/TextBasedComponent.mjs +7 -4
- package/dist/lib/esm/obsidian/Components/TypedTextComponent.d.mts +17 -1
- package/dist/lib/esm/obsidian/Components/TypedTextComponent.mjs +22 -1
- package/dist/lib/esm/obsidian/Plugin/PluginBase.d.mts +7 -3
- package/dist/lib/esm/obsidian/Plugin/PluginBase.mjs +21 -2
- package/dist/lib/esm/obsidian/Plugin/PluginSettingsManagerBase.d.mts +7 -8
- package/dist/lib/esm/obsidian/Plugin/PluginSettingsManagerBase.mjs +26 -27
- package/dist/lib/esm/obsidian/Plugin/PluginSettingsTabBase.d.mts +7 -2
- package/dist/lib/esm/obsidian/Plugin/PluginSettingsTabBase.mjs +15 -13
- package/package.json +1 -1
@@ -12,7 +12,7 @@ import { CssClass } from '../../CssClass.mjs';
|
|
12
12
|
/**
|
13
13
|
* A component that displays and edits a text-based value.
|
14
14
|
*/
|
15
|
-
export declare abstract class TypedTextComponent<T> extends ValueComponent<T> implements TextBasedComponent
|
15
|
+
export declare abstract class TypedTextComponent<T> extends ValueComponent<T> implements TextBasedComponent<T>, ValidatorComponent, ValueComponentWithChangeTracking<T> {
|
16
16
|
/**
|
17
17
|
* The input element of the component.
|
18
18
|
*/
|
@@ -30,12 +30,21 @@ export declare abstract class TypedTextComponent<T> extends ValueComponent<T> im
|
|
30
30
|
* @param cssClass - The CSS class of the component.
|
31
31
|
*/
|
32
32
|
constructor(containerEl: HTMLElement, type: string, cssClass: CssClass);
|
33
|
+
/**
|
34
|
+
* Empties the component.
|
35
|
+
*/
|
36
|
+
empty(): void;
|
33
37
|
/**
|
34
38
|
* Gets the value of the component.
|
35
39
|
*
|
36
40
|
* @returns The value of the component.
|
37
41
|
*/
|
38
42
|
getValue(): T;
|
43
|
+
/**
|
44
|
+
* Checks if the component is empty.
|
45
|
+
*
|
46
|
+
* @returns `true` if the component is empty, `false` otherwise.
|
47
|
+
*/
|
39
48
|
isEmpty(): boolean;
|
40
49
|
/**
|
41
50
|
* Sets the callback function to be called when the component is changed.
|
@@ -62,6 +71,13 @@ export declare abstract class TypedTextComponent<T> extends ValueComponent<T> im
|
|
62
71
|
* @returns The component.
|
63
72
|
*/
|
64
73
|
setPlaceholder(placeholder: string): this;
|
74
|
+
/**
|
75
|
+
* Sets the placeholder value of the component.
|
76
|
+
*
|
77
|
+
* @param placeholderValue - The placeholder value to set.
|
78
|
+
* @returns The component.
|
79
|
+
*/
|
80
|
+
setPlaceholderValue(placeholderValue: T): this;
|
65
81
|
/**
|
66
82
|
* Sets the value of the component.
|
67
83
|
*
|
@@ -37,6 +37,12 @@ class TypedTextComponent extends ValueComponent {
|
|
37
37
|
this.inputEl.type = type;
|
38
38
|
containerEl.addClass(CssClass.LibraryName, getPluginId(), cssClass);
|
39
39
|
}
|
40
|
+
/**
|
41
|
+
* Empties the component.
|
42
|
+
*/
|
43
|
+
empty() {
|
44
|
+
this.textComponent.setValue("");
|
45
|
+
}
|
40
46
|
/**
|
41
47
|
* Gets the value of the component.
|
42
48
|
*
|
@@ -45,6 +51,11 @@ class TypedTextComponent extends ValueComponent {
|
|
45
51
|
getValue() {
|
46
52
|
return this.valueFromString(this.textComponent.getValue());
|
47
53
|
}
|
54
|
+
/**
|
55
|
+
* Checks if the component is empty.
|
56
|
+
*
|
57
|
+
* @returns `true` if the component is empty, `false` otherwise.
|
58
|
+
*/
|
48
59
|
isEmpty() {
|
49
60
|
return this.textComponent.getValue() === "";
|
50
61
|
}
|
@@ -85,6 +96,16 @@ class TypedTextComponent extends ValueComponent {
|
|
85
96
|
this.textComponent.setPlaceholder(placeholder);
|
86
97
|
return this;
|
87
98
|
}
|
99
|
+
/**
|
100
|
+
* Sets the placeholder value of the component.
|
101
|
+
*
|
102
|
+
* @param placeholderValue - The placeholder value to set.
|
103
|
+
* @returns The component.
|
104
|
+
*/
|
105
|
+
setPlaceholderValue(placeholderValue) {
|
106
|
+
this.setPlaceholder(this.valueToString(placeholderValue));
|
107
|
+
return this;
|
108
|
+
}
|
88
109
|
/**
|
89
110
|
* Sets the value of the component.
|
90
111
|
*
|
@@ -108,4 +129,4 @@ class TypedTextComponent extends ValueComponent {
|
|
108
129
|
export {
|
109
130
|
TypedTextComponent
|
110
131
|
};
|
111
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL0NvbXBvbmVudHMvVHlwZWRUZXh0Q29tcG9uZW50LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvbiBUeXBlZFRleHRDb21wb25lbnRcbiAqIENvbnRhaW5zIGEgY29tcG9uZW50IHRoYXQgZGlzcGxheXMgYW5kIGVkaXRzIGEgdGV4dC1iYXNlZCB2YWx1ZS5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IFByb21pc2FibGUgfSBmcm9tICd0eXBlLWZlc3QnO1xuXG5pbXBvcnQge1xuICBUZXh0Q29tcG9uZW50LFxuICBWYWx1ZUNvbXBvbmVudFxufSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgVmFsaWRhdG9yRWxlbWVudCB9IGZyb20gJy4uLy4uL0hUTUxFbGVtZW50LnRzJztcbmltcG9ydCB0eXBlIHsgVGV4dEJhc2VkQ29tcG9uZW50IH0gZnJvbSAnLi9UZXh0QmFzZWRDb21wb25lbnQudHMnO1xuaW1wb3J0IHR5cGUgeyBWYWxpZGF0b3JDb21wb25lbnQgfSBmcm9tICcuL1ZhbGlkYXRvckNvbXBvbmVudC50cyc7XG5pbXBvcnQgdHlwZSB7IFZhbHVlQ29tcG9uZW50V2l0aENoYW5nZVRyYWNraW5nIH0gZnJvbSAnLi9WYWx1ZUNvbXBvbmVudFdpdGhDaGFuZ2VUcmFja2luZy50cyc7XG5cbmltcG9ydCB7IENzc0NsYXNzIH0gZnJvbSAnLi4vLi4vQ3NzQ2xhc3MudHMnO1xuaW1wb3J0IHsgZ2V0UGx1Z2luSWQgfSBmcm9tICcuLi9QbHVnaW4vUGx1Z2luSWQudHMnO1xuXG4vKipcbiAqIEEgY29tcG9uZW50IHRoYXQgZGlzcGxheXMgYW5kIGVkaXRzIGEgdGV4dC1iYXNlZCB2YWx1ZS5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFR5cGVkVGV4dENvbXBvbmVudDxUPiBleHRlbmRzIFZhbHVlQ29tcG9uZW50PFQ+
|
132
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL0NvbXBvbmVudHMvVHlwZWRUZXh0Q29tcG9uZW50LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvbiBUeXBlZFRleHRDb21wb25lbnRcbiAqIENvbnRhaW5zIGEgY29tcG9uZW50IHRoYXQgZGlzcGxheXMgYW5kIGVkaXRzIGEgdGV4dC1iYXNlZCB2YWx1ZS5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IFByb21pc2FibGUgfSBmcm9tICd0eXBlLWZlc3QnO1xuXG5pbXBvcnQge1xuICBUZXh0Q29tcG9uZW50LFxuICBWYWx1ZUNvbXBvbmVudFxufSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgVmFsaWRhdG9yRWxlbWVudCB9IGZyb20gJy4uLy4uL0hUTUxFbGVtZW50LnRzJztcbmltcG9ydCB0eXBlIHsgVGV4dEJhc2VkQ29tcG9uZW50IH0gZnJvbSAnLi9UZXh0QmFzZWRDb21wb25lbnQudHMnO1xuaW1wb3J0IHR5cGUgeyBWYWxpZGF0b3JDb21wb25lbnQgfSBmcm9tICcuL1ZhbGlkYXRvckNvbXBvbmVudC50cyc7XG5pbXBvcnQgdHlwZSB7IFZhbHVlQ29tcG9uZW50V2l0aENoYW5nZVRyYWNraW5nIH0gZnJvbSAnLi9WYWx1ZUNvbXBvbmVudFdpdGhDaGFuZ2VUcmFja2luZy50cyc7XG5cbmltcG9ydCB7IENzc0NsYXNzIH0gZnJvbSAnLi4vLi4vQ3NzQ2xhc3MudHMnO1xuaW1wb3J0IHsgZ2V0UGx1Z2luSWQgfSBmcm9tICcuLi9QbHVnaW4vUGx1Z2luSWQudHMnO1xuXG4vKipcbiAqIEEgY29tcG9uZW50IHRoYXQgZGlzcGxheXMgYW5kIGVkaXRzIGEgdGV4dC1iYXNlZCB2YWx1ZS5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFR5cGVkVGV4dENvbXBvbmVudDxUPiBleHRlbmRzIFZhbHVlQ29tcG9uZW50PFQ+XG4gIGltcGxlbWVudHMgVGV4dEJhc2VkQ29tcG9uZW50PFQ+LCBWYWxpZGF0b3JDb21wb25lbnQsIFZhbHVlQ29tcG9uZW50V2l0aENoYW5nZVRyYWNraW5nPFQ+IHtcbiAgLyoqXG4gICAqIFRoZSBpbnB1dCBlbGVtZW50IG9mIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaW5wdXRFbDogSFRNTElucHV0RWxlbWVudDtcbiAgLyoqXG4gICAqIFRoZSB2YWxpZGF0b3IgZWxlbWVudCBvZiB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgcHVibGljIGdldCB2YWxpZGF0b3JFbCgpOiBWYWxpZGF0b3JFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5pbnB1dEVsO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSB0ZXh0Q29tcG9uZW50OiBUZXh0Q29tcG9uZW50O1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IHR5cGVkIHRleHQgY29tcG9uZW50LlxuICAgKlxuICAgKiBAcGFyYW0gY29udGFpbmVyRWwgLSBUaGUgY29udGFpbmVyIGVsZW1lbnQgb2YgdGhlIGNvbXBvbmVudC5cbiAgICogQHBhcmFtIHR5cGUgLSBUaGUgdHlwZSBvZiB0aGUgaW5wdXQgZWxlbWVudC5cbiAgICogQHBhcmFtIGNzc0NsYXNzIC0gVGhlIENTUyBjbGFzcyBvZiB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKGNvbnRhaW5lckVsOiBIVE1MRWxlbWVudCwgdHlwZTogc3RyaW5nLCBjc3NDbGFzczogQ3NzQ2xhc3MpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMudGV4dENvbXBvbmVudCA9IG5ldyBUZXh0Q29tcG9uZW50KGNvbnRhaW5lckVsKTtcbiAgICB0aGlzLmlucHV0RWwgPSB0aGlzLnRleHRDb21wb25lbnQuaW5wdXRFbDtcbiAgICB0aGlzLmlucHV0RWwudHlwZSA9IHR5cGU7XG4gICAgY29udGFpbmVyRWwuYWRkQ2xhc3MoQ3NzQ2xhc3MuTGlicmFyeU5hbWUsIGdldFBsdWdpbklkKCksIGNzc0NsYXNzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbXB0aWVzIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBwdWJsaWMgZW1wdHkoKTogdm9pZCB7XG4gICAgdGhpcy50ZXh0Q29tcG9uZW50LnNldFZhbHVlKCcnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSB2YWx1ZSBvZiB0aGUgY29tcG9uZW50LlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgdmFsdWUgb2YgdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBnZXRWYWx1ZSgpOiBUIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZUZyb21TdHJpbmcodGhpcy50ZXh0Q29tcG9uZW50LmdldFZhbHVlKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB0aGUgY29tcG9uZW50IGlzIGVtcHR5LlxuICAgKlxuICAgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGNvbXBvbmVudCBpcyBlbXB0eSwgYGZhbHNlYCBvdGhlcndpc2UuXG4gICAqL1xuICBwdWJsaWMgaXNFbXB0eSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50ZXh0Q29tcG9uZW50LmdldFZhbHVlKCkgPT09ICcnO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBjb21wb25lbnQgaXMgY2hhbmdlZC5cbiAgICpcbiAgICogQHBhcmFtIGNhbGxiYWNrIC0gVGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBjb21wb25lbnQgaXMgY2hhbmdlZC5cbiAgICogQHJldHVybnMgVGhlIGNvbXBvbmVudC5cbiAgICovXG4gIHB1YmxpYyBvbkNoYW5nZShjYWxsYmFjazogKHZhbHVlOiBUKSA9PiBQcm9taXNhYmxlPHZvaWQ+KTogdGhpcyB7XG4gICAgdGhpcy50ZXh0Q29tcG9uZW50Lm9uQ2hhbmdlKCgpID0+IGNhbGxiYWNrKHRoaXMuZ2V0VmFsdWUoKSkpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIHRoZSBjb21wb25lbnQgaXMgY2hhbmdlZC5cbiAgICovXG4gIHB1YmxpYyBvbkNoYW5nZWQoKTogdm9pZCB7XG4gICAgdGhpcy50ZXh0Q29tcG9uZW50Lm9uQ2hhbmdlZCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGRpc2FibGVkIHN0YXRlIG9mIHRoZSBjb21wb25lbnQuXG4gICAqXG4gICAqIEBwYXJhbSBkaXNhYmxlZCAtIFdoZXRoZXIgdGhlIGNvbXBvbmVudCBpcyBkaXNhYmxlZC5cbiAgICogQHJldHVybnMgVGhlIGNvbXBvbmVudC5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBzZXREaXNhYmxlZChkaXNhYmxlZDogYm9vbGVhbik6IHRoaXMge1xuICAgIHRoaXMudGV4dENvbXBvbmVudC5zZXREaXNhYmxlZChkaXNhYmxlZCk7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGRpc2FibGVkO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHBsYWNlaG9sZGVyIG9mIHRoZSBjb21wb25lbnQuXG4gICAqXG4gICAqIEBwYXJhbSBwbGFjZWhvbGRlciAtIFRoZSBwbGFjZWhvbGRlciB0byBzZXQuXG4gICAqIEByZXR1cm5zIFRoZSBjb21wb25lbnQuXG4gICAqL1xuICBwdWJsaWMgc2V0UGxhY2Vob2xkZXIocGxhY2Vob2xkZXI6IHN0cmluZyk6IHRoaXMge1xuICAgIHRoaXMudGV4dENvbXBvbmVudC5zZXRQbGFjZWhvbGRlcihwbGFjZWhvbGRlcik7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgcGxhY2Vob2xkZXIgdmFsdWUgb2YgdGhlIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHBhcmFtIHBsYWNlaG9sZGVyVmFsdWUgLSBUaGUgcGxhY2Vob2xkZXIgdmFsdWUgdG8gc2V0LlxuICAgKiBAcmV0dXJucyBUaGUgY29tcG9uZW50LlxuICAgKi9cbiAgcHVibGljIHNldFBsYWNlaG9sZGVyVmFsdWUocGxhY2Vob2xkZXJWYWx1ZTogVCk6IHRoaXMge1xuICAgIHRoaXMuc2V0UGxhY2Vob2xkZXIodGhpcy52YWx1ZVRvU3RyaW5nKHBsYWNlaG9sZGVyVmFsdWUpKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgY29tcG9uZW50LlxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gc2V0LlxuICAgKiBAcmV0dXJucyBUaGUgY29tcG9uZW50LlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIHNldFZhbHVlKHZhbHVlOiBUKTogdGhpcyB7XG4gICAgdGhpcy50ZXh0Q29tcG9uZW50LnNldFZhbHVlKHRoaXMudmFsdWVUb1N0cmluZyh2YWx1ZSkpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGEgc3RyaW5nIHRvIGEgdmFsdWUuXG4gICAqXG4gICAqIEBwYXJhbSBzdHIgLSBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gICAqIEByZXR1cm5zIFRoZSB2YWx1ZS5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCB2YWx1ZUZyb21TdHJpbmcoc3RyOiBzdHJpbmcpOiBUO1xuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhIHZhbHVlIHRvIGEgc3RyaW5nLlxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAgICogQHJldHVybnMgVGhlIHN0cmluZy5cbiAgICovXG4gIHB1YmxpYyB2YWx1ZVRvU3RyaW5nKHZhbHVlOiBUKTogc3RyaW5nIHtcbiAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7OztBQU9BO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBT1AsU0FBUyxnQkFBZ0I7QUFDekIsU0FBUyxtQkFBbUI7QUFLckIsTUFBZSwyQkFBOEIsZUFDd0M7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUkxRTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBSWhCLElBQVcsY0FBZ0M7QUFDekMsV0FBTyxLQUFLO0FBQUEsRUFDZDtBQUFBLEVBRWlCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVNWLFlBQVksYUFBMEIsTUFBYyxVQUFvQjtBQUM3RSxVQUFNO0FBQ04sU0FBSyxnQkFBZ0IsSUFBSSxjQUFjLFdBQVc7QUFDbEQsU0FBSyxVQUFVLEtBQUssY0FBYztBQUNsQyxTQUFLLFFBQVEsT0FBTztBQUNwQixnQkFBWSxTQUFTLFNBQVMsYUFBYSxZQUFZLEdBQUcsUUFBUTtBQUFBLEVBQ3BFO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLTyxRQUFjO0FBQ25CLFNBQUssY0FBYyxTQUFTLEVBQUU7QUFBQSxFQUNoQztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9nQixXQUFjO0FBQzVCLFdBQU8sS0FBSyxnQkFBZ0IsS0FBSyxjQUFjLFNBQVMsQ0FBQztBQUFBLEVBQzNEO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT08sVUFBbUI7QUFDeEIsV0FBTyxLQUFLLGNBQWMsU0FBUyxNQUFNO0FBQUEsRUFDM0M7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVFPLFNBQVMsVUFBZ0Q7QUFDOUQsU0FBSyxjQUFjLFNBQVMsTUFBTSxTQUFTLEtBQUssU0FBUyxDQUFDLENBQUM7QUFDM0QsV0FBTztBQUFBLEVBQ1Q7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUtPLFlBQWtCO0FBQ3ZCLFNBQUssY0FBYyxVQUFVO0FBQUEsRUFDL0I7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVFnQixZQUFZLFVBQXlCO0FBQ25ELFNBQUssY0FBYyxZQUFZLFFBQVE7QUFDdkMsU0FBSyxXQUFXO0FBQ2hCLFdBQU87QUFBQSxFQUNUO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFRTyxlQUFlLGFBQTJCO0FBQy9DLFNBQUssY0FBYyxlQUFlLFdBQVc7QUFDN0MsV0FBTztBQUFBLEVBQ1Q7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVFPLG9CQUFvQixrQkFBMkI7QUFDcEQsU0FBSyxlQUFlLEtBQUssY0FBYyxnQkFBZ0IsQ0FBQztBQUN4RCxXQUFPO0FBQUEsRUFDVDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUWdCLFNBQVMsT0FBZ0I7QUFDdkMsU0FBSyxjQUFjLFNBQVMsS0FBSyxjQUFjLEtBQUssQ0FBQztBQUNyRCxXQUFPO0FBQUEsRUFDVDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBZ0JPLGNBQWMsT0FBa0I7QUFDckMsV0FBTyxPQUFPLEtBQUs7QUFBQSxFQUNyQjtBQUNGOyIsCiAgIm5hbWVzIjogW10KfQo=
|
@@ -16,6 +16,10 @@ import { PluginSettingsManagerBase } from './PluginSettingsManagerBase.mjs';
|
|
16
16
|
* @typeParam PluginSettings - The type representing the plugin settings object.
|
17
17
|
*/
|
18
18
|
export declare abstract class PluginBase<PluginSettings extends object = object> extends Plugin {
|
19
|
+
/**
|
20
|
+
* @deprecated Used only for type inference. Don't use it directly.
|
21
|
+
*/
|
22
|
+
__pluginSettingsType: PluginSettings;
|
19
23
|
/**
|
20
24
|
* Gets the AbortSignal used for aborting long-running operations.
|
21
25
|
*
|
@@ -62,17 +66,17 @@ export declare abstract class PluginBase<PluginSettings extends object = object>
|
|
62
66
|
*/
|
63
67
|
onSaveSettings(_newSettings: Partial<PluginSettings>, _oldSettings: Partial<PluginSettings>): Promise<void>;
|
64
68
|
/**
|
65
|
-
* Creates a plugin settings tab.
|
69
|
+
* Creates a plugin settings tab.
|
66
70
|
*
|
67
71
|
* @returns The settings tab or null if not applicable.
|
68
72
|
*/
|
69
|
-
protected
|
73
|
+
protected createPluginSettingsTab(): null | PluginSettingTab;
|
70
74
|
/**
|
71
75
|
* Creates the plugin settings manager. This method must be implemented by subclasses.
|
72
76
|
*
|
73
77
|
* @returns The plugin settings manager.
|
74
78
|
*/
|
75
|
-
protected
|
79
|
+
protected createSettingsManager(): null | PluginSettingsManagerBase<PluginSettings>;
|
76
80
|
/**
|
77
81
|
* Called when the layout is ready. This method can be overridden by subclasses to perform actions once
|
78
82
|
* the layout is ready.
|
@@ -35,10 +35,13 @@ class PluginBase extends Plugin {
|
|
35
35
|
return this.settingsManager.safeSettings;
|
36
36
|
}
|
37
37
|
get settingsManager() {
|
38
|
+
if (!this._settingsManager) {
|
39
|
+
throw new Error("Settings manager not defined");
|
40
|
+
}
|
38
41
|
return this._settingsManager;
|
39
42
|
}
|
40
43
|
_abortSignal;
|
41
|
-
_settingsManager;
|
44
|
+
_settingsManager = null;
|
42
45
|
notice;
|
43
46
|
/**
|
44
47
|
* Logs a message to the console.
|
@@ -97,6 +100,22 @@ class PluginBase extends Plugin {
|
|
97
100
|
async onSaveSettings(_newSettings, _oldSettings) {
|
98
101
|
await noopAsync();
|
99
102
|
}
|
103
|
+
/**
|
104
|
+
* Creates a plugin settings tab.
|
105
|
+
*
|
106
|
+
* @returns The settings tab or null if not applicable.
|
107
|
+
*/
|
108
|
+
createPluginSettingsTab() {
|
109
|
+
return null;
|
110
|
+
}
|
111
|
+
/**
|
112
|
+
* Creates the plugin settings manager. This method must be implemented by subclasses.
|
113
|
+
*
|
114
|
+
* @returns The plugin settings manager.
|
115
|
+
*/
|
116
|
+
createSettingsManager() {
|
117
|
+
return null;
|
118
|
+
}
|
100
119
|
/**
|
101
120
|
* Called when the layout is ready. This method can be overridden by subclasses to perform actions once
|
102
121
|
* the layout is ready.
|
@@ -131,4 +150,4 @@ ${message}`);
|
|
131
150
|
export {
|
132
151
|
PluginBase
|
133
152
|
};
|
134
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL1BsdWdpbi9QbHVnaW5CYXNlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvbiBQbHVnaW5CYXNlXG4gKiBCYXNlIGNsYXNzIGZvciBPYnNpZGlhbiBwbHVnaW5zIHByb3ZpZGluZyB1dGlsaXR5IG1ldGhvZHMgZm9yIHNldHRpbmdzIG1hbmFnZW1lbnQsIGVycm9yIGhhbmRsaW5nLCBhbmQgbm90aWZpY2F0aW9ucy5cbiAqXG4gKiBUaGlzIGNsYXNzIHNpbXBsaWZpZXMgdGhlIHByb2Nlc3Mgb2YgbWFuYWdpbmcgcGx1Z2luIHNldHRpbmdzLCBkaXNwbGF5aW5nIG5vdGlmaWNhdGlvbnMsIGFuZCBoYW5kbGluZyBlcnJvcnMuXG4gKiBTdWJjbGFzc2VzIHNob3VsZCBpbXBsZW1lbnQgbWV0aG9kcyB0byBjcmVhdGUgZGVmYXVsdCBzZXR0aW5ncyBhbmQgc2V0dGluZ3MgdGFicywgYW5kIGNvbXBsZXRlIHBsdWdpbi1zcGVjaWZpY1xuICogbG9hZGluZyB0YXNrcy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IFBsdWdpblNldHRpbmdUYWIgfSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7XG4gIFByb21pc2FibGUsXG4gIFJlYWRvbmx5RGVlcFxufSBmcm9tICd0eXBlLWZlc3QnO1xuXG5pbXBvcnQge1xuICBOb3RpY2UsXG4gIFBsdWdpblxufSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IGdldERlYnVnZ2VyIH0gZnJvbSAnLi4vLi4vRGVidWcudHMnO1xuaW1wb3J0IHsgcmVnaXN0ZXJBc3luY0Vycm9yRXZlbnRIYW5kbGVyIH0gZnJvbSAnLi4vLi4vRXJyb3IudHMnO1xuaW1wb3J0IHtcbiAgbm9vcCxcbiAgbm9vcEFzeW5jXG59IGZyb20gJy4uLy4uL0Z1bmN0aW9uLnRzJztcbmltcG9ydCB7IGluaXRQbHVnaW5Db250ZXh0IH0gZnJvbSAnLi9QbHVnaW5Db250ZXh0LnRzJztcbmltcG9ydCB7IFBsdWdpblNldHRpbmdzTWFuYWdlckJhc2UgfSBmcm9tICcuL1BsdWdpblNldHRpbmdzTWFuYWdlckJhc2UudHMnO1xuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIGNyZWF0aW5nIE9ic2lkaWFuIHBsdWdpbnMgd2l0aCBidWlsdC1pbiBzdXBwb3J0IGZvciBzZXR0aW5ncyBtYW5hZ2VtZW50LCBlcnJvciBoYW5kbGluZywgYW5kIG5vdGlmaWNhdGlvbnMuXG4gKlxuICogQHR5cGVQYXJhbSBQbHVnaW5TZXR0aW5ncyAtIFRoZSB0eXBlIHJlcHJlc2VudGluZyB0aGUgcGx1Z2luIHNldHRpbmdzIG9iamVjdC5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFBsdWdpbkJhc2U8UGx1Z2luU2V0dGluZ3MgZXh0ZW5kcyBvYmplY3QgPSBvYmplY3Q+IGV4dGVuZHMgUGx1Z2luIHtcbiAgLyoqXG4gICAqIEdldHMgdGhlIEFib3J0U2lnbmFsIHVzZWQgZm9yIGFib3J0aW5nIGxvbmctcnVubmluZyBvcGVyYXRpb25zLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgYWJvcnQgc2lnbmFsLlxuICAgKi9cbiAgcHVibGljIGdldCBhYm9ydFNpZ25hbCgpOiBBYm9ydFNpZ25hbCB7XG4gICAgcmV0dXJuIHRoaXMuX2Fib3J0U2lnbmFsO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHJlYWRvbmx5IHBsdWdpbiBzZXR0aW5ncy5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIHJlYWRvbmx5IHBsdWdpbiBzZXR0aW5ncy5cbiAgICovXG4gIHB1YmxpYyBnZXQgc2V0dGluZ3MoKTogUmVhZG9ubHlEZWVwPFBsdWdpblNldHRpbmdzPiB7XG4gICAgcmV0dXJuIHRoaXMuc2V0dGluZ3NNYW5hZ2VyLnNhZmVTZXR0aW5ncztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2V0dGluZ3NNYW5hZ2VyKCk6IFBsdWdpblNldHRpbmdzTWFuYWdlckJhc2U8UGx1Z2luU2V0dGluZ3M+IHtcbiAgICByZXR1cm4gdGhpcy5fc2V0dGluZ3NNYW5hZ2VyO1xuICB9XG5cbiAgcHJpdmF0ZSBfYWJvcnRTaWduYWwhOiBBYm9ydFNpZ25hbDtcblxuICBwcml2YXRlIF9zZXR0aW5nc01hbmFnZXIhOiBQbHVnaW5TZXR0aW5nc01hbmFnZXJCYXNlPFBsdWdpblNldHRpbmdzPjtcblxuICBwcml2YXRlIG5vdGljZT86IE5vdGljZTtcblxuICAvKipcbiAgICogTG9ncyBhIG1lc3NhZ2UgdG8gdGhlIGNvbnNvbGUuXG4gICAqXG4gICAqIFVzZSBpbnN0ZWFkIG9mIGBjb25zb2xlLmRlYnVnKClgLlxuICAgKlxuICAgKiBUaG9zZSBtZXNzYWdlcyBhcmUgbm90IHNob3duIGJ5IGRlZmF1bHQsIGJ1dCB0aGV5IGNhbiBiZSBzaG93biBieSBlbmFibGluZyBgeW91ci1wbHVnaW4taWRgIGRlYnVnZ2VyIG5hbWVzcGFjZS5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL21uYW91bW92L29ic2lkaWFuLWRldi11dGlscy8/dGFiPXJlYWRtZS1vdi1maWxlI2RlYnVnZ2luZ30gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBtZXNzYWdlIC0gVGhlIG1lc3NhZ2UgdG8gbG9nLlxuICAgKiBAcGFyYW0gYXJncyAtIFRoZSBhcmd1bWVudHMgdG8gbG9nLlxuICAgKi9cbiAgcHVibGljIGNvbnNvbGVEZWJ1ZyhtZXNzYWdlOiBzdHJpbmcsIC4uLmFyZ3M6IHVua25vd25bXSk6IHZvaWQge1xuICAgIC8vIFNraXAgdGhlIGBjb25zb2xlRGVidWcoKWAgY2FsbCBpdHNlbGZcbiAgICBjb25zdCBGUkFNRVNfVE9fU0tJUCA9IDE7XG4gICAgY29uc3QgX2RlYnVnZ2VyID0gZ2V0RGVidWdnZXIodGhpcy5tYW5pZmVzdC5pZCwgRlJBTUVTX1RPX1NLSVApO1xuICAgIF9kZWJ1Z2dlcihtZXNzYWdlLCAuLi5hcmdzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiB0aGUgZXh0ZXJuYWwgc2V0dGluZ3MgY2hhbmdlLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIGFzeW5jIG9uRXh0ZXJuYWxTZXR0aW5nc0NoYW5nZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLnNldHRpbmdzTWFuYWdlci5sb2FkRnJvbUZpbGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiB0aGUgcGx1Z2luIGlzIGxvYWRlZFxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIGFzeW5jIG9ubG9hZCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpbml0UGx1Z2luQ29udGV4dCh0aGlzLmFwcCwgdGhpcy5tYW5pZmVzdC5pZCk7XG5cbiAgICB0aGlzLnJlZ2lzdGVyKHJlZ2lzdGVyQXN5bmNFcnJvckV2ZW50SGFuZGxlcigoKSA9PiB7XG4gICAgICB0aGlzLnNob3dOb3RpY2UoJ0FuIHVuaGFuZGxlZCBlcnJvciBvY2N1cnJlZC4gUGxlYXNlIGNoZWNrIHRoZSBjb25zb2xlIGZvciBtb3JlIGluZm9ybWF0aW9uLicpO1xuICAgIH0pKTtcblxuICAgIHRoaXMuX3NldHRpbmdzTWFuYWdlciA9IHRoaXMuY3JlYXRlU2V0dGluZ3NNYW5hZ2VyKCk7XG5cbiAgICBhd2FpdCB0aGlzLm9uRXh0ZXJuYWxTZXR0aW5nc0NoYW5nZSgpO1xuICAgIGNvbnN0IHBsdWdpblNldHRpbmdzVGFiID0gdGhpcy5jcmVhdGVQbHVnaW5TZXR0aW5nc1RhYigpO1xuICAgIGlmIChwbHVnaW5TZXR0aW5nc1RhYikge1xuICAgICAgdGhpcy5hZGRTZXR0aW5nVGFiKHBsdWdpblNldHRpbmdzVGFiKTtcbiAgICB9XG5cbiAgICBjb25zdCBhYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgdGhpcy5fYWJvcnRTaWduYWwgPSBhYm9ydENvbnRyb2xsZXIuc2lnbmFsO1xuICAgIHRoaXMucmVnaXN0ZXIoKCkgPT4ge1xuICAgICAgYWJvcnRDb250cm9sbGVyLmFib3J0KCk7XG4gICAgfSk7XG4gICAgYXdhaXQgdGhpcy5vbmxvYWRDb21wbGV0ZSgpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5hcHAud29ya3NwYWNlLm9uTGF5b3V0UmVhZHkodGhpcy5vbkxheW91dFJlYWR5LmJpbmQodGhpcykpO1xuICAgIH0sIDApO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIHRoZSBwbHVnaW4gc2V0dGluZ3MgYXJlIHNhdmVkLlxuICAgKlxuICAgKiBAcGFyYW0gX25ld1NldHRpbmdzIC0gVGhlIG5ldyBzZXR0aW5ncy5cbiAgICogQHBhcmFtIF9vbGRTZXR0aW5ncyAtIFRoZSBvbGQgc2V0dGluZ3MuXG4gICAqIEByZXR1cm5zIEEgcHJvbWlzZSBvciB2b2lkIGluZGljYXRpbmcgdGhlIGNvbXBsZXRpb24gb2YgdGhlIHNhdmUgcHJvY2Vzcy5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBvblNhdmVTZXR0aW5ncyhfbmV3U2V0dGluZ3M6IFBhcnRpYWw8UGx1Z2luU2V0dGluZ3M+LCBfb2xkU2V0dGluZ3M6IFBhcnRpYWw8UGx1Z2luU2V0dGluZ3M+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgbm9vcEFzeW5jKCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHBsdWdpbiBzZXR0aW5ncyB0YWIuIFRoaXMgbWV0aG9kIG11c3QgYmUgaW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nlcy5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIHNldHRpbmdzIHRhYiBvciBudWxsIGlmIG5vdCBhcHBsaWNhYmxlLlxuICAgKi9cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGNyZWF0ZVBsdWdpblNldHRpbmdzVGFiKCk6IG51bGwgfCBQbHVnaW5TZXR0aW5nVGFiO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIHRoZSBwbHVnaW4gc2V0dGluZ3MgbWFuYWdlci4gVGhpcyBtZXRob2QgbXVzdCBiZSBpbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgcGx1Z2luIHNldHRpbmdzIG1hbmFnZXIuXG4gICAqL1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgY3JlYXRlU2V0dGluZ3NNYW5hZ2VyKCk6IFBsdWdpblNldHRpbmdzTWFuYWdlckJhc2U8UGx1Z2luU2V0dGluZ3M+O1xuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiB0aGUgbGF5b3V0IGlzIHJlYWR5LiBUaGlzIG1ldGhvZCBjYW4gYmUgb3ZlcnJpZGRlbiBieSBzdWJjbGFzc2VzIHRvIHBlcmZvcm0gYWN0aW9ucyBvbmNlXG4gICAqIHRoZSBsYXlvdXQgaXMgcmVhZHkuXG4gICAqXG4gICAqIEByZXR1cm5zIEEgcHJvbWlzZSBvciB2b2lkIGluZGljYXRpbmcgdGhlIGNvbXBsZXRpb24gb2YgdGhlIGxheW91dCBzZXR1cC5cbiAgICovXG4gIHByb3RlY3RlZCBvbkxheW91dFJlYWR5KCk6IFByb21pc2FibGU8dm9pZD4ge1xuICAgIG5vb3AoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiB0aGUgcGx1Z2luIGxvYWRpbmcgaXMgY29tcGxldGUuIFRoaXMgbWV0aG9kIG11c3QgYmUgaW1wbGVtZW50ZWQgYnkgc3ViY2xhc3NlcyB0byBwZXJmb3JtXG4gICAqIGFueSBhZGRpdGlvbmFsIHNldHVwIHJlcXVpcmVkIGFmdGVyIGxvYWRpbmcgaXMgY29tcGxldGUuXG4gICAqXG4gICAqIEByZXR1cm5zIEEgcHJvbWlzZSBvciB2b2lkIGluZGljYXRpbmcgdGhlIGNvbXBsZXRpb24gb2YgdGhlIGxvYWQgcHJvY2Vzcy5cbiAgICovXG4gIHByb3RlY3RlZCBvbmxvYWRDb21wbGV0ZSgpOiBQcm9taXNhYmxlPHZvaWQ+IHtcbiAgICBub29wKCk7XG4gIH1cblxuICAvKipcbiAgICogRGlzcGxheXMgYSBub3RpY2UgbWVzc2FnZSB0byB0aGUgdXNlci5cbiAgICpcbiAgICogQHBhcmFtIG1lc3NhZ2UgLSBUaGUgbWVzc2FnZSB0byBkaXNwbGF5LlxuICAgKi9cbiAgcHJvdGVjdGVkIHNob3dOb3RpY2UobWVzc2FnZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubm90aWNlKSB7XG4gICAgICB0aGlzLm5vdGljZS5oaWRlKCk7XG4gICAgfVxuXG4gICAgdGhpcy5ub3RpY2UgPSBuZXcgTm90aWNlKGAke3RoaXMubWFuaWZlc3QubmFtZX1cXG4ke21lc3NhZ2V9YCk7XG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7QUFlQTtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUVQLFNBQVMsbUJBQW1CO0FBQzVCLFNBQVMsc0NBQXNDO0FBQy9DO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1AsU0FBUyx5QkFBeUI7QUFDbEMsU0FBUyxpQ0FBaUM7QUFPbkMsTUFBZSxtQkFBMkQsT0FBTztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU10RixJQUFXLGNBQTJCO0FBQ3BDLFdBQU8sS0FBSztBQUFBLEVBQ2Q7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPQSxJQUFXLFdBQXlDO0FBQ2xELFdBQU8sS0FBSyxnQkFBZ0I7QUFBQSxFQUM5QjtBQUFBLEVBRUEsSUFBVyxrQkFBNkQ7QUFDdEUsV0FBTyxLQUFLO0FBQUEsRUFDZDtBQUFBLEVBRVE7QUFBQSxFQUVBO0FBQUEsRUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBY0QsYUFBYSxZQUFvQixNQUF1QjtBQUU3RCxVQUFNLGlCQUFpQjtBQUN2QixVQUFNLFlBQVksWUFBWSxLQUFLLFNBQVMsSUFBSSxjQUFjO0FBQzlELGNBQVUsU0FBUyxHQUFHLElBQUk7QUFBQSxFQUM1QjtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS0EsTUFBc0IsMkJBQTBDO0FBQzlELFVBQU0sS0FBSyxnQkFBZ0IsYUFBYTtBQUFBLEVBQzFDO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLQSxNQUFzQixTQUF3QjtBQUM1QyxzQkFBa0IsS0FBSyxLQUFLLEtBQUssU0FBUyxFQUFFO0FBRTVDLFNBQUssU0FBUywrQkFBK0IsTUFBTTtBQUNqRCxXQUFLLFdBQVcsNkVBQTZFO0FBQUEsSUFDL0YsQ0FBQyxDQUFDO0FBRUYsU0FBSyxtQkFBbUIsS0FBSyxzQkFBc0I7QUFFbkQsVUFBTSxLQUFLLHlCQUF5QjtBQUNwQyxVQUFNLG9CQUFvQixLQUFLLHdCQUF3QjtBQUN2RCxRQUFJLG1CQUFtQjtBQUNyQixXQUFLLGNBQWMsaUJBQWlCO0FBQUEsSUFDdEM7QUFFQSxVQUFNLGtCQUFrQixJQUFJLGdCQUFnQjtBQUM1QyxTQUFLLGVBQWUsZ0JBQWdCO0FBQ3BDLFNBQUssU0FBUyxNQUFNO0FBQ2xCLHNCQUFnQixNQUFNO0FBQUEsSUFDeEIsQ0FBQztBQUNELFVBQU0sS0FBSyxlQUFlO0FBQzFCLGVBQVcsTUFBTTtBQUNmLFdBQUssSUFBSSxVQUFVLGNBQWMsS0FBSyxjQUFjLEtBQUssSUFBSSxDQUFDO0FBQUEsSUFDaEUsR0FBRyxDQUFDO0FBQUEsRUFDTjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFTQSxNQUFhLGVBQWUsY0FBdUMsY0FBc0Q7QUFDdkgsVUFBTSxVQUFVO0FBQUEsRUFDbEI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQXNCVSxnQkFBa0M7QUFDMUMsU0FBSztBQUFBLEVBQ1A7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVFVLGlCQUFtQztBQUMzQyxTQUFLO0FBQUEsRUFDUDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9VLFdBQVcsU0FBdUI7QUFDMUMsUUFBSSxLQUFLLFFBQVE7QUFDZixXQUFLLE9BQU8sS0FBSztBQUFBLElBQ25CO0FBRUEsU0FBSyxTQUFTLElBQUksT0FBTyxHQUFHLEtBQUssU0FBUyxJQUFJO0FBQUEsRUFBSyxPQUFPLEVBQUU7QUFBQSxFQUM5RDtBQUNGOyIsCiAgIm5hbWVzIjogW10KfQo=
|
153
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL1BsdWdpbi9QbHVnaW5CYXNlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvbiBQbHVnaW5CYXNlXG4gKiBCYXNlIGNsYXNzIGZvciBPYnNpZGlhbiBwbHVnaW5zIHByb3ZpZGluZyB1dGlsaXR5IG1ldGhvZHMgZm9yIHNldHRpbmdzIG1hbmFnZW1lbnQsIGVycm9yIGhhbmRsaW5nLCBhbmQgbm90aWZpY2F0aW9ucy5cbiAqXG4gKiBUaGlzIGNsYXNzIHNpbXBsaWZpZXMgdGhlIHByb2Nlc3Mgb2YgbWFuYWdpbmcgcGx1Z2luIHNldHRpbmdzLCBkaXNwbGF5aW5nIG5vdGlmaWNhdGlvbnMsIGFuZCBoYW5kbGluZyBlcnJvcnMuXG4gKiBTdWJjbGFzc2VzIHNob3VsZCBpbXBsZW1lbnQgbWV0aG9kcyB0byBjcmVhdGUgZGVmYXVsdCBzZXR0aW5ncyBhbmQgc2V0dGluZ3MgdGFicywgYW5kIGNvbXBsZXRlIHBsdWdpbi1zcGVjaWZpY1xuICogbG9hZGluZyB0YXNrcy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IFBsdWdpblNldHRpbmdUYWIgfSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7XG4gIFByb21pc2FibGUsXG4gIFJlYWRvbmx5RGVlcFxufSBmcm9tICd0eXBlLWZlc3QnO1xuXG5pbXBvcnQge1xuICBOb3RpY2UsXG4gIFBsdWdpblxufSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IGdldERlYnVnZ2VyIH0gZnJvbSAnLi4vLi4vRGVidWcudHMnO1xuaW1wb3J0IHsgcmVnaXN0ZXJBc3luY0Vycm9yRXZlbnRIYW5kbGVyIH0gZnJvbSAnLi4vLi4vRXJyb3IudHMnO1xuaW1wb3J0IHtcbiAgbm9vcCxcbiAgbm9vcEFzeW5jXG59IGZyb20gJy4uLy4uL0Z1bmN0aW9uLnRzJztcbmltcG9ydCB7IGluaXRQbHVnaW5Db250ZXh0IH0gZnJvbSAnLi9QbHVnaW5Db250ZXh0LnRzJztcbmltcG9ydCB7IFBsdWdpblNldHRpbmdzTWFuYWdlckJhc2UgfSBmcm9tICcuL1BsdWdpblNldHRpbmdzTWFuYWdlckJhc2UudHMnO1xuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIGNyZWF0aW5nIE9ic2lkaWFuIHBsdWdpbnMgd2l0aCBidWlsdC1pbiBzdXBwb3J0IGZvciBzZXR0aW5ncyBtYW5hZ2VtZW50LCBlcnJvciBoYW5kbGluZywgYW5kIG5vdGlmaWNhdGlvbnMuXG4gKlxuICogQHR5cGVQYXJhbSBQbHVnaW5TZXR0aW5ncyAtIFRoZSB0eXBlIHJlcHJlc2VudGluZyB0aGUgcGx1Z2luIHNldHRpbmdzIG9iamVjdC5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFBsdWdpbkJhc2U8UGx1Z2luU2V0dGluZ3MgZXh0ZW5kcyBvYmplY3QgPSBvYmplY3Q+IGV4dGVuZHMgUGx1Z2luIHtcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZWQgb25seSBmb3IgdHlwZSBpbmZlcmVuY2UuIERvbid0IHVzZSBpdCBkaXJlY3RseS5cbiAgICovXG4gIGRlY2xhcmUgcHVibGljIF9fcGx1Z2luU2V0dGluZ3NUeXBlOiBQbHVnaW5TZXR0aW5ncztcblxuICAvKipcbiAgICogR2V0cyB0aGUgQWJvcnRTaWduYWwgdXNlZCBmb3IgYWJvcnRpbmcgbG9uZy1ydW5uaW5nIG9wZXJhdGlvbnMuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBhYm9ydCBzaWduYWwuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGFib3J0U2lnbmFsKCk6IEFib3J0U2lnbmFsIHtcbiAgICByZXR1cm4gdGhpcy5fYWJvcnRTaWduYWw7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgcmVhZG9ubHkgcGx1Z2luIHNldHRpbmdzLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgcmVhZG9ubHkgcGx1Z2luIHNldHRpbmdzLlxuICAgKi9cbiAgcHVibGljIGdldCBzZXR0aW5ncygpOiBSZWFkb25seURlZXA8UGx1Z2luU2V0dGluZ3M+IHtcbiAgICByZXR1cm4gdGhpcy5zZXR0aW5nc01hbmFnZXIuc2FmZVNldHRpbmdzO1xuICB9XG5cbiAgcHVibGljIGdldCBzZXR0aW5nc01hbmFnZXIoKTogUGx1Z2luU2V0dGluZ3NNYW5hZ2VyQmFzZTxQbHVnaW5TZXR0aW5ncz4ge1xuICAgIGlmICghdGhpcy5fc2V0dGluZ3NNYW5hZ2VyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NldHRpbmdzIG1hbmFnZXIgbm90IGRlZmluZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fc2V0dGluZ3NNYW5hZ2VyO1xuICB9XG5cbiAgcHJpdmF0ZSBfYWJvcnRTaWduYWwhOiBBYm9ydFNpZ25hbDtcblxuICBwcml2YXRlIF9zZXR0aW5nc01hbmFnZXI6IG51bGwgfCBQbHVnaW5TZXR0aW5nc01hbmFnZXJCYXNlPFBsdWdpblNldHRpbmdzPiA9IG51bGw7XG5cbiAgcHJpdmF0ZSBub3RpY2U/OiBOb3RpY2U7XG5cbiAgLyoqXG4gICAqIExvZ3MgYSBtZXNzYWdlIHRvIHRoZSBjb25zb2xlLlxuICAgKlxuICAgKiBVc2UgaW5zdGVhZCBvZiBgY29uc29sZS5kZWJ1ZygpYC5cbiAgICpcbiAgICogVGhvc2UgbWVzc2FnZXMgYXJlIG5vdCBzaG93biBieSBkZWZhdWx0LCBidXQgdGhleSBjYW4gYmUgc2hvd24gYnkgZW5hYmxpbmcgYHlvdXItcGx1Z2luLWlkYCBkZWJ1Z2dlciBuYW1lc3BhY2UuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9tbmFvdW1vdi9vYnNpZGlhbi1kZXYtdXRpbHMvP3RhYj1yZWFkbWUtb3YtZmlsZSNkZWJ1Z2dpbmd9IGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gbWVzc2FnZSAtIFRoZSBtZXNzYWdlIHRvIGxvZy5cbiAgICogQHBhcmFtIGFyZ3MgLSBUaGUgYXJndW1lbnRzIHRvIGxvZy5cbiAgICovXG4gIHB1YmxpYyBjb25zb2xlRGVidWcobWVzc2FnZTogc3RyaW5nLCAuLi5hcmdzOiB1bmtub3duW10pOiB2b2lkIHtcbiAgICAvLyBTa2lwIHRoZSBgY29uc29sZURlYnVnKClgIGNhbGwgaXRzZWxmXG4gICAgY29uc3QgRlJBTUVTX1RPX1NLSVAgPSAxO1xuICAgIGNvbnN0IF9kZWJ1Z2dlciA9IGdldERlYnVnZ2VyKHRoaXMubWFuaWZlc3QuaWQsIEZSQU1FU19UT19TS0lQKTtcbiAgICBfZGVidWdnZXIobWVzc2FnZSwgLi4uYXJncyk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gdGhlIGV4dGVybmFsIHNldHRpbmdzIGNoYW5nZS5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBhc3luYyBvbkV4dGVybmFsU2V0dGluZ3NDaGFuZ2UoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5zZXR0aW5nc01hbmFnZXIubG9hZEZyb21GaWxlKCk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gdGhlIHBsdWdpbiBpcyBsb2FkZWRcbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBhc3luYyBvbmxvYWQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaW5pdFBsdWdpbkNvbnRleHQodGhpcy5hcHAsIHRoaXMubWFuaWZlc3QuaWQpO1xuXG4gICAgdGhpcy5yZWdpc3RlcihyZWdpc3RlckFzeW5jRXJyb3JFdmVudEhhbmRsZXIoKCkgPT4ge1xuICAgICAgdGhpcy5zaG93Tm90aWNlKCdBbiB1bmhhbmRsZWQgZXJyb3Igb2NjdXJyZWQuIFBsZWFzZSBjaGVjayB0aGUgY29uc29sZSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4nKTtcbiAgICB9KSk7XG5cbiAgICB0aGlzLl9zZXR0aW5nc01hbmFnZXIgPSB0aGlzLmNyZWF0ZVNldHRpbmdzTWFuYWdlcigpO1xuXG4gICAgYXdhaXQgdGhpcy5vbkV4dGVybmFsU2V0dGluZ3NDaGFuZ2UoKTtcbiAgICBjb25zdCBwbHVnaW5TZXR0aW5nc1RhYiA9IHRoaXMuY3JlYXRlUGx1Z2luU2V0dGluZ3NUYWIoKTtcbiAgICBpZiAocGx1Z2luU2V0dGluZ3NUYWIpIHtcbiAgICAgIHRoaXMuYWRkU2V0dGluZ1RhYihwbHVnaW5TZXR0aW5nc1RhYik7XG4gICAgfVxuXG4gICAgY29uc3QgYWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIHRoaXMuX2Fib3J0U2lnbmFsID0gYWJvcnRDb250cm9sbGVyLnNpZ25hbDtcbiAgICB0aGlzLnJlZ2lzdGVyKCgpID0+IHtcbiAgICAgIGFib3J0Q29udHJvbGxlci5hYm9ydCgpO1xuICAgIH0pO1xuICAgIGF3YWl0IHRoaXMub25sb2FkQ29tcGxldGUoKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuYXBwLndvcmtzcGFjZS5vbkxheW91dFJlYWR5KHRoaXMub25MYXlvdXRSZWFkeS5iaW5kKHRoaXMpKTtcbiAgICB9LCAwKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiB0aGUgcGx1Z2luIHNldHRpbmdzIGFyZSBzYXZlZC5cbiAgICpcbiAgICogQHBhcmFtIF9uZXdTZXR0aW5ncyAtIFRoZSBuZXcgc2V0dGluZ3MuXG4gICAqIEBwYXJhbSBfb2xkU2V0dGluZ3MgLSBUaGUgb2xkIHNldHRpbmdzLlxuICAgKiBAcmV0dXJucyBBIHByb21pc2Ugb3Igdm9pZCBpbmRpY2F0aW5nIHRoZSBjb21wbGV0aW9uIG9mIHRoZSBzYXZlIHByb2Nlc3MuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgb25TYXZlU2V0dGluZ3MoX25ld1NldHRpbmdzOiBQYXJ0aWFsPFBsdWdpblNldHRpbmdzPiwgX29sZFNldHRpbmdzOiBQYXJ0aWFsPFBsdWdpblNldHRpbmdzPik6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IG5vb3BBc3luYygpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBwbHVnaW4gc2V0dGluZ3MgdGFiLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgc2V0dGluZ3MgdGFiIG9yIG51bGwgaWYgbm90IGFwcGxpY2FibGUuXG4gICAqL1xuICBwcm90ZWN0ZWQgY3JlYXRlUGx1Z2luU2V0dGluZ3NUYWIoKTogbnVsbCB8IFBsdWdpblNldHRpbmdUYWIge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgdGhlIHBsdWdpbiBzZXR0aW5ncyBtYW5hZ2VyLiBUaGlzIG1ldGhvZCBtdXN0IGJlIGltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBwbHVnaW4gc2V0dGluZ3MgbWFuYWdlci5cbiAgICovXG4gIHByb3RlY3RlZCBjcmVhdGVTZXR0aW5nc01hbmFnZXIoKTogbnVsbCB8IFBsdWdpblNldHRpbmdzTWFuYWdlckJhc2U8UGx1Z2luU2V0dGluZ3M+IHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiB0aGUgbGF5b3V0IGlzIHJlYWR5LiBUaGlzIG1ldGhvZCBjYW4gYmUgb3ZlcnJpZGRlbiBieSBzdWJjbGFzc2VzIHRvIHBlcmZvcm0gYWN0aW9ucyBvbmNlXG4gICAqIHRoZSBsYXlvdXQgaXMgcmVhZHkuXG4gICAqXG4gICAqIEByZXR1cm5zIEEgcHJvbWlzZSBvciB2b2lkIGluZGljYXRpbmcgdGhlIGNvbXBsZXRpb24gb2YgdGhlIGxheW91dCBzZXR1cC5cbiAgICovXG4gIHByb3RlY3RlZCBvbkxheW91dFJlYWR5KCk6IFByb21pc2FibGU8dm9pZD4ge1xuICAgIG5vb3AoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiB0aGUgcGx1Z2luIGxvYWRpbmcgaXMgY29tcGxldGUuIFRoaXMgbWV0aG9kIG11c3QgYmUgaW1wbGVtZW50ZWQgYnkgc3ViY2xhc3NlcyB0byBwZXJmb3JtXG4gICAqIGFueSBhZGRpdGlvbmFsIHNldHVwIHJlcXVpcmVkIGFmdGVyIGxvYWRpbmcgaXMgY29tcGxldGUuXG4gICAqXG4gICAqIEByZXR1cm5zIEEgcHJvbWlzZSBvciB2b2lkIGluZGljYXRpbmcgdGhlIGNvbXBsZXRpb24gb2YgdGhlIGxvYWQgcHJvY2Vzcy5cbiAgICovXG4gIHByb3RlY3RlZCBvbmxvYWRDb21wbGV0ZSgpOiBQcm9taXNhYmxlPHZvaWQ+IHtcbiAgICBub29wKCk7XG4gIH1cblxuICAvKipcbiAgICogRGlzcGxheXMgYSBub3RpY2UgbWVzc2FnZSB0byB0aGUgdXNlci5cbiAgICpcbiAgICogQHBhcmFtIG1lc3NhZ2UgLSBUaGUgbWVzc2FnZSB0byBkaXNwbGF5LlxuICAgKi9cbiAgcHJvdGVjdGVkIHNob3dOb3RpY2UobWVzc2FnZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubm90aWNlKSB7XG4gICAgICB0aGlzLm5vdGljZS5oaWRlKCk7XG4gICAgfVxuXG4gICAgdGhpcy5ub3RpY2UgPSBuZXcgTm90aWNlKGAke3RoaXMubWFuaWZlc3QubmFtZX1cXG4ke21lc3NhZ2V9YCk7XG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7QUFlQTtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUVQLFNBQVMsbUJBQW1CO0FBQzVCLFNBQVMsc0NBQXNDO0FBQy9DO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1AsU0FBUyx5QkFBeUI7QUFDbEMsU0FBUyxpQ0FBaUM7QUFPbkMsTUFBZSxtQkFBMkQsT0FBTztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVd0RixJQUFXLGNBQTJCO0FBQ3BDLFdBQU8sS0FBSztBQUFBLEVBQ2Q7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPQSxJQUFXLFdBQXlDO0FBQ2xELFdBQU8sS0FBSyxnQkFBZ0I7QUFBQSxFQUM5QjtBQUFBLEVBRUEsSUFBVyxrQkFBNkQ7QUFDdEUsUUFBSSxDQUFDLEtBQUssa0JBQWtCO0FBQzFCLFlBQU0sSUFBSSxNQUFNLDhCQUE4QjtBQUFBLElBQ2hEO0FBRUEsV0FBTyxLQUFLO0FBQUEsRUFDZDtBQUFBLEVBRVE7QUFBQSxFQUVBLG1CQUFxRTtBQUFBLEVBRXJFO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFjRCxhQUFhLFlBQW9CLE1BQXVCO0FBRTdELFVBQU0saUJBQWlCO0FBQ3ZCLFVBQU0sWUFBWSxZQUFZLEtBQUssU0FBUyxJQUFJLGNBQWM7QUFDOUQsY0FBVSxTQUFTLEdBQUcsSUFBSTtBQUFBLEVBQzVCO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLQSxNQUFzQiwyQkFBMEM7QUFDOUQsVUFBTSxLQUFLLGdCQUFnQixhQUFhO0FBQUEsRUFDMUM7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUtBLE1BQXNCLFNBQXdCO0FBQzVDLHNCQUFrQixLQUFLLEtBQUssS0FBSyxTQUFTLEVBQUU7QUFFNUMsU0FBSyxTQUFTLCtCQUErQixNQUFNO0FBQ2pELFdBQUssV0FBVyw2RUFBNkU7QUFBQSxJQUMvRixDQUFDLENBQUM7QUFFRixTQUFLLG1CQUFtQixLQUFLLHNCQUFzQjtBQUVuRCxVQUFNLEtBQUsseUJBQXlCO0FBQ3BDLFVBQU0sb0JBQW9CLEtBQUssd0JBQXdCO0FBQ3ZELFFBQUksbUJBQW1CO0FBQ3JCLFdBQUssY0FBYyxpQkFBaUI7QUFBQSxJQUN0QztBQUVBLFVBQU0sa0JBQWtCLElBQUksZ0JBQWdCO0FBQzVDLFNBQUssZUFBZSxnQkFBZ0I7QUFDcEMsU0FBSyxTQUFTLE1BQU07QUFDbEIsc0JBQWdCLE1BQU07QUFBQSxJQUN4QixDQUFDO0FBQ0QsVUFBTSxLQUFLLGVBQWU7QUFDMUIsZUFBVyxNQUFNO0FBQ2YsV0FBSyxJQUFJLFVBQVUsY0FBYyxLQUFLLGNBQWMsS0FBSyxJQUFJLENBQUM7QUFBQSxJQUNoRSxHQUFHLENBQUM7QUFBQSxFQUNOO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVNBLE1BQWEsZUFBZSxjQUF1QyxjQUFzRDtBQUN2SCxVQUFNLFVBQVU7QUFBQSxFQUNsQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9VLDBCQUFtRDtBQUMzRCxXQUFPO0FBQUEsRUFDVDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9VLHdCQUEwRTtBQUNsRixXQUFPO0FBQUEsRUFDVDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUVUsZ0JBQWtDO0FBQzFDLFNBQUs7QUFBQSxFQUNQO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFRVSxpQkFBbUM7QUFDM0MsU0FBSztBQUFBLEVBQ1A7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPVSxXQUFXLFNBQXVCO0FBQzFDLFFBQUksS0FBSyxRQUFRO0FBQ2YsV0FBSyxPQUFPLEtBQUs7QUFBQSxJQUNuQjtBQUVBLFNBQUssU0FBUyxJQUFJLE9BQU8sR0FBRyxLQUFLLFNBQVMsSUFBSTtBQUFBLEVBQUssT0FBTyxFQUFFO0FBQUEsRUFDOUQ7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K
|
@@ -44,19 +44,18 @@ export declare class PluginSettingsProperty<T> {
|
|
44
44
|
private readonly propertyName;
|
45
45
|
readonly defaultValue: T;
|
46
46
|
private readonly validator;
|
47
|
+
get currentValue(): T;
|
48
|
+
get lastSavedValue(): T;
|
49
|
+
get safeValue(): T;
|
47
50
|
get validationMessage(): string;
|
51
|
+
private _currentValue;
|
52
|
+
private _lastSavedValue;
|
48
53
|
private _validationMessage;
|
49
|
-
private lastSavedValue;
|
50
|
-
private modifiedValue;
|
51
54
|
constructor(propertyName: string, defaultValue: T, validator: Validator<T>);
|
52
|
-
|
53
|
-
getLastSavedValue(): T | undefined;
|
54
|
-
getModifiedOrDefaultValue(): T;
|
55
|
-
getModifiedValue(): T | undefined;
|
56
|
-
getSafeValue(): T;
|
55
|
+
reset(): void;
|
57
56
|
save(): boolean;
|
58
57
|
setValidationMessage(validationMessage: string): void;
|
59
|
-
setValue(value: T
|
58
|
+
setValue(value: T): void;
|
60
59
|
setValueAndValidate(value: T): Promise<void>;
|
61
60
|
private showWarning;
|
62
61
|
}
|
@@ -50,7 +50,7 @@ class EditableSettingsProxyHandler extends ProxyHandlerBase {
|
|
50
50
|
return true;
|
51
51
|
}
|
52
52
|
getPropertyValue(property) {
|
53
|
-
return property.
|
53
|
+
return property.currentValue;
|
54
54
|
}
|
55
55
|
}
|
56
56
|
class PropertiesMap extends Map {
|
@@ -67,7 +67,7 @@ class PropertiesMap extends Map {
|
|
67
67
|
}
|
68
68
|
class SafeSettingsProxyHandler extends ProxyHandlerBase {
|
69
69
|
getPropertyValue(property) {
|
70
|
-
return property.
|
70
|
+
return property.safeValue;
|
71
71
|
}
|
72
72
|
}
|
73
73
|
class PluginSettingsManagerBase {
|
@@ -103,7 +103,7 @@ class PluginSettingsManagerBase {
|
|
103
103
|
}
|
104
104
|
async loadFromFile() {
|
105
105
|
for (const property of this.properties.values()) {
|
106
|
-
property.
|
106
|
+
property.reset();
|
107
107
|
}
|
108
108
|
const data = await this.plugin.loadData();
|
109
109
|
if (data === void 0 || data === null) {
|
@@ -174,7 +174,7 @@ class PluginSettingsManagerBase {
|
|
174
174
|
getSavedSettings() {
|
175
175
|
const savedSettings = {};
|
176
176
|
for (const [propertyName, property] of this.properties.entries()) {
|
177
|
-
savedSettings[propertyName] = property.
|
177
|
+
savedSettings[propertyName] = property.lastSavedValue;
|
178
178
|
}
|
179
179
|
const proto = Object.getPrototypeOf(this.defaultSettings);
|
180
180
|
Object.setPrototypeOf(savedSettings, proto);
|
@@ -183,7 +183,7 @@ class PluginSettingsManagerBase {
|
|
183
183
|
async prepareRecordToSave() {
|
184
184
|
const settings = {};
|
185
185
|
for (const [propertyName, property] of this.properties.entries()) {
|
186
|
-
settings[propertyName] = property.
|
186
|
+
settings[propertyName] = property.currentValue;
|
187
187
|
}
|
188
188
|
await this.onSavingRecord(settings);
|
189
189
|
return this.getTransformer().transformObjectRecursively(settings);
|
@@ -194,34 +194,33 @@ class PluginSettingsProperty {
|
|
194
194
|
this.propertyName = propertyName;
|
195
195
|
this.defaultValue = defaultValue;
|
196
196
|
this.validator = validator;
|
197
|
+
this._lastSavedValue = defaultValue;
|
198
|
+
this._currentValue = defaultValue;
|
199
|
+
}
|
200
|
+
get currentValue() {
|
201
|
+
return this._currentValue;
|
202
|
+
}
|
203
|
+
get lastSavedValue() {
|
204
|
+
return this._lastSavedValue;
|
205
|
+
}
|
206
|
+
get safeValue() {
|
207
|
+
return this._validationMessage ? this.defaultValue : this._currentValue;
|
197
208
|
}
|
198
209
|
get validationMessage() {
|
199
210
|
return this._validationMessage;
|
200
211
|
}
|
212
|
+
_currentValue;
|
213
|
+
_lastSavedValue;
|
201
214
|
_validationMessage = "";
|
202
|
-
|
203
|
-
|
204
|
-
clear() {
|
205
|
-
this.modifiedValue = void 0;
|
215
|
+
reset() {
|
216
|
+
this._currentValue = this.defaultValue;
|
206
217
|
this._validationMessage = "";
|
207
218
|
}
|
208
|
-
getLastSavedValue() {
|
209
|
-
return this.lastSavedValue;
|
210
|
-
}
|
211
|
-
getModifiedOrDefaultValue() {
|
212
|
-
return this.modifiedValue ?? this.defaultValue;
|
213
|
-
}
|
214
|
-
getModifiedValue() {
|
215
|
-
return this.modifiedValue;
|
216
|
-
}
|
217
|
-
getSafeValue() {
|
218
|
-
return this._validationMessage ? this.defaultValue : this.getModifiedOrDefaultValue();
|
219
|
-
}
|
220
219
|
save() {
|
221
|
-
if (this.
|
220
|
+
if (this._lastSavedValue === this._currentValue) {
|
222
221
|
return false;
|
223
222
|
}
|
224
|
-
this.
|
223
|
+
this._lastSavedValue = this._currentValue;
|
225
224
|
return true;
|
226
225
|
}
|
227
226
|
setValidationMessage(validationMessage) {
|
@@ -229,14 +228,14 @@ class PluginSettingsProperty {
|
|
229
228
|
this.showWarning();
|
230
229
|
}
|
231
230
|
setValue(value) {
|
232
|
-
this.
|
231
|
+
this._currentValue = value;
|
233
232
|
}
|
234
233
|
async setValueAndValidate(value) {
|
235
234
|
this.setValue(value);
|
236
|
-
if (this.
|
235
|
+
if (this._currentValue === void 0) {
|
237
236
|
return;
|
238
237
|
}
|
239
|
-
this._validationMessage = await this.validator(this.
|
238
|
+
this._validationMessage = await this.validator(this._currentValue) ?? "";
|
240
239
|
this.showWarning(value);
|
241
240
|
}
|
242
241
|
showWarning(value) {
|
@@ -257,4 +256,4 @@ export {
|
|
257
256
|
PluginSettingsManagerBase,
|
258
257
|
PluginSettingsProperty
|
259
258
|
};
|
260
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL1BsdWdpbi9QbHVnaW5TZXR0aW5nc01hbmFnZXJCYXNlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHtcbiAgUHJvbWlzYWJsZSxcbiAgUmVhZG9ubHlEZWVwXG59IGZyb20gJ3R5cGUtZmVzdCc7XG5cbmltcG9ydCB7IE5vdGljZSB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBUcmFuc2Zvcm1lciB9IGZyb20gJy4uLy4uL1RyYW5zZm9ybWVycy9UcmFuc2Zvcm1lci50cyc7XG5pbXBvcnQgdHlwZSB7XG4gIE1heWJlUmV0dXJuLFxuICBTdHJpbmdLZXlzXG59IGZyb20gJy4uLy4uL1R5cGUudHMnO1xuaW1wb3J0IHR5cGUgeyBQbHVnaW5CYXNlIH0gZnJvbSAnLi9QbHVnaW5CYXNlLnRzJztcblxuaW1wb3J0IHsgbm9vcCB9IGZyb20gJy4uLy4uL0Z1bmN0aW9uLnRzJztcbmltcG9ydCB7IERhdGVUcmFuc2Zvcm1lciB9IGZyb20gJy4uLy4uL1RyYW5zZm9ybWVycy9EYXRlVHJhbnNmb3JtZXIudHMnO1xuaW1wb3J0IHsgRHVyYXRpb25UcmFuc2Zvcm1lciB9IGZyb20gJy4uLy4uL1RyYW5zZm9ybWVycy9EdXJhdGlvblRyYW5zZm9ybWVyLnRzJztcbmltcG9ydCB7IEdyb3VwVHJhbnNmb3JtZXIgfSBmcm9tICcuLi8uLi9UcmFuc2Zvcm1lcnMvR3JvdXBUcmFuc2Zvcm1lci50cyc7XG5pbXBvcnQgeyBTa2lwUHJpdmF0ZVByb3BlcnR5VHJhbnNmb3JtZXIgfSBmcm9tICcuLi8uLi9UcmFuc2Zvcm1lcnMvU2tpcFByaXZhdGVQcm9wZXJ0eVRyYW5zZm9ybWVyLnRzJztcblxuY29uc3QgZGVmYXVsdFRyYW5zZm9ybWVyID0gbmV3IEdyb3VwVHJhbnNmb3JtZXIoW1xuICBuZXcgU2tpcFByaXZhdGVQcm9wZXJ0eVRyYW5zZm9ybWVyKCksXG4gIG5ldyBEYXRlVHJhbnNmb3JtZXIoKSxcbiAgbmV3IER1cmF0aW9uVHJhbnNmb3JtZXIoKVxuXSk7XG5cbnR5cGUgVmFsaWRhdG9yPFQ+ID0gKHZhbHVlOiBUKSA9PiBQcm9taXNhYmxlPE1heWJlUmV0dXJuPHN0cmluZz4+O1xuXG5hYnN0cmFjdCBjbGFzcyBQcm94eUhhbmRsZXJCYXNlPFBsdWdpblNldHRpbmdzIGV4dGVuZHMgb2JqZWN0PiBpbXBsZW1lbnRzIFByb3h5SGFuZGxlcjxQbHVnaW5TZXR0aW5ncz4ge1xuICBwdWJsaWMgY29uc3RydWN0b3IocHJvdGVjdGVkIHJlYWRvbmx5IHByb3BlcnRpZXM6IFByb3BlcnRpZXNNYXA8UGx1Z2luU2V0dGluZ3M+KSB7fVxuXG4gIHB1YmxpYyBnZXQodGFyZ2V0OiBQbHVnaW5TZXR0aW5ncywgcHJvcDogc3RyaW5nIHwgc3ltYm9sKTogdW5rbm93biB7XG4gICAgY29uc3QgcmVjb3JkID0gdGFyZ2V0IGFzIFJlY29yZDxzdHJpbmcgfCBzeW1ib2wsIHVua25vd24+O1xuICAgIGlmICh0eXBlb2YgcHJvcCAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiByZWNvcmRbcHJvcF07XG4gICAgfVxuXG4gICAgY29uc3QgcHJvcGVydHkgPSB0aGlzLnByb3BlcnRpZXMuZ2V0KHByb3ApO1xuICAgIGlmICghcHJvcGVydHkpIHtcbiAgICAgIHJldHVybiByZWNvcmRbcHJvcF07XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZ2V0UHJvcGVydHlWYWx1ZShwcm9wZXJ0eSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0UHJvcGVydHlWYWx1ZShwcm9wZXJ0eTogUGx1Z2luU2V0dGluZ3NQcm9wZXJ0eTx1bmtub3duPik6IHVua25vd247XG59XG5cbmNsYXNzIEVkaXRhYmxlU2V0dGluZ3NQcm94eUhhbmRsZXI8UGx1Z2luU2V0dGluZ3MgZXh0ZW5kcyBvYmplY3Q+IGV4dGVuZHMgUHJveHlIYW5kbGVyQmFzZTxQbHVnaW5TZXR0aW5ncz4ge1xuICBwcml2YXRlIHZhbGlkYXRpb25Qcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7XG4gIHB1YmxpYyBzZXQodGFyZ2V0OiBQbHVnaW5TZXR0aW5ncywgcHJvcDogc3RyaW5nIHwgc3ltYm9sLCB2YWx1ZTogdW5rbm93bik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHJlY29yZCA9IHRhcmdldCBhcyBSZWNvcmQ8c3RyaW5nIHwgc3ltYm9sLCB1bmtub3duPjtcblxuICAgIGlmICh0eXBlb2YgcHJvcCAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHJlY29yZFtwcm9wXSA9IHZhbHVlO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgY29uc3QgcHJvcGVydHkgPSB0aGlzLnByb3BlcnRpZXMuZ2V0KHByb3ApO1xuICAgIGlmICghcHJvcGVydHkpIHtcbiAgICAgIHJlY29yZFtwcm9wXSA9IHZhbHVlO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcHJvcGVydHkuc2V0VmFsdWUodmFsdWUpO1xuICAgIHRoaXMudmFsaWRhdGlvblByb21pc2UgPSB0aGlzLnZhbGlkYXRpb25Qcm9taXNlLnRoZW4oKCkgPT4gcHJvcGVydHkuc2V0VmFsdWVBbmRWYWxpZGF0ZSh2YWx1ZSkpO1xuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgZ2V0UHJvcGVydHlWYWx1ZShwcm9wZXJ0eTogUGx1Z2luU2V0dGluZ3NQcm9wZXJ0eTx1bmtub3duPik6IHVua25vd24ge1xuICAgIHJldHVybiBwcm9wZXJ0eS5nZXRNb2RpZmllZE9yRGVmYXVsdFZhbHVlKCk7XG4gIH1cbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbmNsYXNzIFByb3BlcnRpZXNNYXA8UGx1Z2luU2V0dGluZ3MgZXh0ZW5kcyBvYmplY3Q+IGV4dGVuZHMgTWFwPHN0cmluZywgUGx1Z2luU2V0dGluZ3NQcm9wZXJ0eTxhbnk+PiB7XG4gIHB1YmxpYyBnZXRUeXBlZDxQcm9wZXJ0eU5hbWUgZXh0ZW5kcyBTdHJpbmdLZXlzPFBsdWdpblNldHRpbmdzPj4ocHJvcGVydHlOYW1lOiBQcm9wZXJ0eU5hbWUpOiBQbHVnaW5TZXR0aW5nc1Byb3BlcnR5PFBsdWdpblNldHRpbmdzW1Byb3BlcnR5TmFtZV0+IHtcbiAgICBjb25zdCBwcm9wZXJ0eSA9IHN1cGVyLmdldChwcm9wZXJ0eU5hbWUpO1xuICAgIGlmICghcHJvcGVydHkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgUHJvcGVydHkgJHtTdHJpbmcocHJvcGVydHlOYW1lKX0gbm90IGZvdW5kYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByb3BlcnR5IGFzIFBsdWdpblNldHRpbmdzUHJvcGVydHk8UGx1Z2luU2V0dGluZ3NbUHJvcGVydHlOYW1lXT47XG4gIH1cblxuICBwdWJsaWMgc2V0VHlwZWQ8UHJvcGVydHlOYW1lIGV4dGVuZHMgU3RyaW5nS2V5czxQbHVnaW5TZXR0aW5ncz4+KFxuICAgIHByb3BlcnR5TmFtZTogUHJvcGVydHlOYW1lLFxuICAgIHZhbHVlOiBQbHVnaW5TZXR0aW5nc1Byb3BlcnR5PFBsdWdpblNldHRpbmdzW1Byb3BlcnR5TmFtZV0+XG4gICk6IHRoaXMge1xuICAgIHJldHVybiBzdXBlci5zZXQocHJvcGVydHlOYW1lLCB2YWx1ZSk7XG4gIH1cbn1cblxuY2xhc3MgU2FmZVNldHRpbmdzUHJveHlIYW5kbGVyPFBsdWdpblNldHRpbmdzIGV4dGVuZHMgb2JqZWN0PiBleHRlbmRzIFByb3h5SGFuZGxlckJhc2U8UGx1Z2luU2V0dGluZ3M+IHtcbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGdldFByb3BlcnR5VmFsdWUocHJvcGVydHk6IFBsdWdpblNldHRpbmdzUHJvcGVydHk8dW5rbm93bj4pOiB1bmtub3duIHtcbiAgICByZXR1cm4gcHJvcGVydHkuZ2V0U2FmZVZhbHVlKCk7XG4gIH1cbn1cblxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBtYW5hZ2luZyBwbHVnaW4gc2V0dGluZ3MuXG4gKlxuICogQHR5cGVQYXJhbSBQbHVnaW5TZXR0aW5ncyAtIFRoZSB0eXBlIHJlcHJlc2VudGluZyB0aGUgcGx1Z2luIHNldHRpbmdzIG9iamVjdC5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFBsdWdpblNldHRpbmdzTWFuYWdlckJhc2U8UGx1Z2luU2V0dGluZ3MgZXh0ZW5kcyBvYmplY3Q+IHtcbiAgcHVibGljIHJlYWRvbmx5IGFwcDogQXBwO1xuICBwdWJsaWMgcmVhZG9ubHkgc2FmZVNldHRpbmdzOiBSZWFkb25seURlZXA8UGx1Z2luU2V0dGluZ3M+O1xuXG4gIHByaXZhdGUgZGVmYXVsdFNldHRpbmdzOiBQbHVnaW5TZXR0aW5ncztcbiAgcHJpdmF0ZSBwcm9wZXJ0aWVzOiBQcm9wZXJ0aWVzTWFwPFBsdWdpblNldHRpbmdzPjtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgcHJpdmF0ZSB2YWxpZGF0b3JzOiBNYXA8c3RyaW5nLCBWYWxpZGF0b3I8YW55Pj4gPSBuZXcgTWFwPHN0cmluZywgVmFsaWRhdG9yPGFueT4+KCk7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBwbHVnaW46IFBsdWdpbkJhc2U8UGx1Z2luU2V0dGluZ3M+KSB7XG4gICAgdGhpcy5hcHAgPSBwbHVnaW4uYXBwO1xuICAgIHRoaXMuZGVmYXVsdFNldHRpbmdzID0gdGhpcy5jcmVhdGVEZWZhdWx0U2V0dGluZ3MoKTtcblxuICAgIHRoaXMuYWRkVmFsaWRhdG9ycygpO1xuXG4gICAgdGhpcy5wcm9wZXJ0aWVzID0gbmV3IFByb3BlcnRpZXNNYXA8UGx1Z2luU2V0dGluZ3M+KCk7XG5cbiAgICBmb3IgKGNvbnN0IHByb3BlcnR5TmFtZSBvZiBPYmplY3Qua2V5cyh0aGlzLmRlZmF1bHRTZXR0aW5ncykgYXMgU3RyaW5nS2V5czxQbHVnaW5TZXR0aW5ncz5bXSkge1xuICAgICAgdGhpcy5wcm9wZXJ0aWVzLnNldChcbiAgICAgICAgcHJvcGVydHlOYW1lLFxuICAgICAgICBuZXcgUGx1Z2luU2V0dGluZ3NQcm9wZXJ0eShwcm9wZXJ0eU5hbWUsIHRoaXMuZGVmYXVsdFNldHRpbmdzW3Byb3BlcnR5TmFtZV0sIHRoaXMudmFsaWRhdG9ycy5nZXQocHJvcGVydHlOYW1lKSA/PyBub29wKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLnZhbGlkYXRvcnMuY2xlYXIoKTtcblxuICAgIHRoaXMuc2FmZVNldHRpbmdzID0gbmV3IFByb3h5KHRoaXMuZGVmYXVsdFNldHRpbmdzLCBuZXcgU2FmZVNldHRpbmdzUHJveHlIYW5kbGVyPFBsdWdpblNldHRpbmdzPih0aGlzLnByb3BlcnRpZXMpKSBhcyBSZWFkb25seURlZXA8UGx1Z2luU2V0dGluZ3M+O1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGVkaXRBbmRTYXZlKGVkaXRvcjogKHNldHRpbmdzOiBQbHVnaW5TZXR0aW5ncykgPT4gUHJvbWlzYWJsZTx2b2lkPik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGVkaXRhYmxlU2V0dGluZ3MgPSBuZXcgUHJveHkodGhpcy5kZWZhdWx0U2V0dGluZ3MsIG5ldyBFZGl0YWJsZVNldHRpbmdzUHJveHlIYW5kbGVyPFBsdWdpblNldHRpbmdzPih0aGlzLnByb3BlcnRpZXMpKSBhcyB7XG4gICAgICB2YWxpZGF0aW9uUHJvbWlzZTogUHJvbWlzZTx2b2lkPjtcbiAgICB9ICYgUGx1Z2luU2V0dGluZ3M7XG4gICAgYXdhaXQgZWRpdG9yKGVkaXRhYmxlU2V0dGluZ3MpO1xuICAgIGF3YWl0IGVkaXRhYmxlU2V0dGluZ3MudmFsaWRhdGlvblByb21pc2U7XG4gICAgYXdhaXQgdGhpcy5zYXZlVG9GaWxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0UHJvcGVydHk8UHJvcGVydHlOYW1lIGV4dGVuZHMgU3RyaW5nS2V5czxQbHVnaW5TZXR0aW5ncz4+KHByb3BlcnR5TmFtZTogUHJvcGVydHlOYW1lKTogUGx1Z2luU2V0dGluZ3NQcm9wZXJ0eTxQbHVnaW5TZXR0aW5nc1tQcm9wZXJ0eU5hbWVdPiB7XG4gICAgcmV0dXJuIHRoaXMucHJvcGVydGllcy5nZXRUeXBlZChwcm9wZXJ0eU5hbWUpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGxvYWRGcm9tRmlsZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBmb3IgKGNvbnN0IHByb3BlcnR5IG9mIHRoaXMucHJvcGVydGllcy52YWx1ZXMoKSkge1xuICAgICAgcHJvcGVydHkuY2xlYXIoKTtcbiAgICB9XG5cbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5wbHVnaW4ubG9hZERhdGEoKSBhcyB1bmtub3duO1xuXG4gICAgaWYgKGRhdGEgPT09IHVuZGVmaW5lZCB8fCBkYXRhID09PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBkYXRhICE9PSAnb2JqZWN0JyB8fCBBcnJheS5pc0FycmF5KGRhdGEpKSB7XG4gICAgICBjb25zdCB0eXBlID0gQXJyYXkuaXNBcnJheShkYXRhKSA/ICdBcnJheScgOiB0eXBlb2YgZGF0YTtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYEludmFsaWQgZGF0YSB0eXBlLiBFeHBlY3RlZCBPYmplY3QsIGdvdDogJHt0eXBlfWApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCByZWNvcmQgPSBkYXRhIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgIGNvbnN0IG9yaWdpbmFsSnNvbiA9IEpTT04uc3RyaW5naWZ5KHJlY29yZCk7XG4gICAgcmVjb3JkID0gdGhpcy5nZXRUcmFuc2Zvcm1lcigpLnRyYW5zZm9ybU9iamVjdFJlY3Vyc2l2ZWx5KHJlY29yZCk7XG4gICAgYXdhaXQgdGhpcy5vbkxvYWRSZWNvcmQocmVjb3JkKTtcblxuICAgIGZvciAoY29uc3QgW3Byb3BlcnR5TmFtZSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHJlY29yZCkpIHtcbiAgICAgIGNvbnN0IHByb3BlcnR5ID0gdGhpcy5wcm9wZXJ0aWVzLmdldChwcm9wZXJ0eU5hbWUpO1xuICAgICAgaWYgKCFwcm9wZXJ0eSkge1xuICAgICAgICBjb25zb2xlLndhcm4oYFVua25vd24gcHJvcGVydHk6ICR7cHJvcGVydHlOYW1lfWApO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gdHlwZW9mIHByb3BlcnR5LmRlZmF1bHRWYWx1ZSkge1xuICAgICAgICBjb25zb2xlLndhcm4oJ0ludmFsaWQgdmFsdWUgdHlwZScsIHtcbiAgICAgICAgICBwcm9wZXJ0eU5hbWUsXG4gICAgICAgICAgcHJvcGVydHlUeXBlOiB0eXBlb2YgcHJvcGVydHkuZGVmYXVsdFZhbHVlLFxuICAgICAgICAgIHZhbHVlXG4gICAgICAgIH0pO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgYXdhaXQgcHJvcGVydHkuc2V0VmFsdWVBbmRWYWxpZGF0ZSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgY29uc3QgbmV3SnNvbiA9IEpTT04uc3RyaW5naWZ5KGF3YWl0IHRoaXMucHJlcGFyZVJlY29yZFRvU2F2ZSgpKTtcblxuICAgIGlmIChuZXdKc29uICE9PSBvcmlnaW5hbEpzb24pIHtcbiAgICAgIGF3YWl0IHRoaXMuc2F2ZVRvRmlsZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTYXZlcyB0aGUgbmV3IHBsdWdpbiBzZXR0aW5ncy5cbiAgICpcbiAgICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgc2V0dGluZ3MgYXJlIHNhdmVkLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIHNhdmVUb0ZpbGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qgb2xkU2V0dGluZ3MgPSB0aGlzLmdldFNhdmVkU2V0dGluZ3MoKTtcblxuICAgIGxldCBoYXNDaGFuZ2VzID0gZmFsc2U7XG5cbiAgICBmb3IgKGNvbnN0IHByb3BlcnR5IG9mIHRoaXMucHJvcGVydGllcy52YWx1ZXMoKSkge1xuICAgICAgaGFzQ2hhbmdlcyB8fD0gcHJvcGVydHkuc2F2ZSgpO1xuICAgIH1cblxuICAgIGlmICghaGFzQ2hhbmdlcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGF3YWl0IHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucHJlcGFyZVJlY29yZFRvU2F2ZSgpKTtcbiAgICBhd2FpdCB0aGlzLnBsdWdpbi5vblNhdmVTZXR0aW5ncyh0aGlzLmdldFNhdmVkU2V0dGluZ3MoKSwgb2xkU2V0dGluZ3MpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFkZFZhbGlkYXRvcjxQcm9wZXJ0eU5hbWUgZXh0ZW5kcyBTdHJpbmdLZXlzPFBsdWdpblNldHRpbmdzPj4oXG4gICAgcHJvcGVydHlOYW1lOiBQcm9wZXJ0eU5hbWUsXG4gICAgdmFsaWRhdG9yOiBWYWxpZGF0b3I8UGx1Z2luU2V0dGluZ3NbUHJvcGVydHlOYW1lXT5cbiAgKTogdm9pZCB7XG4gICAgdGhpcy52YWxpZGF0b3JzLnNldChwcm9wZXJ0eU5hbWUsIHZhbGlkYXRvcik7XG4gIH1cblxuICBwcm90ZWN0ZWQgYWRkVmFsaWRhdG9ycygpOiB2b2lkIHtcbiAgICBub29wKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgY3JlYXRlRGVmYXVsdFNldHRpbmdzKCk6IFBsdWdpblNldHRpbmdzO1xuXG4gIHByb3RlY3RlZCBnZXRUcmFuc2Zvcm1lcigpOiBUcmFuc2Zvcm1lciB7XG4gICAgcmV0dXJuIGRlZmF1bHRUcmFuc2Zvcm1lcjtcbiAgfVxuXG4gIHByb3RlY3RlZCBvbkxvYWRSZWNvcmQoX3JlY29yZDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiBQcm9taXNhYmxlPHZvaWQ+IHtcbiAgICBub29wKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb25TYXZpbmdSZWNvcmQoX3JlY29yZDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiBQcm9taXNhYmxlPHZvaWQ+IHtcbiAgICBub29wKCk7XG4gIH1cblxuICBwcml2YXRlIGdldFNhdmVkU2V0dGluZ3MoKTogUGFydGlhbDxQbHVnaW5TZXR0aW5ncz4ge1xuICAgIGNvbnN0IHNhdmVkU2V0dGluZ3M6IFBhcnRpYWw8UGx1Z2luU2V0dGluZ3M+ID0ge307XG4gICAgZm9yIChjb25zdCBbcHJvcGVydHlOYW1lLCBwcm9wZXJ0eV0gb2YgdGhpcy5wcm9wZXJ0aWVzLmVudHJpZXMoKSkge1xuICAgICAgc2F2ZWRTZXR0aW5nc1twcm9wZXJ0eU5hbWUgYXMgU3RyaW5nS2V5czxQbHVnaW5TZXR0aW5ncz5dID0gcHJvcGVydHkuZ2V0TGFzdFNhdmVkVmFsdWUoKSBhcyBQbHVnaW5TZXR0aW5nc1tTdHJpbmdLZXlzPFBsdWdpblNldHRpbmdzPl0gfCB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGNvbnN0IHByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMuZGVmYXVsdFNldHRpbmdzKSBhcyBvYmplY3Q7XG4gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHNhdmVkU2V0dGluZ3MsIHByb3RvKTtcbiAgICByZXR1cm4gc2F2ZWRTZXR0aW5ncztcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcHJlcGFyZVJlY29yZFRvU2F2ZSgpOiBQcm9taXNlPFJlY29yZDxTdHJpbmdLZXlzPFBsdWdpblNldHRpbmdzPiwgdW5rbm93bj4+IHtcbiAgICBjb25zdCBzZXR0aW5nczogUmVjb3JkPFN0cmluZ0tleXM8UGx1Z2luU2V0dGluZ3M+LCB1bmtub3duPiA9IHt9IGFzIFJlY29yZDxTdHJpbmdLZXlzPFBsdWdpblNldHRpbmdzPiwgdW5rbm93bj47XG4gICAgZm9yIChjb25zdCBbcHJvcGVydHlOYW1lLCBwcm9wZXJ0eV0gb2YgdGhpcy5wcm9wZXJ0aWVzLmVudHJpZXMoKSkge1xuICAgICAgc2V0dGluZ3NbcHJvcGVydHlOYW1lIGFzIFN0cmluZ0tleXM8UGx1Z2luU2V0dGluZ3M+XSA9IHByb3BlcnR5LmdldE1vZGlmaWVkVmFsdWUoKSBhcyB1bmtub3duO1xuICAgIH1cblxuICAgIGF3YWl0IHRoaXMub25TYXZpbmdSZWNvcmQoc2V0dGluZ3MpO1xuXG4gICAgcmV0dXJuIHRoaXMuZ2V0VHJhbnNmb3JtZXIoKS50cmFuc2Zvcm1PYmplY3RSZWN1cnNpdmVseShzZXR0aW5ncyk7XG4gIH1cbn1cblxuLyoqXG4gKiBBIHByb3BlcnR5IG9mIGEgcGx1Z2luIHNldHRpbmdzLlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIHRoZSBwcm9wZXJ0eS5cbiAqL1xuZXhwb3J0IGNsYXNzIFBsdWdpblNldHRpbmdzUHJvcGVydHk8VD4ge1xuICBwdWJsaWMgZ2V0IHZhbGlkYXRpb25NZXNzYWdlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbGlkYXRpb25NZXNzYWdlO1xuICB9XG5cbiAgcHJpdmF0ZSBfdmFsaWRhdGlvbk1lc3NhZ2UgPSAnJztcbiAgcHJpdmF0ZSBsYXN0U2F2ZWRWYWx1ZTogVCB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBtb2RpZmllZFZhbHVlOiBUIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHByb3BlcnR5TmFtZTogc3RyaW5nLCBwdWJsaWMgcmVhZG9ubHkgZGVmYXVsdFZhbHVlOiBULCBwcml2YXRlIHJlYWRvbmx5IHZhbGlkYXRvcjogVmFsaWRhdG9yPFQ+KSB7fVxuXG4gIHB1YmxpYyBjbGVhcigpOiB2b2lkIHtcbiAgICB0aGlzLm1vZGlmaWVkVmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5fdmFsaWRhdGlvbk1lc3NhZ2UgPSAnJztcbiAgfVxuXG4gIHB1YmxpYyBnZXRMYXN0U2F2ZWRWYWx1ZSgpOiBUIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5sYXN0U2F2ZWRWYWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRNb2RpZmllZE9yRGVmYXVsdFZhbHVlKCk6IFQge1xuICAgIHJldHVybiB0aGlzLm1vZGlmaWVkVmFsdWUgPz8gdGhpcy5kZWZhdWx0VmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0TW9kaWZpZWRWYWx1ZSgpOiBUIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5tb2RpZmllZFZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldFNhZmVWYWx1ZSgpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsaWRhdGlvbk1lc3NhZ2UgPyB0aGlzLmRlZmF1bHRWYWx1ZSA6IHRoaXMuZ2V0TW9kaWZpZWRPckRlZmF1bHRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIHNhdmUoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMubGFzdFNhdmVkVmFsdWUgPT09IHRoaXMubW9kaWZpZWRWYWx1ZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHRoaXMubGFzdFNhdmVkVmFsdWUgPSB0aGlzLm1vZGlmaWVkVmFsdWU7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBwdWJsaWMgc2V0VmFsaWRhdGlvbk1lc3NhZ2UodmFsaWRhdGlvbk1lc3NhZ2U6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuX3ZhbGlkYXRpb25NZXNzYWdlID0gdmFsaWRhdGlvbk1lc3NhZ2U7XG4gICAgdGhpcy5zaG93V2FybmluZygpO1xuICB9XG5cbiAgcHVibGljIHNldFZhbHVlKHZhbHVlOiBUIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgdGhpcy5tb2RpZmllZFZhbHVlID0gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc2V0VmFsdWVBbmRWYWxpZGF0ZSh2YWx1ZTogVCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuc2V0VmFsdWUodmFsdWUpO1xuICAgIGlmICh0aGlzLm1vZGlmaWVkVmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3ZhbGlkYXRpb25NZXNzYWdlID0gKGF3YWl0IHRoaXMudmFsaWRhdG9yKHRoaXMubW9kaWZpZWRWYWx1ZSkgYXMgc3RyaW5nIHwgdW5kZWZpbmVkKSA/PyAnJztcbiAgICB0aGlzLnNob3dXYXJuaW5nKHZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgc2hvd1dhcm5pbmcodmFsdWU/OiBUKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl92YWxpZGF0aW9uTWVzc2FnZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHdhcm5pbmdNZXNzYWdlID0gYENvdWxkIG5vdCBzZXQgcGx1Z2luIHNldHRpbmc6ICR7dGhpcy5wcm9wZXJ0eU5hbWV9LiBVc2luZyBkZWZhdWx0IHZhbHVlIGluc3RlYWQuYDtcbiAgICBuZXcgTm90aWNlKHdhcm5pbmdNZXNzYWdlKTtcbiAgICBjb25zb2xlLndhcm4od2FybmluZ01lc3NhZ2UsIHtcbiAgICAgIGRlZmF1bHRWYWx1ZTogdGhpcy5kZWZhdWx0VmFsdWUsXG4gICAgICBwcm9wZXJ0eU5hbWU6IHRoaXMucHJvcGVydHlOYW1lLFxuICAgICAgdmFsaWRhdGlvbk1lc3NhZ2U6IHRoaXMuX3ZhbGlkYXRpb25NZXNzYWdlLFxuICAgICAgdmFsdWVcbiAgICB9KTtcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7OztBQU1BLFNBQVMsY0FBYztBQVN2QixTQUFTLFlBQVk7QUFDckIsU0FBUyx1QkFBdUI7QUFDaEMsU0FBUywyQkFBMkI7QUFDcEMsU0FBUyx3QkFBd0I7QUFDakMsU0FBUyxzQ0FBc0M7QUFFL0MsTUFBTSxxQkFBcUIsSUFBSSxpQkFBaUI7QUFBQSxFQUM5QyxJQUFJLCtCQUErQjtBQUFBLEVBQ25DLElBQUksZ0JBQWdCO0FBQUEsRUFDcEIsSUFBSSxvQkFBb0I7QUFDMUIsQ0FBQztBQUlELE1BQWUsaUJBQXdGO0FBQUEsRUFDOUYsWUFBK0IsWUFBMkM7QUFBM0M7QUFBQSxFQUE0QztBQUFBLEVBRTNFLElBQUksUUFBd0IsTUFBZ0M7QUFDakUsVUFBTSxTQUFTO0FBQ2YsUUFBSSxPQUFPLFNBQVMsVUFBVTtBQUM1QixhQUFPLE9BQU8sSUFBSTtBQUFBLElBQ3BCO0FBRUEsVUFBTSxXQUFXLEtBQUssV0FBVyxJQUFJLElBQUk7QUFDekMsUUFBSSxDQUFDLFVBQVU7QUFDYixhQUFPLE9BQU8sSUFBSTtBQUFBLElBQ3BCO0FBRUEsV0FBTyxLQUFLLGlCQUFpQixRQUFRO0FBQUEsRUFDdkM7QUFHRjtBQUVBLE1BQU0scUNBQW9FLGlCQUFpQztBQUFBLEVBQ2pHLG9CQUFvQixRQUFRLFFBQVE7QUFBQSxFQUNyQyxJQUFJLFFBQXdCLE1BQXVCLE9BQXlCO0FBQ2pGLFVBQU0sU0FBUztBQUVmLFFBQUksT0FBTyxTQUFTLFVBQVU7QUFDNUIsYUFBTyxJQUFJLElBQUk7QUFDZixhQUFPO0FBQUEsSUFDVDtBQUVBLFVBQU0sV0FBVyxLQUFLLFdBQVcsSUFBSSxJQUFJO0FBQ3pDLFFBQUksQ0FBQyxVQUFVO0FBQ2IsYUFBTyxJQUFJLElBQUk7QUFDZixhQUFPO0FBQUEsSUFDVDtBQUVBLGFBQVMsU0FBUyxLQUFLO0FBQ3ZCLFNBQUssb0JBQW9CLEtBQUssa0JBQWtCLEtBQUssTUFBTSxTQUFTLG9CQUFvQixLQUFLLENBQUM7QUFFOUYsV0FBTztBQUFBLEVBQ1Q7QUFBQSxFQUVtQixpQkFBaUIsVUFBb0Q7QUFDdEYsV0FBTyxTQUFTLDBCQUEwQjtBQUFBLEVBQzVDO0FBQ0Y7QUFHQSxNQUFNLHNCQUFxRCxJQUF5QztBQUFBLEVBQzNGLFNBQTBELGNBQWtGO0FBQ2pKLFVBQU0sV0FBVyxNQUFNLElBQUksWUFBWTtBQUN2QyxRQUFJLENBQUMsVUFBVTtBQUNiLFlBQU0sSUFBSSxNQUFNLFlBQVksT0FBTyxZQUFZLENBQUMsWUFBWTtBQUFBLElBQzlEO0FBRUEsV0FBTztBQUFBLEVBQ1Q7QUFBQSxFQUVPLFNBQ0wsY0FDQSxPQUNNO0FBQ04sV0FBTyxNQUFNLElBQUksY0FBYyxLQUFLO0FBQUEsRUFDdEM7QUFDRjtBQUVBLE1BQU0saUNBQWdFLGlCQUFpQztBQUFBLEVBQ2xGLGlCQUFpQixVQUFvRDtBQUN0RixXQUFPLFNBQVMsYUFBYTtBQUFBLEVBQy9CO0FBQ0Y7QUFPTyxNQUFlLDBCQUF5RDtBQUFBLEVBU3RFLFlBQTRCLFFBQW9DO0FBQXBDO0FBQ2pDLFNBQUssTUFBTSxPQUFPO0FBQ2xCLFNBQUssa0JBQWtCLEtBQUssc0JBQXNCO0FBRWxELFNBQUssY0FBYztBQUVuQixTQUFLLGFBQWEsSUFBSSxjQUE4QjtBQUVwRCxlQUFXLGdCQUFnQixPQUFPLEtBQUssS0FBSyxlQUFlLEdBQW1DO0FBQzVGLFdBQUssV0FBVztBQUFBLFFBQ2Q7QUFBQSxRQUNBLElBQUksdUJBQXVCLGNBQWMsS0FBSyxnQkFBZ0IsWUFBWSxHQUFHLEtBQUssV0FBVyxJQUFJLFlBQVksS0FBSyxJQUFJO0FBQUEsTUFDeEg7QUFBQSxJQUNGO0FBRUEsU0FBSyxXQUFXLE1BQU07QUFFdEIsU0FBSyxlQUFlLElBQUksTUFBTSxLQUFLLGlCQUFpQixJQUFJLHlCQUF5QyxLQUFLLFVBQVUsQ0FBQztBQUFBLEVBQ25IO0FBQUEsRUExQmdCO0FBQUEsRUFDQTtBQUFBLEVBRVI7QUFBQSxFQUNBO0FBQUE7QUFBQSxFQUVBLGFBQTBDLG9CQUFJLElBQTRCO0FBQUEsRUFzQmxGLE1BQWEsWUFBWSxRQUF1RTtBQUM5RixVQUFNLG1CQUFtQixJQUFJLE1BQU0sS0FBSyxpQkFBaUIsSUFBSSw2QkFBNkMsS0FBSyxVQUFVLENBQUM7QUFHMUgsVUFBTSxPQUFPLGdCQUFnQjtBQUM3QixVQUFNLGlCQUFpQjtBQUN2QixVQUFNLEtBQUssV0FBVztBQUFBLEVBQ3hCO0FBQUEsRUFFTyxZQUE2RCxjQUFrRjtBQUNwSixXQUFPLEtBQUssV0FBVyxTQUFTLFlBQVk7QUFBQSxFQUM5QztBQUFBLEVBRUEsTUFBYSxlQUE4QjtBQUN6QyxlQUFXLFlBQVksS0FBSyxXQUFXLE9BQU8sR0FBRztBQUMvQyxlQUFTLE1BQU07QUFBQSxJQUNqQjtBQUVBLFVBQU0sT0FBTyxNQUFNLEtBQUssT0FBTyxTQUFTO0FBRXhDLFFBQUksU0FBUyxVQUFhLFNBQVMsTUFBTTtBQUN2QztBQUFBLElBQ0Y7QUFFQSxRQUFJLE9BQU8sU0FBUyxZQUFZLE1BQU0sUUFBUSxJQUFJLEdBQUc7QUFDbkQsWUFBTSxPQUFPLE1BQU0sUUFBUSxJQUFJLElBQUksVUFBVSxPQUFPO0FBQ3BELGNBQVEsTUFBTSw0Q0FBNEMsSUFBSSxFQUFFO0FBQ2hFO0FBQUEsSUFDRjtBQUVBLFFBQUksU0FBUztBQUNiLFVBQU0sZUFBZSxLQUFLLFVBQVUsTUFBTTtBQUMxQyxhQUFTLEtBQUssZUFBZSxFQUFFLDJCQUEyQixNQUFNO0FBQ2hFLFVBQU0sS0FBSyxhQUFhLE1BQU07QUFFOUIsZUFBVyxDQUFDLGNBQWMsS0FBSyxLQUFLLE9BQU8sUUFBUSxNQUFNLEdBQUc7QUFDMUQsWUFBTSxXQUFXLEtBQUssV0FBVyxJQUFJLFlBQVk7QUFDakQsVUFBSSxDQUFDLFVBQVU7QUFDYixnQkFBUSxLQUFLLHFCQUFxQixZQUFZLEVBQUU7QUFDaEQ7QUFBQSxNQUNGO0FBRUEsVUFBSSxPQUFPLFVBQVUsT0FBTyxTQUFTLGNBQWM7QUFDakQsZ0JBQVEsS0FBSyxzQkFBc0I7QUFBQSxVQUNqQztBQUFBLFVBQ0EsY0FBYyxPQUFPLFNBQVM7QUFBQSxVQUM5QjtBQUFBLFFBQ0YsQ0FBQztBQUNEO0FBQUEsTUFDRjtBQUVBLFlBQU0sU0FBUyxvQkFBb0IsS0FBSztBQUFBLElBQzFDO0FBRUEsVUFBTSxVQUFVLEtBQUssVUFBVSxNQUFNLEtBQUssb0JBQW9CLENBQUM7QUFFL0QsUUFBSSxZQUFZLGNBQWM7QUFDNUIsWUFBTSxLQUFLLFdBQVc7QUFBQSxJQUN4QjtBQUFBLEVBQ0Y7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPQSxNQUFhLGFBQTRCO0FBQ3ZDLFVBQU0sY0FBYyxLQUFLLGlCQUFpQjtBQUUxQyxRQUFJLGFBQWE7QUFFakIsZUFBVyxZQUFZLEtBQUssV0FBVyxPQUFPLEdBQUc7QUFDL0MscUJBQWUsU0FBUyxLQUFLO0FBQUEsSUFDL0I7QUFFQSxRQUFJLENBQUMsWUFBWTtBQUNmO0FBQUEsSUFDRjtBQUVBLFVBQU0sS0FBSyxPQUFPLFNBQVMsS0FBSyxvQkFBb0IsQ0FBQztBQUNyRCxVQUFNLEtBQUssT0FBTyxlQUFlLEtBQUssaUJBQWlCLEdBQUcsV0FBVztBQUFBLEVBQ3ZFO0FBQUEsRUFFVSxhQUNSLGNBQ0EsV0FDTTtBQUNOLFNBQUssV0FBVyxJQUFJLGNBQWMsU0FBUztBQUFBLEVBQzdDO0FBQUEsRUFFVSxnQkFBc0I7QUFDOUIsU0FBSztBQUFBLEVBQ1A7QUFBQSxFQUlVLGlCQUE4QjtBQUN0QyxXQUFPO0FBQUEsRUFDVDtBQUFBLEVBRVUsYUFBYSxTQUFvRDtBQUN6RSxTQUFLO0FBQUEsRUFDUDtBQUFBLEVBRVUsZUFBZSxTQUFvRDtBQUMzRSxTQUFLO0FBQUEsRUFDUDtBQUFBLEVBRVEsbUJBQTRDO0FBQ2xELFVBQU0sZ0JBQXlDLENBQUM7QUFDaEQsZUFBVyxDQUFDLGNBQWMsUUFBUSxLQUFLLEtBQUssV0FBVyxRQUFRLEdBQUc7QUFDaEUsb0JBQWMsWUFBMEMsSUFBSSxTQUFTLGtCQUFrQjtBQUFBLElBQ3pGO0FBQ0EsVUFBTSxRQUFRLE9BQU8sZUFBZSxLQUFLLGVBQWU7QUFDeEQsV0FBTyxlQUFlLGVBQWUsS0FBSztBQUMxQyxXQUFPO0FBQUEsRUFDVDtBQUFBLEVBRUEsTUFBYyxzQkFBNEU7QUFDeEYsVUFBTSxXQUF3RCxDQUFDO0FBQy9ELGVBQVcsQ0FBQyxjQUFjLFFBQVEsS0FBSyxLQUFLLFdBQVcsUUFBUSxHQUFHO0FBQ2hFLGVBQVMsWUFBMEMsSUFBSSxTQUFTLGlCQUFpQjtBQUFBLElBQ25GO0FBRUEsVUFBTSxLQUFLLGVBQWUsUUFBUTtBQUVsQyxXQUFPLEtBQUssZUFBZSxFQUFFLDJCQUEyQixRQUFRO0FBQUEsRUFDbEU7QUFDRjtBQU9PLE1BQU0sdUJBQTBCO0FBQUEsRUFTOUIsWUFBNkIsY0FBc0MsY0FBa0MsV0FBeUI7QUFBakc7QUFBc0M7QUFBa0M7QUFBQSxFQUEwQjtBQUFBLEVBUnRJLElBQVcsb0JBQTRCO0FBQ3JDLFdBQU8sS0FBSztBQUFBLEVBQ2Q7QUFBQSxFQUVRLHFCQUFxQjtBQUFBLEVBQ3JCO0FBQUEsRUFDQTtBQUFBLEVBSUQsUUFBYztBQUNuQixTQUFLLGdCQUFnQjtBQUNyQixTQUFLLHFCQUFxQjtBQUFBLEVBQzVCO0FBQUEsRUFFTyxvQkFBbUM7QUFDeEMsV0FBTyxLQUFLO0FBQUEsRUFDZDtBQUFBLEVBRU8sNEJBQStCO0FBQ3BDLFdBQU8sS0FBSyxpQkFBaUIsS0FBSztBQUFBLEVBQ3BDO0FBQUEsRUFFTyxtQkFBa0M7QUFDdkMsV0FBTyxLQUFLO0FBQUEsRUFDZDtBQUFBLEVBRU8sZUFBa0I7QUFDdkIsV0FBTyxLQUFLLHFCQUFxQixLQUFLLGVBQWUsS0FBSywwQkFBMEI7QUFBQSxFQUN0RjtBQUFBLEVBRU8sT0FBZ0I7QUFDckIsUUFBSSxLQUFLLG1CQUFtQixLQUFLLGVBQWU7QUFDOUMsYUFBTztBQUFBLElBQ1Q7QUFFQSxTQUFLLGlCQUFpQixLQUFLO0FBQzNCLFdBQU87QUFBQSxFQUNUO0FBQUEsRUFFTyxxQkFBcUIsbUJBQWlDO0FBQzNELFNBQUsscUJBQXFCO0FBQzFCLFNBQUssWUFBWTtBQUFBLEVBQ25CO0FBQUEsRUFFTyxTQUFTLE9BQTRCO0FBQzFDLFNBQUssZ0JBQWdCO0FBQUEsRUFDdkI7QUFBQSxFQUVBLE1BQWEsb0JBQW9CLE9BQXlCO0FBQ3hELFNBQUssU0FBUyxLQUFLO0FBQ25CLFFBQUksS0FBSyxrQkFBa0IsUUFBVztBQUNwQztBQUFBLElBQ0Y7QUFFQSxTQUFLLHFCQUFzQixNQUFNLEtBQUssVUFBVSxLQUFLLGFBQWEsS0FBNEI7QUFDOUYsU0FBSyxZQUFZLEtBQUs7QUFBQSxFQUN4QjtBQUFBLEVBRVEsWUFBWSxPQUFpQjtBQUNuQyxRQUFJLENBQUMsS0FBSyxvQkFBb0I7QUFDNUI7QUFBQSxJQUNGO0FBRUEsVUFBTSxpQkFBaUIsaUNBQWlDLEtBQUssWUFBWTtBQUN6RSxRQUFJLE9BQU8sY0FBYztBQUN6QixZQUFRLEtBQUssZ0JBQWdCO0FBQUEsTUFDM0IsY0FBYyxLQUFLO0FBQUEsTUFDbkIsY0FBYyxLQUFLO0FBQUEsTUFDbkIsbUJBQW1CLEtBQUs7QUFBQSxNQUN4QjtBQUFBLElBQ0YsQ0FBQztBQUFBLEVBQ0g7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K
|
259
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL1BsdWdpbi9QbHVnaW5TZXR0aW5nc01hbmFnZXJCYXNlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHtcbiAgUHJvbWlzYWJsZSxcbiAgUmVhZG9ubHlEZWVwXG59IGZyb20gJ3R5cGUtZmVzdCc7XG5cbmltcG9ydCB7IE5vdGljZSB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBUcmFuc2Zvcm1lciB9IGZyb20gJy4uLy4uL1RyYW5zZm9ybWVycy9UcmFuc2Zvcm1lci50cyc7XG5pbXBvcnQgdHlwZSB7XG4gIE1heWJlUmV0dXJuLFxuICBTdHJpbmdLZXlzXG59IGZyb20gJy4uLy4uL1R5cGUudHMnO1xuaW1wb3J0IHR5cGUgeyBQbHVnaW5CYXNlIH0gZnJvbSAnLi9QbHVnaW5CYXNlLnRzJztcblxuaW1wb3J0IHsgbm9vcCB9IGZyb20gJy4uLy4uL0Z1bmN0aW9uLnRzJztcbmltcG9ydCB7IERhdGVUcmFuc2Zvcm1lciB9IGZyb20gJy4uLy4uL1RyYW5zZm9ybWVycy9EYXRlVHJhbnNmb3JtZXIudHMnO1xuaW1wb3J0IHsgRHVyYXRpb25UcmFuc2Zvcm1lciB9IGZyb20gJy4uLy4uL1RyYW5zZm9ybWVycy9EdXJhdGlvblRyYW5zZm9ybWVyLnRzJztcbmltcG9ydCB7IEdyb3VwVHJhbnNmb3JtZXIgfSBmcm9tICcuLi8uLi9UcmFuc2Zvcm1lcnMvR3JvdXBUcmFuc2Zvcm1lci50cyc7XG5pbXBvcnQgeyBTa2lwUHJpdmF0ZVByb3BlcnR5VHJhbnNmb3JtZXIgfSBmcm9tICcuLi8uLi9UcmFuc2Zvcm1lcnMvU2tpcFByaXZhdGVQcm9wZXJ0eVRyYW5zZm9ybWVyLnRzJztcblxuY29uc3QgZGVmYXVsdFRyYW5zZm9ybWVyID0gbmV3IEdyb3VwVHJhbnNmb3JtZXIoW1xuICBuZXcgU2tpcFByaXZhdGVQcm9wZXJ0eVRyYW5zZm9ybWVyKCksXG4gIG5ldyBEYXRlVHJhbnNmb3JtZXIoKSxcbiAgbmV3IER1cmF0aW9uVHJhbnNmb3JtZXIoKVxuXSk7XG5cbnR5cGUgVmFsaWRhdG9yPFQ+ID0gKHZhbHVlOiBUKSA9PiBQcm9taXNhYmxlPE1heWJlUmV0dXJuPHN0cmluZz4+O1xuXG5hYnN0cmFjdCBjbGFzcyBQcm94eUhhbmRsZXJCYXNlPFBsdWdpblNldHRpbmdzIGV4dGVuZHMgb2JqZWN0PiBpbXBsZW1lbnRzIFByb3h5SGFuZGxlcjxQbHVnaW5TZXR0aW5ncz4ge1xuICBwdWJsaWMgY29uc3RydWN0b3IocHJvdGVjdGVkIHJlYWRvbmx5IHByb3BlcnRpZXM6IFByb3BlcnRpZXNNYXA8UGx1Z2luU2V0dGluZ3M+KSB7fVxuXG4gIHB1YmxpYyBnZXQodGFyZ2V0OiBQbHVnaW5TZXR0aW5ncywgcHJvcDogc3RyaW5nIHwgc3ltYm9sKTogdW5rbm93biB7XG4gICAgY29uc3QgcmVjb3JkID0gdGFyZ2V0IGFzIFJlY29yZDxzdHJpbmcgfCBzeW1ib2wsIHVua25vd24+O1xuICAgIGlmICh0eXBlb2YgcHJvcCAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiByZWNvcmRbcHJvcF07XG4gICAgfVxuXG4gICAgY29uc3QgcHJvcGVydHkgPSB0aGlzLnByb3BlcnRpZXMuZ2V0KHByb3ApO1xuICAgIGlmICghcHJvcGVydHkpIHtcbiAgICAgIHJldHVybiByZWNvcmRbcHJvcF07XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZ2V0UHJvcGVydHlWYWx1ZShwcm9wZXJ0eSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0UHJvcGVydHlWYWx1ZShwcm9wZXJ0eTogUGx1Z2luU2V0dGluZ3NQcm9wZXJ0eTx1bmtub3duPik6IHVua25vd247XG59XG5cbmNsYXNzIEVkaXRhYmxlU2V0dGluZ3NQcm94eUhhbmRsZXI8UGx1Z2luU2V0dGluZ3MgZXh0ZW5kcyBvYmplY3Q+IGV4dGVuZHMgUHJveHlIYW5kbGVyQmFzZTxQbHVnaW5TZXR0aW5ncz4ge1xuICBwcml2YXRlIHZhbGlkYXRpb25Qcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7XG4gIHB1YmxpYyBzZXQodGFyZ2V0OiBQbHVnaW5TZXR0aW5ncywgcHJvcDogc3RyaW5nIHwgc3ltYm9sLCB2YWx1ZTogdW5rbm93bik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHJlY29yZCA9IHRhcmdldCBhcyBSZWNvcmQ8c3RyaW5nIHwgc3ltYm9sLCB1bmtub3duPjtcblxuICAgIGlmICh0eXBlb2YgcHJvcCAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHJlY29yZFtwcm9wXSA9IHZhbHVlO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgY29uc3QgcHJvcGVydHkgPSB0aGlzLnByb3BlcnRpZXMuZ2V0KHByb3ApO1xuICAgIGlmICghcHJvcGVydHkpIHtcbiAgICAgIHJlY29yZFtwcm9wXSA9IHZhbHVlO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcHJvcGVydHkuc2V0VmFsdWUodmFsdWUpO1xuICAgIHRoaXMudmFsaWRhdGlvblByb21pc2UgPSB0aGlzLnZhbGlkYXRpb25Qcm9taXNlLnRoZW4oKCkgPT4gcHJvcGVydHkuc2V0VmFsdWVBbmRWYWxpZGF0ZSh2YWx1ZSkpO1xuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgZ2V0UHJvcGVydHlWYWx1ZShwcm9wZXJ0eTogUGx1Z2luU2V0dGluZ3NQcm9wZXJ0eTx1bmtub3duPik6IHVua25vd24ge1xuICAgIHJldHVybiBwcm9wZXJ0eS5jdXJyZW50VmFsdWU7XG4gIH1cbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbmNsYXNzIFByb3BlcnRpZXNNYXA8UGx1Z2luU2V0dGluZ3MgZXh0ZW5kcyBvYmplY3Q+IGV4dGVuZHMgTWFwPHN0cmluZywgUGx1Z2luU2V0dGluZ3NQcm9wZXJ0eTxhbnk+PiB7XG4gIHB1YmxpYyBnZXRUeXBlZDxQcm9wZXJ0eU5hbWUgZXh0ZW5kcyBTdHJpbmdLZXlzPFBsdWdpblNldHRpbmdzPj4ocHJvcGVydHlOYW1lOiBQcm9wZXJ0eU5hbWUpOiBQbHVnaW5TZXR0aW5nc1Byb3BlcnR5PFBsdWdpblNldHRpbmdzW1Byb3BlcnR5TmFtZV0+IHtcbiAgICBjb25zdCBwcm9wZXJ0eSA9IHN1cGVyLmdldChwcm9wZXJ0eU5hbWUpO1xuICAgIGlmICghcHJvcGVydHkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgUHJvcGVydHkgJHtTdHJpbmcocHJvcGVydHlOYW1lKX0gbm90IGZvdW5kYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByb3BlcnR5IGFzIFBsdWdpblNldHRpbmdzUHJvcGVydHk8UGx1Z2luU2V0dGluZ3NbUHJvcGVydHlOYW1lXT47XG4gIH1cblxuICBwdWJsaWMgc2V0VHlwZWQ8UHJvcGVydHlOYW1lIGV4dGVuZHMgU3RyaW5nS2V5czxQbHVnaW5TZXR0aW5ncz4+KFxuICAgIHByb3BlcnR5TmFtZTogUHJvcGVydHlOYW1lLFxuICAgIHZhbHVlOiBQbHVnaW5TZXR0aW5nc1Byb3BlcnR5PFBsdWdpblNldHRpbmdzW1Byb3BlcnR5TmFtZV0+XG4gICk6IHRoaXMge1xuICAgIHJldHVybiBzdXBlci5zZXQocHJvcGVydHlOYW1lLCB2YWx1ZSk7XG4gIH1cbn1cblxuY2xhc3MgU2FmZVNldHRpbmdzUHJveHlIYW5kbGVyPFBsdWdpblNldHRpbmdzIGV4dGVuZHMgb2JqZWN0PiBleHRlbmRzIFByb3h5SGFuZGxlckJhc2U8UGx1Z2luU2V0dGluZ3M+IHtcbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGdldFByb3BlcnR5VmFsdWUocHJvcGVydHk6IFBsdWdpblNldHRpbmdzUHJvcGVydHk8dW5rbm93bj4pOiB1bmtub3duIHtcbiAgICByZXR1cm4gcHJvcGVydHkuc2FmZVZhbHVlO1xuICB9XG59XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgbWFuYWdpbmcgcGx1Z2luIHNldHRpbmdzLlxuICpcbiAqIEB0eXBlUGFyYW0gUGx1Z2luU2V0dGluZ3MgLSBUaGUgdHlwZSByZXByZXNlbnRpbmcgdGhlIHBsdWdpbiBzZXR0aW5ncyBvYmplY3QuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBQbHVnaW5TZXR0aW5nc01hbmFnZXJCYXNlPFBsdWdpblNldHRpbmdzIGV4dGVuZHMgb2JqZWN0PiB7XG4gIHB1YmxpYyByZWFkb25seSBhcHA6IEFwcDtcbiAgcHVibGljIHJlYWRvbmx5IHNhZmVTZXR0aW5nczogUmVhZG9ubHlEZWVwPFBsdWdpblNldHRpbmdzPjtcblxuICBwcml2YXRlIGRlZmF1bHRTZXR0aW5nczogUGx1Z2luU2V0dGluZ3M7XG4gIHByaXZhdGUgcHJvcGVydGllczogUHJvcGVydGllc01hcDxQbHVnaW5TZXR0aW5ncz47XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIHByaXZhdGUgdmFsaWRhdG9yczogTWFwPHN0cmluZywgVmFsaWRhdG9yPGFueT4+ID0gbmV3IE1hcDxzdHJpbmcsIFZhbGlkYXRvcjxhbnk+PigpO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgcGx1Z2luOiBQbHVnaW5CYXNlPFBsdWdpblNldHRpbmdzPikge1xuICAgIHRoaXMuYXBwID0gcGx1Z2luLmFwcDtcbiAgICB0aGlzLmRlZmF1bHRTZXR0aW5ncyA9IHRoaXMuY3JlYXRlRGVmYXVsdFNldHRpbmdzKCk7XG5cbiAgICB0aGlzLmFkZFZhbGlkYXRvcnMoKTtcblxuICAgIHRoaXMucHJvcGVydGllcyA9IG5ldyBQcm9wZXJ0aWVzTWFwPFBsdWdpblNldHRpbmdzPigpO1xuXG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eU5hbWUgb2YgT2JqZWN0LmtleXModGhpcy5kZWZhdWx0U2V0dGluZ3MpIGFzIFN0cmluZ0tleXM8UGx1Z2luU2V0dGluZ3M+W10pIHtcbiAgICAgIHRoaXMucHJvcGVydGllcy5zZXQoXG4gICAgICAgIHByb3BlcnR5TmFtZSxcbiAgICAgICAgbmV3IFBsdWdpblNldHRpbmdzUHJvcGVydHkocHJvcGVydHlOYW1lLCB0aGlzLmRlZmF1bHRTZXR0aW5nc1twcm9wZXJ0eU5hbWVdLCB0aGlzLnZhbGlkYXRvcnMuZ2V0KHByb3BlcnR5TmFtZSkgPz8gbm9vcClcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy52YWxpZGF0b3JzLmNsZWFyKCk7XG5cbiAgICB0aGlzLnNhZmVTZXR0aW5ncyA9IG5ldyBQcm94eSh0aGlzLmRlZmF1bHRTZXR0aW5ncywgbmV3IFNhZmVTZXR0aW5nc1Byb3h5SGFuZGxlcjxQbHVnaW5TZXR0aW5ncz4odGhpcy5wcm9wZXJ0aWVzKSkgYXMgUmVhZG9ubHlEZWVwPFBsdWdpblNldHRpbmdzPjtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBlZGl0QW5kU2F2ZShlZGl0b3I6IChzZXR0aW5nczogUGx1Z2luU2V0dGluZ3MpID0+IFByb21pc2FibGU8dm9pZD4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBlZGl0YWJsZVNldHRpbmdzID0gbmV3IFByb3h5KHRoaXMuZGVmYXVsdFNldHRpbmdzLCBuZXcgRWRpdGFibGVTZXR0aW5nc1Byb3h5SGFuZGxlcjxQbHVnaW5TZXR0aW5ncz4odGhpcy5wcm9wZXJ0aWVzKSkgYXMge1xuICAgICAgdmFsaWRhdGlvblByb21pc2U6IFByb21pc2U8dm9pZD47XG4gICAgfSAmIFBsdWdpblNldHRpbmdzO1xuICAgIGF3YWl0IGVkaXRvcihlZGl0YWJsZVNldHRpbmdzKTtcbiAgICBhd2FpdCBlZGl0YWJsZVNldHRpbmdzLnZhbGlkYXRpb25Qcm9taXNlO1xuICAgIGF3YWl0IHRoaXMuc2F2ZVRvRmlsZSgpO1xuICB9XG5cbiAgcHVibGljIGdldFByb3BlcnR5PFByb3BlcnR5TmFtZSBleHRlbmRzIFN0cmluZ0tleXM8UGx1Z2luU2V0dGluZ3M+Pihwcm9wZXJ0eU5hbWU6IFByb3BlcnR5TmFtZSk6IFBsdWdpblNldHRpbmdzUHJvcGVydHk8UGx1Z2luU2V0dGluZ3NbUHJvcGVydHlOYW1lXT4ge1xuICAgIHJldHVybiB0aGlzLnByb3BlcnRpZXMuZ2V0VHlwZWQocHJvcGVydHlOYW1lKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBsb2FkRnJvbUZpbGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiB0aGlzLnByb3BlcnRpZXMudmFsdWVzKCkpIHtcbiAgICAgIHByb3BlcnR5LnJlc2V0KCk7XG4gICAgfVxuXG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMucGx1Z2luLmxvYWREYXRhKCkgYXMgdW5rbm93bjtcblxuICAgIGlmIChkYXRhID09PSB1bmRlZmluZWQgfHwgZGF0YSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgZGF0YSAhPT0gJ29iamVjdCcgfHwgQXJyYXkuaXNBcnJheShkYXRhKSkge1xuICAgICAgY29uc3QgdHlwZSA9IEFycmF5LmlzQXJyYXkoZGF0YSkgPyAnQXJyYXknIDogdHlwZW9mIGRhdGE7XG4gICAgICBjb25zb2xlLmVycm9yKGBJbnZhbGlkIGRhdGEgdHlwZS4gRXhwZWN0ZWQgT2JqZWN0LCBnb3Q6ICR7dHlwZX1gKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgcmVjb3JkID0gZGF0YSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICBjb25zdCBvcmlnaW5hbEpzb24gPSBKU09OLnN0cmluZ2lmeShyZWNvcmQpO1xuICAgIHJlY29yZCA9IHRoaXMuZ2V0VHJhbnNmb3JtZXIoKS50cmFuc2Zvcm1PYmplY3RSZWN1cnNpdmVseShyZWNvcmQpO1xuICAgIGF3YWl0IHRoaXMub25Mb2FkUmVjb3JkKHJlY29yZCk7XG5cbiAgICBmb3IgKGNvbnN0IFtwcm9wZXJ0eU5hbWUsIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhyZWNvcmQpKSB7XG4gICAgICBjb25zdCBwcm9wZXJ0eSA9IHRoaXMucHJvcGVydGllcy5nZXQocHJvcGVydHlOYW1lKTtcbiAgICAgIGlmICghcHJvcGVydHkpIHtcbiAgICAgICAgY29uc29sZS53YXJuKGBVbmtub3duIHByb3BlcnR5OiAke3Byb3BlcnR5TmFtZX1gKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IHR5cGVvZiBwcm9wZXJ0eS5kZWZhdWx0VmFsdWUpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdJbnZhbGlkIHZhbHVlIHR5cGUnLCB7XG4gICAgICAgICAgcHJvcGVydHlOYW1lLFxuICAgICAgICAgIHByb3BlcnR5VHlwZTogdHlwZW9mIHByb3BlcnR5LmRlZmF1bHRWYWx1ZSxcbiAgICAgICAgICB2YWx1ZVxuICAgICAgICB9KTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGF3YWl0IHByb3BlcnR5LnNldFZhbHVlQW5kVmFsaWRhdGUodmFsdWUpO1xuICAgIH1cblxuICAgIGNvbnN0IG5ld0pzb24gPSBKU09OLnN0cmluZ2lmeShhd2FpdCB0aGlzLnByZXBhcmVSZWNvcmRUb1NhdmUoKSk7XG5cbiAgICBpZiAobmV3SnNvbiAhPT0gb3JpZ2luYWxKc29uKSB7XG4gICAgICBhd2FpdCB0aGlzLnNhdmVUb0ZpbGUoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2F2ZXMgdGhlIG5ldyBwbHVnaW4gc2V0dGluZ3MuXG4gICAqXG4gICAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHNldHRpbmdzIGFyZSBzYXZlZC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBzYXZlVG9GaWxlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IG9sZFNldHRpbmdzID0gdGhpcy5nZXRTYXZlZFNldHRpbmdzKCk7XG5cbiAgICBsZXQgaGFzQ2hhbmdlcyA9IGZhbHNlO1xuXG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiB0aGlzLnByb3BlcnRpZXMudmFsdWVzKCkpIHtcbiAgICAgIGhhc0NoYW5nZXMgfHw9IHByb3BlcnR5LnNhdmUoKTtcbiAgICB9XG5cbiAgICBpZiAoIWhhc0NoYW5nZXMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBhd2FpdCB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnByZXBhcmVSZWNvcmRUb1NhdmUoKSk7XG4gICAgYXdhaXQgdGhpcy5wbHVnaW4ub25TYXZlU2V0dGluZ3ModGhpcy5nZXRTYXZlZFNldHRpbmdzKCksIG9sZFNldHRpbmdzKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhZGRWYWxpZGF0b3I8UHJvcGVydHlOYW1lIGV4dGVuZHMgU3RyaW5nS2V5czxQbHVnaW5TZXR0aW5ncz4+KFxuICAgIHByb3BlcnR5TmFtZTogUHJvcGVydHlOYW1lLFxuICAgIHZhbGlkYXRvcjogVmFsaWRhdG9yPFBsdWdpblNldHRpbmdzW1Byb3BlcnR5TmFtZV0+XG4gICk6IHZvaWQge1xuICAgIHRoaXMudmFsaWRhdG9ycy5zZXQocHJvcGVydHlOYW1lLCB2YWxpZGF0b3IpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFkZFZhbGlkYXRvcnMoKTogdm9pZCB7XG4gICAgbm9vcCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGNyZWF0ZURlZmF1bHRTZXR0aW5ncygpOiBQbHVnaW5TZXR0aW5ncztcblxuICBwcm90ZWN0ZWQgZ2V0VHJhbnNmb3JtZXIoKTogVHJhbnNmb3JtZXIge1xuICAgIHJldHVybiBkZWZhdWx0VHJhbnNmb3JtZXI7XG4gIH1cblxuICBwcm90ZWN0ZWQgb25Mb2FkUmVjb3JkKF9yZWNvcmQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogUHJvbWlzYWJsZTx2b2lkPiB7XG4gICAgbm9vcCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uU2F2aW5nUmVjb3JkKF9yZWNvcmQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogUHJvbWlzYWJsZTx2b2lkPiB7XG4gICAgbm9vcCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTYXZlZFNldHRpbmdzKCk6IFBhcnRpYWw8UGx1Z2luU2V0dGluZ3M+IHtcbiAgICBjb25zdCBzYXZlZFNldHRpbmdzOiBQYXJ0aWFsPFBsdWdpblNldHRpbmdzPiA9IHt9O1xuICAgIGZvciAoY29uc3QgW3Byb3BlcnR5TmFtZSwgcHJvcGVydHldIG9mIHRoaXMucHJvcGVydGllcy5lbnRyaWVzKCkpIHtcbiAgICAgIHNhdmVkU2V0dGluZ3NbcHJvcGVydHlOYW1lIGFzIFN0cmluZ0tleXM8UGx1Z2luU2V0dGluZ3M+XSA9IHByb3BlcnR5Lmxhc3RTYXZlZFZhbHVlIGFzIFBsdWdpblNldHRpbmdzW1N0cmluZ0tleXM8UGx1Z2luU2V0dGluZ3M+XSB8IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgY29uc3QgcHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcy5kZWZhdWx0U2V0dGluZ3MpIGFzIG9iamVjdDtcbiAgICBPYmplY3Quc2V0UHJvdG90eXBlT2Yoc2F2ZWRTZXR0aW5ncywgcHJvdG8pO1xuICAgIHJldHVybiBzYXZlZFNldHRpbmdzO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBwcmVwYXJlUmVjb3JkVG9TYXZlKCk6IFByb21pc2U8UmVjb3JkPFN0cmluZ0tleXM8UGx1Z2luU2V0dGluZ3M+LCB1bmtub3duPj4ge1xuICAgIGNvbnN0IHNldHRpbmdzOiBSZWNvcmQ8U3RyaW5nS2V5czxQbHVnaW5TZXR0aW5ncz4sIHVua25vd24+ID0ge30gYXMgUmVjb3JkPFN0cmluZ0tleXM8UGx1Z2luU2V0dGluZ3M+LCB1bmtub3duPjtcbiAgICBmb3IgKGNvbnN0IFtwcm9wZXJ0eU5hbWUsIHByb3BlcnR5XSBvZiB0aGlzLnByb3BlcnRpZXMuZW50cmllcygpKSB7XG4gICAgICBzZXR0aW5nc1twcm9wZXJ0eU5hbWUgYXMgU3RyaW5nS2V5czxQbHVnaW5TZXR0aW5ncz5dID0gcHJvcGVydHkuY3VycmVudFZhbHVlIGFzIHVua25vd247XG4gICAgfVxuXG4gICAgYXdhaXQgdGhpcy5vblNhdmluZ1JlY29yZChzZXR0aW5ncyk7XG5cbiAgICByZXR1cm4gdGhpcy5nZXRUcmFuc2Zvcm1lcigpLnRyYW5zZm9ybU9iamVjdFJlY3Vyc2l2ZWx5KHNldHRpbmdzKTtcbiAgfVxufVxuXG4vKipcbiAqIEEgcHJvcGVydHkgb2YgYSBwbHVnaW4gc2V0dGluZ3MuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIHByb3BlcnR5LlxuICovXG5leHBvcnQgY2xhc3MgUGx1Z2luU2V0dGluZ3NQcm9wZXJ0eTxUPiB7XG4gIHB1YmxpYyBnZXQgY3VycmVudFZhbHVlKCk6IFQge1xuICAgIHJldHVybiB0aGlzLl9jdXJyZW50VmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGxhc3RTYXZlZFZhbHVlKCk6IFQge1xuICAgIHJldHVybiB0aGlzLl9sYXN0U2F2ZWRWYWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2FmZVZhbHVlKCk6IFQge1xuICAgIHJldHVybiB0aGlzLl92YWxpZGF0aW9uTWVzc2FnZSA/IHRoaXMuZGVmYXVsdFZhbHVlIDogdGhpcy5fY3VycmVudFZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldCB2YWxpZGF0aW9uTWVzc2FnZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl92YWxpZGF0aW9uTWVzc2FnZTtcbiAgfVxuXG4gIHByaXZhdGUgX2N1cnJlbnRWYWx1ZTogVDtcblxuICBwcml2YXRlIF9sYXN0U2F2ZWRWYWx1ZTogVDtcblxuICBwcml2YXRlIF92YWxpZGF0aW9uTWVzc2FnZSA9ICcnO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHByb3BlcnR5TmFtZTogc3RyaW5nLCBwdWJsaWMgcmVhZG9ubHkgZGVmYXVsdFZhbHVlOiBULCBwcml2YXRlIHJlYWRvbmx5IHZhbGlkYXRvcjogVmFsaWRhdG9yPFQ+KSB7XG4gICAgdGhpcy5fbGFzdFNhdmVkVmFsdWUgPSBkZWZhdWx0VmFsdWU7XG4gICAgdGhpcy5fY3VycmVudFZhbHVlID0gZGVmYXVsdFZhbHVlO1xuICB9XG5cbiAgcHVibGljIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMuX2N1cnJlbnRWYWx1ZSA9IHRoaXMuZGVmYXVsdFZhbHVlO1xuICAgIHRoaXMuX3ZhbGlkYXRpb25NZXNzYWdlID0gJyc7XG4gIH1cblxuICBwdWJsaWMgc2F2ZSgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5fbGFzdFNhdmVkVmFsdWUgPT09IHRoaXMuX2N1cnJlbnRWYWx1ZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHRoaXMuX2xhc3RTYXZlZFZhbHVlID0gdGhpcy5fY3VycmVudFZhbHVlO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHVibGljIHNldFZhbGlkYXRpb25NZXNzYWdlKHZhbGlkYXRpb25NZXNzYWdlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLl92YWxpZGF0aW9uTWVzc2FnZSA9IHZhbGlkYXRpb25NZXNzYWdlO1xuICAgIHRoaXMuc2hvd1dhcm5pbmcoKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRWYWx1ZSh2YWx1ZTogVCk6IHZvaWQge1xuICAgIHRoaXMuX2N1cnJlbnRWYWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHNldFZhbHVlQW5kVmFsaWRhdGUodmFsdWU6IFQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLnNldFZhbHVlKHZhbHVlKTtcbiAgICBpZiAodGhpcy5fY3VycmVudFZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl92YWxpZGF0aW9uTWVzc2FnZSA9IChhd2FpdCB0aGlzLnZhbGlkYXRvcih0aGlzLl9jdXJyZW50VmFsdWUpIGFzIHN0cmluZyB8IHVuZGVmaW5lZCkgPz8gJyc7XG4gICAgdGhpcy5zaG93V2FybmluZyh2YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIHNob3dXYXJuaW5nKHZhbHVlPzogVCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fdmFsaWRhdGlvbk1lc3NhZ2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB3YXJuaW5nTWVzc2FnZSA9IGBDb3VsZCBub3Qgc2V0IHBsdWdpbiBzZXR0aW5nOiAke3RoaXMucHJvcGVydHlOYW1lfS4gVXNpbmcgZGVmYXVsdCB2YWx1ZSBpbnN0ZWFkLmA7XG4gICAgbmV3IE5vdGljZSh3YXJuaW5nTWVzc2FnZSk7XG4gICAgY29uc29sZS53YXJuKHdhcm5pbmdNZXNzYWdlLCB7XG4gICAgICBkZWZhdWx0VmFsdWU6IHRoaXMuZGVmYXVsdFZhbHVlLFxuICAgICAgcHJvcGVydHlOYW1lOiB0aGlzLnByb3BlcnR5TmFtZSxcbiAgICAgIHZhbGlkYXRpb25NZXNzYWdlOiB0aGlzLl92YWxpZGF0aW9uTWVzc2FnZSxcbiAgICAgIHZhbHVlXG4gICAgfSk7XG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7QUFNQSxTQUFTLGNBQWM7QUFTdkIsU0FBUyxZQUFZO0FBQ3JCLFNBQVMsdUJBQXVCO0FBQ2hDLFNBQVMsMkJBQTJCO0FBQ3BDLFNBQVMsd0JBQXdCO0FBQ2pDLFNBQVMsc0NBQXNDO0FBRS9DLE1BQU0scUJBQXFCLElBQUksaUJBQWlCO0FBQUEsRUFDOUMsSUFBSSwrQkFBK0I7QUFBQSxFQUNuQyxJQUFJLGdCQUFnQjtBQUFBLEVBQ3BCLElBQUksb0JBQW9CO0FBQzFCLENBQUM7QUFJRCxNQUFlLGlCQUF3RjtBQUFBLEVBQzlGLFlBQStCLFlBQTJDO0FBQTNDO0FBQUEsRUFBNEM7QUFBQSxFQUUzRSxJQUFJLFFBQXdCLE1BQWdDO0FBQ2pFLFVBQU0sU0FBUztBQUNmLFFBQUksT0FBTyxTQUFTLFVBQVU7QUFDNUIsYUFBTyxPQUFPLElBQUk7QUFBQSxJQUNwQjtBQUVBLFVBQU0sV0FBVyxLQUFLLFdBQVcsSUFBSSxJQUFJO0FBQ3pDLFFBQUks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
|
@@ -18,7 +18,12 @@ export interface BindOptions<T> {
|
|
18
18
|
*/
|
19
19
|
onChanged?(newValue: T | undefined, oldValue: T): Promisable<void>;
|
20
20
|
/**
|
21
|
-
*
|
21
|
+
* Whether to reset the setting when the component value is empty. Default is `true`.
|
22
|
+
* Applicable only to text-based components.
|
23
|
+
*/
|
24
|
+
shouldResetSettingWhenComponentIsEmpty?: boolean;
|
25
|
+
/**
|
26
|
+
* Whether to show the validation message when the component value is invalid. Default is `true`.
|
22
27
|
*/
|
23
28
|
shouldShowValidationMessage?: boolean;
|
24
29
|
}
|
@@ -39,7 +44,7 @@ export interface BindOptionsExtended<PluginSettings extends object, UIValue, Pro
|
|
39
44
|
*/
|
40
45
|
pluginSettingsToComponentValueConverter: (pluginSettingsValue: PluginSettings[PropertyName]) => UIValue;
|
41
46
|
}
|
42
|
-
type ExtractPluginSettings<Plugin extends PluginBase<any>> = Plugin
|
47
|
+
type ExtractPluginSettings<Plugin extends PluginBase<any>> = Plugin['__pluginSettingsType'];
|
43
48
|
/**
|
44
49
|
* Base class for creating plugin settings tabs in Obsidian.
|
45
50
|
* Provides a method for binding value components to plugin settings and handling changes.
|
@@ -5,7 +5,10 @@ if you want to view the source, please visit the github repository of this plugi
|
|
5
5
|
|
6
6
|
(function initEsm(){if(globalThis.process){return}const browserProcess={browser:true,cwd:__name(()=>"/","cwd"),env:{},platform:"android"};globalThis.process=browserProcess})();
|
7
7
|
|
8
|
-
import {
|
8
|
+
import {
|
9
|
+
PluginSettingTab,
|
10
|
+
setTooltip
|
11
|
+
} from "obsidian";
|
9
12
|
import { invokeAsyncSafely } from "../../Async.mjs";
|
10
13
|
import { CssClass } from "../../CssClass.mjs";
|
11
14
|
import { noop } from "../../Function.mjs";
|
@@ -36,27 +39,26 @@ class PluginSettingsTabBase extends PluginSettingTab {
|
|
36
39
|
componentToPluginSettingsValueConverter: (value2) => value2,
|
37
40
|
onChanged: noop,
|
38
41
|
pluginSettingsToComponentValueConverter: (value2) => value2,
|
42
|
+
shouldResetSettingWhenComponentIsEmpty: true,
|
39
43
|
shouldShowValidationMessage: true
|
40
44
|
};
|
41
45
|
const optionsExt = { ...DEFAULT_OPTIONS, ...options };
|
42
46
|
const validatorElement = getValidatorComponent(valueComponent)?.validatorEl;
|
43
47
|
const property = this.plugin.settingsManager.getProperty(propertyName);
|
44
|
-
|
48
|
+
const value = property.currentValue;
|
45
49
|
const textBasedComponent = getTextBasedComponentValue(valueComponent);
|
46
|
-
textBasedComponent?.
|
47
|
-
if (
|
48
|
-
|
49
|
-
|
50
|
-
}
|
51
|
-
if (value !== void 0) {
|
50
|
+
textBasedComponent?.setPlaceholderValue(optionsExt.pluginSettingsToComponentValueConverter(property.defaultValue));
|
51
|
+
if (property.currentValue === property.defaultValue && textBasedComponent && optionsExt.shouldResetSettingWhenComponentIsEmpty) {
|
52
|
+
textBasedComponent.empty();
|
53
|
+
} else {
|
52
54
|
valueComponent.setValue(optionsExt.pluginSettingsToComponentValueConverter(value));
|
53
55
|
}
|
54
56
|
valueComponent.onChange(async (uiValue) => {
|
55
|
-
if (textBasedComponent?.isEmpty()) {
|
56
|
-
property.
|
57
|
+
if (textBasedComponent?.isEmpty() && optionsExt.shouldResetSettingWhenComponentIsEmpty) {
|
58
|
+
property.reset();
|
57
59
|
return;
|
58
60
|
}
|
59
|
-
const oldValue = property.
|
61
|
+
const oldValue = property.currentValue;
|
60
62
|
const convertedValue = optionsExt.componentToPluginSettingsValueConverter(uiValue);
|
61
63
|
if (isValidationMessageHolder(convertedValue)) {
|
62
64
|
property.setValidationMessage(convertedValue.validationMessage);
|
@@ -80,7 +82,7 @@ class PluginSettingsTabBase extends PluginSettingTab {
|
|
80
82
|
property.setValidationMessage(validatorElement.validationMessage);
|
81
83
|
}
|
82
84
|
validatorElement.setCustomValidity(property.validationMessage);
|
83
|
-
validatorElement
|
85
|
+
setTooltip(validatorElement, property.validationMessage);
|
84
86
|
if (validatorElement.isActiveElement() && optionsExt.shouldShowValidationMessage) {
|
85
87
|
validatorElement.reportValidity();
|
86
88
|
}
|
@@ -94,4 +96,4 @@ class PluginSettingsTabBase extends PluginSettingTab {
|
|
94
96
|
export {
|
95
97
|
PluginSettingsTabBase
|
96
98
|
};
|
97
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL1BsdWdpbi9QbHVnaW5TZXR0aW5nc1RhYkJhc2UudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uIFBsdWdpblNldHRpbmdzVGFiQmFzZVxuICogVGhpcyBtb2R1bGUgZGVmaW5lcyBhIGJhc2UgY2xhc3MgZm9yIGNyZWF0aW5nIHBsdWdpbiBzZXR0aW5nIHRhYnMgaW4gT2JzaWRpYW4uXG4gKiBJdCBwcm92aWRlcyBhIHV0aWxpdHkgbWV0aG9kIHRvIGJpbmQgdmFsdWUgY29tcG9uZW50cyB0byBwbHVnaW4gc2V0dGluZ3MgYW5kIGhhbmRsZSBjaGFuZ2VzLlxuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgQ29uZGl0aW9uYWxLZXlzLFxuICBQcm9taXNhYmxlXG59IGZyb20gJ3R5cGUtZmVzdCc7XG5cbmltcG9ydCB7IFBsdWdpblNldHRpbmdUYWIgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgU3RyaW5nS2V5cyB9IGZyb20gJy4uLy4uL1R5cGUudHMnO1xuaW1wb3J0IHR5cGUgeyBWYWx1ZUNvbXBvbmVudFdpdGhDaGFuZ2VUcmFja2luZyB9IGZyb20gJy4uL0NvbXBvbmVudHMvVmFsdWVDb21wb25lbnRXaXRoQ2hhbmdlVHJhY2tpbmcudHMnO1xuaW1wb3J0IHR5cGUgeyBWYWxpZGF0aW9uTWVzc2FnZUhvbGRlciB9IGZyb20gJy4uL1ZhbGlkYXRpb25NZXNzYWdlLnRzJztcbmltcG9ydCB0eXBlIHsgUGx1Z2luQmFzZSB9IGZyb20gJy4vUGx1Z2luQmFzZS50cyc7XG5pbXBvcnQgdHlwZSB7IFBsdWdpblNldHRpbmdzUHJvcGVydHkgfSBmcm9tICcuL1BsdWdpblNldHRpbmdzTWFuYWdlckJhc2UudHMnO1xuXG5pbXBvcnQgeyBpbnZva2VBc3luY1NhZmVseSB9IGZyb20gJy4uLy4uL0FzeW5jLnRzJztcbmltcG9ydCB7IENzc0NsYXNzIH0gZnJvbSAnLi4vLi4vQ3NzQ2xhc3MudHMnO1xuaW1wb3J0IHsgbm9vcCB9IGZyb20gJy4uLy4uL0Z1bmN0aW9uLnRzJztcbmltcG9ydCB7IGdldFRleHRCYXNlZENvbXBvbmVudFZhbHVlIH0gZnJvbSAnLi4vQ29tcG9uZW50cy9UZXh0QmFzZWRDb21wb25lbnQudHMnO1xuaW1wb3J0IHsgZ2V0VmFsaWRhdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vQ29tcG9uZW50cy9WYWxpZGF0b3JDb21wb25lbnQudHMnO1xuaW1wb3J0IHsgaXNWYWxpZGF0aW9uTWVzc2FnZUhvbGRlciB9IGZyb20gJy4uL1ZhbGlkYXRpb25NZXNzYWdlLnRzJztcbmltcG9ydCB7IGdldFBsdWdpbklkIH0gZnJvbSAnLi9QbHVnaW5JZC50cyc7XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgYmluZGluZyBhIHZhbHVlIGNvbXBvbmVudCB0byBhIHBsdWdpbiBzZXR0aW5nLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJpbmRPcHRpb25zPFQ+IHtcbiAgLyoqXG4gICAqIEEgY2FsbGJhY2sgZnVuY3Rpb24gdGhhdCBpcyBjYWxsZWQgd2hlbiB0aGUgdmFsdWUgb2YgdGhlIGNvbXBvbmVudCBjaGFuZ2VzLlxuICAgKi9cbiAgb25DaGFuZ2VkPyhuZXdWYWx1ZTogVCB8IHVuZGVmaW5lZCwgb2xkVmFsdWU6IFQpOiBQcm9taXNhYmxlPHZvaWQ+O1xuXG4gIC8qKlxuICAgKiBJZiB0cnVlLCBzaG93cyB0aGUgdmFsaWRhdGlvbiBtZXNzYWdlIHdoZW4gdGhlIGNvbXBvbmVudCB2YWx1ZSBpcyBpbnZhbGlkLiBEZWZhdWx0IGlzIGB0cnVlYC5cbiAgICovXG4gIHNob3VsZFNob3dWYWxpZGF0aW9uTWVzc2FnZT86IGJvb2xlYW47XG59XG5cbi8qKlxuICogRXh0ZW5kZWQgb3B0aW9ucyBmb3IgYmluZGluZyBhIHZhbHVlIGNvbXBvbmVudCB0byBhIHBsdWdpbiBzZXR0aW5nLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJpbmRPcHRpb25zRXh0ZW5kZWQ8XG4gIFBsdWdpblNldHRpbmdzIGV4dGVuZHMgb2JqZWN0LFxuICBVSVZhbHVlLFxuICBQcm9wZXJ0eU5hbWUgZXh0ZW5kcyBTdHJpbmdLZXlzPFBsdWdpblNldHRpbmdzPlxuPiBleHRlbmRzIEJpbmRPcHRpb25zPFBsdWdpblNldHRpbmdzW1Byb3BlcnR5TmFtZV0+IHtcbiAgLyoqXG4gICAqIENvbnZlcnRzIHRoZSBVSSBjb21wb25lbnQncyB2YWx1ZSBiYWNrIHRvIHRoZSBwbHVnaW4gc2V0dGluZ3MgdmFsdWUuXG4gICAqIEBwYXJhbSB1aVZhbHVlIC0gVGhlIHZhbHVlIG9mIHRoZSBVSSBjb21wb25lbnQuXG4gICAqIEByZXR1cm5zIFRoZSB2YWx1ZSB0byBzZXQgb24gdGhlIHBsdWdpbiBzZXR0aW5ncy5cbiAgICovXG4gIGNvbXBvbmVudFRvUGx1Z2luU2V0dGluZ3NWYWx1ZUNvbnZlcnRlcjogKHVpVmFsdWU6IFVJVmFsdWUpID0+IFBsdWdpblNldHRpbmdzW1Byb3BlcnR5TmFtZV0gfCBWYWxpZGF0aW9uTWVzc2FnZUhvbGRlcjtcblxuICAvKipcbiAgICogQ29udmVydHMgdGhlIHBsdWdpbiBzZXR0aW5ncyB2YWx1ZSB0byB0aGUgdmFsdWUgdXNlZCBieSB0aGUgVUkgY29tcG9uZW50LlxuICAgKiBAcGFyYW0gcGx1Z2luU2V0dGluZ3NWYWx1ZSAtIFRoZSB2YWx1ZSBvZiB0aGUgcHJvcGVydHkgaW4gdGhlIHBsdWdpbiBzZXR0aW5ncy5cbiAgICogQHJldHVybnMgVGhlIHZhbHVlIHRvIHNldCBvbiB0aGUgVUkgY29tcG9uZW50LlxuICAgKi9cbiAgcGx1Z2luU2V0dGluZ3NUb0NvbXBvbmVudFZhbHVlQ29udmVydGVyOiAocGx1Z2luU2V0dGluZ3NWYWx1ZTogUGx1Z2luU2V0dGluZ3NbUHJvcGVydHlOYW1lXSkgPT4gVUlWYWx1ZTtcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbnR5cGUgRXh0cmFjdFBsdWdpblNldHRpbmdzPFBsdWdpbiBleHRlbmRzIFBsdWdpbkJhc2U8YW55Pj4gPSBQbHVnaW4gZXh0ZW5kcyBQbHVnaW5CYXNlPGluZmVyIFBsdWdpblNldHRpbmdzPiA/IFBsdWdpblNldHRpbmdzIDogbmV2ZXI7XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgY3JlYXRpbmcgcGx1Z2luIHNldHRpbmdzIHRhYnMgaW4gT2JzaWRpYW4uXG4gKiBQcm92aWRlcyBhIG1ldGhvZCBmb3IgYmluZGluZyB2YWx1ZSBjb21wb25lbnRzIHRvIHBsdWdpbiBzZXR0aW5ncyBhbmQgaGFuZGxpbmcgY2hhbmdlcy5cbiAqXG4gKiBAdHlwZVBhcmFtIFRQbHVnaW4gLSBUaGUgdHlwZSBvZiB0aGUgcGx1Z2luIHRoYXQgZXh0ZW5kcyBQbHVnaW5CYXNlLlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFBsdWdpblNldHRpbmdzVGFiQmFzZTxUUGx1Z2luIGV4dGVuZHMgUGx1Z2luQmFzZTxhbnk+PiBleHRlbmRzIFBsdWdpblNldHRpbmdUYWIge1xuICBwdWJsaWMgY29uc3RydWN0b3IocHVibGljIG92ZXJyaWRlIHBsdWdpbjogVFBsdWdpbikge1xuICAgIHN1cGVyKHBsdWdpbi5hcHAsIHBsdWdpbik7XG4gICAgdGhpcy5jb250YWluZXJFbC5hZGRDbGFzcyhDc3NDbGFzcy5MaWJyYXJ5TmFtZSwgZ2V0UGx1Z2luSWQoKSwgQ3NzQ2xhc3MuUGx1Z2luU2V0dGluZ3NUYWIpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJpbmRzIGEgdmFsdWUgY29tcG9uZW50IHRvIGEgcGx1Z2luIHNldHRpbmcuXG4gICAqXG4gICAqIEB0eXBlUGFyYW0gVUlWYWx1ZSAtIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZSBvZiB0aGUgVUkgY29tcG9uZW50LlxuICAgKiBAdHlwZVBhcmFtIFRWYWx1ZUNvbXBvbmVudCAtIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZSBjb21wb25lbnQuXG4gICAqIEBwYXJhbSB2YWx1ZUNvbXBvbmVudCAtIFRoZSB2YWx1ZSBjb21wb25lbnQgdG8gYmluZC5cbiAgICogQHBhcmFtIHByb3BlcnR5TmFtZSAtIFRoZSBwcm9wZXJ0eSBvZiB0aGUgcGx1Z2luIHNldHRpbmdzIHRvIGJpbmQgdG8uXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIGJpbmRpbmcgdGhlIHZhbHVlIGNvbXBvbmVudC5cbiAgICogQHJldHVybnMgVGhlIHZhbHVlIGNvbXBvbmVudC5cbiAgICovXG4gIHB1YmxpYyBiaW5kPFxuICAgIFVJVmFsdWUsXG4gICAgVFZhbHVlQ29tcG9uZW50XG4gID4oXG4gICAgdmFsdWVDb21wb25lbnQ6IFRWYWx1ZUNvbXBvbmVudCAmIFZhbHVlQ29tcG9uZW50V2l0aENoYW5nZVRyYWNraW5nPFVJVmFsdWU+LFxuICAgIHByb3BlcnR5TmFtZTogQ29uZGl0aW9uYWxLZXlzPEV4dHJhY3RQbHVnaW5TZXR0aW5nczxUUGx1Z2luPiwgVUlWYWx1ZT4sXG4gICAgb3B0aW9ucz86IEJpbmRPcHRpb25zPFVJVmFsdWU+XG4gICk6IFRWYWx1ZUNvbXBvbmVudDtcbiAgLyoqXG4gICAqIEJpbmRzIGEgdmFsdWUgY29tcG9uZW50IHRvIGEgcGx1Z2luIHNldHRpbmcuXG4gICAqXG4gICAqIEB0eXBlUGFyYW0gVUlWYWx1ZSAtIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZSBvZiB0aGUgVUkgY29tcG9uZW50LlxuICAgKiBAdHlwZVBhcmFtIFRWYWx1ZUNvbXBvbmVudCAtIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZSBjb21wb25lbnQuXG4gICAqIEB0eXBlUGFyYW0gUHJvcGVydHlOYW1lIC0gVGhlIHByb3BlcnR5IG5hbWUgb2YgdGhlIHBsdWdpbiBzZXR0aW5ncyB0byBiaW5kIHRvLlxuICAgKiBAcGFyYW0gdmFsdWVDb21wb25lbnQgLSBUaGUgdmFsdWUgY29tcG9uZW50IHRvIGJpbmQuXG4gICAqIEBwYXJhbSBwcm9wZXJ0eU5hbWUgLSBUaGUgcHJvcGVydHkgbmFtZSBvZiB0aGUgcGx1Z2luIHNldHRpbmdzIHRvIGJpbmQgdG8uXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIGJpbmRpbmcgdGhlIHZhbHVlIGNvbXBvbmVudC5cbiAgICogQHJldHVybnMgVGhlIHZhbHVlIGNvbXBvbmVudC5cbiAgICovXG4gIHB1YmxpYyBiaW5kPFxuICAgIFVJVmFsdWUsXG4gICAgVFZhbHVlQ29tcG9uZW50LFxuICAgIFByb3BlcnR5TmFtZSBleHRlbmRzIFN0cmluZ0tleXM8RXh0cmFjdFBsdWdpblNldHRpbmdzPFRQbHVnaW4+PlxuICA+KFxuICAgIHZhbHVlQ29tcG9uZW50OiBUVmFsdWVDb21wb25lbnQgJiBWYWx1ZUNvbXBvbmVudFdpdGhDaGFuZ2VUcmFja2luZzxVSVZhbHVlPixcbiAgICBwcm9wZXJ0eU5hbWU6IFByb3BlcnR5TmFtZSxcbiAgICBvcHRpb25zOiBCaW5kT3B0aW9uc0V4dGVuZGVkPEV4dHJhY3RQbHVnaW5TZXR0aW5nczxUUGx1Z2luPiwgVUlWYWx1ZSwgUHJvcGVydHlOYW1lPlxuICApOiBUVmFsdWVDb21wb25lbnQ7XG4gIC8qKlxuICAgKiBCaW5kcyBhIHZhbHVlIGNvbXBvbmVudCB0byBhIHBsdWdpbiBzZXR0aW5nLlxuICAgKlxuICAgKiBAdHlwZVBhcmFtIFVJVmFsdWUgLSBUaGUgdHlwZSBvZiB0aGUgdmFsdWUgb2YgdGhlIFVJIGNvbXBvbmVudC5cbiAgICogQHR5cGVQYXJhbSBUVmFsdWVDb21wb25lbnQgLSBUaGUgdHlwZSBvZiB0aGUgdmFsdWUgY29tcG9uZW50LlxuICAgKiBAdHlwZVBhcmFtIFByb3BlcnR5TmFtZSAtIFRoZSBwcm9wZXJ0eSBuYW1lIG9mIHRoZSBwbHVnaW4gc2V0dGluZ3MgdG8gYmluZCB0by5cbiAgICogQHBhcmFtIHZhbHVlQ29tcG9uZW50IC0gVGhlIHZhbHVlIGNvbXBvbmVudCB0byBiaW5kLlxuICAgKiBAcGFyYW0gcHJvcGVydHlOYW1lIC0gVGhlIHByb3BlcnR5IG5hbWUgb2YgdGhlIHBsdWdpbiBzZXR0aW5ncyB0byBiaW5kIHRvLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciBiaW5kaW5nIHRoZSB2YWx1ZSBjb21wb25lbnQuXG4gICAqIEByZXR1cm5zIFRoZSB2YWx1ZSBjb21wb25lbnQuXG4gICAqL1xuICBwdWJsaWMgYmluZDxcbiAgICBVSVZhbHVlLFxuICAgIFRWYWx1ZUNvbXBvbmVudCxcbiAgICBQcm9wZXJ0eU5hbWUgZXh0ZW5kcyBTdHJpbmdLZXlzPEV4dHJhY3RQbHVnaW5TZXR0aW5nczxUUGx1Z2luPj5cbiAgPihcbiAgICB2YWx1ZUNvbXBvbmVudDogVFZhbHVlQ29tcG9uZW50ICYgVmFsdWVDb21wb25lbnRXaXRoQ2hhbmdlVHJhY2tpbmc8VUlWYWx1ZT4sXG4gICAgcHJvcGVydHlOYW1lOiBQcm9wZXJ0eU5hbWUsXG4gICAgb3B0aW9ucz86IEJpbmRPcHRpb25zPEV4dHJhY3RQbHVnaW5TZXR0aW5nczxUUGx1Z2luPltQcm9wZXJ0eU5hbWVdPlxuICApOiBUVmFsdWVDb21wb25lbnQge1xuICAgIHR5cGUgUGx1Z2luU2V0dGluZ3MgPSBFeHRyYWN0UGx1Z2luU2V0dGluZ3M8VFBsdWdpbj47XG4gICAgdHlwZSBQcm9wZXJ0eVR5cGUgPSBQbHVnaW5TZXR0aW5nc1tQcm9wZXJ0eU5hbWVdO1xuICAgIGNvbnN0IERFRkFVTFRfT1BUSU9OUzogUmVxdWlyZWQ8QmluZE9wdGlvbnNFeHRlbmRlZDxQbHVnaW5TZXR0aW5ncywgVUlWYWx1ZSwgUHJvcGVydHlOYW1lPj4gPSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1yZXR1cm5cbiAgICAgIGNvbXBvbmVudFRvUGx1Z2luU2V0dGluZ3NWYWx1ZUNvbnZlcnRlcjogKHZhbHVlOiBVSVZhbHVlKTogUHJvcGVydHlUeXBlID0+IHZhbHVlIGFzIFByb3BlcnR5VHlwZSxcbiAgICAgIG9uQ2hhbmdlZDogbm9vcCxcbiAgICAgIHBsdWdpblNldHRpbmdzVG9Db21wb25lbnRWYWx1ZUNvbnZlcnRlcjogKHZhbHVlOiBQcm9wZXJ0eVR5cGUpOiBVSVZhbHVlID0+IHZhbHVlIGFzIFVJVmFsdWUsXG4gICAgICBzaG91bGRTaG93VmFsaWRhdGlvbk1lc3NhZ2U6IHRydWVcbiAgICB9O1xuXG4gICAgY29uc3Qgb3B0aW9uc0V4dDogUmVxdWlyZWQ8QmluZE9wdGlvbnNFeHRlbmRlZDxQbHVnaW5TZXR0aW5ncywgVUlWYWx1ZSwgUHJvcGVydHlOYW1lPj4gPSB7IC4uLkRFRkFVTFRfT1BUSU9OUywgLi4ub3B0aW9ucyB9O1xuXG4gICAgY29uc3QgdmFsaWRhdG9yRWxlbWVudCA9IGdldFZhbGlkYXRvckNvbXBvbmVudCh2YWx1ZUNvbXBvbmVudCk/LnZhbGlkYXRvckVsO1xuXG4gICAgY29uc3QgcHJvcGVydHkgPSB0aGlzLnBsdWdpbi5zZXR0aW5nc01hbmFnZXIuZ2V0UHJvcGVydHkocHJvcGVydHlOYW1lKSBhcyBQbHVnaW5TZXR0aW5nc1Byb3BlcnR5PFByb3BlcnR5VHlwZT47XG5cbiAgICBsZXQgdmFsdWUgPSBwcm9wZXJ0eS5nZXRNb2RpZmllZFZhbHVlKCk7XG5cbiAgICBjb25zdCB0ZXh0QmFzZWRDb21wb25lbnQgPSBnZXRUZXh0QmFzZWRDb21wb25lbnRWYWx1ZSh2YWx1ZUNvbXBvbmVudCk7XG4gICAgdGV4dEJhc2VkQ29tcG9uZW50Py5zZXRQbGFjZWhvbGRlcihvcHRpb25zRXh0LnBsdWdpblNldHRpbmdzVG9Db21wb25lbnRWYWx1ZUNvbnZlcnRlcihwcm9wZXJ0eS5kZWZhdWx0VmFsdWUpIGFzIHN0cmluZyk7XG5cbiAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCAmJiAhdGV4dEJhc2VkQ29tcG9uZW50KSB7XG4gICAgICB2YWx1ZSA9IHByb3BlcnR5LmRlZmF1bHRWYWx1ZTtcbiAgICAgIHByb3BlcnR5LnNldFZhbHVlKHZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdmFsdWVDb21wb25lbnQuc2V0VmFsdWUob3B0aW9uc0V4dC5wbHVnaW5TZXR0aW5nc1RvQ29tcG9uZW50VmFsdWVDb252ZXJ0ZXIodmFsdWUpKTtcbiAgICB9XG5cbiAgICB2YWx1ZUNvbXBvbmVudC5vbkNoYW5nZShhc3luYyAodWlWYWx1ZSkgPT4ge1xuICAgICAgaWYgKHRleHRCYXNlZENvbXBvbmVudD8uaXNFbXB0eSgpKSB7XG4gICAgICAgIHByb3BlcnR5LnNldFZhbHVlKHVuZGVmaW5lZCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgb2xkVmFsdWUgPSBwcm9wZXJ0eS5nZXRNb2RpZmllZE9yRGVmYXVsdFZhbHVlKCk7XG4gICAgICBjb25zdCBjb252ZXJ0ZWRWYWx1ZSA9IG9wdGlvbnNFeHQuY29tcG9uZW50VG9QbHVnaW5TZXR0aW5nc1ZhbHVlQ29udmVydGVyKHVpVmFsdWUpO1xuICAgICAgaWYgKGlzVmFsaWRhdGlvbk1lc3NhZ2VIb2xkZXIoY29udmVydGVkVmFsdWUpKSB7XG4gICAgICAgIHByb3BlcnR5LnNldFZhbGlkYXRpb25NZXNzYWdlKGNvbnZlcnRlZFZhbHVlLnZhbGlkYXRpb25NZXNzYWdlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGF3YWl0IHByb3BlcnR5LnNldFZhbHVlQW5kVmFsaWRhdGUoY29udmVydGVkVmFsdWUpO1xuICAgICAgfVxuICAgICAgY29uc3QgbmV3VmFsdWUgPSBpc1ZhbGlkYXRpb25NZXNzYWdlSG9sZGVyKGNvbnZlcnRlZFZhbHVlKSA/IHVuZGVmaW5lZCA6IGNvbnZlcnRlZFZhbHVlO1xuICAgICAgYXdhaXQgb3B0aW9uc0V4dC5vbkNoYW5nZWQobmV3VmFsdWUsIG9sZFZhbHVlKTtcbiAgICB9KTtcblxuICAgIHZhbGlkYXRvckVsZW1lbnQ/LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgdmFsaWRhdGUpO1xuICAgIHZhbGlkYXRvckVsZW1lbnQ/LmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCB2YWxpZGF0ZSk7XG5cbiAgICB2YWxpZGF0ZSgpO1xuICAgIHJldHVybiB2YWx1ZUNvbXBvbmVudDtcblxuICAgIGZ1bmN0aW9uIHZhbGlkYXRlKCk6IHZvaWQge1xuICAgICAgaWYgKCF2YWxpZGF0b3JFbGVtZW50KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKCFwcm9wZXJ0eS52YWxpZGF0aW9uTWVzc2FnZSkge1xuICAgICAgICB2YWxpZGF0b3JFbGVtZW50LnNldEN1c3RvbVZhbGlkaXR5KCcnKTtcbiAgICAgICAgdmFsaWRhdG9yRWxlbWVudC5jaGVja1ZhbGlkaXR5KCk7XG4gICAgICAgIHByb3BlcnR5LnNldFZhbGlkYXRpb25NZXNzYWdlKHZhbGlkYXRvckVsZW1lbnQudmFsaWRhdGlvbk1lc3NhZ2UpO1xuICAgICAgfVxuXG4gICAgICB2YWxpZGF0b3JFbGVtZW50LnNldEN1c3RvbVZhbGlkaXR5KHByb3BlcnR5LnZhbGlkYXRpb25NZXNzYWdlKTtcbiAgICAgIHZhbGlkYXRvckVsZW1lbnQudGl0bGUgPSBwcm9wZXJ0eS52YWxpZGF0aW9uTWVzc2FnZTtcbiAgICAgIGlmICh2YWxpZGF0b3JFbGVtZW50LmlzQWN0aXZlRWxlbWVudCgpICYmIG9wdGlvbnNFeHQuc2hvdWxkU2hvd1ZhbGlkYXRpb25NZXNzYWdlKSB7XG4gICAgICAgIHZhbGlkYXRvckVsZW1lbnQucmVwb3J0VmFsaWRpdHkoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgaGlkZSgpOiB2b2lkIHtcbiAgICBzdXBlci5oaWRlKCk7XG4gICAgaW52b2tlQXN5bmNTYWZlbHkoKCkgPT4gdGhpcy5wbHVnaW4uc2V0dGluZ3NNYW5hZ2VyLnNhdmVUb0ZpbGUoKSk7XG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7QUFXQSxTQUFTLHdCQUF3QjtB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
|
99
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL1BsdWdpbi9QbHVnaW5TZXR0aW5nc1RhYkJhc2UudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uIFBsdWdpblNldHRpbmdzVGFiQmFzZVxuICogVGhpcyBtb2R1bGUgZGVmaW5lcyBhIGJhc2UgY2xhc3MgZm9yIGNyZWF0aW5nIHBsdWdpbiBzZXR0aW5nIHRhYnMgaW4gT2JzaWRpYW4uXG4gKiBJdCBwcm92aWRlcyBhIHV0aWxpdHkgbWV0aG9kIHRvIGJpbmQgdmFsdWUgY29tcG9uZW50cyB0byBwbHVnaW4gc2V0dGluZ3MgYW5kIGhhbmRsZSBjaGFuZ2VzLlxuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgQ29uZGl0aW9uYWxLZXlzLFxuICBQcm9taXNhYmxlXG59IGZyb20gJ3R5cGUtZmVzdCc7XG5cbmltcG9ydCB7XG4gIFBsdWdpblNldHRpbmdUYWIsXG4gIHNldFRvb2x0aXBcbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IFN0cmluZ0tleXMgfSBmcm9tICcuLi8uLi9UeXBlLnRzJztcbmltcG9ydCB0eXBlIHsgVmFsdWVDb21wb25lbnRXaXRoQ2hhbmdlVHJhY2tpbmcgfSBmcm9tICcuLi9Db21wb25lbnRzL1ZhbHVlQ29tcG9uZW50V2l0aENoYW5nZVRyYWNraW5nLnRzJztcbmltcG9ydCB0eXBlIHsgVmFsaWRhdGlvbk1lc3NhZ2VIb2xkZXIgfSBmcm9tICcuLi9WYWxpZGF0aW9uTWVzc2FnZS50cyc7XG5pbXBvcnQgdHlwZSB7IFBsdWdpbkJhc2UgfSBmcm9tICcuL1BsdWdpbkJhc2UudHMnO1xuaW1wb3J0IHR5cGUgeyBQbHVnaW5TZXR0aW5nc1Byb3BlcnR5IH0gZnJvbSAnLi9QbHVnaW5TZXR0aW5nc01hbmFnZXJCYXNlLnRzJztcblxuaW1wb3J0IHsgaW52b2tlQXN5bmNTYWZlbHkgfSBmcm9tICcuLi8uLi9Bc3luYy50cyc7XG5pbXBvcnQgeyBDc3NDbGFzcyB9IGZyb20gJy4uLy4uL0Nzc0NsYXNzLnRzJztcbmltcG9ydCB7IG5vb3AgfSBmcm9tICcuLi8uLi9GdW5jdGlvbi50cyc7XG5pbXBvcnQgeyBnZXRUZXh0QmFzZWRDb21wb25lbnRWYWx1ZSB9IGZyb20gJy4uL0NvbXBvbmVudHMvVGV4dEJhc2VkQ29tcG9uZW50LnRzJztcbmltcG9ydCB7IGdldFZhbGlkYXRvckNvbXBvbmVudCB9IGZyb20gJy4uL0NvbXBvbmVudHMvVmFsaWRhdG9yQ29tcG9uZW50LnRzJztcbmltcG9ydCB7IGlzVmFsaWRhdGlvbk1lc3NhZ2VIb2xkZXIgfSBmcm9tICcuLi9WYWxpZGF0aW9uTWVzc2FnZS50cyc7XG5pbXBvcnQgeyBnZXRQbHVnaW5JZCB9IGZyb20gJy4vUGx1Z2luSWQudHMnO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGJpbmRpbmcgYSB2YWx1ZSBjb21wb25lbnQgdG8gYSBwbHVnaW4gc2V0dGluZy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCaW5kT3B0aW9uczxUPiB7XG4gIC8qKlxuICAgKiBBIGNhbGxiYWNrIGZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIHdoZW4gdGhlIHZhbHVlIG9mIHRoZSBjb21wb25lbnQgY2hhbmdlcy5cbiAgICovXG4gIG9uQ2hhbmdlZD8obmV3VmFsdWU6IFQgfCB1bmRlZmluZWQsIG9sZFZhbHVlOiBUKTogUHJvbWlzYWJsZTx2b2lkPjtcblxuICAvKipcbiAgICogV2hldGhlciB0byByZXNldCB0aGUgc2V0dGluZyB3aGVuIHRoZSBjb21wb25lbnQgdmFsdWUgaXMgZW1wdHkuIERlZmF1bHQgaXMgYHRydWVgLlxuICAgKiBBcHBsaWNhYmxlIG9ubHkgdG8gdGV4dC1iYXNlZCBjb21wb25lbnRzLlxuICAgKi9cbiAgc2hvdWxkUmVzZXRTZXR0aW5nV2hlbkNvbXBvbmVudElzRW1wdHk/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHNob3cgdGhlIHZhbGlkYXRpb24gbWVzc2FnZSB3aGVuIHRoZSBjb21wb25lbnQgdmFsdWUgaXMgaW52YWxpZC4gRGVmYXVsdCBpcyBgdHJ1ZWAuXG4gICAqL1xuICBzaG91bGRTaG93VmFsaWRhdGlvbk1lc3NhZ2U/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEV4dGVuZGVkIG9wdGlvbnMgZm9yIGJpbmRpbmcgYSB2YWx1ZSBjb21wb25lbnQgdG8gYSBwbHVnaW4gc2V0dGluZy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCaW5kT3B0aW9uc0V4dGVuZGVkPFxuICBQbHVnaW5TZXR0aW5ncyBleHRlbmRzIG9iamVjdCxcbiAgVUlWYWx1ZSxcbiAgUHJvcGVydHlOYW1lIGV4dGVuZHMgU3RyaW5nS2V5czxQbHVnaW5TZXR0aW5ncz5cbj4gZXh0ZW5kcyBCaW5kT3B0aW9uczxQbHVnaW5TZXR0aW5nc1tQcm9wZXJ0eU5hbWVdPiB7XG4gIC8qKlxuICAgKiBDb252ZXJ0cyB0aGUgVUkgY29tcG9uZW50J3MgdmFsdWUgYmFjayB0byB0aGUgcGx1Z2luIHNldHRpbmdzIHZhbHVlLlxuICAgKiBAcGFyYW0gdWlWYWx1ZSAtIFRoZSB2YWx1ZSBvZiB0aGUgVUkgY29tcG9uZW50LlxuICAgKiBAcmV0dXJucyBUaGUgdmFsdWUgdG8gc2V0IG9uIHRoZSBwbHVnaW4gc2V0dGluZ3MuXG4gICAqL1xuICBjb21wb25lbnRUb1BsdWdpblNldHRpbmdzVmFsdWVDb252ZXJ0ZXI6ICh1aVZhbHVlOiBVSVZhbHVlKSA9PiBQbHVnaW5TZXR0aW5nc1tQcm9wZXJ0eU5hbWVdIHwgVmFsaWRhdGlvbk1lc3NhZ2VIb2xkZXI7XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIHRoZSBwbHVnaW4gc2V0dGluZ3MgdmFsdWUgdG8gdGhlIHZhbHVlIHVzZWQgYnkgdGhlIFVJIGNvbXBvbmVudC5cbiAgICogQHBhcmFtIHBsdWdpblNldHRpbmdzVmFsdWUgLSBUaGUgdmFsdWUgb2YgdGhlIHByb3BlcnR5IGluIHRoZSBwbHVnaW4gc2V0dGluZ3MuXG4gICAqIEByZXR1cm5zIFRoZSB2YWx1ZSB0byBzZXQgb24gdGhlIFVJIGNvbXBvbmVudC5cbiAgICovXG4gIHBsdWdpblNldHRpbmdzVG9Db21wb25lbnRWYWx1ZUNvbnZlcnRlcjogKHBsdWdpblNldHRpbmdzVmFsdWU6IFBsdWdpblNldHRpbmdzW1Byb3BlcnR5TmFtZV0pID0+IFVJVmFsdWU7XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG50eXBlIEV4dHJhY3RQbHVnaW5TZXR0aW5nczxQbHVnaW4gZXh0ZW5kcyBQbHVnaW5CYXNlPGFueT4+ID0gUGx1Z2luWydfX3BsdWdpblNldHRpbmdzVHlwZSddO1xuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIGNyZWF0aW5nIHBsdWdpbiBzZXR0aW5ncyB0YWJzIGluIE9ic2lkaWFuLlxuICogUHJvdmlkZXMgYSBtZXRob2QgZm9yIGJpbmRpbmcgdmFsdWUgY29tcG9uZW50cyB0byBwbHVnaW4gc2V0dGluZ3MgYW5kIGhhbmRsaW5nIGNoYW5nZXMuXG4gKlxuICogQHR5cGVQYXJhbSBUUGx1Z2luIC0gVGhlIHR5cGUgb2YgdGhlIHBsdWdpbiB0aGF0IGV4dGVuZHMgUGx1Z2luQmFzZS5cbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBQbHVnaW5TZXR0aW5nc1RhYkJhc2U8VFBsdWdpbiBleHRlbmRzIFBsdWdpbkJhc2U8YW55Pj4gZXh0ZW5kcyBQbHVnaW5TZXR0aW5nVGFiIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKHB1YmxpYyBvdmVycmlkZSBwbHVnaW46IFRQbHVnaW4pIHtcbiAgICBzdXBlcihwbHVnaW4uYXBwLCBwbHVnaW4pO1xuICAgIHRoaXMuY29udGFpbmVyRWwuYWRkQ2xhc3MoQ3NzQ2xhc3MuTGlicmFyeU5hbWUsIGdldFBsdWdpbklkKCksIENzc0NsYXNzLlBsdWdpblNldHRpbmdzVGFiKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCaW5kcyBhIHZhbHVlIGNvbXBvbmVudCB0byBhIHBsdWdpbiBzZXR0aW5nLlxuICAgKlxuICAgKiBAdHlwZVBhcmFtIFVJVmFsdWUgLSBUaGUgdHlwZSBvZiB0aGUgdmFsdWUgb2YgdGhlIFVJIGNvbXBvbmVudC5cbiAgICogQHR5cGVQYXJhbSBUVmFsdWVDb21wb25lbnQgLSBUaGUgdHlwZSBvZiB0aGUgdmFsdWUgY29tcG9uZW50LlxuICAgKiBAcGFyYW0gdmFsdWVDb21wb25lbnQgLSBUaGUgdmFsdWUgY29tcG9uZW50IHRvIGJpbmQuXG4gICAqIEBwYXJhbSBwcm9wZXJ0eU5hbWUgLSBUaGUgcHJvcGVydHkgb2YgdGhlIHBsdWdpbiBzZXR0aW5ncyB0byBiaW5kIHRvLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciBiaW5kaW5nIHRoZSB2YWx1ZSBjb21wb25lbnQuXG4gICAqIEByZXR1cm5zIFRoZSB2YWx1ZSBjb21wb25lbnQuXG4gICAqL1xuICBwdWJsaWMgYmluZDxcbiAgICBVSVZhbHVlLFxuICAgIFRWYWx1ZUNvbXBvbmVudFxuICA+KFxuICAgIHZhbHVlQ29tcG9uZW50OiBUVmFsdWVDb21wb25lbnQgJiBWYWx1ZUNvbXBvbmVudFdpdGhDaGFuZ2VUcmFja2luZzxVSVZhbHVlPixcbiAgICBwcm9wZXJ0eU5hbWU6IENvbmRpdGlvbmFsS2V5czxFeHRyYWN0UGx1Z2luU2V0dGluZ3M8VFBsdWdpbj4sIFVJVmFsdWU+LFxuICAgIG9wdGlvbnM/OiBCaW5kT3B0aW9uczxVSVZhbHVlPlxuICApOiBUVmFsdWVDb21wb25lbnQ7XG4gIC8qKlxuICAgKiBCaW5kcyBhIHZhbHVlIGNvbXBvbmVudCB0byBhIHBsdWdpbiBzZXR0aW5nLlxuICAgKlxuICAgKiBAdHlwZVBhcmFtIFVJVmFsdWUgLSBUaGUgdHlwZSBvZiB0aGUgdmFsdWUgb2YgdGhlIFVJIGNvbXBvbmVudC5cbiAgICogQHR5cGVQYXJhbSBUVmFsdWVDb21wb25lbnQgLSBUaGUgdHlwZSBvZiB0aGUgdmFsdWUgY29tcG9uZW50LlxuICAgKiBAdHlwZVBhcmFtIFByb3BlcnR5TmFtZSAtIFRoZSBwcm9wZXJ0eSBuYW1lIG9mIHRoZSBwbHVnaW4gc2V0dGluZ3MgdG8gYmluZCB0by5cbiAgICogQHBhcmFtIHZhbHVlQ29tcG9uZW50IC0gVGhlIHZhbHVlIGNvbXBvbmVudCB0byBiaW5kLlxuICAgKiBAcGFyYW0gcHJvcGVydHlOYW1lIC0gVGhlIHByb3BlcnR5IG5hbWUgb2YgdGhlIHBsdWdpbiBzZXR0aW5ncyB0byBiaW5kIHRvLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciBiaW5kaW5nIHRoZSB2YWx1ZSBjb21wb25lbnQuXG4gICAqIEByZXR1cm5zIFRoZSB2YWx1ZSBjb21wb25lbnQuXG4gICAqL1xuICBwdWJsaWMgYmluZDxcbiAgICBVSVZhbHVlLFxuICAgIFRWYWx1ZUNvbXBvbmVudCxcbiAgICBQcm9wZXJ0eU5hbWUgZXh0ZW5kcyBTdHJpbmdLZXlzPEV4dHJhY3RQbHVnaW5TZXR0aW5nczxUUGx1Z2luPj5cbiAgPihcbiAgICB2YWx1ZUNvbXBvbmVudDogVFZhbHVlQ29tcG9uZW50ICYgVmFsdWVDb21wb25lbnRXaXRoQ2hhbmdlVHJhY2tpbmc8VUlWYWx1ZT4sXG4gICAgcHJvcGVydHlOYW1lOiBQcm9wZXJ0eU5hbWUsXG4gICAgb3B0aW9uczogQmluZE9wdGlvbnNFeHRlbmRlZDxFeHRyYWN0UGx1Z2luU2V0dGluZ3M8VFBsdWdpbj4sIFVJVmFsdWUsIFByb3BlcnR5TmFtZT5cbiAgKTogVFZhbHVlQ29tcG9uZW50O1xuICAvKipcbiAgICogQmluZHMgYSB2YWx1ZSBjb21wb25lbnQgdG8gYSBwbHVnaW4gc2V0dGluZy5cbiAgICpcbiAgICogQHR5cGVQYXJhbSBVSVZhbHVlIC0gVGhlIHR5cGUgb2YgdGhlIHZhbHVlIG9mIHRoZSBVSSBjb21wb25lbnQuXG4gICAqIEB0eXBlUGFyYW0gVFZhbHVlQ29tcG9uZW50IC0gVGhlIHR5cGUgb2YgdGhlIHZhbHVlIGNvbXBvbmVudC5cbiAgICogQHR5cGVQYXJhbSBQcm9wZXJ0eU5hbWUgLSBUaGUgcHJvcGVydHkgbmFtZSBvZiB0aGUgcGx1Z2luIHNldHRpbmdzIHRvIGJpbmQgdG8uXG4gICAqIEBwYXJhbSB2YWx1ZUNvbXBvbmVudCAtIFRoZSB2YWx1ZSBjb21wb25lbnQgdG8gYmluZC5cbiAgICogQHBhcmFtIHByb3BlcnR5TmFtZSAtIFRoZSBwcm9wZXJ0eSBuYW1lIG9mIHRoZSBwbHVnaW4gc2V0dGluZ3MgdG8gYmluZCB0by5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgYmluZGluZyB0aGUgdmFsdWUgY29tcG9uZW50LlxuICAgKiBAcmV0dXJucyBUaGUgdmFsdWUgY29tcG9uZW50LlxuICAgKi9cbiAgcHVibGljIGJpbmQ8XG4gICAgVUlWYWx1ZSxcbiAgICBUVmFsdWVDb21wb25lbnQsXG4gICAgUHJvcGVydHlOYW1lIGV4dGVuZHMgU3RyaW5nS2V5czxFeHRyYWN0UGx1Z2luU2V0dGluZ3M8VFBsdWdpbj4+XG4gID4oXG4gICAgdmFsdWVDb21wb25lbnQ6IFRWYWx1ZUNvbXBvbmVudCAmIFZhbHVlQ29tcG9uZW50V2l0aENoYW5nZVRyYWNraW5nPFVJVmFsdWU+LFxuICAgIHByb3BlcnR5TmFtZTogUHJvcGVydHlOYW1lLFxuICAgIG9wdGlvbnM/OiBCaW5kT3B0aW9uczxFeHRyYWN0UGx1Z2luU2V0dGluZ3M8VFBsdWdpbj5bUHJvcGVydHlOYW1lXT5cbiAgKTogVFZhbHVlQ29tcG9uZW50IHtcbiAgICB0eXBlIFBsdWdpblNldHRpbmdzID0gRXh0cmFjdFBsdWdpblNldHRpbmdzPFRQbHVnaW4+O1xuICAgIHR5cGUgUHJvcGVydHlUeXBlID0gUGx1Z2luU2V0dGluZ3NbUHJvcGVydHlOYW1lXTtcbiAgICBjb25zdCBERUZBVUxUX09QVElPTlM6IFJlcXVpcmVkPEJpbmRPcHRpb25zRXh0ZW5kZWQ8UGx1Z2luU2V0dGluZ3MsIFVJVmFsdWUsIFByb3BlcnR5TmFtZT4+ID0ge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtcmV0dXJuXG4gICAgICBjb21wb25lbnRUb1BsdWdpblNldHRpbmdzVmFsdWVDb252ZXJ0ZXI6ICh2YWx1ZTogVUlWYWx1ZSk6IFByb3BlcnR5VHlwZSA9PiB2YWx1ZSBhcyBQcm9wZXJ0eVR5cGUsXG4gICAgICBvbkNoYW5nZWQ6IG5vb3AsXG4gICAgICBwbHVnaW5TZXR0aW5nc1RvQ29tcG9uZW50VmFsdWVDb252ZXJ0ZXI6ICh2YWx1ZTogUHJvcGVydHlUeXBlKTogVUlWYWx1ZSA9PiB2YWx1ZSBhcyBVSVZhbHVlLFxuICAgICAgc2hvdWxkUmVzZXRTZXR0aW5nV2hlbkNvbXBvbmVudElzRW1wdHk6IHRydWUsXG4gICAgICBzaG91bGRTaG93VmFsaWRhdGlvbk1lc3NhZ2U6IHRydWVcbiAgICB9O1xuXG4gICAgY29uc3Qgb3B0aW9uc0V4dDogUmVxdWlyZWQ8QmluZE9wdGlvbnNFeHRlbmRlZDxQbHVnaW5TZXR0aW5ncywgVUlWYWx1ZSwgUHJvcGVydHlOYW1lPj4gPSB7IC4uLkRFRkFVTFRfT1BUSU9OUywgLi4ub3B0aW9ucyB9O1xuXG4gICAgY29uc3QgdmFsaWRhdG9yRWxlbWVudCA9IGdldFZhbGlkYXRvckNvbXBvbmVudCh2YWx1ZUNvbXBvbmVudCk/LnZhbGlkYXRvckVsO1xuXG4gICAgY29uc3QgcHJvcGVydHkgPSB0aGlzLnBsdWdpbi5zZXR0aW5nc01hbmFnZXIuZ2V0UHJvcGVydHkocHJvcGVydHlOYW1lKSBhcyBQbHVnaW5TZXR0aW5nc1Byb3BlcnR5PFByb3BlcnR5VHlwZT47XG5cbiAgICBjb25zdCB2YWx1ZSA9IHByb3BlcnR5LmN1cnJlbnRWYWx1ZTtcblxuICAgIGNvbnN0IHRleHRCYXNlZENvbXBvbmVudCA9IGdldFRleHRCYXNlZENvbXBvbmVudFZhbHVlKHZhbHVlQ29tcG9uZW50KTtcbiAgICB0ZXh0QmFzZWRDb21wb25lbnQ/LnNldFBsYWNlaG9sZGVyVmFsdWUob3B0aW9uc0V4dC5wbHVnaW5TZXR0aW5nc1RvQ29tcG9uZW50VmFsdWVDb252ZXJ0ZXIocHJvcGVydHkuZGVmYXVsdFZhbHVlKSk7XG5cbiAgICBpZiAocHJvcGVydHkuY3VycmVudFZhbHVlID09PSBwcm9wZXJ0eS5kZWZhdWx0VmFsdWUgJiYgdGV4dEJhc2VkQ29tcG9uZW50ICYmIG9wdGlvbnNFeHQuc2hvdWxkUmVzZXRTZXR0aW5nV2hlbkNvbXBvbmVudElzRW1wdHkpIHtcbiAgICAgIHRleHRCYXNlZENvbXBvbmVudC5lbXB0eSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZUNvbXBvbmVudC5zZXRWYWx1ZShvcHRpb25zRXh0LnBsdWdpblNldHRpbmdzVG9Db21wb25lbnRWYWx1ZUNvbnZlcnRlcih2YWx1ZSkpO1xuICAgIH1cblxuICAgIHZhbHVlQ29tcG9uZW50Lm9uQ2hhbmdlKGFzeW5jICh1aVZhbHVlKSA9PiB7XG4gICAgICBpZiAodGV4dEJhc2VkQ29tcG9uZW50Py5pc0VtcHR5KCkgJiYgb3B0aW9uc0V4dC5zaG91bGRSZXNldFNldHRpbmdXaGVuQ29tcG9uZW50SXNFbXB0eSkge1xuICAgICAgICBwcm9wZXJ0eS5yZXNldCgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG9sZFZhbHVlID0gcHJvcGVydHkuY3VycmVudFZhbHVlO1xuICAgICAgY29uc3QgY29udmVydGVkVmFsdWUgPSBvcHRpb25zRXh0LmNvbXBvbmVudFRvUGx1Z2luU2V0dGluZ3NWYWx1ZUNvbnZlcnRlcih1aVZhbHVlKTtcbiAgICAgIGlmIChpc1ZhbGlkYXRpb25NZXNzYWdlSG9sZGVyKGNvbnZlcnRlZFZhbHVlKSkge1xuICAgICAgICBwcm9wZXJ0eS5zZXRWYWxpZGF0aW9uTWVzc2FnZShjb252ZXJ0ZWRWYWx1ZS52YWxpZGF0aW9uTWVzc2FnZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhd2FpdCBwcm9wZXJ0eS5zZXRWYWx1ZUFuZFZhbGlkYXRlKGNvbnZlcnRlZFZhbHVlKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IG5ld1ZhbHVlID0gaXNWYWxpZGF0aW9uTWVzc2FnZUhvbGRlcihjb252ZXJ0ZWRWYWx1ZSkgPyB1bmRlZmluZWQgOiBjb252ZXJ0ZWRWYWx1ZTtcbiAgICAgIGF3YWl0IG9wdGlvbnNFeHQub25DaGFuZ2VkKG5ld1ZhbHVlLCBvbGRWYWx1ZSk7XG4gICAgfSk7XG5cbiAgICB2YWxpZGF0b3JFbGVtZW50Py5hZGRFdmVudExpc3RlbmVyKCdmb2N1cycsIHZhbGlkYXRlKTtcbiAgICB2YWxpZGF0b3JFbGVtZW50Py5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgdmFsaWRhdGUpO1xuXG4gICAgdmFsaWRhdGUoKTtcbiAgICByZXR1cm4gdmFsdWVDb21wb25lbnQ7XG5cbiAgICBmdW5jdGlvbiB2YWxpZGF0ZSgpOiB2b2lkIHtcbiAgICAgIGlmICghdmFsaWRhdG9yRWxlbWVudCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICghcHJvcGVydHkudmFsaWRhdGlvbk1lc3NhZ2UpIHtcbiAgICAgICAgdmFsaWRhdG9yRWxlbWVudC5zZXRDdXN0b21WYWxpZGl0eSgnJyk7XG4gICAgICAgIHZhbGlkYXRvckVsZW1lbnQuY2hlY2tWYWxpZGl0eSgpO1xuICAgICAgICBwcm9wZXJ0eS5zZXRWYWxpZGF0aW9uTWVzc2FnZSh2YWxpZGF0b3JFbGVtZW50LnZhbGlkYXRpb25NZXNzYWdlKTtcbiAgICAgIH1cblxuICAgICAgdmFsaWRhdG9yRWxlbWVudC5zZXRDdXN0b21WYWxpZGl0eShwcm9wZXJ0eS52YWxpZGF0aW9uTWVzc2FnZSk7XG4gICAgICBzZXRUb29sdGlwKHZhbGlkYXRvckVsZW1lbnQsIHByb3BlcnR5LnZhbGlkYXRpb25NZXNzYWdlKTtcbiAgICAgIGlmICh2YWxpZGF0b3JFbGVtZW50LmlzQWN0aXZlRWxlbWVudCgpICYmIG9wdGlvbnNFeHQuc2hvdWxkU2hvd1ZhbGlkYXRpb25NZXNzYWdlKSB7XG4gICAgICAgIHZhbGlkYXRvckVsZW1lbnQucmVwb3J0VmFsaWRpdHkoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgaGlkZSgpOiB2b2lkIHtcbiAgICBzdXBlci5oaWRlKCk7XG4gICAgaW52b2tlQXN5bmNTYWZlbHkoKCkgPT4gdGhpcy5wbHVnaW4uc2V0dGluZ3NNYW5hZ2VyLnNhdmVUb0ZpbGUoKSk7XG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7QUFXQTtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQVFQLFNBQVMseUJBQXlCO0FBQ2xDLFNBQVMsZ0JBQWdCO0FBQ3pCLFNBQVMsWUFBWTtBQUNyQixTQUFTLGtDQUFrQztBQUMzQyxTQUFTLDZCQUE2QjtBQUN0QyxTQUFTLGlDQUFpQztBQUMxQyxTQUFTLG1CQUFtQjtBQXdEckIsTUFBZSw4QkFBK0QsaUJBQWlCO0FBQUEsRUFDN0YsWUFBNEIsUUFBaUI7QUFDbEQsVUFBTSxPQUFPLEtBQUssTUFBTTtBQURTO0FBRWpDLFNBQUssWUFBWSxTQUFTLFNBQVMsYUFBYSxZQUFZLEdBQUcsU0FBUyxpQkFBaUI7QUFBQSxFQUMzRjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQW1ETyxLQUtMLGdCQUNBLGNBQ0EsU0FDaUI7QUFHakIsVUFBTSxrQkFBd0Y7QUFBQTtBQUFBLE1BRTVGLHlDQUF5QyxDQUFDQSxXQUFpQ0E7QUFBQSxNQUMzRSxXQUFXO0FBQUEsTUFDWCx5Q0FBeUMsQ0FBQ0EsV0FBaUNBO0FBQUEsTUFDM0Usd0NBQXdDO0FBQUEsTUFDeEMsNkJBQTZCO0FBQUEsSUFDL0I7QUFFQSxVQUFNLGFBQW1GLEVBQUUsR0FBRyxpQkFBaUIsR0FBRyxRQUFRO0FBRTFILFVBQU0sbUJBQW1CLHNCQUFzQixjQUFjLEdBQUc7QUFFaEUsVUFBTSxXQUFXLEtBQUssT0FBTyxnQkFBZ0IsWUFBWSxZQUFZO0FBRXJFLFVBQU0sUUFBUSxTQUFTO0FBRXZCLFVBQU0scUJBQXFCLDJCQUEyQixjQUFjO0FBQ3BFLHdCQUFvQixvQkFBb0IsV0FBVyx3Q0FBd0MsU0FBUyxZQUFZLENBQUM7QUFFakgsUUFBSSxTQUFTLGlCQUFpQixTQUFTLGdCQUFnQixzQkFBc0IsV0FBVyx3Q0FBd0M7QUFDOUgseUJBQW1CLE1BQU07QUFBQSxJQUMzQixPQUFPO0FBQ0wscUJBQWUsU0FBUyxXQUFXLHdDQUF3QyxLQUFLLENBQUM7QUFBQSxJQUNuRjtBQUVBLG1CQUFlLFNBQVMsT0FBTyxZQUFZO0FBQ3pDLFVBQUksb0JBQW9CLFFBQVEsS0FBSyxXQUFXLHdDQUF3QztBQUN0RixpQkFBUyxNQUFNO0FBQ2Y7QUFBQSxNQUNGO0FBRUEsWUFBTSxXQUFXLFNBQVM7QUFDMUIsWUFBTSxpQkFBaUIsV0FBVyx3Q0FBd0MsT0FBTztBQUNqRixVQUFJLDBCQUEwQixjQUFjLEdBQUc7QUFDN0MsaUJBQVMscUJBQXFCLGVBQWUsaUJBQWlCO0FBQUEsTUFDaEUsT0FBTztBQUNMLGNBQU0sU0FBUyxvQkFBb0IsY0FBYztBQUFBLE1BQ25EO0FBQ0EsWUFBTSxXQUFXLDBCQUEwQixjQUFjLElBQUksU0FBWTtBQUN6RSxZQUFNLFdBQVcsVUFBVSxVQUFVLFFBQVE7QUFBQSxJQUMvQyxDQUFDO0FBRUQsc0JBQWtCLGlCQUFpQixTQUFTLFFBQVE7QUFDcEQsc0JBQWtCLGlCQUFpQixRQUFRLFFBQVE7QUFFbkQsYUFBUztBQUNULFdBQU87QUFFUCxhQUFTLFdBQWlCO0FBQ3hCLFVBQUksQ0FBQyxrQkFBa0I7QUFDckI7QUFBQSxNQUNGO0FBRUEsVUFBSSxDQUFDLFNBQVMsbUJBQW1CO0FBQy9CLHlCQUFpQixrQkFBa0IsRUFBRTtBQUNyQyx5QkFBaUIsY0FBYztBQUMvQixpQkFBUyxxQkFBcUIsaUJBQWlCLGlCQUFpQjtBQUFBLE1BQ2xFO0FBRUEsdUJBQWlCLGtCQUFrQixTQUFTLGlCQUFpQjtBQUM3RCxpQkFBVyxrQkFBa0IsU0FBUyxpQkFBaUI7QUFDdkQsVUFBSSxpQkFBaUIsZ0JBQWdCLEtBQUssV0FBVyw2QkFBNkI7QUFDaEYseUJBQWlCLGVBQWU7QUFBQSxNQUNsQztBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQUEsRUFFZ0IsT0FBYTtBQUMzQixVQUFNLEtBQUs7QUFDWCxzQkFBa0IsTUFBTSxLQUFLLE9BQU8sZ0JBQWdCLFdBQVcsQ0FBQztBQUFBLEVBQ2xFO0FBQ0Y7IiwKICAibmFtZXMiOiBbInZhbHVlIl0KfQo=
|