@comet/cms-admin 8.20.2 → 9.0.0-beta.1

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 (606) hide show
  1. package/lib/blocks/AnchorBlock.js +18 -23
  2. package/lib/blocks/DamVideoBlock.generated.js +1 -7
  3. package/lib/blocks/DamVideoBlock.js +38 -44
  4. package/lib/blocks/EmailLinkBlock.js +19 -25
  5. package/lib/blocks/ExternalLinkBlock.js +22 -28
  6. package/lib/blocks/InternalLinkBlock.generated.js +1 -7
  7. package/lib/blocks/InternalLinkBlock.js +31 -38
  8. package/lib/blocks/PhoneLinkBlock.js +19 -25
  9. package/lib/blocks/PixelImageBlock.generated.js +1 -7
  10. package/lib/blocks/PixelImageBlock.js +37 -43
  11. package/lib/blocks/SpaceBlock.js +16 -22
  12. package/lib/blocks/SvgImageBlock.generated.js +1 -7
  13. package/lib/blocks/SvgImageBlock.js +25 -31
  14. package/lib/blocks/VimeoVideoBlock.js +34 -40
  15. package/lib/blocks/YouTubeVideoBlock.js +34 -40
  16. package/lib/blocks/clipboard/CannotPasteBlockDialog.js +18 -19
  17. package/lib/blocks/clipboard/useBlockClipboard.js +14 -19
  18. package/lib/blocks/common/AddBlockDrawer.js +41 -47
  19. package/lib/blocks/common/AdminComponentStickyFooter.d.ts +1 -1
  20. package/lib/blocks/common/AdminComponentStickyFooter.d.ts.map +1 -1
  21. package/lib/blocks/common/AdminComponentStickyFooter.js +2 -8
  22. package/lib/blocks/common/AdminComponentStickyHeader.d.ts +1 -1
  23. package/lib/blocks/common/AdminComponentStickyHeader.d.ts.map +1 -1
  24. package/lib/blocks/common/AdminComponentStickyHeader.js +2 -8
  25. package/lib/blocks/common/AdminTabsTabContent.js +9 -15
  26. package/lib/blocks/common/BlockAdminComponentButton.js +8 -13
  27. package/lib/blocks/common/BlockAdminComponentNestedButton.js +17 -23
  28. package/lib/blocks/common/BlockAdminComponentPaper.js +12 -19
  29. package/lib/blocks/common/BlockAdminComponentRoot.js +11 -16
  30. package/lib/blocks/common/BlockAdminComponentSection.js +12 -18
  31. package/lib/blocks/common/BlockAdminComponentSectionGroup.js +9 -15
  32. package/lib/blocks/common/BlockAdminTabLabel.js +9 -15
  33. package/lib/blocks/common/BlockAdminTabs.d.ts +1 -0
  34. package/lib/blocks/common/BlockAdminTabs.d.ts.map +1 -1
  35. package/lib/blocks/common/BlockAdminTabs.js +24 -30
  36. package/lib/blocks/common/Collapsible.js +7 -13
  37. package/lib/blocks/common/CollapsibleSwitchButtonHeader.js +8 -14
  38. package/lib/blocks/common/HiddenInSubroute.js +5 -11
  39. package/lib/blocks/common/blockRow/BlockPreviewContent.d.ts +1 -1
  40. package/lib/blocks/common/blockRow/BlockPreviewContent.d.ts.map +1 -1
  41. package/lib/blocks/common/blockRow/BlockPreviewContent.js +18 -26
  42. package/lib/blocks/common/blockRow/BlockPreviewContent.sc.d.ts +5 -5
  43. package/lib/blocks/common/blockRow/BlockPreviewContent.sc.d.ts.map +1 -1
  44. package/lib/blocks/common/blockRow/BlockPreviewContent.sc.js +6 -12
  45. package/lib/blocks/common/blockRow/BlockRow.d.ts +1 -1
  46. package/lib/blocks/common/blockRow/BlockRow.d.ts.map +1 -1
  47. package/lib/blocks/common/blockRow/BlockRow.js +51 -58
  48. package/lib/blocks/common/blockRow/BlockRow.sc.js +16 -22
  49. package/lib/blocks/common/blockRow/image/StackedImages.d.ts +1 -0
  50. package/lib/blocks/common/blockRow/image/StackedImages.d.ts.map +1 -1
  51. package/lib/blocks/common/blockRow/image/StackedImages.js +18 -26
  52. package/lib/blocks/common/blockRow/image/StackedImages.sc.d.ts +8 -8
  53. package/lib/blocks/common/blockRow/image/StackedImages.sc.d.ts.map +1 -1
  54. package/lib/blocks/common/blockRow/image/StackedImages.sc.js +11 -17
  55. package/lib/blocks/common/usePromise.js +6 -10
  56. package/lib/blocks/common/useScrollRestoration.d.ts +2 -2
  57. package/lib/blocks/common/useScrollRestoration.d.ts.map +1 -1
  58. package/lib/blocks/common/useScrollRestoration.js +8 -14
  59. package/lib/blocks/config/BlocksConfigContext.js +7 -14
  60. package/lib/blocks/context/BlockContext.js +2 -8
  61. package/lib/blocks/context/BlockContextProvider.js +4 -10
  62. package/lib/blocks/context/useBlockContext.js +12 -18
  63. package/lib/blocks/createImageLinkBlock.js +10 -16
  64. package/lib/blocks/createLinkBlock.js +25 -30
  65. package/lib/blocks/createRichTextBlock.js +29 -38
  66. package/lib/blocks/createSeoBlock.js +114 -121
  67. package/lib/blocks/createTableBlock.js +30 -36
  68. package/lib/blocks/createTextImageBlock.js +43 -48
  69. package/lib/blocks/createTextLinkBlock.js +24 -30
  70. package/lib/blocks/factories/columnsBlock/ColumnsIcon.d.ts +1 -0
  71. package/lib/blocks/factories/columnsBlock/ColumnsIcon.d.ts.map +1 -1
  72. package/lib/blocks/factories/columnsBlock/ColumnsIcon.js +6 -12
  73. package/lib/blocks/factories/columnsBlock/ColumnsLayoutPreview.js +13 -21
  74. package/lib/blocks/factories/columnsBlock/FinalFormColumnsSelect.js +7 -13
  75. package/lib/blocks/factories/columnsBlock/FinalFormLayoutSelect.js +21 -27
  76. package/lib/blocks/factories/createBlocksBlock.js +113 -117
  77. package/lib/blocks/factories/createColumnsBlock.js +85 -91
  78. package/lib/blocks/factories/createCompositeBlock.js +54 -60
  79. package/lib/blocks/factories/createListBlock.js +80 -84
  80. package/lib/blocks/factories/createOneOfBlock.js +54 -61
  81. package/lib/blocks/factories/createOptionalBlock.js +24 -29
  82. package/lib/blocks/factories/listBlock/createUseAdminComponent.js +24 -30
  83. package/lib/blocks/factories/spaceBlock/createSpaceBlock.js +16 -22
  84. package/lib/blocks/form/AutosaveFinalForm.d.ts +1 -0
  85. package/lib/blocks/form/AutosaveFinalForm.d.ts.map +1 -1
  86. package/lib/blocks/form/AutosaveFinalForm.js +7 -13
  87. package/lib/blocks/form/BlocksFinalForm.d.ts +1 -0
  88. package/lib/blocks/form/BlocksFinalForm.d.ts.map +1 -1
  89. package/lib/blocks/form/BlocksFinalForm.js +12 -18
  90. package/lib/blocks/form/createFinalFormBlock.js +7 -12
  91. package/lib/blocks/helpers/VideoOptionsFields.js +15 -21
  92. package/lib/blocks/helpers/composeBlocks/composeBlocks.js +40 -40
  93. package/lib/blocks/helpers/composeBlocks/createCompositeBlockField.js +3 -9
  94. package/lib/blocks/helpers/composeBlocks/createCompositeBlockFields.js +3 -9
  95. package/lib/blocks/helpers/composeBlocks/createSettingsBlock.js +3 -9
  96. package/lib/blocks/helpers/composeBlocks/types.js +1 -5
  97. package/lib/blocks/helpers/composeBlocks/utility-types.js +1 -5
  98. package/lib/blocks/helpers/composeBlocks/utils.js +5 -14
  99. package/lib/blocks/helpers/createBlockSkeleton.js +14 -16
  100. package/lib/blocks/helpers/createCompositeBlockSelectField.js +8 -14
  101. package/lib/blocks/helpers/createCompositeBlockSwitchField.js +8 -14
  102. package/lib/blocks/helpers/createCompositeBlockTextField.js +8 -14
  103. package/lib/blocks/helpers/decomposeUpdateStateAction.js +3 -9
  104. package/lib/blocks/helpers/deduplicateBlockDependencies.js +3 -10
  105. package/lib/blocks/helpers/isBlockInterface.js +1 -7
  106. package/lib/blocks/helpers/withAdditionalBlockAttributes.js +1 -7
  107. package/lib/blocks/iframebridge/HoverPreviewComponent.js +15 -24
  108. package/lib/blocks/iframebridge/HoverPreviewComponent.sc.d.ts +1 -3
  109. package/lib/blocks/iframebridge/HoverPreviewComponent.sc.d.ts.map +1 -1
  110. package/lib/blocks/iframebridge/HoverPreviewComponent.sc.js +6 -12
  111. package/lib/blocks/iframebridge/IFrameBridge.js +26 -32
  112. package/lib/blocks/iframebridge/IFrameMessage.js +16 -8
  113. package/lib/blocks/iframebridge/SelectPreviewComponent.js +9 -15
  114. package/lib/blocks/iframebridge/useIFrameBridge.js +4 -10
  115. package/lib/blocks/image/EditImageDialog.js +66 -69
  116. package/lib/blocks/rte/extension/CmsLink/Decorator.js +4 -10
  117. package/lib/blocks/rte/extension/CmsLink/EditorComponent.js +3 -9
  118. package/lib/blocks/rte/extension/CmsLink/createCmsLinkToolbarButton.js +46 -52
  119. package/lib/blocks/seo/useSeoTagGeneration.generated.js +1 -7
  120. package/lib/blocks/seo/useSeoTagGeneration.js +24 -30
  121. package/lib/blocks/seo/useSitemapChangeFrequencyFormOptions.js +3 -9
  122. package/lib/blocks/seo/useSitemapPagePriorityFormOptions.js +3 -9
  123. package/lib/blocks/table/CellValue.js +12 -18
  124. package/lib/blocks/table/ColumnHeader.js +74 -80
  125. package/lib/blocks/table/EditCell.js +23 -29
  126. package/lib/blocks/table/FailedToPasteSnackbar.js +8 -14
  127. package/lib/blocks/table/RowActionsCell.js +58 -64
  128. package/lib/blocks/table/TableBlockContext.js +7 -13
  129. package/lib/blocks/table/TableBlockGrid.js +31 -35
  130. package/lib/blocks/table/__mocks__/TableBlockData.mocks.js +23 -29
  131. package/lib/blocks/table/dataGridStyles.js +1 -7
  132. package/lib/blocks/table/utils/column.js +19 -25
  133. package/lib/blocks/table/utils/ensureMinimumTableState.js +4 -10
  134. package/lib/blocks/table/utils/getClipboardValueForSchema.js +3 -9
  135. package/lib/blocks/table/utils/row.js +15 -21
  136. package/lib/blocks/table/utils/rteSchema.js +3 -9
  137. package/lib/blocks/table/utils/useRecentlyPastedIds.js +6 -12
  138. package/lib/blocks/types.js +19 -22
  139. package/lib/blocks/utils/parallelAsyncEvery.js +1 -7
  140. package/lib/blocks/utils.js +1 -7
  141. package/lib/blocks/validators/isValidUrl.js +1 -7
  142. package/lib/blocks.generated.js +1 -5
  143. package/lib/builds/BuildEntry.generated.js +1 -7
  144. package/lib/builds/BuildEntry.js +44 -50
  145. package/lib/builds/PublishButton.js +13 -19
  146. package/lib/builds/PublisherPage.generated.js +1 -7
  147. package/lib/builds/PublisherPage.js +33 -39
  148. package/lib/builds/StartBuildsDialog.generated.js +1 -7
  149. package/lib/builds/StartBuildsDialog.js +29 -33
  150. package/lib/common/DropdownMenuItem.js +22 -29
  151. package/lib/common/DropdownMenuItem.sc.d.ts +3 -9
  152. package/lib/common/DropdownMenuItem.sc.d.ts.map +1 -1
  153. package/lib/common/DropdownMenuItem.sc.js +10 -16
  154. package/lib/common/InsertInBetweenAction.js +9 -15
  155. package/lib/common/InsertInBetweenActionButton.js +8 -14
  156. package/lib/common/MarkedMatches.js +16 -23
  157. package/lib/common/MasterMenu.js +20 -27
  158. package/lib/common/MasterMenuRoutes.js +11 -18
  159. package/lib/common/PageList.d.ts +1 -0
  160. package/lib/common/PageList.d.ts.map +1 -1
  161. package/lib/common/PageList.js +22 -28
  162. package/lib/common/PageName.d.ts +1 -0
  163. package/lib/common/PageName.d.ts.map +1 -1
  164. package/lib/common/PageName.generated.js +1 -7
  165. package/lib/common/PageName.js +15 -21
  166. package/lib/common/SearchInput.js +24 -30
  167. package/lib/common/apollo/links/includeInvisibleContentContext.js +3 -8
  168. package/lib/common/errors/errorMessages.js +9 -15
  169. package/lib/common/header/Header.js +13 -18
  170. package/lib/common/header/ImpersonationInlay.js +22 -28
  171. package/lib/common/header/UserHeaderItem.js +58 -64
  172. package/lib/common/header/about/AboutModal.js +41 -46
  173. package/lib/common/header/about/build-information/buildInformation.js +1 -5
  174. package/lib/common/header/about/build-information/useBuildInformation.js +3 -9
  175. package/lib/common/image/ChooseFocalPoint.js +19 -25
  176. package/lib/common/image/ImageCrop.js +15 -23
  177. package/lib/common/image/ImageCrop.sc.js +10 -16
  178. package/lib/common/impersonation/commonImpersonationMessages.js +6 -12
  179. package/lib/common/signOutButton/SignOutButton.gql.d.ts +1 -1
  180. package/lib/common/signOutButton/SignOutButton.gql.d.ts.map +1 -1
  181. package/lib/common/signOutButton/SignOutButton.gql.generated.js +1 -7
  182. package/lib/common/signOutButton/SignOutButton.gql.js +2 -8
  183. package/lib/common/signOutButton/SignOutButton.js +13 -18
  184. package/lib/common/useEditState.js +10 -17
  185. package/lib/common/useSaveState.d.ts +1 -1
  186. package/lib/common/useSaveState.d.ts.map +1 -1
  187. package/lib/common/useSaveState.js +11 -17
  188. package/lib/config/CometConfigContext.js +11 -18
  189. package/lib/contentLanguage/contentLanguageConfig.js +3 -9
  190. package/lib/contentLanguage/useContentLanguage.js +3 -9
  191. package/lib/contentScope/ContentScopeIndicator.js +21 -27
  192. package/lib/contentScope/ContentScopeSelect.js +40 -47
  193. package/lib/contentScope/Controls.d.ts +1 -1
  194. package/lib/contentScope/Controls.d.ts.map +1 -1
  195. package/lib/contentScope/Controls.js +6 -12
  196. package/lib/contentScope/Provider.d.ts +1 -1
  197. package/lib/contentScope/Provider.d.ts.map +1 -1
  198. package/lib/contentScope/Provider.js +29 -37
  199. package/lib/contentScope/noContentScopeFallback/NoContentScopeFallback.js +30 -36
  200. package/lib/contentScope/useContentScopeConfig.js +5 -11
  201. package/lib/contentScope/utils/createPathFromDimensionValues.js +1 -7
  202. package/lib/contentScope/utils/defaultCreatePath.js +5 -10
  203. package/lib/contentScope/utils/groupObjectsIntoArrays.js +1 -7
  204. package/lib/cronJobs/CronJobsGrid.generated.js +1 -7
  205. package/lib/cronJobs/CronJobsGrid.js +51 -55
  206. package/lib/cronJobs/CronJobsPage.js +27 -33
  207. package/lib/cronJobs/JobLogs.generated.js +1 -7
  208. package/lib/cronJobs/JobLogs.js +19 -25
  209. package/lib/cronJobs/JobRuntime.js +11 -17
  210. package/lib/cronJobs/JobStatus.d.ts +1 -1
  211. package/lib/cronJobs/JobStatus.js +2 -8
  212. package/lib/cronJobs/JobsGrid.generated.js +1 -7
  213. package/lib/cronJobs/JobsGrid.js +35 -41
  214. package/lib/dam/CurrentDamFolderProvider.js +7 -14
  215. package/lib/dam/DamPage.js +21 -26
  216. package/lib/dam/DamTable.js +36 -44
  217. package/lib/dam/DataGrid/DamContextMenu.d.ts.map +1 -1
  218. package/lib/dam/DataGrid/DamContextMenu.generated.js +1 -7
  219. package/lib/dam/DataGrid/DamContextMenu.gql.d.ts +3 -3
  220. package/lib/dam/DataGrid/DamContextMenu.gql.d.ts.map +1 -1
  221. package/lib/dam/DataGrid/DamContextMenu.gql.generated.js +1 -7
  222. package/lib/dam/DataGrid/DamContextMenu.gql.js +4 -10
  223. package/lib/dam/DataGrid/DamContextMenu.js +70 -77
  224. package/lib/dam/DataGrid/FolderDataGrid.gql.d.ts +5 -5
  225. package/lib/dam/DataGrid/FolderDataGrid.gql.d.ts.map +1 -1
  226. package/lib/dam/DataGrid/FolderDataGrid.gql.generated.js +1 -7
  227. package/lib/dam/DataGrid/FolderDataGrid.gql.js +9 -15
  228. package/lib/dam/DataGrid/FolderDataGrid.js +101 -125
  229. package/lib/dam/DataGrid/FolderDataGrid.sc.js +8 -14
  230. package/lib/dam/DataGrid/duplicatedFilenames/ManualDuplicatedFilenamesHandler.gql.d.ts +1 -1
  231. package/lib/dam/DataGrid/duplicatedFilenames/ManualDuplicatedFilenamesHandler.gql.d.ts.map +1 -1
  232. package/lib/dam/DataGrid/duplicatedFilenames/ManualDuplicatedFilenamesHandler.gql.generated.js +1 -7
  233. package/lib/dam/DataGrid/duplicatedFilenames/ManualDuplicatedFilenamesHandler.gql.js +2 -8
  234. package/lib/dam/DataGrid/duplicatedFilenames/ManualDuplicatedFilenamesHandler.js +20 -26
  235. package/lib/dam/DataGrid/duplicatedFilenames/ManuallyHandleDuplicatedFilenamesDialog.d.ts +2 -2
  236. package/lib/dam/DataGrid/duplicatedFilenames/ManuallyHandleDuplicatedFilenamesDialog.d.ts.map +1 -1
  237. package/lib/dam/DataGrid/duplicatedFilenames/ManuallyHandleDuplicatedFilenamesDialog.js +49 -53
  238. package/lib/dam/DataGrid/fileUpload/FileUploadContext.js +10 -16
  239. package/lib/dam/DataGrid/fileUpload/FileUploadErrorDialog.js +35 -39
  240. package/lib/dam/DataGrid/fileUpload/ProgressDialog.js +21 -25
  241. package/lib/dam/DataGrid/fileUpload/UploadFilesButton.js +18 -24
  242. package/lib/dam/DataGrid/fileUpload/fileUpload.utils.js +2 -10
  243. package/lib/dam/DataGrid/fileUpload/fileUploadErrorMessages.js +26 -32
  244. package/lib/dam/DataGrid/fileUpload/useDamFileUpload.gql.d.ts +2 -2
  245. package/lib/dam/DataGrid/fileUpload/useDamFileUpload.gql.d.ts.map +1 -1
  246. package/lib/dam/DataGrid/fileUpload/useDamFileUpload.gql.generated.js +1 -7
  247. package/lib/dam/DataGrid/fileUpload/useDamFileUpload.gql.js +3 -9
  248. package/lib/dam/DataGrid/fileUpload/useDamFileUpload.js +58 -64
  249. package/lib/dam/DataGrid/filter/DamSortPopover.js +28 -36
  250. package/lib/dam/DataGrid/filter/DamSortPopover.sc.d.ts +2 -4
  251. package/lib/dam/DataGrid/filter/DamSortPopover.sc.d.ts.map +1 -1
  252. package/lib/dam/DataGrid/filter/DamSortPopover.sc.js +8 -14
  253. package/lib/dam/DataGrid/filter/DamTableFilter.d.ts.map +1 -1
  254. package/lib/dam/DataGrid/filter/DamTableFilter.js +15 -22
  255. package/lib/dam/DataGrid/footer/DamFooter.js +6 -12
  256. package/lib/dam/DataGrid/footer/UploadFooter.js +13 -19
  257. package/lib/dam/DataGrid/label/DamItemLabel.js +19 -25
  258. package/lib/dam/DataGrid/label/DamItemLabelColumn.js +25 -32
  259. package/lib/dam/DataGrid/selection/DamMoreActions.js +38 -44
  260. package/lib/dam/DataGrid/selection/DamSelectionContext.generated.js +1 -7
  261. package/lib/dam/DataGrid/selection/DamSelectionContext.js +42 -48
  262. package/lib/dam/DataGrid/tags/ArchivedTag.js +8 -14
  263. package/lib/dam/DataGrid/tags/LicenseValidityTags.js +16 -22
  264. package/lib/dam/DataGrid/tags/Tag.d.ts +1 -1
  265. package/lib/dam/DataGrid/tags/Tag.js +2 -8
  266. package/lib/dam/DataGrid/thumbnail/AudioThumbnail.js +8 -14
  267. package/lib/dam/DataGrid/thumbnail/DamThumbnail.gql.d.ts +1 -1
  268. package/lib/dam/DataGrid/thumbnail/DamThumbnail.gql.d.ts.map +1 -1
  269. package/lib/dam/DataGrid/thumbnail/DamThumbnail.gql.generated.js +1 -7
  270. package/lib/dam/DataGrid/thumbnail/DamThumbnail.gql.js +2 -8
  271. package/lib/dam/DataGrid/thumbnail/DamThumbnail.js +28 -41
  272. package/lib/dam/DataGrid/thumbnail/VideoThumbnail.js +8 -14
  273. package/lib/dam/DataGrid/useDamSearchHighlighting.js +5 -12
  274. package/lib/dam/FileActions/ConfirmDeleteDialog.js +28 -33
  275. package/lib/dam/FileActions/ConfirmDeleteDialog.sc.js +9 -15
  276. package/lib/dam/FileForm/CropSettingsFields.d.ts +1 -0
  277. package/lib/dam/FileForm/CropSettingsFields.d.ts.map +1 -1
  278. package/lib/dam/FileForm/CropSettingsFields.js +34 -40
  279. package/lib/dam/FileForm/Duplicates.generated.js +1 -7
  280. package/lib/dam/FileForm/Duplicates.js +37 -43
  281. package/lib/dam/FileForm/EditFile.gql.d.ts +3 -3
  282. package/lib/dam/FileForm/EditFile.gql.d.ts.map +1 -1
  283. package/lib/dam/FileForm/EditFile.gql.generated.d.ts +3 -0
  284. package/lib/dam/FileForm/EditFile.gql.generated.d.ts.map +1 -1
  285. package/lib/dam/FileForm/EditFile.gql.generated.js +1 -7
  286. package/lib/dam/FileForm/EditFile.gql.js +5 -11
  287. package/lib/dam/FileForm/EditFile.js +79 -86
  288. package/lib/dam/FileForm/FilePreview.d.ts.map +1 -1
  289. package/lib/dam/FileForm/FilePreview.gql.d.ts +3 -3
  290. package/lib/dam/FileForm/FilePreview.gql.d.ts.map +1 -1
  291. package/lib/dam/FileForm/FilePreview.gql.generated.js +1 -7
  292. package/lib/dam/FileForm/FilePreview.gql.js +4 -10
  293. package/lib/dam/FileForm/FilePreview.js +56 -64
  294. package/lib/dam/FileForm/FileSettingsFields.generated.js +1 -7
  295. package/lib/dam/FileForm/FileSettingsFields.gql.d.ts +2 -2
  296. package/lib/dam/FileForm/FileSettingsFields.gql.d.ts.map +1 -1
  297. package/lib/dam/FileForm/FileSettingsFields.gql.generated.js +1 -7
  298. package/lib/dam/FileForm/FileSettingsFields.gql.js +3 -9
  299. package/lib/dam/FileForm/FileSettingsFields.js +78 -84
  300. package/lib/dam/FileForm/ImageInfos.js +24 -30
  301. package/lib/dam/FileForm/ReplaceFileButton.js +30 -36
  302. package/lib/dam/FileForm/licenseType.js +6 -12
  303. package/lib/dam/FileForm/previews/AudioPreview.js +15 -21
  304. package/lib/dam/FileForm/previews/DefaultFilePreview.js +11 -17
  305. package/lib/dam/FileForm/previews/ImagePreview.d.ts +1 -0
  306. package/lib/dam/FileForm/previews/ImagePreview.d.ts.map +1 -1
  307. package/lib/dam/FileForm/previews/ImagePreview.js +4 -10
  308. package/lib/dam/FileForm/previews/PdfPreview.js +7 -13
  309. package/lib/dam/FileForm/previews/VideoPreview.generated.js +1 -7
  310. package/lib/dam/FileForm/previews/VideoPreview.js +15 -21
  311. package/lib/dam/FolderForm/AddFolder.gql.d.ts +1 -1
  312. package/lib/dam/FolderForm/AddFolder.gql.d.ts.map +1 -1
  313. package/lib/dam/FolderForm/AddFolder.gql.generated.js +1 -7
  314. package/lib/dam/FolderForm/AddFolder.gql.js +2 -8
  315. package/lib/dam/FolderForm/AddFolder.js +13 -19
  316. package/lib/dam/FolderForm/EditFolder.gql.d.ts +2 -2
  317. package/lib/dam/FolderForm/EditFolder.gql.d.ts.map +1 -1
  318. package/lib/dam/FolderForm/EditFolder.gql.generated.js +1 -7
  319. package/lib/dam/FolderForm/EditFolder.gql.js +3 -9
  320. package/lib/dam/FolderForm/EditFolder.js +11 -17
  321. package/lib/dam/FolderForm/FolderFormFields.js +7 -13
  322. package/lib/dam/MoveDamItemDialog/ChooseFolder.gql.d.ts +1 -1
  323. package/lib/dam/MoveDamItemDialog/ChooseFolder.gql.d.ts.map +1 -1
  324. package/lib/dam/MoveDamItemDialog/ChooseFolder.gql.generated.js +1 -7
  325. package/lib/dam/MoveDamItemDialog/ChooseFolder.gql.js +2 -8
  326. package/lib/dam/MoveDamItemDialog/ChooseFolder.js +30 -43
  327. package/lib/dam/MoveDamItemDialog/MoveDamItemDialog.js +44 -48
  328. package/lib/dam/MoveDamItemDialog/useFolderTree.js +11 -17
  329. package/lib/dam/MoveDamItemDialog/useFolderTreeSearch.js +14 -21
  330. package/lib/dam/blocks/DamFileDownloadLinkBlock.generated.js +1 -7
  331. package/lib/dam/blocks/DamFileDownloadLinkBlock.js +27 -33
  332. package/lib/dam/blocks/DamImageBlock.d.ts +1 -1
  333. package/lib/dam/blocks/DamImageBlock.d.ts.map +1 -1
  334. package/lib/dam/blocks/DamImageBlock.js +26 -31
  335. package/lib/dam/config/DamScopeContext.js +2 -8
  336. package/lib/dam/config/DamScopeProvider.js +8 -14
  337. package/lib/dam/config/damConfig.js +4 -11
  338. package/lib/dam/config/damDefaultAcceptedMimeTypes.js +1 -7
  339. package/lib/dam/config/useDamAcceptedMimeTypes.js +5 -11
  340. package/lib/dam/config/useDamScope.js +5 -10
  341. package/lib/dam/dependencies/createDamFileDependency.generated.js +1 -7
  342. package/lib/dam/dependencies/createDamFileDependency.js +8 -13
  343. package/lib/dam/helpers/clearDamItemCache.js +1 -7
  344. package/lib/dam/helpers/isFile.js +1 -7
  345. package/lib/dam/helpers/isFolder.js +1 -7
  346. package/lib/dam/helpers/slugifyFilename.js +3 -10
  347. package/lib/dam/mediaAlternatives/MediaAlternativeForm.generated.js +1 -7
  348. package/lib/dam/mediaAlternatives/MediaAlternativeForm.js +25 -31
  349. package/lib/dam/mediaAlternatives/MediaAlternativesGrid.d.ts +1 -1
  350. package/lib/dam/mediaAlternatives/MediaAlternativesGrid.d.ts.map +1 -1
  351. package/lib/dam/mediaAlternatives/MediaAlternativesGrid.generated.js +1 -7
  352. package/lib/dam/mediaAlternatives/MediaAlternativesGrid.js +44 -51
  353. package/lib/dashboard/DashboardHeader.js +12 -18
  354. package/lib/dashboard/DateTime.js +15 -21
  355. package/lib/dashboard/DefaultGreeting.js +6 -12
  356. package/lib/dashboard/widgets/DashboardWidgetRoot.js +8 -14
  357. package/lib/dashboard/widgets/LatestBuildsDashboardWidget.generated.js +1 -7
  358. package/lib/dashboard/widgets/LatestBuildsDashboardWidget.js +19 -25
  359. package/lib/dashboard/widgets/LatestContentUpdatesDashboardWidget.js +16 -22
  360. package/lib/dependencies/DependenciesList.d.ts +30 -0
  361. package/lib/dependencies/DependenciesList.d.ts.map +1 -0
  362. package/lib/dependencies/DependenciesList.js +282 -0
  363. package/lib/dependencies/DependentsList.d.ts +30 -0
  364. package/lib/dependencies/DependentsList.d.ts.map +1 -0
  365. package/lib/dependencies/{DependencyList.js → DependentsList.js} +190 -167
  366. package/lib/dependencies/createDependencyMethods.js +3 -9
  367. package/lib/dependencies/createDocumentDependencyMethods.js +3 -9
  368. package/lib/dependencies/dependenciesConfig.js +3 -9
  369. package/lib/dependencies/getDisplayNameString.d.ts +4 -0
  370. package/lib/dependencies/getDisplayNameString.d.ts.map +1 -0
  371. package/lib/dependencies/getDisplayNameString.js +12 -0
  372. package/lib/dependencies/types.js +1 -5
  373. package/lib/documents/ContentGenerationConfigContext.js +7 -13
  374. package/lib/documents/createDocumentRootBlocksMethods.js +1 -7
  375. package/lib/documents/types.js +1 -5
  376. package/lib/form/SyncFields.js +7 -13
  377. package/lib/form/file/DamPathLazy.generated.js +1 -7
  378. package/lib/form/file/DamPathLazy.js +7 -13
  379. package/lib/form/file/FileField.gql.d.ts +1 -1
  380. package/lib/form/file/FileField.gql.d.ts.map +1 -1
  381. package/lib/form/file/FileField.gql.generated.js +1 -7
  382. package/lib/form/file/FileField.gql.js +3 -9
  383. package/lib/form/file/FileField.js +53 -58
  384. package/lib/form/file/FileUploadField.js +6 -12
  385. package/lib/form/file/FinalFormFileUpload.d.ts +2 -2
  386. package/lib/form/file/FinalFormFileUpload.d.ts.map +1 -1
  387. package/lib/form/file/FinalFormFileUpload.generated.js +1 -7
  388. package/lib/form/file/FinalFormFileUpload.js +20 -26
  389. package/lib/form/file/chooseFile/ChooseFileDialog.js +28 -35
  390. package/lib/form/file/chooseFile/RedirectToPersistedDamLocation.js +12 -18
  391. package/lib/form/file/upload.js +3 -11
  392. package/lib/form/queryUpdatedAt.js +3 -9
  393. package/lib/form/serializeInitialValues.js +1 -7
  394. package/lib/form/useFormSaveConflict.d.ts +2 -2
  395. package/lib/form/useFormSaveConflict.d.ts.map +1 -1
  396. package/lib/form/useFormSaveConflict.js +3 -9
  397. package/lib/graphql.generated.d.ts +27 -3
  398. package/lib/graphql.generated.d.ts.map +1 -1
  399. package/lib/graphql.generated.js +1 -5
  400. package/lib/index.d.ts +3 -4
  401. package/lib/index.d.ts.map +1 -1
  402. package/lib/index.js +144 -1128
  403. package/lib/pages/LocalPageTreeNodeDocumentAnchors.js +7 -13
  404. package/lib/pages/SaveConflictDialog.js +54 -57
  405. package/lib/pages/config/usePageTreeScope.js +5 -11
  406. package/lib/pages/createEditPageNode.d.ts +1 -1
  407. package/lib/pages/createEditPageNode.d.ts.map +1 -1
  408. package/lib/pages/createEditPageNode.generated.js +1 -7
  409. package/lib/pages/createEditPageNode.js +83 -90
  410. package/lib/pages/createUsePage.d.ts +1 -1
  411. package/lib/pages/createUsePage.d.ts.map +1 -1
  412. package/lib/pages/createUsePage.generated.js +1 -7
  413. package/lib/pages/createUsePage.js +46 -45
  414. package/lib/pages/pageSearch/PageSearch.js +4 -10
  415. package/lib/pages/pageSearch/usePageSearch.d.ts +1 -1
  416. package/lib/pages/pageSearch/usePageSearch.d.ts.map +1 -1
  417. package/lib/pages/pageSearch/usePageSearch.generated.js +1 -7
  418. package/lib/pages/pageSearch/usePageSearch.js +16 -22
  419. package/lib/pages/pageTree/CopyPasteMenuItem.js +19 -25
  420. package/lib/pages/pageTree/MovePageMenuItem.generated.js +1 -7
  421. package/lib/pages/pageTree/MovePageMenuItem.js +17 -23
  422. package/lib/pages/pageTree/Page.d.ts +1 -1
  423. package/lib/pages/pageTree/Page.d.ts.map +1 -1
  424. package/lib/pages/pageTree/Page.generated.js +1 -7
  425. package/lib/pages/pageTree/Page.js +2 -8
  426. package/lib/pages/pageTree/PageActions.js +54 -60
  427. package/lib/pages/pageTree/PageDeleteDialog.js +56 -58
  428. package/lib/pages/pageTree/PageDeleteDialog.sc.d.ts +1 -3
  429. package/lib/pages/pageTree/PageDeleteDialog.sc.d.ts.map +1 -1
  430. package/lib/pages/pageTree/PageDeleteDialog.sc.js +8 -14
  431. package/lib/pages/pageTree/PageInfo.js +13 -19
  432. package/lib/pages/pageTree/PageLabel.js +25 -31
  433. package/lib/pages/pageTree/PageTree.generated.js +1 -7
  434. package/lib/pages/pageTree/PageTree.js +52 -58
  435. package/lib/pages/pageTree/PageTreeContext.js +2 -8
  436. package/lib/pages/pageTree/PageTreeDragLayer.js +13 -22
  437. package/lib/pages/pageTree/PageTreeDragLayer.sc.d.ts +2 -2
  438. package/lib/pages/pageTree/PageTreeDragLayer.sc.d.ts.map +1 -1
  439. package/lib/pages/pageTree/PageTreeDragLayer.sc.js +3 -9
  440. package/lib/pages/pageTree/PageTreeRow.js +54 -63
  441. package/lib/pages/pageTree/PageTreeRow.sc.js +9 -15
  442. package/lib/pages/pageTree/PageTreeRowDivider.js +12 -18
  443. package/lib/pages/pageTree/PageTreeService.js +2 -7
  444. package/lib/pages/pageTree/PageTypeIcon.d.ts +1 -0
  445. package/lib/pages/pageTree/PageTypeIcon.d.ts.map +1 -1
  446. package/lib/pages/pageTree/PageTypeIcon.js +8 -14
  447. package/lib/pages/pageTree/PageVisibility.d.ts +1 -1
  448. package/lib/pages/pageTree/PageVisibility.d.ts.map +1 -1
  449. package/lib/pages/pageTree/PageVisibility.generated.js +1 -7
  450. package/lib/pages/pageTree/PageVisibility.js +37 -43
  451. package/lib/pages/pageTree/PageVisibilityIcon.d.ts +1 -0
  452. package/lib/pages/pageTree/PageVisibilityIcon.d.ts.map +1 -1
  453. package/lib/pages/pageTree/PageVisibilityIcon.js +6 -12
  454. package/lib/pages/pageTree/common/PageTreeTableRow.d.ts +1 -1
  455. package/lib/pages/pageTree/common/PageTreeTableRow.d.ts.map +1 -1
  456. package/lib/pages/pageTree/common/PageTreeTableRow.js +18 -24
  457. package/lib/pages/pageTree/treemap/TreeMapUtils.js +9 -14
  458. package/lib/pages/pageTree/useButtonHoverStates.js +4 -10
  459. package/lib/pages/pageTree/useCopyPastePages/ProgressDialog.js +26 -30
  460. package/lib/pages/pageTree/useCopyPastePages/createInboxFolder.generated.js +1 -7
  461. package/lib/pages/pageTree/useCopyPastePages/createInboxFolder.js +7 -13
  462. package/lib/pages/pageTree/useCopyPastePages/sendPages.generated.js +1 -7
  463. package/lib/pages/pageTree/useCopyPastePages/sendPages.js +33 -39
  464. package/lib/pages/pageTree/useCopyPastePages.js +38 -43
  465. package/lib/pages/pageTree/useDndWindowScroll/ScrollManager.js +3 -8
  466. package/lib/pages/pageTree/useDndWindowScroll/useAnimationFrame.js +6 -11
  467. package/lib/pages/pageTree/useDndWindowScroll/useDndWindowScroll.d.ts +1 -1
  468. package/lib/pages/pageTree/useDndWindowScroll/useDndWindowScroll.d.ts.map +1 -1
  469. package/lib/pages/pageTree/useDndWindowScroll/useDndWindowScroll.js +12 -19
  470. package/lib/pages/pageTree/usePageTree.d.ts +1 -1
  471. package/lib/pages/pageTree/usePageTree.d.ts.map +1 -1
  472. package/lib/pages/pageTree/usePageTree.generated.js +1 -7
  473. package/lib/pages/pageTree/usePageTree.js +17 -24
  474. package/lib/pages/pageTree/usePageTreeContext.js +4 -10
  475. package/lib/pages/pageTreeConfig.js +3 -9
  476. package/lib/pages/pageTreeSelect/FinalFormPageTreeSelect.d.ts +1 -0
  477. package/lib/pages/pageTreeSelect/FinalFormPageTreeSelect.d.ts.map +1 -1
  478. package/lib/pages/pageTreeSelect/FinalFormPageTreeSelect.js +4 -11
  479. package/lib/pages/pageTreeSelect/PageTreeSelect.generated.js +1 -7
  480. package/lib/pages/pageTreeSelect/PageTreeSelect.js +20 -27
  481. package/lib/pages/pageTreeSelect/PageTreeSelectDialog.d.ts +2 -1
  482. package/lib/pages/pageTreeSelect/PageTreeSelectDialog.d.ts.map +1 -1
  483. package/lib/pages/pageTreeSelect/PageTreeSelectDialog.generated.js +1 -7
  484. package/lib/pages/pageTreeSelect/PageTreeSelectDialog.js +88 -96
  485. package/lib/pages/pageTreeSelect/PageTreeSelectDialog.sc.js +6 -12
  486. package/lib/pages/pagesPage/ConfirmPageActionDialog.js +23 -27
  487. package/lib/pages/pagesPage/PageCanNotDeleteDialog.js +15 -19
  488. package/lib/pages/pagesPage/PagesPage.js +80 -86
  489. package/lib/pages/pagesPage/PagesPageActionToolbar.js +97 -103
  490. package/lib/pages/pagesPage/PagesPageActionToolbar.sc.d.ts +4 -8
  491. package/lib/pages/pagesPage/PagesPageActionToolbar.sc.d.ts.map +1 -1
  492. package/lib/pages/pagesPage/PagesPageActionToolbar.sc.js +6 -12
  493. package/lib/pages/pagesPage/PagesPageActionToolbarBatchUpdateHelper.js +5 -11
  494. package/lib/pages/pagesPage/areAllSubTreesFullSelected.js +4 -10
  495. package/lib/pages/pagesPage/createPagesQuery.generated.js +1 -7
  496. package/lib/pages/pagesPage/createPagesQuery.js +6 -12
  497. package/lib/pages/resolveHasSaveConflict.js +5 -11
  498. package/lib/pages/usePageTreeDocumentAnchors.generated.js +1 -7
  499. package/lib/pages/usePageTreeDocumentAnchors.js +10 -14
  500. package/lib/pages/useSaveConflict.js +20 -26
  501. package/lib/pages/useSaveConflictQuery.js +7 -13
  502. package/lib/preview/block/BlockPreview.generated.js +1 -7
  503. package/lib/preview/block/BlockPreview.js +33 -38
  504. package/lib/preview/block/BlockPreviewWithTabs.js +10 -15
  505. package/lib/preview/block/SplitPreview.js +22 -27
  506. package/lib/preview/block/SplitPreview.sc.js +12 -19
  507. package/lib/preview/block/useBlockPreview.js +7 -12
  508. package/lib/preview/common/Device.js +3 -8
  509. package/lib/preview/common/DeviceToggle.js +22 -27
  510. package/lib/preview/common/IFrameViewer.js +24 -30
  511. package/lib/preview/common/ToggleButton.d.ts +1 -3
  512. package/lib/preview/common/ToggleButton.d.ts.map +1 -1
  513. package/lib/preview/common/ToggleButton.js +5 -10
  514. package/lib/preview/common/VisibilityToggle.js +9 -14
  515. package/lib/preview/openSitePreviewWindow.js +2 -8
  516. package/lib/preview/site/OpenLinkDialog.js +31 -33
  517. package/lib/preview/site/SitePreview.generated.js +1 -7
  518. package/lib/preview/site/SitePreview.js +58 -61
  519. package/lib/preview/site/SitePreview.sc.d.ts +1 -3
  520. package/lib/preview/site/SitePreview.sc.d.ts.map +1 -1
  521. package/lib/preview/site/SitePreview.sc.js +8 -14
  522. package/lib/preview/site/iframebridge/SitePreviewIFrameMessage.js +3 -7
  523. package/lib/preview/site/iframebridge/useSitePreviewIFrameBridge.js +5 -11
  524. package/lib/redirects/RedirectActiveness.d.ts +2 -1
  525. package/lib/redirects/RedirectActiveness.d.ts.map +1 -1
  526. package/lib/redirects/RedirectActiveness.generated.js +1 -7
  527. package/lib/redirects/RedirectActiveness.js +26 -32
  528. package/lib/redirects/RedirectForm.d.ts +1 -0
  529. package/lib/redirects/RedirectForm.d.ts.map +1 -1
  530. package/lib/redirects/RedirectForm.generated.js +1 -7
  531. package/lib/redirects/RedirectForm.gql.d.ts +3 -3
  532. package/lib/redirects/RedirectForm.gql.d.ts.map +1 -1
  533. package/lib/redirects/RedirectForm.gql.generated.js +1 -7
  534. package/lib/redirects/RedirectForm.gql.js +5 -11
  535. package/lib/redirects/RedirectForm.js +64 -65
  536. package/lib/redirects/RedirectsGrid.d.ts +1 -0
  537. package/lib/redirects/RedirectsGrid.d.ts.map +1 -1
  538. package/lib/redirects/RedirectsGrid.gql.d.ts +2 -2
  539. package/lib/redirects/RedirectsGrid.gql.d.ts.map +1 -1
  540. package/lib/redirects/RedirectsGrid.gql.generated.js +1 -7
  541. package/lib/redirects/RedirectsGrid.gql.js +6 -11
  542. package/lib/redirects/RedirectsGrid.js +48 -55
  543. package/lib/redirects/createRedirectsPage.d.ts +1 -1
  544. package/lib/redirects/createRedirectsPage.d.ts.map +1 -1
  545. package/lib/redirects/createRedirectsPage.js +37 -43
  546. package/lib/redirects/redirectsConfig.js +5 -11
  547. package/lib/redirects/submitMutation.js +5 -11
  548. package/lib/siteConfigs/siteConfigsConfig.js +1 -5
  549. package/lib/siteConfigs/useSiteConfig.js +3 -9
  550. package/lib/siteConfigs/useSiteConfigs.js +3 -9
  551. package/lib/testing/test-utils.js +15 -32
  552. package/lib/translation/AzureAiTranslatorProvider.generated.js +1 -7
  553. package/lib/translation/AzureAiTranslatorProvider.js +11 -17
  554. package/lib/userPermissions/ImpersonateMenuItem.generated.js +1 -7
  555. package/lib/userPermissions/ImpersonateMenuItem.js +27 -33
  556. package/lib/userPermissions/UserGrid.generated.js +1 -7
  557. package/lib/userPermissions/UserGrid.js +45 -51
  558. package/lib/userPermissions/UserPermissionsPage.js +42 -48
  559. package/lib/userPermissions/hooks/currentUser.generated.js +1 -7
  560. package/lib/userPermissions/hooks/currentUser.js +21 -27
  561. package/lib/userPermissions/user/ImpersonationButtons.js +18 -24
  562. package/lib/userPermissions/user/UserPageToolbar.generated.js +1 -7
  563. package/lib/userPermissions/user/UserPageToolbar.js +29 -35
  564. package/lib/userPermissions/user/basicData/UserBasicData.generated.js +1 -7
  565. package/lib/userPermissions/user/basicData/UserBasicData.js +23 -29
  566. package/lib/userPermissions/user/permissions/ContentScopeGrid.generated.js +1 -7
  567. package/lib/userPermissions/user/permissions/ContentScopeGrid.js +38 -44
  568. package/lib/userPermissions/user/permissions/OverrideContentScopesDialog.generated.js +1 -7
  569. package/lib/userPermissions/user/permissions/OverrideContentScopesDialog.js +34 -38
  570. package/lib/userPermissions/user/permissions/PermissionDialog.d.ts.map +1 -1
  571. package/lib/userPermissions/user/permissions/PermissionDialog.generated.js +1 -7
  572. package/lib/userPermissions/user/permissions/PermissionDialog.js +50 -54
  573. package/lib/userPermissions/user/permissions/PermissionGrid.generated.js +1 -7
  574. package/lib/userPermissions/user/permissions/PermissionGrid.js +48 -54
  575. package/lib/userPermissions/user/permissions/PermissionsPanel.js +9 -15
  576. package/lib/userPermissions/user/permissions/selectScopesDialogContent/SelectScopesDialogContent.generated.js +1 -7
  577. package/lib/userPermissions/user/permissions/selectScopesDialogContent/SelectScopesDialogContent.js +19 -26
  578. package/lib/userPermissions/utils/camelCaseToHumanReadable.js +1 -7
  579. package/lib/userPermissions/utils/handleImpersonation.js +5 -12
  580. package/lib/validation/isLinkTarget.js +6 -12
  581. package/lib/validation/isPhoneNumber.js +1 -7
  582. package/lib/validation/validateLinkTarget.js +6 -12
  583. package/lib/validation/validatePhoneNumber.js +6 -12
  584. package/lib/validation/validateUrl.js +6 -12
  585. package/lib/vendors.d.js +1 -5
  586. package/lib/warnings/LatestWarningsDashboardWidget.generated.js +1 -7
  587. package/lib/warnings/LatestWarningsDashboardWidget.js +27 -33
  588. package/lib/warnings/WarningActions.js +25 -31
  589. package/lib/warnings/WarningMessage.d.ts +1 -1
  590. package/lib/warnings/WarningMessage.d.ts.map +1 -1
  591. package/lib/warnings/WarningMessage.js +1 -7
  592. package/lib/warnings/WarningSeverity.js +9 -15
  593. package/lib/warnings/WarningsGrid.generated.js +1 -7
  594. package/lib/warnings/WarningsGrid.js +45 -52
  595. package/lib/warnings/WarningsPage.js +11 -17
  596. package/lib/warnings/warningMessages.js +10 -16
  597. package/lib/warnings/warningsConfig.js +5 -11
  598. package/package.json +25 -26
  599. package/lib/dependencies/DependencyList.d.ts +0 -29
  600. package/lib/dependencies/DependencyList.d.ts.map +0 -1
  601. package/lib/dependencies/DependencyList.sc.d.ts +0 -11
  602. package/lib/dependencies/DependencyList.sc.d.ts.map +0 -1
  603. package/lib/dependencies/DependencyList.sc.js +0 -79
  604. package/lib/http/createHttpClient.d.ts +0 -3
  605. package/lib/http/createHttpClient.d.ts.map +0 -1
  606. package/lib/http/createHttpClient.js +0 -43
