obsidian-typings 2.2.1-beta.8 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/.gitattributes ADDED
@@ -0,0 +1 @@
1
+ * text=auto eol=lf
package/README.md CHANGED
@@ -79,20 +79,20 @@ Be aware that the typings currently only cover a subset of the full API: while m
79
79
 
80
80
  3. **Explicit type importing**
81
81
 
82
- If you prefer not to add `obsidian-typings` to your `types`, you can also add `import "obsidian-typings";` to any project file.
82
+ If you prefer not to add `obsidian-typings` to your `types`, you can also add `import 'obsidian-typings';` to any project file.
83
83
 
84
84
 
85
85
 
86
86
  4. **Using `obsidian-typings/implementations`** <span id="using-obsidian-typings-implementations"></span>
87
87
 
88
- Depending on how your project is set up, `import { X } from "obsidian-typings/implementations";` may not work straight out of the box, e.g., if you have `"moduleResolution": "node"` or `"node10"` in your `tsconfig.json`
88
+ Depending on how your project is set up, `import { X } from 'obsidian-typings/implementations';` may not work straight out of the box, e.g., if you have `"moduleResolution": "node"` or `"node10"` in your `tsconfig.json`
89
89
 
90
90
  To solve this, you can add the following to your `tsconfig.json`:
91
91
 
92
92
  ```json
93
93
  {
94
94
  "compilerOptions": {
95
- ...
95
+ "...": "...",
96
96
  "paths": {
97
97
  "obsidian-typings/implementations": [
98
98
  "./node_modules/obsidian-typings/dist/implementations.d.ts",
@@ -110,7 +110,7 @@ Be aware that the typings currently only cover a subset of the full API: while m
110
110
  To access types from the `obsidian` module, the import syntax does not change:
111
111
 
112
112
  ```ts
113
- import { App } from "obsidian";
113
+ import { App } from 'obsidian';
114
114
 
