@payloadcms/richtext-lexical 3.0.0-alpha.18 → 3.0.0-alpha.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components.js +6 -33
- package/dist/cell/index.js +29 -80
- package/dist/exports/components.js +6 -33
- package/dist/field/Field.js +15 -66
- package/dist/field/features/align/feature.client.js +21 -31
- package/dist/field/features/align/feature.server.js +4 -14
- package/dist/field/features/align/floatingSelectToolbarAlignDropdownSection.js +4 -14
- package/dist/field/features/blockquote/feature.client.js +20 -30
- package/dist/field/features/blockquote/feature.server.js +11 -21
- package/dist/field/features/blockquote/markdownTransformer.js +9 -19
- package/dist/field/features/blocks/component/BlockContent.js +34 -85
- package/dist/field/features/blocks/component/FormSavePlugin.js +7 -17
- package/dist/field/features/blocks/component/index.js +25 -76
- package/dist/field/features/blocks/drawer/index.js +25 -84
- package/dist/field/features/blocks/feature.client.js +15 -25
- package/dist/field/features/blocks/feature.server.js +16 -26
- package/dist/field/features/blocks/nodes/BlocksNode.js +11 -78
- package/dist/field/features/blocks/plugin/commands.js +3 -13
- package/dist/field/features/blocks/plugin/index.js +20 -71
- package/dist/field/features/blocks/populationPromise.js +6 -16
- package/dist/field/features/blocks/validate.js +4 -14
- package/dist/field/features/common/floatingSelectToolbarFeaturesButtonsSection/index.js +2 -12
- package/dist/field/features/common/floatingSelectToolbarTextDropdownSection/index.js +4 -14
- package/dist/field/features/converters/html/converter/converters/linebreak.js +2 -12
- package/dist/field/features/converters/html/converter/converters/paragraph.js +4 -14
- package/dist/field/features/converters/html/converter/converters/text.js +10 -20
- package/dist/field/features/converters/html/converter/defaultConverters.js +8 -18
- package/dist/field/features/converters/html/converter/index.js +3 -21
- package/dist/field/features/converters/html/converter/types.js +2 -5
- package/dist/field/features/converters/html/feature.server.js +2 -12
- package/dist/field/features/converters/html/field/index.js +11 -25
- package/dist/field/features/createClientComponent.js +6 -14
- package/dist/field/features/createFeaturePropComponent.js +5 -15
- package/dist/field/features/debug/testrecorder/feature.client.js +5 -15
- package/dist/field/features/debug/testrecorder/feature.server.js +4 -14
- package/dist/field/features/debug/testrecorder/plugin/index.js +41 -99
- package/dist/field/features/debug/treeview/feature.client.js +5 -15
- package/dist/field/features/debug/treeview/feature.server.js +4 -14
- package/dist/field/features/debug/treeview/plugin/index.js +8 -59
- package/dist/field/features/format/bold/feature.client.js +14 -24
- package/dist/field/features/format/bold/feature.server.js +8 -18
- package/dist/field/features/format/bold/markdownTransformers.js +5 -29
- package/dist/field/features/format/common/floatingSelectToolbarSection.js +2 -12
- package/dist/field/features/format/inlinecode/feature.client.js +12 -22
- package/dist/field/features/format/inlinecode/feature.server.js +6 -16
- package/dist/field/features/format/inlinecode/markdownTransformers.js +2 -12
- package/dist/field/features/format/italic/feature.client.js +13 -23
- package/dist/field/features/format/italic/feature.server.js +7 -17
- package/dist/field/features/format/italic/markdownTransformers.js +3 -21
- package/dist/field/features/format/strikethrough/feature.client.js +12 -22
- package/dist/field/features/format/strikethrough/feature.server.js +6 -16
- package/dist/field/features/format/strikethrough/markdownTransformers.js +2 -12
- package/dist/field/features/format/subscript/feature.client.js +10 -20
- package/dist/field/features/format/subscript/feature.server.js +4 -14
- package/dist/field/features/format/superscript/feature.client.js +10 -20
- package/dist/field/features/format/superscript/feature.server.js +4 -14
- package/dist/field/features/format/underline/feature.client.js +10 -20
- package/dist/field/features/format/underline/feature.server.js +4 -14
- package/dist/field/features/heading/feature.client.js +28 -37
- package/dist/field/features/heading/feature.server.js +12 -22
- package/dist/field/features/heading/markdownTransformer.js +8 -18
- package/dist/field/features/indent/feature.client.js +13 -23
- package/dist/field/features/indent/feature.server.js +4 -14
- package/dist/field/features/indent/floatingSelectToolbarIndentSection.js +2 -12
- package/dist/field/features/link/drawer/baseFields.js +6 -16
- package/dist/field/features/link/drawer/index.js +24 -74
- package/dist/field/features/link/drawer/types.js +2 -5
- package/dist/field/features/link/feature.client.js +29 -39
- package/dist/field/features/link/feature.server.js +22 -32
- package/dist/field/features/link/nodes/AutoLinkNode.js +10 -29
- package/dist/field/features/link/nodes/LinkNode.js +18 -45
- package/dist/field/features/link/nodes/types.js +2 -5
- package/dist/field/features/link/plugins/autoLink/index.js +33 -51
- package/dist/field/features/link/plugins/clickableLink/index.js +5 -20
- package/dist/field/features/link/plugins/floatingLinkEditor/LinkEditor/commands.js +3 -13
- package/dist/field/features/link/plugins/floatingLinkEditor/LinkEditor/index.js +64 -114
- package/dist/field/features/link/plugins/floatingLinkEditor/index.js +7 -58
- package/dist/field/features/link/plugins/floatingLinkEditor/types.js +5 -5
- package/dist/field/features/link/plugins/floatingLinkEditor/utilities.js +6 -14
- package/dist/field/features/link/plugins/link/index.js +21 -31
- package/dist/field/features/link/populationPromise.js +6 -16
- package/dist/field/features/lists/checklist/feature.client.js +21 -31
- package/dist/field/features/lists/checklist/feature.server.js +12 -22
- package/dist/field/features/lists/checklist/markdownTransformers.js +8 -18
- package/dist/field/features/lists/checklist/plugin/index.js +5 -20
- package/dist/field/features/lists/common/markdown.js +10 -28
- package/dist/field/features/lists/htmlConverter.js +9 -27
- package/dist/field/features/lists/orderedlist/feature.client.js +19 -29
- package/dist/field/features/lists/orderedlist/feature.server.js +12 -22
- package/dist/field/features/lists/orderedlist/markdownTransformer.js +8 -18
- package/dist/field/features/lists/plugin/index.js +5 -20
- package/dist/field/features/lists/unorderedlist/feature.client.js +19 -29
- package/dist/field/features/lists/unorderedlist/feature.server.js +12 -22
- package/dist/field/features/lists/unorderedlist/markdownTransformer.js +8 -18
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/heading/client.js +4 -14
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/heading/converter.js +4 -14
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/heading/index.js +6 -16
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/link/client.js +4 -14
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/link/converter.js +4 -14
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/link/index.js +6 -16
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/list/client.js +4 -14
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/list/converter.js +4 -14
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/list/index.js +6 -16
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/listItem/client.js +4 -14
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/listItem/converter.js +4 -14
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/listItem/index.js +6 -16
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/quote/client.js +4 -14
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/quote/converter.js +4 -14
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/quote/index.js +6 -16
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/unknown/client.js +4 -14
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/unknown/converter.js +4 -14
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/unknown/index.js +6 -16
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/upload/client.js +4 -14
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/upload/converter.js +2 -12
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/upload/index.js +6 -16
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/defaultConverters.js +16 -26
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/index.js +5 -29
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/types.js +2 -5
- package/dist/field/features/migrations/lexicalPluginToLexical/feature.client.js +7 -17
- package/dist/field/features/migrations/lexicalPluginToLexical/feature.server.js +9 -19
- package/dist/field/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/Component.js +5 -20
- package/dist/field/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.js +11 -73
- package/dist/field/features/migrations/slateToLexical/converter/converters/blockquote/client.js +4 -14
- package/dist/field/features/migrations/slateToLexical/converter/converters/blockquote/converter.js +4 -14
- package/dist/field/features/migrations/slateToLexical/converter/converters/blockquote/index.js +6 -16
- package/dist/field/features/migrations/slateToLexical/converter/converters/heading/client.js +4 -14
- package/dist/field/features/migrations/slateToLexical/converter/converters/heading/converter.js +4 -14
- package/dist/field/features/migrations/slateToLexical/converter/converters/heading/index.js +6 -16
- package/dist/field/features/migrations/slateToLexical/converter/converters/indent/client.js +4 -14
- package/dist/field/features/migrations/slateToLexical/converter/converters/indent/converter.js +4 -14
- package/dist/field/features/migrations/slateToLexical/converter/converters/indent/index.js +6 -16
- package/dist/field/features/migrations/slateToLexical/converter/converters/link/client.js +4 -14
- package/dist/field/features/migrations/slateToLexical/converter/converters/link/converter.js +4 -14
- package/dist/field/features/migrations/slateToLexical/converter/converters/link/index.js +6 -16
- package/dist/field/features/migrations/slateToLexical/converter/converters/listItem/client.js +4 -14
- package/dist/field/features/migrations/slateToLexical/converter/converters/listItem/converter.js +4 -14
- package/dist/field/features/migrations/slateToLexical/converter/converters/listItem/index.js +6 -16
- package/dist/field/features/migrations/slateToLexical/converter/converters/orderedList/client.js +4 -14
- package/dist/field/features/migrations/slateToLexical/converter/converters/orderedList/converter.js +4 -14
- package/dist/field/features/migrations/slateToLexical/converter/converters/orderedList/index.js +6 -16
- package/dist/field/features/migrations/slateToLexical/converter/converters/relationship/client.js +4 -14
- package/dist/field/features/migrations/slateToLexical/converter/converters/relationship/converter.js +2 -12
- package/dist/field/features/migrations/slateToLexical/converter/converters/relationship/index.js +6 -16
- package/dist/field/features/migrations/slateToLexical/converter/converters/unknown/client.js +4 -14
- package/dist/field/features/migrations/slateToLexical/converter/converters/unknown/converter.js +4 -14
- package/dist/field/features/migrations/slateToLexical/converter/converters/unknown/index.js +6 -16
- package/dist/field/features/migrations/slateToLexical/converter/converters/unorderedList/client.js +4 -14
- package/dist/field/features/migrations/slateToLexical/converter/converters/unorderedList/converter.js +4 -14
- package/dist/field/features/migrations/slateToLexical/converter/converters/unorderedList/index.js +6 -16
- package/dist/field/features/migrations/slateToLexical/converter/converters/upload/client.js +4 -14
- package/dist/field/features/migrations/slateToLexical/converter/converters/upload/converter.js +2 -12
- package/dist/field/features/migrations/slateToLexical/converter/converters/upload/index.js +6 -16
- package/dist/field/features/migrations/slateToLexical/converter/defaultConverters.js +22 -32
- package/dist/field/features/migrations/slateToLexical/converter/index.js +14 -41
- package/dist/field/features/migrations/slateToLexical/converter/types.js +2 -5
- package/dist/field/features/migrations/slateToLexical/feature.client.js +7 -17
- package/dist/field/features/migrations/slateToLexical/feature.server.js +9 -19
- package/dist/field/features/migrations/slateToLexical/nodes/unknownConvertedNode/Component.js +5 -20
- package/dist/field/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.js +11 -73
- package/dist/field/features/paragraph/feature.client.js +16 -26
- package/dist/field/features/paragraph/feature.server.js +4 -14
- package/dist/field/features/relationship/drawer/commands.js +3 -13
- package/dist/field/features/relationship/drawer/index.js +24 -75
- package/dist/field/features/relationship/feature.client.js +15 -25
- package/dist/field/features/relationship/feature.server.js +8 -18
- package/dist/field/features/relationship/nodes/RelationshipNode.js +9 -71
- package/dist/field/features/relationship/nodes/components/RelationshipComponent.js +35 -86
- package/dist/field/features/relationship/plugins/index.js +22 -80
- package/dist/field/features/relationship/populationPromise.js +4 -14
- package/dist/field/features/relationship/utils/EnabledRelationshipsCondition.js +8 -59
- package/dist/field/features/types.js +2 -5
- package/dist/field/features/upload/component/ExtraFieldsDrawer/index.js +36 -84
- package/dist/field/features/upload/component/index.js +47 -98
- package/dist/field/features/upload/drawer/commands.js +3 -13
- package/dist/field/features/upload/drawer/index.js +23 -74
- package/dist/field/features/upload/feature.client.js +13 -23
- package/dist/field/features/upload/feature.server.js +11 -21
- package/dist/field/features/upload/nodes/UploadNode.js +10 -72
- package/dist/field/features/upload/plugin/index.js +22 -81
- package/dist/field/features/upload/populationPromise.js +6 -16
- package/dist/field/features/upload/validate.js +9 -19
- package/dist/field/index.js +23 -74
- package/dist/field/lexical/EditorPlugin.js +5 -56
- package/dist/field/lexical/LexicalEditor.js +39 -94
- package/dist/field/lexical/LexicalProvider.js +15 -66
- package/dist/field/lexical/config/client/EditorConfigProvider.js +11 -69
- package/dist/field/lexical/config/client/default.js +4 -14
- package/dist/field/lexical/config/client/loader.js +5 -12
- package/dist/field/lexical/config/client/sanitize.js +3 -21
- package/dist/field/lexical/config/server/default.js +44 -68
- package/dist/field/lexical/config/server/loader.js +3 -21
- package/dist/field/lexical/config/server/sanitize.js +5 -23
- package/dist/field/lexical/config/types.js +2 -5
- package/dist/field/lexical/nodes/index.js +2 -12
- package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarButton/index.js +19 -70
- package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/DropDown.js +40 -98
- package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/index.js +11 -34
- package/dist/field/lexical/plugins/FloatingSelectToolbar/index.js +55 -105
- package/dist/field/lexical/plugins/FloatingSelectToolbar/types.js +2 -5
- package/dist/field/lexical/plugins/MarkdownShortcut/index.js +7 -58
- package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.js +39 -64
- package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.js +32 -97
- package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.js +3 -21
- package/dist/field/lexical/plugins/SlashMenu/index.js +27 -77
- package/dist/field/lexical/plugins/SlashMenu/useMenuTriggerMatch.js +8 -16
- package/dist/field/lexical/plugins/handles/AddBlockHandlePlugin/index.js +35 -84
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/debounce.js +2 -12
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/getBoundingRectWithoutTransform.js +2 -12
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/getNodeCloseToPoint.js +18 -28
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/highlightElemOriginalPosition.js +4 -14
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/index.js +52 -102
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/setTargetLine.js +8 -18
- package/dist/field/lexical/plugins/handles/utils/getCollapsedMargins.js +2 -12
- package/dist/field/lexical/plugins/handles/utils/getTopLevelNodeKeys.js +4 -14
- package/dist/field/lexical/plugins/handles/utils/isOnHandleElement.js +2 -12
- package/dist/field/lexical/plugins/handles/utils/setHandlePosition.js +2 -12
- package/dist/field/lexical/theme/EditorTheme.js +3 -13
- package/dist/field/lexical/ui/ContentEditable.js +6 -57
- package/dist/field/lexical/ui/icons/AI/index.js +7 -22
- package/dist/field/lexical/ui/icons/AlignCenter/index.js +6 -21
- package/dist/field/lexical/ui/icons/AlignJustify/index.js +6 -21
- package/dist/field/lexical/ui/icons/AlignLeft/index.js +6 -21
- package/dist/field/lexical/ui/icons/AlignRight/index.js +6 -21
- package/dist/field/lexical/ui/icons/Block/index.js +6 -21
- package/dist/field/lexical/ui/icons/Blockquote/index.js +4 -19
- package/dist/field/lexical/ui/icons/Bold/index.js +4 -19
- package/dist/field/lexical/ui/icons/Checklist/index.js +5 -20
- package/dist/field/lexical/ui/icons/Code/index.js +5 -20
- package/dist/field/lexical/ui/icons/CodeBlock/index.js +5 -20
- package/dist/field/lexical/ui/icons/H1/index.js +4 -19
- package/dist/field/lexical/ui/icons/H2/index.js +4 -19
- package/dist/field/lexical/ui/icons/H3/index.js +4 -19
- package/dist/field/lexical/ui/icons/H4/index.js +4 -19
- package/dist/field/lexical/ui/icons/H5/index.js +4 -19
- package/dist/field/lexical/ui/icons/H6/index.js +4 -19
- package/dist/field/lexical/ui/icons/IndentDecrease/index.js +7 -22
- package/dist/field/lexical/ui/icons/IndentIncrease/index.js +7 -22
- package/dist/field/lexical/ui/icons/Italic/index.js +4 -19
- package/dist/field/lexical/ui/icons/Link/index.js +7 -22
- package/dist/field/lexical/ui/icons/OrderedList/index.js +8 -23
- package/dist/field/lexical/ui/icons/Relationship/index.js +7 -22
- package/dist/field/lexical/ui/icons/Strikethrough/index.js +5 -20
- package/dist/field/lexical/ui/icons/Subscript/index.js +4 -19
- package/dist/field/lexical/ui/icons/Superscript/index.js +4 -19
- package/dist/field/lexical/ui/icons/Text/index.js +4 -19
- package/dist/field/lexical/ui/icons/Underline/index.js +5 -20
- package/dist/field/lexical/ui/icons/UnorderedList/index.js +9 -24
- package/dist/field/lexical/ui/icons/Upload/index.js +6 -21
- package/dist/field/lexical/utils/canUseDOM.js +2 -12
- package/dist/field/lexical/utils/cloneDeep.js +2 -12
- package/dist/field/lexical/utils/environment.js +13 -51
- package/dist/field/lexical/utils/getDOMRangeRect.js +2 -12
- package/dist/field/lexical/utils/getSelectedNode.js +5 -15
- package/dist/field/lexical/utils/guard.js +2 -12
- package/dist/field/lexical/utils/invariant.js +2 -12
- package/dist/field/lexical/utils/joinClasses.js +2 -12
- package/dist/field/lexical/utils/markdown/createBlockNode.js +2 -12
- package/dist/field/lexical/utils/nodeFormat.js +17 -61
- package/dist/field/lexical/utils/point.js +3 -21
- package/dist/field/lexical/utils/rect.js +4 -14
- package/dist/field/lexical/utils/setFloatingElemPosition.js +5 -12
- package/dist/field/lexical/utils/setFloatingElemPositionForLinkEditor.js +2 -12
- package/dist/field/lexical/utils/swipe.js +5 -29
- package/dist/field/lexical/utils/url.js +3 -21
- package/dist/generateComponentMap.js +10 -25
- package/dist/generateSchemaMap.js +4 -14
- package/dist/index.js +102 -489
- package/dist/populate/defaultValue.js +3 -21
- package/dist/populate/populate.js +2 -12
- package/dist/populate/recurseNestedFields.js +4 -14
- package/dist/populate/richTextRelationshipPromise.js +3 -21
- package/dist/types.js +2 -5
- package/dist/useLexicalFeature.js +6 -16
- package/dist/validate/index.js +6 -16
- package/dist/validate/validateNodes.js +2 -12
- package/package.json +7 -7
|
@@ -1,30 +1,12 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
});
|
|
11
|
-
}
|
|
12
|
-
_export(exports, {
|
|
13
|
-
AutoLinkPlugin: function() {
|
|
14
|
-
return AutoLinkPlugin;
|
|
15
|
-
},
|
|
16
|
-
createLinkMatcherWithRegExp: function() {
|
|
17
|
-
return createLinkMatcherWithRegExp;
|
|
18
|
-
}
|
|
19
|
-
});
|
|
20
|
-
const _LexicalComposerContext = require("@lexical/react/LexicalComposerContext");
|
|
21
|
-
const _utils = require("@lexical/utils");
|
|
22
|
-
const _lexical = require("lexical");
|
|
23
|
-
const _react = require("react");
|
|
24
|
-
const _invariant = require("../../../../lexical/utils/invariant");
|
|
25
|
-
const _AutoLinkNode = require("../../nodes/AutoLinkNode");
|
|
26
|
-
const _LinkNode = require("../../nodes/LinkNode");
|
|
27
|
-
function createLinkMatcherWithRegExp(regExp, urlTransformer = (text)=>text) {
|
|
2
|
+
import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';
|
|
3
|
+
import { mergeRegister } from '@lexical/utils';
|
|
4
|
+
import { $createTextNode, $getSelection, $isElementNode, $isLineBreakNode, $isNodeSelection, $isRangeSelection, $isTextNode, TextNode } from 'lexical';
|
|
5
|
+
import { useEffect } from 'react';
|
|
6
|
+
import { invariant } from '../../../../lexical/utils/invariant';
|
|
7
|
+
import { $createAutoLinkNode, $isAutoLinkNode, AutoLinkNode } from '../../nodes/AutoLinkNode';
|
|
8
|
+
import { $isLinkNode } from '../../nodes/LinkNode';
|
|
9
|
+
export function createLinkMatcherWithRegExp(regExp, urlTransformer = (text)=>text) {
|
|
28
10
|
return (text)=>{
|
|
29
11
|
const match = regExp.exec(text);
|
|
30
12
|
if (match === null) return null;
|
|
@@ -57,17 +39,17 @@ function startsWithSeparator(textContent) {
|
|
|
57
39
|
}
|
|
58
40
|
function isPreviousNodeValid(node) {
|
|
59
41
|
let previousNode = node.getPreviousSibling();
|
|
60
|
-
if (
|
|
42
|
+
if ($isElementNode(previousNode)) {
|
|
61
43
|
previousNode = previousNode.getLastDescendant();
|
|
62
44
|
}
|
|
63
|
-
return previousNode === null ||
|
|
45
|
+
return previousNode === null || $isLineBreakNode(previousNode) || $isTextNode(previousNode) && endsWithSeparator(previousNode.getTextContent());
|
|
64
46
|
}
|
|
65
47
|
function isNextNodeValid(node) {
|
|
66
48
|
let nextNode = node.getNextSibling();
|
|
67
|
-
if (
|
|
49
|
+
if ($isElementNode(nextNode)) {
|
|
68
50
|
nextNode = nextNode.getFirstDescendant();
|
|
69
51
|
}
|
|
70
|
-
return nextNode === null ||
|
|
52
|
+
return nextNode === null || $isLineBreakNode(nextNode) || $isTextNode(nextNode) && startsWithSeparator(nextNode.getTextContent());
|
|
71
53
|
}
|
|
72
54
|
function isContentAroundIsValid(matchStart, matchEnd, text, nodes) {
|
|
73
55
|
const contentBeforeIsValid = matchStart > 0 ? isSeparator(text[matchStart - 1]) : isPreviousNodeValid(nodes[0]);
|
|
@@ -116,7 +98,7 @@ function createAutoLinkNode(nodes, startIndex, endIndex, match) {
|
|
|
116
98
|
url: match.url,
|
|
117
99
|
...match.fields
|
|
118
100
|
};
|
|
119
|
-
const linkNode =
|
|
101
|
+
const linkNode = $createAutoLinkNode({
|
|
120
102
|
fields
|
|
121
103
|
});
|
|
122
104
|
if (nodes.length === 1) {
|
|
@@ -127,7 +109,7 @@ function createAutoLinkNode(nodes, startIndex, endIndex, match) {
|
|
|
127
109
|
} else {
|
|
128
110
|
[, linkTextNode, remainingTextNode] = remainingTextNode.splitText(startIndex, endIndex);
|
|
129
111
|
}
|
|
130
|
-
const textNode =
|
|
112
|
+
const textNode = $createTextNode(match.text);
|
|
131
113
|
textNode.setFormat(linkTextNode.getFormat());
|
|
132
114
|
textNode.setDetail(linkTextNode.getDetail());
|
|
133
115
|
linkNode.append(textNode);
|
|
@@ -161,18 +143,18 @@ function createAutoLinkNode(nodes, startIndex, endIndex, match) {
|
|
|
161
143
|
}
|
|
162
144
|
offset += currentNodeLength;
|
|
163
145
|
}
|
|
164
|
-
const selection =
|
|
165
|
-
const selectedTextNode = selection ? selection.getNodes().find(
|
|
166
|
-
const textNode =
|
|
146
|
+
const selection = $getSelection();
|
|
147
|
+
const selectedTextNode = selection ? selection.getNodes().find($isTextNode) : undefined;
|
|
148
|
+
const textNode = $createTextNode(firstLinkTextNode.getTextContent());
|
|
167
149
|
textNode.setFormat(firstLinkTextNode.getFormat());
|
|
168
150
|
textNode.setDetail(firstLinkTextNode.getDetail());
|
|
169
151
|
linkNode.append(textNode, ...linkNodes);
|
|
170
152
|
// it does not preserve caret position if caret was at the first text node
|
|
171
153
|
// so we need to restore caret position
|
|
172
154
|
if (selectedTextNode && selectedTextNode === firstLinkTextNode) {
|
|
173
|
-
if (
|
|
155
|
+
if ($isRangeSelection(selection)) {
|
|
174
156
|
textNode.select(selection.anchor.offset, selection.focus.offset);
|
|
175
|
-
} else if (
|
|
157
|
+
} else if ($isNodeSelection(selection)) {
|
|
176
158
|
textNode.select(0, textNode.getTextContent().length);
|
|
177
159
|
}
|
|
178
160
|
}
|
|
@@ -217,7 +199,7 @@ function handleLinkEdit(linkNode, matchers, onChange) {
|
|
|
217
199
|
const childrenLength = children.length;
|
|
218
200
|
for(let i = 0; i < childrenLength; i++){
|
|
219
201
|
const child = children[i];
|
|
220
|
-
if (
|
|
202
|
+
if (!$isTextNode(child) || !child.isSimpleText()) {
|
|
221
203
|
replaceWithChildren(linkNode);
|
|
222
204
|
onChange(null, linkNode.getFields()?.url ?? null);
|
|
223
205
|
return;
|
|
@@ -251,12 +233,12 @@ function handleBadNeighbors(textNode, matchers, onChange) {
|
|
|
251
233
|
const previousSibling = textNode.getPreviousSibling();
|
|
252
234
|
const nextSibling = textNode.getNextSibling();
|
|
253
235
|
const text = textNode.getTextContent();
|
|
254
|
-
if (
|
|
236
|
+
if ($isAutoLinkNode(previousSibling) && !startsWithSeparator(text)) {
|
|
255
237
|
previousSibling.append(textNode);
|
|
256
238
|
handleLinkEdit(previousSibling, matchers, onChange);
|
|
257
239
|
onChange(null, previousSibling.getFields()?.url ?? null);
|
|
258
240
|
}
|
|
259
|
-
if (
|
|
241
|
+
if ($isAutoLinkNode(nextSibling) && !endsWithSeparator(text)) {
|
|
260
242
|
replaceWithChildren(nextSibling);
|
|
261
243
|
handleLinkEdit(nextSibling, matchers, onChange);
|
|
262
244
|
onChange(null, nextSibling.getFields()?.url ?? null);
|
|
@@ -277,7 +259,7 @@ function getTextNodesToMatch(textNode) {
|
|
|
277
259
|
textNode
|
|
278
260
|
];
|
|
279
261
|
let nextSibling = textNode.getNextSibling();
|
|
280
|
-
while(nextSibling !== null &&
|
|
262
|
+
while(nextSibling !== null && $isTextNode(nextSibling) && nextSibling.isSimpleText()){
|
|
281
263
|
textNodesToMatch.push(nextSibling);
|
|
282
264
|
if (/\s/.test(nextSibling.getTextContent())) {
|
|
283
265
|
break;
|
|
@@ -287,24 +269,24 @@ function getTextNodesToMatch(textNode) {
|
|
|
287
269
|
return textNodesToMatch;
|
|
288
270
|
}
|
|
289
271
|
function useAutoLink(editor, matchers, onChange) {
|
|
290
|
-
|
|
272
|
+
useEffect(()=>{
|
|
291
273
|
if (!editor.hasNodes([
|
|
292
|
-
|
|
274
|
+
AutoLinkNode
|
|
293
275
|
])) {
|
|
294
|
-
|
|
276
|
+
invariant(false, 'LexicalAutoLinkPlugin: AutoLinkNode not registered on editor');
|
|
295
277
|
}
|
|
296
278
|
const onChangeWrapped = (url, prevUrl)=>{
|
|
297
279
|
if (onChange != null) {
|
|
298
280
|
onChange(url, prevUrl);
|
|
299
281
|
}
|
|
300
282
|
};
|
|
301
|
-
return
|
|
283
|
+
return mergeRegister(editor.registerNodeTransform(TextNode, (textNode)=>{
|
|
302
284
|
const parent = textNode.getParentOrThrow();
|
|
303
285
|
const previous = textNode.getPreviousSibling();
|
|
304
|
-
if (
|
|
286
|
+
if ($isAutoLinkNode(parent)) {
|
|
305
287
|
handleLinkEdit(parent, matchers, onChangeWrapped);
|
|
306
|
-
} else if (
|
|
307
|
-
if (textNode.isSimpleText() && (startsWithSeparator(textNode.getTextContent()) ||
|
|
288
|
+
} else if (!$isLinkNode(parent)) {
|
|
289
|
+
if (textNode.isSimpleText() && (startsWithSeparator(textNode.getTextContent()) || !$isAutoLinkNode(previous))) {
|
|
308
290
|
const textNodesToMatch = getTextNodesToMatch(textNode);
|
|
309
291
|
handleLinkCreation(textNodesToMatch, matchers, onChangeWrapped);
|
|
310
292
|
}
|
|
@@ -327,10 +309,10 @@ const MATCHERS = [
|
|
|
327
309
|
return `mailto:${text}`;
|
|
328
310
|
})
|
|
329
311
|
];
|
|
330
|
-
function AutoLinkPlugin() {
|
|
331
|
-
const [editor] =
|
|
312
|
+
export function AutoLinkPlugin() {
|
|
313
|
+
const [editor] = useLexicalComposerContext();
|
|
332
314
|
useAutoLink(editor, MATCHERS);
|
|
333
315
|
return null;
|
|
334
316
|
}
|
|
335
317
|
|
|
336
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9mZWF0dXJlcy9saW5rL3BsdWdpbnMvYXV0b0xpbmsvaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xuaW1wb3J0IHR5cGUgeyBFbGVtZW50Tm9kZSwgTGV4aWNhbEVkaXRvciwgTGV4aWNhbE5vZGUgfSBmcm9tICdsZXhpY2FsJ1xuXG5pbXBvcnQgeyB1c2VMZXhpY2FsQ29tcG9zZXJDb250ZXh0IH0gZnJvbSAnQGxleGljYWwvcmVhY3QvTGV4aWNhbENvbXBvc2VyQ29udGV4dCdcbmltcG9ydCB7IG1lcmdlUmVnaXN0ZXIgfSBmcm9tICdAbGV4aWNhbC91dGlscydcbmltcG9ydCB7XG4gICRjcmVhdGVUZXh0Tm9kZSxcbiAgJGdldFNlbGVjdGlvbixcbiAgJGlzRWxlbWVudE5vZGUsXG4gICRpc0xpbmVCcmVha05vZGUsXG4gICRpc05vZGVTZWxlY3Rpb24sXG4gICRpc1JhbmdlU2VsZWN0aW9uLFxuICAkaXNUZXh0Tm9kZSxcbiAgVGV4dE5vZGUsXG59IGZyb20gJ2xleGljYWwnXG5pbXBvcnQgeyB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCdcblxuaW1wb3J0IHR5cGUgeyBMaW5rRmllbGRzIH0gZnJvbSAnLi4vLi4vbm9kZXMvdHlwZXMnXG5cbmltcG9ydCB7IGludmFyaWFudCB9IGZyb20gJy4uLy4uLy4uLy4uL2xleGljYWwvdXRpbHMvaW52YXJpYW50J1xuaW1wb3J0IHsgJGNyZWF0ZUF1dG9MaW5rTm9kZSwgJGlzQXV0b0xpbmtOb2RlLCBBdXRvTGlua05vZGUgfSBmcm9tICcuLi8uLi9ub2Rlcy9BdXRvTGlua05vZGUnXG5pbXBvcnQgeyAkaXNMaW5rTm9kZSB9IGZyb20gJy4uLy4uL25vZGVzL0xpbmtOb2RlJ1xuXG50eXBlIENoYW5nZUhhbmRsZXIgPSAodXJsOiBudWxsIHwgc3RyaW5nLCBwcmV2VXJsOiBudWxsIHwgc3RyaW5nKSA9PiB2b2lkXG5cbmludGVyZmFjZSBMaW5rTWF0Y2hlclJlc3VsdCB7XG4gIGZpZWxkcz86IExpbmtGaWVsZHNcbiAgaW5kZXg6IG51bWJlclxuICBsZW5ndGg6IG51bWJlclxuICB0ZXh0OiBzdHJpbmdcbiAgdXJsOiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgTGlua01hdGNoZXIgPSAodGV4dDogc3RyaW5nKSA9PiBMaW5rTWF0Y2hlclJlc3VsdCB8IG51bGxcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUxpbmtNYXRjaGVyV2l0aFJlZ0V4cChcbiAgcmVnRXhwOiBSZWdFeHAsXG4gIHVybFRyYW5zZm9ybWVyOiAodGV4dDogc3RyaW5nKSA9PiBzdHJpbmcgPSAodGV4dCkgPT4gdGV4dCxcbikge1xuICByZXR1cm4gKHRleHQ6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IG1hdGNoID0gcmVnRXhwLmV4ZWModGV4dClcbiAgICBpZiAobWF0Y2ggPT09IG51bGwpIHJldHVybiBudWxsXG4gICAgcmV0dXJuIHtcbiAgICAgIGluZGV4OiBtYXRjaC5pbmRleCxcbiAgICAgIGxlbmd0aDogbWF0Y2hbMF0ubGVuZ3RoLFxuICAgICAgdGV4dDogbWF0Y2hbMF0sXG4gICAgICB1cmw6IHVybFRyYW5zZm9ybWVyKG1hdGNoWzBdKSxcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gZmluZEZpcnN0TWF0Y2godGV4dDogc3RyaW5nLCBtYXRjaGVyczogTGlua01hdGNoZXJbXSk6IExpbmtNYXRjaGVyUmVzdWx0IHwgbnVsbCB7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbWF0Y2hlcnMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBtYXRjaCA9IG1hdGNoZXJzW2ldKHRleHQpXG5cbiAgICBpZiAobWF0Y2ggIT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG1hdGNoXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG51bGxcbn1cblxuY29uc3QgUFVOQ1RVQVRJT05fT1JfU1BBQ0UgPSAvWy4sO1xcc10vXG5cbmZ1bmN0aW9uIGlzU2VwYXJhdG9yKGNoYXI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gUFVOQ1RVQVRJT05fT1JfU1BBQ0UudGVzdChjaGFyKVxufVxuXG5mdW5jdGlvbiBlbmRzV2l0aFNlcGFyYXRvcih0ZXh0Q29udGVudDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBpc1NlcGFyYXRvcih0ZXh0Q29udGVudFt0ZXh0Q29udGVudC5sZW5ndGggLSAxXSlcbn1cblxuZnVuY3Rpb24gc3RhcnRzV2l0aFNlcGFyYXRvcih0ZXh0Q29udGVudDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBpc1NlcGFyYXRvcih0ZXh0Q29udGVudFswXSlcbn1cblxuZnVuY3Rpb24gaXNQcmV2aW91c05vZGVWYWxpZChub2RlOiBMZXhpY2FsTm9kZSk6IGJvb2xlYW4ge1xuICBsZXQgcHJldmlvdXNOb2RlID0gbm9kZS5nZXRQcmV2aW91c1NpYmxpbmcoKVxuICBpZiAoJGlzRWxlbWVudE5vZGUocHJldmlvdXNOb2RlKSkge1xuICAgIHByZXZpb3VzTm9kZSA9IHByZXZpb3VzTm9kZS5nZXRMYXN0RGVzY2VuZGFudCgpXG4gIH1cbiAgcmV0dXJuIChcbiAgICBwcmV2aW91c05vZGUgPT09IG51bGwgfHxcbiAgICAkaXNMaW5lQnJlYWtOb2RlKHByZXZpb3VzTm9kZSkgfHxcbiAgICAoJGlzVGV4dE5vZGUocHJldmlvdXNOb2RlKSAmJiBlbmRzV2l0aFNlcGFyYXRvcihwcmV2aW91c05vZGUuZ2V0VGV4dENvbnRlbnQoKSkpXG4gIClcbn1cblxuZnVuY3Rpb24gaXNOZXh0Tm9kZVZhbGlkKG5vZGU6IExleGljYWxOb2RlKTogYm9vbGVhbiB7XG4gIGxldCBuZXh0Tm9kZSA9IG5vZGUuZ2V0TmV4dFNpYmxpbmcoKVxuICBpZiAoJGlzRWxlbWVudE5vZGUobmV4dE5vZGUpKSB7XG4gICAgbmV4dE5vZGUgPSBuZXh0Tm9kZS5nZXRGaXJzdERlc2NlbmRhbnQoKVxuICB9XG4gIHJldHVybiAoXG4gICAgbmV4dE5vZGUgPT09IG51bGwgfHxcbiAgICAkaXNMaW5lQnJlYWtOb2RlKG5leHROb2RlKSB8fFxuICAgICgkaXNUZXh0Tm9kZShuZXh0Tm9kZSkgJiYgc3RhcnRzV2l0aFNlcGFyYXRvcihuZXh0Tm9kZS5nZXRUZXh0Q29udGVudCgpKSlcbiAgKVxufVxuXG5mdW5jdGlvbiBpc0NvbnRlbnRBcm91bmRJc1ZhbGlkKFxuICBtYXRjaFN0YXJ0OiBudW1iZXIsXG4gIG1hdGNoRW5kOiBudW1iZXIsXG4gIHRleHQ6IHN0cmluZyxcbiAgbm9kZXM6IFRleHROb2RlW10sXG4pOiBib29sZWFuIHtcbiAgY29uc3QgY29udGVudEJlZm9yZUlzVmFsaWQgPVxuICAgIG1hdGNoU3RhcnQgPiAwID8gaXNTZXBhcmF0b3IodGV4dFttYXRjaFN0YXJ0IC0gMV0pIDogaXNQcmV2aW91c05vZGVWYWxpZChub2Rlc1swXSlcbiAgaWYgKCFjb250ZW50QmVmb3JlSXNWYWxpZCkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgY29uc3QgY29udGVudEFmdGVySXNWYWxpZCA9XG4gICAgbWF0Y2hFbmQgPCB0ZXh0Lmxlbmd0aCA/IGlzU2VwYXJhdG9yKHRleHRbbWF0Y2hFbmRdKSA6IGlzTmV4dE5vZGVWYWxpZChub2Rlc1tub2Rlcy5sZW5ndGggLSAxXSlcbiAgcmV0dXJuIGNvbnRlbnRBZnRlcklzVmFsaWRcbn1cblxuZnVuY3Rpb24gZXh0cmFjdE1hdGNoaW5nTm9kZXMoXG4gIG5vZGVzOiBUZXh0Tm9kZVtdLFxuICBzdGFydEluZGV4OiBudW1iZXIsXG4gIGVuZEluZGV4OiBudW1iZXIsXG4pOiBbXG4gIG1hdGNoaW5nT2Zmc2V0OiBudW1iZXIsXG4gIHVubW9kaWZpZWRCZWZvcmVOb2RlczogVGV4dE5vZGVbXSxcbiAgbWF0Y2hpbmdOb2RlczogVGV4dE5vZGVbXSxcbiAgdW5tb2RpZmllZEFmdGVyTm9kZXM6IFRleHROb2RlW10sXG5dIHtcbiAgY29uc3QgdW5tb2RpZmllZEJlZm9yZU5vZGVzOiBUZXh0Tm9kZVtdID0gW11cbiAgY29uc3QgbWF0Y2hpbmdOb2RlczogVGV4dE5vZGVbXSA9IFtdXG4gIGNvbnN0IHVubW9kaWZpZWRBZnRlck5vZGVzOiBUZXh0Tm9kZVtdID0gW11cbiAgbGV0IG1hdGNoaW5nT2Zmc2V0ID0gMFxuXG4gIGxldCBjdXJyZW50T2Zmc2V0ID0gMFxuICBjb25zdCBjdXJyZW50Tm9kZXMgPSBbLi4ubm9kZXNdXG5cbiAgd2hpbGUgKGN1cnJlbnROb2Rlcy5sZW5ndGggPiAwKSB7XG4gICAgY29uc3QgY3VycmVudE5vZGUgPSBjdXJyZW50Tm9kZXNbMF1cbiAgICBjb25zdCBjdXJyZW50Tm9kZVRleHQgPSBjdXJyZW50Tm9kZS5nZXRUZXh0Q29udGVudCgpXG4gICAgY29uc3QgY3VycmVudE5vZGVMZW5ndGggPSBjdXJyZW50Tm9kZVRleHQubGVuZ3RoXG4gICAgY29uc3QgY3VycmVudE5vZGVTdGFydCA9IGN1cnJlbnRPZmZzZXRcbiAgICBjb25zdCBjdXJyZW50Tm9kZUVuZCA9IGN1cnJlbnRPZmZzZXQgKyBjdXJyZW50Tm9kZUxlbmd0aFxuXG4gICAgaWYgKGN1cnJlbnROb2RlRW5kIDw9IHN0YXJ0SW5kZXgpIHtcbiAgICAgIHVubW9kaWZpZWRCZWZvcmVOb2Rlcy5wdXNoKGN1cnJlbnROb2RlKVxuICAgICAgbWF0Y2hpbmdPZmZzZXQgKz0gY3VycmVudE5vZGVMZW5ndGhcbiAgICB9IGVsc2UgaWYgKGN1cnJlbnROb2RlU3RhcnQgPj0gZW5kSW5kZXgpIHtcbiAgICAgIHVubW9kaWZpZWRBZnRlck5vZGVzLnB1c2goY3VycmVudE5vZGUpXG4gICAgfSBlbHNlIHtcbiAgICAgIG1hdGNoaW5nTm9kZXMucHVzaChjdXJyZW50Tm9kZSlcbiAgICB9XG4gICAgY3VycmVudE9mZnNldCArPSBjdXJyZW50Tm9kZUxlbmd0aFxuICAgIGN1cnJlbnROb2Rlcy5zaGlmdCgpXG4gIH1cbiAgcmV0dXJuIFttYXRjaGluZ09mZnNldCwgdW5tb2RpZmllZEJlZm9yZU5vZGVzLCBtYXRjaGluZ05vZGVzLCB1bm1vZGlmaWVkQWZ0ZXJOb2Rlc11cbn1cblxuZnVuY3Rpb24gY3JlYXRlQXV0b0xpbmtOb2RlKFxuICBub2RlczogVGV4dE5vZGVbXSxcbiAgc3RhcnRJbmRleDogbnVtYmVyLFxuICBlbmRJbmRleDogbnVtYmVyLFxuICBtYXRjaDogTGlua01hdGNoZXJSZXN1bHQsXG4pOiBUZXh0Tm9kZSB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGZpZWxkczogTGlua0ZpZWxkcyA9IHtcbiAgICBsaW5rVHlwZTogJ2N1c3RvbScsXG4gICAgdXJsOiBtYXRjaC51cmwsXG4gICAgLi4ubWF0Y2guZmllbGRzLFxuICB9XG5cbiAgY29uc3QgbGlua05vZGUgPSAkY3JlYXRlQXV0b0xpbmtOb2RlKHsgZmllbGRzIH0pXG4gIGlmIChub2Rlcy5sZW5ndGggPT09IDEpIHtcbiAgICBsZXQgcmVtYWluaW5nVGV4dE5vZGUgPSBub2Rlc1swXVxuICAgIGxldCBsaW5rVGV4dE5vZGVcbiAgICBpZiAoc3RhcnRJbmRleCA9PT0gMCkge1xuICAgICAgO1tsaW5rVGV4dE5vZGUsIHJlbWFpbmluZ1RleHROb2RlXSA9IHJlbWFpbmluZ1RleHROb2RlLnNwbGl0VGV4dChlbmRJbmRleClcbiAgICB9IGVsc2Uge1xuICAgICAgO1ssIGxpbmtUZXh0Tm9kZSwgcmVtYWluaW5nVGV4dE5vZGVdID0gcmVtYWluaW5nVGV4dE5vZGUuc3BsaXRUZXh0KHN0YXJ0SW5kZXgsIGVuZEluZGV4KVxuICAgIH1cbiAgICBjb25zdCB0ZXh0Tm9kZSA9ICRjcmVhdGVUZXh0Tm9kZShtYXRjaC50ZXh0KVxuICAgIHRleHROb2RlLnNldEZvcm1hdChsaW5rVGV4dE5vZGUuZ2V0Rm9ybWF0KCkpXG4gICAgdGV4dE5vZGUuc2V0RGV0YWlsKGxpbmtUZXh0Tm9kZS5nZXREZXRhaWwoKSlcbiAgICBsaW5rTm9kZS5hcHBlbmQodGV4dE5vZGUpXG4gICAgbGlua1RleHROb2RlLnJlcGxhY2UobGlua05vZGUpXG4gICAgcmV0dXJuIHJlbWFpbmluZ1RleHROb2RlXG4gIH0gZWxzZSBpZiAobm9kZXMubGVuZ3RoID4gMSkge1xuICAgIGNvbnN0IGZpcnN0VGV4dE5vZGUgPSBub2Rlc1swXVxuICAgIGxldCBvZmZzZXQgPSBmaXJzdFRleHROb2RlLmdldFRleHRDb250ZW50KCkubGVuZ3RoXG4gICAgbGV0IGZpcnN0TGlua1RleHROb2RlXG4gICAgaWYgKHN0YXJ0SW5kZXggPT09IDApIHtcbiAgICAgIGZpcnN0TGlua1RleHROb2RlID0gZmlyc3RUZXh0Tm9kZVxuICAgIH0gZWxzZSB7XG4gICAgICA7WywgZmlyc3RMaW5rVGV4dE5vZGVdID0gZmlyc3RUZXh0Tm9kZS5zcGxpdFRleHQoc3RhcnRJbmRleClcbiAgICB9XG4gICAgY29uc3QgbGlua05vZGVzID0gW11cbiAgICBsZXQgcmVtYWluaW5nVGV4dE5vZGVcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBjdXJyZW50Tm9kZSA9IG5vZGVzW2ldXG4gICAgICBjb25zdCBjdXJyZW50Tm9kZVRleHQgPSBjdXJyZW50Tm9kZS5nZXRUZXh0Q29udGVudCgpXG4gICAgICBjb25zdCBjdXJyZW50Tm9kZUxlbmd0aCA9IGN1cnJlbnROb2RlVGV4dC5sZW5ndGhcbiAgICAgIGNvbnN0IGN1cnJlbnROb2RlU3RhcnQgPSBvZmZzZXRcbiAgICAgIGNvbnN0IGN1cnJlbnROb2RlRW5kID0gb2Zmc2V0ICsgY3VycmVudE5vZGVMZW5ndGhcbiAgICAgIGlmIChjdXJyZW50Tm9kZVN0YXJ0IDwgZW5kSW5kZXgpIHtcbiAgICAgICAgaWYgKGN1cnJlbnROb2RlRW5kIDw9IGVuZEluZGV4KSB7XG4gICAgICAgICAgbGlua05vZGVzLnB1c2goY3VycmVudE5vZGUpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgW2xpbmtUZXh0Tm9kZSwgZW5kTm9kZV0gPSBjdXJyZW50Tm9kZS5zcGxpdFRleHQoZW5kSW5kZXggLSBjdXJyZW50Tm9kZVN0YXJ0KVxuICAgICAgICAgIGxpbmtOb2Rlcy5wdXNoKGxpbmtUZXh0Tm9kZSlcbiAgICAgICAgICByZW1haW5pbmdUZXh0Tm9kZSA9IGVuZE5vZGVcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgb2Zmc2V0ICs9IGN1cnJlbnROb2RlTGVuZ3RoXG4gICAgfVxuICAgIGNvbnN0IHNlbGVjdGlvbiA9ICRnZXRTZWxlY3Rpb24oKVxuICAgIGNvbnN0IHNlbGVjdGVkVGV4dE5vZGUgPSBzZWxlY3Rpb24gPyBzZWxlY3Rpb24uZ2V0Tm9kZXMoKS5maW5kKCRpc1RleHROb2RlKSA6IHVuZGVmaW5lZFxuICAgIGNvbnN0IHRleHROb2RlID0gJGNyZWF0ZVRleHROb2RlKGZpcnN0TGlua1RleHROb2RlLmdldFRleHRDb250ZW50KCkpXG4gICAgdGV4dE5vZGUuc2V0Rm9ybWF0KGZpcnN0TGlua1RleHROb2RlLmdldEZvcm1hdCgpKVxuICAgIHRleHROb2RlLnNldERldGFpbChmaXJzdExpbmtUZXh0Tm9kZS5nZXREZXRhaWwoKSlcbiAgICBsaW5rTm9kZS5hcHBlbmQodGV4dE5vZGUsIC4uLmxpbmtOb2RlcylcbiAgICAvLyBpdCBkb2VzIG5vdCBwcmVzZXJ2ZSBjYXJldCBwb3NpdGlvbiBpZiBjYXJldCB3YXMgYXQgdGhlIGZpcnN0IHRleHQgbm9kZVxuICAgIC8vIHNvIHdlIG5lZWQgdG8gcmVzdG9yZSBjYXJldCBwb3NpdGlvblxuICAgIGlmIChzZWxlY3RlZFRleHROb2RlICYmIHNlbGVjdGVkVGV4dE5vZGUgPT09IGZpcnN0TGlua1RleHROb2RlKSB7XG4gICAgICBpZiAoJGlzUmFuZ2VTZWxlY3Rpb24oc2VsZWN0aW9uKSkge1xuICAgICAgICB0ZXh0Tm9kZS5zZWxlY3Qoc2VsZWN0aW9uLmFuY2hvci5vZmZzZXQsIHNlbGVjdGlvbi5mb2N1cy5vZmZzZXQpXG4gICAgICB9IGVsc2UgaWYgKCRpc05vZGVTZWxlY3Rpb24oc2VsZWN0aW9uKSkge1xuICAgICAgICB0ZXh0Tm9kZS5zZWxlY3QoMCwgdGV4dE5vZGUuZ2V0VGV4dENvbnRlbnQoKS5sZW5ndGgpXG4gICAgICB9XG4gICAgfVxuICAgIGZpcnN0TGlua1RleHROb2RlLnJlcGxhY2UobGlua05vZGUpXG4gICAgcmV0dXJuIHJlbWFpbmluZ1RleHROb2RlXG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZFxufVxuXG5mdW5jdGlvbiBoYW5kbGVMaW5rQ3JlYXRpb24oXG4gIG5vZGVzOiBUZXh0Tm9kZVtdLFxuICBtYXRjaGVyczogTGlua01hdGNoZXJbXSxcbiAgb25DaGFuZ2U6IENoYW5nZUhhbmRsZXIsXG4pOiB2b2lkIHtcbiAgbGV0IGN1cnJlbnROb2RlcyA9IFsuLi5ub2Rlc11cbiAgY29uc3QgaW5pdGlhbFRleHQgPSBjdXJyZW50Tm9kZXMubWFwKChub2RlKSA9PiBub2RlLmdldFRleHRDb250ZW50KCkpLmpvaW4oJycpXG4gIGxldCB0ZXh0ID0gaW5pdGlhbFRleHRcblxuICBsZXQgbWF0Y2hcbiAgbGV0IGludmFsaWRNYXRjaEVuZCA9IDBcblxuICB3aGlsZSAoKG1hdGNoID0gZmluZEZpcnN0TWF0Y2godGV4dCwgbWF0Y2hlcnMpKSAhPSBudWxsICYmIG1hdGNoICE9PSBudWxsKSB7XG4gICAgY29uc3QgbWF0Y2hTdGFydDogbnVtYmVyID0gbWF0Y2guaW5kZXhcbiAgICBjb25zdCBtYXRjaExlbmd0aDogbnVtYmVyID0gbWF0Y2gubGVuZ3RoXG4gICAgY29uc3QgbWF0Y2hFbmQgPSBtYXRjaFN0YXJ0ICsgbWF0Y2hMZW5ndGhcbiAgICBjb25zdCBpc1ZhbGlkID0gaXNDb250ZW50QXJvdW5kSXNWYWxpZChcbiAgICAgIGludmFsaWRNYXRjaEVuZCArIG1hdGNoU3RhcnQsXG4gICAgICBpbnZhbGlkTWF0Y2hFbmQgKyBtYXRjaEVuZCxcbiAgICAgIGluaXRpYWxUZXh0LFxuICAgICAgY3VycmVudE5vZGVzLFxuICAgIClcblxuICAgIGlmIChpc1ZhbGlkKSB7XG4gICAgICBjb25zdCBbbWF0Y2hpbmdPZmZzZXQsICwgbWF0Y2hpbmdOb2RlcywgdW5tb2RpZmllZEFmdGVyTm9kZXNdID0gZXh0cmFjdE1hdGNoaW5nTm9kZXMoXG4gICAgICAgIGN1cnJlbnROb2RlcyxcbiAgICAgICAgaW52YWxpZE1hdGNoRW5kICsgbWF0Y2hTdGFydCxcbiAgICAgICAgaW52YWxpZE1hdGNoRW5kICsgbWF0Y2hFbmQsXG4gICAgICApXG5cbiAgICAgIGNvbnN0IGFjdHVhbE1hdGNoU3RhcnQgPSBpbnZhbGlkTWF0Y2hFbmQgKyBtYXRjaFN0YXJ0IC0gbWF0Y2hpbmdPZmZzZXRcbiAgICAgIGNvbnN0IGFjdHVhbE1hdGNoRW5kID0gaW52YWxpZE1hdGNoRW5kICsgbWF0Y2hFbmQgLSBtYXRjaGluZ09mZnNldFxuICAgICAgY29uc3QgcmVtYWluaW5nVGV4dE5vZGUgPSBjcmVhdGVBdXRvTGlua05vZGUoXG4gICAgICAgIG1hdGNoaW5nTm9kZXMsXG4gICAgICAgIGFjdHVhbE1hdGNoU3RhcnQsXG4gICAgICAgIGFjdHVhbE1hdGNoRW5kLFxuICAgICAgICBtYXRjaCxcbiAgICAgIClcbiAgICAgIGN1cnJlbnROb2RlcyA9IHJlbWFpbmluZ1RleHROb2RlXG4gICAgICAgID8gW3JlbWFpbmluZ1RleHROb2RlLCAuLi51bm1vZGlmaWVkQWZ0ZXJOb2Rlc11cbiAgICAgICAgOiB1bm1vZGlmaWVkQWZ0ZXJOb2Rlc1xuICAgICAgb25DaGFuZ2UobWF0Y2gudXJsLCBudWxsKVxuICAgICAgaW52YWxpZE1hdGNoRW5kID0gMFxuICAgIH0gZWxzZSB7XG4gICAgICBpbnZhbGlkTWF0Y2hFbmQgKz0gbWF0Y2hFbmRcbiAgICB9XG5cbiAgICB0ZXh0ID0gdGV4dC5zdWJzdHJpbmcobWF0Y2hFbmQpXG4gIH1cbn1cblxuZnVuY3Rpb24gaGFuZGxlTGlua0VkaXQoXG4gIGxpbmtOb2RlOiBBdXRvTGlua05vZGUsXG4gIG1hdGNoZXJzOiBMaW5rTWF0Y2hlcltdLFxuICBvbkNoYW5nZTogQ2hhbmdlSGFuZGxlcixcbik6IHZvaWQge1xuICAvLyBDaGVjayBjaGlsZHJlbiBhcmUgc2ltcGxlIHRleHRcbiAgY29uc3QgY2hpbGRyZW4gPSBsaW5rTm9kZS5nZXRDaGlsZHJlbigpXG4gIGNvbnN0IGNoaWxkcmVuTGVuZ3RoID0gY2hpbGRyZW4ubGVuZ3RoXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgY2hpbGRyZW5MZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGNoaWxkID0gY2hpbGRyZW5baV1cbiAgICBpZiAoISRpc1RleHROb2RlKGNoaWxkKSB8fCAhY2hpbGQuaXNTaW1wbGVUZXh0KCkpIHtcbiAgICAgIHJlcGxhY2VXaXRoQ2hpbGRyZW4obGlua05vZGUpXG4gICAgICBvbkNoYW5nZShudWxsLCBsaW5rTm9kZS5nZXRGaWVsZHMoKT8udXJsID8/IG51bGwpXG4gICAgICByZXR1cm5cbiAgICB9XG4gIH1cblxuICAvLyBDaGVjayB0ZXh0IGNvbnRlbnQgZnVsbHkgbWF0Y2hlc1xuICBjb25zdCB0ZXh0ID0gbGlua05vZGUuZ2V0VGV4dENvbnRlbnQoKVxuICBjb25zdCBtYXRjaCA9IGZpbmRGaXJzdE1hdGNoKHRleHQsIG1hdGNoZXJzKVxuICBpZiAobWF0Y2ggPT09IG51bGwgfHwgbWF0Y2gudGV4dCAhPT0gdGV4dCkge1xuICAgIHJlcGxhY2VXaXRoQ2hpbGRyZW4obGlua05vZGUpXG4gICAgb25DaGFuZ2UobnVsbCwgbGlua05vZGUuZ2V0RmllbGRzKCk/LnVybCA/PyBudWxsKVxuICAgIHJldHVyblxuICB9XG5cbiAgLy8gQ2hlY2sgbmVpZ2hib3JzXG4gIGlmICghaXNQcmV2aW91c05vZGVWYWxpZChsaW5rTm9kZSkgfHwgIWlzTmV4dE5vZGVWYWxpZChsaW5rTm9kZSkpIHtcbiAgICByZXBsYWNlV2l0aENoaWxkcmVuKGxpbmtOb2RlKVxuICAgIG9uQ2hhbmdlKG51bGwsIGxpbmtOb2RlLmdldEZpZWxkcygpPy51cmwgPz8gbnVsbClcbiAgICByZXR1cm5cbiAgfVxuXG4gIGNvbnN0IHVybCA9IGxpbmtOb2RlLmdldEZpZWxkcygpPy51cmxcbiAgaWYgKHVybCAhPT0gbWF0Y2g/LnVybCkge1xuICAgIGNvbnN0IGZsZHMgPSBsaW5rTm9kZS5nZXRGaWVsZHMoKVxuICAgIGZsZHMudXJsID0gbWF0Y2g/LnVybFxuICAgIGxpbmtOb2RlLnNldEZpZWxkcyhmbGRzKVxuICAgIG9uQ2hhbmdlKG1hdGNoLnVybCwgdXJsID8/IG51bGwpXG4gIH1cbn1cblxuLy8gQmFkIG5laWdoYm9ycyBhcmUgZWRpdHMgaW4gbmVpZ2hib3Igbm9kZXMgdGhhdCBtYWtlIEF1dG9MaW5rcyBpbmNvbXBhdGlibGUuXG4vLyBHaXZlbiB0aGUgY3JlYXRpb24gcHJlY29uZGl0aW9ucywgdGhlc2UgY2FuIG9ubHkgYmUgc2ltcGxlIHRleHQgbm9kZXMuXG5mdW5jdGlvbiBoYW5kbGVCYWROZWlnaGJvcnMoXG4gIHRleHROb2RlOiBUZXh0Tm9kZSxcbiAgbWF0Y2hlcnM6IExpbmtNYXRjaGVyW10sXG4gIG9uQ2hhbmdlOiBDaGFuZ2VIYW5kbGVyLFxuKTogdm9pZCB7XG4gIGNvbnN0IHByZXZpb3VzU2libGluZyA9IHRleHROb2RlLmdldFByZXZpb3VzU2libGluZygpXG4gIGNvbnN0IG5leHRTaWJsaW5nID0gdGV4dE5vZGUuZ2V0TmV4dFNpYmxpbmcoKVxuICBjb25zdCB0ZXh0ID0gdGV4dE5vZGUuZ2V0VGV4dENvbnRlbnQoKVxuXG4gIGlmICgkaXNBdXRvTGlua05vZGUocHJldmlvdXNTaWJsaW5nKSAmJiAhc3RhcnRzV2l0aFNlcGFyYXRvcih0ZXh0KSkge1xuICAgIHByZXZpb3VzU2libGluZy5hcHBlbmQodGV4dE5vZGUpXG4gICAgaGFuZGxlTGlua0VkaXQocHJldmlvdXNTaWJsaW5nLCBtYXRjaGVycywgb25DaGFuZ2UpXG4gICAgb25DaGFuZ2UobnVsbCwgcHJldmlvdXNTaWJsaW5nLmdldEZpZWxkcygpPy51cmwgPz8gbnVsbClcbiAgfVxuXG4gIGlmICgkaXNBdXRvTGlua05vZGUobmV4dFNpYmxpbmcpICYmICFlbmRzV2l0aFNlcGFyYXRvcih0ZXh0KSkge1xuICAgIHJlcGxhY2VXaXRoQ2hpbGRyZW4obmV4dFNpYmxpbmcpXG4gICAgaGFuZGxlTGlua0VkaXQobmV4dFNpYmxpbmcsIG1hdGNoZXJzLCBvbkNoYW5nZSlcbiAgICBvbkNoYW5nZShudWxsLCBuZXh0U2libGluZy5nZXRGaWVsZHMoKT8udXJsID8/IG51bGwpXG4gIH1cbn1cblxuZnVuY3Rpb24gcmVwbGFjZVdpdGhDaGlsZHJlbihub2RlOiBFbGVtZW50Tm9kZSk6IExleGljYWxOb2RlW10ge1xuICBjb25zdCBjaGlsZHJlbiA9IG5vZGUuZ2V0Q2hpbGRyZW4oKVxuICBjb25zdCBjaGlsZHJlbkxlbmd0aCA9IGNoaWxkcmVuLmxlbmd0aFxuXG4gIGZvciAobGV0IGogPSBjaGlsZHJlbkxlbmd0aCAtIDE7IGogPj0gMDsgai0tKSB7XG4gICAgbm9kZS5pbnNlcnRBZnRlcihjaGlsZHJlbltqXSlcbiAgfVxuXG4gIG5vZGUucmVtb3ZlKClcbiAgcmV0dXJuIGNoaWxkcmVuLm1hcCgoY2hpbGQpID0+IGNoaWxkLmdldExhdGVzdCgpKVxufVxuXG5mdW5jdGlvbiBnZXRUZXh0Tm9kZXNUb01hdGNoKHRleHROb2RlOiBUZXh0Tm9kZSk6IFRleHROb2RlW10ge1xuICAvLyBjaGVjayBpZiBuZXh0IHNpYmxpbmdzIGFyZSBzaW1wbGUgdGV4dCBub2RlcyB0aWxsIGEgbm9kZSBjb250YWlucyBhIHNwYWNlIHNlcGFyYXRvclxuICBjb25zdCB0ZXh0Tm9kZXNUb01hdGNoID0gW3RleHROb2RlXVxuICBsZXQgbmV4dFNpYmxpbmcgPSB0ZXh0Tm9kZS5nZXROZXh0U2libGluZygpXG4gIHdoaWxlIChuZXh0U2libGluZyAhPT0gbnVsbCAmJiAkaXNUZXh0Tm9kZShuZXh0U2libGluZykgJiYgbmV4dFNpYmxpbmcuaXNTaW1wbGVUZXh0KCkpIHtcbiAgICB0ZXh0Tm9kZXNUb01hdGNoLnB1c2gobmV4dFNpYmxpbmcpXG4gICAgaWYgKC9cXHMvLnRlc3QobmV4dFNpYmxpbmcuZ2V0VGV4dENvbnRlbnQoKSkpIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuICAgIG5leHRTaWJsaW5nID0gbmV4dFNpYmxpbmcuZ2V0TmV4dFNpYmxpbmcoKVxuICB9XG4gIHJldHVybiB0ZXh0Tm9kZXNUb01hdGNoXG59XG5cbmZ1bmN0aW9uIHVzZUF1dG9MaW5rKFxuICBlZGl0b3I6IExleGljYWxFZGl0b3IsXG4gIG1hdGNoZXJzOiBMaW5rTWF0Y2hlcltdLFxuICBvbkNoYW5nZT86IENoYW5nZUhhbmRsZXIsXG4pOiB2b2lkIHtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWVkaXRvci5oYXNOb2RlcyhbQXV0b0xpbmtOb2RlXSkpIHtcbiAgICAgIGludmFyaWFudChmYWxzZSwgJ0xleGljYWxBdXRvTGlua1BsdWdpbjogQXV0b0xpbmtOb2RlIG5vdCByZWdpc3RlcmVkIG9uIGVkaXRvcicpXG4gICAgfVxuXG4gICAgY29uc3Qgb25DaGFuZ2VXcmFwcGVkID0gKHVybDogbnVsbCB8IHN0cmluZywgcHJldlVybDogbnVsbCB8IHN0cmluZyk6IHZvaWQgPT4ge1xuICAgICAgaWYgKG9uQ2hhbmdlICE9IG51bGwpIHtcbiAgICAgICAgb25DaGFuZ2UodXJsLCBwcmV2VXJsKVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBtZXJnZVJlZ2lzdGVyKFxuICAgICAgZWRpdG9yLnJlZ2lzdGVyTm9kZVRyYW5zZm9ybShUZXh0Tm9kZSwgKHRleHROb2RlOiBUZXh0Tm9kZSkgPT4ge1xuICAgICAgICBjb25zdCBwYXJlbnQgPSB0ZXh0Tm9kZS5nZXRQYXJlbnRPclRocm93KClcbiAgICAgICAgY29uc3QgcHJldmlvdXMgPSB0ZXh0Tm9kZS5nZXRQcmV2aW91c1NpYmxpbmcoKVxuICAgICAgICBpZiAoJGlzQXV0b0xpbmtOb2RlKHBhcmVudCkpIHtcbiAgICAgICAgICBoYW5kbGVMaW5rRWRpdChwYXJlbnQsIG1hdGNoZXJzLCBvbkNoYW5nZVdyYXBwZWQpXG4gICAgICAgIH0gZWxzZSBpZiAoISRpc0xpbmtOb2RlKHBhcmVudCkpIHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICB0ZXh0Tm9kZS5pc1NpbXBsZVRleHQoKSAmJlxuICAgICAgICAgICAgKHN0YXJ0c1dpdGhTZXBhcmF0b3IodGV4dE5vZGUuZ2V0VGV4dENvbnRlbnQoKSkgfHwgISRpc0F1dG9MaW5rTm9kZShwcmV2aW91cykpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25zdCB0ZXh0Tm9kZXNUb01hdGNoID0gZ2V0VGV4dE5vZGVzVG9NYXRjaCh0ZXh0Tm9kZSlcbiAgICAgICAgICAgIGhhbmRsZUxpbmtDcmVhdGlvbih0ZXh0Tm9kZXNUb01hdGNoLCBtYXRjaGVycywgb25DaGFuZ2VXcmFwcGVkKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGhhbmRsZUJhZE5laWdoYm9ycyh0ZXh0Tm9kZSwgbWF0Y2hlcnMsIG9uQ2hhbmdlV3JhcHBlZClcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgKVxuICB9LCBbZWRpdG9yLCBtYXRjaGVycywgb25DaGFuZ2VdKVxufVxuXG5jb25zdCBVUkxfUkVHRVggPVxuICAvKChodHRwcz86XFwvXFwvKHd3d1xcLik/KXwod3d3XFwuKSlbLVxcd0A6JS4rfiM9XXsxLDI1Nn1cXC5bYS16QS1aXFxkKCldezEsNn1cXGIoWy1cXHcoKUA6JSsufiM/Ji89XSopL1xuXG5jb25zdCBFTUFJTF9SRUdFWCA9XG4gIC8oKFtePD4oKVtcXF1cXFxcLiw7Olxcc0BcIl0rKFxcLltePD4oKVtcXF1cXFxcLiw7Olxcc0BcIl0rKSopfChcIi4rXCIpKUAoKFxcW1xcZHsxLDN9XFwuXFxkezEsM31cXC5cXGR7MSwzfVxcLlxcZHsxLDN9XFxdKXwoKFthLXpBLVpcXC1cXGRdK1xcLikrW2EtekEtWl17Mix9KSkvXG5cbmNvbnN0IE1BVENIRVJTID0gW1xuICBjcmVhdGVMaW5rTWF0Y2hlcldpdGhSZWdFeHAoVVJMX1JFR0VYLCAodGV4dCkgPT4ge1xuICAgIHJldHVybiB0ZXh0LnN0YXJ0c1dpdGgoJ2h0dHAnKSA/IHRleHQgOiBgaHR0cHM6Ly8ke3RleHR9YFxuICB9KSxcbiAgY3JlYXRlTGlua01hdGNoZXJXaXRoUmVnRXhwKEVNQUlMX1JFR0VYLCAodGV4dCkgPT4ge1xuICAgIHJldHVybiBgbWFpbHRvOiR7dGV4dH1gXG4gIH0pLFxuXVxuXG5leHBvcnQgZnVuY3Rpb24gQXV0b0xpbmtQbHVnaW4oKTogSlNYLkVsZW1lbnQgfCBudWxsIHtcbiAgY29uc3QgW2VkaXRvcl0gPSB1c2VMZXhpY2FsQ29tcG9zZXJDb250ZXh0KClcblxuICB1c2VBdXRvTGluayhlZGl0b3IsIE1BVENIRVJTKVxuXG4gIHJldHVybiBudWxsXG59XG4iXSwibmFtZXMiOlsiQXV0b0xpbmtQbHVnaW4iLCJjcmVhdGVMaW5rTWF0Y2hlcldpdGhSZWdFeHAiLCJyZWdFeHAiLCJ1cmxUcmFuc2Zvcm1lciIsInRleHQiLCJtYXRjaCIsImV4ZWMiLCJpbmRleCIsImxlbmd0aCIsInVybCIsImZpbmRGaXJzdE1hdGNoIiwibWF0Y2hlcnMiLCJpIiwiUFVOQ1RVQVRJT05fT1JfU1BBQ0UiLCJpc1NlcGFyYXRvciIsImNoYXIiLCJ0ZXN0IiwiZW5kc1dpdGhTZXBhcmF0b3IiLCJ0ZXh0Q29udGVudCIsInN0YXJ0c1dpdGhTZXBhcmF0b3IiLCJpc1ByZXZpb3VzTm9kZVZhbGlkIiwibm9kZSIsInByZXZpb3VzTm9kZSIsImdldFByZXZpb3VzU2libGluZyIsIiRpc0VsZW1lbnROb2RlIiwiZ2V0TGFzdERlc2NlbmRhbnQiLCIkaXNMaW5lQnJlYWtOb2RlIiwiJGlzVGV4dE5vZGUiLCJnZXRUZXh0Q29udGVudCIsImlzTmV4dE5vZGVWYWxpZCIsIm5leHROb2RlIiwiZ2V0TmV4dFNpYmxpbmciLCJnZXRGaXJzdERlc2NlbmRhbnQiLCJpc0NvbnRlbnRBcm91bmRJc1ZhbGlkIiwibWF0Y2hTdGFydCIsIm1hdGNoRW5kIiwibm9kZXMiLCJjb250ZW50QmVmb3JlSXNWYWxpZCIsImNvbnRlbnRBZnRlcklzVmFsaWQiLCJleHRyYWN0TWF0Y2hpbmdOb2RlcyIsInN0YXJ0SW5kZXgiLCJlbmRJbmRleCIsInVubW9kaWZpZWRCZWZvcmVOb2RlcyIsIm1hdGNoaW5nTm9kZXMiLCJ1bm1vZGlmaWVkQWZ0ZXJOb2RlcyIsIm1hdGNoaW5nT2Zmc2V0IiwiY3VycmVudE9mZnNldCIsImN1cnJlbnROb2RlcyIsImN1cnJlbnROb2RlIiwiY3VycmVudE5vZGVUZXh0IiwiY3VycmVudE5vZGVMZW5ndGgiLCJjdXJyZW50Tm9kZVN0YXJ0IiwiY3VycmVudE5vZGVFbmQiLCJwdXNoIiwic2hpZnQiLCJjcmVhdGVBdXRvTGlua05vZGUiLCJmaWVsZHMiLCJsaW5rVHlwZSIsImxpbmtOb2RlIiwiJGNyZWF0ZUF1dG9MaW5rTm9kZSIsInJlbWFpbmluZ1RleHROb2RlIiwibGlua1RleHROb2RlIiwic3BsaXRUZXh0IiwidGV4dE5vZGUiLCIkY3JlYXRlVGV4dE5vZGUiLCJzZXRGb3JtYXQiLCJnZXRGb3JtYXQiLCJzZXREZXRhaWwiLCJnZXREZXRhaWwiLCJhcHBlbmQiLCJyZXBsYWNlIiwiZmlyc3RUZXh0Tm9kZSIsIm9mZnNldCIsImZpcnN0TGlua1RleHROb2RlIiwibGlua05vZGVzIiwiZW5kTm9kZSIsInNlbGVjdGlvbiIsIiRnZXRTZWxlY3Rpb24iLCJzZWxlY3RlZFRleHROb2RlIiwiZ2V0Tm9kZXMiLCJmaW5kIiwidW5kZWZpbmVkIiwiJGlzUmFuZ2VTZWxlY3Rpb24iLCJzZWxlY3QiLCJhbmNob3IiLCJmb2N1cyIsIiRpc05vZGVTZWxlY3Rpb24iLCJoYW5kbGVMaW5rQ3JlYXRpb24iLCJvbkNoYW5nZSIsImluaXRpYWxUZXh0IiwibWFwIiwiam9pbiIsImludmFsaWRNYXRjaEVuZCIsIm1hdGNoTGVuZ3RoIiwiaXNWYWxpZCIsImFjdHVhbE1hdGNoU3RhcnQiLCJhY3R1YWxNYXRjaEVuZCIsInN1YnN0cmluZyIsImhhbmRsZUxpbmtFZGl0IiwiY2hpbGRyZW4iLCJnZXRDaGlsZHJlbiIsImNoaWxkcmVuTGVuZ3RoIiwiY2hpbGQiLCJpc1NpbXBsZVRleHQiLCJyZXBsYWNlV2l0aENoaWxkcmVuIiwiZ2V0RmllbGRzIiwiZmxkcyIsInNldEZpZWxkcyIsImhhbmRsZUJhZE5laWdoYm9ycyIsInByZXZpb3VzU2libGluZyIsIm5leHRTaWJsaW5nIiwiJGlzQXV0b0xpbmtOb2RlIiwiaiIsImluc2VydEFmdGVyIiwicmVtb3ZlIiwiZ2V0TGF0ZXN0IiwiZ2V0VGV4dE5vZGVzVG9NYXRjaCIsInRleHROb2Rlc1RvTWF0Y2giLCJ1c2VBdXRvTGluayIsImVkaXRvciIsInVzZUVmZmVjdCIsImhhc05vZGVzIiwiQXV0b0xpbmtOb2RlIiwiaW52YXJpYW50Iiwib25DaGFuZ2VXcmFwcGVkIiwicHJldlVybCIsIm1lcmdlUmVnaXN0ZXIiLCJyZWdpc3Rlck5vZGVUcmFuc2Zvcm0iLCJUZXh0Tm9kZSIsInBhcmVudCIsImdldFBhcmVudE9yVGhyb3ciLCJwcmV2aW91cyIsIiRpc0xpbmtOb2RlIiwiVVJMX1JFR0VYIiwiRU1BSUxfUkVHRVgiLCJNQVRDSEVSUyIsInN0YXJ0c1dpdGgiLCJ1c2VMZXhpY2FsQ29tcG9zZXJDb250ZXh0Il0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7O0lBNmFnQkEsY0FBYztlQUFkQTs7SUExWUFDLDJCQUEyQjtlQUEzQkE7Ozt3Q0FoQzBCO3VCQUNaO3lCQVV2Qjt1QkFDbUI7MkJBSUE7OEJBQ3lDOzBCQUN2QztBQWNyQixTQUFTQSw0QkFDZEMsTUFBYyxFQUNkQyxpQkFBMkMsQ0FBQ0MsT0FBU0EsSUFBSTtJQUV6RCxPQUFPLENBQUNBO1FBQ04sTUFBTUMsUUFBUUgsT0FBT0ksSUFBSSxDQUFDRjtRQUMxQixJQUFJQyxVQUFVLE1BQU0sT0FBTztRQUMzQixPQUFPO1lBQ0xFLE9BQU9GLE1BQU1FLEtBQUs7WUFDbEJDLFFBQVFILEtBQUssQ0FBQyxFQUFFLENBQUNHLE1BQU07WUFDdkJKLE1BQU1DLEtBQUssQ0FBQyxFQUFFO1lBQ2RJLEtBQUtOLGVBQWVFLEtBQUssQ0FBQyxFQUFFO1FBQzlCO0lBQ0Y7QUFDRjtBQUVBLFNBQVNLLGVBQWVOLElBQVksRUFBRU8sUUFBdUI7SUFDM0QsSUFBSyxJQUFJQyxJQUFJLEdBQUdBLElBQUlELFNBQVNILE1BQU0sRUFBRUksSUFBSztRQUN4QyxNQUFNUCxRQUFRTSxRQUFRLENBQUNDLEVBQUUsQ0FBQ1I7UUFFMUIsSUFBSUMsU0FBUyxNQUFNO1lBQ2pCLE9BQU9BO1FBQ1Q7SUFDRjtJQUVBLE9BQU87QUFDVDtBQUVBLE1BQU1RLHVCQUF1QjtBQUU3QixTQUFTQyxZQUFZQyxJQUFZO0lBQy9CLE9BQU9GLHFCQUFxQkcsSUFBSSxDQUFDRDtBQUNuQztBQUVBLFNBQVNFLGtCQUFrQkMsV0FBbUI7SUFDNUMsT0FBT0osWUFBWUksV0FBVyxDQUFDQSxZQUFZVixNQUFNLEdBQUcsRUFBRTtBQUN4RDtBQUVBLFNBQVNXLG9CQUFvQkQsV0FBbUI7SUFDOUMsT0FBT0osWUFBWUksV0FBVyxDQUFDLEVBQUU7QUFDbkM7QUFFQSxTQUFTRSxvQkFBb0JDLElBQWlCO0lBQzVDLElBQUlDLGVBQWVELEtBQUtFLGtCQUFrQjtJQUMxQyxJQUFJQyxJQUFBQSx1QkFBYyxFQUFDRixlQUFlO1FBQ2hDQSxlQUFlQSxhQUFhRyxpQkFBaUI7SUFDL0M7SUFDQSxPQUNFSCxpQkFBaUIsUUFDakJJLElBQUFBLHlCQUFnQixFQUFDSixpQkFDaEJLLElBQUFBLG9CQUFXLEVBQUNMLGlCQUFpQkwsa0JBQWtCSyxhQUFhTSxjQUFjO0FBRS9FO0FBRUEsU0FBU0MsZ0JBQWdCUixJQUFpQjtJQUN4QyxJQUFJUyxXQUFXVCxLQUFLVSxjQUFjO0lBQ2xDLElBQUlQLElBQUFBLHVCQUFjLEVBQUNNLFdBQVc7UUFDNUJBLFdBQVdBLFNBQVNFLGtCQUFrQjtJQUN4QztJQUNBLE9BQ0VGLGFBQWEsUUFDYkosSUFBQUEseUJBQWdCLEVBQUNJLGFBQ2hCSCxJQUFBQSxvQkFBVyxFQUFDRyxhQUFhWCxvQkFBb0JXLFNBQVNGLGNBQWM7QUFFekU7QUFFQSxTQUFTSyx1QkFDUEMsVUFBa0IsRUFDbEJDLFFBQWdCLEVBQ2hCL0IsSUFBWSxFQUNaZ0MsS0FBaUI7SUFFakIsTUFBTUMsdUJBQ0pILGFBQWEsSUFBSXBCLFlBQVlWLElBQUksQ0FBQzhCLGFBQWEsRUFBRSxJQUFJZCxvQkFBb0JnQixLQUFLLENBQUMsRUFBRTtJQUNuRixJQUFJLENBQUNDLHNCQUFzQjtRQUN6QixPQUFPO0lBQ1Q7SUFFQSxNQUFNQyxzQkFDSkgsV0FBVy9CLEtBQUtJLE1BQU0sR0FBR00sWUFBWVYsSUFBSSxDQUFDK0IsU0FBUyxJQUFJTixnQkFBZ0JPLEtBQUssQ0FBQ0EsTUFBTTVCLE1BQU0sR0FBRyxFQUFFO0lBQ2hHLE9BQU84QjtBQUNUO0FBRUEsU0FBU0MscUJBQ1BILEtBQWlCLEVBQ2pCSSxVQUFrQixFQUNsQkMsUUFBZ0I7SUFPaEIsTUFBTUMsd0JBQW9DLEVBQUU7SUFDNUMsTUFBTUMsZ0JBQTRCLEVBQUU7SUFDcEMsTUFBTUMsdUJBQW1DLEVBQUU7SUFDM0MsSUFBSUMsaUJBQWlCO0lBRXJCLElBQUlDLGdCQUFnQjtJQUNwQixNQUFNQyxlQUFlO1dBQUlYO0tBQU07SUFFL0IsTUFBT1csYUFBYXZDLE1BQU0sR0FBRyxFQUFHO1FBQzlCLE1BQU13QyxjQUFjRCxZQUFZLENBQUMsRUFBRTtRQUNuQyxNQUFNRSxrQkFBa0JELFlBQVlwQixjQUFjO1FBQ2xELE1BQU1zQixvQkFBb0JELGdCQUFnQnpDLE1BQU07UUFDaEQsTUFBTTJDLG1CQUFtQkw7UUFDekIsTUFBTU0saUJBQWlCTixnQkFBZ0JJO1FBRXZDLElBQUlFLGtCQUFrQlosWUFBWTtZQUNoQ0Usc0JBQXNCVyxJQUFJLENBQUNMO1lBQzNCSCxrQkFBa0JLO1FBQ3BCLE9BQU8sSUFBSUMsb0JBQW9CVixVQUFVO1lBQ3ZDRyxxQkFBcUJTLElBQUksQ0FBQ0w7UUFDNUIsT0FBTztZQUNMTCxjQUFjVSxJQUFJLENBQUNMO1FBQ3JCO1FBQ0FGLGlCQUFpQkk7UUFDakJILGFBQWFPLEtBQUs7SUFDcEI7SUFDQSxPQUFPO1FBQUNUO1FBQWdCSDtRQUF1QkM7UUFBZUM7S0FBcUI7QUFDckY7QUFFQSxTQUFTVyxtQkFDUG5CLEtBQWlCLEVBQ2pCSSxVQUFrQixFQUNsQkMsUUFBZ0IsRUFDaEJwQyxLQUF3QjtJQUV4QixNQUFNbUQsU0FBcUI7UUFDekJDLFVBQVU7UUFDVmhELEtBQUtKLE1BQU1JLEdBQUc7UUFDZCxHQUFHSixNQUFNbUQsTUFBTTtJQUNqQjtJQUVBLE1BQU1FLFdBQVdDLElBQUFBLGlDQUFtQixFQUFDO1FBQUVIO0lBQU87SUFDOUMsSUFBSXBCLE1BQU01QixNQUFNLEtBQUssR0FBRztRQUN0QixJQUFJb0Qsb0JBQW9CeEIsS0FBSyxDQUFDLEVBQUU7UUFDaEMsSUFBSXlCO1FBQ0osSUFBSXJCLGVBQWUsR0FBRztZQUNuQixDQUFDcUIsY0FBY0Qsa0JBQWtCLEdBQUdBLGtCQUFrQkUsU0FBUyxDQUFDckI7UUFDbkUsT0FBTztZQUNKLEdBQUdvQixjQUFjRCxrQkFBa0IsR0FBR0Esa0JBQWtCRSxTQUFTLENBQUN0QixZQUFZQztRQUNqRjtRQUNBLE1BQU1zQixXQUFXQyxJQUFBQSx3QkFBZSxFQUFDM0QsTUFBTUQsSUFBSTtRQUMzQzJELFNBQVNFLFNBQVMsQ0FBQ0osYUFBYUssU0FBUztRQUN6Q0gsU0FBU0ksU0FBUyxDQUFDTixhQUFhTyxTQUFTO1FBQ3pDVixTQUFTVyxNQUFNLENBQUNOO1FBQ2hCRixhQUFhUyxPQUFPLENBQUNaO1FBQ3JCLE9BQU9FO0lBQ1QsT0FBTyxJQUFJeEIsTUFBTTVCLE1BQU0sR0FBRyxHQUFHO1FBQzNCLE1BQU0rRCxnQkFBZ0JuQyxLQUFLLENBQUMsRUFBRTtRQUM5QixJQUFJb0MsU0FBU0QsY0FBYzNDLGNBQWMsR0FBR3BCLE1BQU07UUFDbEQsSUFBSWlFO1FBQ0osSUFBSWpDLGVBQWUsR0FBRztZQUNwQmlDLG9CQUFvQkY7UUFDdEIsT0FBTztZQUNKLEdBQUdFLGtCQUFrQixHQUFHRixjQUFjVCxTQUFTLENBQUN0QjtRQUNuRDtRQUNBLE1BQU1rQyxZQUFZLEVBQUU7UUFDcEIsSUFBSWQ7UUFDSixJQUFLLElBQUloRCxJQUFJLEdBQUdBLElBQUl3QixNQUFNNUIsTUFBTSxFQUFFSSxJQUFLO1lBQ3JDLE1BQU1vQyxjQUFjWixLQUFLLENBQUN4QixFQUFFO1lBQzVCLE1BQU1xQyxrQkFBa0JELFlBQVlwQixjQUFjO1lBQ2xELE1BQU1zQixvQkFBb0JELGdCQUFnQnpDLE1BQU07WUFDaEQsTUFBTTJDLG1CQUFtQnFCO1lBQ3pCLE1BQU1wQixpQkFBaUJvQixTQUFTdEI7WUFDaEMsSUFBSUMsbUJBQW1CVixVQUFVO2dCQUMvQixJQUFJVyxrQkFBa0JYLFVBQVU7b0JBQzlCaUMsVUFBVXJCLElBQUksQ0FBQ0w7Z0JBQ2pCLE9BQU87b0JBQ0wsTUFBTSxDQUFDYSxjQUFjYyxRQUFRLEdBQUczQixZQUFZYyxTQUFTLENBQUNyQixXQUFXVTtvQkFDakV1QixVQUFVckIsSUFBSSxDQUFDUTtvQkFDZkQsb0JBQW9CZTtnQkFDdEI7WUFDRjtZQUNBSCxVQUFVdEI7UUFDWjtRQUNBLE1BQU0wQixZQUFZQyxJQUFBQSxzQkFBYTtRQUMvQixNQUFNQyxtQkFBbUJGLFlBQVlBLFVBQVVHLFFBQVEsR0FBR0MsSUFBSSxDQUFDckQsb0JBQVcsSUFBSXNEO1FBQzlFLE1BQU1sQixXQUFXQyxJQUFBQSx3QkFBZSxFQUFDUyxrQkFBa0I3QyxjQUFjO1FBQ2pFbUMsU0FBU0UsU0FBUyxDQUFDUSxrQkFBa0JQLFNBQVM7UUFDOUNILFNBQVNJLFNBQVMsQ0FBQ00sa0JBQWtCTCxTQUFTO1FBQzlDVixTQUFTVyxNQUFNLENBQUNOLGFBQWFXO1FBQzdCLDBFQUEwRTtRQUMxRSx1Q0FBdUM7UUFDdkMsSUFBSUksb0JBQW9CQSxxQkFBcUJMLG1CQUFtQjtZQUM5RCxJQUFJUyxJQUFBQSwwQkFBaUIsRUFBQ04sWUFBWTtnQkFDaENiLFNBQVNvQixNQUFNLENBQUNQLFVBQVVRLE1BQU0sQ0FBQ1osTUFBTSxFQUFFSSxVQUFVUyxLQUFLLENBQUNiLE1BQU07WUFDakUsT0FBTyxJQUFJYyxJQUFBQSx5QkFBZ0IsRUFBQ1YsWUFBWTtnQkFDdENiLFNBQVNvQixNQUFNLENBQUMsR0FBR3BCLFNBQVNuQyxjQUFjLEdBQUdwQixNQUFNO1lBQ3JEO1FBQ0Y7UUFDQWlFLGtCQUFrQkgsT0FBTyxDQUFDWjtRQUMxQixPQUFPRTtJQUNUO0lBQ0EsT0FBT3FCO0FBQ1Q7QUFFQSxTQUFTTSxtQkFDUG5ELEtBQWlCLEVBQ2pCekIsUUFBdUIsRUFDdkI2RSxRQUF1QjtJQUV2QixJQUFJekMsZUFBZTtXQUFJWDtLQUFNO0lBQzdCLE1BQU1xRCxjQUFjMUMsYUFBYTJDLEdBQUcsQ0FBQyxDQUFDckUsT0FBU0EsS0FBS08sY0FBYyxJQUFJK0QsSUFBSSxDQUFDO0lBQzNFLElBQUl2RixPQUFPcUY7SUFFWCxJQUFJcEY7SUFDSixJQUFJdUYsa0JBQWtCO0lBRXRCLE1BQU8sQUFBQ3ZGLENBQUFBLFFBQVFLLGVBQWVOLE1BQU1PLFNBQVEsS0FBTSxRQUFRTixVQUFVLEtBQU07UUFDekUsTUFBTTZCLGFBQXFCN0IsTUFBTUUsS0FBSztRQUN0QyxNQUFNc0YsY0FBc0J4RixNQUFNRyxNQUFNO1FBQ3hDLE1BQU0yQixXQUFXRCxhQUFhMkQ7UUFDOUIsTUFBTUMsVUFBVTdELHVCQUNkMkQsa0JBQWtCMUQsWUFDbEIwRCxrQkFBa0J6RCxVQUNsQnNELGFBQ0ExQztRQUdGLElBQUkrQyxTQUFTO1lBQ1gsTUFBTSxDQUFDakQsa0JBQWtCRixlQUFlQyxxQkFBcUIsR0FBR0wscUJBQzlEUSxjQUNBNkMsa0JBQWtCMUQsWUFDbEIwRCxrQkFBa0J6RDtZQUdwQixNQUFNNEQsbUJBQW1CSCxrQkFBa0IxRCxhQUFhVztZQUN4RCxNQUFNbUQsaUJBQWlCSixrQkFBa0J6RCxXQUFXVTtZQUNwRCxNQUFNZSxvQkFBb0JMLG1CQUN4QlosZUFDQW9ELGtCQUNBQyxnQkFDQTNGO1lBRUYwQyxlQUFlYSxvQkFDWDtnQkFBQ0E7bUJBQXNCaEI7YUFBcUIsR0FDNUNBO1lBQ0o0QyxTQUFTbkYsTUFBTUksR0FBRyxFQUFFO1lBQ3BCbUYsa0JBQWtCO1FBQ3BCLE9BQU87WUFDTEEsbUJBQW1CekQ7UUFDckI7UUFFQS9CLE9BQU9BLEtBQUs2RixTQUFTLENBQUM5RDtJQUN4QjtBQUNGO0FBRUEsU0FBUytELGVBQ1B4QyxRQUFzQixFQUN0Qi9DLFFBQXVCLEVBQ3ZCNkUsUUFBdUI7SUFFdkIsaUNBQWlDO0lBQ2pDLE1BQU1XLFdBQVd6QyxTQUFTMEMsV0FBVztJQUNyQyxNQUFNQyxpQkFBaUJGLFNBQVMzRixNQUFNO0lBQ3RDLElBQUssSUFBSUksSUFBSSxHQUFHQSxJQUFJeUYsZ0JBQWdCekYsSUFBSztRQUN2QyxNQUFNMEYsUUFBUUgsUUFBUSxDQUFDdkYsRUFBRTtRQUN6QixJQUFJLENBQUNlLElBQUFBLG9CQUFXLEVBQUMyRSxVQUFVLENBQUNBLE1BQU1DLFlBQVksSUFBSTtZQUNoREMsb0JBQW9COUM7WUFDcEI4QixTQUFTLE1BQU05QixTQUFTK0MsU0FBUyxJQUFJaEcsT0FBTztZQUM1QztRQUNGO0lBQ0Y7SUFFQSxtQ0FBbUM7SUFDbkMsTUFBTUwsT0FBT3NELFNBQVM5QixjQUFjO0lBQ3BDLE1BQU12QixRQUFRSyxlQUFlTixNQUFNTztJQUNuQyxJQUFJTixVQUFVLFFBQVFBLE1BQU1ELElBQUksS0FBS0EsTUFBTTtRQUN6Q29HLG9CQUFvQjlDO1FBQ3BCOEIsU0FBUyxNQUFNOUIsU0FBUytDLFNBQVMsSUFBSWhHLE9BQU87UUFDNUM7SUFDRjtJQUVBLGtCQUFrQjtJQUNsQixJQUFJLENBQUNXLG9CQUFvQnNDLGFBQWEsQ0FBQzdCLGdCQUFnQjZCLFdBQVc7UUFDaEU4QyxvQkFBb0I5QztRQUNwQjhCLFNBQVMsTUFBTTlCLFNBQVMrQyxTQUFTLElBQUloRyxPQUFPO1FBQzVDO0lBQ0Y7SUFFQSxNQUFNQSxNQUFNaUQsU0FBUytDLFNBQVMsSUFBSWhHO0lBQ2xDLElBQUlBLFFBQVFKLE9BQU9JLEtBQUs7UUFDdEIsTUFBTWlHLE9BQU9oRCxTQUFTK0MsU0FBUztRQUMvQkMsS0FBS2pHLEdBQUcsR0FBR0osT0FBT0k7UUFDbEJpRCxTQUFTaUQsU0FBUyxDQUFDRDtRQUNuQmxCLFNBQVNuRixNQUFNSSxHQUFHLEVBQUVBLE9BQU87SUFDN0I7QUFDRjtBQUVBLDhFQUE4RTtBQUM5RSx5RUFBeUU7QUFDekUsU0FBU21HLG1CQUNQN0MsUUFBa0IsRUFDbEJwRCxRQUF1QixFQUN2QjZFLFFBQXVCO0lBRXZCLE1BQU1xQixrQkFBa0I5QyxTQUFTeEMsa0JBQWtCO0lBQ25ELE1BQU11RixjQUFjL0MsU0FBU2hDLGNBQWM7SUFDM0MsTUFBTTNCLE9BQU8yRCxTQUFTbkMsY0FBYztJQUVwQyxJQUFJbUYsSUFBQUEsNkJBQWUsRUFBQ0Ysb0JBQW9CLENBQUMxRixvQkFBb0JmLE9BQU87UUFDbEV5RyxnQkFBZ0J4QyxNQUFNLENBQUNOO1FBQ3ZCbUMsZUFBZVcsaUJBQWlCbEcsVUFBVTZFO1FBQzFDQSxTQUFTLE1BQU1xQixnQkFBZ0JKLFNBQVMsSUFBSWhHLE9BQU87SUFDckQ7SUFFQSxJQUFJc0csSUFBQUEsNkJBQWUsRUFBQ0QsZ0JBQWdCLENBQUM3RixrQkFBa0JiLE9BQU87UUFDNURvRyxvQkFBb0JNO1FBQ3BCWixlQUFlWSxhQUFhbkcsVUFBVTZFO1FBQ3RDQSxTQUFTLE1BQU1zQixZQUFZTCxTQUFTLElBQUloRyxPQUFPO0lBQ2pEO0FBQ0Y7QUFFQSxTQUFTK0Ysb0JBQW9CbkYsSUFBaUI7SUFDNUMsTUFBTThFLFdBQVc5RSxLQUFLK0UsV0FBVztJQUNqQyxNQUFNQyxpQkFBaUJGLFNBQVMzRixNQUFNO0lBRXRDLElBQUssSUFBSXdHLElBQUlYLGlCQUFpQixHQUFHVyxLQUFLLEdBQUdBLElBQUs7UUFDNUMzRixLQUFLNEYsV0FBVyxDQUFDZCxRQUFRLENBQUNhLEVBQUU7SUFDOUI7SUFFQTNGLEtBQUs2RixNQUFNO0lBQ1gsT0FBT2YsU0FBU1QsR0FBRyxDQUFDLENBQUNZLFFBQVVBLE1BQU1hLFNBQVM7QUFDaEQ7QUFFQSxTQUFTQyxvQkFBb0JyRCxRQUFrQjtJQUM3QyxzRkFBc0Y7SUFDdEYsTUFBTXNELG1CQUFtQjtRQUFDdEQ7S0FBUztJQUNuQyxJQUFJK0MsY0FBYy9DLFNBQVNoQyxjQUFjO0lBQ3pDLE1BQU8rRSxnQkFBZ0IsUUFBUW5GLElBQUFBLG9CQUFXLEVBQUNtRixnQkFBZ0JBLFlBQVlQLFlBQVksR0FBSTtRQUNyRmMsaUJBQWlCaEUsSUFBSSxDQUFDeUQ7UUFDdEIsSUFBSSxLQUFLOUYsSUFBSSxDQUFDOEYsWUFBWWxGLGNBQWMsS0FBSztZQUMzQztRQUNGO1FBQ0FrRixjQUFjQSxZQUFZL0UsY0FBYztJQUMxQztJQUNBLE9BQU9zRjtBQUNUO0FBRUEsU0FBU0MsWUFDUEMsTUFBcUIsRUFDckI1RyxRQUF1QixFQUN2QjZFLFFBQXdCO0lBRXhCZ0MsSUFBQUEsZ0JBQVMsRUFBQztRQUNSLElBQUksQ0FBQ0QsT0FBT0UsUUFBUSxDQUFDO1lBQUNDLDBCQUFZO1NBQUMsR0FBRztZQUNwQ0MsSUFBQUEsb0JBQVMsRUFBQyxPQUFPO1FBQ25CO1FBRUEsTUFBTUMsa0JBQWtCLENBQUNuSCxLQUFvQm9IO1lBQzNDLElBQUlyQyxZQUFZLE1BQU07Z0JBQ3BCQSxTQUFTL0UsS0FBS29IO1lBQ2hCO1FBQ0Y7UUFFQSxPQUFPQyxJQUFBQSxvQkFBYSxFQUNsQlAsT0FBT1EscUJBQXFCLENBQUNDLGlCQUFRLEVBQUUsQ0FBQ2pFO1lBQ3RDLE1BQU1rRSxTQUFTbEUsU0FBU21FLGdCQUFnQjtZQUN4QyxNQUFNQyxXQUFXcEUsU0FBU3hDLGtCQUFrQjtZQUM1QyxJQUFJd0YsSUFBQUEsNkJBQWUsRUFBQ2tCLFNBQVM7Z0JBQzNCL0IsZUFBZStCLFFBQVF0SCxVQUFVaUg7WUFDbkMsT0FBTyxJQUFJLENBQUNRLElBQUFBLHFCQUFXLEVBQUNILFNBQVM7Z0JBQy9CLElBQ0VsRSxTQUFTd0MsWUFBWSxNQUNwQnBGLENBQUFBLG9CQUFvQjRDLFNBQVNuQyxjQUFjLE9BQU8sQ0FBQ21GLElBQUFBLDZCQUFlLEVBQUNvQixTQUFRLEdBQzVFO29CQUNBLE1BQU1kLG1CQUFtQkQsb0JBQW9CckQ7b0JBQzdDd0IsbUJBQW1COEIsa0JBQWtCMUcsVUFBVWlIO2dCQUNqRDtnQkFFQWhCLG1CQUFtQjdDLFVBQVVwRCxVQUFVaUg7WUFDekM7UUFDRjtJQUVKLEdBQUc7UUFBQ0w7UUFBUTVHO1FBQVU2RTtLQUFTO0FBQ2pDO0FBRUEsTUFBTTZDLFlBQ0o7QUFFRixNQUFNQyxjQUNKO0FBRUYsTUFBTUMsV0FBVztJQUNmdEksNEJBQTRCb0ksV0FBVyxDQUFDakk7UUFDdEMsT0FBT0EsS0FBS29JLFVBQVUsQ0FBQyxVQUFVcEksT0FBTyxDQUFDLFFBQVEsRUFBRUEsS0FBSyxDQUFDO0lBQzNEO0lBQ0FILDRCQUE0QnFJLGFBQWEsQ0FBQ2xJO1FBQ3hDLE9BQU8sQ0FBQyxPQUFPLEVBQUVBLEtBQUssQ0FBQztJQUN6QjtDQUNEO0FBRU0sU0FBU0o7SUFDZCxNQUFNLENBQUN1SCxPQUFPLEdBQUdrQixJQUFBQSxpREFBeUI7SUFFMUNuQixZQUFZQyxRQUFRZ0I7SUFFcEIsT0FBTztBQUNUIn0=
|
|
318
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9mZWF0dXJlcy9saW5rL3BsdWdpbnMvYXV0b0xpbmsvaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xuaW1wb3J0IHR5cGUgeyBFbGVtZW50Tm9kZSwgTGV4aWNhbEVkaXRvciwgTGV4aWNhbE5vZGUgfSBmcm9tICdsZXhpY2FsJ1xuXG5pbXBvcnQgeyB1c2VMZXhpY2FsQ29tcG9zZXJDb250ZXh0IH0gZnJvbSAnQGxleGljYWwvcmVhY3QvTGV4aWNhbENvbXBvc2VyQ29udGV4dCdcbmltcG9ydCB7IG1lcmdlUmVnaXN0ZXIgfSBmcm9tICdAbGV4aWNhbC91dGlscydcbmltcG9ydCB7XG4gICRjcmVhdGVUZXh0Tm9kZSxcbiAgJGdldFNlbGVjdGlvbixcbiAgJGlzRWxlbWVudE5vZGUsXG4gICRpc0xpbmVCcmVha05vZGUsXG4gICRpc05vZGVTZWxlY3Rpb24sXG4gICRpc1JhbmdlU2VsZWN0aW9uLFxuICAkaXNUZXh0Tm9kZSxcbiAgVGV4dE5vZGUsXG59IGZyb20gJ2xleGljYWwnXG5pbXBvcnQgeyB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCdcblxuaW1wb3J0IHR5cGUgeyBMaW5rRmllbGRzIH0gZnJvbSAnLi4vLi4vbm9kZXMvdHlwZXMnXG5cbmltcG9ydCB7IGludmFyaWFudCB9IGZyb20gJy4uLy4uLy4uLy4uL2xleGljYWwvdXRpbHMvaW52YXJpYW50J1xuaW1wb3J0IHsgJGNyZWF0ZUF1dG9MaW5rTm9kZSwgJGlzQXV0b0xpbmtOb2RlLCBBdXRvTGlua05vZGUgfSBmcm9tICcuLi8uLi9ub2Rlcy9BdXRvTGlua05vZGUnXG5pbXBvcnQgeyAkaXNMaW5rTm9kZSB9IGZyb20gJy4uLy4uL25vZGVzL0xpbmtOb2RlJ1xuXG50eXBlIENoYW5nZUhhbmRsZXIgPSAodXJsOiBudWxsIHwgc3RyaW5nLCBwcmV2VXJsOiBudWxsIHwgc3RyaW5nKSA9PiB2b2lkXG5cbmludGVyZmFjZSBMaW5rTWF0Y2hlclJlc3VsdCB7XG4gIGZpZWxkcz86IExpbmtGaWVsZHNcbiAgaW5kZXg6IG51bWJlclxuICBsZW5ndGg6IG51bWJlclxuICB0ZXh0OiBzdHJpbmdcbiAgdXJsOiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgTGlua01hdGNoZXIgPSAodGV4dDogc3RyaW5nKSA9PiBMaW5rTWF0Y2hlclJlc3VsdCB8IG51bGxcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUxpbmtNYXRjaGVyV2l0aFJlZ0V4cChcbiAgcmVnRXhwOiBSZWdFeHAsXG4gIHVybFRyYW5zZm9ybWVyOiAodGV4dDogc3RyaW5nKSA9PiBzdHJpbmcgPSAodGV4dCkgPT4gdGV4dCxcbikge1xuICByZXR1cm4gKHRleHQ6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IG1hdGNoID0gcmVnRXhwLmV4ZWModGV4dClcbiAgICBpZiAobWF0Y2ggPT09IG51bGwpIHJldHVybiBudWxsXG4gICAgcmV0dXJuIHtcbiAgICAgIGluZGV4OiBtYXRjaC5pbmRleCxcbiAgICAgIGxlbmd0aDogbWF0Y2hbMF0ubGVuZ3RoLFxuICAgICAgdGV4dDogbWF0Y2hbMF0sXG4gICAgICB1cmw6IHVybFRyYW5zZm9ybWVyKG1hdGNoWzBdKSxcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gZmluZEZpcnN0TWF0Y2godGV4dDogc3RyaW5nLCBtYXRjaGVyczogTGlua01hdGNoZXJbXSk6IExpbmtNYXRjaGVyUmVzdWx0IHwgbnVsbCB7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbWF0Y2hlcnMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBtYXRjaCA9IG1hdGNoZXJzW2ldKHRleHQpXG5cbiAgICBpZiAobWF0Y2ggIT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG1hdGNoXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG51bGxcbn1cblxuY29uc3QgUFVOQ1RVQVRJT05fT1JfU1BBQ0UgPSAvWy4sO1xcc10vXG5cbmZ1bmN0aW9uIGlzU2VwYXJhdG9yKGNoYXI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gUFVOQ1RVQVRJT05fT1JfU1BBQ0UudGVzdChjaGFyKVxufVxuXG5mdW5jdGlvbiBlbmRzV2l0aFNlcGFyYXRvcih0ZXh0Q29udGVudDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBpc1NlcGFyYXRvcih0ZXh0Q29udGVudFt0ZXh0Q29udGVudC5sZW5ndGggLSAxXSlcbn1cblxuZnVuY3Rpb24gc3RhcnRzV2l0aFNlcGFyYXRvcih0ZXh0Q29udGVudDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBpc1NlcGFyYXRvcih0ZXh0Q29udGVudFswXSlcbn1cblxuZnVuY3Rpb24gaXNQcmV2aW91c05vZGVWYWxpZChub2RlOiBMZXhpY2FsTm9kZSk6IGJvb2xlYW4ge1xuICBsZXQgcHJldmlvdXNOb2RlID0gbm9kZS5nZXRQcmV2aW91c1NpYmxpbmcoKVxuICBpZiAoJGlzRWxlbWVudE5vZGUocHJldmlvdXNOb2RlKSkge1xuICAgIHByZXZpb3VzTm9kZSA9IHByZXZpb3VzTm9kZS5nZXRMYXN0RGVzY2VuZGFudCgpXG4gIH1cbiAgcmV0dXJuIChcbiAgICBwcmV2aW91c05vZGUgPT09IG51bGwgfHxcbiAgICAkaXNMaW5lQnJlYWtOb2RlKHByZXZpb3VzTm9kZSkgfHxcbiAgICAoJGlzVGV4dE5vZGUocHJldmlvdXNOb2RlKSAmJiBlbmRzV2l0aFNlcGFyYXRvcihwcmV2aW91c05vZGUuZ2V0VGV4dENvbnRlbnQoKSkpXG4gIClcbn1cblxuZnVuY3Rpb24gaXNOZXh0Tm9kZVZhbGlkKG5vZGU6IExleGljYWxOb2RlKTogYm9vbGVhbiB7XG4gIGxldCBuZXh0Tm9kZSA9IG5vZGUuZ2V0TmV4dFNpYmxpbmcoKVxuICBpZiAoJGlzRWxlbWVudE5vZGUobmV4dE5vZGUpKSB7XG4gICAgbmV4dE5vZGUgPSBuZXh0Tm9kZS5nZXRGaXJzdERlc2NlbmRhbnQoKVxuICB9XG4gIHJldHVybiAoXG4gICAgbmV4dE5vZGUgPT09IG51bGwgfHxcbiAgICAkaXNMaW5lQnJlYWtOb2RlKG5leHROb2RlKSB8fFxuICAgICgkaXNUZXh0Tm9kZShuZXh0Tm9kZSkgJiYgc3RhcnRzV2l0aFNlcGFyYXRvcihuZXh0Tm9kZS5nZXRUZXh0Q29udGVudCgpKSlcbiAgKVxufVxuXG5mdW5jdGlvbiBpc0NvbnRlbnRBcm91bmRJc1ZhbGlkKFxuICBtYXRjaFN0YXJ0OiBudW1iZXIsXG4gIG1hdGNoRW5kOiBudW1iZXIsXG4gIHRleHQ6IHN0cmluZyxcbiAgbm9kZXM6IFRleHROb2RlW10sXG4pOiBib29sZWFuIHtcbiAgY29uc3QgY29udGVudEJlZm9yZUlzVmFsaWQgPVxuICAgIG1hdGNoU3RhcnQgPiAwID8gaXNTZXBhcmF0b3IodGV4dFttYXRjaFN0YXJ0IC0gMV0pIDogaXNQcmV2aW91c05vZGVWYWxpZChub2Rlc1swXSlcbiAgaWYgKCFjb250ZW50QmVmb3JlSXNWYWxpZCkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgY29uc3QgY29udGVudEFmdGVySXNWYWxpZCA9XG4gICAgbWF0Y2hFbmQgPCB0ZXh0Lmxlbmd0aCA/IGlzU2VwYXJhdG9yKHRleHRbbWF0Y2hFbmRdKSA6IGlzTmV4dE5vZGVWYWxpZChub2Rlc1tub2Rlcy5sZW5ndGggLSAxXSlcbiAgcmV0dXJuIGNvbnRlbnRBZnRlcklzVmFsaWRcbn1cblxuZnVuY3Rpb24gZXh0cmFjdE1hdGNoaW5nTm9kZXMoXG4gIG5vZGVzOiBUZXh0Tm9kZVtdLFxuICBzdGFydEluZGV4OiBudW1iZXIsXG4gIGVuZEluZGV4OiBudW1iZXIsXG4pOiBbXG4gIG1hdGNoaW5nT2Zmc2V0OiBudW1iZXIsXG4gIHVubW9kaWZpZWRCZWZvcmVOb2RlczogVGV4dE5vZGVbXSxcbiAgbWF0Y2hpbmdOb2RlczogVGV4dE5vZGVbXSxcbiAgdW5tb2RpZmllZEFmdGVyTm9kZXM6IFRleHROb2RlW10sXG5dIHtcbiAgY29uc3QgdW5tb2RpZmllZEJlZm9yZU5vZGVzOiBUZXh0Tm9kZVtdID0gW11cbiAgY29uc3QgbWF0Y2hpbmdOb2RlczogVGV4dE5vZGVbXSA9IFtdXG4gIGNvbnN0IHVubW9kaWZpZWRBZnRlck5vZGVzOiBUZXh0Tm9kZVtdID0gW11cbiAgbGV0IG1hdGNoaW5nT2Zmc2V0ID0gMFxuXG4gIGxldCBjdXJyZW50T2Zmc2V0ID0gMFxuICBjb25zdCBjdXJyZW50Tm9kZXMgPSBbLi4ubm9kZXNdXG5cbiAgd2hpbGUgKGN1cnJlbnROb2Rlcy5sZW5ndGggPiAwKSB7XG4gICAgY29uc3QgY3VycmVudE5vZGUgPSBjdXJyZW50Tm9kZXNbMF1cbiAgICBjb25zdCBjdXJyZW50Tm9kZVRleHQgPSBjdXJyZW50Tm9kZS5nZXRUZXh0Q29udGVudCgpXG4gICAgY29uc3QgY3VycmVudE5vZGVMZW5ndGggPSBjdXJyZW50Tm9kZVRleHQubGVuZ3RoXG4gICAgY29uc3QgY3VycmVudE5vZGVTdGFydCA9IGN1cnJlbnRPZmZzZXRcbiAgICBjb25zdCBjdXJyZW50Tm9kZUVuZCA9IGN1cnJlbnRPZmZzZXQgKyBjdXJyZW50Tm9kZUxlbmd0aFxuXG4gICAgaWYgKGN1cnJlbnROb2RlRW5kIDw9IHN0YXJ0SW5kZXgpIHtcbiAgICAgIHVubW9kaWZpZWRCZWZvcmVOb2Rlcy5wdXNoKGN1cnJlbnROb2RlKVxuICAgICAgbWF0Y2hpbmdPZmZzZXQgKz0gY3VycmVudE5vZGVMZW5ndGhcbiAgICB9IGVsc2UgaWYgKGN1cnJlbnROb2RlU3RhcnQgPj0gZW5kSW5kZXgpIHtcbiAgICAgIHVubW9kaWZpZWRBZnRlck5vZGVzLnB1c2goY3VycmVudE5vZGUpXG4gICAgfSBlbHNlIHtcbiAgICAgIG1hdGNoaW5nTm9kZXMucHVzaChjdXJyZW50Tm9kZSlcbiAgICB9XG4gICAgY3VycmVudE9mZnNldCArPSBjdXJyZW50Tm9kZUxlbmd0aFxuICAgIGN1cnJlbnROb2Rlcy5zaGlmdCgpXG4gIH1cbiAgcmV0dXJuIFttYXRjaGluZ09mZnNldCwgdW5tb2RpZmllZEJlZm9yZU5vZGVzLCBtYXRjaGluZ05vZGVzLCB1bm1vZGlmaWVkQWZ0ZXJOb2Rlc11cbn1cblxuZnVuY3Rpb24gY3JlYXRlQXV0b0xpbmtOb2RlKFxuICBub2RlczogVGV4dE5vZGVbXSxcbiAgc3RhcnRJbmRleDogbnVtYmVyLFxuICBlbmRJbmRleDogbnVtYmVyLFxuICBtYXRjaDogTGlua01hdGNoZXJSZXN1bHQsXG4pOiBUZXh0Tm9kZSB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGZpZWxkczogTGlua0ZpZWxkcyA9IHtcbiAgICBsaW5rVHlwZTogJ2N1c3RvbScsXG4gICAgdXJsOiBtYXRjaC51cmwsXG4gICAgLi4ubWF0Y2guZmllbGRzLFxuICB9XG5cbiAgY29uc3QgbGlua05vZGUgPSAkY3JlYXRlQXV0b0xpbmtOb2RlKHsgZmllbGRzIH0pXG4gIGlmIChub2Rlcy5sZW5ndGggPT09IDEpIHtcbiAgICBsZXQgcmVtYWluaW5nVGV4dE5vZGUgPSBub2Rlc1swXVxuICAgIGxldCBsaW5rVGV4dE5vZGVcbiAgICBpZiAoc3RhcnRJbmRleCA9PT0gMCkge1xuICAgICAgO1tsaW5rVGV4dE5vZGUsIHJlbWFpbmluZ1RleHROb2RlXSA9IHJlbWFpbmluZ1RleHROb2RlLnNwbGl0VGV4dChlbmRJbmRleClcbiAgICB9IGVsc2Uge1xuICAgICAgO1ssIGxpbmtUZXh0Tm9kZSwgcmVtYWluaW5nVGV4dE5vZGVdID0gcmVtYWluaW5nVGV4dE5vZGUuc3BsaXRUZXh0KHN0YXJ0SW5kZXgsIGVuZEluZGV4KVxuICAgIH1cbiAgICBjb25zdCB0ZXh0Tm9kZSA9ICRjcmVhdGVUZXh0Tm9kZShtYXRjaC50ZXh0KVxuICAgIHRleHROb2RlLnNldEZvcm1hdChsaW5rVGV4dE5vZGUuZ2V0Rm9ybWF0KCkpXG4gICAgdGV4dE5vZGUuc2V0RGV0YWlsKGxpbmtUZXh0Tm9kZS5nZXREZXRhaWwoKSlcbiAgICBsaW5rTm9kZS5hcHBlbmQodGV4dE5vZGUpXG4gICAgbGlua1RleHROb2RlLnJlcGxhY2UobGlua05vZGUpXG4gICAgcmV0dXJuIHJlbWFpbmluZ1RleHROb2RlXG4gIH0gZWxzZSBpZiAobm9kZXMubGVuZ3RoID4gMSkge1xuICAgIGNvbnN0IGZpcnN0VGV4dE5vZGUgPSBub2Rlc1swXVxuICAgIGxldCBvZmZzZXQgPSBmaXJzdFRleHROb2RlLmdldFRleHRDb250ZW50KCkubGVuZ3RoXG4gICAgbGV0IGZpcnN0TGlua1RleHROb2RlXG4gICAgaWYgKHN0YXJ0SW5kZXggPT09IDApIHtcbiAgICAgIGZpcnN0TGlua1RleHROb2RlID0gZmlyc3RUZXh0Tm9kZVxuICAgIH0gZWxzZSB7XG4gICAgICA7WywgZmlyc3RMaW5rVGV4dE5vZGVdID0gZmlyc3RUZXh0Tm9kZS5zcGxpdFRleHQoc3RhcnRJbmRleClcbiAgICB9XG4gICAgY29uc3QgbGlua05vZGVzID0gW11cbiAgICBsZXQgcmVtYWluaW5nVGV4dE5vZGVcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBjdXJyZW50Tm9kZSA9IG5vZGVzW2ldXG4gICAgICBjb25zdCBjdXJyZW50Tm9kZVRleHQgPSBjdXJyZW50Tm9kZS5nZXRUZXh0Q29udGVudCgpXG4gICAgICBjb25zdCBjdXJyZW50Tm9kZUxlbmd0aCA9IGN1cnJlbnROb2RlVGV4dC5sZW5ndGhcbiAgICAgIGNvbnN0IGN1cnJlbnROb2RlU3RhcnQgPSBvZmZzZXRcbiAgICAgIGNvbnN0IGN1cnJlbnROb2RlRW5kID0gb2Zmc2V0ICsgY3VycmVudE5vZGVMZW5ndGhcbiAgICAgIGlmIChjdXJyZW50Tm9kZVN0YXJ0IDwgZW5kSW5kZXgpIHtcbiAgICAgICAgaWYgKGN1cnJlbnROb2RlRW5kIDw9IGVuZEluZGV4KSB7XG4gICAgICAgICAgbGlua05vZGVzLnB1c2goY3VycmVudE5vZGUpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgW2xpbmtUZXh0Tm9kZSwgZW5kTm9kZV0gPSBjdXJyZW50Tm9kZS5zcGxpdFRleHQoZW5kSW5kZXggLSBjdXJyZW50Tm9kZVN0YXJ0KVxuICAgICAgICAgIGxpbmtOb2Rlcy5wdXNoKGxpbmtUZXh0Tm9kZSlcbiAgICAgICAgICByZW1haW5pbmdUZXh0Tm9kZSA9IGVuZE5vZGVcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgb2Zmc2V0ICs9IGN1cnJlbnROb2RlTGVuZ3RoXG4gICAgfVxuICAgIGNvbnN0IHNlbGVjdGlvbiA9ICRnZXRTZWxlY3Rpb24oKVxuICAgIGNvbnN0IHNlbGVjdGVkVGV4dE5vZGUgPSBzZWxlY3Rpb24gPyBzZWxlY3Rpb24uZ2V0Tm9kZXMoKS5maW5kKCRpc1RleHROb2RlKSA6IHVuZGVmaW5lZFxuICAgIGNvbnN0IHRleHROb2RlID0gJGNyZWF0ZVRleHROb2RlKGZpcnN0TGlua1RleHROb2RlLmdldFRleHRDb250ZW50KCkpXG4gICAgdGV4dE5vZGUuc2V0Rm9ybWF0KGZpcnN0TGlua1RleHROb2RlLmdldEZvcm1hdCgpKVxuICAgIHRleHROb2RlLnNldERldGFpbChmaXJzdExpbmtUZXh0Tm9kZS5nZXREZXRhaWwoKSlcbiAgICBsaW5rTm9kZS5hcHBlbmQodGV4dE5vZGUsIC4uLmxpbmtOb2RlcylcbiAgICAvLyBpdCBkb2VzIG5vdCBwcmVzZXJ2ZSBjYXJldCBwb3NpdGlvbiBpZiBjYXJldCB3YXMgYXQgdGhlIGZpcnN0IHRleHQgbm9kZVxuICAgIC8vIHNvIHdlIG5lZWQgdG8gcmVzdG9yZSBjYXJldCBwb3NpdGlvblxuICAgIGlmIChzZWxlY3RlZFRleHROb2RlICYmIHNlbGVjdGVkVGV4dE5vZGUgPT09IGZpcnN0TGlua1RleHROb2RlKSB7XG4gICAgICBpZiAoJGlzUmFuZ2VTZWxlY3Rpb24oc2VsZWN0aW9uKSkge1xuICAgICAgICB0ZXh0Tm9kZS5zZWxlY3Qoc2VsZWN0aW9uLmFuY2hvci5vZmZzZXQsIHNlbGVjdGlvbi5mb2N1cy5vZmZzZXQpXG4gICAgICB9IGVsc2UgaWYgKCRpc05vZGVTZWxlY3Rpb24oc2VsZWN0aW9uKSkge1xuICAgICAgICB0ZXh0Tm9kZS5zZWxlY3QoMCwgdGV4dE5vZGUuZ2V0VGV4dENvbnRlbnQoKS5sZW5ndGgpXG4gICAgICB9XG4gICAgfVxuICAgIGZpcnN0TGlua1RleHROb2RlLnJlcGxhY2UobGlua05vZGUpXG4gICAgcmV0dXJuIHJlbWFpbmluZ1RleHROb2RlXG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZFxufVxuXG5mdW5jdGlvbiBoYW5kbGVMaW5rQ3JlYXRpb24oXG4gIG5vZGVzOiBUZXh0Tm9kZVtdLFxuICBtYXRjaGVyczogTGlua01hdGNoZXJbXSxcbiAgb25DaGFuZ2U6IENoYW5nZUhhbmRsZXIsXG4pOiB2b2lkIHtcbiAgbGV0IGN1cnJlbnROb2RlcyA9IFsuLi5ub2Rlc11cbiAgY29uc3QgaW5pdGlhbFRleHQgPSBjdXJyZW50Tm9kZXMubWFwKChub2RlKSA9PiBub2RlLmdldFRleHRDb250ZW50KCkpLmpvaW4oJycpXG4gIGxldCB0ZXh0ID0gaW5pdGlhbFRleHRcblxuICBsZXQgbWF0Y2hcbiAgbGV0IGludmFsaWRNYXRjaEVuZCA9IDBcblxuICB3aGlsZSAoKG1hdGNoID0gZmluZEZpcnN0TWF0Y2godGV4dCwgbWF0Y2hlcnMpKSAhPSBudWxsICYmIG1hdGNoICE9PSBudWxsKSB7XG4gICAgY29uc3QgbWF0Y2hTdGFydDogbnVtYmVyID0gbWF0Y2guaW5kZXhcbiAgICBjb25zdCBtYXRjaExlbmd0aDogbnVtYmVyID0gbWF0Y2gubGVuZ3RoXG4gICAgY29uc3QgbWF0Y2hFbmQgPSBtYXRjaFN0YXJ0ICsgbWF0Y2hMZW5ndGhcbiAgICBjb25zdCBpc1ZhbGlkID0gaXNDb250ZW50QXJvdW5kSXNWYWxpZChcbiAgICAgIGludmFsaWRNYXRjaEVuZCArIG1hdGNoU3RhcnQsXG4gICAgICBpbnZhbGlkTWF0Y2hFbmQgKyBtYXRjaEVuZCxcbiAgICAgIGluaXRpYWxUZXh0LFxuICAgICAgY3VycmVudE5vZGVzLFxuICAgIClcblxuICAgIGlmIChpc1ZhbGlkKSB7XG4gICAgICBjb25zdCBbbWF0Y2hpbmdPZmZzZXQsICwgbWF0Y2hpbmdOb2RlcywgdW5tb2RpZmllZEFmdGVyTm9kZXNdID0gZXh0cmFjdE1hdGNoaW5nTm9kZXMoXG4gICAgICAgIGN1cnJlbnROb2RlcyxcbiAgICAgICAgaW52YWxpZE1hdGNoRW5kICsgbWF0Y2hTdGFydCxcbiAgICAgICAgaW52YWxpZE1hdGNoRW5kICsgbWF0Y2hFbmQsXG4gICAgICApXG5cbiAgICAgIGNvbnN0IGFjdHVhbE1hdGNoU3RhcnQgPSBpbnZhbGlkTWF0Y2hFbmQgKyBtYXRjaFN0YXJ0IC0gbWF0Y2hpbmdPZmZzZXRcbiAgICAgIGNvbnN0IGFjdHVhbE1hdGNoRW5kID0gaW52YWxpZE1hdGNoRW5kICsgbWF0Y2hFbmQgLSBtYXRjaGluZ09mZnNldFxuICAgICAgY29uc3QgcmVtYWluaW5nVGV4dE5vZGUgPSBjcmVhdGVBdXRvTGlua05vZGUoXG4gICAgICAgIG1hdGNoaW5nTm9kZXMsXG4gICAgICAgIGFjdHVhbE1hdGNoU3RhcnQsXG4gICAgICAgIGFjdHVhbE1hdGNoRW5kLFxuICAgICAgICBtYXRjaCxcbiAgICAgIClcbiAgICAgIGN1cnJlbnROb2RlcyA9IHJlbWFpbmluZ1RleHROb2RlXG4gICAgICAgID8gW3JlbWFpbmluZ1RleHROb2RlLCAuLi51bm1vZGlmaWVkQWZ0ZXJOb2Rlc11cbiAgICAgICAgOiB1bm1vZGlmaWVkQWZ0ZXJOb2Rlc1xuICAgICAgb25DaGFuZ2UobWF0Y2gudXJsLCBudWxsKVxuICAgICAgaW52YWxpZE1hdGNoRW5kID0gMFxuICAgIH0gZWxzZSB7XG4gICAgICBpbnZhbGlkTWF0Y2hFbmQgKz0gbWF0Y2hFbmRcbiAgICB9XG5cbiAgICB0ZXh0ID0gdGV4dC5zdWJzdHJpbmcobWF0Y2hFbmQpXG4gIH1cbn1cblxuZnVuY3Rpb24gaGFuZGxlTGlua0VkaXQoXG4gIGxpbmtOb2RlOiBBdXRvTGlua05vZGUsXG4gIG1hdGNoZXJzOiBMaW5rTWF0Y2hlcltdLFxuICBvbkNoYW5nZTogQ2hhbmdlSGFuZGxlcixcbik6IHZvaWQge1xuICAvLyBDaGVjayBjaGlsZHJlbiBhcmUgc2ltcGxlIHRleHRcbiAgY29uc3QgY2hpbGRyZW4gPSBsaW5rTm9kZS5nZXRDaGlsZHJlbigpXG4gIGNvbnN0IGNoaWxkcmVuTGVuZ3RoID0gY2hpbGRyZW4ubGVuZ3RoXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgY2hpbGRyZW5MZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGNoaWxkID0gY2hpbGRyZW5baV1cbiAgICBpZiAoISRpc1RleHROb2RlKGNoaWxkKSB8fCAhY2hpbGQuaXNTaW1wbGVUZXh0KCkpIHtcbiAgICAgIHJlcGxhY2VXaXRoQ2hpbGRyZW4obGlua05vZGUpXG4gICAgICBvbkNoYW5nZShudWxsLCBsaW5rTm9kZS5nZXRGaWVsZHMoKT8udXJsID8/IG51bGwpXG4gICAgICByZXR1cm5cbiAgICB9XG4gIH1cblxuICAvLyBDaGVjayB0ZXh0IGNvbnRlbnQgZnVsbHkgbWF0Y2hlc1xuICBjb25zdCB0ZXh0ID0gbGlua05vZGUuZ2V0VGV4dENvbnRlbnQoKVxuICBjb25zdCBtYXRjaCA9IGZpbmRGaXJzdE1hdGNoKHRleHQsIG1hdGNoZXJzKVxuICBpZiAobWF0Y2ggPT09IG51bGwgfHwgbWF0Y2gudGV4dCAhPT0gdGV4dCkge1xuICAgIHJlcGxhY2VXaXRoQ2hpbGRyZW4obGlua05vZGUpXG4gICAgb25DaGFuZ2UobnVsbCwgbGlua05vZGUuZ2V0RmllbGRzKCk/LnVybCA/PyBudWxsKVxuICAgIHJldHVyblxuICB9XG5cbiAgLy8gQ2hlY2sgbmVpZ2hib3JzXG4gIGlmICghaXNQcmV2aW91c05vZGVWYWxpZChsaW5rTm9kZSkgfHwgIWlzTmV4dE5vZGVWYWxpZChsaW5rTm9kZSkpIHtcbiAgICByZXBsYWNlV2l0aENoaWxkcmVuKGxpbmtOb2RlKVxuICAgIG9uQ2hhbmdlKG51bGwsIGxpbmtOb2RlLmdldEZpZWxkcygpPy51cmwgPz8gbnVsbClcbiAgICByZXR1cm5cbiAgfVxuXG4gIGNvbnN0IHVybCA9IGxpbmtOb2RlLmdldEZpZWxkcygpPy51cmxcbiAgaWYgKHVybCAhPT0gbWF0Y2g/LnVybCkge1xuICAgIGNvbnN0IGZsZHMgPSBsaW5rTm9kZS5nZXRGaWVsZHMoKVxuICAgIGZsZHMudXJsID0gbWF0Y2g/LnVybFxuICAgIGxpbmtOb2RlLnNldEZpZWxkcyhmbGRzKVxuICAgIG9uQ2hhbmdlKG1hdGNoLnVybCwgdXJsID8/IG51bGwpXG4gIH1cbn1cblxuLy8gQmFkIG5laWdoYm9ycyBhcmUgZWRpdHMgaW4gbmVpZ2hib3Igbm9kZXMgdGhhdCBtYWtlIEF1dG9MaW5rcyBpbmNvbXBhdGlibGUuXG4vLyBHaXZlbiB0aGUgY3JlYXRpb24gcHJlY29uZGl0aW9ucywgdGhlc2UgY2FuIG9ubHkgYmUgc2ltcGxlIHRleHQgbm9kZXMuXG5mdW5jdGlvbiBoYW5kbGVCYWROZWlnaGJvcnMoXG4gIHRleHROb2RlOiBUZXh0Tm9kZSxcbiAgbWF0Y2hlcnM6IExpbmtNYXRjaGVyW10sXG4gIG9uQ2hhbmdlOiBDaGFuZ2VIYW5kbGVyLFxuKTogdm9pZCB7XG4gIGNvbnN0IHByZXZpb3VzU2libGluZyA9IHRleHROb2RlLmdldFByZXZpb3VzU2libGluZygpXG4gIGNvbnN0IG5leHRTaWJsaW5nID0gdGV4dE5vZGUuZ2V0TmV4dFNpYmxpbmcoKVxuICBjb25zdCB0ZXh0ID0gdGV4dE5vZGUuZ2V0VGV4dENvbnRlbnQoKVxuXG4gIGlmICgkaXNBdXRvTGlua05vZGUocHJldmlvdXNTaWJsaW5nKSAmJiAhc3RhcnRzV2l0aFNlcGFyYXRvcih0ZXh0KSkge1xuICAgIHByZXZpb3VzU2libGluZy5hcHBlbmQodGV4dE5vZGUpXG4gICAgaGFuZGxlTGlua0VkaXQocHJldmlvdXNTaWJsaW5nLCBtYXRjaGVycywgb25DaGFuZ2UpXG4gICAgb25DaGFuZ2UobnVsbCwgcHJldmlvdXNTaWJsaW5nLmdldEZpZWxkcygpPy51cmwgPz8gbnVsbClcbiAgfVxuXG4gIGlmICgkaXNBdXRvTGlua05vZGUobmV4dFNpYmxpbmcpICYmICFlbmRzV2l0aFNlcGFyYXRvcih0ZXh0KSkge1xuICAgIHJlcGxhY2VXaXRoQ2hpbGRyZW4obmV4dFNpYmxpbmcpXG4gICAgaGFuZGxlTGlua0VkaXQobmV4dFNpYmxpbmcsIG1hdGNoZXJzLCBvbkNoYW5nZSlcbiAgICBvbkNoYW5nZShudWxsLCBuZXh0U2libGluZy5nZXRGaWVsZHMoKT8udXJsID8/IG51bGwpXG4gIH1cbn1cblxuZnVuY3Rpb24gcmVwbGFjZVdpdGhDaGlsZHJlbihub2RlOiBFbGVtZW50Tm9kZSk6IExleGljYWxOb2RlW10ge1xuICBjb25zdCBjaGlsZHJlbiA9IG5vZGUuZ2V0Q2hpbGRyZW4oKVxuICBjb25zdCBjaGlsZHJlbkxlbmd0aCA9IGNoaWxkcmVuLmxlbmd0aFxuXG4gIGZvciAobGV0IGogPSBjaGlsZHJlbkxlbmd0aCAtIDE7IGogPj0gMDsgai0tKSB7XG4gICAgbm9kZS5pbnNlcnRBZnRlcihjaGlsZHJlbltqXSlcbiAgfVxuXG4gIG5vZGUucmVtb3ZlKClcbiAgcmV0dXJuIGNoaWxkcmVuLm1hcCgoY2hpbGQpID0+IGNoaWxkLmdldExhdGVzdCgpKVxufVxuXG5mdW5jdGlvbiBnZXRUZXh0Tm9kZXNUb01hdGNoKHRleHROb2RlOiBUZXh0Tm9kZSk6IFRleHROb2RlW10ge1xuICAvLyBjaGVjayBpZiBuZXh0IHNpYmxpbmdzIGFyZSBzaW1wbGUgdGV4dCBub2RlcyB0aWxsIGEgbm9kZSBjb250YWlucyBhIHNwYWNlIHNlcGFyYXRvclxuICBjb25zdCB0ZXh0Tm9kZXNUb01hdGNoID0gW3RleHROb2RlXVxuICBsZXQgbmV4dFNpYmxpbmcgPSB0ZXh0Tm9kZS5nZXROZXh0U2libGluZygpXG4gIHdoaWxlIChuZXh0U2libGluZyAhPT0gbnVsbCAmJiAkaXNUZXh0Tm9kZShuZXh0U2libGluZykgJiYgbmV4dFNpYmxpbmcuaXNTaW1wbGVUZXh0KCkpIHtcbiAgICB0ZXh0Tm9kZXNUb01hdGNoLnB1c2gobmV4dFNpYmxpbmcpXG4gICAgaWYgKC9cXHMvLnRlc3QobmV4dFNpYmxpbmcuZ2V0VGV4dENvbnRlbnQoKSkpIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuICAgIG5leHRTaWJsaW5nID0gbmV4dFNpYmxpbmcuZ2V0TmV4dFNpYmxpbmcoKVxuICB9XG4gIHJldHVybiB0ZXh0Tm9kZXNUb01hdGNoXG59XG5cbmZ1bmN0aW9uIHVzZUF1dG9MaW5rKFxuICBlZGl0b3I6IExleGljYWxFZGl0b3IsXG4gIG1hdGNoZXJzOiBMaW5rTWF0Y2hlcltdLFxuICBvbkNoYW5nZT86IENoYW5nZUhhbmRsZXIsXG4pOiB2b2lkIHtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWVkaXRvci5oYXNOb2RlcyhbQXV0b0xpbmtOb2RlXSkpIHtcbiAgICAgIGludmFyaWFudChmYWxzZSwgJ0xleGljYWxBdXRvTGlua1BsdWdpbjogQXV0b0xpbmtOb2RlIG5vdCByZWdpc3RlcmVkIG9uIGVkaXRvcicpXG4gICAgfVxuXG4gICAgY29uc3Qgb25DaGFuZ2VXcmFwcGVkID0gKHVybDogbnVsbCB8IHN0cmluZywgcHJldlVybDogbnVsbCB8IHN0cmluZyk6IHZvaWQgPT4ge1xuICAgICAgaWYgKG9uQ2hhbmdlICE9IG51bGwpIHtcbiAgICAgICAgb25DaGFuZ2UodXJsLCBwcmV2VXJsKVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBtZXJnZVJlZ2lzdGVyKFxuICAgICAgZWRpdG9yLnJlZ2lzdGVyTm9kZVRyYW5zZm9ybShUZXh0Tm9kZSwgKHRleHROb2RlOiBUZXh0Tm9kZSkgPT4ge1xuICAgICAgICBjb25zdCBwYXJlbnQgPSB0ZXh0Tm9kZS5nZXRQYXJlbnRPclRocm93KClcbiAgICAgICAgY29uc3QgcHJldmlvdXMgPSB0ZXh0Tm9kZS5nZXRQcmV2aW91c1NpYmxpbmcoKVxuICAgICAgICBpZiAoJGlzQXV0b0xpbmtOb2RlKHBhcmVudCkpIHtcbiAgICAgICAgICBoYW5kbGVMaW5rRWRpdChwYXJlbnQsIG1hdGNoZXJzLCBvbkNoYW5nZVdyYXBwZWQpXG4gICAgICAgIH0gZWxzZSBpZiAoISRpc0xpbmtOb2RlKHBhcmVudCkpIHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICB0ZXh0Tm9kZS5pc1NpbXBsZVRleHQoKSAmJlxuICAgICAgICAgICAgKHN0YXJ0c1dpdGhTZXBhcmF0b3IodGV4dE5vZGUuZ2V0VGV4dENvbnRlbnQoKSkgfHwgISRpc0F1dG9MaW5rTm9kZShwcmV2aW91cykpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25zdCB0ZXh0Tm9kZXNUb01hdGNoID0gZ2V0VGV4dE5vZGVzVG9NYXRjaCh0ZXh0Tm9kZSlcbiAgICAgICAgICAgIGhhbmRsZUxpbmtDcmVhdGlvbih0ZXh0Tm9kZXNUb01hdGNoLCBtYXRjaGVycywgb25DaGFuZ2VXcmFwcGVkKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGhhbmRsZUJhZE5laWdoYm9ycyh0ZXh0Tm9kZSwgbWF0Y2hlcnMsIG9uQ2hhbmdlV3JhcHBlZClcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgKVxuICB9LCBbZWRpdG9yLCBtYXRjaGVycywgb25DaGFuZ2VdKVxufVxuXG5jb25zdCBVUkxfUkVHRVggPVxuICAvKChodHRwcz86XFwvXFwvKHd3d1xcLik/KXwod3d3XFwuKSlbLVxcd0A6JS4rfiM9XXsxLDI1Nn1cXC5bYS16QS1aXFxkKCldezEsNn1cXGIoWy1cXHcoKUA6JSsufiM/Ji89XSopL1xuXG5jb25zdCBFTUFJTF9SRUdFWCA9XG4gIC8oKFtePD4oKVtcXF1cXFxcLiw7Olxcc0BcIl0rKFxcLltePD4oKVtcXF1cXFxcLiw7Olxcc0BcIl0rKSopfChcIi4rXCIpKUAoKFxcW1xcZHsxLDN9XFwuXFxkezEsM31cXC5cXGR7MSwzfVxcLlxcZHsxLDN9XFxdKXwoKFthLXpBLVpcXC1cXGRdK1xcLikrW2EtekEtWl17Mix9KSkvXG5cbmNvbnN0IE1BVENIRVJTID0gW1xuICBjcmVhdGVMaW5rTWF0Y2hlcldpdGhSZWdFeHAoVVJMX1JFR0VYLCAodGV4dCkgPT4ge1xuICAgIHJldHVybiB0ZXh0LnN0YXJ0c1dpdGgoJ2h0dHAnKSA/IHRleHQgOiBgaHR0cHM6Ly8ke3RleHR9YFxuICB9KSxcbiAgY3JlYXRlTGlua01hdGNoZXJXaXRoUmVnRXhwKEVNQUlMX1JFR0VYLCAodGV4dCkgPT4ge1xuICAgIHJldHVybiBgbWFpbHRvOiR7dGV4dH1gXG4gIH0pLFxuXVxuXG5leHBvcnQgZnVuY3Rpb24gQXV0b0xpbmtQbHVnaW4oKTogSlNYLkVsZW1lbnQgfCBudWxsIHtcbiAgY29uc3QgW2VkaXRvcl0gPSB1c2VMZXhpY2FsQ29tcG9zZXJDb250ZXh0KClcblxuICB1c2VBdXRvTGluayhlZGl0b3IsIE1BVENIRVJTKVxuXG4gIHJldHVybiBudWxsXG59XG4iXSwibmFtZXMiOlsidXNlTGV4aWNhbENvbXBvc2VyQ29udGV4dCIsIm1lcmdlUmVnaXN0ZXIiLCIkY3JlYXRlVGV4dE5vZGUiLCIkZ2V0U2VsZWN0aW9uIiwiJGlzRWxlbWVudE5vZGUiLCIkaXNMaW5lQnJlYWtOb2RlIiwiJGlzTm9kZVNlbGVjdGlvbiIsIiRpc1JhbmdlU2VsZWN0aW9uIiwiJGlzVGV4dE5vZGUiLCJUZXh0Tm9kZSIsInVzZUVmZmVjdCIsImludmFyaWFudCIsIiRjcmVhdGVBdXRvTGlua05vZGUiLCIkaXNBdXRvTGlua05vZGUiLCJBdXRvTGlua05vZGUiLCIkaXNMaW5rTm9kZSIsImNyZWF0ZUxpbmtNYXRjaGVyV2l0aFJlZ0V4cCIsInJlZ0V4cCIsInVybFRyYW5zZm9ybWVyIiwidGV4dCIsIm1hdGNoIiwiZXhlYyIsImluZGV4IiwibGVuZ3RoIiwidXJsIiwiZmluZEZpcnN0TWF0Y2giLCJtYXRjaGVycyIsImkiLCJQVU5DVFVBVElPTl9PUl9TUEFDRSIsImlzU2VwYXJhdG9yIiwiY2hhciIsInRlc3QiLCJlbmRzV2l0aFNlcGFyYXRvciIsInRleHRDb250ZW50Iiwic3RhcnRzV2l0aFNlcGFyYXRvciIsImlzUHJldmlvdXNOb2RlVmFsaWQiLCJub2RlIiwicHJldmlvdXNOb2RlIiwiZ2V0UHJldmlvdXNTaWJsaW5nIiwiZ2V0TGFzdERlc2NlbmRhbnQiLCJnZXRUZXh0Q29udGVudCIsImlzTmV4dE5vZGVWYWxpZCIsIm5leHROb2RlIiwiZ2V0TmV4dFNpYmxpbmciLCJnZXRGaXJzdERlc2NlbmRhbnQiLCJpc0NvbnRlbnRBcm91bmRJc1ZhbGlkIiwibWF0Y2hTdGFydCIsIm1hdGNoRW5kIiwibm9kZXMiLCJjb250ZW50QmVmb3JlSXNWYWxpZCIsImNvbnRlbnRBZnRlcklzVmFsaWQiLCJleHRyYWN0TWF0Y2hpbmdOb2RlcyIsInN0YXJ0SW5kZXgiLCJlbmRJbmRleCIsInVubW9kaWZpZWRCZWZvcmVOb2RlcyIsIm1hdGNoaW5nTm9kZXMiLCJ1bm1vZGlmaWVkQWZ0ZXJOb2RlcyIsIm1hdGNoaW5nT2Zmc2V0IiwiY3VycmVudE9mZnNldCIsImN1cnJlbnROb2RlcyIsImN1cnJlbnROb2RlIiwiY3VycmVudE5vZGVUZXh0IiwiY3VycmVudE5vZGVMZW5ndGgiLCJjdXJyZW50Tm9kZVN0YXJ0IiwiY3VycmVudE5vZGVFbmQiLCJwdXNoIiwic2hpZnQiLCJjcmVhdGVBdXRvTGlua05vZGUiLCJmaWVsZHMiLCJsaW5rVHlwZSIsImxpbmtOb2RlIiwicmVtYWluaW5nVGV4dE5vZGUiLCJsaW5rVGV4dE5vZGUiLCJzcGxpdFRleHQiLCJ0ZXh0Tm9kZSIsInNldEZvcm1hdCIsImdldEZvcm1hdCIsInNldERldGFpbCIsImdldERldGFpbCIsImFwcGVuZCIsInJlcGxhY2UiLCJmaXJzdFRleHROb2RlIiwib2Zmc2V0IiwiZmlyc3RMaW5rVGV4dE5vZGUiLCJsaW5rTm9kZXMiLCJlbmROb2RlIiwic2VsZWN0aW9uIiwic2VsZWN0ZWRUZXh0Tm9kZSIsImdldE5vZGVzIiwiZmluZCIsInVuZGVmaW5lZCIsInNlbGVjdCIsImFuY2hvciIsImZvY3VzIiwiaGFuZGxlTGlua0NyZWF0aW9uIiwib25DaGFuZ2UiLCJpbml0aWFsVGV4dCIsIm1hcCIsImpvaW4iLCJpbnZhbGlkTWF0Y2hFbmQiLCJtYXRjaExlbmd0aCIsImlzVmFsaWQiLCJhY3R1YWxNYXRjaFN0YXJ0IiwiYWN0dWFsTWF0Y2hFbmQiLCJzdWJzdHJpbmciLCJoYW5kbGVMaW5rRWRpdCIsImNoaWxkcmVuIiwiZ2V0Q2hpbGRyZW4iLCJjaGlsZHJlbkxlbmd0aCIsImNoaWxkIiwiaXNTaW1wbGVUZXh0IiwicmVwbGFjZVdpdGhDaGlsZHJlbiIsImdldEZpZWxkcyIsImZsZHMiLCJzZXRGaWVsZHMiLCJoYW5kbGVCYWROZWlnaGJvcnMiLCJwcmV2aW91c1NpYmxpbmciLCJuZXh0U2libGluZyIsImoiLCJpbnNlcnRBZnRlciIsInJlbW92ZSIsImdldExhdGVzdCIsImdldFRleHROb2Rlc1RvTWF0Y2giLCJ0ZXh0Tm9kZXNUb01hdGNoIiwidXNlQXV0b0xpbmsiLCJlZGl0b3IiLCJoYXNOb2RlcyIsIm9uQ2hhbmdlV3JhcHBlZCIsInByZXZVcmwiLCJyZWdpc3Rlck5vZGVUcmFuc2Zvcm0iLCJwYXJlbnQiLCJnZXRQYXJlbnRPclRocm93IiwicHJldmlvdXMiLCJVUkxfUkVHRVgiLCJFTUFJTF9SRUdFWCIsIk1BVENIRVJTIiwic3RhcnRzV2l0aCIsIkF1dG9MaW5rUGx1Z2luIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUdBLFNBQVNBLHlCQUF5QixRQUFRLHdDQUF1QztBQUNqRixTQUFTQyxhQUFhLFFBQVEsaUJBQWdCO0FBQzlDLFNBQ0VDLGVBQWUsRUFDZkMsYUFBYSxFQUNiQyxjQUFjLEVBQ2RDLGdCQUFnQixFQUNoQkMsZ0JBQWdCLEVBQ2hCQyxpQkFBaUIsRUFDakJDLFdBQVcsRUFDWEMsUUFBUSxRQUNILFVBQVM7QUFDaEIsU0FBU0MsU0FBUyxRQUFRLFFBQU87QUFJakMsU0FBU0MsU0FBUyxRQUFRLHNDQUFxQztBQUMvRCxTQUFTQyxtQkFBbUIsRUFBRUMsZUFBZSxFQUFFQyxZQUFZLFFBQVEsMkJBQTBCO0FBQzdGLFNBQVNDLFdBQVcsUUFBUSx1QkFBc0I7QUFjbEQsT0FBTyxTQUFTQyw0QkFDZEMsTUFBYyxFQUNkQyxpQkFBMkMsQ0FBQ0MsT0FBU0EsSUFBSTtJQUV6RCxPQUFPLENBQUNBO1FBQ04sTUFBTUMsUUFBUUgsT0FBT0ksSUFBSSxDQUFDRjtRQUMxQixJQUFJQyxVQUFVLE1B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
|
|
@@ -1,23 +1,8 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
Object.defineProperty(exports, "ClickableLinkPlugin", {
|
|
7
|
-
enumerable: true,
|
|
8
|
-
get: function() {
|
|
9
|
-
return ClickableLinkPlugin;
|
|
10
|
-
}
|
|
11
|
-
});
|
|
12
|
-
const _LexicalClickableLinkPlugin = /*#__PURE__*/ _interop_require_default(require("@lexical/react/LexicalClickableLinkPlugin"));
|
|
13
|
-
const _react = /*#__PURE__*/ _interop_require_default(require("react"));
|
|
14
|
-
function _interop_require_default(obj) {
|
|
15
|
-
return obj && obj.__esModule ? obj : {
|
|
16
|
-
default: obj
|
|
17
|
-
};
|
|
18
|
-
}
|
|
19
|
-
function ClickableLinkPlugin() {
|
|
20
|
-
return /*#__PURE__*/ _react.default.createElement(_LexicalClickableLinkPlugin.default, null);
|
|
2
|
+
import LexicalClickableLinkPlugin from '@lexical/react/LexicalClickableLinkPlugin';
|
|
3
|
+
import React from 'react';
|
|
4
|
+
export function ClickableLinkPlugin() {
|
|
5
|
+
return /*#__PURE__*/ React.createElement(LexicalClickableLinkPlugin, null);
|
|
21
6
|
}
|
|
22
7
|
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9mZWF0dXJlcy9saW5rL3BsdWdpbnMvY2xpY2thYmxlTGluay9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnXG5pbXBvcnQgTGV4aWNhbENsaWNrYWJsZUxpbmtQbHVnaW4gZnJvbSAnQGxleGljYWwvcmVhY3QvTGV4aWNhbENsaWNrYWJsZUxpbmtQbHVnaW4nXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmV4cG9ydCBmdW5jdGlvbiBDbGlja2FibGVMaW5rUGx1Z2luKCkge1xuICByZXR1cm4gPExleGljYWxDbGlja2FibGVMaW5rUGx1Z2luIC8+
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9mZWF0dXJlcy9saW5rL3BsdWdpbnMvY2xpY2thYmxlTGluay9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnXG5pbXBvcnQgTGV4aWNhbENsaWNrYWJsZUxpbmtQbHVnaW4gZnJvbSAnQGxleGljYWwvcmVhY3QvTGV4aWNhbENsaWNrYWJsZUxpbmtQbHVnaW4nXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmV4cG9ydCBmdW5jdGlvbiBDbGlja2FibGVMaW5rUGx1Z2luKCkge1xuICByZXR1cm4gPExleGljYWxDbGlja2FibGVMaW5rUGx1Z2luIC8+XG59XG4iXSwibmFtZXMiOlsiTGV4aWNhbENsaWNrYWJsZUxpbmtQbHVnaW4iLCJSZWFjdCIsIkNsaWNrYWJsZUxpbmtQbHVnaW4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0EsT0FBT0EsZ0NBQWdDLDRDQUEyQztBQUNsRixPQUFPQyxXQUFXLFFBQU87QUFFekIsT0FBTyxTQUFTQztJQUNkLHFCQUFPLG9CQUFDRjtBQUNWIn0=
|
|
@@ -1,14 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "TOGGLE_LINK_WITH_MODAL_COMMAND", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return TOGGLE_LINK_WITH_MODAL_COMMAND;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
const _lexical = require("lexical");
|
|
12
|
-
const TOGGLE_LINK_WITH_MODAL_COMMAND = (0, _lexical.createCommand)('TOGGLE_LINK_WITH_MODAL_COMMAND');
|
|
1
|
+
import { createCommand } from 'lexical';
|
|
2
|
+
export const TOGGLE_LINK_WITH_MODAL_COMMAND = createCommand('TOGGLE_LINK_WITH_MODAL_COMMAND');
|
|
13
3
|
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9mZWF0dXJlcy9saW5rL3BsdWdpbnMvZmxvYXRpbmdMaW5rRWRpdG9yL0xpbmtFZGl0b3IvY29tbWFuZHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBMZXhpY2FsQ29tbWFuZCB9IGZyb20gJ2xleGljYWwnXG5cbmltcG9ydCB7IGNyZWF0ZUNvbW1hbmQgfSBmcm9tICdsZXhpY2FsJ1xuXG5pbXBvcnQgdHlwZSB7IExpbmtQYXlsb2FkIH0gZnJvbSAnLi4vdHlwZXMnXG5cbmV4cG9ydCBjb25zdCBUT0dHTEVfTElOS19XSVRIX01PREFMX0NPTU1BTkQ6IExleGljYWxDb21tYW5kPExpbmtQYXlsb2FkIHwgbnVsbD4gPSBjcmVhdGVDb21tYW5kKFxuICAnVE9HR0xFX0xJTktfV0lUSF9NT0RBTF9DT01NQU5EJyxcbilcbiJdLCJuYW1lcyI6WyJjcmVhdGVDb21tYW5kIiwiVE9HR0xFX0xJTktfV0lUSF9NT0RBTF9DT01NQU5EIl0sIm1hcHBpbmdzIjoiQUFFQSxTQUFTQSxhQUFhLFFBQVEsVUFBUztBQUl2QyxPQUFPLE1BQU1DLGlDQUFxRUQsY0FDaEYsa0NBQ0QifQ==
|