obsidian-dev-utils 43.2.6 → 43.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.
Files changed (168) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/lib/cjs/AbortController.cjs +46 -9
  3. package/dist/lib/cjs/Array.cjs +46 -9
  4. package/dist/lib/cjs/Async.cjs +46 -9
  5. package/dist/lib/cjs/AsyncEvents.cjs +46 -9
  6. package/dist/lib/cjs/Blob.cjs +46 -9
  7. package/dist/lib/cjs/CssClass.cjs +46 -9
  8. package/dist/lib/cjs/Debug.cjs +46 -9
  9. package/dist/lib/cjs/DebugController.cjs +46 -9
  10. package/dist/lib/cjs/Enum.cjs +46 -9
  11. package/dist/lib/cjs/Error.cjs +46 -9
  12. package/dist/lib/cjs/Function.cjs +46 -9
  13. package/dist/lib/cjs/HTMLElement.cjs +46 -9
  14. package/dist/lib/cjs/Library.cjs +47 -10
  15. package/dist/lib/cjs/ObjectUtils.cjs +46 -9
  16. package/dist/lib/cjs/Path.cjs +46 -9
  17. package/dist/lib/cjs/RegExp.cjs +46 -9
  18. package/dist/lib/cjs/ScriptUtils/CliUtils.cjs +46 -9
  19. package/dist/lib/cjs/ScriptUtils/CodeGenerator.cjs +46 -9
  20. package/dist/lib/cjs/ScriptUtils/ESLint/ESLint.cjs +46 -9
  21. package/dist/lib/cjs/ScriptUtils/ESLint/eslint.config.cjs +46 -9
  22. package/dist/lib/cjs/ScriptUtils/ESLint/index.cjs +46 -9
  23. package/dist/lib/cjs/ScriptUtils/Exec.cjs +46 -9
  24. package/dist/lib/cjs/ScriptUtils/Fs.cjs +46 -9
  25. package/dist/lib/cjs/ScriptUtils/JSON.cjs +46 -9
  26. package/dist/lib/cjs/ScriptUtils/NodeModules.cjs +46 -9
  27. package/dist/lib/cjs/ScriptUtils/Npm.cjs +46 -9
  28. package/dist/lib/cjs/ScriptUtils/NpmPublish.cjs +46 -9
  29. package/dist/lib/cjs/ScriptUtils/NpmRun.cjs +46 -9
  30. package/dist/lib/cjs/ScriptUtils/ObsidianDevUtilsRepoPaths.cjs +46 -9
  31. package/dist/lib/cjs/ScriptUtils/Root.cjs +46 -9
  32. package/dist/lib/cjs/ScriptUtils/build.cjs +46 -9
  33. package/dist/lib/cjs/ScriptUtils/cli.cjs +46 -9
  34. package/dist/lib/cjs/ScriptUtils/esbuild/Dependency.cjs +46 -9
  35. package/dist/lib/cjs/ScriptUtils/esbuild/ObsidianPluginBuilder.cjs +46 -9
  36. package/dist/lib/cjs/ScriptUtils/esbuild/changeExtensionPlugin.cjs +46 -9
  37. package/dist/lib/cjs/ScriptUtils/esbuild/copyToObsidianPluginsFolderPlugin.cjs +46 -9
  38. package/dist/lib/cjs/ScriptUtils/esbuild/customEsbuildOptionsPlugin.cjs +46 -9
  39. package/dist/lib/cjs/ScriptUtils/esbuild/fixEsmPlugin.cjs +46 -9
  40. package/dist/lib/cjs/ScriptUtils/esbuild/fixSourceMapsPlugin.cjs +46 -9
  41. package/dist/lib/cjs/ScriptUtils/esbuild/index.cjs +46 -9
  42. package/dist/lib/cjs/ScriptUtils/esbuild/preprocessPlugin.cjs +87 -15
  43. package/dist/lib/cjs/ScriptUtils/esbuild/renameCssPlugin.cjs +46 -9
  44. package/dist/lib/cjs/ScriptUtils/esbuild/svelteWrapperPlugin.cjs +46 -9
  45. package/dist/lib/cjs/ScriptUtils/format.cjs +46 -9
  46. package/dist/lib/cjs/ScriptUtils/index.cjs +46 -9
  47. package/dist/lib/cjs/ScriptUtils/markdownlint/index.cjs +46 -9
  48. package/dist/lib/cjs/ScriptUtils/markdownlint/markdownlint-cli2-config.cjs +46 -9
  49. package/dist/lib/cjs/ScriptUtils/markdownlint/markdownlint.cjs +46 -9
  50. package/dist/lib/cjs/ScriptUtils/spellcheck.cjs +46 -9
  51. package/dist/lib/cjs/ScriptUtils/version.cjs +46 -9
  52. package/dist/lib/cjs/String.cjs +46 -9
  53. package/dist/lib/cjs/Transformers/DateTransformer.cjs +46 -9
  54. package/dist/lib/cjs/Transformers/DurationTransformer.cjs +46 -9
  55. package/dist/lib/cjs/Transformers/GroupTransformer.cjs +46 -9
  56. package/dist/lib/cjs/Transformers/MapTransformer.cjs +46 -9
  57. package/dist/lib/cjs/Transformers/SetTransformer.cjs +46 -9
  58. package/dist/lib/cjs/Transformers/SkipPrivatePropertyTransformer.cjs +46 -9
  59. package/dist/lib/cjs/Transformers/Transformer.cjs +46 -9
  60. package/dist/lib/cjs/Transformers/TwoWayMapTransformer.cjs +46 -9
  61. package/dist/lib/cjs/Transformers/TypedTransformer.cjs +46 -9
  62. package/dist/lib/cjs/Transformers/index.cjs +46 -9
  63. package/dist/lib/cjs/TwoWayMap.cjs +46 -9
  64. package/dist/lib/cjs/Type.cjs +46 -9
  65. package/dist/lib/cjs/ValueProvider.cjs +46 -9
  66. package/dist/lib/cjs/codemirror/StateFieldSpec.cjs +46 -9
  67. package/dist/lib/cjs/codemirror/index.cjs +46 -9
  68. package/dist/lib/cjs/index.cjs +46 -9
  69. package/dist/lib/cjs/obsidian/App.cjs +46 -9
  70. package/dist/lib/cjs/obsidian/AttachmentPath.cjs +46 -9
  71. package/dist/lib/cjs/obsidian/Backlink.cjs +46 -9
  72. package/dist/lib/cjs/obsidian/Callout.cjs +46 -9
  73. package/dist/lib/cjs/obsidian/CodeBlockMarkdownInformation.cjs +46 -9
  74. package/dist/lib/cjs/obsidian/Commands/AbstractFileCommandBase.cjs +46 -9
  75. package/dist/lib/cjs/obsidian/Commands/CommandBase.cjs +46 -9
  76. package/dist/lib/cjs/obsidian/Commands/EditorCommandBase.cjs +46 -9
  77. package/dist/lib/cjs/obsidian/Commands/FileCommandBase.cjs +46 -9
  78. package/dist/lib/cjs/obsidian/Commands/FolderCommandBase.cjs +46 -9
  79. package/dist/lib/cjs/obsidian/Commands/NonEditorCommandBase.cjs +46 -9
  80. package/dist/lib/cjs/obsidian/Commands/index.cjs +46 -9
  81. package/dist/lib/cjs/obsidian/Components/AsyncEventsComponent.cjs +46 -9
  82. package/dist/lib/cjs/obsidian/Components/SettingComponents/CheckboxComponent.cjs +46 -9
  83. package/dist/lib/cjs/obsidian/Components/SettingComponents/CodeHighlighterComponent.cjs +46 -9
  84. package/dist/lib/cjs/obsidian/Components/SettingComponents/DateComponent.cjs +46 -9
  85. package/dist/lib/cjs/obsidian/Components/SettingComponents/DateTimeComponent.cjs +46 -9
  86. package/dist/lib/cjs/obsidian/Components/SettingComponents/EmailComponent.cjs +46 -9
  87. package/dist/lib/cjs/obsidian/Components/SettingComponents/FileComponent.cjs +46 -9
  88. package/dist/lib/cjs/obsidian/Components/SettingComponents/MonthComponent.cjs +46 -9
  89. package/dist/lib/cjs/obsidian/Components/SettingComponents/MultipleDropdownComponent.cjs +46 -9
  90. package/dist/lib/cjs/obsidian/Components/SettingComponents/MultipleEmailComponent.cjs +46 -9
  91. package/dist/lib/cjs/obsidian/Components/SettingComponents/MultipleFileComponent.cjs +46 -9
  92. package/dist/lib/cjs/obsidian/Components/SettingComponents/MultipleTextComponent.cjs +46 -9
  93. package/dist/lib/cjs/obsidian/Components/SettingComponents/NumberComponent.cjs +46 -9
  94. package/dist/lib/cjs/obsidian/Components/SettingComponents/PasswordComponent.cjs +46 -9
  95. package/dist/lib/cjs/obsidian/Components/SettingComponents/SettingComponentWrapper.cjs +46 -9
  96. package/dist/lib/cjs/obsidian/Components/SettingComponents/TelephoneComponent.cjs +46 -9
  97. package/dist/lib/cjs/obsidian/Components/SettingComponents/TextBasedComponent.cjs +46 -9
  98. package/dist/lib/cjs/obsidian/Components/SettingComponents/TimeComponent.cjs +46 -9
  99. package/dist/lib/cjs/obsidian/Components/SettingComponents/TriStateCheckboxComponent.cjs +46 -9
  100. package/dist/lib/cjs/obsidian/Components/SettingComponents/TypedDropdownComponent.cjs +46 -9
  101. package/dist/lib/cjs/obsidian/Components/SettingComponents/TypedMultipleDropdownComponent.cjs +46 -9
  102. package/dist/lib/cjs/obsidian/Components/SettingComponents/TypedRangeTextComponent.cjs +46 -9
  103. package/dist/lib/cjs/obsidian/Components/SettingComponents/TypedTextComponent.cjs +46 -9
  104. package/dist/lib/cjs/obsidian/Components/SettingComponents/UrlComponent.cjs +46 -9
  105. package/dist/lib/cjs/obsidian/Components/SettingComponents/ValidatorComponent.cjs +46 -9
  106. package/dist/lib/cjs/obsidian/Components/SettingComponents/ValueComponentWithChangeTracking.cjs +46 -9
  107. package/dist/lib/cjs/obsidian/Components/SettingComponents/WeekComponent.cjs +46 -9
  108. package/dist/lib/cjs/obsidian/Components/SettingComponents/index.cjs +46 -9
  109. package/dist/lib/cjs/obsidian/Components/index.cjs +46 -9
  110. package/dist/lib/cjs/obsidian/Dataview.cjs +46 -9
  111. package/dist/lib/cjs/obsidian/DataviewLink.cjs +46 -9
  112. package/dist/lib/cjs/obsidian/FileChange.cjs +46 -9
  113. package/dist/lib/cjs/obsidian/FileManager.cjs +46 -9
  114. package/dist/lib/cjs/obsidian/FileSystem.cjs +46 -9
  115. package/dist/lib/cjs/obsidian/Frontmatter.cjs +46 -9
  116. package/dist/lib/cjs/obsidian/FrontmatterLinkCacheWithOffsets.cjs +46 -9
  117. package/dist/lib/cjs/obsidian/Link.cjs +52 -10
  118. package/dist/lib/cjs/obsidian/Link.d.cts +7 -0
  119. package/dist/lib/cjs/obsidian/Logger.cjs +46 -9
  120. package/dist/lib/cjs/obsidian/Loop.cjs +46 -9
  121. package/dist/lib/cjs/obsidian/Markdown.cjs +46 -9
  122. package/dist/lib/cjs/obsidian/MarkdownCodeBlockProcessor.cjs +46 -9
  123. package/dist/lib/cjs/obsidian/MarkdownView.cjs +46 -9
  124. package/dist/lib/cjs/obsidian/MetadataCache.cjs +46 -9
  125. package/dist/lib/cjs/obsidian/Modals/Alert.cjs +46 -9
  126. package/dist/lib/cjs/obsidian/Modals/Confirm.cjs +46 -9
  127. package/dist/lib/cjs/obsidian/Modals/ModalBase.cjs +46 -9
  128. package/dist/lib/cjs/obsidian/Modals/Prompt.cjs +46 -9
  129. package/dist/lib/cjs/obsidian/Modals/SelectItem.cjs +46 -9
  130. package/dist/lib/cjs/obsidian/Modals/index.cjs +46 -9
  131. package/dist/lib/cjs/obsidian/MonkeyAround.cjs +46 -9
  132. package/dist/lib/cjs/obsidian/ObsidianSettings.cjs +46 -9
  133. package/dist/lib/cjs/obsidian/Pdf.cjs +46 -9
  134. package/dist/lib/cjs/obsidian/Plugin/ObsidianPluginRepoPaths.cjs +46 -9
  135. package/dist/lib/cjs/obsidian/Plugin/Plugin.cjs +46 -9
  136. package/dist/lib/cjs/obsidian/Plugin/PluginBase.cjs +46 -9
  137. package/dist/lib/cjs/obsidian/Plugin/PluginContext.cjs +46 -9
  138. package/dist/lib/cjs/obsidian/Plugin/PluginId.cjs +46 -9
  139. package/dist/lib/cjs/obsidian/Plugin/PluginSettingsManagerBase.cjs +46 -9
  140. package/dist/lib/cjs/obsidian/Plugin/PluginSettingsTabBase.cjs +46 -9
  141. package/dist/lib/cjs/obsidian/Plugin/PluginSettingsWrapper.cjs +46 -9
  142. package/dist/lib/cjs/obsidian/Plugin/PluginTypesBase.cjs +46 -9
  143. package/dist/lib/cjs/obsidian/Plugin/index.cjs +46 -9
  144. package/dist/lib/cjs/obsidian/Queue.cjs +46 -9
  145. package/dist/lib/cjs/obsidian/React/AppContext.cjs +46 -9
  146. package/dist/lib/cjs/obsidian/React/index.cjs +46 -9
  147. package/dist/lib/cjs/obsidian/Reference.cjs +46 -9
  148. package/dist/lib/cjs/obsidian/RenameDeleteHandler.cjs +46 -9
  149. package/dist/lib/cjs/obsidian/ResourceUrl.cjs +46 -9
  150. package/dist/lib/cjs/obsidian/SettingEx.cjs +46 -9
  151. package/dist/lib/cjs/obsidian/Validation.cjs +46 -9
  152. package/dist/lib/cjs/obsidian/Vault.cjs +46 -9
  153. package/dist/lib/cjs/obsidian/VaultEx.cjs +46 -9
  154. package/dist/lib/cjs/obsidian/Workspace.cjs +46 -9
  155. package/dist/lib/cjs/obsidian/i18n/CustomTypeOptionsBase.cjs +46 -9
  156. package/dist/lib/cjs/obsidian/i18n/DefaultTranslationsBase.cjs +46 -9
  157. package/dist/lib/cjs/obsidian/i18n/i18n.cjs +46 -9
  158. package/dist/lib/cjs/obsidian/i18n/index.cjs +46 -9
  159. package/dist/lib/cjs/obsidian/i18n/locales/en.cjs +46 -9
  160. package/dist/lib/cjs/obsidian/i18n/locales/index.cjs +46 -9
  161. package/dist/lib/cjs/obsidian/i18n/locales/translationsMap.cjs +46 -9
  162. package/dist/lib/cjs/obsidian/index.cjs +46 -9
  163. package/dist/lib/cjs/url.cjs +46 -9
  164. package/dist/lib/esm/Library.mjs +1 -1
  165. package/dist/lib/esm/ScriptUtils/esbuild/preprocessPlugin.mjs +42 -7
  166. package/dist/lib/esm/obsidian/Link.d.mts +7 -0
  167. package/dist/lib/esm/obsidian/Link.mjs +6 -2
  168. package/package.json +1 -1
@@ -46,17 +46,54 @@ if you want to view the source, please visit the github repository of this plugi
46
46
  return module && module.__esModule && 'default' in module ? module.default : module;
47
47
  }
48
48
 
