@cometchat/chat-uikit-angular 4.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (249) hide show
  1. package/Calls/CallingExtension.d.ts +5 -0
  2. package/Calls/CallingExtensionDecorator.d.ts +17 -0
  3. package/Calls/CometChatCallButtons/cometchat-call-buttons/cometchat-call-buttons.component.d.ts +75 -0
  4. package/Calls/CometChatCallButtons/cometchat-call-buttons.module.d.ts +11 -0
  5. package/Calls/CometChatIncomingCall/cometchat-incoming-call/cometchat-incoming-call.component.d.ts +80 -0
  6. package/Calls/CometChatIncomingCall/cometchat-incoming-call.module.d.ts +11 -0
  7. package/Calls/CometChatOngoingCall/cometchat-ongoing-call/cometchat-ongoing-call.component.d.ts +26 -0
  8. package/Calls/CometChatOngoingCall/cometchat-ongoing-call.module.d.ts +9 -0
  9. package/Calls/CometChatOutgoingCall/cometchat-outgoing-call/cometchat-outgoing-call.component.d.ts +58 -0
  10. package/Calls/CometChatOutgoingCall/cometchat-outgoing-call.module.d.ts +10 -0
  11. package/CometChatAddMembers/cometchat-add-members/cometchat-add-members.component.d.ts +109 -0
  12. package/CometChatAddMembers/cometchat-add-members.module.d.ts +12 -0
  13. package/CometChatBannedMembers/cometchat-banned-members/cometchat-banned-members.component.d.ts +140 -0
  14. package/CometChatBannedMembers/cometchat-banned-members.module.d.ts +13 -0
  15. package/CometChatConversations/cometchat-conversations/cometchat-conversations.component.d.ts +335 -0
  16. package/CometChatConversations/cometchat-conversations.module.d.ts +10 -0
  17. package/CometChatConversationsWithMessages/cometchat-conversations-with-messages/cometchat-conversations-with-messages.component.d.ts +86 -0
  18. package/CometChatConversationsWithMessages/cometchat-conversations-with-messages.module.d.ts +12 -0
  19. package/CometChatDetails/cometchat-details/cometchat-details.component.d.ts +149 -0
  20. package/CometChatDetails/cometchat-details.module.d.ts +12 -0
  21. package/CometChatGroupMembers/cometchat-group-members/cometchat-group-members.component.d.ts +145 -0
  22. package/CometChatGroupMembers/cometchat-group-members.module.d.ts +13 -0
  23. package/CometChatGroups/cometchat-groups/cometchat-groups.component.d.ts +136 -0
  24. package/CometChatGroups/cometchat-groups.module.d.ts +10 -0
  25. package/CometChatGroupsWithMessages/cometchat-groups-with-messages/cometchat-groups-with-messages.component.d.ts +100 -0
  26. package/CometChatGroupsWithMessages/cometchat-groups-with-messages.module.d.ts +13 -0
  27. package/CometChatList/cometchat-list.component.d.ts +87 -0
  28. package/CometChatList/cometchat-list.module.d.ts +10 -0
  29. package/CometChatMessageBubble/cometchat-message-bubble/cometchat-message-bubble.component.d.ts +62 -0
  30. package/CometChatMessageBubble/cometchat-message-bubble.module.d.ts +8 -0
  31. package/CometChatMessageComposer/cometchat-message-composer/cometchat-message-composer.component.d.ts +165 -0
  32. package/CometChatMessageComposer/cometchat-message-composer.module.d.ts +9 -0
  33. package/CometChatMessageHeader/cometchat-message-header/cometchat-message-header.component.d.ts +85 -0
  34. package/CometChatMessageHeader/cometchat-message-header.module.d.ts +9 -0
  35. package/CometChatMessageList/cometchat-message-list/cometchat-message-list.component.d.ts +510 -0
  36. package/CometChatMessageList/cometchat-message-list.module.d.ts +11 -0
  37. package/CometChatMessages/cometchat-messages/cometchat-messages.component.d.ts +136 -0
  38. package/CometChatMessages/cometchat-messages.module.d.ts +15 -0
  39. package/CometChatTheme.service.d.ts +7 -0
  40. package/CometChatThreadedMessages/cometchat-threaded-messages/cometchat-threaded-messages.component.d.ts +73 -0
  41. package/CometChatThreadedMessages/cometchat-threaded-messages.module.d.ts +12 -0
  42. package/CometChatTransferOwnership/cometchat-transfer-ownership/cometchat-transfer-ownership.component.d.ts +88 -0
  43. package/CometChatTransferOwnership/cometchat-transfer-ownership.module.d.ts +10 -0
  44. package/CometChatUsers/cometchat-users/cometchat-users.component.d.ts +105 -0
  45. package/CometChatUsers/cometchat-users.module.d.ts +11 -0
  46. package/CometChatUsersWithMessages/cometchat-users-with-messages/cometchat-users-with-messages.component.d.ts +71 -0
  47. package/CometChatUsersWithMessages/cometchat-users-with-messages.module.d.ts +12 -0
  48. package/Extensions/CollaborativeDocument/CollaborativeDocumentExtension.d.ts +9 -0
  49. package/Extensions/CollaborativeDocument/CollaborativeDocumentExtensionDecorator.d.ts +17 -0
  50. package/Extensions/CollaborativeWhiteboard/CollaborativeWhiteboardExtension.d.ts +9 -0
  51. package/Extensions/CollaborativeWhiteboard/CollaborativeWhiteboardExtensionDecorator.d.ts +17 -0
  52. package/Extensions/ImageModeration/ImageModerationExtension.d.ts +5 -0
  53. package/Extensions/ImageModeration/ImageModerationExtensionDecorator.d.ts +6 -0
  54. package/Extensions/LinkPreviewExtension/LinkPreviewExtension.d.ts +5 -0
  55. package/Extensions/LinkPreviewExtension/LinkPreviewExtensionDecorator.d.ts +6 -0
  56. package/Extensions/MessageTranslation/MessageTranslationExtension.d.ts +9 -0
  57. package/Extensions/MessageTranslation/MessageTranslationExtensionDecorator.d.ts +12 -0
  58. package/Extensions/PollsExtension/PollsExtension.d.ts +5 -0
  59. package/Extensions/PollsExtension/PollsExtensionDecorator.d.ts +15 -0
  60. package/Extensions/Reactions/ReactionExtension.d.ts +5 -0
  61. package/Extensions/Reactions/ReactionExtensionDecorator.d.ts +10 -0
  62. package/Extensions/SmartReplies/SmartRepliesExtension.d.ts +9 -0
  63. package/Extensions/SmartReplies/SmartRepliesExtensionDecorator.d.ts +16 -0
  64. package/Extensions/Stickers/StickersExtension.d.ts +9 -0
  65. package/Extensions/Stickers/StickersExtensionDecorator.d.ts +27 -0
  66. package/Extensions/TextModerator/TextModeratorExtension.d.ts +5 -0
  67. package/Extensions/TextModerator/TextModeratorExtensionDecorator.d.ts +9 -0
  68. package/Extensions/ThumbnailGeneration/ThumbnailGenerationExtension.d.ts +5 -0
  69. package/Extensions/ThumbnailGeneration/ThumbnailGenerationExtensionDecorator.d.ts +6 -0
  70. package/README.md +60 -0
  71. package/Shared/CometChatUIkit/CometChatUIKit.d.ts +18 -0
  72. package/Shared/Framework/ChatConfigurator.d.ts +8 -0
  73. package/Shared/Framework/DataSource.d.ts +29 -0
  74. package/Shared/Framework/DataSourceDecorator.d.ts +32 -0
  75. package/Shared/Framework/ExtensionDataSource.d.ts +3 -0
  76. package/Shared/Utils/MessageUtils.d.ts +43 -0
  77. package/assets/.gitkeep +0 -0
  78. package/assets/Audio-Call.svg +11 -0
  79. package/assets/Audio-Call2x.svg +11 -0
  80. package/assets/Copy.svg +17 -0
  81. package/assets/Grid-layout.svg +1 -0
  82. package/assets/Heart.svg +11 -0
  83. package/assets/Imagemoderation.svg +14 -0
  84. package/assets/Info.svg +13 -0
  85. package/assets/Locked.svg +10 -0
  86. package/assets/More@2x.svg +9 -0
  87. package/assets/Plus.svg +13 -0
  88. package/assets/Private.svg +10 -0
  89. package/assets/Reactionsicon.svg +9 -0
  90. package/assets/Send.svg +12 -0
  91. package/assets/Spinner.svg +15 -0
  92. package/assets/Stickers.svg +16 -0
  93. package/assets/Stipop.svg +9 -0
  94. package/assets/Video-call.svg +12 -0
  95. package/assets/Video-call2x.svg +12 -0
  96. package/assets/activity.svg +22 -0
  97. package/assets/addreaction.svg +9 -0
  98. package/assets/animals.svg +15 -0
  99. package/assets/attachment-file.svg +14 -0
  100. package/assets/audio-file.svg +12 -0
  101. package/assets/back.png +0 -0
  102. package/assets/backbutton.svg +12 -0
  103. package/assets/call.svg +1 -0
  104. package/assets/chats.svg +1 -0
  105. package/assets/checkmark.svg +11 -0
  106. package/assets/close.svg +12 -0
  107. package/assets/close2x.svg +12 -0
  108. package/assets/collaborativedocument.svg +13 -0
  109. package/assets/collaborativewhiteboard.svg +12 -0
  110. package/assets/create-button.svg +12 -0
  111. package/assets/declaration.d.ts +3 -0
  112. package/assets/delete.svg +7 -0
  113. package/assets/deleteicon.svg +15 -0
  114. package/assets/down-arrow.svg +1 -0
  115. package/assets/download.svg +13 -0
  116. package/assets/editicon.svg +14 -0
  117. package/assets/emoji.svg +2693 -0
  118. package/assets/file-upload.svg +2693 -0
  119. package/assets/flags.svg +12 -0
  120. package/assets/food.svg +26 -0
  121. package/assets/group.svg +40 -0
  122. package/assets/heart-reaction.png +0 -0
  123. package/assets/heart.png +0 -0
  124. package/assets/image.svg +2693 -0
  125. package/assets/incomingcall.wav +0 -0
  126. package/assets/increase-size.svg +6 -0
  127. package/assets/location.svg +2693 -0
  128. package/assets/message-delivered.png +0 -0
  129. package/assets/message-delivered.svg +4 -0
  130. package/assets/message-read.png +0 -0
  131. package/assets/message-read.svg +4 -0
  132. package/assets/message-sent.png +0 -0
  133. package/assets/message-sent.svg +3 -0
  134. package/assets/moreicon.svg +9 -0
  135. package/assets/objects.svg +13 -0
  136. package/assets/open-thread.svg +11 -0
  137. package/assets/password-protected-group.svg +3 -0
  138. package/assets/photolibrary.svg +11 -0
  139. package/assets/placeholder.png +0 -0
  140. package/assets/plus-rotated.svg +13 -0
  141. package/assets/polls.svg +14 -0
  142. package/assets/privacy.svg +4 -0
  143. package/assets/private-group.svg +9 -0
  144. package/assets/public.svg +3 -0
  145. package/assets/reduce-size.svg +6 -0
  146. package/assets/right-arrow.svg +6 -0
  147. package/assets/search.png +0 -0
  148. package/assets/search.svg +4 -0
  149. package/assets/side-arrow.svg +1 -0
  150. package/assets/smileys.svg +16 -0
  151. package/assets/start-chat.svg +1 -0
  152. package/assets/symbols.svg +16 -0
  153. package/assets/thread-arrow.svg +1 -0
  154. package/assets/thread-icon.svg +38 -0
  155. package/assets/threadicon.svg +14 -0
  156. package/assets/translation.svg +16 -0
  157. package/assets/travel.svg +18 -0
  158. package/assets/unsafe-content.svg +23 -0
  159. package/assets/user.svg +31 -0
  160. package/assets/video-upload.svg +2693 -0
  161. package/assets/video.svg +12 -0
  162. package/assets/wait.png +0 -0
  163. package/assets/wait.svg +4 -0
  164. package/assets/warning-small.png +0 -0
  165. package/assets/warning-small.svg +5 -0
  166. package/cometchat-chat-uikit-angular.d.ts +5 -0
  167. package/esm2020/Calls/CallingExtension.mjs +11 -0
  168. package/esm2020/Calls/CallingExtensionDecorator.mjs +114 -0
  169. package/esm2020/Calls/CometChatCallButtons/cometchat-call-buttons/cometchat-call-buttons.component.mjs +358 -0
  170. package/esm2020/Calls/CometChatCallButtons/cometchat-call-buttons.module.mjs +32 -0
  171. package/esm2020/Calls/CometChatIncomingCall/cometchat-incoming-call/cometchat-incoming-call.component.mjs +423 -0
  172. package/esm2020/Calls/CometChatIncomingCall/cometchat-incoming-call.module.mjs +32 -0
  173. package/esm2020/Calls/CometChatOngoingCall/cometchat-ongoing-call/cometchat-ongoing-call.component.mjs +54 -0
  174. package/esm2020/Calls/CometChatOngoingCall/cometchat-ongoing-call.module.mjs +27 -0
  175. package/esm2020/Calls/CometChatOutgoingCall/cometchat-outgoing-call/cometchat-outgoing-call.component.mjs +196 -0
  176. package/esm2020/Calls/CometChatOutgoingCall/cometchat-outgoing-call.module.mjs +28 -0
  177. package/esm2020/CometChatAddMembers/cometchat-add-members/cometchat-add-members.component.mjs +353 -0
  178. package/esm2020/CometChatAddMembers/cometchat-add-members.module.mjs +23 -0
  179. package/esm2020/CometChatBannedMembers/cometchat-banned-members/cometchat-banned-members.component.mjs +446 -0
  180. package/esm2020/CometChatBannedMembers/cometchat-banned-members.module.mjs +24 -0
  181. package/esm2020/CometChatConversations/cometchat-conversations/cometchat-conversations.component.mjs +1400 -0
  182. package/esm2020/CometChatConversations/cometchat-conversations.module.mjs +28 -0
  183. package/esm2020/CometChatConversationsWithMessages/cometchat-conversations-with-messages/cometchat-conversations-with-messages.component.mjs +272 -0
  184. package/esm2020/CometChatConversationsWithMessages/cometchat-conversations-with-messages.module.mjs +39 -0
  185. package/esm2020/CometChatDetails/cometchat-details/cometchat-details.component.mjs +696 -0
  186. package/esm2020/CometChatDetails/cometchat-details.module.mjs +27 -0
  187. package/esm2020/CometChatGroupMembers/cometchat-group-members/cometchat-group-members.component.mjs +676 -0
  188. package/esm2020/CometChatGroupMembers/cometchat-group-members.module.mjs +24 -0
  189. package/esm2020/CometChatGroups/cometchat-groups/cometchat-groups.component.mjs +564 -0
  190. package/esm2020/CometChatGroups/cometchat-groups.module.mjs +28 -0
  191. package/esm2020/CometChatGroupsWithMessages/cometchat-groups-with-messages/cometchat-groups-with-messages.component.mjs +430 -0
  192. package/esm2020/CometChatGroupsWithMessages/cometchat-groups-with-messages.module.mjs +43 -0
  193. package/esm2020/CometChatList/cometchat-list.component.mjs +210 -0
  194. package/esm2020/CometChatList/cometchat-list.module.mjs +28 -0
  195. package/esm2020/CometChatMessageBubble/cometchat-message-bubble/cometchat-message-bubble.component.mjs +157 -0
  196. package/esm2020/CometChatMessageBubble/cometchat-message-bubble.module.mjs +23 -0
  197. package/esm2020/CometChatMessageComposer/cometchat-message-composer/cometchat-message-composer.component.mjs +930 -0
  198. package/esm2020/CometChatMessageComposer/cometchat-message-composer.module.mjs +24 -0
  199. package/esm2020/CometChatMessageHeader/cometchat-message-header/cometchat-message-header.component.mjs +420 -0
  200. package/esm2020/CometChatMessageHeader/cometchat-message-header.module.mjs +26 -0
  201. package/esm2020/CometChatMessageList/cometchat-message-list/cometchat-message-list.component.mjs +2598 -0
  202. package/esm2020/CometChatMessageList/cometchat-message-list.module.mjs +34 -0
  203. package/esm2020/CometChatMessages/cometchat-messages/cometchat-messages.component.mjs +393 -0
  204. package/esm2020/CometChatMessages/cometchat-messages.module.mjs +48 -0
  205. package/esm2020/CometChatTheme.service.mjs +17 -0
  206. package/esm2020/CometChatThreadedMessages/cometchat-threaded-messages/cometchat-threaded-messages.component.mjs +304 -0
  207. package/esm2020/CometChatThreadedMessages/cometchat-threaded-messages.module.mjs +36 -0
  208. package/esm2020/CometChatTransferOwnership/cometchat-transfer-ownership/cometchat-transfer-ownership.component.mjs +337 -0
  209. package/esm2020/CometChatTransferOwnership/cometchat-transfer-ownership.module.mjs +21 -0
  210. package/esm2020/CometChatUsers/cometchat-users/cometchat-users.component.mjs +447 -0
  211. package/esm2020/CometChatUsers/cometchat-users.module.mjs +32 -0
  212. package/esm2020/CometChatUsersWithMessages/cometchat-users-with-messages/cometchat-users-with-messages.component.mjs +185 -0
  213. package/esm2020/CometChatUsersWithMessages/cometchat-users-with-messages.module.mjs +39 -0
  214. package/esm2020/Extensions/CollaborativeDocument/CollaborativeDocumentExtension.mjs +11 -0
  215. package/esm2020/Extensions/CollaborativeDocument/CollaborativeDocumentExtensionDecorator.mjs +89 -0
  216. package/esm2020/Extensions/CollaborativeWhiteboard/CollaborativeWhiteboardExtension.mjs +11 -0
  217. package/esm2020/Extensions/CollaborativeWhiteboard/CollaborativeWhiteboardExtensionDecorator.mjs +89 -0
  218. package/esm2020/Extensions/ImageModeration/ImageModerationExtension.mjs +10 -0
  219. package/esm2020/Extensions/ImageModeration/ImageModerationExtensionDecorator.mjs +10 -0
  220. package/esm2020/Extensions/LinkPreviewExtension/LinkPreviewExtension.mjs +10 -0
  221. package/esm2020/Extensions/LinkPreviewExtension/LinkPreviewExtensionDecorator.mjs +10 -0
  222. package/esm2020/Extensions/MessageTranslation/MessageTranslationExtension.mjs +11 -0
  223. package/esm2020/Extensions/MessageTranslation/MessageTranslationExtensionDecorator.mjs +33 -0
  224. package/esm2020/Extensions/PollsExtension/PollsExtension.mjs +10 -0
  225. package/esm2020/Extensions/PollsExtension/PollsExtensionDecorator.mjs +75 -0
  226. package/esm2020/Extensions/Reactions/ReactionExtension.mjs +10 -0
  227. package/esm2020/Extensions/Reactions/ReactionExtensionDecorator.mjs +30 -0
  228. package/esm2020/Extensions/SmartReplies/SmartRepliesExtension.mjs +11 -0
  229. package/esm2020/Extensions/SmartReplies/SmartRepliesExtensionDecorator.mjs +117 -0
  230. package/esm2020/Extensions/Stickers/StickersExtension.mjs +15 -0
  231. package/esm2020/Extensions/Stickers/StickersExtensionDecorator.mjs +118 -0
  232. package/esm2020/Extensions/TextModerator/TextModeratorExtension.mjs +10 -0
  233. package/esm2020/Extensions/TextModerator/TextModeratorExtensionDecorator.mjs +32 -0
  234. package/esm2020/Extensions/ThumbnailGeneration/ThumbnailGenerationExtension.mjs +10 -0
  235. package/esm2020/Extensions/ThumbnailGeneration/ThumbnailGenerationExtensionDecorator.mjs +10 -0
  236. package/esm2020/Shared/CometChatUIkit/CometChatUIKit.mjs +180 -0
  237. package/esm2020/Shared/Framework/ChatConfigurator.mjs +20 -0
  238. package/esm2020/Shared/Framework/DataSource.mjs +3 -0
  239. package/esm2020/Shared/Framework/DataSourceDecorator.mjs +80 -0
  240. package/esm2020/Shared/Framework/ExtensionDataSource.mjs +4 -0
  241. package/esm2020/Shared/Utils/MessageUtils.mjs +342 -0
  242. package/esm2020/cometchat-chat-uikit-angular.mjs +5 -0
  243. package/esm2020/public-api.mjs +93 -0
  244. package/fesm2015/cometchat-chat-uikit-angular.mjs +13683 -0
  245. package/fesm2015/cometchat-chat-uikit-angular.mjs.map +1 -0
  246. package/fesm2020/cometchat-chat-uikit-angular.mjs +13586 -0
  247. package/fesm2020/cometchat-chat-uikit-angular.mjs.map +1 -0
  248. package/package.json +51 -0
  249. package/public-api.d.ts +79 -0