@@ -1,34 +1,4 @@
1
- "use strict";
2
-
3
1
  function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.createColumnsBlock = createColumnsBlock;
8
- var _admin = require("@comet/admin");
9
- var _adminIcons = require("@comet/admin-icons");
10
- var _material = require("@mui/material");
11
- var _styles = require("@mui/material/styles");
12
- var _reactIntl = require("react-intl");
13
- var _uuid = require("uuid");
14
- var _AdminComponentStickyFooter = require("../common/AdminComponentStickyFooter");
15
- var _BlockAdminComponentButton = require("../common/BlockAdminComponentButton");
16
- var _BlockAdminComponentPaper = require("../common/BlockAdminComponentPaper");
17
- var _BlockAdminComponentSection = require("../common/BlockAdminComponentSection");
18
- var _BlockPreviewContent = require("../common/blockRow/BlockPreviewContent");
19
- var _BlockRow = require("../common/blockRow/BlockRow");
20
- var _BlocksFinalForm = require("../form/BlocksFinalForm");
21
- var _createBlockSkeleton = require("../helpers/createBlockSkeleton");
22
- var _deduplicateBlockDependencies = require("../helpers/deduplicateBlockDependencies");
23
- var _HoverPreviewComponent = require("../iframebridge/HoverPreviewComponent");
24
- var _SelectPreviewComponent = require("../iframebridge/SelectPreviewComponent");
25
- var _types = require("../types");
26
- var _utils = require("../utils");
27
- var _parallelAsyncEvery = require("../utils/parallelAsyncEvery");
28
- var _FinalFormColumnsSelect = require("./columnsBlock/FinalFormColumnsSelect");
29
- var _FinalFormLayoutSelect = require("./columnsBlock/FinalFormLayoutSelect");
30
- var _createUseAdminComponent = require("./listBlock/createUseAdminComponent");
31
- var _jsxRuntime = require("react/jsx-runtime");
32
2
  function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
33
3
  function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
34
4
  function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
@@ -46,24 +16,48 @@ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object
46
16
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
47
17
  function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
48
18
  function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
