botframework-webchat-component 4.13.0 → 4.14.2

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 (451) hide show
  1. package/.eslintignore +1 -9
  2. package/.eslintrc.yml +6 -0
  3. package/lib/Activity/Avatar.d.ts +10 -0
  4. package/lib/Activity/Avatar.d.ts.map +1 -0
  5. package/lib/Activity/Avatar.js +2 -1
  6. package/lib/Activity/Bubble.d.ts +11 -0
  7. package/lib/Activity/Bubble.d.ts.map +1 -0
  8. package/lib/Activity/Bubble.js +2 -2
  9. package/lib/Activity/CarouselFilmStrip.js +20 -30
  10. package/lib/Activity/CarouselFilmStripAttachment.js +120 -0
  11. package/lib/Activity/CarouselLayout.js +5 -5
  12. package/lib/Activity/Speak.d.ts +10 -0
  13. package/lib/Activity/Speak.d.ts.map +1 -0
  14. package/lib/Activity/Speak.js +10 -12
  15. package/lib/Activity/StackedLayout.d.ts +18 -0
  16. package/lib/Activity/StackedLayout.d.ts.map +1 -0
  17. package/lib/Activity/StackedLayout.js +18 -14
  18. package/lib/Assets/TypingAnimation.js +2 -2
  19. package/lib/Attachment/Assets/DownloadIcon.js +3 -1
  20. package/lib/Attachment/AudioAttachment.js +2 -2
  21. package/lib/Attachment/AudioContent.d.ts +11 -0
  22. package/lib/Attachment/AudioContent.d.ts.map +1 -0
  23. package/lib/Attachment/AudioContent.js +4 -4
  24. package/lib/Attachment/FileContent.d.ts +10 -0
  25. package/lib/Attachment/FileContent.d.ts.map +1 -0
  26. package/lib/Attachment/FileContent.js +4 -9
  27. package/lib/Attachment/HTMLVideoContent.d.ts +11 -0
  28. package/lib/Attachment/HTMLVideoContent.d.ts.map +1 -0
  29. package/lib/Attachment/HTMLVideoContent.js +2 -2
  30. package/lib/Attachment/ImageContent.d.ts +8 -0
  31. package/lib/Attachment/ImageContent.d.ts.map +1 -0
  32. package/lib/Attachment/ImageContent.js +2 -2
  33. package/lib/Attachment/TextContent.d.ts +8 -0
  34. package/lib/Attachment/TextContent.d.ts.map +1 -0
  35. package/lib/Attachment/TextContent.js +4 -4
  36. package/lib/Attachment/VideoAttachment.js +2 -2
  37. package/lib/Attachment/VideoContent.d.ts +11 -0
  38. package/lib/Attachment/VideoContent.d.ts.map +1 -0
  39. package/lib/Attachment/VideoContent.js +1 -1
  40. package/lib/Attachment/VimeoContent.d.ts +10 -0
  41. package/lib/Attachment/VimeoContent.d.ts.map +1 -0
  42. package/lib/Attachment/VimeoContent.js +8 -8
  43. package/lib/Attachment/YouTubeContent.d.ts +10 -0
  44. package/lib/Attachment/YouTubeContent.d.ts.map +1 -0
  45. package/lib/Attachment/YouTubeContent.js +5 -5
  46. package/lib/Avatar/ImageAvatar.js +2 -2
  47. package/lib/Avatar/InitialsAvatar.js +2 -2
  48. package/lib/BasicConnectivityStatus.js +2 -2
  49. package/lib/BasicSendBox.d.ts +9 -0
  50. package/lib/BasicSendBox.d.ts.map +1 -0
  51. package/lib/BasicSendBox.js +6 -5
  52. package/lib/BasicToast.js +4 -4
  53. package/lib/BasicToaster.js +4 -4
  54. package/lib/BasicTranscript.js +143 -123
  55. package/lib/BasicTypingIndicator.d.ts +5 -0
  56. package/lib/BasicTypingIndicator.d.ts.map +1 -0
  57. package/lib/BasicTypingIndicator.js +2 -2
  58. package/lib/BasicWebChat.d.ts +9 -0
  59. package/lib/BasicWebChat.d.ts.map +1 -0
  60. package/lib/BasicWebChat.js +6 -4
  61. package/lib/Composer.d.ts +23 -0
  62. package/lib/Composer.d.ts.map +1 -0
  63. package/lib/Composer.js +33 -55
  64. package/lib/ConnectivityStatus/Assets/ErrorNotificationIcon.js +2 -2
  65. package/lib/ConnectivityStatus/Assets/SpinnerAnimation.js +2 -2
  66. package/lib/ConnectivityStatus/Assets/WarningNotificationIcon.js +2 -2
  67. package/lib/ConnectivityStatus/Connected.js +1 -1
  68. package/lib/ConnectivityStatus/Connecting.js +4 -4
  69. package/lib/ConnectivityStatus/FailedToConnect.js +2 -2
  70. package/lib/ConnectivityStatus/JavaScriptError.js +2 -2
  71. package/lib/Dictation.js +13 -4
  72. package/lib/ErrorBox.d.ts +8 -0
  73. package/lib/ErrorBox.d.ts.map +1 -0
  74. package/lib/ErrorBox.js +2 -2
  75. package/lib/Middleware/Activity/createCoreMiddleware.d.ts +3 -0
  76. package/lib/Middleware/Activity/createCoreMiddleware.d.ts.map +1 -0
  77. package/lib/Middleware/Activity/createCoreMiddleware.js +1 -1
  78. package/lib/Middleware/ActivityStatus/AbsoluteTime.js +1 -1
  79. package/lib/Middleware/ActivityStatus/RelativeTime.js +1 -1
  80. package/lib/Middleware/ActivityStatus/SendStatus/SendFailedRetry.js +3 -3
  81. package/lib/Middleware/ActivityStatus/SendStatus/SendStatus.d.ts +11 -0
  82. package/lib/Middleware/ActivityStatus/SendStatus/SendStatus.d.ts.map +1 -0
  83. package/lib/Middleware/ActivityStatus/SendStatus/SendStatus.js +4 -4
  84. package/lib/Middleware/ActivityStatus/Timestamp.d.ts +9 -0
  85. package/lib/Middleware/ActivityStatus/Timestamp.d.ts.map +1 -0
  86. package/lib/Middleware/ActivityStatus/Timestamp.js +2 -2
  87. package/lib/Middleware/ActivityStatus/createCoreMiddleware.d.ts +3 -0
  88. package/lib/Middleware/ActivityStatus/createCoreMiddleware.d.ts.map +1 -0
  89. package/lib/Middleware/ActivityStatus/createCoreMiddleware.js +1 -1
  90. package/lib/Middleware/ActivityStatus/createSendStatusMiddleware.js +5 -3
  91. package/lib/Middleware/ActivityStatus/createTimestampMiddleware.js +1 -1
  92. package/lib/Middleware/Attachment/createCoreMiddleware.d.ts +3 -0
  93. package/lib/Middleware/Attachment/createCoreMiddleware.d.ts.map +1 -0
  94. package/lib/Middleware/Attachment/createCoreMiddleware.js +9 -9
  95. package/lib/Middleware/AttachmentForScreenReader/AudioAttachment.js +1 -1
  96. package/lib/Middleware/AttachmentForScreenReader/FileAttachment.js +1 -1
  97. package/lib/Middleware/AttachmentForScreenReader/ImageAttachment.js +1 -1
  98. package/lib/Middleware/AttachmentForScreenReader/TextAttachment.js +1 -1
  99. package/lib/Middleware/AttachmentForScreenReader/VideoAttachment.js +1 -1
  100. package/lib/Middleware/AttachmentForScreenReader/createCoreMiddleware.d.ts +3 -0
  101. package/lib/Middleware/AttachmentForScreenReader/createCoreMiddleware.d.ts.map +1 -0
  102. package/lib/Middleware/AttachmentForScreenReader/createCoreMiddleware.js +9 -5
  103. package/lib/Middleware/Avatar/createCoreMiddleware.d.ts +11 -0
  104. package/lib/Middleware/Avatar/createCoreMiddleware.d.ts.map +1 -0
  105. package/lib/Middleware/Avatar/createCoreMiddleware.js +2 -2
  106. package/lib/Middleware/CardAction/createCoreMiddleware.js +2 -2
  107. package/lib/Middleware/GroupActivities/createCoreMiddleware.js +1 -1
  108. package/lib/Middleware/ScrollToEndButton/ScrollToEndButton.js +71 -0
  109. package/lib/Middleware/ScrollToEndButton/createScrollToEndButtonMiddleware.d.ts +3 -0
  110. package/lib/Middleware/ScrollToEndButton/createScrollToEndButtonMiddleware.d.ts.map +1 -0
  111. package/lib/Middleware/ScrollToEndButton/createScrollToEndButtonMiddleware.js +27 -0
  112. package/lib/Middleware/Toast/createCoreMiddleware.d.ts +4 -0
  113. package/lib/Middleware/Toast/createCoreMiddleware.d.ts.map +1 -0
  114. package/lib/Middleware/Toast/createCoreMiddleware.js +1 -1
  115. package/lib/Middleware/TypingIndicator/createCoreMiddleware.d.ts +3 -0
  116. package/lib/Middleware/TypingIndicator/createCoreMiddleware.d.ts.map +1 -0
  117. package/lib/Middleware/TypingIndicator/createCoreMiddleware.js +3 -2
  118. package/lib/ReactWebChat.d.ts +10 -0
  119. package/lib/ReactWebChat.d.ts.map +1 -0
  120. package/lib/ReactWebChat.js +19 -7
  121. package/lib/ScreenReaderActivity.js +64 -45
  122. package/lib/SendBox/Assets/AttachmentIcon.js +3 -1
  123. package/lib/SendBox/Assets/MicrophoneIcon.js +3 -1
  124. package/lib/SendBox/Assets/SendIcon.js +2 -2
  125. package/lib/SendBox/AutoResizeTextArea.d.ts +23 -0
  126. package/lib/SendBox/AutoResizeTextArea.d.ts.map +1 -0
  127. package/lib/SendBox/AutoResizeTextArea.js +6 -6
  128. package/lib/SendBox/DictationInterims.d.ts +9 -0
  129. package/lib/SendBox/DictationInterims.d.ts.map +1 -0
  130. package/lib/SendBox/DictationInterims.js +2 -2
  131. package/lib/SendBox/IconButton.js +2 -2
  132. package/lib/SendBox/MicrophoneButton.d.ts +11 -0
  133. package/lib/SendBox/MicrophoneButton.d.ts.map +1 -0
  134. package/lib/SendBox/MicrophoneButton.js +25 -24
  135. package/lib/SendBox/SendButton.d.ts +9 -0
  136. package/lib/SendBox/SendButton.d.ts.map +1 -0
  137. package/lib/SendBox/SendButton.js +7 -5
  138. package/lib/SendBox/SuggestedAction.js +5 -9
  139. package/lib/SendBox/SuggestedActions.d.ts +5 -0
  140. package/lib/SendBox/SuggestedActions.d.ts.map +1 -0
  141. package/lib/SendBox/SuggestedActions.js +10 -7
  142. package/lib/SendBox/TextBox.d.ts +28 -0
  143. package/lib/SendBox/TextBox.d.ts.map +1 -0
  144. package/lib/SendBox/TextBox.js +12 -7
  145. package/lib/SendBox/UploadButton.d.ts +9 -0
  146. package/lib/SendBox/UploadButton.d.ts.map +1 -0
  147. package/lib/SendBox/UploadButton.js +5 -5
  148. package/lib/Styles/StyleSet/Activities.d.ts +5 -0
  149. package/lib/Styles/StyleSet/Activities.d.ts.map +1 -0
  150. package/lib/Styles/StyleSet/AudioAttachment.d.ts +6 -0
  151. package/lib/Styles/StyleSet/AudioAttachment.d.ts.map +1 -0
  152. package/lib/Styles/StyleSet/AudioContent.d.ts +4 -0
  153. package/lib/Styles/StyleSet/AudioContent.d.ts.map +1 -0
  154. package/lib/Styles/StyleSet/AutoResizeTextArea.d.ts +37 -0
  155. package/lib/Styles/StyleSet/AutoResizeTextArea.d.ts.map +1 -0
  156. package/lib/Styles/StyleSet/Avatar.d.ts +9 -0
  157. package/lib/Styles/StyleSet/Avatar.d.ts.map +1 -0
  158. package/lib/Styles/StyleSet/BasicTranscript.d.ts +77 -0
  159. package/lib/Styles/StyleSet/BasicTranscript.d.ts.map +1 -0
  160. package/lib/Styles/StyleSet/Bubble.d.ts +5 -0
  161. package/lib/Styles/StyleSet/Bubble.d.ts.map +1 -0
  162. package/lib/Styles/StyleSet/Bubble.js +1 -1
  163. package/lib/Styles/StyleSet/CarouselFilmStrip.d.ts +5 -0
  164. package/lib/Styles/StyleSet/CarouselFilmStrip.d.ts.map +1 -0
  165. package/lib/Styles/StyleSet/CarouselFilmStrip.js +2 -18
  166. package/lib/Styles/StyleSet/CarouselFilmStripAttachment.d.ts +3 -0
  167. package/lib/Styles/StyleSet/CarouselFilmStripAttachment.d.ts.map +1 -0
  168. package/lib/Styles/StyleSet/CarouselFilmStripAttachment.js +63 -0
  169. package/lib/Styles/StyleSet/CarouselFlipper.d.ts +27 -0
  170. package/lib/Styles/StyleSet/CarouselFlipper.d.ts.map +1 -0
  171. package/lib/Styles/StyleSet/ConnectivityNotification.d.ts +13 -0
  172. package/lib/Styles/StyleSet/ConnectivityNotification.d.ts.map +1 -0
  173. package/lib/Styles/StyleSet/DictationInterims.d.ts +13 -0
  174. package/lib/Styles/StyleSet/DictationInterims.d.ts.map +1 -0
  175. package/lib/Styles/StyleSet/ErrorBox.d.ts +33 -0
  176. package/lib/Styles/StyleSet/ErrorBox.d.ts.map +1 -0
  177. package/lib/Styles/StyleSet/ErrorNotification.d.ts +23 -0
  178. package/lib/Styles/StyleSet/ErrorNotification.d.ts.map +1 -0
  179. package/lib/Styles/StyleSet/FileContent.d.ts +32 -0
  180. package/lib/Styles/StyleSet/FileContent.d.ts.map +1 -0
  181. package/lib/Styles/StyleSet/ImageAvatar.d.ts +7 -0
  182. package/lib/Styles/StyleSet/ImageAvatar.d.ts.map +1 -0
  183. package/lib/Styles/StyleSet/InitialsAvatar.d.ts +19 -0
  184. package/lib/Styles/StyleSet/InitialsAvatar.d.ts.map +1 -0
  185. package/lib/Styles/StyleSet/MicrophoneButton.d.ts +13 -0
  186. package/lib/Styles/StyleSet/MicrophoneButton.d.ts.map +1 -0
  187. package/lib/Styles/StyleSet/Root.d.ts +8 -0
  188. package/lib/Styles/StyleSet/Root.d.ts.map +1 -0
  189. package/lib/Styles/StyleSet/ScrollToEndButton.d.ts +36 -0
  190. package/lib/Styles/StyleSet/ScrollToEndButton.d.ts.map +1 -0
  191. package/lib/Styles/StyleSet/ScrollToEndButton.js +36 -34
  192. package/lib/Styles/StyleSet/SendBox.d.ts +24 -0
  193. package/lib/Styles/StyleSet/SendBox.d.ts.map +1 -0
  194. package/lib/Styles/StyleSet/SendBoxButton.d.ts +33 -0
  195. package/lib/Styles/StyleSet/SendBoxButton.d.ts.map +1 -0
  196. package/lib/Styles/StyleSet/SendBoxTextBox.d.ts +41 -0
  197. package/lib/Styles/StyleSet/SendBoxTextBox.d.ts.map +1 -0
  198. package/lib/Styles/StyleSet/SendStatus.d.ts +8 -0
  199. package/lib/Styles/StyleSet/SendStatus.d.ts.map +1 -0
  200. package/lib/Styles/StyleSet/SingleAttachmentActivity.d.ts +11 -0
  201. package/lib/Styles/StyleSet/SingleAttachmentActivity.d.ts.map +1 -0
  202. package/lib/Styles/StyleSet/SpinnerAnimation.d.ts +15 -0
  203. package/lib/Styles/StyleSet/SpinnerAnimation.d.ts.map +1 -0
  204. package/lib/Styles/StyleSet/StackedLayout.d.ts +63 -0
  205. package/lib/Styles/StyleSet/StackedLayout.d.ts.map +1 -0
  206. package/lib/Styles/StyleSet/SuggestedAction.d.ts +49 -0
  207. package/lib/Styles/StyleSet/SuggestedAction.d.ts.map +1 -0
  208. package/lib/Styles/StyleSet/SuggestedAction.js +2 -2
  209. package/lib/Styles/StyleSet/SuggestedActions.d.ts +118 -0
  210. package/lib/Styles/StyleSet/SuggestedActions.d.ts.map +1 -0
  211. package/lib/Styles/StyleSet/TextContent.d.ts +28 -0
  212. package/lib/Styles/StyleSet/TextContent.d.ts.map +1 -0
  213. package/lib/Styles/StyleSet/Toast.d.ts +65 -0
  214. package/lib/Styles/StyleSet/Toast.d.ts.map +1 -0
  215. package/lib/Styles/StyleSet/Toaster.d.ts +111 -0
  216. package/lib/Styles/StyleSet/Toaster.d.ts.map +1 -0
  217. package/lib/Styles/StyleSet/TypingAnimation.d.ts +8 -0
  218. package/lib/Styles/StyleSet/TypingAnimation.d.ts.map +1 -0
  219. package/lib/Styles/StyleSet/TypingIndicator.d.ts +11 -0
  220. package/lib/Styles/StyleSet/TypingIndicator.d.ts.map +1 -0
  221. package/lib/Styles/StyleSet/UploadButton.d.ts +14 -0
  222. package/lib/Styles/StyleSet/UploadButton.d.ts.map +1 -0
  223. package/lib/Styles/StyleSet/VideoAttachment.d.ts +2 -0
  224. package/lib/Styles/StyleSet/VideoAttachment.d.ts.map +1 -0
  225. package/lib/Styles/StyleSet/VideoContent.d.ts +6 -0
  226. package/lib/Styles/StyleSet/VideoContent.d.ts.map +1 -0
  227. package/lib/Styles/StyleSet/VimeoContent.d.ts +7 -0
  228. package/lib/Styles/StyleSet/VimeoContent.d.ts.map +1 -0
  229. package/lib/Styles/StyleSet/WarningNotification.d.ts +22 -0
  230. package/lib/Styles/StyleSet/WarningNotification.d.ts.map +1 -0
  231. package/lib/Styles/StyleSet/YouTubeContent.d.ts +7 -0
  232. package/lib/Styles/StyleSet/YouTubeContent.d.ts.map +1 -0
  233. package/lib/Styles/createStyleSet.d.ts +1103 -0
  234. package/lib/Styles/createStyleSet.d.ts.map +1 -0
  235. package/lib/Styles/createStyleSet.js +44 -41
  236. package/lib/Styles/mirrorStyle.js +2 -2
  237. package/lib/Toast/CollapseIcon.js +3 -1
  238. package/lib/Toast/DismissIcon.js +3 -1
  239. package/lib/Toast/ExpandIcon.js +3 -1
  240. package/lib/Toast/NotificationIcon.js +1 -1
  241. package/lib/Toast/createToastMiddleware.d.ts +4 -0
  242. package/lib/Toast/createToastMiddleware.d.ts.map +1 -0
  243. package/lib/Toast/createToastMiddleware.js +2 -2
  244. package/lib/Utils/AccessKeySink/Surface.js +7 -5
  245. package/lib/Utils/AccessibleButton.js +6 -4
  246. package/lib/Utils/AccessibleInputText.d.ts +21 -0
  247. package/lib/Utils/AccessibleInputText.d.ts.map +1 -0
  248. package/lib/Utils/AccessibleInputText.js +29 -25
  249. package/lib/Utils/AccessibleTextArea.d.ts +20 -0
  250. package/lib/Utils/AccessibleTextArea.d.ts.map +1 -0
  251. package/lib/Utils/AccessibleTextArea.js +35 -24
  252. package/lib/Utils/CroppedImage.js +2 -2
  253. package/lib/Utils/Fade.js +2 -2
  254. package/lib/Utils/FocusRedirector.js +3 -3
  255. package/lib/Utils/InlineMarkdown.js +6 -6
  256. package/lib/Utils/TypeFocusSink/FocusBox.js +6 -4
  257. package/lib/Utils/TypeFocusSink/getTabIndex.d.ts +2 -0
  258. package/lib/Utils/TypeFocusSink/getTabIndex.d.ts.map +1 -0
  259. package/lib/Utils/TypeFocusSink/getTabIndex.js +1 -1
  260. package/lib/Utils/TypeFocusSink/navigableEvent.js +1 -1
  261. package/lib/Utils/activityAltText.js +100 -0
  262. package/lib/Utils/addTargetBlankToHyperlinksMarkdown.js +1 -1
  263. package/lib/Utils/createCustomEvent.js +1 -1
  264. package/lib/Utils/debounce.js +1 -1
  265. package/lib/Utils/detectBrowser.js +1 -1
  266. package/lib/Utils/downscaleImageToDataURL/downscaleImageToDataURLUsingWorker.js +2 -2
  267. package/lib/Utils/downscaleImageToDataURL/index.js +2 -2
  268. package/lib/Utils/filterMap.js +1 -1
  269. package/lib/Utils/findLastIndex.js +2 -2
  270. package/lib/Utils/mapMap.js +1 -1
  271. package/lib/Utils/readDataURIToBlob.js +2 -2
  272. package/lib/Utils/singleToArray.js +1 -1
  273. package/lib/connectToWebChat.js +5 -3
  274. package/lib/hooks/index.d.ts +21 -0
  275. package/lib/hooks/index.d.ts.map +1 -0
  276. package/lib/hooks/index.js +1 -1
  277. package/lib/hooks/internal/BypassSpeechSynthesisPonyfill.js +97 -39
  278. package/lib/hooks/internal/UITracker.js +2 -2
  279. package/lib/hooks/internal/useAcknowledgedActivity.js +2 -2
  280. package/lib/hooks/internal/useDispatchScrollPosition.js +1 -1
  281. package/lib/hooks/internal/useDispatchTranscriptFocus.js +1 -1
  282. package/lib/hooks/internal/useEnterKeyHint.js +1 -1
  283. package/lib/hooks/internal/useForceRender.js +2 -2
  284. package/lib/hooks/internal/useForceRenderAtInterval.js +2 -2
  285. package/lib/hooks/internal/useInternalRenderMarkdownInline.js +1 -1
  286. package/lib/hooks/internal/useLocalizeAccessKey.js +2 -2
  287. package/lib/hooks/internal/useMemoize.js +2 -2
  288. package/lib/hooks/internal/useNavigatorPlatform.js +1 -1
  289. package/lib/hooks/internal/useNonce.js +1 -1
  290. package/lib/hooks/internal/useRegisterFocusSendBox.js +1 -1
  291. package/lib/hooks/internal/useRegisterFocusTranscript.js +1 -1
  292. package/lib/hooks/internal/useRegisterScrollRelative.js +1 -1
  293. package/lib/hooks/internal/useRegisterScrollTo.js +1 -1
  294. package/lib/hooks/internal/useRegisterScrollToEnd.js +1 -1
  295. package/lib/hooks/internal/useReplaceEmoticon.js +2 -2
  296. package/lib/hooks/internal/useResumeAudioContext.js +33 -0
  297. package/lib/hooks/internal/useScrollRelative.js +1 -1
  298. package/lib/hooks/internal/useSettableDictateAbortable.js +1 -1
  299. package/lib/hooks/internal/useSuggestedActionsAccessKey.js +1 -1
  300. package/lib/hooks/internal/useUniqueId.d.ts +2 -0
  301. package/lib/hooks/internal/useUniqueId.d.ts.map +1 -0
  302. package/lib/hooks/internal/useUniqueId.js +1 -1
  303. package/lib/hooks/useDictateAbortable.d.ts +2 -0
  304. package/lib/hooks/useDictateAbortable.d.ts.map +1 -0
  305. package/lib/hooks/useDictateAbortable.js +2 -2
  306. package/lib/hooks/useFocus.d.ts +2 -0
  307. package/lib/hooks/useFocus.d.ts.map +1 -0
  308. package/lib/hooks/useFocus.js +1 -1
  309. package/lib/hooks/useFocusSendBox.d.ts +3 -0
  310. package/lib/hooks/useFocusSendBox.d.ts.map +1 -0
  311. package/lib/hooks/useFocusSendBox.js +2 -1
  312. package/lib/hooks/useObserveScrollPosition.d.ts +3 -0
  313. package/lib/hooks/useObserveScrollPosition.d.ts.map +1 -0
  314. package/lib/hooks/useObserveScrollPosition.js +2 -2
  315. package/lib/hooks/useObserveTranscriptFocus.d.ts +5 -0
  316. package/lib/hooks/useObserveTranscriptFocus.d.ts.map +1 -0
  317. package/lib/hooks/useObserveTranscriptFocus.js +2 -2
  318. package/lib/hooks/useRenderMarkdownAsHTML.d.ts +5 -0
  319. package/lib/hooks/useRenderMarkdownAsHTML.d.ts.map +1 -0
  320. package/lib/hooks/useRenderMarkdownAsHTML.js +2 -2
  321. package/lib/hooks/useScrollDown.d.ts +4 -0
  322. package/lib/hooks/useScrollDown.d.ts.map +1 -0
  323. package/lib/hooks/useScrollDown.js +1 -1
  324. package/lib/hooks/useScrollTo.d.ts +5 -0
  325. package/lib/hooks/useScrollTo.d.ts.map +1 -0
  326. package/lib/hooks/useScrollTo.js +1 -1
  327. package/lib/hooks/useScrollToEnd.d.ts +2 -0
  328. package/lib/hooks/useScrollToEnd.d.ts.map +1 -0
  329. package/lib/hooks/useScrollToEnd.js +1 -1
  330. package/lib/hooks/useScrollUp.d.ts +4 -0
  331. package/lib/hooks/useScrollUp.d.ts.map +1 -0
  332. package/lib/hooks/useScrollUp.js +1 -1
  333. package/lib/hooks/useSendFiles.d.ts +2 -0
  334. package/lib/hooks/useSendFiles.d.ts.map +1 -0
  335. package/lib/hooks/useSendFiles.js +3 -3
  336. package/lib/hooks/useStyleSet.d.ts +2 -0
  337. package/lib/hooks/useStyleSet.d.ts.map +1 -0
  338. package/lib/hooks/useStyleSet.js +1 -1
  339. package/lib/hooks/useWebSpeechPonyfill.d.ts +3 -0
  340. package/lib/hooks/useWebSpeechPonyfill.d.ts.map +1 -0
  341. package/lib/hooks/useWebSpeechPonyfill.js +1 -1
  342. package/lib/index.d.ts +209 -22
  343. package/lib/index.d.ts.map +1 -1
  344. package/lib/index.js +19 -19
  345. package/lib/tsconfig.json +1 -1
  346. package/lib/types/ScrollPosition.d.ts +6 -0
  347. package/lib/types/ScrollPosition.d.ts.map +1 -0
  348. package/lib/types/ScrollPosition.js +2 -0
  349. package/package.json +38 -38
  350. package/src/Activity/{Avatar.js → Avatar.tsx} +9 -2
  351. package/src/Activity/{Bubble.js → Bubble.tsx} +10 -2
  352. package/src/Activity/CarouselFilmStrip.js +20 -29
  353. package/src/Activity/CarouselFilmStripAttachment.js +92 -0
  354. package/src/Activity/{Speak.js → Speak.tsx} +12 -5
  355. package/src/Activity/{StackedLayout.js → StackedLayout.tsx} +36 -11
  356. package/src/Attachment/Assets/DownloadIcon.js +8 -1
  357. package/src/Attachment/{AudioContent.js → AudioContent.tsx} +12 -3
  358. package/src/Attachment/{FileContent.js → FileContent.tsx} +10 -7
  359. package/src/Attachment/{HTMLVideoContent.js → HTMLVideoContent.tsx} +10 -2
  360. package/src/Attachment/{ImageContent.js → ImageContent.tsx} +7 -2
  361. package/src/Attachment/{TextContent.js → TextContent.tsx} +14 -7
  362. package/src/Attachment/{VideoContent.js → VideoContent.tsx} +10 -2
  363. package/src/Attachment/{VimeoContent.js → VimeoContent.tsx} +15 -8
  364. package/src/Attachment/{YouTubeContent.js → YouTubeContent.tsx} +12 -5
  365. package/src/{BasicSendBox.js → BasicSendBox.tsx} +9 -5
  366. package/src/BasicToaster.js +4 -4
  367. package/src/BasicTranscript.js +114 -98
  368. package/src/{BasicTypingIndicator.js → BasicTypingIndicator.tsx} +1 -1
  369. package/src/{BasicWebChat.js → BasicWebChat.tsx} +13 -4
  370. package/src/{Composer.js → Composer.tsx} +41 -42
  371. package/src/Dictation.js +13 -4
  372. package/src/{ErrorBox.js → ErrorBox.tsx} +7 -2
  373. package/src/Middleware/Activity/{createCoreMiddleware.js → createCoreMiddleware.tsx} +2 -1
  374. package/src/Middleware/ActivityStatus/SendStatus/{SendStatus.js → SendStatus.tsx} +8 -3
  375. package/src/Middleware/ActivityStatus/{Timestamp.js → Timestamp.tsx} +8 -2
  376. package/src/Middleware/ActivityStatus/{createCoreMiddleware.js → createCoreMiddleware.tsx} +3 -1
  377. package/src/Middleware/ActivityStatus/createSendStatusMiddleware.js +8 -6
  378. package/src/Middleware/ActivityStatus/createTimestampMiddleware.js +10 -8
  379. package/src/Middleware/Attachment/{createCoreMiddleware.js → createCoreMiddleware.tsx} +8 -7
  380. package/src/Middleware/AttachmentForScreenReader/{createCoreMiddleware.js → createCoreMiddleware.tsx} +4 -3
  381. package/src/Middleware/Avatar/{createCoreMiddleware.js → createCoreMiddleware.tsx} +10 -3
  382. package/src/Middleware/CardAction/createCoreMiddleware.js +43 -41
  383. package/src/Middleware/GroupActivities/createCoreMiddleware.js +6 -4
  384. package/src/Middleware/ScrollToEndButton/ScrollToEndButton.js +45 -0
  385. package/src/Middleware/ScrollToEndButton/createScrollToEndButtonMiddleware.ts +17 -0
  386. package/src/Middleware/Toast/{createCoreMiddleware.js → createCoreMiddleware.tsx} +3 -1
  387. package/src/Middleware/TypingIndicator/{createCoreMiddleware.js → createCoreMiddleware.tsx} +3 -4
  388. package/src/{ReactWebChat.js → ReactWebChat.tsx} +25 -7
  389. package/src/ScreenReaderActivity.js +47 -37
  390. package/src/SendBox/Assets/AttachmentIcon.js +1 -1
  391. package/src/SendBox/Assets/MicrophoneIcon.js +1 -1
  392. package/src/SendBox/{AutoResizeTextArea.js → AutoResizeTextArea.tsx} +30 -4
  393. package/src/SendBox/{DictationInterims.js → DictationInterims.tsx} +6 -2
  394. package/src/SendBox/{MicrophoneButton.js → MicrophoneButton.tsx} +35 -25
  395. package/src/SendBox/{SendButton.js → SendButton.tsx} +8 -3
  396. package/src/SendBox/SuggestedAction.js +1 -15
  397. package/src/SendBox/{SuggestedActions.js → SuggestedActions.tsx} +42 -21
  398. package/src/SendBox/{TextBox.js → TextBox.tsx} +21 -7
  399. package/src/SendBox/{UploadButton.js → UploadButton.tsx} +7 -3
  400. package/src/Styles/StyleSet/CarouselFilmStrip.ts +0 -20
  401. package/src/Styles/StyleSet/CarouselFilmStripAttachment.ts +56 -0
  402. package/src/Styles/StyleSet/ScrollToEndButton.ts +33 -31
  403. package/src/Styles/StyleSet/SuggestedAction.ts +1 -1
  404. package/src/Styles/createStyleSet.ts +41 -39
  405. package/src/Toast/CollapseIcon.js +9 -1
  406. package/src/Toast/DismissIcon.js +9 -1
  407. package/src/Toast/ExpandIcon.js +9 -1
  408. package/src/Toast/{createToastMiddleware.js → createToastMiddleware.tsx} +3 -2
  409. package/src/Utils/{AccessibleInputText.js → AccessibleInputText.tsx} +48 -5
  410. package/src/Utils/{AccessibleTextArea.js → AccessibleTextArea.tsx} +67 -6
  411. package/src/Utils/TypeFocusSink/FocusBox.js +4 -4
  412. package/src/Utils/TypeFocusSink/getTabIndex.ts +1 -1
  413. package/src/Utils/activityAltText.ts +135 -0
  414. package/src/Utils/findLastIndex.spec.js +2 -0
  415. package/src/Utils/intersectionOf.spec.js +2 -0
  416. package/src/Utils/mapMap.spec.js +2 -0
  417. package/src/Utils/removeInline.spec.js +2 -0
  418. package/src/Utils/{singleToArray.js → singleToArray.ts} +1 -1
  419. package/src/Utils/walkMarkdownTokens.spec.js +3 -3
  420. package/src/hooks/{index.js → index.ts} +1 -0
  421. package/src/hooks/internal/BypassSpeechSynthesisPonyfill.js +68 -17
  422. package/src/hooks/internal/useMemoize.spec.js +2 -0
  423. package/src/hooks/internal/useResumeAudioContext.ts +7 -0
  424. package/src/hooks/internal/useScrollRelative.js +4 -3
  425. package/src/hooks/internal/{useUniqueId.js → useUniqueId.ts} +1 -1
  426. package/src/hooks/{useDictateAbortable.js → useDictateAbortable.ts} +1 -1
  427. package/src/hooks/{useFocus.js → useFocus.ts} +1 -1
  428. package/src/hooks/{useFocusSendBox.js → useFocusSendBox.ts} +2 -1
  429. package/src/hooks/{useObserveScrollPosition.js → useObserveScrollPosition.ts} +6 -1
  430. package/src/hooks/{useObserveTranscriptFocus.js → useObserveTranscriptFocus.ts} +6 -1
  431. package/src/hooks/{useRenderMarkdownAsHTML.js → useRenderMarkdownAsHTML.ts} +6 -2
  432. package/src/hooks/{useScrollDown.js → useScrollDown.ts} +1 -1
  433. package/src/hooks/{useScrollTo.js → useScrollTo.ts} +5 -1
  434. package/src/hooks/{useScrollToEnd.js → useScrollToEnd.ts} +1 -1
  435. package/src/hooks/{useScrollUp.js → useScrollUp.ts} +1 -1
  436. package/src/hooks/{useSendFiles.js → useSendFiles.ts} +3 -2
  437. package/src/hooks/{useStyleSet.js → useStyleSet.ts} +1 -1
  438. package/src/hooks/useWebSpeechPonyfill.ts +7 -0
  439. package/src/index.ts +7 -11
  440. package/src/tsconfig.json +1 -1
  441. package/src/types/ScrollPosition.ts +6 -0
  442. package/lib/Activity/ScrollToEndButton.js +0 -81
  443. package/lib/Attachment/Assets/ErrorIcon.js +0 -22
  444. package/lib/Utils/remarkStripMarkdown.js +0 -26
  445. package/lib/hooks/internal/useStripMarkdown.js +0 -19
  446. package/src/Activity/ScrollToEndButton.js +0 -58
  447. package/src/Attachment/Assets/ErrorIcon.js +0 -9
  448. package/src/Utils/remarkStripMarkdown.js +0 -13
  449. package/src/hooks/internal/useStripMarkdown.js +0 -7
  450. package/src/hooks/useWebSpeechPonyfill.js +0 -5
  451. package/src/index.tsx +0 -35