@@ -0,0 +1,342 @@
1
+ import { CometChatMessageOption, CometChatMessageTemplate, CometChatMessageComposerAction, localize, CometChatUIKitConstants, fontHelper } from "@cometchat/uikit-resources";
2
+ import { ConversationUtils } from "@cometchat/uikit-shared";
3
+ import { CometChat } from "@cometchat-pro/chat";
4
+ import { ChatConfigurator } from "../Framework/ChatConfigurator";
5
+ export class MessageUtils {
6
+ getEditOption(theme) {
7
+ return new CometChatMessageOption({
8
+ id: CometChatUIKitConstants.MessageOption.editMessage,
9
+ title: localize("EDIT_MESSAGE"),
10
+ iconURL: "assets/editicon.svg",
11
+ onClick: null,
12
+ iconTint: theme.palette.getAccent600(),
13
+ backgroundColor: "transparent",
14
+ titleFont: fontHelper(theme.typography.subtitle1),
15
+ titleColor: theme.palette.getAccent600()
16
+ });
17
+ }
18
+ getDeleteOption(theme) {
19
+ return new CometChatMessageOption({
20
+ id: CometChatUIKitConstants.MessageOption.deleteMessage,
21
+ title: localize("DELETE"),
22
+ iconURL: "assets/deleteicon.svg",
23
+ onClick: null,
24
+ iconTint: theme.palette.getAccent600(),
25
+ backgroundColor: "transparent",
26
+ titleFont: fontHelper(theme.typography.subtitle1),
27
+ titleColor: theme.palette.getAccent600()
28
+ });
29
+ }
30
+ getReplyInThreadOption(theme) {
31
+ return new CometChatMessageOption({
32
+ id: CometChatUIKitConstants.MessageOption.replyInThread,
33
+ title: localize("REPLY_IN_THREAD"),
34
+ iconURL: "assets/threadicon.svg",
35
+ onClick: null,
36
+ iconTint: theme.palette.getAccent600(),
37
+ backgroundColor: "transparent",
38
+ titleFont: fontHelper(theme.typography.subtitle1),
39
+ titleColor: theme.palette.getAccent600()
40
+ });
41
+ }
42
+ getCopyOption(theme) {
43
+ return new CometChatMessageOption({
44
+ id: CometChatUIKitConstants.MessageOption.copyMessage,
45
+ title: localize("COPY_MESSAGE"),
46
+ iconURL: "assets/Copy.svg",
47
+ onClick: null,
48
+ iconTint: theme.palette.getAccent600(),
49
+ backgroundColor: "transparent",
50
+ titleFont: fontHelper(theme.typography.subtitle1),
51
+ titleColor: theme.palette.getAccent600()
52
+ });
53
+ }
54
+ isSentByMe(loggedInUser, message) {
55
+ return loggedInUser.getUid() === message.getSender().getUid();
56
+ }
57
+ getTextMessageOptions(loggedInUser, messageObject, theme, group) {
58
+ let _isSentByMe = this.isSentByMe(loggedInUser, messageObject);
59
+ let _isModerator = false;
60
+ if (group?.getScope() == CometChatUIKitConstants.groupMemberScope.moderator) {
61
+ _isModerator = true;
62
+ }
63
+ let messageOptionList = [];
64
+ messageOptionList = ChatConfigurator.getDataSource().getCommonOptions(loggedInUser, messageObject, theme, group);
65
+ if (_isSentByMe) {
66
+ messageOptionList.push(this.getEditOption(theme));
67
+ }
68
+ messageOptionList.push(this.getCopyOption(theme));
69
+ return messageOptionList;
70
+ }
71
+ getImageMessageOptions(loggedInUser, messageObject, theme, group) {
72
+ let messageOptionList = [];
73
+ messageOptionList = ChatConfigurator.getDataSource().getCommonOptions(loggedInUser, messageObject, theme, group);
74
+ return messageOptionList;
75
+ }
76
+ getVideoMessageOptions(loggedInUser, messageObject, theme, group) {
77
+ let messageOptionList = [];
78
+ messageOptionList = ChatConfigurator.getDataSource().getCommonOptions(loggedInUser, messageObject, theme, group);
79
+ return messageOptionList;
80
+ }
81
+ getAudioMessageOptions(loggedInUser, messageObject, theme, group) {
82
+ let messageOptionList = [];
83
+ messageOptionList = ChatConfigurator.getDataSource().getCommonOptions(loggedInUser, messageObject, theme, group);
84
+ return messageOptionList;
85
+ }
86
+ getFileMessageOptions(loggedInUser, messageObject, theme, group) {
87
+ let messageOptionList = [];
88
+ messageOptionList = ChatConfigurator.getDataSource().getCommonOptions(loggedInUser, messageObject, theme, group);
89
+ return messageOptionList;
90
+ }
91
+ getBottomView(_messageObject, _alignment) {
92
+ return null;
93
+ }
94
+ getTextMessageTemplate() {
95
+ return new CometChatMessageTemplate({
96
+ type: CometChatUIKitConstants.MessageTypes.text,
97
+ category: CometChatUIKitConstants.MessageCategory.message,
98
+ options: ChatConfigurator.getDataSource().getMessageOptions,
99
+ });
100
+ }
101
+ getAudioMessageTemplate() {
102
+ return new CometChatMessageTemplate({
103
+ type: CometChatUIKitConstants.MessageTypes.audio,
104
+ category: CometChatUIKitConstants.MessageCategory.message,
105
+ options: ChatConfigurator.getDataSource().getMessageOptions,
106
+ });
107
+ }
108
+ getVideoMessageTemplate() {
109
+ return new CometChatMessageTemplate({
110
+ type: CometChatUIKitConstants.MessageTypes.video,
111
+ category: CometChatUIKitConstants.MessageCategory.message,
112
+ options: ChatConfigurator.getDataSource().getMessageOptions,
113
+ });
114
+ }
115
+ getImageMessageTemplate() {
116
+ return new CometChatMessageTemplate({
117
+ type: CometChatUIKitConstants.MessageTypes.image,
118
+ category: CometChatUIKitConstants.MessageCategory.message,
119
+ options: ChatConfigurator.getDataSource().getMessageOptions,
120
+ });
121
+ }
122
+ getGroupActionTemplate() {
123
+ return new CometChatMessageTemplate({
124
+ type: CometChatUIKitConstants.MessageTypes.groupMember,
125
+ category: CometChatUIKitConstants.MessageCategory.action,
126
+ });
127
+ }
128
+ getFileMessageTemplate() {
129
+ return new CometChatMessageTemplate({
130
+ type: CometChatUIKitConstants.MessageTypes.file,
131
+ category: CometChatUIKitConstants.MessageCategory.message,
132
+ options: ChatConfigurator.getDataSource().getMessageOptions,
133
+ });
134
+ }
135
+ getAllMessageTemplates() {
136
+ return [
137
+ ChatConfigurator.getDataSource().getTextMessageTemplate(),
138
+ ChatConfigurator.getDataSource().getImageMessageTemplate(),
139
+ ChatConfigurator.getDataSource().getVideoMessageTemplate(),
140
+ ChatConfigurator.getDataSource().getAudioMessageTemplate(),
141
+ ChatConfigurator.getDataSource().getFileMessageTemplate(),
142
+ ChatConfigurator.getDataSource().getGroupActionTemplate(),
143
+ ];
144
+ }
145
+ getMessageTemplate(messageType, messageCategory) {
146
+ let _template = null;
147
+ if (messageCategory != CometChatUIKitConstants.MessageCategory.call) {
148
+ switch (messageType) {
149
+ case CometChatUIKitConstants.MessageTypes.text:
150
+ _template = ChatConfigurator.getDataSource().getTextMessageTemplate();
151
+ break;
152
+ case CometChatUIKitConstants.MessageTypes.image:
153
+ _template = ChatConfigurator.getDataSource().getImageMessageTemplate();
154
+ break;
155
+ case CometChatUIKitConstants.MessageTypes.video:
156
+ _template = ChatConfigurator.getDataSource().getVideoMessageTemplate();
157
+ break;
158
+ case CometChatUIKitConstants.MessageTypes.groupMember:
159
+ _template = ChatConfigurator.getDataSource().getGroupActionTemplate();
160
+ break;
161
+ case CometChatUIKitConstants.MessageTypes.file:
162
+ _template = ChatConfigurator.getDataSource().getFileMessageTemplate();
163
+ break;
164
+ case CometChatUIKitConstants.MessageTypes.audio:
165
+ _template = ChatConfigurator.getDataSource().getAudioMessageTemplate();
166
+ break;
167
+ }
168
+ }
169
+ return _template;
170
+ }
171
+ getMessageOptions(loggedInUser, messageObject, theme, group) {
172
+ let _optionList = [];
173
+ let _isSentByMe = false;
174
+ if (loggedInUser.getUid() == messageObject.getSender()?.getUid()) {
175
+ _isSentByMe = true;
176
+ }
177
+ if (messageObject.getCategory() == CometChatUIKitConstants.MessageCategory.message) {
178
+ switch (messageObject.getType()) {
179
+ case CometChatUIKitConstants.MessageTypes.text:
180
+ _optionList = ChatConfigurator.getDataSource().getTextMessageOptions(loggedInUser, messageObject, theme, group);
181
+ break;
182
+ case CometChatUIKitConstants.MessageTypes.image:
183
+ _optionList = ChatConfigurator.getDataSource().getImageMessageOptions(loggedInUser, messageObject, theme, group);
184
+ break;
185
+ case CometChatUIKitConstants.MessageTypes.video:
186
+ _optionList = ChatConfigurator.getDataSource().getVideoMessageOptions(loggedInUser, messageObject, theme, group);
187
+ break;
188
+ case CometChatUIKitConstants.MessageTypes.groupMember:
189
+ _optionList = [];
190
+ break;
191
+ case CometChatUIKitConstants.MessageTypes.file:
192
+ _optionList = ChatConfigurator.getDataSource().getFileMessageOptions(loggedInUser, messageObject, theme, group);
193
+ break;
194
+ case CometChatUIKitConstants.MessageTypes.audio:
195
+ _optionList = ChatConfigurator.getDataSource().getAudioMessageOptions(loggedInUser, messageObject, theme, group);
196
+ break;
197
+ }
198
+ }
199
+ else if (messageObject.getCategory() == CometChatUIKitConstants.MessageCategory.custom) {
200
+ _optionList = ChatConfigurator.getDataSource().getCommonOptions(loggedInUser, messageObject, theme, group);
201
+ }
202
+ return _optionList;
203
+ }
204
+ getCommonOptions(loggedInUser, messageObject, theme, group) {
205
+ let _isSentByMe = this.isSentByMe(loggedInUser, messageObject);
206
+ let _isModerator = false;
207
+ if (group?.getScope() == CometChatUIKitConstants.groupMemberScope.moderator)
208
+ _isModerator = true;
209
+ let messageOptionList = [];
210
+ if (_isSentByMe == true || _isModerator == true)
211
+ messageOptionList.push(this.getDeleteOption(theme));
212
+ if (!messageObject.getParentMessageId()) {
213
+ messageOptionList.push(this.getReplyInThreadOption(theme));
214
+ }
215
+ return messageOptionList;
216
+ }
217
+ getAllMessageTypes() {
218
+ return [
219
+ CometChatUIKitConstants.MessageTypes.text,
220
+ CometChatUIKitConstants.MessageTypes.image,
221
+ CometChatUIKitConstants.MessageTypes.audio,
222
+ CometChatUIKitConstants.MessageTypes.video,
223
+ CometChatUIKitConstants.MessageTypes.file,
224
+ CometChatUIKitConstants.MessageTypes.groupMember
225
+ ];
226
+ }
227
+ addList() {
228
+ return "<Message Utils>";
229
+ }
230
+ getAllMessageCategories() {
231
+ return [CometChatUIKitConstants.MessageCategory.message, CometChatUIKitConstants.MessageCategory.action];
232
+ }
233
+ getAuxiliaryOptions(id, user, group) {
234
+ return null;
235
+ }
236
+ getId() {
237
+ return "messageUtils";
238
+ }
239
+ getActionMessage(message) {
240
+ try {
241
+ if (message instanceof CometChat.Action) {
242
+ const action = message.getAction();
243
+ const actionBy = message.getActionBy();
244
+ const actionOn = message.getActionOn();
245
+ const byString = actionBy.getName();
246
+ const forString = action === CometChatUIKitConstants.groupMemberAction.JOINED ||
247
+ action === CometChatUIKitConstants.groupMemberAction.LEFT
248
+ ? ""
249
+ : actionOn.getName();
250
+ switch (action) {
251
+ case CometChatUIKitConstants.groupMemberAction.ADDED:
252
+ return `${byString} ${localize("ADDED")} ${forString}`;
253
+ case CometChatUIKitConstants.groupMemberAction.JOINED:
254
+ return `${byString} ${localize("JOINED")}`;
255
+ case CometChatUIKitConstants.groupMemberAction.LEFT:
256
+ return `${byString} ${localize("LEFT")}`;
257
+ case CometChatUIKitConstants.groupMemberAction.KICKED:
258
+ return `${byString} ${localize("KICKED")} ${forString}`;
259
+ case CometChatUIKitConstants.groupMemberAction.BANNED:
260
+ return `${byString} ${localize("BANNED")} ${forString}`;
261
+ case CometChatUIKitConstants.groupMemberAction.UNBANNED:
262
+ return `${byString} ${localize("UNBANNED")} ${forString}`;
263
+ case CometChatUIKitConstants.groupMemberAction.SCOPE_CHANGE:
264
+ return `${byString} ${localize("MADE")} ${forString} ${message.getNewScope()}`;
265
+ default:
266
+ return "";
267
+ }
268
+ }
269
+ else {
270
+ return "";
271
+ }
272
+ }
273
+ catch (e) {
274
+ return "";
275
+ }
276
+ }
277
+ imageAttachmentOption(theme) {
278
+ return new CometChatMessageComposerAction({
279
+ id: CometChatUIKitConstants.MessageTypes.image,
280
+ title: localize("ATTACH_IMAGE"),
281
+ iconURL: "assets/photolibrary.svg",
282
+ onClick: null,
283
+ iconTint: theme.palette.getAccent700(),
284
+ titleFont: fontHelper(theme.typography.subtitle1),
285
+ titleColor: theme.palette.getAccent700(),
286
+ borderRadius: "8px",
287
+ background: theme.palette.getAccent100()
288
+ });
289
+ }
290
+ videoAttachmentOption(theme) {
291
+ return new CometChatMessageComposerAction({
292
+ id: CometChatUIKitConstants.MessageTypes.video,
293
+ title: localize("ATTACH_VIDEO"),
294
+ iconURL: "assets/video.svg",
295
+ onClick: null,
296
+ iconTint: theme.palette.getAccent700(),
297
+ titleFont: fontHelper(theme.typography.subtitle1),
298
+ titleColor: theme.palette.getAccent700(),
299
+ borderRadius: "8px",
300
+ background: theme.palette.getAccent100()
301
+ });
302
+ }
303
+ audioAttachmentOption(theme) {
304
+ return new CometChatMessageComposerAction({
305
+ id: CometChatUIKitConstants.MessageTypes.audio,
306
+ title: localize("ATTACH_AUDIO"),
307
+ iconURL: "assets/audio-file.svg",
308
+ onClick: null,
309
+ iconTint: theme.palette.getAccent700(),
310
+ titleFont: fontHelper(theme.typography.subtitle1),
311
+ titleColor: theme.palette.getAccent700(),
312
+ borderRadius: "8px",
313
+ background: theme.palette.getAccent100()
314
+ });
315
+ }
316
+ fileAttachmentOption(theme) {
317
+ return new CometChatMessageComposerAction({
318
+ id: CometChatUIKitConstants.MessageTypes.file,
319
+ title: localize("ATTACH_FILE"),
320
+ iconURL: "assets/attachment-file.svg",
321
+ onClick: null,
322
+ iconTint: theme.palette.getAccent700(),
323
+ titleFont: fontHelper(theme.typography.subtitle1),
324
+ titleColor: theme.palette.getAccent700(),
325
+ borderRadius: "8px",
326
+ background: theme.palette.getAccent100()
327
+ });
328
+ }
329
+ getAttachmentOptions(theme, user, group, id) {
330
+ let actions = [
331
+ this.imageAttachmentOption(theme),
332
+ this.videoAttachmentOption(theme),
333
+ this.audioAttachmentOption(theme),
334
+ this.fileAttachmentOption(theme)
335
+ ];
336
+ return actions;
337
+ }
338
+ getLastConversationMessage(conversation, loggedInUser) {
339
+ return ConversationUtils.getLastConversationMessage(conversation, loggedInUser);
340
+ }
341
+ }
342
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWVzc2FnZVV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hhdC11aWtpdC1hbmd1bGFyL3NyYy9TaGFyZWQvVXRpbHMvTWVzc2FnZVV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxzQkFBc0IsRUFBeUIsd0JBQXdCLEVBQUUsOEJBQThCLEVBQWtCLFFBQVEsRUFBRSx1QkFBdUIsRUFBRSxVQUFVLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwTixPQUFPLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFaEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDakUsTUFBTSxPQUFPLFlBQVk7SUFDckIsYUFBYSxDQUFDLEtBQXFCO1FBQy9CLE9BQU8sSUFBSSxzQkFBc0IsQ0FBQztZQUM5QixFQUFFLEVBQUUsdUJBQXVCLENBQUMsYUFBYSxDQUFDLFdBQVc7WUFDckQsS0FBSyxFQUFFLFFBQVEsQ0FBQyxjQUFjLENBQUM7WUFDL0IsT0FBTyxFQUFFLHFCQUFxQjtZQUM5QixPQUFPLEVBQUUsSUFBSTtZQUNiLFFBQVEsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRTtZQUN0QyxlQUFlLEVBQUUsYUFBYTtZQUM5QixTQUFTLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDO1lBQ2pELFVBQVUsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRTtTQUMzQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBQ0QsZUFBZSxDQUFDLEtBQXFCO1FBQ2pDLE9BQU8sSUFBSSxzQkFBc0IsQ0FBQztZQUM5QixFQUFFLEVBQUUsdUJBQXVCLENBQUMsYUFBYSxDQUFDLGFBQWE7WUFDdkQsS0FBSyxFQUFFLFFB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LCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21ldENoYXRNZXNzYWdlT3B0aW9uLE1lc3NhZ2VCdWJibGVBbGlnbm1lbnQsIENvbWV0Q2hhdE1lc3NhZ2VUZW1wbGF0ZSwgQ29tZXRDaGF0TWVzc2FnZUNvbXBvc2VyQWN0aW9uLCBDb21ldENoYXRUaGVtZSwgbG9jYWxpemUsIENvbWV0Q2hhdFVJS2l0Q29uc3RhbnRzLCBmb250SGVscGVyIH0gZnJvbSBcIkBjb21ldGNoYXQvdWlraXQtcmVzb3VyY2VzXCI7XG5pbXBvcnQgeyBDb252ZXJzYXRpb25VdGlsc30gZnJvbSBcIkBjb21ldGNoYXQvdWlraXQtc2hhcmVkXCI7XG5pbXBvcnQgeyBDb21ldENoYXQgfSBmcm9tIFwiQGNvbWV0Y2hhdC1wcm8vY2hhdFwiO1xuaW1wb3J0IHsgRGF0YVNvdXJjZSB9IGZyb20gXCIuLi9GcmFtZXdvcmsvRGF0YVNvdXJjZVwiO1xuaW1wb3J0IHsgQ2hhdENvbmZpZ3VyYXRvciB9IGZyb20gXCIuLi9GcmFtZXdvcmsvQ2hhdENvbmZpZ3VyYXRvclwiO1xuZXhwb3J0IGNsYXNzIE1lc3NhZ2VVdGlscyBpbXBsZW1lbnRzIERhdGFTb3VyY2Uge1xuICAgIGdldEVkaXRPcHRpb24odGhlbWU6IENvbWV0Q2hhdFRoZW1lKTogQ29tZXRDaGF0TWVzc2FnZU9wdGlvbiB7XG4gICAgICAgIHJldHVybiBuZXcgQ29tZXRDaGF0TWVzc2FnZU9wdGlvbih7XG4gICAgICAgICAgICBpZDogQ29tZXRDaGF0VUlLaXRDb25zdGFudHMuTWVzc2FnZU9wdGlvbi5lZGl0TWVzc2FnZSxcbiAgICAgICAgICAgIHRpdGxlOiBsb2NhbGl6ZShcIkVESVRfTUVTU0FHRVwiKSxcbiAgICAgICAgICAgIGljb25VUkw6IFwiYXNzZXRzL2VkaXRpY29uLnN2Z1wiLFxuICAgICAgICAgICAgb25DbGljazogbnVsbCxcbiAgICAgICAgICAgIGljb25UaW50OiB0aGVtZS5wYWxldHRlLmdldEFjY2VudDYwMCgpLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcInRyYW5zcGFyZW50XCIsXG4gICAgICAgICAgICB0aXRsZUZvbnQ6IGZvbnRIZWxwZXIodGhlbWUudHlwb2dyYXBoeS5zdWJ0aXRsZTEpLFxuICAgICAgICAgICAgdGl0bGVDb2xvcjogdGhlbWUucGFsZXR0ZS5nZXRBY2NlbnQ2MDAoKVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgZ2V0RGVsZXRlT3B0aW9uKHRoZW1lOiBDb21ldENoYXRUaGVtZSk6IENvbWV0Q2hhdE1lc3NhZ2VPcHRpb24ge1xuICAgICAgICByZXR1cm4gbmV3IENvbWV0Q2hhdE1lc3NhZ2VPcHRpb24oe1xuICAgICAgICAgICAgaWQ6IENvbWV0Q2hhdFVJS2l0Q29uc3RhbnRzLk1lc3NhZ2VPcHRpb24uZGVsZXRlTWVzc2FnZSxcbiAgICAgICAgICAgIHRpdGxlOiBsb2NhbGl6ZShcIkRFTEVURVwiKSxcbiAgICAgICAgICAgIGljb25VUkw6IFwiYXNzZXRzL2RlbGV0ZWljb24uc3ZnXCIsXG4gICAgICAgICAgICBvbkNsaWNrOiBudWxsLFxuICAgICAgICAgICAgaWNvblRpbnQ6IHRoZW1lLnBhbGV0dGUuZ2V0QWNjZW50NjAwKCksXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwidHJhbnNwYXJlbnRcIixcbiAgICAgICAgICAgIHRpdGxlRm9udDogZm9udEhlbHBlcih0aGVtZS50eXBvZ3JhcGh5LnN1YnRpdGxlMSksXG4gICAgICAgICAgICB0aXRsZUNvbG9yOiB0aGVtZS5wYWxldHRlLmdldEFjY2VudDYwMCgpXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBnZXRSZXBseUluVGhyZWFkT3B0aW9uKHRoZW1lOiBDb21ldENoYXRUaGVtZSk6IENvbWV0Q2hhdE1lc3NhZ2VPcHRpb24ge1xuICAgICAgICByZXR1cm4gbmV3IENvbWV0Q2hhdE1lc3NhZ2VPcHRpb24oe1xuICAgICAgICAgICAgaWQ6IENvbWV0Q2hhdFVJS2l0Q29uc3RhbnRzLk1lc3NhZ2VPcHRpb24ucmVwbHlJblRocmVhZCxcbiAgICAgICAgICAgIHRpdGxlOiBsb2NhbGl6ZShcIlJFUExZX0lOX1RIUkVBRFwiKSxcbiAgICAgICAgICAgIGljb25VUkw6IFwiYXNzZXRzL3RocmVhZGljb24uc3ZnXCIsXG4gICAgICAgICAgICBvbkNsaWNrOiBudWxsLFxuICAgICAgICAgICAgaWNvblRpbnQ6IHRoZW1lLnBhbGV0dGUuZ2V0QWNjZW50NjAwKCksXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwidHJhbnNwYXJlbnRcIixcbiAgICAgICAgICAgIHRpdGxlRm9udDogZm9udEhlbHBlcih0aGVtZS50eXBvZ3JhcGh5LnN1YnRpdGxlMSksXG4gICAgICAgICAgICB0aXRsZUNvbG9yOiB0aGVtZS5wYWxldHRlLmdldEFjY2VudDYwMCgpXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBnZXRDb3B5T3B0aW9uKHRoZW1lOiBDb21ldENoYXRUaGVtZSk6IENvbWV0Q2hhdE1lc3NhZ2VPcHRpb24ge1xuICAgICAgICByZXR1cm4gbmV3IENvbWV0Q2hhdE1lc3NhZ2VPcHRpb24oe1xuICAgICAgICAgICAgaWQ6IENvbWV0Q2hhdFVJS2l0Q29uc3RhbnRzLk1lc3NhZ2VPcHRpb24uY29weU1lc3NhZ2UsXG4gICAgICAgICAgICB0aXRsZTogbG9jYWxpemUoXCJDT1BZX01FU1NBR0VcIiksXG4gICAgICAgICAgICBpY29uVVJMOiBcImFzc2V0cy9Db3B5LnN2Z1wiLFxuICAgICAgICAgICAgb25DbGljazogbnVsbCxcbiAgICAgICAgICAgIGljb25UaW50OiB0aGVtZS5wYWxldHRlLmdldEFjY2VudDYwMCgpLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcInRyYW5zcGFyZW50XCIsXG4gICAgICAgICAgICB0aXRsZUZvbnQ6IGZvbnRIZWxwZXIodGhlbWUudHlwb2dyYXBoeS5zdWJ0aXRsZTEpLFxuICAgICAgICAgICAgdGl0bGVDb2xvcjogdGhlbWUucGFsZXR0ZS5nZXRBY2NlbnQ2MDAoKVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgaXNTZW50QnlNZShsb2dnZWRJblVzZXI6IENvbWV0Q2hhdC5Vc2VyLCBtZXNzYWdlOiBDb21ldENoYXQuQmFzZU1lc3NhZ2UpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGxvZ2dlZEluVXNlci5nZXRVaWQoKSA9PT0gbWVzc2FnZS5nZXRTZW5kZXIoKS5nZXRVaWQoKTtcbiAgICB9XG4gICAgZ2V0VGV4dE1lc3NhZ2VPcHRpb25zKGxvZ2dlZEluVXNlcjogQ29tZXRDaGF0LlVzZXIsIG1lc3NhZ2VPYmplY3Q6IENvbWV0Q2hhdC5CYXNlTWVzc2FnZSwgdGhlbWU6IENvbWV0Q2hhdFRoZW1lLCBncm91cD86IENvbWV0Q2hhdC5Hcm91cCk6IEFycmF5PENvbWV0Q2hhdE1lc3NhZ2VPcHRpb24+IHtcbiAgICAgICAgbGV0IF9pc1NlbnRCeU1lOiBib29sZWFuID0gdGhpcy5pc1NlbnRCeU1lKGxvZ2dlZEluVXNlciwgbWVzc2FnZU9iamVjdCk7XG4gICAgICAgIGxldCBfaXNNb2RlcmF0b3I6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICAgICAgaWYgKGdyb3VwPy5nZXRTY29wZSgpID09IENvbWV0Q2hhdFVJS2l0Q29uc3RhbnRzLmdyb3VwTWVtYmVyU2NvcGUubW9kZXJhdG9yKSB7XG4gICAgICAgICAgICBfaXNNb2RlcmF0b3IgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGxldCBtZXNzYWdlT3B0aW9uTGlzdDogQXJyYXk8Q29tZXRDaGF0TWVzc2FnZU9wdGlvbj4gPSBbXTtcbiAgICAgICAgbWVzc2FnZU9wdGlvbkxpc3QgPSBDaGF0Q29uZmlndXJhdG9yLmdldERhdGFTb3VyY2UoKS5nZXRDb21tb25PcHRpb25zKGxvZ2dlZEluVXNlciwgbWVzc2FnZU9iamVjdCwgdGhlbWUsIGdyb3VwKTtcbiAgICAgICAgaWYgKF9pc1NlbnRCeU1lKSB7XG4gICAgICAgICAgICBtZXNzYWdlT3B0aW9uTGlzdC5wdXNoKHRoaXMuZ2V0RWRpdE9wdGlvbih0aGVtZSkpO1xuICAgICAgICB9XG4gICAgICAgIG1lc3NhZ2VPcHRpb25MaXN0LnB1c2godGhpcy5nZXRDb3B5T3B0aW9uKHRoZW1lKSk7XG4gICAgICAgIHJldHVybiBtZXNzYWdlT3B0aW9uTGlzdDtcbiAgICB9XG4gICAgZ2V0SW1hZ2VNZXNzYWdlT3B0aW9ucyhsb2dnZWRJblVzZXI6IENvbWV0Q2hhdC5Vc2VyLCBtZXNzYWdlT2JqZWN0OiBDb21ldENoYXQuQmFzZU1lc3NhZ2UsIHRoZW1lOiBDb21ldENoYXRUaGVtZSwgZ3JvdXA/OiBDb21ldENoYXQuR3JvdXApOiBBcnJheTxDb21ldENoYXRNZXNzYWdlT3B0aW9uPiB7XG4gICAgICAgIGxldCBtZXNzYWdlT3B0aW9uTGlzdDogQ29tZXRDaGF0TWVzc2FnZU9wdGlvbltdID0gW107XG4gICAgICAgIG1lc3NhZ2VPcHRpb25MaXN0ID0gQ2hhdENvbmZpZ3VyYXRvci5nZXREYXRhU291cmNlKCkuZ2V0Q29tbW9uT3B0aW9ucyhsb2dnZWRJblVzZXIsIG1lc3NhZ2VPYmplY3QsIHRoZW1lLCBncm91cCk7XG4gICAgICAgIHJldHVybiBtZXNzYWdlT3B0aW9uTGlzdDtcbiAgICB9XG4gICAgZ2V0VmlkZW9NZXNzYWdlT3B0aW9ucyhsb2dnZWRJblVzZXI6IENvbWV0Q2hhdC5Vc2VyLCBtZXNzYWdlT2JqZWN0OiBDb21ldENoYXQuQmFzZU1lc3NhZ2UsIHRoZW1lOiBDb21ldENoYXRUaGVtZSwgZ3JvdXA/OiBDb21ldENoYXQuR3JvdXApOiBBcnJheTxDb21ldENoYXRNZXNzYWdlT3B0aW9uPiB7XG4gICAgICAgIGxldCBtZXNzYWdlT3B0aW9uTGlzdDogQ29tZXRDaGF0TWVzc2FnZU9wdGlvbltdID0gW107XG4gICAgICAgIG1lc3NhZ2VPcHRpb25MaXN0ID0gQ2hhdENvbmZpZ3VyYXRvci5nZXREYXRhU291cmNlKCkuZ2V0Q29tbW9uT3B0aW9ucyhsb2dnZWRJblVzZXIsIG1lc3NhZ2VPYmplY3QsIHRoZW1lLCBncm91cCk7XG4gICAgICAgIHJldHVybiBtZXNzYWdlT3B0aW9uTGlzdDtcbiAgICB9XG4gICAgZ2V0QXVkaW9NZXNzYWdlT3B0aW9ucyhsb2dnZWRJblVzZXI6IENvbWV0Q2hhdC5Vc2VyLCBtZXNzYWdlT2JqZWN0OiBDb21ldENoYXQuQmFzZU1lc3NhZ2UsIHRoZW1lOiBDb21ldENoYXRUaGVtZSwgZ3JvdXA/OiBDb21ldENoYXQuR3JvdXApOiBBcnJheTxDb21ldENoYXRNZXNzYWdlT3B0aW9uPiB7XG4gICAgICAgIGxldCBtZXNzYWdlT3B0aW9uTGlzdDogQ29tZXRDaGF0TWVzc2FnZU9wdGlvbltdID0gW107XG4gICAgICAgIG1lc3NhZ2VPcHRpb25MaXN0ID0gQ2hhdENvbmZpZ3VyYXRvci5nZXREYXRhU291cmNlKCkuZ2V0Q29tbW9uT3B0aW9ucyhsb2dnZWRJblVzZXIsIG1lc3NhZ2VPYmplY3QsIHRoZW1lLCBncm91cCk7XG4gICAgICAgIHJldHVybiBtZXNzYWdlT3B0aW9uTGlzdDtcbiAgICB9XG4gICAgZ2V0RmlsZU1lc3NhZ2VPcHRpb25zKGxvZ2dlZEluVXNlcjogQ29tZXRDaGF0LlVzZXIsIG1lc3NhZ2VPYmplY3Q6IENvbWV0Q2hhdC5CYXNlTWVzc2FnZSwgdGhlbWU6IENvbWV0Q2hhdFRoZW1lLCBncm91cD86IENvbWV0Q2hhdC5Hcm91cCk6IEFycmF5PENvbWV0Q2hhdE1lc3NhZ2VPcHRpb24+IHtcbiAgICAgICAgbGV0IG1lc3NhZ2VPcHRpb25MaXN0OiBDb21ldENoYXRNZXNzYWdlT3B0aW9uW10gPSBbXTtcbiAgICAgICAgbWVzc2FnZU9wdGlvbkxpc3QgPSBDaGF0Q29uZmlndXJhdG9yLmdldERhdGFTb3VyY2UoKS5nZXRDb21tb25PcHRpb25zKGxvZ2dlZEluVXNlciwgbWVzc2FnZU9iamVjdCwgdGhlbWUsIGdyb3VwKTtcbiAgICAgICAgcmV0dXJuIG1lc3NhZ2VPcHRpb25MaXN0O1xuICAgIH1cbiAgICBnZXRCb3R0b21WaWV3KF9tZXNzYWdlT2JqZWN0OiBDb21ldENoYXQuQmFzZU1lc3NhZ2UsIF9hbGlnbm1lbnQ6IE1lc3NhZ2VCdWJibGVBbGlnbm1lbnQpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGdldFRleHRNZXNzYWdlVGVtcGxhdGUoKTogQ29tZXRDaGF0TWVzc2FnZVRlbXBsYXRlIHtcbiAgICAgICAgcmV0dXJuIG5ldyBDb21ldENoYXRNZXNzYWdlVGVtcGxhdGUoe1xuICAgICAgICAgICAgdHlwZTogQ29tZXRDaGF0VUlLaXRDb25zdGFudHMuTWVzc2FnZVR5cGVzLnRleHQsXG4gICAgICAgICAgICBjYXRlZ29yeTogQ29tZXRDaGF0VUlLaXRDb25zdGFudHMuTWVzc2FnZUNhdGVnb3J5Lm1lc3NhZ2UsXG4gICAgICAgICAgICBvcHRpb25zOiBDaGF0Q29uZmlndXJhdG9yLmdldERhdGFTb3VyY2UoKS5nZXRNZXNzYWdlT3B0aW9ucyxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGdldEF1ZGlvTWVzc2FnZVRlbXBsYXRlKCk6IENvbWV0Q2hhdE1lc3NhZ2VUZW1wbGF0ZSB7XG4gICAgICAgIHJldHVybiBuZXcgQ29tZXRDaGF0TWVzc2FnZVRlbXBsYXRlKHtcbiAgICAgICAgICAgIHR5cGU6IENvbWV0Q2hhdFVJS2l0Q29uc3RhbnRzLk1lc3NhZ2VUeXBlcy5hdWRpbyxcbiAgICAgICAgICAgIGNhdGVnb3J5OiBDb21ldENoYXRVSUtpdENvbnN0YW50cy5NZXNzYWdlQ2F0ZWdvcnkubWVzc2FnZSxcbiAgICAgICAgICAgIG9wdGlvbnM6IENoYXRDb25maWd1cmF0b3IuZ2V0RGF0YVNvdXJjZSgpLmdldE1lc3NhZ2VPcHRpb25zLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgZ2V0VmlkZW9NZXNzYWdlVGVtcGxhdGUoKTogQ29tZXRDaGF0TWVzc2FnZVRlbXBsYXRlIHtcbiAgICAgICAgcmV0dXJuIG5ldyBDb21ldENoYXRNZXNzYWdlVGVtcGxhdGUoe1xuICAgICAgICAgICAgdHlwZTogQ29tZXRDaGF0VUlLaXRDb25zdGFudHMuTWVzc2FnZVR5cGVzLnZpZGVvLFxuICAgICAgICAgICAgY2F0ZWdvcnk6IENvbWV0Q2hhdFVJS2l0Q29uc3RhbnRzLk1lc3NhZ2VDYXRlZ29yeS5tZXNzYWdlLFxuICAgICAgICAgICAgb3B0aW9uczogQ2hhdENvbmZpZ3VyYXRvci5nZXREYXRhU291cmNlKCkuZ2V0TWVzc2FnZU9wdGlvbnMsXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBnZXRJbWFnZU1lc3NhZ2VUZW1wbGF0ZSgpOiBDb21ldENoYXRNZXNzYWdlVGVtcGxhdGUge1xuICAgICAgICByZXR1cm4gbmV3IENvbWV0Q2hhdE1lc3NhZ2VUZW1wbGF0ZSh7XG4gICAgICAgICAgICB0eXBlOiBDb21ldENoYXRVSUtpdENvbnN0YW50cy5NZXNzYWdlVHlwZXMuaW1hZ2UsXG4gICAgICAgICAgICBjYXRlZ29yeTogQ29tZXRDaGF0VUlLaXRDb25zdGFudHMuTWVzc2FnZUNhdGVnb3J5Lm1lc3NhZ2UsXG4gICAgICAgICAgICBvcHRpb25zOiBDaGF0Q29uZmlndXJhdG9yLmdldERhdGFTb3VyY2UoKS5nZXRNZXNzYWdlT3B0aW9ucyxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGdldEdyb3VwQWN0aW9uVGVtcGxhdGUoKTogQ29tZXRDaGF0TWVzc2FnZVRlbXBsYXRlIHtcbiAgICAgICAgcmV0dXJuIG5ldyBDb21ldENoYXRNZXNzYWdlVGVtcGxhdGUoe1xuICAgICAgICAgICAgdHlwZTogQ29tZXRDaGF0VUlLaXRDb25zdGFudHMuTWVzc2FnZVR5cGVzLmdyb3VwTWVtYmVyLFxuICAgICAgICAgICAgY2F0ZWdvcnk6IENvbWV0Q2hhdFVJS2l0Q29uc3RhbnRzLk1lc3NhZ2VDYXRlZ29yeS5hY3Rpb24sXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBnZXRGaWxlTWVzc2FnZVRlbXBsYXRlKCk6IENvbWV0Q2hhdE1lc3NhZ2VUZW1wbGF0ZSB7XG4gICAgICAgIHJldHVybiBuZXcgQ29tZXRDaGF0TWVzc2FnZVRlbXBsYXRlKHtcbiAgICAgICAgICAgIHR5cGU6IENvbWV0Q2hhdFVJS2l0Q29uc3RhbnRzLk1lc3NhZ2VUeXBlcy5maWxlLFxuICAgICAgICAgICAgY2F0ZWdvcnk6IENvbWV0Q2hhdFVJS2l0Q29uc3RhbnRzLk1lc3NhZ2VDYXRlZ29yeS5tZXNzYWdlLFxuICAgICAgICAgICAgb3B0aW9uczogQ2hhdENvbmZpZ3VyYXRvci5nZXREYXRhU291cmNlKCkuZ2V0TWVzc2FnZU9wdGlvbnMsXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBnZXRBbGxNZXNzYWdlVGVtcGxhdGVzKCk6IEFycmF5PENvbWV0Q2hhdE1lc3NhZ2VUZW1wbGF0ZT4ge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgQ2hhdENvbmZpZ3VyYXRvci5nZXREYXRhU291cmNlKCkuZ2V0VGV4dE1lc3NhZ2VUZW1wbGF0ZSgpLFxuICAgICAgICAgICAgQ2hhdENvbmZpZ3VyYXRvci5nZXREYXRhU291cmNlKCkuZ2V0SW1hZ2VNZXNzYWdlVGVtcGxhdGUoKSxcbiAgICAgICAgICAgIENoYXRDb25maWd1cmF0b3IuZ2V0RGF0YVNvdXJjZSgpLmdldFZpZGVvTWVzc2FnZVRlbXBsYXRlKCksXG4gICAgICAgICAgICBDaGF0Q29uZmlndXJhdG9yLmdldERhdGFTb3VyY2UoKS5nZXRBdWRpb01lc3NhZ2VUZW1wbGF0ZSgpLFxuICAgICAgICAgICAgQ2hhdENvbmZpZ3VyYXRvci5nZXREYXRhU291cmNlKCkuZ2V0RmlsZU1lc3NhZ2VUZW1wbGF0ZSgpLFxuICAgICAgICAgICAgQ2hhdENvbmZpZ3VyYXRvci5nZXREYXRhU291cmNlKCkuZ2V0R3JvdXBBY3Rpb25UZW1wbGF0ZSgpLFxuICAgICAgICBdO1xuICAgIH1cbiAgICBnZXRNZXNzYWdlVGVtcGxhdGUobWVzc2FnZVR5cGU6IHN0cmluZywgbWVzc2FnZUNhdGVnb3J5OiBzdHJpbmcpOiBDb21ldENoYXRNZXNzYWdlVGVtcGxhdGUgfCBudWxsIHtcbiAgICAgICAgbGV0IF90ZW1wbGF0ZTogQ29tZXRDaGF0TWVzc2FnZVRlbXBsYXRlIHwgbnVsbCA9IG51bGw7XG4gICAgICAgIGlmIChtZXNzYWdlQ2F0ZWdvcnkgIT0gQ29tZXRDaGF0VUlLaXRDb25zdGFudHMuTWVzc2FnZUNhdGVnb3J5LmNhbGwpIHtcbiAgICAgICAgICAgIHN3aXRjaCAobWVzc2FnZVR5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlIENvbWV0Q2hhdFVJS2l0Q29uc3RhbnRzLk1lc3NhZ2VUeXBlcy50ZXh0OlxuICAgICAgICAgICAgICAgICAgICBfdGVtcGxhdGUgPSBDaGF0Q29uZmlndXJhdG9yLmdldERhdGFTb3VyY2UoKS5nZXRUZXh0TWVzc2FnZVRlbXBsYXRlKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgQ29tZXRDaGF0VUlLaXRDb25zdGFudHMuTWVzc2FnZVR5cGVzLmltYWdlOlxuICAgICAgICAgICAgICAgICAgICBfdGVtcGxhdGUgPSBDaGF0Q29uZmlndXJhdG9yLmdldERhdGFTb3VyY2UoKS5nZXRJbWFnZU1lc3NhZ2VUZW1wbGF0ZSgpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIENvbWV0Q2hhdFVJS2l0Q29uc3RhbnRzLk1lc3NhZ2VUeXBlcy52aWRlbzpcbiAgICAgICAgICAgICAgICAgICAgX3RlbXBsYXRlID0gQ2hhdENvbmZpZ3VyYXRvci5nZXREYXRhU291cmNlKCkuZ2V0VmlkZW9NZXNzYWdlVGVtcGxhdGUoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBDb21ldENoYXRVSUtpdENvbnN0YW50cy5NZXNzYWdlVHlwZXMuZ3JvdXBNZW1iZXI6XG4gICAgICAgICAgICAgICAgICAgIF90ZW1wbGF0ZSA9IENoYXRDb25maWd1cmF0b3IuZ2V0RGF0YVNvdXJjZSgpLmdldEdyb3VwQWN0aW9uVGVtcGxhdGUoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBDb21ldENoYXRVSUtpdENvbnN0YW50cy5NZXNzYWdlVHlwZXMuZmlsZTpcbiAgICAgICAgICAgICAgICAgICAgX3RlbXBsYXRlID0gQ2hhdENvbmZpZ3VyYXRvci5nZXREYXRhU291cmNlKCkuZ2V0RmlsZU1lc3NhZ2VUZW1wbGF0ZSgpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIENvbWV0Q2hhdFVJS2l0Q29uc3RhbnRzLk1lc3NhZ2VUeXBlcy5hdWRpbzpcbiAgICAgICAgICAgICAgICAgICAgX3RlbXBsYXRlID0gQ2hhdENvbmZpZ3VyYXRvci5nZXREYXRhU291cmNlKCkuZ2V0QXVkaW9NZXNzYWdlVGVtcGxhdGUoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIF90ZW1wbGF0ZTtcbiAgICB9XG4gICAgZ2V0TWVzc2FnZU9wdGlvbnMobG9nZ2VkSW5Vc2VyOiBDb21ldENoYXQuVXNlciwgbWVzc2FnZU9iamVjdDogQ29tZXRDaGF0LkJhc2VNZXNzYWdlLCB0aGVtZTogQ29tZXRDaGF0VGhlbWUsIGdyb3VwPzogQ29tZXRDaGF0Lkdyb3VwKTogQXJyYXk8Q29tZXRDaGF0TWVzc2FnZU9wdGlvbj4ge1xuICAgICAgICBsZXQgX29wdGlvbkxpc3Q6IEFycmF5PENvbWV0Q2hhdE1lc3NhZ2VPcHRpb24+ID0gW107XG4gICAgICAgIGxldCBfaXNTZW50QnlNZTogYm9vbGVhbiA9IGZhbHNlO1xuICAgICAgICBpZiAobG9nZ2VkSW5Vc2VyLmdldFVpZCgpID09IG1lc3NhZ2VPYmplY3QuZ2V0U2VuZGVyKCk/LmdldFVpZCgpKSB7XG4gICAgICAgICAgICBfaXNTZW50QnlNZSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1lc3NhZ2VPYmplY3QuZ2V0Q2F0ZWdvcnkoKSA9PSBDb21ldENoYXRVSUtpdENvbnN0YW50cy5NZXNzYWdlQ2F0ZWdvcnkubWVzc2FnZSkge1xuICAgICAgICAgICAgc3dpdGNoIChtZXNzYWdlT2JqZWN0LmdldFR5cGUoKSkge1xuICAgICAgICAgICAgICAgIGNhc2UgQ29tZXRDaGF0VUlLaXRDb25zdGFudHMuTWVzc2FnZVR5cGVzLnRleHQ6XG4gICAgICAgICAgICAgICAgICAgIF9vcHRpb25MaXN0ID0gQ2hhdENvbmZpZ3VyYXRvci5nZXREYXRhU291cmNlKCkuZ2V0VGV4dE1lc3NhZ2VPcHRpb25zKGxvZ2dlZEluVXNlciwgbWVzc2FnZU9iamVjdCwgdGhlbWUsIGdyb3VwKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBDb21ldENoYXRVSUtpdENvbnN0YW50cy5NZXNzYWdlVHlwZXMuaW1hZ2U6XG4gICAgICAgICAgICAgICAgICAgIF9vcHRpb25MaXN0ID0gQ2hhdENvbmZpZ3VyYXRvci5nZXREYXRhU291cmNlKCkuZ2V0SW1hZ2VNZXNzYWdlT3B0aW9ucyhsb2dnZWRJblVzZXIsIG1lc3NhZ2VPYmplY3QsIHRoZW1lLCBncm91cCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgQ29tZXRDaGF0VUlLaXRDb25zdGFudHMuTWVzc2FnZVR5cGVzLnZpZGVvOlxuICAgICAgICAgICAgICAgICAgICBfb3B0aW9uTGlzdCA9IENoYXRDb25maWd1cmF0b3IuZ2V0RGF0YVNvdXJjZSgpLmdldFZpZGVvTWVzc2FnZU9wdGlvbnMobG9nZ2VkSW5Vc2VyLCBtZXNzYWdlT2JqZWN0LCB0aGVtZSwgZ3JvdXApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIENvbWV0Q2hhdFVJS2l0Q29uc3RhbnRzLk1lc3NhZ2VUeXBlcy5ncm91cE1lbWJlcjpcbiAgICAgICAgICAgICAgICAgICAgX29wdGlvbkxpc3QgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBDb21ldENoYXRVSUtpdENvbnN0YW50cy5NZXNzYWdlVHlwZXMuZmlsZTpcbiAgICAgICAgICAgICAgICAgICAgX29wdGlvbkxpc3QgPSBDaGF0Q29uZmlndXJhdG9yLmdldERhdGFTb3VyY2UoKS5nZXRGaWxlTWVzc2FnZU9wdGlvbnMobG9nZ2VkSW5Vc2VyLCBtZXNzYWdlT2JqZWN0LCB0aGVtZSwgZ3JvdXApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIENvbWV0Q2hhdFVJS2l0Q29uc3RhbnRzLk1lc3NhZ2VUeXBlcy5hdWRpbzpcbiAgICAgICAgICAgICAgICAgICAgX29wdGlvbkxpc3QgPSBDaGF0Q29uZmlndXJhdG9yLmdldERhdGFTb3VyY2UoKS5nZXRBdWRpb01lc3NhZ2VPcHRpb25zKGxvZ2dlZEluVXNlciwgbWVzc2FnZU9iamVjdCwgdGhlbWUsIGdyb3VwKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAobWVzc2FnZU9iamVjdC5nZXRDYXRlZ29yeSgpID09IENvbWV0Q2hhdFVJS2l0Q29uc3RhbnRzLk1lc3NhZ2VDYXRlZ29yeS5jdXN0b20pIHtcbiAgICAgICAgICAgIF9vcHRpb25MaXN0ID0gQ2hhdENvbmZpZ3VyYXRvci5nZXREYXRhU291cmNlKCkuZ2V0Q29tbW9uT3B0aW9ucyhsb2dnZWRJblVzZXIsIG1lc3NhZ2VPYmplY3QsIHRoZW1lLCBncm91cCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIF9vcHRpb25MaXN0O1xuICAgIH1cbiAgICBnZXRDb21tb25PcHRpb25zKGxvZ2dlZEluVXNlcjogQ29tZXRDaGF0LlVzZXIsIG1lc3NhZ2VPYmplY3Q6IENvbWV0Q2hhdC5CYXNlTWVzc2FnZSwgdGhlbWU6IENvbWV0Q2hhdFRoZW1lLCBncm91cD86IENvbWV0Q2hhdC5Hcm91cCk6IEFycmF5PENvbWV0Q2hhdE1lc3NhZ2VPcHRpb24+IHtcbiAgICAgICAgbGV0IF9pc1NlbnRCeU1lOiBib29sZWFuID0gdGhpcy5pc1NlbnRCeU1lKGxvZ2dlZEluVXNlciwgbWVzc2FnZU9iamVjdCk7XG4gICAgICAgIGxldCBfaXNNb2RlcmF0b3I6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICAgICAgaWYgKGdyb3VwPy5nZXRTY29wZSgpID09IENvbWV0Q2hhdFVJS2l0Q29uc3RhbnRzLmdyb3VwTWVtYmVyU2NvcGUubW9kZXJhdG9yKSBfaXNNb2RlcmF0b3IgPSB0cnVlO1xuICAgICAgICBsZXQgbWVzc2FnZU9wdGlvbkxpc3Q6IEFycmF5PENvbWV0Q2hhdE1lc3NhZ2VPcHRpb24+ID0gW107XG4gICAgICAgIGlmIChfaXNTZW50QnlNZSA9PSB0cnVlIHx8IF9pc01vZGVyYXRvciA9PSB0cnVlKVxuICAgICAgICAgICAgbWVzc2FnZU9wdGlvbkxpc3QucHVzaCh0aGlzLmdldERlbGV0ZU9wdGlvbih0aGVtZSkpO1xuICAgICAgICBpZiAoIW1lc3NhZ2VPYmplY3QuZ2V0UGFyZW50TWVzc2FnZUlkKCkpIHtcbiAgICAgICAgICAgIG1lc3NhZ2VPcHRpb25MaXN0LnB1c2godGhpcy5nZXRSZXBseUluVGhyZWFkT3B0aW9uKHRoZW1lKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1lc3NhZ2VPcHRpb25MaXN0O1xuICAgIH1cbiAgICBnZXRBbGxNZXNzYWdlVHlwZXMoKTogQXJyYXk8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBDb21ldENoYXRVSUtpdENvbnN0YW50cy5NZXNzYWdlVHlwZXMudGV4dCxcbiAgICAgICAgICAgIENvbWV0Q2hhdFVJS2l0Q29uc3RhbnRzLk1lc3NhZ2VUeXBlcy5pbWFnZSxcbiAgICAgICAgICAgIENvbWV0Q2hhdFVJS2l0Q29uc3RhbnRzLk1lc3NhZ2VUeXBlcy5hdWRpbyxcbiAgICAgICAgICAgIENvbWV0Q2hhdFVJS2l0Q29uc3RhbnRzLk1lc3NhZ2VUeXBlcy52aWRlbyxcbiAgICAgICAgICAgIENvbWV0Q2hhdFVJS2l0Q29uc3RhbnRzLk1lc3NhZ2VUeXBlcy5maWxlLFxuICAgICAgICAgICAgQ29tZXRDaGF0VUlLaXRDb25zdGFudHMuTWVzc2FnZVR5cGVzLmdyb3VwTWVtYmVyXG4gICAgICAgIF07XG4gICAgfVxuICAgIGFkZExpc3QoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIFwiPE1lc3NhZ2UgVXRpbHM+XCI7XG4gICAgfVxuICAgIGdldEFsbE1lc3NhZ2VDYXRlZ29yaWVzKCk6IEFycmF5PHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gW0NvbWV0Q2hhdFVJS2l0Q29uc3RhbnRzLk1lc3NhZ2VDYXRlZ29yeS5tZXNzYWdlLCBDb21ldENoYXRVSUtpdENvbnN0YW50cy5NZXNzYWdlQ2F0ZWdvcnkuYWN0aW9uXTtcbiAgICB9XG4gICAgZ2V0QXV4aWxpYXJ5T3B0aW9ucyhpZDpDb21wb3NlcklkLCB1c2VyPzogQ29tZXRDaGF0LlVzZXIsIGdyb3VwPzogQ29tZXRDaGF0Lkdyb3VwKTogYW55IHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGdldElkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBcIm1lc3NhZ2VVdGlsc1wiO1xuICAgIH1cbiAgICBnZXRBY3Rpb25NZXNzYWdlKG1lc3NhZ2U6IENvbWV0Q2hhdC5BY3Rpb24pOnN0cmluZyAge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKG1lc3NhZ2UgaW5zdGFuY2VvZiBDb21ldENoYXQuQWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWN0aW9uID0gbWVzc2FnZS5nZXRBY3Rpb24oKTtcbiAgICAgICAgICAgICAgICBjb25zdCBhY3Rpb25CeSA9IG1lc3NhZ2UuZ2V0QWN0aW9uQnkoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBhY3Rpb25PbiA9IG1lc3NhZ2UuZ2V0QWN0aW9uT24oKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGJ5U3RyaW5nID0gKGFjdGlvbkJ5IGFzIENvbWV0Q2hhdC5Vc2VyKS5nZXROYW1lKCk7XG4gICAgICAgICAgICAgICAgY29uc3QgZm9yU3RyaW5nID1cbiAgICAgICAgICAgICAgICAgICAgYWN0aW9uID09PSBDb21ldENoYXRVSUtpdENvbnN0YW50cy5ncm91cE1lbWJlckFjdGlvbi5KT0lORUQgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbiA9PT0gQ29tZXRDaGF0VUlLaXRDb25zdGFudHMuZ3JvdXBNZW1iZXJBY3Rpb24uTEVGVFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBcIlwiXG4gICAgICAgICAgICAgICAgICAgICAgICA6IChhY3Rpb25PbiBhcyBDb21ldENoYXQuVXNlcikuZ2V0TmFtZSgpO1xuXG4gICAgICAgICAgICAgICAgc3dpdGNoIChhY3Rpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBDb21ldENoYXRVSUtpdENvbnN0YW50cy5ncm91cE1lbWJlckFjdGlvbi5BRERFRDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBgJHtieVN0cmluZ30gJHtsb2NhbGl6ZShcIkFEREVEXCIpfSAke2ZvclN0cmluZ31gO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIENvbWV0Q2hhdFVJS2l0Q29uc3RhbnRzLmdyb3VwTWVtYmVyQWN0aW9uLkpPSU5FRDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBgJHtieVN0cmluZ30gJHtsb2NhbGl6ZShcIkpPSU5FRFwiKX1gO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIENvbWV0Q2hhdFVJS2l0Q29uc3RhbnRzLmdyb3VwTWVtYmVyQWN0aW9uLkxFRlQ6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYCR7YnlTdHJpbmd9ICR7bG9jYWxpemUoXCJMRUZUXCIpfWA7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgQ29tZXRDaGF0VUlLaXRDb25zdGFudHMuZ3JvdXBNZW1iZXJBY3Rpb24uS0lDS0VEOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGAke2J5U3RyaW5nfSAke2xvY2FsaXplKFwiS0lDS0VEXCIpfSAke2ZvclN0cmluZ31gO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIENvbWV0Q2hhdFVJS2l0Q29uc3RhbnRzLmdyb3VwTWVtYmVyQWN0aW9uLkJBTk5FRDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBgJHtieVN0cmluZ30gJHtsb2NhbGl6ZShcIkJBTk5FRFwiKX0gJHtmb3JTdHJpbmd9YDtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBDb21ldENoYXRVSUtpdENvbnN0YW50cy5ncm91cE1lbWJlckFjdGlvbi5VTkJBTk5FRDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBgJHtieVN0cmluZ30gJHtsb2NhbGl6ZShcIlVOQkFOTkVEXCIpfSAke2ZvclN0cmluZ31gO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIENvbWV0Q2hhdFVJS2l0Q29uc3RhbnRzLmdyb3VwTWVtYmVyQWN0aW9uLlNDT1BFX0NIQU5HRTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBgJHtieVN0cmluZ30gJHtsb2NhbGl6ZShcIk1BREVcIil9ICR7Zm9yU3RyaW5nfSAke21lc3NhZ2UuZ2V0TmV3U2NvcGUoKX1gO1xuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZXtcbiAgICAgICAgICAgICAgICByZXR1cm4gIFwiXCJcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaChlKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGltYWdlQXR0YWNobWVudE9wdGlvbih0aGVtZTogQ29tZXRDaGF0VGhlbWUpOiBDb21ldENoYXRNZXNzYWdlQ29tcG9zZXJBY3Rpb24ge1xuICAgICAgICByZXR1cm4gbmV3IENvbWV0Q2hhdE1lc3NhZ2VDb21wb3NlckFjdGlvbih7XG4gICAgICAgICAgICBpZDogQ29tZXRDaGF0VUlLaXRDb25zdGFudHMuTWVzc2FnZVR5cGVzLmltYWdlLFxuICAgICAgICAgICAgdGl0bGU6IGxvY2FsaXplKFwiQVRUQUNIX0lNQUdFXCIpLFxuICAgICAgICAgICAgaWNvblVSTDogXCJhc3NldHMvcGhvdG9saWJyYXJ5LnN2Z1wiLFxuICAgICAgICAgICAgb25DbGljazpudWxsLFxuICAgICAgICAgICAgaWNvblRpbnQ6dGhlbWUucGFsZXR0ZS5nZXRBY2NlbnQ3MDAoKSxcbiAgICAgICAgICAgIHRpdGxlRm9udDpmb250SGVscGVyKHRoZW1lLnR5cG9ncmFwaHkuc3VidGl0bGUxKSxcbiAgICAgICAgICAgIHRpdGxlQ29sb3I6dGhlbWUucGFsZXR0ZS5nZXRBY2NlbnQ3MDAoKSxcbiAgICAgICAgICAgIGJvcmRlclJhZGl1czpcIjhweFwiLFxuICAgICAgICAgICAgYmFja2dyb3VuZDp0aGVtZS5wYWxldHRlLmdldEFjY2VudDEwMCgpXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICB2aWRlb0F0dGFjaG1lbnRPcHRpb24odGhlbWU6IENvbWV0Q2hhdFRoZW1lKTogQ29tZXRDaGF0TWVzc2FnZUNvbXBvc2VyQWN0aW9uIHtcbiAgICAgICAgcmV0dXJuIG5ldyBDb21ldENoYXRNZXNzYWdlQ29tcG9zZXJBY3Rpb24oe1xuICAgICAgICAgICAgaWQ6IENvbWV0Q2hhdFVJS2l0Q29uc3RhbnRzLk1lc3NhZ2VUeXBlcy52aWRlbyxcbiAgICAgICAgICAgIHRpdGxlOiBsb2NhbGl6ZShcIkFUVEFDSF9WSURFT1wiKSxcbiAgICAgICAgICAgIGljb25VUkw6IFwiYXNzZXRzL3ZpZGVvLnN2Z1wiLFxuICAgICAgICAgICAgb25DbGljazpudWxsLFxuICAgICAgICAgICAgaWNvblRpbnQ6dGhlbWUucGFsZXR0ZS5nZXRBY2NlbnQ3MDAoKSxcbiAgICAgICAgICAgIHRpdGxlRm9udDpmb250SGVscGVyKHRoZW1lLnR5cG9ncmFwaHkuc3VidGl0bGUxKSxcbiAgICAgICAgICAgIHRpdGxlQ29sb3I6dGhlbWUucGFsZXR0ZS5nZXRBY2NlbnQ3MDAoKSxcbiAgICAgICAgICAgIGJvcmRlclJhZGl1czpcIjhweFwiLFxuICAgICAgICAgICAgYmFja2dyb3VuZDp0aGVtZS5wYWxldHRlLmdldEFjY2VudDEwMCgpXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBhdWRpb0F0dGFjaG1lbnRPcHRpb24odGhlbWU6IENvbWV0Q2hhdFRoZW1lKTogQ29tZXRDaGF0TWVzc2FnZUNvbXBvc2VyQWN0aW9uIHtcbiAgICAgICAgcmV0dXJuIG5ldyBDb21ldENoYXRNZXNzYWdlQ29tcG9zZXJBY3Rpb24oe1xuICAgICAgICAgICAgaWQ6IENvbWV0Q2hhdFVJS2l0Q29uc3RhbnRzLk1lc3NhZ2VUeXBlcy5hdWRpbyxcbiAgICAgICAgICAgIHRpdGxlOiBsb2NhbGl6ZShcIkFUVEFDSF9BVURJT1wiKSxcbiAgICAgICAgICAgIGljb25VUkw6IFwiYXNzZXRzL2F1ZGlvLWZpbGUuc3ZnXCIsXG4gICAgICAgICAgICBvbkNsaWNrOm51bGwsXG4gICAgICAgICAgICBpY29uVGludDp0aGVtZS5wYWxldHRlLmdldEFjY2VudDcwMCgpLFxuICAgICAgICAgICAgdGl0bGVGb250OmZvbnRIZWxwZXIodGhlbWUudHlwb2dyYXBoeS5zdWJ0aXRsZTEpLFxuICAgICAgICAgICAgdGl0bGVDb2xvcjp0aGVtZS5wYWxldHRlLmdldEFjY2VudDcwMCgpLFxuICAgICAgICAgICAgYm9yZGVyUmFkaXVzOlwiOHB4XCIsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOnRoZW1lLnBhbGV0dGUuZ2V0QWNjZW50MTAwKClcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGZpbGVBdHRhY2htZW50T3B0aW9uKHRoZW1lOiBDb21ldENoYXRUaGVtZSk6IENvbWV0Q2hhdE1lc3NhZ2VDb21wb3NlckFjdGlvbiB7XG4gICAgICAgIHJldHVybiBuZXcgQ29tZXRDaGF0TWVzc2FnZUNvbXBvc2VyQWN0aW9uKHtcbiAgICAgICAgICAgIGlkOiBDb21ldENoYXRVSUtpdENvbnN0YW50cy5NZXNzYWdlVHlwZXMuZmlsZSxcbiAgICAgICAgICAgIHRpdGxlOiBsb2NhbGl6ZShcIkFUVEFDSF9GSUxFXCIpLFxuICAgICAgICAgICAgaWNvblVSTDogXCJhc3NldHMvYXR0YWNobWVudC1maWxlLnN2Z1wiLFxuICAgICAgICAgICAgb25DbGljazpudWxsLFxuICAgICAgICAgICAgaWNvblRpbnQ6dGhlbWUucGFsZXR0ZS5nZXRBY2NlbnQ3MDAoKSxcbiAgICAgICAgICAgIHRpdGxlRm9udDpmb250SGVscGVyKHRoZW1lLnR5cG9ncmFwaHkuc3VidGl0bGUxKSxcbiAgICAgICAgICAgIHRpdGxlQ29sb3I6dGhlbWUucGFsZXR0ZS5nZXRBY2NlbnQ3MDAoKSxcbiAgICAgICAgICAgIGJvcmRlclJhZGl1czpcIjhweFwiLFxuICAgICAgICAgICAgYmFja2dyb3VuZDp0aGVtZS5wYWxldHRlLmdldEFjY2VudDEwMCgpXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBnZXRBdHRhY2htZW50T3B0aW9ucyh0aGVtZTogQ29tZXRDaGF0VGhlbWUsdXNlcj86Q29tZXRDaGF0LlVzZXIsZ3JvdXA/OkNvbWV0Q2hhdC5Hcm91cCwgaWQ/OiBDb21wb3NlcklkKTogQ29tZXRDaGF0TWVzc2FnZUNvbXBvc2VyQWN0aW9uW10ge1xuICAgICAgICBsZXQgYWN0aW9uczogQXJyYXk8Q29tZXRDaGF0TWVzc2FnZUNvbXBvc2VyQWN0aW9uPiA9IFtcbiAgICAgICAgICAgIHRoaXMuaW1hZ2VBdHRhY2htZW50T3B0aW9uKHRoZW1lKSxcbiAgICAgICAgICAgIHRoaXMudmlkZW9BdHRhY2htZW50T3B0aW9uKHRoZW1lKSxcbiAgICAgICAgICAgIHRoaXMuYXVkaW9BdHRhY2htZW50T3B0aW9uKHRoZW1lKSxcbiAgICAgICAgICAgIHRoaXMuZmlsZUF0dGFjaG1lbnRPcHRpb24odGhlbWUpXG4gICAgICAgIF07XG4gICAgICAgIHJldHVybiBhY3Rpb25zO1xuICAgIH1cbiAgICBnZXRMYXN0Q29udmVyc2F0aW9uTWVzc2FnZShjb252ZXJzYXRpb246IENvbWV0Q2hhdC5Db252ZXJzYXRpb24sIGxvZ2dlZEluVXNlcjogQ29tZXRDaGF0LlVzZXIpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gQ29udmVyc2F0aW9uVXRpbHMuZ2V0TGFzdENvbnZlcnNhdGlvbk1lc3NhZ2UoY29udmVyc2F0aW9uLCBsb2dnZWRJblVzZXIpO1xuICAgIH1cbn1cbmV4cG9ydCB0eXBlIENvbXBvc2VySWQgPSB7cGFyZW50TWVzc2FnZUlkIDogbnVtYmVyIHwgbnVsbCwgdXNlciA6IHN0cmluZyB8IG51bGwsIGdyb3VwIDogc3RyaW5nIHwgbnVsbH07Il19
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tZXRjaGF0LWNoYXQtdWlraXQtYW5ndWxhci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2NoYXQtdWlraXQtYW5ndWxhci9zcmMvY29tZXRjaGF0LWNoYXQtdWlraXQtYW5ndWxhci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19
@@ -0,0 +1,93 @@
1
+ /*
2
+ * Public API Surface of angular-chat-ui-kit
3
+ */
4
+ // shared packages
5
+ export { CometChatUIKitConstants, DatePatterns, TabAlignment, IconButtonAlignment, DocumentIconAlignment, Placement, AuxiliaryButtonAlignment, MessageStatus, MessageBubbleAlignment, MessageListAlignment, Receipts, TitleAlignment, SelectionMode, States, TimestampAlignment, CometChatMessageComposerAction, CometChatTabItem, CometChatLocalize, CometChatTheme, CometChatPalette, CometChatTypography, localize, CometChatDetailsTemplate, CometChatDetailsOption, CometChatOption, CometChatMessageTemplate, CometChatMessageOption } from '@cometchat/uikit-resources';
6
+ import { fontHelper } from '@cometchat/uikit-resources';
7
+ export { fontHelper };
8
+ export { ConversationUtils, DetailsUtils, GroupMemberUtils, MessageReceiptUtils, ConversationsConfiguration, CreateGroupConfiguration, DetailsConfiguration, GroupsConfiguration, JoinGroupConfiguration, MessageComposerConfiguration, MessageHeaderConfiguration, MessageListConfiguration, MessagesConfiguration, UsersConfiguration, ThreadedMessagesConfiguration, MessageBubbleConfiguration, AddMembersConfiguration, BannedMembersConfiguration, GroupMembersConfiguration, TransferOwnershipConfiguration, PollsConstants, SmartRepliesConstants, SmartRepliesConfiguration, StickersConstants, StickersConfiguration, MessageTranslationConstants, MessageTranslationConfiguration, CollaborativeWhiteboardConfiguration, CollaborativeDocumentConstants, CollaborativeDocumentConfiguration, CollaborativeWhiteboardConstants, ReactionsConstants, ImageModerationConfiguration, ImageModerationConstants, ThumbnailGenerationConstants, LinkPreviewConstants, CallingDetailsUtils, CallHistoryConfiguration, OutgoingCallConfiguration, CallButtonsConfiguration, CallscreenConfiguration, CallDetailsConfiguration } from '@cometchat/uikit-shared';
9
+ export { CometChatUIKit } from './Shared/CometChatUIkit/CometChatUIKit';
10
+ export { ChatConfigurator } from './Shared/Framework/ChatConfigurator';
11
+ export { DataSource } from './Shared/Framework/DataSource';
12
+ export { DataSourceDecorator } from './Shared/Framework/DataSourceDecorator';
13
+ export { ExtensionsDataSource } from './Shared/Framework/ExtensionDataSource';
14
+ export { MessageUtils } from './Shared/Utils/MessageUtils';
15
+ export { CometChatThemeService } from './CometChatTheme.service';
16
+ // extensions
17
+ export { CollaborativeDocumentExtension } from './Extensions/CollaborativeDocument/CollaborativeDocumentExtension';
18
+ export { CollaborativeDocumentExtensionDecorator } from './Extensions/CollaborativeDocument/CollaborativeDocumentExtensionDecorator';
19
+ export { CollaborativeWhiteBoardExtension } from './Extensions/CollaborativeWhiteboard/CollaborativeWhiteboardExtension';
20
+ export { CollaborativeWhiteBoardExtensionDecorator } from './Extensions/CollaborativeWhiteboard/CollaborativeWhiteboardExtensionDecorator';
21
+ export { ImageModerationExtension } from './Extensions/ImageModeration/ImageModerationExtension';
22
+ export { ImageModerationExtensionDecorator } from './Extensions/ImageModeration/ImageModerationExtensionDecorator';
23
+ export { LinkPreviewExtension } from './Extensions/LinkPreviewExtension/LinkPreviewExtension';
24
+ export { LinkPreviewExtensionDecorator } from './Extensions/LinkPreviewExtension/LinkPreviewExtensionDecorator';
25
+ export { MessageTranslationExtension } from './Extensions/MessageTranslation/MessageTranslationExtension';
26
+ export { MessageTranslationExtensionDecorator } from './Extensions/MessageTranslation/MessageTranslationExtensionDecorator';
27
+ export { PollsExtension } from './Extensions/PollsExtension/PollsExtension';
28
+ export { PollsExtensionDecorator } from './Extensions/PollsExtension/PollsExtensionDecorator';
29
+ export { ReactionExtension } from './Extensions/Reactions/ReactionExtension';
30
+ export { ReactionExtensionDecorator } from './Extensions/Reactions/ReactionExtensionDecorator';
31
+ export { SmartReplyExtension } from './Extensions/SmartReplies/SmartRepliesExtension';
32
+ export { SmartReplyExtensionDecorator } from './Extensions/SmartReplies/SmartRepliesExtensionDecorator';
33
+ export { StickersExtension } from './Extensions/Stickers/StickersExtension';
34
+ export { StickersExtensionDecorator } from './Extensions/Stickers/StickersExtensionDecorator';
35
+ export { TextModeratorExtension } from './Extensions/TextModerator/TextModeratorExtension';
36
+ export { TextModeratorExtensionDecorator } from './Extensions/TextModerator/TextModeratorExtensionDecorator';
37
+ export { ThumbnailGenerationExtension } from './Extensions/ThumbnailGeneration/ThumbnailGenerationExtension';
38
+ export { ThumbnailGenerationExtensionDecorator } from './Extensions/ThumbnailGeneration/ThumbnailGenerationExtensionDecorator';
39
+ // calls component
40
+ export { CallingExtension } from './Calls/CallingExtension';
41
+ export { CallingExtensionDecorator } from './Calls/CallingExtensionDecorator';
42
+ export { CometChatCallButtons } from './Calls/CometChatCallButtons/cometchat-call-buttons.module';
43
+ export { CometChatCallButtonsComponent } from './Calls/CometChatCallButtons/cometchat-call-buttons/cometchat-call-buttons.component';
44
+ // export {CometChatCallDetails} from './Calls/CometChatCallDetails/cometchat-call-details.module';
45
+ // export {CometChatCallDetailsComponent} from './Calls/CometChatCallDetails/cometchat-call-details/cometchat-call-details.component';
46
+ // export {CometChatCallHistory} from './Calls/CometChatCallHistory/cometchat-call-history.module';
47
+ // export {CometChatCallHistoryComponent} from './Calls/CometChatCallHistory/cometchat-call-history/cometchat-call-history.component';
48
+ // export {CometChatCallHistoryWithDetails} from './Calls/CometChatCallHistoryWithDetails/cometchat-call-history-with-details.module';
49
+ // export {CometChatCallHistoryWithDetailsComponent} from './Calls/CometChatCallHistoryWithDetails/cometchat-call-history-with-details/cometchat-call-history-with-details.component';
50
+ export { CometChatIncomingCall } from './Calls/CometChatIncomingCall/cometchat-incoming-call.module';
51
+ export { CometChatIncomingCallComponent } from './Calls/CometChatIncomingCall/cometchat-incoming-call/cometchat-incoming-call.component';
52
+ export { CometChatOngoingCall } from './Calls/CometChatOngoingCall/cometchat-ongoing-call.module';
53
+ export { CometChatOngoingCallComponent } from './Calls/CometChatOngoingCall/cometchat-ongoing-call/cometchat-ongoing-call.component';
54
+ export { CometChatOutgoingCall } from './Calls/CometChatOutgoingCall/cometchat-outgoing-call.module';
55
+ export { CometChatOutgoingCallComponent } from './Calls/CometChatOutgoingCall/cometchat-outgoing-call/cometchat-outgoing-call.component';
56
+ // chatuikit
57
+ export { CometChatAddMembersComponent } from './CometChatAddMembers/cometchat-add-members/cometchat-add-members.component';
58
+ export { CometChatAddMembers } from './CometChatAddMembers/cometchat-add-members.module';
59
+ export { CometChatBannedMembers } from './CometChatBannedMembers/cometchat-banned-members.module';
60
+ export { CometChatBannedMembersComponent } from './CometChatBannedMembers/cometchat-banned-members/cometchat-banned-members.component';
61
+ export { CometChatConversations } from './CometChatConversations/cometchat-conversations.module';
62
+ export { CometChatConversationsComponent } from './CometChatConversations/cometchat-conversations/cometchat-conversations.component';
63
+ export { CometChatConversationsWithMessages } from './CometChatConversationsWithMessages/cometchat-conversations-with-messages.module';
64
+ export { CometChatConversationsWithMessagesComponent } from './CometChatConversationsWithMessages/cometchat-conversations-with-messages/cometchat-conversations-with-messages.component';
65
+ export { CometChatDetails } from './CometChatDetails/cometchat-details.module';
66
+ export { CometChatDetailsComponent } from './CometChatDetails/cometchat-details/cometchat-details.component';
67
+ export { CometChatGroupMembers } from './CometChatGroupMembers/cometchat-group-members.module';
68
+ export { CometChatGroupMembersComponent } from './CometChatGroupMembers/cometchat-group-members/cometchat-group-members.component';
69
+ export { CometChatGroups } from './CometChatGroups/cometchat-groups.module';
70
+ export { CometChatGroupsComponent } from './CometChatGroups/cometchat-groups/cometchat-groups.component';
71
+ export { CometChatGroupsWithMessages } from './CometChatGroupsWithMessages/cometchat-groups-with-messages.module';
72
+ export { CometChatGroupsWithMessagesComponent } from './CometChatGroupsWithMessages/cometchat-groups-with-messages/cometchat-groups-with-messages.component';
73
+ export { CometChatList } from './CometChatList/cometchat-list.module';
74
+ export { CometchatListComponent } from './CometChatList/cometchat-list.component';
75
+ export { CometChatMessageBubble } from './CometChatMessageBubble/cometchat-message-bubble.module';
76
+ export { CometChatMessageBubbleComponent } from './CometChatMessageBubble/cometchat-message-bubble/cometchat-message-bubble.component';
77
+ export { CometChatMessageComposer } from './CometChatMessageComposer/cometchat-message-composer.module';
78
+ export { CometChatMessageComposerComponent } from './CometChatMessageComposer/cometchat-message-composer/cometchat-message-composer.component';
79
+ export { CometChatMessageHeader } from './CometChatMessageHeader/cometchat-message-header.module';
80
+ export { CometChatMessageHeaderComponent } from './CometChatMessageHeader/cometchat-message-header/cometchat-message-header.component';
81
+ export { CometChatMessageList } from './CometChatMessageList/cometchat-message-list.module';
82
+ export { CometChatMessageListComponent } from './CometChatMessageList/cometchat-message-list/cometchat-message-list.component';
83
+ export { CometChatMessages } from './CometChatMessages/cometchat-messages.module';
84
+ export { CometChatMessagesComponent } from './CometChatMessages/cometchat-messages/cometchat-messages.component';
85
+ export { CometChatThreadedMessages } from './CometChatThreadedMessages/cometchat-threaded-messages.module';
86
+ export { CometChatThreadedMessagesComponent } from './CometChatThreadedMessages/cometchat-threaded-messages/cometchat-threaded-messages.component';
87
+ export { CometChatTransferOwnership } from './CometChatTransferOwnership/cometchat-transfer-ownership.module';
88
+ export { CometChatTransferOwnershipComponent } from './CometChatTransferOwnership/cometchat-transfer-ownership/cometchat-transfer-ownership.component';
89
+ export { CometChatUsersComponent } from './CometChatUsers/cometchat-users/cometchat-users.component';
90
+ export { CometChatUsers } from './CometChatUsers/cometchat-users.module';
91
+ export { CometChatUsersWithMessagesComponent } from './CometChatUsersWithMessages/cometchat-users-with-messages/cometchat-users-with-messages.component';
92
+ export { CometChatUsersWithMessages } from './CometChatUsersWithMessages/cometchat-users-with-messages.module';
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2NoYXQtdWlraXQtYW5ndWxhci9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUlILGtCQUFrQjtBQUNsQixPQUFPLEVBQUMsdUJBQXVCLEVBQUMsWUFBWSxFQUFDLFlBQVksRUFBQyxtQkFBbUIsRUFBQyxxQkFBcUIsRUFBQyxTQUFTLEVBQUMsd0JBQXdCLEVBQUMsYUFBYSxFQUFDLHNCQUFzQixFQUFDLG9CQUFvQixFQUFDLFFBQVEsRUFBQyxjQUFjLEVBQUMsYUFBYSxFQUFDLE1BQU0sRUFBQyxrQkFBa0IsRUFBQyw4QkFBOEIsRUFBQyxnQkFBZ0IsRUFBQyxpQkFBaUIsRUFBQyxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsbUJBQW1CLEVBQUcsUUFBUSxFQUFDLHdCQUF3QixFQUFDLHNCQUFzQixFQUFDLGVBQWUsRUFBQyx3QkFBd0IsRUFBQyxzQkFBc0IsRUFBQyxNQUFNLDRCQUE0QixDQUFBO0FBRXRoQixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDeEQsT0FBTyxFQUFDLFVBQVUsRUFBQyxDQUFBO0FBQ25CLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxZQUFZLEVBQUMsZ0JBQWdCLEVBQUMsbUJBQW1CLEVBQUMsMEJBQTBCLEVBQUMsd0JBQXdCLEVBQUMsb0JBQW9CLEVBQUMsbUJBQW1CLEVBQUMsc0JBQXNCLEVBQUMsNEJBQTRCLEVBQUMsMEJBQTBCLEVBQUMsd0JBQXdCLEVBQUMscUJBQXFCLEVBQUMsa0JBQWtCLEVBQUMsNkJBQTZCLEVBQUMsMEJBQTBCLEVBQUMsdUJBQXVCLEVBQUMsMEJBQTBCLEVBQUMseUJBQXlCLEVBQUMsOEJBQThCLEVBQUMsY0FBYyxFQUFDLHFCQUFxQixFQUFDLHlCQUF5QixFQUFDLGlCQUFpQixFQUFDLHFCQUFxQixFQUFDLDJCQUEyQixFQUFD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QUFPLEVBQUMsbUNBQW1DLEVBQUMsTUFBTSxvR0FBb0csQ0FBQTtBQUN0SixPQUFPLEVBQUMsMEJBQTBCLEVBQUMsTUFBTSxtRUFBbUUsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgYW5ndWxhci1jaGF0LXVpLWtpdFxuICovXG5cblxuXG4vLyBzaGFyZWQgcGFja2FnZXNcbmV4cG9ydCB7Q29tZXRDaGF0VUlLaXRDb25zdGFudHMsRGF0ZVBhdHRlcm5zLFRhYkFsaWdubWVudCxJY29uQnV0dG9uQWxpZ25tZW50LERvY3VtZW50SWNvbkFsaWdubWVudCxQbGFjZW1lbnQsQXV4aWxpYXJ5QnV0dG9uQWxpZ25tZW50LE1lc3NhZ2VTdGF0dXMsTWVzc2FnZUJ1YmJsZUFsaWdubWVudCxNZXNzYWdlTGlzdEFsaWdubWVudCxSZWNlaXB0cyxUaXRsZUFsaWdubWVudCxTZWxlY3Rpb25Nb2RlLFN0YXRlcyxUaW1lc3RhbXBBbGlnbm1lbnQsQ29tZXRDaGF0TWVzc2FnZUNvbXBvc2VyQWN0aW9uLENvbWV0Q2hhdFRhYkl0ZW0sQ29tZXRDaGF0TG9jYWxpemUsQ29tZXRDaGF0VGhlbWUsIENvbWV0Q2hhdFBhbGV0dGUsIENvbWV0Q2hhdFR5cG9ncmFwaHkgLCBsb2NhbGl6ZSxDb21ldENoYXREZXRhaWxzVGVtcGxhdGUsQ29tZXRDaGF0RGV0YWlsc09wdGlvbixDb21ldENoYXRPcHRpb24sQ29tZXRDaGF0TWVzc2FnZVRlbXBsYXRlLENvbWV0Q2hhdE1lc3NhZ2VPcHRpb259IGZyb20gJ0Bjb21ldGNoYXQvdWlraXQtcmVzb3VyY2VzJ1xuXG5pbXBvcnQgeyBmb250SGVscGVyIH0gZnJvbSAnQGNvbWV0Y2hhdC91aWtpdC1yZXNvdXJjZXMnO1xuZXhwb3J0IHtmb250SGVscGVyfVxuZXhwb3J0IHtDb252ZXJzYXRpb25VdGlscyxEZXRhaWxzVXRpbHMsR3JvdXBNZW1iZXJVdGlscyxNZXNzYWdlUmVjZWlwdFV0aWxzLENvbnZlcnNhdGlvbnNDb25maWd1cmF0aW9uLENyZWF0ZUdyb3VwQ29uZmlndXJhdGlvbixEZXRhaWxzQ29uZmlndXJhdGlvbixHcm91cHNDb25maWd1cmF0aW9uLEpvaW5Hcm91cENvbmZpZ3VyYXRpb24sTWVzc2FnZUNvbXBvc2VyQ29uZmlndXJhdGlvbixNZXNzYWdlSGVhZGVyQ29uZmlndXJhdGlvbixNZXNzYWdlTGlzdENvbmZpZ3VyYXRpb24sTWVzc2FnZXNDb25maWd1cmF0aW9uLFVzZXJzQ29uZmlndXJhdGlvbixUaHJlYWRlZE1lc3NhZ2VzQ29uZmlndXJhdGlvbixNZXNzYWdlQnViYmxlQ29uZmlndXJhdGlvbixBZGRNZW1iZXJzQ29uZmlndXJhdGlvbixCYW5uZWRNZW1iZXJzQ29uZmlndXJhdGlvbixHcm91cE1lbWJlcnNDb25maWd1cmF0aW9uLFRyYW5zZmVyT3duZXJzaGlwQ29uZmlndXJhdGlvbixQb2xsc0NvbnN0YW50cyxTbWFydFJlcGxpZXNDb25zdGFudHMsU21hcnRSZXBsaWVzQ29uZmlndXJhdGlvbixTdGlja2Vyc0NvbnN0YW50cyxTdGlja2Vyc0NvbmZpZ3VyYXRpb24sTWVzc2FnZVRyYW5zbGF0aW9uQ29uc3RhbnRzLE1lc3NhZ2VUcmFuc2xhdGlvbkNvbmZpZ3VyYXRpb24sQ29sbGFib3JhdGl2ZVdoaXRlYm9hcmRDb25maWd1cmF0aW9uLENvbGxhYm9yYXRpdmVEb2N1bWVudENvbnN0YW50cyxDb2xsYWJvcmF0aXZlRG9jdW1lbnRDb25maWd1cmF0aW9uLENvbGxhYm9yYXRpdmVXaGl0ZWJvYXJkQ29uc3RhbnRzLFJlYWN0aW9uc0NvbnN0YW50cyxJbWFnZU1vZGVyYXRpb25Db25maWd1cmF0aW9uLEltYWdlTW9kZXJhdGlvbkNvbnN0YW50cyxUaHVtYm5haWxHZW5lcmF0aW9uQ29uc3RhbnRzLExpbmtQcmV2aWV3Q29uc3RhbnRzLENhbGxpbmdEZXRhaWxzVXRpbHMsQ2FsbEhpc3RvcnlDb25maWd1cmF0aW9uLE91dGdvaW5nQ2FsbENvbmZpZ3VyYXRpb24sQ2FsbEJ1dHRvbnNDb25maWd1cmF0aW9uLENhbGxzY3JlZW5Db25maWd1cmF0aW9uLENhbGxEZXRhaWxzQ29uZmlndXJhdGlvbn0gZnJvbSAnQGNvbWV0Y2hhdC91aWtpdC1zaGFyZWQnO1xuXG5leHBvcnQge0NvbWV0Q2hhdFVJS2l0fSBmcm9tICcuL1NoYXJlZC9Db21ldENoYXRVSWtpdC9Db21ldENoYXRVSUtpdCc7XG5leHBvcnQge0NoYXRDb25maWd1cmF0b3J9IGZyb20gJy4vU2hhcmVkL0ZyYW1ld29yay9DaGF0Q29uZmlndXJhdG9yJ1xuZXhwb3J0IHtEYXRhU291cmNlfSBmcm9tICcuL1NoYXJlZC9GcmFtZXdvcmsvRGF0YVNvdXJjZSdcbmV4cG9ydCB7RGF0YVNvdXJjZURlY29yYXRvcn0gZnJvbSAnLi9TaGFyZWQvRnJhbWV3b3JrL0RhdGFTb3VyY2VEZWNvcmF0b3InXG5leHBvcnQge0V4dGVuc2lvbnNEYXRhU291cmNlfSBmcm9tICcuL1NoYXJlZC9GcmFtZXdvcmsvRXh0ZW5zaW9uRGF0YVNvdXJjZSdcbmV4cG9ydCB7TWVzc2FnZVV0aWxzfSBmcm9tICcuL1NoYXJlZC9VdGlscy9NZXNzYWdlVXRpbHMnXG5leHBvcnQge0NvbWV0Q2hhdFRoZW1lU2VydmljZX0gZnJvbSAnLi9Db21ldENoYXRUaGVtZS5zZXJ2aWNlJ1xuXG4vLyBleHRlbnNpb25zXG5leHBvcnQge0NvbGxhYm9yYXRpdmVEb2N1bWVudEV4dGVuc2lvbn0gZnJvbSAnLi9FeHRlbnNpb25zL0NvbGxhYm9yYXRpdmVEb2N1bWVudC9Db2xsYWJvcmF0aXZlRG9jdW1lbnRFeHRlbnNpb24nXG5leHBvcnQge0NvbGxhYm9yYXRpdmVEb2N1bWVudEV4dGVuc2lvbkRlY29yYXRvcn0gZnJvbSAnLi9FeHRlbnNpb25zL0NvbGxhYm9yYXRpdmVEb2N1bWVudC9Db2xsYWJvcmF0aXZlRG9jdW1lbnRFeHRlbnNpb25EZWNvcmF0b3InXG5leHBvcnQge0NvbGxhYm9yYXRpdmVXaGl0ZUJvYXJkRXh0ZW5zaW9ufSBmcm9tICcuL0V4dGVuc2lvbnMvQ29sbGFib3JhdGl2ZVdoaXRlYm9hcmQvQ29sbGFib3JhdGl2ZVdoaXRlYm9hcmRFeHRlbnNpb24nXG5leHBvcnQge0NvbGxhYm9yYXRpdmVXaGl0ZUJvYXJkRXh0ZW5zaW9uRGVjb3JhdG9yfSBmcm9tICcuL0V4dGVuc2lvbnMvQ29sbGFib3JhdGl2ZVdoaXRlYm9hcmQvQ29sbGFib3JhdGl2ZVdoaXRlYm9hcmRFeHRlbnNpb25EZWNvcmF0b3InXG5leHBvcnQge0ltYWdlTW9kZXJhdGlvbkV4dGVuc2lvbn0gZnJvbSAnLi9FeHRlbnNpb25zL0ltYWdlTW9kZXJhdGlvbi9JbWFnZU1vZGVyYXRpb25FeHRlbnNpb24nXG5leHBvcnQge0ltYWdlTW9kZXJhdGlvbkV4dGVuc2lvbkRlY29yYXRvcn0gZnJvbSAnLi9FeHRlbnNpb25zL0ltYWdlTW9kZXJhdGlvbi9JbWFnZU1vZGVyYXRpb25FeHRlbnNpb25EZWNvcmF0b3InXG5leHBvcnQge0xpbmtQcmV2aWV3RXh0ZW5zaW9ufSBmcm9tICcuL0V4dGVuc2lvbnMvTGlua1ByZXZpZXdFeHRlbnNpb24vTGlua1ByZXZpZXdFeHRlbnNpb24nXG5leHBvcnQge0xpbmtQcmV2aWV3RXh0ZW5zaW9uRGVjb3JhdG9yfSBmcm9tICcuL0V4dGVuc2lvbnMvTGlua1ByZXZpZXdFeHRlbnNpb24vTGlua1ByZXZpZXdFeHRlbnNpb25EZWNvcmF0b3InXG5leHBvcnQge01lc3NhZ2VUcmFuc2xhdGlvbkV4dGVuc2lvbn0gZnJvbSAnLi9FeHRlbnNpb25zL01lc3NhZ2VUcmFuc2xhdGlvbi9NZXNzYWdlVHJhbnNsYXRpb25FeHRlbnNpb24nXG5leHBvcnQge01lc3NhZ2VUcmFuc2xhdGlvbkV4dGVuc2lvbkRlY29yYXRvcn0gZnJvbSAnLi9FeHRlbnNpb25zL01lc3NhZ2VUcmFuc2xhdGlvbi9NZXNzYWdlVHJhbnNsYXRpb25FeHRlbnNpb25EZWNvcmF0b3InXG5leHBvcnQge1BvbGxzRXh0ZW5zaW9ufSBmcm9tICcuL0V4dGVuc2lvbnMvUG9sbHNFeHRlbnNpb24vUG9sbHNFeHRlbnNpb24nXG5leHBvcnQge1BvbGxzRXh0ZW5zaW9uRGVjb3JhdG9yfSBmcm9tICcuL0V4dGVuc2lvbnMvUG9sbHNFeHRlbnNpb24vUG9sbHNFeHRlbnNpb25EZWNvcmF0b3InXG5leHBvcnQge1JlYWN0aW9uRXh0ZW5zaW9ufSBmcm9tICcuL0V4dGVuc2lvbnMvUmVhY3Rpb25zL1JlYWN0aW9uRXh0ZW5zaW9uJ1xuZXhwb3J0IHtSZWFjdGlvbkV4dGVuc2lvbkRlY29yYXRvcn0gZnJvbSAnLi9FeHRlbnNpb25zL1JlYWN0aW9ucy9SZWFjdGlvbkV4dGVuc2lvbkRlY29yYXRvcidcbmV4cG9ydCB7U21hcnRSZXBseUV4dGVuc2lvbn0gZnJvbSAnLi9FeHRlbnNpb25zL1NtYXJ0UmVwbGllcy9TbWFydFJlcGxpZXNFeHRlbnNpb24nXG5leHBvcnQge1NtYXJ0UmVwbHlFeHRlbnNpb25EZWNvcmF0b3J9IGZyb20gJy4vRXh0ZW5zaW9ucy9TbWFydFJlcGxpZXMvU21hcnRSZXBsaWVzRXh0ZW5zaW9uRGVjb3JhdG9yJ1xuZXhwb3J0IHtTdGlja2Vyc0V4dGVuc2lvbn0gZnJvbSAnLi9FeHRlbnNpb25zL1N0aWNrZXJzL1N0aWNrZXJzRXh0ZW5zaW9uJ1xuZXhwb3J0IHtTdGlja2Vyc0V4dGVuc2lvbkRlY29yYXRvcn0gZnJvbSAnLi9FeHRlbnNpb25zL1N0aWNrZXJzL1N0aWNrZXJzRXh0ZW5zaW9uRGVjb3JhdG9yJ1xuZXhwb3J0IHtUZXh0TW9kZXJhdG9yRXh0ZW5zaW9ufSBmcm9tICcuL0V4dGVuc2lvbnMvVGV4dE1vZGVyYXRvci9UZXh0TW9kZXJhdG9yRXh0ZW5zaW9uJ1xuZXhwb3J0IHtUZXh0TW9kZXJhdG9yRXh0ZW5zaW9uRGVjb3JhdG9yfSBmcm9tICcuL0V4dGVuc2lvbnMvVGV4dE1vZGVyYXRvci9UZXh0TW9kZXJhdG9yRXh0ZW5zaW9uRGVjb3JhdG9yJ1xuZXhwb3J0IHtUaHVtYm5haWxHZW5lcmF0aW9uRXh0ZW5zaW9ufSBmcm9tICcuL0V4dGVuc2lvbnMvVGh1bWJuYWlsR2VuZXJhdGlvbi9UaHVtYm5haWxHZW5lcmF0aW9uRXh0ZW5zaW9uJ1xuZXhwb3J0IHtUaHVtYm5haWxHZW5lcmF0aW9uRXh0ZW5zaW9uRGVjb3JhdG9yfSBmcm9tICcuL0V4dGVuc2lvbnMvVGh1bWJuYWlsR2VuZXJhdGlvbi9UaHVtYm5haWxHZW5lcmF0aW9uRXh0ZW5zaW9uRGVjb3JhdG9yJ1xuXG4vLyBjYWxscyBjb21wb25lbnRcbmV4cG9ydCB7Q2FsbGluZ0V4dGVuc2lvbn0gZnJvbSAnLi9DYWxscy9DYWxsaW5nRXh0ZW5zaW9uJztcbmV4cG9ydCB7Q2FsbGluZ0V4dGVuc2lvbkRlY29yYXRvcn0gZnJvbSAnLi9DYWxscy9DYWxsaW5nRXh0ZW5zaW9uRGVjb3JhdG9yJztcbmV4cG9ydCB7Q29tZXRDaGF0Q2FsbEJ1dHRvbnN9IGZyb20gJy4vQ2FsbHMvQ29tZXRDaGF0Q2FsbEJ1dHRvbnMvY29tZXRjaGF0LWNhbGwtYnV0dG9ucy5tb2R1bGUnO1xuZXhwb3J0IHtDb21ldENoYXRDYWxsQnV0dG9uc0NvbXBvbmVudH0gZnJvbSAnLi9DYWxscy9Db21ldENoYXRDYWxsQnV0dG9ucy9jb21ldGNoYXQtY2FsbC1idXR0b25zL2NvbWV0Y2hhdC1jYWxsLWJ1dHRvbnMuY29tcG9uZW50Jztcbi8vIGV4cG9ydCB7Q29tZXRDaGF0Q2FsbERldGFpbHN9IGZyb20gJy4vQ2FsbHMvQ29tZXRDaGF0Q2FsbERldGFpbHMvY29tZXRjaGF0LWNhbGwtZGV0YWlscy5tb2R1bGUnO1xuLy8gZXhwb3J0IHtDb21ldENoYXRDYWxsRGV0YWlsc0NvbXBvbmVudH0gZnJvbSAnLi9DYWxscy9Db21ldENoYXRDYWxsRGV0YWlscy9jb21ldGNoYXQtY2FsbC1kZXRhaWxzL2NvbWV0Y2hhdC1jYWxsLWRldGFpbHMuY29tcG9uZW50Jztcbi8vIGV4cG9ydCB7Q29tZXRDaGF0Q2FsbEhpc3Rvcnl9IGZyb20gJy4vQ2FsbHMvQ29tZXRDaGF0Q2FsbEhpc3RvcnkvY29tZXRjaGF0LWNhbGwtaGlzdG9yeS5tb2R1bGUnO1xuLy8gZXhwb3J0IHtDb21ldENoYXRDYWxsSGlzdG9yeUNvbXBvbmVudH0gZnJvbSAnLi9DYWxscy9Db21ldENoYXRDYWxsSGlzdG9yeS9jb21ldGNoYXQtY2FsbC1oaXN0b3J5L2NvbWV0Y2hhdC1jYWxsLWhpc3RvcnkuY29tcG9uZW50Jztcbi8vIGV4cG9ydCB7Q29tZXRDaGF0Q2FsbEhpc3RvcnlXaXRoRGV0YWlsc30gZnJvbSAnLi9DYWxscy9Db21ldENoYXRDYWxsSGlzdG9yeVdpdGhEZXRhaWxzL2NvbWV0Y2hhdC1jYWxsLWhpc3Rvcnktd2l0aC1kZXRhaWxzLm1vZHVsZSc7XG4vLyBleHBvcnQge0NvbWV0Q2hhdENhbGxIaXN0b3J5V2l0aERldGFpbHNDb21wb25lbnR9IGZyb20gJy4vQ2FsbHMvQ29tZXRDaGF0Q2FsbEhpc3RvcnlXaXRoRGV0YWlscy9jb21ldGNoYXQtY2FsbC1oaXN0b3J5LXdpdGgtZGV0YWlscy9jb21ldGNoYXQtY2FsbC1oaXN0b3J5LXdpdGgtZGV0YWlscy5jb21wb25lbnQnO1xuZXhwb3J0IHtDb21ldENoYXRJbmNvbWluZ0NhbGx9IGZyb20gJy4vQ2FsbHMvQ29tZXRDaGF0SW5jb21pbmdDYWxsL2NvbWV0Y2hhdC1pbmNvbWluZy1jYWxsLm1vZHVsZSc7XG5leHBvcnQge0NvbWV0Q2hhdEluY29taW5nQ2FsbENvbXBvbmVudH0gZnJvbSAnLi9DYWxscy9Db21ldENoYXRJbmNvbWluZ0NhbGwvY29tZXRjaGF0LWluY29taW5nLWNhbGwvY29tZXRjaGF0LWluY29taW5nLWNhbGwuY29tcG9uZW50JztcbmV4cG9ydCB7Q29tZXRDaGF0T25nb2luZ0NhbGx9IGZyb20gJy4vQ2FsbHMvQ29tZXRDaGF0T25nb2luZ0NhbGwvY29tZXRjaGF0LW9uZ29pbmctY2FsbC5tb2R1bGUnO1xuZXhwb3J0IHtDb21ldENoYXRPbmdvaW5nQ2FsbENvbXBvbmVudH0gZnJvbSAnLi9DYWxscy9Db21ldENoYXRPbmdvaW5nQ2FsbC9jb21ldGNoYXQtb25nb2luZy1jYWxsL2NvbWV0Y2hhdC1vbmdvaW5nLWNhbGwuY29tcG9uZW50JztcbmV4cG9ydCB7Q29tZXRDaGF0T3V0Z29pbmdDYWxsfSBmcm9tICcuL0NhbGxzL0NvbWV0Q2hhdE91dGdvaW5nQ2FsbC9jb21ldGNoYXQtb3V0Z29pbmctY2FsbC5tb2R1bGUnO1xuZXhwb3J0IHtDb21ldENoYXRPdXRnb2luZ0NhbGxDb21wb25lbnR9IGZyb20gJy4vQ2FsbHMvQ29tZXRDaGF0T3V0Z29pbmdDYWxsL2NvbWV0Y2hhdC1vdXRnb2luZy1jYWxsL2NvbWV0Y2hhdC1vdXRnb2luZy1jYWxsLmNvbXBvbmVudCc7XG5cblxuLy8gY2hhdHVpa2l0XG5leHBvcnQge0NvbWV0Q2hhdEFkZE1lbWJlcnNDb21wb25lbnR9IGZyb20gJy4vQ29tZXRDaGF0QWRkTWVtYmVycy9jb21ldGNoYXQtYWRkLW1lbWJlcnMvY29tZXRjaGF0LWFkZC1tZW1iZXJzLmNvbXBvbmVudCdcbmV4cG9ydCB7Q29tZXRDaGF0QWRkTWVtYmVyc30gZnJvbSAnLi9Db21ldENoYXRBZGRNZW1iZXJzL2NvbWV0Y2hhdC1hZGQtbWVtYmVycy5tb2R1bGUnXG5leHBvcnQge0NvbWV0Q2hhdEJhbm5lZE1lbWJlcnN9IGZyb20gJy4vQ29tZXRDaGF0QmFubmVkTWVtYmVycy9jb21ldGNoYXQtYmFubmVkLW1lbWJlcnMubW9kdWxlJ1xuZXhwb3J0IHtDb21ldENoYXRCYW5uZWRNZW1iZXJzQ29tcG9uZW50fSBmcm9tICcuL0NvbWV0Q2hhdEJhbm5lZE1lbWJlcnMvY29tZXRjaGF0LWJhbm5lZC1tZW1iZXJzL2NvbWV0Y2hhdC1iYW5uZWQtbWVtYmVycy5jb21wb25lbnQnXG5leHBvcnQge0NvbWV0Q2hhdENvbnZlcnNhdGlvbnN9IGZyb20gJy4vQ29tZXRDaGF0Q29udmVyc2F0aW9ucy9jb21ldGNoYXQtY29udmVyc2F0aW9ucy5tb2R1bGUnXG5leHBvcnQge0NvbWV0Q2hhdENvbnZlcnNhdGlvbnNDb21wb25lbnR9IGZyb20gJy4vQ29tZXRDaGF0Q29udmVyc2F0aW9ucy9jb21ldGNoYXQtY29udmVyc2F0aW9ucy9jb21ldGNoYXQtY29udmVyc2F0aW9ucy5jb21wb25lbnQnXG5leHBvcnQge0NvbWV0Q2hhdENvbnZlcnNhdGlvbnNXaXRoTWVzc2FnZXN9IGZyb20gJy4vQ29tZXRDaGF0Q29udmVyc2F0aW9uc1dpdGhNZXNzYWdlcy9jb21ldGNoYXQtY29udmVyc2F0aW9ucy13aXRoLW1lc3NhZ2VzLm1vZHVsZSdcbmV4cG9ydCB7Q29tZXRDaGF0Q29udmVyc2F0aW9uc1dpdGhNZXNzYWdlc0NvbXBvbmVudH0gZnJvbSAnLi9Db21ldENoYXRDb252ZXJzYXRpb25zV2l0aE1lc3NhZ2VzL2NvbWV0Y2hhdC1jb252ZXJzYXRpb25zLXdpdGgtbWVzc2FnZXMvY29tZXRjaGF0LWNvbnZlcnNhdGlvbnMtd2l0aC1tZXNzYWdlcy5jb21wb25lbnQnXG5leHBvcnQge0NvbWV0Q2hhdERldGFpbHN9IGZyb20gJy4vQ29tZXRDaGF0RGV0YWlscy9jb21ldGNoYXQtZGV0YWlscy5tb2R1bGUnXG5leHBvcnQge0NvbWV0Q2hhdERldGFpbHNDb21wb25lbnR9IGZyb20gJy4vQ29tZXRDaGF0RGV0YWlscy9jb21ldGNoYXQtZGV0YWlscy9jb21ldGNoYXQtZGV0YWlscy5jb21wb25lbnQnXG5leHBvcnQge0NvbWV0Q2hhdEdyb3VwTWVtYmVyc30gZnJvbSAnLi9Db21ldENoYXRHcm91cE1lbWJlcnMvY29tZXRjaGF0LWdyb3VwLW1lbWJlcnMubW9kdWxlJ1xuZXhwb3J0IHtDb21ldENoYXRHcm91cE1lbWJlcnNDb21wb25lbnR9IGZyb20gJy4vQ29tZXRDaGF0R3JvdXBNZW1iZXJzL2NvbWV0Y2hhdC1ncm91cC1tZW1iZXJzL2NvbWV0Y2hhdC1ncm91cC1tZW1iZXJzLmNvbXBvbmVudCdcbmV4cG9ydCB7Q29tZXRDaGF0R3JvdXBzfSBmcm9tICcuL0NvbWV0Q2hhdEdyb3Vwcy9jb21ldGNoYXQtZ3JvdXBzLm1vZHVsZSdcbmV4cG9ydCB7Q29tZXRDaGF0R3JvdXBzQ29tcG9uZW50fSBmcm9tICcuL0NvbWV0Q2hhdEdyb3Vwcy9jb21ldGNoYXQtZ3JvdXBzL2NvbWV0Y2hhdC1ncm91cHMuY29tcG9uZW50J1xuZXhwb3J0IHtDb21ldENoYXRHcm91cHNXaXRoTWVzc2FnZXN9IGZyb20gJy4vQ29tZXRDaGF0R3JvdXBzV2l0aE1lc3NhZ2VzL2NvbWV0Y2hhdC1ncm91cHMtd2l0aC1tZXNzYWdlcy5tb2R1bGUnXG5leHBvcnQge0NvbWV0Q2hhdEdyb3Vwc1dpdGhNZXNzYWdlc0NvbXBvbmVudH0gZnJvbSAnLi9Db21ldENoYXRHcm91cHNXaXRoTWVzc2FnZXMvY29tZXRjaGF0LWdyb3Vwcy13aXRoLW1lc3NhZ2VzL2NvbWV0Y2hhdC1ncm91cHMtd2l0aC1tZXNzYWdlcy5jb21wb25lbnQnXG5leHBvcnQge0NvbWV0Q2hhdExpc3R9IGZyb20gJy4vQ29tZXRDaGF0TGlzdC9jb21ldGNoYXQtbGlzdC5tb2R1bGUnXG5leHBvcnQge0NvbWV0Y2hhdExpc3RDb21wb25lbnR9IGZyb20gJy4vQ29tZXRDaGF0TGlzdC9jb21ldGNoYXQtbGlzdC5jb21wb25lbnQnXG5leHBvcnQge0NvbWV0Q2hhdE1lc3NhZ2VCdWJibGV9IGZyb20gJy4vQ29tZXRDaGF0TWVzc2FnZUJ1YmJsZS9jb21ldGNoYXQtbWVzc2FnZS1idWJibGUubW9kdWxlJ1xuZXhwb3J0IHtDb21ldENoYXRNZXNzYWdlQnViYmxlQ29tcG9uZW50fSBmcm9tICcuL0NvbWV0Q2hhdE1lc3NhZ2VCdWJibGUvY29tZXRjaGF0LW1lc3NhZ2UtYnViYmxlL2NvbWV0Y2hhdC1tZXNzYWdlLWJ1YmJsZS5jb21wb25lbnQnXG5leHBvcnQge0NvbWV0Q2hhdE1lc3NhZ2VDb21wb3Nlcn0gZnJvbSAnLi9Db21ldENoYXRNZXNzYWdlQ29tcG9zZXIvY29tZXRjaGF0LW1lc3NhZ2UtY29tcG9zZXIubW9kdWxlJ1xuZXhwb3J0IHtDb21ldENoYXRNZXNzYWdlQ29tcG9zZXJDb21wb25lbnR9IGZyb20gJy4vQ29tZXRDaGF0TWVzc2FnZUNvbXBvc2VyL2NvbWV0Y2hhdC1tZXNzYWdlLWNvbXBvc2VyL2NvbWV0Y2hhdC1tZXNzYWdlLWNvbXBvc2VyLmNvbXBvbmVudCdcbmV4cG9ydCB7Q29tZXRDaGF0TWVzc2FnZUhlYWRlcn0gZnJvbSAnLi9Db21ldENoYXRNZXNzYWdlSGVhZGVyL2NvbWV0Y2hhdC1tZXNzYWdlLWhlYWRlci5tb2R1bGUnXG5leHBvcnQge0NvbWV0Q2hhdE1lc3NhZ2VIZWFkZXJDb21wb25lbnR9IGZyb20gJy4vQ29tZXRDaGF0TWVzc2FnZUhlYWRlci9jb21ldGNoYXQtbWVzc2FnZS1oZWFkZXIvY29tZXRjaGF0LW1lc3NhZ2UtaGVhZGVyLmNvbXBvbmVudCdcbmV4cG9ydCB7Q29tZXRDaGF0TWVzc2FnZUxpc3R9IGZyb20gJy4vQ29tZXRDaGF0TWVzc2FnZUxpc3QvY29tZXRjaGF0LW1lc3NhZ2UtbGlzdC5tb2R1bGUnXG5leHBvcnQge0NvbWV0Q2hhdE1lc3NhZ2VMaXN0Q29tcG9uZW50fSBmcm9tICcuL0NvbWV0Q2hhdE1lc3NhZ2VMaXN0L2NvbWV0Y2hhdC1tZXNzYWdlLWxpc3QvY29tZXRjaGF0LW1lc3NhZ2UtbGlzdC5jb21wb25lbnQnXG5leHBvcnQge0NvbWV0Q2hhdE1lc3NhZ2VzfSBmcm9tICcuL0NvbWV0Q2hhdE1lc3NhZ2VzL2NvbWV0Y2hhdC1tZXNzYWdlcy5tb2R1bGUnXG5leHBvcnQge0NvbWV0Q2hhdE1lc3NhZ2VzQ29tcG9uZW50fSBmcm9tICcuL0NvbWV0Q2hhdE1lc3NhZ2VzL2NvbWV0Y2hhdC1tZXNzYWdlcy9jb21ldGNoYXQtbWVzc2FnZXMuY29tcG9uZW50J1xuZXhwb3J0IHtDb21ldENoYXRUaHJlYWRlZE1lc3NhZ2VzfSBmcm9tICcuL0NvbWV0Q2hhdFRocmVhZGVkTWVzc2FnZXMvY29tZXRjaGF0LXRocmVhZGVkLW1lc3NhZ2VzLm1vZHVsZSdcbmV4cG9ydCB7Q29tZXRDaGF0VGhyZWFkZWRNZXNzYWdlc0NvbXBvbmVudH0gZnJvbSAnLi9Db21ldENoYXRUaHJlYWRlZE1lc3NhZ2VzL2NvbWV0Y2hhdC10aHJlYWRlZC1tZXNzYWdlcy9jb21ldGNoYXQtdGhyZWFkZWQtbWVzc2FnZXMuY29tcG9uZW50J1xuZXhwb3J0IHtDb21ldENoYXRUcmFuc2Zlck93bmVyc2hpcH0gZnJvbSAnLi9Db21ldENoYXRUcmFuc2Zlck93bmVyc2hpcC9jb21ldGNoYXQtdHJhbnNmZXItb3duZXJzaGlwLm1vZHVsZSdcbmV4cG9ydCB7Q29tZXRDaGF0VHJhbnNmZXJPd25lcnNoaXBDb21wb25lbnR9IGZyb20gJy4vQ29tZXRDaGF0VHJhbnNmZXJPd25lcnNoaXAvY29tZXRjaGF0LXRyYW5zZmVyLW93bmVyc2hpcC9jb21ldGNoYXQtdHJhbnNmZXItb3duZXJzaGlwLmNvbXBvbmVudCdcbmV4cG9ydCB7Q29tZXRDaGF0VXNlcnNDb21wb25lbnR9IGZyb20gJy4vQ29tZXRDaGF0VXNlcnMvY29tZXRjaGF0LXVzZXJzL2NvbWV0Y2hhdC11c2Vycy5jb21wb25lbnQnXG5leHBvcnQge0NvbWV0Q2hhdFVzZXJzfSBmcm9tICcuL0NvbWV0Q2hhdFVzZXJzL2NvbWV0Y2hhdC11c2Vycy5tb2R1bGUnXG5leHBvcnQge0NvbWV0Q2hhdFVzZXJzV2l0aE1lc3NhZ2VzQ29tcG9uZW50fSBmcm9tICcuL0NvbWV0Q2hhdFVzZXJzV2l0aE1lc3NhZ2VzL2NvbWV0Y2hhdC11c2Vycy13aXRoLW1lc3NhZ2VzL2NvbWV0Y2hhdC11c2Vycy13aXRoLW1lc3NhZ2VzLmNvbXBvbmVudCdcbmV4cG9ydCB7Q29tZXRDaGF0VXNlcnNXaXRoTWVzc2FnZXN9IGZyb20gJy4vQ29tZXRDaGF0VXNlcnNXaXRoTWVzc2FnZXMvY29tZXRjaGF0LXVzZXJzLXdpdGgtbWVzc2FnZXMubW9kdWxlJ1xuIl19