49
- function createColumnsBlock(_ref, override) {
19
+ import { Field, StackPage, StackPageTitle, StackSwitch, StackSwitchApiContext } from "@comet/admin";
20
+ import { Add, Copy, Delete, Invisible, Paste, Visible } from "@comet/admin-icons";
21
+ import { Checkbox, Divider, FormControlLabel, IconButton, Typography } from "@mui/material";
22
+ import { styled } from "@mui/material/styles";
23
+ import { FormattedMessage, useIntl } from "react-intl";
24
+ import { v4 as uuid } from "uuid";
25
+ import { AdminComponentStickyFooter } from "../common/AdminComponentStickyFooter";
26
+ import { BlockAdminComponentButton } from "../common/BlockAdminComponentButton";
27
+ import { BlockAdminComponentPaper } from "../common/BlockAdminComponentPaper";
28
+ import { BlockAdminComponentSection } from "../common/BlockAdminComponentSection";
29
+ import { BlockPreviewContent } from "../common/blockRow/BlockPreviewContent";
30
+ import { BlockRow } from "../common/blockRow/BlockRow";
31
+ import { BlocksFinalForm } from "../form/BlocksFinalForm";
32
+ import { createBlockSkeleton } from "../helpers/createBlockSkeleton";
33
+ import { deduplicateBlockDependencies } from "../helpers/deduplicateBlockDependencies";
34
+ import { HoverPreviewComponent } from "../iframebridge/HoverPreviewComponent";
35
+ import { SelectPreviewComponent } from "../iframebridge/SelectPreviewComponent";
36
+ import { BlockCategory } from "../types";
37
+ import { resolveNewState } from "../utils";
38
+ import { parallelAsyncEvery } from "../utils/parallelAsyncEvery";
39
+ import { FinalFormColumnsSelect } from "./columnsBlock/FinalFormColumnsSelect";
40
+ import { FinalFormLayoutSelect } from "./columnsBlock/FinalFormLayoutSelect";
41
+ import { createUseAdminComponent as createUseListBlockAdminComponent } from "./listBlock/createUseAdminComponent";
42
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
43
+ export function createColumnsBlock(_ref, override) {
50
44
  var name = _ref.name,
51
45
  displayName = _ref.displayName,
52
46
  _ref$category = _ref.category,
53
- category = _ref$category === void 0 ? _types.BlockCategory.Layout : _ref$category,
47
+ category = _ref$category === void 0 ? BlockCategory.Layout : _ref$category,
54
48
  contentBlock = _ref.contentBlock,
55
49
  layouts = _ref.layouts,
56
50
  tags = _ref.tags;
57
51
  if (layouts.length === 0) {
58
52
  throw new Error("Number of layouts must be greater than 0!");
59
53
  }
60
- var useListBlockAdminComponent = (0, _createUseAdminComponent.createUseAdminComponent)({
54
+ var useListBlockAdminComponent = createUseListBlockAdminComponent({
61
55
  block: contentBlock
62
56
  });
63
57
  function createEmptyColumns(number) {
64
58
  return new Array(number).fill(undefined).map(function () {
65
59
  return {
66
- key: (0, _uuid.v4)(),
60
+ key: uuid(),
67
61
  props: contentBlock.defaultValues(),
68
62
  selected: false,
69
63
  slideIn: false,
@@ -71,7 +65,7 @@ function createColumnsBlock(_ref, override) {
71
65
  };
72
66
  });
73
67
  }
74
- var ColumnsBlock = _objectSpread(_objectSpread({}, (0, _createBlockSkeleton.createBlockSkeleton)()), {}, {
68
+ var ColumnsBlock = _objectSpread(_objectSpread({}, createBlockSkeleton()), {}, {
75
69
  name: name,
76
70
  displayName: displayName,
77
71
  tags: tags ? tags : contentBlock.tags,
@@ -210,7 +204,7 @@ function createColumnsBlock(_ref, override) {
210
204
  };
211
205
  },
212
206
  isValid: function isValid(state) {
213
- return (0, _parallelAsyncEvery.parallelAsyncEvery)(state.columns, function (column) {
207
+ return parallelAsyncEvery(state.columns, function (column) {
214
208
  return contentBlock.isValid(column.props);
215
209
  });
216
210
  },
@@ -225,7 +219,7 @@ function createColumnsBlock(_ref, override) {
225
219
  var _contentBlock$depende, _contentBlock$depende2;
226
220
  return [].concat(_toConsumableArray(dependencies), _toConsumableArray((_contentBlock$depende = (_contentBlock$depende2 = contentBlock.dependencies) === null || _contentBlock$depende2 === void 0 ? void 0 : _contentBlock$depende2.call(contentBlock, column.props)) !== null && _contentBlock$depende !== void 0 ? _contentBlock$depende : []));
227
221
  }, []);
228
- return (0, _deduplicateBlockDependencies.deduplicateBlockDependencies)(mergedDependencies);
222
+ return deduplicateBlockDependencies(mergedDependencies);
229
223
  },
230
224
  replaceDependenciesInOutput: function replaceDependenciesInOutput(output, replacements) {
231
225
  var newOutput = _objectSpread(_objectSpread({}, output), {}, {
@@ -250,11 +244,11 @@ function createColumnsBlock(_ref, override) {
250
244
  AdminComponent: function AdminComponent(_ref2) {
251
245
  var state = _ref2.state,
252
246
  updateState = _ref2.updateState;
253
- var intl = (0, _reactIntl.useIntl)();
247
+ var intl = useIntl();
254
248
  var groupLayoutsByColumnsApi = createGroupLayoutsByColumnsApi(layouts);
255
249
  var handleListBlockAdminChange = function handleListBlockAdminChange(listBlockSetStateAction) {
256
250
  updateState(function (prevState) {
257
- var listBlockState = (0, _utils.resolveNewState)({
251
+ var listBlockState = resolveNewState({
258
252
  prevState: {
259
253
  blocks: prevState.columns
260
254
  },
@@ -283,13 +277,13 @@ function createColumnsBlock(_ref, override) {
283
277
  selectedCount = _useListBlockAdminCom.selectedCount,
284
278
  deleteBlocks = _useListBlockAdminCom.deleteBlocks,
285
279
  toggleVisible = _useListBlockAdminCom.toggleVisible;
286
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
287
- children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_admin.StackSwitch, {
280
+ return /*#__PURE__*/_jsxs(_Fragment, {
281
+ children: [/*#__PURE__*/_jsxs(StackSwitch, {
288
282
  initialPage: "list",
289
283
  disableForcePromptRoute: true,
290
- children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_admin.StackPage, {
284
+ children: [/*#__PURE__*/_jsxs(StackPage, {
291
285
  name: "list",
292
- children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_BlocksFinalForm.BlocksFinalForm, {
286
+ children: [/*#__PURE__*/_jsxs(BlocksFinalForm, {
293
287
  onSubmit: function onSubmit(_ref3) {
294
288
  var layout = _ref3.layout,
295
289
  columns = _ref3.columns;
@@ -307,73 +301,73 @@ function createColumnsBlock(_ref, override) {
307
301
  layout: state.layout,
308
302
  columns: state.layout.columns
309
303
  },
310
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_admin.Field, {
304
+ children: [/*#__PURE__*/_jsx(Field, {
311
305
  name: "columns",
312
- label: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactIntl.FormattedMessage, {
306
+ label: /*#__PURE__*/_jsx(FormattedMessage, {
313
307
  id: "comet.blocks.columns.columns",
314
308
  defaultMessage: "Columns"
315
309
  }),
316
- component: _FinalFormColumnsSelect.FinalFormColumnsSelect,
310
+ component: FinalFormColumnsSelect,
317
311
  columns: groupLayoutsByColumnsApi.columns,
318
312
  fullWidth: true
319
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_admin.Field, {
313
+ }), /*#__PURE__*/_jsx(Field, {
320
314
  name: "layout",
321
- label: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactIntl.FormattedMessage, {
315
+ label: /*#__PURE__*/_jsx(FormattedMessage, {
322
316
  id: "comet.blocks.columns.layout",
323
317
  defaultMessage: "Layout"
324
318
  }),
325
- component: _FinalFormLayoutSelect.FinalFormLayoutSelect,
319
+ component: FinalFormLayoutSelect,
326
320
  layouts: groupLayoutsByColumnsApi.getLayouts(state.layout.columns),
327
321
  fullWidth: true
328
322
  })]
329
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_BlockAdminComponentSection.BlockAdminComponentSection, {
330
- title: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactIntl.FormattedMessage, {
323
+ }), /*#__PURE__*/_jsx(BlockAdminComponentSection, {
324
+ title: /*#__PURE__*/_jsx(FormattedMessage, {
331
325
  id: "comet.blocks.columns.items",
332
326
  defaultMessage: "Items"
333
327
  }),
334
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_BlockAdminComponentPaper.BlockAdminComponentPaper, {
328
+ children: /*#__PURE__*/_jsx(BlockAdminComponentPaper, {
335
329
  disablePadding: true,
336
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_admin.StackSwitchApiContext.Consumer, {
330
+ children: /*#__PURE__*/_jsx(StackSwitchApiContext.Consumer, {
337
331
  children: function children(stackApi) {
338
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_SelectPreviewComponent.SelectPreviewComponent, {
339
- children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(BlockListHeader, {
340
- children: [state.columns.length ? /*#__PURE__*/(0, _jsxRuntime.jsx)(SelectAllFromControlLabel, {
341
- control: /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Checkbox, {
332
+ return /*#__PURE__*/_jsxs(SelectPreviewComponent, {
333
+ children: [/*#__PURE__*/_jsxs(BlockListHeader, {
334
+ children: [state.columns.length ? /*#__PURE__*/_jsx(SelectAllFromControlLabel, {
335
+ control: /*#__PURE__*/_jsx(Checkbox, {
342
336
  checked: selectedCount === state.columns.length && selectedCount > 0,
343
337
  indeterminate: selectedCount > 0 && selectedCount !== state.columns.length,
344
338
  onChange: handleToggleSelectAll
345
339
  }),
346
- label: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactIntl.FormattedMessage, {
340
+ label: /*#__PURE__*/_jsx(FormattedMessage, {
347
341
  id: "comet.blocks.list.selectAll",
348
342
  defaultMessage: "Select all"
349
343
  })
350
- }) : /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(BlockListHeaderActionContainer, {
351
- children: [selectedCount > 0 && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
352
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_material.IconButton, {
344
+ }) : /*#__PURE__*/_jsx("div", {}), /*#__PURE__*/_jsxs(BlockListHeaderActionContainer, {
345
+ children: [selectedCount > 0 && /*#__PURE__*/_jsxs(_Fragment, {
346
+ children: [/*#__PURE__*/_jsx(IconButton, {
353
347
  onClick: deleteAllSelectedBlocks,
354
348
  size: "large",
355
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_adminIcons.Delete, {})
356
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.IconButton, {
349
+ children: /*#__PURE__*/_jsx(Delete, {})
350
+ }), /*#__PURE__*/_jsx(IconButton, {
357
351
  onClick: copySelectedBlocks,
358
352
  size: "large",
359
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_adminIcons.Copy, {})
353
+ children: /*#__PURE__*/_jsx(Copy, {})
360
354
  })]
361
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.IconButton, {
355
+ }), /*#__PURE__*/_jsx(IconButton, {
362
356
  onClick: function onClick() {
363
357
  return pasteBlock(0);
364
358
  },
365
359
  size: "large",
366
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_adminIcons.Paste, {})
360
+ children: /*#__PURE__*/_jsx(Paste, {})
367
361
  })]
368
362
  })]
369
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Divider, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
363
+ }), /*#__PURE__*/_jsx(Divider, {}), /*#__PURE__*/_jsx("div", {
370
364
  children: state.columns.map(function (column, columnIndex) {
371
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_HoverPreviewComponent.HoverPreviewComponent, {
365
+ return /*#__PURE__*/_jsx(HoverPreviewComponent, {
372
366
  componentSlug: "".concat(column.key, "/content"),
373
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_BlockRow.BlockRow, {
367
+ children: /*#__PURE__*/_jsx(BlockRow, {
374
368
  id: column.key,
375
369
  renderPreviewContent: function renderPreviewContent() {
376
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_BlockPreviewContent.BlockPreviewContent, {
370
+ return /*#__PURE__*/_jsx(BlockPreviewContent, {
377
371
  block: contentBlock,
378
372
  state: column.props
379
373
  });
@@ -395,14 +389,14 @@ function createColumnsBlock(_ref, override) {
395
389
  });
396
390
  });
397
391
  },
398
- visibilityButton: /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.IconButton, {
392
+ visibilityButton: /*#__PURE__*/_jsx(IconButton, {
399
393
  onClick: function onClick() {
400
394
  return toggleVisible(column.key);
401
395
  },
402
396
  size: "small",
403
- children: column.visible ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_adminIcons.Visible, {
397
+ children: column.visible ? /*#__PURE__*/_jsx(Visible, {
404
398
  color: "success"
405
- }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_adminIcons.Invisible, {
399
+ }) : /*#__PURE__*/_jsx(Invisible, {
406
400
  color: "action"
407
401
  })
408
402
  }),
@@ -432,31 +426,31 @@ function createColumnsBlock(_ref, override) {
432
426
  })
433
427
  }, column.key);
434
428
  })
435
- }), state.columns.length === 0 ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_BlockAdminComponentButton.BlockAdminComponentButton, {
429
+ }), state.columns.length === 0 ? /*#__PURE__*/_jsx(BlockAdminComponentButton, {
436
430
  variant: "primary",
437
431
  onClick: function onClick() {
438
432
  var key = addNewBlock();
439
433
  stackApi.activatePage("edit", key);
440
434
  },
441
435
  size: "large",
442
- children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(LargeAddButtonContent, {
443
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(LargeAddButtonIcon, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Typography, {
444
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactIntl.FormattedMessage, {
436
+ children: /*#__PURE__*/_jsxs(LargeAddButtonContent, {
437
+ children: [/*#__PURE__*/_jsx(LargeAddButtonIcon, {}), /*#__PURE__*/_jsx(Typography, {
438
+ children: /*#__PURE__*/_jsx(FormattedMessage, {
445
439
  id: "comet.blocks.columns.addItem",
446
440
  defaultMessage: "Add item"
447
441
  })
448
442
  })]
449
443
  })
450
- }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_AdminComponentStickyFooter.AdminComponentStickyFooter, {
451
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_BlockAdminComponentButton.BlockAdminComponentButton, {
444
+ }) : /*#__PURE__*/_jsx(AdminComponentStickyFooter, {
445
+ children: /*#__PURE__*/_jsx(BlockAdminComponentButton, {
452
446
  variant: "primary",
453
447
  onClick: function onClick() {
454
448
  var key = addNewBlock();
455
449
  stackApi.activatePage("edit", key);
456
450
  },
457
451
  size: "large",
458
- startIcon: /*#__PURE__*/(0, _jsxRuntime.jsx)(_adminIcons.Add, {}),
459
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactIntl.FormattedMessage, {
452
+ startIcon: /*#__PURE__*/_jsx(Add, {}),
453
+ children: /*#__PURE__*/_jsx(FormattedMessage, {
460
454
  id: "comet.blocks.columns.addItem",
461
455
  defaultMessage: "Add item"
462
456
  })
@@ -467,7 +461,7 @@ function createColumnsBlock(_ref, override) {
467
461
  })
468
462
  })
469
463
  })]
470
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_admin.StackPage, {
464
+ }), /*#__PURE__*/_jsx(StackPage, {
471
465
  name: "edit",
472
466
  title: intl.formatMessage({
473
467
  id: "comet.blocks.columns.editColumn",
@@ -478,15 +472,15 @@ function createColumnsBlock(_ref, override) {
478
472
  return column.key === key;
479
473
  });
480
474
  if (matchIndex === -1) {
481
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactIntl.FormattedMessage, {
475
+ return /*#__PURE__*/_jsx(FormattedMessage, {
482
476
  id: "comet.blocks.columns.unknownColumn",
483
477
  defaultMessage: "Can't find column"
484
478
  });
485
479
  }
486
480
  var match = state.columns[matchIndex];
487
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_admin.StackPageTitle, {
481
+ return /*#__PURE__*/_jsx(StackPageTitle, {
488
482
  title: columnCountLabel(intl, matchIndex + 1),
489
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(contentBlock.AdminComponent, {
483
+ children: /*#__PURE__*/_jsx(contentBlock.AdminComponent, {
490
484
  state: match.props,
491
485
  updateState: createUpdateSubBlocksFn(key)
492
486
  })
@@ -500,7 +494,7 @@ function createColumnsBlock(_ref, override) {
500
494
  if (state.columns.length === 0) {
501
495
  return [{
502
496
  type: "text",
503
- content: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactIntl.FormattedMessage, {
497
+ content: /*#__PURE__*/_jsx(FormattedMessage, {
504
498
  id: "comet.blocks.columns.noColumns",
505
499
  defaultMessage: "No columns"
506
500
  })
@@ -537,7 +531,7 @@ function createColumnsBlock(_ref, override) {
537
531
  }
538
532
  return ColumnsBlock;
539
533
  }
540
- var BlockListHeader = /*#__PURE__*/(0, _styles.styled)("div", process.env.NODE_ENV === "production" ? {
534
+ var BlockListHeader = /*#__PURE__*/styled("div", process.env.NODE_ENV === "production" ? {
541
535
  target: "eh7qu9y4"
542
536
  } : {
543
537
  target: "eh7qu9y4",
@@ -550,7 +544,7 @@ var BlockListHeader = /*#__PURE__*/(0, _styles.styled)("div", process.env.NODE_E
550
544
  styles: "display:flex;justify-content:space-between;align-items:center/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ibG9ja3MvZmFjdG9yaWVzL2NyZWF0ZUNvbHVtbnNCbG9jay50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBK2VxQyIsImZpbGUiOiIuLi8uLi8uLi9zcmMvYmxvY2tzL2ZhY3Rvcmllcy9jcmVhdGVDb2x1bW5zQmxvY2sudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmllbGQsIFN0YWNrUGFnZSwgU3RhY2tQYWdlVGl0bGUsIFN0YWNrU3dpdGNoLCBTdGFja1N3aXRjaEFwaUNvbnRleHQgfSBmcm9tIFwiQGNvbWV0L2FkbWluXCI7XG5pbXBvcnQgeyBBZGQsIENvcHksIERlbGV0ZSwgSW52aXNpYmxlLCBQYXN0ZSwgVmlzaWJsZSB9IGZyb20gXCJAY29tZXQvYWRtaW4taWNvbnNcIjtcbmltcG9ydCB7IENoZWNrYm94LCBEaXZpZGVyLCBGb3JtQ29udHJvbExhYmVsLCBJY29uQnV0dG9uLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHN0eWxlZCB9IGZyb20gXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiO1xuaW1wb3J0IHsgdHlwZSBEaXNwYXRjaCwgdHlwZSBSZWFjdE5vZGUsIHR5cGUgU2V0U3RhdGVBY3Rpb24gfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IEZvcm1hdHRlZE1lc3NhZ2UsIHR5cGUgSW50bFNoYXBlLCB0eXBlIE1lc3NhZ2VEZXNjcmlwdG9yLCB1c2VJbnRsIH0gZnJvbSBcInJlYWN0LWludGxcIjtcbmltcG9ydCB7IHY0IGFzIHV1aWQgfSBmcm9tIFwidXVpZFwiO1xuXG5pbXBvcnQgeyBBZG1pbkNvbXBvbmVudFN0aWNreUZvb3RlciB9IGZyb20gXCIuLi9jb21tb24vQWRtaW5Db21wb25lbnRTdGlja3lGb290ZXJcIjtcbmltcG9ydCB7IEJsb2NrQWRtaW5Db21wb25lbnRCdXR0b24gfSBmcm9tIFwiLi4vY29tbW9uL0Jsb2NrQWRtaW5Db21wb25lbnRCdXR0b25cIjtcbmltcG9ydCB7IEJsb2NrQWRtaW5Db21wb25lbnRQYXBlciB9IGZyb20gXCIuLi9jb21tb24vQmxvY2tBZG1pbkNvbXBvbmVudFBhcGVyXCI7XG5pbXBvcnQgeyBCbG9ja0FkbWluQ29tcG9uZW50U2VjdGlvbiB9IGZyb20gXCIuLi9jb21tb24vQmxvY2tBZG1pbkNvbXBvbmVudFNlY3Rpb25cIjtcbmltcG9ydCB7IEJsb2NrUHJldmlld0NvbnRlbnQgfSBmcm9tIFwiLi4vY29tbW9uL2Jsb2NrUm93L0Jsb2NrUHJldmlld0NvbnRlbnRcIjtcbmltcG9ydCB7IEJsb2NrUm93IH0gZnJvbSBcIi4uL2NvbW1vbi9ibG9ja1Jvdy9CbG9ja1Jvd1wiO1xuaW1wb3J0IHsgQmxvY2tzRmluYWxGb3JtIH0gZnJvbSBcIi4uL2Zvcm0vQmxvY2tzRmluYWxGb3JtXCI7XG5pbXBvcnQgeyBjcmVhdGVCbG9ja1NrZWxldG9uIH0gZnJvbSBcIi4uL2hlbHBlcnMvY3JlYXRlQmxvY2tTa2VsZXRvblwiO1xuaW1wb3J0IHsgZGVkdXBsaWNhdGVCbG9ja0RlcGVuZGVuY2llcyB9IGZyb20gXCIuLi9oZWxwZXJzL2RlZHVwbGljYXRlQmxvY2tEZXBlbmRlbmNpZXNcIjtcbmltcG9ydCB7IEhvdmVyUHJldmlld0NvbXBvbmVudCB9IGZyb20gXCIuLi9pZnJhbWVicmlkZ2UvSG92ZXJQcmV2aWV3Q29tcG9uZW50XCI7XG5pbXBvcnQgeyBTZWxlY3RQcmV2aWV3Q29tcG9uZW50IH0gZnJvbSBcIi4uL2lmcmFtZWJyaWRnZS9TZWxlY3RQcmV2aWV3Q29tcG9uZW50XCI7XG5pbXBvcnQge1xuICAgIEJsb2NrQ2F0ZWdvcnksXG4gICAgdHlwZSBCbG9ja0RlcGVuZGVuY3ksXG4gICAgdHlwZSBCbG9ja0lucHV0QXBpLFxuICAgIHR5cGUgQmxvY2tJbnRlcmZhY2UsXG4gICAgdHlwZSBDdXN0b21CbG9ja0NhdGVnb3J5LFxuICAgIHR5cGUgUHJldmlld0NvbnRlbnQsXG59IGZyb20gXCIuLi90eXBlc1wiO1xuaW1wb3J0IHsgcmVzb2x2ZU5ld1N0YXRlIH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5pbXBvcnQgeyBwYXJhbGxlbEFzeW5jRXZlcnkgfSBmcm9tIFwiLi4vdXRpbHMvcGFyYWxsZWxBc3luY0V2ZXJ5XCI7XG5pbXBvcnQgeyBGaW5hbEZvcm1Db2x1bW5zU2VsZWN0IH0gZnJvbSBcIi4vY29sdW1uc0Jsb2NrL0ZpbmFsRm9ybUNvbHVtbnNTZWxlY3RcIjtcbmltcG9ydCB7IEZpbmFsRm9ybUxheW91dFNlbGVjdCB9IGZyb20gXCIuL2NvbHVtbnNCbG9jay9GaW5hbEZvcm1MYXlvdXRTZWxlY3RcIjtcbmltcG9ydCB7IHR5cGUgTGlzdEJsb2NrSXRlbSwgdHlwZSBMaXN0QmxvY2tTdGF0ZSB9IGZyb20gXCIuL2NyZWF0ZUxpc3RCbG9ja1wiO1xuaW1wb3J0IHsgY3JlYXRlVXNlQWRtaW5Db21wb25lbnQgYXMgY3JlYXRlVXNlTGlzdEJsb2NrQWRtaW5Db21wb25lbnQgfSBmcm9tIFwiLi9saXN0QmxvY2svY3JlYXRlVXNlQWRtaW5Db21wb25lbnRcIjtcblxuZXhwb3J0IGludGVyZmFjZSBDb2x1bW5zQmxvY2tMYXlvdXQge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBjb2x1bW5zOiBudW1iZXI7XG4gICAgbGFiZWw6IFJlYWN0Tm9kZTtcbiAgICBwcmV2aWV3OiBSZWFjdE5vZGU7XG4gICAgc2VjdGlvbj86XG4gICAgICAgIHwgc3RyaW5nXG4gICAgICAgIHwge1xuICAgICAgICAgICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICAgICAgICAgIGxhYmVsPzogUmVhY3ROb2RlO1xuICAgICAgICAgIH07XG59XG5cbmludGVyZmFjZSBDb2x1bW5zQmxvY2tGcmFnbWVudDxUIGV4dGVuZHMgQmxvY2tJbnRlcmZhY2U+IHtcbiAgICBsYXlvdXQ6IHN0cmluZztcbiAgICBjb2x1bW5zOiBBcnJheTx7XG4gICAgICAgIGtleTogc3RyaW5nO1xuICAgICAgICB2aXNpYmxlOiBib29sZWFuO1xuICAgICAgICBwcm9wczogQmxvY2tJbnB1dEFwaTxUPjtcbiAgICB9Pjtcbn1cblxuaW50ZXJmYWNlIENvbHVtbnNCbG9ja1N0YXRlPFQgZXh0ZW5kcyBCbG9ja0ludGVyZmFjZT4ge1xuICAgIGxheW91dDogQ29sdW1uc0Jsb2NrTGF5b3V0O1xuICAgIGNvbHVtbnM6IExpc3RCbG9ja0l0ZW08VD5bXTtcbn1cblxuaW50ZXJmYWNlIENyZWF0ZUNvbHVtbnNCbG9ja09wdGlvbnM8VCBleHRlbmRzIEJsb2NrSW50ZXJmYWNlPiB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGRpc3BsYXlOYW1lOiBSZWFjdE5vZGU7XG4gICAgY2F0ZWdvcnk/OiBCbG9ja0NhdGVnb3J5IHwgQ3VzdG9tQmxvY2tDYXRlZ29yeTtcbiAgICBjb250ZW50QmxvY2s6IFQ7XG4gICAgbGF5b3V0czogQ29sdW1uc0Jsb2NrTGF5b3V0W107XG4gICAgdGFncz86IEFycmF5PE1lc3NhZ2VEZXNjcmlwdG9yIHwgc3RyaW5nPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvbHVtbnNCbG9jazxUIGV4dGVuZHMgQmxvY2tJbnRlcmZhY2U+KFxuICAgIHsgbmFtZSwgZGlzcGxheU5hbWUsIGNhdGVnb3J5ID0gQmxvY2tDYXRlZ29yeS5MYXlvdXQsIGNvbnRlbnRCbG9jaywgbGF5b3V0cywgdGFncyB9OiBDcmVhdGVDb2x1bW5zQmxvY2tPcHRpb25zPFQ+LFxuICAgIG92ZXJyaWRlPzogKFxuICAgICAgICBibG9jazogQmxvY2tJbnRlcmZhY2U8Q29sdW1uc0Jsb2NrRnJhZ21lbnQ8VD4sIENvbHVtbnNCbG9ja1N0YXRlPFQ+LCBDb2x1bW5zQmxvY2tGcmFnbWVudDxUPj4sXG4gICAgKSA9PiBCbG9ja0ludGVyZmFjZTxDb2x1bW5zQmxvY2tGcmFnbWVudDxUPiwgQ29sdW1uc0Jsb2NrU3RhdGU8VD4sIENvbHVtbnNCbG9ja0ZyYWdtZW50PFQ+Pixcbik6IEJsb2NrSW50ZXJmYWNlPENvbHVtbnNCbG9ja0ZyYWdtZW50PFQ+LCBDb2x1bW5zQmxvY2tTdGF0ZTxUPiwgQ29sdW1uc0Jsb2NrRnJhZ21lbnQ8VD4+IHtcbiAgICBpZiAobGF5b3V0cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBOdW1iZXIgb2YgbGF5b3V0cyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwIWApO1xuICAgIH1cblxuICAgIGNvbnN0IHVzZUxpc3RCbG9ja0FkbWluQ29tcG9uZW50ID0gY3JlYXRlVXNlTGlzdEJsb2NrQWRtaW5Db21wb25lbnQoeyBibG9jazogY29udGVudEJsb2NrIH0pO1xuXG4gICAgZnVuY3Rpb24gY3JlYXRlRW1wdHlDb2x1bW5zKG51bWJlcjogbnVtYmVyKTogTGlzdEJsb2NrSXRlbTxUPltdIHtcbiAgICAgICAgcmV0dXJuIG5ldyBBcnJheShudW1iZXIpLmZpbGwodW5kZWZpbmVkKS5tYXAoKCkgPT4gKHtcbiAgICAgICAgICAgIGtleTogdXVpZCgpLFxuICAgICAgICAgICAgcHJvcHM6IGNvbnRlbnRCbG9jay5kZWZhdWx0VmFsdWVzKCksXG4gICAgICAgICAgICBzZWxlY3RlZDogZmFsc2UsXG4gICAgICAgICAgICBzbGlkZUluOiBmYWxzZSxcbiAgICAgICAgICAgIHZpc2libGU6IHRydWUsXG4gICAgICAgIH0pKTtcbiAgICB9XG4gICAgY29uc3QgQ29sdW1uc0Jsb2NrOiBCbG9ja0ludGVyZmFjZTxDb2x1bW5zQmxvY2tGcmFnbWVudDxUPiwgQ29sdW1uc0Jsb2NrU3RhdGU8VD4sIENvbHVtbnNCbG9ja0ZyYWdtZW50PFQ+PiA9IHtcbiAgICAgICAgLi4uY3JlYXRlQmxvY2tTa2VsZXRvbigpLFxuXG4gICAgICAgIG5hbWUsXG5cbiAgICAgICAgZGlzcGxheU5hbWUsXG5cbiAgICAgICAgdGFnczogdGFncyA/IHRhZ3MgOiBjb250ZW50QmxvY2sudGFncyxcblxuICAgICAgICBjYXRlZ29yeSxcblxuICAgICAgICBkZWZhdWx0VmFsdWVzOiAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkZWZhdWx0TGF5b3V0ID0gbGF5b3V0c1swXTtcblxuICAgICAgICAgICAgY29uc3Qgc3RhdGU6IENvbHVtbnNCbG9ja1N0YXRlPFQ+ID0ge1xuICAgICAgICAgICAgICAgIGxheW91dDogZGVmYXVsdExheW91dCxcbiAgICAgICAgICAgICAgICAvLyBBZGQgZW1wdHkgY29sdW1ucyBzbyB0aGUgbGlzdCBpcyBub3QgZW1wdHkgaW5pdGlhbGx5XG4gICAgICAgICAgICAgICAgY29sdW1uczogY3JlYXRlRW1wdHlDb2x1bW5zKGRlZmF1bHRMYXlvdXQuY29sdW1ucyksXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICByZXR1cm4gc3RhdGU7XG4gICAgICAgIH0sXG5cbiAgICAgICAgaW5wdXQyU3RhdGU6IChpbnB1dCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbGF5b3V0ID0gbGF5b3V0cy5maW5kKChsYXlvdXQpID0+IGxheW91dC5uYW1lID09PSBpbnB1dC5sYXlvdXQpO1xuXG4gICAgICAgICAgICBpZiAoIWxheW91dCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBsYXlvdXQgXCIke2lucHV0LmxheW91dH1cIiFgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBsYXlvdXQsXG4gICAgICAgICAgICAgICAgY29sdW1uczogaW5wdXQuY29sdW1ucy5tYXAoKGNvbHVtbikgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBjb2x1bW4ua2V5LFxuICAgICAgICAgICAgICAgICAgICBwcm9wczogY29udGVudEJsb2NrLmlucHV0MlN0YXRlKGNvbHVtbi5wcm9wcyksXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgc2xpZGVJbjogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIHZpc2libGU6IGNvbHVtbi52aXNpYmxlLFxuICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG5cbiAgICAgICAgc3RhdGUyT3V0cHV0OiAob3V0cHV0KSA9PiAoe1xuICAgICAgICAgICAgbGF5b3V0OiBvdXRwdXQubGF5b3V0Lm5hbWUsXG4gICAgICAgICAgICBjb2x1bW5zOiBvdXRwdXQuY29sdW1ucy5tYXAoKGNvbHVtbikgPT4gKHtcbiAgICAgICAgICAgICAgICBrZXk6IGNvbHVtbi5rZXksXG4gICAgICAgICAgICAgICAgdmlzaWJsZTogY29sdW1uLnZpc2libGUsXG4gICAgICAgICAgICAgICAgcHJvcHM6IGNvbnRlbnRCbG9jay5zdGF0ZTJPdXRwdXQoY29sdW1uLnByb3BzKSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgfSksXG5cbiAgICAgICAgb3V0cHV0MlN0YXRlOiBhc3luYyAob3V0cHV0LCBjb250ZXh0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsYXlvdXQgPSBsYXlvdXRzLmZpbmQoKGxheW91dCkgPT4gbGF5b3V0Lm5hbWUgPT09IG91dHB1dC5sYXlvdXQpO1xuXG4gICAgICAgICAgICBpZiAoIWxheW91dCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBsYXlvdXQgXCIke291dHB1dC5sYXlvdXR9XCIhYCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHN0YXRlOiBDb2x1bW5zQmxvY2tTdGF0ZTxUPiA9IHtcbiAgICAgICAgICAgICAgICBsYXlvdXQsXG4gICAgICAgICAgICAgICAgY29sdW1uczogW10sXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNvbHVtbnMgb2Ygb3V0cHV0LmNvbHVtbnMpIHtcbiAgICAgICAgICAgICAgICBzdGF0ZS5jb2x1bW5zLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAuLi5jb2x1bW5zLFxuICAgICAgICAgICAgICAgICAgICBwcm9wczogYXdhaXQgY29udGVudEJsb2NrLm91dHB1dDJTdGF0ZShjb2x1bW5zLnByb3BzLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBzbGlkZUluOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHN0YXRlO1xuICAgICAgICB9LFxuXG4gICAgICAgIGNyZWF0ZVByZXZpZXdTdGF0ZTogKHN0YXRlLCBwcmV2aWV3Q29udGV4dCkgPT4gKHtcbiAgICAgICAgICAgIGFkbWluTWV0YTogeyByb3V0ZTogcHJldmlld0NvbnRleHQucGFyZW50VXJsIH0sXG4gICAgICAgICAgICBsYXlvdXQ6IHN0YXRlLmxheW91dC5uYW1lLFxuICAgICAgICAgICAgY29sdW1uczogc3RhdGUuY29sdW1uc1xuICAgICAgICAgICAgICAgIC5maWx0ZXIoKGMpID0+IChwcmV2aWV3Q29udGV4dC5zaG93VmlzaWJsZU9ubHkgPyBjLnZpc2libGUgOiB0cnVlKSkgLy8gZGVwZW5kaW5nIG9uIGNvbnRleHQgc2hvdyBhbGwgYmxvY2tzIG9yIG9ubHkgdmlzaWJsZSBibG9ja3NcbiAgICAgICAgICAgICAgICAubWFwKChjb2x1bW4pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2tBZG1pblJvdXRlID0gYCR7cHJldmlld0NvbnRleHQucGFyZW50VXJsU3ViUm91dGUgPz8gcHJldmlld0NvbnRleHQucGFyZW50VXJsfS8ke2NvbHVtbi5rZXl9L2VkaXRgO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGNvbHVtbi5rZXksXG4gICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlOiBjb2x1bW4udmlzaWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzOiBjb250ZW50QmxvY2suY3JlYXRlUHJldmlld1N0YXRlKGNvbHVtbi5wcm9wcywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnByZXZpZXdDb250ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudFVybFN1YlJvdXRlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50VXJsOiBibG9ja0FkbWluUm91dGUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkbWluUm91dGU6IGJsb2NrQWRtaW5Sb3V0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkbWluTWV0YTogeyByb3V0ZTogYmxvY2tBZG1pblJvdXRlIH0sXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgIH0pLFxuXG4gICAgICAgIGlzVmFsaWQ6IChzdGF0ZSkgPT4gcGFyYWxsZWxBc3luY0V2ZXJ5KHN0YXRlLmNvbHVtbnMsIChjb2x1bW4pID0+IGNvbnRlbnRCbG9jay5pc1ZhbGlkKGNvbHVtbi5wcm9wcykpLFxuXG4gICAgICAgIGFuY2hvcnM6IChzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHN0YXRlLmNvbHVtbnMucmVkdWNlPHN0cmluZ1tdPigoYW5jaG9ycywgY29sdW1uKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsuLi5hbmNob3JzLCAuLi4oY29udGVudEJsb2NrLmFuY2hvcnM/Lihjb2x1bW4ucHJvcHMpID8/IFtdKV07XG4gICAgICAgICAgICB9LCBbXSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZGVwZW5kZW5jaWVzOiAoc3RhdGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1lcmdlZERlcGVuZGVuY2llcyA9IHN0YXRlLmNvbHVtbnMucmVkdWNlPEJsb2NrRGVwZW5kZW5jeVtdPigoZGVwZW5kZW5jaWVzLCBjb2x1bW4pID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gWy4uLmRlcGVuZGVuY2llcywgLi4uKGNvbnRlbnRCbG9jay5kZXBlbmRlbmNpZXM/Lihjb2x1bW4ucHJvcHMpID8/IFtdKV07XG4gICAgICAgICAgICB9LCBbXSk7XG5cbiAgICAgICAgICAgIHJldHVybiBkZWR1cGxpY2F0ZUJsb2NrRGVwZW5kZW5jaWVzKG1lcmdlZERlcGVuZGVuY2llcyk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgcmVwbGFjZURlcGVuZGVuY2llc0luT3V0cHV0OiAob3V0cHV0LCByZXBsYWNlbWVudHMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5ld091dHB1dDogQ29sdW1uc0Jsb2NrRnJhZ21lbnQ8VD4gPSB7IC4uLm91dHB1dCwgY29sdW1uczogW10gfTtcblxuICAgICAgICAgICAgZm9yIChjb25zdCBjb2x1bW4gb2Ygb3V0cHV0LmNvbHVtbnMpIHtcbiAgICAgICAgICAgICAgICBuZXdPdXRwdXQuY29sdW1ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgLi4uY29sdW1uLFxuICAgICAgICAgICAgICAgICAgICBwcm9wczogY29udGVudEJsb2NrLnJlcGxhY2VEZXBlbmRlbmNpZXNJbk91dHB1dChjb2x1bW4ucHJvcHMsIHJlcGxhY2VtZW50cyksXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBuZXdPdXRwdXQ7XG4gICAgICAgIH0sXG5cbiAgICAgICAgQWRtaW5Db21wb25lbnQ6ICh7IHN0YXRlLCB1cGRhdGVTdGF0ZSB9KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpbnRsID0gdXNlSW50bCgpO1xuICAgICAgICAgICAgY29uc3QgZ3JvdXBMYXlvdXRzQnlDb2x1bW5zQXBpID0gY3JlYXRlR3JvdXBMYXlvdXRzQnlDb2x1bW5zQXBpKGxheW91dHMpO1xuICAgICAgICAgICAgY29uc3QgaGFuZGxlTGlzdEJsb2NrQWRtaW5DaGFuZ2U6IERpc3BhdGNoPFNldFN0YXRlQWN0aW9uPExpc3RCbG9ja1N0YXRlPFQ+Pj4gPSAobGlzdEJsb2NrU2V0U3RhdGVBY3Rpb24pID0+IHtcbiAgICAgICAgICAgICAgICB1cGRhdGVTdGF0ZSgocHJldlN0YXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpc3RCbG9ja1N0YXRlID0gcmVzb2x2ZU5ld1N0YXRlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXZTdGF0ZTogeyBibG9ja3M6IHByZXZTdGF0ZS5jb2x1bW5zIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGF0ZUFjdGlvbjogbGlzdEJsb2NrU2V0U3RhdGVBY3Rpb24sXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4ucHJldlN0YXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uczogbGlzdEJsb2NrU3RhdGUuYmxvY2tzLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgICAgICBjYW5ub3RQYXN0ZUJsb2NrRXJyb3JEaWFsb2csXG4gICAgICAgICAgICAgICAgY3JlYXRlVXBkYXRlU3ViQmxvY2tzRm4sXG4gICAgICAgICAgICAgICAgdXBkYXRlQ2xpcGJvYXJkQ29udGVudCxcbiAgICAgICAgICAgICAgICBhZGROZXdCbG9jayxcbiAgICAgICAgICAgICAgICBjb3B5U2VsZWN0ZWRCbG9ja3MsXG4gICAgICAgICAgICAgICAgZGVsZXRlQWxsU2VsZWN0ZWRCbG9ja3MsXG4gICAgICAgICAgICAgICAgc2VsZWN0QmxvY2ssXG4gICAgICAgICAgICAgICAgaGFuZGxlVG9nZ2xlU2VsZWN0QWxsLFxuICAgICAgICAgICAgICAgIHBhc3RlQmxvY2ssXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRDb3VudCxcbiAgICAgICAgICAgICAgICBkZWxldGVCbG9ja3MsXG4gICAgICAgICAgICAgICAgdG9nZ2xlVmlzaWJsZSxcbiAgICAgICAgICAgIH0gPSB1c2VMaXN0QmxvY2tBZG1pbkNvbXBvbmVudCh7IHN0YXRlOiB7IGJsb2Nrczogc3RhdGUuY29sdW1ucyB9LCB1cGRhdGVTdGF0ZTogaGFuZGxlTGlzdEJsb2NrQWRtaW5DaGFuZ2UgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgPFN0YWNrU3dpdGNoIGluaXRpYWxQYWdlPVwibGlzdFwiIGRpc2FibGVGb3JjZVByb21wdFJvdXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFN0YWNrUGFnZSBuYW1lPVwibGlzdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCbG9ja3NGaW5hbEZvcm08eyBsYXlvdXQ6IENvbHVtbnNCbG9ja0xheW91dDsgY29sdW1uczogbnVtYmVyIH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uU3VibWl0PXsoeyBsYXlvdXQsIGNvbHVtbnMgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlU3RhdGUoKHByZXZTdGF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRMYXlvdXRGb3JTZWxlY3RlZENvbHVtbnMgPSBncm91cExheW91dHNCeUNvbHVtbnNBcGkuZ2V0RGVmYXVsdExheW91dChjb2x1bW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdMYXlvdXQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXlvdXQuY29sdW1ucyAhPT0gY29sdW1ucyAmJiBkZWZhdWx0TGF5b3V0Rm9yU2VsZWN0ZWRDb2x1bW5zID8gZGVmYXVsdExheW91dEZvclNlbGVjdGVkQ29sdW1ucyA6IGxheW91dDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtaXNzaW5nRW1wdHlDb2x1bW5zID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1ucyA+IHByZXZTdGF0ZS5jb2x1bW5zLmxlbmd0aCA/IGNyZWF0ZUVtcHR5Q29sdW1ucyhjb2x1bW5zIC0gcHJldlN0YXRlLmNvbHVtbnMubGVuZ3RoKSA6IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnByZXZTdGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5b3V0OiBuZXdMYXlvdXQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnM6IFsuLi5wcmV2U3RhdGUuY29sdW1ucywgLi4ubWlzc2luZ0VtcHR5Q29sdW1uc10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsVmFsdWVzPXt7IGxheW91dDogc3RhdGUubGF5b3V0LCBjb2x1bW5zOiBzdGF0ZS5sYXlvdXQuY29sdW1ucyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZpZWxkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiY29sdW1uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17PEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MuY29sdW1ucy5jb2x1bW5zXCIgZGVmYXVsdE1lc3NhZ2U9XCJDb2x1bW5zXCIgLz59XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ9e0ZpbmFsRm9ybUNvbHVtbnNTZWxlY3R9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zPXtncm91cExheW91dHNCeUNvbHVtbnNBcGkuY29sdW1uc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RmllbGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJsYXlvdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9ezxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwiY29tZXQuYmxvY2tzLmNvbHVtbnMubGF5b3V0XCIgZGVmYXVsdE1lc3NhZ2U9XCJMYXlvdXRcIiAvPn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudD17RmluYWxGb3JtTGF5b3V0U2VsZWN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5b3V0cz17Z3JvdXBMYXlvdXRzQnlDb2x1bW5zQXBpLmdldExheW91dHMoc3RhdGUubGF5b3V0LmNvbHVtbnMpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CbG9ja3NGaW5hbEZvcm0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrQWRtaW5Db21wb25lbnRTZWN0aW9uIHRpdGxlPXs8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5jb2x1bW5zLml0ZW1zXCIgZGVmYXVsdE1lc3NhZ2U9XCJJdGVtc1wiIC8+fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrQWRtaW5Db21wb25lbnRQYXBlciBkaXNhYmxlUGFkZGluZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTdGFja1N3aXRjaEFwaUNvbnRleHQuQ29uc3VtZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyhzdGFja0FwaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNlbGVjdFByZXZpZXdDb21wb25lbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrTGlzdEhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3N0YXRlLmNvbHVtbnMubGVuZ3RoID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNlbGVjdEFsbEZyb21Db250cm9sTGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXtzZWxlY3RlZENvdW50ID09PSBzdGF0ZS5jb2x1bW5zLmxlbmd0aCAmJiBzZWxlY3RlZENvdW50ID4gMH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV0ZXJtaW5hdGU9e3NlbGVjdGVkQ291bnQgPiAwICYmIHNlbGVjdGVkQ291bnQgIT09IHN0YXRlLmNvbHVtbnMubGVuZ3RofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZVRvZ2dsZVNlbGVjdEFsbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5saXN0LnNlbGVjdEFsbFwiIGRlZmF1bHRNZXNzYWdlPVwiU2VsZWN0IGFsbFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrTGlzdEhlYWRlckFjdGlvbkNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzZWxlY3RlZENvdW50ID4gMCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b24gb25DbGljaz17ZGVsZXRlQWxsU2VsZWN0ZWRCbG9ja3N9IHNpemU9XCJsYXJnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERlbGV0ZSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uIG9uQ2xpY2s9e2NvcHlTZWxlY3RlZEJsb2Nrc30gc2l6ZT1cImxhcmdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q29weSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b24gb25DbGljaz17KCkgPT4gcGFzdGVCbG9jaygwKX0gc2l6ZT1cImxhcmdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBhc3RlIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tMaXN0SGVhZGVyQWN0aW9uQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tMaXN0SGVhZGVyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERpdmlkZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7c3RhdGUuY29sdW1ucy5tYXAoKGNvbHVtbiwgY29sdW1uSW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEhvdmVyUHJldmlld0NvbXBvbmVudCBrZXk9e2NvbHVtbi5rZXl9IGNvbXBvbmVudFNsdWc9e2Ake2NvbHVtbi5rZXl9L2NvbnRlbnRgfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrUm93XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD17Y29sdW1uLmtleX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlclByZXZpZXdDb250ZW50PXsoKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrUHJldmlld0NvbnRlbnQgYmxvY2s9e2NvbnRlbnRCbG9ja30gc3RhdGU9e2NvbHVtbi5wcm9wc30gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleD17Y29sdW1uSW5kZXh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNvbnRlbnRDbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrQXBpLmFjdGl2YXRlUGFnZShcImVkaXRcIiwgY29sdW1uLmtleSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25EZWxldGVDbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZUJsb2NrcyhbY29sdW1uLmtleV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVCbG9jaz17KGZyb20sIHRvKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlU3RhdGUoKHByZXZTdGF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb2x1bW5zID0gWy4uLnByZXZTdGF0ZS5jb2x1bW5zXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29sdW1uVG9Nb3ZlID0gY29sdW1ucy5zcGxpY2UoZnJvbSwgMSlbMF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnMuc3BsaWNlKHRvLCAwLCBjb2x1bW5Ub01vdmUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyAuLi5wcmV2U3RhdGUsIGNvbHVtbnMgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmlsaXR5QnV0dG9uPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvbiBvbkNsaWNrPXsoKSA9PiB0b2dnbGVWaXNpYmxlKGNvbHVtbi5rZXkpfSBzaXplPVwic21hbGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2NvbHVtbi52aXNpYmxlID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFZpc2libGUgY29sb3I9XCJzdWNjZXNzXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbnZpc2libGUgY29sb3I9XCJhY3Rpb25cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQWRkTmV3QmxvY2s9eyhiZWZvcmVJbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGFkZE5ld0Jsb2NrKGJlZm9yZUluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja0FwaS5hY3RpdmF0ZVBhZ2UoXCJlZGl0XCIsIGtleSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Db3B5Q2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVDbGlwYm9hcmRDb250ZW50KFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogY29udGVudEJsb2NrLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlOiBjb2x1bW4udmlzaWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlOiBjb2x1bW4ucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25QYXN0ZUNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzdGVCbG9jayhjb2x1bW5JbmRleCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkPXtjb2x1bW4uc2VsZWN0ZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblNlbGVjdGVkQ2xpY2s9eyhzZWxlY3RlZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdEJsb2NrKGNvbHVtbiwgc2VsZWN0ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzVmFsaWRGbj17KCkgPT4gY29udGVudEJsb2NrLmlzVmFsaWQoY29sdW1uLnByb3BzKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlSW49e2NvbHVtbi5zbGlkZUlufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZUJvdHRvbUluc2VydEJldHdlZW5CdXR0b249e2NvbHVtbkluZGV4ID49IHN0YXRlLmNvbHVtbnMubGVuZ3RoIC0gMX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0hvdmVyUHJldmlld0NvbXBvbmVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzdGF0ZS5jb2x1bW5zLmxlbmd0aCA9PT0gMCA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrQWRtaW5Db21wb25lbnRCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBhZGROZXdCbG9jaygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrQXBpLmFjdGl2YXRlUGFnZShcImVkaXRcIiwga2V5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TGFyZ2VBZGRCdXR0b25Db250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxMYXJnZUFkZEJ1dHRvbkljb24gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VHlwb2dyYXBoeT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MuY29sdW1ucy5hZGRJdGVtXCIgZGVmYXVsdE1lc3NhZ2U9XCJBZGQgaXRlbVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9MYXJnZUFkZEJ1dHRvbkNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QWRtaW5Db21wb25lbnRTdGlja3lGb290ZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGFkZE5ld0Jsb2NrKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrQXBpLmFjdGl2YXRlUGFnZShcImVkaXRcIiwga2V5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRJY29uPXs8QWRkIC8+fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwiY29tZXQuYmxvY2tzLmNvbHVtbnMuYWRkSXRlbVwiIGRlZmF1bHRNZXNzYWdlPVwiQWRkIGl0ZW1cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CbG9ja0FkbWluQ29tcG9uZW50QnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FkbWluQ29tcG9uZW50U3RpY2t5Rm9vdGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1NlbGVjdFByZXZpZXdDb21wb25lbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvU3RhY2tTd2l0Y2hBcGlDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0Jsb2NrQWRtaW5Db21wb25lbnRQYXBlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0Jsb2NrQWRtaW5Db21wb25lbnRTZWN0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9TdGFja1BhZ2U+XG4gICAgICAgICAgICAgICAgICAgICAgICA8U3RhY2tQYWdlIG5hbWU9XCJlZGl0XCIgdGl0bGU9e2ludGwuZm9ybWF0TWVzc2FnZSh7IGlkOiBcImNvbWV0LmJsb2Nrcy5jb2x1bW5zLmVkaXRDb2x1bW5cIiwgZGVmYXVsdE1lc3NhZ2U6IFwiRWRpdCBjb2x1bW5cIiB9KX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyhrZXkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF0Y2hJbmRleCA9IHN0YXRlLmNvbHVtbnMuZmluZEluZGV4KChjb2x1bW4pID0+IGNvbHVtbi5rZXkgPT09IGtleSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoSW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MuY29sdW1ucy51bmtub3duQ29sdW1uXCIgZGVmYXVsdE1lc3NhZ2U9XCJDYW4ndCBmaW5kIGNvbHVtblwiIC8+O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSBzdGF0ZS5jb2x1bW5zW21hdGNoSW5kZXhdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U3RhY2tQYWdlVGl0bGUgdGl0bGU9e2NvbHVtbkNvdW50TGFiZWwoaW50bCwgbWF0Y2hJbmRleCArIDEpfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y29udGVudEJsb2NrLkFkbWluQ29tcG9uZW50IHN0YXRlPXttYXRjaC5wcm9wc30gdXBkYXRlU3RhdGU9e2NyZWF0ZVVwZGF0ZVN1YkJsb2Nrc0ZuKGtleSl9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N0YWNrUGFnZVRpdGxlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1N0YWNrUGFnZT5cbiAgICAgICAgICAgICAgICAgICAgPC9TdGFja1N3aXRjaD5cbiAgICAgICAgICAgICAgICAgICAge2Nhbm5vdFBhc3RlQmxvY2tFcnJvckRpYWxvZ31cbiAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgcHJldmlld0NvbnRlbnQ6IChzdGF0ZSwgY29udGV4dCkgPT4ge1xuICAgICAgICAgICAgaWYgKHN0YXRlLmNvbHVtbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5jb2x1bW5zLm5vQ29sdW1uc1wiIGRlZmF1bHRNZXNzYWdlPVwiTm8gY29sdW1uc1wiIC8+LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBzdGF0ZS5jb2x1bW5zLnJlZHVjZTxQcmV2aWV3Q29udGVudFtdPihcbiAgICAgICAgICAgICAgICAocHJldmlld0NvbnRlbnQsIGN1cnJlbnRDb2x1bW4pID0+IFsuLi5wcmV2aWV3Q29udGVudCwgLi4uY29udGVudEJsb2NrLnByZXZpZXdDb250ZW50KGN1cnJlbnRDb2x1bW4ucHJvcHMsIGNvbnRleHQpXSxcbiAgICAgICAgICAgICAgICBbXSxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgcmVzb2x2ZURlcGVuZGVuY3lQYXRoOiAoc3RhdGUsIGpzb25QYXRoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIS9eY29sdW1ucy5cXGQrLnByb3BzLy50ZXN0KGpzb25QYXRoKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNvbHVtbnNCbG9jazogSW52YWxpZCBqc29uUGF0aFwiKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgcGF0aEFyciA9IGpzb25QYXRoLnNwbGl0KFwiLlwiKTtcbiAgICAgICAgICAgIGNvbnN0IG51bSA9IE51bWJlcihwYXRoQXJyWzFdKTtcbiAgICAgICAgICAgIGNvbnN0IGJsb2NrSXRlbSA9IHN0YXRlLmNvbHVtbnNbbnVtXTtcblxuICAgICAgICAgICAgY29uc3QgY2hpbGRQYXRoID0gY29udGVudEJsb2NrLnJlc29sdmVEZXBlbmRlbmN5UGF0aChibG9ja0l0ZW0ucHJvcHMsIHBhdGhBcnIuc2xpY2UoMykuam9pbihcIi5cIikpO1xuICAgICAgICAgICAgcmV0dXJuIGAke2Jsb2NrSXRlbS5rZXl9L2VkaXQvJHtjaGlsZFBhdGh9YDtcbiAgICAgICAgfSxcblxuICAgICAgICBleHRyYWN0VGV4dENvbnRlbnRzOiAoc3RhdGUsIG9wdGlvbnMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGluY2x1ZGVJbnZpc2libGVDb250ZW50ID0gb3B0aW9ucz8uaW5jbHVkZUludmlzaWJsZUNvbnRlbnQgPz8gZmFsc2U7XG5cbiAgICAgICAgICAgIHJldHVybiBzdGF0ZS5jb2x1bW5zLnJlZHVjZTxzdHJpbmdbXT4oKGNvbnRlbnQsIGNvbHVtbikgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghY29sdW1uLnZpc2libGUgJiYgIWluY2x1ZGVJbnZpc2libGVDb250ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjb250ZW50O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBbLi4uY29udGVudCwgLi4uKGNvbnRlbnRCbG9jay5leHRyYWN0VGV4dENvbnRlbnRzPy4oY29sdW1uLnByb3BzLCBvcHRpb25zKSA/PyBbXSldO1xuICAgICAgICAgICAgfSwgW10pO1xuICAgICAgICB9LFxuICAgIH07XG5cbiAgICBpZiAob3ZlcnJpZGUpIHtcbiAgICAgICAgcmV0dXJuIG92ZXJyaWRlKENvbHVtbnNCbG9jayk7XG4gICAgfVxuXG4gICAgcmV0dXJuIENvbHVtbnNCbG9jaztcbn1cblxuY29uc3QgQmxvY2tMaXN0SGVhZGVyID0gc3R5bGVkKFwiZGl2XCIpYFxuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5gO1xuXG5jb25zdCBCbG9ja0xpc3RIZWFkZXJBY3Rpb25Db250YWluZXIgPSBzdHlsZWQoXCJkaXZcIilgXG4gICAgcGFkZGluZzogMTJweCAwO1xuYDtcblxuY29uc3QgU2VsZWN0QWxsRnJvbUNvbnRyb2xMYWJlbCA9IHN0eWxlZChGb3JtQ29udHJvbExhYmVsKWBcbiAgICBwYWRkaW5nOiAxNXB4IDEwcHggMTVweCA3cHg7XG5gO1xuXG5jb25zdCBMYXJnZUFkZEJ1dHRvbkNvbnRlbnQgPSBzdHlsZWQoXCJzcGFuXCIpYFxuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHBhZGRpbmc6IDRweCAwO1xuYDtcblxuY29uc3QgTGFyZ2VBZGRCdXR0b25JY29uID0gc3R5bGVkKEFkZClgXG4gICAgZm9udC1zaXplOiAyNHB4O1xuICAgIG1hcmdpbi1ib3R0b206IDhweDtcbmA7XG5cbnR5cGUgR3JvdXBlZExheW91dHNCeUNvbHVtbnNBcGkgPSB7XG4gICAgY29sdW1uczogbnVtYmVyW107XG4gICAgZ2V0TGF5b3V0czogKGNvbHVtbnM6IG51bWJlcikgPT4gQ29sdW1uc0Jsb2NrTGF5b3V0W107XG4gICAgZ2V0RGVmYXVsdExheW91dDogKGNvbHVtbnM6IG51bWJlcikgPT4gQ29sdW1uc0Jsb2NrTGF5b3V0IHwgdW5kZWZpbmVkO1xufTtcblxuZnVuY3Rpb24gY29sdW1uQ291bnRMYWJlbChpbnRsOiBJbnRsU2hhcGUsIGNvdW50OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiBpbnRsLmZvcm1hdE1lc3NhZ2UoXG4gICAgICAgIHtcbiAgICAgICAgICAgIGlkOiBcImNvbWV0LmJsb2Nrcy5jb2x1bW5zLmNvbHVtblRpdGxlXCIsXG4gICAgICAgICAgICBkZWZhdWx0TWVzc2FnZTogXCJDb2x1bW4ge251bWJlcn1cIixcbiAgICAgICAgfSxcbiAgICAgICAgeyBudW1iZXI6IGNvdW50IH0sXG4gICAgKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlR3JvdXBMYXlvdXRzQnlDb2x1bW5zQXBpKGxheW91dHM6IENvbHVtbnNCbG9ja0xheW91dFtdKTogR3JvdXBlZExheW91dHNCeUNvbHVtbnNBcGkge1xuICAgIGNvbnN0IGdyb3VwZWRMYXlvdXRzID0gbGF5b3V0cy5yZWR1Y2UoKGFjYywgYykgPT4ge1xuICAgICAgICBhY2Muc2V0KGMuY29sdW1ucywgWy4uLihhY2MuZ2V0KGMuY29sdW1ucykgfHwgW10pLCBjXSk7XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgfSwgbmV3IE1hcDxudW1iZXIsIENvbHVtbnNCbG9ja0xheW91dFtdPigpKTtcblxuICAgIHJldHVybiB7XG4gICAgICAgIGNvbHVtbnM6IEFycmF5LmZyb20oZ3JvdXBlZExheW91dHMua2V5cygpKSxcbiAgICAgICAgZ2V0TGF5b3V0czogKGNvbHVtbnM6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGdyb3VwZWRMYXlvdXRzLmdldChjb2x1bW5zKSB8fCBbXTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0RGVmYXVsdExheW91dDogKGNvbHVtbnM6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgY29uc3QgbGF5b3V0cyA9IGdyb3VwZWRMYXlvdXRzLmdldChjb2x1bW5zKSB8fCBbXTtcbiAgICAgICAgICAgIHJldHVybiBsYXlvdXRzLmxlbmd0aCA/IGxheW91dHNbMF0gOiB1bmRlZmluZWQ7XG4gICAgICAgIH0sXG4gICAgfTtcbn1cbiJdfQ== */",
551
545
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__
552
546
  });
553
- var BlockListHeaderActionContainer = /*#__PURE__*/(0, _styles.styled)("div", process.env.NODE_ENV === "production" ? {
547
+ var BlockListHeaderActionContainer = /*#__PURE__*/styled("div", process.env.NODE_ENV === "production" ? {
554
548
  target: "eh7qu9y3"
555
549
  } : {
556
550
  target: "eh7qu9y3",
@@ -563,7 +557,7 @@ var BlockListHeaderActionContainer = /*#__PURE__*/(0, _styles.styled)("div", pro
563
557
  styles: "padding:12px 0/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ibG9ja3MvZmFjdG9yaWVzL2NyZWF0ZUNvbHVtbnNCbG9jay50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBcWZvRCIsImZpbGUiOiIuLi8uLi8uLi9zcmMvYmxvY2tzL2ZhY3Rvcmllcy9jcmVhdGVDb2x1bW5zQmxvY2sudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmllbGQsIFN0YWNrUGFnZSwgU3RhY2tQYWdlVGl0bGUsIFN0YWNrU3dpdGNoLCBTdGFja1N3aXRjaEFwaUNvbnRleHQgfSBmcm9tIFwiQGNvbWV0L2FkbWluXCI7XG5pbXBvcnQgeyBBZGQsIENvcHksIERlbGV0ZSwgSW52aXNpYmxlLCBQYXN0ZSwgVmlzaWJsZSB9IGZyb20gXCJAY29tZXQvYWRtaW4taWNvbnNcIjtcbmltcG9ydCB7IENoZWNrYm94LCBEaXZpZGVyLCBGb3JtQ29udHJvbExhYmVsLCBJY29uQnV0dG9uLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHN0eWxlZCB9IGZyb20gXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiO1xuaW1wb3J0IHsgdHlwZSBEaXNwYXRjaCwgdHlwZSBSZWFjdE5vZGUsIHR5cGUgU2V0U3RhdGVBY3Rpb24gfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IEZvcm1hdHRlZE1lc3NhZ2UsIHR5cGUgSW50bFNoYXBlLCB0eXBlIE1lc3NhZ2VEZXNjcmlwdG9yLCB1c2VJbnRsIH0gZnJvbSBcInJlYWN0LWludGxcIjtcbmltcG9ydCB7IHY0IGFzIHV1aWQgfSBmcm9tIFwidXVpZFwiO1xuXG5pbXBvcnQgeyBBZG1pbkNvbXBvbmVudFN0aWNreUZvb3RlciB9IGZyb20gXCIuLi9jb21tb24vQWRtaW5Db21wb25lbnRTdGlja3lGb290ZXJcIjtcbmltcG9ydCB7IEJsb2NrQWRtaW5Db21wb25lbnRCdXR0b24gfSBmcm9tIFwiLi4vY29tbW9uL0Jsb2NrQWRtaW5Db21wb25lbnRCdXR0b25cIjtcbmltcG9ydCB7IEJsb2NrQWRtaW5Db21wb25lbnRQYXBlciB9IGZyb20gXCIuLi9jb21tb24vQmxvY2tBZG1pbkNvbXBvbmVudFBhcGVyXCI7XG5pbXBvcnQgeyBCbG9ja0FkbWluQ29tcG9uZW50U2VjdGlvbiB9IGZyb20gXCIuLi9jb21tb24vQmxvY2tBZG1pbkNvbXBvbmVudFNlY3Rpb25cIjtcbmltcG9ydCB7IEJsb2NrUHJldmlld0NvbnRlbnQgfSBmcm9tIFwiLi4vY29tbW9uL2Jsb2NrUm93L0Jsb2NrUHJldmlld0NvbnRlbnRcIjtcbmltcG9ydCB7IEJsb2NrUm93IH0gZnJvbSBcIi4uL2NvbW1vbi9ibG9ja1Jvdy9CbG9ja1Jvd1wiO1xuaW1wb3J0IHsgQmxvY2tzRmluYWxGb3JtIH0gZnJvbSBcIi4uL2Zvcm0vQmxvY2tzRmluYWxGb3JtXCI7XG5pbXBvcnQgeyBjcmVhdGVCbG9ja1NrZWxldG9uIH0gZnJvbSBcIi4uL2hlbHBlcnMvY3JlYXRlQmxvY2tTa2VsZXRvblwiO1xuaW1wb3J0IHsgZGVkdXBsaWNhdGVCbG9ja0RlcGVuZGVuY2llcyB9IGZyb20gXCIuLi9oZWxwZXJzL2RlZHVwbGljYXRlQmxvY2tEZXBlbmRlbmNpZXNcIjtcbmltcG9ydCB7IEhvdmVyUHJldmlld0NvbXBvbmVudCB9IGZyb20gXCIuLi9pZnJhbWVicmlkZ2UvSG92ZXJQcmV2aWV3Q29tcG9uZW50XCI7XG5pbXBvcnQgeyBTZWxlY3RQcmV2aWV3Q29tcG9uZW50IH0gZnJvbSBcIi4uL2lmcmFtZWJyaWRnZS9TZWxlY3RQcmV2aWV3Q29tcG9uZW50XCI7XG5pbXBvcnQge1xuICAgIEJsb2NrQ2F0ZWdvcnksXG4gICAgdHlwZSBCbG9ja0RlcGVuZGVuY3ksXG4gICAgdHlwZSBCbG9ja0lucHV0QXBpLFxuICAgIHR5cGUgQmxvY2tJbnRlcmZhY2UsXG4gICAgdHlwZSBDdXN0b21CbG9ja0NhdGVnb3J5LFxuICAgIHR5cGUgUHJldmlld0NvbnRlbnQsXG59IGZyb20gXCIuLi90eXBlc1wiO1xuaW1wb3J0IHsgcmVzb2x2ZU5ld1N0YXRlIH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5pbXBvcnQgeyBwYXJhbGxlbEFzeW5jRXZlcnkgfSBmcm9tIFwiLi4vdXRpbHMvcGFyYWxsZWxBc3luY0V2ZXJ5XCI7XG5pbXBvcnQgeyBGaW5hbEZvcm1Db2x1bW5zU2VsZWN0IH0gZnJvbSBcIi4vY29sdW1uc0Jsb2NrL0ZpbmFsRm9ybUNvbHVtbnNTZWxlY3RcIjtcbmltcG9ydCB7IEZpbmFsRm9ybUxheW91dFNlbGVjdCB9IGZyb20gXCIuL2NvbHVtbnNCbG9jay9GaW5hbEZvcm1MYXlvdXRTZWxlY3RcIjtcbmltcG9ydCB7IHR5cGUgTGlzdEJsb2NrSXRlbSwgdHlwZSBMaXN0QmxvY2tTdGF0ZSB9IGZyb20gXCIuL2NyZWF0ZUxpc3RCbG9ja1wiO1xuaW1wb3J0IHsgY3JlYXRlVXNlQWRtaW5Db21wb25lbnQgYXMgY3JlYXRlVXNlTGlzdEJsb2NrQWRtaW5Db21wb25lbnQgfSBmcm9tIFwiLi9saXN0QmxvY2svY3JlYXRlVXNlQWRtaW5Db21wb25lbnRcIjtcblxuZXhwb3J0IGludGVyZmFjZSBDb2x1bW5zQmxvY2tMYXlvdXQge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBjb2x1bW5zOiBudW1iZXI7XG4gICAgbGFiZWw6IFJlYWN0Tm9kZTtcbiAgICBwcmV2aWV3OiBSZWFjdE5vZGU7XG4gICAgc2VjdGlvbj86XG4gICAgICAgIHwgc3RyaW5nXG4gICAgICAgIHwge1xuICAgICAgICAgICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICAgICAgICAgIGxhYmVsPzogUmVhY3ROb2RlO1xuICAgICAgICAgIH07XG59XG5cbmludGVyZmFjZSBDb2x1bW5zQmxvY2tGcmFnbWVudDxUIGV4dGVuZHMgQmxvY2tJbnRlcmZhY2U+IHtcbiAgICBsYXlvdXQ6IHN0cmluZztcbiAgICBjb2x1bW5zOiBBcnJheTx7XG4gICAgICAgIGtleTogc3RyaW5nO1xuICAgICAgICB2aXNpYmxlOiBib29sZWFuO1xuICAgICAgICBwcm9wczogQmxvY2tJbnB1dEFwaTxUPjtcbiAgICB9Pjtcbn1cblxuaW50ZXJmYWNlIENvbHVtbnNCbG9ja1N0YXRlPFQgZXh0ZW5kcyBCbG9ja0ludGVyZmFjZT4ge1xuICAgIGxheW91dDogQ29sdW1uc0Jsb2NrTGF5b3V0O1xuICAgIGNvbHVtbnM6IExpc3RCbG9ja0l0ZW08VD5bXTtcbn1cblxuaW50ZXJmYWNlIENyZWF0ZUNvbHVtbnNCbG9ja09wdGlvbnM8VCBleHRlbmRzIEJsb2NrSW50ZXJmYWNlPiB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGRpc3BsYXlOYW1lOiBSZWFjdE5vZGU7XG4gICAgY2F0ZWdvcnk/OiBCbG9ja0NhdGVnb3J5IHwgQ3VzdG9tQmxvY2tDYXRlZ29yeTtcbiAgICBjb250ZW50QmxvY2s6IFQ7XG4gICAgbGF5b3V0czogQ29sdW1uc0Jsb2NrTGF5b3V0W107XG4gICAgdGFncz86IEFycmF5PE1lc3NhZ2VEZXNjcmlwdG9yIHwgc3RyaW5nPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvbHVtbnNCbG9jazxUIGV4dGVuZHMgQmxvY2tJbnRlcmZhY2U+KFxuICAgIHsgbmFtZSwgZGlzcGxheU5hbWUsIGNhdGVnb3J5ID0gQmxvY2tDYXRlZ29yeS5MYXlvdXQsIGNvbnRlbnRCbG9jaywgbGF5b3V0cywgdGFncyB9OiBDcmVhdGVDb2x1bW5zQmxvY2tPcHRpb25zPFQ+LFxuICAgIG92ZXJyaWRlPzogKFxuICAgICAgICBibG9jazogQmxvY2tJbnRlcmZhY2U8Q29sdW1uc0Jsb2NrRnJhZ21lbnQ8VD4sIENvbHVtbnNCbG9ja1N0YXRlPFQ+LCBDb2x1bW5zQmxvY2tGcmFnbWVudDxUPj4sXG4gICAgKSA9PiBCbG9ja0ludGVyZmFjZTxDb2x1bW5zQmxvY2tGcmFnbWVudDxUPiwgQ29sdW1uc0Jsb2NrU3RhdGU8VD4sIENvbHVtbnNCbG9ja0ZyYWdtZW50PFQ+Pixcbik6IEJsb2NrSW50ZXJmYWNlPENvbHVtbnNCbG9ja0ZyYWdtZW50PFQ+LCBDb2x1bW5zQmxvY2tTdGF0ZTxUPiwgQ29sdW1uc0Jsb2NrRnJhZ21lbnQ8VD4+IHtcbiAgICBpZiAobGF5b3V0cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBOdW1iZXIgb2YgbGF5b3V0cyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwIWApO1xuICAgIH1cblxuICAgIGNvbnN0IHVzZUxpc3RCbG9ja0FkbWluQ29tcG9uZW50ID0gY3JlYXRlVXNlTGlzdEJsb2NrQWRtaW5Db21wb25lbnQoeyBibG9jazogY29udGVudEJsb2NrIH0pO1xuXG4gICAgZnVuY3Rpb24gY3JlYXRlRW1wdHlDb2x1bW5zKG51bWJlcjogbnVtYmVyKTogTGlzdEJsb2NrSXRlbTxUPltdIHtcbiAgICAgICAgcmV0dXJuIG5ldyBBcnJheShudW1iZXIpLmZpbGwodW5kZWZpbmVkKS5tYXAoKCkgPT4gKHtcbiAgICAgICAgICAgIGtleTogdXVpZCgpLFxuICAgICAgICAgICAgcHJvcHM6IGNvbnRlbnRCbG9jay5kZWZhdWx0VmFsdWVzKCksXG4gICAgICAgICAgICBzZWxlY3RlZDogZmFsc2UsXG4gICAgICAgICAgICBzbGlkZUluOiBmYWxzZSxcbiAgICAgICAgICAgIHZpc2libGU6IHRydWUsXG4gICAgICAgIH0pKTtcbiAgICB9XG4gICAgY29uc3QgQ29sdW1uc0Jsb2NrOiBCbG9ja0ludGVyZmFjZTxDb2x1bW5zQmxvY2tGcmFnbWVudDxUPiwgQ29sdW1uc0Jsb2NrU3RhdGU8VD4sIENvbHVtbnNCbG9ja0ZyYWdtZW50PFQ+PiA9IHtcbiAgICAgICAgLi4uY3JlYXRlQmxvY2tTa2VsZXRvbigpLFxuXG4gICAgICAgIG5hbWUsXG5cbiAgICAgICAgZGlzcGxheU5hbWUsXG5cbiAgICAgICAgdGFnczogdGFncyA/IHRhZ3MgOiBjb250ZW50QmxvY2sudGFncyxcblxuICAgICAgICBjYXRlZ29yeSxcblxuICAgICAgICBkZWZhdWx0VmFsdWVzOiAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkZWZhdWx0TGF5b3V0ID0gbGF5b3V0c1swXTtcblxuICAgICAgICAgICAgY29uc3Qgc3RhdGU6IENvbHVtbnNCbG9ja1N0YXRlPFQ+ID0ge1xuICAgICAgICAgICAgICAgIGxheW91dDogZGVmYXVsdExheW91dCxcbiAgICAgICAgICAgICAgICAvLyBBZGQgZW1wdHkgY29sdW1ucyBzbyB0aGUgbGlzdCBpcyBub3QgZW1wdHkgaW5pdGlhbGx5XG4gICAgICAgICAgICAgICAgY29sdW1uczogY3JlYXRlRW1wdHlDb2x1bW5zKGRlZmF1bHRMYXlvdXQuY29sdW1ucyksXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICByZXR1cm4gc3RhdGU7XG4gICAgICAgIH0sXG5cbiAgICAgICAgaW5wdXQyU3RhdGU6IChpbnB1dCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbGF5b3V0ID0gbGF5b3V0cy5maW5kKChsYXlvdXQpID0+IGxheW91dC5uYW1lID09PSBpbnB1dC5sYXlvdXQpO1xuXG4gICAgICAgICAgICBpZiAoIWxheW91dCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBsYXlvdXQgXCIke2lucHV0LmxheW91dH1cIiFgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBsYXlvdXQsXG4gICAgICAgICAgICAgICAgY29sdW1uczogaW5wdXQuY29sdW1ucy5tYXAoKGNvbHVtbikgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBjb2x1bW4ua2V5LFxuICAgICAgICAgICAgICAgICAgICBwcm9wczogY29udGVudEJsb2NrLmlucHV0MlN0YXRlKGNvbHVtbi5wcm9wcyksXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgc2xpZGVJbjogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIHZpc2libGU6IGNvbHVtbi52aXNpYmxlLFxuICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG5cbiAgICAgICAgc3RhdGUyT3V0cHV0OiAob3V0cHV0KSA9PiAoe1xuICAgICAgICAgICAgbGF5b3V0OiBvdXRwdXQubGF5b3V0Lm5hbWUsXG4gICAgICAgICAgICBjb2x1bW5zOiBvdXRwdXQuY29sdW1ucy5tYXAoKGNvbHVtbikgPT4gKHtcbiAgICAgICAgICAgICAgICBrZXk6IGNvbHVtbi5rZXksXG4gICAgICAgICAgICAgICAgdmlzaWJsZTogY29sdW1uLnZpc2libGUsXG4gICAgICAgICAgICAgICAgcHJvcHM6IGNvbnRlbnRCbG9jay5zdGF0ZTJPdXRwdXQoY29sdW1uLnByb3BzKSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgfSksXG5cbiAgICAgICAgb3V0cHV0MlN0YXRlOiBhc3luYyAob3V0cHV0LCBjb250ZXh0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsYXlvdXQgPSBsYXlvdXRzLmZpbmQoKGxheW91dCkgPT4gbGF5b3V0Lm5hbWUgPT09IG91dHB1dC5sYXlvdXQpO1xuXG4gICAgICAgICAgICBpZiAoIWxheW91dCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBsYXlvdXQgXCIke291dHB1dC5sYXlvdXR9XCIhYCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHN0YXRlOiBDb2x1bW5zQmxvY2tTdGF0ZTxUPiA9IHtcbiAgICAgICAgICAgICAgICBsYXlvdXQsXG4gICAgICAgICAgICAgICAgY29sdW1uczogW10sXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNvbHVtbnMgb2Ygb3V0cHV0LmNvbHVtbnMpIHtcbiAgICAgICAgICAgICAgICBzdGF0ZS5jb2x1bW5zLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAuLi5jb2x1bW5zLFxuICAgICAgICAgICAgICAgICAgICBwcm9wczogYXdhaXQgY29udGVudEJsb2NrLm91dHB1dDJTdGF0ZShjb2x1bW5zLnByb3BzLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBzbGlkZUluOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHN0YXRlO1xuICAgICAgICB9LFxuXG4gICAgICAgIGNyZWF0ZVByZXZpZXdTdGF0ZTogKHN0YXRlLCBwcmV2aWV3Q29udGV4dCkgPT4gKHtcbiAgICAgICAgICAgIGFkbWluTWV0YTogeyByb3V0ZTogcHJldmlld0NvbnRleHQucGFyZW50VXJsIH0sXG4gICAgICAgICAgICBsYXlvdXQ6IHN0YXRlLmxheW91dC5uYW1lLFxuICAgICAgICAgICAgY29sdW1uczogc3RhdGUuY29sdW1uc1xuICAgICAgICAgICAgICAgIC5maWx0ZXIoKGMpID0+IChwcmV2aWV3Q29udGV4dC5zaG93VmlzaWJsZU9ubHkgPyBjLnZpc2libGUgOiB0cnVlKSkgLy8gZGVwZW5kaW5nIG9uIGNvbnRleHQgc2hvdyBhbGwgYmxvY2tzIG9yIG9ubHkgdmlzaWJsZSBibG9ja3NcbiAgICAgICAgICAgICAgICAubWFwKChjb2x1bW4pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2tBZG1pblJvdXRlID0gYCR7cHJldmlld0NvbnRleHQucGFyZW50VXJsU3ViUm91dGUgPz8gcHJldmlld0NvbnRleHQucGFyZW50VXJsfS8ke2NvbHVtbi5rZXl9L2VkaXRgO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGNvbHVtbi5rZXksXG4gICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlOiBjb2x1bW4udmlzaWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzOiBjb250ZW50QmxvY2suY3JlYXRlUHJldmlld1N0YXRlKGNvbHVtbi5wcm9wcywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnByZXZpZXdDb250ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudFVybFN1YlJvdXRlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50VXJsOiBibG9ja0FkbWluUm91dGUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkbWluUm91dGU6IGJsb2NrQWRtaW5Sb3V0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkbWluTWV0YTogeyByb3V0ZTogYmxvY2tBZG1pblJvdXRlIH0sXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgIH0pLFxuXG4gICAgICAgIGlzVmFsaWQ6IChzdGF0ZSkgPT4gcGFyYWxsZWxBc3luY0V2ZXJ5KHN0YXRlLmNvbHVtbnMsIChjb2x1bW4pID0+IGNvbnRlbnRCbG9jay5pc1ZhbGlkKGNvbHVtbi5wcm9wcykpLFxuXG4gICAgICAgIGFuY2hvcnM6IChzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHN0YXRlLmNvbHVtbnMucmVkdWNlPHN0cmluZ1tdPigoYW5jaG9ycywgY29sdW1uKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsuLi5hbmNob3JzLCAuLi4oY29udGVudEJsb2NrLmFuY2hvcnM/Lihjb2x1bW4ucHJvcHMpID8/IFtdKV07XG4gICAgICAgICAgICB9LCBbXSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZGVwZW5kZW5jaWVzOiAoc3RhdGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1lcmdlZERlcGVuZGVuY2llcyA9IHN0YXRlLmNvbHVtbnMucmVkdWNlPEJsb2NrRGVwZW5kZW5jeVtdPigoZGVwZW5kZW5jaWVzLCBjb2x1bW4pID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gWy4uLmRlcGVuZGVuY2llcywgLi4uKGNvbnRlbnRCbG9jay5kZXBlbmRlbmNpZXM/Lihjb2x1bW4ucHJvcHMpID8/IFtdKV07XG4gICAgICAgICAgICB9LCBbXSk7XG5cbiAgICAgICAgICAgIHJldHVybiBkZWR1cGxpY2F0ZUJsb2NrRGVwZW5kZW5jaWVzKG1lcmdlZERlcGVuZGVuY2llcyk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgcmVwbGFjZURlcGVuZGVuY2llc0luT3V0cHV0OiAob3V0cHV0LCByZXBsYWNlbWVudHMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5ld091dHB1dDogQ29sdW1uc0Jsb2NrRnJhZ21lbnQ8VD4gPSB7IC4uLm91dHB1dCwgY29sdW1uczogW10gfTtcblxuICAgICAgICAgICAgZm9yIChjb25zdCBjb2x1bW4gb2Ygb3V0cHV0LmNvbHVtbnMpIHtcbiAgICAgICAgICAgICAgICBuZXdPdXRwdXQuY29sdW1ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgLi4uY29sdW1uLFxuICAgICAgICAgICAgICAgICAgICBwcm9wczogY29udGVudEJsb2NrLnJlcGxhY2VEZXBlbmRlbmNpZXNJbk91dHB1dChjb2x1bW4ucHJvcHMsIHJlcGxhY2VtZW50cyksXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBuZXdPdXRwdXQ7XG4gICAgICAgIH0sXG5cbiAgICAgICAgQWRtaW5Db21wb25lbnQ6ICh7IHN0YXRlLCB1cGRhdGVTdGF0ZSB9KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpbnRsID0gdXNlSW50bCgpO1xuICAgICAgICAgICAgY29uc3QgZ3JvdXBMYXlvdXRzQnlDb2x1bW5zQXBpID0gY3JlYXRlR3JvdXBMYXlvdXRzQnlDb2x1bW5zQXBpKGxheW91dHMpO1xuICAgICAgICAgICAgY29uc3QgaGFuZGxlTGlzdEJsb2NrQWRtaW5DaGFuZ2U6IERpc3BhdGNoPFNldFN0YXRlQWN0aW9uPExpc3RCbG9ja1N0YXRlPFQ+Pj4gPSAobGlzdEJsb2NrU2V0U3RhdGVBY3Rpb24pID0+IHtcbiAgICAgICAgICAgICAgICB1cGRhdGVTdGF0ZSgocHJldlN0YXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpc3RCbG9ja1N0YXRlID0gcmVzb2x2ZU5ld1N0YXRlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXZTdGF0ZTogeyBibG9ja3M6IHByZXZTdGF0ZS5jb2x1bW5zIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGF0ZUFjdGlvbjogbGlzdEJsb2NrU2V0U3RhdGVBY3Rpb24sXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4ucHJldlN0YXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uczogbGlzdEJsb2NrU3RhdGUuYmxvY2tzLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgICAgICBjYW5ub3RQYXN0ZUJsb2NrRXJyb3JEaWFsb2csXG4gICAgICAgICAgICAgICAgY3JlYXRlVXBkYXRlU3ViQmxvY2tzRm4sXG4gICAgICAgICAgICAgICAgdXBkYXRlQ2xpcGJvYXJkQ29udGVudCxcbiAgICAgICAgICAgICAgICBhZGROZXdCbG9jayxcbiAgICAgICAgICAgICAgICBjb3B5U2VsZWN0ZWRCbG9ja3MsXG4gICAgICAgICAgICAgICAgZGVsZXRlQWxsU2VsZWN0ZWRCbG9ja3MsXG4gICAgICAgICAgICAgICAgc2VsZWN0QmxvY2ssXG4gICAgICAgICAgICAgICAgaGFuZGxlVG9nZ2xlU2VsZWN0QWxsLFxuICAgICAgICAgICAgICAgIHBhc3RlQmxvY2ssXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRDb3VudCxcbiAgICAgICAgICAgICAgICBkZWxldGVCbG9ja3MsXG4gICAgICAgICAgICAgICAgdG9nZ2xlVmlzaWJsZSxcbiAgICAgICAgICAgIH0gPSB1c2VMaXN0QmxvY2tBZG1pbkNvbXBvbmVudCh7IHN0YXRlOiB7IGJsb2Nrczogc3RhdGUuY29sdW1ucyB9LCB1cGRhdGVTdGF0ZTogaGFuZGxlTGlzdEJsb2NrQWRtaW5DaGFuZ2UgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgPFN0YWNrU3dpdGNoIGluaXRpYWxQYWdlPVwibGlzdFwiIGRpc2FibGVGb3JjZVByb21wdFJvdXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFN0YWNrUGFnZSBuYW1lPVwibGlzdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCbG9ja3NGaW5hbEZvcm08eyBsYXlvdXQ6IENvbHVtbnNCbG9ja0xheW91dDsgY29sdW1uczogbnVtYmVyIH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uU3VibWl0PXsoeyBsYXlvdXQsIGNvbHVtbnMgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlU3RhdGUoKHByZXZTdGF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRMYXlvdXRGb3JTZWxlY3RlZENvbHVtbnMgPSBncm91cExheW91dHNCeUNvbHVtbnNBcGkuZ2V0RGVmYXVsdExheW91dChjb2x1bW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdMYXlvdXQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXlvdXQuY29sdW1ucyAhPT0gY29sdW1ucyAmJiBkZWZhdWx0TGF5b3V0Rm9yU2VsZWN0ZWRDb2x1bW5zID8gZGVmYXVsdExheW91dEZvclNlbGVjdGVkQ29sdW1ucyA6IGxheW91dDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtaXNzaW5nRW1wdHlDb2x1bW5zID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1ucyA+IHByZXZTdGF0ZS5jb2x1bW5zLmxlbmd0aCA/IGNyZWF0ZUVtcHR5Q29sdW1ucyhjb2x1bW5zIC0gcHJldlN0YXRlLmNvbHVtbnMubGVuZ3RoKSA6IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnByZXZTdGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5b3V0OiBuZXdMYXlvdXQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnM6IFsuLi5wcmV2U3RhdGUuY29sdW1ucywgLi4ubWlzc2luZ0VtcHR5Q29sdW1uc10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsVmFsdWVzPXt7IGxheW91dDogc3RhdGUubGF5b3V0LCBjb2x1bW5zOiBzdGF0ZS5sYXlvdXQuY29sdW1ucyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZpZWxkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiY29sdW1uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17PEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MuY29sdW1ucy5jb2x1bW5zXCIgZGVmYXVsdE1lc3NhZ2U9XCJDb2x1bW5zXCIgLz59XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ9e0ZpbmFsRm9ybUNvbHVtbnNTZWxlY3R9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zPXtncm91cExheW91dHNCeUNvbHVtbnNBcGkuY29sdW1uc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RmllbGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJsYXlvdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9ezxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwiY29tZXQuYmxvY2tzLmNvbHVtbnMubGF5b3V0XCIgZGVmYXVsdE1lc3NhZ2U9XCJMYXlvdXRcIiAvPn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudD17RmluYWxGb3JtTGF5b3V0U2VsZWN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5b3V0cz17Z3JvdXBMYXlvdXRzQnlDb2x1bW5zQXBpLmdldExheW91dHMoc3RhdGUubGF5b3V0LmNvbHVtbnMpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CbG9ja3NGaW5hbEZvcm0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrQWRtaW5Db21wb25lbnRTZWN0aW9uIHRpdGxlPXs8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5jb2x1bW5zLml0ZW1zXCIgZGVmYXVsdE1lc3NhZ2U9XCJJdGVtc1wiIC8+fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrQWRtaW5Db21wb25lbnRQYXBlciBkaXNhYmxlUGFkZGluZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTdGFja1N3aXRjaEFwaUNvbnRleHQuQ29uc3VtZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyhzdGFja0FwaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNlbGVjdFByZXZpZXdDb21wb25lbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrTGlzdEhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3N0YXRlLmNvbHVtbnMubGVuZ3RoID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNlbGVjdEFsbEZyb21Db250cm9sTGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXtzZWxlY3RlZENvdW50ID09PSBzdGF0ZS5jb2x1bW5zLmxlbmd0aCAmJiBzZWxlY3RlZENvdW50ID4gMH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV0ZXJtaW5hdGU9e3NlbGVjdGVkQ291bnQgPiAwICYmIHNlbGVjdGVkQ291bnQgIT09IHN0YXRlLmNvbHVtbnMubGVuZ3RofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZVRvZ2dsZVNlbGVjdEFsbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5saXN0LnNlbGVjdEFsbFwiIGRlZmF1bHRNZXNzYWdlPVwiU2VsZWN0IGFsbFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrTGlzdEhlYWRlckFjdGlvbkNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzZWxlY3RlZENvdW50ID4gMCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b24gb25DbGljaz17ZGVsZXRlQWxsU2VsZWN0ZWRCbG9ja3N9IHNpemU9XCJsYXJnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERlbGV0ZSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uIG9uQ2xpY2s9e2NvcHlTZWxlY3RlZEJsb2Nrc30gc2l6ZT1cImxhcmdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q29weSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b24gb25DbGljaz17KCkgPT4gcGFzdGVCbG9jaygwKX0gc2l6ZT1cImxhcmdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBhc3RlIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tMaXN0SGVhZGVyQWN0aW9uQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tMaXN0SGVhZGVyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERpdmlkZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7c3RhdGUuY29sdW1ucy5tYXAoKGNvbHVtbiwgY29sdW1uSW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEhvdmVyUHJldmlld0NvbXBvbmVudCBrZXk9e2NvbHVtbi5rZXl9IGNvbXBvbmVudFNsdWc9e2Ake2NvbHVtbi5rZXl9L2NvbnRlbnRgfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrUm93XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD17Y29sdW1uLmtleX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlclByZXZpZXdDb250ZW50PXsoKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrUHJldmlld0NvbnRlbnQgYmxvY2s9e2NvbnRlbnRCbG9ja30gc3RhdGU9e2NvbHVtbi5wcm9wc30gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleD17Y29sdW1uSW5kZXh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNvbnRlbnRDbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrQXBpLmFjdGl2YXRlUGFnZShcImVkaXRcIiwgY29sdW1uLmtleSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25EZWxldGVDbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZUJsb2NrcyhbY29sdW1uLmtleV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVCbG9jaz17KGZyb20sIHRvKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlU3RhdGUoKHByZXZTdGF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb2x1bW5zID0gWy4uLnByZXZTdGF0ZS5jb2x1bW5zXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29sdW1uVG9Nb3ZlID0gY29sdW1ucy5zcGxpY2UoZnJvbSwgMSlbMF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnMuc3BsaWNlKHRvLCAwLCBjb2x1bW5Ub01vdmUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyAuLi5wcmV2U3RhdGUsIGNvbHVtbnMgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmlsaXR5QnV0dG9uPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvbiBvbkNsaWNrPXsoKSA9PiB0b2dnbGVWaXNpYmxlKGNvbHVtbi5rZXkpfSBzaXplPVwic21hbGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2NvbHVtbi52aXNpYmxlID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFZpc2libGUgY29sb3I9XCJzdWNjZXNzXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbnZpc2libGUgY29sb3I9XCJhY3Rpb25cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQWRkTmV3QmxvY2s9eyhiZWZvcmVJbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGFkZE5ld0Jsb2NrKGJlZm9yZUluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja0FwaS5hY3RpdmF0ZVBhZ2UoXCJlZGl0XCIsIGtleSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Db3B5Q2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVDbGlwYm9hcmRDb250ZW50KFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogY29udGVudEJsb2NrLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlOiBjb2x1bW4udmlzaWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlOiBjb2x1bW4ucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25QYXN0ZUNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzdGVCbG9jayhjb2x1bW5JbmRleCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkPXtjb2x1bW4uc2VsZWN0ZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblNlbGVjdGVkQ2xpY2s9eyhzZWxlY3RlZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdEJsb2NrKGNvbHVtbiwgc2VsZWN0ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzVmFsaWRGbj17KCkgPT4gY29udGVudEJsb2NrLmlzVmFsaWQoY29sdW1uLnByb3BzKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlSW49e2NvbHVtbi5zbGlkZUlufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZUJvdHRvbUluc2VydEJldHdlZW5CdXR0b249e2NvbHVtbkluZGV4ID49IHN0YXRlLmNvbHVtbnMubGVuZ3RoIC0gMX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0hvdmVyUHJldmlld0NvbXBvbmVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzdGF0ZS5jb2x1bW5zLmxlbmd0aCA9PT0gMCA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrQWRtaW5Db21wb25lbnRCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBhZGROZXdCbG9jaygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrQXBpLmFjdGl2YXRlUGFnZShcImVkaXRcIiwga2V5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TGFyZ2VBZGRCdXR0b25Db250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxMYXJnZUFkZEJ1dHRvbkljb24gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VHlwb2dyYXBoeT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MuY29sdW1ucy5hZGRJdGVtXCIgZGVmYXVsdE1lc3NhZ2U9XCJBZGQgaXRlbVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9MYXJnZUFkZEJ1dHRvbkNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QWRtaW5Db21wb25lbnRTdGlja3lGb290ZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGFkZE5ld0Jsb2NrKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrQXBpLmFjdGl2YXRlUGFnZShcImVkaXRcIiwga2V5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRJY29uPXs8QWRkIC8+fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwiY29tZXQuYmxvY2tzLmNvbHVtbnMuYWRkSXRlbVwiIGRlZmF1bHRNZXNzYWdlPVwiQWRkIGl0ZW1cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CbG9ja0FkbWluQ29tcG9uZW50QnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FkbWluQ29tcG9uZW50U3RpY2t5Rm9vdGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1NlbGVjdFByZXZpZXdDb21wb25lbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvU3RhY2tTd2l0Y2hBcGlDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0Jsb2NrQWRtaW5Db21wb25lbnRQYXBlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0Jsb2NrQWRtaW5Db21wb25lbnRTZWN0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9TdGFja1BhZ2U+XG4gICAgICAgICAgICAgICAgICAgICAgICA8U3RhY2tQYWdlIG5hbWU9XCJlZGl0XCIgdGl0bGU9e2ludGwuZm9ybWF0TWVzc2FnZSh7IGlkOiBcImNvbWV0LmJsb2Nrcy5jb2x1bW5zLmVkaXRDb2x1bW5cIiwgZGVmYXVsdE1lc3NhZ2U6IFwiRWRpdCBjb2x1bW5cIiB9KX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyhrZXkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF0Y2hJbmRleCA9IHN0YXRlLmNvbHVtbnMuZmluZEluZGV4KChjb2x1bW4pID0+IGNvbHVtbi5rZXkgPT09IGtleSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoSW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MuY29sdW1ucy51bmtub3duQ29sdW1uXCIgZGVmYXVsdE1lc3NhZ2U9XCJDYW4ndCBmaW5kIGNvbHVtblwiIC8+O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSBzdGF0ZS5jb2x1bW5zW21hdGNoSW5kZXhdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U3RhY2tQYWdlVGl0bGUgdGl0bGU9e2NvbHVtbkNvdW50TGFiZWwoaW50bCwgbWF0Y2hJbmRleCArIDEpfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y29udGVudEJsb2NrLkFkbWluQ29tcG9uZW50IHN0YXRlPXttYXRjaC5wcm9wc30gdXBkYXRlU3RhdGU9e2NyZWF0ZVVwZGF0ZVN1YkJsb2Nrc0ZuKGtleSl9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N0YWNrUGFnZVRpdGxlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1N0YWNrUGFnZT5cbiAgICAgICAgICAgICAgICAgICAgPC9TdGFja1N3aXRjaD5cbiAgICAgICAgICAgICAgICAgICAge2Nhbm5vdFBhc3RlQmxvY2tFcnJvckRpYWxvZ31cbiAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgcHJldmlld0NvbnRlbnQ6IChzdGF0ZSwgY29udGV4dCkgPT4ge1xuICAgICAgICAgICAgaWYgKHN0YXRlLmNvbHVtbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5jb2x1bW5zLm5vQ29sdW1uc1wiIGRlZmF1bHRNZXNzYWdlPVwiTm8gY29sdW1uc1wiIC8+LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBzdGF0ZS5jb2x1bW5zLnJlZHVjZTxQcmV2aWV3Q29udGVudFtdPihcbiAgICAgICAgICAgICAgICAocHJldmlld0NvbnRlbnQsIGN1cnJlbnRDb2x1bW4pID0+IFsuLi5wcmV2aWV3Q29udGVudCwgLi4uY29udGVudEJsb2NrLnByZXZpZXdDb250ZW50KGN1cnJlbnRDb2x1bW4ucHJvcHMsIGNvbnRleHQpXSxcbiAgICAgICAgICAgICAgICBbXSxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgcmVzb2x2ZURlcGVuZGVuY3lQYXRoOiAoc3RhdGUsIGpzb25QYXRoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIS9eY29sdW1ucy5cXGQrLnByb3BzLy50ZXN0KGpzb25QYXRoKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNvbHVtbnNCbG9jazogSW52YWxpZCBqc29uUGF0aFwiKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgcGF0aEFyciA9IGpzb25QYXRoLnNwbGl0KFwiLlwiKTtcbiAgICAgICAgICAgIGNvbnN0IG51bSA9IE51bWJlcihwYXRoQXJyWzFdKTtcbiAgICAgICAgICAgIGNvbnN0IGJsb2NrSXRlbSA9IHN0YXRlLmNvbHVtbnNbbnVtXTtcblxuICAgICAgICAgICAgY29uc3QgY2hpbGRQYXRoID0gY29udGVudEJsb2NrLnJlc29sdmVEZXBlbmRlbmN5UGF0aChibG9ja0l0ZW0ucHJvcHMsIHBhdGhBcnIuc2xpY2UoMykuam9pbihcIi5cIikpO1xuICAgICAgICAgICAgcmV0dXJuIGAke2Jsb2NrSXRlbS5rZXl9L2VkaXQvJHtjaGlsZFBhdGh9YDtcbiAgICAgICAgfSxcblxuICAgICAgICBleHRyYWN0VGV4dENvbnRlbnRzOiAoc3RhdGUsIG9wdGlvbnMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGluY2x1ZGVJbnZpc2libGVDb250ZW50ID0gb3B0aW9ucz8uaW5jbHVkZUludmlzaWJsZUNvbnRlbnQgPz8gZmFsc2U7XG5cbiAgICAgICAgICAgIHJldHVybiBzdGF0ZS5jb2x1bW5zLnJlZHVjZTxzdHJpbmdbXT4oKGNvbnRlbnQsIGNvbHVtbikgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghY29sdW1uLnZpc2libGUgJiYgIWluY2x1ZGVJbnZpc2libGVDb250ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjb250ZW50O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBbLi4uY29udGVudCwgLi4uKGNvbnRlbnRCbG9jay5leHRyYWN0VGV4dENvbnRlbnRzPy4oY29sdW1uLnByb3BzLCBvcHRpb25zKSA/PyBbXSldO1xuICAgICAgICAgICAgfSwgW10pO1xuICAgICAgICB9LFxuICAgIH07XG5cbiAgICBpZiAob3ZlcnJpZGUpIHtcbiAgICAgICAgcmV0dXJuIG92ZXJyaWRlKENvbHVtbnNCbG9jayk7XG4gICAgfVxuXG4gICAgcmV0dXJuIENvbHVtbnNCbG9jaztcbn1cblxuY29uc3QgQmxvY2tMaXN0SGVhZGVyID0gc3R5bGVkKFwiZGl2XCIpYFxuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5gO1xuXG5jb25zdCBCbG9ja0xpc3RIZWFkZXJBY3Rpb25Db250YWluZXIgPSBzdHlsZWQoXCJkaXZcIilgXG4gICAgcGFkZGluZzogMTJweCAwO1xuYDtcblxuY29uc3QgU2VsZWN0QWxsRnJvbUNvbnRyb2xMYWJlbCA9IHN0eWxlZChGb3JtQ29udHJvbExhYmVsKWBcbiAgICBwYWRkaW5nOiAxNXB4IDEwcHggMTVweCA3cHg7XG5gO1xuXG5jb25zdCBMYXJnZUFkZEJ1dHRvbkNvbnRlbnQgPSBzdHlsZWQoXCJzcGFuXCIpYFxuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHBhZGRpbmc6IDRweCAwO1xuYDtcblxuY29uc3QgTGFyZ2VBZGRCdXR0b25JY29uID0gc3R5bGVkKEFkZClgXG4gICAgZm9udC1zaXplOiAyNHB4O1xuICAgIG1hcmdpbi1ib3R0b206IDhweDtcbmA7XG5cbnR5cGUgR3JvdXBlZExheW91dHNCeUNvbHVtbnNBcGkgPSB7XG4gICAgY29sdW1uczogbnVtYmVyW107XG4gICAgZ2V0TGF5b3V0czogKGNvbHVtbnM6IG51bWJlcikgPT4gQ29sdW1uc0Jsb2NrTGF5b3V0W107XG4gICAgZ2V0RGVmYXVsdExheW91dDogKGNvbHVtbnM6IG51bWJlcikgPT4gQ29sdW1uc0Jsb2NrTGF5b3V0IHwgdW5kZWZpbmVkO1xufTtcblxuZnVuY3Rpb24gY29sdW1uQ291bnRMYWJlbChpbnRsOiBJbnRsU2hhcGUsIGNvdW50OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiBpbnRsLmZvcm1hdE1lc3NhZ2UoXG4gICAgICAgIHtcbiAgICAgICAgICAgIGlkOiBcImNvbWV0LmJsb2Nrcy5jb2x1bW5zLmNvbHVtblRpdGxlXCIsXG4gICAgICAgICAgICBkZWZhdWx0TWVzc2FnZTogXCJDb2x1bW4ge251bWJlcn1cIixcbiAgICAgICAgfSxcbiAgICAgICAgeyBudW1iZXI6IGNvdW50IH0sXG4gICAgKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlR3JvdXBMYXlvdXRzQnlDb2x1bW5zQXBpKGxheW91dHM6IENvbHVtbnNCbG9ja0xheW91dFtdKTogR3JvdXBlZExheW91dHNCeUNvbHVtbnNBcGkge1xuICAgIGNvbnN0IGdyb3VwZWRMYXlvdXRzID0gbGF5b3V0cy5yZWR1Y2UoKGFjYywgYykgPT4ge1xuICAgICAgICBhY2Muc2V0KGMuY29sdW1ucywgWy4uLihhY2MuZ2V0KGMuY29sdW1ucykgfHwgW10pLCBjXSk7XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgfSwgbmV3IE1hcDxudW1iZXIsIENvbHVtbnNCbG9ja0xheW91dFtdPigpKTtcblxuICAgIHJldHVybiB7XG4gICAgICAgIGNvbHVtbnM6IEFycmF5LmZyb20oZ3JvdXBlZExheW91dHMua2V5cygpKSxcbiAgICAgICAgZ2V0TGF5b3V0czogKGNvbHVtbnM6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGdyb3VwZWRMYXlvdXRzLmdldChjb2x1bW5zKSB8fCBbXTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0RGVmYXVsdExheW91dDogKGNvbHVtbnM6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgY29uc3QgbGF5b3V0cyA9IGdyb3VwZWRMYXlvdXRzLmdldChjb2x1bW5zKSB8fCBbXTtcbiAgICAgICAgICAgIHJldHVybiBsYXlvdXRzLmxlbmd0aCA/IGxheW91dHNbMF0gOiB1bmRlZmluZWQ7XG4gICAgICAgIH0sXG4gICAgfTtcbn1cbiJdfQ== */",
564
558
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__
565
559
  });
566
- var SelectAllFromControlLabel = /*#__PURE__*/(0, _styles.styled)(_material.FormControlLabel, process.env.NODE_ENV === "production" ? {
560
+ var SelectAllFromControlLabel = /*#__PURE__*/styled(FormControlLabel, process.env.NODE_ENV === "production" ? {
567
561
  target: "eh7qu9y2"
568
562
  } : {
569
563
  target: "eh7qu9y2",
@@ -576,7 +570,7 @@ var SelectAllFromControlLabel = /*#__PURE__*/(0, _styles.styled)(_material.FormC
576
570
  styles: "padding:15px 10px 15px 7px/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ibG9ja3MvZmFjdG9yaWVzL2NyZWF0ZUNvbHVtbnNCbG9jay50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBeWYwRCIsImZpbGUiOiIuLi8uLi8uLi9zcmMvYmxvY2tzL2ZhY3Rvcmllcy9jcmVhdGVDb2x1bW5zQmxvY2sudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmllbGQsIFN0YWNrUGFnZSwgU3RhY2tQYWdlVGl0bGUsIFN0YWNrU3dpdGNoLCBTdGFja1N3aXRjaEFwaUNvbnRleHQgfSBmcm9tIFwiQGNvbWV0L2FkbWluXCI7XG5pbXBvcnQgeyBBZGQsIENvcHksIERlbGV0ZSwgSW52aXNpYmxlLCBQYXN0ZSwgVmlzaWJsZSB9IGZyb20gXCJAY29tZXQvYWRtaW4taWNvbnNcIjtcbmltcG9ydCB7IENoZWNrYm94LCBEaXZpZGVyLCBGb3JtQ29udHJvbExhYmVsLCBJY29uQnV0dG9uLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHN0eWxlZCB9IGZyb20gXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiO1xuaW1wb3J0IHsgdHlwZSBEaXNwYXRjaCwgdHlwZSBSZWFjdE5vZGUsIHR5cGUgU2V0U3RhdGVBY3Rpb24gfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IEZvcm1hdHRlZE1lc3NhZ2UsIHR5cGUgSW50bFNoYXBlLCB0eXBlIE1lc3NhZ2VEZXNjcmlwdG9yLCB1c2VJbnRsIH0gZnJvbSBcInJlYWN0LWludGxcIjtcbmltcG9ydCB7IHY0IGFzIHV1aWQgfSBmcm9tIFwidXVpZFwiO1xuXG5pbXBvcnQgeyBBZG1pbkNvbXBvbmVudFN0aWNreUZvb3RlciB9IGZyb20gXCIuLi9jb21tb24vQWRtaW5Db21wb25lbnRTdGlja3lGb290ZXJcIjtcbmltcG9ydCB7IEJsb2NrQWRtaW5Db21wb25lbnRCdXR0b24gfSBmcm9tIFwiLi4vY29tbW9uL0Jsb2NrQWRtaW5Db21wb25lbnRCdXR0b25cIjtcbmltcG9ydCB7IEJsb2NrQWRtaW5Db21wb25lbnRQYXBlciB9IGZyb20gXCIuLi9jb21tb24vQmxvY2tBZG1pbkNvbXBvbmVudFBhcGVyXCI7XG5pbXBvcnQgeyBCbG9ja0FkbWluQ29tcG9uZW50U2VjdGlvbiB9IGZyb20gXCIuLi9jb21tb24vQmxvY2tBZG1pbkNvbXBvbmVudFNlY3Rpb25cIjtcbmltcG9ydCB7IEJsb2NrUHJldmlld0NvbnRlbnQgfSBmcm9tIFwiLi4vY29tbW9uL2Jsb2NrUm93L0Jsb2NrUHJldmlld0NvbnRlbnRcIjtcbmltcG9ydCB7IEJsb2NrUm93IH0gZnJvbSBcIi4uL2NvbW1vbi9ibG9ja1Jvdy9CbG9ja1Jvd1wiO1xuaW1wb3J0IHsgQmxvY2tzRmluYWxGb3JtIH0gZnJvbSBcIi4uL2Zvcm0vQmxvY2tzRmluYWxGb3JtXCI7XG5pbXBvcnQgeyBjcmVhdGVCbG9ja1NrZWxldG9uIH0gZnJvbSBcIi4uL2hlbHBlcnMvY3JlYXRlQmxvY2tTa2VsZXRvblwiO1xuaW1wb3J0IHsgZGVkdXBsaWNhdGVCbG9ja0RlcGVuZGVuY2llcyB9IGZyb20gXCIuLi9oZWxwZXJzL2RlZHVwbGljYXRlQmxvY2tEZXBlbmRlbmNpZXNcIjtcbmltcG9ydCB7IEhvdmVyUHJldmlld0NvbXBvbmVudCB9IGZyb20gXCIuLi9pZnJhbWVicmlkZ2UvSG92ZXJQcmV2aWV3Q29tcG9uZW50XCI7XG5pbXBvcnQgeyBTZWxlY3RQcmV2aWV3Q29tcG9uZW50IH0gZnJvbSBcIi4uL2lmcmFtZWJyaWRnZS9TZWxlY3RQcmV2aWV3Q29tcG9uZW50XCI7XG5pbXBvcnQge1xuICAgIEJsb2NrQ2F0ZWdvcnksXG4gICAgdHlwZSBCbG9ja0RlcGVuZGVuY3ksXG4gICAgdHlwZSBCbG9ja0lucHV0QXBpLFxuICAgIHR5cGUgQmxvY2tJbnRlcmZhY2UsXG4gICAgdHlwZSBDdXN0b21CbG9ja0NhdGVnb3J5LFxuICAgIHR5cGUgUHJldmlld0NvbnRlbnQsXG59IGZyb20gXCIuLi90eXBlc1wiO1xuaW1wb3J0IHsgcmVzb2x2ZU5ld1N0YXRlIH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5pbXBvcnQgeyBwYXJhbGxlbEFzeW5jRXZlcnkgfSBmcm9tIFwiLi4vdXRpbHMvcGFyYWxsZWxBc3luY0V2ZXJ5XCI7XG5pbXBvcnQgeyBGaW5hbEZvcm1Db2x1bW5zU2VsZWN0IH0gZnJvbSBcIi4vY29sdW1uc0Jsb2NrL0ZpbmFsRm9ybUNvbHVtbnNTZWxlY3RcIjtcbmltcG9ydCB7IEZpbmFsRm9ybUxheW91dFNlbGVjdCB9IGZyb20gXCIuL2NvbHVtbnNCbG9jay9GaW5hbEZvcm1MYXlvdXRTZWxlY3RcIjtcbmltcG9ydCB7IHR5cGUgTGlzdEJsb2NrSXRlbSwgdHlwZSBMaXN0QmxvY2tTdGF0ZSB9IGZyb20gXCIuL2NyZWF0ZUxpc3RCbG9ja1wiO1xuaW1wb3J0IHsgY3JlYXRlVXNlQWRtaW5Db21wb25lbnQgYXMgY3JlYXRlVXNlTGlzdEJsb2NrQWRtaW5Db21wb25lbnQgfSBmcm9tIFwiLi9saXN0QmxvY2svY3JlYXRlVXNlQWRtaW5Db21wb25lbnRcIjtcblxuZXhwb3J0IGludGVyZmFjZSBDb2x1bW5zQmxvY2tMYXlvdXQge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBjb2x1bW5zOiBudW1iZXI7XG4gICAgbGFiZWw6IFJlYWN0Tm9kZTtcbiAgICBwcmV2aWV3OiBSZWFjdE5vZGU7XG4gICAgc2VjdGlvbj86XG4gICAgICAgIHwgc3RyaW5nXG4gICAgICAgIHwge1xuICAgICAgICAgICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICAgICAgICAgIGxhYmVsPzogUmVhY3ROb2RlO1xuICAgICAgICAgIH07XG59XG5cbmludGVyZmFjZSBDb2x1bW5zQmxvY2tGcmFnbWVudDxUIGV4dGVuZHMgQmxvY2tJbnRlcmZhY2U+IHtcbiAgICBsYXlvdXQ6IHN0cmluZztcbiAgICBjb2x1bW5zOiBBcnJheTx7XG4gICAgICAgIGtleTogc3RyaW5nO1xuICAgICAgICB2aXNpYmxlOiBib29sZWFuO1xuICAgICAgICBwcm9wczogQmxvY2tJbnB1dEFwaTxUPjtcbiAgICB9Pjtcbn1cblxuaW50ZXJmYWNlIENvbHVtbnNCbG9ja1N0YXRlPFQgZXh0ZW5kcyBCbG9ja0ludGVyZmFjZT4ge1xuICAgIGxheW91dDogQ29sdW1uc0Jsb2NrTGF5b3V0O1xuICAgIGNvbHVtbnM6IExpc3RCbG9ja0l0ZW08VD5bXTtcbn1cblxuaW50ZXJmYWNlIENyZWF0ZUNvbHVtbnNCbG9ja09wdGlvbnM8VCBleHRlbmRzIEJsb2NrSW50ZXJmYWNlPiB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGRpc3BsYXlOYW1lOiBSZWFjdE5vZGU7XG4gICAgY2F0ZWdvcnk/OiBCbG9ja0NhdGVnb3J5IHwgQ3VzdG9tQmxvY2tDYXRlZ29yeTtcbiAgICBjb250ZW50QmxvY2s6IFQ7XG4gICAgbGF5b3V0czogQ29sdW1uc0Jsb2NrTGF5b3V0W107XG4gICAgdGFncz86IEFycmF5PE1lc3NhZ2VEZXNjcmlwdG9yIHwgc3RyaW5nPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvbHVtbnNCbG9jazxUIGV4dGVuZHMgQmxvY2tJbnRlcmZhY2U+KFxuICAgIHsgbmFtZSwgZGlzcGxheU5hbWUsIGNhdGVnb3J5ID0gQmxvY2tDYXRlZ29yeS5MYXlvdXQsIGNvbnRlbnRCbG9jaywgbGF5b3V0cywgdGFncyB9OiBDcmVhdGVDb2x1bW5zQmxvY2tPcHRpb25zPFQ+LFxuICAgIG92ZXJyaWRlPzogKFxuICAgICAgICBibG9jazogQmxvY2tJbnRlcmZhY2U8Q29sdW1uc0Jsb2NrRnJhZ21lbnQ8VD4sIENvbHVtbnNCbG9ja1N0YXRlPFQ+LCBDb2x1bW5zQmxvY2tGcmFnbWVudDxUPj4sXG4gICAgKSA9PiBCbG9ja0ludGVyZmFjZTxDb2x1bW5zQmxvY2tGcmFnbWVudDxUPiwgQ29sdW1uc0Jsb2NrU3RhdGU8VD4sIENvbHVtbnNCbG9ja0ZyYWdtZW50PFQ+Pixcbik6IEJsb2NrSW50ZXJmYWNlPENvbHVtbnNCbG9ja0ZyYWdtZW50PFQ+LCBDb2x1bW5zQmxvY2tTdGF0ZTxUPiwgQ29sdW1uc0Jsb2NrRnJhZ21lbnQ8VD4+IHtcbiAgICBpZiAobGF5b3V0cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBOdW1iZXIgb2YgbGF5b3V0cyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwIWApO1xuICAgIH1cblxuICAgIGNvbnN0IHVzZUxpc3RCbG9ja0FkbWluQ29tcG9uZW50ID0gY3JlYXRlVXNlTGlzdEJsb2NrQWRtaW5Db21wb25lbnQoeyBibG9jazogY29udGVudEJsb2NrIH0pO1xuXG4gICAgZnVuY3Rpb24gY3JlYXRlRW1wdHlDb2x1bW5zKG51bWJlcjogbnVtYmVyKTogTGlzdEJsb2NrSXRlbTxUPltdIHtcbiAgICAgICAgcmV0dXJuIG5ldyBBcnJheShudW1iZXIpLmZpbGwodW5kZWZpbmVkKS5tYXAoKCkgPT4gKHtcbiAgICAgICAgICAgIGtleTogdXVpZCgpLFxuICAgICAgICAgICAgcHJvcHM6IGNvbnRlbnRCbG9jay5kZWZhdWx0VmFsdWVzKCksXG4gICAgICAgICAgICBzZWxlY3RlZDogZmFsc2UsXG4gICAgICAgICAgICBzbGlkZUluOiBmYWxzZSxcbiAgICAgICAgICAgIHZpc2libGU6IHRydWUsXG4gICAgICAgIH0pKTtcbiAgICB9XG4gICAgY29uc3QgQ29sdW1uc0Jsb2NrOiBCbG9ja0ludGVyZmFjZTxDb2x1bW5zQmxvY2tGcmFnbWVudDxUPiwgQ29sdW1uc0Jsb2NrU3RhdGU8VD4sIENvbHVtbnNCbG9ja0ZyYWdtZW50PFQ+PiA9IHtcbiAgICAgICAgLi4uY3JlYXRlQmxvY2tTa2VsZXRvbigpLFxuXG4gICAgICAgIG5hbWUsXG5cbiAgICAgICAgZGlzcGxheU5hbWUsXG5cbiAgICAgICAgdGFnczogdGFncyA/IHRhZ3MgOiBjb250ZW50QmxvY2sudGFncyxcblxuICAgICAgICBjYXRlZ29yeSxcblxuICAgICAgICBkZWZhdWx0VmFsdWVzOiAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkZWZhdWx0TGF5b3V0ID0gbGF5b3V0c1swXTtcblxuICAgICAgICAgICAgY29uc3Qgc3RhdGU6IENvbHVtbnNCbG9ja1N0YXRlPFQ+ID0ge1xuICAgICAgICAgICAgICAgIGxheW91dDogZGVmYXVsdExheW91dCxcbiAgICAgICAgICAgICAgICAvLyBBZGQgZW1wdHkgY29sdW1ucyBzbyB0aGUgbGlzdCBpcyBub3QgZW1wdHkgaW5pdGlhbGx5XG4gICAgICAgICAgICAgICAgY29sdW1uczogY3JlYXRlRW1wdHlDb2x1bW5zKGRlZmF1bHRMYXlvdXQuY29sdW1ucyksXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICByZXR1cm4gc3RhdGU7XG4gICAgICAgIH0sXG5cbiAgICAgICAgaW5wdXQyU3RhdGU6IChpbnB1dCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbGF5b3V0ID0gbGF5b3V0cy5maW5kKChsYXlvdXQpID0+IGxheW91dC5uYW1lID09PSBpbnB1dC5sYXlvdXQpO1xuXG4gICAgICAgICAgICBpZiAoIWxheW91dCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBsYXlvdXQgXCIke2lucHV0LmxheW91dH1cIiFgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBsYXlvdXQsXG4gICAgICAgICAgICAgICAgY29sdW1uczogaW5wdXQuY29sdW1ucy5tYXAoKGNvbHVtbikgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBjb2x1bW4ua2V5LFxuICAgICAgICAgICAgICAgICAgICBwcm9wczogY29udGVudEJsb2NrLmlucHV0MlN0YXRlKGNvbHVtbi5wcm9wcyksXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgc2xpZGVJbjogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIHZpc2libGU6IGNvbHVtbi52aXNpYmxlLFxuICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG5cbiAgICAgICAgc3RhdGUyT3V0cHV0OiAob3V0cHV0KSA9PiAoe1xuICAgICAgICAgICAgbGF5b3V0OiBvdXRwdXQubGF5b3V0Lm5hbWUsXG4gICAgICAgICAgICBjb2x1bW5zOiBvdXRwdXQuY29sdW1ucy5tYXAoKGNvbHVtbikgPT4gKHtcbiAgICAgICAgICAgICAgICBrZXk6IGNvbHVtbi5rZXksXG4gICAgICAgICAgICAgICAgdmlzaWJsZTogY29sdW1uLnZpc2libGUsXG4gICAgICAgICAgICAgICAgcHJvcHM6IGNvbnRlbnRCbG9jay5zdGF0ZTJPdXRwdXQoY29sdW1uLnByb3BzKSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgfSksXG5cbiAgICAgICAgb3V0cHV0MlN0YXRlOiBhc3luYyAob3V0cHV0LCBjb250ZXh0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsYXlvdXQgPSBsYXlvdXRzLmZpbmQoKGxheW91dCkgPT4gbGF5b3V0Lm5hbWUgPT09IG91dHB1dC5sYXlvdXQpO1xuXG4gICAgICAgICAgICBpZiAoIWxheW91dCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBsYXlvdXQgXCIke291dHB1dC5sYXlvdXR9XCIhYCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHN0YXRlOiBDb2x1bW5zQmxvY2tTdGF0ZTxUPiA9IHtcbiAgICAgICAgICAgICAgICBsYXlvdXQsXG4gICAgICAgICAgICAgICAgY29sdW1uczogW10sXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNvbHVtbnMgb2Ygb3V0cHV0LmNvbHVtbnMpIHtcbiAgICAgICAgICAgICAgICBzdGF0ZS5jb2x1bW5zLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAuLi5jb2x1bW5zLFxuICAgICAgICAgICAgICAgICAgICBwcm9wczogYXdhaXQgY29udGVudEJsb2NrLm91dHB1dDJTdGF0ZShjb2x1bW5zLnByb3BzLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBzbGlkZUluOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHN0YXRlO1xuICAgICAgICB9LFxuXG4gICAgICAgIGNyZWF0ZVByZXZpZXdTdGF0ZTogKHN0YXRlLCBwcmV2aWV3Q29udGV4dCkgPT4gKHtcbiAgICAgICAgICAgIGFkbWluTWV0YTogeyByb3V0ZTogcHJldmlld0NvbnRleHQucGFyZW50VXJsIH0sXG4gICAgICAgICAgICBsYXlvdXQ6IHN0YXRlLmxheW91dC5uYW1lLFxuICAgICAgICAgICAgY29sdW1uczogc3RhdGUuY29sdW1uc1xuICAgICAgICAgICAgICAgIC5maWx0ZXIoKGMpID0+IChwcmV2aWV3Q29udGV4dC5zaG93VmlzaWJsZU9ubHkgPyBjLnZpc2libGUgOiB0cnVlKSkgLy8gZGVwZW5kaW5nIG9uIGNvbnRleHQgc2hvdyBhbGwgYmxvY2tzIG9yIG9ubHkgdmlzaWJsZSBibG9ja3NcbiAgICAgICAgICAgICAgICAubWFwKChjb2x1bW4pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2tBZG1pblJvdXRlID0gYCR7cHJldmlld0NvbnRleHQucGFyZW50VXJsU3ViUm91dGUgPz8gcHJldmlld0NvbnRleHQucGFyZW50VXJsfS8ke2NvbHVtbi5rZXl9L2VkaXRgO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGNvbHVtbi5rZXksXG4gICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlOiBjb2x1bW4udmlzaWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzOiBjb250ZW50QmxvY2suY3JlYXRlUHJldmlld1N0YXRlKGNvbHVtbi5wcm9wcywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnByZXZpZXdDb250ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudFVybFN1YlJvdXRlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50VXJsOiBibG9ja0FkbWluUm91dGUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkbWluUm91dGU6IGJsb2NrQWRtaW5Sb3V0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkbWluTWV0YTogeyByb3V0ZTogYmxvY2tBZG1pblJvdXRlIH0sXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgIH0pLFxuXG4gICAgICAgIGlzVmFsaWQ6IChzdGF0ZSkgPT4gcGFyYWxsZWxBc3luY0V2ZXJ5KHN0YXRlLmNvbHVtbnMsIChjb2x1bW4pID0+IGNvbnRlbnRCbG9jay5pc1ZhbGlkKGNvbHVtbi5wcm9wcykpLFxuXG4gICAgICAgIGFuY2hvcnM6IChzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHN0YXRlLmNvbHVtbnMucmVkdWNlPHN0cmluZ1tdPigoYW5jaG9ycywgY29sdW1uKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsuLi5hbmNob3JzLCAuLi4oY29udGVudEJsb2NrLmFuY2hvcnM/Lihjb2x1bW4ucHJvcHMpID8/IFtdKV07XG4gICAgICAgICAgICB9LCBbXSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZGVwZW5kZW5jaWVzOiAoc3RhdGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1lcmdlZERlcGVuZGVuY2llcyA9IHN0YXRlLmNvbHVtbnMucmVkdWNlPEJsb2NrRGVwZW5kZW5jeVtdPigoZGVwZW5kZW5jaWVzLCBjb2x1bW4pID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gWy4uLmRlcGVuZGVuY2llcywgLi4uKGNvbnRlbnRCbG9jay5kZXBlbmRlbmNpZXM/Lihjb2x1bW4ucHJvcHMpID8/IFtdKV07XG4gICAgICAgICAgICB9LCBbXSk7XG5cbiAgICAgICAgICAgIHJldHVybiBkZWR1cGxpY2F0ZUJsb2NrRGVwZW5kZW5jaWVzKG1lcmdlZERlcGVuZGVuY2llcyk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgcmVwbGFjZURlcGVuZGVuY2llc0luT3V0cHV0OiAob3V0cHV0LCByZXBsYWNlbWVudHMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5ld091dHB1dDogQ29sdW1uc0Jsb2NrRnJhZ21lbnQ8VD4gPSB7IC4uLm91dHB1dCwgY29sdW1uczogW10gfTtcblxuICAgICAgICAgICAgZm9yIChjb25zdCBjb2x1bW4gb2Ygb3V0cHV0LmNvbHVtbnMpIHtcbiAgICAgICAgICAgICAgICBuZXdPdXRwdXQuY29sdW1ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgLi4uY29sdW1uLFxuICAgICAgICAgICAgICAgICAgICBwcm9wczogY29udGVudEJsb2NrLnJlcGxhY2VEZXBlbmRlbmNpZXNJbk91dHB1dChjb2x1bW4ucHJvcHMsIHJlcGxhY2VtZW50cyksXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBuZXdPdXRwdXQ7XG4gICAgICAgIH0sXG5cbiAgICAgICAgQWRtaW5Db21wb25lbnQ6ICh7IHN0YXRlLCB1cGRhdGVTdGF0ZSB9KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpbnRsID0gdXNlSW50bCgpO1xuICAgICAgICAgICAgY29uc3QgZ3JvdXBMYXlvdXRzQnlDb2x1bW5zQXBpID0gY3JlYXRlR3JvdXBMYXlvdXRzQnlDb2x1bW5zQXBpKGxheW91dHMpO1xuICAgICAgICAgICAgY29uc3QgaGFuZGxlTGlzdEJsb2NrQWRtaW5DaGFuZ2U6IERpc3BhdGNoPFNldFN0YXRlQWN0aW9uPExpc3RCbG9ja1N0YXRlPFQ+Pj4gPSAobGlzdEJsb2NrU2V0U3RhdGVBY3Rpb24pID0+IHtcbiAgICAgICAgICAgICAgICB1cGRhdGVTdGF0ZSgocHJldlN0YXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpc3RCbG9ja1N0YXRlID0gcmVzb2x2ZU5ld1N0YXRlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXZTdGF0ZTogeyBibG9ja3M6IHByZXZTdGF0ZS5jb2x1bW5zIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGF0ZUFjdGlvbjogbGlzdEJsb2NrU2V0U3RhdGVBY3Rpb24sXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4ucHJldlN0YXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uczogbGlzdEJsb2NrU3RhdGUuYmxvY2tzLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgICAgICBjYW5ub3RQYXN0ZUJsb2NrRXJyb3JEaWFsb2csXG4gICAgICAgICAgICAgICAgY3JlYXRlVXBkYXRlU3ViQmxvY2tzRm4sXG4gICAgICAgICAgICAgICAgdXBkYXRlQ2xpcGJvYXJkQ29udGVudCxcbiAgICAgICAgICAgICAgICBhZGROZXdCbG9jayxcbiAgICAgICAgICAgICAgICBjb3B5U2VsZWN0ZWRCbG9ja3MsXG4gICAgICAgICAgICAgICAgZGVsZXRlQWxsU2VsZWN0ZWRCbG9ja3MsXG4gICAgICAgICAgICAgICAgc2VsZWN0QmxvY2ssXG4gICAgICAgICAgICAgICAgaGFuZGxlVG9nZ2xlU2VsZWN0QWxsLFxuICAgICAgICAgICAgICAgIHBhc3RlQmxvY2ssXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRDb3VudCxcbiAgICAgICAgICAgICAgICBkZWxldGVCbG9ja3MsXG4gICAgICAgICAgICAgICAgdG9nZ2xlVmlzaWJsZSxcbiAgICAgICAgICAgIH0gPSB1c2VMaXN0QmxvY2tBZG1pbkNvbXBvbmVudCh7IHN0YXRlOiB7IGJsb2Nrczogc3RhdGUuY29sdW1ucyB9LCB1cGRhdGVTdGF0ZTogaGFuZGxlTGlzdEJsb2NrQWRtaW5DaGFuZ2UgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgPFN0YWNrU3dpdGNoIGluaXRpYWxQYWdlPVwibGlzdFwiIGRpc2FibGVGb3JjZVByb21wdFJvdXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFN0YWNrUGFnZSBuYW1lPVwibGlzdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCbG9ja3NGaW5hbEZvcm08eyBsYXlvdXQ6IENvbHVtbnNCbG9ja0xheW91dDsgY29sdW1uczogbnVtYmVyIH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uU3VibWl0PXsoeyBsYXlvdXQsIGNvbHVtbnMgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlU3RhdGUoKHByZXZTdGF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRMYXlvdXRGb3JTZWxlY3RlZENvbHVtbnMgPSBncm91cExheW91dHNCeUNvbHVtbnNBcGkuZ2V0RGVmYXVsdExheW91dChjb2x1bW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdMYXlvdXQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXlvdXQuY29sdW1ucyAhPT0gY29sdW1ucyAmJiBkZWZhdWx0TGF5b3V0Rm9yU2VsZWN0ZWRDb2x1bW5zID8gZGVmYXVsdExheW91dEZvclNlbGVjdGVkQ29sdW1ucyA6IGxheW91dDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtaXNzaW5nRW1wdHlDb2x1bW5zID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1ucyA+IHByZXZTdGF0ZS5jb2x1bW5zLmxlbmd0aCA/IGNyZWF0ZUVtcHR5Q29sdW1ucyhjb2x1bW5zIC0gcHJldlN0YXRlLmNvbHVtbnMubGVuZ3RoKSA6IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnByZXZTdGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5b3V0OiBuZXdMYXlvdXQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnM6IFsuLi5wcmV2U3RhdGUuY29sdW1ucywgLi4ubWlzc2luZ0VtcHR5Q29sdW1uc10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsVmFsdWVzPXt7IGxheW91dDogc3RhdGUubGF5b3V0LCBjb2x1bW5zOiBzdGF0ZS5sYXlvdXQuY29sdW1ucyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZpZWxkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiY29sdW1uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17PEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MuY29sdW1ucy5jb2x1bW5zXCIgZGVmYXVsdE1lc3NhZ2U9XCJDb2x1bW5zXCIgLz59XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ9e0ZpbmFsRm9ybUNvbHVtbnNTZWxlY3R9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zPXtncm91cExheW91dHNCeUNvbHVtbnNBcGkuY29sdW1uc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RmllbGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJsYXlvdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9ezxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwiY29tZXQuYmxvY2tzLmNvbHVtbnMubGF5b3V0XCIgZGVmYXVsdE1lc3NhZ2U9XCJMYXlvdXRcIiAvPn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudD17RmluYWxGb3JtTGF5b3V0U2VsZWN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5b3V0cz17Z3JvdXBMYXlvdXRzQnlDb2x1bW5zQXBpLmdldExheW91dHMoc3RhdGUubGF5b3V0LmNvbHVtbnMpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CbG9ja3NGaW5hbEZvcm0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrQWRtaW5Db21wb25lbnRTZWN0aW9uIHRpdGxlPXs8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5jb2x1bW5zLml0ZW1zXCIgZGVmYXVsdE1lc3NhZ2U9XCJJdGVtc1wiIC8+fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrQWRtaW5Db21wb25lbnRQYXBlciBkaXNhYmxlUGFkZGluZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTdGFja1N3aXRjaEFwaUNvbnRleHQuQ29uc3VtZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyhzdGFja0FwaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNlbGVjdFByZXZpZXdDb21wb25lbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrTGlzdEhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3N0YXRlLmNvbHVtbnMubGVuZ3RoID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNlbGVjdEFsbEZyb21Db250cm9sTGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXtzZWxlY3RlZENvdW50ID09PSBzdGF0ZS5jb2x1bW5zLmxlbmd0aCAmJiBzZWxlY3RlZENvdW50ID4gMH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV0ZXJtaW5hdGU9e3NlbGVjdGVkQ291bnQgPiAwICYmIHNlbGVjdGVkQ291bnQgIT09IHN0YXRlLmNvbHVtbnMubGVuZ3RofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZVRvZ2dsZVNlbGVjdEFsbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5saXN0LnNlbGVjdEFsbFwiIGRlZmF1bHRNZXNzYWdlPVwiU2VsZWN0IGFsbFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrTGlzdEhlYWRlckFjdGlvbkNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzZWxlY3RlZENvdW50ID4gMCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b24gb25DbGljaz17ZGVsZXRlQWxsU2VsZWN0ZWRCbG9ja3N9IHNpemU9XCJsYXJnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERlbGV0ZSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uIG9uQ2xpY2s9e2NvcHlTZWxlY3RlZEJsb2Nrc30gc2l6ZT1cImxhcmdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q29weSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b24gb25DbGljaz17KCkgPT4gcGFzdGVCbG9jaygwKX0gc2l6ZT1cImxhcmdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBhc3RlIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tMaXN0SGVhZGVyQWN0aW9uQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tMaXN0SGVhZGVyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERpdmlkZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7c3RhdGUuY29sdW1ucy5tYXAoKGNvbHVtbiwgY29sdW1uSW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEhvdmVyUHJldmlld0NvbXBvbmVudCBrZXk9e2NvbHVtbi5rZXl9IGNvbXBvbmVudFNsdWc9e2Ake2NvbHVtbi5rZXl9L2NvbnRlbnRgfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrUm93XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD17Y29sdW1uLmtleX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlclByZXZpZXdDb250ZW50PXsoKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrUHJldmlld0NvbnRlbnQgYmxvY2s9e2NvbnRlbnRCbG9ja30gc3RhdGU9e2NvbHVtbi5wcm9wc30gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleD17Y29sdW1uSW5kZXh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNvbnRlbnRDbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrQXBpLmFjdGl2YXRlUGFnZShcImVkaXRcIiwgY29sdW1uLmtleSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25EZWxldGVDbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZUJsb2NrcyhbY29sdW1uLmtleV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVCbG9jaz17KGZyb20sIHRvKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlU3RhdGUoKHByZXZTdGF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb2x1bW5zID0gWy4uLnByZXZTdGF0ZS5jb2x1bW5zXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29sdW1uVG9Nb3ZlID0gY29sdW1ucy5zcGxpY2UoZnJvbSwgMSlbMF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnMuc3BsaWNlKHRvLCAwLCBjb2x1bW5Ub01vdmUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyAuLi5wcmV2U3RhdGUsIGNvbHVtbnMgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmlsaXR5QnV0dG9uPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvbiBvbkNsaWNrPXsoKSA9PiB0b2dnbGVWaXNpYmxlKGNvbHVtbi5rZXkpfSBzaXplPVwic21hbGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2NvbHVtbi52aXNpYmxlID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFZpc2libGUgY29sb3I9XCJzdWNjZXNzXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbnZpc2libGUgY29sb3I9XCJhY3Rpb25cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQWRkTmV3QmxvY2s9eyhiZWZvcmVJbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGFkZE5ld0Jsb2NrKGJlZm9yZUluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja0FwaS5hY3RpdmF0ZVBhZ2UoXCJlZGl0XCIsIGtleSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Db3B5Q2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVDbGlwYm9hcmRDb250ZW50KFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogY29udGVudEJsb2NrLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlOiBjb2x1bW4udmlzaWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlOiBjb2x1bW4ucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25QYXN0ZUNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzdGVCbG9jayhjb2x1bW5JbmRleCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkPXtjb2x1bW4uc2VsZWN0ZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblNlbGVjdGVkQ2xpY2s9eyhzZWxlY3RlZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdEJsb2NrKGNvbHVtbiwgc2VsZWN0ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzVmFsaWRGbj17KCkgPT4gY29udGVudEJsb2NrLmlzVmFsaWQoY29sdW1uLnByb3BzKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlSW49e2NvbHVtbi5zbGlkZUlufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZUJvdHRvbUluc2VydEJldHdlZW5CdXR0b249e2NvbHVtbkluZGV4ID49IHN0YXRlLmNvbHVtbnMubGVuZ3RoIC0gMX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0hvdmVyUHJldmlld0NvbXBvbmVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzdGF0ZS5jb2x1bW5zLmxlbmd0aCA9PT0gMCA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrQWRtaW5Db21wb25lbnRCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBhZGROZXdCbG9jaygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrQXBpLmFjdGl2YXRlUGFnZShcImVkaXRcIiwga2V5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TGFyZ2VBZGRCdXR0b25Db250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxMYXJnZUFkZEJ1dHRvbkljb24gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VHlwb2dyYXBoeT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MuY29sdW1ucy5hZGRJdGVtXCIgZGVmYXVsdE1lc3NhZ2U9XCJBZGQgaXRlbVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9MYXJnZUFkZEJ1dHRvbkNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QWRtaW5Db21wb25lbnRTdGlja3lGb290ZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGFkZE5ld0Jsb2NrKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrQXBpLmFjdGl2YXRlUGFnZShcImVkaXRcIiwga2V5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRJY29uPXs8QWRkIC8+fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwiY29tZXQuYmxvY2tzLmNvbHVtbnMuYWRkSXRlbVwiIGRlZmF1bHRNZXNzYWdlPVwiQWRkIGl0ZW1cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CbG9ja0FkbWluQ29tcG9uZW50QnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FkbWluQ29tcG9uZW50U3RpY2t5Rm9vdGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1NlbGVjdFByZXZpZXdDb21wb25lbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvU3RhY2tTd2l0Y2hBcGlDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0Jsb2NrQWRtaW5Db21wb25lbnRQYXBlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0Jsb2NrQWRtaW5Db21wb25lbnRTZWN0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9TdGFja1BhZ2U+XG4gICAgICAgICAgICAgICAgICAgICAgICA8U3RhY2tQYWdlIG5hbWU9XCJlZGl0XCIgdGl0bGU9e2ludGwuZm9ybWF0TWVzc2FnZSh7IGlkOiBcImNvbWV0LmJsb2Nrcy5jb2x1bW5zLmVkaXRDb2x1bW5cIiwgZGVmYXVsdE1lc3NhZ2U6IFwiRWRpdCBjb2x1bW5cIiB9KX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyhrZXkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF0Y2hJbmRleCA9IHN0YXRlLmNvbHVtbnMuZmluZEluZGV4KChjb2x1bW4pID0+IGNvbHVtbi5rZXkgPT09IGtleSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoSW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MuY29sdW1ucy51bmtub3duQ29sdW1uXCIgZGVmYXVsdE1lc3NhZ2U9XCJDYW4ndCBmaW5kIGNvbHVtblwiIC8+O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSBzdGF0ZS5jb2x1bW5zW21hdGNoSW5kZXhdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U3RhY2tQYWdlVGl0bGUgdGl0bGU9e2NvbHVtbkNvdW50TGFiZWwoaW50bCwgbWF0Y2hJbmRleCArIDEpfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y29udGVudEJsb2NrLkFkbWluQ29tcG9uZW50IHN0YXRlPXttYXRjaC5wcm9wc30gdXBkYXRlU3RhdGU9e2NyZWF0ZVVwZGF0ZVN1YkJsb2Nrc0ZuKGtleSl9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N0YWNrUGFnZVRpdGxlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1N0YWNrUGFnZT5cbiAgICAgICAgICAgICAgICAgICAgPC9TdGFja1N3aXRjaD5cbiAgICAgICAgICAgICAgICAgICAge2Nhbm5vdFBhc3RlQmxvY2tFcnJvckRpYWxvZ31cbiAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgcHJldmlld0NvbnRlbnQ6IChzdGF0ZSwgY29udGV4dCkgPT4ge1xuICAgICAgICAgICAgaWYgKHN0YXRlLmNvbHVtbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5jb2x1bW5zLm5vQ29sdW1uc1wiIGRlZmF1bHRNZXNzYWdlPVwiTm8gY29sdW1uc1wiIC8+LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBzdGF0ZS5jb2x1bW5zLnJlZHVjZTxQcmV2aWV3Q29udGVudFtdPihcbiAgICAgICAgICAgICAgICAocHJldmlld0NvbnRlbnQsIGN1cnJlbnRDb2x1bW4pID0+IFsuLi5wcmV2aWV3Q29udGVudCwgLi4uY29udGVudEJsb2NrLnByZXZpZXdDb250ZW50KGN1cnJlbnRDb2x1bW4ucHJvcHMsIGNvbnRleHQpXSxcbiAgICAgICAgICAgICAgICBbXSxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgcmVzb2x2ZURlcGVuZGVuY3lQYXRoOiAoc3RhdGUsIGpzb25QYXRoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIS9eY29sdW1ucy5cXGQrLnByb3BzLy50ZXN0KGpzb25QYXRoKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNvbHVtbnNCbG9jazogSW52YWxpZCBqc29uUGF0aFwiKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgcGF0aEFyciA9IGpzb25QYXRoLnNwbGl0KFwiLlwiKTtcbiAgICAgICAgICAgIGNvbnN0IG51bSA9IE51bWJlcihwYXRoQXJyWzFdKTtcbiAgICAgICAgICAgIGNvbnN0IGJsb2NrSXRlbSA9IHN0YXRlLmNvbHVtbnNbbnVtXTtcblxuICAgICAgICAgICAgY29uc3QgY2hpbGRQYXRoID0gY29udGVudEJsb2NrLnJlc29sdmVEZXBlbmRlbmN5UGF0aChibG9ja0l0ZW0ucHJvcHMsIHBhdGhBcnIuc2xpY2UoMykuam9pbihcIi5cIikpO1xuICAgICAgICAgICAgcmV0dXJuIGAke2Jsb2NrSXRlbS5rZXl9L2VkaXQvJHtjaGlsZFBhdGh9YDtcbiAgICAgICAgfSxcblxuICAgICAgICBleHRyYWN0VGV4dENvbnRlbnRzOiAoc3RhdGUsIG9wdGlvbnMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGluY2x1ZGVJbnZpc2libGVDb250ZW50ID0gb3B0aW9ucz8uaW5jbHVkZUludmlzaWJsZUNvbnRlbnQgPz8gZmFsc2U7XG5cbiAgICAgICAgICAgIHJldHVybiBzdGF0ZS5jb2x1bW5zLnJlZHVjZTxzdHJpbmdbXT4oKGNvbnRlbnQsIGNvbHVtbikgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghY29sdW1uLnZpc2libGUgJiYgIWluY2x1ZGVJbnZpc2libGVDb250ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjb250ZW50O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBbLi4uY29udGVudCwgLi4uKGNvbnRlbnRCbG9jay5leHRyYWN0VGV4dENvbnRlbnRzPy4oY29sdW1uLnByb3BzLCBvcHRpb25zKSA/PyBbXSldO1xuICAgICAgICAgICAgfSwgW10pO1xuICAgICAgICB9LFxuICAgIH07XG5cbiAgICBpZiAob3ZlcnJpZGUpIHtcbiAgICAgICAgcmV0dXJuIG92ZXJyaWRlKENvbHVtbnNCbG9jayk7XG4gICAgfVxuXG4gICAgcmV0dXJuIENvbHVtbnNCbG9jaztcbn1cblxuY29uc3QgQmxvY2tMaXN0SGVhZGVyID0gc3R5bGVkKFwiZGl2XCIpYFxuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5gO1xuXG5jb25zdCBCbG9ja0xpc3RIZWFkZXJBY3Rpb25Db250YWluZXIgPSBzdHlsZWQoXCJkaXZcIilgXG4gICAgcGFkZGluZzogMTJweCAwO1xuYDtcblxuY29uc3QgU2VsZWN0QWxsRnJvbUNvbnRyb2xMYWJlbCA9IHN0eWxlZChGb3JtQ29udHJvbExhYmVsKWBcbiAgICBwYWRkaW5nOiAxNXB4IDEwcHggMTVweCA3cHg7XG5gO1xuXG5jb25zdCBMYXJnZUFkZEJ1dHRvbkNvbnRlbnQgPSBzdHlsZWQoXCJzcGFuXCIpYFxuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHBhZGRpbmc6IDRweCAwO1xuYDtcblxuY29uc3QgTGFyZ2VBZGRCdXR0b25JY29uID0gc3R5bGVkKEFkZClgXG4gICAgZm9udC1zaXplOiAyNHB4O1xuICAgIG1hcmdpbi1ib3R0b206IDhweDtcbmA7XG5cbnR5cGUgR3JvdXBlZExheW91dHNCeUNvbHVtbnNBcGkgPSB7XG4gICAgY29sdW1uczogbnVtYmVyW107XG4gICAgZ2V0TGF5b3V0czogKGNvbHVtbnM6IG51bWJlcikgPT4gQ29sdW1uc0Jsb2NrTGF5b3V0W107XG4gICAgZ2V0RGVmYXVsdExheW91dDogKGNvbHVtbnM6IG51bWJlcikgPT4gQ29sdW1uc0Jsb2NrTGF5b3V0IHwgdW5kZWZpbmVkO1xufTtcblxuZnVuY3Rpb24gY29sdW1uQ291bnRMYWJlbChpbnRsOiBJbnRsU2hhcGUsIGNvdW50OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiBpbnRsLmZvcm1hdE1lc3NhZ2UoXG4gICAgICAgIHtcbiAgICAgICAgICAgIGlkOiBcImNvbWV0LmJsb2Nrcy5jb2x1bW5zLmNvbHVtblRpdGxlXCIsXG4gICAgICAgICAgICBkZWZhdWx0TWVzc2FnZTogXCJDb2x1bW4ge251bWJlcn1cIixcbiAgICAgICAgfSxcbiAgICAgICAgeyBudW1iZXI6IGNvdW50IH0sXG4gICAgKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlR3JvdXBMYXlvdXRzQnlDb2x1bW5zQXBpKGxheW91dHM6IENvbHVtbnNCbG9ja0xheW91dFtdKTogR3JvdXBlZExheW91dHNCeUNvbHVtbnNBcGkge1xuICAgIGNvbnN0IGdyb3VwZWRMYXlvdXRzID0gbGF5b3V0cy5yZWR1Y2UoKGFjYywgYykgPT4ge1xuICAgICAgICBhY2Muc2V0KGMuY29sdW1ucywgWy4uLihhY2MuZ2V0KGMuY29sdW1ucykgfHwgW10pLCBjXSk7XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgfSwgbmV3IE1hcDxudW1iZXIsIENvbHVtbnNCbG9ja0xheW91dFtdPigpKTtcblxuICAgIHJldHVybiB7XG4gICAgICAgIGNvbHVtbnM6IEFycmF5LmZyb20oZ3JvdXBlZExheW91dHMua2V5cygpKSxcbiAgICAgICAgZ2V0TGF5b3V0czogKGNvbHVtbnM6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGdyb3VwZWRMYXlvdXRzLmdldChjb2x1bW5zKSB8fCBbXTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0RGVmYXVsdExheW91dDogKGNvbHVtbnM6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgY29uc3QgbGF5b3V0cyA9IGdyb3VwZWRMYXlvdXRzLmdldChjb2x1bW5zKSB8fCBbXTtcbiAgICAgICAgICAgIHJldHVybiBsYXlvdXRzLmxlbmd0aCA/IGxheW91dHNbMF0gOiB1bmRlZmluZWQ7XG4gICAgICAgIH0sXG4gICAgfTtcbn1cbiJdfQ== */",
577
571
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__
578
572
  });
579
- var LargeAddButtonContent = /*#__PURE__*/(0, _styles.styled)("span", process.env.NODE_ENV === "production" ? {
573
+ var LargeAddButtonContent = /*#__PURE__*/styled("span", process.env.NODE_ENV === "production" ? {
580
574
  target: "eh7qu9y1"
581
575
  } : {
582
576
  target: "eh7qu9y1",
@@ -589,7 +583,7 @@ var LargeAddButtonContent = /*#__PURE__*/(0, _styles.styled)("span", process.env
589
583
  styles: "display:flex;flex-direction:column;align-items:center;padding:4px 0/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ibG9ja3MvZmFjdG9yaWVzL2NyZWF0ZUNvbHVtbnNCbG9jay50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBNmY0QyIsImZpbGUiOiIuLi8uLi8uLi9zcmMvYmxvY2tzL2ZhY3Rvcmllcy9jcmVhdGVDb2x1bW5zQmxvY2sudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmllbGQsIFN0YWNrUGFnZSwgU3RhY2tQYWdlVGl0bGUsIFN0YWNrU3dpdGNoLCBTdGFja1N3aXRjaEFwaUNvbnRleHQgfSBmcm9tIFwiQGNvbWV0L2FkbWluXCI7XG5pbXBvcnQgeyBBZGQsIENvcHksIERlbGV0ZSwgSW52aXNpYmxlLCBQYXN0ZSwgVmlzaWJsZSB9IGZyb20gXCJAY29tZXQvYWRtaW4taWNvbnNcIjtcbmltcG9ydCB7IENoZWNrYm94LCBEaXZpZGVyLCBGb3JtQ29udHJvbExhYmVsLCBJY29uQnV0dG9uLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHN0eWxlZCB9IGZyb20gXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiO1xuaW1wb3J0IHsgdHlwZSBEaXNwYXRjaCwgdHlwZSBSZWFjdE5vZGUsIHR5cGUgU2V0U3RhdGVBY3Rpb24gfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IEZvcm1hdHRlZE1lc3NhZ2UsIHR5cGUgSW50bFNoYXBlLCB0eXBlIE1lc3NhZ2VEZXNjcmlwdG9yLCB1c2VJbnRsIH0gZnJvbSBcInJlYWN0LWludGxcIjtcbmltcG9ydCB7IHY0IGFzIHV1aWQgfSBmcm9tIFwidXVpZFwiO1xuXG5pbXBvcnQgeyBBZG1pbkNvbXBvbmVudFN0aWNreUZvb3RlciB9IGZyb20gXCIuLi9jb21tb24vQWRtaW5Db21wb25lbnRTdGlja3lGb290ZXJcIjtcbmltcG9ydCB7IEJsb2NrQWRtaW5Db21wb25lbnRCdXR0b24gfSBmcm9tIFwiLi4vY29tbW9uL0Jsb2NrQWRtaW5Db21wb25lbnRCdXR0b25cIjtcbmltcG9ydCB7IEJsb2NrQWRtaW5Db21wb25lbnRQYXBlciB9IGZyb20gXCIuLi9jb21tb24vQmxvY2tBZG1pbkNvbXBvbmVudFBhcGVyXCI7XG5pbXBvcnQgeyBCbG9ja0FkbWluQ29tcG9uZW50U2VjdGlvbiB9IGZyb20gXCIuLi9jb21tb24vQmxvY2tBZG1pbkNvbXBvbmVudFNlY3Rpb25cIjtcbmltcG9ydCB7IEJsb2NrUHJldmlld0NvbnRlbnQgfSBmcm9tIFwiLi4vY29tbW9uL2Jsb2NrUm93L0Jsb2NrUHJldmlld0NvbnRlbnRcIjtcbmltcG9ydCB7IEJsb2NrUm93IH0gZnJvbSBcIi4uL2NvbW1vbi9ibG9ja1Jvdy9CbG9ja1Jvd1wiO1xuaW1wb3J0IHsgQmxvY2tzRmluYWxGb3JtIH0gZnJvbSBcIi4uL2Zvcm0vQmxvY2tzRmluYWxGb3JtXCI7XG5pbXBvcnQgeyBjcmVhdGVCbG9ja1NrZWxldG9uIH0gZnJvbSBcIi4uL2hlbHBlcnMvY3JlYXRlQmxvY2tTa2VsZXRvblwiO1xuaW1wb3J0IHsgZGVkdXBsaWNhdGVCbG9ja0RlcGVuZGVuY2llcyB9IGZyb20gXCIuLi9oZWxwZXJzL2RlZHVwbGljYXRlQmxvY2tEZXBlbmRlbmNpZXNcIjtcbmltcG9ydCB7IEhvdmVyUHJldmlld0NvbXBvbmVudCB9IGZyb20gXCIuLi9pZnJhbWVicmlkZ2UvSG92ZXJQcmV2aWV3Q29tcG9uZW50XCI7XG5pbXBvcnQgeyBTZWxlY3RQcmV2aWV3Q29tcG9uZW50IH0gZnJvbSBcIi4uL2lmcmFtZWJyaWRnZS9TZWxlY3RQcmV2aWV3Q29tcG9uZW50XCI7XG5pbXBvcnQge1xuICAgIEJsb2NrQ2F0ZWdvcnksXG4gICAgdHlwZSBCbG9ja0RlcGVuZGVuY3ksXG4gICAgdHlwZSBCbG9ja0lucHV0QXBpLFxuICAgIHR5cGUgQmxvY2tJbnRlcmZhY2UsXG4gICAgdHlwZSBDdXN0b21CbG9ja0NhdGVnb3J5LFxuICAgIHR5cGUgUHJldmlld0NvbnRlbnQsXG59IGZyb20gXCIuLi90eXBlc1wiO1xuaW1wb3J0IHsgcmVzb2x2ZU5ld1N0YXRlIH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5pbXBvcnQgeyBwYXJhbGxlbEFzeW5jRXZlcnkgfSBmcm9tIFwiLi4vdXRpbHMvcGFyYWxsZWxBc3luY0V2ZXJ5XCI7XG5pbXBvcnQgeyBGaW5hbEZvcm1Db2x1bW5zU2VsZWN0IH0gZnJvbSBcIi4vY29sdW1uc0Jsb2NrL0ZpbmFsRm9ybUNvbHVtbnNTZWxlY3RcIjtcbmltcG9ydCB7IEZpbmFsRm9ybUxheW91dFNlbGVjdCB9IGZyb20gXCIuL2NvbHVtbnNCbG9jay9GaW5hbEZvcm1MYXlvdXRTZWxlY3RcIjtcbmltcG9ydCB7IHR5cGUgTGlzdEJsb2NrSXRlbSwgdHlwZSBMaXN0QmxvY2tTdGF0ZSB9IGZyb20gXCIuL2NyZWF0ZUxpc3RCbG9ja1wiO1xuaW1wb3J0IHsgY3JlYXRlVXNlQWRtaW5Db21wb25lbnQgYXMgY3JlYXRlVXNlTGlzdEJsb2NrQWRtaW5Db21wb25lbnQgfSBmcm9tIFwiLi9saXN0QmxvY2svY3JlYXRlVXNlQWRtaW5Db21wb25lbnRcIjtcblxuZXhwb3J0IGludGVyZmFjZSBDb2x1bW5zQmxvY2tMYXlvdXQge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBjb2x1bW5zOiBudW1iZXI7XG4gICAgbGFiZWw6IFJlYWN0Tm9kZTtcbiAgICBwcmV2aWV3OiBSZWFjdE5vZGU7XG4gICAgc2VjdGlvbj86XG4gICAgICAgIHwgc3RyaW5nXG4gICAgICAgIHwge1xuICAgICAgICAgICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICAgICAgICAgIGxhYmVsPzogUmVhY3ROb2RlO1xuICAgICAgICAgIH07XG59XG5cbmludGVyZmFjZSBDb2x1bW5zQmxvY2tGcmFnbWVudDxUIGV4dGVuZHMgQmxvY2tJbnRlcmZhY2U+IHtcbiAgICBsYXlvdXQ6IHN0cmluZztcbiAgICBjb2x1bW5zOiBBcnJheTx7XG4gICAgICAgIGtleTogc3RyaW5nO1xuICAgICAgICB2aXNpYmxlOiBib29sZWFuO1xuICAgICAgICBwcm9wczogQmxvY2tJbnB1dEFwaTxUPjtcbiAgICB9Pjtcbn1cblxuaW50ZXJmYWNlIENvbHVtbnNCbG9ja1N0YXRlPFQgZXh0ZW5kcyBCbG9ja0ludGVyZmFjZT4ge1xuICAgIGxheW91dDogQ29sdW1uc0Jsb2NrTGF5b3V0O1xuICAgIGNvbHVtbnM6IExpc3RCbG9ja0l0ZW08VD5bXTtcbn1cblxuaW50ZXJmYWNlIENyZWF0ZUNvbHVtbnNCbG9ja09wdGlvbnM8VCBleHRlbmRzIEJsb2NrSW50ZXJmYWNlPiB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGRpc3BsYXlOYW1lOiBSZWFjdE5vZGU7XG4gICAgY2F0ZWdvcnk/OiBCbG9ja0NhdGVnb3J5IHwgQ3VzdG9tQmxvY2tDYXRlZ29yeTtcbiAgICBjb250ZW50QmxvY2s6IFQ7XG4gICAgbGF5b3V0czogQ29sdW1uc0Jsb2NrTGF5b3V0W107XG4gICAgdGFncz86IEFycmF5PE1lc3NhZ2VEZXNjcmlwdG9yIHwgc3RyaW5nPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvbHVtbnNCbG9jazxUIGV4dGVuZHMgQmxvY2tJbnRlcmZhY2U+KFxuICAgIHsgbmFtZSwgZGlzcGxheU5hbWUsIGNhdGVnb3J5ID0gQmxvY2tDYXRlZ29yeS5MYXlvdXQsIGNvbnRlbnRCbG9jaywgbGF5b3V0cywgdGFncyB9OiBDcmVhdGVDb2x1bW5zQmxvY2tPcHRpb25zPFQ+LFxuICAgIG92ZXJyaWRlPzogKFxuICAgICAgICBibG9jazogQmxvY2tJbnRlcmZhY2U8Q29sdW1uc0Jsb2NrRnJhZ21lbnQ8VD4sIENvbHVtbnNCbG9ja1N0YXRlPFQ+LCBDb2x1bW5zQmxvY2tGcmFnbWVudDxUPj4sXG4gICAgKSA9PiBCbG9ja0ludGVyZmFjZTxDb2x1bW5zQmxvY2tGcmFnbWVudDxUPiwgQ29sdW1uc0Jsb2NrU3RhdGU8VD4sIENvbHVtbnNCbG9ja0ZyYWdtZW50PFQ+Pixcbik6IEJsb2NrSW50ZXJmYWNlPENvbHVtbnNCbG9ja0ZyYWdtZW50PFQ+LCBDb2x1bW5zQmxvY2tTdGF0ZTxUPiwgQ29sdW1uc0Jsb2NrRnJhZ21lbnQ8VD4+IHtcbiAgICBpZiAobGF5b3V0cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBOdW1iZXIgb2YgbGF5b3V0cyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwIWApO1xuICAgIH1cblxuICAgIGNvbnN0IHVzZUxpc3RCbG9ja0FkbWluQ29tcG9uZW50ID0gY3JlYXRlVXNlTGlzdEJsb2NrQWRtaW5Db21wb25lbnQoeyBibG9jazogY29udGVudEJsb2NrIH0pO1xuXG4gICAgZnVuY3Rpb24gY3JlYXRlRW1wdHlDb2x1bW5zKG51bWJlcjogbnVtYmVyKTogTGlzdEJsb2NrSXRlbTxUPltdIHtcbiAgICAgICAgcmV0dXJuIG5ldyBBcnJheShudW1iZXIpLmZpbGwodW5kZWZpbmVkKS5tYXAoKCkgPT4gKHtcbiAgICAgICAgICAgIGtleTogdXVpZCgpLFxuICAgICAgICAgICAgcHJvcHM6IGNvbnRlbnRCbG9jay5kZWZhdWx0VmFsdWVzKCksXG4gICAgICAgICAgICBzZWxlY3RlZDogZmFsc2UsXG4gICAgICAgICAgICBzbGlkZUluOiBmYWxzZSxcbiAgICAgICAgICAgIHZpc2libGU6IHRydWUsXG4gICAgICAgIH0pKTtcbiAgICB9XG4gICAgY29uc3QgQ29sdW1uc0Jsb2NrOiBCbG9ja0ludGVyZmFjZTxDb2x1bW5zQmxvY2tGcmFnbWVudDxUPiwgQ29sdW1uc0Jsb2NrU3RhdGU8VD4sIENvbHVtbnNCbG9ja0ZyYWdtZW50PFQ+PiA9IHtcbiAgICAgICAgLi4uY3JlYXRlQmxvY2tTa2VsZXRvbigpLFxuXG4gICAgICAgIG5hbWUsXG5cbiAgICAgICAgZGlzcGxheU5hbWUsXG5cbiAgICAgICAgdGFnczogdGFncyA/IHRhZ3MgOiBjb250ZW50QmxvY2sudGFncyxcblxuICAgICAgICBjYXRlZ29yeSxcblxuICAgICAgICBkZWZhdWx0VmFsdWVzOiAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkZWZhdWx0TGF5b3V0ID0gbGF5b3V0c1swXTtcblxuICAgICAgICAgICAgY29uc3Qgc3RhdGU6IENvbHVtbnNCbG9ja1N0YXRlPFQ+ID0ge1xuICAgICAgICAgICAgICAgIGxheW91dDogZGVmYXVsdExheW91dCxcbiAgICAgICAgICAgICAgICAvLyBBZGQgZW1wdHkgY29sdW1ucyBzbyB0aGUgbGlzdCBpcyBub3QgZW1wdHkgaW5pdGlhbGx5XG4gICAgICAgICAgICAgICAgY29sdW1uczogY3JlYXRlRW1wdHlDb2x1bW5zKGRlZmF1bHRMYXlvdXQuY29sdW1ucyksXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICByZXR1cm4gc3RhdGU7XG4gICAgICAgIH0sXG5cbiAgICAgICAgaW5wdXQyU3RhdGU6IChpbnB1dCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbGF5b3V0ID0gbGF5b3V0cy5maW5kKChsYXlvdXQpID0+IGxheW91dC5uYW1lID09PSBpbnB1dC5sYXlvdXQpO1xuXG4gICAgICAgICAgICBpZiAoIWxheW91dCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBsYXlvdXQgXCIke2lucHV0LmxheW91dH1cIiFgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBsYXlvdXQsXG4gICAgICAgICAgICAgICAgY29sdW1uczogaW5wdXQuY29sdW1ucy5tYXAoKGNvbHVtbikgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBjb2x1bW4ua2V5LFxuICAgICAgICAgICAgICAgICAgICBwcm9wczogY29udGVudEJsb2NrLmlucHV0MlN0YXRlKGNvbHVtbi5wcm9wcyksXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgc2xpZGVJbjogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIHZpc2libGU6IGNvbHVtbi52aXNpYmxlLFxuICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG5cbiAgICAgICAgc3RhdGUyT3V0cHV0OiAob3V0cHV0KSA9PiAoe1xuICAgICAgICAgICAgbGF5b3V0OiBvdXRwdXQubGF5b3V0Lm5hbWUsXG4gICAgICAgICAgICBjb2x1bW5zOiBvdXRwdXQuY29sdW1ucy5tYXAoKGNvbHVtbikgPT4gKHtcbiAgICAgICAgICAgICAgICBrZXk6IGNvbHVtbi5rZXksXG4gICAgICAgICAgICAgICAgdmlzaWJsZTogY29sdW1uLnZpc2libGUsXG4gICAgICAgICAgICAgICAgcHJvcHM6IGNvbnRlbnRCbG9jay5zdGF0ZTJPdXRwdXQoY29sdW1uLnByb3BzKSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgfSksXG5cbiAgICAgICAgb3V0cHV0MlN0YXRlOiBhc3luYyAob3V0cHV0LCBjb250ZXh0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsYXlvdXQgPSBsYXlvdXRzLmZpbmQoKGxheW91dCkgPT4gbGF5b3V0Lm5hbWUgPT09IG91dHB1dC5sYXlvdXQpO1xuXG4gICAgICAgICAgICBpZiAoIWxheW91dCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBsYXlvdXQgXCIke291dHB1dC5sYXlvdXR9XCIhYCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHN0YXRlOiBDb2x1bW5zQmxvY2tTdGF0ZTxUPiA9IHtcbiAgICAgICAgICAgICAgICBsYXlvdXQsXG4gICAgICAgICAgICAgICAgY29sdW1uczogW10sXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNvbHVtbnMgb2Ygb3V0cHV0LmNvbHVtbnMpIHtcbiAgICAgICAgICAgICAgICBzdGF0ZS5jb2x1bW5zLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAuLi5jb2x1bW5zLFxuICAgICAgICAgICAgICAgICAgICBwcm9wczogYXdhaXQgY29udGVudEJsb2NrLm91dHB1dDJTdGF0ZShjb2x1bW5zLnByb3BzLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBzbGlkZUluOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHN0YXRlO1xuICAgICAgICB9LFxuXG4gICAgICAgIGNyZWF0ZVByZXZpZXdTdGF0ZTogKHN0YXRlLCBwcmV2aWV3Q29udGV4dCkgPT4gKHtcbiAgICAgICAgICAgIGFkbWluTWV0YTogeyByb3V0ZTogcHJldmlld0NvbnRleHQucGFyZW50VXJsIH0sXG4gICAgICAgICAgICBsYXlvdXQ6IHN0YXRlLmxheW91dC5uYW1lLFxuICAgICAgICAgICAgY29sdW1uczogc3RhdGUuY29sdW1uc1xuICAgICAgICAgICAgICAgIC5maWx0ZXIoKGMpID0+IChwcmV2aWV3Q29udGV4dC5zaG93VmlzaWJsZU9ubHkgPyBjLnZpc2libGUgOiB0cnVlKSkgLy8gZGVwZW5kaW5nIG9uIGNvbnRleHQgc2hvdyBhbGwgYmxvY2tzIG9yIG9ubHkgdmlzaWJsZSBibG9ja3NcbiAgICAgICAgICAgICAgICAubWFwKChjb2x1bW4pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2tBZG1pblJvdXRlID0gYCR7cHJldmlld0NvbnRleHQucGFyZW50VXJsU3ViUm91dGUgPz8gcHJldmlld0NvbnRleHQucGFyZW50VXJsfS8ke2NvbHVtbi5rZXl9L2VkaXRgO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGNvbHVtbi5rZXksXG4gICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlOiBjb2x1bW4udmlzaWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzOiBjb250ZW50QmxvY2suY3JlYXRlUHJldmlld1N0YXRlKGNvbHVtbi5wcm9wcywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnByZXZpZXdDb250ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudFVybFN1YlJvdXRlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50VXJsOiBibG9ja0FkbWluUm91dGUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkbWluUm91dGU6IGJsb2NrQWRtaW5Sb3V0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkbWluTWV0YTogeyByb3V0ZTogYmxvY2tBZG1pblJvdXRlIH0sXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgIH0pLFxuXG4gICAgICAgIGlzVmFsaWQ6IChzdGF0ZSkgPT4gcGFyYWxsZWxBc3luY0V2ZXJ5KHN0YXRlLmNvbHVtbnMsIChjb2x1bW4pID0+IGNvbnRlbnRCbG9jay5pc1ZhbGlkKGNvbHVtbi5wcm9wcykpLFxuXG4gICAgICAgIGFuY2hvcnM6IChzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHN0YXRlLmNvbHVtbnMucmVkdWNlPHN0cmluZ1tdPigoYW5jaG9ycywgY29sdW1uKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsuLi5hbmNob3JzLCAuLi4oY29udGVudEJsb2NrLmFuY2hvcnM/Lihjb2x1bW4ucHJvcHMpID8/IFtdKV07XG4gICAgICAgICAgICB9LCBbXSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZGVwZW5kZW5jaWVzOiAoc3RhdGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1lcmdlZERlcGVuZGVuY2llcyA9IHN0YXRlLmNvbHVtbnMucmVkdWNlPEJsb2NrRGVwZW5kZW5jeVtdPigoZGVwZW5kZW5jaWVzLCBjb2x1bW4pID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gWy4uLmRlcGVuZGVuY2llcywgLi4uKGNvbnRlbnRCbG9jay5kZXBlbmRlbmNpZXM/Lihjb2x1bW4ucHJvcHMpID8/IFtdKV07XG4gICAgICAgICAgICB9LCBbXSk7XG5cbiAgICAgICAgICAgIHJldHVybiBkZWR1cGxpY2F0ZUJsb2NrRGVwZW5kZW5jaWVzKG1lcmdlZERlcGVuZGVuY2llcyk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgcmVwbGFjZURlcGVuZGVuY2llc0luT3V0cHV0OiAob3V0cHV0LCByZXBsYWNlbWVudHMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5ld091dHB1dDogQ29sdW1uc0Jsb2NrRnJhZ21lbnQ8VD4gPSB7IC4uLm91dHB1dCwgY29sdW1uczogW10gfTtcblxuICAgICAgICAgICAgZm9yIChjb25zdCBjb2x1bW4gb2Ygb3V0cHV0LmNvbHVtbnMpIHtcbiAgICAgICAgICAgICAgICBuZXdPdXRwdXQuY29sdW1ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgLi4uY29sdW1uLFxuICAgICAgICAgICAgICAgICAgICBwcm9wczogY29udGVudEJsb2NrLnJlcGxhY2VEZXBlbmRlbmNpZXNJbk91dHB1dChjb2x1bW4ucHJvcHMsIHJlcGxhY2VtZW50cyksXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBuZXdPdXRwdXQ7XG4gICAgICAgIH0sXG5cbiAgICAgICAgQWRtaW5Db21wb25lbnQ6ICh7IHN0YXRlLCB1cGRhdGVTdGF0ZSB9KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpbnRsID0gdXNlSW50bCgpO1xuICAgICAgICAgICAgY29uc3QgZ3JvdXBMYXlvdXRzQnlDb2x1bW5zQXBpID0gY3JlYXRlR3JvdXBMYXlvdXRzQnlDb2x1bW5zQXBpKGxheW91dHMpO1xuICAgICAgICAgICAgY29uc3QgaGFuZGxlTGlzdEJsb2NrQWRtaW5DaGFuZ2U6IERpc3BhdGNoPFNldFN0YXRlQWN0aW9uPExpc3RCbG9ja1N0YXRlPFQ+Pj4gPSAobGlzdEJsb2NrU2V0U3RhdGVBY3Rpb24pID0+IHtcbiAgICAgICAgICAgICAgICB1cGRhdGVTdGF0ZSgocHJldlN0YXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpc3RCbG9ja1N0YXRlID0gcmVzb2x2ZU5ld1N0YXRlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXZTdGF0ZTogeyBibG9ja3M6IHByZXZTdGF0ZS5jb2x1bW5zIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGF0ZUFjdGlvbjogbGlzdEJsb2NrU2V0U3RhdGVBY3Rpb24sXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4ucHJldlN0YXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uczogbGlzdEJsb2NrU3RhdGUuYmxvY2tzLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgICAgICBjYW5ub3RQYXN0ZUJsb2NrRXJyb3JEaWFsb2csXG4gICAgICAgICAgICAgICAgY3JlYXRlVXBkYXRlU3ViQmxvY2tzRm4sXG4gICAgICAgICAgICAgICAgdXBkYXRlQ2xpcGJvYXJkQ29udGVudCxcbiAgICAgICAgICAgICAgICBhZGROZXdCbG9jayxcbiAgICAgICAgICAgICAgICBjb3B5U2VsZWN0ZWRCbG9ja3MsXG4gICAgICAgICAgICAgICAgZGVsZXRlQWxsU2VsZWN0ZWRCbG9ja3MsXG4gICAgICAgICAgICAgICAgc2VsZWN0QmxvY2ssXG4gICAgICAgICAgICAgICAgaGFuZGxlVG9nZ2xlU2VsZWN0QWxsLFxuICAgICAgICAgICAgICAgIHBhc3RlQmxvY2ssXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRDb3VudCxcbiAgICAgICAgICAgICAgICBkZWxldGVCbG9ja3MsXG4gICAgICAgICAgICAgICAgdG9nZ2xlVmlzaWJsZSxcbiAgICAgICAgICAgIH0gPSB1c2VMaXN0QmxvY2tBZG1pbkNvbXBvbmVudCh7IHN0YXRlOiB7IGJsb2Nrczogc3RhdGUuY29sdW1ucyB9LCB1cGRhdGVTdGF0ZTogaGFuZGxlTGlzdEJsb2NrQWRtaW5DaGFuZ2UgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgPFN0YWNrU3dpdGNoIGluaXRpYWxQYWdlPVwibGlzdFwiIGRpc2FibGVGb3JjZVByb21wdFJvdXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFN0YWNrUGFnZSBuYW1lPVwibGlzdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCbG9ja3NGaW5hbEZvcm08eyBsYXlvdXQ6IENvbHVtbnNCbG9ja0xheW91dDsgY29sdW1uczogbnVtYmVyIH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uU3VibWl0PXsoeyBsYXlvdXQsIGNvbHVtbnMgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlU3RhdGUoKHByZXZTdGF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRMYXlvdXRGb3JTZWxlY3RlZENvbHVtbnMgPSBncm91cExheW91dHNCeUNvbHVtbnNBcGkuZ2V0RGVmYXVsdExheW91dChjb2x1bW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdMYXlvdXQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXlvdXQuY29sdW1ucyAhPT0gY29sdW1ucyAmJiBkZWZhdWx0TGF5b3V0Rm9yU2VsZWN0ZWRDb2x1bW5zID8gZGVmYXVsdExheW91dEZvclNlbGVjdGVkQ29sdW1ucyA6IGxheW91dDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtaXNzaW5nRW1wdHlDb2x1bW5zID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1ucyA+IHByZXZTdGF0ZS5jb2x1bW5zLmxlbmd0aCA/IGNyZWF0ZUVtcHR5Q29sdW1ucyhjb2x1bW5zIC0gcHJldlN0YXRlLmNvbHVtbnMubGVuZ3RoKSA6IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnByZXZTdGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5b3V0OiBuZXdMYXlvdXQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnM6IFsuLi5wcmV2U3RhdGUuY29sdW1ucywgLi4ubWlzc2luZ0VtcHR5Q29sdW1uc10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsVmFsdWVzPXt7IGxheW91dDogc3RhdGUubGF5b3V0LCBjb2x1bW5zOiBzdGF0ZS5sYXlvdXQuY29sdW1ucyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZpZWxkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiY29sdW1uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17PEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MuY29sdW1ucy5jb2x1bW5zXCIgZGVmYXVsdE1lc3NhZ2U9XCJDb2x1bW5zXCIgLz59XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ9e0ZpbmFsRm9ybUNvbHVtbnNTZWxlY3R9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zPXtncm91cExheW91dHNCeUNvbHVtbnNBcGkuY29sdW1uc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RmllbGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJsYXlvdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9ezxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwiY29tZXQuYmxvY2tzLmNvbHVtbnMubGF5b3V0XCIgZGVmYXVsdE1lc3NhZ2U9XCJMYXlvdXRcIiAvPn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudD17RmluYWxGb3JtTGF5b3V0U2VsZWN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5b3V0cz17Z3JvdXBMYXlvdXRzQnlDb2x1bW5zQXBpLmdldExheW91dHMoc3RhdGUubGF5b3V0LmNvbHVtbnMpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CbG9ja3NGaW5hbEZvcm0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrQWRtaW5Db21wb25lbnRTZWN0aW9uIHRpdGxlPXs8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5jb2x1bW5zLml0ZW1zXCIgZGVmYXVsdE1lc3NhZ2U9XCJJdGVtc1wiIC8+fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrQWRtaW5Db21wb25lbnRQYXBlciBkaXNhYmxlUGFkZGluZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTdGFja1N3aXRjaEFwaUNvbnRleHQuQ29uc3VtZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyhzdGFja0FwaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNlbGVjdFByZXZpZXdDb21wb25lbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrTGlzdEhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3N0YXRlLmNvbHVtbnMubGVuZ3RoID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNlbGVjdEFsbEZyb21Db250cm9sTGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXtzZWxlY3RlZENvdW50ID09PSBzdGF0ZS5jb2x1bW5zLmxlbmd0aCAmJiBzZWxlY3RlZENvdW50ID4gMH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV0ZXJtaW5hdGU9e3NlbGVjdGVkQ291bnQgPiAwICYmIHNlbGVjdGVkQ291bnQgIT09IHN0YXRlLmNvbHVtbnMubGVuZ3RofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZVRvZ2dsZVNlbGVjdEFsbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5saXN0LnNlbGVjdEFsbFwiIGRlZmF1bHRNZXNzYWdlPVwiU2VsZWN0IGFsbFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrTGlzdEhlYWRlckFjdGlvbkNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzZWxlY3RlZENvdW50ID4gMCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b24gb25DbGljaz17ZGVsZXRlQWxsU2VsZWN0ZWRCbG9ja3N9IHNpemU9XCJsYXJnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERlbGV0ZSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uIG9uQ2xpY2s9e2NvcHlTZWxlY3RlZEJsb2Nrc30gc2l6ZT1cImxhcmdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q29weSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b24gb25DbGljaz17KCkgPT4gcGFzdGVCbG9jaygwKX0gc2l6ZT1cImxhcmdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBhc3RlIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tMaXN0SGVhZGVyQWN0aW9uQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tMaXN0SGVhZGVyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERpdmlkZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7c3RhdGUuY29sdW1ucy5tYXAoKGNvbHVtbiwgY29sdW1uSW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEhvdmVyUHJldmlld0NvbXBvbmVudCBrZXk9e2NvbHVtbi5rZXl9IGNvbXBvbmVudFNsdWc9e2Ake2NvbHVtbi5rZXl9L2NvbnRlbnRgfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrUm93XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD17Y29sdW1uLmtleX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlclByZXZpZXdDb250ZW50PXsoKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrUHJldmlld0NvbnRlbnQgYmxvY2s9e2NvbnRlbnRCbG9ja30gc3RhdGU9e2NvbHVtbi5wcm9wc30gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleD17Y29sdW1uSW5kZXh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNvbnRlbnRDbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrQXBpLmFjdGl2YXRlUGFnZShcImVkaXRcIiwgY29sdW1uLmtleSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25EZWxldGVDbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZUJsb2NrcyhbY29sdW1uLmtleV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVCbG9jaz17KGZyb20sIHRvKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlU3RhdGUoKHByZXZTdGF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb2x1bW5zID0gWy4uLnByZXZTdGF0ZS5jb2x1bW5zXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29sdW1uVG9Nb3ZlID0gY29sdW1ucy5zcGxpY2UoZnJvbSwgMSlbMF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnMuc3BsaWNlKHRvLCAwLCBjb2x1bW5Ub01vdmUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyAuLi5wcmV2U3RhdGUsIGNvbHVtbnMgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmlsaXR5QnV0dG9uPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvbiBvbkNsaWNrPXsoKSA9PiB0b2dnbGVWaXNpYmxlKGNvbHVtbi5rZXkpfSBzaXplPVwic21hbGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2NvbHVtbi52aXNpYmxlID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFZpc2libGUgY29sb3I9XCJzdWNjZXNzXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbnZpc2libGUgY29sb3I9XCJhY3Rpb25cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQWRkTmV3QmxvY2s9eyhiZWZvcmVJbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGFkZE5ld0Jsb2NrKGJlZm9yZUluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja0FwaS5hY3RpdmF0ZVBhZ2UoXCJlZGl0XCIsIGtleSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Db3B5Q2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVDbGlwYm9hcmRDb250ZW50KFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogY29udGVudEJsb2NrLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlOiBjb2x1bW4udmlzaWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlOiBjb2x1bW4ucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25QYXN0ZUNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzdGVCbG9jayhjb2x1bW5JbmRleCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkPXtjb2x1bW4uc2VsZWN0ZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblNlbGVjdGVkQ2xpY2s9eyhzZWxlY3RlZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdEJsb2NrKGNvbHVtbiwgc2VsZWN0ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzVmFsaWRGbj17KCkgPT4gY29udGVudEJsb2NrLmlzVmFsaWQoY29sdW1uLnByb3BzKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlSW49e2NvbHVtbi5zbGlkZUlufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZUJvdHRvbUluc2VydEJldHdlZW5CdXR0b249e2NvbHVtbkluZGV4ID49IHN0YXRlLmNvbHVtbnMubGVuZ3RoIC0gMX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0hvdmVyUHJldmlld0NvbXBvbmVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzdGF0ZS5jb2x1bW5zLmxlbmd0aCA9PT0gMCA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrQWRtaW5Db21wb25lbnRCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBhZGROZXdCbG9jaygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrQXBpLmFjdGl2YXRlUGFnZShcImVkaXRcIiwga2V5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TGFyZ2VBZGRCdXR0b25Db250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxMYXJnZUFkZEJ1dHRvbkljb24gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VHlwb2dyYXBoeT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MuY29sdW1ucy5hZGRJdGVtXCIgZGVmYXVsdE1lc3NhZ2U9XCJBZGQgaXRlbVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9MYXJnZUFkZEJ1dHRvbkNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QWRtaW5Db21wb25lbnRTdGlja3lGb290ZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGFkZE5ld0Jsb2NrKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrQXBpLmFjdGl2YXRlUGFnZShcImVkaXRcIiwga2V5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRJY29uPXs8QWRkIC8+fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwiY29tZXQuYmxvY2tzLmNvbHVtbnMuYWRkSXRlbVwiIGRlZmF1bHRNZXNzYWdlPVwiQWRkIGl0ZW1cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CbG9ja0FkbWluQ29tcG9uZW50QnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FkbWluQ29tcG9uZW50U3RpY2t5Rm9vdGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1NlbGVjdFByZXZpZXdDb21wb25lbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvU3RhY2tTd2l0Y2hBcGlDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0Jsb2NrQWRtaW5Db21wb25lbnRQYXBlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0Jsb2NrQWRtaW5Db21wb25lbnRTZWN0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9TdGFja1BhZ2U+XG4gICAgICAgICAgICAgICAgICAgICAgICA8U3RhY2tQYWdlIG5hbWU9XCJlZGl0XCIgdGl0bGU9e2ludGwuZm9ybWF0TWVzc2FnZSh7IGlkOiBcImNvbWV0LmJsb2Nrcy5jb2x1bW5zLmVkaXRDb2x1bW5cIiwgZGVmYXVsdE1lc3NhZ2U6IFwiRWRpdCBjb2x1bW5cIiB9KX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyhrZXkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF0Y2hJbmRleCA9IHN0YXRlLmNvbHVtbnMuZmluZEluZGV4KChjb2x1bW4pID0+IGNvbHVtbi5rZXkgPT09IGtleSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoSW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MuY29sdW1ucy51bmtub3duQ29sdW1uXCIgZGVmYXVsdE1lc3NhZ2U9XCJDYW4ndCBmaW5kIGNvbHVtblwiIC8+O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSBzdGF0ZS5jb2x1bW5zW21hdGNoSW5kZXhdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U3RhY2tQYWdlVGl0bGUgdGl0bGU9e2NvbHVtbkNvdW50TGFiZWwoaW50bCwgbWF0Y2hJbmRleCArIDEpfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y29udGVudEJsb2NrLkFkbWluQ29tcG9uZW50IHN0YXRlPXttYXRjaC5wcm9wc30gdXBkYXRlU3RhdGU9e2NyZWF0ZVVwZGF0ZVN1YkJsb2Nrc0ZuKGtleSl9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N0YWNrUGFnZVRpdGxlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1N0YWNrUGFnZT5cbiAgICAgICAgICAgICAgICAgICAgPC9TdGFja1N3aXRjaD5cbiAgICAgICAgICAgICAgICAgICAge2Nhbm5vdFBhc3RlQmxvY2tFcnJvckRpYWxvZ31cbiAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgcHJldmlld0NvbnRlbnQ6IChzdGF0ZSwgY29udGV4dCkgPT4ge1xuICAgICAgICAgICAgaWYgKHN0YXRlLmNvbHVtbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5jb2x1bW5zLm5vQ29sdW1uc1wiIGRlZmF1bHRNZXNzYWdlPVwiTm8gY29sdW1uc1wiIC8+LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBzdGF0ZS5jb2x1bW5zLnJlZHVjZTxQcmV2aWV3Q29udGVudFtdPihcbiAgICAgICAgICAgICAgICAocHJldmlld0NvbnRlbnQsIGN1cnJlbnRDb2x1bW4pID0+IFsuLi5wcmV2aWV3Q29udGVudCwgLi4uY29udGVudEJsb2NrLnByZXZpZXdDb250ZW50KGN1cnJlbnRDb2x1bW4ucHJvcHMsIGNvbnRleHQpXSxcbiAgICAgICAgICAgICAgICBbXSxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgcmVzb2x2ZURlcGVuZGVuY3lQYXRoOiAoc3RhdGUsIGpzb25QYXRoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIS9eY29sdW1ucy5cXGQrLnByb3BzLy50ZXN0KGpzb25QYXRoKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNvbHVtbnNCbG9jazogSW52YWxpZCBqc29uUGF0aFwiKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgcGF0aEFyciA9IGpzb25QYXRoLnNwbGl0KFwiLlwiKTtcbiAgICAgICAgICAgIGNvbnN0IG51bSA9IE51bWJlcihwYXRoQXJyWzFdKTtcbiAgICAgICAgICAgIGNvbnN0IGJsb2NrSXRlbSA9IHN0YXRlLmNvbHVtbnNbbnVtXTtcblxuICAgICAgICAgICAgY29uc3QgY2hpbGRQYXRoID0gY29udGVudEJsb2NrLnJlc29sdmVEZXBlbmRlbmN5UGF0aChibG9ja0l0ZW0ucHJvcHMsIHBhdGhBcnIuc2xpY2UoMykuam9pbihcIi5cIikpO1xuICAgICAgICAgICAgcmV0dXJuIGAke2Jsb2NrSXRlbS5rZXl9L2VkaXQvJHtjaGlsZFBhdGh9YDtcbiAgICAgICAgfSxcblxuICAgICAgICBleHRyYWN0VGV4dENvbnRlbnRzOiAoc3RhdGUsIG9wdGlvbnMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGluY2x1ZGVJbnZpc2libGVDb250ZW50ID0gb3B0aW9ucz8uaW5jbHVkZUludmlzaWJsZUNvbnRlbnQgPz8gZmFsc2U7XG5cbiAgICAgICAgICAgIHJldHVybiBzdGF0ZS5jb2x1bW5zLnJlZHVjZTxzdHJpbmdbXT4oKGNvbnRlbnQsIGNvbHVtbikgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghY29sdW1uLnZpc2libGUgJiYgIWluY2x1ZGVJbnZpc2libGVDb250ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjb250ZW50O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBbLi4uY29udGVudCwgLi4uKGNvbnRlbnRCbG9jay5leHRyYWN0VGV4dENvbnRlbnRzPy4oY29sdW1uLnByb3BzLCBvcHRpb25zKSA/PyBbXSldO1xuICAgICAgICAgICAgfSwgW10pO1xuICAgICAgICB9LFxuICAgIH07XG5cbiAgICBpZiAob3ZlcnJpZGUpIHtcbiAgICAgICAgcmV0dXJuIG92ZXJyaWRlKENvbHVtbnNCbG9jayk7XG4gICAgfVxuXG4gICAgcmV0dXJuIENvbHVtbnNCbG9jaztcbn1cblxuY29uc3QgQmxvY2tMaXN0SGVhZGVyID0gc3R5bGVkKFwiZGl2XCIpYFxuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5gO1xuXG5jb25zdCBCbG9ja0xpc3RIZWFkZXJBY3Rpb25Db250YWluZXIgPSBzdHlsZWQoXCJkaXZcIilgXG4gICAgcGFkZGluZzogMTJweCAwO1xuYDtcblxuY29uc3QgU2VsZWN0QWxsRnJvbUNvbnRyb2xMYWJlbCA9IHN0eWxlZChGb3JtQ29udHJvbExhYmVsKWBcbiAgICBwYWRkaW5nOiAxNXB4IDEwcHggMTVweCA3cHg7XG5gO1xuXG5jb25zdCBMYXJnZUFkZEJ1dHRvbkNvbnRlbnQgPSBzdHlsZWQoXCJzcGFuXCIpYFxuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHBhZGRpbmc6IDRweCAwO1xuYDtcblxuY29uc3QgTGFyZ2VBZGRCdXR0b25JY29uID0gc3R5bGVkKEFkZClgXG4gICAgZm9udC1zaXplOiAyNHB4O1xuICAgIG1hcmdpbi1ib3R0b206IDhweDtcbmA7XG5cbnR5cGUgR3JvdXBlZExheW91dHNCeUNvbHVtbnNBcGkgPSB7XG4gICAgY29sdW1uczogbnVtYmVyW107XG4gICAgZ2V0TGF5b3V0czogKGNvbHVtbnM6IG51bWJlcikgPT4gQ29sdW1uc0Jsb2NrTGF5b3V0W107XG4gICAgZ2V0RGVmYXVsdExheW91dDogKGNvbHVtbnM6IG51bWJlcikgPT4gQ29sdW1uc0Jsb2NrTGF5b3V0IHwgdW5kZWZpbmVkO1xufTtcblxuZnVuY3Rpb24gY29sdW1uQ291bnRMYWJlbChpbnRsOiBJbnRsU2hhcGUsIGNvdW50OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiBpbnRsLmZvcm1hdE1lc3NhZ2UoXG4gICAgICAgIHtcbiAgICAgICAgICAgIGlkOiBcImNvbWV0LmJsb2Nrcy5jb2x1bW5zLmNvbHVtblRpdGxlXCIsXG4gICAgICAgICAgICBkZWZhdWx0TWVzc2FnZTogXCJDb2x1bW4ge251bWJlcn1cIixcbiAgICAgICAgfSxcbiAgICAgICAgeyBudW1iZXI6IGNvdW50IH0sXG4gICAgKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlR3JvdXBMYXlvdXRzQnlDb2x1bW5zQXBpKGxheW91dHM6IENvbHVtbnNCbG9ja0xheW91dFtdKTogR3JvdXBlZExheW91dHNCeUNvbHVtbnNBcGkge1xuICAgIGNvbnN0IGdyb3VwZWRMYXlvdXRzID0gbGF5b3V0cy5yZWR1Y2UoKGFjYywgYykgPT4ge1xuICAgICAgICBhY2Muc2V0KGMuY29sdW1ucywgWy4uLihhY2MuZ2V0KGMuY29sdW1ucykgfHwgW10pLCBjXSk7XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgfSwgbmV3IE1hcDxudW1iZXIsIENvbHVtbnNCbG9ja0xheW91dFtdPigpKTtcblxuICAgIHJldHVybiB7XG4gICAgICAgIGNvbHVtbnM6IEFycmF5LmZyb20oZ3JvdXBlZExheW91dHMua2V5cygpKSxcbiAgICAgICAgZ2V0TGF5b3V0czogKGNvbHVtbnM6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGdyb3VwZWRMYXlvdXRzLmdldChjb2x1bW5zKSB8fCBbXTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0RGVmYXVsdExheW91dDogKGNvbHVtbnM6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgY29uc3QgbGF5b3V0cyA9IGdyb3VwZWRMYXlvdXRzLmdldChjb2x1bW5zKSB8fCBbXTtcbiAgICAgICAgICAgIHJldHVybiBsYXlvdXRzLmxlbmd0aCA/IGxheW91dHNbMF0gOiB1bmRlZmluZWQ7XG4gICAgICAgIH0sXG4gICAgfTtcbn1cbiJdfQ== */",
590
584
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__
591
585
  });
592
- var LargeAddButtonIcon = /*#__PURE__*/(0, _styles.styled)(_adminIcons.Add, process.env.NODE_ENV === "production" ? {
586
+ var LargeAddButtonIcon = /*#__PURE__*/styled(Add, process.env.NODE_ENV === "production" ? {
593
587
  target: "eh7qu9y0"
594
588
  } : {
595
589
  target: "eh7qu9y0",