@payloadcms/richtext-lexical 3.0.0-alpha.21 → 3.0.0-alpha.23

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 (494) hide show
  1. package/components.d.ts +5 -5
  2. package/components.js +6 -6
  3. package/dist/cell/index.d.ts +1 -1
  4. package/dist/cell/index.d.ts.map +1 -1
  5. package/dist/cell/index.js +5 -5
  6. package/dist/exports/components.d.ts +5 -5
  7. package/dist/exports/components.d.ts.map +1 -1
  8. package/dist/exports/components.js +6 -6
  9. package/dist/field/Field.d.ts +1 -1
  10. package/dist/field/Field.d.ts.map +1 -1
  11. package/dist/field/Field.js +2 -2
  12. package/dist/field/features/align/feature.client.js +7 -7
  13. package/dist/field/features/align/feature.server.d.ts +1 -1
  14. package/dist/field/features/align/feature.server.d.ts.map +1 -1
  15. package/dist/field/features/align/feature.server.js +2 -2
  16. package/dist/field/features/align/floatingSelectToolbarAlignDropdownSection.d.ts +1 -1
  17. package/dist/field/features/align/floatingSelectToolbarAlignDropdownSection.d.ts.map +1 -1
  18. package/dist/field/features/align/floatingSelectToolbarAlignDropdownSection.js +2 -2
  19. package/dist/field/features/blockquote/feature.client.js +6 -6
  20. package/dist/field/features/blockquote/feature.server.d.ts +1 -1
  21. package/dist/field/features/blockquote/feature.server.d.ts.map +1 -1
  22. package/dist/field/features/blockquote/feature.server.js +4 -4
  23. package/dist/field/features/blocks/component/BlockContent.d.ts +2 -2
  24. package/dist/field/features/blocks/component/BlockContent.d.ts.map +1 -1
  25. package/dist/field/features/blocks/component/BlockContent.js +3 -3
  26. package/dist/field/features/blocks/component/index.d.ts +1 -1
  27. package/dist/field/features/blocks/component/index.d.ts.map +1 -1
  28. package/dist/field/features/blocks/component/index.js +3 -3
  29. package/dist/field/features/blocks/drawer/index.js +5 -5
  30. package/dist/field/features/blocks/feature.client.d.ts +1 -1
  31. package/dist/field/features/blocks/feature.client.d.ts.map +1 -1
  32. package/dist/field/features/blocks/feature.client.js +7 -7
  33. package/dist/field/features/blocks/feature.server.d.ts +2 -2
  34. package/dist/field/features/blocks/feature.server.d.ts.map +1 -1
  35. package/dist/field/features/blocks/feature.server.js +5 -5
  36. package/dist/field/features/blocks/nodes/BlocksNode.d.ts +2 -2
  37. package/dist/field/features/blocks/nodes/BlocksNode.d.ts.map +1 -1
  38. package/dist/field/features/blocks/nodes/BlocksNode.js +4 -4
  39. package/dist/field/features/blocks/plugin/commands.d.ts +1 -1
  40. package/dist/field/features/blocks/plugin/commands.d.ts.map +1 -1
  41. package/dist/field/features/blocks/plugin/commands.js +1 -1
  42. package/dist/field/features/blocks/plugin/index.d.ts +1 -1
  43. package/dist/field/features/blocks/plugin/index.d.ts.map +1 -1
  44. package/dist/field/features/blocks/plugin/index.js +5 -5
  45. package/dist/field/features/blocks/populationPromise.d.ts +3 -3
  46. package/dist/field/features/blocks/populationPromise.d.ts.map +1 -1
  47. package/dist/field/features/blocks/populationPromise.js +2 -2
  48. package/dist/field/features/blocks/validate.d.ts +3 -3
  49. package/dist/field/features/blocks/validate.d.ts.map +1 -1
  50. package/dist/field/features/blocks/validate.js +1 -1
  51. package/dist/field/features/common/floatingSelectToolbarFeaturesButtonsSection/index.d.ts +1 -1
  52. package/dist/field/features/common/floatingSelectToolbarFeaturesButtonsSection/index.d.ts.map +1 -1
  53. package/dist/field/features/common/floatingSelectToolbarFeaturesButtonsSection/index.js +1 -1
  54. package/dist/field/features/common/floatingSelectToolbarTextDropdownSection/index.d.ts +1 -1
  55. package/dist/field/features/common/floatingSelectToolbarTextDropdownSection/index.d.ts.map +1 -1
  56. package/dist/field/features/common/floatingSelectToolbarTextDropdownSection/index.js +2 -2
  57. package/dist/field/features/converters/html/converter/converters/linebreak.d.ts +1 -1
  58. package/dist/field/features/converters/html/converter/converters/linebreak.d.ts.map +1 -1
  59. package/dist/field/features/converters/html/converter/converters/linebreak.js +1 -1
  60. package/dist/field/features/converters/html/converter/converters/paragraph.d.ts +1 -1
  61. package/dist/field/features/converters/html/converter/converters/paragraph.d.ts.map +1 -1
  62. package/dist/field/features/converters/html/converter/converters/paragraph.js +2 -2
  63. package/dist/field/features/converters/html/converter/converters/text.d.ts +1 -1
  64. package/dist/field/features/converters/html/converter/converters/text.d.ts.map +1 -1
  65. package/dist/field/features/converters/html/converter/converters/text.js +2 -2
  66. package/dist/field/features/converters/html/converter/defaultConverters.d.ts +1 -1
  67. package/dist/field/features/converters/html/converter/defaultConverters.d.ts.map +1 -1
  68. package/dist/field/features/converters/html/converter/defaultConverters.js +4 -4
  69. package/dist/field/features/converters/html/converter/index.d.ts +1 -1
  70. package/dist/field/features/converters/html/converter/index.d.ts.map +1 -1
  71. package/dist/field/features/converters/html/converter/index.js +1 -1
  72. package/dist/field/features/converters/html/feature.server.d.ts +2 -2
  73. package/dist/field/features/converters/html/feature.server.d.ts.map +1 -1
  74. package/dist/field/features/converters/html/feature.server.js +1 -1
  75. package/dist/field/features/converters/html/field/index.d.ts +2 -2
  76. package/dist/field/features/converters/html/field/index.d.ts.map +1 -1
  77. package/dist/field/features/converters/html/field/index.js +3 -3
  78. package/dist/field/features/createClientComponent.d.ts +2 -2
  79. package/dist/field/features/createClientComponent.d.ts.map +1 -1
  80. package/dist/field/features/createClientComponent.js +2 -2
  81. package/dist/field/features/debug/testrecorder/feature.client.js +3 -3
  82. package/dist/field/features/debug/testrecorder/feature.server.d.ts +1 -1
  83. package/dist/field/features/debug/testrecorder/feature.server.d.ts.map +1 -1
  84. package/dist/field/features/debug/testrecorder/feature.server.js +2 -2
  85. package/dist/field/features/debug/testrecorder/plugin/index.js +3 -3
  86. package/dist/field/features/debug/treeview/feature.client.js +3 -3
  87. package/dist/field/features/debug/treeview/feature.server.d.ts +1 -1
  88. package/dist/field/features/debug/treeview/feature.server.d.ts.map +1 -1
  89. package/dist/field/features/debug/treeview/feature.server.js +2 -2
  90. package/dist/field/features/debug/treeview/plugin/index.js +3 -3
  91. package/dist/field/features/format/bold/feature.client.js +5 -5
  92. package/dist/field/features/format/bold/feature.server.d.ts +1 -1
  93. package/dist/field/features/format/bold/feature.server.d.ts.map +1 -1
  94. package/dist/field/features/format/bold/feature.server.js +3 -3
  95. package/dist/field/features/format/common/floatingSelectToolbarSection.d.ts +1 -1
  96. package/dist/field/features/format/common/floatingSelectToolbarSection.d.ts.map +1 -1
  97. package/dist/field/features/format/common/floatingSelectToolbarSection.js +1 -1
  98. package/dist/field/features/format/inlinecode/feature.client.js +5 -5
  99. package/dist/field/features/format/inlinecode/feature.server.d.ts +1 -1
  100. package/dist/field/features/format/inlinecode/feature.server.d.ts.map +1 -1
  101. package/dist/field/features/format/inlinecode/feature.server.js +3 -3
  102. package/dist/field/features/format/italic/feature.client.js +5 -5
  103. package/dist/field/features/format/italic/feature.server.d.ts +1 -1
  104. package/dist/field/features/format/italic/feature.server.d.ts.map +1 -1
  105. package/dist/field/features/format/italic/feature.server.js +3 -3
  106. package/dist/field/features/format/strikethrough/feature.client.js +5 -5
  107. package/dist/field/features/format/strikethrough/feature.server.d.ts +1 -1
  108. package/dist/field/features/format/strikethrough/feature.server.d.ts.map +1 -1
  109. package/dist/field/features/format/strikethrough/feature.server.js +3 -3
  110. package/dist/field/features/format/subscript/feature.client.js +4 -4
  111. package/dist/field/features/format/subscript/feature.server.d.ts +1 -1
  112. package/dist/field/features/format/subscript/feature.server.d.ts.map +1 -1
  113. package/dist/field/features/format/subscript/feature.server.js +2 -2
  114. package/dist/field/features/format/superscript/feature.client.js +4 -4
  115. package/dist/field/features/format/superscript/feature.server.d.ts +1 -1
  116. package/dist/field/features/format/superscript/feature.server.d.ts.map +1 -1
  117. package/dist/field/features/format/superscript/feature.server.js +2 -2
  118. package/dist/field/features/format/underline/feature.client.js +4 -4
  119. package/dist/field/features/format/underline/feature.server.d.ts +1 -1
  120. package/dist/field/features/format/underline/feature.server.d.ts.map +1 -1
  121. package/dist/field/features/format/underline/feature.server.js +2 -2
  122. package/dist/field/features/heading/feature.client.d.ts +2 -2
  123. package/dist/field/features/heading/feature.client.d.ts.map +1 -1
  124. package/dist/field/features/heading/feature.client.js +11 -11
  125. package/dist/field/features/heading/feature.server.d.ts +1 -1
  126. package/dist/field/features/heading/feature.server.d.ts.map +1 -1
  127. package/dist/field/features/heading/feature.server.js +4 -4
  128. package/dist/field/features/heading/markdownTransformer.js +2 -2
  129. package/dist/field/features/indent/feature.client.js +5 -5
  130. package/dist/field/features/indent/feature.server.d.ts +1 -1
  131. package/dist/field/features/indent/feature.server.d.ts.map +1 -1
  132. package/dist/field/features/indent/feature.server.js +2 -2
  133. package/dist/field/features/indent/floatingSelectToolbarIndentSection.d.ts +1 -1
  134. package/dist/field/features/indent/floatingSelectToolbarIndentSection.d.ts.map +1 -1
  135. package/dist/field/features/indent/floatingSelectToolbarIndentSection.js +1 -1
  136. package/dist/field/features/link/drawer/baseFields.js +2 -2
  137. package/dist/field/features/link/drawer/index.d.ts +1 -1
  138. package/dist/field/features/link/drawer/index.d.ts.map +1 -1
  139. package/dist/field/features/link/drawer/index.js +2 -2
  140. package/dist/field/features/link/drawer/types.d.ts +1 -1
  141. package/dist/field/features/link/drawer/types.d.ts.map +1 -1
  142. package/dist/field/features/link/drawer/types.js +1 -1
  143. package/dist/field/features/link/feature.client.d.ts +2 -2
  144. package/dist/field/features/link/feature.client.d.ts.map +1 -1
  145. package/dist/field/features/link/feature.client.js +12 -12
  146. package/dist/field/features/link/feature.server.d.ts +2 -2
  147. package/dist/field/features/link/feature.server.d.ts.map +1 -1
  148. package/dist/field/features/link/feature.server.js +7 -7
  149. package/dist/field/features/link/nodes/AutoLinkNode.d.ts +2 -2
  150. package/dist/field/features/link/nodes/AutoLinkNode.d.ts.map +1 -1
  151. package/dist/field/features/link/nodes/AutoLinkNode.js +2 -2
  152. package/dist/field/features/link/nodes/LinkNode.d.ts +2 -2
  153. package/dist/field/features/link/nodes/LinkNode.d.ts.map +1 -1
  154. package/dist/field/features/link/nodes/LinkNode.js +1 -1
  155. package/dist/field/features/link/plugins/autoLink/index.d.ts +1 -1
  156. package/dist/field/features/link/plugins/autoLink/index.d.ts.map +1 -1
  157. package/dist/field/features/link/plugins/autoLink/index.js +5 -5
  158. package/dist/field/features/link/plugins/clickableLink/index.d.ts.map +1 -1
  159. package/dist/field/features/link/plugins/clickableLink/index.js +4 -3
  160. package/dist/field/features/link/plugins/floatingLinkEditor/LinkEditor/commands.d.ts +1 -1
  161. package/dist/field/features/link/plugins/floatingLinkEditor/LinkEditor/commands.d.ts.map +1 -1
  162. package/dist/field/features/link/plugins/floatingLinkEditor/LinkEditor/commands.js +1 -1
  163. package/dist/field/features/link/plugins/floatingLinkEditor/LinkEditor/index.js +10 -10
  164. package/dist/field/features/link/plugins/floatingLinkEditor/index.js +2 -2
  165. package/dist/field/features/link/plugins/floatingLinkEditor/types.d.ts +1 -1
  166. package/dist/field/features/link/plugins/floatingLinkEditor/types.d.ts.map +1 -1
  167. package/dist/field/features/link/plugins/floatingLinkEditor/types.js +1 -1
  168. package/dist/field/features/link/plugins/floatingLinkEditor/utilities.js +2 -2
  169. package/dist/field/features/link/plugins/link/index.js +4 -4
  170. package/dist/field/features/link/populationPromise.d.ts +3 -3
  171. package/dist/field/features/link/populationPromise.d.ts.map +1 -1
  172. package/dist/field/features/link/populationPromise.js +3 -3
  173. package/dist/field/features/lists/checklist/feature.client.js +8 -8
  174. package/dist/field/features/lists/checklist/feature.server.d.ts +1 -1
  175. package/dist/field/features/lists/checklist/feature.server.d.ts.map +1 -1
  176. package/dist/field/features/lists/checklist/feature.server.js +4 -4
  177. package/dist/field/features/lists/checklist/markdownTransformers.js +2 -2
  178. package/dist/field/features/lists/checklist/plugin/index.js +2 -2
  179. package/dist/field/features/lists/htmlConverter.d.ts +1 -1
  180. package/dist/field/features/lists/htmlConverter.d.ts.map +1 -1
  181. package/dist/field/features/lists/htmlConverter.js +2 -2
  182. package/dist/field/features/lists/orderedlist/feature.client.js +7 -7
  183. package/dist/field/features/lists/orderedlist/feature.server.d.ts +1 -1
  184. package/dist/field/features/lists/orderedlist/feature.server.d.ts.map +1 -1
  185. package/dist/field/features/lists/orderedlist/feature.server.js +4 -4
  186. package/dist/field/features/lists/orderedlist/markdownTransformer.js +2 -2
  187. package/dist/field/features/lists/plugin/index.js +2 -2
  188. package/dist/field/features/lists/unorderedlist/feature.client.js +7 -7
  189. package/dist/field/features/lists/unorderedlist/feature.server.d.ts +1 -1
  190. package/dist/field/features/lists/unorderedlist/feature.server.d.ts.map +1 -1
  191. package/dist/field/features/lists/unorderedlist/feature.server.js +4 -4
  192. package/dist/field/features/lists/unorderedlist/markdownTransformer.js +2 -2
  193. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/heading/client.js +3 -3
  194. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/heading/converter.d.ts +1 -1
  195. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/heading/converter.d.ts.map +1 -1
  196. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/heading/converter.js +2 -2
  197. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/heading/index.d.ts +1 -1
  198. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/heading/index.d.ts.map +1 -1
  199. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/heading/index.js +3 -3
  200. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/link/client.js +3 -3
  201. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/link/converter.d.ts +1 -1
  202. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/link/converter.d.ts.map +1 -1
  203. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/link/converter.js +2 -2
  204. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/link/index.d.ts +1 -1
  205. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/link/index.d.ts.map +1 -1
  206. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/link/index.js +3 -3
  207. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/list/client.js +3 -3
  208. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/list/converter.d.ts +1 -1
  209. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/list/converter.d.ts.map +1 -1
  210. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/list/converter.js +2 -2
  211. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/list/index.d.ts +1 -1
  212. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/list/index.d.ts.map +1 -1
  213. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/list/index.js +3 -3
  214. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/listItem/client.js +3 -3
  215. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/listItem/converter.d.ts +1 -1
  216. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/listItem/converter.d.ts.map +1 -1
  217. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/listItem/converter.js +2 -2
  218. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/listItem/index.d.ts +1 -1
  219. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/listItem/index.d.ts.map +1 -1
  220. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/listItem/index.js +3 -3
  221. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/quote/client.js +3 -3
  222. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/quote/converter.d.ts +1 -1
  223. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/quote/converter.d.ts.map +1 -1
  224. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/quote/converter.js +2 -2
  225. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/quote/index.d.ts +1 -1
  226. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/quote/index.d.ts.map +1 -1
  227. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/quote/index.js +3 -3
  228. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/unknown/client.js +3 -3
  229. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/unknown/converter.d.ts +1 -1
  230. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/unknown/converter.d.ts.map +1 -1
  231. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/unknown/converter.js +2 -2
  232. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/unknown/index.d.ts +1 -1
  233. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/unknown/index.d.ts.map +1 -1
  234. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/unknown/index.js +3 -3
  235. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/upload/client.js +3 -3
  236. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/upload/converter.d.ts +1 -1
  237. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/upload/converter.d.ts.map +1 -1
  238. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/upload/converter.js +1 -1
  239. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/upload/index.d.ts +1 -1
  240. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/upload/index.d.ts.map +1 -1
  241. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/upload/index.js +3 -3
  242. package/dist/field/features/migrations/lexicalPluginToLexical/converter/defaultConverters.d.ts +1 -1
  243. package/dist/field/features/migrations/lexicalPluginToLexical/converter/defaultConverters.d.ts.map +1 -1
  244. package/dist/field/features/migrations/lexicalPluginToLexical/converter/defaultConverters.js +8 -8
  245. package/dist/field/features/migrations/lexicalPluginToLexical/converter/index.d.ts +1 -1
  246. package/dist/field/features/migrations/lexicalPluginToLexical/converter/index.d.ts.map +1 -1
  247. package/dist/field/features/migrations/lexicalPluginToLexical/converter/index.js +1 -1
  248. package/dist/field/features/migrations/lexicalPluginToLexical/feature.client.js +4 -4
  249. package/dist/field/features/migrations/lexicalPluginToLexical/feature.server.d.ts +2 -2
  250. package/dist/field/features/migrations/lexicalPluginToLexical/feature.server.d.ts.map +1 -1
  251. package/dist/field/features/migrations/lexicalPluginToLexical/feature.server.js +4 -4
  252. package/dist/field/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/Component.d.ts +1 -1
  253. package/dist/field/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/Component.d.ts.map +1 -1
  254. package/dist/field/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/Component.js +1 -1
  255. package/dist/field/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.js +2 -2
  256. package/dist/field/features/migrations/slateToLexical/converter/converters/blockquote/client.js +3 -3
  257. package/dist/field/features/migrations/slateToLexical/converter/converters/blockquote/converter.d.ts +1 -1
  258. package/dist/field/features/migrations/slateToLexical/converter/converters/blockquote/converter.d.ts.map +1 -1
  259. package/dist/field/features/migrations/slateToLexical/converter/converters/blockquote/converter.js +2 -2
  260. package/dist/field/features/migrations/slateToLexical/converter/converters/blockquote/index.d.ts +1 -1
  261. package/dist/field/features/migrations/slateToLexical/converter/converters/blockquote/index.d.ts.map +1 -1
  262. package/dist/field/features/migrations/slateToLexical/converter/converters/blockquote/index.js +3 -3
  263. package/dist/field/features/migrations/slateToLexical/converter/converters/heading/client.js +3 -3
  264. package/dist/field/features/migrations/slateToLexical/converter/converters/heading/converter.d.ts +1 -1
  265. package/dist/field/features/migrations/slateToLexical/converter/converters/heading/converter.d.ts.map +1 -1
  266. package/dist/field/features/migrations/slateToLexical/converter/converters/heading/converter.js +2 -2
  267. package/dist/field/features/migrations/slateToLexical/converter/converters/heading/index.d.ts +1 -1
  268. package/dist/field/features/migrations/slateToLexical/converter/converters/heading/index.d.ts.map +1 -1
  269. package/dist/field/features/migrations/slateToLexical/converter/converters/heading/index.js +3 -3
  270. package/dist/field/features/migrations/slateToLexical/converter/converters/indent/client.js +3 -3
  271. package/dist/field/features/migrations/slateToLexical/converter/converters/indent/converter.d.ts +1 -1
  272. package/dist/field/features/migrations/slateToLexical/converter/converters/indent/converter.d.ts.map +1 -1
  273. package/dist/field/features/migrations/slateToLexical/converter/converters/indent/converter.js +2 -2
  274. package/dist/field/features/migrations/slateToLexical/converter/converters/indent/index.d.ts +1 -1
  275. package/dist/field/features/migrations/slateToLexical/converter/converters/indent/index.d.ts.map +1 -1
  276. package/dist/field/features/migrations/slateToLexical/converter/converters/indent/index.js +3 -3
  277. package/dist/field/features/migrations/slateToLexical/converter/converters/link/client.js +3 -3
  278. package/dist/field/features/migrations/slateToLexical/converter/converters/link/converter.d.ts +1 -1
  279. package/dist/field/features/migrations/slateToLexical/converter/converters/link/converter.d.ts.map +1 -1
  280. package/dist/field/features/migrations/slateToLexical/converter/converters/link/converter.js +2 -2
  281. package/dist/field/features/migrations/slateToLexical/converter/converters/link/index.d.ts +1 -1
  282. package/dist/field/features/migrations/slateToLexical/converter/converters/link/index.d.ts.map +1 -1
  283. package/dist/field/features/migrations/slateToLexical/converter/converters/link/index.js +3 -3
  284. package/dist/field/features/migrations/slateToLexical/converter/converters/listItem/client.js +3 -3
  285. package/dist/field/features/migrations/slateToLexical/converter/converters/listItem/converter.d.ts +1 -1
  286. package/dist/field/features/migrations/slateToLexical/converter/converters/listItem/converter.d.ts.map +1 -1
  287. package/dist/field/features/migrations/slateToLexical/converter/converters/listItem/converter.js +2 -2
  288. package/dist/field/features/migrations/slateToLexical/converter/converters/listItem/index.d.ts +1 -1
  289. package/dist/field/features/migrations/slateToLexical/converter/converters/listItem/index.d.ts.map +1 -1
  290. package/dist/field/features/migrations/slateToLexical/converter/converters/listItem/index.js +3 -3
  291. package/dist/field/features/migrations/slateToLexical/converter/converters/orderedList/client.js +3 -3
  292. package/dist/field/features/migrations/slateToLexical/converter/converters/orderedList/converter.d.ts +1 -1
  293. package/dist/field/features/migrations/slateToLexical/converter/converters/orderedList/converter.d.ts.map +1 -1
  294. package/dist/field/features/migrations/slateToLexical/converter/converters/orderedList/converter.js +2 -2
  295. package/dist/field/features/migrations/slateToLexical/converter/converters/orderedList/index.d.ts +1 -1
  296. package/dist/field/features/migrations/slateToLexical/converter/converters/orderedList/index.d.ts.map +1 -1
  297. package/dist/field/features/migrations/slateToLexical/converter/converters/orderedList/index.js +3 -3
  298. package/dist/field/features/migrations/slateToLexical/converter/converters/relationship/client.js +3 -3
  299. package/dist/field/features/migrations/slateToLexical/converter/converters/relationship/converter.d.ts +1 -1
  300. package/dist/field/features/migrations/slateToLexical/converter/converters/relationship/converter.d.ts.map +1 -1
  301. package/dist/field/features/migrations/slateToLexical/converter/converters/relationship/converter.js +1 -1
  302. package/dist/field/features/migrations/slateToLexical/converter/converters/relationship/index.d.ts +1 -1
  303. package/dist/field/features/migrations/slateToLexical/converter/converters/relationship/index.d.ts.map +1 -1
  304. package/dist/field/features/migrations/slateToLexical/converter/converters/relationship/index.js +3 -3
  305. package/dist/field/features/migrations/slateToLexical/converter/converters/unknown/client.js +3 -3
  306. package/dist/field/features/migrations/slateToLexical/converter/converters/unknown/converter.d.ts +1 -1
  307. package/dist/field/features/migrations/slateToLexical/converter/converters/unknown/converter.d.ts.map +1 -1
  308. package/dist/field/features/migrations/slateToLexical/converter/converters/unknown/converter.js +2 -2
  309. package/dist/field/features/migrations/slateToLexical/converter/converters/unknown/index.d.ts +1 -1
  310. package/dist/field/features/migrations/slateToLexical/converter/converters/unknown/index.d.ts.map +1 -1
  311. package/dist/field/features/migrations/slateToLexical/converter/converters/unknown/index.js +3 -3
  312. package/dist/field/features/migrations/slateToLexical/converter/converters/unorderedList/client.js +3 -3
  313. package/dist/field/features/migrations/slateToLexical/converter/converters/unorderedList/converter.d.ts +1 -1
  314. package/dist/field/features/migrations/slateToLexical/converter/converters/unorderedList/converter.d.ts.map +1 -1
  315. package/dist/field/features/migrations/slateToLexical/converter/converters/unorderedList/converter.js +2 -2
  316. package/dist/field/features/migrations/slateToLexical/converter/converters/unorderedList/index.d.ts +1 -1
  317. package/dist/field/features/migrations/slateToLexical/converter/converters/unorderedList/index.d.ts.map +1 -1
  318. package/dist/field/features/migrations/slateToLexical/converter/converters/unorderedList/index.js +3 -3
  319. package/dist/field/features/migrations/slateToLexical/converter/converters/upload/client.js +3 -3
  320. package/dist/field/features/migrations/slateToLexical/converter/converters/upload/converter.d.ts +1 -1
  321. package/dist/field/features/migrations/slateToLexical/converter/converters/upload/converter.d.ts.map +1 -1
  322. package/dist/field/features/migrations/slateToLexical/converter/converters/upload/converter.js +1 -1
  323. package/dist/field/features/migrations/slateToLexical/converter/converters/upload/index.d.ts +1 -1
  324. package/dist/field/features/migrations/slateToLexical/converter/converters/upload/index.d.ts.map +1 -1
  325. package/dist/field/features/migrations/slateToLexical/converter/converters/upload/index.js +3 -3
  326. package/dist/field/features/migrations/slateToLexical/converter/defaultConverters.d.ts +1 -1
  327. package/dist/field/features/migrations/slateToLexical/converter/defaultConverters.d.ts.map +1 -1
  328. package/dist/field/features/migrations/slateToLexical/converter/defaultConverters.js +11 -11
  329. package/dist/field/features/migrations/slateToLexical/converter/index.d.ts +1 -1
  330. package/dist/field/features/migrations/slateToLexical/converter/index.d.ts.map +1 -1
  331. package/dist/field/features/migrations/slateToLexical/converter/index.js +2 -2
  332. package/dist/field/features/migrations/slateToLexical/feature.client.js +4 -4
  333. package/dist/field/features/migrations/slateToLexical/feature.server.d.ts +2 -2
  334. package/dist/field/features/migrations/slateToLexical/feature.server.d.ts.map +1 -1
  335. package/dist/field/features/migrations/slateToLexical/feature.server.js +4 -4
  336. package/dist/field/features/migrations/slateToLexical/nodes/unknownConvertedNode/Component.d.ts +1 -1
  337. package/dist/field/features/migrations/slateToLexical/nodes/unknownConvertedNode/Component.d.ts.map +1 -1
  338. package/dist/field/features/migrations/slateToLexical/nodes/unknownConvertedNode/Component.js +1 -1
  339. package/dist/field/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.js +2 -2
  340. package/dist/field/features/paragraph/feature.client.js +5 -5
  341. package/dist/field/features/paragraph/feature.server.d.ts +1 -1
  342. package/dist/field/features/paragraph/feature.server.d.ts.map +1 -1
  343. package/dist/field/features/paragraph/feature.server.js +2 -2
  344. package/dist/field/features/relationship/drawer/index.js +6 -6
  345. package/dist/field/features/relationship/feature.client.d.ts +2 -2
  346. package/dist/field/features/relationship/feature.client.d.ts.map +1 -1
  347. package/dist/field/features/relationship/feature.client.js +7 -7
  348. package/dist/field/features/relationship/feature.server.d.ts +1 -1
  349. package/dist/field/features/relationship/feature.server.d.ts.map +1 -1
  350. package/dist/field/features/relationship/feature.server.js +4 -4
  351. package/dist/field/features/relationship/nodes/RelationshipNode.d.ts +1 -1
  352. package/dist/field/features/relationship/nodes/RelationshipNode.d.ts.map +1 -1
  353. package/dist/field/features/relationship/nodes/RelationshipNode.js +3 -3
  354. package/dist/field/features/relationship/nodes/components/RelationshipComponent.d.ts +1 -1
  355. package/dist/field/features/relationship/nodes/components/RelationshipComponent.d.ts.map +1 -1
  356. package/dist/field/features/relationship/nodes/components/RelationshipComponent.js +5 -5
  357. package/dist/field/features/relationship/plugins/index.d.ts +2 -2
  358. package/dist/field/features/relationship/plugins/index.d.ts.map +1 -1
  359. package/dist/field/features/relationship/plugins/index.js +4 -4
  360. package/dist/field/features/relationship/populationPromise.d.ts +2 -2
  361. package/dist/field/features/relationship/populationPromise.d.ts.map +1 -1
  362. package/dist/field/features/relationship/populationPromise.js +2 -2
  363. package/dist/field/features/types.d.ts +5 -5
  364. package/dist/field/features/types.d.ts.map +1 -1
  365. package/dist/field/features/types.js +1 -1
  366. package/dist/field/features/upload/component/ExtraFieldsDrawer/index.d.ts +1 -1
  367. package/dist/field/features/upload/component/ExtraFieldsDrawer/index.d.ts.map +1 -1
  368. package/dist/field/features/upload/component/ExtraFieldsDrawer/index.js +3 -3
  369. package/dist/field/features/upload/component/index.d.ts +1 -1
  370. package/dist/field/features/upload/component/index.d.ts.map +1 -1
  371. package/dist/field/features/upload/component/index.js +7 -7
  372. package/dist/field/features/upload/drawer/index.js +6 -6
  373. package/dist/field/features/upload/feature.client.d.ts +1 -1
  374. package/dist/field/features/upload/feature.client.d.ts.map +1 -1
  375. package/dist/field/features/upload/feature.client.js +7 -7
  376. package/dist/field/features/upload/feature.server.d.ts +2 -2
  377. package/dist/field/features/upload/feature.server.d.ts.map +1 -1
  378. package/dist/field/features/upload/feature.server.js +5 -5
  379. package/dist/field/features/upload/nodes/UploadNode.d.ts +2 -2
  380. package/dist/field/features/upload/nodes/UploadNode.d.ts.map +1 -1
  381. package/dist/field/features/upload/nodes/UploadNode.js +3 -3
  382. package/dist/field/features/upload/plugin/index.d.ts +1 -1
  383. package/dist/field/features/upload/plugin/index.d.ts.map +1 -1
  384. package/dist/field/features/upload/plugin/index.js +4 -4
  385. package/dist/field/features/upload/populationPromise.d.ts +3 -3
  386. package/dist/field/features/upload/populationPromise.d.ts.map +1 -1
  387. package/dist/field/features/upload/populationPromise.js +3 -3
  388. package/dist/field/features/upload/validate.d.ts +2 -2
  389. package/dist/field/features/upload/validate.d.ts.map +1 -1
  390. package/dist/field/features/upload/validate.js +2 -2
  391. package/dist/field/index.d.ts +1 -1
  392. package/dist/field/index.d.ts.map +1 -1
  393. package/dist/field/index.js +5 -5
  394. package/dist/field/lexical/EditorPlugin.d.ts +1 -1
  395. package/dist/field/lexical/EditorPlugin.d.ts.map +1 -1
  396. package/dist/field/lexical/EditorPlugin.js +1 -1
  397. package/dist/field/lexical/LexicalEditor.d.ts +1 -1
  398. package/dist/field/lexical/LexicalEditor.d.ts.map +1 -1
  399. package/dist/field/lexical/LexicalEditor.js +16 -15
  400. package/dist/field/lexical/LexicalProvider.d.ts +1 -1
  401. package/dist/field/lexical/LexicalProvider.d.ts.map +1 -1
  402. package/dist/field/lexical/LexicalProvider.js +5 -5
  403. package/dist/field/lexical/config/client/EditorConfigProvider.d.ts +1 -1
  404. package/dist/field/lexical/config/client/EditorConfigProvider.d.ts.map +1 -1
  405. package/dist/field/lexical/config/client/EditorConfigProvider.js +1 -1
  406. package/dist/field/lexical/config/client/default.d.ts +1 -1
  407. package/dist/field/lexical/config/client/default.d.ts.map +1 -1
  408. package/dist/field/lexical/config/client/default.js +2 -2
  409. package/dist/field/lexical/config/client/loader.d.ts +2 -1
  410. package/dist/field/lexical/config/client/loader.d.ts.map +1 -1
  411. package/dist/field/lexical/config/client/loader.js +1 -1
  412. package/dist/field/lexical/config/client/sanitize.d.ts +3 -3
  413. package/dist/field/lexical/config/client/sanitize.d.ts.map +1 -1
  414. package/dist/field/lexical/config/client/sanitize.js +1 -1
  415. package/dist/field/lexical/config/server/default.d.ts +3 -3
  416. package/dist/field/lexical/config/server/default.d.ts.map +1 -1
  417. package/dist/field/lexical/config/server/default.js +21 -21
  418. package/dist/field/lexical/config/server/loader.d.ts +2 -2
  419. package/dist/field/lexical/config/server/loader.d.ts.map +1 -1
  420. package/dist/field/lexical/config/server/loader.js +1 -1
  421. package/dist/field/lexical/config/server/sanitize.d.ts +2 -2
  422. package/dist/field/lexical/config/server/sanitize.d.ts.map +1 -1
  423. package/dist/field/lexical/config/server/sanitize.js +2 -2
  424. package/dist/field/lexical/config/types.d.ts +2 -2
  425. package/dist/field/lexical/config/types.d.ts.map +1 -1
  426. package/dist/field/lexical/config/types.js +1 -1
  427. package/dist/field/lexical/nodes/index.d.ts +1 -1
  428. package/dist/field/lexical/nodes/index.d.ts.map +1 -1
  429. package/dist/field/lexical/nodes/index.js +1 -1
  430. package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarButton/index.d.ts +1 -1
  431. package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarButton/index.d.ts.map +1 -1
  432. package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarButton/index.js +2 -2
  433. package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/DropDown.d.ts +1 -1
  434. package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/DropDown.d.ts.map +1 -1
  435. package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/DropDown.js +2 -2
  436. package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/index.d.ts +1 -1
  437. package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/index.d.ts.map +1 -1
  438. package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/index.js +2 -2
  439. package/dist/field/lexical/plugins/FloatingSelectToolbar/index.js +7 -7
  440. package/dist/field/lexical/plugins/MarkdownShortcut/index.js +3 -3
  441. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.d.ts +2 -3
  442. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.d.ts.map +1 -1
  443. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.js +2 -2
  444. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.d.ts +4 -4
  445. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.d.ts.map +1 -1
  446. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.js +4 -4
  447. package/dist/field/lexical/plugins/SlashMenu/index.js +5 -5
  448. package/dist/field/lexical/plugins/SlashMenu/useMenuTriggerMatch.js +2 -2
  449. package/dist/field/lexical/plugins/handles/AddBlockHandlePlugin/index.js +10 -10
  450. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/getNodeCloseToPoint.d.ts +1 -1
  451. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/getNodeCloseToPoint.d.ts.map +1 -1
  452. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/getNodeCloseToPoint.js +6 -6
  453. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/highlightElemOriginalPosition.js +2 -2
  454. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/index.js +10 -10
  455. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/setTargetLine.js +4 -4
  456. package/dist/field/lexical/ui/ContentEditable.js +2 -2
  457. package/dist/field/lexical/utils/environment.js +2 -2
  458. package/dist/field/lexical/utils/nodeFormat.d.ts +1 -1
  459. package/dist/field/lexical/utils/nodeFormat.d.ts.map +1 -1
  460. package/dist/field/lexical/utils/nodeFormat.js +1 -1
  461. package/dist/field/lexical/utils/rect.d.ts +1 -1
  462. package/dist/field/lexical/utils/rect.d.ts.map +1 -1
  463. package/dist/field/lexical/utils/rect.js +2 -2
  464. package/dist/generateComponentMap.d.ts +1 -1
  465. package/dist/generateComponentMap.d.ts.map +1 -1
  466. package/dist/generateComponentMap.js +1 -1
  467. package/dist/generateSchemaMap.d.ts +1 -1
  468. package/dist/generateSchemaMap.d.ts.map +1 -1
  469. package/dist/generateSchemaMap.js +1 -1
  470. package/dist/index.d.ts +87 -87
  471. package/dist/index.d.ts.map +1 -1
  472. package/dist/index.js +86 -86
  473. package/dist/populate/populate.d.ts +1 -1
  474. package/dist/populate/populate.d.ts.map +1 -1
  475. package/dist/populate/populate.js +1 -1
  476. package/dist/populate/recurseNestedFields.d.ts +1 -1
  477. package/dist/populate/recurseNestedFields.d.ts.map +1 -1
  478. package/dist/populate/recurseNestedFields.js +1 -1
  479. package/dist/populate/richTextRelationshipPromise.d.ts +2 -2
  480. package/dist/populate/richTextRelationshipPromise.d.ts.map +1 -1
  481. package/dist/populate/richTextRelationshipPromise.js +1 -1
  482. package/dist/types.d.ts +1 -1
  483. package/dist/types.d.ts.map +1 -1
  484. package/dist/types.js +1 -1
  485. package/dist/useLexicalFeature.d.ts +1 -1
  486. package/dist/useLexicalFeature.d.ts.map +1 -1
  487. package/dist/useLexicalFeature.js +1 -1
  488. package/dist/validate/index.d.ts +2 -2
  489. package/dist/validate/index.d.ts.map +1 -1
  490. package/dist/validate/index.js +3 -3
  491. package/dist/validate/validateNodes.d.ts +1 -1
  492. package/dist/validate/validateNodes.d.ts.map +1 -1
  493. package/dist/validate/validateNodes.js +1 -1
  494. package/package.json +7 -7
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';
2
+ import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js';
3
3
  import { mergeRegister } from '@lexical/utils';
4
4
  import { $getSelection } from 'lexical';
5
5
  import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
@@ -245,4 +245,4 @@ export function DropDown({ Icon, buttonAriaLabel, buttonClassName, children, dis
245
245
  }, children), document.body));
246
246
  }
247
247
 
248
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvRmxvYXRpbmdTZWxlY3RUb29sYmFyL1Rvb2xiYXJEcm9wZG93bi9Ecm9wRG93bi50c3giXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnXG5pbXBvcnQgeyB1c2VMZXhpY2FsQ29tcG9zZXJDb250ZXh0IH0gZnJvbSAnQGxleGljYWwvcmVhY3QvTGV4aWNhbENvbXBvc2VyQ29udGV4dCdcbmltcG9ydCB7IG1lcmdlUmVnaXN0ZXIgfSBmcm9tICdAbGV4aWNhbC91dGlscydcbmltcG9ydCB7ICRnZXRTZWxlY3Rpb24gfSBmcm9tICdsZXhpY2FsJ1xuaW1wb3J0IHsgdHlwZSBSZWFjdE5vZGUsIHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGNyZWF0ZVBvcnRhbCB9IGZyb20gJ3JlYWN0LWRvbSdcblxuaW1wb3J0IHR5cGUgeyBGbG9hdGluZ1Rvb2xiYXJTZWN0aW9uRW50cnkgfSBmcm9tICcuLi90eXBlcydcblxuY29uc3QgYmFzZUNsYXNzID0gJ2Zsb2F0aW5nLXNlbGVjdC10b29sYmFyLXBvcHVwX19kcm9wZG93bi1pdGVtJ1xuXG5pbnRlcmZhY2UgRHJvcERvd25Db250ZXh0VHlwZSB7XG4gIHJlZ2lzdGVySXRlbTogKHJlZjogUmVhY3QuUmVmT2JqZWN0PEhUTUxCdXR0b25FbGVtZW50PikgPT4gdm9pZFxufVxuXG5jb25zdCBEcm9wRG93bkNvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0PERyb3BEb3duQ29udGV4dFR5cGUgfCBudWxsPihudWxsKVxuXG5leHBvcnQgZnVuY3Rpb24gRHJvcERvd25JdGVtKHtcbiAgY2hpbGRyZW4sXG4gIGVudHJ5LFxuICB0aXRsZSxcbn06IHtcbiAgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZVxuICBlbnRyeTogRmxvYXRpbmdUb29sYmFyU2VjdGlvbkVudHJ5XG4gIHRpdGxlPzogc3RyaW5nXG59KTogUmVhY3QuUmVhY3ROb2RlIHtcbiAgY29uc3QgW2VkaXRvcl0gPSB1c2VMZXhpY2FsQ29tcG9zZXJDb250ZXh0KClcbiAgY29uc3QgW2VuYWJsZWQsIHNldEVuYWJsZWRdID0gdXNlU3RhdGU8Ym9vbGVhbj4odHJ1ZSlcbiAgY29uc3QgW2FjdGl2ZSwgc2V0QWN0aXZlXSA9IHVzZVN0YXRlPGJvb2xlYW4+KGZhbHNlKVxuICBjb25zdCBbY2xhc3NOYW1lLCBzZXRDbGFzc05hbWVdID0gdXNlU3RhdGU8c3RyaW5nPihiYXNlQ2xhc3MpXG5cbiAgY29uc3QgdXBkYXRlU3RhdGVzID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGVkaXRvci5nZXRFZGl0b3JTdGF0ZSgpLnJlYWQoKCkgPT4ge1xuICAgICAgY29uc3Qgc2VsZWN0aW9uID0gJGdldFNlbGVjdGlvbigpXG4gICAgICBpZiAoZW50cnkuaXNBY3RpdmUpIHtcbiAgICAgICAgY29uc3QgaXNBY3RpdmUgPSBlbnRyeS5pc0FjdGl2ZSh7IGVkaXRvciwgc2VsZWN0aW9uIH0pXG4gICAgICAgIGlmIChhY3RpdmUgIT09IGlzQWN0aXZlKSB7XG4gICAgICAgICAgc2V0QWN0aXZlKGlzQWN0aXZlKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoZW50cnkuaXNFbmFibGVkKSB7XG4gICAgICAgIGNvbnN0IGlzRW5hYmxlZCA9IGVudHJ5LmlzRW5hYmxlZCh7IGVkaXRvciwgc2VsZWN0aW9uIH0pXG4gICAgICAgIGlmIChlbmFibGVkICE9PSBpc0VuYWJsZWQpIHtcbiAgICAgICAgICBzZXRFbmFibGVkKGlzRW5hYmxlZClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG4gIH0sIFthY3RpdmUsIGVkaXRvciwgZW5hYmxlZCwgZW50cnldKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgdXBkYXRlU3RhdGVzKClcbiAgfSwgW3VwZGF0ZVN0YXRlc10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgdXBkYXRlU3RhdGVzKVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgdXBkYXRlU3RhdGVzKVxuICAgIH1cbiAgfSwgW3VwZGF0ZVN0YXRlc10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICByZXR1cm4gbWVyZ2VSZWdpc3RlcihcbiAgICAgIGVkaXRvci5yZWdpc3RlclVwZGF0ZUxpc3RlbmVyKCgpID0+IHtcbiAgICAgICAgdXBkYXRlU3RhdGVzKClcbiAgICAgIH0pLFxuICAgIClcbiAgfSwgW2VkaXRvciwgdXBkYXRlU3RhdGVzXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldENsYXNzTmFtZShcbiAgICAgIFtcbiAgICAgICAgYmFzZUNsYXNzLFxuICAgICAgICBlbmFibGVkID09PSBmYWxzZSA/ICdkaXNhYmxlZCcgOiAnJyxcbiAgICAgICAgYWN0aXZlID8gJ2FjdGl2ZScgOiAnJyxcbiAgICAgICAgZW50cnk/LmtleSA/IGAke2Jhc2VDbGFzc30tJHtlbnRyeS5rZXl9YCA6ICcnLFxuICAgICAgXVxuICAgICAgICAuZmlsdGVyKEJvb2xlYW4pXG4gICAgICAgIC5qb2luKCcgJyksXG4gICAgKVxuICB9LCBbZW5hYmxlZCwgYWN0aXZlLCBjbGFzc05hbWUsIGVudHJ5LmtleV0pXG5cbiAgY29uc3QgcmVmID0gdXNlUmVmPEhUTUxCdXR0b25FbGVtZW50PihudWxsKVxuXG4gIGNvbnN0IGRyb3BEb3duQ29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoRHJvcERvd25Db250ZXh0KVxuXG4gIGlmIChkcm9wRG93bkNvbnRleHQgPT09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0Ryb3BEb3duSXRlbSBtdXN0IGJlIHVzZWQgd2l0aGluIGEgRHJvcERvd24nKVxuICB9XG5cbiAgY29uc3QgeyByZWdpc3Rlckl0ZW0gfSA9IGRyb3BEb3duQ29udGV4dFxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHJlZj8uY3VycmVudCAhPSBudWxsKSB7XG4gICAgICByZWdpc3Rlckl0ZW0ocmVmKVxuICAgIH1cbiAgfSwgW3JlZiwgcmVnaXN0ZXJJdGVtXSlcblxuICByZXR1cm4gKFxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxuICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICBpZiAoZW5hYmxlZCAhPT0gZmFsc2UpIHtcbiAgICAgICAgICBlbnRyeS5vbkNsaWNrKHtcbiAgICAgICAgICAgIGVkaXRvcixcbiAgICAgICAgICAgIGlzQWN0aXZlOiBhY3RpdmUsXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfX1cbiAgICAgIG9uTW91c2VEb3duPXsoZSkgPT4ge1xuICAgICAgICAvLyBUaGlzIGlzIHJlcXVpcmVkIGZvciBGaXJlZm94IGNvbXBhdGliaWxpdHkuIFdpdGhvdXQgaXQsIHRoZSBkcm9wZG93biB3aWxsIGRpc2FwcGVhciB3aXRob3V0IHRoZSBvbkNsaWNrIGJlaW5nIGNhbGxlZC5cbiAgICAgICAgLy8gVGhpcyBvbmx5IGhhcHBlbnMgaW4gRmlyZWZveC4gTXVzdCBiZSBzb21ldGhpbmcgYWJvdXQgaG93IEZpcmVmb3ggaGFuZGxlcyBmb2N1cyBldmVudHMgZGlmZmVyZW50bHkuXG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgICAgfX1cbiAgICAgIHJlZj17cmVmfVxuICAgICAgdGl0bGU9e3RpdGxlfVxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgPlxuICAgICAge2NoaWxkcmVufVxuICAgIDwvYnV0dG9uPlxuICApXG59XG5cbmZ1bmN0aW9uIERyb3BEb3duSXRlbXMoe1xuICBjaGlsZHJlbixcbiAgZHJvcERvd25SZWYsXG4gIG9uQ2xvc2UsXG59OiB7XG4gIGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGVcbiAgZHJvcERvd25SZWY6IFJlYWN0LlJlZjxIVE1MRGl2RWxlbWVudD5cbiAgb25DbG9zZTogKCkgPT4gdm9pZFxufSk6IEpTWC5FbGVtZW50IHtcbiAgY29uc3QgW2l0ZW1zLCBzZXRJdGVtc10gPSB1c2VTdGF0ZTxBcnJheTxSZWFjdC5SZWZPYmplY3Q8SFRNTEJ1dHRvbkVsZW1lbnQ+Pj4oKVxuICBjb25zdCBbaGlnaGxpZ2h0ZWRJdGVtLCBzZXRIaWdobGlnaHRlZEl0ZW1dID0gdXNlU3RhdGU8UmVhY3QuUmVmT2JqZWN0PEhUTUxCdXR0b25FbGVtZW50Pj4oKVxuXG4gIGNvbnN0IHJlZ2lzdGVySXRlbSA9IHVzZUNhbGxiYWNrKFxuICAgIChpdGVtUmVmOiBSZWFjdC5SZWZPYmplY3Q8SFRNTEJ1dHRvbkVsZW1lbnQ+KSA9PiB7XG4gICAgICBzZXRJdGVtcygocHJldikgPT4gKHByZXYgIT0gbnVsbCA/IFsuLi5wcmV2LCBpdGVtUmVmXSA6IFtpdGVtUmVmXSkpXG4gICAgfSxcbiAgICBbc2V0SXRlbXNdLFxuICApXG5cbiAgY29uc3QgaGFuZGxlS2V5RG93biA9IChldmVudDogUmVhY3QuS2V5Ym9hcmRFdmVudDxIVE1MRGl2RWxlbWVudD4pOiB2b2lkID0+IHtcbiAgICBpZiAoaXRlbXMgPT0gbnVsbCkgcmV0dXJuXG5cbiAgICBjb25zdCB7IGtleSB9ID0gZXZlbnRcblxuICAgIGlmIChbJ0Fycm93RG93bicsICdBcnJvd1VwJywgJ0VzY2FwZScsICdUYWInXS5pbmNsdWRlcyhrZXkpKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgfVxuXG4gICAgaWYgKGtleSA9PT0gJ0VzY2FwZScgfHwga2V5ID09PSAnVGFiJykge1xuICAgICAgb25DbG9zZSgpXG4gICAgfSBlbHNlIGlmIChrZXkgPT09ICdBcnJvd1VwJykge1xuICAgICAgc2V0SGlnaGxpZ2h0ZWRJdGVtKChwcmV2KSA9PiB7XG4gICAgICAgIGlmIChwcmV2ID09IG51bGwpIHJldHVybiBpdGVtc1swXVxuICAgICAgICBjb25zdCBpbmRleCA9IGl0ZW1zLmluZGV4T2YocHJldikgLSAxXG4gICAgICAgIHJldHVybiBpdGVtc1tpbmRleCA9PT0gLTEgPyBpdGVtcy5sZW5ndGggLSAxIDogaW5kZXhdXG4gICAgICB9KVxuICAgIH0gZWxzZSBpZiAoa2V5ID09PSAnQXJyb3dEb3duJykge1xuICAgICAgc2V0SGlnaGxpZ2h0ZWRJdGVtKChwcmV2KSA9PiB7XG4gICAgICAgIGlmIChwcmV2ID09IG51bGwpIHJldHVybiBpdGVtc1swXVxuICAgICAgICByZXR1cm4gaXRlbXNbaXRlbXMuaW5kZXhPZihwcmV2KSArIDFdXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGNvbnRleHRWYWx1ZSA9IHVzZU1lbW8oXG4gICAgKCkgPT4gKHtcbiAgICAgIHJlZ2lzdGVySXRlbSxcbiAgICB9KSxcbiAgICBbcmVnaXN0ZXJJdGVtXSxcbiAgKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGl0ZW1zICE9IG51bGwgJiYgaGlnaGxpZ2h0ZWRJdGVtID09IG51bGwpIHtcbiAgICAgIHNldEhpZ2hsaWdodGVkSXRlbShpdGVtc1swXSlcbiAgICB9XG5cbiAgICBpZiAoaGlnaGxpZ2h0ZWRJdGVtPy5jdXJyZW50ICE9IG51bGwpIHtcbiAgICAgIGhpZ2hsaWdodGVkSXRlbS5jdXJyZW50LmZvY3VzKClcbiAgICB9XG4gIH0sIFtpdGVtcywgaGlnaGxpZ2h0ZWRJdGVtXSlcblxuICByZXR1cm4gKFxuICAgIDxEcm9wRG93bkNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e2NvbnRleHRWYWx1ZX0+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzTmFtZT1cImZsb2F0aW5nLXNlbGVjdC10b29sYmFyLXBvcHVwX19kcm9wZG93bi1pdGVtc1wiXG4gICAgICAgIG9uS2V5RG93bj17aGFuZGxlS2V5RG93bn1cbiAgICAgICAgcmVmPXtkcm9wRG93blJlZn1cbiAgICAgID5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9kaXY+XG4gICAgPC9Ecm9wRG93bkNvbnRleHQuUHJvdmlkZXI+XG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIERyb3BEb3duKHtcbiAgSWNvbixcbiAgYnV0dG9uQXJpYUxhYmVsLFxuICBidXR0b25DbGFzc05hbWUsXG4gIGNoaWxkcmVuLFxuICBkaXNhYmxlZCA9IGZhbHNlLFxuICBzdG9wQ2xvc2VPbkNsaWNrU2VsZixcbn06IHtcbiAgSWNvbj86IFJlYWN0LkZDXG4gIGJ1dHRvbkFyaWFMYWJlbD86IHN0cmluZ1xuICBidXR0b25DbGFzc05hbWU6IHN0cmluZ1xuICBjaGlsZHJlbjogUmVhY3ROb2RlXG4gIGRpc2FibGVkPzogYm9vbGVhblxuICBzdG9wQ2xvc2VPbkNsaWNrU2VsZj86IGJvb2xlYW5cbn0pOiBSZWFjdC5SZWFjdE5vZGUge1xuICBjb25zdCBkcm9wRG93blJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgYnV0dG9uUmVmID0gdXNlUmVmPEhUTUxCdXR0b25FbGVtZW50PihudWxsKVxuICBjb25zdCBbc2hvd0Ryb3BEb3duLCBzZXRTaG93RHJvcERvd25dID0gdXNlU3RhdGUoZmFsc2UpXG5cbiAgY29uc3QgaGFuZGxlQ2xvc2UgPSAoKTogdm9pZCA9PiB7XG4gICAgc2V0U2hvd0Ryb3BEb3duKGZhbHNlKVxuICAgIGlmIChidXR0b25SZWY/LmN1cnJlbnQgIT0gbnVsbCkge1xuICAgICAgYnV0dG9uUmVmLmN1cnJlbnQuZm9jdXMoKVxuICAgIH1cbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgYnV0dG9uID0gYnV0dG9uUmVmLmN1cnJlbnRcbiAgICBjb25zdCBkcm9wRG93biA9IGRyb3BEb3duUmVmLmN1cnJlbnRcblxuICAgIGlmIChzaG93RHJvcERvd24gJiYgYnV0dG9uICE9PSBudWxsICYmIGRyb3BEb3duICE9PSBudWxsKSB7XG4gICAgICBjb25zdCB7IGxlZnQsIHRvcCB9ID0gYnV0dG9uLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gICAgICBjb25zdCBzY3JvbGxUb3BPZmZzZXQgPSB3aW5kb3cucGFnZVlPZmZzZXQgfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcFxuICAgICAgZHJvcERvd24uc3R5bGUudG9wID0gYCR7dG9wICsgc2Nyb2xsVG9wT2Zmc2V0ICsgYnV0dG9uLm9mZnNldEhlaWdodCArIDV9cHhgXG4gICAgICBkcm9wRG93bi5zdHlsZS5sZWZ0ID0gYCR7TWF0aC5taW4obGVmdCAtIDUsIHdpbmRvdy5pbm5lcldpZHRoIC0gZHJvcERvd24ub2Zmc2V0V2lkdGggLSAyMCl9cHhgXG4gICAgfVxuICB9LCBbZHJvcERvd25SZWYsIGJ1dHRvblJlZiwgc2hvd0Ryb3BEb3duXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGJ1dHRvbiA9IGJ1dHRvblJlZi5jdXJyZW50XG5cbiAgICBpZiAoYnV0dG9uICE9PSBudWxsICYmIHNob3dEcm9wRG93bikge1xuICAgICAgY29uc3QgaGFuZGxlID0gKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCA9PiB7XG4gICAgICAgIGNvbnN0IHsgdGFyZ2V0IH0gPSBldmVudFxuICAgICAgICBpZiAoc3RvcENsb3NlT25DbGlja1NlbGYgIT0gbnVsbCkge1xuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvcHJlZmVyLW9wdGlvbmFsLWNoYWluXG4gICAgICAgICAgaWYgKGRyb3BEb3duUmVmLmN1cnJlbnQgIT0gbnVsbCAmJiBkcm9wRG93blJlZi5jdXJyZW50LmNvbnRhaW5zKHRhcmdldCBhcyBOb2RlKSkge1xuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICghYnV0dG9uLmNvbnRhaW5zKHRhcmdldCBhcyBOb2RlKSkge1xuICAgICAgICAgIHNldFNob3dEcm9wRG93bihmYWxzZSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBoYW5kbGUpXG5cbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW2Ryb3BEb3duUmVmLCBidXR0b25SZWYsIHNob3dEcm9wRG93biwgc3RvcENsb3NlT25DbGlja1NlbGZdKVxuXG4gIHJldHVybiAoXG4gICAgPFJlYWN0LkZyYWdtZW50PlxuICAgICAgPGJ1dHRvblxuICAgICAgICBhcmlhLWxhYmVsPXtidXR0b25BcmlhTGFiZWx9XG4gICAgICAgIGNsYXNzTmFtZT17YnV0dG9uQ2xhc3NOYW1lICsgKHNob3dEcm9wRG93biA/ICcgYWN0aXZlJyA6ICcnKX1cbiAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICBvbkNsaWNrPXsoZXZlbnQpID0+IHtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgc2V0U2hvd0Ryb3BEb3duKCFzaG93RHJvcERvd24pXG4gICAgICAgIH19XG4gICAgICAgIG9uTW91c2VEb3duPXsoZSkgPT4ge1xuICAgICAgICAgIC8vIFRoaXMgZml4ZXMgYSBidWcgd2hlcmUgeW91IGFyZSB1bmFibGUgdG8gY2xpY2sgdGhlIGJ1dHRvbiBpZiB5b3UgYXJlIGluIGEgTkVTVEVEIGVkaXRvciAoZWRpdG9yIGluIGJsb2NrcyBmaWVsZCBpbiBlZGl0b3IpLlxuICAgICAgICAgIC8vIFRodXMgb25seSBoYXBwZW5zIGlmIHlvdSBjbGljayBvbiB0aGUgU1ZHIG9mIHRoZSBidXR0b24uIENsaWNraW5nIG9uIHRoZSBvdXRzaWRlIHdvcmtzLiBSZWxhdGVkIGlzc3VlOiBodHRwczovL2dpdGh1Yi5jb20vcGF5bG9hZGNtcy9wYXlsb2FkL2lzc3Vlcy80MDI1XG4gICAgICAgICAgLy8gVE9ETzogRmluZCBvdXQgd2h5IGV4YWN0bHkgaXQgaGFwcGVucyBhbmQgd2h5IGUucHJldmVudERlZmF1bHQoKSBvbiB0aGUgbW91c2VEb3duIGZpeGVzIGl0LiBXcml0ZSB0aGF0IGRvd24gaGVyZSwgb3IgcG90ZW50aWFsbHkgZml4IGEgcm9vdCBjYXVzZSwgaWYgdGhlcmUgaXMgYW55LlxuICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgICAgICB9fVxuICAgICAgICByZWY9e2J1dHRvblJlZn1cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICA+XG4gICAgICAgIDxJY29uIC8+XG4gICAgICAgIDxpIGNsYXNzTmFtZT1cImZsb2F0aW5nLXNlbGVjdC10b29sYmFyLXBvcHVwX19kcm9wZG93bi1jYXJldFwiIC8+XG4gICAgICA8L2J1dHRvbj5cblxuICAgICAge3Nob3dEcm9wRG93biAmJlxuICAgICAgICBjcmVhdGVQb3J0YWwoXG4gICAgICAgICAgPERyb3BEb3duSXRlbXMgZHJvcERvd25SZWY9e2Ryb3BEb3duUmVmfSBvbkNsb3NlPXtoYW5kbGVDbG9zZX0+XG4gICAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgICAgPC9Ecm9wRG93bkl0ZW1zPixcbiAgICAgICAgICBkb2N1bWVudC5ib2R5LFxuICAgICAgICApfVxuICAgIDwvUmVhY3QuRnJhZ21lbnQ+XG4gIClcbn1cbiJdLCJuYW1lcyI6WyJ1c2VMZXhpY2FsQ29tcG9zZXJDb250ZXh0IiwibWVyZ2VSZWdpc3RlciIsIiRnZXRTZWxlY3Rpb24iLCJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsIlJlYWN0IiwiY3JlYXRlUG9ydGFsIiwiYmFzZUNsYXNzIiwiRHJvcERvd25Db250ZXh0IiwiY3JlYXRlQ29udGV4dCIsIkRyb3BEb3duSXRlbSIsImNoaWxkcmVuIiwiZW50cnkiLCJ0aXRsZSIsImVkaXRvciIsImVuYWJsZWQiLCJzZXRFbmFibGVkIiwiYWN0aXZlIiwic2V0QWN0aXZlIiwiY2xhc3NOYW1lIiwic2V0Q2xhc3NOYW1lIiwidXBkYXRlU3RhdGVzIiwiZ2V0RWRpdG9yU3RhdGUiLCJyZWFkIiwic2VsZWN0aW9uIiwiaXNBY3RpdmUiLCJpc0VuYWJsZWQiLCJkb2N1bWVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwicmVnaXN0ZXJVcGRhdGVMaXN0ZW5lciIsImtleSIsImZpbHRlciIsIkJvb2xlYW4iLCJqb2luIiwicmVmIiwiZHJvcERvd25Db250ZXh0IiwidXNlQ29udGV4dCIsIkVycm9yIiwicmVnaXN0ZXJJdGVtIiwiY3VycmVudCIsImJ1dHRvbiIsIm9uQ2xpY2siLCJvbk1vdXNlRG93biIsImUiLCJwcmV2ZW50RGVmYXVsdCIsInR5cGUiLCJEcm9wRG93bkl0ZW1zIiwiZHJvcERvd25SZWYiLCJvbkNsb3NlIiwiaXRlbXMiLCJzZXRJdGVtcyIsImhpZ2hsaWdodGVkSXRlbSIsInNldEhpZ2hsaWdodGVkSXRlbSIsIml0ZW1SZWYiLCJwcmV2IiwiaGFuZGxlS2V5RG93biIsImV2ZW50IiwiaW5jbHVkZXMiLCJpbmRleCIsImluZGV4T2YiLCJsZW5ndGgiLCJjb250ZXh0VmFsdWUiLCJmb2N1cyIsIlByb3ZpZGVyIiwidmFsdWUiLCJkaXYiLCJvbktleURvd24iLCJEcm9wRG93biIsIkljb24iLCJidXR0b25BcmlhTGFiZWwiLCJidXR0b25DbGFzc05hbWUiLCJkaXNhYmxlZCIsInN0b3BDbG9zZU9uQ2xpY2tTZWxmIiwiYnV0dG9uUmVmIiwic2hvd0Ryb3BEb3duIiwic2V0U2hvd0Ryb3BEb3duIiwiaGFuZGxlQ2xvc2UiLCJkcm9wRG93biIsImxlZnQiLCJ0b3AiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJzY3JvbGxUb3BPZmZzZXQiLCJ3aW5kb3ciLCJwYWdlWU9mZnNldCIsImRvY3VtZW50RWxlbWVudCIsInNjcm9sbFRvcCIsInN0eWxlIiwib2Zmc2V0SGVpZ2h0IiwiTWF0aCIsIm1pbiIsImlubmVyV2lkdGgiLCJvZmZzZXRXaWR0aCIsImhhbmRsZSIsInRhcmdldCIsImNvbnRhaW5zIiwiRnJhZ21lbnQiLCJhcmlhLWxhYmVsIiwiaSIsImJvZHkiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0EsU0FBU0EseUJBQXlCLFFBQVEsd0NBQXVDO0FBQ2pGLFNBQVNDLGFBQWEsUUFBUSxpQkFBZ0I7QUFDOUMsU0FBU0MsYUFBYSxRQUFRLFVBQVM7QUFDdkMsU0FBeUJDLFdBQVcsRUFBRUMsU0FBUyxFQUFFQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxRQUFRLFFBQU87QUFDekYsT0FBT0MsV0FBVyxRQUFPO0FBQ3pCLFNBQVNDLFlBQVksUUFBUSxZQUFXO0FBSXhDLE1BQU1DLFlBQVk7QUFNbEIsTUFBTUMsZ0NBQWtCSCxNQUFNSSxhQUFhLENBQTZCO0FBRXhFLE9BQU8sU0FBU0MsYUFBYSxFQUMzQkMsUUFBUSxFQUNSQyxLQUFLLEVBQ0xDLEtBQUssRUFLTjtJQUNDLE1BQU0sQ0FBQ0MsT0FBTyxHQUFHakI7SUFDakIsTUFBTSxDQUFDa0IsU0FBU0MsV0FBVyxHQUFHWixTQUFrQjtJQUNoRCxNQUFNLENBQUNhLFFBQVFDLFVBQVUsR0FBR2QsU0FBa0I7SUFDOUMsTUFBTSxDQUFDZSxXQUFXQyxhQUFhLEdBQUdoQixTQUFpQkc7SUFFbkQsTUFBTWMsZUFBZXJCLFlBQVk7UUFDL0JjLE9BQU9RLGNBQWMsR0FBR0MsSUFBSSxDQUFDO1lBQzNCLE1BQU1DLFlBQVl6QjtZQUNsQixJQUFJYSxNQUFNYSxRQUFRLEVBQUU7Z0JBQ2xCLE1BQU1BLFdBQVdiLE1BQU1hLFFBQVEsQ0FBQztvQkFBRVg7b0JBQVFVO2dCQUFVO2dCQUNwRCxJQUFJUCxXQUFXUSxVQUFVO29CQUN2QlAsVUFBVU87Z0JBQ1o7WUFDRjtZQUNBLElBQUliLE1BQU1jLFNBQVMsRUFBRTtnQkFDbkIsTUFBTUEsWUFBWWQsTUFBTWMsU0FBUyxDQUFDO29CQUFFWjtvQkFBUVU7Z0JBQVU7Z0JBQ3RELElBQUlULFlBQVlXLFdBQVc7b0JBQ3pCVixXQUFXVTtn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
248
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvRmxvYXRpbmdTZWxlY3RUb29sYmFyL1Rvb2xiYXJEcm9wZG93bi9Ecm9wRG93bi50c3giXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnXG5pbXBvcnQgeyB1c2VMZXhpY2FsQ29tcG9zZXJDb250ZXh0IH0gZnJvbSAnQGxleGljYWwvcmVhY3QvTGV4aWNhbENvbXBvc2VyQ29udGV4dC5qcydcbmltcG9ydCB7IG1lcmdlUmVnaXN0ZXIgfSBmcm9tICdAbGV4aWNhbC91dGlscydcbmltcG9ydCB7ICRnZXRTZWxlY3Rpb24gfSBmcm9tICdsZXhpY2FsJ1xuaW1wb3J0IHsgdHlwZSBSZWFjdE5vZGUsIHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGNyZWF0ZVBvcnRhbCB9IGZyb20gJ3JlYWN0LWRvbSdcblxuaW1wb3J0IHR5cGUgeyBGbG9hdGluZ1Rvb2xiYXJTZWN0aW9uRW50cnkgfSBmcm9tICcuLi90eXBlcy5qcydcblxuY29uc3QgYmFzZUNsYXNzID0gJ2Zsb2F0aW5nLXNlbGVjdC10b29sYmFyLXBvcHVwX19kcm9wZG93bi1pdGVtJ1xuXG5pbnRlcmZhY2UgRHJvcERvd25Db250ZXh0VHlwZSB7XG4gIHJlZ2lzdGVySXRlbTogKHJlZjogUmVhY3QuUmVmT2JqZWN0PEhUTUxCdXR0b25FbGVtZW50PikgPT4gdm9pZFxufVxuXG5jb25zdCBEcm9wRG93bkNvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0PERyb3BEb3duQ29udGV4dFR5cGUgfCBudWxsPihudWxsKVxuXG5leHBvcnQgZnVuY3Rpb24gRHJvcERvd25JdGVtKHtcbiAgY2hpbGRyZW4sXG4gIGVudHJ5LFxuICB0aXRsZSxcbn06IHtcbiAgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZVxuICBlbnRyeTogRmxvYXRpbmdUb29sYmFyU2VjdGlvbkVudHJ5XG4gIHRpdGxlPzogc3RyaW5nXG59KTogUmVhY3QuUmVhY3ROb2RlIHtcbiAgY29uc3QgW2VkaXRvcl0gPSB1c2VMZXhpY2FsQ29tcG9zZXJDb250ZXh0KClcbiAgY29uc3QgW2VuYWJsZWQsIHNldEVuYWJsZWRdID0gdXNlU3RhdGU8Ym9vbGVhbj4odHJ1ZSlcbiAgY29uc3QgW2FjdGl2ZSwgc2V0QWN0aXZlXSA9IHVzZVN0YXRlPGJvb2xlYW4+KGZhbHNlKVxuICBjb25zdCBbY2xhc3NOYW1lLCBzZXRDbGFzc05hbWVdID0gdXNlU3RhdGU8c3RyaW5nPihiYXNlQ2xhc3MpXG5cbiAgY29uc3QgdXBkYXRlU3RhdGVzID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGVkaXRvci5nZXRFZGl0b3JTdGF0ZSgpLnJlYWQoKCkgPT4ge1xuICAgICAgY29uc3Qgc2VsZWN0aW9uID0gJGdldFNlbGVjdGlvbigpXG4gICAgICBpZiAoZW50cnkuaXNBY3RpdmUpIHtcbiAgICAgICAgY29uc3QgaXNBY3RpdmUgPSBlbnRyeS5pc0FjdGl2ZSh7IGVkaXRvciwgc2VsZWN0aW9uIH0pXG4gICAgICAgIGlmIChhY3RpdmUgIT09IGlzQWN0aXZlKSB7XG4gICAgICAgICAgc2V0QWN0aXZlKGlzQWN0aXZlKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoZW50cnkuaXNFbmFibGVkKSB7XG4gICAgICAgIGNvbnN0IGlzRW5hYmxlZCA9IGVudHJ5LmlzRW5hYmxlZCh7IGVkaXRvciwgc2VsZWN0aW9uIH0pXG4gICAgICAgIGlmIChlbmFibGVkICE9PSBpc0VuYWJsZWQpIHtcbiAgICAgICAgICBzZXRFbmFibGVkKGlzRW5hYmxlZClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG4gIH0sIFthY3RpdmUsIGVkaXRvciwgZW5hYmxlZCwgZW50cnldKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgdXBkYXRlU3RhdGVzKClcbiAgfSwgW3VwZGF0ZVN0YXRlc10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgdXBkYXRlU3RhdGVzKVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgdXBkYXRlU3RhdGVzKVxuICAgIH1cbiAgfSwgW3VwZGF0ZVN0YXRlc10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICByZXR1cm4gbWVyZ2VSZWdpc3RlcihcbiAgICAgIGVkaXRvci5yZWdpc3RlclVwZGF0ZUxpc3RlbmVyKCgpID0+IHtcbiAgICAgICAgdXBkYXRlU3RhdGVzKClcbiAgICAgIH0pLFxuICAgIClcbiAgfSwgW2VkaXRvciwgdXBkYXRlU3RhdGVzXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldENsYXNzTmFtZShcbiAgICAgIFtcbiAgICAgICAgYmFzZUNsYXNzLFxuICAgICAgICBlbmFibGVkID09PSBmYWxzZSA/ICdkaXNhYmxlZCcgOiAnJyxcbiAgICAgICAgYWN0aXZlID8gJ2FjdGl2ZScgOiAnJyxcbiAgICAgICAgZW50cnk/LmtleSA/IGAke2Jhc2VDbGFzc30tJHtlbnRyeS5rZXl9YCA6ICcnLFxuICAgICAgXVxuICAgICAgICAuZmlsdGVyKEJvb2xlYW4pXG4gICAgICAgIC5qb2luKCcgJyksXG4gICAgKVxuICB9LCBbZW5hYmxlZCwgYWN0aXZlLCBjbGFzc05hbWUsIGVudHJ5LmtleV0pXG5cbiAgY29uc3QgcmVmID0gdXNlUmVmPEhUTUxCdXR0b25FbGVtZW50PihudWxsKVxuXG4gIGNvbnN0IGRyb3BEb3duQ29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoRHJvcERvd25Db250ZXh0KVxuXG4gIGlmIChkcm9wRG93bkNvbnRleHQgPT09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0Ryb3BEb3duSXRlbSBtdXN0IGJlIHVzZWQgd2l0aGluIGEgRHJvcERvd24nKVxuICB9XG5cbiAgY29uc3QgeyByZWdpc3Rlckl0ZW0gfSA9IGRyb3BEb3duQ29udGV4dFxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHJlZj8uY3VycmVudCAhPSBudWxsKSB7XG4gICAgICByZWdpc3Rlckl0ZW0ocmVmKVxuICAgIH1cbiAgfSwgW3JlZiwgcmVnaXN0ZXJJdGVtXSlcblxuICByZXR1cm4gKFxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxuICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICBpZiAoZW5hYmxlZCAhPT0gZmFsc2UpIHtcbiAgICAgICAgICBlbnRyeS5vbkNsaWNrKHtcbiAgICAgICAgICAgIGVkaXRvcixcbiAgICAgICAgICAgIGlzQWN0aXZlOiBhY3RpdmUsXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfX1cbiAgICAgIG9uTW91c2VEb3duPXsoZSkgPT4ge1xuICAgICAgICAvLyBUaGlzIGlzIHJlcXVpcmVkIGZvciBGaXJlZm94IGNvbXBhdGliaWxpdHkuIFdpdGhvdXQgaXQsIHRoZSBkcm9wZG93biB3aWxsIGRpc2FwcGVhciB3aXRob3V0IHRoZSBvbkNsaWNrIGJlaW5nIGNhbGxlZC5cbiAgICAgICAgLy8gVGhpcyBvbmx5IGhhcHBlbnMgaW4gRmlyZWZveC4gTXVzdCBiZSBzb21ldGhpbmcgYWJvdXQgaG93IEZpcmVmb3ggaGFuZGxlcyBmb2N1cyBldmVudHMgZGlmZmVyZW50bHkuXG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgICAgfX1cbiAgICAgIHJlZj17cmVmfVxuICAgICAgdGl0bGU9e3RpdGxlfVxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgPlxuICAgICAge2NoaWxkcmVufVxuICAgIDwvYnV0dG9uPlxuICApXG59XG5cbmZ1bmN0aW9uIERyb3BEb3duSXRlbXMoe1xuICBjaGlsZHJlbixcbiAgZHJvcERvd25SZWYsXG4gIG9uQ2xvc2UsXG59OiB7XG4gIGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGVcbiAgZHJvcERvd25SZWY6IFJlYWN0LlJlZjxIVE1MRGl2RWxlbWVudD5cbiAgb25DbG9zZTogKCkgPT4gdm9pZFxufSk6IEpTWC5FbGVtZW50IHtcbiAgY29uc3QgW2l0ZW1zLCBzZXRJdGVtc10gPSB1c2VTdGF0ZTxBcnJheTxSZWFjdC5SZWZPYmplY3Q8SFRNTEJ1dHRvbkVsZW1lbnQ+Pj4oKVxuICBjb25zdCBbaGlnaGxpZ2h0ZWRJdGVtLCBzZXRIaWdobGlnaHRlZEl0ZW1dID0gdXNlU3RhdGU8UmVhY3QuUmVmT2JqZWN0PEhUTUxCdXR0b25FbGVtZW50Pj4oKVxuXG4gIGNvbnN0IHJlZ2lzdGVySXRlbSA9IHVzZUNhbGxiYWNrKFxuICAgIChpdGVtUmVmOiBSZWFjdC5SZWZPYmplY3Q8SFRNTEJ1dHRvbkVsZW1lbnQ+KSA9PiB7XG4gICAgICBzZXRJdGVtcygocHJldikgPT4gKHByZXYgIT0gbnVsbCA/IFsuLi5wcmV2LCBpdGVtUmVmXSA6IFtpdGVtUmVmXSkpXG4gICAgfSxcbiAgICBbc2V0SXRlbXNdLFxuICApXG5cbiAgY29uc3QgaGFuZGxlS2V5RG93biA9IChldmVudDogUmVhY3QuS2V5Ym9hcmRFdmVudDxIVE1MRGl2RWxlbWVudD4pOiB2b2lkID0+IHtcbiAgICBpZiAoaXRlbXMgPT0gbnVsbCkgcmV0dXJuXG5cbiAgICBjb25zdCB7IGtleSB9ID0gZXZlbnRcblxuICAgIGlmIChbJ0Fycm93RG93bicsICdBcnJvd1VwJywgJ0VzY2FwZScsICdUYWInXS5pbmNsdWRlcyhrZXkpKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgfVxuXG4gICAgaWYgKGtleSA9PT0gJ0VzY2FwZScgfHwga2V5ID09PSAnVGFiJykge1xuICAgICAgb25DbG9zZSgpXG4gICAgfSBlbHNlIGlmIChrZXkgPT09ICdBcnJvd1VwJykge1xuICAgICAgc2V0SGlnaGxpZ2h0ZWRJdGVtKChwcmV2KSA9PiB7XG4gICAgICAgIGlmIChwcmV2ID09IG51bGwpIHJldHVybiBpdGVtc1swXVxuICAgICAgICBjb25zdCBpbmRleCA9IGl0ZW1zLmluZGV4T2YocHJldikgLSAxXG4gICAgICAgIHJldHVybiBpdGVtc1tpbmRleCA9PT0gLTEgPyBpdGVtcy5sZW5ndGggLSAxIDogaW5kZXhdXG4gICAgICB9KVxuICAgIH0gZWxzZSBpZiAoa2V5ID09PSAnQXJyb3dEb3duJykge1xuICAgICAgc2V0SGlnaGxpZ2h0ZWRJdGVtKChwcmV2KSA9PiB7XG4gICAgICAgIGlmIChwcmV2ID09IG51bGwpIHJldHVybiBpdGVtc1swXVxuICAgICAgICByZXR1cm4gaXRlbXNbaXRlbXMuaW5kZXhPZihwcmV2KSArIDFdXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGNvbnRleHRWYWx1ZSA9IHVzZU1lbW8oXG4gICAgKCkgPT4gKHtcbiAgICAgIHJlZ2lzdGVySXRlbSxcbiAgICB9KSxcbiAgICBbcmVnaXN0ZXJJdGVtXSxcbiAgKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGl0ZW1zICE9IG51bGwgJiYgaGlnaGxpZ2h0ZWRJdGVtID09IG51bGwpIHtcbiAgICAgIHNldEhpZ2hsaWdodGVkSXRlbShpdGVtc1swXSlcbiAgICB9XG5cbiAgICBpZiAoaGlnaGxpZ2h0ZWRJdGVtPy5jdXJyZW50ICE9IG51bGwpIHtcbiAgICAgIGhpZ2hsaWdodGVkSXRlbS5jdXJyZW50LmZvY3VzKClcbiAgICB9XG4gIH0sIFtpdGVtcywgaGlnaGxpZ2h0ZWRJdGVtXSlcblxuICByZXR1cm4gKFxuICAgIDxEcm9wRG93bkNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e2NvbnRleHRWYWx1ZX0+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzTmFtZT1cImZsb2F0aW5nLXNlbGVjdC10b29sYmFyLXBvcHVwX19kcm9wZG93bi1pdGVtc1wiXG4gICAgICAgIG9uS2V5RG93bj17aGFuZGxlS2V5RG93bn1cbiAgICAgICAgcmVmPXtkcm9wRG93blJlZn1cbiAgICAgID5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9kaXY+XG4gICAgPC9Ecm9wRG93bkNvbnRleHQuUHJvdmlkZXI+XG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIERyb3BEb3duKHtcbiAgSWNvbixcbiAgYnV0dG9uQXJpYUxhYmVsLFxuICBidXR0b25DbGFzc05hbWUsXG4gIGNoaWxkcmVuLFxuICBkaXNhYmxlZCA9IGZhbHNlLFxuICBzdG9wQ2xvc2VPbkNsaWNrU2VsZixcbn06IHtcbiAgSWNvbj86IFJlYWN0LkZDXG4gIGJ1dHRvbkFyaWFMYWJlbD86IHN0cmluZ1xuICBidXR0b25DbGFzc05hbWU6IHN0cmluZ1xuICBjaGlsZHJlbjogUmVhY3ROb2RlXG4gIGRpc2FibGVkPzogYm9vbGVhblxuICBzdG9wQ2xvc2VPbkNsaWNrU2VsZj86IGJvb2xlYW5cbn0pOiBSZWFjdC5SZWFjdE5vZGUge1xuICBjb25zdCBkcm9wRG93blJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgYnV0dG9uUmVmID0gdXNlUmVmPEhUTUxCdXR0b25FbGVtZW50PihudWxsKVxuICBjb25zdCBbc2hvd0Ryb3BEb3duLCBzZXRTaG93RHJvcERvd25dID0gdXNlU3RhdGUoZmFsc2UpXG5cbiAgY29uc3QgaGFuZGxlQ2xvc2UgPSAoKTogdm9pZCA9PiB7XG4gICAgc2V0U2hvd0Ryb3BEb3duKGZhbHNlKVxuICAgIGlmIChidXR0b25SZWY/LmN1cnJlbnQgIT0gbnVsbCkge1xuICAgICAgYnV0dG9uUmVmLmN1cnJlbnQuZm9jdXMoKVxuICAgIH1cbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgYnV0dG9uID0gYnV0dG9uUmVmLmN1cnJlbnRcbiAgICBjb25zdCBkcm9wRG93biA9IGRyb3BEb3duUmVmLmN1cnJlbnRcblxuICAgIGlmIChzaG93RHJvcERvd24gJiYgYnV0dG9uICE9PSBudWxsICYmIGRyb3BEb3duICE9PSBudWxsKSB7XG4gICAgICBjb25zdCB7IGxlZnQsIHRvcCB9ID0gYnV0dG9uLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gICAgICBjb25zdCBzY3JvbGxUb3BPZmZzZXQgPSB3aW5kb3cucGFnZVlPZmZzZXQgfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcFxuICAgICAgZHJvcERvd24uc3R5bGUudG9wID0gYCR7dG9wICsgc2Nyb2xsVG9wT2Zmc2V0ICsgYnV0dG9uLm9mZnNldEhlaWdodCArIDV9cHhgXG4gICAgICBkcm9wRG93bi5zdHlsZS5sZWZ0ID0gYCR7TWF0aC5taW4obGVmdCAtIDUsIHdpbmRvdy5pbm5lcldpZHRoIC0gZHJvcERvd24ub2Zmc2V0V2lkdGggLSAyMCl9cHhgXG4gICAgfVxuICB9LCBbZHJvcERvd25SZWYsIGJ1dHRvblJlZiwgc2hvd0Ryb3BEb3duXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGJ1dHRvbiA9IGJ1dHRvblJlZi5jdXJyZW50XG5cbiAgICBpZiAoYnV0dG9uICE9PSBudWxsICYmIHNob3dEcm9wRG93bikge1xuICAgICAgY29uc3QgaGFuZGxlID0gKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCA9PiB7XG4gICAgICAgIGNvbnN0IHsgdGFyZ2V0IH0gPSBldmVudFxuICAgICAgICBpZiAoc3RvcENsb3NlT25DbGlja1NlbGYgIT0gbnVsbCkge1xuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvcHJlZmVyLW9wdGlvbmFsLWNoYWluXG4gICAgICAgICAgaWYgKGRyb3BEb3duUmVmLmN1cnJlbnQgIT0gbnVsbCAmJiBkcm9wRG93blJlZi5jdXJyZW50LmNvbnRhaW5zKHRhcmdldCBhcyBOb2RlKSkge1xuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICghYnV0dG9uLmNvbnRhaW5zKHRhcmdldCBhcyBOb2RlKSkge1xuICAgICAgICAgIHNldFNob3dEcm9wRG93bihmYWxzZSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBoYW5kbGUpXG5cbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW2Ryb3BEb3duUmVmLCBidXR0b25SZWYsIHNob3dEcm9wRG93biwgc3RvcENsb3NlT25DbGlja1NlbGZdKVxuXG4gIHJldHVybiAoXG4gICAgPFJlYWN0LkZyYWdtZW50PlxuICAgICAgPGJ1dHRvblxuICAgICAgICBhcmlhLWxhYmVsPXtidXR0b25BcmlhTGFiZWx9XG4gICAgICAgIGNsYXNzTmFtZT17YnV0dG9uQ2xhc3NOYW1lICsgKHNob3dEcm9wRG93biA/ICcgYWN0aXZlJyA6ICcnKX1cbiAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICBvbkNsaWNrPXsoZXZlbnQpID0+IHtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgc2V0U2hvd0Ryb3BEb3duKCFzaG93RHJvcERvd24pXG4gICAgICAgIH19XG4gICAgICAgIG9uTW91c2VEb3duPXsoZSkgPT4ge1xuICAgICAgICAgIC8vIFRoaXMgZml4ZXMgYSBidWcgd2hlcmUgeW91IGFyZSB1bmFibGUgdG8gY2xpY2sgdGhlIGJ1dHRvbiBpZiB5b3UgYXJlIGluIGEgTkVTVEVEIGVkaXRvciAoZWRpdG9yIGluIGJsb2NrcyBmaWVsZCBpbiBlZGl0b3IpLlxuICAgICAgICAgIC8vIFRodXMgb25seSBoYXBwZW5zIGlmIHlvdSBjbGljayBvbiB0aGUgU1ZHIG9mIHRoZSBidXR0b24uIENsaWNraW5nIG9uIHRoZSBvdXRzaWRlIHdvcmtzLiBSZWxhdGVkIGlzc3VlOiBodHRwczovL2dpdGh1Yi5jb20vcGF5bG9hZGNtcy9wYXlsb2FkL2lzc3Vlcy80MDI1XG4gICAgICAgICAgLy8gVE9ETzogRmluZCBvdXQgd2h5IGV4YWN0bHkgaXQgaGFwcGVucyBhbmQgd2h5IGUucHJldmVudERlZmF1bHQoKSBvbiB0aGUgbW91c2VEb3duIGZpeGVzIGl0LiBXcml0ZSB0aGF0IGRvd24gaGVyZSwgb3IgcG90ZW50aWFsbHkgZml4IGEgcm9vdCBjYXVzZSwgaWYgdGhlcmUgaXMgYW55LlxuICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgICAgICB9fVxuICAgICAgICByZWY9e2J1dHRvblJlZn1cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICA+XG4gICAgICAgIDxJY29uIC8+XG4gICAgICAgIDxpIGNsYXNzTmFtZT1cImZsb2F0aW5nLXNlbGVjdC10b29sYmFyLXBvcHVwX19kcm9wZG93bi1jYXJldFwiIC8+XG4gICAgICA8L2J1dHRvbj5cblxuICAgICAge3Nob3dEcm9wRG93biAmJlxuICAgICAgICBjcmVhdGVQb3J0YWwoXG4gICAgICAgICAgPERyb3BEb3duSXRlbXMgZHJvcERvd25SZWY9e2Ryb3BEb3duUmVmfSBvbkNsb3NlPXtoYW5kbGVDbG9zZX0+XG4gICAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgICAgPC9Ecm9wRG93bkl0ZW1zPixcbiAgICAgICAgICBkb2N1bWVudC5ib2R5LFxuICAgICAgICApfVxuICAgIDwvUmVhY3QuRnJhZ21lbnQ+XG4gIClcbn1cbiJdLCJuYW1lcyI6WyJ1c2VMZXhpY2FsQ29tcG9zZXJDb250ZXh0IiwibWVyZ2VSZWdpc3RlciIsIiRnZXRTZWxlY3Rpb24iLCJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsIlJlYWN0IiwiY3JlYXRlUG9ydGFsIiwiYmFzZUNsYXNzIiwiRHJvcERvd25Db250ZXh0IiwiY3JlYXRlQ29udGV4dCIsIkRyb3BEb3duSXRlbSIsImNoaWxkcmVuIiwiZW50cnkiLCJ0aXRsZSIsImVkaXRvciIsImVuYWJsZWQiLCJzZXRFbmFibGVkIiwiYWN0aXZlIiwic2V0QWN0aXZlIiwiY2xhc3NOYW1lIiwic2V0Q2xhc3NOYW1lIiwidXBkYXRlU3RhdGVzIiwiZ2V0RWRpdG9yU3RhdGUiLCJyZWFkIiwic2VsZWN0aW9uIiwiaXNBY3RpdmUiLCJpc0VuYWJsZWQiLCJkb2N1bWVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwicmVnaXN0ZXJVcGRhdGVMaXN0ZW5lciIsImtleSIsImZpbHRlciIsIkJvb2xlYW4iLCJqb2luIiwicmVmIiwiZHJvcERvd25Db250ZXh0IiwidXNlQ29udGV4dCIsIkVycm9yIiwicmVnaXN0ZXJJdGVtIiwiY3VycmVudCIsImJ1dHRvbiIsIm9uQ2xpY2siLCJvbk1vdXNlRG93biIsImUiLCJwcmV2ZW50RGVmYXVsdCIsInR5cGUiLCJEcm9wRG93bkl0ZW1zIiwiZHJvcERvd25SZWYiLCJvbkNsb3NlIiwiaXRlbXMiLCJzZXRJdGVtcyIsImhpZ2hsaWdodGVkSXRlbSIsInNldEhpZ2hsaWdodGVkSXRlbSIsIml0ZW1SZWYiLCJwcmV2IiwiaGFuZGxlS2V5RG93biIsImV2ZW50IiwiaW5jbHVkZXMiLCJpbmRleCIsImluZGV4T2YiLCJsZW5ndGgiLCJjb250ZXh0VmFsdWUiLCJmb2N1cyIsIlByb3ZpZGVyIiwidmFsdWUiLCJkaXYiLCJvbktleURvd24iLCJEcm9wRG93biIsIkljb24iLCJidXR0b25BcmlhTGFiZWwiLCJidXR0b25DbGFzc05hbWUiLCJkaXNhYmxlZCIsInN0b3BDbG9zZU9uQ2xpY2tTZWxmIiwiYnV0dG9uUmVmIiwic2hvd0Ryb3BEb3duIiwic2V0U2hvd0Ryb3BEb3duIiwiaGFuZGxlQ2xvc2UiLCJkcm9wRG93biIsImxlZnQiLCJ0b3AiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJzY3JvbGxUb3BPZmZzZXQiLCJ3aW5kb3ciLCJwYWdlWU9mZnNldCIsImRvY3VtZW50RWxlbWVudCIsInNjcm9sbFRvcCIsInN0eWxlIiwib2Zmc2V0SGVpZ2h0IiwiTWF0aCIsIm1pbiIsImlubmVyV2lkdGgiLCJvZmZzZXRXaWR0aCIsImhhbmRsZSIsInRhcmdldCIsImNvbnRhaW5zIiwiRnJhZ21lbnQiLCJhcmlhLWxhYmVsIiwiaSIsImJvZHkiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0EsU0FBU0EseUJBQXlCLFFBQVEsMkNBQTBDO0FBQ3BGLFNBQVNDLGFBQWEsUUFBUSxpQkFBZ0I7QUFDOUMsU0FBU0MsYUFBYSxRQUFRLFVBQVM7QUFDdkMsU0FBeUJDLFdBQVcsRUFBRUMsU0FBUyxFQUFFQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxRQUFRLFFBQU87QUFDekYsT0FBT0MsV0FBVyxRQUFPO0FBQ3pCLFNBQVNDLFlBQVksUUFBUSxZQUFXO0FBSXhDLE1BQU1DLFlBQVk7QUFNbEIsTUFBTUMsZ0NBQWtCSCxNQUFNSSxhQUFhLENBQTZCO0FBRXhFLE9BQU8sU0FBU0MsYUFBYSxFQUMzQkMsUUFBUSxFQUNSQyxLQUFLLEVBQ0xDLEtBQUssRUFLTjtJQUNDLE1BQU0sQ0FBQ0MsT0FBTyxHQUFHakI7SUFDakIsTUFBTSxDQUFDa0IsU0FBU0MsV0FBVyxHQUFHWixTQUFrQjtJQUNoRCxNQUFNLENBQUNhLFFBQVFDLFVBQVUsR0FBR2QsU0FBa0I7SUFDOUMsTUFBTSxDQUFDZSxXQUFXQyxhQUFhLEdBQUdoQixTQUFpQkc7SUFFbkQsTUFBTWMsZUFBZXJCLFlBQVk7UUFDL0JjLE9BQU9RLGNBQWMsR0FBR0MsSUFBSSxDQUFDO1lBQzNCLE1BQU1DLFlBQVl6QjtZQUNsQixJQUFJYSxNQUFNYSxRQUFRLEVBQUU7Z0JBQ2xCLE1BQU1BLFdBQVdiLE1BQU1hLFFBQVEsQ0FBQztvQkFBRVg7b0JBQVFVO2dCQUFVO2dCQUNwRCxJQUFJUCxXQUFXUSxVQUFVO29CQUN2QlAsVUFBVU87Z0JBQ1o7WUFDRjtZQUNBLElBQUliLE1BQU1jLFNBQVMsRUFBRTtnQkFDbkIsTUFBTUEsWUFBWWQsTUFBTWMsU0FBUyxDQUFDO29CQUFFWjtvQkFBUVU7Z0JBQVU7Z0JBQ3RELElBQUlULFlBQVlXLFdBQVc7b0JBQ3pCVixX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
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import type { LexicalEditor } from 'lexical';
3
- import type { FloatingToolbarSectionEntry } from '../types';
3
+ import type { FloatingToolbarSectionEntry } from '../types.js';
4
4
  import './index.scss';
5
5
  export declare const ToolbarEntry: ({ anchorElem, editor, entry, }: {
6
6
  anchorElem: HTMLElement;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAE5C,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,UAAU,CAAA;AAG3D,OAAO,cAAc,CAAA;AAErB,eAAO,MAAM,YAAY;gBAKX,WAAW;YACf,aAAa;WACd,2BAA2B;uBAgBnC,CAAA;AAED,eAAO,MAAM,eAAe;WAQnB,MAAM,EAAE;gBACH,WAAW;iBACV,MAAM,EAAE;YACb,aAAa;aACZ,2BAA2B,EAAE;gBAC1B,MAAM;uBAmBnB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAE5C,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAA;AAG9D,OAAO,cAAc,CAAA;AAErB,eAAO,MAAM,YAAY;gBAKX,WAAW;YACf,aAAa;WACd,2BAA2B;uBAgBnC,CAAA;AAED,eAAO,MAAM,eAAe;WAQnB,MAAM,EAAE;gBACH,WAAW;iBACV,MAAM,EAAE;YACb,aAAa;aACZ,2BAA2B,EAAE;gBAC1B,MAAM;uBAmBnB,CAAA"}
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
  import React from 'react';
3
3
  const baseClass = 'floating-select-toolbar-popup__dropdown';
4
- import { DropDown, DropDownItem } from './DropDown';
4
+ import { DropDown, DropDownItem } from './DropDown.js';
5
5
  import './index.scss';
6
6
  export const ToolbarEntry = ({ anchorElem, editor, entry })=>{
7
7
  if (entry.Component) {
@@ -39,4 +39,4 @@ export const ToolbarDropdown = ({ Icon, anchorElem, classNames, editor, entries,
39
39
  }));
40
40
  };
41
41
 
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvRmxvYXRpbmdTZWxlY3RUb29sYmFyL1Rvb2xiYXJEcm9wZG93bi9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmNvbnN0IGJhc2VDbGFzcyA9ICdmbG9hdGluZy1zZWxlY3QtdG9vbGJhci1wb3B1cF9fZHJvcGRvd24nXG5cbmltcG9ydCB0eXBlIHsgTGV4aWNhbEVkaXRvciB9IGZyb20gJ2xleGljYWwnXG5cbmltcG9ydCB0eXBlIHsgRmxvYXRpbmdUb29sYmFyU2VjdGlvbkVudHJ5IH0gZnJvbSAnLi4vdHlwZXMnXG5cbmltcG9ydCB7IERyb3BEb3duLCBEcm9wRG93bkl0ZW0gfSBmcm9tICcuL0Ryb3BEb3duJ1xuaW1wb3J0ICcuL2luZGV4LnNjc3MnXG5cbmV4cG9ydCBjb25zdCBUb29sYmFyRW50cnkgPSAoe1xuICBhbmNob3JFbGVtLFxuICBlZGl0b3IsXG4gIGVudHJ5LFxufToge1xuICBhbmNob3JFbGVtOiBIVE1MRWxlbWVudFxuICBlZGl0b3I6IExleGljYWxFZGl0b3JcbiAgZW50cnk6IEZsb2F0aW5nVG9vbGJhclNlY3Rpb25FbnRyeVxufSkgPT4ge1xuICBpZiAoZW50cnkuQ29tcG9uZW50KSB7XG4gICAgcmV0dXJuIChcbiAgICAgIGVudHJ5Py5Db21wb25lbnQgJiYgKFxuICAgICAgICA8ZW50cnkuQ29tcG9uZW50IGFuY2hvckVsZW09e2FuY2hvckVsZW19IGVkaXRvcj17ZWRpdG9yfSBlbnRyeT17ZW50cnl9IGtleT17ZW50cnkua2V5fSAvPlxuICAgICAgKVxuICAgIClcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPERyb3BEb3duSXRlbSBlbnRyeT17ZW50cnl9IGtleT17ZW50cnkua2V5fT5cbiAgICAgIHtlbnRyeT8uQ2hpbGRDb21wb25lbnQgJiYgPGVudHJ5LkNoaWxkQ29tcG9uZW50IC8+fVxuICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dFwiPntlbnRyeS5sYWJlbH08L3NwYW4+XG4gICAgPC9Ecm9wRG93bkl0ZW0+XG4gIClcbn1cblxuZXhwb3J0IGNvbnN0IFRvb2xiYXJEcm9wZG93biA9ICh7XG4gIEljb24sXG4gIGFuY2hvckVsZW0sXG4gIGNsYXNzTmFtZXMsXG4gIGVkaXRvcixcbiAgZW50cmllcyxcbiAgc2VjdGlvbktleSxcbn06IHtcbiAgSWNvbj86IFJlYWN0LkZDXG4gIGFuY2hvckVsZW06IEhUTUxFbGVtZW50XG4gIGNsYXNzTmFtZXM/OiBzdHJpbmdbXVxuICBlZGl0b3I6IExleGljYWxFZGl0b3JcbiAgZW50cmllczogRmxvYXRpbmdUb29sYmFyU2VjdGlvbkVudHJ5W11cbiAgc2VjdGlvbktleTogc3RyaW5nXG59KSA9PiB7XG4gIHJldHVybiAoXG4gICAgPERyb3BEb3duXG4gICAgICBJY29uPXtJY29ufVxuICAgICAgYnV0dG9uQXJpYUxhYmVsPXtgJHtzZWN0aW9uS2V5fSBkcm9wZG93bmB9XG4gICAgICBidXR0b25DbGFzc05hbWU9e1tiYXNlQ2xhc3MsIGAke2Jhc2VDbGFzc30tJHtzZWN0aW9uS2V5fWAsIC4uLihjbGFzc05hbWVzIHx8IFtdKV1cbiAgICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgICAuam9pbignICcpfVxuICAgICAga2V5PXtzZWN0aW9uS2V5fVxuICAgID5cbiAgICAgIHtlbnRyaWVzLmxlbmd0aCAmJlxuICAgICAgICBlbnRyaWVzLm1hcCgoZW50cnkpID0+IHtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPFRvb2xiYXJFbnRyeSBhbmNob3JFbGVtPXthbmNob3JFbGVtfSBlZGl0b3I9e2VkaXRvcn0gZW50cnk9e2VudHJ5fSBrZXk9e2VudHJ5LmtleX0gLz5cbiAgICAgICAgICApXG4gICAgICAgIH0pfVxuICAgIDwvRHJvcERvd24+XG4gIClcbn1cbiJdLCJuYW1lcyI6WyJSZWFjdCIsImJhc2VDbGFzcyIsIkRyb3BEb3duIiwiRHJvcERvd25JdGVtIiwiVG9vbGJhckVudHJ5IiwiYW5jaG9yRWxlbSIsImVkaXRvciIsImVudHJ5IiwiQ29tcG9uZW50Iiwia2V5IiwiQ2hpbGRDb21wb25lbnQiLCJzcGFuIiwiY2xhc3NOYW1lIiwibGFiZWwiLCJUb29sYmFyRHJvcGRvd24iLCJJY29uIiwiY2xhc3NOYW1lcyIsImVudHJpZXMiLCJzZWN0aW9uS2V5IiwiYnV0dG9uQXJpYUxhYmVsIiwiYnV0dG9uQ2xhc3NOYW1lIiwiZmlsdGVyIiwiQm9vbGVhbiIsImpvaW4iLCJsZW5ndGgiLCJtYXAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0EsT0FBT0EsV0FBVyxRQUFPO0FBRXpCLE1BQU1DLFlBQVk7QUFNbEIsU0FBU0MsUUFBUSxFQUFFQyxZQUFZLFFBQVEsYUFBWTtBQUNuRCxPQUFPLGVBQWM7QUFFckIsT0FBTyxNQUFNQyxlQUFlLENBQUMsRUFDM0JDLFVBQVUsRUFDVkMsTUFBTSxFQUNOQyxLQUFLLEVBS047SUFDQyxJQUFJQSxNQUFNQyxTQUFTLEVBQUU7UUFDbkIsT0FDRUQsT0FBT0MsMkJBQ0wsb0JBQUNELE1BQU1DLFNBQVM7WUFBQ0gsWUFBWUE7WUFBWUMsUUFBUUE7WUFBUUMsT0FBT0E7WUFBT0UsS0FBS0YsTUFBTUUsR0FBRzs7SUFHM0Y7SUFFQSxxQkFDRSxvQkFBQ047UUFBYUksT0FBT0E7UUFBT0UsS0FBS0YsTUFBTUUsR0FBRztPQUN2Q0YsT0FBT0csZ0NBQWtCLG9CQUFDSCxNQUFNRyxjQUFjLHVCQUMvQyxvQkFBQ0M7UUFBS0MsV0FBVTtPQUFRTCxNQUFNTSxLQUFLO0FBR3pDLEVBQUM7QUFFRCxPQUFPLE1BQU1DLGtCQUFrQixDQUFDLEVBQzlCQyxJQUFJLEVBQ0pWLFVBQVUsRUFDVlcsVUFBVSxFQUNWVixNQUFNLEVBQ05XLE9BQU8sRUFDUEMsVUFBVSxFQVFYO0lBQ0MscUJBQ0Usb0JBQUNoQjtRQUNDYSxNQUFNQTtRQUNOSSxpQkFBaUIsQ0FBQyxFQUFFRCxXQUFXLFNBQVMsQ0FBQztRQUN6Q0UsaUJBQWlCO1lBQUNuQjtZQUFXLENBQUMsRUFBRUEsVUFBVSxDQUFDLEVBQUVpQixXQUFXLENBQUM7ZUFBTUYsY0FBYyxFQUFFO1NBQUUsQ0FDOUVLLE1BQU0sQ0FBQ0MsU0FDUEMsSUFBSSxDQUFDO1FBQ1JkLEtBQUtTO09BRUpELFFBQVFPLE1BQU0sSUFDYlAsUUFBUVEsR0FBRyxDQUFDLENBQUNsQjtRQUNYLHFCQUNFLG9CQUFDSDtZQUFhQyxZQUFZQTtZQUFZQyxRQUFRQTtZQUFRQyxPQUFPQTtZQUFPRSxLQUFLRixNQUFNRSxHQUFHOztJQUV0RjtBQUdSLEVBQUMifQ==
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvRmxvYXRpbmdTZWxlY3RUb29sYmFyL1Rvb2xiYXJEcm9wZG93bi9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmNvbnN0IGJhc2VDbGFzcyA9ICdmbG9hdGluZy1zZWxlY3QtdG9vbGJhci1wb3B1cF9fZHJvcGRvd24nXG5cbmltcG9ydCB0eXBlIHsgTGV4aWNhbEVkaXRvciB9IGZyb20gJ2xleGljYWwnXG5cbmltcG9ydCB0eXBlIHsgRmxvYXRpbmdUb29sYmFyU2VjdGlvbkVudHJ5IH0gZnJvbSAnLi4vdHlwZXMuanMnXG5cbmltcG9ydCB7IERyb3BEb3duLCBEcm9wRG93bkl0ZW0gfSBmcm9tICcuL0Ryb3BEb3duLmpzJ1xuaW1wb3J0ICcuL2luZGV4LnNjc3MnXG5cbmV4cG9ydCBjb25zdCBUb29sYmFyRW50cnkgPSAoe1xuICBhbmNob3JFbGVtLFxuICBlZGl0b3IsXG4gIGVudHJ5LFxufToge1xuICBhbmNob3JFbGVtOiBIVE1MRWxlbWVudFxuICBlZGl0b3I6IExleGljYWxFZGl0b3JcbiAgZW50cnk6IEZsb2F0aW5nVG9vbGJhclNlY3Rpb25FbnRyeVxufSkgPT4ge1xuICBpZiAoZW50cnkuQ29tcG9uZW50KSB7XG4gICAgcmV0dXJuIChcbiAgICAgIGVudHJ5Py5Db21wb25lbnQgJiYgKFxuICAgICAgICA8ZW50cnkuQ29tcG9uZW50IGFuY2hvckVsZW09e2FuY2hvckVsZW19IGVkaXRvcj17ZWRpdG9yfSBlbnRyeT17ZW50cnl9IGtleT17ZW50cnkua2V5fSAvPlxuICAgICAgKVxuICAgIClcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPERyb3BEb3duSXRlbSBlbnRyeT17ZW50cnl9IGtleT17ZW50cnkua2V5fT5cbiAgICAgIHtlbnRyeT8uQ2hpbGRDb21wb25lbnQgJiYgPGVudHJ5LkNoaWxkQ29tcG9uZW50IC8+fVxuICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dFwiPntlbnRyeS5sYWJlbH08L3NwYW4+XG4gICAgPC9Ecm9wRG93bkl0ZW0+XG4gIClcbn1cblxuZXhwb3J0IGNvbnN0IFRvb2xiYXJEcm9wZG93biA9ICh7XG4gIEljb24sXG4gIGFuY2hvckVsZW0sXG4gIGNsYXNzTmFtZXMsXG4gIGVkaXRvcixcbiAgZW50cmllcyxcbiAgc2VjdGlvbktleSxcbn06IHtcbiAgSWNvbj86IFJlYWN0LkZDXG4gIGFuY2hvckVsZW06IEhUTUxFbGVtZW50XG4gIGNsYXNzTmFtZXM/OiBzdHJpbmdbXVxuICBlZGl0b3I6IExleGljYWxFZGl0b3JcbiAgZW50cmllczogRmxvYXRpbmdUb29sYmFyU2VjdGlvbkVudHJ5W11cbiAgc2VjdGlvbktleTogc3RyaW5nXG59KSA9PiB7XG4gIHJldHVybiAoXG4gICAgPERyb3BEb3duXG4gICAgICBJY29uPXtJY29ufVxuICAgICAgYnV0dG9uQXJpYUxhYmVsPXtgJHtzZWN0aW9uS2V5fSBkcm9wZG93bmB9XG4gICAgICBidXR0b25DbGFzc05hbWU9e1tiYXNlQ2xhc3MsIGAke2Jhc2VDbGFzc30tJHtzZWN0aW9uS2V5fWAsIC4uLihjbGFzc05hbWVzIHx8IFtdKV1cbiAgICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgICAuam9pbignICcpfVxuICAgICAga2V5PXtzZWN0aW9uS2V5fVxuICAgID5cbiAgICAgIHtlbnRyaWVzLmxlbmd0aCAmJlxuICAgICAgICBlbnRyaWVzLm1hcCgoZW50cnkpID0+IHtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPFRvb2xiYXJFbnRyeSBhbmNob3JFbGVtPXthbmNob3JFbGVtfSBlZGl0b3I9e2VkaXRvcn0gZW50cnk9e2VudHJ5fSBrZXk9e2VudHJ5LmtleX0gLz5cbiAgICAgICAgICApXG4gICAgICAgIH0pfVxuICAgIDwvRHJvcERvd24+XG4gIClcbn1cbiJdLCJuYW1lcyI6WyJSZWFjdCIsImJhc2VDbGFzcyIsIkRyb3BEb3duIiwiRHJvcERvd25JdGVtIiwiVG9vbGJhckVudHJ5IiwiYW5jaG9yRWxlbSIsImVkaXRvciIsImVudHJ5IiwiQ29tcG9uZW50Iiwia2V5IiwiQ2hpbGRDb21wb25lbnQiLCJzcGFuIiwiY2xhc3NOYW1lIiwibGFiZWwiLCJUb29sYmFyRHJvcGRvd24iLCJJY29uIiwiY2xhc3NOYW1lcyIsImVudHJpZXMiLCJzZWN0aW9uS2V5IiwiYnV0dG9uQXJpYUxhYmVsIiwiYnV0dG9uQ2xhc3NOYW1lIiwiZmlsdGVyIiwiQm9vbGVhbiIsImpvaW4iLCJsZW5ndGgiLCJtYXAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0EsT0FBT0EsV0FBVyxRQUFPO0FBRXpCLE1BQU1DLFlBQVk7QUFNbEIsU0FBU0MsUUFBUSxFQUFFQyxZQUFZLFFBQVEsZ0JBQWU7QUFDdEQsT0FBTyxlQUFjO0FBRXJCLE9BQU8sTUFBTUMsZUFBZSxDQUFDLEVBQzNCQyxVQUFVLEVBQ1ZDLE1BQU0sRUFDTkMsS0FBSyxFQUtOO0lBQ0MsSUFBSUEsTUFBTUMsU0FBUyxFQUFFO1FBQ25CLE9BQ0VELE9BQU9DLDJCQUNMLG9CQUFDRCxNQUFNQyxTQUFTO1lBQUNILFlBQVlBO1lBQVlDLFFBQVFBO1lBQVFDLE9BQU9BO1lBQU9FLEtBQUtGLE1BQU1FLEdBQUc7O0lBRzNGO0lBRUEscUJBQ0Usb0JBQUNOO1FBQWFJLE9BQU9BO1FBQU9FLEtBQUtGLE1BQU1FLEdBQUc7T0FDdkNGLE9BQU9HLGdDQUFrQixvQkFBQ0gsTUFBTUcsY0FBYyx1QkFDL0Msb0JBQUNDO1FBQUtDLFdBQVU7T0FBUUwsTUFBTU0sS0FBSztBQUd6QyxFQUFDO0FBRUQsT0FBTyxNQUFNQyxrQkFBa0IsQ0FBQyxFQUM5QkMsSUFBSSxFQUNKVixVQUFVLEVBQ1ZXLFVBQVUsRUFDVlYsTUFBTSxFQUNOVyxPQUFPLEVBQ1BDLFVBQVUsRUFRWDtJQUNDLHFCQUNFLG9CQUFDaEI7UUFDQ2EsTUFBTUE7UUFDTkksaUJBQWlCLENBQUMsRUFBRUQsV0FBVyxTQUFTLENBQUM7UUFDekNFLGlCQUFpQjtZQUFDbkI7WUFBVyxDQUFDLEVBQUVBLFVBQVUsQ0FBQyxFQUFFaUIsV0FBVyxDQUFDO2VBQU1GLGNBQWMsRUFBRTtTQUFFLENBQzlFSyxNQUFNLENBQUNDLFNBQ1BDLElBQUksQ0FBQztRQUNSZCxLQUFLUztPQUVKRCxRQUFRTyxNQUFNLElBQ2JQLFFBQVFRLEdBQUcsQ0FBQyxDQUFDbEI7UUFDWCxxQkFDRSxvQkFBQ0g7WUFBYUMsWUFBWUE7WUFBWUMsUUFBUUE7WUFBUUMsT0FBT0E7WUFBT0UsS0FBS0YsTUFBTUUsR0FBRzs7SUFFdEY7QUFHUixFQUFDIn0=
@@ -1,15 +1,15 @@
1
1
  'use client';
2
- import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';
2
+ import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js';
3
3
  import { mergeRegister } from '@lexical/utils';
4
4
  import { $getSelection, $isRangeSelection, $isTextNode, COMMAND_PRIORITY_LOW, SELECTION_CHANGE_COMMAND } from 'lexical';
5
5
  import { useCallback, useEffect, useRef, useState } from 'react';
6
6
  import * as React from 'react';
7
7
  import { createPortal } from 'react-dom';
8
- import { useEditorConfigContext } from '../../config/client/EditorConfigProvider';
9
- import { getDOMRangeRect } from '../../utils/getDOMRangeRect';
10
- import { setFloatingElemPosition } from '../../utils/setFloatingElemPosition';
11
- import { ToolbarButton } from './ToolbarButton';
12
- import { ToolbarDropdown } from './ToolbarDropdown';
8
+ import { useEditorConfigContext } from '../../config/client/EditorConfigProvider.js';
9
+ import { getDOMRangeRect } from '../../utils/getDOMRangeRect.js';
10
+ import { setFloatingElemPosition } from '../../utils/setFloatingElemPosition.js';
11
+ import { ToolbarButton } from './ToolbarButton/index.js';
12
+ import { ToolbarDropdown } from './ToolbarDropdown/index.js';
13
13
  import './index.scss';
14
14
  function ButtonSectionEntry({ anchorElem, editor, entry }) {
15
15
  if (entry.Component) {
@@ -264,4 +264,4 @@ export function FloatingSelectToolbarPlugin({ anchorElem = document.body }) {
264
264
  return useFloatingTextFormatToolbar(editor, anchorElem);
265
265
  }
266
266
 
267
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvRmxvYXRpbmdTZWxlY3RUb29sYmFyL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCdcbmltcG9ydCB0eXBlIHsgTGV4aWNhbEVkaXRvciB9IGZyb20gJ2xleGljYWwnXG5cbmltcG9ydCB7IHVzZUxleGljYWxDb21wb3NlckNvbnRleHQgfSBmcm9tICdAbGV4aWNhbC9yZWFjdC9MZXhpY2FsQ29tcG9zZXJDb250ZXh0J1xuaW1wb3J0IHsgbWVyZ2VSZWdpc3RlciB9IGZyb20gJ0BsZXhpY2FsL3V0aWxzJ1xuaW1wb3J0IHtcbiAgJGdldFNlbGVjdGlvbixcbiAgJGlzUmFuZ2VTZWxlY3Rpb24sXG4gICRpc1RleHROb2RlLFxuICBDT01NQU5EX1BSSU9SSVRZX0xPVyxcbiAgU0VMRUNUSU9OX0NIQU5HRV9DT01NQU5ELFxufSBmcm9tICdsZXhpY2FsJ1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBjcmVhdGVQb3J0YWwgfSBmcm9tICdyZWFjdC1kb20nXG5cbmltcG9ydCB0eXBlIHsgRmxvYXRpbmdUb29sYmFyU2VjdGlvbiwgRmxvYXRpbmdUb29sYmFyU2VjdGlvbkVudHJ5IH0gZnJvbSAnLi90eXBlcydcblxuaW1wb3J0IHsgdXNlRWRpdG9yQ29uZmlnQ29udGV4dCB9IGZyb20gJy4uLy4uL2NvbmZpZy9jbGllbnQvRWRpdG9yQ29uZmlnUHJvdmlkZXInXG5pbXBvcnQgeyBnZXRET01SYW5nZVJlY3QgfSBmcm9tICcuLi8uLi91dGlscy9nZXRET01SYW5nZVJlY3QnXG5pbXBvcnQgeyBzZXRGbG9hdGluZ0VsZW1Qb3NpdGlvbiB9IGZyb20gJy4uLy4uL3V0aWxzL3NldEZsb2F0aW5nRWxlbVBvc2l0aW9uJ1xuaW1wb3J0IHsgVG9vbGJhckJ1dHRvbiB9IGZyb20gJy4vVG9vbGJhckJ1dHRvbidcbmltcG9ydCB7IFRvb2xiYXJEcm9wZG93biB9IGZyb20gJy4vVG9vbGJhckRyb3Bkb3duJ1xuaW1wb3J0ICcuL2luZGV4LnNjc3MnXG5cbmZ1bmN0aW9uIEJ1dHRvblNlY3Rpb25FbnRyeSh7XG4gIGFuY2hvckVsZW0sXG4gIGVkaXRvcixcbiAgZW50cnksXG59OiB7XG4gIGFuY2hvckVsZW06IEhUTUxFbGVtZW50XG4gIGVkaXRvcjogTGV4aWNhbEVkaXRvclxuICBlbnRyeTogRmxvYXRpbmdUb29sYmFyU2VjdGlvbkVudHJ5XG59KTogUmVhY3QuUmVhY3ROb2RlIHtcbiAgaWYgKGVudHJ5LkNvbXBvbmVudCkge1xuICAgIHJldHVybiAoXG4gICAgICBlbnRyeT8uQ29tcG9uZW50ICYmIChcbiAgICAgICAgPGVudHJ5LkNvbXBvbmVudCBhbmNob3JFbGVtPXthbmNob3JFbGVtfSBlZGl0b3I9e2VkaXRvcn0gZW50cnk9e2VudHJ5fSBrZXk9e2VudHJ5LmtleX0gLz5cbiAgICAgIClcbiAgICApXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxUb29sYmFyQnV0dG9uIGVudHJ5PXtlbnRyeX0ga2V5PXtlbnRyeS5rZXl9PlxuICAgICAge2VudHJ5Py5DaGlsZENvbXBvbmVudCAmJiA8ZW50cnkuQ2hpbGRDb21wb25lbnQgLz59XG4gICAgPC9Ub29sYmFyQnV0dG9uPlxuICApXG59XG5cbmZ1bmN0aW9uIFRvb2xiYXJTZWN0aW9uKHtcbiAgYW5jaG9yRWxlbSxcbiAgZWRpdG9yLFxuICBpbmRleCxcbiAgc2VjdGlvbixcbn06IHtcbiAgYW5jaG9yRWxlbTogSFRNTEVsZW1lbnRcbiAgZWRpdG9yOiBMZXhpY2FsRWRpdG9yXG4gIGluZGV4OiBudW1iZXJcbiAgc2VjdGlvbjogRmxvYXRpbmdUb29sYmFyU2VjdGlvblxufSk6IFJlYWN0LlJlYWN0Tm9kZSB7XG4gIGNvbnN0IHsgZWRpdG9yQ29uZmlnIH0gPSB1c2VFZGl0b3JDb25maWdDb250ZXh0KClcblxuICBjb25zdCBJY29uID1cbiAgICBzZWN0aW9uPy50eXBlID09PSAnZHJvcGRvd24nICYmIHNlY3Rpb24uZW50cmllcy5sZW5ndGggJiYgc2VjdGlvbi5DaGlsZENvbXBvbmVudFxuICAgICAgPyBzZWN0aW9uLkNoaWxkQ29tcG9uZW50XG4gICAgICA6IG51bGxcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGNsYXNzTmFtZT17YGZsb2F0aW5nLXNlbGVjdC10b29sYmFyLXBvcHVwX19zZWN0aW9uIGZsb2F0aW5nLXNlbGVjdC10b29sYmFyLXBvcHVwX19zZWN0aW9uLSR7c2VjdGlvbi5rZXl9YH1cbiAgICAgIGtleT17c2VjdGlvbi5rZXl9XG4gICAgPlxuICAgICAge3NlY3Rpb24udHlwZSA9PT0gJ2Ryb3Bkb3duJyAmJlxuICAgICAgICBzZWN0aW9uLmVudHJpZXMubGVuZ3RoICYmXG4gICAgICAgIChJY29uID8gKFxuICAgICAgICAgIDxUb29sYmFyRHJvcGRvd25cbiAgICAgICAgICAgIEljb249e0ljb259XG4gICAgICAgICAgICBhbmNob3JFbGVtPXthbmNob3JFbGVtfVxuICAgICAgICAgICAgZWRpdG9yPXtlZGl0b3J9XG4gICAgICAgICAgICBlbnRyaWVzPXtzZWN0aW9uLmVudHJpZXN9XG4gICAgICAgICAgICBzZWN0aW9uS2V5PXtzZWN0aW9uLmtleX1cbiAgICAgICAgICAvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxUb29sYmFyRHJvcGRvd25cbiAgICAgICAgICAgIGFuY2hvckVsZW09e2FuY2hvckVsZW19XG4gICAgICAgICAgICBlZGl0b3I9e2VkaXRvcn1cbiAgICAgICAgICAgIGVudHJpZXM9e3NlY3Rpb24uZW50cmllc31cbiAgICAgICAgICAgIHNlY3Rpb25LZXk9e3NlY3Rpb24ua2V5fVxuICAgICAgICAgIC8+XG4gICAgICAgICkpfVxuICAgICAge3NlY3Rpb24udHlwZSA9PT0gJ2J1dHRvbnMnICYmXG4gICAgICAgIHNlY3Rpb24uZW50cmllcy5sZW5ndGggJiZcbiAgICAgICAgc2VjdGlvbi5lbnRyaWVzLm1hcCgoZW50cnkpID0+IHtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEJ1dHRvblNlY3Rpb25FbnRyeVxuICAgICAgICAgICAgICBhbmNob3JFbGVtPXthbmNob3JFbGVtfVxuICAgICAgICAgICAgICBlZGl0b3I9e2VkaXRvcn1cbiAgICAgICAgICAgICAgZW50cnk9e2VudHJ5fVxuICAgICAgICAgICAgICBrZXk9e2VudHJ5LmtleX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKVxuICAgICAgICB9KX1cbiAgICAgIHtpbmRleCA8IGVkaXRvckNvbmZpZy5mZWF0dXJlcy5mbG9hdGluZ1NlbGVjdFRvb2xiYXI/LnNlY3Rpb25zLmxlbmd0aCAtIDEgJiYgKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRpdmlkZXJcIiAvPlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKVxufVxuXG5mdW5jdGlvbiBGbG9hdGluZ1NlbGVjdFRvb2xiYXIoe1xuICBhbmNob3JFbGVtLFxuICBlZGl0b3IsXG59OiB7XG4gIGFuY2hvckVsZW06IEhUTUxFbGVtZW50XG4gIGVkaXRvcjogTGV4aWNhbEVkaXRvclxufSk6IFJlYWN0LlJlYWN0Tm9kZSB7XG4gIGNvbnN0IHBvcHVwQ2hhclN0eWxlc0VkaXRvclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudCB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGNhcmV0UmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50IHwgbnVsbD4obnVsbClcblxuICBjb25zdCB7IGVkaXRvckNvbmZpZyB9ID0gdXNlRWRpdG9yQ29uZmlnQ29udGV4dCgpXG5cbiAgY29uc3QgY2xvc2VGbG9hdGluZ1Rvb2xiYXIgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKHBvcHVwQ2hhclN0eWxlc0VkaXRvclJlZj8uY3VycmVudCkge1xuICAgICAgY29uc3QgaXNPcGFjaXR5WmVybyA9IHBvcHVwQ2hhclN0eWxlc0VkaXRvclJlZi5jdXJyZW50LnN0eWxlLm9wYWNpdHkgPT09ICcwJ1xuICAgICAgY29uc3QgaXNQb2ludGVyRXZlbnRzTm9uZSA9IHBvcHVwQ2hhclN0eWxlc0VkaXRvclJlZi5jdXJyZW50LnN0eWxlLnBvaW50ZXJFdmVudHMgPT09ICdub25lJ1xuXG4gICAgICBpZiAoIWlzT3BhY2l0eVplcm8pIHtcbiAgICAgICAgcG9wdXBDaGFyU3R5bGVzRWRpdG9yUmVmLmN1cnJlbnQuc3R5bGUub3BhY2l0eSA9ICcwJ1xuICAgICAgfVxuICAgICAgaWYgKCFpc1BvaW50ZXJFdmVudHNOb25lKSB7XG4gICAgICAgIHBvcHVwQ2hhclN0eWxlc0VkaXRvclJlZi5jdXJyZW50LnN0eWxlLnBvaW50ZXJFdmVudHMgPSAnbm9uZSdcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWZdKVxuXG4gIGNvbnN0IG1vdXNlTW92ZUxpc3RlbmVyID0gdXNlQ2FsbGJhY2soXG4gICAgKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgIGlmIChwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWY/LmN1cnJlbnQgJiYgKGUuYnV0dG9ucyA9PT0gMSB8fCBlLmJ1dHRvbnMgPT09IDMpKSB7XG4gICAgICAgIGNvbnN0IGlzT3BhY2l0eVplcm8gPSBwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWYuY3VycmVudC5zdHlsZS5vcGFjaXR5ID09PSAnMCdcbiAgICAgICAgY29uc3QgaXNQb2ludGVyRXZlbnRzTm9uZSA9IHBvcHVwQ2hhclN0eWxlc0VkaXRvclJlZi5jdXJyZW50LnN0eWxlLnBvaW50ZXJFdmVudHMgPT09ICdub25lJ1xuICAgICAgICBpZiAoIWlzT3BhY2l0eVplcm8gfHwgIWlzUG9pbnRlckV2ZW50c05vbmUpIHtcbiAgICAgICAgICAvLyBDaGVjayBpZiB0aGUgbW91c2UgaXMgbm90IG92ZXIgdGhlIHBvcHVwXG4gICAgICAgICAgY29uc3QgeCA9IGUuY2xpZW50WFxuICAgICAgICAgIGNvbnN0IHkgPSBlLmNsaWVudFlcbiAgICAgICAgICBjb25zdCBlbGVtZW50VW5kZXJNb3VzZSA9IGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoeCwgeSlcbiAgICAgICAgICBpZiAoIXBvcHVwQ2hhclN0eWxlc0VkaXRvclJlZi5jdXJyZW50LmNvbnRhaW5zKGVsZW1lbnRVbmRlck1vdXNlKSkge1xuICAgICAgICAgICAgLy8gTW91c2UgaXMgbm90IG92ZXIgdGhlIHRhcmdldCBlbGVtZW50ID0+IG5vdCBhIG5vcm1hbCBjbGljaywgYnV0IHByb2JhYmx5IGEgZHJhZ1xuICAgICAgICAgICAgY2xvc2VGbG9hdGluZ1Rvb2xiYXIoKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgW2Nsb3NlRmxvYXRpbmdUb29sYmFyXSxcbiAgKVxuXG4gIGNvbnN0IG1vdXNlVXBMaXN0ZW5lciA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAocG9wdXBDaGFyU3R5bGVzRWRpdG9yUmVmPy5jdXJyZW50KSB7XG4gICAgICBpZiAocG9wdXBDaGFyU3R5bGVzRWRpdG9yUmVmLmN1cnJlbnQuc3R5bGUub3BhY2l0eSAhPT0gJzEnKSB7XG4gICAgICAgIHBvcHVwQ2hhclN0eWxlc0VkaXRvclJlZi5jdXJyZW50LnN0eWxlLm9wYWNpdHkgPSAnMSdcbiAgICAgIH1cbiAgICAgIGlmIChwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWYuY3VycmVudC5zdHlsZS5wb2ludGVyRXZlbnRzICE9PSAnYXV0bycpIHtcbiAgICAgICAgcG9wdXBDaGFyU3R5bGVzRWRpdG9yUmVmLmN1cnJlbnQuc3R5bGUucG9pbnRlckV2ZW50cyA9ICdhdXRvJ1xuICAgICAgfVxuICAgIH1cbiAgfSwgW3BvcHVwQ2hhclN0eWxlc0VkaXRvclJlZl0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBtb3VzZU1vdmVMaXN0ZW5lcilcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgbW91c2VVcExpc3RlbmVyKVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG1vdXNlTW92ZUxpc3RlbmVyKVxuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIG1vdXNlVXBMaXN0ZW5lcilcbiAgICB9XG4gIH0sIFtwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWYsIG1vdXNlTW92ZUxpc3RlbmVyLCBtb3VzZVVwTGlzdGVuZXJdKVxuXG4gIGNvbnN0IHVwZGF0ZVRleHRGb3JtYXRGbG9hdGluZ1Rvb2xiYXIgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3Qgc2VsZWN0aW9uID0gJGdldFNlbGVjdGlvbigpXG5cbiAgICBjb25zdCBwb3B1cENoYXJTdHlsZXNFZGl0b3JFbGVtID0gcG9wdXBDaGFyU3R5bGVzRWRpdG9yUmVmLmN1cnJlbnRcbiAgICBjb25zdCBuYXRpdmVTZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKClcblxuICAgIGlmIChwb3B1cENoYXJTdHlsZXNFZGl0b3JFbGVtID09PSBudWxsKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCByb290RWxlbWVudCA9IGVkaXRvci5nZXRSb290RWxlbWVudCgpXG4gICAgaWYgKFxuICAgICAgc2VsZWN0aW9uICE9PSBudWxsICYmXG4gICAgICBuYXRpdmVTZWxlY3Rpb24gIT09IG51bGwgJiZcbiAgICAgICFuYXRpdmVTZWxlY3Rpb24uaXNDb2xsYXBzZWQgJiZcbiAgICAgIHJvb3RFbGVtZW50ICE9PSBudWxsICYmXG4gICAgICByb290RWxlbWVudC5jb250YWlucyhuYXRpdmVTZWxlY3Rpb24uYW5jaG9yTm9kZSlcbiAgICApIHtcbiAgICAgIGNvbnN0IHJhbmdlUmVjdCA9IGdldERPTVJhbmdlUmVjdChuYXRpdmVTZWxlY3Rpb24sIHJvb3RFbGVtZW50KVxuXG4gICAgICBzZXRGbG9hdGluZ0VsZW1Qb3NpdGlvbihyYW5nZVJlY3QsIHBvcHVwQ2hhclN0eWxlc0VkaXRvckVsZW0sIGFuY2hvckVsZW0sICdjZW50ZXInKVxuXG4gICAgICBpZiAoY2FyZXRSZWYuY3VycmVudCkge1xuICAgICAgICBzZXRGbG9hdGluZ0VsZW1Qb3NpdGlvbihcbiAgICAgICAgICByYW5nZVJlY3QsIC8vIHNlbGVjdGlvbiB0byBwb3NpdGlvbiBhcm91bmRcbiAgICAgICAgICBjYXJldFJlZi5jdXJyZW50LCAvLyB3aGF0IHRvIHBvc2l0aW9uXG4gICAgICAgICAgcG9wdXBDaGFyU3R5bGVzRWRpdG9yRWxlbSwgLy8gYW5jaG9yIGVsZW1cbiAgICAgICAgICAnY2VudGVyJyxcbiAgICAgICAgICAxMCxcbiAgICAgICAgICA1LFxuICAgICAgICAgIHRydWUsXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtlZGl0b3IsIGFuY2hvckVsZW1dKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgc2Nyb2xsZXJFbGVtID0gYW5jaG9yRWxlbS5wYXJlbnRFbGVtZW50XG5cbiAgICBjb25zdCB1cGRhdGUgPSAoKSA9PiB7XG4gICAgICBlZGl0b3IuZ2V0RWRpdG9yU3RhdGUoKS5yZWFkKCgpID0+IHtcbiAgICAgICAgdXBkYXRlVGV4dEZvcm1hdEZsb2F0aW5nVG9vbGJhcigpXG4gICAgICB9KVxuICAgIH1cblxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB1cGRhdGUpXG4gICAgaWYgKHNjcm9sbGVyRWxlbSkge1xuICAgICAgc2Nyb2xsZXJFbGVtLmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHVwZGF0ZSlcbiAgICB9XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHVwZGF0ZSlcbiAgICAgIGlmIChzY3JvbGxlckVsZW0pIHtcbiAgICAgICAgc2Nyb2xsZXJFbGVtLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHVwZGF0ZSlcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtlZGl0b3IsIHVwZGF0ZVRleHRGb3JtYXRGbG9hdGluZ1Rvb2xiYXIsIGFuY2hvckVsZW1dKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZWRpdG9yLmdldEVkaXRvclN0YXRlKCkucmVhZCgoKSA9PiB7XG4gICAgICB1cGRhdGVUZXh0Rm9ybWF0RmxvYXRpbmdUb29sYmFyKClcbiAgICB9KVxuICAgIHJldHVybiBtZXJnZVJlZ2lzdGVyKFxuICAgICAgZWRpdG9yLnJlZ2lzdGVyVXBkYXRlTGlzdGVuZXIoKHsgZWRpdG9yU3RhdGUgfSkgPT4ge1xuICAgICAgICBlZGl0b3JTdGF0ZS5yZWFkKCgpID0+IHtcbiAgICAgICAgICB1cGRhdGVUZXh0Rm9ybWF0RmxvYXRpbmdUb29sYmFyKClcbiAgICAgICAgfSlcbiAgICAgIH0pLFxuXG4gICAgICBlZGl0b3IucmVnaXN0ZXJDb21tYW5kKFxuICAgICAgICBTRUxFQ1RJT05fQ0hBTkdFX0NPTU1BTkQsXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICB1cGRhdGVUZXh0Rm9ybWF0RmxvYXRpbmdUb29sYmFyKClcbiAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgfSxcbiAgICAgICAgQ09NTUFORF9QUklPUklUWV9MT1csXG4gICAgICApLFxuICAgIClcbiAgfSwgW2VkaXRvciwgdXBkYXRlVGV4dEZvcm1hdEZsb2F0aW5nVG9vbGJhcl0pXG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cImZsb2F0aW5nLXNlbGVjdC10b29sYmFyLXBvcHVwXCIgcmVmPXtwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWZ9PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJjYXJldFwiIHJlZj17Y2FyZXRSZWZ9IC8+XG4gICAgICB7ZWRpdG9yLmlzRWRpdGFibGUoKSAmJiAoXG4gICAgICAgIDxSZWFjdC5GcmFnbWVudD5cbiAgICAgICAgICB7ZWRpdG9yQ29uZmlnPy5mZWF0dXJlcyAmJlxuICAgICAgICAgICAgZWRpdG9yQ29uZmlnLmZlYXR1cmVzPy5mbG9hdGluZ1NlbGVjdFRvb2xiYXI/LnNlY3Rpb25zLm1hcCgoc2VjdGlvbiwgaSkgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxUb29sYmFyU2VjdGlvblxuICAgICAgICAgICAgICAgICAgYW5jaG9yRWxlbT17YW5jaG9yRWxlbX1cbiAgICAgICAgICAgICAgICAgIGVkaXRvcj17ZWRpdG9yfVxuICAgICAgICAgICAgICAgICAgaW5kZXg9e2l9XG4gICAgICAgICAgICAgICAgICBrZXk9e3NlY3Rpb24ua2V5fVxuICAgICAgICAgICAgICAgICAgc2VjdGlvbj17c2VjdGlvbn1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9KX1cbiAgICAgICAgPC9SZWFjdC5GcmFnbWVudD5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gIClcbn1cblxuZnVuY3Rpb24gdXNlRmxvYXRpbmdUZXh0Rm9ybWF0VG9vbGJhcihcbiAgZWRpdG9yOiBMZXhpY2FsRWRpdG9yLFxuICBhbmNob3JFbGVtOiBIVE1MRWxlbWVudCxcbik6IEpTWC5FbGVtZW50IHwgbnVsbCB7XG4gIGNvbnN0IFtpc1RleHQsIHNldElzVGV4dF0gPSB1c2VTdGF0ZShmYWxzZSlcblxuICBjb25zdCB1cGRhdGVQb3B1cCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBlZGl0b3IuZ2V0RWRpdG9yU3RhdGUoKS5yZWFkKCgpID0+IHtcbiAgICAgIC8vIFNob3VsZCBub3QgdG8gcG9wIHVwIHRoZSBmbG9hdGluZyB0b29sYmFyIHdoZW4gdXNpbmcgSU1FIGlucHV0XG4gICAgICBpZiAoZWRpdG9yLmlzQ29tcG9zaW5nKCkpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBjb25zdCBzZWxlY3Rpb24gPSAkZ2V0U2VsZWN0aW9uKClcbiAgICAgIGNvbnN0IG5hdGl2ZVNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKVxuICAgICAgY29uc3Qgcm9vdEVsZW1lbnQgPSBlZGl0b3IuZ2V0Um9vdEVsZW1lbnQoKVxuXG4gICAgICBpZiAoXG4gICAgICAgIG5hdGl2ZVNlbGVjdGlvbiAhPT0gbnVsbCAmJlxuICAgICAgICAoISRpc1JhbmdlU2VsZWN0aW9uKHNlbGVjdGlvbikgfHxcbiAgICAgICAgICByb290RWxlbWVudCA9PT0gbnVsbCB8fFxuICAgICAgICAgICFyb290RWxlbWVudC5jb250YWlucyhuYXRpdmVTZWxlY3Rpb24uYW5jaG9yTm9kZSkpXG4gICAgICApIHtcbiAgICAgICAgc2V0SXNUZXh0KGZhbHNlKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgaWYgKCEkaXNSYW5nZVNlbGVjdGlvbihzZWxlY3Rpb24pKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBpZiAoc2VsZWN0aW9uLmdldFRleHRDb250ZW50KCkgIT09ICcnKSB7XG4gICAgICAgIGNvbnN0IG5vZGVzID0gc2VsZWN0aW9uLmdldE5vZGVzKClcbiAgICAgICAgbGV0IGZvdW5kTm9kZVdpdGhUZXh0ID0gZmFsc2VcbiAgICAgICAgZm9yIChjb25zdCBub2RlIG9mIG5vZGVzKSB7XG4gICAgICAgICAgaWYgKCRpc1RleHROb2RlKG5vZGUpKSB7XG4gICAgICAgICAgICBzZXRJc1RleHQodHJ1ZSlcbiAgICAgICAgICAgIGZvdW5kTm9kZVdpdGhUZXh0ID0gdHJ1ZVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFmb3VuZE5vZGVXaXRoVGV4dCkge1xuICAgICAgICAgIHNldElzVGV4dChmYWxzZSlcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0SXNUZXh0KGZhbHNlKVxuICAgICAgfVxuXG4gICAgICBjb25zdCByYXdUZXh0Q29udGVudCA9IHNlbGVjdGlvbi5nZXRUZXh0Q29udGVudCgpLnJlcGxhY2UoL1xcbi9nLCAnJylcbiAgICAgIGlmICghc2VsZWN0aW9uLmlzQ29sbGFwc2VkKCkgJiYgcmF3VGV4dENvbnRlbnQgPT09ICcnKSB7XG4gICAgICAgIHNldElzVGV4dChmYWxzZSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgfSlcbiAgfSwgW2VkaXRvcl0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdzZWxlY3Rpb25jaGFuZ2UnLCB1cGRhdGVQb3B1cClcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgdXBkYXRlUG9wdXApXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3NlbGVjdGlvbmNoYW5nZScsIHVwZGF0ZVBvcHVwKVxuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHVwZGF0ZVBvcHVwKVxuICAgIH1cbiAgfSwgW3VwZGF0ZVBvcHVwXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJldHVybiBtZXJnZVJlZ2lzdGVyKFxuICAgICAgZWRpdG9yLnJlZ2lzdGVyVXBkYXRlTGlzdGVuZXIoKCkgPT4ge1xuICAgICAgICB1cGRhdGVQb3B1cCgpXG4gICAgICB9KSxcbiAgICAgIGVkaXRvci5yZWdpc3RlclJvb3RMaXN0ZW5lcigoKSA9PiB7XG4gICAgICAgIGlmIChlZGl0b3IuZ2V0Um9vdEVsZW1lbnQoKSA9PT0gbnVsbCkge1xuICAgICAgICAgIHNldElzVGV4dChmYWxzZSlcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgKVxuICB9LCBbZWRpdG9yLCB1cGRhdGVQb3B1cF0pXG5cbiAgaWYgKCFpc1RleHQpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgcmV0dXJuIGNyZWF0ZVBvcnRhbCg8RmxvYXRpbmdTZWxlY3RUb29sYmFyIGFuY2hvckVsZW09e2FuY2hvckVsZW19IGVkaXRvcj17ZWRpdG9yfSAvPiwgYW5jaG9yRWxlbSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEZsb2F0aW5nU2VsZWN0VG9vbGJhclBsdWdpbih7XG4gIGFuY2hvckVsZW0gPSBkb2N1bWVudC5ib2R5LFxufToge1xuICBhbmNob3JFbGVtPzogSFRNTEVsZW1lbnRcbn0pOiBKU1guRWxlbWVudCB8IG51bGwge1xuICBjb25zdCBbZWRpdG9yXSA9IHVzZUxleGljYWxDb21wb3NlckNvbnRleHQoKVxuICByZXR1cm4gdXNlRmxvYXRpbmdUZXh0Rm9ybWF0VG9vbGJhcihlZGl0b3IsIGFuY2hvckVsZW0pXG59XG4iXSwibmFtZXMiOlsidXNlTGV4aWNhbENvbXBvc2VyQ29udGV4dCIsIm1lcmdlUmVnaXN0ZXIiLCIkZ2V0U2VsZWN0aW9uIiwiJGlzUmFuZ2VTZWxlY3Rpb24iLCIkaXNUZXh0Tm9kZSIsIkNPTU1BTkRfUFJJT1JJVFlfTE9XIiwiU0VMRUNUSU9OX0NIQU5HRV9DT01NQU5EIiwidXNlQ2FsbGJhY2siLCJ1c2VFZmZlY3QiLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsIlJlYWN0IiwiY3JlYXRlUG9ydGFsIiwidXNlRWRpdG9yQ29uZmlnQ29udGV4dCIsImdldERPTVJhbmdlUmVjdCIsInNldEZsb2F0aW5nRWxlbVBvc2l0aW9uIiwiVG9vbGJhckJ1dHRvbiIsIlRvb2xiYXJEcm9wZG93biIsIkJ1dHRvblNlY3Rpb25FbnRyeSIsImFuY2hvckVsZW0iLCJlZGl0b3IiLCJlbnRyeSIsIkNvbXBvbmVudCIsImtleSIsIkNoaWxkQ29tcG9uZW50IiwiVG9vbGJhclNlY3Rpb24iLCJpbmRleCIsInNlY3Rpb24iLCJlZGl0b3JDb25maWciLCJJY29uIiwidHlwZSIsImVudHJpZXMiLCJsZW5ndGgiLCJkaXYiLCJjbGFzc05hbWUiLCJzZWN0aW9uS2V5IiwibWFwIiwiZmVhdHVyZXMiLCJmbG9hdGluZ1NlbGVjdFRvb2xiYXIiLCJzZWN0aW9ucyIsIkZsb2F0aW5nU2VsZWN0VG9vbGJhciIsInBvcHVwQ2hhclN0eWxlc0VkaXRvclJlZiIsImNhcmV0UmVmIiwiY2xvc2VGbG9hdGluZ1Rvb2xiYXIiLCJjdXJyZW50IiwiaXNPcGFjaXR5WmVybyIsInN0eWxlIiwib3BhY2l0eSIsImlzUG9pbnRlckV2ZW50c05vbmUiLCJwb2ludGVyRXZlbnRzIiwibW91c2VNb3ZlTGlzdGVuZXIiLCJlIiwiYnV0dG9ucyIsIngiLCJjbGllbnRYIiwieSIsImNsaWVudFkiLCJlbGVtZW50VW5kZXJNb3VzZSIsImRvY3VtZW50IiwiZWxlbWVudEZyb21Qb2ludCIsImNvbnRhaW5zIiwibW91c2VVcExpc3RlbmVyIiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJ1cGRhdGVUZXh0Rm9ybWF0RmxvYXRpbmdUb29sYmFyIiwic2VsZWN0aW9uIiwicG9wdXBDaGFyU3R5bGVzRWRpdG9yRWxlbSIsIm5hdGl2ZVNlbGVjdGlvbiIsIndpbmRvdyIsImdldFNlbGVjdGlvbiIsInJvb3RFbGVtZW50IiwiZ2V0Um9vdEVsZW1lbnQiLCJpc0NvbGxhcHNlZCIsImFuY2hvck5vZGUiLCJyYW5nZVJlY3QiLCJzY3JvbGxlckVsZW0iLCJwYXJlbnRFbGVtZW50IiwidXBkYXRlIiwiZ2V0RWRpdG9yU3RhdGUiLCJyZWFkIiwicmVnaXN0ZXJVcGRhdGVMaXN0ZW5lciIsImVkaXRvclN0YXRlIiwicmVnaXN0ZXJDb21tYW5kIiwicmVmIiwiaXNFZGl0YWJsZSIsIkZyYWdtZW50IiwiaSIsInVzZUZsb2F0aW5nVGV4dEZvcm1hdFRvb2xiYXIiLCJpc1RleHQiLCJzZXRJc1RleHQiLCJ1cGRhdGVQb3B1cCIsImlzQ29tcG9zaW5nIiwiZ2V0VGV4dENvbnRlbnQiLCJub2RlcyIsImdldE5vZGVzIiwiZm91bmROb2RlV2l0aFRleHQiLCJub2RlIiwicmF3VGV4dENvbnRlbnQiLCJyZXBsYWNlIiwicmVnaXN0ZXJSb290TGlz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
267
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvRmxvYXRpbmdTZWxlY3RUb29sYmFyL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCdcbmltcG9ydCB0eXBlIHsgTGV4aWNhbEVkaXRvciB9IGZyb20gJ2xleGljYWwnXG5cbmltcG9ydCB7IHVzZUxleGljYWxDb21wb3NlckNvbnRleHQgfSBmcm9tICdAbGV4aWNhbC9yZWFjdC9MZXhpY2FsQ29tcG9zZXJDb250ZXh0LmpzJ1xuaW1wb3J0IHsgbWVyZ2VSZWdpc3RlciB9IGZyb20gJ0BsZXhpY2FsL3V0aWxzJ1xuaW1wb3J0IHtcbiAgJGdldFNlbGVjdGlvbixcbiAgJGlzUmFuZ2VTZWxlY3Rpb24sXG4gICRpc1RleHROb2RlLFxuICBDT01NQU5EX1BSSU9SSVRZX0xPVyxcbiAgU0VMRUNUSU9OX0NIQU5HRV9DT01NQU5ELFxufSBmcm9tICdsZXhpY2FsJ1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBjcmVhdGVQb3J0YWwgfSBmcm9tICdyZWFjdC1kb20nXG5cbmltcG9ydCB0eXBlIHsgRmxvYXRpbmdUb29sYmFyU2VjdGlvbiwgRmxvYXRpbmdUb29sYmFyU2VjdGlvbkVudHJ5IH0gZnJvbSAnLi90eXBlcy5qcydcblxuaW1wb3J0IHsgdXNlRWRpdG9yQ29uZmlnQ29udGV4dCB9IGZyb20gJy4uLy4uL2NvbmZpZy9jbGllbnQvRWRpdG9yQ29uZmlnUHJvdmlkZXIuanMnXG5pbXBvcnQgeyBnZXRET01SYW5nZVJlY3QgfSBmcm9tICcuLi8uLi91dGlscy9nZXRET01SYW5nZVJlY3QuanMnXG5pbXBvcnQgeyBzZXRGbG9hdGluZ0VsZW1Qb3NpdGlvbiB9IGZyb20gJy4uLy4uL3V0aWxzL3NldEZsb2F0aW5nRWxlbVBvc2l0aW9uLmpzJ1xuaW1wb3J0IHsgVG9vbGJhckJ1dHRvbiB9IGZyb20gJy4vVG9vbGJhckJ1dHRvbi9pbmRleC5qcydcbmltcG9ydCB7IFRvb2xiYXJEcm9wZG93biB9IGZyb20gJy4vVG9vbGJhckRyb3Bkb3duL2luZGV4LmpzJ1xuaW1wb3J0ICcuL2luZGV4LnNjc3MnXG5cbmZ1bmN0aW9uIEJ1dHRvblNlY3Rpb25FbnRyeSh7XG4gIGFuY2hvckVsZW0sXG4gIGVkaXRvcixcbiAgZW50cnksXG59OiB7XG4gIGFuY2hvckVsZW06IEhUTUxFbGVtZW50XG4gIGVkaXRvcjogTGV4aWNhbEVkaXRvclxuICBlbnRyeTogRmxvYXRpbmdUb29sYmFyU2VjdGlvbkVudHJ5XG59KTogUmVhY3QuUmVhY3ROb2RlIHtcbiAgaWYgKGVudHJ5LkNvbXBvbmVudCkge1xuICAgIHJldHVybiAoXG4gICAgICBlbnRyeT8uQ29tcG9uZW50ICYmIChcbiAgICAgICAgPGVudHJ5LkNvbXBvbmVudCBhbmNob3JFbGVtPXthbmNob3JFbGVtfSBlZGl0b3I9e2VkaXRvcn0gZW50cnk9e2VudHJ5fSBrZXk9e2VudHJ5LmtleX0gLz5cbiAgICAgIClcbiAgICApXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxUb29sYmFyQnV0dG9uIGVudHJ5PXtlbnRyeX0ga2V5PXtlbnRyeS5rZXl9PlxuICAgICAge2VudHJ5Py5DaGlsZENvbXBvbmVudCAmJiA8ZW50cnkuQ2hpbGRDb21wb25lbnQgLz59XG4gICAgPC9Ub29sYmFyQnV0dG9uPlxuICApXG59XG5cbmZ1bmN0aW9uIFRvb2xiYXJTZWN0aW9uKHtcbiAgYW5jaG9yRWxlbSxcbiAgZWRpdG9yLFxuICBpbmRleCxcbiAgc2VjdGlvbixcbn06IHtcbiAgYW5jaG9yRWxlbTogSFRNTEVsZW1lbnRcbiAgZWRpdG9yOiBMZXhpY2FsRWRpdG9yXG4gIGluZGV4OiBudW1iZXJcbiAgc2VjdGlvbjogRmxvYXRpbmdUb29sYmFyU2VjdGlvblxufSk6IFJlYWN0LlJlYWN0Tm9kZSB7XG4gIGNvbnN0IHsgZWRpdG9yQ29uZmlnIH0gPSB1c2VFZGl0b3JDb25maWdDb250ZXh0KClcblxuICBjb25zdCBJY29uID1cbiAgICBzZWN0aW9uPy50eXBlID09PSAnZHJvcGRvd24nICYmIHNlY3Rpb24uZW50cmllcy5sZW5ndGggJiYgc2VjdGlvbi5DaGlsZENvbXBvbmVudFxuICAgICAgPyBzZWN0aW9uLkNoaWxkQ29tcG9uZW50XG4gICAgICA6IG51bGxcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGNsYXNzTmFtZT17YGZsb2F0aW5nLXNlbGVjdC10b29sYmFyLXBvcHVwX19zZWN0aW9uIGZsb2F0aW5nLXNlbGVjdC10b29sYmFyLXBvcHVwX19zZWN0aW9uLSR7c2VjdGlvbi5rZXl9YH1cbiAgICAgIGtleT17c2VjdGlvbi5rZXl9XG4gICAgPlxuICAgICAge3NlY3Rpb24udHlwZSA9PT0gJ2Ryb3Bkb3duJyAmJlxuICAgICAgICBzZWN0aW9uLmVudHJpZXMubGVuZ3RoICYmXG4gICAgICAgIChJY29uID8gKFxuICAgICAgICAgIDxUb29sYmFyRHJvcGRvd25cbiAgICAgICAgICAgIEljb249e0ljb259XG4gICAgICAgICAgICBhbmNob3JFbGVtPXthbmNob3JFbGVtfVxuICAgICAgICAgICAgZWRpdG9yPXtlZGl0b3J9XG4gICAgICAgICAgICBlbnRyaWVzPXtzZWN0aW9uLmVudHJpZXN9XG4gICAgICAgICAgICBzZWN0aW9uS2V5PXtzZWN0aW9uLmtleX1cbiAgICAgICAgICAvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxUb29sYmFyRHJvcGRvd25cbiAgICAgICAgICAgIGFuY2hvckVsZW09e2FuY2hvckVsZW19XG4gICAgICAgICAgICBlZGl0b3I9e2VkaXRvcn1cbiAgICAgICAgICAgIGVudHJpZXM9e3NlY3Rpb24uZW50cmllc31cbiAgICAgICAgICAgIHNlY3Rpb25LZXk9e3NlY3Rpb24ua2V5fVxuICAgICAgICAgIC8+XG4gICAgICAgICkpfVxuICAgICAge3NlY3Rpb24udHlwZSA9PT0gJ2J1dHRvbnMnICYmXG4gICAgICAgIHNlY3Rpb24uZW50cmllcy5sZW5ndGggJiZcbiAgICAgICAgc2VjdGlvbi5lbnRyaWVzLm1hcCgoZW50cnkpID0+IHtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEJ1dHRvblNlY3Rpb25FbnRyeVxuICAgICAgICAgICAgICBhbmNob3JFbGVtPXthbmNob3JFbGVtfVxuICAgICAgICAgICAgICBlZGl0b3I9e2VkaXRvcn1cbiAgICAgICAgICAgICAgZW50cnk9e2VudHJ5fVxuICAgICAgICAgICAgICBrZXk9e2VudHJ5LmtleX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKVxuICAgICAgICB9KX1cbiAgICAgIHtpbmRleCA8IGVkaXRvckNvbmZpZy5mZWF0dXJlcy5mbG9hdGluZ1NlbGVjdFRvb2xiYXI/LnNlY3Rpb25zLmxlbmd0aCAtIDEgJiYgKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRpdmlkZXJcIiAvPlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKVxufVxuXG5mdW5jdGlvbiBGbG9hdGluZ1NlbGVjdFRvb2xiYXIoe1xuICBhbmNob3JFbGVtLFxuICBlZGl0b3IsXG59OiB7XG4gIGFuY2hvckVsZW06IEhUTUxFbGVtZW50XG4gIGVkaXRvcjogTGV4aWNhbEVkaXRvclxufSk6IFJlYWN0LlJlYWN0Tm9kZSB7XG4gIGNvbnN0IHBvcHVwQ2hhclN0eWxlc0VkaXRvclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudCB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGNhcmV0UmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50IHwgbnVsbD4obnVsbClcblxuICBjb25zdCB7IGVkaXRvckNvbmZpZyB9ID0gdXNlRWRpdG9yQ29uZmlnQ29udGV4dCgpXG5cbiAgY29uc3QgY2xvc2VGbG9hdGluZ1Rvb2xiYXIgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKHBvcHVwQ2hhclN0eWxlc0VkaXRvclJlZj8uY3VycmVudCkge1xuICAgICAgY29uc3QgaXNPcGFjaXR5WmVybyA9IHBvcHVwQ2hhclN0eWxlc0VkaXRvclJlZi5jdXJyZW50LnN0eWxlLm9wYWNpdHkgPT09ICcwJ1xuICAgICAgY29uc3QgaXNQb2ludGVyRXZlbnRzTm9uZSA9IHBvcHVwQ2hhclN0eWxlc0VkaXRvclJlZi5jdXJyZW50LnN0eWxlLnBvaW50ZXJFdmVudHMgPT09ICdub25lJ1xuXG4gICAgICBpZiAoIWlzT3BhY2l0eVplcm8pIHtcbiAgICAgICAgcG9wdXBDaGFyU3R5bGVzRWRpdG9yUmVmLmN1cnJlbnQuc3R5bGUub3BhY2l0eSA9ICcwJ1xuICAgICAgfVxuICAgICAgaWYgKCFpc1BvaW50ZXJFdmVudHNOb25lKSB7XG4gICAgICAgIHBvcHVwQ2hhclN0eWxlc0VkaXRvclJlZi5jdXJyZW50LnN0eWxlLnBvaW50ZXJFdmVudHMgPSAnbm9uZSdcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWZdKVxuXG4gIGNvbnN0IG1vdXNlTW92ZUxpc3RlbmVyID0gdXNlQ2FsbGJhY2soXG4gICAgKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgIGlmIChwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWY/LmN1cnJlbnQgJiYgKGUuYnV0dG9ucyA9PT0gMSB8fCBlLmJ1dHRvbnMgPT09IDMpKSB7XG4gICAgICAgIGNvbnN0IGlzT3BhY2l0eVplcm8gPSBwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWYuY3VycmVudC5zdHlsZS5vcGFjaXR5ID09PSAnMCdcbiAgICAgICAgY29uc3QgaXNQb2ludGVyRXZlbnRzTm9uZSA9IHBvcHVwQ2hhclN0eWxlc0VkaXRvclJlZi5jdXJyZW50LnN0eWxlLnBvaW50ZXJFdmVudHMgPT09ICdub25lJ1xuICAgICAgICBpZiAoIWlzT3BhY2l0eVplcm8gfHwgIWlzUG9pbnRlckV2ZW50c05vbmUpIHtcbiAgICAgICAgICAvLyBDaGVjayBpZiB0aGUgbW91c2UgaXMgbm90IG92ZXIgdGhlIHBvcHVwXG4gICAgICAgICAgY29uc3QgeCA9IGUuY2xpZW50WFxuICAgICAgICAgIGNvbnN0IHkgPSBlLmNsaWVudFlcbiAgICAgICAgICBjb25zdCBlbGVtZW50VW5kZXJNb3VzZSA9IGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoeCwgeSlcbiAgICAgICAgICBpZiAoIXBvcHVwQ2hhclN0eWxlc0VkaXRvclJlZi5jdXJyZW50LmNvbnRhaW5zKGVsZW1lbnRVbmRlck1vdXNlKSkge1xuICAgICAgICAgICAgLy8gTW91c2UgaXMgbm90IG92ZXIgdGhlIHRhcmdldCBlbGVtZW50ID0+IG5vdCBhIG5vcm1hbCBjbGljaywgYnV0IHByb2JhYmx5IGEgZHJhZ1xuICAgICAgICAgICAgY2xvc2VGbG9hdGluZ1Rvb2xiYXIoKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgW2Nsb3NlRmxvYXRpbmdUb29sYmFyXSxcbiAgKVxuXG4gIGNvbnN0IG1vdXNlVXBMaXN0ZW5lciA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAocG9wdXBDaGFyU3R5bGVzRWRpdG9yUmVmPy5jdXJyZW50KSB7XG4gICAgICBpZiAocG9wdXBDaGFyU3R5bGVzRWRpdG9yUmVmLmN1cnJlbnQuc3R5bGUub3BhY2l0eSAhPT0gJzEnKSB7XG4gICAgICAgIHBvcHVwQ2hhclN0eWxlc0VkaXRvclJlZi5jdXJyZW50LnN0eWxlLm9wYWNpdHkgPSAnMSdcbiAgICAgIH1cbiAgICAgIGlmIChwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWYuY3VycmVudC5zdHlsZS5wb2ludGVyRXZlbnRzICE9PSAnYXV0bycpIHtcbiAgICAgICAgcG9wdXBDaGFyU3R5bGVzRWRpdG9yUmVmLmN1cnJlbnQuc3R5bGUucG9pbnRlckV2ZW50cyA9ICdhdXRvJ1xuICAgICAgfVxuICAgIH1cbiAgfSwgW3BvcHVwQ2hhclN0eWxlc0VkaXRvclJlZl0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBtb3VzZU1vdmVMaXN0ZW5lcilcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgbW91c2VVcExpc3RlbmVyKVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG1vdXNlTW92ZUxpc3RlbmVyKVxuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIG1vdXNlVXBMaXN0ZW5lcilcbiAgICB9XG4gIH0sIFtwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWYsIG1vdXNlTW92ZUxpc3RlbmVyLCBtb3VzZVVwTGlzdGVuZXJdKVxuXG4gIGNvbnN0IHVwZGF0ZVRleHRGb3JtYXRGbG9hdGluZ1Rvb2xiYXIgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3Qgc2VsZWN0aW9uID0gJGdldFNlbGVjdGlvbigpXG5cbiAgICBjb25zdCBwb3B1cENoYXJTdHlsZXNFZGl0b3JFbGVtID0gcG9wdXBDaGFyU3R5bGVzRWRpdG9yUmVmLmN1cnJlbnRcbiAgICBjb25zdCBuYXRpdmVTZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKClcblxuICAgIGlmIChwb3B1cENoYXJTdHlsZXNFZGl0b3JFbGVtID09PSBudWxsKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCByb290RWxlbWVudCA9IGVkaXRvci5nZXRSb290RWxlbWVudCgpXG4gICAgaWYgKFxuICAgICAgc2VsZWN0aW9uICE9PSBudWxsICYmXG4gICAgICBuYXRpdmVTZWxlY3Rpb24gIT09IG51bGwgJiZcbiAgICAgICFuYXRpdmVTZWxlY3Rpb24uaXNDb2xsYXBzZWQgJiZcbiAgICAgIHJvb3RFbGVtZW50ICE9PSBudWxsICYmXG4gICAgICByb290RWxlbWVudC5jb250YWlucyhuYXRpdmVTZWxlY3Rpb24uYW5jaG9yTm9kZSlcbiAgICApIHtcbiAgICAgIGNvbnN0IHJhbmdlUmVjdCA9IGdldERPTVJhbmdlUmVjdChuYXRpdmVTZWxlY3Rpb24sIHJvb3RFbGVtZW50KVxuXG4gICAgICBzZXRGbG9hdGluZ0VsZW1Qb3NpdGlvbihyYW5nZVJlY3QsIHBvcHVwQ2hhclN0eWxlc0VkaXRvckVsZW0sIGFuY2hvckVsZW0sICdjZW50ZXInKVxuXG4gICAgICBpZiAoY2FyZXRSZWYuY3VycmVudCkge1xuICAgICAgICBzZXRGbG9hdGluZ0VsZW1Qb3NpdGlvbihcbiAgICAgICAgICByYW5nZVJlY3QsIC8vIHNlbGVjdGlvbiB0byBwb3NpdGlvbiBhcm91bmRcbiAgICAgICAgICBjYXJldFJlZi5jdXJyZW50LCAvLyB3aGF0IHRvIHBvc2l0aW9uXG4gICAgICAgICAgcG9wdXBDaGFyU3R5bGVzRWRpdG9yRWxlbSwgLy8gYW5jaG9yIGVsZW1cbiAgICAgICAgICAnY2VudGVyJyxcbiAgICAgICAgICAxMCxcbiAgICAgICAgICA1LFxuICAgICAgICAgIHRydWUsXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtlZGl0b3IsIGFuY2hvckVsZW1dKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgc2Nyb2xsZXJFbGVtID0gYW5jaG9yRWxlbS5wYXJlbnRFbGVtZW50XG5cbiAgICBjb25zdCB1cGRhdGUgPSAoKSA9PiB7XG4gICAgICBlZGl0b3IuZ2V0RWRpdG9yU3RhdGUoKS5yZWFkKCgpID0+IHtcbiAgICAgICAgdXBkYXRlVGV4dEZvcm1hdEZsb2F0aW5nVG9vbGJhcigpXG4gICAgICB9KVxuICAgIH1cblxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB1cGRhdGUpXG4gICAgaWYgKHNjcm9sbGVyRWxlbSkge1xuICAgICAgc2Nyb2xsZXJFbGVtLmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHVwZGF0ZSlcbiAgICB9XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHVwZGF0ZSlcbiAgICAgIGlmIChzY3JvbGxlckVsZW0pIHtcbiAgICAgICAgc2Nyb2xsZXJFbGVtLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHVwZGF0ZSlcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtlZGl0b3IsIHVwZGF0ZVRleHRGb3JtYXRGbG9hdGluZ1Rvb2xiYXIsIGFuY2hvckVsZW1dKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZWRpdG9yLmdldEVkaXRvclN0YXRlKCkucmVhZCgoKSA9PiB7XG4gICAgICB1cGRhdGVUZXh0Rm9ybWF0RmxvYXRpbmdUb29sYmFyKClcbiAgICB9KVxuICAgIHJldHVybiBtZXJnZVJlZ2lzdGVyKFxuICAgICAgZWRpdG9yLnJlZ2lzdGVyVXBkYXRlTGlzdGVuZXIoKHsgZWRpdG9yU3RhdGUgfSkgPT4ge1xuICAgICAgICBlZGl0b3JTdGF0ZS5yZWFkKCgpID0+IHtcbiAgICAgICAgICB1cGRhdGVUZXh0Rm9ybWF0RmxvYXRpbmdUb29sYmFyKClcbiAgICAgICAgfSlcbiAgICAgIH0pLFxuXG4gICAgICBlZGl0b3IucmVnaXN0ZXJDb21tYW5kKFxuICAgICAgICBTRUxFQ1RJT05fQ0hBTkdFX0NPTU1BTkQsXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICB1cGRhdGVUZXh0Rm9ybWF0RmxvYXRpbmdUb29sYmFyKClcbiAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgfSxcbiAgICAgICAgQ09NTUFORF9QUklPUklUWV9MT1csXG4gICAgICApLFxuICAgIClcbiAgfSwgW2VkaXRvciwgdXBkYXRlVGV4dEZvcm1hdEZsb2F0aW5nVG9vbGJhcl0pXG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cImZsb2F0aW5nLXNlbGVjdC10b29sYmFyLXBvcHVwXCIgcmVmPXtwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWZ9PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJjYXJldFwiIHJlZj17Y2FyZXRSZWZ9IC8+XG4gICAgICB7ZWRpdG9yLmlzRWRpdGFibGUoKSAmJiAoXG4gICAgICAgIDxSZWFjdC5GcmFnbWVudD5cbiAgICAgICAgICB7ZWRpdG9yQ29uZmlnPy5mZWF0dXJlcyAmJlxuICAgICAgICAgICAgZWRpdG9yQ29uZmlnLmZlYXR1cmVzPy5mbG9hdGluZ1NlbGVjdFRvb2xiYXI/LnNlY3Rpb25zLm1hcCgoc2VjdGlvbiwgaSkgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxUb29sYmFyU2VjdGlvblxuICAgICAgICAgICAgICAgICAgYW5jaG9yRWxlbT17YW5jaG9yRWxlbX1cbiAgICAgICAgICAgICAgICAgIGVkaXRvcj17ZWRpdG9yfVxuICAgICAgICAgICAgICAgICAgaW5kZXg9e2l9XG4gICAgICAgICAgICAgICAgICBrZXk9e3NlY3Rpb24ua2V5fVxuICAgICAgICAgICAgICAgICAgc2VjdGlvbj17c2VjdGlvbn1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9KX1cbiAgICAgICAgPC9SZWFjdC5GcmFnbWVudD5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gIClcbn1cblxuZnVuY3Rpb24gdXNlRmxvYXRpbmdUZXh0Rm9ybWF0VG9vbGJhcihcbiAgZWRpdG9yOiBMZXhpY2FsRWRpdG9yLFxuICBhbmNob3JFbGVtOiBIVE1MRWxlbWVudCxcbik6IEpTWC5FbGVtZW50IHwgbnVsbCB7XG4gIGNvbnN0IFtpc1RleHQsIHNldElzVGV4dF0gPSB1c2VTdGF0ZShmYWxzZSlcblxuICBjb25zdCB1cGRhdGVQb3B1cCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBlZGl0b3IuZ2V0RWRpdG9yU3RhdGUoKS5yZWFkKCgpID0+IHtcbiAgICAgIC8vIFNob3VsZCBub3QgdG8gcG9wIHVwIHRoZSBmbG9hdGluZyB0b29sYmFyIHdoZW4gdXNpbmcgSU1FIGlucHV0XG4gICAgICBpZiAoZWRpdG9yLmlzQ29tcG9zaW5nKCkpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBjb25zdCBzZWxlY3Rpb24gPSAkZ2V0U2VsZWN0aW9uKClcbiAgICAgIGNvbnN0IG5hdGl2ZVNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKVxuICAgICAgY29uc3Qgcm9vdEVsZW1lbnQgPSBlZGl0b3IuZ2V0Um9vdEVsZW1lbnQoKVxuXG4gICAgICBpZiAoXG4gICAgICAgIG5hdGl2ZVNlbGVjdGlvbiAhPT0gbnVsbCAmJlxuICAgICAgICAoISRpc1JhbmdlU2VsZWN0aW9uKHNlbGVjdGlvbikgfHxcbiAgICAgICAgICByb290RWxlbWVudCA9PT0gbnVsbCB8fFxuICAgICAgICAgICFyb290RWxlbWVudC5jb250YWlucyhuYXRpdmVTZWxlY3Rpb24uYW5jaG9yTm9kZSkpXG4gICAgICApIHtcbiAgICAgICAgc2V0SXNUZXh0KGZhbHNlKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgaWYgKCEkaXNSYW5nZVNlbGVjdGlvbihzZWxlY3Rpb24pKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBpZiAoc2VsZWN0aW9uLmdldFRleHRDb250ZW50KCkgIT09ICcnKSB7XG4gICAgICAgIGNvbnN0IG5vZGVzID0gc2VsZWN0aW9uLmdldE5vZGVzKClcbiAgICAgICAgbGV0IGZvdW5kTm9kZVdpdGhUZXh0ID0gZmFsc2VcbiAgICAgICAgZm9yIChjb25zdCBub2RlIG9mIG5vZGVzKSB7XG4gICAgICAgICAgaWYgKCRpc1RleHROb2RlKG5vZGUpKSB7XG4gICAgICAgICAgICBzZXRJc1RleHQodHJ1ZSlcbiAgICAgICAgICAgIGZvdW5kTm9kZVdpdGhUZXh0ID0gdHJ1ZVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFmb3VuZE5vZGVXaXRoVGV4dCkge1xuICAgICAgICAgIHNldElzVGV4dChmYWxzZSlcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0SXNUZXh0KGZhbHNlKVxuICAgICAgfVxuXG4gICAgICBjb25zdCByYXdUZXh0Q29udGVudCA9IHNlbGVjdGlvbi5nZXRUZXh0Q29udGVudCgpLnJlcGxhY2UoL1xcbi9nLCAnJylcbiAgICAgIGlmICghc2VsZWN0aW9uLmlzQ29sbGFwc2VkKCkgJiYgcmF3VGV4dENvbnRlbnQgPT09ICcnKSB7XG4gICAgICAgIHNldElzVGV4dChmYWxzZSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgfSlcbiAgfSwgW2VkaXRvcl0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdzZWxlY3Rpb25jaGFuZ2UnLCB1cGRhdGVQb3B1cClcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgdXBkYXRlUG9wdXApXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3NlbGVjdGlvbmNoYW5nZScsIHVwZGF0ZVBvcHVwKVxuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHVwZGF0ZVBvcHVwKVxuICAgIH1cbiAgfSwgW3VwZGF0ZVBvcHVwXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJldHVybiBtZXJnZVJlZ2lzdGVyKFxuICAgICAgZWRpdG9yLnJlZ2lzdGVyVXBkYXRlTGlzdGVuZXIoKCkgPT4ge1xuICAgICAgICB1cGRhdGVQb3B1cCgpXG4gICAgICB9KSxcbiAgICAgIGVkaXRvci5yZWdpc3RlclJvb3RMaXN0ZW5lcigoKSA9PiB7XG4gICAgICAgIGlmIChlZGl0b3IuZ2V0Um9vdEVsZW1lbnQoKSA9PT0gbnVsbCkge1xuICAgICAgICAgIHNldElzVGV4dChmYWxzZSlcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgKVxuICB9LCBbZWRpdG9yLCB1cGRhdGVQb3B1cF0pXG5cbiAgaWYgKCFpc1RleHQpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgcmV0dXJuIGNyZWF0ZVBvcnRhbCg8RmxvYXRpbmdTZWxlY3RUb29sYmFyIGFuY2hvckVsZW09e2FuY2hvckVsZW19IGVkaXRvcj17ZWRpdG9yfSAvPiwgYW5jaG9yRWxlbSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEZsb2F0aW5nU2VsZWN0VG9vbGJhclBsdWdpbih7XG4gIGFuY2hvckVsZW0gPSBkb2N1bWVudC5ib2R5LFxufToge1xuICBhbmNob3JFbGVtPzogSFRNTEVsZW1lbnRcbn0pOiBKU1guRWxlbWVudCB8IG51bGwge1xuICBjb25zdCBbZWRpdG9yXSA9IHVzZUxleGljYWxDb21wb3NlckNvbnRleHQoKVxuICByZXR1cm4gdXNlRmxvYXRpbmdUZXh0Rm9ybWF0VG9vbGJhcihlZGl0b3IsIGFuY2hvckVsZW0pXG59XG4iXSwibmFtZXMiOlsidXNlTGV4aWNhbENvbXBvc2VyQ29udGV4dCIsIm1lcmdlUmVnaXN0ZXIiLCIkZ2V0U2VsZWN0aW9uIiwiJGlzUmFuZ2VTZWxlY3Rpb24iLCIkaXNUZXh0Tm9kZSIsIkNPTU1BTkRfUFJJT1JJVFlfTE9XIiwiU0VMRUNUSU9OX0NIQU5HRV9DT01NQU5EIiwidXNlQ2FsbGJhY2siLCJ1c2VFZmZlY3QiLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsIlJlYWN0IiwiY3JlYXRlUG9ydGFsIiwidXNlRWRpdG9yQ29uZmlnQ29udGV4dCIsImdldERPTVJhbmdlUmVjdCIsInNldEZsb2F0aW5nRWxlbVBvc2l0aW9uIiwiVG9vbGJhckJ1dHRvbiIsIlRvb2xiYXJEcm9wZG93biIsIkJ1dHRvblNlY3Rpb25FbnRyeSIsImFuY2hvckVsZW0iLCJlZGl0b3IiLCJlbnRyeSIsIkNvbXBvbmVudCIsImtleSIsIkNoaWxkQ29tcG9uZW50IiwiVG9vbGJhclNlY3Rpb24iLCJpbmRleCIsInNlY3Rpb24iLCJlZGl0b3JDb25maWciLCJJY29uIiwidHlwZSIsImVudHJpZXMiLCJsZW5ndGgiLCJkaXYiLCJjbGFzc05hbWUiLCJzZWN0aW9uS2V5IiwibWFwIiwiZmVhdHVyZXMiLCJmbG9hdGluZ1NlbGVjdFRvb2xiYXIiLCJzZWN0aW9ucyIsIkZsb2F0aW5nU2VsZWN0VG9vbGJhciIsInBvcHVwQ2hhclN0eWxlc0VkaXRvclJlZiIsImNhcmV0UmVmIiwiY2xvc2VGbG9hdGluZ1Rvb2xiYXIiLCJjdXJyZW50IiwiaXNPcGFjaXR5WmVybyIsInN0eWxlIiwib3BhY2l0eSIsImlzUG9pbnRlckV2ZW50c05vbmUiLCJwb2ludGVyRXZlbnRzIiwibW91c2VNb3ZlTGlzdGVuZXIiLCJlIiwiYnV0dG9ucyIsIngiLCJjbGllbnRYIiwieSIsImNsaWVudFkiLCJlbGVtZW50VW5kZXJNb3VzZSIsImRvY3VtZW50IiwiZWxlbWVudEZyb21Qb2ludCIsImNvbnRhaW5zIiwibW91c2VVcExpc3RlbmVyIiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJ1cGRhdGVUZXh0Rm9ybWF0RmxvYXRpbmdUb29sYmFyIiwic2VsZWN0aW9uIiwicG9wdXBDaGFyU3R5bGVzRWRpdG9yRWxlbSIsIm5hdGl2ZVNlbGVjdGlvbiIsIndpbmRvdyIsImdldFNlbGVjdGlvbiIsInJvb3RFbGVtZW50IiwiZ2V0Um9vdEVsZW1lbnQiLCJpc0NvbGxhcHNlZCIsImFuY2hvck5vZGUiLCJyYW5nZVJlY3QiLCJzY3JvbGxlckVsZW0iLCJwYXJlbnRFbGVtZW50IiwidXBkYXRlIiwiZ2V0RWRpdG9yU3RhdGUiLCJyZWFkIiwicmVnaXN0ZXJVcGRhdGVMaXN0ZW5lciIsImVkaXRvclN0YXRlIiwicmVnaXN0ZXJDb21tYW5kIiwicmVmIiwiaXNFZGl0YWJsZSIsIkZyYWdtZW50IiwiaSIsInVzZUZsb2F0aW5nVGV4dEZvcm1hdFRvb2xiYXIiLCJpc1RleHQiLCJzZXRJc1RleHQiLCJ1cGRhdGVQb3B1cCIsImlzQ29tcG9zaW5nIiwiZ2V0VGV4dENvbnRlbnQiLCJub2RlcyIsImdldE5vZGVzIiwiZm91bmROb2RlV2l0aFRleHQiLCJub2RlIiwicmF3VGV4dENvbnRlbnQiLCJyZXBsYWNlIiwicmVnaXN0ZXJSb290TGlzdGVuZXIiLCJGbG9hdGluZ1NlbGVjdFRvb2xiYXJQbHVnaW4iLCJib2R5Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUdBLFNBQVNBLHlCQUF5QixRQUFRLDJDQUEwQztBQUNwRixTQUFTQyxhQUFhLFFBQVEsaUJBQWdCO0FBQzlDLFNBQ0VDLGFBQWEsRUFDYkMsaUJBQWlCLEVBQ2pCQyxXQUFXLEVBQ1hDLG9CQUFvQixFQUNwQkMsd0JBQXdCLFFBQ25CLFVBQVM7QUFDaEIsU0FBU0MsV0FBVyxFQUFFQyxTQUFTLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxRQUFRLFFBQU87QUFDaEUsWUFBWUMsV0FBVyxRQUFPO0FBQzlCLFNBQVNDLFlBQVksUUFBUSxZQUFXO0FBSXhDLFNBQVNDLHNCQUFzQixRQUFRLDhDQUE2QztBQUNwRixTQUFTQyxlQUFlLFFBQVEsaUNBQWdDO0FBQ2hFLFNBQVNDLHVCQUF1QixRQUFRLHlDQUF3QztBQUNoRixTQUFTQyxhQUFhLFFBQVEsMkJBQTBCO0FBQ3hELFNBQVNDLGVBQWUsUUFBUSw2QkFBNEI7QUFDNUQsT0FBTyxlQUFjO0FBRXJCLFNBQVNDLG1CQUFtQixFQUMxQkMsVUFBVSxFQUNWQyxNQUFNLEVBQ05DLEtBQUssRUFLTjtJQUNDLElBQUlBLE1BQU1DLFNBQVMsRUFBRTtRQUNuQixPQUNFRCxPQUFPQywyQkFDTCxvQkFBQ0QsTUFBTUMsU0FBUztZQUFDSCxZQUFZQTtZQUFZQyxRQUFRQTtZQUFRQyxPQUFPQTtZQUFPRSxLQUFLRixNQUFNRSxHQUFHOztJQUczRjtJQUVBLHFCQUNFLG9CQUFDUDtRQUFjSyxPQUFPQTtRQUFPRSxLQUFLRixNQUFNRSxHQUFHO09BQ3hDRixPQUFPRyxnQ0FBa0Isb0JBQUNILE1BQU1HLGNBQWM7QUFHckQ7QUFFQSxTQUFTQyxlQUFlLEVBQ3RCTixVQUFVLEVBQ1ZDLE1BQU0sRUFDTk0sS0FBSyxFQUNMQyxPQUFPLEVBTVI7SUFDQyxNQUFNLEVBQUVDLFlBQVksRUFBRSxHQUFHZjtJQUV6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
@@ -1,7 +1,7 @@
1
1
  'use client';
2
- import { MarkdownShortcutPlugin as LexicalMarkdownShortcutPlugin } from '@lexical/react/LexicalMarkdownShortcutPlugin';
2
+ import { MarkdownShortcutPlugin as LexicalMarkdownShortcutPlugin } from '@lexical/react/LexicalMarkdownShortcutPlugin.js';
3
3
  import * as React from 'react';
4
- import { useEditorConfigContext } from '../../config/client/EditorConfigProvider';
4
+ import { useEditorConfigContext } from '../../config/client/EditorConfigProvider.js';
5
5
  export const MarkdownShortcutPlugin = ()=>{
6
6
  const { editorConfig } = useEditorConfigContext();
7
7
  return /*#__PURE__*/ React.createElement(LexicalMarkdownShortcutPlugin, {
@@ -9,4 +9,4 @@ export const MarkdownShortcutPlugin = ()=>{
9
9
  });
10
10
  };
11
11
 
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvTWFya2Rvd25TaG9ydGN1dC9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnXG5pbXBvcnQgeyBNYXJrZG93blNob3J0Y3V0UGx1Z2luIGFzIExleGljYWxNYXJrZG93blNob3J0Y3V0UGx1Z2luIH0gZnJvbSAnQGxleGljYWwvcmVhY3QvTGV4aWNhbE1hcmtkb3duU2hvcnRjdXRQbHVnaW4nXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCdcblxuaW1wb3J0IHsgdXNlRWRpdG9yQ29uZmlnQ29udGV4dCB9IGZyb20gJy4uLy4uL2NvbmZpZy9jbGllbnQvRWRpdG9yQ29uZmlnUHJvdmlkZXInXG5cbmV4cG9ydCBjb25zdCBNYXJrZG93blNob3J0Y3V0UGx1Z2luOiBSZWFjdC5GQyA9ICgpID0+IHtcbiAgY29uc3QgeyBlZGl0b3JDb25maWcgfSA9IHVzZUVkaXRvckNvbmZpZ0NvbnRleHQoKVxuXG4gIHJldHVybiA8TGV4aWNhbE1hcmtkb3duU2hvcnRjdXRQbHVnaW4gdHJhbnNmb3JtZXJzPXtlZGl0b3JDb25maWcuZmVhdHVyZXMubWFya2Rvd25UcmFuc2Zvcm1lcnN9IC8+XG59XG4iXSwibmFtZXMiOlsiTWFya2Rvd25TaG9ydGN1dFBsdWdpbiIsIkxleGljYWxNYXJrZG93blNob3J0Y3V0UGx1Z2luIiwiUmVhY3QiLCJ1c2VFZGl0b3JDb25maWdDb250ZXh0IiwiZWRpdG9yQ29uZmlnIiwidHJhbnNmb3JtZXJzIiwiZmVhdHVyZXMiLCJtYXJrZG93blRyYW5zZm9ybWVycyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQSxTQUFTQSwwQkFBMEJDLDZCQUE2QixRQUFRLCtDQUE4QztBQUN0SCxZQUFZQyxXQUFXLFFBQU87QUFFOUIsU0FBU0Msc0JBQXNCLFFBQVEsMkNBQTBDO0FBRWpGLE9BQU8sTUFBTUgseUJBQW1DO0lBQzlDLE1BQU0sRUFBRUksWUFBWSxFQUFFLEdBQUdEO0lBRXpCLHFCQUFPLG9CQUFDRjtRQUE4QkksY0FBY0QsYUFBYUUsUUFBUSxDQUFDQyxvQkFBb0I7O0FBQ2hHLEVBQUMifQ==
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvTWFya2Rvd25TaG9ydGN1dC9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnXG5pbXBvcnQgeyBNYXJrZG93blNob3J0Y3V0UGx1Z2luIGFzIExleGljYWxNYXJrZG93blNob3J0Y3V0UGx1Z2luIH0gZnJvbSAnQGxleGljYWwvcmVhY3QvTGV4aWNhbE1hcmtkb3duU2hvcnRjdXRQbHVnaW4uanMnXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCdcblxuaW1wb3J0IHsgdXNlRWRpdG9yQ29uZmlnQ29udGV4dCB9IGZyb20gJy4uLy4uL2NvbmZpZy9jbGllbnQvRWRpdG9yQ29uZmlnUHJvdmlkZXIuanMnXG5cbmV4cG9ydCBjb25zdCBNYXJrZG93blNob3J0Y3V0UGx1Z2luOiBSZWFjdC5GQyA9ICgpID0+IHtcbiAgY29uc3QgeyBlZGl0b3JDb25maWcgfSA9IHVzZUVkaXRvckNvbmZpZ0NvbnRleHQoKVxuXG4gIHJldHVybiA8TGV4aWNhbE1hcmtkb3duU2hvcnRjdXRQbHVnaW4gdHJhbnNmb3JtZXJzPXtlZGl0b3JDb25maWcuZmVhdHVyZXMubWFya2Rvd25UcmFuc2Zvcm1lcnN9IC8+XG59XG4iXSwibmFtZXMiOlsiTWFya2Rvd25TaG9ydGN1dFBsdWdpbiIsIkxleGljYWxNYXJrZG93blNob3J0Y3V0UGx1Z2luIiwiUmVhY3QiLCJ1c2VFZGl0b3JDb25maWdDb250ZXh0IiwiZWRpdG9yQ29uZmlnIiwidHJhbnNmb3JtZXJzIiwiZmVhdHVyZXMiLCJtYXJrZG93blRyYW5zZm9ybWVycyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQSxTQUFTQSwwQkFBMEJDLDZCQUE2QixRQUFRLGtEQUFpRDtBQUN6SCxZQUFZQyxXQUFXLFFBQU87QUFFOUIsU0FBU0Msc0JBQXNCLFFBQVEsOENBQTZDO0FBRXBGLE9BQU8sTUFBTUgseUJBQW1DO0lBQzlDLE1BQU0sRUFBRUksWUFBWSxFQUFFLEdBQUdEO0lBRXpCLHFCQUFPLG9CQUFDRjtRQUE4QkksY0FBY0QsYUFBYUUsUUFBUSxDQUFDQyxvQkFBb0I7O0FBQ2hHLEVBQUMifQ==
@@ -1,8 +1,7 @@
1
1
  import type { LexicalCommand, LexicalEditor, TextNode } from 'lexical';
2
2
  import type { MutableRefObject, ReactPortal } from 'react';
3
- import type { MenuTextMatch } from '../useMenuTriggerMatch';
4
- import type { SlashMenuOption } from './types';
5
- import type { SlashMenuGroup } from './types';
3
+ import type { MenuTextMatch } from '../useMenuTriggerMatch.js';
4
+ import type { SlashMenuGroup, SlashMenuOption } from './types.js';
6
5
  export type MenuResolution = {
7
6
  getRect: () => DOMRect;
8
7
  match?: MenuTextMatch;
@@ -1 +1 @@
1
- {"version":3,"file":"LexicalMenu.d.ts","sourceRoot":"","sources":["../../../../../../src/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AACtE,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AAiB1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAE7C,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,EAAE,MAAM,OAAO,CAAA;IACtB,KAAK,CAAC,EAAE,aAAa,CAAA;CACtB,CAAA;AAID,MAAM,MAAM,YAAY,GAAG,CACzB,gBAAgB,EAAE,gBAAgB,CAAC,WAAW,GAAG,IAAI,CAAC,EACtD,SAAS,EAAE;IACT,iBAAiB,EAAE,KAAK,CAAC,cAAc,CAAC,CAAA;IACxC,sBAAsB,EAAE,CAAC,cAAc,EAAE,eAAe,KAAK,IAAI,CAAA;IACjE,iBAAiB,EAAE,IAAI,GAAG,MAAM,CAAA;IAChC,oBAAoB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAA;CAClD,EACD,cAAc,EAAE,IAAI,GAAG,MAAM,KAC1B,GAAG,CAAC,OAAO,GAAG,WAAW,GAAG,IAAI,CAAA;AA2ErC,wBAAgB,eAAe,CAC7B,OAAO,EAAE,WAAW,EACpB,aAAa,EAAE,OAAO,GACrB,eAAe,GAAG,WAAW,CAiB/B;AAYD,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,cAAc,GAAG,IAAI,EACjC,aAAa,EAAE,WAAW,GAAG,IAAI,EACjC,YAAY,EAAE,MAAM,IAAI,EACxB,kBAAkB,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,QA2CjD;AAED,eAAO,MAAM,yCAAyC,EAAE,cAAc,CAAC;IACrE,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,eAAe,CAAA;CACxB,CAA8D,CAAA;AAE/D,wBAAgB,WAAW,CAAC,EAC1B,gBAAgB,EAChB,KAAK,EACL,MAAM,EAEN,iBAAiB,EACjB,YAAY,EACZ,cAAc,EACd,UAAU,EACV,wBAAgC,GACjC,EAAE;IACD,gBAAgB,EAAE,gBAAgB,CAAC,WAAW,CAAC,CAAA;IAC/C,KAAK,EAAE,MAAM,IAAI,CAAA;IACjB,MAAM,EAAE,aAAa,CAAA;IACrB,iBAAiB,EAAE,KAAK,CAAC,cAAc,CAAC,CAAA;IACxC,YAAY,EAAE,YAAY,CAAA;IAC1B,cAAc,EAAE,CACd,MAAM,EAAE,eAAe,EACvB,uBAAuB,EAAE,QAAQ,GAAG,IAAI,EACxC,SAAS,EAAE,MAAM,IAAI,EACrB,cAAc,EAAE,MAAM,KACnB,IAAI,CAAA;IACT,UAAU,EAAE,cAAc,CAAA;IAC1B,wBAAwB,CAAC,EAAE,OAAO,CAAA;CACnC,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,CAoOrB;AAED,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,WAAW,EACvB,UAAU,EAAE,cAAc,GAAG,IAAI,EACjC,aAAa,EAAE,CAAC,CAAC,EAAE,cAAc,GAAG,IAAI,KAAK,IAAI,EACjD,SAAS,CAAC,EAAE,MAAM,GACjB,gBAAgB,CAAC,WAAW,CAAC,CA6F/B"}
1
+ {"version":3,"file":"LexicalMenu.d.ts","sourceRoot":"","sources":["../../../../../../src/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AACtE,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AAiB1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEjE,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,EAAE,MAAM,OAAO,CAAA;IACtB,KAAK,CAAC,EAAE,aAAa,CAAA;CACtB,CAAA;AAID,MAAM,MAAM,YAAY,GAAG,CACzB,gBAAgB,EAAE,gBAAgB,CAAC,WAAW,GAAG,IAAI,CAAC,EACtD,SAAS,EAAE;IACT,iBAAiB,EAAE,KAAK,CAAC,cAAc,CAAC,CAAA;IACxC,sBAAsB,EAAE,CAAC,cAAc,EAAE,eAAe,KAAK,IAAI,CAAA;IACjE,iBAAiB,EAAE,IAAI,GAAG,MAAM,CAAA;IAChC,oBAAoB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAA;CAClD,EACD,cAAc,EAAE,IAAI,GAAG,MAAM,KAC1B,GAAG,CAAC,OAAO,GAAG,WAAW,GAAG,IAAI,CAAA;AA2ErC,wBAAgB,eAAe,CAC7B,OAAO,EAAE,WAAW,EACpB,aAAa,EAAE,OAAO,GACrB,eAAe,GAAG,WAAW,CAiB/B;AAYD,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,cAAc,GAAG,IAAI,EACjC,aAAa,EAAE,WAAW,GAAG,IAAI,EACjC,YAAY,EAAE,MAAM,IAAI,EACxB,kBAAkB,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,QA2CjD;AAED,eAAO,MAAM,yCAAyC,EAAE,cAAc,CAAC;IACrE,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,eAAe,CAAA;CACxB,CAA8D,CAAA;AAE/D,wBAAgB,WAAW,CAAC,EAC1B,gBAAgB,EAChB,KAAK,EACL,MAAM,EAEN,iBAAiB,EACjB,YAAY,EACZ,cAAc,EACd,UAAU,EACV,wBAAgC,GACjC,EAAE;IACD,gBAAgB,EAAE,gBAAgB,CAAC,WAAW,CAAC,CAAA;IAC/C,KAAK,EAAE,MAAM,IAAI,CAAA;IACjB,MAAM,EAAE,aAAa,CAAA;IACrB,iBAAiB,EAAE,KAAK,CAAC,cAAc,CAAC,CAAA;IACxC,YAAY,EAAE,YAAY,CAAA;IAC1B,cAAc,EAAE,CACd,MAAM,EAAE,eAAe,EACvB,uBAAuB,EAAE,QAAQ,GAAG,IAAI,EACxC,SAAS,EAAE,MAAM,IAAI,EACrB,cAAc,EAAE,MAAM,KACnB,IAAI,CAAA;IACT,UAAU,EAAE,cAAc,CAAA;IAC1B,wBAAwB,CAAC,EAAE,OAAO,CAAA;CACnC,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,CAoOrB;AAED,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,WAAW,EACvB,UAAU,EAAE,cAAc,GAAG,IAAI,EACjC,aAAa,EAAE,CAAC,CAAC,EAAE,cAAc,GAAG,IAAI,KAAK,IAAI,EACjD,SAAS,CAAC,EAAE,MAAM,GACjB,gBAAgB,CAAC,WAAW,CAAC,CA6F/B"}
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';
2
+ import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js';
3
3
  import { mergeRegister } from '@lexical/utils';
4
4
  import { $getSelection, $isRangeSelection, COMMAND_PRIORITY_LOW, KEY_ARROW_DOWN_COMMAND, KEY_ARROW_UP_COMMAND, KEY_ENTER_COMMAND, KEY_ESCAPE_COMMAND, KEY_TAB_COMMAND, createCommand } from 'lexical';
5
5
  import { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react';
@@ -398,4 +398,4 @@ export function useMenuAnchorRef(anchorElem, resolution, setResolution, classNam
398
398
  return anchorElementRef;
399
399
  }
400
400
 
401
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvU2xhc2hNZW51L0xleGljYWxUeXBlYWhlYWRNZW51UGx1Z2luL0xleGljYWxNZW51LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCdcbmltcG9ydCB0eXBlIHsgTGV4aWNhbENvbW1hbmQsIExleGljYWxFZGl0b3IsIFRleHROb2RlIH0gZnJvbSAnbGV4aWNhbCdcbmltcG9ydCB0eXBlIHsgTXV0YWJsZVJlZk9iamVjdCwgUmVhY3RQb3J0YWwgfSBmcm9tICdyZWFjdCdcblxuaW1wb3J0IHsgdXNlTGV4aWNhbENvbXBvc2VyQ29udGV4dCB9IGZyb20gJ0BsZXhpY2FsL3JlYWN0L0xleGljYWxDb21wb3NlckNvbnRleHQnXG5pbXBvcnQgeyBtZXJnZVJlZ2lzdGVyIH0gZnJvbSAnQGxleGljYWwvdXRpbHMnXG5pbXBvcnQge1xuICAkZ2V0U2VsZWN0aW9uLFxuICAkaXNSYW5nZVNlbGVjdGlvbixcbiAgQ09NTUFORF9QUklPUklUWV9MT1csXG4gIEtFWV9BUlJPV19ET1dOX0NPTU1BTkQsXG4gIEtFWV9BUlJPV19VUF9DT01NQU5ELFxuICBLRVlfRU5URVJfQ09NTUFORCxcbiAgS0VZX0VTQ0FQRV9DT01NQU5ELFxuICBLRVlfVEFCX0NPTU1BTkQsXG4gIGNyZWF0ZUNvbW1hbmQsXG59IGZyb20gJ2xleGljYWwnXG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VMYXlvdXRFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcblxuaW1wb3J0IHR5cGUgeyBNZW51VGV4dE1hdGNoIH0gZnJvbSAnLi4vdXNlTWVudVRyaWdnZXJNYXRjaCdcbmltcG9ydCB0eXBlIHsgU2xhc2hNZW51T3B0aW9uIH0gZnJvbSAnLi90eXBlcydcbmltcG9ydCB0eXBlIHsgU2xhc2hNZW51R3JvdXAgfSBmcm9tICcuL3R5cGVzJ1xuXG5leHBvcnQgdHlwZSBNZW51UmVzb2x1dGlvbiA9IHtcbiAgZ2V0UmVjdDogKCkgPT4gRE9NUmVjdFxuICBtYXRjaD86IE1lbnVUZXh0TWF0Y2hcbn1cblxuY29uc3QgYmFzZUNsYXNzID0gJ3NsYXNoLW1lbnUtcG9wdXAnXG5cbmV4cG9ydCB0eXBlIE1lbnVSZW5kZXJGbiA9IChcbiAgYW5jaG9yRWxlbWVudFJlZjogTXV0YWJsZVJlZk9iamVjdDxIVE1MRWxlbWVudCB8IG51bGw+LFxuICBpdGVtUHJvcHM6IHtcbiAgICBncm91cHNXaXRoT3B0aW9uczogQXJyYXk8U2xhc2hNZW51R3JvdXA+XG4gICAgc2VsZWN0T3B0aW9uQW5kQ2xlYW5VcDogKHNlbGVjdGVkT3B0aW9uOiBTbGFzaE1lbnVPcHRpb24pID0+IHZvaWRcbiAgICBzZWxlY3RlZE9wdGlvbktleTogbnVsbCB8IHN0cmluZ1xuICAgIHNldFNlbGVjdGVkT3B0aW9uS2V5OiAob3B0aW9uS2V5OiBzdHJpbmcpID0+IHZvaWRcbiAgfSxcbiAgbWF0Y2hpbmdTdHJpbmc6IG51bGwgfCBzdHJpbmcsXG4pID0+IEpTWC5FbGVtZW50IHwgUmVhY3RQb3J0YWwgfCBudWxsXG5cbmNvbnN0IHNjcm9sbEludG9WaWV3SWZOZWVkZWQgPSAodGFyZ2V0OiBIVE1MRWxlbWVudCkgPT4ge1xuICBjb25zdCB0eXBlYWhlYWRDb250YWluZXJOb2RlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NsYXNoLW1lbnUnKVxuICBpZiAoIXR5cGVhaGVhZENvbnRhaW5lck5vZGUpIHJldHVyblxuXG4gIGNvbnN0IHR5cGVhaGVhZFJlY3QgPSB0eXBlYWhlYWRDb250YWluZXJOb2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG5cbiAgaWYgKHR5cGVhaGVhZFJlY3QudG9wICsgdHlwZWFoZWFkUmVjdC5oZWlnaHQgPiB3aW5kb3cuaW5uZXJIZWlnaHQpIHtcbiAgICB0eXBlYWhlYWRDb250YWluZXJOb2RlLnNjcm9sbEludG9WaWV3KHtcbiAgICAgIGJsb2NrOiAnY2VudGVyJyxcbiAgICB9KVxuICB9XG5cbiAgaWYgKHR5cGVhaGVhZFJlY3QudG9wIDwgMCkge1xuICAgIHR5cGVhaGVhZENvbnRhaW5lck5vZGUuc2Nyb2xsSW50b1ZpZXcoe1xuICAgICAgYmxvY2s6ICdjZW50ZXInLFxuICAgIH0pXG4gIH1cblxuICB0YXJnZXQuc2Nyb2xsSW50b1ZpZXcoeyBibG9jazogJ25lYXJlc3QnIH0pXG59XG5cbi8qKlxuICogV2FsayBiYWNrd2FyZHMgYWxvbmcgdXNlciBpbnB1dCBhbmQgZm9yd2FyZCB0aHJvdWdoIGVudGl0eSB0aXRsZSB0byB0cnlcbiAqIGFuZCByZXBsYWNlIG1vcmUgb2YgdGhlIHVzZXIncyB0ZXh0IHdpdGggZW50aXR5LlxuICovXG5mdW5jdGlvbiBnZXRGdWxsTWF0Y2hPZmZzZXQoZG9jdW1lbnRUZXh0OiBzdHJpbmcsIGVudHJ5VGV4dDogc3RyaW5nLCBvZmZzZXQ6IG51bWJlcik6IG51bWJlciB7XG4gIGxldCB0cmlnZ2VyT2Zmc2V0ID0gb2Zmc2V0XG4gIGZvciAobGV0IGkgPSB0cmlnZ2VyT2Zmc2V0OyBpIDw9IGVudHJ5VGV4dC5sZW5ndGg7IGkrKykge1xuICAgIGlmIChkb2N1bWVudFRleHQuc3Vic3RyKC1pKSA9PT0gZW50cnlUZXh0LnN1YnN0cigwLCBpKSkge1xuICAgICAgdHJpZ2dlck9mZnNldCA9IGlcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRyaWdnZXJPZmZzZXRcbn1cblxuLyoqXG4gKiBTcGxpdCBMZXhpY2FsIFRleHROb2RlIGFuZCByZXR1cm4gYSBuZXcgVGV4dE5vZGUgb25seSBjb250YWluaW5nIG1hdGNoZWQgdGV4dC5cbiAqIENvbW1vbiB1c2UgY2FzZXMgaW5jbHVkZTogcmVtb3ZpbmcgdGhlIG5vZGUsIHJlcGxhY2luZyB3aXRoIGEgbmV3IG5vZGUuXG4gKi9cbmZ1bmN0aW9uICRzcGxpdE5vZGVDb250YWluaW5nUXVlcnkobWF0Y2g6IE1lbnVUZXh0TWF0Y2gpOiBUZXh0Tm9kZSB8IG51bGwge1xuICBjb25zdCBzZWxlY3Rpb24gPSAkZ2V0U2VsZWN0aW9uKClcbiAgaWYgKCEkaXNSYW5nZVNlbGVjdGlvbihzZWxlY3Rpb24pIHx8ICFzZWxlY3Rpb24uaXNDb2xsYXBzZWQoKSkge1xuICAgIHJldHVybiBudWxsXG4gIH1cbiAgY29uc3QgYW5jaG9yID0gc2VsZWN0aW9uLmFuY2hvclxuICBpZiAoYW5jaG9yLnR5cGUgIT09ICd0ZXh0Jykge1xuICAgIHJldHVybiBudWxsXG4gIH1cbiAgY29uc3QgYW5jaG9yTm9kZSA9IGFuY2hvci5nZXROb2RlKClcbiAgaWYgKCFhbmNob3JOb2RlLmlzU2ltcGxlVGV4dCgpKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuICBjb25zdCBzZWxlY3Rpb25PZmZzZXQgPSBhbmNob3Iub2Zmc2V0XG4gIGNvbnN0IHRleHRDb250ZW50ID0gYW5jaG9yTm9kZS5nZXRUZXh0Q29udGVudCgpLnNsaWNlKDAsIHNlbGVjdGlvbk9mZnNldClcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2Rlc3RydWN0dXJpbmctYXNzaWdubWVudFxuICBjb25zdCBjaGFyYWN0ZXJPZmZzZXQgPSBtYXRjaC5yZXBsYWNlYWJsZVN0cmluZy5sZW5ndGhcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2Rlc3RydWN0dXJpbmctYXNzaWdubWVudFxuICBjb25zdCBxdWVyeU9mZnNldCA9IGdldEZ1bGxNYXRjaE9mZnNldCh0ZXh0Q29udGVudCwgbWF0Y2gubWF0Y2hpbmdTdHJpbmcsIGNoYXJhY3Rlck9mZnNldClcbiAgY29uc3Qgc3RhcnRPZmZzZXQgPSBzZWxlY3Rpb25PZmZzZXQgLSBxdWVyeU9mZnNldFxuICBpZiAoc3RhcnRPZmZzZXQgPCAwKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuICBsZXQgbmV3Tm9kZVxuICBpZiAoc3RhcnRPZmZzZXQgPT09IDApIHtcbiAgICA7W25ld05vZGVdID0gYW5jaG9yTm9kZS5zcGxpdFRleHQoc2VsZWN0aW9uT2Zmc2V0KVxuICB9IGVsc2Uge1xuICAgIDtbLCBuZXdOb2RlXSA9IGFuY2hvck5vZGUuc3BsaXRUZXh0KHN0YXJ0T2Zmc2V0LCBzZWxlY3Rpb25PZmZzZXQpXG4gIH1cblxuICByZXR1cm4gbmV3Tm9kZVxufVxuXG4vLyBHb3QgZnJvbSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvNDI1NDM5MDgvMjAxMzU4MFxuZXhwb3J0IGZ1bmN0aW9uIGdldFNjcm9sbFBhcmVudChcbiAgZWxlbWVudDogSFRNTEVsZW1lbnQsXG4gIGluY2x1ZGVIaWRkZW46IGJvb2xlYW4sXG4pOiBIVE1MQm9keUVsZW1lbnQgfCBIVE1MRWxlbWVudCB7XG4gIGxldCBzdHlsZSA9IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudClcbiAgY29uc3QgZXhjbHVkZVN0YXRpY1BhcmVudCA9IHN0eWxlLnBvc2l0aW9uID09PSAnYWJzb2x1dGUnXG4gIGNvbnN0IG92ZXJmbG93UmVnZXggPSBpbmNsdWRlSGlkZGVuID8gLyhhdXRvfHNjcm9sbHxoaWRkZW4pLyA6IC8oYXV0b3xzY3JvbGwpL1xuICBpZiAoc3R5bGUucG9zaXRpb24gPT09ICdmaXhlZCcpIHtcbiAgICByZXR1cm4gZG9jdW1lbnQuYm9keVxuICB9XG4gIGZvciAobGV0IHBhcmVudDogSFRNTEVsZW1lbnQgfCBudWxsID0gZWxlbWVudDsgKHBhcmVudCA9IHBhcmVudC5wYXJlbnRFbGVtZW50KTsgKSB7XG4gICAgc3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKHBhcmVudClcbiAgICBpZiAoZXhjbHVkZVN0YXRpY1BhcmVudCAmJiBzdHlsZS5wb3NpdGlvbiA9PT0gJ3N0YXRpYycpIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuICAgIGlmIChvdmVyZmxvd1JlZ2V4LnRlc3Qoc3R5bGUub3ZlcmZsb3cgKyBzdHlsZS5vdmVyZmxvd1kgKyBzdHlsZS5vdmVyZmxvd1gpKSB7XG4gICAgICByZXR1cm4gcGFyZW50XG4gICAgfVxuICB9XG4gIHJldHVybiBkb2N1bWVudC5ib2R5XG59XG5cbmZ1bmN0aW9uIGlzVHJpZ2dlclZpc2libGVJbk5lYXJlc3RTY3JvbGxDb250YWluZXIoXG4gIHRhcmdldEVsZW1lbnQ6IEhUTUxFbGVtZW50LFxuICBjb250YWluZXJFbGVtZW50OiBIVE1MRWxlbWVudCxcbik6IGJvb2xlYW4ge1xuICBjb25zdCB0UmVjdCA9IHRhcmdldEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgY29uc3QgY1JlY3QgPSBjb250YWluZXJFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gIHJldHVybiB0UmVjdC50b3AgPiBjUmVjdC50b3AgJiYgdFJlY3QudG9wIDwgY1JlY3QuYm90dG9tXG59XG5cbi8vIFJlcG9zaXRpb24gdGhlIG1lbnUgb24gc2Nyb2xsLCB3aW5kb3cgcmVzaXplLCBhbmQgZWxlbWVudCByZXNpemUuXG5leHBvcnQgZnVuY3Rpb24gdXNlRHluYW1pY1Bvc2l0aW9uaW5nKFxuICByZXNvbHV0aW9uOiBNZW51UmVzb2x1dGlvbiB8IG51bGwsXG4gIHRhcmdldEVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgbnVsbCxcbiAgb25SZXBvc2l0aW9uOiAoKSA9PiB2b2lkLFxuICBvblZpc2liaWxpdHlDaGFuZ2U/OiAoaXNJblZpZXc6IGJvb2xlYW4pID0+IHZvaWQsXG4pIHtcbiAgY29uc3QgW2VkaXRvcl0gPSB1c2VMZXhpY2FsQ29tcG9zZXJDb250ZXh0KClcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAodGFyZ2V0RWxlbWVudCAhPSBudWxsICYmIHJlc29sdXRpb24gIT0gbnVsbCkge1xuICAgICAgY29uc3Qgcm9vdEVsZW1lbnQgPSBlZGl0b3IuZ2V0Um9vdEVsZW1lbnQoKVxuICAgICAgY29uc3Qgcm9vdFNjcm9sbFBhcmVudCA9XG4gICAgICAgIHJvb3RFbGVtZW50ICE9IG51bGwgPyBnZXRTY3JvbGxQYXJlbnQocm9vdEVsZW1lbnQsIGZhbHNlKSA6IGRvY3VtZW50LmJvZHlcbiAgICAgIGxldCB0aWNraW5nID0gZmFsc2VcbiAgICAgIGxldCBwcmV2aW91c0lzSW5WaWV3ID0gaXNUcmlnZ2VyVmlzaWJsZUluTmVhcmVzdFNjcm9sbENvbnRhaW5lcihcbiAgICAgICAgdGFyZ2V0RWxlbWVudCxcbiAgICAgICAgcm9vdFNjcm9sbFBhcmVudCxcbiAgICAgIClcbiAgICAgIGNvbnN0IGhhbmRsZVNjcm9sbCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKCF0aWNraW5nKSB7XG4gICAgICAgICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBvblJlcG9zaXRpb24oKVxuICAgICAgICAgICAgdGlja2luZyA9IGZhbHNlXG4gICAgICAgICAgfSlcbiAgICAgICAgICB0aWNraW5nID0gdHJ1ZVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGlzSW5WaWV3ID0gaXNUcmlnZ2VyVmlzaWJsZUluTmVhcmVzdFNjcm9sbENvbnRhaW5lcih0YXJnZXRFbGVtZW50LCByb290U2Nyb2xsUGFyZW50KVxuICAgICAgICBpZiAoaXNJblZpZXcgIT09IHByZXZpb3VzSXNJblZpZXcpIHtcbiAgICAgICAgICBwcmV2aW91c0lzSW5WaWV3ID0gaXNJblZpZXdcbiAgICAgICAgICBpZiAob25WaXNpYmlsaXR5Q2hhbmdlICE9IG51bGwpIHtcbiAgICAgICAgICAgIG9uVmlzaWJpbGl0eUNoYW5nZShpc0luVmlldylcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNvbnN0IHJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKG9uUmVwb3NpdGlvbilcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBvblJlcG9zaXRpb24pXG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwsIHtcbiAgICAgICAgY2FwdHVyZTogdHJ1ZSxcbiAgICAgICAgcGFzc2l2ZTogdHJ1ZSxcbiAgICAgIH0pXG4gICAgICByZXNpemVPYnNlcnZlci5vYnNlcnZlKHRhcmdldEVsZW1lbnQpXG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICByZXNpemVPYnNlcnZlci51bm9ic2VydmUodGFyZ2V0RWxlbWVudClcbiAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIG9uUmVwb3NpdGlvbilcbiAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlU2Nyb2xsLCB0cnVlKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW3RhcmdldEVsZW1lbnQsIGVkaXRvciwgb25WaXNpYmlsaXR5Q2hhbmdlLCBvblJlcG9zaXRpb24sIHJlc29sdXRpb25dKVxufVxuXG5leHBvcnQgY29uc3QgU0NST0xMX1RZUEVBSEVBRF9PUFRJT05fSU5UT19WSUVXX0NPTU1BTkQ6IExleGljYWxDb21tYW5kPHtcbiAgaW5kZXg6IG51bWJlclxuICBvcHRpb246IFNsYXNoTWVudU9wdGlvblxufT4gPSBjcmVhdGVDb21tYW5kKCdTQ1JPTExfVFlQRUFIRUFEX09QVElPTl9JTlRPX1ZJRVdfQ09NTUFORCcpXG5cbmV4cG9ydCBmdW5jdGlvbiBMZXhpY2FsTWVudSh7XG4gIGFuY2hvckVsZW1lbnRSZWYsXG4gIGNsb3NlLFxuICBlZGl0b3IsXG4gIC8vIGdyb3Vwc1dpdGhPcHRpb25zIGZpbHRlcmluZyBpcyBhbHJlYWR5IGhhbmRsZWQgaW4gU2xhc2hNZW51L2luZGV4LnRzeC4gVGh1cywgZ3JvdXBzV2l0aE9wdGlvbnMgYWx3YXlzIGNvbnRhaW5zIHRoZSBtYXRjaGluZyBvcHRpb25zLlxuICBncm91cHNXaXRoT3B0aW9ucyxcbiAgbWVudVJlbmRlckZuLFxuICBvblNlbGVjdE9wdGlvbixcbiAgcmVzb2x1dGlvbixcbiAgc2hvdWxkU3BsaXROb2RlV2l0aFF1ZXJ5ID0gZmFsc2UsXG59OiB7XG4gIGFuY2hvckVsZW1lbnRSZWY6IE11dGFibGVSZWZPYmplY3Q8SFRNTEVsZW1lbnQ+XG4gIGNsb3NlOiAoKSA9PiB2b2lkXG4gIGVkaXRvcjogTGV4aWNhbEVkaXRvclxuICBncm91cHNXaXRoT3B0aW9uczogQXJyYXk8U2xhc2hNZW51R3JvdXA+XG4gIG1lbnVSZW5kZXJGbjogTWVudVJlbmRlckZuXG4gIG9uU2VsZWN0T3B0aW9uOiAoXG4gICAgb3B0aW9uOiBTbGFzaE1lbnVPcHRpb24sXG4gICAgdGV4dE5vZGVDb250YWluaW5nUXVlcnk6IFRleHROb2RlIHwgbnVsbCxcbiAgICBjbG9zZU1lbnU6ICgpID0+IHZvaWQsXG4gICAgbWF0Y2hpbmdTdHJpbmc6IHN0cmluZyxcbiAgKSA9PiB2b2lkXG4gIHJlc29sdXRpb246IE1lbnVSZXNvbHV0aW9uXG4gIHNob3VsZFNwbGl0Tm9kZVdpdGhRdWVyeT86IGJvb2xlYW5cbn0pOiBKU1guRWxlbWVudCB8IG51bGwge1xuICBjb25zdCBbc2VsZWN0ZWRPcHRpb25LZXksIHNldFNlbGVjdGVkT3B0aW9uS2V5XSA9IHVzZVN0YXRlPG51bGwgfCBzdHJpbmc+KG51bGwpXG5cbiAgY29uc3QgbWF0Y2hpbmdTdHJpbmcgPSAocmVzb2x1dGlvbi5tYXRjaCAmJiByZXNvbHV0aW9uLm1hdGNoLm1hdGNoaW5nU3RyaW5nKSB8fCAnJ1xuXG4gIGNvbnN0IHVwZGF0ZVNlbGVjdGVkT3B0aW9uID0gdXNlQ2FsbGJhY2soXG4gICAgKG9wdGlvbjogU2xhc2hNZW51T3B0aW9uKSA9PiB7XG4gICAgICBjb25zdCByb290RWxlbSA9IGVkaXRvci5nZXRSb290RWxlbWVudCgpXG4gICAgICBpZiAocm9vdEVsZW0gIT09IG51bGwpIHtcbiAgICAgICAgcm9vdEVsZW0uc2V0QXR0cmlidXRlKCdhcmlhLWFjdGl2ZWRlc2NlbmRhbnQnLCBgJHtiYXNlQ2xhc3N9X19pdGVtLSR7b3B0aW9uLmtleX1gKVxuICAgICAgICBzZXRTZWxlY3RlZE9wdGlvbktleShvcHRpb24ua2V5KVxuICAgICAgfVxuICAgIH0sXG4gICAgW2VkaXRvcl0sXG4gIClcblxuICBjb25zdCBzZXRTZWxlY3RlZE9wdGlvbktleVRvRmlyc3RNYXRjaGluZ09wdGlvbiA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAvLyBzZXQgc2VsZWN0ZWQgb3B0aW9uIHRvIHRoZSBmaXJzdCBvZiB0aGUgbWF0Y2hpbmcgb25lc1xuICAgIGlmIChncm91cHNXaXRoT3B0aW9ucyAhPT0gbnVsbCAmJiBtYXRjaGluZ1N0cmluZyAhPSBudWxsKSB7XG4gICAgICAvLyBncm91cHNXaXRoT3B0aW9ucyBmaWx0ZXJpbmcgaXMgYWxyZWFkeSBoYW5kbGVkIGluIFNsYXNoTWVudS9pbmRleC50c3guIFRodXMsIGdyb3Vwc1dpdGhPcHRpb25zIGFsd2F5cyBjb250YWlucyB0aGUgbWF0Y2hpbmcgb3B0aW9ucy5cbiAgICAgIGNvbnN0IGFsbE9wdGlvbnMgPSBncm91cHNXaXRoT3B0aW9ucy5mbGF0TWFwKChncm91cCkgPT4gZ3JvdXAub3B0aW9ucylcblxuICAgICAgaWYgKGFsbE9wdGlvbnMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IGZpcnN0TWF0Y2hpbmdPcHRpb24gPSBhbGxPcHRpb25zWzBdXG4gICAgICAgIHVwZGF0ZVNlbGVjdGVkT3B0aW9uKGZpcnN0TWF0Y2hpbmdPcHRpb24pXG4gICAgICB9XG4gICAgfVxuICB9LCBbZ3JvdXBzV2l0aE9wdGlvbnMsIHVwZGF0ZVNlbGVjdGVkT3B0aW9uLCBtYXRjaGluZ1N0cmluZ10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRTZWxlY3RlZE9wdGlvbktleVRvRmlyc3RNYXRjaGluZ09wdGlvbigpXG4gIH0sIFttYXRjaGluZ1N0cmluZywgc2V0U2VsZWN0ZWRPcHRpb25LZXlUb0ZpcnN0TWF0Y2hpbmdPcHRpb25dKVxuXG4gIGNvbnN0IHNlbGVjdE9wdGlvbkFuZENsZWFuVXAgPSB1c2VDYWxsYmFjayhcbiAgICAoc2VsZWN0ZWRPcHRpb246IFNsYXNoTWVudU9wdGlvbikgPT4ge1xuICAgICAgZWRpdG9yLnVwZGF0ZSgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHRleHROb2RlQ29udGFpbmluZ1F1ZXJ5ID1cbiAgICAgICAgICByZXNvbHV0aW9uLm1hdGNoICE9IG51bGwgJiYgc2hvdWxkU3BsaXROb2RlV2l0aFF1ZXJ5XG4gICAgICAgICAgICA/ICRzcGxpdE5vZGVDb250YWluaW5nUXVlcnkocmVzb2x1dGlvbi5tYXRjaClcbiAgICAgICAgICAgIDogbnVsbFxuXG4gICAgICAgIG9uU2VsZWN0T3B0aW9uKFxuICAgICAgICAgIHNlbGVjdGVkT3B0aW9uLFxuICAgICAgICAgIHRleHROb2RlQ29udGFpbmluZ1F1ZXJ5LFxuICAgICAgICAgIGNsb3NlLFxuICAgICAgICAgIHJlc29sdXRpb24ubWF0Y2ggPyByZXNvbHV0aW9uLm1hdGNoLm1hdGNoaW5nU3RyaW5nIDogJycsXG4gICAgICAgIClcbiAgICAgIH0pXG4gICAgfSxcbiAgICBbZWRpdG9yLCBzaG91bGRTcGxpdE5vZGVXaXRoUXVlcnksIHJlc29sdXRpb24ubWF0Y2gsIG9uU2VsZWN0T3B0aW9uLCBjbG9zZV0sXG4gIClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjb25zdCByb290RWxlbSA9IGVkaXRvci5nZXRSb290RWxlbWVudCgpXG4gICAgICBpZiAocm9vdEVsZW0gIT09IG51bGwpIHtcbiAgICAgICAgcm9vdEVsZW0ucmVtb3ZlQXR0cmlidXRlKCdhcmlhLWFjdGl2ZWRlc2NlbmRhbnQnKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW2VkaXRvcl0pXG5cbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBpZiAoZ3JvdXBzV2l0aE9wdGlvbnMgPT09IG51bGwpIHtcbiAgICAgIHNldFNlbGVjdGVkT3B0aW9uS2V5KG51bGwpXG4gICAgfSBlbHNlIGlmIChzZWxlY3RlZE9wdGlvbktleSA9PT0gbnVsbCkge1xuICAgICAgc2V0U2VsZWN0ZWRPcHRpb25LZXlUb0ZpcnN0TWF0Y2hpbmdPcHRpb24oKVxuICAgIH1cbiAgfSwgW1xuICAgIGdyb3Vwc1dpdGhPcHRpb25zLFxuICAgIHNlbGVjdGVkT3B0aW9uS2V5LFxuICAgIHVwZGF0ZVNlbGVjdGVkT3B0aW9uLFxuICAgIHNldFNlbGVjdGVkT3B0aW9uS2V5VG9GaXJzdE1hdGNoaW5nT3B0aW9uLFxuICBdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmV0dXJuIG1lcmdlUmVnaXN0ZXIoXG4gICAgICBlZGl0b3IucmVnaXN0ZXJDb21tYW5kKFxuICAgICAgICBTQ1JPTExfVFlQRUFIRUFEX09QVElPTl9JTlRPX1ZJRVdfQ09NTUFORCxcbiAgICAgICAgKHsgb3B0aW9uIH0pID0+IHtcbiAgICAgICAgICBpZiAob3B0aW9uLnJlZiAmJiBvcHRpb24ucmVmLmN1cnJlbnQgIT0gbnVsbCkge1xuICAgICAgICAgICAgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZChvcHRpb24ucmVmLmN1cnJlbnQpXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICB9LFxuICAgICAgICBDT01NQU5EX1BSSU9SSVRZX0xPVyxcbiAgICAgICksXG4gICAgKVxuICB9LCBbZWRpdG9yLCB1cGRhdGVTZWxlY3RlZE9wdGlvbl0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICByZXR1cm4gbWVyZ2VSZWdpc3RlcihcbiAgICAgIGVkaXRvci5yZWdpc3RlckNvbW1hbmQ8S2V5Ym9hcmRFdmVudD4oXG4gICAgICAgIEtFWV9BUlJPV19ET1dOX0NPTU1BTkQsXG4gICAgICAgIChwYXlsb2FkKSA9PiB7XG4gICAgICAgICAgY29uc3QgZXZlbnQgPSBwYXlsb2FkXG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgZ3JvdXBzV2l0aE9wdGlvbnMgIT09IG51bGwgJiZcbiAgICAgICAgICAgIGdyb3Vwc1dpdGhPcHRpb25zLmxlbmd0aCAmJlxuICAgICAgICAgICAgc2VsZWN0ZWRPcHRpb25LZXkgIT09IG51bGxcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnN0IGFsbE9wdGlvbnMgPSBncm91cHNXaXRoT3B0aW9ucy5mbGF0TWFwKChncm91cCkgPT4gZ3JvdXAub3B0aW9ucylcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkSW5kZXggPSBhbGxPcHRpb25zLmZpbmRJbmRleCgob3B0aW9uKSA9PiBvcHRpb24ua2V5ID09PSBzZWxlY3RlZE9wdGlvbktleSlcblxuICAgICAgICAgICAgY29uc3QgbmV3U2VsZWN0ZWRJbmRleCA9IHNlbGVjdGVkSW5kZXggIT09IGFsbE9wdGlvbnMubGVuZ3RoIC0gMSA/IHNlbGVjdGVkSW5kZXggKyAxIDogMFxuXG4gICAgICAgICAgICBjb25zdCBuZXdTZWxlY3RlZE9wdGlvbiA9IGFsbE9wdGlvbnNbbmV3U2VsZWN0ZWRJbmRleF1cblxuICAgICAgICAgICAgdXBkYXRlU2VsZWN0ZWRPcHRpb24obmV3U2VsZWN0ZWRPcHRpb24pXG4gICAgICAgICAgICBpZiAobmV3U2VsZWN0ZWRPcHRpb24ucmVmICE9IG51bGwgJiYgbmV3U2VsZWN0ZWRPcHRpb24ucmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgZWRpdG9yLmRpc3BhdGNoQ29tbWFuZChTQ1JPTExfVFlQRUFIRUFEX09QVElPTl9JTlRPX1ZJRVdfQ09NTUFORCwge1xuICAgICAgICAgICAgICAgIGluZGV4OiBuZXdTZWxlY3RlZEluZGV4LFxuICAgICAgICAgICAgICAgIG9wdGlvbjogbmV3U2VsZWN0ZWRPcHRpb24sXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBDT01NQU5EX1BSSU9SSVRZX0xPVyxcbiAgICAgICksXG4gICAgICBlZGl0b3IucmVnaXN0ZXJDb21tYW5kPEtleWJvYXJkRXZlbnQ+KFxuICAgICAgICBLRVlfQVJST1dfVVBfQ09NTUFORCxcbiAgICAgICAgKHBheWxvYWQpID0+IHtcbiAgICAgICAgICBjb25zdCBldmVudCA9IHBheWxvYWRcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBncm91cHNXaXRoT3B0aW9ucyAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgZ3JvdXBzV2l0aE9wdGlvbnMubGVuZ3RoICYmXG4gICAgICAgICAgICBzZWxlY3RlZE9wdGlvbktleSAhPT0gbnVsbFxuICAgICAgICAgICkge1xuICAgICAgICAgICAgY29uc3QgYWxsT3B0aW9ucyA9IGdyb3Vwc1dpdGhPcHRpb25zLmZsYXRNYXAoKGdyb3VwKSA9PiBncm91cC5vcHRpb25zKVxuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRJbmRleCA9IGFsbE9wdGlvbnMuZmluZEluZGV4KChvcHRpb24pID0+IG9wdGlvbi5rZXkgPT09IHNlbGVjdGVkT3B0aW9uS2V5KVxuXG4gICAgICAgICAgICBjb25zdCBuZXdTZWxlY3RlZEluZGV4ID0gc2VsZWN0ZWRJbmRleCAhPT0gMCA/IHNlbGVjdGVkSW5kZXggLSAxIDogYWxsT3B0aW9ucy5sZW5ndGggLSAxXG5cbiAgICAgICAgICAgIGNvbnN0IG5ld1NlbGVjdGVkT3B0aW9uID0gYWxsT3B0aW9uc1tuZXdTZWxlY3RlZEluZGV4XVxuXG4gICAgICAgICAgICB1cGRhdGVTZWxlY3RlZE9wdGlvbihuZXdTZWxlY3RlZE9wdGlvbilcbiAgICAgICAgICAgIGlmIChuZXdTZWxlY3RlZE9wdGlvbi5yZWYgIT0gbnVsbCAmJiBuZXdTZWxlY3RlZE9wdGlvbi5yZWYuY3VycmVudCkge1xuICAgICAgICAgICAgICBzY3JvbGxJbnRvVmlld0lmTmVlZGVkKG5ld1NlbGVjdGVkT3B0aW9uLnJlZi5jdXJyZW50KVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKClcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgQ09NTUFORF9QUklPUklUWV9MT1csXG4gICAgICApLFxuICAgICAgZWRpdG9yLnJlZ2lzdGVyQ29tbWFuZDxLZXlib2FyZEV2ZW50PihcbiAgICAgICAgS0VZX0VTQ0FQRV9DT01NQU5ELFxuICAgICAgICAocGF5bG9hZCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGV2ZW50ID0gcGF5bG9hZFxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKVxuICAgICAgICAgIGNsb3NlKClcbiAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBDT01NQU5EX1BSSU9SSVRZX0xPVyxcbiAgICAgICksXG4gICAgICBlZGl0b3IucmVnaXN0ZXJDb21tYW5kPEtleWJvYXJkRXZlbnQ+KFxuICAgICAgICBLRVlfVEFCX0NPTU1BTkQsXG4gICAgICAgIChwYXlsb2FkKSA9PiB7XG4gICAgICAgICAgY29uc3QgZXZlbnQgPSBwYXlsb2FkXG5cbiAgICAgICAgICBpZiAoZ3JvdXBzV2l0aE9wdGlvbnMgPT09IG51bGwgfHwgc2VsZWN0ZWRPcHRpb25LZXkgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBhbGxPcHRpb25zID0gZ3JvdXBzV2l0aE9wdGlvbnMuZmxhdE1hcCgoZ3JvdXApID0+IGdyb3VwLm9wdGlvbnMpXG4gICAgICAgICAgY29uc3Qgc2VsZWN0ZWRPcHRpb24gPSBhbGxPcHRpb25zLmZpbmQoKG9wdGlvbikgPT4gb3B0aW9uLmtleSA9PT0gc2VsZWN0ZWRPcHRpb25LZXkpXG4gICAgICAgICAgaWYgKCFzZWxlY3RlZE9wdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpXG4gICAgICAgICAgc2VsZWN0T3B0aW9uQW5kQ2xlYW5VcChzZWxlY3RlZE9wdGlvbilcbiAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBDT01NQU5EX1BSSU9SSVRZX0xPVyxcbiAgICAgICksXG4gICAgICBlZGl0b3IucmVnaXN0ZXJDb21tYW5kKFxuICAgICAgICBLRVlfRU5URVJfQ09NTUFORCxcbiAgICAgICAgKGV2ZW50OiBLZXlib2FyZEV2ZW50IHwgbnVsbCkgPT4ge1xuICAgICAgICAgIGlmIChncm91cHNXaXRoT3B0aW9ucyA9PT0gbnVsbCB8fCBzZWxlY3RlZE9wdGlvbktleSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IGFsbE9wdGlvbnMgPSBncm91cHNXaXRoT3B0aW9ucy5mbGF0TWFwKChncm91cCkgPT4gZ3JvdXAub3B0aW9ucylcbiAgICAgICAgICBjb25zdCBzZWxlY3RlZE9wdGlvbiA9IGFsbE9wdGlvbnMuZmluZCgob3B0aW9uKSA9PiBvcHRpb24ua2V5ID09PSBzZWxlY3RlZE9wdGlvbktleSlcbiAgICAgICAgICBpZiAoIXNlbGVjdGVkT3B0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoZXZlbnQgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpXG4gICAgICAgICAgfVxuICAgICAgICAgIHNlbGVjdE9wdGlvbkFuZENsZWFuVXAoc2VsZWN0ZWRPcHRpb24pXG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgQ09NTUFORF9QUklPUklUWV9MT1csXG4gICAgICApLFxuICAgIClcbiAgfSwgW1xuICAgIHNlbGVjdE9wdGlvbkFuZENsZWFuVXAsXG4gICAgY2xvc2UsXG4gICAgZWRpdG9yLFxuICAgIGdyb3Vwc1dpdGhPcHRpb25zLFxuICAgIHNlbGVjdGVkT3B0aW9uS2V5LFxuICAgIHVwZGF0ZVNlbGVjdGVkT3B0aW9uLFxuICBdKVxuXG4gIGNvbnN0IGxpc3RJdGVtUHJvcHMgPSB1c2VNZW1vKFxuICAgICgpID0+ICh7XG4gICAgICBncm91cHNXaXRoT3B0aW9ucyxcbiAgICAgIHNlbGVjdE9wdGlvbkFuZENsZWFuVXAsXG4gICAgICBzZWxlY3RlZE9wdGlvbktleSxcbiAgICAgIHNldFNlbGVjdGVkT3B0aW9uS2V5LFxuICAgIH0pLFxuICAgIFtzZWxlY3RPcHRpb25BbmRDbGVhblVwLCBzZWxlY3RlZE9wdGlvbktleSwgZ3JvdXBzV2l0aE9wdGlvbnNdLFxuICApXG5cbiAgcmV0dXJuIG1lbnVSZW5kZXJGbihcbiAgICBhbmNob3JFbGVtZW50UmVmLFxuICAgIGxpc3RJdGVtUHJvcHMsXG4gICAgcmVzb2x1dGlvbi5tYXRjaCA/IHJlc29sdXRpb24ubWF0Y2gubWF0Y2hpbmdTdHJpbmcgOiAnJyxcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlTWVudUFuY2hvclJlZihcbiAgYW5jaG9yRWxlbTogSFRNTEVsZW1lbnQsXG4gIHJlc29sdXRpb246IE1lbnVSZXNvbHV0aW9uIHwgbnVsbCxcbiAgc2V0UmVzb2x1dGlvbjogKHI6IE1lbnVSZXNvbHV0aW9uIHwgbnVsbCkgPT4gdm9pZCxcbiAgY2xhc3NOYW1lPzogc3RyaW5nLFxuKTogTXV0YWJsZVJlZk9iamVjdDxIVE1MRWxlbWVudD4ge1xuICBjb25zdCBbZWRpdG9yXSA9IHVzZUxleGljYWxDb21wb3NlckNvbnRleHQoKVxuICBjb25zdCBhbmNob3JFbGVtZW50UmVmID0gdXNlUmVmPEhUTUxFbGVtZW50Pihkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSlcbiAgY29uc3QgcG9zaXRpb25NZW51ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IHJvb3RFbGVtZW50ID0gZWRpdG9yLmdldFJvb3RFbGVtZW50KClcbiAgICBjb25zdCBjb250YWluZXJEaXYgPSBhbmNob3JFbGVtZW50UmVmLmN1cnJlbnRcblxuICAgIGNvbnN0IFZFUlRJQ0FMX09GRlNFVCA9IDMyIGFzIGNvbnN0XG5cbiAgICBjb25zdCBtZW51RWxlID0gY29udGFpbmVyRGl2LmZpcnN0Q2hpbGQgYXMgRWxlbWVudFxuICAgIGlmIChyb290RWxlbWVudCAhPT0gbnVsbCAmJiByZXNvbHV0aW9uICE9PSBudWxsKSB7XG4gICAgICBjb25zdCB7IGhlaWdodCwgd2lkdGggfSA9IHJlc29sdXRpb24uZ2V0UmVjdCgpXG4gICAgICBsZXQgeyBsZWZ0LCB0b3AgfSA9IHJlc29sdXRpb24uZ2V0UmVjdCgpXG5cbiAgICAgIGNvbnN0IHJhd1RvcCA9IHRvcFxuICAgICAgdG9wIC09IGFuY2hvckVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wICsgd2luZG93LnNjcm9sbFlcbiAgICAgIGxlZnQgLT0gYW5jaG9yRWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0ICsgd2luZG93LnNjcm9sbFhcbiAgICAgIGNvbnRhaW5lckRpdi5zdHlsZS5sZWZ0ID0gYCR7bGVmdCArIHdpbmRvdy5zY3JvbGxYfXB4YFxuICAgICAgY29udGFpbmVyRGl2LnN0eWxlLmhlaWdodCA9IGAke2hlaWdodH1weGBcbiAgICAgIGNvbnRhaW5lckRpdi5zdHlsZS53aWR0aCA9IGAke3dpZHRofXB4YFxuICAgICAgaWYgKG1lbnVFbGUgIT09IG51bGwpIHtcbiAgICAgICAgY29uc3QgbWVudVJlY3QgPSBtZW51RWxlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gICAgICAgIGNvbnN0IG1lbnVIZWlnaHQgPSBtZW51UmVjdC5oZWlnaHRcbiAgICAgICAgY29uc3QgbWVudVdpZHRoID0gbWVudVJlY3Qud2lkdGhcblxuICAgICAgICBjb25zdCByb290RWxlbWVudFJlY3QgPSByb290RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuXG4gICAgICAgIGlmIChsZWZ0ICsgbWVudVdpZHRoID4gcm9vdEVsZW1lbnRSZWN0LnJpZ2h0KSB7XG4gICAgICAgICAgY29udGFpbmVyRGl2LnN0eWxlLmxlZnQgPSBgJHtyb290RWxlbWVudFJlY3QucmlnaHQgLSBtZW51V2lkdGggKyB3aW5kb3cuc2Nyb2xsWH1weGBcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHdvdWxkR29PZmZCb3R0b21PZlNjcmVlbiA9IHJhd1RvcCArIG1lbnVIZWlnaHQgKyBWRVJUSUNBTF9PRkZTRVQgPiB3aW5kb3cuaW5uZXJIZWlnaHRcbiAgICAgICAgLy9jb25zdCB3b3VsZEdvT2ZmQm90dG9tT2ZDb250YWluZXIgPSB0b3AgKyBtZW51SGVpZ2h0ID4gcm9vdEVsZW1lbnRSZWN0LmJvdHRvbVxuICAgICAgICBjb25zdCB3b3VsZEdvT2ZmVG9wT2ZTY3JlZW4gPSByYXdUb3AgPCAwXG5cbiAgICAgICAgLy8gUG9zaXRpb24gc2xhc2ggbWVudSBhYm92ZSB0aGUgY3Vyc29yIGluc3RlYWQgb2YgYmVsb3cgKGRlZmF1bHQpIGlmIGl0IHdvdWxkIG90aGVyd2lzZSBnbyBvZmYgdGhlIGJvdHRvbSBvZiB0aGUgc2NyZWVuLlxuICAgICAgICBpZiAod291bGRHb09mZkJvdHRvbU9mU2NyZWVuICYmICF3b3VsZEdvT2ZmVG9wT2ZTY3JlZW4pIHtcbiAgICAgICAgICBjb25zdCBtYXJnaW4gPSAyNFxuICAgICAgICAgIGNvbnRhaW5lckRpdi5zdHlsZS50b3AgPSBgJHtcbiAgICAgICAgICAgIHRvcCArIFZFUlRJQ0FMX09GRlNFVCAtIG1lbnVIZWlnaHQgKyB3aW5kb3cuc2Nyb2xsWSAtIChoZWlnaHQgKyBtYXJnaW4pXG4gICAgICAgICAgfXB4YFxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnRhaW5lckRpdi5zdHlsZS50b3AgPSBgJHt0b3AgKyB3aW5kb3cuc2Nyb2xsWSArIFZFUlRJQ0FMX09GRlNFVH1weGBcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoIWNvbnRhaW5lckRpdi5pc0Nvbm5lY3RlZCkge1xuICAgICAgICBpZiAoY2xhc3NOYW1lICE9IG51bGwpIHtcbiAgICAgICAgICBjb250YWluZXJEaXYuY2xhc3NOYW1lID0gY2xhc3NOYW1lXG4gICAgICAgIH1cbiAgICAgICAgY29udGFpbmVyRGl2LnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsICdTbGFzaCBtZW51JylcbiAgICAgICAgY29udGFpbmVyRGl2LnNldEF0dHJpYnV0ZSgnaWQnLCAnc2xhc2gtbWVudScpXG4gICAgICAgIGNvbnRhaW5lckRpdi5zZXRBdHRyaWJ1dGUoJ3JvbGUnLCAnbGlzdGJveCcpXG4gICAgICAgIGNvbnRhaW5lckRpdi5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJ1xuICAgICAgICBjb250YWluZXJEaXYuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnXG4gICAgICAgIGFuY2hvckVsZW0uYXBwZW5kKGNvbnRhaW5lckRpdilcbiAgICAgIH1cbiAgICAgIGFuY2hvckVsZW1lbnRSZWYuY3VycmVudCA9IGNvbnRhaW5lckRpdlxuICAgICAgcm9vdEVsZW1lbnQuc2V0QXR0cmlidXRlKCdhcmlhLWNvbnRyb2xzJywgJ3NsYXNoLW1lbnUnKVxuICAgIH1cbiAgfSwgW2VkaXRvciwgcmVzb2x1dGlvbiwgY2xhc3NOYW1lLCBhbmNob3JFbGVtXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHJvb3RFbGVtZW50ID0gZWRpdG9yLmdldFJvb3RFbGVtZW50KClcbiAgICBpZiAocmVzb2x1dGlvbiAhPT0gbnVsbCkge1xuICAgICAgcG9zaXRpb25NZW51KClcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGlmIChyb290RWxlbWVudCAhPT0gbnVsbCkge1xuICAgICAgICAgIHJvb3RFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1jb250cm9scycpXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjb250YWluZXJEaXYgPSBhbmNob3JFbGVtZW50UmVmLmN1cnJlbnRcbiAgICAgICAgaWYgKGNvbnRhaW5lckRpdiAhPT0gbnVsbCAmJiBjb250YWluZXJEaXYuaXNDb25uZWN0ZWQpIHtcbiAgICAgICAgICBjb250YWluZXJEaXYucmVtb3ZlKClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSwgW2VkaXRvciwgcG9zaXRpb25NZW51LCByZXNvbHV0aW9uXSlcblxuICBjb25zdCBvblZpc2liaWxpdHlDaGFuZ2UgPSB1c2VDYWxsYmFjayhcbiAgICAoaXNJblZpZXc6IGJvb2xlYW4pID0+IHtcbiAgICAgIGlmIChyZXNvbHV0aW9uICE9PSBudWxsKSB7XG4gICAgICAgIGlmICghaXNJblZpZXcpIHtcbiAgICAgICAgICBzZXRSZXNvbHV0aW9uKG51bGwpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIFtyZXNvbHV0aW9uLCBzZXRSZXNvbHV0aW9uXSxcbiAgKVxuXG4gIHVzZUR5bmFtaWNQb3NpdGlvbmluZyhyZXNvbHV0aW9uLCBhbmNob3JFbGVtZW50UmVmLmN1cnJlbnQsIHBvc2l0aW9uTWVudSwgb25WaXNpYmlsaXR5Q2hhbmdlKVxuXG4gIHJldHVybiBhbmNob3JFbGVtZW50UmVmXG59XG4iXSwibmFtZXMiOlsidXNlTGV4aWNhbENvbXBvc2VyQ29udGV4dCIsIm1lcmdlUmVnaXN0ZXIiLCIkZ2V0U2VsZWN0aW9uIiwiJGlzUmFuZ2VTZWxlY3Rpb24iLCJDT01NQU5EX1BSSU9SSVRZX0xPVyIsIktFWV9BUlJPV19ET1dOX0NPTU1BTkQiLCJLRVlfQVJST1dfVVBfQ09NTUFORCIsIktFWV9FTlRFUl9DT01NQU5EIiwiS0VZX0VTQ0FQRV9DT01NQU5EIiwiS0VZX1RBQl9DT01NQU5EIiwiY3JlYXRlQ29tbWFuZCIsInVzZUNhbGxiYWNrIiwidXNlRWZmZWN0IiwidXNlTGF5b3V0RWZmZWN0IiwidXNlTWVtbyIsInVzZVJlZiIsInVzZVN0YXRlIiwiYmFzZUNsYXNzIiwic2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCIsInRhcmdldCIsInR5cGVhaGVhZENvbnRhaW5lck5vZGUiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwidHlwZWFoZWFkUmVjdCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsInRvcCIsImhlaWdodCIsIndpbmRvdyIsImlubmVySGVpZ2h0Iiwic2Nyb2xsSW50b1ZpZXciLCJibG9jayIsImdldEZ1bGxNYXRjaE9mZnNldCIsImRvY3VtZW50VGV4dCIsImVudHJ5VGV4dCIsIm9mZnNldCIsInRyaWdnZXJPZmZzZXQiLCJpIiwibGVuZ3RoIiwic3Vic3RyIiwiJHNwbGl0Tm9kZUNvbnRhaW5pbmdRdWVyeSIsIm1hdGNoIiwic2VsZWN0aW9uIiwiaXNDb2xsYXBzZWQiLCJhbmNob3IiLCJ0eXBlIiwiYW5jaG9yTm9kZSIsImdldE5vZGUiLCJpc1NpbXBsZVRleHQiLCJzZWxlY3Rpb25PZmZzZXQiLCJ0ZXh0Q29udGVudCIsImdldFRleHRDb250ZW50Iiwic2xpY2UiLCJjaGFyYWN0ZXJPZmZzZXQiLCJyZXBsYWNlYWJsZVN0cmluZyIsInF1ZXJ5T2Zmc2V0IiwibWF0Y2hpbmdTdHJpbmciLCJzdGFydE9mZnNldCIsIm5ld05vZGUiLCJzcGxpdFRleHQiLCJnZXRTY3JvbGxQYXJlbnQiLCJlbGVtZW50IiwiaW5jbHVkZUhpZGRlbiIsInN0eWxlIiwiZ2V0Q29tcHV0ZWRTdHlsZSIsImV4Y2x1ZGVTdGF0aWNQYXJlbnQiLCJwb3NpdGlvbiIsIm92ZXJmbG93UmVnZXgiLCJib2R5IiwicGFyZW50IiwicGFyZW50RWxlbWVudCIsInRlc3QiLCJvdmVyZmxvdyIsIm92ZXJmbG93WSIsIm92ZXJmbG93WCIsImlzVHJpZ2dlclZpc2libGVJbk5lYXJlc3RTY3JvbGxDb250YWluZXIiLCJ0YXJnZXRFbGVtZW50IiwiY29udGFpbmVyRWxlbWVudCIsInRSZWN0IiwiY1JlY3QiLCJib3R0b20iLCJ1c2VEeW5hbWljUG9zaXRpb25pbmciLCJyZXNvbHV0aW9uIiwib25SZXBvc2l0aW9uIiwib25WaXNpYmlsaXR5Q2hhbmdlIiwiZWRpdG9yIiwicm9vdEVsZW1lbnQiLCJnZXRSb290RWxlbWVudCIsInJvb3RTY3JvbGxQYXJlbnQiLCJ0aWNraW5nIiwicHJldmlvdXNJc0luVmlldyIsImhhbmRsZVNjcm9sbCIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsImlzSW5WaWV3IiwicmVzaXplT2JzZXJ2ZXIiLCJSZXNpemVPYnNlcnZlciIsImFkZEV2ZW50TGlzdGVuZXIiLCJjYXB0dXJlIiwicGFzc2l2ZSIsIm9ic2VydmUiLCJ1bm9ic2VydmUiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiU0NST0xMX1RZUEVBSEVBRF9PUFRJT05fSU5UT19WSUVXX0NPTU1BTkQiLCJMZXhpY2FsTWVudSIsImFuY2hvckVsZW1lbnRSZWYiLCJjbG9zZSIsImdyb3Vwc1dpdGhPcHRpb25zIiwibWVudVJlbmRlckZuIiwib25TZWxlY3RPcHRpb24iLCJzaG91bGRTcGxpdE5vZGVXaXRoUXVlcnkiLCJzZWxlY3RlZE9wdGlvbktleSIsInNldFNlbGVjdGVkT3B0aW9uS2V5IiwidXBkYXRlU2VsZWN0ZWRPcHRpb24iLCJvcHRpb24iLCJyb290RWxlbSIsInNldEF0dHJpYnV0ZSIsImtleSIsInNldFNlbGVjdGVkT3B0aW9uS2V5VG9GaXJzdE1hdGNoaW5nT3B0aW9uIiwiYWxsT3B0aW9ucyIsImZsYXRNYXAiLCJncm91cCIsIm9wdGlvbnMiLCJmaXJzdE1hdGNoaW5nT3B0aW9uIiwic2VsZWN0T3B0aW9uQW5kQ2xlYW5VcCIsInNlbGVjdGVkT3B0aW9uIiwidXBkYXRlIiwidGV4dE5vZGVDb250YWluaW5nUXVlcnkiLCJyZW1vdmVBdHRyaWJ1dGUiLCJyZWdpc3RlckNvbW1hbmQiLCJyZWYiLCJjdXJyZW50IiwicGF5bG9hZCIsImV2ZW50Iiwic2VsZWN0ZWRJbmRleCIsImZpbmRJbmRleCIsIm5ld1NlbGVjdGVkSW5kZXgiLCJuZXdTZWxlY3RlZE9wdGlvbiIsImRpc3BhdGNoQ29tbWFuZCIsImluZGV4IiwicHJldmVudERlZmF1bHQiLCJzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24iLCJmaW5kIiwibGlzdEl0ZW1Qcm9wcyIsInVzZU1lbnVBbmNob3JSZWYiLCJhbmNob3JFbGVtIiwic2V0UmVzb2x1dGlvbiIsImNsYXNzTmFtZSIsImNyZWF0ZUVsZW1lbnQiLCJwb3NpdGlvbk1lbnUiLCJjb250YWluZXJEaXYiLCJWRVJUSUNBTF9PRkZTRVQiLCJtZW51RWxlIiwiZmlyc3RDaGlsZCIsIndpZHRoIiwiZ2V0UmVjdCIsImxlZnQiLCJyYXdUb3AiLCJzY3JvbGxZIiwic2Nyb2xsWCIsIm1lbnVSZWN0IiwibWVudUhlaWdodCIsIm1lbnVXaWR0aCIsInJvb3RFbGVtZW50UmVjdCIsInJpZ2h0Iiwid291bGRHb09mZkJvdHRvbU9mU2NyZWVuIiwid291bGRHb09mZlRvcE9mU2NyZWVuIiwibWFyZ2luIiwiaXNDb25uZWN0ZWQiLCJkaXNwbGF5IiwiYXBwZW5kIiwicmVtb3ZlIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUlBLFNBQVNBLHlCQUF5QixRQUFRLHdDQUF1QztBQUNqRixTQUFTQyxhQUFhLFFBQVEsaUJBQWdCO0FBQzlDLFNBQ0VDLGFBQWEsRUFDYkMsaUJBQWlCLEVBQ2pCQyxvQkFBb0IsRUFDcEJDLHNCQUFzQixFQUN0QkMsb0JBQW9CLEVBQ3BCQyxpQkFBaUIsRUFDakJDLGtCQUFrQixFQUNsQkMsZUFBZSxFQUNmQyxhQUFhLFFBQ1IsVUFBUztBQUNoQixTQUFTQyxXQUFXLEVBQUVDLFNBQVMsRUFBRUMsZUFBZSxFQUFFQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxRQUFRLFFBQU87QUFXMUYsTUFBTUMsWUFBWTtBQWFsQixNQUFNQyx5QkFBeUIsQ0FBQ0M7SUFDOUIsTUFBTUMseUJBQXlCQyxTQUFTQyxjQUFjLENBQUM7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
401
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvU2xhc2hNZW51L0xleGljYWxUeXBlYWhlYWRNZW51UGx1Z2luL0xleGljYWxNZW51LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCdcbmltcG9ydCB0eXBlIHsgTGV4aWNhbENvbW1hbmQsIExleGljYWxFZGl0b3IsIFRleHROb2RlIH0gZnJvbSAnbGV4aWNhbCdcbmltcG9ydCB0eXBlIHsgTXV0YWJsZVJlZk9iamVjdCwgUmVhY3RQb3J0YWwgfSBmcm9tICdyZWFjdCdcblxuaW1wb3J0IHsgdXNlTGV4aWNhbENvbXBvc2VyQ29udGV4dCB9IGZyb20gJ0BsZXhpY2FsL3JlYWN0L0xleGljYWxDb21wb3NlckNvbnRleHQuanMnXG5pbXBvcnQgeyBtZXJnZVJlZ2lzdGVyIH0gZnJvbSAnQGxleGljYWwvdXRpbHMnXG5pbXBvcnQge1xuICAkZ2V0U2VsZWN0aW9uLFxuICAkaXNSYW5nZVNlbGVjdGlvbixcbiAgQ09NTUFORF9QUklPUklUWV9MT1csXG4gIEtFWV9BUlJPV19ET1dOX0NPTU1BTkQsXG4gIEtFWV9BUlJPV19VUF9DT01NQU5ELFxuICBLRVlfRU5URVJfQ09NTUFORCxcbiAgS0VZX0VTQ0FQRV9DT01NQU5ELFxuICBLRVlfVEFCX0NPTU1BTkQsXG4gIGNyZWF0ZUNvbW1hbmQsXG59IGZyb20gJ2xleGljYWwnXG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VMYXlvdXRFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcblxuaW1wb3J0IHR5cGUgeyBNZW51VGV4dE1hdGNoIH0gZnJvbSAnLi4vdXNlTWVudVRyaWdnZXJNYXRjaC5qcydcbmltcG9ydCB0eXBlIHsgU2xhc2hNZW51R3JvdXAsIFNsYXNoTWVudU9wdGlvbiB9IGZyb20gJy4vdHlwZXMuanMnXG5cbmV4cG9ydCB0eXBlIE1lbnVSZXNvbHV0aW9uID0ge1xuICBnZXRSZWN0OiAoKSA9PiBET01SZWN0XG4gIG1hdGNoPzogTWVudVRleHRNYXRjaFxufVxuXG5jb25zdCBiYXNlQ2xhc3MgPSAnc2xhc2gtbWVudS1wb3B1cCdcblxuZXhwb3J0IHR5cGUgTWVudVJlbmRlckZuID0gKFxuICBhbmNob3JFbGVtZW50UmVmOiBNdXRhYmxlUmVmT2JqZWN0PEhUTUxFbGVtZW50IHwgbnVsbD4sXG4gIGl0ZW1Qcm9wczoge1xuICAgIGdyb3Vwc1dpdGhPcHRpb25zOiBBcnJheTxTbGFzaE1lbnVHcm91cD5cbiAgICBzZWxlY3RPcHRpb25BbmRDbGVhblVwOiAoc2VsZWN0ZWRPcHRpb246IFNsYXNoTWVudU9wdGlvbikgPT4gdm9pZFxuICAgIHNlbGVjdGVkT3B0aW9uS2V5OiBudWxsIHwgc3RyaW5nXG4gICAgc2V0U2VsZWN0ZWRPcHRpb25LZXk6IChvcHRpb25LZXk6IHN0cmluZykgPT4gdm9pZFxuICB9LFxuICBtYXRjaGluZ1N0cmluZzogbnVsbCB8IHN0cmluZyxcbikgPT4gSlNYLkVsZW1lbnQgfCBSZWFjdFBvcnRhbCB8IG51bGxcblxuY29uc3Qgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCA9ICh0YXJnZXQ6IEhUTUxFbGVtZW50KSA9PiB7XG4gIGNvbnN0IHR5cGVhaGVhZENvbnRhaW5lck5vZGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2xhc2gtbWVudScpXG4gIGlmICghdHlwZWFoZWFkQ29udGFpbmVyTm9kZSkgcmV0dXJuXG5cbiAgY29uc3QgdHlwZWFoZWFkUmVjdCA9IHR5cGVhaGVhZENvbnRhaW5lck5vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcblxuICBpZiAodHlwZWFoZWFkUmVjdC50b3AgKyB0eXBlYWhlYWRSZWN0LmhlaWdodCA+IHdpbmRvdy5pbm5lckhlaWdodCkge1xuICAgIHR5cGVhaGVhZENvbnRhaW5lck5vZGUuc2Nyb2xsSW50b1ZpZXcoe1xuICAgICAgYmxvY2s6ICdjZW50ZXInLFxuICAgIH0pXG4gIH1cblxuICBpZiAodHlwZWFoZWFkUmVjdC50b3AgPCAwKSB7XG4gICAgdHlwZWFoZWFkQ29udGFpbmVyTm9kZS5zY3JvbGxJbnRvVmlldyh7XG4gICAgICBibG9jazogJ2NlbnRlcicsXG4gICAgfSlcbiAgfVxuXG4gIHRhcmdldC5zY3JvbGxJbnRvVmlldyh7IGJsb2NrOiAnbmVhcmVzdCcgfSlcbn1cblxuLyoqXG4gKiBXYWxrIGJhY2t3YXJkcyBhbG9uZyB1c2VyIGlucHV0IGFuZCBmb3J3YXJkIHRocm91Z2ggZW50aXR5IHRpdGxlIHRvIHRyeVxuICogYW5kIHJlcGxhY2UgbW9yZSBvZiB0aGUgdXNlcidzIHRleHQgd2l0aCBlbnRpdHkuXG4gKi9cbmZ1bmN0aW9uIGdldEZ1bGxNYXRjaE9mZnNldChkb2N1bWVudFRleHQ6IHN0cmluZywgZW50cnlUZXh0OiBzdHJpbmcsIG9mZnNldDogbnVtYmVyKTogbnVtYmVyIHtcbiAgbGV0IHRyaWdnZXJPZmZzZXQgPSBvZmZzZXRcbiAgZm9yIChsZXQgaSA9IHRyaWdnZXJPZmZzZXQ7IGkgPD0gZW50cnlUZXh0Lmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKGRvY3VtZW50VGV4dC5zdWJzdHIoLWkpID09PSBlbnRyeVRleHQuc3Vic3RyKDAsIGkpKSB7XG4gICAgICB0cmlnZ2VyT2Zmc2V0ID0gaVxuICAgIH1cbiAgfVxuICByZXR1cm4gdHJpZ2dlck9mZnNldFxufVxuXG4vKipcbiAqIFNwbGl0IExleGljYWwgVGV4dE5vZGUgYW5kIHJldHVybiBhIG5ldyBUZXh0Tm9kZSBvbmx5IGNvbnRhaW5pbmcgbWF0Y2hlZCB0ZXh0LlxuICogQ29tbW9uIHVzZSBjYXNlcyBpbmNsdWRlOiByZW1vdmluZyB0aGUgbm9kZSwgcmVwbGFjaW5nIHdpdGggYSBuZXcgbm9kZS5cbiAqL1xuZnVuY3Rpb24gJHNwbGl0Tm9kZUNvbnRhaW5pbmdRdWVyeShtYXRjaDogTWVudVRleHRNYXRjaCk6IFRleHROb2RlIHwgbnVsbCB7XG4gIGNvbnN0IHNlbGVjdGlvbiA9ICRnZXRTZWxlY3Rpb24oKVxuICBpZiAoISRpc1JhbmdlU2VsZWN0aW9uKHNlbGVjdGlvbikgfHwgIXNlbGVjdGlvbi5pc0NvbGxhcHNlZCgpKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuICBjb25zdCBhbmNob3IgPSBzZWxlY3Rpb24uYW5jaG9yXG4gIGlmIChhbmNob3IudHlwZSAhPT0gJ3RleHQnKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuICBjb25zdCBhbmNob3JOb2RlID0gYW5jaG9yLmdldE5vZGUoKVxuICBpZiAoIWFuY2hvck5vZGUuaXNTaW1wbGVUZXh0KCkpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIGNvbnN0IHNlbGVjdGlvbk9mZnNldCA9IGFuY2hvci5vZmZzZXRcbiAgY29uc3QgdGV4dENvbnRlbnQgPSBhbmNob3JOb2RlLmdldFRleHRDb250ZW50KCkuc2xpY2UoMCwgc2VsZWN0aW9uT2Zmc2V0KVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvZGVzdHJ1Y3R1cmluZy1hc3NpZ25tZW50XG4gIGNvbnN0IGNoYXJhY3Rlck9mZnNldCA9IG1hdGNoLnJlcGxhY2VhYmxlU3RyaW5nLmxlbmd0aFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvZGVzdHJ1Y3R1cmluZy1hc3NpZ25tZW50XG4gIGNvbnN0IHF1ZXJ5T2Zmc2V0ID0gZ2V0RnVsbE1hdGNoT2Zmc2V0KHRleHRDb250ZW50LCBtYXRjaC5tYXRjaGluZ1N0cmluZywgY2hhcmFjdGVyT2Zmc2V0KVxuICBjb25zdCBzdGFydE9mZnNldCA9IHNlbGVjdGlvbk9mZnNldCAtIHF1ZXJ5T2Zmc2V0XG4gIGlmIChzdGFydE9mZnNldCA8IDApIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIGxldCBuZXdOb2RlXG4gIGlmIChzdGFydE9mZnNldCA9PT0gMCkge1xuICAgIDtbbmV3Tm9kZV0gPSBhbmNob3JOb2RlLnNwbGl0VGV4dChzZWxlY3Rpb25PZmZzZXQpXG4gIH0gZWxzZSB7XG4gICAgO1ssIG5ld05vZGVdID0gYW5jaG9yTm9kZS5zcGxpdFRleHQoc3RhcnRPZmZzZXQsIHNlbGVjdGlvbk9mZnNldClcbiAgfVxuXG4gIHJldHVybiBuZXdOb2RlXG59XG5cbi8vIEdvdCBmcm9tIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS80MjU0MzkwOC8yMDEzNTgwXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2Nyb2xsUGFyZW50KFxuICBlbGVtZW50OiBIVE1MRWxlbWVudCxcbiAgaW5jbHVkZUhpZGRlbjogYm9vbGVhbixcbik6IEhUTUxCb2R5RWxlbWVudCB8IEhUTUxFbGVtZW50IHtcbiAgbGV0IHN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KVxuICBjb25zdCBleGNsdWRlU3RhdGljUGFyZW50ID0gc3R5bGUucG9zaXRpb24gPT09ICdhYnNvbHV0ZSdcbiAgY29uc3Qgb3ZlcmZsb3dSZWdleCA9IGluY2x1ZGVIaWRkZW4gPyAvKGF1dG98c2Nyb2xsfGhpZGRlbikvIDogLyhhdXRvfHNjcm9sbCkvXG4gIGlmIChzdHlsZS5wb3NpdGlvbiA9PT0gJ2ZpeGVkJykge1xuICAgIHJldHVybiBkb2N1bWVudC5ib2R5XG4gIH1cbiAgZm9yIChsZXQgcGFyZW50OiBIVE1MRWxlbWVudCB8IG51bGwgPSBlbGVtZW50OyAocGFyZW50ID0gcGFyZW50LnBhcmVudEVsZW1lbnQpOyApIHtcbiAgICBzdHlsZSA9IGdldENvbXB1dGVkU3R5bGUocGFyZW50KVxuICAgIGlmIChleGNsdWRlU3RhdGljUGFyZW50ICYmIHN0eWxlLnBvc2l0aW9uID09PSAnc3RhdGljJykge1xuICAgICAgY29udGludWVcbiAgICB9XG4gICAgaWYgKG92ZXJmbG93UmVnZXgudGVzdChzdHlsZS5vdmVyZmxvdyArIHN0eWxlLm92ZXJmbG93WSArIHN0eWxlLm92ZXJmbG93WCkpIHtcbiAgICAgIHJldHVybiBwYXJlbnRcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGRvY3VtZW50LmJvZHlcbn1cblxuZnVuY3Rpb24gaXNUcmlnZ2VyVmlzaWJsZUluTmVhcmVzdFNjcm9sbENvbnRhaW5lcihcbiAgdGFyZ2V0RWxlbWVudDogSFRNTEVsZW1lbnQsXG4gIGNvbnRhaW5lckVsZW1lbnQ6IEhUTUxFbGVtZW50LFxuKTogYm9vbGVhbiB7XG4gIGNvbnN0IHRSZWN0ID0gdGFyZ2V0RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICBjb25zdCBjUmVjdCA9IGNvbnRhaW5lckVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgcmV0dXJuIHRSZWN0LnRvcCA+IGNSZWN0LnRvcCAmJiB0UmVjdC50b3AgPCBjUmVjdC5ib3R0b21cbn1cblxuLy8gUmVwb3NpdGlvbiB0aGUgbWVudSBvbiBzY3JvbGwsIHdpbmRvdyByZXNpemUsIGFuZCBlbGVtZW50IHJlc2l6ZS5cbmV4cG9ydCBmdW5jdGlvbiB1c2VEeW5hbWljUG9zaXRpb25pbmcoXG4gIHJlc29sdXRpb246IE1lbnVSZXNvbHV0aW9uIHwgbnVsbCxcbiAgdGFyZ2V0RWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsLFxuICBvblJlcG9zaXRpb246ICgpID0+IHZvaWQsXG4gIG9uVmlzaWJpbGl0eUNoYW5nZT86IChpc0luVmlldzogYm9vbGVhbikgPT4gdm9pZCxcbikge1xuICBjb25zdCBbZWRpdG9yXSA9IHVzZUxleGljYWxDb21wb3NlckNvbnRleHQoKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh0YXJnZXRFbGVtZW50ICE9IG51bGwgJiYgcmVzb2x1dGlvbiAhPSBudWxsKSB7XG4gICAgICBjb25zdCByb290RWxlbWVudCA9IGVkaXRvci5nZXRSb290RWxlbWVudCgpXG4gICAgICBjb25zdCByb290U2Nyb2xsUGFyZW50ID1cbiAgICAgICAgcm9vdEVsZW1lbnQgIT0gbnVsbCA/IGdldFNjcm9sbFBhcmVudChyb290RWxlbWVudCwgZmFsc2UpIDogZG9jdW1lbnQuYm9keVxuICAgICAgbGV0IHRpY2tpbmcgPSBmYWxzZVxuICAgICAgbGV0IHByZXZpb3VzSXNJblZpZXcgPSBpc1RyaWdnZXJWaXNpYmxlSW5OZWFyZXN0U2Nyb2xsQ29udGFpbmVyKFxuICAgICAgICB0YXJnZXRFbGVtZW50LFxuICAgICAgICByb290U2Nyb2xsUGFyZW50LFxuICAgICAgKVxuICAgICAgY29uc3QgaGFuZGxlU2Nyb2xsID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoIXRpY2tpbmcpIHtcbiAgICAgICAgICB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIG9uUmVwb3NpdGlvbigpXG4gICAgICAgICAgICB0aWNraW5nID0gZmFsc2VcbiAgICAgICAgICB9KVxuICAgICAgICAgIHRpY2tpbmcgPSB0cnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaXNJblZpZXcgPSBpc1RyaWdnZXJWaXNpYmxlSW5OZWFyZXN0U2Nyb2xsQ29udGFpbmVyKHRhcmdldEVsZW1lbnQsIHJvb3RTY3JvbGxQYXJlbnQpXG4gICAgICAgIGlmIChpc0luVmlldyAhPT0gcHJldmlvdXNJc0luVmlldykge1xuICAgICAgICAgIHByZXZpb3VzSXNJblZpZXcgPSBpc0luVmlld1xuICAgICAgICAgIGlmIChvblZpc2liaWxpdHlDaGFuZ2UgIT0gbnVsbCkge1xuICAgICAgICAgICAgb25WaXNpYmlsaXR5Q2hhbmdlKGlzSW5WaWV3KVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY29uc3QgcmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIob25SZXBvc2l0aW9uKVxuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIG9uUmVwb3NpdGlvbilcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVNjcm9sbCwge1xuICAgICAgICBjYXB0dXJlOiB0cnVlLFxuICAgICAgICBwYXNzaXZlOiB0cnVlLFxuICAgICAgfSlcbiAgICAgIHJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGFyZ2V0RWxlbWVudClcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIHJlc2l6ZU9ic2VydmVyLnVub2JzZXJ2ZSh0YXJnZXRFbGVtZW50KVxuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgb25SZXBvc2l0aW9uKVxuICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwsIHRydWUpXG4gICAgICB9XG4gICAgfVxuICB9LCBbdGFyZ2V0RWxlbWVudCwgZWRpdG9yLCBvblZpc2liaWxpdHlDaGFuZ2UsIG9uUmVwb3NpdGlvbiwgcmVzb2x1dGlvbl0pXG59XG5cbmV4cG9ydCBjb25zdCBTQ1JPTExfVFlQRUFIRUFEX09QVElPTl9JTlRPX1ZJRVdfQ09NTUFORDogTGV4aWNhbENvbW1hbmQ8e1xuICBpbmRleDogbnVtYmVyXG4gIG9wdGlvbjogU2xhc2hNZW51T3B0aW9uXG59PiA9IGNyZWF0ZUNvbW1hbmQoJ1NDUk9MTF9UWVBFQUhFQURfT1BUSU9OX0lOVE9fVklFV19DT01NQU5EJylcblxuZXhwb3J0IGZ1bmN0aW9uIExleGljYWxNZW51KHtcbiAgYW5jaG9yRWxlbWVudFJlZixcbiAgY2xvc2UsXG4gIGVkaXRvcixcbiAgLy8gZ3JvdXBzV2l0aE9wdGlvbnMgZmlsdGVyaW5nIGlzIGFscmVhZHkgaGFuZGxlZCBpbiBTbGFzaE1lbnUvaW5kZXgudHN4LiBUaHVzLCBncm91cHNXaXRoT3B0aW9ucyBhbHdheXMgY29udGFpbnMgdGhlIG1hdGNoaW5nIG9wdGlvbnMuXG4gIGdyb3Vwc1dpdGhPcHRpb25zLFxuICBtZW51UmVuZGVyRm4sXG4gIG9uU2VsZWN0T3B0aW9uLFxuICByZXNvbHV0aW9uLFxuICBzaG91bGRTcGxpdE5vZGVXaXRoUXVlcnkgPSBmYWxzZSxcbn06IHtcbiAgYW5jaG9yRWxlbWVudFJlZjogTXV0YWJsZVJlZk9iamVjdDxIVE1MRWxlbWVudD5cbiAgY2xvc2U6ICgpID0+IHZvaWRcbiAgZWRpdG9yOiBMZXhpY2FsRWRpdG9yXG4gIGdyb3Vwc1dpdGhPcHRpb25zOiBBcnJheTxTbGFzaE1lbnVHcm91cD5cbiAgbWVudVJlbmRlckZuOiBNZW51UmVuZGVyRm5cbiAgb25TZWxlY3RPcHRpb246IChcbiAgICBvcHRpb246IFNsYXNoTWVudU9wdGlvbixcbiAgICB0ZXh0Tm9kZUNvbnRhaW5pbmdRdWVyeTogVGV4dE5vZGUgfCBudWxsLFxuICAgIGNsb3NlTWVudTogKCkgPT4gdm9pZCxcbiAgICBtYXRjaGluZ1N0cmluZzogc3RyaW5nLFxuICApID0+IHZvaWRcbiAgcmVzb2x1dGlvbjogTWVudVJlc29sdXRpb25cbiAgc2hvdWxkU3BsaXROb2RlV2l0aFF1ZXJ5PzogYm9vbGVhblxufSk6IEpTWC5FbGVtZW50IHwgbnVsbCB7XG4gIGNvbnN0IFtzZWxlY3RlZE9wdGlvbktleSwgc2V0U2VsZWN0ZWRPcHRpb25LZXldID0gdXNlU3RhdGU8bnVsbCB8IHN0cmluZz4obnVsbClcblxuICBjb25zdCBtYXRjaGluZ1N0cmluZyA9IChyZXNvbHV0aW9uLm1hdGNoICYmIHJlc29sdXRpb24ubWF0Y2gubWF0Y2hpbmdTdHJpbmcpIHx8ICcnXG5cbiAgY29uc3QgdXBkYXRlU2VsZWN0ZWRPcHRpb24gPSB1c2VDYWxsYmFjayhcbiAgICAob3B0aW9uOiBTbGFzaE1lbnVPcHRpb24pID0+IHtcbiAgICAgIGNvbnN0IHJvb3RFbGVtID0gZWRpdG9yLmdldFJvb3RFbGVtZW50KClcbiAgICAgIGlmIChyb290RWxlbSAhPT0gbnVsbCkge1xuICAgICAgICByb290RWxlbS5zZXRBdHRyaWJ1dGUoJ2FyaWEtYWN0aXZlZGVzY2VuZGFudCcsIGAke2Jhc2VDbGFzc31fX2l0ZW0tJHtvcHRpb24ua2V5fWApXG4gICAgICAgIHNldFNlbGVjdGVkT3B0aW9uS2V5KG9wdGlvbi5rZXkpXG4gICAgICB9XG4gICAgfSxcbiAgICBbZWRpdG9yXSxcbiAgKVxuXG4gIGNvbnN0IHNldFNlbGVjdGVkT3B0aW9uS2V5VG9GaXJzdE1hdGNoaW5nT3B0aW9uID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIC8vIHNldCBzZWxlY3RlZCBvcHRpb24gdG8gdGhlIGZpcnN0IG9mIHRoZSBtYXRjaGluZyBvbmVzXG4gICAgaWYgKGdyb3Vwc1dpdGhPcHRpb25zICE9PSBudWxsICYmIG1hdGNoaW5nU3RyaW5nICE9IG51bGwpIHtcbiAgICAgIC8vIGdyb3Vwc1dpdGhPcHRpb25zIGZpbHRlcmluZyBpcyBhbHJlYWR5IGhhbmRsZWQgaW4gU2xhc2hNZW51L2luZGV4LnRzeC4gVGh1cywgZ3JvdXBzV2l0aE9wdGlvbnMgYWx3YXlzIGNvbnRhaW5zIHRoZSBtYXRjaGluZyBvcHRpb25zLlxuICAgICAgY29uc3QgYWxsT3B0aW9ucyA9IGdyb3Vwc1dpdGhPcHRpb25zLmZsYXRNYXAoKGdyb3VwKSA9PiBncm91cC5vcHRpb25zKVxuXG4gICAgICBpZiAoYWxsT3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgZmlyc3RNYXRjaGluZ09wdGlvbiA9IGFsbE9wdGlvbnNbMF1cbiAgICAgICAgdXBkYXRlU2VsZWN0ZWRPcHRpb24oZmlyc3RNYXRjaGluZ09wdGlvbilcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtncm91cHNXaXRoT3B0aW9ucywgdXBkYXRlU2VsZWN0ZWRPcHRpb24sIG1hdGNoaW5nU3RyaW5nXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldFNlbGVjdGVkT3B0aW9uS2V5VG9GaXJzdE1hdGNoaW5nT3B0aW9uKClcbiAgfSwgW21hdGNoaW5nU3RyaW5nLCBzZXRTZWxlY3RlZE9wdGlvbktleVRvRmlyc3RNYXRjaGluZ09wdGlvbl0pXG5cbiAgY29uc3Qgc2VsZWN0T3B0aW9uQW5kQ2xlYW5VcCA9IHVzZUNhbGxiYWNrKFxuICAgIChzZWxlY3RlZE9wdGlvbjogU2xhc2hNZW51T3B0aW9uKSA9PiB7XG4gICAgICBlZGl0b3IudXBkYXRlKCgpID0+IHtcbiAgICAgICAgY29uc3QgdGV4dE5vZGVDb250YWluaW5nUXVlcnkgPVxuICAgICAgICAgIHJlc29sdXRpb24ubWF0Y2ggIT0gbnVsbCAmJiBzaG91bGRTcGxpdE5vZGVXaXRoUXVlcnlcbiAgICAgICAgICAgID8gJHNwbGl0Tm9kZUNvbnRhaW5pbmdRdWVyeShyZXNvbHV0aW9uLm1hdGNoKVxuICAgICAgICAgICAgOiBudWxsXG5cbiAgICAgICAgb25TZWxlY3RPcHRpb24oXG4gICAgICAgICAgc2VsZWN0ZWRPcHRpb24sXG4gICAgICAgICAgdGV4dE5vZGVDb250YWluaW5nUXVlcnksXG4gICAgICAgICAgY2xvc2UsXG4gICAgICAgICAgcmVzb2x1dGlvbi5tYXRjaCA/IHJlc29sdXRpb24ubWF0Y2gubWF0Y2hpbmdTdHJpbmcgOiAnJyxcbiAgICAgICAgKVxuICAgICAgfSlcbiAgICB9LFxuICAgIFtlZGl0b3IsIHNob3VsZFNwbGl0Tm9kZVdpdGhRdWVyeSwgcmVzb2x1dGlvbi5tYXRjaCwgb25TZWxlY3RPcHRpb24sIGNsb3NlXSxcbiAgKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGNvbnN0IHJvb3RFbGVtID0gZWRpdG9yLmdldFJvb3RFbGVtZW50KClcbiAgICAgIGlmIChyb290RWxlbSAhPT0gbnVsbCkge1xuICAgICAgICByb290RWxlbS5yZW1vdmVBdHRyaWJ1dGUoJ2FyaWEtYWN0aXZlZGVzY2VuZGFudCcpXG4gICAgICB9XG4gICAgfVxuICB9LCBbZWRpdG9yXSlcblxuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChncm91cHNXaXRoT3B0aW9ucyA9PT0gbnVsbCkge1xuICAgICAgc2V0U2VsZWN0ZWRPcHRpb25LZXkobnVsbClcbiAgICB9IGVsc2UgaWYgKHNlbGVjdGVkT3B0aW9uS2V5ID09PSBudWxsKSB7XG4gICAgICBzZXRTZWxlY3RlZE9wdGlvbktleVRvRmlyc3RNYXRjaGluZ09wdGlvbigpXG4gICAgfVxuICB9LCBbXG4gICAgZ3JvdXBzV2l0aE9wdGlvbnMsXG4gICAgc2VsZWN0ZWRPcHRpb25LZXksXG4gICAgdXBkYXRlU2VsZWN0ZWRPcHRpb24sXG4gICAgc2V0U2VsZWN0ZWRPcHRpb25LZXlUb0ZpcnN0TWF0Y2hpbmdPcHRpb24sXG4gIF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICByZXR1cm4gbWVyZ2VSZWdpc3RlcihcbiAgICAgIGVkaXRvci5yZWdpc3RlckNvbW1hbmQoXG4gICAgICAgIFNDUk9MTF9UWVBFQUhFQURfT1BUSU9OX0lOVE9fVklFV19DT01NQU5ELFxuICAgICAgICAoeyBvcHRpb24gfSkgPT4ge1xuICAgICAgICAgIGlmIChvcHRpb24ucmVmICYmIG9wdGlvbi5yZWYuY3VycmVudCAhPSBudWxsKSB7XG4gICAgICAgICAgICBzY3JvbGxJbnRvVmlld0lmTmVlZGVkKG9wdGlvbi5yZWYuY3VycmVudClcbiAgICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgIH0sXG4gICAgICAgIENPTU1BTkRfUFJJT1JJVFlfTE9XLFxuICAgICAgKSxcbiAgICApXG4gIH0sIFtlZGl0b3IsIHVwZGF0ZVNlbGVjdGVkT3B0aW9uXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJldHVybiBtZXJnZVJlZ2lzdGVyKFxuICAgICAgZWRpdG9yLnJlZ2lzdGVyQ29tbWFuZDxLZXlib2FyZEV2ZW50PihcbiAgICAgICAgS0VZX0FSUk9XX0RPV05fQ09NTUFORCxcbiAgICAgICAgKHBheWxvYWQpID0+IHtcbiAgICAgICAgICBjb25zdCBldmVudCA9IHBheWxvYWRcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBncm91cHNXaXRoT3B0aW9ucyAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgZ3JvdXBzV2l0aE9wdGlvbnMubGVuZ3RoICYmXG4gICAgICAgICAgICBzZWxlY3RlZE9wdGlvbktleSAhPT0gbnVsbFxuICAgICAgICAgICkge1xuICAgICAgICAgICAgY29uc3QgYWxsT3B0aW9ucyA9IGdyb3Vwc1dpdGhPcHRpb25zLmZsYXRNYXAoKGdyb3VwKSA9PiBncm91cC5vcHRpb25zKVxuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRJbmRleCA9IGFsbE9wdGlvbnMuZmluZEluZGV4KChvcHRpb24pID0+IG9wdGlvbi5rZXkgPT09IHNlbGVjdGVkT3B0aW9uS2V5KVxuXG4gICAgICAgICAgICBjb25zdCBuZXdTZWxlY3RlZEluZGV4ID0gc2VsZWN0ZWRJbmRleCAhPT0gYWxsT3B0aW9ucy5sZW5ndGggLSAxID8gc2VsZWN0ZWRJbmRleCArIDEgOiAwXG5cbiAgICAgICAgICAgIGNvbnN0IG5ld1NlbGVjdGVkT3B0aW9uID0gYWxsT3B0aW9uc1tuZXdTZWxlY3RlZEluZGV4XVxuXG4gICAgICAgICAgICB1cGRhdGVTZWxlY3RlZE9wdGlvbihuZXdTZWxlY3RlZE9wdGlvbilcbiAgICAgICAgICAgIGlmIChuZXdTZWxlY3RlZE9wdGlvbi5yZWYgIT0gbnVsbCAmJiBuZXdTZWxlY3RlZE9wdGlvbi5yZWYuY3VycmVudCkge1xuICAgICAgICAgICAgICBlZGl0b3IuZGlzcGF0Y2hDb21tYW5kKFNDUk9MTF9UWVBFQUhFQURfT1BUSU9OX0lOVE9fVklFV19DT01NQU5ELCB7XG4gICAgICAgICAgICAgICAgaW5kZXg6IG5ld1NlbGVjdGVkSW5kZXgsXG4gICAgICAgICAgICAgICAgb3B0aW9uOiBuZXdTZWxlY3RlZE9wdGlvbixcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpXG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIENPTU1BTkRfUFJJT1JJVFlfTE9XLFxuICAgICAgKSxcbiAgICAgIGVkaXRvci5yZWdpc3RlckNvbW1hbmQ8S2V5Ym9hcmRFdmVudD4oXG4gICAgICAgIEtFWV9BUlJPV19VUF9DT01NQU5ELFxuICAgICAgICAocGF5bG9hZCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGV2ZW50ID0gcGF5bG9hZFxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGdyb3Vwc1dpdGhPcHRpb25zICE9PSBudWxsICYmXG4gICAgICAgICAgICBncm91cHNXaXRoT3B0aW9ucy5sZW5ndGggJiZcbiAgICAgICAgICAgIHNlbGVjdGVkT3B0aW9uS2V5ICE9PSBudWxsXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25zdCBhbGxPcHRpb25zID0gZ3JvdXBzV2l0aE9wdGlvbnMuZmxhdE1hcCgoZ3JvdXApID0+IGdyb3VwLm9wdGlvbnMpXG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZEluZGV4ID0gYWxsT3B0aW9ucy5maW5kSW5kZXgoKG9wdGlvbikgPT4gb3B0aW9uLmtleSA9PT0gc2VsZWN0ZWRPcHRpb25LZXkpXG5cbiAgICAgICAgICAgIGNvbnN0IG5ld1NlbGVjdGVkSW5kZXggPSBzZWxlY3RlZEluZGV4ICE9PSAwID8gc2VsZWN0ZWRJbmRleCAtIDEgOiBhbGxPcHRpb25zLmxlbmd0aCAtIDFcblxuICAgICAgICAgICAgY29uc3QgbmV3U2VsZWN0ZWRPcHRpb24gPSBhbGxPcHRpb25zW25ld1NlbGVjdGVkSW5kZXhdXG5cbiAgICAgICAgICAgIHVwZGF0ZVNlbGVjdGVkT3B0aW9uKG5ld1NlbGVjdGVkT3B0aW9uKVxuICAgICAgICAgICAgaWYgKG5ld1NlbGVjdGVkT3B0aW9uLnJlZiAhPSBudWxsICYmIG5ld1NlbGVjdGVkT3B0aW9uLnJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICAgIHNjcm9sbEludG9WaWV3SWZOZWVkZWQobmV3U2VsZWN0ZWRPcHRpb24ucmVmLmN1cnJlbnQpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBDT01NQU5EX1BSSU9SSVRZX0xPVyxcbiAgICAgICksXG4gICAgICBlZGl0b3IucmVnaXN0ZXJDb21tYW5kPEtleWJvYXJkRXZlbnQ+KFxuICAgICAgICBLRVlfRVNDQVBFX0NPTU1BTkQsXG4gICAgICAgIChwYXlsb2FkKSA9PiB7XG4gICAgICAgICAgY29uc3QgZXZlbnQgPSBwYXlsb2FkXG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpXG4gICAgICAgICAgY2xvc2UoKVxuICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIENPTU1BTkRfUFJJT1JJVFlfTE9XLFxuICAgICAgKSxcbiAgICAgIGVkaXRvci5yZWdpc3RlckNvbW1hbmQ8S2V5Ym9hcmRFdmVudD4oXG4gICAgICAgIEtFWV9UQUJfQ09NTUFORCxcbiAgICAgICAgKHBheWxvYWQpID0+IHtcbiAgICAgICAgICBjb25zdCBldmVudCA9IHBheWxvYWRcblxuICAgICAgICAgIGlmIChncm91cHNXaXRoT3B0aW9ucyA9PT0gbnVsbCB8fCBzZWxlY3RlZE9wdGlvbktleSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IGFsbE9wdGlvbnMgPSBncm91cHNXaXRoT3B0aW9ucy5mbGF0TWFwKChncm91cCkgPT4gZ3JvdXAub3B0aW9ucylcbiAgICAgICAgICBjb25zdCBzZWxlY3RlZE9wdGlvbiA9IGFsbE9wdGlvbnMuZmluZCgob3B0aW9uKSA9PiBvcHRpb24ua2V5ID09PSBzZWxlY3RlZE9wdGlvbktleSlcbiAgICAgICAgICBpZiAoIXNlbGVjdGVkT3B0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKClcbiAgICAgICAgICBzZWxlY3RPcHRpb25BbmRDbGVhblVwKHNlbGVjdGVkT3B0aW9uKVxuICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIENPTU1BTkRfUFJJT1JJVFlfTE9XLFxuICAgICAgKSxcbiAgICAgIGVkaXRvci5yZWdpc3RlckNvbW1hbmQoXG4gICAgICAgIEtFWV9FTlRFUl9DT01NQU5ELFxuICAgICAgICAoZXZlbnQ6IEtleWJvYXJkRXZlbnQgfCBudWxsKSA9PiB7XG4gICAgICAgICAgaWYgKGdyb3Vwc1dpdGhPcHRpb25zID09PSBudWxsIHx8IHNlbGVjdGVkT3B0aW9uS2V5ID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgYWxsT3B0aW9ucyA9IGdyb3Vwc1dpdGhPcHRpb25zLmZsYXRNYXAoKGdyb3VwKSA9PiBncm91cC5vcHRpb25zKVxuICAgICAgICAgIGNvbnN0IHNlbGVjdGVkT3B0aW9uID0gYWxsT3B0aW9ucy5maW5kKChvcHRpb24pID0+IG9wdGlvbi5rZXkgPT09IHNlbGVjdGVkT3B0aW9uS2V5KVxuICAgICAgICAgIGlmICghc2VsZWN0ZWRPcHRpb24pIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChldmVudCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKClcbiAgICAgICAgICB9XG4gICAgICAgICAgc2VsZWN0T3B0aW9uQW5kQ2xlYW5VcChzZWxlY3RlZE9wdGlvbilcbiAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBDT01NQU5EX1BSSU9SSVRZX0xPVyxcbiAgICAgICksXG4gICAgKVxuICB9LCBbXG4gICAgc2VsZWN0T3B0aW9uQW5kQ2xlYW5VcCxcbiAgICBjbG9zZSxcbiAgICBlZGl0b3IsXG4gICAgZ3JvdXBzV2l0aE9wdGlvbnMsXG4gICAgc2VsZWN0ZWRPcHRpb25LZXksXG4gICAgdXBkYXRlU2VsZWN0ZWRPcHRpb24sXG4gIF0pXG5cbiAgY29uc3QgbGlzdEl0ZW1Qcm9wcyA9IHVzZU1lbW8oXG4gICAgKCkgPT4gKHtcbiAgICAgIGdyb3Vwc1dpdGhPcHRpb25zLFxuICAgICAgc2VsZWN0T3B0aW9uQW5kQ2xlYW5VcCxcbiAgICAgIHNlbGVjdGVkT3B0aW9uS2V5LFxuICAgICAgc2V0U2VsZWN0ZWRPcHRpb25LZXksXG4gICAgfSksXG4gICAgW3NlbGVjdE9wdGlvbkFuZENsZWFuVXAsIHNlbGVjdGVkT3B0aW9uS2V5LCBncm91cHNXaXRoT3B0aW9uc10sXG4gIClcblxuICByZXR1cm4gbWVudVJlbmRlckZuKFxuICAgIGFuY2hvckVsZW1lbnRSZWYsXG4gICAgbGlzdEl0ZW1Qcm9wcyxcbiAgICByZXNvbHV0aW9uLm1hdGNoID8gcmVzb2x1dGlvbi5tYXRjaC5tYXRjaGluZ1N0cmluZyA6ICcnLFxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VNZW51QW5jaG9yUmVmKFxuICBhbmNob3JFbGVtOiBIVE1MRWxlbWVudCxcbiAgcmVzb2x1dGlvbjogTWVudVJlc29sdXRpb24gfCBudWxsLFxuICBzZXRSZXNvbHV0aW9uOiAocjogTWVudVJlc29sdXRpb24gfCBudWxsKSA9PiB2b2lkLFxuICBjbGFzc05hbWU/OiBzdHJpbmcsXG4pOiBNdXRhYmxlUmVmT2JqZWN0PEhUTUxFbGVtZW50PiB7XG4gIGNvbnN0IFtlZGl0b3JdID0gdXNlTGV4aWNhbENvbXBvc2VyQ29udGV4dCgpXG4gIGNvbnN0IGFuY2hvckVsZW1lbnRSZWYgPSB1c2VSZWY8SFRNTEVsZW1lbnQ+KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKVxuICBjb25zdCBwb3NpdGlvbk1lbnUgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3Qgcm9vdEVsZW1lbnQgPSBlZGl0b3IuZ2V0Um9vdEVsZW1lbnQoKVxuICAgIGNvbnN0IGNvbnRhaW5lckRpdiA9IGFuY2hvckVsZW1lbnRSZWYuY3VycmVudFxuXG4gICAgY29uc3QgVkVSVElDQUxfT0ZGU0VUID0gMzIgYXMgY29uc3RcblxuICAgIGNvbnN0IG1lbnVFbGUgPSBjb250YWluZXJEaXYuZmlyc3RDaGlsZCBhcyBFbGVtZW50XG4gICAgaWYgKHJvb3RFbGVtZW50ICE9PSBudWxsICYmIHJlc29sdXRpb24gIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHsgaGVpZ2h0LCB3aWR0aCB9ID0gcmVzb2x1dGlvbi5nZXRSZWN0KClcbiAgICAgIGxldCB7IGxlZnQsIHRvcCB9ID0gcmVzb2x1dGlvbi5nZXRSZWN0KClcblxuICAgICAgY29uc3QgcmF3VG9wID0gdG9wXG4gICAgICB0b3AgLT0gYW5jaG9yRWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AgKyB3aW5kb3cuc2Nyb2xsWVxuICAgICAgbGVmdCAtPSBhbmNob3JFbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQgKyB3aW5kb3cuc2Nyb2xsWFxuICAgICAgY29udGFpbmVyRGl2LnN0eWxlLmxlZnQgPSBgJHtsZWZ0ICsgd2luZG93LnNjcm9sbFh9cHhgXG4gICAgICBjb250YWluZXJEaXYuc3R5bGUuaGVpZ2h0ID0gYCR7aGVpZ2h0fXB4YFxuICAgICAgY29udGFpbmVyRGl2LnN0eWxlLndpZHRoID0gYCR7d2lkdGh9cHhgXG4gICAgICBpZiAobWVudUVsZSAhPT0gbnVsbCkge1xuICAgICAgICBjb25zdCBtZW51UmVjdCA9IG1lbnVFbGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICAgICAgY29uc3QgbWVudUhlaWdodCA9IG1lbnVSZWN0LmhlaWdodFxuICAgICAgICBjb25zdCBtZW51V2lkdGggPSBtZW51UmVjdC53aWR0aFxuXG4gICAgICAgIGNvbnN0IHJvb3RFbGVtZW50UmVjdCA9IHJvb3RFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG5cbiAgICAgICAgaWYgKGxlZnQgKyBtZW51V2lkdGggPiByb290RWxlbWVudFJlY3QucmlnaHQpIHtcbiAgICAgICAgICBjb250YWluZXJEaXYuc3R5bGUubGVmdCA9IGAke3Jvb3RFbGVtZW50UmVjdC5yaWdodCAtIG1lbnVXaWR0aCArIHdpbmRvdy5zY3JvbGxYfXB4YFxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgd291bGRHb09mZkJvdHRvbU9mU2NyZWVuID0gcmF3VG9wICsgbWVudUhlaWdodCArIFZFUlRJQ0FMX09GRlNFVCA+IHdpbmRvdy5pbm5lckhlaWdodFxuICAgICAgICAvL2NvbnN0IHdvdWxkR29PZmZCb3R0b21PZkNvbnRhaW5lciA9IHRvcCArIG1lbnVIZWlnaHQgPiByb290RWxlbWVudFJlY3QuYm90dG9tXG4gICAgICAgIGNvbnN0IHdvdWxkR29PZmZUb3BPZlNjcmVlbiA9IHJhd1RvcCA8IDBcblxuICAgICAgICAvLyBQb3NpdGlvbiBzbGFzaCBtZW51IGFib3ZlIHRoZSBjdXJzb3IgaW5zdGVhZCBvZiBiZWxvdyAoZGVmYXVsdCkgaWYgaXQgd291bGQgb3RoZXJ3aXNlIGdvIG9mZiB0aGUgYm90dG9tIG9mIHRoZSBzY3JlZW4uXG4gICAgICAgIGlmICh3b3VsZEdvT2ZmQm90dG9tT2ZTY3JlZW4gJiYgIXdvdWxkR29PZmZUb3BPZlNjcmVlbikge1xuICAgICAgICAgIGNvbnN0IG1hcmdpbiA9IDI0XG4gICAgICAgICAgY29udGFpbmVyRGl2LnN0eWxlLnRvcCA9IGAke1xuICAgICAgICAgICAgdG9wICsgVkVSVElDQUxfT0ZGU0VUIC0gbWVudUhlaWdodCArIHdpbmRvdy5zY3JvbGxZIC0gKGhlaWdodCArIG1hcmdpbilcbiAgICAgICAgICB9cHhgXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29udGFpbmVyRGl2LnN0eWxlLnRvcCA9IGAke3RvcCArIHdpbmRvdy5zY3JvbGxZICsgVkVSVElDQUxfT0ZGU0VUfXB4YFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICghY29udGFpbmVyRGl2LmlzQ29ubmVjdGVkKSB7XG4gICAgICAgIGlmIChjbGFzc05hbWUgIT0gbnVsbCkge1xuICAgICAgICAgIGNvbnRhaW5lckRpdi5jbGFzc05hbWUgPSBjbGFzc05hbWVcbiAgICAgICAgfVxuICAgICAgICBjb250YWluZXJEaXYuc2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJywgJ1NsYXNoIG1lbnUnKVxuICAgICAgICBjb250YWluZXJEaXYuc2V0QXR0cmlidXRlKCdpZCcsICdzbGFzaC1tZW51JylcbiAgICAgICAgY29udGFpbmVyRGl2LnNldEF0dHJpYnV0ZSgncm9sZScsICdsaXN0Ym94JylcbiAgICAgICAgY29udGFpbmVyRGl2LnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snXG4gICAgICAgIGNvbnRhaW5lckRpdi5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSdcbiAgICAgICAgYW5jaG9yRWxlbS5hcHBlbmQoY29udGFpbmVyRGl2KVxuICAgICAgfVxuICAgICAgYW5jaG9yRWxlbWVudFJlZi5jdXJyZW50ID0gY29udGFpbmVyRGl2XG4gICAgICByb290RWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtY29udHJvbHMnLCAnc2xhc2gtbWVudScpXG4gICAgfVxuICB9LCBbZWRpdG9yLCByZXNvbHV0aW9uLCBjbGFzc05hbWUsIGFuY2hvckVsZW1dKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgcm9vdEVsZW1lbnQgPSBlZGl0b3IuZ2V0Um9vdEVsZW1lbnQoKVxuICAgIGlmIChyZXNvbHV0aW9uICE9PSBudWxsKSB7XG4gICAgICBwb3NpdGlvbk1lbnUoKVxuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgaWYgKHJvb3RFbGVtZW50ICE9PSBudWxsKSB7XG4gICAgICAgICAgcm9vdEVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdhcmlhLWNvbnRyb2xzJylcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNvbnRhaW5lckRpdiA9IGFuY2hvckVsZW1lbnRSZWYuY3VycmVudFxuICAgICAgICBpZiAoY29udGFpbmVyRGl2ICE9PSBudWxsICYmIGNvbnRhaW5lckRpdi5pc0Nvbm5lY3RlZCkge1xuICAgICAgICAgIGNvbnRhaW5lckRpdi5yZW1vdmUoKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9LCBbZWRpdG9yLCBwb3NpdGlvbk1lbnUsIHJlc29sdXRpb25dKVxuXG4gIGNvbnN0IG9uVmlzaWJpbGl0eUNoYW5nZSA9IHVzZUNhbGxiYWNrKFxuICAgIChpc0luVmlldzogYm9vbGVhbikgPT4ge1xuICAgICAgaWYgKHJlc29sdXRpb24gIT09IG51bGwpIHtcbiAgICAgICAgaWYgKCFpc0luVmlldykge1xuICAgICAgICAgIHNldFJlc29sdXRpb24obnVsbClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgW3Jlc29sdXRpb24sIHNldFJlc29sdXRpb25dLFxuICApXG5cbiAgdXNlRHluYW1pY1Bvc2l0aW9uaW5nKHJlc29sdXRpb24sIGFuY2hvckVsZW1lbnRSZWYuY3VycmVudCwgcG9zaXRpb25NZW51LCBvblZpc2liaWxpdHlDaGFuZ2UpXG5cbiAgcmV0dXJuIGFuY2hvckVsZW1lbnRSZWZcbn1cbiJdLCJuYW1lcyI6WyJ1c2VMZXhpY2FsQ29tcG9zZXJDb250ZXh0IiwibWVyZ2VSZWdpc3RlciIsIiRnZXRTZWxlY3Rpb24iLCIkaXNSYW5nZVNlbGVjdGlvbiIsIkNPTU1BTkRfUFJJT1JJVFlfTE9XIiwiS0VZX0FSUk9XX0RPV05fQ09NTUFORCIsIktFWV9BUlJPV19VUF9DT01NQU5EIiwiS0VZX0VOVEVSX0NPTU1BTkQiLCJLRVlfRVNDQVBFX0NPTU1BTkQiLCJLRVlfVEFCX0NPTU1BTkQiLCJjcmVhdGVDb21tYW5kIiwidXNlQ2FsbGJhY2siLCJ1c2VFZmZlY3QiLCJ1c2VMYXlvdXRFZmZlY3QiLCJ1c2VNZW1vIiwidXNlUmVmIiwidXNlU3RhdGUiLCJiYXNlQ2xhc3MiLCJzY3JvbGxJbnRvVmlld0lmTmVlZGVkIiwidGFyZ2V0IiwidHlwZWFoZWFkQ29udGFpbmVyTm9kZSIsImRvY3VtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJ0eXBlYWhlYWRSZWN0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwidG9wIiwiaGVpZ2h0Iiwid2luZG93IiwiaW5uZXJIZWlnaHQiLCJzY3JvbGxJbnRvVmlldyIsImJsb2NrIiwiZ2V0RnVsbE1hdGNoT2Zmc2V0IiwiZG9jdW1lbnRUZXh0IiwiZW50cnlUZXh0Iiwib2Zmc2V0IiwidHJpZ2dlck9mZnNldCIsImkiLCJsZW5ndGgiLCJzdWJzdHIiLCIkc3BsaXROb2RlQ29udGFpbmluZ1F1ZXJ5IiwibWF0Y2giLCJzZWxlY3Rpb24iLCJpc0NvbGxhcHNlZCIsImFuY2hvciIsInR5cGUiLCJhbmNob3JOb2RlIiwiZ2V0Tm9kZSIsImlzU2ltcGxlVGV4dCIsInNlbGVjdGlvbk9mZnNldCIsInRleHRDb250ZW50IiwiZ2V0VGV4dENvbnRlbnQiLCJzbGljZSIsImNoYXJhY3Rlck9mZnNldCIsInJlcGxhY2VhYmxlU3RyaW5nIiwicXVlcnlPZmZzZXQiLCJtYXRjaGluZ1N0cmluZyIsInN0YXJ0T2Zmc2V0IiwibmV3Tm9kZSIsInNwbGl0VGV4dCIsImdldFNjcm9sbFBhcmVudCIsImVsZW1lbnQiLCJpbmNsdWRlSGlkZGVuIiwic3R5bGUiLCJnZXRDb21wdXRlZFN0eWxlIiwiZXhjbHVkZVN0YXRpY1BhcmVudCIsInBvc2l0aW9uIiwib3ZlcmZsb3dSZWdleCIsImJvZHkiLCJwYXJlbnQiLCJwYXJlbnRFbGVtZW50IiwidGVzdCIsIm92ZXJmbG93Iiwib3ZlcmZsb3dZIiwib3ZlcmZsb3dYIiwiaXNUcmlnZ2VyVmlzaWJsZUluTmVhcmVzdFNjcm9sbENvbnRhaW5lciIsInRhcmdldEVsZW1lbnQiLCJjb250YWluZXJFbGVtZW50IiwidFJlY3QiLCJjUmVjdCIsImJvdHRvbSIsInVzZUR5bmFtaWNQb3NpdGlvbmluZyIsInJlc29sdXRpb24iLCJvblJlcG9zaXRpb24iLCJvblZpc2liaWxpdHlDaGFuZ2UiLCJlZGl0b3IiLCJyb290RWxlbWVudCIsImdldFJvb3RFbGVtZW50Iiwicm9vdFNjcm9sbFBhcmVudCIsInRpY2tpbmciLCJwcmV2aW91c0lzSW5WaWV3IiwiaGFuZGxlU2Nyb2xsIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiaXNJblZpZXciLCJyZXNpemVPYnNlcnZlciIsIlJlc2l6ZU9ic2VydmVyIiwiYWRkRXZlbnRMaXN0ZW5lciIsImNhcHR1cmUiLCJwYXNzaXZlIiwib2JzZXJ2ZSIsInVub2JzZXJ2ZSIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJTQ1JPTExfVFlQRUFIRUFEX09QVElPTl9JTlRPX1ZJRVdfQ09NTUFORCIsIkxleGljYWxNZW51IiwiYW5jaG9yRWxlbWVudFJlZiIsImNsb3NlIiwiZ3JvdXBzV2l0aE9wdGlvbnMiLCJtZW51UmVuZGVyRm4iLCJvblNlbGVjdE9wdGlvbiIsInNob3VsZFNwbGl0Tm9kZVdpdGhRdWVyeSIsInNlbGVjdGVkT3B0aW9uS2V5Iiwic2V0U2VsZWN0ZWRPcHRpb25LZXkiLCJ1cGRhdGVTZWxlY3RlZE9wdGlvbiIsIm9wdGlvbiIsInJvb3RFbGVtIiwic2V0QXR0cmlidXRlIiwia2V5Iiwic2V0U2VsZWN0ZWRPcHRpb25LZXlUb0ZpcnN0TWF0Y2hpbmdPcHRpb24iLCJhbGxPcHRpb25zIiwiZmxhdE1hcCIsImdyb3VwIiwib3B0aW9ucyIsImZpcnN0TWF0Y2hpbmdPcHRpb24iLCJzZWxlY3RPcHRpb25BbmRDbGVhblVwIiwic2VsZWN0ZWRPcHRpb24iLCJ1cGRhdGUiLCJ0ZXh0Tm9kZUNvbnRhaW5pbmdRdWVyeSIsInJlbW92ZUF0dHJpYnV0ZSIsInJlZ2lzdGVyQ29tbWFuZCIsInJlZiIsImN1cnJlbnQiLCJwYXlsb2FkIiwiZXZlbnQiLCJzZWxlY3RlZEluZGV4IiwiZmluZEluZGV4IiwibmV3U2VsZWN0ZWRJbmRleCIsIm5ld1NlbGVjdGVkT3B0aW9uIiwiZGlzcGF0Y2hDb21tYW5kIiwiaW5kZXgiLCJwcmV2ZW50RGVmYXVsdCIsInN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbiIsImZpbmQiLCJsaXN0SXRlbVByb3BzIiwidXNlTWVudUFuY2hvclJlZiIsImFuY2hvckVsZW0iLCJzZXRSZXNvbHV0aW9uIiwiY2xhc3NOYW1lIiwiY3JlYXRlRWxlbWVudCIsInBvc2l0aW9uTWVudSIsImNvbnRhaW5lckRpdiIsIlZFUlRJQ0FMX09GRlNFVCIsIm1lbnVFbGUiLCJmaXJzdENoaWxkIiwid2lkdGgiLCJnZXRSZWN0IiwibGVmdCIsInJhd1RvcCIsInNjcm9sbFkiLCJzY3JvbGxYIiwibWVudVJlY3QiLCJtZW51SGVpZ2h0IiwibWVudVdpZHRoIiwicm9vdEVsZW1lbnRSZWN0IiwicmlnaHQiLCJ3b3VsZEdvT2ZmQm90dG9tT2ZTY3JlZW4iLCJ3b3VsZEdvT2ZmVG9wT2ZTY3JlZW4iLCJtYXJnaW4iLCJpc0Nvbm5lY3RlZCIsImRpc3BsYXkiLCJhcHBlbmQiLCJyZW1vdmUiXSwibWFwcGluZ3MiOiJBQUFBO0FBSUEsU0FBU0EseUJBQXlCLFFBQVEsMkNBQTBDO0FBQ3BGLFNBQVNDLGFBQWEsUUFBUSxpQkFBZ0I7QUFDOUMsU0FDRUMsYUFBYSxFQUNiQyxpQkFBaUIsRUFDakJDLG9CQUFvQixFQUNwQkMsc0JBQXNCLEVBQ3RCQyxvQkFBb0IsRUFDcEJDLGlCQUFpQixFQUNqQkMsa0JBQWtCLEVBQ2xCQyxlQUFlLEVBQ2ZDLGFBQWEsUUFDUixVQUFTO0FBQ2hCLFNBQVNDLFdBQVcsRUFBRUMsU0FBUyxFQUFFQyxlQUFlLEVBQUVDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxRQUFRLFFBQVEsUUFBTztBQVUxRixNQUFNQyxZQUFZO0FBYWxCLE1BQU1DLHlCQUF5QixDQUFDQztJQUM5QixNQUFNQyx5QkFBeUJDLFNBQVNDLGNBQWMsQ0FBQztJQUN2RCxJQUFJLENBQUNGLHdCQUF3QjtJQUU3QixNQUFNRyxnQkFBZ0JILHVCQUF1QkkscUJBQXFCO0lBRWxFLElBQUlELGNBQWNFLEdBQUcsR0FBR0YsY0FBY0csTUFBTSxHQUFHQyxPQUFPQyxXQUFXLEVBQUU7UUFDakVSLHVCQUF1QlMsY0FBYyxDQUFDO1lBQ3BDQyxPQUFPO1FBQ1Q7SUFDRjtJQUVBLElBQUlQLGNBQWNFLEdBQUcsR0FBRyxHQUFHO1FBQ3pCTCx1QkFBdUJTLGNBQWMsQ0FBQztZQUNwQ0MsT0FBTztRQUNUO0lBQ0Y7SUFFQVgsT0FBT1UsY0FBYyxDQUFDO1FBQUVDLE9BQU87SUFBVTtBQUMzQztBQUVBOzs7Q0FHQyxHQUNELFNBQVNDLG1CQUFtQkMsWUFBb0IsRUFBRUMsU0FBaUIsRUFBRUMsTUFBYztJQUNqRixJQUFJQyxnQkFBZ0JEO0lBQ3BCLElBQUssSUFBSUUsSUFBSUQsZUFBZUMsS0FBS0gsVUFBVUksTUFBTSxFQUFFRCxJQUFLO1FBQ3RELElBQUlKLGFBQWFNLE1BQU0sQ0FBQyxDQUFDRixPQUFPSCxVQUFVSyxNQUFNLENBQUMsR0FBR0YsSUFBSTtZQUN0REQsZ0JBQWdCQztRQUNsQjtJQUNGO0lBQ0EsT0FBT0Q7QUFDVDtBQUVBOzs7Q0FHQyxHQUNELFNBQVNJLDBCQUEwQkMsS0FBb0I7SUFDckQsTUFBTUMsWUFBWXZDO0lBQ2xCLElBQUksQ0FBQ0Msa0JBQWtCc0MsY0FBYyxDQUFDQSxVQUFVQyxXQUFXLElBQUk7UUFDN0QsT0FBTztJQUNUO0lBQ0EsTUFBTUMsU0FBU0YsVUFBVUUsTUFBTTtJQUMvQixJQUFJQSxPQUFPQyxJQUFJLEtBQUssUUFBUTtRQUMxQixPQUFPO0lBQ1Q7SUFDQSxNQUFNQyxhQUFhRixPQUFPRyxPQUFPO0lBQ2pDLElBQUksQ0FBQ0QsV0FBV0UsWUFBWSxJQUFJO1FBQzlCLE9BQU87SUFDVDtJQUNBLE1BQU1DLGtCQUFrQkwsT0FBT1QsTUFBTTtJQUNyQyxNQUFNZSxjQUFjSixXQUFXSyxjQUFjLEdBQUdDLEtBQUssQ0FBQyxHQUFHSDtJQUN6RCwwREFBMEQ7SUFDMUQsTUFBTUksa0JBQWtCWixNQUFNYSxpQkFBaUIsQ0FBQ2hCLE1BQU07SUFDdEQsMERBQTBEO0lBQzFELE1BQU1pQixjQUFjdkIsbUJBQW1Ca0IsYUFBYVQsTUFBTWUsY0FBYyxFQUFFSDtJQUMxRSxNQUFNSSxjQUFjUixrQkFBa0JNO0lBQ3RDLElBQUlFLGNBQWMsR0FBRztRQUNuQixPQUFPO0lBQ1Q7SUFDQSxJQUFJQztJQUNKLElBQUlELGdCQUFnQixHQUFHO1FBQ3BCLENBQUNDLFFBQVEsR0FBR1osV0FBV2EsU0FBUyxDQUFDVjtJQUNwQyxPQUFPO1FBQ0osR0FBR1MsUUFBUSxHQUFHWixXQUFXYSxTQUFTLENBQUNGLGFBQWFSO0lBQ25EO0lBRUEsT0FBT1M7QUFDVDtBQUVBLHdEQUF3RDtBQUN4RCxPQUFPLFNBQVNFLGdCQUNkQyxPQUFvQixFQUNwQkMsYUFBc0I7SUFFdEIsSUFBSUMsUUFBUUMsaUJBQWlCSDtJQUM3QixNQUFNSSxzQkFBc0JGLE1BQU1HLFFBQVEsS0FBSztJQUMvQyxNQUFNQyxnQkFBZ0JMLGdCQUFnQix5QkFBeUI7SUFDL0QsSUFBSUMsTUFBTUcsUUFBUSxLQUFLLFNBQVM7UUFDOUIsT0FBTzVDLFNBQVM4QyxJQUFJO0lBQ3RCO0lBQ0EsSUFBSyxJQUFJQyxTQUE2QlIsU0FBVVEsU0FBU0EsT0FBT0MsYUFBYSxFQUFLO1FBQ2hGUCxRQUFRQyxpQkFBaUJLO1FBQ3pCLElBQUlKLHVCQUF1QkYsTUFBTUcsUUFBUSxLQUFLLFVBQVU7WUFDdEQ7UUFDRjtRQUNBLElBQUlDLGNBQWNJLElBQUksQ0FBQ1IsTUFBTVMsUUFBUSxHQUFHVCxNQUFNVSxTQUFTLEdBQUdWLE1BQU1XLFNBQVMsR0FBRztZQUMxRSxPQUFPTDtRQUNUO0lBQ0Y7SUFDQSxPQUFPL0MsU0FBUzhDLElBQUk7QUFDdEI7QUFFQSxTQUFTTyx5Q0FDUEMsYUFBMEIsRUFDMUJDLGdCQUE2QjtJQUU3QixNQUFNQyxRQUFRRixjQUFjbkQscUJBQXFCO0lBQ2pELE1BQU1zRCxRQUFRRixpQkFBaUJwRCxxQkFBcUI7SUFDcEQsT0FBT3FELE1BQU1wRCxHQUFHLEdBQUdxRCxNQUFNckQsR0FBRyxJQUFJb0QsTUFBTXBELEdBQUcsR0FBR3FELE1BQU1DLE1BQU07QUFDMUQ7QUFFQSxvRUFBb0U7QUFDcEUsT0FBTyxTQUFTQyxzQkFDZEMsVUFBaUMsRUFDakNOLGFBQWlDLEVBQ2pDTyxZQUF3QixFQUN4QkMsa0JBQWdEO0lBRWhELE1BQU0sQ0FBQ0MsT0FBTyxHQUFHcEY7SUFDakJZLFVBQVU7UUFDUixJQUFJK0QsaUJBQWlCLFFBQVFNLGNBQWMsTUFBTTtZQUMvQyxNQUFNSSxjQUFjRCxPQUFPRSxjQUFjO1lBQ3pDLE1BQU1DLG1CQUNKRixlQUFlLE9BQU8xQixnQkFBZ0IwQixhQUFhLFNBQVNoRSxTQUFTOEMsSUFBSTtZQUMzRSxJQUFJcUIsVUFBVTtZQUNkLElBQUlDLG1CQUFtQmYseUNBQ3JCQyxlQUNBWTtZQUVGLE1BQU1HLGVBQWU7Z0JBQ25CLElBQUksQ0FBQ0YsU0FBUztvQkFDWjdELE9BQU9nRSxxQkFBcUIsQ0FBQzt3QkFDM0JUO3dCQUNBTSxVQUFVO29CQUNaO29CQUNBQSxVQUFVO2dCQUNaO2dCQUNBLE1BQU1JLFdBQVdsQix5Q0FBeUNDLGVBQWVZO2dCQUN6RSxJQUFJSyxhQUFhSCxrQkFBa0I7b0JBQ2pDQSxtQkFBbUJHO29CQUNuQixJQUFJVCxzQkFBc0IsTUFBTTt3QkFDOUJBLG1CQUFtQlM7b0JBQ3JCO2dCQUNGO1lBQ0Y7WUFDQSxNQUFNQyxpQkFBaUIsSUFBSUMsZUFBZVo7WUFDMUN2RCxPQUFPb0UsZ0JBQWdCLENBQUMsVUFBVWI7WUFDbEM3RCxTQUFTMEUsZ0JBQWdCLENBQUMsVUFBVUwsY0FBYztnQkFDaERNLFNBQVM7Z0JBQ1RDLFNBQVM7WUFDWDtZQUNBSixlQUFlSyxPQUFPLENBQUN2QjtZQUN2QixPQUFPO2dCQUNMa0IsZUFBZU0sU0FBUyxDQUFDeEI7Z0JBQ3pCaEQsT0FBT3lFLG1CQUFtQixDQUFDLFVBQVVsQjtnQkFDckM3RCxTQUFTK0UsbUJBQW1CLENBQUMsVUFBVVYsY0FBYztZQUN2RDtRQUNGO0lBQ0YsR0FBRztRQUFDZjtRQUFlUztRQUFRRDtRQUFvQkQ7UUFBY0Q7S0FBVztBQUMxRTtBQUVBLE9BQU8sTUFBTW9CLDRDQUdSM0YsY0FBYyw2Q0FBNEM7QUFFL0QsT0FBTyxTQUFTNEYsWUFBWSxFQUMxQkMsZ0JBQWdCLEVBQ2hCQyxLQUFLLEVBQ0xwQixNQUFNLEVBQ04sdUlBQXVJO0FBQ3ZJcUIsaUJBQWlCLEVBQ2pCQyxZQUFZLEVBQ1pDLGNBQWMsRUFDZDFCLFVBQVUsRUFDVjJCLDJCQUEyQixLQUFLLEVBZWpDO0lBQ0MsTUFBTSxDQUFDQyxtQkFBbUJDLHFCQUFxQixHQUFHOUYsU0FBd0I7SUFFMUUsTUFBTXVDLGlCQUFpQixBQUFDMEIsV0FBV3pDLEtBQUssSUFBSXlDLFdBQVd6QyxLQUFLLENBQUNlLGNBQWMsSUFBSztJQUVoRixNQUFNd0QsdUJBQXVCcEcsWUFDM0IsQ0FBQ3FHO1FBQ0MsTUFBTUMsV0FBVzdCLE9BQU9FLGNBQWM7UUFDdEMsSUFBSTJCLGFBQWEsTUFBTTtZQUNyQkEsU0FBU0MsWUFBWSxDQUFDLHlCQUF5QixDQUFDLEVBQUVqRyxVQUFVLE9BQU8sRUFBRStGLE9BQU9HLEdBQUcsQ0FBQyxDQUFDO1lBQ2pGTCxxQkFBcUJFLE9BQU9HLEdBQUc7UUFDakM7SUFDRixHQUNBO1FBQUMvQjtLQUFPO0lBR1YsTUFBTWdDLDRDQUE0Q3pHLFlBQVk7UUFDNUQsd0RBQXdEO1FBQ3hELElBQUk4RixzQkFBc0IsUUFBUWxELGtCQUFrQixNQUFNO1lBQ3hELHVJQUF1STtZQUN2SSxNQUFNOEQsYUFBYVosa0JBQWtCYSxPQUFPLENBQUMsQ0FBQ0MsUUFBVUEsTUFBTUMsT0FBTztZQUVyRSxJQUFJSCxXQUFXaEYsTUFBTSxFQUFFO2dCQUNyQixNQUFNb0Ysc0JBQXNCSixVQUFVLENBQUMsRUFBRTtnQkFDekNOLHFCQUFxQlU7WUFDdkI7UUFDRjtJQUNGLEdBQUc7UUFBQ2hCO1FBQW1CTTtRQUFzQnhEO0tBQWU7SUFFNUQzQyxVQUFVO1FBQ1J3RztJQUNGLEdBQUc7UUFBQzdEO1FBQWdCNkQ7S0FBMEM7SUFFOUQsTUFBTU0seUJBQXlCL0csWUFDN0IsQ0FBQ2dIO1FBQ0N2QyxPQUFPd0MsTUFBTSxDQUFDO1lBQ1osTUFBTUMsMEJBQ0o1QyxXQUFXekMsS0FBSyxJQUFJLFFBQVFvRSwyQkFDeEJyRSwwQkFBMEIwQyxXQUFXekMsS0FBSyxJQUMxQztZQUVObUUsZUFDRWdCLGdCQUNBRSx5QkFDQXJCLE9BQ0F2QixXQUFXekMsS0FBSyxHQUFHeUMsV0FBV3pDLEtBQUssQ0FBQ2UsY0FBYyxHQUFHO1FBRXpEO0lBQ0YsR0FDQTtRQUFDNkI7UUFBUXdCO1FBQTBCM0IsV0FBV3pDLEtBQUs7UUFBRW1FO1FBQWdCSDtLQUFNO0lBRzdFNUYsVUFBVTtRQUNSLE9BQU87WUFDTCxNQUFNcUcsV0FBVzdCLE9BQU9FLGNBQWM7WUFDdEMsSUFBSTJCLGFBQWEsTUFBTTtnQkFDckJBLFNBQVNhLGVBQWUsQ0FBQztZQUMzQjtRQUNGO0lBQ0YsR0FBRztRQUFDMUM7S0FBTztJQUVYdkUsZ0JBQWdCO1FBQ2QsSUFBSTRGLHNCQUFzQixNQUFNO1lBQzlCSyxxQkFBcUI7UUFDdkIsT0FBTyxJQUFJRCxzQkFBc0IsTUFBTTtZQUNyQ087UUFDRjtJQUNGLEdBQUc7UUFDRFg7UUFDQUk7UUFDQUU7UUFDQUs7S0FDRDtJQUVEeEcsVUFBVTtRQUNSLE9BQU9YLGNBQ0xtRixPQUFPMkMsZUFBZSxDQUNwQjFCLDJDQUNBLENBQUMsRUFBRVcsTUFBTSxFQUFFO1lBQ1QsSUFBSUEsT0FBT2dCLEdBQUcsSUFBSWhCLE9BQU9nQixHQUFHLENBQUNDLE9BQU8sSUFBSSxNQUFNO2dCQUM1Qy9HLHVCQUF1QjhGLE9BQU9nQixHQUFHLENBQUNDLE9BQU87Z0JBQ3pDLE9BQU87WUFDVDtZQUVBLE9BQU87UUFDVCxHQUNBN0g7SUFHTixHQUFHO1FBQUNnRjtRQUFRMkI7S0FBcUI7SUFFakNuRyxVQUFVO1FBQ1IsT0FBT1gsY0FDTG1GLE9BQU8yQyxlQUFlLENBQ3BCMUgsd0JBQ0EsQ0FBQzZIO1lBQ0MsTUFBTUMsUUFBUUQ7WUFDZCxJQUNFekIsc0JBQXNCLFFBQ3RCQSxrQkFBa0JwRSxNQUFNLElBQ3hCd0Usc0JBQXNCLE1BQ3RCO2dCQUNBLE1BQU1RLGFBQWFaLGtCQUFrQmEsT0FBTyxDQUFDLENBQUNDLFFBQVVBLE1BQU1DLE9BQU87Z0JBQ3JFLE1BQU1ZLGdCQUFnQmYsV0FBV2dCLFNBQVMsQ0FBQyxDQUFDckIsU0FBV0EsT0FBT0csR0FBRyxLQUFLTjtnQkFFdEUsTUFBTXlCLG1CQUFtQkYsa0JBQWtCZixXQUFXaEYsTUFBTSxHQUFHLElBQUkrRixnQkFBZ0IsSUFBSTtnQkFFdkYsTUFBTUcsb0JBQW9CbEIsVUFBVSxDQUFDaUIsaUJBQWlCO2dCQUV0RHZCLHFCQUFxQndCO2dCQUNyQixJQUFJQSxrQkFBa0JQLEdBQUcsSUFBSSxRQUFRTyxrQkFBa0JQLEdBQUcsQ0FBQ0MsT0FBTyxFQUFFO29CQUNsRTdDLE9BQU9vRCxlQUFlLENBQUNuQywyQ0FBMkM7d0JBQ2hFb0MsT0FBT0g7d0JBQ1B0QixRQUFRdUI7b0JBQ1Y7Z0JBQ0Y7Z0JBQ0FKLE1BQU1PLGNBQWM7Z0JBQ3BCUCxNQUFNUSx3QkFBd0I7WUFDaEM7WUFDQSxPQUFPO1FBQ1QsR0FDQXZJLHVCQUVGZ0YsT0FBTzJDLGVBQWUsQ0FDcEJ6SCxzQkFDQSxDQUFDNEg7WUFDQyxNQUFNQyxRQUFRRDtZQUNkLElBQ0V6QixzQkFBc0IsUUFDdEJBLGtCQUFrQnBFLE1BQU0sSUFDeEJ3RSxzQkFBc0IsTUFDdEI7Z0JBQ0EsTUFBTVEsYUFBYVosa0JBQWtCYSxPQUFPLENBQUMsQ0FBQ0MsUUFBVUEsTUFBTUMsT0FBTztnQkFDckUsTUFBTVksZ0JBQWdCZixXQUFXZ0IsU0FBUyxDQUFDLENBQUNyQixTQUFXQSxPQUFPRyxHQUFHLEtBQUtOO2dCQUV0RSxNQUFNeUIsbUJBQW1CRixrQkFBa0IsSUFBSUEsZ0JBQWdCLElBQUlmLFdBQVdoRixNQUFNLEdBQUc7Z0JBRXZGLE1BQU1rRyxvQkFBb0JsQixVQUFVLENBQUNpQixpQkFBaUI7Z0JBRXREdkIscUJBQXFCd0I7Z0JBQ3JCLElBQUlBLGtCQUFrQlAsR0FBRyxJQUFJLFFBQVFPLGtCQUFrQlAsR0FBRyxDQUFDQyxPQUFPLEVBQUU7b0JBQ2xFL0csdUJBQXVCcUgsa0JBQWtCUCxHQUFHLENBQUNDLE9BQU87Z0JBQ3REO2dCQUNBRSxNQUFNTyxjQUFjO2dCQUNwQlAsTUFBTVEsd0JBQXdCO1lBQ2hDO1lBQ0EsT0FBTztRQUNULEdBQ0F2SSx1QkFFRmdGLE9BQU8yQyxlQUFlLENBQ3BCdkgsb0JBQ0EsQ0FBQzBIO1lBQ0MsTUFBTUMsUUFBUUQ7WUFDZEMsTUFBTU8sY0FBYztZQUNwQlAsTUFBTVEsd0JBQXdCO1lBQzlCbkM7WUFDQSxPQUFPO1FBQ1QsR0FDQXBHLHVCQUVGZ0YsT0FBTzJDLGVBQWUsQ0FDcEJ0SCxpQkFDQSxDQUFDeUg7WUFDQyxNQUFNQyxRQUFRRDtZQUVkLElBQUl6QixzQkFBc0IsUUFBUUksc0JBQXNCLE1BQU07Z0JBQzVELE9BQU87WUFDVDtZQUNBLE1BQU1RLGFBQWFaLGtCQUFrQmEsT0FBTyxDQUFDLENBQUNDLFFBQVVBLE1BQU1DLE9BQU87WUFDckUsTUFBTUcsaUJBQWlCTixXQUFXdUIsSUFBSSxDQUFDLENBQUM1QixTQUFXQSxPQUFPRyxHQUFHLEtBQUtOO1lBQ2xFLElBQUksQ0FBQ2MsZ0JBQWdCO2dCQUNuQixPQUFPO1lBQ1Q7WUFFQVEsTUFBTU8sY0FBYztZQUNwQlAsTUFBTVEsd0JBQXdCO1lBQzlCakIsdUJBQXVCQztZQUN2QixPQUFPO1FBQ1QsR0FDQXZILHVCQUVGZ0YsT0FBTzJDLGVBQWUsQ0FDcEJ4SCxtQkFDQSxDQUFDNEg7WUFDQyxJQUFJMUIsc0JBQXNCLFFBQVFJLHNCQUFzQixNQUFNO2dCQUM1RCxPQUFPO1lBQ1Q7WUFDQSxNQUFNUSxhQUFhWixrQkFBa0JhLE9BQU8sQ0FBQyxDQUFDQyxRQUFVQSxNQUFNQyxPQUFPO1lBQ3JFLE1BQU1HLGlCQUFpQk4sV0FBV3VCLElBQUksQ0FBQyxDQUFDNUIsU0FBV0EsT0FBT0csR0FBRyxLQUFLTjtZQUNsRSxJQUFJLENBQUNjLGdCQUFnQjtnQkFDbkIsT0FBTztZQUNUO1lBRUEsSUFBSVEsVUFBVSxNQUFNO2dCQUNsQkEsTUFBTU8sY0FBYztnQkFDcEJQLE1BQU1RLHdCQUF3QjtZQUNoQztZQUNBakIsdUJBQXVCQztZQUN2QixPQUFPO1FBQ1QsR0FDQXZIO0lBR04sR0FBRztRQUNEc0g7UUFDQWxCO1FBQ0FwQjtRQUNBcUI7UUFDQUk7UUFDQUU7S0FDRDtJQUVELE1BQU04QixnQkFBZ0IvSCxRQUNwQixJQUFPLENBQUE7WUFDTDJGO1lBQ0FpQjtZQUNBYjtZQUNBQztRQUNGLENBQUEsR0FDQTtRQUFDWTtRQUF3QmI7UUFBbUJKO0tBQWtCO0lBR2hFLE9BQU9DLGFBQ0xILGtCQUNBc0MsZUFDQTVELFdBQVd6QyxLQUFLLEdBQUd5QyxXQUFXekMsS0FBSyxDQUFDZSxjQUFjLEdBQUc7QUFFekQ7QUFFQSxPQUFPLFNBQVN1RixpQkFDZEMsVUFBdUIsRUFDdkI5RCxVQUFpQyxFQUNqQytELGFBQWlELEVBQ2pEQyxTQUFrQjtJQUVsQixNQUFNLENBQUM3RCxPQUFPLEdBQUdwRjtJQUNqQixNQUFNdUcsbUJBQW1CeEYsT0FBb0JNLFNBQVM2SCxhQUFhLENBQUM7SUFDcEUsTUFBTUMsZUFBZXhJLFlBQVk7UUFDL0IsTUFBTTBFLGNBQWNELE9BQU9FLGNBQWM7UUFDekMsTUFBTThELGVBQWU3QyxpQkFBaUIwQixPQUFPO1FBRTdDLE1BQU1vQixrQkFBa0I7UUFFeEIsTUFBTUMsVUFBVUYsYUFBYUcsVUFBVTtRQUN2QyxJQUFJbEUsZ0JBQWdCLFFBQVFKLGVBQWUsTUFBTTtZQUMvQyxNQUFNLEVBQUV2RCxNQUFNLEVBQUU4SCxLQUFLLEVBQUUsR0FBR3ZFLFdBQVd3RSxPQUFPO1lBQzVDLElBQUksRUFBRUMsSUFBSSxFQUFFakksR0FBRyxFQUFFLEdBQUd3RCxXQUFXd0UsT0FBTztZQUV0QyxNQUFNRSxTQUFTbEk7WUFDZkEsT0FBT3NILFdBQVd2SCxxQkFBcUIsR0FBR0MsR0FBRyxHQUFHRSxPQUFPaUksT0FBTztZQUM5REYsUUFBUVgsV0FBV3ZILHFCQUFxQixHQUFHa0ksSUFBSSxHQUFHL0gsT0FBT2tJLE9BQU87WUFDaEVULGFBQWF0RixLQUFLLENBQUM0RixJQUFJLEdBQUcsQ0FBQyxFQUFFQSxPQUFPL0gsT0FBT2tJLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDdERULGFBQWF0RixLQUFLLENBQUNwQyxNQUFNLEdBQUcsQ0FBQyxFQUFFQSxPQUFPLEVBQUUsQ0FBQztZQUN6QzBILGFBQWF0RixLQUFLLENBQUMwRixLQUFLLEdBQUcsQ0FBQyxFQUFFQSxNQUFNLEVBQUUsQ0FBQztZQUN2QyxJQUFJRixZQUFZLE1BQU07Z0JBQ3BCLE1BQU1RLFdBQVdSLFFBQVE5SCxxQkFBcUI7Z0JBQzlDLE1BQU11SSxhQUFhRCxTQUFTcEksTUFBTTtnQkFDbEMsTUFBTXNJLFlBQVlGLFNBQVNOLEtBQUs7Z0JBRWhDLE1BQU1TLGtCQUFrQjVFLFlBQVk3RCxxQkFBcUI7Z0JBRXpELElBQUlrSSxPQUFPTSxZQUFZQyxnQkFBZ0JDLEtBQUssRUFBRTtvQkFDNUNkLGFBQWF0RixLQUFLLENBQUM0RixJQUFJLEdBQUcsQ0FBQyxFQUFFTyxnQkFBZ0JDLEtBQUssR0FBR0YsWUFBWXJJLE9BQU9rSSxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUNyRjtnQkFFQSxNQUFNTSwyQkFBMkJSLFNBQVNJLGFBQWFWLGtCQUFrQjFILE9BQU9DLFdBQVc7Z0JBQzNGLCtFQUErRTtnQkFDL0UsTUFBTXdJLHdCQUF3QlQsU0FBUztnQkFFdkMseUhBQXlIO2dCQUN6SCxJQUFJUSw0QkFBNEIsQ0FBQ0MsdUJBQXVCO29CQUN0RCxNQUFNQyxTQUFTO29CQUNmakIsYUFBYXRGLEtBQUssQ0FBQ3JDLEdBQUcsR0FBRyxDQUFDLEVBQ3hCQSxNQUFNNEgsa0JBQWtCVSxhQUFhcEksT0FBT2lJLE9BQU8sR0FBSWxJLENBQUFBLFNBQVMySSxNQUFLLEVBQ3RFLEVBQUUsQ0FBQztnQkFDTixPQUFPO29CQUNMakIsYUFBYXRGLEtBQUssQ0FBQ3JDLEdBQUcsR0FBRyxDQUFDLEVBQUVBLE1BQU1FLE9BQU9pSSxPQUFPLEdBQUdQLGdCQUFnQixFQUFFLENBQUM7Z0JBQ3hFO1lBQ0Y7WUFFQSxJQUFJLENBQUNELGFBQWFrQixXQUFXLEVBQUU7Z0JBQzdCLElBQUlyQixhQUFhLE1BQU07b0JBQ3JCRyxhQUFhSCxTQUFTLEdBQUdBO2dCQUMzQjtnQkFDQUcsYUFBYWxDLFlBQVksQ0FBQyxjQUFjO2dCQUN4Q2tDLGFBQWFsQyxZQUFZLENBQUMsTUFBTTtnQkFDaENrQyxhQUFhbEMsWUFBWSxDQUFDLFFBQVE7Z0JBQ2xDa0MsYUFBYXRGLEtBQUssQ0FBQ3lHLE9BQU8sR0FBRztnQkFDN0JuQixhQUFhdEYsS0FBSyxDQUFDRyxRQUFRLEdBQUc7Z0JBQzlCOEUsV0FBV3lCLE1BQU0sQ0FBQ3BCO1lBQ3BCO1lBQ0E3QyxpQkFBaUIwQixPQUFPLEdBQUdtQjtZQUMzQi9ELFlBQVk2QixZQUFZLENBQUMsaUJBQWlCO1FBQzVDO0lBQ0YsR0FBRztRQUFDOUI7UUFBUUg7UUFBWWdFO1FBQVdGO0tBQVc7SUFFOUNuSSxVQUFVO1FBQ1IsTUFBTXlFLGNBQWNELE9BQU9FLGNBQWM7UUFDekMsSUFBSUwsZUFBZSxNQUFNO1lBQ3ZCa0U7WUFDQSxPQUFPO2dCQUNMLElBQUk5RCxnQkFBZ0IsTUFBTTtvQkFDeEJBLFlBQVl5QyxlQUFlLENBQUM7Z0JBQzlCO2dCQUVBLE1BQU1zQixlQUFlN0MsaUJBQWlCMEIsT0FBTztnQkFDN0MsSUFBSW1CLGlCQUFpQixRQUFRQSxhQUFha0IsV0FBVyxFQUFFO29CQUNyRGxCLGFBQWFxQixNQUFNO2dCQUNyQjtZQUNGO1FBQ0Y7SUFDRixHQUFHO1FBQUNyRjtRQUFRK0Q7UUFBY2xFO0tBQVc7SUFFckMsTUFBTUUscUJBQXFCeEUsWUFDekIsQ0FBQ2lGO1FBQ0MsSUFBSVgsZUFBZSxNQUFNO1lBQ3ZCLElBQUksQ0FBQ1csVUFBVTtnQkFDYm9ELGNBQWM7WUFDaEI7UUFDRjtJQUNGLEdBQ0E7UUFBQy9EO1FBQVkrRDtLQUFjO0lBRzdCaEUsc0JBQXNCQyxZQUFZc0IsaUJBQWlCMEIsT0FBTyxFQUFFa0IsY0FBY2hFO0lBRTFFLE9BQU9vQjtBQUNUIn0=
@@ -1,11 +1,11 @@
1
1
  /// <reference types="react" />
2
2
  import type { LexicalCommand, ParagraphNode, TextNode } from 'lexical';
3
- import type { MenuTextMatch, TriggerFn } from '../useMenuTriggerMatch';
4
- import type { MenuRenderFn, MenuResolution } from './LexicalMenu';
5
- import type { SlashMenuGroup, SlashMenuOption } from './types';
3
+ import type { MenuTextMatch, TriggerFn } from '../useMenuTriggerMatch.js';
4
+ import type { MenuRenderFn, MenuResolution } from './LexicalMenu.js';
5
+ import type { SlashMenuGroup, SlashMenuOption } from './types.js';
6
6
  export declare const PUNCTUATION = "\\.,\\+\\*\\?\\$\\@\\|#{}\\(\\)\\^\\-\\[\\]\\\\/!%'\"~=<>_:;";
7
7
  export declare function getScrollParent(element: HTMLElement, includeHidden: boolean): HTMLBodyElement | HTMLElement;
8
- export { useDynamicPositioning } from './LexicalMenu';
8
+ export { useDynamicPositioning } from './LexicalMenu.js';
9
9
  export type TypeaheadMenuPluginProps = {
10
10
  anchorClassName?: string;
11
11
  anchorElem: HTMLElement;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.tsx"],"names":[],"mappings":";AACA,OAAO,KAAK,EACV,cAAc,EAEd,aAAa,EAEb,QAAQ,EACT,MAAM,SAAS,CAAA;AAchB,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AACtE,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAI9D,eAAO,MAAM,WAAW,iEAAiE,CAAA;AA4EzF,wBAAgB,eAAe,CAC7B,OAAO,EAAE,WAAW,EACpB,aAAa,EAAE,OAAO,GACrB,eAAe,GAAG,WAAW,CAiB/B;AAED,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AAErD,MAAM,MAAM,wBAAwB,GAAG;IACrC,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,UAAU,EAAE,WAAW,CAAA;IACvB,iBAAiB,EAAE,KAAK,CAAC,cAAc,CAAC,CAAA;IACxC,YAAY,EAAE,YAAY,CAAA;IAC1B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,cAAc,KAAK,IAAI,CAAA;IAC7C,aAAa,EAAE,CAAC,cAAc,EAAE,IAAI,GAAG,MAAM,KAAK,IAAI,CAAA;IACtD,cAAc,EAAE,CACd,MAAM,EAAE,eAAe,EACvB,uBAAuB,EAAE,QAAQ,GAAG,IAAI,EACxC,SAAS,EAAE,MAAM,IAAI,EACrB,cAAc,EAAE,MAAM,KACnB,IAAI,CAAA;IACT,SAAS,EAAE,SAAS,CAAA;CACrB,CAAA;AAED,eAAO,MAAM,yBAAyB,EAAE,cAAc,CAAC;IACrD,IAAI,EAAE,aAAa,CAAA;CACpB,CAA8C,CAAA;AAE/C,wBAAgB,0BAA0B,CAAC,EACzC,eAAe,EACf,UAAU,EACV,iBAAiB,EACjB,YAAY,EACZ,OAAO,EACP,MAAM,EACN,aAAa,EACb,cAAc,EACd,SAAS,GACV,EAAE,wBAAwB,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,CAyH/C;AAED,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,SAAS,EAAE,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.tsx"],"names":[],"mappings":";AACA,OAAO,KAAK,EACV,cAAc,EAEd,aAAa,EAEb,QAAQ,EACT,MAAM,SAAS,CAAA;AAchB,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AACzE,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACpE,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAIjE,eAAO,MAAM,WAAW,iEAAiE,CAAA;AA4EzF,wBAAgB,eAAe,CAC7B,OAAO,EAAE,WAAW,EACpB,aAAa,EAAE,OAAO,GACrB,eAAe,GAAG,WAAW,CAiB/B;AAED,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAA;AAExD,MAAM,MAAM,wBAAwB,GAAG;IACrC,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,UAAU,EAAE,WAAW,CAAA;IACvB,iBAAiB,EAAE,KAAK,CAAC,cAAc,CAAC,CAAA;IACxC,YAAY,EAAE,YAAY,CAAA;IAC1B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,cAAc,KAAK,IAAI,CAAA;IAC7C,aAAa,EAAE,CAAC,cAAc,EAAE,IAAI,GAAG,MAAM,KAAK,IAAI,CAAA;IACtD,cAAc,EAAE,CACd,MAAM,EAAE,eAAe,EACvB,uBAAuB,EAAE,QAAQ,GAAG,IAAI,EACxC,SAAS,EAAE,MAAM,IAAI,EACrB,cAAc,EAAE,MAAM,KACnB,IAAI,CAAA;IACT,SAAS,EAAE,SAAS,CAAA;CACrB,CAAA;AAED,eAAO,MAAM,yBAAyB,EAAE,cAAc,CAAC;IACrD,IAAI,EAAE,aAAa,CAAA;CACpB,CAA8C,CAAA;AAE/C,wBAAgB,0BAA0B,CAAC,EACzC,eAAe,EACf,UAAU,EACV,iBAAiB,EACjB,YAAY,EACZ,OAAO,EACP,MAAM,EACN,aAAa,EACb,cAAc,EACd,SAAS,GACV,EAAE,wBAAwB,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,CAyH/C;AAED,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,SAAS,EAAE,CAAA"}