@jvs-milkdown/crepe 1.2.13 → 1.2.14

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 (98) hide show
  1. package/lib/cjs/builder.js +41 -2
  2. package/lib/cjs/builder.js.map +1 -1
  3. package/lib/cjs/feature/block-edit/index.js +9 -2
  4. package/lib/cjs/feature/block-edit/index.js.map +1 -1
  5. package/lib/cjs/feature/code-mirror/index.js +9 -2
  6. package/lib/cjs/feature/code-mirror/index.js.map +1 -1
  7. package/lib/cjs/feature/cursor/index.js +9 -2
  8. package/lib/cjs/feature/cursor/index.js.map +1 -1
  9. package/lib/cjs/feature/image-block/index.js +9 -2
  10. package/lib/cjs/feature/image-block/index.js.map +1 -1
  11. package/lib/cjs/feature/inline-diff/index.js +1298 -0
  12. package/lib/cjs/feature/inline-diff/index.js.map +1 -0
  13. package/lib/cjs/feature/latex/index.js +9 -2
  14. package/lib/cjs/feature/latex/index.js.map +1 -1
  15. package/lib/cjs/feature/link-tooltip/index.js +9 -2
  16. package/lib/cjs/feature/link-tooltip/index.js.map +1 -1
  17. package/lib/cjs/feature/list-item/index.js +9 -2
  18. package/lib/cjs/feature/list-item/index.js.map +1 -1
  19. package/lib/cjs/feature/placeholder/index.js +9 -2
  20. package/lib/cjs/feature/placeholder/index.js.map +1 -1
  21. package/lib/cjs/feature/table/index.js +9 -2
  22. package/lib/cjs/feature/table/index.js.map +1 -1
  23. package/lib/cjs/feature/toolbar/index.js +14 -6
  24. package/lib/cjs/feature/toolbar/index.js.map +1 -1
  25. package/lib/cjs/index.js +1255 -235
  26. package/lib/cjs/index.js.map +1 -1
  27. package/lib/esm/builder.js +41 -2
  28. package/lib/esm/builder.js.map +1 -1
  29. package/lib/esm/feature/block-edit/index.js +9 -2
  30. package/lib/esm/feature/block-edit/index.js.map +1 -1
  31. package/lib/esm/feature/code-mirror/index.js +9 -2
  32. package/lib/esm/feature/code-mirror/index.js.map +1 -1
  33. package/lib/esm/feature/cursor/index.js +9 -2
  34. package/lib/esm/feature/cursor/index.js.map +1 -1
  35. package/lib/esm/feature/image-block/index.js +9 -2
  36. package/lib/esm/feature/image-block/index.js.map +1 -1
  37. package/lib/esm/feature/inline-diff/index.js +1274 -0
  38. package/lib/esm/feature/inline-diff/index.js.map +1 -0
  39. package/lib/esm/feature/latex/index.js +9 -2
  40. package/lib/esm/feature/latex/index.js.map +1 -1
  41. package/lib/esm/feature/link-tooltip/index.js +9 -2
  42. package/lib/esm/feature/link-tooltip/index.js.map +1 -1
  43. package/lib/esm/feature/list-item/index.js +9 -2
  44. package/lib/esm/feature/list-item/index.js.map +1 -1
  45. package/lib/esm/feature/placeholder/index.js +9 -2
  46. package/lib/esm/feature/placeholder/index.js.map +1 -1
  47. package/lib/esm/feature/table/index.js +9 -2
  48. package/lib/esm/feature/table/index.js.map +1 -1
  49. package/lib/esm/feature/toolbar/index.js +14 -6
  50. package/lib/esm/feature/toolbar/index.js.map +1 -1
  51. package/lib/esm/index.js +1237 -236
  52. package/lib/esm/index.js.map +1 -1
  53. package/lib/theme/common/diff-block.css +41 -0
  54. package/lib/theme/common/inline-diff.css +142 -0
  55. package/lib/theme/common/style.css +2 -0
  56. package/lib/tsconfig.tsbuildinfo +1 -1
  57. package/lib/types/core/builder.d.ts +2 -0
  58. package/lib/types/core/builder.d.ts.map +1 -1
  59. package/lib/types/core/locale.d.ts +4 -0
  60. package/lib/types/core/locale.d.ts.map +1 -1
  61. package/lib/types/feature/diff-block/index.d.ts +10 -0
  62. package/lib/types/feature/diff-block/index.d.ts.map +1 -0
  63. package/lib/types/feature/fixed-toolbar/index.d.ts.map +1 -1
  64. package/lib/types/feature/fixed-toolbar/outline-panel.d.ts.map +1 -1
  65. package/lib/types/feature/index.d.ts +7 -1
  66. package/lib/types/feature/index.d.ts.map +1 -1
  67. package/lib/types/feature/inline-diff/change-panel.d.ts +4 -0
  68. package/lib/types/feature/inline-diff/change-panel.d.ts.map +1 -0
  69. package/lib/types/feature/inline-diff/config.d.ts +12 -0
  70. package/lib/types/feature/inline-diff/config.d.ts.map +1 -0
  71. package/lib/types/feature/inline-diff/diff-engine.d.ts +20 -0
  72. package/lib/types/feature/inline-diff/diff-engine.d.ts.map +1 -0
  73. package/lib/types/feature/inline-diff/diff-view.d.ts +2 -0
  74. package/lib/types/feature/inline-diff/diff-view.d.ts.map +1 -0
  75. package/lib/types/feature/inline-diff/doc-builder.d.ts +21 -0
  76. package/lib/types/feature/inline-diff/doc-builder.d.ts.map +1 -0
  77. package/lib/types/feature/inline-diff/index.d.ts +9 -0
  78. package/lib/types/feature/inline-diff/index.d.ts.map +1 -0
  79. package/lib/types/feature/loader.d.ts.map +1 -1
  80. package/lib/types/feature/toolbar/component.d.ts.map +1 -1
  81. package/package.json +15 -4
  82. package/src/core/builder.ts +19 -0
  83. package/src/core/locale.ts +7 -0
  84. package/src/feature/diff-block/index.ts +48 -0
  85. package/src/feature/fixed-toolbar/index.ts +58 -23
  86. package/src/feature/fixed-toolbar/outline-panel.tsx +3 -2
  87. package/src/feature/index.ts +12 -0
  88. package/src/feature/inline-diff/change-panel.ts +280 -0
  89. package/src/feature/inline-diff/config.ts +28 -0
  90. package/src/feature/inline-diff/diff-engine.ts +181 -0
  91. package/src/feature/inline-diff/diff-view.ts +2 -0
  92. package/src/feature/inline-diff/doc-builder.ts +139 -0
  93. package/src/feature/inline-diff/index.ts +514 -0
  94. package/src/feature/loader.ts +8 -0
  95. package/src/feature/toolbar/component.tsx +3 -2
  96. package/src/theme/common/diff-block.css +43 -0
  97. package/src/theme/common/inline-diff.css +148 -0
  98. package/src/theme/common/style.css +2 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../src/core/locale.ts","../../../../src/core/slice.ts","../../../../src/feature/index.ts","../../../../src/feature/inline-diff/change-panel.ts","../../../../src/feature/inline-diff/config.ts","../../../../src/feature/inline-diff/diff-engine.ts","../../../../src/feature/inline-diff/doc-builder.ts","../../../../src/feature/inline-diff/index.ts"],"sourcesContent":["import type { Ctx } from '@jvs-milkdown/kit/ctx'\n\nimport { createSlice } from '@jvs-milkdown/kit/ctx'\n\nexport const zhCN = {\n // block handle\n 'handle.add': '插入内容',\n 'handle.menu': '点击打开菜单',\n 'handle.drag': '拖拽移动位置',\n // placeholder\n 'placeholder.text': \"输入正文或 '/' 快速插入内容\",\n\n // toolbar\n 'toolbar.heading': '标题',\n 'toolbar.formatting': '格式',\n 'toolbar.function': '功能',\n 'toolbar.formatPainter': '格式刷',\n\n // menu bar\n 'menuBar.file': '文件',\n 'menuBar.edit': '编辑',\n 'menuBar.view': '视图',\n 'menuBar.insert': '插入',\n 'menuBar.format': '格式',\n\n // view menu\n 'view.outline': '大纲面板',\n 'view.outlineLeft': '在左侧显示',\n 'view.outlineRight': '在右侧显示',\n 'view.docBackground': '文档背景色',\n 'view.title': '显示标题',\n 'view.cover': '显示封面',\n 'view.editorWidth': '内容宽度',\n 'view.widthDefault': '默认',\n 'view.widthWide': '较宽',\n 'view.widthFull': '全宽',\n\n // code-mirror\n 'codeMirror.searchPlaceholder': '搜索语言',\n 'codeMirror.noResultText': '无结果',\n 'codeMirror.previewToggleOptionEdit': '编辑',\n 'codeMirror.previewToggleOptionHide': '隐藏',\n 'codeMirror.previewLabel': '预览',\n 'codeMirror.wrapText': '自动换行',\n\n // link-tooltip\n 'linkTooltip.pasteLink': '粘贴链接...',\n\n // image-block\n 'imageBlock.inlineUploadButton': '上传',\n 'imageBlock.inlineUploadPlaceholder': '或粘贴链接',\n 'imageBlock.blockUploadButton': '上传文件',\n 'imageBlock.blockUploadPlaceholder': '或粘贴链接',\n 'imageBlock.blockCaptionPlaceholder': '写下图片描述...',\n 'imageBlock.blockConfirmButton': '确定',\n\n // attachment-block\n 'attachmentBlock.uploadButton': '上传文件',\n 'attachmentBlock.uploadPlaceholderText': '或点击上传',\n 'attachmentBlock.download': '下载',\n\n // menu categories\n 'menu.group.text': '正文',\n 'menu.group.block': '段落',\n 'menu.group.list': '列表',\n 'menu.group.advanced': '高级',\n\n // menu items\n 'menu.item.text': '普通文本',\n 'menu.item.h1': '标题 1',\n 'menu.item.h2': '标题 2',\n 'menu.item.h3': '标题 3',\n 'menu.item.h4': '标题 4',\n 'menu.item.h5': '标题 5',\n 'menu.item.h6': '标题 6',\n 'menu.item.quote': '引用',\n 'menu.item.divider': '分割线',\n 'menu.item.bulletList': '无序列表',\n 'menu.item.orderedList': '有序列表',\n 'menu.item.taskList': '任务列表',\n 'menu.item.image': '图片',\n 'menu.item.attachment': '视频或文件',\n 'menu.item.code': '代码块',\n 'menu.item.table': '表格',\n 'menu.item.math': '公式',\n 'menu.item.bold': '加粗',\n 'menu.item.italic': '斜体',\n 'menu.item.strikethrough': '删除线',\n 'menu.item.underline': '下划线',\n 'menu.item.highlight': '高亮',\n 'menu.item.lineCode': '行内代码',\n 'menu.item.link': '链接',\n\n // menu tooltips\n 'menu.tooltip.text': '普通文本 (Ctrl+Alt+0)',\n 'menu.tooltip.h1': '标题 1 (Ctrl+Alt+1)\\nMarkdown: # 空格',\n 'menu.tooltip.h2': '标题 2 (Ctrl+Alt+2)\\nMarkdown: ## 空格',\n 'menu.tooltip.h3': '标题 3 (Ctrl+Alt+3)\\nMarkdown: ### 空格',\n 'menu.tooltip.h4': '标题 4 (Ctrl+Alt+4)\\nMarkdown: #### 空格',\n 'menu.tooltip.h5': '标题 5 (Ctrl+Alt+5)\\nMarkdown: ##### 空格',\n 'menu.tooltip.h6': '标题 6 (Ctrl+Alt+6)\\nMarkdown: ###### 空格',\n 'menu.tooltip.quote': '引用 (Ctrl+Shift+9)\\nMarkdown: > 空格',\n 'menu.tooltip.divider': '分割线\\nMarkdown: --- 空格',\n 'menu.tooltip.bulletList':\n '无序列表 (Ctrl+Shift+8)\\nMarkdown: - 空格 或 * 空格',\n 'menu.tooltip.orderedList': '有序列表 (Ctrl+Shift+7)\\nMarkdown: 1. 空格',\n 'menu.tooltip.taskList': '任务列表\\nMarkdown: - [ ] 空格',\n 'menu.tooltip.image': '图片\\nMarkdown: ![alt](url)',\n 'menu.tooltip.code': '代码块 (Ctrl+Shift+\\\\)\\nMarkdown: ``` 回车',\n 'menu.tooltip.table': '表格\\nMarkdown: | | |',\n 'menu.tooltip.math': '公式\\nMarkdown: $$ 回车',\n\n // custom block menu items\n 'customMenu.indentAndAlign': '缩进和对齐',\n 'customMenu.color': '颜色',\n 'customMenu.cut': '剪切',\n 'customMenu.copy': '复制',\n 'customMenu.delete': '删除',\n 'customMenu.addBelow': '在下方添加',\n 'customMenu.alignLeft': '左对齐',\n 'customMenu.alignCenter': '居中对齐',\n 'customMenu.alignRight': '右对齐',\n 'customMenu.increaseIndent': '增加缩进',\n 'customMenu.decreaseIndent': '减少缩进',\n 'customMenu.textColor': '字体颜色',\n 'customMenu.bgColor': '背景颜色',\n 'customMenu.restoreDefault': '恢复默认',\n 'customMenu.colorDefault': '默认',\n 'customMenu.colorRed': '红色',\n 'customMenu.colorOrange': '橙色',\n 'customMenu.colorYellow': '黄色',\n 'customMenu.colorGreen': '绿色',\n 'customMenu.colorBlue': '蓝色',\n 'customMenu.colorPurple': '紫色',\n 'customMenu.colorGray': '灰色',\n 'customMenu.insertTable': '插入支持富文本的表格',\n\n 'customMenu.fontDefault': '默认',\n 'font.fangSong': '仿宋',\n 'font.stFangsong': '华文仿宋',\n 'font.stSong': '华文宋体',\n 'font.stKaiti': '华文楷体',\n 'font.simSun': '宋体',\n 'font.microsoftYaHei': '微软雅黑',\n 'font.kaiTi': '楷体',\n 'font.simHei': '黑体',\n\n // latex\n 'latex.escToExit': '按 ESC 完成输入',\n 'latex.helpDoc': '查看帮助文档',\n 'latex.emptyPlaceholder': '添加 LaTeX 公式',\n 'latex.inputPlaceholder': '请输入公式',\n\n // shortcuts\n 'shortcuts.title': '键盘快捷键',\n 'shortcuts.formatting': '文本格式',\n 'shortcuts.bold': '加粗',\n 'shortcuts.italic': '斜体',\n 'shortcuts.underline': '下划线',\n 'shortcuts.strikethrough': '删除线',\n 'shortcuts.inlineCode': '行内代码',\n 'shortcuts.highlight': '高亮',\n 'shortcuts.paragraph': '段落',\n 'shortcuts.heading': '标题',\n 'shortcuts.block': '块级元素',\n 'shortcuts.codeBlock': '代码块',\n 'shortcuts.blockquote': '引用',\n 'shortcuts.orderedList': '有序列表',\n 'shortcuts.bulletList': '无序列表',\n 'shortcuts.indent': '增加缩进',\n 'shortcuts.outdent': '减少缩进',\n 'shortcuts.hardBreak': '换行',\n 'shortcuts.history': '历史记录',\n 'shortcuts.undo': '撤销',\n 'shortcuts.redo': '重做',\n\n // inline-diff\n 'inlineDiff.accept': '接受',\n 'inlineDiff.reject': '拒绝',\n}\n\nexport const enUS: typeof zhCN = {\n 'handle.add': 'Add content',\n 'handle.menu': 'Open menu',\n 'handle.drag': 'Drag to move',\n 'placeholder.text': \"Type '/' to use slash menu\",\n\n 'toolbar.heading': 'Heading',\n 'toolbar.formatting': 'Formatting',\n 'toolbar.function': 'Function',\n 'toolbar.formatPainter': 'Format Painter',\n\n 'menuBar.file': 'File',\n 'menuBar.edit': 'Edit',\n 'menuBar.view': 'View',\n 'menuBar.insert': 'Insert',\n 'menuBar.format': 'Format',\n\n 'view.outline': 'Outline Panel',\n 'view.outlineLeft': 'Show on Left',\n 'view.outlineRight': 'Show on Right',\n 'view.docBackground': 'Document Background',\n 'view.title': 'Show Title',\n 'view.cover': 'Show Cover',\n 'view.editorWidth': 'Content Width',\n 'view.widthDefault': 'Default',\n 'view.widthWide': 'Wide',\n 'view.widthFull': 'Full Width',\n\n 'codeMirror.searchPlaceholder': 'Search language',\n 'codeMirror.noResultText': 'No result',\n 'codeMirror.previewToggleOptionEdit': 'Edit',\n 'codeMirror.previewToggleOptionHide': 'Hide',\n 'codeMirror.previewLabel': 'Preview',\n 'codeMirror.wrapText': 'Wrap',\n\n 'linkTooltip.pasteLink': 'Paste link...',\n\n 'imageBlock.inlineUploadButton': 'Upload',\n 'imageBlock.inlineUploadPlaceholder': 'or paste link',\n 'imageBlock.blockUploadButton': 'Upload file',\n 'imageBlock.blockUploadPlaceholder': 'or paste link',\n 'imageBlock.blockCaptionPlaceholder': 'Write Image Caption',\n 'imageBlock.blockConfirmButton': 'Confirm',\n\n 'attachmentBlock.uploadButton': 'Upload file',\n 'attachmentBlock.uploadPlaceholderText': 'or click to upload',\n 'attachmentBlock.download': 'Download',\n\n 'menu.group.text': 'Text',\n 'menu.group.block': 'Block',\n 'menu.group.list': 'List',\n 'menu.group.advanced': 'Advanced',\n\n 'menu.item.text': 'Text',\n 'menu.item.h1': 'Heading 1',\n 'menu.item.h2': 'Heading 2',\n 'menu.item.h3': 'Heading 3',\n 'menu.item.h4': 'Heading 4',\n 'menu.item.h5': 'Heading 5',\n 'menu.item.h6': 'Heading 6',\n 'menu.item.quote': 'Quote',\n 'menu.item.divider': 'Divider',\n 'menu.item.bulletList': 'Bullet List',\n 'menu.item.orderedList': 'Ordered List',\n 'menu.item.taskList': 'Task List',\n 'menu.item.image': 'Image',\n 'menu.item.attachment': 'Video or File',\n 'menu.item.code': 'Code',\n 'menu.item.table': 'Table',\n 'menu.item.math': 'Math',\n 'menu.item.bold': 'Bold',\n 'menu.item.italic': 'Italic',\n 'menu.item.strikethrough': 'Strikethrough',\n 'menu.item.underline': 'Underline',\n 'menu.item.highlight': 'Highlight',\n 'menu.item.lineCode': 'Inline Code',\n 'menu.item.link': 'Link',\n\n 'menu.tooltip.text': 'Text (Ctrl+Alt+0)',\n 'menu.tooltip.h1': 'Heading 1 (Ctrl+Alt+1)\\nMarkdown: # Space',\n 'menu.tooltip.h2': 'Heading 2 (Ctrl+Alt+2)\\nMarkdown: ## Space',\n 'menu.tooltip.h3': 'Heading 3 (Ctrl+Alt+3)\\nMarkdown: ### Space',\n 'menu.tooltip.h4': 'Heading 4 (Ctrl+Alt+4)\\nMarkdown: #### Space',\n 'menu.tooltip.h5': 'Heading 5 (Ctrl+Alt+5)\\nMarkdown: ##### Space',\n 'menu.tooltip.h6': 'Heading 6 (Ctrl+Alt+6)\\nMarkdown: ###### Space',\n 'menu.tooltip.quote': 'Quote (Ctrl+Shift+9)\\nMarkdown: > Space',\n 'menu.tooltip.divider': 'Divider\\nMarkdown: --- Space',\n 'menu.tooltip.bulletList':\n 'Bullet List (Ctrl+Shift+8)\\nMarkdown: - Space or * Space',\n 'menu.tooltip.orderedList': 'Ordered List (Ctrl+Shift+7)\\nMarkdown: 1. Space',\n 'menu.tooltip.taskList': 'Task List\\nMarkdown: - [ ] Space',\n 'menu.tooltip.image': 'Image\\nMarkdown: ![alt](url)',\n 'menu.tooltip.code': 'Code Block (Ctrl+Shift+\\\\)\\nMarkdown: ``` Enter',\n 'menu.tooltip.table': 'Table\\nMarkdown: | | |',\n 'menu.tooltip.math': 'Math\\nMarkdown: $$ Enter',\n\n 'customMenu.indentAndAlign': 'Indent & Align',\n 'customMenu.color': 'Color',\n 'customMenu.cut': 'Cut',\n 'customMenu.copy': 'Copy',\n 'customMenu.delete': 'Delete',\n 'customMenu.addBelow': 'Add below',\n 'customMenu.alignLeft': 'Align Left',\n 'customMenu.alignCenter': 'Align Center',\n 'customMenu.alignRight': 'Align Right',\n 'customMenu.increaseIndent': 'Increase Indent',\n 'customMenu.decreaseIndent': 'Decrease Indent',\n 'customMenu.textColor': 'Text Color',\n 'customMenu.bgColor': 'Background Color',\n 'customMenu.restoreDefault': 'Restore Default',\n 'customMenu.colorDefault': 'Default',\n 'customMenu.colorRed': 'Red',\n 'customMenu.colorOrange': 'Orange',\n 'customMenu.colorYellow': 'Yellow',\n 'customMenu.colorGreen': 'Green',\n 'customMenu.colorBlue': 'Blue',\n 'customMenu.colorPurple': 'Purple',\n 'customMenu.colorGray': 'Gray',\n 'customMenu.insertTable': 'Insert Table',\n\n 'customMenu.fontDefault': 'Default',\n 'font.fangSong': 'FangSong',\n 'font.stFangsong': 'STFangsong',\n 'font.stSong': 'STSong',\n 'font.stKaiti': 'STKaiti',\n 'font.simSun': 'SimSun',\n 'font.microsoftYaHei': 'Microsoft YaHei',\n 'font.kaiTi': 'KaiTi',\n 'font.simHei': 'SimHei',\n\n 'latex.escToExit': 'Press ESC to finish',\n 'latex.helpDoc': 'Help Doc',\n 'latex.emptyPlaceholder': 'Add LaTeX',\n 'latex.inputPlaceholder': 'Please enter formula',\n\n 'shortcuts.title': 'Keyboard Shortcuts',\n 'shortcuts.formatting': 'Text Formatting',\n 'shortcuts.bold': 'Bold',\n 'shortcuts.italic': 'Italic',\n 'shortcuts.underline': 'Underline',\n 'shortcuts.strikethrough': 'Strikethrough',\n 'shortcuts.inlineCode': 'Inline Code',\n 'shortcuts.highlight': 'Highlight',\n 'shortcuts.paragraph': 'Paragraph',\n 'shortcuts.heading': 'Heading',\n 'shortcuts.block': 'Block Elements',\n 'shortcuts.codeBlock': 'Code Block',\n 'shortcuts.blockquote': 'Blockquote',\n 'shortcuts.orderedList': 'Ordered List',\n 'shortcuts.bulletList': 'Bullet List',\n 'shortcuts.indent': 'Indent',\n 'shortcuts.outdent': 'Outdent',\n 'shortcuts.hardBreak': 'Hard Break',\n 'shortcuts.history': 'History',\n 'shortcuts.undo': 'Undo',\n 'shortcuts.redo': 'Redo',\n\n 'inlineDiff.accept': 'Accept',\n 'inlineDiff.reject': 'Reject',\n}\n\nexport type CrepeTranslations = typeof zhCN\n\nexport const translationsCtx = createSlice<\n Record<string, Partial<CrepeTranslations>>\n>(\n {\n 'zh-CN': zhCN,\n 'en-US': enUS,\n },\n 'translationsCtx'\n)\n\nexport const localeCtx = createSlice('zh-CN', 'localeCtx')\n\nexport function i18n(ctx: Ctx, key: keyof CrepeTranslations): string {\n const translations = ctx.get(translationsCtx)\n const locale = ctx.get(localeCtx)\n return (\n translations[locale]?.[key] ??\n translations['zh-CN']?.[key] ??\n enUS[key] ??\n key\n )\n}\n","import { createSlice, type Ctx } from '@jvs-milkdown/kit/ctx'\n\nimport type { CrepeFeature } from '../feature'\nimport type { CrepeBuilder } from './builder'\n\n/// @internal\n/// The feature flags context.\n/// ⚠️ Most of the time, you should use `useCrepeFeatures` to get the features.\nexport const FeaturesCtx = createSlice([] as CrepeFeature[], 'FeaturesCtx')\n\n/// @internal\n/// The crepe editor context.\n/// ⚠️ Most of the time, you should use `useCrepe` to get the crepe editor instance.\nexport const CrepeCtx = createSlice({} as CrepeBuilder, 'CrepeCtx')\n\n/// The crepe editor context.\n/// You can use this context to access the crepe editor instance within Milkdown plugins.\n/// ```ts\n/// import { crepeCtx } from '@jvs-milkdown/crepe'\n/// const plugin = (ctx: Ctx) => {\n/// return () => {\n/// const crepe = useCrepe(ctx)\n/// crepe.setReadonly(true)\n/// }\n/// }\n/// ```\nexport function useCrepe(ctx: Ctx) {\n // We should use string slice here to avoid the slice to be bundled in multiple entries\n return ctx.get<CrepeBuilder, 'CrepeCtx'>('CrepeCtx')\n}\n\n/// Check the enabled FeatureFlags\n/// ```ts\n/// import { useCrepeFeatures } from '@jvs-milkdown/crepe'\n/// const plugin = (ctx: Ctx) => {\n/// const features = useCrepeFeatures(ctx)\n/// if (features.get().includes(CrepeFeature.CodeMirror)) {\n/// // Do something with CodeMirror\n/// }\n/// }\nexport function useCrepeFeatures(ctx: Ctx) {\n // We should use string slice here to avoid the slice to be bundled in multiple entries\n return ctx.use<CrepeFeature[], 'FeaturesCtx'>('FeaturesCtx')\n}\n\n/// @internal\nexport function crepeFeatureConfig(feature: CrepeFeature) {\n return (ctx: Ctx) => {\n useCrepeFeatures(ctx).update((features) => {\n if (features.includes(feature)) {\n return features\n }\n return [...features, feature]\n })\n }\n}\n\nexport { localeCtx, translationsCtx } from './locale'\n","import type { AttachmentFeatureConfig } from './attachment/config'\nimport type { BlockEditFeatureConfig } from './block-edit'\nimport type { CodeMirrorFeatureConfig } from './code-mirror'\nimport type { CursorFeatureConfig } from './cursor'\nimport type { DiffBlockFeatureConfig } from './diff-block'\nimport type { FixedToolbarFeatureConfig } from './fixed-toolbar'\nimport type { ImageBlockFeatureConfig } from './image-block'\nimport type { InlineDiffFeatureConfig } from './inline-diff'\nimport type { LatexFeatureConfig } from './latex'\nimport type { LinkTooltipFeatureConfig } from './link-tooltip'\nimport type { ListItemFeatureConfig } from './list-item'\nimport type { PlaceholderFeatureConfig } from './placeholder'\nimport type { TableFeatureConfig } from './table'\nimport type { ToolbarFeatureConfig } from './toolbar'\n\n/// The crepe editor feature flags.\n/// Every feature is enabled by default.\n/// Every feature is a string literal type.\nexport enum CrepeFeature {\n /// Syntax highlighting and editing for code blocks with language support, theme customization, and preview capabilities.\n CodeMirror = 'code-mirror',\n\n /// Support for bullet lists, ordered lists, and todo lists with customizable icons and formatting.\n ListItem = 'list-item',\n\n /// Enhanced link editing and preview with customizable tooltips, edit/remove actions, and copy functionality.\n LinkTooltip = 'link-tooltip',\n\n /// Enhanced cursor experience with drop cursor and gap cursor for better content placement.\n Cursor = 'cursor',\n\n /// Image upload and management with resizing, captions, and support for both inline and block images.\n ImageBlock = 'image-block',\n\n /// Drag-and-drop block management and slash commands for quick content insertion and organization.\n BlockEdit = 'block-edit',\n\n /// Formatting toolbar for selected text with customizable icons and actions.\n Toolbar = 'toolbar',\n\n /// Fixed formatting toolbar that is always visible at the top of the editor.\n FixedToolbar = 'fixed-toolbar',\n\n /// Document or block level placeholders to guide users when content is empty.\n Placeholder = 'placeholder',\n\n /// Full-featured table editing with row/column management, alignment options, and drag-and-drop functionality.\n Table = 'table',\n\n /// Mathematical formula support with both inline and block math rendering using KaTeX.\n Latex = 'latex',\n\n /// File attachment uploads\n Attachment = 'attachment',\n\n /// Inline diff comparison between two document versions, similar to Word track changes.\n InlineDiff = 'inline-diff',\n\n /// Diff comparison block for showing code differences\n DiffBlock = 'diff-block',\n}\n\nexport interface CrepeFeatureConfig {\n [CrepeFeature.Cursor]?: CursorFeatureConfig\n [CrepeFeature.ListItem]?: ListItemFeatureConfig\n [CrepeFeature.LinkTooltip]?: LinkTooltipFeatureConfig\n [CrepeFeature.ImageBlock]?: ImageBlockFeatureConfig\n [CrepeFeature.BlockEdit]?: BlockEditFeatureConfig\n [CrepeFeature.Placeholder]?: PlaceholderFeatureConfig\n [CrepeFeature.Toolbar]?: ToolbarFeatureConfig\n [CrepeFeature.FixedToolbar]?: FixedToolbarFeatureConfig\n [CrepeFeature.CodeMirror]?: CodeMirrorFeatureConfig\n [CrepeFeature.Table]?: TableFeatureConfig\n [CrepeFeature.Latex]?: LatexFeatureConfig\n [CrepeFeature.Attachment]?: AttachmentFeatureConfig\n [CrepeFeature.InlineDiff]?: InlineDiffFeatureConfig\n [CrepeFeature.DiffBlock]?: DiffBlockFeatureConfig\n}\n\nexport const defaultFeatures: Record<CrepeFeature, boolean> = {\n [CrepeFeature.Cursor]: true,\n [CrepeFeature.ListItem]: true,\n [CrepeFeature.LinkTooltip]: true,\n [CrepeFeature.ImageBlock]: true,\n [CrepeFeature.BlockEdit]: true,\n [CrepeFeature.Placeholder]: true,\n [CrepeFeature.Toolbar]: true,\n [CrepeFeature.FixedToolbar]: true,\n [CrepeFeature.CodeMirror]: true,\n [CrepeFeature.Table]: true,\n [CrepeFeature.Latex]: true,\n [CrepeFeature.Attachment]: true,\n [CrepeFeature.InlineDiff]: false,\n [CrepeFeature.DiffBlock]: true,\n}\n","import { createApp, h, ref, computed, type App as VueApp } from 'vue'\n\nimport type { ChangeInfo, ChangeType } from './doc-builder'\n\ntype FilterTab = 'all' | ChangeType\n\nconst typeLabels: Record<ChangeType, string> = {\n added: '新增',\n removed: '删除',\n}\n\nconst typeColors: Record<ChangeType, string> = {\n added: '#4caf50',\n removed: '#c0392b',\n}\nexport function mountChangePanel(\n container: HTMLElement,\n changes: ChangeInfo[],\n onNavigate: (from: number) => void,\n onClose?: () => void\n): VueApp {\n const app = createApp({\n setup() {\n const activeTab = ref<FilterTab>('all')\n\n const filteredChanges = computed(() => {\n if (activeTab.value === 'all') return changes\n return changes.filter((c) => c.type === activeTab.value)\n })\n\n const counts = computed(() => ({\n all: changes.length,\n removed: changes.filter((c) => c.type === 'removed').length,\n added: changes.filter((c) => c.type === 'added').length,\n }))\n\n function renderTab(tab: FilterTab, label: string) {\n const isActive = activeTab.value === tab\n return h(\n 'button',\n {\n style: {\n padding: '6px 10px',\n border: 'none',\n background: 'none',\n cursor: 'pointer',\n fontSize: '12px',\n color: isActive ? '#1890ff' : '#666',\n borderBottom: isActive\n ? '2px solid #1890ff'\n : '2px solid transparent',\n },\n onClick: () => {\n activeTab.value = tab\n },\n },\n label\n )\n }\n\n function renderItem(change: ChangeInfo, index: number) {\n const color = typeColors[change.type]\n const children: ReturnType<typeof h>[] = [\n h('div', { style: { marginBottom: '4px' } }, [\n h(\n 'span',\n {\n style: {\n display: 'inline-block',\n padding: '1px 6px',\n borderRadius: '3px',\n color: '#fff',\n fontSize: '11px',\n fontWeight: '500',\n backgroundColor: color,\n },\n },\n `${index} ${typeLabels[change.type]}`\n ),\n ]),\n ]\n\n if (change.oldText) {\n children.push(\n h(\n 'div',\n {\n style: {\n marginTop: '3px',\n fontSize: '12px',\n lineHeight: '1.5',\n color: '#555',\n wordBreak: 'break-all',\n },\n },\n [\n h(\n 'span',\n { style: { color: '#999', fontSize: '11px' } },\n '原文: '\n ),\n h('span', null, change.oldText),\n ]\n )\n )\n }\n if (change.newText) {\n children.push(\n h(\n 'div',\n {\n style: {\n marginTop: '3px',\n fontSize: '12px',\n lineHeight: '1.5',\n wordBreak: 'break-all',\n },\n },\n [\n h(\n 'span',\n { style: { color: '#999', fontSize: '11px' } },\n '差异: '\n ),\n h('span', { style: { color } }, change.newText),\n ]\n )\n )\n }\n\n return h(\n 'div',\n {\n style: {\n padding: '8px 10px',\n borderRadius: '4px',\n marginBottom: '6px',\n background: 'rgba(0,0,0,0.02)',\n border: '1px solid #eee',\n cursor: change.from > 0 ? 'pointer' : 'default',\n },\n onClick: () => {\n if (change.from > 0) onNavigate(change.from)\n },\n },\n children\n )\n }\n\n return () =>\n h(\n 'div',\n {\n style: {\n width: '100%',\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n backgroundColor: 'var(--crepe-color-surface, #fff)',\n boxSizing: 'border-box',\n fontFamily:\n '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\n fontSize: '13px',\n color: 'var(--crepe-color-on-surface, #333)',\n overflow: 'hidden',\n },\n },\n [\n // Header\n h(\n 'div',\n {\n style: {\n padding: '12px 16px',\n fontSize: '14px',\n fontWeight: 'bold',\n borderBottom:\n '1px solid var(--crepe-color-outline-variant, color-mix(in srgb, var(--crepe-color-outline, #ddd), transparent 80%))',\n color: 'var(--crepe-color-on-surface, #333)',\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n flexShrink: 0,\n },\n },\n [\n h('span', null, '文档差异变更'),\n onClose\n ? h(\n 'div',\n {\n style: {\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: '24px',\n height: '24px',\n borderRadius: '4px',\n color: 'var(--crepe-color-outline, #999)',\n transition: 'background-color 0.2s, color 0.2s',\n },\n onClick: onClose,\n onMouseenter: (e: MouseEvent) => {\n const target = e.currentTarget as HTMLElement\n target.style.backgroundColor =\n 'var(--crepe-color-hover, rgba(0,0,0,0.05))'\n target.style.color =\n 'var(--crepe-color-on-surface, #333)'\n },\n onMouseleave: (e: MouseEvent) => {\n const target = e.currentTarget as HTMLElement\n target.style.backgroundColor = 'transparent'\n target.style.color =\n 'var(--crepe-color-outline, #999)'\n },\n title: '关闭差异',\n },\n [\n h(\n 'svg',\n {\n width: '16',\n height: '16',\n viewBox: '0 0 24 24',\n fill: 'none',\n stroke: 'currentColor',\n strokeWidth: '2',\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n },\n [\n h('line', { x1: '18', y1: '6', x2: '6', y2: '18' }),\n h('line', { x1: '6', y1: '6', x2: '18', y2: '18' }),\n ]\n ),\n ]\n )\n : null,\n ]\n ),\n // Tabs\n h(\n 'div',\n {\n style: {\n display: 'flex',\n borderBottom: '1px solid #eee',\n padding: '0 8px',\n flexShrink: 0,\n },\n },\n [\n renderTab('all', `全部(${counts.value.all})`),\n renderTab('removed', `删除(${counts.value.removed})`),\n renderTab('added', `新增(${counts.value.added})`),\n ]\n ),\n // List\n h(\n 'div',\n {\n style: {\n flex: 1,\n overflowY: 'auto',\n padding: '8px',\n },\n },\n filteredChanges.value.map((change, i) =>\n renderItem(change, i + 1)\n )\n ),\n ]\n )\n },\n })\n\n app.mount(container)\n return app\n}\n","import { $ctx } from '@jvs-milkdown/kit/utils'\n\nexport interface InlineDiffConfig {\n addedClass: string\n deletedClass: string\n}\n\nexport interface InlineDiffApi {\n showDiff: (oldMarkdown: string, newMarkdown?: string) => void\n hideDiff: () => void\n isShowing: () => boolean\n}\n\nexport const inlineDiffConfig = $ctx(\n {\n addedClass: 'crepe-diff-added',\n deletedClass: 'crepe-diff-deleted',\n } as InlineDiffConfig,\n 'inlineDiffConfigCtx'\n)\n\nconst noopApi: InlineDiffApi = {\n showDiff: () => {},\n hideDiff: () => {},\n isShowing: () => false,\n}\n\nexport const inlineDiffApiCtx = $ctx(noopApi, 'inlineDiffApiCtx')\n","import type { Node as PMNode } from '@jvs-milkdown/kit/prose/model'\n\nimport * as Diff from 'diff'\n\nexport type DiffType = 'unchanged' | 'added' | 'removed'\n\nexport interface CharPart {\n type: 'equal' | 'insert' | 'delete'\n value: string\n}\n\nexport interface BlockDiff {\n type: DiffType\n oldNode?: PMNode\n newNode?: PMNode\n parts?: CharPart[]\n}\n\nexport type ChunkStatus = 'pending' | 'accepted' | 'rejected'\n\nexport interface DiffChunk {\n id: string\n diffs: BlockDiff[]\n status: ChunkStatus\n}\n\nfunction lcs<T>(\n a: T[],\n b: T[],\n eq: (x: T, y: T) => boolean\n): [number, number][] {\n const m = a.length\n const n = b.length\n const dp: number[][] = Array.from({ length: m + 1 }, () =>\n Array.from({ length: n + 1 }, () => 0)\n )\n\n for (let i = m - 1; i >= 0; i--) {\n for (let j = n - 1; j >= 0; j--) {\n const diag = dp[i + 1]?.[j + 1] ?? 0\n const down = dp[i + 1]?.[j] ?? 0\n const right = dp[i]?.[j + 1] ?? 0\n dp[i]![j] = eq(a[i]!, b[j]!) ? 1 + diag : Math.max(down, right)\n }\n }\n\n const pairs: [number, number][] = []\n let i = 0\n let j = 0\n while (i < m && j < n) {\n const down = dp[i + 1]?.[j] ?? 0\n const right = dp[i]?.[j + 1] ?? 0\n if (eq(a[i]!, b[j]!)) {\n pairs.push([i, j])\n i++\n j++\n } else if (down >= right) {\n i++\n } else {\n j++\n }\n }\n return pairs\n}\n\nexport function computeDiff(\n oldBlocks: PMNode[],\n newBlocks: PMNode[]\n): DiffChunk[] {\n const result: DiffChunk[] = []\n let chunkCounter = 0\n\n const pushChunk = (diffs: BlockDiff[]) => {\n if (diffs.length > 0) {\n result.push({\n id: `chunk-${chunkCounter++}`,\n diffs,\n status: 'pending',\n })\n }\n }\n\n const pairs = lcs(\n oldBlocks,\n newBlocks,\n (a, b) => a.textContent === b.textContent\n )\n\n let oi = 0\n let ni = 0\n\n for (const [pi, pj] of pairs) {\n // Pair up unmatched blocks in the gap before this LCS match\n const gapOld = pi - oi\n const gapNew = pj - ni\n const gapMax = Math.max(gapOld, gapNew)\n\n for (let k = 0; k < gapMax; k++) {\n const hasOld = oi + k < pi\n const hasNew = ni + k < pj\n const currentDiffs: BlockDiff[] = []\n\n if (hasOld && hasNew) {\n const oldNode = oldBlocks[oi + k]!\n const newNode = newBlocks[ni + k]!\n const changes = Diff.diffWordsWithSpace(\n oldNode.textContent,\n newNode.textContent\n )\n const parts: CharPart[] = changes.map((c) => ({\n type: c.added ? 'insert' : c.removed ? 'delete' : 'equal',\n value: c.value,\n }))\n currentDiffs.push({ type: 'removed', oldNode, parts })\n currentDiffs.push({ type: 'added', newNode, parts })\n } else if (hasOld) {\n currentDiffs.push({ type: 'removed', oldNode: oldBlocks[oi + k]! })\n } else {\n currentDiffs.push({ type: 'added', newNode: newBlocks[ni + k]! })\n }\n pushChunk(currentDiffs)\n }\n\n // LCS match itself\n const oldNode = oldBlocks[pi]!\n const newNode = newBlocks[pj]!\n\n if (oldNode.textContent === newNode.textContent && oldNode.eq(newNode)) {\n pushChunk([{ type: 'unchanged', oldNode, newNode }])\n } else {\n const changes = Diff.diffWordsWithSpace(\n oldNode.textContent,\n newNode.textContent\n )\n const parts: CharPart[] = changes.map((c) => ({\n type: c.added ? 'insert' : c.removed ? 'delete' : 'equal',\n value: c.value,\n }))\n pushChunk([\n { type: 'removed', oldNode, parts },\n { type: 'added', newNode, parts },\n ])\n }\n\n oi = pi + 1\n ni = pj + 1\n }\n\n // Trailing gap\n const trailOld = oldBlocks.length - oi\n const trailNew = newBlocks.length - ni\n const trailMax = Math.max(trailOld, trailNew)\n\n for (let k = 0; k < trailMax; k++) {\n const hasOld = oi + k < oldBlocks.length\n const hasNew = ni + k < newBlocks.length\n const currentDiffs: BlockDiff[] = []\n\n if (hasOld && hasNew) {\n const oldNode = oldBlocks[oi + k]!\n const newNode = newBlocks[ni + k]!\n const changes = Diff.diffWordsWithSpace(\n oldNode.textContent,\n newNode.textContent\n )\n const parts: CharPart[] = changes.map((c) => ({\n type: c.added ? 'insert' : c.removed ? 'delete' : 'equal',\n value: c.value,\n }))\n currentDiffs.push({ type: 'removed', oldNode, parts })\n currentDiffs.push({ type: 'added', newNode, parts })\n } else if (hasOld) {\n currentDiffs.push({ type: 'removed', oldNode: oldBlocks[oi + k]! })\n } else {\n currentDiffs.push({ type: 'added', newNode: newBlocks[ni + k]! })\n }\n pushChunk(currentDiffs)\n }\n\n return result\n}\n","import type { Schema, Node as PMNode } from '@jvs-milkdown/kit/prose/model'\n\nimport type { DiffChunk, CharPart } from './diff-engine'\n\nexport type ChangeType = 'added' | 'removed'\n\nexport interface ContentRange {\n from: number\n to: number\n}\n\nexport interface ChangeInfo {\n type: ChangeType\n from: number\n oldText: string\n newText: string\n blockRange: ContentRange\n inlineRanges: ContentRange[]\n chunkId: string\n}\n\ninterface PendingChange {\n type: ChangeType\n childIndex: number\n oldText: string\n newText: string\n parts?: CharPart[]\n chunkId: string\n}\n\nexport function buildNewDoc(\n chunks: DiffChunk[],\n schema: Schema\n): { doc: PMNode; changes: ChangeInfo[] } {\n const children: PMNode[] = []\n const pending: PendingChange[] = []\n\n for (const chunk of chunks) {\n if (chunk.status === 'accepted') {\n for (const diff of chunk.diffs) {\n if (diff.type === 'added') children.push(diff.newNode!)\n if (diff.type === 'unchanged') children.push(diff.newNode!)\n }\n } else if (chunk.status === 'rejected') {\n for (const diff of chunk.diffs) {\n if (diff.type === 'removed') children.push(diff.oldNode!)\n if (diff.type === 'unchanged') children.push(diff.oldNode!)\n }\n } else {\n // pending\n for (const diff of chunk.diffs) {\n if (diff.type === 'unchanged') {\n children.push(diff.newNode!)\n } else if (diff.type === 'added') {\n pending.push({\n type: 'added',\n childIndex: children.length,\n oldText: '',\n newText: diff.newNode?.textContent ?? '',\n parts: diff.parts,\n chunkId: chunk.id,\n })\n children.push(diff.newNode!)\n } else if (diff.type === 'removed') {\n pending.push({\n type: 'removed',\n childIndex: children.length,\n oldText: diff.oldNode?.textContent ?? '',\n newText: '',\n parts: diff.parts,\n chunkId: chunk.id,\n })\n children.push(diff.oldNode!)\n }\n }\n }\n }\n\n if (children.length === 0) {\n children.push(schema.node('paragraph', null, []))\n }\n\n const doc = schema.node('doc', null, children)\n\n let pos = 0\n const positions: ContentRange[] = []\n for (const child of children) {\n positions.push({ from: pos, to: pos + child.nodeSize })\n pos += child.nodeSize\n }\n\n const changes: ChangeInfo[] = pending.map((pc) => {\n const cp = positions[pc.childIndex]!\n\n const inlineRanges: ContentRange[] = []\n let offset = cp.from + 1\n\n if (pc.type === 'removed') {\n for (const part of pc.parts ?? []) {\n if (part.type === 'delete') {\n inlineRanges.push({ from: offset, to: offset + part.value.length })\n offset += part.value.length\n } else if (part.type === 'equal') {\n offset += part.value.length\n }\n }\n return {\n type: 'removed',\n from: cp.from,\n oldText: pc.oldText,\n newText: '',\n blockRange: { from: cp.from, to: cp.to },\n inlineRanges,\n chunkId: pc.chunkId,\n }\n }\n\n // pc.type === 'added'\n for (const part of pc.parts ?? []) {\n if (part.type === 'insert') {\n inlineRanges.push({ from: offset, to: offset + part.value.length })\n offset += part.value.length\n } else if (part.type === 'equal') {\n offset += part.value.length\n }\n }\n return {\n type: 'added',\n from: cp.from,\n oldText: '',\n newText: pc.newText,\n blockRange: { from: cp.from, to: cp.to },\n inlineRanges,\n chunkId: pc.chunkId,\n }\n })\n\n return { doc, changes }\n}\n","import type { Ctx } from '@jvs-milkdown/kit/ctx'\nimport type { Node as PMNode } from '@jvs-milkdown/kit/prose/model'\nimport type { PluginView } from '@jvs-milkdown/kit/prose/state'\nimport type { EditorView } from '@jvs-milkdown/kit/prose/view'\n\nimport { parserCtx } from '@jvs-milkdown/kit/core'\nimport { Plugin, PluginKey } from '@jvs-milkdown/kit/prose/state'\nimport { Decoration, DecorationSet } from '@jvs-milkdown/kit/prose/view'\nimport { $prose } from '@jvs-milkdown/kit/utils'\n\nimport type { DefineFeature } from '../shared'\n\nimport { i18n } from '../../core/locale'\nimport { crepeFeatureConfig } from '../../core/slice'\nimport { CrepeFeature } from '../index'\nimport { mountChangePanel } from './change-panel'\nimport {\n inlineDiffConfig,\n inlineDiffApiCtx,\n type InlineDiffConfig,\n type InlineDiffApi,\n} from './config'\nimport { computeDiff, type DiffChunk } from './diff-engine'\nimport { buildNewDoc, type ChangeInfo } from './doc-builder'\n\nexport type InlineDiffFeatureConfig = Partial<InlineDiffConfig>\n\nexport { inlineDiffApiCtx, type InlineDiffApi }\n\nexport const inlineDiffKey = new PluginKey('CREPE_INLINE_DIFF')\n\nconst PANEL_WIDTH = 280\n\nlet sharedDecorationSet = DecorationSet.empty\n\nclass InlineDiffView implements PluginView {\n #ctx: Ctx\n #view: EditorView\n #isActive = false\n #panelApp: ReturnType<typeof mountChangePanel> | null = null\n #panelContainer: HTMLElement | null = null\n #resizeObserver: ResizeObserver | null = null\n #scrollContainers: Element[] = []\n #updateGeometry: (() => void) | null = null\n #originalEditable: ((state: any) => boolean) | null = null\n #chunks: DiffChunk[] = []\n #schema: any = null\n\n constructor(ctx: Ctx, view: EditorView) {\n this.#ctx = ctx\n this.#view = view\n\n const api: InlineDiffApi = {\n showDiff: (oldMd: string, newMd?: string) => this.showDiff(oldMd, newMd),\n hideDiff: () => this.hideDiff(),\n isShowing: () => this.#isActive,\n }\n ctx.set(inlineDiffApiCtx.key, api)\n }\n\n showDiff = (oldMarkdown: string, newMarkdown?: string): void => {\n if (this.#isActive) return\n\n const parser = this.#ctx.get(parserCtx)\n this.#schema = this.#view.state.schema\n\n let oldDoc: PMNode\n let newDoc: PMNode\n try {\n oldDoc = parser(oldMarkdown)\n if (typeof newMarkdown === 'string' && newMarkdown.trim() !== '') {\n newDoc = parser(newMarkdown)\n } else {\n newDoc = this.#view.state.doc\n }\n } catch {\n return\n }\n\n const oldBlocks: PMNode[] = []\n const newBlocks: PMNode[] = []\n oldDoc.forEach((node) => oldBlocks.push(node))\n newDoc.forEach((node) => newBlocks.push(node))\n\n this.#chunks = computeDiff(oldBlocks, newBlocks)\n\n const { changes } = buildNewDoc(this.#chunks, this.#schema)\n if (changes.length === 0) {\n return\n }\n\n if (!this.#originalEditable) {\n this.#originalEditable =\n (this.#view.someProp('editable') as any) || (() => true)\n }\n this.#view.setProps({\n editable: () => false,\n })\n\n this.#isActive = true\n this.#render(true)\n }\n\n #render = (initPanel = false) => {\n const { doc: newDocWithPos, changes } = buildNewDoc(\n this.#chunks,\n this.#schema\n )\n const acceptText = i18n(this.#ctx, 'inlineDiff.accept')\n const rejectText = i18n(this.#ctx, 'inlineDiff.reject')\n\n const ds = buildDecorations(\n newDocWithPos,\n changes,\n (id) => this.acceptChunk(id),\n (id) => this.rejectChunk(id),\n acceptText,\n rejectText\n )\n sharedDecorationSet = ds\n\n const tr = this.#view.state.tr.replaceWith(\n 0,\n this.#view.state.doc.content.size,\n newDocWithPos.content\n )\n this.#view.dispatch(tr)\n\n if (initPanel) {\n this.#createPanel(changes)\n } else if (this.#panelApp) {\n this.#createPanel(changes)\n }\n }\n\n acceptChunk = (id: string) => {\n const chunk = this.#chunks.find((c) => c.id === id)\n if (chunk) {\n chunk.status = 'accepted'\n const hasPending = this.#chunks.some(\n (c) =>\n c.status === 'pending' && c.diffs.some((d) => d.type !== 'unchanged')\n )\n if (!hasPending) {\n this.hideDiff()\n } else {\n this.#render()\n }\n }\n }\n\n rejectChunk = (id: string) => {\n const chunk = this.#chunks.find((c) => c.id === id)\n if (chunk) {\n chunk.status = 'rejected'\n const hasPending = this.#chunks.some(\n (c) =>\n c.status === 'pending' && c.diffs.some((d) => d.type !== 'unchanged')\n )\n if (!hasPending) {\n this.hideDiff()\n } else {\n this.#render()\n }\n }\n }\n\n hideDiff = (): void => {\n if (!this.#isActive) return\n this.#removePanel()\n\n for (const chunk of this.#chunks) {\n if (chunk.status === 'pending') {\n chunk.status = 'accepted'\n }\n }\n\n const { doc: finalDoc } = buildNewDoc(this.#chunks, this.#schema)\n const tr = this.#view.state.tr.replaceWith(\n 0,\n this.#view.state.doc.content.size,\n finalDoc.content\n )\n\n sharedDecorationSet = DecorationSet.empty\n this.#isActive = false\n this.#chunks = []\n\n this.#view.dispatch(tr)\n\n if (this.#originalEditable) {\n this.#view.setProps({\n editable: this.#originalEditable,\n })\n this.#originalEditable = null\n } else {\n this.#view.setProps({\n editable: () => true,\n })\n }\n }\n\n update = (view: EditorView) => {\n this.#view = view\n }\n\n destroy = () => {\n this.#removePanel()\n }\n\n #scrollTo(pos: number) {\n try {\n const view = this.#view\n const coords = view.coordsAtPos(pos)\n\n let scrollTarget: HTMLElement | null = view.dom as HTMLElement\n while (scrollTarget) {\n const { overflowY } = getComputedStyle(scrollTarget)\n if (\n (overflowY === 'auto' || overflowY === 'scroll') &&\n scrollTarget.scrollHeight > scrollTarget.clientHeight\n ) {\n break\n }\n scrollTarget = scrollTarget.parentElement\n }\n\n if (scrollTarget) {\n const targetRect = scrollTarget.getBoundingClientRect()\n const scrollOffset =\n coords.top - targetRect.top + scrollTarget.scrollTop - 60\n scrollTarget.scrollTo({ top: scrollOffset, behavior: 'smooth' })\n } else {\n window.scrollTo({\n top: coords.top + window.scrollY - 100,\n behavior: 'smooth',\n })\n }\n } catch {\n // ignore\n }\n }\n\n #createPanel(changes: ChangeInfo[]) {\n this.#removePanel()\n\n const editorContainer = this.#view.dom.parentElement\n if (!editorContainer) return\n const root = editorContainer.parentElement\n if (!root) return\n\n // Create fixed-positioned container — same pattern as outline panel\n const container = document.createElement('div')\n container.style.position = 'fixed'\n container.style.zIndex = '100'\n container.style.width = `${PANEL_WIDTH}px`\n container.style.overflow = 'hidden'\n container.style.borderLeft =\n '1px solid var(--crepe-color-outline-variant, color-mix(in srgb, var(--crepe-color-outline, #ddd), transparent 80%))'\n container.style.backgroundColor = 'var(--crepe-color-surface, #fff)'\n root.appendChild(container)\n this.#panelContainer = container\n\n // Push editor content left to make room for panel\n editorContainer.style.paddingRight = `${PANEL_WIDTH}px`\n\n this.#panelApp = mountChangePanel(\n container,\n changes,\n (from) => this.#scrollTo(from),\n () => this.hideDiff()\n )\n\n // Geometry: compute top/right/height to align with editor area\n this.#updateGeometry = () => {\n const rootRect = root.getBoundingClientRect()\n let top = rootRect.top\n\n const toolbar = root.querySelector(\n '.milkdown-fixed-toolbar'\n ) as HTMLElement | null\n if (toolbar && toolbar.offsetHeight > 0) {\n const toolbarRect = toolbar.getBoundingClientRect()\n top = Math.max(top, toolbarRect.bottom)\n }\n\n const coverEl = root.querySelector(\n '.milkdown-document-cover'\n ) as HTMLElement | null\n if (coverEl && coverEl.offsetHeight > 0) {\n top = Math.max(top, coverEl.getBoundingClientRect().bottom)\n }\n\n let height = window.innerHeight - top\n if (top + height > rootRect.bottom) {\n height = Math.max(0, rootRect.bottom - top)\n }\n container.style.top = `${top}px`\n container.style.height = `${height}px`\n container.style.left = 'auto'\n\n let baseOffset = window.innerWidth - rootRect.right\n let rightOffset = baseOffset\n let hasVScroll = false\n if (document.documentElement.scrollHeight > window.innerHeight) {\n hasVScroll = true\n }\n let parent: HTMLElement | null = root\n while (parent && parent !== document.body) {\n const { overflowY } = getComputedStyle(parent)\n if (overflowY === 'auto' || overflowY === 'scroll') {\n if (parent.scrollHeight > parent.clientHeight) {\n hasVScroll = true\n break\n }\n }\n parent = parent.parentElement\n }\n if (hasVScroll) {\n rightOffset = Math.max(rightOffset, 32)\n } else {\n rightOffset = Math.max(rightOffset, 0)\n }\n container.style.right = `${rightOffset}px`\n\n // Ensure paddingRight is set to accommodate the differences panel\n editorContainer.style.paddingRight = `${PANEL_WIDTH}px`\n }\n\n this.#updateGeometry()\n\n setTimeout(() => {\n this.#updateGeometry?.()\n }, 100)\n\n // Re-evaluate on resize / scroll\n this.#resizeObserver = new ResizeObserver(this.#updateGeometry)\n this.#resizeObserver.observe(root)\n window.addEventListener('resize', this.#updateGeometry)\n window.addEventListener('scroll', this.#updateGeometry, {\n capture: true,\n passive: true,\n })\n\n let scrollerNode: Node | null = root\n while (scrollerNode && scrollerNode !== document) {\n if (scrollerNode instanceof Element) {\n scrollerNode.addEventListener('scroll', this.#updateGeometry, {\n passive: true,\n })\n this.#scrollContainers.push(scrollerNode)\n }\n scrollerNode =\n scrollerNode.parentNode || (scrollerNode as ShadowRoot).host\n }\n }\n\n #removePanel() {\n if (this.#panelApp) {\n this.#panelApp.unmount()\n this.#panelApp = null\n }\n if (this.#panelContainer) {\n this.#panelContainer.remove()\n this.#panelContainer = null\n }\n\n if (this.#resizeObserver) {\n this.#resizeObserver.disconnect()\n this.#resizeObserver = null\n }\n\n if (this.#updateGeometry) {\n window.removeEventListener('resize', this.#updateGeometry)\n window.removeEventListener('scroll', this.#updateGeometry, {\n capture: true,\n })\n\n for (const container of this.#scrollContainers) {\n container.removeEventListener('scroll', this.#updateGeometry)\n }\n this.#scrollContainers = []\n this.#updateGeometry = null\n }\n\n const editorContainer = this.#view.dom.parentElement\n if (editorContainer) {\n editorContainer.style.paddingRight = ''\n }\n }\n}\n\nfunction buildDecorations(\n doc: PMNode,\n changes: ChangeInfo[],\n onAccept: (id: string) => void,\n onReject: (id: string) => void,\n acceptText: string,\n rejectText: string\n): DecorationSet {\n const decorations: Decoration[] = []\n const addedWidgets = new Set<string>()\n\n for (const change of changes) {\n if (!addedWidgets.has(change.chunkId)) {\n addedWidgets.add(change.chunkId)\n\n decorations.push(\n Decoration.widget(\n change.blockRange.from,\n () => {\n const wrapper = document.createElement('div')\n wrapper.style.position = 'relative'\n wrapper.style.width = '100%'\n wrapper.style.height = '0'\n wrapper.style.overflow = 'visible'\n\n const container = document.createElement('div')\n container.className = 'crepe-diff-actions'\n container.style.position = 'absolute'\n container.style.right = '4px'\n container.style.top = '4px'\n container.style.zIndex = '10'\n container.style.display = 'flex'\n container.style.gap = '4px'\n\n const btnAccept = document.createElement('button')\n btnAccept.textContent = acceptText\n btnAccept.style.backgroundColor = '#2ea043'\n btnAccept.style.color = 'white'\n btnAccept.style.border = 'none'\n btnAccept.style.borderRadius = '4px'\n btnAccept.style.padding = '2px 8px'\n btnAccept.style.cursor = 'pointer'\n btnAccept.style.fontSize = '12px'\n btnAccept.addEventListener('mousedown', (e) => {\n e.preventDefault()\n onAccept(change.chunkId)\n })\n\n const btnReject = document.createElement('button')\n btnReject.textContent = rejectText\n btnReject.style.backgroundColor = '#f85149'\n btnReject.style.color = 'white'\n btnReject.style.border = 'none'\n btnReject.style.borderRadius = '4px'\n btnReject.style.padding = '2px 8px'\n btnReject.style.cursor = 'pointer'\n btnReject.style.fontSize = '12px'\n btnReject.addEventListener('mousedown', (e) => {\n e.preventDefault()\n onReject(change.chunkId)\n })\n\n container.appendChild(btnAccept)\n container.appendChild(btnReject)\n wrapper.appendChild(container)\n return wrapper\n },\n { side: -1 }\n )\n )\n }\n\n const blockCls =\n change.type === 'added' ? 'crepe-diff-added' : 'crepe-diff-deleted'\n decorations.push(\n Decoration.node(change.blockRange.from, change.blockRange.to, {\n class: blockCls,\n })\n )\n\n const inlineCls =\n change.type === 'added'\n ? 'crepe-diff-inline-added'\n : 'crepe-diff-inline-deleted'\n for (const r of change.inlineRanges) {\n if (r.to > r.from) {\n decorations.push(Decoration.inline(r.from, r.to, { class: inlineCls }))\n }\n }\n }\n\n return DecorationSet.create(doc, decorations)\n}\n\nexport const inlineDiffPlugin = $prose((ctx) => {\n return new Plugin({\n key: inlineDiffKey,\n view: (view) => new InlineDiffView(ctx, view),\n props: {\n decorations: () => sharedDecorationSet,\n },\n })\n})\n\nexport const inlineDiff: DefineFeature<InlineDiffFeatureConfig> = (\n editor,\n config\n) => {\n editor\n .config(crepeFeatureConfig(CrepeFeature.InlineDiff))\n .config((ctx) => {\n if (config) {\n ctx.update(inlineDiffConfig.key, (prev) => ({\n ...prev,\n ...config,\n }))\n }\n })\n .use(inlineDiffApiCtx)\n .use(inlineDiffConfig)\n .use(inlineDiffPlugin)\n}\n"],"names":["createSlice","CrepeFeature","createApp","ref","computed","h","$ctx","i","j","oldNode","newNode","Diff","_a","_b","PluginKey","DecorationSet","view","parserCtx","Decoration","$prose","Plugin"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIO,MAAM,IAAA,GAAO;AAAA;AAAA,EAElB,YAAA,EAAc,0BAAA;AAAA,EACd,aAAA,EAAe,sCAAA;AAAA,EACf,aAAA,EAAe,sCAAA;AAAA;AAAA,EAEf,kBAAA,EAAoB,yEAAA;AAAA;AAAA,EAGpB,iBAAA,EAAmB,cAAA;AAAA,EACnB,oBAAA,EAAsB,cAAA;AAAA,EACtB,kBAAA,EAAoB,cAAA;AAAA,EACpB,uBAAA,EAAyB,oBAAA;AAAA;AAAA,EAGzB,cAAA,EAAgB,cAAA;AAAA,EAChB,cAAA,EAAgB,cAAA;AAAA,EAChB,cAAA,EAAgB,cAAA;AAAA,EAChB,gBAAA,EAAkB,cAAA;AAAA,EAClB,gBAAA,EAAkB,cAAA;AAAA;AAAA,EAGlB,cAAA,EAAgB,0BAAA;AAAA,EAChB,kBAAA,EAAoB,gCAAA;AAAA,EACpB,mBAAA,EAAqB,gCAAA;AAAA,EACrB,oBAAA,EAAsB,gCAAA;AAAA,EACtB,YAAA,EAAc,0BAAA;AAAA,EACd,YAAA,EAAc,0BAAA;AAAA,EACd,kBAAA,EAAoB,0BAAA;AAAA,EACpB,mBAAA,EAAqB,cAAA;AAAA,EACrB,gBAAA,EAAkB,cAAA;AAAA,EAClB,gBAAA,EAAkB,cAAA;AAAA;AAAA,EAGlB,8BAAA,EAAgC,0BAAA;AAAA,EAChC,yBAAA,EAA2B,oBAAA;AAAA,EAC3B,oCAAA,EAAsC,cAAA;AAAA,EACtC,oCAAA,EAAsC,cAAA;AAAA,EACtC,yBAAA,EAA2B,cAAA;AAAA,EAC3B,qBAAA,EAAuB,0BAAA;AAAA;AAAA,EAGvB,uBAAA,EAAyB,6BAAA;AAAA;AAAA,EAGzB,+BAAA,EAAiC,cAAA;AAAA,EACjC,oCAAA,EAAsC,gCAAA;AAAA,EACtC,8BAAA,EAAgC,0BAAA;AAAA,EAChC,mCAAA,EAAqC,gCAAA;AAAA,EACrC,oCAAA,EAAsC,yCAAA;AAAA,EACtC,+BAAA,EAAiC,cAAA;AAAA;AAAA,EAGjC,8BAAA,EAAgC,0BAAA;AAAA,EAChC,uCAAA,EAAyC,gCAAA;AAAA,EACzC,0BAAA,EAA4B,cAAA;AAAA;AAAA,EAG5B,iBAAA,EAAmB,cAAA;AAAA,EACnB,kBAAA,EAAoB,cAAA;AAAA,EACpB,iBAAA,EAAmB,cAAA;AAAA,EACnB,qBAAA,EAAuB,cAAA;AAAA;AAAA,EAGvB,gBAAA,EAAkB,0BAAA;AAAA,EAClB,cAAA,EAAgB,gBAAA;AAAA,EAChB,cAAA,EAAgB,gBAAA;AAAA,EAChB,cAAA,EAAgB,gBAAA;AAAA,EAChB,cAAA,EAAgB,gBAAA;AAAA,EAChB,cAAA,EAAgB,gBAAA;AAAA,EAChB,cAAA,EAAgB,gBAAA;AAAA,EAChB,iBAAA,EAAmB,cAAA;AAAA,EACnB,mBAAA,EAAqB,oBAAA;AAAA,EACrB,sBAAA,EAAwB,0BAAA;AAAA,EACxB,uBAAA,EAAyB,0BAAA;AAAA,EACzB,oBAAA,EAAsB,0BAAA;AAAA,EACtB,iBAAA,EAAmB,cAAA;AAAA,EACnB,sBAAA,EAAwB,gCAAA;AAAA,EACxB,gBAAA,EAAkB,oBAAA;AAAA,EAClB,iBAAA,EAAmB,cAAA;AAAA,EACnB,gBAAA,EAAkB,cAAA;AAAA,EAClB,gBAAA,EAAkB,cAAA;AAAA,EAClB,kBAAA,EAAoB,cAAA;AAAA,EACpB,yBAAA,EAA2B,oBAAA;AAAA,EAC3B,qBAAA,EAAuB,oBAAA;AAAA,EACvB,qBAAA,EAAuB,cAAA;AAAA,EACvB,oBAAA,EAAsB,0BAAA;AAAA,EACtB,gBAAA,EAAkB,cAAA;AAAA;AAAA,EAGlB,mBAAA,EAAqB,uCAAA;AAAA,EACrB,iBAAA,EAAmB,uDAAA;AAAA,EACnB,iBAAA,EAAmB,wDAAA;AAAA,EACnB,iBAAA,EAAmB,yDAAA;AAAA,EACnB,iBAAA,EAAmB,0DAAA;AAAA,EACnB,iBAAA,EAAmB,2DAAA;AAAA,EACnB,iBAAA,EAAmB,4DAAA;AAAA,EACnB,oBAAA,EAAsB,uDAAA;AAAA,EACtB,sBAAA,EAAwB,gDAAA;AAAA,EACxB,yBAAA,EACE,yFAAA;AAAA,EACF,0BAAA,EAA4B,oEAAA;AAAA,EAC5B,uBAAA,EAAyB,wDAAA;AAAA,EACzB,oBAAA,EAAsB,qCAAA;AAAA,EACtB,mBAAA,EAAqB,gEAAA;AAAA,EACrB,oBAAA,EAAsB,+BAAA;AAAA,EACtB,mBAAA,EAAqB,yCAAA;AAAA;AAAA,EAGrB,2BAAA,EAA6B,gCAAA;AAAA,EAC7B,kBAAA,EAAoB,cAAA;AAAA,EACpB,gBAAA,EAAkB,cAAA;AAAA,EAClB,iBAAA,EAAmB,cAAA;AAAA,EACnB,mBAAA,EAAqB,cAAA;AAAA,EACrB,qBAAA,EAAuB,gCAAA;AAAA,EACvB,sBAAA,EAAwB,oBAAA;AAAA,EACxB,wBAAA,EAA0B,0BAAA;AAAA,EAC1B,uBAAA,EAAyB,oBAAA;AAAA,EACzB,2BAAA,EAA6B,0BAAA;AAAA,EAC7B,2BAAA,EAA6B,0BAAA;AAAA,EAC7B,sBAAA,EAAwB,0BAAA;AAAA,EACxB,oBAAA,EAAsB,0BAAA;AAAA,EACtB,2BAAA,EAA6B,0BAAA;AAAA,EAC7B,yBAAA,EAA2B,cAAA;AAAA,EAC3B,qBAAA,EAAuB,cAAA;AAAA,EACvB,wBAAA,EAA0B,cAAA;AAAA,EAC1B,wBAAA,EAA0B,cAAA;AAAA,EAC1B,uBAAA,EAAyB,cAAA;AAAA,EACzB,sBAAA,EAAwB,cAAA;AAAA,EACxB,wBAAA,EAA0B,cAAA;AAAA,EAC1B,sBAAA,EAAwB,cAAA;AAAA,EACxB,wBAAA,EAA0B,8DAAA;AAAA,EAE1B,wBAAA,EAA0B,cAAA;AAAA,EAC1B,eAAA,EAAiB,cAAA;AAAA,EACjB,iBAAA,EAAmB,0BAAA;AAAA,EACnB,aAAA,EAAe,0BAAA;AAAA,EACf,cAAA,EAAgB,0BAAA;AAAA,EAChB,aAAA,EAAe,cAAA;AAAA,EACf,qBAAA,EAAuB,0BAAA;AAAA,EACvB,YAAA,EAAc,cAAA;AAAA,EACd,aAAA,EAAe,cAAA;AAAA;AAAA,EAGf,iBAAA,EAAmB,qCAAA;AAAA,EACnB,eAAA,EAAiB,sCAAA;AAAA,EACjB,wBAAA,EAA0B,iCAAA;AAAA,EAC1B,wBAAA,EAA0B,gCAAA;AAAA;AAAA,EAG1B,iBAAA,EAAmB,gCAAA;AAAA,EACnB,sBAAA,EAAwB,0BAAA;AAAA,EACxB,gBAAA,EAAkB,cAAA;AAAA,EAClB,kBAAA,EAAoB,cAAA;AAAA,EACpB,qBAAA,EAAuB,oBAAA;AAAA,EACvB,yBAAA,EAA2B,oBAAA;AAAA,EAC3B,sBAAA,EAAwB,0BAAA;AAAA,EACxB,qBAAA,EAAuB,cAAA;AAAA,EACvB,qBAAA,EAAuB,cAAA;AAAA,EACvB,mBAAA,EAAqB,cAAA;AAAA,EACrB,iBAAA,EAAmB,0BAAA;AAAA,EACnB,qBAAA,EAAuB,oBAAA;AAAA,EACvB,sBAAA,EAAwB,cAAA;AAAA,EACxB,uBAAA,EAAyB,0BAAA;AAAA,EACzB,sBAAA,EAAwB,0BAAA;AAAA,EACxB,kBAAA,EAAoB,0BAAA;AAAA,EACpB,mBAAA,EAAqB,0BAAA;AAAA,EACrB,qBAAA,EAAuB,cAAA;AAAA,EACvB,mBAAA,EAAqB,0BAAA;AAAA,EACrB,gBAAA,EAAkB,cAAA;AAAA,EAClB,gBAAA,EAAkB,cAAA;AAAA;AAAA,EAGlB,mBAAA,EAAqB,cAAA;AAAA,EACrB,mBAAA,EAAqB;AACvB,CAAA;AAEO,MAAM,IAAA,GAAoB;AAAA,EAC/B,YAAA,EAAc,aAAA;AAAA,EACd,aAAA,EAAe,WAAA;AAAA,EACf,aAAA,EAAe,cAAA;AAAA,EACf,kBAAA,EAAoB,4BAAA;AAAA,EAEpB,iBAAA,EAAmB,SAAA;AAAA,EACnB,oBAAA,EAAsB,YAAA;AAAA,EACtB,kBAAA,EAAoB,UAAA;AAAA,EACpB,uBAAA,EAAyB,gBAAA;AAAA,EAEzB,cAAA,EAAgB,MAAA;AAAA,EAChB,cAAA,EAAgB,MAAA;AAAA,EAChB,cAAA,EAAgB,MAAA;AAAA,EAChB,gBAAA,EAAkB,QAAA;AAAA,EAClB,gBAAA,EAAkB,QAAA;AAAA,EAElB,cAAA,EAAgB,eAAA;AAAA,EAChB,kBAAA,EAAoB,cAAA;AAAA,EACpB,mBAAA,EAAqB,eAAA;AAAA,EACrB,oBAAA,EAAsB,qBAAA;AAAA,EACtB,YAAA,EAAc,YAAA;AAAA,EACd,YAAA,EAAc,YAAA;AAAA,EACd,kBAAA,EAAoB,eAAA;AAAA,EACpB,mBAAA,EAAqB,SAAA;AAAA,EACrB,gBAAA,EAAkB,MAAA;AAAA,EAClB,gBAAA,EAAkB,YAAA;AAAA,EAElB,8BAAA,EAAgC,iBAAA;AAAA,EAChC,yBAAA,EAA2B,WAAA;AAAA,EAC3B,oCAAA,EAAsC,MAAA;AAAA,EACtC,oCAAA,EAAsC,MAAA;AAAA,EACtC,yBAAA,EAA2B,SAAA;AAAA,EAC3B,qBAAA,EAAuB,MAAA;AAAA,EAEvB,uBAAA,EAAyB,eAAA;AAAA,EAEzB,+BAAA,EAAiC,QAAA;AAAA,EACjC,oCAAA,EAAsC,eAAA;AAAA,EACtC,8BAAA,EAAgC,aAAA;AAAA,EAChC,mCAAA,EAAqC,eAAA;AAAA,EACrC,oCAAA,EAAsC,qBAAA;AAAA,EACtC,+BAAA,EAAiC,SAAA;AAAA,EAEjC,8BAAA,EAAgC,aAAA;AAAA,EAChC,uCAAA,EAAyC,oBAAA;AAAA,EACzC,0BAAA,EAA4B,UAAA;AAAA,EAE5B,iBAAA,EAAmB,MAAA;AAAA,EACnB,kBAAA,EAAoB,OAAA;AAAA,EACpB,iBAAA,EAAmB,MAAA;AAAA,EACnB,qBAAA,EAAuB,UAAA;AAAA,EAEvB,gBAAA,EAAkB,MAAA;AAAA,EAClB,cAAA,EAAgB,WAAA;AAAA,EAChB,cAAA,EAAgB,WAAA;AAAA,EAChB,cAAA,EAAgB,WAAA;AAAA,EAChB,cAAA,EAAgB,WAAA;AAAA,EAChB,cAAA,EAAgB,WAAA;AAAA,EAChB,cAAA,EAAgB,WAAA;AAAA,EAChB,iBAAA,EAAmB,OAAA;AAAA,EACnB,mBAAA,EAAqB,SAAA;AAAA,EACrB,sBAAA,EAAwB,aAAA;AAAA,EACxB,uBAAA,EAAyB,cAAA;AAAA,EACzB,oBAAA,EAAsB,WAAA;AAAA,EACtB,iBAAA,EAAmB,OAAA;AAAA,EACnB,sBAAA,EAAwB,eAAA;AAAA,EACxB,gBAAA,EAAkB,MAAA;AAAA,EAClB,iBAAA,EAAmB,OAAA;AAAA,EACnB,gBAAA,EAAkB,MAAA;AAAA,EAClB,gBAAA,EAAkB,MAAA;AAAA,EAClB,kBAAA,EAAoB,QAAA;AAAA,EACpB,yBAAA,EAA2B,eAAA;AAAA,EAC3B,qBAAA,EAAuB,WAAA;AAAA,EACvB,qBAAA,EAAuB,WAAA;AAAA,EACvB,oBAAA,EAAsB,aAAA;AAAA,EACtB,gBAAA,EAAkB,MAAA;AAAA,EAElB,mBAAA,EAAqB,mBAAA;AAAA,EACrB,iBAAA,EAAmB,2CAAA;AAAA,EACnB,iBAAA,EAAmB,4CAAA;AAAA,EACnB,iBAAA,EAAmB,6CAAA;AAAA,EACnB,iBAAA,EAAmB,8CAAA;AAAA,EACnB,iBAAA,EAAmB,+CAAA;AAAA,EACnB,iBAAA,EAAmB,gDAAA;AAAA,EACnB,oBAAA,EAAsB,yCAAA;AAAA,EACtB,sBAAA,EAAwB,8BAAA;AAAA,EACxB,yBAAA,EACE,0DAAA;AAAA,EACF,0BAAA,EAA4B,iDAAA;AAAA,EAC5B,uBAAA,EAAyB,kCAAA;AAAA,EACzB,oBAAA,EAAsB,8BAAA;AAAA,EACtB,mBAAA,EAAqB,iDAAA;AAAA,EACrB,oBAAA,EAAsB,wBAAA;AAAA,EACtB,mBAAA,EAAqB,0BAAA;AAAA,EAErB,2BAAA,EAA6B,gBAAA;AAAA,EAC7B,kBAAA,EAAoB,OAAA;AAAA,EACpB,gBAAA,EAAkB,KAAA;AAAA,EAClB,iBAAA,EAAmB,MAAA;AAAA,EACnB,mBAAA,EAAqB,QAAA;AAAA,EACrB,qBAAA,EAAuB,WAAA;AAAA,EACvB,sBAAA,EAAwB,YAAA;AAAA,EACxB,wBAAA,EAA0B,cAAA;AAAA,EAC1B,uBAAA,EAAyB,aAAA;AAAA,EACzB,2BAAA,EAA6B,iBAAA;AAAA,EAC7B,2BAAA,EAA6B,iBAAA;AAAA,EAC7B,sBAAA,EAAwB,YAAA;AAAA,EACxB,oBAAA,EAAsB,kBAAA;AAAA,EACtB,2BAAA,EAA6B,iBAAA;AAAA,EAC7B,yBAAA,EAA2B,SAAA;AAAA,EAC3B,qBAAA,EAAuB,KAAA;AAAA,EACvB,wBAAA,EAA0B,QAAA;AAAA,EAC1B,wBAAA,EAA0B,QAAA;AAAA,EAC1B,uBAAA,EAAyB,OAAA;AAAA,EACzB,sBAAA,EAAwB,MAAA;AAAA,EACxB,wBAAA,EAA0B,QAAA;AAAA,EAC1B,sBAAA,EAAwB,MAAA;AAAA,EACxB,wBAAA,EAA0B,cAAA;AAAA,EAE1B,wBAAA,EAA0B,SAAA;AAAA,EAC1B,eAAA,EAAiB,UAAA;AAAA,EACjB,iBAAA,EAAmB,YAAA;AAAA,EACnB,aAAA,EAAe,QAAA;AAAA,EACf,cAAA,EAAgB,SAAA;AAAA,EAChB,aAAA,EAAe,QAAA;AAAA,EACf,qBAAA,EAAuB,iBAAA;AAAA,EACvB,YAAA,EAAc,OAAA;AAAA,EACd,aAAA,EAAe,QAAA;AAAA,EAEf,iBAAA,EAAmB,qBAAA;AAAA,EACnB,eAAA,EAAiB,UAAA;AAAA,EACjB,wBAAA,EAA0B,WAAA;AAAA,EAC1B,wBAAA,EAA0B,sBAAA;AAAA,EAE1B,iBAAA,EAAmB,oBAAA;AAAA,EACnB,sBAAA,EAAwB,iBAAA;AAAA,EACxB,gBAAA,EAAkB,MAAA;AAAA,EAClB,kBAAA,EAAoB,QAAA;AAAA,EACpB,qBAAA,EAAuB,WAAA;AAAA,EACvB,yBAAA,EAA2B,eAAA;AAAA,EAC3B,sBAAA,EAAwB,aAAA;AAAA,EACxB,qBAAA,EAAuB,WAAA;AAAA,EACvB,qBAAA,EAAuB,WAAA;AAAA,EACvB,mBAAA,EAAqB,SAAA;AAAA,EACrB,iBAAA,EAAmB,gBAAA;AAAA,EACnB,qBAAA,EAAuB,YAAA;AAAA,EACvB,sBAAA,EAAwB,YAAA;AAAA,EACxB,uBAAA,EAAyB,cAAA;AAAA,EACzB,sBAAA,EAAwB,aAAA;AAAA,EACxB,kBAAA,EAAoB,QAAA;AAAA,EACpB,mBAAA,EAAqB,SAAA;AAAA,EACrB,qBAAA,EAAuB,YAAA;AAAA,EACvB,mBAAA,EAAqB,SAAA;AAAA,EACrB,gBAAA,EAAkB,MAAA;AAAA,EAClB,gBAAA,EAAkB,MAAA;AAAA,EAElB,mBAAA,EAAqB,QAAA;AAAA,EACrB,mBAAA,EAAqB;AACvB,CAAA;AAIO,MAAM,eAAA,GAAkBA,eAAA;AAAA,EAG7B;AAAA,IACE,OAAA,EAAS,IAAA;AAAA,IACT,OAAA,EAAS;AAAA,GACX;AAAA,EACA;AACF,CAAA;AAEO,MAAM,SAAA,GAAYA,eAAA,CAAY,OAAA,EAAS,WAAW,CAAA;AAElD,SAAS,IAAA,CAAK,KAAU,GAAA,EAAsC;AApWrE,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AAqWE,EAAA,MAAM,YAAA,GAAe,GAAA,CAAI,GAAA,CAAI,eAAe,CAAA;AAC5C,EAAA,MAAM,MAAA,GAAS,GAAA,CAAI,GAAA,CAAI,SAAS,CAAA;AAChC,EAAA,OAAA,CACE,EAAA,GAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,YAAA,CAAa,MAAM,CAAA,KAAnB,IAAA,GAAA,MAAA,GAAA,EAAA,CAAuB,SAAvB,IAAA,GAAA,EAAA,GAAA,CACA,EAAA,GAAA,YAAA,CAAa,OAAO,CAAA,KAApB,mBAAwB,GAAA,CAAA,KADxB,IAAA,GAAA,EAAA,GAEA,IAAA,CAAK,GAAG,MAFR,IAAA,GAAA,EAAA,GAGA,GAAA;AAEJ;;ACrW2BA,eAAA,CAAY,EAAC,EAAqB,aAAa;AAKlDA,eAAA,CAAY,EAAC,EAAmB,UAAU;AA2B3D,SAAS,iBAAiB,GAAA,EAAU;AAEzC,EAAA,OAAO,GAAA,CAAI,IAAmC,aAAa,CAAA;AAC7D;AAGO,SAAS,mBAAmB,OAAA,EAAuB;AACxD,EAAA,OAAO,CAAC,GAAA,KAAa;AACnB,IAAA,gBAAA,CAAiB,GAAG,CAAA,CAAE,MAAA,CAAO,CAAC,QAAA,KAAa;AACzC,MAAA,IAAI,QAAA,CAAS,QAAA,CAAS,OAAO,CAAA,EAAG;AAC9B,QAAA,OAAO,QAAA;AAAA,MACT;AACA,MAAA,OAAO,CAAC,GAAG,QAAA,EAAU,OAAO,CAAA;AAAA,IAC9B,CAAC,CAAA;AAAA,EACH,CAAA;AACF;;ACrCO,IAAK,YAAA,qBAAAC,aAAAA,KAAL;AAEL,EAAAA,cAAA,YAAA,CAAA,GAAa,aAAA;AAGb,EAAAA,cAAA,UAAA,CAAA,GAAW,WAAA;AAGX,EAAAA,cAAA,aAAA,CAAA,GAAc,cAAA;AAGd,EAAAA,cAAA,QAAA,CAAA,GAAS,QAAA;AAGT,EAAAA,cAAA,YAAA,CAAA,GAAa,aAAA;AAGb,EAAAA,cAAA,WAAA,CAAA,GAAY,YAAA;AAGZ,EAAAA,cAAA,SAAA,CAAA,GAAU,SAAA;AAGV,EAAAA,cAAA,cAAA,CAAA,GAAe,eAAA;AAGf,EAAAA,cAAA,aAAA,CAAA,GAAc,aAAA;AAGd,EAAAA,cAAA,OAAA,CAAA,GAAQ,OAAA;AAGR,EAAAA,cAAA,OAAA,CAAA,GAAQ,OAAA;AAGR,EAAAA,cAAA,YAAA,CAAA,GAAa,YAAA;AAGb,EAAAA,cAAA,YAAA,CAAA,GAAa,aAAA;AAGb,EAAAA,cAAA,WAAA,CAAA,GAAY,YAAA;AAzCF,EAAA,OAAAA,aAAAA;AAAA,CAAA,EAAA,YAAA,IAAA,EAAA,CAAA;;ACZZ,MAAM,UAAA,GAAyC;AAAA,EAC7C,KAAA,EAAO,cAAA;AAAA,EACP,OAAA,EAAS;AACX,CAAA;AAEA,MAAM,UAAA,GAAyC;AAAA,EAC7C,KAAA,EAAO,SAAA;AAAA,EACP,OAAA,EAAS;AACX,CAAA;AACO,SAAS,gBAAA,CACd,SAAA,EACA,OAAA,EACA,UAAA,EACA,OAAA,EACQ;AACR,EAAA,MAAM,MAAMC,aAAA,CAAU;AAAA,IACpB,KAAA,GAAQ;AACN,MAAA,MAAM,SAAA,GAAYC,QAAe,KAAK,CAAA;AAEtC,MAAA,MAAM,eAAA,GAAkBC,aAAS,MAAM;AACrC,QAAA,IAAI,SAAA,CAAU,KAAA,KAAU,KAAA,EAAO,OAAO,OAAA;AACtC,QAAA,OAAO,QAAQ,MAAA,CAAO,CAAC,MAAM,CAAA,CAAE,IAAA,KAAS,UAAU,KAAK,CAAA;AAAA,MACzD,CAAC,CAAA;AAED,MAAA,MAAM,MAAA,GAASA,aAAS,OAAO;AAAA,QAC7B,KAAK,OAAA,CAAQ,MAAA;AAAA,QACb,OAAA,EAAS,QAAQ,MAAA,CAAO,CAAC,MAAM,CAAA,CAAE,IAAA,KAAS,SAAS,CAAA,CAAE,MAAA;AAAA,QACrD,KAAA,EAAO,QAAQ,MAAA,CAAO,CAAC,MAAM,CAAA,CAAE,IAAA,KAAS,OAAO,CAAA,CAAE;AAAA,OACnD,CAAE,CAAA;AAEF,MAAA,SAAS,SAAA,CAAU,KAAgB,KAAA,EAAe;AAChD,QAAA,MAAM,QAAA,GAAW,UAAU,KAAA,KAAU,GAAA;AACrC,QAAA,OAAOC,KAAA;AAAA,UACL,QAAA;AAAA,UACA;AAAA,YACE,KAAA,EAAO;AAAA,cACL,OAAA,EAAS,UAAA;AAAA,cACT,MAAA,EAAQ,MAAA;AAAA,cACR,UAAA,EAAY,MAAA;AAAA,cACZ,MAAA,EAAQ,SAAA;AAAA,cACR,QAAA,EAAU,MAAA;AAAA,cACV,KAAA,EAAO,WAAW,SAAA,GAAY,MAAA;AAAA,cAC9B,YAAA,EAAc,WACV,mBAAA,GACA;AAAA,aACN;AAAA,YACA,SAAS,MAAM;AACb,cAAA,SAAA,CAAU,KAAA,GAAQ,GAAA;AAAA,YACpB;AAAA,WACF;AAAA,UACA;AAAA,SACF;AAAA,MACF;AAEA,MAAA,SAAS,UAAA,CAAW,QAAoB,KAAA,EAAe;AACrD,QAAA,MAAM,KAAA,GAAQ,UAAA,CAAW,MAAA,CAAO,IAAI,CAAA;AACpC,QAAA,MAAM,QAAA,GAAmC;AAAA,UACvCA,KAAA,CAAE,OAAO,EAAE,KAAA,EAAO,EAAE,YAAA,EAAc,KAAA,IAAQ,EAAG;AAAA,YAC3CA,KAAA;AAAA,cACE,MAAA;AAAA,cACA;AAAA,gBACE,KAAA,EAAO;AAAA,kBACL,OAAA,EAAS,cAAA;AAAA,kBACT,OAAA,EAAS,SAAA;AAAA,kBACT,YAAA,EAAc,KAAA;AAAA,kBACd,KAAA,EAAO,MAAA;AAAA,kBACP,QAAA,EAAU,MAAA;AAAA,kBACV,UAAA,EAAY,KAAA;AAAA,kBACZ,eAAA,EAAiB;AAAA;AACnB,eACF;AAAA,cACA,GAAG,KAAK,CAAA,CAAA,EAAI,UAAA,CAAW,MAAA,CAAO,IAAI,CAAC,CAAA;AAAA;AACrC,WACD;AAAA,SACH;AAEA,QAAA,IAAI,OAAO,OAAA,EAAS;AAClB,UAAA,QAAA,CAAS,IAAA;AAAA,YACPA,KAAA;AAAA,cACE,KAAA;AAAA,cACA;AAAA,gBACE,KAAA,EAAO;AAAA,kBACL,SAAA,EAAW,KAAA;AAAA,kBACX,QAAA,EAAU,MAAA;AAAA,kBACV,UAAA,EAAY,KAAA;AAAA,kBACZ,KAAA,EAAO,MAAA;AAAA,kBACP,SAAA,EAAW;AAAA;AACb,eACF;AAAA,cACA;AAAA,gBACEA,KAAA;AAAA,kBACE,MAAA;AAAA,kBACA,EAAE,KAAA,EAAO,EAAE,OAAO,MAAA,EAAQ,QAAA,EAAU,QAAO,EAAE;AAAA,kBAC7C;AAAA,iBACF;AAAA,gBACAA,KAAA,CAAE,MAAA,EAAQ,IAAA,EAAM,MAAA,CAAO,OAAO;AAAA;AAChC;AACF,WACF;AAAA,QACF;AACA,QAAA,IAAI,OAAO,OAAA,EAAS;AAClB,UAAA,QAAA,CAAS,IAAA;AAAA,YACPA,KAAA;AAAA,cACE,KAAA;AAAA,cACA;AAAA,gBACE,KAAA,EAAO;AAAA,kBACL,SAAA,EAAW,KAAA;AAAA,kBACX,QAAA,EAAU,MAAA;AAAA,kBACV,UAAA,EAAY,KAAA;AAAA,kBACZ,SAAA,EAAW;AAAA;AACb,eACF;AAAA,cACA;AAAA,gBACEA,KAAA;AAAA,kBACE,MAAA;AAAA,kBACA,EAAE,KAAA,EAAO,EAAE,OAAO,MAAA,EAAQ,QAAA,EAAU,QAAO,EAAE;AAAA,kBAC7C;AAAA,iBACF;AAAA,gBACAA,KAAA,CAAE,QAAQ,EAAE,KAAA,EAAO,EAAE,KAAA,EAAM,EAAE,EAAG,MAAA,CAAO,OAAO;AAAA;AAChD;AACF,WACF;AAAA,QACF;AAEA,QAAA,OAAOA,KAAA;AAAA,UACL,KAAA;AAAA,UACA;AAAA,YACE,KAAA,EAAO;AAAA,cACL,OAAA,EAAS,UAAA;AAAA,cACT,YAAA,EAAc,KAAA;AAAA,cACd,YAAA,EAAc,KAAA;AAAA,cACd,UAAA,EAAY,kBAAA;AAAA,cACZ,MAAA,EAAQ,gBAAA;AAAA,cACR,MAAA,EAAQ,MAAA,CAAO,IAAA,GAAO,CAAA,GAAI,SAAA,GAAY;AAAA,aACxC;AAAA,YACA,SAAS,MAAM;AACb,cAAA,IAAI,MAAA,CAAO,IAAA,GAAO,CAAA,EAAG,UAAA,CAAW,OAAO,IAAI,CAAA;AAAA,YAC7C;AAAA,WACF;AAAA,UACA;AAAA,SACF;AAAA,MACF;AAEA,MAAA,OAAO,MACLA,KAAA;AAAA,QACE,KAAA;AAAA,QACA;AAAA,UACE,KAAA,EAAO;AAAA,YACL,KAAA,EAAO,MAAA;AAAA,YACP,MAAA,EAAQ,MAAA;AAAA,YACR,OAAA,EAAS,MAAA;AAAA,YACT,aAAA,EAAe,QAAA;AAAA,YACf,eAAA,EAAiB,kCAAA;AAAA,YACjB,SAAA,EAAW,YAAA;AAAA,YACX,UAAA,EACE,mEAAA;AAAA,YACF,QAAA,EAAU,MAAA;AAAA,YACV,KAAA,EAAO,qCAAA;AAAA,YACP,QAAA,EAAU;AAAA;AACZ,SACF;AAAA,QACA;AAAA;AAAA,UAEEA,KAAA;AAAA,YACE,KAAA;AAAA,YACA;AAAA,cACE,KAAA,EAAO;AAAA,gBACL,OAAA,EAAS,WAAA;AAAA,gBACT,QAAA,EAAU,MAAA;AAAA,gBACV,UAAA,EAAY,MAAA;AAAA,gBACZ,YAAA,EACE,qHAAA;AAAA,gBACF,KAAA,EAAO,qCAAA;AAAA,gBACP,OAAA,EAAS,MAAA;AAAA,gBACT,cAAA,EAAgB,eAAA;AAAA,gBAChB,UAAA,EAAY,QAAA;AAAA,gBACZ,UAAA,EAAY;AAAA;AACd,aACF;AAAA,YACA;AAAA,cACEA,KAAA,CAAE,MAAA,EAAQ,IAAA,EAAM,sCAAQ,CAAA;AAAA,cACxB,OAAA,GACIA,KAAA;AAAA,gBACE,KAAA;AAAA,gBACA;AAAA,kBACE,KAAA,EAAO;AAAA,oBACL,MAAA,EAAQ,SAAA;AAAA,oBACR,OAAA,EAAS,MAAA;AAAA,oBACT,UAAA,EAAY,QAAA;AAAA,oBACZ,cAAA,EAAgB,QAAA;AAAA,oBAChB,KAAA,EAAO,MAAA;AAAA,oBACP,MAAA,EAAQ,MAAA;AAAA,oBACR,YAAA,EAAc,KAAA;AAAA,oBACd,KAAA,EAAO,kCAAA;AAAA,oBACP,UAAA,EAAY;AAAA,mBACd;AAAA,kBACA,OAAA,EAAS,OAAA;AAAA,kBACT,YAAA,EAAc,CAAC,CAAA,KAAkB;AAC/B,oBAAA,MAAM,SAAS,CAAA,CAAE,aAAA;AACjB,oBAAA,MAAA,CAAO,MAAM,eAAA,GACX,4CAAA;AACF,oBAAA,MAAA,CAAO,MAAM,KAAA,GACX,qCAAA;AAAA,kBACJ,CAAA;AAAA,kBACA,YAAA,EAAc,CAAC,CAAA,KAAkB;AAC/B,oBAAA,MAAM,SAAS,CAAA,CAAE,aAAA;AACjB,oBAAA,MAAA,CAAO,MAAM,eAAA,GAAkB,aAAA;AAC/B,oBAAA,MAAA,CAAO,MAAM,KAAA,GACX,kCAAA;AAAA,kBACJ,CAAA;AAAA,kBACA,KAAA,EAAO;AAAA,iBACT;AAAA,gBACA;AAAA,kBACEA,KAAA;AAAA,oBACE,KAAA;AAAA,oBACA;AAAA,sBACE,KAAA,EAAO,IAAA;AAAA,sBACP,MAAA,EAAQ,IAAA;AAAA,sBACR,OAAA,EAAS,WAAA;AAAA,sBACT,IAAA,EAAM,MAAA;AAAA,sBACN,MAAA,EAAQ,cAAA;AAAA,sBACR,WAAA,EAAa,GAAA;AAAA,sBACb,aAAA,EAAe,OAAA;AAAA,sBACf,cAAA,EAAgB;AAAA,qBAClB;AAAA,oBACA;AAAA,sBACEA,KAAA,CAAE,MAAA,EAAQ,EAAE,EAAA,EAAI,IAAA,EAAM,EAAA,EAAI,GAAA,EAAK,EAAA,EAAI,GAAA,EAAK,EAAA,EAAI,IAAA,EAAM,CAAA;AAAA,sBAClDA,KAAA,CAAE,MAAA,EAAQ,EAAE,EAAA,EAAI,GAAA,EAAK,EAAA,EAAI,GAAA,EAAK,EAAA,EAAI,IAAA,EAAM,EAAA,EAAI,IAAA,EAAM;AAAA;AACpD;AACF;AACF,eACF,GACA;AAAA;AACN,WACF;AAAA;AAAA,UAEAA,KAAA;AAAA,YACE,KAAA;AAAA,YACA;AAAA,cACE,KAAA,EAAO;AAAA,gBACL,OAAA,EAAS,MAAA;AAAA,gBACT,YAAA,EAAc,gBAAA;AAAA,gBACd,OAAA,EAAS,OAAA;AAAA,gBACT,UAAA,EAAY;AAAA;AACd,aACF;AAAA,YACA;AAAA,cACE,UAAU,KAAA,EAAO,CAAA,aAAA,EAAM,MAAA,CAAO,KAAA,CAAM,GAAG,CAAA,CAAA,CAAG,CAAA;AAAA,cAC1C,UAAU,SAAA,EAAW,CAAA,aAAA,EAAM,MAAA,CAAO,KAAA,CAAM,OAAO,CAAA,CAAA,CAAG,CAAA;AAAA,cAClD,UAAU,OAAA,EAAS,CAAA,aAAA,EAAM,MAAA,CAAO,KAAA,CAAM,KAAK,CAAA,CAAA,CAAG;AAAA;AAChD,WACF;AAAA;AAAA,UAEAA,KAAA;AAAA,YACE,KAAA;AAAA,YACA;AAAA,cACE,KAAA,EAAO;AAAA,gBACL,IAAA,EAAM,CAAA;AAAA,gBACN,SAAA,EAAW,MAAA;AAAA,gBACX,OAAA,EAAS;AAAA;AACX,aACF;AAAA,YACA,gBAAgB,KAAA,CAAM,GAAA;AAAA,cAAI,CAAC,MAAA,EAAQ,CAAA,KACjC,UAAA,CAAW,MAAA,EAAQ,IAAI,CAAC;AAAA;AAC1B;AACF;AACF,OACF;AAAA,IACJ;AAAA,GACD,CAAA;AAED,EAAA,GAAA,CAAI,MAAM,SAAS,CAAA;AACnB,EAAA,OAAO,GAAA;AACT;;AC1QO,MAAM,gBAAA,GAAmBC,UAAA;AAAA,EAC9B;AAAA,IACE,UAAA,EAAY,kBAAA;AAAA,IACZ,YAAA,EAAc;AAAA,GAChB;AAAA,EACA;AACF,CAAA;AAEA,MAAM,OAAA,GAAyB;AAAA,EAC7B,UAAU,MAAM;AAAA,EAAC,CAAA;AAAA,EACjB,UAAU,MAAM;AAAA,EAAC,CAAA;AAAA,EACjB,WAAW,MAAM;AACnB,CAAA;AAEO,MAAM,gBAAA,GAAmBA,UAAA,CAAK,OAAA,EAAS,kBAAkB;;ACDhE,SAAS,GAAA,CACP,CAAA,EACA,CAAA,EACA,EAAA,EACoB;AA9BtB,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AA+BE,EAAA,MAAM,IAAI,CAAA,CAAE,MAAA;AACZ,EAAA,MAAM,IAAI,CAAA,CAAE,MAAA;AACZ,EAAA,MAAM,KAAiB,KAAA,CAAM,IAAA;AAAA,IAAK,EAAE,MAAA,EAAQ,CAAA,GAAI,CAAA,EAAE;AAAA,IAAG,MACnD,MAAM,IAAA,CAAK,EAAE,QAAQ,CAAA,GAAI,CAAA,EAAE,EAAG,MAAM,CAAC;AAAA,GACvC;AAEA,EAAA,KAAA,IAASC,EAAAA,GAAI,CAAA,GAAI,CAAA,EAAGA,EAAAA,IAAK,GAAGA,EAAAA,EAAAA,EAAK;AAC/B,IAAA,KAAA,IAASC,EAAAA,GAAI,CAAA,GAAI,CAAA,EAAGA,EAAAA,IAAK,GAAGA,EAAAA,EAAAA,EAAK;AAC/B,MAAA,MAAM,IAAA,GAAA,CAAO,cAAGD,EAAAA,GAAI,CAAC,MAAR,IAAA,GAAA,MAAA,GAAA,EAAA,CAAYC,EAAAA,GAAI,OAAhB,IAAA,GAAA,EAAA,GAAsB,CAAA;AACnC,MAAA,MAAM,QAAO,EAAA,GAAA,CAAA,EAAA,GAAA,EAAA,CAAGD,EAAAA,GAAI,CAAC,CAAA,KAAR,IAAA,GAAA,MAAA,GAAA,EAAA,CAAYC,QAAZ,IAAA,GAAA,EAAA,GAAkB,CAAA;AAC/B,MAAA,MAAM,SAAQ,EAAA,GAAA,CAAA,EAAA,GAAA,EAAA,CAAGD,EAAC,MAAJ,IAAA,GAAA,MAAA,GAAA,EAAA,CAAQC,EAAAA,GAAI,OAAZ,IAAA,GAAA,EAAA,GAAkB,CAAA;AAChC,MAAA,EAAA,CAAGD,EAAC,CAAA,CAAGC,EAAC,CAAA,GAAI,EAAA,CAAG,EAAED,EAAC,CAAA,EAAI,CAAA,CAAEC,EAAC,CAAE,CAAA,GAAI,CAAA,GAAI,OAAO,IAAA,CAAK,GAAA,CAAI,MAAM,KAAK,CAAA;AAAA,IAChE;AAAA,EACF;AAEA,EAAA,MAAM,QAA4B,EAAC;AACnC,EAAA,IAAI,CAAA,GAAI,CAAA;AACR,EAAA,IAAI,CAAA,GAAI,CAAA;AACR,EAAA,OAAO,CAAA,GAAI,CAAA,IAAK,CAAA,GAAI,CAAA,EAAG;AACrB,IAAA,MAAM,QAAO,EAAA,GAAA,CAAA,EAAA,GAAA,EAAA,CAAG,CAAA,GAAI,CAAC,CAAA,KAAR,IAAA,GAAA,MAAA,GAAA,EAAA,CAAY,OAAZ,IAAA,GAAA,EAAA,GAAkB,CAAA;AAC/B,IAAA,MAAM,SAAQ,EAAA,GAAA,CAAA,EAAA,GAAA,EAAA,CAAG,CAAC,MAAJ,IAAA,GAAA,MAAA,GAAA,EAAA,CAAQ,CAAA,GAAI,OAAZ,IAAA,GAAA,EAAA,GAAkB,CAAA;AAChC,IAAA,IAAI,GAAG,CAAA,CAAE,CAAC,GAAI,CAAA,CAAE,CAAC,CAAE,CAAA,EAAG;AACpB,MAAA,KAAA,CAAM,IAAA,CAAK,CAAC,CAAA,EAAG,CAAC,CAAC,CAAA;AACjB,MAAA,CAAA,EAAA;AACA,MAAA,CAAA,EAAA;AAAA,IACF,CAAA,MAAA,IAAW,QAAQ,KAAA,EAAO;AACxB,MAAA,CAAA,EAAA;AAAA,IACF,CAAA,MAAO;AACL,MAAA,CAAA,EAAA;AAAA,IACF;AAAA,EACF;AACA,EAAA,OAAO,KAAA;AACT;AAEO,SAAS,WAAA,CACd,WACA,SAAA,EACa;AACb,EAAA,MAAM,SAAsB,EAAC;AAC7B,EAAA,IAAI,YAAA,GAAe,CAAA;AAEnB,EAAA,MAAM,SAAA,GAAY,CAAC,KAAA,KAAuB;AACxC,IAAA,IAAI,KAAA,CAAM,SAAS,CAAA,EAAG;AACpB,MAAA,MAAA,CAAO,IAAA,CAAK;AAAA,QACV,EAAA,EAAI,SAAS,YAAA,EAAc,CAAA,CAAA;AAAA,QAC3B,KAAA;AAAA,QACA,MAAA,EAAQ;AAAA,OACT,CAAA;AAAA,IACH;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,KAAA,GAAQ,GAAA;AAAA,IACZ,SAAA;AAAA,IACA,SAAA;AAAA,IACA,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,CAAE,gBAAgB,CAAA,CAAE;AAAA,GAChC;AAEA,EAAA,IAAI,EAAA,GAAK,CAAA;AACT,EAAA,IAAI,EAAA,GAAK,CAAA;AAET,EAAA,KAAA,MAAW,CAAC,EAAA,EAAI,EAAE,CAAA,IAAK,KAAA,EAAO;AAE5B,IAAA,MAAM,SAAS,EAAA,GAAK,EAAA;AACpB,IAAA,MAAM,SAAS,EAAA,GAAK,EAAA;AACpB,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,GAAA,CAAI,MAAA,EAAQ,MAAM,CAAA;AAEtC,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,MAAA,EAAQ,CAAA,EAAA,EAAK;AAC/B,MAAA,MAAM,MAAA,GAAS,KAAK,CAAA,GAAI,EAAA;AACxB,MAAA,MAAM,MAAA,GAAS,KAAK,CAAA,GAAI,EAAA;AACxB,MAAA,MAAM,eAA4B,EAAC;AAEnC,MAAA,IAAI,UAAU,MAAA,EAAQ;AACpB,QAAA,MAAMC,QAAAA,GAAU,SAAA,CAAU,EAAA,GAAK,CAAC,CAAA;AAChC,QAAA,MAAMC,QAAAA,GAAU,SAAA,CAAU,EAAA,GAAK,CAAC,CAAA;AAChC,QAAA,MAAM,UAAUC,eAAA,CAAK,kBAAA;AAAA,UACnBF,QAAAA,CAAQ,WAAA;AAAA,UACRC,QAAAA,CAAQ;AAAA,SACV;AACA,QAAA,MAAM,KAAA,GAAoB,OAAA,CAAQ,GAAA,CAAI,CAAC,CAAA,MAAO;AAAA,UAC5C,MAAM,CAAA,CAAE,KAAA,GAAQ,QAAA,GAAW,CAAA,CAAE,UAAU,QAAA,GAAW,OAAA;AAAA,UAClD,OAAO,CAAA,CAAE;AAAA,SACX,CAAE,CAAA;AACF,QAAA,YAAA,CAAa,KAAK,EAAE,IAAA,EAAM,WAAW,OAAA,EAAAD,QAAAA,EAAS,OAAO,CAAA;AACrD,QAAA,YAAA,CAAa,KAAK,EAAE,IAAA,EAAM,SAAS,OAAA,EAAAC,QAAAA,EAAS,OAAO,CAAA;AAAA,MACrD,WAAW,MAAA,EAAQ;AACjB,QAAA,YAAA,CAAa,IAAA,CAAK,EAAE,IAAA,EAAM,SAAA,EAAW,SAAS,SAAA,CAAU,EAAA,GAAK,CAAC,CAAA,EAAI,CAAA;AAAA,MACpE,CAAA,MAAO;AACL,QAAA,YAAA,CAAa,IAAA,CAAK,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,SAAA,CAAU,EAAA,GAAK,CAAC,CAAA,EAAI,CAAA;AAAA,MAClE;AACA,MAAA,SAAA,CAAU,YAAY,CAAA;AAAA,IACxB;AAGA,IAAA,MAAM,OAAA,GAAU,UAAU,EAAE,CAAA;AAC5B,IAAA,MAAM,OAAA,GAAU,UAAU,EAAE,CAAA;AAE5B,IAAA,IAAI,QAAQ,WAAA,KAAgB,OAAA,CAAQ,eAAe,OAAA,CAAQ,EAAA,CAAG,OAAO,CAAA,EAAG;AACtE,MAAA,SAAA,CAAU,CAAC,EAAE,IAAA,EAAM,aAAa,OAAA,EAAS,OAAA,EAAS,CAAC,CAAA;AAAA,IACrD,CAAA,MAAO;AACL,MAAA,MAAM,UAAUC,eAAA,CAAK,kBAAA;AAAA,QACnB,OAAA,CAAQ,WAAA;AAAA,QACR,OAAA,CAAQ;AAAA,OACV;AACA,MAAA,MAAM,KAAA,GAAoB,OAAA,CAAQ,GAAA,CAAI,CAAC,CAAA,MAAO;AAAA,QAC5C,MAAM,CAAA,CAAE,KAAA,GAAQ,QAAA,GAAW,CAAA,CAAE,UAAU,QAAA,GAAW,OAAA;AAAA,QAClD,OAAO,CAAA,CAAE;AAAA,OACX,CAAE,CAAA;AACF,MAAA,SAAA,CAAU;AAAA,QACR,EAAE,IAAA,EAAM,SAAA,EAAW,OAAA,EAAS,KAAA,EAAM;AAAA,QAClC,EAAE,IAAA,EAAM,OAAA,EAAS,OAAA,EAAS,KAAA;AAAM,OACjC,CAAA;AAAA,IACH;AAEA,IAAA,EAAA,GAAK,EAAA,GAAK,CAAA;AACV,IAAA,EAAA,GAAK,EAAA,GAAK,CAAA;AAAA,EACZ;AAGA,EAAA,MAAM,QAAA,GAAW,UAAU,MAAA,GAAS,EAAA;AACpC,EAAA,MAAM,QAAA,GAAW,UAAU,MAAA,GAAS,EAAA;AACpC,EAAA,MAAM,QAAA,GAAW,IAAA,CAAK,GAAA,CAAI,QAAA,EAAU,QAAQ,CAAA;AAE5C,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,QAAA,EAAU,CAAA,EAAA,EAAK;AACjC,IAAA,MAAM,MAAA,GAAS,EAAA,GAAK,CAAA,GAAI,SAAA,CAAU,MAAA;AAClC,IAAA,MAAM,MAAA,GAAS,EAAA,GAAK,CAAA,GAAI,SAAA,CAAU,MAAA;AAClC,IAAA,MAAM,eAA4B,EAAC;AAEnC,IAAA,IAAI,UAAU,MAAA,EAAQ;AACpB,MAAA,MAAM,OAAA,GAAU,SAAA,CAAU,EAAA,GAAK,CAAC,CAAA;AAChC,MAAA,MAAM,OAAA,GAAU,SAAA,CAAU,EAAA,GAAK,CAAC,CAAA;AAChC,MAAA,MAAM,UAAUA,eAAA,CAAK,kBAAA;AAAA,QACnB,OAAA,CAAQ,WAAA;AAAA,QACR,OAAA,CAAQ;AAAA,OACV;AACA,MAAA,MAAM,KAAA,GAAoB,OAAA,CAAQ,GAAA,CAAI,CAAC,CAAA,MAAO;AAAA,QAC5C,MAAM,CAAA,CAAE,KAAA,GAAQ,QAAA,GAAW,CAAA,CAAE,UAAU,QAAA,GAAW,OAAA;AAAA,QAClD,OAAO,CAAA,CAAE;AAAA,OACX,CAAE,CAAA;AACF,MAAA,YAAA,CAAa,KAAK,EAAE,IAAA,EAAM,SAAA,EAAW,OAAA,EAAS,OAAO,CAAA;AACrD,MAAA,YAAA,CAAa,KAAK,EAAE,IAAA,EAAM,OAAA,EAAS,OAAA,EAAS,OAAO,CAAA;AAAA,IACrD,WAAW,MAAA,EAAQ;AACjB,MAAA,YAAA,CAAa,IAAA,CAAK,EAAE,IAAA,EAAM,SAAA,EAAW,SAAS,SAAA,CAAU,EAAA,GAAK,CAAC,CAAA,EAAI,CAAA;AAAA,IACpE,CAAA,MAAO;AACL,MAAA,YAAA,CAAa,IAAA,CAAK,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,SAAA,CAAU,EAAA,GAAK,CAAC,CAAA,EAAI,CAAA;AAAA,IAClE;AACA,IAAA,SAAA,CAAU,YAAY,CAAA;AAAA,EACxB;AAEA,EAAA,OAAO,MAAA;AACT;;ACtJO,SAAS,WAAA,CACd,QACA,MAAA,EACwC;AAjC1C,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AAkCE,EAAA,MAAM,WAAqB,EAAC;AAC5B,EAAA,MAAM,UAA2B,EAAC;AAElC,EAAA,KAAA,MAAW,SAAS,MAAA,EAAQ;AAC1B,IAAA,IAAI,KAAA,CAAM,WAAW,UAAA,EAAY;AAC/B,MAAA,KAAA,MAAW,IAAA,IAAQ,MAAM,KAAA,EAAO;AAC9B,QAAA,IAAI,KAAK,IAAA,KAAS,OAAA,EAAS,QAAA,CAAS,IAAA,CAAK,KAAK,OAAQ,CAAA;AACtD,QAAA,IAAI,KAAK,IAAA,KAAS,WAAA,EAAa,QAAA,CAAS,IAAA,CAAK,KAAK,OAAQ,CAAA;AAAA,MAC5D;AAAA,IACF,CAAA,MAAA,IAAW,KAAA,CAAM,MAAA,KAAW,UAAA,EAAY;AACtC,MAAA,KAAA,MAAW,IAAA,IAAQ,MAAM,KAAA,EAAO;AAC9B,QAAA,IAAI,KAAK,IAAA,KAAS,SAAA,EAAW,QAAA,CAAS,IAAA,CAAK,KAAK,OAAQ,CAAA;AACxD,QAAA,IAAI,KAAK,IAAA,KAAS,WAAA,EAAa,QAAA,CAAS,IAAA,CAAK,KAAK,OAAQ,CAAA;AAAA,MAC5D;AAAA,IACF,CAAA,MAAO;AAEL,MAAA,KAAA,MAAW,IAAA,IAAQ,MAAM,KAAA,EAAO;AAC9B,QAAA,IAAI,IAAA,CAAK,SAAS,WAAA,EAAa;AAC7B,UAAA,QAAA,CAAS,IAAA,CAAK,KAAK,OAAQ,CAAA;AAAA,QAC7B,CAAA,MAAA,IAAW,IAAA,CAAK,IAAA,KAAS,OAAA,EAAS;AAChC,UAAA,OAAA,CAAQ,IAAA,CAAK;AAAA,YACX,IAAA,EAAM,OAAA;AAAA,YACN,YAAY,QAAA,CAAS,MAAA;AAAA,YACrB,OAAA,EAAS,EAAA;AAAA,YACT,OAAA,EAAA,CAAS,EAAA,GAAA,CAAA,EAAA,GAAA,IAAA,CAAK,OAAA,KAAL,IAAA,GAAA,MAAA,GAAA,EAAA,CAAc,gBAAd,IAAA,GAAA,EAAA,GAA6B,EAAA;AAAA,YACtC,OAAO,IAAA,CAAK,KAAA;AAAA,YACZ,SAAS,KAAA,CAAM;AAAA,WAChB,CAAA;AACD,UAAA,QAAA,CAAS,IAAA,CAAK,KAAK,OAAQ,CAAA;AAAA,QAC7B,CAAA,MAAA,IAAW,IAAA,CAAK,IAAA,KAAS,SAAA,EAAW;AAClC,UAAA,OAAA,CAAQ,IAAA,CAAK;AAAA,YACX,IAAA,EAAM,SAAA;AAAA,YACN,YAAY,QAAA,CAAS,MAAA;AAAA,YACrB,OAAA,EAAA,CAAS,EAAA,GAAA,CAAA,EAAA,GAAA,IAAA,CAAK,OAAA,KAAL,IAAA,GAAA,MAAA,GAAA,EAAA,CAAc,gBAAd,IAAA,GAAA,EAAA,GAA6B,EAAA;AAAA,YACtC,OAAA,EAAS,EAAA;AAAA,YACT,OAAO,IAAA,CAAK,KAAA;AAAA,YACZ,SAAS,KAAA,CAAM;AAAA,WAChB,CAAA;AACD,UAAA,QAAA,CAAS,IAAA,CAAK,KAAK,OAAQ,CAAA;AAAA,QAC7B;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,EAAA,IAAI,QAAA,CAAS,WAAW,CAAA,EAAG;AACzB,IAAA,QAAA,CAAS,KAAK,MAAA,CAAO,IAAA,CAAK,aAAa,IAAA,EAAM,EAAE,CAAC,CAAA;AAAA,EAClD;AAEA,EAAA,MAAM,GAAA,GAAM,MAAA,CAAO,IAAA,CAAK,KAAA,EAAO,MAAM,QAAQ,CAAA;AAE7C,EAAA,IAAI,GAAA,GAAM,CAAA;AACV,EAAA,MAAM,YAA4B,EAAC;AACnC,EAAA,KAAA,MAAW,SAAS,QAAA,EAAU;AAC5B,IAAA,SAAA,CAAU,IAAA,CAAK,EAAE,IAAA,EAAM,GAAA,EAAK,IAAI,GAAA,GAAM,KAAA,CAAM,UAAU,CAAA;AACtD,IAAA,GAAA,IAAO,KAAA,CAAM,QAAA;AAAA,EACf;AAEA,EAAA,MAAM,OAAA,GAAwB,OAAA,CAAQ,GAAA,CAAI,CAAC,EAAA,KAAO;AA3FpD,IAAA,IAAAC,GAAAA,EAAAC,GAAAA;AA4FI,IAAA,MAAM,EAAA,GAAK,SAAA,CAAU,EAAA,CAAG,UAAU,CAAA;AAElC,IAAA,MAAM,eAA+B,EAAC;AACtC,IAAA,IAAI,MAAA,GAAS,GAAG,IAAA,GAAO,CAAA;AAEvB,IAAA,IAAI,EAAA,CAAG,SAAS,SAAA,EAAW;AACzB,MAAA,KAAA,MAAW,SAAQD,GAAAA,GAAA,EAAA,CAAG,UAAH,IAAA,GAAAA,GAAAA,GAAY,EAAC,EAAG;AACjC,QAAA,IAAI,IAAA,CAAK,SAAS,QAAA,EAAU;AAC1B,UAAA,YAAA,CAAa,IAAA,CAAK,EAAE,IAAA,EAAM,MAAA,EAAQ,IAAI,MAAA,GAAS,IAAA,CAAK,KAAA,CAAM,MAAA,EAAQ,CAAA;AAClE,UAAA,MAAA,IAAU,KAAK,KAAA,CAAM,MAAA;AAAA,QACvB,CAAA,MAAA,IAAW,IAAA,CAAK,IAAA,KAAS,OAAA,EAAS;AAChC,UAAA,MAAA,IAAU,KAAK,KAAA,CAAM,MAAA;AAAA,QACvB;AAAA,MACF;AACA,MAAA,OAAO;AAAA,QACL,IAAA,EAAM,SAAA;AAAA,QACN,MAAM,EAAA,CAAG,IAAA;AAAA,QACT,SAAS,EAAA,CAAG,OAAA;AAAA,QACZ,OAAA,EAAS,EAAA;AAAA,QACT,YAAY,EAAE,IAAA,EAAM,GAAG,IAAA,EAAM,EAAA,EAAI,GAAG,EAAA,EAAG;AAAA,QACvC,YAAA;AAAA,QACA,SAAS,EAAA,CAAG;AAAA,OACd;AAAA,IACF;AAGA,IAAA,KAAA,MAAW,SAAQC,GAAAA,GAAA,EAAA,CAAG,UAAH,IAAA,GAAAA,GAAAA,GAAY,EAAC,EAAG;AACjC,MAAA,IAAI,IAAA,CAAK,SAAS,QAAA,EAAU;AAC1B,QAAA,YAAA,CAAa,IAAA,CAAK,EAAE,IAAA,EAAM,MAAA,EAAQ,IAAI,MAAA,GAAS,IAAA,CAAK,KAAA,CAAM,MAAA,EAAQ,CAAA;AAClE,QAAA,MAAA,IAAU,KAAK,KAAA,CAAM,MAAA;AAAA,MACvB,CAAA,MAAA,IAAW,IAAA,CAAK,IAAA,KAAS,OAAA,EAAS;AAChC,QAAA,MAAA,IAAU,KAAK,KAAA,CAAM,MAAA;AAAA,MACvB;AAAA,IACF;AACA,IAAA,OAAO;AAAA,MACL,IAAA,EAAM,OAAA;AAAA,MACN,MAAM,EAAA,CAAG,IAAA;AAAA,MACT,OAAA,EAAS,EAAA;AAAA,MACT,SAAS,EAAA,CAAG,OAAA;AAAA,MACZ,YAAY,EAAE,IAAA,EAAM,GAAG,IAAA,EAAM,EAAA,EAAI,GAAG,EAAA,EAAG;AAAA,MACvC,YAAA;AAAA,MACA,SAAS,EAAA,CAAG;AAAA,KACd;AAAA,EACF,CAAC,CAAA;AAED,EAAA,OAAO,EAAE,KAAK,OAAA,EAAQ;AACxB;;;;;;;;;;AC1IA,IAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,SAAA,EAAA,eAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,OAAA,EAAA,OAAA,EAAA,yBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,cAAA;AA6BO,MAAM,aAAA,GAAgB,IAAIC,eAAA,CAAU,mBAAmB;AAE9D,MAAM,WAAA,GAAc,GAAA;AAEpB,IAAI,sBAAsBC,kBAAA,CAAc,KAAA;AAExC,MAAM,cAAA,CAAqC;AAAA,EAazC,WAAA,CAAY,KAAUC,MAAA,EAAkB;AAb1C,IAAA,YAAA,CAAA,IAAA,EAAA,yBAAA,CAAA;AACE,IAAA,YAAA,CAAA,IAAA,EAAA,IAAA,CAAA;AACA,IAAA,YAAA,CAAA,IAAA,EAAA,KAAA,CAAA;AACA,IAAA,YAAA,CAAA,IAAA,EAAA,SAAA,EAAY,KAAA,CAAA;AACZ,IAAA,YAAA,CAAA,IAAA,EAAA,SAAA,EAAwD,IAAA,CAAA;AACxD,IAAA,YAAA,CAAA,IAAA,EAAA,eAAA,EAAsC,IAAA,CAAA;AACtC,IAAA,YAAA,CAAA,IAAA,EAAA,eAAA,EAAyC,IAAA,CAAA;AACzC,IAAA,YAAA,CAAA,IAAA,EAAA,iBAAA,EAA+B,EAAC,CAAA;AAChC,IAAA,YAAA,CAAA,IAAA,EAAA,eAAA,EAAuC,IAAA,CAAA;AACvC,IAAA,YAAA,CAAA,IAAA,EAAA,iBAAA,EAAsD,IAAA,CAAA;AACtD,IAAA,YAAA,CAAA,IAAA,EAAA,OAAA,EAAuB,EAAC,CAAA;AACxB,IAAA,YAAA,CAAA,IAAA,EAAA,OAAA,EAAe,IAAA,CAAA;AAcf,IAAA,IAAA,CAAA,QAAA,GAAW,CAAC,aAAqB,WAAA,KAA+B;AAC9D,MAAA,IAAI,mBAAK,SAAA,CAAA,EAAW;AAEpB,MAAA,MAAM,MAAA,GAAS,YAAA,CAAA,IAAA,EAAK,IAAA,CAAA,CAAK,GAAA,CAAIC,cAAS,CAAA;AACtC,MAAA,YAAA,CAAA,IAAA,EAAK,OAAA,EAAU,YAAA,CAAA,IAAA,EAAK,KAAA,CAAA,CAAM,KAAA,CAAM,MAAA,CAAA;AAEhC,MAAA,IAAI,MAAA;AACJ,MAAA,IAAI,MAAA;AACJ,MAAA,IAAI;AACF,QAAA,MAAA,GAAS,OAAO,WAAW,CAAA;AAC3B,QAAA,IAAI,OAAO,WAAA,KAAgB,QAAA,IAAY,WAAA,CAAY,IAAA,OAAW,EAAA,EAAI;AAChE,UAAA,MAAA,GAAS,OAAO,WAAW,CAAA;AAAA,QAC7B,CAAA,MAAO;AACL,UAAA,MAAA,GAAS,YAAA,CAAA,IAAA,EAAK,OAAM,KAAA,CAAM,GAAA;AAAA,QAC5B;AAAA,MACF,CAAA,CAAA,OAAQ,CAAA,EAAA;AACN,QAAA;AAAA,MACF;AAEA,MAAA,MAAM,YAAsB,EAAC;AAC7B,MAAA,MAAM,YAAsB,EAAC;AAC7B,MAAA,MAAA,CAAO,QAAQ,CAAC,IAAA,KAAS,SAAA,CAAU,IAAA,CAAK,IAAI,CAAC,CAAA;AAC7C,MAAA,MAAA,CAAO,QAAQ,CAAC,IAAA,KAAS,SAAA,CAAU,IAAA,CAAK,IAAI,CAAC,CAAA;AAE7C,MAAA,YAAA,CAAA,IAAA,EAAK,OAAA,EAAU,WAAA,CAAY,SAAA,EAAW,SAAS,CAAA,CAAA;AAE/C,MAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,YAAY,YAAA,CAAA,IAAA,EAAK,OAAA,CAAA,EAAS,mBAAK,OAAA,CAAO,CAAA;AAC1D,MAAA,IAAI,OAAA,CAAQ,WAAW,CAAA,EAAG;AACxB,QAAA;AAAA,MACF;AAEA,MAAA,IAAI,CAAC,mBAAK,iBAAA,CAAA,EAAmB;AAC3B,QAAA,YAAA,CAAA,IAAA,EAAK,mBACF,YAAA,CAAA,IAAA,EAAK,KAAA,CAAA,CAAM,QAAA,CAAS,UAAU,MAAc,MAAM,IAAA,CAAA,CAAA;AAAA,MACvD;AACA,MAAA,YAAA,CAAA,IAAA,EAAK,OAAM,QAAA,CAAS;AAAA,QAClB,UAAU,MAAM;AAAA,OACjB,CAAA;AAED,MAAA,YAAA,CAAA,IAAA,EAAK,SAAA,EAAY,IAAA,CAAA;AACjB,MAAA,YAAA,CAAA,IAAA,EAAK,SAAL,IAAA,CAAA,IAAA,EAAa,IAAA,CAAA;AAAA,IACf,CAAA;AAEA,IAAA,YAAA,CAAA,IAAA,EAAA,OAAA,EAAU,CAAC,YAAY,KAAA,KAAU;AAC/B,MAAA,MAAM,EAAE,GAAA,EAAK,aAAA,EAAe,OAAA,EAAQ,GAAI,WAAA;AAAA,QACtC,YAAA,CAAA,IAAA,EAAK,OAAA,CAAA;AAAA,QACL,YAAA,CAAA,IAAA,EAAK,OAAA;AAAA,OACP;AACA,MAAA,MAAM,UAAA,GAAa,IAAA,CAAK,YAAA,CAAA,IAAA,EAAK,IAAA,CAAA,EAAM,mBAAmB,CAAA;AACtD,MAAA,MAAM,UAAA,GAAa,IAAA,CAAK,YAAA,CAAA,IAAA,EAAK,IAAA,CAAA,EAAM,mBAAmB,CAAA;AAEtD,MAAA,MAAM,EAAA,GAAK,gBAAA;AAAA,QACT,aAAA;AAAA,QACA,OAAA;AAAA,QACA,CAAC,EAAA,KAAO,IAAA,CAAK,WAAA,CAAY,EAAE,CAAA;AAAA,QAC3B,CAAC,EAAA,KAAO,IAAA,CAAK,WAAA,CAAY,EAAE,CAAA;AAAA,QAC3B,UAAA;AAAA,QACA;AAAA,OACF;AACA,MAAA,mBAAA,GAAsB,EAAA;AAEtB,MAAA,MAAM,EAAA,GAAK,YAAA,CAAA,IAAA,EAAK,KAAA,CAAA,CAAM,KAAA,CAAM,EAAA,CAAG,WAAA;AAAA,QAC7B,CAAA;AAAA,QACA,YAAA,CAAA,IAAA,EAAK,KAAA,CAAA,CAAM,KAAA,CAAM,GAAA,CAAI,OAAA,CAAQ,IAAA;AAAA,QAC7B,aAAA,CAAc;AAAA,OAChB;AACA,MAAA,YAAA,CAAA,IAAA,EAAK,KAAA,CAAA,CAAM,SAAS,EAAE,CAAA;AAEtB,MAAA,IAAI,SAAA,EAAW;AACb,QAAA,eAAA,CAAA,IAAA,EAAK,2CAAL,IAAA,CAAA,IAAA,EAAkB,OAAA,CAAA;AAAA,MACpB,CAAA,MAAA,IAAW,mBAAK,SAAA,CAAA,EAAW;AACzB,QAAA,eAAA,CAAA,IAAA,EAAK,2CAAL,IAAA,CAAA,IAAA,EAAkB,OAAA,CAAA;AAAA,MACpB;AAAA,IACF,CAAA,CAAA;AAEA,IAAA,IAAA,CAAA,WAAA,GAAc,CAAC,EAAA,KAAe;AAC5B,MAAA,MAAM,KAAA,GAAQ,mBAAK,OAAA,CAAA,CAAQ,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,OAAO,EAAE,CAAA;AAClD,MAAA,IAAI,KAAA,EAAO;AACT,QAAA,KAAA,CAAM,MAAA,GAAS,UAAA;AACf,QAAA,MAAM,UAAA,GAAa,mBAAK,OAAA,CAAA,CAAQ,IAAA;AAAA,UAC9B,CAAC,CAAA,KACC,CAAA,CAAE,MAAA,KAAW,SAAA,IAAa,CAAA,CAAE,KAAA,CAAM,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,IAAA,KAAS,WAAW;AAAA,SACxE;AACA,QAAA,IAAI,CAAC,UAAA,EAAY;AACf,UAAA,IAAA,CAAK,QAAA,EAAS;AAAA,QAChB,CAAA,MAAO;AACL,UAAA,YAAA,CAAA,IAAA,EAAK,OAAA,CAAA,CAAL,IAAA,CAAA,IAAA,CAAA;AAAA,QACF;AAAA,MACF;AAAA,IACF,CAAA;AAEA,IAAA,IAAA,CAAA,WAAA,GAAc,CAAC,EAAA,KAAe;AAC5B,MAAA,MAAM,KAAA,GAAQ,mBAAK,OAAA,CAAA,CAAQ,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,OAAO,EAAE,CAAA;AAClD,MAAA,IAAI,KAAA,EAAO;AACT,QAAA,KAAA,CAAM,MAAA,GAAS,UAAA;AACf,QAAA,MAAM,UAAA,GAAa,mBAAK,OAAA,CAAA,CAAQ,IAAA;AAAA,UAC9B,CAAC,CAAA,KACC,CAAA,CAAE,MAAA,KAAW,SAAA,IAAa,CAAA,CAAE,KAAA,CAAM,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,IAAA,KAAS,WAAW;AAAA,SACxE;AACA,QAAA,IAAI,CAAC,UAAA,EAAY;AACf,UAAA,IAAA,CAAK,QAAA,EAAS;AAAA,QAChB,CAAA,MAAO;AACL,UAAA,YAAA,CAAA,IAAA,EAAK,OAAA,CAAA,CAAL,IAAA,CAAA,IAAA,CAAA;AAAA,QACF;AAAA,MACF;AAAA,IACF,CAAA;AAEA,IAAA,IAAA,CAAA,QAAA,GAAW,MAAY;AACrB,MAAA,IAAI,CAAC,mBAAK,SAAA,CAAA,EAAW;AACrB,MAAA,eAAA,CAAA,IAAA,EAAK,yBAAA,EAAA,cAAA,CAAA,CAAL,IAAA,CAAA,IAAA,CAAA;AAEA,MAAA,KAAA,MAAW,KAAA,IAAS,mBAAK,OAAA,CAAA,EAAS;AAChC,QAAA,IAAI,KAAA,CAAM,WAAW,SAAA,EAAW;AAC9B,UAAA,KAAA,CAAM,MAAA,GAAS,UAAA;AAAA,QACjB;AAAA,MACF;AAEA,MAAA,MAAM,EAAE,KAAK,QAAA,EAAS,GAAI,YAAY,YAAA,CAAA,IAAA,EAAK,OAAA,CAAA,EAAS,mBAAK,OAAA,CAAO,CAAA;AAChE,MAAA,MAAM,EAAA,GAAK,YAAA,CAAA,IAAA,EAAK,KAAA,CAAA,CAAM,KAAA,CAAM,EAAA,CAAG,WAAA;AAAA,QAC7B,CAAA;AAAA,QACA,YAAA,CAAA,IAAA,EAAK,KAAA,CAAA,CAAM,KAAA,CAAM,GAAA,CAAI,OAAA,CAAQ,IAAA;AAAA,QAC7B,QAAA,CAAS;AAAA,OACX;AAEA,MAAA,mBAAA,GAAsBF,kBAAA,CAAc,KAAA;AACpC,MAAA,YAAA,CAAA,IAAA,EAAK,SAAA,EAAY,KAAA,CAAA;AACjB,MAAA,YAAA,CAAA,IAAA,EAAK,SAAU,EAAC,CAAA;AAEhB,MAAA,YAAA,CAAA,IAAA,EAAK,KAAA,CAAA,CAAM,SAAS,EAAE,CAAA;AAEtB,MAAA,IAAI,mBAAK,iBAAA,CAAA,EAAmB;AAC1B,QAAA,YAAA,CAAA,IAAA,EAAK,OAAM,QAAA,CAAS;AAAA,UAClB,UAAU,YAAA,CAAA,IAAA,EAAK,iBAAA;AAAA,SAChB,CAAA;AACD,QAAA,YAAA,CAAA,IAAA,EAAK,iBAAA,EAAoB,IAAA,CAAA;AAAA,MAC3B,CAAA,MAAO;AACL,QAAA,YAAA,CAAA,IAAA,EAAK,OAAM,QAAA,CAAS;AAAA,UAClB,UAAU,MAAM;AAAA,SACjB,CAAA;AAAA,MACH;AAAA,IACF,CAAA;AAEA,IAAA,IAAA,CAAA,MAAA,GAAS,CAAC,IAAA,KAAqB;AAC7B,MAAA,YAAA,CAAA,IAAA,EAAK,KAAA,EAAQ,IAAA,CAAA;AAAA,IACf,CAAA;AAEA,IAAA,IAAA,CAAA,OAAA,GAAU,MAAM;AACd,MAAA,eAAA,CAAA,IAAA,EAAK,yBAAA,EAAA,cAAA,CAAA,CAAL,IAAA,CAAA,IAAA,CAAA;AAAA,IACF,CAAA;AA/JE,IAAA,YAAA,CAAA,IAAA,EAAK,IAAA,EAAO,GAAA,CAAA;AACZ,IAAA,YAAA,CAAA,IAAA,EAAK,KAAA,EAAQC,MAAA,CAAA;AAEb,IAAA,MAAM,GAAA,GAAqB;AAAA,MACzB,UAAU,CAAC,KAAA,EAAe,UAAmB,IAAA,CAAK,QAAA,CAAS,OAAO,KAAK,CAAA;AAAA,MACvE,QAAA,EAAU,MAAM,IAAA,CAAK,QAAA,EAAS;AAAA,MAC9B,SAAA,EAAW,MAAM,YAAA,CAAA,IAAA,EAAK,SAAA;AAAA,KACxB;AACA,IAAA,GAAA,CAAI,GAAA,CAAI,gBAAA,CAAiB,GAAA,EAAK,GAAG,CAAA;AAAA,EACnC;AA4UF;AAlWE,IAAA,GAAA,IAAA,OAAA,EAAA;AACA,KAAA,GAAA,IAAA,OAAA,EAAA;AACA,SAAA,GAAA,IAAA,OAAA,EAAA;AACA,SAAA,GAAA,IAAA,OAAA,EAAA;AACA,eAAA,GAAA,IAAA,OAAA,EAAA;AACA,eAAA,GAAA,IAAA,OAAA,EAAA;AACA,iBAAA,GAAA,IAAA,OAAA,EAAA;AACA,eAAA,GAAA,IAAA,OAAA,EAAA;AACA,iBAAA,GAAA,IAAA,OAAA,EAAA;AACA,OAAA,GAAA,IAAA,OAAA,EAAA;AACA,OAAA,GAAA,IAAA,OAAA,EAAA;AAyDA,OAAA,GAAA,IAAA,OAAA,EAAA;AApEF,yBAAA,GAAA,IAAA,OAAA,EAAA;AA+KE,WAAA,GAAS,SAAC,GAAA,EAAa;AACrB,EAAA,IAAI;AACF,IAAA,MAAM,OAAO,YAAA,CAAA,IAAA,EAAK,KAAA,CAAA;AAClB,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,WAAA,CAAY,GAAG,CAAA;AAEnC,IAAA,IAAI,eAAmC,IAAA,CAAK,GAAA;AAC5C,IAAA,OAAO,YAAA,EAAc;AACnB,MAAA,MAAM,EAAE,SAAA,EAAU,GAAI,gBAAA,CAAiB,YAAY,CAAA;AACnD,MAAA,IAAA,CACG,cAAc,MAAA,IAAU,SAAA,KAAc,aACvC,YAAA,CAAa,YAAA,GAAe,aAAa,YAAA,EACzC;AACA,QAAA;AAAA,MACF;AACA,MAAA,YAAA,GAAe,YAAA,CAAa,aAAA;AAAA,IAC9B;AAEA,IAAA,IAAI,YAAA,EAAc;AAChB,MAAA,MAAM,UAAA,GAAa,aAAa,qBAAA,EAAsB;AACtD,MAAA,MAAM,eACJ,MAAA,CAAO,GAAA,GAAM,UAAA,CAAW,GAAA,GAAM,aAAa,SAAA,GAAY,EAAA;AACzD,MAAA,YAAA,CAAa,SAAS,EAAE,GAAA,EAAK,YAAA,EAAc,QAAA,EAAU,UAAU,CAAA;AAAA,IACjE,CAAA,MAAO;AACL,MAAA,MAAA,CAAO,QAAA,CAAS;AAAA,QACd,GAAA,EAAK,MAAA,CAAO,GAAA,GAAM,MAAA,CAAO,OAAA,GAAU,GAAA;AAAA,QACnC,QAAA,EAAU;AAAA,OACX,CAAA;AAAA,IACH;AAAA,EACF,CAAA,CAAA,OAAQ,CAAA,EAAA;AAAA,EAER;AACF,CAAA;AAEA,cAAA,GAAY,SAAC,OAAA,EAAuB;AAClC,EAAA,eAAA,CAAA,IAAA,EAAK,yBAAA,EAAA,cAAA,CAAA,CAAL,IAAA,CAAA,IAAA,CAAA;AAEA,EAAA,MAAM,eAAA,GAAkB,YAAA,CAAA,IAAA,EAAK,KAAA,CAAA,CAAM,GAAA,CAAI,aAAA;AACvC,EAAA,IAAI,CAAC,eAAA,EAAiB;AACtB,EAAA,MAAM,OAAO,eAAA,CAAgB,aAAA;AAC7B,EAAA,IAAI,CAAC,IAAA,EAAM;AAGX,EAAA,MAAM,SAAA,GAAY,QAAA,CAAS,aAAA,CAAc,KAAK,CAAA;AAC9C,EAAA,SAAA,CAAU,MAAM,QAAA,GAAW,OAAA;AAC3B,EAAA,SAAA,CAAU,MAAM,MAAA,GAAS,KAAA;AACzB,EAAA,SAAA,CAAU,KAAA,CAAM,KAAA,GAAQ,CAAA,EAAG,WAAW,CAAA,EAAA,CAAA;AACtC,EAAA,SAAA,CAAU,MAAM,QAAA,GAAW,QAAA;AAC3B,EAAA,SAAA,CAAU,MAAM,UAAA,GACd,qHAAA;AACF,EAAA,SAAA,CAAU,MAAM,eAAA,GAAkB,kCAAA;AAClC,EAAA,IAAA,CAAK,YAAY,SAAS,CAAA;AAC1B,EAAA,YAAA,CAAA,IAAA,EAAK,eAAA,EAAkB,SAAA,CAAA;AAGvB,EAAA,eAAA,CAAgB,KAAA,CAAM,YAAA,GAAe,CAAA,EAAG,WAAW,CAAA,EAAA,CAAA;AAEnD,EAAA,YAAA,CAAA,IAAA,EAAK,SAAA,EAAY,gBAAA;AAAA,IACf,SAAA;AAAA,IACA,OAAA;AAAA,IACA,CAAC,IAAA,KAAS,eAAA,CAAA,IAAA,EAAK,yBAAA,EAAA,WAAA,CAAA,CAAL,IAAA,CAAA,IAAA,EAAe,IAAA,CAAA;AAAA,IACzB,MAAM,KAAK,QAAA;AAAS,GACtB,CAAA;AAGA,EAAA,YAAA,CAAA,IAAA,EAAK,iBAAkB,MAAM;AAC3B,IAAA,MAAM,QAAA,GAAW,KAAK,qBAAA,EAAsB;AAC5C,IAAA,IAAI,MAAM,QAAA,CAAS,GAAA;AAEnB,IAAA,MAAM,UAAU,IAAA,CAAK,aAAA;AAAA,MACnB;AAAA,KACF;AACA,IAAA,IAAI,OAAA,IAAW,OAAA,CAAQ,YAAA,GAAe,CAAA,EAAG;AACvC,MAAA,MAAM,WAAA,GAAc,QAAQ,qBAAA,EAAsB;AAClD,MAAA,GAAA,GAAM,IAAA,CAAK,GAAA,CAAI,GAAA,EAAK,WAAA,CAAY,MAAM,CAAA;AAAA,IACxC;AAEA,IAAA,MAAM,UAAU,IAAA,CAAK,aAAA;AAAA,MACnB;AAAA,KACF;AACA,IAAA,IAAI,OAAA,IAAW,OAAA,CAAQ,YAAA,GAAe,CAAA,EAAG;AACvC,MAAA,GAAA,GAAM,KAAK,GAAA,CAAI,GAAA,EAAK,OAAA,CAAQ,qBAAA,GAAwB,MAAM,CAAA;AAAA,IAC5D;AAEA,IAAA,IAAI,MAAA,GAAS,OAAO,WAAA,GAAc,GAAA;AAClC,IAAA,IAAI,GAAA,GAAM,MAAA,GAAS,QAAA,CAAS,MAAA,EAAQ;AAClC,MAAA,MAAA,GAAS,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,QAAA,CAAS,SAAS,GAAG,CAAA;AAAA,IAC5C;AACA,IAAA,SAAA,CAAU,KAAA,CAAM,GAAA,GAAM,CAAA,EAAG,GAAG,CAAA,EAAA,CAAA;AAC5B,IAAA,SAAA,CAAU,KAAA,CAAM,MAAA,GAAS,CAAA,EAAG,MAAM,CAAA,EAAA,CAAA;AAClC,IAAA,SAAA,CAAU,MAAM,IAAA,GAAO,MAAA;AAEvB,IAAA,IAAI,UAAA,GAAa,MAAA,CAAO,UAAA,GAAa,QAAA,CAAS,KAAA;AAC9C,IAAA,IAAI,WAAA,GAAc,UAAA;AAClB,IAAA,IAAI,UAAA,GAAa,KAAA;AACjB,IAAA,IAAI,QAAA,CAAS,eAAA,CAAgB,YAAA,GAAe,MAAA,CAAO,WAAA,EAAa;AAC9D,MAAA,UAAA,GAAa,IAAA;AAAA,IACf;AACA,IAAA,IAAI,MAAA,GAA6B,IAAA;AACjC,IAAA,OAAO,MAAA,IAAU,MAAA,KAAW,QAAA,CAAS,IAAA,EAAM;AACzC,MAAA,MAAM,EAAE,SAAA,EAAU,GAAI,gBAAA,CAAiB,MAAM,CAAA;AAC7C,MAAA,IAAI,SAAA,KAAc,MAAA,IAAU,SAAA,KAAc,QAAA,EAAU;AAClD,QAAA,IAAI,MAAA,CAAO,YAAA,GAAe,MAAA,CAAO,YAAA,EAAc;AAC7C,UAAA,UAAA,GAAa,IAAA;AACb,UAAA;AAAA,QACF;AAAA,MACF;AACA,MAAA,MAAA,GAAS,MAAA,CAAO,aAAA;AAAA,IAClB;AACA,IAAA,IAAI,UAAA,EAAY;AACd,MAAA,WAAA,GAAc,IAAA,CAAK,GAAA,CAAI,WAAA,EAAa,EAAE,CAAA;AAAA,IACxC,CAAA,MAAO;AACL,MAAA,WAAA,GAAc,IAAA,CAAK,GAAA,CAAI,WAAA,EAAa,CAAC,CAAA;AAAA,IACvC;AACA,IAAA,SAAA,CAAU,KAAA,CAAM,KAAA,GAAQ,CAAA,EAAG,WAAW,CAAA,EAAA,CAAA;AAGtC,IAAA,eAAA,CAAgB,KAAA,CAAM,YAAA,GAAe,CAAA,EAAG,WAAW,CAAA,EAAA,CAAA;AAAA,EACrD,CAAA,CAAA;AAEA,EAAA,YAAA,CAAA,IAAA,EAAK,eAAA,CAAA,CAAL,IAAA,CAAA,IAAA,CAAA;AAEA,EAAA,UAAA,CAAW,MAAM;AA3UrB,IAAA,IAAA,EAAA;AA4UM,IAAA,CAAA,EAAA,GAAA,YAAA,CAAA,IAAA,EAAK,eAAA,CAAA,KAAL,IAAA,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,IAAA,CAAA;AAAA,EACF,GAAG,GAAG,CAAA;AAGN,EAAA,YAAA,CAAA,IAAA,EAAK,eAAA,EAAkB,IAAI,cAAA,CAAe,YAAA,CAAA,IAAA,EAAK,eAAA,CAAe,CAAA,CAAA;AAC9D,EAAA,YAAA,CAAA,IAAA,EAAK,eAAA,CAAA,CAAgB,QAAQ,IAAI,CAAA;AACjC,EAAA,MAAA,CAAO,gBAAA,CAAiB,QAAA,EAAU,YAAA,CAAA,IAAA,EAAK,eAAA,CAAe,CAAA;AACtD,EAAA,MAAA,CAAO,gBAAA,CAAiB,QAAA,EAAU,YAAA,CAAA,IAAA,EAAK,eAAA,CAAA,EAAiB;AAAA,IACtD,OAAA,EAAS,IAAA;AAAA,IACT,OAAA,EAAS;AAAA,GACV,CAAA;AAED,EAAA,IAAI,YAAA,GAA4B,IAAA;AAChC,EAAA,OAAO,YAAA,IAAgB,iBAAiB,QAAA,EAAU;AAChD,IAAA,IAAI,wBAAwB,OAAA,EAAS;AACnC,MAAA,YAAA,CAAa,gBAAA,CAAiB,QAAA,EAAU,YAAA,CAAA,IAAA,EAAK,eAAA,CAAA,EAAiB;AAAA,QAC5D,OAAA,EAAS;AAAA,OACV,CAAA;AACD,MAAA,YAAA,CAAA,IAAA,EAAK,iBAAA,CAAA,CAAkB,KAAK,YAAY,CAAA;AAAA,IAC1C;AACA,IAAA,YAAA,GACE,YAAA,CAAa,cAAe,YAAA,CAA4B,IAAA;AAAA,EAC5D;AACF,CAAA;AAEA,cAAA,GAAY,WAAG;AACb,EAAA,IAAI,mBAAK,SAAA,CAAA,EAAW;AAClB,IAAA,YAAA,CAAA,IAAA,EAAK,WAAU,OAAA,EAAQ;AACvB,IAAA,YAAA,CAAA,IAAA,EAAK,SAAA,EAAY,IAAA,CAAA;AAAA,EACnB;AACA,EAAA,IAAI,mBAAK,eAAA,CAAA,EAAiB;AACxB,IAAA,YAAA,CAAA,IAAA,EAAK,iBAAgB,MAAA,EAAO;AAC5B,IAAA,YAAA,CAAA,IAAA,EAAK,eAAA,EAAkB,IAAA,CAAA;AAAA,EACzB;AAEA,EAAA,IAAI,mBAAK,eAAA,CAAA,EAAiB;AACxB,IAAA,YAAA,CAAA,IAAA,EAAK,iBAAgB,UAAA,EAAW;AAChC,IAAA,YAAA,CAAA,IAAA,EAAK,eAAA,EAAkB,IAAA,CAAA;AAAA,EACzB;AAEA,EAAA,IAAI,mBAAK,eAAA,CAAA,EAAiB;AACxB,IAAA,MAAA,CAAO,mBAAA,CAAoB,QAAA,EAAU,YAAA,CAAA,IAAA,EAAK,eAAA,CAAe,CAAA;AACzD,IAAA,MAAA,CAAO,mBAAA,CAAoB,QAAA,EAAU,YAAA,CAAA,IAAA,EAAK,eAAA,CAAA,EAAiB;AAAA,MACzD,OAAA,EAAS;AAAA,KACV,CAAA;AAED,IAAA,KAAA,MAAW,SAAA,IAAa,mBAAK,iBAAA,CAAA,EAAmB;AAC9C,MAAA,SAAA,CAAU,mBAAA,CAAoB,QAAA,EAAU,YAAA,CAAA,IAAA,EAAK,eAAA,CAAe,CAAA;AAAA,IAC9D;AACA,IAAA,YAAA,CAAA,IAAA,EAAK,mBAAoB,EAAC,CAAA;AAC1B,IAAA,YAAA,CAAA,IAAA,EAAK,eAAA,EAAkB,IAAA,CAAA;AAAA,EACzB;AAEA,EAAA,MAAM,eAAA,GAAkB,YAAA,CAAA,IAAA,EAAK,KAAA,CAAA,CAAM,GAAA,CAAI,aAAA;AACvC,EAAA,IAAI,eAAA,EAAiB;AACnB,IAAA,eAAA,CAAgB,MAAM,YAAA,GAAe,EAAA;AAAA,EACvC;AACF,CAAA;AAGF,SAAS,iBACP,GAAA,EACA,OAAA,EACA,QAAA,EACA,QAAA,EACA,YACA,UAAA,EACe;AACf,EAAA,MAAM,cAA4B,EAAC;AACnC,EAAA,MAAM,YAAA,uBAAmB,GAAA,EAAY;AAErC,EAAA,KAAA,MAAW,UAAU,OAAA,EAAS;AAC5B,IAAA,IAAI,CAAC,YAAA,CAAa,GAAA,CAAI,MAAA,CAAO,OAAO,CAAA,EAAG;AACrC,MAAA,YAAA,CAAa,GAAA,CAAI,OAAO,OAAO,CAAA;AAE/B,MAAA,WAAA,CAAY,IAAA;AAAA,QACVE,eAAA,CAAW,MAAA;AAAA,UACT,OAAO,UAAA,CAAW,IAAA;AAAA,UAClB,MAAM;AACJ,YAAA,MAAM,OAAA,GAAU,QAAA,CAAS,aAAA,CAAc,KAAK,CAAA;AAC5C,YAAA,OAAA,CAAQ,MAAM,QAAA,GAAW,UAAA;AACzB,YAAA,OAAA,CAAQ,MAAM,KAAA,GAAQ,MAAA;AACtB,YAAA,OAAA,CAAQ,MAAM,MAAA,GAAS,GAAA;AACvB,YAAA,OAAA,CAAQ,MAAM,QAAA,GAAW,SAAA;AAEzB,YAAA,MAAM,SAAA,GAAY,QAAA,CAAS,aAAA,CAAc,KAAK,CAAA;AAC9C,YAAA,SAAA,CAAU,SAAA,GAAY,oBAAA;AACtB,YAAA,SAAA,CAAU,MAAM,QAAA,GAAW,UAAA;AAC3B,YAAA,SAAA,CAAU,MAAM,KAAA,GAAQ,KAAA;AACxB,YAAA,SAAA,CAAU,MAAM,GAAA,GAAM,KAAA;AACtB,YAAA,SAAA,CAAU,MAAM,MAAA,GAAS,IAAA;AACzB,YAAA,SAAA,CAAU,MAAM,OAAA,GAAU,MAAA;AAC1B,YAAA,SAAA,CAAU,MAAM,GAAA,GAAM,KAAA;AAEtB,YAAA,MAAM,SAAA,GAAY,QAAA,CAAS,aAAA,CAAc,QAAQ,CAAA;AACjD,YAAA,SAAA,CAAU,WAAA,GAAc,UAAA;AACxB,YAAA,SAAA,CAAU,MAAM,eAAA,GAAkB,SAAA;AAClC,YAAA,SAAA,CAAU,MAAM,KAAA,GAAQ,OAAA;AACxB,YAAA,SAAA,CAAU,MAAM,MAAA,GAAS,MAAA;AACzB,YAAA,SAAA,CAAU,MAAM,YAAA,GAAe,KAAA;AAC/B,YAAA,SAAA,CAAU,MAAM,OAAA,GAAU,SAAA;AAC1B,YAAA,SAAA,CAAU,MAAM,MAAA,GAAS,SAAA;AACzB,YAAA,SAAA,CAAU,MAAM,QAAA,GAAW,MAAA;AAC3B,YAAA,SAAA,CAAU,gBAAA,CAAiB,WAAA,EAAa,CAAC,CAAA,KAAM;AAC7C,cAAA,CAAA,CAAE,cAAA,EAAe;AACjB,cAAA,QAAA,CAAS,OAAO,OAAO,CAAA;AAAA,YACzB,CAAC,CAAA;AAED,YAAA,MAAM,SAAA,GAAY,QAAA,CAAS,aAAA,CAAc,QAAQ,CAAA;AACjD,YAAA,SAAA,CAAU,WAAA,GAAc,UAAA;AACxB,YAAA,SAAA,CAAU,MAAM,eAAA,GAAkB,SAAA;AAClC,YAAA,SAAA,CAAU,MAAM,KAAA,GAAQ,OAAA;AACxB,YAAA,SAAA,CAAU,MAAM,MAAA,GAAS,MAAA;AACzB,YAAA,SAAA,CAAU,MAAM,YAAA,GAAe,KAAA;AAC/B,YAAA,SAAA,CAAU,MAAM,OAAA,GAAU,SAAA;AAC1B,YAAA,SAAA,CAAU,MAAM,MAAA,GAAS,SAAA;AACzB,YAAA,SAAA,CAAU,MAAM,QAAA,GAAW,MAAA;AAC3B,YAAA,SAAA,CAAU,gBAAA,CAAiB,WAAA,EAAa,CAAC,CAAA,KAAM;AAC7C,cAAA,CAAA,CAAE,cAAA,EAAe;AACjB,cAAA,QAAA,CAAS,OAAO,OAAO,CAAA;AAAA,YACzB,CAAC,CAAA;AAED,YAAA,SAAA,CAAU,YAAY,SAAS,CAAA;AAC/B,YAAA,SAAA,CAAU,YAAY,SAAS,CAAA;AAC/B,YAAA,OAAA,CAAQ,YAAY,SAAS,CAAA;AAC7B,YAAA,OAAO,OAAA;AAAA,UACT,CAAA;AAAA,UACA,EAAE,MAAM,EAAA;AAAG;AACb,OACF;AAAA,IACF;AAEA,IAAA,MAAM,QAAA,GACJ,MAAA,CAAO,IAAA,KAAS,OAAA,GAAU,kBAAA,GAAqB,oBAAA;AACjD,IAAA,WAAA,CAAY,IAAA;AAAA,MACVA,gBAAW,IAAA,CAAK,MAAA,CAAO,WAAW,IAAA,EAAM,MAAA,CAAO,WAAW,EAAA,EAAI;AAAA,QAC5D,KAAA,EAAO;AAAA,OACR;AAAA,KACH;AAEA,IAAA,MAAM,SAAA,GACJ,MAAA,CAAO,IAAA,KAAS,OAAA,GACZ,yBAAA,GACA,2BAAA;AACN,IAAA,KAAA,MAAW,CAAA,IAAK,OAAO,YAAA,EAAc;AACnC,MAAA,IAAI,CAAA,CAAE,EAAA,GAAK,CAAA,CAAE,IAAA,EAAM;AACjB,QAAA,WAAA,CAAY,IAAA,CAAKA,eAAA,CAAW,MAAA,CAAO,CAAA,CAAE,IAAA,EAAM,CAAA,CAAE,EAAA,EAAI,EAAE,KAAA,EAAO,SAAA,EAAW,CAAC,CAAA;AAAA,MACxE;AAAA,IACF;AAAA,EACF;AAEA,EAAA,OAAOH,kBAAA,CAAc,MAAA,CAAO,GAAA,EAAK,WAAW,CAAA;AAC9C;AAEO,MAAM,gBAAA,GAAmBI,YAAA,CAAO,CAAC,GAAA,KAAQ;AAC9C,EAAA,OAAO,IAAIC,YAAA,CAAO;AAAA,IAChB,GAAA,EAAK,aAAA;AAAA,IACL,MAAM,CAAC,IAAA,KAAS,IAAI,cAAA,CAAe,KAAK,IAAI,CAAA;AAAA,IAC5C,KAAA,EAAO;AAAA,MACL,aAAa,MAAM;AAAA;AACrB,GACD,CAAA;AACH,CAAC;AAEM,MAAM,UAAA,GAAqD,CAChE,MAAA,EACA,MAAA,KACG;AACH,EAAA,MAAA,CACG,MAAA,CAAO,mBAAmB,YAAA,CAAa,UAAU,CAAC,CAAA,CAClD,MAAA,CAAO,CAAC,GAAA,KAAQ;AACf,IAAA,IAAI,MAAA,EAAQ;AACV,MAAA,GAAA,CAAI,MAAA,CAAO,gBAAA,CAAiB,GAAA,EAAK,CAAC,IAAA,MAAU;AAAA,QAC1C,GAAG,IAAA;AAAA,QACH,GAAG;AAAA,OACL,CAAE,CAAA;AAAA,IACJ;AAAA,EACF,CAAC,EACA,GAAA,CAAI,gBAAgB,EACpB,GAAA,CAAI,gBAAgB,CAAA,CACpB,GAAA,CAAI,gBAAgB,CAAA;AACzB;;;;;;;"}
@@ -173,7 +173,10 @@ const zhCN = {
173
173
  "shortcuts.hardBreak": "\u6362\u884C",
174
174
  "shortcuts.history": "\u5386\u53F2\u8BB0\u5F55",
175
175
  "shortcuts.undo": "\u64A4\u9500",
176
- "shortcuts.redo": "\u91CD\u505A"
176
+ "shortcuts.redo": "\u91CD\u505A",
177
+ // inline-diff
178
+ "inlineDiff.accept": "\u63A5\u53D7",
179
+ "inlineDiff.reject": "\u62D2\u7EDD"
177
180
  };
178
181
  const enUS = {
179
182
  "handle.add": "Add content",
@@ -315,7 +318,9 @@ const enUS = {
315
318
  "shortcuts.hardBreak": "Hard Break",
316
319
  "shortcuts.history": "History",
317
320
  "shortcuts.undo": "Undo",
318
- "shortcuts.redo": "Redo"
321
+ "shortcuts.redo": "Redo",
322
+ "inlineDiff.accept": "Accept",
323
+ "inlineDiff.reject": "Reject"
319
324
  };
320
325
  const translationsCtx = ctx.createSlice(
321
326
  {
@@ -361,6 +366,8 @@ var CrepeFeature = /* @__PURE__ */ ((CrepeFeature2) => {
361
366
  CrepeFeature2["Table"] = "table";
362
367
  CrepeFeature2["Latex"] = "latex";
363
368
  CrepeFeature2["Attachment"] = "attachment";
369
+ CrepeFeature2["InlineDiff"] = "inline-diff";
370
+ CrepeFeature2["DiffBlock"] = "diff-block";
364
371
  return CrepeFeature2;
365
372
  })(CrepeFeature || {});
366
373