115
115
  function printInternalPlugins(app: App): void {
116
116
  console.log(app.internalPlugins);
@@ -122,7 +122,7 @@ function printInternalPlugins(app: App): void {
122
122
  Additional interfaces added by this package (which do not exist in the official API), can be imported using:
123
123
 
124
124
  ```ts
125
- import { InternalPlugins } from "obsidian-typings";
125
+ import { InternalPlugins } from 'obsidian-typings';
126
126
 
127
127
  const internalPlugins: InternalPlugins = this.app.internalPlugins;
128
128
  ```
@@ -132,7 +132,7 @@ const internalPlugins: InternalPlugins = this.app.internalPlugins;
132
132
  Additional helper functions/types/... added by this package can be used by importing from `obsidian-typings/implementations`:
133
133
 
134
134
  ```ts
135
- import { InternalPluginName } from "obsidian-typings/implementations";
135
+ import { InternalPluginName } from 'obsidian-typings/implementations';
136
136
 
137
137
  this.app.internalPlugins.getEnabledPluginById(InternalPluginName.FileExplorer);
138
138
  ```
@@ -145,7 +145,7 @@ If you need to extend the typings provided by this package, add the following to
145
145
 
146
146
  ```ts
147
147
  export {}; // This is a very essential line. If you don't have any other top-level `import/export` statements, those typings will work not as expected.
148
- declare module "obsidian-typings" {
148
+ declare module 'obsidian-typings' {
149
149
  interface PluginsPluginsRecord {
150
150
  myPlugin: MyPlugin;
151
151
  }
@@ -26,8 +26,17 @@ var implementations_exports = {};
26
26
  __export(implementations_exports, {
27
27
  CustomArrayDictImpl: () => CustomArrayDictImpl,
28
28
  InternalPluginName: () => InternalPluginName,
29
+ constructApp: () => constructApp,
30
+ constructInternalPlugin: () => constructInternalPlugin,
31
+ constructInternalPlugins: () => constructInternalPlugins,
32
+ constructTFile: () => constructTFile,
33
+ constructTFolder: () => constructTFolder,
29
34
  createTFileInstance: () => createTFileInstance,
30
35
  createTFolderInstance: () => createTFolderInstance,
36
+ isEmbedCache: () => isEmbedCache,
37
+ isFrontmatterLinkCache: () => isFrontmatterLinkCache,
38
+ isLinkCache: () => isLinkCache,
39
+ isReferenceCache: () => isReferenceCache,
31
40
  parentFolderPath: () => parentFolderPath
32
41
  });
33
42
  module.exports = __toCommonJS(implementations_exports);
@@ -37,79 +46,66 @@ function parentFolderPath(path) {
37
46
  return path.replace(/\/?[^\/]*$/, "") || "/";
38
47
  }
39
48
 
40
- // src/obsidian/implementations/createTFolderInstance.ts
49
+ // src/obsidian/implementations/Constructors/constructTFolder.ts
41
50
  var import_obsidian = require("obsidian");
51
+ function constructTFolder(vault, path) {
52
+ return new import_obsidian.TFolder(vault, path);
53
+ }
54
+
55
+ // src/obsidian/implementations/createTFolderInstance.ts
42
56
  function createTFolderInstance(vault, path) {
43
57
  let folder = vault.getFolderByPath(path);
44
58
  if (folder) {
45
59
  return folder;
46
60
  }
47
- folder = new import_obsidian.TFolder(vault, path);
61
+ folder = constructTFolder(vault, path);
48
62
  folder.parent = createTFolderInstance(vault, parentFolderPath(path));
49
63
  folder.deleted = true;
50
64
  return folder;
51
65
  }
52
66
 
53
- // src/obsidian/implementations/createTFileInstance.ts
54
- var import_obsidian2 = require("obsidian");
55
- function createTFileInstance(vault, path) {
56
- let file = vault.getFileByPath(path);
57
- if (file) {
58
- return file;
59
- }
60
- file = new import_obsidian2.TFile(vault, path);
61
- file.parent = createTFolderInstance(vault, parentFolderPath(path));
62
- file.deleted = true;
63
- return file;
64
- }
65
-
66
67
  // src/obsidian/implementations/CustomArrayDictImpl.ts
67
68
  var CustomArrayDictImpl = class {
68
- data = {};
69
+ data = /* @__PURE__ */ new Map();
69
70
  add(key, value) {
70
- if (!this.data.hasOwnProperty(key)) {
71
- this.data[key] = [];
71
+ let values = this.get(key);
72
+ if (!values) {
73
+ values = [];
74
+ this.data.set(key, []);
72
75
  }
73
- const values = this.data[key];
74
76
  if (!values.includes(value)) {
75
77
  values.push(value);
76
78
  }
77
79
  }
78
80
  remove(key, value) {
79
- const values = this.data[key];
81
+ const values = this.get(key);
80
82
  if (!values) {
81
83
  return;
82
84
  }
83
85
  values.remove(value);
84
86
  if (values.length === 0) {
85
- delete this.data[key];
87
+ this.clear(key);
86
88
  }
87
89
  }
88
- removeKey(key) {
89
- delete this.data[key];
90
- }
91
90
  get(key) {
92
- return this.data.hasOwnProperty(key) ? this.data[key] : null;
91
+ return this.data.get(key) || null;
93
92
  }
94
93
  keys() {
95
- return Object.keys(this.data);
94
+ return Array.from(this.data.keys());
96
95
  }
97
96
  clear(key) {
98
- delete this.data[key];
97
+ this.data.delete(key);
99
98
  }
100
99
  clearAll() {
101
- this.data = {};
100
+ this.data.clear();
102
101
  }
103
102
  contains(key, value) {
104
- const values = this.data[key];
105
- return values && values.contains(value) || false;
103
+ return !!this.get(key)?.contains(value);
106
104
  }
107
105
  count() {
108
106
  let ans = 0;
109
- for (const key in this.data) {
110
- if (this.data.hasOwnProperty(key)) {
111
- ans += this.data[key].length;
112
- }
107
+ for (const key in this.keys()) {
108
+ ans += this.get(key)?.length ?? 0;
113
109
  }
114
110
  return ans;
115
111
  }
@@ -138,7 +134,6 @@ var InternalPluginName = {
138
134
  RandomNote: "random-note",
139
135
  SlashCommand: "slash-command",
140
136
  Slides: "slides",
141
- Starred: "starred",
142
137
  Switcher: "switcher",
143
138
  Sync: "sync",
144
139
  TagPane: "tag-pane",
@@ -147,4 +142,62 @@ var InternalPluginName = {
147
142
  Workspaces: "workspaces",
148
143
  ZkPrefixer: "zk-prefixer"
149
144
  };
150
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9pbmRleC50cyIsICIuLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL1BhdGhVdGlscy50cyIsICIuLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NyZWF0ZVRGb2xkZXJJbnN0YW5jZS50cyIsICIuLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NyZWF0ZVRGaWxlSW5zdGFuY2UudHMiLCAiLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9DdXN0b21BcnJheURpY3RJbXBsLnRzIiwgIi4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvSW50ZXJuYWxQbHVnaW5OYW1lLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKiBUSElTIElTIEEgR0VORVJBVEVEL0JVTkRMRUQgRklMRSBCWSBCVUlMRCBTQ1JJUFQgKi9cblxuZXhwb3J0ICogZnJvbSBcIi4vUGF0aFV0aWxzLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jcmVhdGVURm9sZGVySW5zdGFuY2UuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NyZWF0ZVRGaWxlSW5zdGFuY2UuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL0N1c3RvbUFycmF5RGljdEltcGwuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL0ludGVybmFsUGx1Z2luTmFtZS5qc1wiO1xuaW1wb3J0IFwiLi4vLi4vaW5kZXguanNcIjtcbiIsICJleHBvcnQgZnVuY3Rpb24gcGFyZW50Rm9sZGVyUGF0aChwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBwYXRoLnJlcGxhY2UoL1xcLz9bXlxcL10qJC8sIFwiXCIpIHx8IFwiL1wiO1xufVxuIiwgImltcG9ydCB7XG4gICAgVEZvbGRlcixcbiAgICB0eXBlIFZhdWx0XG59IGZyb20gXCJvYnNpZGlhblwiO1xuaW1wb3J0IHsgcGFyZW50Rm9sZGVyUGF0aCB9IGZyb20gXCIuL1BhdGhVdGlscy50c1wiO1xuXG50eXBlIFRGb2xkZXJDb25zdHJ1Y3RvciA9IHsgbmV3KHZhdWx0OiBWYXVsdCwgcGF0aDogc3RyaW5nKTogVEZvbGRlciB9O1xuXG4vKipcbiAqIENyZWF0ZXMgYW5kIHByb3Blcmx5IGluaXRpYWxpemVzIHRoZSBpbnN0YW5jZSBvZiBURm9sZGVyIGV2ZW4gdGhlIHVuZGVybHlpbmcgZm9sZGVyIGRvZXMgbm90IGV4aXN0LlxuICogVGhpcyBkb2Vzbid0IGNyZWF0ZSB0aGUgbWlzc2luZyBmb2xkZXIgb24gdGhlIGZpbGUgc3lzdGVtLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVEZvbGRlckluc3RhbmNlKHZhdWx0OiBWYXVsdCwgcGF0aDogc3RyaW5nKTogVEZvbGRlciB7XG4gICAgbGV0IGZvbGRlciA9IHZhdWx0LmdldEZvbGRlckJ5UGF0aChwYXRoKTtcbiAgICBpZiAoZm9sZGVyKSB7XG4gICAgICAgIHJldHVybiBmb2xkZXI7XG4gICAgfVxuXG4gICAgZm9sZGVyID0gbmV3IChURm9sZGVyIGFzIFRGb2xkZXJDb25zdHJ1Y3RvcikodmF1bHQsIHBhdGgpO1xuICAgIGZvbGRlci5wYXJlbnQgPSBjcmVhdGVURm9sZGVySW5zdGFuY2UodmF1bHQsIHBhcmVudEZvbGRlclBhdGgocGF0aCkpO1xuICAgIGZvbGRlci5kZWxldGVkID0gdHJ1ZTtcbiAgICByZXR1cm4gZm9sZGVyO1xufVxuIiwgImltcG9ydCB7XG4gICAgVEZpbGUsXG4gICAgdHlwZSBWYXVsdFxufSBmcm9tIFwib2JzaWRpYW5cIjtcbmltcG9ydCB7IGNyZWF0ZVRGb2xkZXJJbnN0YW5jZSB9IGZyb20gXCIuL2NyZWF0ZVRGb2xkZXJJbnN0YW5jZS50c1wiO1xuaW1wb3J0IHsgcGFyZW50Rm9sZGVyUGF0aCB9IGZyb20gXCIuL1BhdGhVdGlscy50c1wiO1xuXG50eXBlIFRGaWxlQ29uc3RydWN0b3IgPSB7IG5ldyh2YXVsdDogVmF1bHQsIHBhdGg6IHN0cmluZyk6IFRGaWxlIH07XG5cbi8qKlxuICogQ3JlYXRlcyBhbmQgcHJvcGVybHkgaW5pdGlhbGl6ZXMgdGhlIGluc3RhbmNlIG9mIFRGaWxlIGV2ZW4gdGhlIHVuZGVybHlpbmcgZmlsZSBkb2VzIG5vdCBleGlzdC5cbiAqIFRoaXMgZG9lc24ndCBjcmVhdGUgdGhlIG1pc3NpbmcgZmlsZSBvbiB0aGUgZmlsZSBzeXN0ZW0uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVURmlsZUluc3RhbmNlKHZhdWx0OiBWYXVsdCwgcGF0aDogc3RyaW5nKTogVEZpbGUge1xuICAgIGxldCBmaWxlID0gdmF1bHQuZ2V0RmlsZUJ5UGF0aChwYXRoKTtcbiAgICBpZiAoZmlsZSkge1xuICAgICAgICByZXR1cm4gZmlsZTtcbiAgICB9XG5cbiAgICBmaWxlID0gbmV3IChURmlsZSBhcyBURmlsZUNvbnN0cnVjdG9yKSh2YXVsdCwgcGF0aCk7XG4gICAgZmlsZS5wYXJlbnQgPSBjcmVhdGVURm9sZGVySW5zdGFuY2UodmF1bHQsIHBhcmVudEZvbGRlclBhdGgocGF0aCkpO1xuICAgIGZpbGUuZGVsZXRlZCA9IHRydWU7XG4gICAgcmV0dXJuIGZpbGU7XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBDdXN0b21BcnJheURpY3QgfSBmcm9tIFwiLi4vaW50ZXJuYWxzL0N1c3RvbUFycmF5RGljdC9DdXN0b21BcnJheURpY3QuanNcIjtcbmltcG9ydCB0eXBlIHsgQ3VzdG9tQXJyYXlEaWN0RGF0YVJlY29yZCB9IGZyb20gXCIuLi9pbnRlcm5hbHMvQ3VzdG9tQXJyYXlEaWN0L0N1c3RvbUFycmF5RGljdERhdGFSZWNvcmQuanNcIjtcblxuZXhwb3J0IGNsYXNzIEN1c3RvbUFycmF5RGljdEltcGw8VD4gaW1wbGVtZW50cyBDdXN0b21BcnJheURpY3Q8VD4ge1xuICAgIHB1YmxpYyBkYXRhOiBDdXN0b21BcnJheURpY3REYXRhUmVjb3JkPFQ+ID0ge307XG5cbiAgICBwdWJsaWMgYWRkKGtleTogc3RyaW5nLCB2YWx1ZTogVCk6IHZvaWQge1xuICAgICAgICBpZiAoISh0aGlzLmRhdGEuaGFzT3duUHJvcGVydHkoa2V5KSkpIHtcbiAgICAgICAgICAgIHRoaXMuZGF0YVtrZXldID0gW10gYXMgVFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdmFsdWVzID0gdGhpcy5kYXRhW2tleV0hO1xuXG4gICAgICAgIGlmICghdmFsdWVzLmluY2x1ZGVzKHZhbHVlKSkge1xuICAgICAgICAgICAgdmFsdWVzLnB1c2godmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHJlbW92ZShrZXk6IHN0cmluZywgdmFsdWU6IFQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdmFsdWVzID0gdGhpcy5kYXRhW2tleV07XG4gICAgICAgIGlmICghdmFsdWVzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdmFsdWVzLnJlbW92ZSh2YWx1ZSk7XG5cbiAgICAgICAgaWYgKHZhbHVlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIGRlbGV0ZSB0aGlzLmRhdGFba2V5XTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyByZW1vdmVLZXkoa2V5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgZGVsZXRlIHRoaXMuZGF0YVtrZXldO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQoa2V5OiBzdHJpbmcpOiBUW10gfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YS5oYXNPd25Qcm9wZXJ0eShrZXkpID8gdGhpcy5kYXRhW2tleV0hIDogbnVsbDtcbiAgICB9XG5cbiAgICBwdWJsaWMga2V5cygpOiBzdHJpbmdbXSB7XG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLmRhdGEpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjbGVhcihrZXk6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBkZWxldGUgdGhpcy5kYXRhW2tleV07XG4gICAgfVxuXG4gICAgcHVibGljIGNsZWFyQWxsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRhdGEgPSB7fTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY29udGFpbnMoa2V5OiBzdHJpbmcsIHZhbHVlOiBUKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IHZhbHVlcyA9IHRoaXMuZGF0YVtrZXldO1xuICAgICAgICByZXR1cm4gdmFsdWVzICYmIHZhbHVlcy5jb250YWlucyh2YWx1ZSkgfHwgZmFsc2U7XG4gICAgfVxuXG4gICAgcHVibGljIGNvdW50KCk6IG51bWJlciB7XG4gICAgICAgIGxldCBhbnMgPSAwO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLmRhdGEpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmRhdGEuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgICAgICAgIGFucyArPSB0aGlzLmRhdGFba2V5XSEubGVuZ3RoO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFucztcbiAgICB9XG59XG4iLCAiZXhwb3J0IGNvbnN0IEludGVybmFsUGx1Z2luTmFtZSA9IHtcbiAgICBBdWRpb1JlY29yZGVyOiBcImF1ZGlvLXJlY29yZGVyXCIsXG4gICAgQmFja2xpbms6IFwiYmFja2xpbmtcIixcbiAgICBCb29rbWFya3M6IFwiYm9va21hcmtzXCIsXG4gICAgQ2FudmFzOiBcImNhbnZhc1wiLFxuICAgIENvbW1hbmRQYWxldHRlOiBcImNvbW1hbmQtcGFsZXR0ZVwiLFxuICAgIERhaWx5Tm90ZXM6IFwiZGFpbHktbm90ZXNcIixcbiAgICBFZGl0b3JTdGF0dXM6IFwiZWRpdG9yLXN0YXR1c1wiLFxuICAgIEZpbGVFeHBsb3JlcjogXCJmaWxlLWV4cGxvcmVyXCIsXG4gICAgRmlsZVJlY292ZXJ5OiBcImZpbGUtcmVjb3ZlcnlcIixcbiAgICBHbG9iYWxTZWFyY2g6IFwiZ2xvYmFsLXNlYXJjaFwiLFxuICAgIEdyYXBoOiBcImdyYXBoXCIsXG4gICAgTWFya2Rvd25JbXBvcnRlcjogXCJtYXJrZG93bi1pbXBvcnRlclwiLFxuICAgIE5vdGVDb21wb3NlcjogXCJub3RlLWNvbXBvc2VyXCIsXG4gICAgT3V0Z29pbmdMaW5rOiBcIm91dGdvaW5nLWxpbmtcIixcbiAgICBPdXRsaW5lOiBcIm91dGxpbmVcIixcbiAgICBQYWdlUHJldmlldzogXCJwYWdlLXByZXZpZXdcIixcbiAgICBQcm9wZXJ0aWVzOiBcInByb3BlcnRpZXNcIixcbiAgICBQdWJsaXNoOiBcInB1Ymxpc2hcIixcbiAgICBSYW5kb21Ob3RlOiBcInJhbmRvbS1ub3RlXCIsXG4gICAgU2xhc2hDb21tYW5kOiBcInNsYXNoLWNvbW1hbmRcIixcbiAgICBTbGlkZXM6IFwic2xpZGVzXCIsXG4gICAgU3RhcnJlZDogXCJzdGFycmVkXCIsXG4gICAgU3dpdGNoZXI6IFwic3dpdGNoZXJcIixcbiAgICBTeW5jOiBcInN5bmNcIixcbiAgICBUYWdQYW5lOiBcInRhZy1wYW5lXCIsXG4gICAgVGVtcGxhdGVzOiBcInRlbXBsYXRlc1wiLFxuICAgIFdvcmRDb3VudDogXCJ3b3JkLWNvdW50XCIsXG4gICAgV29ya3NwYWNlczogXCJ3b3Jrc3BhY2VzXCIsXG4gICAgWmtQcmVmaXhlcjogXCJ6ay1wcmVmaXhlclwiXG59IGFzIGNvbnN0O1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOzs7QUNBTyxTQUFTLGlCQUFpQixNQUFzQjtBQUNuRCxTQUFPLEtBQUssUUFBUSxjQUFjLEVBQUUsS0FBSztBQUM3Qzs7O0FDRkEsc0JBR087QUFTQSxTQUFTLHNCQUFzQixPQUFjLE1BQXVCO0FBQ3ZFLE1BQUksU0FBUyxNQUFNLGdCQUFnQixJQUFJO0FBQ3ZDLE1BQUksUUFBUTtBQUNSLFdBQU87QUFBQSxFQUNYO0FBRUEsV0FBUyxJQUFLLHdCQUErQixPQUFPLElBQUk7QUFDeEQsU0FBTyxTQUFTLHNCQUFzQixPQUFPLGlCQUFpQixJQUFJLENB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
145
+
146
+ // src/obsidian/implementations/Constructors/constructTFile.ts
147
+ var import_obsidian2 = require("obsidian");
148
+ function constructTFile(vault, path) {
149
+ return new import_obsidian2.TFile(vault, path);
150
+ }
151
+
152
+ // src/obsidian/implementations/createTFileInstance.ts
153
+ function createTFileInstance(vault, path) {
154
+ let file = vault.getFileByPath(path);
155
+ if (file) {
156
+ return file;
157
+ }
158
+ file = constructTFile(vault, path);
159
+ file.parent = createTFolderInstance(vault, parentFolderPath(path));
160
+ file.deleted = true;
161
+ return file;
162
+ }
163
+
164
+ // src/obsidian/implementations/TypeGuards/isReferenceCache.ts
165
+ function isReferenceCache(reference) {
166
+ return !!reference.position;
167
+ }
168
+
169
+ // src/obsidian/implementations/TypeGuards/isEmbedCache.ts
170
+ function isEmbedCache(reference) {
171
+ return isReferenceCache(reference) && reference.original[0] === "!";
172
+ }
173
+
174
+ // src/obsidian/implementations/TypeGuards/isFrontmatterLinkCache.ts
175
+ function isFrontmatterLinkCache(reference) {
176
+ return !!reference.key;
177
+ }
178
+
179
+ // src/obsidian/implementations/TypeGuards/isLinkCache.ts
180
+ function isLinkCache(reference) {
181
+ return isReferenceCache(reference) && reference.original[0] !== "!";
182
+ }
183
+
184
+ // src/obsidian/implementations/Constructors/constructInternalPlugins.ts
185
+ function constructInternalPlugins(app) {
186
+ return new app.internalPlugins.constructor(app);
187
+ }
188
+
189
+ // src/obsidian/implementations/Constructors/constructInternalPlugin.ts
190
+ function constructInternalPlugin(app, instance, internalPlugins) {
191
+ const anyPlugin = Object.values(app.internalPlugins.plugins)[0];
192
+ if (!anyPlugin) {
193
+ throw new Error("No internal plugin found");
194
+ }
195
+ return new anyPlugin.constructor(app, instance, internalPlugins);
196
+ }
197
+
198
+ // src/obsidian/implementations/Constructors/constructApp.ts
199
+ var import_obsidian3 = require("obsidian");
200
+ function constructApp(adapter, appId) {
201
+ return new import_obsidian3.App(adapter, appId);
202
+ }
203
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9pbmRleC50cyIsICIuLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL1BhdGhVdGlscy50cyIsICIuLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL0NvbnN0cnVjdG9ycy9jb25zdHJ1Y3RURm9sZGVyLnRzIiwgIi4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvY3JlYXRlVEZvbGRlckluc3RhbmNlLnRzIiwgIi4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvQ3VzdG9tQXJyYXlEaWN0SW1wbC50cyIsICIuLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL0ludGVybmFsUGx1Z2luTmFtZS50cyIsICIuLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL0NvbnN0cnVjdG9ycy9jb25zdHJ1Y3RURmlsZS50cyIsICIuLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL2NyZWF0ZVRGaWxlSW5zdGFuY2UudHMiLCAiLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9UeXBlR3VhcmRzL2lzUmVmZXJlbmNlQ2FjaGUudHMiLCAiLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9UeXBlR3VhcmRzL2lzRW1iZWRDYWNoZS50cyIsICIuLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL1R5cGVHdWFyZHMvaXNGcm9udG1hdHRlckxpbmtDYWNoZS50cyIsICIuLi9zcmMvb2JzaWRpYW4vaW1wbGVtZW50YXRpb25zL1R5cGVHdWFyZHMvaXNMaW5rQ2FjaGUudHMiLCAiLi4vc3JjL29ic2lkaWFuL2ltcGxlbWVudGF0aW9ucy9Db25zdHJ1Y3RvcnMvY29uc3RydWN0SW50ZXJuYWxQbHVnaW5zLnRzIiwgIi4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvQ29uc3RydWN0b3JzL2NvbnN0cnVjdEludGVybmFsUGx1Z2luLnRzIiwgIi4uL3NyYy9vYnNpZGlhbi9pbXBsZW1lbnRhdGlvbnMvQ29uc3RydWN0b3JzL2NvbnN0cnVjdEFwcC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyogVEhJUyBJUyBBIEdFTkVSQVRFRC9CVU5ETEVEIEZJTEUgQlkgQlVJTEQgU0NSSVBUICovXG5cbmV4cG9ydCAqIGZyb20gJy4vUGF0aFV0aWxzLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vY3JlYXRlVEZvbGRlckluc3RhbmNlLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vQ3VzdG9tQXJyYXlEaWN0SW1wbC5qcyc7XG5leHBvcnQgKiBmcm9tICcuL0ludGVybmFsUGx1Z2luTmFtZS5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2NyZWF0ZVRGaWxlSW5zdGFuY2UuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9UeXBlR3VhcmRzL2lzRW1iZWRDYWNoZS5qcyc7XG5leHBvcnQgKiBmcm9tICcuL1R5cGVHdWFyZHMvaXNGcm9udG1hdHRlckxpbmtDYWNoZS5qcyc7XG5leHBvcnQgKiBmcm9tICcuL1R5cGVHdWFyZHMvaXNSZWZlcmVuY2VDYWNoZS5qcyc7XG5leHBvcnQgKiBmcm9tICcuL1R5cGVHdWFyZHMvaXNMaW5rQ2FjaGUuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9Db25zdHJ1Y3RvcnMvY29uc3RydWN0VEZvbGRlci5qcyc7XG5leHBvcnQgKiBmcm9tICcuL0NvbnN0cnVjdG9ycy9jb25zdHJ1Y3RJbnRlcm5hbFBsdWdpbnMuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9Db25zdHJ1Y3RvcnMvY29uc3RydWN0SW50ZXJuYWxQbHVnaW4uanMnO1xuZXhwb3J0ICogZnJvbSAnLi9Db25zdHJ1Y3RvcnMvY29uc3RydWN0QXBwLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vQ29uc3RydWN0b3JzL2NvbnN0cnVjdFRGaWxlLmpzJztcbmltcG9ydCAnLi4vLi4vaW5kZXguanMnO1xuIiwgImV4cG9ydCBmdW5jdGlvbiBwYXJlbnRGb2xkZXJQYXRoKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHBhdGgucmVwbGFjZSgvXFwvP1teXFwvXSokLywgJycpIHx8ICcvJztcbn1cbiIsICJpbXBvcnQge1xuICAgIFRGb2xkZXIsXG4gICAgdHlwZSBWYXVsdFxufSBmcm9tICdvYnNpZGlhbic7XG5cbnR5cGUgVEZvbGRlckNvbnN0cnVjdG9yID0gbmV3KHZhdWx0OiBWYXVsdCwgcGF0aDogc3RyaW5nKSA9PiBURm9sZGVyO1xuXG4vKipcbiAqIENvbnN0cnVjdHMgYSBuZXcgVEZvbGRlciBpbnN0YW5jZS5cbiAqXG4gKiBAcGFyYW0gdmF1bHQgLSBUaGUgdmF1bHQgdG8gd2hpY2ggdGhlIGZvbGRlciBiZWxvbmdzLlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCBvZiB0aGUgZm9sZGVyLlxuICogQHJldHVybnMgVGhlIGNvbnN0cnVjdGVkIFRGb2xkZXIgaW5zdGFuY2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb25zdHJ1Y3RURm9sZGVyKHZhdWx0OiBWYXVsdCwgcGF0aDogc3RyaW5nKTogVEZvbGRlciB7XG4gICAgcmV0dXJuIG5ldyAoVEZvbGRlciBhcyBURm9sZGVyQ29uc3RydWN0b3IpKHZhdWx0LCBwYXRoKTtcbn1cbiIsICJpbXBvcnQge1xuICAgIFRGb2xkZXIsXG4gICAgdHlwZSBWYXVsdFxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgeyBjb25zdHJ1Y3RURm9sZGVyIH0gZnJvbSAnLi9Db25zdHJ1Y3RvcnMvY29uc3RydWN0VEZvbGRlci50cyc7XG5pbXBvcnQgeyBwYXJlbnRGb2xkZXJQYXRoIH0gZnJvbSAnLi9QYXRoVXRpbHMudHMnO1xuXG4vKipcbiAqIENyZWF0ZXMgYW5kIHByb3Blcmx5IGluaXRpYWxpemVzIHRoZSBpbnN0YW5jZSBvZiBURm9sZGVyIGV2ZW4gdGhlIHVuZGVybHlpbmcgZm9sZGVyIGRvZXMgbm90IGV4aXN0LlxuICogVGhpcyBkb2Vzbid0IGNyZWF0ZSB0aGUgbWlzc2luZyBmb2xkZXIgb24gdGhlIGZpbGUgc3lzdGVtLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVEZvbGRlckluc3RhbmNlKHZhdWx0OiBWYXVsdCwgcGF0aDogc3RyaW5nKTogVEZvbGRlciB7XG4gICAgbGV0IGZvbGRlciA9IHZhdWx0LmdldEZvbGRlckJ5UGF0aChwYXRoKTtcbiAgICBpZiAoZm9sZGVyKSB7XG4gICAgICAgIHJldHVybiBmb2xkZXI7XG4gICAgfVxuXG4gICAgZm9sZGVyID0gY29uc3RydWN0VEZvbGRlcih2YXVsdCwgcGF0aCk7XG4gICAgZm9sZGVyLnBhcmVudCA9IGNyZWF0ZVRGb2xkZXJJbnN0YW5jZSh2YXVsdCwgcGFyZW50Rm9sZGVyUGF0aChwYXRoKSk7XG4gICAgZm9sZGVyLmRlbGV0ZWQgPSB0cnVlO1xuICAgIHJldHVybiBmb2xkZXI7XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBDdXN0b21BcnJheURpY3QgfSBmcm9tICcuLi9pbnRlcm5hbHMvQ3VzdG9tQXJyYXlEaWN0LmpzJztcblxuZXhwb3J0IGNsYXNzIEN1c3RvbUFycmF5RGljdEltcGw8VD4gaW1wbGVtZW50cyBDdXN0b21BcnJheURpY3Q8VD4ge1xuICAgIHB1YmxpYyBkYXRhOiBNYXA8c3RyaW5nLCBUW10+ID0gbmV3IE1hcCgpO1xuXG4gICAgcHVibGljIGFkZChrZXk6IHN0cmluZywgdmFsdWU6IFQpOiB2b2lkIHtcbiAgICAgICAgbGV0IHZhbHVlcyA9IHRoaXMuZ2V0KGtleSk7XG4gICAgICAgIGlmICghdmFsdWVzKSB7XG4gICAgICAgICAgICB2YWx1ZXMgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuZGF0YS5zZXQoa2V5LCBbXSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXZhbHVlcy5pbmNsdWRlcyh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHZhbHVlcy5wdXNoKHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyByZW1vdmUoa2V5OiBzdHJpbmcsIHZhbHVlOiBUKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHZhbHVlcyA9IHRoaXMuZ2V0KGtleSk7XG4gICAgICAgIGlmICghdmFsdWVzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdmFsdWVzLnJlbW92ZSh2YWx1ZSk7XG5cbiAgICAgICAgaWYgKHZhbHVlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMuY2xlYXIoa2V5KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXQoa2V5OiBzdHJpbmcpOiBUW10gfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YS5nZXQoa2V5KSB8fCBudWxsO1xuICAgIH1cblxuICAgIHB1YmxpYyBrZXlzKCk6IHN0cmluZ1tdIHtcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5kYXRhLmtleXMoKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGNsZWFyKGtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGF0YS5kZWxldGUoa2V5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xlYXJBbGwoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGF0YS5jbGVhcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb250YWlucyhrZXk6IHN0cmluZywgdmFsdWU6IFQpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5nZXQoa2V5KT8uY29udGFpbnModmFsdWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb3VudCgpOiBudW1iZXIge1xuICAgICAgICBsZXQgYW5zID0gMDtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5rZXlzKCkpIHtcbiAgICAgICAgICAgIGFucyArPSB0aGlzLmdldChrZXkpPy5sZW5ndGggPz8gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhbnM7XG4gICAgfVxufVxuIiwgImV4cG9ydCBjb25zdCBJbnRlcm5hbFBsdWdpbk5hbWUgPSB7XG4gICAgQXVkaW9SZWNvcmRlcjogJ2F1ZGlvLXJlY29yZGVyJyxcbiAgICBCYWNrbGluazogJ2JhY2tsaW5rJyxcbiAgICBCb29rbWFya3M6ICdib29rbWFya3MnLFxuICAgIENhbnZhczogJ2NhbnZhcycsXG4gICAgQ29tbWFuZFBhbGV0dGU6ICdjb21tYW5kLXBhbGV0dGUnLFxuICAgIERhaWx5Tm90ZXM6ICdkYWlseS1ub3RlcycsXG4gICAgRWRpdG9yU3RhdHVzOiAnZWRpdG9yLXN0YXR1cycsXG4gICAgRmlsZUV4cGxvcmVyOiAnZmlsZS1leHBsb3JlcicsXG4gICAgRmlsZVJlY292ZXJ5OiAnZmlsZS1yZWNvdmVyeScsXG4gICAgR2xvYmFsU2VhcmNoOiAnZ2xvYmFsLXNlYXJjaCcsXG4gICAgR3JhcGg6ICdncmFwaCcsXG4gICAgTWFya2Rvd25JbXBvcnRlcjogJ21hcmtkb3duLWltcG9ydGVyJyxcbiAgICBOb3RlQ29tcG9zZXI6ICdub3RlLWNvbXBvc2VyJyxcbiAgICBPdXRnb2luZ0xpbms6ICdvdXRnb2luZy1saW5rJyxcbiAgICBPdXRsaW5lOiAnb3V0bGluZScsXG4gICAgUGFnZVByZXZpZXc6ICdwYWdlLXByZXZpZXcnLFxuICAgIFByb3BlcnRpZXM6ICdwcm9wZXJ0aWVzJyxcbiAgICBQdWJsaXNoOiAncHVibGlzaCcsXG4gICAgUmFuZG9tTm90ZTogJ3JhbmRvbS1ub3RlJyxcbiAgICBTbGFzaENvbW1hbmQ6ICdzbGFzaC1jb21tYW5kJyxcbiAgICBTbGlkZXM6ICdzbGlkZXMnLFxuICAgIFN3aXRjaGVyOiAnc3dpdGNoZXInLFxuICAgIFN5bmM6ICdzeW5jJyxcbiAgICBUYWdQYW5lOiAndGFnLXBhbmUnLFxuICAgIFRlbXBsYXRlczogJ3RlbXBsYXRlcycsXG4gICAgV29yZENvdW50OiAnd29yZC1jb3VudCcsXG4gICAgV29ya3NwYWNlczogJ3dvcmtzcGFjZXMnLFxuICAgIFprUHJlZml4ZXI6ICd6ay1wcmVmaXhlcidcbn0gYXMgY29uc3Q7XG4iLCAiaW1wb3J0IHtcbiAgICBURmlsZSxcbiAgICB0eXBlIFZhdWx0XG59IGZyb20gJ29ic2lkaWFuJztcblxudHlwZSBURmlsZUNvbnN0cnVjdG9yID0gbmV3KHZhdWx0OiBWYXVsdCwgcGF0aDogc3RyaW5nKSA9PiBURmlsZTtcblxuLyoqXG4gKiBDb25zdHJ1Y3RzIGEgbmV3IFRGaWxlIGluc3RhbmNlLlxuICpcbiAqIEBwYXJhbSB2YXVsdCAtIFRoZSB2YXVsdCB0byB3aGljaCB0aGUgZmlsZSBiZWxvbmdzLlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCBvZiB0aGUgZmlsZS5cbiAqIEByZXR1cm5zIFRoZSBjb25zdHJ1Y3RlZCBURmlsZSBpbnN0YW5jZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnN0cnVjdFRGaWxlKHZhdWx0OiBWYXVsdCwgcGF0aDogc3RyaW5nKTogVEZpbGUge1xuICAgIHJldHVybiBuZXcgKFRGaWxlIGFzIFRGaWxlQ29uc3RydWN0b3IpKHZhdWx0LCBwYXRoKTtcbn1cbiIsICJpbXBvcnQge1xuICAgIFRGaWxlLFxuICAgIHR5cGUgVmF1bHRcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHsgY29uc3RydWN0VEZpbGUgfSBmcm9tICcuL0NvbnN0cnVjdG9ycy9jb25zdHJ1Y3RURmlsZS50cyc7XG5pbXBvcnQgeyBjcmVhdGVURm9sZGVySW5zdGFuY2UgfSBmcm9tICcuL2NyZWF0ZVRGb2xkZXJJbnN0YW5jZS50cyc7XG5pbXBvcnQgeyBwYXJlbnRGb2xkZXJQYXRoIH0gZnJvbSAnLi9QYXRoVXRpbHMudHMnO1xuXG4vKipcbiAqIENyZWF0ZXMgYW5kIHByb3Blcmx5IGluaXRpYWxpemVzIHRoZSBpbnN0YW5jZSBvZiBURmlsZSBldmVuIHRoZSB1bmRlcmx5aW5nIGZpbGUgZG9lcyBub3QgZXhpc3QuXG4gKiBUaGlzIGRvZXNuJ3QgY3JlYXRlIHRoZSBtaXNzaW5nIGZpbGUgb24gdGhlIGZpbGUgc3lzdGVtLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVEZpbGVJbnN0YW5jZSh2YXVsdDogVmF1bHQsIHBhdGg6IHN0cmluZyk6IFRGaWxlIHtcbiAgICBsZXQgZmlsZSA9IHZhdWx0LmdldEZpbGVCeVBhdGgocGF0aCk7XG4gICAgaWYgKGZpbGUpIHtcbiAgICAgICAgcmV0dXJuIGZpbGU7XG4gICAgfVxuXG4gICAgZmlsZSA9IGNvbnN0cnVjdFRGaWxlKHZhdWx0LCBwYXRoKTtcbiAgICBmaWxlLnBhcmVudCA9IGNyZWF0ZVRGb2xkZXJJbnN0YW5jZSh2YXVsdCwgcGFyZW50Rm9sZGVyUGF0aChwYXRoKSk7XG4gICAgZmlsZS5kZWxldGVkID0gdHJ1ZTtcbiAgICByZXR1cm4gZmlsZTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7XG4gICAgUmVmZXJlbmNlLFxuICAgIFJlZmVyZW5jZUNhY2hlXG59IGZyb20gJ29ic2lkaWFuJztcblxuZXhwb3J0IGZ1bmN0aW9uIGlzUmVmZXJlbmNlQ2FjaGUocmVmZXJlbmNlOiBSZWZlcmVuY2UpOiByZWZlcmVuY2UgaXMgUmVmZXJlbmNlQ2FjaGUge1xuICAgIHJldHVybiAhIShyZWZlcmVuY2UgYXMgUGFydGlhbDxSZWZlcmVuY2VDYWNoZT4pLnBvc2l0aW9uO1xufVxuIiwgImltcG9ydCB0eXBlIHtcbiAgICBFbWJlZENhY2hlLFxuICAgIFJlZmVyZW5jZVxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgeyBpc1JlZmVyZW5jZUNhY2hlIH0gZnJvbSAnLi9pc1JlZmVyZW5jZUNhY2hlLnRzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGlzRW1iZWRDYWNoZShyZWZlcmVuY2U6IFJlZmVyZW5jZSk6IHJlZmVyZW5jZSBpcyBFbWJlZENhY2hlIHtcbiAgICByZXR1cm4gaXNSZWZlcmVuY2VDYWNoZShyZWZlcmVuY2UpICYmIHJlZmVyZW5jZS5vcmlnaW5hbFswXSA9PT0gJyEnO1xufVxuIiwgImltcG9ydCB0eXBlIHtcbiAgICBGcm9udG1hdHRlckxpbmtDYWNoZSxcbiAgICBSZWZlcmVuY2Vcbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG5leHBvcnQgZnVuY3Rpb24gaXNGcm9udG1hdHRlckxpbmtDYWNoZShyZWZlcmVuY2U6IFJlZmVyZW5jZSk6IHJlZmVyZW5jZSBpcyBGcm9udG1hdHRlckxpbmtDYWNoZSB7XG4gICAgcmV0dXJuICEhKHJlZmVyZW5jZSBhcyBQYXJ0aWFsPEZyb250bWF0dGVyTGlua0NhY2hlPikua2V5O1xufVxuIiwgImltcG9ydCB0eXBlIHtcbiAgICBMaW5rQ2FjaGUsXG4gICAgUmVmZXJlbmNlXG59IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB7IGlzUmVmZXJlbmNlQ2FjaGUgfSBmcm9tICcuL2lzUmVmZXJlbmNlQ2FjaGUudHMnO1xuXG5leHBvcnQgZnVuY3Rpb24gaXNMaW5rQ2FjaGUocmVmZXJlbmNlOiBSZWZlcmVuY2UpOiByZWZlcmVuY2UgaXMgTGlua0NhY2hlIHtcbiAgICByZXR1cm4gaXNSZWZlcmVuY2VDYWNoZShyZWZlcmVuY2UpICYmIHJlZmVyZW5jZS5vcmlnaW5hbFswXSAhPT0gJyEnO1xufVxuIiwgImltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBJbnRlcm5hbFBsdWdpbnMgfSBmcm9tICcuLi8uLi9pbnRlcm5hbHMvSW50ZXJuYWxQbHVnaW4vSW50ZXJuYWxQbHVnaW5zLmpzJztcblxudHlwZSBJbnRlcm5hbFBsdWdpbnNDb25zdHJ1Y3RvciA9IG5ldyhhcHA6IEFwcCkgPT4gSW50ZXJuYWxQbHVnaW5zO1xuXG4vKipcbiAqIENvbnN0cnVjdHMgYSBuZXcgSW50ZXJuYWxQbHVnaW5zIGluc3RhbmNlLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwIGluc3RhbmNlLlxuICogQHJldHVybnMgVGhlIGNvbnN0cnVjdGVkIEludGVybmFsUGx1Z2lucyBpbnN0YW5jZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnN0cnVjdEludGVybmFsUGx1Z2lucyhhcHA6IEFwcCk6IEludGVybmFsUGx1Z2lucyB7XG4gICAgcmV0dXJuIG5ldyAoYXBwLmludGVybmFsUGx1Z2lucy5jb25zdHJ1Y3RvciBhcyBJbnRlcm5hbFBsdWdpbnNDb25zdHJ1Y3RvcikoYXBwKTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgSW50ZXJuYWxQbHVnaW4gfSBmcm9tICcuLi8uLi9pbnRlcm5hbHMvSW50ZXJuYWxQbHVnaW4vSW50ZXJuYWxQbHVnaW4uanMnO1xuaW1wb3J0IHR5cGUgeyBJbnRlcm5hbFBsdWdpbnMgfSBmcm9tICcuLi8uLi9pbnRlcm5hbHMvSW50ZXJuYWxQbHVnaW4vSW50ZXJuYWxQbHVnaW5zLmpzJztcblxudHlwZSBJbnRlcm5hbFBsdWdpbkNvbnN0cnVjdG9yPEluc3RhbmNlPiA9IG5ldyhcbiAgICBhcHA6IEFwcCxcbiAgICBpbnN0YW5jZTogSW5zdGFuY2UsXG4gICAgaW50ZXJuYWxQbHVnaW5zOiBJbnRlcm5hbFBsdWdpbnNcbikgPT4gSW50ZXJuYWxQbHVnaW48SW5zdGFuY2U+O1xuXG4vKipcbiAqIENvbnN0cnVjdHMgYSBuZXcgSW50ZXJuYWxQbHVnaW4gaW5zdGFuY2UuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gaW5zdGFuY2UgLSBUaGUgaW5zdGFuY2Ugb2YgdGhlIHBsdWdpbi5cbiAqIEBwYXJhbSBpbnRlcm5hbFBsdWdpbnMgLSBUaGUgaW50ZXJuYWwgcGx1Z2lucyBpbnN0YW5jZS5cbiAqIEByZXR1cm5zIFRoZSBjb25zdHJ1Y3RlZCBJbnRlcm5hbFBsdWdpbiBpbnN0YW5jZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnN0cnVjdEludGVybmFsUGx1Z2luPEluc3RhbmNlPihcbiAgICBhcHA6IEFwcCxcbiAgICBpbnN0YW5jZTogSW5zdGFuY2UsXG4gICAgaW50ZXJuYWxQbHVnaW5zOiBJbnRlcm5hbFBsdWdpbnNcbik6IEludGVybmFsUGx1Z2luPEluc3RhbmNlPiB7XG4gICAgY29uc3QgYW55UGx1Z2luID0gT2JqZWN0LnZhbHVlcyhhcHAuaW50ZXJuYWxQbHVnaW5zLnBsdWdpbnMpWzBdO1xuICAgIGlmICghYW55UGx1Z2luKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm8gaW50ZXJuYWwgcGx1Z2luIGZvdW5kJyk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgKGFueVBsdWdpbi5jb25zdHJ1Y3RvciBhcyBJbnRlcm5hbFBsdWdpbkNvbnN0cnVjdG9yPEluc3RhbmNlPikoYXBwLCBpbnN0YW5jZSwgaW50ZXJuYWxQbHVnaW5zKTtcbn1cbiIsICJpbXBvcnQge1xuICAgIEFwcCxcbiAgICB0eXBlIERhdGFBZGFwdGVyXG59IGZyb20gJ29ic2lkaWFuJztcblxudHlwZSBBcHBDb25zdHJ1Y3RvciA9IG5ldyhhZGFwdGVyOiBEYXRhQWRhcHRlciwgYXBwSWQ6IHN0cmluZykgPT4gQXBwO1xuXG4vKipcbiAqIENvbnN0cnVjdHMgYSBuZXcgQXBwIGluc3RhbmNlLlxuICpcbiAqIEBwYXJhbSBhZGFwdGVyIC0gVGhlIGRhdGEgYWRhcHRlciB0byB1c2UuXG4gKiBAcGFyYW0gYXBwSWQgLSBUaGUgSUQgb2YgdGhlIGFwcC5cbiAqIEByZXR1cm5zIFRoZSBjb25zdHJ1Y3RlZCBBcHAgaW5zdGFuY2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb25zdHJ1Y3RBcHAoYWRhcHRlcjogRGF0YUFkYXB0ZXIsIGFwcElkOiBzdHJpbmcpOiBBcHAge1xuICAgIHJldHVybiBuZXcgKEFwcCBhcyBBcHBDb25zdHJ1Y3RvcikoYWRhcHRlciwgYXBwSWQpO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOzs7QUNBTyxTQUFTLGlCQUFpQixNQUFzQjtBQUNuRCxTQUFPLEtBQUssUUFBUSxjQUFjLEVBQUUsS0FBSztBQUM3Qzs7O0FDRkEsc0JBR087QUFXQSxTQUFTLGlCQUFpQixPQUFjLE1BQXVCO0FB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