obsidian-dev-utils 22.1.1-beta.26 → 22.1.1-beta.27

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.
@@ -7,11 +7,12 @@ if you want to view the source, please visit the github repository of this plugi
7
7
 
8
8
  import {
9
9
  Notice,
10
- Plugin
10
+ Plugin as ObsidianPlugin
11
11
  } from "obsidian";
12
12
  import {
13
13
  convertAsyncToSync,
14
- invokeAsyncSafely
14
+ invokeAsyncSafely,
15
+ invokeAsyncSafelyAfterDelay
15
16
  } from "../../Async.mjs";
16
17
  import { AsyncEvents } from "../../AsyncEvents.mjs";
17
18
  import { getDebugger } from "../../Debug.mjs";
@@ -19,7 +20,7 @@ import { registerAsyncErrorEventHandler } from "../../Error.mjs";
19
20
  import { noop } from "../../Function.mjs";
20
21
  import { initPluginContext } from "./PluginContext.mjs";
21
22
  import { PluginSettingsManagerBase } from "./PluginSettingsManagerBase.mjs";
22
- class PluginBase extends Plugin {
23
+ class PluginBase extends ObsidianPlugin {
23
24
  events = new AsyncEvents();
24
25
  /**
25
26
  * Gets the AbortSignal used for aborting long-running operations.
@@ -68,35 +69,16 @@ class PluginBase extends Plugin {
68
69
  * Called when the external settings change.
69
70
  */
70
71
  async onExternalSettingsChange() {
72
+ await super.onExternalSettingsChange?.();
71
73
  await this.settingsManager.loadFromFile();
72
74
  }
73
75
  /**
74
76
  * Called when the plugin is loaded
75
77
  */
76
78
  async onload() {
77
- initPluginContext(this.app, this.manifest.id);
78
- this.register(registerAsyncErrorEventHandler(() => {
79
- this.showNotice("An unhandled error occurred. Please check the console for more information.");
80
- }));
81
- this._settingsManager = this.createSettingsManager();
82
- await this.onExternalSettingsChange();
83
- const pluginSettingsTab = this.createPluginSettingsTab();
84
- if (pluginSettingsTab) {
85
- this.addSettingTab(pluginSettingsTab);
86
- }
87
- const abortController = new AbortController();
88
- this._abortSignal = abortController.signal;
89
- this.register(() => {
90
- abortController.abort();
91
- });
92
- await this.onloadComplete();
93
- await this.triggerLifecycleEvent("loadComplete");
94
- setTimeout(() => {
95
- this.app.workspace.onLayoutReady(convertAsyncToSync(async () => {
96
- await this.onLayoutReady();
97
- await this.triggerLifecycleEvent("layoutReady");
98
- }));
99
- }, 0);
79
+ await super.onload();
80
+ await this.onloadImpl();
81
+ invokeAsyncSafelyAfterDelay(this.afterLoad.bind(this));
100
82
  }
101
83
  /**
102
84
  * Called when the plugin settings are loaded or reloaded.
@@ -116,7 +98,14 @@ class PluginBase extends Plugin {
116
98
  noop();
117
99
  }
118
100
  onunload() {
119
- invokeAsyncSafely(() => this.triggerLifecycleEvent("unload"));
101
+ super.onunload();
102
+ invokeAsyncSafely(async () => {
103
+ try {
104
+ await this.onunloadImpl();
105
+ } finally {
106
+ await this.triggerLifecycleEvent("unload");
107
+ }
108
+ });
120
109
  }
121
110
  /**
122
111
  * Registers an async event.
@@ -172,11 +161,27 @@ class PluginBase extends Plugin {
172
161
  onLayoutReady() {
173
162
  noop();
174
163
  }
164
+ async onloadImpl() {
165
+ initPluginContext(this.app, this.manifest.id);
166
+ this.register(registerAsyncErrorEventHandler(() => {
167
+ this.showNotice("An unhandled error occurred. Please check the console for more information.");
168
+ }));
169
+ this._settingsManager = this.createSettingsManager();
170
+ await this.onExternalSettingsChange();
171
+ const pluginSettingsTab = this.createPluginSettingsTab();
172
+ if (pluginSettingsTab) {
173
+ this.addSettingTab(pluginSettingsTab);
174
+ }
175
+ const abortController = new AbortController();
176
+ this._abortSignal = abortController.signal;
177
+ this.register(() => {
178
+ abortController.abort();
179
+ });
180
+ }
175
181
  /**
176
- * Called when the plugin loading is complete. This method must be implemented by subclasses to perform
177
- * any additional setup required after loading is complete.
182
+ * Called when the plugin is unloaded.
178
183
  */
179
- onloadComplete() {
184
+ onunloadImpl() {
180
185
  noop();
181
186
  }
182
187
  /**
@@ -191,6 +196,17 @@ class PluginBase extends Plugin {
191
196
  this.notice = new Notice(`${this.manifest.name}
192
197
  ${message}`);
193
198
  }
199
+ async afterLoad() {
200
+ await this.triggerLifecycleEvent("load");
201
+ this.app.workspace.onLayoutReady(convertAsyncToSync(this.onLayoutReadyBase.bind(this)));
202
+ }
203
+ async onLayoutReadyBase() {
204
+ try {
205
+ await this.onLayoutReady();
206
+ } finally {
207
+ await this.triggerLifecycleEvent("layoutReady");
208
+ }
209
+ }
194
210
  async triggerLifecycleEvent(name) {
195
211
  this.lifecycleEventNames.add(name);
196
212
  await this.events.triggerAsync(name);
@@ -199,4 +215,4 @@ ${message}`);
199
215
  export {
200
216
  PluginBase
201
217
  };
202
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL1BsdWdpbi9QbHVnaW5CYXNlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIEJhc2UgY2xhc3MgZm9yIE9ic2lkaWFuIHBsdWdpbnMgcHJvdmlkaW5nIHV0aWxpdHkgbWV0aG9kcyBmb3Igc2V0dGluZ3MgbWFuYWdlbWVudCwgZXJyb3IgaGFuZGxpbmcsIGFuZCBub3RpZmljYXRpb25zLlxuICpcbiAqIFRoaXMgY2xhc3Mgc2ltcGxpZmllcyB0aGUgcHJvY2VzcyBvZiBtYW5hZ2luZyBwbHVnaW4gc2V0dGluZ3MsIGRpc3BsYXlpbmcgbm90aWZpY2F0aW9ucywgYW5kIGhhbmRsaW5nIGVycm9ycy5cbiAqIFN1YmNsYXNzZXMgc2hvdWxkIGltcGxlbWVudCBtZXRob2RzIHRvIGNyZWF0ZSBkZWZhdWx0IHNldHRpbmdzIGFuZCBzZXR0aW5ncyB0YWJzLCBhbmQgY29tcGxldGUgcGx1Z2luLXNwZWNpZmljXG4gKiBsb2FkaW5nIHRhc2tzLlxuICovXG5cbmltcG9ydCB0eXBlIHsgUGx1Z2luU2V0dGluZ1RhYiB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHtcbiAgUHJvbWlzYWJsZSxcbiAgUmVhZG9ubHlEZWVwXG59IGZyb20gJ3R5cGUtZmVzdCc7XG5cbmltcG9ydCB7XG4gIE5vdGljZSxcbiAgUGx1Z2luXG59IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBBc3luY0V2ZW50UmVmIH0gZnJvbSAnLi4vLi4vQXN5bmNFdmVudHMudHMnO1xuXG5pbXBvcnQge1xuICBjb252ZXJ0QXN5bmNUb1N5bmMsXG4gIGludm9rZUFzeW5jU2FmZWx5XG59IGZyb20gJy4uLy4uL0FzeW5jLnRzJztcbmltcG9ydCB7IEFzeW5jRXZlbnRzIH0gZnJvbSAnLi4vLi4vQXN5bmNFdmVudHMudHMnO1xuaW1wb3J0IHsgZ2V0RGVidWdnZXIgfSBmcm9tICcuLi8uLi9EZWJ1Zy50cyc7XG5pbXBvcnQgeyByZWdpc3RlckFzeW5jRXJyb3JFdmVudEhhbmRsZXIgfSBmcm9tICcuLi8uLi9FcnJvci50cyc7XG5pbXBvcnQgeyBub29wIH0gZnJvbSAnLi4vLi4vRnVuY3Rpb24udHMnO1xuaW1wb3J0IHsgaW5pdFBsdWdpbkNvbnRleHQgfSBmcm9tICcuL1BsdWdpbkNvbnRleHQudHMnO1xuaW1wb3J0IHsgUGx1Z2luU2V0dGluZ3NNYW5hZ2VyQmFzZSB9IGZyb20gJy4vUGx1Z2luU2V0dGluZ3NNYW5hZ2VyQmFzZS50cyc7XG5cbnR5cGUgTGlmZWN5Y2xlRXZlbnROYW1lID0gJ2xheW91dFJlYWR5JyB8ICdsb2FkQ29tcGxldGUnIHwgJ3VubG9hZCc7XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgY3JlYXRpbmcgT2JzaWRpYW4gcGx1Z2lucyB3aXRoIGJ1aWx0LWluIHN1cHBvcnQgZm9yIHNldHRpbmdzIG1hbmFnZW1lbnQsIGVycm9yIGhhbmRsaW5nLCBhbmQgbm90aWZpY2F0aW9ucy5cbiAqXG4gKiBAdHlwZVBhcmFtIFBsdWdpblNldHRpbmdzIC0gVGhlIHR5cGUgcmVwcmVzZW50aW5nIHRoZSBwbHVnaW4gc2V0dGluZ3Mgb2JqZWN0LlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUGx1Z2luQmFzZTxQbHVnaW5TZXR0aW5ncyBleHRlbmRzIG9iamVjdCA9IG9iamVjdD4gZXh0ZW5kcyBQbHVnaW4ge1xuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlZCBvbmx5IGZvciB0eXBlIGluZmVyZW5jZS4gRG9uJ3QgdXNlIGl0IGRpcmVjdGx5LlxuICAgKi9cbiAgZGVjbGFyZSBwdWJsaWMgX19wbHVnaW5TZXR0aW5nc1R5cGU6IFBsdWdpblNldHRpbmdzO1xuXG4gIHB1YmxpYyByZWFkb25seSBldmVudHMgPSBuZXcgQXN5bmNFdmVudHMoKTtcblxuICAvKipcbiAgICogR2V0cyB0aGUgQWJvcnRTaWduYWwgdXNlZCBmb3IgYWJvcnRpbmcgbG9uZy1ydW5uaW5nIG9wZXJhdGlvbnMuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBhYm9ydCBzaWduYWwuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGFib3J0U2lnbmFsKCk6IEFib3J0U2lnbmFsIHtcbiAgICByZXR1cm4gdGhpcy5fYWJvcnRTaWduYWw7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgcmVhZG9ubHkgcGx1Z2luIHNldHRpbmdzLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgcmVhZG9ubHkgcGx1Z2luIHNldHRpbmdzLlxuICAgKi9cbiAgcHVibGljIGdldCBzZXR0aW5ncygpOiBSZWFkb25seURlZXA8UGx1Z2luU2V0dGluZ3M+IHtcbiAgICByZXR1cm4gdGhpcy5zZXR0aW5nc01hbmFnZXIuc2FmZVNldHRpbmdzO1xuICB9XG5cbiAgcHVibGljIGdldCBzZXR0aW5nc01hbmFnZXIoKTogUGx1Z2luU2V0dGluZ3NNYW5hZ2VyQmFzZTxQbHVnaW5TZXR0aW5ncz4ge1xuICAgIGlmICghdGhpcy5fc2V0dGluZ3NNYW5hZ2VyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NldHRpbmdzIG1hbmFnZXIgbm90IGRlZmluZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fc2V0dGluZ3NNYW5hZ2VyO1xuICB9XG5cbiAgcHJpdmF0ZSBfYWJvcnRTaWduYWwhOiBBYm9ydFNpZ25hbDtcbiAgcHJpdmF0ZSBfc2V0dGluZ3NNYW5hZ2VyOiBudWxsIHwgUGx1Z2luU2V0dGluZ3NNYW5hZ2VyQmFzZTxQbHVnaW5TZXR0aW5ncz4gPSBudWxsO1xuICBwcml2YXRlIGxpZmVjeWNsZUV2ZW50TmFtZXMgPSBuZXcgU2V0PExpZmVjeWNsZUV2ZW50TmFtZT4oKTtcbiAgcHJpdmF0ZSBub3RpY2U/OiBOb3RpY2U7XG5cbiAgLyoqXG4gICAqIExvZ3MgYSBtZXNzYWdlIHRvIHRoZSBjb25zb2xlLlxuICAgKlxuICAgKiBVc2UgaW5zdGVhZCBvZiBgY29uc29sZS5kZWJ1ZygpYC5cbiAgICpcbiAgICogVGhvc2UgbWVzc2FnZXMgYXJlIG5vdCBzaG93biBieSBkZWZhdWx0LCBidXQgdGhleSBjYW4gYmUgc2hvd24gYnkgZW5hYmxpbmcgYHlvdXItcGx1Z2luLWlkYCBkZWJ1Z2dlciBuYW1lc3BhY2UuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9tbmFvdW1vdi9vYnNpZGlhbi1kZXYtdXRpbHMvP3RhYj1yZWFkbWUtb3YtZmlsZSNkZWJ1Z2dpbmd9IGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gbWVzc2FnZSAtIFRoZSBtZXNzYWdlIHRvIGxvZy5cbiAgICogQHBhcmFtIGFyZ3MgLSBUaGUgYXJndW1lbnRzIHRvIGxvZy5cbiAgICovXG4gIHB1YmxpYyBjb25zb2xlRGVidWcobWVzc2FnZTogc3RyaW5nLCAuLi5hcmdzOiB1bmtub3duW10pOiB2b2lkIHtcbiAgICAvLyBTa2lwIHRoZSBgY29uc29sZURlYnVnKClgIGNhbGwgaXRzZWxmXG4gICAgY29uc3QgRlJBTUVTX1RPX1NLSVAgPSAxO1xuICAgIGNvbnN0IF9kZWJ1Z2dlciA9IGdldERlYnVnZ2VyKHRoaXMubWFuaWZlc3QuaWQsIEZSQU1FU19UT19TS0lQKTtcbiAgICBfZGVidWdnZXIobWVzc2FnZSwgLi4uYXJncyk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gdGhlIGV4dGVybmFsIHNldHRpbmdzIGNoYW5nZS5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBhc3luYyBvbkV4dGVybmFsU2V0dGluZ3NDaGFuZ2UoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5zZXR0aW5nc01hbmFnZXIubG9hZEZyb21GaWxlKCk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gdGhlIHBsdWdpbiBpcyBsb2FkZWRcbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBhc3luYyBvbmxvYWQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaW5pdFBsdWdpbkNvbnRleHQodGhpcy5hcHAsIHRoaXMubWFuaWZlc3QuaWQpO1xuXG4gICAgdGhpcy5yZWdpc3RlcihyZWdpc3RlckFzeW5jRXJyb3JFdmVudEhhbmRsZXIoKCkgPT4ge1xuICAgICAgdGhpcy5zaG93Tm90aWNlKCdBbiB1bmhhbmRsZWQgZXJyb3Igb2NjdXJyZWQuIFBsZWFzZSBjaGVjayB0aGUgY29uc29sZSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4nKTtcbiAgICB9KSk7XG5cbiAgICB0aGlzLl9zZXR0aW5nc01hbmFnZXIgPSB0aGlzLmNyZWF0ZVNldHRpbmdzTWFuYWdlcigpO1xuXG4gICAgYXdhaXQgdGhpcy5vbkV4dGVybmFsU2V0dGluZ3NDaGFuZ2UoKTtcbiAgICBjb25zdCBwbHVnaW5TZXR0aW5nc1RhYiA9IHRoaXMuY3JlYXRlUGx1Z2luU2V0dGluZ3NUYWIoKTtcbiAgICBpZiAocGx1Z2luU2V0dGluZ3NUYWIpIHtcbiAgICAgIHRoaXMuYWRkU2V0dGluZ1RhYihwbHVnaW5TZXR0aW5nc1RhYik7XG4gICAgfVxuXG4gICAgY29uc3QgYWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIHRoaXMuX2Fib3J0U2lnbmFsID0gYWJvcnRDb250cm9sbGVyLnNpZ25hbDtcbiAgICB0aGlzLnJlZ2lzdGVyKCgpID0+IHtcbiAgICAgIGFib3J0Q29udHJvbGxlci5hYm9ydCgpO1xuICAgIH0pO1xuICAgIGF3YWl0IHRoaXMub25sb2FkQ29tcGxldGUoKTtcbiAgICBhd2FpdCB0aGlzLnRyaWdnZXJMaWZlY3ljbGVFdmVudCgnbG9hZENvbXBsZXRlJyk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmFwcC53b3Jrc3BhY2Uub25MYXlvdXRSZWFkeShjb252ZXJ0QXN5bmNUb1N5bmMoYXN5bmMgKCkgPT4ge1xuICAgICAgICBhd2FpdCB0aGlzLm9uTGF5b3V0UmVhZHkoKTtcbiAgICAgICAgYXdhaXQgdGhpcy50cmlnZ2VyTGlmZWN5Y2xlRXZlbnQoJ2xheW91dFJlYWR5Jyk7XG4gICAgICB9KSk7XG4gICAgfSwgMCk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gdGhlIHBsdWdpbiBzZXR0aW5ncyBhcmUgbG9hZGVkIG9yIHJlbG9hZGVkLlxuICAgKlxuICAgKiBAcGFyYW0gX3NldHRpbmdzIC0gVGhlIHNldHRpbmdzLlxuICAgKi9cbiAgcHVibGljIG9uTG9hZFNldHRpbmdzKF9zZXR0aW5nczogUGx1Z2luU2V0dGluZ3MpOiBQcm9taXNhYmxlPHZvaWQ+IHtcbiAgICBub29wKCk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gdGhlIHBsdWdpbiBzZXR0aW5ncyBhcmUgc2F2ZWQuXG4gICAqXG4gICAqIEBwYXJhbSBfbmV3U2V0dGluZ3MgLSBUaGUgbmV3IHNldHRpbmdzLlxuICAgKiBAcGFyYW0gX29sZFNldHRpbmdzIC0gVGhlIG9sZCBzZXR0aW5ncy5cbiAgICovXG4gIHB1YmxpYyBvblNhdmVTZXR0aW5ncyhfbmV3U2V0dGluZ3M6IFBsdWdpblNldHRpbmdzLCBfb2xkU2V0dGluZ3M6IFBsdWdpblNldHRpbmdzKTogUHJvbWlzYWJsZTx2b2lkPiB7XG4gICAgbm9vcCgpO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIG9udW5sb2FkKCk6IHZvaWQge1xuICAgIGludm9rZUFzeW5jU2FmZWx5KCgpID0+IHRoaXMudHJpZ2dlckxpZmVjeWNsZUV2ZW50KCd1bmxvYWQnKSk7XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXJzIGFuIGFzeW5jIGV2ZW50LlxuICAgKiBVbnJlZ2lzdGVycyB0aGUgZXZlbnQgd2hlbiB0aGUgcGx1Z2luIGlzIHVubG9hZGVkLlxuICAgKlxuICAgKiBAcGFyYW0gZXZlbnRSZWYgLSBUaGUgZXZlbnQgcmVmZXJlbmNlLlxuICAgKi9cbiAgcHVibGljIHJlZ2lzdGVyQXN5bmNFdmVudChldmVudFJlZjogQXN5bmNFdmVudFJlZik6IHZvaWQge1xuICAgIHRoaXMucmVnaXN0ZXIoKCkgPT4ge1xuICAgICAgZXZlbnRSZWYuYXN5bmNFdmVudHMub2ZmcmVmKGV2ZW50UmVmKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXYWl0cyBmb3IgYSBsaWZlY3ljbGUgZXZlbnQgdG8gYmUgdHJpZ2dlcmVkLlxuICAgKlxuICAgKiBJZiB5b3UgYGF3YWl0YCB0aGlzIG1ldGhvZCBkdXJpbmcgbGlmZWN5Y2xlIGV2ZW50LCBpdCBtaWdodCBjYXVzZSBhIGRlYWRsb2NrLlxuICAgKlxuICAgKiBDb25zaWRlciB3cmFwcGluZyB0aGlzIGNhbGwgd2l0aCB7QGxpbmsgaW52b2tlQXN5bmNTYWZlbHl9LlxuICAgKlxuICAgKiBAcGFyYW0gbmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBldmVudC5cbiAgICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBldmVudCBpcyB0cmlnZ2VyZWQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgd2FpdEZvckxpZmVjeWNsZUV2ZW50KG5hbWU6IExpZmVjeWNsZUV2ZW50TmFtZSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLmxpZmVjeWNsZUV2ZW50TmFtZXMuaGFzKG5hbWUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgYXdhaXQgbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUpID0+IHtcbiAgICAgIHRoaXMuZXZlbnRzLm9uY2UobmFtZSwgKCkgPT4ge1xuICAgICAgICByZXNvbHZlKCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgcGx1Z2luIHNldHRpbmdzIHRhYi5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIHNldHRpbmdzIHRhYiBvciBudWxsIGlmIG5vdCBhcHBsaWNhYmxlLlxuICAgKi9cbiAgcHJvdGVjdGVkIGNyZWF0ZVBsdWdpblNldHRpbmdzVGFiKCk6IG51bGwgfCBQbHVnaW5TZXR0aW5nVGFiIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIHRoZSBwbHVnaW4gc2V0dGluZ3MgbWFuYWdlci4gVGhpcyBtZXRob2QgbXVzdCBiZSBpbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgcGx1Z2luIHNldHRpbmdzIG1hbmFnZXIuXG4gICAqL1xuICBwcm90ZWN0ZWQgY3JlYXRlU2V0dGluZ3NNYW5hZ2VyKCk6IG51bGwgfCBQbHVnaW5TZXR0aW5nc01hbmFnZXJCYXNlPFBsdWdpblNldHRpbmdzPiB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gdGhlIGxheW91dCBpcyByZWFkeS4gVGhpcyBtZXRob2QgY2FuIGJlIG92ZXJyaWRkZW4gYnkgc3ViY2xhc3NlcyB0byBwZXJmb3JtIGFjdGlvbnMgb25jZVxuICAgKiB0aGUgbGF5b3V0IGlzIHJlYWR5LlxuICAgKi9cbiAgcHJvdGVjdGVkIG9uTGF5b3V0UmVhZHkoKTogUHJvbWlzYWJsZTx2b2lkPiB7XG4gICAgbm9vcCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIHRoZSBwbHVnaW4gbG9hZGluZyBpcyBjb21wbGV0ZS4gVGhpcyBtZXRob2QgbXVzdCBiZSBpbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzIHRvIHBlcmZvcm1cbiAgICogYW55IGFkZGl0aW9uYWwgc2V0dXAgcmVxdWlyZWQgYWZ0ZXIgbG9hZGluZyBpcyBjb21wbGV0ZS5cbiAgICovXG4gIHByb3RlY3RlZCBvbmxvYWRDb21wbGV0ZSgpOiBQcm9taXNhYmxlPHZvaWQ+IHtcbiAgICBub29wKCk7XG4gIH1cblxuICAvKipcbiAgICogRGlzcGxheXMgYSBub3RpY2UgbWVzc2FnZSB0byB0aGUgdXNlci5cbiAgICpcbiAgICogQHBhcmFtIG1lc3NhZ2UgLSBUaGUgbWVzc2FnZSB0byBkaXNwbGF5LlxuICAgKi9cbiAgcHJvdGVjdGVkIHNob3dOb3RpY2UobWVzc2FnZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubm90aWNlKSB7XG4gICAgICB0aGlzLm5vdGljZS5oaWRlKCk7XG4gICAgfVxuXG4gICAgdGhpcy5ub3RpY2UgPSBuZXcgTm90aWNlKGAke3RoaXMubWFuaWZlc3QubmFtZX1cXG4ke21lc3NhZ2V9YCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHRyaWdnZXJMaWZlY3ljbGVFdmVudChuYW1lOiBMaWZlY3ljbGVFdmVudE5hbWUpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmxpZmVjeWNsZUV2ZW50TmFtZXMuYWRkKG5hbWUpO1xuICAgIGF3YWl0IHRoaXMuZXZlbnRzLnRyaWdnZXJBc3luYyhuYW1lKTtcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7OztBQWdCQTtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUlQO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1AsU0FBUyxtQkFBbUI7QUFDNUIsU0FBUyxtQkFBbUI7QUFDNUIsU0FBUyxzQ0FBc0M7QUFDL0MsU0FBUyxZQUFZO0FBQ3JCLFNBQVMseUJBQXlCO0FBQ2xDLFNBQVMsaUNBQWlDO0FBU25DLE1BQWUsbUJBQTJELE9BQU87QUFBQSxFQU10RSxTQUFTLElBQUksWUFBWTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU96QyxJQUFXLGNBQTJCO0FBQ3BDLFdBQU8sS0FBSztBQUFBLEVBQ2Q7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPQSxJQUFXLFdBQXlDO0FBQ2xELFdBQU8sS0FBSyxnQkFBZ0I7QUFBQSxFQUM5QjtBQUFBLEVBRUEsSUFBVyxrQkFBNkQ7QUFDdEUsUUFBSSxDQUFDLEtBQUssa0JBQWtCO0FBQzFCLFlBQU0sSUFBSSxNQUFNLDhCQUE4QjtBQUFBLElBQ2hEO0FBRUEsV0FBTyxLQUFLO0FBQUEsRUFDZDtBQUFBLEVBRVE7QUFBQSxFQUNBLG1CQUFxRTtBQUFBLEVBQ3JFLHNCQUFzQixvQkFBSSxJQUF3QjtBQUFBLEVBQ2xEO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFjRCxhQUFhLFlBQW9CLE1BQXVCO0FBRTdELFVBQU0saUJBQWlCO0FBQ3ZCLFVBQU0sWUFBWSxZQUFZLEtBQUssU0FBUyxJQUFJLGNBQWM7QUFDOUQsY0FBVSxTQUFTLEdBQUcsSUFBSTtBQUFBLEVBQzVCO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLQSxNQUFzQiwyQkFBMEM7QUFDOUQsVUFBTSxLQUFLLGdCQUFnQixhQUFhO0FBQUEsRUFDMUM7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUtBLE1BQXNCLFNBQXdCO0FBQzVDLHNCQUFrQixLQUFLLEtBQUssS0FBSyxTQUFTLEVBQUU7QUFFNUMsU0FBSyxTQUFTLCtCQUErQixNQUFNO0FBQ2pELFdBQUssV0FBVyw2RUFBNkU7QUFBQSxJQUMvRixDQUFDLENBQUM7QUFFRixTQUFLLG1CQUFtQixLQUFLLHNCQUFzQjtBQUVuRCxVQUFNLEtBQUsseUJBQXlCO0FBQ3BDLFVBQU0sb0JBQW9CLEtBQUssd0JBQXdCO0FBQ3ZELFFBQUksbUJBQW1CO0FBQ3JCLFdBQUssY0FBYyxpQkFBaUI7QUFBQSxJQUN0QztBQUVBLFVBQU0sa0JBQWtCLElBQUksZ0JBQWdCO0FBQzVDLFNBQUssZUFBZSxnQkFBZ0I7QUFDcEMsU0FBSyxTQUFTLE1BQU07QUFDbEIsc0JBQWdCLE1BQU07QUFBQSxJQUN4QixDQUFDO0FBQ0QsVUFBTSxLQUFLLGVBQWU7QUFDMUIsVUFBTSxLQUFLLHNCQUFzQixjQUFjO0FBQy9DLGVBQVcsTUFBTTtBQUNmLFdBQUssSUFBSSxVQUFVLGNBQWMsbUJBQW1CLFlBQVk7QUFDOUQsY0FBTSxLQUFLLGNBQWM7QUFDekIsY0FBTSxLQUFLLHNCQUFzQixhQUFhO0FBQUEsTUFDaEQsQ0FBQyxDQUFDO0FBQUEsSUFDSixHQUFHLENBQUM7QUFBQSxFQUNOO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT08sZUFBZSxXQUE2QztBQUNqRSxTQUFLO0FBQUEsRUFDUDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUU8sZUFBZSxjQUE4QixjQUFnRDtBQUNsRyxTQUFLO0FBQUEsRUFDUDtBQUFBLEVBRWdCLFdBQWlCO0FBQy9CLHNCQUFrQixNQUFNLEtBQUssc0JBQXNCLFFBQVEsQ0FBQztBQUFBLEVBQzlEO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFRTyxtQkFBbUIsVUFBK0I7QUFDdkQsU0FBSyxTQUFTLE1BQU07QUFDbEIsZUFBUyxZQUFZLE9BQU8sUUFBUTtBQUFBLElBQ3RDLENBQUM7QUFBQSxFQUNIO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVlBLE1BQWEsc0JBQXNCLE1BQXlDO0FBQzFFLFFBQUksS0FBSyxvQkFBb0IsSUFBSSxJQUFJLEdBQUc7QUFDdEM7QUFBQSxJQUNGO0FBRUEsVUFBTSxJQUFJLFFBQWMsQ0FBQyxZQUFZO0FBQ25DLFdBQUssT0FBTyxLQUFLLE1BQU0sTUFBTTtBQUMzQixnQkFBUTtBQUFBLE1BQ1YsQ0FBQztBQUFBLElBQ0gsQ0FBQztBQUFBLEVBQ0g7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPVSwwQkFBbUQ7QUFDM0QsV0FBTztBQUFBLEVBQ1Q7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPVSx3QkFBMEU7QUFDbEYsV0FBTztBQUFBLEVBQ1Q7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTVUsZ0JBQWtDO0FBQzFDLFNBQUs7QUFBQSxFQUNQO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU1VLGlCQUFtQztBQUMzQyxTQUFLO0FBQUEsRUFDUDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9VLFdBQVcsU0FBdUI7QUFDMUMsUUFBSSxLQUFLLFFBQVE7QUFDZixXQUFLLE9BQU8sS0FBSztBQUFBLElBQ25CO0FBRUEsU0FBSyxTQUFTLElBQUksT0FBTyxHQUFHLEtBQUssU0FBUyxJQUFJO0FBQUEsRUFBSyxPQUFPLEVBQUU7QUFBQSxFQUM5RDtBQUFBLEVBRUEsTUFBYyxzQkFBc0IsTUFBeUM7QUFDM0UsU0FBSyxvQkFBb0IsSUFBSSxJQUFJO0FBQ2pDLFVBQU0sS0FBSyxPQUFPLGFBQWEsSUFBSTtBQUFBLEVBQ3JDO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==
218
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL1BsdWdpbi9QbHVnaW5CYXNlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIEJhc2UgY2xhc3MgZm9yIE9ic2lkaWFuIHBsdWdpbnMgcHJvdmlkaW5nIHV0aWxpdHkgbWV0aG9kcyBmb3Igc2V0dGluZ3MgbWFuYWdlbWVudCwgZXJyb3IgaGFuZGxpbmcsIGFuZCBub3RpZmljYXRpb25zLlxuICpcbiAqIFRoaXMgY2xhc3Mgc2ltcGxpZmllcyB0aGUgcHJvY2VzcyBvZiBtYW5hZ2luZyBwbHVnaW4gc2V0dGluZ3MsIGRpc3BsYXlpbmcgbm90aWZpY2F0aW9ucywgYW5kIGhhbmRsaW5nIGVycm9ycy5cbiAqIFN1YmNsYXNzZXMgc2hvdWxkIGltcGxlbWVudCBtZXRob2RzIHRvIGNyZWF0ZSBkZWZhdWx0IHNldHRpbmdzIGFuZCBzZXR0aW5ncyB0YWJzLCBhbmQgY29tcGxldGUgcGx1Z2luLXNwZWNpZmljXG4gKiBsb2FkaW5nIHRhc2tzLlxuICovXG5cbmltcG9ydCB0eXBlIHsgUGx1Z2luU2V0dGluZ1RhYiB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHtcbiAgUHJvbWlzYWJsZSxcbiAgUmVhZG9ubHlEZWVwXG59IGZyb20gJ3R5cGUtZmVzdCc7XG5cbmltcG9ydCB7XG4gIE5vdGljZSxcbiAgUGx1Z2luIGFzIE9ic2lkaWFuUGx1Z2luXG59IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBBc3luY0V2ZW50UmVmIH0gZnJvbSAnLi4vLi4vQXN5bmNFdmVudHMudHMnO1xuXG5pbXBvcnQge1xuICBjb252ZXJ0QXN5bmNUb1N5bmMsXG4gIGludm9rZUFzeW5jU2FmZWx5LFxuICBpbnZva2VBc3luY1NhZmVseUFmdGVyRGVsYXlcbn0gZnJvbSAnLi4vLi4vQXN5bmMudHMnO1xuaW1wb3J0IHsgQXN5bmNFdmVudHMgfSBmcm9tICcuLi8uLi9Bc3luY0V2ZW50cy50cyc7XG5pbXBvcnQgeyBnZXREZWJ1Z2dlciB9IGZyb20gJy4uLy4uL0RlYnVnLnRzJztcbmltcG9ydCB7IHJlZ2lzdGVyQXN5bmNFcnJvckV2ZW50SGFuZGxlciB9IGZyb20gJy4uLy4uL0Vycm9yLnRzJztcbmltcG9ydCB7IG5vb3AgfSBmcm9tICcuLi8uLi9GdW5jdGlvbi50cyc7XG5pbXBvcnQgeyBpbml0UGx1Z2luQ29udGV4dCB9IGZyb20gJy4vUGx1Z2luQ29udGV4dC50cyc7XG5pbXBvcnQgeyBQbHVnaW5TZXR0aW5nc01hbmFnZXJCYXNlIH0gZnJvbSAnLi9QbHVnaW5TZXR0aW5nc01hbmFnZXJCYXNlLnRzJztcblxuLyoqXG4gKiBFeHRyYWN0cyB0aGUgcGx1Z2luIHNldHRpbmdzIHR5cGUgZnJvbSB0aGUgcGx1Z2luIGJhc2UgY2xhc3MuXG4gKlxuICogQHR5cGVQYXJhbSBQbHVnaW4gLSBUaGUgcGx1Z2luIGNsYXNzLlxuICogQHJldHVybnMgVGhlIHBsdWdpbiBzZXR0aW5ncyB0eXBlLlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuZXhwb3J0IHR5cGUgRXh0cmFjdFBsdWdpblNldHRpbmdzPFBsdWdpbiBleHRlbmRzIFBsdWdpbkJhc2U8YW55Pj4gPSBQbHVnaW5bJ19fcGx1Z2luU2V0dGluZ3NUeXBlJ107XG5cbnR5cGUgTGlmZWN5Y2xlRXZlbnROYW1lID0gJ2xheW91dFJlYWR5JyB8ICdsb2FkJyB8ICd1bmxvYWQnO1xuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIGNyZWF0aW5nIE9ic2lkaWFuIHBsdWdpbnMgd2l0aCBidWlsdC1pbiBzdXBwb3J0IGZvciBzZXR0aW5ncyBtYW5hZ2VtZW50LCBlcnJvciBoYW5kbGluZywgYW5kIG5vdGlmaWNhdGlvbnMuXG4gKlxuICogQHR5cGVQYXJhbSBQbHVnaW5TZXR0aW5ncyAtIFRoZSB0eXBlIHJlcHJlc2VudGluZyB0aGUgcGx1Z2luIHNldHRpbmdzIG9iamVjdC5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFBsdWdpbkJhc2U8UGx1Z2luU2V0dGluZ3MgZXh0ZW5kcyBvYmplY3QgPSBvYmplY3Q+IGV4dGVuZHMgT2JzaWRpYW5QbHVnaW4ge1xuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlZCBvbmx5IGZvciB0eXBlIGluZmVyZW5jZS4gRG9uJ3QgdXNlIGl0IGRpcmVjdGx5LlxuICAgKi9cbiAgZGVjbGFyZSBwdWJsaWMgX19wbHVnaW5TZXR0aW5nc1R5cGU6IFBsdWdpblNldHRpbmdzO1xuXG4gIHB1YmxpYyByZWFkb25seSBldmVudHMgPSBuZXcgQXN5bmNFdmVudHMoKTtcblxuICAvKipcbiAgICogR2V0cyB0aGUgQWJvcnRTaWduYWwgdXNlZCBmb3IgYWJvcnRpbmcgbG9uZy1ydW5uaW5nIG9wZXJhdGlvbnMuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBhYm9ydCBzaWduYWwuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGFib3J0U2lnbmFsKCk6IEFib3J0U2lnbmFsIHtcbiAgICByZXR1cm4gdGhpcy5fYWJvcnRTaWduYWw7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgcmVhZG9ubHkgcGx1Z2luIHNldHRpbmdzLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgcmVhZG9ubHkgcGx1Z2luIHNldHRpbmdzLlxuICAgKi9cbiAgcHVibGljIGdldCBzZXR0aW5ncygpOiBSZWFkb25seURlZXA8UGx1Z2luU2V0dGluZ3M+IHtcbiAgICByZXR1cm4gdGhpcy5zZXR0aW5nc01hbmFnZXIuc2FmZVNldHRpbmdzO1xuICB9XG5cbiAgcHVibGljIGdldCBzZXR0aW5nc01hbmFnZXIoKTogUGx1Z2luU2V0dGluZ3NNYW5hZ2VyQmFzZTx0aGlzPiB7XG4gICAgaWYgKCF0aGlzLl9zZXR0aW5nc01hbmFnZXIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignU2V0dGluZ3MgbWFuYWdlciBub3QgZGVmaW5lZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9zZXR0aW5nc01hbmFnZXI7XG4gIH1cblxuICBwcml2YXRlIF9hYm9ydFNpZ25hbCE6IEFib3J0U2lnbmFsO1xuICBwcml2YXRlIF9zZXR0aW5nc01hbmFnZXI6IG51bGwgfCBQbHVnaW5TZXR0aW5nc01hbmFnZXJCYXNlPHRoaXM+ID0gbnVsbDtcbiAgcHJpdmF0ZSBsaWZlY3ljbGVFdmVudE5hbWVzID0gbmV3IFNldDxMaWZlY3ljbGVFdmVudE5hbWU+KCk7XG4gIHByaXZhdGUgbm90aWNlPzogTm90aWNlO1xuXG4gIC8qKlxuICAgKiBMb2dzIGEgbWVzc2FnZSB0byB0aGUgY29uc29sZS5cbiAgICpcbiAgICogVXNlIGluc3RlYWQgb2YgYGNvbnNvbGUuZGVidWcoKWAuXG4gICAqXG4gICAqIFRob3NlIG1lc3NhZ2VzIGFyZSBub3Qgc2hvd24gYnkgZGVmYXVsdCwgYnV0IHRoZXkgY2FuIGJlIHNob3duIGJ5IGVuYWJsaW5nIGB5b3VyLXBsdWdpbi1pZGAgZGVidWdnZXIgbmFtZXNwYWNlLlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vbW5hb3Vtb3Yvb2JzaWRpYW4tZGV2LXV0aWxzLz90YWI9cmVhZG1lLW92LWZpbGUjZGVidWdnaW5nfSBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIG1lc3NhZ2UgLSBUaGUgbWVzc2FnZSB0byBsb2cuXG4gICAqIEBwYXJhbSBhcmdzIC0gVGhlIGFyZ3VtZW50cyB0byBsb2cuXG4gICAqL1xuICBwdWJsaWMgY29uc29sZURlYnVnKG1lc3NhZ2U6IHN0cmluZywgLi4uYXJnczogdW5rbm93bltdKTogdm9pZCB7XG4gICAgLy8gU2tpcCB0aGUgYGNvbnNvbGVEZWJ1ZygpYCBjYWxsIGl0c2VsZlxuICAgIGNvbnN0IEZSQU1FU19UT19TS0lQID0gMTtcbiAgICBjb25zdCBfZGVidWdnZXIgPSBnZXREZWJ1Z2dlcih0aGlzLm1hbmlmZXN0LmlkLCBGUkFNRVNfVE9fU0tJUCk7XG4gICAgX2RlYnVnZ2VyKG1lc3NhZ2UsIC4uLmFyZ3MpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIHRoZSBleHRlcm5hbCBzZXR0aW5ncyBjaGFuZ2UuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgYXN5bmMgb25FeHRlcm5hbFNldHRpbmdzQ2hhbmdlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHN1cGVyLm9uRXh0ZXJuYWxTZXR0aW5nc0NoYW5nZT8uKCk7XG4gICAgYXdhaXQgdGhpcy5zZXR0aW5nc01hbmFnZXIubG9hZEZyb21GaWxlKCk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gdGhlIHBsdWdpbiBpcyBsb2FkZWRcbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBhc3luYyBvbmxvYWQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgc3VwZXIub25sb2FkKCk7XG4gICAgYXdhaXQgdGhpcy5vbmxvYWRJbXBsKCk7XG4gICAgaW52b2tlQXN5bmNTYWZlbHlBZnRlckRlbGF5KHRoaXMuYWZ0ZXJMb2FkLmJpbmQodGhpcykpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIHRoZSBwbHVnaW4gc2V0dGluZ3MgYXJlIGxvYWRlZCBvciByZWxvYWRlZC5cbiAgICpcbiAgICogQHBhcmFtIF9zZXR0aW5ncyAtIFRoZSBzZXR0aW5ncy5cbiAgICovXG4gIHB1YmxpYyBvbkxvYWRTZXR0aW5ncyhfc2V0dGluZ3M6IFBsdWdpblNldHRpbmdzKTogUHJvbWlzYWJsZTx2b2lkPiB7XG4gICAgbm9vcCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIHRoZSBwbHVnaW4gc2V0dGluZ3MgYXJlIHNhdmVkLlxuICAgKlxuICAgKiBAcGFyYW0gX25ld1NldHRpbmdzIC0gVGhlIG5ldyBzZXR0aW5ncy5cbiAgICogQHBhcmFtIF9vbGRTZXR0aW5ncyAtIFRoZSBvbGQgc2V0dGluZ3MuXG4gICAqL1xuICBwdWJsaWMgb25TYXZlU2V0dGluZ3MoX25ld1NldHRpbmdzOiBQbHVnaW5TZXR0aW5ncywgX29sZFNldHRpbmdzOiBQbHVnaW5TZXR0aW5ncyk6IFByb21pc2FibGU8dm9pZD4ge1xuICAgIG5vb3AoKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBvbnVubG9hZCgpOiB2b2lkIHtcbiAgICBzdXBlci5vbnVubG9hZCgpO1xuICAgIGludm9rZUFzeW5jU2FmZWx5KGFzeW5jICgpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHRoaXMub251bmxvYWRJbXBsKCk7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBhd2FpdCB0aGlzLnRyaWdnZXJMaWZlY3ljbGVFdmVudCgndW5sb2FkJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXJzIGFuIGFzeW5jIGV2ZW50LlxuICAgKiBVbnJlZ2lzdGVycyB0aGUgZXZlbnQgd2hlbiB0aGUgcGx1Z2luIGlzIHVubG9hZGVkLlxuICAgKlxuICAgKiBAcGFyYW0gZXZlbnRSZWYgLSBUaGUgZXZlbnQgcmVmZXJlbmNlLlxuICAgKi9cbiAgcHVibGljIHJlZ2lzdGVyQXN5bmNFdmVudChldmVudFJlZjogQXN5bmNFdmVudFJlZik6IHZvaWQge1xuICAgIHRoaXMucmVnaXN0ZXIoKCkgPT4ge1xuICAgICAgZXZlbnRSZWYuYXN5bmNFdmVudHMub2ZmcmVmKGV2ZW50UmVmKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXYWl0cyBmb3IgYSBsaWZlY3ljbGUgZXZlbnQgdG8gYmUgdHJpZ2dlcmVkLlxuICAgKlxuICAgKiBJZiB5b3UgYGF3YWl0YCB0aGlzIG1ldGhvZCBkdXJpbmcgbGlmZWN5Y2xlIGV2ZW50LCBpdCBtaWdodCBjYXVzZSBhIGRlYWRsb2NrLlxuICAgKlxuICAgKiBDb25zaWRlciB3cmFwcGluZyB0aGlzIGNhbGwgd2l0aCB7QGxpbmsgaW52b2tlQXN5bmNTYWZlbHl9LlxuICAgKlxuICAgKiBAcGFyYW0gbmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBldmVudC5cbiAgICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBldmVudCBpcyB0cmlnZ2VyZWQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgd2FpdEZvckxpZmVjeWNsZUV2ZW50KG5hbWU6IExpZmVjeWNsZUV2ZW50TmFtZSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLmxpZmVjeWNsZUV2ZW50TmFtZXMuaGFzKG5hbWUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgYXdhaXQgbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUpID0+IHtcbiAgICAgIHRoaXMuZXZlbnRzLm9uY2UobmFtZSwgKCkgPT4ge1xuICAgICAgICByZXNvbHZlKCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgcGx1Z2luIHNldHRpbmdzIHRhYi5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIHNldHRpbmdzIHRhYiBvciBudWxsIGlmIG5vdCBhcHBsaWNhYmxlLlxuICAgKi9cbiAgcHJvdGVjdGVkIGNyZWF0ZVBsdWdpblNldHRpbmdzVGFiKCk6IG51bGwgfCBQbHVnaW5TZXR0aW5nVGFiIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIHRoZSBwbHVnaW4gc2V0dGluZ3MgbWFuYWdlci4gVGhpcyBtZXRob2QgbXVzdCBiZSBpbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgcGx1Z2luIHNldHRpbmdzIG1hbmFnZXIuXG4gICAqL1xuICBwcm90ZWN0ZWQgY3JlYXRlU2V0dGluZ3NNYW5hZ2VyKCk6IG51bGwgfCBQbHVnaW5TZXR0aW5nc01hbmFnZXJCYXNlPHRoaXM+IHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiB0aGUgbGF5b3V0IGlzIHJlYWR5LiBUaGlzIG1ldGhvZCBjYW4gYmUgb3ZlcnJpZGRlbiBieSBzdWJjbGFzc2VzIHRvIHBlcmZvcm0gYWN0aW9ucyBvbmNlXG4gICAqIHRoZSBsYXlvdXQgaXMgcmVhZHkuXG4gICAqL1xuICBwcm90ZWN0ZWQgb25MYXlvdXRSZWFkeSgpOiBQcm9taXNhYmxlPHZvaWQ+IHtcbiAgICBub29wKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgb25sb2FkSW1wbCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpbml0UGx1Z2luQ29udGV4dCh0aGlzLmFwcCwgdGhpcy5tYW5pZmVzdC5pZCk7XG5cbiAgICB0aGlzLnJlZ2lzdGVyKHJlZ2lzdGVyQXN5bmNFcnJvckV2ZW50SGFuZGxlcigoKSA9PiB7XG4gICAgICB0aGlzLnNob3dOb3RpY2UoJ0FuIHVuaGFuZGxlZCBlcnJvciBvY2N1cnJlZC4gUGxlYXNlIGNoZWNrIHRoZSBjb25zb2xlIGZvciBtb3JlIGluZm9ybWF0aW9uLicpO1xuICAgIH0pKTtcblxuICAgIHRoaXMuX3NldHRpbmdzTWFuYWdlciA9IHRoaXMuY3JlYXRlU2V0dGluZ3NNYW5hZ2VyKCk7XG5cbiAgICBhd2FpdCB0aGlzLm9uRXh0ZXJuYWxTZXR0aW5nc0NoYW5nZSgpO1xuICAgIGNvbnN0IHBsdWdpblNldHRpbmdzVGFiID0gdGhpcy5jcmVhdGVQbHVnaW5TZXR0aW5nc1RhYigpO1xuICAgIGlmIChwbHVnaW5TZXR0aW5nc1RhYikge1xuICAgICAgdGhpcy5hZGRTZXR0aW5nVGFiKHBsdWdpblNldHRpbmdzVGFiKTtcbiAgICB9XG5cbiAgICBjb25zdCBhYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgdGhpcy5fYWJvcnRTaWduYWwgPSBhYm9ydENvbnRyb2xsZXIuc2lnbmFsO1xuICAgIHRoaXMucmVnaXN0ZXIoKCkgPT4ge1xuICAgICAgYWJvcnRDb250cm9sbGVyLmFib3J0KCk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gdGhlIHBsdWdpbiBpcyB1bmxvYWRlZC5cbiAgICovXG4gIHByb3RlY3RlZCBvbnVubG9hZEltcGwoKTogUHJvbWlzYWJsZTx2b2lkPiB7XG4gICAgbm9vcCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIERpc3BsYXlzIGEgbm90aWNlIG1lc3NhZ2UgdG8gdGhlIHVzZXIuXG4gICAqXG4gICAqIEBwYXJhbSBtZXNzYWdlIC0gVGhlIG1lc3NhZ2UgdG8gZGlzcGxheS5cbiAgICovXG4gIHByb3RlY3RlZCBzaG93Tm90aWNlKG1lc3NhZ2U6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLm5vdGljZSkge1xuICAgICAgdGhpcy5ub3RpY2UuaGlkZSgpO1xuICAgIH1cblxuICAgIHRoaXMubm90aWNlID0gbmV3IE5vdGljZShgJHt0aGlzLm1hbmlmZXN0Lm5hbWV9XFxuJHttZXNzYWdlfWApO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBhZnRlckxvYWQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy50cmlnZ2VyTGlmZWN5Y2xlRXZlbnQoJ2xvYWQnKTtcbiAgICB0aGlzLmFwcC53b3Jrc3BhY2Uub25MYXlvdXRSZWFkeShjb252ZXJ0QXN5bmNUb1N5bmModGhpcy5vbkxheW91dFJlYWR5QmFzZS5iaW5kKHRoaXMpKSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIG9uTGF5b3V0UmVhZHlCYXNlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLm9uTGF5b3V0UmVhZHkoKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgYXdhaXQgdGhpcy50cmlnZ2VyTGlmZWN5Y2xlRXZlbnQoJ2xheW91dFJlYWR5Jyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB0cmlnZ2VyTGlmZWN5Y2xlRXZlbnQobmFtZTogTGlmZWN5Y2xlRXZlbnROYW1lKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5saWZlY3ljbGVFdmVudE5hbWVzLmFkZChuYW1lKTtcbiAgICBhd2FpdCB0aGlzLmV2ZW50cy50cmlnZ2VyQXN5bmMobmFtZSk7XG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7QUFnQkE7QUFBQSxFQUNFO0FBQUEsRUFDQSxVQUFVO0FBQUEsT0FDTDtBQUlQO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQLFNBQVMsbUJBQW1CO0FBQzVCLFNBQVMsbUJBQW1CO0FBQzVCLFNBQVMsc0NBQXNDO0FBQy9DLFNBQVMsWUFBWTtBQUNyQixTQUFTLHlCQUF5QjtBQUNsQyxTQUFTLGlDQUFpQztBQWtCbkMsTUFBZSxtQkFBMkQsZUFBZTtBQUFBLEVBTTlFLFNBQVMsSUFBSSxZQUFZO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT3pDLElBQVcsY0FBMkI7QUFDcEMsV0FBTyxLQUFLO0FBQUEsRUFDZDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9BLElBQVcsV0FBeUM7QUFDbEQsV0FBTyxLQUFLLGdCQUFnQjtBQUFBLEVBQzlCO0FBQUEsRUFFQSxJQUFXLGtCQUFtRDtBQUM1RCxRQUFJLENBQUMsS0FBSyxrQkFBa0I7QUFDMUIsWUFBTSxJQUFJLE1BQU0sOEJBQThCO0FBQUEsSUFDaEQ7QUFFQSxXQUFPLEtBQUs7QUFBQSxFQUNkO0FBQUEsRUFFUTtBQUFBLEVBQ0EsbUJBQTJEO0FBQUEsRUFDM0Qsc0JBQXNCLG9CQUFJLElBQXdCO0FBQUEsRUFDbEQ7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQWNELGFBQWEsWUFBb0IsTUFBdUI7QUFFN0QsVUFBTSxpQkFBaUI7QUFDdkIsVUFBTSxZQUFZLFlBQVksS0FBSyxTQUFTLElBQUksY0FBYztBQUM5RCxjQUFVLFNBQVMsR0FBRyxJQUFJO0FBQUEsRUFDNUI7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUtBLE1BQXNCLDJCQUEwQztBQUM5RCxVQUFNLE1BQU0sMkJBQTJCO0FBQ3ZDLFVBQU0sS0FBSyxnQkFBZ0IsYUFBYTtBQUFBLEVBQzFDO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLQSxNQUFzQixTQUF3QjtBQUM1QyxVQUFNLE1BQU0sT0FBTztBQUNuQixVQUFNLEtBQUssV0FBVztBQUN0QixnQ0FBNEIsS0FBSyxVQUFVLEtBQUssSUFBSSxDQUFDO0FBQUEsRUFDdkQ7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPTyxlQUFlLFdBQTZDO0FBQ2pFLFNBQUs7QUFBQSxFQUNQO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFRTyxlQUFlLGNBQThCLGNBQWdEO0FBQ2xHLFNBQUs7QUFBQSxFQUNQO0FBQUEsRUFFZ0IsV0FBaUI7QUFDL0IsVUFBTSxTQUFTO0FBQ2Ysc0JBQWtCLFlBQVk7QUFDNUIsVUFBSTtBQUNGLGNBQU0sS0FBSyxhQUFhO0FBQUEsTUFDMUIsVUFBRTtBQUNBLGNBQU0sS0FBSyxzQkFBc0IsUUFBUTtBQUFBLE1BQzNDO0FBQUEsSUFDRixDQUFDO0FBQUEsRUFDSDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUU8sbUJBQW1CLFVBQStCO0FBQ3ZELFNBQUssU0FBUyxNQUFNO0FBQ2xCLGVBQVMsWUFBWSxPQUFPLFFBQVE7QUFBQSxJQUN0QyxDQUFDO0FBQUEsRUFDSDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFZQSxNQUFhLHNCQUFzQixNQUF5QztBQUMxRSxRQUFJLEtBQUssb0JBQW9CLElBQUksSUFBSSxHQUFHO0FBQ3RDO0FBQUEsSUFDRjtBQUVBLFVBQU0sSUFBSSxRQUFjLENBQUMsWUFBWTtBQUNuQyxXQUFLLE9BQU8sS0FBSyxNQUFNLE1BQU07QUFDM0IsZ0JBQVE7QUFBQSxNQUNWLENBQUM7QUFBQSxJQUNILENBQUM7QUFBQSxFQUNIO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT1UsMEJBQW1EO0FBQzNELFdBQU87QUFBQSxFQUNUO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT1Usd0JBQWdFO0FBQ3hFLFdBQU87QUFBQSxFQUNUO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU1VLGdCQUFrQztBQUMxQyxTQUFLO0FBQUEsRUFDUDtBQUFBLEVBRUEsTUFBZ0IsYUFBNEI7QUFDMUMsc0JBQWtCLEtBQUssS0FBSyxLQUFLLFNBQVMsRUFBRTtBQUU1QyxTQUFLLFNBQVMsK0JBQStCLE1BQU07QUFDakQsV0FBSyxXQUFXLDZFQUE2RTtBQUFBLElBQy9GLENBQUMsQ0FBQztBQUVGLFNBQUssbUJBQW1CLEtBQUssc0JBQXNCO0FBRW5ELFVBQU0sS0FBSyx5QkFBeUI7QUFDcEMsVUFBTSxvQkFBb0IsS0FBSyx3QkFBd0I7QUFDdkQsUUFBSSxtQkFBbUI7QUFDckIsV0FBSyxjQUFjLGlCQUFpQjtBQUFBLElBQ3RDO0FBRUEsVUFBTSxrQkFBa0IsSUFBSSxnQkFBZ0I7QUFDNUMsU0FBSyxlQUFlLGdCQUFnQjtBQUNwQyxTQUFLLFNBQVMsTUFBTTtBQUNsQixzQkFBZ0IsTUFBTTtBQUFBLElBQ3hCLENBQUM7QUFBQSxFQUNIO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLVSxlQUFpQztBQUN6QyxTQUFLO0FBQUEsRUFDUDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9VLFdBQVcsU0FBdUI7QUFDMUMsUUFBSSxLQUFLLFFBQVE7QUFDZixXQUFLLE9BQU8sS0FBSztBQUFBLElBQ25CO0FBRUEsU0FBSyxTQUFTLElBQUksT0FBTyxHQUFHLEtBQUssU0FBUyxJQUFJO0FBQUEsRUFBSyxPQUFPLEVBQUU7QUFBQSxFQUM5RDtBQUFBLEVBRUEsTUFBYyxZQUEyQjtBQUN2QyxVQUFNLEtBQUssc0JBQXNCLE1BQU07QUFDdkMsU0FBSyxJQUFJLFVBQVUsY0FBYyxtQkFBbUIsS0FBSyxrQkFBa0IsS0FBSyxJQUFJLENBQUMsQ0FBQztBQUFBLEVBQ3hGO0FBQUEsRUFFQSxNQUFjLG9CQUFtQztBQUMvQyxRQUFJO0FBQ0YsWUFBTSxLQUFLLGNBQWM7QUFBQSxJQUMzQixVQUFFO0FBQ0EsWUFBTSxLQUFLLHNCQUFzQixhQUFhO0FBQUEsSUFDaEQ7QUFBQSxFQUNGO0FBQUEsRUFFQSxNQUFjLHNCQUFzQixNQUF5QztBQUMzRSxTQUFLLG9CQUFvQixJQUFJLElBQUk7QUFDakMsVUFBTSxLQUFLLE9BQU8sYUFBYSxJQUFJO0FBQUEsRUFDckM7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K
@@ -7,23 +7,23 @@ import type { App } from 'obsidian';
7
7
  import type { Promisable, ReadonlyDeep } from 'type-fest';
8
8
  import type { Transformer } from '../../Transformers/Transformer.mjs';
9
9
  import type { MaybeReturn, StringKeys } from '../../Type.mjs';
10
- import type { PluginBase } from './PluginBase.mjs';
10
+ import type { ExtractPluginSettings, PluginBase } from './PluginBase.mjs';
11
11
  type Validator<T> = (value: T) => Promisable<MaybeReturn<string>>;
12
12
  /**
13
13
  * Base class for managing plugin settings.
14
14
  *
15
15
  * @typeParam PluginSettings - The type representing the plugin settings object.
16
16
  */
17
- export declare abstract class PluginSettingsManagerBase<PluginSettings extends object> {
18
- readonly plugin: PluginBase<PluginSettings>;
17
+ export declare abstract class PluginSettingsManagerBase<Plugin extends PluginBase<any>> {
18
+ readonly plugin: Plugin;
19
19
  readonly app: App;
20
- readonly safeSettings: ReadonlyDeep<PluginSettings>;
20
+ readonly safeSettings: ReadonlyDeep<ExtractPluginSettings<Plugin>>;
21
21
  private defaultSettings;
22
22
  private properties;
23
23
  private validators;
24
- constructor(plugin: PluginBase<PluginSettings>);
25
- editAndSave(editor: (settings: PluginSettings) => Promisable<void>): Promise<void>;
26
- getProperty<PropertyName extends StringKeys<PluginSettings>>(propertyName: PropertyName): PluginSettingsProperty<PluginSettings[PropertyName]>;
24
+ constructor(plugin: Plugin);
25
+ editAndSave(editor: (settings: ExtractPluginSettings<Plugin>) => Promisable<void>): Promise<void>;
26
+ getProperty<PropertyName extends StringKeys<ExtractPluginSettings<Plugin>>>(propertyName: PropertyName): PluginSettingsProperty<ExtractPluginSettings<Plugin>[PropertyName]>;
27
27
  loadFromFile(): Promise<void>;
28
28
  /**
29
29
  * Saves the new plugin settings.
@@ -31,9 +31,9 @@ export declare abstract class PluginSettingsManagerBase<PluginSettings extends o
31
31
  * @returns A {@link Promise} that resolves when the settings are saved.
32
32
  */
33
33
  saveToFile(): Promise<void>;
34
- protected addValidator<PropertyName extends StringKeys<PluginSettings>>(propertyName: PropertyName, validator: Validator<PluginSettings[PropertyName]>): void;
34
+ protected addValidator<PropertyName extends StringKeys<ExtractPluginSettings<Plugin>>>(propertyName: PropertyName, validator: Validator<ExtractPluginSettings<Plugin>[PropertyName]>): void;
35
35
  protected addValidators(): void;
36
- protected abstract createDefaultSettings(): PluginSettings;
36
+ protected abstract createDefaultSettings(): ExtractPluginSettings<Plugin>;
37
37
  protected getTransformer(): Transformer;
38
38
  /**
39
39
  * Called when the plugin settings are loaded.
@@ -279,4 +279,4 @@ export {
279
279
  PluginSettingsManagerBase,
280
280
  PluginSettingsProperty
281
281
  };
282
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL1BsdWdpbi9QbHVnaW5TZXR0aW5nc01hbmFnZXJCYXNlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIFBsdWdpbiBzZXR0aW5ncyBtYW5hZ2VyIGJhc2UgY2xhc3MuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7XG4gIFByb21pc2FibGUsXG4gIFJlYWRvbmx5RGVlcFxufSBmcm9tICd0eXBlLWZlc3QnO1xuXG5pbXBvcnQgdHlwZSB7IFRyYW5zZm9ybWVyIH0gZnJvbSAnLi4vLi4vVHJhbnNmb3JtZXJzL1RyYW5zZm9ybWVyLnRzJztcbmltcG9ydCB0eXBlIHtcbiAgTWF5YmVSZXR1cm4sXG4gIFN0cmluZ0tleXNcbn0gZnJvbSAnLi4vLi4vVHlwZS50cyc7XG5pbXBvcnQgdHlwZSB7IFBsdWdpbkJhc2UgfSBmcm9tICcuL1BsdWdpbkJhc2UudHMnO1xuXG5pbXBvcnQgeyBub29wIH0gZnJvbSAnLi4vLi4vRnVuY3Rpb24udHMnO1xuaW1wb3J0IHsgZ2V0QWxsS2V5cyB9IGZyb20gJy4uLy4uL09iamVjdC50cyc7XG5pbXBvcnQgeyBEYXRlVHJhbnNmb3JtZXIgfSBmcm9tICcuLi8uLi9UcmFuc2Zvcm1lcnMvRGF0ZVRyYW5zZm9ybWVyLnRzJztcbmltcG9ydCB7IER1cmF0aW9uVHJhbnNmb3JtZXIgfSBmcm9tICcuLi8uLi9UcmFuc2Zvcm1lcnMvRHVyYXRpb25UcmFuc2Zvcm1lci50cyc7XG5pbXBvcnQgeyBHcm91cFRyYW5zZm9ybWVyIH0gZnJvbSAnLi4vLi4vVHJhbnNmb3JtZXJzL0dyb3VwVHJhbnNmb3JtZXIudHMnO1xuaW1wb3J0IHsgU2tpcFByaXZhdGVQcm9wZXJ0eVRyYW5zZm9ybWVyIH0gZnJvbSAnLi4vLi4vVHJhbnNmb3JtZXJzL1NraXBQcml2YXRlUHJvcGVydHlUcmFuc2Zvcm1lci50cyc7XG5cbmNvbnN0IGRlZmF1bHRUcmFuc2Zvcm1lciA9IG5ldyBHcm91cFRyYW5zZm9ybWVyKFtcbiAgbmV3IFNraXBQcml2YXRlUHJvcGVydHlUcmFuc2Zvcm1lcigpLFxuICBuZXcgRGF0ZVRyYW5zZm9ybWVyKCksXG4gIG5ldyBEdXJhdGlvblRyYW5zZm9ybWVyKClcbl0pO1xuXG50eXBlIFZhbGlkYXRvcjxUPiA9ICh2YWx1ZTogVCkgPT4gUHJvbWlzYWJsZTxNYXliZVJldHVybjxzdHJpbmc+PjtcblxuYWJzdHJhY3QgY2xhc3MgUHJveHlIYW5kbGVyQmFzZTxQbHVnaW5TZXR0aW5ncyBleHRlbmRzIG9iamVjdD4gaW1wbGVtZW50cyBQcm94eUhhbmRsZXI8UGx1Z2luU2V0dGluZ3M+IHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKHByb3RlY3RlZCByZWFkb25seSBwcm9wZXJ0aWVzOiBQcm9wZXJ0aWVzTWFwPFBsdWdpblNldHRpbmdzPikge31cblxuICBwdWJsaWMgZ2V0KHRhcmdldDogUGx1Z2luU2V0dGluZ3MsIHByb3A6IHN0cmluZyB8IHN5bWJvbCk6IHVua25vd24ge1xuICAgIGNvbnN0IHJlY29yZCA9IHRhcmdldCBhcyBSZWNvcmQ8c3RyaW5nIHwgc3ltYm9sLCB1bmtub3duPjtcbiAgICBpZiAodHlwZW9mIHByb3AgIT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gcmVjb3JkW3Byb3BdO1xuICAgIH1cblxuICAgIGNvbnN0IHByb3BlcnR5ID0gdGhpcy5wcm9wZXJ0aWVzLmdldChwcm9wKTtcbiAgICBpZiAoIXByb3BlcnR5KSB7XG4gICAgICByZXR1cm4gcmVjb3JkW3Byb3BdO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmdldFByb3BlcnR5VmFsdWUocHJvcGVydHkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGdldFByb3BlcnR5VmFsdWUocHJvcGVydHk6IFBsdWdpblNldHRpbmdzUHJvcGVydHk8dW5rbm93bj4pOiB1bmtub3duO1xufVxuXG5jbGFzcyBFZGl0YWJsZVNldHRpbmdzUHJveHlIYW5kbGVyPFBsdWdpblNldHRpbmdzIGV4dGVuZHMgb2JqZWN0PiBleHRlbmRzIFByb3h5SGFuZGxlckJhc2U8UGx1Z2luU2V0dGluZ3M+IHtcbiAgcHJpdmF0ZSB2YWxpZGF0aW9uUHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSgpO1xuICBwdWJsaWMgc2V0KHRhcmdldDogUGx1Z2luU2V0dGluZ3MsIHByb3A6IHN0cmluZyB8IHN5bWJvbCwgdmFsdWU6IHVua25vd24pOiBib29sZWFuIHtcbiAgICBjb25zdCByZWNvcmQgPSB0YXJnZXQgYXMgUmVjb3JkPHN0cmluZyB8IHN5bWJvbCwgdW5rbm93bj47XG5cbiAgICBpZiAodHlwZW9mIHByb3AgIT09ICdzdHJpbmcnKSB7XG4gICAgICByZWNvcmRbcHJvcF0gPSB2YWx1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IHByb3BlcnR5ID0gdGhpcy5wcm9wZXJ0aWVzLmdldChwcm9wKTtcbiAgICBpZiAoIXByb3BlcnR5KSB7XG4gICAgICByZWNvcmRbcHJvcF0gPSB2YWx1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHByb3BlcnR5LnNldFZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLnZhbGlkYXRpb25Qcm9taXNlID0gdGhpcy52YWxpZGF0aW9uUHJvbWlzZS50aGVuKCgpID0+IHByb3BlcnR5LnNldFZhbHVlQW5kVmFsaWRhdGUodmFsdWUpKTtcblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGdldFByb3BlcnR5VmFsdWUocHJvcGVydHk6IFBsdWdpblNldHRpbmdzUHJvcGVydHk8dW5rbm93bj4pOiB1bmtub3duIHtcbiAgICByZXR1cm4gcHJvcGVydHkuY3VycmVudFZhbHVlO1xuICB9XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5jbGFzcyBQcm9wZXJ0aWVzTWFwPFBsdWdpblNldHRpbmdzIGV4dGVuZHMgb2JqZWN0PiBleHRlbmRzIE1hcDxzdHJpbmcsIFBsdWdpblNldHRpbmdzUHJvcGVydHk8YW55Pj4ge1xuICBwdWJsaWMgZ2V0VHlwZWQ8UHJvcGVydHlOYW1lIGV4dGVuZHMgU3RyaW5nS2V5czxQbHVnaW5TZXR0aW5ncz4+KHByb3BlcnR5TmFtZTogUHJvcGVydHlOYW1lKTogUGx1Z2luU2V0dGluZ3NQcm9wZXJ0eTxQbHVnaW5TZXR0aW5nc1tQcm9wZXJ0eU5hbWVdPiB7XG4gICAgY29uc3QgcHJvcGVydHkgPSBzdXBlci5nZXQocHJvcGVydHlOYW1lKTtcbiAgICBpZiAoIXByb3BlcnR5KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFByb3BlcnR5ICR7U3RyaW5nKHByb3BlcnR5TmFtZSl9IG5vdCBmb3VuZGApO1xuICAgIH1cblxuICAgIHJldHVybiBwcm9wZXJ0eSBhcyBQbHVnaW5TZXR0aW5nc1Byb3BlcnR5PFBsdWdpblNldHRpbmdzW1Byb3BlcnR5TmFtZV0+O1xuICB9XG5cbiAgcHVibGljIHNldFR5cGVkPFByb3BlcnR5TmFtZSBleHRlbmRzIFN0cmluZ0tleXM8UGx1Z2luU2V0dGluZ3M+PihcbiAgICBwcm9wZXJ0eU5hbWU6IFByb3BlcnR5TmFtZSxcbiAgICB2YWx1ZTogUGx1Z2luU2V0dGluZ3NQcm9wZXJ0eTxQbHVnaW5TZXR0aW5nc1tQcm9wZXJ0eU5hbWVdPlxuICApOiB0aGlzIHtcbiAgICByZXR1cm4gc3VwZXIuc2V0KHByb3BlcnR5TmFtZSwgdmFsdWUpO1xuICB9XG59XG5cbmNsYXNzIFNhZmVTZXR0aW5nc1Byb3h5SGFuZGxlcjxQbHVnaW5TZXR0aW5ncyBleHRlbmRzIG9iamVjdD4gZXh0ZW5kcyBQcm94eUhhbmRsZXJCYXNlPFBsdWdpblNldHRpbmdzPiB7XG4gIHByb3RlY3RlZCBvdmVycmlkZSBnZXRQcm9wZXJ0eVZhbHVlKHByb3BlcnR5OiBQbHVnaW5TZXR0aW5nc1Byb3BlcnR5PHVua25vd24+KTogdW5rbm93biB7XG4gICAgcmV0dXJuIHByb3BlcnR5LnNhZmVWYWx1ZTtcbiAgfVxufVxuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIG1hbmFnaW5nIHBsdWdpbiBzZXR0aW5ncy5cbiAqXG4gKiBAdHlwZVBhcmFtIFBsdWdpblNldHRpbmdzIC0gVGhlIHR5cGUgcmVwcmVzZW50aW5nIHRoZSBwbHVnaW4gc2V0dGluZ3Mgb2JqZWN0LlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUGx1Z2luU2V0dGluZ3NNYW5hZ2VyQmFzZTxQbHVnaW5TZXR0aW5ncyBleHRlbmRzIG9iamVjdD4ge1xuICBwdWJsaWMgcmVhZG9ubHkgYXBwOiBBcHA7XG4gIHB1YmxpYyByZWFkb25seSBzYWZlU2V0dGluZ3M6IFJlYWRvbmx5RGVlcDxQbHVnaW5TZXR0aW5ncz47XG5cbiAgcHJpdmF0ZSBkZWZhdWx0U2V0dGluZ3M6IFBsdWdpblNldHRpbmdzO1xuICBwcml2YXRlIHByb3BlcnRpZXM6IFByb3BlcnRpZXNNYXA8UGx1Z2luU2V0dGluZ3M+O1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBwcml2YXRlIHZhbGlkYXRvcnM6IE1hcDxzdHJpbmcsIFZhbGlkYXRvcjxhbnk+PiA9IG5ldyBNYXA8c3RyaW5nLCBWYWxpZGF0b3I8YW55Pj4oKTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IHBsdWdpbjogUGx1Z2luQmFzZTxQbHVnaW5TZXR0aW5ncz4pIHtcbiAgICB0aGlzLmFwcCA9IHBsdWdpbi5hcHA7XG4gICAgdGhpcy5kZWZhdWx0U2V0dGluZ3MgPSB0aGlzLmNyZWF0ZURlZmF1bHRTZXR0aW5ncygpO1xuXG4gICAgdGhpcy5hZGRWYWxpZGF0b3JzKCk7XG5cbiAgICB0aGlzLnByb3BlcnRpZXMgPSBuZXcgUHJvcGVydGllc01hcDxQbHVnaW5TZXR0aW5ncz4oKTtcblxuICAgIGZvciAoY29uc3QgcHJvcGVydHlOYW1lIG9mIGdldEFsbEtleXModGhpcy5kZWZhdWx0U2V0dGluZ3MpKSB7XG4gICAgICB0aGlzLnByb3BlcnRpZXMuc2V0KFxuICAgICAgICBwcm9wZXJ0eU5hbWUsXG4gICAgICAgIG5ldyBQbHVnaW5TZXR0aW5nc1Byb3BlcnR5KHByb3BlcnR5TmFtZSwgdGhpcy5kZWZhdWx0U2V0dGluZ3NbcHJvcGVydHlOYW1lXSwgdGhpcy52YWxpZGF0b3JzLmdldChwcm9wZXJ0eU5hbWUpID8/IG5vb3ApXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMudmFsaWRhdG9ycy5jbGVhcigpO1xuXG4gICAgdGhpcy5zYWZlU2V0dGluZ3MgPSBuZXcgUHJveHkodGhpcy5kZWZhdWx0U2V0dGluZ3MsIG5ldyBTYWZlU2V0dGluZ3NQcm94eUhhbmRsZXI8UGx1Z2luU2V0dGluZ3M+KHRoaXMucHJvcGVydGllcykpIGFzIFJlYWRvbmx5RGVlcDxQbHVnaW5TZXR0aW5ncz47XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZWRpdEFuZFNhdmUoZWRpdG9yOiAoc2V0dGluZ3M6IFBsdWdpblNldHRpbmdzKSA9PiBQcm9taXNhYmxlPHZvaWQ+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgZWRpdGFibGVTZXR0aW5ncyA9IG5ldyBQcm94eSh0aGlzLmRlZmF1bHRTZXR0aW5ncywgbmV3IEVkaXRhYmxlU2V0dGluZ3NQcm94eUhhbmRsZXI8UGx1Z2luU2V0dGluZ3M+KHRoaXMucHJvcGVydGllcykpIGFzIHtcbiAgICAgIHZhbGlkYXRpb25Qcm9taXNlOiBQcm9taXNlPHZvaWQ+O1xuICAgIH0gJiBQbHVnaW5TZXR0aW5ncztcbiAgICBhd2FpdCBlZGl0b3IoZWRpdGFibGVTZXR0aW5ncyk7XG4gICAgYXdhaXQgZWRpdGFibGVTZXR0aW5ncy52YWxpZGF0aW9uUHJvbWlzZTtcbiAgICBhd2FpdCB0aGlzLnNhdmVUb0ZpbGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRQcm9wZXJ0eTxQcm9wZXJ0eU5hbWUgZXh0ZW5kcyBTdHJpbmdLZXlzPFBsdWdpblNldHRpbmdzPj4ocHJvcGVydHlOYW1lOiBQcm9wZXJ0eU5hbWUpOiBQbHVnaW5TZXR0aW5nc1Byb3BlcnR5PFBsdWdpblNldHRpbmdzW1Byb3BlcnR5TmFtZV0+IHtcbiAgICByZXR1cm4gdGhpcy5wcm9wZXJ0aWVzLmdldFR5cGVkKHByb3BlcnR5TmFtZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgbG9hZEZyb21GaWxlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGZvciAoY29uc3QgcHJvcGVydHkgb2YgdGhpcy5wcm9wZXJ0aWVzLnZhbHVlcygpKSB7XG4gICAgICBwcm9wZXJ0eS5yZXNldCgpO1xuICAgIH1cblxuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLnBsdWdpbi5sb2FkRGF0YSgpIGFzIHVua25vd247XG5cbiAgICBpZiAoZGF0YSA9PT0gdW5kZWZpbmVkIHx8IGRhdGEgPT09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGRhdGEgIT09ICdvYmplY3QnIHx8IEFycmF5LmlzQXJyYXkoZGF0YSkpIHtcbiAgICAgIGNvbnN0IHR5cGUgPSBBcnJheS5pc0FycmF5KGRhdGEpID8gJ0FycmF5JyA6IHR5cGVvZiBkYXRhO1xuICAgICAgY29uc29sZS5lcnJvcihgSW52YWxpZCBkYXRhIHR5cGUuIEV4cGVjdGVkIE9iamVjdCwgZ290OiAke3R5cGV9YCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IHJlY29yZCA9IGRhdGEgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgY29uc3Qgb3JpZ2luYWxKc29uID0gSlNPTi5zdHJpbmdpZnkocmVjb3JkKTtcbiAgICByZWNvcmQgPSB0aGlzLmdldFRyYW5zZm9ybWVyKCkudHJhbnNmb3JtT2JqZWN0UmVjdXJzaXZlbHkocmVjb3JkKTtcbiAgICBhd2FpdCB0aGlzLm9uTG9hZFJlY29yZChyZWNvcmQpO1xuXG4gICAgY29uc3QgcHJvcGVydGllc1RvU2F2ZTogUGx1Z2luU2V0dGluZ3NQcm9wZXJ0eTx1bmtub3duPltdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IFtwcm9wZXJ0eU5hbWUsIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhyZWNvcmQpKSB7XG4gICAgICBjb25zdCBwcm9wZXJ0eSA9IHRoaXMucHJvcGVydGllcy5nZXQocHJvcGVydHlOYW1lKTtcbiAgICAgIGlmICghcHJvcGVydHkpIHtcbiAgICAgICAgY29uc29sZS53YXJuKGBVbmtub3duIHByb3BlcnR5OiAke3Byb3BlcnR5TmFtZX1gKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IHR5cGVvZiBwcm9wZXJ0eS5kZWZhdWx0VmFsdWUpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdJbnZhbGlkIHZhbHVlIHR5cGUnLCB7XG4gICAgICAgICAgcHJvcGVydHlOYW1lLFxuICAgICAgICAgIHByb3BlcnR5VHlwZTogdHlwZW9mIHByb3BlcnR5LmRlZmF1bHRWYWx1ZSxcbiAgICAgICAgICB2YWx1ZVxuICAgICAgICB9KTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHByb3BlcnR5LnNldFZhbHVlKHZhbHVlKTtcbiAgICAgIHByb3BlcnRpZXNUb1NhdmUucHVzaChwcm9wZXJ0eSk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzVG9TYXZlKSB7XG4gICAgICBhd2FpdCBwcm9wZXJ0eS5zZXRWYWx1ZUFuZFZhbGlkYXRlKHByb3BlcnR5LmN1cnJlbnRWYWx1ZSk7XG4gICAgICBwcm9wZXJ0eS5zYXZlKCk7XG4gICAgfVxuXG4gICAgY29uc3QgbmV3SnNvbiA9IEpTT04uc3RyaW5naWZ5KGF3YWl0IHRoaXMucHJlcGFyZVJlY29yZFRvU2F2ZSgpKTtcblxuICAgIGlmIChuZXdKc29uICE9PSBvcmlnaW5hbEpzb24pIHtcbiAgICAgIGF3YWl0IHRoaXMuc2F2ZVRvRmlsZUltcGwoKTtcbiAgICB9XG5cbiAgICBhd2FpdCB0aGlzLnBsdWdpbi5vbkxvYWRTZXR0aW5ncyh0aGlzLmdldFNhdmVkU2V0dGluZ3MoKSk7XG4gIH1cblxuICAvKipcbiAgICogU2F2ZXMgdGhlIG5ldyBwbHVnaW4gc2V0dGluZ3MuXG4gICAqXG4gICAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgc2V0dGluZ3MgYXJlIHNhdmVkLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIHNhdmVUb0ZpbGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qgb2xkU2V0dGluZ3MgPSB0aGlzLmdldFNhdmVkU2V0dGluZ3MoKTtcblxuICAgIGxldCBoYXNDaGFuZ2VzID0gZmFsc2U7XG5cbiAgICBmb3IgKGNvbnN0IHByb3BlcnR5IG9mIHRoaXMucHJvcGVydGllcy52YWx1ZXMoKSkge1xuICAgICAgaGFzQ2hhbmdlcyB8fD0gcHJvcGVydHkuc2F2ZSgpO1xuICAgIH1cblxuICAgIGlmICghaGFzQ2hhbmdlcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGF3YWl0IHRoaXMuc2F2ZVRvRmlsZUltcGwoKTtcbiAgICBhd2FpdCB0aGlzLnBsdWdpbi5vblNhdmVTZXR0aW5ncyh0aGlzLmdldFNhdmVkU2V0dGluZ3MoKSwgb2xkU2V0dGluZ3MpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFkZFZhbGlkYXRvcjxQcm9wZXJ0eU5hbWUgZXh0ZW5kcyBTdHJpbmdLZXlzPFBsdWdpblNldHRpbmdzPj4oXG4gICAgcHJvcGVydHlOYW1lOiBQcm9wZXJ0eU5hbWUsXG4gICAgdmFsaWRhdG9yOiBWYWxpZGF0b3I8UGx1Z2luU2V0dGluZ3NbUHJvcGVydHlOYW1lXT5cbiAgKTogdm9pZCB7XG4gICAgdGhpcy52YWxpZGF0b3JzLnNldChwcm9wZXJ0eU5hbWUsIHZhbGlkYXRvcik7XG4gIH1cblxuICBwcm90ZWN0ZWQgYWRkVmFsaWRhdG9ycygpOiB2b2lkIHtcbiAgICBub29wKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgY3JlYXRlRGVmYXVsdFNldHRpbmdzKCk6IFBsdWdpblNldHRpbmdzO1xuXG4gIHByb3RlY3RlZCBnZXRUcmFuc2Zvcm1lcigpOiBUcmFuc2Zvcm1lciB7XG4gICAgcmV0dXJuIGRlZmF1bHRUcmFuc2Zvcm1lcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiB0aGUgcGx1Z2luIHNldHRpbmdzIGFyZSBsb2FkZWQuXG4gICAqXG4gICAqIEBwYXJhbSBfcmVjb3JkIC0gVGhlIHJlY29yZC5cbiAgICovXG4gIHByb3RlY3RlZCBvbkxvYWRSZWNvcmQoX3JlY29yZDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiBQcm9taXNhYmxlPHZvaWQ+IHtcbiAgICBub29wKCk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gdGhlIHBsdWdpbiBzZXR0aW5ncyBhcmUgc2F2aW5nLlxuICAgKlxuICAgKiBAcGFyYW0gX3JlY29yZCAtIFRoZSByZWNvcmQuXG4gICAqL1xuICBwcm90ZWN0ZWQgb25TYXZpbmdSZWNvcmQoX3JlY29yZDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiBQcm9taXNhYmxlPHZvaWQ+IHtcbiAgICBub29wKCk7XG4gIH1cblxuICBwcml2YXRlIGdldFNhdmVkU2V0dGluZ3MoKTogUGx1Z2luU2V0dGluZ3Mge1xuICAgIGNvbnN0IHNhdmVkU2V0dGluZ3M6IFBhcnRpYWw8UGx1Z2luU2V0dGluZ3M+ID0ge307XG4gICAgZm9yIChjb25zdCBbcHJvcGVydHlOYW1lLCBwcm9wZXJ0eV0gb2YgdGhpcy5wcm9wZXJ0aWVzLmVudHJpZXMoKSkge1xuICAgICAgc2F2ZWRTZXR0aW5nc1twcm9wZXJ0eU5hbWUgYXMgU3RyaW5nS2V5czxQbHVnaW5TZXR0aW5ncz5dID0gcHJvcGVydHkubGFzdFNhdmVkVmFsdWUgYXMgUGx1Z2luU2V0dGluZ3NbU3RyaW5nS2V5czxQbHVnaW5TZXR0aW5ncz5dIHwgdW5kZWZpbmVkO1xuICAgIH1cbiAgICBjb25zdCBwcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzLmRlZmF1bHRTZXR0aW5ncykgYXMgb2JqZWN0O1xuICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZihzYXZlZFNldHRpbmdzLCBwcm90byk7XG4gICAgcmV0dXJuIHNhdmVkU2V0dGluZ3MgYXMgUGx1Z2luU2V0dGluZ3M7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHByZXBhcmVSZWNvcmRUb1NhdmUoKTogUHJvbWlzZTxSZWNvcmQ8U3RyaW5nS2V5czxQbHVnaW5TZXR0aW5ncz4sIHVua25vd24+PiB7XG4gICAgY29uc3Qgc2V0dGluZ3M6IFJlY29yZDxTdHJpbmdLZXlzPFBsdWdpblNldHRpbmdzPiwgdW5rbm93bj4gPSB7fSBhcyBSZWNvcmQ8U3RyaW5nS2V5czxQbHVnaW5TZXR0aW5ncz4sIHVua25vd24+O1xuICAgIGZvciAoY29uc3QgW3Byb3BlcnR5TmFtZSwgcHJvcGVydHldIG9mIHRoaXMucHJvcGVydGllcy5lbnRyaWVzKCkpIHtcbiAgICAgIHNldHRpbmdzW3Byb3BlcnR5TmFtZSBhcyBTdHJpbmdLZXlzPFBsdWdpblNldHRpbmdzPl0gPSBwcm9wZXJ0eS5jdXJyZW50VmFsdWUgYXMgdW5rbm93bjtcbiAgICB9XG5cbiAgICBhd2FpdCB0aGlzLm9uU2F2aW5nUmVjb3JkKHNldHRpbmdzKTtcblxuICAgIHJldHVybiB0aGlzLmdldFRyYW5zZm9ybWVyKCkudHJhbnNmb3JtT2JqZWN0UmVjdXJzaXZlbHkoc2V0dGluZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzYXZlVG9GaWxlSW1wbCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLnBsdWdpbi5zYXZlRGF0YShhd2FpdCB0aGlzLnByZXBhcmVSZWNvcmRUb1NhdmUoKSk7XG4gIH1cbn1cblxuLyoqXG4gKiBBIHByb3BlcnR5IG9mIGEgcGx1Z2luIHNldHRpbmdzLlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIHRoZSBwcm9wZXJ0eS5cbiAqL1xuZXhwb3J0IGNsYXNzIFBsdWdpblNldHRpbmdzUHJvcGVydHk8VD4ge1xuICBwdWJsaWMgZ2V0IGN1cnJlbnRWYWx1ZSgpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudFZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldCBsYXN0U2F2ZWRWYWx1ZSgpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5fbGFzdFNhdmVkVmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNhZmVWYWx1ZSgpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsaWRhdGlvbk1lc3NhZ2UgPyB0aGlzLmRlZmF1bHRWYWx1ZSA6IHRoaXMuX2N1cnJlbnRWYWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdmFsaWRhdGlvbk1lc3NhZ2UoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsaWRhdGlvbk1lc3NhZ2U7XG4gIH1cblxuICBwcml2YXRlIF9jdXJyZW50VmFsdWU6IFQ7XG5cbiAgcHJpdmF0ZSBfbGFzdFNhdmVkVmFsdWU6IFQ7XG5cbiAgcHJpdmF0ZSBfdmFsaWRhdGlvbk1lc3NhZ2UgPSAnJztcblxuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBwcm9wZXJ0eU5hbWU6IHN0cmluZywgcHVibGljIHJlYWRvbmx5IGRlZmF1bHRWYWx1ZTogVCwgcHJpdmF0ZSByZWFkb25seSB2YWxpZGF0b3I6IFZhbGlkYXRvcjxUPikge1xuICAgIHRoaXMuX2xhc3RTYXZlZFZhbHVlID0gZGVmYXVsdFZhbHVlO1xuICAgIHRoaXMuX2N1cnJlbnRWYWx1ZSA9IGRlZmF1bHRWYWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyByZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLl9jdXJyZW50VmFsdWUgPSB0aGlzLmRlZmF1bHRWYWx1ZTtcbiAgICB0aGlzLl92YWxpZGF0aW9uTWVzc2FnZSA9ICcnO1xuICB9XG5cbiAgcHVibGljIHNhdmUoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuX2xhc3RTYXZlZFZhbHVlID09PSB0aGlzLl9jdXJyZW50VmFsdWUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICB0aGlzLl9sYXN0U2F2ZWRWYWx1ZSA9IHRoaXMuX2N1cnJlbnRWYWx1ZTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRWYWxpZGF0aW9uTWVzc2FnZSh2YWxpZGF0aW9uTWVzc2FnZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5fdmFsaWRhdGlvbk1lc3NhZ2UgPSB2YWxpZGF0aW9uTWVzc2FnZTtcbiAgICB0aGlzLnNob3dXYXJuaW5nKCk7XG4gIH1cblxuICBwdWJsaWMgc2V0VmFsdWUodmFsdWU6IFQpOiB2b2lkIHtcbiAgICB0aGlzLl9jdXJyZW50VmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzZXRWYWx1ZUFuZFZhbGlkYXRlKHZhbHVlOiBUKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuX3ZhbGlkYXRpb25NZXNzYWdlID0gKGF3YWl0IHRoaXMudmFsaWRhdG9yKHRoaXMuX2N1cnJlbnRWYWx1ZSkgYXMgc3RyaW5nIHwgdW5kZWZpbmVkKSA/PyAnJztcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignVmFsaWRhdGlvbiBmYWlsZWQnLCB7XG4gICAgICAgIHByb3BlcnR5TmFtZTogdGhpcy5wcm9wZXJ0eU5hbWUsXG4gICAgICAgIHZhbHVlXG4gICAgICB9LCBlcnJvcik7XG4gICAgICB0aGlzLl92YWxpZGF0aW9uTWVzc2FnZSA9ICdWYWxpZGF0aW9uIGZhaWxlZCc7XG4gICAgfVxuICAgIHRoaXMuc2hvd1dhcm5pbmcodmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBzaG93V2FybmluZyh2YWx1ZT86IFQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3ZhbGlkYXRpb25NZXNzYWdlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc29sZS53YXJuKGBDb3VsZCBub3Qgc2V0IHBsdWdpbiBzZXR0aW5nOiAke3RoaXMucHJvcGVydHlOYW1lfS4gVXNpbmcgZGVmYXVsdCB2YWx1ZSBpbnN0ZWFkLmAsIHtcbiAgICAgIGRlZmF1bHRWYWx1ZTogdGhpcy5kZWZhdWx0VmFsdWUsXG4gICAgICBwcm9wZXJ0eU5hbWU6IHRoaXMucHJvcGVydHlOYW1lLFxuICAgICAgdmFsaWRhdGlvbk1lc3NhZ2U6IHRoaXMuX3ZhbGlkYXRpb25NZXNzYWdlLFxuICAgICAgdmFsdWVcbiAgICB9KTtcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7OztBQW1CQSxTQUFTLFlBQVk7QUFDckIsU0FBUyxrQkFBa0I7QUFDM0IsU0FBUyx1QkFBdUI7QUFDaEMsU0FBUywyQkFBMkI7QUFDcEMsU0FBUyx3QkFBd0I7QUFDakMsU0FBUyxzQ0FBc0M7QUFFL0MsTUFBTSxxQkFBcUIsSUFBSSxpQkFBaUI7QUFBQSxFQUM5QyxJQUFJLCtCQUErQjtBQUFBLEVBQ25DLElBQUksZ0JBQWdCO0FBQUEsRUFDcEIsSUFBSSxvQkFBb0I7QUFDMUIsQ0FBQztBQUlELE1BQWUsaUJBQXdGO0FBQUEsRUFDOUYsWUFBK0IsWUFBMkM7QUFBM0M7QUFBQSxFQUE0QztBQUFBLEVBRTNFLElBQUksUUFBd0IsTUFBZ0M7QUFDakUsVUFBTSxTQUFTO0FBQ2YsUUFBSSxPQUFPLFNBQVMsVUFBVTtBQUM1QixhQUFPLE9BQU8sSUFBSTtBQUFBLElBQ3BCO0FBRUEsVUFBTSxXQUFXLEtBQUssV0FBVyxJQUFJLElBQUk7QUFDekMsUUFBSSxDQUFDLFVBQVU7QUFDYixhQUFPLE9BQU8sSUFBSTtBQUFBLElBQ3BCO0FBRUEsV0FBTyxLQUFLLGlCQUFpQixRQUFRO0FBQUEsRUFDdkM7QUFHRjtBQUVBLE1BQU0scUNBQW9FLGlCQUFpQztBQUFBLEVBQ2pHLG9CQUFvQixRQUFRLFFB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
282
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL1BsdWdpbi9QbHVnaW5TZXR0aW5nc01hbmFnZXJCYXNlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIFBsdWdpbiBzZXR0aW5ncyBtYW5hZ2VyIGJhc2UgY2xhc3MuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7XG4gIFByb21pc2FibGUsXG4gIFJlYWRvbmx5RGVlcFxufSBmcm9tICd0eXBlLWZlc3QnO1xuXG5pbXBvcnQgdHlwZSB7IFRyYW5zZm9ybWVyIH0gZnJvbSAnLi4vLi4vVHJhbnNmb3JtZXJzL1RyYW5zZm9ybWVyLnRzJztcbmltcG9ydCB0eXBlIHtcbiAgTWF5YmVSZXR1cm4sXG4gIFN0cmluZ0tleXNcbn0gZnJvbSAnLi4vLi4vVHlwZS50cyc7XG5pbXBvcnQgdHlwZSB7XG4gIEV4dHJhY3RQbHVnaW5TZXR0aW5ncyxcbiAgUGx1Z2luQmFzZVxufSBmcm9tICcuL1BsdWdpbkJhc2UudHMnO1xuXG5pbXBvcnQgeyBub29wIH0gZnJvbSAnLi4vLi4vRnVuY3Rpb24udHMnO1xuaW1wb3J0IHsgZ2V0QWxsS2V5cyB9IGZyb20gJy4uLy4uL09iamVjdC50cyc7XG5pbXBvcnQgeyBEYXRlVHJhbnNmb3JtZXIgfSBmcm9tICcuLi8uLi9UcmFuc2Zvcm1lcnMvRGF0ZVRyYW5zZm9ybWVyLnRzJztcbmltcG9ydCB7IER1cmF0aW9uVHJhbnNmb3JtZXIgfSBmcm9tICcuLi8uLi9UcmFuc2Zvcm1lcnMvRHVyYXRpb25UcmFuc2Zvcm1lci50cyc7XG5pbXBvcnQgeyBHcm91cFRyYW5zZm9ybWVyIH0gZnJvbSAnLi4vLi4vVHJhbnNmb3JtZXJzL0dyb3VwVHJhbnNmb3JtZXIudHMnO1xuaW1wb3J0IHsgU2tpcFByaXZhdGVQcm9wZXJ0eVRyYW5zZm9ybWVyIH0gZnJvbSAnLi4vLi4vVHJhbnNmb3JtZXJzL1NraXBQcml2YXRlUHJvcGVydHlUcmFuc2Zvcm1lci50cyc7XG5cbmNvbnN0IGRlZmF1bHRUcmFuc2Zvcm1lciA9IG5ldyBHcm91cFRyYW5zZm9ybWVyKFtcbiAgbmV3IFNraXBQcml2YXRlUHJvcGVydHlUcmFuc2Zvcm1lcigpLFxuICBuZXcgRGF0ZVRyYW5zZm9ybWVyKCksXG4gIG5ldyBEdXJhdGlvblRyYW5zZm9ybWVyKClcbl0pO1xuXG50eXBlIFZhbGlkYXRvcjxUPiA9ICh2YWx1ZTogVCkgPT4gUHJvbWlzYWJsZTxNYXliZVJldHVybjxzdHJpbmc+PjtcblxuYWJzdHJhY3QgY2xhc3MgUHJveHlIYW5kbGVyQmFzZTxQbHVnaW5TZXR0aW5ncyBleHRlbmRzIG9iamVjdD4gaW1wbGVtZW50cyBQcm94eUhhbmRsZXI8UGx1Z2luU2V0dGluZ3M+IHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKHByb3RlY3RlZCByZWFkb25seSBwcm9wZXJ0aWVzOiBQcm9wZXJ0aWVzTWFwPFBsdWdpblNldHRpbmdzPikge31cblxuICBwdWJsaWMgZ2V0KHRhcmdldDogUGx1Z2luU2V0dGluZ3MsIHByb3A6IHN0cmluZyB8IHN5bWJvbCk6IHVua25vd24ge1xuICAgIGNvbnN0IHJlY29yZCA9IHRhcmdldCBhcyBSZWNvcmQ8c3RyaW5nIHwgc3ltYm9sLCB1bmtub3duPjtcbiAgICBpZiAodHlwZW9mIHByb3AgIT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gcmVjb3JkW3Byb3BdO1xuICAgIH1cblxuICAgIGNvbnN0IHByb3BlcnR5ID0gdGhpcy5wcm9wZXJ0aWVzLmdldChwcm9wKTtcbiAgICBpZiAoIXByb3BlcnR5KSB7XG4gICAgICByZXR1cm4gcmVjb3JkW3Byb3BdO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmdldFByb3BlcnR5VmFsdWUocHJvcGVydHkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGdldFByb3BlcnR5VmFsdWUocHJvcGVydHk6IFBsdWdpblNldHRpbmdzUHJvcGVydHk8dW5rbm93bj4pOiB1bmtub3duO1xufVxuXG5jbGFzcyBFZGl0YWJsZVNldHRpbmdzUHJveHlIYW5kbGVyPFBsdWdpblNldHRpbmdzIGV4dGVuZHMgb2JqZWN0PiBleHRlbmRzIFByb3h5SGFuZGxlckJhc2U8UGx1Z2luU2V0dGluZ3M+IHtcbiAgcHJpdmF0ZSB2YWxpZGF0aW9uUHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSgpO1xuICBwdWJsaWMgc2V0KHRhcmdldDogUGx1Z2luU2V0dGluZ3MsIHByb3A6IHN0cmluZyB8IHN5bWJvbCwgdmFsdWU6IHVua25vd24pOiBib29sZWFuIHtcbiAgICBjb25zdCByZWNvcmQgPSB0YXJnZXQgYXMgUmVjb3JkPHN0cmluZyB8IHN5bWJvbCwgdW5rbm93bj47XG5cbiAgICBpZiAodHlwZW9mIHByb3AgIT09ICdzdHJpbmcnKSB7XG4gICAgICByZWNvcmRbcHJvcF0gPSB2YWx1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IHByb3BlcnR5ID0gdGhpcy5wcm9wZXJ0aWVzLmdldChwcm9wKTtcbiAgICBpZiAoIXByb3BlcnR5KSB7XG4gICAgICByZWNvcmRbcHJvcF0gPSB2YWx1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHByb3BlcnR5LnNldFZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLnZhbGlkYXRpb25Qcm9taXNlID0gdGhpcy52YWxpZGF0aW9uUHJvbWlzZS50aGVuKCgpID0+IHByb3BlcnR5LnNldFZhbHVlQW5kVmFsaWRhdGUodmFsdWUpKTtcblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGdldFByb3BlcnR5VmFsdWUocHJvcGVydHk6IFBsdWdpblNldHRpbmdzUHJvcGVydHk8dW5rbm93bj4pOiB1bmtub3duIHtcbiAgICByZXR1cm4gcHJvcGVydHkuY3VycmVudFZhbHVlO1xuICB9XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5jbGFzcyBQcm9wZXJ0aWVzTWFwPFBsdWdpblNldHRpbmdzIGV4dGVuZHMgb2JqZWN0PiBleHRlbmRzIE1hcDxzdHJpbmcsIFBsdWdpblNldHRpbmdzUHJvcGVydHk8YW55Pj4ge1xuICBwdWJsaWMgZ2V0VHlwZWQ8UHJvcGVydHlOYW1lIGV4dGVuZHMgU3RyaW5nS2V5czxQbHVnaW5TZXR0aW5ncz4+KHByb3BlcnR5TmFtZTogUHJvcGVydHlOYW1lKTogUGx1Z2luU2V0dGluZ3NQcm9wZXJ0eTxQbHVnaW5TZXR0aW5nc1tQcm9wZXJ0eU5hbWVdPiB7XG4gICAgY29uc3QgcHJvcGVydHkgPSBzdXBlci5nZXQocHJvcGVydHlOYW1lKTtcbiAgICBpZiAoIXByb3BlcnR5KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFByb3BlcnR5ICR7U3RyaW5nKHByb3BlcnR5TmFtZSl9IG5vdCBmb3VuZGApO1xuICAgIH1cblxuICAgIHJldHVybiBwcm9wZXJ0eSBhcyBQbHVnaW5TZXR0aW5nc1Byb3BlcnR5PFBsdWdpblNldHRpbmdzW1Byb3BlcnR5TmFtZV0+O1xuICB9XG5cbiAgcHVibGljIHNldFR5cGVkPFByb3BlcnR5TmFtZSBleHRlbmRzIFN0cmluZ0tleXM8UGx1Z2luU2V0dGluZ3M+PihcbiAgICBwcm9wZXJ0eU5hbWU6IFByb3BlcnR5TmFtZSxcbiAgICB2YWx1ZTogUGx1Z2luU2V0dGluZ3NQcm9wZXJ0eTxQbHVnaW5TZXR0aW5nc1tQcm9wZXJ0eU5hbWVdPlxuICApOiB0aGlzIHtcbiAgICByZXR1cm4gc3VwZXIuc2V0KHByb3BlcnR5TmFtZSwgdmFsdWUpO1xuICB9XG59XG5cbmNsYXNzIFNhZmVTZXR0aW5nc1Byb3h5SGFuZGxlcjxQbHVnaW5TZXR0aW5ncyBleHRlbmRzIG9iamVjdD4gZXh0ZW5kcyBQcm94eUhhbmRsZXJCYXNlPFBsdWdpblNldHRpbmdzPiB7XG4gIHByb3RlY3RlZCBvdmVycmlkZSBnZXRQcm9wZXJ0eVZhbHVlKHByb3BlcnR5OiBQbHVnaW5TZXR0aW5nc1Byb3BlcnR5PHVua25vd24+KTogdW5rbm93biB7XG4gICAgcmV0dXJuIHByb3BlcnR5LnNhZmVWYWx1ZTtcbiAgfVxufVxuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIG1hbmFnaW5nIHBsdWdpbiBzZXR0aW5ncy5cbiAqXG4gKiBAdHlwZVBhcmFtIFBsdWdpblNldHRpbmdzIC0gVGhlIHR5cGUgcmVwcmVzZW50aW5nIHRoZSBwbHVnaW4gc2V0dGluZ3Mgb2JqZWN0LlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFBsdWdpblNldHRpbmdzTWFuYWdlckJhc2U8UGx1Z2luIGV4dGVuZHMgUGx1Z2luQmFzZTxhbnk+PiB7XG4gIHB1YmxpYyByZWFkb25seSBhcHA6IEFwcDtcbiAgcHVibGljIHJlYWRvbmx5IHNhZmVTZXR0aW5nczogUmVhZG9ubHlEZWVwPEV4dHJhY3RQbHVnaW5TZXR0aW5nczxQbHVnaW4+PjtcblxuICBwcml2YXRlIGRlZmF1bHRTZXR0aW5nczogRXh0cmFjdFBsdWdpblNldHRpbmdzPFBsdWdpbj47XG4gIHByaXZhdGUgcHJvcGVydGllczogUHJvcGVydGllc01hcDxFeHRyYWN0UGx1Z2luU2V0dGluZ3M8UGx1Z2luPj47XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIHByaXZhdGUgdmFsaWRhdG9yczogTWFwPHN0cmluZywgVmFsaWRhdG9yPGFueT4+ID0gbmV3IE1hcDxzdHJpbmcsIFZhbGlkYXRvcjxhbnk+PigpO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgcGx1Z2luOiBQbHVnaW4pIHtcbiAgICB0aGlzLmFwcCA9IHBsdWdpbi5hcHA7XG4gICAgdGhpcy5kZWZhdWx0U2V0dGluZ3MgPSB0aGlzLmNyZWF0ZURlZmF1bHRTZXR0aW5ncygpO1xuXG4gICAgdGhpcy5hZGRWYWxpZGF0b3JzKCk7XG5cbiAgICB0aGlzLnByb3BlcnRpZXMgPSBuZXcgUHJvcGVydGllc01hcDxFeHRyYWN0UGx1Z2luU2V0dGluZ3M8UGx1Z2luPj4oKTtcblxuICAgIGZvciAoY29uc3QgcHJvcGVydHlOYW1lIG9mIGdldEFsbEtleXModGhpcy5kZWZhdWx0U2V0dGluZ3MpKSB7XG4gICAgICB0aGlzLnByb3BlcnRpZXMuc2V0KFxuICAgICAgICBwcm9wZXJ0eU5hbWUsXG4gICAgICAgIG5ldyBQbHVnaW5TZXR0aW5nc1Byb3BlcnR5KHByb3BlcnR5TmFtZSwgdGhpcy5kZWZhdWx0U2V0dGluZ3NbcHJvcGVydHlOYW1lXSwgdGhpcy52YWxpZGF0b3JzLmdldChwcm9wZXJ0eU5hbWUpID8/IG5vb3ApXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMudmFsaWRhdG9ycy5jbGVhcigpO1xuXG4gICAgdGhpcy5zYWZlU2V0dGluZ3MgPSBuZXcgUHJveHkodGhpcy5kZWZhdWx0U2V0dGluZ3MsIG5ldyBTYWZlU2V0dGluZ3NQcm94eUhhbmRsZXI8RXh0cmFjdFBsdWdpblNldHRpbmdzPFBsdWdpbj4+KHRoaXMucHJvcGVydGllcykpIGFzIFJlYWRvbmx5RGVlcDxcbiAgICAgIEV4dHJhY3RQbHVnaW5TZXR0aW5nczxQbHVnaW4+XG4gICAgPjtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBlZGl0QW5kU2F2ZShlZGl0b3I6IChzZXR0aW5nczogRXh0cmFjdFBsdWdpblNldHRpbmdzPFBsdWdpbj4pID0+IFByb21pc2FibGU8dm9pZD4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBlZGl0YWJsZVNldHRpbmdzID0gbmV3IFByb3h5KHRoaXMuZGVmYXVsdFNldHRpbmdzLCBuZXcgRWRpdGFibGVTZXR0aW5nc1Byb3h5SGFuZGxlcjxFeHRyYWN0UGx1Z2luU2V0dGluZ3M8UGx1Z2luPj4odGhpcy5wcm9wZXJ0aWVzKSkgYXMge1xuICAgICAgdmFsaWRhdGlvblByb21pc2U6IFByb21pc2U8dm9pZD47XG4gICAgfSAmIEV4dHJhY3RQbHVnaW5TZXR0aW5nczxQbHVnaW4+O1xuICAgIGF3YWl0IGVkaXRvcihlZGl0YWJsZVNldHRpbmdzKTtcbiAgICBhd2FpdCBlZGl0YWJsZVNldHRpbmdzLnZhbGlkYXRpb25Qcm9taXNlO1xuICAgIGF3YWl0IHRoaXMuc2F2ZVRvRmlsZSgpO1xuICB9XG5cbiAgcHVibGljIGdldFByb3BlcnR5PFByb3BlcnR5TmFtZSBleHRlbmRzIFN0cmluZ0tleXM8RXh0cmFjdFBsdWdpblNldHRpbmdzPFBsdWdpbj4+PihcbiAgICBwcm9wZXJ0eU5hbWU6IFByb3BlcnR5TmFtZVxuICApOiBQbHVnaW5TZXR0aW5nc1Byb3BlcnR5PEV4dHJhY3RQbHVnaW5TZXR0aW5nczxQbHVnaW4+W1Byb3BlcnR5TmFtZV0+IHtcbiAgICByZXR1cm4gdGhpcy5wcm9wZXJ0aWVzLmdldFR5cGVkKHByb3BlcnR5TmFtZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgbG9hZEZyb21GaWxlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGZvciAoY29uc3QgcHJvcGVydHkgb2YgdGhpcy5wcm9wZXJ0aWVzLnZhbHVlcygpKSB7XG4gICAgICBwcm9wZXJ0eS5yZXNldCgpO1xuICAgIH1cblxuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLnBsdWdpbi5sb2FkRGF0YSgpIGFzIHVua25vd247XG5cbiAgICBpZiAoZGF0YSA9PT0gdW5kZWZpbmVkIHx8IGRhdGEgPT09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGRhdGEgIT09ICdvYmplY3QnIHx8IEFycmF5LmlzQXJyYXkoZGF0YSkpIHtcbiAgICAgIGNvbnN0IHR5cGUgPSBBcnJheS5pc0FycmF5KGRhdGEpID8gJ0FycmF5JyA6IHR5cGVvZiBkYXRhO1xuICAgICAgY29uc29sZS5lcnJvcihgSW52YWxpZCBkYXRhIHR5cGUuIEV4cGVjdGVkIE9iamVjdCwgZ290OiAke3R5cGV9YCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IHJlY29yZCA9IGRhdGEgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgY29uc3Qgb3JpZ2luYWxKc29uID0gSlNPTi5zdHJpbmdpZnkocmVjb3JkKTtcbiAgICByZWNvcmQgPSB0aGlzLmdldFRyYW5zZm9ybWVyKCkudHJhbnNmb3JtT2JqZWN0UmVjdXJzaXZlbHkocmVjb3JkKTtcbiAgICBhd2FpdCB0aGlzLm9uTG9hZFJlY29yZChyZWNvcmQpO1xuXG4gICAgY29uc3QgcHJvcGVydGllc1RvU2F2ZTogUGx1Z2luU2V0dGluZ3NQcm9wZXJ0eTx1bmtub3duPltdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IFtwcm9wZXJ0eU5hbWUsIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhyZWNvcmQpKSB7XG4gICAgICBjb25zdCBwcm9wZXJ0eSA9IHRoaXMucHJvcGVydGllcy5nZXQocHJvcGVydHlOYW1lKTtcbiAgICAgIGlmICghcHJvcGVydHkpIHtcbiAgICAgICAgY29uc29sZS53YXJuKGBVbmtub3duIHByb3BlcnR5OiAke3Byb3BlcnR5TmFtZX1gKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IHR5cGVvZiBwcm9wZXJ0eS5kZWZhdWx0VmFsdWUpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdJbnZhbGlkIHZhbHVlIHR5cGUnLCB7XG4gICAgICAgICAgcHJvcGVydHlOYW1lLFxuICAgICAgICAgIHByb3BlcnR5VHlwZTogdHlwZW9mIHByb3BlcnR5LmRlZmF1bHRWYWx1ZSxcbiAgICAgICAgICB2YWx1ZVxuICAgICAgICB9KTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHByb3BlcnR5LnNldFZhbHVlKHZhbHVlKTtcbiAgICAgIHByb3BlcnRpZXNUb1NhdmUucHVzaChwcm9wZXJ0eSk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzVG9TYXZlKSB7XG4gICAgICBhd2FpdCBwcm9wZXJ0eS5zZXRWYWx1ZUFuZFZhbGlkYXRlKHByb3BlcnR5LmN1cnJlbnRWYWx1ZSk7XG4gICAgICBwcm9wZXJ0eS5zYXZlKCk7XG4gICAgfVxuXG4gICAgY29uc3QgbmV3SnNvbiA9IEpTT04uc3RyaW5naWZ5KGF3YWl0IHRoaXMucHJlcGFyZVJlY29yZFRvU2F2ZSgpKTtcblxuICAgIGlmIChuZXdKc29uICE9PSBvcmlnaW5hbEpzb24pIHtcbiAgICAgIGF3YWl0IHRoaXMuc2F2ZVRvRmlsZUltcGwoKTtcbiAgICB9XG5cbiAgICBhd2FpdCB0aGlzLnBsdWdpbi5vbkxvYWRTZXR0aW5ncyh0aGlzLmdldFNhdmVkU2V0dGluZ3MoKSk7XG4gIH1cblxuICAvKipcbiAgICogU2F2ZXMgdGhlIG5ldyBwbHVnaW4gc2V0dGluZ3MuXG4gICAqXG4gICAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgc2V0dGluZ3MgYXJlIHNhdmVkLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIHNhdmVUb0ZpbGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qgb2xkU2V0dGluZ3MgPSB0aGlzLmdldFNhdmVkU2V0dGluZ3MoKTtcblxuICAgIGxldCBoYXNDaGFuZ2VzID0gZmFsc2U7XG5cbiAgICBmb3IgKGNvbnN0IHByb3BlcnR5IG9mIHRoaXMucHJvcGVydGllcy52YWx1ZXMoKSkge1xuICAgICAgaGFzQ2hhbmdlcyB8fD0gcHJvcGVydHkuc2F2ZSgpO1xuICAgIH1cblxuICAgIGlmICghaGFzQ2hhbmdlcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGF3YWl0IHRoaXMuc2F2ZVRvRmlsZUltcGwoKTtcbiAgICBhd2FpdCB0aGlzLnBsdWdpbi5vblNhdmVTZXR0aW5ncyh0aGlzLmdldFNhdmVkU2V0dGluZ3MoKSwgb2xkU2V0dGluZ3MpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFkZFZhbGlkYXRvcjxQcm9wZXJ0eU5hbWUgZXh0ZW5kcyBTdHJpbmdLZXlzPEV4dHJhY3RQbHVnaW5TZXR0aW5nczxQbHVnaW4+Pj4oXG4gICAgcHJvcGVydHlOYW1lOiBQcm9wZXJ0eU5hbWUsXG4gICAgdmFsaWRhdG9yOiBWYWxpZGF0b3I8RXh0cmFjdFBsdWdpblNldHRpbmdzPFBsdWdpbj5bUHJvcGVydHlOYW1lXT5cbiAgKTogdm9pZCB7XG4gICAgdGhpcy52YWxpZGF0b3JzLnNldChwcm9wZXJ0eU5hbWUsIHZhbGlkYXRvcik7XG4gIH1cblxuICBwcm90ZWN0ZWQgYWRkVmFsaWRhdG9ycygpOiB2b2lkIHtcbiAgICBub29wKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgY3JlYXRlRGVmYXVsdFNldHRpbmdzKCk6IEV4dHJhY3RQbHVnaW5TZXR0aW5nczxQbHVnaW4+O1xuXG4gIHByb3RlY3RlZCBnZXRUcmFuc2Zvcm1lcigpOiBUcmFuc2Zvcm1lciB7XG4gICAgcmV0dXJuIGRlZmF1bHRUcmFuc2Zvcm1lcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiB0aGUgcGx1Z2luIHNldHRpbmdzIGFyZSBsb2FkZWQuXG4gICAqXG4gICAqIEBwYXJhbSBfcmVjb3JkIC0gVGhlIHJlY29yZC5cbiAgICovXG4gIHByb3RlY3RlZCBvbkxvYWRSZWNvcmQoX3JlY29yZDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiBQcm9taXNhYmxlPHZvaWQ+IHtcbiAgICBub29wKCk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gdGhlIHBsdWdpbiBzZXR0aW5ncyBhcmUgc2F2aW5nLlxuICAgKlxuICAgKiBAcGFyYW0gX3JlY29yZCAtIFRoZSByZWNvcmQuXG4gICAqL1xuICBwcm90ZWN0ZWQgb25TYXZpbmdSZWNvcmQoX3JlY29yZDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiBQcm9taXNhYmxlPHZvaWQ+IHtcbiAgICBub29wKCk7XG4gIH1cblxuICBwcml2YXRlIGdldFNhdmVkU2V0dGluZ3MoKTogRXh0cmFjdFBsdWdpblNldHRpbmdzPFBsdWdpbj4ge1xuICAgIGNvbnN0IHNhdmVkU2V0dGluZ3M6IFBhcnRpYWw8RXh0cmFjdFBsdWdpblNldHRpbmdzPFBsdWdpbj4+ID0ge307XG4gICAgZm9yIChjb25zdCBbcHJvcGVydHlOYW1lLCBwcm9wZXJ0eV0gb2YgdGhpcy5wcm9wZXJ0aWVzLmVudHJpZXMoKSkge1xuICAgICAgc2F2ZWRTZXR0aW5nc1twcm9wZXJ0eU5hbWUgYXMgU3RyaW5nS2V5czxFeHRyYWN0UGx1Z2luU2V0dGluZ3M8UGx1Z2luPj5dID0gcHJvcGVydHkubGFzdFNhdmVkVmFsdWUgYXNcbiAgICAgICAgfCBFeHRyYWN0UGx1Z2luU2V0dGluZ3M8UGx1Z2luPltTdHJpbmdLZXlzPEV4dHJhY3RQbHVnaW5TZXR0aW5nczxQbHVnaW4+Pl1cbiAgICAgICAgfCB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGNvbnN0IHByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMuZGVmYXVsdFNldHRpbmdzKSBhcyBvYmplY3Q7XG4gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHNhdmVkU2V0dGluZ3MsIHByb3RvKTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1yZXR1cm5cbiAgICByZXR1cm4gc2F2ZWRTZXR0aW5ncyBhcyBFeHRyYWN0UGx1Z2luU2V0dGluZ3M8UGx1Z2luPjtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcHJlcGFyZVJlY29yZFRvU2F2ZSgpOiBQcm9taXNlPFJlY29yZDxTdHJpbmdLZXlzPEV4dHJhY3RQbHVnaW5TZXR0aW5nczxQbHVnaW4+PiwgdW5rbm93bj4+IHtcbiAgICBjb25zdCBzZXR0aW5nczogUmVjb3JkPFN0cmluZ0tleXM8RXh0cmFjdFBsdWdpblNldHRpbmdzPFBsdWdpbj4+LCB1bmtub3duPiA9IHt9IGFzIFJlY29yZDxTdHJpbmdLZXlzPEV4dHJhY3RQbHVnaW5TZXR0aW5nczxQbHVnaW4+PiwgdW5rbm93bj47XG4gICAgZm9yIChjb25zdCBbcHJvcGVydHlOYW1lLCBwcm9wZXJ0eV0gb2YgdGhpcy5wcm9wZXJ0aWVzLmVudHJpZXMoKSkge1xuICAgICAgc2V0dGluZ3NbcHJvcGVydHlOYW1lIGFzIFN0cmluZ0tleXM8RXh0cmFjdFBsdWdpblNldHRpbmdzPFBsdWdpbj4+XSA9IHByb3BlcnR5LmN1cnJlbnRWYWx1ZSBhcyB1bmtub3duO1xuICAgIH1cblxuICAgIGF3YWl0IHRoaXMub25TYXZpbmdSZWNvcmQoc2V0dGluZ3MpO1xuXG4gICAgcmV0dXJuIHRoaXMuZ2V0VHJhbnNmb3JtZXIoKS50cmFuc2Zvcm1PYmplY3RSZWN1cnNpdmVseShzZXR0aW5ncyk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNhdmVUb0ZpbGVJbXBsKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMucGx1Z2luLnNhdmVEYXRhKGF3YWl0IHRoaXMucHJlcGFyZVJlY29yZFRvU2F2ZSgpKTtcbiAgfVxufVxuXG4vKipcbiAqIEEgcHJvcGVydHkgb2YgYSBwbHVnaW4gc2V0dGluZ3MuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIHByb3BlcnR5LlxuICovXG5leHBvcnQgY2xhc3MgUGx1Z2luU2V0dGluZ3NQcm9wZXJ0eTxUPiB7XG4gIHB1YmxpYyBnZXQgY3VycmVudFZhbHVlKCk6IFQge1xuICAgIHJldHVybiB0aGlzLl9jdXJyZW50VmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGxhc3RTYXZlZFZhbHVlKCk6IFQge1xuICAgIHJldHVybiB0aGlzLl9sYXN0U2F2ZWRWYWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2FmZVZhbHVlKCk6IFQge1xuICAgIHJldHVybiB0aGlzLl92YWxpZGF0aW9uTWVzc2FnZSA/IHRoaXMuZGVmYXVsdFZhbHVlIDogdGhpcy5fY3VycmVudFZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldCB2YWxpZGF0aW9uTWVzc2FnZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl92YWxpZGF0aW9uTWVzc2FnZTtcbiAgfVxuXG4gIHByaXZhdGUgX2N1cnJlbnRWYWx1ZTogVDtcblxuICBwcml2YXRlIF9sYXN0U2F2ZWRWYWx1ZTogVDtcblxuICBwcml2YXRlIF92YWxpZGF0aW9uTWVzc2FnZSA9ICcnO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHByb3BlcnR5TmFtZTogc3RyaW5nLCBwdWJsaWMgcmVhZG9ubHkgZGVmYXVsdFZhbHVlOiBULCBwcml2YXRlIHJlYWRvbmx5IHZhbGlkYXRvcjogVmFsaWRhdG9yPFQ+KSB7XG4gICAgdGhpcy5fbGFzdFNhdmVkVmFsdWUgPSBkZWZhdWx0VmFsdWU7XG4gICAgdGhpcy5fY3VycmVudFZhbHVlID0gZGVmYXVsdFZhbHVlO1xuICB9XG5cbiAgcHVibGljIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMuX2N1cnJlbnRWYWx1ZSA9IHRoaXMuZGVmYXVsdFZhbHVlO1xuICAgIHRoaXMuX3ZhbGlkYXRpb25NZXNzYWdlID0gJyc7XG4gIH1cblxuICBwdWJsaWMgc2F2ZSgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5fbGFzdFNhdmVkVmFsdWUgPT09IHRoaXMuX2N1cnJlbnRWYWx1ZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHRoaXMuX2xhc3RTYXZlZFZhbHVlID0gdGhpcy5fY3VycmVudFZhbHVlO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHVibGljIHNldFZhbGlkYXRpb25NZXNzYWdlKHZhbGlkYXRpb25NZXNzYWdlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLl92YWxpZGF0aW9uTWVzc2FnZSA9IHZhbGlkYXRpb25NZXNzYWdlO1xuICAgIHRoaXMuc2hvd1dhcm5pbmcoKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRWYWx1ZSh2YWx1ZTogVCk6IHZvaWQge1xuICAgIHRoaXMuX2N1cnJlbnRWYWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHNldFZhbHVlQW5kVmFsaWRhdGUodmFsdWU6IFQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLnNldFZhbHVlKHZhbHVlKTtcbiAgICB0cnkge1xuICAgICAgdGhpcy5fdmFsaWRhdGlvbk1lc3NhZ2UgPSAoYXdhaXQgdGhpcy52YWxpZGF0b3IodGhpcy5fY3VycmVudFZhbHVlKSBhcyBzdHJpbmcgfCB1bmRlZmluZWQpID8/ICcnO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdWYWxpZGF0aW9uIGZhaWxlZCcsIHtcbiAgICAgICAgcHJvcGVydHlOYW1lOiB0aGlzLnByb3BlcnR5TmFtZSxcbiAgICAgICAgdmFsdWVcbiAgICAgIH0sIGVycm9yKTtcbiAgICAgIHRoaXMuX3ZhbGlkYXRpb25NZXNzYWdlID0gJ1ZhbGlkYXRpb24gZmFpbGVkJztcbiAgICB9XG4gICAgdGhpcy5zaG93V2FybmluZyh2YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIHNob3dXYXJuaW5nKHZhbHVlPzogVCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fdmFsaWRhdGlvbk1lc3NhZ2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zb2xlLndhcm4oYENvdWxkIG5vdCBzZXQgcGx1Z2luIHNldHRpbmc6ICR7dGhpcy5wcm9wZXJ0eU5hbWV9LiBVc2luZyBkZWZhdWx0IHZhbHVlIGluc3RlYWQuYCwge1xuICAgICAgZGVmYXVsdFZhbHVlOiB0aGlzLmRlZmF1bHRWYWx1ZSxcbiAgICAgIHByb3BlcnR5TmFtZTogdGhpcy5wcm9wZXJ0eU5hbWUsXG4gICAgICB2YWxpZGF0aW9uTWVzc2FnZTogdGhpcy5fdmFsaWRhdGlvbk1lc3NhZ2UsXG4gICAgICB2YWx1ZVxuICAgIH0pO1xuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7O0FBc0JB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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "obsidian-dev-utils",
3
- "version": "22.1.1-beta.26",
3
+ "version": "22.1.1-beta.27",
4
4
  "description": "This is the collection of useful functions that you can use for your Obsidian plugin development",
5
5
  "keywords": [
6
6
  "obsidian"