@contentful/field-editor-reference 5.9.0 → 5.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (199) hide show
  1. package/dist/cjs/__fixtures__/FakeSdk.js +183 -0
  2. package/dist/cjs/__fixtures__/asset/index.js +37 -0
  3. package/dist/cjs/__fixtures__/content-type/index.js +16 -0
  4. package/dist/cjs/__fixtures__/entry/index.js +33 -0
  5. package/dist/cjs/__fixtures__/fixtures.js +71 -0
  6. package/dist/cjs/__fixtures__/locale/index.js +40 -0
  7. package/dist/cjs/__fixtures__/space/index.js +16 -0
  8. package/dist/cjs/assets/MultipleMediaEditor.js +86 -0
  9. package/dist/cjs/assets/SingleMediaEditor.js +69 -0
  10. package/dist/cjs/assets/WrappedAssetCard/AssetCardActions.js +125 -0
  11. package/dist/cjs/assets/WrappedAssetCard/FetchingWrappedAssetCard.js +171 -0
  12. package/dist/cjs/assets/WrappedAssetCard/WrappedAssetCard.js +159 -0
  13. package/dist/cjs/assets/WrappedAssetCard/WrappedAssetLink.js +130 -0
  14. package/dist/cjs/assets/index.js +24 -0
  15. package/dist/cjs/common/EntityStore.js +420 -0
  16. package/dist/cjs/common/MultipleReferenceEditor.js +164 -0
  17. package/dist/cjs/common/ReferenceEditor.js +74 -0
  18. package/dist/cjs/common/SingleReferenceEditor.js +118 -0
  19. package/dist/cjs/common/SortableLinkList.js +95 -0
  20. package/dist/cjs/common/customCardTypes.js +44 -0
  21. package/dist/cjs/common/useAccessApi.js +19 -0
  22. package/dist/cjs/common/useContentTypePermissions.js +54 -0
  23. package/dist/cjs/common/useEditorPermissions.js +77 -0
  24. package/dist/cjs/common/useEditorPermissions.spec.js +205 -0
  25. package/dist/cjs/components/AssetThumbnail/AssetThumbnail.js +62 -0
  26. package/dist/cjs/components/CreateEntryLinkButton/CreateEntryLinkButton.js +102 -0
  27. package/dist/cjs/components/CreateEntryLinkButton/CreateEntryLinkButton.spec.js +254 -0
  28. package/dist/cjs/components/CreateEntryLinkButton/CreateEntryMenuTrigger.js +199 -0
  29. package/dist/cjs/components/CreateEntryLinkButton/CreateEntryMenuTrigger.spec.js +190 -0
  30. package/dist/cjs/components/CreateEntryLinkButton/useGlobalMouseUp.js +19 -0
  31. package/dist/cjs/components/LinkActions/CombinedLinkActions.js +167 -0
  32. package/dist/cjs/components/LinkActions/LinkActions.js +123 -0
  33. package/dist/cjs/components/LinkActions/LinkEntityActions.js +186 -0
  34. package/dist/cjs/components/LinkActions/NoLinkPermissionsInfo.js +54 -0
  35. package/dist/cjs/components/LinkActions/helpers.js +78 -0
  36. package/dist/cjs/components/LinkActions/redesignStyles.js +44 -0
  37. package/dist/cjs/components/LinkActions/styles.js +33 -0
  38. package/dist/cjs/components/MissingEntityCard/MissingEntityCard.js +75 -0
  39. package/dist/cjs/components/MissingEntityCard/styles.js +29 -0
  40. package/dist/cjs/components/ScheduledIconWithTooltip/ScheduleTooltip.js +75 -0
  41. package/dist/cjs/components/ScheduledIconWithTooltip/ScheduledIconWithTooltip.js +81 -0
  42. package/dist/cjs/components/ScheduledIconWithTooltip/formatDateAndTime.js +45 -0
  43. package/dist/cjs/components/SpaceName/SpaceName.js +91 -0
  44. package/dist/cjs/components/index.js +44 -0
  45. package/dist/cjs/entries/MultipleEntryReferenceEditor.js +86 -0
  46. package/dist/cjs/entries/SingleEntryReferenceEditor.js +74 -0
  47. package/dist/cjs/entries/WrappedEntryCard/FetchingWrappedEntryCard.js +189 -0
  48. package/dist/cjs/entries/WrappedEntryCard/WrappedEntryCard.js +181 -0
  49. package/dist/cjs/entries/index.js +24 -0
  50. package/dist/cjs/index.js +92 -0
  51. package/dist/cjs/resources/Cards/ContentfulEntryCard.js +87 -0
  52. package/dist/cjs/resources/Cards/ResourceCard.js +111 -0
  53. package/dist/cjs/resources/Cards/UnsupportedEntityCard.js +64 -0
  54. package/dist/cjs/resources/MultipleResourceReferenceEditor.js +157 -0
  55. package/dist/cjs/resources/MultipleResourceReferenceEditor.spec.js +297 -0
  56. package/dist/cjs/resources/SingleResourceReferenceEditor.js +87 -0
  57. package/dist/cjs/resources/SingleResourceReferenceEditor.spec.js +161 -0
  58. package/dist/cjs/resources/index.js +19 -0
  59. package/dist/cjs/resources/testHelpers/resourceEditorHelpers.js +121 -0
  60. package/dist/cjs/resources/useResourceLinkActions.js +88 -0
  61. package/dist/cjs/types.js +22 -0
  62. package/dist/cjs/utils/fromFieldValidations.js +54 -0
  63. package/dist/esm/__fixtures__/FakeSdk.js +173 -0
  64. package/dist/esm/__fixtures__/asset/index.js +6 -0
  65. package/dist/esm/__fixtures__/content-type/index.js +2 -0
  66. package/dist/esm/__fixtures__/entry/index.js +5 -0
  67. package/dist/esm/__fixtures__/fixtures.js +6 -0
  68. package/dist/esm/__fixtures__/locale/index.js +15 -0
  69. package/dist/esm/__fixtures__/space/index.js +2 -0
  70. package/dist/esm/assets/MultipleMediaEditor.js +37 -0
  71. package/dist/esm/assets/SingleMediaEditor.js +20 -0
  72. package/dist/esm/assets/WrappedAssetCard/AssetCardActions.js +63 -0
  73. package/dist/esm/assets/WrappedAssetCard/FetchingWrappedAssetCard.js +122 -0
  74. package/dist/esm/assets/WrappedAssetCard/WrappedAssetCard.js +105 -0
  75. package/dist/esm/assets/WrappedAssetCard/WrappedAssetLink.js +76 -0
  76. package/dist/esm/assets/index.js +3 -0
  77. package/dist/esm/common/EntityStore.js +347 -0
  78. package/dist/esm/common/MultipleReferenceEditor.js +111 -0
  79. package/dist/esm/common/ReferenceEditor.js +20 -0
  80. package/dist/esm/common/SingleReferenceEditor.js +70 -0
  81. package/dist/esm/common/SortableLinkList.js +41 -0
  82. package/dist/esm/common/customCardTypes.js +1 -0
  83. package/dist/esm/common/useAccessApi.js +9 -0
  84. package/dist/esm/common/useContentTypePermissions.js +44 -0
  85. package/dist/esm/common/useEditorPermissions.js +67 -0
  86. package/dist/esm/common/useEditorPermissions.spec.js +201 -0
  87. package/dist/esm/components/AssetThumbnail/AssetThumbnail.js +13 -0
  88. package/dist/esm/components/CreateEntryLinkButton/CreateEntryLinkButton.js +48 -0
  89. package/dist/esm/components/CreateEntryLinkButton/CreateEntryLinkButton.spec.js +206 -0
  90. package/dist/esm/components/CreateEntryLinkButton/CreateEntryMenuTrigger.js +145 -0
  91. package/dist/esm/components/CreateEntryLinkButton/CreateEntryMenuTrigger.spec.js +142 -0
  92. package/dist/esm/components/CreateEntryLinkButton/useGlobalMouseUp.js +9 -0
  93. package/dist/esm/components/LinkActions/CombinedLinkActions.js +118 -0
  94. package/dist/esm/components/LinkActions/LinkActions.js +66 -0
  95. package/dist/esm/components/LinkActions/LinkEntityActions.js +127 -0
  96. package/dist/esm/components/LinkActions/NoLinkPermissionsInfo.js +5 -0
  97. package/dist/esm/components/LinkActions/helpers.js +57 -0
  98. package/dist/esm/components/LinkActions/redesignStyles.js +18 -0
  99. package/dist/esm/components/LinkActions/styles.js +10 -0
  100. package/dist/esm/components/MissingEntityCard/MissingEntityCard.js +26 -0
  101. package/dist/esm/components/MissingEntityCard/styles.js +11 -0
  102. package/dist/esm/components/ScheduledIconWithTooltip/ScheduleTooltip.js +18 -0
  103. package/dist/esm/components/ScheduledIconWithTooltip/ScheduledIconWithTooltip.js +32 -0
  104. package/dist/esm/components/ScheduledIconWithTooltip/formatDateAndTime.js +19 -0
  105. package/dist/esm/components/SpaceName/SpaceName.js +37 -0
  106. package/dist/esm/components/index.js +8 -0
  107. package/dist/esm/entries/MultipleEntryReferenceEditor.js +37 -0
  108. package/dist/esm/entries/SingleEntryReferenceEditor.js +25 -0
  109. package/dist/esm/entries/WrappedEntryCard/FetchingWrappedEntryCard.js +135 -0
  110. package/dist/esm/entries/WrappedEntryCard/WrappedEntryCard.js +127 -0
  111. package/dist/esm/entries/index.js +3 -0
  112. package/dist/esm/index.js +7 -0
  113. package/dist/esm/resources/Cards/ContentfulEntryCard.js +38 -0
  114. package/dist/esm/resources/Cards/ResourceCard.js +62 -0
  115. package/dist/esm/resources/Cards/UnsupportedEntityCard.js +15 -0
  116. package/dist/esm/resources/MultipleResourceReferenceEditor.js +104 -0
  117. package/dist/esm/resources/MultipleResourceReferenceEditor.spec.js +254 -0
  118. package/dist/esm/resources/SingleResourceReferenceEditor.js +33 -0
  119. package/dist/esm/resources/SingleResourceReferenceEditor.spec.js +118 -0
  120. package/dist/esm/resources/index.js +2 -0
  121. package/dist/esm/resources/testHelpers/resourceEditorHelpers.js +103 -0
  122. package/dist/esm/resources/useResourceLinkActions.js +78 -0
  123. package/dist/esm/types.js +1 -0
  124. package/dist/esm/utils/fromFieldValidations.js +39 -0
  125. package/dist/{__fixtures__ → types/__fixtures__}/FakeSdk.d.ts +8 -8
  126. package/dist/{__fixtures__ → types/__fixtures__}/asset/index.d.ts +6 -6
  127. package/dist/{__fixtures__ → types/__fixtures__}/content-type/index.d.ts +2 -2
  128. package/dist/{__fixtures__ → types/__fixtures__}/entry/index.d.ts +5 -5
  129. package/dist/{__fixtures__ → types/__fixtures__}/fixtures.d.ts +6 -6
  130. package/dist/{__fixtures__ → types/__fixtures__}/locale/index.d.ts +42 -42
  131. package/dist/{__fixtures__ → types/__fixtures__}/space/index.d.ts +2 -2
  132. package/dist/{assets → types/assets}/MultipleMediaEditor.d.ts +10 -10
  133. package/dist/types/assets/SingleMediaEditor.d.ts +10 -0
  134. package/dist/{assets → types/assets}/WrappedAssetCard/AssetCardActions.d.ts +11 -11
  135. package/dist/{assets → types/assets}/WrappedAssetCard/FetchingWrappedAssetCard.d.ts +17 -17
  136. package/dist/{assets → types/assets}/WrappedAssetCard/WrappedAssetCard.d.ts +24 -24
  137. package/dist/{assets → types/assets}/WrappedAssetCard/WrappedAssetLink.d.ts +16 -16
  138. package/dist/{assets → types/assets}/index.d.ts +3 -3
  139. package/dist/{common → types/common}/EntityStore.d.ts +62 -62
  140. package/dist/{common → types/common}/MultipleReferenceEditor.d.ts +25 -25
  141. package/dist/{common → types/common}/ReferenceEditor.d.ts +46 -46
  142. package/dist/{common → types/common}/SingleReferenceEditor.d.ts +24 -24
  143. package/dist/{common → types/common}/SortableLinkList.d.ts +19 -19
  144. package/dist/{common → types/common}/customCardTypes.d.ts +29 -29
  145. package/dist/types/common/useAccessApi.d.ts +16 -0
  146. package/dist/{common → types/common}/useContentTypePermissions.d.ts +17 -17
  147. package/dist/{common → types/common}/useEditorPermissions.d.ts +17 -17
  148. package/dist/types/common/useEditorPermissions.spec.d.ts +1 -0
  149. package/dist/{components → types/components}/AssetThumbnail/AssetThumbnail.d.ts +7 -7
  150. package/dist/{components → types/components}/CreateEntryLinkButton/CreateEntryLinkButton.d.ts +19 -19
  151. package/dist/types/components/CreateEntryLinkButton/CreateEntryLinkButton.spec.d.ts +1 -0
  152. package/dist/{components → types/components}/CreateEntryLinkButton/CreateEntryMenuTrigger.d.ts +31 -31
  153. package/dist/types/components/CreateEntryLinkButton/CreateEntryMenuTrigger.spec.d.ts +1 -0
  154. package/dist/{components → types/components}/CreateEntryLinkButton/useGlobalMouseUp.d.ts +1 -1
  155. package/dist/{components → types/components}/LinkActions/CombinedLinkActions.d.ts +10 -10
  156. package/dist/{components → types/components}/LinkActions/LinkActions.d.ts +26 -26
  157. package/dist/{components → types/components}/LinkActions/LinkEntityActions.d.ts +24 -24
  158. package/dist/types/components/LinkActions/NoLinkPermissionsInfo.d.ts +2 -0
  159. package/dist/{components → types/components}/LinkActions/helpers.d.ts +26 -26
  160. package/dist/{components → types/components}/LinkActions/redesignStyles.d.ts +3 -3
  161. package/dist/{components → types/components}/LinkActions/styles.d.ts +2 -2
  162. package/dist/{components → types/components}/MissingEntityCard/MissingEntityCard.d.ts +8 -8
  163. package/dist/{components → types/components}/MissingEntityCard/styles.d.ts +2 -2
  164. package/dist/{components → types/components}/ScheduledIconWithTooltip/ScheduleTooltip.d.ts +11 -11
  165. package/dist/{components → types/components}/ScheduledIconWithTooltip/ScheduledIconWithTooltip.d.ts +10 -10
  166. package/dist/{components → types/components}/ScheduledIconWithTooltip/formatDateAndTime.d.ts +15 -15
  167. package/dist/types/components/SpaceName/SpaceName.d.ts +6 -0
  168. package/dist/{components → types/components}/index.d.ts +9 -9
  169. package/dist/{entries → types/entries}/MultipleEntryReferenceEditor.d.ts +3 -3
  170. package/dist/{entries → types/entries}/SingleEntryReferenceEditor.d.ts +8 -8
  171. package/dist/{entries → types/entries}/WrappedEntryCard/FetchingWrappedEntryCard.d.ts +18 -18
  172. package/dist/{entries → types/entries}/WrappedEntryCard/WrappedEntryCard.d.ts +35 -35
  173. package/dist/{entries → types/entries}/index.d.ts +3 -3
  174. package/dist/{index.d.ts → types/index.d.ts} +9 -8
  175. package/dist/{resources → types/resources}/Cards/ContentfulEntryCard.d.ts +21 -21
  176. package/dist/{resources → types/resources}/Cards/ResourceCard.d.ts +12 -12
  177. package/dist/{resources → types/resources}/Cards/UnsupportedEntityCard.d.ts +4 -4
  178. package/dist/{resources → types/resources}/MultipleResourceReferenceEditor.d.ts +7 -7
  179. package/dist/types/resources/MultipleResourceReferenceEditor.spec.d.ts +1 -0
  180. package/dist/{resources → types/resources}/SingleResourceReferenceEditor.d.ts +7 -7
  181. package/dist/types/resources/SingleResourceReferenceEditor.spec.d.ts +1 -0
  182. package/dist/{resources → types/resources}/index.d.ts +2 -2
  183. package/dist/{resources → types/resources}/testHelpers/resourceEditorHelpers.d.ts +50 -50
  184. package/dist/{resources → types/resources}/useResourceLinkActions.d.ts +7 -7
  185. package/dist/{types.d.ts → types/types.d.ts} +104 -104
  186. package/dist/{utils → types/utils}/fromFieldValidations.d.ts +21 -21
  187. package/package.json +25 -11
  188. package/CHANGELOG.md +0 -860
  189. package/dist/assets/SingleMediaEditor.d.ts +0 -10
  190. package/dist/common/useAccessApi.d.ts +0 -16
  191. package/dist/components/LinkActions/NoLinkPermissionsInfo.d.ts +0 -2
  192. package/dist/components/SpaceName/SpaceName.d.ts +0 -6
  193. package/dist/field-editor-reference.cjs.development.js +0 -2753
  194. package/dist/field-editor-reference.cjs.development.js.map +0 -1
  195. package/dist/field-editor-reference.cjs.production.min.js +0 -2
  196. package/dist/field-editor-reference.cjs.production.min.js.map +0 -1
  197. package/dist/field-editor-reference.esm.js +0 -2727
  198. package/dist/field-editor-reference.esm.js.map +0 -1
  199. package/dist/index.js +0 -8
@@ -1 +0,0 @@
1
- {"version":3,"file":"field-editor-reference.cjs.development.js","sources":["../src/components/CreateEntryLinkButton/CreateEntryMenuTrigger.tsx","../src/components/CreateEntryLinkButton/CreateEntryLinkButton.tsx","../src/components/LinkActions/NoLinkPermissionsInfo.tsx","../src/components/LinkActions/styles.ts","../src/components/LinkActions/LinkActions.tsx","../src/components/LinkActions/redesignStyles.ts","../src/components/LinkActions/CombinedLinkActions.tsx","../src/components/MissingEntityCard/styles.ts","../src/components/MissingEntityCard/MissingEntityCard.tsx","../src/components/LinkActions/helpers.ts","../src/components/LinkActions/LinkEntityActions.tsx","../src/components/ScheduledIconWithTooltip/formatDateAndTime.ts","../src/components/ScheduledIconWithTooltip/ScheduleTooltip.tsx","../src/components/ScheduledIconWithTooltip/ScheduledIconWithTooltip.tsx","../src/components/AssetThumbnail/AssetThumbnail.tsx","../src/common/EntityStore.tsx","../src/common/ReferenceEditor.tsx","../src/utils/fromFieldValidations.ts","../src/common/useAccessApi.ts","../src/common/useContentTypePermissions.ts","../src/common/useEditorPermissions.ts","../src/common/SingleReferenceEditor.tsx","../src/components/SpaceName/SpaceName.tsx","../src/entries/WrappedEntryCard/WrappedEntryCard.tsx","../src/entries/WrappedEntryCard/FetchingWrappedEntryCard.tsx","../src/entries/SingleEntryReferenceEditor.tsx","../src/common/MultipleReferenceEditor.tsx","../src/common/SortableLinkList.tsx","../src/entries/MultipleEntryReferenceEditor.tsx","../src/assets/WrappedAssetCard/AssetCardActions.tsx","../src/assets/WrappedAssetCard/WrappedAssetCard.tsx","../src/assets/WrappedAssetCard/WrappedAssetLink.tsx","../src/assets/WrappedAssetCard/FetchingWrappedAssetCard.tsx","../src/assets/SingleMediaEditor.tsx","../src/assets/MultipleMediaEditor.tsx","../src/resources/Cards/ContentfulEntryCard.tsx","../src/resources/Cards/UnsupportedEntityCard.tsx","../src/resources/Cards/ResourceCard.tsx","../src/resources/useResourceLinkActions.ts","../src/resources/MultipleResourceReferenceEditor.tsx","../src/resources/SingleResourceReferenceEditor.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport React, { useState, useRef, useEffect } from 'react';\n\nimport { TextInput, Menu, MenuProps } from '@contentful/f36-components';\nimport { SearchIcon } from '@contentful/f36-icons';\nimport tokens from '@contentful/f36-tokens';\nimport { css } from 'emotion';\nimport get from 'lodash/get';\n\nimport { ContentType } from '../../types';\n\nconst MAX_ITEMS_WITHOUT_SEARCH = 5;\n\nconst menuPlacementMap: {\n [key: string]: MenuProps['placement'];\n} = {\n 'bottom-left': 'bottom-start',\n 'bottom-right': 'bottom-end',\n};\n\nconst styles = {\n wrapper: css({\n position: 'relative',\n }),\n inputWrapper: css({\n position: 'relative',\n padding: `0 ${tokens.spacing2Xs}`,\n }),\n searchInput: css({\n paddingRight: tokens.spacingXl,\n textOverflow: 'ellipsis',\n }),\n searchIcon: css({\n position: 'absolute',\n right: tokens.spacingM,\n top: tokens.spacingS,\n zIndex: Number(tokens.zIndexDefault),\n fill: tokens.gray600,\n }),\n separator: css({\n background: tokens.gray200,\n margin: '10px 0',\n }),\n dropdownList: css({\n borderColor: tokens.gray200,\n }),\n};\n\ntype CreateEntryMenuTriggerChildProps = {\n isOpen: boolean;\n isSelecting: boolean;\n};\nexport type CreateEntryMenuTriggerChild = (\n props: CreateEntryMenuTriggerChildProps\n) => React.ReactElement;\nexport type CreateCustomEntryMenuItems = ({\n closeMenu,\n}: {\n closeMenu: Function;\n}) => React.ReactElement;\n\ninterface CreateEntryMenuTrigger {\n contentTypes: ContentType[];\n suggestedContentTypeId?: string;\n contentTypesLabel?: string;\n onSelect: (contentTypeId: string) => Promise<unknown>;\n testId?: string;\n dropdownSettings?: {\n isAutoalignmentEnabled?: boolean;\n position: 'bottom-left' | 'bottom-right';\n };\n customDropdownItems?: React.ReactNode;\n children: CreateEntryMenuTriggerChild;\n}\n\nexport const CreateEntryMenuTrigger = ({\n contentTypes,\n suggestedContentTypeId,\n contentTypesLabel,\n onSelect,\n testId,\n dropdownSettings = {\n position: 'bottom-left',\n },\n customDropdownItems,\n children,\n}: CreateEntryMenuTrigger) => {\n const [isOpen, setOpen] = useState(false);\n const [isSelecting, setSelecting] = useState(false);\n const [searchInput, setSearchInput] = useState('');\n const wrapper = useRef<any | null>(null);\n const textField = useRef<any | null>(null);\n const menuListRef = useRef<any | null>(null);\n /*\n By default, dropdown wraps it's content, so it's width = the width of the widest item\n During search, menu items change, and so the widest menu item can change\n This leads to menu always changing it's width\n To prevent this, we get the width of the menu item after the first mount of a dropdown (when all the content is displayed)\n And hardcode it through the class name. This way we ensure that even during search the menu will keep that max width\n That it had on initial mount and that fits any menu item in has\n */\n const [dropdownWidth, setDropdownWidth] = useState();\n\n const hasDropdown = contentTypes.length > 1 || !!customDropdownItems;\n\n const closeMenu = () => setOpen(false);\n\n useEffect(() => {\n if (isOpen) {\n setTimeout(() => {\n textField.current?.querySelector('input')?.focus({ preventScroll: true });\n }, 200);\n }\n }, [isOpen]);\n\n useEffect(() => {\n if (isOpen && !dropdownWidth) {\n setDropdownWidth(menuListRef.current?.clientWidth);\n }\n }, [isOpen, dropdownWidth]);\n\n const handleSelect = (item: ContentType) => {\n closeMenu();\n const res = onSelect(item.sys.id);\n\n // TODO: Convert to controllable component.\n if (res && typeof res.then === 'function') {\n setSelecting(true);\n res.then(\n () => setSelecting(false),\n () => setSelecting(false)\n );\n }\n };\n\n const handleMenuOpen = () => {\n if (hasDropdown) {\n setOpen(true);\n } else {\n handleSelect(contentTypes[0]);\n }\n };\n\n useEffect(() => {\n if (!isOpen) {\n setSearchInput('');\n }\n }, [isOpen]);\n\n const renderSearchResultsCount = (resultsLength: number) =>\n resultsLength ? (\n <Menu.SectionTitle testId=\"add-entru-menu-search-results\">\n {resultsLength} result{resultsLength > 1 ? 's' : ''}\n </Menu.SectionTitle>\n ) : null;\n\n const isSearchable = contentTypes.length > MAX_ITEMS_WITHOUT_SEARCH;\n const maxDropdownHeight = suggestedContentTypeId ? 300 : 250;\n const suggestedContentType = contentTypes.find((ct) => ct.sys.id === suggestedContentTypeId);\n const filteredContentTypes = contentTypes.filter(\n (ct) =>\n !searchInput || get(ct, 'name', 'Untitled').toLowerCase().includes(searchInput.toLowerCase())\n );\n\n return (\n <span className={styles.wrapper} ref={wrapper} data-test-id={testId}>\n <Menu\n placement={menuPlacementMap[dropdownSettings.position]}\n isAutoalignmentEnabled={dropdownSettings.isAutoalignmentEnabled}\n isOpen={isOpen}\n onClose={closeMenu}\n onOpen={handleMenuOpen}\n >\n <Menu.Trigger>{children({ isOpen, isSelecting })}</Menu.Trigger>\n\n {isOpen && (\n <Menu.List\n className={styles.dropdownList}\n style={{\n width: dropdownWidth != undefined ? `${dropdownWidth}px` : undefined,\n maxHeight: `${maxDropdownHeight}px`,\n }}\n ref={menuListRef}\n testId=\"add-entry-menu\"\n >\n {Boolean(customDropdownItems) && (\n <>\n {customDropdownItems}\n <Menu.Divider />\n </>\n )}\n\n {isSearchable && (\n <>\n <div ref={textField} className={styles.inputWrapper}>\n <TextInput\n className={styles.searchInput}\n placeholder=\"Search all content types\"\n testId=\"add-entry-menu-search\"\n value={searchInput}\n onChange={(e) => setSearchInput(e.target.value)}\n />\n <SearchIcon className={styles.searchIcon} />\n </div>\n <Menu.Divider />\n </>\n )}\n\n {searchInput && renderSearchResultsCount(filteredContentTypes.length)}\n {suggestedContentType && !searchInput && (\n <>\n <Menu.SectionTitle>Suggested Content Type</Menu.SectionTitle>\n <Menu.Item testId=\"suggested\" onClick={() => handleSelect(suggestedContentType)}>\n {get(suggestedContentType, 'name')}\n </Menu.Item>\n <Menu.Divider />\n </>\n )}\n {!searchInput && <Menu.SectionTitle>{contentTypesLabel}</Menu.SectionTitle>}\n {filteredContentTypes.length ? (\n filteredContentTypes.map((contentType, i) => (\n <Menu.Item\n testId=\"contentType\"\n key={`${get(contentType, 'name')}-${i}`}\n onClick={() => handleSelect(contentType)}\n >\n {get(contentType, 'name', 'Untitled')}\n </Menu.Item>\n ))\n ) : (\n <Menu.Item testId=\"add-entru-menu-search-results\">No results found</Menu.Item>\n )}\n </Menu.List>\n )}\n </Menu>\n </span>\n );\n};\n\nCreateEntryMenuTrigger.defaultProps = {\n testId: 'create-entry-button-menu-trigger',\n contentTypesLabel: 'All Content Types',\n};\n","import React from 'react';\n\nimport { Button } from '@contentful/f36-components';\nimport { ChevronDownIcon, PlusIcon } from '@contentful/f36-icons';\nimport tokens from '@contentful/f36-tokens';\nimport { css } from 'emotion';\nimport get from 'lodash/get';\n\nimport { ContentType } from '../../types';\nimport { CreateEntryMenuTrigger } from './CreateEntryMenuTrigger';\n\nconst standardStyles = {\n spinnerMargin: css({\n marginRight: tokens.spacingXs,\n }),\n action: undefined,\n};\nconst redesignStyles = {\n ...standardStyles,\n action: css({\n textDecoration: 'none',\n fontWeight: 'bold',\n maxWidth: '300px',\n }),\n};\n\ninterface CreateEntryLinkButtonProps {\n contentTypes: ContentType[];\n suggestedContentTypeId?: string;\n onSelect: (contentTypeId: string) => Promise<unknown>;\n customDropdownItems?: React.ReactNode;\n disabled?: boolean;\n hasPlusIcon?: boolean;\n useExperimentalStyles?: boolean;\n text?: string | React.ReactElement;\n testId?: string;\n dropdownSettings?: {\n isAutoalignmentEnabled?: boolean;\n position: 'bottom-left' | 'bottom-right';\n };\n}\n\nexport const CreateEntryLinkButton = ({\n contentTypes,\n onSelect,\n customDropdownItems,\n text,\n testId,\n hasPlusIcon = false,\n useExperimentalStyles,\n suggestedContentTypeId,\n dropdownSettings,\n disabled = false,\n}: CreateEntryLinkButtonProps) => {\n contentTypes = contentTypes.sort((a, b) => a.name.localeCompare(b.name));\n const suggestedContentType = contentTypes.find((ct) => ct.sys.id === suggestedContentTypeId);\n const buttonText =\n text ||\n `Add ${get(\n suggestedContentType || (contentTypes.length === 1 ? contentTypes[0] : {}),\n 'name',\n 'entry'\n )}`;\n const hasDropdown = contentTypes.length > 1 || customDropdownItems;\n\n // TODO: Introduce `icon: string` and remove `hasPlusIcon` or remove \"Plus\" if we keep new layout.\n const plusIcon = hasPlusIcon ? <PlusIcon /> : undefined;\n // TODO: Always use \"New content\" here if we fully switch to new layout.\n const contentTypesLabel = useExperimentalStyles ? 'New content' : undefined;\n const styles = useExperimentalStyles ? redesignStyles : standardStyles;\n\n return (\n <CreateEntryMenuTrigger\n contentTypes={contentTypes}\n suggestedContentTypeId={suggestedContentTypeId}\n contentTypesLabel={contentTypesLabel}\n onSelect={onSelect}\n testId={testId}\n dropdownSettings={dropdownSettings}\n customDropdownItems={customDropdownItems}\n >\n {({ isSelecting }) => (\n <Button\n endIcon={hasDropdown ? <ChevronDownIcon /> : undefined}\n variant=\"secondary\"\n className={styles.action}\n isDisabled={disabled || isSelecting} // (contentTypes && contentTypes.length === 0)}\n startIcon={isSelecting ? undefined : plusIcon}\n size=\"small\"\n testId=\"create-entry-link-button\"\n isLoading={isSelecting}\n >\n {buttonText}\n </Button>\n )}\n </CreateEntryMenuTrigger>\n );\n};\n","import React from 'react';\n\nimport { Paragraph } from '@contentful/f36-components';\n\nexport function NoLinkPermissionsInfo() {\n return (\n <Paragraph>\n You don&apos;t have permission to view this content or this field is not correctly configured.\n Contact your administrator for help.\n </Paragraph>\n );\n}\n","import tokens from '@contentful/f36-tokens';\nimport { css } from 'emotion';\n\nexport const container = css({\n display: 'flex',\n width: '100%',\n marginTop: tokens.spacingS,\n});\n\nexport const separator = css({\n marginRight: tokens.spacingXl,\n});\n","import * as React from 'react';\n\nimport { Button } from '@contentful/f36-components';\nimport { PlusIcon, LinkIcon } from '@contentful/f36-icons';\n\nimport {\n ContentEntityType,\n ContentType,\n ActionLabels,\n Entry,\n Asset,\n NavigatorSlideInfo,\n} from '../../types';\nimport { CreateEntryLinkButton } from '../CreateEntryLinkButton/CreateEntryLinkButton';\nimport { NoLinkPermissionsInfo } from './NoLinkPermissionsInfo';\nimport * as styles from './styles';\n\nexport interface LinkActionsProps {\n entityType: ContentEntityType;\n contentTypes: ContentType[];\n canCreateEntity: boolean;\n canLinkEntity: boolean;\n canLinkMultiple: boolean;\n isDisabled: boolean;\n isFull: boolean;\n isEmpty: boolean;\n onCreate: (contentType?: string, index?: number) => Promise<unknown>;\n onCreated: (entity: Entry | Asset, index?: number, slide?: NavigatorSlideInfo) => void;\n onLinkExisting: (index?: number) => void;\n onLinkedExisting: (entities: Array<Entry | Asset>, index?: number) => void;\n actionLabels?: Partial<ActionLabels>;\n combinedActionsLabel?: string | React.ReactElement;\n itemsLength?: number;\n}\n\nconst defaultEntryLabels: ActionLabels = {\n createNew: (props) =>\n props?.contentType ? `Create new ${props.contentType} and link` : 'Create new entry and link',\n linkExisting: (props) =>\n props?.canLinkMultiple ? 'Link existing entries' : 'Link existing entry',\n};\n\nconst defaultAssetLabels: ActionLabels = {\n createNew: () => `Create new asset and link`,\n linkExisting: (props) =>\n props?.canLinkMultiple ? 'Link existing assets' : 'Link existing asset',\n};\n\nexport const testIds = {\n dropdown: 'linkEditor.dropdown',\n createAndLink: 'linkEditor.createAndLink',\n createAndLinkWrapper: 'create-entry-button-menu-trigger',\n linkExisting: 'linkEditor.linkExisting',\n};\n\nexport function LinkActions(props: LinkActionsProps) {\n if (props.isFull) {\n return null; // Don't render link actions if we reached max allowed links.\n }\n const defaultLabels = props.entityType === 'Entry' ? defaultEntryLabels : defaultAssetLabels;\n const labels = {\n ...defaultLabels,\n ...props.actionLabels,\n };\n\n return (\n <div className={styles.container}>\n {props.canCreateEntity && (\n <>\n {props.entityType === 'Entry' && (\n <CreateEntryLinkButton\n testId={testIds.createAndLink}\n disabled={props.isDisabled}\n text={labels.createNew({\n contentType:\n props.contentTypes.length === 1 ? props.contentTypes[0].name : undefined,\n })}\n contentTypes={props.contentTypes}\n hasPlusIcon={true}\n onSelect={(contentTypeId) => {\n return contentTypeId\n ? props.onCreate(contentTypeId, props.itemsLength)\n : Promise.resolve();\n }}\n />\n )}\n {props.entityType === 'Asset' && (\n <Button\n isDisabled={props.isDisabled}\n testId={testIds.createAndLink}\n onClick={() => {\n props.onCreate(undefined, props.itemsLength);\n }}\n variant=\"secondary\"\n startIcon={<PlusIcon />}\n size=\"small\">\n {labels.createNew()}\n </Button>\n )}\n <span className={styles.separator} />\n </>\n )}\n {props.canLinkEntity && (\n <Button\n isDisabled={props.isDisabled}\n testId={testIds.linkExisting}\n onClick={() => {\n props.onLinkExisting();\n }}\n variant=\"secondary\"\n startIcon={<LinkIcon />}\n size=\"small\">\n {labels.linkExisting({ canLinkMultiple: props.canLinkMultiple })}\n </Button>\n )}\n\n {!props.canCreateEntity && !props.canLinkEntity && <NoLinkPermissionsInfo />}\n </div>\n );\n}\n","import tokens from '@contentful/f36-tokens';\nimport { css } from 'emotion';\n\nexport const container = css({\n display: 'flex',\n border: `1px dashed ${tokens.gray500}`,\n borderRadius: tokens.borderRadiusMedium,\n justifyContent: 'center',\n padding: tokens.spacingXl,\n});\n\nexport const action = css({\n textDecoration: 'none',\n fontWeight: 'bold',\n});\n\nexport const chevronIcon = css({\n float: 'right',\n marginLeft: tokens.spacingXs,\n marginRight: -tokens.spacing2Xs,\n});\n","import * as React from 'react';\n\nimport { Button, Menu } from '@contentful/f36-components';\nimport { LinkIcon, PlusIcon, ChevronDownIcon } from '@contentful/f36-icons';\n\nimport { CreateEntryLinkButton } from '../CreateEntryLinkButton/CreateEntryLinkButton';\nimport { testIds as sharedTextIds, LinkActionsProps } from './LinkActions';\nimport { NoLinkPermissionsInfo } from './NoLinkPermissionsInfo';\nimport * as styles from './redesignStyles';\n\nconst testIds = {\n ...sharedTextIds,\n actionsWrapper: 'link-actions-menu-trigger',\n};\n\n/**\n * Alternative, experimental alternative to <LinkActions /> that is planned to\n * replace the current default LinkActions in reference and media editors.\n *\n * Places both actions to create and link new, as well as link existing, behind\n * one action dropdown and introduces new copy for action labels.\n */\nexport function CombinedLinkActions(props: LinkActionsProps) {\n if (props.isFull) {\n return null; // Don't render link actions if we reached max allowed links.\n }\n // We don't want to render a spacious container in case there are are already\n // assets linked (in case of entries, always show it) as the border wouldn't be\n // nicely aligned with asset cards.\n const hideEmptyCard = props.entityType === 'Asset' && !props.isEmpty;\n return (\n <div className={hideEmptyCard ? '' : styles.container}>\n {!props.canCreateEntity && !props.canLinkEntity && <NoLinkPermissionsInfo />}\n {props.entityType === 'Entry' && <CombinedEntryLinkActions {...props} />}\n {props.entityType === 'Asset' && <CombinedAssetLinkActions {...props} />}\n </div>\n );\n}\n\nfunction CombinedEntryLinkActions(props: LinkActionsProps) {\n if (props.canCreateEntity) {\n return (\n <CreateEntryLinkButton\n testId={testIds.actionsWrapper}\n disabled={props.isDisabled}\n text={props.combinedActionsLabel || 'Add content'}\n contentTypes={props.contentTypes}\n hasPlusIcon={true}\n useExperimentalStyles={true}\n dropdownSettings={{\n position: 'bottom-left',\n }}\n onSelect={(contentTypeId) => {\n return contentTypeId ? props.onCreate(contentTypeId) : Promise.resolve();\n }}\n customDropdownItems={\n props.canLinkEntity ? (\n <Menu.Item\n testId={testIds.linkExisting}\n onClick={() => {\n props.onLinkExisting();\n }}>\n Add existing content\n </Menu.Item>\n ) : undefined\n }\n />\n );\n } else if (props.canLinkEntity) {\n return (\n <Button\n isDisabled={props.isDisabled}\n testId={testIds.linkExisting}\n className={styles.action}\n onClick={() => {\n props.onLinkExisting();\n }}\n variant=\"secondary\"\n startIcon={<LinkIcon />}\n size=\"small\">\n Add existing content\n </Button>\n );\n }\n return null;\n}\n\nfunction CombinedAssetLinkActions(props: LinkActionsProps) {\n const [isOpen, setOpen] = React.useState(false);\n\n if (!props.canLinkEntity || !props.canCreateEntity) {\n if (props.canLinkEntity) {\n return (\n <Button\n isDisabled={props.isDisabled}\n testId={testIds.linkExisting}\n className={styles.action}\n onClick={() => {\n props.onLinkExisting();\n }}\n variant=\"secondary\"\n startIcon={<PlusIcon />}\n size=\"small\">\n Add existing media\n </Button>\n );\n }\n if (props.canCreateEntity) {\n return (\n <Button\n isDisabled={props.isDisabled}\n testId={testIds.createAndLink}\n className={styles.action}\n onClick={() => {\n props.onCreate();\n }}\n variant=\"secondary\"\n startIcon={<PlusIcon />}\n size=\"small\">\n Add media\n </Button>\n );\n }\n return null;\n }\n\n // TODO: If we fully switch to this new layout, make a more generic `CreateEntityLinkButton`\n // that works without content types to cover asset use-case.\n return (\n <Menu\n isOpen={isOpen}\n onClose={() => {\n setOpen(false);\n }}\n onOpen={() => {\n setOpen(true);\n }}>\n <Menu.Trigger>\n <Button\n endIcon={<ChevronDownIcon />}\n isDisabled={props.isDisabled}\n testId={testIds.actionsWrapper}\n className={styles.action}\n variant=\"secondary\"\n startIcon={<PlusIcon />}\n size=\"small\">\n Add media\n </Button>\n </Menu.Trigger>\n {isOpen && (\n <Menu.List testId={testIds.dropdown}>\n <Menu.Item\n testId={testIds.linkExisting}\n onClick={() => {\n props.onLinkExisting();\n }}>\n Add existing media\n </Menu.Item>\n <Menu.Item\n testId={testIds.createAndLink}\n onClick={() => {\n props.onCreate();\n }}>\n Add new media\n </Menu.Item>\n </Menu.List>\n )}\n </Menu>\n );\n}\n","import { css } from 'emotion';\n\nexport const card = css({\n position: 'relative',\n});\n\nexport const squareCard = css({\n display: 'flex',\n alignItems: 'center',\n width: '135px',\n height: '160px',\n textAlign: 'center',\n});\n","import React from 'react';\n\nimport { Card, SectionHeading, IconButton, Flex } from '@contentful/f36-components';\nimport { CloseIcon } from '@contentful/f36-icons';\n\nimport { ContentEntityType } from '../../types';\nimport * as styles from './styles';\n\nexport function MissingEntityCard(props: {\n entityType: ContentEntityType;\n asSquare?: boolean;\n isDisabled: boolean;\n onRemove?: Function;\n}) {\n return (\n <Card className={styles.card} testId=\"cf-ui-missing-entry-card\">\n <Flex alignItems=\"center\" justifyContent=\"space-between\">\n <div className={props.asSquare ? styles.squareCard : ''}>\n <SectionHeading marginBottom=\"none\">\n {props.entityType} is missing or inaccessible\n </SectionHeading>\n </div>\n {!props.isDisabled && props.onRemove && (\n <IconButton\n variant=\"transparent\"\n icon={<CloseIcon variant=\"muted\" />}\n aria-label=\"Delete\"\n onClick={() => {\n props.onRemove && props.onRemove();\n }}\n />\n )}\n </Flex>\n </Card>\n );\n}\n","import { EditorPermissions } from '../../common/useEditorPermissions';\nimport { Asset, ContentType, ContentEntityType, Entry, FieldExtensionSDK } from '../../types';\n\nconst getContentTypeIds = (contentTypes: ContentType[]) => contentTypes.map((ct) => ct.sys.id);\n\nexport async function createEntity(props: {\n sdk: FieldExtensionSDK;\n entityType: ContentEntityType;\n contentTypeId?: string;\n}) {\n if (props.entityType === 'Entry') {\n if (!props.contentTypeId) {\n return {};\n }\n const { entity, slide } = await props.sdk.navigator.openNewEntry<Entry>(props.contentTypeId, {\n slideIn: true,\n });\n return { entity, slide };\n } else {\n const { entity, slide } = await props.sdk.navigator.openNewAsset({\n slideIn: true,\n });\n return { entity, slide };\n }\n}\n\nexport async function selectSingleEntity(props: {\n sdk: FieldExtensionSDK;\n entityType: ContentEntityType;\n editorPermissions: EditorPermissions;\n}) {\n if (props.entityType === 'Entry') {\n return await props.sdk.dialogs.selectSingleEntry<Entry>({\n locale: props.sdk.field.locale,\n contentTypes: getContentTypeIds(props.editorPermissions.readableContentTypes),\n });\n } else {\n return props.sdk.dialogs.selectSingleAsset<Asset>({\n locale: props.sdk.field.locale,\n mimetypeGroups: props.editorPermissions.validations.mimetypeGroups,\n });\n }\n}\n\nexport async function selectMultipleEntities(props: {\n sdk: FieldExtensionSDK;\n entityType: ContentEntityType;\n editorPermissions: EditorPermissions;\n}) {\n const value = props.sdk.field.getValue();\n\n const linkCount = Array.isArray(value) ? value.length : value ? 1 : 0;\n\n // TODO: Why not always set `min: 1` by default? Does it make sense to enforce\n // user to select as many entities as the field's \"min\" requires? What if e.g.\n // \"min\" is 4 and the user wants to insert 2 entities first, then create 2 new ones?\n const min = Math.max(\n (props.editorPermissions.validations.numberOfLinks?.min || 1) - linkCount,\n 1\n );\n // TODO: Consider same for max. If e.g. \"max\" is 4, we disable the button if the\n // user wants to select 5 but we show no information why the button is disabled.\n const max = (props.editorPermissions.validations.numberOfLinks?.max || +Infinity) - linkCount;\n\n if (props.entityType === 'Entry') {\n return await props.sdk.dialogs.selectMultipleEntries<Entry>({\n locale: props.sdk.field.locale,\n contentTypes: getContentTypeIds(props.editorPermissions.readableContentTypes),\n min,\n max,\n });\n } else {\n return props.sdk.dialogs.selectMultipleAssets<Asset>({\n locale: props.sdk.field.locale,\n mimetypeGroups: props.editorPermissions.validations.mimetypeGroups,\n min,\n max,\n });\n }\n}\n","import * as React from 'react';\nimport { useMemo } from 'react';\n\nimport { EditorPermissions } from '../../common/useEditorPermissions';\nimport {\n Action,\n ActionLabels,\n ContentEntityType,\n FieldExtensionSDK,\n Entry,\n Asset,\n NavigatorSlideInfo,\n} from '../../types';\nimport { CombinedLinkActions } from './CombinedLinkActions';\nimport { createEntity, selectMultipleEntities, selectSingleEntity } from './helpers';\nimport { LinkActions, LinkActionsProps } from './LinkActions';\n\ntype LinkEntityActionsProps = {\n entityType: ContentEntityType;\n canLinkMultiple: boolean;\n sdk: FieldExtensionSDK;\n isDisabled: boolean;\n editorPermissions: EditorPermissions;\n onCreate: (id: string, index?: number) => void;\n onLink: (ids: string[], index?: number) => void;\n onAction?: (action: Action) => void;\n actionLabels?: Partial<ActionLabels>;\n itemsLength?: number;\n};\n\nexport function useLinkActionsProps(props: LinkEntityActionsProps): LinkActionsProps {\n const {\n sdk,\n editorPermissions,\n entityType,\n canLinkMultiple,\n isDisabled,\n actionLabels,\n itemsLength,\n } = props;\n\n const maxLinksCount = editorPermissions.validations.numberOfLinks?.max;\n const value = sdk.field.getValue();\n const linkCount = Array.isArray(value) ? value.length : value ? 1 : 0;\n const isFull = !!maxLinksCount && maxLinksCount <= linkCount;\n const isEmpty = linkCount === 0;\n\n const onCreated = React.useCallback(\n (entity: Entry | Asset, index = itemsLength, slide?: NavigatorSlideInfo) => {\n props.onCreate(entity.sys.id, index);\n props.onAction &&\n props.onAction({\n type: 'create_and_link',\n entity: entityType,\n entityData: entity,\n slide,\n index,\n });\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps -- TODO: Evaluate the dependencies\n [entityType, props.onCreate, props.onAction]\n );\n const onLinkedExisting = React.useCallback(\n (entities: Array<Entry | Asset>, index = itemsLength) => {\n props.onLink(\n entities.map((item) => item.sys.id),\n index\n );\n entities.forEach((entity, i) => {\n props.onAction &&\n props.onAction({\n type: 'select_and_link',\n entity: entityType,\n entityData: entity,\n index: index === undefined ? undefined : index + i,\n });\n });\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps -- TODO: Evaluate the dependencies\n [entityType, props.onLink, props.onAction]\n );\n\n const onCreate = React.useCallback(\n async (contentTypeId?: string, index?: number) => {\n const { entity, slide } = await createEntity({ sdk, entityType, contentTypeId });\n if (!entity) {\n return;\n }\n\n onCreated(entity, index, slide);\n },\n [sdk, entityType, onCreated]\n );\n\n const onLinkExisting = React.useCallback(\n async (index?: number) => {\n const entity = await selectSingleEntity({\n sdk,\n entityType,\n editorPermissions,\n });\n if (!entity) {\n return;\n }\n\n onLinkedExisting([entity], index);\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps -- TODO: Evaluate the dependencies\n [sdk, entityType, onLinkedExisting]\n );\n\n const onLinkSeveralExisting = React.useCallback(\n async (index?: number) => {\n const entities = await selectMultipleEntities({\n sdk,\n entityType,\n editorPermissions,\n });\n\n if (!entities || entities.length === 0) {\n return;\n }\n onLinkedExisting(entities, index);\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps -- TODO: Evaluate the dependencies\n [sdk, entityType, onLinkedExisting]\n );\n\n // FIXME: The memoization might rerun every time due to the always changing callback identities above\n return useMemo(\n () => ({\n entityType,\n canLinkMultiple,\n isDisabled,\n isEmpty,\n isFull,\n canCreateEntity: editorPermissions.canCreateEntity,\n canLinkEntity: editorPermissions.canLinkEntity,\n contentTypes: editorPermissions.creatableContentTypes,\n onCreate,\n onLinkExisting: canLinkMultiple ? onLinkSeveralExisting : onLinkExisting,\n actionLabels,\n onCreated,\n onLinkedExisting,\n itemsLength,\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps -- TODO: Evaluate the dependencies\n [\n entityType,\n canLinkMultiple,\n isDisabled,\n isEmpty,\n isFull,\n editorPermissions.canCreateEntity,\n editorPermissions.canLinkEntity,\n actionLabels,\n // eslint-disable-next-line react-hooks/exhaustive-deps -- TODO: Evaluate the dependencies\n editorPermissions.creatableContentTypes.map((ct) => ct.sys.id).join(':'),\n onCreate,\n onLinkExisting,\n onLinkSeveralExisting,\n onCreated,\n onLinkedExisting,\n itemsLength,\n ]\n );\n}\n\nexport function LinkEntityActions({\n renderCustomActions,\n ...props\n}: LinkActionsProps & {\n renderCustomActions?: (props: LinkActionsProps) => React.ReactElement;\n}) {\n return renderCustomActions ? renderCustomActions(props) : <LinkActions {...props} />;\n}\n\nexport function CombinedLinkEntityActions({\n renderCustomActions,\n ...props\n}: LinkActionsProps & {\n renderCustomActions?: (props: LinkActionsProps) => React.ReactElement;\n}) {\n return renderCustomActions ? renderCustomActions(props) : <CombinedLinkActions {...props} />;\n}\n","// eslint-disable-next-line -- TODO: describe this disable no-restricted-imports\nimport moment from 'moment';\n\ntype DateFormatFn = (date: Date | string, short?: boolean) => string;\n\n/**\n * @param {Date|string} date A valid constructor argument for moment()\n * @param {boolean=} short Render only Today/Tomorrow/Yesterday if valid. Defaults to false\n */\nexport const formatDate: DateFormatFn = (date, short) => {\n switch (moment().startOf('day').diff(moment(date).startOf('day'), 'days')) {\n case 0:\n return short ? 'Today' : `Today, ${moment(date).format('DD MMM YYYY')}`;\n case -1:\n return short ? 'Tomorrow' : `Tomorrow, ${moment(date).format('DD MMM YYYY')}`;\n case 1:\n return short ? 'Yesterday' : `Yesterday, ${moment(date).format('DD MMM YYYY')}`;\n default:\n return moment(date).format('ddd, DD MMM YYYY');\n }\n};\n\n/**\n * Returns the time portion of a date in the local time in the format H:MM AM/PM\n *\n * == Examples\n * * `T15:36:45.000Z` => 3:36 PM (if in +0:00 offset)\n */\nexport const formatTime: DateFormatFn = (date) => {\n return moment.utc(date).local().format('h:mm A');\n};\n\nexport const formatDateAndTime: DateFormatFn = (date, short) => {\n return `${formatDate(date, short)} at ${formatTime(date)}`;\n};\n","import React from 'react';\n\nimport { ScheduledAction } from '@contentful/app-sdk';\nimport { Tooltip } from '@contentful/f36-components';\n\nimport { formatDateAndTime } from './formatDateAndTime';\n\nexport const getScheduleTooltipContent = ({\n job,\n jobsCount,\n}: {\n job: ScheduledAction;\n jobsCount: number;\n}) => {\n return `Will ${job.action.toLowerCase()} ${formatDateAndTime(\n job.scheduledFor.datetime\n ).toLowerCase()}\n ${jobsCount > 1 ? `+ ${jobsCount - 1} more` : ''}`;\n};\n\nexport const ScheduleTooltip = ({\n job,\n jobsCount,\n children,\n}: {\n job: ScheduledAction;\n jobsCount: number;\n children: React.ReactElement;\n}) => {\n return (\n <Tooltip\n placement=\"top\"\n testId={job.sys.id}\n as=\"div\"\n content={getScheduleTooltipContent({ job, jobsCount })}>\n {children}\n </Tooltip>\n );\n};\n","import React from 'react';\n\nimport { SpaceAPI, ScheduledAction } from '@contentful/app-sdk';\n\nimport { ScheduleTooltip } from './ScheduleTooltip';\n\ntype ScheduledIconWithTooltipProps = {\n getEntityScheduledActions: SpaceAPI['getEntityScheduledActions'];\n entityType: 'Entry' | 'Asset';\n entityId: string;\n children: React.ReactElement;\n};\n\nexport const ScheduledIconWithTooltip = ({\n entityType,\n entityId,\n getEntityScheduledActions,\n children,\n}: ScheduledIconWithTooltipProps) => {\n const [status, setStatus] = React.useState<\n | { type: 'loading' }\n | { type: 'error'; error: Error }\n | { type: 'loaded'; jobs: ScheduledAction[] }\n >({ type: 'loading' });\n\n React.useEffect(() => {\n getEntityScheduledActions(entityType, entityId)\n .then((data) => {\n setStatus({ type: 'loaded', jobs: data });\n })\n .catch((e) => {\n setStatus({ type: 'error', error: e });\n });\n // This should only be ever called once. Following the eslint hint to add used\n // dependencies will cause page freeze (infinite loop)\n // eslint-disable-next-line -- TODO: describe this disable\n }, []);\n\n if (status.type === 'loading' || status.type === 'error') {\n return null;\n }\n\n const jobs = status.jobs ?? [];\n\n if (jobs.length === 0) {\n return null;\n }\n\n const mostRelevantJob = jobs[0];\n\n return (\n <ScheduleTooltip job={mostRelevantJob} jobsCount={jobs.length}>\n {children}\n </ScheduleTooltip>\n );\n};\n","import React from 'react';\n\nimport { File } from '../../types';\n\ninterface AssetThumbnailProps {\n file: File;\n}\n\nconst dimensions = { width: 70, height: 70 };\n\nexport function AssetThumbnail(props: AssetThumbnailProps) {\n return (\n <img\n alt={props.file.fileName}\n src={`${props.file.url}?w=${dimensions.width}&h=${dimensions.height}&fit=thumb`}\n height={dimensions.height}\n width={dimensions.width}\n />\n );\n}\n","import React, { useCallback, useEffect, useMemo, useRef } from 'react';\n\nimport { BaseExtensionSDK } from '@contentful/app-sdk';\nimport {\n FetchQueryOptions,\n Query,\n QueryCache,\n QueryClient,\n QueryClientProvider,\n QueryKey,\n useQuery,\n useQueryClient,\n} from '@tanstack/react-query';\nimport constate from 'constate';\nimport { createClient, PlainClientAPI } from 'contentful-management';\nimport PQueue from 'p-queue';\n\nimport {\n Asset,\n ContentType,\n Entry,\n Resource,\n ResourceType,\n Space,\n ScheduledAction,\n} from '../types';\n\nexport type ResourceInfo<R extends Resource = Resource> = {\n resource: R;\n defaultLocaleCode: string;\n contentType: ContentType;\n space: Space;\n};\n\n// global queue for all requests, the actual number is picked without scientific research\nconst globalQueue = new PQueue({ concurrency: 50 });\n\ntype EntityStoreProps = {\n sdk: BaseExtensionSDK;\n queryConcurrency?: number;\n};\n\ntype FetchService = ReturnType<typeof useFetch>;\n\ntype GetOptions = {\n priority?: number;\n};\n\ntype GetEntityOptions = GetOptions & {\n spaceId?: string;\n environmentId?: string;\n};\n\ntype UseEntityOptions = GetEntityOptions & { enabled?: boolean };\n\ntype QueryEntityResult<E> = Promise<E>;\n\ntype GetResourceOptions = GetOptions;\n\ntype QueryResourceResult<R extends Resource = Resource> = QueryEntityResult<ResourceInfo<R>>;\n\ntype UseResourceOptions = GetResourceOptions & { enabled?: boolean };\n\n// all types of the union share the data property to ease destructuring downstream\ntype UseEntityResult<E> =\n | { status: 'idle'; data: never }\n | { status: 'loading'; data: never }\n | { status: 'error'; data: never }\n | { status: 'success'; data: E };\n\ntype FetchFunction<TQueryData> = (context: { cmaClient: PlainClientAPI }) => Promise<TQueryData>;\ntype FetchServiceOptions<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey\n> = FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey> & GetOptions;\ntype FetchParams = { fetch: FetchService; urn: string; options?: GetOptions };\n\ntype FetchableEntityType = 'Entry' | 'Asset';\ntype FetchableEntity = Entry | Asset;\n\ntype EntityQueryKey = [\n entityType: FetchableEntityType,\n entityId: string,\n spaceId: string,\n environmentId: string\n];\n\ntype ScheduledActionsQueryKey = ['scheduled-actions', ...EntityQueryKey];\n\nexport class UnsupportedError extends Error {\n isUnsupportedError: boolean;\n constructor(message: string) {\n super(message);\n this.isUnsupportedError = true;\n }\n}\n\nexport function isUnsupportedError(value: unknown): value is UnsupportedError {\n return (\n typeof value === 'object' && (value as UnsupportedError | null)?.isUnsupportedError === true\n );\n}\n\nconst isEntityQueryKey = (queryKey: QueryKey): queryKey is EntityQueryKey => {\n return (\n Array.isArray(queryKey) &&\n (queryKey[0] === 'Entry' || queryKey[0] === 'Asset') &&\n queryKey.length === 4\n );\n};\n\ntype ResourceQueryKey = [ident: 'Resource', resourceType: ResourceType, urn: string];\n\nasync function fetchContentfulEntry(params: FetchParams): Promise<ResourceInfo<Entry>> {\n const { urn, fetch, options } = params;\n const resourceId = urn.split(':', 6)[5];\n const [, spaceId, , entryId] = resourceId.split('/');\n const environmentId = 'master';\n\n const [space, entry] = await Promise.all([\n fetch(['space', spaceId], ({ cmaClient }) => cmaClient.space.get({ spaceId }), options),\n fetch(\n ['entry', spaceId, environmentId, entryId],\n ({ cmaClient }) =>\n cmaClient.entry.get({\n spaceId,\n environmentId,\n entryId,\n }),\n options\n ),\n ]);\n const contentTypeId = entry.sys.contentType.sys.id;\n const [contentType, defaultLocaleCode] = await Promise.all([\n fetch(\n ['contentType', spaceId, environmentId, contentTypeId],\n ({ cmaClient }) =>\n cmaClient.contentType.get({\n contentTypeId,\n spaceId,\n environmentId,\n }),\n options\n ),\n fetch(\n ['defaultLocale', spaceId, environmentId],\n async ({ cmaClient }) => {\n const locales = await cmaClient.locale.getMany({\n spaceId,\n environmentId,\n query: { limit: 100 },\n });\n const defaultLocaleCode = locales.items.find((locale) => locale.default)?.code as string;\n return defaultLocaleCode;\n },\n options\n ),\n ]);\n\n return {\n defaultLocaleCode,\n resource: entry,\n space: space,\n contentType: contentType,\n };\n}\n\nconst [InternalServiceProvider, useFetch, useEntityLoader, useCurrentIds] = constate(\n function useInitServices(props: EntityStoreProps) {\n const currentSpaceId = props.sdk.ids.space;\n const currentEnvironmentId = props.sdk.ids.environmentAlias ?? props.sdk.ids.environment;\n const environmentIds = useMemo(\n () => [props.sdk.ids.environmentAlias, props.sdk.ids.environment],\n [props.sdk.ids.environmentAlias, props.sdk.ids.environment]\n );\n const queryClient = useQueryClient();\n const queryCache = queryClient.getQueryCache();\n const entityChangeUnsubscribers = useRef<Record<string, Function>>({});\n const cmaClient = useMemo(\n () => createClient({ apiAdapter: props.sdk.cmaAdapter }, { type: 'plain' }),\n [props.sdk.cmaAdapter]\n );\n const queryQueue = useMemo(() => {\n if (props.queryConcurrency) {\n return new PQueue({ concurrency: props.queryConcurrency });\n }\n\n return globalQueue;\n }, [props.queryConcurrency]);\n\n const fetch = useCallback(\n function fetch<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey\n >(\n queryKey: TQueryKey,\n fn: FetchFunction<TQueryFnData>,\n options: FetchServiceOptions<TQueryFnData, TError, TData, TQueryKey> = {}\n ) {\n const { priority, ...queryOptions } = options;\n return queryClient.fetchQuery(\n queryKey,\n () => queryQueue.add(() => fn({ cmaClient }), { priority }),\n queryOptions\n );\n },\n [queryClient, queryQueue, cmaClient]\n );\n\n const getEntity = useCallback(\n function getEntity<E extends FetchableEntity>(\n entityType: FetchableEntityType,\n entityId: string,\n options?: GetEntityOptions\n ): QueryEntityResult<E> {\n const spaceId = options?.spaceId ?? currentSpaceId;\n const environmentId = options?.environmentId ?? currentEnvironmentId;\n const queryKey: EntityQueryKey = [entityType, entityId, spaceId, environmentId];\n\n return fetch(\n queryKey,\n ({ cmaClient }) => {\n if (entityType === 'Entry') {\n return cmaClient.entry.get({ entryId: entityId, spaceId, environmentId });\n }\n\n if (entityType === 'Asset') {\n return cmaClient.asset.get({ assetId: entityId, spaceId, environmentId });\n }\n\n throw new UnsupportedError('Unsupported entity type');\n },\n options\n );\n },\n [fetch, currentSpaceId, currentEnvironmentId]\n );\n\n /**\n * Fetch all scheduled actions for a given entity.\n * This function fetches all schedules for all entries and then returns\n * a filtered result based on the entityID provided.\n *\n * The result is then reused/cached for subsequent calls to this function.\n */\n const getEntityScheduledActions = useCallback(\n function getEntityScheduledActions(\n entityType: FetchableEntityType,\n entityId: string,\n options?: GetEntityOptions\n ): QueryEntityResult<ScheduledAction[]> {\n // This is fixed to force the cache to reuse previous results\n const fixedEntityCacheId = 'scheduledActionEntityId';\n\n // A space+environment combo can only have up to 500 scheduled actions\n // With this request we fetch all schedules and can reuse the results.\n // See https://www.contentful.com/developers/docs/references/content-management-api/#/reference/scheduled-actions/limitations\n const maxScheduledActions = 500;\n const spaceId = options?.spaceId ?? currentSpaceId;\n const environmentId = options?.environmentId ?? currentEnvironmentId;\n const queryKey: ScheduledActionsQueryKey = [\n 'scheduled-actions',\n entityType,\n fixedEntityCacheId,\n spaceId,\n environmentId,\n ];\n\n // Fetch + Filter by entity ID in the end\n return fetch(\n queryKey,\n async ({ cmaClient }) => {\n const response = await cmaClient.scheduledActions.getMany({\n spaceId,\n query: {\n 'environment.sys.id': environmentId,\n 'sys.status[in]': 'scheduled',\n order: 'scheduledFor.datetime',\n limit: maxScheduledActions,\n },\n });\n\n return response.items;\n },\n options\n ).then((items) => items.filter((action) => action.entity.sys.id === entityId));\n },\n [fetch, currentSpaceId, currentEnvironmentId]\n );\n\n const getResource = useCallback(\n function getResource<R extends Resource = Resource>(\n resourceType: ResourceType,\n urn: string,\n options?: GetResourceOptions\n ): QueryResourceResult<R> {\n const queryKey: ResourceQueryKey = ['Resource', resourceType, urn];\n return fetch(\n queryKey,\n () => {\n if (resourceType === 'Contentful:Entry') {\n return fetchContentfulEntry({\n fetch,\n urn,\n options,\n });\n }\n\n throw new UnsupportedError('Unsupported resource type');\n },\n options\n );\n },\n [fetch]\n );\n\n const isSameSpaceEntityQueryKey = useCallback(\n (queryKey: QueryKey) => {\n const isEntityKey = isEntityQueryKey(queryKey);\n const isSameSpaceEntityKey =\n isEntityKey && queryKey[2] === currentSpaceId && environmentIds.includes(queryKey[3]);\n\n return isSameSpaceEntityKey;\n },\n [currentSpaceId, environmentIds]\n );\n // @ts-expect-error ...\n const onEntityChanged = props.sdk.space.onEntityChanged;\n const onSlideInNavigation = props.sdk.navigator.onSlideInNavigation;\n\n useEffect(() => {\n function findSameSpaceQueries(): Query[] {\n return queryCache.findAll({\n type: 'active',\n predicate: (query) => isSameSpaceEntityQueryKey(query.queryKey),\n });\n }\n\n if (typeof onEntityChanged !== 'function') {\n return onSlideInNavigation(({ oldSlideLevel, newSlideLevel }) => {\n if (oldSlideLevel > newSlideLevel) {\n findSameSpaceQueries().forEach((query) => {\n // automatically refetches the query\n void queryClient.invalidateQueries(query.queryKey);\n });\n }\n }) as { (): void };\n }\n\n const subscribeQuery = ({ queryKey, queryHash }: Query) => {\n const [entityType, entityId] = queryKey;\n entityChangeUnsubscribers.current[queryHash] = onEntityChanged(\n entityType,\n entityId,\n (data: unknown) => {\n queryClient.setQueryData(queryKey, data);\n }\n );\n };\n findSameSpaceQueries().forEach(subscribeQuery);\n\n const unsubscribe = queryCache.subscribe((event) => {\n if (!event) {\n return;\n }\n\n const { type, query } = event;\n const { queryKey, queryHash } = query;\n\n if (!isSameSpaceEntityQueryKey(queryKey)) {\n return;\n }\n\n if (type === 'added') {\n subscribeQuery(query);\n }\n\n if (type === 'removed') {\n // calling unsubscribe\n entityChangeUnsubscribers.current[queryHash]?.();\n }\n });\n\n return () => {\n unsubscribe();\n Object.values(entityChangeUnsubscribers.current).forEach((off) => off());\n entityChangeUnsubscribers.current = {};\n };\n }, [\n onEntityChanged,\n queryCache,\n isSameSpaceEntityQueryKey,\n queryClient,\n getEntity,\n onSlideInNavigation,\n ]);\n\n return {\n ids: props.sdk.ids,\n cmaClient,\n fetch,\n getResource,\n getEntity,\n getEntityScheduledActions,\n };\n },\n ({ fetch }) => fetch,\n ({ getResource, getEntity, getEntityScheduledActions }) => ({\n getResource,\n getEntity,\n getEntityScheduledActions,\n }),\n ({ ids }) => ({\n environment: ids.environmentAlias ?? ids.environment,\n space: ids.space,\n })\n);\n\nexport function useEntity<E extends FetchableEntity>(\n entityType: FetchableEntityType,\n entityId: string,\n options?: UseEntityOptions\n): UseEntityResult<E> {\n const { space, environment } = useCurrentIds();\n const { getEntity } = useEntityLoader();\n const queryKey: EntityQueryKey = [\n entityType,\n entityId,\n options?.spaceId ?? space,\n options?.environmentId ?? environment,\n ];\n const { status, data } = useQuery(queryKey, () => getEntity(entityType, entityId, options), {\n enabled: options?.enabled,\n });\n return { status, data } as UseEntityResult<E>;\n}\n\nexport function useResource(resourceType: ResourceType, urn: string, options?: UseResourceOptions) {\n const queryKey: ResourceQueryKey = ['Resource', resourceType, urn];\n const { getResource } = useEntityLoader();\n const { status, data, error } = useQuery(\n queryKey,\n () => getResource(resourceType, urn, options),\n {\n enabled: options?.enabled,\n }\n );\n return { status, data, error };\n}\n\nfunction EntityProvider({ children, ...props }: React.PropsWithChildren<EntityStoreProps>) {\n const reactQueryClient = useMemo(() => {\n const queryCache = new QueryCache();\n const queryClient = new QueryClient({\n queryCache,\n defaultOptions: {\n queries: {\n useErrorBoundary: false,\n refetchOnWindowFocus: false,\n refetchOnReconnect: true,\n refetchOnMount: false,\n staleTime: Infinity,\n retry: false,\n },\n },\n });\n\n return queryClient;\n }, []);\n\n return (\n <QueryClientProvider client={reactQueryClient}>\n <InternalServiceProvider {...props}>{children}</InternalServiceProvider>\n </QueryClientProvider>\n );\n}\n\nexport { EntityProvider, useEntityLoader };\n","import * as React from 'react';\n\nimport { FieldConnector } from '@contentful/field-editor-shared';\nimport deepEqual from 'deep-equal';\n\nimport type { LinkActionsProps } from '../components';\nimport { Action, ActionLabels, FieldExtensionSDK, ViewType } from '../types';\nimport { CustomCardRenderer, RenderCustomMissingEntityCard } from './customCardTypes';\nimport { EntityProvider } from './EntityStore';\n\n// TODO: Rename common base for reference/media editors to something neutral,\n// e.g. `LinkEditor<T>`.\n\nexport interface ReferenceEditorProps {\n /**\n * Whether or not the field should be disabled initially.\n */\n isInitiallyDisabled: boolean;\n hasCardEditActions: boolean;\n hasCardMoveActions?: boolean;\n hasCardRemoveActions?: boolean;\n sdk: FieldExtensionSDK;\n viewType: ViewType;\n renderCustomCard?: CustomCardRenderer;\n renderCustomActions?: (props: CustomActionProps) => React.ReactElement;\n renderCustomMissingEntityCard?: RenderCustomMissingEntityCard;\n getEntityUrl?: (entryId: string) => string;\n onAction?: (action: Action) => void;\n actionLabels?: Partial<ActionLabels>;\n parameters: {\n instance: {\n showCreateEntityAction?: boolean;\n showLinkEntityAction?: boolean;\n bulkEditing?: boolean;\n };\n };\n updateBeforeSortStart?: ({ index }: { index: number }) => void;\n onSortingEnd?: ({ oldIndex, newIndex }: { oldIndex: number; newIndex: number }) => void;\n}\n\nexport type CustomActionProps = LinkActionsProps;\n\nexport function ReferenceEditor<T>(\n props: ReferenceEditorProps & {\n children: FieldConnector<T>['props']['children'];\n }\n) {\n return (\n <EntityProvider sdk={props.sdk}>\n <FieldConnector<T>\n throttle={0}\n field={props.sdk.field}\n isInitiallyDisabled={props.isInitiallyDisabled}\n isEqualValues={(value1, value2) => {\n return deepEqual(value1, value2);\n }}\n >\n {props.children}\n </FieldConnector>\n </EntityProvider>\n );\n}\n\nReferenceEditor.defaultProps = {\n isInitiallyDisabled: true,\n hasCardEditActions: true,\n};\n","import { FieldAPI } from '@contentful/app-sdk';\nimport isNumber from 'lodash/isNumber';\n\ntype NumberOfLinksValidation =\n | { type: 'min-max'; min: number; max: number }\n | { type: 'min'; min: number; max: undefined }\n | { type: 'max'; max: number; min: undefined };\n\nexport type ReferenceValidations = {\n contentTypes?: string[];\n mimetypeGroups?: string[];\n numberOfLinks?: NumberOfLinksValidation;\n};\n\nexport function fromFieldValidations(field: FieldAPI): ReferenceValidations {\n // eslint-disable-next-line -- TODO: describe this disable @typescript-eslint/no-explicit-any\n const validations: Record<string, any>[] = [\n ...field.validations,\n ...(field.items?.validations ?? []),\n ];\n const linkContentTypeValidations = validations.find((v) => 'linkContentType' in v);\n const linkMimetypeGroupValidations = validations.find((v) => 'linkMimetypeGroup' in v);\n const sizeValidations = validations.find((v) => 'size' in v);\n const size = (sizeValidations && sizeValidations.size) || {};\n const min = size.min;\n const max = size.max;\n\n let numberOfLinks: NumberOfLinksValidation | undefined = undefined;\n\n if (isNumber(min) && isNumber(max)) {\n numberOfLinks = {\n type: 'min-max',\n min,\n max,\n };\n } else if (isNumber(min)) {\n numberOfLinks = {\n type: 'min',\n min,\n max: undefined,\n };\n } else if (isNumber(max)) {\n numberOfLinks = {\n type: 'max',\n max,\n min: undefined,\n };\n }\n\n const result: ReferenceValidations = {\n contentTypes: linkContentTypeValidations?.linkContentType ?? undefined,\n mimetypeGroups: linkMimetypeGroupValidations?.linkMimetypeGroup ?? undefined,\n numberOfLinks,\n // todo: there are multiple BE problems that need to be solved first, for now we don't want to apply size constraints\n // linkedFileSize: findValidation(field, 'assetFileSize', {}),\n // linkedImageDimensions: findValidation(field, 'assetImageDimensions', {})\n };\n\n return result;\n}\n","import type {\n AccessAPI,\n ArchiveableAction,\n CrudAction,\n PublishableAction,\n} from '@contentful/app-sdk';\n\ntype EntryAction = CrudAction | PublishableAction | ArchiveableAction;\n\ntype ExtendedAccessAPI = {\n canPerformActionOnEntryOfType: (action: EntryAction, contentTypeId: string) => Promise<boolean>;\n};\n\nconst AllowActionsOnContentType: ExtendedAccessAPI['canPerformActionOnEntryOfType'] = () =>\n Promise.resolve(true);\n\nexport function useAccessApi(accessApi: AccessAPI & Partial<ExtendedAccessAPI>) {\n const canPerformAction = accessApi.can;\n const canPerformActionOnEntryOfType =\n accessApi.canPerformActionOnEntryOfType ?? AllowActionsOnContentType;\n\n return { canPerformAction, canPerformActionOnEntryOfType };\n}\n","import { useEffect, useMemo, useState } from 'react';\n\nimport { ContentType, ContentEntityType, FieldExtensionSDK } from '../types';\nimport { ReferenceValidations } from '../utils/fromFieldValidations';\nimport { ReferenceEditorProps } from './ReferenceEditor';\nimport { useAccessApi } from './useAccessApi';\n\ntype ContentTypePermissionsProps = {\n sdk: FieldExtensionSDK;\n entityType: ContentEntityType;\n parameters: ReferenceEditorProps['parameters'];\n allContentTypes: ContentType[];\n validations: ReferenceValidations;\n};\n\ntype ContentTypePermissions = {\n creatableContentTypes: ContentType[];\n readableContentTypes: ContentType[];\n availableContentTypes: ContentType[];\n};\n\nasync function filter<T, S extends T>(arr: T[], predicate: (value: T) => Promise<boolean>) {\n // intentionally parallel as we assume it's cached in the implementation of the access api\n const fail = Symbol();\n const results = await Promise.all(\n arr.map(async (item) => ((await predicate(item)) ? item : fail))\n );\n\n return results.filter((x) => x !== fail) as S[];\n}\n\nexport function useContentTypePermissions(\n props: ContentTypePermissionsProps\n): ContentTypePermissions {\n const availableContentTypes = useMemo(() => {\n if (props.entityType === 'Asset') {\n return [];\n }\n\n if (props.validations.contentTypes) {\n return props.allContentTypes.filter((ct) =>\n props.validations.contentTypes?.includes(ct.sys.id)\n );\n }\n\n return props.allContentTypes;\n }, [props.allContentTypes, props.validations.contentTypes, props.entityType]);\n const [creatableContentTypes, setCreatableContentTypes] = useState(availableContentTypes);\n const [readableContentTypes, setReadableContentTypes] = useState(availableContentTypes);\n const { canPerformActionOnEntryOfType } = useAccessApi(props.sdk.access);\n\n useEffect(() => {\n function getContentTypes(action: 'create' | 'read') {\n return filter(availableContentTypes, (ct) =>\n canPerformActionOnEntryOfType(action, ct.sys.id)\n );\n }\n\n async function checkContentTypeAccess() {\n const creatable = await getContentTypes('create');\n const readable = await getContentTypes('read');\n setCreatableContentTypes(creatable);\n setReadableContentTypes(readable);\n }\n\n void checkContentTypeAccess();\n // eslint-disable-next-line react-hooks/exhaustive-deps -- TODO: Evaluate the dependencies\n }, [availableContentTypes]);\n\n return {\n creatableContentTypes,\n readableContentTypes,\n availableContentTypes,\n };\n}\n","import { useEffect, useMemo, useState } from 'react';\n\nimport { ContentType, ContentEntityType, FieldExtensionSDK } from '../types';\nimport { fromFieldValidations } from '../utils/fromFieldValidations';\nimport { ReferenceEditorProps } from './ReferenceEditor';\nimport { useAccessApi } from './useAccessApi';\nimport { useContentTypePermissions } from './useContentTypePermissions';\n\nexport type EditorPermissionsProps = {\n sdk: FieldExtensionSDK;\n entityType: ContentEntityType;\n parameters: ReferenceEditorProps['parameters'];\n allContentTypes: ContentType[];\n};\n\nexport function useEditorPermissions(props: EditorPermissionsProps) {\n const { sdk, entityType, parameters } = props;\n const validations = useMemo(() => fromFieldValidations(props.sdk.field), [props.sdk.field]);\n const [canCreateEntity, setCanCreateEntity] = useState(true);\n const [canLinkEntity, setCanLinkEntity] = useState(true);\n const { creatableContentTypes, readableContentTypes, availableContentTypes } =\n useContentTypePermissions({ ...props, validations });\n const { canPerformAction } = useAccessApi(sdk.access);\n\n useEffect(() => {\n if (parameters.instance.showCreateEntityAction === false) {\n setCanCreateEntity(false);\n return;\n }\n\n async function checkCreateAccess() {\n if (entityType === 'Asset') {\n // Hardcoded `true` value following https://contentful.atlassian.net/browse/DANTE-486\n // TODO: refine permissions check in order to account for tags in rules\n const canCreate = (await canPerformAction('create', 'Asset')) || true;\n setCanCreateEntity(canCreate);\n }\n if (entityType === 'Entry') {\n // Hardcoded `true` value following https://contentful.atlassian.net/browse/DANTE-486\n // TODO: refine permissions check in order to account for tags in rules\n const canCreate = creatableContentTypes.length > 0 || true;\n setCanCreateEntity(canCreate);\n }\n }\n\n void checkCreateAccess();\n // eslint-disable-next-line react-hooks/exhaustive-deps -- TODO: Evaluate the dependencies\n }, [entityType, parameters.instance, creatableContentTypes]);\n\n useEffect(() => {\n if (parameters.instance.showLinkEntityAction === false) {\n setCanLinkEntity(false);\n return;\n }\n\n async function checkLinkAccess() {\n if (entityType === 'Asset') {\n // Hardcoded `true` value following https://contentful.atlassian.net/browse/DANTE-486\n // TODO: refine permissions check in order to account for tags in rules\n const canRead = (await canPerformAction('read', 'Asset')) || true;\n setCanLinkEntity(canRead);\n }\n if (entityType === 'Entry') {\n // Hardcoded `true` value following https://contentful.atlassian.net/browse/DANTE-486\n // TODO: refine permissions check in order to account for tags in rules\n // TODO: always show every content type (it's just a filter) to avoid people not seeing\n // their (partly limited) content types\n const canRead = true;\n setCanLinkEntity(canRead);\n }\n }\n\n void checkLinkAccess();\n // eslint-disable-next-line react-hooks/exhaustive-deps -- TODO: Evaluate the dependencies\n }, [entityType, parameters.instance, readableContentTypes]);\n\n return {\n canCreateEntity,\n canLinkEntity,\n creatableContentTypes,\n readableContentTypes,\n availableContentTypes,\n validations,\n };\n}\n\nexport type EditorPermissions = ReturnType<typeof useEditorPermissions>;\n","import * as React from 'react';\nimport { useCallback } from 'react';\n\nimport { LinkEntityActions } from '../components';\nimport { useLinkActionsProps } from '../components/LinkActions/LinkEntityActions';\nimport { ContentType, ContentEntityType, ReferenceValue } from '../types';\nimport { CustomEntityCardProps } from './customCardTypes';\nimport { ReferenceEditor, ReferenceEditorProps } from './ReferenceEditor';\nimport { useEditorPermissions } from './useEditorPermissions';\n\ntype ChildProps = {\n entityId: string;\n entityType: ContentEntityType;\n isDisabled: boolean;\n setValue: (value: ReferenceValue | null | undefined) => void;\n allContentTypes: ContentType[];\n renderCustomCard?: ReferenceEditorProps['renderCustomCard'];\n hasCardEditActions: boolean;\n hasCardRemoveActions?: boolean;\n};\n\ntype EditorProps = ReferenceEditorProps &\n ChildProps & {\n children: (props: ReferenceEditorProps & ChildProps) => React.ReactElement;\n };\n\nfunction Editor(props: EditorProps) {\n const { setValue, entityType } = props;\n const editorPermissions = useEditorPermissions(props);\n\n const onCreate = useCallback(\n (id: string) => void setValue({ sys: { type: 'Link', linkType: entityType, id } }),\n [setValue, entityType]\n );\n const onLink = useCallback(\n (ids: string[]) => {\n const [id] = ids;\n setValue({ sys: { type: 'Link', linkType: entityType, id } });\n },\n [setValue, entityType]\n );\n\n const linkActionsProps = useLinkActionsProps({\n ...props,\n canLinkMultiple: false,\n editorPermissions,\n onCreate,\n onLink,\n });\n // Inject card actions props into the given custom card renderer\n const customCardRenderer = useCallback(\n (cardProps: CustomEntityCardProps, _, renderDefaultCard) =>\n props.renderCustomCard\n ? props.renderCustomCard(cardProps, linkActionsProps, renderDefaultCard)\n : false,\n // eslint-disable-next-line react-hooks/exhaustive-deps -- TODO: Evaluate the dependencies\n [linkActionsProps]\n );\n\n if (!props.entityId) {\n return (\n <LinkEntityActions renderCustomActions={props.renderCustomActions} {...linkActionsProps} />\n );\n }\n\n return props.children({\n ...props,\n renderCustomCard: props.renderCustomCard && customCardRenderer,\n });\n}\n\nexport function SingleReferenceEditor(\n props: ReferenceEditorProps & {\n entityType: ContentEntityType;\n children: (props: ChildProps) => React.ReactElement;\n }\n) {\n const allContentTypes = props.sdk.space.getCachedContentTypes();\n\n return (\n <ReferenceEditor<ReferenceValue> {...props}>\n {({ value, setValue, disabled, externalReset }) => {\n return (\n <Editor\n {...props}\n key={`${externalReset}-reference`}\n entityId={value ? value.sys.id : ''}\n isDisabled={disabled}\n setValue={setValue}\n allContentTypes={allContentTypes}\n />\n );\n }}\n </ReferenceEditor>\n );\n}\n\nSingleReferenceEditor.defaultProps = {\n hasCardEditActions: true,\n hasCardRemoveActions: true,\n};\n","import * as React from 'react';\n\nimport { Flex, Text, Tooltip } from '@contentful/f36-components';\nimport { FolderOpenTrimmedIcon } from '@contentful/f36-icons';\nimport tokens from '@contentful/f36-tokens';\nimport { css } from 'emotion';\n\ninterface SpaceNameProps {\n spaceName: string;\n}\n\nconst styles = {\n spaceIcon: css({\n flexShrink: 0,\n fill: tokens.purple600,\n }),\n spaceName: css({\n color: tokens.gray700,\n fontSize: tokens.fontSizeS,\n fontWeight: tokens.fontWeightDemiBold,\n maxWidth: '80px',\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n }),\n};\n\nexport function SpaceName(props: SpaceNameProps) {\n return (\n <Tooltip placement=\"top\" as=\"div\" content={`Space: ${props.spaceName}`}>\n <Flex alignItems=\"center\" gap=\"spacingXs\" marginRight=\"spacingS\">\n <FolderOpenTrimmedIcon className={styles.spaceIcon} size=\"tiny\" aria-label=\"Source space\" />\n <Text className={styles.spaceName}>{props.spaceName}</Text>\n </Flex>\n </Tooltip>\n );\n}\n","import * as React from 'react';\n\nimport { SpaceAPI } from '@contentful/app-sdk';\nimport { EntryCard, MenuItem, MenuDivider } from '@contentful/f36-components';\nimport { ClockIcon } from '@contentful/f36-icons';\nimport tokens from '@contentful/f36-tokens';\nimport { entityHelpers, isValidImage } from '@contentful/field-editor-shared';\nimport { css } from 'emotion';\n\nimport { AssetThumbnail, MissingEntityCard, ScheduledIconWithTooltip } from '../../components';\nimport { SpaceName } from '../../components/SpaceName/SpaceName';\nimport { ContentType, Entry, File, RenderDragFn } from '../../types';\n\nconst { getEntryTitle, getEntityDescription, getEntryStatus, getEntryImage } = entityHelpers;\n\nconst styles = {\n scheduleIcon: css({\n marginRight: tokens.spacing2Xs,\n }),\n};\n\nexport interface WrappedEntryCardProps {\n getEntityScheduledActions: SpaceAPI['getEntityScheduledActions'];\n getAsset: (assetId: string) => Promise<unknown>;\n entryUrl?: string;\n size: 'small' | 'default' | 'auto';\n isDisabled: boolean;\n isSelected?: boolean;\n onRemove?: () => void;\n onEdit?: () => void;\n onClick?: (e: React.MouseEvent<HTMLElement>) => void;\n localeCode: string;\n defaultLocaleCode: string;\n contentType?: ContentType;\n spaceName?: string;\n entry: Entry;\n renderDragHandle?: RenderDragFn;\n isClickable?: boolean;\n onMoveTop?: () => void;\n onMoveBottom?: () => void;\n hasCardEditActions: boolean;\n hasCardMoveActions?: boolean;\n hasCardRemoveActions?: boolean;\n}\n\nconst defaultProps = {\n isClickable: true,\n hasCardEditActions: true,\n hasCardMoveActions: true,\n hasCardRemoveActions: true,\n};\n\nexport function WrappedEntryCard(props: WrappedEntryCardProps) {\n const [file, setFile] = React.useState<null | File>(null);\n\n const { contentType } = props;\n\n React.useEffect(() => {\n if (props.entry) {\n getEntryImage(\n {\n entry: props.entry,\n contentType,\n localeCode: props.localeCode,\n defaultLocaleCode: props.defaultLocaleCode,\n },\n props.getAsset\n )\n .then((file) => {\n setFile(file);\n })\n .catch(() => {\n setFile(null);\n });\n }\n }, [props.entry, props.getAsset, contentType, props.localeCode, props.defaultLocaleCode]);\n\n const status = getEntryStatus(props.entry?.sys);\n\n if (status === 'deleted') {\n return (\n <MissingEntityCard\n entityType=\"Entry\"\n isDisabled={props.isDisabled}\n onRemove={props.onRemove}\n />\n );\n }\n\n const title = getEntryTitle({\n entry: props.entry,\n contentType,\n localeCode: props.localeCode,\n defaultLocaleCode: props.defaultLocaleCode,\n defaultTitle: 'Untitled',\n });\n\n const description = getEntityDescription({\n entity: props.entry,\n contentType,\n localeCode: props.localeCode,\n defaultLocaleCode: props.defaultLocaleCode,\n });\n\n return (\n <EntryCard\n as={props.entryUrl ? 'a' : 'article'}\n href={props.entryUrl}\n title={title}\n description={description}\n contentType={contentType?.name}\n size={props.size}\n isSelected={props.isSelected}\n status={status}\n icon={\n props.spaceName ? (\n <SpaceName spaceName={props.spaceName} />\n ) : (\n <ScheduledIconWithTooltip\n getEntityScheduledActions={props.getEntityScheduledActions}\n entityType=\"Entry\"\n entityId={props.entry.sys.id}>\n <ClockIcon\n className={styles.scheduleIcon}\n size=\"small\"\n variant=\"muted\"\n testId=\"schedule-icon\"\n />\n </ScheduledIconWithTooltip>\n )\n }\n thumbnailElement={file && isValidImage(file) ? <AssetThumbnail file={file} /> : undefined}\n dragHandleRender={props.renderDragHandle}\n withDragHandle={!!props.renderDragHandle}\n actions={\n props.onEdit || props.onRemove\n ? [\n props.hasCardEditActions && props.onEdit ? (\n <MenuItem\n key=\"edit\"\n testId=\"edit\"\n onClick={() => {\n props.onEdit && props.onEdit();\n }}>\n Edit\n </MenuItem>\n ) : null,\n props.hasCardRemoveActions && props.onRemove ? (\n <MenuItem\n key=\"delete\"\n testId=\"delete\"\n onClick={() => {\n props.onRemove && props.onRemove();\n }}>\n Remove\n </MenuItem>\n ) : null,\n props.hasCardMoveActions && (props.onMoveTop || props.onMoveBottom) ? (\n <MenuDivider key=\"divider\" />\n ) : null,\n props.hasCardMoveActions && props.onMoveTop ? (\n <MenuItem\n key=\"move-top\"\n onClick={() => props.onMoveTop && props.onMoveTop()}\n testId=\"move-top\">\n Move to top\n </MenuItem>\n ) : null,\n props.hasCardMoveActions && props.onMoveBottom ? (\n <MenuItem\n key=\"move-bottom\"\n onClick={() => props.onMoveBottom && props.onMoveBottom()}\n testId=\"move-bottom\">\n Move to bottom\n </MenuItem>\n ) : null,\n ].filter((item) => item)\n : []\n }\n onClick={\n // Providing an onClick handler messes up with some rich text\n // features e.g. pressing ENTER on a card to add a new paragraph\n // underneath. It's crucial not to pass a custom handler when\n // isClickable is disabled which in the case of RT it's.\n props.isClickable\n ? (e: React.MouseEvent<HTMLElement>) => {\n e.preventDefault();\n if (props.onClick) return props.onClick(e);\n props.onEdit && props.onEdit();\n }\n : undefined\n }\n />\n );\n}\n\nWrappedEntryCard.defaultProps = defaultProps;\n","import * as React from 'react';\n\nimport { EntryCard } from '@contentful/f36-components';\nimport get from 'lodash/get';\n\nimport { CustomEntityCardProps, RenderCustomMissingEntityCard } from '../../common/customCardTypes';\nimport { useEntity, useEntityLoader } from '../../common/EntityStore';\nimport { ReferenceEditorProps } from '../../common/ReferenceEditor';\nimport { MissingEntityCard } from '../../components';\nimport type { LinkActionsProps } from '../../components';\nimport {\n ContentType,\n FieldExtensionSDK,\n NavigatorSlideInfo,\n RenderDragFn,\n Entry,\n} from '../../types';\nimport { WrappedEntryCard, WrappedEntryCardProps } from './WrappedEntryCard';\n\nexport type EntryCardReferenceEditorProps = ReferenceEditorProps & {\n entryId: string;\n index?: number;\n allContentTypes: ContentType[];\n isDisabled: boolean;\n onRemove: () => void;\n renderDragHandle?: RenderDragFn;\n hasCardEditActions: boolean;\n onMoveTop?: () => void;\n onMoveBottom?: () => void;\n renderCustomMissingEntityCard?: RenderCustomMissingEntityCard;\n isBeingDragged?: boolean;\n};\n\nasync function openEntry(\n sdk: FieldExtensionSDK,\n entryId: string,\n options: { bulkEditing?: boolean; index?: number }\n) {\n let slide: NavigatorSlideInfo | undefined;\n\n if (options.bulkEditing) {\n try {\n const result = await sdk.navigator.openBulkEditor(sdk.entry.getSys().id, {\n fieldId: sdk.field.id,\n locale: sdk.field.locale,\n index: options.index ?? 0,\n });\n slide = result.slide;\n return slide;\n } catch (e) {\n // we don't allow to open multiple bulk editors for performance reasons\n // proceed with a default openEntry\n }\n }\n\n const result = await sdk.navigator.openEntry(entryId, {\n slideIn: true,\n });\n slide = result.slide;\n\n return slide;\n}\n\nexport function FetchingWrappedEntryCard(props: EntryCardReferenceEditorProps) {\n const { data: entry, status } = useEntity<Entry>('Entry', props.entryId);\n const { getEntityScheduledActions } = useEntityLoader();\n const loadEntityScheduledActions = React.useCallback(\n () => getEntityScheduledActions('Entry', props.entryId),\n [getEntityScheduledActions, props.entryId]\n );\n\n const size = props.viewType === 'link' ? 'small' : 'default';\n const { getEntity } = useEntityLoader();\n const getAsset = (assetId: string) => getEntity('Asset', assetId);\n\n const onEdit = async () => {\n const slide = await openEntry(props.sdk, props.entryId, {\n bulkEditing: props.parameters.instance.bulkEditing,\n index: props.index,\n });\n props.onAction &&\n props.onAction({\n entity: 'Entry',\n type: 'edit',\n id: props.entryId,\n contentTypeId: get(entry, 'sys.contentType.sys.id'),\n slide,\n });\n };\n\n const onRemoveEntry = () => {\n props.onRemove();\n props.onAction &&\n props.onAction({\n entity: 'Entry',\n type: 'delete',\n id: props.entryId,\n contentTypeId: get(entry, 'sys.contentType.sys.id'),\n });\n };\n\n React.useEffect(() => {\n if (entry) {\n props.onAction && props.onAction({ type: 'rendered', entity: 'Entry' });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps -- TODO: Evaluate the dependencies\n }, [entry]);\n\n return React.useMemo(() => {\n if (status === 'error') {\n const card = (\n <MissingEntityCard\n entityType=\"Entry\"\n isDisabled={props.isDisabled}\n onRemove={onRemoveEntry}\n />\n );\n if (props.renderCustomMissingEntityCard) {\n return props.renderCustomMissingEntityCard({\n defaultCard: card,\n entity: {\n id: props.entryId,\n type: 'Entry',\n },\n });\n }\n return card;\n }\n if (status === 'loading') {\n return <EntryCard size={size} isLoading />;\n }\n const sharedCardProps: CustomEntityCardProps = {\n index: props.index,\n entity: entry,\n entityUrl: props.getEntityUrl && props.getEntityUrl(entry.sys.id),\n contentType: props.allContentTypes.find(\n (contentType) => contentType.sys.id === entry.sys.contentType.sys.id\n ),\n isDisabled: props.isDisabled,\n size,\n localeCode: props.sdk.field.locale,\n defaultLocaleCode: props.sdk.locales.default,\n renderDragHandle: props.renderDragHandle,\n onEdit,\n onRemove: onRemoveEntry,\n onMoveTop: props.onMoveTop,\n onMoveBottom: props.onMoveBottom,\n isBeingDragged: props.isBeingDragged,\n };\n\n const { hasCardEditActions, hasCardMoveActions, hasCardRemoveActions } = props;\n\n function renderDefaultCard(props?: CustomEntityCardProps) {\n const builtinCardProps: WrappedEntryCardProps = {\n ...sharedCardProps,\n ...props,\n hasCardEditActions,\n hasCardMoveActions,\n hasCardRemoveActions,\n getAsset,\n getEntityScheduledActions: loadEntityScheduledActions,\n entry: props?.entity || sharedCardProps.entity,\n entryUrl: props?.entityUrl || sharedCardProps.entityUrl,\n };\n\n return <WrappedEntryCard {...builtinCardProps} />;\n }\n\n if (props.renderCustomCard) {\n // LinkActionsProps are injected higher SingleReferenceEditor/MultipleReferenceEditor\n const renderedCustomCard = props.renderCustomCard(\n sharedCardProps,\n {} as LinkActionsProps,\n renderDefaultCard\n );\n // Only `false` indicates to render the original card. E.g. `null` would result in no card.\n if (renderedCustomCard !== false) {\n return renderedCustomCard;\n }\n }\n\n return renderDefaultCard();\n // eslint-disable-next-line react-hooks/exhaustive-deps -- TODO: Evaluate the dependencies\n }, [props, status, entry]);\n}\n","import * as React from 'react';\n\nimport { ReferenceEditorProps } from '../common/ReferenceEditor';\nimport { SingleReferenceEditor } from '../common/SingleReferenceEditor';\nimport { FetchingWrappedEntryCard } from './WrappedEntryCard/FetchingWrappedEntryCard';\n\nexport function SingleEntryReferenceEditor(props: ReferenceEditorProps) {\n return (\n <SingleReferenceEditor {...props} entityType=\"Entry\">\n {({\n allContentTypes,\n isDisabled,\n entityId,\n setValue,\n renderCustomCard,\n hasCardRemoveActions,\n hasCardEditActions,\n }) => {\n return (\n <FetchingWrappedEntryCard\n {...props}\n allContentTypes={allContentTypes}\n isDisabled={isDisabled}\n entryId={entityId}\n renderCustomCard={renderCustomCard}\n hasCardEditActions={hasCardEditActions}\n hasCardRemoveActions={hasCardRemoveActions}\n onRemove={() => {\n setValue(null);\n }}\n />\n );\n }}\n </SingleReferenceEditor>\n );\n}\n\nSingleEntryReferenceEditor.defaultProps = {\n isInitiallyDisabled: true,\n};\n","import * as React from 'react';\nimport { useCallback } from 'react';\nimport { SortEndHandler, SortStartHandler } from 'react-sortable-hoc';\n\nimport arrayMove from 'array-move';\n\nimport { LinkEntityActions } from '../components';\nimport { useLinkActionsProps } from '../components/LinkActions/LinkEntityActions';\nimport { ReferenceValue, ContentEntityType, ContentType } from '../types';\nimport { CustomEntityCardProps } from './customCardTypes';\nimport { ReferenceEditor, ReferenceEditorProps } from './ReferenceEditor';\nimport { useEditorPermissions } from './useEditorPermissions';\n\ntype ChildProps = {\n entityType: ContentEntityType;\n items: ReferenceValue[];\n isDisabled: boolean;\n setValue: (value: ReferenceValue[]) => void;\n allContentTypes: ContentType[];\n onSortStart: SortStartHandler;\n onSortEnd: SortEndHandler;\n onMove: (oldIndex: number, newIndex: number) => void;\n};\n\ntype EditorProps = ReferenceEditorProps &\n Omit<ChildProps, 'onSortStart' | 'onSortEnd' | 'onMove'> & {\n children: (props: ReferenceEditorProps & ChildProps) => React.ReactElement;\n setIndexToUpdate?: React.Dispatch<React.SetStateAction<number | undefined>>;\n };\n\nfunction onLinkOrCreate(\n setValue: ChildProps['setValue'],\n entityType: ChildProps['entityType'],\n items: ChildProps['items'],\n ids: string[],\n index = items.length\n): void {\n const links: ReferenceValue[] = ids.map((id) => ({\n sys: { type: 'Link', linkType: entityType, id },\n }));\n const newItems = Array.from(items);\n newItems.splice(index, 0, ...links);\n setValue(newItems);\n}\n\nconst emptyArray: ReferenceValue[] = [];\nconst nullableValue = { sys: { id: 'null-value' } };\n\nfunction Editor(props: EditorProps) {\n const { setValue, entityType, setIndexToUpdate } = props;\n const editorPermissions = useEditorPermissions(props);\n\n const items = React.useMemo(() => {\n return (\n (props.items || [])\n // If null values have found their way into the persisted\n // value for the multiref field, replace them with an object\n // that has the shape of a Link to make the missing entry/asset\n // card render\n .map((link) => link || nullableValue)\n );\n }, [props.items]);\n\n const onSortStart: SortStartHandler = useCallback((_, event) => {\n if (event instanceof MouseEvent) {\n document.body.classList.add('grabbing');\n }\n event.preventDefault();\n }, []);\n const onSortEnd: SortEndHandler = useCallback(\n ({ oldIndex, newIndex }) => {\n // custom callback that is invoked *before* we sort the array\n // e.g. in Compose we want to sort the references in the referenceMap before re-rendering drag and drop\n props.onSortingEnd && props.onSortingEnd({ oldIndex, newIndex });\n const newItems = arrayMove(items, oldIndex, newIndex);\n setValue(newItems);\n setIndexToUpdate && setIndexToUpdate(undefined);\n document.body.classList.remove('grabbing');\n },\n [items, props, setIndexToUpdate, setValue]\n );\n const onMove = useCallback(\n (oldIndex, newIndex) => {\n const newItems = arrayMove(items, oldIndex, newIndex);\n setValue(newItems);\n },\n [items, setValue]\n );\n\n const onCreate = useCallback(\n (id: string, index?: number) => onLinkOrCreate(setValue, entityType, items, [id], index),\n [setValue, items, entityType]\n );\n\n const onLink = useCallback(\n (ids: string[], index?: number) => onLinkOrCreate(setValue, entityType, items, ids, index),\n [setValue, items, entityType]\n );\n\n const linkActionsProps = useLinkActionsProps({\n ...props,\n canLinkMultiple: true,\n editorPermissions,\n onCreate,\n onLink,\n itemsLength: items.length,\n });\n\n const customCardRenderer = useCallback(\n (cardProps: CustomEntityCardProps, _, renderDefaultCard) =>\n props.renderCustomCard\n ? props.renderCustomCard(cardProps, linkActionsProps, renderDefaultCard)\n : false,\n // eslint-disable-next-line react-hooks/exhaustive-deps -- TODO: Evaluate the dependencies\n [linkActionsProps]\n );\n\n return (\n <>\n {props.children({\n ...props,\n onSortStart: onSortStart,\n onSortEnd: onSortEnd,\n onMove,\n renderCustomCard: props.renderCustomCard && customCardRenderer,\n })}\n <LinkEntityActions renderCustomActions={props.renderCustomActions} {...linkActionsProps} />\n </>\n );\n}\n\nexport function MultipleReferenceEditor(\n props: ReferenceEditorProps & {\n entityType: ContentEntityType;\n children: (props: ReferenceEditorProps & ChildProps) => React.ReactElement;\n setIndexToUpdate?: React.Dispatch<React.SetStateAction<number | undefined>>;\n }\n) {\n const allContentTypes = props.sdk.space.getCachedContentTypes();\n\n return (\n <ReferenceEditor<ReferenceValue[]> {...props}>\n {({ value, disabled, setValue, externalReset }) => {\n return (\n <Editor\n {...props}\n items={value || emptyArray}\n isDisabled={disabled}\n setValue={setValue}\n key={`${externalReset}-list`}\n allContentTypes={allContentTypes}\n />\n );\n }}\n </ReferenceEditor>\n );\n}\n\nMultipleReferenceEditor.defaultProps = {\n hasCardEditActions: true,\n};\n","import React from 'react';\nimport {\n SortableContainer,\n SortableContainerProps,\n SortableElement,\n SortableHandle,\n} from 'react-sortable-hoc';\n\nimport tokens from '@contentful/f36-tokens';\nimport { css, cx } from 'emotion';\n\nimport { ReferenceEditorProps } from './ReferenceEditor';\n\nconst styles = {\n container: css({\n position: 'relative',\n }),\n item: css({\n marginBottom: tokens.spacingM,\n zIndex: tokens.zIndexModal, // setting this to an index above 99 fixes dragged item disappearing issue. Should not be higher than 100 so it does not overlap the asset modal.\n }),\n};\ntype SortableContainerChildProps<IType> = Pick<\n SortableLinkListProps<IType>,\n 'items' | 'isDisabled'\n> & {\n item: IType;\n index: number;\n DragHandle?: typeof DragHandle;\n};\n\ntype SortableLinkListProps<T> = ReferenceEditorProps & {\n items: T[];\n isDisabled: boolean;\n children: (props: SortableContainerChildProps<T>) => React.ReactElement;\n\n className?: string;\n};\n\nconst DragHandle = (props: { drag: React.ReactElement }) => {\n const SortableDragHandle = SortableHandle(() => props.drag);\n return <SortableDragHandle />;\n};\n\nconst SortableLink = SortableElement((props: { children: React.ReactElement }) => (\n <div className={styles.item}>{props.children}</div>\n));\n\nconst SortableLinkListInternal = SortableContainer((props: SortableLinkListProps<any>) => {\n return (\n <div className={cx(styles.container, props.className)}>\n {props.items.map((item, index) => (\n <SortableLink\n disabled={props.isDisabled}\n key={`${item.sys.urn ?? item.sys.id}-${index}`}\n index={index}\n >\n {props.children({\n items: props.items,\n isDisabled: props.isDisabled,\n item,\n index,\n DragHandle: props.isDisabled ? undefined : DragHandle,\n })}\n </SortableLink>\n ))}\n </div>\n );\n});\n\n// HOC does not support generics, so we mimic it via additional component\nexport function SortableLinkList<T>(props: SortableLinkListProps<T> & SortableContainerProps) {\n // with the default distance of 0 the drag start event is \"confused\" with the click event,\n // so the latter one isn't fired and click handlers on child elements don't work\n return (\n <SortableLinkListInternal distance={1} {...props}>\n {props.children}\n </SortableLinkListInternal>\n );\n}\n","import * as React from 'react';\n\nimport { MultipleReferenceEditor } from '../common/MultipleReferenceEditor';\nimport { ReferenceEditorProps } from '../common/ReferenceEditor';\nimport { SortableLinkList } from '../common/SortableLinkList';\nimport { ReferenceValue } from '../types';\nimport { FetchingWrappedEntryCard } from './WrappedEntryCard/FetchingWrappedEntryCard';\n\nexport function MultipleEntryReferenceEditor(props: ReferenceEditorProps) {\n const [indexToUpdate, setIndexToUpdate] = React.useState<number | undefined>(undefined);\n\n const updateBeforeSortStart = ({ index }: { index: number }) => {\n setIndexToUpdate(index);\n };\n\n return (\n <MultipleReferenceEditor {...props} entityType=\"Entry\" setIndexToUpdate={setIndexToUpdate}>\n {(childrenProps) => (\n <SortableLinkList<ReferenceValue>\n {...childrenProps}\n axis=\"y\"\n useDragHandle={true}\n updateBeforeSortStart={updateBeforeSortStart}\n >\n {({ items, item, index, isDisabled, DragHandle }) => {\n const lastIndex = items.length - 1;\n return (\n <FetchingWrappedEntryCard\n {...childrenProps}\n key={`${item.sys.id}-${index}`}\n index={index}\n allContentTypes={childrenProps.allContentTypes}\n isDisabled={isDisabled}\n entryId={item.sys.id}\n onRemove={() => {\n childrenProps.setValue(items.filter((_value, i) => i !== index));\n }}\n onMoveTop={index !== 0 ? () => childrenProps.onMove(index, 0) : undefined}\n onMoveBottom={\n index !== lastIndex ? () => childrenProps.onMove(index, lastIndex) : undefined\n }\n renderDragHandle={DragHandle}\n isBeingDragged={index === indexToUpdate}\n />\n );\n }}\n </SortableLinkList>\n )}\n </MultipleReferenceEditor>\n );\n}\n","import React from 'react';\n\nimport { Menu, Text } from '@contentful/f36-components';\nimport { shortenStorageUnit } from '@contentful/field-editor-shared';\nimport get from 'lodash/get';\n\nimport { File } from '../../types';\n\nfunction downloadAsset(url: string) {\n window.open(url, '_blank', 'noopener,noreferrer');\n}\n\nexport function renderAssetInfo(props: { entityFile: File }) {\n const { entityFile } = props;\n const fileName = get(entityFile, 'fileName');\n const mimeType = get(entityFile, 'contentType');\n const fileSize = get(entityFile, 'details.size');\n const image = get(entityFile, 'details.image');\n return [\n <Menu.SectionTitle key=\"file-section\">File info</Menu.SectionTitle>,\n fileName && (\n <Menu.Item key=\"file-name\">\n <Text isTruncated>{fileName}</Text>\n </Menu.Item>\n ),\n mimeType && (\n <Menu.Item key=\"file-type\">\n <Text isTruncated>{mimeType}</Text>\n </Menu.Item>\n ),\n fileSize && <Menu.Item key=\"file-size\">{shortenStorageUnit(fileSize, 'B')}</Menu.Item>,\n image && <Menu.Item key=\"file-dimentions\">{`${image.width} × ${image.height}`}</Menu.Item>,\n ].filter((item) => item);\n}\n\nexport function renderActions(props: {\n onEdit?: () => void;\n onRemove?: () => void;\n isDisabled: boolean;\n entityFile?: File;\n}) {\n const { entityFile, isDisabled, onEdit, onRemove } = props;\n\n return [\n <Menu.SectionTitle key=\"section-title\">Actions</Menu.SectionTitle>,\n onEdit ? (\n <Menu.Item key=\"edit\" onClick={onEdit} testId=\"card-action-edit\">\n Edit\n </Menu.Item>\n ) : null,\n entityFile ? (\n <Menu.Item\n key=\"download\"\n onClick={() => {\n if (typeof entityFile.url === 'string') {\n downloadAsset(entityFile.url);\n }\n }}\n testId=\"card-action-download\">\n Download\n </Menu.Item>\n ) : null,\n onRemove ? (\n <Menu.Item key=\"remove\" disabled={isDisabled} onClick={onRemove} testId=\"card-action-remove\">\n Remove\n </Menu.Item>\n ) : null,\n ].filter((item) => item);\n}\n","import React from 'react';\n\nimport { SpaceAPI } from '@contentful/app-sdk';\nimport { AssetCard } from '@contentful/f36-components';\nimport { ClockIcon } from '@contentful/f36-icons';\nimport tokens from '@contentful/f36-tokens';\nimport { entityHelpers } from '@contentful/field-editor-shared';\n// @ts-expect-error\nimport mimetype from '@contentful/mimetype';\nimport { css } from 'emotion';\n\nimport { MissingEntityCard, ScheduledIconWithTooltip } from '../../components';\nimport { File, Asset, RenderDragFn } from '../../types';\nimport { renderActions, renderAssetInfo } from './AssetCardActions';\n\nconst groupToIconMap = {\n image: 'image',\n video: 'video',\n audio: 'audio',\n richtext: 'richtext',\n presentation: 'presentation',\n spreadsheet: 'spreadsheet',\n pdfdocument: 'pdf',\n archive: 'archive',\n plaintext: 'plaintext',\n code: 'code',\n markup: 'markup',\n};\n\nconst styles = {\n scheduleIcon: css({\n marginRight: tokens.spacing2Xs,\n }),\n};\n\nexport interface WrappedAssetCardProps {\n getEntityScheduledActions: SpaceAPI['getEntityScheduledActions'];\n asset: Asset;\n localeCode: string;\n defaultLocaleCode: string;\n getAssetUrl?: (assetId: string) => string;\n className?: string;\n isSelected?: boolean;\n isDisabled: boolean;\n onEdit?: () => void;\n onRemove?: () => void;\n size: 'default' | 'small';\n renderDragHandle?: RenderDragFn;\n isClickable: boolean;\n}\n\nconst defaultProps = {\n isClickable: true,\n};\n\n// eslint-disable-next-line -- TODO: describe this disable @typescript-eslint/no-explicit-any\nfunction getFileType(file?: File): any {\n if (!file) {\n return 'archive';\n }\n\n const groupName: keyof typeof groupToIconMap = mimetype.getGroupLabel({\n type: file.contentType,\n fallbackFileName: file.fileName,\n });\n\n return groupToIconMap[groupName] || 'archive';\n}\n\nexport const WrappedAssetCard = (props: WrappedAssetCardProps) => {\n const { className, onEdit, getAssetUrl, onRemove, size, isDisabled, isSelected, isClickable } =\n props;\n\n const status = entityHelpers.getEntryStatus(props.asset.sys);\n\n if (status === 'deleted') {\n return (\n <MissingEntityCard\n entityType=\"Asset\"\n asSquare\n isDisabled={props.isDisabled}\n onRemove={props.onRemove}\n />\n );\n }\n\n const entityTitle = entityHelpers.getAssetTitle({\n asset: props.asset,\n localeCode: props.localeCode,\n defaultLocaleCode: props.defaultLocaleCode,\n defaultTitle: 'Untitled',\n });\n\n const entityFile = props.asset.fields.file\n ? props.asset.fields.file[props.localeCode] || props.asset.fields.file[props.defaultLocaleCode]\n : undefined;\n\n const href = getAssetUrl ? getAssetUrl(props.asset.sys.id) : undefined;\n\n return (\n <AssetCard\n as={href ? 'a' : 'article'}\n type={getFileType(entityFile)}\n title={entityTitle}\n className={className}\n isSelected={isSelected}\n href={href}\n status={status}\n icon={\n <ScheduledIconWithTooltip\n getEntityScheduledActions={props.getEntityScheduledActions}\n entityType=\"Asset\"\n entityId={props.asset.sys.id}\n >\n <ClockIcon\n className={styles.scheduleIcon}\n size=\"small\"\n variant=\"muted\"\n testId=\"schedule-icon\"\n />\n </ScheduledIconWithTooltip>\n }\n src={\n entityFile && entityFile.url\n ? size === 'small'\n ? `${entityFile.url}?w=150&h=150&fit=thumb`\n : `${entityFile.url}?h=300`\n : ''\n }\n onClick={\n // Providing an onClick handler messes up with some rich text\n // features e.g. pressing ENTER on a card to add a new paragraph\n // underneath. It's crucial not to pass a custom handler when\n // isClickable is disabled which in the case of RT it's.\n isClickable\n ? (e: React.MouseEvent<HTMLElement>) => {\n e.preventDefault();\n onEdit && onEdit();\n }\n : undefined\n }\n /* todo - remove this when onKeyDown is allowed as a prop for BaseCard in forma 36\n // @ts-expect-error */\n onKeyDown={\n isClickable\n ? (e: React.KeyboardEvent<HTMLElement>) => {\n if (e.key === 'Enter' && onEdit) {\n e.preventDefault();\n onEdit();\n }\n }\n : undefined\n }\n dragHandleRender={props.renderDragHandle}\n withDragHandle={!!props.renderDragHandle}\n actions={[\n ...renderActions({ entityFile, isDisabled: isDisabled, onEdit, onRemove }),\n ...(entityFile ? renderAssetInfo({ entityFile }) : []),\n ].filter((item) => item)}\n size={size}\n />\n );\n};\n\nWrappedAssetCard.defaultProps = defaultProps;\n","import React from 'react';\n\nimport { EntryCard } from '@contentful/f36-components';\nimport { ClockIcon } from '@contentful/f36-icons';\nimport tokens from '@contentful/f36-tokens';\nimport { entityHelpers, isValidImage, SpaceAPI } from '@contentful/field-editor-shared';\nimport { css } from 'emotion';\n\nimport { MissingEntityCard, ScheduledIconWithTooltip, AssetThumbnail } from '../../components';\nimport { Asset, RenderDragFn } from '../../types';\nimport { renderActions, renderAssetInfo } from './AssetCardActions';\n\nconst styles = {\n scheduleIcon: css({\n marginRight: tokens.spacing2Xs,\n }),\n};\n\nexport interface WrappedAssetLinkProps {\n getEntityScheduledActions: SpaceAPI['getEntityScheduledActions'];\n asset: Asset;\n localeCode: string;\n defaultLocaleCode: string;\n href?: string;\n className?: string;\n isDisabled: boolean;\n onEdit: () => void;\n onRemove: () => void;\n renderDragHandle?: RenderDragFn;\n}\n\nexport const WrappedAssetLink = (props: WrappedAssetLinkProps) => {\n const { className, href, onEdit, onRemove, isDisabled } = props;\n\n const status = entityHelpers.getEntryStatus(props.asset.sys);\n\n if (status === 'deleted') {\n return (\n <MissingEntityCard\n entityType=\"Asset\"\n isDisabled={props.isDisabled}\n onRemove={props.onRemove}\n />\n );\n }\n\n const entityTitle = entityHelpers.getAssetTitle({\n asset: props.asset,\n localeCode: props.localeCode,\n defaultLocaleCode: props.defaultLocaleCode,\n defaultTitle: 'Untitled',\n });\n\n const entityFile = props.asset.fields.file\n ? props.asset.fields.file[props.localeCode] || props.asset.fields.file[props.defaultLocaleCode]\n : undefined;\n\n return (\n <EntryCard\n as={href ? 'a' : 'article'}\n contentType=\"Asset\"\n title={entityTitle}\n className={className}\n href={href}\n size=\"small\"\n status={status}\n thumbnailElement={\n entityFile && isValidImage(entityFile) ? <AssetThumbnail file={entityFile} /> : undefined\n }\n icon={\n <ScheduledIconWithTooltip\n getEntityScheduledActions={props.getEntityScheduledActions}\n entityType=\"Asset\"\n entityId={props.asset.sys.id}\n >\n <ClockIcon\n className={styles.scheduleIcon}\n size=\"small\"\n variant=\"muted\"\n testId=\"schedule-icon\"\n />\n </ScheduledIconWithTooltip>\n }\n onClick={(e: React.MouseEvent<HTMLElement>) => {\n e.preventDefault();\n onEdit();\n }}\n onKeyDown={(e: React.KeyboardEvent<HTMLElement>) => {\n if (e.key === 'Enter' && onEdit) {\n e.preventDefault();\n onEdit();\n }\n }}\n dragHandleRender={props.renderDragHandle}\n withDragHandle={!!props.renderDragHandle}\n actions={[\n renderActions({ entityFile, isDisabled: isDisabled, onEdit, onRemove }),\n entityFile ? renderAssetInfo({ entityFile }) : null,\n ].filter((item) => item)}\n />\n );\n};\n","import * as React from 'react';\n\nimport { AssetCard, EntryCard } from '@contentful/f36-components';\n\nimport {\n CustomEntityCardProps,\n CustomCardRenderer,\n RenderCustomMissingEntityCard,\n} from '../../common/customCardTypes';\nimport { useEntity, useEntityLoader } from '../../common/EntityStore';\nimport { LinkActionsProps, MissingEntityCard } from '../../components';\nimport { Action, Asset, FieldExtensionSDK, ViewType, RenderDragFn } from '../../types';\nimport { WrappedAssetCard, WrappedAssetCardProps } from './WrappedAssetCard';\nimport { WrappedAssetLink } from './WrappedAssetLink';\n\ntype FetchingWrappedAssetCardProps = {\n assetId: string;\n isDisabled: boolean;\n sdk: FieldExtensionSDK;\n viewType: ViewType | 'big_card';\n onRemove: () => void;\n getEntityUrl?: (id: string) => string;\n onAction?: (action: Action) => void;\n renderDragHandle?: RenderDragFn;\n renderCustomCard?: CustomCardRenderer;\n renderCustomMissingEntityCard?: RenderCustomMissingEntityCard;\n};\n\nexport function FetchingWrappedAssetCard(props: FetchingWrappedAssetCardProps) {\n const { data: asset, status } = useEntity<Asset>('Asset', props.assetId);\n const { getEntityScheduledActions } = useEntityLoader();\n const loadEntityScheduledActions = React.useCallback(\n () => getEntityScheduledActions('Asset', props.assetId),\n [getEntityScheduledActions, props.assetId]\n );\n\n React.useEffect(() => {\n if (asset) {\n props.onAction && props.onAction({ type: 'rendered', entity: 'Asset' });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps -- TODO: Evaluate the dependencies\n }, [asset]);\n\n const onEdit = async () => {\n const { slide } = await props.sdk.navigator.openAsset(props.assetId, { slideIn: true });\n props.onAction &&\n props.onAction({\n entity: 'Asset',\n type: 'edit',\n id: props.assetId,\n contentTypeId: '',\n slide,\n });\n };\n\n const onRemove = () => {\n props.onRemove();\n props.onAction &&\n props.onAction({ entity: 'Asset', type: 'delete', id: props.assetId, contentTypeId: '' });\n };\n\n return React.useMemo(() => {\n if (status === 'error') {\n const card = (\n <MissingEntityCard\n entityType=\"Asset\"\n asSquare={props.viewType !== 'link'}\n isDisabled={props.isDisabled}\n onRemove={onRemove}\n />\n );\n if (props.renderCustomMissingEntityCard) {\n return props.renderCustomMissingEntityCard({\n defaultCard: card,\n entity: {\n id: props.assetId,\n type: 'Asset',\n },\n });\n }\n return card;\n }\n\n const { getEntityUrl } = props;\n const size = props.viewType === 'big_card' ? 'default' : 'small';\n const commonProps = {\n asset,\n entityUrl: getEntityUrl && getEntityUrl(props.assetId),\n size: size as 'default' | 'small',\n isDisabled: props.isDisabled,\n localeCode: props.sdk.field.locale,\n defaultLocaleCode: props.sdk.locales.default,\n renderDragHandle: props.renderDragHandle,\n onEdit,\n onRemove,\n };\n\n if (props.viewType === 'link') {\n if (status === 'loading') {\n return <EntryCard size=\"small\" isLoading />;\n }\n return (\n <WrappedAssetLink\n {...commonProps}\n href={commonProps.entityUrl}\n getEntityScheduledActions={loadEntityScheduledActions}\n />\n );\n }\n\n if (status === 'loading') {\n return <AssetCard size={size} isLoading />;\n }\n\n function renderDefaultCard(props?: CustomEntityCardProps) {\n // isClickable has a default value, so omit it from the props\n const builtinCardProps: Omit<WrappedAssetCardProps, 'isClickable'> = {\n ...commonProps,\n ...props,\n getEntityScheduledActions: loadEntityScheduledActions,\n asset: (props?.entity as Asset) || commonProps.asset,\n getAssetUrl: getEntityUrl,\n };\n\n return <WrappedAssetCard {...builtinCardProps} />;\n }\n\n if (props.renderCustomCard) {\n const customProps: CustomEntityCardProps = {\n ...commonProps,\n entity: commonProps.asset,\n };\n\n // LinkActionsProps are injected higher SingleReferenceEditor/MultipleReferenceEditor\n const renderedCustomCard = props.renderCustomCard(\n customProps,\n {} as LinkActionsProps,\n renderDefaultCard\n );\n // Only `false` indicates to render the original card. E.g. `null` would result in no card.\n if (renderedCustomCard !== false) {\n return renderedCustomCard;\n }\n }\n\n return renderDefaultCard();\n // eslint-disable-next-line react-hooks/exhaustive-deps -- TODO: Evaluate the dependencies\n }, [props, status, asset]);\n}\n","import * as React from 'react';\n\nimport { ReferenceEditorProps } from '../common/ReferenceEditor';\nimport { SingleReferenceEditor } from '../common/SingleReferenceEditor';\nimport { FetchingWrappedAssetCard } from './WrappedAssetCard/FetchingWrappedAssetCard';\n\n// Omit<ReferenceEditorProps, 'hasCardEditActions'>;\n// does not work nice with <Props of={SingleMediaEditor} /> from docz\n// so the docs won't be generated for the props\ntype EditorProps = Pick<\n ReferenceEditorProps,\n Exclude<keyof ReferenceEditorProps, 'hasCardEditActions'>\n>;\n\nexport function SingleMediaEditor(props: EditorProps) {\n return (\n <SingleReferenceEditor {...props} entityType=\"Asset\">\n {({ entityId, isDisabled, setValue }) => (\n <FetchingWrappedAssetCard\n {...props}\n viewType=\"big_card\"\n assetId={entityId}\n isDisabled={isDisabled}\n onRemove={() => {\n setValue(null);\n }}\n />\n )}\n </SingleReferenceEditor>\n );\n}\n\nSingleMediaEditor.defaultProps = {\n isInitiallyDisabled: true,\n};\n","import * as React from 'react';\n\nimport { css, cx } from 'emotion';\n\nimport { MultipleReferenceEditor } from '../common/MultipleReferenceEditor';\nimport { ReferenceEditorProps } from '../common/ReferenceEditor';\nimport { SortableLinkList } from '../common/SortableLinkList';\nimport { ReferenceValue } from '../types';\nimport { FetchingWrappedAssetCard } from './WrappedAssetCard/FetchingWrappedAssetCard';\n\n// Omit<ReferenceEditorProps, 'hasCardEditActions'>;\n// does not work nice with <Props of={SingleMediaEditor} /> from docz\n// so the docs won't be generated for the props\ntype EditorProps = Pick<\n ReferenceEditorProps,\n Exclude<keyof ReferenceEditorProps, 'hasCardEditActions'>\n>;\n\nconst styles = {\n gridContainer: css({\n position: 'relative',\n display: 'flex',\n flexWrap: 'wrap',\n }),\n};\n\nexport function MultipleMediaEditor(props: EditorProps) {\n return (\n <MultipleReferenceEditor {...props} entityType=\"Asset\">\n {(childrenProps) => (\n <SortableLinkList<ReferenceValue>\n {...childrenProps}\n className={cx({ [styles.gridContainer]: childrenProps.viewType === 'card' })}\n axis={childrenProps.viewType === 'card' ? 'xy' : 'y'}\n useDragHandle={true}>\n {({ items, item, index, isDisabled, DragHandle }) => (\n <FetchingWrappedAssetCard\n {...childrenProps}\n isDisabled={isDisabled}\n key={`${item.sys.id}-${index}`}\n assetId={item.sys.id}\n onRemove={() => {\n childrenProps.setValue(items.filter((_value, i) => i !== index));\n }}\n renderDragHandle={DragHandle}\n />\n )}\n </SortableLinkList>\n )}\n </MultipleReferenceEditor>\n );\n}\n\nMultipleMediaEditor.defaultProps = {\n isInitiallyDisabled: true,\n};\n","import * as React from 'react';\n\nimport { Entry } from '@contentful/field-editor-shared';\n\nimport { WrappedEntryCard } from '../../entries';\nimport { RenderDragFn, ResourceInfo } from '../../types';\n\nexport type CardActionsHandlers = {\n onRemove?: VoidFunction;\n onMoveTop?: VoidFunction;\n onMoveBottom?: VoidFunction;\n};\n\nexport type EntryRoute = { spaceId: string; environmentId: string; entryId: string };\n\ntype ContentfulEntryCardProps = {\n info: ResourceInfo<Entry>;\n isDisabled: boolean;\n renderDragHandle?: RenderDragFn;\n getEntryRouteHref: (entryRoute: EntryRoute) => string;\n} & CardActionsHandlers;\n\n// assets are not shown for small cards (which we hardcode currently)\nconst resolveAsset = () => Promise.resolve();\n// we don't want to show scheduled actions for resources\nconst resolveScheduledActions = () => Promise.resolve([]);\n\nexport function ContentfulEntryCard({\n info,\n isDisabled,\n renderDragHandle,\n onRemove,\n onMoveTop,\n onMoveBottom,\n getEntryRouteHref,\n}: ContentfulEntryCardProps) {\n const resourceSys = info.resource.sys;\n const spaceId = resourceSys.space.sys.id;\n const environmentId = resourceSys.environment.sys.id;\n const entryId = resourceSys.id;\n\n const resourceHref = getEntryRouteHref({\n spaceId,\n environmentId,\n entryId,\n });\n\n // TODO: move this into `sdk.navigator.openEntry()`, note that it's signature only include the entry id (not a space or environment)\n const openEntryDetail = () => {\n window.open(resourceHref, '_blank', 'noopener,noreferrer');\n };\n\n return (\n <WrappedEntryCard\n entry={info.resource}\n isDisabled={isDisabled}\n hasCardEditActions={false}\n contentType={info.contentType}\n // we use the default locale from the space the entry belongs to\n // as we assume this gives a more consistent behaviour.\n // locales will inevitably differ from space to space, so it's likely\n // that the current locale does not exist in the \"remote\" space\n localeCode={info.defaultLocaleCode}\n defaultLocaleCode={info.defaultLocaleCode}\n size=\"small\"\n getAsset={resolveAsset}\n getEntityScheduledActions={resolveScheduledActions}\n spaceName={info.space.name}\n renderDragHandle={renderDragHandle}\n isClickable={true}\n onEdit={openEntryDetail}\n hasCardRemoveActions={Boolean(onRemove)}\n onRemove={onRemove}\n onMoveBottom={onMoveBottom}\n onMoveTop={onMoveTop}\n entryUrl={resourceHref}\n />\n );\n}\n","import React from 'react';\n\nimport { Card, SectionHeading } from '@contentful/f36-components';\nimport { css } from 'emotion';\n\nconst styles = {\n card: css({\n position: 'relative',\n }),\n};\n\nexport function UnsupportedEntityCard(props: { entityType: string }) {\n return (\n <Card className={styles.card}>\n <SectionHeading marginBottom=\"none\">\n Resource type {props.entityType} is currently not supported\n </SectionHeading>\n </Card>\n );\n}\n","import * as React from 'react';\nimport { useInView } from 'react-intersection-observer';\n\nimport { EntryCard } from '@contentful/f36-components';\nimport { SetRequired } from 'type-fest';\n\nimport { useResource, isUnsupportedError } from '../../common/EntityStore';\nimport { MissingEntityCard } from '../../components';\nimport { RenderDragFn, ResourceLink } from '../../types';\nimport { CardActionsHandlers, ContentfulEntryCard, EntryRoute } from './ContentfulEntryCard';\nimport { UnsupportedEntityCard } from './UnsupportedEntityCard';\n\ntype ResourceCardProps = {\n index?: number;\n resourceLink?: ResourceLink;\n isDisabled: boolean;\n renderDragHandle?: RenderDragFn;\n getEntryRouteHref: (entryRoute: EntryRoute) => string;\n} & CardActionsHandlers;\n\nfunction ResourceCardSkeleton() {\n return <EntryCard size=\"small\" isLoading />;\n}\n\nfunction ExistingResourceCard(\n props: SetRequired<ResourceCardProps, 'resourceLink'> & {\n inView: boolean;\n }\n) {\n const { resourceLink, inView, index = 0 } = props;\n const resourceOptions = { priority: index * -1, enabled: inView };\n const { data, error } = useResource(\n resourceLink.sys.linkType,\n resourceLink.sys.urn,\n resourceOptions\n );\n if (!data && !error) {\n return <ResourceCardSkeleton />;\n }\n\n if (data) {\n return <ContentfulEntryCard info={data} {...props} />;\n }\n\n if (isUnsupportedError(error)) {\n return <UnsupportedEntityCard entityType={resourceLink.sys.linkType} />;\n }\n\n return (\n <MissingEntityCard entityType=\"Entry\" isDisabled={props.isDisabled} onRemove={props.onRemove} />\n );\n}\n\nfunction ResourceCardWrapper(props: ResourceCardProps & { inView: boolean }) {\n if (!props.resourceLink) {\n return null;\n }\n\n return (\n <ExistingResourceCard\n {...props}\n resourceLink={props.resourceLink}\n getEntryRouteHref={props.getEntryRouteHref}\n />\n );\n}\n\nexport function ResourceCard(props: ResourceCardProps) {\n const { ref, inView } = useInView({ triggerOnce: true, rootMargin: '300px 0px 0px 300px' });\n\n // Forma does not offer us to pass refs, so we need an additional wrapper here\n return (\n <div ref={ref}>\n <ResourceCardWrapper {...props} inView={inView} />\n </div>\n );\n}\n","import { useCallback, useMemo } from 'react';\n\nimport { FieldAPI, FieldExtensionSDK } from '@contentful/app-sdk';\nimport { EntryProps, WithResourceName } from 'contentful-management';\n\nimport { LinkActionsProps } from '../components';\n\nconst toLinkItem = (entry: WithResourceName<EntryProps>, apiUrl: string) => ({\n sys: {\n type: 'ResourceLink',\n linkType: 'Contentful:Entry',\n urn:\n entry.sys.urn ??\n `crn:${apiUrl}:::content:spaces/${entry.sys.space.sys.id}/entries/${entry.sys.id}`,\n },\n});\n\nconst getUpdatedValue = (\n field: FieldAPI,\n entries: WithResourceName<EntryProps>[],\n apiUrl: string\n) => {\n const multiple = field.type === 'Array';\n if (multiple) {\n const linkItems = entries.map((entry) => toLinkItem(entry, apiUrl));\n const prevValue = field.getValue() || [];\n return [...prevValue, ...linkItems];\n } else {\n return toLinkItem(entries[0], apiUrl);\n }\n};\n\nexport function useResourceLinkActions({\n dialogs,\n field,\n onAfterLink,\n apiUrl,\n}: Pick<FieldExtensionSDK, 'field' | 'dialogs'> & {\n apiUrl: string;\n onAfterLink?: (e: EntryProps) => void;\n}): LinkActionsProps {\n const handleAfterLink = useCallback(\n (entries: EntryProps[]) => {\n if (!onAfterLink) {\n return;\n }\n entries.forEach(onAfterLink);\n },\n [onAfterLink]\n );\n\n const onLinkedExisting = useMemo(() => {\n return (entries: EntryProps[]) => {\n const updatedValue = getUpdatedValue(\n field,\n entries as WithResourceName<EntryProps>[],\n apiUrl\n );\n field.setValue(updatedValue);\n handleAfterLink(entries);\n };\n }, [field, handleAfterLink, apiUrl]);\n\n const multiple = field.type === 'Array';\n const onLinkExisting = useMemo(() => {\n const promptSelection = multiple\n ? async () =>\n // @ts-expect-error wait for update of app-sdk version\n await dialogs.selectMultipleResourceEntries({\n // @ts-expect-error wait for update of app-sdk version\n allowedResources: field.allowedResources,\n })\n : async () => [\n // @ts-expect-error wait for update of app-sdk version\n await dialogs.selectSingleResourceEntry({\n // @ts-expect-error wait for update of app-sdk version\n allowedResources: field.allowedResources,\n }),\n ];\n\n return async () => {\n const res = await promptSelection();\n if (!res) {\n return;\n }\n onLinkedExisting(res);\n };\n // @ts-expect-error wait for update of app-sdk version\n }, [dialogs, field.allowedResources, multiple, onLinkedExisting]);\n\n return {\n onLinkExisting,\n onLinkedExisting,\n // hardcoded values to match interface for standard reference field actions\n entityType: 'Entry',\n contentTypes: [],\n canCreateEntity: false,\n canLinkMultiple: multiple,\n canLinkEntity: true,\n isDisabled: false,\n isEmpty: false,\n isFull: false,\n // eslint-disable-next-line -- hardcoded values to match interface for standard reference field actions\n onCreate: async () => {},\n // eslint-disable-next-line -- hardcoded values to match interface for standard reference field actions\n onCreated: () => {},\n };\n}\n","import * as React from 'react';\nimport { useCallback } from 'react';\nimport { SortEndHandler, SortStartHandler } from 'react-sortable-hoc';\n\nimport { FieldConnector } from '@contentful/field-editor-shared';\nimport arrayMove from 'array-move';\nimport deepEqual from 'deep-equal';\n\nimport { EntityProvider } from '../common/EntityStore';\nimport { ReferenceEditorProps } from '../common/ReferenceEditor';\nimport { SortableLinkList } from '../common/SortableLinkList';\nimport { CombinedLinkEntityActions } from '../components/LinkActions/LinkEntityActions';\nimport { ResourceLink } from '../types';\nimport { EntryRoute } from './Cards/ContentfulEntryCard';\nimport { ResourceCard } from './Cards/ResourceCard';\nimport { useResourceLinkActions } from './useResourceLinkActions';\n\ntype ChildProps = {\n items: ResourceLink[];\n isDisabled: boolean;\n setValue: (value: ResourceLink[]) => void;\n onSortStart: SortStartHandler;\n onSortEnd: SortEndHandler;\n onMove: (oldIndex: number, newIndex: number) => void;\n onRemoteItemAtIndex: (index: number) => void;\n};\n\ntype EditorProps = ReferenceEditorProps &\n Omit<ChildProps, 'onSortStart' | 'onSortEnd' | 'onMove' | 'onRemoteItemAtIndex'> & {\n children: (props: ReferenceEditorProps & ChildProps) => React.ReactElement;\n apiUrl: string;\n };\n\nfunction ResourceEditor(props: EditorProps) {\n const { setValue, items, apiUrl } = props;\n\n const onSortStart: SortStartHandler = useCallback((_, event) => event.preventDefault(), []);\n const onSortEnd: SortEndHandler = useCallback(\n ({ oldIndex, newIndex }) => {\n const newItems = arrayMove(items, oldIndex, newIndex);\n setValue(newItems);\n },\n [items, setValue]\n );\n const onMove = useCallback(\n (oldIndex, newIndex) => {\n const newItems = arrayMove(items, oldIndex, newIndex);\n setValue(newItems);\n },\n [items, setValue]\n );\n\n const onRemoteItemAtIndex = useCallback(\n (index) => {\n setValue(items.filter((_v, i) => i !== index));\n },\n [items, setValue]\n );\n\n const { dialogs, field } = props.sdk;\n const linkActionsProps = useResourceLinkActions({\n dialogs,\n field,\n apiUrl,\n });\n\n return (\n <>\n {props.children({\n ...props,\n onSortStart,\n onSortEnd,\n onMove,\n onRemoteItemAtIndex,\n })}\n <CombinedLinkEntityActions\n {...linkActionsProps}\n renderCustomActions={props.renderCustomActions}\n />\n </>\n );\n}\n\n// provides memoized callbacks bound to a given item\nfunction WithPerItemCallbacks({\n listLength,\n index,\n onMove,\n onRemoteItemAtIndex,\n children,\n}: {\n listLength: number;\n index: number;\n onMove: (oldIndex: number, newIndex: number) => void;\n onRemoteItemAtIndex: (index: number) => void;\n children: (props: {\n onMoveTop: VoidFunction | undefined;\n onMoveBottom: VoidFunction | undefined;\n onRemove: VoidFunction | undefined;\n }) => React.ReactNode;\n}) {\n const handleMoveTop = React.useMemo(\n () => (index > 0 ? () => onMove(index, 0) : undefined),\n [index, onMove]\n );\n const handleMoveBottom = React.useMemo(\n () => (index < listLength - 1 ? () => onMove(index, listLength - 1) : undefined),\n [index, onMove, listLength]\n );\n const handleRemove = useCallback(() => onRemoteItemAtIndex(index), [index, onRemoteItemAtIndex]);\n\n return (\n <>\n {children({\n onMoveBottom: handleMoveBottom,\n onMoveTop: handleMoveTop,\n onRemove: handleRemove,\n })}\n </>\n );\n}\n\nconst EMPTY_ARRAY: ResourceLink[] = [];\n\nexport function MultipleResourceReferenceEditor(\n props: ReferenceEditorProps & {\n apiUrl: string;\n getEntryRouteHref: (entryRoute: EntryRoute) => string;\n }\n) {\n return (\n <EntityProvider sdk={props.sdk}>\n <FieldConnector<ResourceLink[]>\n throttle={0}\n field={props.sdk.field}\n isInitiallyDisabled={props.isInitiallyDisabled}\n isEqualValues={deepEqual}\n >\n {({ value, disabled, setValue, externalReset }) => {\n return (\n <ResourceEditor\n {...props}\n items={value || EMPTY_ARRAY}\n isDisabled={disabled}\n setValue={setValue}\n renderCustomActions={props.renderCustomActions}\n key={`${externalReset}-list`}\n >\n {(editorProps) => (\n <SortableLinkList<ResourceLink> {...editorProps}>\n {({ item, isDisabled, DragHandle, index }) => (\n <WithPerItemCallbacks\n index={index}\n onMove={editorProps.onMove}\n onRemoteItemAtIndex={editorProps.onRemoteItemAtIndex}\n listLength={value?.length || 0}\n >\n {({ onMoveBottom, onMoveTop, onRemove }) => (\n <ResourceCard\n index={index}\n resourceLink={item}\n isDisabled={isDisabled}\n renderDragHandle={DragHandle}\n onMoveTop={onMoveTop}\n onMoveBottom={onMoveBottom}\n onRemove={onRemove}\n getEntryRouteHref={props.getEntryRouteHref}\n />\n )}\n </WithPerItemCallbacks>\n )}\n </SortableLinkList>\n )}\n </ResourceEditor>\n );\n }}\n </FieldConnector>\n </EntityProvider>\n );\n}\n","import * as React from 'react';\n\nimport { FieldConnector } from '@contentful/field-editor-shared';\nimport deepEqual from 'deep-equal';\n\nimport { EntityProvider } from '../common/EntityStore';\nimport { ReferenceEditorProps } from '../common/ReferenceEditor';\nimport { CombinedLinkEntityActions } from '../components/LinkActions/LinkEntityActions';\nimport { ResourceLink } from '../types';\nimport { EntryRoute } from './Cards/ContentfulEntryCard';\nimport { ResourceCard } from './Cards/ResourceCard';\nimport { useResourceLinkActions } from './useResourceLinkActions';\n\nexport function SingleResourceReferenceEditor(\n props: ReferenceEditorProps & {\n getEntryRouteHref: (entryRoute: EntryRoute) => string;\n apiUrl: string;\n }\n) {\n const { dialogs, field } = props.sdk;\n const linkActionsProps = useResourceLinkActions({\n dialogs,\n field,\n apiUrl: props.apiUrl,\n });\n\n return (\n <EntityProvider sdk={props.sdk}>\n <FieldConnector<ResourceLink>\n throttle={0}\n field={props.sdk.field}\n isInitiallyDisabled={props.isInitiallyDisabled}\n isEqualValues={deepEqual}\n >\n {({ value, disabled }) => {\n return value ? (\n <ResourceCard\n onRemove={() => props.sdk.field.removeValue()}\n resourceLink={value}\n isDisabled={disabled}\n getEntryRouteHref={props.getEntryRouteHref}\n />\n ) : (\n <CombinedLinkEntityActions\n {...linkActionsProps}\n renderCustomActions={props.renderCustomActions}\n />\n );\n }}\n </FieldConnector>\n </EntityProvider>\n );\n}\n"],"names":["MAX_ITEMS_WITHOUT_SEARCH","menuPlacementMap","styles","wrapper","css","position","inputWrapper","padding","tokens","spacing2Xs","searchInput","paddingRight","spacingXl","textOverflow","searchIcon","right","spacingM","top","spacingS","zIndex","Number","zIndexDefault","fill","gray600","separator","background","gray200","margin","dropdownList","borderColor","CreateEntryMenuTrigger","contentTypes","suggestedContentTypeId","contentTypesLabel","onSelect","testId","dropdownSettings","customDropdownItems","children","isOpen","setOpen","useState","isSelecting","setSelecting","setSearchInput","useRef","textField","menuListRef","dropdownWidth","setDropdownWidth","hasDropdown","length","closeMenu","useEffect","setTimeout","current","querySelector","focus","preventScroll","clientWidth","handleSelect","item","res","sys","id","then","handleMenuOpen","renderSearchResultsCount","resultsLength","React","Menu","SectionTitle","isSearchable","maxDropdownHeight","suggestedContentType","find","ct","filteredContentTypes","filter","get","toLowerCase","includes","className","ref","placement","isAutoalignmentEnabled","onClose","onOpen","Trigger","List","style","width","undefined","maxHeight","Boolean","Divider","TextInput","placeholder","value","onChange","e","target","SearchIcon","Item","onClick","map","contentType","i","key","defaultProps","standardStyles","spinnerMargin","marginRight","spacingXs","action","redesignStyles","textDecoration","fontWeight","maxWidth","CreateEntryLinkButton","text","hasPlusIcon","useExperimentalStyles","disabled","sort","a","b","name","localeCompare","buttonText","plusIcon","PlusIcon","Button","endIcon","ChevronDownIcon","variant","isDisabled","startIcon","size","isLoading","NoLinkPermissionsInfo","Paragraph","container","display","marginTop","defaultEntryLabels","createNew","props","linkExisting","canLinkMultiple","defaultAssetLabels","testIds","dropdown","createAndLink","createAndLinkWrapper","LinkActions","isFull","defaultLabels","entityType","labels","actionLabels","canCreateEntity","contentTypeId","onCreate","itemsLength","Promise","resolve","canLinkEntity","onLinkExisting","LinkIcon","border","gray500","borderRadius","borderRadiusMedium","justifyContent","sharedTextIds","actionsWrapper","CombinedLinkActions","hideEmptyCard","isEmpty","CombinedEntryLinkActions","CombinedAssetLinkActions","combinedActionsLabel","card","squareCard","alignItems","height","textAlign","MissingEntityCard","Card","Flex","asSquare","SectionHeading","marginBottom","onRemove","IconButton","icon","CloseIcon","getContentTypeIds","createEntity","entity","slide","sdk","navigator","openNewEntry","slideIn","openNewAsset","selectSingleEntity","dialogs","selectSingleEntry","locale","field","editorPermissions","readableContentTypes","selectSingleAsset","mimetypeGroups","validations","selectMultipleEntities","getValue","linkCount","Array","isArray","min","Math","max","numberOfLinks","Infinity","selectMultipleEntries","selectMultipleAssets","useLinkActionsProps","maxLinksCount","onCreated","index","onAction","type","entityData","onLinkedExisting","entities","onLink","forEach","onLinkSeveralExisting","useMemo","creatableContentTypes","join","LinkEntityActions","renderCustomActions","CombinedLinkEntityActions","formatDate","date","short","moment","startOf","diff","format","formatTime","utc","local","formatDateAndTime","getScheduleTooltipContent","job","jobsCount","scheduledFor","datetime","ScheduleTooltip","Tooltip","as","content","ScheduledIconWithTooltip","entityId","getEntityScheduledActions","status","setStatus","data","jobs","catch","error","mostRelevantJob","dimensions","AssetThumbnail","alt","file","fileName","src","url","globalQueue","PQueue","concurrency","UnsupportedError","Error","constructor","message","isUnsupportedError","isEntityQueryKey","queryKey","fetchContentfulEntry","params","urn","fetch","options","resourceId","split","spaceId","entryId","environmentId","space","entry","all","cmaClient","defaultLocaleCode","locales","getMany","query","limit","items","default","code","resource","InternalServiceProvider","useFetch","useEntityLoader","useCurrentIds","constate","useInitServices","currentSpaceId","ids","currentEnvironmentId","environmentAlias","environment","environmentIds","queryClient","useQueryClient","queryCache","getQueryCache","entityChangeUnsubscribers","createClient","apiAdapter","cmaAdapter","queryQueue","queryConcurrency","useCallback","fn","priority","queryOptions","fetchQuery","add","getEntity","asset","assetId","fixedEntityCacheId","maxScheduledActions","response","scheduledActions","order","getResource","resourceType","isSameSpaceEntityQueryKey","isEntityKey","isSameSpaceEntityKey","onEntityChanged","onSlideInNavigation","findSameSpaceQueries","findAll","predicate","oldSlideLevel","newSlideLevel","invalidateQueries","subscribeQuery","queryHash","setQueryData","unsubscribe","subscribe","event","Object","values","off","useEntity","useQuery","enabled","useResource","EntityProvider","reactQueryClient","QueryCache","QueryClient","defaultOptions","queries","useErrorBoundary","refetchOnWindowFocus","refetchOnReconnect","refetchOnMount","staleTime","retry","QueryClientProvider","client","ReferenceEditor","FieldConnector","throttle","isInitiallyDisabled","isEqualValues","value1","value2","deepEqual","hasCardEditActions","fromFieldValidations","linkContentTypeValidations","v","linkMimetypeGroupValidations","sizeValidations","isNumber","result","linkContentType","linkMimetypeGroup","AllowActionsOnContentType","useAccessApi","accessApi","canPerformAction","can","canPerformActionOnEntryOfType","arr","fail","Symbol","results","x","useContentTypePermissions","availableContentTypes","allContentTypes","setCreatableContentTypes","setReadableContentTypes","access","getContentTypes","checkContentTypeAccess","creatable","readable","useEditorPermissions","parameters","setCanCreateEntity","setCanLinkEntity","instance","showCreateEntityAction","checkCreateAccess","canCreate","showLinkEntityAction","checkLinkAccess","canRead","Editor","setValue","linkType","linkActionsProps","customCardRenderer","cardProps","_","renderDefaultCard","renderCustomCard","SingleReferenceEditor","getCachedContentTypes","externalReset","hasCardRemoveActions","spaceIcon","flexShrink","purple600","spaceName","color","gray700","fontSize","fontSizeS","fontWeightDemiBold","overflow","whiteSpace","SpaceName","gap","FolderOpenTrimmedIcon","Text","getEntryTitle","getEntityDescription","getEntryStatus","getEntryImage","entityHelpers","scheduleIcon","isClickable","hasCardMoveActions","WrappedEntryCard","setFile","localeCode","getAsset","title","defaultTitle","description","EntryCard","entryUrl","href","isSelected","ClockIcon","thumbnailElement","isValidImage","dragHandleRender","renderDragHandle","withDragHandle","actions","onEdit","MenuItem","onMoveTop","onMoveBottom","MenuDivider","preventDefault","openEntry","bulkEditing","openBulkEditor","getSys","fieldId","FetchingWrappedEntryCard","loadEntityScheduledActions","viewType","onRemoveEntry","renderCustomMissingEntityCard","defaultCard","sharedCardProps","entityUrl","getEntityUrl","isBeingDragged","builtinCardProps","renderedCustomCard","SingleEntryReferenceEditor","onLinkOrCreate","links","newItems","from","splice","emptyArray","nullableValue","setIndexToUpdate","link","onSortStart","MouseEvent","document","body","classList","onSortEnd","oldIndex","newIndex","onSortingEnd","arrayMove","remove","onMove","MultipleReferenceEditor","zIndexModal","DragHandle","SortableDragHandle","SortableHandle","drag","SortableLink","SortableElement","SortableLinkListInternal","SortableContainer","cx","SortableLinkList","distance","MultipleEntryReferenceEditor","indexToUpdate","updateBeforeSortStart","childrenProps","axis","useDragHandle","lastIndex","_value","downloadAsset","window","open","renderAssetInfo","entityFile","mimeType","fileSize","image","isTruncated","shortenStorageUnit","renderActions","groupToIconMap","video","audio","richtext","presentation","spreadsheet","pdfdocument","archive","plaintext","markup","getFileType","groupName","mimetype","getGroupLabel","fallbackFileName","WrappedAssetCard","getAssetUrl","entityTitle","getAssetTitle","fields","AssetCard","onKeyDown","WrappedAssetLink","FetchingWrappedAssetCard","openAsset","commonProps","customProps","SingleMediaEditor","gridContainer","flexWrap","MultipleMediaEditor","resolveAsset","resolveScheduledActions","ContentfulEntryCard","info","getEntryRouteHref","resourceSys","resourceHref","openEntryDetail","UnsupportedEntityCard","ResourceCardSkeleton","ExistingResourceCard","resourceLink","inView","resourceOptions","ResourceCardWrapper","ResourceCard","useInView","triggerOnce","rootMargin","toLinkItem","apiUrl","getUpdatedValue","entries","multiple","linkItems","prevValue","useResourceLinkActions","onAfterLink","handleAfterLink","updatedValue","promptSelection","selectMultipleResourceEntries","allowedResources","selectSingleResourceEntry","ResourceEditor","onRemoteItemAtIndex","_v","WithPerItemCallbacks","listLength","handleMoveTop","handleMoveBottom","handleRemove","EMPTY_ARRAY","MultipleResourceReferenceEditor","editorProps","SingleResourceReferenceEditor","removeValue"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAYA,MAAMA,wBAAwB,GAAG,CAAjC;AAEA,MAAMC,gBAAgB,GAElB;AACF,iBAAe,cADb;AAEF,kBAAgB;AAFd,CAFJ;AAOA,MAAMC,MAAM,GAAG;AACbC,EAAAA,OAAO,eAAEC,WAAG,CAAC;AACXC,IAAAA,QAAQ,EAAE;AADC,GAAD,CADC;AAIbC,EAAAA,YAAY,eAAEF,WAAG,CAAC;AAChBC,IAAAA,QAAQ,EAAE,UADM;AAEhBE,IAAAA,OAAO,OAAOC,MAAM,CAACC;AAFL,GAAD,CAJJ;AAQbC,EAAAA,WAAW,eAAEN,WAAG,CAAC;AACfO,IAAAA,YAAY,EAAEH,MAAM,CAACI,SADN;AAEfC,IAAAA,YAAY,EAAE;AAFC,GAAD,CARH;AAYbC,EAAAA,UAAU,eAAEV,WAAG,CAAC;AACdC,IAAAA,QAAQ,EAAE,UADI;AAEdU,IAAAA,KAAK,EAAEP,MAAM,CAACQ,QAFA;AAGdC,IAAAA,GAAG,EAAET,MAAM,CAACU,QAHE;AAIdC,IAAAA,MAAM,eAAEC,MAAM,CAACZ,MAAM,CAACa,aAAR,CAJA;AAKdC,IAAAA,IAAI,EAAEd,MAAM,CAACe;AALC,GAAD,CAZF;AAmBbC,EAAAA,SAAS,eAAEpB,WAAG,CAAC;AACbqB,IAAAA,UAAU,EAAEjB,MAAM,CAACkB,OADN;AAEbC,IAAAA,MAAM,EAAE;AAFK,GAAD,CAnBD;AAuBbC,EAAAA,YAAY,eAAExB,WAAG,CAAC;AAChByB,IAAAA,WAAW,EAAErB,MAAM,CAACkB;AADJ,GAAD;AAvBJ,CAAf;MAuDaI,sBAAsB,GAAG,CAAC;AACrCC,EAAAA,YADqC;AAErCC,EAAAA,sBAFqC;AAGrCC,EAAAA,iBAHqC;AAIrCC,EAAAA,QAJqC;AAKrCC,EAAAA,MALqC;AAMrCC,EAAAA,gBAAgB,GAAG;AACjB/B,IAAAA,QAAQ,EAAE;AADO,GANkB;AASrCgC,EAAAA,mBATqC;AAUrCC,EAAAA;AAVqC,CAAD;AAYpC,QAAM,CAACC,MAAD,EAASC,OAAT,IAAoBC,cAAQ,CAAC,KAAD,CAAlC;AACA,QAAM,CAACC,WAAD,EAAcC,YAAd,IAA8BF,cAAQ,CAAC,KAAD,CAA5C;AACA,QAAM,CAAC/B,WAAD,EAAckC,cAAd,IAAgCH,cAAQ,CAAC,EAAD,CAA9C;AACA,QAAMtC,OAAO,GAAG0C,YAAM,CAAa,IAAb,CAAtB;AACA,QAAMC,SAAS,GAAGD,YAAM,CAAa,IAAb,CAAxB;AACA,QAAME,WAAW,GAAGF,YAAM,CAAa,IAAb,CAA1B;AACA;;;;;;;;;AAQA,QAAM,CAACG,aAAD,EAAgBC,gBAAhB,IAAoCR,cAAQ,EAAlD;AAEA,QAAMS,WAAW,GAAGnB,YAAY,CAACoB,MAAb,GAAsB,CAAtB,IAA2B,CAAC,CAACd,mBAAjD;;AAEA,QAAMe,SAAS,GAAG,MAAMZ,OAAO,CAAC,KAAD,CAA/B;;AAEAa,EAAAA,eAAS,CAAC;AACR,QAAId,MAAJ,EAAY;AACVe,MAAAA,UAAU,CAAC;;;AACT,8BAAAR,SAAS,CAACS,OAAV,iEAAmBC,aAAnB,CAAiC,OAAjC,4CAA2CC,KAA3C,CAAiD;AAAEC,UAAAA,aAAa,EAAE;AAAjB,SAAjD;AACD,OAFS,EAEP,GAFO,CAAV;AAGD;AACF,GANQ,EAMN,CAACnB,MAAD,CANM,CAAT;AAQAc,EAAAA,eAAS,CAAC;AACR,QAAId,MAAM,IAAI,CAACS,aAAf,EAA8B;AAAA;;AAC5BC,MAAAA,gBAAgB,yBAACF,WAAW,CAACQ,OAAb,qBAAC,qBAAqBI,WAAtB,CAAhB;AACD;AACF,GAJQ,EAIN,CAACpB,MAAD,EAASS,aAAT,CAJM,CAAT;;AAMA,QAAMY,YAAY,GAAIC,IAAD;AACnBT,IAAAA,SAAS;AACT,UAAMU,GAAG,GAAG5B,QAAQ,CAAC2B,IAAI,CAACE,GAAL,CAASC,EAAV,CAApB;;AAGA,QAAIF,GAAG,IAAI,OAAOA,GAAG,CAACG,IAAX,KAAoB,UAA/B,EAA2C;AACzCtB,MAAAA,YAAY,CAAC,IAAD,CAAZ;AACAmB,MAAAA,GAAG,CAACG,IAAJ,CACE,MAAMtB,YAAY,CAAC,KAAD,CADpB,EAEE,MAAMA,YAAY,CAAC,KAAD,CAFpB;AAID;AACF,GAZD;;AAcA,QAAMuB,cAAc,GAAG;AACrB,QAAIhB,WAAJ,EAAiB;AACfV,MAAAA,OAAO,CAAC,IAAD,CAAP;AACD,KAFD,MAEO;AACLoB,MAAAA,YAAY,CAAC7B,YAAY,CAAC,CAAD,CAAb,CAAZ;AACD;AACF,GAND;;AAQAsB,EAAAA,eAAS,CAAC;AACR,QAAI,CAACd,MAAL,EAAa;AACXK,MAAAA,cAAc,CAAC,EAAD,CAAd;AACD;AACF,GAJQ,EAIN,CAACL,MAAD,CAJM,CAAT;;AAMA,QAAM4B,wBAAwB,GAAIC,aAAD,IAC/BA,aAAa,GACXC,4BAAA,CAACC,kBAAI,CAACC,YAAN;AAAmBpC,IAAAA,MAAM,EAAC;GAA1B,EACGiC,aADH,WAAA,EACyBA,aAAa,GAAG,CAAhB,GAAoB,GAApB,GAA0B,EADnD,CADW,GAIT,IALN;;AAOA,QAAMI,YAAY,GAAGzC,YAAY,CAACoB,MAAb,GAAsBnD,wBAA3C;AACA,QAAMyE,iBAAiB,GAAGzC,sBAAsB,GAAG,GAAH,GAAS,GAAzD;AACA,QAAM0C,oBAAoB,GAAG3C,YAAY,CAAC4C,IAAb,CAAmBC,EAAD,IAAQA,EAAE,CAACb,GAAH,CAAOC,EAAP,KAAchC,sBAAxC,CAA7B;AACA,QAAM6C,oBAAoB,GAAG9C,YAAY,CAAC+C,MAAb,CAC1BF,EAAD,IACE,CAAClE,WAAD,IAAgBqE,GAAG,CAACH,EAAD,EAAK,MAAL,EAAa,UAAb,CAAH,CAA4BI,WAA5B,GAA0CC,QAA1C,CAAmDvE,WAAW,CAACsE,WAAZ,EAAnD,CAFS,CAA7B;AAKA,SACEX,4BAAA,OAAA;AAAMa,IAAAA,SAAS,EAAEhF,MAAM,CAACC;AAASgF,IAAAA,GAAG,EAAEhF;oBAAuBgC;GAA7D,EACEkC,4BAAA,CAACC,kBAAD;AACEc,IAAAA,SAAS,EAAEnF,gBAAgB,CAACmC,gBAAgB,CAAC/B,QAAlB;AAC3BgF,IAAAA,sBAAsB,EAAEjD,gBAAgB,CAACiD;AACzC9C,IAAAA,MAAM,EAAEA;AACR+C,IAAAA,OAAO,EAAElC;AACTmC,IAAAA,MAAM,EAAErB;GALV,EAOEG,4BAAA,CAACC,kBAAI,CAACkB,OAAN,MAAA,EAAelD,QAAQ,CAAC;AAAEC,IAAAA,MAAF;AAAUG,IAAAA;AAAV,GAAD,CAAvB,CAPF,EASGH,MAAM,IACL8B,4BAAA,CAACC,kBAAI,CAACmB,IAAN;AACEP,IAAAA,SAAS,EAAEhF,MAAM,CAAC0B;AAClB8D,IAAAA,KAAK,EAAE;AACLC,MAAAA,KAAK,EAAE3C,aAAa,IAAI4C,SAAjB,MAAgC5C,iBAAhC,GAAoD4C,SADtD;AAELC,MAAAA,SAAS,KAAKpB;AAFT;AAIPU,IAAAA,GAAG,EAAEpC;AACLZ,IAAAA,MAAM,EAAC;GAPT,EASG2D,OAAO,CAACzD,mBAAD,CAAP,IACCgC,4BAAA,wBAAA,MAAA,EACGhC,mBADH,EAEEgC,4BAAA,CAACC,kBAAI,CAACyB,OAAN,MAAA,CAFF,CAVJ,EAgBGvB,YAAY,IACXH,4BAAA,wBAAA,MAAA,EACEA,4BAAA,MAAA;AAAKc,IAAAA,GAAG,EAAErC;AAAWoC,IAAAA,SAAS,EAAEhF,MAAM,CAACI;GAAvC,EACE+D,4BAAA,CAAC2B,uBAAD;AACEd,IAAAA,SAAS,EAAEhF,MAAM,CAACQ;AAClBuF,IAAAA,WAAW,EAAC;AACZ9D,IAAAA,MAAM,EAAC;AACP+D,IAAAA,KAAK,EAAExF;AACPyF,IAAAA,QAAQ,EAAGC,CAAD,IAAOxD,cAAc,CAACwD,CAAC,CAACC,MAAF,CAASH,KAAV;GALjC,CADF,EAQE7B,4BAAA,CAACiC,mBAAD;AAAYpB,IAAAA,SAAS,EAAEhF,MAAM,CAACY;GAA9B,CARF,CADF,EAWEuD,4BAAA,CAACC,kBAAI,CAACyB,OAAN,MAAA,CAXF,CAjBJ,EAgCGrF,WAAW,IAAIyD,wBAAwB,CAACU,oBAAoB,CAAC1B,MAAtB,CAhC1C,EAiCGuB,oBAAoB,IAAI,CAAChE,WAAzB,IACC2D,4BAAA,wBAAA,MAAA,EACEA,4BAAA,CAACC,kBAAI,CAACC,YAAN,MAAA,0BAAA,CADF,EAEEF,4BAAA,CAACC,kBAAI,CAACiC,IAAN;AAAWpE,IAAAA,MAAM,EAAC;AAAYqE,IAAAA,OAAO,EAAE,MAAM5C,YAAY,CAACc,oBAAD;GAAzD,EACGK,GAAG,CAACL,oBAAD,EAAuB,MAAvB,CADN,CAFF,EAKEL,4BAAA,CAACC,kBAAI,CAACyB,OAAN,MAAA,CALF,CAlCJ,EA0CG,CAACrF,WAAD,IAAgB2D,4BAAA,CAACC,kBAAI,CAACC,YAAN,MAAA,EAAoBtC,iBAApB,CA1CnB,EA2CG4C,oBAAoB,CAAC1B,MAArB,GACC0B,oBAAoB,CAAC4B,GAArB,CAAyB,CAACC,WAAD,EAAcC,CAAd,KACvBtC,4BAAA,CAACC,kBAAI,CAACiC,IAAN;AACEpE,IAAAA,MAAM,EAAC;AACPyE,IAAAA,GAAG,KAAK7B,GAAG,CAAC2B,WAAD,EAAc,MAAd,KAAyBC;AACpCH,IAAAA,OAAO,EAAE,MAAM5C,YAAY,CAAC8C,WAAD;GAH7B,EAKG3B,GAAG,CAAC2B,WAAD,EAAc,MAAd,EAAsB,UAAtB,CALN,CADF,CADD,GAWCrC,4BAAA,CAACC,kBAAI,CAACiC,IAAN;AAAWpE,IAAAA,MAAM,EAAC;GAAlB,oBAAA,CAtDJ,CAVJ,CADF,CADF;AAyED;AAEDL,sBAAsB,CAAC+E,YAAvB,GAAsC;AACpC1E,EAAAA,MAAM,EAAE,kCAD4B;AAEpCF,EAAAA,iBAAiB,EAAE;AAFiB,CAAtC;;ACrOA,MAAM6E,cAAc,GAAG;AACrBC,EAAAA,aAAa,eAAE3G,WAAG,CAAC;AACjB4G,IAAAA,WAAW,EAAExG,MAAM,CAACyG;AADH,GAAD,CADG;AAIrBC,EAAAA,MAAM,EAAEtB;AAJa,CAAvB;AAMA,MAAMuB,cAAc,GAAG,EACrB,GAAGL,cADkB;AAErBI,EAAAA,MAAM,eAAE9G,WAAG,CAAC;AACVgH,IAAAA,cAAc,EAAE,MADN;AAEVC,IAAAA,UAAU,EAAE,MAFF;AAGVC,IAAAA,QAAQ,EAAE;AAHA,GAAD;AAFU,CAAvB;AAyBA,MAAaC,qBAAqB,GAAG,CAAC;AACpCxF,EAAAA,YADoC;AAEpCG,EAAAA,QAFoC;AAGpCG,EAAAA,mBAHoC;AAIpCmF,EAAAA,IAJoC;AAKpCrF,EAAAA,MALoC;AAMpCsF,EAAAA,WAAW,GAAG,KANsB;AAOpCC,EAAAA,qBAPoC;AAQpC1F,EAAAA,sBARoC;AASpCI,EAAAA,gBAToC;AAUpCuF,EAAAA,QAAQ,GAAG;AAVyB,CAAD;AAYnC5F,EAAAA,YAAY,GAAGA,YAAY,CAAC6F,IAAb,CAAkB,CAACC,CAAD,EAAIC,CAAJ,KAAUD,CAAC,CAACE,IAAF,CAAOC,aAAP,CAAqBF,CAAC,CAACC,IAAvB,CAA5B,CAAf;AACA,QAAMrD,oBAAoB,GAAG3C,YAAY,CAAC4C,IAAb,CAAmBC,EAAD,IAAQA,EAAE,CAACb,GAAH,CAAOC,EAAP,KAAchC,sBAAxC,CAA7B;AACA,QAAMiG,UAAU,GACdT,IAAI,WACGzC,GAAG,CACRL,oBAAoB,KAAK3C,YAAY,CAACoB,MAAb,KAAwB,CAAxB,GAA4BpB,YAAY,CAAC,CAAD,CAAxC,GAA8C,EAAnD,CADZ,EAER,MAFQ,EAGR,OAHQ,GAFZ;AAOA,QAAMmB,WAAW,GAAGnB,YAAY,CAACoB,MAAb,GAAsB,CAAtB,IAA2Bd,mBAA/C;;AAGA,QAAM6F,QAAQ,GAAGT,WAAW,GAAGpD,4BAAA,CAAC8D,iBAAD,MAAA,CAAH,GAAkBvC,SAA9C;;AAEA,QAAM3D,iBAAiB,GAAGyF,qBAAqB,GAAG,aAAH,GAAmB9B,SAAlE;AACA,QAAM1F,MAAM,GAAGwH,qBAAqB,GAAGP,cAAH,GAAoBL,cAAxD;AAEA,SACEzC,4BAAA,CAACvC,sBAAD;AACEC,IAAAA,YAAY,EAAEA;AACdC,IAAAA,sBAAsB,EAAEA;AACxBC,IAAAA,iBAAiB,EAAEA;AACnBC,IAAAA,QAAQ,EAAEA;AACVC,IAAAA,MAAM,EAAEA;AACRC,IAAAA,gBAAgB,EAAEA;AAClBC,IAAAA,mBAAmB,EAAEA;GAPvB,EASG,CAAC;AAAEK,IAAAA;AAAF,GAAD,KACC2B,4BAAA,CAAC+D,oBAAD;AACEC,IAAAA,OAAO,EAAEnF,WAAW,GAAGmB,4BAAA,CAACiE,wBAAD,MAAA,CAAH,GAAyB1C;AAC7C2C,IAAAA,OAAO,EAAC;AACRrD,IAAAA,SAAS,EAAEhF,MAAM,CAACgH;AAClBsB,IAAAA,UAAU,EAAEb,QAAQ,IAAIjF;AACxB+F,IAAAA,SAAS,EAAE/F,WAAW,GAAGkD,SAAH,GAAesC;AACrCQ,IAAAA,IAAI,EAAC;AACLvG,IAAAA,MAAM,EAAC;AACPwG,IAAAA,SAAS,EAAEjG;GARb,EAUGuF,UAVH,CAVJ,CADF;AA0BD,CAvDM;;SCtCSW;AACd,SACEvE,4BAAA,CAACwE,uBAAD,MAAA,kIAAA,CADF;AAMD;;ACRM,MAAMC,SAAS,gBAAG1I,WAAG,CAAC;AAC3B2I,EAAAA,OAAO,EAAE,MADkB;AAE3BpD,EAAAA,KAAK,EAAE,MAFoB;AAG3BqD,EAAAA,SAAS,EAAExI,MAAM,CAACU;AAHS,CAAD,CAArB;AAMP,AAAO,MAAMM,SAAS,gBAAGpB,WAAG,CAAC;AAC3B4G,EAAAA,WAAW,EAAExG,MAAM,CAACI;AADO,CAAD,CAArB;;AC0BP,MAAMqI,kBAAkB,GAAiB;AACvCC,EAAAA,SAAS,EAAGC,KAAD,IACTA,KAAK,QAAL,IAAAA,KAAK,CAAEzC,WAAP,iBAAmCyC,KAAK,CAACzC,sBAAzC,GAAkE,2BAF7B;AAGvC0C,EAAAA,YAAY,EAAGD,KAAD,IACZA,KAAK,QAAL,IAAAA,KAAK,CAAEE,eAAP,GAAyB,uBAAzB,GAAmD;AAJd,CAAzC;AAOA,MAAMC,kBAAkB,GAAiB;AACvCJ,EAAAA,SAAS,EAAE,iCAD4B;AAEvCE,EAAAA,YAAY,EAAGD,KAAD,IACZA,KAAK,QAAL,IAAAA,KAAK,CAAEE,eAAP,GAAyB,sBAAzB,GAAkD;AAHb,CAAzC;AAMA,AAAO,MAAME,OAAO,GAAG;AACrBC,EAAAA,QAAQ,EAAE,qBADW;AAErBC,EAAAA,aAAa,EAAE,0BAFM;AAGrBC,EAAAA,oBAAoB,EAAE,kCAHD;AAIrBN,EAAAA,YAAY,EAAE;AAJO,CAAhB;AAOP,SAAgBO,YAAYR;AAC1B,MAAIA,KAAK,CAACS,MAAV,EAAkB;AAChB,WAAO,IAAP,CADgB;AAEjB;;AACD,QAAMC,aAAa,GAAGV,KAAK,CAACW,UAAN,KAAqB,OAArB,GAA+Bb,kBAA/B,GAAoDK,kBAA1E;AACA,QAAMS,MAAM,GAAG,EACb,GAAGF,aADU;AAEb,OAAGV,KAAK,CAACa;AAFI,GAAf;AAKA,SACE3F,mBAAA,MAAA;AAAKa,IAAAA,SAAS,EAAEhF;GAAhB,EACGiJ,KAAK,CAACc,eAAN,IACC5F,mBAAA,eAAA,MAAA,EACG8E,KAAK,CAACW,UAAN,KAAqB,OAArB,IACCzF,mBAAA,CAACkD,qBAAD;AACEpF,IAAAA,MAAM,EAAEoH,OAAO,CAACE;AAChB9B,IAAAA,QAAQ,EAAEwB,KAAK,CAACX;AAChBhB,IAAAA,IAAI,EAAEuC,MAAM,CAACb,SAAP,CAAiB;AACrBxC,MAAAA,WAAW,EACTyC,KAAK,CAACpH,YAAN,CAAmBoB,MAAnB,KAA8B,CAA9B,GAAkCgG,KAAK,CAACpH,YAAN,CAAmB,CAAnB,EAAsBgG,IAAxD,GAA+DnC;AAF5C,KAAjB;AAIN7D,IAAAA,YAAY,EAAEoH,KAAK,CAACpH;AACpB0F,IAAAA,WAAW,EAAE;AACbvF,IAAAA,QAAQ,EAAGgI,aAAD;AACR,aAAOA,aAAa,GAChBf,KAAK,CAACgB,QAAN,CAAeD,aAAf,EAA8Bf,KAAK,CAACiB,WAApC,CADgB,GAEhBC,OAAO,CAACC,OAAR,EAFJ;AAGD;GAbH,CAFJ,EAkBGnB,KAAK,CAACW,UAAN,KAAqB,OAArB,IACCzF,mBAAA,CAAC+D,oBAAD;AACEI,IAAAA,UAAU,EAAEW,KAAK,CAACX;AAClBrG,IAAAA,MAAM,EAAEoH,OAAO,CAACE;AAChBjD,IAAAA,OAAO,EAAE;AACP2C,MAAAA,KAAK,CAACgB,QAAN,CAAevE,SAAf,EAA0BuD,KAAK,CAACiB,WAAhC;AACD;AACD7B,IAAAA,OAAO,EAAC;AACRE,IAAAA,SAAS,EAAEpE,mBAAA,CAAC8D,iBAAD,MAAA;AACXO,IAAAA,IAAI,EAAC;GARP,EASGqB,MAAM,CAACb,SAAP,EATH,CAnBJ,EA+BE7E,mBAAA,OAAA;AAAMa,IAAAA,SAAS,EAAEhF;GAAjB,CA/BF,CAFJ,EAoCGiJ,KAAK,CAACoB,aAAN,IACClG,mBAAA,CAAC+D,oBAAD;AACEI,IAAAA,UAAU,EAAEW,KAAK,CAACX;AAClBrG,IAAAA,MAAM,EAAEoH,OAAO,CAACH;AAChB5C,IAAAA,OAAO,EAAE;AACP2C,MAAAA,KAAK,CAACqB,cAAN;AACD;AACDjC,IAAAA,OAAO,EAAC;AACRE,IAAAA,SAAS,EAAEpE,mBAAA,CAACoG,iBAAD,MAAA;AACX/B,IAAAA,IAAI,EAAC;GARP,EASGqB,MAAM,CAACX,YAAP,CAAoB;AAAEC,IAAAA,eAAe,EAAEF,KAAK,CAACE;AAAzB,GAApB,CATH,CArCJ,EAkDG,CAACF,KAAK,CAACc,eAAP,IAA0B,CAACd,KAAK,CAACoB,aAAjC,IAAkDlG,mBAAA,CAACuE,qBAAD,MAAA,CAlDrD,CADF;AAsDD;;ACpHM,MAAME,WAAS,gBAAG1I,WAAG,CAAC;AAC3B2I,EAAAA,OAAO,EAAE,MADkB;AAE3B2B,EAAAA,MAAM,gBAAgBlK,MAAM,CAACmK,SAFF;AAG3BC,EAAAA,YAAY,EAAEpK,MAAM,CAACqK,kBAHM;AAI3BC,EAAAA,cAAc,EAAE,QAJW;AAK3BvK,EAAAA,OAAO,EAAEC,MAAM,CAACI;AALW,CAAD,CAArB;AAQP,AAAO,MAAMsG,MAAM,gBAAG9G,WAAG,CAAC;AACxBgH,EAAAA,cAAc,EAAE,MADQ;AAExBC,EAAAA,UAAU,EAAE;AAFY,CAAD,CAAlB;;ACDP,MAAMkC,SAAO,GAAG,EACd,GAAGwB,OADW;AAEdC,EAAAA,cAAc,EAAE;AAFF,CAAhB;AAKA;;;;;;;;AAOA,SAAgBC,oBAAoB9B;AAClC,MAAIA,KAAK,CAACS,MAAV,EAAkB;AAChB,WAAO,IAAP,CADgB;AAEjB;AAED;AACA;;;AACA,QAAMsB,aAAa,GAAG/B,KAAK,CAACW,UAAN,KAAqB,OAArB,IAAgC,CAACX,KAAK,CAACgC,OAA7D;AACA,SACE9G,mBAAA,MAAA;AAAKa,IAAAA,SAAS,EAAEgG,aAAa,GAAG,EAAH,GAAQhL;GAArC,EACG,CAACiJ,KAAK,CAACc,eAAP,IAA0B,CAACd,KAAK,CAACoB,aAAjC,IAAkDlG,mBAAA,CAACuE,qBAAD,MAAA,CADrD,EAEGO,KAAK,CAACW,UAAN,KAAqB,OAArB,IAAgCzF,mBAAA,CAAC+G,wBAAD,OAA8BjC;GAA9B,CAFnC,EAGGA,KAAK,CAACW,UAAN,KAAqB,OAArB,IAAgCzF,mBAAA,CAACgH,wBAAD,OAA8BlC;GAA9B,CAHnC,CADF;AAOD;;AAED,SAASiC,wBAAT,CAAkCjC,KAAlC;AACE,MAAIA,KAAK,CAACc,eAAV,EAA2B;AACzB,WACE5F,mBAAA,CAACkD,qBAAD;AACEpF,MAAAA,MAAM,EAAEoH,SAAO,CAACyB;AAChBrD,MAAAA,QAAQ,EAAEwB,KAAK,CAACX;AAChBhB,MAAAA,IAAI,EAAE2B,KAAK,CAACmC,oBAAN,IAA8B;AACpCvJ,MAAAA,YAAY,EAAEoH,KAAK,CAACpH;AACpB0F,MAAAA,WAAW,EAAE;AACbC,MAAAA,qBAAqB,EAAE;AACvBtF,MAAAA,gBAAgB,EAAE;AAChB/B,QAAAA,QAAQ,EAAE;AADM;AAGlB6B,MAAAA,QAAQ,EAAGgI,aAAD;AACR,eAAOA,aAAa,GAAGf,KAAK,CAACgB,QAAN,CAAeD,aAAf,CAAH,GAAmCG,OAAO,CAACC,OAAR,EAAvD;AACD;AACDjI,MAAAA,mBAAmB,EACjB8G,KAAK,CAACoB,aAAN,GACElG,mBAAA,CAACC,kBAAI,CAACiC,IAAN;AACEpE,QAAAA,MAAM,EAAEoH,SAAO,CAACH;AAChB5C,QAAAA,OAAO,EAAE;AACP2C,UAAAA,KAAK,CAACqB,cAAN;AACD;OAJH,wBAAA,CADF,GAQI5E;KAtBR,CADF;AA2BD,GA5BD,MA4BO,IAAIuD,KAAK,CAACoB,aAAV,EAAyB;AAC9B,WACElG,mBAAA,CAAC+D,oBAAD;AACEI,MAAAA,UAAU,EAAEW,KAAK,CAACX;AAClBrG,MAAAA,MAAM,EAAEoH,SAAO,CAACH;AAChBlE,MAAAA,SAAS,EAAEhF;AACXsG,MAAAA,OAAO,EAAE;AACP2C,QAAAA,KAAK,CAACqB,cAAN;AACD;AACDjC,MAAAA,OAAO,EAAC;AACRE,MAAAA,SAAS,EAAEpE,mBAAA,CAACoG,iBAAD,MAAA;AACX/B,MAAAA,IAAI,EAAC;KATP,wBAAA,CADF;AAcD;;AACD,SAAO,IAAP;AACD;;AAED,SAAS2C,wBAAT,CAAkClC,KAAlC;AACE,QAAM,CAAC5G,MAAD,EAASC,OAAT,IAAoB6B,cAAA,CAAe,KAAf,CAA1B;;AAEA,MAAI,CAAC8E,KAAK,CAACoB,aAAP,IAAwB,CAACpB,KAAK,CAACc,eAAnC,EAAoD;AAClD,QAAId,KAAK,CAACoB,aAAV,EAAyB;AACvB,aACElG,mBAAA,CAAC+D,oBAAD;AACEI,QAAAA,UAAU,EAAEW,KAAK,CAACX;AAClBrG,QAAAA,MAAM,EAAEoH,SAAO,CAACH;AAChBlE,QAAAA,SAAS,EAAEhF;AACXsG,QAAAA,OAAO,EAAE;AACP2C,UAAAA,KAAK,CAACqB,cAAN;AACD;AACDjC,QAAAA,OAAO,EAAC;AACRE,QAAAA,SAAS,EAAEpE,mBAAA,CAAC8D,iBAAD,MAAA;AACXO,QAAAA,IAAI,EAAC;OATP,sBAAA,CADF;AAcD;;AACD,QAAIS,KAAK,CAACc,eAAV,EAA2B;AACzB,aACE5F,mBAAA,CAAC+D,oBAAD;AACEI,QAAAA,UAAU,EAAEW,KAAK,CAACX;AAClBrG,QAAAA,MAAM,EAAEoH,SAAO,CAACE;AAChBvE,QAAAA,SAAS,EAAEhF;AACXsG,QAAAA,OAAO,EAAE;AACP2C,UAAAA,KAAK,CAACgB,QAAN;AACD;AACD5B,QAAAA,OAAO,EAAC;AACRE,QAAAA,SAAS,EAAEpE,mBAAA,CAAC8D,iBAAD,MAAA;AACXO,QAAAA,IAAI,EAAC;OATP,aAAA,CADF;AAcD;;AACD,WAAO,IAAP;AACD;AAGD;;;AACA,SACErE,mBAAA,CAACC,kBAAD;AACE/B,IAAAA,MAAM,EAAEA;AACR+C,IAAAA,OAAO,EAAE;AACP9C,MAAAA,OAAO,CAAC,KAAD,CAAP;AACD;AACD+C,IAAAA,MAAM,EAAE;AACN/C,MAAAA,OAAO,CAAC,IAAD,CAAP;AACD;GAPH,EAQE6B,mBAAA,CAACC,kBAAI,CAACkB,OAAN,MAAA,EACEnB,mBAAA,CAAC+D,oBAAD;AACEC,IAAAA,OAAO,EAAEhE,mBAAA,CAACiE,wBAAD,MAAA;AACTE,IAAAA,UAAU,EAAEW,KAAK,CAACX;AAClBrG,IAAAA,MAAM,EAAEoH,SAAO,CAACyB;AAChB9F,IAAAA,SAAS,EAAEhF;AACXqI,IAAAA,OAAO,EAAC;AACRE,IAAAA,SAAS,EAAEpE,mBAAA,CAAC8D,iBAAD,MAAA;AACXO,IAAAA,IAAI,EAAC;GAPP,aAAA,CADF,CARF,EAoBGnG,MAAM,IACL8B,mBAAA,CAACC,kBAAI,CAACmB,IAAN;AAAWtD,IAAAA,MAAM,EAAEoH,SAAO,CAACC;GAA3B,EACEnF,mBAAA,CAACC,kBAAI,CAACiC,IAAN;AACEpE,IAAAA,MAAM,EAAEoH,SAAO,CAACH;AAChB5C,IAAAA,OAAO,EAAE;AACP2C,MAAAA,KAAK,CAACqB,cAAN;AACD;GAJH,sBAAA,CADF,EAQEnG,mBAAA,CAACC,kBAAI,CAACiC,IAAN;AACEpE,IAAAA,MAAM,EAAEoH,SAAO,CAACE;AAChBjD,IAAAA,OAAO,EAAE;AACP2C,MAAAA,KAAK,CAACgB,QAAN;AACD;GAJH,iBAAA,CARF,CArBJ,CADF;AAyCD;;ACvKM,MAAMoB,IAAI,gBAAGnL,WAAG,CAAC;AACtBC,EAAAA,QAAQ,EAAE;AADY,CAAD,CAAhB;AAIP,AAAO,MAAMmL,UAAU,gBAAGpL,WAAG,CAAC;AAC5B2I,EAAAA,OAAO,EAAE,MADmB;AAE5B0C,EAAAA,UAAU,EAAE,QAFgB;AAG5B9F,EAAAA,KAAK,EAAE,OAHqB;AAI5B+F,EAAAA,MAAM,EAAE,OAJoB;AAK5BC,EAAAA,SAAS,EAAE;AALiB,CAAD,CAAtB;;SCESC,kBAAkBzC;AAMhC,SACE9E,4BAAA,CAACwH,kBAAD;AAAM3G,IAAAA,SAAS,EAAEhF;AAAaiC,IAAAA,MAAM,EAAC;GAArC,EACEkC,4BAAA,CAACyH,kBAAD;AAAML,IAAAA,UAAU,EAAC;AAASX,IAAAA,cAAc,EAAC;GAAzC,EACEzG,4BAAA,MAAA;AAAKa,IAAAA,SAAS,EAAEiE,KAAK,CAAC4C,QAAN,GAAiB7L,UAAjB,GAAqC;GAArD,EACEmE,4BAAA,CAAC2H,4BAAD;AAAgBC,IAAAA,YAAY,EAAC;GAA7B,EACG9C,KAAK,CAACW,UADT,+BAAA,CADF,CADF,EAMG,CAACX,KAAK,CAACX,UAAP,IAAqBW,KAAK,CAAC+C,QAA3B,IACC7H,4BAAA,CAAC8H,wBAAD;AACE5D,IAAAA,OAAO,EAAC;AACR6D,IAAAA,IAAI,EAAE/H,4BAAA,CAACgI,kBAAD;AAAW9D,MAAAA,OAAO,EAAC;KAAnB;kBACK;AACX/B,IAAAA,OAAO,EAAE;AACP2C,MAAAA,KAAK,CAAC+C,QAAN,IAAkB/C,KAAK,CAAC+C,QAAN,EAAlB;AACD;GANH,CAPJ,CADF,CADF;AAqBD;;AChCD,MAAMI,iBAAiB,GAAIvK,YAAD,IAAiCA,YAAY,CAAC0E,GAAb,CAAkB7B,EAAD,IAAQA,EAAE,CAACb,GAAH,CAAOC,EAAhC,CAA3D;;AAEA,AAAO,eAAeuI,YAAf,CAA4BpD,KAA5B;AAKL,MAAIA,KAAK,CAACW,UAAN,KAAqB,OAAzB,EAAkC;AAChC,QAAI,CAACX,KAAK,CAACe,aAAX,EAA0B;AACxB,aAAO,EAAP;AACD;;AACD,UAAM;AAAEsC,MAAAA,MAAF;AAAUC,MAAAA;AAAV,QAAoB,MAAMtD,KAAK,CAACuD,GAAN,CAAUC,SAAV,CAAoBC,YAApB,CAAwCzD,KAAK,CAACe,aAA9C,EAA6D;AAC3F2C,MAAAA,OAAO,EAAE;AADkF,KAA7D,CAAhC;AAGA,WAAO;AAAEL,MAAAA,MAAF;AAAUC,MAAAA;AAAV,KAAP;AACD,GARD,MAQO;AACL,UAAM;AAAED,MAAAA,MAAF;AAAUC,MAAAA;AAAV,QAAoB,MAAMtD,KAAK,CAACuD,GAAN,CAAUC,SAAV,CAAoBG,YAApB,CAAiC;AAC/DD,MAAAA,OAAO,EAAE;AADsD,KAAjC,CAAhC;AAGA,WAAO;AAAEL,MAAAA,MAAF;AAAUC,MAAAA;AAAV,KAAP;AACD;AACF;AAED,AAAO,eAAeM,kBAAf,CAAkC5D,KAAlC;AAKL,MAAIA,KAAK,CAACW,UAAN,KAAqB,OAAzB,EAAkC;AAChC,WAAO,MAAMX,KAAK,CAACuD,GAAN,CAAUM,OAAV,CAAkBC,iBAAlB,CAA2C;AACtDC,MAAAA,MAAM,EAAE/D,KAAK,CAACuD,GAAN,CAAUS,KAAV,CAAgBD,MAD8B;AAEtDnL,MAAAA,YAAY,EAAEuK,iBAAiB,CAACnD,KAAK,CAACiE,iBAAN,CAAwBC,oBAAzB;AAFuB,KAA3C,CAAb;AAID,GALD,MAKO;AACL,WAAOlE,KAAK,CAACuD,GAAN,CAAUM,OAAV,CAAkBM,iBAAlB,CAA2C;AAChDJ,MAAAA,MAAM,EAAE/D,KAAK,CAACuD,GAAN,CAAUS,KAAV,CAAgBD,MADwB;AAEhDK,MAAAA,cAAc,EAAEpE,KAAK,CAACiE,iBAAN,CAAwBI,WAAxB,CAAoCD;AAFJ,KAA3C,CAAP;AAID;AACF;AAED,AAAO,eAAeE,sBAAf,CAAsCtE,KAAtC;;;AAKL,QAAMjD,KAAK,GAAGiD,KAAK,CAACuD,GAAN,CAAUS,KAAV,CAAgBO,QAAhB,EAAd;AAEA,QAAMC,SAAS,GAAGC,KAAK,CAACC,OAAN,CAAc3H,KAAd,IAAuBA,KAAK,CAAC/C,MAA7B,GAAsC+C,KAAK,GAAG,CAAH,GAAO,CAApE;AAGA;AACA;;AACA,QAAM4H,GAAG,GAAGC,IAAI,CAACC,GAAL,CACV,CAAC,0BAAA7E,KAAK,CAACiE,iBAAN,CAAwBI,WAAxB,CAAoCS,aAApC,2CAAmDH,GAAnD,KAA0D,CAA3D,IAAgEH,SADtD,EAEV,CAFU,CAAZ;AAKA;;AACA,QAAMK,GAAG,GAAG,CAAC,2BAAA7E,KAAK,CAACiE,iBAAN,CAAwBI,WAAxB,CAAoCS,aAApC,4CAAmDD,GAAnD,KAA0D,CAACE,QAA5D,IAAwEP,SAApF;;AAEA,MAAIxE,KAAK,CAACW,UAAN,KAAqB,OAAzB,EAAkC;AAChC,WAAO,MAAMX,KAAK,CAACuD,GAAN,CAAUM,OAAV,CAAkBmB,qBAAlB,CAA+C;AAC1DjB,MAAAA,MAAM,EAAE/D,KAAK,CAACuD,GAAN,CAAUS,KAAV,CAAgBD,MADkC;AAE1DnL,MAAAA,YAAY,EAAEuK,iBAAiB,CAACnD,KAAK,CAACiE,iBAAN,CAAwBC,oBAAzB,CAF2B;AAG1DS,MAAAA,GAH0D;AAI1DE,MAAAA;AAJ0D,KAA/C,CAAb;AAMD,GAPD,MAOO;AACL,WAAO7E,KAAK,CAACuD,GAAN,CAAUM,OAAV,CAAkBoB,oBAAlB,CAA8C;AACnDlB,MAAAA,MAAM,EAAE/D,KAAK,CAACuD,GAAN,CAAUS,KAAV,CAAgBD,MAD2B;AAEnDK,MAAAA,cAAc,EAAEpE,KAAK,CAACiE,iBAAN,CAAwBI,WAAxB,CAAoCD,cAFD;AAGnDO,MAAAA,GAHmD;AAInDE,MAAAA;AAJmD,KAA9C,CAAP;AAMD;AACF;;SCjDeK,oBAAoBlF;;;AAClC,QAAM;AACJuD,IAAAA,GADI;AAEJU,IAAAA,iBAFI;AAGJtD,IAAAA,UAHI;AAIJT,IAAAA,eAJI;AAKJb,IAAAA,UALI;AAMJwB,IAAAA,YANI;AAOJI,IAAAA;AAPI,MAQFjB,KARJ;AAUA,QAAMmF,aAAa,4BAAGlB,iBAAiB,CAACI,WAAlB,CAA8BS,aAAjC,qBAAG,sBAA6CD,GAAnE;AACA,QAAM9H,KAAK,GAAGwG,GAAG,CAACS,KAAJ,CAAUO,QAAV,EAAd;AACA,QAAMC,SAAS,GAAGC,KAAK,CAACC,OAAN,CAAc3H,KAAd,IAAuBA,KAAK,CAAC/C,MAA7B,GAAsC+C,KAAK,GAAG,CAAH,GAAO,CAApE;AACA,QAAM0D,MAAM,GAAG,CAAC,CAAC0E,aAAF,IAAmBA,aAAa,IAAIX,SAAnD;AACA,QAAMxC,OAAO,GAAGwC,SAAS,KAAK,CAA9B;AAEA,QAAMY,SAAS,GAAGlK,iBAAA,CAChB,CAACmI,MAAD,EAAwBgC,KAAK,GAAGpE,WAAhC,EAA6CqC,KAA7C;AACEtD,IAAAA,KAAK,CAACgB,QAAN,CAAeqC,MAAM,CAACzI,GAAP,CAAWC,EAA1B,EAA8BwK,KAA9B;AACArF,IAAAA,KAAK,CAACsF,QAAN,IACEtF,KAAK,CAACsF,QAAN,CAAe;AACbC,MAAAA,IAAI,EAAE,iBADO;AAEblC,MAAAA,MAAM,EAAE1C,UAFK;AAGb6E,MAAAA,UAAU,EAAEnC,MAHC;AAIbC,MAAAA,KAJa;AAKb+B,MAAAA;AALa,KAAf,CADF;AAQD,GAXe;AAahB,GAAC1E,UAAD,EAAaX,KAAK,CAACgB,QAAnB,EAA6BhB,KAAK,CAACsF,QAAnC,CAbgB,CAAlB;AAeA,QAAMG,gBAAgB,GAAGvK,iBAAA,CACvB,CAACwK,QAAD,EAAiCL,KAAK,GAAGpE,WAAzC;AACEjB,IAAAA,KAAK,CAAC2F,MAAN,CACED,QAAQ,CAACpI,GAAT,CAAc5C,IAAD,IAAUA,IAAI,CAACE,GAAL,CAASC,EAAhC,CADF,EAEEwK,KAFF;AAIAK,IAAAA,QAAQ,CAACE,OAAT,CAAiB,CAACvC,MAAD,EAAS7F,CAAT;AACfwC,MAAAA,KAAK,CAACsF,QAAN,IACEtF,KAAK,CAACsF,QAAN,CAAe;AACbC,QAAAA,IAAI,EAAE,iBADO;AAEblC,QAAAA,MAAM,EAAE1C,UAFK;AAGb6E,QAAAA,UAAU,EAAEnC,MAHC;AAIbgC,QAAAA,KAAK,EAAEA,KAAK,KAAK5I,SAAV,GAAsBA,SAAtB,GAAkC4I,KAAK,GAAG7H;AAJpC,OAAf,CADF;AAOD,KARD;AASD,GAfsB;AAiBvB,GAACmD,UAAD,EAAaX,KAAK,CAAC2F,MAAnB,EAA2B3F,KAAK,CAACsF,QAAjC,CAjBuB,CAAzB;AAoBA,QAAMtE,QAAQ,GAAG9F,iBAAA,CACf,OAAO6F,aAAP,EAA+BsE,KAA/B;AACE,UAAM;AAAEhC,MAAAA,MAAF;AAAUC,MAAAA;AAAV,QAAoB,MAAMF,YAAY,CAAC;AAAEG,MAAAA,GAAF;AAAO5C,MAAAA,UAAP;AAAmBI,MAAAA;AAAnB,KAAD,CAA5C;;AACA,QAAI,CAACsC,MAAL,EAAa;AACX;AACD;;AAED+B,IAAAA,SAAS,CAAC/B,MAAD,EAASgC,KAAT,EAAgB/B,KAAhB,CAAT;AACD,GARc,EASf,CAACC,GAAD,EAAM5C,UAAN,EAAkByE,SAAlB,CATe,CAAjB;AAYA,QAAM/D,cAAc,GAAGnG,iBAAA,CACrB,MAAOmK,KAAP;AACE,UAAMhC,MAAM,GAAG,MAAMO,kBAAkB,CAAC;AACtCL,MAAAA,GADsC;AAEtC5C,MAAAA,UAFsC;AAGtCsD,MAAAA;AAHsC,KAAD,CAAvC;;AAKA,QAAI,CAACZ,MAAL,EAAa;AACX;AACD;;AAEDoC,IAAAA,gBAAgB,CAAC,CAACpC,MAAD,CAAD,EAAWgC,KAAX,CAAhB;AACD,GAZoB;AAcrB,GAAC9B,GAAD,EAAM5C,UAAN,EAAkB8E,gBAAlB,CAdqB,CAAvB;AAiBA,QAAMI,qBAAqB,GAAG3K,iBAAA,CAC5B,MAAOmK,KAAP;AACE,UAAMK,QAAQ,GAAG,MAAMpB,sBAAsB,CAAC;AAC5Cf,MAAAA,GAD4C;AAE5C5C,MAAAA,UAF4C;AAG5CsD,MAAAA;AAH4C,KAAD,CAA7C;;AAMA,QAAI,CAACyB,QAAD,IAAaA,QAAQ,CAAC1L,MAAT,KAAoB,CAArC,EAAwC;AACtC;AACD;;AACDyL,IAAAA,gBAAgB,CAACC,QAAD,EAAWL,KAAX,CAAhB;AACD,GAZ2B;AAc5B,GAAC9B,GAAD,EAAM5C,UAAN,EAAkB8E,gBAAlB,CAd4B,CAA9B;;AAkBA,SAAOK,aAAO,CACZ,OAAO;AACLnF,IAAAA,UADK;AAELT,IAAAA,eAFK;AAGLb,IAAAA,UAHK;AAIL2C,IAAAA,OAJK;AAKLvB,IAAAA,MALK;AAMLK,IAAAA,eAAe,EAAEmD,iBAAiB,CAACnD,eAN9B;AAOLM,IAAAA,aAAa,EAAE6C,iBAAiB,CAAC7C,aAP5B;AAQLxI,IAAAA,YAAY,EAAEqL,iBAAiB,CAAC8B,qBAR3B;AASL/E,IAAAA,QATK;AAULK,IAAAA,cAAc,EAAEnB,eAAe,GAAG2F,qBAAH,GAA2BxE,cAVrD;AAWLR,IAAAA,YAXK;AAYLuE,IAAAA,SAZK;AAaLK,IAAAA,gBAbK;AAcLxE,IAAAA;AAdK,GAAP,CADY;AAkBZ,GACEN,UADF,EAEET,eAFF,EAGEb,UAHF,EAIE2C,OAJF,EAKEvB,MALF,EAMEwD,iBAAiB,CAACnD,eANpB,EAOEmD,iBAAiB,CAAC7C,aAPpB,EAQEP,YARF;AAUEoD,EAAAA,iBAAiB,CAAC8B,qBAAlB,CAAwCzI,GAAxC,CAA6C7B,EAAD,IAAQA,EAAE,CAACb,GAAH,CAAOC,EAA3D,EAA+DmL,IAA/D,CAAoE,GAApE,CAVF,EAWEhF,QAXF,EAYEK,cAZF,EAaEwE,qBAbF,EAcET,SAdF,EAeEK,gBAfF,EAgBExE,WAhBF,CAlBY,CAAd;AAqCD;AAED,SAAgBgF,kBAAkB;AAChCC,EAAAA,mBADgC;AAEhC,KAAGlG;AAF6B;AAMhC,SAAOkG,mBAAmB,GAAGA,mBAAmB,CAAClG,KAAD,CAAtB,GAAgC9E,mBAAA,CAACsF,WAAD,OAAiBR;GAAjB,CAA1D;AACD;AAED,SAAgBmG,0BAA0B;AACxCD,EAAAA,mBADwC;AAExC,KAAGlG;AAFqC;AAMxC,SAAOkG,mBAAmB,GAAGA,mBAAmB,CAAClG,KAAD,CAAtB,GAAgC9E,mBAAA,CAAC4G,mBAAD,OAAyB9B;GAAzB,CAA1D;AACD;;ACxLD;AACA,AAIA;;;;;AAIA,AAAO,MAAMoG,UAAU,GAAiB,CAACC,IAAD,EAAOC,KAAP;AACtC,UAAQC,MAAM,GAAGC,OAAT,CAAiB,KAAjB,EAAwBC,IAAxB,CAA6BF,MAAM,CAACF,IAAD,CAAN,CAAaG,OAAb,CAAqB,KAArB,CAA7B,EAA0D,MAA1D,CAAR;AACE,SAAK,CAAL;AACE,aAAOF,KAAK,GAAG,OAAH,aAAuBC,MAAM,CAACF,IAAD,CAAN,CAAaK,MAAb,CAAoB,aAApB,GAAnC;;AACF,SAAK,CAAC,CAAN;AACE,aAAOJ,KAAK,GAAG,UAAH,gBAA6BC,MAAM,CAACF,IAAD,CAAN,CAAaK,MAAb,CAAoB,aAApB,GAAzC;;AACF,SAAK,CAAL;AACE,aAAOJ,KAAK,GAAG,WAAH,iBAA+BC,MAAM,CAACF,IAAD,CAAN,CAAaK,MAAb,CAAoB,aAApB,GAA3C;;AACF;AACE,aAAOH,MAAM,CAACF,IAAD,CAAN,CAAaK,MAAb,CAAoB,kBAApB,CAAP;AARJ;AAUD,CAXM;AAaP;;;;;;;AAMA,AAAO,MAAMC,UAAU,GAAkBN,IAAD;AACtC,SAAOE,MAAM,CAACK,GAAP,CAAWP,IAAX,EAAiBQ,KAAjB,GAAyBH,MAAzB,CAAgC,QAAhC,CAAP;AACD,CAFM;AAIP,AAAO,MAAMI,iBAAiB,GAAiB,CAACT,IAAD,EAAOC,KAAP;AAC7C,YAAUF,UAAU,CAACC,IAAD,EAAOC,KAAP,QAAoBK,UAAU,CAACN,IAAD,GAAlD;AACD,CAFM;;MCzBMU,yBAAyB,GAAG,CAAC;AACxCC,EAAAA,GADwC;AAExCC,EAAAA;AAFwC,CAAD;AAOvC,iBAAeD,GAAG,CAACjJ,MAAJ,CAAWlC,WAAX,MAA4BiL,iBAAiB,CAC1DE,GAAG,CAACE,YAAJ,CAAiBC,QADyC,CAAjB,CAEzCtL,WAFyC;IAGzCoL,SAAS,GAAG,CAAZ,QAAqBA,SAAS,GAAG,QAAjC,GAA4C,IAH9C;AAID,CAXM;AAaP,AAAO,MAAMG,eAAe,GAAG,CAAC;AAC9BJ,EAAAA,GAD8B;AAE9BC,EAAAA,SAF8B;AAG9B9N,EAAAA;AAH8B,CAAD;AAS7B,SACE+B,4BAAA,CAACmM,qBAAD;AACEpL,IAAAA,SAAS,EAAC;AACVjD,IAAAA,MAAM,EAAEgO,GAAG,CAACpM,GAAJ,CAAQC;AAChByM,IAAAA,EAAE,EAAC;AACHC,IAAAA,OAAO,EAAER,yBAAyB,CAAC;AAAEC,MAAAA,GAAF;AAAOC,MAAAA;AAAP,KAAD;GAJpC,EAKG9N,QALH,CADF;AASD,CAlBM;;MCPMqO,wBAAwB,GAAG,CAAC;AACvC7G,EAAAA,UADuC;AAEvC8G,EAAAA,QAFuC;AAGvCC,EAAAA,yBAHuC;AAIvCvO,EAAAA;AAJuC,CAAD;AAMtC,QAAM,CAACwO,MAAD,EAASC,SAAT,IAAsB1M,cAAK,CAAC5B,QAAN,CAI1B;AAAEiM,IAAAA,IAAI,EAAE;AAAR,GAJ0B,CAA5B;AAMArK,EAAAA,cAAK,CAAChB,SAAN,CAAgB;AACdwN,IAAAA,yBAAyB,CAAC/G,UAAD,EAAa8G,QAAb,CAAzB,CACG3M,IADH,CACS+M,IAAD;AACJD,MAAAA,SAAS,CAAC;AAAErC,QAAAA,IAAI,EAAE,QAAR;AAAkBuC,QAAAA,IAAI,EAAED;AAAxB,OAAD,CAAT;AACD,KAHH,EAIGE,KAJH,CAIU9K,CAAD;AACL2K,MAAAA,SAAS,CAAC;AAAErC,QAAAA,IAAI,EAAE,OAAR;AAAiByC,QAAAA,KAAK,EAAE/K;AAAxB,OAAD,CAAT;AACD,KANH;AAQA;AACA;AACD,GAXD,EAWG,EAXH;;AAaA,MAAI0K,MAAM,CAACpC,IAAP,KAAgB,SAAhB,IAA6BoC,MAAM,CAACpC,IAAP,KAAgB,OAAjD,EAA0D;AACxD,WAAO,IAAP;AACD;;AAED,QAAMuC,IAAI,GAAGH,MAAM,CAACG,IAAP,IAAe,EAA5B;;AAEA,MAAIA,IAAI,CAAC9N,MAAL,KAAgB,CAApB,EAAuB;AACrB,WAAO,IAAP;AACD;;AAED,QAAMiO,eAAe,GAAGH,IAAI,CAAC,CAAD,CAA5B;AAEA,SACE5M,4BAAA,CAACkM,eAAD;AAAiBJ,IAAAA,GAAG,EAAEiB;AAAiBhB,IAAAA,SAAS,EAAEa,IAAI,CAAC9N;GAAvD,EACGb,QADH,CADF;AAKD,CA1CM;;ACLP,MAAM+O,UAAU,GAAG;AAAE1L,EAAAA,KAAK,EAAE,EAAT;AAAa+F,EAAAA,MAAM,EAAE;AAArB,CAAnB;AAEA,SAAgB4F,eAAenI;AAC7B,SACE9E,4BAAA,MAAA;AACEkN,IAAAA,GAAG,EAAEpI,KAAK,CAACqI,IAAN,CAAWC;AAChBC,IAAAA,GAAG,KAAKvI,KAAK,CAACqI,IAAN,CAAWG,SAASN,UAAU,CAAC1L,WAAW0L,UAAU,CAAC3F;AAC7DA,IAAAA,MAAM,EAAE2F,UAAU,CAAC3F;AACnB/F,IAAAA,KAAK,EAAE0L,UAAU,CAAC1L;GAJpB,CADF;AAQD;;ACgBD,MAAMiM,WAAW,gBAAG,IAAIC,MAAJ,CAAW;AAAEC,EAAAA,WAAW,EAAE;AAAf,CAAX,CAApB;AAwDA,MAAaC,yBAAyBC;AAEpCC,EAAAA,YAAYC;AACV,UAAMA,OAAN;SAFFC;AAGE,SAAKA,kBAAL,GAA0B,IAA1B;AACD;;;AAGH,SAAgBA,mBAAmBjM;AACjC,SACE,OAAOA,KAAP,KAAiB,QAAjB,IAA8B,CAAAA,KAAiC,QAAjC,YAAAA,KAAiC,CAAEiM,kBAAnC,MAA0D,IAD1F;AAGD;;AAED,MAAMC,gBAAgB,GAAIC,QAAD;AACvB,SACEzE,KAAK,CAACC,OAAN,CAAcwE,QAAd,MACCA,QAAQ,CAAC,CAAD,CAAR,KAAgB,OAAhB,IAA2BA,QAAQ,CAAC,CAAD,CAAR,KAAgB,OAD5C,KAEAA,QAAQ,CAAClP,MAAT,KAAoB,CAHtB;AAKD,CAND;;AAUA,eAAemP,oBAAf,CAAoCC,MAApC;AACE,QAAM;AAAEC,IAAAA,GAAF;AAAOC,IAAAA,KAAP;AAAcC,IAAAA;AAAd,MAA0BH,MAAhC;AACA,QAAMI,UAAU,GAAGH,GAAG,CAACI,KAAJ,CAAU,GAAV,EAAe,CAAf,EAAkB,CAAlB,CAAnB;AACA,QAAM,GAAGC,OAAH,GAAcC,OAAd,IAAyBH,UAAU,CAACC,KAAX,CAAiB,GAAjB,CAA/B;AACA,QAAMG,aAAa,GAAG,QAAtB;AAEA,QAAM,CAACC,KAAD,EAAQC,KAAR,IAAiB,MAAM5I,OAAO,CAAC6I,GAAR,CAAY,CACvCT,KAAK,CAAC,CAAC,OAAD,EAAUI,OAAV,CAAD,EAAqB,CAAC;AAAEM,IAAAA;AAAF,GAAD,KAAmBA,SAAS,CAACH,KAAV,CAAgBjO,GAAhB,CAAoB;AAAE8N,IAAAA;AAAF,GAApB,CAAxC,EAA0EH,OAA1E,CADkC,EAEvCD,KAAK,CACH,CAAC,OAAD,EAAUI,OAAV,EAAmBE,aAAnB,EAAkCD,OAAlC,CADG,EAEH,CAAC;AAAEK,IAAAA;AAAF,GAAD,KACEA,SAAS,CAACF,KAAV,CAAgBlO,GAAhB,CAAoB;AAClB8N,IAAAA,OADkB;AAElBE,IAAAA,aAFkB;AAGlBD,IAAAA;AAHkB,GAApB,CAHC,EAQHJ,OARG,CAFkC,CAAZ,CAA7B;AAaA,QAAMxI,aAAa,GAAG+I,KAAK,CAAClP,GAAN,CAAU2C,WAAV,CAAsB3C,GAAtB,CAA0BC,EAAhD;AACA,QAAM,CAAC0C,WAAD,EAAc0M,iBAAd,IAAmC,MAAM/I,OAAO,CAAC6I,GAAR,CAAY,CACzDT,KAAK,CACH,CAAC,aAAD,EAAgBI,OAAhB,EAAyBE,aAAzB,EAAwC7I,aAAxC,CADG,EAEH,CAAC;AAAEiJ,IAAAA;AAAF,GAAD,KACEA,SAAS,CAACzM,WAAV,CAAsB3B,GAAtB,CAA0B;AACxBmF,IAAAA,aADwB;AAExB2I,IAAAA,OAFwB;AAGxBE,IAAAA;AAHwB,GAA1B,CAHC,EAQHL,OARG,CADoD,EAWzDD,KAAK,CACH,CAAC,eAAD,EAAkBI,OAAlB,EAA2BE,aAA3B,CADG,EAEH,OAAO;AAAEI,IAAAA;AAAF,GAAP;;;AACE,UAAME,OAAO,GAAG,MAAMF,SAAS,CAACjG,MAAV,CAAiBoG,OAAjB,CAAyB;AAC7CT,MAAAA,OAD6C;AAE7CE,MAAAA,aAF6C;AAG7CQ,MAAAA,KAAK,EAAE;AAAEC,QAAAA,KAAK,EAAE;AAAT;AAHsC,KAAzB,CAAtB;AAKA,UAAMJ,iBAAiB,0BAAGC,OAAO,CAACI,KAAR,CAAc9O,IAAd,CAAoBuI,MAAD,IAAYA,MAAM,CAACwG,OAAtC,CAAH,qBAAG,oBAAgDC,IAA1E;AACA,WAAOP,iBAAP;AACD,GAVE,EAWHV,OAXG,CAXoD,CAAZ,CAA/C;AA0BA,SAAO;AACLU,IAAAA,iBADK;AAELQ,IAAAA,QAAQ,EAAEX,KAFL;AAGLD,IAAAA,KAAK,EAAEA,KAHF;AAILtM,IAAAA,WAAW,EAAEA;AAJR,GAAP;AAMD;;AAED,MAAM,CAACmN,uBAAD,EAA0BC,QAA1B,EAAoCC,eAApC,EAAqDC,aAArD,iBAAsEC,QAAQ,CAClF,SAASC,eAAT,CAAyB/K,KAAzB;AACE,QAAMgL,cAAc,GAAGhL,KAAK,CAACuD,GAAN,CAAU0H,GAAV,CAAcpB,KAArC;AACA,QAAMqB,oBAAoB,GAAGlL,KAAK,CAACuD,GAAN,CAAU0H,GAAV,CAAcE,gBAAd,IAAkCnL,KAAK,CAACuD,GAAN,CAAU0H,GAAV,CAAcG,WAA7E;AACA,QAAMC,cAAc,GAAGvF,aAAO,CAC5B,MAAM,CAAC9F,KAAK,CAACuD,GAAN,CAAU0H,GAAV,CAAcE,gBAAf,EAAiCnL,KAAK,CAACuD,GAAN,CAAU0H,GAAV,CAAcG,WAA/C,CADsB,EAE5B,CAACpL,KAAK,CAACuD,GAAN,CAAU0H,GAAV,CAAcE,gBAAf,EAAiCnL,KAAK,CAACuD,GAAN,CAAU0H,GAAV,CAAcG,WAA/C,CAF4B,CAA9B;AAIA,QAAME,WAAW,GAAGC,yBAAc,EAAlC;AACA,QAAMC,UAAU,GAAGF,WAAW,CAACG,aAAZ,EAAnB;AACA,QAAMC,yBAAyB,GAAGhS,YAAM,CAA2B,EAA3B,CAAxC;AACA,QAAMsQ,SAAS,GAAGlE,aAAO,CACvB,MAAM6F,iCAAY,CAAC;AAAEC,IAAAA,UAAU,EAAE5L,KAAK,CAACuD,GAAN,CAAUsI;AAAxB,GAAD,EAAuC;AAAEtG,IAAAA,IAAI,EAAE;AAAR,GAAvC,CADK,EAEvB,CAACvF,KAAK,CAACuD,GAAN,CAAUsI,UAAX,CAFuB,CAAzB;AAIA,QAAMC,UAAU,GAAGhG,aAAO,CAAC;AACzB,QAAI9F,KAAK,CAAC+L,gBAAV,EAA4B;AAC1B,aAAO,IAAIrD,MAAJ,CAAW;AAAEC,QAAAA,WAAW,EAAE3I,KAAK,CAAC+L;AAArB,OAAX,CAAP;AACD;;AAED,WAAOtD,WAAP;AACD,GANyB,EAMvB,CAACzI,KAAK,CAAC+L,gBAAP,CANuB,CAA1B;AAQA,QAAMzC,KAAK,GAAG0C,iBAAW,CACvB,SAAS1C,KAAT,CAMEJ,QANF,EAOE+C,EAPF,EAQE1C,UAAuE,EARzE;AAUE,UAAM;AAAE2C,MAAAA,QAAF;AAAY,SAAGC;AAAf,QAAgC5C,OAAtC;AACA,WAAO+B,WAAW,CAACc,UAAZ,CACLlD,QADK,EAEL,MAAM4C,UAAU,CAACO,GAAX,CAAe,MAAMJ,EAAE,CAAC;AAAEjC,MAAAA;AAAF,KAAD,CAAvB,EAAwC;AAAEkC,MAAAA;AAAF,KAAxC,CAFD,EAGLC,YAHK,CAAP;AAKD,GAjBsB,EAkBvB,CAACb,WAAD,EAAcQ,UAAd,EAA0B9B,SAA1B,CAlBuB,CAAzB;AAqBA,QAAMsC,SAAS,GAAGN,iBAAW,CAC3B,SAASM,SAAT,CACE3L,UADF,EAEE8G,QAFF,EAGE8B,OAHF;AAKE,UAAMG,OAAO,GAAG,CAAAH,OAAO,QAAP,YAAAA,OAAO,CAAEG,OAAT,KAAoBsB,cAApC;AACA,UAAMpB,aAAa,GAAG,CAAAL,OAAO,QAAP,YAAAA,OAAO,CAAEK,aAAT,KAA0BsB,oBAAhD;AACA,UAAMhC,QAAQ,GAAmB,CAACvI,UAAD,EAAa8G,QAAb,EAAuBiC,OAAvB,EAAgCE,aAAhC,CAAjC;AAEA,WAAON,KAAK,CACVJ,QADU,EAEV,CAAC;AAAEc,MAAAA;AAAF,KAAD;AACE,UAAIrJ,UAAU,KAAK,OAAnB,EAA4B;AAC1B,eAAOqJ,SAAS,CAACF,KAAV,CAAgBlO,GAAhB,CAAoB;AAAE+N,UAAAA,OAAO,EAAElC,QAAX;AAAqBiC,UAAAA,OAArB;AAA8BE,UAAAA;AAA9B,SAApB,CAAP;AACD;;AAED,UAAIjJ,UAAU,KAAK,OAAnB,EAA4B;AAC1B,eAAOqJ,SAAS,CAACuC,KAAV,CAAgB3Q,GAAhB,CAAoB;AAAE4Q,UAAAA,OAAO,EAAE/E,QAAX;AAAqBiC,UAAAA,OAArB;AAA8BE,UAAAA;AAA9B,SAApB,CAAP;AACD;;AAED,YAAM,IAAIhB,gBAAJ,CAAqB,yBAArB,CAAN;AACD,KAZS,EAaVW,OAbU,CAAZ;AAeD,GAzB0B,EA0B3B,CAACD,KAAD,EAAQ0B,cAAR,EAAwBE,oBAAxB,CA1B2B,CAA7B;AA6BA;;;;;;;;AAOA,QAAMxD,yBAAyB,GAAGsE,iBAAW,CAC3C,SAAStE,yBAAT,CACE/G,UADF,EAEE8G,QAFF,EAGE8B,OAHF;AAKE;AACA,UAAMkD,kBAAkB,GAAG,yBAA3B;AAGA;AACA;;AACA,UAAMC,mBAAmB,GAAG,GAA5B;AACA,UAAMhD,OAAO,GAAG,CAAAH,OAAO,QAAP,YAAAA,OAAO,CAAEG,OAAT,KAAoBsB,cAApC;AACA,UAAMpB,aAAa,GAAG,CAAAL,OAAO,QAAP,YAAAA,OAAO,CAAEK,aAAT,KAA0BsB,oBAAhD;AACA,UAAMhC,QAAQ,GAA6B,CACzC,mBADyC,EAEzCvI,UAFyC,EAGzC8L,kBAHyC,EAIzC/C,OAJyC,EAKzCE,aALyC,CAA3C;;AASA,WAAON,KAAK,CACVJ,QADU,EAEV,OAAO;AAAEc,MAAAA;AAAF,KAAP;AACE,YAAM2C,QAAQ,GAAG,MAAM3C,SAAS,CAAC4C,gBAAV,CAA2BzC,OAA3B,CAAmC;AACxDT,QAAAA,OADwD;AAExDU,QAAAA,KAAK,EAAE;AACL,gCAAsBR,aADjB;AAEL,4BAAkB,WAFb;AAGLiD,UAAAA,KAAK,EAAE,uBAHF;AAILxC,UAAAA,KAAK,EAAEqC;AAJF;AAFiD,OAAnC,CAAvB;AAUA,aAAOC,QAAQ,CAACrC,KAAhB;AACD,KAdS,EAeVf,OAfU,CAAL,CAgBLzO,IAhBK,CAgBCwP,KAAD,IAAWA,KAAK,CAAC3O,MAAN,CAAcoC,MAAD,IAAYA,MAAM,CAACsF,MAAP,CAAczI,GAAd,CAAkBC,EAAlB,KAAyB4M,QAAlD,CAhBX,CAAP;AAiBD,GAzC0C,EA0C3C,CAAC6B,KAAD,EAAQ0B,cAAR,EAAwBE,oBAAxB,CA1C2C,CAA7C;AA6CA,QAAM4B,WAAW,GAAGd,iBAAW,CAC7B,SAASc,WAAT,CACEC,YADF,EAEE1D,GAFF,EAGEE,OAHF;AAKE,UAAML,QAAQ,GAAqB,CAAC,UAAD,EAAa6D,YAAb,EAA2B1D,GAA3B,CAAnC;AACA,WAAOC,KAAK,CACVJ,QADU,EAEV;AACE,UAAI6D,YAAY,KAAK,kBAArB,EAAyC;AACvC,eAAO5D,oBAAoB,CAAC;AAC1BG,UAAAA,KAD0B;AAE1BD,UAAAA,GAF0B;AAG1BE,UAAAA;AAH0B,SAAD,CAA3B;AAKD;;AAED,YAAM,IAAIX,gBAAJ,CAAqB,2BAArB,CAAN;AACD,KAZS,EAaVW,OAbU,CAAZ;AAeD,GAtB4B,EAuB7B,CAACD,KAAD,CAvB6B,CAA/B;AA0BA,QAAM0D,yBAAyB,GAAGhB,iBAAW,CAC1C9C,QAAD;AACE,UAAM+D,WAAW,GAAGhE,gBAAgB,CAACC,QAAD,CAApC;AACA,UAAMgE,oBAAoB,GACxBD,WAAW,IAAI/D,QAAQ,CAAC,CAAD,CAAR,KAAgB8B,cAA/B,IAAiDK,cAAc,CAACvP,QAAf,CAAwBoN,QAAQ,CAAC,CAAD,CAAhC,CADnD;AAGA,WAAOgE,oBAAP;AACD,GAP0C,EAQ3C,CAAClC,cAAD,EAAiBK,cAAjB,CAR2C,CAA7C;;AAWA,QAAM8B,eAAe,GAAGnN,KAAK,CAACuD,GAAN,CAAUsG,KAAV,CAAgBsD,eAAxC;AACA,QAAMC,mBAAmB,GAAGpN,KAAK,CAACuD,GAAN,CAAUC,SAAV,CAAoB4J,mBAAhD;AAEAlT,EAAAA,eAAS,CAAC;AACR,aAASmT,oBAAT;AACE,aAAO7B,UAAU,CAAC8B,OAAX,CAAmB;AACxB/H,QAAAA,IAAI,EAAE,QADkB;AAExBgI,QAAAA,SAAS,EAAGnD,KAAD,IAAW4C,yBAAyB,CAAC5C,KAAK,CAAClB,QAAP;AAFvB,OAAnB,CAAP;AAID;;AAED,QAAI,OAAOiE,eAAP,KAA2B,UAA/B,EAA2C;AACzC,aAAOC,mBAAmB,CAAC,CAAC;AAAEI,QAAAA,aAAF;AAAiBC,QAAAA;AAAjB,OAAD;AACzB,YAAID,aAAa,GAAGC,aAApB,EAAmC;AACjCJ,UAAAA,oBAAoB,GAAGzH,OAAvB,CAAgCwE,KAAD;AAC7B;AACA,iBAAKkB,WAAW,CAACoC,iBAAZ,CAA8BtD,KAAK,CAAClB,QAApC,CAAL;AACD,WAHD;AAID;AACF,OAPyB,CAA1B;AAQD;;AAED,UAAMyE,cAAc,GAAG,CAAC;AAAEzE,MAAAA,QAAF;AAAY0E,MAAAA;AAAZ,KAAD;AACrB,YAAM,CAACjN,UAAD,EAAa8G,QAAb,IAAyByB,QAA/B;AACAwC,MAAAA,yBAAyB,CAACtR,OAA1B,CAAkCwT,SAAlC,IAA+CT,eAAe,CAC5DxM,UAD4D,EAE5D8G,QAF4D,EAG3DI,IAAD;AACEyD,QAAAA,WAAW,CAACuC,YAAZ,CAAyB3E,QAAzB,EAAmCrB,IAAnC;AACD,OAL2D,CAA9D;AAOD,KATD;;AAUAwF,IAAAA,oBAAoB,GAAGzH,OAAvB,CAA+B+H,cAA/B;AAEA,UAAMG,WAAW,GAAGtC,UAAU,CAACuC,SAAX,CAAsBC,KAAD;AACvC,UAAI,CAACA,KAAL,EAAY;AACV;AACD;;AAED,YAAM;AAAEzI,QAAAA,IAAF;AAAQ6E,QAAAA;AAAR,UAAkB4D,KAAxB;AACA,YAAM;AAAE9E,QAAAA,QAAF;AAAY0E,QAAAA;AAAZ,UAA0BxD,KAAhC;;AAEA,UAAI,CAAC4C,yBAAyB,CAAC9D,QAAD,CAA9B,EAA0C;AACxC;AACD;;AAED,UAAI3D,IAAI,KAAK,OAAb,EAAsB;AACpBoI,QAAAA,cAAc,CAACvD,KAAD,CAAd;AACD;;AAED,UAAI7E,IAAI,KAAK,SAAb,EAAwB;AAAA;;AACtB;AACA,2DAAAmG,yBAAyB,CAACtR,OAA1B,EAAkCwT,SAAlC;AACD;AACF,KApBmB,CAApB;AAsBA,WAAO;AACLE,MAAAA,WAAW;AACXG,MAAAA,MAAM,CAACC,MAAP,CAAcxC,yBAAyB,CAACtR,OAAxC,EAAiDwL,OAAjD,CAA0DuI,GAAD,IAASA,GAAG,EAArE;AACAzC,MAAAA,yBAAyB,CAACtR,OAA1B,GAAoC,EAApC;AACD,KAJD;AAKD,GA1DQ,EA0DN,CACD+S,eADC,EAED3B,UAFC,EAGDwB,yBAHC,EAID1B,WAJC,EAKDgB,SALC,EAMDc,mBANC,CA1DM,CAAT;AAmEA,SAAO;AACLnC,IAAAA,GAAG,EAAEjL,KAAK,CAACuD,GAAN,CAAU0H,GADV;AAELjB,IAAAA,SAFK;AAGLV,IAAAA,KAHK;AAILwD,IAAAA,WAJK;AAKLR,IAAAA,SALK;AAML5E,IAAAA;AANK,GAAP;AAQD,CAhPiF,EAiPlF,CAAC;AAAE4B,EAAAA;AAAF,CAAD,KAAeA,KAjPmE,EAkPlF,CAAC;AAAEwD,EAAAA,WAAF;AAAeR,EAAAA,SAAf;AAA0B5E,EAAAA;AAA1B,CAAD,MAA4D;AAC1DoF,EAAAA,WAD0D;AAE1DR,EAAAA,SAF0D;AAG1D5E,EAAAA;AAH0D,CAA5D,CAlPkF,EAuPlF,CAAC;AAAEuD,EAAAA;AAAF,CAAD,MAAc;AACZG,EAAAA,WAAW,EAAEH,GAAG,CAACE,gBAAJ,IAAwBF,GAAG,CAACG,WAD7B;AAEZvB,EAAAA,KAAK,EAAEoB,GAAG,CAACpB;AAFC,CAAd,CAvPkF,CAApF;AA6PA,SAAgBuE,UACdzN,YACA8G,UACA8B;AAEA,QAAM;AAAEM,IAAAA,KAAF;AAASuB,IAAAA;AAAT,MAAyBP,aAAa,EAA5C;AACA,QAAM;AAAEyB,IAAAA;AAAF,MAAgB1B,eAAe,EAArC;AACA,QAAM1B,QAAQ,GAAmB,CAC/BvI,UAD+B,EAE/B8G,QAF+B,EAG/B,CAAA8B,OAAO,QAAP,YAAAA,OAAO,CAAEG,OAAT,KAAoBG,KAHW,EAI/B,CAAAN,OAAO,QAAP,YAAAA,OAAO,CAAEK,aAAT,KAA0BwB,WAJK,CAAjC;AAMA,QAAM;AAAEzD,IAAAA,MAAF;AAAUE,IAAAA;AAAV,MAAmBwG,mBAAQ,CAACnF,QAAD,EAAW,MAAMoD,SAAS,CAAC3L,UAAD,EAAa8G,QAAb,EAAuB8B,OAAvB,CAA1B,EAA2D;AAC1F+E,IAAAA,OAAO,EAAE/E,OAAF,oBAAEA,OAAO,CAAE+E;AADwE,GAA3D,CAAjC;AAGA,SAAO;AAAE3G,IAAAA,MAAF;AAAUE,IAAAA;AAAV,GAAP;AACD;AAED,SAAgB0G,YAAYxB,cAA4B1D,KAAaE;AACnE,QAAML,QAAQ,GAAqB,CAAC,UAAD,EAAa6D,YAAb,EAA2B1D,GAA3B,CAAnC;AACA,QAAM;AAAEyD,IAAAA;AAAF,MAAkBlC,eAAe,EAAvC;AACA,QAAM;AAAEjD,IAAAA,MAAF;AAAUE,IAAAA,IAAV;AAAgBG,IAAAA;AAAhB,MAA0BqG,mBAAQ,CACtCnF,QADsC,EAEtC,MAAM4D,WAAW,CAACC,YAAD,EAAe1D,GAAf,EAAoBE,OAApB,CAFqB,EAGtC;AACE+E,IAAAA,OAAO,EAAE/E,OAAF,oBAAEA,OAAO,CAAE+E;AADpB,GAHsC,CAAxC;AAOA,SAAO;AAAE3G,IAAAA,MAAF;AAAUE,IAAAA,IAAV;AAAgBG,IAAAA;AAAhB,GAAP;AACD;;AAED,SAASwG,cAAT,CAAwB;AAAErV,EAAAA,QAAF;AAAY,KAAG6G;AAAf,CAAxB;AACE,QAAMyO,gBAAgB,GAAG3I,aAAO,CAAC;AAC/B,UAAM0F,UAAU,GAAG,IAAIkD,qBAAJ,EAAnB;AACA,UAAMpD,WAAW,GAAG,IAAIqD,sBAAJ,CAAgB;AAClCnD,MAAAA,UADkC;AAElCoD,MAAAA,cAAc,EAAE;AACdC,QAAAA,OAAO,EAAE;AACPC,UAAAA,gBAAgB,EAAE,KADX;AAEPC,UAAAA,oBAAoB,EAAE,KAFf;AAGPC,UAAAA,kBAAkB,EAAE,IAHb;AAIPC,UAAAA,cAAc,EAAE,KAJT;AAKPC,UAAAA,SAAS,EAAEnK,QALJ;AAMPoK,UAAAA,KAAK,EAAE;AANA;AADK;AAFkB,KAAhB,CAApB;AAcA,WAAO7D,WAAP;AACD,GAjB+B,EAiB7B,EAjB6B,CAAhC;AAmBA,SACEpQ,4BAAA,CAACkU,8BAAD;AAAqBC,IAAAA,MAAM,EAAEZ;GAA7B,EACEvT,4BAAA,CAACwP,uBAAD,OAA6B1K;GAA7B,EAAqC7G,QAArC,CADF,CADF;AAKD;;SCrbemW,gBACdtP;AAIA,SACE9E,mBAAA,CAACsT,cAAD;AAAgBjL,IAAAA,GAAG,EAAEvD,KAAK,CAACuD;GAA3B,EACErI,mBAAA,CAACqU,gCAAD;AACEC,IAAAA,QAAQ,EAAE;AACVxL,IAAAA,KAAK,EAAEhE,KAAK,CAACuD,GAAN,CAAUS;AACjByL,IAAAA,mBAAmB,EAAEzP,KAAK,CAACyP;AAC3BC,IAAAA,aAAa,EAAE,CAACC,MAAD,EAASC,MAAT;AACb,aAAOC,SAAS,CAACF,MAAD,EAASC,MAAT,CAAhB;AACD;GANH,EAQG5P,KAAK,CAAC7G,QART,CADF,CADF;AAcD;AAEDmW,eAAe,CAAC5R,YAAhB,GAA+B;AAC7B+R,EAAAA,mBAAmB,EAAE,IADQ;AAE7BK,EAAAA,kBAAkB,EAAE;AAFS,CAA/B;;SCjDgBC,qBAAqB/L;;;AACnC;AACA,QAAMK,WAAW,GAA0B,CACzC,GAAGL,KAAK,CAACK,WADgC,EAEzC,IAAI,iBAAAL,KAAK,CAACsG,KAAN,kCAAajG,WAAb,KAA4B,EAAhC,CAFyC,CAA3C;AAIA,QAAM2L,0BAA0B,GAAG3L,WAAW,CAAC7I,IAAZ,CAAkByU,CAAD,IAAO,qBAAqBA,CAA7C,CAAnC;AACA,QAAMC,4BAA4B,GAAG7L,WAAW,CAAC7I,IAAZ,CAAkByU,CAAD,IAAO,uBAAuBA,CAA/C,CAArC;AACA,QAAME,eAAe,GAAG9L,WAAW,CAAC7I,IAAZ,CAAkByU,CAAD,IAAO,UAAUA,CAAlC,CAAxB;AACA,QAAM1Q,IAAI,GAAI4Q,eAAe,IAAIA,eAAe,CAAC5Q,IAApC,IAA6C,EAA1D;AACA,QAAMoF,GAAG,GAAGpF,IAAI,CAACoF,GAAjB;AACA,QAAME,GAAG,GAAGtF,IAAI,CAACsF,GAAjB;AAEA,MAAIC,aAAa,GAAwCrI,SAAzD;;AAEA,MAAI2T,QAAQ,CAACzL,GAAD,CAAR,IAAiByL,QAAQ,CAACvL,GAAD,CAA7B,EAAoC;AAClCC,IAAAA,aAAa,GAAG;AACdS,MAAAA,IAAI,EAAE,SADQ;AAEdZ,MAAAA,GAFc;AAGdE,MAAAA;AAHc,KAAhB;AAKD,GAND,MAMO,IAAIuL,QAAQ,CAACzL,GAAD,CAAZ,EAAmB;AACxBG,IAAAA,aAAa,GAAG;AACdS,MAAAA,IAAI,EAAE,KADQ;AAEdZ,MAAAA,GAFc;AAGdE,MAAAA,GAAG,EAAEpI;AAHS,KAAhB;AAKD,GANM,MAMA,IAAI2T,QAAQ,CAACvL,GAAD,CAAZ,EAAmB;AACxBC,IAAAA,aAAa,GAAG;AACdS,MAAAA,IAAI,EAAE,KADQ;AAEdV,MAAAA,GAFc;AAGdF,MAAAA,GAAG,EAAElI;AAHS,KAAhB;AAKD;;AAED,QAAM4T,MAAM,GAAyB;AACnCzX,IAAAA,YAAY,EAAE,CAAAoX,0BAA0B,QAA1B,YAAAA,0BAA0B,CAAEM,eAA5B,KAA+C7T,SAD1B;AAEnC2H,IAAAA,cAAc,EAAE,CAAA8L,4BAA4B,QAA5B,YAAAA,4BAA4B,CAAEK,iBAA9B,KAAmD9T,SAFhC;AAGnCqI,IAAAA,aAHmC;AAKnC;AACA;;AANmC,GAArC;AASA,SAAOuL,MAAP;AACD;;AC9CD,MAAMG,yBAAyB,GAAuD,MACpFtP,OAAO,CAACC,OAAR,CAAgB,IAAhB,CADF;;AAGA,SAAgBsP,aAAaC;AAC3B,QAAMC,gBAAgB,GAAGD,SAAS,CAACE,GAAnC;AACA,QAAMC,6BAA6B,GACjCH,SAAS,CAACG,6BAAV,IAA2CL,yBAD7C;AAGA,SAAO;AAAEG,IAAAA,gBAAF;AAAoBE,IAAAA;AAApB,GAAP;AACD;;ACDD,eAAelV,MAAf,CAAsCmV,GAAtC,EAAgDvD,SAAhD;AACE;AACA,QAAMwD,IAAI,GAAGC,MAAM,EAAnB;AACA,QAAMC,OAAO,GAAG,MAAM/P,OAAO,CAAC6I,GAAR,CACpB+G,GAAG,CAACxT,GAAJ,CAAQ,MAAO5C,IAAP,IAAiB,CAAC,MAAM6S,SAAS,CAAC7S,IAAD,CAAhB,IAA0BA,IAA1B,GAAiCqW,IAA1D,CADoB,CAAtB;AAIA,SAAOE,OAAO,CAACtV,MAAR,CAAgBuV,CAAD,IAAOA,CAAC,KAAKH,IAA5B,CAAP;AACD;;AAED,SAAgBI,0BACdnR;AAEA,QAAMoR,qBAAqB,GAAGtL,aAAO,CAAC;AACpC,QAAI9F,KAAK,CAACW,UAAN,KAAqB,OAAzB,EAAkC;AAChC,aAAO,EAAP;AACD;;AAED,QAAIX,KAAK,CAACqE,WAAN,CAAkBzL,YAAtB,EAAoC;AAClC,aAAOoH,KAAK,CAACqR,eAAN,CAAsB1V,MAAtB,CAA8BF,EAAD;AAAA;;AAAA,wCAClCuE,KAAK,CAACqE,WAAN,CAAkBzL,YADgB,qBAClC,sBAAgCkD,QAAhC,CAAyCL,EAAE,CAACb,GAAH,CAAOC,EAAhD,CADkC;AAAA,OAA7B,CAAP;AAGD;;AAED,WAAOmF,KAAK,CAACqR,eAAb;AACD,GAZoC,EAYlC,CAACrR,KAAK,CAACqR,eAAP,EAAwBrR,KAAK,CAACqE,WAAN,CAAkBzL,YAA1C,EAAwDoH,KAAK,CAACW,UAA9D,CAZkC,CAArC;AAaA,QAAM,CAACoF,qBAAD,EAAwBuL,wBAAxB,IAAoDhY,cAAQ,CAAC8X,qBAAD,CAAlE;AACA,QAAM,CAAClN,oBAAD,EAAuBqN,uBAAvB,IAAkDjY,cAAQ,CAAC8X,qBAAD,CAAhE;AACA,QAAM;AAAEP,IAAAA;AAAF,MAAoCJ,YAAY,CAACzQ,KAAK,CAACuD,GAAN,CAAUiO,MAAX,CAAtD;AAEAtX,EAAAA,eAAS,CAAC;AACR,aAASuX,eAAT,CAAyB1T,MAAzB;AACE,aAAOpC,MAAM,CAACyV,qBAAD,EAAyB3V,EAAD,IACnCoV,6BAA6B,CAAC9S,MAAD,EAAStC,EAAE,CAACb,GAAH,CAAOC,EAAhB,CADlB,CAAb;AAGD;;AAED,mBAAe6W,sBAAf;AACE,YAAMC,SAAS,GAAG,MAAMF,eAAe,CAAC,QAAD,CAAvC;AACA,YAAMG,QAAQ,GAAG,MAAMH,eAAe,CAAC,MAAD,CAAtC;AACAH,MAAAA,wBAAwB,CAACK,SAAD,CAAxB;AACAJ,MAAAA,uBAAuB,CAACK,QAAD,CAAvB;AACD;;AAED,SAAKF,sBAAsB,EAA3B;AAED,GAhBQ,EAgBN,CAACN,qBAAD,CAhBM,CAAT;AAkBA,SAAO;AACLrL,IAAAA,qBADK;AAEL7B,IAAAA,oBAFK;AAGLkN,IAAAA;AAHK,GAAP;AAKD;;SC3DeS,qBAAqB7R;AACnC,QAAM;AAAEuD,IAAAA,GAAF;AAAO5C,IAAAA,UAAP;AAAmBmR,IAAAA;AAAnB,MAAkC9R,KAAxC;AACA,QAAMqE,WAAW,GAAGyB,aAAO,CAAC,MAAMiK,oBAAoB,CAAC/P,KAAK,CAACuD,GAAN,CAAUS,KAAX,CAA3B,EAA8C,CAAChE,KAAK,CAACuD,GAAN,CAAUS,KAAX,CAA9C,CAA3B;AACA,QAAM,CAAClD,eAAD,EAAkBiR,kBAAlB,IAAwCzY,cAAQ,CAAC,IAAD,CAAtD;AACA,QAAM,CAAC8H,aAAD,EAAgB4Q,gBAAhB,IAAoC1Y,cAAQ,CAAC,IAAD,CAAlD;AACA,QAAM;AAAEyM,IAAAA,qBAAF;AAAyB7B,IAAAA,oBAAzB;AAA+CkN,IAAAA;AAA/C,MACJD,yBAAyB,CAAC,EAAE,GAAGnR,KAAL;AAAYqE,IAAAA;AAAZ,GAAD,CAD3B;AAEA,QAAM;AAAEsM,IAAAA;AAAF,MAAuBF,YAAY,CAAClN,GAAG,CAACiO,MAAL,CAAzC;AAEAtX,EAAAA,eAAS,CAAC;AACR,QAAI4X,UAAU,CAACG,QAAX,CAAoBC,sBAApB,KAA+C,KAAnD,EAA0D;AACxDH,MAAAA,kBAAkB,CAAC,KAAD,CAAlB;AACA;AACD;;AAED,mBAAeI,iBAAf;AACE,UAAIxR,UAAU,KAAK,OAAnB,EAA4B;AAC1B;AACA;AACA,cAAMyR,SAAS,GAAG,CAAC,MAAMzB,gBAAgB,CAAC,QAAD,EAAW,OAAX,CAAvB,KAA+C,IAAjE;AACAoB,QAAAA,kBAAkB,CAACK,SAAD,CAAlB;AACD;;AACD,UAAIzR,UAAU,KAAK,OAAnB,EAA4B;AAC1B;AACA;AACA,cAAMyR,SAAS,GAAGrM,qBAAqB,CAAC/L,MAAtB,GAA+B,CAA/B,IAAoC,IAAtD;AACA+X,QAAAA,kBAAkB,CAACK,SAAD,CAAlB;AACD;AACF;;AAED,SAAKD,iBAAiB,EAAtB;AAED,GAvBQ,EAuBN,CAACxR,UAAD,EAAamR,UAAU,CAACG,QAAxB,EAAkClM,qBAAlC,CAvBM,CAAT;AAyBA7L,EAAAA,eAAS,CAAC;AACR,QAAI4X,UAAU,CAACG,QAAX,CAAoBI,oBAApB,KAA6C,KAAjD,EAAwD;AACtDL,MAAAA,gBAAgB,CAAC,KAAD,CAAhB;AACA;AACD;;AAED,mBAAeM,eAAf;AACE,UAAI3R,UAAU,KAAK,OAAnB,EAA4B;AAC1B;AACA;AACA,cAAM4R,OAAO,GAAG,CAAC,MAAM5B,gBAAgB,CAAC,MAAD,EAAS,OAAT,CAAvB,KAA6C,IAA7D;AACAqB,QAAAA,gBAAgB,CAACO,OAAD,CAAhB;AACD;;AACD,UAAI5R,UAAU,KAAK,OAAnB,EAA4B;AAC1B;AACA;AACA;AACA;AACA,cAAM4R,OAAO,GAAG,IAAhB;AACAP,QAAAA,gBAAgB,CAACO,OAAD,CAAhB;AACD;AACF;;AAED,SAAKD,eAAe,EAApB;AAED,GAzBQ,EAyBN,CAAC3R,UAAD,EAAamR,UAAU,CAACG,QAAxB,EAAkC/N,oBAAlC,CAzBM,CAAT;AA2BA,SAAO;AACLpD,IAAAA,eADK;AAELM,IAAAA,aAFK;AAGL2E,IAAAA,qBAHK;AAIL7B,IAAAA,oBAJK;AAKLkN,IAAAA,qBALK;AAML/M,IAAAA;AANK,GAAP;AAQD;;AC1DD,SAASmO,MAAT,CAAgBxS,KAAhB;AACE,QAAM;AAAEyS,IAAAA,QAAF;AAAY9R,IAAAA;AAAZ,MAA2BX,KAAjC;AACA,QAAMiE,iBAAiB,GAAG4N,oBAAoB,CAAC7R,KAAD,CAA9C;AAEA,QAAMgB,QAAQ,GAAGgL,iBAAW,CACzBnR,EAAD,IAAgB,KAAK4X,QAAQ,CAAC;AAAE7X,IAAAA,GAAG,EAAE;AAAE2K,MAAAA,IAAI,EAAE,MAAR;AAAgBmN,MAAAA,QAAQ,EAAE/R,UAA1B;AAAsC9F,MAAAA;AAAtC;AAAP,GAAD,CADH,EAE1B,CAAC4X,QAAD,EAAW9R,UAAX,CAF0B,CAA5B;AAIA,QAAMgF,MAAM,GAAGqG,iBAAW,CACvBf,GAAD;AACE,UAAM,CAACpQ,EAAD,IAAOoQ,GAAb;AACAwH,IAAAA,QAAQ,CAAC;AAAE7X,MAAAA,GAAG,EAAE;AAAE2K,QAAAA,IAAI,EAAE,MAAR;AAAgBmN,QAAAA,QAAQ,EAAE/R,UAA1B;AAAsC9F,QAAAA;AAAtC;AAAP,KAAD,CAAR;AACD,GAJuB,EAKxB,CAAC4X,QAAD,EAAW9R,UAAX,CALwB,CAA1B;AAQA,QAAMgS,gBAAgB,GAAGzN,mBAAmB,CAAC,EAC3C,GAAGlF,KADwC;AAE3CE,IAAAA,eAAe,EAAE,KAF0B;AAG3C+D,IAAAA,iBAH2C;AAI3CjD,IAAAA,QAJ2C;AAK3C2E,IAAAA;AAL2C,GAAD,CAA5C;;AAQA,QAAMiN,kBAAkB,GAAG5G,iBAAW,CACpC,CAAC6G,SAAD,EAAmCC,CAAnC,EAAsCC,iBAAtC,KACE/S,KAAK,CAACgT,gBAAN,GACIhT,KAAK,CAACgT,gBAAN,CAAuBH,SAAvB,EAAkCF,gBAAlC,EAAoDI,iBAApD,CADJ,GAEI,KAJ8B;AAMpC,GAACJ,gBAAD,CANoC,CAAtC;;AASA,MAAI,CAAC3S,KAAK,CAACyH,QAAX,EAAqB;AACnB,WACEvM,mBAAA,CAAC+K,iBAAD;AAAmBC,MAAAA,mBAAmB,EAAElG,KAAK,CAACkG;SAAyByM;KAAvE,CADF;AAGD;;AAED,SAAO3S,KAAK,CAAC7G,QAAN,CAAe,EACpB,GAAG6G,KADiB;AAEpBgT,IAAAA,gBAAgB,EAAEhT,KAAK,CAACgT,gBAAN,IAA0BJ;AAFxB,GAAf,CAAP;AAID;;AAED,SAAgBK,sBACdjT;AAKA,QAAMqR,eAAe,GAAGrR,KAAK,CAACuD,GAAN,CAAUsG,KAAV,CAAgBqJ,qBAAhB,EAAxB;AAEA,SACEhY,mBAAA,CAACoU,eAAD,OAAqCtP;GAArC,EACG,CAAC;AAAEjD,IAAAA,KAAF;AAAS0V,IAAAA,QAAT;AAAmBjU,IAAAA,QAAnB;AAA6B2U,IAAAA;AAA7B,GAAD;AACC,WACEjY,mBAAA,CAACsX,MAAD,OACMxS;AACJvC,MAAAA,GAAG,KAAK0V;AACR1L,MAAAA,QAAQ,EAAE1K,KAAK,GAAGA,KAAK,CAACnC,GAAN,CAAUC,EAAb,GAAkB;AACjCwE,MAAAA,UAAU,EAAEb;AACZiU,MAAAA,QAAQ,EAAEA;AACVpB,MAAAA,eAAe,EAAEA;KANnB,CADF;AAUD,GAZH,CADF;AAgBD;AAED4B,qBAAqB,CAACvV,YAAtB,GAAqC;AACnCoS,EAAAA,kBAAkB,EAAE,IADe;AAEnCsD,EAAAA,oBAAoB,EAAE;AAFa,CAArC;;ACtFA,MAAMrc,QAAM,GAAG;AACbsc,EAAAA,SAAS,eAAEpc,WAAG,CAAC;AACbqc,IAAAA,UAAU,EAAE,CADC;AAEbnb,IAAAA,IAAI,EAAEd,MAAM,CAACkc;AAFA,GAAD,CADD;AAKbC,EAAAA,SAAS,eAAEvc,WAAG,CAAC;AACbwc,IAAAA,KAAK,EAAEpc,MAAM,CAACqc,OADD;AAEbC,IAAAA,QAAQ,EAAEtc,MAAM,CAACuc,SAFJ;AAGb1V,IAAAA,UAAU,EAAE7G,MAAM,CAACwc,kBAHN;AAIb1V,IAAAA,QAAQ,EAAE,MAJG;AAKbzG,IAAAA,YAAY,EAAE,UALD;AAMboc,IAAAA,QAAQ,EAAE,QANG;AAObC,IAAAA,UAAU,EAAE;AAPC,GAAD;AALD,CAAf;AAgBA,SAAgBC,UAAUhU;AACxB,SACE9E,mBAAA,CAACmM,qBAAD;AAASpL,IAAAA,SAAS,EAAC;AAAMqL,IAAAA,EAAE,EAAC;AAAMC,IAAAA,OAAO,YAAYvH,KAAK,CAACwT;GAA3D,EACEtY,mBAAA,CAACyH,kBAAD;AAAML,IAAAA,UAAU,EAAC;AAAS2R,IAAAA,GAAG,EAAC;AAAYpW,IAAAA,WAAW,EAAC;GAAtD,EACE3C,mBAAA,CAACgZ,8BAAD;AAAuBnY,IAAAA,SAAS,EAAEhF,QAAM,CAACsc;AAAW9T,IAAAA,IAAI,EAAC;kBAAkB;GAA3E,CADF,EAEErE,mBAAA,CAACiZ,kBAAD;AAAMpY,IAAAA,SAAS,EAAEhF,QAAM,CAACyc;GAAxB,EAAoCxT,KAAK,CAACwT,SAA1C,CAFF,CADF,CADF;AAQD;;ACvBD,MAAM;AAAEY,EAAAA,aAAF;AAAiBC,EAAAA,oBAAjB;AAAuCC,EAAAA,cAAvC;AAAuDC,EAAAA;AAAvD,IAAyEC,+BAA/E;AAEA,MAAMzd,QAAM,GAAG;AACb0d,EAAAA,YAAY,eAAExd,WAAG,CAAC;AAChB4G,IAAAA,WAAW,EAAExG,MAAM,CAACC;AADJ,GAAD;AADJ,CAAf;AA8BA,MAAMoG,YAAY,GAAG;AACnBgX,EAAAA,WAAW,EAAE,IADM;AAEnB5E,EAAAA,kBAAkB,EAAE,IAFD;AAGnB6E,EAAAA,kBAAkB,EAAE,IAHD;AAInBvB,EAAAA,oBAAoB,EAAE;AAJH,CAArB;AAOA,SAAgBwB,iBAAiB5U;;;AAC/B,QAAM,CAACqI,IAAD,EAAOwM,OAAP,IAAkB3Z,cAAA,CAA4B,IAA5B,CAAxB;AAEA,QAAM;AAAEqC,IAAAA;AAAF,MAAkByC,KAAxB;AAEA9E,EAAAA,eAAA,CAAgB;AACd,QAAI8E,KAAK,CAAC8J,KAAV,EAAiB;AACfyK,MAAAA,aAAa,CACX;AACEzK,QAAAA,KAAK,EAAE9J,KAAK,CAAC8J,KADf;AAEEvM,QAAAA,WAFF;AAGEuX,QAAAA,UAAU,EAAE9U,KAAK,CAAC8U,UAHpB;AAIE7K,QAAAA,iBAAiB,EAAEjK,KAAK,CAACiK;AAJ3B,OADW,EAOXjK,KAAK,CAAC+U,QAPK,CAAb,CASGja,IATH,CASSuN,IAAD;AACJwM,QAAAA,OAAO,CAACxM,IAAD,CAAP;AACD,OAXH,EAYGN,KAZH,CAYS;AACL8M,QAAAA,OAAO,CAAC,IAAD,CAAP;AACD,OAdH;AAeD;AACF,GAlBD,EAkBG,CAAC7U,KAAK,CAAC8J,KAAP,EAAc9J,KAAK,CAAC+U,QAApB,EAA8BxX,WAA9B,EAA2CyC,KAAK,CAAC8U,UAAjD,EAA6D9U,KAAK,CAACiK,iBAAnE,CAlBH;AAoBA,QAAMtC,MAAM,GAAG2M,cAAc,iBAACtU,KAAK,CAAC8J,KAAP,qBAAC,aAAalP,GAAd,CAA7B;;AAEA,MAAI+M,MAAM,KAAK,SAAf,EAA0B;AACxB,WACEzM,mBAAA,CAACuH,iBAAD;AACE9B,MAAAA,UAAU,EAAC;AACXtB,MAAAA,UAAU,EAAEW,KAAK,CAACX;AAClB0D,MAAAA,QAAQ,EAAE/C,KAAK,CAAC+C;KAHlB,CADF;AAOD;;AAED,QAAMiS,KAAK,GAAGZ,aAAa,CAAC;AAC1BtK,IAAAA,KAAK,EAAE9J,KAAK,CAAC8J,KADa;AAE1BvM,IAAAA,WAF0B;AAG1BuX,IAAAA,UAAU,EAAE9U,KAAK,CAAC8U,UAHQ;AAI1B7K,IAAAA,iBAAiB,EAAEjK,KAAK,CAACiK,iBAJC;AAK1BgL,IAAAA,YAAY,EAAE;AALY,GAAD,CAA3B;AAQA,QAAMC,WAAW,GAAGb,oBAAoB,CAAC;AACvChR,IAAAA,MAAM,EAAErD,KAAK,CAAC8J,KADyB;AAEvCvM,IAAAA,WAFuC;AAGvCuX,IAAAA,UAAU,EAAE9U,KAAK,CAAC8U,UAHqB;AAIvC7K,IAAAA,iBAAiB,EAAEjK,KAAK,CAACiK;AAJc,GAAD,CAAxC;AAOA,SACE/O,mBAAA,CAACia,uBAAD;AACE7N,IAAAA,EAAE,EAAEtH,KAAK,CAACoV,QAAN,GAAiB,GAAjB,GAAuB;AAC3BC,IAAAA,IAAI,EAAErV,KAAK,CAACoV;AACZJ,IAAAA,KAAK,EAAEA;AACPE,IAAAA,WAAW,EAAEA;AACb3X,IAAAA,WAAW,EAAEA,WAAF,oBAAEA,WAAW,CAAEqB;AAC1BW,IAAAA,IAAI,EAAES,KAAK,CAACT;AACZ+V,IAAAA,UAAU,EAAEtV,KAAK,CAACsV;AAClB3N,IAAAA,MAAM,EAAEA;AACR1E,IAAAA,IAAI,EACFjD,KAAK,CAACwT,SAAN,GACEtY,mBAAA,CAAC8Y,SAAD;AAAWR,MAAAA,SAAS,EAAExT,KAAK,CAACwT;KAA5B,CADF,GAGEtY,mBAAA,CAACsM,wBAAD;AACEE,MAAAA,yBAAyB,EAAE1H,KAAK,CAAC0H;AACjC/G,MAAAA,UAAU,EAAC;AACX8G,MAAAA,QAAQ,EAAEzH,KAAK,CAAC8J,KAAN,CAAYlP,GAAZ,CAAgBC;KAH5B,EAIEK,mBAAA,CAACqa,kBAAD;AACExZ,MAAAA,SAAS,EAAEhF,QAAM,CAAC0d;AAClBlV,MAAAA,IAAI,EAAC;AACLH,MAAAA,OAAO,EAAC;AACRpG,MAAAA,MAAM,EAAC;KAJT,CAJF;AAaJwc,IAAAA,gBAAgB,EAAEnN,IAAI,IAAIoN,8BAAY,CAACpN,IAAD,CAApB,GAA6BnN,mBAAA,CAACiN,cAAD;AAAgBE,MAAAA,IAAI,EAAEA;KAAtB,CAA7B,GAA8D5L;AAChFiZ,IAAAA,gBAAgB,EAAE1V,KAAK,CAAC2V;AACxBC,IAAAA,cAAc,EAAE,CAAC,CAAC5V,KAAK,CAAC2V;AACxBE,IAAAA,OAAO,EACL7V,KAAK,CAAC8V,MAAN,IAAgB9V,KAAK,CAAC+C,QAAtB,GACI,CACE/C,KAAK,CAAC8P,kBAAN,IAA4B9P,KAAK,CAAC8V,MAAlC,GACE5a,mBAAA,CAAC6a,sBAAD;AACEtY,MAAAA,GAAG,EAAC;AACJzE,MAAAA,MAAM,EAAC;AACPqE,MAAAA,OAAO,EAAE;AACP2C,QAAAA,KAAK,CAAC8V,MAAN,IAAgB9V,KAAK,CAAC8V,MAAN,EAAhB;AACD;KALH,QAAA,CADF,GASI,IAVN,EAWE9V,KAAK,CAACoT,oBAAN,IAA8BpT,KAAK,CAAC+C,QAApC,GACE7H,mBAAA,CAAC6a,sBAAD;AACEtY,MAAAA,GAAG,EAAC;AACJzE,MAAAA,MAAM,EAAC;AACPqE,MAAAA,OAAO,EAAE;AACP2C,QAAAA,KAAK,CAAC+C,QAAN,IAAkB/C,KAAK,CAAC+C,QAAN,EAAlB;AACD;KALH,UAAA,CADF,GASI,IApBN,EAqBE/C,KAAK,CAAC2U,kBAAN,KAA6B3U,KAAK,CAACgW,SAAN,IAAmBhW,KAAK,CAACiW,YAAtD,IACE/a,mBAAA,CAACgb,yBAAD;AAAazY,MAAAA,GAAG,EAAC;KAAjB,CADF,GAEI,IAvBN,EAwBEuC,KAAK,CAAC2U,kBAAN,IAA4B3U,KAAK,CAACgW,SAAlC,GACE9a,mBAAA,CAAC6a,sBAAD;AACEtY,MAAAA,GAAG,EAAC;AACJJ,MAAAA,OAAO,EAAE,MAAM2C,KAAK,CAACgW,SAAN,IAAmBhW,KAAK,CAACgW,SAAN;AAClChd,MAAAA,MAAM,EAAC;KAHT,eAAA,CADF,GAOI,IA/BN,EAgCEgH,KAAK,CAAC2U,kBAAN,IAA4B3U,KAAK,CAACiW,YAAlC,GACE/a,mBAAA,CAAC6a,sBAAD;AACEtY,MAAAA,GAAG,EAAC;AACJJ,MAAAA,OAAO,EAAE,MAAM2C,KAAK,CAACiW,YAAN,IAAsBjW,KAAK,CAACiW,YAAN;AACrCjd,MAAAA,MAAM,EAAC;KAHT,kBAAA,CADF,GAOI,IAvCN,EAwCE2C,MAxCF,CAwCUjB,IAAD,IAAUA,IAxCnB,CADJ,GA0CI;AAEN2C,IAAAA,OAAO;AAEL;AACA;AACA;AACA2C,IAAAA,KAAK,CAAC0U,WAAN,GACKzX,CAAD;AACEA,MAAAA,CAAC,CAACkZ,cAAF;AACA,UAAInW,KAAK,CAAC3C,OAAV,EAAmB,OAAO2C,KAAK,CAAC3C,OAAN,CAAcJ,CAAd,CAAP;AACnB+C,MAAAA,KAAK,CAAC8V,MAAN,IAAgB9V,KAAK,CAAC8V,MAAN,EAAhB;AACD,KALL,GAMIrZ;GArFR,CADF;AA0FD;AAEDmY,gBAAgB,CAAClX,YAAjB,GAAgCA,YAAhC;;ACnKA,eAAe0Y,SAAf,CACE7S,GADF,EAEEoG,OAFF,EAGEJ,OAHF;AAKE,MAAIjG,KAAJ;;AAEA,MAAIiG,OAAO,CAAC8M,WAAZ,EAAyB;AACvB,QAAI;AACF,YAAMhG,MAAM,GAAG,MAAM9M,GAAG,CAACC,SAAJ,CAAc8S,cAAd,CAA6B/S,GAAG,CAACuG,KAAJ,CAAUyM,MAAV,GAAmB1b,EAAhD,EAAoD;AACvE2b,QAAAA,OAAO,EAAEjT,GAAG,CAACS,KAAJ,CAAUnJ,EADoD;AAEvEkJ,QAAAA,MAAM,EAAER,GAAG,CAACS,KAAJ,CAAUD,MAFqD;AAGvEsB,QAAAA,KAAK,EAAEkE,OAAO,CAAClE,KAAR,IAAiB;AAH+C,OAApD,CAArB;AAKA/B,MAAAA,KAAK,GAAG+M,MAAM,CAAC/M,KAAf;AACA,aAAOA,KAAP;AACD,KARD,CAQE,OAAOrG,CAAP,EAAU;AAEV;AACD;AACF;;AAED,QAAMoT,MAAM,GAAG,MAAM9M,GAAG,CAACC,SAAJ,CAAc4S,SAAd,CAAwBzM,OAAxB,EAAiC;AACpDjG,IAAAA,OAAO,EAAE;AAD2C,GAAjC,CAArB;AAGAJ,EAAAA,KAAK,GAAG+M,MAAM,CAAC/M,KAAf;AAEA,SAAOA,KAAP;AACD;;AAED,SAAgBmT,yBAAyBzW;AACvC,QAAM;AAAE6H,IAAAA,IAAI,EAAEiC,KAAR;AAAenC,IAAAA;AAAf,MAA0ByG,SAAS,CAAQ,OAAR,EAAiBpO,KAAK,CAAC2J,OAAvB,CAAzC;AACA,QAAM;AAAEjC,IAAAA;AAAF,MAAgCkD,eAAe,EAArD;AACA,QAAM8L,0BAA0B,GAAGxb,iBAAA,CACjC,MAAMwM,yBAAyB,CAAC,OAAD,EAAU1H,KAAK,CAAC2J,OAAhB,CADE,EAEjC,CAACjC,yBAAD,EAA4B1H,KAAK,CAAC2J,OAAlC,CAFiC,CAAnC;AAKA,QAAMpK,IAAI,GAAGS,KAAK,CAAC2W,QAAN,KAAmB,MAAnB,GAA4B,OAA5B,GAAsC,SAAnD;AACA,QAAM;AAAErK,IAAAA;AAAF,MAAgB1B,eAAe,EAArC;;AACA,QAAMmK,QAAQ,GAAIvI,OAAD,IAAqBF,SAAS,CAAC,OAAD,EAAUE,OAAV,CAA/C;;AAEA,QAAMsJ,MAAM,GAAG;AACb,UAAMxS,KAAK,GAAG,MAAM8S,SAAS,CAACpW,KAAK,CAACuD,GAAP,EAAYvD,KAAK,CAAC2J,OAAlB,EAA2B;AACtD0M,MAAAA,WAAW,EAAErW,KAAK,CAAC8R,UAAN,CAAiBG,QAAjB,CAA0BoE,WADe;AAEtDhR,MAAAA,KAAK,EAAErF,KAAK,CAACqF;AAFyC,KAA3B,CAA7B;AAIArF,IAAAA,KAAK,CAACsF,QAAN,IACEtF,KAAK,CAACsF,QAAN,CAAe;AACbjC,MAAAA,MAAM,EAAE,OADK;AAEbkC,MAAAA,IAAI,EAAE,MAFO;AAGb1K,MAAAA,EAAE,EAAEmF,KAAK,CAAC2J,OAHG;AAIb5I,MAAAA,aAAa,EAAEnF,GAAG,CAACkO,KAAD,EAAQ,wBAAR,CAJL;AAKbxG,MAAAA;AALa,KAAf,CADF;AAQD,GAbD;;AAeA,QAAMsT,aAAa,GAAG;AACpB5W,IAAAA,KAAK,CAAC+C,QAAN;AACA/C,IAAAA,KAAK,CAACsF,QAAN,IACEtF,KAAK,CAACsF,QAAN,CAAe;AACbjC,MAAAA,MAAM,EAAE,OADK;AAEbkC,MAAAA,IAAI,EAAE,QAFO;AAGb1K,MAAAA,EAAE,EAAEmF,KAAK,CAAC2J,OAHG;AAIb5I,MAAAA,aAAa,EAAEnF,GAAG,CAACkO,KAAD,EAAQ,wBAAR;AAJL,KAAf,CADF;AAOD,GATD;;AAWA5O,EAAAA,eAAA,CAAgB;AACd,QAAI4O,KAAJ,EAAW;AACT9J,MAAAA,KAAK,CAACsF,QAAN,IAAkBtF,KAAK,CAACsF,QAAN,CAAe;AAAEC,QAAAA,IAAI,EAAE,UAAR;AAAoBlC,QAAAA,MAAM,EAAE;AAA5B,OAAf,CAAlB;AACD;;AAEF,GALD,EAKG,CAACyG,KAAD,CALH;AAOA,SAAO5O,aAAA,CAAc;AACnB,QAAIyM,MAAM,KAAK,OAAf,EAAwB;AACtB,YAAMvF,IAAI,GACRlH,mBAAA,CAACuH,iBAAD;AACE9B,QAAAA,UAAU,EAAC;AACXtB,QAAAA,UAAU,EAAEW,KAAK,CAACX;AAClB0D,QAAAA,QAAQ,EAAE6T;OAHZ,CADF;;AAOA,UAAI5W,KAAK,CAAC6W,6BAAV,EAAyC;AACvC,eAAO7W,KAAK,CAAC6W,6BAAN,CAAoC;AACzCC,UAAAA,WAAW,EAAE1U,IAD4B;AAEzCiB,UAAAA,MAAM,EAAE;AACNxI,YAAAA,EAAE,EAAEmF,KAAK,CAAC2J,OADJ;AAENpE,YAAAA,IAAI,EAAE;AAFA;AAFiC,SAApC,CAAP;AAOD;;AACD,aAAOnD,IAAP;AACD;;AACD,QAAIuF,MAAM,KAAK,SAAf,EAA0B;AACxB,aAAOzM,mBAAA,CAACia,uBAAD;AAAW5V,QAAAA,IAAI,EAAEA;AAAMC,QAAAA,SAAS;OAAhC,CAAP;AACD;;AACD,UAAMuX,eAAe,GAA0B;AAC7C1R,MAAAA,KAAK,EAAErF,KAAK,CAACqF,KADgC;AAE7ChC,MAAAA,MAAM,EAAEyG,KAFqC;AAG7CkN,MAAAA,SAAS,EAAEhX,KAAK,CAACiX,YAAN,IAAsBjX,KAAK,CAACiX,YAAN,CAAmBnN,KAAK,CAAClP,GAAN,CAAUC,EAA7B,CAHY;AAI7C0C,MAAAA,WAAW,EAAEyC,KAAK,CAACqR,eAAN,CAAsB7V,IAAtB,CACV+B,WAAD,IAAiBA,WAAW,CAAC3C,GAAZ,CAAgBC,EAAhB,KAAuBiP,KAAK,CAAClP,GAAN,CAAU2C,WAAV,CAAsB3C,GAAtB,CAA0BC,EADvD,CAJgC;AAO7CwE,MAAAA,UAAU,EAAEW,KAAK,CAACX,UAP2B;AAQ7CE,MAAAA,IAR6C;AAS7CuV,MAAAA,UAAU,EAAE9U,KAAK,CAACuD,GAAN,CAAUS,KAAV,CAAgBD,MATiB;AAU7CkG,MAAAA,iBAAiB,EAAEjK,KAAK,CAACuD,GAAN,CAAU2G,OAAV,CAAkBK,OAVQ;AAW7CoL,MAAAA,gBAAgB,EAAE3V,KAAK,CAAC2V,gBAXqB;AAY7CG,MAAAA,MAZ6C;AAa7C/S,MAAAA,QAAQ,EAAE6T,aAbmC;AAc7CZ,MAAAA,SAAS,EAAEhW,KAAK,CAACgW,SAd4B;AAe7CC,MAAAA,YAAY,EAAEjW,KAAK,CAACiW,YAfyB;AAgB7CiB,MAAAA,cAAc,EAAElX,KAAK,CAACkX;AAhBuB,KAA/C;AAmBA,UAAM;AAAEpH,MAAAA,kBAAF;AAAsB6E,MAAAA,kBAAtB;AAA0CvB,MAAAA;AAA1C,QAAmEpT,KAAzE;;AAEA,aAAS+S,iBAAT,CAA2B/S,KAA3B;AACE,YAAMmX,gBAAgB,GAA0B,EAC9C,GAAGJ,eAD2C;AAE9C,WAAG/W,KAF2C;AAG9C8P,QAAAA,kBAH8C;AAI9C6E,QAAAA,kBAJ8C;AAK9CvB,QAAAA,oBAL8C;AAM9C2B,QAAAA,QAN8C;AAO9CrN,QAAAA,yBAAyB,EAAEgP,0BAPmB;AAQ9C5M,QAAAA,KAAK,EAAE,CAAA9J,KAAK,QAAL,YAAAA,KAAK,CAAEqD,MAAP,KAAiB0T,eAAe,CAAC1T,MARM;AAS9C+R,QAAAA,QAAQ,EAAE,CAAApV,KAAK,QAAL,YAAAA,KAAK,CAAEgX,SAAP,KAAoBD,eAAe,CAACC;AATA,OAAhD;AAYA,aAAO9b,mBAAA,CAAC0Z,gBAAD,OAAsBuC;OAAtB,CAAP;AACD;;AAED,QAAInX,KAAK,CAACgT,gBAAV,EAA4B;AAC1B;AACA,YAAMoE,kBAAkB,GAAGpX,KAAK,CAACgT,gBAAN,CACzB+D,eADyB,EAEzB,EAFyB,EAGzBhE,iBAHyB,CAA3B,CAF0B;;AAQ1B,UAAIqE,kBAAkB,KAAK,KAA3B,EAAkC;AAChC,eAAOA,kBAAP;AACD;AACF;;AAED,WAAOrE,iBAAiB,EAAxB;AAED,GA3EM,EA2EJ,CAAC/S,KAAD,EAAQ2H,MAAR,EAAgBmC,KAAhB,CA3EI,CAAP;AA4ED;;SClLeuN,2BAA2BrX;AACzC,SACE9E,mBAAA,CAAC+X,qBAAD,OAA2BjT;AAAOW,IAAAA,UAAU,EAAC;GAA7C,EACG,CAAC;AACA0Q,IAAAA,eADA;AAEAhS,IAAAA,UAFA;AAGAoI,IAAAA,QAHA;AAIAgL,IAAAA,QAJA;AAKAO,IAAAA,gBALA;AAMAI,IAAAA,oBANA;AAOAtD,IAAAA;AAPA,GAAD;AASC,WACE5U,mBAAA,CAACub,wBAAD,OACMzW;AACJqR,MAAAA,eAAe,EAAEA;AACjBhS,MAAAA,UAAU,EAAEA;AACZsK,MAAAA,OAAO,EAAElC;AACTuL,MAAAA,gBAAgB,EAAEA;AAClBlD,MAAAA,kBAAkB,EAAEA;AACpBsD,MAAAA,oBAAoB,EAAEA;AACtBrQ,MAAAA,QAAQ,EAAE;AACR0P,QAAAA,QAAQ,CAAC,IAAD,CAAR;AACD;KAVH,CADF;AAcD,GAxBH,CADF;AA4BD;AAED4E,0BAA0B,CAAC3Z,YAA3B,GAA0C;AACxC+R,EAAAA,mBAAmB,EAAE;AADmB,CAA1C;;ACPA,SAAS6H,cAAT,CACE7E,QADF,EAEE9R,UAFF,EAGE2J,KAHF,EAIEW,GAJF,EAKE5F,KAAK,GAAGiF,KAAK,CAACtQ,MALhB;AAOE,QAAMud,KAAK,GAAqBtM,GAAG,CAAC3N,GAAJ,CAASzC,EAAD,KAAS;AAC/CD,IAAAA,GAAG,EAAE;AAAE2K,MAAAA,IAAI,EAAE,MAAR;AAAgBmN,MAAAA,QAAQ,EAAE/R,UAA1B;AAAsC9F,MAAAA;AAAtC;AAD0C,GAAT,CAAR,CAAhC;AAGA,QAAM2c,QAAQ,GAAG/S,KAAK,CAACgT,IAAN,CAAWnN,KAAX,CAAjB;AACAkN,EAAAA,QAAQ,CAACE,MAAT,CAAgBrS,KAAhB,EAAuB,CAAvB,EAA0B,GAAGkS,KAA7B;AACA9E,EAAAA,QAAQ,CAAC+E,QAAD,CAAR;AACD;;AAED,MAAMG,UAAU,GAAqB,EAArC;AACA,MAAMC,aAAa,GAAG;AAAEhd,EAAAA,GAAG,EAAE;AAAEC,IAAAA,EAAE,EAAE;AAAN;AAAP,CAAtB;;AAEA,SAAS2X,QAAT,CAAgBxS,KAAhB;AACE,QAAM;AAAEyS,IAAAA,QAAF;AAAY9R,IAAAA,UAAZ;AAAwBkX,IAAAA;AAAxB,MAA6C7X,KAAnD;AACA,QAAMiE,iBAAiB,GAAG4N,oBAAoB,CAAC7R,KAAD,CAA9C;AAEA,QAAMsK,KAAK,GAAGpP,aAAA,CAAc;AAC1B,WACE,CAAC8E,KAAK,CAACsK,KAAN,IAAe,EAAhB;AAEE;AACA;AACA;AACChN,IAAAA,GALH,CAKQwa,IAAD,IAAUA,IAAI,IAAIF,aALzB,CADF;AAQD,GATa,EASX,CAAC5X,KAAK,CAACsK,KAAP,CATW,CAAd;AAWA,QAAMyN,WAAW,GAAqB/L,iBAAW,CAAC,CAAC8G,CAAD,EAAI9E,KAAJ;AAChD,QAAIA,KAAK,YAAYgK,UAArB,EAAiC;AAC/BC,MAAAA,QAAQ,CAACC,IAAT,CAAcC,SAAd,CAAwB9L,GAAxB,CAA4B,UAA5B;AACD;;AACD2B,IAAAA,KAAK,CAACmI,cAAN;AACD,GALgD,EAK9C,EAL8C,CAAjD;AAMA,QAAMiC,SAAS,GAAmBpM,iBAAW,CAC3C,CAAC;AAAEqM,IAAAA,QAAF;AAAYC,IAAAA;AAAZ,GAAD;AACE;AACA;AACAtY,IAAAA,KAAK,CAACuY,YAAN,IAAsBvY,KAAK,CAACuY,YAAN,CAAmB;AAAEF,MAAAA,QAAF;AAAYC,MAAAA;AAAZ,KAAnB,CAAtB;AACA,UAAMd,QAAQ,GAAGgB,SAAS,CAAClO,KAAD,EAAQ+N,QAAR,EAAkBC,QAAlB,CAA1B;AACA7F,IAAAA,QAAQ,CAAC+E,QAAD,CAAR;AACAK,IAAAA,gBAAgB,IAAIA,gBAAgB,CAACpb,SAAD,CAApC;AACAwb,IAAAA,QAAQ,CAACC,IAAT,CAAcC,SAAd,CAAwBM,MAAxB,CAA+B,UAA/B;AACD,GAT0C,EAU3C,CAACnO,KAAD,EAAQtK,KAAR,EAAe6X,gBAAf,EAAiCpF,QAAjC,CAV2C,CAA7C;AAYA,QAAMiG,MAAM,GAAG1M,iBAAW,CACxB,CAACqM,QAAD,EAAWC,QAAX;AACE,UAAMd,QAAQ,GAAGgB,SAAS,CAAClO,KAAD,EAAQ+N,QAAR,EAAkBC,QAAlB,CAA1B;AACA7F,IAAAA,QAAQ,CAAC+E,QAAD,CAAR;AACD,GAJuB,EAKxB,CAAClN,KAAD,EAAQmI,QAAR,CALwB,CAA1B;AAQA,QAAMzR,QAAQ,GAAGgL,iBAAW,CAC1B,CAACnR,EAAD,EAAawK,KAAb,KAAgCiS,cAAc,CAAC7E,QAAD,EAAW9R,UAAX,EAAuB2J,KAAvB,EAA8B,CAACzP,EAAD,CAA9B,EAAoCwK,KAApC,CADpB,EAE1B,CAACoN,QAAD,EAAWnI,KAAX,EAAkB3J,UAAlB,CAF0B,CAA5B;AAKA,QAAMgF,MAAM,GAAGqG,iBAAW,CACxB,CAACf,GAAD,EAAgB5F,KAAhB,KAAmCiS,cAAc,CAAC7E,QAAD,EAAW9R,UAAX,EAAuB2J,KAAvB,EAA8BW,GAA9B,EAAmC5F,KAAnC,CADzB,EAExB,CAACoN,QAAD,EAAWnI,KAAX,EAAkB3J,UAAlB,CAFwB,CAA1B;AAKA,QAAMgS,gBAAgB,GAAGzN,mBAAmB,CAAC,EAC3C,GAAGlF,KADwC;AAE3CE,IAAAA,eAAe,EAAE,IAF0B;AAG3C+D,IAAAA,iBAH2C;AAI3CjD,IAAAA,QAJ2C;AAK3C2E,IAAAA,MAL2C;AAM3C1E,IAAAA,WAAW,EAAEqJ,KAAK,CAACtQ;AANwB,GAAD,CAA5C;AASA,QAAM4Y,kBAAkB,GAAG5G,iBAAW,CACpC,CAAC6G,SAAD,EAAmCC,CAAnC,EAAsCC,iBAAtC,KACE/S,KAAK,CAACgT,gBAAN,GACIhT,KAAK,CAACgT,gBAAN,CAAuBH,SAAvB,EAAkCF,gBAAlC,EAAoDI,iBAApD,CADJ,GAEI,KAJ8B;AAMpC,GAACJ,gBAAD,CANoC,CAAtC;AASA,SACEzX,mBAAA,eAAA,MAAA,EACG8E,KAAK,CAAC7G,QAAN,CAAe,EACd,GAAG6G,KADW;AAEd+X,IAAAA,WAAW,EAAEA,WAFC;AAGdK,IAAAA,SAAS,EAAEA,SAHG;AAIdM,IAAAA,MAJc;AAKd1F,IAAAA,gBAAgB,EAAEhT,KAAK,CAACgT,gBAAN,IAA0BJ;AAL9B,GAAf,CADH,EAQE1X,mBAAA,CAAC+K,iBAAD;AAAmBC,IAAAA,mBAAmB,EAAElG,KAAK,CAACkG;OAAyByM;GAAvE,CARF,CADF;AAYD;;AAED,SAAgBgG,wBACd3Y;AAMA,QAAMqR,eAAe,GAAGrR,KAAK,CAACuD,GAAN,CAAUsG,KAAV,CAAgBqJ,qBAAhB,EAAxB;AAEA,SACEhY,mBAAA,CAACoU,eAAD,OAAuCtP;GAAvC,EACG,CAAC;AAAEjD,IAAAA,KAAF;AAASyB,IAAAA,QAAT;AAAmBiU,IAAAA,QAAnB;AAA6BU,IAAAA;AAA7B,GAAD;AACC,WACEjY,mBAAA,CAACsX,QAAD,OACMxS;AACJsK,MAAAA,KAAK,EAAEvN,KAAK,IAAI4a;AAChBtY,MAAAA,UAAU,EAAEb;AACZiU,MAAAA,QAAQ,EAAEA;AACVhV,MAAAA,GAAG,KAAK0V;AACR9B,MAAAA,eAAe,EAAEA;KANnB,CADF;AAUD,GAZH,CADF;AAgBD;AAEDsH,uBAAuB,CAACjb,YAAxB,GAAuC;AACrCoS,EAAAA,kBAAkB,EAAE;AADiB,CAAvC;;ACjJA,MAAM/Y,QAAM,GAAG;AACb4I,EAAAA,SAAS,eAAE1I,WAAG,CAAC;AACbC,IAAAA,QAAQ,EAAE;AADG,GAAD,CADD;AAIbwD,EAAAA,IAAI,eAAEzD,WAAG,CAAC;AACR6L,IAAAA,YAAY,EAAEzL,MAAM,CAACQ,QADb;AAERG,IAAAA,MAAM,EAAEX,MAAM,CAACuhB,WAFP;;AAAA,GAAD;AAJI,CAAf;;AA0BA,MAAMC,UAAU,GAAI7Y,KAAD;AACjB,QAAM8Y,kBAAkB,GAAGC,+BAAc,CAAC,MAAM/Y,KAAK,CAACgZ,IAAb,CAAzC;AACA,SAAO9d,4BAAA,CAAC4d,kBAAD,MAAA,CAAP;AACD,CAHD;;AAKA,MAAMG,YAAY,gBAAGC,gCAAe,CAAElZ,KAAD,IACnC9E,4BAAA,MAAA;AAAKa,EAAAA,SAAS,EAAEhF,QAAM,CAAC2D;CAAvB,EAA8BsF,KAAK,CAAC7G,QAApC,CADkC,CAApC;AAIA,MAAMggB,wBAAwB,gBAAGC,kCAAiB,CAAEpZ,KAAD;AACjD,SACE9E,4BAAA,MAAA;AAAKa,IAAAA,SAAS,EAAEsd,UAAE,CAACtiB,QAAM,CAAC4I,SAAR,EAAmBK,KAAK,CAACjE,SAAzB;GAAlB,EACGiE,KAAK,CAACsK,KAAN,CAAYhN,GAAZ,CAAgB,CAAC5C,IAAD,EAAO2K,KAAP,KACfnK,4BAAA,CAAC+d,YAAD;AACEza,IAAAA,QAAQ,EAAEwB,KAAK,CAACX;AAChB5B,IAAAA,GAAG,KAAK/C,IAAI,CAACE,GAAL,CAASyO,GAAT,IAAgB3O,IAAI,CAACE,GAAL,CAASC,MAAMwK;AACvCA,IAAAA,KAAK,EAAEA;GAHT,EAKGrF,KAAK,CAAC7G,QAAN,CAAe;AACdmR,IAAAA,KAAK,EAAEtK,KAAK,CAACsK,KADC;AAEdjL,IAAAA,UAAU,EAAEW,KAAK,CAACX,UAFJ;AAGd3E,IAAAA,IAHc;AAId2K,IAAAA,KAJc;AAKdwT,IAAAA,UAAU,EAAE7Y,KAAK,CAACX,UAAN,GAAmB5C,SAAnB,GAA+Boc;AAL7B,GAAf,CALH,CADD,CADH,CADF;AAmBD,CApBiD,CAAlD;;AAuBA,SAAgBS,iBAAoBtZ;AAClC;AACA;AACA,SACE9E,4BAAA,CAACie,wBAAD;AAA0BI,IAAAA,QAAQ,EAAE;OAAOvZ;GAA3C,EACGA,KAAK,CAAC7G,QADT,CADF;AAKD;;SCvEeqgB,6BAA6BxZ;AAC3C,QAAM,CAACyZ,aAAD,EAAgB5B,gBAAhB,IAAoC3c,cAAA,CAAmCuB,SAAnC,CAA1C;;AAEA,QAAMid,qBAAqB,GAAG,CAAC;AAAErU,IAAAA;AAAF,GAAD;AAC5BwS,IAAAA,gBAAgB,CAACxS,KAAD,CAAhB;AACD,GAFD;;AAIA,SACEnK,mBAAA,CAACyd,uBAAD,OAA6B3Y;AAAOW,IAAAA,UAAU,EAAC;AAAQkX,IAAAA,gBAAgB,EAAEA;GAAzE,EACI8B,aAAD,IACCze,mBAAA,CAACoe,gBAAD,OACMK;AACJC,IAAAA,IAAI,EAAC;AACLC,IAAAA,aAAa,EAAE;AACfH,IAAAA,qBAAqB,EAAEA;GAJzB,EAMG,CAAC;AAAEpP,IAAAA,KAAF;AAAS5P,IAAAA,IAAT;AAAe2K,IAAAA,KAAf;AAAsBhG,IAAAA,UAAtB;AAAkCwZ,IAAAA;AAAlC,GAAD;AACC,UAAMiB,SAAS,GAAGxP,KAAK,CAACtQ,MAAN,GAAe,CAAjC;AACA,WACEkB,mBAAA,CAACub,wBAAD,OACMkD;AACJlc,MAAAA,GAAG,KAAK/C,IAAI,CAACE,GAAL,CAASC,MAAMwK;AACvBA,MAAAA,KAAK,EAAEA;AACPgM,MAAAA,eAAe,EAAEsI,aAAa,CAACtI;AAC/BhS,MAAAA,UAAU,EAAEA;AACZsK,MAAAA,OAAO,EAAEjP,IAAI,CAACE,GAAL,CAASC;AAClBkI,MAAAA,QAAQ,EAAE;AACR4W,QAAAA,aAAa,CAAClH,QAAd,CAAuBnI,KAAK,CAAC3O,MAAN,CAAa,CAACoe,MAAD,EAASvc,CAAT,KAAeA,CAAC,KAAK6H,KAAlC,CAAvB;AACD;AACD2Q,MAAAA,SAAS,EAAE3Q,KAAK,KAAK,CAAV,GAAc,MAAMsU,aAAa,CAACjB,MAAd,CAAqBrT,KAArB,EAA4B,CAA5B,CAApB,GAAqD5I;AAChEwZ,MAAAA,YAAY,EACV5Q,KAAK,KAAKyU,SAAV,GAAsB,MAAMH,aAAa,CAACjB,MAAd,CAAqBrT,KAArB,EAA4ByU,SAA5B,CAA5B,GAAqErd;AAEvEkZ,MAAAA,gBAAgB,EAAEkD;AAClB3B,MAAAA,cAAc,EAAE7R,KAAK,KAAKoU;KAf5B,CADF;AAmBD,GA3BH,CAFJ,CADF;AAmCD;;AC1CD,SAASO,aAAT,CAAuBxR,GAAvB;AACEyR,EAAAA,MAAM,CAACC,IAAP,CAAY1R,GAAZ,EAAiB,QAAjB,EAA2B,qBAA3B;AACD;;AAED,SAAgB2R,gBAAgBna;AAC9B,QAAM;AAAEoa,IAAAA;AAAF,MAAiBpa,KAAvB;AACA,QAAMsI,QAAQ,GAAG1M,GAAG,CAACwe,UAAD,EAAa,UAAb,CAApB;AACA,QAAMC,QAAQ,GAAGze,GAAG,CAACwe,UAAD,EAAa,aAAb,CAApB;AACA,QAAME,QAAQ,GAAG1e,GAAG,CAACwe,UAAD,EAAa,cAAb,CAApB;AACA,QAAMG,KAAK,GAAG3e,GAAG,CAACwe,UAAD,EAAa,eAAb,CAAjB;AACA,SAAO,CACLlf,4BAAA,CAACC,kBAAI,CAACC,YAAN;AAAmBqC,IAAAA,GAAG,EAAC;GAAvB,aAAA,CADK,EAEL6K,QAAQ,IACNpN,4BAAA,CAACC,kBAAI,CAACiC,IAAN;AAAWK,IAAAA,GAAG,EAAC;GAAf,EACEvC,4BAAA,CAACiZ,kBAAD;AAAMqG,IAAAA,WAAW;GAAjB,EAAmBlS,QAAnB,CADF,CAHG,EAOL+R,QAAQ,IACNnf,4BAAA,CAACC,kBAAI,CAACiC,IAAN;AAAWK,IAAAA,GAAG,EAAC;GAAf,EACEvC,4BAAA,CAACiZ,kBAAD;AAAMqG,IAAAA,WAAW;GAAjB,EAAmBH,QAAnB,CADF,CARG,EAYLC,QAAQ,IAAIpf,4BAAA,CAACC,kBAAI,CAACiC,IAAN;AAAWK,IAAAA,GAAG,EAAC;GAAf,EAA4Bgd,oCAAkB,CAACH,QAAD,EAAW,GAAX,CAA9C,CAZP,EAaLC,KAAK,IAAIrf,4BAAA,CAACC,kBAAI,CAACiC,IAAN;AAAWK,IAAAA,GAAG,EAAC;GAAf,KAAqC8c,KAAK,CAAC/d,WAAW+d,KAAK,CAAChY,QAA5D,CAbJ,EAcL5G,MAdK,CAcGjB,IAAD,IAAUA,IAdZ,CAAP;AAeD;AAED,SAAgBggB,cAAc1a;AAM5B,QAAM;AAAEoa,IAAAA,UAAF;AAAc/a,IAAAA,UAAd;AAA0ByW,IAAAA,MAA1B;AAAkC/S,IAAAA;AAAlC,MAA+C/C,KAArD;AAEA,SAAO,CACL9E,4BAAA,CAACC,kBAAI,CAACC,YAAN;AAAmBqC,IAAAA,GAAG,EAAC;GAAvB,WAAA,CADK,EAELqY,MAAM,GACJ5a,4BAAA,CAACC,kBAAI,CAACiC,IAAN;AAAWK,IAAAA,GAAG,EAAC;AAAOJ,IAAAA,OAAO,EAAEyY;AAAQ9c,IAAAA,MAAM,EAAC;GAA9C,QAAA,CADI,GAIF,IANC,EAOLohB,UAAU,GACRlf,4BAAA,CAACC,kBAAI,CAACiC,IAAN;AACEK,IAAAA,GAAG,EAAC;AACJJ,IAAAA,OAAO,EAAE;AACP,UAAI,OAAO+c,UAAU,CAAC5R,GAAlB,KAA0B,QAA9B,EAAwC;AACtCwR,QAAAA,aAAa,CAACI,UAAU,CAAC5R,GAAZ,CAAb;AACD;AACF;AACDxP,IAAAA,MAAM,EAAC;GAPT,YAAA,CADQ,GAWN,IAlBC,EAmBL+J,QAAQ,GACN7H,4BAAA,CAACC,kBAAI,CAACiC,IAAN;AAAWK,IAAAA,GAAG,EAAC;AAASe,IAAAA,QAAQ,EAAEa;AAAYhC,IAAAA,OAAO,EAAE0F;AAAU/J,IAAAA,MAAM,EAAC;GAAxE,UAAA,CADM,GAIJ,IAvBC,EAwBL2C,MAxBK,CAwBGjB,IAAD,IAAUA,IAxBZ,CAAP;AAyBD;;ACrDD,MAAMigB,cAAc,GAAG;AACrBJ,EAAAA,KAAK,EAAE,OADc;AAErBK,EAAAA,KAAK,EAAE,OAFc;AAGrBC,EAAAA,KAAK,EAAE,OAHc;AAIrBC,EAAAA,QAAQ,EAAE,UAJW;AAKrBC,EAAAA,YAAY,EAAE,cALO;AAMrBC,EAAAA,WAAW,EAAE,aANQ;AAOrBC,EAAAA,WAAW,EAAE,KAPQ;AAQrBC,EAAAA,OAAO,EAAE,SARY;AASrBC,EAAAA,SAAS,EAAE,WATU;AAUrB3Q,EAAAA,IAAI,EAAE,MAVe;AAWrB4Q,EAAAA,MAAM,EAAE;AAXa,CAAvB;AAcA,MAAMrkB,QAAM,GAAG;AACb0d,EAAAA,YAAY,eAAExd,WAAG,CAAC;AAChB4G,IAAAA,WAAW,EAAExG,MAAM,CAACC;AADJ,GAAD;AADJ,CAAf;AAsBA,MAAMoG,cAAY,GAAG;AACnBgX,EAAAA,WAAW,EAAE;AADM,CAArB;;AAKA,SAAS2G,WAAT,CAAqBhT,IAArB;AACE,MAAI,CAACA,IAAL,EAAW;AACT,WAAO,SAAP;AACD;;AAED,QAAMiT,SAAS,GAAgCC,QAAQ,CAACC,aAAT,CAAuB;AACpEjW,IAAAA,IAAI,EAAE8C,IAAI,CAAC9K,WADyD;AAEpEke,IAAAA,gBAAgB,EAAEpT,IAAI,CAACC;AAF6C,GAAvB,CAA/C;AAKA,SAAOqS,cAAc,CAACW,SAAD,CAAd,IAA6B,SAApC;AACD;;AAED,MAAaI,gBAAgB,GAAI1b,KAAD;AAC9B,QAAM;AAAEjE,IAAAA,SAAF;AAAa+Z,IAAAA,MAAb;AAAqB6F,IAAAA,WAArB;AAAkC5Y,IAAAA,QAAlC;AAA4CxD,IAAAA,IAA5C;AAAkDF,IAAAA,UAAlD;AAA8DiW,IAAAA,UAA9D;AAA0EZ,IAAAA;AAA1E,MACJ1U,KADF;AAGA,QAAM2H,MAAM,GAAG6M,+BAAa,CAACF,cAAd,CAA6BtU,KAAK,CAACuM,KAAN,CAAY3R,GAAzC,CAAf;;AAEA,MAAI+M,MAAM,KAAK,SAAf,EAA0B;AACxB,WACEzM,4BAAA,CAACuH,iBAAD;AACE9B,MAAAA,UAAU,EAAC;AACXiC,MAAAA,QAAQ;AACRvD,MAAAA,UAAU,EAAEW,KAAK,CAACX;AAClB0D,MAAAA,QAAQ,EAAE/C,KAAK,CAAC+C;KAJlB,CADF;AAQD;;AAED,QAAM6Y,WAAW,GAAGpH,+BAAa,CAACqH,aAAd,CAA4B;AAC9CtP,IAAAA,KAAK,EAAEvM,KAAK,CAACuM,KADiC;AAE9CuI,IAAAA,UAAU,EAAE9U,KAAK,CAAC8U,UAF4B;AAG9C7K,IAAAA,iBAAiB,EAAEjK,KAAK,CAACiK,iBAHqB;AAI9CgL,IAAAA,YAAY,EAAE;AAJgC,GAA5B,CAApB;AAOA,QAAMmF,UAAU,GAAGpa,KAAK,CAACuM,KAAN,CAAYuP,MAAZ,CAAmBzT,IAAnB,GACfrI,KAAK,CAACuM,KAAN,CAAYuP,MAAZ,CAAmBzT,IAAnB,CAAwBrI,KAAK,CAAC8U,UAA9B,KAA6C9U,KAAK,CAACuM,KAAN,CAAYuP,MAAZ,CAAmBzT,IAAnB,CAAwBrI,KAAK,CAACiK,iBAA9B,CAD9B,GAEfxN,SAFJ;AAIA,QAAM4Y,IAAI,GAAGsG,WAAW,GAAGA,WAAW,CAAC3b,KAAK,CAACuM,KAAN,CAAY3R,GAAZ,CAAgBC,EAAjB,CAAd,GAAqC4B,SAA7D;AAEA,SACEvB,4BAAA,CAAC6gB,uBAAD;AACEzU,IAAAA,EAAE,EAAE+N,IAAI,GAAG,GAAH,GAAS;AACjB9P,IAAAA,IAAI,EAAE8V,WAAW,CAACjB,UAAD;AACjBpF,IAAAA,KAAK,EAAE4G;AACP7f,IAAAA,SAAS,EAAEA;AACXuZ,IAAAA,UAAU,EAAEA;AACZD,IAAAA,IAAI,EAAEA;AACN1N,IAAAA,MAAM,EAAEA;AACR1E,IAAAA,IAAI,EACF/H,4BAAA,CAACsM,wBAAD;AACEE,MAAAA,yBAAyB,EAAE1H,KAAK,CAAC0H;AACjC/G,MAAAA,UAAU,EAAC;AACX8G,MAAAA,QAAQ,EAAEzH,KAAK,CAACuM,KAAN,CAAY3R,GAAZ,CAAgBC;KAH5B,EAKEK,4BAAA,CAACqa,kBAAD;AACExZ,MAAAA,SAAS,EAAEhF,QAAM,CAAC0d;AAClBlV,MAAAA,IAAI,EAAC;AACLH,MAAAA,OAAO,EAAC;AACRpG,MAAAA,MAAM,EAAC;KAJT,CALF;AAaFuP,IAAAA,GAAG,EACD6R,UAAU,IAAIA,UAAU,CAAC5R,GAAzB,GACIjJ,IAAI,KAAK,OAAT,MACK6a,UAAU,CAAC5R,2BADhB,MAEK4R,UAAU,CAAC5R,WAHpB,GAII;AAENnL,IAAAA,OAAO;AAEL;AACA;AACA;AACAqX,IAAAA,WAAW,GACNzX,CAAD;AACEA,MAAAA,CAAC,CAACkZ,cAAF;AACAL,MAAAA,MAAM,IAAIA,MAAM,EAAhB;AACD,KAJM,GAKPrZ;;AAEN;;AAEAuf,IAAAA,SAAS,EACPtH,WAAW,GACNzX,CAAD;AACE,UAAIA,CAAC,CAACQ,GAAF,KAAU,OAAV,IAAqBqY,MAAzB,EAAiC;AAC/B7Y,QAAAA,CAAC,CAACkZ,cAAF;AACAL,QAAAA,MAAM;AACP;AACF,KANM,GAOPrZ;AAENiZ,IAAAA,gBAAgB,EAAE1V,KAAK,CAAC2V;AACxBC,IAAAA,cAAc,EAAE,CAAC,CAAC5V,KAAK,CAAC2V;AACxBE,IAAAA,OAAO,EAAE,CACP,GAAG6E,aAAa,CAAC;AAAEN,MAAAA,UAAF;AAAc/a,MAAAA,UAAU,EAAEA,UAA1B;AAAsCyW,MAAAA,MAAtC;AAA8C/S,MAAAA;AAA9C,KAAD,CADT,EAEP,IAAIqX,UAAU,GAAGD,eAAe,CAAC;AAAEC,MAAAA;AAAF,KAAD,CAAlB,GAAqC,EAAnD,CAFO,EAGPze,MAHO,CAGCjB,IAAD,IAAUA,IAHV;AAIT6E,IAAAA,IAAI,EAAEA;GA3DR,CADF;AA+DD,CA7FM;AA+FPmc,gBAAgB,CAAChe,YAAjB,GAAgCA,cAAhC;;ACxJA,MAAM3G,QAAM,GAAG;AACb0d,EAAAA,YAAY,eAAExd,WAAG,CAAC;AAChB4G,IAAAA,WAAW,EAAExG,MAAM,CAACC;AADJ,GAAD;AADJ,CAAf;AAmBA,AAAO,MAAM2kB,gBAAgB,GAAIjc,KAAD;AAC9B,QAAM;AAAEjE,IAAAA,SAAF;AAAasZ,IAAAA,IAAb;AAAmBS,IAAAA,MAAnB;AAA2B/S,IAAAA,QAA3B;AAAqC1D,IAAAA;AAArC,MAAoDW,KAA1D;AAEA,QAAM2H,MAAM,GAAG6M,+BAAa,CAACF,cAAd,CAA6BtU,KAAK,CAACuM,KAAN,CAAY3R,GAAzC,CAAf;;AAEA,MAAI+M,MAAM,KAAK,SAAf,EAA0B;AACxB,WACEzM,4BAAA,CAACuH,iBAAD;AACE9B,MAAAA,UAAU,EAAC;AACXtB,MAAAA,UAAU,EAAEW,KAAK,CAACX;AAClB0D,MAAAA,QAAQ,EAAE/C,KAAK,CAAC+C;KAHlB,CADF;AAOD;;AAED,QAAM6Y,WAAW,GAAGpH,+BAAa,CAACqH,aAAd,CAA4B;AAC9CtP,IAAAA,KAAK,EAAEvM,KAAK,CAACuM,KADiC;AAE9CuI,IAAAA,UAAU,EAAE9U,KAAK,CAAC8U,UAF4B;AAG9C7K,IAAAA,iBAAiB,EAAEjK,KAAK,CAACiK,iBAHqB;AAI9CgL,IAAAA,YAAY,EAAE;AAJgC,GAA5B,CAApB;AAOA,QAAMmF,UAAU,GAAGpa,KAAK,CAACuM,KAAN,CAAYuP,MAAZ,CAAmBzT,IAAnB,GACfrI,KAAK,CAACuM,KAAN,CAAYuP,MAAZ,CAAmBzT,IAAnB,CAAwBrI,KAAK,CAAC8U,UAA9B,KAA6C9U,KAAK,CAACuM,KAAN,CAAYuP,MAAZ,CAAmBzT,IAAnB,CAAwBrI,KAAK,CAACiK,iBAA9B,CAD9B,GAEfxN,SAFJ;AAIA,SACEvB,4BAAA,CAACia,uBAAD;AACE7N,IAAAA,EAAE,EAAE+N,IAAI,GAAG,GAAH,GAAS;AACjB9X,IAAAA,WAAW,EAAC;AACZyX,IAAAA,KAAK,EAAE4G;AACP7f,IAAAA,SAAS,EAAEA;AACXsZ,IAAAA,IAAI,EAAEA;AACN9V,IAAAA,IAAI,EAAC;AACLoI,IAAAA,MAAM,EAAEA;AACR6N,IAAAA,gBAAgB,EACd4E,UAAU,IAAI3E,8BAAY,CAAC2E,UAAD,CAA1B,GAAyClf,4BAAA,CAACiN,cAAD;AAAgBE,MAAAA,IAAI,EAAE+R;KAAtB,CAAzC,GAAgF3d;AAElFwG,IAAAA,IAAI,EACF/H,4BAAA,CAACsM,wBAAD;AACEE,MAAAA,yBAAyB,EAAE1H,KAAK,CAAC0H;AACjC/G,MAAAA,UAAU,EAAC;AACX8G,MAAAA,QAAQ,EAAEzH,KAAK,CAACuM,KAAN,CAAY3R,GAAZ,CAAgBC;KAH5B,EAKEK,4BAAA,CAACqa,kBAAD;AACExZ,MAAAA,SAAS,EAAEhF,QAAM,CAAC0d;AAClBlV,MAAAA,IAAI,EAAC;AACLH,MAAAA,OAAO,EAAC;AACRpG,MAAAA,MAAM,EAAC;KAJT,CALF;AAaFqE,IAAAA,OAAO,EAAGJ,CAAD;AACPA,MAAAA,CAAC,CAACkZ,cAAF;AACAL,MAAAA,MAAM;AACP;AACDkG,IAAAA,SAAS,EAAG/e,CAAD;AACT,UAAIA,CAAC,CAACQ,GAAF,KAAU,OAAV,IAAqBqY,MAAzB,EAAiC;AAC/B7Y,QAAAA,CAAC,CAACkZ,cAAF;AACAL,QAAAA,MAAM;AACP;AACF;AACDJ,IAAAA,gBAAgB,EAAE1V,KAAK,CAAC2V;AACxBC,IAAAA,cAAc,EAAE,CAAC,CAAC5V,KAAK,CAAC2V;AACxBE,IAAAA,OAAO,EAAE,CACP6E,aAAa,CAAC;AAAEN,MAAAA,UAAF;AAAc/a,MAAAA,UAAU,EAAEA,UAA1B;AAAsCyW,MAAAA,MAAtC;AAA8C/S,MAAAA;AAA9C,KAAD,CADN,EAEPqX,UAAU,GAAGD,eAAe,CAAC;AAAEC,MAAAA;AAAF,KAAD,CAAlB,GAAqC,IAFxC,EAGPze,MAHO,CAGCjB,IAAD,IAAUA,IAHV;GArCX,CADF;AA4CD,CAtEM;;SCHSwhB,yBAAyBlc;AACvC,QAAM;AAAE6H,IAAAA,IAAI,EAAE0E,KAAR;AAAe5E,IAAAA;AAAf,MAA0ByG,SAAS,CAAQ,OAAR,EAAiBpO,KAAK,CAACwM,OAAvB,CAAzC;AACA,QAAM;AAAE9E,IAAAA;AAAF,MAAgCkD,eAAe,EAArD;AACA,QAAM8L,0BAA0B,GAAGxb,iBAAA,CACjC,MAAMwM,yBAAyB,CAAC,OAAD,EAAU1H,KAAK,CAACwM,OAAhB,CADE,EAEjC,CAAC9E,yBAAD,EAA4B1H,KAAK,CAACwM,OAAlC,CAFiC,CAAnC;AAKAtR,EAAAA,eAAA,CAAgB;AACd,QAAIqR,KAAJ,EAAW;AACTvM,MAAAA,KAAK,CAACsF,QAAN,IAAkBtF,KAAK,CAACsF,QAAN,CAAe;AAAEC,QAAAA,IAAI,EAAE,UAAR;AAAoBlC,QAAAA,MAAM,EAAE;AAA5B,OAAf,CAAlB;AACD;;AAEF,GALD,EAKG,CAACkJ,KAAD,CALH;;AAOA,QAAMuJ,MAAM,GAAG;AACb,UAAM;AAAExS,MAAAA;AAAF,QAAY,MAAMtD,KAAK,CAACuD,GAAN,CAAUC,SAAV,CAAoB2Y,SAApB,CAA8Bnc,KAAK,CAACwM,OAApC,EAA6C;AAAE9I,MAAAA,OAAO,EAAE;AAAX,KAA7C,CAAxB;AACA1D,IAAAA,KAAK,CAACsF,QAAN,IACEtF,KAAK,CAACsF,QAAN,CAAe;AACbjC,MAAAA,MAAM,EAAE,OADK;AAEbkC,MAAAA,IAAI,EAAE,MAFO;AAGb1K,MAAAA,EAAE,EAAEmF,KAAK,CAACwM,OAHG;AAIbzL,MAAAA,aAAa,EAAE,EAJF;AAKbuC,MAAAA;AALa,KAAf,CADF;AAQD,GAVD;;AAYA,QAAMP,QAAQ,GAAG;AACf/C,IAAAA,KAAK,CAAC+C,QAAN;AACA/C,IAAAA,KAAK,CAACsF,QAAN,IACEtF,KAAK,CAACsF,QAAN,CAAe;AAAEjC,MAAAA,MAAM,EAAE,OAAV;AAAmBkC,MAAAA,IAAI,EAAE,QAAzB;AAAmC1K,MAAAA,EAAE,EAAEmF,KAAK,CAACwM,OAA7C;AAAsDzL,MAAAA,aAAa,EAAE;AAArE,KAAf,CADF;AAED,GAJD;;AAMA,SAAO7F,aAAA,CAAc;AACnB,QAAIyM,MAAM,KAAK,OAAf,EAAwB;AACtB,YAAMvF,IAAI,GACRlH,mBAAA,CAACuH,iBAAD;AACE9B,QAAAA,UAAU,EAAC;AACXiC,QAAAA,QAAQ,EAAE5C,KAAK,CAAC2W,QAAN,KAAmB;AAC7BtX,QAAAA,UAAU,EAAEW,KAAK,CAACX;AAClB0D,QAAAA,QAAQ,EAAEA;OAJZ,CADF;;AAQA,UAAI/C,KAAK,CAAC6W,6BAAV,EAAyC;AACvC,eAAO7W,KAAK,CAAC6W,6BAAN,CAAoC;AACzCC,UAAAA,WAAW,EAAE1U,IAD4B;AAEzCiB,UAAAA,MAAM,EAAE;AACNxI,YAAAA,EAAE,EAAEmF,KAAK,CAACwM,OADJ;AAENjH,YAAAA,IAAI,EAAE;AAFA;AAFiC,SAApC,CAAP;AAOD;;AACD,aAAOnD,IAAP;AACD;;AAED,UAAM;AAAE6U,MAAAA;AAAF,QAAmBjX,KAAzB;AACA,UAAMT,IAAI,GAAGS,KAAK,CAAC2W,QAAN,KAAmB,UAAnB,GAAgC,SAAhC,GAA4C,OAAzD;AACA,UAAMyF,WAAW,GAAG;AAClB7P,MAAAA,KADkB;AAElByK,MAAAA,SAAS,EAAEC,YAAY,IAAIA,YAAY,CAACjX,KAAK,CAACwM,OAAP,CAFrB;AAGlBjN,MAAAA,IAAI,EAAEA,IAHY;AAIlBF,MAAAA,UAAU,EAAEW,KAAK,CAACX,UAJA;AAKlByV,MAAAA,UAAU,EAAE9U,KAAK,CAACuD,GAAN,CAAUS,KAAV,CAAgBD,MALV;AAMlBkG,MAAAA,iBAAiB,EAAEjK,KAAK,CAACuD,GAAN,CAAU2G,OAAV,CAAkBK,OANnB;AAOlBoL,MAAAA,gBAAgB,EAAE3V,KAAK,CAAC2V,gBAPN;AAQlBG,MAAAA,MARkB;AASlB/S,MAAAA;AATkB,KAApB;;AAYA,QAAI/C,KAAK,CAAC2W,QAAN,KAAmB,MAAvB,EAA+B;AAC7B,UAAIhP,MAAM,KAAK,SAAf,EAA0B;AACxB,eAAOzM,mBAAA,CAACia,uBAAD;AAAW5V,UAAAA,IAAI,EAAC;AAAQC,UAAAA,SAAS;SAAjC,CAAP;AACD;;AACD,aACEtE,mBAAA,CAAC+gB,gBAAD,OACMG;AACJ/G,QAAAA,IAAI,EAAE+G,WAAW,CAACpF;AAClBtP,QAAAA,yBAAyB,EAAEgP;OAH7B,CADF;AAOD;;AAED,QAAI/O,MAAM,KAAK,SAAf,EAA0B;AACxB,aAAOzM,mBAAA,CAAC6gB,uBAAD;AAAWxc,QAAAA,IAAI,EAAEA;AAAMC,QAAAA,SAAS;OAAhC,CAAP;AACD;;AAED,aAASuT,iBAAT,CAA2B/S,KAA3B;AACE;AACA,YAAMmX,gBAAgB,GAA+C,EACnE,GAAGiF,WADgE;AAEnE,WAAGpc,KAFgE;AAGnE0H,QAAAA,yBAAyB,EAAEgP,0BAHwC;AAInEnK,QAAAA,KAAK,EAAG,CAAAvM,KAAK,QAAL,YAAAA,KAAK,CAAEqD,MAAP,KAA2B+Y,WAAW,CAAC7P,KAJoB;AAKnEoP,QAAAA,WAAW,EAAE1E;AALsD,OAArE;AAQA,aAAO/b,mBAAA,CAACwgB,gBAAD,OAAsBvE;OAAtB,CAAP;AACD;;AAED,QAAInX,KAAK,CAACgT,gBAAV,EAA4B;AAC1B,YAAMqJ,WAAW,GAA0B,EACzC,GAAGD,WADsC;AAEzC/Y,QAAAA,MAAM,EAAE+Y,WAAW,CAAC7P;AAFqB,OAA3C,CAD0B;;AAO1B,YAAM6K,kBAAkB,GAAGpX,KAAK,CAACgT,gBAAN,CACzBqJ,WADyB,EAEzB,EAFyB,EAGzBtJ,iBAHyB,CAA3B,CAP0B;;AAa1B,UAAIqE,kBAAkB,KAAK,KAA3B,EAAkC;AAChC,eAAOA,kBAAP;AACD;AACF;;AAED,WAAOrE,iBAAiB,EAAxB;AAED,GAtFM,EAsFJ,CAAC/S,KAAD,EAAQ2H,MAAR,EAAgB4E,KAAhB,CAtFI,CAAP;AAuFD;;SCtIe+P,kBAAkBtc;AAChC,SACE9E,mBAAA,CAAC+X,qBAAD,OAA2BjT;AAAOW,IAAAA,UAAU,EAAC;GAA7C,EACG,CAAC;AAAE8G,IAAAA,QAAF;AAAYpI,IAAAA,UAAZ;AAAwBoT,IAAAA;AAAxB,GAAD,KACCvX,mBAAA,CAACghB,wBAAD,OACMlc;AACJ2W,IAAAA,QAAQ,EAAC;AACTnK,IAAAA,OAAO,EAAE/E;AACTpI,IAAAA,UAAU,EAAEA;AACZ0D,IAAAA,QAAQ,EAAE;AACR0P,MAAAA,QAAQ,CAAC,IAAD,CAAR;AACD;GAPH,CAFJ,CADF;AAeD;AAED6J,iBAAiB,CAAC5e,YAAlB,GAAiC;AAC/B+R,EAAAA,mBAAmB,EAAE;AADU,CAAjC;;ACdA,MAAM1Y,QAAM,GAAG;AACbwlB,EAAAA,aAAa,eAAEtlB,WAAG,CAAC;AACjBC,IAAAA,QAAQ,EAAE,UADO;AAEjB0I,IAAAA,OAAO,EAAE,MAFQ;AAGjB4c,IAAAA,QAAQ,EAAE;AAHO,GAAD;AADL,CAAf;AAQA,SAAgBC,oBAAoBzc;AAClC,SACE9E,mBAAA,CAACyd,uBAAD,OAA6B3Y;AAAOW,IAAAA,UAAU,EAAC;GAA/C,EACIgZ,aAAD,IACCze,mBAAA,CAACoe,gBAAD,OACMK;AACJ5d,IAAAA,SAAS,EAAEsd,UAAE,CAAC;AAAE,OAACtiB,QAAM,CAACwlB,aAAR,GAAwB5C,aAAa,CAAChD,QAAd,KAA2B;AAArD,KAAD;AACbiD,IAAAA,IAAI,EAAED,aAAa,CAAChD,QAAd,KAA2B,MAA3B,GAAoC,IAApC,GAA2C;AACjDkD,IAAAA,aAAa,EAAE;GAJjB,EAKG,CAAC;AAAEvP,IAAAA,KAAF;AAAS5P,IAAAA,IAAT;AAAe2K,IAAAA,KAAf;AAAsBhG,IAAAA,UAAtB;AAAkCwZ,IAAAA;AAAlC,GAAD,KACC3d,mBAAA,CAACghB,wBAAD,OACMvC;AACJta,IAAAA,UAAU,EAAEA;AACZ5B,IAAAA,GAAG,KAAK/C,IAAI,CAACE,GAAL,CAASC,MAAMwK;AACvBmH,IAAAA,OAAO,EAAE9R,IAAI,CAACE,GAAL,CAASC;AAClBkI,IAAAA,QAAQ,EAAE;AACR4W,MAAAA,aAAa,CAAClH,QAAd,CAAuBnI,KAAK,CAAC3O,MAAN,CAAa,CAACoe,MAAD,EAASvc,CAAT,KAAeA,CAAC,KAAK6H,KAAlC,CAAvB;AACD;AACDsQ,IAAAA,gBAAgB,EAAEkD;GARpB,CANJ,CAFJ,CADF;AAwBD;AAED4D,mBAAmB,CAAC/e,YAApB,GAAmC;AACjC+R,EAAAA,mBAAmB,EAAE;AADY,CAAnC;;AC9BA,MAAMiN,YAAY,GAAG,MAAMxb,OAAO,CAACC,OAAR,EAA3B;;;AAEA,MAAMwb,uBAAuB,GAAG,MAAMzb,OAAO,CAACC,OAAR,CAAgB,EAAhB,CAAtC;;AAEA,SAAgByb,oBAAoB;AAClCC,EAAAA,IADkC;AAElCxd,EAAAA,UAFkC;AAGlCsW,EAAAA,gBAHkC;AAIlC5S,EAAAA,QAJkC;AAKlCiT,EAAAA,SALkC;AAMlCC,EAAAA,YANkC;AAOlC6G,EAAAA;AAPkC;AASlC,QAAMC,WAAW,GAAGF,IAAI,CAACpS,QAAL,CAAc7P,GAAlC;AACA,QAAM8O,OAAO,GAAGqT,WAAW,CAAClT,KAAZ,CAAkBjP,GAAlB,CAAsBC,EAAtC;AACA,QAAM+O,aAAa,GAAGmT,WAAW,CAAC3R,WAAZ,CAAwBxQ,GAAxB,CAA4BC,EAAlD;AACA,QAAM8O,OAAO,GAAGoT,WAAW,CAACliB,EAA5B;AAEA,QAAMmiB,YAAY,GAAGF,iBAAiB,CAAC;AACrCpT,IAAAA,OADqC;AAErCE,IAAAA,aAFqC;AAGrCD,IAAAA;AAHqC,GAAD,CAAtC;;AAOA,QAAMsT,eAAe,GAAG;AACtBhD,IAAAA,MAAM,CAACC,IAAP,CAAY8C,YAAZ,EAA0B,QAA1B,EAAoC,qBAApC;AACD,GAFD;;AAIA,SACE9hB,mBAAA,CAAC0Z,gBAAD;AACE9K,IAAAA,KAAK,EAAE+S,IAAI,CAACpS;AACZpL,IAAAA,UAAU,EAAEA;AACZyQ,IAAAA,kBAAkB,EAAE;AACpBvS,IAAAA,WAAW,EAAEsf,IAAI,CAACtf;AAClB;AACA;AACA;AACA;AACAuX,IAAAA,UAAU,EAAE+H,IAAI,CAAC5S;AACjBA,IAAAA,iBAAiB,EAAE4S,IAAI,CAAC5S;AACxB1K,IAAAA,IAAI,EAAC;AACLwV,IAAAA,QAAQ,EAAE2H;AACVhV,IAAAA,yBAAyB,EAAEiV;AAC3BnJ,IAAAA,SAAS,EAAEqJ,IAAI,CAAChT,KAAL,CAAWjL;AACtB+W,IAAAA,gBAAgB,EAAEA;AAClBjB,IAAAA,WAAW,EAAE;AACboB,IAAAA,MAAM,EAAEmH;AACR7J,IAAAA,oBAAoB,EAAEzW,OAAO,CAACoG,QAAD;AAC7BA,IAAAA,QAAQ,EAAEA;AACVkT,IAAAA,YAAY,EAAEA;AACdD,IAAAA,SAAS,EAAEA;AACXZ,IAAAA,QAAQ,EAAE4H;GAtBZ,CADF;AA0BD;;ACzED,MAAMjmB,QAAM,GAAG;AACbqL,EAAAA,IAAI,eAAEnL,WAAG,CAAC;AACRC,IAAAA,QAAQ,EAAE;AADF,GAAD;AADI,CAAf;AAMA,SAAgBgmB,sBAAsBld;AACpC,SACE9E,4BAAA,CAACwH,kBAAD;AAAM3G,IAAAA,SAAS,EAAEhF,QAAM,CAACqL;GAAxB,EACElH,4BAAA,CAAC2H,4BAAD;AAAgBC,IAAAA,YAAY,EAAC;GAA7B,kBAAA,EACiB9C,KAAK,CAACW,UADvB,+BAAA,CADF,CADF;AAOD;;ACCD,SAASwc,oBAAT;AACE,SAAOjiB,mBAAA,CAACia,uBAAD;AAAW5V,IAAAA,IAAI,EAAC;AAAQC,IAAAA,SAAS;GAAjC,CAAP;AACD;;AAED,SAAS4d,oBAAT,CACEpd,KADF;AAKE,QAAM;AAAEqd,IAAAA,YAAF;AAAgBC,IAAAA,MAAhB;AAAwBjY,IAAAA,KAAK,GAAG;AAAhC,MAAsCrF,KAA5C;AACA,QAAMud,eAAe,GAAG;AAAErR,IAAAA,QAAQ,EAAE7G,KAAK,GAAG,CAAC,CAArB;AAAwBiJ,IAAAA,OAAO,EAAEgP;AAAjC,GAAxB;AACA,QAAM;AAAEzV,IAAAA,IAAF;AAAQG,IAAAA;AAAR,MAAkBuG,WAAW,CACjC8O,YAAY,CAACziB,GAAb,CAAiB8X,QADgB,EAEjC2K,YAAY,CAACziB,GAAb,CAAiByO,GAFgB,EAGjCkU,eAHiC,CAAnC;;AAKA,MAAI,CAAC1V,IAAD,IAAS,CAACG,KAAd,EAAqB;AACnB,WAAO9M,mBAAA,CAACiiB,oBAAD,MAAA,CAAP;AACD;;AAED,MAAItV,IAAJ,EAAU;AACR,WAAO3M,mBAAA,CAAC0hB,mBAAD;AAAqBC,MAAAA,IAAI,EAAEhV;SAAU7H;KAArC,CAAP;AACD;;AAED,MAAIgJ,kBAAkB,CAAChB,KAAD,CAAtB,EAA+B;AAC7B,WAAO9M,mBAAA,CAACgiB,qBAAD;AAAuBvc,MAAAA,UAAU,EAAE0c,YAAY,CAACziB,GAAb,CAAiB8X;KAApD,CAAP;AACD;;AAED,SACExX,mBAAA,CAACuH,iBAAD;AAAmB9B,IAAAA,UAAU,EAAC;AAAQtB,IAAAA,UAAU,EAAEW,KAAK,CAACX;AAAY0D,IAAAA,QAAQ,EAAE/C,KAAK,CAAC+C;GAApF,CADF;AAGD;;AAED,SAASya,mBAAT,CAA6Bxd,KAA7B;AACE,MAAI,CAACA,KAAK,CAACqd,YAAX,EAAyB;AACvB,WAAO,IAAP;AACD;;AAED,SACEniB,mBAAA,CAACkiB,oBAAD,OACMpd;AACJqd,IAAAA,YAAY,EAAErd,KAAK,CAACqd;AACpBP,IAAAA,iBAAiB,EAAE9c,KAAK,CAAC8c;GAH3B,CADF;AAOD;;AAED,SAAgBW,aAAazd;AAC3B,QAAM;AAAEhE,IAAAA,GAAF;AAAOshB,IAAAA;AAAP,MAAkBI,mCAAS,CAAC;AAAEC,IAAAA,WAAW,EAAE,IAAf;AAAqBC,IAAAA,UAAU,EAAE;AAAjC,GAAD,CAAjC;;AAGA,SACE1iB,mBAAA,MAAA;AAAKc,IAAAA,GAAG,EAAEA;GAAV,EACEd,mBAAA,CAACsiB,mBAAD,OAAyBxd;AAAOsd,IAAAA,MAAM,EAAEA;GAAxC,CADF,CADF;AAKD;;ACrED,MAAMO,UAAU,GAAG,CAAC/T,KAAD,EAAsCgU,MAAtC,MAA0D;AAC3EljB,EAAAA,GAAG,EAAE;AACH2K,IAAAA,IAAI,EAAE,cADH;AAEHmN,IAAAA,QAAQ,EAAE,kBAFP;AAGHrJ,IAAAA,GAAG,EACDS,KAAK,CAAClP,GAAN,CAAUyO,GAAV,WACOyU,2BAA2BhU,KAAK,CAAClP,GAAN,CAAUiP,KAAV,CAAgBjP,GAAhB,CAAoBC,cAAciP,KAAK,CAAClP,GAAN,CAAUC;AAL7E;AADsE,CAA1D,CAAnB;;AAUA,MAAMkjB,eAAe,GAAG,CACtB/Z,KADsB,EAEtBga,OAFsB,EAGtBF,MAHsB;AAKtB,QAAMG,QAAQ,GAAGja,KAAK,CAACuB,IAAN,KAAe,OAAhC;;AACA,MAAI0Y,QAAJ,EAAc;AACZ,UAAMC,SAAS,GAAGF,OAAO,CAAC1gB,GAAR,CAAawM,KAAD,IAAW+T,UAAU,CAAC/T,KAAD,EAAQgU,MAAR,CAAjC,CAAlB;AACA,UAAMK,SAAS,GAAGna,KAAK,CAACO,QAAN,MAAoB,EAAtC;AACA,WAAO,CAAC,GAAG4Z,SAAJ,EAAe,GAAGD,SAAlB,CAAP;AACD,GAJD,MAIO;AACL,WAAOL,UAAU,CAACG,OAAO,CAAC,CAAD,CAAR,EAAaF,MAAb,CAAjB;AACD;AACF,CAbD;;AAeA,SAAgBM,uBAAuB;AACrCva,EAAAA,OADqC;AAErCG,EAAAA,KAFqC;AAGrCqa,EAAAA,WAHqC;AAIrCP,EAAAA;AAJqC;AASrC,QAAMQ,eAAe,GAAGtS,iBAAW,CAChCgS,OAAD;AACE,QAAI,CAACK,WAAL,EAAkB;AAChB;AACD;;AACDL,IAAAA,OAAO,CAACpY,OAAR,CAAgByY,WAAhB;AACD,GANgC,EAOjC,CAACA,WAAD,CAPiC,CAAnC;AAUA,QAAM5Y,gBAAgB,GAAGK,aAAO,CAAC;AAC/B,WAAQkY,OAAD;AACL,YAAMO,YAAY,GAAGR,eAAe,CAClC/Z,KADkC,EAElCga,OAFkC,EAGlCF,MAHkC,CAApC;AAKA9Z,MAAAA,KAAK,CAACyO,QAAN,CAAe8L,YAAf;AACAD,MAAAA,eAAe,CAACN,OAAD,CAAf;AACD,KARD;AASD,GAV+B,EAU7B,CAACha,KAAD,EAAQsa,eAAR,EAAyBR,MAAzB,CAV6B,CAAhC;AAYA,QAAMG,QAAQ,GAAGja,KAAK,CAACuB,IAAN,KAAe,OAAhC;AACA,QAAMlE,cAAc,GAAGyE,aAAO,CAAC;AAC7B,UAAM0Y,eAAe,GAAGP,QAAQ,GAC5B;AAEE,UAAMpa,OAAO,CAAC4a,6BAAR,CAAsC;AAC1C;AACAC,MAAAA,gBAAgB,EAAE1a,KAAK,CAAC0a;AAFkB,KAAtC,CAHoB,GAO5B,YAAY;AAEV,UAAM7a,OAAO,CAAC8a,yBAAR,CAAkC;AACtC;AACAD,MAAAA,gBAAgB,EAAE1a,KAAK,CAAC0a;AAFc,KAAlC,CAFI,CAPhB;AAeA,WAAO;AACL,YAAM/jB,GAAG,GAAG,MAAM6jB,eAAe,EAAjC;;AACA,UAAI,CAAC7jB,GAAL,EAAU;AACR;AACD;;AACD8K,MAAAA,gBAAgB,CAAC9K,GAAD,CAAhB;AACD,KAND;AAQD,GAxB6B,EAwB3B,CAACkJ,OAAD,EAAUG,KAAK,CAAC0a,gBAAhB,EAAkCT,QAAlC,EAA4CxY,gBAA5C,CAxB2B,CAA9B;AA0BA,SAAO;AACLpE,IAAAA,cADK;AAELoE,IAAAA,gBAFK;AAGL;AACA9E,IAAAA,UAAU,EAAE,OAJP;AAKL/H,IAAAA,YAAY,EAAE,EALT;AAMLkI,IAAAA,eAAe,EAAE,KANZ;AAOLZ,IAAAA,eAAe,EAAE+d,QAPZ;AAQL7c,IAAAA,aAAa,EAAE,IARV;AASL/B,IAAAA,UAAU,EAAE,KATP;AAUL2C,IAAAA,OAAO,EAAE,KAVJ;AAWLvB,IAAAA,MAAM,EAAE,KAXH;AAYL;AACAO,IAAAA,QAAQ,EAAE,cAbL;AAcL;AACAoE,IAAAA,SAAS,EAAE;AAfN,GAAP;AAiBD;;AC1ED,SAASwZ,cAAT,CAAwB5e,KAAxB;AACE,QAAM;AAAEyS,IAAAA,QAAF;AAAYnI,IAAAA,KAAZ;AAAmBwT,IAAAA;AAAnB,MAA8B9d,KAApC;AAEA,QAAM+X,WAAW,GAAqB/L,iBAAW,CAAC,CAAC8G,CAAD,EAAI9E,KAAJ,KAAcA,KAAK,CAACmI,cAAN,EAAf,EAAuC,EAAvC,CAAjD;AACA,QAAMiC,SAAS,GAAmBpM,iBAAW,CAC3C,CAAC;AAAEqM,IAAAA,QAAF;AAAYC,IAAAA;AAAZ,GAAD;AACE,UAAMd,QAAQ,GAAGgB,SAAS,CAAClO,KAAD,EAAQ+N,QAAR,EAAkBC,QAAlB,CAA1B;AACA7F,IAAAA,QAAQ,CAAC+E,QAAD,CAAR;AACD,GAJ0C,EAK3C,CAAClN,KAAD,EAAQmI,QAAR,CAL2C,CAA7C;AAOA,QAAMiG,MAAM,GAAG1M,iBAAW,CACxB,CAACqM,QAAD,EAAWC,QAAX;AACE,UAAMd,QAAQ,GAAGgB,SAAS,CAAClO,KAAD,EAAQ+N,QAAR,EAAkBC,QAAlB,CAA1B;AACA7F,IAAAA,QAAQ,CAAC+E,QAAD,CAAR;AACD,GAJuB,EAKxB,CAAClN,KAAD,EAAQmI,QAAR,CALwB,CAA1B;AAQA,QAAMoM,mBAAmB,GAAG7S,iBAAW,CACpC3G,KAAD;AACEoN,IAAAA,QAAQ,CAACnI,KAAK,CAAC3O,MAAN,CAAa,CAACmjB,EAAD,EAAKthB,CAAL,KAAWA,CAAC,KAAK6H,KAA9B,CAAD,CAAR;AACD,GAHoC,EAIrC,CAACiF,KAAD,EAAQmI,QAAR,CAJqC,CAAvC;AAOA,QAAM;AAAE5O,IAAAA,OAAF;AAAWG,IAAAA;AAAX,MAAqBhE,KAAK,CAACuD,GAAjC;AACA,QAAMoP,gBAAgB,GAAGyL,sBAAsB,CAAC;AAC9Cva,IAAAA,OAD8C;AAE9CG,IAAAA,KAF8C;AAG9C8Z,IAAAA;AAH8C,GAAD,CAA/C;AAMA,SACE5iB,mBAAA,eAAA,MAAA,EACG8E,KAAK,CAAC7G,QAAN,CAAe,EACd,GAAG6G,KADW;AAEd+X,IAAAA,WAFc;AAGdK,IAAAA,SAHc;AAIdM,IAAAA,MAJc;AAKdmG,IAAAA;AALc,GAAf,CADH,EAQE3jB,mBAAA,CAACiL,yBAAD,OACMwM;AACJzM,IAAAA,mBAAmB,EAAElG,KAAK,CAACkG;GAF7B,CARF,CADF;AAeD;;;AAGD,SAAS6Y,oBAAT,CAA8B;AAC5BC,EAAAA,UAD4B;AAE5B3Z,EAAAA,KAF4B;AAG5BqT,EAAAA,MAH4B;AAI5BmG,EAAAA,mBAJ4B;AAK5B1lB,EAAAA;AAL4B,CAA9B;AAiBE,QAAM8lB,aAAa,GAAG/jB,aAAA,CACpB,MAAOmK,KAAK,GAAG,CAAR,GAAY,MAAMqT,MAAM,CAACrT,KAAD,EAAQ,CAAR,CAAxB,GAAqC5I,SADxB,EAEpB,CAAC4I,KAAD,EAAQqT,MAAR,CAFoB,CAAtB;AAIA,QAAMwG,gBAAgB,GAAGhkB,aAAA,CACvB,MAAOmK,KAAK,GAAG2Z,UAAU,GAAG,CAArB,GAAyB,MAAMtG,MAAM,CAACrT,KAAD,EAAQ2Z,UAAU,GAAG,CAArB,CAArC,GAA+DviB,SAD/C,EAEvB,CAAC4I,KAAD,EAAQqT,MAAR,EAAgBsG,UAAhB,CAFuB,CAAzB;AAIA,QAAMG,YAAY,GAAGnT,iBAAW,CAAC,MAAM6S,mBAAmB,CAACxZ,KAAD,CAA1B,EAAmC,CAACA,KAAD,EAAQwZ,mBAAR,CAAnC,CAAhC;AAEA,SACE3jB,mBAAA,eAAA,MAAA,EACG/B,QAAQ,CAAC;AACR8c,IAAAA,YAAY,EAAEiJ,gBADN;AAERlJ,IAAAA,SAAS,EAAEiJ,aAFH;AAGRlc,IAAAA,QAAQ,EAAEoc;AAHF,GAAD,CADX,CADF;AASD;;AAED,MAAMC,WAAW,GAAmB,EAApC;AAEA,SAAgBC,gCACdrf;AAKA,SACE9E,mBAAA,CAACsT,cAAD;AAAgBjL,IAAAA,GAAG,EAAEvD,KAAK,CAACuD;GAA3B,EACErI,mBAAA,CAACqU,gCAAD;AACEC,IAAAA,QAAQ,EAAE;AACVxL,IAAAA,KAAK,EAAEhE,KAAK,CAACuD,GAAN,CAAUS;AACjByL,IAAAA,mBAAmB,EAAEzP,KAAK,CAACyP;AAC3BC,IAAAA,aAAa,EAAEG;GAJjB,EAMG,CAAC;AAAE9S,IAAAA,KAAF;AAASyB,IAAAA,QAAT;AAAmBiU,IAAAA,QAAnB;AAA6BU,IAAAA;AAA7B,GAAD;AACC,WACEjY,mBAAA,CAAC0jB,cAAD,OACM5e;AACJsK,MAAAA,KAAK,EAAEvN,KAAK,IAAIqiB;AAChB/f,MAAAA,UAAU,EAAEb;AACZiU,MAAAA,QAAQ,EAAEA;AACVvM,MAAAA,mBAAmB,EAAElG,KAAK,CAACkG;AAC3BzI,MAAAA,GAAG,KAAK0V;KANV,EAQImM,WAAD,IACCpkB,mBAAA,CAACoe,gBAAD,OAAoCgG;KAApC,EACG,CAAC;AAAE5kB,MAAAA,IAAF;AAAQ2E,MAAAA,UAAR;AAAoBwZ,MAAAA,UAApB;AAAgCxT,MAAAA;AAAhC,KAAD,KACCnK,mBAAA,CAAC6jB,oBAAD;AACE1Z,MAAAA,KAAK,EAAEA;AACPqT,MAAAA,MAAM,EAAE4G,WAAW,CAAC5G;AACpBmG,MAAAA,mBAAmB,EAAES,WAAW,CAACT;AACjCG,MAAAA,UAAU,EAAE,CAAAjiB,KAAK,QAAL,YAAAA,KAAK,CAAE/C,MAAP,KAAiB;KAJ/B,EAMG,CAAC;AAAEic,MAAAA,YAAF;AAAgBD,MAAAA,SAAhB;AAA2BjT,MAAAA;AAA3B,KAAD,KACC7H,mBAAA,CAACuiB,YAAD;AACEpY,MAAAA,KAAK,EAAEA;AACPgY,MAAAA,YAAY,EAAE3iB;AACd2E,MAAAA,UAAU,EAAEA;AACZsW,MAAAA,gBAAgB,EAAEkD;AAClB7C,MAAAA,SAAS,EAAEA;AACXC,MAAAA,YAAY,EAAEA;AACdlT,MAAAA,QAAQ,EAAEA;AACV+Z,MAAAA,iBAAiB,EAAE9c,KAAK,CAAC8c;KAR3B,CAPJ,CAFJ,CATJ,CADF;AAoCD,GA3CH,CADF,CADF;AAiDD;;SCtKeyC,8BACdvf;AAKA,QAAM;AAAE6D,IAAAA,OAAF;AAAWG,IAAAA;AAAX,MAAqBhE,KAAK,CAACuD,GAAjC;AACA,QAAMoP,gBAAgB,GAAGyL,sBAAsB,CAAC;AAC9Cva,IAAAA,OAD8C;AAE9CG,IAAAA,KAF8C;AAG9C8Z,IAAAA,MAAM,EAAE9d,KAAK,CAAC8d;AAHgC,GAAD,CAA/C;AAMA,SACE5iB,mBAAA,CAACsT,cAAD;AAAgBjL,IAAAA,GAAG,EAAEvD,KAAK,CAACuD;GAA3B,EACErI,mBAAA,CAACqU,gCAAD;AACEC,IAAAA,QAAQ,EAAE;AACVxL,IAAAA,KAAK,EAAEhE,KAAK,CAACuD,GAAN,CAAUS;AACjByL,IAAAA,mBAAmB,EAAEzP,KAAK,CAACyP;AAC3BC,IAAAA,aAAa,EAAEG;GAJjB,EAMG,CAAC;AAAE9S,IAAAA,KAAF;AAASyB,IAAAA;AAAT,GAAD;AACC,WAAOzB,KAAK,GACV7B,mBAAA,CAACuiB,YAAD;AACE1a,MAAAA,QAAQ,EAAE,MAAM/C,KAAK,CAACuD,GAAN,CAAUS,KAAV,CAAgBwb,WAAhB;AAChBnC,MAAAA,YAAY,EAAEtgB;AACdsC,MAAAA,UAAU,EAAEb;AACZse,MAAAA,iBAAiB,EAAE9c,KAAK,CAAC8c;KAJ3B,CADU,GAQV5hB,mBAAA,CAACiL,yBAAD,OACMwM;AACJzM,MAAAA,mBAAmB,EAAElG,KAAK,CAACkG;KAF7B,CARF;AAaD,GApBH,CADF,CADF;AA0BD;;;;;;;;;;;;;;;;;;;;;;;"}