49
+ const OBSIDIAN_BUILT_IN_MODULE_NAMES = [
50
+ 'obsidian',
51
+ '@codemirror/autocomplete',
52
+ '@codemirror/collab',
53
+ '@codemirror/commands',
54
+ '@codemirror/language',
55
+ '@codemirror/lint',
56
+ '@codemirror/search',
57
+ '@codemirror/state',
58
+ '@codemirror/text',
59
+ '@codemirror/view',
60
+ '@lezer/common',
61
+ '@lezer/lr',
62
+ '@lezer/highlight'];
63
+
64
+
65
+ const DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES = [
66
+ '@codemirror/closebrackets',
67
+ '@codemirror/comment',
68
+ '@codemirror/fold',
69
+ '@codemirror/gutter',
70
+ '@codemirror/highlight',
71
+ '@codemirror/history',
72
+ '@codemirror/matchbrackets',
73
+ '@codemirror/panel',
74
+ '@codemirror/rangeset',
75
+ '@codemirror/rectangular-selection',
76
+ '@codemirror/stream-parser',
77
+ '@codemirror/tooltip'];
78
+
79
+
49
80
  function requirePatched(id) {
50
- // eslint-disable-next-line @typescript-eslint/no-deprecated, @typescript-eslint/no-unnecessary-condition -- We need access to app here which might not be available yet.
51
- const module = globalThis?.app?.isMobile ? undefined : originalRequire?.(id);
52
- if (module) {
53
- return extractDefault(module);
81
+ if (OBSIDIAN_BUILT_IN_MODULE_NAMES.includes(id) || DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES.includes(id)) {
82
+ return originalRequire?.(id);
54
83
  }
55
84
 
56
- if (id === 'process' || id === 'node:process') {
57
- // eslint-disable-next-line no-console -- Debug message is intentional here.
58
- console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
59
- return globalThis.process;
85
+ // eslint-disable-next-line @typescript-eslint/no-deprecated, @typescript-eslint/no-unnecessary-condition -- We need access to app here which might not be available yet.
86
+ if (globalThis?.app?.isMobile) {
87
+ if (id === 'process' || id === 'node:process') {
88
+ // eslint-disable-next-line no-console -- Debug message is intentional here.
89
+ console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
90
+ return globalThis.process;
91
+ }
92
+ } else {
93
+ const module = originalRequire?.(id);
94
+ if (module) {
95
+ return extractDefault(module);
96
+ }
60
97
  }
61
98
 
62
99
  // eslint-disable-next-line no-console -- Debug message is intentional here.
@@ -181,4 +218,4 @@ function isValidatorComponent(obj) {
181
218
  0 && (module.exports = {
182
219
  getValidatorComponent
183
220
  });
184
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL0NvbXBvbmVudHMvU2V0dGluZ0NvbXBvbmVudHMvVmFsaWRhdG9yQ29tcG9uZW50LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIENvbnRhaW5zIGEgY29tcG9uZW50IHRoYXQgaGFzIGEgdmFsaWRhdG9yIGVsZW1lbnQuXG4gKi9cblxuaW1wb3J0IHtcbiAgQ29sb3JDb21wb25lbnQsXG4gIERyb3Bkb3duQ29tcG9uZW50LFxuICBQcm9ncmVzc0JhckNvbXBvbmVudCxcbiAgU2VhcmNoQ29tcG9uZW50LFxuICBTbGlkZXJDb21wb25lbnQsXG4gIFRleHRBcmVhQ29tcG9uZW50LFxuICBUZXh0Q29tcG9uZW50LFxuICBUb2dnbGVDb21wb25lbnRcbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IFZhbGlkYXRvckVsZW1lbnQgfSBmcm9tICcuLi8uLi8uLi9IVE1MRWxlbWVudC50cyc7XG5cbmltcG9ydCB7IENzc0NsYXNzIH0gZnJvbSAnLi4vLi4vLi4vQ3NzQ2xhc3MudHMnO1xuaW1wb3J0IHsgYWRkUGx1Z2luQ3NzQ2xhc3NlcyB9IGZyb20gJy4uLy4uL1BsdWdpbi9QbHVnaW5Db250ZXh0LnRzJztcbmltcG9ydCB7IGVuc3VyZVdyYXBwZWQgfSBmcm9tICcuL1NldHRpbmdDb21wb25lbnRXcmFwcGVyLnRzJztcblxuLyoqXG4gKiBBIGNvbXBvbmVudCB0aGF0IGhhcyBhIHZhbGlkYXRvciBlbGVtZW50LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZhbGlkYXRvckNvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBBIHZhbGlkYXRvciBlbGVtZW50IG9mIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICByZWFkb25seSB2YWxpZGF0b3JFbDogVmFsaWRhdG9yRWxlbWVudDtcbn1cblxuY2xhc3MgT3ZlcmxheVZhbGlkYXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIFZhbGlkYXRvckNvbXBvbmVudCB7XG4gIHB1YmxpYyBnZXQgdmFsaWRhdG9yRWwoKTogVmFsaWRhdG9yRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbGlkYXRvckVsO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfdmFsaWRhdG9yRWw6IFZhbGlkYXRvckVsZW1lbnQ7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZWw6IEhUTUxFbGVtZW50KSB7XG4gICAgY29uc3Qgd3JhcHBlciA9IGVuc3VyZVdyYXBwZWQoZWwpO1xuXG4gICAgdGhpcy5fdmFsaWRhdG9yRWwgPSB3cmFwcGVyLmNyZWF0ZUVsKCdpbnB1dCcsIHtcbiAgICAgIGF0dHI6IHtcbiAgICAgICAgdGFiaW5kZXg6IC0xXG4gICAgICB9XG4gICAgfSk7XG4gICAgYWRkUGx1Z2luQ3NzQ2xhc3Nlcyh0aGlzLl92YWxpZGF0b3JFbCwgQ3NzQ2xhc3MuT3ZlcmxheVZhbGlkYXRvcik7XG5cbiAgICB0aGlzLl92YWxpZGF0b3JFbC5hZGRFdmVudExpc3RlbmVyKCdmb2N1cycsICgpID0+IHtcbiAgICAgIHRoaXMuZWwuZm9jdXMoKTtcbiAgICB9KTtcblxuICAgIHRoaXMuX3ZhbGlkYXRvckVsLmlzQWN0aXZlRWxlbWVudCA9IHRoaXMuaXNFbGVtZW50T3JEZXNjZW5kYW50QWN0aXZlLmJpbmQodGhpcyk7XG5cbiAgICBsZXQgdGFiSW5kZXhFbCA9IHRoaXMuZWwucXVlcnlTZWxlY3RvcjxIVE1MRWxlbWVudD4oJ1t0YWJpbmRleF0nKTtcbiAgICBpZiAoIXRhYkluZGV4RWwpIHtcbiAgICAgIGlmICh0aGlzLmVsLmdldEF0dHIoJ3RhYmluZGV4JykgPT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5lbC50YWJJbmRleCA9IC0xO1xuICAgICAgfVxuICAgICAgdGFiSW5kZXhFbCA9IHRoaXMuZWw7XG4gICAgfVxuXG4gICAgdGhpcy5lbC5hZGRFdmVudExpc3RlbmVyKCdmb2N1c2luJywgKCkgPT4ge1xuICAgICAgdGhpcy5mb3JjZUJsdXJWYWxpZGF0b3JFbCgpO1xuICAgIH0pO1xuICAgIHRoaXMuZWwuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XG4gICAgICB0YWJJbmRleEVsLmZvY3VzKCk7XG4gICAgfSk7XG4gICAgdGhpcy5lbC5hZGRFdmVudExpc3RlbmVyKCdmb2N1c291dCcsICgpID0+IHtcbiAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuaXNFbGVtZW50T3JEZXNjZW5kYW50QWN0aXZlKCkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmZvcmNlQmx1clZhbGlkYXRvckVsKCk7XG4gICAgICB9LCAwKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZm9yY2VCbHVyVmFsaWRhdG9yRWwoKTogdm9pZCB7XG4gICAgdGhpcy5fdmFsaWRhdG9yRWwuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2JsdXInKSk7XG4gIH1cblxuICBwcml2YXRlIGlzRWxlbWVudE9yRGVzY2VuZGFudEFjdGl2ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5lbC5jb250YWlucyhkb2N1bWVudC5hY3RpdmVFbGVtZW50KTtcbiAgfVxufVxuXG5jbGFzcyBWYWxpZGF0b3JFbGVtZW50V3JhcHBlciBpbXBsZW1lbnRzIFZhbGlkYXRvckNvbXBvbmVudCB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgdmFsaWRhdG9yRWw6IFZhbGlkYXRvckVsZW1lbnQpIHt9XG59XG5cbi8qKlxuICogR2V0cyBhIHZhbGlkYXRvciBjb21wb25lbnQgcmVsYXRlZCB0byB0aGUgZ2l2ZW4gb2JqZWN0LlxuICpcbiAqIEBwYXJhbSBvYmogLSBBbnkgb2JqZWN0LlxuICogQHJldHVybnMgVGhlIHJlbGF0ZWQgdmFsaWRhdG9yIGNvbXBvbmVudCBvciBgbnVsbGAgaWYgbm8gcmVsYXRlZCB2YWxpZGF0b3IgY29tcG9uZW50IGlzIGZvdW5kLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VmFsaWRhdG9yQ29tcG9uZW50KG9iajogdW5rbm93bik6IG51bGwgfCBWYWxpZGF0b3JDb21wb25lbnQge1xuICBpZiAoaXNWYWxpZGF0b3JDb21wb25lbnQob2JqKSkge1xuICAgIHJldHVybiBvYmo7XG4gIH1cblxuICBpZiAob2JqIGluc3RhbmNlb2YgQ29sb3JDb21wb25lbnQpIHtcbiAgICByZXR1cm4gbmV3IFZhbGlkYXRvckVsZW1lbnRXcmFwcGVyKG9iai5jb2xvclBpY2tlckVsKTtcbiAgfVxuXG4gIGlmIChvYmogaW5zdGFuY2VvZiBEcm9wZG93bkNvbXBvbmVudCkge1xuICAgIHJldHVybiBuZXcgVmFsaWRhdG9yRWxlbWVudFdyYXBwZXIob2JqLnNlbGVjdEVsKTtcbiAgfVxuXG4gIGlmIChvYmogaW5zdGFuY2VvZiBQcm9ncmVzc0JhckNvbXBvbmVudCkge1xuICAgIHJldHVybiBuZXcgT3ZlcmxheVZhbGlkYXRvckNvbXBvbmVudChvYmoucHJvZ3Jlc3NCYXIpO1xuICB9XG5cbiAgaWYgKG9iaiBpbnN0YW5jZW9mIFNlYXJjaENvbXBvbmVudCkge1xuICAgIHJldHVybiBuZXcgVmFsaWRhdG9yRWxlbWVudFdyYXBwZXIob2JqLmlucHV0RWwpO1xuICB9XG5cbiAgaWYgKG9iaiBpbnN0YW5jZW9mIFNsaWRlckNvbXBvbmVudCkge1xuICAgIHJldHVybiBuZXcgVmFsaWRhdG9yRWxlbWVudFdyYXBwZXIob2JqLnNsaWRlckVsKTtcbiAgfVxuXG4gIGlmIChvYmogaW5zdGFuY2VvZiBUZXh0QXJlYUNvbXBvbmVudCkge1xuICAgIHJldHVybiBuZXcgVmFsaWRhdG9yRWxlbWVudFdyYXBwZXIob2JqLmlucHV0RWwpO1xuICB9XG5cbiAgaWYgKG9iaiBpbnN0YW5jZW9mIFRleHRDb21wb25lbnQpIHtcbiAgICByZXR1cm4gbmV3IFZhbGlkYXRvckVsZW1lbnRXcmFwcGVyKG9iai5pbnB1dEVsKTtcbiAgfVxuXG4gIGlmIChvYmogaW5zdGFuY2VvZiBUb2dnbGVDb21wb25lbnQpIHtcbiAgICByZXR1cm4gbmV3IE92ZXJsYXlWYWxpZGF0b3JDb21wb25lbnQob2JqLnRvZ2dsZUVsKTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG5mdW5jdGlvbiBpc1ZhbGlkYXRvckNvbXBvbmVudChvYmo6IHVua25vd24pOiBvYmogaXMgVmFsaWRhdG9yQ29tcG9uZW50IHtcbiAgcmV0dXJuICEhKG9iaiBhcyBQYXJ0aWFsPFZhbGlkYXRvckNvbXBvbmVudD4pLnZhbGlkYXRvckVsO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFNQSxzQkFTTztBQUlQLHNCQUF5QjtBQUN6QiwyQkFBb0M7QUFDcEMscUNBQThCO0FBWTlCLE1BQU0sMEJBQXdEO0FBQUEsRUFPckQsWUFBNkIsSUFBaUI7QUFBakI7QUFDbEMsVUFBTSxjQUFVLDhDQUFjLEVBQUU7QUFFaEMsU0FBSyxlQUFlLFFBQVEsU0FBUyxTQUFTO0FBQUEsTUFDNUMsTUFBTTtBQUFBLFFBQ0osVUFBVTtBQUFBLE1BQ1o7QUFBQSxJQUNGLENBQUM7QUFDRCxrREFBb0IsS0FBSyxjQUFjLHlCQUFTLGdCQUFnQjtBQUVoRSxTQUFLLGFBQWEsaUJBQWlCLFNBQVMsTUFBTTtBQUNoRCxXQUFLLEdBQUcsTUFBTTtBQUFBLElBQ2hCLENBQUM7QUFFRCxTQUFLLGFBQWEsa0JBQWtCLEtBQUssNEJBQTRCLEtBQUssSUFBSTtBQUU5RSxRQUFJLGFBQWEsS0FBSyxHQUFHLGNBQTJCLFlBQVk7QUFDaEUsUUFBSSxDQUFDLFlBQVk7QUFDZixVQUFJLEtBQUssR0FBRyxRQUFRLFVBQVUsTUFBTSxNQUFNO0FBQ3hDLGFBQUssR0FBRyxXQUFXO0FBQUEsTUFDckI7QUFDQSxtQkFBYSxLQUFLO0FBQUEsSUFDcEI7QUFFQSxTQUFLLEdBQUcsaUJBQWlCLFdBQVcsTUFBTTtBQUN4QyxXQUFLLHFCQUFxQjtBQUFBLElBQzVCLENBQUM7QUFDRCxTQUFLLEdBQUcsaUJBQWlCLFNBQVMsTUFBTTtBQUN0QyxpQkFBVyxNQUFNO0FBQUEsSUFDbkIsQ0FBQztBQUNELFNBQUssR0FBRyxpQkFBaUIsWUFBWSxNQUFNO0FBQ3pDLGFBQU8sV0FBVyxNQUFNO0FBQ3RCLFlBQUksS0FBSyw0QkFBNEIsR0FBRztBQUN0QztBQUFBLFFBQ0Y7QUFFQSxhQUFLLHFCQUFxQjtBQUFBLE1BQzVCLEdBQUcsQ0FBQztBQUFBLElBQ04sQ0FBQztBQUFBLEVBQ0g7QUFBQSxFQTdDQSxJQUFXLGNBQWdDO0FBQ3pDLFdBQU8sS0FBSztBQUFBLEVBQ2Q7QUFBQSxFQUVpQjtBQUFBLEVBMkNULHVCQUE2QjtBQUNuQyxTQUFLLGFBQWEsY0FBYyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQUEsRUFDbkQ7QUFBQSxFQUVRLDhCQUF1QztBQUM3QyxXQUFPLEtBQUssR0FBRyxTQUFTLFNBQVMsYUFBYTtBQUFBLEVBQ2hEO0FBQ0Y7QUFFQSxNQUFNLHdCQUFzRDtBQUFBLEVBQ25ELFlBQTRCLGFBQStCO0FBQS9CO0FBQUEsRUFBZ0M7QUFDckU7QUFRTyxTQUFTLHNCQUFzQixLQUF5QztBQUM3RSxNQUFJLHFCQUFxQixHQUFHLEdBQUc7QUFDN0IsV0FBTztBQUFBLEVBQ1Q7QUFFQSxNQUFJLGVBQWUsZ0NBQWdCO0FBQ2pDLFdBQU8sSUFBSSx3QkFBd0IsSUFBSSxhQUFhO0FBQUEsRUFDdEQ7QUFFQSxNQUFJLGVBQWUsbUNBQW1CO0FBQ3BDLFdBQU8sSUFBSSx3QkFBd0IsSUFBSSxRQUFRO0FBQUEsRUFDakQ7QUFFQSxNQUFJLGVBQWUsc0NBQXNCO0FBQ3ZDLFdBQU8sSUFBSSwwQkFBMEIsSUFBSSxXQUFXO0FBQUEsRUFDdEQ7QUFFQSxNQUFJLGVBQWUsaUNBQWlCO0FBQ2xDLFdBQU8sSUFBSSx3QkFBd0IsSUFBSSxPQUFPO0FBQUEsRUFDaEQ7QUFFQSxNQUFJLGVBQWUsaUNBQWlCO0FBQ2xDLFdBQU8sSUFBSSx3QkFBd0IsSUFBSSxRQUFRO0FBQUEsRUFDakQ7QUFFQSxNQUFJLGVBQWUsbUNBQW1CO0FBQ3BDLFdBQU8sSUFBSSx3QkFBd0IsSUFBSSxPQUFPO0FBQUEsRUFDaEQ7QUFFQSxNQUFJLGVBQWUsK0JBQWU7QUFDaEMsV0FBTyxJQUFJLHdCQUF3QixJQUFJLE9BQU87QUFBQSxFQUNoRDtBQUVBLE1BQUksZUFBZSxpQ0FBaUI7QUFDbEMsV0FBTyxJQUFJLDBCQUEwQixJQUFJLFFBQVE7QUFBQSxFQUNuRDtBQUVBLFNBQU87QUFDVDtBQUVBLFNBQVMscUJBQXFCLEtBQXlDO0FBQ3JFLFNBQU8sQ0FBQyxDQUFFLElBQW9DO0FBQ2hEOyIsCiAgIm5hbWVzIjogW10KfQo=
221
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL0NvbXBvbmVudHMvU2V0dGluZ0NvbXBvbmVudHMvVmFsaWRhdG9yQ29tcG9uZW50LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIENvbnRhaW5zIGEgY29tcG9uZW50IHRoYXQgaGFzIGEgdmFsaWRhdG9yIGVsZW1lbnQuXG4gKi9cblxuaW1wb3J0IHtcbiAgQ29sb3JDb21wb25lbnQsXG4gIERyb3Bkb3duQ29tcG9uZW50LFxuICBQcm9ncmVzc0JhckNvbXBvbmVudCxcbiAgU2VhcmNoQ29tcG9uZW50LFxuICBTbGlkZXJDb21wb25lbnQsXG4gIFRleHRBcmVhQ29tcG9uZW50LFxuICBUZXh0Q29tcG9uZW50LFxuICBUb2dnbGVDb21wb25lbnRcbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IFZhbGlkYXRvckVsZW1lbnQgfSBmcm9tICcuLi8uLi8uLi9IVE1MRWxlbWVudC50cyc7XG5cbmltcG9ydCB7IENzc0NsYXNzIH0gZnJvbSAnLi4vLi4vLi4vQ3NzQ2xhc3MudHMnO1xuaW1wb3J0IHsgYWRkUGx1Z2luQ3NzQ2xhc3NlcyB9IGZyb20gJy4uLy4uL1BsdWdpbi9QbHVnaW5Db250ZXh0LnRzJztcbmltcG9ydCB7IGVuc3VyZVdyYXBwZWQgfSBmcm9tICcuL1NldHRpbmdDb21wb25lbnRXcmFwcGVyLnRzJztcblxuLyoqXG4gKiBBIGNvbXBvbmVudCB0aGF0IGhhcyBhIHZhbGlkYXRvciBlbGVtZW50LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZhbGlkYXRvckNvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBBIHZhbGlkYXRvciBlbGVtZW50IG9mIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICByZWFkb25seSB2YWxpZGF0b3JFbDogVmFsaWRhdG9yRWxlbWVudDtcbn1cblxuY2xhc3MgT3ZlcmxheVZhbGlkYXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIFZhbGlkYXRvckNvbXBvbmVudCB7XG4gIHB1YmxpYyBnZXQgdmFsaWRhdG9yRWwoKTogVmFsaWRhdG9yRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbGlkYXRvckVsO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfdmFsaWRhdG9yRWw6IFZhbGlkYXRvckVsZW1lbnQ7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZWw6IEhUTUxFbGVtZW50KSB7XG4gICAgY29uc3Qgd3JhcHBlciA9IGVuc3VyZVdyYXBwZWQoZWwpO1xuXG4gICAgdGhpcy5fdmFsaWRhdG9yRWwgPSB3cmFwcGVyLmNyZWF0ZUVsKCdpbnB1dCcsIHtcbiAgICAgIGF0dHI6IHtcbiAgICAgICAgdGFiaW5kZXg6IC0xXG4gICAgICB9XG4gICAgfSk7XG4gICAgYWRkUGx1Z2luQ3NzQ2xhc3Nlcyh0aGlzLl92YWxpZGF0b3JFbCwgQ3NzQ2xhc3MuT3ZlcmxheVZhbGlkYXRvcik7XG5cbiAgICB0aGlzLl92YWxpZGF0b3JFbC5hZGRFdmVudExpc3RlbmVyKCdmb2N1cycsICgpID0+IHtcbiAgICAgIHRoaXMuZWwuZm9jdXMoKTtcbiAgICB9KTtcblxuICAgIHRoaXMuX3ZhbGlkYXRvckVsLmlzQWN0aXZlRWxlbWVudCA9IHRoaXMuaXNFbGVtZW50T3JEZXNjZW5kYW50QWN0aXZlLmJpbmQodGhpcyk7XG5cbiAgICBsZXQgdGFiSW5kZXhFbCA9IHRoaXMuZWwucXVlcnlTZWxlY3RvcjxIVE1MRWxlbWVudD4oJ1t0YWJpbmRleF0nKTtcbiAgICBpZiAoIXRhYkluZGV4RWwpIHtcbiAgICAgIGlmICh0aGlzLmVsLmdldEF0dHIoJ3RhYmluZGV4JykgPT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5lbC50YWJJbmRleCA9IC0xO1xuICAgICAgfVxuICAgICAgdGFiSW5kZXhFbCA9IHRoaXMuZWw7XG4gICAgfVxuXG4gICAgdGhpcy5lbC5hZGRFdmVudExpc3RlbmVyKCdmb2N1c2luJywgKCkgPT4ge1xuICAgICAgdGhpcy5mb3JjZUJsdXJWYWxpZGF0b3JFbCgpO1xuICAgIH0pO1xuICAgIHRoaXMuZWwuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XG4gICAgICB0YWJJbmRleEVsLmZvY3VzKCk7XG4gICAgfSk7XG4gICAgdGhpcy5lbC5hZGRFdmVudExpc3RlbmVyKCdmb2N1c291dCcsICgpID0+IHtcbiAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuaXNFbGVtZW50T3JEZXNjZW5kYW50QWN0aXZlKCkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmZvcmNlQmx1clZhbGlkYXRvckVsKCk7XG4gICAgICB9LCAwKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZm9yY2VCbHVyVmFsaWRhdG9yRWwoKTogdm9pZCB7XG4gICAgdGhpcy5fdmFsaWRhdG9yRWwuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2JsdXInKSk7XG4gIH1cblxuICBwcml2YXRlIGlzRWxlbWVudE9yRGVzY2VuZGFudEFjdGl2ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5lbC5jb250YWlucyhkb2N1bWVudC5hY3RpdmVFbGVtZW50KTtcbiAgfVxufVxuXG5jbGFzcyBWYWxpZGF0b3JFbGVtZW50V3JhcHBlciBpbXBsZW1lbnRzIFZhbGlkYXRvckNvbXBvbmVudCB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgdmFsaWRhdG9yRWw6IFZhbGlkYXRvckVsZW1lbnQpIHt9XG59XG5cbi8qKlxuICogR2V0cyBhIHZhbGlkYXRvciBjb21wb25lbnQgcmVsYXRlZCB0byB0aGUgZ2l2ZW4gb2JqZWN0LlxuICpcbiAqIEBwYXJhbSBvYmogLSBBbnkgb2JqZWN0LlxuICogQHJldHVybnMgVGhlIHJlbGF0ZWQgdmFsaWRhdG9yIGNvbXBvbmVudCBvciBgbnVsbGAgaWYgbm8gcmVsYXRlZCB2YWxpZGF0b3IgY29tcG9uZW50IGlzIGZvdW5kLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VmFsaWRhdG9yQ29tcG9uZW50KG9iajogdW5rbm93bik6IG51bGwgfCBWYWxpZGF0b3JDb21wb25lbnQge1xuICBpZiAoaXNWYWxpZGF0b3JDb21wb25lbnQob2JqKSkge1xuICAgIHJldHVybiBvYmo7XG4gIH1cblxuICBpZiAob2JqIGluc3RhbmNlb2YgQ29sb3JDb21wb25lbnQpIHtcbiAgICByZXR1cm4gbmV3IFZhbGlkYXRvckVsZW1lbnRXcmFwcGVyKG9iai5jb2xvclBpY2tlckVsKTtcbiAgfVxuXG4gIGlmIChvYmogaW5zdGFuY2VvZiBEcm9wZG93bkNvbXBvbmVudCkge1xuICAgIHJldHVybiBuZXcgVmFsaWRhdG9yRWxlbWVudFdyYXBwZXIob2JqLnNlbGVjdEVsKTtcbiAgfVxuXG4gIGlmIChvYmogaW5zdGFuY2VvZiBQcm9ncmVzc0JhckNvbXBvbmVudCkge1xuICAgIHJldHVybiBuZXcgT3ZlcmxheVZhbGlkYXRvckNvbXBvbmVudChvYmoucHJvZ3Jlc3NCYXIpO1xuICB9XG5cbiAgaWYgKG9iaiBpbnN0YW5jZW9mIFNlYXJjaENvbXBvbmVudCkge1xuICAgIHJldHVybiBuZXcgVmFsaWRhdG9yRWxlbWVudFdyYXBwZXIob2JqLmlucHV0RWwpO1xuICB9XG5cbiAgaWYgKG9iaiBpbnN0YW5jZW9mIFNsaWRlckNvbXBvbmVudCkge1xuICAgIHJldHVybiBuZXcgVmFsaWRhdG9yRWxlbWVudFdyYXBwZXIob2JqLnNsaWRlckVsKTtcbiAgfVxuXG4gIGlmIChvYmogaW5zdGFuY2VvZiBUZXh0QXJlYUNvbXBvbmVudCkge1xuICAgIHJldHVybiBuZXcgVmFsaWRhdG9yRWxlbWVudFdyYXBwZXIob2JqLmlucHV0RWwpO1xuICB9XG5cbiAgaWYgKG9iaiBpbnN0YW5jZW9mIFRleHRDb21wb25lbnQpIHtcbiAgICByZXR1cm4gbmV3IFZhbGlkYXRvckVsZW1lbnRXcmFwcGVyKG9iai5pbnB1dEVsKTtcbiAgfVxuXG4gIGlmIChvYmogaW5zdGFuY2VvZiBUb2dnbGVDb21wb25lbnQpIHtcbiAgICByZXR1cm4gbmV3IE92ZXJsYXlWYWxpZGF0b3JDb21wb25lbnQob2JqLnRvZ2dsZUVsKTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG5mdW5jdGlvbiBpc1ZhbGlkYXRvckNvbXBvbmVudChvYmo6IHVua25vd24pOiBvYmogaXMgVmFsaWRhdG9yQ29tcG9uZW50IHtcbiAgcmV0dXJuICEhKG9iaiBhcyBQYXJ0aWFsPFZhbGlkYXRvckNvbXBvbmVudD4pLnZhbGlkYXRvckVsO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBTUEsc0JBU087QUFJUCxzQkFBeUI7QUFDekIsMkJBQW9DO0FBQ3BDLHFDQUE4QjtBQVk5QixNQUFNLDBCQUF3RDtBQUFBLEVBT3JELFlBQTZCLElBQWlCO0FBQWpCO0FBQ2xDLFVBQU0sY0FBVSw4Q0FBYyxFQUFFO0FBRWhDLFNBQUssZUFBZSxRQUFRLFNBQVMsU0FBUztBQUFBLE1BQzVDLE1BQU07QUFBQSxRQUNKLFVBQVU7QUFBQSxNQUNaO0FBQUEsSUFDRixDQUFDO0FBQ0Qsa0RBQW9CLEtBQUssY0FBYyx5QkFBUyxnQkFBZ0I7QUFFaEUsU0FBSyxhQUFhLGlCQUFpQixTQUFTLE1BQU07QUFDaEQsV0FBSyxHQUFHLE1BQU07QUFBQSxJQUNoQixDQUFDO0FBRUQsU0FBSyxhQUFhLGtCQUFrQixLQUFLLDRCQUE0QixLQUFLLElBQUk7QUFFOUUsUUFBSSxhQUFhLEtBQUssR0FBRyxjQUEyQixZQUFZO0FBQ2hFLFFBQUksQ0FBQyxZQUFZO0FBQ2YsVUFBSSxLQUFLLEdBQUcsUUFBUSxVQUFVLE1BQU0sTUFBTTtBQUN4QyxhQUFLLEdBQUcsV0FBVztBQUFBLE1BQ3JCO0FBQ0EsbUJBQWEsS0FBSztBQUFBLElBQ3BCO0FBRUEsU0FBSyxHQUFHLGlCQUFpQixXQUFXLE1BQU07QUFDeEMsV0FBSyxxQkFBcUI7QUFBQSxJQUM1QixDQUFDO0FBQ0QsU0FBSyxHQUFHLGlCQUFpQixTQUFTLE1BQU07QUFDdEMsaUJBQVcsTUFBTTtBQUFBLElBQ25CLENBQUM7QUFDRCxTQUFLLEdBQUcsaUJBQWlCLFlBQVksTUFBTTtBQUN6QyxhQUFPLFdBQVcsTUFBTTtBQUN0QixZQUFJLEtBQUssNEJBQTRCLEdBQUc7QUFDdEM7QUFBQSxRQUNGO0FBRUEsYUFBSyxxQkFBcUI7QUFBQSxNQUM1QixHQUFHLENBQUM7QUFBQSxJQUNOLENBQUM7QUFBQSxFQUNIO0FBQUEsRUE3Q0EsSUFBVyxjQUFnQztBQUN6QyxXQUFPLEtBQUs7QUFBQSxFQUNkO0FBQUEsRUFFaUI7QUFBQSxFQTJDVCx1QkFBNkI7QUFDbkMsU0FBSyxhQUFhLGNBQWMsSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUFBLEVBQ25EO0FBQUEsRUFFUSw4QkFBdUM7QUFDN0MsV0FBTyxLQUFLLEdBQUcsU0FBUyxTQUFTLGFBQWE7QUFBQSxFQUNoRDtBQUNGO0FBRUEsTUFBTSx3QkFBc0Q7QUFBQSxFQUNuRCxZQUE0QixhQUErQjtBQUEvQjtBQUFBLEVBQWdDO0FBQ3JFO0FBUU8sU0FBUyxzQkFBc0IsS0FBeUM7QUFDN0UsTUFBSSxxQkFBcUIsR0FBRyxHQUFHO0FBQzdCLFdBQU87QUFBQSxFQUNUO0FBRUEsTUFBSSxlQUFlLGdDQUFnQjtBQUNqQyxXQUFPLElBQUksd0JBQXdCLElBQUksYUFBYTtBQUFBLEVBQ3REO0FBRUEsTUFBSSxlQUFlLG1DQUFtQjtBQUNwQyxXQUFPLElBQUksd0JBQXdCLElBQUksUUFBUTtBQUFBLEVBQ2pEO0FBRUEsTUFBSSxlQUFlLHNDQUFzQjtBQUN2QyxXQUFPLElBQUksMEJBQTBCLElBQUksV0FBVztBQUFBLEVBQ3REO0FBRUEsTUFBSSxlQUFlLGlDQUFpQjtBQUNsQyxXQUFPLElBQUksd0JBQXdCLElBQUksT0FBTztBQUFBLEVBQ2hEO0FBRUEsTUFBSSxlQUFlLGlDQUFpQjtBQUNsQyxXQUFPLElBQUksd0JBQXdCLElBQUksUUFBUTtBQUFBLEVBQ2pEO0FBRUEsTUFBSSxlQUFlLG1DQUFtQjtBQUNwQyxXQUFPLElBQUksd0JBQXdCLElBQUksT0FBTztBQUFBLEVBQ2hEO0FBRUEsTUFBSSxlQUFlLCtCQUFlO0FBQ2hDLFdBQU8sSUFBSSx3QkFBd0IsSUFBSSxPQUFPO0FBQUEsRUFDaEQ7QUFFQSxNQUFJLGVBQWUsaUNBQWlCO0FBQ2xDLFdBQU8sSUFBSSwwQkFBMEIsSUFBSSxRQUFRO0FBQUEsRUFDbkQ7QUFFQSxTQUFPO0FBQ1Q7QUFFQSxTQUFTLHFCQUFxQixLQUF5QztBQUNyRSxTQUFPLENBQUMsQ0FBRSxJQUFvQztBQUNoRDsiLAogICJuYW1lcyI6IFtdCn0K
@@ -46,17 +46,54 @@ if you want to view the source, please visit the github repository of this plugi
46
46
  return module && module.__esModule && 'default' in module ? module.default : module;
47
47
  }
48
48
 
49
+ const OBSIDIAN_BUILT_IN_MODULE_NAMES = [
50
+ 'obsidian',
51
+ '@codemirror/autocomplete',
52
+ '@codemirror/collab',
53
+ '@codemirror/commands',
54
+ '@codemirror/language',
55
+ '@codemirror/lint',
56
+ '@codemirror/search',
57
+ '@codemirror/state',
58
+ '@codemirror/text',
59
+ '@codemirror/view',
60
+ '@lezer/common',
61
+ '@lezer/lr',
62
+ '@lezer/highlight'];
63
+
64
+
65
+ const DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES = [
66
+ '@codemirror/closebrackets',
67
+ '@codemirror/comment',
68
+ '@codemirror/fold',
69
+ '@codemirror/gutter',
70
+ '@codemirror/highlight',
71
+ '@codemirror/history',
72
+ '@codemirror/matchbrackets',
73
+ '@codemirror/panel',
74
+ '@codemirror/rangeset',
75
+ '@codemirror/rectangular-selection',
76
+ '@codemirror/stream-parser',
77
+ '@codemirror/tooltip'];
78
+
79
+
49
80
  function requirePatched(id) {
50
- // eslint-disable-next-line @typescript-eslint/no-deprecated, @typescript-eslint/no-unnecessary-condition -- We need access to app here which might not be available yet.
51
- const module = globalThis?.app?.isMobile ? undefined : originalRequire?.(id);
52
- if (module) {
53
- return extractDefault(module);
81
+ if (OBSIDIAN_BUILT_IN_MODULE_NAMES.includes(id) || DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES.includes(id)) {
82
+ return originalRequire?.(id);
54
83
  }
55
84
 
56
- if (id === 'process' || id === 'node:process') {
57
- // eslint-disable-next-line no-console -- Debug message is intentional here.
58
- console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
59
- return globalThis.process;
85
+ // eslint-disable-next-line @typescript-eslint/no-deprecated, @typescript-eslint/no-unnecessary-condition -- We need access to app here which might not be available yet.
86
+ if (globalThis?.app?.isMobile) {
87
+ if (id === 'process' || id === 'node:process') {
88
+ // eslint-disable-next-line no-console -- Debug message is intentional here.
89
+ console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
90
+ return globalThis.process;
91
+ }
92
+ } else {
93
+ const module = originalRequire?.(id);
94
+ if (module) {
95
+ return extractDefault(module);
96
+ }
60
97
  }
61
98
 
62
99
  // eslint-disable-next-line no-console -- Debug message is intentional here.
@@ -81,4 +118,4 @@ var __copyProps = (to, from, except, desc) => {
81
118
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
82
119
  var ValueComponentWithChangeTracking_exports = {};
83
120
  module.exports = __toCommonJS(ValueComponentWithChangeTracking_exports);
84
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL0NvbXBvbmVudHMvU2V0dGluZ0NvbXBvbmVudHMvVmFsdWVDb21wb25lbnRXaXRoQ2hhbmdlVHJhY2tpbmcudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uXG4gKlxuICogQ29udGFpbnMgYSB0eXBlIHRoYXQgZXh0ZW5kcyBWYWx1ZUNvbXBvbmVudCB0byBhbGxvdyBmb3IgY2hhbmdlIHRyYWNraW5nLlxuICovXG5cbmltcG9ydCB0eXBlIHsgVmFsdWVDb21wb25lbnQgfSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IFByb21pc2FibGUgfSBmcm9tICd0eXBlLWZlc3QnO1xuXG4vKipcbiAqIEEgVmFsdWVDb21wb25lbnQgdGhhdCBjYW4gdHJhY2sgY2hhbmdlcy5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgdmFsdWUgdG8gc2V0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZhbHVlQ29tcG9uZW50V2l0aENoYW5nZVRyYWNraW5nPFQ+IGV4dGVuZHMgVmFsdWVDb21wb25lbnQ8VD4ge1xuICAvKipcbiAgICogU2V0cyBhIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSB2YWx1ZSBvZiB0aGUgY29tcG9uZW50IGNoYW5nZXMuXG4gICAqXG4gICAqIEBwYXJhbSBjYWxsYmFjayAtIEEgY2FsbGJhY2sgZnVuY3Rpb24gdGhhdCBpcyBjYWxsZWQgd2hlbiB0aGUgdmFsdWUgb2YgdGhlIGNvbXBvbmVudCBjaGFuZ2VzLlxuICAgKi9cbiAgb25DaGFuZ2UoY2FsbGJhY2s6IChuZXdWYWx1ZTogVCkgPT4gUHJvbWlzYWJsZTx2b2lkPik6IHRoaXM7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBOyIsCiAgIm5hbWVzIjogW10KfQo=
121
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL0NvbXBvbmVudHMvU2V0dGluZ0NvbXBvbmVudHMvVmFsdWVDb21wb25lbnRXaXRoQ2hhbmdlVHJhY2tpbmcudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uXG4gKlxuICogQ29udGFpbnMgYSB0eXBlIHRoYXQgZXh0ZW5kcyBWYWx1ZUNvbXBvbmVudCB0byBhbGxvdyBmb3IgY2hhbmdlIHRyYWNraW5nLlxuICovXG5cbmltcG9ydCB0eXBlIHsgVmFsdWVDb21wb25lbnQgfSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IFByb21pc2FibGUgfSBmcm9tICd0eXBlLWZlc3QnO1xuXG4vKipcbiAqIEEgVmFsdWVDb21wb25lbnQgdGhhdCBjYW4gdHJhY2sgY2hhbmdlcy5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgdmFsdWUgdG8gc2V0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZhbHVlQ29tcG9uZW50V2l0aENoYW5nZVRyYWNraW5nPFQ+IGV4dGVuZHMgVmFsdWVDb21wb25lbnQ8VD4ge1xuICAvKipcbiAgICogU2V0cyBhIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSB2YWx1ZSBvZiB0aGUgY29tcG9uZW50IGNoYW5nZXMuXG4gICAqXG4gICAqIEBwYXJhbSBjYWxsYmFjayAtIEEgY2FsbGJhY2sgZnVuY3Rpb24gdGhhdCBpcyBjYWxsZWQgd2hlbiB0aGUgdmFsdWUgb2YgdGhlIGNvbXBvbmVudCBjaGFuZ2VzLlxuICAgKi9cbiAgb25DaGFuZ2UoY2FsbGJhY2s6IChuZXdWYWx1ZTogVCkgPT4gUHJvbWlzYWJsZTx2b2lkPik6IHRoaXM7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTsiLAogICJuYW1lcyI6IFtdCn0K
@@ -46,17 +46,54 @@ if you want to view the source, please visit the github repository of this plugi
46
46
  return module && module.__esModule && 'default' in module ? module.default : module;
47
47
  }
48
48
 
49
+ const OBSIDIAN_BUILT_IN_MODULE_NAMES = [
50
+ 'obsidian',
51
+ '@codemirror/autocomplete',
52
+ '@codemirror/collab',
53
+ '@codemirror/commands',
54
+ '@codemirror/language',
55
+ '@codemirror/lint',
56
+ '@codemirror/search',
57
+ '@codemirror/state',
58
+ '@codemirror/text',
59
+ '@codemirror/view',
60
+ '@lezer/common',
61
+ '@lezer/lr',
62
+ '@lezer/highlight'];
63
+
64
+
65
+ const DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES = [
66
+ '@codemirror/closebrackets',
67
+ '@codemirror/comment',
68
+ '@codemirror/fold',
69
+ '@codemirror/gutter',
70
+ '@codemirror/highlight',
71
+ '@codemirror/history',
72
+ '@codemirror/matchbrackets',
73
+ '@codemirror/panel',
74
+ '@codemirror/rangeset',
75
+ '@codemirror/rectangular-selection',
76
+ '@codemirror/stream-parser',
77
+ '@codemirror/tooltip'];
78
+
79
+
49
80
  function requirePatched(id) {
50
- // eslint-disable-next-line @typescript-eslint/no-deprecated, @typescript-eslint/no-unnecessary-condition -- We need access to app here which might not be available yet.
51
- const module = globalThis?.app?.isMobile ? undefined : originalRequire?.(id);
52
- if (module) {
53
- return extractDefault(module);
81
+ if (OBSIDIAN_BUILT_IN_MODULE_NAMES.includes(id) || DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES.includes(id)) {
82
+ return originalRequire?.(id);
54
83
  }
55
84
 
56
- if (id === 'process' || id === 'node:process') {
57
- // eslint-disable-next-line no-console -- Debug message is intentional here.
58
- console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
59
- return globalThis.process;
85
+ // eslint-disable-next-line @typescript-eslint/no-deprecated, @typescript-eslint/no-unnecessary-condition -- We need access to app here which might not be available yet.
86
+ if (globalThis?.app?.isMobile) {
87
+ if (id === 'process' || id === 'node:process') {
88
+ // eslint-disable-next-line no-console -- Debug message is intentional here.
89
+ console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
90
+ return globalThis.process;
91
+ }
92
+ } else {
93
+ const module = originalRequire?.(id);
94
+ if (module) {
95
+ return extractDefault(module);
96
+ }
60
97
  }
61
98
 
62
99
  // eslint-disable-next-line no-console -- Debug message is intentional here.
@@ -142,4 +179,4 @@ class WeekComponent extends import_TypedRangeTextComponent.TypedRangeTextCompone
142
179
  0 && (module.exports = {
143
180
  WeekComponent
144
181
  });
145
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL0NvbXBvbmVudHMvU2V0dGluZ0NvbXBvbmVudHMvV2Vla0NvbXBvbmVudC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb25cbiAqXG4gKiBDb250YWlucyBhIGNvbXBvbmVudCB0aGF0IGRpc3BsYXlzIGFuZCBlZGl0cyBhIHdlZWsuXG4gKi9cblxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzIC0tIFdlIG5lZWQgdG8gaW1wb3J0IGBpbml0UGx1Z2luQ29udGV4dGAgdG8gdXNlIGl0IGluIHRoZSB0c2RvY3MuXG5pbXBvcnQgdHlwZSB7IGluaXRQbHVnaW5Db250ZXh0IH0gZnJvbSAnLi4vLi4vUGx1Z2luL1BsdWdpbkNvbnRleHQudHMnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycyAtLSBXZSBuZWVkIHRvIGltcG9ydCBgU2V0dGluZ0V4YCB0byB1c2UgaXQgaW4gdGhlIHRzZG9jcy5cbmltcG9ydCB0eXBlIHsgU2V0dGluZ0V4IH0gZnJvbSAnLi4vLi4vU2V0dGluZ0V4LnRzJztcblxuaW1wb3J0IHsgQ3NzQ2xhc3MgfSBmcm9tICcuLi8uLi8uLi9Dc3NDbGFzcy50cyc7XG5pbXBvcnQgeyBUeXBlZFJhbmdlVGV4dENvbXBvbmVudCB9IGZyb20gJy4vVHlwZWRSYW5nZVRleHRDb21wb25lbnQudHMnO1xuXG5jb25zdCBEQVRFX0ZPUk1BVCA9ICdZWVlZLVtXXVdXJztcblxuLyoqXG4gKiBBbiBJU08gODYwMSB3ZWVrIGRhdGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSXNvV2VlayB7XG4gIC8qKlxuICAgKiBBbiBJU08gODYwMSB3ZWVrIG51bWJlciAoMS01MykuXG4gICAqL1xuICB3ZWVrTnVtYmVyOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEEgeWVhciAoMS05OTk5KS5cbiAgICovXG4gIHllYXI6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBBIGNvbXBvbmVudCB0aGF0IGRpc3BsYXlzIGFuZCBlZGl0cyBhIFdlZWsuXG4gKlxuICogWW91IGNhbiBhZGQgdGhpcyBjb21wb25lbnQgdXNpbmcge0BsaW5rIFNldHRpbmdFeC5hZGRXZWVrfS5cbiAqXG4gKiBJbiBvcmRlciB0byBhZGQgdGhlIHN0eWxlcyBmb3IgdGhlIGNvbXBvbmVudCwgdXNlIHtAbGluayBpbml0UGx1Z2luQ29udGV4dH0gaW4geW91ciBwbHVnaW4ncyBgb25sb2FkKClgIGZ1bmN0aW9uLlxuICpcbiAqIEFsdGVybmF0aXZlbHksIHlvdSBjYW4gY29weSBzdHlsZXMgZnJvbSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL21uYW91bW92L29ic2lkaWFuLWRldi11dGlscy9yZWxlYXNlcy9sYXRlc3QvZG93bmxvYWQvc3R5bGVzLmNzc30uXG4gKi9cbmV4cG9ydCBjbGFzcyBXZWVrQ29tcG9uZW50IGV4dGVuZHMgVHlwZWRSYW5nZVRleHRDb21wb25lbnQ8SXNvV2Vlaz4ge1xuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBXZWVrIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHBhcmFtIGNvbnRhaW5lckVsIC0gVGhlIGNvbnRhaW5lciBlbGVtZW50IG9mIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IoY29udGFpbmVyRWw6IEhUTUxFbGVtZW50KSB7XG4gICAgc3VwZXIoY29udGFpbmVyRWwsICd3ZWVrJywgQ3NzQ2xhc3MuV2Vla0NvbXBvbmVudCk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgYSBzdHJpbmcgdG8gYSBXZWVrLlxuICAgKlxuICAgKiBAcGFyYW0gc3RyIC0gVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgKiBAcmV0dXJucyBUaGUgd2Vlay5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSB2YWx1ZUZyb21TdHJpbmcoc3RyOiBzdHJpbmcpOiBJc29XZWVrIHtcbiAgICBjb25zdCBwYXJzZWQgPSBtb21lbnQoc3RyLCBEQVRFX0ZPUk1BVCk7XG5cbiAgICBpZiAoIXBhcnNlZC5pc1ZhbGlkKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCB3ZWVrJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHdlZWtOdW1iZXI6IHBhcnNlZC5pc29XZWVrKCksXG4gICAgICB5ZWFyOiBwYXJzZWQueWVhcigpXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhIHdlZWsgdG8gYSBzdHJpbmcuXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB3ZWVrIHRvIGNvbnZlcnQuXG4gICAqIEByZXR1cm5zIFRoZSBzdHJpbmcuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgdmFsdWVUb1N0cmluZyh2YWx1ZTogSXNvV2Vlayk6IHN0cmluZyB7XG4gICAgY29uc3QgZGF0ZSA9IG1vbWVudCgpLnllYXIodmFsdWUueWVhcikuaXNvV2Vlayh2YWx1ZS53ZWVrTnVtYmVyKTtcbiAgICByZXR1cm4gZGF0ZS5mb3JtYXQoREFURV9GT1JNQVQpO1xuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFNQSxvQkFBbUI7QUFPbkIsc0JBQXlCO0FBQ3pCLHFDQUF3QztBQUV4QyxNQUFNLGNBQWM7QUEwQmIsTUFBTSxzQkFBc0IsdURBQWlDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTTNELFlBQVksYUFBMEI7QUFDM0MsVUFBTSxhQUFhLFFBQVEseUJBQVMsYUFBYTtBQUFBLEVBQ25EO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFRZ0IsZ0JBQWdCLEtBQXNCO0FBQ3BELFVBQU0sYUFBUyxjQUFBQSxTQUFPLEtBQUssV0FBVztBQUV0QyxRQUFJLENBQUMsT0FBTyxRQUFRLEdBQUc7QUFDckIsWUFBTSxJQUFJLE1BQU0sY0FBYztBQUFBLElBQ2hDO0FBRUEsV0FBTztBQUFBLE1BQ0wsWUFBWSxPQUFPLFFBQVE7QUFBQSxNQUMzQixNQUFNLE9BQU8sS0FBSztBQUFBLElBQ3BCO0FBQUEsRUFDRjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUWdCLGNBQWMsT0FBd0I7QUFDcEQsVUFBTSxXQUFPLGNBQUFBLFNBQU8sRUFBRSxLQUFLLE1BQU0sSUFBSSxFQUFFLFFBQVEsTUFBTSxVQUFVO0FBQy9ELFdBQU8sS0FBSyxPQUFPLFdBQVc7QUFBQSxFQUNoQztBQUNGOyIsCiAgIm5hbWVzIjogWyJtb21lbnQiXQp9Cg==
182
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL0NvbXBvbmVudHMvU2V0dGluZ0NvbXBvbmVudHMvV2Vla0NvbXBvbmVudC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb25cbiAqXG4gKiBDb250YWlucyBhIGNvbXBvbmVudCB0aGF0IGRpc3BsYXlzIGFuZCBlZGl0cyBhIHdlZWsuXG4gKi9cblxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzIC0tIFdlIG5lZWQgdG8gaW1wb3J0IGBpbml0UGx1Z2luQ29udGV4dGAgdG8gdXNlIGl0IGluIHRoZSB0c2RvY3MuXG5pbXBvcnQgdHlwZSB7IGluaXRQbHVnaW5Db250ZXh0IH0gZnJvbSAnLi4vLi4vUGx1Z2luL1BsdWdpbkNvbnRleHQudHMnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycyAtLSBXZSBuZWVkIHRvIGltcG9ydCBgU2V0dGluZ0V4YCB0byB1c2UgaXQgaW4gdGhlIHRzZG9jcy5cbmltcG9ydCB0eXBlIHsgU2V0dGluZ0V4IH0gZnJvbSAnLi4vLi4vU2V0dGluZ0V4LnRzJztcblxuaW1wb3J0IHsgQ3NzQ2xhc3MgfSBmcm9tICcuLi8uLi8uLi9Dc3NDbGFzcy50cyc7XG5pbXBvcnQgeyBUeXBlZFJhbmdlVGV4dENvbXBvbmVudCB9IGZyb20gJy4vVHlwZWRSYW5nZVRleHRDb21wb25lbnQudHMnO1xuXG5jb25zdCBEQVRFX0ZPUk1BVCA9ICdZWVlZLVtXXVdXJztcblxuLyoqXG4gKiBBbiBJU08gODYwMSB3ZWVrIGRhdGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSXNvV2VlayB7XG4gIC8qKlxuICAgKiBBbiBJU08gODYwMSB3ZWVrIG51bWJlciAoMS01MykuXG4gICAqL1xuICB3ZWVrTnVtYmVyOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEEgeWVhciAoMS05OTk5KS5cbiAgICovXG4gIHllYXI6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBBIGNvbXBvbmVudCB0aGF0IGRpc3BsYXlzIGFuZCBlZGl0cyBhIFdlZWsuXG4gKlxuICogWW91IGNhbiBhZGQgdGhpcyBjb21wb25lbnQgdXNpbmcge0BsaW5rIFNldHRpbmdFeC5hZGRXZWVrfS5cbiAqXG4gKiBJbiBvcmRlciB0byBhZGQgdGhlIHN0eWxlcyBmb3IgdGhlIGNvbXBvbmVudCwgdXNlIHtAbGluayBpbml0UGx1Z2luQ29udGV4dH0gaW4geW91ciBwbHVnaW4ncyBgb25sb2FkKClgIGZ1bmN0aW9uLlxuICpcbiAqIEFsdGVybmF0aXZlbHksIHlvdSBjYW4gY29weSBzdHlsZXMgZnJvbSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL21uYW91bW92L29ic2lkaWFuLWRldi11dGlscy9yZWxlYXNlcy9sYXRlc3QvZG93bmxvYWQvc3R5bGVzLmNzc30uXG4gKi9cbmV4cG9ydCBjbGFzcyBXZWVrQ29tcG9uZW50IGV4dGVuZHMgVHlwZWRSYW5nZVRleHRDb21wb25lbnQ8SXNvV2Vlaz4ge1xuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBXZWVrIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHBhcmFtIGNvbnRhaW5lckVsIC0gVGhlIGNvbnRhaW5lciBlbGVtZW50IG9mIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IoY29udGFpbmVyRWw6IEhUTUxFbGVtZW50KSB7XG4gICAgc3VwZXIoY29udGFpbmVyRWwsICd3ZWVrJywgQ3NzQ2xhc3MuV2Vla0NvbXBvbmVudCk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgYSBzdHJpbmcgdG8gYSBXZWVrLlxuICAgKlxuICAgKiBAcGFyYW0gc3RyIC0gVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgKiBAcmV0dXJucyBUaGUgd2Vlay5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSB2YWx1ZUZyb21TdHJpbmcoc3RyOiBzdHJpbmcpOiBJc29XZWVrIHtcbiAgICBjb25zdCBwYXJzZWQgPSBtb21lbnQoc3RyLCBEQVRFX0ZPUk1BVCk7XG5cbiAgICBpZiAoIXBhcnNlZC5pc1ZhbGlkKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCB3ZWVrJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHdlZWtOdW1iZXI6IHBhcnNlZC5pc29XZWVrKCksXG4gICAgICB5ZWFyOiBwYXJzZWQueWVhcigpXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhIHdlZWsgdG8gYSBzdHJpbmcuXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB3ZWVrIHRvIGNvbnZlcnQuXG4gICAqIEByZXR1cm5zIFRoZSBzdHJpbmcuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgdmFsdWVUb1N0cmluZyh2YWx1ZTogSXNvV2Vlayk6IHN0cmluZyB7XG4gICAgY29uc3QgZGF0ZSA9IG1vbWVudCgpLnllYXIodmFsdWUueWVhcikuaXNvV2Vlayh2YWx1ZS53ZWVrTnVtYmVyKTtcbiAgICByZXR1cm4gZGF0ZS5mb3JtYXQoREFURV9GT1JNQVQpO1xuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBTUEsb0JBQW1CO0FBT25CLHNCQUF5QjtBQUN6QixxQ0FBd0M7QUFFeEMsTUFBTSxjQUFjO0FBMEJiLE1BQU0sc0JBQXNCLHVEQUFpQztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU0zRCxZQUFZLGFBQTBCO0FBQzNDLFVBQU0sYUFBYSxRQUFRLHlCQUFTLGFBQWE7QUFBQSxFQUNuRDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUWdCLGdCQUFnQixLQUFzQjtBQUNwRCxVQUFNLGFBQVMsY0FBQUEsU0FBTyxLQUFLLFdBQVc7QUFFdEMsUUFBSSxDQUFDLE9BQU8sUUFBUSxHQUFHO0FBQ3JCLFlBQU0sSUFBSSxNQUFNLGNBQWM7QUFBQSxJQUNoQztBQUVBLFdBQU87QUFBQSxNQUNMLFlBQVksT0FBTyxRQUFRO0FBQUEsTUFDM0IsTUFBTSxPQUFPLEtBQUs7QUFBQSxJQUNwQjtBQUFBLEVBQ0Y7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVFnQixjQUFjLE9BQXdCO0FBQ3BELFVBQU0sV0FBTyxjQUFBQSxTQUFPLEVBQUUsS0FBSyxNQUFNLElBQUksRUFBRSxRQUFRLE1BQU0sVUFBVTtBQUMvRCxXQUFPLEtBQUssT0FBTyxXQUFXO0FBQUEsRUFDaEM7QUFDRjsiLAogICJuYW1lcyI6IFsibW9tZW50Il0KfQo=
@@ -46,17 +46,54 @@ if you want to view the source, please visit the github repository of this plugi
46
46
  return module && module.__esModule && 'default' in module ? module.default : module;
47
47
  }
48
48
 
49
+ const OBSIDIAN_BUILT_IN_MODULE_NAMES = [
50
+ 'obsidian',
51
+ '@codemirror/autocomplete',
52
+ '@codemirror/collab',
53
+ '@codemirror/commands',
54
+ '@codemirror/language',
55
+ '@codemirror/lint',
56
+ '@codemirror/search',
57
+ '@codemirror/state',
58
+ '@codemirror/text',
59
+ '@codemirror/view',
60
+ '@lezer/common',
61
+ '@lezer/lr',
62
+ '@lezer/highlight'];
63
+
64
+
65
+ const DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES = [
66
+ '@codemirror/closebrackets',
67
+ '@codemirror/comment',
68
+ '@codemirror/fold',
69
+ '@codemirror/gutter',
70
+ '@codemirror/highlight',
71
+ '@codemirror/history',
72
+ '@codemirror/matchbrackets',
73
+ '@codemirror/panel',
74
+ '@codemirror/rangeset',
75
+ '@codemirror/rectangular-selection',
76
+ '@codemirror/stream-parser',
77
+ '@codemirror/tooltip'];
78
+
79
+
49
80
  function requirePatched(id) {
50
- // eslint-disable-next-line @typescript-eslint/no-deprecated, @typescript-eslint/no-unnecessary-condition -- We need access to app here which might not be available yet.
51
- const module = globalThis?.app?.isMobile ? undefined : originalRequire?.(id);
52
- if (module) {
53
- return extractDefault(module);
81
+ if (OBSIDIAN_BUILT_IN_MODULE_NAMES.includes(id) || DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES.includes(id)) {
82
+ return originalRequire?.(id);
54
83
  }
55
84
 
56
- if (id === 'process' || id === 'node:process') {
57
- // eslint-disable-next-line no-console -- Debug message is intentional here.
58
- console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
59
- return globalThis.process;
85
+ // eslint-disable-next-line @typescript-eslint/no-deprecated, @typescript-eslint/no-unnecessary-condition -- We need access to app here which might not be available yet.
86
+ if (globalThis?.app?.isMobile) {
87
+ if (id === 'process' || id === 'node:process') {
88
+ // eslint-disable-next-line no-console -- Debug message is intentional here.
89
+ console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
90
+ return globalThis.process;
91
+ }
92
+ } else {
93
+ const module = originalRequire?.(id);
94
+ if (module) {
95
+ return extractDefault(module);
96
+ }
60
97
  }
61
98
 
62
99
  // eslint-disable-next-line no-console -- Debug message is intentional here.
@@ -178,4 +215,4 @@ var WeekComponent = __toESM(__extractDefault(require('./WeekComponent.cjs')), 1)
178
215
  ValueComponentWithChangeTracking,
179
216
  WeekComponent
180
217
  });
181
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL0NvbXBvbmVudHMvU2V0dGluZ0NvbXBvbmVudHMvaW5kZXgudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qIFRISVMgSVMgQSBHRU5FUkFURUQvQlVORExFRCBGSUxFIEJZIEJVSUxEIFNDUklQVCAqL1xuXG5leHBvcnQgKiBhcyBDaGVja2JveENvbXBvbmVudCBmcm9tICcuL0NoZWNrYm94Q29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzIENvZGVIaWdobGlnaHRlckNvbXBvbmVudCBmcm9tICcuL0NvZGVIaWdobGlnaHRlckNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyBEYXRlQ29tcG9uZW50IGZyb20gJy4vRGF0ZUNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyBEYXRlVGltZUNvbXBvbmVudCBmcm9tICcuL0RhdGVUaW1lQ29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzIEVtYWlsQ29tcG9uZW50IGZyb20gJy4vRW1haWxDb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgRmlsZUNvbXBvbmVudCBmcm9tICcuL0ZpbGVDb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgTW9udGhDb21wb25lbnQgZnJvbSAnLi9Nb250aENvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyBNdWx0aXBsZURyb3Bkb3duQ29tcG9uZW50IGZyb20gJy4vTXVsdGlwbGVEcm9wZG93bkNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyBNdWx0aXBsZUVtYWlsQ29tcG9uZW50IGZyb20gJy4vTXVsdGlwbGVFbWFpbENvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyBNdWx0aXBsZUZpbGVDb21wb25lbnQgZnJvbSAnLi9NdWx0aXBsZUZpbGVDb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgTXVsdGlwbGVUZXh0Q29tcG9uZW50IGZyb20gJy4vTXVsdGlwbGVUZXh0Q29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzIE51bWJlckNvbXBvbmVudCBmcm9tICcuL051bWJlckNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyBQYXNzd29yZENvbXBvbmVudCBmcm9tICcuL1Bhc3N3b3JkQ29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzIFNldHRpbmdDb21wb25lbnRXcmFwcGVyIGZyb20gJy4vU2V0dGluZ0NvbXBvbmVudFdyYXBwZXIudHMnO1xuZXhwb3J0ICogYXMgVGVsZXBob25lQ29tcG9uZW50IGZyb20gJy4vVGVsZXBob25lQ29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzIFRleHRCYXNlZENvbXBvbmVudCBmcm9tICcuL1RleHRCYXNlZENvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyBUaW1lQ29tcG9uZW50IGZyb20gJy4vVGltZUNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyBUcmlTdGF0ZUNoZWNrYm94Q29tcG9uZW50IGZyb20gJy4vVHJpU3RhdGVDaGVja2JveENvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyBUeXBlZERyb3Bkb3duQ29tcG9uZW50IGZyb20gJy4vVHlwZWREcm9wZG93bkNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyBUeXBlZE11bHRpcGxlRHJvcGRvd25Db21wb25lbnQgZnJvbSAnLi9UeXBlZE11bHRpcGxlRHJvcGRvd25Db21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgVHlwZWRSYW5nZVRleHRDb21wb25lbnQgZnJvbSAnLi9UeXBlZFJhbmdlVGV4dENvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyBUeXBlZFRleHRDb21wb25lbnQgZnJvbSAnLi9UeXBlZFRleHRDb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgVXJsQ29tcG9uZW50IGZyb20gJy4vVXJsQ29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzIFZhbGlkYXRvckNvbXBvbmVudCBmcm9tICcuL1ZhbGlkYXRvckNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyBWYWx1ZUNvbXBvbmVudFdpdGhDaGFuZ2VUcmFja2luZyBmcm9tICcuL1ZhbHVlQ29tcG9uZW50V2l0aENoYW5nZVRyYWNraW5nLnRzJztcbmV4cG9ydCAqIGFzIFdlZWtDb21wb25lbnQgZnJvbSAnLi9XZWVrQ29tcG9uZW50LnRzJztcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUEsd0JBQW1DO0FBQ25DLCtCQUEwQztBQUMxQyxvQkFBK0I7QUFDL0Isd0JBQW1DO0FBQ25DLHFCQUFnQztBQUNoQyxvQkFBK0I7QUFDL0IscUJBQWdDO0FBQ2hDLGdDQUEyQztBQUMzQyw2QkFBd0M7QUFDeEMsNEJBQXVDO0FBQ3ZDLDRCQUF1QztBQUN2QyxzQkFBaUM7QUFDakMsd0JBQW1DO0FBQ25DLDhCQUF5QztBQUN6Qyx5QkFBb0M7QUFDcEMseUJBQW9DO0FBQ3BDLG9CQUErQjtBQUMvQixnQ0FBMkM7QUFDM0MsNkJBQXdDO0FBQ3hDLHFDQUFnRDtBQUNoRCw4QkFBeUM7QUFDekMseUJBQW9DO0FBQ3BDLG1CQUE4QjtBQUM5Qix5QkFBb0M7QUFDcEMsdUNBQWtEO0FBQ2xELG9CQUErQjsiLAogICJuYW1lcyI6IFtdCn0K
218
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL0NvbXBvbmVudHMvU2V0dGluZ0NvbXBvbmVudHMvaW5kZXgudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qIFRISVMgSVMgQSBHRU5FUkFURUQvQlVORExFRCBGSUxFIEJZIEJVSUxEIFNDUklQVCAqL1xuXG5leHBvcnQgKiBhcyBDaGVja2JveENvbXBvbmVudCBmcm9tICcuL0NoZWNrYm94Q29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzIENvZGVIaWdobGlnaHRlckNvbXBvbmVudCBmcm9tICcuL0NvZGVIaWdobGlnaHRlckNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyBEYXRlQ29tcG9uZW50IGZyb20gJy4vRGF0ZUNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyBEYXRlVGltZUNvbXBvbmVudCBmcm9tICcuL0RhdGVUaW1lQ29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzIEVtYWlsQ29tcG9uZW50IGZyb20gJy4vRW1haWxDb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgRmlsZUNvbXBvbmVudCBmcm9tICcuL0ZpbGVDb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgTW9udGhDb21wb25lbnQgZnJvbSAnLi9Nb250aENvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyBNdWx0aXBsZURyb3Bkb3duQ29tcG9uZW50IGZyb20gJy4vTXVsdGlwbGVEcm9wZG93bkNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyBNdWx0aXBsZUVtYWlsQ29tcG9uZW50IGZyb20gJy4vTXVsdGlwbGVFbWFpbENvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyBNdWx0aXBsZUZpbGVDb21wb25lbnQgZnJvbSAnLi9NdWx0aXBsZUZpbGVDb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgTXVsdGlwbGVUZXh0Q29tcG9uZW50IGZyb20gJy4vTXVsdGlwbGVUZXh0Q29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzIE51bWJlckNvbXBvbmVudCBmcm9tICcuL051bWJlckNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyBQYXNzd29yZENvbXBvbmVudCBmcm9tICcuL1Bhc3N3b3JkQ29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzIFNldHRpbmdDb21wb25lbnRXcmFwcGVyIGZyb20gJy4vU2V0dGluZ0NvbXBvbmVudFdyYXBwZXIudHMnO1xuZXhwb3J0ICogYXMgVGVsZXBob25lQ29tcG9uZW50IGZyb20gJy4vVGVsZXBob25lQ29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzIFRleHRCYXNlZENvbXBvbmVudCBmcm9tICcuL1RleHRCYXNlZENvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyBUaW1lQ29tcG9uZW50IGZyb20gJy4vVGltZUNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyBUcmlTdGF0ZUNoZWNrYm94Q29tcG9uZW50IGZyb20gJy4vVHJpU3RhdGVDaGVja2JveENvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyBUeXBlZERyb3Bkb3duQ29tcG9uZW50IGZyb20gJy4vVHlwZWREcm9wZG93bkNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyBUeXBlZE11bHRpcGxlRHJvcGRvd25Db21wb25lbnQgZnJvbSAnLi9UeXBlZE11bHRpcGxlRHJvcGRvd25Db21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgVHlwZWRSYW5nZVRleHRDb21wb25lbnQgZnJvbSAnLi9UeXBlZFJhbmdlVGV4dENvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyBUeXBlZFRleHRDb21wb25lbnQgZnJvbSAnLi9UeXBlZFRleHRDb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgVXJsQ29tcG9uZW50IGZyb20gJy4vVXJsQ29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzIFZhbGlkYXRvckNvbXBvbmVudCBmcm9tICcuL1ZhbGlkYXRvckNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyBWYWx1ZUNvbXBvbmVudFdpdGhDaGFuZ2VUcmFja2luZyBmcm9tICcuL1ZhbHVlQ29tcG9uZW50V2l0aENoYW5nZVRyYWNraW5nLnRzJztcbmV4cG9ydCAqIGFzIFdlZWtDb21wb25lbnQgZnJvbSAnLi9XZWVrQ29tcG9uZW50LnRzJztcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBLHdCQUFtQztBQUNuQywrQkFBMEM7QUFDMUMsb0JBQStCO0FBQy9CLHdCQUFtQztBQUNuQyxxQkFBZ0M7QUFDaEMsb0JBQStCO0FBQy9CLHFCQUFnQztBQUNoQyxnQ0FBMkM7QUFDM0MsNkJBQXdDO0FBQ3hDLDRCQUF1QztBQUN2Qyw0QkFBdUM7QUFDdkMsc0JBQWlDO0FBQ2pDLHdCQUFtQztBQUNuQyw4QkFBeUM7QUFDekMseUJBQW9DO0FBQ3BDLHlCQUFvQztBQUNwQyxvQkFBK0I7QUFDL0IsZ0NBQTJDO0FBQzNDLDZCQUF3QztBQUN4QyxxQ0FBZ0Q7QUFDaEQsOEJBQXlDO0FBQ3pDLHlCQUFvQztBQUNwQyxtQkFBOEI7QUFDOUIseUJBQW9DO0FBQ3BDLHVDQUFrRDtBQUNsRCxvQkFBK0I7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -46,17 +46,54 @@ if you want to view the source, please visit the github repository of this plugi
46
46
  return module && module.__esModule && 'default' in module ? module.default : module;
47
47
  }
48
48
 
49
+ const OBSIDIAN_BUILT_IN_MODULE_NAMES = [
50
+ 'obsidian',
51
+ '@codemirror/autocomplete',
52
+ '@codemirror/collab',
53
+ '@codemirror/commands',
54
+ '@codemirror/language',
55
+ '@codemirror/lint',
56
+ '@codemirror/search',
57
+ '@codemirror/state',
58
+ '@codemirror/text',
59
+ '@codemirror/view',
60
+ '@lezer/common',
61
+ '@lezer/lr',
62
+ '@lezer/highlight'];
63
+
64
+
65
+ const DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES = [
66
+ '@codemirror/closebrackets',
67
+ '@codemirror/comment',
68
+ '@codemirror/fold',
69
+ '@codemirror/gutter',
70
+ '@codemirror/highlight',
71
+ '@codemirror/history',
72
+ '@codemirror/matchbrackets',
73
+ '@codemirror/panel',
74
+ '@codemirror/rangeset',
75
+ '@codemirror/rectangular-selection',
76
+ '@codemirror/stream-parser',
77
+ '@codemirror/tooltip'];
78
+
79
+
49
80
  function requirePatched(id) {
50
- // eslint-disable-next-line @typescript-eslint/no-deprecated, @typescript-eslint/no-unnecessary-condition -- We need access to app here which might not be available yet.
51
- const module = globalThis?.app?.isMobile ? undefined : originalRequire?.(id);
52
- if (module) {
53
- return extractDefault(module);
81
+ if (OBSIDIAN_BUILT_IN_MODULE_NAMES.includes(id) || DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES.includes(id)) {
82
+ return originalRequire?.(id);
54
83
  }
55
84
 
56
- if (id === 'process' || id === 'node:process') {
57
- // eslint-disable-next-line no-console -- Debug message is intentional here.
58
- console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
59
- return globalThis.process;
85
+ // eslint-disable-next-line @typescript-eslint/no-deprecated, @typescript-eslint/no-unnecessary-condition -- We need access to app here which might not be available yet.
86
+ if (globalThis?.app?.isMobile) {
87
+ if (id === 'process' || id === 'node:process') {
88
+ // eslint-disable-next-line no-console -- Debug message is intentional here.
89
+ console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
90
+ return globalThis.process;
91
+ }
92
+ } else {
93
+ const module = originalRequire?.(id);
94
+ if (module) {
95
+ return extractDefault(module);
96
+ }
60
97
  }
61
98
 
62
99
  // eslint-disable-next-line no-console -- Debug message is intentional here.
@@ -106,4 +143,4 @@ var SettingComponents = __toESM(__extractDefault(require('./SettingComponents/in
106
143
  AsyncEventsComponent,
107
144
  SettingComponents
108
145
  });
109
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL0NvbXBvbmVudHMvaW5kZXgudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qIFRISVMgSVMgQSBHRU5FUkFURUQvQlVORExFRCBGSUxFIEJZIEJVSUxEIFNDUklQVCAqL1xuXG5leHBvcnQgKiBhcyBBc3luY0V2ZW50c0NvbXBvbmVudCBmcm9tICcuL0FzeW5jRXZlbnRzQ29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzIFNldHRpbmdDb21wb25lbnRzIGZyb20gJy4vU2V0dGluZ0NvbXBvbmVudHMvaW5kZXgudHMnO1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQSwyQkFBc0M7QUFDdEMsd0JBQW1DOyIsCiAgIm5hbWVzIjogW10KfQo=
146
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL0NvbXBvbmVudHMvaW5kZXgudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qIFRISVMgSVMgQSBHRU5FUkFURUQvQlVORExFRCBGSUxFIEJZIEJVSUxEIFNDUklQVCAqL1xuXG5leHBvcnQgKiBhcyBBc3luY0V2ZW50c0NvbXBvbmVudCBmcm9tICcuL0FzeW5jRXZlbnRzQ29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzIFNldHRpbmdDb21wb25lbnRzIGZyb20gJy4vU2V0dGluZ0NvbXBvbmVudHMvaW5kZXgudHMnO1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUEsMkJBQXNDO0FBQ3RDLHdCQUFtQzsiLAogICJuYW1lcyI6IFtdCn0K
@@ -46,17 +46,54 @@ if you want to view the source, please visit the github repository of this plugi
46
46
  return module && module.__esModule && 'default' in module ? module.default : module;
47
47
  }
48
48
 
49
+ const OBSIDIAN_BUILT_IN_MODULE_NAMES = [
50
+ 'obsidian',
51
+ '@codemirror/autocomplete',
52
+ '@codemirror/collab',
53
+ '@codemirror/commands',
54
+ '@codemirror/language',
55
+ '@codemirror/lint',
56
+ '@codemirror/search',
57
+ '@codemirror/state',
58
+ '@codemirror/text',
59
+ '@codemirror/view',
60
+ '@lezer/common',
61
+ '@lezer/lr',
62
+ '@lezer/highlight'];
63
+
64
+
65
+ const DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES = [
66
+ '@codemirror/closebrackets',
67
+ '@codemirror/comment',
68
+ '@codemirror/fold',
69
+ '@codemirror/gutter',
70
+ '@codemirror/highlight',
71
+ '@codemirror/history',
72
+ '@codemirror/matchbrackets',
73
+ '@codemirror/panel',
74
+ '@codemirror/rangeset',
75
+ '@codemirror/rectangular-selection',
76
+ '@codemirror/stream-parser',
77
+ '@codemirror/tooltip'];
78
+
79
+
49
80
  function requirePatched(id) {
50
- // eslint-disable-next-line @typescript-eslint/no-deprecated, @typescript-eslint/no-unnecessary-condition -- We need access to app here which might not be available yet.
51
- const module = globalThis?.app?.isMobile ? undefined : originalRequire?.(id);
52
- if (module) {
53
- return extractDefault(module);
81
+ if (OBSIDIAN_BUILT_IN_MODULE_NAMES.includes(id) || DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES.includes(id)) {
82
+ return originalRequire?.(id);
54
83
  }
55
84
 
56
- if (id === 'process' || id === 'node:process') {
57
- // eslint-disable-next-line no-console -- Debug message is intentional here.
58
- console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
59
- return globalThis.process;
85
+ // eslint-disable-next-line @typescript-eslint/no-deprecated, @typescript-eslint/no-unnecessary-condition -- We need access to app here which might not be available yet.
86
+ if (globalThis?.app?.isMobile) {
87
+ if (id === 'process' || id === 'node:process') {
88
+ // eslint-disable-next-line no-console -- Debug message is intentional here.
89
+ console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
90
+ return globalThis.process;
91
+ }
92
+ } else {
93
+ const module = originalRequire?.(id);
94
+ if (module) {
95
+ return extractDefault(module);
96
+ }
60
97
  }
61
98
 
62
99
  // eslint-disable-next-line no-console -- Debug message is intentional here.
@@ -313,4 +350,4 @@ async function renderPaginated(options) {
313
350
  renderPaginatedList,
314
351
  renderPaginatedTable
315
352
  });
316
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL0RhdGF2aWV3LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIHV0aWxpdHkgZnVuY3Rpb25zIGZvciB3b3JraW5nIHdpdGggRGF0YXZpZXcgaW4gT2JzaWRpYW4uXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBQcm9taXNhYmxlIH0gZnJvbSAndHlwZS1mZXN0JztcblxuaW1wb3J0IHR5cGUgeyBEYXRhdmlld0lubGluZUFwaSBhcyBEYXRhdmlld0lubGluZUFwaU9yaWdpbmFsIH0gZnJvbSAnLi9AdHlwZXMvRGF0YXZpZXcvYXBpL2lubGluZS1hcGkuZC50cyc7XG5pbXBvcnQgdHlwZSB7XG4gIERhdGFBcnJheSxcbiAgRGF0YXZpZXdBcGksXG4gIFNNYXJrZG93blBhZ2Vcbn0gZnJvbSAnLi9AdHlwZXMvRGF0YXZpZXcvaW5kZXguZC50cyc7XG5pbXBvcnQgdHlwZSB7IFBhdGhPckZpbGUgfSBmcm9tICcuL0ZpbGVTeXN0ZW0udHMnO1xuaW1wb3J0IHR5cGUgeyBDb21iaW5lZEZyb250bWF0dGVyIH0gZnJvbSAnLi9Gcm9udG1hdHRlci50cyc7XG5cbmltcG9ydCB7IGNvbnZlcnRBc3luY1RvU3luYyB9IGZyb20gJy4uL0FzeW5jLnRzJztcbmltcG9ydCB7XG4gIGVycm9yVG9TdHJpbmcsXG4gIHRocm93RXhwcmVzc2lvblxufSBmcm9tICcuLi9FcnJvci50cyc7XG5pbXBvcnQge1xuICBnZXRGaWxlLFxuICBnZXRQYXRoXG59IGZyb20gJy4vRmlsZVN5c3RlbS50cyc7XG5pbXBvcnQgeyB0IH0gZnJvbSAnLi9pMThuL2kxOG4udHMnO1xuaW1wb3J0IHsgcmVsYXRpdmVQYXRoVG9SZXNvdXJjZVVybCB9IGZyb20gJy4vUmVzb3VyY2VVcmwudHMnO1xuXG4vKipcbiAqIEV4cG9ydCBEYXRlVGltZSBhbmQgTGluayB0eXBlcyBmcm9tIHRoZSBEYXRhdmlldyBBUEkuXG4gKi9cbmV4cG9ydCB0eXBlIHtcbiAgRGF0ZVRpbWUsXG4gIExpbmtcbn0gZnJvbSAnLi9AdHlwZXMvRGF0YXZpZXcvaW5kZXguZC50cyc7XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgLyoqXG4gICAqIEEge0BsaW5rIERhdGF2aWV3QXBpfSBvYmplY3QgcmVwcmVzZW50cyB0aGUgQVBJIGZvciBpbnRlcmFjdGluZyB3aXRoIERhdGF2aWV3IGluIE9ic2lkaWFuLlxuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHZhcnMtb24tdG9wIC0tIEl0IGlzIGEgYHZhcmAgaW4gbW9kdWxlIGRlY2xhcmF0aW9uLiBFU0xpbnQgbWlzdGFrZW5seSBjb25mdXNlcyBpdCB3aXRoIGB2YXJgIGFzIGEgdmFyaWFibGUgZGVjbGFyYXRpb24uXG4gIHZhciBEYXRhdmlld0FQSTogRGF0YXZpZXdBcGkgfCB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogQSBjb21iaW5lZCBwYWdlIHR5cGUsIHdoaWNoIGluY2x1ZGVzIHRoZSBmcm9udCBtYXR0ZXIgYW5kIHRoZSBTTWFya2Rvd25QYWdlLlxuICovXG5leHBvcnQgdHlwZSBDb21iaW5lZFBhZ2U8Q3VzdG9tRnJvbnRtYXR0ZXIgPSB1bmtub3duPiA9IENvbWJpbmVkRnJvbnRtYXR0ZXI8Q3VzdG9tRnJvbnRtYXR0ZXI+ICYgU01hcmtkb3duUGFnZTtcblxuLyoqXG4gKiBFeHRlbmRlZCBpbnRlcmZhY2UgZm9yIHRoZSBEYXRhdmlldyBJbmxpbmUgQVBJLCBwcm92aWRpbmcgYWRkaXRpb25hbCBtZXRob2RzIGZvciBjdXN0b20gcGFnZSB0eXBlcyBhbmQgYXJyYXkgaGFuZGxpbmcuXG4gKlxuICogQHR5cGVQYXJhbSBDdXN0b21QYWdlIC0gVGhlIHR5cGUgb2YgdGhlIGN1c3RvbSBwYWdlLiBEZWZhdWx0cyB0byBgU01hcmtkb3duUGFnZWAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YXZpZXdJbmxpbmVBcGkgZXh0ZW5kcyBEYXRhdmlld0lubGluZUFwaU9yaWdpbmFsIHtcbiAgLyoqXG4gICAqIFdyYXBzIGFuIGFycmF5IG9mIGl0ZW1zIGludG8gYSB7QGxpbmsgRGF0YUFycmF5fSBvYmplY3QuXG4gICAqXG4gICAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIHRoZSBpdGVtcyBpbiB0aGUgYXJyYXkuXG4gICAqIEBwYXJhbSBhcnIgLSBUaGUgYXJyYXkgb2YgaXRlbXMgdG8gd3JhcC5cbiAgICogQHJldHVybnMgQSB7QGxpbmsgRGF0YUFycmF5fSBjb250YWluaW5nIHRoZSBpdGVtcy5cbiAgICovXG4gIGFycmF5PFQ+KGFycjogVFtdKTogRGF0YUFycmF5PFQ+O1xuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgdGhlIGN1cnJlbnQgcGFnZSwgd2l0aCBhbiBvcHRpb25hbCBjdXN0b20gcGFnZSB0eXBlLlxuICAgKlxuICAgKiBAdHlwZVBhcmFtIEN1c3RvbVBhZ2UgLSBUaGUgdHlwZSBvZiB0aGUgY3VzdG9tIHBhZ2UuIERlZmF1bHRzIHRvIGBTTWFya2Rvd25QYWdlYC5cbiAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgcGFnZS5cbiAgICovXG4gIGN1cnJlbnQ8Q3VzdG9tRnJvbnRtYXR0ZXIgPSB1bmtub3duPigpOiBDb21iaW5lZFBhZ2U8Q3VzdG9tRnJvbnRtYXR0ZXI+O1xuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgcGFnZXMgYmFzZWQgb24gYW4gb3B0aW9uYWwgcXVlcnksIHdpdGggYW4gb3B0aW9uYWwgY3VzdG9tIHBhZ2UgdHlwZS5cbiAgICpcbiAgICogQHR5cGVQYXJhbSBDdXN0b21QYWdlIC0gVGhlIHR5cGUgb2YgdGhlIGN1c3RvbSBwYWdlLiBEZWZhdWx0cyB0byBgU01hcmtkb3duUGFnZWAuXG4gICAqIEBwYXJhbSBxdWVyeSAtIEFuIG9wdGlvbmFsIHN0cmluZyBxdWVyeSB0byBmaWx0ZXIgdGhlIHBhZ2VzLlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBEYXRhQXJyYXl9IG9mIHBhZ2VzIG1hdGNoaW5nIHRoZSBxdWVyeS5cbiAgICovXG4gIHBhZ2VzPEN1c3RvbUZyb250bWF0dGVyID0gdW5rbm93bj4ocXVlcnk/OiBzdHJpbmcpOiBEYXRhQXJyYXk8Q29tYmluZWRQYWdlPEN1c3RvbUZyb250bWF0dGVyPj47XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBwYXJhZ3JhcGggSFRNTCBlbGVtZW50IHdpdGggdGhlIHByb3ZpZGVkIHRleHQgYW5kIG9wdGlvbmFsIERPTSBlbGVtZW50IG9wdGlvbnMuXG4gICAqXG4gICAqIEBwYXJhbSB0ZXh0IC0gVGhlIGNvbnRlbnQgb2YgdGhlIHBhcmFncmFwaC5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBPcHRpb25hbCBET00gZWxlbWVudCBvcHRpb25zLCBpbmNsdWRpbmcgYW4gb3B0aW9uYWwgY29udGFpbmVyLlxuICAgKiBAcmV0dXJucyBUaGUgY3JlYXRlZCBIVE1MIHBhcmFncmFwaCBlbGVtZW50LlxuICAgKi9cbiAgcGFyYWdyYXBoKFxuICAgIHRleHQ6IHVua25vd24sXG4gICAgb3B0aW9ucz86IERvbUVsZW1lbnRJbmZvV2l0aENvbnRhaW5lclxuICApOiBIVE1MUGFyYWdyYXBoRWxlbWVudDtcbn1cblxuLyoqXG4gKiBEb21FbGVtZW50SW5mbyB3aXRoIGFuIG9wdGlvbmFsIGNvbnRhaW5lci5cbiAqL1xuZXhwb3J0IHR5cGUgRG9tRWxlbWVudEluZm9XaXRoQ29udGFpbmVyID0geyBjb250YWluZXI/OiBIVE1MRWxlbWVudCB9ICYgRG9tRWxlbWVudEluZm87XG5cbi8qKlxuICogQSBjb21iaW5lZCBmaWxlIHR5cGUsIHdoaWNoIGluY2x1ZGVzIHRoZSBmcm9udCBtYXR0ZXIgYW5kIHRoZSBTTWFya2Rvd25GaWxlLlxuICovXG5leHBvcnQgdHlwZSBQYWdlRmlsZSA9IFNNYXJrZG93blBhZ2VbJ2ZpbGUnXTtcblxuLyoqXG4gKiBMaXN0IG9mIHBhZ2UgZmlsZXMuXG4gKi9cbmV4cG9ydCB0eXBlIFBhZ2VGaWxlcyA9IEFycmF5T3JEYXRhQXJyYXk8UGFnZUZpbGU+O1xuXG4vKipcbiAqIFJlbG9hZHMgdGhlIGN1cnJlbnQgZmlsZSBjYWNoZSB1c2luZyB0aGUgRGF0YXZpZXcgQVBJLlxuICpcbiAqIEBwYXJhbSBkdiAtIFRoZSBEYXRhdmlld0lubGluZUFwaSBpbnN0YW5jZS5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgY2FjaGUgaXMgcmVsb2FkZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWxvYWRDdXJyZW50RmlsZUNhY2hlKGR2OiBEYXRhdmlld0lubGluZUFwaSk6IFByb21pc2U8dm9pZD4ge1xuICBhd2FpdCBEYXRhdmlld0FQST8uaW5kZXgucmVsb2FkKGdldEZpbGUoZHYuYXBwLCBkdi5jdXJyZW50KCkuZmlsZS5wYXRoKSk7XG59XG5cbmNvbnN0IHBhZ2luYXRpb25Dc3MgPSBgXG4ucGFnaW5hdGlvbiAucGFnZS1saW5rLmRpc2FibGVkIHtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIGNvbG9yOiBncmF5O1xufVxuXG4ucGFnaW5hdGlvbiAucGFnZS1saW5rIHtcbiAgbWFyZ2luOiAwIDVweDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGNvbG9yOiBibHVlO1xufVxuXG4ucGFnaW5hdGlvbiAucGFnZS1saW5rOmhvdmVyOm5vdCguZGlzYWJsZWQpIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG59XG4ucGFnaW5hdGlvbiAucGFnZS1saW5rLmN1cnJlbnQge1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG59XG5cbi5wYWdpbmF0aW9uIHNlbGVjdCxcbi5wYWdpbmF0aW9uIGlucHV0IHtcbiAgbWFyZ2luOiAwIDVweDtcbn1cbmA7XG5cbi8qKlxuICogQXJyYXkgb3IgRGF0YUFycmF5IHR5cGUuXG4gKi9cbmV4cG9ydCB0eXBlIEFycmF5T3JEYXRhQXJyYXk8VD4gPSBEYXRhQXJyYXk8VD4gfCBUW107XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIHJlbmRlcklmcmFtZX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVuZGVySWZyYW1lT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBBIHtAbGluayBEYXRhdmlld0lubGluZUFwaX0gaW5zdGFuY2UuXG4gICAqL1xuICBkdjogRGF0YXZpZXdJbmxpbmVBcGk7XG5cbiAgLyoqXG4gICAqIEEgaGVpZ2h0IG9mIHRoZSBpZnJhbWUuXG4gICAqL1xuICBoZWlnaHQ6IHN0cmluZztcblxuICAvKipcbiAgICogQSByZWxhdGl2ZSBwYXRoIHRvIHRoZSByZXNvdXJjZSB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIGlmcmFtZS5cbiAgICovXG4gIHJlbGF0aXZlUGF0aE9yRmlsZTogUGF0aE9yRmlsZTtcblxuICAvKipcbiAgICogQSB3aWR0aCBvZiB0aGUgaWZyYW1lLlxuICAgKi9cbiAgd2lkdGg6IHN0cmluZztcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgcmVuZGVyUGFnaW5hdGVkTGlzdH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVuZGVyUGFnaW5hdGVkTGlzdE9wdGlvbnM8VD4ge1xuICAvKipcbiAgICogQSB7QGxpbmsgRGF0YXZpZXdJbmxpbmVBcGl9IGluc3RhbmNlLlxuICAgKi9cbiAgZHY6IERhdGF2aWV3SW5saW5lQXBpO1xuXG4gIC8qKlxuICAgKiBPcHRpb25zIGZvciBpdGVtcyBwZXIgcGFnZS4gRGVmYXVsdHMgdG8gYFsxMCwgMjAsIDUwLCAxMDBdYC5cbiAgICovXG4gIGl0ZW1zUGVyUGFnZU9wdGlvbnM/OiBudW1iZXJbXTtcblxuICAvKipcbiAgICogQSBsaXN0IG9mIGl0ZW1zIHRvIHBhZ2luYXRlLlxuICAgKi9cbiAgcm93czogQXJyYXlPckRhdGFBcnJheTxUPjtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgcmVuZGVyUGFnaW5hdGVkfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZW5kZXJQYWdpbmF0ZWRPcHRpb25zPFQ+IHtcbiAgLyoqXG4gICAqIEEge0BsaW5rIERhdGF2aWV3SW5saW5lQXBpfSBpbnN0YW5jZS5cbiAgICovXG4gIGR2OiBEYXRhdmlld0lubGluZUFwaTtcblxuICAvKipcbiAgICogT3B0aW9ucyBmb3IgaXRlbXMgcGVyIHBhZ2UuXG4gICAqL1xuICBpdGVtc1BlclBhZ2VPcHRpb25zOiBudW1iZXJbXTtcblxuICAvKipcbiAgICogRGlzcGxheSB0aGUgcGFnaW5hdGVkIGNvbnRlbnQuXG4gICAqXG4gICAqIEBwYXJhbSByb3dzRm9yT25lUGFnZSAtIFRoZSByb3dzIHRvIHJlbmRlci5cbiAgICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBjb250ZW50IGlzIHJlbmRlcmVkLlxuICAgKi9cbiAgcmVuZGVyZXIocm93c0Zvck9uZVBhZ2U6IEFycmF5T3JEYXRhQXJyYXk8VD4pOiBQcm9taXNhYmxlPHZvaWQ+O1xuXG4gIC8qKlxuICAgKiBSb3dzIHRvIHBhZ2luYXRlLlxuICAgKi9cbiAgcm93czogQXJyYXlPckRhdGFBcnJheTxUPjtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgcmVuZGVyUGFnaW5hdGVkVGFibGV9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlbmRlclBhZ2luYXRlZFRhYmxlT3B0aW9uczxUPiB7XG4gIC8qKlxuICAgKiBBIHtAbGluayBEYXRhdmlld0lubGluZUFwaX0gaW5zdGFuY2UuXG4gICAqL1xuICBkdjogRGF0YXZpZXdJbmxpbmVBcGk7XG5cbiAgLyoqXG4gICAqIEEgaGVhZGVycyBvZiB0aGUgdGFibGUuXG4gICAqL1xuICBoZWFkZXJzOiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogT3B0aW9ucyBmb3IgaXRlbXMgcGVyIHBhZ2UuIERlZmF1bHRzIHRvIGBbMTAsIDIwLCA1MCwgMTAwXWAuXG4gICAqL1xuICBpdGVtc1BlclBhZ2VPcHRpb25zPzogbnVtYmVyW107XG5cbiAgLyoqXG4gICAqIFJvd3Mgb2YgdGhlIHRhYmxlIHRvIHBhZ2luYXRlLlxuICAgKi9cbiAgcm93czogQXJyYXlPckRhdGFBcnJheTxUPjtcbn1cblxuLyoqXG4gKiBSZW5kZXJzIHRoZSBjb250ZW50IHVzaW5nIHRoZSBwcm92aWRlZCByZW5kZXJlciBmdW5jdGlvbiBpbiBhIHRlbXBvcmFyeSBjb250YWluZXIsXG4gKiBhbmQgdGhlbiByZXR1cm5zIHRoZSBjb250YWluZXIuXG4gKlxuICogQHBhcmFtIGR2IC0gVGhlIERhdGF2aWV3SW5saW5lQXBpIGluc3RhbmNlLlxuICogQHBhcmFtIHJlbmRlcmVyIC0gVGhlIGZ1bmN0aW9uIHJlc3BvbnNpYmxlIGZvciByZW5kZXJpbmcgdGhlIGNvbnRlbnQuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSBIVE1MIHBhcmFncmFwaCBlbGVtZW50XG4gKiB0aGF0IHdhcyB1c2VkIGFzIHRoZSB0ZW1wb3JhcnkgY29udGFpbmVyLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0UmVuZGVyZWRDb250YWluZXIoZHY6IERhdGF2aWV3SW5saW5lQXBpLCByZW5kZXJlcjogKCkgPT4gUHJvbWlzYWJsZTx2b2lkPik6IFByb21pc2U8SFRNTFBhcmFncmFwaEVsZW1lbnQ+IHtcbiAgY29uc3Qgb2xkQ29udGFpbmVyID0gZHYuY29udGFpbmVyO1xuICBjb25zdCB0ZW1wQ29udGFpbmVyID0gZHYucGFyYWdyYXBoKCcnKTtcbiAgZHYuY29udGFpbmVyID0gdGVtcENvbnRhaW5lcjtcbiAgZHYuY29udGFpbmVyLmVtcHR5KCk7XG5cbiAgdHJ5IHtcbiAgICBhd2FpdCByZW5kZXJlcigpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgZHYucGFyYWdyYXBoKGBcdTI3NEMke2Vycm9yVG9TdHJpbmcoZSl9YCk7XG4gIH0gZmluYWxseSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlcXVpcmUtYXRvbWljLXVwZGF0ZXMgLS0gWWVzLCBpdCBpcyBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiwgYnV0IEkgZG9uJ3QgYW4gZWxlZ2FudCB3YXkgdG8gZml4IGl0LlxuICAgIGR2LmNvbnRhaW5lciA9IG9sZENvbnRhaW5lcjtcbiAgICB0ZW1wQ29udGFpbmVyLnJlbW92ZSgpO1xuICB9XG5cbiAgcmV0dXJuIHRlbXBDb250YWluZXI7XG59XG5cbi8qKlxuICogSW5zZXJ0cyBhIGNvZGUgYmxvY2sgaW50byB0aGUgc3BlY2lmaWVkIERhdGF2aWV3IGluc3RhbmNlIHVzaW5nIHRoZSBwcm92aWRlZCBsYW5ndWFnZSBhbmQgY29kZS5cbiAqXG4gKiBAcGFyYW0gZHYgLSBUaGUgRGF0YXZpZXdJbmxpbmVBcGkgaW5zdGFuY2UgdG8gaW5zZXJ0IHRoZSBjb2RlIGJsb2NrIGludG8uXG4gKiBAcGFyYW0gbGFuZ3VhZ2UgLSBUaGUgbGFuZ3VhZ2UgaWRlbnRpZmllciBmb3IgdGhlIGNvZGUgYmxvY2suXG4gKiBAcGFyYW0gY29kZSAtIFRoZSBjb2RlIGNvbnRlbnQgdG8gYmUgaW5zZXJ0ZWQgaW50byB0aGUgY29kZSBibG9jay5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluc2VydENvZGVCbG9jayhkdjogRGF0YXZpZXdJbmxpbmVBcGksIGxhbmd1YWdlOiBzdHJpbmcsIGNvZGU6IHN0cmluZyk6IHZvaWQge1xuICBjb25zdCBNSU5fRkVOQ0VfTEVOR1RIID0gMztcbiAgY29uc3QgZmVuY2VSZWdFeHAgPSBuZXcgUmVnRXhwKGBeXFxgeyR7U3RyaW5nKE1JTl9GRU5DRV9MRU5HVEgpfSx9YCwgJ2dtJyk7XG4gIGNvbnN0IGZlbmNlTWF0Y2hlcyA9IGNvZGUubWF0Y2hBbGwoZmVuY2VSZWdFeHApO1xuICBjb25zdCBmZW5jZUxlbmd0aHMgPSBBcnJheS5mcm9tKGZlbmNlTWF0Y2hlcykubWFwKChmZW5jZU1hdGNoKSA9PiBmZW5jZU1hdGNoWzBdLmxlbmd0aCk7XG4gIGNvbnN0IG1heEZlbmNlTGVuZ3RoID0gTWF0aC5tYXgoMCwgLi4uZmVuY2VMZW5ndGhzKTtcbiAgY29uc3QgcmVzdWx0RmVuY2VMZW5ndGggPSBNYXRoLm1heChNSU5fRkVOQ0VfTEVOR1RILCBtYXhGZW5jZUxlbmd0aCArIDEpO1xuICBjb25zdCByZXN1bHRGZW5jZSA9ICdgJy5yZXBlYXQocmVzdWx0RmVuY2VMZW5ndGgpO1xuXG4gIGR2LnBhcmFncmFwaChgJHtyZXN1bHRGZW5jZX0ke2xhbmd1YWdlfVxuJHtjb2RlfVxuJHtyZXN1bHRGZW5jZX1gKTtcbn1cblxuLyoqXG4gKiBSZW5kZXJzIGFuIGlmcmFtZSBpbiB0aGUgRGF0YXZpZXcgY29udGFpbmVyIHdpdGggdGhlIHNwZWNpZmllZCByZWxhdGl2ZSBwYXRoLCB3aWR0aCwgYW5kIGhlaWdodC5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciByZW5kZXJpbmcgdGhlIGlmcmFtZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlcklmcmFtZShvcHRpb25zOiBSZW5kZXJJZnJhbWVPcHRpb25zKTogdm9pZCB7XG4gIGNvbnN0IHtcbiAgICBkdixcbiAgICBoZWlnaHQgPSAnNjAwcHgnLFxuICAgIHJlbGF0aXZlUGF0aE9yRmlsZSxcbiAgICB3aWR0aCA9ICcxMDAlJ1xuICB9ID0gb3B0aW9ucztcbiAgZHYuZWwoJ2lmcmFtZScsICcnLCB7XG4gICAgYXR0cjoge1xuICAgICAgaGVpZ2h0LFxuICAgICAgc3JjOiByZWxhdGl2ZVBhdGhUb1Jlc291cmNlVXJsKGR2LmFwcCwgZ2V0UGF0aChkdi5hcHAsIHJlbGF0aXZlUGF0aE9yRmlsZSksIGR2LmN1cnJlbnQoKS5maWxlLnBhdGgpLFxuICAgICAgd2lkdGhcbiAgICB9XG4gIH0pO1xufVxuXG4vKipcbiAqIFJlbmRlcnMgYSBwYWdpbmF0ZWQgbGlzdCB1c2luZyB0aGUgcHJvdmlkZWQgRGF0YXZpZXdJbmxpbmVBcGkgaW5zdGFuY2UuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgaXRlbXMgaW4gdGhlIGxpc3QuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgcmVuZGVyaW5nIHRoZSBwYWdpbmF0ZWQgbGlzdC5cbiAqXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGxpc3QgaXMgcmVuZGVyZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZW5kZXJQYWdpbmF0ZWRMaXN0PFQ+KG9wdGlvbnM6IFJlbmRlclBhZ2luYXRlZExpc3RPcHRpb25zPFQ+KTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHtcbiAgICBkdixcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbWFnaWMtbnVtYmVycyAtLSBFeHRyYWN0aW5nIG1hZ2ljIG51bWJlciBhcyBhIGNvbnN0YW50IHdvdWxkIGJlIHJlcGV0aXRpdmUsIGFzIHRoZSB2YWx1ZSBpcyB1c2VkIG9ubHkgb25jZSBhbmQgaXRzIG5hbWUgd291bGQgYmUgdGhlIHNhbWUgYXMgdGhlIHByb3BlcnR5LlxuICAgIGl0ZW1zUGVyUGFnZU9wdGlvbnMgPSBbMTAsIDIwLCA1MCwgMTAwXSxcbiAgICByb3dzXG4gIH0gPSBvcHRpb25zO1xuICBhd2FpdCByZW5kZXJQYWdpbmF0ZWQoe1xuICAgIGR2LFxuICAgIGl0ZW1zUGVyUGFnZU9wdGlvbnMsXG4gICAgcmVuZGVyZXI6IGFzeW5jIChyb3dzRm9yT25lUGFnZTogQXJyYXlPckRhdGFBcnJheTxUPik6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgYXdhaXQgZHYubGlzdChyb3dzRm9yT25lUGFnZSk7XG4gICAgfSxcbiAgICByb3dzXG4gIH0pO1xufVxuXG4vKipcbiAqIFJlbmRlcnMgYSBwYWdpbmF0ZWQgdGFibGUgdXNpbmcgdGhlIHByb3ZpZGVkIERhdGF2aWV3SW5saW5lQXBpIGluc3RhbmNlLlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIGl0ZW1zIGluIHRoZSB0YWJsZSByb3dzLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHJlbmRlcmluZyB0aGUgcGFnaW5hdGVkIHRhYmxlLlxuICpcbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgdGFibGUgaXMgcmVuZGVyZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZW5kZXJQYWdpbmF0ZWRUYWJsZTxUIGV4dGVuZHMgdW5rbm93bltdPihvcHRpb25zOiBSZW5kZXJQYWdpbmF0ZWRUYWJsZU9wdGlvbnM8VD4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3Qge1xuICAgIGR2LFxuICAgIGhlYWRlcnMsXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW1hZ2ljLW51bWJlcnMgLS0gRXh0cmFjdGluZyBtYWdpYyBudW1iZXIgYXMgYSBjb25zdGFudCB3b3VsZCBiZSByZXBldGl0aXZlLCBhcyB0aGUgdmFsdWUgaXMgdXNlZCBvbmx5IG9uY2UgYW5kIGl0cyBuYW1lIHdvdWxkIGJlIHRoZSBzYW1lIGFzIHRoZSBwcm9wZXJ0eS5cbiAgICBpdGVtc1BlclBhZ2VPcHRpb25zID0gWzEwLCAyMCwgNTAsIDEwMF0sXG4gICAgcm93c1xuICB9ID0gb3B0aW9ucztcbiAgYXdhaXQgcmVuZGVyUGFnaW5hdGVkKHtcbiAgICBkdixcbiAgICBpdGVtc1BlclBhZ2VPcHRpb25zLFxuICAgIHJlbmRlcmVyOiBhc3luYyAocm93c0Zvck9uZVBhZ2U6IEFycmF5T3JEYXRhQXJyYXk8VD4pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgIGF3YWl0IGR2LnRhYmxlKGhlYWRlcnMsIHJvd3NGb3JPbmVQYWdlKTtcbiAgICB9LFxuICAgIHJvd3NcbiAgfSk7XG59XG5cbi8qKlxuICogSGVscGVyIGZ1bmN0aW9uIHRvIHJlbmRlciBwYWdpbmF0ZWQgY29udGVudCB1c2luZyB0aGUgc3BlY2lmaWVkIHJlbmRlcmVyLlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIGl0ZW1zIHRvIHBhZ2luYXRlLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHJlbmRlcmluZyB0aGUgcGFnaW5hdGVkIGNvbnRlbnQuXG4gKlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBjb250ZW50IGlzIHJlbmRlcmVkLlxuICovXG5hc3luYyBmdW5jdGlvbiByZW5kZXJQYWdpbmF0ZWQ8VD4ob3B0aW9uczogUmVuZGVyUGFnaW5hdGVkT3B0aW9uczxUPik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBTRUNPTkRfUEFHRV9OVU1CRVIgPSAyO1xuICBjb25zdCBNT1JFX1BBR0VfTlVNQkVSID0gMztcbiAgY29uc3Qge1xuICAgIGR2LFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1tYWdpYy1udW1iZXJzIC0tIEV4dHJhY3RpbmcgbWFnaWMgbnVtYmVyIGFzIGEgY29uc3RhbnQgd291bGQgYmUgcmVwZXRpdGl2ZSwgYXMgdGhlIHZhbHVlIGlzIHVzZWQgb25seSBvbmNlIGFuZCBpdHMgbmFtZSB3b3VsZCBiZSB0aGUgc2FtZSBhcyB0aGUgcHJvcGVydHkuXG4gICAgaXRlbXNQZXJQYWdlT3B0aW9ucyA9IFsxMCwgMjAsIDUwLCAxMDBdLFxuICAgIHJvd3NcbiAgfSA9IG9wdGlvbnM7XG4gIGlmIChyb3dzLmxlbmd0aCA9PT0gMCkge1xuICAgIGR2LnBhcmFncmFwaCgnTm8gaXRlbXMgZm91bmQnKTtcbiAgICByZXR1cm47XG4gIH1cbiAgY29uc3QgY29udGFpbmVyID0gZHYuY29udGFpbmVyO1xuICBsZXQgaXRlbXNQZXJQYWdlID0gaXRlbXNQZXJQYWdlT3B0aW9uc1swXSA/PyB0aHJvd0V4cHJlc3Npb24obmV3IEVycm9yKCdJdGVtcyBwZXIgcGFnZSBvcHRpb25zIGFyZSBlbXB0eScpKTtcbiAgbGV0IHRvdGFsUGFnZXMgPSBNYXRoLmNlaWwocm93cy5sZW5ndGggLyBpdGVtc1BlclBhZ2UpO1xuICBhd2FpdCByZW5kZXJQYWdlKDEpO1xuXG4gIGZ1bmN0aW9uIGNyZWF0ZVBhZ2luYXRpb25Db250cm9scyhwYWdlTnVtYmVyOiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBwYWdpbmF0aW9uRGl2ID0gY29udGFpbmVyLmNyZWF0ZURpdih7IGNsczogJ3BhZ2luYXRpb24nIH0pO1xuICAgIGNvbnN0IHBhZ2luYXRpb25Sb3cxRGl2ID0gcGFnaW5hdGlvbkRpdi5jcmVhdGVEaXYoKTtcblxuICAgIGNyZWF0ZVBhZ2VMaW5rKCdGaXJzdCcsIDEsIHBhZ2VOdW1iZXIgPT09IDEpO1xuICAgIGNyZWF0ZVBhZ2VMaW5rKCdQcmV2JywgcGFnZU51bWJlciAtIDEsIHBhZ2VOdW1iZXIgPT09IDEpO1xuXG4gICAgaWYgKHBhZ2VOdW1iZXIgPiBNT1JFX1BBR0VfTlVNQkVSKSB7XG4gICAgICBwYWdpbmF0aW9uUm93MURpdi5jcmVhdGVTcGFuKHsgdGV4dDogJy4uLicgfSk7XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaSA9IE1hdGgubWF4KDEsIHBhZ2VOdW1iZXIgLSBTRUNPTkRfUEFHRV9OVU1CRVIpOyBpIDw9IE1hdGgubWluKHRvdGFsUGFnZXMsIHBhZ2VOdW1iZXIgKyBTRUNPTkRfUEFHRV9OVU1CRVIpOyBpKyspIHtcbiAgICAgIGNvbnN0IHBhZ2VMaW5rID0gY3JlYXRlUGFnZUxpbmsoU3RyaW5nKGkpLCBpLCBpID09PSBwYWdlTnVtYmVyKTtcbiAgICAgIGlmIChpID09PSBwYWdlTnVtYmVyKSB7XG4gICAgICAgIHBhZ2VMaW5rLmFkZENsYXNzKCdjdXJyZW50Jyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHBhZ2VOdW1iZXIgPCB0b3RhbFBhZ2VzIC0gU0VDT05EX1BBR0VfTlVNQkVSKSB7XG4gICAgICBwYWdpbmF0aW9uUm93MURpdi5jcmVhdGVTcGFuKHsgdGV4dDogJy4uLicgfSk7XG4gICAgfVxuXG4gICAgY3JlYXRlUGFnZUxpbmsoJ05leHQnLCBwYWdlTnVtYmVyICsgMSwgcGFnZU51bWJlciA9PT0gdG90YWxQYWdlcyk7XG4gICAgY3JlYXRlUGFnZUxpbmsoJ0xhc3QnLCB0b3RhbFBhZ2VzLCBwYWdlTnVtYmVyID09PSB0b3RhbFBhZ2VzKTtcblxuICAgIGNvbnN0IHBhZ2luYXRpb25Sb3cyRGl2ID0gcGFnaW5hdGlvbkRpdi5jcmVhdGVEaXYoKTtcblxuICAgIHBhZ2luYXRpb25Sb3cyRGl2LmNyZWF0ZVNwYW4oeyB0ZXh0OiBgICR7dCgoJCkgPT4gJC5vYnNpZGlhbkRldlV0aWxzLmRhdGF2aWV3Lml0ZW1zUGVyUGFnZSl9IGAgfSk7XG5cbiAgICBjb25zdCBpdGVtc1BlclBhZ2VTZWxlY3QgPSBwYWdpbmF0aW9uUm93MkRpdi5jcmVhdGVFbCgnc2VsZWN0Jyk7XG4gICAgaXRlbXNQZXJQYWdlT3B0aW9ucy5mb3JFYWNoKChvcHRpb246IG51bWJlcik6IHZvaWQgPT4ge1xuICAgICAgaXRlbXNQZXJQYWdlU2VsZWN0LmNyZWF0ZUVsKCdvcHRpb24nLCB7IHRleHQ6IFN0cmluZyhvcHRpb24pLCB2YWx1ZTogU3RyaW5nKG9wdGlvbikgfSk7XG4gICAgfSk7XG4gICAgaXRlbXNQZXJQYWdlU2VsZWN0LnZhbHVlID0gU3RyaW5nKGl0ZW1zUGVyUGFnZSk7XG4gICAgaXRlbXNQZXJQYWdlU2VsZWN0LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAnY2hhbmdlJyxcbiAgICAgIGNvbnZlcnRBc3luY1RvU3luYyhhc3luYyAoKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICAgIGl0ZW1zUGVyUGFnZSA9IHBhcnNlSW50KGl0ZW1zUGVyUGFnZVNlbGVjdC52YWx1ZSwgMTApO1xuICAgICAgICB0b3RhbFBhZ2VzID0gTWF0aC5jZWlsKHJvd3MubGVuZ3RoIC8gaXRlbXNQZXJQYWdlKTtcbiAgICAgICAgYXdhaXQgcmVuZGVyUGFnZSgxKTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHBhZ2luYXRpb25Sb3cyRGl2LmNyZWF0ZVNwYW4oeyB0ZXh0OiBgICR7dCgoJCkgPT4gJC5vYnNpZGlhbkRldlV0aWxzLmRhdGF2aWV3Lmp1bXBUb1BhZ2UpfSBgIH0pO1xuXG4gICAgY29uc3QganVtcFRvUGFnZUlucHV0ID0gcGFnaW5hdGlvblJvdzJEaXYuY3JlYXRlRWwoJ2lucHV0JywgeyBhdHRyOiB7IG1heDogdG90YWxQYWdlcywgbWluOiAxIH0sIHR5cGU6ICdudW1iZXInIH0pO1xuICAgIGp1bXBUb1BhZ2VJbnB1dC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ2tleWRvd24nLFxuICAgICAgY29udmVydEFzeW5jVG9TeW5jKGFzeW5jIChldmVudDogS2V5Ym9hcmRFdmVudCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgICAgY29uc3QgcGFnZSA9IHBhcnNlSW50KGp1bXBUb1BhZ2VJbnB1dC52YWx1ZSwgMTApO1xuICAgICAgICAgIGlmIChwYWdlID49IDEgJiYgcGFnZSA8PSB0b3RhbFBhZ2VzKSB7XG4gICAgICAgICAgICBhd2FpdCByZW5kZXJQYWdlKHBhZ2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuXG4gICAgcGFnaW5hdGlvblJvdzJEaXYuY3JlYXRlU3Bhbih7IHRleHQ6IGAgIFBhZ2UgJHtTdHJpbmcocGFnZU51bWJlcil9IG9mICR7U3RyaW5nKHRvdGFsUGFnZXMpfSwgVG90YWwgaXRlbXM6ICR7U3RyaW5nKHJvd3MubGVuZ3RoKX1gIH0pO1xuXG4gICAgZnVuY3Rpb24gY3JlYXRlUGFnZUxpbmsodGV4dDogc3RyaW5nLCBjdXJyZW50UGFnZU51bWJlcjogbnVtYmVyLCBkaXNhYmxlZCA9IGZhbHNlKTogSFRNTEFuY2hvckVsZW1lbnQge1xuICAgICAgY29uc3QgbGluayA9IHBhZ2luYXRpb25Sb3cxRGl2LmNyZWF0ZUVsKCdhJywgeyBjbHM6ICdwYWdlLWxpbmsnLCBocmVmOiBgIyR7U3RyaW5nKGN1cnJlbnRQYWdlTnVtYmVyKX1gLCB0ZXh0IH0pO1xuICAgICAgaWYgKGRpc2FibGVkKSB7XG4gICAgICAgIGxpbmsuYWRkQ2xhc3MoJ2Rpc2FibGVkJyk7XG4gICAgICAgIGxpbmsub25jbGljayA9IChldmVudDogTW91c2VFdmVudCk6IHZvaWQgPT4ge1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsaW5rLmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgICAgJ2NsaWNrJyxcbiAgICAgICAgICBjb252ZXJ0QXN5bmNUb1N5bmMoYXN5bmMgKGV2ZW50OiBNb3VzZUV2ZW50KTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgYXdhaXQgcmVuZGVyUGFnZShjdXJyZW50UGFnZU51bWJlcik7XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBsaW5rO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIHJlbmRlclBhZ2UocGFnZU51bWJlcjogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29udGFpbmVyLmVtcHR5KCk7XG4gICAgY29udGFpbmVyLmNyZWF0ZUVsKCdzdHlsZScsIHsgdGV4dDogcGFnaW5hdGlvbkNzcyB9KTtcblxuICAgIGNvbnN0IHN0YXJ0SW5kZXggPSAocGFnZU51bWJlciAtIDEpICogaXRlbXNQZXJQYWdlO1xuICAgIGNvbnN0IGVuZEluZGV4ID0gc3RhcnRJbmRleCArIGl0ZW1zUGVyUGFnZTtcbiAgICBjb25zdCByb3dzRm9yQ3VycmVudFBhZ2UgPSByb3dzLnNsaWNlKHN0YXJ0SW5kZXgsIGVuZEluZGV4KTtcblxuICAgIGNvbnN0IG9sZENvbnRhaW5lciA9IGR2LmNvbnRhaW5lcjtcblxuICAgIGR2LmNvbnRhaW5lciA9IGNvbnRhaW5lcjtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgb3B0aW9ucy5yZW5kZXJlcihyb3dzRm9yQ3VycmVudFBhZ2UpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGR2LnBhcmFncmFwaChgXHUyNzRDJHtlcnJvclRvU3RyaW5nKGUpfWApO1xuICAgIH0gZmluYWxseSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVxdWlyZS1hdG9taWMtdXBkYXRlcyAtLSBZZXMsIGl0IGlzIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uLCBidXQgSSBkb24ndCBhbiBlbGVnYW50IHdheSB0byBmaXggaXQuXG4gICAgICBkdi5jb250YWluZXIgPSBvbGRDb250YWluZXI7XG4gICAgfVxuXG4gICAgY3JlYXRlUGFnaW5hdGlvbkNvbnRyb2xzKHBhZ2VOdW1iZXIpO1xuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFpQkEsbUJBQW1DO0FBQ25DLG1CQUdPO0FBQ1Asd0JBR087QUFDUCxrQkFBa0I7QUFDbEIseUJBQTBDO0FBeUYxQyxlQUFzQix1QkFBdUIsSUFBc0M7QUFDakYsUUFBTSxhQUFhLE1BQU0sV0FBTywyQkFBUSxHQUFHLEtBQUssR0FBRyxRQUFRLEVBQUUsS0FBSyxJQUFJLENBQUM7QUFDekU7QUFFQSxNQUFNLGdCQUFnQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBMkl0QixlQUFzQixxQkFBcUIsSUFBdUIsVUFBaUU7QUFDakksUUFBTSxl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
353
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL0RhdGF2aWV3LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIHV0aWxpdHkgZnVuY3Rpb25zIGZvciB3b3JraW5nIHdpdGggRGF0YXZpZXcgaW4gT2JzaWRpYW4uXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBQcm9taXNhYmxlIH0gZnJvbSAndHlwZS1mZXN0JztcblxuaW1wb3J0IHR5cGUgeyBEYXRhdmlld0lubGluZUFwaSBhcyBEYXRhdmlld0lubGluZUFwaU9yaWdpbmFsIH0gZnJvbSAnLi9AdHlwZXMvRGF0YXZpZXcvYXBpL2lubGluZS1hcGkuZC50cyc7XG5pbXBvcnQgdHlwZSB7XG4gIERhdGFBcnJheSxcbiAgRGF0YXZpZXdBcGksXG4gIFNNYXJrZG93blBhZ2Vcbn0gZnJvbSAnLi9AdHlwZXMvRGF0YXZpZXcvaW5kZXguZC50cyc7XG5pbXBvcnQgdHlwZSB7IFBhdGhPckZpbGUgfSBmcm9tICcuL0ZpbGVTeXN0ZW0udHMnO1xuaW1wb3J0IHR5cGUgeyBDb21iaW5lZEZyb250bWF0dGVyIH0gZnJvbSAnLi9Gcm9udG1hdHRlci50cyc7XG5cbmltcG9ydCB7IGNvbnZlcnRBc3luY1RvU3luYyB9IGZyb20gJy4uL0FzeW5jLnRzJztcbmltcG9ydCB7XG4gIGVycm9yVG9TdHJpbmcsXG4gIHRocm93RXhwcmVzc2lvblxufSBmcm9tICcuLi9FcnJvci50cyc7XG5pbXBvcnQge1xuICBnZXRGaWxlLFxuICBnZXRQYXRoXG59IGZyb20gJy4vRmlsZVN5c3RlbS50cyc7XG5pbXBvcnQgeyB0IH0gZnJvbSAnLi9pMThuL2kxOG4udHMnO1xuaW1wb3J0IHsgcmVsYXRpdmVQYXRoVG9SZXNvdXJjZVVybCB9IGZyb20gJy4vUmVzb3VyY2VVcmwudHMnO1xuXG4vKipcbiAqIEV4cG9ydCBEYXRlVGltZSBhbmQgTGluayB0eXBlcyBmcm9tIHRoZSBEYXRhdmlldyBBUEkuXG4gKi9cbmV4cG9ydCB0eXBlIHtcbiAgRGF0ZVRpbWUsXG4gIExpbmtcbn0gZnJvbSAnLi9AdHlwZXMvRGF0YXZpZXcvaW5kZXguZC50cyc7XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgLyoqXG4gICAqIEEge0BsaW5rIERhdGF2aWV3QXBpfSBvYmplY3QgcmVwcmVzZW50cyB0aGUgQVBJIGZvciBpbnRlcmFjdGluZyB3aXRoIERhdGF2aWV3IGluIE9ic2lkaWFuLlxuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHZhcnMtb24tdG9wIC0tIEl0IGlzIGEgYHZhcmAgaW4gbW9kdWxlIGRlY2xhcmF0aW9uLiBFU0xpbnQgbWlzdGFrZW5seSBjb25mdXNlcyBpdCB3aXRoIGB2YXJgIGFzIGEgdmFyaWFibGUgZGVjbGFyYXRpb24uXG4gIHZhciBEYXRhdmlld0FQSTogRGF0YXZpZXdBcGkgfCB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogQSBjb21iaW5lZCBwYWdlIHR5cGUsIHdoaWNoIGluY2x1ZGVzIHRoZSBmcm9udCBtYXR0ZXIgYW5kIHRoZSBTTWFya2Rvd25QYWdlLlxuICovXG5leHBvcnQgdHlwZSBDb21iaW5lZFBhZ2U8Q3VzdG9tRnJvbnRtYXR0ZXIgPSB1bmtub3duPiA9IENvbWJpbmVkRnJvbnRtYXR0ZXI8Q3VzdG9tRnJvbnRtYXR0ZXI+ICYgU01hcmtkb3duUGFnZTtcblxuLyoqXG4gKiBFeHRlbmRlZCBpbnRlcmZhY2UgZm9yIHRoZSBEYXRhdmlldyBJbmxpbmUgQVBJLCBwcm92aWRpbmcgYWRkaXRpb25hbCBtZXRob2RzIGZvciBjdXN0b20gcGFnZSB0eXBlcyBhbmQgYXJyYXkgaGFuZGxpbmcuXG4gKlxuICogQHR5cGVQYXJhbSBDdXN0b21QYWdlIC0gVGhlIHR5cGUgb2YgdGhlIGN1c3RvbSBwYWdlLiBEZWZhdWx0cyB0byBgU01hcmtkb3duUGFnZWAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YXZpZXdJbmxpbmVBcGkgZXh0ZW5kcyBEYXRhdmlld0lubGluZUFwaU9yaWdpbmFsIHtcbiAgLyoqXG4gICAqIFdyYXBzIGFuIGFycmF5IG9mIGl0ZW1zIGludG8gYSB7QGxpbmsgRGF0YUFycmF5fSBvYmplY3QuXG4gICAqXG4gICAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIHRoZSBpdGVtcyBpbiB0aGUgYXJyYXkuXG4gICAqIEBwYXJhbSBhcnIgLSBUaGUgYXJyYXkgb2YgaXRlbXMgdG8gd3JhcC5cbiAgICogQHJldHVybnMgQSB7QGxpbmsgRGF0YUFycmF5fSBjb250YWluaW5nIHRoZSBpdGVtcy5cbiAgICovXG4gIGFycmF5PFQ+KGFycjogVFtdKTogRGF0YUFycmF5PFQ+O1xuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgdGhlIGN1cnJlbnQgcGFnZSwgd2l0aCBhbiBvcHRpb25hbCBjdXN0b20gcGFnZSB0eXBlLlxuICAgKlxuICAgKiBAdHlwZVBhcmFtIEN1c3RvbVBhZ2UgLSBUaGUgdHlwZSBvZiB0aGUgY3VzdG9tIHBhZ2UuIERlZmF1bHRzIHRvIGBTTWFya2Rvd25QYWdlYC5cbiAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgcGFnZS5cbiAgICovXG4gIGN1cnJlbnQ8Q3VzdG9tRnJvbnRtYXR0ZXIgPSB1bmtub3duPigpOiBDb21iaW5lZFBhZ2U8Q3VzdG9tRnJvbnRtYXR0ZXI+O1xuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgcGFnZXMgYmFzZWQgb24gYW4gb3B0aW9uYWwgcXVlcnksIHdpdGggYW4gb3B0aW9uYWwgY3VzdG9tIHBhZ2UgdHlwZS5cbiAgICpcbiAgICogQHR5cGVQYXJhbSBDdXN0b21QYWdlIC0gVGhlIHR5cGUgb2YgdGhlIGN1c3RvbSBwYWdlLiBEZWZhdWx0cyB0byBgU01hcmtkb3duUGFnZWAuXG4gICAqIEBwYXJhbSBxdWVyeSAtIEFuIG9wdGlvbmFsIHN0cmluZyBxdWVyeSB0byBmaWx0ZXIgdGhlIHBhZ2VzLlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBEYXRhQXJyYXl9IG9mIHBhZ2VzIG1hdGNoaW5nIHRoZSBxdWVyeS5cbiAgICovXG4gIHBhZ2VzPEN1c3RvbUZyb250bWF0dGVyID0gdW5rbm93bj4ocXVlcnk/OiBzdHJpbmcpOiBEYXRhQXJyYXk8Q29tYmluZWRQYWdlPEN1c3RvbUZyb250bWF0dGVyPj47XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBwYXJhZ3JhcGggSFRNTCBlbGVtZW50IHdpdGggdGhlIHByb3ZpZGVkIHRleHQgYW5kIG9wdGlvbmFsIERPTSBlbGVtZW50IG9wdGlvbnMuXG4gICAqXG4gICAqIEBwYXJhbSB0ZXh0IC0gVGhlIGNvbnRlbnQgb2YgdGhlIHBhcmFncmFwaC5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBPcHRpb25hbCBET00gZWxlbWVudCBvcHRpb25zLCBpbmNsdWRpbmcgYW4gb3B0aW9uYWwgY29udGFpbmVyLlxuICAgKiBAcmV0dXJucyBUaGUgY3JlYXRlZCBIVE1MIHBhcmFncmFwaCBlbGVtZW50LlxuICAgKi9cbiAgcGFyYWdyYXBoKFxuICAgIHRleHQ6IHVua25vd24sXG4gICAgb3B0aW9ucz86IERvbUVsZW1lbnRJbmZvV2l0aENvbnRhaW5lclxuICApOiBIVE1MUGFyYWdyYXBoRWxlbWVudDtcbn1cblxuLyoqXG4gKiBEb21FbGVtZW50SW5mbyB3aXRoIGFuIG9wdGlvbmFsIGNvbnRhaW5lci5cbiAqL1xuZXhwb3J0IHR5cGUgRG9tRWxlbWVudEluZm9XaXRoQ29udGFpbmVyID0geyBjb250YWluZXI/OiBIVE1MRWxlbWVudCB9ICYgRG9tRWxlbWVudEluZm87XG5cbi8qKlxuICogQSBjb21iaW5lZCBmaWxlIHR5cGUsIHdoaWNoIGluY2x1ZGVzIHRoZSBmcm9udCBtYXR0ZXIgYW5kIHRoZSBTTWFya2Rvd25GaWxlLlxuICovXG5leHBvcnQgdHlwZSBQYWdlRmlsZSA9IFNNYXJrZG93blBhZ2VbJ2ZpbGUnXTtcblxuLyoqXG4gKiBMaXN0IG9mIHBhZ2UgZmlsZXMuXG4gKi9cbmV4cG9ydCB0eXBlIFBhZ2VGaWxlcyA9IEFycmF5T3JEYXRhQXJyYXk8UGFnZUZpbGU+O1xuXG4vKipcbiAqIFJlbG9hZHMgdGhlIGN1cnJlbnQgZmlsZSBjYWNoZSB1c2luZyB0aGUgRGF0YXZpZXcgQVBJLlxuICpcbiAqIEBwYXJhbSBkdiAtIFRoZSBEYXRhdmlld0lubGluZUFwaSBpbnN0YW5jZS5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgY2FjaGUgaXMgcmVsb2FkZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWxvYWRDdXJyZW50RmlsZUNhY2hlKGR2OiBEYXRhdmlld0lubGluZUFwaSk6IFByb21pc2U8dm9pZD4ge1xuICBhd2FpdCBEYXRhdmlld0FQST8uaW5kZXgucmVsb2FkKGdldEZpbGUoZHYuYXBwLCBkdi5jdXJyZW50KCkuZmlsZS5wYXRoKSk7XG59XG5cbmNvbnN0IHBhZ2luYXRpb25Dc3MgPSBgXG4ucGFnaW5hdGlvbiAucGFnZS1saW5rLmRpc2FibGVkIHtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIGNvbG9yOiBncmF5O1xufVxuXG4ucGFnaW5hdGlvbiAucGFnZS1saW5rIHtcbiAgbWFyZ2luOiAwIDVweDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGNvbG9yOiBibHVlO1xufVxuXG4ucGFnaW5hdGlvbiAucGFnZS1saW5rOmhvdmVyOm5vdCguZGlzYWJsZWQpIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG59XG4ucGFnaW5hdGlvbiAucGFnZS1saW5rLmN1cnJlbnQge1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG59XG5cbi5wYWdpbmF0aW9uIHNlbGVjdCxcbi5wYWdpbmF0aW9uIGlucHV0IHtcbiAgbWFyZ2luOiAwIDVweDtcbn1cbmA7XG5cbi8qKlxuICogQXJyYXkgb3IgRGF0YUFycmF5IHR5cGUuXG4gKi9cbmV4cG9ydCB0eXBlIEFycmF5T3JEYXRhQXJyYXk8VD4gPSBEYXRhQXJyYXk8VD4gfCBUW107XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIHJlbmRlcklmcmFtZX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVuZGVySWZyYW1lT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBBIHtAbGluayBEYXRhdmlld0lubGluZUFwaX0gaW5zdGFuY2UuXG4gICAqL1xuICBkdjogRGF0YXZpZXdJbmxpbmVBcGk7XG5cbiAgLyoqXG4gICAqIEEgaGVpZ2h0IG9mIHRoZSBpZnJhbWUuXG4gICAqL1xuICBoZWlnaHQ6IHN0cmluZztcblxuICAvKipcbiAgICogQSByZWxhdGl2ZSBwYXRoIHRvIHRoZSByZXNvdXJjZSB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIGlmcmFtZS5cbiAgICovXG4gIHJlbGF0aXZlUGF0aE9yRmlsZTogUGF0aE9yRmlsZTtcblxuICAvKipcbiAgICogQSB3aWR0aCBvZiB0aGUgaWZyYW1lLlxuICAgKi9cbiAgd2lkdGg6IHN0cmluZztcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgcmVuZGVyUGFnaW5hdGVkTGlzdH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVuZGVyUGFnaW5hdGVkTGlzdE9wdGlvbnM8VD4ge1xuICAvKipcbiAgICogQSB7QGxpbmsgRGF0YXZpZXdJbmxpbmVBcGl9IGluc3RhbmNlLlxuICAgKi9cbiAgZHY6IERhdGF2aWV3SW5saW5lQXBpO1xuXG4gIC8qKlxuICAgKiBPcHRpb25zIGZvciBpdGVtcyBwZXIgcGFnZS4gRGVmYXVsdHMgdG8gYFsxMCwgMjAsIDUwLCAxMDBdYC5cbiAgICovXG4gIGl0ZW1zUGVyUGFnZU9wdGlvbnM/OiBudW1iZXJbXTtcblxuICAvKipcbiAgICogQSBsaXN0IG9mIGl0ZW1zIHRvIHBhZ2luYXRlLlxuICAgKi9cbiAgcm93czogQXJyYXlPckRhdGFBcnJheTxUPjtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgcmVuZGVyUGFnaW5hdGVkfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZW5kZXJQYWdpbmF0ZWRPcHRpb25zPFQ+IHtcbiAgLyoqXG4gICAqIEEge0BsaW5rIERhdGF2aWV3SW5saW5lQXBpfSBpbnN0YW5jZS5cbiAgICovXG4gIGR2OiBEYXRhdmlld0lubGluZUFwaTtcblxuICAvKipcbiAgICogT3B0aW9ucyBmb3IgaXRlbXMgcGVyIHBhZ2UuXG4gICAqL1xuICBpdGVtc1BlclBhZ2VPcHRpb25zOiBudW1iZXJbXTtcblxuICAvKipcbiAgICogRGlzcGxheSB0aGUgcGFnaW5hdGVkIGNvbnRlbnQuXG4gICAqXG4gICAqIEBwYXJhbSByb3dzRm9yT25lUGFnZSAtIFRoZSByb3dzIHRvIHJlbmRlci5cbiAgICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBjb250ZW50IGlzIHJlbmRlcmVkLlxuICAgKi9cbiAgcmVuZGVyZXIocm93c0Zvck9uZVBhZ2U6IEFycmF5T3JEYXRhQXJyYXk8VD4pOiBQcm9taXNhYmxlPHZvaWQ+O1xuXG4gIC8qKlxuICAgKiBSb3dzIHRvIHBhZ2luYXRlLlxuICAgKi9cbiAgcm93czogQXJyYXlPckRhdGFBcnJheTxUPjtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgcmVuZGVyUGFnaW5hdGVkVGFibGV9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlbmRlclBhZ2luYXRlZFRhYmxlT3B0aW9uczxUPiB7XG4gIC8qKlxuICAgKiBBIHtAbGluayBEYXRhdmlld0lubGluZUFwaX0gaW5zdGFuY2UuXG4gICAqL1xuICBkdjogRGF0YXZpZXdJbmxpbmVBcGk7XG5cbiAgLyoqXG4gICAqIEEgaGVhZGVycyBvZiB0aGUgdGFibGUuXG4gICAqL1xuICBoZWFkZXJzOiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogT3B0aW9ucyBmb3IgaXRlbXMgcGVyIHBhZ2UuIERlZmF1bHRzIHRvIGBbMTAsIDIwLCA1MCwgMTAwXWAuXG4gICAqL1xuICBpdGVtc1BlclBhZ2VPcHRpb25zPzogbnVtYmVyW107XG5cbiAgLyoqXG4gICAqIFJvd3Mgb2YgdGhlIHRhYmxlIHRvIHBhZ2luYXRlLlxuICAgKi9cbiAgcm93czogQXJyYXlPckRhdGFBcnJheTxUPjtcbn1cblxuLyoqXG4gKiBSZW5kZXJzIHRoZSBjb250ZW50IHVzaW5nIHRoZSBwcm92aWRlZCByZW5kZXJlciBmdW5jdGlvbiBpbiBhIHRlbXBvcmFyeSBjb250YWluZXIsXG4gKiBhbmQgdGhlbiByZXR1cm5zIHRoZSBjb250YWluZXIuXG4gKlxuICogQHBhcmFtIGR2IC0gVGhlIERhdGF2aWV3SW5saW5lQXBpIGluc3RhbmNlLlxuICogQHBhcmFtIHJlbmRlcmVyIC0gVGhlIGZ1bmN0aW9uIHJlc3BvbnNpYmxlIGZvciByZW5kZXJpbmcgdGhlIGNvbnRlbnQuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSBIVE1MIHBhcmFncmFwaCBlbGVtZW50XG4gKiB0aGF0IHdhcyB1c2VkIGFzIHRoZSB0ZW1wb3JhcnkgY29udGFpbmVyLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0UmVuZGVyZWRDb250YWluZXIoZHY6IERhdGF2aWV3SW5saW5lQXBpLCByZW5kZXJlcjogKCkgPT4gUHJvbWlzYWJsZTx2b2lkPik6IFByb21pc2U8SFRNTFBhcmFncmFwaEVsZW1lbnQ+IHtcbiAgY29uc3Qgb2xkQ29udGFpbmVyID0gZHYuY29udGFpbmVyO1xuICBjb25zdCB0ZW1wQ29udGFpbmVyID0gZHYucGFyYWdyYXBoKCcnKTtcbiAgZHYuY29udGFpbmVyID0gdGVtcENvbnRhaW5lcjtcbiAgZHYuY29udGFpbmVyLmVtcHR5KCk7XG5cbiAgdHJ5IHtcbiAgICBhd2FpdCByZW5kZXJlcigpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgZHYucGFyYWdyYXBoKGBcdTI3NEMke2Vycm9yVG9TdHJpbmcoZSl9YCk7XG4gIH0gZmluYWxseSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlcXVpcmUtYXRvbWljLXVwZGF0ZXMgLS0gWWVzLCBpdCBpcyBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiwgYnV0IEkgZG9uJ3QgYW4gZWxlZ2FudCB3YXkgdG8gZml4IGl0LlxuICAgIGR2LmNvbnRhaW5lciA9IG9sZENvbnRhaW5lcjtcbiAgICB0ZW1wQ29udGFpbmVyLnJlbW92ZSgpO1xuICB9XG5cbiAgcmV0dXJuIHRlbXBDb250YWluZXI7XG59XG5cbi8qKlxuICogSW5zZXJ0cyBhIGNvZGUgYmxvY2sgaW50byB0aGUgc3BlY2lmaWVkIERhdGF2aWV3IGluc3RhbmNlIHVzaW5nIHRoZSBwcm92aWRlZCBsYW5ndWFnZSBhbmQgY29kZS5cbiAqXG4gKiBAcGFyYW0gZHYgLSBUaGUgRGF0YXZpZXdJbmxpbmVBcGkgaW5zdGFuY2UgdG8gaW5zZXJ0IHRoZSBjb2RlIGJsb2NrIGludG8uXG4gKiBAcGFyYW0gbGFuZ3VhZ2UgLSBUaGUgbGFuZ3VhZ2UgaWRlbnRpZmllciBmb3IgdGhlIGNvZGUgYmxvY2suXG4gKiBAcGFyYW0gY29kZSAtIFRoZSBjb2RlIGNvbnRlbnQgdG8gYmUgaW5zZXJ0ZWQgaW50byB0aGUgY29kZSBibG9jay5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluc2VydENvZGVCbG9jayhkdjogRGF0YXZpZXdJbmxpbmVBcGksIGxhbmd1YWdlOiBzdHJpbmcsIGNvZGU6IHN0cmluZyk6IHZvaWQge1xuICBjb25zdCBNSU5fRkVOQ0VfTEVOR1RIID0gMztcbiAgY29uc3QgZmVuY2VSZWdFeHAgPSBuZXcgUmVnRXhwKGBeXFxgeyR7U3RyaW5nKE1JTl9GRU5DRV9MRU5HVEgpfSx9YCwgJ2dtJyk7XG4gIGNvbnN0IGZlbmNlTWF0Y2hlcyA9IGNvZGUubWF0Y2hBbGwoZmVuY2VSZWdFeHApO1xuICBjb25zdCBmZW5jZUxlbmd0aHMgPSBBcnJheS5mcm9tKGZlbmNlTWF0Y2hlcykubWFwKChmZW5jZU1hdGNoKSA9PiBmZW5jZU1hdGNoWzBdLmxlbmd0aCk7XG4gIGNvbnN0IG1heEZlbmNlTGVuZ3RoID0gTWF0aC5tYXgoMCwgLi4uZmVuY2VMZW5ndGhzKTtcbiAgY29uc3QgcmVzdWx0RmVuY2VMZW5ndGggPSBNYXRoLm1heChNSU5fRkVOQ0VfTEVOR1RILCBtYXhGZW5jZUxlbmd0aCArIDEpO1xuICBjb25zdCByZXN1bHRGZW5jZSA9ICdgJy5yZXBlYXQocmVzdWx0RmVuY2VMZW5ndGgpO1xuXG4gIGR2LnBhcmFncmFwaChgJHtyZXN1bHRGZW5jZX0ke2xhbmd1YWdlfVxuJHtjb2RlfVxuJHtyZXN1bHRGZW5jZX1gKTtcbn1cblxuLyoqXG4gKiBSZW5kZXJzIGFuIGlmcmFtZSBpbiB0aGUgRGF0YXZpZXcgY29udGFpbmVyIHdpdGggdGhlIHNwZWNpZmllZCByZWxhdGl2ZSBwYXRoLCB3aWR0aCwgYW5kIGhlaWdodC5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciByZW5kZXJpbmcgdGhlIGlmcmFtZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlcklmcmFtZShvcHRpb25zOiBSZW5kZXJJZnJhbWVPcHRpb25zKTogdm9pZCB7XG4gIGNvbnN0IHtcbiAgICBkdixcbiAgICBoZWlnaHQgPSAnNjAwcHgnLFxuICAgIHJlbGF0aXZlUGF0aE9yRmlsZSxcbiAgICB3aWR0aCA9ICcxMDAlJ1xuICB9ID0gb3B0aW9ucztcbiAgZHYuZWwoJ2lmcmFtZScsICcnLCB7XG4gICAgYXR0cjoge1xuICAgICAgaGVpZ2h0LFxuICAgICAgc3JjOiByZWxhdGl2ZVBhdGhUb1Jlc291cmNlVXJsKGR2LmFwcCwgZ2V0UGF0aChkdi5hcHAsIHJlbGF0aXZlUGF0aE9yRmlsZSksIGR2LmN1cnJlbnQoKS5maWxlLnBhdGgpLFxuICAgICAgd2lkdGhcbiAgICB9XG4gIH0pO1xufVxuXG4vKipcbiAqIFJlbmRlcnMgYSBwYWdpbmF0ZWQgbGlzdCB1c2luZyB0aGUgcHJvdmlkZWQgRGF0YXZpZXdJbmxpbmVBcGkgaW5zdGFuY2UuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgaXRlbXMgaW4gdGhlIGxpc3QuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgcmVuZGVyaW5nIHRoZSBwYWdpbmF0ZWQgbGlzdC5cbiAqXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGxpc3QgaXMgcmVuZGVyZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZW5kZXJQYWdpbmF0ZWRMaXN0PFQ+KG9wdGlvbnM6IFJlbmRlclBhZ2luYXRlZExpc3RPcHRpb25zPFQ+KTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHtcbiAgICBkdixcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbWFnaWMtbnVtYmVycyAtLSBFeHRyYWN0aW5nIG1hZ2ljIG51bWJlciBhcyBhIGNvbnN0YW50IHdvdWxkIGJlIHJlcGV0aXRpdmUsIGFzIHRoZSB2YWx1ZSBpcyB1c2VkIG9ubHkgb25jZSBhbmQgaXRzIG5hbWUgd291bGQgYmUgdGhlIHNhbWUgYXMgdGhlIHByb3BlcnR5LlxuICAgIGl0ZW1zUGVyUGFnZU9wdGlvbnMgPSBbMTAsIDIwLCA1MCwgMTAwXSxcbiAgICByb3dzXG4gIH0gPSBvcHRpb25zO1xuICBhd2FpdCByZW5kZXJQYWdpbmF0ZWQoe1xuICAgIGR2LFxuICAgIGl0ZW1zUGVyUGFnZU9wdGlvbnMsXG4gICAgcmVuZGVyZXI6IGFzeW5jIChyb3dzRm9yT25lUGFnZTogQXJyYXlPckRhdGFBcnJheTxUPik6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgYXdhaXQgZHYubGlzdChyb3dzRm9yT25lUGFnZSk7XG4gICAgfSxcbiAgICByb3dzXG4gIH0pO1xufVxuXG4vKipcbiAqIFJlbmRlcnMgYSBwYWdpbmF0ZWQgdGFibGUgdXNpbmcgdGhlIHByb3ZpZGVkIERhdGF2aWV3SW5saW5lQXBpIGluc3RhbmNlLlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIGl0ZW1zIGluIHRoZSB0YWJsZSByb3dzLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHJlbmRlcmluZyB0aGUgcGFnaW5hdGVkIHRhYmxlLlxuICpcbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgdGFibGUgaXMgcmVuZGVyZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZW5kZXJQYWdpbmF0ZWRUYWJsZTxUIGV4dGVuZHMgdW5rbm93bltdPihvcHRpb25zOiBSZW5kZXJQYWdpbmF0ZWRUYWJsZU9wdGlvbnM8VD4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3Qge1xuICAgIGR2LFxuICAgIGhlYWRlcnMsXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW1hZ2ljLW51bWJlcnMgLS0gRXh0cmFjdGluZyBtYWdpYyBudW1iZXIgYXMgYSBjb25zdGFudCB3b3VsZCBiZSByZXBldGl0aXZlLCBhcyB0aGUgdmFsdWUgaXMgdXNlZCBvbmx5IG9uY2UgYW5kIGl0cyBuYW1lIHdvdWxkIGJlIHRoZSBzYW1lIGFzIHRoZSBwcm9wZXJ0eS5cbiAgICBpdGVtc1BlclBhZ2VPcHRpb25zID0gWzEwLCAyMCwgNTAsIDEwMF0sXG4gICAgcm93c1xuICB9ID0gb3B0aW9ucztcbiAgYXdhaXQgcmVuZGVyUGFnaW5hdGVkKHtcbiAgICBkdixcbiAgICBpdGVtc1BlclBhZ2VPcHRpb25zLFxuICAgIHJlbmRlcmVyOiBhc3luYyAocm93c0Zvck9uZVBhZ2U6IEFycmF5T3JEYXRhQXJyYXk8VD4pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgIGF3YWl0IGR2LnRhYmxlKGhlYWRlcnMsIHJvd3NGb3JPbmVQYWdlKTtcbiAgICB9LFxuICAgIHJvd3NcbiAgfSk7XG59XG5cbi8qKlxuICogSGVscGVyIGZ1bmN0aW9uIHRvIHJlbmRlciBwYWdpbmF0ZWQgY29udGVudCB1c2luZyB0aGUgc3BlY2lmaWVkIHJlbmRlcmVyLlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIGl0ZW1zIHRvIHBhZ2luYXRlLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHJlbmRlcmluZyB0aGUgcGFnaW5hdGVkIGNvbnRlbnQuXG4gKlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBjb250ZW50IGlzIHJlbmRlcmVkLlxuICovXG5hc3luYyBmdW5jdGlvbiByZW5kZXJQYWdpbmF0ZWQ8VD4ob3B0aW9uczogUmVuZGVyUGFnaW5hdGVkT3B0aW9uczxUPik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBTRUNPTkRfUEFHRV9OVU1CRVIgPSAyO1xuICBjb25zdCBNT1JFX1BBR0VfTlVNQkVSID0gMztcbiAgY29uc3Qge1xuICAgIGR2LFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1tYWdpYy1udW1iZXJzIC0tIEV4dHJhY3RpbmcgbWFnaWMgbnVtYmVyIGFzIGEgY29uc3RhbnQgd291bGQgYmUgcmVwZXRpdGl2ZSwgYXMgdGhlIHZhbHVlIGlzIHVzZWQgb25seSBvbmNlIGFuZCBpdHMgbmFtZSB3b3VsZCBiZSB0aGUgc2FtZSBhcyB0aGUgcHJvcGVydHkuXG4gICAgaXRlbXNQZXJQYWdlT3B0aW9ucyA9IFsxMCwgMjAsIDUwLCAxMDBdLFxuICAgIHJvd3NcbiAgfSA9IG9wdGlvbnM7XG4gIGlmIChyb3dzLmxlbmd0aCA9PT0gMCkge1xuICAgIGR2LnBhcmFncmFwaCgnTm8gaXRlbXMgZm91bmQnKTtcbiAgICByZXR1cm47XG4gIH1cbiAgY29uc3QgY29udGFpbmVyID0gZHYuY29udGFpbmVyO1xuICBsZXQgaXRlbXNQZXJQYWdlID0gaXRlbXNQZXJQYWdlT3B0aW9uc1swXSA/PyB0aHJvd0V4cHJlc3Npb24obmV3IEVycm9yKCdJdGVtcyBwZXIgcGFnZSBvcHRpb25zIGFyZSBlbXB0eScpKTtcbiAgbGV0IHRvdGFsUGFnZXMgPSBNYXRoLmNlaWwocm93cy5sZW5ndGggLyBpdGVtc1BlclBhZ2UpO1xuICBhd2FpdCByZW5kZXJQYWdlKDEpO1xuXG4gIGZ1bmN0aW9uIGNyZWF0ZVBhZ2luYXRpb25Db250cm9scyhwYWdlTnVtYmVyOiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBwYWdpbmF0aW9uRGl2ID0gY29udGFpbmVyLmNyZWF0ZURpdih7IGNsczogJ3BhZ2luYXRpb24nIH0pO1xuICAgIGNvbnN0IHBhZ2luYXRpb25Sb3cxRGl2ID0gcGFnaW5hdGlvbkRpdi5jcmVhdGVEaXYoKTtcblxuICAgIGNyZWF0ZVBhZ2VMaW5rKCdGaXJzdCcsIDEsIHBhZ2VOdW1iZXIgPT09IDEpO1xuICAgIGNyZWF0ZVBhZ2VMaW5rKCdQcmV2JywgcGFnZU51bWJlciAtIDEsIHBhZ2VOdW1iZXIgPT09IDEpO1xuXG4gICAgaWYgKHBhZ2VOdW1iZXIgPiBNT1JFX1BBR0VfTlVNQkVSKSB7XG4gICAgICBwYWdpbmF0aW9uUm93MURpdi5jcmVhdGVTcGFuKHsgdGV4dDogJy4uLicgfSk7XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaSA9IE1hdGgubWF4KDEsIHBhZ2VOdW1iZXIgLSBTRUNPTkRfUEFHRV9OVU1CRVIpOyBpIDw9IE1hdGgubWluKHRvdGFsUGFnZXMsIHBhZ2VOdW1iZXIgKyBTRUNPTkRfUEFHRV9OVU1CRVIpOyBpKyspIHtcbiAgICAgIGNvbnN0IHBhZ2VMaW5rID0gY3JlYXRlUGFnZUxpbmsoU3RyaW5nKGkpLCBpLCBpID09PSBwYWdlTnVtYmVyKTtcbiAgICAgIGlmIChpID09PSBwYWdlTnVtYmVyKSB7XG4gICAgICAgIHBhZ2VMaW5rLmFkZENsYXNzKCdjdXJyZW50Jyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHBhZ2VOdW1iZXIgPCB0b3RhbFBhZ2VzIC0gU0VDT05EX1BBR0VfTlVNQkVSKSB7XG4gICAgICBwYWdpbmF0aW9uUm93MURpdi5jcmVhdGVTcGFuKHsgdGV4dDogJy4uLicgfSk7XG4gICAgfVxuXG4gICAgY3JlYXRlUGFnZUxpbmsoJ05leHQnLCBwYWdlTnVtYmVyICsgMSwgcGFnZU51bWJlciA9PT0gdG90YWxQYWdlcyk7XG4gICAgY3JlYXRlUGFnZUxpbmsoJ0xhc3QnLCB0b3RhbFBhZ2VzLCBwYWdlTnVtYmVyID09PSB0b3RhbFBhZ2VzKTtcblxuICAgIGNvbnN0IHBhZ2luYXRpb25Sb3cyRGl2ID0gcGFnaW5hdGlvbkRpdi5jcmVhdGVEaXYoKTtcblxuICAgIHBhZ2luYXRpb25Sb3cyRGl2LmNyZWF0ZVNwYW4oeyB0ZXh0OiBgICR7dCgoJCkgPT4gJC5vYnNpZGlhbkRldlV0aWxzLmRhdGF2aWV3Lml0ZW1zUGVyUGFnZSl9IGAgfSk7XG5cbiAgICBjb25zdCBpdGVtc1BlclBhZ2VTZWxlY3QgPSBwYWdpbmF0aW9uUm93MkRpdi5jcmVhdGVFbCgnc2VsZWN0Jyk7XG4gICAgaXRlbXNQZXJQYWdlT3B0aW9ucy5mb3JFYWNoKChvcHRpb246IG51bWJlcik6IHZvaWQgPT4ge1xuICAgICAgaXRlbXNQZXJQYWdlU2VsZWN0LmNyZWF0ZUVsKCdvcHRpb24nLCB7IHRleHQ6IFN0cmluZyhvcHRpb24pLCB2YWx1ZTogU3RyaW5nKG9wdGlvbikgfSk7XG4gICAgfSk7XG4gICAgaXRlbXNQZXJQYWdlU2VsZWN0LnZhbHVlID0gU3RyaW5nKGl0ZW1zUGVyUGFnZSk7XG4gICAgaXRlbXNQZXJQYWdlU2VsZWN0LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAnY2hhbmdlJyxcbiAgICAgIGNvbnZlcnRBc3luY1RvU3luYyhhc3luYyAoKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICAgIGl0ZW1zUGVyUGFnZSA9IHBhcnNlSW50KGl0ZW1zUGVyUGFnZVNlbGVjdC52YWx1ZSwgMTApO1xuICAgICAgICB0b3RhbFBhZ2VzID0gTWF0aC5jZWlsKHJvd3MubGVuZ3RoIC8gaXRlbXNQZXJQYWdlKTtcbiAgICAgICAgYXdhaXQgcmVuZGVyUGFnZSgxKTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHBhZ2luYXRpb25Sb3cyRGl2LmNyZWF0ZVNwYW4oeyB0ZXh0OiBgICR7dCgoJCkgPT4gJC5vYnNpZGlhbkRldlV0aWxzLmRhdGF2aWV3Lmp1bXBUb1BhZ2UpfSBgIH0pO1xuXG4gICAgY29uc3QganVtcFRvUGFnZUlucHV0ID0gcGFnaW5hdGlvblJvdzJEaXYuY3JlYXRlRWwoJ2lucHV0JywgeyBhdHRyOiB7IG1heDogdG90YWxQYWdlcywgbWluOiAxIH0sIHR5cGU6ICdudW1iZXInIH0pO1xuICAgIGp1bXBUb1BhZ2VJbnB1dC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ2tleWRvd24nLFxuICAgICAgY29udmVydEFzeW5jVG9TeW5jKGFzeW5jIChldmVudDogS2V5Ym9hcmRFdmVudCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgICAgY29uc3QgcGFnZSA9IHBhcnNlSW50KGp1bXBUb1BhZ2VJbnB1dC52YWx1ZSwgMTApO1xuICAgICAgICAgIGlmIChwYWdlID49IDEgJiYgcGFnZSA8PSB0b3RhbFBhZ2VzKSB7XG4gICAgICAgICAgICBhd2FpdCByZW5kZXJQYWdlKHBhZ2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuXG4gICAgcGFnaW5hdGlvblJvdzJEaXYuY3JlYXRlU3Bhbih7IHRleHQ6IGAgIFBhZ2UgJHtTdHJpbmcocGFnZU51bWJlcil9IG9mICR7U3RyaW5nKHRvdGFsUGFnZXMpfSwgVG90YWwgaXRlbXM6ICR7U3RyaW5nKHJvd3MubGVuZ3RoKX1gIH0pO1xuXG4gICAgZnVuY3Rpb24gY3JlYXRlUGFnZUxpbmsodGV4dDogc3RyaW5nLCBjdXJyZW50UGFnZU51bWJlcjogbnVtYmVyLCBkaXNhYmxlZCA9IGZhbHNlKTogSFRNTEFuY2hvckVsZW1lbnQge1xuICAgICAgY29uc3QgbGluayA9IHBhZ2luYXRpb25Sb3cxRGl2LmNyZWF0ZUVsKCdhJywgeyBjbHM6ICdwYWdlLWxpbmsnLCBocmVmOiBgIyR7U3RyaW5nKGN1cnJlbnRQYWdlTnVtYmVyKX1gLCB0ZXh0IH0pO1xuICAgICAgaWYgKGRpc2FibGVkKSB7XG4gICAgICAgIGxpbmsuYWRkQ2xhc3MoJ2Rpc2FibGVkJyk7XG4gICAgICAgIGxpbmsub25jbGljayA9IChldmVudDogTW91c2VFdmVudCk6IHZvaWQgPT4ge1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsaW5rLmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgICAgJ2NsaWNrJyxcbiAgICAgICAgICBjb252ZXJ0QXN5bmNUb1N5bmMoYXN5bmMgKGV2ZW50OiBNb3VzZUV2ZW50KTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgYXdhaXQgcmVuZGVyUGFnZShjdXJyZW50UGFnZU51bWJlcik7XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBsaW5rO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIHJlbmRlclBhZ2UocGFnZU51bWJlcjogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29udGFpbmVyLmVtcHR5KCk7XG4gICAgY29udGFpbmVyLmNyZWF0ZUVsKCdzdHlsZScsIHsgdGV4dDogcGFnaW5hdGlvbkNzcyB9KTtcblxuICAgIGNvbnN0IHN0YXJ0SW5kZXggPSAocGFnZU51bWJlciAtIDEpICogaXRlbXNQZXJQYWdlO1xuICAgIGNvbnN0IGVuZEluZGV4ID0gc3RhcnRJbmRleCArIGl0ZW1zUGVyUGFnZTtcbiAgICBjb25zdCByb3dzRm9yQ3VycmVudFBhZ2UgPSByb3dzLnNsaWNlKHN0YXJ0SW5kZXgsIGVuZEluZGV4KTtcblxuICAgIGNvbnN0IG9sZENvbnRhaW5lciA9IGR2LmNvbnRhaW5lcjtcblxuICAgIGR2LmNvbnRhaW5lciA9IGNvbnRhaW5lcjtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgb3B0aW9ucy5yZW5kZXJlcihyb3dzRm9yQ3VycmVudFBhZ2UpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGR2LnBhcmFncmFwaChgXHUyNzRDJHtlcnJvclRvU3RyaW5nKGUpfWApO1xuICAgIH0gZmluYWxseSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVxdWlyZS1hdG9taWMtdXBkYXRlcyAtLSBZZXMsIGl0IGlzIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uLCBidXQgSSBkb24ndCBhbiBlbGVnYW50IHdheSB0byBmaXggaXQuXG4gICAgICBkdi5jb250YWluZXIgPSBvbGRDb250YWluZXI7XG4gICAgfVxuXG4gICAgY3JlYXRlUGFnaW5hdGlvbkNvbnRyb2xzKHBhZ2VOdW1iZXIpO1xuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBaUJBLG1CQUFtQztBQUNuQyxtQkFHTztBQUNQLHdCQUdPO0FBQ1Asa0JBQWtCO0FBQ2xCLHlCQUEwQztBQXlGMUMsZUFBc0IsdUJBQXVCLElBQXNDO0FBQ2pGLFFBQU0sYUFBYSxNQUFNLFdBQU8sMkJBQVEsR0FBRyxLQUFLLEdBQUcsUUFBUSxFQUFFLEtBQUssSUFBSSxDQUFDO0FBQ3pFO0FBRUEsTUFBTSxnQkFBZ0I7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQTJJdEIs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