@@ -17,6 +17,8 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
17
17
 
18
18
  var _react = _interopRequireWildcard(require("react"));
19
19
 
20
+ var _detectBrowser = require("../Utils/detectBrowser");
21
+
20
22
  var _AccessibleInputText = _interopRequireDefault(require("../Utils/AccessibleInputText"));
21
23
 
22
24
  var _AutoResizeTextArea = _interopRequireDefault(require("./AutoResizeTextArea"));
@@ -41,13 +43,13 @@ var _useStyleSet3 = _interopRequireDefault(require("../hooks/useStyleSet"));
41
43
 
42
44
  var _useStyleToEmotionObject = _interopRequireDefault(require("../hooks/internal/useStyleToEmotionObject"));
43
45
 
44
- function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }
46
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
45
47
 
46
- function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
48
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
47
49
 
48
50
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
49
51
 
50
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
52
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
51
53
 
52
54
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
53
55
 
@@ -61,7 +63,7 @@ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o =
61
63
 
62
64
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
63
65
 
64
- function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
66
+ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
65
67
 
66
68
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
67
69
 
@@ -415,7 +417,10 @@ var TextBox = function TextBox(_ref4) {
415
417
  var current = inputElementRef.current;
416
418
 
417
419
  if (current) {
418
- if (noKeyboard) {
420
+ // The "disable soft keyboard on mobile devices" logic will not work on IE11. It will cause the <input> to become read-only until next focus.
421
+ // Thus, no mobile devices carry IE11 so we don't need to explicitly disable soft keyboard on IE11.
422
+ // See #3757 for repro and details.
423
+ if (noKeyboard && !_detectBrowser.ie11) {
419
424
  // To not activate the virtual keyboard while changing focus to an input, we will temporarily set it as read-only and flip it back.
420
425
  // https://stackoverflow.com/questions/7610758/prevent-iphone-default-keyboard-when-focusing-an-input/7610923
421
426
  var readOnly = current.getAttribute('readonly');
@@ -472,7 +477,7 @@ var TextBox = function TextBox(_ref4) {
472
477
  placeholder: typeYourMessageString,
473
478
  readOnly: disabled,
474
479
  ref: inputElementRef,
475
- rows: "1",
480
+ rows: 1,
476
481
  textAreaClassName: "webchat__send-box-text-box__html-text-area",
477
482
  value: textBoxValue
478
483
  }), disabled && /*#__PURE__*/_react.default.createElement("div", {
@@ -488,4 +493,4 @@ TextBox.propTypes = {
488
493
  };
489
494
  var _default = TextBox;
490
495
  exports.default = _default;
491
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9TZW5kQm94L1RleHRCb3guanMiXSwibmFtZXMiOlsidXNlRGlzYWJsZWQiLCJob29rcyIsInVzZUxvY2FsaXplciIsInVzZVNlbmRCb3hWYWx1ZSIsInVzZVN0b3BEaWN0YXRlIiwidXNlU3R5bGVPcHRpb25zIiwidXNlU3VibWl0U2VuZEJveCIsIlJPT1RfU1RZTEUiLCJkaXNwbGF5IiwiZmxleCIsImNvbm5lY3RTZW5kVGV4dEJveCIsInNlbGVjdG9ycyIsImNvbm5lY3RUb1dlYkNoYXQiLCJkaXNhYmxlZCIsImZvY3VzU2VuZEJveCIsImxhbmd1YWdlIiwic2Nyb2xsVG9FbmQiLCJzZW5kQm94VmFsdWUiLCJzZXRTZW5kQm94Iiwic3RvcERpY3RhdGUiLCJzdWJtaXRTZW5kQm94Iiwib25DaGFuZ2UiLCJ2YWx1ZSIsInRhcmdldCIsIm9uS2V5UHJlc3MiLCJldmVudCIsImtleSIsInNoaWZ0S2V5IiwicHJldmVudERlZmF1bHQiLCJvblN1Ym1pdCIsInVzZVRleHRCb3hTdWJtaXQiLCJmb2N1cyIsInNldEZvY3VzIiwiY29uc29sZSIsIndhcm4iLCJ1c2VUZXh0Qm94VmFsdWUiLCJzZXRWYWx1ZSIsInJlcGxhY2VFbW90aWNvbiIsInNldHRlciIsIm5leHRWYWx1ZSIsInNlbGVjdGlvbkVuZCIsInNlbGVjdGlvblN0YXJ0IiwiRXJyb3IiLCJsZW5ndGgiLCJuZXh0U2VsZWN0aW9uRW5kIiwibmV4dFNlbGVjdGlvblN0YXJ0IiwibmV4dFZhbHVlV2l0aEVtb2ppIiwiUFJFVkVOVF9ERUZBVUxUX0hBTkRMRVIiLCJUZXh0Qm94IiwiY2xhc3NOYW1lIiwic2VuZEJveFRleHRCb3hTdHlsZVNldCIsInNlbmRCb3hUZXh0Qm94Iiwic2VuZEJveFRleHRXcmFwIiwidGV4dEJveFZhbHVlIiwic2V0VGV4dEJveFZhbHVlIiwiaW5wdXRFbGVtZW50UmVmIiwibG9jYWxpemUiLCJwbGFjZUNoZWNrcG9pbnRPbkNoYW5nZVJlZiIsInByZXZJbnB1dFN0YXRlUmVmIiwicm9vdENsYXNzTmFtZSIsInNjcm9sbERvd24iLCJzY3JvbGxVcCIsInN1Ym1pdFRleHRCb3giLCJ1bmRvU3RhY2tSZWYiLCJzZW5kQm94U3RyaW5nIiwidHlwZVlvdXJNZXNzYWdlU3RyaW5nIiwicmVtZW1iZXJJbnB1dFN0YXRlIiwiY3VycmVudCIsInNldFNlbGVjdGlvblJhbmdlQW5kVmFsdWUiLCJoYW5kbGVDaGFuZ2UiLCJwdXNoIiwibmV4dElucHV0U3RhdGUiLCJoYW5kbGVGb2N1cyIsImhhbmRsZUtleURvd24iLCJjdHJsS2V5IiwibWV0YUtleSIsInBvcHBlZElucHV0U3RhdGUiLCJwb3AiLCJoYW5kbGVLZXlQcmVzcyIsImhhbmRsZVNlbGVjdCIsImhhbmRsZVN1Ym1pdCIsImhhbmRsZUtleURvd25DYXB0dXJlIiwiaGFuZGxlZCIsImRpc3BsYWNlbWVudCIsIkluZmluaXR5Iiwic3RvcFByb3BhZ2F0aW9uIiwiZm9jdXNDYWxsYmFjayIsIm5vS2V5Ym9hcmQiLCJyZWFkT25seSIsImdldEF0dHJpYnV0ZSIsInNldEF0dHJpYnV0ZSIsInNldFRpbWVvdXQiLCJyZW1vdmVBdHRyaWJ1dGUiLCJ1bmRlZmluZWQiLCJkZWZhdWx0UHJvcHMiLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJzdHJpbmciXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBRVFBLFcsR0FBa0dDLDZCLENBQWxHRCxXO0lBQWFFLFksR0FBcUZELDZCLENBQXJGQyxZO0lBQWNDLGUsR0FBdUVGLDZCLENBQXZFRSxlO0lBQWlCQyxjLEdBQXNESCw2QixDQUF0REcsYztJQUFnQkMsZSxHQUFzQ0osNkIsQ0FBdENJLGU7SUFBaUJDLGdCLEdBQXFCTCw2QixDQUFyQkssZ0I7QUFFckYsSUFB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QVEsRUFBRWpFLFFBQVEsR0FBR2dGLFNBQUgsR0FBZWQsWUFabkM7QUFhRSxJQUFBLFdBQVcsRUFBRWQscUJBYmY7QUFjRSxJQUFBLFFBQVEsRUFBRXBELFFBZFo7QUFlRSxJQUFBLEdBQUcsRUFBRTBDLGVBZlA7QUFnQkUsSUFBQSxJQUFJLEVBQUMsR0FoQlA7QUFpQkUsSUFBQSxpQkFBaUIsRUFBQyw0Q0FqQnBCO0FBa0JFLElBQUEsS0FBSyxFQUFFRjtBQWxCVCxJQS9CSixFQW9ER3hDLFFBQVEsaUJBQUk7QUFBSyxJQUFBLFNBQVMsRUFBQztBQUFmLElBcERmLENBREY7QUF3REQsQ0FqUkQ7O0FBbVJBbUMsT0FBTyxDQUFDOEMsWUFBUixHQUF1QjtBQUNyQjdDLEVBQUFBLFNBQVMsRUFBRTtBQURVLENBQXZCO0FBSUFELE9BQU8sQ0FBQytDLFNBQVIsR0FBb0I7QUFDbEI5QyxFQUFBQSxTQUFTLEVBQUUrQyxtQkFBVUM7QUFESCxDQUFwQjtlQUllakQsTyIsInNvdXJjZVJvb3QiOiJjb21wb25lbnQ6Ly8vIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaG9va3MgfSBmcm9tICdib3RmcmFtZXdvcmstd2ViY2hhdC1hcGknO1xuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IFJlYWN0LCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZVJlZiB9IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IEFjY2Vzc2libGVJbnB1dFRleHQgZnJvbSAnLi4vVXRpbHMvQWNjZXNzaWJsZUlucHV0VGV4dCc7XG5pbXBvcnQgQXV0b1Jlc2l6ZVRleHRBcmVhIGZyb20gJy4vQXV0b1Jlc2l6ZVRleHRBcmVhJztcbmltcG9ydCBjb25uZWN0VG9XZWJDaGF0IGZyb20gJy4uL2Nvbm5lY3RUb1dlYkNoYXQnO1xuaW1wb3J0IG5hdmlnYWJsZUV2ZW50IGZyb20gJy4uL1V0aWxzL1R5cGVGb2N1c1NpbmsvbmF2aWdhYmxlRXZlbnQnO1xuaW1wb3J0IHVzZUZvY3VzIGZyb20gJy4uL2hvb2tzL3VzZUZvY3VzJztcbmltcG9ydCB1c2VSZWdpc3RlckZvY3VzU2VuZEJveCBmcm9tICcuLi9ob29rcy9pbnRlcm5hbC91c2VSZWdpc3RlckZvY3VzU2VuZEJveCc7XG5pbXBvcnQgdXNlUmVwbGFjZUVtb3RpY29uIGZyb20gJy4uL2hvb2tzL2ludGVybmFsL3VzZVJlcGxhY2VFbW90aWNvbic7XG5pbXBvcnQgdXNlU2Nyb2xsRG93biBmcm9tICcuLi9ob29rcy91c2VTY3JvbGxEb3duJztcbmltcG9ydCB1c2VTY3JvbGxUb0VuZCBmcm9tICcuLi9ob29rcy91c2VTY3JvbGxUb0VuZCc7XG5pbXBvcnQgdXNlU2Nyb2xsVXAgZnJvbSAnLi4vaG9va3MvdXNlU2Nyb2xsVXAnO1xuaW1wb3J0IHVzZVN0eWxlU2V0IGZyb20gJy4uL2hvb2tzL3VzZVN0eWxlU2V0JztcbmltcG9ydCB1c2VTdHlsZVRvRW1vdGlvbk9iamVjdCBmcm9tICcuLi9ob29rcy9pbnRlcm5hbC91c2VTdHlsZVRvRW1vdGlvbk9iamVjdCc7XG5cbmNvbnN0IHsgdXNlRGlzYWJsZWQsIHVzZUxvY2FsaXplciwgdXNlU2VuZEJveFZhbHVlLCB1c2VTdG9wRGljdGF0ZSwgdXNlU3R5bGVPcHRpb25zLCB1c2VTdWJtaXRTZW5kQm94IH0gPSBob29rcztcblxuY29uc3QgUk9PVF9TVFlMRSA9IHtcbiAgJyYud2ViY2hhdF9fc2VuZC1ib3gtdGV4dC1ib3gnOiB7XG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuXG4gICAgJyYgLndlYmNoYXRfX3NlbmQtYm94LXRleHQtYm94X19pbnB1dCwgJiAud2ViY2hhdF9fc2VuZC1ib3gtdGV4dC1ib3hfX3RleHQtYXJlYSc6IHtcbiAgICAgIGZsZXg6IDFcbiAgICB9XG4gIH1cbn07XG5cbmNvbnN0IGNvbm5lY3RTZW5kVGV4dEJveCA9ICguLi5zZWxlY3RvcnMpID0+XG4gIGNvbm5lY3RUb1dlYkNoYXQoXG4gICAgKHsgZGlzYWJsZWQsIGZvY3VzU2VuZEJveCwgbGFuZ3VhZ2UsIHNjcm9sbFRvRW5kLCBzZW5kQm94VmFsdWUsIHNldFNlbmRCb3gsIHN0b3BEaWN0YXRlLCBzdWJtaXRTZW5kQm94IH0pID0+ICh7XG4gICAgICBkaXNhYmxlZCxcbiAgICAgIGxhbmd1YWdlLFxuICAgICAgb25DaGFuZ2U6ICh7IHRhcmdldDogeyB2YWx1ZSB9IH0pID0+IHtcbiAgICAgICAgc2V0U2VuZEJveCh2YWx1ZSk7XG4gICAgICAgIHN0b3BEaWN0YXRlKCk7XG4gICAgICB9LFxuICAgICAgb25LZXlQcmVzczogZXZlbnQgPT4ge1xuICAgICAgICBjb25zdCB7IGtleSwgc2hpZnRLZXkgfSA9IGV2ZW50O1xuXG4gICAgICAgIGlmIChrZXkgPT09ICdFbnRlcicgJiYgIXNoaWZ0S2V5KSB7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICAgIGlmIChzZW5kQm94VmFsdWUpIHtcbiAgICAgICAgICAgIHNjcm9sbFRvRW5kKCk7XG4gICAgICAgICAgICBzdWJtaXRTZW5kQm94KCk7XG4gICAgICAgICAgICBmb2N1c1NlbmRCb3goKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBvblN1Ym1pdDogZXZlbnQgPT4ge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgIC8vIENvbnNpZGVyIGNsZWFyaW5nIHRoZSBzZW5kIGJveCBvbmx5IGFmdGVyIHdlIHJlY2VpdmVkIFBPU1RfQUNUSVZJVFlfUEVORElOR1xuICAgICAgICAvLyBFLmcuIGlmIHRoZSBjb25uZWN0aW9uIGlzIGJhZCwgc2VuZGluZyB0aGUgbWVzc2FnZSBlc3NlbnRpYWxseSBkbyBub3RoaW5nIGJ1dCBqdXN0IGNsZWFyaW5nIHRoZSBzZW5kIGJveFxuXG4gICAgICAgIGlmIChzZW5kQm94VmFsdWUpIHtcbiAgICAgICAgICBzY3JvbGxUb0VuZCgpO1xuICAgICAgICAgIHN1Ym1pdFNlbmRCb3goKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHZhbHVlOiBzZW5kQm94VmFsdWVcbiAgICB9KSxcbiAgICAuLi5zZWxlY3RvcnNcbiAgKTtcblxuZnVuY3Rpb24gdXNlVGV4dEJveFN1Ym1pdCgpIHtcbiAgY29uc3QgW3NlbmRCb3hWYWx1ZV0gPSB1c2VTZW5kQm94VmFsdWUoKTtcbiAgY29uc3QgZm9jdXMgPSB1c2VGb2N1cygpO1xuICBjb25zdCBzY3JvbGxUb0VuZCA9IHVzZVNjcm9sbFRvRW5kKCk7XG4gIGNvbnN0IHN1Ym1pdFNlbmRCb3ggPSB1c2VTdWJtaXRTZW5kQm94KCk7XG5cbiAgcmV0dXJuIHVzZUNhbGxiYWNrKFxuICAgIHNldEZvY3VzID0+IHtcbiAgICAgIGlmIChzZW5kQm94VmFsdWUpIHtcbiAgICAgICAgc2Nyb2xsVG9FbmQoKTtcbiAgICAgICAgc3VibWl0U2VuZEJveCgpO1xuXG4gICAgICAgIGlmIChzZXRGb2N1cykge1xuICAgICAgICAgIGlmIChzZXRGb2N1cyA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgICBgXCJib3RmcmFtZXdvcmstd2ViY2hhdDogUGFzc2luZyBcInRydWVcIiB0byBcInVzZVRleHRCb3hTdWJtaXRcIiBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgb24gb3IgYWZ0ZXIgMjAyMi0wNC0yMy4gUGxlYXNlIHBhc3MgXCJzZW5kQm94XCIgaW5zdGVhZC5cImBcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGZvY3VzKCdzZW5kQm94Jyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZvY3VzKHNldEZvY3VzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuICEhc2VuZEJveFZhbHVlO1xuICAgIH0sXG4gICAgW2ZvY3VzLCBzY3JvbGxUb0VuZCwgc2VuZEJveFZhbHVlLCBzdWJtaXRTZW5kQm94XVxuICApO1xufVxuXG5mdW5jdGlvbiB1c2VUZXh0Qm94VmFsdWUoKSB7XG4gIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gdXNlU2VuZEJveFZhbHVlKCk7XG4gIGNvbnN0IHJlcGxhY2VFbW90aWNvbiA9IHVzZVJlcGxhY2VFbW90aWNvbigpO1xuICBjb25zdCBzdG9wRGljdGF0ZSA9IHVzZVN0b3BEaWN0YXRlKCk7XG5cbiAgY29uc3Qgc2V0dGVyID0gdXNlQ2FsbGJhY2soXG4gICAgKG5leHRWYWx1ZSwgeyBzZWxlY3Rpb25FbmQsIHNlbGVjdGlvblN0YXJ0IH0gPSB7fSkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBuZXh0VmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignYm90ZnJhbWV3b3JrLXdlYmNoYXQ6IEZpcnN0IGFyZ3VtZW50IHBhc3NlZCB0byB1c2VUZXh0Qm94VmFsdWUoKSBtdXN0IGJlIGEgc3RyaW5nLicpO1xuICAgICAgfVxuXG4gICAgICAvLyBDdXJyZW50bHksIHdlIGNhbm5vdCBkZXRlY3Qgd2hldGhlciB0aGUgY2hhbmdlIGlzIGR1ZSB0byBjbGlwYm9hcmQgcGFzdGUgb3IgcHJlc3NpbmcgYSBrZXkgb24gdGhlIGtleWJvYXJkLlxuICAgICAgLy8gV2Ugc2hvdWxkIG5vdCBjaGFuZ2UgdG8gZW1vamkgd2hlbiB0aGUgdXNlciBpcyBwYXN0aW5nIHRleHQuXG4gICAgICAvLyBXZSB3b3VsZCBhc3N1bWUsIGZvciBhIHNpbmdsZSBjaGFyYWN0ZXIgYWRkaXRpb24sIHRoZSB1c2VyIG11c3QgYmUgcHJlc3NpbmcgYSBrZXkuXG4gICAgICBpZiAobmV4dFZhbHVlLmxlbmd0aCA9PT0gdmFsdWUubGVuZ3RoICsgMSkge1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgc2VsZWN0aW9uRW5kOiBuZXh0U2VsZWN0aW9uRW5kLFxuICAgICAgICAgIHNlbGVjdGlvblN0YXJ0OiBuZXh0U2VsZWN0aW9uU3RhcnQsXG4gICAgICAgICAgdmFsdWU6IG5leHRWYWx1ZVdpdGhFbW9qaVxuICAgICAgICB9ID0gcmVwbGFjZUVtb3RpY29uKHsgc2VsZWN0aW9uRW5kLCBzZWxlY3Rpb25TdGFydCwgdmFsdWU6IG5leHRWYWx1ZSB9KTtcblxuICAgICAgICBzZWxlY3Rpb25FbmQgPSBuZXh0U2VsZWN0aW9uRW5kO1xuICAgICAgICBzZWxlY3Rpb25TdGFydCA9IG5leHRTZWxlY3Rpb25TdGFydDtcbiAgICAgICAgbmV4dFZhbHVlID0gbmV4dFZhbHVlV2l0aEVtb2ppO1xuICAgICAgfVxuXG4gICAgICBzZXRWYWx1ZShuZXh0VmFsdWUpO1xuICAgICAgc3RvcERpY3RhdGUoKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc2VsZWN0aW9uRW5kLFxuICAgICAgICBzZWxlY3Rpb25TdGFydCxcbiAgICAgICAgdmFsdWU6IG5leHRWYWx1ZVxuICAgICAgfTtcbiAgICB9LFxuICAgIFtyZXBsYWNlRW1vdGljb24sIHNldFZhbHVlLCBzdG9wRGljdGF0ZSwgdmFsdWVdXG4gICk7XG5cbiAgcmV0dXJuIFt2YWx1ZSwgc2V0dGVyXTtcbn1cblxuY29uc3QgUFJFVkVOVF9ERUZBVUxUX0hBTkRMRVIgPSBldmVudCA9PiBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG5jb25zdCBUZXh0Qm94ID0gKHsgY2xhc3NOYW1lIH0pID0+IHtcbiAgY29uc3QgWywgc2V0U2VuZEJveF0gPSB1c2VTZW5kQm94VmFsdWUoKTtcbiAgY29uc3QgW3sgc2VuZEJveFRleHRCb3g6IHNlbmRCb3hUZXh0Qm94U3R5bGVTZXQgfV0gPSB1c2VTdHlsZVNldCgpO1xuICBjb25zdCBbeyBzZW5kQm94VGV4dFdyYXAgfV0gPSB1c2VTdHlsZU9wdGlvbnMoKTtcbiAgY29uc3QgW2Rpc2FibGVkXSA9IHVzZURpc2FibGVkKCk7XG4gIGNvbnN0IFt0ZXh0Qm94VmFsdWUsIHNldFRleHRCb3hWYWx1ZV0gPSB1c2VUZXh0Qm94VmFsdWUoKTtcbiAgY29uc3QgaW5wdXRFbGVtZW50UmVmID0gdXNlUmVmKCk7XG4gIGNvbnN0IGxvY2FsaXplID0gdXNlTG9jYWxpemVyKCk7XG4gIGNvbnN0IHBsYWNlQ2hlY2twb2ludE9uQ2hhbmdlUmVmID0gdXNlUmVmKGZhbHNlKTtcbiAgY29uc3QgcHJldklucHV0U3RhdGVSZWYgPSB1c2VSZWYoKTtcbiAgY29uc3Qgcm9vdENsYXNzTmFtZSA9IHVzZVN0eWxlVG9FbW90aW9uT2JqZWN0KCkoUk9PVF9TVFlMRSkgKyAnJztcbiAgY29uc3Qgc2Nyb2xsRG93biA9IHVzZVNjcm9sbERvd24oKTtcbiAgY29uc3Qgc2Nyb2xsVXAgPSB1c2VTY3JvbGxVcCgpO1xuICBjb25zdCBzdWJtaXRUZXh0Qm94ID0gdXNlVGV4dEJveFN1Ym1pdCgpO1xuICBjb25zdCB1bmRvU3RhY2tSZWYgPSB1c2VSZWYoW10pO1xuXG4gIGNvbnN0IHNlbmRCb3hTdHJpbmcgPSBsb2NhbGl6ZSgnVEVYVF9JTlBVVF9BTFQnKTtcbiAgY29uc3QgdHlwZVlvdXJNZXNzYWdlU3RyaW5nID0gbG9jYWxpemUoJ1RFWFRfSU5QVVRfUExBQ0VIT0xERVInKTtcblxuICBjb25zdCByZW1lbWJlcklucHV0U3RhdGUgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgY3VycmVudDogeyBzZWxlY3Rpb25FbmQsIHNlbGVjdGlvblN0YXJ0LCB2YWx1ZSB9XG4gICAgfSA9IGlucHV0RWxlbWVudFJlZjtcblxuICAgIHByZXZJbnB1dFN0YXRlUmVmLmN1cnJlbnQgPSB7IHNlbGVjdGlvbkVuZCwgc2VsZWN0aW9uU3RhcnQsIHZhbHVlIH07XG4gIH0sIFtpbnB1dEVsZW1lbnRSZWYsIHByZXZJbnB1dFN0YXRlUmVmXSk7XG5cbiAgLy8gVGhpcyBpcyBmb3IgVHlwZUZvY3VzU2luay4gV2hlbiB0aGUgZm9jdXMgaW4gb24gdGhlIHNjcmlwdCwgdGhlbiBzdGFydGluZyBwcmVzcyBcImFcIiwgd2l0aG91dCB0aGlzIGxpbmUsIGl0IHdvdWxkIGNhdXNlIGVycm9ycy5cbiAgLy8gV2UgY2FsbCByZW1lbWJlcklucHV0U3RhdGUoKSB3aGVuIFwib25Gb2N1c1wiIGV2ZW50IGlzIGZpcmVkLCBidXQgc2luY2UgdGhpcyBpcyBmcm9tIFR5cGVGb2N1c1NpbmssIHdlIGFyZSBub3QgYWJsZSB0byByZWNlaXZlIFwib25Gb2N1c1wiIGV2ZW50IGJlZm9yZSBpdCBoYXBwZW4uXG4gIHVzZUVmZmVjdChyZW1lbWJlcklucHV0U3RhdGUsIFtyZW1lbWJlcklucHV0U3RhdGVdKTtcblxuICAvLyBUaGlzIGlzIGZvciBtb3ZpbmcgdGhlIHNlbGVjdGlvbiB3aGlsZSBzZXR0aW5nIHRoZSBzZW5kIGJveCB2YWx1ZS5cbiAgLy8gSWYgd2Ugb25seSB1c2Ugc2V0U2VuZEJveCwgd2Ugd2lsbCBuZWVkIHRvIHdhaXQgZm9yIHRoZSBuZXh0IHJlbmRlciBjeWNsZSB0byBnZXQgdGhlIHZhbHVlIGluLCBiZWZvcmUgd2UgY2FuIHNldCBzZWxlY3Rpb25FbmQvU3RhcnQuXG4gIGNvbnN0IHNldFNlbGVjdGlvblJhbmdlQW5kVmFsdWUgPSB1c2VDYWxsYmFjayhcbiAgICAoeyBzZWxlY3Rpb25FbmQsIHNlbGVjdGlvblN0YXJ0LCB2YWx1ZSB9KSA9PiB7XG4gICAgICBpZiAoaW5wdXRFbGVtZW50UmVmLmN1cnJlbnQpIHtcbiAgICAgICAgLy8gV2UgbmVlZCB0byBzZXQgdGhlIHZhbHVlLCBiZWZvcmUgc2VsZWN0aW9uU3RhcnQvc2VsZWN0aW9uRW5kLlxuICAgICAgICBpbnB1dEVsZW1lbnRSZWYuY3VycmVudC52YWx1ZSA9IHZhbHVlO1xuXG4gICAgICAgIGlucHV0RWxlbWVudFJlZi5jdXJyZW50LnNlbGVjdGlvblN0YXJ0ID0gc2VsZWN0aW9uU3RhcnQ7XG4gICAgICAgIGlucHV0RWxlbWVudFJlZi5jdXJyZW50LnNlbGVjdGlvbkVuZCA9IHNlbGVjdGlvbkVuZDtcbiAgICAgIH1cblxuICAgICAgc2V0U2VuZEJveCh2YWx1ZSk7XG4gICAgfSxcbiAgICBbaW5wdXRFbGVtZW50UmVmLCBzZXRTZW5kQm94XVxuICApO1xuXG4gIGNvbnN0IGhhbmRsZUNoYW5nZSA9IHVzZUNhbGxiYWNrKFxuICAgIGV2ZW50ID0+IHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgdGFyZ2V0OiB7IHNlbGVjdGlvbkVuZCwgc2VsZWN0aW9uU3RhcnQsIHZhbHVlIH1cbiAgICAgIH0gPSBldmVudDtcblxuICAgICAgaWYgKHBsYWNlQ2hlY2twb2ludE9uQ2hhbmdlUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgdW5kb1N0YWNrUmVmLmN1cnJlbnQucHVzaCh7IC4uLnByZXZJbnB1dFN0YXRlUmVmLmN1cnJlbnQgfSk7XG5cbiAgICAgICAgcGxhY2VDaGVja3BvaW50T25DaGFuZ2VSZWYuY3VycmVudCA9IGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBuZXh0SW5wdXRTdGF0ZSA9IHNldFRleHRCb3hWYWx1ZSh2YWx1ZSwgeyBzZWxlY3Rpb25FbmQsIHNlbGVjdGlvblN0YXJ0IH0pO1xuXG4gICAgICAvLyBJZiBhbiBlbW90aWNvbiBpcyBjb252ZXJ0ZWQgdG8gZW1vamksIHBsYWNlIGFub3RoZXIgY2hlY2twb2ludC5cbiAgICAgIGlmIChuZXh0SW5wdXRTdGF0ZS52YWx1ZSAhPT0gdmFsdWUpIHtcbiAgICAgICAgdW5kb1N0YWNrUmVmLmN1cnJlbnQucHVzaCh7IHNlbGVjdGlvbkVuZCwgc2VsZWN0aW9uU3RhcnQsIHZhbHVlIH0pO1xuXG4gICAgICAgIHBsYWNlQ2hlY2twb2ludE9uQ2hhbmdlUmVmLmN1cnJlbnQgPSB0cnVlO1xuXG4gICAgICAgIHNldFNlbGVjdGlvblJhbmdlQW5kVmFsdWUobmV4dElucHV0U3RhdGUpO1xuICAgICAgfVxuICAgIH0sXG4gICAgW3BsYWNlQ2hlY2twb2ludE9uQ2hhbmdlUmVmLCBwcmV2SW5wdXRTdGF0ZVJlZiwgc2V0U2VsZWN0aW9uUmFuZ2VBbmRWYWx1ZSwgc2V0VGV4dEJveFZhbHVlLCB1bmRvU3RhY2tSZWZdXG4gICk7XG5cbiAgY29uc3QgaGFuZGxlRm9jdXMgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgcmVtZW1iZXJJbnB1dFN0YXRlKCk7XG5cbiAgICBwbGFjZUNoZWNrcG9pbnRPbkNoYW5nZVJlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgfSwgW3BsYWNlQ2hlY2twb2ludE9uQ2hhbmdlUmVmLCByZW1lbWJlcklucHV0U3RhdGVdKTtcblxuICBjb25zdCBoYW5kbGVLZXlEb3duID0gdXNlQ2FsbGJhY2soXG4gICAgZXZlbnQgPT4ge1xuICAgICAgY29uc3QgeyBjdHJsS2V5LCBrZXksIG1ldGFLZXkgfSA9IGV2ZW50O1xuXG4gICAgICBpZiAoKGN0cmxLZXkgfHwgbWV0YUtleSkgJiYgKGtleSA9PT0gJ1onIHx8IGtleSA9PT0gJ3onKSkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgIGNvbnN0IHBvcHBlZElucHV0U3RhdGUgPSB1bmRvU3RhY2tSZWYuY3VycmVudC5wb3AoKTtcblxuICAgICAgICBpZiAocG9wcGVkSW5wdXRTdGF0ZSkge1xuICAgICAgICAgIHByZXZJbnB1dFN0YXRlUmVmLmN1cnJlbnQgPSB7IC4uLnBvcHBlZElucHV0U3RhdGUgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwcmV2SW5wdXRTdGF0ZVJlZi5jdXJyZW50ID0geyBzZWxlY3Rpb25FbmQ6IDAsIHNlbGVjdGlvblN0YXJ0OiAwLCB2YWx1ZTogJycgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNldFNlbGVjdGlvblJhbmdlQW5kVmFsdWUocHJldklucHV0U3RhdGVSZWYuY3VycmVudCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBbcHJldklucHV0U3RhdGVSZWYsIHNldFNlbGVjdGlvblJhbmdlQW5kVmFsdWUsIHVuZG9TdGFja1JlZl1cbiAgKTtcblxuICBjb25zdCBoYW5kbGVLZXlQcmVzcyA9IHVzZUNhbGxiYWNrKFxuICAgIGV2ZW50ID0+IHtcbiAgICAgIGNvbnN0IHsga2V5LCBzaGlmdEtleSB9ID0gZXZlbnQ7XG5cbiAgICAgIGlmIChrZXkgPT09ICdFbnRlcicgJiYgIXNoaWZ0S2V5KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgLy8gSWYgdGV4dCBib3ggaXMgc3VibWl0dGVkLCBmb2N1cyBvbiB0aGUgc2VuZCBib3hcbiAgICAgICAgc3VibWl0VGV4dEJveCgnc2VuZEJveCcpO1xuXG4gICAgICAgIC8vIEFmdGVyIHN1Ym1pdCwgd2Ugd2lsbCBjbGVhciB0aGUgdW5kbyBzdGFjay5cbiAgICAgICAgdW5kb1N0YWNrUmVmLmN1cnJlbnQgPSBbXTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFtzdWJtaXRUZXh0Qm94LCB1bmRvU3RhY2tSZWZdXG4gICk7XG5cbiAgY29uc3QgaGFuZGxlU2VsZWN0ID0gdXNlQ2FsbGJhY2soXG4gICAgKHsgdGFyZ2V0OiB7IHNlbGVjdGlvbkVuZCwgc2VsZWN0aW9uU3RhcnQsIHZhbHVlIH0gfSkgPT4ge1xuICAgICAgaWYgKHZhbHVlID09PSBwcmV2SW5wdXRTdGF0ZVJlZi5jdXJyZW50LnZhbHVlKSB7XG4gICAgICAgIC8vIFdoZW4gY2FyZXQgbW92ZSwgd2Ugc2hvdWxkIHB1c2ggdG8gdW5kbyBzdGFjayBvbiBjaGFuZ2UuXG4gICAgICAgIHBsYWNlQ2hlY2twb2ludE9uQ2hhbmdlUmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBwcmV2SW5wdXRTdGF0ZVJlZi5jdXJyZW50ID0geyBzZWxlY3Rpb25FbmQsIHNlbGVjdGlvblN0YXJ0LCB2YWx1ZSB9O1xuICAgIH0sXG4gICAgW3BsYWNlQ2hlY2twb2ludE9uQ2hhbmdlUmVmLCBwcmV2SW5wdXRTdGF0ZVJlZl1cbiAgKTtcblxuICBjb25zdCBoYW5kbGVTdWJtaXQgPSB1c2VDYWxsYmFjayhcbiAgICBldmVudCA9PiB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAvLyBDb25zaWRlciBjbGVhcmluZyB0aGUgc2VuZCBib3ggb25seSBhZnRlciB3ZSByZWNlaXZlZCBQT1NUX0FDVElWSVRZX1BFTkRJTkdcbiAgICAgIC8vIEUuZy4gaWYgdGhlIGNvbm5lY3Rpb24gaXMgYmFkLCBzZW5kaW5nIHRoZSBtZXNzYWdlIGVzc2VudGlhbGx5IGRvIG5vdGhpbmcgYnV0IGp1c3QgY2xlYXJpbmcgdGhlIHNlbmQgYm94XG4gICAgICBzdWJtaXRUZXh0Qm94KCk7XG5cbiAgICAgIC8vIEFmdGVyIHN1Ym1pdCwgd2Ugd2lsbCBjbGVhciB0aGUgdW5kbyBzdGFjay5cbiAgICAgIHVuZG9TdGFja1JlZi5jdXJyZW50ID0gW107XG4gICAgfSxcbiAgICBbc3VibWl0VGV4dEJveCwgdW5kb1N0YWNrUmVmXVxuICApO1xuXG4gIGNvbnN0IGhhbmRsZUtleURvd25DYXB0dXJlID0gdXNlQ2FsbGJhY2soXG4gICAgZXZlbnQgPT4ge1xuICAgICAgY29uc3QgeyBjdHJsS2V5LCBtZXRhS2V5LCBzaGlmdEtleSB9ID0gZXZlbnQ7XG5cbiAgICAgIGlmIChjdHJsS2V5IHx8IG1ldGFLZXkgfHwgc2hpZnRLZXkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBOYXZpZ2FibGUgZXZlbnQgbWVhbnMgdGhlIGVuZC11c2VyIGlzIGZvY3VzaW5nIG9uIGFuIGlucHV0dGFibGUgZWxlbWVudCwgYnV0IGl0IGlzIG9rYXkgdG8gY2FwdHVyZSB0aGUgYXJyb3cga2V5cy5cbiAgICAgIGlmIChuYXZpZ2FibGVFdmVudChldmVudCkpIHtcbiAgICAgICAgbGV0IGhhbmRsZWQgPSB0cnVlO1xuXG4gICAgICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICAgICAgY2FzZSAnRW5kJzpcbiAgICAgICAgICAgIHNjcm9sbERvd24oeyBkaXNwbGFjZW1lbnQ6IEluZmluaXR5IH0pO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICdIb21lJzpcbiAgICAgICAgICAgIHNjcm9sbFVwKHsgZGlzcGxhY2VtZW50OiBJbmZpbml0eSB9KTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSAnUGFnZURvd24nOlxuICAgICAgICAgICAgc2Nyb2xsRG93bigpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICdQYWdlVXAnOlxuICAgICAgICAgICAgc2Nyb2xsVXAoKTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIGhhbmRsZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGhhbmRsZWQpIHtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBbc2Nyb2xsRG93biwgc2Nyb2xsVXBdXG4gICk7XG5cbiAgY29uc3QgZm9jdXNDYWxsYmFjayA9IHVzZUNhbGxiYWNrKFxuICAgICh7IG5vS2V5Ym9hcmQgfSA9IHt9KSA9PiB7XG4gICAgICBjb25zdCB7IGN1cnJlbnQgfSA9IGlucHV0RWxlbWVudFJlZjtcblxuICAgICAgaWYgKGN1cnJlbnQpIHtcbiAgICAgICAgaWYgKG5vS2V5Ym9hcmQpIHtcbiAgICAgICAgICAvLyBUbyBub3QgYWN0aXZhdGUgdGhlIHZpcnR1YWwga2V5Ym9hcmQgd2hpbGUgY2hhbmdpbmcgZm9jdXMgdG8gYW4gaW5wdXQsIHdlIHdpbGwgdGVtcG9yYXJpbHkgc2V0IGl0IGFzIHJlYWQtb25seSBhbmQgZmxpcCBpdCBiYWNrLlxuICAgICAgICAgIC8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzc2MTA3NTgvcHJldmVudC1pcGhvbmUtZGVmYXVsdC1rZXlib2FyZC13aGVuLWZvY3VzaW5nLWFuLWlucHV0Lzc2MTA5MjNcbiAgICAgICAgICBjb25zdCByZWFkT25seSA9IGN1cnJlbnQuZ2V0QXR0cmlidXRlKCdyZWFkb25seScpO1xuXG4gICAgICAgICAgY3VycmVudC5zZXRBdHRyaWJ1dGUoJ3JlYWRvbmx5JywgJ3JlYWRvbmx5Jyk7XG5cbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsgY3VycmVudCB9ID0gaW5wdXRFbGVtZW50UmVmO1xuXG4gICAgICAgICAgICBpZiAoY3VycmVudCkge1xuICAgICAgICAgICAgICBjdXJyZW50LmZvY3VzKCk7XG4gICAgICAgICAgICAgIHJlYWRPbmx5ID8gY3VycmVudC5zZXRBdHRyaWJ1dGUoJ3JlYWRvbmx5JywgcmVhZE9ubHkpIDogY3VycmVudC5yZW1vdmVBdHRyaWJ1dGUoJ3JlYWRvbmx5Jyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSwgMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY3VycmVudC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBbaW5wdXRFbGVtZW50UmVmXVxuICApO1xuXG4gIHVzZVJlZ2lzdGVyRm9jdXNTZW5kQm94KGZvY3VzQ2FsbGJhY2spO1xuXG4gIHJldHVybiAoXG4gICAgPGZvcm1cbiAgICAgIGFyaWEtZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKFxuICAgICAgICAnd2ViY2hhdF9fc2VuZC1ib3gtdGV4dC1ib3gnLFxuICAgICAgICByb290Q2xhc3NOYW1lLFxuICAgICAgICBzZW5kQm94VGV4dEJveFN0eWxlU2V0ICsgJycsXG4gICAgICAgIChjbGFzc05hbWUgfHwgJycpICsgJydcbiAgICAgICl9XG4gICAgICBvblN1Ym1pdD17ZGlzYWJsZWQgPyBQUkVWRU5UX0RFRkFVTFRfSEFORExFUiA6IGhhbmRsZVN1Ym1pdH1cbiAgICA+XG4gICAgICB7IXNlbmRCb3hUZXh0V3JhcCA/IChcbiAgICAgICAgPEFjY2Vzc2libGVJbnB1dFRleHRcbiAgICAgICAgICBhcmlhLWxhYmVsPXtzZW5kQm94U3RyaW5nfVxuICAgICAgICAgIGNsYXNzTmFtZT1cIndlYmNoYXRfX3NlbmQtYm94LXRleHQtYm94X19pbnB1dFwiXG4gICAgICAgICAgZGF0YS1pZD1cIndlYmNoYXQtc2VuZGJveC1pbnB1dFwiXG4gICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICAgIGVudGVyS2V5SGludD1cInNlbmRcIlxuICAgICAgICAgIGlucHV0TW9kZT1cInRleHRcIlxuICAgICAgICAgIG9uQ2hhbmdlPXtkaXNhYmxlZCA/IHVuZGVmaW5lZCA6IGhhbmRsZUNoYW5nZX1cbiAgICAgICAgICBvbkZvY3VzPXtkaXNhYmxlZCA/IHVuZGVmaW5lZCA6IGhhbmRsZUZvY3VzfVxuICAgICAgICAgIG9uS2V5RG93bj17ZGlzYWJsZWQgPyB1bmRlZmluZWQgOiBoYW5kbGVLZXlEb3dufVxuICAgICAgICAgIG9uS2V5RG93bkNhcHR1cmU9e2Rpc2FibGVkID8gdW5kZWZpbmVkIDogaGFuZGxlS2V5RG93bkNhcHR1cmV9XG4gICAgICAgICAgb25LZXlQcmVzcz17ZGlzYWJsZWQgPyB1bmRlZmluZWQgOiBoYW5kbGVLZXlQcmVzc31cbiAgICAgICAgICBvblNlbGVjdD17ZGlzYWJsZWQgPyB1bmRlZmluZWQgOiBoYW5kbGVTZWxlY3R9XG4gICAgICAgICAgcGxhY2Vob2xkZXI9e3R5cGVZb3VyTWVzc2FnZVN0cmluZ31cbiAgICAgICAgICByZWFkT25seT17ZGlzYWJsZWR9XG4gICAgICAgICAgcmVmPXtpbnB1dEVsZW1lbnRSZWZ9XG4gICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgIHZhbHVlPXt0ZXh0Qm94VmFsdWV9XG4gICAgICAgIC8+XG4gICAgICApIDogKFxuICAgICAgICA8QXV0b1Jlc2l6ZVRleHRBcmVhXG4gICAgICAgICAgYXJpYS1sYWJlbD17c2VuZEJveFN0cmluZ31cbiAgICAgICAgICBjbGFzc05hbWU9XCJ3ZWJjaGF0X19zZW5kLWJveC10ZXh0LWJveF9fdGV4dC1hcmVhXCJcbiAgICAgICAgICBkYXRhLWlkPVwid2ViY2hhdC1zZW5kYm94LWlucHV0XCJcbiAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgZW50ZXJLZXlIaW50PVwic2VuZFwiXG4gICAgICAgICAgaW5wdXRNb2RlPVwidGV4dFwiXG4gICAgICAgICAgb25DaGFuZ2U9e2Rpc2FibGVkID8gdW5kZWZpbmVkIDogaGFuZGxlQ2hhbmdlfVxuICAgICAgICAgIG9uRm9jdXM9e2Rpc2FibGVkID8gdW5kZWZpbmVkIDogaGFuZGxlRm9jdXN9XG4gICAgICAgICAgb25LZXlEb3duPXtkaXNhYmxlZCA/IHVuZGVmaW5lZCA6IGhhbmRsZUtleURvd259XG4gICAgICAgICAgb25LZXlEb3duQ2FwdHVyZT17ZGlzYWJsZWQgPyB1bmRlZmluZWQgOiBoYW5kbGVLZXlEb3duQ2FwdHVyZX1cbiAgICAgICAgICBvbktleVByZXNzPXtkaXNhYmxlZCA/IHVuZGVmaW5lZCA6IGhhbmRsZUtleVByZXNzfVxuICAgICAgICAgIG9uU2VsZWN0PXtkaXNhYmxlZCA/IHVuZGVmaW5lZCA6IGhhbmRsZVNlbGVjdH1cbiAgICAgICAgICBwbGFjZWhvbGRlcj17dHlwZVlvdXJNZXNzYWdlU3RyaW5nfVxuICAgICAgICAgIHJlYWRPbmx5PXtkaXNhYmxlZH1cbiAgICAgICAgICByZWY9e2lucHV0RWxlbWVudFJlZn1cbiAgICAgICAgICByb3dzPVwiMVwiXG4gICAgICAgICAgdGV4dEFyZWFDbGFzc05hbWU9XCJ3ZWJjaGF0X19zZW5kLWJveC10ZXh0LWJveF9faHRtbC10ZXh0LWFyZWFcIlxuICAgICAgICAgIHZhbHVlPXt0ZXh0Qm94VmFsdWV9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgICAge2Rpc2FibGVkICYmIDxkaXYgY2xhc3NOYW1lPVwid2ViY2hhdF9fc2VuZC1ib3gtdGV4dC1ib3hfX2dsYXNzXCIgLz59XG4gICAgPC9mb3JtPlxuICApO1xufTtcblxuVGV4dEJveC5kZWZhdWx0UHJvcHMgPSB7XG4gIGNsYXNzTmFtZTogJydcbn07XG5cblRleHRCb3gucHJvcFR5cGVzID0ge1xuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmdcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRleHRCb3g7XG5cbmV4cG9ydCB7IGNvbm5lY3RTZW5kVGV4dEJveCwgdXNlVGV4dEJveFN1Ym1pdCwgdXNlVGV4dEJveFZhbHVlIH07XG4iXX0=
496
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9TZW5kQm94L1RleHRCb3gudHN4Il0sIm5hbWVzIjpbInVzZURpc2FibGVkIiwiaG9va3MiLCJ1c2VMb2NhbGl6ZXIiLCJ1c2VTZW5kQm94VmFsdWUiLCJ1c2VTdG9wRGljdGF0ZSIsInVzZVN0eWxlT3B0aW9ucyIsInVzZVN1Ym1pdFNlbmRCb3giLCJST09UX1NUWUxFIiwiZGlzcGxheSIsImZsZXgiLCJjb25uZWN0U2VuZFRleHRCb3giLCJzZWxlY3RvcnMiLCJjb25uZWN0VG9XZWJDaGF0IiwiZGlzYWJsZWQiLCJmb2N1c1NlbmRCb3giLCJsYW5ndWFnZSIsInNjcm9sbFRvRW5kIiwic2VuZEJveFZhbHVlIiwic2V0U2VuZEJveCIsInN0b3BEaWN0YXRlIiwic3VibWl0U2VuZEJveCIsIm9uQ2hhbmdlIiwidmFsdWUiLCJ0YXJnZXQiLCJvbktleVByZXNzIiwiZXZlbnQiLCJrZXkiLCJzaGlmdEtleSIsInByZXZlbnREZWZhdWx0Iiwib25TdWJtaXQiLCJ1c2VUZXh0Qm94U3VibWl0IiwiZm9jdXMiLCJzZXRGb2N1cyIsImNvbnNvbGUiLCJ3YXJuIiwidXNlVGV4dEJveFZhbHVlIiwic2V0VmFsdWUiLCJyZXBsYWNlRW1vdGljb24iLCJzZXR0ZXIiLCJuZXh0VmFsdWUiLCJzZWxlY3Rpb25FbmQiLCJzZWxlY3Rpb25TdGFydCIsIkVycm9yIiwibGVuZ3RoIiwibmV4dFNlbGVjdGlvbkVuZCIsIm5leHRTZWxlY3Rpb25TdGFydCIsIm5leHRWYWx1ZVdpdGhFbW9qaSIsIlBSRVZFTlRfREVGQVVMVF9IQU5ETEVSIiwiVGV4dEJveCIsImNsYXNzTmFtZSIsInNlbmRCb3hUZXh0Qm94U3R5bGVTZXQiLCJzZW5kQm94VGV4dEJveCIsInNlbmRCb3hUZXh0V3JhcCIsInRleHRCb3hWYWx1ZSIsInNldFRleHRCb3hWYWx1ZSIsImlucHV0RWxlbWVudFJlZiIsImxvY2FsaXplIiwicGxhY2VDaGVja3BvaW50T25DaGFuZ2VSZWYiLCJwcmV2SW5wdXRTdGF0ZVJlZiIsInJvb3RDbGFzc05hbWUiLCJzY3JvbGxEb3duIiwic2Nyb2xsVXAiLCJzdWJtaXRUZXh0Qm94IiwidW5kb1N0YWNrUmVmIiwic2VuZEJveFN0cmluZyIsInR5cGVZb3VyTWVzc2FnZVN0cmluZyIsInJlbWVtYmVySW5wdXRTdGF0ZSIsImN1cnJlbnQiLCJzZXRTZWxlY3Rpb25SYW5nZUFuZFZhbHVlIiwiaGFuZGxlQ2hhbmdlIiwicHVzaCIsIm5leHRJbnB1dFN0YXRlIiwiaGFuZGxlRm9jdXMiLCJoYW5kbGVLZXlEb3duIiwiY3RybEtleSIsIm1ldGFLZXkiLCJwb3BwZWRJbnB1dFN0YXRlIiwicG9wIiwiaGFuZGxlS2V5UHJlc3MiLCJoYW5kbGVTZWxlY3QiLCJoYW5kbGVTdWJtaXQiLCJoYW5kbGVLZXlEb3duQ2FwdHVyZSIsImhhbmRsZWQiLCJkaXNwbGFjZW1lbnQiLCJJbmZpbml0eSIsInN0b3BQcm9wYWdhdGlvbiIsImZvY3VzQ2FsbGJhY2siLCJub0tleWJvYXJkIiwiaWUxMSIsInJlYWRPbmx5IiwiZ2V0QXR0cmlidXRlIiwic2V0QXR0cmlidXRlIiwic2V0VGltZW91dCIsInJlbW92ZUF0dHJpYnV0ZSIsInVuZGVmaW5lZCIsImRlZmF1bHRQcm9wcyIsInByb3BUeXBlcyIsIlByb3BUeXBlcyIsInN0cmluZyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSxJQUFRQSxXQUFSLEdBQTBHQyw2QkFBMUcsQ0FBUUQsV0FBUjtBQUFBLElBQXFCRSxZQUFyQixHQUEwR0QsNkJBQTFHLENBQXFCQyxZQUFyQjtBQUFBLElBQW1DQyxlQUFuQyxHQUEwR0YsNkJBQTFHLENBQW1DRSxlQUFuQztBQUFBLElBQW9EQyxjQUFwRCxHQUEwR0gsNkJBQTFH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RTNELFFBQVEsR0FBR2lGLFNBQUgsR0FBZXJCLGFBVHBDO0FBVUUsSUFBQSxnQkFBZ0IsRUFBRTVELFFBQVEsR0FBR2lGLFNBQUgsR0FBZWIsb0JBVjNDO0FBV0UsSUFBQSxVQUFVLEVBQUVwRSxRQUFRLEdBQUdpRixTQUFILEdBQWVoQixjQVhyQztBQVlFLElBQUEsUUFBUSxFQUFFakUsUUFBUSxHQUFHaUYsU0FBSCxHQUFlZixZQVpuQztBQWFFLElBQUEsV0FBVyxFQUFFZCxxQkFiZjtBQWNFLElBQUEsUUFBUSxFQUFFcEQsUUFkWjtBQWVFLElBQUEsR0FBRyxFQUFFMEMsZUFmUDtBQWdCRSxJQUFBLElBQUksRUFBRSxDQWhCUjtBQWlCRSxJQUFBLGlCQUFpQixFQUFDLDRDQWpCcEI7QUFrQkUsSUFBQSxLQUFLLEVBQUVGO0FBbEJULElBL0JKLEVBb0RHeEMsUUFBUSxpQkFBSTtBQUFLLElBQUEsU0FBUyxFQUFDO0FBQWYsSUFwRGYsQ0FERjtBQXdERCxDQXhSRDs7QUEwUkFtQyxPQUFPLENBQUMrQyxZQUFSLEdBQXVCO0FBQ3JCOUMsRUFBQUEsU0FBUyxFQUFFO0FBRFUsQ0FBdkI7QUFJQUQsT0FBTyxDQUFDZ0QsU0FBUixHQUFvQjtBQUNsQi9DLEVBQUFBLFNBQVMsRUFBRWdELG1CQUFVQztBQURILENBQXBCO2VBSWVsRCxPIiwic291cmNlUm9vdCI6ImNvbXBvbmVudDovLy8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBob29rcyB9IGZyb20gJ2JvdGZyYW1ld29yay13ZWJjaGF0LWFwaSc7XG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgUmVhY3QsIHsgTXV0YWJsZVJlZk9iamVjdCwgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQgeyBpZTExIH0gZnJvbSAnLi4vVXRpbHMvZGV0ZWN0QnJvd3Nlcic7XG5pbXBvcnQgQWNjZXNzaWJsZUlucHV0VGV4dCBmcm9tICcuLi9VdGlscy9BY2Nlc3NpYmxlSW5wdXRUZXh0JztcbmltcG9ydCBBdXRvUmVzaXplVGV4dEFyZWEgZnJvbSAnLi9BdXRvUmVzaXplVGV4dEFyZWEnO1xuaW1wb3J0IGNvbm5lY3RUb1dlYkNoYXQgZnJvbSAnLi4vY29ubmVjdFRvV2ViQ2hhdCc7XG5pbXBvcnQgbmF2aWdhYmxlRXZlbnQgZnJvbSAnLi4vVXRpbHMvVHlwZUZvY3VzU2luay9uYXZpZ2FibGVFdmVudCc7XG5pbXBvcnQgdXNlRm9jdXMgZnJvbSAnLi4vaG9va3MvdXNlRm9jdXMnO1xuaW1wb3J0IHVzZVJlZ2lzdGVyRm9jdXNTZW5kQm94IGZyb20gJy4uL2hvb2tzL2ludGVybmFsL3VzZVJlZ2lzdGVyRm9jdXNTZW5kQm94JztcbmltcG9ydCB1c2VSZXBsYWNlRW1vdGljb24gZnJvbSAnLi4vaG9va3MvaW50ZXJuYWwvdXNlUmVwbGFjZUVtb3RpY29uJztcbmltcG9ydCB1c2VTY3JvbGxEb3duIGZyb20gJy4uL2hvb2tzL3VzZVNjcm9sbERvd24nO1xuaW1wb3J0IHVzZVNjcm9sbFRvRW5kIGZyb20gJy4uL2hvb2tzL3VzZVNjcm9sbFRvRW5kJztcbmltcG9ydCB1c2VTY3JvbGxVcCBmcm9tICcuLi9ob29rcy91c2VTY3JvbGxVcCc7XG5pbXBvcnQgdXNlU3R5bGVTZXQgZnJvbSAnLi4vaG9va3MvdXNlU3R5bGVTZXQnO1xuaW1wb3J0IHVzZVN0eWxlVG9FbW90aW9uT2JqZWN0IGZyb20gJy4uL2hvb2tzL2ludGVybmFsL3VzZVN0eWxlVG9FbW90aW9uT2JqZWN0JztcblxuY29uc3QgeyB1c2VEaXNhYmxlZCwgdXNlTG9jYWxpemVyLCB1c2VTZW5kQm94VmFsdWUsIHVzZVN0b3BEaWN0YXRlLCB1c2VTdHlsZU9wdGlvbnMsIHVzZVN1Ym1pdFNlbmRCb3ggfSA9IGhvb2tzO1xuXG5jb25zdCBST09UX1NUWUxFID0ge1xuICAnJi53ZWJjaGF0X19zZW5kLWJveC10ZXh0LWJveCc6IHtcbiAgICBkaXNwbGF5OiAnZmxleCcsXG5cbiAgICAnJiAud2ViY2hhdF9fc2VuZC1ib3gtdGV4dC1ib3hfX2lucHV0LCAmIC53ZWJjaGF0X19zZW5kLWJveC10ZXh0LWJveF9fdGV4dC1hcmVhJzoge1xuICAgICAgZmxleDogMVxuICAgIH1cbiAgfVxufTtcblxuY29uc3QgY29ubmVjdFNlbmRUZXh0Qm94ID0gKC4uLnNlbGVjdG9ycykgPT5cbiAgY29ubmVjdFRvV2ViQ2hhdChcbiAgICAoeyBkaXNhYmxlZCwgZm9jdXNTZW5kQm94LCBsYW5ndWFnZSwgc2Nyb2xsVG9FbmQsIHNlbmRCb3hWYWx1ZSwgc2V0U2VuZEJveCwgc3RvcERpY3RhdGUsIHN1Ym1pdFNlbmRCb3ggfSkgPT4gKHtcbiAgICAgIGRpc2FibGVkLFxuICAgICAgbGFuZ3VhZ2UsXG4gICAgICBvbkNoYW5nZTogKHsgdGFyZ2V0OiB7IHZhbHVlIH0gfSkgPT4ge1xuICAgICAgICBzZXRTZW5kQm94KHZhbHVlKTtcbiAgICAgICAgc3RvcERpY3RhdGUoKTtcbiAgICAgIH0sXG4gICAgICBvbktleVByZXNzOiBldmVudCA9PiB7XG4gICAgICAgIGNvbnN0IHsga2V5LCBzaGlmdEtleSB9ID0gZXZlbnQ7XG5cbiAgICAgICAgaWYgKGtleSA9PT0gJ0VudGVyJyAmJiAhc2hpZnRLZXkpIHtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgICAgaWYgKHNlbmRCb3hWYWx1ZSkge1xuICAgICAgICAgICAgc2Nyb2xsVG9FbmQoKTtcbiAgICAgICAgICAgIHN1Ym1pdFNlbmRCb3goKTtcbiAgICAgICAgICAgIGZvY3VzU2VuZEJveCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIG9uU3VibWl0OiBldmVudCA9PiB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgLy8gQ29uc2lkZXIgY2xlYXJpbmcgdGhlIHNlbmQgYm94IG9ubHkgYWZ0ZXIgd2UgcmVjZWl2ZWQgUE9TVF9BQ1RJVklUWV9QRU5ESU5HXG4gICAgICAgIC8vIEUuZy4gaWYgdGhlIGNvbm5lY3Rpb24gaXMgYmFkLCBzZW5kaW5nIHRoZSBtZXNzYWdlIGVzc2VudGlhbGx5IGRvIG5vdGhpbmcgYnV0IGp1c3QgY2xlYXJpbmcgdGhlIHNlbmQgYm94XG5cbiAgICAgICAgaWYgKHNlbmRCb3hWYWx1ZSkge1xuICAgICAgICAgIHNjcm9sbFRvRW5kKCk7XG4gICAgICAgICAgc3VibWl0U2VuZEJveCgpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgdmFsdWU6IHNlbmRCb3hWYWx1ZVxuICAgIH0pLFxuICAgIC4uLnNlbGVjdG9yc1xuICApO1xuXG5mdW5jdGlvbiB1c2VUZXh0Qm94U3VibWl0KCk6IChzZXRGb2N1cz86IGJvb2xlYW4gfCAnc2VuZEJveCcpID0+IHZvaWQge1xuICBjb25zdCBbc2VuZEJveFZhbHVlXSA9IHVzZVNlbmRCb3hWYWx1ZSgpO1xuICBjb25zdCBmb2N1cyA9IHVzZUZvY3VzKCk7XG4gIGNvbnN0IHNjcm9sbFRvRW5kID0gdXNlU2Nyb2xsVG9FbmQoKTtcbiAgY29uc3Qgc3VibWl0U2VuZEJveCA9IHVzZVN1Ym1pdFNlbmRCb3goKTtcblxuICByZXR1cm4gdXNlQ2FsbGJhY2soXG4gICAgc2V0Rm9jdXMgPT4ge1xuICAgICAgaWYgKHNlbmRCb3hWYWx1ZSkge1xuICAgICAgICBzY3JvbGxUb0VuZCgpO1xuICAgICAgICBzdWJtaXRTZW5kQm94KCk7XG5cbiAgICAgICAgaWYgKHNldEZvY3VzKSB7XG4gICAgICAgICAgaWYgKHNldEZvY3VzID09PSB0cnVlKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICAgIGBcImJvdGZyYW1ld29yay13ZWJjaGF0OiBQYXNzaW5nIFwidHJ1ZVwiIHRvIFwidXNlVGV4dEJveFN1Ym1pdFwiIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBvbiBvciBhZnRlciAyMDIyLTA0LTIzLiBQbGVhc2UgcGFzcyBcInNlbmRCb3hcIiBpbnN0ZWFkLlwiYFxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgZm9jdXMoJ3NlbmRCb3gnKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZm9jdXMoc2V0Rm9jdXMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gISFzZW5kQm94VmFsdWU7XG4gICAgfSxcbiAgICBbZm9jdXMsIHNjcm9sbFRvRW5kLCBzZW5kQm94VmFsdWUsIHN1Ym1pdFNlbmRCb3hdXG4gICk7XG59XG5cbmZ1bmN0aW9uIHVzZVRleHRCb3hWYWx1ZSgpOiBbXG4gIHN0cmluZyxcbiAgKFxuICAgIHRleHRCb3hWYWx1ZTogc3RyaW5nLFxuICAgIG9wdGlvbnM6IHsgc2VsZWN0aW9uRW5kOiBudW1iZXI7IHNlbGVjdGlvblN0YXJ0OiBudW1iZXIgfVxuICApID0+IHsgc2VsZWN0aW9uRW5kOiBudW1iZXI7IHNlbGVjdGlvblN0YXJ0OiBudW1iZXI7IHZhbHVlOiBzdHJpbmcgfVxuXSB7XG4gIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gdXNlU2VuZEJveFZhbHVlKCk7XG4gIGNvbnN0IHJlcGxhY2VFbW90aWNvbiA9IHVzZVJlcGxhY2VFbW90aWNvbigpO1xuICBjb25zdCBzdG9wRGljdGF0ZSA9IHVzZVN0b3BEaWN0YXRlKCk7XG5cbiAgY29uc3Qgc2V0dGVyID0gdXNlQ2FsbGJhY2soXG4gICAgKG5leHRWYWx1ZSwgeyBzZWxlY3Rpb25FbmQsIHNlbGVjdGlvblN0YXJ0IH0gPSB7fSkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBuZXh0VmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignYm90ZnJhbWV3b3JrLXdlYmNoYXQ6IEZpcnN0IGFyZ3VtZW50IHBhc3NlZCB0byB1c2VUZXh0Qm94VmFsdWUoKSBtdXN0IGJlIGEgc3RyaW5nLicpO1xuICAgICAgfVxuXG4gICAgICAvLyBDdXJyZW50bHksIHdlIGNhbm5vdCBkZXRlY3Qgd2hldGhlciB0aGUgY2hhbmdlIGlzIGR1ZSB0byBjbGlwYm9hcmQgcGFzdGUgb3IgcHJlc3NpbmcgYSBrZXkgb24gdGhlIGtleWJvYXJkLlxuICAgICAgLy8gV2Ugc2hvdWxkIG5vdCBjaGFuZ2UgdG8gZW1vamkgd2hlbiB0aGUgdXNlciBpcyBwYXN0aW5nIHRleHQuXG4gICAgICAvLyBXZSB3b3VsZCBhc3N1bWUsIGZvciBhIHNpbmdsZSBjaGFyYWN0ZXIgYWRkaXRpb24sIHRoZSB1c2VyIG11c3QgYmUgcHJlc3NpbmcgYSBrZXkuXG4gICAgICBpZiAobmV4dFZhbHVlLmxlbmd0aCA9PT0gdmFsdWUubGVuZ3RoICsgMSkge1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgc2VsZWN0aW9uRW5kOiBuZXh0U2VsZWN0aW9uRW5kLFxuICAgICAgICAgIHNlbGVjdGlvblN0YXJ0OiBuZXh0U2VsZWN0aW9uU3RhcnQsXG4gICAgICAgICAgdmFsdWU6IG5leHRWYWx1ZVdpdGhFbW9qaVxuICAgICAgICB9ID0gcmVwbGFjZUVtb3RpY29uKHsgc2VsZWN0aW9uRW5kLCBzZWxlY3Rpb25TdGFydCwgdmFsdWU6IG5leHRWYWx1ZSB9KTtcblxuICAgICAgICBzZWxlY3Rpb25FbmQgPSBuZXh0U2VsZWN0aW9uRW5kO1xuICAgICAgICBzZWxlY3Rpb25TdGFydCA9IG5leHRTZWxlY3Rpb25TdGFydDtcbiAgICAgICAgbmV4dFZhbHVlID0gbmV4dFZhbHVlV2l0aEVtb2ppO1xuICAgICAgfVxuXG4gICAgICBzZXRWYWx1ZShuZXh0VmFsdWUpO1xuICAgICAgc3RvcERpY3RhdGUoKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc2VsZWN0aW9uRW5kLFxuICAgICAgICBzZWxlY3Rpb25TdGFydCxcbiAgICAgICAgdmFsdWU6IG5leHRWYWx1ZVxuICAgICAgfTtcbiAgICB9LFxuICAgIFtyZXBsYWNlRW1vdGljb24sIHNldFZhbHVlLCBzdG9wRGljdGF0ZSwgdmFsdWVdXG4gICk7XG5cbiAgcmV0dXJuIFt2YWx1ZSwgc2V0dGVyXTtcbn1cblxuY29uc3QgUFJFVkVOVF9ERUZBVUxUX0hBTkRMRVIgPSBldmVudCA9PiBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG5jb25zdCBUZXh0Qm94ID0gKHsgY2xhc3NOYW1lIH0pID0+IHtcbiAgY29uc3QgWywgc2V0U2VuZEJveF0gPSB1c2VTZW5kQm94VmFsdWUoKTtcbiAgY29uc3QgW3sgc2VuZEJveFRleHRCb3g6IHNlbmRCb3hUZXh0Qm94U3R5bGVTZXQgfV0gPSB1c2VTdHlsZVNldCgpO1xuICBjb25zdCBbeyBzZW5kQm94VGV4dFdyYXAgfV0gPSB1c2VTdHlsZU9wdGlvbnMoKTtcbiAgY29uc3QgW2Rpc2FibGVkXSA9IHVzZURpc2FibGVkKCk7XG4gIGNvbnN0IFt0ZXh0Qm94VmFsdWUsIHNldFRleHRCb3hWYWx1ZV0gPSB1c2VUZXh0Qm94VmFsdWUoKTtcbiAgY29uc3QgaW5wdXRFbGVtZW50UmVmOiBNdXRhYmxlUmVmT2JqZWN0PEhUTUxJbnB1dEVsZW1lbnQgJiBIVE1MVGV4dEFyZWFFbGVtZW50PiA9IHVzZVJlZigpO1xuICBjb25zdCBsb2NhbGl6ZSA9IHVzZUxvY2FsaXplcigpO1xuICBjb25zdCBwbGFjZUNoZWNrcG9pbnRPbkNoYW5nZVJlZiA9IHVzZVJlZihmYWxzZSk7XG4gIGNvbnN0IHByZXZJbnB1dFN0YXRlUmVmOiBNdXRhYmxlUmVmT2JqZWN0PHtcbiAgICBzZWxlY3Rpb25FbmQ6IG51bWJlcjtcbiAgICBzZWxlY3Rpb25TdGFydDogbnVtYmVyO1xuICAgIHZhbHVlOiBzdHJpbmc7XG4gIH0+ID0gdXNlUmVmKCk7XG4gIGNvbnN0IHJvb3RDbGFzc05hbWUgPSB1c2VTdHlsZVRvRW1vdGlvbk9iamVjdCgpKFJPT1RfU1RZTEUpICsgJyc7XG4gIGNvbnN0IHNjcm9sbERvd24gPSB1c2VTY3JvbGxEb3duKCk7XG4gIGNvbnN0IHNjcm9sbFVwID0gdXNlU2Nyb2xsVXAoKTtcbiAgY29uc3Qgc3VibWl0VGV4dEJveCA9IHVzZVRleHRCb3hTdWJtaXQoKTtcbiAgY29uc3QgdW5kb1N0YWNrUmVmID0gdXNlUmVmKFtdKTtcblxuICBjb25zdCBzZW5kQm94U3RyaW5nID0gbG9jYWxpemUoJ1RFWFRfSU5QVVRfQUxUJyk7XG4gIGNvbnN0IHR5cGVZb3VyTWVzc2FnZVN0cmluZyA9IGxvY2FsaXplKCdURVhUX0lOUFVUX1BMQUNFSE9MREVSJyk7XG5cbiAgY29uc3QgcmVtZW1iZXJJbnB1dFN0YXRlID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIGN1cnJlbnQ6IHsgc2VsZWN0aW9uRW5kLCBzZWxlY3Rpb25TdGFydCwgdmFsdWUgfVxuICAgIH0gPSBpbnB1dEVsZW1lbnRSZWY7XG5cbiAgICBwcmV2SW5wdXRTdGF0ZVJlZi5jdXJyZW50ID0geyBzZWxlY3Rpb25FbmQsIHNlbGVjdGlvblN0YXJ0LCB2YWx1ZSB9O1xuICB9LCBbaW5wdXRFbGVtZW50UmVmLCBwcmV2SW5wdXRTdGF0ZVJlZl0pO1xuXG4gIC8vIFRoaXMgaXMgZm9yIFR5cGVGb2N1c1NpbmsuIFdoZW4gdGhlIGZvY3VzIGluIG9uIHRoZSBzY3JpcHQsIHRoZW4gc3RhcnRpbmcgcHJlc3MgXCJhXCIsIHdpdGhvdXQgdGhpcyBsaW5lLCBpdCB3b3VsZCBjYXVzZSBlcnJvcnMuXG4gIC8vIFdlIGNhbGwgcmVtZW1iZXJJbnB1dFN0YXRlKCkgd2hlbiBcIm9uRm9jdXNcIiBldmVudCBpcyBmaXJlZCwgYnV0IHNpbmNlIHRoaXMgaXMgZnJvbSBUeXBlRm9jdXNTaW5rLCB3ZSBhcmUgbm90IGFibGUgdG8gcmVjZWl2ZSBcIm9uRm9jdXNcIiBldmVudCBiZWZvcmUgaXQgaGFwcGVuLlxuICB1c2VFZmZlY3QocmVtZW1iZXJJbnB1dFN0YXRlLCBbcmVtZW1iZXJJbnB1dFN0YXRlXSk7XG5cbiAgLy8gVGhpcyBpcyBmb3IgbW92aW5nIHRoZSBzZWxlY3Rpb24gd2hpbGUgc2V0dGluZyB0aGUgc2VuZCBib3ggdmFsdWUuXG4gIC8vIElmIHdlIG9ubHkgdXNlIHNldFNlbmRCb3gsIHdlIHdpbGwgbmVlZCB0byB3YWl0IGZvciB0aGUgbmV4dCByZW5kZXIgY3ljbGUgdG8gZ2V0IHRoZSB2YWx1ZSBpbiwgYmVmb3JlIHdlIGNhbiBzZXQgc2VsZWN0aW9uRW5kL1N0YXJ0LlxuICBjb25zdCBzZXRTZWxlY3Rpb25SYW5nZUFuZFZhbHVlID0gdXNlQ2FsbGJhY2soXG4gICAgKHsgc2VsZWN0aW9uRW5kLCBzZWxlY3Rpb25TdGFydCwgdmFsdWUgfSkgPT4ge1xuICAgICAgaWYgKGlucHV0RWxlbWVudFJlZi5jdXJyZW50KSB7XG4gICAgICAgIC8vIFdlIG5lZWQgdG8gc2V0IHRoZSB2YWx1ZSwgYmVmb3JlIHNlbGVjdGlvblN0YXJ0L3NlbGVjdGlvbkVuZC5cbiAgICAgICAgaW5wdXRFbGVtZW50UmVmLmN1cnJlbnQudmFsdWUgPSB2YWx1ZTtcblxuICAgICAgICBpbnB1dEVsZW1lbnRSZWYuY3VycmVudC5zZWxlY3Rpb25TdGFydCA9IHNlbGVjdGlvblN0YXJ0O1xuICAgICAgICBpbnB1dEVsZW1lbnRSZWYuY3VycmVudC5zZWxlY3Rpb25FbmQgPSBzZWxlY3Rpb25FbmQ7XG4gICAgICB9XG5cbiAgICAgIHNldFNlbmRCb3godmFsdWUpO1xuICAgIH0sXG4gICAgW2lucHV0RWxlbWVudFJlZiwgc2V0U2VuZEJveF1cbiAgKTtcblxuICBjb25zdCBoYW5kbGVDaGFuZ2UgPSB1c2VDYWxsYmFjayhcbiAgICBldmVudCA9PiB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHRhcmdldDogeyBzZWxlY3Rpb25FbmQsIHNlbGVjdGlvblN0YXJ0LCB2YWx1ZSB9XG4gICAgICB9ID0gZXZlbnQ7XG5cbiAgICAgIGlmIChwbGFjZUNoZWNrcG9pbnRPbkNoYW5nZVJlZi5jdXJyZW50KSB7XG4gICAgICAgIHVuZG9TdGFja1JlZi5jdXJyZW50LnB1c2goeyAuLi5wcmV2SW5wdXRTdGF0ZVJlZi5jdXJyZW50IH0pO1xuXG4gICAgICAgIHBsYWNlQ2hlY2twb2ludE9uQ2hhbmdlUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbmV4dElucHV0U3RhdGUgPSBzZXRUZXh0Qm94VmFsdWUodmFsdWUsIHsgc2VsZWN0aW9uRW5kLCBzZWxlY3Rpb25TdGFydCB9KTtcblxuICAgICAgLy8gSWYgYW4gZW1vdGljb24gaXMgY29udmVydGVkIHRvIGVtb2ppLCBwbGFjZSBhbm90aGVyIGNoZWNrcG9pbnQuXG4gICAgICBpZiAobmV4dElucHV0U3RhdGUudmFsdWUgIT09IHZhbHVlKSB7XG4gICAgICAgIHVuZG9TdGFja1JlZi5jdXJyZW50LnB1c2goeyBzZWxlY3Rpb25FbmQsIHNlbGVjdGlvblN0YXJ0LCB2YWx1ZSB9KTtcblxuICAgICAgICBwbGFjZUNoZWNrcG9pbnRPbkNoYW5nZVJlZi5jdXJyZW50ID0gdHJ1ZTtcblxuICAgICAgICBzZXRTZWxlY3Rpb25SYW5nZUFuZFZhbHVlKG5leHRJbnB1dFN0YXRlKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFtwbGFjZUNoZWNrcG9pbnRPbkNoYW5nZVJlZiwgcHJldklucHV0U3RhdGVSZWYsIHNldFNlbGVjdGlvblJhbmdlQW5kVmFsdWUsIHNldFRleHRCb3hWYWx1ZSwgdW5kb1N0YWNrUmVmXVxuICApO1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHJlbWVtYmVySW5wdXRTdGF0ZSgpO1xuXG4gICAgcGxhY2VDaGVja3BvaW50T25DaGFuZ2VSZWYuY3VycmVudCA9IHRydWU7XG4gIH0sIFtwbGFjZUNoZWNrcG9pbnRPbkNoYW5nZVJlZiwgcmVtZW1iZXJJbnB1dFN0YXRlXSk7XG5cbiAgY29uc3QgaGFuZGxlS2V5RG93biA9IHVzZUNhbGxiYWNrKFxuICAgIGV2ZW50ID0+IHtcbiAgICAgIGNvbnN0IHsgY3RybEtleSwga2V5LCBtZXRhS2V5IH0gPSBldmVudDtcblxuICAgICAgaWYgKChjdHJsS2V5IHx8IG1ldGFLZXkpICYmIChrZXkgPT09ICdaJyB8fCBrZXkgPT09ICd6JykpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICBjb25zdCBwb3BwZWRJbnB1dFN0YXRlID0gdW5kb1N0YWNrUmVmLmN1cnJlbnQucG9wKCk7XG5cbiAgICAgICAgaWYgKHBvcHBlZElucHV0U3RhdGUpIHtcbiAgICAgICAgICBwcmV2SW5wdXRTdGF0ZVJlZi5jdXJyZW50ID0geyAuLi5wb3BwZWRJbnB1dFN0YXRlIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcHJldklucHV0U3RhdGVSZWYuY3VycmVudCA9IHsgc2VsZWN0aW9uRW5kOiAwLCBzZWxlY3Rpb25TdGFydDogMCwgdmFsdWU6ICcnIH07XG4gICAgICAgIH1cblxuICAgICAgICBzZXRTZWxlY3Rpb25SYW5nZUFuZFZhbHVlKHByZXZJbnB1dFN0YXRlUmVmLmN1cnJlbnQpO1xuICAgICAgfVxuICAgIH0sXG4gICAgW3ByZXZJbnB1dFN0YXRlUmVmLCBzZXRTZWxlY3Rpb25SYW5nZUFuZFZhbHVlLCB1bmRvU3RhY2tSZWZdXG4gICk7XG5cbiAgY29uc3QgaGFuZGxlS2V5UHJlc3MgPSB1c2VDYWxsYmFjayhcbiAgICBldmVudCA9PiB7XG4gICAgICBjb25zdCB7IGtleSwgc2hpZnRLZXkgfSA9IGV2ZW50O1xuXG4gICAgICBpZiAoa2V5ID09PSAnRW50ZXInICYmICFzaGlmdEtleSkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgIC8vIElmIHRleHQgYm94IGlzIHN1Ym1pdHRlZCwgZm9jdXMgb24gdGhlIHNlbmQgYm94XG4gICAgICAgIHN1Ym1pdFRleHRCb3goJ3NlbmRCb3gnKTtcblxuICAgICAgICAvLyBBZnRlciBzdWJtaXQsIHdlIHdpbGwgY2xlYXIgdGhlIHVuZG8gc3RhY2suXG4gICAgICAgIHVuZG9TdGFja1JlZi5jdXJyZW50ID0gW107XG4gICAgICB9XG4gICAgfSxcbiAgICBbc3VibWl0VGV4dEJveCwgdW5kb1N0YWNrUmVmXVxuICApO1xuXG4gIGNvbnN0IGhhbmRsZVNlbGVjdCA9IHVzZUNhbGxiYWNrKFxuICAgICh7IHRhcmdldDogeyBzZWxlY3Rpb25FbmQsIHNlbGVjdGlvblN0YXJ0LCB2YWx1ZSB9IH0pID0+IHtcbiAgICAgIGlmICh2YWx1ZSA9PT0gcHJldklucHV0U3RhdGVSZWYuY3VycmVudC52YWx1ZSkge1xuICAgICAgICAvLyBXaGVuIGNhcmV0IG1vdmUsIHdlIHNob3VsZCBwdXNoIHRvIHVuZG8gc3RhY2sgb24gY2hhbmdlLlxuICAgICAgICBwbGFjZUNoZWNrcG9pbnRPbkNoYW5nZVJlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgcHJldklucHV0U3RhdGVSZWYuY3VycmVudCA9IHsgc2VsZWN0aW9uRW5kLCBzZWxlY3Rpb25TdGFydCwgdmFsdWUgfTtcbiAgICB9LFxuICAgIFtwbGFjZUNoZWNrcG9pbnRPbkNoYW5nZVJlZiwgcHJldklucHV0U3RhdGVSZWZdXG4gICk7XG5cbiAgY29uc3QgaGFuZGxlU3VibWl0ID0gdXNlQ2FsbGJhY2soXG4gICAgZXZlbnQgPT4ge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgLy8gQ29uc2lkZXIgY2xlYXJpbmcgdGhlIHNlbmQgYm94IG9ubHkgYWZ0ZXIgd2UgcmVjZWl2ZWQgUE9TVF9BQ1RJVklUWV9QRU5ESU5HXG4gICAgICAvLyBFLmcuIGlmIHRoZSBjb25uZWN0aW9uIGlzIGJhZCwgc2VuZGluZyB0aGUgbWVzc2FnZSBlc3NlbnRpYWxseSBkbyBub3RoaW5nIGJ1dCBqdXN0IGNsZWFyaW5nIHRoZSBzZW5kIGJveFxuICAgICAgc3VibWl0VGV4dEJveCgpO1xuXG4gICAgICAvLyBBZnRlciBzdWJtaXQsIHdlIHdpbGwgY2xlYXIgdGhlIHVuZG8gc3RhY2suXG4gICAgICB1bmRvU3RhY2tSZWYuY3VycmVudCA9IFtdO1xuICAgIH0sXG4gICAgW3N1Ym1pdFRleHRCb3gsIHVuZG9TdGFja1JlZl1cbiAgKTtcblxuICBjb25zdCBoYW5kbGVLZXlEb3duQ2FwdHVyZSA9IHVzZUNhbGxiYWNrKFxuICAgIGV2ZW50ID0+IHtcbiAgICAgIGNvbnN0IHsgY3RybEtleSwgbWV0YUtleSwgc2hpZnRLZXkgfSA9IGV2ZW50O1xuXG4gICAgICBpZiAoY3RybEtleSB8fCBtZXRhS2V5IHx8IHNoaWZ0S2V5KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gTmF2aWdhYmxlIGV2ZW50IG1lYW5zIHRoZSBlbmQtdXNlciBpcyBmb2N1c2luZyBvbiBhbiBpbnB1dHRhYmxlIGVsZW1lbnQsIGJ1dCBpdCBpcyBva2F5IHRvIGNhcHR1cmUgdGhlIGFycm93IGtleXMuXG4gICAgICBpZiAobmF2aWdhYmxlRXZlbnQoZXZlbnQpKSB7XG4gICAgICAgIGxldCBoYW5kbGVkID0gdHJ1ZTtcblxuICAgICAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgICAgIGNhc2UgJ0VuZCc6XG4gICAgICAgICAgICBzY3JvbGxEb3duKHsgZGlzcGxhY2VtZW50OiBJbmZpbml0eSB9KTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSAnSG9tZSc6XG4gICAgICAgICAgICBzY3JvbGxVcCh7IGRpc3BsYWNlbWVudDogSW5maW5pdHkgfSk7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgIGNhc2UgJ1BhZ2VEb3duJzpcbiAgICAgICAgICAgIHNjcm9sbERvd24oKTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSAnUGFnZVVwJzpcbiAgICAgICAgICAgIHNjcm9sbFVwKCk7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBoYW5kbGVkID0gZmFsc2U7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChoYW5kbGVkKSB7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgW3Njcm9sbERvd24sIHNjcm9sbFVwXVxuICApO1xuXG4gIGNvbnN0IGZvY3VzQ2FsbGJhY2sgPSB1c2VDYWxsYmFjayhcbiAgICAoeyBub0tleWJvYXJkIH0gPSB7fSkgPT4ge1xuICAgICAgY29uc3QgeyBjdXJyZW50IH0gPSBpbnB1dEVsZW1lbnRSZWY7XG5cbiAgICAgIGlmIChjdXJyZW50KSB7XG4gICAgICAgIC8vIFRoZSBcImRpc2FibGUgc29mdCBrZXlib2FyZCBvbiBtb2JpbGUgZGV2aWNlc1wiIGxvZ2ljIHdpbGwgbm90IHdvcmsgb24gSUUxMS4gSXQgd2lsbCBjYXVzZSB0aGUgPGlucHV0PiB0byBiZWNvbWUgcmVhZC1vbmx5IHVudGlsIG5leHQgZm9jdXMuXG4gICAgICAgIC8vIFRodXMsIG5vIG1vYmlsZSBkZXZpY2VzIGNhcnJ5IElFMTEgc28gd2UgZG9uJ3QgbmVlZCB0byBleHBsaWNpdGx5IGRpc2FibGUgc29mdCBrZXlib2FyZCBvbiBJRTExLlxuICAgICAgICAvLyBTZWUgIzM3NTcgZm9yIHJlcHJvIGFuZCBkZXRhaWxzLlxuICAgICAgICBpZiAobm9LZXlib2FyZCAmJiAhaWUxMSkge1xuICAgICAgICAgIC8vIFRvIG5vdCBhY3RpdmF0ZSB0aGUgdmlydHVhbCBrZXlib2FyZCB3aGlsZSBjaGFuZ2luZyBmb2N1cyB0byBhbiBpbnB1dCwgd2Ugd2lsbCB0ZW1wb3JhcmlseSBzZXQgaXQgYXMgcmVhZC1vbmx5IGFuZCBmbGlwIGl0IGJhY2suXG4gICAgICAgICAgLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNzYxMDc1OC9wcmV2ZW50LWlwaG9uZS1kZWZhdWx0LWtleWJvYXJkLXdoZW4tZm9jdXNpbmctYW4taW5wdXQvNzYxMDkyM1xuICAgICAgICAgIGNvbnN0IHJlYWRPbmx5ID0gY3VycmVudC5nZXRBdHRyaWJ1dGUoJ3JlYWRvbmx5Jyk7XG5cbiAgICAgICAgICBjdXJyZW50LnNldEF0dHJpYnV0ZSgncmVhZG9ubHknLCAncmVhZG9ubHknKTtcblxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgeyBjdXJyZW50IH0gPSBpbnB1dEVsZW1lbnRSZWY7XG5cbiAgICAgICAgICAgIGlmIChjdXJyZW50KSB7XG4gICAgICAgICAgICAgIGN1cnJlbnQuZm9jdXMoKTtcbiAgICAgICAgICAgICAgcmVhZE9ubHkgPyBjdXJyZW50LnNldEF0dHJpYnV0ZSgncmVhZG9ubHknLCByZWFkT25seSkgOiBjdXJyZW50LnJlbW92ZUF0dHJpYnV0ZSgncmVhZG9ubHknKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LCAwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjdXJyZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIFtpbnB1dEVsZW1lbnRSZWZdXG4gICk7XG5cbiAgdXNlUmVnaXN0ZXJGb2N1c1NlbmRCb3goZm9jdXNDYWxsYmFjayk7XG5cbiAgcmV0dXJuIChcbiAgICA8Zm9ybVxuICAgICAgYXJpYS1kaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoXG4gICAgICAgICd3ZWJjaGF0X19zZW5kLWJveC10ZXh0LWJveCcsXG4gICAgICAgIHJvb3RDbGFzc05hbWUsXG4gICAgICAgIHNlbmRCb3hUZXh0Qm94U3R5bGVTZXQgKyAnJyxcbiAgICAgICAgKGNsYXNzTmFtZSB8fCAnJykgKyAnJ1xuICAgICAgKX1cbiAgICAgIG9uU3VibWl0PXtkaXNhYmxlZCA/IFBSRVZFTlRfREVGQVVMVF9IQU5ETEVSIDogaGFuZGxlU3VibWl0fVxuICAgID5cbiAgICAgIHshc2VuZEJveFRleHRXcmFwID8gKFxuICAgICAgICA8QWNjZXNzaWJsZUlucHV0VGV4dFxuICAgICAgICAgIGFyaWEtbGFiZWw9e3NlbmRCb3hTdHJpbmd9XG4gICAgICAgICAgY2xhc3NOYW1lPVwid2ViY2hhdF9fc2VuZC1ib3gtdGV4dC1ib3hfX2lucHV0XCJcbiAgICAgICAgICBkYXRhLWlkPVwid2ViY2hhdC1zZW5kYm94LWlucHV0XCJcbiAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgZW50ZXJLZXlIaW50PVwic2VuZFwiXG4gICAgICAgICAgaW5wdXRNb2RlPVwidGV4dFwiXG4gICAgICAgICAgb25DaGFuZ2U9e2Rpc2FibGVkID8gdW5kZWZpbmVkIDogaGFuZGxlQ2hhbmdlfVxuICAgICAgICAgIG9uRm9jdXM9e2Rpc2FibGVkID8gdW5kZWZpbmVkIDogaGFuZGxlRm9jdXN9XG4gICAgICAgICAgb25LZXlEb3duPXtkaXNhYmxlZCA/IHVuZGVmaW5lZCA6IGhhbmRsZUtleURvd259XG4gICAgICAgICAgb25LZXlEb3duQ2FwdHVyZT17ZGlzYWJsZWQgPyB1bmRlZmluZWQgOiBoYW5kbGVLZXlEb3duQ2FwdHVyZX1cbiAgICAgICAgICBvbktleVByZXNzPXtkaXNhYmxlZCA/IHVuZGVmaW5lZCA6IGhhbmRsZUtleVByZXNzfVxuICAgICAgICAgIG9uU2VsZWN0PXtkaXNhYmxlZCA/IHVuZGVmaW5lZCA6IGhhbmRsZVNlbGVjdH1cbiAgICAgICAgICBwbGFjZWhvbGRlcj17dHlwZVlvdXJNZXNzYWdlU3RyaW5nfVxuICAgICAgICAgIHJlYWRPbmx5PXtkaXNhYmxlZH1cbiAgICAgICAgICByZWY9e2lucHV0RWxlbWVudFJlZn1cbiAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgdmFsdWU9e3RleHRCb3hWYWx1ZX1cbiAgICAgICAgLz5cbiAgICAgICkgOiAoXG4gICAgICAgIDxBdXRvUmVzaXplVGV4dEFyZWFcbiAgICAgICAgICBhcmlhLWxhYmVsPXtzZW5kQm94U3RyaW5nfVxuICAgICAgICAgIGNsYXNzTmFtZT1cIndlYmNoYXRfX3NlbmQtYm94LXRleHQtYm94X190ZXh0LWFyZWFcIlxuICAgICAgICAgIGRhdGEtaWQ9XCJ3ZWJjaGF0LXNlbmRib3gtaW5wdXRcIlxuICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICBlbnRlcktleUhpbnQ9XCJzZW5kXCJcbiAgICAgICAgICBpbnB1dE1vZGU9XCJ0ZXh0XCJcbiAgICAgICAgICBvbkNoYW5nZT17ZGlzYWJsZWQgPyB1bmRlZmluZWQgOiBoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgb25Gb2N1cz17ZGlzYWJsZWQgPyB1bmRlZmluZWQgOiBoYW5kbGVGb2N1c31cbiAgICAgICAgICBvbktleURvd249e2Rpc2FibGVkID8gdW5kZWZpbmVkIDogaGFuZGxlS2V5RG93bn1cbiAgICAgICAgICBvbktleURvd25DYXB0dXJlPXtkaXNhYmxlZCA/IHVuZGVmaW5lZCA6IGhhbmRsZUtleURvd25DYXB0dXJlfVxuICAgICAgICAgIG9uS2V5UHJlc3M9e2Rpc2FibGVkID8gdW5kZWZpbmVkIDogaGFuZGxlS2V5UHJlc3N9XG4gICAgICAgICAgb25TZWxlY3Q9e2Rpc2FibGVkID8gdW5kZWZpbmVkIDogaGFuZGxlU2VsZWN0fVxuICAgICAgICAgIHBsYWNlaG9sZGVyPXt0eXBlWW91ck1lc3NhZ2VTdHJpbmd9XG4gICAgICAgICAgcmVhZE9ubHk9e2Rpc2FibGVkfVxuICAgICAgICAgIHJlZj17aW5wdXRFbGVtZW50UmVmfVxuICAgICAgICAgIHJvd3M9ezF9XG4gICAgICAgICAgdGV4dEFyZWFDbGFzc05hbWU9XCJ3ZWJjaGF0X19zZW5kLWJveC10ZXh0LWJveF9faHRtbC10ZXh0LWFyZWFcIlxuICAgICAgICAgIHZhbHVlPXt0ZXh0Qm94VmFsdWV9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgICAge2Rpc2FibGVkICYmIDxkaXYgY2xhc3NOYW1lPVwid2ViY2hhdF9fc2VuZC1ib3gtdGV4dC1ib3hfX2dsYXNzXCIgLz59XG4gICAgPC9mb3JtPlxuICApO1xufTtcblxuVGV4dEJveC5kZWZhdWx0UHJvcHMgPSB7XG4gIGNsYXNzTmFtZTogJydcbn07XG5cblRleHRCb3gucHJvcFR5cGVzID0ge1xuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmdcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRleHRCb3g7XG5cbmV4cG9ydCB7IGNvbm5lY3RTZW5kVGV4dEJveCwgdXNlVGV4dEJveFN1Ym1pdCwgdXNlVGV4dEJveFZhbHVlIH07XG4iXX0=
@@ -0,0 +1,9 @@
1
+ import { FC } from 'react';
2
+ declare const connectUploadButton: (...selectors: any[]) => any;
3
+ declare type UploadButtonProps = {
4
+ className?: string;
5
+ };
6
+ declare const UploadButton: FC<UploadButtonProps>;
7
+ export default UploadButton;
8
+ export { connectUploadButton };
9
+ //# sourceMappingURL=UploadButton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UploadButton.d.ts","sourceRoot":"","sources":["../../src/SendBox/UploadButton.tsx"],"names":[],"mappings":"AAGA,OAAc,EAAE,EAAE,EAAuB,MAAM,OAAO,CAAC;AAyCvD,QAAA,MAAM,mBAAmB,8BA6CtB,CAAC;AAEJ,aAAK,iBAAiB,GAAG;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,QAAA,MAAM,YAAY,EAAE,EAAE,CAAC,iBAAiB,CA8CvC,CAAC;AAUF,eAAe,YAAY,CAAC;AAE5B,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
@@ -29,9 +29,9 @@ var _useStyleSet3 = _interopRequireDefault(require("../hooks/useStyleSet"));
29
29
 
30
30
  var _useStyleToEmotionObject = _interopRequireDefault(require("../hooks/internal/useStyleToEmotionObject"));
31
31
 
32
- function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }
32
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
33
33
 
34
- function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
34
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
35
35
 
36
36
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
37
37
 
@@ -43,11 +43,11 @@ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o =
43
43
 
44
44
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
45
45
 
46
- function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
46
+ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
47
47
 
48
48
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
49
49
 
50
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
50
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
51
51
 
52
52
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
53
53
 
@@ -274,4 +274,4 @@ UploadButton.propTypes = {
274
274
  };
275
275
  var _default = UploadButton;
276
276
  exports.default = _default;
277
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9TZW5kQm94L1VwbG9hZEJ1dHRvbi5qcyJdLCJuYW1lcyI6WyJ1c2VEaXNhYmxlZCIsImhvb2tzIiwidXNlTG9jYWxpemVyIiwiUk9PVF9TVFlMRSIsImRpc3BsYXkiLCJvdmVyZmxvdyIsInBvc2l0aW9uIiwiaGVpZ2h0Iiwid2lkdGgiLCJvcGFjaXR5IiwibGVmdCIsInRvcCIsIlBSRVZFTlRfREVGQVVMVF9IQU5ETEVSIiwiZXZlbnQiLCJwcmV2ZW50RGVmYXVsdCIsIm1ha2VUaHVtYm5haWwiLCJmaWxlIiwiY29udGVudFR5cGUiLCJxdWFsaXR5IiwidGVzdCIsIm5hbWUiLCJjb25zb2xlIiwid2FybiIsImNvbm5lY3RVcGxvYWRCdXR0b24iLCJzZWxlY3RvcnMiLCJjb25uZWN0VG9XZWJDaGF0IiwiZGlzYWJsZWQiLCJsYW5ndWFnZSIsInNlbmRGaWxlcyIsInN0eWxlU2V0Iiwib3B0aW9ucyIsImVuYWJsZVVwbG9hZFRodW1ibmFpbCIsInVwbG9hZFRodW1ibmFpbENvbnRlbnRUeXBlIiwidXBsb2FkVGh1bWJuYWlsSGVpZ2h0IiwidXBsb2FkVGh1bWJuYWlsUXVhbGl0eSIsInVwbG9hZFRodW1ibmFpbFdpZHRoIiwiZmlsZXMiLCJsZW5ndGgiLCJQcm9taXNlIiwiYWxsIiwibWFwIiwiY2FsbCIsInNpemUiLCJ1cmwiLCJ3aW5kb3ciLCJVUkwiLCJjcmVhdGVPYmplY3RVUkwiLCJ0aHVtYm5haWwiLCJVcGxvYWRCdXR0b24iLCJjbGFzc05hbWUiLCJ1cGxvYWRCdXR0b25TdHlsZVNldCIsInVwbG9hZEJ1dHRvbiIsImlucHV0UmVmIiwibG9jYWxpemUiLCJyb290Q2xhc3NOYW1lIiwiY3VycmVudCIsInVwbG9hZEZpbGVTdHJpbmciLCJoYW5kbGVDbGljayIsImNsaWNrIiwiaGFuZGxlRmlsZUNoYW5nZSIsInRhcmdldCIsInZhbHVlIiwidW5kZWZpbmVkIiwiZGVmYXVsdFByb3BzIiwicHJvcFR5cGVzIiwiUHJvcFR5cGVzIiwi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QmQsRUFBQUEsU0FBUyxFQUFFYTtBQURlLENBQTVCO0FBSUFkLFlBQVksQ0FBQ2dCLFNBQWIsR0FBeUI7QUFDdkJmLEVBQUFBLFNBQVMsRUFBRWdCLG1CQUFVQztBQURFLENBQXpCO2VBSWVsQixZIiwic291cmNlUm9vdCI6ImNvbXBvbmVudDovLy8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBob29rcyB9IGZyb20gJ2JvdGZyYW1ld29yay13ZWJjaGF0LWFwaSc7XG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgUmVhY3QsIHsgdXNlQ2FsbGJhY2ssIHVzZVJlZiB9IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IEF0dGFjaG1lbnRJY29uIGZyb20gJy4vQXNzZXRzL0F0dGFjaG1lbnRJY29uJztcbmltcG9ydCBjb25uZWN0VG9XZWJDaGF0IGZyb20gJy4uL2Nvbm5lY3RUb1dlYkNoYXQnO1xuaW1wb3J0IGRvd25zY2FsZUltYWdlVG9EYXRhVVJMIGZyb20gJy4uL1V0aWxzL2Rvd25zY2FsZUltYWdlVG9EYXRhVVJML2luZGV4JztcbmltcG9ydCBJY29uQnV0dG9uIGZyb20gJy4vSWNvbkJ1dHRvbic7XG5pbXBvcnQgdXNlU2VuZEZpbGVzIGZyb20gJy4uL2hvb2tzL3VzZVNlbmRGaWxlcyc7XG5pbXBvcnQgdXNlU3R5bGVTZXQgZnJvbSAnLi4vaG9va3MvdXNlU3R5bGVTZXQnO1xuaW1wb3J0IHVzZVN0eWxlVG9FbW90aW9uT2JqZWN0IGZyb20gJy4uL2hvb2tzL2ludGVybmFsL3VzZVN0eWxlVG9FbW90aW9uT2JqZWN0JztcblxuY29uc3QgeyB1c2VEaXNhYmxlZCwgdXNlTG9jYWxpemVyIH0gPSBob29rcztcblxuY29uc3QgUk9PVF9TVFlMRSA9IHtcbiAgJyYud2ViY2hhdF9fdXBsb2FkLWJ1dHRvbic6IHtcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuXG4gICAgJyYgLndlYmNoYXRfX3VwbG9hZC1idXR0b24tLWZpbGUtaW5wdXQnOiB7XG4gICAgICBoZWlnaHQ6IDAsXG4gICAgICB3aWR0aDogMCxcbiAgICAgIG9wYWNpdHk6IDAsXG4gICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgIGxlZnQ6IDAsXG4gICAgICB0b3A6IDBcbiAgICB9XG4gIH1cbn07XG5cbmNvbnN0IFBSRVZFTlRfREVGQVVMVF9IQU5ETEVSID0gZXZlbnQgPT4gZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuYXN5bmMgZnVuY3Rpb24gbWFrZVRodW1ibmFpbChmaWxlLCB3aWR0aCwgaGVpZ2h0LCBjb250ZW50VHlwZSwgcXVhbGl0eSkge1xuICBpZiAoL1xcLihnaWZ8anBlP2d8cG5nKSQvaXUudGVzdChmaWxlLm5hbWUpKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBhd2FpdCBkb3duc2NhbGVJbWFnZVRvRGF0YVVSTChmaWxlLCB3aWR0aCwgaGVpZ2h0LCBjb250ZW50VHlwZSwgcXVhbGl0eSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUud2FybihgV2ViIENoYXQ6IEZhaWxlZCB0byBkb3duc2NhbGUgaW1hZ2UgZHVlIHRvICR7ZXJyb3J9LmApO1xuICAgIH1cbiAgfVxufVxuXG5jb25zdCBjb25uZWN0VXBsb2FkQnV0dG9uID0gKC4uLnNlbGVjdG9ycykgPT5cbiAgY29ubmVjdFRvV2ViQ2hhdChcbiAgICAoe1xuICAgICAgZGlzYWJsZWQsXG4gICAgICBsYW5ndWFnZSxcbiAgICAgIHNlbmRGaWxlcyxcbiAgICAgIHN0eWxlU2V0OiB7XG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICBlbmFibGVVcGxvYWRUaHVtYm5haWwsXG4gICAgICAgICAgdXBsb2FkVGh1bWJuYWlsQ29udGVudFR5cGUsXG4gICAgICAgICAgdXBsb2FkVGh1bWJuYWlsSGVpZ2h0LFxuICAgICAgICAgIHVwbG9hZFRodW1ibmFpbFF1YWxpdHksXG4gICAgICAgICAgdXBsb2FkVGh1bWJuYWlsV2lkdGhcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pID0+ICh7XG4gICAgICBkaXNhYmxlZCxcbiAgICAgIGxhbmd1YWdlLFxuICAgICAgc2VuZEZpbGVzOiBhc3luYyBmaWxlcyA9PiB7XG4gICAgICAgIGlmIChmaWxlcyAmJiBmaWxlcy5sZW5ndGgpIHtcbiAgICAgICAgICAvLyBUT0RPOiBbUDNdIFdlIG5lZWQgdG8gZmluZCByZXZva2VPYmplY3RVUkwgb24gdGhlIFVJIHNpZGVcbiAgICAgICAgICAvLyAgICAgICBSZWR1eCBzdG9yZSBzaG91bGQgbm90IGtub3cgYWJvdXQgdGhlIGJyb3dzZXIgZW52aXJvbm1lbnRcbiAgICAgICAgICAvLyAgICAgICBPbmUgZml4IGlzIHRvIHVzZSBBcnJheUJ1ZmZlciBpbnN0ZWFkIG9mIG9iamVjdCBVUkwsIGJ1dCB0aGF0IHdvdWxkIHJlcXVpcmVzIGNoYW5nZSB0byBEaXJlY3RMaW5lSlNcbiAgICAgICAgICBzZW5kRmlsZXMoXG4gICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgICAgICAgW10ubWFwLmNhbGwoZmlsZXMsIGFzeW5jIGZpbGUgPT4gKHtcbiAgICAgICAgICAgICAgICBuYW1lOiBmaWxlLm5hbWUsXG4gICAgICAgICAgICAgICAgc2l6ZTogZmlsZS5zaXplLFxuICAgICAgICAgICAgICAgIHVybDogd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoZmlsZSksXG4gICAgICAgICAgICAgICAgLi4uKGVuYWJsZVVwbG9hZFRodW1ibmFpbCAmJiB7XG4gICAgICAgICAgICAgICAgICB0aHVtYm5haWw6IGF3YWl0IG1ha2VUaHVtYm5haWwoXG4gICAgICAgICAgICAgICAgICAgIGZpbGUsXG4gICAgICAgICAgICAgICAgICAgIHVwbG9hZFRodW1ibmFpbFdpZHRoLFxuICAgICAgICAgICAgICAgICAgICB1cGxvYWRUaHVtYm5haWxIZWlnaHQsXG4gICAgICAgICAgICAgICAgICAgIHVwbG9hZFRodW1ibmFpbENvbnRlbnRUeXBlLFxuICAgICAgICAgICAgICAgICAgICB1cGxvYWRUaHVtYm5haWxRdWFsaXR5XG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgfSkpXG4gICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pLFxuICAgIC4uLnNlbGVjdG9yc1xuICApO1xuXG5jb25zdCBVcGxvYWRCdXR0b24gPSAoeyBjbGFzc05hbWUgfSkgPT4ge1xuICBjb25zdCBbeyB1cGxvYWRCdXR0b246IHVwbG9hZEJ1dHRvblN0eWxlU2V0IH1dID0gdXNlU3R5bGVTZXQoKTtcbiAgY29uc3QgW2Rpc2FibGVkXSA9IHVzZURpc2FibGVkKCk7XG4gIGNvbnN0IGlucHV0UmVmID0gdXNlUmVmKCk7XG4gIGNvbnN0IGxvY2FsaXplID0gdXNlTG9jYWxpemVyKCk7XG4gIGNvbnN0IHJvb3RDbGFzc05hbWUgPSB1c2VTdHlsZVRvRW1vdGlvbk9iamVjdCgpKFJPT1RfU1RZTEUpICsgJyc7XG4gIGNvbnN0IHNlbmRGaWxlcyA9IHVzZVNlbmRGaWxlcygpO1xuXG4gIGNvbnN0IHsgY3VycmVudCB9ID0gaW5wdXRSZWY7XG4gIGNvbnN0IHVwbG9hZEZpbGVTdHJpbmcgPSBsb2NhbGl6ZSgnVEVYVF9JTlBVVF9VUExPQURfQlVUVE9OX0FMVCcpO1xuXG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGN1cnJlbnQgJiYgY3VycmVudC5jbGljaygpO1xuICB9LCBbY3VycmVudF0pO1xuXG4gIGNvbnN0IGhhbmRsZUZpbGVDaGFuZ2UgPSB1c2VDYWxsYmFjayhcbiAgICAoeyB0YXJnZXQ6IHsgZmlsZXMgfSB9KSA9PiB7XG4gICAgICBzZW5kRmlsZXMoZmlsZXMpO1xuXG4gICAgICBpZiAoY3VycmVudCkge1xuICAgICAgICBjdXJyZW50LnZhbHVlID0gbnVsbDtcbiAgICAgIH1cbiAgICB9LFxuICAgIFtjdXJyZW50LCBzZW5kRmlsZXNdXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhyb290Q2xhc3NOYW1lLCAnd2ViY2hhdF9fdXBsb2FkLWJ1dHRvbicsIHVwbG9hZEJ1dHRvblN0eWxlU2V0ICsgJycsIGNsYXNzTmFtZSl9PlxuICAgICAgPGlucHV0XG4gICAgICAgIGFyaWEtZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICBjbGFzc05hbWU9XCJ3ZWJjaGF0X191cGxvYWQtYnV0dG9uLS1maWxlLWlucHV0XCJcbiAgICAgICAgbXVsdGlwbGU9e3RydWV9XG4gICAgICAgIG9uQ2hhbmdlPXtkaXNhYmxlZCA/IHVuZGVmaW5lZCA6IGhhbmRsZUZpbGVDaGFuZ2V9XG4gICAgICAgIG9uQ2xpY2s9e2Rpc2FibGVkID8gUFJFVkVOVF9ERUZBVUxUX0hBTkRMRVIgOiB1bmRlZmluZWR9XG4gICAgICAgIHJlYWRPbmx5PXtkaXNhYmxlZH1cbiAgICAgICAgcmVmPXtpbnB1dFJlZn1cbiAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgdHlwZT1cImZpbGVcIlxuICAgICAgLz5cbiAgICAgIDxJY29uQnV0dG9uIGFsdD17dXBsb2FkRmlsZVN0cmluZ30gYXJpYS1sYWJlbD17dXBsb2FkRmlsZVN0cmluZ30gZGlzYWJsZWQ9e2Rpc2FibGVkfSBvbkNsaWNrPXtoYW5kbGVDbGlja30+XG4gICAgICAgIDxBdHRhY2htZW50SWNvbiAvPlxuICAgICAgPC9JY29uQnV0dG9uPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuVXBsb2FkQnV0dG9uLmRlZmF1bHRQcm9wcyA9IHtcbiAgY2xhc3NOYW1lOiB1bmRlZmluZWRcbn07XG5cblVwbG9hZEJ1dHRvbi5wcm9wVHlwZXMgPSB7XG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgVXBsb2FkQnV0dG9uO1xuXG5leHBvcnQgeyBjb25uZWN0VXBsb2FkQnV0dG9uIH07XG4iXX0=
277
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9TZW5kQm94L1VwbG9hZEJ1dHRvbi50c3giXSwibmFtZXMiOlsidXNlRGlzYWJsZWQiLCJob29rcyIsInVzZUxvY2FsaXplciIsIlJPT1RfU1RZTEUiLCJkaXNwbGF5Iiwib3ZlcmZsb3ciLCJwb3NpdGlvbiIsImhlaWdodCIsIndpZHRoIiwib3BhY2l0eSIsImxlZnQiLCJ0b3AiLCJQUkVWRU5UX0RFRkFVTFRfSEFORExFUiIsImV2ZW50IiwicHJldmVudERlZmF1bHQiLCJtYWtlVGh1bWJuYWlsIiwiZmlsZSIsImNvbnRlbnRUeXBlIiwicXVhbGl0eSIsInRlc3QiLCJuYW1lIiwiY29uc29sZSIsIndhcm4iLCJjb25uZWN0VXBsb2FkQnV0dG9uIiwic2VsZWN0b3JzIiwiY29ubmVjdFRvV2ViQ2hhdCIsImRpc2FibGVkIiwibGFuZ3VhZ2UiLCJzZW5kRmlsZXMiLCJzdHlsZVNldCIsIm9wdGlvbnMiLCJlbmFibGVVcGxvYWRUaHVtYm5haWwiLCJ1cGxvYWRUaHVtYm5haWxDb250ZW50VHlwZSIsInVwbG9hZFRodW1ibmFpbEhlaWdodCIsInVwbG9hZFRodW1ibmFpbFF1YWxpdHkiLCJ1cGxvYWRUaHVtYm5haWxXaWR0aCIsImZpbGVzIiwibGVuZ3RoIiwiUHJvbWlzZSIsImFsbCIsIm1hcCIsImNhbGwiLCJzaXplIiwidXJsIiwid2luZG93IiwiVVJMIiwiY3JlYXRlT2JqZWN0VVJMIiwidGh1bWJuYWlsIiwiVXBsb2FkQnV0dG9uIiwiY2xhc3NOYW1lIiwidXBsb2FkQnV0dG9uU3R5bGVTZXQiLCJ1cGxvYWRCdXR0b24iLCJpbnB1dFJlZiIsImxvY2FsaXplIiwicm9vdENsYXNzTmFtZSIsImN1cnJlbnQiLCJ1cGxvYWRGaWxlU3RyaW5nIiwiaGFuZGxlQ2xpY2siLCJjbGljayIsImhhbmRsZUZpbGVDaGFuZ2UiLCJ0YXJnZXQiLCJ2YWx1ZSIsInVuZGVmaW5lZCIsImRlZmF1bHRQcm9wcyIsInByb3BUeXBlcyIsIlByb3BUeXBlcyIsInN0cmluZyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLElBQVFBLFdBQVIsR0FBc0NDLDZCQUF0QyxDQUFRRCxXQUFSO0FBQUEsSUFBcUJFLFlBQXJCLEdBQXNDRCw2QkFBdEMsQ0FBcUJDLFlBQXJCO0FBRUEsSUFBTUMsVUFBVSxHQUFHO0FBQ2pCLDhCQUE0QjtBQUMxQkMsSUFBQUEsT0FBTyxFQUFFLE1BRGlCO0FBRTFCQyxJQUFBQSxRQUFRLEVBQUUsUUFGZ0I7QUFHMUJDLElBQUFBLFFBQVEsRUFBRSxVQUhnQjtBQUsxQiw2Q0FBeUM7QUFDdkNDLE1BQUFBLE1BQU0sRUFBRSxDQUQrQjtBQUV2Q0MsTUFBQUEsS0FBSyxFQUFFLENBRmdDO0FBR3ZDQyxNQUFBQSxPQUFPLEVBQUUsQ0FIOEI7QUFJdkNILE1BQUFBLFFBQVEsRUFBRSxVQUo2QjtBQUt2Q0ksTUFBQUEsSUFBSSxFQUFFLENBTGlDO0FBTXZDQyxNQUFBQSxHQUFHLEVBQUU7QUFOa0M7QUFMZjtBQURYLENBQW5COztBQWlCQSxJQUFNQyx1QkFBdUIsR0FBRyxTQUExQkEsdUJBQTBCLENBQUFDLEtBQUs7QUFBQSxTQUFJQSxLQUFLLENBQUNDLGNBQU4sRUFBSjtBQUFBLENBQXJDOztTQUVlQyxhOzs7OzsyRUFBZixrQkFBNkJDLElBQTdCLEVBQW1DUixLQUFuQyxFQUEwQ0QsTUFBMUMsRUFBa0RVLFdBQWxELEVBQStEQyxPQUEvRDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsaUJBQ00sc0JBQXVCQyxJQUF2QixDQUE0QkgsSUFBSSxDQUFDSSxJQUFqQyxDQUROO0FBQUE7QUFBQTtBQUFBOztBQUFBO0FBQUE7QUFBQSxtQkFHbUIsb0JBQXdCSixJQUF4QixFQUE4QlIsS0FBOUIsRUFBcUNELE1BQXJDLEVBQTZDVSxXQUE3QyxFQUEwREMsT0FBMUQsQ0FIbkI7O0FBQUE7QUFBQTs7QUFBQTtBQUFBO0FBQUE7QUFLTUcsWUFBQUEsT0FBTyxDQUFDQyxJQUFSOztBQUxOO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEc7Ozs7QUFVQSxJQUFNQyxtQkFBbUIsR0FBRyxTQUF0QkEsbUJBQXNCO0FBQUEsb0NBQUlDLFNBQUo7QUFBSUEsSUFBQUEsU0FBSjtBQUFBOztBQUFBLFNBQzFCQyx5Q0FDRTtBQUFBLFFBQ0VDLFFBREYsUUFDRUEsUUFERjtBQUFBLFFBRUVDLFFBRkYsUUFFRUEsUUFGRjtBQUFBLFFBR0VDLFVBSEYsUUFHRUEsU0FIRjtBQUFBLHFDQUlFQyxRQUpGLENBS0lDLE9BTEo7QUFBQSxRQU1NQyxxQkFOTix5QkFNTUEscUJBTk47QUFBQSxRQU9NQywwQkFQTix5QkFPTUEsMEJBUE47QUFBQSxRQVFNQyxxQkFSTix5QkFRTUEscUJBUk47QUFBQSxRQVNNQyxzQkFUTix5QkFTTUEsc0JBVE47QUFBQSxRQVVNQyxvQkFWTix5QkFVTUEsb0JBVk47QUFBQSxXQWFPO0FBQ0xULE1BQUFBLFFBQVEsRUFBUkEsUUFESztBQUVMQyxNQUFBQSxRQUFRLEVBQVJBLFFBRks7QUFHTEMsTUFBQUEsU0FBUztBQUFBLGtGQUFFLGtCQUFNUSxLQUFOO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSx3QkFDTEEsS0FBSyxJQUFJQSxLQUFLLENBQUNDLE1BRFY7QUFBQTtBQUFBO0FBQUE7O0FBQUEsaUNBS1BULFVBTE87QUFBQTtBQUFBLHlCQU1DVSxPQUFPLENBQUNDLEdBQVIsQ0FDSixHQUFHQyxHQUFILENBQU9DLElBQVAsQ0FBWUwsS0FBWjtBQUFBLHdGQUFtQixpQkFBTXBCLElBQU47QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDakJJLGdDQUFBQSxJQUFJLEVBQUVKLElBQUksQ0FBQ0ksSUFETTtBQUVqQnNCLGdDQUFBQSxJQUFJLEVBQUUxQixJQUFJLENBQUMwQixJQUZNO0FBR2pCQyxnQ0FBQUEsR0FBRyxFQUFFQyxNQUFNLENBQUNDLEdBQVAsQ0FBV0MsZUFBWCxDQUEyQjlCLElBQTNCO0FBSFk7QUFBQSw0Q0FJYmUscUJBSmE7O0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQUE7QUFBQSxxQ0FLRWhCLGFBQWEsQ0FDNUJDLElBRDRCLEVBRTVCbUIsb0JBRjRCLEVBRzVCRixxQkFINEIsRUFJNUJELDBCQUo0QixFQUs1QkUsc0JBTDRCLENBTGY7O0FBQUE7QUFBQTtBQUFBO0FBS2ZhLGdDQUFBQSxTQUxlO0FBQUE7O0FBQUE7QUFBQTtBQUFBOztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLHFCQUFuQjs7QUFBQTtBQUFBO0FBQUE7QUFBQSxzQkFESSxDQU5EOztBQUFBO0FBQUE7QUFBQTs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxTQUFGOztBQUFBO0FBQUE7QUFBQTs7QUFBQTtBQUFBO0FBSEosS0FiUDtBQUFBLEdBREYsU0EyQ0t2QixTQTNDTCxFQUQwQjtBQUFBLENBQTVCOzs7O0FBbURBLElBQU13QixZQUFtQyxHQUFHLFNBQXRDQSxZQUFzQyxRQUFtQjtBQUFBLE1BQWhCQyxTQUFnQixTQUFoQkEsU0FBZ0I7O0FBQzdELHFCQUFpRCw0QkFBakQ7QUFBQTtBQUFBLE1BQXVCQyxvQkFBdkIsb0JBQVNDLFlBQVQ7O0FBQ0EscUJBQW1CbkQsV0FBVyxFQUE5QjtBQUFBO0FBQUEsTUFBTzBCLFFBQVA7O0FBQ0EsTUFBTTBCLFFBQVEsR0FBRyxvQkFBakI7QUFDQSxNQUFNQyxRQUFRLEdBQUduRCxZQUFZLEVBQTdCO0FBQ0EsTUFBTW9ELGFBQWEsR0FBRyx3Q0FBMEJuRCxVQUExQixJQUF3QyxFQUE5RDtBQUNBLE1BQU15QixTQUFTLEdBQUcsNEJBQWxCO0FBRUEsTUFBUTJCLE9BQVIsR0FBb0JILFFBQXBCLENBQVFHLE9BQVI7QUFDQSxNQUFNQyxnQkFBZ0IsR0FBR0gsUUFBUSxDQUFDLDhCQUFELENBQWpDO0FBRUEsTUFBTUksV0FBVyxHQUFHLHdCQUFZLFlBQU07QUFDcENGLElBQUFBLE9BQU8sSUFBSUEsT0FBTyxDQUFDRyxLQUFSLEVBQVg7QUFDRCxHQUZtQixFQUVqQixDQUFDSCxPQUFELENBRmlCLENBQXBCO0FBSUEsTUFBTUksZ0JBQWdCLEdBQUcsd0JBQ3ZCLGlCQUEyQjtBQUFBLFFBQWR2QixLQUFjLFNBQXhCd0IsTUFBd0IsQ0FBZHhCLEtBQWM7QUFDekJSLElBQUFBLFNBQVMsQ0FBQ1EsS0FBRCxDQUFUOztBQUVBLFFBQUltQixPQUFKLEVBQWE7QUFDWEEsTUFBQUEsT0FBTyxDQUFDTSxLQUFSLEdBQWdCLElBQWhCO0FBQ0Q7QUFDRixHQVBzQixFQVF2QixDQUFDTixPQUFELEVBQVUzQixTQUFWLENBUnVCLENBQXpCO0FBV0Esc0JBQ0U7QUFBSyxJQUFBLFNBQVMsRUFBRSx5QkFBVzBCLGFBQVgsRUFBMEIsd0JBQTFCLEVBQW9ESixvQkFBb0IsR0FBRyxFQUEzRSxFQUErRUQsU0FBL0U7QUFBaEIsa0JBQ0U7QUFDRSxxQkFBZXZCLFFBRGpCO0FBRUUsbUJBQVksTUFGZDtBQUdFLElBQUEsU0FBUyxFQUFDLG9DQUhaO0FBSUUsSUFBQSxRQUFRLEVBQUUsSUFKWjtBQUtFLElBQUEsUUFBUSxFQUFFQSxRQUFRLEdBQUdvQyxTQUFILEdBQWVILGdCQUxuQztBQU1FLElBQUEsT0FBTyxFQUFFakMsUUFBUSxHQUFHZCx1QkFBSCxHQUE2QmtELFNBTmhEO0FBT0UsSUFBQSxRQUFRLEVBQUVwQyxRQVBaO0FBUUUsSUFBQSxHQUFHLEVBQUUwQixRQVJQO0FBU0UsSUFBQSxJQUFJLEVBQUMsUUFUUDtBQVVFLElBQUEsUUFBUSxFQUFFLENBQUMsQ0FWYjtBQVdFLElBQUEsSUFBSSxFQUFDO0FBWFAsSUFERixlQWNFLDZCQUFDLG1CQUFEO0FBQVksSUFBQSxHQUFHLEVBQUVJLGdCQUFqQjtBQUFtQyxrQkFBWUEsZ0JBQS9DO0FBQWlFLElBQUEsUUFBUSxFQUFFOUIsUUFBM0U7QUFBcUYsSUFBQSxPQUFPLEVBQUUrQjtBQUE5RixrQkFDRSw2QkFBQyx1QkFBRCxPQURGLENBZEYsQ0FERjtBQW9CRCxDQTlDRDs7QUFnREFULFlBQVksQ0FBQ2UsWUFBYixHQUE0QjtBQUMxQmQsRUFBQUEsU0FBUyxFQUFFYTtBQURlLENBQTVCO0FBSUFkLFlBQVksQ0FBQ2dCLFNBQWIsR0FBeUI7QUFDdkJmLEVBQUFBLFNBQVMsRUFBRWdCLG1CQUFVQztBQURFLENBQXpCO2VBSWVsQixZIiwic291cmNlUm9vdCI6ImNvbXBvbmVudDovLy8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBob29rcyB9IGZyb20gJ2JvdGZyYW1ld29yay13ZWJjaGF0LWFwaSc7XG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgUmVhY3QsIHsgRkMsIHVzZUNhbGxiYWNrLCB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCBBdHRhY2htZW50SWNvbiBmcm9tICcuL0Fzc2V0cy9BdHRhY2htZW50SWNvbic7XG5pbXBvcnQgY29ubmVjdFRvV2ViQ2hhdCBmcm9tICcuLi9jb25uZWN0VG9XZWJDaGF0JztcbmltcG9ydCBkb3duc2NhbGVJbWFnZVRvRGF0YVVSTCBmcm9tICcuLi9VdGlscy9kb3duc2NhbGVJbWFnZVRvRGF0YVVSTC9pbmRleCc7XG5pbXBvcnQgSWNvbkJ1dHRvbiBmcm9tICcuL0ljb25CdXR0b24nO1xuaW1wb3J0IHVzZVNlbmRGaWxlcyBmcm9tICcuLi9ob29rcy91c2VTZW5kRmlsZXMnO1xuaW1wb3J0IHVzZVN0eWxlU2V0IGZyb20gJy4uL2hvb2tzL3VzZVN0eWxlU2V0JztcbmltcG9ydCB1c2VTdHlsZVRvRW1vdGlvbk9iamVjdCBmcm9tICcuLi9ob29rcy9pbnRlcm5hbC91c2VTdHlsZVRvRW1vdGlvbk9iamVjdCc7XG5cbmNvbnN0IHsgdXNlRGlzYWJsZWQsIHVzZUxvY2FsaXplciB9ID0gaG9va3M7XG5cbmNvbnN0IFJPT1RfU1RZTEUgPSB7XG4gICcmLndlYmNoYXRfX3VwbG9hZC1idXR0b24nOiB7XG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcblxuICAgICcmIC53ZWJjaGF0X191cGxvYWQtYnV0dG9uLS1maWxlLWlucHV0Jzoge1xuICAgICAgaGVpZ2h0OiAwLFxuICAgICAgd2lkdGg6IDAsXG4gICAgICBvcGFjaXR5OiAwLFxuICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICBsZWZ0OiAwLFxuICAgICAgdG9wOiAwXG4gICAgfVxuICB9XG59O1xuXG5jb25zdCBQUkVWRU5UX0RFRkFVTFRfSEFORExFUiA9IGV2ZW50ID0+IGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbmFzeW5jIGZ1bmN0aW9uIG1ha2VUaHVtYm5haWwoZmlsZSwgd2lkdGgsIGhlaWdodCwgY29udGVudFR5cGUsIHF1YWxpdHkpIHtcbiAgaWYgKC9cXC4oZ2lmfGpwZT9nfHBuZykkL2l1LnRlc3QoZmlsZS5uYW1lKSkge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYXdhaXQgZG93bnNjYWxlSW1hZ2VUb0RhdGFVUkwoZmlsZSwgd2lkdGgsIGhlaWdodCwgY29udGVudFR5cGUsIHF1YWxpdHkpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLndhcm4oYFdlYiBDaGF0OiBGYWlsZWQgdG8gZG93bnNjYWxlIGltYWdlIGR1ZSB0byAke2Vycm9yfS5gKTtcbiAgICB9XG4gIH1cbn1cblxuY29uc3QgY29ubmVjdFVwbG9hZEJ1dHRvbiA9ICguLi5zZWxlY3RvcnMpID0+XG4gIGNvbm5lY3RUb1dlYkNoYXQoXG4gICAgKHtcbiAgICAgIGRpc2FibGVkLFxuICAgICAgbGFuZ3VhZ2UsXG4gICAgICBzZW5kRmlsZXMsXG4gICAgICBzdHlsZVNldDoge1xuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgZW5hYmxlVXBsb2FkVGh1bWJuYWlsLFxuICAgICAgICAgIHVwbG9hZFRodW1ibmFpbENvbnRlbnRUeXBlLFxuICAgICAgICAgIHVwbG9hZFRodW1ibmFpbEhlaWdodCxcbiAgICAgICAgICB1cGxvYWRUaHVtYm5haWxRdWFsaXR5LFxuICAgICAgICAgIHVwbG9hZFRodW1ibmFpbFdpZHRoXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KSA9PiAoe1xuICAgICAgZGlzYWJsZWQsXG4gICAgICBsYW5ndWFnZSxcbiAgICAgIHNlbmRGaWxlczogYXN5bmMgZmlsZXMgPT4ge1xuICAgICAgICBpZiAoZmlsZXMgJiYgZmlsZXMubGVuZ3RoKSB7XG4gICAgICAgICAgLy8gVE9ETzogW1AzXSBXZSBuZWVkIHRvIGZpbmQgcmV2b2tlT2JqZWN0VVJMIG9uIHRoZSBVSSBzaWRlXG4gICAgICAgICAgLy8gICAgICAgUmVkdXggc3RvcmUgc2hvdWxkIG5vdCBrbm93IGFib3V0IHRoZSBicm93c2VyIGVudmlyb25tZW50XG4gICAgICAgICAgLy8gICAgICAgT25lIGZpeCBpcyB0byB1c2UgQXJyYXlCdWZmZXIgaW5zdGVhZCBvZiBvYmplY3QgVVJMLCBidXQgdGhhdCB3b3VsZCByZXF1aXJlcyBjaGFuZ2UgdG8gRGlyZWN0TGluZUpTXG4gICAgICAgICAgc2VuZEZpbGVzKFxuICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgICAgICAgIFtdLm1hcC5jYWxsKGZpbGVzLCBhc3luYyBmaWxlID0+ICh7XG4gICAgICAgICAgICAgICAgbmFtZTogZmlsZS5uYW1lLFxuICAgICAgICAgICAgICAgIHNpemU6IGZpbGUuc2l6ZSxcbiAgICAgICAgICAgICAgICB1cmw6IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGZpbGUpLFxuICAgICAgICAgICAgICAgIC4uLihlbmFibGVVcGxvYWRUaHVtYm5haWwgJiYge1xuICAgICAgICAgICAgICAgICAgdGh1bWJuYWlsOiBhd2FpdCBtYWtlVGh1bWJuYWlsKFxuICAgICAgICAgICAgICAgICAgICBmaWxlLFxuICAgICAgICAgICAgICAgICAgICB1cGxvYWRUaHVtYm5haWxXaWR0aCxcbiAgICAgICAgICAgICAgICAgICAgdXBsb2FkVGh1bWJuYWlsSGVpZ2h0LFxuICAgICAgICAgICAgICAgICAgICB1cGxvYWRUaHVtYm5haWxDb250ZW50VHlwZSxcbiAgICAgICAgICAgICAgICAgICAgdXBsb2FkVGh1bWJuYWlsUXVhbGl0eVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KSxcbiAgICAuLi5zZWxlY3RvcnNcbiAgKTtcblxudHlwZSBVcGxvYWRCdXR0b25Qcm9wcyA9IHtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xufTtcblxuY29uc3QgVXBsb2FkQnV0dG9uOiBGQzxVcGxvYWRCdXR0b25Qcm9wcz4gPSAoeyBjbGFzc05hbWUgfSkgPT4ge1xuICBjb25zdCBbeyB1cGxvYWRCdXR0b246IHVwbG9hZEJ1dHRvblN0eWxlU2V0IH1dID0gdXNlU3R5bGVTZXQoKTtcbiAgY29uc3QgW2Rpc2FibGVkXSA9IHVzZURpc2FibGVkKCk7XG4gIGNvbnN0IGlucHV0UmVmID0gdXNlUmVmPEhUTUxJbnB1dEVsZW1lbnQ+KCk7XG4gIGNvbnN0IGxvY2FsaXplID0gdXNlTG9jYWxpemVyKCk7XG4gIGNvbnN0IHJvb3RDbGFzc05hbWUgPSB1c2VTdHlsZVRvRW1vdGlvbk9iamVjdCgpKFJPT1RfU1RZTEUpICsgJyc7XG4gIGNvbnN0IHNlbmRGaWxlcyA9IHVzZVNlbmRGaWxlcygpO1xuXG4gIGNvbnN0IHsgY3VycmVudCB9ID0gaW5wdXRSZWY7XG4gIGNvbnN0IHVwbG9hZEZpbGVTdHJpbmcgPSBsb2NhbGl6ZSgnVEVYVF9JTlBVVF9VUExPQURfQlVUVE9OX0FMVCcpO1xuXG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGN1cnJlbnQgJiYgY3VycmVudC5jbGljaygpO1xuICB9LCBbY3VycmVudF0pO1xuXG4gIGNvbnN0IGhhbmRsZUZpbGVDaGFuZ2UgPSB1c2VDYWxsYmFjayhcbiAgICAoeyB0YXJnZXQ6IHsgZmlsZXMgfSB9KSA9PiB7XG4gICAgICBzZW5kRmlsZXMoZmlsZXMpO1xuXG4gICAgICBpZiAoY3VycmVudCkge1xuICAgICAgICBjdXJyZW50LnZhbHVlID0gbnVsbDtcbiAgICAgIH1cbiAgICB9LFxuICAgIFtjdXJyZW50LCBzZW5kRmlsZXNdXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhyb290Q2xhc3NOYW1lLCAnd2ViY2hhdF9fdXBsb2FkLWJ1dHRvbicsIHVwbG9hZEJ1dHRvblN0eWxlU2V0ICsgJycsIGNsYXNzTmFtZSl9PlxuICAgICAgPGlucHV0XG4gICAgICAgIGFyaWEtZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICBjbGFzc05hbWU9XCJ3ZWJjaGF0X191cGxvYWQtYnV0dG9uLS1maWxlLWlucHV0XCJcbiAgICAgICAgbXVsdGlwbGU9e3RydWV9XG4gICAgICAgIG9uQ2hhbmdlPXtkaXNhYmxlZCA/IHVuZGVmaW5lZCA6IGhhbmRsZUZpbGVDaGFuZ2V9XG4gICAgICAgIG9uQ2xpY2s9e2Rpc2FibGVkID8gUFJFVkVOVF9ERUZBVUxUX0hBTkRMRVIgOiB1bmRlZmluZWR9XG4gICAgICAgIHJlYWRPbmx5PXtkaXNhYmxlZH1cbiAgICAgICAgcmVmPXtpbnB1dFJlZn1cbiAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgdHlwZT1cImZpbGVcIlxuICAgICAgLz5cbiAgICAgIDxJY29uQnV0dG9uIGFsdD17dXBsb2FkRmlsZVN0cmluZ30gYXJpYS1sYWJlbD17dXBsb2FkRmlsZVN0cmluZ30gZGlzYWJsZWQ9e2Rpc2FibGVkfSBvbkNsaWNrPXtoYW5kbGVDbGlja30+XG4gICAgICAgIDxBdHRhY2htZW50SWNvbiAvPlxuICAgICAgPC9JY29uQnV0dG9uPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuVXBsb2FkQnV0dG9uLmRlZmF1bHRQcm9wcyA9IHtcbiAgY2xhc3NOYW1lOiB1bmRlZmluZWRcbn07XG5cblVwbG9hZEJ1dHRvbi5wcm9wVHlwZXMgPSB7XG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgVXBsb2FkQnV0dG9uO1xuXG5leHBvcnQgeyBjb25uZWN0VXBsb2FkQnV0dG9uIH07XG4iXX0=
@@ -0,0 +1,5 @@
1
+ export default function createActivitiesStyle(): {
2
+ margin: number;
3
+ padding: number;
4
+ };
5
+ //# sourceMappingURL=Activities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Activities.d.ts","sourceRoot":"","sources":["../../../src/Styles/StyleSet/Activities.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,UAAU,qBAAqB;;;EAK5C"}
@@ -0,0 +1,6 @@
1
+ import { StrictStyleOptions } from 'botframework-webchat-api';
2
+ export default function AudioAttachment({ avatarSize }: StrictStyleOptions): {
3
+ display: string;
4
+ minHeight: number;
5
+ };
6
+ //# sourceMappingURL=AudioAttachment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AudioAttachment.d.ts","sourceRoot":"","sources":["../../../src/Styles/StyleSet/AudioAttachment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE9D,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,EAAE,UAAU,EAAE,EAAE,kBAAkB;;;EAMzE"}
@@ -0,0 +1,4 @@
1
+ export default function AudioContent(): {
2
+ width: string;
3
+ };
4
+ //# sourceMappingURL=AudioContent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AudioContent.d.ts","sourceRoot":"","sources":["../../../src/Styles/StyleSet/AudioContent.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,UAAU,YAAY;;EAInC"}
@@ -0,0 +1,37 @@
1
+ import { StrictStyleOptions } from 'botframework-webchat-api';
2
+ export default function AutoResizeTextArea({ primaryFont }: StrictStyleOptions): {
3
+ '&.webchat__auto-resize-textarea': {
4
+ fontFamily: string;
5
+ overflow: string;
6
+ position: string;
7
+ '& .webchat__auto-resize-textarea__doppelganger': {
8
+ color: string;
9
+ height: string;
10
+ overflowY: string;
11
+ userSelect: string;
12
+ width: string;
13
+ whiteSpace: string;
14
+ wordBreak: string;
15
+ };
16
+ '& .webchat__auto-resize-textarea__textarea': {
17
+ appearance: string;
18
+ backgroundColor: string;
19
+ border: number;
20
+ color: string;
21
+ fontFamily: string;
22
+ fontSize: string;
23
+ height: string;
24
+ left: number;
25
+ margin: number;
26
+ outline: number;
27
+ overflowY: string;
28
+ padding: number;
29
+ position: string;
30
+ resize: string;
31
+ top: number;
32
+ width: string;
33
+ wordBreak: string;
34
+ };
35
+ };
36
+ };
37
+ //# sourceMappingURL=AutoResizeTextArea.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AutoResizeTextArea.d.ts","sourceRoot":"","sources":["../../../src/Styles/StyleSet/AutoResizeTextArea.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE9D,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,EAAE,WAAW,EAAE,EAAE,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsC7E"}
@@ -0,0 +1,9 @@
1
+ import { StrictStyleOptions } from 'botframework-webchat-api';
2
+ export default function createAvatarStyle({ avatarBorderRadius, avatarSize }: StrictStyleOptions): {
3
+ '&.webchat__defaultAvatar': {
4
+ borderRadius: string | number;
5
+ height: number;
6
+ width: number;
7
+ };
8
+ };
9
+ //# sourceMappingURL=Avatar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Avatar.d.ts","sourceRoot":"","sources":["../../../src/Styles/StyleSet/Avatar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE9D,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,EAAE,kBAAkB,EAAE,UAAU,EAAE,EAAE,kBAAkB;;;;;;EAQ/F"}
@@ -0,0 +1,77 @@
1
+ import { StrictStyleOptions } from 'botframework-webchat-api';
2
+ export default function createBasicTranscriptStyleSet({ paddingRegular, primaryFont, transcriptActivityVisualKeyboardIndicatorColor, transcriptActivityVisualKeyboardIndicatorStyle, transcriptActivityVisualKeyboardIndicatorWidth, transcriptTerminatorBackgroundColor, transcriptTerminatorBorderRadius, transcriptTerminatorColor, transcriptTerminatorFontSize, transcriptVisualKeyboardIndicatorColor, transcriptVisualKeyboardIndicatorStyle, transcriptVisualKeyboardIndicatorWidth }: StrictStyleOptions): {
3
+ '&.webchat__basic-transcript': {
4
+ '&:focus': {
5
+ outline: number;
6
+ '& .webchat__basic-transcript__activity-indicator.webchat__basic-transcript__activity-indicator--focus': {
7
+ borderColor: string;
8
+ borderStyle: string;
9
+ borderWidth: string | number;
10
+ boxSizing: string;
11
+ height: string;
12
+ left: number;
13
+ margin: number;
14
+ pointerEvents: string;
15
+ position: string;
16
+ top: number;
17
+ width: string;
18
+ };
19
+ };
20
+ '&:focus .webchat__basic-transcript__focus-indicator, .webchat__basic-transcript__terminator:focus + .webchat__basic-transcript__focus-indicator': {
21
+ height: string;
22
+ borderColor: string;
23
+ borderStyle: string;
24
+ borderWidth: string | number;
25
+ boxSizing: string;
26
+ pointerEvents: string;
27
+ position: string;
28
+ top: number;
29
+ width: string;
30
+ };
31
+ '& .webchat__basic-transcript__activity': {
32
+ paddingTop: number;
33
+ position: string;
34
+ '&:not(:first-child)': {
35
+ marginTop: number;
36
+ };
37
+ };
38
+ '& .webchat__basic-transcript__activity-box:not(:empty)': {
39
+ paddingBottom: number;
40
+ };
41
+ '& .webchat__basic-transcript__activity-sentinel': {
42
+ height: string;
43
+ left: number;
44
+ pointerEvents: string;
45
+ position: string;
46
+ top: number;
47
+ width: string;
48
+ };
49
+ '& .webchat__basic-transcript__terminator': {
50
+ bottom: number;
51
+ height: number;
52
+ outline: number;
53
+ position: string;
54
+ width: string;
55
+ };
56
+ '& .webchat__basic-transcript__terminator-body': {
57
+ bottom: number;
58
+ display: string;
59
+ justifyContent: string;
60
+ position: string;
61
+ width: string;
62
+ };
63
+ '& .webchat__basic-transcript__terminator:not(:focus) .webchat__basic-transcript__terminator-body': {
64
+ display: string;
65
+ };
66
+ '& .webchat__basic-transcript__terminator-text': {
67
+ backgroundColor: string;
68
+ borderRadius: string | number;
69
+ color: string;
70
+ fontFamily: string;
71
+ fontSize: string | number;
72
+ margin: number;
73
+ padding: number;
74
+ };
75
+ };
76
+ };
77
+ //# sourceMappingURL=BasicTranscript.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BasicTranscript.d.ts","sourceRoot":"","sources":["../../../src/Styles/StyleSet/BasicTranscript.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE9D,MAAM,CAAC,OAAO,UAAU,6BAA6B,CAAC,EACpD,cAAc,EACd,WAAW,EACX,8CAA8C,EAC9C,8CAA8C,EAC9C,8CAA8C,EAC9C,mCAAmC,EACnC,gCAAgC,EAChC,yBAAyB,EACzB,4BAA4B,EAC5B,sCAAsC,EACtC,sCAAsC,EACtC,sCAAsC,EACvC,EAAE,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsFpB"}
@@ -0,0 +1,5 @@
1
+ import { StrictStyleOptions } from 'botframework-webchat-api';
2
+ export default function createBubbleStyle({ bubbleBackground, bubbleBorderColor, bubbleBorderRadius, bubbleBorderStyle, bubbleBorderWidth, bubbleFromUserBackground, bubbleFromUserBorderColor, bubbleFromUserBorderRadius, bubbleFromUserBorderStyle, bubbleFromUserBorderWidth, bubbleFromUserNubOffset, bubbleFromUserNubSize, bubbleFromUserTextColor, bubbleMinHeight, bubbleNubOffset, bubbleNubSize, bubbleTextColor, messageActivityWordBreak, paddingRegular, transitionDuration }: StrictStyleOptions): {
3
+ '&.webchat__bubble': any;
4
+ };
5
+ //# sourceMappingURL=Bubble.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Bubble.d.ts","sourceRoot":"","sources":["../../../src/Styles/StyleSet/Bubble.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAI9D,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,EACxC,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,wBAAwB,EACxB,yBAAyB,EACzB,0BAA0B,EAC1B,yBAAyB,EACzB,yBAAyB,EACzB,uBAAuB,EACvB,qBAAqB,EACrB,uBAAuB,EACvB,eAAe,EACf,eAAe,EACf,aAAa,EACb,eAAe,EACf,wBAAwB,EACxB,cAAc,EACd,kBAAkB,EACnB,EAAE,kBAAkB;;EAwJpB"}
@@ -9,7 +9,7 @@ var _mirrorStyle = _interopRequireDefault(require("../mirrorStyle"));
9
9
 
10
10
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
11
 
12
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
12
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
13
13
 
14
14
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
15
15
 
@@ -0,0 +1,5 @@
1
+ import { StrictStyleOptions } from 'botframework-webchat-api';
2
+ export default function CarouselFilmStrip({ avatarSize, bubbleMaxWidth, paddingRegular, transitionDuration }: StrictStyleOptions): {
3
+ '&.webchat__carousel-filmstrip': any;
4
+ };
5
+ //# sourceMappingURL=CarouselFilmStrip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CarouselFilmStrip.d.ts","sourceRoot":"","sources":["../../../src/Styles/StyleSet/CarouselFilmStrip.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAI9D,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,EACxC,UAAU,EACV,cAAc,EACd,cAAc,EACd,kBAAkB,EACnB,EAAE,kBAAkB;;EAwFpB"}